Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / zeparser / benchmark.html
1 <!doctype html>\r
2 <html>\r
3         <head>\r
4                 <title>ZeParser benchmark</title>\r
5                 <style>\r
6                 </style>\r
7         </head>\r
8         <body>\r
9                 <h1>ZeParser benchmark</h1>\r
10                 <p>ES5 parser by Peter van der Zee, (c) qfox.nl</p>\r
11                 <p>This page demonstrates parsing various scripts. It does this 10x per script, this gives the browser enough time to warm up optimization engines. The avg drops the min and max result. Tokens can be white (-space..) or black. Units: kb = 1024 chars, k-tok = 1000 tokens, k-b-tok = 1000 black tokens.</p>\r
12 \r
13                 <pre id="dbg"></pre>\r
14         \r
15 <script id="legacy" type="x"> //  this is a combination of the minified versions of Ext.js (710k), mootools (90k), jquery (90k), prototype (160k, normal) and dojo (90k)\r
16 /*\r
17  * Ext JS Library 3.3.1\r
18  * Copyright(c) 2006-2010 Sencha Inc.\r
19  * licensing@sencha.com\r
20  * http://www.sencha.com/license\r
21  */\r
22 (function(){var h=Ext.util,k=Ext.each,g=true,i=false;h.Observable=function(){var l=this,m=l.events;if(l.listeners){l.on(l.listeners);delete l.listeners}l.events=m||{}};h.Observable.prototype={filterOptRe:/^(?:scope|delay|buffer|single)$/,fireEvent:function(){var l=Array.prototype.slice.call(arguments,0),n=l[0].toLowerCase(),o=this,m=g,r=o.events[n],t,p,s;if(o.eventsSuspended===g){if(p=o.eventQueue){p.push(l)}}else{if(typeof r=="object"){if(r.bubble){if(r.fire.apply(r,l.slice(1))===i){return i}s=o.getBubbleTarget&&o.getBubbleTarget();if(s&&s.enableBubble){t=s.events[n];if(!t||typeof t!="object"||!t.bubble){s.enableBubble(n)}return s.fireEvent.apply(s,l)}}else{l.shift();m=r.fire.apply(r,l)}}}return m},addListener:function(l,n,m,s){var p=this,r,t,q;if(typeof l=="object"){s=l;for(r in s){t=s[r];if(!p.filterOptRe.test(r)){p.addListener(r,t.fn||t,t.scope||s.scope,t.fn?t:s)}}}else{l=l.toLowerCase();q=p.events[l]||g;if(typeof q=="boolean"){p.events[l]=q=new h.Event(p,l)}q.addListener(n,m,typeof s=="object"?s:{})}},removeListener:function(l,n,m){var o=this.events[l.toLowerCase()];if(typeof o=="object"){o.removeListener(n,m)}},purgeListeners:function(){var n=this.events,l,m;for(m in n){l=n[m];if(typeof l=="object"){l.clearListeners()}}},addEvents:function(p){var n=this;n.events=n.events||{};if(typeof p=="string"){var l=arguments,m=l.length;while(m--){n.events[l[m]]=n.events[l[m]]||g}}else{Ext.applyIf(n.events,p)}},hasListener:function(l){var m=this.events[l.toLowerCase()];return typeof m=="object"&&m.listeners.length>0},suspendEvents:function(l){this.eventsSuspended=g;if(l&&!this.eventQueue){this.eventQueue=[]}},resumeEvents:function(){var l=this,m=l.eventQueue||[];l.eventsSuspended=i;delete l.eventQueue;k(m,function(n){l.fireEvent.apply(l,n)})}};var d=h.Observable.prototype;d.on=d.addListener;d.un=d.removeListener;h.Observable.releaseCapture=function(l){l.fireEvent=d.fireEvent};function e(m,n,l){return function(){if(n.target==arguments[0]){m.apply(l,Array.prototype.slice.call(arguments,0))}}}function b(p,q,m,n){m.task=new h.DelayedTask();return function(){m.task.delay(q.buffer,p,n,Array.prototype.slice.call(arguments,0))}}function c(n,o,m,l){return function(){o.removeListener(m,l);return n.apply(l,arguments)}}function a(p,q,m,n){return function(){var l=new h.DelayedTask(),o=Array.prototype.slice.call(arguments,0);if(!m.tasks){m.tasks=[]}m.tasks.push(l);l.delay(q.delay||10,function(){m.tasks.remove(l);p.apply(n,o)},n)}}h.Event=function(m,l){this.name=l;this.obj=m;this.listeners=[]};h.Event.prototype={addListener:function(p,o,n){var q=this,m;o=o||q.obj;if(!q.isListening(p,o)){m=q.createListener(p,o,n);if(q.firing){q.listeners=q.listeners.slice(0)}q.listeners.push(m)}},createListener:function(q,p,r){r=r||{};p=p||this.obj;var m={fn:q,scope:p,options:r},n=q;if(r.target){n=e(n,r,p)}if(r.delay){n=a(n,r,m,p)}if(r.single){n=c(n,this,q,p)}if(r.buffer){n=b(n,r,m,p)}m.fireFn=n;return m},findListener:function(p,o){var q=this.listeners,n=q.length,m;o=o||this.obj;while(n--){m=q[n];if(m){if(m.fn==p&&m.scope==o){return n}}}return -1},isListening:function(m,l){return this.findListener(m,l)!=-1},removeListener:function(r,q){var p,m,n,s=this,o=i;if((p=s.findListener(r,q))!=-1){if(s.firing){s.listeners=s.listeners.slice(0)}m=s.listeners[p];if(m.task){m.task.cancel();delete m.task}n=m.tasks&&m.tasks.length;if(n){while(n--){m.tasks[n].cancel()}delete m.tasks}s.listeners.splice(p,1);o=g}return o},clearListeners:function(){var o=this,m=o.listeners,n=m.length;while(n--){o.removeListener(m[n].fn,m[n].scope)}},fire:function(){var r=this,q=r.listeners,m=q.length,p=0,n;if(m>0){r.firing=g;var o=Array.prototype.slice.call(arguments,0);for(;p<m;p++){n=q[p];if(n&&n.fireFn.apply(n.scope||r.obj||window,o)===i){return(r.firing=i)}}}r.firing=i;return g}}})();Ext.DomHelper=function(){var x=null,l=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,n=/^table|tbody|tr|td$/i,d=/tag|children|cn|html$/i,t=/td|tr|tbody/i,p=/([a-z0-9-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,v=/end/i,s,o="afterbegin",q="afterend",c="beforebegin",r="beforeend",a="<table>",i="</table>",b=a+"<tbody>",k="</tbody>"+i,m=b+"<tr>",w="</tr>"+k;function h(B,D,C,E,A,y){var z=s.insertHtml(E,Ext.getDom(B),u(D));return C?Ext.get(z,true):z}function u(D){var z="",y,C,B,E;if(typeof D=="string"){z=D}else{if(Ext.isArray(D)){for(var A=0;A<D.length;A++){if(D[A]){z+=u(D[A])}}}else{z+="<"+(D.tag=D.tag||"div");for(y in D){C=D[y];if(!d.test(y)){if(typeof C=="object"){z+=" "+y+'="';for(B in C){z+=B+":"+C[B]+";"}z+='"'}else{z+=" "+({cls:"class",htmlFor:"for"}[y]||y)+'="'+C+'"'}}}if(l.test(D.tag)){z+="/>"}else{z+=">";if((E=D.children||D.cn)){z+=u(E)}else{if(D.html){z+=D.html}}z+="</"+D.tag+">"}}}return z}function g(F,C,B,D){x.innerHTML=[C,B,D].join("");var y=-1,A=x,z;while(++y<F){A=A.firstChild}if(z=A.nextSibling){var E=document.createDocumentFragment();while(A){z=A.nextSibling;E.appendChild(A);A=z}A=E}return A}function e(y,z,B,A){var C,D;x=x||document.createElement("div");if(y=="td"&&(z==o||z==r)||!t.test(y)&&(z==c||z==q)){return}D=z==c?B:z==q?B.nextSibling:z==o?B.firstChild:null;if(z==c||z==q){B=B.parentNode}if(y=="td"||(y=="tr"&&(z==r||z==o))){C=g(4,m,A,w)}else{if((y=="tbody"&&(z==r||z==o))||(y=="tr"&&(z==c||z==q))){C=g(3,b,A,k)}else{C=g(2,a,A,i)}}B.insertBefore(C,D);return C}s={markup:function(y){return u(y)},applyStyles:function(y,z){if(z){var A;y=Ext.fly(y);if(typeof z=="function"){z=z.call()}if(typeof z=="string"){p.lastIndex=0;while((A=p.exec(z))){y.setStyle(A[1],A[2])}}else{if(typeof z=="object"){y.setStyle(z)}}}},insertHtml:function(D,y,E){var C={},A,G,F,H,B,z;D=D.toLowerCase();C[c]=["BeforeBegin","previousSibling"];C[q]=["AfterEnd","nextSibling"];if(y.insertAdjacentHTML){if(n.test(y.tagName)&&(z=e(y.tagName.toLowerCase(),D,y,E))){return z}C[o]=["AfterBegin","firstChild"];C[r]=["BeforeEnd","lastChild"];if((A=C[D])){y.insertAdjacentHTML(A[0],E);return y[A[1]]}}else{F=y.ownerDocument.createRange();G="setStart"+(v.test(D)?"After":"Before");if(C[D]){F[G](y);H=F.createContextualFragment(E);y.parentNode.insertBefore(H,D==c?y:y.nextSibling);return y[(D==c?"previous":"next")+"Sibling"]}else{B=(D==o?"first":"last")+"Child";if(y.firstChild){F[G](y[B]);H=F.createContextualFragment(E);if(D==o){y.insertBefore(H,y.firstChild)}else{y.appendChild(H)}}else{y.innerHTML=E}return y[B]}}throw'Illegal insertion point -> "'+D+'"'},insertBefore:function(y,A,z){return h(y,A,z,c)},insertAfter:function(y,A,z){return h(y,A,z,q,"nextSibling")},insertFirst:function(y,A,z){return h(y,A,z,o,"firstChild")},append:function(y,A,z){return h(y,A,z,r,"",true)},overwrite:function(y,A,z){y=Ext.getDom(y);y.innerHTML=u(A);return z?Ext.get(y.firstChild):y.firstChild},createHtml:u};return s}();Ext.Template=function(h){var k=this,c=arguments,e=[],d;if(Ext.isArray(h)){h=h.join("")}else{if(c.length>1){for(var g=0,b=c.length;g<b;g++){d=c[g];if(typeof d=="object"){Ext.apply(k,d)}else{e.push(d)}}h=e.join("")}}k.html=h;if(k.compiled){k.compile()}};Ext.Template.prototype={re:/\{([\w-]+)\}/g,applyTemplate:function(a){var b=this;return b.compiled?b.compiled(a):b.html.replace(b.re,function(c,d){return a[d]!==undefined?a[d]:""})},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},compile:function(){var me=this,sep=Ext.isGecko?"+":",";function fn(m,name){name="values['"+name+"']";return"'"+sep+"("+name+" == undefined ? '' : "+name+")"+sep+"'"}eval("this.compiled = function(values){ return "+(Ext.isGecko?"'":"['")+me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+(Ext.isGecko?"';};":"'].join('');};"));return me},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.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={},nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w-\*]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,isIE=window.ActiveXObject?true:false,key=30803;eval("var batch = 30803;");function child(parent,index){var i=0,n=parent.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(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}function byClassName(nodeSet,cls){if(!cls){return nodeSet}var result=[],ri=-1;for(var i=0,ci;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!=-1){result[++ri]=ci}}return result}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.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=="~"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){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 result=[],ri=-1;tagName=tagName.toLowerCase();for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){if(cs.tagName||cs==document){cs=[cs]}if(!id){return cs}var result=[],ri=-1;for(var i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=Ext.DomQuery.operators[op],a,xml,hasXml;for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType!=1){continue}if(!hasXml){xml=Ext.DomQuery.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=Ext.DomQuery.getStyle(ci,attr)}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)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}return result}function byPseudo(cs,name,value){return Ext.DomQuery.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r;cs[0].setAttribute("_nodup",d);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,r=[];for(var i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(var i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(var i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[];if(!len1){return c2}if(isIE&&typeof c1[0].selectSingleNode!="undefined"){return quickDiffIEXml(c1,c2)}for(var i=0;i<len1;i++){c1[i]._qdiff=d}for(var i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}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,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"],mode,lastPath,matchers=Ext.DomQuery.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';path=path.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(path&&lastPath!=path){lastPath=path;var tokenMatch=path.match(tagTokenRe);if(type=="select"){if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}else{if(path.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}}while(!(modeMatch=path.match(modeRe))){var matched=false;for(var j=0;j<matchersLn;j++){var t=matchers[j];var m=path.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});path=path.replace(m[0],"");matched=true;break}}if(!matched){throw'Error parsing selector, parsing failed at "'+path+'"'}}if(modeMatch[1]){fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";';path=path.replace(modeMatch[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},jsSelect:function(path,root,type){root=root||document;if(typeof root=="string"){root=document.getElementById(root)}var paths=path.split(","),results=[];for(var i=0,len=paths.length;i<len;i++){var subPath=paths[i].replace(trimRe,"");if(!cache[subPath]){cache[subPath]=Ext.DomQuery.compile(subPath);if(!cache[subPath]){throw subPath+" is not a valid selector"}}var result=cache[subPath](root);if(result&&result!=document){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:document.querySelectorAll?function(path,root,type){root=root||document;if(!Ext.DomQuery.isXml(root)){try{var cs=root.querySelectorAll(path);return Ext.toArray(cs)}catch(ex){}}return Ext.DomQuery.jsSelect.call(this,path,root,type)}:function(path,root,type){return Ext.DomQuery.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el),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, " {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, "{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,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),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("|"),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,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,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,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.DelayedTask=function(d,c,a){var e=this,g,b=function(){clearInterval(g);g=null;d.apply(c,a||[])};e.delay=function(i,l,k,h){e.cancel();d=l||d;c=k||c;a=h||a;g=setInterval(b,i)};e.cancel=function(){if(g){clearInterval(g);g=null}}};(function(){var h=document;Ext.Element=function(m,n){var o=typeof m=="string"?h.getElementById(m):m,p;if(!o){return null}p=o.id;if(!n&&p&&Ext.elCache[p]){return Ext.elCache[p].el}this.dom=o;this.id=p||Ext.id(o)};var d=Ext.DomHelper,e=Ext.Element,a=Ext.elCache;e.prototype={set:function(r,n){var p=this.dom,m,q,n=(n!==false)&&!!p.setAttribute;for(m in r){if(r.hasOwnProperty(m)){q=r[m];if(m=="style"){d.applyStyles(p,q)}else{if(m=="cls"){p.className=q}else{if(n){p.setAttribute(m,q)}else{p[m]=q}}}}}return this},defaultUnit:"px",is:function(m){return Ext.DomQuery.is(this.dom,m)},focus:function(p,o){var m=this,o=o||m.dom;try{if(Number(p)){m.focus.defer(p,null,[null,o])}else{o.focus()}}catch(n){}return m},blur:function(){try{this.dom.blur()}catch(m){}return this},getValue:function(m){var n=this.dom.value;return m?parseInt(n,10):n},addListener:function(m,p,o,n){Ext.EventManager.on(this.dom,m,p,o||this,n);return this},removeListener:function(m,o,n){Ext.EventManager.removeListener(this.dom,m,o,n||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this.dom);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this,true);return this},addUnits:function(m){if(m===""||m=="auto"||m===undefined){m=m||""}else{if(!isNaN(m)||!i.test(m)){m=m+(this.defaultUnit||"px")}}return m},load:function(n,o,m){Ext.Ajax.request(Ext.apply({params:o,url:n.url||n,callback:m,el:this.dom,indicatorText:n.indicatorText||""},Ext.isObject(n)?n:{}));return this},isBorderBox:function(){return Ext.isBorderBox||Ext.isForcedBorderBox||g[(this.dom.tagName||"").toLowerCase()]},remove:function(){var m=this,n=m.dom;if(n){delete m.dom;Ext.removeNode(n)}},hover:function(n,m,p,o){var q=this;q.on("mouseenter",n,p||q.dom,o);q.on("mouseleave",m,p||q.dom,o);return q},contains:function(m){return !m?false:Ext.lib.Dom.isAncestor(this.dom,m.dom?m.dom:m)},getAttributeNS:function(n,m){return this.getAttribute(m,n)},getAttribute:Ext.isIE?function(m,o){var p=this.dom,n=typeof p[o+":"+m];if(["undefined","unknown"].indexOf(n)==-1){return p[o+":"+m]}return p[m]}:function(m,n){var o=this.dom;return o.getAttributeNS(n,m)||o.getAttribute(n+":"+m)||o.getAttribute(m)||o[m]},update:function(m){if(this.dom){this.dom.innerHTML=m}return this}};var l=e.prototype;e.addMethods=function(m){Ext.apply(l,m)};l.on=l.addListener;l.un=l.removeListener;l.autoBoxAdjust=true;var i=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,c;e.get=function(n){var m,q,p;if(!n){return null}if(typeof n=="string"){if(!(q=h.getElementById(n))){return null}if(a[n]&&a[n].el){m=a[n].el;m.dom=q}else{m=e.addToCache(new e(q))}return m}else{if(n.tagName){if(!(p=n.id)){p=Ext.id(n)}if(a[p]&&a[p].el){m=a[p].el;m.dom=n}else{m=e.addToCache(new e(n))}return m}else{if(n instanceof e){if(n!=c){if(Ext.isIE&&(n.id==undefined||n.id=="")){n.dom=n.dom}else{n.dom=h.getElementById(n.id)||n.dom}}return n}else{if(n.isComposite){return n}else{if(Ext.isArray(n)){return e.select(n)}else{if(n==h){if(!c){var o=function(){};o.prototype=e.prototype;c=new o();c.dom=h}return c}}}}}}return null};e.addToCache=function(m,n){n=n||m.id;a[n]={el:m,data:{},events:{}};return m};e.data=function(n,m,o){n=e.get(n);if(!n){return null}var p=a[n.id].data;if(arguments.length==2){return p[m]}else{return(p[m]=o)}};function k(){if(!Ext.enableGarbageCollector){clearInterval(e.collectorThreadId)}else{var m,p,r,q;for(m in a){q=a[m];if(q.skipGC){continue}p=q.el;r=p.dom;if(!r||!r.parentNode||(!r.offsetParent&&!h.getElementById(m))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(r)}delete a[m]}}if(Ext.isIE){var n={};for(m in a){n[m]=a[m]}a=Ext.elCache=n}}}e.collectorThreadId=setInterval(k,30000);var b=function(){};b.prototype=e.prototype;e.Flyweight=function(m){this.dom=m};e.Flyweight.prototype=new b();e.Flyweight.prototype.isFlyweight=true;e._flyweights={};e.fly=function(o,m){var n=null;m=m||"_global";if(o=Ext.getDom(o)){(e._flyweights[m]=e._flyweights[m]||new e.Flyweight()).dom=o;n=e._flyweights[m]}return n};Ext.get=e.get;Ext.fly=e.fly;var g=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){g.button=1}})();Ext.Element.addMethods(function(){var d="parentNode",b="nextSibling",c="previousSibling",e=Ext.DomQuery,a=Ext.get;return{findParent:function(n,m,h){var k=this.dom,g=document.body,l=0,i;if(Ext.isGecko&&Object.prototype.toString.call(k)=="[object XULElement]"){return null}m=m||50;if(isNaN(m)){i=Ext.getDom(m);m=Number.MAX_VALUE}while(k&&k.nodeType==1&&l<m&&k!=g&&k!=i){if(e.is(k,n)){return h?a(k):k}l++;k=k.parentNode}return null},findParentNode:function(k,i,g){var h=Ext.fly(this.dom.parentNode,"_internal");return h?h.findParent(k,i,g):null},up:function(h,g){return this.findParentNode(h,g,true)},select:function(g){return Ext.Element.select(g,this.dom)},query:function(g){return e.select(g,this.dom)},child:function(g,h){var i=e.selectNode(g,this.dom);return h?i:a(i)},down:function(g,h){var i=e.selectNode(" > "+g,this.dom);return h?i:a(i)},parent:function(g,h){return this.matchNode(d,d,g,h)},next:function(g,h){return this.matchNode(b,b,g,h)},prev:function(g,h){return this.matchNode(c,c,g,h)},first:function(g,h){return this.matchNode(b,"firstChild",g,h)},last:function(g,h){return this.matchNode(c,"lastChild",g,h)},matchNode:function(h,l,g,i){var k=this.dom[l];while(k){if(k.nodeType==1&&(!g||e.is(k,g))){return !i?a(k):k}k=k[h]}return null}}}());Ext.Element.addMethods(function(){var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;return{appendChild:function(d){return a(d).appendTo(this)},appendTo:function(d){c(d).appendChild(this.dom);return this},insertBefore:function(d){(d=c(d)).parentNode.insertBefore(this.dom,d);return this},insertAfter:function(d){(d=c(d)).parentNode.insertBefore(this.dom,d.nextSibling);return this},insertFirst:function(e,d){e=e||{};if(e.nodeType||e.dom||typeof e=="string"){e=c(e);this.dom.insertBefore(e,this.dom.firstChild);return !d?a(e):e}else{return this.createChild(e,this.dom.firstChild,d)}},replace:function(d){d=a(d);this.insertBefore(d);d.remove();return this},replaceWith:function(d){var e=this;if(d.nodeType||d.dom||typeof d=="string"){d=c(d);e.dom.parentNode.insertBefore(d,e.dom)}else{d=b.insertBefore(e.dom,d)}delete Ext.elCache[e.id];Ext.removeNode(e.dom);e.id=Ext.id(e.dom=d);Ext.Element.addToCache(e.isFlyweight?new Ext.Element(e.dom):e);return e},createChild:function(e,d,g){e=e||{tag:"div"};return d?b.insertBefore(d,e,g!==true):b[!this.dom.firstChild?"overwrite":"append"](this.dom,e,g!==true)},wrap:function(d,e){var g=b.insertBefore(this.dom,d||{tag:"div"},!e);g.dom?g.dom.appendChild(this.dom):g.appendChild(this.dom);return g},insertHtml:function(e,g,d){var h=b.insertHtml(e,this.dom,g);return d?Ext.get(h):h}}}());Ext.Element.addMethods(function(){var B=Ext.supports,h={},y=/(-[a-z])/gi,t=document.defaultView,E=/alpha\(opacity=(.*)\)/i,m=/^\s+|\s+$/g,C=Ext.Element,v=/\s+/,b=/\w/g,d="padding",c="margin",z="border",u="-left",r="-right",x="-top",p="-bottom",k="-width",s=Math,A="hidden",e="isClipped",l="overflow",o="overflow-x",n="overflow-y",D="originalClip",i={l:z+u+k,r:z+r+k,t:z+x+k,b:z+p+k},g={l:d+u,r:d+r,t:d+x,b:d+p},a={l:c+u,r:c+r,t:c+x,b:c+p},F=Ext.Element.data;function q(G,H){return H.charAt(1).toUpperCase()}function w(G){return h[G]||(h[G]=G=="float"?(B.cssFloat?"cssFloat":"styleFloat"):G.replace(y,q))}return{adjustWidth:function(G){var H=this;var I=(typeof G=="number");if(I&&H.autoBoxAdjust&&!H.isBorderBox()){G-=(H.getBorderWidth("lr")+H.getPadding("lr"))}return(I&&G<0)?0:G},adjustHeight:function(G){var H=this;var I=(typeof G=="number");if(I&&H.autoBoxAdjust&&!H.isBorderBox()){G-=(H.getBorderWidth("tb")+H.getPadding("tb"))}return(I&&G<0)?0:G},addClass:function(K){var L=this,J,G,I,H=[];if(!Ext.isArray(K)){if(typeof K=="string"&&!this.hasClass(K)){L.dom.className+=" "+K}}else{for(J=0,G=K.length;J<G;J++){I=K[J];if(typeof I=="string"&&(" "+L.dom.className+" ").indexOf(" "+I+" ")==-1){H.push(I)}}if(H.length){L.dom.className+=" "+H.join(" ")}}return L},removeClass:function(L){var M=this,K,H,G,J,I;if(!Ext.isArray(L)){L=[L]}if(M.dom&&M.dom.className){I=M.dom.className.replace(m,"").split(v);for(K=0,G=L.length;K<G;K++){J=L[K];if(typeof J=="string"){J=J.replace(m,"");H=I.indexOf(J);if(H!=-1){I.splice(H,1)}}}M.dom.className=I.join(" ")}return M},radioClass:function(J){var K=this.dom.parentNode.childNodes,H,I,G;J=Ext.isArray(J)?J:[J];for(I=0,G=K.length;I<G;I++){H=K[I];if(H&&H.nodeType==1){Ext.fly(H,"_internal").removeClass(J)}}return this.addClass(J)},toggleClass:function(G){return this.hasClass(G)?this.removeClass(G):this.addClass(G)},hasClass:function(G){return G&&(" "+this.dom.className+" ").indexOf(" "+G+" ")!=-1},replaceClass:function(H,G){return this.removeClass(H).addClass(G)},isStyle:function(G,H){return this.getStyle(G)==H},getStyle:function(){return t&&t.getComputedStyle?function(L){var J=this.dom,G,I,H,K;if(J==document){return null}L=w(L);H=(G=J.style[L])?G:(I=t.getComputedStyle(J,""))?I[L]:null;if(L=="marginRight"&&H!="0px"&&!B.correctRightMargin){K=J.style.display;J.style.display="inline-block";H=t.getComputedStyle(J,"").marginRight;J.style.display=K}if(L=="backgroundColor"&&H=="rgba(0, 0, 0, 0)"&&!B.correctTransparentColor){H="transparent"}return H}:function(K){var I=this.dom,G,H;if(I==document){return null}if(K=="opacity"){if(I.style.filter.match){if(G=I.style.filter.match(E)){var J=parseFloat(G[1]);if(!isNaN(J)){return J?J/100:0}}}return 1}K=w(K);return I.style[K]||((H=I.currentStyle)?H[K]:null)}}(),getColor:function(G,H,L){var J=this.getStyle(G),I=(typeof L!="undefined")?L:"#",K;if(!J||(/transparent|inherit/.test(J))){return H}if(/^r/.test(J)){Ext.each(J.slice(4,J.length-1).split(","),function(M){K=parseInt(M,10);I+=(K<16?"0":"")+K.toString(16)})}else{J=J.replace("#","");I+=J.length==3?J.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):J}return(I.length>5?I.toLowerCase():H)},setStyle:function(J,I){var G,H;if(typeof J!="object"){G={};G[J]=I;J=G}for(H in J){I=J[H];H=="opacity"?this.setOpacity(I):this.dom.style[w(H)]=I}return this},setOpacity:function(H,G){var K=this,I=K.dom.style;if(!G||!K.anim){if(Ext.isIE){var J=H<1?"alpha(opacity="+H*100+")":"",L=I.filter.replace(E,"").replace(m,"");I.zoom=1;I.filter=L+(L.length>0?" ":"")+J}else{I.opacity=H}}else{K.anim({opacity:{to:H}},K.preanim(arguments,1),null,0.35,"easeIn")}return K},clearOpacity:function(){var G=this.dom.style;if(Ext.isIE){if(!Ext.isEmpty(G.filter)){G.filter=G.filter.replace(E,"").replace(m,"")}}else{G.opacity=G["-moz-opacity"]=G["-khtml-opacity"]=""}return this},getHeight:function(I){var H=this,K=H.dom,J=Ext.isIE&&H.isStyle("display","none"),G=s.max(K.offsetHeight,J?0:K.clientHeight)||0;G=!I?G:G-H.getBorderWidth("tb")-H.getPadding("tb");return G<0?0:G},getWidth:function(H){var I=this,K=I.dom,J=Ext.isIE&&I.isStyle("display","none"),G=s.max(K.offsetWidth,J?0:K.clientWidth)||0;G=!H?G:G-I.getBorderWidth("lr")-I.getPadding("lr");return G<0?0:G},setWidth:function(H,G){var I=this;H=I.adjustWidth(H);!G||!I.anim?I.dom.style.width=I.addUnits(H):I.anim({width:{to:H}},I.preanim(arguments,1));return I},setHeight:function(G,H){var I=this;G=I.adjustHeight(G);!H||!I.anim?I.dom.style.height=I.addUnits(G):I.anim({height:{to:G}},I.preanim(arguments,1));return I},getBorderWidth:function(G){return this.addStyles(G,i)},getPadding:function(G){return this.addStyles(G,g)},clip:function(){var G=this,H=G.dom;if(!F(H,e)){F(H,e,true);F(H,D,{o:G.getStyle(l),x:G.getStyle(o),y:G.getStyle(n)});G.setStyle(l,A);G.setStyle(o,A);G.setStyle(n,A)}return G},unclip:function(){var G=this,I=G.dom;if(F(I,e)){F(I,e,false);var H=F(I,D);if(H.o){G.setStyle(l,H.o)}if(H.x){G.setStyle(o,H.x)}if(H.y){G.setStyle(n,H.y)}}return G},addStyles:function(N,M){var K=0,L=N.match(b),J,I,H,G=L.length;for(H=0;H<G;H++){J=L[H];I=J&&parseInt(this.getStyle(M[J]),10);if(I){K+=s.abs(I)}}return K},margins:a}}());(function(){var a=Ext.lib.Dom,b="left",g="right",d="top",i="bottom",h="position",c="static",e="relative",k="auto",l="z-index";Ext.Element.addMethods({getX:function(){return a.getX(this.dom)},getY:function(){return a.getY(this.dom)},getXY:function(){return a.getXY(this.dom)},getOffsetsTo:function(m){var p=this.getXY(),n=Ext.fly(m,"_internal").getXY();return[p[0]-n[0],p[1]-n[1]]},setX:function(m,n){return this.setXY([m,this.getY()],this.animTest(arguments,n,1))},setY:function(n,m){return this.setXY([this.getX(),n],this.animTest(arguments,m,1))},setLeft:function(m){this.setStyle(b,this.addUnits(m));return this},setTop:function(m){this.setStyle(d,this.addUnits(m));return this},setRight:function(m){this.setStyle(g,this.addUnits(m));return this},setBottom:function(m){this.setStyle(i,this.addUnits(m));return this},setXY:function(o,m){var n=this;if(!m||!n.anim){a.setXY(n.dom,o)}else{n.anim({points:{to:o}},n.preanim(arguments,1),"motion")}return n},setLocation:function(m,o,n){return this.setXY([m,o],this.animTest(arguments,n,2))},moveTo:function(m,o,n){return this.setXY([m,o],this.animTest(arguments,n,2))},getLeft:function(m){return !m?this.getX():parseInt(this.getStyle(b),10)||0},getRight:function(m){var n=this;return !m?n.getX()+n.getWidth():(n.getLeft(true)+n.getWidth())||0},getTop:function(m){return !m?this.getY():parseInt(this.getStyle(d),10)||0},getBottom:function(m){var n=this;return !m?n.getY()+n.getHeight():(n.getTop(true)+n.getHeight())||0},position:function(q,p,m,o){var n=this;if(!q&&n.isStyle(h,c)){n.setStyle(h,e)}else{if(q){n.setStyle(h,q)}}if(p){n.setStyle(l,p)}if(m||o){n.setXY([m||false,o||false])}},clearPositioning:function(m){m=m||"";this.setStyle({left:m,right:m,top:m,bottom:m,"z-index":"",position:c});return this},getPositioning:function(){var m=this.getStyle(b);var n=this.getStyle(d);return{position:this.getStyle(h),left:m,right:m?"":this.getStyle(g),top:n,bottom:n?"":this.getStyle(i),"z-index":this.getStyle(l)}},setPositioning:function(m){var o=this,n=o.dom.style;o.setStyle(m);if(m.right==k){n.right=""}if(m.bottom==k){n.bottom=""}return o},translatePoints:function(m,u){u=isNaN(m[1])?u:m[1];m=isNaN(m[0])?m:m[0];var q=this,r=q.isStyle(h,e),s=q.getXY(),n=parseInt(q.getStyle(b),10),p=parseInt(q.getStyle(d),10);n=!isNaN(n)?n:(r?0:q.dom.offsetLeft);p=!isNaN(p)?p:(r?0:q.dom.offsetTop);return{left:(m-s[0]+n),top:(u-s[1]+p)}},animTest:function(n,m,o){return !!m&&this.preanim?this.preanim(n,o):false}})})();Ext.Element.addMethods({isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},scrollTo:function(a,b){this.dom["scroll"+(/top/i.test(a)?"Top":"Left")]=b;return this},getScroll:function(){var i=this.dom,h=document,a=h.body,c=h.documentElement,b,g,e;if(i==h||i==a){if(Ext.isIE&&Ext.isStrict){b=c.scrollLeft;g=c.scrollTop}else{b=window.pageXOffset;g=window.pageYOffset}e={left:b||(a?a.scrollLeft:0),top:g||(a?a.scrollTop:0)}}else{e={left:i.scrollLeft,top:i.scrollTop}}return e}});Ext.Element.VISIBILITY=1;Ext.Element.DISPLAY=2;Ext.Element.OFFSETS=3;Ext.Element.ASCLASS=4;Ext.Element.visibilityCls="x-hide-nosize";Ext.Element.addMethods(function(){var e=Ext.Element,q="opacity",k="visibility",g="display",d="hidden",o="offsets",l="asclass",n="none",a="nosize",b="originalDisplay",c="visibilityMode",h="isVisible",i=e.data,m=function(s){var r=i(s,b);if(r===undefined){i(s,b,r="")}return r},p=function(s){var r=i(s,c);if(r===undefined){i(s,c,r=1)}return r};return{originalDisplay:"",visibilityMode:1,setVisibilityMode:function(r){i(this.dom,c,r);return this},animate:function(s,u,t,v,r){this.anim(s,{duration:u,callback:t,easing:v},r);return this},anim:function(u,v,s,x,t,r){s=s||"run";v=v||{};var w=this,y=Ext.lib.Anim[s](w.dom,u,(v.duration||x)||0.35,(v.easing||t)||"easeOut",function(){if(r){r.call(w)}if(v.callback){v.callback.call(v.scope||w,w,v)}},w);v.anim=y;return y},preanim:function(r,s){return !r[s]?false:(typeof r[s]=="object"?r[s]:{duration:r[s+1],callback:r[s+2],easing:r[s+3]})},isVisible:function(){var r=this,t=r.dom,s=i(t,h);if(typeof s=="boolean"){return s}s=!r.isStyle(k,d)&&!r.isStyle(g,n)&&!((p(t)==e.ASCLASS)&&r.hasClass(r.visibilityCls||e.visibilityCls));i(t,h,s);return s},setVisible:function(u,r){var x=this,s,z,y,w,v=x.dom,t=p(v);if(typeof r=="string"){switch(r){case g:t=e.DISPLAY;break;case k:t=e.VISIBILITY;break;case o:t=e.OFFSETS;break;case a:case l:t=e.ASCLASS;break}x.setVisibilityMode(t);r=false}if(!r||!x.anim){if(t==e.ASCLASS){x[u?"removeClass":"addClass"](x.visibilityCls||e.visibilityCls)}else{if(t==e.DISPLAY){return x.setDisplayed(u)}else{if(t==e.OFFSETS){if(!u){x.hideModeStyles={position:x.getStyle("position"),top:x.getStyle("top"),left:x.getStyle("left")};x.applyStyles({position:"absolute",top:"-10000px",left:"-10000px"})}else{x.applyStyles(x.hideModeStyles||{position:"",top:"",left:""});delete x.hideModeStyles}}else{x.fixDisplay();v.style.visibility=u?"visible":d}}}}else{if(u){x.setOpacity(0.01);x.setVisible(true)}x.anim({opacity:{to:(u?1:0)}},x.preanim(arguments,1),null,0.35,"easeIn",function(){u||x.setVisible(false).setOpacity(1)})}i(v,h,u);return x},hasMetrics:function(){var r=this.dom;return this.isVisible()||(p(r)==e.VISIBILITY)},toggle:function(r){var s=this;s.setVisible(!s.isVisible(),s.preanim(arguments,0));return s},setDisplayed:function(r){if(typeof r=="boolean"){r=r?m(this.dom):n}this.setStyle(g,r);return this},fixDisplay:function(){var r=this;if(r.isStyle(g,n)){r.setStyle(k,d);r.setStyle(g,m(this.dom));if(r.isStyle(g,n)){r.setStyle(g,"block")}}},hide:function(r){if(typeof r=="string"){this.setVisible(false,r);return this}this.setVisible(false,this.preanim(arguments,0));return this},show:function(r){if(typeof r=="string"){this.setVisible(true,r);return this}this.setVisible(true,this.preanim(arguments,0));return this}}}());(function(){var z=null,B=undefined,l=true,u=false,k="setX",h="setY",a="setXY",o="left",m="bottom",t="top",n="right",r="height",g="width",i="points",x="hidden",A="absolute",v="visible",e="motion",p="position",s="easeOut",d=new Ext.Element.Flyweight(),w={},y=function(C){return C||{}},q=function(C){d.dom=C;d.id=Ext.id(C);return d},c=function(C){if(!w[C]){w[C]=[]}return w[C]},b=function(D,C){w[D]=C};Ext.enableFx=l;Ext.Fx={switchStatements:function(D,E,C){return E.apply(this,C[D])},slideIn:function(I,F){F=y(F);var K=this,H=K.dom,N=H.style,P,C,M,E,D,N,J,O,L,G;I=I||"t";K.queueFx(F,function(){P=q(H).getXY();q(H).fixDisplay();C=q(H).getFxRestore();M={x:P[0],y:P[1],0:P[0],1:P[1],width:H.offsetWidth,height:H.offsetHeight};M.right=M.x+M.width;M.bottom=M.y+M.height;q(H).setWidth(M.width).setHeight(M.height);E=q(H).fxWrap(C.pos,F,x);N.visibility=v;N.position=A;function Q(){q(H).fxUnwrap(E,C.pos,F);N.width=C.width;N.height=C.height;q(H).afterFx(F)}O={to:[M.x,M.y]};L={to:M.width};G={to:M.height};function R(V,S,W,T,Y,aa,ad,ac,ab,X,U){var Z={};q(V).setWidth(W).setHeight(T);if(q(V)[Y]){q(V)[Y](aa)}S[ad]=S[ac]="0";if(ab){Z.width=ab}if(X){Z.height=X}if(U){Z.points=U}return Z}J=q(H).switchStatements(I.toLowerCase(),R,{t:[E,N,M.width,0,z,z,o,m,z,G,z],l:[E,N,0,M.height,z,z,n,t,L,z,z],r:[E,N,M.width,M.height,k,M.right,o,t,z,z,O],b:[E,N,M.width,M.height,h,M.bottom,o,t,z,G,O],tl:[E,N,0,0,z,z,n,m,L,G,O],bl:[E,N,0,0,h,M.y+M.height,n,t,L,G,O],br:[E,N,0,0,a,[M.right,M.bottom],o,t,L,G,O],tr:[E,N,0,0,k,M.x+M.width,o,m,L,G,O]});N.visibility=v;q(E).show();arguments.callee.anim=q(E).fxanim(J,F,e,0.5,s,Q)});return K},slideOut:function(G,E){E=y(E);var I=this,F=I.dom,L=F.style,M=I.getXY(),D,C,J,K,H={to:0};G=G||"t";I.queueFx(E,function(){C=q(F).getFxRestore();J={x:M[0],y:M[1],0:M[0],1:M[1],width:F.offsetWidth,height:F.offsetHeight};J.right=J.x+J.width;J.bottom=J.y+J.height;q(F).setWidth(J.width).setHeight(J.height);D=q(F).fxWrap(C.pos,E,v);L.visibility=v;L.position=A;q(D).setWidth(J.width).setHeight(J.height);function N(){E.useDisplay?q(F).setDisplayed(u):q(F).hide();q(F).fxUnwrap(D,C.pos,E);L.width=C.width;L.height=C.height;q(F).afterFx(E)}function O(P,X,V,Y,T,W,S,U,R){var Q={};P[X]=P[V]="0";Q[Y]=T;if(W){Q[W]=S}if(U){Q[U]=R}return Q}K=q(F).switchStatements(G.toLowerCase(),O,{t:[L,o,m,r,H],l:[L,n,t,g,H],r:[L,o,t,g,H,i,{to:[J.right,J.y]}],b:[L,o,t,r,H,i,{to:[J.x,J.bottom]}],tl:[L,n,m,g,H,r,H],bl:[L,n,t,g,H,r,H,i,{to:[J.x,J.bottom]}],br:[L,o,t,g,H,r,H,i,{to:[J.x+J.width,J.bottom]}],tr:[L,o,m,g,H,r,H,i,{to:[J.right,J.y]}]});arguments.callee.anim=q(D).fxanim(K,E,e,0.5,s,N)});return I},puff:function(I){I=y(I);var G=this,H=G.dom,D=H.style,E,C,F;G.queueFx(I,function(){E=q(H).getWidth();C=q(H).getHeight();q(H).clearOpacity();q(H).show();F=q(H).getFxRestore();function J(){I.useDisplay?q(H).setDisplayed(u):q(H).hide();q(H).clearOpacity();q(H).setPositioning(F.pos);D.width=F.width;D.height=F.height;D.fontSize="";q(H).afterFx(I)}arguments.callee.anim=q(H).fxanim({width:{to:q(H).adjustWidth(E*2)},height:{to:q(H).adjustHeight(C*2)},points:{by:[-E*0.5,-C*0.5]},opacity:{to:0},fontSize:{to:200,unit:"%"}},I,e,0.5,s,J)});return G},switchOff:function(G){G=y(G);var E=this,F=E.dom,C=F.style,D;E.queueFx(G,function(){q(F).clearOpacity();q(F).clip();D=q(F).getFxRestore();function H(){G.useDisplay?q(F).setDisplayed(u):q(F).hide();q(F).clearOpacity();q(F).setPositioning(D.pos);C.width=D.width;C.height=D.height;q(F).afterFx(G)}q(F).fxanim({opacity:{to:0.3}},z,z,0.1,z,function(){q(F).clearOpacity();(function(){q(F).fxanim({height:{to:1},points:{by:[0,q(F).getHeight()*0.5]}},G,e,0.3,"easeIn",H)}).defer(100)})});return E},highlight:function(E,I){I=y(I);var G=this,H=G.dom,C=I.attr||"backgroundColor",D={},F;G.queueFx(I,function(){q(H).clearOpacity();q(H).show();function J(){H.style[C]=F;q(H).afterFx(I)}F=H.style[C];D[C]={from:E||"ffff9c",to:I.endColor||q(H).getColor(C)||"ffffff"};arguments.callee.anim=q(H).fxanim(D,I,"color",1,"easeIn",J)});return G},frame:function(C,F,I){I=y(I);var E=this,H=E.dom,D,G;E.queueFx(I,function(){C=C||"#C3DAF9";if(C.length==6){C="#"+C}F=F||1;q(H).show();var M=q(H).getXY(),K={x:M[0],y:M[1],0:M[0],1:M[1],width:H.offsetWidth,height:H.offsetHeight},J=function(){D=q(document.body||document.documentElement).createChild({style:{position:A,"z-index":35000,border:"0px solid "+C}});return D.queueFx({},L)};arguments.callee.anim={isAnimated:true,stop:function(){F=0;D.stopFx()}};function L(){var N=Ext.isBorderBox?2:1;G=D.anim({top:{from:K.y,to:K.y-20},left:{from:K.x,to:K.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:K.height,to:K.height+20*N},width:{from:K.width,to:K.width+20*N}},{duration:I.duration||1,callback:function(){D.remove();--F>0?J():q(H).afterFx(I)}});arguments.callee.anim={isAnimated:true,stop:function(){G.stop()}}}J()});return E},pause:function(E){var D=this.dom,C;this.queueFx({},function(){C=setTimeout(function(){q(D).afterFx({})},E*1000);arguments.callee.anim={isAnimated:true,stop:function(){clearTimeout(C);q(D).afterFx({})}}});return this},fadeIn:function(E){E=y(E);var C=this,D=C.dom,F=E.endOpacity||1;C.queueFx(E,function(){q(D).setOpacity(0);q(D).fixDisplay();D.style.visibility=v;arguments.callee.anim=q(D).fxanim({opacity:{to:F}},E,z,0.5,s,function(){if(F==1){q(D).clearOpacity()}q(D).afterFx(E)})});return C},fadeOut:function(F){F=y(F);var D=this,E=D.dom,C=E.style,G=F.endOpacity||0;D.queueFx(F,function(){arguments.callee.anim=q(E).fxanim({opacity:{to:G}},F,z,0.5,s,function(){if(G==0){Ext.Element.data(E,"visibilityMode")==Ext.Element.DISPLAY||F.useDisplay?C.display="none":C.visibility=x;q(E).clearOpacity()}q(E).afterFx(F)})});return D},scale:function(C,D,E){this.shift(Ext.apply({},E,{width:C,height:D}));return this},shift:function(E){E=y(E);var D=this.dom,C={};this.queueFx(E,function(){for(var F in E){if(E[F]!=B){C[F]={to:E[F]}}}C.width?C.width.to=q(D).adjustWidth(E.width):C;C.height?C.height.to=q(D).adjustWidth(E.height):C;if(C.x||C.y||C.xy){C.points=C.xy||{to:[C.x?C.x.to:q(D).getX(),C.y?C.y.to:q(D).getY()]}}arguments.callee.anim=q(D).fxanim(C,E,e,0.35,s,function(){q(D).afterFx(E)})});return this},ghost:function(F,D){D=y(D);var H=this,E=H.dom,K=E.style,I={opacity:{to:0},points:{}},L=I.points,C,J,G;F=F||"b";H.queueFx(D,function(){C=q(E).getFxRestore();J=q(E).getWidth();G=q(E).getHeight();function M(){D.useDisplay?q(E).setDisplayed(u):q(E).hide();q(E).clearOpacity();q(E).setPositioning(C.pos);K.width=C.width;K.height=C.height;q(E).afterFx(D)}L.by=q(E).switchStatements(F.toLowerCase(),function(O,N){return[O,N]},{t:[0,-G],l:[-J,0],r:[J,0],b:[0,G],tl:[-J,-G],bl:[-J,G],br:[J,G],tr:[J,-G]});arguments.callee.anim=q(E).fxanim(I,D,e,0.5,s,M)});return H},syncFx:function(){var C=this;C.fxDefaults=Ext.apply(C.fxDefaults||{},{block:u,concurrent:l,stopFx:u});return C},sequenceFx:function(){var C=this;C.fxDefaults=Ext.apply(C.fxDefaults||{},{block:u,concurrent:u,stopFx:u});return C},nextFx:function(){var C=c(this.dom.id)[0];if(C){C.call(this)}},hasActiveFx:function(){return c(this.dom.id)[0]},stopFx:function(C){var D=this,F=D.dom.id;if(D.hasActiveFx()){var E=c(F)[0];if(E&&E.anim){if(E.anim.isAnimated){b(F,[E]);E.anim.stop(C!==undefined?C:l)}else{b(F,[])}}}return D},beforeFx:function(C){if(this.hasActiveFx()&&!C.concurrent){if(C.stopFx){this.stopFx();return l}return u}return l},hasFxBlock:function(){var C=c(this.dom.id);return C&&C[0]&&C[0].block},queueFx:function(F,C){var D=q(this.dom);if(!D.hasFxBlock()){Ext.applyIf(F,D.fxDefaults);if(!F.concurrent){var E=D.beforeFx(F);C.block=F.block;c(D.dom.id).push(C);if(E){D.nextFx()}}else{C.call(D)}}return D},fxWrap:function(I,G,E){var F=this.dom,D,C;if(!G.wrap||!(D=Ext.getDom(G.wrap))){if(G.fixPosition){C=q(F).getXY()}var H=document.createElement("div");H.style.visibility=E;D=F.parentNode.insertBefore(H,F);q(D).setPositioning(I);if(q(D).isStyle(p,"static")){q(D).position("relative")}q(F).clearPositioning("auto");q(D).clip();D.appendChild(F);if(C){q(D).setXY(C)}}return D},fxUnwrap:function(D,G,F){var E=this.dom;q(E).clearPositioning();q(E).setPositioning(G);if(!F.wrap){var C=q(D).dom.parentNode;C.insertBefore(E,D);q(D).remove()}},getFxRestore:function(){var C=this.dom.style;return{pos:this.getPositioning(),width:C.width,height:C.height}},afterFx:function(D){var C=this.dom,E=C.id;if(D.afterStyle){q(C).setStyle(D.afterStyle)}if(D.afterCls){q(C).addClass(D.afterCls)}if(D.remove==l){q(C).remove()}if(D.callback){D.callback.call(D.scope,q(C))}if(!D.concurrent){c(E).shift();q(C).nextFx()}},fxanim:function(F,G,D,H,E,C){D=D||"run";G=G||{};var I=Ext.lib.Anim[D](this.dom,F,(G.duration||H)||0.35,(G.easing||E)||s,C,this);G.anim=I;return I}};Ext.Fx.resize=Ext.Fx.scale;Ext.Element.addMethods(Ext.Fx)})();Ext.CompositeElementLite=function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.Element.Flyweight()};Ext.CompositeElementLite.prototype={isComposite:true,getElement:function(a){var b=this.el;b.dom=a;b.id=a.id;return b},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(d,b){var e=this,g=e.elements;if(!d){return this}if(typeof d=="string"){d=Ext.Element.selectorFunction(d,b)}else{if(d.isComposite){d=d.elements}else{if(!Ext.isIterable(d)){d=[d]}}}for(var c=0,a=d.length;c<a;++c){g.push(e.transformElement(d[c]))}return e},invoke:function(g,b){var h=this,d=h.elements,a=d.length,k,c;for(c=0;c<a;c++){k=d[c];if(k){Ext.Element.prototype[g].apply(h.getElement(k),b)}}return h},item:function(b){var d=this,c=d.elements[b],a=null;if(c){a=d.getElement(c)}return a},addListener:function(b,k,h,g){var d=this.elements,a=d.length,c,l;for(c=0;c<a;c++){l=d[c];if(l){Ext.EventManager.on(l,b,k,h||l,g)}}return this},each:function(g,d){var h=this,c=h.elements,a=c.length,b,k;for(b=0;b<a;b++){k=c[b];if(k){k=this.getElement(k);if(g.call(d||k,k,h,b)===false){break}}}return h},fill:function(a){var b=this;b.elements=[];b.add(a);return b},filter:function(a){var b=[],d=this,c=Ext.isFunction(a)?a:function(e){return e.is(a)};d.each(function(h,e,g){if(c(h,g)!==false){b[b.length]=d.transformElement(h)}});d.elements=b;return d},indexOf:function(a){return this.elements.indexOf(this.transformElement(a))},replaceElement:function(e,c,a){var b=!isNaN(e)?e:this.indexOf(e),g;if(b>-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}this.elements.splice(b,1,c)}return this},clear:function(){this.elements=[]}};Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;Ext.CompositeElementLite.importElementMethods=function(){var c,b=Ext.Element.prototype,a=Ext.CompositeElementLite.prototype;for(c in b){if(typeof b[c]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,c)}}};Ext.CompositeElementLite.importElementMethods();if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select}Ext.Element.select=function(a,b){var c;if(typeof a=="string"){c=Ext.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{throw"Invalid selector"}}return new Ext.CompositeElementLite(c)};Ext.select=Ext.Element.select;(function(){var b="beforerequest",e="requestcomplete",d="requestexception",h=undefined,c="load",i="POST",a="GET",g=window;Ext.data.Connection=function(k){Ext.apply(this,k);this.addEvents(b,e,d);Ext.data.Connection.superclass.constructor.call(this)};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,autoAbort:false,disableCaching:true,disableCachingParam:"_dc",request:function(q){var t=this;if(t.fireEvent(b,t,q)){if(q.el){if(!Ext.isEmpty(q.indicatorText)){t.indicatorText='<div class="loading-indicator">'+q.indicatorText+"</div>"}if(t.indicatorText){Ext.getDom(q.el).innerHTML=t.indicatorText}q.success=(Ext.isFunction(q.success)?q.success:function(){}).createInterceptor(function(o){Ext.getDom(q.el).innerHTML=o.responseText})}var m=q.params,l=q.url||t.url,k,r={success:t.handleResponse,failure:t.handleFailure,scope:t,argument:{options:q},timeout:Ext.num(q.timeout,t.timeout)},n,u;if(Ext.isFunction(m)){m=m.call(q.scope||g,q)}m=Ext.urlEncode(t.extraParams,Ext.isObject(m)?Ext.urlEncode(m):m);if(Ext.isFunction(l)){l=l.call(q.scope||g,q)}if((n=Ext.getDom(q.form))){l=l||n.action;if(q.isUpload||(/multipart\/form-data/i.test(n.getAttribute("enctype")))){return t.doFormUpload.call(t,q,m,l)}u=Ext.lib.Ajax.serializeForm(n);m=m?(m+"&"+u):u}k=q.method||t.method||((m||q.xmlData||q.jsonData)?i:a);if(k===a&&(t.disableCaching&&q.disableCaching!==false)||q.disableCaching===true){var s=q.disableCachingParam||t.disableCachingParam;l=Ext.urlAppend(l,s+"="+(new Date().getTime()))}q.headers=Ext.apply(q.headers||{},t.defaultHeaders||{});if(q.autoAbort===true||t.autoAbort){t.abort()}if((k==a||q.xmlData||q.jsonData)&&m){l=Ext.urlAppend(l,m);m=""}return(t.transId=Ext.lib.Ajax.request(k,l,r,m,q))}else{return q.callback?q.callback.apply(q.scope,[q,h,h]):null}},isLoading:function(k){return k?Ext.lib.Ajax.isCallInProgress(k):!!this.transId},abort:function(k){if(k||this.isLoading()){Ext.lib.Ajax.abort(k||this.transId)}},handleResponse:function(k){this.transId=false;var l=k.argument.options;k.argument=l?l.argument:null;this.fireEvent(e,this,k,l);if(l.success){l.success.call(l.scope,k,l)}if(l.callback){l.callback.call(l.scope,l,true,k)}},handleFailure:function(k,m){this.transId=false;var l=k.argument.options;k.argument=l?l.argument:null;this.fireEvent(d,this,k,l,m);if(l.failure){l.failure.call(l.scope,k,l)}if(l.callback){l.callback.call(l.scope,l,false,k)}},doFormUpload:function(r,k,l){var m=Ext.id(),w=document,s=w.createElement("iframe"),n=Ext.getDom(r.form),v=[],u,q="multipart/form-data",p={target:n.target,method:n.method,encoding:n.encoding,enctype:n.enctype,action:n.action};Ext.fly(s).set({id:m,name:m,cls:"x-hidden",src:Ext.SSL_SECURE_URL});w.body.appendChild(s);if(Ext.isIE){document.frames[m].name=m}Ext.fly(n).set({target:m,method:i,enctype:q,encoding:q,action:l||p.action});Ext.iterate(Ext.urlDecode(k,false),function(x,o){u=w.createElement("input");Ext.fly(u).set({type:"hidden",value:o,name:x});n.appendChild(u);v.push(u)});function t(){var y=this,x={responseText:"",responseXML:null,argument:r.argument},B,A;try{B=s.contentWindow.document||s.contentDocument||g.frames[m].document;if(B){if(B.body){if(/textarea/i.test((A=B.body.firstChild||{}).tagName)){x.responseText=A.value}else{x.responseText=B.body.innerHTML}}x.responseXML=B.XMLDocument||B}}catch(z){}Ext.EventManager.removeListener(s,c,t,y);y.fireEvent(e,y,x,r);function o(E,D,C){if(Ext.isFunction(E)){E.apply(D,C)}}o(r.success,r.scope,[x,r]);o(r.callback,r.scope,[r,true,x]);if(!y.debugUploads){setTimeout(function(){Ext.removeNode(s)},100)}}Ext.EventManager.on(s,c,t,this);n.submit();Ext.fly(n).set(p);Ext.each(v,function(o){Ext.removeNode(o)})}})})();Ext.Ajax=new Ext.data.Connection({autoAbort:false,serializeForm:function(a){return Ext.lib.Ajax.serializeForm(a)}});Ext.util.JSON=new (function(){var useHasOwn=!!{}.hasOwnProperty,isNative=function(){var useNative=null;return function(){if(useNative===null){useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"}return useNative}}(),pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return eval("("+json+")")},doEncode=function(o){if(!Ext.isDefined(o)||o===null){return"null"}else{if(Ext.isArray(o)){return encodeArray(o)}else{if(Ext.isDate(o)){return Ext.util.JSON.encodeDate(o)}else{if(Ext.isString(o)){return encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{var a=["{"],b,i,v;for(i in o){if(!o.getElementsByTagName){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(doEncode(i),":",v===null?"null":doEncode(v));b=true}}}}a.push("}");return a.join("")}}}}}}},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},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+'"'},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("")};this.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(){var ec;return function(o){if(!ec){ec=isNative()?JSON.stringify:doEncode}return ec(o)}}();this.decode=function(){var dc;return function(json){if(!dc){dc=isNative()?JSON.parse:doDecode}return dc(json)}}()})();Ext.encode=Ext.util.JSON.encode;Ext.decode=Ext.util.JSON.decode;Ext.EventManager=function(){var A,q,k=false,m=Ext.isGecko||Ext.isWebKit||Ext.isSafari,p=Ext.lib.Event,r=Ext.lib.Dom,c=document,B=window,s="DOMContentLoaded",u="complete",g=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,v=[];function o(F){var I=false,E=0,D=v.length,G=false,H;if(F){if(F.getElementById||F.navigator){for(;E<D;++E){H=v[E];if(H.el===F){I=H.id;break}}if(!I){I=Ext.id(F);v.push({id:I,el:F});G=true}}else{I=Ext.id(F)}if(!Ext.elCache[I]){Ext.Element.addToCache(new Ext.Element(F),I);if(G){Ext.elCache[I].skipGC=true}}}return I}function n(F,H,K,G,E,M){F=Ext.getDom(F);var D=o(F),L=Ext.elCache[D].events,I;I=p.on(F,H,E);L[H]=L[H]||[];L[H].push([K,E,M,I,G]);if(F.addEventListener&&H=="mousewheel"){var J=["DOMMouseScroll",E,false];F.addEventListener.apply(F,J);Ext.EventManager.addListener(B,"unload",function(){F.removeEventListener.apply(F,J)})}if(F==c&&H=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.addListener(E)}}function d(){if(window!=top){return false}try{c.documentElement.doScroll("left")}catch(D){return false}b();return true}function C(D){if(Ext.isIE&&d()){return true}if(c.readyState==u){b();return true}k||(q=setTimeout(arguments.callee,2));return false}var l;function i(D){l||(l=Ext.query("style, link[rel=stylesheet]"));if(l.length==c.styleSheets.length){b();return true}k||(q=setTimeout(arguments.callee,2));return false}function z(D){c.removeEventListener(s,arguments.callee,false);i()}function b(D){if(!k){k=true;if(q){clearTimeout(q)}if(m){c.removeEventListener(s,b,false)}if(Ext.isIE&&C.bindIE){c.detachEvent("onreadystatechange",C)}p.un(B,"load",arguments.callee)}if(A&&!Ext.isReady){Ext.isReady=true;A.fire();A.listeners=[]}}function a(){A||(A=new Ext.util.Event());if(m){c.addEventListener(s,b,false)}if(Ext.isIE){if(!C()){C.bindIE=true;c.attachEvent("onreadystatechange",C)}}else{if(Ext.isOpera){(c.readyState==u&&i())||c.addEventListener(s,z,false)}else{if(Ext.isWebKit){C()}}}p.on(B,"load",b)}function y(D,E){return function(){var F=Ext.toArray(arguments);if(E.target==Ext.EventObject.setEvent(F[0]).target){D.apply(this,F)}}}function x(E,F,D){return function(G){D.delay(F.buffer,E,null,[new Ext.EventObjectImpl(G)])}}function t(H,G,D,F,E){return function(I){Ext.EventManager.removeListener(G,D,F,E);H(I)}}function e(E,F,D){return function(H){var G=new Ext.util.DelayedTask(E);if(!D.tasks){D.tasks=[]}D.tasks.push(G);G.delay(F.delay||10,E,null,[new Ext.EventObjectImpl(H)])}}function h(I,H,D,K,L){var E=(!D||typeof D=="boolean")?{}:D,F=Ext.getDom(I),G;K=K||E.fn;L=L||E.scope;if(!F){throw'Error listening for "'+H+'". Element "'+I+"\" doesn't exist."}function J(N){if(!Ext){return}N=Ext.EventObject.setEvent(N);var M;if(E.delegate){if(!(M=N.getTarget(E.delegate,F))){return}}else{M=N.target}if(E.stopEvent){N.stopEvent()}if(E.preventDefault){N.preventDefault()}if(E.stopPropagation){N.stopPropagation()}if(E.normalized===false){N=N.browserEvent}K.call(L||F,N,M,E)}if(E.target){J=y(J,E)}if(E.delay){J=e(J,E,K)}if(E.single){J=t(J,F,H,K,L)}if(E.buffer){G=new Ext.util.DelayedTask(J);J=x(J,E,G)}n(F,H,K,G,J,L);return J}var w={addListener:function(F,D,H,G,E){if(typeof D=="object"){var K=D,I,J;for(I in K){J=K[I];if(!g.test(I)){if(Ext.isFunction(J)){h(F,I,K,J,K.scope)}else{h(F,I,J)}}}}else{h(F,D,E,H,G)}},removeListener:function(F,J,N,O){F=Ext.getDom(F);var D=o(F),L=F&&(Ext.elCache[D].events)[J]||[],E,I,G,H,K,M;for(I=0,K=L.length;I<K;I++){if(Ext.isArray(M=L[I])&&M[0]==N&&(!O||M[2]==O)){if(M[4]){M[4].cancel()}H=N.tasks&&N.tasks.length;if(H){while(H--){N.tasks[H].cancel()}delete N.tasks}E=M[1];p.un(F,J,p.extAdapter?M[3]:E);if(E&&F.addEventListener&&J=="mousewheel"){F.removeEventListener("DOMMouseScroll",E,false)}if(E&&F==c&&J=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.removeListener(E)}L.splice(I,1);if(L.length===0){delete Ext.elCache[D].events[J]}for(H in Ext.elCache[D].events){return false}Ext.elCache[D].events={};return false}}},removeAll:function(F){F=Ext.getDom(F);var E=o(F),K=Ext.elCache[E]||{},N=K.events||{},J,I,L,G,M,H,D;for(G in N){if(N.hasOwnProperty(G)){J=N[G];for(I=0,L=J.length;I<L;I++){M=J[I];if(M[4]){M[4].cancel()}if(M[0].tasks&&(H=M[0].tasks.length)){while(H--){M[0].tasks[H].cancel()}delete M.tasks}D=M[1];p.un(F,G,p.extAdapter?M[3]:D);if(F.addEventListener&&D&&G=="mousewheel"){F.removeEventListener("DOMMouseScroll",D,false)}if(D&&F==c&&G=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.removeListener(D)}}}}if(Ext.elCache[E]){Ext.elCache[E].events={}}},getListeners:function(G,D){G=Ext.getDom(G);var I=o(G),E=Ext.elCache[I]||{},H=E.events||{},F=[];if(H&&H[D]){return H[D]}else{return null}},purgeElement:function(F,D,H){F=Ext.getDom(F);var E=o(F),K=Ext.elCache[E]||{},L=K.events||{},G,J,I;if(H){if(L&&L.hasOwnProperty(H)){J=L[H];for(G=0,I=J.length;G<I;G++){Ext.EventManager.removeListener(F,H,J[G][0])}}}else{Ext.EventManager.removeAll(F)}if(D&&F&&F.childNodes){for(G=0,I=F.childNodes.length;G<I;G++){Ext.EventManager.purgeElement(F.childNodes[G],D,H)}}},_unload:function(){var D;for(D in Ext.elCache){Ext.EventManager.removeAll(D)}delete Ext.elCache;delete Ext.Element._flyweights;var H,E,G,F=Ext.lib.Ajax;(typeof F.conn=="object")?E=F.conn:E={};for(G in E){H=E[G];if(H){F.abort({conn:H,tId:G})}}},onDocumentReady:function(F,E,D){if(Ext.isReady){A||(A=new Ext.util.Event());A.addListener(F,E,D);A.fire();A.listeners=[]}else{if(!A){a()}D=D||{};D.delay=D.delay||1;A.addListener(F,E,D)}},fireDocReady:b};w.on=w.addListener;w.un=w.removeListener;w.stoppedMouseDownEvent=new Ext.util.Event();return w}();Ext.onReady=Ext.EventManager.onDocumentReady;(function(){var a=function(){var c=document.body||document.getElementsByTagName("body")[0];if(!c){return false}var b=[" ",Ext.isIE?"ext-ie "+(Ext.isIE6?"ext-ie6":(Ext.isIE7?"ext-ie7":"ext-ie8")):Ext.isGecko?"ext-gecko "+(Ext.isGecko2?"ext-gecko2":"ext-gecko3"):Ext.isOpera?"ext-opera":Ext.isWebKit?"ext-webkit":""];if(Ext.isSafari){b.push("ext-safari "+(Ext.isSafari2?"ext-safari2":(Ext.isSafari3?"ext-safari3":"ext-safari4")))}else{if(Ext.isChrome){b.push("ext-chrome")}}if(Ext.isMac){b.push("ext-mac")}if(Ext.isLinux){b.push("ext-linux")}if(Ext.isStrict||Ext.isBorderBox){var d=c.parentNode;if(d){Ext.fly(d,"_internal").addClass(((Ext.isStrict&&Ext.isIE)||(!Ext.enableForcedBoxModel&&!Ext.isIE))?" ext-strict":" ext-border-box")}}if(Ext.enableForcedBoxModel&&!Ext.isIE){Ext.isForcedBorderBox=true;b.push("ext-forced-border-box")}Ext.fly(c,"_internal").addClass(b);return true};if(!a()){Ext.onReady(a)}})();(function(){var b=Ext.apply(Ext.supports,{correctRightMargin:true,correctTransparentColor:true,cssFloat:true});var a=function(){var g=document.createElement("div"),e=document,c,d;g.innerHTML='<div style="height:30px;width:50px;"><div style="height:20px;width:20px;"></div></div><div style="float:left;background-color:transparent;">';e.body.appendChild(g);d=g.lastChild;if((c=e.defaultView)){if(c.getComputedStyle(g.firstChild.firstChild,null).marginRight!="0px"){b.correctRightMargin=false}if(c.getComputedStyle(d,null).backgroundColor!="transparent"){b.correctTransparentColor=false}}b.cssFloat=!!d.style.cssFloat;e.body.removeChild(g)};if(Ext.isReady){a()}else{Ext.onReady(a)}})();Ext.EventObject=function(){var b=Ext.lib.Event,c=/(dbl)?click/,a={3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},d=Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2};Ext.EventObjectImpl=function(g){if(g){this.setEvent(g.browserEvent||g)}};Ext.EventObjectImpl.prototype={setEvent:function(h){var g=this;if(h==g||(h&&h.browserEvent)){return h}g.browserEvent=h;if(h){g.button=h.button?d[h.button]:(h.which?h.which-1:-1);if(c.test(h.type)&&g.button==-1){g.button=0}g.type=h.type;g.shiftKey=h.shiftKey;g.ctrlKey=h.ctrlKey||h.metaKey||false;g.altKey=h.altKey;g.keyCode=h.keyCode;g.charCode=h.charCode;g.target=b.getTarget(h);g.xy=b.getXY(h)}else{g.button=-1;g.shiftKey=false;g.ctrlKey=false;g.altKey=false;g.keyCode=0;g.charCode=0;g.target=null;g.xy=[0,0]}return g},stopEvent:function(){var e=this;if(e.browserEvent){if(e.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(e)}b.stopEvent(e.browserEvent)}},preventDefault:function(){if(this.browserEvent){b.preventDefault(this.browserEvent)}},stopPropagation:function(){var e=this;if(e.browserEvent){if(e.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(e)}b.stopPropagation(e.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(e){return Ext.isSafari?(a[e]||e):e},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getXY:function(){return this.xy},getTarget:function(g,h,e){return g?Ext.fly(this.target).findParent(g,h,e):(e?Ext.get(this.target):this.target)},getRelatedTarget:function(){return this.browserEvent?b.getRelatedTarget(this.browserEvent):null},getWheelDelta:function(){var g=this.browserEvent;var h=0;if(g.wheelDelta){h=g.wheelDelta/120}else{if(g.detail){h=-g.detail/3}}return h},within:function(h,i,e){if(h){var g=this[i?"getRelatedTarget":"getTarget"]();return g&&((e?(g==Ext.getDom(h)):false)||Ext.fly(h).contains(g))}return false}};return new Ext.EventObjectImpl()}();Ext.Loader=Ext.apply({},{load:function(k,i,l,c){var l=l||this,g=document.getElementsByTagName("head")[0],b=document.createDocumentFragment(),a=k.length,h=0,e=this;var m=function(n){g.appendChild(e.buildScriptTag(k[n],d))};var d=function(){h++;if(a==h&&typeof i=="function"){i.call(l)}else{if(c===true){m(h)}}};if(c===true){m.call(this,0)}else{Ext.each(k,function(o,n){b.appendChild(this.buildScriptTag(o,d))},this);g.appendChild(b)}},buildScriptTag:function(b,c){var a=document.createElement("script");a.type="text/javascript";a.src=b;if(a.readyState){a.onreadystatechange=function(){if(a.readyState=="loaded"||a.readyState=="complete"){a.onreadystatechange=null;c()}}}else{a.onload=c}return a}});Ext.ns("Ext.grid","Ext.list","Ext.dd","Ext.tree","Ext.form","Ext.menu","Ext.state","Ext.layout","Ext.app","Ext.ux","Ext.chart","Ext.direct");Ext.apply(Ext,function(){var c=Ext,a=0,b=null;return{emptyFn:function(){},BLANK_IMAGE_URL:Ext.isIE6||Ext.isIE7||Ext.isAir?"http://www.extjs.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",extendX:function(d,e){return Ext.extend(d,e(d.prototype))},getDoc:function(){return Ext.get(document)},num:function(e,d){e=Number(Ext.isEmpty(e)||Ext.isArray(e)||typeof e=="boolean"||(typeof e=="string"&&e.trim().length==0)?NaN:e);return isNaN(e)?d:e},value:function(g,d,e){return Ext.isEmpty(g,e)?d:g},escapeRe:function(d){return d.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1")},sequence:function(h,d,g,e){h[d]=h[d].createSequence(g,e)},addBehaviors:function(i){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(i)})}else{var e={},h,d,g;for(d in i){if((h=d.split("@"))[1]){g=h[0];if(!e[g]){e[g]=Ext.select(g)}e[g].on(h[1],i[d])}}e=null}},getScrollBarWidth:function(g){if(!Ext.isReady){return 0}if(g===true||b===null){var i=Ext.getBody().createChild('<div class="x-hide-offsets" style="width:100px;height:50px;overflow:hidden;"><div style="height:200px;"></div></div>'),h=i.child("div",true);var e=h.offsetWidth;i.setStyle("overflow",(Ext.isWebKit||Ext.isGecko)?"auto":"scroll");var d=h.offsetWidth;i.remove();b=e-d+2}return b},combine:function(){var g=arguments,e=g.length,k=[];for(var h=0;h<e;h++){var d=g[h];if(Ext.isArray(d)){k=k.concat(d)}else{if(d.length!==undefined&&!d.substr){k=k.concat(Array.prototype.slice.call(d,0))}else{k.push(d)}}}return k},copyTo:function(d,e,g){if(typeof g=="string"){g=g.split(/[,;\s]/)}Ext.each(g,function(h){if(e.hasOwnProperty(h)){d[h]=e[h]}},this);return d},destroy:function(){Ext.each(arguments,function(d){if(d){if(Ext.isArray(d)){this.destroy.apply(this,d)}else{if(typeof d.destroy=="function"){d.destroy()}else{if(d.dom){d.remove()}}}}},this)},destroyMembers:function(m,k,g,h){for(var l=1,e=arguments,d=e.length;l<d;l++){Ext.destroy(m[e[l]]);delete m[e[l]]}},clean:function(d){var e=[];Ext.each(d,function(g){if(!!g){e.push(g)}});return e},unique:function(d){var e=[],g={};Ext.each(d,function(h){if(!g[h]){e.push(h)}g[h]=true});return e},flatten:function(d){var g=[];function e(h){Ext.each(h,function(i){if(Ext.isArray(i)){e(i)}else{g.push(i)}});return g}return e(d)},min:function(d,e){var g=d[0];e=e||function(i,h){return i<h?-1:1};Ext.each(d,function(h){g=e(g,h)==-1?g:h});return g},max:function(d,e){var g=d[0];e=e||function(i,h){return i>h?1:-1};Ext.each(d,function(h){g=e(g,h)==1?g:h});return g},mean:function(d){return d.length>0?Ext.sum(d)/d.length:undefined},sum:function(d){var e=0;Ext.each(d,function(g){e+=g});return e},partition:function(d,e){var g=[[],[]];Ext.each(d,function(k,l,h){g[(e&&e(k,l,h))||(!e&&k)?0:1].push(k)});return g},invoke:function(d,e){var h=[],g=Array.prototype.slice.call(arguments,2);Ext.each(d,function(k,l){if(k&&typeof k[e]=="function"){h.push(k[e].apply(k,g))}else{h.push(undefined)}});return h},pluck:function(d,g){var e=[];Ext.each(d,function(h){e.push(h[g])});return e},zip:function(){var n=Ext.partition(arguments,function(i){return typeof i!="function"}),k=n[0],m=n[1][0],d=Ext.max(Ext.pluck(k,"length")),h=[];for(var l=0;l<d;l++){h[l]=[];if(m){h[l]=m.apply(m,Ext.pluck(k,l))}else{for(var g=0,e=k.length;g<e;g++){h[l].push(k[g][l])}}}return h},getCmp:function(d){return Ext.ComponentMgr.get(d)},useShims:c.isIE6||(c.isMac&&c.isGecko2),type:function(e){if(e===undefined||e===null){return false}if(e.htmlElement){return"element"}var d=typeof e;if(d=="object"&&e.nodeName){switch(e.nodeType){case 1:return"element";case 3:return(/\S/).test(e.nodeValue)?"textnode":"whitespace"}}if(d=="object"||d=="function"){switch(e.constructor){case Array:return"array";case RegExp:return"regexp";case Date:return"date"}if(typeof e.length=="number"&&typeof e.item=="function"){return"nodelist"}}return d},intercept:function(h,d,g,e){h[d]=h[d].createInterceptor(g,e)},callback:function(d,h,g,e){if(typeof d=="function"){if(e){d.defer(e,h,g||[])}else{d.apply(h,g||[])}}}}}());Ext.apply(Function.prototype,{createSequence:function(b,a){var c=this;return(typeof b!="function")?this:function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}}});Ext.applyIf(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a}});String.prototype.toggle=function(b,a){return this==b?a:b};String.prototype.trim=function(){var a=/^\s+|\s+$/g;return function(){return this.replace(a,"")}}();Date.prototype.getElapsed=function(a){return Math.abs((a||new Date()).getTime()-this.getTime())};Ext.applyIf(Number.prototype,{constrain:function(b,a){return Math.min(Math.max(this,b),a)}});Ext.lib.Dom.getRegion=function(a){return Ext.lib.Region.getRegion(a)};Ext.lib.Region=function(d,g,a,c){var e=this;e.top=d;e[1]=d;e.right=g;e.bottom=a;e.left=c;e[0]=c};Ext.lib.Region.prototype={contains:function(b){var a=this;return(b.left>=a.left&&b.right<=a.right&&b.top>=a.top&&b.bottom<=a.bottom)},getArea:function(){var a=this;return((a.bottom-a.top)*(a.right-a.left))},intersect:function(h){var g=this,d=Math.max(g.top,h.top),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.left,h.left);if(a>=d&&e>=c){return new Ext.lib.Region(d,e,a,c)}},union:function(h){var g=this,d=Math.min(g.top,h.top),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.left,h.left);return new Ext.lib.Region(d,e,a,c)},constrainTo:function(b){var a=this;a.top=a.top.constrain(b.top,b.bottom);a.bottom=a.bottom.constrain(b.top,b.bottom);a.left=a.left.constrain(b.left,b.right);a.right=a.right.constrain(b.left,b.right);return a},adjust:function(d,c,a,g){var e=this;e.top+=d;e.left+=c;e.right+=g;e.bottom+=a;return e}};Ext.lib.Region.getRegion=function(e){var h=Ext.lib.Dom.getXY(e),d=h[1],g=h[0]+e.offsetWidth,a=h[1]+e.offsetHeight,c=h[0];return new Ext.lib.Region(d,g,a,c)};Ext.lib.Point=function(a,c){if(Ext.isArray(a)){c=a[1];a=a[0]}var b=this;b.x=b.right=b.left=b[0]=a;b.y=b.top=b.bottom=b[1]=c};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.apply(Ext.DomHelper,function(){var e,a="afterbegin",h="afterend",i="beforebegin",d="beforeend",b=/tag|children|cn|html$/i;function g(n,q,p,r,m,k){n=Ext.getDom(n);var l;if(e.useDom){l=c(q,null);if(k){n.appendChild(l)}else{(m=="firstChild"?n:n.parentNode).insertBefore(l,n[m]||n)}}else{l=Ext.DomHelper.insertHtml(r,n,Ext.DomHelper.createHtml(q))}return p?Ext.get(l,true):l}function c(k,s){var m,v=document,q,t,n,u;if(Ext.isArray(k)){m=v.createDocumentFragment();for(var r=0,p=k.length;r<p;r++){c(k[r],m)}}else{if(typeof k=="string"){m=v.createTextNode(k)}else{m=v.createElement(k.tag||"div");q=!!m.setAttribute;for(var t in k){if(!b.test(t)){n=k[t];if(t=="cls"){m.className=n}else{if(q){m.setAttribute(t,n)}else{m[t]=n}}}}Ext.DomHelper.applyStyles(m,k.style);if((u=k.children||k.cn)){c(u,m)}else{if(k.html){m.innerHTML=k.html}}}}if(s){s.appendChild(m)}return m}e={createTemplate:function(l){var k=Ext.DomHelper.createHtml(l);return new Ext.Template(k)},useDom:false,insertBefore:function(k,m,l){return g(k,m,l,i)},insertAfter:function(k,m,l){return g(k,m,l,h,"nextSibling")},insertFirst:function(k,m,l){return g(k,m,l,a,"firstChild")},append:function(k,m,l){return g(k,m,l,d,"",true)},createDom:c};return e}());Ext.apply(Ext.Template.prototype,{disableFormats:false,re:/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,argsRe:/^\s*['"](.*)["']\s*$/,compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,applyTemplate:function(b){var g=this,a=g.disableFormats!==true,e=Ext.util.Format,c=g;if(g.compiled){return g.compiled(b)}function d(k,n,q,l){if(q&&a){if(q.substr(0,5)=="this."){return c.call(q.substr(5),b[n],b)}else{if(l){var p=g.argsRe;l=l.split(",");for(var o=0,h=l.length;o<h;o++){l[o]=l[o].replace(p,"$1")}l=[b[n]].concat(l)}else{l=[b[n]]}return e[q].apply(e,l)}}else{return b[n]!==undefined?b[n]:""}}return g.html.replace(g.re,d)},compile:function(){var me=this,fm=Ext.util.Format,useF=me.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(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+"'"}if(Ext.isGecko){body="this.compiled = function(values){ return '"+me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn)+"';};"}else{body=["this.compiled = function(values){ return ['"];body.push(me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn));body.push("'].join('');};");body=body.join("")}eval(body);return me},call:function(c,b,a){return this[c](b,a)}});Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.util.Functions={createInterceptor:function(c,b,a){var d=c;if(!Ext.isFunction(b)){return c}else{return function(){var g=this,e=arguments;b.target=g;b.method=c;return(b.apply(a||g||window,e)!==false)?c.apply(g||window,e):null}}},createDelegate:function(c,d,b,a){if(!Ext.isFunction(c)){return c}return function(){var g=b||arguments;if(a===true){g=Array.prototype.slice.call(arguments,0);g=g.concat(b)}else{if(Ext.isNumber(a)){g=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(g,e)}}return c.apply(d||window,g)}},defer:function(d,c,e,b,a){d=Ext.util.Functions.createDelegate(d,e,b,a);if(c>0){return setTimeout(d,c)}d();return 0},createSequence:function(c,b,a){if(!Ext.isFunction(b)){return c}else{return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}}}};Ext.defer=Ext.util.Functions.defer;Ext.createInterceptor=Ext.util.Functions.createInterceptor;Ext.createSequence=Ext.util.Functions.createSequence;Ext.createDelegate=Ext.util.Functions.createDelegate;Ext.apply(Ext.util.Observable.prototype,function(){function a(k){var i=(this.methodEvents=this.methodEvents||{})[k],d,c,g,h=this;if(!i){this.methodEvents[k]=i={};i.originalFn=this[k];i.methodName=k;i.before=[];i.after=[];var b=function(m,l,e){if((c=m.apply(l||h,e))!==undefined){if(typeof c=="object"){if(c.returnValue!==undefined){d=c.returnValue}else{d=c}g=!!c.cancel}else{if(c===false){g=true}else{d=c}}}};this[k]=function(){var m=Array.prototype.slice.call(arguments,0),l;d=c=undefined;g=false;for(var n=0,e=i.before.length;n<e;n++){l=i.before[n];b(l.fn,l.scope,m);if(g){return d}}if((c=i.originalFn.apply(h,m))!==undefined){d=c}for(var n=0,e=i.after.length;n<e;n++){l=i.after[n];b(l.fn,l.scope,m);if(g){return d}}return d}}return i}return{beforeMethod:function(d,c,b){a.call(this,d).before.push({fn:c,scope:b})},afterMethod:function(d,c,b){a.call(this,d).after.push({fn:c,scope:b})},removeMethodListener:function(k,g,d){var h=this.getMethodEvent(k);for(var c=0,b=h.before.length;c<b;c++){if(h.before[c].fn==g&&h.before[c].scope==d){h.before.splice(c,1);return}}for(var c=0,b=h.after.length;c<b;c++){if(h.after[c].fn==g&&h.after[c].scope==d){h.after.splice(c,1);return}}},relayEvents:function(k,e){var h=this;function g(i){return function(){return h.fireEvent.apply(h,[i].concat(Array.prototype.slice.call(arguments,0)))}}for(var d=0,b=e.length;d<b;d++){var c=e[d];h.events[c]=h.events[c]||true;k.on(c,g(c),h)}},enableBubble:function(e){var g=this;if(!Ext.isEmpty(e)){e=Ext.isArray(e)?e:Array.prototype.slice.call(arguments,0);for(var d=0,b=e.length;d<b;d++){var c=e[d];c=c.toLowerCase();var h=g.events[c]||true;if(typeof h=="boolean"){h=new Ext.util.Event(g,c);g.events[c]=h}h.bubble=true}}}}}());Ext.util.Observable.capture=function(c,b,a){c.fireEvent=c.fireEvent.createInterceptor(b,a)};Ext.util.Observable.observeClass=function(b,a){if(b){if(!b.fireEvent){Ext.apply(b,new Ext.util.Observable());Ext.util.Observable.capture(b.prototype,b.fireEvent,b)}if(typeof a=="object"){b.on(a)}return b}};Ext.apply(Ext.EventManager,function(){var c,k,e,b,a=Ext.lib.Dom,i=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,h=0,g=0,d=Ext.isWebKit?Ext.num(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1])>=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera);return{doResizeEvent:function(){var m=a.getViewHeight(),l=a.getViewWidth();if(g!=m||h!=l){c.fire(h=l,g=m)}},onWindowResize:function(n,m,l){if(!c){c=new Ext.util.Event();k=new Ext.util.DelayedTask(this.doResizeEvent);Ext.EventManager.on(window,"resize",this.fireWindowResize,this)}c.addListener(n,m,l)},fireWindowResize:function(){if(c){k.delay(100)}},onTextResize:function(o,n,l){if(!e){e=new Ext.util.Event();var m=new Ext.Element(document.createElement("div"));m.dom.className="x-text-resize";m.dom.innerHTML="X";m.appendTo(document.body);b=m.dom.offsetHeight;setInterval(function(){if(m.dom.offsetHeight!=b){e.fire(b,b=m.dom.offsetHeight)}},this.textResizeInterval)}e.addListener(o,n,l)},removeResizeListener:function(m,l){if(c){c.removeListener(m,l)}},fireResize:function(){if(c){c.fire(a.getViewWidth(),a.getViewHeight())}},textResizeInterval:50,ieDeferSrc:false,getKeyEvent:function(){return d?"keydown":"keypress"},useKeydown:d}}());Ext.EventManager.on=Ext.EventManager.addListener;Ext.apply(Ext.EventObjectImpl.prototype,{BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,CONTROL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGEUP:33,PAGE_DOWN:34,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1])},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)}});Ext.Element.addMethods({swallowEvent:function(a,b){var d=this;function c(g){g.stopPropagation();if(b){g.preventDefault()}}if(Ext.isArray(a)){Ext.each(a,function(g){d.on(g,c)});return d}d.on(a,c);return d},relayEvent:function(a,b){this.on(a,function(c){b.fireEvent(a,c)})},clean:function(b){var d=this,e=d.dom,g=e.firstChild,c=-1;if(Ext.Element.data(e,"isCleaned")&&b!==true){return d}while(g){var a=g.nextSibling;if(g.nodeType==3&&!(/\S/.test(g.nodeValue))){e.removeChild(g)}else{g.nodeIndex=++c}g=a}Ext.Element.data(e,"isCleaned",true);return d},load:function(){var a=this.getUpdater();a.update.apply(a,arguments);return this},getUpdater:function(){return this.updateManager||(this.updateManager=new Ext.Updater(this))},update:function(html,loadScripts,callback){if(!this.dom){return this}html=html||"";if(loadScripts!==true){this.dom.innerHTML=html;if(typeof callback=="function"){callback()}return this}var id=Ext.id(),dom=this.dom;html+='<span id="'+id+'"></span>';Ext.lib.Event.onAvailable(id,function(){var DOC=document,hd=DOC.getElementsByTagName("head")[0],re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,match,attrs,srcMatch,typeMatch,el,s;while((match=re.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];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])}}}}el=DOC.getElementById(id);if(el){Ext.removeNode(el)}if(typeof callback=="function"){callback()}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(a,e,d){a=(typeof a=="object")?a:{tag:"div",cls:a};var c=this,b=e?Ext.DomHelper.append(e,a,true):Ext.DomHelper.insertBefore(c.dom,a,true);if(d&&c.setBox&&c.getBox){b.setBox(c.getBox())}return b}});Ext.Element.prototype.getUpdateManager=Ext.Element.prototype.getUpdater;Ext.Element.addMethods({getAnchorXY:function(e,m,t){e=(e||"tl").toLowerCase();t=t||{};var l=this,b=l.dom==document.body||l.dom==document,p=t.width||b?Ext.lib.Dom.getViewWidth():l.getWidth(),i=t.height||b?Ext.lib.Dom.getViewHeight():l.getHeight(),q,a=Math.round,c=l.getXY(),n=l.getScroll(),k=b?n.left:!m?c[0]:0,g=b?n.top:!m?c[1]:0,d={c:[a(p*0.5),a(i*0.5)],t:[a(p*0.5),0],l:[0,a(i*0.5)],r:[p,a(i*0.5)],b:[a(p*0.5),i],tl:[0,0],bl:[0,i],br:[p,i],tr:[p,0]};q=d[e];return[q[0]+k,q[1]+g]},anchorTo:function(b,h,c,a,l,m){var i=this,e=i.dom,k=!Ext.isEmpty(l),d=function(){Ext.fly(e).alignTo(b,h,c,a);Ext.callback(m,Ext.fly(e))},g=this.getAnchor();this.removeAnchor();Ext.apply(g,{fn:d,scroll:k});Ext.EventManager.onWindowResize(d,null);if(k){Ext.EventManager.on(window,"scroll",d,null,{buffer:!isNaN(l)?l:50})}d.call(i);return i},removeAnchor:function(){var b=this,a=this.getAnchor();if(a&&a.fn){Ext.EventManager.removeResizeListener(a.fn);if(a.scroll){Ext.EventManager.un(window,"scroll",a.fn)}delete a.fn}return b},getAnchor:function(){var b=Ext.Element.data,c=this.dom;if(!c){return}var a=b(c,"_anchor");if(!a){a=b(c,"_anchor",{})}return a},getAlignToXY:function(g,B,C){g=Ext.get(g);if(!g||!g.dom){throw"Element.alignToXY with an element that doesn't exist"}C=C||[0,0];B=(!B||B=="?"?"tl-bl?":(!(/-/).test(B)&&B!==""?"tl-"+B:B||"tl-bl")).toLowerCase();var L=this,I=L.dom,N,M,q,n,t,G,z,u=Ext.lib.Dom.getViewWidth()-10,H=Ext.lib.Dom.getViewHeight()-10,b,i,k,l,v,A,O=document,K=O.documentElement,s=O.body,F=(K.scrollLeft||s.scrollLeft||0)+5,E=(K.scrollTop||s.scrollTop||0)+5,J=false,e="",a="",D=B.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!D){throw"Element.alignTo with an invalid alignment "+B}e=D[1];a=D[2];J=!!D[3];N=L.getAnchorXY(e,true);M=g.getAnchorXY(a,false);q=M[0]-N[0]+C[0];n=M[1]-N[1]+C[1];if(J){t=L.getWidth();G=L.getHeight();z=g.getRegion();b=e.charAt(0);i=e.charAt(e.length-1);k=a.charAt(0);l=a.charAt(a.length-1);v=((b=="t"&&k=="b")||(b=="b"&&k=="t"));A=((i=="r"&&l=="l")||(i=="l"&&l=="r"));if(q+t>u+F){q=A?z.left-t:u+F-t}if(q<F){q=A?z.right:F}if(n+G>H+E){n=v?z.top-G:H+E-G}if(n<E){n=v?z.bottom:E}}return[q,n]},alignTo:function(c,a,e,b){var d=this;return d.setXY(d.getAlignToXY(c,a,e),d.preanim&&!!b?d.preanim(arguments,3):false)},adjustForConstraints:function(c,a,b){return this.getConstrainToXY(a||document,false,b,c)||c},getConstrainToXY:function(b,a,c,e){var d={top:0,left:0,bottom:0,right:0};return function(i,B,m,o){i=Ext.get(i);m=m?Ext.applyIf(m,d):d;var A,E,z=0,v=0;if(i.dom==document.body||i.dom==document){A=Ext.lib.Dom.getViewWidth();E=Ext.lib.Dom.getViewHeight()}else{A=i.dom.clientWidth;E=i.dom.clientHeight;if(!B){var u=i.getXY();z=u[0];v=u[1]}}var t=i.getScroll();z+=m.left+t.left;v+=m.top+t.top;A-=m.right;E-=m.bottom;var C=z+A,g=v+E,k=o||(!B?this.getXY():[this.getLeft(true),this.getTop(true)]),q=k[0],p=k[1],l=this.getConstrainOffset(),r=this.dom.offsetWidth+l,D=this.dom.offsetHeight+l;var n=false;if((q+r)>C){q=C-r;n=true}if((p+D)>g){p=g-D;n=true}if(q<z){q=z;n=true}if(p<v){p=v;n=true}return n?[q,p]:false}}(),getConstrainOffset:function(){return 0},getCenterXY:function(){return this.getAlignToXY(document,"c-c")},center:function(a){return this.alignTo(a||document,"c-c")}});Ext.Element.addMethods({select:function(a,b){return Ext.Element.select(a,b,this.dom)}});Ext.apply(Ext.Element.prototype,function(){var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;return{insertSibling:function(i,g,h){var k=this,e,d=(g||"before").toLowerCase()=="after",l;if(Ext.isArray(i)){l=k;Ext.each(i,function(m){e=Ext.fly(l,"_internal").insertSibling(m,g,h);if(d){l=e}});return e}i=i||{};if(i.nodeType||i.dom){e=k.dom.parentNode.insertBefore(c(i),d?k.dom.nextSibling:k.dom);if(!h){e=a(e)}}else{if(d&&!k.dom.nextSibling){e=b.append(k.dom.parentNode,i,!h)}else{e=b[d?"insertAfter":"insertBefore"](k.dom,i,!h)}}return e}}}());Ext.Element.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';Ext.Element.addMethods(function(){var a="_internal",b=/(\d+\.?\d+)px/;return{applyStyles:function(c){Ext.DomHelper.applyStyles(this.dom,c);return this},getStyles:function(){var c={};Ext.each(arguments,function(d){c[d]=this.getStyle(d)},this);return c},setOverflow:function(c){var d=this.dom;if(c=="auto"&&Ext.isMac&&Ext.isGecko2){d.style.overflow="hidden";(function(){d.style.overflow="auto"}).defer(1)}else{d.style.overflow=c}},boxWrap:function(c){c=c||"x-box";var d=Ext.get(this.insertHtml("beforeBegin","<div class='"+c+"'>"+String.format(Ext.Element.boxMarkup,c)+"</div>"));Ext.DomQuery.selectNode("."+c+"-mc",d.dom).appendChild(this.dom);return d},setSize:function(e,c,d){var g=this;if(typeof e=="object"){c=e.height;e=e.width}e=g.adjustWidth(e);c=g.adjustHeight(c);if(!d||!g.anim){g.dom.style.width=g.addUnits(e);g.dom.style.height=g.addUnits(c)}else{g.anim({width:{to:e},height:{to:c}},g.preanim(arguments,2))}return g},getComputedHeight:function(){var d=this,c=Math.max(d.dom.offsetHeight,d.dom.clientHeight);if(!c){c=parseFloat(d.getStyle("height"))||0;if(!d.isBorderBox()){c+=d.getFrameWidth("tb")}}return c},getComputedWidth:function(){var c=Math.max(this.dom.offsetWidth,this.dom.clientWidth);if(!c){c=parseFloat(this.getStyle("width"))||0;if(!this.isBorderBox()){c+=this.getFrameWidth("lr")}}return c},getFrameWidth:function(d,c){return c&&this.isBorderBox()?0:(this.getPadding(d)+this.getBorderWidth(d))},addClassOnOver:function(c){this.hover(function(){Ext.fly(this,a).addClass(c)},function(){Ext.fly(this,a).removeClass(c)});return this},addClassOnFocus:function(c){this.on("focus",function(){Ext.fly(this,a).addClass(c)},this.dom);this.on("blur",function(){Ext.fly(this,a).removeClass(c)},this.dom);return this},addClassOnClick:function(c){var d=this.dom;this.on("mousedown",function(){Ext.fly(d,a).addClass(c);var g=Ext.getDoc(),e=function(){Ext.fly(d,a).removeClass(c);g.removeListener("mouseup",e)};g.on("mouseup",e)});return this},getViewSize:function(){var g=document,h=this.dom,c=(h==g||h==g.body);if(c){var e=Ext.lib.Dom;return{width:e.getViewWidth(),height:e.getViewHeight()}}else{return{width:h.clientWidth,height:h.clientHeight}}},getStyleSize:function(){var k=this,c,i,m=document,n=this.dom,e=(n==m||n==m.body),g=n.style;if(e){var l=Ext.lib.Dom;return{width:l.getViewWidth(),height:l.getViewHeight()}}if(g.width&&g.width!="auto"){c=parseFloat(g.width);if(k.isBorderBox()){c-=k.getFrameWidth("lr")}}if(g.height&&g.height!="auto"){i=parseFloat(g.height);if(k.isBorderBox()){i-=k.getFrameWidth("tb")}}return{width:c||k.getWidth(true),height:i||k.getHeight(true)}},getSize:function(c){return{width:this.getWidth(c),height:this.getHeight(c)}},repaint:function(){var c=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.fly(c).removeClass("x-repaint")},1);return this},unselectable:function(){this.dom.unselectable="on";return this.swallowEvent("selectstart",true).applyStyles("-moz-user-select:none;-khtml-user-select:none;").addClass("x-unselectable")},getMargins:function(d){var e=this,c,g={t:"top",l:"left",r:"right",b:"bottom"},h={};if(!d){for(c in e.margins){h[g[c]]=parseFloat(e.getStyle(e.margins[c]))||0}return h}else{return e.addStyles.call(e,d,e.margins)}}}}());Ext.Element.addMethods({setBox:function(e,g,b){var d=this,a=e.width,c=e.height;if((g&&!d.autoBoxAdjust)&&!d.isBorderBox()){a-=(d.getBorderWidth("lr")+d.getPadding("lr"));c-=(d.getBorderWidth("tb")+d.getPadding("tb"))}d.setBounds(e.x,e.y,a,c,d.animTest.call(d,arguments,b,2));return d},getBox:function(k,q){var n=this,x,e,p,d=n.getBorderWidth,s=n.getPadding,g,a,v,o;if(!q){x=n.getXY()}else{e=parseInt(n.getStyle("left"),10)||0;p=parseInt(n.getStyle("top"),10)||0;x=[e,p]}var c=n.dom,u=c.offsetWidth,i=c.offsetHeight,m;if(!k){m={x:x[0],y:x[1],0:x[0],1:x[1],width:u,height:i}}else{g=d.call(n,"l")+s.call(n,"l");a=d.call(n,"r")+s.call(n,"r");v=d.call(n,"t")+s.call(n,"t");o=d.call(n,"b")+s.call(n,"b");m={x:x[0]+g,y:x[1]+v,0:x[0]+g,1:x[1]+v,width:u-(g+a),height:i-(v+o)}}m.right=m.x+m.width;m.bottom=m.y+m.height;return m},move:function(k,b,c){var g=this,n=g.getXY(),l=n[0],i=n[1],d=[l-b,i],m=[l+b,i],h=[l,i-b],a=[l,i+b],e={l:d,left:d,r:m,right:m,t:h,top:h,up:h,b:a,bottom:a,down:a};k=k.toLowerCase();g.moveTo(e[k][0],e[k][1],g.animTest.call(g,arguments,c,2))},setLeftTop:function(d,c){var b=this,a=b.dom.style;a.left=b.addUnits(d);a.top=b.addUnits(c);return b},getRegion:function(){return Ext.lib.Dom.getRegion(this.dom)},setBounds:function(b,g,d,a,c){var e=this;if(!c||!e.anim){e.setSize(d,a);e.setLocation(b,g)}else{e.anim({points:{to:[b,g]},width:{to:e.adjustWidth(d)},height:{to:e.adjustHeight(a)}},e.preanim(arguments,4),"motion")}return e},setRegion:function(b,a){return this.setBounds(b.left,b.top,b.right-b.left,b.bottom-b.top,this.animTest.call(this,arguments,a,1))}});Ext.Element.addMethods({scrollTo:function(b,d,a){var e=/top/i.test(b),c=this,g=c.dom,h;if(!a||!c.anim){h="scroll"+(e?"Top":"Left");g[h]=d}else{h="scroll"+(e?"Left":"Top");c.anim({scroll:{to:e?[g[h],d]:[d,g[h]]}},c.preanim(arguments,2),"scroll")}return c},scrollIntoView:function(e,i){var q=Ext.getDom(e)||Ext.getBody().dom,h=this.dom,g=this.getOffsetsTo(q),m=g[0]+q.scrollLeft,v=g[1]+q.scrollTop,s=v+h.offsetHeight,d=m+h.offsetWidth,a=q.clientHeight,n=parseInt(q.scrollTop,10),u=parseInt(q.scrollLeft,10),k=n+a,p=u+q.clientWidth;if(h.offsetHeight>a||v<n){q.scrollTop=v}else{if(s>k){q.scrollTop=s-a}}q.scrollTop=q.scrollTop;if(i!==false){if(h.offsetWidth>q.clientWidth||m<u){q.scrollLeft=m}else{if(d>p){q.scrollLeft=d-q.clientWidth}}q.scrollLeft=q.scrollLeft}return this},scrollChildIntoView:function(b,a){Ext.fly(b,"_scrollChildIntoView").scrollIntoView(this,a)},scroll:function(n,b,d){if(!this.isScrollable()){return false}var e=this.dom,g=e.scrollLeft,q=e.scrollTop,o=e.scrollWidth,m=e.scrollHeight,i=e.clientWidth,a=e.clientHeight,c=false,p,k={l:Math.min(g+b,o-i),r:p=Math.max(g-b,0),t:Math.max(q-b,0),b:Math.min(q+b,m-a)};k.d=k.b;k.u=k.t;n=n.substr(0,1);if((p=k[n])>-1){c=true;this.scrollTo(n=="l"||n=="r"?"left":"top",p,this.preanim(arguments,2))}return c}});Ext.Element.addMethods(function(){var d="visibility",b="display",a="hidden",h="none",c="x-masked",g="x-masked-relative",e=Ext.Element.data;return{isVisible:function(i){var k=!this.isStyle(d,a)&&!this.isStyle(b,h),l=this.dom.parentNode;if(i!==true||!k){return k}while(l&&!(/^body/i.test(l.tagName))){if(!Ext.fly(l,"_isVisible").isVisible()){return false}l=l.parentNode}return true},isDisplayed:function(){return !this.isStyle(b,h)},enableDisplayMode:function(i){this.setVisibilityMode(Ext.Element.DISPLAY);if(!Ext.isEmpty(i)){e(this.dom,"originalDisplay",i)}return this},mask:function(k,o){var q=this,m=q.dom,p=Ext.DomHelper,n="ext-el-mask-msg",i,r;if(!(/^body/i.test(m.tagName)&&q.getStyle("position")=="static")){q.addClass(g)}if(i=e(m,"maskMsg")){i.remove()}if(i=e(m,"mask")){i.remove()}r=p.append(m,{cls:"ext-el-mask"},true);e(m,"mask",r);q.addClass(c);r.setDisplayed(true);if(typeof k=="string"){var l=p.append(m,{cls:n,cn:{tag:"div"}},true);e(m,"maskMsg",l);l.dom.className=o?n+" "+o:n;l.dom.firstChild.innerHTML=k;l.setDisplayed(true);l.center(q)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&q.getStyle("height")=="auto"){r.setSize(undefined,q.getHeight())}return r},unmask:function(){var l=this,m=l.dom,i=e(m,"mask"),k=e(m,"maskMsg");if(i){if(k){k.remove();e(m,"maskMsg",undefined)}i.remove();e(m,"mask",undefined);l.removeClass([c,g])}},isMasked:function(){var i=e(this.dom,"mask");return i&&i.isVisible()},createShim:function(){var i=document.createElement("iframe"),k;i.frameBorder="0";i.className="ext-shim";i.src=Ext.SSL_SECURE_URL;k=Ext.get(this.dom.parentNode.insertBefore(i,this.dom));k.autoBoxAdjust=false;return k}}}());Ext.Element.addMethods({addKeyListener:function(b,d,c){var a;if(typeof b!="object"||Ext.isArray(b)){a={key:b,fn:d,scope:c}}else{a={key:b.key,shift:b.shift,ctrl:b.ctrl,alt:b.alt,fn:d,scope:c}}return new Ext.KeyMap(this,a)},addKeyMap:function(a){return new Ext.KeyMap(this,a)}});Ext.CompositeElementLite.importElementMethods();Ext.apply(Ext.CompositeElementLite.prototype,{addElements:function(c,a){if(!c){return this}if(typeof c=="string"){c=Ext.Element.selectorFunction(c,a)}var b=this.elements;Ext.each(c,function(d){b.push(Ext.get(d))});return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},removeElement:function(d,e){var c=this,a=this.elements,b;Ext.each(d,function(g){if((b=(a[g]||a[g=c.indexOf(g)]))){if(e){if(b.dom){b.remove()}else{Ext.removeNode(b)}}a.splice(g,1)}});return this}});Ext.CompositeElement=Ext.extend(Ext.CompositeElementLite,{constructor:function(b,a){this.elements=[];this.add(b,a)},getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}});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"}}return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)};Ext.select=Ext.Element.select;Ext.UpdateManager=Ext.Updater=Ext.extend(Ext.util.Observable,function(){var b="beforeupdate",d="update",c="failure";function a(h){var i=this;i.transaction=null;if(h.argument.form&&h.argument.reset){try{h.argument.form.reset()}catch(k){}}if(i.loadScripts){i.renderer.render(i.el,h,i,g.createDelegate(i,[h]))}else{i.renderer.render(i.el,h,i);g.call(i,h)}}function g(h,i,k){this.fireEvent(i||d,this.el,h);if(Ext.isFunction(h.argument.callback)){h.argument.callback.call(h.argument.scope,this.el,Ext.isEmpty(k)?true:false,h,h.argument.options)}}function e(h){g.call(this,h,c,!!(this.transaction=null))}return{constructor:function(i,h){var k=this;i=Ext.get(i);if(!h&&i.updateManager){return i.updateManager}k.el=i;k.defaultUrl=null;k.addEvents(b,d,c);Ext.apply(k,Ext.Updater.defaults);k.transaction=null;k.refreshDelegate=k.refresh.createDelegate(k);k.updateDelegate=k.update.createDelegate(k);k.formUpdateDelegate=(k.formUpdate||function(){}).createDelegate(k);k.renderer=k.renderer||k.getDefaultRenderer();Ext.Updater.superclass.constructor.call(k)},setRenderer:function(h){this.renderer=h},getRenderer:function(){return this.renderer},getDefaultRenderer:function(){return new Ext.Updater.BasicRenderer()},setDefaultUrl:function(h){this.defaultUrl=h},getEl:function(){return this.el},update:function(i,p,q,m){var l=this,h,k;if(l.fireEvent(b,l.el,i,p)!==false){if(Ext.isObject(i)){h=i;i=h.url;p=p||h.params;q=q||h.callback;m=m||h.discardUrl;k=h.scope;if(!Ext.isEmpty(h.nocache)){l.disableCaching=h.nocache}if(!Ext.isEmpty(h.text)){l.indicatorText='<div class="loading-indicator">'+h.text+"</div>"}if(!Ext.isEmpty(h.scripts)){l.loadScripts=h.scripts}if(!Ext.isEmpty(h.timeout)){l.timeout=h.timeout}}l.showLoading();if(!m){l.defaultUrl=i}if(Ext.isFunction(i)){i=i.call(l)}var n=Ext.apply({},{url:i,params:(Ext.isFunction(p)&&k)?p.createDelegate(k):p,success:a,failure:e,scope:l,callback:undefined,timeout:(l.timeout*1000),disableCaching:l.disableCaching,argument:{options:h,url:i,form:null,callback:q,scope:k||window,params:p}},h);l.transaction=Ext.Ajax.request(n)}},formUpdate:function(l,h,k,m){var i=this;if(i.fireEvent(b,i.el,l,h)!==false){if(Ext.isFunction(h)){h=h.call(i)}l=Ext.getDom(l);i.transaction=Ext.Ajax.request({form:l,url:h,success:a,failure:e,scope:i,timeout:(i.timeout*1000),argument:{url:h,form:l,callback:m,reset:k}});i.showLoading.defer(1,i)}},startAutoRefresh:function(i,k,m,n,h){var l=this;if(h){l.update(k||l.defaultUrl,m,n,true)}if(l.autoRefreshProcId){clearInterval(l.autoRefreshProcId)}l.autoRefreshProcId=setInterval(l.update.createDelegate(l,[k||l.defaultUrl,m,n,true]),i*1000)},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId}},isAutoRefreshing:function(){return !!this.autoRefreshProcId},showLoading:function(){if(this.showLoadIndicator){this.el.dom.innerHTML=this.indicatorText}},abort:function(){if(this.transaction){Ext.Ajax.abort(this.transaction)}},isUpdating:function(){return this.transaction?Ext.Ajax.isLoading(this.transaction):false},refresh:function(h){if(this.defaultUrl){this.update(this.defaultUrl,null,h,true)}}}}());Ext.Updater.defaults={timeout:30,disableCaching:false,showLoadIndicator:true,indicatorText:'<div class="loading-indicator">Loading...</div>',loadScripts:false,sslBlankUrl:Ext.SSL_SECURE_URL};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.BasicRenderer=function(){};Ext.Updater.BasicRenderer.prototype={render:function(c,a,b,d){c.update(a.responseText,b.loadScripts,d)}};(function(){Date.useStrict=false;function b(d){var c=Array.prototype.slice.call(arguments,1);return d.replace(/\{(\d+)\}/g,function(e,g){return c[g]})}Date.formatCodeToRegex=function(d,c){var e=Date.parseCodes[d];if(e){e=typeof e=="function"?e():e;Date.parseCodes[d]=e}return e?Ext.applyIf({c:e.c?b(e.c,c||"{0}"):e.c},e):{g:0,c:null,s:Ext.escapeRe(d)}};var a=Date.formatCodeToRegex;Ext.apply(Date,{parseFunctions:{"M$":function(d,c){var e=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/");var g=(d||"").match(e);return g?new Date(((g[1]||"")+g[2])*1):null}},parseRegexes:[],formatFunctions:{"M$":function(){return"\\/Date("+this.getTime()+")\\/"}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},getShortMonthName:function(c){return Date.monthNames[c].substring(0,3)},getShortDayName:function(c){return Date.dayNames[c].substring(0,3)},getMonthNumber:function(c){return Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]},formatCodes:{d:"String.leftPad(this.getDate(), 2, '0')",D:"Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"this.getSuffix()",w:"this.getDay()",z:"this.getDayOfYear()",W:"String.leftPad(this.getWeekOfYear(), 2, '0')",F:"Date.monthNames[this.getMonth()]",m:"String.leftPad(this.getMonth() + 1, 2, '0')",M:"Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"this.getDaysInMonth()",L:"(this.isLeapYear() ? 1 : 0)",o:"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"String.leftPad(this.getHours(), 2, '0')",i:"String.leftPad(this.getMinutes(), 2, '0')",s:"String.leftPad(this.getSeconds(), 2, '0')",u:"String.leftPad(this.getMilliseconds(), 3, '0')",O:"this.getGMTOffset()",P:"this.getGMTOffset(true)",T:"this.getTimezone()",Z:"(this.getTimezoneOffset() * -60)",c:function(){for(var m="Y-m-dTH:i:sP",h=[],g=0,d=m.length;g<d;++g){var k=m.charAt(g);h.push(k=="T"?"'T'":Date.getFormatCode(k))}return h.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(p,c,o,l,g,k,e){l=l||0;g=g||0;k=k||0;e=e||0;var n=new Date(p<100?100:p,c-1,o,l,g,k,e).add(Date.YEAR,p<100?p-100:0);return p==n.getFullYear()&&c==n.getMonth()+1&&o==n.getDate()&&l==n.getHours()&&g==n.getMinutes()&&k==n.getSeconds()&&e==n.getMilliseconds()},parseDate:function(d,g,c){var e=Date.parseFunctions;if(e[g]==null){Date.createParser(g)}return e[g](d,Ext.isDefined(c)?c:Date.useStrict)},getFormatCode:function(d){var c=Date.formatCodes[d];if(c){c=typeof c=="function"?c():c;Date.formatCodes[d]=c}return c||("'"+String.escape(d)+"'")},createFormat:function(h){var g=[],c=false,e="";for(var d=0;d<h.length;++d){e=h.charAt(d);if(!c&&e=="\\"){c=true}else{if(c){c=false;g.push("'"+String.escape(e)+"'")}else{g.push(Date.getFormatCode(e))}}}Date.formatFunctions[h]=new Function("return "+g.join("+"))},createParser:function(){var c=["var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,","def = Date.defaults,","results = String(input).match(Date.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = (new Date()).clearTime();","y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));","m = Ext.num(m, Ext.num(def.m - 1, dt.getMonth()));","d = Ext.num(d, Ext.num(def.d, dt.getDate()));","h  = Ext.num(h, Ext.num(def.h, dt.getHours()));","i  = Ext.num(i, Ext.num(def.i, dt.getMinutes()));","s  = Ext.num(s, Ext.num(def.s, dt.getSeconds()));","ms = Ext.num(ms, Ext.num(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);","}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","v = new Date(y < 100 ? 100 : y, m, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","}","}","}","if(v){","if(zz != null){","v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");return function(n){var e=Date.parseRegexes.length,p=1,g=[],m=[],l=false,d="",k=0,h,o;for(;k<n.length;++k){d=n.charAt(k);if(!l&&d=="\\"){l=true}else{if(l){l=false;m.push(String.escape(d))}else{h=a(d,p);p+=h.g;m.push(h.s);if(h.g&&h.c){if(h.calcLast){o=h.c}else{g.push(h.c)}}}}}if(o){g.push(o)}Date.parseRegexes[e]=new RegExp("^"+m.join("")+"$","i");Date.parseFunctions[n]=new Function("input","strict",b(c,e,g.join("")))}}(),parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},D:function(){for(var c=[],d=0;d<7;c.push(Date.getShortDayName(d)),++d){}return{g:0,c:null,s:"(?:"+c.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:0,c:null,s:"(?:\\d{2})"},F:function(){return{g:1,c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n",s:"("+Date.monthNames.join("|")+")"}},M:function(){for(var c=[],d=0;d<12;c.push(Date.getShortMonthName(d)),++d){}return Ext.applyIf({s:"("+c.join("|")+")"},a("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{2})"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{1,2})"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:function(){return a("Y")},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:function(){return a("A")},A:{calcLast:true,g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)"},g:function(){return a("G")},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},h:function(){return a("H")},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,4}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var e=[],c=[a("Y",1),a("m",2),a("d",3),a("h",4),a("i",5),a("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",a("P",8).c,"}else{",a("O",8).c,"}","}"].join("\n")}];for(var g=0,d=c.length;g<d;++g){e.push(c[g].c)}return{g:1,c:e.join(""),s:[c[0].s,"(?:","-",c[1].s,"(?:","-",c[2].s,"(?:","(?:T| )?",c[3].s,":",c[4].s,"(?::",c[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}}})}());Ext.apply(Date.prototype,{dateFormat:function(a){if(Date.formatFunctions[a]==null){Date.createFormat(a)}return Date.formatFunctions[a].call(this)},getTimezone:function(){return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(a){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+(a?":":"")+String.leftPad(Math.abs(this.getTimezoneOffset()%60),2,"0")},getDayOfYear:function(){var b=0,e=this.clone(),a=this.getMonth(),c;for(c=0,e.setDate(1),e.setMonth(0);c<a;e.setMonth(++c)){b+=e.getDaysInMonth()}return b+this.getDate()-1},getWeekOfYear:function(){var a=86400000,b=7*a;return function(){var d=Date.UTC(this.getFullYear(),this.getMonth(),this.getDate()+3)/a,c=Math.floor(d/7),e=new Date(c*b).getUTCFullYear();return c-Math.floor(Date.UTC(e,0,7)/b)+1}}(),isLeapYear:function(){var a=this.getFullYear();return !!((a&3)==0&&(a%100||(a%400==0&&a)))},getFirstDayOfMonth:function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a},getLastDayOfMonth:function(){return this.getLastDateOfMonth().getDay()},getFirstDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),1)},getLastDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth())},getDaysInMonth:function(){var a=[31,28,31,30,31,30,31,31,30,31,30,31];return function(){var b=this.getMonth();return b==1&&this.isLeapYear()?29:a[b]}}(),getSuffix:function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(){return new Date(this.getTime())},isDST:function(){return new Date(this.getFullYear(),0,1).getTimezoneOffset()!=this.getTimezoneOffset()},clearTime:function(g){if(g){return this.clone().clearTime()}var b=this.getDate();this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);if(this.getDate()!=b){for(var a=1,e=this.add(Date.HOUR,a);e.getDate()!=b;a++,e=this.add(Date.HOUR,a)){}this.setDate(b);this.setHours(e.getHours())}return this},add:function(b,c){var e=this.clone();if(!b||c===0){return e}switch(b.toLowerCase()){case Date.MILLI:e.setMilliseconds(this.getMilliseconds()+c);break;case Date.SECOND:e.setSeconds(this.getSeconds()+c);break;case Date.MINUTE:e.setMinutes(this.getMinutes()+c);break;case Date.HOUR:e.setHours(this.getHours()+c);break;case Date.DAY:e.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())}e.setDate(a);e.setMonth(this.getMonth()+c);break;case Date.YEAR:e.setFullYear(this.getFullYear()+c);break}return e},between:function(c,a){var b=this.getTime();return c.getTime()<=b&&b<=a.getTime()}});Date.prototype.format=Date.prototype.dateFormat;if(Ext.isSafari&&(navigator.userAgent.match(/WebKit\/(\d+)/)[1]||NaN)<420){Ext.apply(Date.prototype,{_xMonth:Date.prototype.setMonth,_xDate:Date.prototype.setDate,setMonth:function(a){if(a<=-1){var d=Math.ceil(-a),c=Math.ceil(d/12),b=(d%12)?12-d%12:0;this.setFullYear(this.getFullYear()-c);return this._xMonth(b)}else{return this._xMonth(a)}},setDate:function(a){return this.setTime(this.getTime()-(this.getDate()-a)*86400000)}})}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){var a=this.map[b];if(typeof a!="undefined"){return this.replace(b,c)}this.map[b]=c}this.length++;this.items.push(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.map[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(this.containsKey(b)){this.suspendEvents();this.removeKey(b);this.resumeEvents()}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(b){var a=this.map[b],c=a!==undefined?a:(typeof b=="number")?this.items[b]:undefined;return typeof c!="function"||this.allowFunctions?c: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(l,a,k){var d,e,b=String(a).toUpperCase()=="DESC"?-1:1,h=[],m=this.keys,g=this.items;k=k||function(i,c){return i-c};for(d=0,e=g.length;d<e;d++){h[h.length]={key:m[d],value:g[d],index:d}}h.sort(function(i,c){var n=k(i[l],c[l])*b;if(n===0){n=(i.index<c.index?-1:1)}return n});for(d=0,e=h.length;d<e;d++){g[d]=h[d].value;m[d]=h[d].key}this.fireEvent("sort",this)},sort:function(a,b){this._sort("value",a,b)},reorder:function(d){this.suspendEvents();var b=this.items,c=0,g=b.length,a=[],e=[],h;for(h in d){a[d[h]]=b[h]}for(c=0;c<g;c++){if(d[c]==undefined){e.push(b[c])}}for(c=0;c<g;c++){if(a[c]==undefined){a[c]=e.shift()}}this.clear();this.addAll(a);this.resumeEvents();this.fireEvent("sort",this)},keySort:function(a,b){this._sort("key",a,b||function(d,c){var g=String(d).toUpperCase(),e=String(c).toUpperCase();return g>e?1:(g<e?-1:0)})},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 c,d=[];if(e<=a){for(c=e;c<=a;c++){d[d.length]=b[c]}}else{for(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(g,e){var h=new Ext.util.MixedCollection();h.getKey=this.getKey;var b=this.keys,d=this.items;for(var c=0,a=d.length;c<a;c++){if(g.call(e||this,d[c],b[c])){h.add(b[c],d[c])}}return h},findIndex:function(c,b,e,d,a){if(Ext.isEmpty(b,false)){return -1}b=this.createValueMatcher(b,d,a);return this.findIndexBy(function(g){return g&&b.test(g[c])},null,e)},findIndexBy:function(g,e,h){var b=this.keys,d=this.items;for(var c=(h||0),a=d.length;c<a;c++){if(g.call(e||this,d[c],b[c])){return c}}return -1},createValueMatcher:function(c,e,a,b){if(!c.exec){var d=Ext.escapeRe;c=String(c);if(e===true){c=d(c)}else{c="^"+d(c);if(b===true){c+="$"}}c=new RegExp(c,a?"":"i")}return c},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.AbstractManager=Ext.extend(Object,{typeName:"type",constructor:function(a){Ext.apply(this,a||{});this.all=new Ext.util.MixedCollection();this.types={}},get:function(a){return this.all.get(a)},register:function(a){this.all.add(a)},unregister:function(a){this.all.remove(a)},registerType:function(b,a){this.types[b]=a;a[this.typeName]=b},isRegistered:function(a){return this.types[a]!==undefined},create:function(a,d){var b=a[this.typeName]||a.type||d,c=this.types[b];if(c==undefined){throw new Error(String.format("The '{0}' type has not been registered with this manager",b))}return new c(a)},onAvailable:function(d,c,b){var a=this.all;a.on("add",function(e,g){if(g.id==d){c.call(b||g,g);a.un("add",c,b)}})}});Ext.util.Format=function(){var trimRe=/^\s+|\s+$/g,stripTagsRE=/<\/?[^>]+>/gi,stripScriptsRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,nl2brRe=/\r?\n/g;return{ellipsis:function(value,len,word){if(value&&value.length>len){if(word){var vs=value.substr(0,len-2),index=Math.max(vs.lastIndexOf(" "),vs.lastIndexOf("."),vs.lastIndexOf("!"),vs.lastIndexOf("?"));if(index==-1||index<(len-15)){return value.substr(0,len-3)+"..."}else{return vs.substr(0,index)+"..."}}else{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,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;")},htmlDecode:function(value){return !value?value:String(value).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&amp;/g,"&")},trim:function(value){return String(value).replace(trimRe,"")},substr:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},uppercase:function(value){return String(value).toUpperCase()},capitalize:function(value){return !value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase()},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);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("."),whole=ps[0],sub=ps[1]?"."+ps[1]:".00",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)}},stripTags:function(v){return !v?v:String(v).replace(stripTagsRE,"")},stripScripts:function(v){return !v?v:String(v).replace(stripScriptsRe,"")},fileSize:function(size){if(size<1024){return size+" bytes"}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)}}(),round:function(value,precision){var result=Number(value);if(typeof precision=="number"){precision=Math.pow(10,precision);result=Math.round(value*precision)/precision}return result},number:function(v,format){if(!format){return v}v=Ext.num(v,NaN);if(isNaN(v)){return""}var comma=",",dec=".",i18n=false,neg=v<0;v=Math.abs(v);if(format.substr(format.length-2)=="/i"){format=format.substr(0,format.length-2);i18n=true;comma=".";dec=","}var hasComma=format.indexOf(comma)!=-1,psplit=(i18n?format.replace(/[^\d\,]/g,""):format.replace(/[^\d\.]/g,"")).split(dec);if(1<psplit.length){v=v.toFixed(psplit[1].length)}else{if(2<psplit.length){throw ("NumberFormatException: invalid format, formats should have no more than 1 period: "+format)}else{v=v.toFixed(0)}}var fnum=v.toString();psplit=fnum.split(".");if(hasComma){var cnum=psplit[0],parr=[],j=cnum.length,m=Math.floor(j/3),n=cnum.length%3||3,i;for(i=0;i<j;i+=n){if(i!=0){n=3}parr[parr.length]=cnum.substr(i,n);m-=1}fnum=parr.join(comma);if(psplit[1]){fnum+=dec+psplit[1]}}else{if(psplit[1]){fnum=psplit[0]+dec+psplit[1]}}return(neg?"-":"")+format.replace(/[\d,?\.?]+/,fnum)},numberRenderer:function(format){return function(v){return Ext.util.Format.number(v,format)}},plural:function(v,s,p){return v+" "+(v==1?s:(p?p:s+"s"))},nl2br:function(v){return Ext.isEmpty(v)?"":v.replace(nl2brRe,"<br/>")}}}();Ext.XTemplate=function(){Ext.XTemplate.superclass.constructor.apply(this,arguments);var z=this,k=z.html,r=/<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,d=/^<tpl\b[^>]*?for="(.*?)"/,w=/^<tpl\b[^>]*?if="(.*?)"/,y=/^<tpl\b[^>]*?exec="(.*?)"/,t,q=0,l=[],p="values",x="parent",n="xindex",o="xcount",e="return ",c="with(values){ ";k=["<tpl>",k,"</tpl>"].join("");while((t=k.match(r))){var b=t[0].match(d),a=t[0].match(w),B=t[0].match(y),g=null,h=null,u=null,A=b&&b[1]?b[1]:"";if(a){g=a&&a[1]?a[1]:null;if(g){h=new Function(p,x,n,o,c+e+(Ext.util.Format.htmlDecode(g))+"; }")}}if(B){g=B&&B[1]?B[1]:null;if(g){u=new Function(p,x,n,o,c+(Ext.util.Format.htmlDecode(g))+"; }")}}if(A){switch(A){case".":A=new Function(p,x,c+e+p+"; }");break;case"..":A=new Function(p,x,c+e+x+"; }");break;default:A=new Function(p,x,c+e+A+"; }")}}l.push({id:q,target:A,exec:u,test:h,body:t[1]||""});k=k.replace(t[0],"{xtpl"+q+"}");++q}for(var v=l.length-1;v>=0;--v){z.compileTpl(l[v])}z.master=l[l.length-1];z.tpls=l};Ext.extend(Ext.XTemplate,Ext.Template,{re:/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(a,l,k,d,c){var h=this,g,n=h.tpls[a],m,b=[];if((n.test&&!n.test.call(h,l,k,d,c))||(n.exec&&n.exec.call(h,l,k,d,c))){return""}m=n.target?n.target.call(h,l,k):l;g=m.length;k=n.target?l:k;if(n.target&&Ext.isArray(m)){for(var e=0,g=m.length;e<g;e++){b[b.length]=n.compiled.call(h,m[e],k,e+1,g)}return b.join("")}return n.compiled.call(h,m,k,d,c)},compileTpl:function(tpl){var fm=Ext.util.Format,useF=this.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(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+"'"}function codeFn(m,code){return"'"+sep+"("+code.replace(/\\'/g,"'")+")"+sep+"'"}if(Ext.isGecko){body="tpl.compiled = function(values, parent, xindex, xcount){ return '"+tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn)+"';};"}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},applyTemplate:function(a){return this.master.compiled.call(this,a,{},1,1)},compile:function(){return this}});Ext.XTemplate.prototype.apply=Ext.XTemplate.prototype.applyTemplate;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,g){return g.charAt(1).toUpperCase()};return{createStyleSheet:function(i,m){var h;var g=c.getElementsByTagName("head")[0];var l=c.createElement("style");l.setAttribute("type","text/css");if(m){l.setAttribute("id",m)}if(Ext.isIE){g.appendChild(l);h=l.styleSheet;h.cssText=i}else{try{l.appendChild(c.createTextNode(i))}catch(k){l.cssText=i}g.appendChild(l);h=l.styleSheet?l.styleSheet:(l.sheet||c.styleSheets[c.styleSheets.length-1])}this.cacheStyleSheet(h);return h},removeStyleSheet:function(g){var e=c.getElementById(g);if(e){e.parentNode.removeChild(e)}},swapStyleSheet:function(h,e){this.removeStyleSheet(h);var g=c.createElement("link");g.setAttribute("rel","stylesheet");g.setAttribute("type","text/css");g.setAttribute("id",h);g.setAttribute("href",e);c.getElementsByTagName("head")[0].appendChild(g)},refreshCache:function(){return this.getRules(true)},cacheStyleSheet:function(h){if(!d){d={}}try{var k=h.cssRules||h.rules;for(var g=k.length-1;g>=0;--g){d[k[g].selectorText.toLowerCase()]=k[g]}}catch(i){}},getRules:function(h){if(d===null||h){d={};var l=c.styleSheets;for(var k=0,g=l.length;k<g;k++){try{this.cacheStyleSheet(l[k])}catch(m){}}}return d},getRule:function(e,h){var g=this.getRules(h);if(!Ext.isArray(e)){return g[e.toLowerCase()]}for(var k=0;k<e.length;k++){if(g[e[k]]){return g[e[k].toLowerCase()]}}return null},updateRule:function(e,k,h){if(!Ext.isArray(e)){var l=this.getRule(e);if(l){l.style[k.replace(b,a)]=h;return true}}else{for(var g=0;g<e.length;g++){if(this.updateRule(e[g],k,h)){return true}}}return false}}}();Ext.util.ClickRepeater=Ext.extend(Ext.util.Observable,{constructor:function(b,a){this.el=Ext.get(b);this.el.unselectable();Ext.apply(this,a);this.addEvents("mousedown","click","mouseup");if(!this.disabled){this.disabled=true;this.enable()}if(this.handler){this.on("click",this.handler,this.scope||this)}Ext.util.ClickRepeater.superclass.constructor.call(this)},interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,enable:function(){if(this.disabled){this.el.on("mousedown",this.handleMouseDown,this);if(Ext.isIE){this.el.on("dblclick",this.handleDblClick,this)}if(this.preventDefault||this.stopDefault){this.el.on("click",this.eventOptions,this)}}this.disabled=false},disable:function(a){if(a||!this.disabled){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass)}Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeAllListeners()}this.disabled=true},setDisabled:function(a){this[a?"disable":"enable"]()},eventOptions:function(a){if(this.preventDefault){a.preventDefault()}if(this.stopDefault){a.stopEvent()}},destroy:function(){this.disable(true);Ext.destroy(this.el);this.purgeListeners()},handleDblClick:function(a){clearTimeout(this.timer);this.el.blur();this.fireEvent("mousedown",this,a);this.fireEvent("click",this,a)},handleMouseDown:function(a){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,a);this.fireEvent("click",this,a);if(this.accelerate){this.delay=400}this.timer=this.click.defer(this.delay||this.interval,this,[a])},click:function(a){this.fireEvent("click",this,a);this.timer=this.click.defer(this.accelerate?this.easeOutExpo(this.mousedownTime.getElapsed(),400,-390,12000):this.interval,this,[a])},easeOutExpo:function(e,a,h,g){return(e==g)?a+h:h*(-Math.pow(2,-10*e/g)+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,this);if(this.pressClass){this.el.addClass(this.pressClass)}this.click()},handleMouseUp:function(a){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn,this);this.el.un("mouseout",this.handleMouseOut,this);Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeClass(this.pressClass);this.fireEvent("mouseup",this,a)}});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,relay:function(c){var a=c.getKey(),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,a)},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"},stopKeyUp:function(b){var a=b.getKey();if(a>=37&&a<=40){b.stopEvent()}},destroy:function(){this.disable()},enable:function(){if(this.disabled){if(Ext.isSafari2){this.el.on("keyup",this.stopKeyUp,this)}this.el.on(this.isKeydown()?"keydown":"keypress",this.relay,this);this.disabled=false}},disable:function(){if(!this.disabled){if(Ext.isSafari2){this.el.un("keyup",this.stopKeyUp,this)}this.el.un(this.isKeydown()?"keydown":"keypress",this.relay,this);this.disabled=true}},setDisabled:function(a){this[a?"disable":"enable"]()},isKeydown:function(){return this.forceKeyDown||Ext.EventManager.useKeydown}};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(b){if(Ext.isArray(b)){Ext.each(b,function(m){this.addBinding(m)},this);return}var k=b.key,g=b.fn||b.handler,l=b.scope;if(b.stopEvent){this.stopEvent=b.stopEvent}if(typeof k=="string"){var h=[];var e=k.toUpperCase();for(var c=0,d=e.length;c<d;c++){h.push(e.charCodeAt(c))}k=h}var a=Ext.isArray(k);var i=function(p){if(this.checkModifiers(b,p)){var n=p.getKey();if(a){for(var o=0,m=k.length;o<m;o++){if(k[o]==n){if(this.stopEvent){p.stopEvent()}g.call(l||window,n,p);return}}}else{if(n==k){if(this.stopEvent){p.stopEvent()}g.call(l||window,n,p)}}}};this.bindings.push(i)},checkModifiers:function(b,h){var k,d,g=["shift","ctrl","alt"];for(var c=0,a=g.length;c<a;++c){d=g[c];k=b[d];if(!(k===undefined||(k===h[d+"Key"]))){return false}}return true},on:function(b,d,c){var h,a,e,g;if(typeof b=="object"&&!Ext.isArray(b)){h=b.key;a=b.shift;e=b.ctrl;g=b.alt}else{h=b}this.addBinding({key:h,shift:a,ctrl:e,alt:g,fn:d,scope:c})},handleKeyDown:function(g){if(this.enabled){var c=this.bindings;for(var d=0,a=c.length;d<a;d++){c[d].call(this,g)}}},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}},setDisabled:function(a){this[a?"disable":"enable"]()}};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(g){c.update(g);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","text-transform","letter-spacing"))},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.addMethods({getTextWidth:function(c,b,a){return(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width).constrain(b||0,a||1000000)}});Ext.util.Cookies={set:function(c,e){var a=arguments;var i=arguments.length;var b=(i>2)?a[2]:null;var h=(i>3)?a[3]:"/";var d=(i>4)?a[4]:null;var g=(i>5)?a[5]:false;document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((h===null)?"":("; path="+h))+((d===null)?"":("; domain="+d))+((g===true)?"; secure":"")},get:function(d){var b=d+"=";var g=b.length;var a=document.cookie.length;var e=0;var c=0;while(e<a){c=e+g;if(document.cookie.substring(e,c)==b){return Ext.util.Cookies.getCookieVal(c)}e=document.cookie.indexOf(" ",e)+1;if(e===0){break}}return null},clear:function(a){if(Ext.util.Cookies.get(a)){document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT"}},getCookieVal:function(b){var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}return unescape(document.cookie.substring(b,a))}};Ext.handleError=function(a){throw a};Ext.Error=function(a){this.message=(this.lang[a])?this.lang[a]:a};Ext.Error.prototype=new Error();Ext.apply(Ext.Error.prototype,{lang:{},name:"Ext.Error",getName:function(){return this.name},getMessage:function(){return this.message},toJson:function(){return Ext.encode(this)}});Ext.ComponentMgr=function(){var c=new Ext.util.MixedCollection();var b={};var a={};return{register:function(d){c.add(d)},unregister:function(d){c.remove(d)},get:function(d){return c.get(d)},onAvailable:function(g,e,d){c.on("add",function(h,i){if(i.id==g){e.call(d||i,i);c.un("add",e,d)}})},all:c,types:b,ptypes:a,isRegistered:function(d){return b[d]!==undefined},isPluginRegistered:function(d){return a[d]!==undefined},registerType:function(e,d){b[e]=d;d.xtype=e},create:function(d,e){return d.render?d:new b[d.xtype||e](d)},registerPlugin:function(e,d){a[e]=d;d.ptype=e},createPlugin:function(e,g){var d=a[e.ptype||g];if(d.init){return d}else{return new d(e)}}}}();Ext.reg=Ext.ComponentMgr.registerType;Ext.preg=Ext.ComponentMgr.registerPlugin;Ext.create=Ext.ComponentMgr.create;Ext.Component=function(b){b=b||{};if(b.initialConfig){if(b.isAction){this.baseAction=b}b=b.initialConfig}else{if(b.tagName||b.dom||Ext.isString(b)){b={applyTo:b,id:b.id||b}}}this.initialConfig=b;Ext.apply(this,b);this.addEvents("added","disable","enable","beforeshow","show","beforehide","hide","removed","beforerender","render","afterrender","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]=this.initPlugin(this.plugins[c])}}else{this.plugins=this.initPlugin(this.plugins)}}if(this.stateful!==false){this.initState()}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,{disabled:false,hidden:false,autoEl:"div",disabledClass:"x-item-disabled",allowDomMove:true,autoShow:false,hideMode:"display",hideParent:false,rendered:false,tplWriteMode:"overwrite",bubbleEvents:[],ctype:"Ext.Component",actionMode:"el",getActionEl:function(){return this[this.actionMode]},initPlugin:function(a){if(a.ptype&&!Ext.isFunction(a.init)){a=Ext.ComponentMgr.createPlugin(a)}else{if(Ext.isString(a)){a=Ext.ComponentMgr.createPlugin({ptype:a})}}a.init(this);return a},initComponent:function(){if(this.listeners){this.on(this.listeners);delete this.listeners}this.enableBubble(this.bubbleEvents)},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(Ext.isNumber(a)){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}if(this.overCls){this.el.addClassOnOver(this.overCls)}this.fireEvent("render",this);var c=this.getContentTarget();if(this.html){c.update(Ext.DomHelper.markup(this.html));delete this.html}if(this.contentEl){var d=Ext.getDom(this.contentEl);Ext.fly(d).removeClass(["x-hidden","x-hide-display"]);c.appendChild(d)}if(this.tpl){if(!this.tpl.compile){this.tpl=new Ext.XTemplate(this.tpl)}if(this.data){this.tpl[this.tplWriteMode](c,this.data);delete this.data}}this.afterRender(this.container);if(this.hidden){this.doHide()}if(this.disabled){this.disable(true)}if(this.stateful!==false){this.initStateEvents()}this.fireEvent("afterrender",this)}return this},update:function(b,d,a){var c=this.getContentTarget();if(this.tpl&&typeof b!=="string"){this.tpl[this.tplWriteMode](c,b||{})}else{var e=Ext.isObject(b)?Ext.DomHelper.markup(b):b;c.update(e,d,a)}},onAdded:function(a,b){this.ownerCt=a;this.initRef();this.fireEvent("added",this,a,b)},onRemoved:function(){this.removeRef();this.fireEvent("removed",this,this.ownerCt);delete this.ownerCt},initRef:function(){if(this.ref&&!this.refOwner){var d=this.ref.split("/"),c=d.length,b=0,a=this;while(a&&b<c){a=a.ownerCt;++b}if(a){a[this.refName=d[--b]]=this;this.refOwner=a}}},removeRef:function(){if(this.refOwner&&this.refName){delete this.refOwner[this.refName];delete this.refOwner}},initState:function(){if(Ext.state.Manager){var b=this.getStateId();if(b){var a=Ext.state.Manager.get(b);if(a){if(this.fireEvent("beforestaterestore",this,a)!==false){this.applyState(Ext.apply({},a));this.fireEvent("staterestore",this,a)}}}}},getStateId:function(){return this.stateId||((/^(ext-comp-|ext-gen)/).test(String(this.id))?null:this.id)},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(a){if(a){Ext.apply(this,a)}},getState:function(){return null},saveState:function(){if(Ext.state.Manager&&this.stateful!==false){var b=this.getStateId();if(b){var a=this.getState();if(this.fireEvent("beforestatesave",this,a)!==false){Ext.state.Manager.set(b,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}return this},removeClass:function(a){if(this.el){this.el.removeClass(a)}else{if(this.cls){this.cls=this.cls.split(" ").remove(a).join(" ")}}return this},onRender:function(b,a){if(!this.el&&this.autoEl){if(Ext.isString(this.autoEl)){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);if(c){Ext.removeNode(c);c=null}}}},getAutoCreate:function(){var a=Ext.isObject(this.autoCreate)?this.autoCreate:Ext.apply({},this.defaultAutoCreate);if(this.id&&!a.id){a.id=this.id}return a},afterRender:Ext.emptyFn,destroy:function(){if(!this.isDestroyed){if(this.fireEvent("beforedestroy",this)!==false){this.destroying=true;this.beforeDestroy();if(this.ownerCt&&this.ownerCt.remove){this.ownerCt.remove(this,false)}if(this.rendered){this.el.remove();if(this.actionMode=="container"||this.removeMode=="container"){this.container.remove()}}if(this.focusTask&&this.focusTask.cancel){this.focusTask.cancel()}this.onDestroy();Ext.ComponentMgr.unregister(this);this.fireEvent("destroy",this);this.purgeListeners();this.destroying=false;this.isDestroyed=true}}},deleteMembers:function(){var b=arguments;for(var c=0,a=b.length;c<a;++c){delete this[b[c]]}},beforeDestroy:Ext.emptyFn,onDestroy:Ext.emptyFn,getEl:function(){return this.el},getContentTarget:function(){return this.el},getId:function(){return this.id||(this.id="ext-comp-"+(++Ext.Component.AUTO_ID))},getItemId:function(){return this.itemId||this.getId()},focus:function(b,a){if(a){this.focusTask=new Ext.util.DelayedTask(this.focus,this,[b,false]);this.focusTask.delay(Ext.isNumber(a)?a:10);return this}if(this.rendered&&!this.isDestroyed){this.el.focus();if(b===true){this.el.dom.select()}}return this},blur:function(){if(this.rendered){this.el.blur()}return this},disable:function(a){if(this.rendered){this.onDisable()}this.disabled=true;if(a!==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){return this[a?"disable":"enable"]()},show:function(){if(this.fireEvent("beforeshow",this)!==false){this.hidden=false;if(this.autoRender){this.render(Ext.isBoolean(this.autoRender)?Ext.getBody():this.autoRender)}if(this.rendered){this.onShow()}this.fireEvent("show",this)}return this},onShow:function(){this.getVisibilityEl().removeClass("x-hide-"+this.hideMode)},hide:function(){if(this.fireEvent("beforehide",this)!==false){this.doHide();this.fireEvent("hide",this)}return this},doHide:function(){this.hidden=true;if(this.rendered){this.onHide()}},onHide:function(){this.getVisibilityEl().addClass("x-hide-"+this.hideMode)},getVisibilityEl:function(){return this.hideParent?this.container:this.getActionEl()},setVisible:function(a){return this[a?"show":"hide"]()},isVisible:function(){return this.rendered&&this.getVisibilityEl().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){if(Ext.isFunction(b)){b=b.xtype}else{if(Ext.isObject(b)){b=b.constructor.xtype}}return !a?("/"+this.getXTypes()+"/").indexOf("/"+b+"/")!=-1:this.constructor.xtype==b},getXTypes:function(){var a=this.constructor;if(!a.xtypes){var d=[],b=this;while(b&&b.constructor.xtype){d.unshift(b.constructor.xtype);b=b.constructor.superclass}a.xtypeChain=d;a.xtypes=d.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(b,a){return this.findParentBy(function(d){return d.isXType(b,a)})},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.ownerCt}return this},getPositionEl:function(){return this.positionEl||this.el},purgeListeners:function(){Ext.Component.superclass.purgeListeners.call(this);if(this.mons){this.on("beforedestroy",this.clearMons,this,{single:true})}},clearMons:function(){Ext.each(this.mons,function(a){a.item.un(a.ename,a.fn,a.scope)},this);this.mons=[]},createMons:function(){if(!this.mons){this.mons=[];this.on("beforedestroy",this.clearMons,this,{single:true})}},mon:function(g,b,d,c,a){this.createMons();if(Ext.isObject(b)){var k=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;var i=b;for(var h in i){if(k.test(h)){continue}if(Ext.isFunction(i[h])){this.mons.push({item:g,ename:h,fn:i[h],scope:i.scope});g.on(h,i[h],i.scope,i)}else{this.mons.push({item:g,ename:h,fn:i[h],scope:i.scope});g.on(h,i[h])}}return}this.mons.push({item:g,ename:b,fn:d,scope:c});g.on(b,d,c,a)},mun:function(h,c,g,e){var k,d;this.createMons();for(var b=0,a=this.mons.length;b<a;++b){d=this.mons[b];if(h===d.item&&c==d.ename&&g===d.fn&&e===d.scope){this.mons.splice(b,1);h.un(c,g,e);k=true;break}}return k},nextSibling:function(){if(this.ownerCt){var a=this.ownerCt.items.indexOf(this);if(a!=-1&&a+1<this.ownerCt.items.getCount()){return this.ownerCt.items.itemAt(a+1)}}return null},previousSibling:function(){if(this.ownerCt){var a=this.ownerCt.items.indexOf(this);if(a>0){return this.ownerCt.items.itemAt(a-1)}}return null},getBubbleTarget:function(){return this.ownerCt}});Ext.reg("component",Ext.Component);Ext.Action=Ext.extend(Object,{constructor:function(a){this.initialConfig=a;this.itemId=a.itemId=(a.itemId||a.id||Ext.id());this.items=[]},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,h=d.parentEl,g=h?Ext.getDom(h):document.body;if(c){this.dom=Ext.getDom(c)}if(!this.dom){var i=d.dh||{tag:"div",cls:"x-layer"};this.dom=e.append(g,i)}if(d.cls){this.addClass(d.cls)}this.constrain=d.constrain!==false;this.setVisibilityMode(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.getShim()||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(d){var o=this.shadow;if(!this.updating&&this.isVisible()&&(o||this.useShim)){var i=this.getShim(),n=this.getWidth(),k=this.getHeight(),e=this.getLeft(true),p=this.getTop(true);if(o&&!this.shadowDisabled){if(d&&!o.isVisible()){o.show(this)}else{o.realign(e,p,n,k)}if(i){if(d){i.show()}var m=o.el.getXY(),g=i.dom.style,c=o.el.getSize();g.left=(m[0])+"px";g.top=(m[1])+"px";g.width=(c.width)+"px";g.height=(c.height)+"px"}}else{if(i){if(d){i.show()}i.setSize(n,k);i.setLeftTop(e,p)}}}},destroy:function(){this.hideShim();if(this.shadow){this.shadow.hide()}this.removeAllListeners();Ext.removeNode(this.dom);delete this.dom},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 k=Ext.lib.Dom.getViewWidth(),d=Ext.lib.Dom.getViewHeight();var p=Ext.getDoc().getScroll();var o=this.getXY();var l=o[0],i=o[1];var c=this.shadowOffset;var m=this.dom.offsetWidth+c,e=this.dom.offsetHeight+c;var g=false;if((l+m)>k+p.left){l=k-m-c;g=true}if((i+e)>d+p.top){i=d-e-c;g=true}if(l<p.left){l=p.left;g=true}if(i<p.top){i=p.top;g=true}if(g){if(this.avoidY){var n=this.avoidY;if(i<=n&&(i+e)>=n){i=n-e-5}}o=[l,i];this.storeXY(o);a.setXY.call(this,o);this.sync()}}return this},getConstrainOffset:function(){return this.shadowOffset},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(i,h,l,m,k){if(i){this.showAction()}if(h&&i){var g=function(){this.sync(true);if(m){m()}}.createDelegate(this);a.setVisible.call(this,true,true,l,g,k)}else{if(!i){this.hideUnders(true)}var g=m;if(h){g=function(){this.hideAction();if(m){m()}}.createDelegate(this)}a.setVisible.call(this,i,h,l,g,k);if(i){this.sync(true)}else{if(!h){this.hideAction()}}}return this},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();return this},setTop:function(c){this.storeLeftTop(this.getLeft(true),c);a.setTop.apply(this,arguments);this.sync();return this},setLeftTop:function(d,c){this.storeLeftTop(d,c);a.setLeftTop.apply(this,arguments);this.sync();return this},setXY:function(k,h,l,m,i){this.fixDisplay();this.beforeAction();this.storeXY(k);var g=this.createCB(m);a.setXY.call(this,k,h,l,g,i);if(!h){g()}return this},createCB:function(e){var d=this;return function(){d.constrainXY();d.sync(true);if(e){e()}}},setX:function(g,h,k,l,i){this.setXY([g,this.getY()],h,k,l,i);return this},setY:function(l,g,i,k,h){this.setXY([this.getX(),l],g,i,k,h);return this},setSize:function(k,l,i,n,o,m){this.beforeAction();var g=this.createCB(o);a.setSize.call(this,k,l,i,n,g,m);if(!i){g()}return this},setWidth:function(i,h,l,m,k){this.beforeAction();var g=this.createCB(m);a.setWidth.call(this,i,h,l,g,k);if(!h){g()}return this},setHeight:function(k,i,m,n,l){this.beforeAction();var g=this.createCB(n);a.setHeight.call(this,k,i,m,g,l);if(!i){g()}return this},setBounds:function(p,n,q,i,o,l,m,k){this.beforeAction();var g=this.createCB(m);if(!o){this.storeXY([p,n]);a.setXY.call(this,[p,n]);a.setSize.call(this,q,i,o,l,g,k);g()}else{a.setBounds.call(this,p,n,q,i,o,l,g,k)}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)}return this}})})();Ext.Shadow=function(d){Ext.apply(this,d);if(typeof this.mode!="string"){this.mode=this.defaultMode}var e=this.offset,c={h:0},b=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":c.w=0;c.l=c.t=e;c.t-=1;if(Ext.isIE){c.l-=this.offset+b;c.t-=this.offset+b;c.w-=b;c.h-=b;c.t+=1}break;case"sides":c.w=(e*2);c.l=-e;c.t=e-1;if(Ext.isIE){c.l-=(this.offset-b);c.t-=this.offset+b;c.l+=1;c.w-=(this.offset-b)*2;c.w-=b+1;c.h-=1}break;case"frame":c.w=c.h=(e*2);c.l=c.t=-e;c.t+=1;c.h-=2;if(Ext.isIE){c.l-=(this.offset-b);c.t-=(this.offset-b);c.l+=1;c.w-=(this.offset+b+1);c.h-=(this.offset+b);c.h+=1}break}this.adjusts=c};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(b,u,r,g){if(!this.el){return}var o=this.adjusts,m=this.el.dom,v=m.style,i=0,q=(r+o.w),e=(g+o.h),k=q+"px",p=e+"px",n,c;v.left=(b+o.l)+"px";v.top=(u+o.t)+"px";if(v.width!=k||v.height!=p){v.width=k;v.height=p;if(!Ext.isIE){n=m.childNodes;c=Math.max(0,(q-12))+"px";n[0].childNodes[1].style.width=c;n[1].childNodes[1].style.width=c;n[2].childNodes[1].style.width=c;n[1].style.height=Math.max(0,(e-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=[],a=Ext.isIE?'<div class="x-ie-shadow"></div>':'<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';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(Ext.isDefined(b)&&Ext.isDefined(this.boxMinWidth)&&(b<this.boxMinWidth)){b=this.boxMinWidth}if(Ext.isDefined(d)&&Ext.isDefined(this.boxMinHeight)&&(d<this.boxMinHeight)){d=this.boxMinHeight}if(Ext.isDefined(b)&&Ext.isDefined(this.boxMaxWidth)&&(b>this.boxMaxWidth)){b=this.boxMaxWidth}if(Ext.isDefined(d)&&Ext.isDefined(this.boxMaxHeight)&&(d>this.boxMaxHeight)){d=this.boxMaxHeight}if(!this.boxReady){this.width=b;this.height=d;return this}if(this.cacheSizes!==false&&this.lastSize&&this.lastSize.width==b&&this.lastSize.height==d){return this}this.lastSize={width:b,height:d};var c=this.adjustSize(b,d),g=c.width,a=c.height,e;if(g!==undefined||a!==undefined){e=this.getResizeEl();if(!this.deferHeight&&g!==undefined&&a!==undefined){e.setSize(g,a)}else{if(!this.deferHeight&&a!==undefined){e.setHeight(a)}else{if(g!==undefined){e.setWidth(g)}}}this.onResize(g,a,b,d);this.fireEvent("resize",this,g,a,b,d)}return this},setWidth:function(a){return this.setSize(a)},setHeight:function(a){return this.setSize(undefined,a)},getSize:function(){return this.getResizeEl().getSize()},getWidth:function(){return this.getResizeEl().getWidth()},getHeight:function(){return this.getResizeEl().getHeight()},getOuterSize:function(){var a=this.getResizeEl();return{width:a.getWidth()+a.getMargins("lr"),height:a.getHeight()+a.getMargins("tb")}},getPosition:function(a){var b=this.getPositionEl();if(a===true){return[b.getLeft(true),b.getTop(true)]}return this.xy||b.getXY()},getBox:function(a){var c=this.getPosition(a);var b=this.getSize();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},setAutoScroll:function(a){if(this.rendered){this.getContentTarget().setOverflow(a?"auto":"")}this.autoScroll=a;return this},setPosition:function(a,g){if(a&&typeof a[1]=="number"){g=a[1];a=a[0]}this.x=a;this.y=g;if(!this.boxReady){return this}var b=this.adjustPosition(a,g);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.getPositionEl().translatePoints(a,c);this.setPosition(b.left,b.top);return this},afterRender:function(){Ext.BoxComponent.superclass.afterRender.call(this);if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl)}if(this.positionEl){this.positionEl=Ext.get(this.positionEl)}this.boxReady=true;Ext.isDefined(this.autoScroll)&&this.setAutoScroll(this.autoScroll);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.getResizeEl().getWidth(),this.autoHeight?undefined:this.getResizeEl().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.Spacer=Ext.extend(Ext.BoxComponent,{autoEl:"div"});Ext.reg("spacer",Ext.Spacer);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:"&#160;"},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.tickSize);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.tickSize)}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){Ext.destroy(this.overlay);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){Ext.destroy(this.shim,Ext.get(this.proxy));this.dd.unreg();if(a){this.el.remove()}this.purgeListeners()}});Ext.SplitBar.createProxy=function(b){var c=new Ext.Element(document.createElement("div"));document.body.appendChild(c.dom);c.unselectable();var a="x-splitbar-proxy";c.addClass(a+" "+(b==Ext.SplitBar.HORIZONTAL?a+"-h":a+"-v"));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,{bufferResize:50,autoDestroy:true,forceLayout:false,defaultType:"panel",resizeEvent:"resize",bubbleEvents:["add","remove"],initComponent:function(){Ext.Container.superclass.initComponent.call(this);this.addEvents("afterlayout","beforeadd","beforeremove","add","remove");var a=this.items;if(a){delete this.items;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.layout=a;this.initItems();a.setContainer(this)},afterRender:function(){Ext.Container.superclass.afterRender.call(this);if(!this.layout){this.layout="auto"}if(Ext.isObject(this.layout)&&!this.layout.layout){this.layoutConfig=this.layout;this.layout=this.layoutConfig.type}if(Ext.isString(this.layout)){this.layout=new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)}this.setLayout(this.layout);if(this.activeItem!==undefined&&this.layout.setActiveItem){var a=this.activeItem;delete this.activeItem;this.layout.setActiveItem(a)}if(!this.ownerCt){this.doLayout(false,true)}if(this.monitorResize===true){Ext.EventManager.onWindowResize(this.doLayout,this,[false])}},getLayoutTarget:function(){return this.el},getComponentId:function(a){return a.getItemId()},add:function(b){this.initItems();var e=arguments.length>1;if(e||Ext.isArray(b)){var a=[];Ext.each(e?arguments:b,function(h){a.push(this.add(h))},this);return a}var g=this.lookupComponent(this.applyDefaults(b));var d=this.items.length;if(this.fireEvent("beforeadd",this,g,d)!==false&&this.onBeforeAdd(g)!==false){this.items.add(g);g.onAdded(this,d);this.onAdd(g);this.fireEvent("add",this,g,d)}return g},onAdd:function(a){},onAdded:function(a,b){this.ownerCt=a;this.initRef();this.cascade(function(d){d.initRef()});this.fireEvent("added",this,a,b)},insert:function(e,b){var d=arguments,h=d.length,a=[],g,k;this.initItems();if(h>2){for(g=h-1;g>=1;--g){a.push(this.insert(e,d[g]))}return a}k=this.lookupComponent(this.applyDefaults(b));e=Math.min(e,this.items.length);if(this.fireEvent("beforeadd",this,k,e)!==false&&this.onBeforeAdd(k)!==false){if(k.ownerCt==this){this.items.remove(k)}this.items.insert(e,k);k.onAdded(this,e);this.onAdd(k);this.fireEvent("add",this,k,e)}return k},applyDefaults:function(b){var a=this.defaults;if(a){if(Ext.isFunction(a)){a=a.call(this,b)}if(Ext.isString(b)){b=Ext.ComponentMgr.get(b);Ext.apply(b,a)}else{if(!b.events){Ext.applyIf(b.isAction?b.initialConfig:b,a)}else{Ext.apply(b,a)}}}return b},onBeforeAdd:function(a){if(a.ownerCt){a.ownerCt.remove(a,false)}if(this.hideBorders===true){a.border=(a.border===true)}},remove:function(a,b){this.initItems();var d=this.getComponent(a);if(d&&this.fireEvent("beforeremove",this,d)!==false){this.doRemove(d,b);this.fireEvent("remove",this,d)}return d},onRemove:function(a){},doRemove:function(e,d){var b=this.layout,a=b&&this.rendered;if(a){b.onRemove(e)}this.items.remove(e);e.onRemoved();this.onRemove(e);if(d===true||(d!==false&&this.autoDestroy)){e.destroy()}if(a){b.afterRemove(e)}},removeAll:function(c){this.initItems();var e,g=[],b=[];this.items.each(function(h){g.push(h)});for(var d=0,a=g.length;d<a;++d){e=g[d];this.remove(e,c);if(e.ownerCt!==this){b.push(e)}}return b},getComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}return this.items.get(a)},lookupComponent:function(a){if(Ext.isString(a)){return Ext.ComponentMgr.get(a)}else{if(!a.events){return this.createComponent(a)}}return a},createComponent:function(a,d){if(a.render){return a}var b=Ext.create(Ext.apply({ownerCt:this},a),d||this.defaultType);delete b.initialConfig.ownerCt;delete b.ownerCt;return b},canLayout:function(){var a=this.getVisibilityEl();return a&&a.dom&&!a.isStyle("display","none")},doLayout:function(g,e){var l=this.rendered,k=e||this.forceLayout;if(this.collapsed||!this.canLayout()){this.deferLayout=this.deferLayout||!g;if(!k){return}g=g&&!this.deferLayout}else{delete this.deferLayout}if(l&&this.layout){this.layout.layout()}if(g!==true&&this.items){var d=this.items.items;for(var b=0,a=d.length;b<a;b++){var h=d[b];if(h.doLayout){h.doLayout(false,k)}}}if(l){this.onLayout(g,k)}this.hasLayout=true;delete this.forceLayout},onLayout:Ext.emptyFn,shouldBufferLayout:function(){var a=this.hasLayout;if(this.ownerCt){return a?!this.hasLayoutPending():false}return a},hasLayoutPending:function(){var a=false;this.ownerCt.bubble(function(b){if(b.layoutPending){a=true;return false}});return a},onShow:function(){Ext.Container.superclass.onShow.call(this);if(Ext.isDefined(this.deferLayout)){delete this.deferLayout;this.doLayout(true)}},getLayout:function(){if(!this.layout){var a=new Ext.layout.AutoLayout(this.layoutConfig);this.setLayout(a)}return this.layout},beforeDestroy:function(){var a;if(this.items){while(a=this.items.first()){this.doRemove(a,true)}}if(this.monitorResize){Ext.EventManager.removeResizeListener(this.doLayout,this)}Ext.destroy(this.layout);Ext.Container.superclass.beforeDestroy.call(this)},cascade:function(g,e,b){if(g.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(g,e,b)}else{g.apply(e||d[c],b||[d[c]])}}}}return this},findById:function(c){var a=null,b=this;this.cascade(function(d){if(b!=d&&d.id===c){a=d;return false}});return a},findByType:function(b,a){return this.findBy(function(d){return d.isXType(b,a)})},find:function(b,a){return this.findBy(function(d){return d[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},get:function(a){return this.getComponent(a)}});Ext.Container.LAYOUTS={};Ext.reg("container",Ext.Container);Ext.layout.ContainerLayout=Ext.extend(Object,{monitorResize:false,activeItem:null,constructor:function(a){this.id=Ext.id(null,"ext-layout-");Ext.apply(this,a)},type:"container",IEMeasureHack:function(l,g){var a=l.dom.childNodes,b=a.length,o,n=[],m,h,k;for(h=0;h<b;h++){o=a[h];m=Ext.get(o);if(m){n[h]=m.getStyle("display");m.setStyle({display:"none"})}}k=l?l.getViewSize(g):{};for(h=0;h<b;h++){o=a[h];m=Ext.get(o);if(m){m.setStyle({display:n[h]})}}return k},getLayoutTargetSize:Ext.EmptyFn,layout:function(){var a=this.container,b=a.getLayoutTarget();if(!(this.hasLayout||Ext.isEmpty(this.targetCls))){b.addClass(this.targetCls)}this.onLayout(a,b);a.fireEvent("afterlayout",a,this)},onLayout:function(a,b){this.renderAll(a,b)},isValidParent:function(b,a){return a&&b.getPositionEl().dom.parentNode==(a.dom||a)},renderAll:function(e,g){var b=e.items.items,d,h,a=b.length;for(d=0;d<a;d++){h=b[d];if(h&&(!h.rendered||!this.isValidParent(h,g))){this.renderItem(h,d,g)}}},renderItem:function(d,a,b){if(d){if(!d.rendered){d.render(b,a);this.configureItem(d)}else{if(!this.isValidParent(d,b)){if(Ext.isNumber(a)){a=b.dom.childNodes[a]}b.dom.insertBefore(d.getPositionEl().dom,a||null);d.container=b;this.configureItem(d)}}}},getRenderedItems:function(g){var e=g.getLayoutTarget(),h=g.items.items,a=h.length,d,k,b=[];for(d=0;d<a;d++){if((k=h[d]).rendered&&this.isValidParent(k,e)&&k.shouldLayout!==false){b.push(k)}}return b},configureItem:function(b){if(this.extraCls){var a=b.getPositionEl?b.getPositionEl():b;a.addClass(this.extraCls)}if(b.doLayout&&this.forceLayout){b.doLayout()}if(this.renderHidden&&b!=this.activeItem){b.hide()}},onRemove:function(b){if(this.activeItem==b){delete this.activeItem}if(b.rendered&&this.extraCls){var a=b.getPositionEl?b.getPositionEl():b;a.removeClass(this.extraCls)}},afterRemove:function(a){if(a.removeRestore){a.removeMode="container";delete a.removeRestore}},onResize:function(){var c=this.container,a;if(c.collapsed){return}if(a=c.bufferResize&&c.shouldBufferLayout()){if(!this.resizeTask){this.resizeTask=new Ext.util.DelayedTask(this.runLayout,this);this.resizeBuffer=Ext.isNumber(a)?a:50}c.layoutPending=true;this.resizeTask.delay(this.resizeBuffer)}else{this.runLayout()}},runLayout:function(){var a=this.container;this.layout();a.onLayout();delete a.layoutPending},setContainer:function(b){if(this.monitorResize&&b!=this.container){var a=this.container;if(a){a.un(a.resizeEvent,this.onResize,this)}if(b){b.on(b.resizeEvent,this.onResize,this)}}this.container=b},parseMargins:function(b){if(Ext.isNumber(b)){b=b.toString()}var c=b.split(" "),a=c.length;if(a==1){c[1]=c[2]=c[3]=c[0]}else{if(a==2){c[2]=c[0];c[3]=c[1]}else{if(a==3){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}},fieldTpl:(function(){var a=new Ext.Template('<div class="x-form-item {itemCls}" tabIndex="-1">','<label for="{id}" style="{labelStyle}" class="x-form-item-label">{label}{labelSeparator}</label>','<div class="x-form-element" id="x-form-el-{id}" style="{elementStyle}">','</div><div class="{clearCls}"></div>',"</div>");a.disableFormats=true;return a.compile()})(),destroy:function(){if(this.resizeTask&&this.resizeTask.cancel){this.resizeTask.cancel()}if(this.container){this.container.un(this.container.resizeEvent,this.onResize,this)}if(!Ext.isEmpty(this.targetCls)){var a=this.container.getLayoutTarget();if(a){a.removeClass(this.targetCls)}}}});Ext.layout.AutoLayout=Ext.extend(Ext.layout.ContainerLayout,{type:"auto",monitorResize:true,onLayout:function(d,g){Ext.layout.AutoLayout.superclass.onLayout.call(this,d,g);var e=this.getRenderedItems(d),a=e.length,b,h;for(b=0;b<a;b++){h=e[b];if(h.doLayout){h.doLayout(true)}}}});Ext.Container.LAYOUTS.auto=Ext.layout.AutoLayout;Ext.layout.FitLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"fit",getLayoutTargetSize:function(){var a=this.container.getLayoutTarget();if(!a){return{}}return a.getStyleSize()},onLayout:function(a,b){Ext.layout.FitLayout.superclass.onLayout.call(this,a,b);if(!a.collapsed){this.setItemSize(this.activeItem||a.items.itemAt(0),this.getLayoutTargetSize())}},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,layoutOnCardChange:false,renderHidden:true,type:"card",setActiveItem:function(d){var a=this.activeItem,b=this.container;d=b.getComponent(d);if(d&&a!=d){if(a){a.hide();if(a.hidden!==true){return false}a.fireEvent("deactivate",a)}var c=d.doLayout&&(this.layoutOnCardChange||!d.rendered);this.activeItem=d;delete d.deferLayout;d.show();this.layout();if(c){d.doLayout()}d.fireEvent("activate",d)}},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,type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a={};if(b){a=b.getViewSize();if(Ext.isIE&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},onLayout:function(n,x){Ext.layout.AnchorLayout.superclass.onLayout.call(this,n,x);var q=this.getLayoutTargetSize(),l=q.width,p=q.height,r=x.getStyle("overflow"),o=this.getRenderedItems(n),u=o.length,g=[],k,a,w,m,h,c,e,d,v=0,t,b;if(l<20&&p<20){return}if(n.anchorSize){if(typeof n.anchorSize=="number"){a=n.anchorSize}else{a=n.anchorSize.width;w=n.anchorSize.height}}else{a=n.initialConfig.width;w=n.initialConfig.height}for(t=0;t<u;t++){m=o[t];b=m.getPositionEl();if(!m.anchor&&m.items&&!Ext.isNumber(m.width)&&!(Ext.isIE6&&Ext.isStrict)){m.anchor=this.defaultAnchor}if(m.anchor){h=m.anchorSpec;if(!h){d=m.anchor.split(" ");m.anchorSpec=h={right:this.parseAnchor(d[0],m.initialConfig.width,a),bottom:this.parseAnchor(d[1],m.initialConfig.height,w)}}c=h.right?this.adjustWidthAnchor(h.right(l)-b.getMargins("lr"),m):undefined;e=h.bottom?this.adjustHeightAnchor(h.bottom(p)-b.getMargins("tb"),m):undefined;if(c||e){g.push({component:m,width:c||undefined,height:e||undefined})}}}for(t=0,u=g.length;t<u;t++){k=g[t];k.component.setSize(k.width,k.height)}if(r&&r!="hidden"&&!this.adjustmentPass){var s=this.getLayoutTargetSize();if(s.width!=q.width||s.height!=q.height){this.adjustmentPass=true;this.onLayout(n,x)}}delete this.adjustmentPass},parseAnchor:function(c,h,b){if(c&&c!="none"){var e;if(this.parseAnchorRE.test(c)){var g=b-h;return function(a){if(a!==e){e=a;return a-g}}}else{if(c.indexOf("%")!=-1){var d=parseFloat(c.replace("%",""))*0.01;return function(a){if(a!==e){e=a;return Math.floor(a*d)}}}else{c=parseInt(c,10);if(!isNaN(c)){return function(a){if(a!==e){e=a;return a+c}}}}}}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,type:"column",extraCls:"x-column",scrollOffset:0,targetCls:"x-column-layout-ct",isValidParent:function(b,a){return this.innerCt&&b.getPositionEl().dom.parentNode==this.innerCt.dom},getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a;if(b){a=b.getViewSize();if(Ext.isIE&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},renderAll:function(a,b){if(!this.innerCt){this.innerCt=b.createChild({cls:"x-column-inner"});this.innerCt.createChild({cls:"x-clear"})}Ext.layout.ColumnLayout.superclass.renderAll.call(this,a,this.innerCt)},onLayout:function(e,l){var g=e.items.items,k=g.length,o,b,a,p=[];this.renderAll(e,l);var s=this.getLayoutTargetSize();if(s.width<1&&s.height<1){return}var q=s.width-this.scrollOffset,d=s.height,r=q;this.innerCt.setWidth(q);for(b=0;b<k;b++){o=g[b];a=o.getPositionEl().getMargins("lr");p[b]=a;if(!o.columnWidth){r-=(o.getWidth()+a)}}r=r<0?0:r;for(b=0;b<k;b++){o=g[b];a=p[b];if(o.columnWidth){o.setSize(Math.floor(o.columnWidth*r)-a)}}if(Ext.isIE){if(b=l.getStyle("overflow")&&b!="hidden"&&!this.adjustmentPass){var n=this.getLayoutTargetSize();if(n.width!=s.width){this.adjustmentPass=true;this.onLayout(e,l)}}}delete this.adjustmentPass}});Ext.Container.LAYOUTS.column=Ext.layout.ColumnLayout;Ext.layout.BorderLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,rendered:false,type:"border",targetCls:"x-border-layout-ct",getLayoutTargetSize:function(){var a=this.container.getLayoutTarget();return a?a.getViewSize():{}},onLayout:function(g,J){var k,C,G,p,y=g.items.items,D=y.length;if(!this.rendered){k=[];for(C=0;C<D;C++){G=y[C];p=G.region;if(G.collapsed){k.push(G)}G.collapsed=false;if(!G.rendered){G.render(J,C);G.getPositionEl().addClass("x-border-panel")}this[p]=p!="center"&&G.split?new Ext.layout.BorderLayout.SplitRegion(this,G.initialConfig,p):new Ext.layout.BorderLayout.Region(this,G.initialConfig,p);this[p].render(J,G)}this.rendered=true}var x=this.getLayoutTargetSize();if(x.width<20||x.height<20){if(k){this.restoreCollapsed=k}return}else{if(this.restoreCollapsed){k=this.restoreCollapsed;delete this.restoreCollapsed}}var u=x.width,E=x.height,t=u,B=E,q=0,r=0,z=this.north,v=this.south,o=this.west,F=this.east,G=this.center,I,A,d,H;if(!G&&Ext.layout.BorderLayout.WARN!==false){throw"No center region defined in BorderLayout "+g.id}if(z&&z.isVisible()){I=z.getSize();A=z.getMargins();I.width=u-(A.left+A.right);I.x=A.left;I.y=A.top;q=I.height+I.y+A.bottom;B-=q;z.applyLayout(I)}if(v&&v.isVisible()){I=v.getSize();A=v.getMargins();I.width=u-(A.left+A.right);I.x=A.left;H=(I.height+A.top+A.bottom);I.y=E-H+A.top;B-=H;v.applyLayout(I)}if(o&&o.isVisible()){I=o.getSize();A=o.getMargins();I.height=B-(A.top+A.bottom);I.x=A.left;I.y=q+A.top;d=(I.width+A.left+A.right);r+=d;t-=d;o.applyLayout(I)}if(F&&F.isVisible()){I=F.getSize();A=F.getMargins();I.height=B-(A.top+A.bottom);d=(I.width+A.left+A.right);I.x=u-d+A.left;I.y=q+A.top;t-=d;F.applyLayout(I)}if(G){A=G.getMargins();var l={x:r+A.left,y:q+A.top,width:t-(A.left+A.right),height:B-(A.top+A.bottom)};G.applyLayout(l)}if(k){for(C=0,D=k.length;C<D;C++){k[C].collapse(false)}}if(Ext.isIE&&Ext.isStrict){J.repaint()}if(C=J.getStyle("overflow")&&C!="hidden"&&!this.adjustmentPass){var a=this.getLayoutTargetSize();if(a.width!=x.width||a.height!=x.height){this.adjustmentPass=true;this.onLayout(g,J)}}delete this.adjustmentPass},destroy:function(){var b=["north","south","east","west"],a,c;for(a=0;a<b.length;a++){c=this[b[a]];if(c){if(c.destroy){c.destroy()}else{if(c.split){c.split.destroy(true)}}}}Ext.layout.BorderLayout.superclass.destroy.call(this)}});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},floatingZIndex:100,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||this.floatable){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('<div class="x-tool x-tool-{id}">&#160;</div>');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:"&#160;"});this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.onExpandClick,this,{stopEvent:true})}else{if(this.collapsible!==false&&!this.hideCollapseTool){var a=this.expandToolEl=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.titleCollapse){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this[this.floatable?"collapseClick":"onExpandClick"],this)}}}return this.collapsedEl},onExpandClick:function(a){if(this.isSlid){this.panel.expand(false)}else{this.panel.expand()}},onCollapseClick:function(a){this.panel.collapse()},beforeCollapse:function(c,a){this.lastAnim=a;if(this.splitEl){this.splitEl.hide()}this.getCollapsedEl().show();var b=this.panel.getEl();this.originalZIndex=b.getStyle("z-index");b.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){if(this.isSlid){this.afterSlideIn()}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",this.floatingZIndex)},onExpand:function(){this.isCollapsed=false;if(this.splitEl){this.splitEl.show()}this.layout.layout();this.panel.el.setStyle("z-index",this.originalZIndex);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){this.autoHideSlideTask=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={mouseout:function(a){if(!a.within(this.el,true)){this.autoHideSlideTask.delay(500)}},mouseover:function(a){this.autoHideSlideTask.cancel()},scope:this}}this.el.on(this.autoHideHd);this.collapsedEl.on(this.autoHideHd)}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover);this.collapsedEl.un("mouseout",this.autoHideHd.mouseout);this.collapsedEl.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 b=this.panel.tools,c,a;if(b&&b.toggle){b.toggle.hide()}this.el.show();a=this.panel.collapsed;this.panel.collapsed=false;if(this.position=="east"||this.position=="west"){c=this.panel.deferHeight;this.panel.deferHeight=false;this.panel.setSize(undefined,this.collapsedEl.getHeight());this.panel.deferHeight=c}else{this.panel.setSize(this.collapsedEl.getWidth(),undefined)}this.panel.collapsed=a;this.restoreLT=[this.el.dom.style.left,this.el.dom.style.top];this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.el.setStyle("z-index",this.floatingZIndex+2);this.panel.el.replaceClass("x-panel-collapsed","x-panel-floating");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.panel.el.replaceClass("x-panel-floating","x-panel-collapsed");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}},destroy:function(){if(this.autoHideSlideTask&&this.autoHideSlideTask.cancel){this.autoHideSlideTask.cancel()}Ext.destroyMembers(this,"miniCollapsedEl","collapsedEl","expandToolEl")}};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:"&#160;",id:this.panel.id+"-xsplit"});if(this.collapseMode=="mini"){this.miniSplitEl=this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-"+d,html:"&#160;"});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.tickSize=this.tickSize;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},destroy:function(){Ext.destroy(this.miniSplitEl,this.split,this.splitEl);Ext.layout.BorderLayout.SplitRegion.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.border=Ext.layout.BorderLayout;Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{labelSeparator:":",trackLabels:true,type:"form",onRemove:function(d){Ext.layout.FormLayout.superclass.onRemove.call(this,d);if(this.trackLabels){d.un("show",this.onFieldShow,this);d.un("hide",this.onFieldHide,this)}var b=d.getPositionEl(),a=d.getItemCt&&d.getItemCt();if(d.rendered&&a){if(b&&b.dom){b.insertAfter(a)}Ext.destroy(a);Ext.destroyMembers(d,"label","itemCt");if(d.customItemCt){Ext.destroyMembers(d,"getItemCt","customItemCt")}}},setContainer:function(a){Ext.layout.FormLayout.superclass.setContainer.call(this,a);if(a.labelAlign){a.addClass("x-form-label-"+a.labelAlign)}if(a.hideLabels){Ext.apply(this,{labelStyle:"display:none",elementStyle:"padding-left:0;",labelAdjust:0})}else{this.labelSeparator=Ext.isDefined(a.labelSeparator)?a.labelSeparator:this.labelSeparator;a.labelWidth=a.labelWidth||100;if(Ext.isNumber(a.labelWidth)){var b=Ext.isNumber(a.labelPad)?a.labelPad:5;Ext.apply(this,{labelAdjust:a.labelWidth+b,labelStyle:"width:"+a.labelWidth+"px;",elementStyle:"padding-left:"+(a.labelWidth+b)+"px"})}if(a.labelAlign=="top"){Ext.apply(this,{labelStyle:"width:auto;",labelAdjust:0,elementStyle:"padding-left:0;"})}}},isHide:function(a){return a.hideLabel||this.container.hideLabels},onFieldShow:function(a){a.getItemCt().removeClass("x-hide-"+a.hideMode);if(a.isComposite){a.doLayout()}},onFieldHide:function(a){a.getItemCt().addClass("x-hide-"+a.hideMode)},getLabelStyle:function(e){var b="",c=[this.labelStyle,e];for(var d=0,a=c.length;d<a;++d){if(c[d]){b+=c[d];if(b.substr(-1,1)!=";"){b+=";"}}}return b},renderItem:function(e,a,d){if(e&&(e.isFormField||e.fieldLabel)&&e.inputType!="hidden"){var b=this.getTemplateArgs(e);if(Ext.isNumber(a)){a=d.dom.childNodes[a]||null}if(a){e.itemCt=this.fieldTpl.insertBefore(a,b,true)}else{e.itemCt=this.fieldTpl.append(d,b,true)}if(!e.getItemCt){Ext.apply(e,{getItemCt:function(){return e.itemCt},customItemCt:true})}e.label=e.getItemCt().child("label.x-form-item-label");if(!e.rendered){e.render("x-form-el-"+e.id)}else{if(!this.isValidParent(e,d)){Ext.fly("x-form-el-"+e.id).appendChild(e.getPositionEl())}}if(this.trackLabels){if(e.hidden){this.onFieldHide(e)}e.on({scope:this,show:this.onFieldShow,hide:this.onFieldHide})}this.configureItem(e)}else{Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments)}},getTemplateArgs:function(b){var a=!b.fieldLabel||b.hideLabel;return{id:b.id,label:b.fieldLabel,itemCls:(b.itemCls||this.container.itemCls||"")+(b.hideLabel?" x-hide-label":""),clearCls:b.clearCls||"x-form-clear-left",labelStyle:this.getLabelStyle(b.labelStyle),elementStyle:this.elementStyle||"",labelSeparator:a?"":(Ext.isDefined(b.labelSeparator)?b.labelSeparator:this.labelSeparator)}},adjustWidthAnchor:function(a,d){if(d.label&&!this.isHide(d)&&(this.container.labelAlign!="top")){var b=Ext.isIE6||(Ext.isIE&&!Ext.isStrict);return a-this.labelAdjust+(b?-3:0)}return a},adjustHeightAnchor:function(a,b){if(b.label&&!this.isHide(b)&&(this.container.labelAlign=="top")){return a-b.label.getHeight()}return a},isValidParent:function(b,a){return a&&this.container.getEl().contains(b.getPositionEl())}});Ext.Container.LAYOUTS.form=Ext.layout.FormLayout;Ext.layout.AccordionLayout=Ext.extend(Ext.layout.FitLayout,{fill:true,autoWidth:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:false,animate:false,sequence:false,activeOnTop:false,type:"accordion",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.setActiveItem(a,true)}else{if(this.activeItem&&this.activeItem!=a){a.collapsed=true}}Ext.layout.AccordionLayout.superclass.renderItem.apply(this,arguments);a.header.addClass("x-accordion-hd");a.on("beforeexpand",this.beforeExpand,this)},onRemove:function(a){Ext.layout.AccordionLayout.superclass.onRemove.call(this,a);if(a.rendered){a.header.removeClass("x-accordion-hd")}a.un("beforeexpand",this.beforeExpand,this)},beforeExpand:function(c,b){var a=this.activeItem;if(a){if(this.sequence){delete this.activeItem;if(!a.collapsed){a.collapse({callback:function(){c.expand(b||true)},scope:this});return false}}else{a.collapse(this.animate)}}this.setActive(c);if(this.activeOnTop){c.el.dom.parentNode.insertBefore(c.el.dom,c.el.dom.parentNode.firstChild)}this.layout()},setItemSize:function(g,e){if(this.fill&&g){var d=0,c,b=this.getRenderedItems(this.container),a=b.length,h;for(c=0;c<a;c++){if((h=b[c])!=g&&!h.hidden){d+=h.header.getHeight()}}e.height-=d;g.setSize(e)}},setActiveItem:function(a){this.setActive(a,true)},setActive:function(c,b){var a=this.activeItem;c=this.container.getComponent(c);if(a!=c){if(c.rendered&&c.collapsed&&b){c.expand()}else{if(a){a.fireEvent("deactivate",a)}this.activeItem=c;c.fireEvent("activate",c)}}}});Ext.Container.LAYOUTS.accordion=Ext.layout.AccordionLayout;Ext.layout.Accordion=Ext.layout.AccordionLayout;Ext.layout.TableLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:false,type:"table",targetCls:"x-table-layout-ct",tableAttrs:null,setContainer:function(a){Ext.layout.TableLayout.superclass.setContainer.call(this,a);this.currentRow=0;this.currentColumn=0;this.cells=[]},onLayout:function(d,g){var e=d.items.items,a=e.length,h,b;if(!this.table){g.addClass("x-table-layout-ct");this.table=g.createChild(Ext.apply({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},this.tableAttrs),null,true)}this.renderAll(d,g)},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(k){var a=this.getNextNonSpan(this.currentColumn,this.currentRow);var g=this.currentColumn=a[0],e=this.currentRow=a[1];for(var i=e;i<e+(k.rowspan||1);i++){if(!this.cells[i]){this.cells[i]=[]}for(var d=g;d<g+(k.colspan||1);d++){this.cells[i][d]=true}}var h=document.createElement("td");if(k.cellId){h.id=k.cellId}var b="x-table-layout-cell";if(k.cellCls){b+=" "+k.cellCls}h.className=b;if(k.colspan){h.colSpan=k.colspan}if(k.rowspan){h.rowSpan=k.rowspan}this.getRow(e).appendChild(h);return h},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(e,a,d){if(!this.table){this.table=d.createChild(Ext.apply({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},this.tableAttrs),null,true)}if(e&&!e.rendered){e.render(this.getNextCell(e));this.configureItem(e)}else{if(e&&!this.isValidParent(e,d)){var b=this.getNextCell(e);b.insertBefore(e.getPositionEl().dom,null);e.container=Ext.get(b);this.configureItem(e)}}},isValidParent:function(b,a){return b.getPositionEl().up("table",5).dom.parentNode===(a.dom||a)},destroy:function(){delete this.table;Ext.layout.TableLayout.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.table=Ext.layout.TableLayout;Ext.layout.AbsoluteLayout=Ext.extend(Ext.layout.AnchorLayout,{extraCls:"x-abs-layout-item",type:"absolute",onLayout:function(a,b){b.position();this.paddingLeft=b.getPadding("l");this.paddingTop=b.getPadding("t");Ext.layout.AbsoluteLayout.superclass.onLayout.call(this,a,b)},adjustWidthAnchor:function(b,a){return b?b-a.getPosition(true)[0]+this.paddingLeft:b},adjustHeightAnchor:function(b,a){return b?b-a.getPosition(true)[1]+this.paddingTop:b}});Ext.Container.LAYOUTS.absolute=Ext.layout.AbsoluteLayout;Ext.layout.BoxLayout=Ext.extend(Ext.layout.ContainerLayout,{defaultMargins:{left:0,top:0,right:0,bottom:0},padding:"0",pack:"start",monitorResize:true,type:"box",scrollOffset:0,extraCls:"x-box-item",targetCls:"x-box-layout-ct",innerCls:"x-box-inner",constructor:function(a){Ext.layout.BoxLayout.superclass.constructor.call(this,a);if(Ext.isString(this.defaultMargins)){this.defaultMargins=this.parseMargins(this.defaultMargins)}var d=this.overflowHandler;if(typeof d=="string"){d={type:d}}var c="none";if(d&&d.type!=undefined){c=d.type}var b=Ext.layout.boxOverflow[c];if(b[this.type]){b=b[this.type]}this.overflowHandler=new b(this,d)},onLayout:function(b,h){Ext.layout.BoxLayout.superclass.onLayout.call(this,b,h);var d=this.getLayoutTargetSize(),i=this.getVisibleItems(b),c=this.calculateChildBoxes(i,d),g=c.boxes,k=c.meta;if(d.width>0){var l=this.overflowHandler,a=k.tooNarrow?"handleOverflow":"clearOverflow";var e=l[a](c,d);if(e){if(e.targetSize){d=e.targetSize}if(e.recalculate){i=this.getVisibleItems(b);c=this.calculateChildBoxes(i,d);g=c.boxes}}}this.layoutTargetLastSize=d;this.childBoxCache=c;this.updateInnerCtSize(d,c);this.updateChildBoxes(g);this.handleTargetOverflow(d,b,h)},updateChildBoxes:function(c){for(var b=0,e=c.length;b<e;b++){var d=c[b],a=d.component;if(d.dirtySize){a.setSize(d.width,d.height)}if(isNaN(d.left)||isNaN(d.top)){continue}a.setPosition(d.left,d.top)}},updateInnerCtSize:function(c,h){var i=this.align,g=this.padding,e=c.width,a=c.height;if(this.type=="hbox"){var b=e,d=h.meta.maxHeight+g.top+g.bottom;if(i=="stretch"){d=a}else{if(i=="middle"){d=Math.max(a,d)}}}else{var d=a,b=h.meta.maxWidth+g.left+g.right;if(i=="stretch"){b=e}else{if(i=="center"){b=Math.max(e,b)}}}this.innerCt.setSize(b||undefined,d||undefined)},handleTargetOverflow:function(d,a,c){var e=c.getStyle("overflow");if(e&&e!="hidden"&&!this.adjustmentPass){var b=this.getLayoutTargetSize();if(b.width!=d.width||b.height!=d.height){this.adjustmentPass=true;this.onLayout(a,c)}}delete this.adjustmentPass},isValidParent:function(b,a){return this.innerCt&&b.getPositionEl().dom.parentNode==this.innerCt.dom},getVisibleItems:function(g){var g=g||this.container,e=g.getLayoutTarget(),h=g.items.items,a=h.length,d,k,b=[];for(d=0;d<a;d++){if((k=h[d]).rendered&&this.isValidParent(k,e)&&k.hidden!==true&&k.collapsed!==true&&k.shouldLayout!==false){b.push(k)}}return b},renderAll:function(a,b){if(!this.innerCt){this.innerCt=b.createChild({cls:this.innerCls});this.padding=this.parseMargins(this.padding)}Ext.layout.BoxLayout.superclass.renderAll.call(this,a,this.innerCt)},getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a;if(b){a=b.getViewSize();if(Ext.isIE&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},renderItem:function(a){if(Ext.isString(a.margins)){a.margins=this.parseMargins(a.margins)}else{if(!a.margins){a.margins=this.defaultMargins}}Ext.layout.BoxLayout.superclass.renderItem.apply(this,arguments)},destroy:function(){Ext.destroy(this.overflowHandler);Ext.layout.BoxLayout.superclass.destroy.apply(this,arguments)}});Ext.ns("Ext.layout.boxOverflow");Ext.layout.boxOverflow.None=Ext.extend(Object,{constructor:function(b,a){this.layout=b;Ext.apply(this,a||{})},handleOverflow:Ext.emptyFn,clearOverflow:Ext.emptyFn});Ext.layout.boxOverflow.none=Ext.layout.boxOverflow.None;Ext.layout.boxOverflow.Menu=Ext.extend(Ext.layout.boxOverflow.None,{afterCls:"x-strip-right",noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>',constructor:function(a){Ext.layout.boxOverflow.Menu.superclass.constructor.apply(this,arguments);this.menuItems=[]},createInnerElements:function(){if(!this.afterCt){this.afterCt=this.layout.innerCt.insertSibling({cls:this.afterCls},"before")}},clearOverflow:function(a,g){var e=g.width+(this.afterCt?this.afterCt.getWidth():0),b=this.menuItems;this.hideTrigger();for(var c=0,d=b.length;c<d;c++){b.pop().component.show()}return{targetSize:{height:g.height,width:e}}},showTrigger:function(){this.createMenu();this.menuTrigger.show()},hideTrigger:function(){if(this.menuTrigger!=undefined){this.menuTrigger.hide()}},beforeMenuShow:function(h){var b=this.menuItems,a=b.length,g,e;var c=function(k,i){return k.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)};this.clearMenu();h.removeAll();for(var d=0;d<a;d++){g=b[d].component;if(e&&(c(g,e)||c(e,g))){h.add("-")}this.addComponentToMenu(h,g);e=g}if(h.items.length<1){h.add(this.noItemsMenuText)}},createMenuConfig:function(c,a){var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a});if(d||c.enableToggle){Ext.apply(b,{group:d,checked:c.pressed,listeners:{checkchange:function(g,e){c.toggle(e)}}})}delete b.ownerCt;delete b.xtype;delete b.id;return b},addComponentToMenu:function(b,a){if(a instanceof Ext.Toolbar.Separator){b.add("-")}else{if(Ext.isFunction(a.isXType)){if(a.isXType("splitbutton")){b.add(this.createMenuConfig(a,true))}else{if(a.isXType("button")){b.add(this.createMenuConfig(a,!a.menu))}else{if(a.isXType("buttongroup")){a.items.each(function(c){this.addComponentToMenu(b,c)},this)}}}}}},clearMenu:function(){var a=this.moreMenu;if(a&&a.items){a.items.each(function(b){delete b.menu})}},createMenu:function(){if(!this.menuTrigger){this.createInnerElements();this.menu=new Ext.menu.Menu({ownerCt:this.layout.container,listeners:{scope:this,beforeshow:this.beforeMenuShow}});this.menuTrigger=new Ext.Button({iconCls:"x-toolbar-more-icon",cls:"x-toolbar-more",menu:this.menu,renderTo:this.afterCt})}},destroy:function(){Ext.destroy(this.menu,this.menuTrigger)}});Ext.layout.boxOverflow.menu=Ext.layout.boxOverflow.Menu;Ext.layout.boxOverflow.HorizontalMenu=Ext.extend(Ext.layout.boxOverflow.Menu,{constructor:function(){Ext.layout.boxOverflow.HorizontalMenu.superclass.constructor.apply(this,arguments);var c=this,b=c.layout,a=b.calculateChildBoxes;b.calculateChildBoxes=function(d,i){var m=a.apply(b,arguments),l=m.meta,e=c.menuItems;var k=0;for(var g=0,h=e.length;g<h;g++){k+=e[g].width}l.minimumWidth+=k;l.tooNarrow=l.minimumWidth>i.width;return m}},handleOverflow:function(d,h){this.showTrigger();var l=h.width-this.afterCt.getWidth(),m=d.boxes,e=0,s=false;for(var p=0,c=m.length;p<c;p++){e+=m[p].width}var a=l-e,g=0;for(var p=0,c=this.menuItems.length;p<c;p++){var o=this.menuItems[p],n=o.component,b=o.width;if(b<a){n.show();a-=b;g++;s=true}else{break}}if(s){this.menuItems=this.menuItems.slice(g)}else{for(var k=m.length-1;k>=0;k--){var r=m[k].component,q=m[k].left+m[k].width;if(q>=l){this.menuItems.unshift({component:r,width:m[k].width});r.hide()}else{break}}}if(this.menuItems.length==0){this.hideTrigger()}return{targetSize:{height:h.height,width:l},recalculate:s}}});Ext.layout.boxOverflow.menu.hbox=Ext.layout.boxOverflow.HorizontalMenu;Ext.layout.boxOverflow.Scroller=Ext.extend(Ext.layout.boxOverflow.None,{animateScroll:true,scrollIncrement:100,wheelIncrement:3,scrollRepeatInterval:400,scrollDuration:0.4,beforeCls:"x-strip-left",afterCls:"x-strip-right",scrollerCls:"x-strip-scroller",beforeScrollerCls:"x-strip-scroller-left",afterScrollerCls:"x-strip-scroller-right",createWheelListener:function(){this.layout.innerCt.on({scope:this,mousewheel:function(a){a.stopEvent();this.scrollBy(a.getWheelDelta()*this.wheelIncrement*-1,false)}})},handleOverflow:function(a,b){this.createInnerElements();this.showScrollers()},clearOverflow:function(){this.hideScrollers()},showScrollers:function(){this.createScrollers();this.beforeScroller.show();this.afterScroller.show();this.updateScrollButtons()},hideScrollers:function(){if(this.beforeScroller!=undefined){this.beforeScroller.hide();this.afterScroller.hide()}},createScrollers:function(){if(!this.beforeScroller&&!this.afterScroller){var a=this.beforeCt.createChild({cls:String.format("{0} {1} ",this.scrollerCls,this.beforeScrollerCls)});var b=this.afterCt.createChild({cls:String.format("{0} {1}",this.scrollerCls,this.afterScrollerCls)});a.addClassOnOver(this.beforeScrollerCls+"-hover");b.addClassOnOver(this.afterScrollerCls+"-hover");a.setVisibilityMode(Ext.Element.DISPLAY);b.setVisibilityMode(Ext.Element.DISPLAY);this.beforeRepeater=new Ext.util.ClickRepeater(a,{interval:this.scrollRepeatInterval,handler:this.scrollLeft,scope:this});this.afterRepeater=new Ext.util.ClickRepeater(b,{interval:this.scrollRepeatInterval,handler:this.scrollRight,scope:this});this.beforeScroller=a;this.afterScroller=b}},destroy:function(){Ext.destroy(this.beforeScroller,this.afterScroller,this.beforeRepeater,this.afterRepeater,this.beforeCt,this.afterCt)},scrollBy:function(b,a){this.scrollTo(this.getScrollPosition()+b,a)},getItem:function(a){if(Ext.isString(a)){a=Ext.getCmp(a)}else{if(Ext.isNumber(a)){a=this.items[a]}}return a},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){if(this.beforeScroller==undefined||this.afterScroller==undefined){return}var d=this.atExtremeBefore()?"addClass":"removeClass",c=this.atExtremeAfter()?"addClass":"removeClass",a=this.beforeScrollerCls+"-disabled",b=this.afterScrollerCls+"-disabled";this.beforeScroller[d](a);this.afterScroller[c](b);this.scrolling=false},atExtremeBefore:function(){return this.getScrollPosition()===0},scrollLeft:function(a){this.scrollBy(-this.scrollIncrement,a)},scrollRight:function(a){this.scrollBy(this.scrollIncrement,a)},scrollToItem:function(d,b){d=this.getItem(d);if(d!=undefined){var a=this.getItemVisibility(d);if(!a.fullyVisible){var c=d.getBox(true,true),e=c.x;if(a.hiddenRight){e-=(this.layout.innerCt.getWidth()-c.width)}this.scrollTo(e,b)}}},getItemVisibility:function(e){var d=this.getItem(e).getBox(true,true),a=d.x,c=d.x+d.width,g=this.getScrollPosition(),b=this.layout.innerCt.getWidth()+g;return{hiddenLeft:a<g,hiddenRight:c>b,fullyVisible:a>g&&c<b}}});Ext.layout.boxOverflow.scroller=Ext.layout.boxOverflow.Scroller;Ext.layout.boxOverflow.VerticalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{scrollIncrement:75,wheelIncrement:2,handleOverflow:function(a,b){Ext.layout.boxOverflow.VerticalScroller.superclass.handleOverflow.apply(this,arguments);return{targetSize:{height:b.height-(this.beforeCt.getHeight()+this.afterCt.getHeight()),width:b.width}}},createInnerElements:function(){var a=this.layout.innerCt;if(!this.beforeCt){this.beforeCt=a.insertSibling({cls:this.beforeCls},"before");this.afterCt=a.insertSibling({cls:this.afterCls},"after");this.createWheelListener()}},scrollTo:function(a,b){var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollBottom());if(c!=d&&!this.scrolling){if(b==undefined){b=this.animateScroll}this.layout.innerCt.scrollTo("top",c,b?this.getScrollAnim():false);if(b){this.scrolling=true}else{this.scrolling=false;this.updateScrollButtons()}}},getScrollPosition:function(){return parseInt(this.layout.innerCt.dom.scrollTop,10)||0},getMaxScrollBottom:function(){return this.layout.innerCt.dom.scrollHeight-this.layout.innerCt.getHeight()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollBottom()}});Ext.layout.boxOverflow.scroller.vbox=Ext.layout.boxOverflow.VerticalScroller;Ext.layout.boxOverflow.HorizontalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{handleOverflow:function(a,b){Ext.layout.boxOverflow.HorizontalScroller.superclass.handleOverflow.apply(this,arguments);return{targetSize:{height:b.height,width:b.width-(this.beforeCt.getWidth()+this.afterCt.getWidth())}}},createInnerElements:function(){var a=this.layout.innerCt;if(!this.beforeCt){this.afterCt=a.insertSibling({cls:this.afterCls},"before");this.beforeCt=a.insertSibling({cls:this.beforeCls},"before");this.createWheelListener()}},scrollTo:function(a,b){var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollRight());if(c!=d&&!this.scrolling){if(b==undefined){b=this.animateScroll}this.layout.innerCt.scrollTo("left",c,b?this.getScrollAnim():false);if(b){this.scrolling=true}else{this.scrolling=false;this.updateScrollButtons()}}},getScrollPosition:function(){return parseInt(this.layout.innerCt.dom.scrollLeft,10)||0},getMaxScrollRight:function(){return this.layout.innerCt.dom.scrollWidth-this.layout.innerCt.getWidth()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollRight()}});Ext.layout.boxOverflow.scroller.hbox=Ext.layout.boxOverflow.HorizontalScroller;Ext.layout.HBoxLayout=Ext.extend(Ext.layout.BoxLayout,{align:"top",type:"hbox",calculateChildBoxes:function(s,b){var G=s.length,S=this.padding,E=S.top,V=S.left,z=E+S.bottom,P=V+S.right,a=b.width-this.scrollOffset,e=b.height,p=Math.max(0,e-z),Q=this.pack=="start",X=this.pack=="center",B=this.pack=="end",M=0,R=0,U=0,m=0,Y=0,I=[],l,K,N,W,x,k,T,J,c,y,r,O;for(T=0;T<G;T++){l=s[T];N=l.height;K=l.width;k=!l.hasLayout&&typeof l.doLayout=="function";if(typeof K!="number"){if(l.flex&&!K){U+=l.flex}else{if(!K&&k){l.doLayout()}W=l.getSize();K=W.width;N=W.height}}x=l.margins;y=x.left+x.right;M+=y+(K||0);m+=y+(l.flex?l.minWidth||0:K);Y+=y+(l.minWidth||K||0);if(typeof N!="number"){if(k){l.doLayout()}N=l.getHeight()}R=Math.max(R,N+x.top+x.bottom);I.push({component:l,height:N||undefined,width:K||undefined})}var L=m-a,q=Y>a;var o=Math.max(0,a-M-P);if(q){for(T=0;T<G;T++){I[T].width=s[T].minWidth||s[T].width||I[T].width}}else{if(L>0){var D=[];for(var F=0,w=G;F<w;F++){var C=s[F],u=C.minWidth||0;if(C.flex){I[F].width=u}else{D.push({minWidth:u,available:I[F].width-u,index:F})}}D.sort(function(Z,i){return Z.available>i.available?1:-1});for(var T=0,w=D.length;T<w;T++){var H=D[T].index;if(H==undefined){continue}var C=s[H],n=I[H],v=n.width,u=C.minWidth,d=Math.max(u,v-Math.ceil(L/(w-T))),g=v-d;I[H].width=d;L-=g}}else{var h=o,t=U;for(T=0;T<G;T++){l=s[T];J=I[T];x=l.margins;r=x.top+x.bottom;if(Q&&l.flex&&!l.width){c=Math.ceil((l.flex/t)*h);h-=c;t-=l.flex;J.width=c;J.dirtySize=true}}}}if(X){V+=o/2}else{if(B){V+=o}}for(T=0;T<G;T++){l=s[T];J=I[T];x=l.margins;V+=x.left;r=x.top+x.bottom;J.left=V;J.top=E+x.top;switch(this.align){case"stretch":O=p-r;J.height=O.constrain(l.minHeight||0,l.maxHeight||1000000);J.dirtySize=true;break;case"stretchmax":O=R-r;J.height=O.constrain(l.minHeight||0,l.maxHeight||1000000);J.dirtySize=true;break;case"middle":var A=p-J.height-r;if(A>0){J.top=E+r+(A/2)}}V+=J.width+x.right}return{boxes:I,meta:{maxHeight:R,nonFlexWidth:M,desiredWidth:m,minimumWidth:Y,shortfall:m-a,tooNarrow:q}}}});Ext.Container.LAYOUTS.hbox=Ext.layout.HBoxLayout;Ext.layout.VBoxLayout=Ext.extend(Ext.layout.BoxLayout,{align:"left",type:"vbox",calculateChildBoxes:function(q,b){var G=q.length,T=this.padding,E=T.top,W=T.left,z=E+T.bottom,Q=W+T.right,a=b.width-this.scrollOffset,d=b.height,M=Math.max(0,a-Q),R=this.pack=="start",Y=this.pack=="center",B=this.pack=="end",m=0,w=0,V=0,N=0,o=0,I=[],k,K,P,X,v,h,U,J,c,y,p,e;for(U=0;U<G;U++){k=q[U];P=k.height;K=k.width;h=!k.hasLayout&&typeof k.doLayout=="function";if(typeof P!="number"){if(k.flex&&!P){V+=k.flex}else{if(!P&&h){k.doLayout()}X=k.getSize();K=X.width;P=X.height}}v=k.margins;p=v.top+v.bottom;m+=p+(P||0);N+=p+(k.flex?k.minHeight||0:P);o+=p+(k.minHeight||P||0);if(typeof K!="number"){if(h){k.doLayout()}K=k.getWidth()}w=Math.max(w,K+v.left+v.right);I.push({component:k,height:P||undefined,width:K||undefined})}var O=N-d,n=o>d;var s=Math.max(0,(d-m-z));if(n){for(U=0,t=G;U<t;U++){I[U].height=q[U].minHeight||q[U].height||I[U].height}}else{if(O>0){var L=[];for(var F=0,t=G;F<t;F++){var C=q[F],u=C.minHeight||0;if(C.flex){I[F].height=u}else{L.push({minHeight:u,available:I[F].height-u,index:F})}}L.sort(function(Z,i){return Z.available>i.available?1:-1});for(var U=0,t=L.length;U<t;U++){var H=L[U].index;if(H==undefined){continue}var C=q[H],l=I[H],x=l.height,u=C.minHeight,D=Math.max(u,x-Math.ceil(O/(t-U))),g=x-D;I[H].height=D;O-=g}}else{var S=s,r=V;for(U=0;U<G;U++){k=q[U];J=I[U];v=k.margins;y=v.left+v.right;if(R&&k.flex&&!k.height){flexedHeight=Math.ceil((k.flex/r)*S);S-=flexedHeight;r-=k.flex;J.height=flexedHeight;J.dirtySize=true}}}}if(Y){E+=s/2}else{if(B){E+=s}}for(U=0;U<G;U++){k=q[U];J=I[U];v=k.margins;E+=v.top;y=v.left+v.right;J.left=W+v.left;J.top=E;switch(this.align){case"stretch":e=M-y;J.width=e.constrain(k.minWidth||0,k.maxWidth||1000000);J.dirtySize=true;break;case"stretchmax":e=w-y;J.width=e.constrain(k.minWidth||0,k.maxWidth||1000000);J.dirtySize=true;break;case"center":var A=M-J.width-y;if(A>0){J.left=W+y+(A/2)}}E+=J.height+v.bottom}return{boxes:I,meta:{maxWidth:w,nonFlexHeight:m,desiredHeight:N,minimumHeight:o,shortfall:N-d,tooNarrow:n}}}});Ext.Container.LAYOUTS.vbox=Ext.layout.VBoxLayout;Ext.layout.ToolbarLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"toolbar",triggerWidth:18,noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>',lastOverflow:false,tableHTML:['<table cellspacing="0" class="x-toolbar-ct">',"<tbody>","<tr>",'<td class="x-toolbar-left" align="{0}">','<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-left-row"></tr>',"</tbody>","</table>","</td>",'<td class="x-toolbar-right" align="right">','<table cellspacing="0" class="x-toolbar-right-ct">',"<tbody>","<tr>","<td>",'<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-right-row"></tr>',"</tbody>","</table>","</td>","<td>",'<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-extras-row"></tr>',"</tbody>","</table>","</td>","</tr>","</tbody>","</table>","</td>","</tr>","</tbody>","</table>"].join(""),onLayout:function(e,k){if(!this.leftTr){var h=e.buttonAlign=="center"?"center":"left";k.addClass("x-toolbar-layout-ct");k.insertHtml("beforeEnd",String.format(this.tableHTML,h));this.leftTr=k.child("tr.x-toolbar-left-row",true);this.rightTr=k.child("tr.x-toolbar-right-row",true);this.extrasTr=k.child("tr.x-toolbar-extras-row",true);if(this.hiddenItem==undefined){this.hiddenItems=[]}}var l=e.buttonAlign=="right"?this.rightTr:this.leftTr,m=e.items.items,d=0;for(var b=0,g=m.length,n;b<g;b++,d++){n=m[b];if(n.isFill){l=this.rightTr;d=-1}else{if(!n.rendered){n.render(this.insertCell(n,l,d));this.configureItem(n)}else{if(!n.xtbHidden&&!this.isValidParent(n,l.childNodes[d])){var a=this.insertCell(n,l,d);a.appendChild(n.getPositionEl().dom);n.container=Ext.get(a)}}}}this.cleanup(this.leftTr);this.cleanup(this.rightTr);this.cleanup(this.extrasTr);this.fitToSize(k)},cleanup:function(b){var e=b.childNodes,a,d;for(a=e.length-1;a>=0&&(d=e[a]);a--){if(!d.firstChild){b.removeChild(d)}}},insertCell:function(e,b,a){var d=document.createElement("td");d.className="x-toolbar-cell";b.insertBefore(d,b.childNodes[a]||null);return d},hideItem:function(a){this.hiddenItems.push(a);a.xtbHidden=true;a.xtbWidth=a.getPositionEl().dom.parentNode.offsetWidth;a.hide()},unhideItem:function(a){a.show();a.xtbHidden=false;this.hiddenItems.remove(a)},getItemWidth:function(a){return a.hidden?(a.xtbWidth||0):a.getPositionEl().dom.parentNode.offsetWidth},fitToSize:function(l){if(this.container.enableOverflow===false){return}var b=l.dom.clientWidth,k=l.dom.firstChild.offsetWidth,n=b-this.triggerWidth,a=this.lastWidth||0,c=this.hiddenItems,e=c.length!=0,o=b>=a;this.lastWidth=b;if(k>b||(e&&o)){var m=this.container.items.items,h=m.length,d=0,p;for(var g=0;g<h;g++){p=m[g];if(!p.isFill){d+=this.getItemWidth(p);if(d>n){if(!(p.hidden||p.xtbHidden)){this.hideItem(p)}}else{if(p.xtbHidden){this.unhideItem(p)}}}}}e=c.length!=0;if(e){this.initMore();if(!this.lastOverflow){this.container.fireEvent("overflowchange",this.container,true);this.lastOverflow=true}}else{if(this.more){this.clearMenu();this.more.destroy();delete this.more;if(this.lastOverflow){this.container.fireEvent("overflowchange",this.container,false);this.lastOverflow=false}}}},createMenuConfig:function(c,a){var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a});if(d||c.enableToggle){Ext.apply(b,{group:d,checked:c.pressed,listeners:{checkchange:function(g,e){c.toggle(e)}}})}delete b.ownerCt;delete b.xtype;delete b.id;return b},addComponentToMenu:function(b,a){if(a instanceof Ext.Toolbar.Separator){b.add("-")}else{if(Ext.isFunction(a.isXType)){if(a.isXType("splitbutton")){b.add(this.createMenuConfig(a,true))}else{if(a.isXType("button")){b.add(this.createMenuConfig(a,!a.menu))}else{if(a.isXType("buttongroup")){a.items.each(function(c){this.addComponentToMenu(b,c)},this)}}}}}},clearMenu:function(){var a=this.moreMenu;if(a&&a.items){a.items.each(function(b){delete b.menu})}},beforeMoreShow:function(h){var b=this.container.items.items,a=b.length,g,e;var c=function(k,i){return k.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)};this.clearMenu();h.removeAll();for(var d=0;d<a;d++){g=b[d];if(g.xtbHidden){if(e&&(c(g,e)||c(e,g))){h.add("-")}this.addComponentToMenu(h,g);e=g}}if(h.items.length<1){h.add(this.noItemsMenuText)}},initMore:function(){if(!this.more){this.moreMenu=new Ext.menu.Menu({ownerCt:this.container,listeners:{beforeshow:this.beforeMoreShow,scope:this}});this.more=new Ext.Button({iconCls:"x-toolbar-more-icon",cls:"x-toolbar-more",menu:this.moreMenu,ownerCt:this.container});var a=this.insertCell(this.more,this.extrasTr,100);this.more.render(a)}},destroy:function(){Ext.destroy(this.more,this.moreMenu);delete this.leftTr;delete this.rightTr;delete this.extrasTr;Ext.layout.ToolbarLayout.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.toolbar=Ext.layout.ToolbarLayout;Ext.layout.MenuLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"menu",setContainer:function(a){this.monitorResize=!a.floating;a.on("autosize",this.doAutoSize,this);Ext.layout.MenuLayout.superclass.setContainer.call(this,a)},renderItem:function(g,b,e){if(!this.itemTpl){this.itemTpl=Ext.layout.MenuLayout.prototype.itemTpl=new Ext.XTemplate('<li id="{itemId}" class="{itemCls}">','<tpl if="needsIcon">','<img alt="{altText}" src="{icon}" class="{iconCls}"/>',"</tpl>","</li>")}if(g&&!g.rendered){if(Ext.isNumber(b)){b=e.dom.childNodes[b]}var d=this.getItemArgs(g);g.render(g.positionEl=b?this.itemTpl.insertBefore(b,d,true):this.itemTpl.append(e,d,true));g.positionEl.menuItemId=g.getItemId();if(!d.isMenuItem&&d.needsIcon){g.positionEl.addClass("x-menu-list-item-indent")}this.configureItem(g)}else{if(g&&!this.isValidParent(g,e)){if(Ext.isNumber(b)){b=e.dom.childNodes[b]}e.dom.insertBefore(g.getActionEl().dom,b||null)}}},getItemArgs:function(d){var a=d instanceof Ext.menu.Item,b=!(a||d instanceof Ext.menu.Separator);return{isMenuItem:a,needsIcon:b&&(d.icon||d.iconCls),icon:d.icon||Ext.BLANK_IMAGE_URL,iconCls:"x-menu-item-icon "+(d.iconCls||""),itemId:"x-menu-el-"+d.id,itemCls:"x-menu-list-item ",altText:d.altText||""}},isValidParent:function(b,a){return b.el.up("li.x-menu-list-item",5).dom.parentNode===(a.dom||a)},onLayout:function(a,b){Ext.layout.MenuLayout.superclass.onLayout.call(this,a,b);this.doAutoSize()},doAutoSize:function(){var c=this.container,a=c.width;if(c.floating){if(a){c.setWidth(a)}else{if(Ext.isIE){c.setWidth(Ext.isStrict&&(Ext.isIE7||Ext.isIE8)?"auto":c.minWidth);var d=c.getEl(),b=d.dom.offsetWidth;c.setWidth(c.getLayoutTarget().getWidth()+d.getFrameWidth("lr"))}}}}});Ext.Container.LAYOUTS.menu=Ext.layout.MenuLayout;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",preventBodyReset:false,padding:undefined,resizeEvent:"bodyresize",toolTarget:"header",collapseEl:"bwrap",slideAnchor:"t",disabledClass:"",deferHeight:true,expandDefaults:{duration:0.25},collapseDefaults:{duration:0.25},initComponent:function(){Ext.Panel.superclass.initComponent.call(this);this.addEvents("bodyresize","titlechange","iconchange","collapse","expand","beforecollapse","beforeexpand","beforeclose","close","activate","deactivate");if(this.unstyled){this.baseCls="x-plain"}this.toolbars=[];if(this.tbar){this.elements+=",tbar";this.topToolbar=this.createToolbar(this.tbar);this.tbar=null}if(this.bbar){this.elements+=",bbar";this.bottomToolbar=this.createToolbar(this.bbar);this.bbar=null}if(this.header===true){this.elements+=",header";this.header=null}else{if(this.headerCfg||(this.title&&this.header!==false)){this.elements+=",header"}}if(this.footerCfg||this.footer===true){this.elements+=",footer";this.footer=null}if(this.buttons){this.fbar=this.buttons;this.buttons=null}if(this.fbar){this.createFbar(this.fbar)}if(this.autoLoad){this.on("render",this.doAutoLoad,this,{delay:10})}},createFbar:function(b){var a=this.minButtonWidth;this.elements+=",footer";this.fbar=this.createToolbar(b,{buttonAlign:this.buttonAlign,toolbarCls:"x-panel-fbar",enableOverflow:false,defaults:function(d){return{minWidth:d.minWidth||a}}});this.fbar.items.each(function(d){d.minWidth=d.minWidth||this.minButtonWidth},this);this.buttons=this.fbar.items.items},createToolbar:function(b,c){var a;if(Ext.isArray(b)){b={items:b}}a=b.events?Ext.apply(b,c):this.createComponent(Ext.apply({},b,c),"toolbar");this.toolbars.push(a);return a},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))}if(this[a+"CssClass"]){this[a].addClass(this[a+"CssClass"])}if(this[a+"Style"]){this[a].applyStyles(this[a+"Style"])}}},onRender:function(g,e){Ext.Panel.superclass.onRender.call(this,g,e);this.createClasses();var a=this.el,h=a.dom,l,i;if(this.collapsible&&!this.hideCollapseTool){this.tools=this.tools?this.tools.slice(0):[];this.tools[this.collapseFirst?"unshift":"push"]({id:"toggle",handler:this.toggleCollapse,scope:this})}if(this.tools){i=this.tools;this.elements+=(this.header!==false)?",header":""}this.tools={};a.addClass(this.baseCls);if(h.firstChild){this.header=a.down("."+this.headerCls);this.bwrap=a.down("."+this.bwrapCls);var k=this.bwrap?this.bwrap:a;this.tbar=k.down("."+this.tbarCls);this.body=k.down("."+this.bodyCls);this.bbar=k.down("."+this.bbarCls);this.footer=k.down("."+this.footerCls);this.fromMarkup=true}if(this.preventBodyReset===true){a.addClass("x-panel-reset")}if(this.cls){a.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",h.firstChild.firstChild.firstChild);this.createElement("bwrap",h);l=this.bwrap.dom;var c=h.childNodes[1],b=h.childNodes[2];l.appendChild(c);l.appendChild(b);var m=l.firstChild.firstChild.firstChild;this.createElement("tbar",m);this.createElement("body",m);this.createElement("bbar",m);this.createElement("footer",l.lastChild.firstChild.firstChild);if(!this.footer){this.bwrap.dom.lastChild.className+=" x-panel-nofooter"}this.ft=Ext.get(this.bwrap.dom.lastChild);this.mc=Ext.get(m)}else{this.createElement("header",h);this.createElement("bwrap",h);l=this.bwrap.dom;this.createElement("tbar",l);this.createElement("body",l);this.createElement("bbar",l);this.createElement("footer",l);if(!this.header){this.body.addClass(this.bodyCls+"-noheader");if(this.tbar){this.tbar.addClass(this.tbarCls+"-noheader")}}}if(Ext.isDefined(this.padding)){this.body.setStyle("padding",this.body.addUnits(this.padding))}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")}this.bwrap.enableDisplayMode("block");if(this.header){this.header.unselectable();if(this.headerAsText){this.header.dom.innerHTML='<span class="'+this.headerTextCls+'">'+this.header.dom.innerHTML+"</span>";if(this.iconCls){this.setIconClass(this.iconCls)}}}if(this.floating){this.makeFloating(this.floating)}if(this.collapsible&&this.titleCollapse&&this.header){this.mon(this.header,"click",this.toggleCollapse,this);this.header.setStyle("cursor","pointer")}if(i){this.addTool.apply(this,i)}if(this.fbar){this.footer.addClass("x-panel-btns");this.fbar.ownerCt=this;this.fbar.render(this.footer);this.footer.createChild({cls:"x-clear"})}if(this.tbar&&this.topToolbar){this.topToolbar.ownerCt=this;this.topToolbar.render(this.tbar)}if(this.bbar&&this.bottomToolbar){this.bottomToolbar.ownerCt=this;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 e=this.header,c=e.child("img.x-panel-inline-icon");if(c){Ext.fly(c).replaceClass(a,this.iconCls)}else{var d=e.child("span."+this.headerTextCls);if(d){Ext.DomHelper.insertBefore(d.dom,{tag:"img",alt:"",src:Ext.BLANK_IMAGE_URL,cls:"x-panel-inline-icon "+this.iconCls})}}}}this.fireEvent("iconchange",this,b,a)},makeFloating:function(a){this.floating=true;this.el=new Ext.Layer(Ext.apply({},a,{shadow:Ext.isDefined(this.shadow)?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},getFooterToolbar:function(){return this.fbar},addButton:function(a,c,b){if(!this.fbar){this.createFbar([])}if(c){if(Ext.isString(a)){a={text:a}}a=Ext.apply({handler:c,scope:b},a)}return this.fbar.add(a)},addTool:function(){if(!this.rendered){if(!this.tools){this.tools=[]}Ext.each(arguments,function(a){this.tools.push(a)},this);return}if(!this[this.toolTarget]){return}if(!this.toolTemplate){var h=new Ext.Template('<div class="x-tool x-tool-{id}">&#160;</div>');h.disableFormats=true;h.compile();Ext.Panel.prototype.toolTemplate=h}for(var g=0,d=arguments,c=d.length;g<c;g++){var b=d[g];if(!this.tools[b.id]){var k="x-tool-"+b.id+"-over";var e=this.toolTemplate.insertFirst(this[this.toolTarget],b,true);this.tools[b.id]=e;e.enableDisplayMode("block");this.mon(e,"click",this.createToolHandler(e,b,k,this));if(b.on){this.mon(e,b.on)}if(b.hidden){e.hide()}if(b.qtip){if(Ext.isObject(b.qtip)){Ext.QuickTips.register(Ext.apply({target:e.id},b.qtip))}else{e.dom.qtip=b.qtip}}e.addClassOnOver(k)}}},onLayout:function(b,a){Ext.Panel.superclass.onLayout.apply(this,arguments);if(this.hasLayout&&this.toolbars.length>0){Ext.each(this.toolbars,function(c){c.doLayout(undefined,a)});this.syncHeight()}},syncHeight:function(){var b=this.toolbarHeight,c=this.body,a=this.lastSize.height,d;if(this.autoHeight||!Ext.isDefined(a)||a=="auto"){return}if(b!=this.getToolbarHeight()){b=Math.max(0,a-this.getFrameHeight());c.setHeight(b);d=c.getSize();this.toolbarHeight=this.getToolbarHeight();this.onBodyResize(d.width,d.height)}},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(g){c.removeClass(d);if(a.stopEvent!==false){g.stopEvent()}if(a.handler){a.handler.call(a.scope||c,g,c,b,a)}}},afterRender:function(){if(this.floating&&!this.hidden){this.el.show()}if(this.title){this.setTitle(this.title)}Ext.Panel.superclass.afterRender.call(this);if(this.collapsed){this.collapsed=false;this.collapse(false)}this.initEvents()},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()}if(this.toolbars.length>0){Ext.each(this.toolbars,function(a){a.doLayout();a.on({scope:this,afterlayout:this.syncHeight,remove:this.syncHeight})},this);this.syncHeight()}},initDraggable:function(){this.dd=new Ext.Panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)},beforeEffect:function(a){if(this.floating){this.el.beforeAction()}if(a!==false){this.el.addClass("x-panel-animated")}},afterEffect:function(a){this.syncShadow();this.el.removeClass("x-panel-animated")},createEffect:function(c,b,d){var e={scope:d,block:true};if(c===true){e.callback=b;return e}else{if(!c.callback){e.callback=b}else{e.callback=function(){b.call(d);Ext.callback(c.callback,c.scope)}}}return Ext.applyIf(e,c)},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(a);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.hideMode);this.afterCollapse(false)}},afterCollapse:function(a){this.collapsed=true;this.el.addClass(this.collapsedCls);if(a!==false){this[this.collapseEl].hide(this.hideMode)}this.afterEffect(a);this.cascade(function(b){if(b.lastSize){b.lastSize={width:undefined,height:undefined}}});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(a);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.hideMode);this.afterExpand(false)}},afterExpand:function(a){this.collapsed=false;if(a!==false){this[this.collapseEl].show(this.hideMode)}this.afterEffect(a);if(this.deferLayout){delete this.deferLayout;this.doLayout(true)}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(g,d,c,e){var a=g,b=d;if(Ext.isDefined(a)||Ext.isDefined(b)){if(!this.collapsed){if(Ext.isNumber(a)){this.body.setWidth(a=this.adjustBodyWidth(a-this.getFrameWidth()))}else{if(a=="auto"){a=this.body.setWidth("auto").dom.offsetWidth}else{a=this.body.dom.offsetWidth}}if(this.tbar){this.tbar.setWidth(a);if(this.topToolbar){this.topToolbar.setSize(a)}}if(this.bbar){this.bbar.setWidth(a);if(this.bottomToolbar){this.bottomToolbar.setSize(a);if(Ext.isIE){this.bbar.setStyle("position","static");this.bbar.setStyle("position","")}}}if(this.footer){this.footer.setWidth(a);if(this.fbar){this.fbar.setSize(Ext.isIE?(a-this.footer.getFrameWidth("lr")):"auto")}}if(Ext.isNumber(b)){b=Math.max(0,b-this.getFrameHeight());this.body.setHeight(b)}else{if(b=="auto"){this.body.setHeight(b)}}if(this.disabled&&this.el._mask){this.el._mask.setSize(this.el.dom.clientWidth,this.el.getHeight())}}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,{single:true})}}this.onBodyResize(a,b)}this.syncShadow();Ext.Panel.superclass.onResize.call(this,g,d,c,e)},onBodyResize:function(a,b){this.fireEvent("bodyresize",this,a,b)},getToolbarHeight:function(){var a=0;if(this.rendered){Ext.each(this.toolbars,function(b){a+=b.getHeight()},this)}return a},adjustBodyHeight:function(a){return a},adjustBodyWidth:function(a){return a},onPosition:function(){this.syncShadow()},getFrameWidth:function(){var b=this.el.getFrameWidth("lr")+this.bwrap.getFrameWidth("lr");if(this.frame){var a=this.bwrap.dom.firstChild;b+=(Ext.fly(a).getFrameWidth("l")+Ext.fly(a.firstChild).getFrameWidth("r"));b+=this.mc.getFrameWidth("lr")}return b},getFrameHeight:function(){var a=this.el.getFrameWidth("tb")+this.bwrap.getFrameWidth("tb");a+=(this.tbar?this.tbar.getHeight():0)+(this.bbar?this.bbar.getHeight():0);if(this.frame){a+=this.el.dom.firstChild.offsetHeight+this.ft.dom.offsetHeight+this.mc.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.body.getHeight()},syncShadow:function(){if(this.floating){this.el.sync(true)}},getLayoutTarget:function(){return this.body},getContentTarget: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.Panel.superclass.beforeDestroy.call(this);if(this.header){this.header.removeAllListeners()}if(this.tools){for(var a in this.tools){Ext.destroy(this.tools[a])}}if(this.toolbars.length>0){Ext.each(this.toolbars,function(b){b.un("afterlayout",this.syncHeight,this);b.un("remove",this.syncHeight,this)},this)}if(Ext.isArray(this.buttons)){while(this.buttons.length){Ext.destroy(this.buttons[0])}}if(this.rendered){Ext.destroy(this.ft,this.header,this.footer,this.tbar,this.bbar,this.body,this.mc,this.bwrap,this.dd);if(this.fbar){Ext.destroy(this.fbar,this.fbar.el)}}Ext.destroy(this.toolbars)},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(){var a=this.body.getUpdater();if(this.renderer){a.setRenderer(this.renderer)}a.update(Ext.isObject(this.autoLoad)?this.autoLoad:{url:this.autoLoad})},getTool:function(a){return this.tools[a]}});Ext.reg("panel",Ext.Panel);Ext.Editor=function(b,a){if(b.field){this.field=Ext.create(b.field,"textfield");a=Ext.apply({},b);delete a.field}else{this.field=b}Ext.Editor.superclass.constructor.call(this,a)};Ext.extend(Ext.Editor,Ext.Component,{allowBlur:true,value:"",alignment:"c-c?",offsets:[0,0],shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:true,cancelOnEsc:true,updateEl:false,initComponent:function(){Ext.Editor.superclass.initComponent.call(this);this.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onRender:function(b,a){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:b,shim:this.shim,shadowOffset:this.shadowOffset||4,id:this.id,constrain:this.constrain});if(this.zIndex){this.el.setZIndex(this.zIndex)}this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!="title"){this.field.msgTarget="qtip"}this.field.inEditor=true;this.mon(this.field,{scope:this,blur:this.onBlur,specialkey:this.onSpecialKey});if(this.field.grow){this.mon(this.field,"autosize",this.el.sync,this.el,{delay:1})}this.field.render(this.el).show();this.field.getEl().dom.name="";if(this.swallowKeys){this.field.el.swallowEvent(["keypress","keydown"])}},onSpecialKey:function(g,d){var b=d.getKey(),a=this.completeOnEnter&&b==d.ENTER,c=this.cancelOnEsc&&b==d.ESC;if(a||c){d.stopEvent();if(a){this.completeEdit()}else{this.cancelEdit()}if(g.triggerBlur){g.triggerBlur()}}this.fireEvent("specialkey",g,d)},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){this.startValue=a;this.field.reset();this.field.setValue(a);this.realign(true);this.editing=true;this.show()}},doAutoSize:function(){if(this.autoSize){var b=this.boundEl.getSize(),a=this.field.getSize();switch(this.autoSize){case"width":this.setSize(b.width,a.height);break;case"height":this.setSize(a.width,b.height);break;case"none":this.setSize(a.width,a.height);break;default:this.setSize(b.width,b.height)}}},setSize:function(a,b){delete this.field.lastSize;this.field.setSize(a,b);if(this.el){if(Ext.isGecko2||Ext.isOpera||(Ext.isIE7&&Ext.isStrict)){this.el.setSize(a,b)}this.el.sync()}},realign:function(a){if(a===true){this.doAutoSize()}this.el.alignTo(this.boundEl,this.alignment,this.offsets)},completeEdit:function(a){if(!this.editing){return}if(this.field.assertValue){this.field.assertValue()}var b=this.getValue();if(!this.field.isValid()){if(this.revertInvalid!==false){this.cancelEdit(a)}return}if(String(b)===String(this.startValue)&&this.ignoreNoChange){this.hideEdit(a);return}if(this.fireEvent("beforecomplete",this,b,this.startValue)!==false){b=this.getValue();if(this.updateEl&&this.boundEl){this.boundEl.update(b)}this.hideEdit(a);this.fireEvent("complete",this,b,this.startValue)}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide()}this.field.show().focus(false,true);this.fireEvent("startedit",this.boundEl,this.startValue)},cancelEdit:function(a){if(this.editing){var b=this.getValue();this.setValue(this.startValue);this.hideEdit(a);this.fireEvent("canceledit",this,b,this.startValue)}},hideEdit:function(a){if(a!==true){this.editing=false;this.hide()}},onBlur:function(){if(this.allowBlur===true&&this.editing&&this.selectSameEditor!==true){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(){Ext.destroyMembers(this,"field");delete this.parentEl;delete this.boundEl}});Ext.reg("editor",Ext.Editor);Ext.ColorPalette=Ext.extend(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"],initComponent:function(){Ext.ColorPalette.superclass.initComponent.call(this);this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope,true)}},onRender:function(b,a){this.autoEl={tag:"div",cls:this.itemCls};Ext.ColorPalette.superclass.onRender.call(this,b,a);var c=this.tpl||new Ext.XTemplate('<tpl for="."><a href="#" class="color-{.}" hidefocus="on"><em><span style="background:#{.}" unselectable="on">&#160;</span></em></a></tpl>');c.overwrite(this.el,this.colors);this.mon(this.el,this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!="click"){this.mon(this.el,"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,true)}},handleClick:function(b,a){b.preventDefault();if(!this.disabled){var d=a.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(d.toUpperCase())}},select:function(b,a){b=b.replace("#","");if(b!=this.value||this.allowReselect){var c=this.el;if(this.value){c.child("a.color-"+this.value).removeClass("x-color-palette-sel")}c.child("a.color-"+b).addClass("x-color-palette-sel");this.value=b;if(a!==true){this.fireEvent("select",this,b)}}}});Ext.reg("colorpalette",Ext.ColorPalette);Ext.DatePicker=Ext.extend(Ext.BoxComponent,{todayText:"Today",okText:"&#160;OK&#160;",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDaysText:"Disabled",disabledDatesText:"Disabled",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,showToday:true,focusOnSelect:true,initHour:12,initComponent:function(){Ext.DatePicker.superclass.initComponent.call(this);this.value=this.value?this.value.clearTime(true):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 b=this.disabledDates,a=b.length-1,c="(?:";Ext.each(b,function(g,e){c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];if(e!=a){c+="|"}},this);this.disabledDatesRE=new RegExp(c+")")}},setDisabledDates:function(a){if(Ext.isArray(a)){this.disabledDates=a;this.disabledDatesRE=null}else{this.disabledDatesRE=a}this.initDisabledDays();this.update(this.value,true)},setDisabledDays:function(a){this.disabledDays=a;this.update(this.value,true)},setMinDate:function(a){this.minDate=a;this.update(this.value,true)},setMaxDate:function(a){this.maxDate=a;this.update(this.value,true)},setValue:function(a){this.value=a.clearTime(true);this.update(this.value)},getValue:function(){return this.value},focus:function(){this.update(this.activeDate)},onEnable:function(a){Ext.DatePicker.superclass.onEnable.call(this);this.doDisabled(false);this.update(a?this.value:this.activeDate);if(Ext.isIE){this.el.repaint()}},onDisable:function(){Ext.DatePicker.superclass.onDisable.call(this);this.doDisabled(true);if(Ext.isIE&&!Ext.isIE8){Ext.each([].concat(this.textNodes,this.el.query("th span")),function(a){Ext.fly(a).repaint()})}},doDisabled:function(a){this.keyNav.setDisabled(a);this.prevRepeater.setDisabled(a);this.nextRepeater.setDisabled(a);if(this.showToday){this.todayKeyListener.setDisabled(a);this.todayBtn.setDisabled(a)}},onRender:function(e,b){var a=['<table cellspacing="0">','<tr><td class="x-date-left"><a href="#" title="',this.prevText,'">&#160;</a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="',this.nextText,'">&#160;</a></td></tr>','<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'],c=this.dayNames,h;for(h=0;h<7;h++){var l=this.startDay+h;if(l>6){l=l-7}a.push("<th><span>",c[l].substr(0,1),"</span></th>")}a[a.length]="</tr></thead><tbody><tr>";for(h=0;h<42;h++){if(h%7===0&&h!==0){a[a.length]="</tr><tr>"}a[a.length]='<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>'}a.push("</tr></tbody></table></td></tr>",this.showToday?'<tr><td colspan="3" class="x-date-bottom" align="center"></td></tr>':"",'</table><div class="x-date-mp"></div>');var k=document.createElement("div");k.className="x-date-picker";k.innerHTML=a.join("");e.dom.insertBefore(k,b);this.el=Ext.get(k);this.eventEl=Ext.get(k.firstChild);this.prevRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});this.nextRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.monthPicker=this.el.down("div.x-date-mp");this.monthPicker.enableDisplayMode("block");this.keyNav=new Ext.KeyNav(this.eventEl,{left:function(d){if(d.ctrlKey){this.showPrevMonth()}else{this.update(this.activeDate.add("d",-1))}},right:function(d){if(d.ctrlKey){this.showNextMonth()}else{this.update(this.activeDate.add("d",1))}},up:function(d){if(d.ctrlKey){this.showNextYear()}else{this.update(this.activeDate.add("d",-7))}},down:function(d){if(d.ctrlKey){this.showPrevYear()}else{this.update(this.activeDate.add("d",7))}},pageUp:function(d){this.showNextMonth()},pageDown:function(d){this.showPrevMonth()},enter:function(d){d.stopPropagation();return true},scope: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:"&#160;",tooltip:this.monthYearText,renderTo:this.el.child("td.x-date-middle",true)});this.mbtn.el.child("em").addClass("x-btn-arrow");if(this.showToday){this.todayKeyListener=this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);var g=(new Date()).dateFormat(this.format);this.todayBtn=new Ext.Button({renderTo:this.el.child("td.x-date-bottom",true),text:String.format(this.todayText,g),tooltip:String.format(this.todayTip,g),handler:this.selectToday,scope:this})}this.mon(this.eventEl,"mousewheel",this.handleMouseWheel,this);this.mon(this.eventEl,"click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.mon(this.mbtn,"click",this.showMonthPicker,this);this.onEnable(true)},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var a=['<table border="0" cellspacing="0">'];for(var b=0;b<6;b++){a.push('<tr><td class="x-date-mp-month"><a href="#">',Date.getShortMonthName(b),"</a></td>",'<td class="x-date-mp-month x-date-mp-sep"><a href="#">',Date.getShortMonthName(b+6),"</a></td>",b===0?'<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td></tr>':'<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>')}a.push('<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">',this.okText,'</button><button type="button" class="x-date-mp-cancel">',this.cancelText,"</button></td></tr>","</table>");this.monthPicker.update(a.join(""));this.mon(this.monthPicker,"click",this.onMonthClick,this);this.mon(this.monthPicker,"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(){if(!this.disabled){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(g,b){g.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")){var h=new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate());if(h.getMonth()!=this.mpSelMonth){h=new Date(this.mpSelYear,this.mpSelMonth,1).getLastDateOfMonth()}this.update(h);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){a.stopEvent();if(!this.disabled){var b=a.getWheelDelta();if(b>0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(b,a){b.stopEvent();if(!this.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasClass("x-date-disabled")){this.cancelFocus=this.focusOnSelect===false;this.setValue(new Date(a.dateValue));delete this.cancelFocus;this.fireEvent("select",this,this.value)}},selectToday:function(){if(this.todayBtn&&!this.todayBtn.disabled){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value)}},update:function(H,B){if(this.rendered){var a=this.activeDate,q=this.isVisible();this.activeDate=H;if(!B&&a&&this.el){var p=H.getTime();if(a.getMonth()==H.getMonth()&&a.getFullYear()==H.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(d){if(d.dom.firstChild.dateValue==p){d.addClass("x-date-selected");if(q&&!this.cancelFocus){Ext.fly(d.dom.firstChild).focus(50)}return false}},this);return}}var l=H.getDaysInMonth(),r=H.getFirstDateOfMonth(),g=r.getDay()-this.startDay;if(g<0){g+=7}l+=g;var C=H.add("mo",-1),h=C.getDaysInMonth()-g,e=this.cells.elements,s=this.textNodes,E=(new Date(C.getFullYear(),C.getMonth(),h,this.initHour)),D=new Date().clearTime().getTime(),x=H.clearTime(true).getTime(),v=this.minDate?this.minDate.clearTime(true):Number.NEGATIVE_INFINITY,z=this.maxDate?this.maxDate.clearTime(true):Number.POSITIVE_INFINITY,G=this.disabledDatesRE,u=this.disabledDatesText,J=this.disabledDays?this.disabledDays.join(""):false,F=this.disabledDaysText,A=this.format;if(this.showToday){var n=new Date().clearTime(),c=(n<v||n>z||(G&&A&&G.test(n.dateFormat(A)))||(J&&J.indexOf(n.getDay())!=-1));if(!this.disabled){this.todayBtn.setDisabled(c);this.todayKeyListener[c?"disable":"enable"]()}}var m=function(K,d){d.title="";var i=E.clearTime(true).getTime();d.firstChild.dateValue=i;if(i==D){d.className+=" x-date-today";d.title=K.todayText}if(i==x){d.className+=" x-date-selected";if(q){Ext.fly(d.firstChild).focus(50)}}if(i<v){d.className=" x-date-disabled";d.title=K.minText;return}if(i>z){d.className=" x-date-disabled";d.title=K.maxText;return}if(J){if(J.indexOf(E.getDay())!=-1){d.title=F;d.className=" x-date-disabled"}}if(G&&A){var w=E.dateFormat(A);if(G.test(w)){d.title=u.replace("%0",w);d.className=" x-date-disabled"}}};var y=0;for(;y<g;y++){s[y].innerHTML=(++h);E.setDate(E.getDate()+1);e[y].className="x-date-prevday";m(this,e[y])}for(;y<l;y++){var b=y-g+1;s[y].innerHTML=(b);E.setDate(E.getDate()+1);e[y].className="x-date-active";m(this,e[y])}var I=0;for(;y<42;y++){s[y].innerHTML=(++I);E.setDate(E.getDate()+1);e[y].className="x-date-nextday";m(this,e[y])}this.mbtn.setText(this.monthNames[H.getMonth()]+" "+H.getFullYear());if(!this.internalRender){var k=this.el.dom.firstChild,o=k.offsetWidth;this.el.setWidth(o+this.el.getBorderWidth("lr"));Ext.fly(k).setWidth(o);this.internalRender=true;if(Ext.isOpera&&!this.secondPass){k.rows[0].cells[1].style.width=(o-(k.rows[0].cells[0].offsetWidth+k.rows[0].cells[2].offsetWidth))+"px";this.secondPass=true;this.update.defer(10,this,[H])}}}},beforeDestroy:function(){if(this.rendered){Ext.destroy(this.keyNav,this.monthPicker,this.eventEl,this.mbtn,this.nextRepeater,this.prevRepeater,this.cells.el,this.todayBtn);delete this.textNodes;delete this.cells.elements}}});Ext.reg("datepicker",Ext.DatePicker);Ext.LoadMask=function(c,b){this.el=Ext.get(c);Ext.apply(this,b);if(this.store){this.store.on({scope:this,beforeload:this.onBeforeLoad,load:this.onLoad,exception:this.onLoad});this.removeMask=Ext.value(this.removeMask,false)}else{var a=this.el.getUpdater();a.showLoadIndicator=false;a.on({scope:this,beforeupdate:this.onBeforeLoad,update:this.onLoad,failure:this.onLoad});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("exception",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.ns("Ext.slider");Ext.slider.Thumb=Ext.extend(Object,{dragging:false,constructor:function(a){Ext.apply(this,a||{},{cls:"x-slider-thumb",constrain:false});Ext.slider.Thumb.superclass.constructor.call(this,a);if(this.slider.vertical){Ext.apply(this,Ext.slider.Thumb.Vertical)}},render:function(){this.el=this.slider.innerEl.insertFirst({cls:this.cls});this.initEvents()},enable:function(){this.disabled=false;this.el.removeClass(this.slider.disabledClass)},disable:function(){this.disabled=true;this.el.addClass(this.slider.disabledClass)},initEvents:function(){var a=this.el;a.addClassOnOver("x-slider-thumb-over");this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeDragStart.createDelegate(this),onStart:this.onDragStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onDragEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(a)},onBeforeDragStart:function(a){if(this.disabled){return false}else{this.slider.promoteThumb(this);return true}},onDragStart:function(a){this.el.addClass("x-slider-thumb-drag");this.dragging=true;this.dragStartValue=this.value;this.slider.fireEvent("dragstart",this.slider,a,this)},onDrag:function(g){var c=this.slider,b=this.index,d=this.getNewValue();if(this.constrain){var a=c.thumbs[b+1],h=c.thumbs[b-1];if(h!=undefined&&d<=h.value){d=h.value}if(a!=undefined&&d>=a.value){d=a.value}}c.setValue(b,d,false);c.fireEvent("drag",c,g,this)},getNewValue:function(){var a=this.slider,b=a.innerEl.translatePoints(this.tracker.getXY());return Ext.util.Format.round(a.reverseValue(b.left),a.decimalPrecision)},onDragEnd:function(c){var a=this.slider,b=this.value;this.el.removeClass("x-slider-thumb-drag");this.dragging=false;a.fireEvent("dragend",a,c);if(this.dragStartValue!=b){a.fireEvent("changecomplete",a,b,this)}},destroy:function(){Ext.destroyMembers(this,"tracker","el")}});Ext.slider.MultiSlider=Ext.extend(Ext.BoxComponent,{vertical:false,minValue:0,maxValue:100,decimalPrecision:0,keyIncrement:1,increment:0,clickRange:[5,15],clickToChange:true,animate:true,constrainThumbs:true,topThumbZIndex:10000,initComponent:function(){if(!Ext.isDefined(this.value)){this.value=this.minValue}this.thumbs=[];Ext.slider.MultiSlider.superclass.initComponent.call(this);this.keyIncrement=Math.max(this.increment,this.keyIncrement);this.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");if(this.values==undefined||Ext.isEmpty(this.values)){this.values=[0]}var a=this.values;for(var b=0;b<a.length;b++){this.addThumb(a[b])}if(this.vertical){Ext.apply(this,Ext.slider.Vertical)}},addThumb:function(b){var a=new Ext.slider.Thumb({value:b,slider:this,index:this.thumbs.length,constrain:this.constrainThumbs});this.thumbs.push(a);if(this.rendered){a.render()}},promoteThumb:function(d){var a=this.thumbs,g,b;for(var e=0,c=a.length;e<c;e++){b=a[e];if(b==d){g=this.topThumbZIndex}else{g=""}b.el.setStyle("zIndex",g)}},onRender:function(){this.autoEl={cls:"x-slider "+(this.vertical?"x-slider-vert":"x-slider-horz"),cn:{cls:"x-slider-end",cn:{cls:"x-slider-inner",cn:[{tag:"a",cls:"x-slider-focus",href:"#",tabIndex:"-1",hidefocus:"on"}]}}};Ext.slider.MultiSlider.superclass.onRender.apply(this,arguments);this.endEl=this.el.first();this.innerEl=this.endEl.first();this.focusEl=this.innerEl.child(".x-slider-focus");for(var b=0;b<this.thumbs.length;b++){this.thumbs[b].render()}var a=this.innerEl.child(".x-slider-thumb");this.halfThumb=(this.vertical?a.getHeight():a.getWidth())/2;this.initEvents()},initEvents:function(){this.mon(this.el,{scope:this,mousedown:this.onMouseDown,keydown:this.onKeyDown});this.focusEl.swallowEvent("click",true)},onMouseDown:function(d){if(this.disabled){return}var c=false;for(var b=0;b<this.thumbs.length;b++){c=c||d.target==this.thumbs[b].el.dom}if(this.clickToChange&&!c){var a=this.innerEl.translatePoints(d.getXY());this.onClickChange(a)}this.focus()},onClickChange:function(c){if(c.top>this.clickRange[0]&&c.top<this.clickRange[1]){var a=this.getNearest(c,"left"),b=a.index;this.setValue(b,Ext.util.Format.round(this.reverseValue(c.left),this.decimalPrecision),undefined,true)}},getNearest:function(l,b){var n=b=="top"?this.innerEl.getHeight()-l[b]:l[b],g=this.reverseValue(n),k=(this.maxValue-this.minValue)+5,e=0,c=null;for(var d=0;d<this.thumbs.length;d++){var a=this.thumbs[d],m=a.value,h=Math.abs(m-g);if(Math.abs(h<=k)){c=a;e=d;k=h}}return c},onKeyDown:function(b){if(this.disabled||this.thumbs.length!==1){b.preventDefault();return}var a=b.getKey(),c;switch(a){case b.UP:case b.RIGHT:b.stopEvent();c=b.ctrlKey?this.maxValue:this.getValue(0)+this.keyIncrement;this.setValue(0,c,undefined,true);break;case b.DOWN:case b.LEFT:b.stopEvent();c=b.ctrlKey?this.minValue:this.getValue(0)-this.keyIncrement;this.setValue(0,c,undefined,true);break;default:b.preventDefault()}},doSnap:function(b){if(!(this.increment&&b)){return b}var d=b,c=this.increment,a=b%c;if(a!=0){d-=a;if(a*2>=c){d+=c}else{if(a*2<-c){d-=c}}}return d.constrain(this.minValue,this.maxValue)},afterRender:function(){Ext.slider.MultiSlider.superclass.afterRender.apply(this,arguments);for(var c=0;c<this.thumbs.length;c++){var b=this.thumbs[c];if(b.value!==undefined){var a=this.normalizeValue(b.value);if(a!==b.value){this.setValue(c,a,false)}else{this.moveThumb(c,this.translateValue(a),false)}}}},getRatio:function(){var a=this.innerEl.getWidth(),b=this.maxValue-this.minValue;return b==0?a:(a/b)},normalizeValue:function(a){a=this.doSnap(a);a=Ext.util.Format.round(a,this.decimalPrecision);a=a.constrain(this.minValue,this.maxValue);return a},setMinValue:function(e){this.minValue=e;var d=0,b=this.thumbs,a=b.length,c;for(;d<a;++d){c=b[d];c.value=c.value<e?e:c.value}this.syncThumb()},setMaxValue:function(e){this.maxValue=e;var d=0,b=this.thumbs,a=b.length,c;for(;d<a;++d){c=b[d];c.value=c.value>e?e:c.value}this.syncThumb()},setValue:function(d,c,b,g){var a=this.thumbs[d],e=a.el;c=this.normalizeValue(c);if(c!==a.value&&this.fireEvent("beforechange",this,c,a.value,a)!==false){a.value=c;if(this.rendered){this.moveThumb(d,this.translateValue(c),b!==false);this.fireEvent("change",this,c,a);if(g){this.fireEvent("changecomplete",this,c,a)}}}},translateValue:function(a){var b=this.getRatio();return(a*b)-(this.minValue*b)-this.halfThumb},reverseValue:function(b){var a=this.getRatio();return(b+(this.minValue*a))/a},moveThumb:function(d,c,b){var a=this.thumbs[d].el;if(!b||this.animate===false){a.setLeft(c)}else{a.shift({left:c,stopFx:true,duration:0.35})}},focus:function(){this.focusEl.focus(10)},onResize:function(c,e){var b=this.thumbs,a=b.length,d=0;for(;d<a;++d){b[d].el.stopFx()}if(Ext.isNumber(c)){this.innerEl.setWidth(c-(this.el.getPadding("l")+this.endEl.getPadding("r")))}this.syncThumb();Ext.slider.MultiSlider.superclass.onResize.apply(this,arguments)},onDisable:function(){Ext.slider.MultiSlider.superclass.onDisable.call(this);for(var b=0;b<this.thumbs.length;b++){var a=this.thumbs[b],c=a.el;a.disable();if(Ext.isIE){var d=c.getXY();c.hide();this.innerEl.addClass(this.disabledClass).dom.disabled=true;if(!this.thumbHolder){this.thumbHolder=this.endEl.createChild({cls:"x-slider-thumb "+this.disabledClass})}this.thumbHolder.show().setXY(d)}}},onEnable:function(){Ext.slider.MultiSlider.superclass.onEnable.call(this);for(var b=0;b<this.thumbs.length;b++){var a=this.thumbs[b],c=a.el;a.enable();if(Ext.isIE){this.innerEl.removeClass(this.disabledClass).dom.disabled=false;if(this.thumbHolder){this.thumbHolder.hide()}c.show();this.syncThumb()}}},syncThumb:function(){if(this.rendered){for(var a=0;a<this.thumbs.length;a++){this.moveThumb(a,this.translateValue(this.thumbs[a].value))}}},getValue:function(a){return this.thumbs[a].value},getValues:function(){var a=[];for(var b=0;b<this.thumbs.length;b++){a.push(this.thumbs[b].value)}return a},beforeDestroy:function(){var b=this.thumbs;for(var c=0,a=b.length;c<a;++c){b[c].destroy();b[c]=null}Ext.destroyMembers(this,"endEl","innerEl","focusEl","thumbHolder");Ext.slider.MultiSlider.superclass.beforeDestroy.call(this)}});Ext.reg("multislider",Ext.slider.MultiSlider);Ext.slider.SingleSlider=Ext.extend(Ext.slider.MultiSlider,{constructor:function(a){a=a||{};Ext.applyIf(a,{values:[a.value||0]});Ext.slider.SingleSlider.superclass.constructor.call(this,a)},getValue:function(){return Ext.slider.SingleSlider.superclass.getValue.call(this,0)},setValue:function(d,b){var c=Ext.toArray(arguments),a=c.length;if(a==1||(a<=3&&typeof arguments[1]!="number")){c.unshift(0)}return Ext.slider.SingleSlider.superclass.setValue.apply(this,c)},syncThumb:function(){return Ext.slider.SingleSlider.superclass.syncThumb.apply(this,[0].concat(arguments))},getNearest:function(){return this.thumbs[0]}});Ext.Slider=Ext.slider.SingleSlider;Ext.reg("slider",Ext.slider.SingleSlider);Ext.slider.Vertical={onResize:function(a,b){this.innerEl.setHeight(b-(this.el.getPadding("t")+this.endEl.getPadding("b")));this.syncThumb()},getRatio:function(){var b=this.innerEl.getHeight(),a=this.maxValue-this.minValue;return b/a},moveThumb:function(d,c,b){var a=this.thumbs[d],e=a.el;if(!b||this.animate===false){e.setBottom(c)}else{e.shift({bottom:c,stopFx:true,duration:0.35})}},onClickChange:function(c){if(c.left>this.clickRange[0]&&c.left<this.clickRange[1]){var a=this.getNearest(c,"top"),b=a.index,d=this.minValue+this.reverseValue(this.innerEl.getHeight()-c.top);this.setValue(b,Ext.util.Format.round(d,this.decimalPrecision),undefined,true)}}};Ext.slider.Thumb.Vertical={getNewValue:function(){var b=this.slider,c=b.innerEl,d=c.translatePoints(this.tracker.getXY()),a=c.getHeight()-d.top;return b.minValue+Ext.util.Format.round(a/b.getRatio(),b.decimalPrecision)}};Ext.ProgressBar=Ext.extend(Ext.BoxComponent,{baseCls:"x-progress",animate:false,waitTimer:null,initComponent:function(){Ext.ProgressBar.superclass.initComponent.call(this);this.addEvents("update")},onRender:function(d,a){var c=new Ext.Template('<div class="{cls}-wrap">','<div class="{cls}-inner">','<div class="{cls}-bar">','<div class="{cls}-text">',"<div>&#160;</div>","</div>","</div>",'<div class="{cls}-text {cls}-text-back">',"<div>&#160;</div>","</div>","</div>","</div>");this.el=a?c.insertBefore(a,{cls:this.baseCls},true):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)}this.progressBar.setHeight(b.offsetHeight)},afterRender:function(){Ext.ProgressBar.superclass.afterRender.call(this);if(this.value){this.updateProgress(this.value,this.text)}else{this.updateText(this.text)}},updateProgress:function(c,d,b){this.value=c||0;if(d){this.updateText(d)}if(this.rendered&&!this.isDestroyed){var a=Math.floor(c*this.el.dom.firstChild.offsetWidth);this.progressBar.setWidth(a,b===true||(b!==false&&this.animate));if(this.textTopEl){this.textTopEl.removeClass("x-hidden").setWidth(a)}}this.fireEvent("update",this,c,d);return this},wait:function(b){if(!this.waitTimer){var a=this;b=b||{};this.updateText(b.text);this.waitTimer=Ext.TaskMgr.start({run:function(c){var d=b.increment||10;c-=1;this.updateProgress(((((c+d)%d)+1)*(100/d))*0.01,null,b.animate)},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||"&#160;";if(this.rendered){this.textEl.update(this.text)}return this},syncProgressBar:function(){if(this.value){this.updateProgress(this.value,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)}this.syncProgressBar();return this},reset:function(a){this.updateProgress(0);if(this.textTopEl){this.textTopEl.addClass("x-hidden")}this.clearTimer();if(a===true){this.hide()}return this},clearTimer:function(){if(this.waitTimer){this.waitTimer.onStop=null;Ext.TaskMgr.stop(this.waitTimer);this.waitTimer=null}},onDestroy:function(){this.clearTimer();if(this.rendered){if(this.textEl.isComposite){this.textEl.clear()}Ext.destroyMembers(this,"textEl","progressBar","textTopEl")}Ext.ProgressBar.superclass.onDestroy.call(this)}});Ext.reg("progress",Ext.ProgressBar);(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},moveOnly:false,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(k,h,p){if(Ext.isNumber(h)){h={left:h,right:h,top:h,bottom:h}}h=h||this.defaultPadding;var m=Ext.get(this.getEl()).getBox(),d=Ext.get(k),o=d.getScroll(),l,e=d.dom;if(e==document.body){l={x:o.left,y:o.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()}}else{var n=d.getXY();l={x:n[0],y:n[1],width:e.clientWidth,height:e.clientHeight}}var i=m.y-l.y,g=m.x-l.x;this.resetConstraints();this.setXConstraint(g-(h.left||0),l.width-g-m.width-(h.right||0),this.xTickSize);this.setYConstraint(i-(h.top||0),l.height-i-m.height-(h.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,g,d){if(!c&&0!==c){this.padding=[e,e,e,e]}else{if(!g&&0!==g){this.padding=[e,c,e,c]}else{this.padding=[e,c,g,d]}}},setInitPosition:function(g,e){var h=this.getEl();if(!this.DDM.verifyEl(h)){return}var d=g||0;var c=e||0;var i=b.getXY(h);this.initPageX=i[0]-d;this.initPageY=i[1]-c;this.lastPageX=i[0];this.lastPageY=i[1];this.setStartPosition(i)},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(g,d){if(this.primaryButtonOnly&&g.button!=0){return}if(this.isLocked()){return}this.DDM.refreshCache(this.groups);var c=new Ext.lib.Point(Ext.lib.Event.getPageX(g),Ext.lib.Event.getPageY(g));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(c,this)){}else{if(this.clickValidator(g)){this.setStartPosition();this.b4MouseDown(g);this.onMouseDown(g);this.DDM.handleMouseDown(g,this);this.DDM.stopEvent(g)}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(h){var g=true;var l;try{l=h.nodeName.toUpperCase()}catch(k){l=h.nodeName}g=g&&!this.invalidHandleTypes[l];g=g&&!this.invalidHandleIds[h.id];for(var d=0,c=this.invalidHandleClasses.length;g&&d<c;++d){g=!Ext.fly(h).hasClass(this.invalidHandleClasses[d])}return g},setXTicks:function(g,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(g,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(l,g){if(!g){return l}else{if(g[0]>=l){return g[0]}else{for(var d=0,c=g.length;d<c;++d){var e=d+1;if(g[e]&&g[e]>=l){var k=l-g[d];var h=g[e]-l;return(h>k)?g[d]:g[e]}}return g[g.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,initialized: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 g=this.ids[e][b];if(!this.isTypeOfDD(g)){continue}g[d].apply(g,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]&&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(h,c){var g=[];for(var e in h.groups){for(var d in this.ids[e]){var b=this.ids[e][d];if(!this.isTypeOfDD(b)){continue}if(!c||b.isTarget){g[g.length]=b}}}return g},isLegalTarget:function(g,e){var c=this.getRelated(g,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.ddDisable()}if(this.dragCurrent){this.handleMouseUp(d)}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.ddEnable()}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(o,p){var r=this.dragCurrent;if(!r||r.isLocked()){return}var s=o.getPoint();var b=[];var g=[];var m=[];var k=[];var d=[];for(var h in this.dragOvers){var c=this.dragOvers[h];if(!this.isTypeOfDD(c)){continue}if(!this.isOverTarget(s,c,this.mode)){g.push(c)}b[h]=true;delete this.dragOvers[h]}for(var q in r.groups){if("string"!=typeof q){continue}for(h in this.ids[q]){var l=this.ids[q][h];if(!this.isTypeOfDD(l)){continue}if(l.isTarget&&!l.isLocked()&&((l!=r)||(r.ignoreSelf===false))){if(this.isOverTarget(s,l,this.mode)){if(p){k.push(l)}else{if(!b[l.id]){d.push(l)}else{m.push(l)}this.dragOvers[l.id]=l}}}}}if(this.mode){if(g.length){r.b4DragOut(o,g);r.onDragOut(o,g)}if(d.length){r.onDragEnter(o,d)}if(m.length){r.b4DragOver(o,m);r.onDragOver(o,m)}if(k.length){r.b4DragDrop(o,k);r.onDragDrop(o,k)}}else{var n=0;for(h=0,n=g.length;h<n;++h){r.b4DragOut(o,g[h].id);r.onDragOut(o,g[h].id)}for(h=0,n=d.length;h<n;++h){r.onDragEnter(o,d[h].id)}for(h=0,n=m.length;h<n;++h){r.b4DragOver(o,m[h].id);r.onDragOver(o,m[h].id)}for(h=0,n=k.length;h<n;++h){r.b4DragDrop(o,k[h].id);r.onDragDrop(o,k[h].id)}}if(p&&!k.length){r.onInvalidDrop(o)}},getBestMatch:function(d){var g=null;var c=d.length;if(c==1){g=d[0]}else{for(var e=0;e<c;++e){var b=d[e];if(b.cursorIsOver){g=b;break}else{if(!g||g.overlap.getArea()<b.overlap.getArea()){g=b}}}}return g},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 g=this.getLocation(e);if(g){this.locationCache[e.id]=g}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(k){if(!this.isTypeOfDD(k)){return null}var h=k.getEl(),o,g,d,q,p,s,c,n,i;try{o=Ext.lib.Dom.getXY(h)}catch(m){}if(!o){return null}g=o[0];d=g+h.offsetWidth;q=o[1];p=q+h.offsetHeight;s=q-k.padding[0];c=d+k.padding[1];n=p+k.padding[2];i=g-k.padding[3];return new Ext.lib.Region(s,c,n,i)},isOverTarget:function(l,b,d){var g=this.locationCache[b.id];if(!g||!this.useCache){g=this.getLocation(b);this.locationCache[b.id]=g}if(!g){return false}b.cursorIsOver=g.contains(l);var k=this.dragCurrent;if(!k||!k.getTargetCoord||(!d&&!k.constrainX&&!k.constrainY)){return b.cursorIsOver}b.overlap=null;var h=k.getTargetCoord(l.x,l.y);var c=k.getDragEl();var e=new Ext.lib.Region(h.y,h.x+c.offsetWidth,h.y+c.offsetHeight,h.x);var i=e.intersect(g);if(i){b.overlap=i;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(d,c){return(d-c)},_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,h,g){var e=this.getTargetCoord(h,g);var b=c.dom?c:Ext.fly(c,"_dd");if(!this.deltaSetXY){var i=[e.x,e.y];b.setXY(i);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(m,l,e,n){if(this.scroll){var o=Ext.lib.Dom.getViewHeight();var b=Ext.lib.Dom.getViewWidth();var q=this.DDM.getScrollTop();var d=this.DDM.getScrollLeft();var k=e+l;var p=n+m;var i=(o+q-l-this.deltaY);var g=(b+d-m-this.deltaX);var c=40;var a=(document.all)?80:30;if(k>o&&i<c){window.scrollTo(d,q+a)}if(l<q&&q>0&&l-q<c){window.scrollTo(d,q-a)}if(p>b&&g<c){window.scrollTo(d+a,q)}if(m<d&&d>0&&m-d<c){window.scrollTo(d-a,q)}}},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,{getDragEl:Ext.emptyFn,isValidHandleChild:Ext.emptyFn,startDrag:Ext.emptyFn,endDrag:Ext.emptyFn,onDrag:Ext.emptyFn,onDragDrop:Ext.emptyFn,onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,onDragOver:Ext.emptyFn,onInvalidDrop:Ext.emptyFn,onMouseDown:Ext.emptyFn,onMouseUp:Ext.emptyFn,setXConstraint:Ext.emptyFn,setYConstraint:Ext.emptyFn,resetConstraints:Ext.emptyFn,clearConstraints:Ext.emptyFn,clearTicks:Ext.emptyFn,setInitPosition:Ext.emptyFn,setDragElId:Ext.emptyFn,setHandleElId:Ext.emptyFn,setOuterHandleElId:Ext.emptyFn,addInvalidHandleClass:Ext.emptyFn,addInvalidHandleId:Ext.emptyFn,addInvalidHandleType:Ext.emptyFn,removeInvalidHandleClass:Ext.emptyFn,removeInvalidHandleId:Ext.emptyFn,removeInvalidHandleType:Ext.emptyFn,toString:function(){return("DDTarget "+this.id)}});Ext.dd.DragTracker=Ext.extend(Ext.util.Observable,{active:false,tolerance:5,autoStart:false,constructor: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.dd.DragTracker.superclass.constructor.call(this,a)},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);delete this.el},onMouseDown:function(b,a){if(this.fireEvent("mousedown",this,b)!==false&&this.onBeforeStart(b)!==false){this.startXY=this.lastXY=b.getXY();this.dragTarget=this.delegate?a:this.el.dom;if(this.preventDefault!==false){b.preventDefault()}Ext.getDoc().on({scope:this,mouseup:this.onMouseUp,mousemove:this.onMouseMove,selectstart:this.stopSelect});if(this.autoStart){this.timer=this.triggerStart.defer(this.autoStart===true?1000:this.autoStart,this,[b])}}},onMouseMove:function(d,c){if(this.active&&Ext.isIE&&!d.browserEvent.button){d.preventDefault();this.onMouseUp(d);return}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(d)}else{return}}this.fireEvent("mousemove",this,d);this.onDrag(d);this.fireEvent("drag",this,d)},onMouseUp:function(c){var b=Ext.getDoc(),a=this.active;b.un("mousemove",this.onMouseMove,this);b.un("mouseup",this.onMouseUp,this);b.un("selectstart",this.stopSelect,this);c.preventDefault();this.clearStart();this.active=false;delete this.elRegion;this.fireEvent("mouseup",this,c);if(a){this.onEnd(c);this.fireEvent("dragend",this,c)}},triggerStart:function(a){this.clearStart();this.active=true;this.onStart(a);this.fireEvent("dragstart",this,a)},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),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 i={};var h=function(m){b=null;a()};var k=function(){if(c.dragCurrent){c.refreshCache(c.dragCurrent.groups)}};var d=function(){if(c.dragCurrent){var m=Ext.dd.ScrollManager;var n=i.el.ddScrollConfig?i.el.ddScrollConfig.increment:m.increment;if(!m.animate){if(i.el.scroll(i.dir,n)){k()}}else{i.el.scroll(i.dir,n,true,m.animDuration,k)}}};var a=function(){if(i.id){clearInterval(i.id)}i.id=0;i.el=null;i.dir=""};var g=function(n,m){a();i.el=n;i.dir=m;var p=n.ddScrollConfig?n.ddScrollConfig.ddGroup:undefined,o=(n.ddScrollConfig&&n.ddScrollConfig.frequency)?n.ddScrollConfig.frequency:Ext.dd.ScrollManager.frequency;if(p===undefined||c.dragCurrent.ddGroup==p){i.id=setInterval(d,o)}};var l=function(p,s){if(s||!c.dragCurrent){return}var t=Ext.dd.ScrollManager;if(!b||b!=c.dragCurrent){b=c.dragCurrent;t.refreshCache()}var u=Ext.lib.Event.getXY(p);var v=new Ext.lib.Point(u[0],u[1]);for(var n in e){var o=e[n],m=o._region;var q=o.ddScrollConfig?o.ddScrollConfig:t;if(m&&m.contains(v)&&o.isScrollable()){if(m.bottom-v.y<=q.vthresh){if(i.el!=o){g(o,"down")}return}else{if(m.right-v.x<=q.hthresh){if(i.el!=o){g(o,"left")}return}else{if(v.y-m.top<=q.vthresh){if(i.el!=o){g(o,"up")}return}else{if(v.x-m.left<=q.hthresh){if(i.el!=o){g(o,"right")}return}}}}}}a()};c.fireEvents=c.fireEvents.createSequence(l,c);c.stopDrag=c.stopDrag.createSequence(h,c);return{register:function(o){if(Ext.isArray(o)){for(var n=0,m=o.length;n<m;n++){this.register(o[n])}}else{o=Ext.get(o);e[o.id]=o}},unregister:function(o){if(Ext.isArray(o)){for(var n=0,m=o.length;n<m;n++){this.unregister(o[n])}}else{o=Ext.get(o);delete e[o.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,ddGroup:undefined,refreshCache:function(){for(var m in e){if(typeof e[m]=="object"){e[m]._region=e[m].getRegion()}}}}}();Ext.dd.Registry=function(){var d={};var b={};var a=0;var c=function(g,e){if(typeof g=="string"){return g}var h=g.id;if(!h&&e!==false){h="extdd-"+(++a);g.id=h}return h};return{register:function(k,l){l=l||{};if(typeof k=="string"){k=document.getElementById(k)}l.ddel=k;d[c(k)]=l;if(l.isHandle!==false){b[l.ddel.id]=l}if(l.handles){var h=l.handles;for(var g=0,e=h.length;g<e;g++){b[c(h[g])]=l}}},unregister:function(k){var m=c(k,false);var l=d[m];if(l){delete d[m];if(l.handles){var h=l.handles;for(var g=0,e=h.length;g<e;g++){delete b[c(h[g],false)]}}}},getHandle:function(e){if(typeof e!="string"){e=e.id}return b[e]},getHandleFromEvent:function(h){var g=Ext.lib.Event.getTarget(h);return g?b[g.id]:null},getTarget:function(e){if(typeof e!="string"){e=e.id}return d[e]},getTargetFromEvent:function(h){var g=Ext.lib.Event.getTarget(h);return g?d[g.id]||b[g.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)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},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},destroy:function(){Ext.destroy(this.ghost,this.el)}};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)},destroy:function(){Ext.dd.DragSource.superclass.destroy.call(this);Ext.destroy(this.proxy)}});Ext.dd.DropTarget=Ext.extend(Ext.dd.DDTarget,{constructor: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})},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},destroy:function(){Ext.dd.DropTarget.superclass.destroy.call(this);if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});Ext.dd.DragZone=Ext.extend(Ext.dd.DragSource,{constructor:function(b,a){Ext.dd.DragZone.superclass.constructor.call(this,b,a);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}},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()},destroy:function(){Ext.dd.DragZone.superclass.destroy.call(this);if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});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.Element.addMethods({initDD:function(c,b,d){var a=new Ext.dd.DD(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDProxy:function(c,b,d){var a=new Ext.dd.DDProxy(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDTarget:function(c,b,d){var a=new Ext.dd.DDTarget(Ext.id(this.dom),c,b);return Ext.apply(a,d)}});Ext.data.Api=(function(){var a={};return{actions:{create:"create",read:"read",update:"update",destroy:"destroy"},restActions:{create:"POST",read:"GET",update:"PUT",destroy:"DELETE"},isAction:function(b){return(Ext.data.Api.actions[b])?true:false},getVerb:function(b){if(a[b]){return a[b]}for(var c in this.actions){if(this.actions[c]===b){a[b]=c;break}}return(a[b]!==undefined)?a[b]:null},isValid:function(b){var e=[];var d=this.actions;for(var c in b){if(!(c in d)){e.push(c)}}return(!e.length)?true:e},hasUniqueUrl:function(c,g){var b=(c.api[g])?c.api[g].url:null;var e=true;for(var d in c.api){if((e=(d===g)?true:(c.api[d].url!=b)?true:false)===false){break}}return e},prepare:function(b){if(!b.api){b.api={}}for(var d in this.actions){var c=this.actions[d];b.api[c]=b.api[c]||b.url||b.directFn;if(typeof(b.api[c])=="string"){b.api[c]={url:b.api[c],method:(b.restful===true)?Ext.data.Api.restActions[c]:undefined}}}},restify:function(b){b.restful=true;for(var c in this.restActions){b.api[this.actions[c]].method||(b.api[this.actions[c]].method=this.restActions[c])}b.onWrite=b.onWrite.createInterceptor(function(i,k,g,e){var d=k.reader;var h=new Ext.data.Response({action:i,raw:g});switch(g.status){case 200:return true;break;case 201:if(Ext.isEmpty(h.raw.responseText)){h.success=true}else{return true}break;case 204:h.success=true;h.data=null;break;default:return true;break}if(h.success===true){this.fireEvent("write",this,i,h.data,h,e,k.request.arg)}else{this.fireEvent("exception",this,"remote",i,k,h,e)}k.request.callback.call(k.request.scope,h.data,h,h.success);return false},b)}}})();Ext.data.Response=function(b,a){Ext.apply(this,b,{raw:a})};Ext.data.Response.prototype={message:null,success:false,status:null,root:null,raw:null,getMessage:function(){return this.message},getSuccess:function(){return this.success},getStatus:function(){return this.status},getRoot:function(){return this.root},getRawResponse:function(){return this.raw}};Ext.data.Api.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.Api"});Ext.apply(Ext.data.Api.Error.prototype,{lang:{"action-url-undefined":"No fallback url defined for this action.  When defining a DataProxy api, please be sure to define an url for each CRUD action in Ext.data.Api.actions or define a default url in addition to your api-configuration.",invalid:"received an invalid API-configuration.  Please ensure your proxy API-configuration contains only the actions defined in Ext.data.Api.actions","invalid-url":"Invalid url.  Please review your proxy configuration.",execute:'Attempted to execute an unknown action.  Valid API actions are defined in Ext.data.Api.actions"'}});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,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}};Ext.data.Record=function(a,b){this.id=(b||b===0)?b:Ext.data.Record.id(this);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(g){return g.name});for(var b=0,a=e.length;b<a;b++){d.fields.add(new Ext.data.Field(e[b]))}c.getField=function(g){return d.fields.get(g)};return c};Ext.data.Record.PREFIX="ext-record";Ext.data.Record.AUTO_ID=1;Ext.data.Record.EDIT="edit";Ext.data.Record.REJECT="reject";Ext.data.Record.COMMIT="commit";Ext.data.Record.id=function(a){a.phantom=true;return[Ext.data.Record.PREFIX,"-",Ext.data.Record.AUTO_ID++].join("")};Ext.data.Record.prototype={dirty:false,editing:false,error:null,modified:null,phantom:false,join:function(a){this.store=a},set:function(a,c){var b=Ext.isPrimitive(c)?String:Ext.encode;if(b(this.data[a])==b(c)){return}this.dirty=true;if(!this.modified){this.modified={}}if(this.modified[a]===undefined){this.modified[a]=this.data[a]}this.data[a]=c;if(!this.editing){this.afterEdit()}},afterEdit:function(){if(this.store!=undefined&&typeof this.store.afterEdit=="function"){this.store.afterEdit(this)}},afterReject:function(){if(this.store){this.store.afterReject(this)}},afterCommit:function(){if(this.store){this.store.afterCommit(this)}},get:function(a){return this.data[a]},beginEdit:function(){this.editing=true;this.modified=this.modified||{}},cancelEdit:function(){this.editing=false;delete this.modified},endEdit:function(){this.editing=false;if(this.dirty){this.afterEdit()}},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(b!==true){this.afterReject()}},commit:function(a){this.dirty=false;delete this.modified;this.editing=false;if(a!==true){this.afterCommit()}},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))},isValid:function(){return this.fields.find(function(a){return(a.allowBlank===false&&Ext.isEmpty(this.data[a.name]))?true:false},this)?false:true},markDirty:function(){this.dirty=true;if(!this.modified){this.modified={}}this.fields.each(function(a){this.modified[a.name]=this.data[a.name]},this)}};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(e){if(Ext.isArray(e)){var b=["field1"],d=!Ext.isArray(e[0]);if(!d){for(var c=2,a=e[0].length;c<=a;++c){b.push("field"+c)}}return new Ext.data.ArrayStore({fields:b,data:e,expandData:d,autoDestroy:true,autoCreated:true})}return Ext.isObject(e)?(e.events?e:Ext.create(e,"store")):this.get(e)},getKey:function(a){return a.storeId}});Ext.data.Store=Ext.extend(Ext.util.Observable,{writer:undefined,remoteSort:false,autoDestroy:false,pruneModifiedRecords:false,lastOptions:null,autoSave:true,batch:true,restful:false,paramNames:undefined,defaultParamNames:{start:"start",limit:"limit",sort:"sort",dir:"dir"},isDestroyed:false,hasMultiSort:false,batchKey:"_ext_batch_",constructor:function(a){this.data=new Ext.util.MixedCollection(false);this.data.getKey=function(b){return b.id};this.removed=[];if(a&&a.data){this.inlineData=a.data;delete a.data}Ext.apply(this,a);this.baseParams=Ext.isObject(this.baseParams)?this.baseParams:{};this.paramNames=Ext.applyIf(this.paramNames||{},this.defaultParamNames);if((this.url||this.api)&&!this.proxy){this.proxy=new Ext.data.HttpProxy({url:this.url,api:this.api})}if(this.restful===true&&this.proxy){this.batch=false;Ext.data.Api.restify(this.proxy)}if(this.reader){if(!this.recordType){this.recordType=this.reader.recordType}if(this.reader.onMetaChange){this.reader.onMetaChange=this.reader.onMetaChange.createSequence(this.onMetaChange,this)}if(this.writer){if(this.writer instanceof (Ext.data.DataWriter)===false){this.writer=this.buildWriter(this.writer)}this.writer.meta=this.reader.meta;this.pruneModifiedRecords=true}}if(this.recordType){this.fields=this.recordType.prototype.fields}this.modified=[];this.addEvents("datachanged","metachange","add","remove","update","clear","exception","beforeload","load","loadexception","beforewrite","write","beforesave","save");if(this.proxy){this.relayEvents(this.proxy,["loadexception","exception"])}if(this.writer){this.on({scope:this,add:this.createRecords,remove:this.destroyRecord,update:this.updateRecord,clear:this.onClear})}this.sortToggle={};if(this.sortField){this.setDefaultSort(this.sortField,this.sortDir)}else{if(this.sortInfo){this.setDefaultSort(this.sortInfo.field,this.sortInfo.direction)}}Ext.data.Store.superclass.constructor.call(this);if(this.id){this.storeId=this.id;delete this.id}if(this.storeId){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])}}this.batchCounter=0;this.batches={}},buildWriter:function(b){var a=undefined,c=(b.format||"json").toLowerCase();switch(c){case"json":a=Ext.data.JsonWriter;break;case"xml":a=Ext.data.XmlWriter;break;default:a=Ext.data.JsonWriter}return new a(b)},destroy:function(){if(!this.isDestroyed){if(this.storeId){Ext.StoreMgr.unregister(this)}this.clearData();this.data=null;Ext.destroy(this.proxy);this.reader=this.writer=null;this.purgeListeners();this.isDestroyed=true}},add:function(c){var e,a,b,d;c=[].concat(c);if(c.length<1){return}for(e=0,a=c.length;e<a;e++){b=c[e];b.join(this);if(b.dirty||b.phantom){this.modified.push(b)}}d=this.data.length;this.data.addAll(c);if(this.snapshot){this.snapshot.addAll(c)}this.fireEvent("add",this,c,d)},addSorted:function(a){var b=this.findInsertIndex(a);this.insert(b,a)},doUpdate:function(a){this.data.replace(a.id,a);if(this.snapshot){this.snapshot.replace(a.id,a)}this.fireEvent("update",this,a,Ext.data.Record.COMMIT)},remove:function(a){if(Ext.isArray(a)){Ext.each(a,function(c){this.remove(c)},this);return}var b=this.data.indexOf(a);if(b>-1){a.join(null);this.data.removeAt(b)}if(this.pruneModifiedRecords){this.modified.remove(a)}if(this.snapshot){this.snapshot.remove(a)}if(b>-1){this.fireEvent("remove",this,a,b)}},removeAt:function(a){this.remove(this.getAt(a))},removeAll:function(b){var a=[];this.each(function(c){a.push(c)});this.clearData();if(this.snapshot){this.snapshot.clear()}if(this.pruneModifiedRecords){this.modified=[]}if(b!==true){this.fireEvent("clear",this,a)}},onClear:function(b,a){Ext.each(a,function(d,c){this.destroyRecord(this,d,c)},this)},insert:function(d,c){var e,a,b;c=[].concat(c);for(e=0,a=c.length;e<a;e++){b=c[e];this.data.insert(d+e,b);b.join(this);if(b.dirty||b.phantom){this.modified.push(b)}}if(this.snapshot){this.snapshot.addAll(c)}this.fireEvent("add",this,c,d)},indexOf:function(a){return this.data.indexOf(a)},indexOfId:function(a){return this.data.indexOfKey(a)},getById:function(a){return(this.snapshot||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},clearData:function(){this.data.each(function(a){a.join(null)});this.data.clear()},load:function(b){b=Ext.apply({},b);this.storeOptions(b);if(this.sortInfo&&this.remoteSort){var a=this.paramNames;b.params=Ext.apply({},b.params);b.params[a.sort]=this.sortInfo.field;b.params[a.dir]=this.sortInfo.direction}try{return this.execute("read",null,b)}catch(c){this.handleException(c);return false}},updateRecord:function(b,a,c){if(c==Ext.data.Record.EDIT&&this.autoSave===true&&(!a.phantom||(a.phantom&&a.isValid()))){this.save()}},createRecords:function(c,b,e){var d=this.modified,h=b.length,a,g;for(g=0;g<h;g++){a=b[g];if(a.phantom&&a.isValid()){a.markDirty();if(d.indexOf(a)==-1){d.push(a)}}}if(this.autoSave===true){this.save()}},destroyRecord:function(b,a,c){if(this.modified.indexOf(a)!=-1){this.modified.remove(a)}if(!a.phantom){this.removed.push(a);a.lastIndex=c;if(this.autoSave===true){this.save()}}},execute:function(e,a,c,b){if(!Ext.data.Api.isAction(e)){throw new Ext.data.Api.Error("execute",e)}c=Ext.applyIf(c||{},{params:{}});if(b!==undefined){this.addToBatch(b)}var d=true;if(e==="read"){d=this.fireEvent("beforeload",this,c);Ext.applyIf(c.params,this.baseParams)}else{if(this.writer.listful===true&&this.restful!==true){a=(Ext.isArray(a))?a:[a]}else{if(Ext.isArray(a)&&a.length==1){a=a.shift()}}if((d=this.fireEvent("beforewrite",this,e,a,c))!==false){this.writer.apply(c.params,this.baseParams,e,a)}}if(d!==false){if(this.writer&&this.proxy.url&&!this.proxy.restful&&!Ext.data.Api.hasUniqueUrl(this.proxy,e)){c.params.xaction=e}this.proxy.request(Ext.data.Api.actions[e],a,c.params,this.reader,this.createCallback(e,a,b),this,c)}return d},save:function(){if(!this.writer){throw new Ext.data.Store.Error("writer-undefined")}var h=[],k,l,e,c={},d;if(this.removed.length){h.push(["destroy",this.removed])}var b=[].concat(this.getModifiedRecords());if(b.length){var g=[];for(d=b.length-1;d>=0;d--){if(b[d].phantom===true){var a=b.splice(d,1).shift();if(a.isValid()){g.push(a)}}else{if(!b[d].isValid()){b.splice(d,1)}}}if(g.length){h.push(["create",g])}if(b.length){h.push(["update",b])}}k=h.length;if(k){e=++this.batchCounter;for(d=0;d<k;++d){l=h[d];c[l[0]]=l[1]}if(this.fireEvent("beforesave",this,c)!==false){for(d=0;d<k;++d){l=h[d];this.doTransaction(l[0],l[1],e)}return e}}return -1},doTransaction:function(e,b,c){function g(h){try{this.execute(e,h,undefined,c)}catch(i){this.handleException(i)}}if(this.batch===false){for(var d=0,a=b.length;d<a;d++){g.call(this,b[d])}}else{g.call(this,b)}},addToBatch:function(c){var a=this.batches,d=this.batchKey+c,e=a[d];if(!e){a[d]=e={id:c,count:0,data:{}}}++e.count},removeFromBatch:function(d,h,g){var c=this.batches,e=this.batchKey+d,i=c[e],a;if(i){a=i.data[h]||[];i.data[h]=a.concat(g);if(i.count===1){g=i.data;delete c[e];this.fireEvent("save",this,d,g)}else{--i.count}}},createCallback:function(c,a,b){var d=Ext.data.Api.actions;return(c=="read")?this.loadRecords:function(g,e,h){this["on"+Ext.util.Format.capitalize(c)+"Records"](h,a,[].concat(g));if(h===true){this.fireEvent("write",this,c,g,e,a)}this.removeFromBatch(b,c,g)}},clearModified:function(a){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){this.modified.splice(this.modified.indexOf(a[b]),1)}}else{this.modified.splice(this.modified.indexOf(a),1)}},reMap:function(b){if(Ext.isArray(b)){for(var d=0,a=b.length;d<a;d++){this.reMap(b[d])}}else{delete this.data.map[b._phid];this.data.map[b.id]=b;var c=this.data.keys.indexOf(b._phid);this.data.keys.splice(c,1,b.id);delete b._phid}},onCreateRecords:function(d,a,b){if(d===true){try{this.reader.realize(a,b);this.reMap(a)}catch(c){this.handleException(c);if(Ext.isArray(a)){this.onCreateRecords(d,a,b)}}}},onUpdateRecords:function(d,a,b){if(d===true){try{this.reader.update(a,b)}catch(c){this.handleException(c);if(Ext.isArray(a)){this.onUpdateRecords(d,a,b)}}}},onDestroyRecords:function(e,b,d){b=(b instanceof Ext.data.Record)?[b]:[].concat(b);for(var c=0,a=b.length;c<a;c++){this.removed.splice(this.removed.indexOf(b[c]),1)}if(e===false){for(c=b.length-1;c>=0;c--){this.insert(b[c].lastIndex,b[c])}}},handleException:function(a){Ext.handleError(a)},reload:function(a){this.load(Ext.applyIf(a||{},this.lastOptions))},loadRecords:function(b,m,h){var e,g;if(this.isDestroyed===true){return}if(!b||h===false){if(h!==false){this.fireEvent("load",this,[],m)}if(m.callback){m.callback.call(m.scope||this,[],m,false,b)}return}var a=b.records,k=b.totalRecords||a.length;if(!m||m.add!==true){if(this.pruneModifiedRecords){this.modified=[]}for(e=0,g=a.length;e<g;e++){a[e].join(this)}if(this.snapshot){this.data=this.snapshot;delete this.snapshot}this.clearData();this.data.addAll(a);this.totalLength=k;this.applySort();this.fireEvent("datachanged",this)}else{var l=[],d,c=0;for(e=0,g=a.length;e<g;++e){d=a[e];if(this.indexOfId(d.id)>-1){this.doUpdate(d)}else{l.push(d);++c}}this.totalLength=Math.max(k,this.data.length+c);this.add(l)}this.fireEvent("load",this,a,m);if(m.callback){m.callback.call(m.scope||this,a,m,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.multiSortInfo)&&!this.remoteSort){this.sortData()}},sortData:function(){var a=this.hasMultiSort?this.multiSortInfo:this.sortInfo,k=a.direction||"ASC",h=a.sorters,c=[];if(!this.hasMultiSort){h=[{direction:k,field:a.field}]}for(var d=0,b=h.length;d<b;d++){c.push(this.createSortFunction(h[d].field,h[d].direction))}if(c.length==0){return}var g=k.toUpperCase()=="DESC"?-1:1;var e=function(n,m){var l=c[0].call(this,n,m);if(c.length>1){for(var p=1,o=c.length;p<o;p++){l=l||c[p].call(this,n,m)}}return g*l};this.data.sort(k,e);if(this.snapshot&&this.snapshot!=this.data){this.snapshot.sort(k,e)}},createSortFunction:function(c,b){b=b||"ASC";var a=b.toUpperCase()=="DESC"?-1:1;var d=this.fields.get(c).sortType;return function(g,e){var i=d(g.data[c]),h=d(e.data[c]);return a*(i>h?1:(i<h?-1:0))}},setDefaultSort:function(b,a){a=a?a.toUpperCase():"ASC";this.sortInfo={field:b,direction:a};this.sortToggle[b]=a},sort:function(b,a){if(Ext.isArray(arguments[0])){return this.multiSort.call(this,b,a)}else{return this.singleSort(b,a)}},singleSort:function(g,c){var e=this.fields.get(g);if(!e){return false}var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;if(!c){if(a&&a.field==b){c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")}else{c=e.sortDir}}this.sortToggle[b]=c;this.sortInfo={field:b,direction:c};this.hasMultiSort=false;if(this.remoteSort){if(!this.load(this.lastOptions)){if(d){this.sortToggle[b]=d}if(a){this.sortInfo=a}}}else{this.applySort();this.fireEvent("datachanged",this)}return true},multiSort:function(b,a){this.hasMultiSort=true;a=a||"ASC";if(this.multiSortInfo&&a==this.multiSortInfo.direction){a=a.toggle("ASC","DESC")}this.multiSortInfo={sorters:b,direction:a};if(this.remoteSort){this.singleSort(b[0].field,b[0].direction)}else{this.applySort();this.fireEvent("datachanged",this)}},each:function(b,a){this.data.each(b,a)},getModifiedRecords:function(){return this.modified},sum:function(e,g,a){var c=this.data.items,b=0;g=g||0;a=(a||a===0)?a:c.length-1;for(var d=g;d<=a;d++){b+=(c[d].data[e]||0)}return b},createFilterFn:function(d,c,e,a,b){if(Ext.isEmpty(c,false)){return false}c=this.data.createValueMatcher(c,e,a,b);return function(g){return c.test(g.data[d])}},createMultipleFilterFn:function(a){return function(b){var k=true;for(var d=0,c=a.length;d<c;d++){var h=a[d],g=h.fn,e=h.scope;k=k&&g.call(e,b)}return k}},filter:function(n,m,h,k,e){var l;if(Ext.isObject(n)){n=[n]}if(Ext.isArray(n)){var b=[];for(var g=0,d=n.length;g<d;g++){var a=n[g],c=a.fn,o=a.scope||this;if(!Ext.isFunction(c)){c=this.createFilterFn(a.property,a.value,a.anyMatch,a.caseSensitive,a.exactMatch)}b.push({fn:c,scope:o})}l=this.createMultipleFilterFn(b)}else{l=this.createFilterFn(n,m,h,k,e)}return l?this.filterBy(l):this.clearFilter()},filterBy:function(b,a){this.snapshot=this.snapshot||this.data;this.data=this.queryBy(b,a||this);this.fireEvent("datachanged",this)},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},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,g,e,a){var b=this.createFilterFn(d,c,e,a);return b?this.data.findIndexBy(b,null,g):-1},findExact:function(b,a,c){return this.data.findIndexBy(function(d){return d.get(b)===a},this,c)},findBy:function(b,a,c){return this.data.findIndexBy(b,a,c)},collect:function(k,m,b){var h=(b===true&&this.snapshot)?this.snapshot.items:this.data.items;var n,o,a=[],c={};for(var e=0,g=h.length;e<g;e++){n=h[e].data[k];o=String(n);if((m||!Ext.isEmpty(n))&&!c[o]){c[o]=true;a[a.length]=n}}return a},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 a=this.modified.slice(0),c=a.length,b;for(b=0;b<c;b++){a[b].commit()}this.modified=[];this.removed=[]},rejectChanges:function(){var a=this.modified.slice(0),e=this.removed.slice(0).reverse(),c=a.length,d=e.length,b;for(b=0;b<c;b++){a[b].reject()}for(b=0;b<d;b++){this.insert(e[b].lastIndex||0,e[b]);e[b].reject()}this.modified=[];this.removed=[]},onMetaChange:function(a){this.recordType=this.reader.recordType;this.fields=this.recordType.prototype.fields;delete this.snapshot;if(this.reader.meta.sortInfo){this.sortInfo=this.reader.meta.sortInfo}else{if(this.sortInfo&&!this.fields.get(this.sortInfo.field)){delete this.sortInfo}}if(this.writer){this.writer.meta=this.reader.meta}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},setBaseParam:function(a,b){this.baseParams=this.baseParams||{};this.baseParams[a]=b}});Ext.reg("store",Ext.data.Store);Ext.data.Store.Error=Ext.extend(Ext.Error,{name:"Ext.data.Store"});Ext.apply(Ext.data.Store.Error.prototype,{lang:{"writer-undefined":"Attempted to execute a write-action without a DataWriter installed."}});Ext.data.Field=Ext.extend(Object,{constructor:function(b){if(Ext.isString(b)){b={name:b}}Ext.apply(this,b);var d=Ext.data.Types,a=this.sortType,c;if(this.type){if(Ext.isString(this.type)){this.type=Ext.data.Types[this.type.toUpperCase()]||d.AUTO}}else{this.type=d.AUTO}if(Ext.isString(a)){this.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){this.sortType=this.type.sortType}}if(!this.convert){this.convert=this.type.convert}},dateFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true});Ext.data.DataReader=function(a,b){this.meta=a;this.recordType=Ext.isArray(b)?Ext.data.Record.create(b):b;if(this.recordType){this.buildExtractors()}};Ext.data.DataReader.prototype={getTotal:Ext.emptyFn,getRoot:Ext.emptyFn,getMessage:Ext.emptyFn,getSuccess:Ext.emptyFn,getId:Ext.emptyFn,buildExtractors:Ext.emptyFn,extractValues:Ext.emptyFn,realize:function(a,c){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){if(Ext.isArray(c)){this.realize(a.splice(b,1).shift(),c.splice(b,1).shift())}else{this.realize(a.splice(b,1).shift(),c)}}}else{if(Ext.isArray(c)&&c.length==1){c=c.shift()}if(!this.isData(c)){throw new Ext.data.DataReader.Error("realize",a)}a.phantom=false;a._phid=a.id;a.id=this.getId(c);a.data=c;a.commit()}},update:function(a,c){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){if(Ext.isArray(c)){this.update(a.splice(b,1).shift(),c.splice(b,1).shift())}else{this.update(a.splice(b,1).shift(),c)}}}else{if(Ext.isArray(c)&&c.length==1){c=c.shift()}if(this.isData(c)){a.data=Ext.apply(a.data,c)}a.commit()}},extractData:function(l,a){var k=(this instanceof Ext.data.JsonReader)?"json":"node";var c=[];if(this.isData(l)&&!(this instanceof Ext.data.XmlReader)){l=[l]}var h=this.recordType.prototype.fields,p=h.items,o=h.length,c=[];if(a===true){var m=this.recordType;for(var e=0;e<l.length;e++){var b=l[e];var g=new m(this.extractValues(b,p,o),this.getId(b));g[k]=b;c.push(g)}}else{for(var e=0;e<l.length;e++){var d=this.extractValues(l[e],p,o);d[this.meta.idProperty]=this.getId(l[e]);c.push(d)}}return c},isData:function(a){return(a&&Ext.isObject(a)&&!Ext.isEmpty(this.getId(a)))?true:false},onMetaChange:function(a){delete this.ef;this.meta=a;this.recordType=Ext.data.Record.create(a.fields);this.buildExtractors()}};Ext.data.DataReader.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.DataReader"});Ext.apply(Ext.data.DataReader.Error.prototype,{lang:{update:"#update received invalid data from server.  Please see docs for DataReader#update and review your DataReader configuration.",realize:"#realize was called with invalid remote-data.  Please see the docs for DataReader#realize and review your DataReader configuration.","invalid-response":"#readResponse received an invalid response from the server."}});Ext.data.DataWriter=function(a){Ext.apply(this,a)};Ext.data.DataWriter.prototype={writeAllFields:false,listful:false,apply:function(e,g,d,a){var c=[],b=d+"Record";if(Ext.isArray(a)){Ext.each(a,function(h){c.push(this[b](h))},this)}else{if(a instanceof Ext.data.Record){c=this[b](a)}}this.render(e,g,c)},render:Ext.emptyFn,updateRecord:Ext.emptyFn,createRecord:Ext.emptyFn,destroyRecord:Ext.emptyFn,toHash:function(g,c){var e=g.fields.map,d={},b=(this.writeAllFields===false&&g.phantom===false)?g.getChanges():g.data,a;Ext.iterate(b,function(i,h){if((a=e[i])){d[a.mapping?a.mapping:a.name]=h}});if(g.phantom){if(g.fields.containsKey(this.meta.idProperty)&&Ext.isEmpty(g.data[this.meta.idProperty])){delete d[this.meta.idProperty]}}else{d[this.meta.idProperty]=g.id}return d},toArray:function(b){var a=[];Ext.iterate(b,function(d,c){a.push({name:d,value:c})},this);return a}};Ext.data.DataProxy=function(a){a=a||{};this.api=a.api;this.url=a.url;this.restful=a.restful;this.listeners=a.listeners;this.prettyUrls=a.prettyUrls;this.addEvents("exception","beforeload","load","loadexception","beforewrite","write");Ext.data.DataProxy.superclass.constructor.call(this);try{Ext.data.Api.prepare(this)}catch(b){if(b instanceof Ext.data.Api.Error){b.toConsole()}}Ext.data.DataProxy.relayEvents(this,["beforewrite","write","exception"])};Ext.extend(Ext.data.DataProxy,Ext.util.Observable,{restful:false,setApi:function(){if(arguments.length==1){var a=Ext.data.Api.isValid(arguments[0]);if(a===true){this.api=arguments[0]}else{throw new Ext.data.Api.Error("invalid",a)}}else{if(arguments.length==2){if(!Ext.data.Api.isAction(arguments[0])){throw new Ext.data.Api.Error("invalid",arguments[0])}this.api[arguments[0]]=arguments[1]}}Ext.data.Api.prepare(this)},isApiAction:function(a){return(this.api[a])?true:false},request:function(e,b,g,a,h,d,c){if(!this.api[e]&&!this.load){throw new Ext.data.DataProxy.Error("action-undefined",e)}g=g||{};if((e===Ext.data.Api.actions.read)?this.fireEvent("beforeload",this,g):this.fireEvent("beforewrite",this,e,b,g)!==false){this.doRequest.apply(this,arguments)}else{h.call(d||this,null,c,false)}},load:null,doRequest:function(e,b,g,a,h,d,c){this.load(g,a,h,d,c)},onRead:Ext.emptyFn,onWrite:Ext.emptyFn,buildUrl:function(d,b){b=b||null;var c=(this.conn&&this.conn.url)?this.conn.url:(this.api[d])?this.api[d].url:this.url;if(!c){throw new Ext.data.Api.Error("invalid-url",d)}var e=null;var a=c.match(/(.*)(\.json|\.xml|\.html)$/);if(a){e=a[2];c=a[1]}if((this.restful===true||this.prettyUrls===true)&&b instanceof Ext.data.Record&&!b.phantom){c+="/"+b.id}return(e===null)?c:c+e},destroy:function(){this.purgeListeners()}});Ext.apply(Ext.data.DataProxy,Ext.util.Observable.prototype);Ext.util.Observable.call(Ext.data.DataProxy);Ext.data.DataProxy.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.DataProxy"});Ext.apply(Ext.data.DataProxy.Error.prototype,{lang:{"action-undefined":"DataProxy attempted to execute an API-action but found an undefined url / function.  Please review your Proxy url/api-configuration.","api-invalid":"Recieved an invalid API-configuration.  Please ensure your proxy API-configuration contains only the actions from Ext.data.Api.actions."}});Ext.data.Request=function(a){Ext.apply(this,a)};Ext.data.Request.prototype={action:undefined,rs:undefined,params:undefined,callback:Ext.emptyFn,scope:undefined,reader:undefined};Ext.data.Response=function(a){Ext.apply(this,a)};Ext.data.Response.prototype={action:undefined,success:undefined,message:undefined,data:undefined,raw:undefined,records:undefined};Ext.data.ScriptTagProxy=function(a){Ext.apply(this,a);Ext.data.ScriptTagProxy.superclass.constructor.call(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,doRequest:function(e,g,d,h,k,l,m){var c=Ext.urlEncode(Ext.apply(d,this.extraParams));var b=this.buildUrl(e,g);if(!b){throw new Ext.data.Api.Error("invalid-url",b)}b=Ext.urlAppend(b,c);if(this.nocache){b=Ext.urlAppend(b,"_dc="+(new Date().getTime()))}var a=++Ext.data.ScriptTagProxy.TRANS_ID;var n={id:a,action:e,cb:"stcCallback"+a,scriptId:"stcScript"+a,params:d,arg:m,url:b,callback:k,scope:l,reader:h};window[n.cb]=this.createCallback(e,g,n);b+=String.format("&{0}={1}",this.callbackParam,n.cb);if(this.autoAbort!==false){this.abort()}n.timeoutId=this.handleFailure.defer(this.timeout,this,[n]);var i=document.createElement("script");i.setAttribute("src",b);i.setAttribute("type","text/javascript");i.setAttribute("id",n.scriptId);this.head.appendChild(i);this.trans=n},createCallback:function(d,b,c){var a=this;return function(e){a.trans=false;a.destroyTrans(c,true);if(d===Ext.data.Api.actions.read){a.onRead.call(a,d,c,e)}else{a.onWrite.call(a,d,c,e,b)}}},onRead:function(d,c,b){var a;try{a=c.reader.readRecords(b)}catch(g){this.fireEvent("loadexception",this,c,b,g);this.fireEvent("exception",this,"response",d,c,b,g);c.callback.call(c.scope||window,null,c.arg,false);return}if(a.success===false){this.fireEvent("loadexception",this,c,b);this.fireEvent("exception",this,"remote",d,c,b,null)}else{this.fireEvent("load",this,b,c.arg)}c.callback.call(c.scope||window,a,c.arg,a.success)},onWrite:function(h,g,c,b){var a=g.reader;try{var d=a.readResponse(h,c)}catch(i){this.fireEvent("exception",this,"response",h,g,d,i);g.callback.call(g.scope||window,null,d,false);return}if(!d.success===true){this.fireEvent("exception",this,"remote",h,g,d,b);g.callback.call(g.scope||window,null,d,false);return}this.fireEvent("write",this,h,d.data,d,b,g.arg);g.callback.call(g.scope||window,d.data,d,true)},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){}}}},handleFailure:function(a){this.trans=false;this.destroyTrans(a,false);if(a.action===Ext.data.Api.actions.read){this.fireEvent("loadexception",this,null,a.arg)}this.fireEvent("exception",this,"response",a.action,{response:null,options:a.arg});a.callback.call(a.scope||window,null,a.arg,false)},destroy:function(){this.abort();Ext.data.ScriptTagProxy.superclass.destroy.call(this)}});Ext.data.HttpProxy=function(a){Ext.data.HttpProxy.superclass.constructor.call(this,a);this.conn=a;this.conn.url=null;this.useAjax=!a||!a.events;var c=Ext.data.Api.actions;this.activeRequest={};for(var b in c){this.activeRequest[c[b]]=undefined}};Ext.extend(Ext.data.HttpProxy,Ext.data.DataProxy,{getConnection:function(){return this.useAjax?Ext.Ajax:this.conn},setUrl:function(a,b){this.conn.url=a;if(b===true){this.url=a;this.api=null;Ext.data.Api.prepare(this)}},doRequest:function(g,d,i,c,b,e,a){var h={method:(this.api[g])?this.api[g]["method"]:undefined,request:{callback:b,scope:e,arg:a},reader:c,callback:this.createCallback(g,d),scope:this};if(i.jsonData){h.jsonData=i.jsonData}else{if(i.xmlData){h.xmlData=i.xmlData}else{h.params=i||{}}}this.conn.url=this.buildUrl(g,d);if(this.useAjax){Ext.applyIf(h,this.conn);if(this.activeRequest[g]){}this.activeRequest[g]=Ext.Ajax.request(h)}else{this.conn.request(h)}this.conn.url=null},createCallback:function(b,a){return function(e,d,c){this.activeRequest[b]=undefined;if(!d){if(b===Ext.data.Api.actions.read){this.fireEvent("loadexception",this,e,c)}this.fireEvent("exception",this,"response",b,e,c);e.request.callback.call(e.request.scope,null,e.request.arg,false);return}if(b===Ext.data.Api.actions.read){this.onRead(b,e,c)}else{this.onWrite(b,e,c,a)}}},onRead:function(d,h,b){var a;try{a=h.reader.read(b)}catch(g){this.fireEvent("loadexception",this,h,b,g);this.fireEvent("exception",this,"response",d,h,b,g);h.request.callback.call(h.request.scope,null,h.request.arg,false);return}if(a.success===false){this.fireEvent("loadexception",this,h,b);var c=h.reader.readResponse(d,b);this.fireEvent("exception",this,"remote",d,h,c,null)}else{this.fireEvent("load",this,h,h.request.arg)}h.request.callback.call(h.request.scope,a,h.request.arg,a.success)},onWrite:function(g,i,c,b){var a=i.reader;var d;try{d=a.readResponse(g,c)}catch(h){this.fireEvent("exception",this,"response",g,i,c,h);i.request.callback.call(i.request.scope,null,i.request.arg,false);return}if(d.success===true){this.fireEvent("write",this,g,d.data,d,b,i.request.arg)}else{this.fireEvent("exception",this,"remote",g,i,d,b)}i.request.callback.call(i.request.scope,d.data,d,d.success)},destroy:function(){if(!this.useAjax){this.conn.abort()}else{if(this.activeRequest){var b=Ext.data.Api.actions;for(var a in b){if(this.activeRequest[b[a]]){Ext.Ajax.abort(this.activeRequest[b[a]])}}}}Ext.data.HttpProxy.superclass.destroy.call(this)}});Ext.data.MemoryProxy=function(b){var a={};a[Ext.data.Api.actions.read]=true;Ext.data.MemoryProxy.superclass.constructor.call(this,{api:a});this.data=b};Ext.extend(Ext.data.MemoryProxy,Ext.data.DataProxy,{doRequest:function(b,c,a,d,h,i,k){a=a||{};var l;try{l=d.readRecords(this.data)}catch(g){this.fireEvent("loadexception",this,null,k,g);this.fireEvent("exception",this,"response",b,k,null,g);h.call(i,null,k,false);return}h.call(i,l,k,true)}});Ext.data.Types=new function(){var a=Ext.data.SortTypes;Ext.apply(this,{stripRe:/[\$,%]/g,AUTO:{convert:function(b){return b},sortType:a.none,type:"auto"},STRING:{convert:function(b){return(b===undefined||b===null)?"":String(b)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){return b===true||b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateFormat;if(!c){return null}if(Ext.isDate(c)){return c}if(d){if(d=="timestamp"){return new Date(c*1000)}if(d=="time"){return new Date(parseInt(c,10))}return Date.parseDate(c,d)}var b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(this,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})};Ext.data.JsonWriter=Ext.extend(Ext.data.DataWriter,{encode:true,encodeDelete:false,constructor:function(a){Ext.data.JsonWriter.superclass.constructor.call(this,a)},render:function(c,d,b){if(this.encode===true){Ext.apply(c,d);c[this.meta.root]=Ext.encode(b)}else{var a=Ext.apply({},d);a[this.meta.root]=b;c.jsonData=a}},createRecord:function(a){return this.toHash(a)},updateRecord:function(a){return this.toHash(a)},destroyRecord:function(b){if(this.encodeDelete){var a={};a[this.meta.idProperty]=b.id;return a}else{return b.id}}});Ext.data.JsonReader=function(a,b){a=a||{};Ext.applyIf(a,{idProperty:"id",successProperty:"success",totalProperty:"total"});Ext.data.JsonReader.superclass.constructor.call(this,a,b||a.fields)};Ext.extend(Ext.data.JsonReader,Ext.data.DataReader,{read:function(a){var b=a.responseText;var c=Ext.decode(b);if(!c){throw {message:"JsonReader.read: Json object not found"}}return this.readRecords(c)},readResponse:function(e,b){var g=(b.responseText!==undefined)?Ext.decode(b.responseText):b;if(!g){throw new Ext.data.JsonReader.Error("response")}var a=this.getRoot(g);if(e===Ext.data.Api.actions.create){var d=Ext.isDefined(a);if(d&&Ext.isEmpty(a)){throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)}else{if(!d){throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)}}}var c=new Ext.data.Response({action:e,success:this.getSuccess(g),data:(a)?this.extractData(a,false):[],message:this.getMessage(g),raw:g});if(Ext.isEmpty(c.success)){throw new Ext.data.JsonReader.Error("successProperty-response",this.meta.successProperty)}return c},readRecords:function(a){this.jsonData=a;if(a.metaData){this.onMetaChange(a.metaData)}var n=this.meta,h=this.recordType,b=h.prototype.fields,m=b.items,i=b.length,k;var g=this.getRoot(a),e=g.length,d=e,l=true;if(n.totalProperty){k=parseInt(this.getTotal(a),10);if(!isNaN(k)){d=k}}if(n.successProperty){k=this.getSuccess(a);if(k===false||k==="false"){l=false}}return{success:l,records:this.extractData(g,true),totalRecords:d}},buildExtractors:function(){if(this.ef){return}var m=this.meta,h=this.recordType,e=h.prototype.fields,l=e.items,k=e.length;if(m.totalProperty){this.getTotal=this.createAccessor(m.totalProperty)}if(m.successProperty){this.getSuccess=this.createAccessor(m.successProperty)}if(m.messageProperty){this.getMessage=this.createAccessor(m.messageProperty)}this.getRoot=m.root?this.createAccessor(m.root):function(g){return g};if(m.id||m.idProperty){var d=this.createAccessor(m.id||m.idProperty);this.getId=function(i){var g=d(i);return(g===undefined||g==="")?null:g}}else{this.getId=function(){return null}}var c=[];for(var b=0;b<k;b++){e=l[b];var a=(e.mapping!==undefined&&e.mapping!==null)?e.mapping:e.name;c.push(this.createAccessor(a))}this.ef=c},simpleAccess:function(b,a){return b[a]},createAccessor:function(){var a=/[\[\.]/;return function(c){if(Ext.isEmpty(c)){return Ext.emptyFn}if(Ext.isFunction(c)){return c}var b=String(c).search(a);if(b>=0){return new Function("obj","return obj"+(b>0?".":"")+c)}return function(d){return d[c]}}}(),extractValues:function(h,d,a){var g,c={};for(var e=0;e<a;e++){g=d[e];var b=this.ef[e](h);c[g.name]=g.convert((b!==undefined)?b:g.defaultValue,h)}return c}});Ext.data.JsonReader.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.JsonReader"});Ext.apply(Ext.data.JsonReader.Error.prototype,{lang:{response:"An error occurred while json-decoding your server response","successProperty-response":'Could not locate your "successProperty" in your server response.  Please review your JsonReader config to ensure the config-property "successProperty" matches the property in your server-response.  See the JsonReader docs.',"root-undefined-config":'Your JsonReader was configured without a "root" property.  Please review your JsonReader config and make sure to define the root property.  See the JsonReader docs.',"idProperty-undefined":'Your JsonReader was configured without an "idProperty"  Please review your JsonReader configuration and ensure the "idProperty" is set (e.g.: "id").  See the JsonReader docs.',"root-empty":'Data was expected to be returned by the server in the "root" property of the response.  Please review your JsonReader configuration to ensure the "root" property matches that returned in the server-response.  See JsonReader docs.'}});Ext.data.ArrayReader=Ext.extend(Ext.data.JsonReader,{readRecords:function(r){this.arrayData=r;var l=this.meta,d=l?Ext.num(l.idIndex,l.id):null,b=this.recordType,q=b.prototype.fields,z=[],e=true,g;var u=this.getRoot(r);for(var y=0,A=u.length;y<A;y++){var t=u[y],a={},p=((d||d===0)&&t[d]!==undefined&&t[d]!==""?t[d]:null);for(var x=0,m=q.length;x<m;x++){var B=q.items[x],w=B.mapping!==undefined&&B.mapping!==null?B.mapping:x;g=t[w]!==undefined?t[w]:B.defaultValue;g=B.convert(g,t);a[B.name]=g}var c=new b(a,p);c.json=t;z[z.length]=c}var h=z.length;if(l.totalProperty){g=parseInt(this.getTotal(r),10);if(!isNaN(g)){h=g}}if(l.successProperty){g=this.getSuccess(r);if(g===false||g==="false"){e=false}}return{success:e,records:z,totalRecords:h}}});Ext.data.ArrayStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.ArrayStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.ArrayReader(a)}))},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.ArrayStore.superclass.loadData.call(this,e,b)}});Ext.reg("arraystore",Ext.data.ArrayStore);Ext.data.SimpleStore=Ext.data.ArrayStore;Ext.reg("simplestore",Ext.data.SimpleStore);Ext.data.JsonStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.JsonStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.JsonReader(a)}))}});Ext.reg("jsonstore",Ext.data.JsonStore);Ext.data.XmlWriter=function(a){Ext.data.XmlWriter.superclass.constructor.apply(this,arguments);this.tpl=(typeof(this.tpl)==="string")?new Ext.XTemplate(this.tpl).compile():this.tpl.compile()};Ext.extend(Ext.data.XmlWriter,Ext.data.DataWriter,{documentRoot:"xrequest",forceDocumentRoot:false,root:"records",xmlVersion:"1.0",xmlEncoding:"ISO-8859-15",tpl:'<tpl for="."><\u003fxml version="{version}" encoding="{encoding}"\u003f><tpl if="documentRoot"><{documentRoot}><tpl for="baseParams"><tpl for="."><{name}>{value}</{name}></tpl></tpl></tpl><tpl if="records.length&gt;1"><{root}></tpl><tpl for="records"><{parent.record}><tpl for="."><{name}>{value}</{name}></tpl></{parent.record}></tpl><tpl if="records.length&gt;1"></{root}></tpl><tpl if="documentRoot"></{documentRoot}></tpl></tpl>',render:function(b,c,a){c=this.toArray(c);b.xmlData=this.tpl.applyTemplate({version:this.xmlVersion,encoding:this.xmlEncoding,documentRoot:(c.length>0||this.forceDocumentRoot===true)?this.documentRoot:false,record:this.meta.record,root:this.root,baseParams:c,records:(Ext.isArray(a[0]))?a:[a]})},createRecord:function(a){return this.toArray(this.toHash(a))},updateRecord:function(a){return this.toArray(this.toHash(a))},destroyRecord:function(b){var a={};a[this.meta.idProperty]=b.id;return this.toArray(a)}});Ext.data.XmlReader=function(a,b){a=a||{};Ext.applyIf(a,{idProperty:a.idProperty||a.idPath||a.id,successProperty:a.successProperty||a.success});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(d){this.xmlData=d;var a=d.documentElement||d,c=Ext.DomQuery,g=0,e=true;if(this.meta.totalProperty){g=this.getTotal(a,0)}if(this.meta.successProperty){e=this.getSuccess(a)}var b=this.extractData(c.select(this.meta.record,a),true);return{success:e,records:b,totalRecords:g||b.length}},readResponse:function(g,b){var e=Ext.DomQuery,h=b.responseXML,a=h.documentElement||h;var c=new Ext.data.Response({action:g,success:this.getSuccess(a),message:this.getMessage(a),data:this.extractData(e.select(this.meta.record,a)||e.select(this.meta.root,a),false),raw:h});if(Ext.isEmpty(c.success)){throw new Ext.data.DataReader.Error("successProperty-response",this.meta.successProperty)}if(g===Ext.data.Api.actions.create){var d=Ext.isDefined(c.data);if(d&&Ext.isEmpty(c.data)){throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)}else{if(!d){throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)}}}return c},getSuccess:function(){return true},buildExtractors:function(){if(this.ef){return}var m=this.meta,h=this.recordType,e=h.prototype.fields,l=e.items,k=e.length;if(m.totalProperty){this.getTotal=this.createAccessor(m.totalProperty)}if(m.successProperty){this.getSuccess=this.createAccessor(m.successProperty)}if(m.messageProperty){this.getMessage=this.createAccessor(m.messageProperty)}this.getRoot=function(g){return(!Ext.isEmpty(g[this.meta.record]))?g[this.meta.record]:g[this.meta.root]};if(m.idPath||m.idProperty){var d=this.createAccessor(m.idPath||m.idProperty);this.getId=function(g){var i=d(g)||g.id;return(i===undefined||i==="")?null:i}}else{this.getId=function(){return null}}var c=[];for(var b=0;b<k;b++){e=l[b];var a=(e.mapping!==undefined&&e.mapping!==null)?e.mapping:e.name;c.push(this.createAccessor(a))}this.ef=c},createAccessor:function(){var a=Ext.DomQuery;return function(b){if(Ext.isFunction(b)){return b}switch(b){case this.meta.totalProperty:return function(c,d){return a.selectNumber(b,c,d)};break;case this.meta.successProperty:return function(d,e){var c=a.selectValue(b,d,true);var g=c!==false&&c!=="false";return g};break;default:return function(c,d){return a.selectValue(b,c,d)};break}}}(),extractValues:function(h,d,a){var g,c={};for(var e=0;e<a;e++){g=d[e];var b=this.ef[e](h);c[g.name]=g.convert((b!==undefined)?b:g.defaultValue,h)}return c}});Ext.data.XmlStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.XmlStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.XmlReader(a)}))}});Ext.reg("xmlstore",Ext.data.XmlStore);Ext.data.GroupingStore=Ext.extend(Ext.data.Store,{constructor:function(d){d=d||{};this.hasMultiSort=true;this.multiSortInfo=this.multiSortInfo||{sorters:[]};var e=this.multiSortInfo.sorters,c=d.groupField||this.groupField,b=d.sortInfo||this.sortInfo,a=d.groupDir||this.groupDir;if(c){e.push({field:c,direction:a})}if(b){e.push(b)}Ext.data.GroupingStore.superclass.constructor.call(this,d);this.addEvents("groupchange");this.applyGroupField()},remoteGroup:false,groupOnSort:false,groupDir:"ASC",clearGrouping:function(){this.groupField=false;if(this.remoteGroup){if(this.baseParams){delete this.baseParams.groupBy;delete this.baseParams.groupDir}var a=this.lastOptions;if(a&&a.params){delete a.params.groupBy;delete a.params.groupDir}this.reload()}else{this.sort();this.fireEvent("datachanged",this)}},groupBy:function(e,a,d){d=d?(String(d).toUpperCase()=="DESC"?"DESC":"ASC"):this.groupDir;if(this.groupField==e&&this.groupDir==d&&!a){return}var c=this.multiSortInfo.sorters;if(c.length>0&&c[0].field==this.groupField){c.shift()}this.groupField=e;this.groupDir=d;this.applyGroupField();var b=function(){this.fireEvent("groupchange",this,this.getGroupState())};if(this.groupOnSort){this.sort(e,d);b.call(this);return}if(this.remoteGroup){this.on("load",b,this,{single:true});this.reload()}else{this.sort(c);b.call(this)}},sort:function(h,c){if(this.remoteSort){return Ext.data.GroupingStore.superclass.sort.call(this,h,c)}var g=[];if(Ext.isArray(arguments[0])){g=arguments[0]}else{if(h==undefined){g=this.sortInfo?[this.sortInfo]:[]}else{var e=this.fields.get(h);if(!e){return false}var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;if(!c){if(a&&a.field==b){c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")}else{c=e.sortDir}}this.sortToggle[b]=c;this.sortInfo={field:b,direction:c};g=[this.sortInfo]}}if(this.groupField){g.unshift({direction:this.groupDir,field:this.groupField})}return this.multiSort.call(this,g,c)},applyGroupField:function(){if(this.remoteGroup){if(!this.baseParams){this.baseParams={}}Ext.apply(this.baseParams,{groupBy:this.groupField,groupDir:this.groupDir});var a=this.lastOptions;if(a&&a.params){a.params.groupDir=this.groupDir;delete a.params.groupBy}}},applyGrouping:function(a){if(this.groupField!==false){this.groupBy(this.groupField,true,this.groupDir);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.reg("groupingstore",Ext.data.GroupingStore);Ext.data.DirectProxy=function(a){Ext.apply(this,a);if(typeof this.paramOrder=="string"){this.paramOrder=this.paramOrder.split(/[\s,|]/)}Ext.data.DirectProxy.superclass.constructor.call(this,a)};Ext.extend(Ext.data.DirectProxy,Ext.data.DataProxy,{paramOrder:undefined,paramsAsHash:true,directFn:undefined,doRequest:function(b,c,a,e,l,m,o){var k=[],h=this.api[b]||this.directFn;switch(b){case Ext.data.Api.actions.create:k.push(a.jsonData);break;case Ext.data.Api.actions.read:if(h.directCfg.method.len>0){if(this.paramOrder){for(var d=0,g=this.paramOrder.length;d<g;d++){k.push(a[this.paramOrder[d]])}}else{if(this.paramsAsHash){k.push(a)}}}break;case Ext.data.Api.actions.update:k.push(a.jsonData);break;case Ext.data.Api.actions.destroy:k.push(a.jsonData);break}var n={params:a||{},request:{callback:l,scope:m,arg:o},reader:e};k.push(this.createCallback(b,c,n),this);h.apply(window,k)},createCallback:function(d,a,b){var c=this;return function(e,g){if(!g.status){if(d===Ext.data.Api.actions.read){c.fireEvent("loadexception",c,b,g,null)}c.fireEvent("exception",c,"remote",d,b,g,null);b.request.callback.call(b.request.scope,null,b.request.arg,false);return}if(d===Ext.data.Api.actions.read){c.onRead(d,b,e,g)}else{c.onWrite(d,b,e,g,a)}}},onRead:function(g,e,a,d){var b;try{b=e.reader.readRecords(a)}catch(c){this.fireEvent("loadexception",this,e,d,c);this.fireEvent("exception",this,"response",g,e,d,c);e.request.callback.call(e.request.scope,null,e.request.arg,false);return}this.fireEvent("load",this,d,e.request.arg);e.request.callback.call(e.request.scope,b,e.request.arg,true)},onWrite:function(g,d,a,c,b){var e=d.reader.extractData(d.reader.getRoot(a),false);var h=d.reader.getSuccess(a);h=(h!==false);if(h){this.fireEvent("write",this,g,e,c,b,d.request.arg)}else{this.fireEvent("exception",this,"remote",g,d,a,b)}d.request.callback.call(d.request.scope,e,c,h)}});Ext.data.DirectStore=Ext.extend(Ext.data.Store,{constructor:function(a){var b=Ext.apply({},{batchTransactions:false},a);Ext.data.DirectStore.superclass.constructor.call(this,Ext.apply(b,{proxy:Ext.isDefined(b.proxy)?b.proxy:new Ext.data.DirectProxy(Ext.copyTo({},b,"paramOrder,paramsAsHash,directFn,api")),reader:(!Ext.isDefined(b.reader)&&b.fields)?new Ext.data.JsonReader(Ext.copyTo({},b,"totalProperty,root,idProperty"),b.fields):b.reader}))}});Ext.reg("directstore",Ext.data.DirectStore);Ext.Direct=Ext.extend(Ext.util.Observable,{exceptions:{TRANSPORT:"xhr",PARSE:"parse",LOGIN:"login",SERVER:"exception"},constructor:function(){this.addEvents("event","exception");this.transactions={};this.providers={}},addProvider:function(e){var c=arguments;if(c.length>1){for(var d=0,b=c.length;d<b;d++){this.addProvider(c[d])}return}if(!e.events){e=new Ext.Direct.PROVIDERS[e.type](e)}e.id=e.id||Ext.id();this.providers[e.id]=e;e.on("data",this.onProviderData,this);e.on("exception",this.onProviderException,this);if(!e.isConnected()){e.connect()}return e},getProvider:function(a){return this.providers[a]},removeProvider:function(b){var a=b.id?b:this.providers[b];a.un("data",this.onProviderData,this);a.un("exception",this.onProviderException,this);delete this.providers[a.id];return a},addTransaction:function(a){this.transactions[a.tid]=a;return a},removeTransaction:function(a){delete this.transactions[a.tid||a];return a},getTransaction:function(a){return this.transactions[a.tid||a]},onProviderData:function(d,c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.onProviderData(d,c[b])}return}if(c.name&&c.name!="event"&&c.name!="exception"){this.fireEvent(c.name,c)}else{if(c.type=="exception"){this.fireEvent("exception",c)}}this.fireEvent("event",c,d)},createEvent:function(a,b){return new Ext.Direct.eventTypes[a.type](Ext.apply(a,b))}});Ext.Direct=new Ext.Direct();Ext.Direct.TID=1;Ext.Direct.PROVIDERS={};Ext.Direct.Transaction=function(a){Ext.apply(this,a);this.tid=++Ext.Direct.TID;this.retryCount=0};Ext.Direct.Transaction.prototype={send:function(){this.provider.queueTransaction(this)},retry:function(){this.retryCount++;this.send()},getProvider:function(){return this.provider}};Ext.Direct.Event=function(a){Ext.apply(this,a)};Ext.Direct.Event.prototype={status:true,getData:function(){return this.data}};Ext.Direct.RemotingEvent=Ext.extend(Ext.Direct.Event,{type:"rpc",getTransaction:function(){return this.transaction||Ext.Direct.getTransaction(this.tid)}});Ext.Direct.ExceptionEvent=Ext.extend(Ext.Direct.RemotingEvent,{status:false,type:"exception"});Ext.Direct.eventTypes={rpc:Ext.Direct.RemotingEvent,event:Ext.Direct.Event,exception:Ext.Direct.ExceptionEvent};Ext.direct.Provider=Ext.extend(Ext.util.Observable,{priority:1,constructor:function(a){Ext.apply(this,a);this.addEvents("connect","disconnect","data","exception");Ext.direct.Provider.superclass.constructor.call(this,a)},isConnected:function(){return false},connect:Ext.emptyFn,disconnect:Ext.emptyFn});Ext.direct.JsonProvider=Ext.extend(Ext.direct.Provider,{parseResponse:function(a){if(!Ext.isEmpty(a.responseText)){if(typeof a.responseText=="object"){return a.responseText}return Ext.decode(a.responseText)}return null},getEvents:function(k){var g=null;try{g=this.parseResponse(k)}catch(h){var d=new Ext.Direct.ExceptionEvent({data:h,xhr:k,code:Ext.Direct.exceptions.PARSE,message:"Error parsing json response: \n\n "+g});return[d]}var c=[];if(Ext.isArray(g)){for(var b=0,a=g.length;b<a;b++){c.push(Ext.Direct.createEvent(g[b]))}}else{c.push(Ext.Direct.createEvent(g))}return c}});Ext.direct.PollingProvider=Ext.extend(Ext.direct.JsonProvider,{priority:3,interval:3000,constructor:function(a){Ext.direct.PollingProvider.superclass.constructor.call(this,a);this.addEvents("beforepoll","poll")},isConnected:function(){return !!this.pollTask},connect:function(){if(this.url&&!this.pollTask){this.pollTask=Ext.TaskMgr.start({run:function(){if(this.fireEvent("beforepoll",this)!==false){if(typeof this.url=="function"){this.url(this.baseParams)}else{Ext.Ajax.request({url:this.url,callback:this.onData,scope:this,params:this.baseParams})}}},interval:this.interval,scope:this});this.fireEvent("connect",this)}else{if(!this.url){throw"Error initializing PollingProvider, no url configured."}}},disconnect:function(){if(this.pollTask){Ext.TaskMgr.stop(this.pollTask);delete this.pollTask;this.fireEvent("disconnect",this)}},onData:function(d,k,h){if(k){var c=this.getEvents(h);for(var b=0,a=c.length;b<a;b++){var g=c[b];this.fireEvent("data",this,g)}}else{var g=new Ext.Direct.ExceptionEvent({data:g,code:Ext.Direct.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:h});this.fireEvent("data",this,g)}}});Ext.Direct.PROVIDERS.polling=Ext.direct.PollingProvider;Ext.direct.RemotingProvider=Ext.extend(Ext.direct.JsonProvider,{enableBuffer:10,maxRetries:1,timeout:undefined,constructor:function(a){Ext.direct.RemotingProvider.superclass.constructor.call(this,a);this.addEvents("beforecall","call");this.namespace=(Ext.isString(this.namespace))?Ext.ns(this.namespace):this.namespace||window;this.transactions={};this.callBuffer=[]},initAPI:function(){var h=this.actions;for(var k in h){var d=this.namespace[k]||(this.namespace[k]={}),e=h[k];for(var g=0,b=e.length;g<b;g++){var a=e[g];d[a.name]=this.createMethod(k,a)}}},isConnected:function(){return !!this.connected},connect:function(){if(this.url){this.initAPI();this.connected=true;this.fireEvent("connect",this)}else{if(!this.url){throw"Error initializing RemotingProvider, no url configured."}}},disconnect:function(){if(this.connected){this.connected=false;this.fireEvent("disconnect",this)}},onData:function(a,h,k){if(h){var l=this.getEvents(k);for(var b=0,c=l.length;b<c;b++){var d=l[b],m=this.getTransaction(d);this.fireEvent("data",this,d);if(m){this.doCallback(m,d,true);Ext.Direct.removeTransaction(m)}}}else{var g=[].concat(a.ts);for(var b=0,c=g.length;b<c;b++){var m=this.getTransaction(g[b]);if(m&&m.retryCount<this.maxRetries){m.retry()}else{var d=new Ext.Direct.ExceptionEvent({data:d,transaction:m,code:Ext.Direct.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:k});this.fireEvent("data",this,d);if(m){this.doCallback(m,d,false);Ext.Direct.removeTransaction(m)}}}}},getCallData:function(a){return{action:a.action,method:a.method,data:a.data,type:"rpc",tid:a.tid}},doSend:function(d){var g={url:this.url,callback:this.onData,scope:this,ts:d,timeout:this.timeout},b;if(Ext.isArray(d)){b=[];for(var c=0,a=d.length;c<a;c++){b.push(this.getCallData(d[c]))}}else{b=this.getCallData(d)}if(this.enableUrlEncode){var e={};e[Ext.isString(this.enableUrlEncode)?this.enableUrlEncode:"data"]=Ext.encode(b);g.params=e}else{g.jsonData=b}Ext.Ajax.request(g)},combineAndSend:function(){var a=this.callBuffer.length;if(a>0){this.doSend(a==1?this.callBuffer[0]:this.callBuffer);this.callBuffer=[]}},queueTransaction:function(a){if(a.form){this.processForm(a);return}this.callBuffer.push(a);if(this.enableBuffer){if(!this.callTask){this.callTask=new Ext.util.DelayedTask(this.combineAndSend,this)}this.callTask.delay(Ext.isNumber(this.enableBuffer)?this.enableBuffer:10)}else{this.combineAndSend()}},doCall:function(i,a,b){var h=null,e=b[a.len],g=b[a.len+1];if(a.len!==0){h=b.slice(0,a.len)}var d=new Ext.Direct.Transaction({provider:this,args:b,action:i,method:a.name,data:h,cb:g&&Ext.isFunction(e)?e.createDelegate(g):e});if(this.fireEvent("beforecall",this,d,a)!==false){Ext.Direct.addTransaction(d);this.queueTransaction(d);this.fireEvent("call",this,d,a)}},doForm:function(k,b,g,i,e){var d=new Ext.Direct.Transaction({provider:this,action:k,method:b.name,args:[g,i,e],cb:e&&Ext.isFunction(i)?i.createDelegate(e):i,isForm:true});if(this.fireEvent("beforecall",this,d,b)!==false){Ext.Direct.addTransaction(d);var a=String(g.getAttribute("enctype")).toLowerCase()=="multipart/form-data",h={extTID:d.tid,extAction:k,extMethod:b.name,extType:"rpc",extUpload:String(a)};Ext.apply(d,{form:Ext.getDom(g),isUpload:a,params:i&&Ext.isObject(i.params)?Ext.apply(h,i.params):h});this.fireEvent("call",this,d,b);this.processForm(d)}},processForm:function(a){Ext.Ajax.request({url:this.url,params:a.params,callback:this.onData,scope:this,form:a.form,isUpload:a.isUpload,ts:a})},createMethod:function(d,a){var b;if(!a.formHandler){b=function(){this.doCall(d,a,Array.prototype.slice.call(arguments,0))}.createDelegate(this)}else{b=function(e,g,c){this.doForm(d,a,e,g,c)}.createDelegate(this)}b.directCfg={action:d,method:a};return b},getTransaction:function(a){return a&&a.tid?Ext.Direct.getTransaction(a.tid):null},doCallback:function(c,g){var d=g.status?"success":"failure";if(c&&c.cb){var b=c.cb,a=Ext.isDefined(g.result)?g.result:g.data;if(Ext.isFunction(b)){b(a,g)}else{Ext.callback(b[d],b.scope,[a,g]);Ext.callback(b.callback,b.scope,[a,g])}}}});Ext.Direct.PROVIDERS.remoting=Ext.direct.RemotingProvider;Ext.Resizable=Ext.extend(Ext.util.Observable,{constructor: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 g=e.resizeChild.getSize();this.el.setSize(g.width,g.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"},Ext.getBody());this.proxy.unselectable();this.proxy.enableDisplayMode("block");Ext.apply(this,e);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned")}var l=this.el.getStyle("position");if(l!="absolute"&&l!="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 p=this.handles.split(/\s*?[,;]\s*?| /);var c=Ext.Resizable.positions;for(var k=0,m=p.length;k<m;k++){if(p[k]&&c[p[k]]){var o=c[p[k]];this[o]=new Ext.Resizable.Handle(this,o,this.disableTrackOver,this.transparent,this.handleCls)}}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 n=this.west,h=this.east,a=this.north,p=this.south;if(b&&(n||a)){b.position("relative");b.setLeft(n?n.el.getWidth():0);b.setTop(a?a.el.getHeight():0)}this.adjustments=[(h?-h.el.getWidth():0)+(n?-n.el.getWidth():0),(a?-a.el.getHeight():0)+(p?-p.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);if(this.constrainTo){this.dd.constrainTo(this.constrainTo)}}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)},adjustments:[0,0],animate:false,disableTrackOver:false,draggable:false,duration:0.35,dynamic:false,easing:"easeOutStrong",enabled:true,handles:false,multiDirectional:false,height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:5,minWidth:5,maxHeight:10000,maxWidth:10000,minX:0,minY:0,pinned:false,preserveRatio:false,resizeChild:false,transparent: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:"&#160;"},Ext.getBody());this.overlay.unselectable();this.overlay.enableDisplayMode("block");this.overlay.on({scope:this,mousemove:this.onMouseMove,mouseup:this.onMouseUp})}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){this.activeHandle=null;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 d=this.el;var e=this.resizeChild;var c=this.adjustments;if(d.dom.offsetWidth){var a=d.getSize(true);e.setSize(a.width+c[0],a.height+c[1])}if(Ext.isIE){setTimeout(function(){if(d.dom.offsetWidth){var g=d.getSize(true);e.setSize(g.width+c[0],g.height+c[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()}if(this.draggable&&this.constrainTo){this.dd.resetConstraints();this.dd.constrainTo(this.constrainTo)}return a},constrain:function(b,c,a,d){if(b-c<a){c=b-a}else{if(b-c>d){c=b-d}}return c},onMouseMove:function(A){if(this.enabled&&this.activeHandle){try{if(this.resizeRegion&&!this.resizeRegion.contains(A.getPoint())){return}var u=this.curSize||this.startBox,m=this.startBox.x,l=this.startBox.y,c=m,b=l,n=u.width,v=u.height,d=n,p=v,o=this.minWidth,B=this.minHeight,t=this.maxWidth,E=this.maxHeight,i=this.widthIncrement,a=this.heightIncrement,C=A.getXY(),s=-(this.startPoint[0]-Math.max(this.minX,C[0])),q=-(this.startPoint[1]-Math.max(this.minY,C[1])),k=this.activeHandle.position,F,g;switch(k){case"east":n+=s;n=Math.min(Math.max(o,n),t);break;case"south":v+=q;v=Math.min(Math.max(B,v),E);break;case"southeast":n+=s;v+=q;n=Math.min(Math.max(o,n),t);v=Math.min(Math.max(B,v),E);break;case"north":q=this.constrain(v,q,B,E);l+=q;v-=q;break;case"west":s=this.constrain(n,s,o,t);m+=s;n-=s;break;case"northeast":n+=s;n=Math.min(Math.max(o,n),t);q=this.constrain(v,q,B,E);l+=q;v-=q;break;case"northwest":s=this.constrain(n,s,o,t);q=this.constrain(v,q,B,E);l+=q;v-=q;m+=s;n-=s;break;case"southwest":s=this.constrain(n,s,o,t);v+=q;v=Math.min(Math.max(B,v),E);m+=s;n-=s;break}var r=this.snap(n,i,o);var D=this.snap(v,a,B);if(r!=n||D!=v){switch(k){case"northeast":l-=D-v;break;case"north":l-=D-v;break;case"southwest":m-=r-n;break;case"west":m-=r-n;break;case"northwest":m-=r-n;l-=D-v;break}n=r;v=D}if(this.preserveRatio){switch(k){case"southeast":case"east":v=p*(n/d);v=Math.min(Math.max(B,v),E);n=d*(v/p);break;case"south":n=d*(v/p);n=Math.min(Math.max(o,n),t);v=p*(n/d);break;case"northeast":n=d*(v/p);n=Math.min(Math.max(o,n),t);v=p*(n/d);break;case"north":F=n;n=d*(v/p);n=Math.min(Math.max(o,n),t);v=p*(n/d);m+=(F-n)/2;break;case"southwest":v=p*(n/d);v=Math.min(Math.max(B,v),E);F=n;n=d*(v/p);m+=F-n;break;case"west":g=v;v=p*(n/d);v=Math.min(Math.max(B,v),E);l+=(g-v)/2;F=n;n=d*(v/p);m+=F-n;break;case"northwest":F=n;g=v;v=p*(n/d);v=Math.min(Math.max(B,v),E);n=d*(v/p);l+=g-v;m+=F-n;break}}this.proxy.setBounds(m,l,n,v);if(this.dynamic){this.resizeElement()}}catch(z){}}},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(b){Ext.destroy(this.dd,this.overlay,this.proxy);this.overlay=null;this.proxy=null;var c=Ext.Resizable.positions;for(var a in c){if(typeof c[a]!="function"&&this[c[a]]){this[c[a]].destroy()}}if(b){this.el.update("");Ext.destroy(this.el);this.el=null}this.purgeListeners()},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=Ext.extend(Object,{constructor:function(d,g,c,e,a){if(!this.tpl){var b=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});b.compile();Ext.Resizable.Handle.prototype.tpl=b}this.position=g;this.rz=d;this.el=this.tpl.append(d.el.dom,[this.position],true);this.el.unselectable();if(e){this.el.setOpacity(0)}if(!Ext.isEmpty(a)){this.el.addClass(a)}this.el.on("mousedown",this.onMouseDown,this);if(!c){this.el.on({scope:this,mouseover:this.onMouseOver,mouseout:this.onMouseOut})}},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)},destroy:function(){Ext.destroy(this.el);this.el=null}});Ext.Window=Ext.extend(Ext.Panel,{baseCls:"x-window",resizable:true,draggable:true,closable:true,closeAction:"close",constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:100,minWidth:200,expandOnShow:true,showAnimDuration:0.25,hideAnimDuration:0.25,collapsible:false,initHidden:undefined,hidden:true,elements:"header,body",frame:true,floating:true,initComponent:function(){this.initTools();Ext.Window.superclass.initComponent.call(this);this.addEvents("resize","maximize","minimize","restore");if(Ext.isDefined(this.initHidden)){this.hidden=this.initHidden}if(this.hidden===false){this.hidden=true;this.show()}},getState:function(){return Ext.apply(Ext.Window.superclass.getState.call(this)||{},this.getBox(true))},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:"&#160;"});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();this.mon(this.mask,"click",this.focus,this)}if(this.maximizable){this.mon(this.header,"dblclick",this.toggleMaximize,this)}},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,handleCls:"x-window-handle"});this.resizer.window=this;this.mon(this.resizer,"beforeresize",this.beforeResize,this)}if(this.draggable){this.header.addClass("x-window-draggable")}this.mon(this.el,"mousedown",this.toFront,this);this.manager=this.manager||Ext.WindowMgr;this.manager.register(this);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(a,b){b.stopEvent();this[this.closeAction]()},beforeDestroy:function(){if(this.rendered){this.hide();this.clearAnchor();Ext.destroy(this.focusEl,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})}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);if(Ext.isIE6&&Ext.isStrict){this.doLayout()}}this.focus();this.updateHandles();this.saveState()},focus:function(){var e=this.focusEl,a=this.defaultButton,c=typeof a,d,b;if(Ext.isDefined(a)){if(Ext.isNumber(a)&&this.fbar){e=this.fbar.items.get(a)}else{if(Ext.isString(a)){e=Ext.getCmp(a)}else{e=a}}d=e.getEl();b=Ext.getDom(this.container);if(d&&b){if(b!=document.body&&!Ext.lib.Region.getRegion(b).contains(Ext.lib.Region.getRegion(d.dom))){return}}}e=e||this.focusEl;e.focus.defer(10,e)},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 this}if(this.fireEvent("beforeshow",this)===false){return this}if(a){this.on("show",a,b,{single:true})}this.hidden=false;if(Ext.isDefined(c)){this.setAnimateTarget(c)}this.beforeShow();if(this.animateTarget){this.animShow()}else{this.afterShow()}return this},afterShow:function(b){if(this.isDestroyed){return false}this.proxy.hide();this.el.setStyle("display","block");this.el.show();if(this.maximized){this.fitContainer()}if(Ext.isMac&&Ext.isGecko2){this.cascade(this.setAutoScroll)}if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.onWindowResize(this.onWindowResize,this)}this.doConstrain();this.doLayout();if(this.keyMap){this.keyMap.enable()}this.toFront();this.updateHandles();if(b&&(Ext.isIE||Ext.isWebKit)){var a=this.getSize();this.onResize(a.width,a.height)}this.onShow();this.fireEvent("show",this)},animShow:function(){this.proxy.show();this.proxy.setBox(this.animateTarget.getBox());this.proxy.setOpacity(0);var a=this.getBox();this.el.setStyle("display","none");this.proxy.shift(Ext.apply(a,{callback:this.afterShow.createDelegate(this,[true],false),scope:this,easing:"easeNone",duration:this.showAnimDuration,opacity:0.5}))},hide:function(c,a,b){if(this.hidden||this.fireEvent("beforehide",this)===false){return this}if(a){this.on("hide",a,b,{single:true})}this.hidden=true;if(c!==undefined){this.setAnimateTarget(c)}if(this.modal){this.mask.hide();Ext.getBody().removeClass("x-body-masked")}if(this.animateTarget){this.animHide()}else{this.el.hide();this.afterHide()}return this},afterHide:function(){this.proxy.hide();if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.removeResizeListener(this.onWindowResize,this)}if(this.keyMap){this.keyMap.disable()}this.onHide();this.fireEvent("hide",this)},animHide:function(){this.proxy.setOpacity(0.5);this.proxy.show();var a=this.getBox(false);this.proxy.setBox(a);this.el.hide();this.proxy.shift(Ext.apply(this.animateTarget.getBox(),{callback:this.afterHide,scope:this,duration:this.hideAnimDuration,easing:"easeNone",opacity:0}))},onShow:Ext.emptyFn,onHide:Ext.emptyFn,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(!this.activeGhost){return}if(b!==false){this.el.show();this.focus.defer(10,this);if(Ext.isMac&&Ext.isGecko2){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);return this},close:function(){if(this.fireEvent("beforeclose",this)!==false){if(this.hidden){this.doClose()}else{this.hide(null,this.doClose,this)}}},doClose:function(){this.fireEvent("close",this);this.destroy()},maximize:function(){if(!this.maximized){this.expand(false);this.restoreSize=this.getSize();this.restorePos=this.getPosition(true);if(this.maximizable){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)}return this},restore:function(){if(this.maximized){var a=this.tools;this.el.removeClass("x-window-maximized");if(a.restore){a.restore.hide()}if(a.maximize){a.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&&a.toggle){a.toggle.show()}this.container.removeClass("x-window-maximized-ct");this.doConstrain();this.fireEvent("restore",this)}return this},toggleMaximize:function(){return this[this.maximized?"restore":"maximize"]()},fitContainer:function(){var a=this.container.getViewSize(false);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,e,d,b){this.clearAnchor();this.anchorTarget={el:c,alignment:e,offsets:d};Ext.EventManager.onWindowResize(this.doAnchor,this);var a=typeof b;if(a!="undefined"){Ext.EventManager.on(window,"scroll",this.doAnchor,this,{buffer:a=="number"?b:50})}return this.doAnchor()},doAnchor:function(){var a=this.anchorTarget;this.alignTo(a.el,a.alignment,a.offsets);return this},clearAnchor:function(){if(this.anchorTarget){Ext.EventManager.removeResizeListener(this.doAnchor,this);Ext.EventManager.un(window,"scroll",this.doAnchor,this);delete this.anchorTarget}return this},toFront:function(a){if(this.manager.bringToFront(this)){if(!a||!a.getTarget().focus){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=Ext.extend(Ext.dd.DD,{constructor: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},moveOnly:true,headerOffsets:[100,25],startDrag:function(){var a=this.win;this.proxy=a.ghost(a.initialConfig.cls);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 g={};var d=[];var e=null;var c=function(k,i){return(!k._lastAccess||k._lastAccess<i._lastAccess)?-1:1};var h=function(){var m=d,k=m.length;if(k>0){m.sort(c);var l=m[0].manager.zseed;for(var n=0;n<k;n++){var o=m[n];if(o&&!o.hidden){o.setZIndex(l+(n*10))}}}a()};var b=function(i){if(i!=e){if(e){e.setActive(false)}e=i;if(i){i.setActive(true)}}};var a=function(){for(var k=d.length-1;k>=0;--k){if(!d[k].hidden){b(d[k]);return}}b(null)};return{zseed:9000,register:function(i){if(i.manager){i.manager.unregister(i)}i.manager=this;g[i.id]=i;d.push(i);i.on("hide",a)},unregister:function(i){delete i.manager;delete g[i.id];i.un("hide",a);d.remove(i)},get:function(i){return typeof i=="object"?i:g[i]},bringToFront:function(i){i=this.get(i);if(i!=e){i._lastAccess=new Date().getTime();h();return true}return false},sendToBack:function(i){i=this.get(i);i._lastAccess=-(new Date().getTime());h();return i},hideAll:function(){for(var i in g){if(g[i]&&typeof g[i]!="function"&&g[i].isVisible()){g[i].hide()}}},getActive:function(){return e},getBy:function(m,l){var n=[];for(var k=d.length-1;k>=0;--k){var o=d[k];if(m.call(l||o,o)!==false){n.push(o)}}return n},each:function(k,i){for(var l in g){if(g[l]&&typeof g[l]!="function"){if(k.call(i||g[l],g[l])===false){return}}}}}};Ext.WindowMgr=new Ext.WindowGroup();Ext.MessageBox=function(){var v,b,r,u,h,m,t,a,o,q,k,g,s,w,p,i="",d="",n=["ok","yes","no","cancel"];var c=function(y){s[y].blur();if(v.isVisible()){v.hide();x();Ext.callback(b.fn,b.scope||window,[y,w.dom.value,b],1)}};var x=function(){if(b&&b.cls){v.el.removeClass(b.cls)}o.reset()};var e=function(A,y,z){if(b&&b.closable!==false){v.hide();x()}if(z){z.stopEvent()}};var l=function(y){var A=0,z;if(!y){Ext.each(n,function(B){s[B].hide()});return A}v.footer.dom.style.display="";Ext.iterate(s,function(B,C){z=y[B];if(z){C.show();C.setText(Ext.isString(z)?z:Ext.MessageBox.buttonText[B]);A+=C.getEl().getWidth()+15}else{C.hide()}});return A};return{getDialog:function(y){if(!v){var A=[];s={};Ext.each(n,function(B){A.push(s[B]=new Ext.Button({text:this.buttonText[B],handler:c.createCallback(B),hideMode:"offsets"}))},this);v=new Ext.Window({autoCreate:true,title:y,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){c("no")}else{c("cancel")}},fbar:new Ext.Toolbar({items:A,enableOverflow:false})});v.render(document.body);v.getEl().addClass("x-window-dlg");r=v.mask;h=v.body.createChild({html:'<div class="ext-mb-icon"></div><div class="ext-mb-content"><span class="ext-mb-text"></span><br /><div class="ext-mb-fix-cursor"><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea></div></div>'});k=Ext.get(h.dom.firstChild);var z=h.dom.childNodes[1];m=Ext.get(z.firstChild);t=Ext.get(z.childNodes[2].firstChild);t.enableDisplayMode();t.addKeyListener([10,13],function(){if(v.isVisible()&&b&&b.buttons){if(b.buttons.ok){c("ok")}else{if(b.buttons.yes){c("yes")}}}});a=Ext.get(z.childNodes[2].childNodes[1]);a.enableDisplayMode();o=new Ext.ProgressBar({renderTo:h});h.createChild({cls:"x-clear"})}return v},updateText:function(B){if(!v.isVisible()&&!b.width){v.setSize(this.maxWidth,100)}m.update(B?B+" ":"&#160;");var z=d!=""?(k.getWidth()+k.getMargins("lr")):0,D=m.getWidth()+m.getMargins("lr"),A=v.getFrameWidth("lr"),C=v.body.getFrameWidth("lr"),y;y=Math.max(Math.min(b.width||z+D+A+C,b.maxWidth||this.maxWidth),Math.max(b.minWidth||this.minWidth,p||0));if(b.prompt===true){w.setWidth(y-z-A-C)}if(b.progress===true||b.wait===true){o.setSize(y-z-A-C)}if(Ext.isIE&&y==p){y+=4}m.update(B||"&#160;");v.setSize(y,"auto").center();return this},updateProgress:function(z,y,A){o.updateProgress(z,y);if(A){this.updateText(A)}return this},isVisible:function(){return v&&v.isVisible()},hide:function(){var y=v?v.activeGhost:null;if(this.isVisible()||y){v.hide();x();if(y){v.unghost(false,false)}}return this},show:function(B){if(this.isVisible()){this.hide()}b=B;var C=this.getDialog(b.title||"&#160;");C.setTitle(b.title||"&#160;");var y=(b.closable!==false&&b.progress!==true&&b.wait!==true);C.tools.close.setDisplayed(y);w=t;b.prompt=b.prompt||(b.multiline?true:false);if(b.prompt){if(b.multiline){t.hide();a.show();a.setHeight(Ext.isNumber(b.multiline)?b.multiline:this.defaultTextHeight);w=a}else{t.show();a.hide()}}else{t.hide();a.hide()}w.dom.value=b.value||"";if(b.prompt){C.focusEl=w}else{var A=b.buttons;var z=null;if(A&&A.ok){z=s.ok}else{if(A&&A.yes){z=s.yes}}if(z){C.focusEl=z}}if(Ext.isDefined(b.iconCls)){C.setIconClass(b.iconCls)}this.setIcon(Ext.isDefined(b.icon)?b.icon:i);p=l(b.buttons);o.setVisible(b.progress===true||b.wait===true);this.updateProgress(0,b.progressText);this.updateText(b.msg);if(b.cls){C.el.addClass(b.cls)}C.proxyDrag=b.proxyDrag===true;C.modal=b.modal!==false;C.mask=b.modal!==false?r:false;if(!C.isVisible()){document.body.appendChild(v.el.dom);C.setAnimateTarget(b.animEl);C.on("show",function(){if(y===true){C.keyMap.enable()}else{C.keyMap.disable()}},this,{single:true});C.show(b.animEl)}if(b.wait===true){o.wait(b.waitConfig)}return this},setIcon:function(y){if(!v){i=y;return}i=undefined;if(y&&y!=""){k.removeClass("x-hidden");k.replaceClass(d,y);h.addClass("x-dlg-icon");d=y}else{k.replaceClass(d,"x-hidden");h.removeClass("x-dlg-icon");d=""}return this},progress:function(A,z,y){this.show({title:A,msg:z,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,progressText:y});return this},wait:function(A,z,y){this.show({title:z,msg:A,buttons:false,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:y});return this},alert:function(B,A,z,y){this.show({title:B,msg:A,buttons:this.OK,fn:z,scope:y,minWidth:this.minWidth});return this},confirm:function(B,A,z,y){this.show({title:B,msg:A,buttons:this.YESNO,fn:z,scope:y,icon:this.QUESTION,minWidth:this.minWidth});return this},prompt:function(D,C,A,z,y,B){this.show({title:D,msg:C,buttons:this.OKCANCEL,fn:A,minWidth:this.minPromptWidth,scope:z,prompt:true,multiline:y,value:B});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,minPromptWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}}}();Ext.Msg=Ext.MessageBox;Ext.dd.PanelProxy=Ext.extend(Object,{constructor:function(a,b){this.panel=a;this.id=this.panel.id+"-ddproxy";Ext.apply(this,b)},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(this.panel.initialConfig.cls,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=Ext.extend(Ext.dd.DragSource,{constructor: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);var d=b.header,c=b.body;if(d){this.setHandleElId(d.id);c=b.header}c.setStyle("cursor","move");this.scroll=false},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.proxy.show()},b4MouseDown:function(b){var a=b.getPageX(),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=Ext.extend(Ext.util.Observable,{constructor:function(){this.addEvents("statechange");this.state={};Ext.state.Provider.superclass.constructor.call(this)},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(b){var e=/^(a|n|d|b|s|o|e)\:(.*)$/,h=e.exec(unescape(b)),d,c,a,g;if(!h||!h[1]){return}c=h[1];a=h[2];switch(c){case"e":return null;case"n":return parseFloat(a);case"d":return new Date(Date.parse(a));case"b":return(a=="1");case"a":d=[];if(a!=""){Ext.each(a.split("^"),function(i){d.push(this.decodeValue(i))},this)}return d;case"o":d={};if(a!=""){Ext.each(a.split("^"),function(i){g=i.split("=");d[g[0]]=this.decodeValue(g[1])},this)}return d;default:return a}},encodeValue:function(c){var b,g="",e=0,a,d;if(c==null){return"e:1"}else{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)){for(a=c.length;e<a;e++){g+=this.encodeValue(c[e]);if(e!=a-1){g+="^"}}b="a:"+g}else{if(typeof c=="object"){for(d in c){if(typeof c[d]!="function"&&c[d]!==undefined){g+=d+"="+this.encodeValue(c[d])+"^"}}b="o:"+g.substring(0,g.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=Ext.extend(Ext.state.Provider,{constructor: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()},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 d={},h=document.cookie+";",b=/\s?(.*?)=(.*?);/g,g,a,e;while((g=b.exec(h))!=null){a=g[1];e=g[2];if(a&&a.substring(0,3)=="ys-"){d[a.substr(3)]=this.decodeValue(e)}}return d},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:"",deferEmptyText:true,trackOver:false,blockRefresh:false,last:false,initComponent:function(){Ext.DataView.superclass.initComponent.call(this);if(Ext.isString(this.tpl)||Ext.isArray(this.tpl)){this.tpl=new Ext.XTemplate(this.tpl)}this.addEvents("beforeclick","click","mouseenter","mouseleave","containerclick","dblclick","contextmenu","containercontextmenu","selectionchange","beforeselect");this.store=Ext.StoreMgr.lookup(this.store);this.all=new Ext.CompositeElementLite();this.selected=new Ext.CompositeElementLite()},afterRender:function(){Ext.DataView.superclass.afterRender.call(this);this.mon(this.getTemplateTarget(),{click:this.onClick,dblclick:this.onDblClick,contextmenu:this.onContextMenu,scope:this});if(this.overClass||this.trackOver){this.mon(this.getTemplateTarget(),{mouseover:this.onMouseOver,mouseout:this.onMouseOut,scope:this})}if(this.store){this.bindStore(this.store,true)}},refresh:function(){this.clearSelections(false,true);var b=this.getTemplateTarget(),a=this.store.getRange();b.update("");if(a.length<1){if(!this.deferEmptyText||this.hasSkippedEmptyText){b.update(this.emptyText)}this.all.clear()}else{this.tpl.overwrite(b,this.collectData(a,0));this.all.fill(Ext.query(this.itemSelector,b.dom));this.updateIndexes(0)}this.hasSkippedEmptyText=true},getTemplateTarget:function(){return this.el},prepareData:function(a){return a},collectData:function(b,e){var d=[],c=0,a=b.length;for(;c<a;c++){d[d.length]=this.prepareData(b[c].data,e+c,b[c])}return d},bufferRender:function(a,b){var c=document.createElement("div");this.tpl.overwrite(c,this.collectData(a,b));return Ext.query(this.itemSelector,c)},onUpdate:function(g,a){var b=this.store.indexOf(a);if(b>-1){var e=this.isSelected(b),c=this.all.elements[b],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(g,d,e){if(this.all.getCount()===0){this.refresh();return}var c=this.bufferRender(d,e),h,b=this.all.elements;if(e<this.all.getCount()){h=this.all.item(e).insertSibling(c,"before",true);b.splice.apply(b,[e,0].concat(c))}else{h=this.all.last().insertSibling(c,"after",true);b.push.apply(b,c)}this.updateIndexes(e)},onRemove:function(c,a,b){this.deselect(b);this.all.removeElement(b,true);this.updateIndexes(b);if(this.store.getCount()===0){this.refresh()}},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}},getStore:function(){return this.store},bindStore:function(a,b){if(!b&&this.store){if(a!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("datachanged",this.onDataChanged,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){this.store=null}}if(a){a=Ext.StoreMgr.lookup(a);a.on({scope:this,beforeload:this.onBeforeLoad,datachanged:this.onDataChanged,add:this.onAdd,remove:this.onRemove,update:this.onUpdate,clear:this.refresh})}this.store=a;if(a){this.refresh()}},onDataChanged:function(){if(this.blockRefresh!==true){this.refresh.apply(this,arguments)}},findItemFromChild:function(a){return Ext.fly(a).findParent(this.itemSelector,this.getTemplateTarget())},onClick:function(c){var b=c.getTarget(this.itemSelector,this.getTemplateTarget()),a;if(b){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.onContainerClick(c)}}},onContainerClick:function(a){this.clearSelections()},onContextMenu:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a){this.fireEvent("contextmenu",this,this.indexOf(a),a,b)}else{this.fireEvent("containercontextmenu",this,b)}},onDblClick:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a){this.fireEvent("dblclick",this,this.indexOf(a),a,b)}},onMouseOver:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a&&a!==this.lastItem){this.lastItem=a;Ext.fly(a).addClass(this.overClass);this.fireEvent("mouseenter",this,this.indexOf(a),a,b)}},onMouseOut:function(a){if(this.lastItem){if(!a.within(this.lastItem,true,true)){Ext.fly(this.lastItem).removeClass(this.overClass);this.fireEvent("mouseleave",this,this.indexOf(this.lastItem),this.lastItem,a);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,c=0,a=d.length;for(;c<a;c++){b.push(d[c].viewIndex)}return b},getSelectedRecords:function(){return this.getRecords(this.selected.elements)},getRecords:function(c){var b=[],d=0,a=c.length;for(;d<a;d++){b[b.length]=this.store.getAt(c[d].viewIndex)}return b},getRecord:function(a){return this.store.getAt(a.viewIndex)},clearSelections:function(a,b){if((this.multiSelect||this.singleSelect)&&this.selected.getCount()>0){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)){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,g,b){if(Ext.isArray(d)){if(!g){this.clearSelections(true)}for(var c=0,a=d.length;c<a;c++){this.select(d[c],true,true)}if(!b){this.fireEvent("selectionchange",this,this.selected.elements)}}else{var e=this.getNode(d);if(!g){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(b){if(Ext.isString(b)){return document.getElementById(b)}else{if(Ext.isNumber(b)){return this.all.elements[b]}else{if(b instanceof Ext.data.Record){var a=this.store.indexOf(b);return this.all.elements[a]}}}return b},getNodes:function(e,a){var d=this.all.elements,b=[],c;e=e||0;a=!Ext.isDefined(a)?Math.max(d.length-1,0):a;if(e<=a){for(c=e;c<=a&&d[c];c++){b.push(d[c])}}else{for(c=e;c>=a&&d[c];c--){b.push(d[c])}}return b},indexOf:function(a){a=this.getNode(a);if(Ext.isNumber(a.viewIndex)){return a.viewIndex}return this.all.indexOf(a)},onBeforeLoad:function(){if(this.loadingText){this.clearSelections(false,true);this.getTemplateTarget().update('<div class="loading-indicator">'+this.loadingText+"</div>");this.all.clear()}},onDestroy:function(){this.all.clear();this.selected.clear();Ext.DataView.superclass.onDestroy.call(this);this.bindStore(null)}});Ext.DataView.prototype.setStore=Ext.DataView.prototype.bindStore;Ext.reg("dataview",Ext.DataView);Ext.list.ListView=Ext.extend(Ext.DataView,{itemSelector:"dl",selectedClass:"x-list-selected",overClass:"x-list-over",scrollOffset:undefined,columnResize:true,columnSort:true,maxColumnWidth:Ext.isIE?99:100,initComponent:function(){if(this.columnResize){this.colResizer=new Ext.list.ColumnResizer(this.colResizer);this.colResizer.init(this)}if(this.columnSort){this.colSorter=new Ext.list.Sorter(this.columnSort);this.colSorter.init(this)}if(!this.internalTpl){this.internalTpl=new Ext.XTemplate('<div class="x-list-header"><div class="x-list-header-inner">','<tpl for="columns">','<div style="width:{[values.width*100]}%;text-align:{align};"><em unselectable="on" id="',this.id,'-xlhd-{#}">',"{header}","</em></div>","</tpl>",'<div class="x-clear"></div>',"</div></div>",'<div class="x-list-body"><div class="x-list-body-inner">',"</div></div>")}if(!this.tpl){this.tpl=new Ext.XTemplate('<tpl for="rows">',"<dl>",'<tpl for="parent.columns">','<dt style="width:{[values.width*100]}%;text-align:{align};">','<em unselectable="on"<tpl if="cls"> class="{cls}</tpl>">',"{[values.tpl.apply(parent)]}","</em></dt>","</tpl>",'<div class="x-clear"></div>',"</dl>","</tpl>")}var l=this.columns,h=0,k=0,m=l.length,b=[];for(var g=0;g<m;g++){var n=l[g];if(!n.isColumn){n.xtype=n.xtype?(/^lv/.test(n.xtype)?n.xtype:"lv"+n.xtype):"lvcolumn";n=Ext.create(n)}if(n.width){h+=n.width*100;if(h>this.maxColumnWidth){n.width-=(h-this.maxColumnWidth)/100}k++}b.push(n)}l=this.columns=b;if(k<m){var d=m-k;if(h<this.maxColumnWidth){var a=((this.maxColumnWidth-h)/d)/100;for(var e=0;e<m;e++){var n=l[e];if(!n.width){n.width=a}}}}Ext.list.ListView.superclass.initComponent.call(this)},onRender:function(){this.autoEl={cls:"x-list-wrap"};Ext.list.ListView.superclass.onRender.apply(this,arguments);this.internalTpl.overwrite(this.el,{columns:this.columns});this.innerBody=Ext.get(this.el.dom.childNodes[1].firstChild);this.innerHd=Ext.get(this.el.dom.firstChild.firstChild);if(this.hideHeaders){this.el.dom.firstChild.style.display="none"}},getTemplateTarget:function(){return this.innerBody},collectData:function(){var a=Ext.list.ListView.superclass.collectData.apply(this,arguments);return{columns:this.columns,rows:a}},verifyInternalSize:function(){if(this.lastSize){this.onResize(this.lastSize.width,this.lastSize.height)}},onResize:function(c,e){var b=this.innerBody.dom,g=this.innerHd.dom,d=c-Ext.num(this.scrollOffset,Ext.getScrollBarWidth())+"px",a;if(!b){return}a=b.parentNode;if(Ext.isNumber(c)){if(this.reserveScrollOffset||((a.offsetWidth-a.clientWidth)>10)){b.style.width=d;g.style.width=d}else{b.style.width=c+"px";g.style.width=c+"px";setTimeout(function(){if((a.offsetWidth-a.clientWidth)>10){b.style.width=d;g.style.width=d}},10)}}if(Ext.isNumber(e)){a.style.height=Math.max(0,e-g.parentNode.offsetHeight)+"px"}},updateIndexes:function(){Ext.list.ListView.superclass.updateIndexes.apply(this,arguments);this.verifyInternalSize()},findHeaderIndex:function(g){g=g.dom||g;var a=g.parentNode,d=a.parentNode.childNodes,b=0,e;for(;e=d[b];b++){if(e==a){return b}}return -1},setHdWidths:function(){var d=this.innerHd.dom.getElementsByTagName("div"),c=0,b=this.columns,a=b.length;for(;c<a;c++){d[c].style.width=(b[c].width*100)+"%"}}});Ext.reg("listview",Ext.list.ListView);Ext.ListView=Ext.list.ListView;Ext.list.Column=Ext.extend(Object,{isColumn:true,align:"left",header:"",width:null,cls:"",constructor:function(a){if(!a.tpl){a.tpl=new Ext.XTemplate("{"+a.dataIndex+"}")}else{if(Ext.isString(a.tpl)){a.tpl=new Ext.XTemplate(a.tpl)}}Ext.apply(this,a)}});Ext.reg("lvcolumn",Ext.list.Column);Ext.list.NumberColumn=Ext.extend(Ext.list.Column,{format:"0,000.00",constructor:function(a){a.tpl=a.tpl||new Ext.XTemplate("{"+a.dataIndex+':number("'+(a.format||this.format)+'")}');Ext.list.NumberColumn.superclass.constructor.call(this,a)}});Ext.reg("lvnumbercolumn",Ext.list.NumberColumn);Ext.list.DateColumn=Ext.extend(Ext.list.Column,{format:"m/d/Y",constructor:function(a){a.tpl=a.tpl||new Ext.XTemplate("{"+a.dataIndex+':date("'+(a.format||this.format)+'")}');Ext.list.DateColumn.superclass.constructor.call(this,a)}});Ext.reg("lvdatecolumn",Ext.list.DateColumn);Ext.list.BooleanColumn=Ext.extend(Ext.list.Column,{trueText:"true",falseText:"false",undefinedText:"&#160;",constructor:function(e){e.tpl=e.tpl||new Ext.XTemplate("{"+e.dataIndex+":this.format}");var b=this.trueText,d=this.falseText,a=this.undefinedText;e.tpl.format=function(c){if(c===undefined){return a}if(!c||c==="false"){return d}return b};Ext.list.DateColumn.superclass.constructor.call(this,e)}});Ext.reg("lvbooleancolumn",Ext.list.BooleanColumn);Ext.list.ColumnResizer=Ext.extend(Ext.util.Observable,{minPct:0.05,constructor:function(a){Ext.apply(this,a);Ext.list.ColumnResizer.superclass.constructor.call(this)},init:function(a){this.view=a;a.on("render",this.initEvents,this)},initEvents:function(a){a.mon(a.innerHd,"mousemove",this.handleHdMove,this);this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeStart.createDelegate(this),onStart:this.onStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(a.innerHd);a.on("beforedestroy",this.tracker.destroy,this.tracker)},handleHdMove:function(i,d){var c=5,b=i.getPageX(),k=i.getTarget("em",3,true);if(k){var h=k.getRegion(),g=k.dom.style,a=k.dom.parentNode;if(b-h.left<=c&&a!=a.parentNode.firstChild){this.activeHd=Ext.get(a.previousSibling.firstChild);g.cursor=Ext.isWebKit?"e-resize":"col-resize"}else{if(h.right-b<=c&&a!=a.parentNode.lastChild.previousSibling){this.activeHd=k;g.cursor=Ext.isWebKit?"w-resize":"col-resize"}else{delete this.activeHd;g.cursor=""}}}},onBeforeStart:function(a){this.dragHd=this.activeHd;return !!this.dragHd},onStart:function(g){var d=this,b=d.view,c=d.dragHd,a=d.tracker.getXY()[0];d.proxy=b.el.createChild({cls:"x-list-resizer"});d.dragX=c.getX();d.headerIndex=b.findHeaderIndex(c);d.headersDisabled=b.disableHeaders;b.disableHeaders=true;d.proxy.setHeight(b.el.getHeight());d.proxy.setX(d.dragX);d.proxy.setWidth(a-d.dragX);this.setBoundaries()},setBoundaries:function(k){var l=this.view,h=this.headerIndex,c=l.innerHd.getWidth(),k=l.innerHd.getX(),b=Math.ceil(c*this.minPct),m=c-b,e=l.columns.length,d=l.innerHd.select("em",true),g=b+k,a=m+k,i;if(e==2){this.minX=g;this.maxX=a}else{i=d.item(h+2);this.minX=d.item(h).getX()+b;this.maxX=i?i.getX()-b:a;if(h==0){this.minX=g}else{if(h==e-2){this.maxX=a}}}},onDrag:function(c){var b=this,a=b.tracker.getXY()[0].constrain(b.minX,b.maxX);b.proxy.setWidth(a-this.dragX)},onEnd:function(i){var g=this.proxy.getWidth(),h=this.headerIndex,m=this.view,c=m.columns,b=m.innerHd.getWidth(),l=Math.ceil(g*m.maxColumnWidth/b)/100,d=this.headersDisabled,n=c[h],k=c[h+1],a=n.width+k.width;this.proxy.remove();n.width=l;k.width=a-l;delete this.dragHd;m.setHdWidths();m.refresh();setTimeout(function(){m.disableHeaders=d},100)}});Ext.ListView.ColumnResizer=Ext.list.ColumnResizer;Ext.list.Sorter=Ext.extend(Ext.util.Observable,{sortClasses:["sort-asc","sort-desc"],constructor:function(a){Ext.apply(this,a);Ext.list.Sorter.superclass.constructor.call(this)},init:function(a){this.view=a;a.on("render",this.initEvents,this)},initEvents:function(a){a.mon(a.innerHd,"click",this.onHdClick,this);a.innerHd.setStyle("cursor","pointer");a.mon(a.store,"datachanged",this.updateSortState,this);this.updateSortState.defer(10,this,[a.store])},updateSortState:function(c){var g=c.getSortState();if(!g){return}this.sortState=g;var e=this.view.columns,h=-1;for(var d=0,a=e.length;d<a;d++){if(e[d].dataIndex==g.field){h=d;break}}if(h!=-1){var b=g.direction;this.updateSortIcon(h,b)}},updateSortIcon:function(b,a){var d=this.sortClasses;var c=this.view.innerHd.select("em").removeClass(d);c.item(b).addClass(d[a=="DESC"?1:0])},onHdClick:function(c){var b=c.getTarget("em",3);if(b&&!this.view.disableHeaders){var a=this.view.findHeaderIndex(b);this.view.store.sort(this.view.columns[a].dataIndex)}}});Ext.ListView.Sorter=Ext.list.Sorter;Ext.TabPanel=Ext.extend(Ext.Panel,{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:undefined,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(Ext.apply({layoutOnCardChange:this.layoutOnTabChange,deferredRender:this.deferredRender},this.layoutConfig)));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()},onRender:function(c,a){Ext.TabPanel.superclass.onRender.call(this,c,a);if(this.plain){var g=this.tabPosition=="top"?"header":"footer";this[g].addClass("x-tab-panel-"+g+"-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}});var e=(this.tabPosition=="bottom"?this.stripWrap:null);b.createChild({cls:"x-tab-strip-spacer"},e);this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:"li",cls:"x-tab-edge",cn:[{tag:"span",cls:"x-tab-strip-text",cn:"&#160;"}]});this.strip.createChild({cls:"x-clear"});this.body.addClass("x-tab-panel-body-"+this.tabPosition);if(!this.itemTpl){var d=new Ext.Template('<li class="{cls}" id="{id}"><a class="x-tab-strip-close"></a>','<a class="x-tab-right" href="#"><em class="x-tab-left">','<span class="x-tab-strip-inner"><span class="x-tab-strip-text {iconCls}">{text}</span></span>',"</em></a></li>");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)}if(this.activeTab!==undefined){var a=Ext.isObject(this.activeTab)?this.activeTab:this.items.get(this.activeTab);delete this.activeTab;this.setActiveTab(a)}},initEvents:function(){Ext.TabPanel.superclass.initEvents.call(this);this.mon(this.strip,{scope:this,mousedown:this.onStripMouseDown,contextmenu:this.onStripContextMenu});if(this.enableTabScroll){this.mon(this.strip,"mousewheel",this.onWheel,this)}},findTargets:function(c){var b=null,a=c.getTarget("li:not(.x-tab-edge)",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){if(b.button!==0){return}b.preventDefault();var a=this.findTargets(b);if(a.close){if(a.item.fireEvent("beforeclose",a.item)!==false){a.item.fireEvent("close",a.item);this.remove(a.item)}return}if(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(h){this.remove(h)},this)}var c=this.el.query(this.autoTabSelector);for(var b=0,a=c.length;b<a;b++){var e=c[b],g=e.getAttribute("title");e.removeAttribute("title");this.add({title:g,contentEl:e})}},initTab:function(d,b){var e=this.strip.dom.childNodes[b],g=this.getTemplateArgs(d),c=e?this.itemTpl.insertBefore(e,g):this.itemTpl.append(this.strip,g),a="x-tab-strip-over",h=Ext.get(c);h.hover(function(){if(!d.disabled){h.addClass(a)}},function(){h.removeClass(a)});if(d.tabTip){h.child("span.x-tab-strip-text",true).qtip=d.tabTip}d.tabEl=c;h.select("a").on("click",function(i){if(!i.getPageX()){this.onStripMouseDown(i)}},this,{preventDefault:true});d.on({scope:this,disable:this.onItemDisabled,enable:this.onItemEnabled,titlechange:this.onItemTitleChanged,iconchange:this.onItemIconChanged,beforeshow:this.onBeforeShowItem})},getTemplateArgs:function(b){var a=b.closable?"x-tab-strip-closable":"";if(b.disabled){a+=" x-item-disabled"}if(b.iconCls){a+=" x-tab-with-icon"}if(b.tabCls){a+=" "+b.tabCls}return{id:this.id+this.idDelimiter+b.getItemId(),text:b.title,cls:a,iconCls:b.iconCls||""}},onAdd:function(b){Ext.TabPanel.superclass.onAdd.call(this,b);if(this.rendered){var a=this.items;this.initTab(b,a.indexOf(b));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(d){var b=Ext.get(d.tabEl);if(b){b.select("a").removeAllListeners();Ext.destroy(b)}Ext.TabPanel.superclass.onRemove.call(this,d);this.stack.remove(d);delete d.tabEl;d.un("disable",this.onItemDisabled,this);d.un("enable",this.onItemEnabled,this);d.un("titlechange",this.onItemTitleChanged,this);d.un("iconchange",this.onItemIconChanged,this);d.un("beforeshow",this.onBeforeShowItem,this);if(d==this.activeTab){var a=this.stack.next();if(a){this.setActiveTab(a)}else{if(this.items.getCount()>0){this.setActiveTab(0)}else{this.setActiveTab(null)}}}if(!this.destroying){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}},onItemIconChanged:function(d,a,c){var b=this.getTabEl(d);if(b){b=Ext.get(b);b.child("span.x-tab-strip-text").replaceClass(c,a);b[Ext.isEmpty(a)?"removeClass":"addClass"]("x-tab-with-icon")}},getTabEl:function(a){var b=this.getComponent(a);return b?b.tabEl:null},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()}this.stack.remove(b)},unhideTabStripItem:function(b){b=this.getComponent(b);var a=this.getTabEl(b);if(a){a.style.display="";this.delegateUpdates()}},delegateUpdates:function(){var a=this.rendered;if(this.suspendUpdates){return}if(this.resizeTabs&&a){this.autoSizeTabs()}if(this.enableTabScroll&&a){this.autoScrollTabs()}},autoSizeTabs:function(){var h=this.items.length,b=this.tabPosition!="bottom"?"header":"footer",c=this[b].dom.offsetWidth,a=this[b].dom.clientWidth;if(!this.resizeTabs||h<1||!a){return}var l=Math.max(Math.min(Math.floor((a-4)/h)-this.tabMargin,this.tabWidth),this.minTabWidth);this.lastTabWidth=l;var n=this.strip.query("li:not(.x-tab-edge)");for(var e=0,k=n.length;e<k;e++){var m=n[e],o=Ext.fly(m).child(".x-tab-strip-inner",true),g=m.offsetWidth,d=o.offsetWidth;o.style.width=(l-(g-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(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=c;if(c){var b=this.getTabEl(c);Ext.fly(b).addClass("x-tab-strip-active");this.stack.add(c);this.layout.setActiveItem(c);this.delegateUpdates();if(this.scrolling){this.scrollToTab(c,this.animScroll)}}this.fireEvent("tabchange",this,c)}},getActiveTab:function(){return this.activeTab||null},getItem:function(a){return this.getComponent(a)},autoScrollTabs:function(){this.pos=this.tabPosition=="bottom"?this.footer:this.header;var h=this.items.length,d=this.pos.dom.offsetWidth,c=this.pos.dom.clientWidth,g=this.stripWrap,e=g.dom,b=e.offsetWidth,i=this.getScrollPos(),a=this.edge.getOffsetsTo(this.stripWrap)[0]+i;if(!this.enableTabScroll||b<20){return}if(h==0||a<=c){e.scrollLeft=0;g.setWidth(c);if(this.scrolling){this.scrolling=false;this.pos.removeClass("x-tab-scrolling");this.scrollLeft.hide();this.scrollRight.hide();if(Ext.isAir||Ext.isWebKit){e.style.marginLeft="";e.style.marginRight=""}}}else{if(!this.scrolling){this.pos.addClass("x-tab-scrolling");if(Ext.isAir||Ext.isWebKit){e.style.marginLeft="18px";e.style.marginRight="18px"}}c-=g.getMargins("lr");g.setWidth(c>20?c:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(i>(a-c)){e.scrollLeft=a-c}else{this.scrollToTab(this.activeTab,false)}this.updateScrollButtons()}},createScrollers:function(){this.pos.addClass("x-tab-scrolling-"+this.tabPosition);var c=this.stripWrap.dom.offsetHeight;var a=this.pos.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.pos.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),h=this.getScrollPos(),d=this.getScrollArea(),g=Ext.fly(c).getOffsetsTo(this.stripWrap)[0]+h,b=g+c.offsetWidth;if(g<h){this.scrollTo(g,a)}else{if(b>(h+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(g){var h=g.getWheelDelta()*this.wheelIncrement*-1;g.stopEvent();var i=this.getScrollPos(),c=i+h,a=this.getScrollWidth()-this.getScrollArea();var b=Math.max(0,Math.min(a,c));if(b!=i){this.scrollTo(b,false)}},onScrollRight:function(){var a=this.getScrollWidth()-this.getScrollArea(),c=this.getScrollPos(),b=Math.min(a,c+this.getScrollIncrement());if(b!=c){this.scrollTo(b,this.animScroll)}},onScrollLeft:function(){var b=this.getScrollPos(),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")},beforeDestroy:function(){Ext.destroy(this.leftRepeater,this.rightRepeater);this.deleteMembers("strip","edge","scrollLeft","scrollRight","stripWrap");this.activeTab=null;Ext.TabPanel.superclass.beforeDestroy.apply(this)}});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.BoxComponent,{hidden:false,disabled:false,pressed:false,enableToggle:false,menuAlign:"tl-bl?",type:"button",menuClassTarget:"tr:nth(2)",clickEvent:"click",handleMouseEvents:true,tooltipType:"qtip",buttonSelector:"button:first-child",scale:"small",iconAlign:"left",arrowAlign:"right",initComponent:function(){if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu);this.menu.ownerCt=this}Ext.Button.superclass.initComponent.call(this);this.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout");if(this.menu){this.menu.ownerCt=undefined}if(Ext.isString(this.toggleGroup)){this.enableToggle=true}},getTemplateArgs:function(){return[this.type,"x-btn-"+this.scale+" x-btn-icon-"+this.scale+"-"+this.iconAlign,this.getMenuClass(),this.cls,this.id]},setButtonClass:function(){if(this.useSetClass){if(!Ext.isEmpty(this.oldCls)){this.el.removeClass([this.oldCls,"x-btn-pressed"])}this.oldCls=(this.iconCls||this.icon)?(this.text?"x-btn-text-icon":"x-btn-icon"):"x-btn-noicon";this.el.addClass([this.oldCls,this.pressed?"x-btn-pressed":null])}},getMenuClass:function(){return this.menu?(this.arrowAlign!="bottom"?"x-btn-arrow":"x-btn-arrow-bottom"):""},onRender:function(c,a){if(!this.template){if(!Ext.Button.buttonTemplate){Ext.Button.buttonTemplate=new Ext.Template('<table id="{4}" cellspacing="0" class="x-btn {3}"><tbody class="{1}">','<tr><td class="x-btn-tl"><i>&#160;</i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i>&#160;</i></td></tr>','<tr><td class="x-btn-ml"><i>&#160;</i></td><td class="x-btn-mc"><em class="{2}" unselectable="on"><button type="{0}"></button></em></td><td class="x-btn-mr"><i>&#160;</i></td></tr>','<tr><td class="x-btn-bl"><i>&#160;</i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i>&#160;</i></td></tr>',"</tbody></table>");Ext.Button.buttonTemplate.compile()}this.template=Ext.Button.buttonTemplate}var b,d=this.getTemplateArgs();if(a){b=this.template.insertBefore(a,d,true)}else{b=this.template.append(c,d,true)}this.btnEl=b.child(this.buttonSelector);this.mon(this.btnEl,{scope:this,focus:this.onFocus,blur:this.onBlur});this.initButtonEl(b,this.btnEl);Ext.ButtonToggleMgr.register(this)},initButtonEl:function(b,c){this.el=b;this.setIcon(this.icon);this.setText(this.text);this.setIconClass(this.iconCls);if(Ext.isDefined(this.tabIndex)){c.dom.tabIndex=this.tabIndex}if(this.tooltip){this.setTooltip(this.tooltip,true)}if(this.handleMouseEvents){this.mon(b,{scope:this,mouseover:this.onMouseOver,mousedown:this.onMouseDown})}if(this.menu){this.mon(this.menu,{scope:this,show:this.onMenuShow,hide:this.onMenuHide})}if(this.repeat){var a=new Ext.util.ClickRepeater(b,Ext.isObject(this.repeat)?this.repeat:{});this.mon(a,"click",this.onRepeatClick,this)}else{this.mon(b,this.clickEvent,this.onClick,this)}},afterRender:function(){Ext.Button.superclass.afterRender.call(this);this.useSetClass=true;this.setButtonClass();this.doc=Ext.getDoc();this.doAutoWidth()},setIconClass:function(a){this.iconCls=a;if(this.el){this.btnEl.dom.className="";this.btnEl.addClass(["x-btn-text",a||""]);this.setButtonClass()}return this},setTooltip:function(b,a){if(this.rendered){if(!a){this.clearTip()}if(Ext.isObject(b)){Ext.QuickTips.register(Ext.apply({target:this.btnEl.id},b));this.tooltip=b}else{this.btnEl.dom[this.tooltipType]=b}}else{this.tooltip=b}return this},clearTip:function(){if(Ext.isObject(this.tooltip)){Ext.QuickTips.unregister(this.btnEl)}},beforeDestroy:function(){if(this.rendered){this.clearTip()}if(this.menu&&this.destroyMenu!==false){Ext.destroy(this.btnEl,this.menu)}Ext.destroy(this.repeater)},onDestroy:function(){if(this.rendered){this.doc.un("mouseover",this.monitorMouseOver,this);this.doc.un("mouseup",this.onMouseUp,this);delete this.doc;delete this.btnEl;Ext.ButtonToggleMgr.unregister(this)}Ext.Button.superclass.onDestroy.call(this)},doAutoWidth:function(){if(this.autoWidth!==false&&this.el&&this.text&&this.width===undefined){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var a=this.btnEl;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;return this},setText:function(a){this.text=a;if(this.el){this.btnEl.update(a||"&#160;");this.setButtonClass()}this.doAutoWidth();return this},setIcon:function(a){this.icon=a;if(this.el){this.btnEl.setStyle("background-image",a?"url("+a+")":"");this.setButtonClass()}return this},getText:function(){return this.text},toggle:function(b,a){b=b===undefined?!this.pressed:!!b;if(b!=this.pressed){if(this.rendered){this.el[b?"addClass":"removeClass"]("x-btn-pressed")}this.pressed=b;if(!a){this.fireEvent("toggle",this,b);if(this.toggleHandler){this.toggleHandler.call(this.scope||this,this,b)}}}return this},onDisable:function(){this.onDisableChange(true)},onEnable:function(){this.onDisableChange(false)},onDisableChange:function(a){if(this.el){if(!Ext.isIE6||!this.text){this.el[a?"addClass":"removeClass"](this.disabledClass)}this.el.dom.disabled=a}this.disabled=a},showMenu:function(){if(this.rendered&&this.menu){if(this.tooltip){Ext.QuickTips.getQuickTip().cancelShow(this.btnEl)}if(this.menu.isVisible()){this.menu.hide()}this.menu.ownerCt=this;this.menu.show(this.el,this.menuAlign)}return this},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){return this.menu&&this.menu.ownerCt==this&&this.menu.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(a){if(a){a.preventDefault()}if(a.button!==0){return}if(!this.disabled){this.doToggle();if(this.menu&&!this.hasVisibleMenu()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("click",this,a);if(this.handler){this.handler.call(this.scope||this,this,a)}}},doToggle:function(){if(this.enableToggle&&(this.allowDepress!==false||!this.pressed)){this.toggle()}},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");if(!this.monitoringMouseOver){this.doc.on("mouseover",this.monitorMouseOver,this);this.monitoringMouseOver=true}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)){if(this.monitoringMouseOver){this.doc.un("mouseover",this.monitorMouseOver,this);this.monitoringMouseOver=false}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)}},focus:function(){this.btnEl.focus()},blur:function(){this.btnEl.blur()},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");this.doc.on("mouseup",this.onMouseUp,this)}},onMouseUp:function(a){if(a.button===0){this.getClickEl(a,true).removeClass("x-btn-click");this.doc.un("mouseup",this.onMouseUp,this)}},onMenuShow:function(a){if(this.menu.ownerCt==this){this.menu.ownerCt=this;this.ignoreNextClick=0;this.el.addClass("x-btn-menu-active");this.fireEvent("menushow",this,this.menu)}},onMenuHide:function(a){if(this.menu.ownerCt==this){this.el.removeClass("x-btn-menu-active");this.ignoreNextClick=this.restoreClick.defer(250,this);this.fireEvent("menuhide",this,this.menu);delete this.menu.ownerCt}},restoreClick:function(){this.ignoreNextClick=0}});Ext.reg("button",Ext.Button);Ext.ButtonToggleMgr=function(){var a={};function b(e,k){if(k){var h=a[e.toggleGroup];for(var d=0,c=h.length;d<c;d++){if(h[d]!=e){h[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)}},getPressed:function(h){var e=a[h];if(e){for(var d=0,c=e.length;d<c;d++){if(e[d].pressed===true){return e[d]}}}return null}}}();Ext.SplitButton=Ext.extend(Ext.Button,{arrowSelector:"em",split:true,initComponent:function(){Ext.SplitButton.superclass.initComponent.call(this);this.addEvents("arrowclick")},onRender:function(){Ext.SplitButton.superclass.onRender.apply(this,arguments);if(this.arrowTooltip){this.el.child(this.arrowSelector).dom[this.tooltipType]=this.arrowTooltip}},setArrowHandler:function(b,a){this.arrowHandler=b;this.scope=a},getMenuClass:function(){return"x-btn-split"+(this.arrowAlign=="bottom"?"-bottom":"")},isClickOnArrow:function(c){if(this.arrowAlign!="bottom"){var b=this.el.child("em.x-btn-split");var a=b.getRegion().right-b.getPadding("r");return c.getPageX()>a}else{return c.getPageY()>this.btnEl.getRegion().bottom}},onClick:function(b,a){b.preventDefault();if(!this.disabled){if(this.isClickOnArrow(b)){if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("arrowclick",this,b);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,b)}}else{this.doToggle();this.fireEvent("click",this,b);if(this.handler){this.handler.call(this.scope||this,this,b)}}}},isMenuTriggerOver:function(a){return this.menu&&a.target.tagName==this.arrowSelector},isMenuTriggerOut:function(b,a){return this.menu&&b.target.tagName!=this.arrowSelector}});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(!Ext.isObject(c)){c=this.menu.getComponent(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,false)}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 a=0;Ext.each(this.items,function(c,b){Ext.apply(c,{group:c.group||this.id,itemIndex:b,checkHandler:this.checkHandler,scope:this,checked:c.checked||false});this.menu.items.push(c);if(c.checked){a=b}},this);Ext.CycleButton.superclass.initComponent.call(this);this.on("click",this.toggleSelected,this);this.setActiveItem(a,true)},checkHandler:function(a,b){if(b){this.setActiveItem(a)}},toggleSelected:function(){var a=this.menu;a.render();if(!a.hasLayout){a.doLayout()}var d,b;for(var c=1;c<this.itemCount;c++){d=(this.activeItem.itemIndex+c)%this.itemCount;b=a.items.itemAt(d);if(!b.disabled){b.setChecked(true);break}}}});Ext.reg("cycle",Ext.CycleButton);Ext.Toolbar=function(a){if(Ext.isArray(a)){a={items:a,layout:"toolbar"}}else{a=Ext.apply({layout:"toolbar"},a);if(a.buttons){a.items=a.buttons}}Ext.Toolbar.superclass.constructor.call(this,a)};(function(){var a=Ext.Toolbar;Ext.extend(a,Ext.Container,{defaultType:"button",enableOverflow:false,trackMenus:true,internalDefaults:{removeMode:"container",hideParent:true},toolbarCls:"x-toolbar",initComponent:function(){a.superclass.initComponent.call(this);this.addEvents("overflowchange")},onRender:function(c,b){if(!this.el){if(!this.autoCreate){this.autoCreate={cls:this.toolbarCls+" x-small-editor"}}this.el=c.createChild(Ext.apply({id:this.id},this.autoCreate),b);Ext.Toolbar.superclass.onRender.apply(this,arguments)}},lookupComponent:function(b){if(Ext.isString(b)){if(b=="-"){b=new a.Separator()}else{if(b==" "){b=new a.Spacer()}else{if(b=="->"){b=new a.Fill()}else{b=new a.TextItem(b)}}}this.applyDefaults(b)}else{if(b.isFormField||b.render){b=this.createComponent(b)}else{if(b.tag){b=new a.Item({autoEl:b})}else{if(b.tagName){b=new a.Item({el:b})}else{if(Ext.isObject(b)){b=b.xtype?this.createComponent(b):this.constructButton(b)}}}}}return b},applyDefaults:function(e){if(!Ext.isString(e)){e=Ext.Toolbar.superclass.applyDefaults.call(this,e);var b=this.internalDefaults;if(e.events){Ext.applyIf(e.initialConfig,b);Ext.apply(e,b)}else{Ext.applyIf(e,b)}}return e},addSeparator:function(){return this.add(new a.Separator())},addSpacer:function(){return this.add(new a.Spacer())},addFill:function(){this.add(new a.Fill())},addElement:function(b){return this.addItem(new a.Item({el:b}))},addItem:function(b){return this.add.apply(this,arguments)},addButton:function(c){if(Ext.isArray(c)){var e=[];for(var d=0,b=c.length;d<b;d++){e.push(this.addButton(c[d]))}return e}return this.add(this.constructButton(c))},addText:function(b){return this.addItem(new a.TextItem(b))},addDom:function(b){return this.add(new a.Item({autoEl:b}))},addField:function(b){return this.add(b)},insertButton:function(c,g){if(Ext.isArray(g)){var e=[];for(var d=0,b=g.length;d<b;d++){e.push(this.insertButton(c+d,g[d]))}return e}return Ext.Toolbar.superclass.insert.call(this,c,g)},trackMenu:function(c,b){if(this.trackMenus&&c.menu){var d=b?"mun":"mon";this[d](c,"menutriggerover",this.onButtonTriggerOver,this);this[d](c,"menushow",this.onButtonMenuShow,this);this[d](c,"menuhide",this.onButtonMenuHide,this)}},constructButton:function(d){var c=d.events?d:this.createComponent(d,d.split?"splitbutton":this.defaultType);return c},onAdd:function(b){Ext.Toolbar.superclass.onAdd.call(this);this.trackMenu(b);if(this.disabled){b.disable()}},onRemove:function(b){Ext.Toolbar.superclass.onRemove.call(this);if(b==this.activeMenuBtn){delete this.activeMenuBtn}this.trackMenu(b,true)},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=Ext.extend(Ext.BoxComponent,{hideParent:true,enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbitem",a.Item);a.Separator=Ext.extend(a.Item,{onRender:function(c,b){this.el=c.createChild({tag:"span",cls:"xtb-sep"},b)}});Ext.reg("tbseparator",a.Separator);a.Spacer=Ext.extend(a.Item,{onRender:function(c,b){this.el=c.createChild({tag:"div",cls:"xtb-spacer",style:this.width?"width:"+this.width+"px":""},b)}});Ext.reg("tbspacer",a.Spacer);a.Fill=Ext.extend(a.Item,{render:Ext.emptyFn,isFill:true});Ext.reg("tbfill",a.Fill);a.TextItem=Ext.extend(a.Item,{constructor:function(b){a.TextItem.superclass.constructor.call(this,Ext.isString(b)?{text:b}:b)},onRender:function(c,b){this.autoEl={cls:"xtb-text",html:this.text||""};a.TextItem.superclass.onRender.call(this,c,b)},setText:function(b){if(this.rendered){this.el.update(b)}else{this.text=b}}});Ext.reg("tbtext",a.TextItem);a.Button=Ext.extend(Ext.Button,{});a.SplitButton=Ext.extend(Ext.SplitButton,{});Ext.reg("tbbutton",a.Button);Ext.reg("tbsplit",a.SplitButton)})();Ext.ButtonGroup=Ext.extend(Ext.Panel,{baseCls:"x-btn-group",layout:"table",defaultType:"button",frame:true,internalDefaults:{removeMode:"container",hideParent:true},initComponent:function(){this.layoutConfig=this.layoutConfig||{};Ext.applyIf(this.layoutConfig,{columns:this.columns});if(!this.title){this.addClass("x-btn-group-notitle")}this.on("afterlayout",this.onAfterLayout,this);Ext.ButtonGroup.superclass.initComponent.call(this)},applyDefaults:function(b){b=Ext.ButtonGroup.superclass.applyDefaults.call(this,b);var a=this.internalDefaults;if(b.events){Ext.applyIf(b.initialConfig,a);Ext.apply(b,a)}else{Ext.applyIf(b,a)}return b},onAfterLayout:function(){var a=this.body.getFrameWidth("lr")+this.body.dom.firstChild.offsetWidth;this.body.setWidth(a);this.el.setWidth(a+this.getFrameWidth())}});Ext.reg("buttongroup",Ext.ButtonGroup);(function(){var a=Ext.Toolbar;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",initComponent:function(){var c=[this.first=new a.Button({tooltip:this.firstText,overflowText:this.firstText,iconCls:"x-tbar-page-first",disabled:true,handler:this.moveFirst,scope:this}),this.prev=new a.Button({tooltip:this.prevText,overflowText:this.prevText,iconCls:"x-tbar-page-prev",disabled:true,handler:this.movePrevious,scope:this}),"-",this.beforePageText,this.inputItem=new Ext.form.NumberField({cls:"x-tbar-page-number",allowDecimals:false,allowNegative:false,enableKeyEvents:true,selectOnFocus:true,submitValue:false,listeners:{scope:this,keydown:this.onPagingKeyDown,blur:this.onPagingBlur}}),this.afterTextItem=new a.TextItem({text:String.format(this.afterPageText,1)}),"-",this.next=new a.Button({tooltip:this.nextText,overflowText:this.nextText,iconCls:"x-tbar-page-next",disabled:true,handler:this.moveNext,scope:this}),this.last=new a.Button({tooltip:this.lastText,overflowText:this.lastText,iconCls:"x-tbar-page-last",disabled:true,handler:this.moveLast,scope:this}),"-",this.refresh=new a.Button({tooltip:this.refreshText,overflowText:this.refreshText,iconCls:"x-tbar-loading",handler:this.doRefresh,scope:this})];var b=this.items||this.buttons||[];if(this.prependButtons){this.items=b.concat(c)}else{this.items=c.concat(b)}delete this.buttons;if(this.displayInfo){this.items.push("->");this.items.push(this.displayItem=new a.TextItem({}))}Ext.PagingToolbar.superclass.initComponent.call(this);this.addEvents("change","beforechange");this.on("afterlayout",this.onFirstLayout,this,{single:true});this.cursor=0;this.bindStore(this.store,true)},onFirstLayout:function(){if(this.dsLoaded){this.onLoad.apply(this,this.dsLoaded)}},updateInfo:function(){if(this.displayItem){var b=this.store.getCount();var c=b==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+b,this.store.getTotalCount());this.displayItem.setText(c)}},onLoad:function(b,e,k){if(!this.rendered){this.dsLoaded=[b,e,k];return}var g=this.getParams();this.cursor=(k.params&&k.params[g.start])?k.params[g.start]:0;var i=this.getPageData(),c=i.activePage,h=i.pages;this.afterTextItem.setText(String.format(this.afterPageText,i.pages));this.inputItem.setValue(c);this.first.setDisabled(c==1);this.prev.setDisabled(c==1);this.next.setDisabled(c==h);this.last.setDisabled(c==h);this.refresh.enable();this.updateInfo();this.fireEvent("change",this,i)},getPageData:function(){var b=this.store.getTotalCount();return{total:b,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:b<this.pageSize?1:Math.ceil(b/this.pageSize)}},changePage:function(b){this.doLoad(((b-1)*this.pageSize).constrain(0,this.store.getTotalCount()))},onLoadError:function(){if(!this.rendered){return}this.refresh.enable()},readPage:function(e){var b=this.inputItem.getValue(),c;if(!b||isNaN(c=parseInt(b,10))){this.inputItem.setValue(e.activePage);return false}return c},onPagingFocus:function(){this.inputItem.select()},onPagingBlur:function(b){this.inputItem.setValue(this.getPageData().activePage)},onPagingKeyDown:function(i,h){var c=h.getKey(),l=this.getPageData(),g;if(c==h.RETURN){h.stopEvent();g=this.readPage(l);if(g!==false){g=Math.min(Math.max(1,g),l.pages)-1;this.doLoad(g*this.pageSize)}}else{if(c==h.HOME||c==h.END){h.stopEvent();g=c==h.HOME?1:l.pages;i.setValue(g)}else{if(c==h.UP||c==h.PAGEUP||c==h.DOWN||c==h.PAGEDOWN){h.stopEvent();if((g=this.readPage(l))){var b=h.shiftKey?10:1;if(c==h.DOWN||c==h.PAGEDOWN){b*=-1}g+=b;if(g>=1&g<=l.pages){i.setValue(g)}}}}}},getParams:function(){return this.paramNames||this.store.paramNames},beforeLoad:function(){if(this.rendered&&this.refresh){this.refresh.disable()}},doLoad:function(d){var c={},b=this.getParams();c[b.start]=d;c[b.limit]=this.pageSize;if(this.fireEvent("beforechange",this,c)!==false){this.store.load({params:c})}},moveFirst:function(){this.doLoad(0)},movePrevious:function(){this.doLoad(Math.max(0,this.cursor-this.pageSize))},moveNext:function(){this.doLoad(this.cursor+this.pageSize)},moveLast:function(){var c=this.store.getTotalCount(),b=c%this.pageSize;this.doLoad(b?(c-b):c-this.pageSize)},doRefresh:function(){this.doLoad(this.cursor)},bindStore:function(c,d){var b;if(!d&&this.store){if(c!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.beforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.onLoadError,this)}if(!c){this.store=null}}if(c){c=Ext.StoreMgr.lookup(c);c.on({scope:this,beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError});b=true}this.store=c;if(b){this.onLoad(c,null,{})}},unbind:function(b){this.bindStore(null)},bind:function(b){this.bindStore(b)},onDestroy:function(){this.bindStore(null);Ext.PagingToolbar.superclass.onDestroy.call(this)}})})();Ext.reg("paging",Ext.PagingToolbar);Ext.History=(function(){var e,c;var l=false;var d;function g(){var m=location.href,n=m.indexOf("#");return n>=0?m.substr(n+1):null}function a(){c.value=d}function h(m){d=m;Ext.History.fireEvent("change",m)}function i(n){var m=['<html><body><div id="state">',Ext.util.Format.htmlEncode(n),"</div></body></html>"].join("");try{var p=e.contentWindow.document;p.open();p.write(m);p.close();return true}catch(o){return false}}function b(){if(!e.contentWindow||!e.contentWindow.document){setTimeout(b,10);return}var p=e.contentWindow.document;var n=p.getElementById("state");var m=n?n.innerText:null;var o=g();setInterval(function(){p=e.contentWindow.document;n=p.getElementById("state");var r=n?n.innerText:null;var q=g();if(r!==m){m=r;h(m);top.location.hash=m;o=m;a()}else{if(q!==o){o=q;i(q)}}},50);l=true;Ext.History.fireEvent("ready",Ext.History)}function k(){d=c.value?c.value:g();if(Ext.isIE){b()}else{var m=g();setInterval(function(){var n=g();if(n!==m){m=n;h(m);a()}},50);l=true;Ext.History.fireEvent("ready",Ext.History)}}return{fieldId:"x-history-field",iframeId:"x-history-frame",events:{},init:function(n,m){if(l){Ext.callback(n,m,[this]);return}if(!Ext.isReady){Ext.onReady(function(){Ext.History.init(n,m)});return}c=Ext.getDom(Ext.History.fieldId);if(Ext.isIE){e=Ext.getDom(Ext.History.iframeId)}this.addEvents("ready","change");if(n){this.on("ready",n,m,{single:true})}k()},add:function(m,n){if(n!==false){if(this.getToken()==m){return true}}if(Ext.isIE){return i(m)}else{top.location.hash=m;return true}},back:function(){history.go(-1)},forward:function(){history.go(1)},getToken:function(){return l?d:g()}}})();Ext.apply(Ext.History,new Ext.util.Observable());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,closeAction:"hide",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[this.closeAction],scope:this})}},showAt:function(a){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){this.doAutoWidth()}if(this.constrainPosition){a=this.el.adjustForConstraints(a)}this.setPagePosition(a[0],a[1])},doAutoWidth:function(a){a=a||0;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")+a;this.setWidth(b.constrain(this.minWidth,this.maxWidth));if(Ext.isIE7&&!this.repainted){this.el.repaint();this.repainted=true}},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.reg("tip",Ext.Tip);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,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,constrainPosition:false,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget(this.target);this.origAnchor=this.anchor},onRender:function(b,a){Ext.ToolTip.superclass.onRender.call(this,b,a);this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl=this.el.createChild({cls:"x-tip-anchor "+this.anchorCls})},afterRender:function(){Ext.ToolTip.superclass.afterRender.call(this);this.anchorEl.setStyle("z-index",this.el.getZIndex()+1).setVisibilityMode(Ext.Element.DISPLAY)},initTarget:function(c){var a;if((a=Ext.get(c))){if(this.target){var b=Ext.get(this.target);this.mun(b,"mouseover",this.onTargetOver,this);this.mun(b,"mouseout",this.onTargetOut,this);this.mun(b,"mousemove",this.onMouseMove,this)}this.mon(a,{mouseover:this.onTargetOver,mouseout:this.onTargetOut,mousemove:this.onMouseMove,scope:this});this.target=a}if(this.anchor){this.anchorTarget=this.target}},onMouseMove:function(b){var a=this.delegate?b.getTarget(this.delegate):this.triggerElement=true;if(a){this.targetXY=b.getXY();if(a===this.triggerElement){if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}}else{this.hide();this.lastActive=new Date(0);this.onTargetOver(b)}}else{if(!this.closable&&this.isVisible()){this.hide()}}},getTargetXY:function(){if(this.delegate){this.anchorTarget=this.triggerElement}if(this.anchor){this.targetCounter++;var c=this.getOffsets(),m=(this.anchorToTarget&&!this.trackMouse)?this.el.getAlignToXY(this.anchorTarget,this.getAnchorAlign()):this.targetXY,a=Ext.lib.Dom.getViewWidth()-5,h=Ext.lib.Dom.getViewHeight()-5,i=document.documentElement,e=document.body,l=(i.scrollLeft||e.scrollLeft||0)+5,k=(i.scrollTop||e.scrollTop||0)+5,b=[m[0]+c[0],m[1]+c[1]],g=this.getSize();this.anchorEl.removeClass(this.anchorCls);if(this.targetCounter<2){if(b[0]<l){if(this.anchorToTarget){this.defaultAlign="l-r";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="left";return this.getTargetXY()}if(b[0]+g.width>a){if(this.anchorToTarget){this.defaultAlign="r-l";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="right";return this.getTargetXY()}if(b[1]<k){if(this.anchorToTarget){this.defaultAlign="t-b";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="top";return this.getTargetXY()}if(b[1]+g.height>h){if(this.anchorToTarget){this.defaultAlign="b-t";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="bottom";return this.getTargetXY()}}this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl.addClass(this.anchorCls);this.targetCounter=0;return b}else{var d=this.getMouseOffset();return[this.targetXY[0]+d[0],this.targetXY[1]+d[1]]}},getMouseOffset:function(){var a=this.anchor?[0,0]:[15,18];if(this.mouseOffset){a[0]+=this.mouseOffset[0];a[1]+=this.mouseOffset[1]}return a},getAnchorPosition:function(){if(this.anchor){this.tipAnchor=this.anchor.charAt(0)}else{var a=this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!a){throw"AnchorTip.defaultAlign is invalid"}this.tipAnchor=a[1].charAt(0)}switch(this.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var b,a=this.getAnchorPosition().charAt(0);if(this.anchorToTarget&&!this.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-this.anchorOffset,30];break;case"b":b=[-19-this.anchorOffset,-13-this.el.dom.offsetHeight];break;case"r":b=[-15-this.el.dom.offsetWidth,-13-this.anchorOffset];break;default:b=[25,-13-this.anchorOffset];break}}var c=this.getMouseOffset();b[0]+=c[0];b[1]+=c[1];return b},onTargetOver:function(b){if(this.disabled||b.within(this.target.dom,true)){return}var a=b.getTarget(this.delegate);if(a){this.triggerElement=a;this.clearTimer("hide");this.targetXY=b.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();if(this.anchorEl){this.anchorEl.hide()}Ext.ToolTip.superclass.hide.call(this);delete this.triggerElement},show:function(){if(this.anchor){this.showAt([-1000,-1000]);this.origConstrainPosition=this.constrainPosition;this.constrainPosition=false;this.anchor=this.origAnchor}this.showAt(this.getTargetXY());if(this.anchor){this.anchorEl.show();this.syncAnchor();this.constrainPosition=this.origConstrainPosition}else{this.anchorEl.hide()}},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)}if(this.anchor&&!this.anchorEl.isVisible()){this.syncAnchor();this.anchorEl.show()}else{this.anchorEl.hide()}},syncAnchor:function(){var a,b,c;switch(this.tipAnchor.charAt(0)){case"t":a="b";b="tl";c=[20+this.anchorOffset,2];break;case"r":a="l";b="tr";c=[-2,11+this.anchorOffset];break;case"b":a="t";b="bl";c=[20+this.anchorOffset,-2];break;default:a="r";b="tl";c=[2,11+this.anchorOffset];break}this.anchorEl.alignTo(this.el,a+"-"+b,c)},setPagePosition:function(a,b){Ext.ToolTip.superclass.setPagePosition.call(this,a,b);if(this.anchor){this.syncAnchor()}},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!==true&&!this.closable&&!a.within(this.el.dom)){this.disable();this.doEnable.defer(100,this)}},doEnable:function(){if(!this.isDestroyed){this.enable()}},onDisable:function(){this.clearTimers();this.hide()},adjustPosition:function(a,d){if(this.contstrainPosition){var c=this.targetXY[1],b=this.getSize().height;if(d<=c&&(d+b)>=c){d=c-b-5}}return{x:a,y:d}},beforeDestroy:function(){this.clearTimers();Ext.destroy(this.anchorEl);delete this.anchorEl;delete this.target;delete this.anchorTarget;delete this.triggerElement;Ext.ToolTip.superclass.beforeDestroy.call(this)},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);Ext.ToolTip.superclass.onDestroy.call(this)}});Ext.reg("tooltip",Ext.ToolTip);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",anchor:"anchor"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(e){var h=Ext.isArray(e)?e:arguments;for(var g=0,a=h.length;g<a;g++){var l=h[g];var k=l.target;if(k){if(Ext.isArray(k)){for(var d=0,b=k.length;d<b;d++){this.targets[Ext.id(k[d])]=l}}else{this.targets[Ext.id(k)]=l}}}},unregister:function(a){delete this.targets[Ext.id(a)]},cancelShow:function(b){var a=this.activeTarget;b=Ext.get(b).dom;if(this.isVisible()){if(a&&a.el==b){this.hide()}}else{if(a&&a.el==b){this.clearTimer("show")}}},getTipCfg:function(d){var b=d.getTarget(),c,a;if(this.interceptTitles&&b.title&&Ext.isString(b.title)){c=b.title;b.qtip=c;b.removeAttribute("title");d.preventDefault()}else{a=this.tagConfig;c=b.qtip||Ext.fly(b).getAttribute(a.attribute,a.namespace)}return c},onTargetOver:function(i){if(this.disabled){return}this.targetXY=i.getXY();var c=i.getTarget();if(!c||c.nodeType!==1||c==document||c==document.body){return}if(this.activeTarget&&((c==this.activeTarget.el)||Ext.fly(this.activeTarget.el).contains(c))){this.clearTimer("hide");this.show();return}if(c&&this.targets[c.id]){this.activeTarget=this.targets[c.id];this.activeTarget.el=c;this.anchor=this.activeTarget.anchor;if(this.anchor){this.anchorTarget=c}this.delayShow();return}var g,h=Ext.fly(c),b=this.tagConfig,d=b.namespace;if(g=this.getTipCfg(i)){var a=h.getAttribute(b.hide,d);this.activeTarget={el:c,text:g,width:h.getAttribute(b.width,d),autoHide:a!="user"&&a!=="false",title:h.getAttribute(b.title,d),cls:h.getAttribute(b.cls,d),align:h.getAttribute(b.align,d)};this.anchor=h.getAttribute(b.anchor,d);if(this.anchor){this.anchorTarget=c}this.delayShow()}},onTargetOut:function(a){if(this.activeTarget&&a.within(this.activeTarget.el)&&!this.getTipCfg(a)){return}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(this.anchor){this.constrainPosition=false}else{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.reg("quicktip",Ext.QuickTip);Ext.QuickTips=function(){var b,a=false;return{init:function(c){if(!b){if(!Ext.isReady){Ext.onReady(function(){Ext.QuickTips.init(c)});return}b=new Ext.QuickTip({elements:"header,body",disabled:a});if(c!==false){b.render(Ext.getBody())}}},ddDisable:function(){if(b&&!a){b.disable()}},ddEnable:function(){if(b&&!a){b.enable()}},enable:function(){if(b){b.enable()}a=false},disable:function(){if(b){b.disable()}a=true},isEnabled:function(){return b!==undefined&&!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.slider.Tip=Ext.extend(Ext.Tip,{minWidth:10,offsets:[0,-10],init:function(a){a.on({scope:this,dragstart:this.onSlide,drag:this.onSlide,dragend:this.hide,destroy:this.destroy})},onSlide:function(b,c,a){this.show();this.body.update(this.getText(a));this.doAutoWidth();this.el.alignTo(a.el,"b-t?",this.offsets)},getText:function(a){return String(a.value)}});Ext.ux.SliderTip=Ext.slider.Tip;Ext.tree.TreePanel=Ext.extend(Ext.Panel,{rootVisible:true,animate:Ext.enableFx,lines:true,enableDD:false,hlDrop:Ext.enableFx,pathSeparator:"/",bubbleEvents:[],initComponent:function(){Ext.tree.TreePanel.superclass.initComponent.call(this);if(!this.eventModel){this.eventModel=new Ext.tree.TreeEventModel(this)}var a=this.loader;if(!a){a=new Ext.tree.TreeLoader({dataUrl:this.dataUrl,requestMethod:this.requestMethod})}else{if(Ext.isObject(a)&&!a.load){a=new Ext.tree.TreeLoader(a)}}this.loader=a;this.nodeHash={};if(this.root){var b=this.root;delete this.root;this.setRootNode(b)}this.addEvents("append","remove","movenode","insert","beforeappend","beforeremove","beforemovenode","beforeinsert","beforeload","load","textchange","beforeexpandnode","beforecollapsenode","expandnode","disabledchange","collapsenode","beforeclick","click","containerclick","checkchange","beforedblclick","dblclick","containerdblclick","contextmenu","containercontextmenu","beforechildrenrendered","startdrag","enddrag","dragdrop","beforenodedrop","nodedrop","nodedragover");if(this.singleExpand){this.on("beforeexpandnode",this.restrictExpand,this)}},proxyNodeEvent:function(c,b,a,h,g,e,d){if(c=="collapse"||c=="expand"||c=="beforecollapse"||c=="beforeexpand"||c=="move"||c=="beforemove"){c=c+"node"}return this.fireEvent(c,b,a,h,g,e,d)},getRootNode:function(){return this.root},setRootNode:function(b){this.destroyRoot();if(!b.render){b=this.loader.createNode(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)}if(this.innerCt){this.clearInnerCt();this.renderRoot()}return b},clearInnerCt:function(){this.innerCt.update("")},renderRoot:function(){this.root.render();if(!this.rootVisible){this.root.renderChildren()}},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(b,c){c=c||this.root;var d=[];var e=function(){if(this.attributes.checked){d.push(!b?this:(b=="id"?this.id:this.attributes[b]))}};c.cascade(e);return d},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(g,a,h){if(Ext.isEmpty(g)){if(h){h(false,undefined)}return}a=a||"id";var d=g.split(this.pathSeparator);var c=this.root;if(c.attributes[a]!=d[1]){if(h){h(false,null)}return}var b=1;var e=function(){if(++b==d.length){if(h){h(true,c)}return}var i=c.findChild(a,d[b]);if(!i){if(h){h(false,c)}return}c=i;i.expand(false,false,e)};c.expand(false,false,e)},selectPath:function(e,a,g){if(Ext.isEmpty(e)){if(g){g(false,undefined)}return}a=a||"id";var c=e.split(this.pathSeparator),b=c.pop();if(c.length>1){var d=function(i,h){if(i&&h){var k=h.findChild(a,b);if(k){k.select();if(g){g(true,k)}}else{if(g){g(false,k)}}}else{if(g){g(false,k)}}};this.expandPath(c.join(this.pathSeparator),a,d)}else{this.root.select();if(g){g(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.renderRoot()},beforeDestroy:function(){if(this.rendered){Ext.dd.ScrollManager.unregister(this.body);Ext.destroy(this.dropZone,this.dragZone)}this.destroyRoot();Ext.destroy(this.loader);this.nodeHash=this.root=this.loader=null;Ext.tree.TreePanel.superclass.beforeDestroy.call(this)},destroyRoot:function(){if(this.root&&this.root.destroy){this.root.destroy(true)}}});Ext.tree.TreePanel.nodeTypes={};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;if(a.trackMouseOver!==false){a.mon(a.innerCt,{scope:this,mouseover:this.delegateOver,mouseout:this.delegateOut})}a.mon(a.getTreeEl(),{scope:this,click:this.delegateClick,dblclick:this.delegateDblClick,contextmenu:this.delegateContextMenu})},getNode:function(b){var a;if(a=b.getTarget(".x-tree-node-el",10)){var c=Ext.fly(a,"_treeEvents").getAttribute("tree-node-id","ext");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(Ext.isGecko&&!this.trackingDoc){Ext.getBody().on("mouseover",this.trackExit,this);this.trackingDoc=true}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))}},trackExit:function(a){if(this.lastOverNode){if(this.lastOverNode.ui&&!a.within(this.lastOverNode.ui.getEl())){this.onNodeOut(a,this.lastOverNode)}delete this.lastOverNode;Ext.getBody().un("mouseover",this.trackExit,this);this.trackingDoc=false}},delegateClick:function(b,a){if(this.beforeEvent(b)){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))}}}}else{this.checkContainerEvent(b,"click")}},delegateDblClick:function(b,a){if(this.beforeEvent(b)){if(this.getNodeTarget(b)){this.onNodeDblClick(b,this.getNode(b))}}else{this.checkContainerEvent(b,"dblclick")}},delegateContextMenu:function(b,a){if(this.beforeEvent(b)){if(this.getNodeTarget(b)){this.onNodeContextMenu(b,this.getNode(b))}}else{this.checkContainerEvent(b,"contextmenu")}},checkContainerEvent:function(b,a){if(this.disabled){b.stopEvent();return false}this.onContainerEvent(b,a)},onContainerEvent:function(b,a){this.tree.fireEvent("container"+a,this.tree,b)},onNodeClick:function(b,a){a.ui.onClick(b)},onNodeOver:function(b,a){this.lastOverNode=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(b){var a=this.getNode(b);if(this.disabled||!a||!a.ui){b.stopEvent();return false}return true},disable:function(){this.disabled=true},enable:function(){this.disabled=false}};Ext.tree.DefaultSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(a){this.selNode=null;this.addEvents("selectionchange","beforeselect");Ext.apply(this,a);Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)},init:function(a){this.tree=a;a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);a.on("click",this.onNodeClick,this)},onNodeClick:function(a,b){this.select(a)},select:function(c,a){if(!Ext.fly(c.ui.wrap).isVisible()&&a){return a.call(this,c)}var b=this.selNode;if(c==b){c.ui.onSelectedChange(true)}else{if(this.fireEvent("beforeselect",this,c,b)!==false){if(b&&b.ui){b.ui.onSelectedChange(false)}this.selNode=c;c.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,c,b)}}return c},unselect:function(b,a){if(this.selNode==b){this.clearSelections(a)}},clearSelections:function(a){var b=this.selNode;if(b){b.ui.onSelectedChange(false);this.selNode=null;if(a!==true){this.fireEvent("selectionchange",this,null)}}return b},getSelectedNode:function(){return this.selNode},isSelected:function(a){return this.selNode==a},selectPrevious:function(a){if(!(a=a||this.selNode||this.lastSelNode)){return null}var c=a.previousSibling;if(c){if(!c.isExpanded()||c.childNodes.length<1){return this.select(c,this.selectPrevious)}else{var b=c.lastChild;while(b&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()&&b.childNodes.length>0){b=b.lastChild}return this.select(b,this.selectPrevious)}}else{if(a.parentNode&&(this.tree.rootVisible||!a.parentNode.isRoot)){return this.select(a.parentNode,this.selectPrevious)}}return null},selectNext:function(b){if(!(b=b||this.selNode||this.lastSelNode)){return null}if(b.firstChild&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()){return this.select(b.firstChild,this.selectNext)}else{if(b.nextSibling){return this.select(b.nextSibling,this.selectNext)}else{if(b.parentNode){var a=null;b.parentNode.bubble(function(){if(this.nextSibling){a=this.getOwnerTree().selModel.select(this.nextSibling,this.selectNext);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=Ext.extend(Ext.util.Observable,{constructor:function(a){this.selNodes=[];this.selMap={};this.addEvents("selectionchange");Ext.apply(this,a);Ext.tree.MultiSelectionModel.superclass.constructor.call(this)},init:function(a){this.tree=a;a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);a.on("click",this.onNodeClick,this)},onNodeClick:function(a,b){if(b.ctrlKey&&this.isSelected(a)){this.unselect(a)}else{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.concat([])},onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious});Ext.data.Tree=Ext.extend(Ext.util.Observable,{constructor: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)},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=Ext.extend(Ext.util.Observable,{constructor:function(a){this.attributes=a||{};this.leaf=this.attributes.leaf;this.id=this.attributes.id;if(!this.id){this.id=Ext.id(null,"xnode-");this.attributes.id=this.id}this.childNodes=[];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)},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},isExpandable:function(){return this.attributes.expandable||this.hasChildNodes()},appendChild:function(e){var g=false;if(Ext.isArray(e)){g=e}else{if(arguments.length>1){g=arguments}}if(g){for(var d=0,a=g.length;d<a;d++){this.appendChild(g[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 h=this.childNodes[b-1];if(h){e.previousSibling=h;h.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(c,b){var a=this.childNodes.indexOf(c);if(a==-1){return false}if(this.fireEvent("beforeremove",this.ownerTree,this,c)===false){return false}this.childNodes.splice(a,1);if(c.previousSibling){c.previousSibling.nextSibling=c.nextSibling}if(c.nextSibling){c.nextSibling.previousSibling=c.previousSibling}if(this.firstChild==c){this.setFirstChild(c.nextSibling)}if(this.lastChild==c){this.setLastChild(c.previousSibling)}this.fireEvent("remove",this.ownerTree,this,c);if(b){c.destroy(true)}else{c.clear()}return c},clear:function(a){this.setOwnerTree(null,a);this.parentNode=this.previousSibling=this.nextSibling=null;if(a){this.firstChild=this.lastChild=null}},destroy:function(a){if(a===true){this.purgeListeners();this.clear(true);Ext.each(this.childNodes,function(b){b.destroy(true)});this.childNodes=null}else{this.remove(true)}},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 g=this.childNodes[e-1];if(g){d.previousSibling=g;g.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(a){if(this.parentNode){this.parentNode.removeChild(this,a)}return this},removeAll:function(a){var c=this.childNodes,b;while((b=c[0])){this.removeChild(b,a)}return this},item:function(a){return this.childNodes[a]},replaceChild:function(a,c){var b=c?c.nextSibling:null;this.removeChild(c);this.insertBefore(a,b);return c},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(a,b){if(a!=this.ownerTree){if(this.ownerTree){this.ownerTree.unregisterNode(this)}this.ownerTree=a;if(b!==true){Ext.each(this.childNodes,function(c){c.setOwnerTree(a)})}if(a){a.registerNode(this)}}},setId:function(b){if(b!==this.id){var a=this.ownerTree;if(a){a.unregisterNode(this)}this.id=this.attributes.id=b;if(a){a.registerNode(this)}this.onIdChange(b)}},onIdChange:Ext.emptyFn,getPath:function(c){c=c||"id";var e=this.parentNode;var a=[this.attributes[c]];while(e){a.unshift(e.attributes[c]);e=e.parentNode}var d=this.getOwnerTree().pathSeparator;return d+a.join(d)},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.parentNode}},cascade:function(g,e,b){if(g.apply(e||this,b||[this])!==false){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){d[c].cascade(g,e,b)}}},eachChild:function(g,e,b){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){if(g.apply(e||d[c],b||[d[c]])===false){break}}},findChild:function(b,c,a){return this.findChildBy(function(){return this.attributes[b]==c},null,a)},findChildBy:function(h,g,b){var e=this.childNodes,a=e.length,d=0,k,c;for(;d<a;d++){k=e[d];if(h.call(g||k,k)===true){return k}else{if(b){c=k.findChildBy(h,g,b);if(c!=null){return c}}}}return null},sort:function(e,d){var c=this.childNodes;var a=c.length;if(a>0){var g=d?function(){e.apply(d,arguments)}:e;c.sort(g);for(var b=0;b<a;b++){var h=c[b];h.previousSibling=c[b-1];h.nextSibling=c[b+1];if(b===0){this.setFirstChild(h)}if(b==a-1){this.setLastChild(h)}}}},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.tree.TreeNode=Ext.extend(Ext.data.Node,{constructor:function(a){a=a||{};if(Ext.isString(a)){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.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.hidden=a.hidden===true;this.addEvents("textchange","beforeexpand","beforecollapse","expand","disabledchange","collapse","beforeclick","click","checkchange","beforedblclick","dblclick","contextmenu","beforechildrenrendered");var b=this.attributes.uiProvider||this.defaultUI||Ext.tree.TreeNodeUI;this.ui=new b(this)},preventHScroll:true,isExpanded:function(){return this.expanded},getUI:function(){return this.ui},getLoader:function(){var a;return this.loader||((a=this.getOwnerTree())&&a.loader?a.loader:(this.loader=new Ext.tree.TreeLoader()))},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(b){if(!b.render&&!Ext.isArray(b)){b=this.getLoader().createNode(b)}var a=Ext.tree.TreeNode.superclass.appendChild.call(this,b);if(a&&this.childrenRendered){a.render()}this.ui.updateExpandIcon();return a},removeChild:function(b,a){this.ownerTree.getSelectionModel().unselect(b);Ext.tree.TreeNode.superclass.removeChild.apply(this,arguments);if(!a){var c=b.ui.rendered;if(c){b.ui.remove()}if(c&&this.childNodes.length<1){this.collapse(false,false)}else{this.ui.updateExpandIcon()}if(!this.firstChild&&!this.isHiddenRoot()){this.childrenRendered=false}}return b},insertBefore:function(c,a){if(!c.render){c=this.getLoader().createNode(c)}var b=Ext.tree.TreeNode.superclass.insertBefore.call(this,c,a);if(b&&a&&this.childrenRendered){c.render()}this.ui.updateExpandIcon();return b},setText:function(b){var a=this.text;this.text=this.attributes.text=b;if(this.rendered){this.ui.onTextChange(this,b,a)}this.fireEvent("textchange",this,b,a)},setIconCls:function(b){var a=this.attributes.iconCls;this.attributes.iconCls=b;if(this.rendered){this.ui.onIconClsChange(this,b,a)}},setTooltip:function(a,b){this.attributes.qtip=a;this.attributes.qtipTitle=b;if(this.rendered){this.ui.onTipChange(this,a,b)}},setIcon:function(a){this.attributes.icon=a;if(this.rendered){this.ui.onIconChange(this,a)}},setHref:function(a,b){this.attributes.href=a;this.attributes.hrefTarget=b;if(this.rendered){this.ui.onHrefChange(this,a,b)}},setCls:function(b){var a=this.attributes.cls;this.attributes.cls=b;if(this.rendered){this.ui.onClsChange(this,b,a)}},select:function(){var a=this.getOwnerTree();if(a){a.getSelectionModel().select(this)}},unselect:function(a){var b=this.getOwnerTree();if(b){b.getSelectionModel().unselect(this,a)}},isSelected:function(){var a=this.getOwnerTree();return a?a.getSelectionModel().isSelected(this):false},expand:function(a,c,d,b){if(!this.expanded){if(this.fireEvent("beforeexpand",this,a,c)===false){return}if(!this.childrenRendered){this.renderChildren()}this.expanded=true;if(!this.isHiddenRoot()&&(this.getOwnerTree().animate&&c!==false)||c){this.ui.animExpand(function(){this.fireEvent("expand",this);this.runCallback(d,b||this,[this]);if(a===true){this.expandChildNodes(true,true)}}.createDelegate(this));return}else{this.ui.expand();this.fireEvent("expand",this);this.runCallback(d,b||this,[this])}}else{this.runCallback(d,b||this,[this])}if(a===true){this.expandChildNodes(true)}},runCallback:function(a,c,b){if(Ext.isFunction(a)){a.apply(c,b)}},isHiddenRoot:function(){return this.isRoot&&!this.getOwnerTree().rootVisible},collapse:function(b,g,h,e){if(this.expanded&&!this.isHiddenRoot()){if(this.fireEvent("beforecollapse",this,b,g)===false){return}this.expanded=false;if((this.getOwnerTree().animate&&g!==false)||g){this.ui.animCollapse(function(){this.fireEvent("collapse",this);this.runCallback(h,e||this,[this]);if(b===true){this.collapseChildNodes(true)}}.createDelegate(this));return}else{this.ui.collapse();this.fireEvent("collapse",this);this.runCallback(h,e||this,[this])}}else{if(!this.expanded){this.runCallback(h,e||this,[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(c,b){var a=this.getOwnerTree();a.expandPath(this.parentNode?this.parentNode.getPath():this.getPath(),false,function(){var d=a.getNodeById(this.id);a.getTreeEl().scrollChildIntoView(d.ui.anchor);this.runCallback(c,b||this,[this])}.createDelegate(this))},expandChildNodes:function(b,e){var d=this.childNodes,c,a=d.length;for(c=0;c<a;c++){d[c].expand(b,e)}},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.rendered){this.renderChildren()}},destroy:function(a){if(a===true){this.unselect(true)}Ext.tree.TreeNode.superclass.destroy.call(this,a);Ext.destroy(this.ui,this.loader);this.ui=this.loader=null},onIdChange:function(a){this.ui.onIdChange(a)}});Ext.tree.TreePanel.nodeTypes.node=Ext.tree.TreeNode;Ext.tree.AsyncTreeNode=function(a){this.loaded=a&&a.loaded===true;this.loading=false;Ext.tree.AsyncTreeNode.superclass.constructor.apply(this,arguments);this.addEvents("beforeload","load")};Ext.extend(Ext.tree.AsyncTreeNode,Ext.tree.TreeNode,{expand:function(b,e,h,c){if(this.loading){var g;var d=function(){if(!this.loading){clearInterval(g);this.expand(b,e,h,c)}}.createDelegate(this);g=setInterval(d,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,e,h,c]),this);return}}Ext.tree.AsyncTreeNode.superclass.expand.call(this,b,e,h,c)},isLoading:function(){return this.loading},loadComplete:function(a,c,d,b){this.loading=false;this.loaded=true;this.ui.afterLoad(this);this.fireEvent("load",this);this.expand(a,c,d,b)},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(b,a){this.collapse(false,false);while(this.firstChild){this.removeChild(this.firstChild).destroy()}this.childrenRendered=false;this.loaded=false;if(this.isHiddenRoot()){this.expanded=false}this.expand(false,false,b,a)}});Ext.tree.TreePanel.nodeTypes.async=Ext.tree.AsyncTreeNode;Ext.tree.TreeNodeUI=Ext.extend(Object,{constructor:function(a){Ext.apply(this,{node:a,rendered:false,animating:false,wasLeaf:true,ecc:"x-tree-ec-icon x-tree-elbow",emptyIcon:Ext.BLANK_IMAGE_URL})},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}},onIconClsChange:function(c,a,b){if(this.rendered){Ext.fly(this.iconNode).replaceClass(b,a)}},onIconChange:function(b,a){if(this.rendered){var c=Ext.isEmpty(a);this.iconNode.src=c?this.emptyIcon:a;Ext.fly(this.iconNode)[c?"removeClass":"addClass"]("x-tree-node-inline-icon")}},onTipChange:function(b,c,d){if(this.rendered){var a=Ext.isDefined(d);if(this.textNode.setAttributeNS){this.textNode.setAttributeNS("ext","qtip",c);if(a){this.textNode.setAttributeNS("ext","qtitle",d)}}else{this.textNode.setAttribute("ext:qtip",c);if(a){this.textNode.setAttribute("ext:qtitle",d)}}}},onHrefChange:function(b,a,c){if(this.rendered){this.anchor.href=this.getHref(a);if(Ext.isDefined(c)){this.anchor.target=c}}},onClsChange:function(c,a,b){if(this.rendered){Ext.fly(this.elNode).replaceClass(b,a)}},onDisableChange:function(a,b){this.disabled=b;if(this.checkbox){this.checkbox.disabled=b}this[b?"addClass":"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,h,e,g,d,b){this.childIndent=null;if(this.rendered){var i=g.ui.getContainer();if(!i){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);return}var c=b?b.ui.getEl():null;if(c){i.insertBefore(this.wrap,c)}else{i.appendChild(this.wrap)}this.node.renderIndent(true,e!=g)}},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.onDisableChange(this.node,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(c){if(this.dropping){c.stopEvent();return}if(this.fireEvent("beforeclick",this.node,c)!==false){var b=c.getTarget("a");if(!this.disabled&&this.node.attributes.href&&b){this.fireEvent("click",this.node,c);return}else{if(b&&c.ctrlKey){c.stopEvent()}}c.preventDefault();if(this.disabled){return}if(this.node.attributes.singleClickExpand&&!this.animating&&this.node.isExpandable()){this.node.toggle()}this.fireEvent("click",this.node,c)}else{c.stopEvent()}},onDblClick:function(a){a.preventDefault();if(this.disabled){return}if(this.fireEvent("beforedblclick",this.node,a)!==false){if(this.checkbox){this.toggleCheck()}if(!this.animating&&this.node.isExpandable()){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.checkbox.defaultChecked=a;this.node.attributes.checked=a;this.fireEvent("checkchange",this.node,a)},ecClick:function(a){if(!this.animating&&this.node.isExpandable()){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{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);this.onCheckChange()}},blur:function(){try{this.anchor.blur()}catch(a){}},animExpand:function(b){var a=Ext.get(this.ctNode);a.stopFx();if(!this.node.isExpandable()){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(c){var e=this.node,b=e.attributes;var d=e.parentNode?e.parentNode.ui.getContainer():e.ownerTree.innerCt.dom;if(!this.rendered){this.rendered=true;this.renderElements(e,b,d,c);if(b.qtip){this.onTipChange(e,b.qtip,b.qtipTitle)}else{if(b.qtipCfg){b.qtipCfg.target=Ext.id(this.textNode);Ext.QuickTips.register(b.qtipCfg)}}this.initEvents();if(!this.node.expanded){this.updateExpandIcon(true)}}else{if(c===true){d.appendChild(this.wrap)}}},renderElements:function(e,l,k,m){this.indentMarkup=e.parentNode?e.parentNode.ui.getChildIndent():"";var g=Ext.isBoolean(l.checked),b,c=this.getHref(l.href),d=['<li class="x-tree-node"><div ext:tree-node-id="',e.id,'" class="x-tree-node-el x-tree-node-leaf x-unselectable ',l.cls,'" unselectable="on">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img alt="" src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow" />','<img alt="" src="',l.icon||this.emptyIcon,'" class="x-tree-node-icon',(l.icon?" x-tree-node-inline-icon":""),(l.iconCls?" "+l.iconCls:""),'" unselectable="on" />',g?('<input class="x-tree-node-cb" type="checkbox" '+(l.checked?'checked="checked" />':"/>")):"",'<a hidefocus="on" class="x-tree-node-anchor" href="',c,'" tabIndex="1" ',l.hrefTarget?' target="'+l.hrefTarget+'"':"",'><span unselectable="on">',e.text,"</span></a></div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"].join("");if(m!==true&&e.nextSibling&&(b=e.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",b,d)}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",k,d)}this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var i=this.elNode.childNodes;this.indentNode=i[0];this.ecNode=i[1];this.iconNode=i[2];var h=3;if(g){this.checkbox=i[3];this.checkbox.defaultChecked=this.checkbox.checked;h++}this.anchor=i[h];this.textNode=i[h].firstChild},getHref:function(a){return Ext.isEmpty(a)?(Ext.isGecko?"":"#"):a},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 g=this.node,d,c,a=g.isLast()?"x-tree-elbow-end":"x-tree-elbow",e=g.hasChildNodes();if(e||g.attributes.expandable){if(g.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-collapsed");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}}},onIdChange:function(a){if(this.rendered){this.elNode.setAttribute("ext:tree-node-id",a)}},getChildIndent:function(){if(!this.childIndent){var a=[],b=this.node;while(b){if(!b.isRoot||(b.isRoot&&b.ownerTree.rootVisible)){if(!b.isLast()){a.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-elbow-line" />')}else{a.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-icon" />')}}b=b.parentNode}this.childIndent=a.join("")}return this.childIndent},renderIndent:function(){if(this.rendered){var a="",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)}Ext.each(["textnode","anchor","checkbox","indentNode","ecNode","iconNode","elNode","ctNode","wrap","holder"],function(a){if(this[a]){Ext.fly(this[a]).remove();delete this[a]}},this);delete this.node}});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='<div class="x-tree-root-node"></div>';this.wrap=this.ctNode=a.firstChild}},collapse:Ext.emptyFn,expand:Ext.emptyFn});Ext.tree.TreeLoader=function(a){this.baseParams={};Ext.apply(this,a);this.addEvents("beforeload","load","loadexception");Ext.tree.TreeLoader.superclass.constructor.call(this);if(Ext.isString(this.paramOrder)){this.paramOrder=this.paramOrder.split(/[\s,|]/)}};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,paramOrder:undefined,paramsAsHash:false,nodeParameter:"node",directFn:undefined,load:function(b,c,a){if(this.clearOnLoad){while(b.firstChild){b.removeChild(b.firstChild)}}if(this.doPreload(b)){this.runCallback(c,a||b,[b])}else{if(this.directFn||this.dataUrl||this.url){this.requestData(b,c,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}return false},getParams:function(g){var e=Ext.apply({},this.baseParams),h=this.nodeParameter,b=this.paramOrder;h&&(e[h]=g.id);if(this.directFn){var c=[g.id];if(b){if(h&&b.indexOf(h)>-1){c=[]}for(var d=0,a=b.length;d<a;d++){c.push(e[b[d]])}}else{if(this.paramsAsHash){c=[e]}}return c}else{return e}},requestData:function(c,d,b){if(this.fireEvent("beforeload",this,c,d)!==false){if(this.directFn){var a=this.getParams(c);a.push(this.processDirectResponse.createDelegate(this,[{callback:d,node:c,scope:b}],true));this.directFn.apply(window,a)}else{this.transId=Ext.Ajax.request({method:this.requestMethod,url:this.dataUrl||this.url,success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:d,node:c,scope:b},params:this.getParams(c)})}}else{this.runCallback(d,b||c,[])}},processDirectResponse:function(a,b,c){if(b.status){this.handleResponse({responseData:Ext.isArray(a)?a:null,responseText:a,argument:c})}else{this.handleFailure({argument:c})}},runCallback:function(a,c,b){if(Ext.isFunction(a)){a.apply(c,b)}},isLoading:function(){return !!this.transId},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){attr.loader=this}if(Ext.isString(attr.uiProvider)){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider)}if(attr.nodeType){return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr)}else{return attr.leaf?new Ext.tree.TreeNode(attr):new Ext.tree.AsyncTreeNode(attr)}},processResponse:function(d,c,l,m){var p=d.responseText;try{var a=d.responseData||Ext.decode(p);c.beginUpdate();for(var g=0,h=a.length;g<h;g++){var b=this.createNode(a[g]);if(b){c.appendChild(b)}}c.endUpdate();this.runCallback(l,m||c,[c])}catch(k){this.handleFailure(d)}},handleResponse:function(c){this.transId=false;var b=c.argument;this.processResponse(c,b.node,b.callback,b.scope);this.fireEvent("load",this,b.node,c)},handleFailure:function(c){this.transId=false;var b=c.argument;this.fireEvent("loadexception",this,b.node,c);this.runCallback(b.callback,b.scope||b.node,[b.node])},destroy:function(){this.abort();this.purgeListeners()}});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(g){return g.attributes[a].substr(0,e).toLowerCase()==d}}else{if(d.exec){c=function(g){return d.test(g.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,i=this.reverse;var e=function(l){if(l==b){return true}if(a[l.id]){return false}var k=d.call(c||l,l);if(!k||i){a[l.id]=l;l.ui.hide();return false}return true};b.cascade(e);if(this.remove){for(var h in a){if(typeof h!="function"){var g=a[h];if(g&&g.parentNode){g.parentNode.removeChild(g)}}}}},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=Ext.extend(Object,{constructor:function(a,b){Ext.apply(this,b);a.on({scope:this,beforechildrenrendered:this.doSort,append:this.updateSort,insert:this.updateSort,textchange:this.updateSortParent});var c=this.dir&&this.dir.toLowerCase()=="desc",d=this.property||"text";sortType=this.sortType;folderSort=this.folderSort;caseSensitive=this.caseSensitive===true;leafAttr=this.leafAttr||"leaf";if(Ext.isString(sortType)){sortType=Ext.data.SortTypes[sortType]}this.sortFn=function(l,i){var g=l.attributes,e=i.attributes;if(folderSort){if(g[leafAttr]&&!e[leafAttr]){return 1}if(!g[leafAttr]&&e[leafAttr]){return -1}}var k=g[d],h=e[d],m=sortType?sortType(k):(caseSensitive?k:k.toUpperCase());v2=sortType?sortType(h):(caseSensitive?h:h.toUpperCase());if(m<v2){return c?1:-1}else{if(m>v2){return c?-1:1}}return 0}},doSort:function(a){a.sort(this.sortFn)},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=b.allowParentInsert||false;this.allowContainerDrop=b.allowContainerDrop||false;this.appendOnly=b.appendOnly||false;Ext.tree.TreeDropZone.superclass.constructor.call(this,a.getTreeEl(),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,l,i,d,c){if(!a||!c){return false}var g=a.node;var h=c.node;if(!(g&&g.isTarget&&l)){return false}if(l=="append"&&g.allowChildren===false){return false}if((l=="above"||l=="below")&&(g.parentNode&&g.parentNode.allowChildren===false)){return false}if(h&&(g==h||h.contains(g))){return false}var b=this.dragOverData;b.tree=this.tree;b.target=g;b.data=c;b.point=l;b.source=i;b.rawEvent=d;b.dropNode=h;b.cancel=false;var k=this.tree.fireEvent("nodedragover",b);return b.cancel===false&&k!==false},getDropPoint:function(h,g,m){var o=g.node;if(o.isRoot){return o.allowChildren!==false?"append":false}var c=g.ddel;var p=Ext.lib.Dom.getY(c),k=p+c.offsetHeight;var i=Ext.lib.Event.getPageY(h);var l=o.allowChildren===false||o.isLeaf();if(this.appendOnly||o.parentNode.allowChildren===false){return l?false:"append"}var d=false;if(!this.allowParentInsert){d=o.hasChildNodes()&&o.isExpanded()}var a=(k-p)/(l?2:3);if(i>=p&&i<(p+a)){return"above"}else{if(!d&&(l||i>=k-a&&i<=k)){return"below"}else{return"append"}}},onNodeEnter:function(d,a,c,b){this.cancelExpand()},onContainerOver:function(a,c,b){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",a,c,b)){return this.dropAllowed}return this.dropNotAllowed},onNodeOver:function(b,i,h,g){var l=this.getDropPoint(h,b,i);var c=b.node;if(!this.expandProcId&&l=="append"&&c.hasChildNodes()&&!b.node.isExpanded()){this.queueExpand(c)}else{if(l!="append"){this.cancelExpand()}}var d=this.dropNotAllowed;if(this.isValidDropPoint(b,l,i,h,g)){if(l){var a=b.ddel;var k;if(l=="above"){d=b.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";k="x-tree-drag-insert-above"}else{if(l=="below"){d=b.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";k="x-tree-drag-insert-below"}else{d="x-tree-drop-ok-append";k="x-tree-drag-append"}}if(this.lastInsertClass!=k){Ext.fly(a).replaceClass(this.lastInsertClass,k);this.lastInsertClass=k}}}return d},onNodeOut:function(d,a,c,b){this.cancelExpand();this.removeDropIndicators(d)},onNodeDrop:function(i,b,h,d){var a=this.getDropPoint(h,i,b);var g=i.node;g.ui.startDrop();if(!this.isValidDropPoint(i,a,b,h,d)){g.ui.endDrop();return false}var c=d.node||(b.getTreeNode?b.getTreeNode(d,g,a,h):null);return this.processDrop(g,d,a,b,h,c)},onContainerDrop:function(a,g,c){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",a,g,c)){var d=this.tree.getRootNode();d.ui.startDrop();var b=c.node||(a.getTreeNode?a.getTreeNode(c,d,"append",g):null);return this.processDrop(d,c,"append",a,g,b)}return false},processDrop:function(k,h,b,a,i,d){var g={tree:this.tree,target:k,data:h,point:b,source:a,rawEvent:i,dropNode:d,cancel:!d,dropStatus:false};var c=this.tree.fireEvent("beforenodedrop",g);if(c===false||g.cancel===true||!g.dropNode){k.ui.endDrop();return g.dropStatus}k=g.target;if(b=="append"&&!k.isExpanded()){k.expand(false,null,function(){this.completeDrop(g)}.createDelegate(this))}else{this.completeDrop(g)}return true},completeDrop:function(h){var d=h.dropNode,e=h.point,c=h.target;if(!Ext.isArray(d)){d=[d]}var g;for(var b=0,a=d.length;b<a;b++){g=d[b];if(e=="above"){c.parentNode.insertBefore(g,c)}else{if(e=="below"){c.parentNode.insertBefore(g,c.nextSibling)}else{c.appendChild(g)}}}g.ui.focus();if(Ext.enableFx&&this.tree.hlDrop){g.ui.highlight()}c.ui.endDrop();this.tree.fireEvent("nodedrop",h)},afterNodeMoved:function(a,c,g,d,b){if(Ext.enableFx&&this.tree.hlDrop){b.ui.focus();b.ui.highlight()}this.tree.fireEvent("nodedrop",this.tree,d,c,a,g)},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.innerCt,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)},afterRepair:function(){if(Ext.enableFx&&this.tree.hlDrop){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")}this.dragging=false}})}Ext.tree.TreeEditor=function(a,c,b){c=c||{};var d=c.events?c:new Ext.form.TextField(c);Ext.tree.TreeEditor.superclass.constructor.call(this,d,b);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({scope:this,beforeclick:this.beforeNodeClick,dblclick:this.onNodeDblClick});this.on({scope:this,complete:this.updateNode,beforestartedit:this.fitToTree,specialkey:this.onSpecialKey});this.on("startedit",this.bindScroll,this,{delay:10})},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,c){this.completeEdit();if(a.attributes.editable!==false){this.editNode=a;if(this.tree.autoScroll){Ext.fly(a.ui.getEl()).scrollIntoView(this.tree.body)}var b=a.text||"";if(!Ext.isGecko&&Ext.isEmpty(a.text)){a.setText("&#160;")}this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[a.ui.textNode,b]);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()}}},onDestroy:function(){clearTimeout(this.autoEditTimer);Ext.tree.TreeEditor.superclass.onDestroy.call(this);var a=this.tree;a.un("beforeclick",this.beforeNodeClick,this);a.un("dblclick",this.onNodeDblClick,this)}});\r
23 /* SWFObject v2.2 <http://code.google.com/p/swfobject/> \r
24     is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> \r
25 */\r
26 var swfobject=function(){var F="undefined",t="object",U="Shockwave Flash",Y="ShockwaveFlash.ShockwaveFlash",s="application/x-shockwave-flash",T="SWFObjectExprInst",z="onreadystatechange",Q=window,l=document,v=navigator,V=false,W=[i],q=[],P=[],K=[],n,S,G,D,L=false,a=false,p,I,o=true,O=function(){var ac=typeof l.getElementById!=F&&typeof l.getElementsByTagName!=F&&typeof l.createElement!=F,aj=v.userAgent.toLowerCase(),aa=v.platform.toLowerCase(),ag=aa?(/win/).test(aa):/win/.test(aj),ae=aa?(/mac/).test(aa):/mac/.test(aj),ah=/webkit/.test(aj)?parseFloat(aj.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,Z=!+"\v1",ai=[0,0,0],ad=null;if(typeof v.plugins!=F&&typeof v.plugins[U]==t){ad=v.plugins[U].description;if(ad&&!(typeof v.mimeTypes!=F&&v.mimeTypes[s]&&!v.mimeTypes[s].enabledPlugin)){V=true;Z=false;ad=ad.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ai[0]=parseInt(ad.replace(/^(.*)\..*$/,"$1"),10);ai[1]=parseInt(ad.replace(/^.*\.(.*)\s.*$/,"$1"),10);ai[2]=/[a-zA-Z]/.test(ad)?parseInt(ad.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof Q.ActiveXObject!=F){try{var af=new ActiveXObject(Y);if(af){ad=af.GetVariable("$version");if(ad){Z=true;ad=ad.split(" ")[1].split(",");ai=[parseInt(ad[0],10),parseInt(ad[1],10),parseInt(ad[2],10)]}}}catch(ab){}}}return{w3:ac,pv:ai,wk:ah,ie:Z,win:ag,mac:ae}}(),m=function(){if(!O.w3){return}if((typeof l.readyState!=F&&l.readyState=="complete")||(typeof l.readyState==F&&(l.getElementsByTagName("body")[0]||l.body))){g()}if(!L){if(typeof l.addEventListener!=F){l.addEventListener("DOMContentLoaded",g,false)}if(O.ie&&O.win){l.attachEvent(z,function(){if(l.readyState=="complete"){l.detachEvent(z,arguments.callee);g()}});if(Q==top){(function(){if(L){return}try{l.documentElement.doScroll("left")}catch(Z){setTimeout(arguments.callee,0);return}g()})()}}if(O.wk){(function(){if(L){return}if(!(/loaded|complete/).test(l.readyState)){setTimeout(arguments.callee,0);return}g()})()}u(g)}}();function g(){if(L){return}try{var ab=l.getElementsByTagName("body")[0].appendChild(E("span"));ab.parentNode.removeChild(ab)}catch(ac){return}L=true;var Z=W.length;for(var aa=0;aa<Z;aa++){W[aa]()}}function M(Z){if(L){Z()}else{W[W.length]=Z}}function u(aa){if(typeof Q.addEventListener!=F){Q.addEventListener("load",aa,false)}else{if(typeof l.addEventListener!=F){l.addEventListener("load",aa,false)}else{if(typeof Q.attachEvent!=F){k(Q,"onload",aa)}else{if(typeof Q.onload=="function"){var Z=Q.onload;Q.onload=function(){Z();aa()}}else{Q.onload=aa}}}}}function i(){if(V){X()}else{J()}}function X(){var Z=l.getElementsByTagName("body")[0];var ac=E(t);ac.setAttribute("type",s);var ab=Z.appendChild(ac);if(ab){var aa=0;(function(){if(typeof ab.GetVariable!=F){var ad=ab.GetVariable("$version");if(ad){ad=ad.split(" ")[1].split(",");O.pv=[parseInt(ad[0],10),parseInt(ad[1],10),parseInt(ad[2],10)]}}else{if(aa<10){aa++;setTimeout(arguments.callee,10);return}}Z.removeChild(ac);ab=null;J()})()}else{J()}}function J(){var ai=q.length;if(ai>0){for(var ah=0;ah<ai;ah++){var aa=q[ah].id;var ad=q[ah].callbackFn;var ac={success:false,id:aa};if(O.pv[0]>0){var ag=c(aa);if(ag){if(H(q[ah].swfVersion)&&!(O.wk&&O.wk<312)){y(aa,true);if(ad){ac.success=true;ac.ref=B(aa);ad(ac)}}else{if(q[ah].expressInstall&&C()){var ak={};ak.data=q[ah].expressInstall;ak.width=ag.getAttribute("width")||"0";ak.height=ag.getAttribute("height")||"0";if(ag.getAttribute("class")){ak.styleclass=ag.getAttribute("class")}if(ag.getAttribute("align")){ak.align=ag.getAttribute("align")}var aj={};var Z=ag.getElementsByTagName("param");var ae=Z.length;for(var af=0;af<ae;af++){if(Z[af].getAttribute("name").toLowerCase()!="movie"){aj[Z[af].getAttribute("name")]=Z[af].getAttribute("value")}}R(ak,aj,aa,ad)}else{r(ag);if(ad){ad(ac)}}}}}else{y(aa,true);if(ad){var ab=B(aa);if(ab&&typeof ab.SetVariable!=F){ac.success=true;ac.ref=ab}ad(ac)}}}}}function B(ac){var Z=null;var aa=c(ac);if(aa&&aa.nodeName=="OBJECT"){if(typeof aa.SetVariable!=F){Z=aa}else{var ab=aa.getElementsByTagName(t)[0];if(ab){Z=ab}}}return Z}function C(){return !a&&H("6.0.65")&&(O.win||O.mac)&&!(O.wk&&O.wk<312)}function R(ac,ad,Z,ab){a=true;G=ab||null;D={success:false,id:Z};var ag=c(Z);if(ag){if(ag.nodeName=="OBJECT"){n=h(ag);S=null}else{n=ag;S=Z}ac.id=T;if(typeof ac.width==F||(!(/%$/).test(ac.width)&&parseInt(ac.width,10)<310)){ac.width="310"}if(typeof ac.height==F||(!(/%$/).test(ac.height)&&parseInt(ac.height,10)<137)){ac.height="137"}l.title=l.title.slice(0,47)+" - Flash Player Installation";var af=O.ie&&O.win?"ActiveX":"PlugIn",ae="MMredirectURL="+Q.location.toString().replace(/&/g,"%26")+"&MMplayerType="+af+"&MMdoctitle="+l.title;if(typeof ad.flashvars!=F){ad.flashvars+="&"+ae}else{ad.flashvars=ae}if(O.ie&&O.win&&ag.readyState!=4){var aa=E("div");Z+="SWFObjectNew";aa.setAttribute("id",Z);ag.parentNode.insertBefore(aa,ag);ag.style.display="none";(function(){if(ag.readyState==4){ag.parentNode.removeChild(ag)}else{setTimeout(arguments.callee,10)}})()}w(ac,ad,Z)}}function r(aa){if(O.ie&&O.win&&aa.readyState!=4){var Z=E("div");aa.parentNode.insertBefore(Z,aa);Z.parentNode.replaceChild(h(aa),Z);aa.style.display="none";(function(){if(aa.readyState==4){aa.parentNode.removeChild(aa)}else{setTimeout(arguments.callee,10)}})()}else{aa.parentNode.replaceChild(h(aa),aa)}}function h(ae){var ad=E("div");if(O.win&&O.ie){ad.innerHTML=ae.innerHTML}else{var aa=ae.getElementsByTagName(t)[0];if(aa){var af=aa.childNodes;if(af){var Z=af.length;for(var ab=0;ab<Z;ab++){if(!(af[ab].nodeType==1&&af[ab].nodeName=="PARAM")&&!(af[ab].nodeType==8)){ad.appendChild(af[ab].cloneNode(true))}}}}}return ad}function w(ak,ai,aa){var Z,ac=c(aa);if(O.wk&&O.wk<312){return Z}if(ac){if(typeof ak.id==F){ak.id=aa}if(O.ie&&O.win){var aj="";for(var ag in ak){if(ak[ag]!=Object.prototype[ag]){if(ag.toLowerCase()=="data"){ai.movie=ak[ag]}else{if(ag.toLowerCase()=="styleclass"){aj+=' class="'+ak[ag]+'"'}else{if(ag.toLowerCase()!="classid"){aj+=" "+ag+'="'+ak[ag]+'"'}}}}}var ah="";for(var af in ai){if(ai[af]!=Object.prototype[af]){ah+='<param name="'+af+'" value="'+ai[af]+'" />'}}ac.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+aj+">"+ah+"</object>";P[P.length]=ak.id;Z=c(ak.id)}else{var ab=E(t);ab.setAttribute("type",s);for(var ae in ak){if(ak[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="styleclass"){ab.setAttribute("class",ak[ae])}else{if(ae.toLowerCase()!="classid"){ab.setAttribute(ae,ak[ae])}}}}for(var ad in ai){if(ai[ad]!=Object.prototype[ad]&&ad.toLowerCase()!="movie"){e(ab,ad,ai[ad])}}ac.parentNode.replaceChild(ab,ac);Z=ab}}return Z}function e(ab,Z,aa){var ac=E("param");ac.setAttribute("name",Z);ac.setAttribute("value",aa);ab.appendChild(ac)}function A(aa){var Z=c(aa);if(Z&&Z.nodeName=="OBJECT"){if(O.ie&&O.win){Z.style.display="none";(function(){if(Z.readyState==4){b(aa)}else{setTimeout(arguments.callee,10)}})()}else{Z.parentNode.removeChild(Z)}}}function b(ab){var aa=c(ab);if(aa){for(var Z in aa){if(typeof aa[Z]=="function"){aa[Z]=null}}aa.parentNode.removeChild(aa)}}function c(ab){var Z=null;try{Z=l.getElementById(ab)}catch(aa){}return Z}function E(Z){return l.createElement(Z)}function k(ab,Z,aa){ab.attachEvent(Z,aa);K[K.length]=[ab,Z,aa]}function H(ab){var aa=O.pv,Z=ab.split(".");Z[0]=parseInt(Z[0],10);Z[1]=parseInt(Z[1],10)||0;Z[2]=parseInt(Z[2],10)||0;return(aa[0]>Z[0]||(aa[0]==Z[0]&&aa[1]>Z[1])||(aa[0]==Z[0]&&aa[1]==Z[1]&&aa[2]>=Z[2]))?true:false}function x(ae,aa,af,ad){if(O.ie&&O.mac){return}var ac=l.getElementsByTagName("head")[0];if(!ac){return}var Z=(af&&typeof af=="string")?af:"screen";if(ad){p=null;I=null}if(!p||I!=Z){var ab=E("style");ab.setAttribute("type","text/css");ab.setAttribute("media",Z);p=ac.appendChild(ab);if(O.ie&&O.win&&typeof l.styleSheets!=F&&l.styleSheets.length>0){p=l.styleSheets[l.styleSheets.length-1]}I=Z}if(O.ie&&O.win){if(p&&typeof p.addRule==t){p.addRule(ae,aa)}}else{if(p&&typeof l.createTextNode!=F){p.appendChild(l.createTextNode(ae+" {"+aa+"}"))}}}function y(ab,Z){if(!o){return}var aa=Z?"visible":"hidden";if(L&&c(ab)){c(ab).style.visibility=aa}else{x("#"+ab,"visibility:"+aa)}}function N(aa){var ab=/[\\\"<>\.;]/;var Z=ab.exec(aa)!=null;return Z&&typeof encodeURIComponent!=F?encodeURIComponent(aa):aa}var d=function(){if(O.ie&&O.win){window.attachEvent("onunload",function(){var ae=K.length;for(var ad=0;ad<ae;ad++){K[ad][0].detachEvent(K[ad][1],K[ad][2])}var ab=P.length;for(var ac=0;ac<ab;ac++){A(P[ac])}for(var aa in O){O[aa]=null}O=null;for(var Z in swfobject){swfobject[Z]=null}swfobject=null})}}();return{registerObject:function(ad,Z,ac,ab){if(O.w3&&ad&&Z){var aa={};aa.id=ad;aa.swfVersion=Z;aa.expressInstall=ac;aa.callbackFn=ab;q[q.length]=aa;y(ad,false)}else{if(ab){ab({success:false,id:ad})}}},getObjectById:function(Z){if(O.w3){return B(Z)}},embedSWF:function(ad,aj,ag,ai,aa,ac,ab,af,ah,ae){var Z={success:false,id:aj};if(O.w3&&!(O.wk&&O.wk<312)&&ad&&aj&&ag&&ai&&aa){y(aj,false);M(function(){ag+="";ai+="";var al={};if(ah&&typeof ah===t){for(var an in ah){al[an]=ah[an]}}al.data=ad;al.width=ag;al.height=ai;var ao={};if(af&&typeof af===t){for(var am in af){ao[am]=af[am]}}if(ab&&typeof ab===t){for(var ak in ab){if(typeof ao.flashvars!=F){ao.flashvars+="&"+ak+"="+ab[ak]}else{ao.flashvars=ak+"="+ab[ak]}}}if(H(aa)){var ap=w(al,ao,aj);if(al.id==aj){y(aj,true)}Z.success=true;Z.ref=ap}else{if(ac&&C()){al.data=ac;R(al,ao,aj,ae);return}else{y(aj,true)}}if(ae){ae(Z)}})}else{if(ae){ae(Z)}}},switchOffAutoHideShow:function(){o=false},ua:O,getFlashPlayerVersion:function(){return{major:O.pv[0],minor:O.pv[1],release:O.pv[2]}},hasFlashPlayerVersion:H,createSWF:function(ab,aa,Z){if(O.w3){return w(ab,aa,Z)}else{return undefined}},showExpressInstall:function(ab,ac,Z,aa){if(O.w3&&C()){R(ab,ac,Z,aa)}},removeSWF:function(Z){if(O.w3){A(Z)}},createCSS:function(ac,ab,aa,Z){if(O.w3){x(ac,ab,aa,Z)}},addDomLoadEvent:M,addLoadEvent:u,getQueryParamValue:function(ac){var ab=l.location.search||l.location.hash;if(ab){if(/\?/.test(ab)){ab=ab.split("?")[1]}if(ac==null){return N(ab)}var aa=ab.split("&");for(var Z=0;Z<aa.length;Z++){if(aa[Z].substring(0,aa[Z].indexOf("="))==ac){return N(aa[Z].substring((aa[Z].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var Z=c(T);if(Z&&n){Z.parentNode.replaceChild(n,Z);if(S){y(S,true);if(O.ie&&O.win){n.style.display="block"}}if(G){G(D)}}a=false}}}}();Ext.FlashComponent=Ext.extend(Ext.BoxComponent,{flashVersion:"9.0.115",backgroundColor:"#ffffff",wmode:"opaque",flashVars:undefined,flashParams:undefined,url:undefined,swfId:undefined,swfWidth:"100%",swfHeight:"100%",expressInstall:false,initComponent:function(){Ext.FlashComponent.superclass.initComponent.call(this);this.addEvents("initialize")},onRender:function(){Ext.FlashComponent.superclass.onRender.apply(this,arguments);var b=Ext.apply({allowScriptAccess:"always",bgcolor:this.backgroundColor,wmode:this.wmode},this.flashParams),a=Ext.apply({allowedDomain:document.location.hostname,YUISwfId:this.getId(),YUIBridgeCallback:"Ext.FlashEventProxy.onEvent"},this.flashVars);new swfobject.embedSWF(this.url,this.id,this.swfWidth,this.swfHeight,this.flashVersion,this.expressInstall?Ext.FlashComponent.EXPRESS_INSTALL_URL:undefined,a,b);this.swf=Ext.getDom(this.id);this.el=Ext.get(this.swf)},getSwfId:function(){return this.swfId||(this.swfId="extswf"+(++Ext.Component.AUTO_ID))},getId:function(){return this.id||(this.id="extflashcmp"+(++Ext.Component.AUTO_ID))},onFlashEvent:function(a){switch(a.type){case"swfReady":this.initSwf();return;case"log":return}a.component=this;this.fireEvent(a.type.toLowerCase().replace(/event$/,""),a)},initSwf:function(){this.onSwfReady(!!this.isInitialized);this.isInitialized=true;this.fireEvent("initialize",this)},beforeDestroy:function(){if(this.rendered){swfobject.removeSWF(this.swf.id)}Ext.FlashComponent.superclass.beforeDestroy.call(this)},onSwfReady:Ext.emptyFn});Ext.FlashComponent.EXPRESS_INSTALL_URL="http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf";Ext.reg("flash",Ext.FlashComponent);Ext.FlashEventProxy={onEvent:function(c,b){var a=Ext.getCmp(c);if(a){a.onFlashEvent(b)}else{arguments.callee.defer(10,this,[c,b])}}};Ext.chart.Chart=Ext.extend(Ext.FlashComponent,{refreshBuffer:100,chartStyle:{padding:10,animationEnabled:true,font:{name:"Tahoma",color:4473924,size:11},dataTip:{padding:5,border:{color:10075112,size:1},background:{color:14346230,alpha:0.9},font:{name:"Tahoma",color:1393291,size:10,bold:true}}},extraStyle:null,seriesStyles:null,disableCaching:Ext.isIE||Ext.isOpera,disableCacheParam:"_dc",initComponent:function(){Ext.chart.Chart.superclass.initComponent.call(this);if(!this.url){this.url=Ext.chart.Chart.CHART_URL}if(this.disableCaching){this.url=Ext.urlAppend(this.url,String.format("{0}={1}",this.disableCacheParam,new Date().getTime()))}this.addEvents("itemmouseover","itemmouseout","itemclick","itemdoubleclick","itemdragstart","itemdrag","itemdragend","beforerefresh","refresh");this.store=Ext.StoreMgr.lookup(this.store)},setStyle:function(a,b){this.swf.setStyle(a,Ext.encode(b))},setStyles:function(a){this.swf.setStyles(Ext.encode(a))},setSeriesStyles:function(b){this.seriesStyles=b;var a=[];Ext.each(b,function(c){a.push(Ext.encode(c))});this.swf.setSeriesStyles(a)},setCategoryNames:function(a){this.swf.setCategoryNames(a)},setLegendRenderer:function(c,b){var a=this;b=b||a;a.removeFnProxy(a.legendFnName);a.legendFnName=a.createFnProxy(function(d){return c.call(b,d)});a.swf.setLegendLabelFunction(a.legendFnName)},setTipRenderer:function(c,b){var a=this;b=b||a;a.removeFnProxy(a.tipFnName);a.tipFnName=a.createFnProxy(function(h,e,g){var d=a.store.getAt(e);return c.call(b,a,d,e,g)});a.swf.setDataTipFunction(a.tipFnName)},setSeries:function(a){this.series=a;this.refresh()},bindStore:function(a,b){if(!b&&this.store){if(a!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("datachanged",this.refresh,this);this.store.un("add",this.delayRefresh,this);this.store.un("remove",this.delayRefresh,this);this.store.un("update",this.delayRefresh,this);this.store.un("clear",this.refresh,this)}}if(a){a=Ext.StoreMgr.lookup(a);a.on({scope:this,datachanged:this.refresh,add:this.delayRefresh,remove:this.delayRefresh,update:this.delayRefresh,clear:this.refresh})}this.store=a;if(a&&!b){this.refresh()}},onSwfReady:function(b){Ext.chart.Chart.superclass.onSwfReady.call(this,b);var a;this.swf.setType(this.type);if(this.chartStyle){this.setStyles(Ext.apply({},this.extraStyle,this.chartStyle))}if(this.categoryNames){this.setCategoryNames(this.categoryNames)}if(this.tipRenderer){a=this.getFunctionRef(this.tipRenderer);this.setTipRenderer(a.fn,a.scope)}if(this.legendRenderer){a=this.getFunctionRef(this.legendRenderer);this.setLegendRenderer(a.fn,a.scope)}if(!b){this.bindStore(this.store,true)}this.refresh.defer(10,this)},delayRefresh:function(){if(!this.refreshTask){this.refreshTask=new Ext.util.DelayedTask(this.refresh,this)}this.refreshTask.delay(this.refreshBuffer)},refresh:function(){if(this.fireEvent("beforerefresh",this)!==false){var m=false;var k=[],c=this.store.data.items;for(var g=0,l=c.length;g<l;g++){k[g]=c[g].data}var e=[];var d=0;var n=null;var h=0;if(this.series){d=this.series.length;for(h=0;h<d;h++){n=this.series[h];var b={};for(var a in n){if(a=="style"&&n.style!==null){b.style=Ext.encode(n.style);m=true}else{b[a]=n[a]}}e.push(b)}}if(d>0){for(h=0;h<d;h++){n=e[h];if(!n.type){n.type=this.type}n.dataProvider=k}}else{e.push({type:this.type,dataProvider:k})}this.swf.setDataProvider(e);if(this.seriesStyles){this.setSeriesStyles(this.seriesStyles)}this.fireEvent("refresh",this)}},createFnProxy:function(a){var b="extFnProxy"+(++Ext.chart.Chart.PROXY_FN_ID);Ext.chart.Chart.proxyFunction[b]=a;return"Ext.chart.Chart.proxyFunction."+b},removeFnProxy:function(a){if(!Ext.isEmpty(a)){a=a.replace("Ext.chart.Chart.proxyFunction.","");delete Ext.chart.Chart.proxyFunction[a]}},getFunctionRef:function(a){if(Ext.isFunction(a)){return{fn:a,scope:this}}else{return{fn:a.fn,scope:a.scope||this}}},onDestroy:function(){if(this.refreshTask&&this.refreshTask.cancel){this.refreshTask.cancel()}Ext.chart.Chart.superclass.onDestroy.call(this);this.bindStore(null);this.removeFnProxy(this.tipFnName);this.removeFnProxy(this.legendFnName)}});Ext.reg("chart",Ext.chart.Chart);Ext.chart.Chart.PROXY_FN_ID=0;Ext.chart.Chart.proxyFunction={};Ext.chart.Chart.CHART_URL="http://yui.yahooapis.com/2.8.2/build/charts/assets/charts.swf";Ext.chart.PieChart=Ext.extend(Ext.chart.Chart,{type:"pie",onSwfReady:function(a){Ext.chart.PieChart.superclass.onSwfReady.call(this,a);this.setDataField(this.dataField);this.setCategoryField(this.categoryField)},setDataField:function(a){this.dataField=a;this.swf.setDataField(a)},setCategoryField:function(a){this.categoryField=a;this.swf.setCategoryField(a)}});Ext.reg("piechart",Ext.chart.PieChart);Ext.chart.CartesianChart=Ext.extend(Ext.chart.Chart,{onSwfReady:function(a){Ext.chart.CartesianChart.superclass.onSwfReady.call(this,a);this.labelFn=[];if(this.xField){this.setXField(this.xField)}if(this.yField){this.setYField(this.yField)}if(this.xAxis){this.setXAxis(this.xAxis)}if(this.xAxes){this.setXAxes(this.xAxes)}if(this.yAxis){this.setYAxis(this.yAxis)}if(this.yAxes){this.setYAxes(this.yAxes)}if(Ext.isDefined(this.constrainViewport)){this.swf.setConstrainViewport(this.constrainViewport)}},setXField:function(a){this.xField=a;this.swf.setHorizontalField(a)},setYField:function(a){this.yField=a;this.swf.setVerticalField(a)},setXAxis:function(a){this.xAxis=this.createAxis("xAxis",a);this.swf.setHorizontalAxis(this.xAxis)},setXAxes:function(c){var b;for(var a=0;a<c.length;a++){b=this.createAxis("xAxis"+a,c[a]);this.swf.setHorizontalAxis(b)}},setYAxis:function(a){this.yAxis=this.createAxis("yAxis",a);this.swf.setVerticalAxis(this.yAxis)},setYAxes:function(c){var b;for(var a=0;a<c.length;a++){b=this.createAxis("yAxis"+a,c[a]);this.swf.setVerticalAxis(b)}},createAxis:function(b,d){var e=Ext.apply({},d),c,a;if(this[b]){a=this[b].labelFunction;this.removeFnProxy(a);this.labelFn.remove(a)}if(e.labelRenderer){c=this.getFunctionRef(e.labelRenderer);e.labelFunction=this.createFnProxy(function(g){return c.fn.call(c.scope,g)});delete e.labelRenderer;this.labelFn.push(e.labelFunction)}if(b.indexOf("xAxis")>-1&&e.position=="left"){e.position="bottom"}return e},onDestroy:function(){Ext.chart.CartesianChart.superclass.onDestroy.call(this);Ext.each(this.labelFn,function(a){this.removeFnProxy(a)},this)}});Ext.reg("cartesianchart",Ext.chart.CartesianChart);Ext.chart.LineChart=Ext.extend(Ext.chart.CartesianChart,{type:"line"});Ext.reg("linechart",Ext.chart.LineChart);Ext.chart.ColumnChart=Ext.extend(Ext.chart.CartesianChart,{type:"column"});Ext.reg("columnchart",Ext.chart.ColumnChart);Ext.chart.StackedColumnChart=Ext.extend(Ext.chart.CartesianChart,{type:"stackcolumn"});Ext.reg("stackedcolumnchart",Ext.chart.StackedColumnChart);Ext.chart.BarChart=Ext.extend(Ext.chart.CartesianChart,{type:"bar"});Ext.reg("barchart",Ext.chart.BarChart);Ext.chart.StackedBarChart=Ext.extend(Ext.chart.CartesianChart,{type:"stackbar"});Ext.reg("stackedbarchart",Ext.chart.StackedBarChart);Ext.chart.Axis=function(a){Ext.apply(this,a)};Ext.chart.Axis.prototype={type:null,orientation:"horizontal",reverse:false,labelFunction:null,hideOverlappingLabels:true,labelSpacing:2};Ext.chart.NumericAxis=Ext.extend(Ext.chart.Axis,{type:"numeric",minimum:NaN,maximum:NaN,majorUnit:NaN,minorUnit:NaN,snapToUnits:true,alwaysShowZero:true,scale:"linear",roundMajorUnit:true,calculateByLabelSize:true,position:"left",adjustMaximumByMajorUnit:true,adjustMinimumByMajorUnit:true});Ext.chart.TimeAxis=Ext.extend(Ext.chart.Axis,{type:"time",minimum:null,maximum:null,majorUnit:NaN,majorTimeUnit:null,minorUnit:NaN,minorTimeUnit:null,snapToUnits:true,stackingEnabled:false,calculateByLabelSize:true});Ext.chart.CategoryAxis=Ext.extend(Ext.chart.Axis,{type:"category",categoryNames:null,calculateCategoryCount:false});Ext.chart.Series=function(a){Ext.apply(this,a)};Ext.chart.Series.prototype={type:null,displayName:null};Ext.chart.CartesianSeries=Ext.extend(Ext.chart.Series,{xField:null,yField:null,showInLegend:true,axis:"primary"});Ext.chart.ColumnSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"column"});Ext.chart.LineSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"line"});Ext.chart.BarSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"bar"});Ext.chart.PieSeries=Ext.extend(Ext.chart.Series,{type:"pie",dataField:null,categoryField:null});Ext.menu.Menu=Ext.extend(Ext.Container,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,ignoreParentClicks:false,enableScrolling:true,maxHeight:null,scrollIncrement:24,showSeparator:true,defaultOffsets:[0,0],plain:false,floating:true,zIndex:15000,hidden:true,layout:"menu",hideMode:"offsets",scrollerHeight:8,autoLayout:true,defaultType:"menuitem",bufferResize:false,initComponent:function(){if(Ext.isArray(this.initialConfig)){Ext.apply(this,{items:this.initialConfig})}this.addEvents("click","mouseover","mouseout","itemclick");Ext.menu.MenuMgr.register(this);if(this.floating){Ext.EventManager.onWindowResize(this.hide,this)}else{if(this.initialConfig.hidden!==false){this.hidden=false}this.internalDefaults={hideOnClick:false}}Ext.menu.Menu.superclass.initComponent.call(this);if(this.autoLayout){var a=this.doLayout.createDelegate(this,[]);this.on({add:a,remove:a})}},getLayoutTarget:function(){return this.ul},onRender:function(b,a){if(!b){b=Ext.getBody()}var c={id:this.getId(),cls:"x-menu "+((this.floating)?"x-menu-floating x-layer ":"")+(this.cls||"")+(this.plain?" x-menu-plain":"")+(this.showSeparator?"":" x-menu-nosep"),style:this.style,cn:[{tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"},{tag:"ul",cls:"x-menu-list"}]};if(this.floating){this.el=new Ext.Layer({shadow:this.shadow,dh:c,constrain:false,parentEl:b,zindex:this.zIndex})}else{this.el=b.createChild(c)}Ext.menu.Menu.superclass.onRender.call(this,b,a);if(!this.keyNav){this.keyNav=new Ext.menu.MenuNav(this)}this.focusEl=this.el.child("a.x-menu-focus");this.ul=this.el.child("ul.x-menu-list");this.mon(this.ul,{scope:this,click:this.onClick,mouseover:this.onMouseOver,mouseout:this.onMouseOut});if(this.enableScrolling){this.mon(this.el,{scope:this,delegate:".x-menu-scroller",click:this.onScroll,mouseover:this.deactivateActive})}},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=this.findTargetItem(b);if(a){if(a.isFormField){this.setActiveItem(a)}else{if(a instanceof Ext.menu.BaseItem){if(a.menu&&this.ignoreParentClicks){a.expandMenu();b.preventDefault()}else{if(a.onClick){a.onClick(b);this.fireEvent("click",this,a,b)}}}}}},setActiveItem:function(a,b){if(a!=this.activeItem){this.deactivateActive();if((this.activeItem=a).isFormField){a.focus()}else{a.activate(b)}}else{if(b){a.expandMenu()}}},deactivateActive:function(){var b=this.activeItem;if(b){if(b.isFormField){if(b.collapse){b.collapse()}}else{b.deactivate()}delete this.activeItem}},tryActivate:function(g,e){var b=this.items;for(var c=g,a=b.length;c>=0&&c<a;c+=e){var d=b.get(c);if(d.isVisible()&&!d.disabled&&(d.canActivate||d.isFormField)){this.setActiveItem(d,false);return d}}return false},onMouseOver:function(b){var a=this.findTargetItem(b);if(a){if(a.canActivate&&!a.disabled){this.setActiveItem(a,true)}}this.over=true;this.fireEvent("mouseover",this,b,a)},onMouseOut:function(b){var a=this.findTargetItem(b);if(a){if(a==this.activeItem&&a.shouldDeactivate&&a.shouldDeactivate(b)){this.activeItem.deactivate();delete this.activeItem}}this.over=false;this.fireEvent("mouseout",this,b,a)},onScroll:function(d,b){if(d){d.stopEvent()}var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");a.scrollTop+=this.scrollIncrement*(c?-1:1);if(c?a.scrollTop<=0:a.scrollTop+this.activeMax>=a.scrollHeight){this.onScrollerOut(null,b)}},onScrollerIn:function(d,b){var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");if(c?a.scrollTop>0:a.scrollTop+this.activeMax<a.scrollHeight){Ext.fly(b).addClass(["x-menu-item-active","x-menu-scroller-active"])}},onScrollerOut:function(b,a){Ext.fly(a).removeClass(["x-menu-item-active","x-menu-scroller-active"])},show:function(b,c,a){if(this.floating){this.parentMenu=a;if(!this.el){this.render();this.doLayout(false,true)}this.showAt(this.el.getAlignToXY(b,c||this.defaultAlign,this.defaultOffsets),a)}else{Ext.menu.Menu.superclass.show.call(this)}},showAt:function(b,a){if(this.fireEvent("beforeshow",this)!==false){this.parentMenu=a;if(!this.el){this.render()}if(this.enableScrolling){this.el.setXY(b);b[1]=this.constrainScroll(b[1]);b=[this.el.adjustForConstraints(b)[0],b[1]]}else{b=this.el.adjustForConstraints(b)}this.el.setXY(b);this.el.show();Ext.menu.Menu.superclass.onShow.call(this);if(Ext.isIE){this.fireEvent("autosize",this);if(!Ext.isIE8){this.el.repaint()}}this.hidden=false;this.focus();this.fireEvent("show",this)}},constrainScroll:function(i){var b,d=this.ul.setHeight("auto").getHeight(),a=i,h,e,g,c;if(this.floating){e=Ext.fly(this.el.dom.parentNode);g=e.getScroll().top;c=e.getViewSize().height;h=i-g;b=this.maxHeight?this.maxHeight:c-h;if(d>c){b=c;a=i-h}else{if(b<d){a=i-(d-b);b=d}}}else{b=this.getHeight()}if(this.maxHeight){b=Math.min(this.maxHeight,b)}if(d>b&&b>0){this.activeMax=b-this.scrollerHeight*2-this.el.getFrameWidth("tb")-Ext.num(this.el.shadowOffset,0);this.ul.setHeight(this.activeMax);this.createScrollers();this.el.select(".x-menu-scroller").setDisplayed("")}else{this.ul.setHeight(d);this.el.select(".x-menu-scroller").setDisplayed("none")}this.ul.dom.scrollTop=0;return a},createScrollers:function(){if(!this.scroller){this.scroller={pos:0,top:this.el.insertFirst({tag:"div",cls:"x-menu-scroller x-menu-scroller-top",html:"&#160;"}),bottom:this.el.createChild({tag:"div",cls:"x-menu-scroller x-menu-scroller-bottom",html:"&#160;"})};this.scroller.top.hover(this.onScrollerIn,this.onScrollerOut,this);this.scroller.topRepeater=new Ext.util.ClickRepeater(this.scroller.top,{listeners:{click:this.onScroll.createDelegate(this,[null,this.scroller.top],false)}});this.scroller.bottom.hover(this.onScrollerIn,this.onScrollerOut,this);this.scroller.bottomRepeater=new Ext.util.ClickRepeater(this.scroller.bottom,{listeners:{click:this.onScroll.createDelegate(this,[null,this.scroller.bottom],false)}})}},onLayout:function(){if(this.isVisible()){if(this.enableScrolling){this.constrainScroll(this.el.getTop())}if(this.floating){this.el.sync()}}},focus:function(){if(!this.hidden){this.doFocus.defer(50,this)}},doFocus:function(){if(!this.hidden){this.focusEl.focus()}},hide:function(a){if(!this.isDestroyed){this.deepHide=a;Ext.menu.Menu.superclass.hide.call(this);delete this.deepHide}},onHide:function(){Ext.menu.Menu.superclass.onHide.call(this);this.deactivateActive();if(this.el&&this.floating){this.el.hide()}var a=this.parentMenu;if(this.deepHide===true&&a){if(a.floating){a.hide(true)}else{a.deactivateActive()}}},lookupComponent:function(a){if(Ext.isString(a)){a=(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.TextItem(a);this.applyDefaults(a)}else{if(Ext.isObject(a)){a=this.getMenuItem(a)}else{if(a.tagName||a.el){a=new Ext.BoxComponent({el:a})}}}return a},applyDefaults:function(b){if(!Ext.isString(b)){b=Ext.menu.Menu.superclass.applyDefaults.call(this,b);var a=this.internalDefaults;if(a){if(b.events){Ext.applyIf(b.initialConfig,a);Ext.apply(b,a)}else{Ext.applyIf(b,a)}}}return b},getMenuItem:function(a){if(!a.isXType){if(!a.xtype&&Ext.isBoolean(a.checked)){return new Ext.menu.CheckItem(a)}return Ext.create(a,this.defaultType)}return a},addSeparator:function(){return this.add(new Ext.menu.Separator())},addElement:function(a){return this.add(new Ext.menu.BaseItem({el:a}))},addItem:function(a){return this.add(a)},addMenuItem:function(a){return this.add(this.getMenuItem(a))},addText:function(a){return this.add(new Ext.menu.TextItem(a))},onDestroy:function(){Ext.EventManager.removeResizeListener(this.hide,this);var a=this.parentMenu;if(a&&a.activeChild==this){delete a.activeChild}delete this.parentMenu;Ext.menu.Menu.superclass.onDestroy.call(this);Ext.menu.MenuMgr.unregister(this);if(this.keyNav){this.keyNav.disable()}var b=this.scroller;if(b){Ext.destroy(b.topRepeater,b.bottomRepeater,b.top,b.bottom)}Ext.destroy(this.el,this.focusEl,this.ul)}});Ext.reg("menu",Ext.menu.Menu);Ext.menu.MenuNav=Ext.extend(Ext.KeyNav,function(){function a(d,c){if(!c.tryActivate(c.items.indexOf(c.activeItem)-1,-1)){c.tryActivate(c.items.length-1,-1)}}function b(d,c){if(!c.tryActivate(c.items.indexOf(c.activeItem)+1,1)){c.tryActivate(0,1)}}return{constructor:function(c){Ext.menu.MenuNav.superclass.constructor.call(this,c.el);this.scope=this.menu=c},doRelay:function(g,d){var c=g.getKey();if(this.menu.activeItem&&this.menu.activeItem.isFormField&&c!=g.TAB){return false}if(!this.menu.activeItem&&g.isNavKeyPress()&&c!=g.SPACE&&c!=g.RETURN){this.menu.tryActivate(0,1);return false}return d.call(this.scope||this,g,this.menu)},tab:function(d,c){d.stopEvent();if(d.shiftKey){a(d,c)}else{b(d,c)}},up:a,down:b,right:function(d,c){if(c.activeItem){c.activeItem.expandMenu(true)}},left:function(d,c){c.hide();if(c.parentMenu&&c.parentMenu.activeItem){c.parentMenu.activeItem.activate()}},enter:function(d,c){if(c.activeItem){d.stopPropagation();c.activeItem.onClick(d);c.fireEvent("click",this,c.activeItem);return true}}}}());Ext.menu.MenuMgr=function(){var g,d,c={},a=false,l=new Date();function n(){g={};d=new Ext.util.MixedCollection();Ext.getDoc().addKeyListener(27,function(){if(d.length>0){i()}})}function i(){if(d&&d.length>0){var o=d.clone();o.each(function(p){p.hide()});return true}return false}function e(o){d.remove(o);if(d.length<1){Ext.getDoc().un("mousedown",m);a=false}}function k(o){var p=d.last();l=new Date();d.add(o);if(!a){Ext.getDoc().on("mousedown",m);a=true}if(o.parentMenu){o.getEl().setZIndex(parseInt(o.parentMenu.getEl().getStyle("z-index"),10)+3);o.parentMenu.activeChild=o}else{if(p&&!p.isDestroyed&&p.isVisible()){o.getEl().setZIndex(parseInt(p.getEl().getStyle("z-index"),10)+3)}}}function b(o){if(o.activeChild){o.activeChild.hide()}if(o.autoHideTimer){clearTimeout(o.autoHideTimer);delete o.autoHideTimer}}function h(o){var p=o.parentMenu;if(!p&&!o.allowOtherMenus){i()}else{if(p&&p.activeChild){p.activeChild.hide()}}}function m(o){if(l.getElapsed()>50&&d.length>0&&!o.getTarget(".x-menu")){i()}}return{hideAll:function(){return i()},register:function(o){if(!g){n()}g[o.id]=o;o.on({beforehide:b,hide:e,beforeshow:h,show:k})},get:function(o){if(typeof o=="string"){if(!g){return null}return g[o]}else{if(o.events){return o}else{if(typeof o.length=="number"){return new Ext.menu.Menu({items:o})}else{return Ext.create(o,"menu")}}}},unregister:function(o){delete g[o.id];o.un("beforehide",b);o.un("hide",e);o.un("beforeshow",h);o.un("show",k)},registerCheckable:function(o){var p=o.group;if(p){if(!c[p]){c[p]=[]}c[p].push(o)}},unregisterCheckable:function(o){var p=o.group;if(p){c[p].remove(o)}},onCheckChange:function(q,r){if(q.group&&r){var t=c[q.group],p=0,o=t.length,s;for(;p<o;p++){s=t[p];if(s!=q){s.setChecked(false)}}}},getCheckedItem:function(q){var r=c[q];if(r){for(var p=0,o=r.length;p<o;p++){if(r[p].checked){return r[p]}}}return null},setCheckedItem:function(q,s){var r=c[q];if(r){for(var p=0,o=r.length;p<o;p++){if(r[p].id==s){r[p].setChecked(true)}}}return null}}}();Ext.menu.BaseItem=Ext.extend(Ext.Component,{canActivate:false,activeClass:"x-menu-item-active",hideOnClick:true,clickHideDelay:1,ctype:"Ext.menu.BaseItem",actionMode:"container",initComponent:function(){Ext.menu.BaseItem.superclass.initComponent.call(this);this.addEvents("click","activate","deactivate");if(this.handler){this.on("click",this.handler,this.scope)}},onRender:function(b,a){Ext.menu.BaseItem.superclass.onRender.apply(this,arguments);if(this.ownerCt&&this.ownerCt instanceof Ext.menu.Menu){this.parentMenu=this.ownerCt}else{this.container.addClass("x-menu-list-item");this.mon(this.el,{scope:this,click:this.onClick,mouseenter:this.activate,mouseleave:this.deactivate})}},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&&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(b){var a=this.parentMenu;if(this.hideOnClick){if(a.floating){a.hide.defer(this.clickHideDelay,a,[true])}else{a.deactivateActive()}}},expandMenu:Ext.emptyFn,hideMenu:Ext.emptyFn});Ext.reg("menubaseitem",Ext.menu.BaseItem);Ext.menu.TextItem=Ext.extend(Ext.menu.BaseItem,{hideOnClick:false,itemCls:"x-menu-text",constructor:function(a){if(typeof a=="string"){a={text:a}}Ext.menu.TextItem.superclass.constructor.call(this,a)},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.reg("menutextitem",Ext.menu.TextItem);Ext.menu.Separator=Ext.extend(Ext.menu.BaseItem,{itemCls:"x-menu-sep",hideOnClick:false,activeClass:"",onRender:function(a){var b=document.createElement("span");b.className=this.itemCls;b.innerHTML="&#160;";this.el=b;a.addClass("x-menu-sep-li");Ext.menu.Separator.superclass.onRender.apply(this,arguments)}});Ext.reg("menuseparator",Ext.menu.Separator);Ext.menu.Item=Ext.extend(Ext.menu.BaseItem,{itemCls:"x-menu-item",canActivate:true,showDelay:200,altText:"",hideDelay:200,ctype:"Ext.menu.Item",initComponent:function(){Ext.menu.Item.superclass.initComponent.call(this);if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu);this.menu.ownerCt=this}},onRender:function(d,b){if(!this.itemTpl){this.itemTpl=Ext.menu.Item.prototype.itemTpl=new Ext.XTemplate('<a id="{id}" class="{cls}" hidefocus="true" unselectable="on" href="{href}"','<tpl if="hrefTarget">',' target="{hrefTarget}"',"</tpl>",">",'<img alt="{altText}" src="{icon}" class="x-menu-item-icon {iconCls}"/>','<span class="x-menu-item-text">{text}</span>',"</a>")}var c=this.getTemplateArgs();this.el=b?this.itemTpl.insertBefore(b,c,true):this.itemTpl.append(d,c,true);this.iconEl=this.el.child("img.x-menu-item-icon");this.textEl=this.el.child(".x-menu-item-text");if(!this.href){this.mon(this.el,"click",Ext.emptyFn,null,{preventDefault:true})}Ext.menu.Item.superclass.onRender.call(this,d,b)},getTemplateArgs:function(){return{id:this.id,cls:this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:""),href:this.href||"#",hrefTarget:this.hrefTarget,icon:this.icon||Ext.BLANK_IMAGE_URL,iconCls:this.iconCls||"",text:this.itemText||this.text||"&#160;",altText:this.altText||""}},setText:function(a){this.text=a||"&#160;";if(this.rendered){this.textEl.update(this.text);this.parentMenu.layout.doAutoSize()}},setIconClass:function(a){var b=this.iconCls;this.iconCls=a;if(this.rendered){this.iconEl.replaceClass(b,this.iconCls)}},beforeDestroy:function(){if(this.menu){delete this.menu.ownerCt;this.menu.destroy()}Ext.menu.Item.superclass.beforeDestroy.call(this)},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;if(this.menu.over){this.parentMenu.setActiveItem(this,false)}else{this.menu.hide()}}});Ext.reg("menuitem",Ext.menu.Item);Ext.menu.CheckItem=Ext.extend(Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",initComponent:function(){Ext.menu.CheckItem.superclass.initComponent.call(this);this.addEvents("beforecheckchange","checkchange");if(this.checkHandler){this.on("checkchange",this.checkHandler,this.scope)}Ext.menu.MenuMgr.registerCheckable(this)},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){var c=a===true;if(this.checked!=b&&(c||this.fireEvent("beforecheckchange",this,b)!==false)){Ext.menu.MenuMgr.onCheckChange(this,b);if(this.container){this.container[b?"addClass":"removeClass"]("x-menu-item-checked")}this.checked=b;if(!c){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.reg("menucheckitem",Ext.menu.CheckItem);Ext.menu.DateMenu=Ext.extend(Ext.menu.Menu,{enableScrolling:false,hideOnClick:true,pickerId:null,cls:"x-date-menu",initComponent:function(){this.on("beforeshow",this.onBeforeShow,this);if(this.strict=(Ext.isIE7&&Ext.isStrict)){this.on("show",this.onShow,this,{single:true,delay:20})}Ext.apply(this,{plain:true,showSeparator:false,items:this.picker=new Ext.DatePicker(Ext.applyIf({internalRender:this.strict||!Ext.isIE,ctCls:"x-menu-date-item",id:this.pickerId},this.initialConfig))});this.picker.purgeListeners();Ext.menu.DateMenu.superclass.initComponent.call(this);this.relayEvents(this.picker,["select"]);this.on("show",this.picker.focus,this.picker);this.on("select",this.menuHide,this);if(this.handler){this.on("select",this.handler,this.scope||this)}},menuHide:function(){if(this.hideOnClick){this.hide(true)}},onBeforeShow:function(){if(this.picker){this.picker.hideMonthPicker(true)}},onShow:function(){var a=this.picker.getEl();a.setWidth(a.getWidth())}});Ext.reg("datemenu",Ext.menu.DateMenu);Ext.menu.ColorMenu=Ext.extend(Ext.menu.Menu,{enableScrolling:false,hideOnClick:true,cls:"x-color-menu",paletteId:null,initComponent:function(){Ext.apply(this,{plain:true,showSeparator:false,items:this.palette=new Ext.ColorPalette(Ext.applyIf({id:this.paletteId},this.initialConfig))});this.palette.purgeListeners();Ext.menu.ColorMenu.superclass.initComponent.call(this);this.relayEvents(this.palette,["select"]);this.on("select",this.menuHide,this);if(this.handler){this.on("select",this.handler,this.scope||this)}},menuHide:function(){if(this.hideOnClick){this.hide(true)}}});Ext.reg("colormenu",Ext.menu.ColorMenu);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,submitValue:true,isFormField:true,msgDisplay:"",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.name||this.id||""},onRender:function(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.autoEl=b}Ext.form.Field.superclass.onRender.call(this,c,a);if(this.submitValue===false){this.el.dom.removeAttribute("name")}var d=this.el.dom.type;if(d){if(d=="password"){d="text"}this.el.addClass("x-form-"+d)}if(this.readOnly){this.setReadOnly(true)}if(this.tabIndex!==undefined){this.el.dom.setAttribute("tabIndex",this.tabIndex)}this.el.addClass([this.fieldClass,this.cls])},getItemCt:function(){return this.itemCt},initValue:function(){if(this.value!==undefined){this.setValue(this.value)}else{if(!Ext.isEmpty(this.el.dom.value)&&this.el.dom.value!=this.emptyText){this.setValue(this.el.dom.value)}}this.originalValue=this.getValue()},isDirty:function(){if(this.disabled||!this.rendered){return false}return String(this.getValue())!==String(this.originalValue)},setReadOnly:function(a){if(this.rendered){this.el.dom.readOnly=a}this.readOnly=a},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents();this.initValue()},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,a)}},reset:function(){this.setValue(this.originalValue);this.clearInvalid()},initEvents:function(){this.mon(this.el,Ext.EventManager.getKeyEvent(),this.fireKey,this);this.mon(this.el,"focus",this.onFocus,this);this.mon(this.el,"blur",this.onBlur,this,this.inEditor?{buffer:10}:null)},preFocus:Ext.emptyFn,onFocus:function(){this.preFocus();if(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(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);this.postBlur()},postBlur:Ext.emptyFn,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(b){var a=this.getErrors(b)[0];if(a==undefined){return true}else{this.markInvalid(a);return false}},getErrors:function(){return[]},getActiveError:function(){return this.activeError||""},markInvalid:function(c){if(this.rendered&&!this.preventMark){c=c||this.invalidText;var a=this.getMessageHandler();if(a){a.mark(this,c)}else{if(this.msgTarget){this.el.addClass(this.invalidClass);var b=Ext.getDom(this.msgTarget);if(b){b.innerHTML=c;b.style.display=this.msgDisplay}}}}this.setActiveError(c)},clearInvalid:function(){if(this.rendered&&!this.preventMark){this.el.removeClass(this.invalidClass);var a=this.getMessageHandler();if(a){a.clear(this)}else{if(this.msgTarget){this.el.removeClass(this.invalidClass);var b=Ext.getDom(this.msgTarget);if(b){b.innerHTML="";b.style.display="none"}}}}this.unsetActiveError()},setActiveError:function(b,a){this.activeError=b;if(a!==true){this.fireEvent("invalid",this,b)}},unsetActiveError:function(a){delete this.activeError;if(a!==true){this.fireEvent("valid",this)}},getMessageHandler:function(){return Ext.form.MessageTargets[this.msgTarget]},getErrorCt:function(){return this.el.findParent(".x-form-element",5,true)||this.el.findParent(".x-form-field-wrap",5,true)},alignErrorEl:function(){this.errorEl.setWidth(this.getErrorCt().getWidth(true)-20)},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,"tl-tr",[2,0])},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.rendered?(this.el.dom.value=(Ext.isEmpty(a)?"":a)):""},setValue:function(a){this.value=a;if(this.rendered){this.el.dom.value=(Ext.isEmpty(a)?"":a);this.validate()}return this},append:function(a){this.setValue([this.getValue(),a].join(""))}});Ext.form.MessageTargets={qtip:{mark:function(a,b){a.el.addClass(a.invalidClass);a.el.dom.qtip=b;a.el.dom.qclass="x-form-invalid-tip";if(Ext.QuickTips){Ext.QuickTips.enable()}},clear:function(a){a.el.removeClass(a.invalidClass);a.el.dom.qtip=""}},title:{mark:function(a,b){a.el.addClass(a.invalidClass);a.el.dom.title=b},clear:function(a){a.el.dom.title=""}},under:{mark:function(b,c){b.el.addClass(b.invalidClass);if(!b.errorEl){var a=b.getErrorCt();if(!a){b.el.dom.title=c;return}b.errorEl=a.createChild({cls:"x-form-invalid-msg"});b.on("resize",b.alignErrorEl,b);b.on("destroy",function(){Ext.destroy(this.errorEl)},b)}b.alignErrorEl();b.errorEl.update(c);Ext.form.Field.msgFx[b.msgFx].show(b.errorEl,b)},clear:function(a){a.el.removeClass(a.invalidClass);if(a.errorEl){Ext.form.Field.msgFx[a.msgFx].hide(a.errorEl,a)}else{a.el.dom.title=""}}},side:{mark:function(b,c){b.el.addClass(b.invalidClass);if(!b.errorIcon){var a=b.getErrorCt();if(!a){b.el.dom.title=c;return}b.errorIcon=a.createChild({cls:"x-form-invalid-icon"});if(b.ownerCt){b.ownerCt.on("afterlayout",b.alignErrorIcon,b);b.ownerCt.on("expand",b.alignErrorIcon,b)}b.on("resize",b.alignErrorIcon,b);b.on("destroy",function(){Ext.destroy(this.errorIcon)},b)}b.alignErrorIcon();b.errorIcon.dom.qtip=c;b.errorIcon.dom.qclass="x-form-invalid-tip";b.errorIcon.show()},clear:function(a){a.el.removeClass(a.invalidClass);if(a.errorIcon){a.errorIcon.dom.qtip="";a.errorIcon.hide()}else{a.el.dom.title=""}}}};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","keydown","keyup","keypress")},initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=="keyup"){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.mon(this.el,"keyup",this.filterValidation,this)}else{if(this.validationEvent!==false&&this.validationEvent!="blur"){this.mon(this.el,this.validationEvent,this.validate,this,{buffer:this.validationDelay})}}if(this.selectOnFocus||this.emptyText){this.mon(this.el,"mousedown",this.onMouseDown,this);if(this.emptyText){this.applyEmptyText()}}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+"Mask"]))){this.mon(this.el,"keypress",this.filterKeys,this)}if(this.grow){this.mon(this.el,"keyup",this.onKeyUpBuffered,this,{buffer:50});this.mon(this.el,"click",this.autoSize,this)}if(this.enableKeyEvents){this.mon(this.el,{scope:this,keyup:this.onKeyUp,keydown:this.onKeyDown,keypress:this.onKeyPress})}},onMouseDown:function(a){if(!this.hasFocus){this.mon(this.el,"mouseup",Ext.emptyFn,this,{single:true,preventDefault:true})}},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)}},onDisable:function(){Ext.form.TextField.superclass.onDisable.call(this);if(Ext.isIE){this.el.dom.unselectable="on"}},onEnable:function(){Ext.form.TextField.superclass.onEnable.call(this);if(Ext.isIE){this.el.dom.unselectable=""}},onKeyUpBuffered:function(a){if(this.doAutoSize(a)){this.autoSize()}},doAutoSize:function(a){return !a.isNavKeyPress()},onKeyUp:function(a){this.fireEvent("keyup",this,a)},onKeyDown:function(a){this.fireEvent("keydown",this,a)},onKeyPress:function(a){this.fireEvent("keypress",this,a)},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText()},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1&&!this.hasFocus){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass)}},preFocus:function(){var a=this.el,b;if(this.emptyText){if(a.dom.value==this.emptyText){this.setRawValue("");b=true}a.removeClass(this.emptyClass)}if(this.selectOnFocus||b){a.dom.select()}},postBlur:function(){this.applyEmptyText()},filterKeys:function(b){if(b.ctrlKey){return}var a=b.getKey();if(Ext.isGecko&&(b.isNavKeyPress()||a==b.BACKSPACE||(a==b.DELETE&&b.button==-1))){return}var c=String.fromCharCode(b.getCharCode());if(!Ext.isGecko&&b.isSpecialKey()&&!c){return}if(!this.maskRe.test(c)){b.stopEvent()}},setValue:function(a){if(this.emptyText&&this.el&&!Ext.isEmpty(a)){this.el.removeClass(this.emptyClass)}Ext.form.TextField.superclass.setValue.apply(this,arguments);this.applyEmptyText();this.autoSize();return this},getErrors:function(a){var d=Ext.form.TextField.superclass.getErrors.apply(this,arguments);a=Ext.isDefined(a)?a:this.processValue(this.getRawValue());if(Ext.isFunction(this.validator)){var c=this.validator(a);if(c!==true){d.push(c)}}if(a.length<1||a===this.emptyText){if(this.allowBlank){return d}else{d.push(this.blankText)}}if(!this.allowBlank&&(a.length<1||a===this.emptyText)){d.push(this.blankText)}if(a.length<this.minLength){d.push(String.format(this.minLengthText,this.minLength))}if(a.length>this.maxLength){d.push(String.format(this.maxLengthText,this.maxLength))}if(this.vtype){var b=Ext.form.VTypes;if(!b[this.vtype](a,this)){d.push(this.vtypeText||b[this.vtype+"Text"])}}if(this.regex&&!this.regex.test(a)){d.push(this.regexText)}return d},selectText:function(h,a){var c=this.getRawValue();var e=false;if(c.length>0){h=h===undefined?0:h;a=a===undefined?c.length:a;var g=this.el.dom;if(g.setSelectionRange){g.setSelectionRange(h,a)}else{if(g.createTextRange){var b=g.createTextRange();b.moveStart("character",h);b.moveEnd("character",a-c.length);b.select()}}e=Ext.isGecko||Ext.isOpera}else{e=true}if(e){this.focus()}},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 e=document.createElement("div");e.appendChild(document.createTextNode(b));b=e.innerHTML;Ext.removeNode(e);e=null;b+="&#160;";var a=Math.min(this.growMax,Math.max(this.metrics.getWidth(b)+10,this.growMin));this.el.setWidth(a);this.fireEvent("autosize",this,a)},onDestroy:function(){if(this.validationTask){this.validationTask.cancel();this.validationTask=null}Ext.form.TextField.superclass.onDestroy.call(this)}});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,editable:true,readOnly:false,wrapFocusClass:"x-trigger-wrap-focus",autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,mimicing:false,actionMode:"wrap",defaultTriggerWidth:17,onResize:function(a,c){Ext.form.TriggerField.superclass.onResize.call(this,a,c);var b=this.getTriggerWidth();if(Ext.isNumber(a)){this.el.setWidth(a-b)}this.wrap.setWidth(this.el.getWidth()+b)},getTriggerWidth:function(){var a=this.trigger.getWidth();if(!this.hideTrigger&&!this.readOnly&&a===0){a=this.defaultTriggerWidth}return a},alignErrorIcon:function(){if(this.wrap){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])}},onRender:function(b,a){this.doc=Ext.isIE?Ext.getBody():Ext.getDoc();Ext.form.TriggerField.superclass.onRender.call(this,b,a);this.wrap=this.el.wrap({cls:"x-form-field-wrap x-form-field-trigger-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.triggerClass});this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())}this.resizeEl=this.positionEl=this.wrap},getWidth:function(){return(this.el.getWidth()+this.trigger.getWidth())},updateEditState:function(){if(this.rendered){if(this.readOnly){this.el.dom.readOnly=true;this.el.addClass("x-trigger-noedit");this.mun(this.el,"click",this.onTriggerClick,this);this.trigger.setDisplayed(false)}else{if(!this.editable){this.el.dom.readOnly=true;this.el.addClass("x-trigger-noedit");this.mon(this.el,"click",this.onTriggerClick,this)}else{this.el.dom.readOnly=false;this.el.removeClass("x-trigger-noedit");this.mun(this.el,"click",this.onTriggerClick,this)}this.trigger.setDisplayed(!this.hideTrigger)}this.onResize(this.width||this.wrap.getWidth())}},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateEditState()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateEditState()}},setReadOnly:function(a){if(a!=this.readOnly){this.readOnly=a;this.updateEditState()}},afterRender:function(){Ext.form.TriggerField.superclass.afterRender.call(this);this.updateEditState()},initTrigger:function(){this.mon(this.trigger,"click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver("x-form-trigger-over");this.trigger.addClassOnClick("x-form-trigger-click")},onDestroy:function(){Ext.destroy(this.trigger,this.wrap);if(this.mimicing){this.doc.un("mousedown",this.mimicBlur,this)}delete this.doc;Ext.form.TriggerField.superclass.onDestroy.call(this)},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass(this.wrapFocusClass);this.mimicing=true;this.doc.on("mousedown",this.mimicBlur,this,{delay:10});if(this.monitorTab){this.on("specialkey",this.checkTab,this)}}},checkTab:function(a,b){if(b.getKey()==b.TAB){this.triggerBlur()}},onBlur:Ext.emptyFn,mimicBlur:function(a){if(!this.isDestroyed&&!this.wrap.contains(a.target)&&this.validateBlur(a)){this.triggerBlur()}},triggerBlur:function(){this.mimicing=false;this.doc.un("mousedown",this.mimicBlur,this);if(this.monitorTab&&this.el){this.un("specialkey",this.checkTab,this)}Ext.form.TriggerField.superclass.onBlur.call(this);if(this.wrap){this.wrap.removeClass(this.wrapFocusClass)}},beforeBlur:Ext.emptyFn,validateBlur:function(a){return true},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,alt:"",cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.trigger2Class}]}},getTrigger:function(a){return this.triggers[a]},afterRender:function(){Ext.form.TwinTriggerField.superclass.afterRender.call(this);var c=this.triggers,b=0,a=c.length;for(;b<a;++b){if(this["hideTrigger"+(b+1)]){c[b].hide()}}},initTrigger:function(){var a=this.trigger.select(".x-form-trigger",true),b=this;a.each(function(d,g,c){var e="Trigger"+(c+1);d.hide=function(){var h=b.wrap.getWidth();this.dom.style.display="none";b.el.setWidth(h-b.trigger.getWidth());b["hidden"+e]=true};d.show=function(){var h=b.wrap.getWidth();this.dom.style.display="";b.el.setWidth(h-b.trigger.getWidth());b["hidden"+e]=false};this.mon(d,"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},getTriggerWidth:function(){var a=0;Ext.each(this.triggers,function(d,c){var e="Trigger"+(c+1),b=d.getWidth();if(b===0&&!this["hidden"+e]){a+=this.defaultTriggerWidth}else{a+=b}},this);return a},onDestroy:function(){Ext.destroy(this.triggers);Ext.form.TwinTriggerField.superclass.onDestroy.call(this)},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:"&#160;\n&#160;",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(){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)}},doAutoSize:function(a){return !a.isNavKeyPress()||a.getKey()==a.ENTER},filterValidation:function(a){if(!a.isNavKeyPress()||(!this.enterIsSpecial&&a.keyCode==a.ENTER)){this.validationTask.delay(this.validationDelay)}},autoSize:function(){if(!this.grow||!this.textSizeEl){return}var c=this.el,a=Ext.util.Format.htmlEncode(c.dom.value),d=this.textSizeEl,b;Ext.fly(d).setWidth(this.el.getWidth());if(a.length<1){a="&#160;&#160;"}else{a+=this.growAppend;if(Ext.isIE){a=a.replace(/\n/g,"&#160;<br />")}}d.innerHTML=a;b=Math.min(this.growMax,Math.max(d.offsetHeight,this.growMin));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",autoStripChars:false,initEvents:function(){var a=this.baseChars+"";if(this.allowDecimals){a+=this.decimalSeparator}if(this.allowNegative){a+="-"}a=Ext.escapeRe(a);this.maskRe=new RegExp("["+a+"]");if(this.autoStripChars){this.stripCharsRe=new RegExp("[^"+a+"]","gi")}Ext.form.NumberField.superclass.initEvents.call(this)},getErrors:function(b){var c=Ext.form.NumberField.superclass.getErrors.apply(this,arguments);b=Ext.isDefined(b)?b:this.processValue(this.getRawValue());if(b.length<1){return c}b=String(b).replace(this.decimalSeparator,".");if(isNaN(b)){c.push(String.format(this.nanText,b))}var a=this.parseValue(b);if(a<this.minValue){c.push(String.format(this.minText,this.minValue))}if(a>this.maxValue){c.push(String.format(this.maxText,this.maxValue))}return c},getValue:function(){return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))},setValue:function(a){a=this.fixPrecision(a);a=Ext.isNumber(a)?a:parseFloat(String(a).replace(this.decimalSeparator,"."));a=isNaN(a)?"":String(a).replace(".",this.decimalSeparator);return Ext.form.NumberField.superclass.setValue.call(this,a)},setMinValue:function(a){this.minValue=Ext.num(a,Number.NEGATIVE_INFINITY)},setMaxValue:function(a){this.maxValue=Ext.num(a,Number.MAX_VALUE)},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(!Ext.isEmpty(a)){this.setValue(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|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",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",showToday:true,startDay:0,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},initTime:"12",initTimeFormat:"H",safeParse:function(b,c){if(/[gGhH]/.test(c.replace(/(\\.)/g,""))){return Date.parseDate(b,c)}else{var a=Date.parseDate(b+" "+this.initTime,c+" "+this.initTimeFormat);if(a){return a.clearTime()}}},initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);this.addEvents("select");if(Ext.isString(this.minValue)){this.minValue=this.parseDate(this.minValue)}if(Ext.isString(this.maxValue)){this.maxValue=this.parseDate(this.maxValue)}this.disabledDatesRE=null;this.initDisabledDays()},initEvents:function(){Ext.form.DateField.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{down:function(a){this.onTriggerClick()},scope:this,forceKeyDown:true})},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,c="(?:";Ext.each(b,function(g,e){c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];if(e!=a){c+="|"}},this);this.disabledDatesRE=new RegExp(c+")")}},setDisabledDates:function(a){this.disabledDates=a;this.initDisabledDays();if(this.menu){this.menu.picker.setDisabledDates(this.disabledDatesRE)}},setDisabledDays:function(a){this.disabledDays=a;if(this.menu){this.menu.picker.setDisabledDays(a)}},setMinValue:function(a){this.minValue=(Ext.isString(a)?this.parseDate(a):a);if(this.menu){this.menu.picker.setMinDate(this.minValue)}},setMaxValue:function(a){this.maxValue=(Ext.isString(a)?this.parseDate(a):a);if(this.menu){this.menu.picker.setMaxDate(this.maxValue)}},getErrors:function(e){var h=Ext.form.DateField.superclass.getErrors.apply(this,arguments);e=this.formatDate(e||this.processValue(this.getRawValue()));if(e.length<1){return h}var c=e;e=this.parseDate(e);if(!e){h.push(String.format(this.invalidText,c,this.format));return h}var g=e.getTime();if(this.minValue&&g<this.minValue.clearTime().getTime()){h.push(String.format(this.minText,this.formatDate(this.minValue)))}if(this.maxValue&&g>this.maxValue.clearTime().getTime()){h.push(String.format(this.maxText,this.formatDate(this.maxValue)))}if(this.disabledDays){var a=e.getDay();for(var b=0;b<this.disabledDays.length;b++){if(a===this.disabledDays[b]){h.push(this.disabledDaysText);break}}}var d=this.formatDate(e);if(this.disabledDatesRE&&this.disabledDatesRE.test(d)){h.push(String.format(this.disabledDatesText,d))}return h},validateBlur:function(){return !this.menu||!this.menu.isVisible()},getValue:function(){return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))||""},setValue:function(a){return Ext.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))},parseDate:function(g){if(!g||Ext.isDate(g)){return g}var b=this.safeParse(g,this.format),c=this.altFormats,e=this.altFormatsArray;if(!b&&c){e=e||c.split("|");for(var d=0,a=e.length;d<a&&!b;d++){b=this.safeParse(g,e[d])}}return b},onDestroy:function(){Ext.destroy(this.menu,this.keyNav);Ext.form.DateField.superclass.onDestroy.call(this)},formatDate:function(a){return Ext.isDate(a)?a.dateFormat(this.format):a},onTriggerClick:function(){if(this.disabled){return}if(this.menu==null){this.menu=new Ext.menu.DateMenu({hideOnClick:false,focusOnSelect:false})}this.onFocus();Ext.apply(this.menu.picker,{minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.disabledDatesRE,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.format,showToday:this.showToday,startDay:this.startDay,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))});this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?");this.menuEvents("on")},menuEvents:function(a){this.menu[a]("select",this.onSelect,this);this.menu[a]("hide",this.onMenuHide,this);this.menu[a]("show",this.onFocus,this)},onSelect:function(a,b){this.setValue(b);this.fireEvent("select",this,b);this.menu.hide()},onMenuHide:function(){this.focus(false,60);this.menuEvents("un")},beforeBlur:function(){var a=this.parseDate(this.getRawValue());if(a){this.setValue(a)}}});Ext.reg("datefield",Ext.form.DateField);Ext.form.DisplayField=Ext.extend(Ext.form.Field,{validationEvent:false,validateOnBlur:false,defaultAutoCreate:{tag:"div"},fieldClass:"x-form-display-field",htmlEncode:false,initEvents:Ext.emptyFn,isValid:function(){return true},validate:function(){return true},getRawValue:function(){var a=this.rendered?this.el.dom.innerHTML:Ext.value(this.value,"");if(a===this.emptyText){a=""}if(this.htmlEncode){a=Ext.util.Format.htmlDecode(a)}return a},getValue:function(){return this.getRawValue()},getName:function(){return this.name},setRawValue:function(a){if(this.htmlEncode){a=Ext.util.Format.htmlEncode(a)}return this.rendered?(this.el.dom.innerHTML=(Ext.isEmpty(a)?"":a)):(this.value=a)},setValue:function(a){this.setRawValue(a);return this}});Ext.reg("displayfield",Ext.form.DisplayField);Ext.form.ComboBox=Ext.extend(Ext.form.TriggerField,{defaultAutoCreate:{tag:"input",type:"text",size:"24",autocomplete:"off"},listClass:"",selectedClass:"x-combo-selected",listEmptyText:"",triggerClass:"x-form-arrow-trigger",shadow:"sides",listAlign:"tl-bl?",maxHeight:300,minHeight:90,triggerAction:"query",minChars:4,autoSelect:true,typeAhead:false,queryDelay:500,pageSize:0,selectOnFocus:false,queryParam:"query",loadingText:"Loading...",resizable:false,handleHeight:8,allQuery:"",mode:"remote",minListWidth:70,forceSelection:false,typeAheadDelay:250,lazyInit:true,clearFilterOnReset:true,submitValue:undefined,initComponent:function(){Ext.form.ComboBox.superclass.initComponent.call(this);this.addEvents("expand","collapse","beforeselect","select","beforequery");if(this.transform){var c=Ext.getDom(this.transform);if(!this.hiddenName){this.hiddenName=c.name}if(!this.store){this.mode="local";var k=[],e=c.options;for(var b=0,a=e.length;b<a;b++){var h=e[b],g=(h.hasAttribute?h.hasAttribute("value"):h.getAttributeNode("value").specified)?h.value:h.text;if(h.selected&&Ext.isEmpty(this.value,true)){this.value=g}k.push([g,h.text])}this.store=new Ext.data.ArrayStore({idIndex:0,fields:["value","text"],data:k,autoDestroy:true});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);this.render(this.el.parentNode,c)}Ext.removeNode(c)}else{if(this.store){this.store=Ext.StoreMgr.lookup(this.store);if(this.store.autoCreated){this.displayField=this.valueField="field1";if(!this.store.expandData){this.displayField="field2"}this.mode="local"}}}this.selectedIndex=-1;if(this.mode=="local"){if(!Ext.isDefined(this.initialConfig.queryDelay)){this.queryDelay=10}if(!Ext.isDefined(this.initialConfig.minChars)){this.minChars=0}}},onRender:function(b,a){if(this.hiddenName&&!Ext.isDefined(this.submitValue)){this.submitValue=false}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||Ext.id())},"before",true)}if(Ext.isGecko){this.el.dom.setAttribute("autocomplete","off")}if(!this.lazyInit){this.initList()}else{this.on("focus",this.initList,this,{single:true})}},initValue:function(){Ext.form.ComboBox.superclass.initValue.call(this);if(this.hiddenField){this.hiddenField.value=Ext.value(Ext.isDefined(this.hiddenValue)?this.hiddenValue:this.value,"")}},getParentZIndex:function(){var a;if(this.ownerCt){this.findParentBy(function(b){a=parseInt(b.getPositionEl().getStyle("z-index"),10);return !!a})}return a},getZIndex:function(b){b=b||Ext.getDom(this.getListParent()||Ext.getBody());var a=parseInt(Ext.fly(b).getStyle("z-index"),10);if(!a){a=this.getParentZIndex()}return(a||12000)+5},initList:function(){if(!this.list){var a="x-combo-list",c=Ext.getDom(this.getListParent()||Ext.getBody());this.list=new Ext.Layer({parentEl:c,shadow:this.shadow,cls:[a,this.listClass].join(" "),constrain:false,zindex:this.getZIndex(c)});var b=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);this.list.setSize(b,0);this.list.swallowEvent("mousewheel");this.assetHeight=0;if(this.syncFont!==false){this.list.setStyle("font-size",this.el.getStyle("font-size"))}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.mon(this.innerList,"mouseover",this.onViewOver,this);this.mon(this.innerList,"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='<tpl for="."><div class="'+a+'-item">{'+this.displayField+"}</div></tpl>"}this.view=new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector||"."+a+"-item",emptyText:this.listEmptyText,deferEmptyText:false});this.mon(this.view,{containerclick:this.onViewClick,click:this.onViewClick,scope:this});this.bindStore(this.store,true);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:"se"});this.mon(this.resizer,"resize",function(g,d,e){this.maxHeight=e-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;this.listWidth=d;this.innerList.setWidth(d-this.list.getFrameWidth("lr"));this.restrictHeight()},this);this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")}}},getListParent:function(){return document.body},getStore:function(){return this.store},bindStore:function(a,b){if(this.store&&!b){if(this.store!==a&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.collapse,this)}if(!a){this.store=null;if(this.view){this.view.bindStore(null)}if(this.pageTb){this.pageTb.bindStore(null)}}}if(a){if(!b){this.lastQuery=null;if(this.pageTb){this.pageTb.bindStore(a)}}this.store=Ext.StoreMgr.lookup(a);this.store.on({scope:this,beforeload:this.onBeforeLoad,load:this.onLoad,exception:this.collapse});if(this.view){this.view.bindStore(a)}}},reset:function(){if(this.clearFilterOnReset&&this.mode=="local"){this.store.clearFilter()}Ext.form.ComboBox.superclass.reset.call(this)},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()},esc:function(a){this.collapse()},tab:function(a){if(this.forceSelection===true){this.collapse()}else{this.onViewClick(false)}return true},scope:this,doRelay:function(c,b,a){if(a=="down"||this.scope.isExpanded()){var d=Ext.KeyNav.prototype.doRelay.apply(this,arguments);if(!Ext.isIE&&Ext.EventManager.useKeydown){this.scope.fireKey(c)}return d}return true},forceKeyDown:true,defaultEventAction:"stopEvent"});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.enableKeyEvents){this.mon(this.el,"keyup",this.onKeyUp,this)}},onDestroy:function(){if(this.dqTask){this.dqTask.cancel();this.dqTask=null}this.bindStore(null);Ext.destroy(this.resizer,this.view,this.pageTb,this.list);Ext.destroyMembers(this,"hiddenField");Ext.form.ComboBox.superclass.onDestroy.call(this)},fireKey:function(a){if(!this.isExpanded()){Ext.form.ComboBox.superclass.fireKey.call(this,a)}},onResize:function(a,b){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(!isNaN(a)&&this.isVisible()&&this.list){this.doResize(a)}else{this.bufferSize=a}},doResize:function(a){if(!Ext.isDefined(this.listWidth)){var b=Math.max(a,this.minListWidth);this.list.setWidth(b);this.innerList.setWidth(b-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}},onBeforeLoad:function(){if(!this.hasFocus){return}this.innerList.update(this.loadingText?'<div class="loading-indicator">'+this.loadingText+"</div>":"");this.restrictHeight();this.selectedIndex=-1},onLoad:function(){if(!this.hasFocus){return}if(this.store.getCount()>0||this.listEmptyText){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select()}if(this.autoSelect!==false&&!this.selectByValue(this.value,true)){this.select(0,true)}}else{if(this.autoSelect!==false){this.selectNext()}if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay)}}}else{this.collapse()}},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)}}},assertValue:function(){var b=this.getRawValue(),a;if(this.valueField&&Ext.isDefined(this.value)){a=this.findRecord(this.valueField,this.value)}if(!a||a.get(this.displayField)!=b){a=this.findRecord(this.displayField,b)}if(!a&&this.forceSelection){if(b.length>0&&b!=this.emptyText){this.el.dom.value=Ext.value(this.lastSelectionText,"");this.applyEmptyText()}else{this.clearValue()}}else{if(a&&this.valueField){if(this.value==b){return}b=a.get(this.valueField||this.displayField)}this.setValue(b)}},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)}},getName:function(){var a=this.hiddenField;return a&&a.name?a.name:this.hiddenName||Ext.form.ComboBox.superclass.getName.call(this)},getValue:function(){if(this.valueField){return Ext.isDefined(this.value)?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(Ext.isDefined(this.valueNotFoundText)){c=this.valueNotFoundText}}}this.lastSelectionText=c;if(this.hiddenField){this.hiddenField.value=Ext.value(a,"")}Ext.form.ComboBox.superclass.setValue.call(this,c);this.value=a;return this},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],c=this.store,d=c.getAt(a);if(d){this.onSelect(d,a)}else{this.collapse()}if(b!==false){this.el.focus()}},restrictHeight:function(){this.innerList.dom.style.height="";var b=this.innerList.dom,e=this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight,c=Math.max(b.clientHeight,b.offsetHeight,b.scrollHeight),a=this.getPosition()[1]-Ext.getBody().getScroll().top,g=Ext.lib.Dom.getViewHeight()-a-this.getSize().height,d=Math.max(a,g,this.minHeight||0)-this.list.shadowOffset-e-5;c=Math.min(c,d,this.maxHeight);this.innerList.setHeight(c);this.list.beginUpdate();this.list.setHeight(c+e);this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));this.list.endUpdate()},isExpanded:function(){return this.list&&this.list.isVisible()},selectByValue:function(a,c){if(!Ext.isEmpty(a,true)){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(b){var a=b.getKey();if(this.editable!==false&&this.readOnly!==true&&(a==b.BACKSPACE||!b.isSpecialKey())){this.lastKey=a;this.dqTask.delay(this.queryDelay)}Ext.form.ComboBox.superclass.onKeyUp.call(this,b)},validateBlur:function(){return !this.list||!this.list.isVisible()},initQuery:function(){this.doQuery(this.getRawValue())},beforeBlur:function(){this.assertValue()},postBlur:function(){Ext.form.ComboBox.superclass.postBlur.call(this);this.collapse();this.inKeyMode=false},doQuery:function(c,b){c=Ext.isEmpty(c)?"":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={},c=this.store.paramNames;if(this.pageSize){b[c.start]=0;b[c.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(!this.isDestroyed&&!a.within(this.wrap)&&!a.within(this.list)){this.collapse()}},expand:function(){if(this.isExpanded()||!this.hasFocus){return}if(this.title||this.pageSize){this.assetHeight=0;if(this.title){this.assetHeight+=this.header.getHeight()}if(this.pageSize){this.assetHeight+=this.footer.getHeight()}}if(this.bufferSize){this.doResize(this.bufferSize);delete this.bufferSize}this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));this.list.setZIndex(this.getZIndex());this.list.show();if(Ext.isGecko2){this.innerList.setOverflow("auto")}this.mon(Ext.getDoc(),{scope:this,mousewheel:this.collapseIf,mousedown:this.collapseIf});this.fireEvent("expand",this)},onTriggerClick:function(){if(this.readOnly||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,boxLabel:"&#160;",defaultAutoCreate:{tag:"input",type:"checkbox",autocomplete:"off"},actionMode:"wrap",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.fieldLabel){this.el.alignTo(this.wrap,"c-c")}},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.mon(this.el,{scope:this,click:this.onClick,change:this.onClick})},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}if(Ext.isIE&&!Ext.isStrict){this.wrap.repaint()}this.resizeEl=this.positionEl=this.wrap},onDestroy:function(){Ext.destroy(this.wrap);Ext.form.Checkbox.superclass.onDestroy.call(this)},initValue:function(){this.originalValue=this.getValue()},getValue:function(){if(this.rendered){return this.el.dom.checked}return this.checked},onClick:function(){if(this.el.dom.checked!=this.checked){this.setValue(this.el.dom.checked)}},setValue:function(a){var c=this.checked,b=this.inputValue;this.checked=(a===true||a==="true"||a=="1"||(b?a==b:String(a).toLowerCase()=="on"));if(this.rendered){this.el.dom.checked=this.checked;this.el.dom.defaultChecked=this.checked}if(c!=this.checked){this.fireEvent("check",this,this.checked);if(this.handler){this.handler.call(this.scope||this,this,this.checked)}}return this}});Ext.reg("checkbox",Ext.form.Checkbox);Ext.form.CheckboxGroup=Ext.extend(Ext.form.Field,{columns:"auto",vertical:false,allowBlank:true,blankText:"You must select at least one item in this group",defaultType:"checkbox",groupCls:"x-form-check-group",initComponent:function(){this.addEvents("change");this.on("change",this.validate,this);Ext.form.CheckboxGroup.superclass.initComponent.call(this)},onRender:function(k,g){if(!this.el){var q={autoEl:{id:this.id},cls:this.groupCls,layout:"column",renderTo:k,bufferResize:false};var a={xtype:"container",defaultType:this.defaultType,layout:"form",defaults:{hideLabel:true,anchor:"100%"}};if(this.items[0].items){Ext.apply(q,{layoutConfig:{columns:this.items.length},defaults:this.defaults,items:this.items});for(var e=0,n=this.items.length;e<n;e++){Ext.applyIf(this.items[e],a)}}else{var d,o=[];if(typeof this.columns=="string"){this.columns=this.items.length}if(!Ext.isArray(this.columns)){var m=[];for(var e=0;e<this.columns;e++){m.push((100/this.columns)*0.01)}this.columns=m}d=this.columns.length;for(var e=0;e<d;e++){var b=Ext.apply({items:[]},a);b[this.columns[e]<=1?"columnWidth":"width"]=this.columns[e];if(this.defaults){b.defaults=Ext.apply(b.defaults||{},this.defaults)}o.push(b)}if(this.vertical){var s=Math.ceil(this.items.length/d),p=0;for(var e=0,n=this.items.length;e<n;e++){if(e>0&&e%s==0){p++}if(this.items[e].fieldLabel){this.items[e].hideLabel=false}o[p].items.push(this.items[e])}}else{for(var e=0,n=this.items.length;e<n;e++){var r=e%d;if(this.items[e].fieldLabel){this.items[e].hideLabel=false}o[r].items.push(this.items[e])}}Ext.apply(q,{layoutConfig:{columns:d},items:o})}this.panel=new Ext.Container(q);this.panel.ownerCt=this;this.el=this.panel.getEl();if(this.forId&&this.itemCls){var c=this.el.up(this.itemCls).child("label",true);if(c){c.setAttribute("htmlFor",this.forId)}}var h=this.panel.findBy(function(i){return i.isFormField},this);this.items=new Ext.util.MixedCollection();this.items.addAll(h)}Ext.form.CheckboxGroup.superclass.onRender.call(this,k,g)},initValue:function(){if(this.value){this.setValue.apply(this,this.buffered?this.value:[this.value]);delete this.buffered;delete this.value}},afterRender:function(){Ext.form.CheckboxGroup.superclass.afterRender.call(this);this.eachItem(function(a){a.on("check",this.fireChecked,this);a.inGroup=true})},doLayout:function(){if(this.rendered){this.panel.forceLayout=this.ownerCt.forceLayout;this.panel.doLayout()}},fireChecked:function(){var a=[];this.eachItem(function(b){if(b.checked){a.push(b)}});this.fireEvent("change",this,a)},getErrors:function(){var b=Ext.form.CheckboxGroup.superclass.getErrors.apply(this,arguments);if(!this.allowBlank){var a=true;this.eachItem(function(c){if(c.checked){return(a=false)}});if(a){b.push(this.blankText)}}return b},isDirty:function(){if(this.disabled||!this.rendered){return false}var a=false;this.eachItem(function(b){if(b.isDirty()){a=true;return false}});return a},setReadOnly:function(a){if(this.rendered){this.eachItem(function(b){b.setReadOnly(a)})}this.readOnly=a},onDisable:function(){this.eachItem(function(a){a.disable()})},onEnable:function(){this.eachItem(function(a){a.enable()})},onResize:function(a,b){this.panel.setSize(a,b);this.panel.doLayout()},reset:function(){if(this.originalValue){this.eachItem(function(a){if(a.setValue){a.setValue(false);a.originalValue=a.getValue()}});this.resetOriginal=true;this.setValue(this.originalValue);delete this.resetOriginal}else{this.eachItem(function(a){if(a.reset){a.reset()}})}(function(){this.clearInvalid()}).defer(50,this)},setValue:function(){if(this.rendered){this.onSetValue.apply(this,arguments)}else{this.buffered=true;this.value=arguments}return this},onSetValue:function(d,c){if(arguments.length==1){if(Ext.isArray(d)){Ext.each(d,function(h,e){if(Ext.isObject(h)&&h.setValue){h.setValue(true);if(this.resetOriginal===true){h.originalValue=h.getValue()}}else{var g=this.items.itemAt(e);if(g){g.setValue(h)}}},this)}else{if(Ext.isObject(d)){for(var a in d){var b=this.getBox(a);if(b){b.setValue(d[a])}}}else{this.setValueForItem(d)}}}else{var b=this.getBox(d);if(b){b.setValue(c)}}},beforeDestroy:function(){Ext.destroy(this.panel);if(!this.rendered){Ext.destroy(this.items)}Ext.form.CheckboxGroup.superclass.beforeDestroy.call(this)},setValueForItem:function(a){a=String(a).split(",");this.eachItem(function(b){if(a.indexOf(b.inputValue)>-1){b.setValue(true)}})},getBox:function(b){var a=null;this.eachItem(function(c){if(b==c||c.dataIndex==b||c.id==b||c.getName()==b){a=c;return false}});return a},getValue:function(){var a=[];this.eachItem(function(b){if(b.checked){a.push(b)}});return a},eachItem:function(b,a){if(this.items&&this.items.each){this.items.each(b,a||this)}},getRawValue:Ext.emptyFn,setRawValue:Ext.emptyFn});Ext.reg("checkboxgroup",Ext.form.CheckboxGroup);Ext.form.CompositeField=Ext.extend(Ext.form.Field,{defaultMargins:"0 5 0 0",skipLastItemMargin:true,isComposite:true,combineErrors:true,labelConnector:", ",initComponent:function(){var g=[],b=this.items,e;for(var d=0,c=b.length;d<c;d++){e=b[d];if(!Ext.isEmpty(e.ref)){e.ref="../"+e.ref}g.push(e.fieldLabel);Ext.applyIf(e,this.defaults);if(!(d==c-1&&this.skipLastItemMargin)){Ext.applyIf(e,{margins:this.defaultMargins})}}this.fieldLabel=this.fieldLabel||this.buildLabel(g);this.fieldErrors=new Ext.util.MixedCollection(true,function(h){return h.field});this.fieldErrors.on({scope:this,add:this.updateInvalidMark,remove:this.updateInvalidMark,replace:this.updateInvalidMark});Ext.form.CompositeField.superclass.initComponent.apply(this,arguments);this.innerCt=new Ext.Container({layout:"hbox",items:this.items,cls:"x-form-composite",defaultMargins:"0 3 0 0",ownerCt:this});this.innerCt.ownerCt=undefined;var a=this.innerCt.findBy(function(h){return h.isFormField},this);this.items=new Ext.util.MixedCollection();this.items.addAll(a)},onRender:function(c,a){if(!this.el){var d=this.innerCt;d.render(c);this.el=d.getEl();if(this.combineErrors){this.eachItem(function(e){Ext.apply(e,{markInvalid:this.onFieldMarkInvalid.createDelegate(this,[e],0),clearInvalid:this.onFieldClearInvalid.createDelegate(this,[e],0)})})}var b=this.el.parent().parent().child("label",true);if(b){b.setAttribute("for",this.items.items[0].id)}}Ext.form.CompositeField.superclass.onRender.apply(this,arguments)},onFieldMarkInvalid:function(d,c){var b=d.getName(),a={field:b,errorName:d.fieldLabel||b,error:c};this.fieldErrors.replace(b,a);d.el.addClass(d.invalidClass)},onFieldClearInvalid:function(a){this.fieldErrors.removeKey(a.getName());a.el.removeClass(a.invalidClass)},updateInvalidMark:function(){var a=Ext.isIE6&&Ext.isStrict;if(this.fieldErrors.length==0){this.clearInvalid();if(a){this.clearInvalid.defer(50,this)}}else{var b=this.buildCombinedErrorMessage(this.fieldErrors.items);this.sortErrors();this.markInvalid(b);if(a){this.markInvalid(b)}}},validateValue:function(){var a=true;this.eachItem(function(b){if(!b.isValid()){a=false}});return a},buildCombinedErrorMessage:function(e){var d=[],b;for(var c=0,a=e.length;c<a;c++){b=e[c];d.push(String.format("{0}: {1}",b.errorName,b.error))}return d.join("<br />")},sortErrors:function(){var a=this.items;this.fieldErrors.sort("ASC",function(g,d){var c=function(b){return function(i){return i.getName()==b}};var h=a.findIndexBy(c(g.field)),e=a.findIndexBy(c(d.field));return h<e?-1:1})},reset:function(){this.eachItem(function(a){a.reset()});(function(){this.clearInvalid()}).defer(50,this)},clearInvalidChildren:function(){this.eachItem(function(a){a.clearInvalid()})},buildLabel:function(a){return Ext.clean(a).join(this.labelConnector)},isDirty:function(){if(this.disabled||!this.rendered){return false}var a=false;this.eachItem(function(b){if(b.isDirty()){a=true;return false}});return a},eachItem:function(b,a){if(this.items&&this.items.each){this.items.each(b,a||this)}},onResize:function(e,c,a,d){var b=this.innerCt;if(this.rendered&&b.rendered){b.setSize(e,c)}Ext.form.CompositeField.superclass.onResize.apply(this,arguments)},doLayout:function(c,b){if(this.rendered){var a=this.innerCt;a.forceLayout=this.ownerCt.forceLayout;a.doLayout(c,b)}},beforeDestroy:function(){Ext.destroy(this.innerCt);Ext.form.CompositeField.superclass.beforeDestroy.call(this)},setReadOnly:function(a){if(a==undefined){a=true}a=!!a;if(this.rendered){this.eachItem(function(b){b.setReadOnly(a)})}this.readOnly=a},onShow:function(){Ext.form.CompositeField.superclass.onShow.call(this);this.doLayout()},onDisable:function(){this.eachItem(function(a){a.disable()})},onEnable:function(){this.eachItem(function(a){a.enable()})}});Ext.reg("compositefield",Ext.form.CompositeField);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},setValue:function(b){var a,d,c;if(typeof b=="boolean"){Ext.form.Radio.superclass.setValue.call(this,b)}else{if(this.rendered){a=this.getCheckEl();c=a.child("input[name="+this.el.dom.name+"][value="+b+"]",true);if(c){Ext.getCmp(c.id).setValue(true)}}}if(this.rendered&&this.checked){a=a||this.getCheckEl();d=this.getCheckEl().select("input[name="+this.el.dom.name+"]");d.each(function(e){if(e.dom.id!=this.id){Ext.getCmp(e.dom.id).setValue(false)}},this)}return this},getCheckEl:function(){if(this.inGroup){return this.el.up(".x-form-radio-group")}return this.el.up("form")||Ext.getBody()}});Ext.reg("radio",Ext.form.Radio);Ext.form.RadioGroup=Ext.extend(Ext.form.CheckboxGroup,{allowBlank:true,blankText:"You must select one item in this group",defaultType:"radio",groupCls:"x-form-radio-group",getValue:function(){var a=null;this.eachItem(function(b){if(b.checked){a=b;return false}});return a},onSetValue:function(c,b){if(arguments.length>1){var a=this.getBox(c);if(a){a.setValue(b);if(a.checked){this.eachItem(function(d){if(d!==a){d.setValue(false)}})}}}else{this.setValueForItem(c)}},setValueForItem:function(a){a=String(a).split(",")[0];this.eachItem(function(b){b.setValue(a==b.inputValue)})},fireChecked:function(){if(!this.checkTask){this.checkTask=new Ext.util.DelayedTask(this.bufferChecked,this)}this.checkTask.delay(10)},bufferChecked:function(){var a=null;this.eachItem(function(b){if(b.checked){a=b;return false}});this.fireEvent("change",this,a)},onDestroy:function(){if(this.checkTask){this.checkTask.cancel();this.checkTask=null}Ext.form.RadioGroup.superclass.onDestroy.call(this)}});Ext.reg("radiogroup",Ext.form.RadioGroup);Ext.form.Hidden=Ext.extend(Ext.form.Field,{inputType:"hidden",shouldLayout:false,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=Ext.extend(Ext.util.Observable,{constructor:function(b,a){Ext.apply(this,a);if(Ext.isString(this.paramOrder)){this.paramOrder=this.paramOrder.split(/[\s,|]/)}this.items=new Ext.util.MixedCollection(false,function(c){return c.getItemId()});this.addEvents("beforeaction","actionfailed","actioncomplete");if(b){this.initEl(b)}Ext.form.BasicForm.superclass.constructor.call(this)},timeout:30,paramOrder:undefined,paramsAsHash:false,waitTitle:"Please Wait...",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(a){if(a!==true){this.items.each(function(b){Ext.destroy(b)});Ext.destroy(this.el)}this.items.clear();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(Ext.isString(b)){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){b=b||{};if(this.standardSubmit){var a=b.clientValidation===false||this.isValid();if(a){var c=this.el.dom;if(this.url&&Ext.isEmpty(c.action)){c.action=this.url}c.submit()}return a}var d=String.format("{0}submit",this.api?"direct":"");this.doAction(d,b);return this},load:function(a){var b=String.format("{0}load",this.api?"direct":"");this.doAction(b,a);return this},updateRecord:function(b){b.beginEdit();var a=b.fields,d,c;a.each(function(e){d=this.findField(e.name);if(d){c=d.getValue();if(typeof c!=undefined&&c.getGroupValue){c=c.getGroupValue()}else{if(d.eachItem){c=[];d.eachItem(function(g){c.push(g.getValue())})}}b.set(e.name,c)}},this);b.endEdit();return this},loadRecord:function(a){this.setValues(a.data);return this},beforeAction:function(a){this.items.each(function(c){if(c.isFormField&&c.syncValue){c.syncValue()}});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)}}}},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(c){var b=this.items.get(c);if(!Ext.isObject(b)){var a=function(d){if(d.isFormField){if(d.dataIndex==c||d.id==c||d.getName()==c){b=d;return false}else{if(d.isComposite){return d.items.each(a)}else{if(d instanceof Ext.form.CheckboxGroup&&d.rendered){return d.eachItem(a)}}}}};this.items.each(a)}return b||null},markInvalid:function(h){if(Ext.isArray(h)){for(var c=0,a=h.length;c<a;c++){var b=h[c];var d=this.findField(b.id);if(d){d.markInvalid(b.msg)}}}else{var e,g;for(g in h){if(!Ext.isFunction(h[g])&&(e=this.findField(g))){e.markInvalid(h[g])}}}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 g,h;for(h in c){if(!Ext.isFunction(c[h])&&(g=this.findField(h))){g.setValue(c[h]);if(this.trackResetOnLoad){g.originalValue=g.getValue()}}}}return this},getValues:function(b){var a=Ext.lib.Ajax.serializeForm(this.el.dom);if(b===true){return a}return Ext.urlDecode(a)},getFieldValues:function(a){var d={},e,b,c;this.items.each(function(g){if(!g.disabled&&(a!==true||g.isDirty())){e=g.getName();b=d[e];c=g.getValue();if(Ext.isDefined(b)){if(Ext.isArray(b)){d[e].push(c)}else{d[e]=[b,c]}}else{d[e]=c}}});return d},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},cleanDestroyed:function(){this.items.filterBy(function(a){return !!a.isDestroyed}).each(this.remove,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},callFieldMethod:function(b,a){a=a||[];this.items.each(function(c){if(Ext.isFunction(c[b])){c[b].apply(c,a)}});return this}});Ext.BasicForm=Ext.form.BasicForm;Ext.FormPanel=Ext.extend(Ext.Panel,{minButtonWidth:75,labelAlign:"left",monitorValid:false,monitorPoll:200,layout:"form",initComponent:function(){this.form=this.createForm();Ext.FormPanel.superclass.initComponent.call(this);this.bodyCfg={tag:"form",cls:this.baseCls+"-body",method:this.method||"POST",id:this.formId||Ext.id()};if(this.fileUpload){this.bodyCfg.enctype="multipart/form-data"}this.initItems();this.addEvents("clientvalidation");this.relayEvents(this.form,["beforeaction","actionfailed","actioncomplete"])},createForm:function(){var a=Ext.applyIf({listeners:{}},this.initialConfig);return new Ext.form.BasicForm(null,a)},initFields:function(){var c=this.form;var a=this;var b=function(d){if(a.isField(d)){c.add(d)}else{if(d.findBy&&d!=a){a.applySettings(d);if(d.items&&d.items.each){d.items.each(b,this)}}}};this.items.each(b,this)},applySettings:function(b){var a=b.ownerCt;Ext.applyIf(b,{labelAlign:a.labelAlign,labelWidth:a.labelWidth,itemCls:a.itemCls})},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);this.form.initEl(this.body)},beforeDestroy:function(){this.stopMonitoring();this.form.destroy(true);Ext.FormPanel.superclass.beforeDestroy.call(this)},isField:function(a){return !!a.setValue&&!!a.getValue&&!!a.markInvalid&&!!a.clearInvalid},initEvents:function(){Ext.FormPanel.superclass.initEvents.call(this);this.on({scope:this,add:this.onAddEvent,remove:this.onRemoveEvent});if(this.monitorValid){this.startMonitoring()}},onAdd:function(a){Ext.FormPanel.superclass.onAdd.call(this,a);this.processAdd(a)},onAddEvent:function(a,b){if(a!==this){this.processAdd(b)}},processAdd:function(a){if(this.isField(a)){this.form.add(a)}else{if(a.findBy){this.applySettings(a);this.form.add.apply(this.form,a.findBy(this.isField))}}},onRemove:function(a){Ext.FormPanel.superclass.onRemove.call(this,a);this.processRemove(a)},onRemoveEvent:function(a,b){if(a!==this){this.processRemove(b)}},processRemove:function(a){if(!this.destroying){if(this.isField(a)){this.form.remove(a)}else{if(a.findBy){Ext.each(a.findBy(this.isField),this.form.remove,this.form);this.form.cleanDestroyed()}}}},startMonitoring:function(){if(!this.validTask){this.validTask=new Ext.util.TaskRunner();this.validTask.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this})}},stopMonitoring:function(){if(this.validTask){this.validTask.stopAll();this.validTask=null}},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(){var e=true;this.form.items.each(function(g){if(!g.isValid(true)){e=false;return false}});if(this.fbar){var b=this.fbar.items.items;for(var d=0,a=b.length;d<a;d++){var c=b[d];if(c.formBind===true&&c.disabled===e){c.setDisabled(!e)}}}this.fireEvent("clientvalidation",this,e)}});Ext.reg("form",Ext.FormPanel);Ext.form.FormPanel=Ext.FormPanel;Ext.form.FieldSet=Ext.extend(Ext.Panel,{baseCls:"x-fieldset",layout:"form",animCollapse:false,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=this.baseCls+"-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.mon(this.checkbox,"click",this.onCheckClick,this)}},onCollapse:function(a,b){if(this.checkbox){this.checkbox.dom.checked=false}Ext.form.FieldSet.superclass.onCollapse.call(this,a,b)},onExpand:function(a,b){if(this.checkbox){this.checkbox.dom.checked=true}Ext.form.FieldSet.superclass.onExpand.call(this,a,b)},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",defaultValue:(Ext.isOpera||Ext.isIE6)?"&#160;":"&#8203;",actionMode:"wrap",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");Ext.form.HtmlEditor.superclass.initComponent.call(this)},createFontOptions:function(){var d=[],b=this.fontFamilies,c,g;for(var e=0,a=b.length;e<a;e++){c=b[e];g=c.toLowerCase();d.push('<option value="',g,'" style="font-family:',c,';"',(this.defaultFont==g?' selected="true">':">"),c,"</option>")}return d.join("")},createToolbar:function(e){var c=[];var a=Ext.QuickTips&&Ext.QuickTips.isEnabled();function d(k,h,i){return{itemId:k,cls:"x-btn-icon",iconCls:"x-edit-"+k,enableToggle:h!==false,scope:e,handler:i||e.relayBtnCmd,clickEvent:"mousedown",tooltip:a?e.buttonTips[k]||undefined:undefined,overflowText:e.buttonTips[k].title||undefined,tabIndex:-1}}if(this.enableFont&&!Ext.isSafari2){var g=new Ext.Toolbar.Item({autoEl:{tag:"select",cls:"x-font-select",html:this.createFontOptions()}});c.push(g,"-")}if(this.enableFormat){c.push(d("bold"),d("italic"),d("underline"))}if(this.enableFontSize){c.push("-",d("increasefontsize",false,this.adjustFont),d("decreasefontsize",false,this.adjustFont))}if(this.enableColors){c.push("-",{itemId:"forecolor",cls:"x-btn-icon",iconCls:"x-edit-forecolor",clickEvent:"mousedown",tooltip:a?e.buttonTips.forecolor||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,listeners:{scope:this,select:function(i,h){this.execCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+h:h);this.deferFocus()}},clickEvent:"mousedown"})},{itemId:"backcolor",cls:"x-btn-icon",iconCls:"x-edit-backcolor",clickEvent:"mousedown",tooltip:a?e.buttonTips.backcolor||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,listeners:{scope:this,select:function(i,h){if(Ext.isGecko){this.execCmd("useCSS",false);this.execCmd("hilitecolor",h);this.execCmd("useCSS",true);this.deferFocus()}else{this.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE?"#"+h:h);this.deferFocus()}}},clickEvent:"mousedown"})})}if(this.enableAlignments){c.push("-",d("justifyleft"),d("justifycenter"),d("justifyright"))}if(!Ext.isSafari2){if(this.enableLinks){c.push("-",d("createlink",false,this.createLink))}if(this.enableLists){c.push("-",d("insertorderedlist"),d("insertunorderedlist"))}if(this.enableSourceEdit){c.push("-",d("sourceedit",true,function(h){this.toggleSourceEdit(!this.sourceEditMode)}))}}var b=new Ext.Toolbar({renderTo:this.wrap.dom.firstChild,items:c});if(g){this.fontSelect=g.el;this.mon(this.fontSelect,"change",function(){var h=this.fontSelect.dom.value;this.relayCmd("fontname",h);this.deferFocus()},this)}this.mon(b.el,"click",function(h){h.preventDefault()});this.tb=b;this.tb.doLayout()},onDisable:function(){this.wrap.mask();Ext.form.HtmlEditor.superclass.onDisable.call(this)},onEnable:function(){this.wrap.unmask();Ext.form.HtmlEditor.superclass.onEnable.call(this)},setReadOnly:function(b){Ext.form.HtmlEditor.superclass.setReadOnly.call(this,b);if(this.initialized){if(Ext.isIE){this.getEditorBody().contentEditable=!b}else{this.setDesignMode(!b)}var a=this.getEditorBody();if(a){a.style.cursor=this.readOnly?"default":"text"}this.disableItems(b)}},getDocMarkup:function(){var a=Ext.fly(this.iframe).getHeight()-this.iframePad*2;return String.format('<html><head><style type="text/css">body{border: 0; margin: 0; padding: {0}px; height: {1}px; cursor: text}</style></head><body></body></html>',this.iframePad,a)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return Ext.isIE?this.getWin().document:(this.iframe.contentDocument||this.getWin().document)},getWin:function(){return Ext.isIE?this.iframe.contentWindow:window.frames[this.iframe.name]},onRender:function(b,a){Ext.form.HtmlEditor.superclass.onRender.call(this,b,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.disableItems(true);this.tb.doLayout();this.createIFrame();if(!this.width){var c=this.el.getSize();this.setSize(c.width,this.height||c.height)}this.resizeEl=this.positionEl=this.wrap},createIFrame:function(){var a=document.createElement("iframe");a.name=Ext.id();a.frameBorder="0";a.style.overflow="auto";a.src=Ext.SSL_SECURE_URL;this.wrap.dom.appendChild(a);this.iframe=a;this.monitorTask=Ext.TaskMgr.start({run:this.checkDesignMode,scope:this,interval:100})},initFrame:function(){Ext.TaskMgr.stop(this.monitorTask);var b=this.getDoc();this.win=this.getWin();b.open();b.write(this.getDocMarkup());b.close();var a={run:function(){var c=this.getDoc();if(c.body||c.readyState=="complete"){Ext.TaskMgr.stop(a);this.setDesignMode(true);this.initEditor.defer(10,this)}},interval:10,duration:10000,scope:this};Ext.TaskMgr.start(a)},checkDesignMode:function(){if(this.wrap&&this.wrap.dom.offsetWidth){var a=this.getDoc();if(!a){return}if(!a.editorInitialized||this.getDesignMode()!="on"){this.initFrame()}}},setDesignMode:function(b){var a=this.getDoc();if(a){if(this.readOnly){b=false}a.designMode=(/on|true/i).test(String(b).toLowerCase())?"on":"off"}},getDesignMode:function(){var a=this.getDoc();if(!a){return""}return String(a.designMode).toLowerCase()},disableItems:function(a){if(this.fontSelect){this.fontSelect.dom.disabled=a}this.tb.items.each(function(b){if(b.getItemId()!="sourceedit"){b.setDisabled(a)}})},onResize:function(b,c){Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(Ext.isNumber(b)){var e=b-this.wrap.getFrameWidth("lr");this.el.setWidth(e);this.tb.setWidth(e);this.iframe.style.width=Math.max(e,0)+"px"}if(Ext.isNumber(c)){var a=c-this.wrap.getFrameWidth("tb")-this.tb.el.getHeight();this.el.setHeight(a);this.iframe.style.height=Math.max(a,0)+"px";var d=this.getEditorBody();if(d){d.style.height=Math.max((a-(this.iframePad*2)),0)+"px"}}}},toggleSourceEdit:function(b){var d,a;if(b===undefined){b=!this.sourceEditMode}this.sourceEditMode=b===true;var c=this.tb.getComponent("sourceedit");if(c.pressed!==this.sourceEditMode){c.toggle(this.sourceEditMode);if(!c.xtbHidden){return}}if(this.sourceEditMode){this.previousSize=this.getSize();d=Ext.get(this.iframe).getHeight();this.disableItems(true);this.syncValue();this.iframe.className="x-hidden";this.el.removeClass("x-hidden");this.el.dom.removeAttribute("tabIndex");this.el.focus();this.el.dom.style.height=d+"px"}else{a=parseInt(this.el.dom.style.height,10);if(this.initialized){this.disableItems(this.readOnly)}this.pushValue();this.iframe.className="";this.el.addClass("x-hidden");this.el.dom.setAttribute("tabIndex",-1);this.deferFocus();this.setSize(this.previousSize);delete this.previousSize;this.iframe.style.height=a+"px"}this.fireEvent("editmodechange",this,this.sourceEditMode)},createLink:function(){var a=prompt(this.createLinkText,this.defaultLinkValue);if(a&&a!="http://"){this.relayCmd("createlink",a)}},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();return this},cleanHtml:function(a){a=String(a);if(Ext.isWebKit){a=a.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")}if(a.charCodeAt(0)==this.defaultValue.replace(/\D/g,"")){a=a.substring(1)}return a},syncValue:function(){if(this.initialized){var d=this.getEditorBody();var c=d.innerHTML;if(Ext.isWebKit){var b=d.getAttribute("style");var a=b.match(/text-align:(.*?);/i);if(a&&a[1]){c='<div style="'+a[0]+'">'+c+"</div>"}}c=this.cleanHtml(c);if(this.fireEvent("beforesync",this,c)!==false){this.el.dom.value=c;this.fireEvent("sync",this,c)}}},getValue:function(){this[this.sourceEditMode?"pushValue":"syncValue"]();return Ext.form.HtmlEditor.superclass.getValue.call(this)},pushValue:function(){if(this.initialized){var a=this.el.dom.value;if(!this.activated&&a.length<1){a=this.defaultValue}if(this.fireEvent("beforepush",this,a)!==false){this.getEditorBody().innerHTML=a;if(Ext.isGecko){this.setDesignMode(false);this.setDesignMode(true)}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(){try{var c=this.getEditorBody(),a=this.el.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),g,b;a["background-attachment"]="fixed";c.bgProperties="fixed";Ext.DomHelper.applyStyles(c,a);g=this.getDoc();if(g){try{Ext.EventManager.removeAll(g)}catch(d){}}b=this.onEditorEvent.createDelegate(this);Ext.EventManager.on(g,{mousedown:b,dblclick:b,click:b,keyup:b,buffer:100});if(Ext.isGecko){Ext.EventManager.on(g,"keypress",this.applyCommand,this)}if(Ext.isIE||Ext.isWebKit||Ext.isOpera){Ext.EventManager.on(g,"keydown",this.fixKeys,this)}g.editorInitialized=true;this.initialized=true;this.pushValue();this.setReadOnly(this.readOnly);this.fireEvent("initialize",this)}catch(d){}},beforeDestroy:function(){if(this.monitorTask){Ext.TaskMgr.stop(this.monitorTask)}if(this.rendered){Ext.destroy(this.tb);var b=this.getDoc();if(b){try{Ext.EventManager.removeAll(b);for(var c in b){delete b[c]}}catch(a){}}if(this.wrap){this.wrap.dom.innerHTML="";this.wrap.remove()}}Ext.form.HtmlEditor.superclass.beforeDestroy.call(this)},onFirstFocus:function(){this.activated=true;this.disableItems(this.readOnly);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 d=b.getItemId()=="increasefontsize"?1:-1,c=this.getDoc(),a=parseInt(c.queryCommandValue("FontSize")||2,10);if((Ext.isSafari&&!Ext.isSafari2)||Ext.isChrome||Ext.isAir){if(a<=10){a=1+d}else{if(a<=13){a=2+d}else{if(a<=16){a=3+d}else{if(a<=18){a=4+d}else{if(a<=24){a=5+d}else{a=6+d}}}}}a=a.constrain(1,6)}else{if(Ext.isSafari){d*=2}a=Math.max(1,a+d)+(Ext.isSafari?"px":0)}this.execCmd("FontSize",a)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){if(this.readOnly){return}if(!this.activated){this.onFirstFocus();return}var b=this.tb.items.map,c=this.getDoc();if(this.enableFont&&!Ext.isSafari2){var a=(c.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.isSafari2&&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.getItemId())},relayCmd:function(b,a){(function(){this.focus();this.execCmd(b,a);this.updateToolbar()}).defer(10,this)},execCmd:function(b,a){var c=this.getDoc();c.execCommand(b,false,a===undefined?null:a);this.syncValue()},applyCommand:function(b){if(b.ctrlKey){var d=b.getCharCode(),a;if(d>0){d=String.fromCharCode(d);switch(d){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(c){if(!this.activated){return}if(Ext.isIE){this.win.focus();var b=this.getDoc(),a=b.selection.createRange();if(a){a.pasteHTML(c);this.syncValue();this.deferFocus()}}else{this.win.focus();this.execCmd("InsertHTML",c);this.deferFocus()}},fixKeys:function(){if(Ext.isIE){return function(g){var a=g.getKey(),d=this.getDoc(),b;if(a==g.TAB){g.stopEvent();b=d.selection.createRange();if(b){b.collapse(true);b.pasteHTML("&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}else{if(a==g.ENTER){b=d.selection.createRange();if(b){var c=b.parentElement();if(!c||c.tagName.toLowerCase()!="li"){g.stopEvent();b.pasteHTML("<br />");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","&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}}else{if(Ext.isWebKit){return function(b){var a=b.getKey();if(a==b.TAB){b.stopEvent();this.execCmd("InsertText","\t");this.deferFocus()}else{if(a==b.ENTER){b.stopEvent();this.execCmd("InsertHtml","<br /><br />");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:undefined,maxValue:undefined,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|gi a|hi a|giA|hiA|gi A|hi A",increment:15,mode:"local",triggerAction:"all",typeAhead:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",initComponent:function(){if(Ext.isDefined(this.minValue)){this.setMinValue(this.minValue,true)}if(Ext.isDefined(this.maxValue)){this.setMaxValue(this.maxValue,true)}if(!this.store){this.generateStore(true)}Ext.form.TimeField.superclass.initComponent.call(this)},setMinValue:function(b,a){this.setLimit(b,true,a);return this},setMaxValue:function(b,a){this.setLimit(b,false,a);return this},generateStore:function(b){var c=this.minValue||new Date(this.initDate).clearTime(),a=this.maxValue||new Date(this.initDate).clearTime().add("mi",(24*60)-1),d=[];while(c<=a){d.push(c.dateFormat(this.format));c=c.add("mi",this.increment)}this.bindStore(d,b)},setLimit:function(b,g,a){var e;if(Ext.isString(b)){e=this.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){var c=new Date(this.initDate).clearTime();c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());this[g?"minValue":"maxValue"]=c;if(!a){this.generateStore()}}},getValue:function(){var a=Ext.form.TimeField.superclass.getValue.call(this);return this.formatDate(this.parseDate(a))||""},setValue:function(a){return Ext.form.TimeField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))},validateValue:Ext.form.DateField.prototype.validateValue,formatDate:Ext.form.DateField.prototype.formatDate,parseDate:function(h){if(!h||Ext.isDate(h)){return h}var k=this.initDate+" ",g=this.initDateFormat+" ",b=Date.parseDate(k+h,g+this.format),c=this.altFormats;if(!b&&c){if(!this.altFormatsArray){this.altFormatsArray=c.split("|")}for(var e=0,d=this.altFormatsArray,a=d.length;e<a&&!b;e++){b=Date.parseDate(k+h,g+d[e])}}return b}});Ext.reg("timefield",Ext.form.TimeField);Ext.form.SliderField=Ext.extend(Ext.form.Field,{useTips:true,tipText:null,actionMode:"wrap",initComponent:function(){var b=Ext.copyTo({id:this.id+"-slider"},this.initialConfig,["vertical","minValue","maxValue","decimalPrecision","keyIncrement","increment","clickToChange","animate"]);if(this.useTips){var a=this.tipText?{getText:this.tipText}:{};b.plugins=[new Ext.slider.Tip(a)]}this.slider=new Ext.Slider(b);Ext.form.SliderField.superclass.initComponent.call(this)},onRender:function(b,a){this.autoCreate={id:this.id,name:this.name,type:"hidden",tag:"input"};Ext.form.SliderField.superclass.onRender.call(this,b,a);this.wrap=this.el.wrap({cls:"x-form-field-wrap"});this.resizeEl=this.positionEl=this.wrap;this.slider.render(this.wrap)},onResize:function(b,c,d,a){Ext.form.SliderField.superclass.onResize.call(this,b,c,d,a);this.slider.setSize(b,c)},initEvents:function(){Ext.form.SliderField.superclass.initEvents.call(this);this.slider.on("change",this.onChange,this)},onChange:function(b,a){this.setValue(a,undefined,true)},onEnable:function(){Ext.form.SliderField.superclass.onEnable.call(this);this.slider.enable()},onDisable:function(){Ext.form.SliderField.superclass.onDisable.call(this);this.slider.disable()},beforeDestroy:function(){Ext.destroy(this.slider);Ext.form.SliderField.superclass.beforeDestroy.call(this)},alignErrorIcon:function(){this.errorIcon.alignTo(this.slider.el,"tl-tr",[2,0])},setMinValue:function(a){this.slider.setMinValue(a);return this},setMaxValue:function(a){this.slider.setMaxValue(a);return this},setValue:function(c,b,a){if(!a){this.slider.setValue(c,b)}return Ext.form.SliderField.superclass.setValue.call(this,this.slider.getValue())},getValue:function(){return this.slider.getValue()}});Ext.reg("sliderfield",Ext.form.SliderField);Ext.form.Label=Ext.extend(Ext.BoxComponent,{onRender:function(b,a){if(!this.el){this.el=document.createElement("label");this.el.id=this.getId();this.el.innerHTML=this.text?Ext.util.Format.htmlEncode(this.text):(this.html||"");if(this.forId){this.el.setAttribute("for",this.forId)}}Ext.form.Label.superclass.onRender.call(this,b,a)},setText:function(a,b){var c=b===false;this[!c?"text":"html"]=a;delete this[c?"text":"html"];if(this.rendered){this.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(a):a}return this}});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&&!a.responseXML){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=Ext.urlAppend(a,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 e=this.options,g=this.getMethod(),d=g=="GET";if(e.clientValidation===false||this.form.isValid()){if(e.submitEmptyText===false){var a=this.form.items,c=[],b=function(h){if(h.el.getValue()==h.emptyText){c.push(h);h.el.dom.value=""}if(h.isComposite&&h.rendered){h.items.each(b)}};a.each(b)}Ext.Ajax.request(Ext.apply(this.createCallback(e),{form:this.form.el.dom,url:this.getUrl(d),method:g,headers:e.headers,params:!d?this.getParams():null,isUpload:this.form.fileUpload}));if(e.submitEmptyText===false){Ext.each(c,function(h){if(h.applyEmptyText){h.applyEmptyText()}})}}else{if(e.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 g=[];if(b.records){for(var d=0,a=b.records.length;d<a;d++){var e=b.records[d];g[d]=e.data}}if(g.length<1){g=null}return{success:b.success,errors:g}}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),headers:this.options.headers,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.DirectLoad=Ext.extend(Ext.form.Action.Load,{constructor:function(b,a){Ext.form.Action.DirectLoad.superclass.constructor.call(this,b,a)},type:"directload",run:function(){var a=this.getParams();a.push(this.success,this);this.form.api.load.apply(window,a)},getParams:function(){var c=[],h={};var e=this.form.baseParams;var g=this.options.params;Ext.apply(h,g,e);var b=this.form.paramOrder;if(b){for(var d=0,a=b.length;d<a;d++){c.push(h[b[d]])}}else{if(this.form.paramsAsHash){c.push(h)}}return c},processResponse:function(a){this.result=a;return a},success:function(a,b){if(b.type==Ext.Direct.exceptions.SERVER){a={}}Ext.form.Action.DirectLoad.superclass.success.call(this,a)}});Ext.form.Action.DirectSubmit=Ext.extend(Ext.form.Action.Submit,{constructor:function(b,a){Ext.form.Action.DirectSubmit.superclass.constructor.call(this,b,a)},type:"directsubmit",run:function(){var a=this.options;if(a.clientValidation===false||this.form.isValid()){this.success.params=this.getParams();this.form.api.submit(this.form.el.dom,this.success,this)}else{if(a.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false)}}},getParams:function(){var c={};var a=this.form.baseParams;var b=this.options.params;Ext.apply(c,b,a);return c},processResponse:function(a){this.result=a;return a},success:function(a,b){if(b.type==Ext.Direct.exceptions.SERVER){a={}}Ext.form.Action.DirectSubmit.superclass.success.call(this,a)}});Ext.form.Action.ACTION_TYPES={load:Ext.form.Action.Load,submit:Ext.form.Action.Submit,directload:Ext.form.Action.DirectLoad,directsubmit:Ext.form.Action.DirectSubmit};Ext.form.VTypes=function(){var c=/^[a-zA-Z_]+$/,d=/^[a-zA-Z0-9_]+$/,b=/^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,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@example.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.example.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,{autoExpandColumn:false,autoExpandMax:1000,autoExpandMin:50,columnLines:false,ddText:"{0} selected row{1}",deferRowRender:true,enableColumnHide:true,enableColumnMove:true,enableDragDrop:false,enableHdMenu:true,loadMask:false,minColumnWidth:25,stripeRows:false,trackMouseOver:true,stateEvents:["columnmove","columnresize","sortchange","groupchange"],view:null,bubbleEvents:[],rendered:false,viewReady:false,initComponent:function(){Ext.grid.GridPanel.superclass.initComponent.call(this);if(this.columnLines){this.cls=(this.cls||"")+" x-grid-with-col-lines"}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","groupmousedown","rowbodymousedown","containermousedown","cellclick","celldblclick","rowclick","rowdblclick","headerclick","headerdblclick","groupclick","groupdblclick","containerclick","containerdblclick","rowbodyclick","rowbodydblclick","rowcontextmenu","cellcontextmenu","headercontextmenu","groupcontextmenu","containercontextmenu","rowbodycontextmenu","bodyscroll","columnresize","columnmove","sortchange","groupchange","reconfigure","viewready")},onRender:function(d,a){Ext.grid.GridPanel.superclass.onRender.apply(this,arguments);var e=this.getGridEl();this.el.addClass("x-grid-panel");this.mon(e,{scope:this,mousedown:this.onMouseDown,click:this.onClick,dblclick:this.onDblClick,contextmenu:this.onContextMenu});this.relayEvents(e,["mousedown","mouseup","mouseover","mouseout","keypress","keydown"]);var b=this.getView();b.init(this);b.render();this.getSelectionModel().init(this)},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.mon(this.colModel,"hiddenchange",this.saveState,this,{delay:100})},applyState:function(a){var l=this.colModel,g=a.columns,k=this.store,n,h,m;if(g){for(var d=0,e=g.length;d<e;d++){n=g[d];h=l.getColumnById(n.id);if(h){m=l.getIndexById(n.id);l.setState(m,{hidden:n.hidden,width:n.width,sortable:n.sortable});if(m!=d){l.moveColumn(m,d)}}}}if(k){n=a.sort;if(n){k[k.remoteSort?"setDefaultSort":"sort"](n.field,n.direction)}n=a.group;if(k.groupBy){if(n){k.groupBy(n)}else{k.clearGrouping()}}}var b=Ext.apply({},a);delete b.columns;delete b.sort;Ext.grid.GridPanel.superclass.applyState.call(this,b)},getState:function(){var g={columns:[]},b=this.store,e,a;for(var d=0,h;(h=this.colModel.config[d]);d++){g.columns[d]={id:h.id,width:h.width};if(h.hidden){g.columns[d].hidden=true}if(h.sortable){g.columns[d].sortable=true}}if(b){e=b.getSortState();if(e){g.sort=e}if(b.getGroupState){a=b.getGroupState();if(a){g.group=a}}}return g},afterRender:function(){Ext.grid.GridPanel.superclass.afterRender.call(this);var a=this.view;this.on("bodyresize",a.layout,a);a.layout(true);if(this.deferRowRender){if(!this.deferRowRenderTask){this.deferRowRenderTask=new Ext.util.DelayedTask(a.afterRender,this.view)}this.deferRowRenderTask.delay(10)}else{a.afterRender()}this.viewReady=true},reconfigure:function(a,b){var c=this.rendered;if(c){if(this.loadMask){this.loadMask.destroy();this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({},{store:a},this.initialConfig.loadMask))}}if(this.view){this.view.initData(a,b)}this.store=a;this.colModel=b;if(c){this.view.refresh(true)}this.fireEvent("reconfigure",this,a,b)},onDestroy:function(){if(this.deferRowRenderTask&&this.deferRowRenderTask.cancel){this.deferRowRenderTask.cancel()}if(this.rendered){Ext.destroy(this.view,this.loadMask)}else{if(this.store&&this.store.autoDestroy){this.store.destroy()}}Ext.destroy(this.colModel,this.selModel);this.store=this.selModel=this.colModel=this.view=this.loadMask=null;Ext.grid.GridPanel.superclass.onDestroy.call(this)},processEvent:function(a,b){this.view.processEvent(a,b)},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(l,c,b,e,k){var i=this.colModel,g=i.getColumnCount(),a=this.store,h=a.getCount(),d=true;if(b<0){if(c<0){l--;d=false}while(l>=0){if(!d){c=g-1}d=false;while(c>=0){if(e.call(k||this,l,c,i)===true){return[l,c]}c--}l--}}else{if(c>=g){l++;d=false}while(l<h){if(!d){c=0}d=false;while(c<g){if(e.call(k||this,l,c,i)===true){return[l,c]}c++}l++}}return null},getGridEl:function(){return this.body},stopEditing:Ext.emptyFn,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.PivotGrid=Ext.extend(Ext.grid.GridPanel,{aggregator:"sum",renderer:undefined,initComponent:function(){Ext.grid.PivotGrid.superclass.initComponent.apply(this,arguments);this.initAxes();this.enableColumnResize=false;this.viewConfig=Ext.apply(this.viewConfig||{},{forceFit:true});this.colModel=new Ext.grid.ColumnModel({})},getAggregator:function(){if(typeof this.aggregator=="string"){return Ext.grid.PivotAggregatorMgr.types[this.aggregator]}else{return this.aggregator}},setAggregator:function(a){this.aggregator=a},setMeasure:function(a){this.measure=a},setLeftAxis:function(b,a){this.leftAxis=b;if(a){this.view.refresh()}},setTopAxis:function(b,a){this.topAxis=b;if(a){this.view.refresh()}},initAxes:function(){var a=Ext.grid.PivotAxis;if(!(this.leftAxis instanceof a)){this.setLeftAxis(new a({orientation:"vertical",dimensions:this.leftAxis||[],store:this.store}))}if(!(this.topAxis instanceof a)){this.setTopAxis(new a({orientation:"horizontal",dimensions:this.topAxis||[],store:this.store}))}},extractData:function(){var c=this.store.data.items,s=c.length,q=[],h,g,e,d;if(s==0){return[]}var l=this.leftAxis.getTuples(),o=l.length,m=this.topAxis.getTuples(),a=m.length,b=this.getAggregator();for(g=0;g<s;g++){h=c[g];for(e=0;e<o;e++){q[e]=q[e]||[];if(l[e].matcher(h)===true){for(d=0;d<a;d++){q[e][d]=q[e][d]||[];if(m[d].matcher(h)){q[e][d].push(h)}}}}}var n=q.length,p,r;for(g=0;g<n;g++){r=q[g];p=r.length;for(e=0;e<p;e++){q[g][e]=b(q[g][e],this.measure)}}return q},getView:function(){if(!this.view){this.view=new Ext.grid.PivotGridView(this.viewConfig)}return this.view}});Ext.reg("pivotgrid",Ext.grid.PivotGrid);Ext.grid.PivotAggregatorMgr=new Ext.AbstractManager();Ext.grid.PivotAggregatorMgr.registerType("sum",function(a,c){var e=a.length,d=0,b;for(b=0;b<e;b++){d+=a[b].get(c)}return d});Ext.grid.PivotAggregatorMgr.registerType("avg",function(a,c){var e=a.length,d=0,b;for(b=0;b<e;b++){d+=a[b].get(c)}return(d/e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("min",function(a,c){var e=[],d=a.length,b;for(b=0;b<d;b++){e.push(a[b].get(c))}return Math.min.apply(this,e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("max",function(a,c){var e=[],d=a.length,b;for(b=0;b<d;b++){e.push(a[b].get(c))}return Math.max.apply(this,e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("count",function(a,b){return a.length});Ext.grid.GridView=Ext.extend(Ext.util.Observable,{deferEmptyText:true,scrollOffset:undefined,autoFill:false,forceFit:false,sortClasses:["sort-asc","sort-desc"],sortAscText:"Sort Ascending",sortDescText:"Sort Descending",columnsText:"Columns",selectedRowClass:"x-grid3-row-selected",borderWidth:2,tdClass:"x-grid3-cell",hdCls:"x-grid3-hd",markDirty:true,cellSelectorDepth:4,rowSelectorDepth:10,rowBodySelectorDepth:10,cellSelector:"td.x-grid3-cell",rowSelector:"div.x-grid3-row",rowBodySelector:"div.x-grid3-row-body",firstRowCls:"x-grid3-row-first",lastRowCls:"x-grid3-row-last",rowClsRe:/(?:^|\s+)x-grid3-row-(first|last|alt)(?:\s+|$)/g,headerMenuOpenCls:"x-grid3-hd-menu-open",rowOverCls:"x-grid3-row-over",constructor:function(a){Ext.apply(this,a);this.addEvents("beforerowremoved","beforerowsinserted","beforerefresh","rowremoved","rowsinserted","rowupdated","refresh");Ext.grid.GridView.superclass.constructor.call(this)},masterTpl:new Ext.Template('<div class="x-grid3" hidefocus="true">','<div class="x-grid3-viewport">','<div class="x-grid3-header">','<div class="x-grid3-header-inner">','<div class="x-grid3-header-offset" style="{ostyle}">{header}</div>',"</div>",'<div class="x-clear"></div>',"</div>",'<div class="x-grid3-scroller">','<div class="x-grid3-body" style="{bstyle}">{body}</div>','<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',"</div>","</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>"),headerTpl:new Ext.Template('<table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<thead>",'<tr class="x-grid3-hd-row">{cells}</tr>',"</thead>","</table>"),bodyTpl:new Ext.Template("{rows}"),cellTpl:new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}" tabIndex="0" {cellAttr}>','<div class="x-grid3-cell-inner x-grid3-col-{id}" unselectable="on" {attr}>{value}</div>',"</td>"),initTemplates:function(){var c=this.templates||{},d,b,g=new Ext.Template('<td class="x-grid3-hd x-grid3-cell x-grid3-td-{id} {css}" style="{style}">','<div {tooltip} {attr} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"","{value}",'<img alt="" class="x-grid3-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" />',"</div>","</td>"),a=['<tr class="x-grid3-row-body-tr" style="{bodyStyle}">','<td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on">','<div class="x-grid3-row-body">{body}</div>',"</td>","</tr>"].join(""),e=['<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<tbody>","<tr>{cells}</tr>",this.enableRowBody?a:"","</tbody>","</table>"].join("");Ext.applyIf(c,{hcell:g,cell:this.cellTpl,body:this.bodyTpl,header:this.headerTpl,master:this.masterTpl,row:new Ext.Template('<div class="x-grid3-row {alt}" style="{tstyle}">'+e+"</div>"),rowInner:new Ext.Template(e)});for(b in c){d=c[b];if(d&&Ext.isFunction(d.compile)&&!d.compiled){d.disableFormats=true;d.compile()}}this.templates=c;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(){return this.scroller.dom},initElements:function(){var b=Ext.Element,d=Ext.get(this.grid.getGridEl().dom.firstChild),e=new b(d.child("div.x-grid3-viewport")),c=new b(e.child("div.x-grid3-header")),a=new b(e.child("div.x-grid3-scroller"));if(this.grid.hideHeaders){c.setDisplayed(false)}if(this.forceFit){a.setStyle("overflow-x","hidden")}Ext.apply(this,{el:d,mainWrap:e,scroller:a,mainHd:c,innerHd:c.child("div.x-grid3-header-inner").dom,mainBody:new b(b.fly(a).child("div.x-grid3-body")),focusEl:new b(b.fly(a).child("a")),resizeMarker:new b(d.child("div.x-grid3-resize-marker")),resizeProxy:new b(d.child("div.x-grid3-resize-proxy"))});this.focusEl.swallowEvent("click",true)},getRows:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},findCell:function(a){if(!a){return false}return this.fly(a).findParent(this.cellSelector,this.cellSelectorDepth)},findCellIndex:function(d,c){var b=this.findCell(d),a;if(b){a=this.fly(b).hasClass(c);if(!c||a){return this.getCellIndex(b)}}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,this.rowSelectorDepth)},findRowIndex:function(a){var b=this.findRow(a);return b?b.rowIndex:false},findRowBody:function(a){if(!a){return false}return this.fly(a).findParent(this.rowBodySelector,this.rowBodySelectorDepth)},getRow:function(a){return this.getRows()[a]},getCell:function(b,a){return Ext.fly(this.getRow(b)).query(this.cellSelector)[a]},getHeaderCell:function(a){return this.mainHd.dom.getElementsByTagName("td")[a]},addRowClass:function(b,a){var c=this.getRow(b);if(c){this.fly(c).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));this.syncFocusEl(a)},removeRows:function(c,a){var b=this.mainBody.dom,d;for(d=c;d<=a;d++){Ext.removeNode(b.childNodes[c])}this.syncFocusEl(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(){var a=this.scroller.dom;a.scrollTop=0;a.scrollLeft=0},syncScroll:function(){this.syncHeaderScroll();var a=this.scroller.dom;this.grid.fireEvent("bodyscroll",a.scrollLeft,a.scrollTop)},syncHeaderScroll:function(){var a=this.innerHd,b=this.scroller.dom.scrollLeft;a.scrollLeft=b;a.scrollLeft=b},updateSortIcon:function(d,c){var a=this.sortClasses,b=a[c=="DESC"?1:0],e=this.mainHd.select("td").removeClass(a);e.item(d).addClass(b)},updateAllColumnWidths:function(){var e=this.getTotalWidth(),k=this.cm.getColumnCount(),m=this.getRows(),g=m.length,b=[],l,a,h,d,c;for(d=0;d<k;d++){b[d]=this.getColumnWidth(d);this.getHeaderCell(d).style.width=b[d]}this.updateHeaderWidth();for(d=0;d<g;d++){l=m[d];l.style.width=e;a=l.firstChild;if(a){a.style.width=e;h=a.rows[0];for(c=0;c<k;c++){h.childNodes[c].style.width=b[c]}}}this.onAllColumnWidthsUpdated(b,e)},updateColumnWidth:function(d,b){var c=this.getColumnWidth(d),k=this.getTotalWidth(),h=this.getHeaderCell(d),a=this.getRows(),e=a.length,m,g,l;this.updateHeaderWidth();h.style.width=c;for(g=0;g<e;g++){m=a[g];l=m.firstChild;m.style.width=k;if(l){l.style.width=k;l.rows[0].childNodes[d].style.width=c}}this.onColumnWidthUpdated(d,c,k)},updateColumnHidden:function(b,k){var h=this.getTotalWidth(),l=k?"none":"",g=this.getHeaderCell(b),a=this.getRows(),d=a.length,m,c,e;this.updateHeaderWidth();g.style.display=l;for(e=0;e<d;e++){m=a[e];m.style.width=h;c=m.firstChild;if(c){c.style.width=h;c.rows[0].childNodes[b].style.display=l}}this.onColumnHiddenUpdated(b,k,h);delete this.lastViewWidth;this.layout()},doRender:function(d,v,m,a,r,t){var h=this.templates,c=h.cell,y=h.row,o=r-1,b="width:"+this.getTotalWidth()+";",k=[],l=[],n={tstyle:b},q={},w=v.length,x,g,e,u,s,p;for(s=0;s<w;s++){e=v[s];l=[];p=s+a;for(u=0;u<r;u++){g=d[u];q.id=g.id;q.css=u===0?"x-grid3-cell-first ":(u==o?"x-grid3-cell-last ":"");q.attr=q.cellAttr="";q.style=g.style;q.value=g.renderer.call(g.scope,e.data[g.name],q,e,p,u,m);if(Ext.isEmpty(q.value)){q.value="&#160;"}if(this.markDirty&&e.dirty&&typeof e.modified[g.name]!="undefined"){q.css+=" x-grid3-dirty-cell"}l[l.length]=c.apply(q)}x=[];if(t&&((p+1)%2===0)){x[0]="x-grid3-row-alt"}if(e.dirty){x[1]=" x-grid3-dirty-row"}n.cols=r;if(this.getRowClass){x[2]=this.getRowClass(e,p,n,m)}n.alt=x.join(" ");n.cells=l.join("");k[k.length]=y.apply(n)}return k.join("")},processRows:function(a,g){if(!this.ds||this.ds.getCount()<1){return}var d=this.getRows(),c=d.length,e,b;g=g||!this.grid.stripeRows;a=a||0;for(b=0;b<c;b++){e=d[b];if(e){e.rowIndex=b;if(!g){e.className=e.className.replace(this.rowClsRe," ");if((b+1)%2===0){e.className+=" x-grid3-row-alt"}}}}if(a===0){Ext.fly(d[0]).addClass(this.firstRowCls)}Ext.fly(d[c-1]).addClass(this.lastRowCls)},afterRender:function(){if(!this.ds||!this.cm){return}this.mainBody.dom.innerHTML=this.renderBody()||"&#160;";this.processRows(0,true);if(this.deferEmptyText!==true){this.applyEmptyText()}this.grid.fireEvent("viewready",this.grid)},afterRenderUI:function(){var a=this.grid;this.initElements();Ext.fly(this.innerHd).on("click",this.handleHdDown,this);this.mainHd.on({scope:this,mouseover:this.handleHdOver,mouseout:this.handleHdOut,mousemove:this.handleHdMove});this.scroller.on("scroll",this.syncScroll,this);if(a.enableColumnResize!==false){this.splitZone=new Ext.grid.GridView.SplitDragZone(a,this.mainHd.dom)}if(a.enableColumnMove){this.columnDrag=new Ext.grid.GridView.ColumnDragZone(a,this.innerHd);this.columnDrop=new Ext.grid.HeaderDropZone(a,this.mainHd.dom)}if(a.enableHdMenu!==false){this.hmenu=new Ext.menu.Menu({id:a.id+"-hctx"});this.hmenu.add({itemId:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{itemId:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});if(a.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:a.id+"-hcols-menu"});this.colMenu.on({scope:this,beforeshow:this.beforeColMenuShow,itemclick:this.handleHdMenuClick});this.hmenu.add("-",{itemId:"columns",hideOnClick:false,text:this.columnsText,menu:this.colMenu,iconCls:"x-cols-icon"})}this.hmenu.on("itemclick",this.handleHdMenuClick,this)}if(a.trackMouseOver){this.mainBody.on({scope:this,mouseover:this.onRowOver,mouseout:this.onRowOut})}if(a.enableDragDrop||a.enableDrag){this.dragZone=new Ext.grid.GridDragZone(a,{ddGroup:a.ddGroup||"GridDD"})}this.updateHeaderSortState()},renderUI:function(){var a=this.templates;return a.master.apply({body:a.body.apply({rows:"&#160;"}),header:this.renderHeaders(),ostyle:"width:"+this.getOffsetWidth()+";",bstyle:"width:"+this.getTotalWidth()+";"})},processEvent:function(b,h){var i=h.getTarget(),a=this.grid,d=this.findHeaderIndex(i),l,k,c,g;a.fireEvent(b,h);if(d!==false){a.fireEvent("header"+b,a,d,h)}else{l=this.findRowIndex(i);if(l!==false){k=this.findCellIndex(i);if(k!==false){c=a.colModel.getColumnAt(k);if(a.fireEvent("cell"+b,a,l,k,h)!==false){if(!c||(c.processEvent&&(c.processEvent(b,h,a,l,k)!==false))){a.fireEvent("row"+b,a,l,h)}}}else{if(a.fireEvent("row"+b,a,l,h)!==false){(g=this.findRowBody(i))&&a.fireEvent("rowbody"+b,a,l,h)}}}else{a.fireEvent("container"+b,a,h)}}},layout:function(k){if(!this.mainBody){return}var a=this.grid,d=a.getGridEl(),c=d.getSize(true),i=c.width,b=c.height,h=this.scroller,g,e,l;if(i<20||b<20){return}if(a.autoHeight){g=h.dom.style;g.overflow="visible";if(Ext.isWebKit){g.position="static"}}else{this.el.setSize(i,b);e=this.mainHd.getHeight();l=b-e;h.setSize(i,l);if(this.innerHd){this.innerHd.style.width=(i)+"px"}}if(this.forceFit||(k===true&&this.autoFill)){if(this.lastViewWidth!=i){this.fitColumns(false,false);this.lastViewWidth=i}}else{this.autoExpand();this.syncHeaderScroll()}this.onLayout(i,l)},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)},getOffsetWidth:function(){return(this.cm.getTotalWidth()+this.getScrollOffset())+"px"},getScrollOffset:function(){return Ext.num(this.scrollOffset,Ext.getScrollBarWidth())},renderHeaders:function(){var e=this.cm,g=this.templates,a=g.hcell,d={},h=e.getColumnCount(),k=h-1,l=[],c,b;for(c=0;c<h;c++){if(c==0){b="x-grid3-cell-first "}else{b=c==k?"x-grid3-cell-last ":""}d={id:e.getColumnId(c),value:e.getColumnHeader(c)||"",style:this.getColumnStyle(c,true),css:b,tooltip:this.getColumnTooltip(c)};if(e.config[c].align=="right"){d.istyle="padding-right: 16px;"}else{delete d.istyle}l[c]=a.apply(d)}return g.header.apply({cells:l.join(""),tstyle:String.format("width: {0};",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();this.updateHeaderWidth(false)},updateHeaderWidth:function(c){var b=this.innerHd.firstChild,a=this.getTotalWidth();b.style.width=this.getOffsetWidth();b.firstChild.style.width=a;if(c!==false){this.mainBody.dom.style.width=a}},focusRow:function(a){this.focusCell(a,0,false)},focusCell:function(d,b,c){this.syncFocusEl(this.ensureVisible(d,b,c));var a=this.focusEl;if(Ext.isGecko){a.focus()}else{a.focus.defer(1,a)}},resolveCell:function(h,d,g){if(!Ext.isNumber(h)){h=h.rowIndex}if(!this.ds){return null}if(h<0||h>=this.ds.getCount()){return null}d=(d!==undefined?d:0);var c=this.getRow(h),b=this.cm,e=b.getColumnCount(),a;if(!(g===false&&d===0)){while(d<e&&b.isHidden(d)){d++}a=this.getCell(h,d)}return{row:c,cell:a}},getResolvedXY:function(b){if(!b){return null}var a=b.cell,c=b.row;if(a){return Ext.fly(a).getXY()}else{return[this.el.getX(),Ext.fly(c).getY()]}},syncFocusEl:function(d,a,c){var b=d;if(!Ext.isArray(b)){d=Math.min(d,Math.max(0,this.getRows().length-1));if(isNaN(d)){return}b=this.getResolvedXY(this.resolveCell(d,a,c))}this.focusEl.setXY(b||this.scroller.getXY())},ensureVisible:function(u,g,e){var s=this.resolveCell(u,g,e);if(!s||!s.row){return null}var l=s.row,h=s.cell,o=this.scroller.dom,d=l,t=0,q=this.el.dom;while(d&&d!=q){t+=d.offsetTop;d=d.offsetParent}t-=this.mainHd.dom.offsetHeight;q=parseInt(o.scrollTop,10);var r=t+l.offsetHeight,a=o.clientHeight,n=q+a;if(t<q){o.scrollTop=t}else{if(r>n){o.scrollTop=r-a}}if(e!==false){var m=parseInt(h.offsetLeft,10),k=m+h.offsetWidth,i=parseInt(o.scrollLeft,10),b=i+o.clientWidth;if(m<i){o.scrollLeft=m}else{if(k>b){o.scrollLeft=k-o.clientWidth}}}return this.getResolvedXY(s)},insertRows:function(a,i,e,h){var d=a.getCount()-1;if(!h&&i===0&&e>=d){this.fireEvent("beforerowsinserted",this,i,e);this.refresh();this.fireEvent("rowsinserted",this,i,e)}else{if(!h){this.fireEvent("beforerowsinserted",this,i,e)}var b=this.renderRows(i,e),g=this.getRow(i);if(g){if(i===0){Ext.fly(this.getRow(0)).removeClass(this.firstRowCls)}Ext.DomHelper.insertHtml("beforeBegin",g,b)}else{var c=this.getRow(d-1);if(c){Ext.fly(c).removeClass(this.lastRowCls)}Ext.DomHelper.insertHtml("beforeEnd",this.mainBody.dom,b)}if(!h){this.processRows(i);this.fireEvent("rowsinserted",this,i,e)}else{if(i===0||i>=d){Ext.fly(this.getRow(i)).addClass(i===0?this.firstRowCls:this.lastRowCls)}}}this.syncFocusEl(i)},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(b,d){var a=this.cm,g=a.config,c=d?"":g[b].css||"",e=g[b].align;c+=String.format("width: {0};",this.getColumnWidth(b));if(a.isHidden(b)){c+="display: none; "}if(e){c+=String.format("text-align: {0};",e)}return c},getColumnWidth:function(b){var c=this.cm.getColumnWidth(b),a=this.borderWidth;if(Ext.isNumber(c)){if(Ext.isBorderBox||(Ext.isWebKit&&!Ext.isSafari2)){return c+"px"}else{return Math.max(c-a,0)+"px"}}else{return c}},getTotalWidth:function(){return this.cm.getTotalWidth()+"px"},fitColumns:function(g,k,h){var a=this.grid,m=this.cm,t=m.getTotalWidth(false),r=this.getGridInnerWidth(),s=r-t,c=[],p=0,o=0,v,d,q;if(r<20||s===0){return false}var e=m.getColumnCount(true),n=m.getColumnCount(false),b=e-(Ext.isNumber(h)?1:0);if(b===0){b=1;h=undefined}for(q=0;q<n;q++){if(!m.isFixed(q)&&q!==h){v=m.getColumnWidth(q);c.push(q,v);if(!m.isHidden(q)){p=q;o+=v}}}d=(r-m.getTotalWidth())/o;while(c.length){v=c.pop();q=c.pop();m.setColumnWidth(q,Math.max(a.minColumnWidth,Math.floor(v+v*d)),true)}t=m.getTotalWidth(false);if(t>r){var u=(b==e)?p:h,l=Math.max(1,m.getColumnWidth(u)-(t-r));m.setColumnWidth(u,l,true)}if(g!==true){this.updateAllColumnWidths()}return true},autoExpand:function(l){var a=this.grid,i=this.cm,e=this.getGridInnerWidth(),c=i.getTotalWidth(false),g=a.autoExpandColumn;if(!this.userResized&&g){if(e!=c){var k=i.getIndexById(g),b=i.getColumnWidth(k),h=e-c+b,d=Math.min(Math.max(h,a.autoExpandMin),a.autoExpandMax);if(b!=d){i.setColumnWidth(k,d,true);if(l!==true){this.updateColumnWidth(k,d)}}}}},getGridInnerWidth:function(){return this.grid.getGridEl().getWidth(true)-this.getScrollOffset()},getColumnData:function(){var e=[],c=this.cm,g=c.getColumnCount(),a=this.ds.fields,d,b;for(d=0;d<g;d++){b=c.getDataIndex(d);e[d]={name:Ext.isDefined(b)?b:(a.get(d)?a.get(d).name:undefined),renderer:c.getRenderer(d),scope:c.getRendererScope(d),id:c.getColumnId(d),style:this.getColumnStyle(d)}}return e},renderRows:function(i,c){var a=this.grid,g=a.store,k=a.stripeRows,e=a.colModel,h=e.getColumnCount(),d=g.getCount(),b;if(d<1){return""}i=i||0;c=Ext.isDefined(c)?c:d-1;b=g.getRange(i,c);return this.doRender(this.getColumnData(),b,g,i,h,k)},renderBody:function(){var a=this.renderRows()||"&#160;";return this.templates.body.apply({rows:a})},refreshRow:function(g){var m=this.ds,n=this.cm.getColumnCount(),c=this.getColumnData(),o=n-1,q=["x-grid3-row"],e={tstyle:String.format("width: {0};",this.getTotalWidth())},a=[],l=this.templates.cell,k,r,b,p,h,d;if(Ext.isNumber(g)){k=g;g=m.getAt(k)}else{k=m.indexOf(g)}if(!g||k<0){return}for(d=0;d<n;d++){b=c[d];if(d==0){h="x-grid3-cell-first"}else{h=(d==o)?"x-grid3-cell-last ":""}p={id:b.id,style:b.style,css:h,attr:"",cellAttr:""};p.value=b.renderer.call(b.scope,g.data[b.name],p,g,k,d,m);if(Ext.isEmpty(p.value)){p.value="&#160;"}if(this.markDirty&&g.dirty&&typeof g.modified[b.name]!="undefined"){p.css+=" x-grid3-dirty-cell"}a[d]=l.apply(p)}r=this.getRow(k);r.className="";if(this.grid.stripeRows&&((k+1)%2===0)){q.push("x-grid3-row-alt")}if(this.getRowClass){e.cols=n;q.push(this.getRowClass(g,k,e,m))}this.fly(r).addClass(q).setStyle(e.tstyle);e.cells=a.join("");r.innerHTML=this.templates.rowInner.apply(e);this.fireEvent("rowupdated",this,k,g)},refresh:function(b){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var a=this.renderBody();this.mainBody.update(a).setWidth(this.getTotalWidth());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('<div class="x-grid-empty">'+this.emptyText+"</div>")}},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)}},clearHeaderSortState:function(){if(!this.sortState){return}this.grid.fireEvent("sortchange",this.grid,null);this.mainHd.select("td").removeClass(this.sortClasses);delete this.sortState},destroy:function(){var k=this,a=k.grid,d=a.getGridEl(),i=k.dragZone,g=k.splitZone,h=k.columnDrag,e=k.columnDrop,l=k.scrollToTopTask,c,b;if(l&&l.cancel){l.cancel()}Ext.destroyMembers(k,"colMenu","hmenu");k.initData(null,null);k.purgeListeners();Ext.fly(k.innerHd).un("click",k.handleHdDown,k);if(a.enableColumnMove){c=h.dragData;b=h.proxy;Ext.destroy(h.el,b.ghost,b.el,e.el,e.proxyTop,e.proxyBottom,c.ddel,c.header);if(b.anim){Ext.destroy(b.anim)}delete b.ghost;delete c.ddel;delete c.header;h.destroy();delete Ext.dd.DDM.locationCache[h.id];delete h._domRef;delete e.proxyTop;delete e.proxyBottom;e.destroy();delete Ext.dd.DDM.locationCache["gridHeader"+d.id];delete e._domRef;delete Ext.dd.DDM.ids[e.ddGroup]}if(g){g.destroy();delete g._domRef;delete Ext.dd.DDM.ids["gridSplitters"+d.id]}Ext.fly(k.innerHd).removeAllListeners();Ext.removeNode(k.innerHd);delete k.innerHd;Ext.destroy(k.el,k.mainWrap,k.mainHd,k.scroller,k.mainBody,k.focusEl,k.resizeMarker,k.resizeProxy,k.activeHdBtn,k._flyweight,i,g);delete a.container;if(i){i.destroy()}Ext.dd.DDM.currentTarget=null;delete Ext.dd.DDM.locationCache[d.id];Ext.EventManager.removeResizeListener(k.onWindowResize,k)},onDenyColumnHide:function(){},render:function(){if(this.autoFill){var a=this.grid.ownerCt;if(a&&a.getLayout()){a.on("afterlayout",function(){this.fitColumns(true,true);this.updateHeaders();this.updateHeaderSortState()},this,{single:true})}}else{if(this.forceFit){this.fitColumns(true,false)}else{if(this.grid.autoExpandColumn){this.autoExpand(true)}}}this.grid.getGridEl().dom.innerHTML=this.renderUI();this.afterRenderUI()},initData:function(a,e){var b=this;if(b.ds){var d=b.ds;d.un("add",b.onAdd,b);d.un("load",b.onLoad,b);d.un("clear",b.onClear,b);d.un("remove",b.onRemove,b);d.un("update",b.onUpdate,b);d.un("datachanged",b.onDataChange,b);if(d!==a&&d.autoDestroy){d.destroy()}}if(a){a.on({scope:b,load:b.onLoad,add:b.onAdd,remove:b.onRemove,update:b.onUpdate,clear:b.onClear,datachanged:b.onDataChange})}if(b.cm){var c=b.cm;c.un("configchange",b.onColConfigChange,b);c.un("widthchange",b.onColWidthChange,b);c.un("headerchange",b.onHeaderChange,b);c.un("hiddenchange",b.onHiddenChange,b);c.un("columnmoved",b.onColumnMove,b)}if(e){delete b.lastViewWidth;e.on({scope:b,configchange:b.onColConfigChange,widthchange:b.onColWidthChange,headerchange:b.onHeaderChange,hiddenchange:b.onHiddenChange,columnmoved:b.onColumnMove})}b.ds=a;b.cm=e},onDataChange:function(){this.refresh(true);this.updateHeaderSortState();this.syncFocusEl(0)},onClear:function(){this.refresh();this.syncFocusEl(0)},onUpdate:function(b,a){this.refreshRow(a)},onAdd:function(b,a,c){this.insertRows(b,c,c+(a.length-1))},onRemove:function(b,a,c,d){if(d!==true){this.fireEvent("beforerowremoved",this,c,a)}this.removeRow(c);if(d!==true){this.processRows(c);this.applyEmptyText();this.fireEvent("rowremoved",this,c,a)}},onLoad:function(){if(Ext.isGecko){if(!this.scrollToTopTask){this.scrollToTopTask=new Ext.util.DelayedTask(this.scrollToTop,this)}this.scrollToTopTask.delay(1)}else{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,c,b){this.indexMap=null;this.refresh(true);this.restoreScroll(this.getScrollState());this.afterMove(b);this.grid.fireEvent("columnmove",c,b)},onColConfigChange:function(){delete this.lastViewWidth;this.indexMap=null;this.refresh(true)},initUI:function(a){a.on("headerclick",this.onHeaderClick,this)},initEvents:Ext.emptyFn,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=this.findRowIndex(a);if(c!==false){this.addRowClass(c,this.rowOverCls)}},onRowOut:function(b,a){var c=this.findRowIndex(a);if(c!==false&&!b.within(this.getRow(c),true)){this.removeRowClass(c,this.rowOverCls)}},onRowSelect:function(a){this.addRowClass(a,this.selectedRowClass)},onRowDeselect:function(a){this.removeRowClass(a,this.selectedRowClass)},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")}},handleWheel:function(a){a.stopPropagation()},onColumnSplitterMoved:function(a,b){this.userResized=true;this.grid.colModel.setColumnWidth(a,b,true);if(this.forceFit){this.fitColumns(true,false,a);this.updateAllColumnWidths()}else{this.updateColumnWidth(a,b);this.syncHeaderScroll()}this.grid.fireEvent("columnresize",a,b)},beforeColMenuShow:function(){var b=this.cm,d=b.getColumnCount(),a=this.colMenu,c;a.removeAll();for(c=0;c<d;c++){if(b.config[c].hideable!==false){a.add(new Ext.menu.CheckItem({text:b.getColumnHeader(c),itemId:"col-"+b.getColumnId(c),checked:!b.isHidden(c),disabled:b.config[c].hideable===false,hideOnClick:false}))}}},handleHdMenuClick:function(c){var a=this.ds,b=this.cm.getDataIndex(this.hdCtxIndex);switch(c.getItemId()){case"asc":a.sort(b,"ASC");break;case"desc":a.sort(b,"DESC");break;default:this.handleHdMenuClickDefault(c)}return true},handleHdMenuClickDefault:function(c){var b=this.cm,d=c.getItemId(),a=b.getIndexById(d.substr(4));if(a!=-1){if(c.checked&&b.getColumnsBy(this.isHideableColumn,this).length<=1){this.onDenyColumnHide();return}b.setHidden(a,c.checked)}},handleHdDown:function(i,k){if(Ext.fly(k).hasClass("x-grid3-hd-btn")){i.stopEvent();var l=this.cm,g=this.findHeaderCell(k),h=this.getCellIndex(g),d=l.isSortable(h),c=this.hmenu,b=c.items,a=this.headerMenuOpenCls;this.hdCtxIndex=h;Ext.fly(g).addClass(a);b.get("asc").setDisabled(!d);b.get("desc").setDisabled(!d);c.on("hide",function(){Ext.fly(g).removeClass(a)},this,{single:true});c.show(k,"tl-bl?")}},handleHdMove:function(l){var i=this.findHeaderCell(this.activeHdRef);if(i&&!this.headersDisabled){var m=this.splitHandleWidth||5,k=this.activeHdRegion,q=i.style,n=this.cm,p="",g=l.getPageX();if(this.grid.enableColumnResize!==false){var a=this.activeHdIndex,b=this.getPreviousVisible(a),o=n.isResizable(a),c=b&&n.isResizable(b),d=g-k.left<=m,h=k.right-g<=(!this.activeHdBtn?m:2);if(d&&c){p=Ext.isAir?"move":Ext.isWebKit?"e-resize":"col-resize"}else{if(h&&o){p=Ext.isAir?"move":Ext.isWebKit?"w-resize":"col-resize"}}}q.cursor=p}},getPreviousVisible:function(a){while(a>0){if(!this.cm.isHidden(a-1)){return a}a--}return undefined},handleHdOver:function(c,b){var d=this.findHeaderCell(b);if(d&&!this.headersDisabled){var a=this.fly(d);this.activeHdRef=b;this.activeHdIndex=this.getCellIndex(d);this.activeHdRegion=a.getRegion();if(!this.isMenuDisabled(this.activeHdIndex,a)){a.addClass("x-grid3-hd-over");this.activeHdBtn=a.child(".x-grid3-hd-btn");if(this.activeHdBtn){this.activeHdBtn.dom.style.height=(d.firstChild.offsetHeight-1)+"px"}}}},handleHdOut:function(b,a){var c=this.findHeaderCell(a);if(c&&(!Ext.isIE||!b.within(c,true))){this.activeHdRef=null;this.fly(c).removeClass("x-grid3-hd-over");c.style.cursor=""}},isMenuDisabled:function(a,b){return this.cm.isMenuDisabled(a)},hasRows:function(){var a=this.mainBody.dom.firstChild;return a&&a.nodeType==1&&a.className!="x-grid-empty"},isHideableColumn:function(a){return !a.hidden},bind:function(a,b){this.initData(a,b)}});Ext.grid.GridView.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{constructor: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},b4StartDrag:function(a,e){this.dragHeadersDisabled=this.view.headersDisabled;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),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)},allowHeaderDrag:function(a){return true},handleMouseDown:function(a){var h=this.view.findHeaderCell(a.getTarget());if(h&&this.allowHeaderDrag(a)){var l=this.view.fly(h).getXY(),c=l[0],i=a.getXY(),b=i[0],g=h.offsetWidth,d=false;if((b-c)<=this.hw){d=-1}else{if((c+g)-b<=this.hw){d=0}}if(d!==false){this.cm=this.grid.colModel;var k=this.view.getCellIndex(h);if(d==-1){if(k+d<0){return}while(this.cm.isHidden(k+d)){--d;if(k+d<0){return}}}this.cellIndex=k+d;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(g){this.marker.hide();var a=this.view,c=Math.max(this.minX,g.getPageX()),d=c-this.startPos,b=this.dragHeadersDisabled;a.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+d);setTimeout(function(){a.headersDisabled=b},50)},autoOffset:function(){this.setDelta(0,0)}});Ext.grid.PivotGridView=Ext.extend(Ext.grid.GridView,{colHeaderCellCls:"grid-hd-group-cell",title:"",getColumnHeaders:function(){return this.grid.topAxis.buildHeaders()},getRowHeaders:function(){return this.grid.leftAxis.buildHeaders()},renderRows:function(a,r){var b=this.grid,n=b.extractData(),o=n.length,e=this.templates,q=b.renderer,h=typeof q=="function",t=this.getCellCls,m=typeof t=="function",d=e.cell,u=e.row,k=[],p={},c="width:"+this.getGridInnerWidth()+"px;",l,g,s;a=a||0;r=Ext.isDefined(r)?r:o-1;for(s=0;s<o;s++){row=n[s];colCount=row.length;l=[];rowIndex=a+s;for(j=0;j<colCount;j++){cell=row[j];p.css=j===0?"x-grid3-cell-first ":(j==(colCount-1)?"x-grid3-cell-last ":"");p.attr=p.cellAttr="";p.value=cell;if(Ext.isEmpty(p.value)){p.value="&#160;"}if(h){p.value=q(p.value)}if(m){p.css+=t(p.value)+" "}l[l.length]=d.apply(p)}k[k.length]=u.apply({tstyle:c,cols:colCount,cells:l.join(""),alt:""})}return k.join("")},masterTpl:new Ext.Template('<div class="x-grid3 x-pivotgrid" hidefocus="true">','<div class="x-grid3-viewport">','<div class="x-grid3-header">','<div class="x-grid3-header-title"><span>{title}</span></div>','<div class="x-grid3-header-inner">','<div class="x-grid3-header-offset" style="{ostyle}"></div>',"</div>",'<div class="x-clear"></div>',"</div>",'<div class="x-grid3-scroller">','<div class="x-grid3-row-headers"></div>','<div class="x-grid3-body" style="{bstyle}">{body}</div>','<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',"</div>","</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>"),initTemplates:function(){Ext.grid.PivotGridView.superclass.initTemplates.apply(this,arguments);var a=this.templates||{};if(!a.gcell){a.gcell=new Ext.XTemplate('<td class="x-grid3-hd x-grid3-gcell x-grid3-td-{id} ux-grid-hd-group-row-{row} '+this.colHeaderCellCls+'" style="{style}">','<div {tooltip} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"","{value}","</div>","</td>")}this.templates=a;this.hrowRe=new RegExp("ux-grid-hd-group-row-(\\d+)","")},initElements:function(){Ext.grid.PivotGridView.superclass.initElements.apply(this,arguments);this.rowHeadersEl=new Ext.Element(this.scroller.child("div.x-grid3-row-headers"));this.headerTitleEl=new Ext.Element(this.mainHd.child("div.x-grid3-header-title"))},getGridInnerWidth:function(){var a=Ext.grid.PivotGridView.superclass.getGridInnerWidth.apply(this,arguments);return a-this.getTotalRowHeaderWidth()},getTotalRowHeaderWidth:function(){var d=this.getRowHeaders(),c=d.length,b=0,a;for(a=0;a<c;a++){b+=d[a].width}return b},getTotalColumnHeaderHeight:function(){return this.getColumnHeaders().length*21},renderUI:function(){var b=this.templates,a=this.getGridInnerWidth();return b.master.apply({body:b.body.apply({rows:"&#160;"}),ostyle:"width:"+a+"px",bstyle:"width:"+a+"px"})},onLayout:function(b,a){Ext.grid.PivotGridView.superclass.onLayout.apply(this,arguments);var b=this.getGridInnerWidth();this.resizeColumnHeaders(b);this.resizeAllRows(b)},refresh:function(b){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var a=this.renderBody();this.mainBody.update(a).setWidth(this.getGridInnerWidth());if(b===true){this.updateHeaders();this.updateHeaderSortState()}this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this)},renderHeaders:Ext.emptyFn,fitColumns:Ext.emptyFn,resizeColumnHeaders:function(b){var a=this.grid.topAxis;if(a.rendered){a.el.setWidth(b)}},resizeRowHeaders:function(){var a=this.getTotalRowHeaderWidth(),b=String.format("margin-left: {0}px;",a);this.rowHeadersEl.setWidth(a);this.mainBody.applyStyles(b);Ext.fly(this.innerHd).applyStyles(b);this.headerTitleEl.setWidth(a);this.headerTitleEl.setHeight(this.getTotalColumnHeaderHeight())},resizeAllRows:function(b){var d=this.getRows(),c=d.length,a;for(a=0;a<c;a++){Ext.fly(d[a]).setWidth(b);Ext.fly(d[a]).child("table").setWidth(b)}},updateHeaders:function(){this.renderGroupRowHeaders();this.renderGroupColumnHeaders()},renderGroupRowHeaders:function(){var a=this.grid.leftAxis;this.resizeRowHeaders();a.rendered=false;a.render(this.rowHeadersEl);this.setTitle(this.title)},setTitle:function(a){this.headerTitleEl.child("span").dom.innerHTML=a},renderGroupColumnHeaders:function(){var a=this.grid.topAxis;a.rendered=false;a.render(this.innerHd.firstChild)},isMenuDisabled:function(a,b){return true}});Ext.grid.PivotAxis=Ext.extend(Ext.Component,{orientation:"horizontal",defaultHeaderWidth:80,paddingWidth:7,setDimensions:function(a){this.dimensions=a},onRender:function(b,a){var c=this.orientation=="horizontal"?this.renderHorizontalRows():this.renderVerticalRows();this.el=Ext.DomHelper.overwrite(b.dom,{tag:"table",cn:c},true)},renderHorizontalRows:function(){var k=this.buildHeaders(),a=k.length,g=[],c,h,e,d,b;for(d=0;d<a;d++){c=[];h=k[d].items;e=h.length;for(b=0;b<e;b++){c.push({tag:"td",html:h[b].header,colspan:h[b].span})}g[d]={tag:"tr",cn:c}}return g},renderVerticalRows:function(){var b=this.buildHeaders(),k=b.length,a=[],m=[],h,c,l,g,e,d;for(e=0;e<k;e++){c=b[e];g=c.width||80;h=c.items.length;for(d=0;d<h;d++){l=c.items[d];a[l.start]=a[l.start]||[];a[l.start].push({tag:"td",html:l.header,rowspan:l.span,width:Ext.isBorderBox?g:g-this.paddingWidth})}}h=a.length;for(e=0;e<h;e++){m[e]={tag:"tr",cn:a[e]}}return m},getTuples:function(){var b=new Ext.data.Store({});b.data=this.store.data.clone();b.fields=this.store.fields;var m=[],a=this.dimensions,c=a.length,k;for(k=0;k<c;k++){m.push({field:a[k].dataIndex,direction:a[k].direction||"ASC"})}b.sort(m);var e=b.data.items,o=[],l=[],p,h,d,g,n;c=e.length;for(k=0;k<c;k++){d=this.getRecordInfo(e[k]);g=d.data;h="";for(n in g){h+=g[n]+"---"}if(o.indexOf(h)==-1){o.push(h);l.push(d)}}b.destroy();return l},getRecordInfo:function(a){var e=this.dimensions,d=e.length,h={},k,c,b;for(b=0;b<d;b++){k=e[b];c=k.dataIndex;h[c]=a.get(c)}var g=function(i){return function(l){for(var m in i){if(l.get(m)!=i[m]){return false}}return true}};return{data:h,matcher:g(h)}},buildHeaders:function(){var k=this.getTuples(),l=k.length,a=this.dimensions,q=a.length,c=[],n,r,m,p,o,b,h,g,e,d;for(e=0;e<q;e++){dimension=a[e];r=[];o=0;b=0;for(d=0;d<l;d++){n=k[d];h=d==(l-1);m=n.data[dimension.dataIndex];g=p!=undefined&&p!=m;if(e>0&&d>0){g=g||n.data[a[e-1].dataIndex]!=k[d-1].data[a[e-1].dataIndex]}if(g){r.push({header:p,span:o,start:b});b+=o;o=0}if(h){r.push({header:m,span:o+1,start:b});b+=o;o=0}p=m;o++}c.push({items:r,width:dimension.width||this.defaultHeaderWidth});p=undefined}return c}});Ext.grid.HeaderDragZone=Ext.extend(Ext.dd.DragZone,{maxDragWidth:120,constructor: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},getDragData:function(c){var a=Ext.lib.Event.getTarget(c),b=this.view.findHeaderCell(a);if(b){return{ddel:b.firstChild,header:b}}return false},onInitDrag:function(a){this.dragHeadersDisabled=this.view.headersDisabled;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(){this.completeDrop()},afterInvalidDrop:function(){this.completeDrop()},completeDrop:function(){var a=this.view,b=this.dragHeadersDisabled;setTimeout(function(){a.headersDisabled=b},50)}});Ext.grid.HeaderDropZone=Ext.extend(Ext.dd.DropZone,{proxyOffsets:[-4,-9],fly:Ext.Element.fly,constructor:function(a,c,b){this.grid=a;this.view=a.getView();this.proxyTop=Ext.DomHelper.append(document.body,{cls:"col-move-top",html:"&#160;"},true);this.proxyBottom=Ext.DomHelper.append(document.body,{cls:"col-move-bottom",html:"&#160;"},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)},getTargetFromEvent:function(c){var a=Ext.lib.Event.getTarget(c),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,l,k){var a=Ext.lib.Event.getPageX(k),g=Ext.lib.Dom.getRegion(l.firstChild),c,i,b=g.top+this.proxyOffsets[1];if((g.right-a)<=(g.right-g.left)/2){c=g.right+this.view.borderWidth;i="after"}else{c=g.left;i="before"}if(this.grid.colModel.isFixed(this.view.getCellIndex(l))){return false}c+=this.proxyOffsets[0];this.proxyTop.setLeftTop(c,b);this.proxyTop.show();if(!this.bottomOffset){this.bottomOffset=this.view.mainHd.getHeight()}this.proxyBottom.setLeftTop(c,b+this.proxyTop.dom.offsetHeight+this.bottomOffset);this.proxyBottom.show();return i},onNodeEnter:function(d,a,c,b){if(b.header!=d){this.positionIndicator(b.header,d,c)}},onNodeOver:function(g,b,d,c){var a=false;if(c.header!=g){a=this.positionIndicator(c.header,g,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,o,g,c){var d=c.header;if(d!=b){var l=this.grid.colModel,k=Ext.lib.Event.getPageX(g),a=Ext.lib.Dom.getRegion(b.firstChild),p=(a.right-k)<=((a.right-a.left)/2)?"after":"before",i=this.view.getCellIndex(d),m=this.view.getCellIndex(b);if(p=="after"){m++}if(i<m){m--}l.moveColumn(i,m);return true}return false}});Ext.grid.GridView.ColumnDragZone=Ext.extend(Ext.grid.HeaderDragZone,{constructor:function(a,b){Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this,a,b,null);this.proxy.el.addClass("x-grid3-col-dd")},handleMouseDown:function(a){},callHandleMouseDown:function(a){Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this,a)}});Ext.grid.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{fly:Ext.Element.fly,constructor: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},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(c){var b=Ext.EventObject.setEvent(c);var a=this.fly(b.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);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=Ext.extend(Ext.util.Observable,{defaultWidth:100,defaultSortable:false,constructor:function(a){if(a.columns){Ext.apply(this,a);this.setConfig(a.columns,true)}else{this.setConfig(a,true)}this.addEvents("widthchange","headerchange","hiddenchange","columnmoved","configchange");Ext.grid.ColumnModel.superclass.constructor.call(this)},getColumnId:function(a){return this.config[a].id},getColumnAt:function(a){return this.config[a]},setConfig:function(d,b){var e,h,a;if(!b){delete this.totalWidth;for(e=0,a=this.config.length;e<a;e++){h=this.config[e];if(h.setEditor){h.setEditor(null)}}}this.defaults=Ext.apply({width:this.defaultWidth,sortable:this.defaultSortable},this.defaults);this.config=d;this.lookup={};for(e=0,a=d.length;e<a;e++){h=Ext.applyIf(d[e],this.defaults);if(Ext.isEmpty(h.id)){h.id=e}if(!h.isColumn){var g=Ext.grid.Column.types[h.xtype||"gridcolumn"];h=new g(h);d[e]=h}this.lookup[h.id]=h}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(e,b){var a=this.config,d=a[e];a.splice(e,1);a.splice(b,0,d);this.dataMap=null;this.fireEvent("columnmoved",this,e,b)},getColumnCount:function(b){var d=this.config.length,e=0,a;if(b===true){for(a=0;a<d;a++){if(!this.isHidden(a)){e++}}return e}return d},getColumnsBy:function(g,e){var b=this.config,h=b.length,a=[],d,k;for(d=0;d<h;d++){k=b[d];if(g.call(e||this,k,d)===true){a[a.length]=k}}return a},isSortable:function(a){return !!this.config[a].sortable},isMenuDisabled:function(a){return !!this.config[a].menuDisabled},getRenderer:function(a){return this.config[a].renderer||Ext.grid.ColumnModel.defaultRenderer},getRendererScope:function(a){return this.config[a].scope},setRenderer:function(a,b){this.config[a].renderer=b},getColumnWidth:function(a){var b=this.config[a].width;if(typeof b!="number"){b=this.defaultWidth}return b},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(d){var e=this.config;for(var b=0,a=e.length;b<a;b++){if(e[b].dataIndex==d){return b}}return -1},isCellEditable:function(b,e){var d=this.config[b],a=d.editable;return !!(a||(!Ext.isDefined(a)&&d.editor))},getCellEditor:function(a,b){return this.config[a].getCellEditor(b)},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 d=this.config[a];if(d.hidden!==b){d.hidden=b;this.totalWidth=null;this.fireEvent("hiddenchange",this,a,b)}},setEditor:function(a,b){this.config[a].setEditor(b)},destroy:function(){var b=this.config.length,a=0;for(;a<b;a++){this.config[a].destroy()}delete this.config;delete this.lookup;this.purgeListeners()},setState:function(a,b){b=Ext.applyIf(b,this.defaults);Ext.apply(this.config[a],b)}});Ext.grid.ColumnModel.defaultRenderer=function(a){if(typeof a=="string"&&a.length<1){return"&#160;"}return a};Ext.grid.AbstractSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(){this.locked=false;Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)},init:function(a){this.grid=a;if(this.lockOnInit){delete this.lockOnInit;this.locked=false;this.lock()}this.initEvents()},lock:function(){if(!this.locked){this.locked=true;var a=this.grid;if(a){a.getView().on({scope:this,beforerefresh:this.sortUnLock,refresh:this.sortLock})}else{this.lockOnInit=true}}},sortLock:function(){this.locked=true},sortUnLock:function(){this.locked=false},unlock:function(){if(this.locked){this.locked=false;var a=this.grid,b;if(a){b=a.getView();b.un("beforerefresh",this.sortUnLock,this);b.un("refresh",this.sortLock,this)}else{delete this.lockOnInit}}},isLocked:function(){return this.locked},destroy:function(){this.unlock();this.purgeListeners()}});Ext.grid.RowSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{singleSelect:false,constructor: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)},initEvents:function(){if(!this.grid.enableDragDrop&&!this.grid.enableDrag){this.grid.on("rowmousedown",this.handleMouseDown,this)}this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{up:this.onKeyPress,down:this.onKeyPress,scope:this});this.grid.getView().on({scope:this,refresh:this.onRefresh,rowupdated:this.onRowUpdated,rowremoved:this.onRemove})},onKeyPress:function(g,b){var a=b=="up",h=a?"selectPrevious":"selectNext",d=a?-1:1,c;if(!g.shiftKey||this.singleSelect){this[h](false)}else{if(this.last!==false&&this.lastActive!==false){c=this.last;this.selectRange(this.last,this.lastActive+d);this.grid.getView().focusRow(this.lastActive);if(c!==false){this.last=c}}else{this.selectFirstRow()}}},onRefresh:function(){var g=this.grid.store,d=this.getSelections(),c=0,a=d.length,b,e;this.silent=true;this.clearSelections(true);for(;c<a;c++){e=d[c];if((b=g.indexOfId(e.id))!=-1){this.selectRow(b,true)}}if(d.length!=this.selections.getCount()){this.fireEvent("selectionchange",this)}this.silent=false},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,c=0,a=b.length;for(;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(),b=0,a=c.length;for(;b<a;b++){if(e.call(d||this,c[b],b)===false){return false}}return true},clearSelections:function(a){if(this.isLocked()){return}if(a!==true){var c=this.grid.store,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.isLocked()){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=Ext.isNumber(a)?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,i,h){if(h.button!==0||this.isLocked()){return}var a=this.grid.getView();if(h.shiftKey&&!this.singleSelect&&this.last!==false){var c=this.last;this.selectRange(c,i,h.ctrlKey);this.last=c;a.focusRow(i)}else{var b=this.isSelected(i);if(h.ctrlKey&&b){this.deselectRow(i)}else{if(!b||this.getCount()>1){this.selectRow(i,h.ctrlKey||h.shiftKey);a.focusRow(i)}}}},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){var c;if(this.isLocked()){return}if(!d){this.clearSelections()}if(b<=a){for(c=b;c<=a;c++){this.selectRow(c,true)}}else{for(c=b;c>=a;c--){this.selectRow(c,true)}}},deselectRange:function(c,b,a){if(this.isLocked()){return}for(var d=c;d<=b;d++){this.deselectRow(d,a)}},selectRow:function(b,d,a){if(this.isLocked()||(b<0||b>=this.grid.store.getCount())||(d&&this.isSelected(b))){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)}if(!this.silent){this.fireEvent("rowselect",this,b,c);this.fireEvent("selectionchange",this)}}},deselectRow:function(b,a){if(this.isLocked()){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)}},acceptsNav:function(c,b,a){return !a.isHidden(b)&&a.isCellEditable(b,c)},onEditorKey:function(o,m){var d=m.getKey(),h,i=this.grid,q=i.lastEdit,l=i.activeEditor,b=m.shiftKey,p,q,a,n;if(d==m.TAB){m.stopEvent();l.completeEdit();if(b){h=i.walkCells(l.row,l.col-1,-1,this.acceptsNav,this)}else{h=i.walkCells(l.row,l.col+1,1,this.acceptsNav,this)}}else{if(d==m.ENTER){if(this.moveEditorOnEnter!==false){if(b){h=i.walkCells(q.row-1,q.col,-1,this.acceptsNav,this)}else{h=i.walkCells(q.row+1,q.col,1,this.acceptsNav,this)}}}}if(h){a=h[0];n=h[1];this.onEditorSelect(a,q.row);if(i.isEditor&&i.editing){p=i.activeEditor;if(p&&p.field.triggerBlur){p.field.triggerBlur()}}i.startEditing(a,n)}},onEditorSelect:function(b,a){if(a!=b){this.selectRow(b)}},destroy:function(){Ext.destroy(this.rowNav);this.rowNav=null;Ext.grid.RowSelectionModel.superclass.destroy.call(this)}});Ext.grid.Column=Ext.extend(Ext.util.Observable,{isColumn:true,constructor:function(b){Ext.apply(this,b);if(Ext.isString(this.renderer)){this.renderer=Ext.util.Format[this.renderer]}else{if(Ext.isObject(this.renderer)){this.scope=this.renderer.scope;this.renderer=this.renderer.fn}}if(!this.scope){this.scope=this}var a=this.editor;delete this.editor;this.setEditor(a);this.addEvents("click","contextmenu","dblclick","mousedown");Ext.grid.Column.superclass.constructor.call(this)},processEvent:function(b,d,c,g,a){return this.fireEvent(b,this,c,g,d)},destroy:function(){if(this.setEditor){this.setEditor(null)}this.purgeListeners()},renderer:function(a){return a},getEditor:function(a){return this.editable!==false?this.editor:null},setEditor:function(b){var a=this.editor;if(a){if(a.gridEditor){a.gridEditor.destroy();delete a.gridEditor}else{a.destroy()}}this.editor=null;if(b){if(!b.isXType){b=Ext.create(b,"textfield")}this.editor=b}},getCellEditor:function(b){var a=this.getEditor(b);if(a){if(!a.startEdit){if(!a.gridEditor){a.gridEditor=new Ext.grid.GridEditor(a)}a=a.gridEditor}}return a}});Ext.grid.BooleanColumn=Ext.extend(Ext.grid.Column,{trueText:"true",falseText:"false",undefinedText:"&#160;",constructor:function(a){Ext.grid.BooleanColumn.superclass.constructor.call(this,a);var c=this.trueText,d=this.falseText,b=this.undefinedText;this.renderer=function(e){if(e===undefined){return b}if(!e||e==="false"){return d}return c}}});Ext.grid.NumberColumn=Ext.extend(Ext.grid.Column,{format:"0,000.00",constructor:function(a){Ext.grid.NumberColumn.superclass.constructor.call(this,a);this.renderer=Ext.util.Format.numberRenderer(this.format)}});Ext.grid.DateColumn=Ext.extend(Ext.grid.Column,{format:"m/d/Y",constructor:function(a){Ext.grid.DateColumn.superclass.constructor.call(this,a);this.renderer=Ext.util.Format.dateRenderer(this.format)}});Ext.grid.TemplateColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){Ext.grid.TemplateColumn.superclass.constructor.call(this,a);var b=(!Ext.isPrimitive(this.tpl)&&this.tpl.compile)?this.tpl:new Ext.XTemplate(this.tpl);this.renderer=function(d,e,c){return b.apply(c.data)};this.tpl=b}});Ext.grid.ActionColumn=Ext.extend(Ext.grid.Column,{header:"&#160;",actionIdRe:/x-action-col-(\d+)/,altText:"",constructor:function(b){var g=this,c=b.items||(g.items=[g]),a=c.length,d,e;Ext.grid.ActionColumn.superclass.constructor.call(g,b);g.renderer=function(h,i){h=Ext.isFunction(b.renderer)?b.renderer.apply(this,arguments)||"":"";i.css+=" x-action-col-cell";for(d=0;d<a;d++){e=c[d];h+='<img alt="'+g.altText+'" src="'+(e.icon||Ext.BLANK_IMAGE_URL)+'" class="x-action-col-icon x-action-col-'+String(d)+" "+(e.iconCls||"")+" "+(Ext.isFunction(e.getClass)?e.getClass.apply(e.scope||this.scope||this,arguments):"")+'"'+((e.tooltip)?' ext:qtip="'+e.tooltip+'"':"")+" />"}return h}},destroy:function(){delete this.items;delete this.renderer;return Ext.grid.ActionColumn.superclass.destroy.apply(this,arguments)},processEvent:function(c,i,d,k,b){var a=i.getTarget().className.match(this.actionIdRe),h,g;if(a&&(h=this.items[parseInt(a[1],10)])){if(c=="click"){(g=h.handler||this.handler)&&g.call(h.scope||this.scope||this,d,k,b,h,i)}else{if((c=="mousedown")&&(h.stopSelection!==false)){return false}}}return Ext.grid.ActionColumn.superclass.processEvent.apply(this,arguments)}});Ext.grid.Column.types={gridcolumn:Ext.grid.Column,booleancolumn:Ext.grid.BooleanColumn,numbercolumn:Ext.grid.NumberColumn,datecolumn:Ext.grid.DateColumn,templatecolumn:Ext.grid.TemplateColumn,actioncolumn:Ext.grid.ActionColumn};Ext.grid.RowNumberer=Ext.extend(Object,{header:"",width:23,sortable:false,constructor:function(a){Ext.apply(this,a);if(this.rowspan){this.renderer=this.renderer.createDelegate(this)}},fixed:true,hideable:false,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:'<div class="x-grid3-hd-checker">&#160;</div>',width:20,sortable:false,menuDisabled:true,fixed:true,hideable:false,dataIndex:"",id:"checker",isColumn:true,constructor:function(){Ext.grid.CheckboxSelectionModel.superclass.constructor.apply(this,arguments);if(this.checkOnly){this.handleMouseDown=Ext.emptyFn}},initEvents:function(){Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on("render",function(){Ext.fly(this.grid.getView().innerHd).on("mousedown",this.onHdMouseDown,this)},this)},processEvent:function(b,d,c,g,a){if(b=="mousedown"){this.onMouseDown(d,d.getTarget());return false}else{return Ext.grid.Column.prototype.processEvent.apply(this,arguments)}},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);this.grid.getView().focusRow(a)}}}},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'<div class="x-grid3-row-checker">&#160;</div>'},onEditorSelect:function(b,a){if(a!=b&&!this.checkOnly){this.selectRow(b)}}});Ext.grid.CellSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{constructor:function(a){Ext.apply(this,a);this.selection=null;this.addEvents("beforecellselect","cellselect","selectionchange");Ext.grid.CellSelectionModel.superclass.constructor.call(this)},initEvents:function(){this.grid.on("cellmousedown",this.handleMouseDown,this);this.grid.on(Ext.EventManager.getKeyEvent(),this.handleKeyDown,this);this.grid.getView().on({scope:this,refresh:this.onViewChange,rowupdated:this.onRowUpdated,beforerowremoved:this.clearSelections,beforerowsinserted:this.clearSelections});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(g,c,b,e,d){if(this.fireEvent("beforecellselect",this,g,c)!==false){this.clearSelections();d=d||this.grid.store.getAt(g);this.selection={record:d,cell:[g,c]};if(!b){var a=this.grid.getView();a.onCellSelect(g,c);if(e!==true){a.focusCell(g,c)}}this.fireEvent("cellselect",this,g,c);this.fireEvent("selectionchange",this,this.selection)}},isSelectable:function(c,b,a){return !a.isHidden(b)},onEditorKey:function(b,a){if(a.getKey()==a.TAB){this.handleKeyDown(a)}},handleKeyDown:function(l){if(!l.isNavKeyPress()){return}var d=l.getKey(),i=this.grid,q=this.selection,b=this,n=function(g,c,e){return i.walkCells(g,c,e,i.isEditor&&i.editing?b.acceptsNav:b.isSelectable,b)},p,h,a,m,o;switch(d){case l.ESC:case l.PAGE_UP:case l.PAGE_DOWN:break;default:l.stopEvent();break}if(!q){p=n(0,0,1);if(p){this.select(p[0],p[1])}return}p=q.cell;a=p[0];m=p[1];switch(d){case l.TAB:if(l.shiftKey){h=n(a,m-1,-1)}else{h=n(a,m+1,1)}break;case l.DOWN:h=n(a+1,m,1);break;case l.UP:h=n(a-1,m,-1);break;case l.RIGHT:h=n(a,m+1,1);break;case l.LEFT:h=n(a,m-1,-1);break;case l.ENTER:if(i.isEditor&&!i.editing){i.startEditing(a,m);return}break}if(h){a=h[0];m=h[1];this.select(a,m);if(i.isEditor&&i.editing){o=i.activeEditor;if(o&&o.field.triggerBlur){o.field.triggerBlur()}i.startEditing(a,m)}}},acceptsNav:function(c,b,a){return !a.isHidden(b)&&a.isCellEditable(b,c)}});Ext.grid.EditorGridPanel=Ext.extend(Ext.grid.GridPanel,{clicksToEdit:2,forceValidation:false,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.getGridEl().on("mousewheel",this.stopEditing.createDelegate(this,[true]),this);this.on("columnresize",this.stopEditing,this,[true]);if(this.clicksToEdit==1){this.on("cellclick",this.onCellDblClick,this)}else{var a=this.getView();if(this.clicksToEdit=="auto"&&a.mainBody){a.mainBody.on("mousedown",this.onAutoEditClick,this)}this.on("celldblclick",this.onCellDblClick,this)}},onResize:function(){Ext.grid.EditorGridPanel.superclass.onResize.apply(this,arguments);var a=this.activeEditor;if(this.editing&&a){a.realign(true)}},onCellDblClick:function(b,c,a){this.startEditing(c,a)},onAutoEditClick:function(c,b){if(c.button!==0){return}var g=this.view.findRowIndex(b),a=this.view.findCellIndex(b);if(g!==false&&a!==false){this.stopEditing();if(this.selModel.getSelectedCell){var d=this.selModel.getSelectedCell();if(d&&d[0]===g&&d[1]===a){this.startEditing(g,a)}}else{if(this.selModel.isSelected(g)){this.startEditing(g,a)}}}},onEditComplete:function(b,d,a){this.editing=false;this.lastActiveEditor=this.activeEditor;this.activeEditor=null;var c=b.record,h=this.colModel.getDataIndex(b.col);d=this.postEditValue(d,a,c,h);if(this.forceValidation===true||String(d)!==String(a)){var g={grid:this,record:c,field:h,originalValue:a,value:d,row:b.row,column:b.col,cancel:false};if(this.fireEvent("validateedit",g)!==false&&!g.cancel&&String(d)!==String(a)){c.set(h,g.value);delete g.cancel;this.fireEvent("afteredit",g)}}this.view.focusCell(b.row,b.col)},startEditing:function(i,c){this.stopEditing();if(this.colModel.isCellEditable(c,i)){this.view.ensureVisible(i,c,true);var d=this.store.getAt(i),h=this.colModel.getDataIndex(c),g={grid:this,record:d,field:h,value:d.data[h],row:i,column:c,cancel:false};if(this.fireEvent("beforeedit",g)!==false&&!g.cancel){this.editing=true;var b=this.colModel.getCellEditor(c,i);if(!b){return}if(!b.rendered){b.parentEl=this.view.getEditorParent(b);b.on({scope:this,render:{fn:function(e){e.field.focus(false,true)},single:true,scope:this},specialkey:function(l,k){this.getSelectionModel().onEditorKey(l,k)},complete:this.onEditComplete,canceledit:this.stopEditing.createDelegate(this,[true])})}Ext.apply(b,{row:i,col:c,record:d});this.lastEdit={row:i,col:c};this.activeEditor=b;b.selectSameEditor=(this.activeEditor==this.lastActiveEditor);var a=this.preEditValue(d,h);b.startEdit(this.view.getCell(i,c).firstChild,Ext.isDefined(a)?a:"");(function(){delete b.selectSameEditor}).defer(50)}}},preEditValue:function(a,c){var b=a.data[c];return this.autoEncode&&Ext.isString(b)?Ext.util.Format.htmlDecode(b):b},postEditValue:function(c,a,b,d){return this.autoEncode&&Ext.isString(c)?Ext.util.Format.htmlEncode(c):c},stopEditing:function(b){if(this.editing){var a=this.lastActiveEditor=this.activeEditor;if(a){a[b===true?"cancelEdit":"completeEdit"]();this.view.focusCell(a.row,a.col)}this.activeEditor=null}this.editing=false}});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=Ext.extend(Ext.util.Observable,{constructor: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)},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){return Ext.isPrimitive(a)||Ext.isDate(a)},setValue:function(d,c,a){var b=this.getRec(d);if(b){b.set("value",c);this.source[d]=c}else{if(a){this.source[d]=c;b=new Ext.grid.PropertyRecord({name:d,value:c},d);this.store.add(b)}}},remove:function(b){var a=this.getRec(b);if(a){this.store.remove(a);delete this.source[b]}},getRec:function(a){return this.store.getById(a)},getSource:function(){return this.source}});Ext.grid.PropertyColumnModel=Ext.extend(Ext.grid.ColumnModel,{nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",trueText:"true",falseText:"false",constructor:function(c,b){var d=Ext.grid,e=Ext.form;this.grid=c;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;var a=new e.Field({autoCreate:{tag:"select",children:[{tag:"option",value:"true",html:this.trueText},{tag:"option",value:"false",html:this.falseText}]},getValue:function(){return this.el.dom.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,{autoSize:"both"})};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this)},renderDate:function(a){return a.dateFormat(this.dateFormat)},renderBool:function(a){return this[a?"trueText":"falseText"]},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(d,b,c){var a=this.grid.customRenderers[c.get("name")];if(a){return a.apply(this,arguments)}var e=d;if(Ext.isDate(d)){e=this.renderDate(d)}else{if(typeof d=="boolean"){e=this.renderBool(d)}}return Ext.util.Format.htmlEncode(e)},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),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}}}},destroy:function(){Ext.grid.PropertyColumnModel.superclass.destroy.call(this);this.destroyEditors(this.editors);this.destroyEditors(this.grid.customEditors)},destroyEditors:function(b){for(var a in b){Ext.destroy(b[a])}}});Ext.grid.PropertyGrid=Ext.extend(Ext.grid.EditorGridPanel,{enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,viewConfig:{forceFit:true},initComponent:function(){this.customRenderers=this.customRenderers||{};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.mon(this.selModel,"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()},setProperty:function(c,b,a){this.propStore.setValue(c,b,a)},removeProperty:function(a){this.propStore.remove(a)}});Ext.reg("propertygrid",Ext.grid.PropertyGrid);Ext.grid.GroupingView=Ext.extend(Ext.grid.GridView,{groupByText:"Group By This Field",showGroupsText:"Show in Groups",hideGroupedColumn:false,showGroupName:true,startCollapsed:false,enableGrouping:true,enableGroupingMenu:true,enableNoGroups:true,emptyGroupText:"(None)",ignoreAdd:false,groupTextTpl:"{text}",groupMode:"value",cancelEditOnToggle:true,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('<div id="{groupId}" class="x-grid-group {cls}">','<div id="{groupId}-hd" class="x-grid-group-hd" style="{style}"><div class="x-grid-group-title">',this.groupTextTpl,"</div></div>",'<div id="{groupId}-bd" class="x-grid-group-body">')}this.startGroup.compile();if(!this.endGroup){this.endGroup="</div></div>"}},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(d,a,b){if(this.canGroup()&&!this.ignoreAdd){var c=this.getScrollState();this.fireEvent("beforerowsinserted",d,b,b+(a.length-1));this.refresh();this.restoreScroll(c);this.fireEvent("rowsinserted",d,b,b+(a.length-1))}else{if(!this.canGroup()){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,a=this.hmenu.items,b=this.cm.config[this.hdCtxIndex].groupable===false;if((c=a.get("groupBy"))){c.setDisabled(b)}if((c=a.get("showGroups"))){c.setDisabled(b);c.setChecked(this.canGroup(),true)}},renderUI:function(){var a=Ext.grid.GroupingView.superclass.renderUI.call(this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{itemId:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({itemId:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}return a},processEvent:function(b,i){Ext.grid.GroupingView.superclass.processEvent.call(this,b,i);var h=i.getTarget(".x-grid-group-hd",this.mainBody);if(h){var g=this.getGroupField(),d=this.getPrefix(g),a=h.id.substring(d.length),c=new RegExp("gp-"+Ext.escapeRe(g)+"--hd");a=a.substr(0,a.length-3);if(a||c.test(h.id)){this.grid.fireEvent("group"+b,this.grid,g,a,i)}if(b=="mousedown"&&i.button==0){this.toggleGroup(h.parentNode)}}},onGroupByClick:function(){var a=this.grid;this.enableGrouping=true;a.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));a.fireEvent("groupchange",a,a.store.getGroupState());this.beforeMenuShow();this.refresh()},onShowGroupsClick:function(a,b){this.enableGrouping=b;if(b){this.onGroupByClick()}else{this.grid.store.clearGrouping();this.grid.fireEvent("groupchange",this,null)}},toggleRowIndex:function(c,a){if(!this.canGroup()){return}var b=this.getRow(c);if(b){this.toggleGroup(this.findGroup(b),a)}},toggleGroup:function(c,b){var a=Ext.get(c);b=Ext.isDefined(b)?b:a.hasClass("x-grid-group-collapsed");if(this.state[a.id]!==b){if(this.cancelEditOnToggle!==false){this.grid.stopEditing(true)}this.state[a.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)},getGroup:function(a,e,i,k,b,h){var c=this.cm.config[b],d=i?i.call(c.scope,a,{},e,k,b,h):String(a);if(d===""||d==="&#160;"){d=c.emptyGroupText||this.emptyGroupText}return d},getGroupField:function(){return this.grid.store.getGroupState()},afterRender:function(){if(!this.ds||!this.cm){return}Ext.grid.GroupingView.superclass.afterRender.call(this);if(this.grid.deferRowRender){this.updateGroupWidths()}},afterRenderUI:function(){Ext.grid.GroupingView.superclass.afterRenderUI.call(this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{itemId:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({itemId:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}},renderRows:function(){var a=this.getGroupField();var e=!!a;if(this.hideGroupedColumn){var b=this.cm.findColumnIndex(a),d=Ext.isDefined(this.lastGroupField);if(!e&&d){this.mainBody.update("");this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField),false);delete this.lastGroupField}else{if(e&&!d){this.lastGroupField=a;this.cm.setHidden(b,true)}else{if(e&&d&&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(c,h,s,a,q,t){if(h.length<1){return""}if(!this.canGroup()||this.isUpdating){return Ext.grid.GroupingView.superclass.doRender.apply(this,arguments)}var A=this.getGroupField(),p=this.cm.findColumnIndex(A),x,k="width:"+this.getTotalWidth()+";",e=this.cm.config[p],b=e.groupRenderer||e.renderer,u=this.showGroupName?(e.groupName||e.header)+": ":"",z=[],m,v,w,o;for(v=0,w=h.length;v<w;v++){var l=a+v,n=h[v],d=n.data[A];x=this.getGroup(d,n,b,l,p,s);if(!m||m.group!=x){o=this.constructId(d,A,p);this.state[o]=!(Ext.isDefined(this.state[o])?!this.state[o]:this.startCollapsed);m={group:x,gvalue:d,text:u+x,groupId:o,startRow:l,rs:[n],cls:this.state[o]?"":"x-grid-group-collapsed",style:k};z.push(m)}else{m.rs.push(n)}n._groupId=o}var y=[];for(v=0,w=z.length;v<w;v++){x=z[v];this.doGroupStart(y,x,c,s,q);y[y.length]=Ext.grid.GroupingView.superclass.doRender.call(this,c,x.rs,s,x.startRow,q,t);this.doGroupEnd(y,x,c,s,q)}return y.join("")},getGroupId:function(a){var b=this.getGroupField();return this.constructId(a,b,this.cm.findColumnIndex(b))},constructId:function(c,e,a){var b=this.cm.config[a],d=b.groupRenderer||b.renderer,g=(this.groupMode=="value")?c:this.getGroup(c,{data:{}},d,0,a,this.ds);return this.getPrefix(e)+Ext.util.Format.htmlEncode(g)},canGroup:function(){return this.enableGrouping&&!!this.getGroupField()},getPrefix:function(a){return this.grid.getGridEl().id+"-gp-"+a+"-"},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.canGroup()){return Ext.grid.GroupingView.superclass.getRows.call(this)}var k=[],c=this.getGroups(),h,e=0,a=c.length,d,b;for(;e<a;++e){h=c[e].childNodes[1];if(h){h=h.childNodes;for(d=0,b=h.length;d<b;++d){k[k.length]=h[d]}}}return k},updateGroupWidths:function(){if(!this.canGroup()||!this.hasRows()){return}var c=Math.max(this.cm.getTotalWidth(),this.el.dom.offsetWidth-this.getScrollOffset())+"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){Ext.grid.GroupingView.superclass.onColumnWidthUpdated.call(this,c,a,b);this.updateGroupWidths()},onAllColumnWidthsUpdated:function(a,b){Ext.grid.GroupingView.superclass.onAllColumnWidthsUpdated.call(this,a,b);this.updateGroupWidths()},onColumnHiddenUpdated:function(b,c,a){Ext.grid.GroupingView.superclass.onColumnHiddenUpdated.call(this,b,c,a);this.updateGroupWidths()},onLayout:function(){this.updateGroupWidths()},onBeforeRowSelect:function(b,a){this.toggleRowIndex(a,true)}});Ext.grid.GroupingView.GROUP_ID=1000;\r
27 /*\r
28 ---\r
29 MooTools: the javascript framework\r
30 \r
31 web build:\r
32  - http://mootools.net/core/7c56cfef9dddcf170a5d68e3fb61cfd7\r
33 \r
34 packager build:\r
35  - packager build Core/Core Core/Array Core/String Core/Number Core/Function Core/Object Core/Event Core/Browser Core/Class Core/Class.Extras Core/Slick.Parser Core/Slick.Finder Core/Element Core/Element.Style Core/Element.Event Core/Element.Dimensions Core/Fx Core/Fx.CSS Core/Fx.Tween Core/Fx.Morph Core/Fx.Transitions Core/Request Core/Request.HTML Core/Request.JSON Core/Cookie Core/JSON Core/DOMReady Core/Swiff\r
36 \r
37 copyrights:\r
38   - [MooTools](http://mootools.net)\r
39 \r
40 licenses:\r
41   - [MIT License](http://mootools.net/license.txt)\r
42 ...\r
43 */\r
44 (function(){this.MooTools={version:"1.3.2",build:"c9f1ff10e9e7facb65e9481049ed1b450959d587"};var e=this.typeOf=function(i){if(i==null){return"null";}if(i.$family){return i.$family();\r
45 }if(i.nodeName){if(i.nodeType==1){return"element";}if(i.nodeType==3){return(/\S/).test(i.nodeValue)?"textnode":"whitespace";}}else{if(typeof i.length=="number"){if(i.callee){return"arguments";\r
46 }if("item" in i){return"collection";}}}return typeof i;};var u=this.instanceOf=function(w,i){if(w==null){return false;}var v=w.$constructor||w.constructor;\r
47 while(v){if(v===i){return true;}v=v.parent;}return w instanceof i;};var f=this.Function;var r=true;for(var q in {toString:1}){r=null;}if(r){r=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];\r
48 }f.prototype.overloadSetter=function(v){var i=this;return function(x,w){if(x==null){return this;}if(v||typeof x!="string"){for(var y in x){i.call(this,y,x[y]);\r
49 }if(r){for(var z=r.length;z--;){y=r[z];if(x.hasOwnProperty(y)){i.call(this,y,x[y]);}}}}else{i.call(this,x,w);}return this;};};f.prototype.overloadGetter=function(v){var i=this;\r
50 return function(x){var y,w;if(v||typeof x!="string"){y=x;}else{if(arguments.length>1){y=arguments;}}if(y){w={};for(var z=0;z<y.length;z++){w[y[z]]=i.call(this,y[z]);\r
51 }}else{w=i.call(this,x);}return w;};};f.prototype.extend=function(i,v){this[i]=v;}.overloadSetter();f.prototype.implement=function(i,v){this.prototype[i]=v;\r
52 }.overloadSetter();var o=Array.prototype.slice;f.from=function(i){return(e(i)=="function")?i:function(){return i;};};Array.from=function(i){if(i==null){return[];\r
53 }return(k.isEnumerable(i)&&typeof i!="string")?(e(i)=="array")?i:o.call(i):[i];};Number.from=function(v){var i=parseFloat(v);return isFinite(i)?i:null;\r
54 };String.from=function(i){return i+"";};f.implement({hide:function(){this.$hidden=true;return this;},protect:function(){this.$protected=true;return this;\r
55 }});var k=this.Type=function(x,w){if(x){var v=x.toLowerCase();var i=function(y){return(e(y)==v);};k["is"+x]=i;if(w!=null){w.prototype.$family=(function(){return v;\r
56 }).hide();w.type=i;}}if(w==null){return null;}w.extend(this);w.$constructor=k;w.prototype.$constructor=w;return w;};var p=Object.prototype.toString;k.isEnumerable=function(i){return(i!=null&&typeof i.length=="number"&&p.call(i)!="[object Function]");\r
57 };var b={};var d=function(i){var v=e(i.prototype);return b[v]||(b[v]=[]);};var h=function(w,A){if(A&&A.$hidden){return;}var v=d(this);for(var x=0;x<v.length;\r
58 x++){var z=v[x];if(e(z)=="type"){h.call(z,w,A);}else{z.call(this,w,A);}}var y=this.prototype[w];if(y==null||!y.$protected){this.prototype[w]=A;}if(this[w]==null&&e(A)=="function"){t.call(this,w,function(i){return A.apply(i,o.call(arguments,1));\r
59 });}};var t=function(i,w){if(w&&w.$hidden){return;}var v=this[i];if(v==null||!v.$protected){this[i]=w;}};k.implement({implement:h.overloadSetter(),extend:t.overloadSetter(),alias:function(i,v){h.call(this,i,this.prototype[v]);\r
60 }.overloadSetter(),mirror:function(i){d(this).push(i);return this;}});new k("Type",k);var c=function(v,z,x){var w=(z!=Object),D=z.prototype;if(w){z=new k(v,z);\r
61 }for(var A=0,y=x.length;A<y;A++){var E=x[A],C=z[E],B=D[E];if(C){C.protect();}if(w&&B){delete D[E];D[E]=B.protect();}}if(w){z.implement(D);}return c;};c("String",String,["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","quote","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase"])("Array",Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight"])("Number",Number,["toExponential","toFixed","toLocaleString","toPrecision"])("Function",f,["apply","call","bind"])("RegExp",RegExp,["exec","test"])("Object",Object,["create","defineProperty","defineProperties","keys","getPrototypeOf","getOwnPropertyDescriptor","getOwnPropertyNames","preventExtensions","isExtensible","seal","isSealed","freeze","isFrozen"])("Date",Date,["now"]);\r
62 Object.extend=t.overloadSetter();Date.extend("now",function(){return +(new Date);});new k("Boolean",Boolean);Number.prototype.$family=function(){return isFinite(this)?"number":"null";\r
63 }.hide();Number.extend("random",function(v,i){return Math.floor(Math.random()*(i-v+1)+v);});var l=Object.prototype.hasOwnProperty;Object.extend("forEach",function(i,w,x){for(var v in i){if(l.call(i,v)){w.call(x,i[v],v,i);\r
64 }}});Object.each=Object.forEach;Array.implement({forEach:function(x,y){for(var w=0,v=this.length;w<v;w++){if(w in this){x.call(y,this[w],w,this);}}},each:function(i,v){Array.forEach(this,i,v);\r
65 return this;}});var s=function(i){switch(e(i)){case"array":return i.clone();case"object":return Object.clone(i);default:return i;}};Array.implement("clone",function(){var v=this.length,w=new Array(v);\r
66 while(v--){w[v]=s(this[v]);}return w;});var a=function(v,i,w){switch(e(w)){case"object":if(e(v[i])=="object"){Object.merge(v[i],w);}else{v[i]=Object.clone(w);\r
67 }break;case"array":v[i]=w.clone();break;default:v[i]=w;}return v;};Object.extend({merge:function(C,y,x){if(e(y)=="string"){return a(C,y,x);}for(var B=1,w=arguments.length;\r
68 B<w;B++){var z=arguments[B];for(var A in z){a(C,A,z[A]);}}return C;},clone:function(i){var w={};for(var v in i){w[v]=s(i[v]);}return w;},append:function(z){for(var y=1,w=arguments.length;\r
69 y<w;y++){var v=arguments[y]||{};for(var x in v){z[x]=v[x];}}return z;}});["Object","WhiteSpace","TextNode","Collection","Arguments"].each(function(i){new k(i);\r
70 });var j=Date.now();String.extend("uniqueID",function(){return(j++).toString(36);});var g=this.Hash=new k("Hash",function(i){if(e(i)=="hash"){i=Object.clone(i.getClean());\r
71 }for(var v in i){this[v]=i[v];}return this;});g.implement({forEach:function(i,v){Object.forEach(this,i,v);},getClean:function(){var v={};for(var i in this){if(this.hasOwnProperty(i)){v[i]=this[i];\r
72 }}return v;},getLength:function(){var v=0;for(var i in this){if(this.hasOwnProperty(i)){v++;}}return v;}});g.alias("each","forEach");Object.type=k.isObject;\r
73 var n=this.Native=function(i){return new k(i.name,i.initialize);};n.type=k.type;n.implement=function(x,v){for(var w=0;w<x.length;w++){x[w].implement(v);\r
74 }return n;};var m=Array.type;Array.type=function(i){return u(i,Array)||m(i);};this.$A=function(i){return Array.from(i).slice();};this.$arguments=function(v){return function(){return arguments[v];\r
75 };};this.$chk=function(i){return !!(i||i===0);};this.$clear=function(i){clearTimeout(i);clearInterval(i);return null;};this.$defined=function(i){return(i!=null);\r
76 };this.$each=function(w,v,x){var i=e(w);((i=="arguments"||i=="collection"||i=="array"||i=="elements")?Array:Object).each(w,v,x);};this.$empty=function(){};\r
77 this.$extend=function(v,i){return Object.append(v,i);};this.$H=function(i){return new g(i);};this.$merge=function(){var i=Array.slice(arguments);i.unshift({});\r
78 return Object.merge.apply(null,i);};this.$lambda=f.from;this.$mixin=Object.merge;this.$random=Number.random;this.$splat=Array.from;this.$time=Date.now;\r
79 this.$type=function(i){var v=e(i);if(v=="elements"){return"array";}return(v=="null")?false:v;};this.$unlink=function(i){switch(e(i)){case"object":return Object.clone(i);\r
80 case"array":return Array.clone(i);case"hash":return new g(i);default:return i;}};})();Array.implement({every:function(c,d){for(var b=0,a=this.length;b<a;\r
81 b++){if((b in this)&&!c.call(d,this[b],b,this)){return false;}}return true;},filter:function(d,e){var c=[];for(var b=0,a=this.length;b<a;b++){if((b in this)&&d.call(e,this[b],b,this)){c.push(this[b]);\r
82 }}return c;},indexOf:function(c,d){var a=this.length;for(var b=(d<0)?Math.max(0,a+d):d||0;b<a;b++){if(this[b]===c){return b;}}return -1;},map:function(d,e){var c=[];\r
83 for(var b=0,a=this.length;b<a;b++){if(b in this){c[b]=d.call(e,this[b],b,this);}}return c;},some:function(c,d){for(var b=0,a=this.length;b<a;b++){if((b in this)&&c.call(d,this[b],b,this)){return true;\r
84 }}return false;},clean:function(){return this.filter(function(a){return a!=null;});},invoke:function(a){var b=Array.slice(arguments,1);return this.map(function(c){return c[a].apply(c,b);\r
85 });},associate:function(c){var d={},b=Math.min(this.length,c.length);for(var a=0;a<b;a++){d[c[a]]=this[a];}return d;},link:function(c){var a={};for(var e=0,b=this.length;\r
86 e<b;e++){for(var d in c){if(c[d](this[e])){a[d]=this[e];delete c[d];break;}}}return a;},contains:function(a,b){return this.indexOf(a,b)!=-1;},append:function(a){this.push.apply(this,a);\r
87 return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[Number.random(0,this.length-1)]:null;\r
88 },include:function(a){if(!this.contains(a)){this.push(a);}return this;},combine:function(c){for(var b=0,a=c.length;b<a;b++){this.include(c[b]);}return this;\r
89 },erase:function(b){for(var a=this.length;a--;){if(this[a]===b){this.splice(a,1);}}return this;},empty:function(){this.length=0;return this;},flatten:function(){var d=[];\r
90 for(var b=0,a=this.length;b<a;b++){var c=typeOf(this[b]);if(c=="null"){continue;}d=d.concat((c=="array"||c=="collection"||c=="arguments"||instanceOf(this[b],Array))?Array.flatten(this[b]):this[b]);\r
91 }return d;},pick:function(){for(var b=0,a=this.length;b<a;b++){if(this[b]!=null){return this[b];}}return null;},hexToRgb:function(b){if(this.length!=3){return null;\r
92 }var a=this.map(function(c){if(c.length==1){c+=c;}return c.toInt(16);});return(b)?a:"rgb("+a+")";},rgbToHex:function(d){if(this.length<3){return null;}if(this.length==4&&this[3]==0&&!d){return"transparent";\r
93 }var b=[];for(var a=0;a<3;a++){var c=(this[a]-0).toString(16);b.push((c.length==1)?"0"+c:c);}return(d)?b:"#"+b.join("");}});Array.alias("extend","append");\r
94 var $pick=function(){return Array.from(arguments).pick();};String.implement({test:function(a,b){return((typeOf(a)=="regexp")?a:new RegExp(""+a,b)).test(this);\r
95 },contains:function(a,b){return(b)?(b+this+b).indexOf(b+a+b)>-1:this.indexOf(a)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim();\r
96 },camelCase:function(){return this.replace(/-\D/g,function(a){return a.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(a){return("-"+a.charAt(0).toLowerCase());\r
97 });},capitalize:function(){return this.replace(/\b[a-z]/g,function(a){return a.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1");\r
98 },toInt:function(a){return parseInt(this,a||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(b){var a=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);\r
99 return(a)?a.slice(1).hexToRgb(b):null;},rgbToHex:function(b){var a=this.match(/\d{1,3}/g);return(a)?a.rgbToHex(b):null;},substitute:function(a,b){return this.replace(b||(/\\?\{([^{}]+)\}/g),function(d,c){if(d.charAt(0)=="\\"){return d.slice(1);\r
100 }return(a[c]!=null)?a[c]:"";});}});Number.implement({limit:function(b,a){return Math.min(a,Math.max(b,this));},round:function(a){a=Math.pow(10,a||0).toFixed(a<0?-a:0);\r
101 return Math.round(this*a)/a;},times:function(b,c){for(var a=0;a<this;a++){b.call(c,a,this);}},toFloat:function(){return parseFloat(this);},toInt:function(a){return parseInt(this,a||10);\r
102 }});Number.alias("each","times");(function(b){var a={};b.each(function(c){if(!Number[c]){a[c]=function(){return Math[c].apply(null,[this].concat(Array.from(arguments)));\r
103 };}});Number.implement(a);})(["abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","max","min","pow","sin","sqrt","tan"]);Function.extend({attempt:function(){for(var b=0,a=arguments.length;\r
104 b<a;b++){try{return arguments[b]();}catch(c){}}return null;}});Function.implement({attempt:function(a,c){try{return this.apply(c,Array.from(a));}catch(b){}return null;\r
105 },bind:function(c){var a=this,b=(arguments.length>1)?Array.slice(arguments,1):null;return function(){if(!b&&!arguments.length){return a.call(c);}if(b&&arguments.length){return a.apply(c,b.concat(Array.from(arguments)));\r
106 }return a.apply(c,b||arguments);};},pass:function(b,c){var a=this;if(b!=null){b=Array.from(b);}return function(){return a.apply(c,b||arguments);};},delay:function(b,c,a){return setTimeout(this.pass((a==null?[]:a),c),b);\r
107 },periodical:function(c,b,a){return setInterval(this.pass((a==null?[]:a),b),c);}});delete Function.prototype.bind;Function.implement({create:function(b){var a=this;\r
108 b=b||{};return function(d){var c=b.arguments;c=(c!=null)?Array.from(c):Array.slice(arguments,(b.event)?1:0);if(b.event){c=[d||window.event].extend(c);}var e=function(){return a.apply(b.bind||null,c);\r
109 };if(b.delay){return setTimeout(e,b.delay);}if(b.periodical){return setInterval(e,b.periodical);}if(b.attempt){return Function.attempt(e);}return e();};\r
110 },bind:function(c,b){var a=this;if(b!=null){b=Array.from(b);}return function(){return a.apply(c,b||arguments);};},bindWithEvent:function(c,b){var a=this;\r
111 if(b!=null){b=Array.from(b);}return function(d){return a.apply(c,(b==null)?arguments:[d].concat(b));};},run:function(a,b){return this.apply(b,Array.from(a));\r
112 }});var $try=Function.attempt;(function(){var a=Object.prototype.hasOwnProperty;Object.extend({subset:function(d,g){var f={};for(var e=0,b=g.length;e<b;\r
113 e++){var c=g[e];if(c in d){f[c]=d[c];}}return f;},map:function(b,e,f){var d={};for(var c in b){if(a.call(b,c)){d[c]=e.call(f,b[c],c,b);}}return d;},filter:function(b,e,g){var d={};\r
114 for(var c in b){var f=b[c];if(a.call(b,c)&&e.call(g,f,c,b)){d[c]=f;}}return d;},every:function(b,d,e){for(var c in b){if(a.call(b,c)&&!d.call(e,b[c],c)){return false;\r
115 }}return true;},some:function(b,d,e){for(var c in b){if(a.call(b,c)&&d.call(e,b[c],c)){return true;}}return false;},keys:function(b){var d=[];for(var c in b){if(a.call(b,c)){d.push(c);\r
116 }}return d;},values:function(c){var b=[];for(var d in c){if(a.call(c,d)){b.push(c[d]);}}return b;},getLength:function(b){return Object.keys(b).length;},keyOf:function(b,d){for(var c in b){if(a.call(b,c)&&b[c]===d){return c;\r
117 }}return null;},contains:function(b,c){return Object.keyOf(b,c)!=null;},toQueryString:function(b,c){var d=[];Object.each(b,function(h,g){if(c){g=c+"["+g+"]";\r
118 }var f;switch(typeOf(h)){case"object":f=Object.toQueryString(h,g);break;case"array":var e={};h.each(function(k,j){e[j]=k;});f=Object.toQueryString(e,g);\r
119 break;default:f=g+"="+encodeURIComponent(h);}if(h!=null){d.push(f);}});return d.join("&");}});})();Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(a){return Object.keyOf(this,a);\r
120 },hasValue:function(a){return Object.contains(this,a);},extend:function(a){Hash.each(a||{},function(c,b){Hash.set(this,b,c);},this);return this;},combine:function(a){Hash.each(a||{},function(c,b){Hash.include(this,b,c);\r
121 },this);return this;},erase:function(a){if(this.hasOwnProperty(a)){delete this[a];}return this;},get:function(a){return(this.hasOwnProperty(a))?this[a]:null;\r
122 },set:function(a,b){if(!this[a]||this.hasOwnProperty(a)){this[a]=b;}return this;},empty:function(){Hash.each(this,function(b,a){delete this[a];},this);\r
123 return this;},include:function(a,b){if(this[a]==null){this[a]=b;}return this;},map:function(a,b){return new Hash(Object.map(this,a,b));},filter:function(a,b){return new Hash(Object.filter(this,a,b));\r
124 },every:function(a,b){return Object.every(this,a,b);},some:function(a,b){return Object.some(this,a,b);},getKeys:function(){return Object.keys(this);},getValues:function(){return Object.values(this);\r
125 },toQueryString:function(a){return Object.toQueryString(this,a);}});Hash.extend=Object.append;Hash.alias({indexOf:"keyOf",contains:"hasValue"});(function(){var l=this.document;\r
126 var j=l.window=this;var b=1;this.$uid=(j.ActiveXObject)?function(e){return(e.uid||(e.uid=[b++]))[0];}:function(e){return e.uid||(e.uid=b++);};$uid(j);$uid(l);\r
127 var a=navigator.userAgent.toLowerCase(),c=navigator.platform.toLowerCase(),k=a.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,"unknown",0],g=k[1]=="ie"&&l.documentMode;\r
128 var p=this.Browser={extend:Function.prototype.extend,name:(k[1]=="version")?k[3]:k[1],version:g||parseFloat((k[1]=="opera"&&k[4])?k[4]:k[2]),Platform:{name:a.match(/ip(?:ad|od|hone)/)?"ios":(a.match(/(?:webos|android)/)||c.match(/mac|win|linux/)||["other"])[0]},Features:{xpath:!!(l.evaluate),air:!!(j.runtime),query:!!(l.querySelector),json:!!(j.JSON)},Plugins:{}};\r
129 p[p.name]=true;p[p.name+parseInt(p.version,10)]=true;p.Platform[p.Platform.name]=true;p.Request=(function(){var r=function(){return new XMLHttpRequest();\r
130 };var q=function(){return new ActiveXObject("MSXML2.XMLHTTP");};var e=function(){return new ActiveXObject("Microsoft.XMLHTTP");};return Function.attempt(function(){r();\r
131 return r;},function(){q();return q;},function(){e();return e;});})();p.Features.xhr=!!(p.Request);var i=(Function.attempt(function(){return navigator.plugins["Shockwave Flash"].description;\r
132 },function(){return new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version");})||"0 r0").match(/\d+/g);p.Plugins.Flash={version:Number(i[0]||"0."+i[1])||0,build:Number(i[2])||0};\r
133 p.exec=function(q){if(!q){return q;}if(j.execScript){j.execScript(q);}else{var e=l.createElement("script");e.setAttribute("type","text/javascript");e.text=q;\r
134 l.head.appendChild(e);l.head.removeChild(e);}return q;};String.implement("stripScripts",function(q){var e="";var r=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(s,t){e+=t+"\n";\r
135 return"";});if(q===true){p.exec(e);}else{if(typeOf(q)=="function"){q(e,r);}}return r;});p.extend({Document:this.Document,Window:this.Window,Element:this.Element,Event:this.Event});\r
136 this.Window=this.$constructor=new Type("Window",function(){});this.$family=Function.from("window").hide();Window.mirror(function(e,q){j[e]=q;});this.Document=l.$constructor=new Type("Document",function(){});\r
137 l.$family=Function.from("document").hide();Document.mirror(function(e,q){l[e]=q;});l.html=l.documentElement;if(!l.head){l.head=l.getElementsByTagName("head")[0];\r
138 }if(l.execCommand){try{l.execCommand("BackgroundImageCache",false,true);}catch(h){}}if(this.attachEvent&&!this.addEventListener){var d=function(){this.detachEvent("onunload",d);\r
139 l.head=l.html=l.window=null;};this.attachEvent("onunload",d);}var n=Array.from;try{n(l.html.childNodes);}catch(h){Array.from=function(q){if(typeof q!="string"&&Type.isEnumerable(q)&&typeOf(q)!="array"){var e=q.length,r=new Array(e);\r
140 while(e--){r[e]=q[e];}return r;}return n(q);};var m=Array.prototype,o=m.slice;["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice"].each(function(e){var q=m[e];\r
141 Array[e]=function(r){return q.apply(Array.from(r),o.call(arguments,1));};});}if(p.Platform.ios){p.Platform.ipod=true;}p.Engine={};var f=function(q,e){p.Engine.name=q;\r
142 p.Engine[q+e]=true;p.Engine.version=e;};if(p.ie){p.Engine.trident=true;switch(p.version){case 6:f("trident",4);break;case 7:f("trident",5);break;case 8:f("trident",6);\r
143 }}if(p.firefox){p.Engine.gecko=true;if(p.version>=3){f("gecko",19);}else{f("gecko",18);}}if(p.safari||p.chrome){p.Engine.webkit=true;switch(p.version){case 2:f("webkit",419);\r
144 break;case 3:f("webkit",420);break;case 4:f("webkit",525);}}if(p.opera){p.Engine.presto=true;if(p.version>=9.6){f("presto",960);}else{if(p.version>=9.5){f("presto",950);\r
145 }else{f("presto",925);}}}if(p.name=="unknown"){switch((a.match(/(?:webkit|khtml|gecko)/)||[])[0]){case"webkit":case"khtml":p.Engine.webkit=true;break;case"gecko":p.Engine.gecko=true;\r
146 }}this.$exec=p.exec;})();var Event=new Type("Event",function(a,i){if(!i){i=window;}var o=i.document;a=a||i.event;if(a.$extended){return a;}this.$extended=true;\r
147 var n=a.type,k=a.target||a.srcElement,m={},c={},q=null,h,l,b,p;while(k&&k.nodeType==3){k=k.parentNode;}if(n.indexOf("key")!=-1){b=a.which||a.keyCode;p=Object.keyOf(Event.Keys,b);\r
148 if(n=="keydown"){var d=b-111;if(d>0&&d<13){p="f"+d;}}if(!p){p=String.fromCharCode(b).toLowerCase();}}else{if((/click|mouse|menu/i).test(n)){o=(!o.compatMode||o.compatMode=="CSS1Compat")?o.html:o.body;\r
149 m={x:(a.pageX!=null)?a.pageX:a.clientX+o.scrollLeft,y:(a.pageY!=null)?a.pageY:a.clientY+o.scrollTop};c={x:(a.pageX!=null)?a.pageX-i.pageXOffset:a.clientX,y:(a.pageY!=null)?a.pageY-i.pageYOffset:a.clientY};\r
150 if((/DOMMouseScroll|mousewheel/).test(n)){l=(a.wheelDelta)?a.wheelDelta/120:-(a.detail||0)/3;}h=(a.which==3)||(a.button==2);if((/over|out/).test(n)){q=a.relatedTarget||a[(n=="mouseover"?"from":"to")+"Element"];\r
151 var j=function(){while(q&&q.nodeType==3){q=q.parentNode;}return true;};var g=(Browser.firefox2)?j.attempt():j();q=(g)?q:null;}}else{if((/gesture|touch/i).test(n)){this.rotation=a.rotation;\r
152 this.scale=a.scale;this.targetTouches=a.targetTouches;this.changedTouches=a.changedTouches;var f=this.touches=a.touches;if(f&&f[0]){var e=f[0];m={x:e.pageX,y:e.pageY};\r
153 c={x:e.clientX,y:e.clientY};}}}}return Object.append(this,{event:a,type:n,page:m,client:c,rightClick:h,wheel:l,relatedTarget:document.id(q),target:document.id(k),code:b,key:p,shift:a.shiftKey,control:a.ctrlKey,alt:a.altKey,meta:a.metaKey});\r
154 });Event.Keys={enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46};Event.Keys=new Hash(Event.Keys);Event.implement({stop:function(){return this.stopPropagation().preventDefault();\r
155 },stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault();\r
156 }else{this.event.returnValue=false;}return this;}});(function(){var a=this.Class=new Type("Class",function(h){if(instanceOf(h,Function)){h={initialize:h};\r
157 }var g=function(){e(this);if(g.$prototyping){return this;}this.$caller=null;var i=(this.initialize)?this.initialize.apply(this,arguments):this;this.$caller=this.caller=null;\r
158 return i;}.extend(this).implement(h);g.$constructor=a;g.prototype.$constructor=g;g.prototype.parent=c;return g;});var c=function(){if(!this.$caller){throw new Error('The method "parent" cannot be called.');\r
159 }var g=this.$caller.$name,h=this.$caller.$owner.parent,i=(h)?h.prototype[g]:null;if(!i){throw new Error('The method "'+g+'" has no parent.');}return i.apply(this,arguments);\r
160 };var e=function(g){for(var h in g){var j=g[h];switch(typeOf(j)){case"object":var i=function(){};i.prototype=j;g[h]=e(new i);break;case"array":g[h]=j.clone();\r
161 break;}}return g;};var b=function(g,h,j){if(j.$origin){j=j.$origin;}var i=function(){if(j.$protected&&this.$caller==null){throw new Error('The method "'+h+'" cannot be called.');\r
162 }var l=this.caller,m=this.$caller;this.caller=m;this.$caller=i;var k=j.apply(this,arguments);this.$caller=m;this.caller=l;return k;}.extend({$owner:g,$origin:j,$name:h});\r
163 return i;};var f=function(h,i,g){if(a.Mutators.hasOwnProperty(h)){i=a.Mutators[h].call(this,i);if(i==null){return this;}}if(typeOf(i)=="function"){if(i.$hidden){return this;\r
164 }this.prototype[h]=(g)?i:b(this,h,i);}else{Object.merge(this.prototype,h,i);}return this;};var d=function(g){g.$prototyping=true;var h=new g;delete g.$prototyping;\r
165 return h;};a.implement("implement",f.overloadSetter());a.Mutators={Extends:function(g){this.parent=g;this.prototype=d(g);},Implements:function(g){Array.from(g).each(function(j){var h=new j;\r
166 for(var i in h){f.call(this,i,h[i],true);}},this);}};})();(function(){this.Chain=new Class({$chain:[],chain:function(){this.$chain.append(Array.flatten(arguments));\r
167 return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty();\r
168 return this;}});var a=function(b){return b.replace(/^on([A-Z])/,function(c,d){return d.toLowerCase();});};this.Events=new Class({$events:{},addEvent:function(d,c,b){d=a(d);\r
169 if(c==$empty){return this;}this.$events[d]=(this.$events[d]||[]).include(c);if(b){c.internal=true;}return this;},addEvents:function(b){for(var c in b){this.addEvent(c,b[c]);\r
170 }return this;},fireEvent:function(e,c,b){e=a(e);var d=this.$events[e];if(!d){return this;}c=Array.from(c);d.each(function(f){if(b){f.delay(b,this,c);}else{f.apply(this,c);\r
171 }},this);return this;},removeEvent:function(e,d){e=a(e);var c=this.$events[e];if(c&&!d.internal){var b=c.indexOf(d);if(b!=-1){delete c[b];}}return this;\r
172 },removeEvents:function(d){var e;if(typeOf(d)=="object"){for(e in d){this.removeEvent(e,d[e]);}return this;}if(d){d=a(d);}for(e in this.$events){if(d&&d!=e){continue;\r
173 }var c=this.$events[e];for(var b=c.length;b--;){if(b in c){this.removeEvent(e,c[b]);}}}return this;}});this.Options=new Class({setOptions:function(){var b=this.options=Object.merge.apply(null,[{},this.options].append(arguments));\r
174 if(this.addEvent){for(var c in b){if(typeOf(b[c])!="function"||!(/^on[A-Z]/).test(c)){continue;}this.addEvent(c,b[c]);delete b[c];}}return this;}});})();\r
175 (function(){var k,n,l,g,a={},c={},m=/\\/g;var e=function(q,p){if(q==null){return null;}if(q.Slick===true){return q;}q=(""+q).replace(/^\s+|\s+$/g,"");g=!!p;\r
176 var o=(g)?c:a;if(o[q]){return o[q];}k={Slick:true,expressions:[],raw:q,reverse:function(){return e(this.raw,true);}};n=-1;while(q!=(q=q.replace(j,b))){}k.length=k.expressions.length;\r
177 return o[k.raw]=(g)?h(k):k;};var i=function(o){if(o==="!"){return" ";}else{if(o===" "){return"!";}else{if((/^!/).test(o)){return o.replace(/^!/,"");}else{return"!"+o;\r
178 }}}};var h=function(u){var r=u.expressions;for(var p=0;p<r.length;p++){var t=r[p];var q={parts:[],tag:"*",combinator:i(t[0].combinator)};for(var o=0;o<t.length;\r
179 o++){var s=t[o];if(!s.reverseCombinator){s.reverseCombinator=" ";}s.combinator=s.reverseCombinator;delete s.reverseCombinator;}t.reverse().push(q);}return u;\r
180 };var f=function(o){return o.replace(/[-[\]{}()*+?.\\^$|,#\s]/g,function(p){return"\\"+p;});};var j=new RegExp("^(?:\\s*(,)\\s*|\\s*(<combinator>+)\\s*|(\\s+)|(<unicode>+|\\*)|\\#(<unicode>+)|\\.(<unicode>+)|\\[\\s*(<unicode1>+)(?:\\s*([*^$!~|]?=)(?:\\s*(?:([\"']?)(.*?)\\9)))?\\s*\\](?!\\])|(:+)(<unicode>+)(?:\\((?:(?:([\"'])([^\\13]*)\\13)|((?:\\([^)]+\\)|[^()]*)+))\\))?)".replace(/<combinator>/,"["+f(">+~`!@$%^&={}\\;</")+"]").replace(/<unicode>/g,"(?:[\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])").replace(/<unicode1>/g,"(?:[:\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])"));\r
181 function b(x,s,D,z,r,C,q,B,A,y,u,F,G,v,p,w){if(s||n===-1){k.expressions[++n]=[];l=-1;if(s){return"";}}if(D||z||l===-1){D=D||" ";var t=k.expressions[n];\r
182 if(g&&t[l]){t[l].reverseCombinator=i(D);}t[++l]={combinator:D,tag:"*"};}var o=k.expressions[n][l];if(r){o.tag=r.replace(m,"");}else{if(C){o.id=C.replace(m,"");\r
183 }else{if(q){q=q.replace(m,"");if(!o.classList){o.classList=[];}if(!o.classes){o.classes=[];}o.classList.push(q);o.classes.push({value:q,regexp:new RegExp("(^|\\s)"+f(q)+"(\\s|$)")});\r
184 }else{if(G){w=w||p;w=w?w.replace(m,""):null;if(!o.pseudos){o.pseudos=[];}o.pseudos.push({key:G.replace(m,""),value:w,type:F.length==1?"class":"element"});\r
185 }else{if(B){B=B.replace(m,"");u=(u||"").replace(m,"");var E,H;switch(A){case"^=":H=new RegExp("^"+f(u));break;case"$=":H=new RegExp(f(u)+"$");break;case"~=":H=new RegExp("(^|\\s)"+f(u)+"(\\s|$)");\r
186 break;case"|=":H=new RegExp("^"+f(u)+"(-|$)");break;case"=":E=function(I){return u==I;};break;case"*=":E=function(I){return I&&I.indexOf(u)>-1;};break;\r
187 case"!=":E=function(I){return u!=I;};break;default:E=function(I){return !!I;};}if(u==""&&(/^[*$^]=$/).test(A)){E=function(){return false;};}if(!E){E=function(I){return I&&H.test(I);\r
188 };}if(!o.attributes){o.attributes=[];}o.attributes.push({key:B,operator:A,value:u,test:E});}}}}}return"";}var d=(this.Slick||{});d.parse=function(o){return e(o);\r
189 };d.escapeRegExp=f;if(!this.Slick){this.Slick=d;}}).apply((typeof exports!="undefined")?exports:this);(function(){var j={},l={},b=Object.prototype.toString;\r
190 j.isNativeCode=function(c){return(/\{\s*\[native code\]\s*\}/).test(""+c);};j.isXML=function(c){return(!!c.xmlVersion)||(!!c.xml)||(b.call(c)=="[object XMLDocument]")||(c.nodeType==9&&c.documentElement.nodeName!="HTML");\r
191 };j.setDocument=function(w){var t=w.nodeType;if(t==9){}else{if(t){w=w.ownerDocument;}else{if(w.navigator){w=w.document;}else{return;}}}if(this.document===w){return;\r
192 }this.document=w;var y=w.documentElement,u=this.getUIDXML(y),o=l[u],A;if(o){for(A in o){this[A]=o[A];}return;}o=l[u]={};o.root=y;o.isXMLDocument=this.isXML(w);\r
193 o.brokenStarGEBTN=o.starSelectsClosedQSA=o.idGetsName=o.brokenMixedCaseQSA=o.brokenGEBCN=o.brokenCheckedQSA=o.brokenEmptyAttributeQSA=o.isHTMLDocument=o.nativeMatchesSelector=false;\r
194 var m,n,x,q,r;var s,c="slick_uniqueid";var z=w.createElement("div");var p=w.body||w.getElementsByTagName("body")[0]||y;p.appendChild(z);try{z.innerHTML='<a id="'+c+'"></a>';\r
195 o.isHTMLDocument=!!w.getElementById(c);}catch(v){}if(o.isHTMLDocument){z.style.display="none";z.appendChild(w.createComment(""));n=(z.getElementsByTagName("*").length>1);\r
196 try{z.innerHTML="foo</foo>";s=z.getElementsByTagName("*");m=(s&&!!s.length&&s[0].nodeName.charAt(0)=="/");}catch(v){}o.brokenStarGEBTN=n||m;try{z.innerHTML='<a name="'+c+'"></a><b id="'+c+'"></b>';\r
197 o.idGetsName=w.getElementById(c)===z.firstChild;}catch(v){}if(z.getElementsByClassName){try{z.innerHTML='<a class="f"></a><a class="b"></a>';z.getElementsByClassName("b").length;\r
198 z.firstChild.className="b";q=(z.getElementsByClassName("b").length!=2);}catch(v){}try{z.innerHTML='<a class="a"></a><a class="f b a"></a>';x=(z.getElementsByClassName("a").length!=2);\r
199 }catch(v){}o.brokenGEBCN=q||x;}if(z.querySelectorAll){try{z.innerHTML="foo</foo>";s=z.querySelectorAll("*");o.starSelectsClosedQSA=(s&&!!s.length&&s[0].nodeName.charAt(0)=="/");\r
200 }catch(v){}try{z.innerHTML='<a class="MiX"></a>';o.brokenMixedCaseQSA=!z.querySelectorAll(".MiX").length;}catch(v){}try{z.innerHTML='<select><option selected="selected">a</option></select>';\r
201 o.brokenCheckedQSA=(z.querySelectorAll(":checked").length==0);}catch(v){}try{z.innerHTML='<a class=""></a>';o.brokenEmptyAttributeQSA=(z.querySelectorAll('[class*=""]').length!=0);\r
202 }catch(v){}}try{z.innerHTML='<form action="s"><input id="action"/></form>';r=(z.firstChild.getAttribute("action")!="s");}catch(v){}o.nativeMatchesSelector=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector;\r
203 if(o.nativeMatchesSelector){try{o.nativeMatchesSelector.call(y,":slick");o.nativeMatchesSelector=null;}catch(v){}}}try{y.slick_expando=1;delete y.slick_expando;\r
204 o.getUID=this.getUIDHTML;}catch(v){o.getUID=this.getUIDXML;}p.removeChild(z);z=s=p=null;o.getAttribute=(o.isHTMLDocument&&r)?function(D,B){var E=this.attributeGetters[B];\r
205 if(E){return E.call(D);}var C=D.getAttributeNode(B);return(C)?C.nodeValue:null;}:function(C,B){var D=this.attributeGetters[B];return(D)?D.call(C):C.getAttribute(B);\r
206 };o.hasAttribute=(y&&this.isNativeCode(y.hasAttribute))?function(C,B){return C.hasAttribute(B);}:function(C,B){C=C.getAttributeNode(B);return !!(C&&(C.specified||C.nodeValue));\r
207 };o.contains=(y&&this.isNativeCode(y.contains))?function(B,C){return B.contains(C);}:(y&&y.compareDocumentPosition)?function(B,C){return B===C||!!(B.compareDocumentPosition(C)&16);\r
208 }:function(B,C){if(C){do{if(C===B){return true;}}while((C=C.parentNode));}return false;};o.documentSorter=(y.compareDocumentPosition)?function(C,B){if(!C.compareDocumentPosition||!B.compareDocumentPosition){return 0;\r
209 }return C.compareDocumentPosition(B)&4?-1:C===B?0:1;}:("sourceIndex" in y)?function(C,B){if(!C.sourceIndex||!B.sourceIndex){return 0;}return C.sourceIndex-B.sourceIndex;\r
210 }:(w.createRange)?function(E,C){if(!E.ownerDocument||!C.ownerDocument){return 0;}var D=E.ownerDocument.createRange(),B=C.ownerDocument.createRange();D.setStart(E,0);\r
211 D.setEnd(E,0);B.setStart(C,0);B.setEnd(C,0);return D.compareBoundaryPoints(Range.START_TO_END,B);}:null;y=null;for(A in o){this[A]=o[A];}};var e=/^([#.]?)((?:[\w-]+|\*))$/,g=/\[.+[*$^]=(?:""|'')?\]/,f={};\r
212 j.search=function(U,z,H,s){var p=this.found=(s)?null:(H||[]);if(!U){return p;}else{if(U.navigator){U=U.document;}else{if(!U.nodeType){return p;}}}var F,O,V=this.uniques={},I=!!(H&&H.length),y=(U.nodeType==9);\r
213 if(this.document!==(y?U:U.ownerDocument)){this.setDocument(U);}if(I){for(O=p.length;O--;){V[this.getUID(p[O])]=true;}}if(typeof z=="string"){var r=z.match(e);\r
214 simpleSelectors:if(r){var u=r[1],v=r[2],A,E;if(!u){if(v=="*"&&this.brokenStarGEBTN){break simpleSelectors;}E=U.getElementsByTagName(v);if(s){return E[0]||null;\r
215 }for(O=0;A=E[O++];){if(!(I&&V[this.getUID(A)])){p.push(A);}}}else{if(u=="#"){if(!this.isHTMLDocument||!y){break simpleSelectors;}A=U.getElementById(v);\r
216 if(!A){return p;}if(this.idGetsName&&A.getAttributeNode("id").nodeValue!=v){break simpleSelectors;}if(s){return A||null;}if(!(I&&V[this.getUID(A)])){p.push(A);\r
217 }}else{if(u=="."){if(!this.isHTMLDocument||((!U.getElementsByClassName||this.brokenGEBCN)&&U.querySelectorAll)){break simpleSelectors;}if(U.getElementsByClassName&&!this.brokenGEBCN){E=U.getElementsByClassName(v);\r
218 if(s){return E[0]||null;}for(O=0;A=E[O++];){if(!(I&&V[this.getUID(A)])){p.push(A);}}}else{var T=new RegExp("(^|\\s)"+d.escapeRegExp(v)+"(\\s|$)");E=U.getElementsByTagName("*");\r
219 for(O=0;A=E[O++];){className=A.className;if(!(className&&T.test(className))){continue;}if(s){return A;}if(!(I&&V[this.getUID(A)])){p.push(A);}}}}}}if(I){this.sort(p);\r
220 }return(s)?null:p;}querySelector:if(U.querySelectorAll){if(!this.isHTMLDocument||f[z]||this.brokenMixedCaseQSA||(this.brokenCheckedQSA&&z.indexOf(":checked")>-1)||(this.brokenEmptyAttributeQSA&&g.test(z))||(!y&&z.indexOf(",")>-1)||d.disableQSA){break querySelector;\r
221 }var S=z,x=U;if(!y){var C=x.getAttribute("id"),t="slickid__";x.setAttribute("id",t);S="#"+t+" "+S;U=x.parentNode;}try{if(s){return U.querySelector(S)||null;\r
222 }else{E=U.querySelectorAll(S);}}catch(Q){f[z]=1;break querySelector;}finally{if(!y){if(C){x.setAttribute("id",C);}else{x.removeAttribute("id");}U=x;}}if(this.starSelectsClosedQSA){for(O=0;\r
223 A=E[O++];){if(A.nodeName>"@"&&!(I&&V[this.getUID(A)])){p.push(A);}}}else{for(O=0;A=E[O++];){if(!(I&&V[this.getUID(A)])){p.push(A);}}}if(I){this.sort(p);\r
224 }return p;}F=this.Slick.parse(z);if(!F.length){return p;}}else{if(z==null){return p;}else{if(z.Slick){F=z;}else{if(this.contains(U.documentElement||U,z)){(p)?p.push(z):p=z;\r
225 return p;}else{return p;}}}}this.posNTH={};this.posNTHLast={};this.posNTHType={};this.posNTHTypeLast={};this.push=(!I&&(s||(F.length==1&&F.expressions[0].length==1)))?this.pushArray:this.pushUID;\r
226 if(p==null){p=[];}var M,L,K;var B,J,D,c,q,G,W;var N,P,o,w,R=F.expressions;search:for(O=0;(P=R[O]);O++){for(M=0;(o=P[M]);M++){B="combinator:"+o.combinator;\r
227 if(!this[B]){continue search;}J=(this.isXMLDocument)?o.tag:o.tag.toUpperCase();D=o.id;c=o.classList;q=o.classes;G=o.attributes;W=o.pseudos;w=(M===(P.length-1));\r
228 this.bitUniques={};if(w){this.uniques=V;this.found=p;}else{this.uniques={};this.found=[];}if(M===0){this[B](U,J,D,q,G,W,c);if(s&&w&&p.length){break search;\r
229 }}else{if(s&&w){for(L=0,K=N.length;L<K;L++){this[B](N[L],J,D,q,G,W,c);if(p.length){break search;}}}else{for(L=0,K=N.length;L<K;L++){this[B](N[L],J,D,q,G,W,c);\r
230 }}}N=this.found;}}if(I||(F.expressions.length>1)){this.sort(p);}return(s)?(p[0]||null):p;};j.uidx=1;j.uidk="slick-uniqueid";j.getUIDXML=function(m){var c=m.getAttribute(this.uidk);\r
231 if(!c){c=this.uidx++;m.setAttribute(this.uidk,c);}return c;};j.getUIDHTML=function(c){return c.uniqueNumber||(c.uniqueNumber=this.uidx++);};j.sort=function(c){if(!this.documentSorter){return c;\r
232 }c.sort(this.documentSorter);return c;};j.cacheNTH={};j.matchNTH=/^([+-]?\d*)?([a-z]+)?([+-]\d+)?$/;j.parseNTHArgument=function(p){var n=p.match(this.matchNTH);\r
233 if(!n){return false;}var o=n[2]||false;var m=n[1]||1;if(m=="-"){m=-1;}var c=+n[3]||0;n=(o=="n")?{a:m,b:c}:(o=="odd")?{a:2,b:1}:(o=="even")?{a:2,b:0}:{a:0,b:m};\r
234 return(this.cacheNTH[p]=n);};j.createNTHPseudo=function(o,m,c,n){return function(r,p){var t=this.getUID(r);if(!this[c][t]){var z=r.parentNode;if(!z){return false;\r
235 }var q=z[o],s=1;if(n){var y=r.nodeName;do{if(q.nodeName!=y){continue;}this[c][this.getUID(q)]=s++;}while((q=q[m]));}else{do{if(q.nodeType!=1){continue;\r
236 }this[c][this.getUID(q)]=s++;}while((q=q[m]));}}p=p||"n";var u=this.cacheNTH[p]||this.parseNTHArgument(p);if(!u){return false;}var x=u.a,w=u.b,v=this[c][t];\r
237 if(x==0){return w==v;}if(x>0){if(v<w){return false;}}else{if(w<v){return false;}}return((v-w)%x)==0;};};j.pushArray=function(o,c,q,n,m,p){if(this.matchSelector(o,c,q,n,m,p)){this.found.push(o);\r
238 }};j.pushUID=function(p,c,r,o,m,q){var n=this.getUID(p);if(!this.uniques[n]&&this.matchSelector(p,c,r,o,m,q)){this.uniques[n]=true;this.found.push(p);}};\r
239 j.matchNode=function(m,n){if(this.isHTMLDocument&&this.nativeMatchesSelector){try{return this.nativeMatchesSelector.call(m,n.replace(/\[([^=]+)=\s*([^'"\]]+?)\s*\]/g,'[$1="$2"]'));\r
240 }catch(u){}}var t=this.Slick.parse(n);if(!t){return true;}var r=t.expressions,p,s=0,q;for(q=0;(currentExpression=r[q]);q++){if(currentExpression.length==1){var o=currentExpression[0];\r
241 if(this.matchSelector(m,(this.isXMLDocument)?o.tag:o.tag.toUpperCase(),o.id,o.classes,o.attributes,o.pseudos)){return true;}s++;}}if(s==t.length){return false;\r
242 }var c=this.search(this.document,t),v;for(q=0;v=c[q++];){if(v===m){return true;}}return false;};j.matchPseudo=function(p,c,o){var m="pseudo:"+c;if(this[m]){return this[m](p,o);\r
243 }var n=this.getAttribute(p,c);return(o)?o==n:!!n;};j.matchSelector=function(n,u,c,o,p,r){if(u){var s=(this.isXMLDocument)?n.nodeName:n.nodeName.toUpperCase();\r
244 if(u=="*"){if(s<"@"){return false;}}else{if(s!=u){return false;}}}if(c&&n.getAttribute("id")!=c){return false;}var q,m,t;if(o){for(q=o.length;q--;){t=n.getAttribute("class")||n.className;\r
245 if(!(t&&o[q].regexp.test(t))){return false;}}}if(p){for(q=p.length;q--;){m=p[q];if(m.operator?!m.test(this.getAttribute(n,m.key)):!this.hasAttribute(n,m.key)){return false;\r
246 }}}if(r){for(q=r.length;q--;){m=r[q];if(!this.matchPseudo(n,m.key,m.value)){return false;}}}return true;};var i={" ":function(p,v,m,q,r,t,o){var s,u,n;\r
247 if(this.isHTMLDocument){getById:if(m){u=this.document.getElementById(m);if((!u&&p.all)||(this.idGetsName&&u&&u.getAttributeNode("id").nodeValue!=m)){n=p.all[m];\r
248 if(!n){return;}if(!n[0]){n=[n];}for(s=0;u=n[s++];){var c=u.getAttributeNode("id");if(c&&c.nodeValue==m){this.push(u,v,null,q,r,t);break;}}return;}if(!u){if(this.contains(this.root,p)){return;\r
249 }else{break getById;}}else{if(this.document!==p&&!this.contains(p,u)){return;}}this.push(u,v,null,q,r,t);return;}getByClass:if(q&&p.getElementsByClassName&&!this.brokenGEBCN){n=p.getElementsByClassName(o.join(" "));\r
250 if(!(n&&n.length)){break getByClass;}for(s=0;u=n[s++];){this.push(u,v,m,null,r,t);}return;}}getByTag:{n=p.getElementsByTagName(v);if(!(n&&n.length)){break getByTag;\r
251 }if(!this.brokenStarGEBTN){v=null;}for(s=0;u=n[s++];){this.push(u,v,m,q,r,t);}}},">":function(o,c,q,n,m,p){if((o=o.firstChild)){do{if(o.nodeType==1){this.push(o,c,q,n,m,p);\r
252 }}while((o=o.nextSibling));}},"+":function(o,c,q,n,m,p){while((o=o.nextSibling)){if(o.nodeType==1){this.push(o,c,q,n,m,p);break;}}},"^":function(o,c,q,n,m,p){o=o.firstChild;\r
253 if(o){if(o.nodeType==1){this.push(o,c,q,n,m,p);}else{this["combinator:+"](o,c,q,n,m,p);}}},"~":function(p,c,r,o,m,q){while((p=p.nextSibling)){if(p.nodeType!=1){continue;\r
254 }var n=this.getUID(p);if(this.bitUniques[n]){break;}this.bitUniques[n]=true;this.push(p,c,r,o,m,q);}},"++":function(o,c,q,n,m,p){this["combinator:+"](o,c,q,n,m,p);\r
255 this["combinator:!+"](o,c,q,n,m,p);},"~~":function(o,c,q,n,m,p){this["combinator:~"](o,c,q,n,m,p);this["combinator:!~"](o,c,q,n,m,p);},"!":function(o,c,q,n,m,p){while((o=o.parentNode)){if(o!==this.document){this.push(o,c,q,n,m,p);\r
256 }}},"!>":function(o,c,q,n,m,p){o=o.parentNode;if(o!==this.document){this.push(o,c,q,n,m,p);}},"!+":function(o,c,q,n,m,p){while((o=o.previousSibling)){if(o.nodeType==1){this.push(o,c,q,n,m,p);\r
257 break;}}},"!^":function(o,c,q,n,m,p){o=o.lastChild;if(o){if(o.nodeType==1){this.push(o,c,q,n,m,p);}else{this["combinator:!+"](o,c,q,n,m,p);}}},"!~":function(p,c,r,o,m,q){while((p=p.previousSibling)){if(p.nodeType!=1){continue;\r
258 }var n=this.getUID(p);if(this.bitUniques[n]){break;}this.bitUniques[n]=true;this.push(p,c,r,o,m,q);}}};for(var h in i){j["combinator:"+h]=i[h];}var k={empty:function(c){var m=c.firstChild;\r
259 return !(m&&m.nodeType==1)&&!(c.innerText||c.textContent||"").length;},not:function(c,m){return !this.matchNode(c,m);},contains:function(c,m){return(c.innerText||c.textContent||"").indexOf(m)>-1;\r
260 },"first-child":function(c){while((c=c.previousSibling)){if(c.nodeType==1){return false;}}return true;},"last-child":function(c){while((c=c.nextSibling)){if(c.nodeType==1){return false;\r
261 }}return true;},"only-child":function(n){var m=n;while((m=m.previousSibling)){if(m.nodeType==1){return false;}}var c=n;while((c=c.nextSibling)){if(c.nodeType==1){return false;\r
262 }}return true;},"nth-child":j.createNTHPseudo("firstChild","nextSibling","posNTH"),"nth-last-child":j.createNTHPseudo("lastChild","previousSibling","posNTHLast"),"nth-of-type":j.createNTHPseudo("firstChild","nextSibling","posNTHType",true),"nth-last-of-type":j.createNTHPseudo("lastChild","previousSibling","posNTHTypeLast",true),index:function(m,c){return this["pseudo:nth-child"](m,""+c+1);\r
263 },even:function(c){return this["pseudo:nth-child"](c,"2n");},odd:function(c){return this["pseudo:nth-child"](c,"2n+1");},"first-of-type":function(c){var m=c.nodeName;\r
264 while((c=c.previousSibling)){if(c.nodeName==m){return false;}}return true;},"last-of-type":function(c){var m=c.nodeName;while((c=c.nextSibling)){if(c.nodeName==m){return false;\r
265 }}return true;},"only-of-type":function(n){var m=n,o=n.nodeName;while((m=m.previousSibling)){if(m.nodeName==o){return false;}}var c=n;while((c=c.nextSibling)){if(c.nodeName==o){return false;\r
266 }}return true;},enabled:function(c){return !c.disabled;},disabled:function(c){return c.disabled;},checked:function(c){return c.checked||c.selected;},focus:function(c){return this.isHTMLDocument&&this.document.activeElement===c&&(c.href||c.type||this.hasAttribute(c,"tabindex"));\r
267 },root:function(c){return(c===this.root);},selected:function(c){return c.selected;}};for(var a in k){j["pseudo:"+a]=k[a];}j.attributeGetters={"class":function(){return this.getAttribute("class")||this.className;\r
268 },"for":function(){return("htmlFor" in this)?this.htmlFor:this.getAttribute("for");},href:function(){return("href" in this)?this.getAttribute("href",2):this.getAttribute("href");\r
269 },style:function(){return(this.style)?this.style.cssText:this.getAttribute("style");},tabindex:function(){var c=this.getAttributeNode("tabindex");return(c&&c.specified)?c.nodeValue:null;\r
270 },type:function(){return this.getAttribute("type");}};var d=j.Slick=(this.Slick||{});d.version="1.1.5";d.search=function(m,n,c){return j.search(m,n,c);\r
271 };d.find=function(c,m){return j.search(c,m,null,true);};d.contains=function(c,m){j.setDocument(c);return j.contains(c,m);};d.getAttribute=function(m,c){return j.getAttribute(m,c);\r
272 };d.match=function(m,c){if(!(m&&c)){return false;}if(!c||c===m){return true;}j.setDocument(m);return j.matchNode(m,c);};d.defineAttributeGetter=function(c,m){j.attributeGetters[c]=m;\r
273 return this;};d.lookupAttributeGetter=function(c){return j.attributeGetters[c];};d.definePseudo=function(c,m){j["pseudo:"+c]=function(o,n){return m.call(o,n);\r
274 };return this;};d.lookupPseudo=function(c){var m=j["pseudo:"+c];if(m){return function(n){return m.call(this,n);};}return null;};d.override=function(m,c){j.override(m,c);\r
275 return this;};d.isXML=j.isXML;d.uidOf=function(c){return j.getUIDHTML(c);};if(!this.Slick){this.Slick=d;}}).apply((typeof exports!="undefined")?exports:this);\r
276 var Element=function(b,g){var h=Element.Constructors[b];if(h){return h(g);}if(typeof b!="string"){return document.id(b).set(g);}if(!g){g={};}if(!(/^[\w-]+$/).test(b)){var e=Slick.parse(b).expressions[0][0];\r
277 b=(e.tag=="*")?"div":e.tag;if(e.id&&g.id==null){g.id=e.id;}var d=e.attributes;if(d){for(var f=0,c=d.length;f<c;f++){var a=d[f];if(g[a.key]!=null){continue;\r
278 }if(a.value!=null&&a.operator=="="){g[a.key]=a.value;}else{if(!a.value&&!a.operator){g[a.key]=true;}}}}if(e.classList&&g["class"]==null){g["class"]=e.classList.join(" ");\r
279 }}return document.newElement(b,g);};if(Browser.Element){Element.prototype=Browser.Element.prototype;}new Type("Element",Element).mirror(function(a){if(Array.prototype[a]){return;\r
280 }var b={};b[a]=function(){var h=[],e=arguments,j=true;for(var g=0,d=this.length;g<d;g++){var f=this[g],c=h[g]=f[a].apply(f,e);j=(j&&typeOf(c)=="element");\r
281 }return(j)?new Elements(h):h;};Elements.implement(b);});if(!Browser.Element){Element.parent=Object;Element.Prototype={"$family":Function.from("element").hide()};\r
282 Element.mirror(function(a,b){Element.Prototype[a]=b;});}Element.Constructors={};Element.Constructors=new Hash;var IFrame=new Type("IFrame",function(){var e=Array.link(arguments,{properties:Type.isObject,iframe:function(f){return(f!=null);\r
283 }});var c=e.properties||{},b;if(e.iframe){b=document.id(e.iframe);}var d=c.onload||function(){};delete c.onload;c.id=c.name=[c.id,c.name,b?(b.id||b.name):"IFrame_"+String.uniqueID()].pick();\r
284 b=new Element(b||"iframe",c);var a=function(){d.call(b.contentWindow);};if(window.frames[c.id]){a();}else{b.addListener("load",a);}return b;});var Elements=this.Elements=function(a){if(a&&a.length){var e={},d;\r
285 for(var c=0;d=a[c++];){var b=Slick.uidOf(d);if(!e[b]){e[b]=true;this.push(d);}}}};Elements.prototype={length:0};Elements.parent=Array;new Type("Elements",Elements).implement({filter:function(a,b){if(!a){return this;\r
286 }return new Elements(Array.filter(this,(typeOf(a)=="string")?function(c){return c.match(a);}:a,b));}.protect(),push:function(){var d=this.length;for(var b=0,a=arguments.length;\r
287 b<a;b++){var c=document.id(arguments[b]);if(c){this[d++]=c;}}return(this.length=d);}.protect(),unshift:function(){var b=[];for(var c=0,a=arguments.length;\r
288 c<a;c++){var d=document.id(arguments[c]);if(d){b.push(d);}}return Array.prototype.unshift.apply(this,b);}.protect(),concat:function(){var b=new Elements(this);\r
289 for(var c=0,a=arguments.length;c<a;c++){var d=arguments[c];if(Type.isEnumerable(d)){b.append(d);}else{b.push(d);}}return b;}.protect(),append:function(c){for(var b=0,a=c.length;\r
290 b<a;b++){this.push(c[b]);}return this;}.protect(),empty:function(){while(this.length){delete this[--this.length];}return this;}.protect()});Elements.alias("extend","append");\r
291 (function(){var g=Array.prototype.splice,b={"0":0,"1":1,length:2};g.call(b,1,1);if(b[1]==1){Elements.implement("splice",function(){var e=this.length;g.apply(this,arguments);\r
292 while(e>=this.length){delete this[e--];}return this;}.protect());}Elements.implement(Array.prototype);Array.mirror(Elements);var f;try{var a=document.createElement("<input name=x>");\r
293 f=(a.name=="x");}catch(c){}var d=function(e){return(""+e).replace(/&/g,"&amp;").replace(/"/g,"&quot;");};Document.implement({newElement:function(e,h){if(h&&h.checked!=null){h.defaultChecked=h.checked;\r
294 }if(f&&h){e="<"+e;if(h.name){e+=' name="'+d(h.name)+'"';}if(h.type){e+=' type="'+d(h.type)+'"';}e+=">";delete h.name;delete h.type;}return this.id(this.createElement(e)).set(h);\r
295 }});})();Document.implement({newTextNode:function(a){return this.createTextNode(a);},getDocument:function(){return this;},getWindow:function(){return this.window;\r
296 },id:(function(){var a={string:function(d,c,b){d=Slick.find(b,"#"+d.replace(/(\W)/g,"\\$1"));return(d)?a.element(d,c):null;},element:function(b,c){$uid(b);\r
297 if(!c&&!b.$family&&!(/^(?:object|embed)$/i).test(b.tagName)){Object.append(b,Element.Prototype);}return b;},object:function(c,d,b){if(c.toElement){return a.element(c.toElement(b),d);\r
298 }return null;}};a.textnode=a.whitespace=a.window=a.document=function(b){return b;};return function(c,e,d){if(c&&c.$family&&c.uid){return c;}var b=typeOf(c);\r
299 return(a[b])?a[b](c,e,d||document):null;};})()});if(window.$==null){Window.implement("$",function(a,b){return document.id(a,b,this.document);});}Window.implement({getDocument:function(){return this.document;\r
300 },getWindow:function(){return this;}});[Document,Element].invoke("implement",{getElements:function(a){return Slick.search(this,a,new Elements);},getElement:function(a){return document.id(Slick.find(this,a));\r
301 }});(function(b,d,a){this.Selectors={};var e=this.Selectors.Pseudo=new Hash();var c=function(){for(var f in e){if(e.hasOwnProperty(f)){Slick.definePseudo(f,e[f]);\r
302 delete e[f];}}};Slick.search=function(g,h,f){c();return b.call(this,g,h,f);};Slick.find=function(f,g){c();return d.call(this,f,g);};Slick.match=function(g,f){c();\r
303 return a.call(this,g,f);};})(Slick.search,Slick.find,Slick.match);if(window.$$==null){Window.implement("$$",function(a){var f=new Elements;if(arguments.length==1&&typeof a=="string"){return Slick.search(this.document,a,f);\r
304 }var c=Array.flatten(arguments);for(var d=0,b=c.length;d<b;d++){var e=c[d];switch(typeOf(e)){case"element":f.push(e);break;case"string":Slick.search(this.document,e,f);\r
305 }}return f;});}if(window.$$==null){Window.implement("$$",function(a){if(arguments.length==1){if(typeof a=="string"){return Slick.search(this.document,a,new Elements);\r
306 }else{if(Type.isEnumerable(a)){return new Elements(a);}}}return new Elements(arguments);});}(function(){var k={},i={};var n={input:"checked",option:"selected",textarea:"value"};\r
307 var e=function(p){return(i[p]||(i[p]={}));};var j=function(q){var p=q.uid;if(q.removeEvents){q.removeEvents();}if(q.clearAttributes){q.clearAttributes();\r
308 }if(p!=null){delete k[p];delete i[p];}return q;};var o=["defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"];\r
309 var d=["compact","nowrap","ismap","declare","noshade","checked","disabled","readOnly","multiple","selected","noresize","defer","defaultChecked"];var g={html:"innerHTML","class":"className","for":"htmlFor",text:(function(){var p=document.createElement("div");\r
310 return(p.textContent==null)?"innerText":"textContent";})()};var m=["type"];var h=["value","defaultValue"];var l=/^(?:href|src|usemap)$/i;d=d.associate(d);\r
311 o=o.associate(o.map(String.toLowerCase));m=m.associate(m);Object.append(g,h.associate(h));var c={before:function(q,p){var r=p.parentNode;if(r){r.insertBefore(q,p);\r
312 }},after:function(q,p){var r=p.parentNode;if(r){r.insertBefore(q,p.nextSibling);}},bottom:function(q,p){p.appendChild(q);},top:function(q,p){p.insertBefore(q,p.firstChild);\r
313 }};c.inside=c.bottom;Object.each(c,function(q,r){r=r.capitalize();var p={};p["inject"+r]=function(s){q(this,document.id(s,true));return this;};p["grab"+r]=function(s){q(document.id(s,true),this);\r
314 return this;};Element.implement(p);});var b=function(s,r){if(!s){return r;}s=Object.clone(Slick.parse(s));var q=s.expressions;for(var p=q.length;p--;){q[p][0].combinator=r;\r
315 }return s;};Element.implement({set:function(r,q){var p=Element.Properties[r];(p&&p.set)?p.set.call(this,q):this.setProperty(r,q);}.overloadSetter(),get:function(q){var p=Element.Properties[q];\r
316 return(p&&p.get)?p.get.apply(this):this.getProperty(q);}.overloadGetter(),erase:function(q){var p=Element.Properties[q];(p&&p.erase)?p.erase.apply(this):this.removeProperty(q);\r
317 return this;},setProperty:function(q,r){q=o[q]||q;if(r==null){return this.removeProperty(q);}var p=g[q];(p)?this[p]=r:(d[q])?this[q]=!!r:this.setAttribute(q,""+r);\r
318 return this;},setProperties:function(p){for(var q in p){this.setProperty(q,p[q]);}return this;},getProperty:function(q){q=o[q]||q;var p=g[q]||m[q];return(p)?this[p]:(d[q])?!!this[q]:(l.test(q)?this.getAttribute(q,2):(p=this.getAttributeNode(q))?p.nodeValue:null)||null;\r
319 },getProperties:function(){var p=Array.from(arguments);return p.map(this.getProperty,this).associate(p);},removeProperty:function(q){q=o[q]||q;var p=g[q];\r
320 (p)?this[p]="":(d[q])?this[q]=false:this.removeAttribute(q);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;\r
321 },hasClass:function(p){return this.className.clean().contains(p," ");},addClass:function(p){if(!this.hasClass(p)){this.className=(this.className+" "+p).clean();\r
322 }return this;},removeClass:function(p){this.className=this.className.replace(new RegExp("(^|\\s)"+p+"(?:\\s|$)"),"$1");return this;},toggleClass:function(p,q){if(q==null){q=!this.hasClass(p);\r
323 }return(q)?this.addClass(p):this.removeClass(p);},adopt:function(){var s=this,p,u=Array.flatten(arguments),t=u.length;if(t>1){s=p=document.createDocumentFragment();\r
324 }for(var r=0;r<t;r++){var q=document.id(u[r],true);if(q){s.appendChild(q);}}if(p){this.appendChild(p);}return this;},appendText:function(q,p){return this.grab(this.getDocument().newTextNode(q),p);\r
325 },grab:function(q,p){c[p||"bottom"](document.id(q,true),this);return this;},inject:function(q,p){c[p||"bottom"](this,document.id(q,true));return this;},replaces:function(p){p=document.id(p,true);\r
326 p.parentNode.replaceChild(this,p);return this;},wraps:function(q,p){q=document.id(q,true);return this.replaces(q).grab(q,p);},getPrevious:function(p){return document.id(Slick.find(this,b(p,"!~")));\r
327 },getAllPrevious:function(p){return Slick.search(this,b(p,"!~"),new Elements);},getNext:function(p){return document.id(Slick.find(this,b(p,"~")));},getAllNext:function(p){return Slick.search(this,b(p,"~"),new Elements);\r
328 },getFirst:function(p){return document.id(Slick.search(this,b(p,">"))[0]);},getLast:function(p){return document.id(Slick.search(this,b(p,">")).getLast());\r
329 },getParent:function(p){return document.id(Slick.find(this,b(p,"!")));},getParents:function(p){return Slick.search(this,b(p,"!"),new Elements);},getSiblings:function(p){return Slick.search(this,b(p,"~~"),new Elements);\r
330 },getChildren:function(p){return Slick.search(this,b(p,">"),new Elements);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;\r
331 },getElementById:function(p){return document.id(Slick.find(this,"#"+(""+p).replace(/(\W)/g,"\\$1")));},getSelected:function(){this.selectedIndex;return new Elements(Array.from(this.options).filter(function(p){return p.selected;\r
332 }));},toQueryString:function(){var p=[];this.getElements("input, select, textarea").each(function(r){var q=r.type;if(!r.name||r.disabled||q=="submit"||q=="reset"||q=="file"||q=="image"){return;\r
333 }var s=(r.get("tag")=="select")?r.getSelected().map(function(t){return document.id(t).get("value");}):((q=="radio"||q=="checkbox")&&!r.checked)?null:r.get("value");\r
334 Array.from(s).each(function(t){if(typeof t!="undefined"){p.push(encodeURIComponent(r.name)+"="+encodeURIComponent(t));}});});return p.join("&");},destroy:function(){var p=j(this).getElementsByTagName("*");\r
335 Array.each(p,j);Element.dispose(this);return null;},empty:function(){Array.from(this.childNodes).each(Element.dispose);return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;\r
336 },match:function(p){return !p||Slick.match(this,p);}});var a=function(t,s,q){if(!q){t.setAttributeNode(document.createAttribute("id"));}if(t.clearAttributes){t.clearAttributes();\r
337 t.mergeAttributes(s);t.removeAttribute("uid");if(t.options){var u=t.options,p=s.options;for(var r=u.length;r--;){u[r].selected=p[r].selected;}}}var v=n[s.tagName.toLowerCase()];\r
338 if(v&&s[v]){t[v]=s[v];}};Element.implement("clone",function(r,p){r=r!==false;var w=this.cloneNode(r),q;if(r){var s=w.getElementsByTagName("*"),u=this.getElementsByTagName("*");\r
339 for(q=s.length;q--;){a(s[q],u[q],p);}}a(w,this,p);if(Browser.ie){var t=w.getElementsByTagName("object"),v=this.getElementsByTagName("object");for(q=t.length;\r
340 q--;){t[q].outerHTML=v[q].outerHTML;}}return document.id(w);});var f={contains:function(p){return Slick.contains(this,p);}};if(!document.contains){Document.implement(f);\r
341 }if(!document.createElement("div").contains){Element.implement(f);}Element.implement("hasChild",function(p){return this!==p&&this.contains(p);});[Element,Window,Document].invoke("implement",{addListener:function(s,r){if(s=="unload"){var p=r,q=this;\r
342 r=function(){q.removeListener("unload",r);p();};}else{k[$uid(this)]=this;}if(this.addEventListener){this.addEventListener(s,r,!!arguments[2]);}else{this.attachEvent("on"+s,r);\r
343 }return this;},removeListener:function(q,p){if(this.removeEventListener){this.removeEventListener(q,p,!!arguments[2]);}else{this.detachEvent("on"+q,p);\r
344 }return this;},retrieve:function(q,p){var s=e($uid(this)),r=s[q];if(p!=null&&r==null){r=s[q]=p;}return r!=null?r:null;},store:function(q,p){var r=e($uid(this));\r
345 r[q]=p;return this;},eliminate:function(p){var q=e($uid(this));delete q[p];return this;}});if(window.attachEvent&&!window.addEventListener){window.addListener("unload",function(){Object.each(k,j);\r
346 if(window.CollectGarbage){CollectGarbage();}});}})();Element.Properties={};Element.Properties=new Hash;Element.Properties.style={set:function(a){this.style.cssText=a;\r
347 },get:function(){return this.style.cssText;},erase:function(){this.style.cssText="";}};Element.Properties.tag={get:function(){return this.tagName.toLowerCase();\r
348 }};(function(a){if(a!=null){Element.Properties.maxlength=Element.Properties.maxLength={get:function(){var b=this.getAttribute("maxLength");return b==a?null:b;\r
349 }};}})(document.createElement("input").getAttribute("maxLength"));Element.Properties.html=(function(){var c=Function.attempt(function(){var e=document.createElement("table");\r
350 e.innerHTML="<tr><td></td></tr>";});var d=document.createElement("div");var a={table:[1,"<table>","</table>"],select:[1,"<select>","</select>"],tbody:[2,"<table><tbody>","</tbody></table>"],tr:[3,"<table><tbody><tr>","</tr></tbody></table>"]};\r
351 a.thead=a.tfoot=a.tbody;var b={set:function(){var f=Array.flatten(arguments).join("");var g=(!c&&a[this.get("tag")]);if(g){var h=d;h.innerHTML=g[1]+f+g[2];\r
352 for(var e=g[0];e--;){h=h.firstChild;}this.empty().adopt(h.childNodes);}else{this.innerHTML=f;}}};b.erase=b.set;return b;})();(function(){var c=document.html;\r
353 Element.Properties.styles={set:function(f){this.setStyles(f);}};var e=(c.style.opacity!=null);var d=/alpha\(opacity=([\d.]+)\)/i;var b=function(g,f){if(!g.currentStyle||!g.currentStyle.hasLayout){g.style.zoom=1;\r
354 }if(e){g.style.opacity=f;}else{f=(f*100).limit(0,100).round();f=(f==100)?"":"alpha(opacity="+f+")";var h=g.style.filter||g.getComputedStyle("filter")||"";\r
355 g.style.filter=d.test(h)?h.replace(d,f):h+f;}};Element.Properties.opacity={set:function(g){var f=this.style.visibility;if(g==0&&f!="hidden"){this.style.visibility="hidden";\r
356 }else{if(g!=0&&f!="visible"){this.style.visibility="visible";}}b(this,g);},get:(e)?function(){var f=this.style.opacity||this.getComputedStyle("opacity");\r
357 return(f=="")?1:f;}:function(){var f,g=(this.style.filter||this.getComputedStyle("filter"));if(g){f=g.match(d);}return(f==null||g==null)?1:(f[1]/100);}};\r
358 var a=(c.style.cssFloat==null)?"styleFloat":"cssFloat";Element.implement({getComputedStyle:function(h){if(this.currentStyle){return this.currentStyle[h.camelCase()];\r
359 }var g=Element.getDocument(this).defaultView,f=g?g.getComputedStyle(this,null):null;return(f)?f.getPropertyValue((h==a)?"float":h.hyphenate()):null;},setOpacity:function(f){b(this,f);\r
360 return this;},getOpacity:function(){return this.get("opacity");},setStyle:function(g,f){switch(g){case"opacity":return this.set("opacity",parseFloat(f));\r
361 case"float":g=a;}g=g.camelCase();if(typeOf(f)!="string"){var h=(Element.Styles[g]||"@").split(" ");f=Array.from(f).map(function(k,j){if(!h[j]){return"";\r
362 }return(typeOf(k)=="number")?h[j].replace("@",Math.round(k)):k;}).join(" ");}else{if(f==String(Number(f))){f=Math.round(f);}}this.style[g]=f;return this;\r
363 },getStyle:function(l){switch(l){case"opacity":return this.get("opacity");case"float":l=a;}l=l.camelCase();var f=this.style[l];if(!f||l=="zIndex"){f=[];\r
364 for(var k in Element.ShortStyles){if(l!=k){continue;}for(var j in Element.ShortStyles[k]){f.push(this.getStyle(j));}return f.join(" ");}f=this.getComputedStyle(l);\r
365 }if(f){f=String(f);var h=f.match(/rgba?\([\d\s,]+\)/);if(h){f=f.replace(h[0],h[0].rgbToHex());}}if(Browser.opera||(Browser.ie&&isNaN(parseFloat(f)))){if((/^(height|width)$/).test(l)){var g=(l=="width")?["left","right"]:["top","bottom"],i=0;\r
366 g.each(function(m){i+=this.getStyle("border-"+m+"-width").toInt()+this.getStyle("padding-"+m).toInt();},this);return this["offset"+l.capitalize()]-i+"px";\r
367 }if(Browser.opera&&String(f).indexOf("px")!=-1){return f;}if((/^border(.+)Width|margin|padding/).test(l)){return"0px";}}return f;},setStyles:function(g){for(var f in g){this.setStyle(f,g[f]);\r
368 }return this;},getStyles:function(){var f={};Array.flatten(arguments).each(function(g){f[g]=this.getStyle(g);},this);return f;}});Element.Styles={left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@",zoom:"@",fontWeight:"@",textIndent:"@px",opacity:"@"};\r
369 Element.Styles=new Hash(Element.Styles);Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};["Top","Right","Bottom","Left"].each(function(l){var k=Element.ShortStyles;\r
370 var g=Element.Styles;["margin","padding"].each(function(m){var n=m+l;k[m][n]=g[n]="@px";});var j="border"+l;k.border[j]=g[j]="@px @ rgb(@, @, @)";var i=j+"Width",f=j+"Style",h=j+"Color";\r
371 k[j]={};k.borderWidth[i]=k[j][i]=g[i]="@px";k.borderStyle[f]=k[j][f]=g[f]="@";k.borderColor[h]=k[j][h]=g[h]="rgb(@, @, @)";});})();(function(){Element.Properties.events={set:function(b){this.addEvents(b);\r
372 }};[Element,Window,Document].invoke("implement",{addEvent:function(f,h){var i=this.retrieve("events",{});if(!i[f]){i[f]={keys:[],values:[]};}if(i[f].keys.contains(h)){return this;\r
373 }i[f].keys.push(h);var g=f,b=Element.Events[f],d=h,j=this;if(b){if(b.onAdd){b.onAdd.call(this,h);}if(b.condition){d=function(k){if(b.condition.call(this,k)){return h.call(this,k);\r
374 }return true;};}g=b.base||g;}var e=function(){return h.call(j);};var c=Element.NativeEvents[g];if(c){if(c==2){e=function(k){k=new Event(k,j.getWindow());\r
375 if(d.call(j,k)===false){k.stop();}};}this.addListener(g,e,arguments[2]);}i[f].values.push(e);return this;},removeEvent:function(e,d){var c=this.retrieve("events");\r
376 if(!c||!c[e]){return this;}var h=c[e];var b=h.keys.indexOf(d);if(b==-1){return this;}var g=h.values[b];delete h.keys[b];delete h.values[b];var f=Element.Events[e];\r
377 if(f){if(f.onRemove){f.onRemove.call(this,d);}e=f.base||e;}return(Element.NativeEvents[e])?this.removeListener(e,g,arguments[2]):this;},addEvents:function(b){for(var c in b){this.addEvent(c,b[c]);\r
378 }return this;},removeEvents:function(b){var d;if(typeOf(b)=="object"){for(d in b){this.removeEvent(d,b[d]);}return this;}var c=this.retrieve("events");\r
379 if(!c){return this;}if(!b){for(d in c){this.removeEvents(d);}this.eliminate("events");}else{if(c[b]){c[b].keys.each(function(e){this.removeEvent(b,e);},this);\r
380 delete c[b];}}return this;},fireEvent:function(e,c,b){var d=this.retrieve("events");if(!d||!d[e]){return this;}c=Array.from(c);d[e].keys.each(function(f){if(b){f.delay(b,this,c);\r
381 }else{f.apply(this,c);}},this);return this;},cloneEvents:function(e,d){e=document.id(e);var c=e.retrieve("events");if(!c){return this;}if(!d){for(var b in c){this.cloneEvents(e,b);\r
382 }}else{if(c[d]){c[d].keys.each(function(f){this.addEvent(d,f);},this);}}return this;}});Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,orientationchange:2,touchstart:2,touchmove:2,touchend:2,touchcancel:2,gesturestart:2,gesturechange:2,gestureend:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:2,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1};\r
383 var a=function(b){var c=b.relatedTarget;if(c==null){return true;}if(!c){return false;}return(c!=this&&c.prefix!="xul"&&typeOf(this)!="document"&&!this.contains(c));\r
384 };Element.Events={mouseenter:{base:"mouseover",condition:a},mouseleave:{base:"mouseout",condition:a},mousewheel:{base:(Browser.firefox)?"DOMMouseScroll":"mousewheel"}};\r
385 Element.Events=new Hash(Element.Events);})();(function(){var h=document.createElement("div"),e=document.createElement("div");h.style.height="0";h.appendChild(e);\r
386 var d=(e.offsetParent===h);h=e=null;var l=function(m){return k(m,"position")!="static"||a(m);};var i=function(m){return l(m)||(/^(?:table|td|th)$/i).test(m.tagName);\r
387 };Element.implement({scrollTo:function(m,n){if(a(this)){this.getWindow().scrollTo(m,n);}else{this.scrollLeft=m;this.scrollTop=n;}return this;},getSize:function(){if(a(this)){return this.getWindow().getSize();\r
388 }return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(a(this)){return this.getWindow().getScrollSize();}return{x:this.scrollWidth,y:this.scrollHeight};\r
389 },getScroll:function(){if(a(this)){return this.getWindow().getScroll();}return{x:this.scrollLeft,y:this.scrollTop};},getScrolls:function(){var n=this.parentNode,m={x:0,y:0};\r
390 while(n&&!a(n)){m.x+=n.scrollLeft;m.y+=n.scrollTop;n=n.parentNode;}return m;},getOffsetParent:d?function(){var m=this;if(a(m)||k(m,"position")=="fixed"){return null;\r
391 }var n=(k(m,"position")=="static")?i:l;while((m=m.parentNode)){if(n(m)){return m;}}return null;}:function(){var m=this;if(a(m)||k(m,"position")=="fixed"){return null;\r
392 }try{return m.offsetParent;}catch(n){}return null;},getOffsets:function(){if(this.getBoundingClientRect&&!Browser.Platform.ios){var r=this.getBoundingClientRect(),o=document.id(this.getDocument().documentElement),q=o.getScroll(),t=this.getScrolls(),s=(k(this,"position")=="fixed");\r
393 return{x:r.left.toInt()+t.x+((s)?0:q.x)-o.clientLeft,y:r.top.toInt()+t.y+((s)?0:q.y)-o.clientTop};}var n=this,m={x:0,y:0};if(a(this)){return m;}while(n&&!a(n)){m.x+=n.offsetLeft;\r
394 m.y+=n.offsetTop;if(Browser.firefox){if(!c(n)){m.x+=b(n);m.y+=g(n);}var p=n.parentNode;if(p&&k(p,"overflow")!="visible"){m.x+=b(p);m.y+=g(p);}}else{if(n!=this&&Browser.safari){m.x+=b(n);\r
395 m.y+=g(n);}}n=n.offsetParent;}if(Browser.firefox&&!c(this)){m.x-=b(this);m.y-=g(this);}return m;},getPosition:function(p){if(a(this)){return{x:0,y:0};}var q=this.getOffsets(),n=this.getScrolls();\r
396 var m={x:q.x-n.x,y:q.y-n.y};if(p&&(p=document.id(p))){var o=p.getPosition();return{x:m.x-o.x-b(p),y:m.y-o.y-g(p)};}return m;},getCoordinates:function(o){if(a(this)){return this.getWindow().getCoordinates();\r
397 }var m=this.getPosition(o),n=this.getSize();var p={left:m.x,top:m.y,width:n.x,height:n.y};p.right=p.left+p.width;p.bottom=p.top+p.height;return p;},computePosition:function(m){return{left:m.x-j(this,"margin-left"),top:m.y-j(this,"margin-top")};\r
398 },setPosition:function(m){return this.setStyles(this.computePosition(m));}});[Document,Window].invoke("implement",{getSize:function(){var m=f(this);return{x:m.clientWidth,y:m.clientHeight};\r
399 },getScroll:function(){var n=this.getWindow(),m=f(this);return{x:n.pageXOffset||m.scrollLeft,y:n.pageYOffset||m.scrollTop};},getScrollSize:function(){var o=f(this),n=this.getSize(),m=this.getDocument().body;\r
400 return{x:Math.max(o.scrollWidth,m.scrollWidth,n.x),y:Math.max(o.scrollHeight,m.scrollHeight,n.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var m=this.getSize();\r
401 return{top:0,left:0,bottom:m.y,right:m.x,height:m.y,width:m.x};}});var k=Element.getComputedStyle;function j(m,n){return k(m,n).toInt()||0;}function c(m){return k(m,"-moz-box-sizing")=="border-box";\r
402 }function g(m){return j(m,"border-top-width");}function b(m){return j(m,"border-left-width");}function a(m){return(/^(?:body|html)$/i).test(m.tagName);\r
403 }function f(m){var n=m.getDocument();return(!n.compatMode||n.compatMode=="CSS1Compat")?n.html:n.body;}})();Element.alias({position:"setPosition"});[Window,Document,Element].invoke("implement",{getHeight:function(){return this.getSize().y;\r
404 },getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x;\r
405 },getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y;\r
406 },getLeft:function(){return this.getPosition().x;}});(function(){var f=this.Fx=new Class({Implements:[Chain,Events,Options],options:{fps:60,unit:false,duration:500,frames:null,frameSkip:true,link:"ignore"},initialize:function(g){this.subject=this.subject||this;\r
407 this.setOptions(g);},getTransition:function(){return function(g){return -(Math.cos(Math.PI*g)-1)/2;};},step:function(g){if(this.options.frameSkip){var h=(this.time!=null)?(g-this.time):0,i=h/this.frameInterval;\r
408 this.time=g;this.frame+=i;}else{this.frame++;}if(this.frame<this.frames){var j=this.transition(this.frame/this.frames);this.set(this.compute(this.from,this.to,j));\r
409 }else{this.frame=this.frames;this.set(this.compute(this.from,this.to,1));this.stop();}},set:function(g){return g;},compute:function(i,h,g){return f.compute(i,h,g);\r
410 },check:function(){if(!this.isRunning()){return true;}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.pass(arguments,this));\r
411 return false;}return false;},start:function(k,j){if(!this.check(k,j)){return this;}this.from=k;this.to=j;this.frame=(this.options.frameSkip)?0:-1;this.time=null;\r
412 this.transition=this.getTransition();var i=this.options.frames,h=this.options.fps,g=this.options.duration;this.duration=f.Durations[g]||g.toInt();this.frameInterval=1000/h;\r
413 this.frames=i||Math.round(this.duration/this.frameInterval);this.fireEvent("start",this.subject);b.call(this,h);return this;},stop:function(){if(this.isRunning()){this.time=null;\r
414 d.call(this,this.options.fps);if(this.frames==this.frame){this.fireEvent("complete",this.subject);if(!this.callChain()){this.fireEvent("chainComplete",this.subject);\r
415 }}else{this.fireEvent("stop",this.subject);}}return this;},cancel:function(){if(this.isRunning()){this.time=null;d.call(this,this.options.fps);this.frame=this.frames;\r
416 this.fireEvent("cancel",this.subject).clearChain();}return this;},pause:function(){if(this.isRunning()){this.time=null;d.call(this,this.options.fps);}return this;\r
417 },resume:function(){if((this.frame<this.frames)&&!this.isRunning()){b.call(this,this.options.fps);}return this;},isRunning:function(){var g=e[this.options.fps];\r
418 return g&&g.contains(this);}});f.compute=function(i,h,g){return(h-i)*g+i;};f.Durations={"short":250,normal:500,"long":1000};var e={},c={};var a=function(){var h=Date.now();\r
419 for(var j=this.length;j--;){var g=this[j];if(g){g.step(h);}}};var b=function(h){var g=e[h]||(e[h]=[]);g.push(this);if(!c[h]){c[h]=a.periodical(Math.round(1000/h),g);\r
420 }};var d=function(h){var g=e[h];if(g){g.erase(this);if(!g.length&&c[h]){delete e[h];c[h]=clearInterval(c[h]);}}};})();Fx.CSS=new Class({Extends:Fx,prepare:function(c,d,b){b=Array.from(b);\r
421 if(b[1]==null){b[1]=b[0];b[0]=c.getStyle(d);}var a=b.map(this.parse);return{from:a[0],to:a[1]};},parse:function(a){a=Function.from(a)();a=(typeof a=="string")?a.split(" "):Array.from(a);\r
422 return a.map(function(c){c=String(c);var b=false;Object.each(Fx.CSS.Parsers,function(f,e){if(b){return;}var d=f.parse(c);if(d||d===0){b={value:d,parser:f};\r
423 }});b=b||{value:c,parser:Fx.CSS.Parsers.String};return b;});},compute:function(d,c,b){var a=[];(Math.min(d.length,c.length)).times(function(e){a.push({value:d[e].parser.compute(d[e].value,c[e].value,b),parser:d[e].parser});\r
424 });a.$family=Function.from("fx:css:value");return a;},serve:function(c,b){if(typeOf(c)!="fx:css:value"){c=this.parse(c);}var a=[];c.each(function(d){a=a.concat(d.parser.serve(d.value,b));\r
425 });return a;},render:function(a,d,c,b){a.setStyle(d,this.serve(c,b));},search:function(a){if(Fx.CSS.Cache[a]){return Fx.CSS.Cache[a];}var c={},b=new RegExp("^"+a.escapeRegExp()+"$");\r
426 Array.each(document.styleSheets,function(f,e){var d=f.href;if(d&&d.contains("://")&&!d.contains(document.domain)){return;}var g=f.rules||f.cssRules;Array.each(g,function(k,h){if(!k.style){return;\r
427 }var j=(k.selectorText)?k.selectorText.replace(/^\w+/,function(i){return i.toLowerCase();}):null;if(!j||!b.test(j)){return;}Object.each(Element.Styles,function(l,i){if(!k.style[i]||Element.ShortStyles[i]){return;\r
428 }l=String(k.style[i]);c[i]=((/^rgb/).test(l))?l.rgbToHex():l;});});});return Fx.CSS.Cache[a]=c;}});Fx.CSS.Cache={};Fx.CSS.Parsers={Color:{parse:function(a){if(a.match(/^#[0-9a-f]{3,6}$/i)){return a.hexToRgb(true);\r
429 }return((a=a.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[a[1],a[2],a[3]]:false;},compute:function(c,b,a){return c.map(function(e,d){return Math.round(Fx.compute(c[d],b[d],a));\r
430 });},serve:function(a){return a.map(Number);}},Number:{parse:parseFloat,compute:Fx.compute,serve:function(b,a){return(a)?b+a:b;}},String:{parse:Function.from(false),compute:function(b,a){return a;\r
431 },serve:function(a){return a;}}};Fx.CSS.Parsers=new Hash(Fx.CSS.Parsers);Fx.Tween=new Class({Extends:Fx.CSS,initialize:function(b,a){this.element=this.subject=document.id(b);\r
432 this.parent(a);},set:function(b,a){if(arguments.length==1){a=b;b=this.property||this.options.property;}this.render(this.element,b,a,this.options.unit);\r
433 return this;},start:function(c,e,d){if(!this.check(c,e,d)){return this;}var b=Array.flatten(arguments);this.property=this.options.property||b.shift();var a=this.prepare(this.element,this.property,b);\r
434 return this.parent(a.from,a.to);}});Element.Properties.tween={set:function(a){this.get("tween").cancel().setOptions(a);return this;},get:function(){var a=this.retrieve("tween");\r
435 if(!a){a=new Fx.Tween(this,{link:"cancel"});this.store("tween",a);}return a;}};Element.implement({tween:function(a,c,b){this.get("tween").start(arguments);\r
436 return this;},fade:function(c){var e=this.get("tween"),d="opacity",a;c=[c,"toggle"].pick();switch(c){case"in":e.start(d,1);break;case"out":e.start(d,0);\r
437 break;case"show":e.set(d,1);break;case"hide":e.set(d,0);break;case"toggle":var b=this.retrieve("fade:flag",this.get("opacity")==1);e.start(d,(b)?0:1);this.store("fade:flag",!b);\r
438 a=true;break;default:e.start(d,arguments);}if(!a){this.eliminate("fade:flag");}return this;},highlight:function(c,a){if(!a){a=this.retrieve("highlight:original",this.getStyle("background-color"));\r
439 a=(a=="transparent")?"#fff":a;}var b=this.get("tween");b.start("background-color",c||"#ffff88",a).chain(function(){this.setStyle("background-color",this.retrieve("highlight:original"));\r
440 b.callChain();}.bind(this));return this;}});Fx.Morph=new Class({Extends:Fx.CSS,initialize:function(b,a){this.element=this.subject=document.id(b);this.parent(a);\r
441 },set:function(a){if(typeof a=="string"){a=this.search(a);}for(var b in a){this.render(this.element,b,a[b],this.options.unit);}return this;},compute:function(e,d,c){var a={};\r
442 for(var b in e){a[b]=this.parent(e[b],d[b],c);}return a;},start:function(b){if(!this.check(b)){return this;}if(typeof b=="string"){b=this.search(b);}var e={},d={};\r
443 for(var c in b){var a=this.prepare(this.element,c,b[c]);e[c]=a.from;d[c]=a.to;}return this.parent(e,d);}});Element.Properties.morph={set:function(a){this.get("morph").cancel().setOptions(a);\r
444 return this;},get:function(){var a=this.retrieve("morph");if(!a){a=new Fx.Morph(this,{link:"cancel"});this.store("morph",a);}return a;}};Element.implement({morph:function(a){this.get("morph").start(a);\r
445 return this;}});Fx.implement({getTransition:function(){var a=this.options.transition||Fx.Transitions.Sine.easeInOut;if(typeof a=="string"){var b=a.split(":");\r
446 a=Fx.Transitions;a=a[b[0]]||a[b[0].capitalize()];if(b[1]){a=a["ease"+b[1].capitalize()+(b[2]?b[2].capitalize():"")];}}return a;}});Fx.Transition=function(c,b){b=Array.from(b);\r
447 var a=function(d){return c(d,b);};return Object.append(a,{easeIn:a,easeOut:function(d){return 1-c(1-d,b);},easeInOut:function(d){return(d<=0.5?c(2*d,b):(2-c(2*(1-d),b)))/2;\r
448 }});};Fx.Transitions={linear:function(a){return a;}};Fx.Transitions=new Hash(Fx.Transitions);Fx.Transitions.extend=function(a){for(var b in a){Fx.Transitions[b]=new Fx.Transition(a[b]);\r
449 }};Fx.Transitions.extend({Pow:function(b,a){return Math.pow(b,a&&a[0]||6);},Expo:function(a){return Math.pow(2,8*(a-1));},Circ:function(a){return 1-Math.sin(Math.acos(a));\r
450 },Sine:function(a){return 1-Math.cos(a*Math.PI/2);},Back:function(b,a){a=a&&a[0]||1.618;return Math.pow(b,2)*((a+1)*b-a);},Bounce:function(f){var e;for(var d=0,c=1;\r
451 1;d+=c,c/=2){if(f>=(7-4*d)/11){e=c*c-Math.pow((11-6*d-11*f)/4,2);break;}}return e;},Elastic:function(b,a){return Math.pow(2,10*--b)*Math.cos(20*b*Math.PI*(a&&a[0]||1)/3);\r
452 }});["Quad","Cubic","Quart","Quint"].each(function(b,a){Fx.Transitions[b]=new Fx.Transition(function(c){return Math.pow(c,a+2);});});(function(){var d=function(){},a=("onprogress" in new Browser.Request);\r
453 var c=this.Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false,timeout:0,noCache:false},initialize:function(e){this.xhr=new Browser.Request();\r
454 this.setOptions(e);this.headers=this.options.headers;},onStateChange:function(){var e=this.xhr;if(e.readyState!=4||!this.running){return;}this.running=false;\r
455 this.status=0;Function.attempt(function(){var f=e.status;this.status=(f==1223)?204:f;}.bind(this));e.onreadystatechange=d;if(a){e.onprogress=e.onloadstart=d;\r
456 }clearTimeout(this.timer);this.response={text:this.xhr.responseText||"",xml:this.xhr.responseXML};if(this.options.isSuccess.call(this,this.status)){this.success(this.response.text,this.response.xml);\r
457 }else{this.failure();}},isSuccess:function(){var e=this.status;return(e>=200&&e<300);},isRunning:function(){return !!this.running;},processScripts:function(e){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return Browser.exec(e);\r
458 }return e.stripScripts(this.options.evalScripts);},success:function(f,e){this.onSuccess(this.processScripts(f),e);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain();\r
459 },failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},loadstart:function(e){this.fireEvent("loadstart",[e,this.xhr]);\r
460 },progress:function(e){this.fireEvent("progress",[e,this.xhr]);},timeout:function(){this.fireEvent("timeout",this.xhr);},setHeader:function(e,f){this.headers[e]=f;\r
461 return this;},getHeader:function(e){return Function.attempt(function(){return this.xhr.getResponseHeader(e);}.bind(this));},check:function(){if(!this.running){return true;\r
462 }switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.pass(arguments,this));return false;}return false;},send:function(o){if(!this.check(o)){return this;\r
463 }this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.running=true;var l=typeOf(o);if(l=="string"||l=="element"){o={data:o};}var h=this.options;\r
464 o=Object.append({data:h.data,url:h.url,method:h.method},o);var j=o.data,f=String(o.url),e=o.method.toLowerCase();switch(typeOf(j)){case"element":j=document.id(j).toQueryString();\r
465 break;case"object":case"hash":j=Object.toQueryString(j);}if(this.options.format){var m="format="+this.options.format;j=(j)?m+"&"+j:m;}if(this.options.emulation&&!["get","post"].contains(e)){var k="_method="+e;\r
466 j=(j)?k+"&"+j:k;e="post";}if(this.options.urlEncoded&&["post","put"].contains(e)){var g=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers["Content-type"]="application/x-www-form-urlencoded"+g;\r
467 }if(!f){f=document.location.pathname;}var i=f.lastIndexOf("/");if(i>-1&&(i=f.indexOf("#"))>-1){f=f.substr(0,i);}if(this.options.noCache){f+=(f.contains("?")?"&":"?")+String.uniqueID();\r
468 }if(j&&e=="get"){f+=(f.contains("?")?"&":"?")+j;j=null;}var n=this.xhr;if(a){n.onloadstart=this.loadstart.bind(this);n.onprogress=this.progress.bind(this);\r
469 }n.open(e.toUpperCase(),f,this.options.async,this.options.user,this.options.password);if(this.options.user&&"withCredentials" in n){n.withCredentials=true;\r
470 }n.onreadystatechange=this.onStateChange.bind(this);Object.each(this.headers,function(q,p){try{n.setRequestHeader(p,q);}catch(r){this.fireEvent("exception",[p,q]);\r
471 }},this);this.fireEvent("request");n.send(j);if(!this.options.async){this.onStateChange();}if(this.options.timeout){this.timer=this.timeout.delay(this.options.timeout,this);\r
472 }return this;},cancel:function(){if(!this.running){return this;}this.running=false;var e=this.xhr;e.abort();clearTimeout(this.timer);e.onreadystatechange=d;\r
473 if(a){e.onprogress=e.onloadstart=d;}this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});var b={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(e){b[e]=function(g){var f={method:e};\r
474 if(g!=null){f.data=g;}return this.send(f);};});c.implement(b);Element.Properties.send={set:function(e){var f=this.get("send").cancel();f.setOptions(e);\r
475 return this;},get:function(){var e=this.retrieve("send");if(!e){e=new c({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")});\r
476 this.store("send",e);}return e;}};Element.implement({send:function(e){var f=this.get("send");f.send({data:this,url:e||f.options.url});return this;}});})();\r
477 Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false,headers:{Accept:"text/html, application/xml, text/xml, */*"}},success:function(e){var d=this.options,b=this.response;\r
478 b.html=e.stripScripts(function(f){b.javascript=f;});var c=b.html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);if(c){b.html=c[1];}var a=new Element("div").set("html",b.html);\r
479 b.tree=a.childNodes;b.elements=a.getElements("*");if(d.filter){b.tree=b.elements.filter(d.filter);}if(d.update){document.id(d.update).empty().set("html",b.html);\r
480 }else{if(d.append){document.id(d.append).adopt(a.getChildren());}}if(d.evalScripts){Browser.exec(b.javascript);}this.onSuccess(b.tree,b.elements,b.html,b.javascript);\r
481 }});Element.Properties.load={set:function(a){var b=this.get("load").cancel();b.setOptions(a);return this;},get:function(){var a=this.retrieve("load");if(!a){a=new Request.HTML({data:this,link:"cancel",update:this,method:"get"});\r
482 this.store("load",a);}return a;}};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Type.isObject,url:Type.isString}));\r
483 return this;}});if(typeof JSON=="undefined"){this.JSON={};}JSON=new Hash({stringify:JSON.stringify,parse:JSON.parse});(function(){var special={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};\r
484 var escape=function(chr){return special[chr]||"\\u"+("0000"+chr.charCodeAt(0).toString(16)).slice(-4);};JSON.validate=function(string){string=string.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"");\r
485 return(/^[\],:{}\s]*$/).test(string);};JSON.encode=JSON.stringify?function(obj){return JSON.stringify(obj);}:function(obj){if(obj&&obj.toJSON){obj=obj.toJSON();\r
486 }switch(typeOf(obj)){case"string":return'"'+obj.replace(/[\x00-\x1f\\"]/g,escape)+'"';case"array":return"["+obj.map(JSON.encode).clean()+"]";case"object":case"hash":var string=[];\r
487 Object.each(obj,function(value,key){var json=JSON.encode(value);if(json){string.push(JSON.encode(key)+":"+json);}});return"{"+string+"}";case"number":case"boolean":return""+obj;\r
488 case"null":return"null";}return null;};JSON.decode=function(string,secure){if(!string||typeOf(string)!="string"){return null;}if(secure||JSON.secure){if(JSON.parse){return JSON.parse(string);\r
489 }if(!JSON.validate(string)){throw new Error("JSON could not decode the input; security is enabled and the value is not secure.");}}return eval("("+string+")");\r
490 };})();Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(a){this.parent(a);Object.append(this.headers,{Accept:"application/json","X-Request":"JSON"});\r
491 },success:function(c){var b;try{b=this.response.json=JSON.decode(c,this.options.secure);}catch(a){this.fireEvent("error",[c,a]);return;}if(b==null){this.onFailure();\r
492 }else{this.onSuccess(b,c);}}});var Cookie=new Class({Implements:Options,options:{path:"/",domain:false,duration:false,secure:false,document:document,encode:true},initialize:function(b,a){this.key=b;\r
493 this.setOptions(a);},write:function(b){if(this.options.encode){b=encodeURIComponent(b);}if(this.options.domain){b+="; domain="+this.options.domain;}if(this.options.path){b+="; path="+this.options.path;\r
494 }if(this.options.duration){var a=new Date();a.setTime(a.getTime()+this.options.duration*24*60*60*1000);b+="; expires="+a.toGMTString();}if(this.options.secure){b+="; secure";\r
495 }this.options.document.cookie=this.key+"="+b;return this;},read:function(){var a=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)");\r
496 return(a)?decodeURIComponent(a[1]):null;},dispose:function(){new Cookie(this.key,Object.merge({},this.options,{duration:-1})).write("");return this;}});\r
497 Cookie.write=function(b,c,a){return new Cookie(b,a).write(c);};Cookie.read=function(a){return new Cookie(a).read();};Cookie.dispose=function(b,a){return new Cookie(b,a).dispose();\r
498 };(function(i,k){var l,f,e=[],c,b,d=k.createElement("div");var g=function(){clearTimeout(b);if(l){return;}Browser.loaded=l=true;k.removeListener("DOMContentLoaded",g).removeListener("readystatechange",a);\r
499 k.fireEvent("domready");i.fireEvent("domready");};var a=function(){for(var m=e.length;m--;){if(e[m]()){g();return true;}}return false;};var j=function(){clearTimeout(b);\r
500 if(!a()){b=setTimeout(j,10);}};k.addListener("DOMContentLoaded",g);var h=function(){try{d.doScroll();return true;}catch(m){}return false;};if(d.doScroll&&!h()){e.push(h);\r
501 c=true;}if(k.readyState){e.push(function(){var m=k.readyState;return(m=="loaded"||m=="complete");});}if("onreadystatechange" in k){k.addListener("readystatechange",a);\r
502 }else{c=true;}if(c){j();}Element.Events.domready={onAdd:function(m){if(l){m.call(this);}}};Element.Events.load={base:"load",onAdd:function(m){if(f&&this==i){m.call(this);\r
503 }},condition:function(){if(this==i){g();delete Element.Events.load;}return true;}};i.addEvent("load",function(){f=true;});})(window,document);(function(){var Swiff=this.Swiff=new Class({Implements:Options,options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"window",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object;\r
504 },initialize:function(path,options){this.instance="Swiff_"+String.uniqueID();this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance;\r
505 var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks;\r
506 var properties=Object.append({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments);\r
507 };})(callBacks[callBack]);vars[callBack]="Swiff.CallBacks."+this.instance+"."+callBack;}params.flashVars=Object.toQueryString(vars);if(Browser.ie){properties.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";\r
508 params.movie=path;}else{properties.type="application/x-shockwave-flash";}properties.data=path;var build='<object id="'+id+'"';for(var property in properties){build+=" "+property+'="'+properties[property]+'"';\r
509 }build+=">";for(var param in params){if(params[param]){build+='<param name="'+param+'" value="'+params[param]+'" />';}}build+="</object>";this.object=((container)?container.empty():new Element("div")).set("html",build).firstChild;\r
510 },replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this;},inject:function(element){document.id(element,true).appendChild(this.toElement());\r
511 return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].append(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+"</invoke>");\r
512 return eval(rs);};})();\r
513 \r
514 /*\r
515         Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.\r
516         Available via Academic Free License >= 2.1 OR the modified BSD license.\r
517         see: http://dojotoolkit.org/license for details\r
518 */\r
519 \r
520 /*\r
521         This is an optimized version of Dojo, built for deployment and not for\r
522         development. To get sources and documentation, please visit:\r
523 \r
524                 http://dojotoolkit.org\r
525 */\r
526 \r
527 (function(){var _1=null;if((_1||(typeof djConfig!="undefined"&&djConfig.scopeMap))&&(typeof window!="undefined")){var _2="",_3="",_4="",_5={},_6={};_1=_1||djConfig.scopeMap;for(var i=0;i<_1.length;i++){var _7=_1[i];_2+="var "+_7[0]+" = {}; "+_7[1]+" = "+_7[0]+";"+_7[1]+"._scopeName = '"+_7[1]+"';";_3+=(i==0?"":",")+_7[0];_4+=(i==0?"":",")+_7[1];_5[_7[0]]=_7[1];_6[_7[1]]=_7[0];}eval(_2+"dojo._scopeArgs = ["+_4+"];");dojo._scopePrefixArgs=_3;dojo._scopePrefix="(function("+_3+"){";dojo._scopeSuffix="})("+_4+")";dojo._scopeMap=_5;dojo._scopeMapRev=_6;}(function(){if(typeof this["loadFirebugConsole"]=="function"){this["loadFirebugConsole"]();}else{this.console=this.console||{};var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var _8=tn+"";console[_8]=("log" in console)?function(){var a=Array.apply({},arguments);a.unshift(_8+":");console["log"](a.join(" "));}:function(){};console[_8]._fake=true;})();}}}if(typeof dojo=="undefined"){dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};var _9=typeof djConfig!="undefined"?djConfig:typeof dojoConfig!="undefined"?dojoConfig:null;if(_9){for(var c in _9){d.config[c]=_9[c];}}dojo.locale=d.config.locale;var _a="$Rev: 24595 $".match(/\d+/);dojo.version={major:1,minor:6,patch:1,flag:"",revision:_a?+_a[0]:NaN,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}var _b,_c,_d={};for(var i in {toString:1}){_b=[];break;}dojo._extraNames=_b=_b||["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];_c=_b.length;dojo._mixin=function(_e,_f){var _10,s,i;for(_10 in _f){s=_f[_10];if(!(_10 in _e)||(_e[_10]!==s&&(!(_10 in _d)||_d[_10]!==s))){_e[_10]=s;}}if(_c&&_f){for(i=0;i<_c;++i){_10=_b[i];s=_f[_10];if(!(_10 in _e)||(_e[_10]!==s&&(!(_10 in _d)||_d[_10]!==s))){_e[_10]=s;}}}return _e;};dojo.mixin=function(obj,_11){if(!obj){obj={};}for(var i=1,l=arguments.length;i<l;i++){d._mixin(obj,arguments[i]);}return obj;};dojo._getProp=function(_12,_13,_14){var obj=_14||d.global;for(var i=0,p;obj&&(p=_12[i]);i++){if(i==0&&d._scopeMap[p]){p=d._scopeMap[p];}obj=(p in obj?obj[p]:(_13?obj[p]={}:undefined));}return obj;};dojo.setObject=function(_15,_16,_17){var _18=_15.split("."),p=_18.pop(),obj=d._getProp(_18,true,_17);return obj&&p?(obj[p]=_16):undefined;};dojo.getObject=function(_19,_1a,_1b){return d._getProp(_19.split("."),_1a,_1b);};dojo.exists=function(_1c,obj){return d.getObject(_1c,false,obj)!==undefined;};dojo["eval"]=function(_1d){return d.global.eval?d.global.eval(_1d):eval(_1d);};d.deprecated=d.experimental=function(){};})();(function(){var d=dojo,_1e;d.mixin(d,{_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(_1f){var mp=d._modulePrefixes;return !!(mp[_1f]&&mp[_1f].value);},_getModulePrefix:function(_20){var mp=d._modulePrefixes;if(d._moduleHasPrefix(_20)){return mp[_20].value;}return _20;},_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});dojo._loadPath=function(_21,_22,cb){var uri=((_21.charAt(0)=="/"||_21.match(/^\w+:/))?"":d.baseUrl)+_21;try{_1e=_22;return !_22?d._loadUri(uri,cb):d._loadUriAndCheck(uri,_22,cb);}catch(e){console.error(e);return false;}finally{_1e=null;}};dojo._loadUri=function(uri,cb){if(d._loadedUrls[uri]){return true;}d._inFlightCount++;var _23=d._getText(uri,true);if(_23){d._loadedUrls[uri]=true;d._loadedUrls.push(uri);if(cb){_23=/^define\(/.test(_23)?_23:"("+_23+")";}else{_23=d._scopePrefix+_23+d._scopeSuffix;}if(!d.isIE){_23+="\r\n//@ sourceURL="+uri;}var _24=d["eval"](_23);if(cb){cb(_24);}}if(--d._inFlightCount==0&&d._postLoad&&d._loaders.length){setTimeout(function(){if(d._inFlightCount==0){d._callLoaded();}},0);}return !!_23;};dojo._loadUriAndCheck=function(uri,_25,cb){var ok=false;try{ok=d._loadUri(uri,cb);}catch(e){console.error("failed loading "+uri+" with error: "+e);}return !!(ok&&d._loadedModules[_25]);};dojo.loaded=function(){d._loadNotifying=true;d._postLoad=true;var mll=d._loaders;d._loaders=[];for(var x=0;x<mll.length;x++){mll[x]();}d._loadNotifying=false;if(d._postLoad&&d._inFlightCount==0&&mll.length){d._callLoaded();}};dojo.unloaded=function(){var mll=d._unloaders;while(mll.length){(mll.pop())();}};d._onto=function(arr,obj,fn){if(!fn){arr.push(obj);}else{if(fn){var _26=(typeof fn=="string")?obj[fn]:fn;arr.push(function(){_26.call(obj);});}}};dojo.ready=dojo.addOnLoad=function(obj,_27){d._onto(d._loaders,obj,_27);if(d._postLoad&&d._inFlightCount==0&&!d._loadNotifying){d._callLoaded();}};var dca=d.config.addOnLoad;if(dca){d.addOnLoad[(dca instanceof Array?"apply":"call")](d,dca);}dojo._modulesLoaded=function(){if(d._postLoad){return;}if(d._inFlightCount>0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(d.config.useXDomain&&d.isOpera)){setTimeout(d.isAIR?function(){d.loaded();}:d._scopeName+".loaded();",0);}else{d.loaded();}};dojo._getModuleSymbols=function(_28){var _29=_28.split(".");for(var i=_29.length;i>0;i--){var _2a=_29.slice(0,i).join(".");if(i==1&&!d._moduleHasPrefix(_2a)){_29[0]="../"+_29[0];}else{var _2b=d._getModulePrefix(_2a);if(_2b!=_2a){_29.splice(0,i,_2b);break;}}}return _29;};dojo._global_omit_module_check=false;dojo.loadInit=function(_2c){_2c();};dojo._loadModule=dojo.require=function(_2d,_2e){_2e=d._global_omit_module_check||_2e;var _2f=d._loadedModules[_2d];if(_2f){return _2f;}var _30=d._getModuleSymbols(_2d).join("/")+".js";var _31=!_2e?_2d:null;var ok=d._loadPath(_30,_31);if(!ok&&!_2e){throw new Error("Could not load '"+_2d+"'; last tried '"+_30+"'");}if(!_2e&&!d._isXDomain){_2f=d._loadedModules[_2d];if(!_2f){throw new Error("symbol '"+_2d+"' is not defined after loading '"+_30+"'");}}return _2f;};dojo.provide=function(_32){_32=_32+"";return (d._loadedModules[_32]=d.getObject(_32,true));};dojo.platformRequire=function(_33){var _34=_33.common||[];var _35=_34.concat(_33[d._name]||_33["default"]||[]);for(var x=0;x<_35.length;x++){var _36=_35[x];if(_36.constructor==Array){d._loadModule.apply(d,_36);}else{d._loadModule(_36);}}};dojo.requireIf=function(_37,_38){if(_37===true){var _39=[];for(var i=1;i<arguments.length;i++){_39.push(arguments[i]);}d.require.apply(d,_39);}};dojo.requireAfterIf=d.requireIf;dojo.registerModulePath=function(_3a,_3b){d._modulePrefixes[_3a]={name:_3a,value:_3b};};dojo.requireLocalization=function(_3c,_3d,_3e,_3f){d.require("dojo.i18n");d.i18n._requireLocalization.apply(d.hostenv,arguments);};var ore=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),ire=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");dojo._Url=function(){var n=null,_40=arguments,uri=[_40[0]];for(var i=1;i<_40.length;i++){if(!_40[i]){continue;}var _41=new d._Url(_40[i]+""),_42=new d._Url(uri[0]+"");if(_41.path==""&&!_41.scheme&&!_41.authority&&!_41.query){if(_41.fragment!=n){_42.fragment=_41.fragment;}_41=_42;}else{if(!_41.scheme){_41.scheme=_42.scheme;if(!_41.authority){_41.authority=_42.authority;if(_41.path.charAt(0)!="/"){var _43=_42.path.substring(0,_42.path.lastIndexOf("/")+1)+_41.path;var _44=_43.split("/");for(var j=0;j<_44.length;j++){if(_44[j]=="."){if(j==_44.length-1){_44[j]="";}else{_44.splice(j,1);j--;}}else{if(j>0&&!(j==1&&_44[0]=="")&&_44[j]==".."&&_44[j-1]!=".."){if(j==(_44.length-1)){_44.splice(j,1);_44[j-1]="";}else{_44.splice(j-1,2);j-=2;}}}}_41.path=_44.join("/");}}}}uri=[];if(_41.scheme){uri.push(_41.scheme,":");}if(_41.authority){uri.push("//",_41.authority);}uri.push(_41.path);if(_41.query){uri.push("?",_41.query);}if(_41.fragment){uri.push("#",_41.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_45,url){var loc=d._getModuleSymbols(_45).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _46=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_46==-1||_46>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _47=document.getElementsByTagName("script");var _48=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_47.length;i++){var src=_47[i].getAttribute("src");if(!src){continue;}var m=src.match(_48);if(m){if(!d.config.baseUrl){d.config.baseUrl=src.substring(0,m.index);}var cfg=(_47[i].getAttribute("djConfig")||_47[i].getAttribute("data-dojo-config"));if(cfg){var _49=eval("({ "+cfg+" })");for(var x in _49){dojo.config[x]=_49[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);if(dua.indexOf("Opera")>=0){d.isOpera=tv;}if(dua.indexOf("AdobeAIR")>=0){d.isAIR=1;}d.isKhtml=(dav.indexOf("Konqueror")>=0)?tv:0;d.isWebKit=parseFloat(dua.split("WebKit/")[1])||undefined;d.isChrome=parseFloat(dua.split("Chrome/")[1])||undefined;d.isMac=dav.indexOf("Macintosh")>=0;var _4a=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(_4a&&!dojo.isChrome){d.isSafari=parseFloat(dav.split("Version/")[1]);if(!d.isSafari||parseFloat(dav.substr(_4a+7))<=419.3){d.isSafari=2;}}if(dua.indexOf("Gecko")>=0&&!d.isKhtml&&!d.isWebKit){d.isMozilla=d.isMoz=tv;}if(d.isMoz){d.isFF=parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined;}if(document.all&&!d.isOpera){d.isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var _4b=document.documentMode;if(_4b&&_4b!=5&&Math.floor(d.isIE)!=_4b){d.isIE=_4b;}}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}d.isQuirks=document.compatMode=="BackCompat";d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _4c,_4d;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_4c=new XMLHttpRequest();}catch(e){}}if(!_4c){for(var i=0;i<3;++i){var _4e=d._XMLHTTP_PROGIDS[i];try{_4c=new ActiveXObject(_4e);}catch(e){_4d=e;}if(_4c){d._XMLHTTP_PROGIDS=[_4e];break;}}}if(!_4c){throw new Error("XMLHTTP not available: "+_4d);}return _4c;};d._isDocumentOk=function(_4f){var _50=_4f.status||0,lp=location.protocol;return (_50>=200&&_50<300)||_50==304||_50==1223||(!_50&&(lp=="file:"||lp=="chrome:"||lp=="chrome-extension:"||lp=="app:"));};var _51=window.location+"";var _52=document.getElementsByTagName("base");var _53=(_52&&_52.length>0);d._getText=function(uri,_54){var _55=d._xhrObj();if(!_53&&dojo._Url){uri=(new dojo._Url(_51,uri)).toString();}if(d.config.cacheBust){uri+="";uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_55.open("GET",uri,false);try{_55.send(null);if(!d._isDocumentOk(_55)){var err=Error("Unable to load "+uri+" status:"+_55.status);err.status=_55.status;err.responseText=_55.responseText;throw err;}}catch(e){if(_54){return null;}throw e;}return _55.responseText;};var _56=window;var _57=function(_58,fp){var _59=_56.attachEvent||_56.addEventListener;_58=_56.attachEvent?_58:_58.substring(2);_59(_58,function(){fp.apply(_56,arguments);},false);};d._windowUnloaders=[];d.windowUnloaded=function(){var mll=d._windowUnloaders;while(mll.length){(mll.pop())();}d=null;};var _5a=0;d.addOnWindowUnload=function(obj,_5b){d._onto(d._windowUnloaders,obj,_5b);if(!_5a){_5a=1;_57("onunload",d.windowUnloaded);}};var _5c=0;d.addOnUnload=function(obj,_5d){d._onto(d._unloaders,obj,_5d);if(!_5c){_5c=1;_57("onbeforeunload",dojo.unloaded);}};})();dojo._initFired=false;dojo._loadInit=function(e){if(dojo._scrollIntervalId){clearInterval(dojo._scrollIntervalId);dojo._scrollIntervalId=0;}if(!dojo._initFired){dojo._initFired=true;if(!dojo.config.afterOnLoad&&window.detachEvent){window.detachEvent("onload",dojo._loadInit);}if(dojo._inFlightCount==0){dojo._modulesLoaded();}}};if(!dojo.config.afterOnLoad){if(document.addEventListener){document.addEventListener("DOMContentLoaded",dojo._loadInit,false);window.addEventListener("load",dojo._loadInit,false);}else{if(window.attachEvent){window.attachEvent("onload",dojo._loadInit);if(!dojo.config.skipIeDomLoaded&&self===self.top){dojo._scrollIntervalId=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");dojo._loadInit();}}catch(e){}},30);}}}}if(dojo.isIE){try{(function(){document.namespaces.add("v","urn:schemas-microsoft-com:vml");var _5e=["*","group","roundrect","oval","shape","rect","imagedata","path","textpath","text"],i=0,l=1,s=document.createStyleSheet();if(dojo.isIE>=8){i=1;l=_5e.length;}for(;i<l;++i){s.addRule("v\\:"+_5e[i],"behavior:url(#default#VML); display:inline-block");}})();}catch(e){}}}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _5f in mp){dojo.registerModulePath(_5f,mp[_5f]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.require("dojo._base._loader.loader_debug");dojo.require("dojo.i18n");}if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");(function(){var d=dojo,_60=Object.prototype.toString;dojo.isString=function(it){return (typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=function(it){return _60.call(it)==="[object Function]";};dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||d.isArray(it)||d.isFunction(it));};dojo.isArrayLike=function(it){return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!d.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_61,_62){for(var i=1,l=arguments.length;i<l;i++){d._mixin(_61.prototype,arguments[i]);}return _61;};dojo._hitchArgs=function(_63,_64){var pre=d._toArray(arguments,2);var _65=d.isString(_64);return function(){var _66=d._toArray(arguments);var f=_65?(_63||d.global)[_64]:_64;return f&&f.apply(_63||this,pre.concat(_66));};};dojo.hitch=function(_67,_68){if(arguments.length>2){return d._hitchArgs.apply(d,arguments);}if(!_68){_68=_67;_67=null;}if(d.isString(_68)){_67=_67||d.global;if(!_67[_68]){throw (["dojo.hitch: scope[\"",_68,"\"] is null (scope=\"",_67,"\")"].join(""));}return function(){return _67[_68].apply(_67,arguments||[]);};}return !_67?_68:function(){return _68.apply(_67,arguments||[]);};};dojo.delegate=dojo._delegate=(function(){function TMP(){};return function(obj,_69){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_69){d._mixin(tmp,_69);}return tmp;};})();var _6a=function(obj,_6b,_6c){return (_6c||[]).concat(Array.prototype.slice.call(obj,_6b||0));};var _6d=function(obj,_6e,_6f){var arr=_6f||[];for(var x=_6e||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};dojo._toArray=d.isIE?function(obj){return ((obj.item)?_6d:_6a).apply(this,arguments);}:_6a;dojo.partial=function(_70){var arr=[null];return d.hitch.apply(d,arr.concat(d._toArray(arguments)));};var _71=d._extraNames,_72=_71.length,_73={};dojo.clone=function(o){if(!o||typeof o!="object"||d.isFunction(o)){return o;}if(o.nodeType&&"cloneNode" in o){return o.cloneNode(true);}if(o instanceof Date){return new Date(o.getTime());}if(o instanceof RegExp){return new RegExp(o);}var r,i,l,s,_74;if(d.isArray(o)){r=[];for(i=0,l=o.length;i<l;++i){if(i in o){r.push(d.clone(o[i]));}}}else{r=o.constructor?new o.constructor():{};}for(_74 in o){s=o[_74];if(!(_74 in r)||(r[_74]!==s&&(!(_74 in _73)||_73[_74]!==s))){r[_74]=d.clone(s);}}if(_72){for(i=0;i<_72;++i){_74=_71[i];s=o[_74];if(!(_74 in r)||(r[_74]!==s&&(!(_74 in _73)||_73[_74]!==s))){r[_74]=s;}}}return r;};dojo.trim=String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");};var _75=/\{([^\}]+)\}/g;dojo.replace=function(_76,map,_77){return _76.replace(_77||_75,d.isFunction(map)?map:function(_78,k){return d.getObject(k,false,map);});};})();}if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.provide("dojo._base.array");(function(){var _79=function(arr,obj,cb){return [(typeof arr=="string")?arr.split(""):arr,obj||dojo.global,(typeof cb=="string")?new Function("item","index","array",cb):cb];};var _7a=function(_7b,arr,_7c,_7d){var _7e=_79(arr,_7d,_7c);arr=_7e[0];for(var i=0,l=arr.length;i<l;++i){var _7f=!!_7e[2].call(_7e[1],arr[i],i,arr);if(_7b^_7f){return _7f;}}return _7b;};dojo.mixin(dojo,{indexOf:function(_80,_81,_82,_83){var _84=1,end=_80.length||0,i=0;if(_83){i=end-1;_84=end=-1;}if(_82!=undefined){i=_82;}if((_83&&i>end)||i<end){for(;i!=end;i+=_84){if(_80[i]==_81){return i;}}}return -1;},lastIndexOf:function(_85,_86,_87){return dojo.indexOf(_85,_86,_87,true);},forEach:function(arr,_88,_89){if(!arr||!arr.length){return;}var _8a=_79(arr,_89,_88);arr=_8a[0];for(var i=0,l=arr.length;i<l;++i){_8a[2].call(_8a[1],arr[i],i,arr);}},every:function(arr,_8b,_8c){return _7a(true,arr,_8b,_8c);},some:function(arr,_8d,_8e){return _7a(false,arr,_8d,_8e);},map:function(arr,_8f,_90){var _91=_79(arr,_90,_8f);arr=_91[0];var _92=(arguments[3]?(new arguments[3]()):[]);for(var i=0,l=arr.length;i<l;++i){_92.push(_91[2].call(_91[1],arr[i],i,arr));}return _92;},filter:function(arr,_93,_94){var _95=_79(arr,_94,_93);arr=_95[0];var _96=[];for(var i=0,l=arr.length;i<l;++i){if(_95[2].call(_95[1],arr[i],i,arr)){_96.push(arr[i]);}}return _96;}});})();}if(!dojo._hasResource["dojo._base.declare"]){dojo._hasResource["dojo._base.declare"]=true;dojo.provide("dojo._base.declare");(function(){var d=dojo,mix=d._mixin,op=Object.prototype,_97=op.toString,_98=new Function,_99=0,_9a="constructor";function err(msg,cls){throw new Error("declare"+(cls?" "+cls:"")+": "+msg);};function _9b(_9c,_9d){var _9e=[],_9f=[{cls:0,refs:[]}],_a0={},_a1=1,l=_9c.length,i=0,j,lin,_a2,top,_a3,rec,_a4,_a5;for(;i<l;++i){_a2=_9c[i];if(!_a2){err("mixin #"+i+" is unknown. Did you use dojo.require to pull it in?",_9d);}else{if(_97.call(_a2)!="[object Function]"){err("mixin #"+i+" is not a callable constructor.",_9d);}}lin=_a2._meta?_a2._meta.bases:[_a2];top=0;for(j=lin.length-1;j>=0;--j){_a3=lin[j].prototype;if(!_a3.hasOwnProperty("declaredClass")){_a3.declaredClass="uniqName_"+(_99++);}_a4=_a3.declaredClass;if(!_a0.hasOwnProperty(_a4)){_a0[_a4]={count:0,refs:[],cls:lin[j]};++_a1;}rec=_a0[_a4];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_9f[0].refs.push(top);}while(_9f.length){top=_9f.pop();_9e.push(top.cls);--_a1;while(_a5=top.refs,_a5.length==1){top=_a5[0];if(!top||--top.count){top=0;break;}_9e.push(top.cls);--_a1;}if(top){for(i=0,l=_a5.length;i<l;++i){top=_a5[i];if(!--top.count){_9f.push(top);}}}}if(_a1){err("can't build consistent linearization",_9d);}_a2=_9c[0];_9e[0]=_a2?_a2._meta&&_a2===_9e[_9e.length-_a2._meta.bases.length]?_a2._meta.bases.length:1:0;return _9e;};function _a6(_a7,a,f){var _a8,_a9,_aa,_ab,_ac,_ad,_ae,opf,pos,_af=this._inherited=this._inherited||{};if(typeof _a7=="string"){_a8=_a7;_a7=a;a=f;}f=0;_ab=_a7.callee;_a8=_a8||_ab.nom;if(!_a8){err("can't deduce a name to call inherited()",this.declaredClass);}_ac=this.constructor._meta;_aa=_ac.bases;pos=_af.p;if(_a8!=_9a){if(_af.c!==_ab){pos=0;_ad=_aa[0];_ac=_ad._meta;if(_ac.hidden[_a8]!==_ab){_a9=_ac.chains;if(_a9&&typeof _a9[_a8]=="string"){err("calling chained method with inherited: "+_a8,this.declaredClass);}do{_ac=_ad._meta;_ae=_ad.prototype;if(_ac&&(_ae[_a8]===_ab&&_ae.hasOwnProperty(_a8)||_ac.hidden[_a8]===_ab)){break;}}while(_ad=_aa[++pos]);pos=_ad?pos:-1;}}_ad=_aa[++pos];if(_ad){_ae=_ad.prototype;if(_ad._meta&&_ae.hasOwnProperty(_a8)){f=_ae[_a8];}else{opf=op[_a8];do{_ae=_ad.prototype;f=_ae[_a8];if(f&&(_ad._meta?_ae.hasOwnProperty(_a8):f!==opf)){break;}}while(_ad=_aa[++pos]);}}f=_ad&&f||op[_a8];}else{if(_af.c!==_ab){pos=0;_ac=_aa[0]._meta;if(_ac&&_ac.ctor!==_ab){_a9=_ac.chains;if(!_a9||_a9.constructor!=="manual"){err("calling chained constructor with inherited",this.declaredClass);}while(_ad=_aa[++pos]){_ac=_ad._meta;if(_ac&&_ac.ctor===_ab){break;}}pos=_ad?pos:-1;}}while(_ad=_aa[++pos]){_ac=_ad._meta;f=_ac?_ac.ctor:_ad;if(f){break;}}f=_ad&&f;}_af.c=f;_af.p=pos;if(f){return a===true?f:f.apply(this,a||_a7);}};function _b0(_b1,_b2){if(typeof _b1=="string"){return this.inherited(_b1,_b2,true);}return this.inherited(_b1,true);};function _b3(cls){var _b4=this.constructor._meta.bases;for(var i=0,l=_b4.length;i<l;++i){if(_b4[i]===cls){return true;}}return this instanceof cls;};function _b5(_b6,_b7){var _b8,i=0,l=d._extraNames.length;for(_b8 in _b7){if(_b8!=_9a&&_b7.hasOwnProperty(_b8)){_b6[_b8]=_b7[_b8];}}for(;i<l;++i){_b8=d._extraNames[i];if(_b8!=_9a&&_b7.hasOwnProperty(_b8)){_b6[_b8]=_b7[_b8];}}};function _b9(_ba,_bb){var _bc,t,i=0,l=d._extraNames.length;for(_bc in _bb){t=_bb[_bc];if((t!==op[_bc]||!(_bc in op))&&_bc!=_9a){if(_97.call(t)=="[object Function]"){t.nom=_bc;}_ba[_bc]=t;}}for(;i<l;++i){_bc=d._extraNames[i];t=_bb[_bc];if((t!==op[_bc]||!(_bc in op))&&_bc!=_9a){if(_97.call(t)=="[object Function]"){t.nom=_bc;}_ba[_bc]=t;}}return _ba;};function _bd(_be){_b9(this.prototype,_be);return this;};function _bf(_c0,_c1){return function(){var a=arguments,_c2=a,a0=a[0],f,i,m,l=_c0.length,_c3;if(!(this instanceof a.callee)){return _c4(a);}if(_c1&&(a0&&a0.preamble||this.preamble)){_c3=new Array(_c0.length);_c3[0]=a;for(i=0;;){a0=a[0];if(a0){f=a0.preamble;if(f){a=f.apply(this,a)||a;}}f=_c0[i].prototype;f=f.hasOwnProperty("preamble")&&f.preamble;if(f){a=f.apply(this,a)||a;}if(++i==l){break;}_c3[i]=a;}}for(i=l-1;i>=0;--i){f=_c0[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_c3?_c3[i]:a);}}f=this.postscript;if(f){f.apply(this,_c2);}};};function _c5(_c6,_c7){return function(){var a=arguments,t=a,a0=a[0],f;if(!(this instanceof a.callee)){return _c4(a);}if(_c7){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(_c6){_c6.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _c8(_c9){return function(){var a=arguments,i=0,f,m;if(!(this instanceof a.callee)){return _c4(a);}for(;f=_c9[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _ca(_cb,_cc,_cd){return function(){var b,m,f,i=0,_ce=1;if(_cd){i=_cc.length-1;_ce=-1;}for(;b=_cc[i];i+=_ce){m=b._meta;f=(m?m.hidden:b.prototype)[_cb];if(f){f.apply(this,arguments);}}};};function _cf(_d0){_98.prototype=_d0.prototype;var t=new _98;_98.prototype=null;return t;};function _c4(_d1){var _d2=_d1.callee,t=_cf(_d2);_d2.apply(t,_d1);return t;};d.declare=function(_d3,_d4,_d5){if(typeof _d3!="string"){_d5=_d4;_d4=_d3;_d3="";}_d5=_d5||{};var _d6,i,t,_d7,_d8,_d9,_da,_db=1,_dc=_d4;if(_97.call(_d4)=="[object Array]"){_d9=_9b(_d4,_d3);t=_d9[0];_db=_d9.length-t;_d4=_d9[_db];}else{_d9=[0];if(_d4){if(_97.call(_d4)=="[object Function]"){t=_d4._meta;_d9=_d9.concat(t?t.bases:_d4);}else{err("base class is not a callable constructor.",_d3);}}else{if(_d4!==null){err("unknown base class. Did you use dojo.require to pull it in?",_d3);}}}if(_d4){for(i=_db-1;;--i){_d6=_cf(_d4);if(!i){break;}t=_d9[i];(t._meta?_b5:mix)(_d6,t.prototype);_d7=new Function;_d7.superclass=_d4;_d7.prototype=_d6;_d4=_d6.constructor=_d7;}}else{_d6={};}_b9(_d6,_d5);t=_d5.constructor;if(t!==op.constructor){t.nom=_9a;_d6.constructor=t;}for(i=_db-1;i;--i){t=_d9[i]._meta;if(t&&t.chains){_da=mix(_da||{},t.chains);}}if(_d6["-chains-"]){_da=mix(_da||{},_d6["-chains-"]);}t=!_da||!_da.hasOwnProperty(_9a);_d9[0]=_d7=(_da&&_da.constructor==="manual")?_c8(_d9):(_d9.length==1?_c5(_d5.constructor,t):_bf(_d9,t));_d7._meta={bases:_d9,hidden:_d5,chains:_da,parents:_dc,ctor:_d5.constructor};_d7.superclass=_d4&&_d4.prototype;_d7.extend=_bd;_d7.prototype=_d6;_d6.constructor=_d7;_d6.getInherited=_b0;_d6.inherited=_a6;_d6.isInstanceOf=_b3;if(_d3){_d6.declaredClass=_d3;d.setObject(_d3,_d7);}if(_da){for(_d8 in _da){if(_d6[_d8]&&typeof _da[_d8]=="string"&&_d8!=_9a){t=_d6[_d8]=_ca(_d8,_d9,_da[_d8]==="after");t.nom=_d8;}}}return _d7;};d.safeMixin=_b9;})();}if(!dojo._hasResource["dojo._base.connect"]){dojo._hasResource["dojo._base.connect"]=true;dojo.provide("dojo._base.connect");dojo._listener={getDispatcher:function(){return function(){var ap=Array.prototype,c=arguments.callee,ls=c._listeners,t=c.target,r=t&&t.apply(this,arguments),i,lls=[].concat(ls);for(i in lls){if(!(i in ap)){lls[i].apply(this,arguments);}}return r;};},add:function(_dd,_de,_df){_dd=_dd||dojo.global;var f=_dd[_de];if(!f||!f._listeners){var d=dojo._listener.getDispatcher();d.target=f;d._listeners=[];f=_dd[_de]=d;}return f._listeners.push(_df);},remove:function(_e0,_e1,_e2){var f=(_e0||dojo.global)[_e1];if(f&&f._listeners&&_e2--){delete f._listeners[_e2];}}};dojo.connect=function(obj,_e3,_e4,_e5,_e6){var a=arguments,_e7=[],i=0;_e7.push(dojo.isString(a[0])?null:a[i++],a[i++]);var a1=a[i+1];_e7.push(dojo.isString(a1)||dojo.isFunction(a1)?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){_e7.push(a[i]);}return dojo._connect.apply(this,_e7);};dojo._connect=function(obj,_e8,_e9,_ea){var l=dojo._listener,h=l.add(obj,_e8,dojo.hitch(_e9,_ea));return [obj,_e8,h,l];};dojo.disconnect=function(_eb){if(_eb&&_eb[0]!==undefined){dojo._disconnect.apply(this,_eb);delete _eb[0];}};dojo._disconnect=function(obj,_ec,_ed,_ee){_ee.remove(obj,_ec,_ed);};dojo._topics={};dojo.subscribe=function(_ef,_f0,_f1){return [_ef,dojo._listener.add(dojo._topics,_ef,dojo.hitch(_f0,_f1))];};dojo.unsubscribe=function(_f2){if(_f2){dojo._listener.remove(dojo._topics,_f2[0],_f2[1]);}};dojo.publish=function(_f3,_f4){var f=dojo._topics[_f3];if(f){f.apply(this,_f4||[]);}};dojo.connectPublisher=function(_f5,obj,_f6){var pf=function(){dojo.publish(_f5,arguments);};return _f6?dojo.connect(obj,_f6,pf):dojo.connect(obj,pf);};}if(!dojo._hasResource["dojo._base.Deferred"]){dojo._hasResource["dojo._base.Deferred"]=true;dojo.provide("dojo._base.Deferred");(function(){var _f7=function(){};var _f8=Object.freeze||function(){};dojo.Deferred=function(_f9){var _fa,_fb,_fc,_fd,_fe;var _ff=(this.promise={});function _100(_101){if(_fb){throw new Error("This deferred has already been resolved");}_fa=_101;_fb=true;_102();};function _102(){var _103;while(!_103&&_fe){var _104=_fe;_fe=_fe.next;if((_103=(_104.progress==_f7))){_fb=false;}var func=(_fc?_104.error:_104.resolved);if(func){try{var _105=func(_fa);if(_105&&typeof _105.then==="function"){_105.then(dojo.hitch(_104.deferred,"resolve"),dojo.hitch(_104.deferred,"reject"));continue;}var _106=_103&&_105===undefined;if(_103&&!_106){_fc=_105 instanceof Error;}_104.deferred[_106&&_fc?"reject":"resolve"](_106?_fa:_105);}catch(e){_104.deferred.reject(e);}}else{if(_fc){_104.deferred.reject(_fa);}else{_104.deferred.resolve(_fa);}}}};this.resolve=this.callback=function(_107){this.fired=0;this.results=[_107,null];_100(_107);};this.reject=this.errback=function(_108){_fc=true;this.fired=1;_100(_108);this.results=[null,_108];if(!_108||_108.log!==false){(dojo.config.deferredOnError||function(x){console.error(x);})(_108);}};this.progress=function(_109){var _10a=_fe;while(_10a){var _10b=_10a.progress;_10b&&_10b(_109);_10a=_10a.next;}};this.addCallbacks=function(_10c,_10d){this.then(_10c,_10d,_f7);return this;};this.then=_ff.then=function(_10e,_10f,_110){var _111=_110==_f7?this:new dojo.Deferred(_ff.cancel);var _112={resolved:_10e,error:_10f,progress:_110,deferred:_111};if(_fe){_fd=_fd.next=_112;}else{_fe=_fd=_112;}if(_fb){_102();}return _111.promise;};var _113=this;this.cancel=_ff.cancel=function(){if(!_fb){var _114=_f9&&_f9(_113);if(!_fb){if(!(_114 instanceof Error)){_114=new Error(_114);}_114.log=false;_113.reject(_114);}}};_f8(_ff);};dojo.extend(dojo.Deferred,{addCallback:function(_115){return this.addCallbacks(dojo.hitch.apply(dojo,arguments));},addErrback:function(_116){return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));},addBoth:function(_117){var _118=dojo.hitch.apply(dojo,arguments);return this.addCallbacks(_118,_118);},fired:-1});})();dojo.when=function(_119,_11a,_11b,_11c){if(_119&&typeof _119.then==="function"){return _119.then(_11a,_11b,_11c);}return _11a(_119);};}if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(json){return eval("("+json+")");};dojo._escapeString=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_11d,_11e){if(it===undefined){return "undefined";}var _11f=typeof it;if(_11f=="number"||_11f=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}var _120=arguments.callee;var _121;_11e=_11e||"";var _122=_11d?_11e+dojo.toJsonIndentStr:"";var tf=it.__json__||it.json;if(dojo.isFunction(tf)){_121=tf.call(it);if(it!==_121){return _120(_121,_11d,_122);}}if(it.nodeType&&it.cloneNode){throw new Error("Can't serialize DOM nodes");}var sep=_11d?" ":"";var _123=_11d?"\n":"";if(dojo.isArray(it)){var res=dojo.map(it,function(obj){var val=_120(obj,_11d,_122);if(typeof val!="string"){val="undefined";}return _123+_122+val;});return "["+res.join(","+sep)+_123+_11e+"]";}if(_11f=="function"){return null;}var _124=[],key;for(key in it){var _125,val;if(typeof key=="number"){_125="\""+key+"\"";}else{if(typeof key=="string"){_125=dojo._escapeString(key);}else{continue;}}val=_120(it[key],_11d,_122);if(typeof val!="string"){continue;}_124.push(_123+_122+_125+":"+sep+val);}return "{"+_124.join(","+sep)+_123+_11e+"}";};}if(!dojo._hasResource["dojo._base.Color"]){dojo._hasResource["dojo._base.Color"]=true;dojo.provide("dojo._base.Color");(function(){var d=dojo;dojo.Color=function(_126){if(_126){this.setColor(_126);}};dojo.Color.named={black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255],transparent:d.config.transparentColor||[255,255,255]};dojo.extend(dojo.Color,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_127){if(d.isString(_127)){d.colorFromString(_127,this);}else{if(d.isArray(_127)){d.colorFromArray(_127,this);}else{this._set(_127.r,_127.g,_127.b,_127.a);if(!(_127 instanceof d.Color)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=d.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_128){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_128?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});dojo.blendColors=function(_129,end,_12a,obj){var t=obj||new d.Color();d.forEach(["r","g","b","a"],function(x){t[x]=_129[x]+(end[x]-_129[x])*_12a;if(x!="a"){t[x]=Math.round(t[x]);}});return t.sanitize();};dojo.colorFromRgb=function(_12b,obj){var m=_12b.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&dojo.colorFromArray(m[1].split(/\s*,\s*/),obj);};dojo.colorFromHex=function(_12c,obj){var t=obj||new d.Color(),bits=(_12c.length==4)?4:8,mask=(1<<bits)-1;_12c=Number("0x"+_12c.substr(1));if(isNaN(_12c)){return null;}d.forEach(["b","g","r"],function(x){var c=_12c&mask;_12c>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new d.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=d.Color.named[str];return a&&d.colorFromArray(a,obj)||d.colorFromRgb(str,obj)||d.colorFromHex(str,obj);};})();}if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_12d,_12e){dojo.global=_12d;dojo.doc=_12e;};dojo.withGlobal=function(_12f,_130,_131,_132){var _133=dojo.global;try{dojo.global=_12f;return dojo.withDoc.call(null,_12f.document,_130,_131,_132);}finally{dojo.global=_133;}};dojo.withDoc=function(_134,_135,_136,_137){var _138=dojo.doc,_139=dojo._bodyLtr,oldQ=dojo.isQuirks;try{dojo.doc=_134;delete dojo._bodyLtr;dojo.isQuirks=dojo.doc.compatMode=="BackCompat";if(_136&&typeof _135=="string"){_135=_136[_135];}return _135.apply(_136,_137||[]);}finally{dojo.doc=_138;delete dojo._bodyLtr;if(_139!==undefined){dojo._bodyLtr=_139;}dojo.isQuirks=oldQ;}};}if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");(function(){var del=(dojo._event_listener={add:function(node,name,fp){if(!node){return;}name=del._normalizeEventName(name);fp=del._fixCallback(name,fp);if(!dojo.isIE&&(name=="mouseenter"||name=="mouseleave")){var ofp=fp;name=(name=="mouseenter")?"mouseover":"mouseout";fp=function(e){if(!dojo.isDescendant(e.relatedTarget,node)){return ofp.call(this,e);}};}node.addEventListener(name,fp,false);return fp;},remove:function(node,_13a,_13b){if(node){_13a=del._normalizeEventName(_13a);if(!dojo.isIE&&(_13a=="mouseenter"||_13a=="mouseleave")){_13a=(_13a=="mouseenter")?"mouseover":"mouseout";}node.removeEventListener(_13a,_13b,false);}},_normalizeEventName:function(name){return name.slice(0,2)=="on"?name.slice(2):name;},_fixCallback:function(name,fp){return name!="keypress"?fp:function(e){return fp.call(this,del._fixEvent(e,this));};},_fixEvent:function(evt,_13c){switch(evt.type){case "keypress":del._setKeyChar(evt);break;}return evt;},_setKeyChar:function(evt){evt.keyChar=evt.charCode>=32?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});dojo.fixEvent=function(evt,_13d){return del._fixEvent(evt,_13d);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _13e=dojo._listener;dojo._connect=function(obj,_13f,_140,_141,_142){var _143=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=_143?(_142?2:1):0,l=[dojo._listener,del,_13e][lid];var h=l.add(obj,_13f,dojo.hitch(_140,_141));return [obj,_13f,h,lid];};dojo._disconnect=function(obj,_144,_145,_146){([dojo._listener,del,_13e][_146]).remove(obj,_144,_145);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:dojo.isSafari?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,copyKey:dojo.isMac&&!dojo.isAIR?(dojo.isSafari?91:224):17};var _147=dojo.isMac?"metaKey":"ctrlKey";dojo.isCopyKey=function(e){return e[_147];};if(dojo.isIE<9||(dojo.isIE&&dojo.isQuirks)){dojo.mouseButtons={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_148){return e.button&_148;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{dojo.mouseButtons={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_149){return e.button==_149;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}if(dojo.isIE){var _14a=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};var iel=dojo._listener;var _14b=(dojo._ieListenersName="_"+dojo._scopeName+"_listeners");if(!dojo.config._allow_leaks){_13e=iel=dojo._ie_listener={handlers:[],add:function(_14c,_14d,_14e){_14c=_14c||dojo.global;var f=_14c[_14d];if(!f||!f[_14b]){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d[_14b]=[];f=_14c[_14d]=d;}return f[_14b].push(ieh.push(_14e)-1);},remove:function(_14f,_150,_151){var f=(_14f||dojo.global)[_150],l=f&&f[_14b];if(f&&l&&_151--){delete ieh[l[_151]];delete l[_151];}}};var ieh=iel.handlers;}dojo.mixin(del,{add:function(node,_152,fp){if(!node){return;}_152=del._normalizeEventName(_152);if(_152=="onkeypress"){var kd=node.onkeydown;if(!kd||!kd[_14b]||!kd._stealthKeydownHandle){var h=del.add(node,"onkeydown",del._stealthKeyDown);kd=node.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(node,_152,del._fixCallback(fp));},remove:function(node,_153,_154){_153=del._normalizeEventName(_153);iel.remove(node,_153,_154);if(_153=="onkeypress"){var kd=node.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(node,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_155){return _155.slice(0,2)!="on"?"on"+_155:_155;},_nop:function(){},_fixEvent:function(evt,_156){if(!evt){var w=_156&&(_156.ownerDocument||_156.document||_156).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_156||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _157=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _158=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_157.scrollLeft||0)-_158.x;evt.pageY=evt.clientY+(_157.scrollTop||0)-_158.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}if(dojo.isIE<9||dojo.isQuirks){evt.stopPropagation=del._stopPropagation;evt.preventDefault=del._preventDefault;}return del._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;del._setKeyChar(evt);break;}return evt;},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp[_14b]){return;}var k=evt.keyCode;var _159=(k!=13||(dojo.isIE>=9&&!dojo.isQuirks))&&k!=32&&k!=27&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_159||evt.ctrlKey){var c=_159?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,faux);if(dojo.isIE<9||(dojo.isIE&&dojo.isQuirks)){evt.cancelBubble=faux.cancelBubble;}evt.returnValue=faux.returnValue;_14a(evt,faux.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_14a(this,0);}this.returnValue=false;}});dojo.stopEvent=(dojo.isIE<9||dojo.isQuirks)?function(evt){evt=evt||window.event;del._stopPropagation.call(evt);del._preventDefault.call(evt);}:dojo.stopEvent;}del._synthesizeEvent=function(evt,_15a){var faux=dojo.mixin({},evt,_15a);del._setKeyChar(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};if(dojo.isOpera){dojo.mixin(del,{_fixEvent:function(evt,_15b){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=c<41&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return del._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isWebKit){del._add=del.add;del._remove=del.remove;dojo.mixin(del,{add:function(node,_15c,fp){if(!node){return;}var _15d=del._add(node,_15c,fp);if(del._normalizeEventName(_15c)=="keypress"){_15d._stealthKeyDownHandle=del._add(node,"keydown",function(evt){var k=evt.keyCode;var _15e=k!=13&&k!=32&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_15e||evt.ctrlKey){var c=_15e?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if(!evt.shiftKey&&c>=65&&c<=90){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});fp.call(evt.currentTarget,faux);}});}return _15d;},remove:function(node,_15f,_160){if(node){if(_160._stealthKeyDownHandle){del._remove(node,"keydown",_160._stealthKeyDownHandle);}del._remove(node,_15f,_160);}},_fixEvent:function(evt,_161){switch(evt.type){case "keypress":if(evt.faux){return evt;}var c=evt.charCode;c=c>=32?c:0;return del._synthesizeEvent(evt,{charCode:c,faux:true});}return evt;}});}})();if(dojo.isIE){dojo._ieDispatcher=function(args,_162){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=args.callee,ls=c[dojo._ieListenersName],t=h[c.target];var r=t&&t.apply(_162,args);var lls=[].concat(ls);for(var i in lls){var f=h[lls[i]];if(!(i in ap)&&f){f.apply(_162,args);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE){dojo.byId=function(id,doc){if(typeof id!="string"){return id;}var _163=doc||dojo.doc,te=_163.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_163.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}};}else{dojo.byId=function(id,doc){return ((typeof id=="string")?(doc||dojo.doc).getElementById(id):id)||null;};}(function(){var d=dojo;var byId=d.byId;var _164=null,_165;d.addOnWindowUnload(function(){_164=null;});dojo._destroyElement=dojo.destroy=function(node){node=byId(node);try{var doc=node.ownerDocument;if(!_164||_165!=doc){_164=doc.createElement("div");_165=doc;}_164.appendChild(node.parentNode?node.parentNode.removeChild(node):node);_164.innerHTML="";}catch(e){}};dojo.isDescendant=function(node,_166){try{node=byId(node);_166=byId(_166);while(node){if(node==_166){return true;}node=node.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(node,_167){node=byId(node);if(d.isMozilla){node.style.MozUserSelect=_167?"":"none";}else{if(d.isKhtml||d.isWebKit){node.style.KhtmlUserSelect=_167?"auto":"none";}else{if(d.isIE){var v=(node.unselectable=_167?"":"on");d.query("*",node).forEach("item.unselectable = '"+v+"'");}}}};var _168=function(node,ref){var _169=ref.parentNode;if(_169){_169.insertBefore(node,ref);}};var _16a=function(node,ref){var _16b=ref.parentNode;if(_16b){if(_16b.lastChild==ref){_16b.appendChild(node);}else{_16b.insertBefore(node,ref.nextSibling);}}};dojo.place=function(node,_16c,_16d){_16c=byId(_16c);if(typeof node=="string"){node=/^\s*</.test(node)?d._toDom(node,_16c.ownerDocument):byId(node);}if(typeof _16d=="number"){var cn=_16c.childNodes;if(!cn.length||cn.length<=_16d){_16c.appendChild(node);}else{_168(node,cn[_16d<0?0:_16d]);}}else{switch(_16d){case "before":_168(node,_16c);break;case "after":_16a(node,_16c);break;case "replace":_16c.parentNode.replaceChild(node,_16c);break;case "only":d.empty(_16c);_16c.appendChild(node);break;case "first":if(_16c.firstChild){_168(node,_16c.firstChild);break;}default:_16c.appendChild(node);}}return node;};dojo.boxModel="content-box";if(d.isIE){d.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}var gcs;if(d.isWebKit){gcs=function(node){var s;if(node.nodeType==1){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(d.isIE){gcs=function(node){return node.nodeType==1?node.currentStyle:{};};}else{gcs=function(node){return node.nodeType==1?node.ownerDocument.defaultView.getComputedStyle(node,null):{};};}}dojo.getComputedStyle=gcs;if(!d.isIE){d._toPixelValue=function(_16e,_16f){return parseFloat(_16f)||0;};}else{d._toPixelValue=function(_170,_171){if(!_171){return 0;}if(_171=="medium"){return 4;}if(_171.slice&&_171.slice(-2)=="px"){return parseFloat(_171);}with(_170){var _172=style.left;var _173=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_171;_171=style.pixelLeft;}catch(e){_171=0;}style.left=_172;runtimeStyle.left=_173;}return _171;};}var px=d._toPixelValue;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};dojo._getOpacity=d.isIE<9?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return gcs(node).opacity;};dojo._setOpacity=d.isIE<9?function(node,_174){var ov=_174*100,_175=_174==1;node.style.zoom=_175?"":1;if(!af(node)){if(_175){return _174;}node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}else{af(node,1).Opacity=ov;}af(node,1).Enabled=!_175;if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){d._setOpacity(i,_174);});}return _174;}:function(node,_176){return node.style.opacity=_176;};var _177={left:true,top:true};var _178=/margin|padding|width|height|max|min|offset/;var _179=function(node,type,_17a){type=type.toLowerCase();if(d.isIE){if(_17a=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_17a){case 700:return "bold";case 400:default:return "normal";}}}if(!(type in _177)){_177[type]=_178.test(type);}return _177[type]?px(node,_17a):_17a;};var _17b=d.isIE?"styleFloat":"cssFloat",_17c={"cssFloat":_17b,"styleFloat":_17b,"float":_17b};dojo.style=function(node,_17d,_17e){var n=byId(node),args=arguments.length,op=(_17d=="opacity");_17d=_17c[_17d]||_17d;if(args==3){return op?d._setOpacity(n,_17e):n.style[_17d]=_17e;}if(args==2&&op){return d._getOpacity(n);}var s=gcs(n);if(args==2&&typeof _17d!="string"){for(var x in _17d){d.style(node,x,_17d[x]);}return s;}return (args==1)?s:_179(n,_17d,s[_17d]||n.style[_17d]);};dojo._getPadExtents=function(n,_17f){var s=_17f||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_180){var ne="none",s=_180||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_181){var s=_181||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_182){var s=_182||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isWebKit&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(node,_183){var s=_183||gcs(node),me=d._getMarginExtents(node,s);var l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera||(d.isIE>7&&!d.isQuirks)){if(p){be=d._getBorderExtents(p);l-=be.l;t-=be.t;}}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};dojo._getMarginSize=function(node,_184){node=byId(node);var me=d._getMarginExtents(node,_184||gcs(node));var size=node.getBoundingClientRect();return {w:(size.right-size.left)+me.w,h:(size.bottom-size.top)+me.h};};dojo._getContentBox=function(node,_185){var s=_185||gcs(node),pe=d._getPadExtents(node,s),be=d._getBorderExtents(node,s),w=node.clientWidth,h;if(!w){w=node.offsetWidth,h=node.offsetHeight;}else{h=node.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(node,_186){var s=_186||gcs(node),pe=d._getPadExtents(node,s),cb=d._getContentBox(node,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._isButtonTag=function(node){return node.tagName=="BUTTON"||node.tagName=="INPUT"&&(node.getAttribute("type")||"").toUpperCase()=="BUTTON";};dojo._usesBorderBox=function(node){var n=node.tagName;return d.boxModel=="border-box"||n=="TABLE"||d._isButtonTag(node);};dojo._setContentSize=function(node,_187,_188,_189){if(d._usesBorderBox(node)){var pb=d._getPadBorderExtents(node,_189);if(_187>=0){_187+=pb.w;}if(_188>=0){_188+=pb.h;}}d._setBox(node,NaN,NaN,_187,_188);};dojo._setMarginBox=function(node,_18a,_18b,_18c,_18d,_18e){var s=_18e||gcs(node),bb=d._usesBorderBox(node),pb=bb?_18f:d._getPadBorderExtents(node,s);if(d.isWebKit){if(d._isButtonTag(node)){var ns=node.style;if(_18c>=0&&!ns.width){ns.width="4px";}if(_18d>=0&&!ns.height){ns.height="4px";}}}var mb=d._getMarginExtents(node,s);if(_18c>=0){_18c=Math.max(_18c-pb.w-mb.w,0);}if(_18d>=0){_18d=Math.max(_18d-pb.h-mb.h,0);}d._setBox(node,_18a,_18b,_18c,_18d);};var _18f={l:0,t:0,w:0,h:0};dojo.marginBox=function(node,box){var n=byId(node),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(node,box){var n=byId(node),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _190=function(node,prop){if(!(node=(node||0).parentNode)){return 0;}var val,_191=0,_192=d.body();while(node&&node.style){if(gcs(node).position=="fixed"){return 0;}val=node[prop];if(val){_191+=val-0;if(node==_192){break;}}node=node.parentNode;}return _191;};dojo._docScroll=function(){var n=d.global;return "pageXOffset" in n?{x:n.pageXOffset,y:n.pageYOffset}:(n=d.isQuirks?d.doc.body:d.doc.documentElement,{x:d._fixIeBiDiScrollLeft(n.scrollLeft||0),y:n.scrollTop||0});};dojo._isBodyLtr=function(){return "_bodyLtr" in d?d._bodyLtr:d._bodyLtr=(d.body().dir||d.doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;if(d.isIE<8){var r=de.getBoundingClientRect();var l=r.left,t=r.top;if(d.isIE<7){l+=de.clientLeft;t+=de.clientTop;}return {x:l<0?0:l,y:t<0?0:t};}else{return {x:0,y:0};}};dojo._fixIeBiDiScrollLeft=function(_193){var ie=d.isIE;if(ie&&!d._isBodyLtr()){var qk=d.isQuirks,de=qk?d.doc.body:d.doc.documentElement;if(ie==6&&!qk&&d.global.frameElement&&de.scrollHeight>de.clientHeight){_193+=de.clientLeft;}return (ie<8||qk)?(_193+de.clientWidth-de.scrollWidth):-_193;}return _193;};dojo._abs=dojo.position=function(node,_194){node=byId(node);var db=d.body(),dh=db.parentNode,ret=node.getBoundingClientRect();ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(d.isIE){var _195=d._getIeDocumentElementOffset();ret.x-=_195.x+(d.isQuirks?db.clientLeft+db.offsetLeft:0);ret.y-=_195.y+(d.isQuirks?db.clientTop+db.offsetTop:0);}else{if(d.isFF==3){var cs=gcs(dh);ret.x-=px(dh,cs.marginLeft)+px(dh,cs.borderLeftWidth);ret.y-=px(dh,cs.marginTop)+px(dh,cs.borderTopWidth);}}if(_194){var _196=d._docScroll();ret.x+=_196.x;ret.y+=_196.y;}return ret;};dojo.coords=function(node,_197){var n=byId(node),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d.position(n,_197);mb.x=abs.x;mb.y=abs.y;return mb;};var _198={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"},_199={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"},_19a={innerHTML:1,className:1,htmlFor:d.isIE,value:1};var _19b=function(name){return _199[name.toLowerCase()]||name;};var _19c=function(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return attr&&attr.specified;};dojo.hasAttr=function(node,name){var lc=name.toLowerCase();return _19a[_198[lc]||name]||_19c(byId(node),_199[lc]||name);};var _19d={},_19e=0,_19f=dojo._scopeName+"attrid",_1a0={col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1};dojo.attr=function(node,name,_1a1){node=byId(node);var args=arguments.length,prop;if(args==2&&typeof name!="string"){for(var x in name){d.attr(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_1a2=_198[lc]||name,_1a3=_19a[_1a2],_1a4=_199[lc]||name;if(args==3){do{if(_1a2=="style"&&typeof _1a1!="string"){d.style(node,_1a1);break;}if(_1a2=="innerHTML"){if(d.isIE&&node.tagName.toLowerCase() in _1a0){d.empty(node);node.appendChild(d._toDom(_1a1,node.ownerDocument));}else{node[_1a2]=_1a1;}break;}if(d.isFunction(_1a1)){var _1a5=d.attr(node,_19f);if(!_1a5){_1a5=_19e++;d.attr(node,_19f,_1a5);}if(!_19d[_1a5]){_19d[_1a5]={};}var h=_19d[_1a5][_1a2];if(h){d.disconnect(h);}else{try{delete node[_1a2];}catch(e){}}_19d[_1a5][_1a2]=d.connect(node,_1a2,_1a1);break;}if(_1a3||typeof _1a1=="boolean"){node[_1a2]=_1a1;break;}node.setAttribute(_1a4,_1a1);}while(false);return node;}_1a1=node[_1a2];if(_1a3&&typeof _1a1!="undefined"){return _1a1;}if(_1a2!="href"&&(typeof _1a1=="boolean"||d.isFunction(_1a1))){return _1a1;}return _19c(node,_1a4)?node.getAttribute(_1a4):null;};dojo.removeAttr=function(node,name){byId(node).removeAttribute(_19b(name));};dojo.getNodeProp=function(node,name){node=byId(node);var lc=name.toLowerCase(),_1a6=_198[lc]||name;if((_1a6 in node)&&_1a6!="href"){return node[_1a6];}var _1a7=_199[lc]||name;return _19c(node,_1a7)?node.getAttribute(_1a7):null;};dojo.create=function(tag,_1a8,_1a9,pos){var doc=d.doc;if(_1a9){_1a9=byId(_1a9);doc=_1a9.ownerDocument;}if(typeof tag=="string"){tag=doc.createElement(tag);}if(_1a8){d.attr(tag,_1a8);}if(_1a9){d.place(tag,_1a9,pos);}return tag;};d.empty=d.isIE?function(node){node=byId(node);for(var c;c=node.lastChild;){d.destroy(c);}}:function(node){byId(node).innerHTML="";};var _1aa={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_1ab=/<\s*([\w\:]+)/,_1ac={},_1ad=0,_1ae="__"+d._scopeName+"ToDomId";for(var _1af in _1aa){if(_1aa.hasOwnProperty(_1af)){var tw=_1aa[_1af];tw.pre=_1af=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";tw.post="</"+tw.reverse().join("></")+">";}}d._toDom=function(frag,doc){doc=doc||d.doc;var _1b0=doc[_1ae];if(!_1b0){doc[_1ae]=_1b0=++_1ad+"";_1ac[_1b0]=doc.createElement("div");}frag+="";var _1b1=frag.match(_1ab),tag=_1b1?_1b1[1].toLowerCase():"",_1b2=_1ac[_1b0],wrap,i,fc,df;if(_1b1&&_1aa[tag]){wrap=_1aa[tag];_1b2.innerHTML=wrap.pre+frag+wrap.post;for(i=wrap.length;i;--i){_1b2=_1b2.firstChild;}}else{_1b2.innerHTML=frag;}if(_1b2.childNodes.length==1){return _1b2.removeChild(_1b2.firstChild);}df=doc.createDocumentFragment();while(fc=_1b2.firstChild){df.appendChild(fc);}return df;};var _1b3="className";dojo.hasClass=function(node,_1b4){return ((" "+byId(node)[_1b3]+" ").indexOf(" "+_1b4+" ")>=0);};var _1b5=/\s+/,a1=[""],_1b6={},_1b7=function(s){if(typeof s=="string"||s instanceof String){if(s.indexOf(" ")<0){a1[0]=s;return a1;}else{return s.split(_1b5);}}return s||"";};dojo.addClass=function(node,_1b8){node=byId(node);_1b8=_1b7(_1b8);var cls=node[_1b3],_1b9;cls=cls?" "+cls+" ":" ";_1b9=cls.length;for(var i=0,len=_1b8.length,c;i<len;++i){c=_1b8[i];if(c&&cls.indexOf(" "+c+" ")<0){cls+=c+" ";}}if(_1b9<cls.length){node[_1b3]=cls.substr(1,cls.length-2);}};dojo.removeClass=function(node,_1ba){node=byId(node);var cls;if(_1ba!==undefined){_1ba=_1b7(_1ba);cls=" "+node[_1b3]+" ";for(var i=0,len=_1ba.length;i<len;++i){cls=cls.replace(" "+_1ba[i]+" "," ");}cls=d.trim(cls);}else{cls="";}if(node[_1b3]!=cls){node[_1b3]=cls;}};dojo.replaceClass=function(node,_1bb,_1bc){node=byId(node);_1b6.className=node.className;dojo.removeClass(_1b6,_1bc);dojo.addClass(_1b6,_1bb);if(node.className!==_1b6.className){node.className=_1b6.className;}};dojo.toggleClass=function(node,_1bd,_1be){if(_1be===undefined){_1be=!d.hasClass(node,_1bd);}d[_1be?"addClass":"removeClass"](node,_1bd);};})();}if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");(function(){var d=dojo;var ap=Array.prototype,aps=ap.slice,apc=ap.concat;var tnl=function(a,_1bf,_1c0){if(!a.sort){a=aps.call(a,0);}var ctor=_1c0||this._NodeListCtor||d._NodeListCtor;a.constructor=ctor;dojo._mixin(a,ctor.prototype);a._NodeListCtor=ctor;return _1bf?a._stash(_1bf):a;};var _1c1=function(f,a,o){a=[0].concat(aps.call(a,0));o=o||d.global;return function(node){a[0]=node;return f.apply(o,a);};};var _1c2=function(f,o){return function(){this.forEach(_1c1(f,arguments,o));return this;};};var _1c3=function(f,o){return function(){return this.map(_1c1(f,arguments,o));};};var _1c4=function(f,o){return function(){return this.filter(_1c1(f,arguments,o));};};var _1c5=function(f,g,o){return function(){var a=arguments,body=_1c1(f,a,o);if(g.call(o||d.global,a)){return this.map(body);}this.forEach(body);return this;};};var _1c6=function(a){return a.length==1&&(typeof a[0]=="string");};var _1c7=function(node){var p=node.parentNode;if(p){p.removeChild(node);}};dojo.NodeList=function(){return tnl(Array.apply(null,arguments));};d._NodeListCtor=d.NodeList;var nl=d.NodeList,nlp=nl.prototype;nl._wrap=nlp._wrap=tnl;nl._adaptAsMap=_1c3;nl._adaptAsForEach=_1c2;nl._adaptAsFilter=_1c4;nl._adaptWithCondition=_1c5;d.forEach(["slice","splice"],function(name){var f=ap[name];nlp[name]=function(){return this._wrap(f.apply(this,arguments),name=="slice"?this:null);};});d.forEach(["indexOf","lastIndexOf","every","some"],function(name){var f=d[name];nlp[name]=function(){return f.apply(d,[this].concat(aps.call(arguments,0)));};});d.forEach(["attr","style"],function(name){nlp[name]=_1c5(d[name],_1c6);});d.forEach(["connect","addClass","removeClass","replaceClass","toggleClass","empty","removeAttr"],function(name){nlp[name]=_1c2(d[name]);});dojo.extend(dojo.NodeList,{_normalize:function(_1c8,_1c9){var _1ca=_1c8.parse===true?true:false;if(typeof _1c8.template=="string"){var _1cb=_1c8.templateFunc||(dojo.string&&dojo.string.substitute);_1c8=_1cb?_1cb(_1c8.template,_1c8):_1c8;}var type=(typeof _1c8);if(type=="string"||type=="number"){_1c8=dojo._toDom(_1c8,(_1c9&&_1c9.ownerDocument));if(_1c8.nodeType==11){_1c8=dojo._toArray(_1c8.childNodes);}else{_1c8=[_1c8];}}else{if(!dojo.isArrayLike(_1c8)){_1c8=[_1c8];}else{if(!dojo.isArray(_1c8)){_1c8=dojo._toArray(_1c8);}}}if(_1ca){_1c8._runParse=true;}return _1c8;},_cloneNode:function(node){return node.cloneNode(true);},_place:function(ary,_1cc,_1cd,_1ce){if(_1cc.nodeType!=1&&_1cd=="only"){return;}var _1cf=_1cc,_1d0;var _1d1=ary.length;for(var i=_1d1-1;i>=0;i--){var node=(_1ce?this._cloneNode(ary[i]):ary[i]);if(ary._runParse&&dojo.parser&&dojo.parser.parse){if(!_1d0){_1d0=_1cf.ownerDocument.createElement("div");}_1d0.appendChild(node);dojo.parser.parse(_1d0);node=_1d0.firstChild;while(_1d0.firstChild){_1d0.removeChild(_1d0.firstChild);}}if(i==_1d1-1){dojo.place(node,_1cf,_1cd);}else{_1cf.parentNode.insertBefore(node,_1cf);}_1cf=node;}},_stash:function(_1d2){this._parent=_1d2;return this;},end:function(){if(this._parent){return this._parent;}else{return new this._NodeListCtor();}},concat:function(item){var t=d.isArray(this)?this:aps.call(this,0),m=d.map(arguments,function(a){return a&&!d.isArray(a)&&(typeof NodeList!="undefined"&&a.constructor===NodeList||a.constructor===this._NodeListCtor)?aps.call(a,0):a;});return this._wrap(apc.apply(t,m),this);},map:function(func,obj){return this._wrap(d.map(this,func,obj),this);},forEach:function(_1d3,_1d4){d.forEach(this,_1d3,_1d4);return this;},coords:_1c3(d.coords),position:_1c3(d.position),place:function(_1d5,_1d6){var item=d.query(_1d5)[0];return this.forEach(function(node){d.place(node,item,_1d6);});},orphan:function(_1d7){return (_1d7?d._filterQueryResult(this,_1d7):this).forEach(_1c7);},adopt:function(_1d8,_1d9){return d.query(_1d8).place(this[0],_1d9)._stash(this);},query:function(_1da){if(!_1da){return this;}var ret=this.map(function(node){return d.query(_1da,node).filter(function(_1db){return _1db!==undefined;});});return this._wrap(apc.apply([],ret),this);},filter:function(_1dc){var a=arguments,_1dd=this,_1de=0;if(typeof _1dc=="string"){_1dd=d._filterQueryResult(this,a[0]);if(a.length==1){return _1dd._stash(this);}_1de=1;}return this._wrap(d.filter(_1dd,a[_1de],a[_1de+1]),this);},addContent:function(_1df,_1e0){_1df=this._normalize(_1df,this[0]);for(var i=0,node;(node=this[i]);i++){this._place(_1df,node,_1e0,i>0);}return this;},instantiate:function(_1e1,_1e2){var c=d.isFunction(_1e1)?_1e1:d.getObject(_1e1);_1e2=_1e2||{};return this.forEach(function(node){new c(_1e2,node);});},at:function(){var t=new this._NodeListCtor();d.forEach(arguments,function(i){if(i<0){i=this.length+i;}if(this[i]){t.push(this[i]);}},this);return t._stash(this);}});nl.events=["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"];d.forEach(nl.events,function(evt){var _1e3="on"+evt;nlp[_1e3]=function(a,b){return this.connect(_1e3,a,b);};});})();}if(!dojo._hasResource["dojo._base.query"]){dojo._hasResource["dojo._base.query"]=true;(function(){var _1e4=function(d){var trim=d.trim;var each=d.forEach;var qlc=(d._NodeListCtor=d.NodeList);var _1e5=function(){return d.doc;};var _1e6=((d.isWebKit||d.isMozilla)&&((_1e5().compatMode)=="BackCompat"));var _1e7=!!_1e5().firstChild["children"]?"children":"childNodes";var _1e8=">~+";var _1e9=false;var _1ea=function(){return true;};var _1eb=function(_1ec){if(_1e8.indexOf(_1ec.slice(-1))>=0){_1ec+=" * ";}else{_1ec+=" ";}var ts=function(s,e){return trim(_1ec.slice(s,e));};var _1ed=[];var _1ee=-1,_1ef=-1,_1f0=-1,_1f1=-1,_1f2=-1,inId=-1,_1f3=-1,lc="",cc="",_1f4;var x=0,ql=_1ec.length,_1f5=null,_1f6=null;var _1f7=function(){if(_1f3>=0){var tv=(_1f3==x)?null:ts(_1f3,x);_1f5[(_1e8.indexOf(tv)<0)?"tag":"oper"]=tv;_1f3=-1;}};var _1f8=function(){if(inId>=0){_1f5.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _1f9=function(){if(_1f2>=0){_1f5.classes.push(ts(_1f2+1,x).replace(/\\/g,""));_1f2=-1;}};var _1fa=function(){_1f8();_1f7();_1f9();};var _1fb=function(){_1fa();if(_1f1>=0){_1f5.pseudos.push({name:ts(_1f1+1,x)});}_1f5.loops=(_1f5.pseudos.length||_1f5.attrs.length||_1f5.classes.length);_1f5.oquery=_1f5.query=ts(_1f4,x);_1f5.otag=_1f5.tag=(_1f5["oper"])?null:(_1f5.tag||"*");if(_1f5.tag){_1f5.tag=_1f5.tag.toUpperCase();}if(_1ed.length&&(_1ed[_1ed.length-1].oper)){_1f5.infixOper=_1ed.pop();_1f5.query=_1f5.infixOper.query+" "+_1f5.query;}_1ed.push(_1f5);_1f5=null;};for(;lc=cc,cc=_1ec.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_1f5){_1f4=x;_1f5={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return (_1e9)?this.otag:this.tag;}};_1f3=x;}if(_1ee>=0){if(cc=="]"){if(!_1f6.attr){_1f6.attr=ts(_1ee+1,x);}else{_1f6.matchFor=ts((_1f0||_1ee+1),x);}var cmf=_1f6.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_1f6.matchFor=cmf.slice(1,-1);}}_1f5.attrs.push(_1f6);_1f6=null;_1ee=_1f0=-1;}else{if(cc=="="){var _1fc=("|~^$*".indexOf(lc)>=0)?lc:"";_1f6.type=_1fc+cc;_1f6.attr=ts(_1ee+1,x-_1fc.length);_1f0=x+1;}}}else{if(_1ef>=0){if(cc==")"){if(_1f1>=0){_1f6.value=ts(_1ef+1,x);}_1f1=_1ef=-1;}}else{if(cc=="#"){_1fa();inId=x+1;}else{if(cc=="."){_1fa();_1f2=x;}else{if(cc==":"){_1fa();_1f1=x;}else{if(cc=="["){_1fa();_1ee=x;_1f6={};}else{if(cc=="("){if(_1f1>=0){_1f6={name:ts(_1f1+1,x),value:null};_1f5.pseudos.push(_1f6);}_1ef=x;}else{if((cc==" ")&&(lc!=cc)){_1fb();}}}}}}}}}return _1ed;};var _1fd=function(_1fe,_1ff){if(!_1fe){return _1ff;}if(!_1ff){return _1fe;}return function(){return _1fe.apply(window,arguments)&&_1ff.apply(window,arguments);};};var _200=function(i,arr){var r=arr||[];if(i){r.push(i);}return r;};var _201=function(n){return (1==n.nodeType);};var _202="";var _203=function(elem,attr){if(!elem){return _202;}if(attr=="class"){return elem.className||_202;}if(attr=="for"){return elem.htmlFor||_202;}if(attr=="style"){return elem.style.cssText||_202;}return (_1e9?elem.getAttribute(attr):elem.getAttribute(attr,2))||_202;};var _204={"*=":function(attr,_205){return function(elem){return (_203(elem,attr).indexOf(_205)>=0);};},"^=":function(attr,_206){return function(elem){return (_203(elem,attr).indexOf(_206)==0);};},"$=":function(attr,_207){var tval=" "+_207;return function(elem){var ea=" "+_203(elem,attr);return (ea.lastIndexOf(_207)==(ea.length-_207.length));};},"~=":function(attr,_208){var tval=" "+_208+" ";return function(elem){var ea=" "+_203(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_209){var _20a=" "+_209+"-";return function(elem){var ea=" "+_203(elem,attr);return ((ea==_209)||(ea.indexOf(_20a)==0));};},"=":function(attr,_20b){return function(elem){return (_203(elem,attr)==_20b);};}};var _20c=(typeof _1e5().firstChild.nextElementSibling=="undefined");var _20d=!_20c?"nextElementSibling":"nextSibling";var _20e=!_20c?"previousElementSibling":"previousSibling";var _20f=(_20c?_201:_1ea);var _210=function(node){while(node=node[_20e]){if(_20f(node)){return false;}}return true;};var _211=function(node){while(node=node[_20d]){if(_20f(node)){return false;}}return true;};var _212=function(node){var root=node.parentNode;var i=0,tret=root[_1e7],ci=(node["_i"]||-1),cl=(root["_l"]||-1);if(!tret){return -1;}var l=tret.length;if(cl==l&&ci>=0&&cl>=0){return ci;}root["_l"]=l;ci=-1;for(var te=root["firstElementChild"]||root["firstChild"];te;te=te[_20d]){if(_20f(te)){te["_i"]=++i;if(node===te){ci=i;}}}return ci;};var _213=function(elem){return !((_212(elem))%2);};var _214=function(elem){return ((_212(elem))%2);};var _215={"checked":function(name,_216){return function(elem){return !!("checked" in elem?elem.checked:elem.selected);};},"first-child":function(){return _210;},"last-child":function(){return _211;},"only-child":function(name,_217){return function(node){if(!_210(node)){return false;}if(!_211(node)){return false;}return true;};},"empty":function(name,_218){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt===1)||(nt==3)){return false;}}return true;};},"contains":function(name,_219){var cz=_219.charAt(0);if(cz=="\""||cz=="'"){_219=_219.slice(1,-1);}return function(elem){return (elem.innerHTML.indexOf(_219)>=0);};},"not":function(name,_21a){var p=_1eb(_21a)[0];var _21b={el:1};if(p.tag!="*"){_21b.tag=1;}if(!p.classes.length){_21b.classes=1;}var ntf=_21c(p,_21b);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_21d){var pi=parseInt;if(_21d=="odd"){return _214;}else{if(_21d=="even"){return _213;}}if(_21d.indexOf("n")!=-1){var _21e=_21d.split("n",2);var pred=_21e[0]?((_21e[0]=="-")?-1:pi(_21e[0])):1;var idx=_21e[1]?pi(_21e[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_212(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_21d=idx;}}var _21f=pi(_21d);return function(elem){return (_212(elem)==_21f);};}};var _220=(d.isIE<9||(dojo.isIE&&dojo.isQuirks))?function(cond){var clc=cond.toLowerCase();if(clc=="class"){cond="className";}return function(elem){return (_1e9?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _21c=function(_221,_222){if(!_221){return _1ea;}_222=_222||{};var ff=null;if(!("el" in _222)){ff=_1fd(ff,_201);}if(!("tag" in _222)){if(_221.tag!="*"){ff=_1fd(ff,function(elem){return (elem&&(elem.tagName==_221.getTag()));});}}if(!("classes" in _222)){each(_221.classes,function(_223,idx,arr){var re=new RegExp("(?:^|\\s)"+_223+"(?:\\s|$)");ff=_1fd(ff,function(elem){return re.test(elem.className);});ff.count=idx;});}if(!("pseudos" in _222)){each(_221.pseudos,function(_224){var pn=_224.name;if(_215[pn]){ff=_1fd(ff,_215[pn](pn,_224.value));}});}if(!("attrs" in _222)){each(_221.attrs,function(attr){var _225;var a=attr.attr;if(attr.type&&_204[attr.type]){_225=_204[attr.type](a,attr.matchFor);}else{if(a.length){_225=_220(a);}}if(_225){ff=_1fd(ff,_225);}});}if(!("id" in _222)){if(_221.id){ff=_1fd(ff,function(elem){return (!!elem&&(elem.id==_221.id));});}}if(!ff){if(!("default" in _222)){ff=_1ea;}}return ff;};var _226=function(_227){return function(node,ret,bag){while(node=node[_20d]){if(_20c&&(!_201(node))){continue;}if((!bag||_228(node,bag))&&_227(node)){ret.push(node);}break;}return ret;};};var _229=function(_22a){return function(root,ret,bag){var te=root[_20d];while(te){if(_20f(te)){if(bag&&!_228(te,bag)){break;}if(_22a(te)){ret.push(te);}}te=te[_20d];}return ret;};};var _22b=function(_22c){_22c=_22c||_1ea;return function(root,ret,bag){var te,x=0,tret=root[_1e7];while(te=tret[x++]){if(_20f(te)&&(!bag||_228(te,bag))&&(_22c(te,x))){ret.push(te);}}return ret;};};var _22d=function(node,root){var pn=node.parentNode;while(pn){if(pn==root){break;}pn=pn.parentNode;}return !!pn;};var _22e={};var _22f=function(_230){var _231=_22e[_230.query];if(_231){return _231;}var io=_230.infixOper;var oper=(io?io.oper:"");var _232=_21c(_230,{el:1});var qt=_230.tag;var _233=("*"==qt);var ecs=_1e5()["getElementsByClassName"];if(!oper){if(_230.id){_232=(!_230.loops&&_233)?_1ea:_21c(_230,{el:1,id:1});_231=function(root,arr){var te=d.byId(_230.id,(root.ownerDocument||root));if(!te||!_232(te)){return;}if(9==root.nodeType){return _200(te,arr);}else{if(_22d(te,root)){return _200(te,arr);}}};}else{if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_230.classes.length&&!_1e6){_232=_21c(_230,{el:1,classes:1,id:1});var _234=_230.classes.join(" ");_231=function(root,arr,bag){var ret=_200(0,arr),te,x=0;var tret=root.getElementsByClassName(_234);while((te=tret[x++])){if(_232(te,root)&&_228(te,bag)){ret.push(te);}}return ret;};}else{if(!_233&&!_230.loops){_231=function(root,arr,bag){var ret=_200(0,arr),te,x=0;var tret=root.getElementsByTagName(_230.getTag());while((te=tret[x++])){if(_228(te,bag)){ret.push(te);}}return ret;};}else{_232=_21c(_230,{el:1,tag:1,id:1});_231=function(root,arr,bag){var ret=_200(0,arr),te,x=0;var tret=root.getElementsByTagName(_230.getTag());while((te=tret[x++])){if(_232(te,root)&&_228(te,bag)){ret.push(te);}}return ret;};}}}}else{var _235={el:1};if(_233){_235.tag=1;}_232=_21c(_230,_235);if("+"==oper){_231=_226(_232);}else{if("~"==oper){_231=_229(_232);}else{if(">"==oper){_231=_22b(_232);}}}}return _22e[_230.query]=_231;};var _236=function(root,_237){var _238=_200(root),qp,x,te,qpl=_237.length,bag,ret;for(var i=0;i<qpl;i++){ret=[];qp=_237[i];x=_238.length-1;if(x>0){bag={};ret.nozip=true;}var gef=_22f(qp);for(var j=0;(te=_238[j]);j++){gef(te,ret,bag);}if(!ret.length){break;}_238=ret;}return ret;};var _239={},_23a={};var _23b=function(_23c){var _23d=_1eb(trim(_23c));if(_23d.length==1){var tef=_22f(_23d[0]);return function(root){var r=tef(root,new qlc());if(r){r.nozip=true;}return r;};}return function(root){return _236(root,_23d);};};var nua=navigator.userAgent;var wk="WebKit/";var _23e=(d.isWebKit&&(nua.indexOf(wk)>0)&&(parseFloat(nua.split(wk)[1])>528));var _23f=d.isIE?"commentStrip":"nozip";var qsa="querySelectorAll";var _240=(!!_1e5()[qsa]&&(!d.isSafari||(d.isSafari>3.1)||_23e));var _241=/n\+\d|([^ ])?([>~+])([^ =])?/g;var _242=function(_243,pre,ch,post){return ch?(pre?pre+" ":"")+ch+(post?" "+post:""):_243;};var _244=function(_245,_246){_245=_245.replace(_241,_242);if(_240){var _247=_23a[_245];if(_247&&!_246){return _247;}}var _248=_239[_245];if(_248){return _248;}var qcz=_245.charAt(0);var _249=(-1==_245.indexOf(" "));if((_245.indexOf("#")>=0)&&(_249)){_246=true;}var _24a=(_240&&(!_246)&&(_1e8.indexOf(qcz)==-1)&&(!d.isIE||(_245.indexOf(":")==-1))&&(!(_1e6&&(_245.indexOf(".")>=0)))&&(_245.indexOf(":contains")==-1)&&(_245.indexOf(":checked")==-1)&&(_245.indexOf("|=")==-1));if(_24a){var tq=(_1e8.indexOf(_245.charAt(_245.length-1))>=0)?(_245+" *"):_245;return _23a[_245]=function(root){try{if(!((9==root.nodeType)||_249)){throw "";}var r=root[qsa](tq);r[_23f]=true;return r;}catch(e){return _244(_245,true)(root);}};}else{var _24b=_245.split(/\s*,\s*/);return _239[_245]=((_24b.length<2)?_23b(_245):function(root){var _24c=0,ret=[],tp;while((tp=_24b[_24c++])){ret=ret.concat(_23b(tp)(root));}return ret;});}};var _24d=0;var _24e=d.isIE?function(node){if(_1e9){return (node.getAttribute("_uid")||node.setAttribute("_uid",++_24d)||_24d);}else{return node.uniqueID;}}:function(node){return (node._uid||(node._uid=++_24d));};var _228=function(node,bag){if(!bag){return 1;}var id=_24e(node);if(!bag[id]){return bag[id]=1;}return 0;};var _24f="_zipIdx";var _250=function(arr){if(arr&&arr.nozip){return (qlc._wrap)?qlc._wrap(arr):arr;}var ret=new qlc();if(!arr||!arr.length){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_24d++;if(d.isIE&&_1e9){var _251=_24d+"";arr[0].setAttribute(_24f,_251);for(var x=1,te;te=arr[x];x++){if(arr[x].getAttribute(_24f)!=_251){ret.push(te);}te.setAttribute(_24f,_251);}}else{if(d.isIE&&arr.commentStrip){try{for(var x=1,te;te=arr[x];x++){if(_201(te)){ret.push(te);}}}catch(e){}}else{if(arr[0]){arr[0][_24f]=_24d;}for(var x=1,te;te=arr[x];x++){if(arr[x][_24f]!=_24d){ret.push(te);}te[_24f]=_24d;}}}return ret;};d.query=function(_252,root){qlc=d._NodeListCtor;if(!_252){return new qlc();}if(_252.constructor==qlc){return _252;}if(typeof _252!="string"){return new qlc(_252);}if(typeof root=="string"){root=d.byId(root);if(!root){return new qlc();}}root=root||_1e5();var od=root.ownerDocument||root.documentElement;_1e9=(root.contentType&&root.contentType=="application/xml")||(d.isOpera&&(root.doctype||od.toString()=="[object XMLDocument]"))||(!!od)&&(d.isIE?od.xml:(root.xmlVersion||od.xmlVersion));var r=_244(_252)(root);if(r&&r.nozip&&!qlc._wrap){return r;}return _250(r);};d.query.pseudos=_215;d._filterQueryResult=function(_253,_254,root){var _255=new d._NodeListCtor(),_256=_1eb(_254),_257=(_256.length==1&&!/[^\w#\.]/.test(_254))?_21c(_256[0]):function(node){return dojo.query(_254,root).indexOf(node)!=-1;};for(var x=0,te;te=_253[x];x++){if(_257(te)){_255.push(te);}}return _255;};};var _258=function(){acme={trim:function(str){str=str.replace(/^\s+/,"");for(var i=str.length-1;i>=0;i--){if(/\S/.test(str.charAt(i))){str=str.substring(0,i+1);break;}}return str;},forEach:function(arr,_259,_25a){if(!arr||!arr.length){return;}for(var i=0,l=arr.length;i<l;++i){_259.call(_25a||window,arr[i],i,arr);}},byId:function(id,doc){if(typeof id=="string"){return (doc||document).getElementById(id);}else{return id;}},doc:document,NodeList:Array};var n=navigator;var dua=n.userAgent;var dav=n.appVersion;var tv=parseFloat(dav);acme.isOpera=(dua.indexOf("Opera")>=0)?tv:undefined;acme.isKhtml=(dav.indexOf("Konqueror")>=0)?tv:undefined;acme.isWebKit=parseFloat(dua.split("WebKit/")[1])||undefined;acme.isChrome=parseFloat(dua.split("Chrome/")[1])||undefined;var _25b=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(_25b&&!acme.isChrome){acme.isSafari=parseFloat(dav.split("Version/")[1]);if(!acme.isSafari||parseFloat(dav.substr(_25b+7))<=419.3){acme.isSafari=2;}}if(document.all&&!acme.isOpera){acme.isIE=parseFloat(dav.split("MSIE ")[1])||undefined;}Array._wrap=function(arr){return arr;};return acme;};if(this["dojo"]){dojo.provide("dojo._base.query");_1e4(this["queryPortability"]||this["acme"]||dojo);}else{_1e4(this["queryPortability"]||this["acme"]||_258());}})();}if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");(function(){var _25c=dojo,cfg=_25c.config;function _25d(obj,name,_25e){if(_25e===null){return;}var val=obj[name];if(typeof val=="string"){obj[name]=[val,_25e];}else{if(_25c.isArray(val)){val.push(_25e);}else{obj[name]=_25e;}}};dojo.fieldToObject=function(_25f){var ret=null;var item=_25c.byId(_25f);if(item){var _260=item.name;var type=(item.type||"").toLowerCase();if(_260&&type&&!item.disabled){if(type=="radio"||type=="checkbox"){if(item.checked){ret=item.value;}}else{if(item.multiple){ret=[];_25c.query("option",item).forEach(function(opt){if(opt.selected){ret.push(opt.value);}});}else{ret=item.value;}}}}return ret;};dojo.formToObject=function(_261){var ret={};var _262="file|submit|image|reset|button|";_25c.forEach(dojo.byId(_261).elements,function(item){var _263=item.name;var type=(item.type||"").toLowerCase();if(_263&&type&&_262.indexOf(type)==-1&&!item.disabled){_25d(ret,_263,_25c.fieldToObject(item));if(type=="image"){ret[_263+".x"]=ret[_263+".y"]=ret[_263].x=ret[_263].y=0;}}});return ret;};dojo.objectToQuery=function(map){var enc=encodeURIComponent;var _264=[];var _265={};for(var name in map){var _266=map[name];if(_266!=_265[name]){var _267=enc(name)+"=";if(_25c.isArray(_266)){for(var i=0;i<_266.length;i++){_264.push(_267+enc(_266[i]));}}else{_264.push(_267+enc(_266));}}}return _264.join("&");};dojo.formToQuery=function(_268){return _25c.objectToQuery(_25c.formToObject(_268));};dojo.formToJson=function(_269,_26a){return _25c.toJson(_25c.formToObject(_269),_26a);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_25c.forEach(qp,function(item){if(item.length){var _26b=item.split("=");var name=dec(_26b.shift());var val=dec(_26b.join("="));if(typeof ret[name]=="string"){ret[name]=[ret[name]];}if(_25c.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}});return ret;};dojo._blockAsync=false;var _26c=_25c._contentHandlers=dojo.contentHandlers={text:function(xhr){return xhr.responseText;},json:function(xhr){return _25c.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!dojo.config.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _26d=xhr.responseText;var _26e=_26d.indexOf("/*");var _26f=_26d.lastIndexOf("*/");if(_26e==-1||_26f==-1){throw new Error("JSON was not comment filtered");}return _25c.fromJson(_26d.substring(_26e+2,_26f));},javascript:function(xhr){return _25c.eval(xhr.responseText);},xml:function(xhr){var _270=xhr.responseXML;if(_25c.isIE&&(!_270||!_270.documentElement)){var ms=function(n){return "MSXML"+n+".DOMDocument";};var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];_25c.some(dp,function(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(xhr.responseText);_270=dom;}catch(e){return false;}return true;});}return _270;},"json-comment-optional":function(xhr){if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){return _26c["json-comment-filtered"](xhr);}else{return _26c["json"](xhr);}}};dojo._ioSetArgs=function(args,_271,_272,_273){var _274={args:args,url:args.url};var _275=null;if(args.form){var form=_25c.byId(args.form);var _276=form.getAttributeNode("action");_274.url=_274.url||(_276?_276.value:null);_275=_25c.formToObject(form);}var _277=[{}];if(_275){_277.push(_275);}if(args.content){_277.push(args.content);}if(args.preventCache){_277.push({"dojo.preventCache":new Date().valueOf()});}_274.query=_25c.objectToQuery(_25c.mixin.apply(null,_277));_274.handleAs=args.handleAs||"text";var d=new _25c.Deferred(_271);d.addCallbacks(_272,function(_278){return _273(_278,d);});var ld=args.load;if(ld&&_25c.isFunction(ld)){d.addCallback(function(_279){return ld.call(args,_279,_274);});}var err=args.error;if(err&&_25c.isFunction(err)){d.addErrback(function(_27a){return err.call(args,_27a,_274);});}var _27b=args.handle;if(_27b&&_25c.isFunction(_27b)){d.addBoth(function(_27c){return _27b.call(args,_27c,_274);});}if(cfg.ioPublish&&_25c.publish&&_274.args.ioPublish!==false){d.addCallbacks(function(res){_25c.publish("/dojo/io/load",[d,res]);return res;},function(res){_25c.publish("/dojo/io/error",[d,res]);return res;});d.addBoth(function(res){_25c.publish("/dojo/io/done",[d,res]);return res;});}d.ioArgs=_274;return d;};var _27d=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _27e=typeof xhr.abort;if(_27e=="function"||_27e=="object"||_27e=="unknown"){xhr.abort();}var err=dfd.ioArgs.error;if(!err){err=new Error("xhr cancelled");err.dojoType="cancel";}return err;};var _27f=function(dfd){var ret=_26c[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return ret===undefined?null:ret;};var _280=function(_281,dfd){if(!dfd.ioArgs.args.failOk){console.error(_281);}return _281;};var _282=null;var _283=[];var _284=0;var _285=function(dfd){if(_284<=0){_284=0;if(cfg.ioPublish&&_25c.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){_25c.publish("/dojo/io/stop");}}};var _286=function(){var now=(new Date()).getTime();if(!_25c._blockAsync){for(var i=0,tif;i<_283.length&&(tif=_283[i]);i++){var dfd=tif.dfd;var func=function(){if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_283.splice(i--,1);_284-=1;}else{if(tif.ioCheck(dfd)){_283.splice(i--,1);tif.resHandle(dfd);_284-=1;}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)<now){_283.splice(i--,1);var err=new Error("timeout exceeded");err.dojoType="timeout";dfd.errback(err);dfd.cancel();_284-=1;}}}}};if(dojo.config.debugAtAllCosts){func.call(this);}else{try{func.call(this);}catch(e){dfd.errback(e);}}}}_285(dfd);if(!_283.length){clearInterval(_282);_282=null;return;}};dojo._ioCancelAll=function(){try{_25c.forEach(_283,function(i){try{i.dfd.cancel();}catch(e){}});}catch(e){}};if(_25c.isIE){_25c.addOnWindowUnload(_25c._ioCancelAll);}_25c._ioNotifyStart=function(dfd){if(cfg.ioPublish&&_25c.publish&&dfd.ioArgs.args.ioPublish!==false){if(!_284){_25c.publish("/dojo/io/start");}_284+=1;_25c.publish("/dojo/io/send",[dfd]);}};_25c._ioWatch=function(dfd,_287,_288,_289){var args=dfd.ioArgs.args;if(args.timeout){dfd.startTime=(new Date()).getTime();}_283.push({dfd:dfd,validCheck:_287,ioCheck:_288,resHandle:_289});if(!_282){_282=setInterval(_286,50);}if(args.sync){_286();}};var _28a="application/x-www-form-urlencoded";var _28b=function(dfd){return dfd.ioArgs.xhr.readyState;};var _28c=function(dfd){return 4==dfd.ioArgs.xhr.readyState;};var _28d=function(dfd){var xhr=dfd.ioArgs.xhr;if(_25c._isDocumentOk(xhr)){dfd.callback(dfd);}else{var err=new Error("Unable to load "+dfd.ioArgs.url+" status:"+xhr.status);err.status=xhr.status;err.responseText=xhr.responseText;dfd.errback(err);}};dojo._ioAddQueryToUrl=function(_28e){if(_28e.query.length){_28e.url+=(_28e.url.indexOf("?")==-1?"?":"&")+_28e.query;_28e.query=null;}};dojo.xhr=function(_28f,args,_290){var dfd=_25c._ioSetArgs(args,_27d,_27f,_280);var _291=dfd.ioArgs;var xhr=_291.xhr=_25c._xhrObj(_291.args);if(!xhr){dfd.cancel();return dfd;}if("postData" in args){_291.query=args.postData;}else{if("putData" in args){_291.query=args.putData;}else{if("rawBody" in args){_291.query=args.rawBody;}else{if((arguments.length>2&&!_290)||"POST|PUT".indexOf(_28f.toUpperCase())==-1){_25c._ioAddQueryToUrl(_291);}}}}xhr.open(_28f,_291.url,args.sync!==true,args.user||undefined,args.password||undefined);if(args.headers){for(var hdr in args.headers){if(hdr.toLowerCase()==="content-type"&&!args.contentType){args.contentType=args.headers[hdr];}else{if(args.headers[hdr]){xhr.setRequestHeader(hdr,args.headers[hdr]);}}}}xhr.setRequestHeader("Content-Type",args.contentType||_28a);if(!args.headers||!("X-Requested-With" in args.headers)){xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");}_25c._ioNotifyStart(dfd);if(dojo.config.debugAtAllCosts){xhr.send(_291.query);}else{try{xhr.send(_291.query);}catch(e){_291.error=e;dfd.cancel();}}_25c._ioWatch(dfd,_28b,_28c,_28d);xhr=null;return dfd;};dojo.xhrGet=function(args){return _25c.xhr("GET",args);};dojo.rawXhrPost=dojo.xhrPost=function(args){return _25c.xhr("POST",args,true);};dojo.rawXhrPut=dojo.xhrPut=function(args){return _25c.xhr("PUT",args,true);};dojo.xhrDelete=function(args){return _25c.xhr("DELETE",args);};})();}if(!dojo._hasResource["dojo._base.fx"]){dojo._hasResource["dojo._base.fx"]=true;dojo.provide("dojo._base.fx");(function(){var d=dojo;var _292=d._mixin;dojo._Line=function(_293,end){this.start=_293;this.end=end;};dojo._Line.prototype.getValue=function(n){return ((this.end-this.start)*n)+this.start;};dojo.Animation=function(args){_292(this,args);if(d.isArray(this.curve)){this.curve=new d._Line(this.curve[0],this.curve[1]);}};d._Animation=d.Animation;d.extend(dojo.Animation,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var _294=this._percent,_295=this.easing;return _295?_295(_294):_294;},_fire:function(evt,args){var a=args||[];if(this[evt]){if(d.config.debugAtAllCosts){this[evt].apply(this,a);}else{try{this[evt].apply(this,a);}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}}}return this;},play:function(_296,_297){var _298=this;if(_298._delayTimer){_298._clearTimer();}if(_297){_298._stopTimer();_298._active=_298._paused=false;_298._percent=0;}else{if(_298._active&&!_298._paused){return _298;}}_298._fire("beforeBegin",[_298.node]);var de=_296||_298.delay,_299=dojo.hitch(_298,"_play",_297);if(de>0){_298._delayTimer=setTimeout(_299,de);return _298;}_299();return _298;},_play:function(_29a){var _29b=this;if(_29b._delayTimer){_29b._clearTimer();}_29b._startTime=new Date().valueOf();if(_29b._paused){_29b._startTime-=_29b.duration*_29b._percent;}_29b._active=true;_29b._paused=false;var _29c=_29b.curve.getValue(_29b._getStep());if(!_29b._percent){if(!_29b._startRepeatCount){_29b._startRepeatCount=_29b.repeat;}_29b._fire("onBegin",[_29c]);}_29b._fire("onPlay",[_29c]);_29b._cycle();return _29b;},pause:function(){var _29d=this;if(_29d._delayTimer){_29d._clearTimer();}_29d._stopTimer();if(!_29d._active){return _29d;}_29d._paused=true;_29d._fire("onPause",[_29d.curve.getValue(_29d._getStep())]);return _29d;},gotoPercent:function(_29e,_29f){var _2a0=this;_2a0._stopTimer();_2a0._active=_2a0._paused=true;_2a0._percent=_29e;if(_29f){_2a0.play();}return _2a0;},stop:function(_2a1){var _2a2=this;if(_2a2._delayTimer){_2a2._clearTimer();}if(!_2a2._timer){return _2a2;}_2a2._stopTimer();if(_2a1){_2a2._percent=1;}_2a2._fire("onStop",[_2a2.curve.getValue(_2a2._getStep())]);_2a2._active=_2a2._paused=false;return _2a2;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _2a3=this;if(_2a3._active){var curr=new Date().valueOf();var step=(curr-_2a3._startTime)/(_2a3.duration);if(step>=1){step=1;}_2a3._percent=step;if(_2a3.easing){step=_2a3.easing(step);}_2a3._fire("onAnimate",[_2a3.curve.getValue(step)]);if(_2a3._percent<1){_2a3._startTimer();}else{_2a3._active=false;if(_2a3.repeat>0){_2a3.repeat--;_2a3.play(null,true);}else{if(_2a3.repeat==-1){_2a3.play(null,true);}else{if(_2a3._startRepeatCount){_2a3.repeat=_2a3._startRepeatCount;_2a3._startRepeatCount=0;}}}_2a3._percent=0;_2a3._fire("onEnd",[_2a3.node]);!_2a3.repeat&&_2a3._stopTimer();}}return _2a3;},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer;}});var ctr=0,_2a4=null,_2a5={run:function(){}};d.extend(d.Animation,{_startTimer:function(){if(!this._timer){this._timer=d.connect(_2a5,"run",this,"_cycle");ctr++;}if(!_2a4){_2a4=setInterval(d.hitch(_2a5,"run"),this.rate);}},_stopTimer:function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_2a4);_2a4=null;ctr=0;}}});var _2a6=d.isIE?function(node){var ns=node.style;if(!ns.width.length&&d.style(node,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(args){args.node=d.byId(args.node);var _2a7=_292({properties:{}},args),_2a8=(_2a7.properties.opacity={});_2a8.start=!("start" in _2a7)?function(){return +d.style(_2a7.node,"opacity")||0;}:_2a7.start;_2a8.end=_2a7.end;var anim=d.animateProperty(_2a7);d.connect(anim,"beforeBegin",d.partial(_2a6,_2a7.node));return anim;};dojo.fadeIn=function(args){return d._fade(_292({end:1},args));};dojo.fadeOut=function(args){return d._fade(_292({end:0},args));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _2a9=function(_2aa){this._properties=_2aa;for(var p in _2aa){var prop=_2aa[p];if(prop.start instanceof d.Color){prop.tempColor=new d.Color();}}};_2a9.prototype.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p],_2ab=prop.start;if(_2ab instanceof d.Color){ret[p]=d.blendColors(_2ab,prop.end,r,prop.tempColor).toCss();}else{if(!d.isArray(_2ab)){ret[p]=((prop.end-_2ab)*r)+_2ab+(p!="opacity"?prop.units||"px":0);}}}return ret;};dojo.animateProperty=function(args){var n=args.node=d.byId(args.node);if(!args.easing){args.easing=d._defaultEasing;}var anim=new d.Animation(args);d.connect(anim,"beforeBegin",anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];if(d.isFunction(prop)){prop=prop(n);}prop=pm[p]=_292({},(d.isObject(prop)?prop:{end:prop}));if(d.isFunction(prop.start)){prop.start=prop.start(n);}if(d.isFunction(prop.end)){prop.end=prop.end(n);}var _2ac=(p.toLowerCase().indexOf("color")>=0);function _2ad(node,p){var v={height:node.offsetHeight,width:node.offsetWidth}[p];if(v!==undefined){return v;}v=d.style(node,p);return (p=="opacity")?+v:(_2ac?v:parseFloat(v));};if(!("end" in prop)){prop.end=_2ad(n,p);}else{if(!("start" in prop)){prop.start=_2ad(n,p);}}if(_2ac){prop.start=new d.Color(prop.start);prop.end=new d.Color(prop.end);}else{prop.start=(p=="opacity")?+prop.start:parseFloat(prop.start);}}this.curve=new _2a9(pm);});d.connect(anim,"onAnimate",d.hitch(d,"style",anim.node));return anim;};dojo.anim=function(node,_2ae,_2af,_2b0,_2b1,_2b2){return d.animateProperty({node:node,duration:_2af||d.Animation.prototype.duration,properties:_2ae,easing:_2b0,onEnd:_2b1}).play(_2b2||0);};})();}if(!dojo._hasResource["dojo._base.browser"]){dojo._hasResource["dojo._base.browser"]=true;dojo.provide("dojo._base.browser");dojo.forEach(dojo.config.require,function(i){dojo["require"](i);});}if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");}if(dojo.isBrowser&&(document.readyState==="complete"||dojo.config.afterOnLoad)){window.setTimeout(dojo._loadInit,100);}})();\r
528 \r
529 \r
530 /*  Prototype JavaScript framework, version 1.7\r
531  *  (c) 2005-2010 Sam Stephenson\r
532  *\r
533  *  Prototype is freely distributable under the terms of an MIT-style license.\r
534  *  For details, see the Prototype web site: http://www.prototypejs.org/\r
535  *\r
536  *--------------------------------------------------------------------------*/\r
537 \r
538 var Prototype = {\r
539 \r
540   Version: '1.7',\r
541 \r
542   Browser: (function(){\r
543     var ua = navigator.userAgent;\r
544     var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';\r
545     return {\r
546       IE:             !!window.attachEvent && !isOpera,\r
547       Opera:          isOpera,\r
548       WebKit:         ua.indexOf('AppleWebKit/') > -1,\r
549       Gecko:          ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,\r
550       MobileSafari:   /Apple.*Mobile/.test(ua)\r
551     }\r
552   })(),\r
553 \r
554   BrowserFeatures: {\r
555     XPath: !!document.evaluate,\r
556 \r
557     SelectorsAPI: !!document.querySelector,\r
558 \r
559     ElementExtensions: (function() {\r
560       var constructor = window.Element || window.HTMLElement;\r
561       return !!(constructor && constructor.prototype);\r
562     })(),\r
563     SpecificElementExtensions: (function() {\r
564       if (typeof window.HTMLDivElement !== 'undefined')\r
565         return true;\r
566 \r
567       var div = document.createElement('div'),\r
568           form = document.createElement('form'),\r
569           isSupported = false;\r
570 \r
571       if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) {\r
572         isSupported = true;\r
573       }\r
574 \r
575       div = form = null;\r
576 \r
577       return isSupported;\r
578     })()\r
579   },\r
580 \r
581   ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',\r
582   JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,\r
583 \r
584   emptyFunction: function() { },\r
585 \r
586   K: function(x) { return x }\r
587 };\r
588 \r
589 if (Prototype.Browser.MobileSafari)\r
590   Prototype.BrowserFeatures.SpecificElementExtensions = false;\r
591 /* Based on Alex Arnell's inheritance implementation. */\r
592 \r
593 var Class = (function() {\r
594 \r
595   var IS_DONTENUM_BUGGY = (function(){\r
596     for (var p in { toString: 1 }) {\r
597       if (p === 'toString') return false;\r
598     }\r
599     return true;\r
600   })();\r
601 \r
602   function subclass() {};\r
603   function create() {\r
604     var parent = null, properties = $A(arguments);\r
605     if (Object.isFunction(properties[0]))\r
606       parent = properties.shift();\r
607 \r
608     function klass() {\r
609       this.initialize.apply(this, arguments);\r
610     }\r
611 \r
612     Object.extend(klass, Class.Methods);\r
613     klass.superclass = parent;\r
614     klass.subclasses = [];\r
615 \r
616     if (parent) {\r
617       subclass.prototype = parent.prototype;\r
618       klass.prototype = new subclass;\r
619       parent.subclasses.push(klass);\r
620     }\r
621 \r
622     for (var i = 0, length = properties.length; i < length; i++)\r
623       klass.addMethods(properties[i]);\r
624 \r
625     if (!klass.prototype.initialize)\r
626       klass.prototype.initialize = Prototype.emptyFunction;\r
627 \r
628     klass.prototype.constructor = klass;\r
629     return klass;\r
630   }\r
631 \r
632   function addMethods(source) {\r
633     var ancestor   = this.superclass && this.superclass.prototype,\r
634         properties = Object.keys(source);\r
635 \r
636     if (IS_DONTENUM_BUGGY) {\r
637       if (source.toString != Object.prototype.toString)\r
638         properties.push("toString");\r
639       if (source.valueOf != Object.prototype.valueOf)\r
640         properties.push("valueOf");\r
641     }\r
642 \r
643     for (var i = 0, length = properties.length; i < length; i++) {\r
644       var property = properties[i], value = source[property];\r
645       if (ancestor && Object.isFunction(value) &&\r
646           value.argumentNames()[0] == "$super") {\r
647         var method = value;\r
648         value = (function(m) {\r
649           return function() { return ancestor[m].apply(this, arguments); };\r
650         })(property).wrap(method);\r
651 \r
652         value.valueOf = method.valueOf.bind(method);\r
653         value.toString = method.toString.bind(method);\r
654       }\r
655       this.prototype[property] = value;\r
656     }\r
657 \r
658     return this;\r
659   }\r
660 \r
661   return {\r
662     create: create,\r
663     Methods: {\r
664       addMethods: addMethods\r
665     }\r
666   };\r
667 })();\r
668 (function() {\r
669 \r
670   var _toString = Object.prototype.toString,\r
671       NULL_TYPE = 'Null',\r
672       UNDEFINED_TYPE = 'Undefined',\r
673       BOOLEAN_TYPE = 'Boolean',\r
674       NUMBER_TYPE = 'Number',\r
675       STRING_TYPE = 'String',\r
676       OBJECT_TYPE = 'Object',\r
677       FUNCTION_CLASS = '[object Function]',\r
678       BOOLEAN_CLASS = '[object Boolean]',\r
679       NUMBER_CLASS = '[object Number]',\r
680       STRING_CLASS = '[object String]',\r
681       ARRAY_CLASS = '[object Array]',\r
682       DATE_CLASS = '[object Date]',\r
683       NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON &&\r
684         typeof JSON.stringify === 'function' &&\r
685         JSON.stringify(0) === '0' &&\r
686         typeof JSON.stringify(Prototype.K) === 'undefined';\r
687 \r
688   function Type(o) {\r
689     switch(o) {\r
690       case null: return NULL_TYPE;\r
691       case (void 0): return UNDEFINED_TYPE;\r
692     }\r
693     var type = typeof o;\r
694     switch(type) {\r
695       case 'boolean': return BOOLEAN_TYPE;\r
696       case 'number':  return NUMBER_TYPE;\r
697       case 'string':  return STRING_TYPE;\r
698     }\r
699     return OBJECT_TYPE;\r
700   }\r
701 \r
702   function extend(destination, source) {\r
703     for (var property in source)\r
704       destination[property] = source[property];\r
705     return destination;\r
706   }\r
707 \r
708   function inspect(object) {\r
709     try {\r
710       if (isUndefined(object)) return 'undefined';\r
711       if (object === null) return 'null';\r
712       return object.inspect ? object.inspect() : String(object);\r
713     } catch (e) {\r
714       if (e instanceof RangeError) return '...';\r
715       throw e;\r
716     }\r
717   }\r
718 \r
719   function toJSON(value) {\r
720     return Str('', { '': value }, []);\r
721   }\r
722 \r
723   function Str(key, holder, stack) {\r
724     var value = holder[key],\r
725         type = typeof value;\r
726 \r
727     if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') {\r
728       value = value.toJSON(key);\r
729     }\r
730 \r
731     var _class = _toString.call(value);\r
732 \r
733     switch (_class) {\r
734       case NUMBER_CLASS:\r
735       case BOOLEAN_CLASS:\r
736       case STRING_CLASS:\r
737         value = value.valueOf();\r
738     }\r
739 \r
740     switch (value) {\r
741       case null: return 'null';\r
742       case true: return 'true';\r
743       case false: return 'false';\r
744     }\r
745 \r
746     type = typeof value;\r
747     switch (type) {\r
748       case 'string':\r
749         return value.inspect(true);\r
750       case 'number':\r
751         return isFinite(value) ? String(value) : 'null';\r
752       case 'object':\r
753 \r
754         for (var i = 0, length = stack.length; i < length; i++) {\r
755           if (stack[i] === value) { throw new TypeError(); }\r
756         }\r
757         stack.push(value);\r
758 \r
759         var partial = [];\r
760         if (_class === ARRAY_CLASS) {\r
761           for (var i = 0, length = value.length; i < length; i++) {\r
762             var str = Str(i, value, stack);\r
763             partial.push(typeof str === 'undefined' ? 'null' : str);\r
764           }\r
765           partial = '[' + partial.join(',') + ']';\r
766         } else {\r
767           var keys = Object.keys(value);\r
768           for (var i = 0, length = keys.length; i < length; i++) {\r
769             var key = keys[i], str = Str(key, value, stack);\r
770             if (typeof str !== "undefined") {\r
771                partial.push(key.inspect(true)+ ':' + str);\r
772              }\r
773           }\r
774           partial = '{' + partial.join(',') + '}';\r
775         }\r
776         stack.pop();\r
777         return partial;\r
778     }\r
779   }\r
780 \r
781   function stringify(object) {\r
782     return JSON.stringify(object);\r
783   }\r
784 \r
785   function toQueryString(object) {\r
786     return $H(object).toQueryString();\r
787   }\r
788 \r
789   function toHTML(object) {\r
790     return object && object.toHTML ? object.toHTML() : String.interpret(object);\r
791   }\r
792 \r
793   function keys(object) {\r
794     if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); }\r
795     var results = [];\r
796     for (var property in object) {\r
797       if (object.hasOwnProperty(property)) {\r
798         results.push(property);\r
799       }\r
800     }\r
801     return results;\r
802   }\r
803 \r
804   function values(object) {\r
805     var results = [];\r
806     for (var property in object)\r
807       results.push(object[property]);\r
808     return results;\r
809   }\r
810 \r
811   function clone(object) {\r
812     return extend({ }, object);\r
813   }\r
814 \r
815   function isElement(object) {\r
816     return !!(object && object.nodeType == 1);\r
817   }\r
818 \r
819   function isArray(object) {\r
820     return _toString.call(object) === ARRAY_CLASS;\r
821   }\r
822 \r
823   var hasNativeIsArray = (typeof Array.isArray == 'function')\r
824     && Array.isArray([]) && !Array.isArray({});\r
825 \r
826   if (hasNativeIsArray) {\r
827     isArray = Array.isArray;\r
828   }\r
829 \r
830   function isHash(object) {\r
831     return object instanceof Hash;\r
832   }\r
833 \r
834   function isFunction(object) {\r
835     return _toString.call(object) === FUNCTION_CLASS;\r
836   }\r
837 \r
838   function isString(object) {\r
839     return _toString.call(object) === STRING_CLASS;\r
840   }\r
841 \r
842   function isNumber(object) {\r
843     return _toString.call(object) === NUMBER_CLASS;\r
844   }\r
845 \r
846   function isDate(object) {\r
847     return _toString.call(object) === DATE_CLASS;\r
848   }\r
849 \r
850   function isUndefined(object) {\r
851     return typeof object === "undefined";\r
852   }\r
853 \r
854   extend(Object, {\r
855     extend:        extend,\r
856     inspect:       inspect,\r
857     toJSON:        NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON,\r
858     toQueryString: toQueryString,\r
859     toHTML:        toHTML,\r
860     keys:          Object.keys || keys,\r
861     values:        values,\r
862     clone:         clone,\r
863     isElement:     isElement,\r
864     isArray:       isArray,\r
865     isHash:        isHash,\r
866     isFunction:    isFunction,\r
867     isString:      isString,\r
868     isNumber:      isNumber,\r
869     isDate:        isDate,\r
870     isUndefined:   isUndefined\r
871   });\r
872 })();\r
873 Object.extend(Function.prototype, (function() {\r
874   var slice = Array.prototype.slice;\r
875 \r
876   function update(array, args) {\r
877     var arrayLength = array.length, length = args.length;\r
878     while (length--) array[arrayLength + length] = args[length];\r
879     return array;\r
880   }\r
881 \r
882   function merge(array, args) {\r
883     array = slice.call(array, 0);\r
884     return update(array, args);\r
885   }\r
886 \r
887   function argumentNames() {\r
888     var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]\r
889       .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')\r
890       .replace(/\s+/g, '').split(',');\r
891     return names.length == 1 && !names[0] ? [] : names;\r
892   }\r
893 \r
894   function bind(context) {\r
895     if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;\r
896     var __method = this, args = slice.call(arguments, 1);\r
897     return function() {\r
898       var a = merge(args, arguments);\r
899       return __method.apply(context, a);\r
900     }\r
901   }\r
902 \r
903   function bindAsEventListener(context) {\r
904     var __method = this, args = slice.call(arguments, 1);\r
905     return function(event) {\r
906       var a = update([event || window.event], args);\r
907       return __method.apply(context, a);\r
908     }\r
909   }\r
910 \r
911   function curry() {\r
912     if (!arguments.length) return this;\r
913     var __method = this, args = slice.call(arguments, 0);\r
914     return function() {\r
915       var a = merge(args, arguments);\r
916       return __method.apply(this, a);\r
917     }\r
918   }\r
919 \r
920   function delay(timeout) {\r
921     var __method = this, args = slice.call(arguments, 1);\r
922     timeout = timeout * 1000;\r
923     return window.setTimeout(function() {\r
924       return __method.apply(__method, args);\r
925     }, timeout);\r
926   }\r
927 \r
928   function defer() {\r
929     var args = update([0.01], arguments);\r
930     return this.delay.apply(this, args);\r
931   }\r
932 \r
933   function wrap(wrapper) {\r
934     var __method = this;\r
935     return function() {\r
936       var a = update([__method.bind(this)], arguments);\r
937       return wrapper.apply(this, a);\r
938     }\r
939   }\r
940 \r
941   function methodize() {\r
942     if (this._methodized) return this._methodized;\r
943     var __method = this;\r
944     return this._methodized = function() {\r
945       var a = update([this], arguments);\r
946       return __method.apply(null, a);\r
947     };\r
948   }\r
949 \r
950   return {\r
951     argumentNames:       argumentNames,\r
952     bind:                bind,\r
953     bindAsEventListener: bindAsEventListener,\r
954     curry:               curry,\r
955     delay:               delay,\r
956     defer:               defer,\r
957     wrap:                wrap,\r
958     methodize:           methodize\r
959   }\r
960 })());\r
961 \r
962 \r
963 \r
964 (function(proto) {\r
965 \r
966 \r
967   function toISOString() {\r
968     return this.getUTCFullYear() + '-' +\r
969       (this.getUTCMonth() + 1).toPaddedString(2) + '-' +\r
970       this.getUTCDate().toPaddedString(2) + 'T' +\r
971       this.getUTCHours().toPaddedString(2) + ':' +\r
972       this.getUTCMinutes().toPaddedString(2) + ':' +\r
973       this.getUTCSeconds().toPaddedString(2) + 'Z';\r
974   }\r
975 \r
976 \r
977   function toJSON() {\r
978     return this.toISOString();\r
979   }\r
980 \r
981   if (!proto.toISOString) proto.toISOString = toISOString;\r
982   if (!proto.toJSON) proto.toJSON = toJSON;\r
983 \r
984 })(Date.prototype);\r
985 \r
986 \r
987 RegExp.prototype.match = RegExp.prototype.test;\r
988 \r
989 RegExp.escape = function(str) {\r
990   return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');\r
991 };\r
992 var PeriodicalExecuter = Class.create({\r
993   initialize: function(callback, frequency) {\r
994     this.callback = callback;\r
995     this.frequency = frequency;\r
996     this.currentlyExecuting = false;\r
997 \r
998     this.registerCallback();\r
999   },\r
1000 \r
1001   registerCallback: function() {\r
1002     this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);\r
1003   },\r
1004 \r
1005   execute: function() {\r
1006     this.callback(this);\r
1007   },\r
1008 \r
1009   stop: function() {\r
1010     if (!this.timer) return;\r
1011     clearInterval(this.timer);\r
1012     this.timer = null;\r
1013   },\r
1014 \r
1015   onTimerEvent: function() {\r
1016     if (!this.currentlyExecuting) {\r
1017       try {\r
1018         this.currentlyExecuting = true;\r
1019         this.execute();\r
1020         this.currentlyExecuting = false;\r
1021       } catch(e) {\r
1022         this.currentlyExecuting = false;\r
1023         throw e;\r
1024       }\r
1025     }\r
1026   }\r
1027 });\r
1028 Object.extend(String, {\r
1029   interpret: function(value) {\r
1030     return value == null ? '' : String(value);\r
1031   },\r
1032   specialChar: {\r
1033     '\b': '\\b',\r
1034     '\t': '\\t',\r
1035     '\n': '\\n',\r
1036     '\f': '\\f',\r
1037     '\r': '\\r',\r
1038     '\\': '\\\\'\r
1039   }\r
1040 });\r
1041 \r
1042 Object.extend(String.prototype, (function() {\r
1043   var NATIVE_JSON_PARSE_SUPPORT = window.JSON &&\r
1044     typeof JSON.parse === 'function' &&\r
1045     JSON.parse('{"test": true}').test;\r
1046 \r
1047   function prepareReplacement(replacement) {\r
1048     if (Object.isFunction(replacement)) return replacement;\r
1049     var template = new Template(replacement);\r
1050     return function(match) { return template.evaluate(match) };\r
1051   }\r
1052 \r
1053   function gsub(pattern, replacement) {\r
1054     var result = '', source = this, match;\r
1055     replacement = prepareReplacement(replacement);\r
1056 \r
1057     if (Object.isString(pattern))\r
1058       pattern = RegExp.escape(pattern);\r
1059 \r
1060     if (!(pattern.length || pattern.source)) {\r
1061       replacement = replacement('');\r
1062       return replacement + source.split('').join(replacement) + replacement;\r
1063     }\r
1064 \r
1065     while (source.length > 0) {\r
1066       if (match = source.match(pattern)) {\r
1067         result += source.slice(0, match.index);\r
1068         result += String.interpret(replacement(match));\r
1069         source  = source.slice(match.index + match[0].length);\r
1070       } else {\r
1071         result += source, source = '';\r
1072       }\r
1073     }\r
1074     return result;\r
1075   }\r
1076 \r
1077   function sub(pattern, replacement, count) {\r
1078     replacement = prepareReplacement(replacement);\r
1079     count = Object.isUndefined(count) ? 1 : count;\r
1080 \r
1081     return this.gsub(pattern, function(match) {\r
1082       if (--count < 0) return match[0];\r
1083       return replacement(match);\r
1084     });\r
1085   }\r
1086 \r
1087   function scan(pattern, iterator) {\r
1088     this.gsub(pattern, iterator);\r
1089     return String(this);\r
1090   }\r
1091 \r
1092   function truncate(length, truncation) {\r
1093     length = length || 30;\r
1094     truncation = Object.isUndefined(truncation) ? '...' : truncation;\r
1095     return this.length > length ?\r
1096       this.slice(0, length - truncation.length) + truncation : String(this);\r
1097   }\r
1098 \r
1099   function strip() {\r
1100     return this.replace(/^\s+/, '').replace(/\s+$/, '');\r
1101   }\r
1102 \r
1103   function stripTags() {\r
1104     return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, '');\r
1105   }\r
1106 \r
1107   function stripScripts() {\r
1108     return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');\r
1109   }\r
1110 \r
1111   function extractScripts() {\r
1112     var matchAll = new RegExp(Prototype.ScriptFragment, 'img'),\r
1113         matchOne = new RegExp(Prototype.ScriptFragment, 'im');\r
1114     return (this.match(matchAll) || []).map(function(scriptTag) {\r
1115       return (scriptTag.match(matchOne) || ['', ''])[1];\r
1116     });\r
1117   }\r
1118 \r
1119   function evalScripts() {\r
1120     return this.extractScripts().map(function(script) { return eval(script) });\r
1121   }\r
1122 \r
1123   function escapeHTML() {\r
1124     return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');\r
1125   }\r
1126 \r
1127   function unescapeHTML() {\r
1128     return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');\r
1129   }\r
1130 \r
1131 \r
1132   function toQueryParams(separator) {\r
1133     var match = this.strip().match(/([^?#]*)(#.*)?$/);\r
1134     if (!match) return { };\r
1135 \r
1136     return match[1].split(separator || '&').inject({ }, function(hash, pair) {\r
1137       if ((pair = pair.split('='))[0]) {\r
1138         var key = decodeURIComponent(pair.shift()),\r
1139             value = pair.length > 1 ? pair.join('=') : pair[0];\r
1140 \r
1141         if (value != undefined) value = decodeURIComponent(value);\r
1142 \r
1143         if (key in hash) {\r
1144           if (!Object.isArray(hash[key])) hash[key] = [hash[key]];\r
1145           hash[key].push(value);\r
1146         }\r
1147         else hash[key] = value;\r
1148       }\r
1149       return hash;\r
1150     });\r
1151   }\r
1152 \r
1153   function toArray() {\r
1154     return this.split('');\r
1155   }\r
1156 \r
1157   function succ() {\r
1158     return this.slice(0, this.length - 1) +\r
1159       String.fromCharCode(this.charCodeAt(this.length - 1) + 1);\r
1160   }\r
1161 \r
1162   function times(count) {\r
1163     return count < 1 ? '' : new Array(count + 1).join(this);\r
1164   }\r
1165 \r
1166   function camelize() {\r
1167     return this.replace(/-+(.)?/g, function(match, chr) {\r
1168       return chr ? chr.toUpperCase() : '';\r
1169     });\r
1170   }\r
1171 \r
1172   function capitalize() {\r
1173     return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();\r
1174   }\r
1175 \r
1176   function underscore() {\r
1177     return this.replace(/::/g, '/')\r
1178                .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\r
1179                .replace(/([a-z\d])([A-Z])/g, '$1_$2')\r
1180                .replace(/-/g, '_')\r
1181                .toLowerCase();\r
1182   }\r
1183 \r
1184   function dasherize() {\r
1185     return this.replace(/_/g, '-');\r
1186   }\r
1187 \r
1188   function inspect(useDoubleQuotes) {\r
1189     var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) {\r
1190       if (character in String.specialChar) {\r
1191         return String.specialChar[character];\r
1192       }\r
1193       return '\\u00' + character.charCodeAt().toPaddedString(2, 16);\r
1194     });\r
1195     if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';\r
1196     return "'" + escapedString.replace(/'/g, '\\\'') + "'";\r
1197   }\r
1198 \r
1199   function unfilterJSON(filter) {\r
1200     return this.replace(filter || Prototype.JSONFilter, '$1');\r
1201   }\r
1202 \r
1203   function isJSON() {\r
1204     var str = this;\r
1205     if (str.blank()) return false;\r
1206     str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@');\r
1207     str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']');\r
1208     str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, '');\r
1209     return (/^[\],:{}\s]*$/).test(str);\r
1210   }\r
1211 \r
1212   function evalJSON(sanitize) {\r
1213     var json = this.unfilterJSON(),\r
1214         cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;\r
1215     if (cx.test(json)) {\r
1216       json = json.replace(cx, function (a) {\r
1217         return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\r
1218       });\r
1219     }\r
1220     try {\r
1221       if (!sanitize || json.isJSON()) return eval('(' + json + ')');\r
1222     } catch (e) { }\r
1223     throw new SyntaxError('Badly formed JSON string: ' + this.inspect());\r
1224   }\r
1225 \r
1226   function parseJSON() {\r
1227     var json = this.unfilterJSON();\r
1228     return JSON.parse(json);\r
1229   }\r
1230 \r
1231   function include(pattern) {\r
1232     return this.indexOf(pattern) > -1;\r
1233   }\r
1234 \r
1235   function startsWith(pattern) {\r
1236     return this.lastIndexOf(pattern, 0) === 0;\r
1237   }\r
1238 \r
1239   function endsWith(pattern) {\r
1240     var d = this.length - pattern.length;\r
1241     return d >= 0 && this.indexOf(pattern, d) === d;\r
1242   }\r
1243 \r
1244   function empty() {\r
1245     return this == '';\r
1246   }\r
1247 \r
1248   function blank() {\r
1249     return /^\s*$/.test(this);\r
1250   }\r
1251 \r
1252   function interpolate(object, pattern) {\r
1253     return new Template(this, pattern).evaluate(object);\r
1254   }\r
1255 \r
1256   return {\r
1257     gsub:           gsub,\r
1258     sub:            sub,\r
1259     scan:           scan,\r
1260     truncate:       truncate,\r
1261     strip:          String.prototype.trim || strip,\r
1262     stripTags:      stripTags,\r
1263     stripScripts:   stripScripts,\r
1264     extractScripts: extractScripts,\r
1265     evalScripts:    evalScripts,\r
1266     escapeHTML:     escapeHTML,\r
1267     unescapeHTML:   unescapeHTML,\r
1268     toQueryParams:  toQueryParams,\r
1269     parseQuery:     toQueryParams,\r
1270     toArray:        toArray,\r
1271     succ:           succ,\r
1272     times:          times,\r
1273     camelize:       camelize,\r
1274     capitalize:     capitalize,\r
1275     underscore:     underscore,\r
1276     dasherize:      dasherize,\r
1277     inspect:        inspect,\r
1278     unfilterJSON:   unfilterJSON,\r
1279     isJSON:         isJSON,\r
1280     evalJSON:       NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON,\r
1281     include:        include,\r
1282     startsWith:     startsWith,\r
1283     endsWith:       endsWith,\r
1284     empty:          empty,\r
1285     blank:          blank,\r
1286     interpolate:    interpolate\r
1287   };\r
1288 })());\r
1289 \r
1290 var Template = Class.create({\r
1291   initialize: function(template, pattern) {\r
1292     this.template = template.toString();\r
1293     this.pattern = pattern || Template.Pattern;\r
1294   },\r
1295 \r
1296   evaluate: function(object) {\r
1297     if (object && Object.isFunction(object.toTemplateReplacements))\r
1298       object = object.toTemplateReplacements();\r
1299 \r
1300     return this.template.gsub(this.pattern, function(match) {\r
1301       if (object == null) return (match[1] + '');\r
1302 \r
1303       var before = match[1] || '';\r
1304       if (before == '\\') return match[2];\r
1305 \r
1306       var ctx = object, expr = match[3],\r
1307           pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;\r
1308 \r
1309       match = pattern.exec(expr);\r
1310       if (match == null) return before;\r
1311 \r
1312       while (match != null) {\r
1313         var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1];\r
1314         ctx = ctx[comp];\r
1315         if (null == ctx || '' == match[3]) break;\r
1316         expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);\r
1317         match = pattern.exec(expr);\r
1318       }\r
1319 \r
1320       return before + String.interpret(ctx);\r
1321     });\r
1322   }\r
1323 });\r
1324 Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;\r
1325 \r
1326 var $break = { };\r
1327 \r
1328 var Enumerable = (function() {\r
1329   function each(iterator, context) {\r
1330     var index = 0;\r
1331     try {\r
1332       this._each(function(value) {\r
1333         iterator.call(context, value, index++);\r
1334       });\r
1335     } catch (e) {\r
1336       if (e != $break) throw e;\r
1337     }\r
1338     return this;\r
1339   }\r
1340 \r
1341   function eachSlice(number, iterator, context) {\r
1342     var index = -number, slices = [], array = this.toArray();\r
1343     if (number < 1) return array;\r
1344     while ((index += number) < array.length)\r
1345       slices.push(array.slice(index, index+number));\r
1346     return slices.collect(iterator, context);\r
1347   }\r
1348 \r
1349   function all(iterator, context) {\r
1350     iterator = iterator || Prototype.K;\r
1351     var result = true;\r
1352     this.each(function(value, index) {\r
1353       result = result && !!iterator.call(context, value, index);\r
1354       if (!result) throw $break;\r
1355     });\r
1356     return result;\r
1357   }\r
1358 \r
1359   function any(iterator, context) {\r
1360     iterator = iterator || Prototype.K;\r
1361     var result = false;\r
1362     this.each(function(value, index) {\r
1363       if (result = !!iterator.call(context, value, index))\r
1364         throw $break;\r
1365     });\r
1366     return result;\r
1367   }\r
1368 \r
1369   function collect(iterator, context) {\r
1370     iterator = iterator || Prototype.K;\r
1371     var results = [];\r
1372     this.each(function(value, index) {\r
1373       results.push(iterator.call(context, value, index));\r
1374     });\r
1375     return results;\r
1376   }\r
1377 \r
1378   function detect(iterator, context) {\r
1379     var result;\r
1380     this.each(function(value, index) {\r
1381       if (iterator.call(context, value, index)) {\r
1382         result = value;\r
1383         throw $break;\r
1384       }\r
1385     });\r
1386     return result;\r
1387   }\r
1388 \r
1389   function findAll(iterator, context) {\r
1390     var results = [];\r
1391     this.each(function(value, index) {\r
1392       if (iterator.call(context, value, index))\r
1393         results.push(value);\r
1394     });\r
1395     return results;\r
1396   }\r
1397 \r
1398   function grep(filter, iterator, context) {\r
1399     iterator = iterator || Prototype.K;\r
1400     var results = [];\r
1401 \r
1402     if (Object.isString(filter))\r
1403       filter = new RegExp(RegExp.escape(filter));\r
1404 \r
1405     this.each(function(value, index) {\r
1406       if (filter.match(value))\r
1407         results.push(iterator.call(context, value, index));\r
1408     });\r
1409     return results;\r
1410   }\r
1411 \r
1412   function include(object) {\r
1413     if (Object.isFunction(this.indexOf))\r
1414       if (this.indexOf(object) != -1) return true;\r
1415 \r
1416     var found = false;\r
1417     this.each(function(value) {\r
1418       if (value == object) {\r
1419         found = true;\r
1420         throw $break;\r
1421       }\r
1422     });\r
1423     return found;\r
1424   }\r
1425 \r
1426   function inGroupsOf(number, fillWith) {\r
1427     fillWith = Object.isUndefined(fillWith) ? null : fillWith;\r
1428     return this.eachSlice(number, function(slice) {\r
1429       while(slice.length < number) slice.push(fillWith);\r
1430       return slice;\r
1431     });\r
1432   }\r
1433 \r
1434   function inject(memo, iterator, context) {\r
1435     this.each(function(value, index) {\r
1436       memo = iterator.call(context, memo, value, index);\r
1437     });\r
1438     return memo;\r
1439   }\r
1440 \r
1441   function invoke(method) {\r
1442     var args = $A(arguments).slice(1);\r
1443     return this.map(function(value) {\r
1444       return value[method].apply(value, args);\r
1445     });\r
1446   }\r
1447 \r
1448   function max(iterator, context) {\r
1449     iterator = iterator || Prototype.K;\r
1450     var result;\r
1451     this.each(function(value, index) {\r
1452       value = iterator.call(context, value, index);\r
1453       if (result == null || value >= result)\r
1454         result = value;\r
1455     });\r
1456     return result;\r
1457   }\r
1458 \r
1459   function min(iterator, context) {\r
1460     iterator = iterator || Prototype.K;\r
1461     var result;\r
1462     this.each(function(value, index) {\r
1463       value = iterator.call(context, value, index);\r
1464       if (result == null || value < result)\r
1465         result = value;\r
1466     });\r
1467     return result;\r
1468   }\r
1469 \r
1470   function partition(iterator, context) {\r
1471     iterator = iterator || Prototype.K;\r
1472     var trues = [], falses = [];\r
1473     this.each(function(value, index) {\r
1474       (iterator.call(context, value, index) ?\r
1475         trues : falses).push(value);\r
1476     });\r
1477     return [trues, falses];\r
1478   }\r
1479 \r
1480   function pluck(property) {\r
1481     var results = [];\r
1482     this.each(function(value) {\r
1483       results.push(value[property]);\r
1484     });\r
1485     return results;\r
1486   }\r
1487 \r
1488   function reject(iterator, context) {\r
1489     var results = [];\r
1490     this.each(function(value, index) {\r
1491       if (!iterator.call(context, value, index))\r
1492         results.push(value);\r
1493     });\r
1494     return results;\r
1495   }\r
1496 \r
1497   function sortBy(iterator, context) {\r
1498     return this.map(function(value, index) {\r
1499       return {\r
1500         value: value,\r
1501         criteria: iterator.call(context, value, index)\r
1502       };\r
1503     }).sort(function(left, right) {\r
1504       var a = left.criteria, b = right.criteria;\r
1505       return a < b ? -1 : a > b ? 1 : 0;\r
1506     }).pluck('value');\r
1507   }\r
1508 \r
1509   function toArray() {\r
1510     return this.map();\r
1511   }\r
1512 \r
1513   function zip() {\r
1514     var iterator = Prototype.K, args = $A(arguments);\r
1515     if (Object.isFunction(args.last()))\r
1516       iterator = args.pop();\r
1517 \r
1518     var collections = [this].concat(args).map($A);\r
1519     return this.map(function(value, index) {\r
1520       return iterator(collections.pluck(index));\r
1521     });\r
1522   }\r
1523 \r
1524   function size() {\r
1525     return this.toArray().length;\r
1526   }\r
1527 \r
1528   function inspect() {\r
1529     return '#<Enumerable:' + this.toArray().inspect() + '>';\r
1530   }\r
1531 \r
1532 \r
1533 \r
1534 \r
1535 \r
1536 \r
1537 \r
1538 \r
1539 \r
1540   return {\r
1541     each:       each,\r
1542     eachSlice:  eachSlice,\r
1543     all:        all,\r
1544     every:      all,\r
1545     any:        any,\r
1546     some:       any,\r
1547     collect:    collect,\r
1548     map:        collect,\r
1549     detect:     detect,\r
1550     findAll:    findAll,\r
1551     select:     findAll,\r
1552     filter:     findAll,\r
1553     grep:       grep,\r
1554     include:    include,\r
1555     member:     include,\r
1556     inGroupsOf: inGroupsOf,\r
1557     inject:     inject,\r
1558     invoke:     invoke,\r
1559     max:        max,\r
1560     min:        min,\r
1561     partition:  partition,\r
1562     pluck:      pluck,\r
1563     reject:     reject,\r
1564     sortBy:     sortBy,\r
1565     toArray:    toArray,\r
1566     entries:    toArray,\r
1567     zip:        zip,\r
1568     size:       size,\r
1569     inspect:    inspect,\r
1570     find:       detect\r
1571   };\r
1572 })();\r
1573 \r
1574 function $A(iterable) {\r
1575   if (!iterable) return [];\r
1576   if ('toArray' in Object(iterable)) return iterable.toArray();\r
1577   var length = iterable.length || 0, results = new Array(length);\r
1578   while (length--) results[length] = iterable[length];\r
1579   return results;\r
1580 }\r
1581 \r
1582 \r
1583 function $w(string) {\r
1584   if (!Object.isString(string)) return [];\r
1585   string = string.strip();\r
1586   return string ? string.split(/\s+/) : [];\r
1587 }\r
1588 \r
1589 Array.from = $A;\r
1590 \r
1591 \r
1592 (function() {\r
1593   var arrayProto = Array.prototype,\r
1594       slice = arrayProto.slice,\r
1595       _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available\r
1596 \r
1597   function each(iterator, context) {\r
1598     for (var i = 0, length = this.length >>> 0; i < length; i++) {\r
1599       if (i in this) iterator.call(context, this[i], i, this);\r
1600     }\r
1601   }\r
1602   if (!_each) _each = each;\r
1603 \r
1604   function clear() {\r
1605     this.length = 0;\r
1606     return this;\r
1607   }\r
1608 \r
1609   function first() {\r
1610     return this[0];\r
1611   }\r
1612 \r
1613   function last() {\r
1614     return this[this.length - 1];\r
1615   }\r
1616 \r
1617   function compact() {\r
1618     return this.select(function(value) {\r
1619       return value != null;\r
1620     });\r
1621   }\r
1622 \r
1623   function flatten() {\r
1624     return this.inject([], function(array, value) {\r
1625       if (Object.isArray(value))\r
1626         return array.concat(value.flatten());\r
1627       array.push(value);\r
1628       return array;\r
1629     });\r
1630   }\r
1631 \r
1632   function without() {\r
1633     var values = slice.call(arguments, 0);\r
1634     return this.select(function(value) {\r
1635       return !values.include(value);\r
1636     });\r
1637   }\r
1638 \r
1639   function reverse(inline) {\r
1640     return (inline === false ? this.toArray() : this)._reverse();\r
1641   }\r
1642 \r
1643   function uniq(sorted) {\r
1644     return this.inject([], function(array, value, index) {\r
1645       if (0 == index || (sorted ? array.last() != value : !array.include(value)))\r
1646         array.push(value);\r
1647       return array;\r
1648     });\r
1649   }\r
1650 \r
1651   function intersect(array) {\r
1652     return this.uniq().findAll(function(item) {\r
1653       return array.detect(function(value) { return item === value });\r
1654     });\r
1655   }\r
1656 \r
1657 \r
1658   function clone() {\r
1659     return slice.call(this, 0);\r
1660   }\r
1661 \r
1662   function size() {\r
1663     return this.length;\r
1664   }\r
1665 \r
1666   function inspect() {\r
1667     return '[' + this.map(Object.inspect).join(', ') + ']';\r
1668   }\r
1669 \r
1670   function indexOf(item, i) {\r
1671     i || (i = 0);\r
1672     var length = this.length;\r
1673     if (i < 0) i = length + i;\r
1674     for (; i < length; i++)\r
1675       if (this[i] === item) return i;\r
1676     return -1;\r
1677   }\r
1678 \r
1679   function lastIndexOf(item, i) {\r
1680     i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;\r
1681     var n = this.slice(0, i).reverse().indexOf(item);\r
1682     return (n < 0) ? n : i - n - 1;\r
1683   }\r
1684 \r
1685   function concat() {\r
1686     var array = slice.call(this, 0), item;\r
1687     for (var i = 0, length = arguments.length; i < length; i++) {\r
1688       item = arguments[i];\r
1689       if (Object.isArray(item) && !('callee' in item)) {\r
1690         for (var j = 0, arrayLength = item.length; j < arrayLength; j++)\r
1691           array.push(item[j]);\r
1692       } else {\r
1693         array.push(item);\r
1694       }\r
1695     }\r
1696     return array;\r
1697   }\r
1698 \r
1699   Object.extend(arrayProto, Enumerable);\r
1700 \r
1701   if (!arrayProto._reverse)\r
1702     arrayProto._reverse = arrayProto.reverse;\r
1703 \r
1704   Object.extend(arrayProto, {\r
1705     _each:     _each,\r
1706     clear:     clear,\r
1707     first:     first,\r
1708     last:      last,\r
1709     compact:   compact,\r
1710     flatten:   flatten,\r
1711     without:   without,\r
1712     reverse:   reverse,\r
1713     uniq:      uniq,\r
1714     intersect: intersect,\r
1715     clone:     clone,\r
1716     toArray:   clone,\r
1717     size:      size,\r
1718     inspect:   inspect\r
1719   });\r
1720 \r
1721   var CONCAT_ARGUMENTS_BUGGY = (function() {\r
1722     return [].concat(arguments)[0][0] !== 1;\r
1723   })(1,2)\r
1724 \r
1725   if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat;\r
1726 \r
1727   if (!arrayProto.indexOf) arrayProto.indexOf = indexOf;\r
1728   if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf;\r
1729 })();\r
1730 function $H(object) {\r
1731   return new Hash(object);\r
1732 };\r
1733 \r
1734 var Hash = Class.create(Enumerable, (function() {\r
1735   function initialize(object) {\r
1736     this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);\r
1737   }\r
1738 \r
1739 \r
1740   function _each(iterator) {\r
1741     for (var key in this._object) {\r
1742       var value = this._object[key], pair = [key, value];\r
1743       pair.key = key;\r
1744       pair.value = value;\r
1745       iterator(pair);\r
1746     }\r
1747   }\r
1748 \r
1749   function set(key, value) {\r
1750     return this._object[key] = value;\r
1751   }\r
1752 \r
1753   function get(key) {\r
1754     if (this._object[key] !== Object.prototype[key])\r
1755       return this._object[key];\r
1756   }\r
1757 \r
1758   function unset(key) {\r
1759     var value = this._object[key];\r
1760     delete this._object[key];\r
1761     return value;\r
1762   }\r
1763 \r
1764   function toObject() {\r
1765     return Object.clone(this._object);\r
1766   }\r
1767 \r
1768 \r
1769 \r
1770   function keys() {\r
1771     return this.pluck('key');\r
1772   }\r
1773 \r
1774   function values() {\r
1775     return this.pluck('value');\r
1776   }\r
1777 \r
1778   function index(value) {\r
1779     var match = this.detect(function(pair) {\r
1780       return pair.value === value;\r
1781     });\r
1782     return match && match.key;\r
1783   }\r
1784 \r
1785   function merge(object) {\r
1786     return this.clone().update(object);\r
1787   }\r
1788 \r
1789   function update(object) {\r
1790     return new Hash(object).inject(this, function(result, pair) {\r
1791       result.set(pair.key, pair.value);\r
1792       return result;\r
1793     });\r
1794   }\r
1795 \r
1796   function toQueryPair(key, value) {\r
1797     if (Object.isUndefined(value)) return key;\r
1798     return key + '=' + encodeURIComponent(String.interpret(value));\r
1799   }\r
1800 \r
1801   function toQueryString() {\r
1802     return this.inject([], function(results, pair) {\r
1803       var key = encodeURIComponent(pair.key), values = pair.value;\r
1804 \r
1805       if (values && typeof values == 'object') {\r
1806         if (Object.isArray(values)) {\r
1807           var queryValues = [];\r
1808           for (var i = 0, len = values.length, value; i < len; i++) {\r
1809             value = values[i];\r
1810             queryValues.push(toQueryPair(key, value));\r
1811           }\r
1812           return results.concat(queryValues);\r
1813         }\r
1814       } else results.push(toQueryPair(key, values));\r
1815       return results;\r
1816     }).join('&');\r
1817   }\r
1818 \r
1819   function inspect() {\r
1820     return '#<Hash:{' + this.map(function(pair) {\r
1821       return pair.map(Object.inspect).join(': ');\r
1822     }).join(', ') + '}>';\r
1823   }\r
1824 \r
1825   function clone() {\r
1826     return new Hash(this);\r
1827   }\r
1828 \r
1829   return {\r
1830     initialize:             initialize,\r
1831     _each:                  _each,\r
1832     set:                    set,\r
1833     get:                    get,\r
1834     unset:                  unset,\r
1835     toObject:               toObject,\r
1836     toTemplateReplacements: toObject,\r
1837     keys:                   keys,\r
1838     values:                 values,\r
1839     index:                  index,\r
1840     merge:                  merge,\r
1841     update:                 update,\r
1842     toQueryString:          toQueryString,\r
1843     inspect:                inspect,\r
1844     toJSON:                 toObject,\r
1845     clone:                  clone\r
1846   };\r
1847 })());\r
1848 \r
1849 Hash.from = $H;\r
1850 Object.extend(Number.prototype, (function() {\r
1851   function toColorPart() {\r
1852     return this.toPaddedString(2, 16);\r
1853   }\r
1854 \r
1855   function succ() {\r
1856     return this + 1;\r
1857   }\r
1858 \r
1859   function times(iterator, context) {\r
1860     $R(0, this, true).each(iterator, context);\r
1861     return this;\r
1862   }\r
1863 \r
1864   function toPaddedString(length, radix) {\r
1865     var string = this.toString(radix || 10);\r
1866     return '0'.times(length - string.length) + string;\r
1867   }\r
1868 \r
1869   function abs() {\r
1870     return Math.abs(this);\r
1871   }\r
1872 \r
1873   function round() {\r
1874     return Math.round(this);\r
1875   }\r
1876 \r
1877   function ceil() {\r
1878     return Math.ceil(this);\r
1879   }\r
1880 \r
1881   function floor() {\r
1882     return Math.floor(this);\r
1883   }\r
1884 \r
1885   return {\r
1886     toColorPart:    toColorPart,\r
1887     succ:           succ,\r
1888     times:          times,\r
1889     toPaddedString: toPaddedString,\r
1890     abs:            abs,\r
1891     round:          round,\r
1892     ceil:           ceil,\r
1893     floor:          floor\r
1894   };\r
1895 })());\r
1896 \r
1897 function $R(start, end, exclusive) {\r
1898   return new ObjectRange(start, end, exclusive);\r
1899 }\r
1900 \r
1901 var ObjectRange = Class.create(Enumerable, (function() {\r
1902   function initialize(start, end, exclusive) {\r
1903     this.start = start;\r
1904     this.end = end;\r
1905     this.exclusive = exclusive;\r
1906   }\r
1907 \r
1908   function _each(iterator) {\r
1909     var value = this.start;\r
1910     while (this.include(value)) {\r
1911       iterator(value);\r
1912       value = value.succ();\r
1913     }\r
1914   }\r
1915 \r
1916   function include(value) {\r
1917     if (value < this.start)\r
1918       return false;\r
1919     if (this.exclusive)\r
1920       return value < this.end;\r
1921     return value <= this.end;\r
1922   }\r
1923 \r
1924   return {\r
1925     initialize: initialize,\r
1926     _each:      _each,\r
1927     include:    include\r
1928   };\r
1929 })());\r
1930 \r
1931 \r
1932 \r
1933 var Abstract = { };\r
1934 \r
1935 \r
1936 var Try = {\r
1937   these: function() {\r
1938     var returnValue;\r
1939 \r
1940     for (var i = 0, length = arguments.length; i < length; i++) {\r
1941       var lambda = arguments[i];\r
1942       try {\r
1943         returnValue = lambda();\r
1944         break;\r
1945       } catch (e) { }\r
1946     }\r
1947 \r
1948     return returnValue;\r
1949   }\r
1950 };\r
1951 \r
1952 var Ajax = {\r
1953   getTransport: function() {\r
1954     return Try.these(\r
1955       function() {return new XMLHttpRequest()},\r
1956       function() {return new ActiveXObject('Msxml2.XMLHTTP')},\r
1957       function() {return new ActiveXObject('Microsoft.XMLHTTP')}\r
1958     ) || false;\r
1959   },\r
1960 \r
1961   activeRequestCount: 0\r
1962 };\r
1963 \r
1964 Ajax.Responders = {\r
1965   responders: [],\r
1966 \r
1967   _each: function(iterator) {\r
1968     this.responders._each(iterator);\r
1969   },\r
1970 \r
1971   register: function(responder) {\r
1972     if (!this.include(responder))\r
1973       this.responders.push(responder);\r
1974   },\r
1975 \r
1976   unregister: function(responder) {\r
1977     this.responders = this.responders.without(responder);\r
1978   },\r
1979 \r
1980   dispatch: function(callback, request, transport, json) {\r
1981     this.each(function(responder) {\r
1982       if (Object.isFunction(responder[callback])) {\r
1983         try {\r
1984           responder[callback].apply(responder, [request, transport, json]);\r
1985         } catch (e) { }\r
1986       }\r
1987     });\r
1988   }\r
1989 };\r
1990 \r
1991 Object.extend(Ajax.Responders, Enumerable);\r
1992 \r
1993 Ajax.Responders.register({\r
1994   onCreate:   function() { Ajax.activeRequestCount++ },\r
1995   onComplete: function() { Ajax.activeRequestCount-- }\r
1996 });\r
1997 Ajax.Base = Class.create({\r
1998   initialize: function(options) {\r
1999     this.options = {\r
2000       method:       'post',\r
2001       asynchronous: true,\r
2002       contentType:  'application/x-www-form-urlencoded',\r
2003       encoding:     'UTF-8',\r
2004       parameters:   '',\r
2005       evalJSON:     true,\r
2006       evalJS:       true\r
2007     };\r
2008     Object.extend(this.options, options || { });\r
2009 \r
2010     this.options.method = this.options.method.toLowerCase();\r
2011 \r
2012     if (Object.isHash(this.options.parameters))\r
2013       this.options.parameters = this.options.parameters.toObject();\r
2014   }\r
2015 });\r
2016 Ajax.Request = Class.create(Ajax.Base, {\r
2017   _complete: false,\r
2018 \r
2019   initialize: function($super, url, options) {\r
2020     $super(options);\r
2021     this.transport = Ajax.getTransport();\r
2022     this.request(url);\r
2023   },\r
2024 \r
2025   request: function(url) {\r
2026     this.url = url;\r
2027     this.method = this.options.method;\r
2028     var params = Object.isString(this.options.parameters) ?\r
2029           this.options.parameters :\r
2030           Object.toQueryString(this.options.parameters);\r
2031 \r
2032     if (!['get', 'post'].include(this.method)) {\r
2033       params += (params ? '&' : '') + "_method=" + this.method;\r
2034       this.method = 'post';\r
2035     }\r
2036 \r
2037     if (params && this.method === 'get') {\r
2038       this.url += (this.url.include('?') ? '&' : '?') + params;\r
2039     }\r
2040 \r
2041     this.parameters = params.toQueryParams();\r
2042 \r
2043     try {\r
2044       var response = new Ajax.Response(this);\r
2045       if (this.options.onCreate) this.options.onCreate(response);\r
2046       Ajax.Responders.dispatch('onCreate', this, response);\r
2047 \r
2048       this.transport.open(this.method.toUpperCase(), this.url,\r
2049         this.options.asynchronous);\r
2050 \r
2051       if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);\r
2052 \r
2053       this.transport.onreadystatechange = this.onStateChange.bind(this);\r
2054       this.setRequestHeaders();\r
2055 \r
2056       this.body = this.method == 'post' ? (this.options.postBody || params) : null;\r
2057       this.transport.send(this.body);\r
2058 \r
2059       /* Force Firefox to handle ready state 4 for synchronous requests */\r
2060       if (!this.options.asynchronous && this.transport.overrideMimeType)\r
2061         this.onStateChange();\r
2062 \r
2063     }\r
2064     catch (e) {\r
2065       this.dispatchException(e);\r
2066     }\r
2067   },\r
2068 \r
2069   onStateChange: function() {\r
2070     var readyState = this.transport.readyState;\r
2071     if (readyState > 1 && !((readyState == 4) && this._complete))\r
2072       this.respondToReadyState(this.transport.readyState);\r
2073   },\r
2074 \r
2075   setRequestHeaders: function() {\r
2076     var headers = {\r
2077       'X-Requested-With': 'XMLHttpRequest',\r
2078       'X-Prototype-Version': Prototype.Version,\r
2079       'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'\r
2080     };\r
2081 \r
2082     if (this.method == 'post') {\r
2083       headers['Content-type'] = this.options.contentType +\r
2084         (this.options.encoding ? '; charset=' + this.options.encoding : '');\r
2085 \r
2086       /* Force "Connection: close" for older Mozilla browsers to work\r
2087        * around a bug where XMLHttpRequest sends an incorrect\r
2088        * Content-length header. See Mozilla Bugzilla #246651.\r
2089        */\r
2090       if (this.transport.overrideMimeType &&\r
2091           (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)\r
2092             headers['Connection'] = 'close';\r
2093     }\r
2094 \r
2095     if (typeof this.options.requestHeaders == 'object') {\r
2096       var extras = this.options.requestHeaders;\r
2097 \r
2098       if (Object.isFunction(extras.push))\r
2099         for (var i = 0, length = extras.length; i < length; i += 2)\r
2100           headers[extras[i]] = extras[i+1];\r
2101       else\r
2102         $H(extras).each(function(pair) { headers[pair.key] = pair.value });\r
2103     }\r
2104 \r
2105     for (var name in headers)\r
2106       this.transport.setRequestHeader(name, headers[name]);\r
2107   },\r
2108 \r
2109   success: function() {\r
2110     var status = this.getStatus();\r
2111     return !status || (status >= 200 && status < 300) || status == 304;\r
2112   },\r
2113 \r
2114   getStatus: function() {\r
2115     try {\r
2116       if (this.transport.status === 1223) return 204;\r
2117       return this.transport.status || 0;\r
2118     } catch (e) { return 0 }\r
2119   },\r
2120 \r
2121   respondToReadyState: function(readyState) {\r
2122     var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);\r
2123 \r
2124     if (state == 'Complete') {\r
2125       try {\r
2126         this._complete = true;\r
2127         (this.options['on' + response.status]\r
2128          || this.options['on' + (this.success() ? 'Success' : 'Failure')]\r
2129          || Prototype.emptyFunction)(response, response.headerJSON);\r
2130       } catch (e) {\r
2131         this.dispatchException(e);\r
2132       }\r
2133 \r
2134       var contentType = response.getHeader('Content-type');\r
2135       if (this.options.evalJS == 'force'\r
2136           || (this.options.evalJS && this.isSameOrigin() && contentType\r
2137           && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))\r
2138         this.evalResponse();\r
2139     }\r
2140 \r
2141     try {\r
2142       (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);\r
2143       Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);\r
2144     } catch (e) {\r
2145       this.dispatchException(e);\r
2146     }\r
2147 \r
2148     if (state == 'Complete') {\r
2149       this.transport.onreadystatechange = Prototype.emptyFunction;\r
2150     }\r
2151   },\r
2152 \r
2153   isSameOrigin: function() {\r
2154     var m = this.url.match(/^\s*https?:\/\/[^\/]*/);\r
2155     return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({\r
2156       protocol: location.protocol,\r
2157       domain: document.domain,\r
2158       port: location.port ? ':' + location.port : ''\r
2159     }));\r
2160   },\r
2161 \r
2162   getHeader: function(name) {\r
2163     try {\r
2164       return this.transport.getResponseHeader(name) || null;\r
2165     } catch (e) { return null; }\r
2166   },\r
2167 \r
2168   evalResponse: function() {\r
2169     try {\r
2170       return eval((this.transport.responseText || '').unfilterJSON());\r
2171     } catch (e) {\r
2172       this.dispatchException(e);\r
2173     }\r
2174   },\r
2175 \r
2176   dispatchException: function(exception) {\r
2177     (this.options.onException || Prototype.emptyFunction)(this, exception);\r
2178     Ajax.Responders.dispatch('onException', this, exception);\r
2179   }\r
2180 });\r
2181 \r
2182 Ajax.Request.Events =\r
2183   ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];\r
2184 \r
2185 \r
2186 \r
2187 \r
2188 \r
2189 \r
2190 \r
2191 \r
2192 Ajax.Response = Class.create({\r
2193   initialize: function(request){\r
2194     this.request = request;\r
2195     var transport  = this.transport  = request.transport,\r
2196         readyState = this.readyState = transport.readyState;\r
2197 \r
2198     if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {\r
2199       this.status       = this.getStatus();\r
2200       this.statusText   = this.getStatusText();\r
2201       this.responseText = String.interpret(transport.responseText);\r
2202       this.headerJSON   = this._getHeaderJSON();\r
2203     }\r
2204 \r
2205     if (readyState == 4) {\r
2206       var xml = transport.responseXML;\r
2207       this.responseXML  = Object.isUndefined(xml) ? null : xml;\r
2208       this.responseJSON = this._getResponseJSON();\r
2209     }\r
2210   },\r
2211 \r
2212   status:      0,\r
2213 \r
2214   statusText: '',\r
2215 \r
2216   getStatus: Ajax.Request.prototype.getStatus,\r
2217 \r
2218   getStatusText: function() {\r
2219     try {\r
2220       return this.transport.statusText || '';\r
2221     } catch (e) { return '' }\r
2222   },\r
2223 \r
2224   getHeader: Ajax.Request.prototype.getHeader,\r
2225 \r
2226   getAllHeaders: function() {\r
2227     try {\r
2228       return this.getAllResponseHeaders();\r
2229     } catch (e) { return null }\r
2230   },\r
2231 \r
2232   getResponseHeader: function(name) {\r
2233     return this.transport.getResponseHeader(name);\r
2234   },\r
2235 \r
2236   getAllResponseHeaders: function() {\r
2237     return this.transport.getAllResponseHeaders();\r
2238   },\r
2239 \r
2240   _getHeaderJSON: function() {\r
2241     var json = this.getHeader('X-JSON');\r
2242     if (!json) return null;\r
2243     json = decodeURIComponent(escape(json));\r
2244     try {\r
2245       return json.evalJSON(this.request.options.sanitizeJSON ||\r
2246         !this.request.isSameOrigin());\r
2247     } catch (e) {\r
2248       this.request.dispatchException(e);\r
2249     }\r
2250   },\r
2251 \r
2252   _getResponseJSON: function() {\r
2253     var options = this.request.options;\r
2254     if (!options.evalJSON || (options.evalJSON != 'force' &&\r
2255       !(this.getHeader('Content-type') || '').include('application/json')) ||\r
2256         this.responseText.blank())\r
2257           return null;\r
2258     try {\r
2259       return this.responseText.evalJSON(options.sanitizeJSON ||\r
2260         !this.request.isSameOrigin());\r
2261     } catch (e) {\r
2262       this.request.dispatchException(e);\r
2263     }\r
2264   }\r
2265 });\r
2266 \r
2267 Ajax.Updater = Class.create(Ajax.Request, {\r
2268   initialize: function($super, container, url, options) {\r
2269     this.container = {\r
2270       success: (container.success || container),\r
2271       failure: (container.failure || (container.success ? null : container))\r
2272     };\r
2273 \r
2274     options = Object.clone(options);\r
2275     var onComplete = options.onComplete;\r
2276     options.onComplete = (function(response, json) {\r
2277       this.updateContent(response.responseText);\r
2278       if (Object.isFunction(onComplete)) onComplete(response, json);\r
2279     }).bind(this);\r
2280 \r
2281     $super(url, options);\r
2282   },\r
2283 \r
2284   updateContent: function(responseText) {\r
2285     var receiver = this.container[this.success() ? 'success' : 'failure'],\r
2286         options = this.options;\r
2287 \r
2288     if (!options.evalScripts) responseText = responseText.stripScripts();\r
2289 \r
2290     if (receiver = $(receiver)) {\r
2291       if (options.insertion) {\r
2292         if (Object.isString(options.insertion)) {\r
2293           var insertion = { }; insertion[options.insertion] = responseText;\r
2294           receiver.insert(insertion);\r
2295         }\r
2296         else options.insertion(receiver, responseText);\r
2297       }\r
2298       else receiver.update(responseText);\r
2299     }\r
2300   }\r
2301 });\r
2302 \r
2303 Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {\r
2304   initialize: function($super, container, url, options) {\r
2305     $super(options);\r
2306     this.onComplete = this.options.onComplete;\r
2307 \r
2308     this.frequency = (this.options.frequency || 2);\r
2309     this.decay = (this.options.decay || 1);\r
2310 \r
2311     this.updater = { };\r
2312     this.container = container;\r
2313     this.url = url;\r
2314 \r
2315     this.start();\r
2316   },\r
2317 \r
2318   start: function() {\r
2319     this.options.onComplete = this.updateComplete.bind(this);\r
2320     this.onTimerEvent();\r
2321   },\r
2322 \r
2323   stop: function() {\r
2324     this.updater.options.onComplete = undefined;\r
2325     clearTimeout(this.timer);\r
2326     (this.onComplete || Prototype.emptyFunction).apply(this, arguments);\r
2327   },\r
2328 \r
2329   updateComplete: function(response) {\r
2330     if (this.options.decay) {\r
2331       this.decay = (response.responseText == this.lastText ?\r
2332         this.decay * this.options.decay : 1);\r
2333 \r
2334       this.lastText = response.responseText;\r
2335     }\r
2336     this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);\r
2337   },\r
2338 \r
2339   onTimerEvent: function() {\r
2340     this.updater = new Ajax.Updater(this.container, this.url, this.options);\r
2341   }\r
2342 });\r
2343 \r
2344 \r
2345 function $(element) {\r
2346   if (arguments.length > 1) {\r
2347     for (var i = 0, elements = [], length = arguments.length; i < length; i++)\r
2348       elements.push($(arguments[i]));\r
2349     return elements;\r
2350   }\r
2351   if (Object.isString(element))\r
2352     element = document.getElementById(element);\r
2353   return Element.extend(element);\r
2354 }\r
2355 \r
2356 if (Prototype.BrowserFeatures.XPath) {\r
2357   document._getElementsByXPath = function(expression, parentElement) {\r
2358     var results = [];\r
2359     var query = document.evaluate(expression, $(parentElement) || document,\r
2360       null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\r
2361     for (var i = 0, length = query.snapshotLength; i < length; i++)\r
2362       results.push(Element.extend(query.snapshotItem(i)));\r
2363     return results;\r
2364   };\r
2365 }\r
2366 \r
2367 /*--------------------------------------------------------------------------*/\r
2368 \r
2369 if (!Node) var Node = { };\r
2370 \r
2371 if (!Node.ELEMENT_NODE) {\r
2372   Object.extend(Node, {\r
2373     ELEMENT_NODE: 1,\r
2374     ATTRIBUTE_NODE: 2,\r
2375     TEXT_NODE: 3,\r
2376     CDATA_SECTION_NODE: 4,\r
2377     ENTITY_REFERENCE_NODE: 5,\r
2378     ENTITY_NODE: 6,\r
2379     PROCESSING_INSTRUCTION_NODE: 7,\r
2380     COMMENT_NODE: 8,\r
2381     DOCUMENT_NODE: 9,\r
2382     DOCUMENT_TYPE_NODE: 10,\r
2383     DOCUMENT_FRAGMENT_NODE: 11,\r
2384     NOTATION_NODE: 12\r
2385   });\r
2386 }\r
2387 \r
2388 \r
2389 \r
2390 (function(global) {\r
2391   function shouldUseCache(tagName, attributes) {\r
2392     if (tagName === 'select') return false;\r
2393     if ('type' in attributes) return false;\r
2394     return true;\r
2395   }\r
2396 \r
2397   var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){\r
2398     try {\r
2399       var el = document.createElement('<input name="x">');\r
2400       return el.tagName.toLowerCase() === 'input' && el.name === 'x';\r
2401     }\r
2402     catch(err) {\r
2403       return false;\r
2404     }\r
2405   })();\r
2406 \r
2407   var element = global.Element;\r
2408 \r
2409   global.Element = function(tagName, attributes) {\r
2410     attributes = attributes || { };\r
2411     tagName = tagName.toLowerCase();\r
2412     var cache = Element.cache;\r
2413 \r
2414     if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) {\r
2415       tagName = '<' + tagName + ' name="' + attributes.name + '">';\r
2416       delete attributes.name;\r
2417       return Element.writeAttribute(document.createElement(tagName), attributes);\r
2418     }\r
2419 \r
2420     if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));\r
2421 \r
2422     var node = shouldUseCache(tagName, attributes) ?\r
2423      cache[tagName].cloneNode(false) : document.createElement(tagName);\r
2424 \r
2425     return Element.writeAttribute(node, attributes);\r
2426   };\r
2427 \r
2428   Object.extend(global.Element, element || { });\r
2429   if (element) global.Element.prototype = element.prototype;\r
2430 \r
2431 })(this);\r
2432 \r
2433 Element.idCounter = 1;\r
2434 Element.cache = { };\r
2435 \r
2436 Element._purgeElement = function(element) {\r
2437   var uid = element._prototypeUID;\r
2438   if (uid) {\r
2439     Element.stopObserving(element);\r
2440     element._prototypeUID = void 0;\r
2441     delete Element.Storage[uid];\r
2442   }\r
2443 }\r
2444 \r
2445 Element.Methods = {\r
2446   visible: function(element) {\r
2447     return $(element).style.display != 'none';\r
2448   },\r
2449 \r
2450   toggle: function(element) {\r
2451     element = $(element);\r
2452     Element[Element.visible(element) ? 'hide' : 'show'](element);\r
2453     return element;\r
2454   },\r
2455 \r
2456   hide: function(element) {\r
2457     element = $(element);\r
2458     element.style.display = 'none';\r
2459     return element;\r
2460   },\r
2461 \r
2462   show: function(element) {\r
2463     element = $(element);\r
2464     element.style.display = '';\r
2465     return element;\r
2466   },\r
2467 \r
2468   remove: function(element) {\r
2469     element = $(element);\r
2470     element.parentNode.removeChild(element);\r
2471     return element;\r
2472   },\r
2473 \r
2474   update: (function(){\r
2475 \r
2476     var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){\r
2477       var el = document.createElement("select"),\r
2478           isBuggy = true;\r
2479       el.innerHTML = "<option value=\"test\">test</option>";\r
2480       if (el.options && el.options[0]) {\r
2481         isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION";\r
2482       }\r
2483       el = null;\r
2484       return isBuggy;\r
2485     })();\r
2486 \r
2487     var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){\r
2488       try {\r
2489         var el = document.createElement("table");\r
2490         if (el && el.tBodies) {\r
2491           el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>";\r
2492           var isBuggy = typeof el.tBodies[0] == "undefined";\r
2493           el = null;\r
2494           return isBuggy;\r
2495         }\r
2496       } catch (e) {\r
2497         return true;\r
2498       }\r
2499     })();\r
2500 \r
2501     var LINK_ELEMENT_INNERHTML_BUGGY = (function() {\r
2502       try {\r
2503         var el = document.createElement('div');\r
2504         el.innerHTML = "<link>";\r
2505         var isBuggy = (el.childNodes.length === 0);\r
2506         el = null;\r
2507         return isBuggy;\r
2508       } catch(e) {\r
2509         return true;\r
2510       }\r
2511     })();\r
2512 \r
2513     var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY ||\r
2514      TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY;\r
2515 \r
2516     var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () {\r
2517       var s = document.createElement("script"),\r
2518           isBuggy = false;\r
2519       try {\r
2520         s.appendChild(document.createTextNode(""));\r
2521         isBuggy = !s.firstChild ||\r
2522           s.firstChild && s.firstChild.nodeType !== 3;\r
2523       } catch (e) {\r
2524         isBuggy = true;\r
2525       }\r
2526       s = null;\r
2527       return isBuggy;\r
2528     })();\r
2529 \r
2530 \r
2531     function update(element, content) {\r
2532       element = $(element);\r
2533       var purgeElement = Element._purgeElement;\r
2534 \r
2535       var descendants = element.getElementsByTagName('*'),\r
2536        i = descendants.length;\r
2537       while (i--) purgeElement(descendants[i]);\r
2538 \r
2539       if (content && content.toElement)\r
2540         content = content.toElement();\r
2541 \r
2542       if (Object.isElement(content))\r
2543         return element.update().insert(content);\r
2544 \r
2545       content = Object.toHTML(content);\r
2546 \r
2547       var tagName = element.tagName.toUpperCase();\r
2548 \r
2549       if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {\r
2550         element.text = content;\r
2551         return element;\r
2552       }\r
2553 \r
2554       if (ANY_INNERHTML_BUGGY) {\r
2555         if (tagName in Element._insertionTranslations.tags) {\r
2556           while (element.firstChild) {\r
2557             element.removeChild(element.firstChild);\r
2558           }\r
2559           Element._getContentFromAnonymousElement(tagName, content.stripScripts())\r
2560             .each(function(node) {\r
2561               element.appendChild(node)\r
2562             });\r
2563         } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) {\r
2564           while (element.firstChild) {\r
2565             element.removeChild(element.firstChild);\r
2566           }\r
2567           var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true);\r
2568           nodes.each(function(node) { element.appendChild(node) });\r
2569         }\r
2570         else {\r
2571           element.innerHTML = content.stripScripts();\r
2572         }\r
2573       }\r
2574       else {\r
2575         element.innerHTML = content.stripScripts();\r
2576       }\r
2577 \r
2578       content.evalScripts.bind(content).defer();\r
2579       return element;\r
2580     }\r
2581 \r
2582     return update;\r
2583   })(),\r
2584 \r
2585   replace: function(element, content) {\r
2586     element = $(element);\r
2587     if (content && content.toElement) content = content.toElement();\r
2588     else if (!Object.isElement(content)) {\r
2589       content = Object.toHTML(content);\r
2590       var range = element.ownerDocument.createRange();\r
2591       range.selectNode(element);\r
2592       content.evalScripts.bind(content).defer();\r
2593       content = range.createContextualFragment(content.stripScripts());\r
2594     }\r
2595     element.parentNode.replaceChild(content, element);\r
2596     return element;\r
2597   },\r
2598 \r
2599   insert: function(element, insertions) {\r
2600     element = $(element);\r
2601 \r
2602     if (Object.isString(insertions) || Object.isNumber(insertions) ||\r
2603         Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))\r
2604           insertions = {bottom:insertions};\r
2605 \r
2606     var content, insert, tagName, childNodes;\r
2607 \r
2608     for (var position in insertions) {\r
2609       content  = insertions[position];\r
2610       position = position.toLowerCase();\r
2611       insert = Element._insertionTranslations[position];\r
2612 \r
2613       if (content && content.toElement) content = content.toElement();\r
2614       if (Object.isElement(content)) {\r
2615         insert(element, content);\r
2616         continue;\r
2617       }\r
2618 \r
2619       content = Object.toHTML(content);\r
2620 \r
2621       tagName = ((position == 'before' || position == 'after')\r
2622         ? element.parentNode : element).tagName.toUpperCase();\r
2623 \r
2624       childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());\r
2625 \r
2626       if (position == 'top' || position == 'after') childNodes.reverse();\r
2627       childNodes.each(insert.curry(element));\r
2628 \r
2629       content.evalScripts.bind(content).defer();\r
2630     }\r
2631 \r
2632     return element;\r
2633   },\r
2634 \r
2635   wrap: function(element, wrapper, attributes) {\r
2636     element = $(element);\r
2637     if (Object.isElement(wrapper))\r
2638       $(wrapper).writeAttribute(attributes || { });\r
2639     else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);\r
2640     else wrapper = new Element('div', wrapper);\r
2641     if (element.parentNode)\r
2642       element.parentNode.replaceChild(wrapper, element);\r
2643     wrapper.appendChild(element);\r
2644     return wrapper;\r
2645   },\r
2646 \r
2647   inspect: function(element) {\r
2648     element = $(element);\r
2649     var result = '<' + element.tagName.toLowerCase();\r
2650     $H({'id': 'id', 'className': 'class'}).each(function(pair) {\r
2651       var property = pair.first(),\r
2652           attribute = pair.last(),\r
2653           value = (element[property] || '').toString();\r
2654       if (value) result += ' ' + attribute + '=' + value.inspect(true);\r
2655     });\r
2656     return result + '>';\r
2657   },\r
2658 \r
2659   recursivelyCollect: function(element, property, maximumLength) {\r
2660     element = $(element);\r
2661     maximumLength = maximumLength || -1;\r
2662     var elements = [];\r
2663 \r
2664     while (element = element[property]) {\r
2665       if (element.nodeType == 1)\r
2666         elements.push(Element.extend(element));\r
2667       if (elements.length == maximumLength)\r
2668         break;\r
2669     }\r
2670 \r
2671     return elements;\r
2672   },\r
2673 \r
2674   ancestors: function(element) {\r
2675     return Element.recursivelyCollect(element, 'parentNode');\r
2676   },\r
2677 \r
2678   descendants: function(element) {\r
2679     return Element.select(element, "*");\r
2680   },\r
2681 \r
2682   firstDescendant: function(element) {\r
2683     element = $(element).firstChild;\r
2684     while (element && element.nodeType != 1) element = element.nextSibling;\r
2685     return $(element);\r
2686   },\r
2687 \r
2688   immediateDescendants: function(element) {\r
2689     var results = [], child = $(element).firstChild;\r
2690     while (child) {\r
2691       if (child.nodeType === 1) {\r
2692         results.push(Element.extend(child));\r
2693       }\r
2694       child = child.nextSibling;\r
2695     }\r
2696     return results;\r
2697   },\r
2698 \r
2699   previousSiblings: function(element, maximumLength) {\r
2700     return Element.recursivelyCollect(element, 'previousSibling');\r
2701   },\r
2702 \r
2703   nextSiblings: function(element) {\r
2704     return Element.recursivelyCollect(element, 'nextSibling');\r
2705   },\r
2706 \r
2707   siblings: function(element) {\r
2708     element = $(element);\r
2709     return Element.previousSiblings(element).reverse()\r
2710       .concat(Element.nextSiblings(element));\r
2711   },\r
2712 \r
2713   match: function(element, selector) {\r
2714     element = $(element);\r
2715     if (Object.isString(selector))\r
2716       return Prototype.Selector.match(element, selector);\r
2717     return selector.match(element);\r
2718   },\r
2719 \r
2720   up: function(element, expression, index) {\r
2721     element = $(element);\r
2722     if (arguments.length == 1) return $(element.parentNode);\r
2723     var ancestors = Element.ancestors(element);\r
2724     return Object.isNumber(expression) ? ancestors[expression] :\r
2725       Prototype.Selector.find(ancestors, expression, index);\r
2726   },\r
2727 \r
2728   down: function(element, expression, index) {\r
2729     element = $(element);\r
2730     if (arguments.length == 1) return Element.firstDescendant(element);\r
2731     return Object.isNumber(expression) ? Element.descendants(element)[expression] :\r
2732       Element.select(element, expression)[index || 0];\r
2733   },\r
2734 \r
2735   previous: function(element, expression, index) {\r
2736     element = $(element);\r
2737     if (Object.isNumber(expression)) index = expression, expression = false;\r
2738     if (!Object.isNumber(index)) index = 0;\r
2739 \r
2740     if (expression) {\r
2741       return Prototype.Selector.find(element.previousSiblings(), expression, index);\r
2742     } else {\r
2743       return element.recursivelyCollect("previousSibling", index + 1)[index];\r
2744     }\r
2745   },\r
2746 \r
2747   next: function(element, expression, index) {\r
2748     element = $(element);\r
2749     if (Object.isNumber(expression)) index = expression, expression = false;\r
2750     if (!Object.isNumber(index)) index = 0;\r
2751 \r
2752     if (expression) {\r
2753       return Prototype.Selector.find(element.nextSiblings(), expression, index);\r
2754     } else {\r
2755       var maximumLength = Object.isNumber(index) ? index + 1 : 1;\r
2756       return element.recursivelyCollect("nextSibling", index + 1)[index];\r
2757     }\r
2758   },\r
2759 \r
2760 \r
2761   select: function(element) {\r
2762     element = $(element);\r
2763     var expressions = Array.prototype.slice.call(arguments, 1).join(', ');\r
2764     return Prototype.Selector.select(expressions, element);\r
2765   },\r
2766 \r
2767   adjacent: function(element) {\r
2768     element = $(element);\r
2769     var expressions = Array.prototype.slice.call(arguments, 1).join(', ');\r
2770     return Prototype.Selector.select(expressions, element.parentNode).without(element);\r
2771   },\r
2772 \r
2773   identify: function(element) {\r
2774     element = $(element);\r
2775     var id = Element.readAttribute(element, 'id');\r
2776     if (id) return id;\r
2777     do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id));\r
2778     Element.writeAttribute(element, 'id', id);\r
2779     return id;\r
2780   },\r
2781 \r
2782   readAttribute: function(element, name) {\r
2783     element = $(element);\r
2784     if (Prototype.Browser.IE) {\r
2785       var t = Element._attributeTranslations.read;\r
2786       if (t.values[name]) return t.values[name](element, name);\r
2787       if (t.names[name]) name = t.names[name];\r
2788       if (name.include(':')) {\r
2789         return (!element.attributes || !element.attributes[name]) ? null :\r
2790          element.attributes[name].value;\r
2791       }\r
2792     }\r
2793     return element.getAttribute(name);\r
2794   },\r
2795 \r
2796   writeAttribute: function(element, name, value) {\r
2797     element = $(element);\r
2798     var attributes = { }, t = Element._attributeTranslations.write;\r
2799 \r
2800     if (typeof name == 'object') attributes = name;\r
2801     else attributes[name] = Object.isUndefined(value) ? true : value;\r
2802 \r
2803     for (var attr in attributes) {\r
2804       name = t.names[attr] || attr;\r
2805       value = attributes[attr];\r
2806       if (t.values[attr]) name = t.values[attr](element, value);\r
2807       if (value === false || value === null)\r
2808         element.removeAttribute(name);\r
2809       else if (value === true)\r
2810         element.setAttribute(name, name);\r
2811       else element.setAttribute(name, value);\r
2812     }\r
2813     return element;\r
2814   },\r
2815 \r
2816   getHeight: function(element) {\r
2817     return Element.getDimensions(element).height;\r
2818   },\r
2819 \r
2820   getWidth: function(element) {\r
2821     return Element.getDimensions(element).width;\r
2822   },\r
2823 \r
2824   classNames: function(element) {\r
2825     return new Element.ClassNames(element);\r
2826   },\r
2827 \r
2828   hasClassName: function(element, className) {\r
2829     if (!(element = $(element))) return;\r
2830     var elementClassName = element.className;\r
2831     return (elementClassName.length > 0 && (elementClassName == className ||\r
2832       new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));\r
2833   },\r
2834 \r
2835   addClassName: function(element, className) {\r
2836     if (!(element = $(element))) return;\r
2837     if (!Element.hasClassName(element, className))\r
2838       element.className += (element.className ? ' ' : '') + className;\r
2839     return element;\r
2840   },\r
2841 \r
2842   removeClassName: function(element, className) {\r
2843     if (!(element = $(element))) return;\r
2844     element.className = element.className.replace(\r
2845       new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();\r
2846     return element;\r
2847   },\r
2848 \r
2849   toggleClassName: function(element, className) {\r
2850     if (!(element = $(element))) return;\r
2851     return Element[Element.hasClassName(element, className) ?\r
2852       'removeClassName' : 'addClassName'](element, className);\r
2853   },\r
2854 \r
2855   cleanWhitespace: function(element) {\r
2856     element = $(element);\r
2857     var node = element.firstChild;\r
2858     while (node) {\r
2859       var nextNode = node.nextSibling;\r
2860       if (node.nodeType == 3 && !/\S/.test(node.nodeValue))\r
2861         element.removeChild(node);\r
2862       node = nextNode;\r
2863     }\r
2864     return element;\r
2865   },\r
2866 \r
2867   empty: function(element) {\r
2868     return $(element).innerHTML.blank();\r
2869   },\r
2870 \r
2871   descendantOf: function(element, ancestor) {\r
2872     element = $(element), ancestor = $(ancestor);\r
2873 \r
2874     if (element.compareDocumentPosition)\r
2875       return (element.compareDocumentPosition(ancestor) & 8) === 8;\r
2876 \r
2877     if (ancestor.contains)\r
2878       return ancestor.contains(element) && ancestor !== element;\r
2879 \r
2880     while (element = element.parentNode)\r
2881       if (element == ancestor) return true;\r
2882 \r
2883     return false;\r
2884   },\r
2885 \r
2886   scrollTo: function(element) {\r
2887     element = $(element);\r
2888     var pos = Element.cumulativeOffset(element);\r
2889     window.scrollTo(pos[0], pos[1]);\r
2890     return element;\r
2891   },\r
2892 \r
2893   getStyle: function(element, style) {\r
2894     element = $(element);\r
2895     style = style == 'float' ? 'cssFloat' : style.camelize();\r
2896     var value = element.style[style];\r
2897     if (!value || value == 'auto') {\r
2898       var css = document.defaultView.getComputedStyle(element, null);\r
2899       value = css ? css[style] : null;\r
2900     }\r
2901     if (style == 'opacity') return value ? parseFloat(value) : 1.0;\r
2902     return value == 'auto' ? null : value;\r
2903   },\r
2904 \r
2905   getOpacity: function(element) {\r
2906     return $(element).getStyle('opacity');\r
2907   },\r
2908 \r
2909   setStyle: function(element, styles) {\r
2910     element = $(element);\r
2911     var elementStyle = element.style, match;\r
2912     if (Object.isString(styles)) {\r
2913       element.style.cssText += ';' + styles;\r
2914       return styles.include('opacity') ?\r
2915         element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;\r
2916     }\r
2917     for (var property in styles)\r
2918       if (property == 'opacity') element.setOpacity(styles[property]);\r
2919       else\r
2920         elementStyle[(property == 'float' || property == 'cssFloat') ?\r
2921           (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :\r
2922             property] = styles[property];\r
2923 \r
2924     return element;\r
2925   },\r
2926 \r
2927   setOpacity: function(element, value) {\r
2928     element = $(element);\r
2929     element.style.opacity = (value == 1 || value === '') ? '' :\r
2930       (value < 0.00001) ? 0 : value;\r
2931     return element;\r
2932   },\r
2933 \r
2934   makePositioned: function(element) {\r
2935     element = $(element);\r
2936     var pos = Element.getStyle(element, 'position');\r
2937     if (pos == 'static' || !pos) {\r
2938       element._madePositioned = true;\r
2939       element.style.position = 'relative';\r
2940       if (Prototype.Browser.Opera) {\r
2941         element.style.top = 0;\r
2942         element.style.left = 0;\r
2943       }\r
2944     }\r
2945     return element;\r
2946   },\r
2947 \r
2948   undoPositioned: function(element) {\r
2949     element = $(element);\r
2950     if (element._madePositioned) {\r
2951       element._madePositioned = undefined;\r
2952       element.style.position =\r
2953         element.style.top =\r
2954         element.style.left =\r
2955         element.style.bottom =\r
2956         element.style.right = '';\r
2957     }\r
2958     return element;\r
2959   },\r
2960 \r
2961   makeClipping: function(element) {\r
2962     element = $(element);\r
2963     if (element._overflow) return element;\r
2964     element._overflow = Element.getStyle(element, 'overflow') || 'auto';\r
2965     if (element._overflow !== 'hidden')\r
2966       element.style.overflow = 'hidden';\r
2967     return element;\r
2968   },\r
2969 \r
2970   undoClipping: function(element) {\r
2971     element = $(element);\r
2972     if (!element._overflow) return element;\r
2973     element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;\r
2974     element._overflow = null;\r
2975     return element;\r
2976   },\r
2977 \r
2978   clonePosition: function(element, source) {\r
2979     var options = Object.extend({\r
2980       setLeft:    true,\r
2981       setTop:     true,\r
2982       setWidth:   true,\r
2983       setHeight:  true,\r
2984       offsetTop:  0,\r
2985       offsetLeft: 0\r
2986     }, arguments[2] || { });\r
2987 \r
2988     source = $(source);\r
2989     var p = Element.viewportOffset(source), delta = [0, 0], parent = null;\r
2990 \r
2991     element = $(element);\r
2992 \r
2993     if (Element.getStyle(element, 'position') == 'absolute') {\r
2994       parent = Element.getOffsetParent(element);\r
2995       delta = Element.viewportOffset(parent);\r
2996     }\r
2997 \r
2998     if (parent == document.body) {\r
2999       delta[0] -= document.body.offsetLeft;\r
3000       delta[1] -= document.body.offsetTop;\r
3001     }\r
3002 \r
3003     if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';\r
3004     if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';\r
3005     if (options.setWidth)  element.style.width = source.offsetWidth + 'px';\r
3006     if (options.setHeight) element.style.height = source.offsetHeight + 'px';\r
3007     return element;\r
3008   }\r
3009 };\r
3010 \r
3011 Object.extend(Element.Methods, {\r
3012   getElementsBySelector: Element.Methods.select,\r
3013 \r
3014   childElements: Element.Methods.immediateDescendants\r
3015 });\r
3016 \r
3017 Element._attributeTranslations = {\r
3018   write: {\r
3019     names: {\r
3020       className: 'class',\r
3021       htmlFor:   'for'\r
3022     },\r
3023     values: { }\r
3024   }\r
3025 };\r
3026 \r
3027 if (Prototype.Browser.Opera) {\r
3028   Element.Methods.getStyle = Element.Methods.getStyle.wrap(\r
3029     function(proceed, element, style) {\r
3030       switch (style) {\r
3031         case 'height': case 'width':\r
3032           if (!Element.visible(element)) return null;\r
3033 \r
3034           var dim = parseInt(proceed(element, style), 10);\r
3035 \r
3036           if (dim !== element['offset' + style.capitalize()])\r
3037             return dim + 'px';\r
3038 \r
3039           var properties;\r
3040           if (style === 'height') {\r
3041             properties = ['border-top-width', 'padding-top',\r
3042              'padding-bottom', 'border-bottom-width'];\r
3043           }\r
3044           else {\r
3045             properties = ['border-left-width', 'padding-left',\r
3046              'padding-right', 'border-right-width'];\r
3047           }\r
3048           return properties.inject(dim, function(memo, property) {\r
3049             var val = proceed(element, property);\r
3050             return val === null ? memo : memo - parseInt(val, 10);\r
3051           }) + 'px';\r
3052         default: return proceed(element, style);\r
3053       }\r
3054     }\r
3055   );\r
3056 \r
3057   Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(\r
3058     function(proceed, element, attribute) {\r
3059       if (attribute === 'title') return element.title;\r
3060       return proceed(element, attribute);\r
3061     }\r
3062   );\r
3063 }\r
3064 \r
3065 else if (Prototype.Browser.IE) {\r
3066   Element.Methods.getStyle = function(element, style) {\r
3067     element = $(element);\r
3068     style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();\r
3069     var value = element.style[style];\r
3070     if (!value && element.currentStyle) value = element.currentStyle[style];\r
3071 \r
3072     if (style == 'opacity') {\r
3073       if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))\r
3074         if (value[1]) return parseFloat(value[1]) / 100;\r
3075       return 1.0;\r
3076     }\r
3077 \r
3078     if (value == 'auto') {\r
3079       if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))\r
3080         return element['offset' + style.capitalize()] + 'px';\r
3081       return null;\r
3082     }\r
3083     return value;\r
3084   };\r
3085 \r
3086   Element.Methods.setOpacity = function(element, value) {\r
3087     function stripAlpha(filter){\r
3088       return filter.replace(/alpha\([^\)]*\)/gi,'');\r
3089     }\r
3090     element = $(element);\r
3091     var currentStyle = element.currentStyle;\r
3092     if ((currentStyle && !currentStyle.hasLayout) ||\r
3093       (!currentStyle && element.style.zoom == 'normal'))\r
3094         element.style.zoom = 1;\r
3095 \r
3096     var filter = element.getStyle('filter'), style = element.style;\r
3097     if (value == 1 || value === '') {\r
3098       (filter = stripAlpha(filter)) ?\r
3099         style.filter = filter : style.removeAttribute('filter');\r
3100       return element;\r
3101     } else if (value < 0.00001) value = 0;\r
3102     style.filter = stripAlpha(filter) +\r
3103       'alpha(opacity=' + (value * 100) + ')';\r
3104     return element;\r
3105   };\r
3106 \r
3107   Element._attributeTranslations = (function(){\r
3108 \r
3109     var classProp = 'className',\r
3110         forProp = 'for',\r
3111         el = document.createElement('div');\r
3112 \r
3113     el.setAttribute(classProp, 'x');\r
3114 \r
3115     if (el.className !== 'x') {\r
3116       el.setAttribute('class', 'x');\r
3117       if (el.className === 'x') {\r
3118         classProp = 'class';\r
3119       }\r
3120     }\r
3121     el = null;\r
3122 \r
3123     el = document.createElement('label');\r
3124     el.setAttribute(forProp, 'x');\r
3125     if (el.htmlFor !== 'x') {\r
3126       el.setAttribute('htmlFor', 'x');\r
3127       if (el.htmlFor === 'x') {\r
3128         forProp = 'htmlFor';\r
3129       }\r
3130     }\r
3131     el = null;\r
3132 \r
3133     return {\r
3134       read: {\r
3135         names: {\r
3136           'class':      classProp,\r
3137           'className':  classProp,\r
3138           'for':        forProp,\r
3139           'htmlFor':    forProp\r
3140         },\r
3141         values: {\r
3142           _getAttr: function(element, attribute) {\r
3143             return element.getAttribute(attribute);\r
3144           },\r
3145           _getAttr2: function(element, attribute) {\r
3146             return element.getAttribute(attribute, 2);\r
3147           },\r
3148           _getAttrNode: function(element, attribute) {\r
3149             var node = element.getAttributeNode(attribute);\r
3150             return node ? node.value : "";\r
3151           },\r
3152           _getEv: (function(){\r
3153 \r
3154             var el = document.createElement('div'), f;\r
3155             el.onclick = Prototype.emptyFunction;\r
3156             var value = el.getAttribute('onclick');\r
3157 \r
3158             if (String(value).indexOf('{') > -1) {\r
3159               f = function(element, attribute) {\r
3160                 attribute = element.getAttribute(attribute);\r
3161                 if (!attribute) return null;\r
3162                 attribute = attribute.toString();\r
3163                 attribute = attribute.split('{')[1];\r
3164                 attribute = attribute.split('}')[0];\r
3165                 return attribute.strip();\r
3166               };\r
3167             }\r
3168             else if (value === '') {\r
3169               f = function(element, attribute) {\r
3170                 attribute = element.getAttribute(attribute);\r
3171                 if (!attribute) return null;\r
3172                 return attribute.strip();\r
3173               };\r
3174             }\r
3175             el = null;\r
3176             return f;\r
3177           })(),\r
3178           _flag: function(element, attribute) {\r
3179             return $(element).hasAttribute(attribute) ? attribute : null;\r
3180           },\r
3181           style: function(element) {\r
3182             return element.style.cssText.toLowerCase();\r
3183           },\r
3184           title: function(element) {\r
3185             return element.title;\r
3186           }\r
3187         }\r
3188       }\r
3189     }\r
3190   })();\r
3191 \r
3192   Element._attributeTranslations.write = {\r
3193     names: Object.extend({\r
3194       cellpadding: 'cellPadding',\r
3195       cellspacing: 'cellSpacing'\r
3196     }, Element._attributeTranslations.read.names),\r
3197     values: {\r
3198       checked: function(element, value) {\r
3199         element.checked = !!value;\r
3200       },\r
3201 \r
3202       style: function(element, value) {\r
3203         element.style.cssText = value ? value : '';\r
3204       }\r
3205     }\r
3206   };\r
3207 \r
3208   Element._attributeTranslations.has = {};\r
3209 \r
3210   $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +\r
3211       'encType maxLength readOnly longDesc frameBorder').each(function(attr) {\r
3212     Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;\r
3213     Element._attributeTranslations.has[attr.toLowerCase()] = attr;\r
3214   });\r
3215 \r
3216   (function(v) {\r
3217     Object.extend(v, {\r
3218       href:        v._getAttr2,\r
3219       src:         v._getAttr2,\r
3220       type:        v._getAttr,\r
3221       action:      v._getAttrNode,\r
3222       disabled:    v._flag,\r
3223       checked:     v._flag,\r
3224       readonly:    v._flag,\r
3225       multiple:    v._flag,\r
3226       onload:      v._getEv,\r
3227       onunload:    v._getEv,\r
3228       onclick:     v._getEv,\r
3229       ondblclick:  v._getEv,\r
3230       onmousedown: v._getEv,\r
3231       onmouseup:   v._getEv,\r
3232       onmouseover: v._getEv,\r
3233       onmousemove: v._getEv,\r
3234       onmouseout:  v._getEv,\r
3235       onfocus:     v._getEv,\r
3236       onblur:      v._getEv,\r
3237       onkeypress:  v._getEv,\r
3238       onkeydown:   v._getEv,\r
3239       onkeyup:     v._getEv,\r
3240       onsubmit:    v._getEv,\r
3241       onreset:     v._getEv,\r
3242       onselect:    v._getEv,\r
3243       onchange:    v._getEv\r
3244     });\r
3245   })(Element._attributeTranslations.read.values);\r
3246 \r
3247   if (Prototype.BrowserFeatures.ElementExtensions) {\r
3248     (function() {\r
3249       function _descendants(element) {\r
3250         var nodes = element.getElementsByTagName('*'), results = [];\r
3251         for (var i = 0, node; node = nodes[i]; i++)\r
3252           if (node.tagName !== "!") // Filter out comment nodes.\r
3253             results.push(node);\r
3254         return results;\r
3255       }\r
3256 \r
3257       Element.Methods.down = function(element, expression, index) {\r
3258         element = $(element);\r
3259         if (arguments.length == 1) return element.firstDescendant();\r
3260         return Object.isNumber(expression) ? _descendants(element)[expression] :\r
3261           Element.select(element, expression)[index || 0];\r
3262       }\r
3263     })();\r
3264   }\r
3265 \r
3266 }\r
3267 \r
3268 else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {\r
3269   Element.Methods.setOpacity = function(element, value) {\r
3270     element = $(element);\r
3271     element.style.opacity = (value == 1) ? 0.999999 :\r
3272       (value === '') ? '' : (value < 0.00001) ? 0 : value;\r
3273     return element;\r
3274   };\r
3275 }\r
3276 \r
3277 else if (Prototype.Browser.WebKit) {\r
3278   Element.Methods.setOpacity = function(element, value) {\r
3279     element = $(element);\r
3280     element.style.opacity = (value == 1 || value === '') ? '' :\r
3281       (value < 0.00001) ? 0 : value;\r
3282 \r
3283     if (value == 1)\r
3284       if (element.tagName.toUpperCase() == 'IMG' && element.width) {\r
3285         element.width++; element.width--;\r
3286       } else try {\r
3287         var n = document.createTextNode(' ');\r
3288         element.appendChild(n);\r
3289         element.removeChild(n);\r
3290       } catch (e) { }\r
3291 \r
3292     return element;\r
3293   };\r
3294 }\r
3295 \r
3296 if ('outerHTML' in document.documentElement) {\r
3297   Element.Methods.replace = function(element, content) {\r
3298     element = $(element);\r
3299 \r
3300     if (content && content.toElement) content = content.toElement();\r
3301     if (Object.isElement(content)) {\r
3302       element.parentNode.replaceChild(content, element);\r
3303       return element;\r
3304     }\r
3305 \r
3306     content = Object.toHTML(content);\r
3307     var parent = element.parentNode, tagName = parent.tagName.toUpperCase();\r
3308 \r
3309     if (Element._insertionTranslations.tags[tagName]) {\r
3310       var nextSibling = element.next(),\r
3311           fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());\r
3312       parent.removeChild(element);\r
3313       if (nextSibling)\r
3314         fragments.each(function(node) { parent.insertBefore(node, nextSibling) });\r
3315       else\r
3316         fragments.each(function(node) { parent.appendChild(node) });\r
3317     }\r
3318     else element.outerHTML = content.stripScripts();\r
3319 \r
3320     content.evalScripts.bind(content).defer();\r
3321     return element;\r
3322   };\r
3323 }\r
3324 \r
3325 Element._returnOffset = function(l, t) {\r
3326   var result = [l, t];\r
3327   result.left = l;\r
3328   result.top = t;\r
3329   return result;\r
3330 };\r
3331 \r
3332 Element._getContentFromAnonymousElement = function(tagName, html, force) {\r
3333   var div = new Element('div'),\r
3334       t = Element._insertionTranslations.tags[tagName];\r
3335 \r
3336   var workaround = false;\r
3337   if (t) workaround = true;\r
3338   else if (force) {\r
3339     workaround = true;\r
3340     t = ['', '', 0];\r
3341   }\r
3342 \r
3343   if (workaround) {\r
3344     div.innerHTML = '&nbsp;' + t[0] + html + t[1];\r
3345     div.removeChild(div.firstChild);\r
3346     for (var i = t[2]; i--; ) {\r
3347       div = div.firstChild;\r
3348     }\r
3349   }\r
3350   else {\r
3351     div.innerHTML = html;\r
3352   }\r
3353   return $A(div.childNodes);\r
3354 };\r
3355 \r
3356 Element._insertionTranslations = {\r
3357   before: function(element, node) {\r
3358     element.parentNode.insertBefore(node, element);\r
3359   },\r
3360   top: function(element, node) {\r
3361     element.insertBefore(node, element.firstChild);\r
3362   },\r
3363   bottom: function(element, node) {\r
3364     element.appendChild(node);\r
3365   },\r
3366   after: function(element, node) {\r
3367     element.parentNode.insertBefore(node, element.nextSibling);\r
3368   },\r
3369   tags: {\r
3370     TABLE:  ['<table>',                '</table>',                   1],\r
3371     TBODY:  ['<table><tbody>',         '</tbody></table>',           2],\r
3372     TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],\r
3373     TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],\r
3374     SELECT: ['<select>',               '</select>',                  1]\r
3375   }\r
3376 };\r
3377 \r
3378 (function() {\r
3379   var tags = Element._insertionTranslations.tags;\r
3380   Object.extend(tags, {\r
3381     THEAD: tags.TBODY,\r
3382     TFOOT: tags.TBODY,\r
3383     TH:    tags.TD\r
3384   });\r
3385 })();\r
3386 \r
3387 Element.Methods.Simulated = {\r
3388   hasAttribute: function(element, attribute) {\r
3389     attribute = Element._attributeTranslations.has[attribute] || attribute;\r
3390     var node = $(element).getAttributeNode(attribute);\r
3391     return !!(node && node.specified);\r
3392   }\r
3393 };\r
3394 \r
3395 Element.Methods.ByTag = { };\r
3396 \r
3397 Object.extend(Element, Element.Methods);\r
3398 \r
3399 (function(div) {\r
3400 \r
3401   if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {\r
3402     window.HTMLElement = { };\r
3403     window.HTMLElement.prototype = div['__proto__'];\r
3404     Prototype.BrowserFeatures.ElementExtensions = true;\r
3405   }\r
3406 \r
3407   div = null;\r
3408 \r
3409 })(document.createElement('div'));\r
3410 \r
3411 Element.extend = (function() {\r
3412 \r
3413   function checkDeficiency(tagName) {\r
3414     if (typeof window.Element != 'undefined') {\r
3415       var proto = window.Element.prototype;\r
3416       if (proto) {\r
3417         var id = '_' + (Math.random()+'').slice(2),\r
3418             el = document.createElement(tagName);\r
3419         proto[id] = 'x';\r
3420         var isBuggy = (el[id] !== 'x');\r
3421         delete proto[id];\r
3422         el = null;\r
3423         return isBuggy;\r
3424       }\r
3425     }\r
3426     return false;\r
3427   }\r
3428 \r
3429   function extendElementWith(element, methods) {\r
3430     for (var property in methods) {\r
3431       var value = methods[property];\r
3432       if (Object.isFunction(value) && !(property in element))\r
3433         element[property] = value.methodize();\r
3434     }\r
3435   }\r
3436 \r
3437   var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object');\r
3438 \r
3439   if (Prototype.BrowserFeatures.SpecificElementExtensions) {\r
3440     if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) {\r
3441       return function(element) {\r
3442         if (element && typeof element._extendedByPrototype == 'undefined') {\r
3443           var t = element.tagName;\r
3444           if (t && (/^(?:object|applet|embed)$/i.test(t))) {\r
3445             extendElementWith(element, Element.Methods);\r
3446             extendElementWith(element, Element.Methods.Simulated);\r
3447             extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]);\r
3448           }\r
3449         }\r
3450         return element;\r
3451       }\r
3452     }\r
3453     return Prototype.K;\r
3454   }\r
3455 \r
3456   var Methods = { }, ByTag = Element.Methods.ByTag;\r
3457 \r
3458   var extend = Object.extend(function(element) {\r
3459     if (!element || typeof element._extendedByPrototype != 'undefined' ||\r
3460         element.nodeType != 1 || element == window) return element;\r
3461 \r
3462     var methods = Object.clone(Methods),\r
3463         tagName = element.tagName.toUpperCase();\r
3464 \r
3465     if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);\r
3466 \r
3467     extendElementWith(element, methods);\r
3468 \r
3469     element._extendedByPrototype = Prototype.emptyFunction;\r
3470     return element;\r
3471 \r
3472   }, {\r
3473     refresh: function() {\r
3474       if (!Prototype.BrowserFeatures.ElementExtensions) {\r
3475         Object.extend(Methods, Element.Methods);\r
3476         Object.extend(Methods, Element.Methods.Simulated);\r
3477       }\r
3478     }\r
3479   });\r
3480 \r
3481   extend.refresh();\r
3482   return extend;\r
3483 })();\r
3484 \r
3485 if (document.documentElement.hasAttribute) {\r
3486   Element.hasAttribute = function(element, attribute) {\r
3487     return element.hasAttribute(attribute);\r
3488   };\r
3489 }\r
3490 else {\r
3491   Element.hasAttribute = Element.Methods.Simulated.hasAttribute;\r
3492 }\r
3493 \r
3494 Element.addMethods = function(methods) {\r
3495   var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;\r
3496 \r
3497   if (!methods) {\r
3498     Object.extend(Form, Form.Methods);\r
3499     Object.extend(Form.Element, Form.Element.Methods);\r
3500     Object.extend(Element.Methods.ByTag, {\r
3501       "FORM":     Object.clone(Form.Methods),\r
3502       "INPUT":    Object.clone(Form.Element.Methods),\r
3503       "SELECT":   Object.clone(Form.Element.Methods),\r
3504       "TEXTAREA": Object.clone(Form.Element.Methods),\r
3505       "BUTTON":   Object.clone(Form.Element.Methods)\r
3506     });\r
3507   }\r
3508 \r
3509   if (arguments.length == 2) {\r
3510     var tagName = methods;\r
3511     methods = arguments[1];\r
3512   }\r
3513 \r
3514   if (!tagName) Object.extend(Element.Methods, methods || { });\r
3515   else {\r
3516     if (Object.isArray(tagName)) tagName.each(extend);\r
3517     else extend(tagName);\r
3518   }\r
3519 \r
3520   function extend(tagName) {\r
3521     tagName = tagName.toUpperCase();\r
3522     if (!Element.Methods.ByTag[tagName])\r
3523       Element.Methods.ByTag[tagName] = { };\r
3524     Object.extend(Element.Methods.ByTag[tagName], methods);\r
3525   }\r
3526 \r
3527   function copy(methods, destination, onlyIfAbsent) {\r
3528     onlyIfAbsent = onlyIfAbsent || false;\r
3529     for (var property in methods) {\r
3530       var value = methods[property];\r
3531       if (!Object.isFunction(value)) continue;\r
3532       if (!onlyIfAbsent || !(property in destination))\r
3533         destination[property] = value.methodize();\r
3534     }\r
3535   }\r
3536 \r
3537   function findDOMClass(tagName) {\r
3538     var klass;\r
3539     var trans = {\r
3540       "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",\r
3541       "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",\r
3542       "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",\r
3543       "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",\r
3544       "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":\r
3545       "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":\r
3546       "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":\r
3547       "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":\r
3548       "FrameSet", "IFRAME": "IFrame"\r
3549     };\r
3550     if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';\r
3551     if (window[klass]) return window[klass];\r
3552     klass = 'HTML' + tagName + 'Element';\r
3553     if (window[klass]) return window[klass];\r
3554     klass = 'HTML' + tagName.capitalize() + 'Element';\r
3555     if (window[klass]) return window[klass];\r
3556 \r
3557     var element = document.createElement(tagName),\r
3558         proto = element['__proto__'] || element.constructor.prototype;\r
3559 \r
3560     element = null;\r
3561     return proto;\r
3562   }\r
3563 \r
3564   var elementPrototype = window.HTMLElement ? HTMLElement.prototype :\r
3565    Element.prototype;\r
3566 \r
3567   if (F.ElementExtensions) {\r
3568     copy(Element.Methods, elementPrototype);\r
3569     copy(Element.Methods.Simulated, elementPrototype, true);\r
3570   }\r
3571 \r
3572   if (F.SpecificElementExtensions) {\r
3573     for (var tag in Element.Methods.ByTag) {\r
3574       var klass = findDOMClass(tag);\r
3575       if (Object.isUndefined(klass)) continue;\r
3576       copy(T[tag], klass.prototype);\r
3577     }\r
3578   }\r
3579 \r
3580   Object.extend(Element, Element.Methods);\r
3581   delete Element.ByTag;\r
3582 \r
3583   if (Element.extend.refresh) Element.extend.refresh();\r
3584   Element.cache = { };\r
3585 };\r
3586 \r
3587 \r
3588 document.viewport = {\r
3589 \r
3590   getDimensions: function() {\r
3591     return { width: this.getWidth(), height: this.getHeight() };\r
3592   },\r
3593 \r
3594   getScrollOffsets: function() {\r
3595     return Element._returnOffset(\r
3596       window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,\r
3597       window.pageYOffset || document.documentElement.scrollTop  || document.body.scrollTop);\r
3598   }\r
3599 };\r
3600 \r
3601 (function(viewport) {\r
3602   var B = Prototype.Browser, doc = document, element, property = {};\r
3603 \r
3604   function getRootElement() {\r
3605     if (B.WebKit && !doc.evaluate)\r
3606       return document;\r
3607 \r
3608     if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)\r
3609       return document.body;\r
3610 \r
3611     return document.documentElement;\r
3612   }\r
3613 \r
3614   function define(D) {\r
3615     if (!element) element = getRootElement();\r
3616 \r
3617     property[D] = 'client' + D;\r
3618 \r
3619     viewport['get' + D] = function() { return element[property[D]] };\r
3620     return viewport['get' + D]();\r
3621   }\r
3622 \r
3623   viewport.getWidth  = define.curry('Width');\r
3624 \r
3625   viewport.getHeight = define.curry('Height');\r
3626 })(document.viewport);\r
3627 \r
3628 \r
3629 Element.Storage = {\r
3630   UID: 1\r
3631 };\r
3632 \r
3633 Element.addMethods({\r
3634   getStorage: function(element) {\r
3635     if (!(element = $(element))) return;\r
3636 \r
3637     var uid;\r
3638     if (element === window) {\r
3639       uid = 0;\r
3640     } else {\r
3641       if (typeof element._prototypeUID === "undefined")\r
3642         element._prototypeUID = Element.Storage.UID++;\r
3643       uid = element._prototypeUID;\r
3644     }\r
3645 \r
3646     if (!Element.Storage[uid])\r
3647       Element.Storage[uid] = $H();\r
3648 \r
3649     return Element.Storage[uid];\r
3650   },\r
3651 \r
3652   store: function(element, key, value) {\r
3653     if (!(element = $(element))) return;\r
3654 \r
3655     if (arguments.length === 2) {\r
3656       Element.getStorage(element).update(key);\r
3657     } else {\r
3658       Element.getStorage(element).set(key, value);\r
3659     }\r
3660 \r
3661     return element;\r
3662   },\r
3663 \r
3664   retrieve: function(element, key, defaultValue) {\r
3665     if (!(element = $(element))) return;\r
3666     var hash = Element.getStorage(element), value = hash.get(key);\r
3667 \r
3668     if (Object.isUndefined(value)) {\r
3669       hash.set(key, defaultValue);\r
3670       value = defaultValue;\r
3671     }\r
3672 \r
3673     return value;\r
3674   },\r
3675 \r
3676   clone: function(element, deep) {\r
3677     if (!(element = $(element))) return;\r
3678     var clone = element.cloneNode(deep);\r
3679     clone._prototypeUID = void 0;\r
3680     if (deep) {\r
3681       var descendants = Element.select(clone, '*'),\r
3682           i = descendants.length;\r
3683       while (i--) {\r
3684         descendants[i]._prototypeUID = void 0;\r
3685       }\r
3686     }\r
3687     return Element.extend(clone);\r
3688   },\r
3689 \r
3690   purge: function(element) {\r
3691     if (!(element = $(element))) return;\r
3692     var purgeElement = Element._purgeElement;\r
3693 \r
3694     purgeElement(element);\r
3695 \r
3696     var descendants = element.getElementsByTagName('*'),\r
3697      i = descendants.length;\r
3698 \r
3699     while (i--) purgeElement(descendants[i]);\r
3700 \r
3701     return null;\r
3702   }\r
3703 });\r
3704 \r
3705 (function() {\r
3706 \r
3707   function toDecimal(pctString) {\r
3708     var match = pctString.match(/^(\d+)%?$/i);\r
3709     if (!match) return null;\r
3710     return (Number(match[1]) / 100);\r
3711   }\r
3712 \r
3713   function getPixelValue(value, property, context) {\r
3714     var element = null;\r
3715     if (Object.isElement(value)) {\r
3716       element = value;\r
3717       value = element.getStyle(property);\r
3718     }\r
3719 \r
3720     if (value === null) {\r
3721       return null;\r
3722     }\r
3723 \r
3724     if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) {\r
3725       return window.parseFloat(value);\r
3726     }\r
3727 \r
3728     var isPercentage = value.include('%'), isViewport = (context === document.viewport);\r
3729 \r
3730     if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) {\r
3731       var style = element.style.left, rStyle = element.runtimeStyle.left;\r
3732       element.runtimeStyle.left = element.currentStyle.left;\r
3733       element.style.left = value || 0;\r
3734       value = element.style.pixelLeft;\r
3735       element.style.left = style;\r
3736       element.runtimeStyle.left = rStyle;\r
3737 \r
3738       return value;\r
3739     }\r
3740 \r
3741     if (element && isPercentage) {\r
3742       context = context || element.parentNode;\r
3743       var decimal = toDecimal(value);\r
3744       var whole = null;\r
3745       var position = element.getStyle('position');\r
3746 \r
3747       var isHorizontal = property.include('left') || property.include('right') ||\r
3748        property.include('width');\r
3749 \r
3750       var isVertical =  property.include('top') || property.include('bottom') ||\r
3751         property.include('height');\r
3752 \r
3753       if (context === document.viewport) {\r
3754         if (isHorizontal) {\r
3755           whole = document.viewport.getWidth();\r
3756         } else if (isVertical) {\r
3757           whole = document.viewport.getHeight();\r
3758         }\r
3759       } else {\r
3760         if (isHorizontal) {\r
3761           whole = $(context).measure('width');\r
3762         } else if (isVertical) {\r
3763           whole = $(context).measure('height');\r
3764         }\r
3765       }\r
3766 \r
3767       return (whole === null) ? 0 : whole * decimal;\r
3768     }\r
3769 \r
3770     return 0;\r
3771   }\r
3772 \r
3773   function toCSSPixels(number) {\r
3774     if (Object.isString(number) && number.endsWith('px')) {\r
3775       return number;\r
3776     }\r
3777     return number + 'px';\r
3778   }\r
3779 \r
3780   function isDisplayed(element) {\r
3781     var originalElement = element;\r
3782     while (element && element.parentNode) {\r
3783       var display = element.getStyle('display');\r
3784       if (display === 'none') {\r
3785         return false;\r
3786       }\r
3787       element = $(element.parentNode);\r
3788     }\r
3789     return true;\r
3790   }\r
3791 \r
3792   var hasLayout = Prototype.K;\r
3793   if ('currentStyle' in document.documentElement) {\r
3794     hasLayout = function(element) {\r
3795       if (!element.currentStyle.hasLayout) {\r
3796         element.style.zoom = 1;\r
3797       }\r
3798       return element;\r
3799     };\r
3800   }\r
3801 \r
3802   function cssNameFor(key) {\r
3803     if (key.include('border')) key = key + '-width';\r
3804     return key.camelize();\r
3805   }\r
3806 \r
3807   Element.Layout = Class.create(Hash, {\r
3808     initialize: function($super, element, preCompute) {\r
3809       $super();\r
3810       this.element = $(element);\r
3811 \r
3812       Element.Layout.PROPERTIES.each( function(property) {\r
3813         this._set(property, null);\r
3814       }, this);\r
3815 \r
3816       if (preCompute) {\r
3817         this._preComputing = true;\r
3818         this._begin();\r
3819         Element.Layout.PROPERTIES.each( this._compute, this );\r
3820         this._end();\r
3821         this._preComputing = false;\r
3822       }\r
3823     },\r
3824 \r
3825     _set: function(property, value) {\r
3826       return Hash.prototype.set.call(this, property, value);\r
3827     },\r
3828 \r
3829     set: function(property, value) {\r
3830       throw "Properties of Element.Layout are read-only.";\r
3831     },\r
3832 \r
3833     get: function($super, property) {\r
3834       var value = $super(property);\r
3835       return value === null ? this._compute(property) : value;\r
3836     },\r
3837 \r
3838     _begin: function() {\r
3839       if (this._prepared) return;\r
3840 \r
3841       var element = this.element;\r
3842       if (isDisplayed(element)) {\r
3843         this._prepared = true;\r
3844         return;\r
3845       }\r
3846 \r
3847       var originalStyles = {\r
3848         position:   element.style.position   || '',\r
3849         width:      element.style.width      || '',\r
3850         visibility: element.style.visibility || '',\r
3851         display:    element.style.display    || ''\r
3852       };\r
3853 \r
3854       element.store('prototype_original_styles', originalStyles);\r
3855 \r
3856       var position = element.getStyle('position'),\r
3857        width = element.getStyle('width');\r
3858 \r
3859       if (width === "0px" || width === null) {\r
3860         element.style.display = 'block';\r
3861         width = element.getStyle('width');\r
3862       }\r
3863 \r
3864       var context = (position === 'fixed') ? document.viewport :\r
3865        element.parentNode;\r
3866 \r
3867       element.setStyle({\r
3868         position:   'absolute',\r
3869         visibility: 'hidden',\r
3870         display:    'block'\r
3871       });\r
3872 \r
3873       var positionedWidth = element.getStyle('width');\r
3874 \r
3875       var newWidth;\r
3876       if (width && (positionedWidth === width)) {\r
3877         newWidth = getPixelValue(element, 'width', context);\r
3878       } else if (position === 'absolute' || position === 'fixed') {\r
3879         newWidth = getPixelValue(element, 'width', context);\r
3880       } else {\r
3881         var parent = element.parentNode, pLayout = $(parent).getLayout();\r
3882 \r
3883         newWidth = pLayout.get('width') -\r
3884          this.get('margin-left') -\r
3885          this.get('border-left') -\r
3886          this.get('padding-left') -\r
3887          this.get('padding-right') -\r
3888          this.get('border-right') -\r
3889          this.get('margin-right');\r
3890       }\r
3891 \r
3892       element.setStyle({ width: newWidth + 'px' });\r
3893 \r
3894       this._prepared = true;\r
3895     },\r
3896 \r
3897     _end: function() {\r
3898       var element = this.element;\r
3899       var originalStyles = element.retrieve('prototype_original_styles');\r
3900       element.store('prototype_original_styles', null);\r
3901       element.setStyle(originalStyles);\r
3902       this._prepared = false;\r
3903     },\r
3904 \r
3905     _compute: function(property) {\r
3906       var COMPUTATIONS = Element.Layout.COMPUTATIONS;\r
3907       if (!(property in COMPUTATIONS)) {\r
3908         throw "Property not found.";\r
3909       }\r
3910 \r
3911       return this._set(property, COMPUTATIONS[property].call(this, this.element));\r
3912     },\r
3913 \r
3914     toObject: function() {\r
3915       var args = $A(arguments);\r
3916       var keys = (args.length === 0) ? Element.Layout.PROPERTIES :\r
3917        args.join(' ').split(' ');\r
3918       var obj = {};\r
3919       keys.each( function(key) {\r
3920         if (!Element.Layout.PROPERTIES.include(key)) return;\r
3921         var value = this.get(key);\r
3922         if (value != null) obj[key] = value;\r
3923       }, this);\r
3924       return obj;\r
3925     },\r
3926 \r
3927     toHash: function() {\r
3928       var obj = this.toObject.apply(this, arguments);\r
3929       return new Hash(obj);\r
3930     },\r
3931 \r
3932     toCSS: function() {\r
3933       var args = $A(arguments);\r
3934       var keys = (args.length === 0) ? Element.Layout.PROPERTIES :\r
3935        args.join(' ').split(' ');\r
3936       var css = {};\r
3937 \r
3938       keys.each( function(key) {\r
3939         if (!Element.Layout.PROPERTIES.include(key)) return;\r
3940         if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return;\r
3941 \r
3942         var value = this.get(key);\r
3943         if (value != null) css[cssNameFor(key)] = value + 'px';\r
3944       }, this);\r
3945       return css;\r
3946     },\r
3947 \r
3948     inspect: function() {\r
3949       return "#<Element.Layout>";\r
3950     }\r
3951   });\r
3952 \r
3953   Object.extend(Element.Layout, {\r
3954     PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'),\r
3955 \r
3956     COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'),\r
3957 \r
3958     COMPUTATIONS: {\r
3959       'height': function(element) {\r
3960         if (!this._preComputing) this._begin();\r
3961 \r
3962         var bHeight = this.get('border-box-height');\r
3963         if (bHeight <= 0) {\r
3964           if (!this._preComputing) this._end();\r
3965           return 0;\r
3966         }\r
3967 \r
3968         var bTop = this.get('border-top'),\r
3969          bBottom = this.get('border-bottom');\r
3970 \r
3971         var pTop = this.get('padding-top'),\r
3972          pBottom = this.get('padding-bottom');\r
3973 \r
3974         if (!this._preComputing) this._end();\r
3975 \r
3976         return bHeight - bTop - bBottom - pTop - pBottom;\r
3977       },\r
3978 \r
3979       'width': function(element) {\r
3980         if (!this._preComputing) this._begin();\r
3981 \r
3982         var bWidth = this.get('border-box-width');\r
3983         if (bWidth <= 0) {\r
3984           if (!this._preComputing) this._end();\r
3985           return 0;\r
3986         }\r
3987 \r
3988         var bLeft = this.get('border-left'),\r
3989          bRight = this.get('border-right');\r
3990 \r
3991         var pLeft = this.get('padding-left'),\r
3992          pRight = this.get('padding-right');\r
3993 \r
3994         if (!this._preComputing) this._end();\r
3995 \r
3996         return bWidth - bLeft - bRight - pLeft - pRight;\r
3997       },\r
3998 \r
3999       'padding-box-height': function(element) {\r
4000         var height = this.get('height'),\r
4001          pTop = this.get('padding-top'),\r
4002          pBottom = this.get('padding-bottom');\r
4003 \r
4004         return height + pTop + pBottom;\r
4005       },\r
4006 \r
4007       'padding-box-width': function(element) {\r
4008         var width = this.get('width'),\r
4009          pLeft = this.get('padding-left'),\r
4010          pRight = this.get('padding-right');\r
4011 \r
4012         return width + pLeft + pRight;\r
4013       },\r
4014 \r
4015       'border-box-height': function(element) {\r
4016         if (!this._preComputing) this._begin();\r
4017         var height = element.offsetHeight;\r
4018         if (!this._preComputing) this._end();\r
4019         return height;\r
4020       },\r
4021 \r
4022       'border-box-width': function(element) {\r
4023         if (!this._preComputing) this._begin();\r
4024         var width = element.offsetWidth;\r
4025         if (!this._preComputing) this._end();\r
4026         return width;\r
4027       },\r
4028 \r
4029       'margin-box-height': function(element) {\r
4030         var bHeight = this.get('border-box-height'),\r
4031          mTop = this.get('margin-top'),\r
4032          mBottom = this.get('margin-bottom');\r
4033 \r
4034         if (bHeight <= 0) return 0;\r
4035 \r
4036         return bHeight + mTop + mBottom;\r
4037       },\r
4038 \r
4039       'margin-box-width': function(element) {\r
4040         var bWidth = this.get('border-box-width'),\r
4041          mLeft = this.get('margin-left'),\r
4042          mRight = this.get('margin-right');\r
4043 \r
4044         if (bWidth <= 0) return 0;\r
4045 \r
4046         return bWidth + mLeft + mRight;\r
4047       },\r
4048 \r
4049       'top': function(element) {\r
4050         var offset = element.positionedOffset();\r
4051         return offset.top;\r
4052       },\r
4053 \r
4054       'bottom': function(element) {\r
4055         var offset = element.positionedOffset(),\r
4056          parent = element.getOffsetParent(),\r
4057          pHeight = parent.measure('height');\r
4058 \r
4059         var mHeight = this.get('border-box-height');\r
4060 \r
4061         return pHeight - mHeight - offset.top;\r
4062       },\r
4063 \r
4064       'left': function(element) {\r
4065         var offset = element.positionedOffset();\r
4066         return offset.left;\r
4067       },\r
4068 \r
4069       'right': function(element) {\r
4070         var offset = element.positionedOffset(),\r
4071          parent = element.getOffsetParent(),\r
4072          pWidth = parent.measure('width');\r
4073 \r
4074         var mWidth = this.get('border-box-width');\r
4075 \r
4076         return pWidth - mWidth - offset.left;\r
4077       },\r
4078 \r
4079       'padding-top': function(element) {\r
4080         return getPixelValue(element, 'paddingTop');\r
4081       },\r
4082 \r
4083       'padding-bottom': function(element) {\r
4084         return getPixelValue(element, 'paddingBottom');\r
4085       },\r
4086 \r
4087       'padding-left': function(element) {\r
4088         return getPixelValue(element, 'paddingLeft');\r
4089       },\r
4090 \r
4091       'padding-right': function(element) {\r
4092         return getPixelValue(element, 'paddingRight');\r
4093       },\r
4094 \r
4095       'border-top': function(element) {\r
4096         return getPixelValue(element, 'borderTopWidth');\r
4097       },\r
4098 \r
4099       'border-bottom': function(element) {\r
4100         return getPixelValue(element, 'borderBottomWidth');\r
4101       },\r
4102 \r
4103       'border-left': function(element) {\r
4104         return getPixelValue(element, 'borderLeftWidth');\r
4105       },\r
4106 \r
4107       'border-right': function(element) {\r
4108         return getPixelValue(element, 'borderRightWidth');\r
4109       },\r
4110 \r
4111       'margin-top': function(element) {\r
4112         return getPixelValue(element, 'marginTop');\r
4113       },\r
4114 \r
4115       'margin-bottom': function(element) {\r
4116         return getPixelValue(element, 'marginBottom');\r
4117       },\r
4118 \r
4119       'margin-left': function(element) {\r
4120         return getPixelValue(element, 'marginLeft');\r
4121       },\r
4122 \r
4123       'margin-right': function(element) {\r
4124         return getPixelValue(element, 'marginRight');\r
4125       }\r
4126     }\r
4127   });\r
4128 \r
4129   if ('getBoundingClientRect' in document.documentElement) {\r
4130     Object.extend(Element.Layout.COMPUTATIONS, {\r
4131       'right': function(element) {\r
4132         var parent = hasLayout(element.getOffsetParent());\r
4133         var rect = element.getBoundingClientRect(),\r
4134          pRect = parent.getBoundingClientRect();\r
4135 \r
4136         return (pRect.right - rect.right).round();\r
4137       },\r
4138 \r
4139       'bottom': function(element) {\r
4140         var parent = hasLayout(element.getOffsetParent());\r
4141         var rect = element.getBoundingClientRect(),\r
4142          pRect = parent.getBoundingClientRect();\r
4143 \r
4144         return (pRect.bottom - rect.bottom).round();\r
4145       }\r
4146     });\r
4147   }\r
4148 \r
4149   Element.Offset = Class.create({\r
4150     initialize: function(left, top) {\r
4151       this.left = left.round();\r
4152       this.top  = top.round();\r
4153 \r
4154       this[0] = this.left;\r
4155       this[1] = this.top;\r
4156     },\r
4157 \r
4158     relativeTo: function(offset) {\r
4159       return new Element.Offset(\r
4160         this.left - offset.left,\r
4161         this.top  - offset.top\r
4162       );\r
4163     },\r
4164 \r
4165     inspect: function() {\r
4166       return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this);\r
4167     },\r
4168 \r
4169     toString: function() {\r
4170       return "[#{left}, #{top}]".interpolate(this);\r
4171     },\r
4172 \r
4173     toArray: function() {\r
4174       return [this.left, this.top];\r
4175     }\r
4176   });\r
4177 \r
4178   function getLayout(element, preCompute) {\r
4179     return new Element.Layout(element, preCompute);\r
4180   }\r
4181 \r
4182   function measure(element, property) {\r
4183     return $(element).getLayout().get(property);\r
4184   }\r
4185 \r
4186   function getDimensions(element) {\r
4187     element = $(element);\r
4188     var display = Element.getStyle(element, 'display');\r
4189 \r
4190     if (display && display !== 'none') {\r
4191       return { width: element.offsetWidth, height: element.offsetHeight };\r
4192     }\r
4193 \r
4194     var style = element.style;\r
4195     var originalStyles = {\r
4196       visibility: style.visibility,\r
4197       position:   style.position,\r
4198       display:    style.display\r
4199     };\r
4200 \r
4201     var newStyles = {\r
4202       visibility: 'hidden',\r
4203       display:    'block'\r
4204     };\r
4205 \r
4206     if (originalStyles.position !== 'fixed')\r
4207       newStyles.position = 'absolute';\r
4208 \r
4209     Element.setStyle(element, newStyles);\r
4210 \r
4211     var dimensions = {\r
4212       width:  element.offsetWidth,\r
4213       height: element.offsetHeight\r
4214     };\r
4215 \r
4216     Element.setStyle(element, originalStyles);\r
4217 \r
4218     return dimensions;\r
4219   }\r
4220 \r
4221   function getOffsetParent(element) {\r
4222     element = $(element);\r
4223 \r
4224     if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))\r
4225       return $(document.body);\r
4226 \r
4227     var isInline = (Element.getStyle(element, 'display') === 'inline');\r
4228     if (!isInline && element.offsetParent) return $(element.offsetParent);\r
4229 \r
4230     while ((element = element.parentNode) && element !== document.body) {\r
4231       if (Element.getStyle(element, 'position') !== 'static') {\r
4232         return isHtml(element) ? $(document.body) : $(element);\r
4233       }\r
4234     }\r
4235 \r
4236     return $(document.body);\r
4237   }\r
4238 \r
4239 \r
4240   function cumulativeOffset(element) {\r
4241     element = $(element);\r
4242     var valueT = 0, valueL = 0;\r
4243     if (element.parentNode) {\r
4244       do {\r
4245         valueT += element.offsetTop  || 0;\r
4246         valueL += element.offsetLeft || 0;\r
4247         element = element.offsetParent;\r
4248       } while (element);\r
4249     }\r
4250     return new Element.Offset(valueL, valueT);\r
4251   }\r
4252 \r
4253   function positionedOffset(element) {\r
4254     element = $(element);\r
4255 \r
4256     var layout = element.getLayout();\r
4257 \r
4258     var valueT = 0, valueL = 0;\r
4259     do {\r
4260       valueT += element.offsetTop  || 0;\r
4261       valueL += element.offsetLeft || 0;\r
4262       element = element.offsetParent;\r
4263       if (element) {\r
4264         if (isBody(element)) break;\r
4265         var p = Element.getStyle(element, 'position');\r
4266         if (p !== 'static') break;\r
4267       }\r
4268     } while (element);\r
4269 \r
4270     valueL -= layout.get('margin-top');\r
4271     valueT -= layout.get('margin-left');\r
4272 \r
4273     return new Element.Offset(valueL, valueT);\r
4274   }\r
4275 \r
4276   function cumulativeScrollOffset(element) {\r
4277     var valueT = 0, valueL = 0;\r
4278     do {\r
4279       valueT += element.scrollTop  || 0;\r
4280       valueL += element.scrollLeft || 0;\r
4281       element = element.parentNode;\r
4282     } while (element);\r
4283     return new Element.Offset(valueL, valueT);\r
4284   }\r
4285 \r
4286   function viewportOffset(forElement) {\r
4287     element = $(element);\r
4288     var valueT = 0, valueL = 0, docBody = document.body;\r
4289 \r
4290     var element = forElement;\r
4291     do {\r
4292       valueT += element.offsetTop  || 0;\r
4293       valueL += element.offsetLeft || 0;\r
4294       if (element.offsetParent == docBody &&\r
4295         Element.getStyle(element, 'position') == 'absolute') break;\r
4296     } while (element = element.offsetParent);\r
4297 \r
4298     element = forElement;\r
4299     do {\r
4300       if (element != docBody) {\r
4301         valueT -= element.scrollTop  || 0;\r
4302         valueL -= element.scrollLeft || 0;\r
4303       }\r
4304     } while (element = element.parentNode);\r
4305     return new Element.Offset(valueL, valueT);\r
4306   }\r
4307 \r
4308   function absolutize(element) {\r
4309     element = $(element);\r
4310 \r
4311     if (Element.getStyle(element, 'position') === 'absolute') {\r
4312       return element;\r
4313     }\r
4314 \r
4315     var offsetParent = getOffsetParent(element);\r
4316     var eOffset = element.viewportOffset(),\r
4317      pOffset = offsetParent.viewportOffset();\r
4318 \r
4319     var offset = eOffset.relativeTo(pOffset);\r
4320     var layout = element.getLayout();\r
4321 \r
4322     element.store('prototype_absolutize_original_styles', {\r
4323       left:   element.getStyle('left'),\r
4324       top:    element.getStyle('top'),\r
4325       width:  element.getStyle('width'),\r
4326       height: element.getStyle('height')\r
4327     });\r
4328 \r
4329     element.setStyle({\r
4330       position: 'absolute',\r
4331       top:    offset.top + 'px',\r
4332       left:   offset.left + 'px',\r
4333       width:  layout.get('width') + 'px',\r
4334       height: layout.get('height') + 'px'\r
4335     });\r
4336 \r
4337     return element;\r
4338   }\r
4339 \r
4340   function relativize(element) {\r
4341     element = $(element);\r
4342     if (Element.getStyle(element, 'position') === 'relative') {\r
4343       return element;\r
4344     }\r
4345 \r
4346     var originalStyles =\r
4347      element.retrieve('prototype_absolutize_original_styles');\r
4348 \r
4349     if (originalStyles) element.setStyle(originalStyles);\r
4350     return element;\r
4351   }\r
4352 \r
4353   if (Prototype.Browser.IE) {\r
4354     getOffsetParent = getOffsetParent.wrap(\r
4355       function(proceed, element) {\r
4356         element = $(element);\r
4357 \r
4358         if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))\r
4359           return $(document.body);\r
4360 \r
4361         var position = element.getStyle('position');\r
4362         if (position !== 'static') return proceed(element);\r
4363 \r
4364         element.setStyle({ position: 'relative' });\r
4365         var value = proceed(element);\r
4366         element.setStyle({ position: position });\r
4367         return value;\r
4368       }\r
4369     );\r
4370 \r
4371     positionedOffset = positionedOffset.wrap(function(proceed, element) {\r
4372       element = $(element);\r
4373       if (!element.parentNode) return new Element.Offset(0, 0);\r
4374       var position = element.getStyle('position');\r
4375       if (position !== 'static') return proceed(element);\r
4376 \r
4377       var offsetParent = element.getOffsetParent();\r
4378       if (offsetParent && offsetParent.getStyle('position') === 'fixed')\r
4379         hasLayout(offsetParent);\r
4380 \r
4381       element.setStyle({ position: 'relative' });\r
4382       var value = proceed(element);\r
4383       element.setStyle({ position: position });\r
4384       return value;\r
4385     });\r
4386   } else if (Prototype.Browser.Webkit) {\r
4387     cumulativeOffset = function(element) {\r
4388       element = $(element);\r
4389       var valueT = 0, valueL = 0;\r
4390       do {\r
4391         valueT += element.offsetTop  || 0;\r
4392         valueL += element.offsetLeft || 0;\r
4393         if (element.offsetParent == document.body)\r
4394           if (Element.getStyle(element, 'position') == 'absolute') break;\r
4395 \r
4396         element = element.offsetParent;\r
4397       } while (element);\r
4398 \r
4399       return new Element.Offset(valueL, valueT);\r
4400     };\r
4401   }\r
4402 \r
4403 \r
4404   Element.addMethods({\r
4405     getLayout:              getLayout,\r
4406     measure:                measure,\r
4407     getDimensions:          getDimensions,\r
4408     getOffsetParent:        getOffsetParent,\r
4409     cumulativeOffset:       cumulativeOffset,\r
4410     positionedOffset:       positionedOffset,\r
4411     cumulativeScrollOffset: cumulativeScrollOffset,\r
4412     viewportOffset:         viewportOffset,\r
4413     absolutize:             absolutize,\r
4414     relativize:             relativize\r
4415   });\r
4416 \r
4417   function isBody(element) {\r
4418     return element.nodeName.toUpperCase() === 'BODY';\r
4419   }\r
4420 \r
4421   function isHtml(element) {\r
4422     return element.nodeName.toUpperCase() === 'HTML';\r
4423   }\r
4424 \r
4425   function isDocument(element) {\r
4426     return element.nodeType === Node.DOCUMENT_NODE;\r
4427   }\r
4428 \r
4429   function isDetached(element) {\r
4430     return element !== document.body &&\r
4431      !Element.descendantOf(element, document.body);\r
4432   }\r
4433 \r
4434   if ('getBoundingClientRect' in document.documentElement) {\r
4435     Element.addMethods({\r
4436       viewportOffset: function(element) {\r
4437         element = $(element);\r
4438         if (isDetached(element)) return new Element.Offset(0, 0);\r
4439 \r
4440         var rect = element.getBoundingClientRect(),\r
4441          docEl = document.documentElement;\r
4442         return new Element.Offset(rect.left - docEl.clientLeft,\r
4443          rect.top - docEl.clientTop);\r
4444       }\r
4445     });\r
4446   }\r
4447 })();\r
4448 window.$$ = function() {\r
4449   var expression = $A(arguments).join(', ');\r
4450   return Prototype.Selector.select(expression, document);\r
4451 };\r
4452 \r
4453 Prototype.Selector = (function() {\r
4454 \r
4455   function select() {\r
4456     throw new Error('Method "Prototype.Selector.select" must be defined.');\r
4457   }\r
4458 \r
4459   function match() {\r
4460     throw new Error('Method "Prototype.Selector.match" must be defined.');\r
4461   }\r
4462 \r
4463   function find(elements, expression, index) {\r
4464     index = index || 0;\r
4465     var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i;\r
4466 \r
4467     for (i = 0; i < length; i++) {\r
4468       if (match(elements[i], expression) && index == matchIndex++) {\r
4469         return Element.extend(elements[i]);\r
4470       }\r
4471     }\r
4472   }\r
4473 \r
4474   function extendElements(elements) {\r
4475     for (var i = 0, length = elements.length; i < length; i++) {\r
4476       Element.extend(elements[i]);\r
4477     }\r
4478     return elements;\r
4479   }\r
4480 \r
4481 \r
4482   var K = Prototype.K;\r
4483 \r
4484   return {\r
4485     select: select,\r
4486     match: match,\r
4487     find: find,\r
4488     extendElements: (Element.extend === K) ? K : extendElements,\r
4489     extendElement: Element.extend\r
4490   };\r
4491 })();\r
4492 /*!\r
4493  * Sizzle CSS Selector Engine - v1.0\r
4494  *  Copyright 2009, The Dojo Foundation\r
4495  *  Released under the MIT, BSD, and GPL Licenses.\r
4496  *  More information: http://sizzlejs.com/\r
4497  */\r
4498 (function(){\r
4499 \r
4500 var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,\r
4501         done = 0,\r
4502         toString = Object.prototype.toString,\r
4503         hasDuplicate = false,\r
4504         baseHasDuplicate = true;\r
4505 \r
4506 [0, 0].sort(function(){\r
4507         baseHasDuplicate = false;\r
4508         return 0;\r
4509 });\r
4510 \r
4511 var Sizzle = function(selector, context, results, seed) {\r
4512         results = results || [];\r
4513         var origContext = context = context || document;\r
4514 \r
4515         if ( context.nodeType !== 1 && context.nodeType !== 9 ) {\r
4516                 return [];\r
4517         }\r
4518 \r
4519         if ( !selector || typeof selector !== "string" ) {\r
4520                 return results;\r
4521         }\r
4522 \r
4523         var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),\r
4524                 soFar = selector;\r
4525 \r
4526         while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {\r
4527                 soFar = m[3];\r
4528 \r
4529                 parts.push( m[1] );\r
4530 \r
4531                 if ( m[2] ) {\r
4532                         extra = m[3];\r
4533                         break;\r
4534                 }\r
4535         }\r
4536 \r
4537         if ( parts.length > 1 && origPOS.exec( selector ) ) {\r
4538                 if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\r
4539                         set = posProcess( parts[0] + parts[1], context );\r
4540                 } else {\r
4541                         set = Expr.relative[ parts[0] ] ?\r
4542                                 [ context ] :\r
4543                                 Sizzle( parts.shift(), context );\r
4544 \r
4545                         while ( parts.length ) {\r
4546                                 selector = parts.shift();\r
4547 \r
4548                                 if ( Expr.relative[ selector ] )\r
4549                                         selector += parts.shift();\r
4550 \r
4551                                 set = posProcess( selector, set );\r
4552                         }\r
4553                 }\r
4554         } else {\r
4555                 if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\r
4556                                 Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\r
4557                         var ret = Sizzle.find( parts.shift(), context, contextXML );\r
4558                         context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];\r
4559                 }\r
4560 \r
4561                 if ( context ) {\r
4562                         var ret = seed ?\r
4563                                 { expr: parts.pop(), set: makeArray(seed) } :\r
4564                                 Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );\r
4565                         set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;\r
4566 \r
4567                         if ( parts.length > 0 ) {\r
4568                                 checkSet = makeArray(set);\r
4569                         } else {\r
4570                                 prune = false;\r
4571                         }\r
4572 \r
4573                         while ( parts.length ) {\r
4574                                 var cur = parts.pop(), pop = cur;\r
4575 \r
4576                                 if ( !Expr.relative[ cur ] ) {\r
4577                                         cur = "";\r
4578                                 } else {\r
4579                                         pop = parts.pop();\r
4580                                 }\r
4581 \r
4582                                 if ( pop == null ) {\r
4583                                         pop = context;\r
4584                                 }\r
4585 \r
4586                                 Expr.relative[ cur ]( checkSet, pop, contextXML );\r
4587                         }\r
4588                 } else {\r
4589                         checkSet = parts = [];\r
4590                 }\r
4591         }\r
4592 \r
4593         if ( !checkSet ) {\r
4594                 checkSet = set;\r
4595         }\r
4596 \r
4597         if ( !checkSet ) {\r
4598                 throw "Syntax error, unrecognized expression: " + (cur || selector);\r
4599         }\r
4600 \r
4601         if ( toString.call(checkSet) === "[object Array]" ) {\r
4602                 if ( !prune ) {\r
4603                         results.push.apply( results, checkSet );\r
4604                 } else if ( context && context.nodeType === 1 ) {\r
4605                         for ( var i = 0; checkSet[i] != null; i++ ) {\r
4606                                 if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\r
4607                                         results.push( set[i] );\r
4608                                 }\r
4609                         }\r
4610                 } else {\r
4611                         for ( var i = 0; checkSet[i] != null; i++ ) {\r
4612                                 if ( checkSet[i] && checkSet[i].nodeType === 1 ) {\r
4613                                         results.push( set[i] );\r
4614                                 }\r
4615                         }\r
4616                 }\r
4617         } else {\r
4618                 makeArray( checkSet, results );\r
4619         }\r
4620 \r
4621         if ( extra ) {\r
4622                 Sizzle( extra, origContext, results, seed );\r
4623                 Sizzle.uniqueSort( results );\r
4624         }\r
4625 \r
4626         return results;\r
4627 };\r
4628 \r
4629 Sizzle.uniqueSort = function(results){\r
4630         if ( sortOrder ) {\r
4631                 hasDuplicate = baseHasDuplicate;\r
4632                 results.sort(sortOrder);\r
4633 \r
4634                 if ( hasDuplicate ) {\r
4635                         for ( var i = 1; i < results.length; i++ ) {\r
4636                                 if ( results[i] === results[i-1] ) {\r
4637                                         results.splice(i--, 1);\r
4638                                 }\r
4639                         }\r
4640                 }\r
4641         }\r
4642 \r
4643         return results;\r
4644 };\r
4645 \r
4646 Sizzle.matches = function(expr, set){\r
4647         return Sizzle(expr, null, null, set);\r
4648 };\r
4649 \r
4650 Sizzle.find = function(expr, context, isXML){\r
4651         var set, match;\r
4652 \r
4653         if ( !expr ) {\r
4654                 return [];\r
4655         }\r
4656 \r
4657         for ( var i = 0, l = Expr.order.length; i < l; i++ ) {\r
4658                 var type = Expr.order[i], match;\r
4659 \r
4660                 if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\r
4661                         var left = match[1];\r
4662                         match.splice(1,1);\r
4663 \r
4664                         if ( left.substr( left.length - 1 ) !== "\\" ) {\r
4665                                 match[1] = (match[1] || "").replace(/\\/g, "");\r
4666                                 set = Expr.find[ type ]( match, context, isXML );\r
4667                                 if ( set != null ) {\r
4668                                         expr = expr.replace( Expr.match[ type ], "" );\r
4669                                         break;\r
4670                                 }\r
4671                         }\r
4672                 }\r
4673         }\r
4674 \r
4675         if ( !set ) {\r
4676                 set = context.getElementsByTagName("*");\r
4677         }\r
4678 \r
4679         return {set: set, expr: expr};\r
4680 };\r
4681 \r
4682 Sizzle.filter = function(expr, set, inplace, not){\r
4683         var old = expr, result = [], curLoop = set, match, anyFound,\r
4684                 isXMLFilter = set && set[0] && isXML(set[0]);\r
4685 \r
4686         while ( expr && set.length ) {\r
4687                 for ( var type in Expr.filter ) {\r
4688                         if ( (match = Expr.match[ type ].exec( expr )) != null ) {\r
4689                                 var filter = Expr.filter[ type ], found, item;\r
4690                                 anyFound = false;\r
4691 \r
4692                                 if ( curLoop == result ) {\r
4693                                         result = [];\r
4694                                 }\r
4695 \r
4696                                 if ( Expr.preFilter[ type ] ) {\r
4697                                         match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\r
4698 \r
4699                                         if ( !match ) {\r
4700                                                 anyFound = found = true;\r
4701                                         } else if ( match === true ) {\r
4702                                                 continue;\r
4703                                         }\r
4704                                 }\r
4705 \r
4706                                 if ( match ) {\r
4707                                         for ( var i = 0; (item = curLoop[i]) != null; i++ ) {\r
4708                                                 if ( item ) {\r
4709                                                         found = filter( item, match, i, curLoop );\r
4710                                                         var pass = not ^ !!found;\r
4711 \r
4712                                                         if ( inplace && found != null ) {\r
4713                                                                 if ( pass ) {\r
4714                                                                         anyFound = true;\r
4715                                                                 } else {\r
4716                                                                         curLoop[i] = false;\r
4717                                                                 }\r
4718                                                         } else if ( pass ) {\r
4719                                                                 result.push( item );\r
4720                                                                 anyFound = true;\r
4721                                                         }\r
4722                                                 }\r
4723                                         }\r
4724                                 }\r
4725 \r
4726                                 if ( found !== undefined ) {\r
4727                                         if ( !inplace ) {\r
4728                                                 curLoop = result;\r
4729                                         }\r
4730 \r
4731                                         expr = expr.replace( Expr.match[ type ], "" );\r
4732 \r
4733                                         if ( !anyFound ) {\r
4734                                                 return [];\r
4735                                         }\r
4736 \r
4737                                         break;\r
4738                                 }\r
4739                         }\r
4740                 }\r
4741 \r
4742                 if ( expr == old ) {\r
4743                         if ( anyFound == null ) {\r
4744                                 throw "Syntax error, unrecognized expression: " + expr;\r
4745 \r
4746                         } else {\r
4747                                 break;\r
4748                         }\r
4749                 }\r
4750 \r
4751                 old = expr;\r
4752         }\r
4753 \r
4754         return curLoop;\r
4755 };\r
4756 \r
4757 var Expr = Sizzle.selectors = {\r
4758         order: [ "ID", "NAME", "TAG" ],\r
4759         match: {\r
4760                 ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,\r
4761                 CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,\r
4762                 NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,\r
4763                 ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,\r
4764                 TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,\r
4765                 CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,\r
4766                 POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,\r
4767                 PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/\r
4768         },\r
4769         leftMatch: {},\r
4770         attrMap: {\r
4771                 "class": "className",\r
4772                 "for": "htmlFor"\r
4773         },\r
4774         attrHandle: {\r
4775                 href: function(elem){\r
4776                         return elem.getAttribute("href");\r
4777                 }\r
4778         },\r
4779         relative: {\r
4780                 "+": function(checkSet, part, isXML){\r
4781                         var isPartStr = typeof part === "string",\r
4782                                 isTag = isPartStr && !/\W/.test(part),\r
4783                                 isPartStrNotTag = isPartStr && !isTag;\r
4784 \r
4785                         if ( isTag && !isXML ) {\r
4786                                 part = part.toUpperCase();\r
4787                         }\r
4788 \r
4789                         for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\r
4790                                 if ( (elem = checkSet[i]) ) {\r
4791                                         while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\r
4792 \r
4793                                         checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?\r
4794                                                 elem || false :\r
4795                                                 elem === part;\r
4796                                 }\r
4797                         }\r
4798 \r
4799                         if ( isPartStrNotTag ) {\r
4800                                 Sizzle.filter( part, checkSet, true );\r
4801                         }\r
4802                 },\r
4803                 ">": function(checkSet, part, isXML){\r
4804                         var isPartStr = typeof part === "string";\r
4805 \r
4806                         if ( isPartStr && !/\W/.test(part) ) {\r
4807                                 part = isXML ? part : part.toUpperCase();\r
4808 \r
4809                                 for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
4810                                         var elem = checkSet[i];\r
4811                                         if ( elem ) {\r
4812                                                 var parent = elem.parentNode;\r
4813                                                 checkSet[i] = parent.nodeName === part ? parent : false;\r
4814                                         }\r
4815                                 }\r
4816                         } else {\r
4817                                 for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
4818                                         var elem = checkSet[i];\r
4819                                         if ( elem ) {\r
4820                                                 checkSet[i] = isPartStr ?\r
4821                                                         elem.parentNode :\r
4822                                                         elem.parentNode === part;\r
4823                                         }\r
4824                                 }\r
4825 \r
4826                                 if ( isPartStr ) {\r
4827                                         Sizzle.filter( part, checkSet, true );\r
4828                                 }\r
4829                         }\r
4830                 },\r
4831                 "": function(checkSet, part, isXML){\r
4832                         var doneName = done++, checkFn = dirCheck;\r
4833 \r
4834                         if ( !/\W/.test(part) ) {\r
4835                                 var nodeCheck = part = isXML ? part : part.toUpperCase();\r
4836                                 checkFn = dirNodeCheck;\r
4837                         }\r
4838 \r
4839                         checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);\r
4840                 },\r
4841                 "~": function(checkSet, part, isXML){\r
4842                         var doneName = done++, checkFn = dirCheck;\r
4843 \r
4844                         if ( typeof part === "string" && !/\W/.test(part) ) {\r
4845                                 var nodeCheck = part = isXML ? part : part.toUpperCase();\r
4846                                 checkFn = dirNodeCheck;\r
4847                         }\r
4848 \r
4849                         checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);\r
4850                 }\r
4851         },\r
4852         find: {\r
4853                 ID: function(match, context, isXML){\r
4854                         if ( typeof context.getElementById !== "undefined" && !isXML ) {\r
4855                                 var m = context.getElementById(match[1]);\r
4856                                 return m ? [m] : [];\r
4857                         }\r
4858                 },\r
4859                 NAME: function(match, context, isXML){\r
4860                         if ( typeof context.getElementsByName !== "undefined" ) {\r
4861                                 var ret = [], results = context.getElementsByName(match[1]);\r
4862 \r
4863                                 for ( var i = 0, l = results.length; i < l; i++ ) {\r
4864                                         if ( results[i].getAttribute("name") === match[1] ) {\r
4865                                                 ret.push( results[i] );\r
4866                                         }\r
4867                                 }\r
4868 \r
4869                                 return ret.length === 0 ? null : ret;\r
4870                         }\r
4871                 },\r
4872                 TAG: function(match, context){\r
4873                         return context.getElementsByTagName(match[1]);\r
4874                 }\r
4875         },\r
4876         preFilter: {\r
4877                 CLASS: function(match, curLoop, inplace, result, not, isXML){\r
4878                         match = " " + match[1].replace(/\\/g, "") + " ";\r
4879 \r
4880                         if ( isXML ) {\r
4881                                 return match;\r
4882                         }\r
4883 \r
4884                         for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\r
4885                                 if ( elem ) {\r
4886                                         if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {\r
4887                                                 if ( !inplace )\r
4888                                                         result.push( elem );\r
4889                                         } else if ( inplace ) {\r
4890                                                 curLoop[i] = false;\r
4891                                         }\r
4892                                 }\r
4893                         }\r
4894 \r
4895                         return false;\r
4896                 },\r
4897                 ID: function(match){\r
4898                         return match[1].replace(/\\/g, "");\r
4899                 },\r
4900                 TAG: function(match, curLoop){\r
4901                         for ( var i = 0; curLoop[i] === false; i++ ){}\r
4902                         return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();\r
4903                 },\r
4904                 CHILD: function(match){\r
4905                         if ( match[1] == "nth" ) {\r
4906                                 var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(\r
4907                                         match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||\r
4908                                         !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);\r
4909 \r
4910                                 match[2] = (test[1] + (test[2] || 1)) - 0;\r
4911                                 match[3] = test[3] - 0;\r
4912                         }\r
4913 \r
4914                         match[0] = done++;\r
4915 \r
4916                         return match;\r
4917                 },\r
4918                 ATTR: function(match, curLoop, inplace, result, not, isXML){\r
4919                         var name = match[1].replace(/\\/g, "");\r
4920 \r
4921                         if ( !isXML && Expr.attrMap[name] ) {\r
4922                                 match[1] = Expr.attrMap[name];\r
4923                         }\r
4924 \r
4925                         if ( match[2] === "~=" ) {\r
4926                                 match[4] = " " + match[4] + " ";\r
4927                         }\r
4928 \r
4929                         return match;\r
4930                 },\r
4931                 PSEUDO: function(match, curLoop, inplace, result, not){\r
4932                         if ( match[1] === "not" ) {\r
4933                                 if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {\r
4934                                         match[3] = Sizzle(match[3], null, null, curLoop);\r
4935                                 } else {\r
4936                                         var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\r
4937                                         if ( !inplace ) {\r
4938                                                 result.push.apply( result, ret );\r
4939                                         }\r
4940                                         return false;\r
4941                                 }\r
4942                         } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\r
4943                                 return true;\r
4944                         }\r
4945 \r
4946                         return match;\r
4947                 },\r
4948                 POS: function(match){\r
4949                         match.unshift( true );\r
4950                         return match;\r
4951                 }\r
4952         },\r
4953         filters: {\r
4954                 enabled: function(elem){\r
4955                         return elem.disabled === false && elem.type !== "hidden";\r
4956                 },\r
4957                 disabled: function(elem){\r
4958                         return elem.disabled === true;\r
4959                 },\r
4960                 checked: function(elem){\r
4961                         return elem.checked === true;\r
4962                 },\r
4963                 selected: function(elem){\r
4964                         elem.parentNode.selectedIndex;\r
4965                         return elem.selected === true;\r
4966                 },\r
4967                 parent: function(elem){\r
4968                         return !!elem.firstChild;\r
4969                 },\r
4970                 empty: function(elem){\r
4971                         return !elem.firstChild;\r
4972                 },\r
4973                 has: function(elem, i, match){\r
4974                         return !!Sizzle( match[3], elem ).length;\r
4975                 },\r
4976                 header: function(elem){\r
4977                         return /h\d/i.test( elem.nodeName );\r
4978                 },\r
4979                 text: function(elem){\r
4980                         return "text" === elem.type;\r
4981                 },\r
4982                 radio: function(elem){\r
4983                         return "radio" === elem.type;\r
4984                 },\r
4985                 checkbox: function(elem){\r
4986                         return "checkbox" === elem.type;\r
4987                 },\r
4988                 file: function(elem){\r
4989                         return "file" === elem.type;\r
4990                 },\r
4991                 password: function(elem){\r
4992                         return "password" === elem.type;\r
4993                 },\r
4994                 submit: function(elem){\r
4995                         return "submit" === elem.type;\r
4996                 },\r
4997                 image: function(elem){\r
4998                         return "image" === elem.type;\r
4999                 },\r
5000                 reset: function(elem){\r
5001                         return "reset" === elem.type;\r
5002                 },\r
5003                 button: function(elem){\r
5004                         return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";\r
5005                 },\r
5006                 input: function(elem){\r
5007                         return /input|select|textarea|button/i.test(elem.nodeName);\r
5008                 }\r
5009         },\r
5010         setFilters: {\r
5011                 first: function(elem, i){\r
5012                         return i === 0;\r
5013                 },\r
5014                 last: function(elem, i, match, array){\r
5015                         return i === array.length - 1;\r
5016                 },\r
5017                 even: function(elem, i){\r
5018                         return i % 2 === 0;\r
5019                 },\r
5020                 odd: function(elem, i){\r
5021                         return i % 2 === 1;\r
5022                 },\r
5023                 lt: function(elem, i, match){\r
5024                         return i < match[3] - 0;\r
5025                 },\r
5026                 gt: function(elem, i, match){\r
5027                         return i > match[3] - 0;\r
5028                 },\r
5029                 nth: function(elem, i, match){\r
5030                         return match[3] - 0 == i;\r
5031                 },\r
5032                 eq: function(elem, i, match){\r
5033                         return match[3] - 0 == i;\r
5034                 }\r
5035         },\r
5036         filter: {\r
5037                 PSEUDO: function(elem, match, i, array){\r
5038                         var name = match[1], filter = Expr.filters[ name ];\r
5039 \r
5040                         if ( filter ) {\r
5041                                 return filter( elem, i, match, array );\r
5042                         } else if ( name === "contains" ) {\r
5043                                 return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;\r
5044                         } else if ( name === "not" ) {\r
5045                                 var not = match[3];\r
5046 \r
5047                                 for ( var i = 0, l = not.length; i < l; i++ ) {\r
5048                                         if ( not[i] === elem ) {\r
5049                                                 return false;\r
5050                                         }\r
5051                                 }\r
5052 \r
5053                                 return true;\r
5054 \r
5055 \r
5056 \r
5057                         }\r
5058                 },\r
5059                 CHILD: function(elem, match){\r
5060                         var type = match[1], node = elem;\r
5061                         switch (type) {\r
5062                                 case 'only':\r
5063                                 case 'first':\r
5064                                         while ( (node = node.previousSibling) )  {\r
5065                                                 if ( node.nodeType === 1 ) return false;\r
5066                                         }\r
5067                                         if ( type == 'first') return true;\r
5068                                         node = elem;\r
5069                                 case 'last':\r
5070                                         while ( (node = node.nextSibling) )  {\r
5071                                                 if ( node.nodeType === 1 ) return false;\r
5072                                         }\r
5073                                         return true;\r
5074                                 case 'nth':\r
5075                                         var first = match[2], last = match[3];\r
5076 \r
5077                                         if ( first == 1 && last == 0 ) {\r
5078                                                 return true;\r
5079                                         }\r
5080 \r
5081                                         var doneName = match[0],\r
5082                                                 parent = elem.parentNode;\r
5083 \r
5084                                         if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\r
5085                                                 var count = 0;\r
5086                                                 for ( node = parent.firstChild; node; node = node.nextSibling ) {\r
5087                                                         if ( node.nodeType === 1 ) {\r
5088                                                                 node.nodeIndex = ++count;\r
5089                                                         }\r
5090                                                 }\r
5091                                                 parent.sizcache = doneName;\r
5092                                         }\r
5093 \r
5094                                         var diff = elem.nodeIndex - last;\r
5095                                         if ( first == 0 ) {\r
5096                                                 return diff == 0;\r
5097                                         } else {\r
5098                                                 return ( diff % first == 0 && diff / first >= 0 );\r
5099                                         }\r
5100                         }\r
5101                 },\r
5102                 ID: function(elem, match){\r
5103                         return elem.nodeType === 1 && elem.getAttribute("id") === match;\r
5104                 },\r
5105                 TAG: function(elem, match){\r
5106                         return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;\r
5107                 },\r
5108                 CLASS: function(elem, match){\r
5109                         return (" " + (elem.className || elem.getAttribute("class")) + " ")\r
5110                                 .indexOf( match ) > -1;\r
5111                 },\r
5112                 ATTR: function(elem, match){\r
5113                         var name = match[1],\r
5114                                 result = Expr.attrHandle[ name ] ?\r
5115                                         Expr.attrHandle[ name ]( elem ) :\r
5116                                         elem[ name ] != null ?\r
5117                                                 elem[ name ] :\r
5118                                                 elem.getAttribute( name ),\r
5119                                 value = result + "",\r
5120                                 type = match[2],\r
5121                                 check = match[4];\r
5122 \r
5123                         return result == null ?\r
5124                                 type === "!=" :\r
5125                                 type === "=" ?\r
5126                                 value === check :\r
5127                                 type === "*=" ?\r
5128                                 value.indexOf(check) >= 0 :\r
5129                                 type === "~=" ?\r
5130                                 (" " + value + " ").indexOf(check) >= 0 :\r
5131                                 !check ?\r
5132                                 value && result !== false :\r
5133                                 type === "!=" ?\r
5134                                 value != check :\r
5135                                 type === "^=" ?\r
5136                                 value.indexOf(check) === 0 :\r
5137                                 type === "$=" ?\r
5138                                 value.substr(value.length - check.length) === check :\r
5139                                 type === "|=" ?\r
5140                                 value === check || value.substr(0, check.length + 1) === check + "-" :\r
5141                                 false;\r
5142                 },\r
5143                 POS: function(elem, match, i, array){\r
5144                         var name = match[2], filter = Expr.setFilters[ name ];\r
5145 \r
5146                         if ( filter ) {\r
5147                                 return filter( elem, i, match, array );\r
5148                         }\r
5149                 }\r
5150         }\r
5151 };\r
5152 \r
5153 var origPOS = Expr.match.POS;\r
5154 \r
5155 for ( var type in Expr.match ) {\r
5156         Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );\r
5157         Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );\r
5158 }\r
5159 \r
5160 var makeArray = function(array, results) {\r
5161         array = Array.prototype.slice.call( array, 0 );\r
5162 \r
5163         if ( results ) {\r
5164                 results.push.apply( results, array );\r
5165                 return results;\r
5166         }\r
5167 \r
5168         return array;\r
5169 };\r
5170 \r
5171 try {\r
5172         Array.prototype.slice.call( document.documentElement.childNodes, 0 );\r
5173 \r
5174 } catch(e){\r
5175         makeArray = function(array, results) {\r
5176                 var ret = results || [];\r
5177 \r
5178                 if ( toString.call(array) === "[object Array]" ) {\r
5179                         Array.prototype.push.apply( ret, array );\r
5180                 } else {\r
5181                         if ( typeof array.length === "number" ) {\r
5182                                 for ( var i = 0, l = array.length; i < l; i++ ) {\r
5183                                         ret.push( array[i] );\r
5184                                 }\r
5185                         } else {\r
5186                                 for ( var i = 0; array[i]; i++ ) {\r
5187                                         ret.push( array[i] );\r
5188                                 }\r
5189                         }\r
5190                 }\r
5191 \r
5192                 return ret;\r
5193         };\r
5194 }\r
5195 \r
5196 var sortOrder;\r
5197 \r
5198 if ( document.documentElement.compareDocumentPosition ) {\r
5199         sortOrder = function( a, b ) {\r
5200                 if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\r
5201                         if ( a == b ) {\r
5202                                 hasDuplicate = true;\r
5203                         }\r
5204                         return 0;\r
5205                 }\r
5206 \r
5207                 var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\r
5208                 if ( ret === 0 ) {\r
5209                         hasDuplicate = true;\r
5210                 }\r
5211                 return ret;\r
5212         };\r
5213 } else if ( "sourceIndex" in document.documentElement ) {\r
5214         sortOrder = function( a, b ) {\r
5215                 if ( !a.sourceIndex || !b.sourceIndex ) {\r
5216                         if ( a == b ) {\r
5217                                 hasDuplicate = true;\r
5218                         }\r
5219                         return 0;\r
5220                 }\r
5221 \r
5222                 var ret = a.sourceIndex - b.sourceIndex;\r
5223                 if ( ret === 0 ) {\r
5224                         hasDuplicate = true;\r
5225                 }\r
5226                 return ret;\r
5227         };\r
5228 } else if ( document.createRange ) {\r
5229         sortOrder = function( a, b ) {\r
5230                 if ( !a.ownerDocument || !b.ownerDocument ) {\r
5231                         if ( a == b ) {\r
5232                                 hasDuplicate = true;\r
5233                         }\r
5234                         return 0;\r
5235                 }\r
5236 \r
5237                 var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\r
5238                 aRange.setStart(a, 0);\r
5239                 aRange.setEnd(a, 0);\r
5240                 bRange.setStart(b, 0);\r
5241                 bRange.setEnd(b, 0);\r
5242                 var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\r
5243                 if ( ret === 0 ) {\r
5244                         hasDuplicate = true;\r
5245                 }\r
5246                 return ret;\r
5247         };\r
5248 }\r
5249 \r
5250 (function(){\r
5251         var form = document.createElement("div"),\r
5252                 id = "script" + (new Date).getTime();\r
5253         form.innerHTML = "<a name='" + id + "'/>";\r
5254 \r
5255         var root = document.documentElement;\r
5256         root.insertBefore( form, root.firstChild );\r
5257 \r
5258         if ( !!document.getElementById( id ) ) {\r
5259                 Expr.find.ID = function(match, context, isXML){\r
5260                         if ( typeof context.getElementById !== "undefined" && !isXML ) {\r
5261                                 var m = context.getElementById(match[1]);\r
5262                                 return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];\r
5263                         }\r
5264                 };\r
5265 \r
5266                 Expr.filter.ID = function(elem, match){\r
5267                         var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");\r
5268                         return elem.nodeType === 1 && node && node.nodeValue === match;\r
5269                 };\r
5270         }\r
5271 \r
5272         root.removeChild( form );\r
5273         root = form = null; // release memory in IE\r
5274 })();\r
5275 \r
5276 (function(){\r
5277 \r
5278         var div = document.createElement("div");\r
5279         div.appendChild( document.createComment("") );\r
5280 \r
5281         if ( div.getElementsByTagName("*").length > 0 ) {\r
5282                 Expr.find.TAG = function(match, context){\r
5283                         var results = context.getElementsByTagName(match[1]);\r
5284 \r
5285                         if ( match[1] === "*" ) {\r
5286                                 var tmp = [];\r
5287 \r
5288                                 for ( var i = 0; results[i]; i++ ) {\r
5289                                         if ( results[i].nodeType === 1 ) {\r
5290                                                 tmp.push( results[i] );\r
5291                                         }\r
5292                                 }\r
5293 \r
5294                                 results = tmp;\r
5295                         }\r
5296 \r
5297                         return results;\r
5298                 };\r
5299         }\r
5300 \r
5301         div.innerHTML = "<a href='#'></a>";\r
5302         if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&\r
5303                         div.firstChild.getAttribute("href") !== "#" ) {\r
5304                 Expr.attrHandle.href = function(elem){\r
5305                         return elem.getAttribute("href", 2);\r
5306                 };\r
5307         }\r
5308 \r
5309         div = null; // release memory in IE\r
5310 })();\r
5311 \r
5312 if ( document.querySelectorAll ) (function(){\r
5313         var oldSizzle = Sizzle, div = document.createElement("div");\r
5314         div.innerHTML = "<p class='TEST'></p>";\r
5315 \r
5316         if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {\r
5317                 return;\r
5318         }\r
5319 \r
5320         Sizzle = function(query, context, extra, seed){\r
5321                 context = context || document;\r
5322 \r
5323                 if ( !seed && context.nodeType === 9 && !isXML(context) ) {\r
5324                         try {\r
5325                                 return makeArray( context.querySelectorAll(query), extra );\r
5326                         } catch(e){}\r
5327                 }\r
5328 \r
5329                 return oldSizzle(query, context, extra, seed);\r
5330         };\r
5331 \r
5332         for ( var prop in oldSizzle ) {\r
5333                 Sizzle[ prop ] = oldSizzle[ prop ];\r
5334         }\r
5335 \r
5336         div = null; // release memory in IE\r
5337 })();\r
5338 \r
5339 if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){\r
5340         var div = document.createElement("div");\r
5341         div.innerHTML = "<div class='test e'></div><div class='test'></div>";\r
5342 \r
5343         if ( div.getElementsByClassName("e").length === 0 )\r
5344                 return;\r
5345 \r
5346         div.lastChild.className = "e";\r
5347 \r
5348         if ( div.getElementsByClassName("e").length === 1 )\r
5349                 return;\r
5350 \r
5351         Expr.order.splice(1, 0, "CLASS");\r
5352         Expr.find.CLASS = function(match, context, isXML) {\r
5353                 if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {\r
5354                         return context.getElementsByClassName(match[1]);\r
5355                 }\r
5356         };\r
5357 \r
5358         div = null; // release memory in IE\r
5359 })();\r
5360 \r
5361 function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\r
5362         var sibDir = dir == "previousSibling" && !isXML;\r
5363         for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
5364                 var elem = checkSet[i];\r
5365                 if ( elem ) {\r
5366                         if ( sibDir && elem.nodeType === 1 ){\r
5367                                 elem.sizcache = doneName;\r
5368                                 elem.sizset = i;\r
5369                         }\r
5370 \r
5371                         elem = elem[dir];\r
5372                         var match = false;\r
5373 \r
5374                         while ( elem ) {\r
5375                                 if ( elem.sizcache === doneName ) {\r
5376                                         match = checkSet[elem.sizset];\r
5377                                         break;\r
5378                                 }\r
5379 \r
5380                                 if ( elem.nodeType === 1 && !isXML ){\r
5381                                         elem.sizcache = doneName;\r
5382                                         elem.sizset = i;\r
5383                                 }\r
5384 \r
5385                                 if ( elem.nodeName === cur ) {\r
5386                                         match = elem;\r
5387                                         break;\r
5388                                 }\r
5389 \r
5390                                 elem = elem[dir];\r
5391                         }\r
5392 \r
5393                         checkSet[i] = match;\r
5394                 }\r
5395         }\r
5396 }\r
5397 \r
5398 function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\r
5399         var sibDir = dir == "previousSibling" && !isXML;\r
5400         for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
5401                 var elem = checkSet[i];\r
5402                 if ( elem ) {\r
5403                         if ( sibDir && elem.nodeType === 1 ) {\r
5404                                 elem.sizcache = doneName;\r
5405                                 elem.sizset = i;\r
5406                         }\r
5407                         elem = elem[dir];\r
5408                         var match = false;\r
5409 \r
5410                         while ( elem ) {\r
5411                                 if ( elem.sizcache === doneName ) {\r
5412                                         match = checkSet[elem.sizset];\r
5413                                         break;\r
5414                                 }\r
5415 \r
5416                                 if ( elem.nodeType === 1 ) {\r
5417                                         if ( !isXML ) {\r
5418                                                 elem.sizcache = doneName;\r
5419                                                 elem.sizset = i;\r
5420                                         }\r
5421                                         if ( typeof cur !== "string" ) {\r
5422                                                 if ( elem === cur ) {\r
5423                                                         match = true;\r
5424                                                         break;\r
5425                                                 }\r
5426 \r
5427                                         } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\r
5428                                                 match = elem;\r
5429                                                 break;\r
5430                                         }\r
5431                                 }\r
5432 \r
5433                                 elem = elem[dir];\r
5434                         }\r
5435 \r
5436                         checkSet[i] = match;\r
5437                 }\r
5438         }\r
5439 }\r
5440 \r
5441 var contains = document.compareDocumentPosition ?  function(a, b){\r
5442         return a.compareDocumentPosition(b) & 16;\r
5443 } : function(a, b){\r
5444         return a !== b && (a.contains ? a.contains(b) : true);\r
5445 };\r
5446 \r
5447 var isXML = function(elem){\r
5448         return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||\r
5449                 !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";\r
5450 };\r
5451 \r
5452 var posProcess = function(selector, context){\r
5453         var tmpSet = [], later = "", match,\r
5454                 root = context.nodeType ? [context] : context;\r
5455 \r
5456         while ( (match = Expr.match.PSEUDO.exec( selector )) ) {\r
5457                 later += match[0];\r
5458                 selector = selector.replace( Expr.match.PSEUDO, "" );\r
5459         }\r
5460 \r
5461         selector = Expr.relative[selector] ? selector + "*" : selector;\r
5462 \r
5463         for ( var i = 0, l = root.length; i < l; i++ ) {\r
5464                 Sizzle( selector, root[i], tmpSet );\r
5465         }\r
5466 \r
5467         return Sizzle.filter( later, tmpSet );\r
5468 };\r
5469 \r
5470 \r
5471 window.Sizzle = Sizzle;\r
5472 \r
5473 })();\r
5474 \r
5475 Prototype._original_property = window.Sizzle;\r
5476 \r
5477 ;(function(engine) {\r
5478   var extendElements = Prototype.Selector.extendElements;\r
5479 \r
5480   function select(selector, scope) {\r
5481     return extendElements(engine(selector, scope || document));\r
5482   }\r
5483 \r
5484   function match(element, selector) {\r
5485     return engine.matches(selector, [element]).length == 1;\r
5486   }\r
5487 \r
5488   Prototype.Selector.engine = engine;\r
5489   Prototype.Selector.select = select;\r
5490   Prototype.Selector.match = match;\r
5491 })(Sizzle);\r
5492 \r
5493 window.Sizzle = Prototype._original_property;\r
5494 delete Prototype._original_property;\r
5495 \r
5496 var Form = {\r
5497   reset: function(form) {\r
5498     form = $(form);\r
5499     form.reset();\r
5500     return form;\r
5501   },\r
5502 \r
5503   serializeElements: function(elements, options) {\r
5504     if (typeof options != 'object') options = { hash: !!options };\r
5505     else if (Object.isUndefined(options.hash)) options.hash = true;\r
5506     var key, value, submitted = false, submit = options.submit, accumulator, initial;\r
5507 \r
5508     if (options.hash) {\r
5509       initial = {};\r
5510       accumulator = function(result, key, value) {\r
5511         if (key in result) {\r
5512           if (!Object.isArray(result[key])) result[key] = [result[key]];\r
5513           result[key].push(value);\r
5514         } else result[key] = value;\r
5515         return result;\r
5516       };\r
5517     } else {\r
5518       initial = '';\r
5519       accumulator = function(result, key, value) {\r
5520         return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value);\r
5521       }\r
5522     }\r
5523 \r
5524     return elements.inject(initial, function(result, element) {\r
5525       if (!element.disabled && element.name) {\r
5526         key = element.name; value = $(element).getValue();\r
5527         if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&\r
5528             submit !== false && (!submit || key == submit) && (submitted = true)))) {\r
5529           result = accumulator(result, key, value);\r
5530         }\r
5531       }\r
5532       return result;\r
5533     });\r
5534   }\r
5535 };\r
5536 \r
5537 Form.Methods = {\r
5538   serialize: function(form, options) {\r
5539     return Form.serializeElements(Form.getElements(form), options);\r
5540   },\r
5541 \r
5542   getElements: function(form) {\r
5543     var elements = $(form).getElementsByTagName('*'),\r
5544         element,\r
5545         arr = [ ],\r
5546         serializers = Form.Element.Serializers;\r
5547     for (var i = 0; element = elements[i]; i++) {\r
5548       arr.push(element);\r
5549     }\r
5550     return arr.inject([], function(elements, child) {\r
5551       if (serializers[child.tagName.toLowerCase()])\r
5552         elements.push(Element.extend(child));\r
5553       return elements;\r
5554     })\r
5555   },\r
5556 \r
5557   getInputs: function(form, typeName, name) {\r
5558     form = $(form);\r
5559     var inputs = form.getElementsByTagName('input');\r
5560 \r
5561     if (!typeName && !name) return $A(inputs).map(Element.extend);\r
5562 \r
5563     for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {\r
5564       var input = inputs[i];\r
5565       if ((typeName && input.type != typeName) || (name && input.name != name))\r
5566         continue;\r
5567       matchingInputs.push(Element.extend(input));\r
5568     }\r
5569 \r
5570     return matchingInputs;\r
5571   },\r
5572 \r
5573   disable: function(form) {\r
5574     form = $(form);\r
5575     Form.getElements(form).invoke('disable');\r
5576     return form;\r
5577   },\r
5578 \r
5579   enable: function(form) {\r
5580     form = $(form);\r
5581     Form.getElements(form).invoke('enable');\r
5582     return form;\r
5583   },\r
5584 \r
5585   findFirstElement: function(form) {\r
5586     var elements = $(form).getElements().findAll(function(element) {\r
5587       return 'hidden' != element.type && !element.disabled;\r
5588     });\r
5589     var firstByIndex = elements.findAll(function(element) {\r
5590       return element.hasAttribute('tabIndex') && element.tabIndex >= 0;\r
5591     }).sortBy(function(element) { return element.tabIndex }).first();\r
5592 \r
5593     return firstByIndex ? firstByIndex : elements.find(function(element) {\r
5594       return /^(?:input|select|textarea)$/i.test(element.tagName);\r
5595     });\r
5596   },\r
5597 \r
5598   focusFirstElement: function(form) {\r
5599     form = $(form);\r
5600     var element = form.findFirstElement();\r
5601     if (element) element.activate();\r
5602     return form;\r
5603   },\r
5604 \r
5605   request: function(form, options) {\r
5606     form = $(form), options = Object.clone(options || { });\r
5607 \r
5608     var params = options.parameters, action = form.readAttribute('action') || '';\r
5609     if (action.blank()) action = window.location.href;\r
5610     options.parameters = form.serialize(true);\r
5611 \r
5612     if (params) {\r
5613       if (Object.isString(params)) params = params.toQueryParams();\r
5614       Object.extend(options.parameters, params);\r
5615     }\r
5616 \r
5617     if (form.hasAttribute('method') && !options.method)\r
5618       options.method = form.method;\r
5619 \r
5620     return new Ajax.Request(action, options);\r
5621   }\r
5622 };\r
5623 \r
5624 /*--------------------------------------------------------------------------*/\r
5625 \r
5626 \r
5627 Form.Element = {\r
5628   focus: function(element) {\r
5629     $(element).focus();\r
5630     return element;\r
5631   },\r
5632 \r
5633   select: function(element) {\r
5634     $(element).select();\r
5635     return element;\r
5636   }\r
5637 };\r
5638 \r
5639 Form.Element.Methods = {\r
5640 \r
5641   serialize: function(element) {\r
5642     element = $(element);\r
5643     if (!element.disabled && element.name) {\r
5644       var value = element.getValue();\r
5645       if (value != undefined) {\r
5646         var pair = { };\r
5647         pair[element.name] = value;\r
5648         return Object.toQueryString(pair);\r
5649       }\r
5650     }\r
5651     return '';\r
5652   },\r
5653 \r
5654   getValue: function(element) {\r
5655     element = $(element);\r
5656     var method = element.tagName.toLowerCase();\r
5657     return Form.Element.Serializers[method](element);\r
5658   },\r
5659 \r
5660   setValue: function(element, value) {\r
5661     element = $(element);\r
5662     var method = element.tagName.toLowerCase();\r
5663     Form.Element.Serializers[method](element, value);\r
5664     return element;\r
5665   },\r
5666 \r
5667   clear: function(element) {\r
5668     $(element).value = '';\r
5669     return element;\r
5670   },\r
5671 \r
5672   present: function(element) {\r
5673     return $(element).value != '';\r
5674   },\r
5675 \r
5676   activate: function(element) {\r
5677     element = $(element);\r
5678     try {\r
5679       element.focus();\r
5680       if (element.select && (element.tagName.toLowerCase() != 'input' ||\r
5681           !(/^(?:button|reset|submit)$/i.test(element.type))))\r
5682         element.select();\r
5683     } catch (e) { }\r
5684     return element;\r
5685   },\r
5686 \r
5687   disable: function(element) {\r
5688     element = $(element);\r
5689     element.disabled = true;\r
5690     return element;\r
5691   },\r
5692 \r
5693   enable: function(element) {\r
5694     element = $(element);\r
5695     element.disabled = false;\r
5696     return element;\r
5697   }\r
5698 };\r
5699 \r
5700 /*--------------------------------------------------------------------------*/\r
5701 \r
5702 var Field = Form.Element;\r
5703 \r
5704 var $F = Form.Element.Methods.getValue;\r
5705 \r
5706 /*--------------------------------------------------------------------------*/\r
5707 \r
5708 Form.Element.Serializers = (function() {\r
5709   function input(element, value) {\r
5710     switch (element.type.toLowerCase()) {\r
5711       case 'checkbox':\r
5712       case 'radio':\r
5713         return inputSelector(element, value);\r
5714       default:\r
5715         return valueSelector(element, value);\r
5716     }\r
5717   }\r
5718 \r
5719   function inputSelector(element, value) {\r
5720     if (Object.isUndefined(value))\r
5721       return element.checked ? element.value : null;\r
5722     else element.checked = !!value;\r
5723   }\r
5724 \r
5725   function valueSelector(element, value) {\r
5726     if (Object.isUndefined(value)) return element.value;\r
5727     else element.value = value;\r
5728   }\r
5729 \r
5730   function select(element, value) {\r
5731     if (Object.isUndefined(value))\r
5732       return (element.type === 'select-one' ? selectOne : selectMany)(element);\r
5733 \r
5734     var opt, currentValue, single = !Object.isArray(value);\r
5735     for (var i = 0, length = element.length; i < length; i++) {\r
5736       opt = element.options[i];\r
5737       currentValue = this.optionValue(opt);\r
5738       if (single) {\r
5739         if (currentValue == value) {\r
5740           opt.selected = true;\r
5741           return;\r
5742         }\r
5743       }\r
5744       else opt.selected = value.include(currentValue);\r
5745     }\r
5746   }\r
5747 \r
5748   function selectOne(element) {\r
5749     var index = element.selectedIndex;\r
5750     return index >= 0 ? optionValue(element.options[index]) : null;\r
5751   }\r
5752 \r
5753   function selectMany(element) {\r
5754     var values, length = element.length;\r
5755     if (!length) return null;\r
5756 \r
5757     for (var i = 0, values = []; i < length; i++) {\r
5758       var opt = element.options[i];\r
5759       if (opt.selected) values.push(optionValue(opt));\r
5760     }\r
5761     return values;\r
5762   }\r
5763 \r
5764   function optionValue(opt) {\r
5765     return Element.hasAttribute(opt, 'value') ? opt.value : opt.text;\r
5766   }\r
5767 \r
5768   return {\r
5769     input:         input,\r
5770     inputSelector: inputSelector,\r
5771     textarea:      valueSelector,\r
5772     select:        select,\r
5773     selectOne:     selectOne,\r
5774     selectMany:    selectMany,\r
5775     optionValue:   optionValue,\r
5776     button:        valueSelector\r
5777   };\r
5778 })();\r
5779 \r
5780 /*--------------------------------------------------------------------------*/\r
5781 \r
5782 \r
5783 Abstract.TimedObserver = Class.create(PeriodicalExecuter, {\r
5784   initialize: function($super, element, frequency, callback) {\r
5785     $super(callback, frequency);\r
5786     this.element   = $(element);\r
5787     this.lastValue = this.getValue();\r
5788   },\r
5789 \r
5790   execute: function() {\r
5791     var value = this.getValue();\r
5792     if (Object.isString(this.lastValue) && Object.isString(value) ?\r
5793         this.lastValue != value : String(this.lastValue) != String(value)) {\r
5794       this.callback(this.element, value);\r
5795       this.lastValue = value;\r
5796     }\r
5797   }\r
5798 });\r
5799 \r
5800 Form.Element.Observer = Class.create(Abstract.TimedObserver, {\r
5801   getValue: function() {\r
5802     return Form.Element.getValue(this.element);\r
5803   }\r
5804 });\r
5805 \r
5806 Form.Observer = Class.create(Abstract.TimedObserver, {\r
5807   getValue: function() {\r
5808     return Form.serialize(this.element);\r
5809   }\r
5810 });\r
5811 \r
5812 /*--------------------------------------------------------------------------*/\r
5813 \r
5814 Abstract.EventObserver = Class.create({\r
5815   initialize: function(element, callback) {\r
5816     this.element  = $(element);\r
5817     this.callback = callback;\r
5818 \r
5819     this.lastValue = this.getValue();\r
5820     if (this.element.tagName.toLowerCase() == 'form')\r
5821       this.registerFormCallbacks();\r
5822     else\r
5823       this.registerCallback(this.element);\r
5824   },\r
5825 \r
5826   onElementEvent: function() {\r
5827     var value = this.getValue();\r
5828     if (this.lastValue != value) {\r
5829       this.callback(this.element, value);\r
5830       this.lastValue = value;\r
5831     }\r
5832   },\r
5833 \r
5834   registerFormCallbacks: function() {\r
5835     Form.getElements(this.element).each(this.registerCallback, this);\r
5836   },\r
5837 \r
5838   registerCallback: function(element) {\r
5839     if (element.type) {\r
5840       switch (element.type.toLowerCase()) {\r
5841         case 'checkbox':\r
5842         case 'radio':\r
5843           Event.observe(element, 'click', this.onElementEvent.bind(this));\r
5844           break;\r
5845         default:\r
5846           Event.observe(element, 'change', this.onElementEvent.bind(this));\r
5847           break;\r
5848       }\r
5849     }\r
5850   }\r
5851 });\r
5852 \r
5853 Form.Element.EventObserver = Class.create(Abstract.EventObserver, {\r
5854   getValue: function() {\r
5855     return Form.Element.getValue(this.element);\r
5856   }\r
5857 });\r
5858 \r
5859 Form.EventObserver = Class.create(Abstract.EventObserver, {\r
5860   getValue: function() {\r
5861     return Form.serialize(this.element);\r
5862   }\r
5863 });\r
5864 (function() {\r
5865 \r
5866   var Event = {\r
5867     KEY_BACKSPACE: 8,\r
5868     KEY_TAB:       9,\r
5869     KEY_RETURN:   13,\r
5870     KEY_ESC:      27,\r
5871     KEY_LEFT:     37,\r
5872     KEY_UP:       38,\r
5873     KEY_RIGHT:    39,\r
5874     KEY_DOWN:     40,\r
5875     KEY_DELETE:   46,\r
5876     KEY_HOME:     36,\r
5877     KEY_END:      35,\r
5878     KEY_PAGEUP:   33,\r
5879     KEY_PAGEDOWN: 34,\r
5880     KEY_INSERT:   45,\r
5881 \r
5882     cache: {}\r
5883   };\r
5884 \r
5885   var docEl = document.documentElement;\r
5886   var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl\r
5887     && 'onmouseleave' in docEl;\r
5888 \r
5889 \r
5890 \r
5891   var isIELegacyEvent = function(event) { return false; };\r
5892 \r
5893   if (window.attachEvent) {\r
5894     if (window.addEventListener) {\r
5895       isIELegacyEvent = function(event) {\r
5896         return !(event instanceof window.Event);\r
5897       };\r
5898     } else {\r
5899       isIELegacyEvent = function(event) { return true; };\r
5900     }\r
5901   }\r
5902 \r
5903   var _isButton;\r
5904 \r
5905   function _isButtonForDOMEvents(event, code) {\r
5906     return event.which ? (event.which === code + 1) : (event.button === code);\r
5907   }\r
5908 \r
5909   var legacyButtonMap = { 0: 1, 1: 4, 2: 2 };\r
5910   function _isButtonForLegacyEvents(event, code) {\r
5911     return event.button === legacyButtonMap[code];\r
5912   }\r
5913 \r
5914   function _isButtonForWebKit(event, code) {\r
5915     switch (code) {\r
5916       case 0: return event.which == 1 && !event.metaKey;\r
5917       case 1: return event.which == 2 || (event.which == 1 && event.metaKey);\r
5918       case 2: return event.which == 3;\r
5919       default: return false;\r
5920     }\r
5921   }\r
5922 \r
5923   if (window.attachEvent) {\r
5924     if (!window.addEventListener) {\r
5925       _isButton = _isButtonForLegacyEvents;\r
5926     } else {\r
5927       _isButton = function(event, code) {\r
5928         return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) :\r
5929          _isButtonForDOMEvents(event, code);\r
5930       }\r
5931     }\r
5932   } else if (Prototype.Browser.WebKit) {\r
5933     _isButton = _isButtonForWebKit;\r
5934   } else {\r
5935     _isButton = _isButtonForDOMEvents;\r
5936   }\r
5937 \r
5938   function isLeftClick(event)   { return _isButton(event, 0) }\r
5939 \r
5940   function isMiddleClick(event) { return _isButton(event, 1) }\r
5941 \r
5942   function isRightClick(event)  { return _isButton(event, 2) }\r
5943 \r
5944   function element(event) {\r
5945     event = Event.extend(event);\r
5946 \r
5947     var node = event.target, type = event.type,\r
5948      currentTarget = event.currentTarget;\r
5949 \r
5950     if (currentTarget && currentTarget.tagName) {\r
5951       if (type === 'load' || type === 'error' ||\r
5952         (type === 'click' && currentTarget.tagName.toLowerCase() === 'input'\r
5953           && currentTarget.type === 'radio'))\r
5954             node = currentTarget;\r
5955     }\r
5956 \r
5957     if (node.nodeType == Node.TEXT_NODE)\r
5958       node = node.parentNode;\r
5959 \r
5960     return Element.extend(node);\r
5961   }\r
5962 \r
5963   function findElement(event, expression) {\r
5964     var element = Event.element(event);\r
5965 \r
5966     if (!expression) return element;\r
5967     while (element) {\r
5968       if (Object.isElement(element) && Prototype.Selector.match(element, expression)) {\r
5969         return Element.extend(element);\r
5970       }\r
5971       element = element.parentNode;\r
5972     }\r
5973   }\r
5974 \r
5975   function pointer(event) {\r
5976     return { x: pointerX(event), y: pointerY(event) };\r
5977   }\r
5978 \r
5979   function pointerX(event) {\r
5980     var docElement = document.documentElement,\r
5981      body = document.body || { scrollLeft: 0 };\r
5982 \r
5983     return event.pageX || (event.clientX +\r
5984       (docElement.scrollLeft || body.scrollLeft) -\r
5985       (docElement.clientLeft || 0));\r
5986   }\r
5987 \r
5988   function pointerY(event) {\r
5989     var docElement = document.documentElement,\r
5990      body = document.body || { scrollTop: 0 };\r
5991 \r
5992     return  event.pageY || (event.clientY +\r
5993        (docElement.scrollTop || body.scrollTop) -\r
5994        (docElement.clientTop || 0));\r
5995   }\r
5996 \r
5997 \r
5998   function stop(event) {\r
5999     Event.extend(event);\r
6000     event.preventDefault();\r
6001     event.stopPropagation();\r
6002 \r
6003     event.stopped = true;\r
6004   }\r
6005 \r
6006 \r
6007   Event.Methods = {\r
6008     isLeftClick:   isLeftClick,\r
6009     isMiddleClick: isMiddleClick,\r
6010     isRightClick:  isRightClick,\r
6011 \r
6012     element:     element,\r
6013     findElement: findElement,\r
6014 \r
6015     pointer:  pointer,\r
6016     pointerX: pointerX,\r
6017     pointerY: pointerY,\r
6018 \r
6019     stop: stop\r
6020   };\r
6021 \r
6022   var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {\r
6023     m[name] = Event.Methods[name].methodize();\r
6024     return m;\r
6025   });\r
6026 \r
6027   if (window.attachEvent) {\r
6028     var _relatedTarget = function (event) {\r
6029       var element;\r
6030       switch (event.type) {\r
6031         case 'mouseover':\r
6032         case 'mouseenter':\r
6033           element = event.fromElement;\r
6034           break;\r
6035         case 'mouseout':\r
6036         case 'mouseleave':\r
6037           element = event.toElement;\r
6038           break;\r
6039         default:\r
6040           return null;\r
6041       }\r
6042       return Element.extend(element);\r
6043     }\r
6044 \r
6045     var additionalMethods = {\r
6046       stopPropagation: function() { this.cancelBubble = true },\r
6047       preventDefault:  function() { this.returnValue = false },\r
6048       inspect: function() { return '[object Event]' }\r
6049     };\r
6050 \r
6051     Event.extend = function(event, element) {\r
6052       if (!event) return false;\r
6053 \r
6054       if (!isIELegacyEvent(event)) return event;\r
6055 \r
6056       if (event._extendedByPrototype) return event;\r
6057       event._extendedByPrototype = Prototype.emptyFunction;\r
6058 \r
6059       var pointer = Event.pointer(event);\r
6060 \r
6061       Object.extend(event, {\r
6062         target: event.srcElement || element,\r
6063         relatedTarget: _relatedTarget(event),\r
6064         pageX:  pointer.x,\r
6065         pageY:  pointer.y\r
6066       });\r
6067 \r
6068       Object.extend(event, methods);\r
6069       Object.extend(event, additionalMethods);\r
6070 \r
6071       return event;\r
6072     };\r
6073   } else {\r
6074     Event.extend = Prototype.K;\r
6075   }\r
6076 \r
6077   if (window.addEventListener) {\r
6078     Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__;\r
6079     Object.extend(Event.prototype, methods);\r
6080   }\r
6081 \r
6082   function _createResponder(element, eventName, handler) {\r
6083     var registry = Element.retrieve(element, 'prototype_event_registry');\r
6084 \r
6085     if (Object.isUndefined(registry)) {\r
6086       CACHE.push(element);\r
6087       registry = Element.retrieve(element, 'prototype_event_registry', $H());\r
6088     }\r
6089 \r
6090     var respondersForEvent = registry.get(eventName);\r
6091     if (Object.isUndefined(respondersForEvent)) {\r
6092       respondersForEvent = [];\r
6093       registry.set(eventName, respondersForEvent);\r
6094     }\r
6095 \r
6096     if (respondersForEvent.pluck('handler').include(handler)) return false;\r
6097 \r
6098     var responder;\r
6099     if (eventName.include(":")) {\r
6100       responder = function(event) {\r
6101         if (Object.isUndefined(event.eventName))\r
6102           return false;\r
6103 \r
6104         if (event.eventName !== eventName)\r
6105           return false;\r
6106 \r
6107         Event.extend(event, element);\r
6108         handler.call(element, event);\r
6109       };\r
6110     } else {\r
6111       if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&\r
6112        (eventName === "mouseenter" || eventName === "mouseleave")) {\r
6113         if (eventName === "mouseenter" || eventName === "mouseleave") {\r
6114           responder = function(event) {\r
6115             Event.extend(event, element);\r
6116 \r
6117             var parent = event.relatedTarget;\r
6118             while (parent && parent !== element) {\r
6119               try { parent = parent.parentNode; }\r
6120               catch(e) { parent = element; }\r
6121             }\r
6122 \r
6123             if (parent === element) return;\r
6124 \r
6125             handler.call(element, event);\r
6126           };\r
6127         }\r
6128       } else {\r
6129         responder = function(event) {\r
6130           Event.extend(event, element);\r
6131           handler.call(element, event);\r
6132         };\r
6133       }\r
6134     }\r
6135 \r
6136     responder.handler = handler;\r
6137     respondersForEvent.push(responder);\r
6138     return responder;\r
6139   }\r
6140 \r
6141   function _destroyCache() {\r
6142     for (var i = 0, length = CACHE.length; i < length; i++) {\r
6143       Event.stopObserving(CACHE[i]);\r
6144       CACHE[i] = null;\r
6145     }\r
6146   }\r
6147 \r
6148   var CACHE = [];\r
6149 \r
6150   if (Prototype.Browser.IE)\r
6151     window.attachEvent('onunload', _destroyCache);\r
6152 \r
6153   if (Prototype.Browser.WebKit)\r
6154     window.addEventListener('unload', Prototype.emptyFunction, false);\r
6155 \r
6156 \r
6157   var _getDOMEventName = Prototype.K,\r
6158       translations = { mouseenter: "mouseover", mouseleave: "mouseout" };\r
6159 \r
6160   if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) {\r
6161     _getDOMEventName = function(eventName) {\r
6162       return (translations[eventName] || eventName);\r
6163     };\r
6164   }\r
6165 \r
6166   function observe(element, eventName, handler) {\r
6167     element = $(element);\r
6168 \r
6169     var responder = _createResponder(element, eventName, handler);\r
6170 \r
6171     if (!responder) return element;\r
6172 \r
6173     if (eventName.include(':')) {\r
6174       if (element.addEventListener)\r
6175         element.addEventListener("dataavailable", responder, false);\r
6176       else {\r
6177         element.attachEvent("ondataavailable", responder);\r
6178         element.attachEvent("onlosecapture", responder);\r
6179       }\r
6180     } else {\r
6181       var actualEventName = _getDOMEventName(eventName);\r
6182 \r
6183       if (element.addEventListener)\r
6184         element.addEventListener(actualEventName, responder, false);\r
6185       else\r
6186         element.attachEvent("on" + actualEventName, responder);\r
6187     }\r
6188 \r
6189     return element;\r
6190   }\r
6191 \r
6192   function stopObserving(element, eventName, handler) {\r
6193     element = $(element);\r
6194 \r
6195     var registry = Element.retrieve(element, 'prototype_event_registry');\r
6196     if (!registry) return element;\r
6197 \r
6198     if (!eventName) {\r
6199       registry.each( function(pair) {\r
6200         var eventName = pair.key;\r
6201         stopObserving(element, eventName);\r
6202       });\r
6203       return element;\r
6204     }\r
6205 \r
6206     var responders = registry.get(eventName);\r
6207     if (!responders) return element;\r
6208 \r
6209     if (!handler) {\r
6210       responders.each(function(r) {\r
6211         stopObserving(element, eventName, r.handler);\r
6212       });\r
6213       return element;\r
6214     }\r
6215 \r
6216     var i = responders.length, responder;\r
6217     while (i--) {\r
6218       if (responders[i].handler === handler) {\r
6219         responder = responders[i];\r
6220         break;\r
6221       }\r
6222     }\r
6223     if (!responder) return element;\r
6224 \r
6225     if (eventName.include(':')) {\r
6226       if (element.removeEventListener)\r
6227         element.removeEventListener("dataavailable", responder, false);\r
6228       else {\r
6229         element.detachEvent("ondataavailable", responder);\r
6230         element.detachEvent("onlosecapture", responder);\r
6231       }\r
6232     } else {\r
6233       var actualEventName = _getDOMEventName(eventName);\r
6234       if (element.removeEventListener)\r
6235         element.removeEventListener(actualEventName, responder, false);\r
6236       else\r
6237         element.detachEvent('on' + actualEventName, responder);\r
6238     }\r
6239 \r
6240     registry.set(eventName, responders.without(responder));\r
6241 \r
6242     return element;\r
6243   }\r
6244 \r
6245   function fire(element, eventName, memo, bubble) {\r
6246     element = $(element);\r
6247 \r
6248     if (Object.isUndefined(bubble))\r
6249       bubble = true;\r
6250 \r
6251     if (element == document && document.createEvent && !element.dispatchEvent)\r
6252       element = document.documentElement;\r
6253 \r
6254     var event;\r
6255     if (document.createEvent) {\r
6256       event = document.createEvent('HTMLEvents');\r
6257       event.initEvent('dataavailable', bubble, true);\r
6258     } else {\r
6259       event = document.createEventObject();\r
6260       event.eventType = bubble ? 'ondataavailable' : 'onlosecapture';\r
6261     }\r
6262 \r
6263     event.eventName = eventName;\r
6264     event.memo = memo || { };\r
6265 \r
6266     if (document.createEvent)\r
6267       element.dispatchEvent(event);\r
6268     else\r
6269       element.fireEvent(event.eventType, event);\r
6270 \r
6271     return Event.extend(event);\r
6272   }\r
6273 \r
6274   Event.Handler = Class.create({\r
6275     initialize: function(element, eventName, selector, callback) {\r
6276       this.element   = $(element);\r
6277       this.eventName = eventName;\r
6278       this.selector  = selector;\r
6279       this.callback  = callback;\r
6280       this.handler   = this.handleEvent.bind(this);\r
6281     },\r
6282 \r
6283     start: function() {\r
6284       Event.observe(this.element, this.eventName, this.handler);\r
6285       return this;\r
6286     },\r
6287 \r
6288     stop: function() {\r
6289       Event.stopObserving(this.element, this.eventName, this.handler);\r
6290       return this;\r
6291     },\r
6292 \r
6293     handleEvent: function(event) {\r
6294       var element = Event.findElement(event, this.selector);\r
6295       if (element) this.callback.call(this.element, event, element);\r
6296     }\r
6297   });\r
6298 \r
6299   function on(element, eventName, selector, callback) {\r
6300     element = $(element);\r
6301     if (Object.isFunction(selector) && Object.isUndefined(callback)) {\r
6302       callback = selector, selector = null;\r
6303     }\r
6304 \r
6305     return new Event.Handler(element, eventName, selector, callback).start();\r
6306   }\r
6307 \r
6308   Object.extend(Event, Event.Methods);\r
6309 \r
6310   Object.extend(Event, {\r
6311     fire:          fire,\r
6312     observe:       observe,\r
6313     stopObserving: stopObserving,\r
6314     on:            on\r
6315   });\r
6316 \r
6317   Element.addMethods({\r
6318     fire:          fire,\r
6319 \r
6320     observe:       observe,\r
6321 \r
6322     stopObserving: stopObserving,\r
6323 \r
6324     on:            on\r
6325   });\r
6326 \r
6327   Object.extend(document, {\r
6328     fire:          fire.methodize(),\r
6329 \r
6330     observe:       observe.methodize(),\r
6331 \r
6332     stopObserving: stopObserving.methodize(),\r
6333 \r
6334     on:            on.methodize(),\r
6335 \r
6336     loaded:        false\r
6337   });\r
6338 \r
6339   if (window.Event) Object.extend(window.Event, Event);\r
6340   else window.Event = Event;\r
6341 })();\r
6342 \r
6343 (function() {\r
6344   /* Support for the DOMContentLoaded event is based on work by Dan Webb,\r
6345      Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */\r
6346 \r
6347   var timer;\r
6348 \r
6349   function fireContentLoadedEvent() {\r
6350     if (document.loaded) return;\r
6351     if (timer) window.clearTimeout(timer);\r
6352     document.loaded = true;\r
6353     document.fire('dom:loaded');\r
6354   }\r
6355 \r
6356   function checkReadyState() {\r
6357     if (document.readyState === 'complete') {\r
6358       document.stopObserving('readystatechange', checkReadyState);\r
6359       fireContentLoadedEvent();\r
6360     }\r
6361   }\r
6362 \r
6363   function pollDoScroll() {\r
6364     try { document.documentElement.doScroll('left'); }\r
6365     catch(e) {\r
6366       timer = pollDoScroll.defer();\r
6367       return;\r
6368     }\r
6369     fireContentLoadedEvent();\r
6370   }\r
6371 \r
6372   if (document.addEventListener) {\r
6373     document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);\r
6374   } else {\r
6375     document.observe('readystatechange', checkReadyState);\r
6376     if (window == top)\r
6377       timer = pollDoScroll.defer();\r
6378   }\r
6379 \r
6380   Event.observe(window, 'load', fireContentLoadedEvent);\r
6381 })();\r
6382 \r
6383 \r
6384 Element.addMethods();\r
6385 /*------------------------------- DEPRECATED -------------------------------*/\r
6386 \r
6387 Hash.toQueryString = Object.toQueryString;\r
6388 \r
6389 var Toggle = { display: Element.toggle };\r
6390 \r
6391 Element.Methods.childOf = Element.Methods.descendantOf;\r
6392 \r
6393 var Insertion = {\r
6394   Before: function(element, content) {\r
6395     return Element.insert(element, {before:content});\r
6396   },\r
6397 \r
6398   Top: function(element, content) {\r
6399     return Element.insert(element, {top:content});\r
6400   },\r
6401 \r
6402   Bottom: function(element, content) {\r
6403     return Element.insert(element, {bottom:content});\r
6404   },\r
6405 \r
6406   After: function(element, content) {\r
6407     return Element.insert(element, {after:content});\r
6408   }\r
6409 };\r
6410 \r
6411 var $continue = new Error('"throw $continue" is deprecated, use "return" instead');\r
6412 \r
6413 var Position = {\r
6414   includeScrollOffsets: false,\r
6415 \r
6416   prepare: function() {\r
6417     this.deltaX =  window.pageXOffset\r
6418                 || document.documentElement.scrollLeft\r
6419                 || document.body.scrollLeft\r
6420                 || 0;\r
6421     this.deltaY =  window.pageYOffset\r
6422                 || document.documentElement.scrollTop\r
6423                 || document.body.scrollTop\r
6424                 || 0;\r
6425   },\r
6426 \r
6427   within: function(element, x, y) {\r
6428     if (this.includeScrollOffsets)\r
6429       return this.withinIncludingScrolloffsets(element, x, y);\r
6430     this.xcomp = x;\r
6431     this.ycomp = y;\r
6432     this.offset = Element.cumulativeOffset(element);\r
6433 \r
6434     return (y >= this.offset[1] &&\r
6435             y <  this.offset[1] + element.offsetHeight &&\r
6436             x >= this.offset[0] &&\r
6437             x <  this.offset[0] + element.offsetWidth);\r
6438   },\r
6439 \r
6440   withinIncludingScrolloffsets: function(element, x, y) {\r
6441     var offsetcache = Element.cumulativeScrollOffset(element);\r
6442 \r
6443     this.xcomp = x + offsetcache[0] - this.deltaX;\r
6444     this.ycomp = y + offsetcache[1] - this.deltaY;\r
6445     this.offset = Element.cumulativeOffset(element);\r
6446 \r
6447     return (this.ycomp >= this.offset[1] &&\r
6448             this.ycomp <  this.offset[1] + element.offsetHeight &&\r
6449             this.xcomp >= this.offset[0] &&\r
6450             this.xcomp <  this.offset[0] + element.offsetWidth);\r
6451   },\r
6452 \r
6453   overlap: function(mode, element) {\r
6454     if (!mode) return 0;\r
6455     if (mode == 'vertical')\r
6456       return ((this.offset[1] + element.offsetHeight) - this.ycomp) /\r
6457         element.offsetHeight;\r
6458     if (mode == 'horizontal')\r
6459       return ((this.offset[0] + element.offsetWidth) - this.xcomp) /\r
6460         element.offsetWidth;\r
6461   },\r
6462 \r
6463 \r
6464   cumulativeOffset: Element.Methods.cumulativeOffset,\r
6465 \r
6466   positionedOffset: Element.Methods.positionedOffset,\r
6467 \r
6468   absolutize: function(element) {\r
6469     Position.prepare();\r
6470     return Element.absolutize(element);\r
6471   },\r
6472 \r
6473   relativize: function(element) {\r
6474     Position.prepare();\r
6475     return Element.relativize(element);\r
6476   },\r
6477 \r
6478   realOffset: Element.Methods.cumulativeScrollOffset,\r
6479 \r
6480   offsetParent: Element.Methods.getOffsetParent,\r
6481 \r
6482   page: Element.Methods.viewportOffset,\r
6483 \r
6484   clone: function(source, target, options) {\r
6485     options = options || { };\r
6486     return Element.clonePosition(target, source, options);\r
6487   }\r
6488 };\r
6489 \r
6490 /*--------------------------------------------------------------------------*/\r
6491 \r
6492 if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){\r
6493   function iter(name) {\r
6494     return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";\r
6495   }\r
6496 \r
6497   instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?\r
6498   function(element, className) {\r
6499     className = className.toString().strip();\r
6500     var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);\r
6501     return cond ? document._getElementsByXPath('.//*' + cond, element) : [];\r
6502   } : function(element, className) {\r
6503     className = className.toString().strip();\r
6504     var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);\r
6505     if (!classNames && !className) return elements;\r
6506 \r
6507     var nodes = $(element).getElementsByTagName('*');\r
6508     className = ' ' + className + ' ';\r
6509 \r
6510     for (var i = 0, child, cn; child = nodes[i]; i++) {\r
6511       if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||\r
6512           (classNames && classNames.all(function(name) {\r
6513             return !name.toString().blank() && cn.include(' ' + name + ' ');\r
6514           }))))\r
6515         elements.push(Element.extend(child));\r
6516     }\r
6517     return elements;\r
6518   };\r
6519 \r
6520   return function(className, parentElement) {\r
6521     return $(parentElement || document.body).getElementsByClassName(className);\r
6522   };\r
6523 }(Element.Methods);\r
6524 \r
6525 /*--------------------------------------------------------------------------*/\r
6526 \r
6527 Element.ClassNames = Class.create();\r
6528 Element.ClassNames.prototype = {\r
6529   initialize: function(element) {\r
6530     this.element = $(element);\r
6531   },\r
6532 \r
6533   _each: function(iterator) {\r
6534     this.element.className.split(/\s+/).select(function(name) {\r
6535       return name.length > 0;\r
6536     })._each(iterator);\r
6537   },\r
6538 \r
6539   set: function(className) {\r
6540     this.element.className = className;\r
6541   },\r
6542 \r
6543   add: function(classNameToAdd) {\r
6544     if (this.include(classNameToAdd)) return;\r
6545     this.set($A(this).concat(classNameToAdd).join(' '));\r
6546   },\r
6547 \r
6548   remove: function(classNameToRemove) {\r
6549     if (!this.include(classNameToRemove)) return;\r
6550     this.set($A(this).without(classNameToRemove).join(' '));\r
6551   },\r
6552 \r
6553   toString: function() {\r
6554     return $A(this).join(' ');\r
6555   }\r
6556 };\r
6557 \r
6558 Object.extend(Element.ClassNames.prototype, Enumerable);\r
6559 \r
6560 /*--------------------------------------------------------------------------*/\r
6561 \r
6562 (function() {\r
6563   window.Selector = Class.create({\r
6564     initialize: function(expression) {\r
6565       this.expression = expression.strip();\r
6566     },\r
6567 \r
6568     findElements: function(rootElement) {\r
6569       return Prototype.Selector.select(this.expression, rootElement);\r
6570     },\r
6571 \r
6572     match: function(element) {\r
6573       return Prototype.Selector.match(element, this.expression);\r
6574     },\r
6575 \r
6576     toString: function() {\r
6577       return this.expression;\r
6578     },\r
6579 \r
6580     inspect: function() {\r
6581       return "#<Selector: " + this.expression + ">";\r
6582     }\r
6583   });\r
6584 \r
6585   Object.extend(Selector, {\r
6586     matchElements: function(elements, expression) {\r
6587       var match = Prototype.Selector.match,\r
6588           results = [];\r
6589 \r
6590       for (var i = 0, length = elements.length; i < length; i++) {\r
6591         var element = elements[i];\r
6592         if (match(element, expression)) {\r
6593           results.push(Element.extend(element));\r
6594         }\r
6595       }\r
6596       return results;\r
6597     },\r
6598 \r
6599     findElement: function(elements, expression, index) {\r
6600       index = index || 0;\r
6601       var matchIndex = 0, element;\r
6602       for (var i = 0, length = elements.length; i < length; i++) {\r
6603         element = elements[i];\r
6604         if (Prototype.Selector.match(element, expression) && index === matchIndex++) {\r
6605           return Element.extend(element);\r
6606         }\r
6607       }\r
6608     },\r
6609 \r
6610     findChildElements: function(element, expressions) {\r
6611       var selector = expressions.toArray().join(', ');\r
6612       return Prototype.Selector.select(selector, element || document);\r
6613     }\r
6614   });\r
6615 })();\r
6616 </script>\r
6617 \r
6618 \r
6619 \r
6620 <script id="slides280" type="x">\r
6621             //create a new timestamp to monitor launch time\r
6622             _LAUNCH_TIME = new Date();\r
6623     \r
6624             var path = document.location.href;\r
6625             \r
6626             path = path.substr(0, path.lastIndexOf('/') + 1);\r
6627             \r
6628             document.write("<base href=\"" + path + "1224293852/" + "\"><!--[if IE]><"+"/base><![endif]-->");\r
6629         \r
6630 \r
6631 \r
6632 \r
6633 /*\r
6634  * Objective-J.js\r
6635  * Objective-J\r
6636  *\r
6637  * Created by Francisco Tolmasky.\r
6638  * Copyright 2008, 280 North, Inc.\r
6639  *\r
6640  * This library is free software; you can redistribute it and/or\r
6641  * modify it under the terms of the GNU Lesser General Public\r
6642  * License as published by the Free Software Foundation; either\r
6643  * version 2.1 of the License, or (at your option) any later version.\r
6644  *\r
6645  * This library is distributed in the hope that it will be useful,\r
6646  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
6647  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
6648  * Lesser General Public License for more details.\r
6649  *\r
6650  * You should have received a copy of the GNU Lesser General Public\r
6651  * License along with this library; if not, write to the Free Software\r
6652  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r
6653  */\r
6654 \r
6655 var NO = false,\r
6656     YES = true,\r
6657     nil = null,\r
6658     Nil = null,\r
6659     NULL = null,\r
6660     ABS = Math.abs,\r
6661     ASIN = Math.asin,\r
6662     ACOS = Math.acos,\r
6663     ATAN = Math.atan,\r
6664     ATAN2 = Math.atan2,\r
6665     SIN = Math.sin,\r
6666     COS = Math.cos,\r
6667     TAN = Math.tan,\r
6668     EXP = Math.exp,\r
6669     POW = Math.pow,\r
6670     CEIL = Math.ceil,\r
6671     FLOOR = Math.floor,\r
6672     ROUND = Math.round,\r
6673     MIN = Math.min,\r
6674     MAX = Math.max,\r
6675     RAND = Math.random,\r
6676     SQRT = Math.sqrt,\r
6677     E = Math.E,\r
6678     LN2 = Math.LN2,\r
6679     LN10 = Math.LN10,\r
6680     LOG2E = Math.LOG2E,\r
6681     LOG10E = Math.LOG10E,\r
6682     PI = Math.PI,\r
6683     PI2 = Math.PI * 2.0,\r
6684     PI_2 = Math.PI / 2.0,\r
6685     SQRT1_2 = Math.SQRT1_2,\r
6686     SQRT2 = Math.SQRT2;\r
6687 var objj_continue_alerting = NO;\r
6688 function objj_alert(aString)\r
6689 {\r
6690     if (!objj_continue_alerting)\r
6691         return;\r
6692     objj_continue_alerting = confirm(aString + "\n\nClick cancel to prevent further alerts.");\r
6693 }\r
6694 function objj_fprintf(stream, string)\r
6695 {\r
6696     stream(string);\r
6697 }\r
6698 function objj_printf(string)\r
6699 {\r
6700     objj_fprintf(alert, string);\r
6701 }\r
6702 var CLS_CLASS = 0x1,\r
6703     CLS_META = 0x2,\r
6704     CLS_INITIALIZED = 0x4,\r
6705     CLS_INITIALIZING = 0x8;\r
6706 function objj_ivar( aName, aType)\r
6707 {\r
6708     this.name = aName;\r
6709     this.type = aType;\r
6710 }\r
6711 function objj_method( aName, anImplementation, types)\r
6712 {\r
6713     this.name = aName;\r
6714     this.method_imp = anImplementation;\r
6715     this.types = types;\r
6716 }\r
6717 function objj_class()\r
6718 {\r
6719     this.isa = NULL;\r
6720     this.super_class = NULL;\r
6721     this.sub_classes = [];\r
6722     this.name = NULL;\r
6723     this.info = 0;\r
6724     this.ivars = [];\r
6725     this.method_list = [];\r
6726     this.method_hash = {};\r
6727     this.method_store = function() { };\r
6728     this.method_dtable = this.method_store.prototype;\r
6729     this.allocator = function() { };\r
6730     this.__address = -1;\r
6731 }\r
6732 function objj_object()\r
6733 {\r
6734     this.isa = NULL;\r
6735     this.__address = -1;\r
6736 }\r
6737 var OBJECT_COUNT = 0;\r
6738 function _objj_generateObjectHash()\r
6739 {\r
6740     return OBJECT_COUNT++;\r
6741 }\r
6742 function class_getName( aClass)\r
6743 {\r
6744     if (aClass == Nil)\r
6745         return "";\r
6746     return aClass.name;\r
6747 }\r
6748 function class_isMetaClass( aClass)\r
6749 {\r
6750     if (!aClass)\r
6751         return NO;\r
6752     return ((aClass.info & (CLS_META)));\r
6753 }\r
6754 function class_getSuperclass( aClass)\r
6755 {\r
6756     if (aClass == Nil)\r
6757         return Nil;\r
6758     return aClass.super_class;\r
6759 }\r
6760 function class_setSuperclass( aClass, aSuperClass)\r
6761 {\r
6762 }\r
6763 function class_isMetaClass( aClass)\r
6764 {\r
6765     return ((aClass.info & (CLS_META)));\r
6766 }\r
6767 function class_addIvar( aClass, aName, aType)\r
6768 {\r
6769     var thePrototype = aClass.allocator.prototype;\r
6770     if (typeof thePrototype[aName] != "undefined")\r
6771         return NO;\r
6772     aClass.ivars.push(new objj_ivar(aName, aType));\r
6773     thePrototype[aName] = NULL;\r
6774     return YES;\r
6775 }\r
6776 function class_addIvars( aClass, ivars)\r
6777 {\r
6778     var index = 0,\r
6779         count = ivars.length,\r
6780         thePrototype = aClass.allocator.prototype;\r
6781     for (; index < count; ++index)\r
6782     {\r
6783         var ivar = ivars[index],\r
6784             name = ivar.name;\r
6785         if (typeof thePrototype[name] == "undefined")\r
6786         {\r
6787             aClass.ivars.push(ivar);\r
6788             thePrototype[name] = NULL;\r
6789         }\r
6790     }\r
6791 }\r
6792 function class_copyIvarList( aClass)\r
6793 {\r
6794     return aClass.ivars.slice(0);\r
6795 }\r
6796 function class_addMethod( aClass, aName, anImplementation, aType)\r
6797 {\r
6798     if (aClass.method_hash[aName])\r
6799         return NO;\r
6800     var method = new objj_method(aName, anImplementation, aType);\r
6801     aClass.method_list.push(method);\r
6802     aClass.method_dtable[aName] = method;\r
6803     if (!((aClass.info & (CLS_META))) && (((aClass.info & (CLS_META))) ? aClass : aClass.isa).isa == (((aClass.info & (CLS_META))) ? aClass : aClass.isa))\r
6804         class_addMethods((((aClass.info & (CLS_META))) ? aClass : aClass.isa), methods);\r
6805     return YES;\r
6806 }\r
6807 function class_addMethods( aClass, methods)\r
6808 {\r
6809     var index = 0,\r
6810         count = methods.length,\r
6811         method_list = aClass.method_list,\r
6812         method_dtable = aClass.method_dtable;\r
6813     for (; index < count; ++index)\r
6814     {\r
6815         var method = methods[index];\r
6816         if (aClass.method_hash[method.name])\r
6817             continue;\r
6818         method_list.push(method);\r
6819         method_dtable[method.name] = method;\r
6820     }\r
6821     if (!((aClass.info & (CLS_META))) && (((aClass.info & (CLS_META))) ? aClass : aClass.isa).isa == (((aClass.info & (CLS_META))) ? aClass : aClass.isa))\r
6822         class_addMethods((((aClass.info & (CLS_META))) ? aClass : aClass.isa), methods);\r
6823 }\r
6824 function class_getInstanceMethod( aClass, aSelector)\r
6825 {\r
6826     if (!aClass || !aSelector)\r
6827         return NULL;\r
6828     var method = aClass.method_dtable[aSelector];\r
6829     return method ? method : NULL;\r
6830 }\r
6831 function class_getClassMethod( aClass, aSelector)\r
6832 {\r
6833     if (!aClass || !aSelector)\r
6834         return NULL;\r
6835     var method = (((aClass.info & (CLS_META))) ? aClass : aClass.isa).method_dtable[aSelector];\r
6836     return method ? method : NULL;\r
6837 }\r
6838 function class_copyMethodList( aClass)\r
6839 {\r
6840     return aClass.method_list.slice(0);\r
6841 }\r
6842 var _class_initialize = function( aClass)\r
6843 {\r
6844     var meta = (((aClass.info & (CLS_META))) ? aClass : aClass.isa);\r
6845     if ((aClass.info & (CLS_META)))\r
6846         aClass = objj_getClass(aClass.name);\r
6847     if (aClass.super_class && !((((aClass.super_class.info & (CLS_META))) ? aClass.super_class : aClass.super_class.isa).info & (CLS_INITIALIZED)))\r
6848         _class_initialize(aClass.super_class);\r
6849     if (!(meta.info & (CLS_INITIALIZED)) && !(meta.info & (CLS_INITIALIZING)))\r
6850     {\r
6851         meta.info = (meta.info | (CLS_INITIALIZING)) & ~(0);\r
6852         objj_msgSend(aClass, "initialize");\r
6853         meta.info = (meta.info | (CLS_INITIALIZED)) & ~(CLS_INITIALIZING);\r
6854     }\r
6855 }\r
6856 var _objj_forward = new objj_method("forward", function(self, _cmd)\r
6857 {\r
6858     return objj_msgSend(self, "forward::", _cmd, arguments);\r
6859 });\r
6860 function class_getMethodImplementation( aClass, aSelector)\r
6861 {\r
6862     if (!((((aClass.info & (CLS_META))) ? aClass : aClass.isa).info & (CLS_INITIALIZED))) _class_initialize(aClass); var method = aClass.method_dtable[aSelector]; if (!method) method = _objj_forward; var implementation = method.method_imp;;\r
6863     return implementation;\r
6864 }\r
6865 var GLOBAL_NAMESPACE = this,\r
6866     REGISTERED_CLASSES = {};\r
6867 function objj_allocateClassPair( superclass, aName)\r
6868 {\r
6869     var classObject = new objj_class(),\r
6870         metaClassObject = new objj_class(),\r
6871         rootClassObject = classObject;\r
6872     if (superclass)\r
6873     {\r
6874         rootClassObject = superclass;\r
6875         while (rootClassObject.superclass)\r
6876             rootClassObject = rootClassObject.superclass;\r
6877         classObject.allocator.prototype = new superclass.allocator;\r
6878         classObject.method_store.prototype = new superclass.method_store;\r
6879         classObject.method_dtable = classObject.method_store.prototype;\r
6880         metaClassObject.method_store.prototype = new superclass.isa.method_store;\r
6881         metaClassObject.method_dtable = metaClassObject.method_store.prototype;\r
6882         classObject.super_class = superclass;\r
6883         metaClassObject.super_class = superclass.isa;\r
6884     }\r
6885     else\r
6886         classObject.allocator.prototype = new objj_object();\r
6887     classObject.isa = metaClassObject;\r
6888     classObject.name = aName;\r
6889     classObject.info = CLS_CLASS;\r
6890     classObject.__address = (OBJECT_COUNT++);\r
6891     metaClassObject.isa = rootClassObject.isa;\r
6892     metaClassObject.name = aName;\r
6893     metaClassObject.info = CLS_META;\r
6894     metaClassObject.__address = (OBJECT_COUNT++);\r
6895     return classObject;\r
6896 }\r
6897 function objj_registerClassPair( aClass)\r
6898 {\r
6899     GLOBAL_NAMESPACE[aClass.name] = aClass;\r
6900     REGISTERED_CLASSES[aClass.name] = aClass;\r
6901 }\r
6902 function class_createInstance( aClass)\r
6903 {\r
6904     if (!aClass)\r
6905         objj_exception_throw(new objj_exception(OBJJNilClassException, "*** Attempting to create object with Nil class."));\r
6906     var object = new aClass.allocator;\r
6907     object.__address = (OBJECT_COUNT++);\r
6908     object.isa = aClass;\r
6909     return object;\r
6910 }\r
6911 var prototype_bug = function() { }\r
6912 prototype_bug.prototype.member = false;\r
6913 with (new prototype_bug())\r
6914     member = true;\r
6915 if (new prototype_bug().member)\r
6916 {\r
6917 var fast_class_createInstance = class_createInstance;\r
6918 class_createInstance = function( aClass)\r
6919 {\r
6920     var object = fast_class_createInstance(aClass);\r
6921     if (object)\r
6922     {\r
6923         var theClass = object.isa,\r
6924             actualClass = theClass;\r
6925         while (theClass)\r
6926         {\r
6927             var ivars = theClass.ivars;\r
6928                 count = ivars.length;\r
6929             while (count--)\r
6930                 object[ivars[count].name] = NULL;\r
6931             theClass = theClass.super_class;\r
6932         }\r
6933         object.isa = actualClass;\r
6934     }\r
6935     return object;\r
6936 }\r
6937 }\r
6938 function object_getClassName( anObject)\r
6939 {\r
6940     if (!anObject)\r
6941         return "";\r
6942     var theClass = anObject.isa;\r
6943     return theClass ? class_getName(theClass) : "";\r
6944 }\r
6945 function objj_lookUpClass( aName)\r
6946 {\r
6947     var theClass = REGISTERED_CLASSES[aName];\r
6948     return theClass ? theClass : Nil;\r
6949 }\r
6950 function objj_getClass( aName)\r
6951 {\r
6952     var theClass = REGISTERED_CLASSES[aName];\r
6953     if (!theClass)\r
6954     {\r
6955     }\r
6956     return theClass ? theClass : Nil;\r
6957 }\r
6958 function objj_getMetaClass( aName)\r
6959 {\r
6960     var theClass = objj_getClass(aName);\r
6961     return (((theClass.info & (CLS_META))) ? theClass : theClass.isa);\r
6962 }\r
6963 function ivar_getName(anIvar)\r
6964 {\r
6965     return anIvar.name;\r
6966 }\r
6967 function ivar_getTypeEncoding(anIvar)\r
6968 {\r
6969     return anIvar.type;\r
6970 }\r
6971 function objj_msgSend( aReceiver, aSelector)\r
6972 {\r
6973     if (aReceiver == nil)\r
6974         return nil;\r
6975     if (!((((aReceiver.isa.info & (CLS_META))) ? aReceiver.isa : aReceiver.isa.isa).info & (CLS_INITIALIZED))) _class_initialize(aReceiver.isa); var method = aReceiver.isa.method_dtable[aSelector]; if (!method) method = _objj_forward; var implementation = method.method_imp;;\r
6976     return implementation.apply(aReceiver, arguments);\r
6977 }\r
6978 function objj_msgSendSuper( aSuper, aSelector)\r
6979 {\r
6980     var super_class = aSuper.super_class;\r
6981     arguments[0] = aSuper.receiver;\r
6982     if (!((((super_class.info & (CLS_META))) ? super_class : super_class.isa).info & (CLS_INITIALIZED))) _class_initialize(super_class); var method = super_class.method_dtable[aSelector]; if (!method) method = _objj_forward; var implementation = method.method_imp;;\r
6983     return implementation.apply(aSuper.receiver, arguments);\r
6984 }\r
6985 function method_getName( aMethod)\r
6986 {\r
6987     return aMethod.name;\r
6988 }\r
6989 function method_getImplementation( aMethod)\r
6990 {\r
6991     return aMethod.method_imp;\r
6992 }\r
6993 function method_setImplementation( aMethod, anImplementation)\r
6994 {\r
6995     var oldImplementation = aMethod.method_imp;\r
6996     aMethod.method_imp = anImplementation;\r
6997     return oldImplementation;\r
6998 }\r
6999 function method_exchangeImplementations( lhs, rhs)\r
7000 {\r
7001     var lhs_imp = method_getImplementation(lhs),\r
7002         rhs_imp = method_getImplementation(rhs);\r
7003     method_setImplementation(lhs, rhs_imp);\r
7004     method_setImplementation(rhs, lhs_imp);\r
7005 }\r
7006 function sel_getName(aSelector)\r
7007 {\r
7008     return aSelector ? aSelector : "<null selector>";\r
7009 }\r
7010 function sel_getUid( aName)\r
7011 {\r
7012     return aName;\r
7013 }\r
7014 function sel_isEqual( lhs, rhs)\r
7015 {\r
7016     return lhs == rhs;\r
7017 }\r
7018 function sel_registerName(aName)\r
7019 {\r
7020     return aName;\r
7021 }\r
7022 function objj_dictionary()\r
7023 {\r
7024     this._keys = [];\r
7025     this.count = 0;\r
7026     this._buckets = {};\r
7027     this.__address = (OBJECT_COUNT++);\r
7028 }\r
7029 function dictionary_containsKey(aDictionary, aKey)\r
7030 {\r
7031     return aDictionary._buckets[aKey] != NULL;\r
7032 }\r
7033 function dictionary_getCount(aDictionary)\r
7034 {\r
7035     return aDictionary.count;\r
7036 }\r
7037 function dictionary_getValue(aDictionary, aKey)\r
7038 {\r
7039     return aDictionary._buckets[aKey];\r
7040 }\r
7041 function dictionary_setValue(aDictionary, aKey, aValue)\r
7042 {\r
7043     if (aDictionary._buckets[aKey] == NULL)\r
7044     {\r
7045         aDictionary._keys.push(aKey);\r
7046         ++aDictionary.count;\r
7047     }\r
7048     if ((aDictionary._buckets[aKey] = aValue) == NULL)\r
7049         --aDictionary.count;\r
7050 }\r
7051 function dictionary_removeValue(aDictionary, aKey)\r
7052 {\r
7053     if (aDictionary._buckets[aKey] == NULL)\r
7054         return;\r
7055     --aDictionary.count;\r
7056     if (aDictionary._keys.indexOf)\r
7057         aDictionary._keys.splice(aDictionary._keys.indexOf(aKey), 1);\r
7058     else\r
7059     {\r
7060         var keys = aDictionary._keys,\r
7061             index = 0,\r
7062             count = keys.length;\r
7063         for (; index < count; ++index)\r
7064             if (keys[index] == aKey)\r
7065             {\r
7066                 keys.splice(index, 1);\r
7067                 break;\r
7068             }\r
7069     }\r
7070     delete aDictionary._buckets[aKey];\r
7071 }\r
7072 function dictionary_replaceValue(aDictionary, aKey, aValue)\r
7073 {\r
7074     if (aDictionary[aKey] == NULL)\r
7075         return;\r
7076 }\r
7077 function dictionary_description(aDictionary)\r
7078 {\r
7079     str = "{ ";\r
7080     for ( x in aDictionary._buckets)\r
7081         str += x + ":" + aDictionary._buckets[x] + ",";\r
7082     str += " }";\r
7083     return str;\r
7084 }\r
7085 kCFPropertyListOpenStepFormat = 1;\r
7086 kCFPropertyListXMLFormat_v1_0 = 100;\r
7087 kCFPropertyListBinaryFormat_v1_0 = 200;\r
7088 kCFPropertyList280NorthFormat_v1_0 = -1000;\r
7089 OBJJPlistParseException = "OBJJPlistParseException";\r
7090 var kCFPropertyList280NorthMagicNumber = "280NPLIST";\r
7091 function objj_data()\r
7092 {\r
7093     this.string = "";\r
7094     this._plistObject = NULL;\r
7095     this.bytes = NULL;\r
7096     this.base64 = NULL;\r
7097 }\r
7098 var objj_markedStream = function(aString)\r
7099 {\r
7100     var index = aString.indexOf(';');\r
7101     this._magicNumber = aString.substr(0, index);\r
7102     this._location = aString.indexOf(';', ++index);\r
7103     this._version = aString.substring(index, this._location++);\r
7104     this._string = aString;\r
7105 }\r
7106 objj_markedStream.prototype.magicNumber = function()\r
7107 {\r
7108     return this._magicNumber;\r
7109 }\r
7110 objj_markedStream.prototype.version = function()\r
7111 \r
7112 {\r
7113     return this._version;\r
7114 }\r
7115 objj_markedStream.prototype.getMarker = function()\r
7116 {\r
7117     var string = this._string,\r
7118         location = this._location;\r
7119     if (location >= string.length)\r
7120         return NULL;\r
7121     var next = string.indexOf(';', location);\r
7122     if (next < 0)\r
7123         return NULL;\r
7124     var marker = string.substring(location, next);\r
7125     this._location = next + 1;\r
7126     return marker;\r
7127 }\r
7128 objj_markedStream.prototype.getString = function()\r
7129 {\r
7130     var string = this._string,\r
7131         location = this._location;\r
7132     if (location >= string.length)\r
7133         return NULL;\r
7134     var next = string.indexOf(';', location);\r
7135     if (next < 0)\r
7136         return NULL;\r
7137     var size = parseInt(string.substring(location, next)),\r
7138         text = string.substr(next + 1, size);\r
7139     this._location = next + 1 + size;\r
7140     return text;\r
7141 }\r
7142 function CPPropertyListCreateData(aPlistObject, aFormat)\r
7143 {\r
7144     if (aFormat == kCFPropertyListXMLFormat_v1_0)\r
7145         return CPPropertyListCreateXMLData(aPlistObject);\r
7146     if (aFormat == kCFPropertyList280NorthFormat_v1_0)\r
7147         return CPPropertyListCreate280NorthData(aPlistObject);\r
7148     return NULL;\r
7149 }\r
7150 function CPPropertyListCreateFromData(aData, aFormat)\r
7151 {\r
7152     if (!aFormat)\r
7153     {\r
7154         if (aData instanceof objj_data)\r
7155         {\r
7156             var string = aData.string ? aData.string : objj_msgSend(aData, "string");\r
7157             if (string.substr(0, kCFPropertyList280NorthMagicNumber.length) == kCFPropertyList280NorthMagicNumber)\r
7158                 aFormat = kCFPropertyList280NorthFormat_v1_0;\r
7159             else\r
7160                 aFormat = kCFPropertyListXMLFormat_v1_0;\r
7161         }\r
7162         else\r
7163             aFormat = kCFPropertyListXMLFormat_v1_0;\r
7164     }\r
7165     if (aFormat == kCFPropertyListXMLFormat_v1_0)\r
7166         return CPPropertyListCreateFromXMLData(aData);\r
7167     if (aFormat == kCFPropertyList280NorthFormat_v1_0)\r
7168         return CPPropertyListCreateFrom280NorthData(aData);\r
7169     return NULL;\r
7170 }\r
7171 var _CPPropertyListSerializeObject = function(aPlist, serializers)\r
7172 {\r
7173     var type = typeof aPlist,\r
7174         valueOf = aPlist.valueOf(),\r
7175         typeValueOf = typeof valueOf;\r
7176     if (type != typeValueOf)\r
7177     {\r
7178         type = typeValueOf;\r
7179         aPlist = valueOf;\r
7180     }\r
7181     if (type == "string")\r
7182         return serializers["string"](aPlist, serializers);\r
7183     else if (aPlist === true || aPlist === false)\r
7184         return serializers["boolean"](aPlist, serializers);\r
7185     else if (type == "number")\r
7186     {\r
7187         var integer = FLOOR(aPlist);\r
7188         if (integer == aPlist)\r
7189             return serializers["integer"](aPlist, serializers);\r
7190         else\r
7191             return serializers["real"](aPlist, serializers);\r
7192     }\r
7193     else if (aPlist.slice)\r
7194         return serializers["array"](aPlist, serializers);\r
7195     else\r
7196         return serializers["dictionary"](aPlist, serializers);\r
7197 }\r
7198 var XML_XML = "xml",\r
7199     XML_DOCUMENT = "#document",\r
7200     PLIST_PLIST = "plist",\r
7201     PLIST_KEY = "key",\r
7202     PLIST_DICTIONARY = "dict",\r
7203     PLIST_ARRAY = "array",\r
7204     PLIST_STRING = "string",\r
7205     PLIST_BOOLEAN_TRUE = "true",\r
7206     PLIST_BOOLEAN_FALSE = "false",\r
7207     PLIST_NUMBER_REAL = "real",\r
7208     PLIST_NUMBER_INTEGER = "integer";\r
7209 var _plist_traverseNextNode = function(anXMLNode, stayWithin, stack)\r
7210 {\r
7211     var node = anXMLNode;\r
7212     node = (node.firstChild); if (node != NULL && ((node.nodeType) == 8 || (node.nodeType) == 3)) while ((node = (node.nextSibling)) && ((node.nodeType) == 8 || (node.nodeType) == 3)) ;;\r
7213     if (node)\r
7214         return node;\r
7215     if ((anXMLNode.nodeName) == PLIST_ARRAY || (anXMLNode.nodeName) == PLIST_DICTIONARY)\r
7216         stack.pop();\r
7217     else\r
7218     {\r
7219         if (node == stayWithin)\r
7220             return NULL;\r
7221         node = anXMLNode;\r
7222         while ((node = (node.nextSibling)) && ((node.nodeType) == 8 || (node.nodeType) == 3)) ;;\r
7223         if (node)\r
7224             return node;\r
7225     }\r
7226     node = anXMLNode;\r
7227     while (node)\r
7228     {\r
7229         var next = node;\r
7230         while ((next = (next.nextSibling)) && ((next.nodeType) == 8 || (next.nodeType) == 3)) ;;\r
7231         if (next)\r
7232             return next;\r
7233         var node = (node.parentNode);\r
7234         if (stayWithin && node == stayWithin)\r
7235             return NULL;\r
7236         stack.pop();\r
7237     }\r
7238     return NULL;\r
7239 }\r
7240 function CPPropertyListCreateFromXMLData(XMLNodeOrData)\r
7241 {\r
7242     var XMLNode = XMLNodeOrData;\r
7243     if (XMLNode.string)\r
7244     {\r
7245         if (window.ActiveXObject)\r
7246         {\r
7247             XMLNode = new ActiveXObject("Microsoft.XMLDOM");\r
7248             XMLNode.loadXML(XMLNodeOrData.string.substr(XMLNodeOrData.string.indexOf(".dtd\">") + 6));\r
7249         }\r
7250         else\r
7251             XMLNode = (new DOMParser().parseFromString(XMLNodeOrData.string, "text/xml").documentElement);\r
7252     }\r
7253     while (((XMLNode.nodeName) == XML_DOCUMENT) || ((XMLNode.nodeName) == XML_XML))\r
7254         XMLNode = (XMLNode.firstChild); if (XMLNode != NULL && ((XMLNode.nodeType) == 8 || (XMLNode.nodeType) == 3)) while ((XMLNode = (XMLNode.nextSibling)) && ((XMLNode.nodeType) == 8 || (XMLNode.nodeType) == 3)) ;;\r
7255     if (((XMLNode.nodeType) == 10))\r
7256         while ((XMLNode = (XMLNode.nextSibling)) && ((XMLNode.nodeType) == 8 || (XMLNode.nodeType) == 3)) ;;\r
7257     if (!((XMLNode.nodeName) == PLIST_PLIST))\r
7258         return NULL;\r
7259     var key = "",\r
7260         object = NULL,\r
7261         plistObject = NULL,\r
7262         plistNode = XMLNode,\r
7263         containers = [],\r
7264         currentContainer = NULL;\r
7265     while (XMLNode = _plist_traverseNextNode(XMLNode, plistNode, containers))\r
7266     {\r
7267         var count = containers.length;\r
7268         if (count)\r
7269             currentContainer = containers[count - 1];\r
7270         if ((XMLNode.nodeName) == PLIST_KEY)\r
7271         {\r
7272             key = (((XMLNode.firstChild).nodeValue));\r
7273             while ((XMLNode = (XMLNode.nextSibling)) && ((XMLNode.nodeType) == 8 || (XMLNode.nodeType) == 3)) ;;\r
7274         }\r
7275         switch ((XMLNode.nodeName))\r
7276         {\r
7277             case PLIST_ARRAY: object = []\r
7278                                         containers.push(object);\r
7279                                         break;\r
7280             case PLIST_DICTIONARY: object = new objj_dictionary();\r
7281                                         containers.push(object);\r
7282                                         break;\r
7283             case PLIST_NUMBER_REAL: object = parseFloat((((XMLNode.firstChild).nodeValue)));\r
7284                                         break;\r
7285             case PLIST_NUMBER_INTEGER: object = parseInt((((XMLNode.firstChild).nodeValue)));\r
7286                                         break;\r
7287             case PLIST_STRING: object = decodeURIComponent((XMLNode.firstChild) ? (((XMLNode.firstChild).nodeValue)) : "");\r
7288                                         break;\r
7289             case PLIST_BOOLEAN_TRUE: object = true;\r
7290                                         break;\r
7291             case PLIST_BOOLEAN_FALSE: object = false;\r
7292                                         break;\r
7293             default: objj_exception_throw(new objj_exception(OBJJPlistParseException, "*** " + (XMLNode.nodeName) + " tag not recognized in Plist."));\r
7294         }\r
7295         if (!plistObject)\r
7296             plistObject = object;\r
7297         else if (currentContainer)\r
7298             if (currentContainer.slice)\r
7299                 currentContainer.push(object);\r
7300             else\r
7301                 { if ((currentContainer)._buckets[key] == NULL) { (currentContainer)._keys.push(key); ++(currentContainer).count; } if (((currentContainer)._buckets[key] = object) == NULL) --(currentContainer).count;};\r
7302     }\r
7303     return plistObject;\r
7304 }\r
7305 function CPPropertyListCreateXMLData(aPlist)\r
7306 {\r
7307     var data = new objj_data();\r
7308     data.string = "";\r
7309     data.string += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";\r
7310     data.string += "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">";\r
7311     data.string += "<plist version = \"1.0\">";\r
7312     _CPPropertyListAppendXMLData(data, aPlist, "");\r
7313     data.string += "</plist>";\r
7314     return data;\r
7315 }\r
7316 var _CPArrayAppendXMLData = function(XMLData, anArray)\r
7317 {\r
7318     var i = 0,\r
7319         count = anArray.length;\r
7320     XMLData.string += "<array>";\r
7321     for (; i < count; ++i)\r
7322         _CPPropertyListAppendXMLData(XMLData, anArray[i]);\r
7323     XMLData.string += "</array>";\r
7324 }\r
7325 var _CPDictionaryAppendXMLData = function(XMLData, aDictionary)\r
7326 {\r
7327     var keys = aDictionary._keys,\r
7328         i = 0,\r
7329         count = keys.length;\r
7330     XMLData.string += "<dict>";\r
7331     for (; i < count; ++i)\r
7332     {\r
7333         XMLData.string += "<key>" + keys[i] + "</key>";\r
7334         _CPPropertyListAppendXMLData(XMLData, ((aDictionary)._buckets[keys[i]]));\r
7335     }\r
7336     XMLData.string += "</dict>";\r
7337 }\r
7338 var _CPPropertyListAppendXMLData = function(XMLData, aPlist)\r
7339 {\r
7340     var type = typeof aPlist,\r
7341         valueOf = aPlist.valueOf(),\r
7342         typeValueOf = typeof valueOf;\r
7343     if (type != typeValueOf)\r
7344     {\r
7345         type = typeValueOf;\r
7346         aPlist = valueOf;\r
7347     }\r
7348     if (type == "string")\r
7349         XMLData.string += "<string>" + encodeURIComponent(aPlist) + "</string>";\r
7350     else if (aPlist === true)\r
7351         XMLData.string += "<true/>";\r
7352     else if (aPlist === false)\r
7353         XMLData.string += "<false/>";\r
7354     else if (type == "number")\r
7355     {\r
7356         var integer = FLOOR(aPlist);\r
7357         if (integer == aPlist)\r
7358             XMLData.string += "<integer>" + aPlist + "</integer>";\r
7359         else\r
7360             XMLData.string += "<real>" + aPlist + "</real>";\r
7361     }\r
7362     else if (aPlist.slice)\r
7363         _CPArrayAppendXMLData(XMLData, aPlist);\r
7364     else\r
7365         _CPDictionaryAppendXMLData(XMLData, aPlist);\r
7366 }\r
7367 var ARRAY_MARKER = "A",\r
7368     DICTIONARY_MARKER = "D",\r
7369     FLOAT_MARKER = "f",\r
7370     INTEGER_MARKER = "d",\r
7371     STRING_MARKER = "S",\r
7372     TRUE_MARKER = "T",\r
7373     FALSE_MARKER = "F",\r
7374     KEY_MARKER = "K",\r
7375     END_MARKER = "E";\r
7376 function CPPropertyListCreateFrom280NorthData(aData)\r
7377 {\r
7378     var stream = new objj_markedStream(aData.string),\r
7379         marker = NULL,\r
7380         key = "",\r
7381         object = NULL,\r
7382         plistObject = NULL,\r
7383         containers = [],\r
7384         currentContainer = NULL;\r
7385     while (marker = stream.getMarker())\r
7386     {\r
7387         if (marker == END_MARKER)\r
7388         {\r
7389             containers.pop();\r
7390             continue;\r
7391         }\r
7392         var count = containers.length;\r
7393         if (count)\r
7394             currentContainer = containers[count - 1];\r
7395         if (marker == KEY_MARKER)\r
7396         {\r
7397             key = stream.getString();\r
7398             marker = stream.getMarker();\r
7399         }\r
7400         switch (marker)\r
7401         {\r
7402             case ARRAY_MARKER: object = []\r
7403                                     containers.push(object);\r
7404                                     break;\r
7405             case DICTIONARY_MARKER: object = new objj_dictionary();\r
7406                                     containers.push(object);\r
7407                                     break;\r
7408             case FLOAT_MARKER: object = parseFloat(stream.getString());\r
7409                                     break;\r
7410             case INTEGER_MARKER: object = parseInt(stream.getString());\r
7411                                     break;\r
7412             case STRING_MARKER: object = stream.getString();\r
7413                                     break;\r
7414             case TRUE_MARKER: object = true;\r
7415                                     break;\r
7416             case FALSE_MARKER: object = false;\r
7417                                     break;\r
7418             default: objj_exception_throw(new objj_exception(OBJJPlistParseException, "*** " + marker + " marker not recognized in Plist."));\r
7419         }\r
7420         if (!plistObject)\r
7421             plistObject = object;\r
7422         else if (currentContainer)\r
7423             if (currentContainer.slice)\r
7424                 currentContainer.push(object);\r
7425             else\r
7426                 { if ((currentContainer)._buckets[key] == NULL) { (currentContainer)._keys.push(key); ++(currentContainer).count; } if (((currentContainer)._buckets[key] = object) == NULL) --(currentContainer).count;};\r
7427     }\r
7428     return plistObject;\r
7429 }\r
7430 function CPPropertyListCreate280NorthData(aPlist)\r
7431 {\r
7432     var data = new objj_data();\r
7433     data.string = kCFPropertyList280NorthMagicNumber + ";1.0;" + _CPPropertyListSerializeObject(aPlist, _CPPropertyList280NorthSerializers);\r
7434     return data;\r
7435 }\r
7436 var _CPPropertyList280NorthSerializers = {};\r
7437 _CPPropertyList280NorthSerializers["string"] = function(aString)\r
7438 {\r
7439     return STRING_MARKER + ';' + aString.length + ';' + aString;\r
7440 }\r
7441 _CPPropertyList280NorthSerializers["boolean"] = function(aBoolean)\r
7442 {\r
7443     return (aBoolean ? TRUE_MARKER : FALSE_MARKER) + ';';\r
7444 }\r
7445 _CPPropertyList280NorthSerializers["integer"] = function(anInteger)\r
7446 {\r
7447     var string = "" + anInteger;\r
7448     return INTEGER_MARKER + ';' + string.length + ';' + string;\r
7449 }\r
7450 _CPPropertyList280NorthSerializers["real"] = function(aFloat)\r
7451 {\r
7452     var string = "" + aFloat;\r
7453     return FLOAT_MARKER + ';' + string.length + ';' + string;\r
7454 }\r
7455 _CPPropertyList280NorthSerializers["array"] = function(anArray, serializers)\r
7456 {\r
7457     var index = 0,\r
7458         count = anArray.length,\r
7459         string = ARRAY_MARKER + ';';\r
7460     for (; index < count; ++index)\r
7461         string += _CPPropertyListSerializeObject(anArray[index], serializers);\r
7462     return string + END_MARKER + ';';\r
7463 }\r
7464 _CPPropertyList280NorthSerializers["dictionary"] = function(aDictionary, serializers)\r
7465 {\r
7466     var keys = aDictionary._keys,\r
7467         index = 0,\r
7468         count = keys.length,\r
7469         string = DICTIONARY_MARKER +';';\r
7470     for (; index < count; ++index)\r
7471     {\r
7472         var key = keys[index];\r
7473         string += KEY_MARKER + ';' + key.length + ';' + key;\r
7474         string += _CPPropertyListSerializeObject(((aDictionary)._buckets[key]), serializers);\r
7475     }\r
7476     return string + END_MARKER + ';';\r
7477 }\r
7478 OBJJFileNotFoundException = "OBJJFileNotFoundException";\r
7479 OBJJExecutableNotFoundException = "OBJJExecutableNotFoundException";\r
7480 var objj_files = { },\r
7481     objj_bundles = { },\r
7482     objj_bundlesForClass = { },\r
7483     objj_searches = { };\r
7484 var OBJJ_NO_FILE = {},\r
7485     OBJJ_INCLUDE_PATHS = ["Frameworks", "SomethingElse"];\r
7486 var OBJJ_BASE_URI = "";\r
7487 if (window.opera) {\r
7488 var DOMBaseElement = document.getElementsByTagName("base")[0];\r
7489 if (DOMBaseElement)\r
7490     OBJJ_BASE_URI = (DOMBaseElement.getAttribute('href')).substr(0, (DOMBaseElement.getAttribute('href')).lastIndexOf('/') + 1);\r
7491 }\r
7492 function objj_file()\r
7493 {\r
7494     this.path = NULL;\r
7495     this.bundle = NULL;\r
7496     this.included = NO;\r
7497     this.contents = NULL;\r
7498     this.fragments = NULL;\r
7499 }\r
7500 function objj_bundle()\r
7501 {\r
7502     this.path = NULL;\r
7503     this.info = NULL;\r
7504     this.__address = (OBJECT_COUNT++);\r
7505 }\r
7506 function objj_getBundleWithPath(aPath)\r
7507 {\r
7508     return objj_bundles[aPath];\r
7509 }\r
7510 function objj_bundleForClass(aClass)\r
7511 {\r
7512     return objj_bundlesForClass[aClass.name];\r
7513 }\r
7514 function objj_addClassForBundle(aClass, aBundle)\r
7515 {\r
7516     objj_bundlesForClass[aClass.name] = aBundle;\r
7517 }\r
7518 function objj_request_file(aFilePath, shouldSearchLocally, aCallback)\r
7519 {\r
7520     new objj_search(aFilePath, shouldSearchLocally, aCallback).attemptNextSearchPath();\r
7521 }\r
7522 var objj_search = function(aFilePath, shouldSearchLocally, aCallback)\r
7523 {\r
7524     this.filePath = aFilePath;\r
7525     this.bundle = NULL;\r
7526     this.bundleObservers = [];\r
7527     this.searchPath = NULL;\r
7528     this.searchedPaths = [];\r
7529     this.includePathsIndex = shouldSearchLocally ? -1 : 0;\r
7530     this.searchRequest = NULL;\r
7531     this.didCompleteCallback = aCallback;\r
7532 }\r
7533 objj_search.prototype.nextSearchPath = function()\r
7534 {\r
7535     var path = objj_standardize_path((this.includePathsIndex == -1 ? "" : OBJJ_INCLUDE_PATHS[this.includePathsIndex] + '/') + this.filePath);\r
7536     ++this.includePathsIndex;\r
7537     return path;\r
7538 }\r
7539 objj_search.prototype.attemptNextSearchPath = function()\r
7540 {\r
7541     var searchPath = this.nextSearchPath(),\r
7542         file = objj_files[searchPath];\r
7543     objj_alert("Will attempt to find " + this.filePath + " at " + searchPath);\r
7544     if (file)\r
7545     {\r
7546         objj_alert("The file request at " + this.filePath + " has already been downloaded at " + searchPath);\r
7547         if (this.didCompleteCallback)\r
7548             this.didCompleteCallback(file);\r
7549         return;\r
7550     }\r
7551     var existingSearch = objj_searches[searchPath];\r
7552     if (existingSearch)\r
7553     {\r
7554         if (this.didCompleteCallback)\r
7555             existingSearch.didCompleteCallback = this.didCompleteCallback;\r
7556         return;\r
7557     }\r
7558     this.searchedPaths.push(this.searchPath = searchPath);\r
7559     var infoPath = objj_standardize_path((searchPath).substr(0, (searchPath).lastIndexOf('/') + 1) + "Info.plist")\r
7560         bundle = objj_bundles[infoPath];\r
7561     if (bundle)\r
7562     {\r
7563         this.bundle = bundle;\r
7564         this.request(searchPath, this.didReceiveSearchResponse);\r
7565     }\r
7566     else\r
7567     {\r
7568         var existingBundleSearch = objj_searches[infoPath];\r
7569         if (existingBundleSearch)\r
7570         {\r
7571             --this.includePathsIndex;\r
7572             this.searchedPaths.pop();\r
7573              if (this.searchedPaths.length)\r
7574                  this.searchPath = this.searchedPaths[this.searchedPaths.length - 1];\r
7575              else\r
7576                  this.searchPath = NULL;\r
7577             existingBundleSearch.bundleObservers.push(this);\r
7578             return;\r
7579         }\r
7580         else\r
7581         {\r
7582             this.bundleObservers.push(this);\r
7583             this.request(infoPath, this.didReceiveBundleResponse);\r
7584             if (!this.searchReplaced)\r
7585                 this.searchRequest = this.request(searchPath, this.didReceiveSearchResponse);\r
7586         }\r
7587     }\r
7588 }\r
7589 if (window.ActiveXObject) {\r
7590 objj_search.responseCallbackLock = NO;\r
7591 objj_search.responseCallbackQueue = [];\r
7592 objj_search.removeResponseCallbackForFilePath = function(aFilePath)\r
7593 {\r
7594     var queue = objj_search.responseCallbackQueue,\r
7595         index = queue.length;\r
7596     while (index--)\r
7597         if (queue[index][3] == aFilePath)\r
7598         {\r
7599             queue.splice(index, 1);\r
7600             return;\r
7601         }\r
7602 }\r
7603 objj_search.serializeResponseCallback = function(aMethod, aSearch, aResponse, aFilePath)\r
7604 {\r
7605     var queue = objj_search.responseCallbackQueue;\r
7606     queue.push([aMethod, aSearch, aResponse, aFilePath]);\r
7607     if (objj_search.responseCallbackLock)\r
7608         return;\r
7609     objj_search.responseCallbackLock = YES;\r
7610     while (queue.length)\r
7611     {\r
7612         var callback = queue[0];\r
7613         queue.splice(0, 1);\r
7614         callback[0].apply(callback[1], [callback[2]]);\r
7615     }\r
7616     objj_search.responseCallbackLock = NO;\r
7617 }\r
7618 }\r
7619 objj_search.prototype.request = function(aFilePath, aMethod)\r
7620 {\r
7621     var search = this,\r
7622         isPlist = aFilePath.substr(aFilePath.length - 6, 6) == ".plist",\r
7623         request = objj_request_xmlhttp(),\r
7624         response = objj_response_xmlhttp();\r
7625     response.filePath = aFilePath;\r
7626     request.onreadystatechange = function()\r
7627     {\r
7628         if (request.readyState == 4)\r
7629         {\r
7630             if (response.success = (request.status != 404 && request.responseText && request.responseText.length) ? YES : NO)\r
7631             {\r
7632                 if (window.files_total)\r
7633                 {\r
7634                     if (!window.files_loaded)\r
7635                         window.files_loaded = 0;\r
7636                     window.files_loaded += request.responseText.length;\r
7637                     if (window.update_progress)\r
7638                         window.update_progress(window.files_loaded / window.files_total);\r
7639                 }\r
7640                 if (isPlist)\r
7641                     response.xml = objj_standardize_xml(request);\r
7642                 else\r
7643                     response.text = request.responseText;\r
7644             }\r
7645             if (window.ActiveXObject)\r
7646                 objj_search.serializeResponseCallback(aMethod, search, response, aFilePath);\r
7647             else\r
7648                 aMethod.apply(search, [response]);\r
7649         }\r
7650     }\r
7651     objj_searches[aFilePath] = this;\r
7652     if (request.overrideMimeType && isPlist)\r
7653         request.overrideMimeType('text/xml');\r
7654     if (window.opera && aFilePath.charAt(0) != '/')\r
7655         aFilePath = OBJJ_BASE_URI + aFilePath;\r
7656     try\r
7657     {\r
7658         request.open("GET", aFilePath, YES);\r
7659         request.send("");\r
7660     }\r
7661     catch (anException)\r
7662     {\r
7663         response.success = NO;\r
7664         if (window.ActiveXObject)\r
7665             objj_search.serializeResponseCallback(aMethod, search, response, aFilePath);\r
7666         else\r
7667             aMethod.apply(search, [response]);\r
7668     }\r
7669     return request;\r
7670 }\r
7671 objj_search.prototype.didReceiveSearchResponse = function(aResponse)\r
7672 {\r
7673     if (!this.bundle)\r
7674     {\r
7675         this.cachedSearchResponse = aResponse;\r
7676         return;\r
7677     }\r
7678     if (aResponse.success)\r
7679     {\r
7680         file = new objj_file();\r
7681         file.path = aResponse.filePath;\r
7682         file.bundle = this.bundle\r
7683         file.contents = aResponse.text;\r
7684         this.complete(file);\r
7685     }\r
7686     else if (this.includePathsIndex < OBJJ_INCLUDE_PATHS.length)\r
7687     {\r
7688         this.bundle = NULL;\r
7689         this.attemptNextSearchPath();\r
7690     }\r
7691     else\r
7692         objj_exception_throw(new objj_exception(OBJJFileNotFoundException, "*** Could not locate file named \"" + this.filePath + "\" in search paths."));\r
7693 }\r
7694 objj_search.prototype.didReceiveBundleResponse = function(aResponse)\r
7695 {\r
7696     var bundle = new objj_bundle();\r
7697     bundle.path = aResponse.filePath;\r
7698     if (aResponse.success)\r
7699         bundle.info = CPPropertyListCreateFromXMLData(aResponse.xml);\r
7700     else\r
7701         bundle.info = new objj_dictionary();\r
7702     objj_bundles[aResponse.filePath] = bundle;\r
7703     var executablePath = ((bundle.info)._buckets["CPBundleExecutable"]);\r
7704     if (executablePath)\r
7705     {\r
7706         this.request((aResponse.filePath).substr(0, (aResponse.filePath).lastIndexOf('/') + 1) + executablePath, this.didReceiveExecutableResponse);\r
7707         var directory = (aResponse.filePath).substr(0, (aResponse.filePath).lastIndexOf('/') + 1),\r
7708             replacedFiles = ((bundle.info)._buckets["CPBundleReplacedFiles"]),\r
7709             index = 0,\r
7710             count = replacedFiles.length;\r
7711         for (; index < count; ++index)\r
7712         {\r
7713             objj_searches[directory + replacedFiles[index]] = this;\r
7714             if (directory + replacedFiles[index] == this.searchPath)\r
7715             {\r
7716                 this.searchReplaced = YES;\r
7717                 if (!this.cachedSearchResponse && this.searchRequest)\r
7718                     this.searchRequest.abort();\r
7719                 if (window.ActiveXObject)\r
7720                     objj_search.removeResponseCallbackForFilePath(this.searchPath);\r
7721             }\r
7722         }\r
7723     }\r
7724     this.bundle = bundle;\r
7725     var observers = this.bundleObservers,\r
7726         index = 0,\r
7727         count = observers.length;\r
7728     for(; index < count; ++index)\r
7729     {\r
7730         var observer = observers[index];\r
7731         if (observer != this)\r
7732             observer.attemptNextSearchPath();\r
7733         else if (this.cachedSearchResponse && !this.searchReplaced)\r
7734             this.didReceiveSearchResponse(this.cachedSearchResponse);\r
7735     }\r
7736     this.bundleObservers = [];\r
7737 }\r
7738 objj_search.prototype.didReceiveExecutableResponse = function(aResponse)\r
7739 {\r
7740     if (!aResponse.success)\r
7741         objj_exception_throw(new objj_exception(OBJJExecutableNotFoundException, "*** The specified executable could not be located at \"" + this.filePath + "\"."));\r
7742     var files = objj_decompile(aResponse.text, this.bundle),\r
7743         index = 0,\r
7744         count = files.length,\r
7745         length = this.filePath.length;\r
7746     for (; index < count; ++index)\r
7747     {\r
7748         var file = files[index],\r
7749             path = file.path;\r
7750         if (this.filePath == path.substr(path.length - length))\r
7751             this.complete(file);\r
7752         else\r
7753             objj_files[path] = file;\r
7754     }\r
7755 }\r
7756 objj_search.prototype.complete = function(aFile)\r
7757 {\r
7758     var index = 0,\r
7759         count = this.searchedPaths.length;\r
7760     for (; index < count; ++index)\r
7761     {\r
7762         objj_files[this.searchedPaths[index]] = aFile;\r
7763     }\r
7764     if (this.didCompleteCallback)\r
7765         this.didCompleteCallback(aFile);\r
7766 }\r
7767 function objj_standardize_path(aPath)\r
7768 {\r
7769     if (aPath.indexOf("/./") != -1 && aPath.indexOf("//") != -1 && aPath.indexOf("/../") != -1)\r
7770         return aPath;\r
7771     var index = 0,\r
7772         components = aPath.split('/');\r
7773     for(;index < components.length; ++index)\r
7774         if(components[index] == "..")\r
7775         {\r
7776             components.splice(index - 1, 2);\r
7777             index -= 2;\r
7778         }\r
7779         else if(index != 0 && !components[index].length || components[index] == '.' || components[index] == "..")\r
7780             components.splice(index--, 1);\r
7781     return components.join('/');\r
7782 }\r
7783 if (window.ActiveXObject) {\r
7784 objj_standardize_xml = function(aRequest)\r
7785 \r
7786 {\r
7787     var XMLData = new ActiveXObject("Microsoft.XMLDOM");\r
7788     XMLData.loadXML(aRequest.responseText.substr(aRequest.responseText.indexOf(".dtd\">") + 6));\r
7789     return XMLData;\r
7790 }\r
7791 } else {\r
7792 objj_standardize_xml = function(aRequest)\r
7793 {\r
7794     return aRequest.responseXML;\r
7795 }\r
7796 }\r
7797 function objj_response_xmlhttp()\r
7798 {\r
7799     return new Object;\r
7800 }\r
7801 if (window.XMLHttpRequest) {\r
7802 objj_request_xmlhttp = function()\r
7803 {\r
7804     return new XMLHttpRequest();\r
7805 }\r
7806 } else if (window.ActiveXObject) {\r
7807 var MSXML_XMLHTTP_OBJECTS = [ "Microsoft.XMLHTTP", "Msxml2.XMLHTTP", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP.6.0" ],\r
7808     index = MSXML_XMLHTTP_OBJECTS.length;\r
7809 while (index--)\r
7810 {\r
7811     try\r
7812     {\r
7813         new ActiveXObject(MSXML_XMLHTTP_OBJECTS[index]);\r
7814         break;\r
7815     }\r
7816     catch (anException)\r
7817     {\r
7818     }\r
7819 }\r
7820 var MSXML_XMLHTTP = MSXML_XMLHTTP_OBJECTS[index];\r
7821 delete index;\r
7822 delete MSXML_XMLHTTP_OBJECTS;\r
7823 objj_request_xmlhttp = function()\r
7824 {\r
7825     return new ActiveXObject(MSXML_XMLHTTP);\r
7826 }\r
7827 }\r
7828 var OBJJ_EXCEPTION_OUTPUT_STREAM = NULL;\r
7829 function objj_exception(aName, aReason, aUserInfo)\r
7830 {\r
7831     this.name = aName;\r
7832     this.reason = aReason;\r
7833     this.userInfo = aUserInfo;\r
7834     this.__address = (OBJECT_COUNT++);\r
7835 }\r
7836 objj_exception.prototype.toString = function()\r
7837 {\r
7838     return this.reason;\r
7839 }\r
7840 function objj_exception_throw(anException)\r
7841 {\r
7842     throw anException;\r
7843 }\r
7844 function objj_exception_report(anException, aSourceFile)\r
7845 {\r
7846     objj_fprintf(OBJJ_EXCEPTION_OUTPUT_STREAM, aSourceFile.path + "\n" + anException);\r
7847     throw anException;\r
7848 }\r
7849 function objj_exception_setOutputStream(aStream)\r
7850 {\r
7851     OBJJ_EXCEPTION_OUTPUT_STREAM = aStream;\r
7852 }\r
7853 objj_exception_setOutputStream(function(aString) { });\r
7854 OBJJParseException = "OBJJParseException";\r
7855 OBJJClassNotFoundException = "OBJJClassNotFoundException";\r
7856 var TOKEN_NEW = "new",\r
7857     TOKEN_SUPER = "super",\r
7858     TOKEN_CLASS = "class",\r
7859     TOKEN_IMPORT = "import",\r
7860     TOKEN_FUNCTION = "function",\r
7861     TOKEN_SELECTOR = "selector",\r
7862     TOKEN_IMPLEMENTATION = "implementation",\r
7863     TOKEN_PLUS = '+',\r
7864     TOKEN_MINUS = '-',\r
7865     TOKEN_COLON = ':',\r
7866     TOKEN_COMMA = ',',\r
7867     TOKEN_PERIOD = '.',\r
7868     TOKEN_ASTERISK = '*',\r
7869     TOKEN_SEMICOLON = ';',\r
7870     TOKEN_LESS_THAN = '<',\r
7871     TOKEN_OPEN_BRACE = '{',\r
7872     TOKEN_CLOSE_BRACE = '}',\r
7873     TOKEN_GREATER_THAN = '>',\r
7874     TOKEN_OPEN_BRACKET = '[',\r
7875     TOKEN_DOUBLE_QUOTE = '"',\r
7876     TOKEN_PREPROCESSOR = '@',\r
7877     TOKEN_CLOSE_BRACKET = ']',\r
7878     TOKEN_QUESTION_MARK = '?',\r
7879     TOKEN_OPEN_PARENTHESIS = '(',\r
7880     TOKEN_CLOSE_PARENTHESIS = ')';\r
7881 var SUPER_CLASSES = new objj_dictionary(),\r
7882     CURRENT_SUPER_CLASS = NULL,\r
7883     CURRENT_CLASS_NAME = NULL;\r
7884 var OBJJ_CURRENT_BUNDLE = NULL;\r
7885 var objj_lexer = function(aString, aSourceFile)\r
7886 {\r
7887     this._index = 0;\r
7888     this._tokens = (aString + '\n').match(/\/\/.*(\r|\n)?|\/\*(?:.|\n|\r)*?\*\/|\w+\b|[+-]?\d+(([.]\d+)*([eE][+-]?\d+))?|"[^"\\]*(\\.[^"\\]*)*"|'[^'\\]*(\\.[^'\\]*)*'|\s+|./g);\r
7889     this.file = aSourceFile;\r
7890     return this;\r
7891 }\r
7892 objj_lexer.prototype.next = function()\r
7893 {\r
7894     return this._tokens[this._index++];\r
7895 }\r
7896 objj_lexer.prototype.previous = function()\r
7897 {\r
7898     return this._tokens[--this._index];\r
7899 }\r
7900 objj_lexer.prototype.last = function()\r
7901 {\r
7902     if (this._index > 1)\r
7903         return this._tokens[this._index - 2];\r
7904     return NULL;\r
7905 }\r
7906 objj_lexer.prototype.skip_whitespace= function()\r
7907 {\r
7908     var token;\r
7909     while((token = this.next()) && (!(/\S/).test(token) || token.substr(0,2) == "//" || token.substr(0,2) == "/*")) ;\r
7910     return token;\r
7911 }\r
7912 var objj_preprocess_method = function(tokens, count, array_name)\r
7913 {\r
7914     var token,\r
7915         selector = "",\r
7916         parameters = new Array();\r
7917     while((token = tokens.skip_whitespace()) && token != TOKEN_OPEN_BRACE)\r
7918     {\r
7919         if (token == TOKEN_COLON)\r
7920         {\r
7921             selector += token;\r
7922             token = tokens.skip_whitespace();\r
7923             if (token == TOKEN_OPEN_PARENTHESIS)\r
7924             {\r
7925                 while((token = tokens.skip_whitespace()) && token != TOKEN_CLOSE_PARENTHESIS) ;\r
7926                 token = tokens.skip_whitespace();\r
7927             }\r
7928             parameters[parameters.length] = token;\r
7929         }\r
7930         else if (token == TOKEN_OPEN_PARENTHESIS)\r
7931             while((token = tokens.skip_whitespace()) && token != TOKEN_CLOSE_PARENTHESIS) ;\r
7932         else if (token == TOKEN_COMMA)\r
7933         {\r
7934             if ((token = tokens.skip_whitespace()) != TOKEN_PERIOD || tokens.next() != TOKEN_PERIOD || tokens.next() != TOKEN_PERIOD)\r
7935                 objj_exception_throw(new objj_exception(OBJJParseException, "*** Argument list expected after ','."));\r
7936         }\r
7937         else\r
7938             selector += token;\r
7939     }\r
7940     var i= 0,\r
7941         length = parameters.length,\r
7942         selectorDisplayName = "$"+CURRENT_CLASS_NAME+"__"+selector.replace(/:/g, "_"),\r
7943         preprocessed = array_name + "["+count+"] = new objj_method(sel_registerName(\""+selector+"\"), function "+selectorDisplayName+"(self, _cmd";\r
7944     for(; i < length; ++i)\r
7945         preprocessed += ", " + parameters[i];\r
7946     return preprocessed + ")\n{ with(self)\n{" + objj_preprocess_tokens(tokens, TOKEN_CLOSE_BRACE, TOKEN_OPEN_BRACE) + "}\n});\n";\r
7947 }\r
7948 var objj_preprocess_implementation= function(tokens)\r
7949 {\r
7950     var token = "",\r
7951         category = NO,\r
7952         preprocessed = "",\r
7953         class_name = tokens.skip_whitespace(),\r
7954         superclass_name = "Nil",\r
7955         class_method_count = 0,\r
7956         instance_method_count = 0;\r
7957     if (!(/^\w/).test(class_name))\r
7958         objj_exception_throw(new objj_exception(OBJJParseException, "*** Expected class name, found \"" + class_name + "\"."));\r
7959     CURRENT_SUPER_CLASS = NULL;\r
7960     CURRENT_CLASS_NAME = class_name;\r
7961     if((token = tokens.skip_whitespace()) == TOKEN_OPEN_PARENTHESIS)\r
7962     {\r
7963         token = tokens.skip_whitespace();\r
7964         if(tokens.skip_whitespace() != TOKEN_CLOSE_PARENTHESIS)\r
7965             objj_exception_throw(new objj_exception(OBJJParseException, "*** Improper Category Definition for class \""+class_name+"\"."));\r
7966         preprocessed += "{\nvar the_class = objj_getClass(\"" + class_name + "\")\n";\r
7967         preprocessed += "if(!the_class) objj_exception_throw(new objj_exception(OBJJClassNotFoundException, \"*** Could not find definition for class \\\"" + class_name + "\\\"\"));\n";\r
7968         preprocessed += "var meta_class = the_class.isa;";\r
7969         var superclass_name = ((SUPER_CLASSES)._buckets[class_name]);\r
7970         if (!superclass_name)\r
7971             CURRENT_SUPER_CLASS = "objj_getClass(\"" + class_name + "\").super_class";\r
7972         else\r
7973             CURRENT_SUPER_CLASS = "objj_getClass(\"" + superclass_name + "\")";\r
7974     }\r
7975     else\r
7976     {\r
7977         if(token == TOKEN_COLON)\r
7978         {\r
7979             token = tokens.skip_whitespace();\r
7980             if (!(/^\w/).test(token))\r
7981                 objj_exception_throw(new objj_exception(OBJJParseException, "*** Expected class name, found \"" + token + "\"."));\r
7982             superclass_name = token;\r
7983             CURRENT_SUPER_CLASS = "objj_getClass(\"" + superclass_name + "\")";\r
7984             { if ((SUPER_CLASSES)._buckets[class_name] == NULL) { (SUPER_CLASSES)._keys.push(class_name); ++(SUPER_CLASSES).count; } if (((SUPER_CLASSES)._buckets[class_name] = superclass_name) == NULL) --(SUPER_CLASSES).count;};\r
7985             token = tokens.skip_whitespace();\r
7986         }\r
7987         preprocessed += "{var the_class = objj_allocateClassPair(" + superclass_name + ", \"" + class_name + "\"),\nmeta_class = the_class.isa;";\r
7988         if (token == TOKEN_OPEN_BRACE)\r
7989         {\r
7990             var ivar = true,\r
7991                 ivar_count = 0;\r
7992             while((token = tokens.skip_whitespace()) && token != TOKEN_CLOSE_BRACE)\r
7993             {\r
7994                 if (token != TOKEN_SEMICOLON && (ivar = !ivar))\r
7995                 {\r
7996                     if (ivar_count++ == 0)\r
7997                         preprocessed += "class_addIvars(the_class, [";\r
7998                     else\r
7999                         preprocessed += ", ";\r
8000                     preprocessed += "new objj_ivar(\"" + token + "\")";\r
8001                 }\r
8002             }\r
8003             if (ivar_count)\r
8004                 preprocessed += "]);\n";\r
8005             if (!token)\r
8006                 objj_exception_throw(new objj_exception(OBJJParseException, "*** Expected '}'"));\r
8007         }\r
8008         else tokens.previous();\r
8009         preprocessed += "objj_registerClassPair(the_class);\n";\r
8010         preprocessed += "objj_addClassForBundle(the_class, objj_getBundleWithPath(OBJJ_CURRENT_BUNDLE.path));\n";\r
8011     }\r
8012     while((token = tokens.skip_whitespace()))\r
8013     {\r
8014         if(token == TOKEN_PLUS) preprocessed += (class_method_count ? "" : "var class_methods = [];\n") + objj_preprocess_method(tokens, class_method_count++, "class_methods");\r
8015         else if(token == TOKEN_MINUS) preprocessed += (instance_method_count ? "" : "var instance_methods = [];\n") + objj_preprocess_method(tokens, instance_method_count++, "instance_methods");\r
8016         else if(token == TOKEN_PREPROCESSOR)\r
8017         {\r
8018             if((token = tokens.next()) == "end")\r
8019                 break;\r
8020             else\r
8021                 objj_exception_throw(new objj_exception(OBJJParseException, "*** Expected \"@end\", found \"@" + token + "\"."));\r
8022         }\r
8023     }\r
8024     if (instance_method_count) preprocessed += "class_addMethods(the_class, instance_methods);\n";\r
8025     if (class_method_count) preprocessed += "class_addMethods(meta_class, class_methods);\n";\r
8026     return preprocessed + '}';\r
8027 }\r
8028 var objj_preprocess_directive = function(tokens)\r
8029 {\r
8030     token = tokens.next();\r
8031     if(token.charAt(0) == TOKEN_DOUBLE_QUOTE) return token;\r
8032     else if(token == TOKEN_CLASS) { tokens.skip_whitespace(); return ""; }\r
8033     else if(token == TOKEN_IMPLEMENTATION) return objj_preprocess_implementation(tokens);\r
8034     else if(token == TOKEN_SELECTOR)\r
8035     {\r
8036         if (tokens.skip_whitespace() != TOKEN_OPEN_PARENTHESIS)\r
8037             objj_exception_throw(new objj_exception(OBJJParseException, "*** Expected ')'"));\r
8038         return "sel_registerName(\"" + objj_preprocess_tokens(tokens, TOKEN_CLOSE_PARENTHESIS) +"\")";\r
8039     }\r
8040     return "";\r
8041 }\r
8042 var objj_preprocess_brackets = function(tokens)\r
8043 {\r
8044     var literal = '[',\r
8045         receiver = "",\r
8046         selector = "",\r
8047         marg_list = new Array(),\r
8048         preprocessed = "objj_msgSend";\r
8049     var token = "",\r
8050         array = false,\r
8051         previous = "",\r
8052         braces = 0,\r
8053         tertiary = 0,\r
8054         parenthesis = 0;\r
8055     while((token = tokens.skip_whitespace()) && token != TOKEN_CLOSE_BRACKET)\r
8056     {\r
8057         var preprocess = !braces && !tertiary && !parenthesis && !array;\r
8058         if (token == TOKEN_SUPER)\r
8059         {\r
8060             if (!receiver.length)\r
8061             {\r
8062                 preprocessed = "objj_msgSendSuper";\r
8063                 token = "{ receiver:self, super_class:" + CURRENT_SUPER_CLASS + " }";\r
8064             }\r
8065             else\r
8066                 objj_exception_throw(new objj_exception(OBJJParseException, "*** Can't use 'super' in this context."));\r
8067         }\r
8068         else if (token == TOKEN_OPEN_BRACE) ++braces;\r
8069         else if (token == TOKEN_CLOSE_BRACE) --braces;\r
8070         else if(token == TOKEN_QUESTION_MARK) ++tertiary;\r
8071         else if(token == TOKEN_OPEN_PARENTHESIS) ++parenthesis;\r
8072         else if(token == TOKEN_CLOSE_PARENTHESIS) --parenthesis;\r
8073         else if(token == TOKEN_OPEN_BRACKET) token = objj_preprocess_brackets(tokens);\r
8074         else if(token == TOKEN_PREPROCESSOR) token = objj_preprocess_directive(tokens);\r
8075         if(preprocess)\r
8076         {\r
8077             if(token == TOKEN_COMMA && !selector.length)\r
8078                 array = true;\r
8079             if(token == TOKEN_COLON)\r
8080             {\r
8081                 var last = tokens.last();\r
8082                 if (last && (!(/\S/).test(last) || last.substr(0, 2) == "//" || last.substr(0, 2) == "/*"))\r
8083                 {\r
8084                     selector += ':';\r
8085                     marg_list[marg_list.length - 1] += previous;\r
8086                     marg_list[marg_list.length] = previous = "";\r
8087                 }\r
8088                 else\r
8089                 {\r
8090                     selector += previous + ":";\r
8091                     marg_list[marg_list.length] = previous = "";\r
8092                 }\r
8093             }\r
8094             else\r
8095             {\r
8096                 if (previous == TOKEN_NEW)\r
8097                     previous = "new ";\r
8098                 if (selector.length)\r
8099                     marg_list[marg_list.length - 1] += previous;\r
8100                 else\r
8101                     receiver += previous;\r
8102                 previous = token;\r
8103             }\r
8104         }\r
8105         else\r
8106         {\r
8107             if(token == TOKEN_COLON && !braces)\r
8108                 --tertiary;\r
8109             previous += token;\r
8110         }\r
8111         if (token == TOKEN_NEW)\r
8112             literal += "new ";\r
8113         else\r
8114             literal += token;\r
8115     }\r
8116     if (selector.length) marg_list[marg_list.length - 1] += previous;\r
8117     else if(!array && receiver.length && !((/[\:\+\-\*\/\=\<\>\&\|\!\.\%]/).test(receiver.charAt(receiver.length - 1))) &&\r
8118             receiver != TOKEN_NEW && !(/[\+\-\*\/\=\<\>\&\|\!\.\[\^\(]/).test(previous.charAt(0)))\r
8119         selector = previous;\r
8120     else return literal + ']';\r
8121     preprocessed += '(' + receiver + ", \"" + sel_registerName(selector) + "\"";\r
8122     var i = 0,\r
8123         length = marg_list.length;\r
8124     for(; i < length; ++i)\r
8125         preprocessed += ", " + marg_list[i];\r
8126     return preprocessed + ')';\r
8127 }\r
8128 function objj_preprocess_tokens(tokens, terminator, instigator, segment)\r
8129 {\r
8130     var count = 0,\r
8131         token = "",\r
8132         fragments = [],\r
8133         preprocessed = "";\r
8134     while((token = tokens.next()) && ((token != terminator) || count))\r
8135     {\r
8136         if (instigator)\r
8137         {\r
8138             if (token == instigator) ++count;\r
8139             else if (token == terminator) --count;\r
8140         }\r
8141         if(token == TOKEN_IMPORT)\r
8142         {\r
8143             if ((/[^\s]/).test(preprocessed))\r
8144                 fragments.push(fragment_create_code(preprocessed, OBJJ_CURRENT_BUNDLE, tokens.file));\r
8145             preprocessed = "";\r
8146             var path = "",\r
8147                 token = tokens.skip_whitespace(),\r
8148                 isLocal = token != TOKEN_LESS_THAN;\r
8149             if(token == TOKEN_LESS_THAN)\r
8150             {\r
8151                 while((token= tokens.next()) && token != TOKEN_GREATER_THAN) path+= token;\r
8152                 if(!token) objj_throw("Parser Error - Unterminated import statement.");\r
8153             }\r
8154             else if(token.charAt(0) == TOKEN_DOUBLE_QUOTE) path= token.substr(1, token.length-2);\r
8155             else\r
8156                 objj_exception_throw(new objj_exception(OBJJParseException, "*** Expecting '<' or '\"', found \"" + token + "\"."));\r
8157             fragments.push(fragment_create_file(path, NULL, isLocal, tokens.file));\r
8158         }\r
8159         else if(token == TOKEN_FUNCTION)\r
8160         {\r
8161             var accumulator= "";\r
8162             while((token = tokens.next()) && token != TOKEN_OPEN_PARENTHESIS && !(/^\w/).test(token))\r
8163                 accumulator += token;\r
8164             if(token == TOKEN_OPEN_PARENTHESIS)\r
8165                 preprocessed+= "function"+accumulator+'(';\r
8166             else\r
8167             {\r
8168                 preprocessed += token + "= function";\r
8169             }\r
8170         }\r
8171         else if(token == TOKEN_PREPROCESSOR)\r
8172             preprocessed+= objj_preprocess_directive(tokens);\r
8173         else if(token == TOKEN_OPEN_BRACKET)\r
8174             preprocessed += objj_preprocess_brackets(tokens);\r
8175         else\r
8176             preprocessed += token;\r
8177     }\r
8178     if (preprocessed.length && (/[^\s]/).test(preprocessed))\r
8179         fragments.push(fragment_create_code(preprocessed, OBJJ_CURRENT_BUNDLE, tokens.file));\r
8180     if (!segment)\r
8181         return fragments.length ? fragments[0].info : "";\r
8182     return fragments;\r
8183 }\r
8184 function objj_preprocess(aString, aBundle, aSourceFile)\r
8185 {\r
8186     try\r
8187     {\r
8188         OBJJ_CURRENT_BUNDLE = aBundle;\r
8189         return objj_preprocess_tokens(new objj_lexer(aString, aSourceFile), nil, nil, YES);\r
8190     }\r
8191     catch (anException)\r
8192     {\r
8193         objj_exception_report(anException, aSourceFile);\r
8194     }\r
8195     return [];\r
8196 }\r
8197 var objj_included_files = { };\r
8198 var FRAGMENT_CODE = 1,\r
8199     FRAGMENT_FILE = 1 << 2,\r
8200     FRAGMENT_LOCAL = 1 << 3;\r
8201 function objj_fragment()\r
8202 {\r
8203     this.info = NULL;\r
8204     this.type = 0;\r
8205     this.context = NULL;\r
8206     this.bundle = NULL;\r
8207     this.file = NULL;\r
8208 }\r
8209 function objj_context()\r
8210 {\r
8211     this.fragments = [];\r
8212     this.scheduled = NO;\r
8213     this.blocked = NO;\r
8214 }\r
8215 function fragment_create_code(aCode, aBundle, aFile)\r
8216 {\r
8217     var fragment = new objj_fragment();\r
8218     fragment.type = (FRAGMENT_CODE);\r
8219     fragment.info = (aCode);\r
8220     fragment.bundle = aBundle;\r
8221     fragment.file = aFile;\r
8222     return fragment;\r
8223 }\r
8224 function fragment_create_file(aPath, aBundle, isLocal, aFile)\r
8225 {\r
8226     var fragment = new objj_fragment();\r
8227     fragment.type = (FRAGMENT_FILE | (FRAGMENT_LOCAL * isLocal));\r
8228     fragment.info = aPath;\r
8229     fragment.bundle = aBundle;\r
8230     fragment.file = aFile;\r
8231     return fragment;\r
8232 }\r
8233 objj_context.prototype.evaluate = function()\r
8234 {\r
8235     this.scheduled = NO;\r
8236     if (this.blocked)\r
8237         return this.schedule();\r
8238     var sleep = NO,\r
8239         start = new Date(),\r
8240         fragments = this.fragments;\r
8241     while (!sleep && fragments.length)\r
8242     {\r
8243         var fragment = fragments.pop();\r
8244         if ((fragment.type & FRAGMENT_FILE))\r
8245             sleep = fragment_evaluate_file(fragment);\r
8246         else\r
8247             sleep = fragment_evaluate_code(fragment);\r
8248         sleep = sleep || ((new Date() - start) > 3000);\r
8249     }\r
8250     if (sleep)\r
8251         this.schedule();\r
8252     else if (this.didCompleteCallback)\r
8253         this.didCompleteCallback(this);\r
8254 }\r
8255 objj_context.prototype.schedule = function()\r
8256 {\r
8257     if (this.scheduled)\r
8258         return;\r
8259     this.scheduled = YES;\r
8260     var context = this;\r
8261     window.setTimeout(function () { context.evaluate(); }, 0);\r
8262 }\r
8263 objj_context.prototype.pushFragment = function(aFragment)\r
8264 {\r
8265     aFragment.context = this;\r
8266     this.fragments.push(aFragment);\r
8267 }\r
8268 function fragment_evaluate_code(aFragment)\r
8269 {\r
8270     var compiled;\r
8271     OBJJ_CURRENT_BUNDLE = aFragment.bundle;\r
8272     try\r
8273     {\r
8274         compiled = new Function(aFragment.info);\r
8275     }\r
8276     catch(anException)\r
8277     {\r
8278         objj_exception_report(anException, aFragment.file);\r
8279     }\r
8280     try\r
8281     {\r
8282         compiled();\r
8283     }\r
8284     catch(anException)\r
8285     {\r
8286         objj_exception_report(anException, aFragment.file);\r
8287     }\r
8288     return NO;\r
8289 }\r
8290 function fragment_evaluate_file(aFragment)\r
8291 {\r
8292     var context = aFragment.context,\r
8293         requiresSleep = YES;\r
8294     context.blocked = YES;\r
8295     objj_request_file(aFragment.info, (aFragment.type & FRAGMENT_LOCAL), function(aFile)\r
8296     {\r
8297         requiresSleep = NO;\r
8298         context.blocked = NO;\r
8299         if (aFile == OBJJ_NO_FILE)\r
8300             objj_alert("uh oh!");\r
8301         if (objj_included_files[aFile.path])\r
8302             return;\r
8303         objj_included_files[aFile.path] = YES;\r
8304         if (!aFile.fragments)\r
8305             aFile.fragments = objj_preprocess(aFile.contents, aFile.bundle, aFile);\r
8306         var fragments = aFile.fragments,\r
8307             count = fragments.length,\r
8308             directory = aFile.path.substr(0, aFile.path.lastIndexOf('/') + 1);\r
8309         while (count--)\r
8310         {\r
8311             var fragment = fragments[count];\r
8312             if ((fragment.type & FRAGMENT_FILE))\r
8313             {\r
8314                 if ((fragment.type & FRAGMENT_LOCAL))\r
8315                     fragment.info = directory + fragment.info;\r
8316                 objj_request_file(fragment.info, (fragment.type & FRAGMENT_LOCAL), NULL);\r
8317             }\r
8318             context.pushFragment(fragment);\r
8319         }\r
8320     });\r
8321     return requiresSleep;\r
8322 }\r
8323 function objj_import(aPath, isLocal, didCompleteCallback)\r
8324 {\r
8325     var context = new objj_context();\r
8326     context.didCompleteCallback = didCompleteCallback;\r
8327     context.pushFragment(fragment_create_file(aPath, new objj_bundle(""), isLocal, NULL));\r
8328     context.evaluate();\r
8329 }\r
8330 OBJJUnrecognizedFormatException = "OBJJUnrecognizedFormatException";\r
8331 var STATIC_MAGIC_NUMBER = "@STATIC",\r
8332     MARKER_PATH = "p",\r
8333     MARKER_CODE = "c",\r
8334     MARKER_IMPORT_STD = 'I',\r
8335     MARKER_IMPORT_LOCAL = 'i';\r
8336 var STATIC_EXTENSION = "sj";\r
8337 function objj_preprocess_file(aFilePath, fileContents)\r
8338 {\r
8339     var fragments = objj_preprocess(fileContents, { path:"/x" }, { path:aFilePath}),\r
8340         index = 0,\r
8341         count = fragments.length,\r
8342         preprocessed = MARKER_PATH + ';' + aFilePath.length() + ';' + aFilePath;\r
8343     for (; index < count; ++index)\r
8344     {\r
8345         var fragment = fragments[index];\r
8346         if ((fragment.type & FRAGMENT_FILE))\r
8347             preprocessed += ((fragment.type & FRAGMENT_LOCAL) ? MARKER_IMPORT_LOCAL : MARKER_IMPORT_STD) + ';' + fragment.info.length + ';' + fragment.info;\r
8348         else\r
8349             preprocessed += MARKER_CODE + ';' + fragment.info.length + ';' + fragment.info;\r
8350     }\r
8351     return preprocessed;\r
8352 }\r
8353 function objj_decompile(aString, bundle)\r
8354 {\r
8355     var stream = new objj_markedStream(aString);\r
8356     if (stream.magicNumber() != STATIC_MAGIC_NUMBER)\r
8357         objj_exception_throw(new objj_exception(OBJJUnrecognizedFormatException, "*** Could not recognize executable code format."));\r
8358     if (stream.version() != 1.0)\r
8359         objj_exception_throw(new objj_exception(OBJJUnrecognizedFormatException, "*** Could not recognize executable code format."));\r
8360     var file = NULL,\r
8361         files = [];\r
8362     while (marker = stream.getMarker())\r
8363     {\r
8364         var text = stream.getString();\r
8365         switch (marker)\r
8366         {\r
8367             case MARKER_PATH: file = new objj_file();\r
8368                                         file.path = (bundle.path).substr(0, (bundle.path).lastIndexOf('/') + 1) + text;\r
8369                                         file.bundle = bundle;\r
8370                                         file.fragments = [];\r
8371                                         files.push(file);\r
8372                                         break;\r
8373             case MARKER_CODE: file.fragments.push(fragment_create_code(text, bundle, file));\r
8374                                         break;\r
8375             case MARKER_IMPORT_STD: file.fragments.push(fragment_create_file(text, bundle, NO, file));\r
8376                                         break;\r
8377             case MARKER_IMPORT_LOCAL: file.fragments.push(fragment_create_file(text, bundle, YES, file));\r
8378                                         break;\r
8379         }\r
8380     }\r
8381     return files;\r
8382 }\r
8383 function objj_msgSend_Backtrace( aReceiver, aSelector)\r
8384 {\r
8385     if (aReceiver == nil)\r
8386         return nil;\r
8387     objj_debug_backtrace.push("[" + (((aReceiver.info & (CLS_META))) ? aReceiver : aReceiver.isa).name + " " + aSelector + "]");\r
8388     try\r
8389     {\r
8390         var result = class_getMethodImplementation(aReceiver.isa, aSelector).apply(aReceiver, arguments);\r
8391     }\r
8392     catch (anException)\r
8393     {\r
8394         CPLog.error("Exception " + anException + " in [" + (((aReceiver.info & (CLS_META))) ? aReceiver : aReceiver.isa).name + " " + aSelector + "]");\r
8395         objj_debug_print_backtrace();\r
8396     }\r
8397     objj_debug_backtrace.pop();\r
8398     return result;\r
8399 }\r
8400 function objj_msgSendSuper_Backtrace( aSuper, aSelector)\r
8401 {\r
8402     objj_debug_backtrace.push("[" + (((aSuper.receiver.info & (CLS_META))) ? aSuper.receiver : aSuper.receiver.isa).name + " " + aSelector + "]");\r
8403     var super_class = aSuper.super_class;\r
8404     arguments[0] = aSuper.receiver;\r
8405     try\r
8406     {\r
8407         var result = class_getMethodImplementation(super_class, aSelector).apply(aSuper.receiver, arguments);\r
8408     }\r
8409     catch (anException)\r
8410     {\r
8411         CPLog.error("Exception " + anException + " in [" + (((aSuper.receiver.info & (CLS_META))) ? aSuper.receiver : aSuper.receiver.isa).name + " " + aSelector + "]");\r
8412         objj_debug_print_backtrace();\r
8413     }\r
8414     objj_debug_backtrace.pop();\r
8415     return result;\r
8416 }\r
8417 function objj_msgSend_Profile( aReceiver, aSelector)\r
8418 {\r
8419     if (aReceiver == nil)\r
8420         return nil;\r
8421     var profileRecord = {\r
8422         parent : objj_debug_profile,\r
8423         receiver : (((aReceiver.info & (CLS_META))) ? aReceiver : aReceiver.isa).name,\r
8424         selector : aSelector,\r
8425         calls : []\r
8426     }\r
8427     objj_debug_profile.calls.push(profileRecord);\r
8428     objj_debug_profile = profileRecord;\r
8429     profileRecord.start = new Date();\r
8430     var result = class_getMethodImplementation(aReceiver.isa, aSelector).apply(aReceiver, arguments);\r
8431     profileRecord.end = new Date();\r
8432     objj_debug_profile = profileRecord.parent;\r
8433     return result;\r
8434 }\r
8435 function objj_msgSendSuper_Profile( aSuper, aSelector)\r
8436 {\r
8437     var profileRecord = {\r
8438         parent : objj_debug_profile,\r
8439         receiver : (((aReceiver.info & (CLS_META))) ? aReceiver : aReceiver.isa).name,\r
8440         selector : aSelector,\r
8441         calls : []\r
8442     }\r
8443     objj_debug_profile.calls.push(profileRecord);\r
8444     objj_debug_profile = profileRecord;\r
8445     profileRecord.start = new Date();\r
8446     var super_class = aSuper.super_class;\r
8447     arguments[0] = aSuper.receiver;\r
8448     var result = class_getMethodImplementation(super_class, aSelector).apply(aSuper.receiver, arguments);\r
8449     profileRecord.end = new Date();\r
8450     objj_debug_profile = profileRecord.parent;\r
8451     return result;\r
8452 }\r
8453 var objj_msgSend_Standard = objj_msgSend,\r
8454     objj_msgSendSuper_Standard = objj_msgSendSuper;\r
8455 var objj_debug_backtrace;\r
8456 function objj_backtrace_set_enable(enabled)\r
8457 {\r
8458     if (enabled)\r
8459     {\r
8460         objj_debug_backtrace = [];\r
8461         objj_msgSend = objj_msgSend_Backtrace;\r
8462         objj_msgSendSuper = objj_msgSendSuper_Backtrace;\r
8463     }\r
8464     else\r
8465     {\r
8466         objj_msgSend = objj_msgSend_Standard;\r
8467         objj_msgSendSuper = objj_msgSendSuper_Standard;\r
8468     }\r
8469 }\r
8470 function objj_debug_print_backtrace()\r
8471 {\r
8472     CPLog.trace(objj_debug_backtrace_string());\r
8473 }\r
8474 function objj_debug_backtrace_string()\r
8475 {\r
8476     return objj_debug_backtrace.join("\n");\r
8477 }\r
8478 var objj_debug_profile = null,\r
8479     objj_currently_profiling = false,\r
8480     objj_profile_cleanup;\r
8481 function objj_profile(title)\r
8482 {\r
8483     if (objj_currently_profiling)\r
8484         return;\r
8485     var objj_msgSend_profile_saved = objj_msgSend,\r
8486         objj_msgSendSuper_profile_saved = objj_msgSendSuper;\r
8487     objj_msgSend = objj_msgSend_Profile;\r
8488     objj_msgSendSuper = objj_msgSendSuper_Profile;\r
8489     var root = { calls: [] };\r
8490     objj_debug_profile = root;\r
8491     var context = {\r
8492         start : new Date(),\r
8493         title : title,\r
8494         profile : root\r
8495     };\r
8496     objj_profile_cleanup = function() {\r
8497         objj_msgSend = objj_msgSend_profile_saved;\r
8498         objj_msgSendSuper = objj_msgSendSuper_profile_saved;\r
8499         context.end = new Date();\r
8500         return context;\r
8501     }\r
8502     objj_currently_profiling = true;\r
8503 }\r
8504 function objj_profileEnd()\r
8505 {\r
8506     if (!objj_currently_profiling)\r
8507         return;\r
8508     objj_debug_profile = null;\r
8509     objj_currently_profiling = false;\r
8510     return objj_profile_cleanup();\r
8511 }\r
8512 \r
8513 \r
8514 \r
8515             objj_import("main.j", YES, function() { main(); });\r
8516             \r
8517             window.files_total = 2276858;\r
8518             window.iconHeight = 256;\r
8519             \r
8520             window.update_progress = function(percent)\r
8521             {\r
8522                 var value = MAX(MIN(percent-0.05, 1), 0),\r
8523                     progress = document.getElementById("progress"),\r
8524                     progressValue = document.getElementById("progressValue");\r
8525                     \r
8526                 if (progress)\r
8527                 {\r
8528                     progress.style.height = FLOOR(value * window.iconHeight) + "px";\r
8529                     progress.style.top = -1 * FLOOR(value * window.iconHeight) + "px";\r
8530                 }\r
8531                 \r
8532                 if (progressValue)\r
8533                     progressValue.innerHTML = "Loading: "+ROUND((value+0.05)*100)+"%";\r
8534             }\r
8535 </script>\r
8536 \r
8537 \r
8538 <script id="ball-pool" type="x">\r
8539 /* Based on Alex Arnell's inheritance implementation. */\r
8540 var Class = {\r
8541   create: function() {\r
8542     var parent = null, properties = $A(arguments);\r
8543     if (Object.isFunction(properties[0]))\r
8544       parent = properties.shift();\r
8545 \r
8546     function klass() {\r
8547       this.initialize.apply(this, arguments);\r
8548     }\r
8549 \r
8550     Object.extend(klass, Class.Methods);\r
8551     klass.superclass = parent;\r
8552     klass.subclasses = [];\r
8553 \r
8554     if (parent) {\r
8555       var subclass = function() { };\r
8556       subclass.prototype = parent.prototype;\r
8557       klass.prototype = new subclass;\r
8558       parent.subclasses.push(klass);\r
8559     }\r
8560 \r
8561     for (var i = 0; i < properties.length; i++)\r
8562       klass.addMethods(properties[i]);\r
8563 \r
8564     if (!klass.prototype.initialize)\r
8565       klass.prototype.initialize = this.emptyFunction;\r
8566 \r
8567     klass.prototype.constructor = klass;\r
8568 \r
8569     return klass;\r
8570   },\r
8571   emptyFunction:function () {},\r
8572 \r
8573 };\r
8574 \r
8575 Class.Methods = {\r
8576   addMethods: function(source) {\r
8577     var ancestor   = this.superclass && this.superclass.prototype;\r
8578     var properties = Object.keys(source);\r
8579 \r
8580     if (!Object.keys({ toString: true }).length)\r
8581       properties.push("toString", "valueOf");\r
8582 \r
8583     for (var i = 0, length = properties.length; i < length; i++) {\r
8584       var property = properties[i], value = source[property];\r
8585       if (ancestor && Object.isFunction(value) &&\r
8586           value.argumentNames().first() == "$super") {\r
8587         var method = value, value = Object.extend((function(m) {\r
8588           return function() { return ancestor[m].apply(this, arguments) };\r
8589         })(property).wrap(method), {\r
8590           valueOf:  function() { return method },\r
8591           toString: function() { return method.toString() }\r
8592         });\r
8593       }\r
8594       this.prototype[property] = value;\r
8595     }\r
8596 \r
8597     return this;\r
8598   }\r
8599 };\r
8600 \r
8601 Object.extend = function(destination, source) {\r
8602   for (var property in source)\r
8603     destination[property] = source[property];\r
8604   return destination;\r
8605 };\r
8606 \r
8607 Object.extend(Object, {\r
8608   inspect: function(object) {\r
8609     try {\r
8610       if (Object.isUndefined(object)) return 'undefined';\r
8611       if (object === null) return 'null';\r
8612       return object.inspect ? object.inspect() : String(object);\r
8613     } catch (e) {\r
8614       if (e instanceof RangeError) return '...';\r
8615       throw e;\r
8616     }\r
8617   },\r
8618 \r
8619   toJSON: function(object) {\r
8620     var type = typeof object;\r
8621     switch (type) {\r
8622       case 'undefined':\r
8623       case 'function':\r
8624       case 'unknown': return;\r
8625       case 'boolean': return object.toString();\r
8626     }\r
8627 \r
8628     if (object === null) return 'null';\r
8629     if (object.toJSON) return object.toJSON();\r
8630     if (Object.isElement(object)) return;\r
8631 \r
8632     var results = [];\r
8633     for (var property in object) {\r
8634       var value = Object.toJSON(object[property]);\r
8635       if (!Object.isUndefined(value))\r
8636         results.push(property.toJSON() + ': ' + value);\r
8637     }\r
8638 \r
8639     return '{' + results.join(', ') + '}';\r
8640   },\r
8641 \r
8642   toQueryString: function(object) {\r
8643     return $H(object).toQueryString();\r
8644   },\r
8645 \r
8646   toHTML: function(object) {\r
8647     return object && object.toHTML ? object.toHTML() : String.interpret(object);\r
8648   },\r
8649 \r
8650   keys: function(object) {\r
8651     var keys = [];\r
8652     for (var property in object)\r
8653       keys.push(property);\r
8654     return keys;\r
8655   },\r
8656 \r
8657   values: function(object) {\r
8658     var values = [];\r
8659     for (var property in object)\r
8660       values.push(object[property]);\r
8661     return values;\r
8662   },\r
8663 \r
8664   clone: function(object) {\r
8665     return Object.extend({ }, object);\r
8666   },\r
8667 \r
8668   isElement: function(object) {\r
8669     return object && object.nodeType == 1;\r
8670   },\r
8671 \r
8672   isArray: function(object) {\r
8673     return object != null && typeof object == "object" &&\r
8674       'splice' in object && 'join' in object;\r
8675   },\r
8676 \r
8677   isHash: function(object) {\r
8678     return object instanceof Hash;\r
8679   },\r
8680 \r
8681   isFunction: function(object) {\r
8682     return typeof object == "function";\r
8683   },\r
8684 \r
8685   isString: function(object) {\r
8686     return typeof object == "string";\r
8687   },\r
8688 \r
8689   isNumber: function(object) {\r
8690     return typeof object == "number";\r
8691   },\r
8692 \r
8693   isUndefined: function(object) {\r
8694     return typeof object == "undefined";\r
8695   }\r
8696 });\r
8697 \r
8698 function $A(iterable) {\r
8699   if (!iterable) return [];\r
8700   if (iterable.toArray) return iterable.toArray();\r
8701   var length = iterable.length || 0, results = new Array(length);\r
8702   while (length--) results[length] = iterable[length];\r
8703   return results;\r
8704 }\r
8705 \r
8706 if (WebKit = navigator.userAgent.indexOf('AppleWebKit/') > -1) {\r
8707   $A = function(iterable) {\r
8708     if (!iterable) return [];\r
8709     if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&\r
8710         iterable.toArray) return iterable.toArray();\r
8711     var length = iterable.length || 0, results = new Array(length);\r
8712     while (length--) results[length] = iterable[length];\r
8713     return results;\r
8714   };\r
8715 }\r
8716 \r
8717 \r
8718 \r
8719 /* \r
8720  * Box2Djs (port of Box2DFlash 1.4.3.1) - http://box2d-js.sourceforge.net/\r
8721  * Single-filed and jsmined ( http://code.google.com/p/jsmin-php/ ) by Mr.doob\r
8722  */\r
8723 \r
8724 var b2Settings=Class.create();b2Settings.prototype={initialize:function(){}}\r
8725 b2Settings.USHRT_MAX=0x0000ffff;b2Settings.b2_pi=Math.PI;b2Settings.b2_massUnitsPerKilogram=1.0;b2Settings.b2_timeUnitsPerSecond=1.0;b2Settings.b2_lengthUnitsPerMeter=30.0;b2Settings.b2_maxManifoldPoints=2;b2Settings.b2_maxShapesPerBody=64;b2Settings.b2_maxPolyVertices=8;b2Settings.b2_maxProxies=1024;b2Settings.b2_maxPairs=8*b2Settings.b2_maxProxies;b2Settings.b2_linearSlop=0.005*b2Settings.b2_lengthUnitsPerMeter;b2Settings.b2_angularSlop=2.0/180.0*b2Settings.b2_pi;b2Settings.b2_velocityThreshold=1.0*b2Settings.b2_lengthUnitsPerMeter/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_maxLinearCorrection=0.2*b2Settings.b2_lengthUnitsPerMeter;b2Settings.b2_maxAngularCorrection=8.0/180.0*b2Settings.b2_pi;b2Settings.b2_contactBaumgarte=0.2;b2Settings.b2_timeToSleep=0.5*b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_linearSleepTolerance=0.01*b2Settings.b2_lengthUnitsPerMeter/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_angularSleepTolerance=2.0/180.0/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2Assert=function(a)\r
8726 {if(!a){var nullVec;nullVec.x++;}};\r
8727 var b2Vec2=Class.create();b2Vec2.prototype={initialize:function(x_,y_){this.x=x_;this.y=y_;},SetZero:function(){this.x=0.0;this.y=0.0;},Set:function(x_,y_){this.x=x_;this.y=y_;},SetV:function(v){this.x=v.x;this.y=v.y;},Negative:function(){return new b2Vec2(-this.x,-this.y);},Copy:function(){return new b2Vec2(this.x,this.y);},Add:function(v)\r
8728 {this.x+=v.x;this.y+=v.y;},Subtract:function(v)\r
8729 {this.x-=v.x;this.y-=v.y;},Multiply:function(a)\r
8730 {this.x*=a;this.y*=a;},MulM:function(A)\r
8731 {var tX=this.x;this.x=A.col1.x*tX+A.col2.x*this.y;this.y=A.col1.y*tX+A.col2.y*this.y;},MulTM:function(A)\r
8732 {var tX=b2Math.b2Dot(this,A.col1);this.y=b2Math.b2Dot(this,A.col2);this.x=tX;},CrossVF:function(s)\r
8733 {var tX=this.x;this.x=s*this.y;this.y=-s*tX;},CrossFV:function(s)\r
8734 {var tX=this.x;this.x=-s*this.y;this.y=s*tX;},MinV:function(b)\r
8735 {this.x=this.x<b.x?this.x:b.x;this.y=this.y<b.y?this.y:b.y;},MaxV:function(b)\r
8736 {this.x=this.x>b.x?this.x:b.x;this.y=this.y>b.y?this.y:b.y;},Abs:function()\r
8737 {this.x=Math.abs(this.x);this.y=Math.abs(this.y);},Length:function()\r
8738 {return Math.sqrt(this.x*this.x+this.y*this.y);},Normalize:function()\r
8739 {var length=this.Length();if(length<Number.MIN_VALUE)\r
8740 {return 0.0;}\r
8741 var invLength=1.0/length;this.x*=invLength;this.y*=invLength;return length;},IsValid:function()\r
8742 {return b2Math.b2IsValid(this.x)&&b2Math.b2IsValid(this.y);},x:null,y:null};b2Vec2.Make=function(x_,y_)\r
8743 {return new b2Vec2(x_,y_);};\r
8744 var b2Mat22=Class.create();b2Mat22.prototype={initialize:function(angle,c1,c2)\r
8745 {if(angle==null)angle=0;this.col1=new b2Vec2();this.col2=new b2Vec2();if(c1!=null&&c2!=null){this.col1.SetV(c1);this.col2.SetV(c2);}\r
8746 else{var c=Math.cos(angle);var s=Math.sin(angle);this.col1.x=c;this.col2.x=-s;this.col1.y=s;this.col2.y=c;}},Set:function(angle)\r
8747 {var c=Math.cos(angle);var s=Math.sin(angle);this.col1.x=c;this.col2.x=-s;this.col1.y=s;this.col2.y=c;},SetVV:function(c1,c2)\r
8748 {this.col1.SetV(c1);this.col2.SetV(c2);},Copy:function(){return new b2Mat22(0,this.col1,this.col2);},SetM:function(m)\r
8749 {this.col1.SetV(m.col1);this.col2.SetV(m.col2);},AddM:function(m)\r
8750 {this.col1.x+=m.col1.x;this.col1.y+=m.col1.y;this.col2.x+=m.col2.x;this.col2.y+=m.col2.y;},SetIdentity:function()\r
8751 {this.col1.x=1.0;this.col2.x=0.0;this.col1.y=0.0;this.col2.y=1.0;},SetZero:function()\r
8752 {this.col1.x=0.0;this.col2.x=0.0;this.col1.y=0.0;this.col2.y=0.0;},Invert:function(out)\r
8753 {var a=this.col1.x;var b=this.col2.x;var c=this.col1.y;var d=this.col2.y;var det=a*d-b*c;det=1.0/det;out.col1.x=det*d;out.col2.x=-det*b;out.col1.y=-det*c;out.col2.y=det*a;return out;},Solve:function(out,bX,bY)\r
8754 {var a11=this.col1.x;var a12=this.col2.x;var a21=this.col1.y;var a22=this.col2.y;var det=a11*a22-a12*a21;det=1.0/det;out.x=det*(a22*bX-a12*bY);out.y=det*(a11*bY-a21*bX);return out;},Abs:function()\r
8755 {this.col1.Abs();this.col2.Abs();},col1:new b2Vec2(),col2:new b2Vec2()};\r
8756 var b2Math=Class.create();b2Math.prototype={initialize:function(){}}\r
8757 b2Math.b2IsValid=function(x)\r
8758 {return isFinite(x);};b2Math.b2Dot=function(a,b)\r
8759 {return a.x*b.x+a.y*b.y;};b2Math.b2CrossVV=function(a,b)\r
8760 {return a.x*b.y-a.y*b.x;};b2Math.b2CrossVF=function(a,s)\r
8761 {var v=new b2Vec2(s*a.y,-s*a.x);return v;};b2Math.b2CrossFV=function(s,a)\r
8762 {var v=new b2Vec2(-s*a.y,s*a.x);return v;};b2Math.b2MulMV=function(A,v)\r
8763 {var u=new b2Vec2(A.col1.x*v.x+A.col2.x*v.y,A.col1.y*v.x+A.col2.y*v.y);return u;};b2Math.b2MulTMV=function(A,v)\r
8764 {var u=new b2Vec2(b2Math.b2Dot(v,A.col1),b2Math.b2Dot(v,A.col2));return u;};b2Math.AddVV=function(a,b)\r
8765 {var v=new b2Vec2(a.x+b.x,a.y+b.y);return v;};b2Math.SubtractVV=function(a,b)\r
8766 {var v=new b2Vec2(a.x-b.x,a.y-b.y);return v;};b2Math.MulFV=function(s,a)\r
8767 {var v=new b2Vec2(s*a.x,s*a.y);return v;};b2Math.AddMM=function(A,B)\r
8768 {var C=new b2Mat22(0,b2Math.AddVV(A.col1,B.col1),b2Math.AddVV(A.col2,B.col2));return C;};b2Math.b2MulMM=function(A,B)\r
8769 {var C=new b2Mat22(0,b2Math.b2MulMV(A,B.col1),b2Math.b2MulMV(A,B.col2));return C;};b2Math.b2MulTMM=function(A,B)\r
8770 {var c1=new b2Vec2(b2Math.b2Dot(A.col1,B.col1),b2Math.b2Dot(A.col2,B.col1));var c2=new b2Vec2(b2Math.b2Dot(A.col1,B.col2),b2Math.b2Dot(A.col2,B.col2));var C=new b2Mat22(0,c1,c2);return C;};b2Math.b2Abs=function(a)\r
8771 {return a>0.0?a:-a;};b2Math.b2AbsV=function(a)\r
8772 {var b=new b2Vec2(b2Math.b2Abs(a.x),b2Math.b2Abs(a.y));return b;};b2Math.b2AbsM=function(A)\r
8773 {var B=new b2Mat22(0,b2Math.b2AbsV(A.col1),b2Math.b2AbsV(A.col2));return B;};b2Math.b2Min=function(a,b)\r
8774 {return a<b?a:b;};b2Math.b2MinV=function(a,b)\r
8775 {var c=new b2Vec2(b2Math.b2Min(a.x,b.x),b2Math.b2Min(a.y,b.y));return c;};b2Math.b2Max=function(a,b)\r
8776 {return a>b?a:b;};b2Math.b2MaxV=function(a,b)\r
8777 {var c=new b2Vec2(b2Math.b2Max(a.x,b.x),b2Math.b2Max(a.y,b.y));return c;};b2Math.b2Clamp=function(a,low,high)\r
8778 {return b2Math.b2Max(low,b2Math.b2Min(a,high));};b2Math.b2ClampV=function(a,low,high)\r
8779 {return b2Math.b2MaxV(low,b2Math.b2MinV(a,high));};b2Math.b2Swap=function(a,b)\r
8780 {var tmp=a[0];a[0]=b[0];b[0]=tmp;};b2Math.b2Random=function()\r
8781 {return Math.random()*2-1;};b2Math.b2NextPowerOfTwo=function(x)\r
8782 {x|=(x>>1)&0x7FFFFFFF;x|=(x>>2)&0x3FFFFFFF;x|=(x>>4)&0x0FFFFFFF;x|=(x>>8)&0x00FFFFFF;x|=(x>>16)&0x0000FFFF;return x+1;};b2Math.b2IsPowerOfTwo=function(x)\r
8783 {var result=x>0&&(x&(x-1))==0;return result;};b2Math.tempVec2=new b2Vec2();b2Math.tempVec3=new b2Vec2();b2Math.tempVec4=new b2Vec2();b2Math.tempVec5=new b2Vec2();b2Math.tempMat=new b2Mat22();\r
8784 var b2AABB=Class.create();b2AABB.prototype={IsValid:function(){var dX=this.maxVertex.x;var dY=this.maxVertex.y;dX=this.maxVertex.x;dY=this.maxVertex.y;dX-=this.minVertex.x;dY-=this.minVertex.y;var valid=dX>=0.0&&dY>=0.0;valid=valid&&this.minVertex.IsValid()&&this.maxVertex.IsValid();return valid;},minVertex:new b2Vec2(),maxVertex:new b2Vec2(),initialize:function(){this.minVertex=new b2Vec2();this.maxVertex=new b2Vec2();}};\r
8785 var b2Bound=Class.create();b2Bound.prototype={IsLower:function(){return(this.value&1)==0;},IsUpper:function(){return(this.value&1)==1;},Swap:function(b){var tempValue=this.value;var tempProxyId=this.proxyId;var tempStabbingCount=this.stabbingCount;this.value=b.value;this.proxyId=b.proxyId;this.stabbingCount=b.stabbingCount;b.value=tempValue;b.proxyId=tempProxyId;b.stabbingCount=tempStabbingCount;},value:0,proxyId:0,stabbingCount:0,initialize:function(){}}\r
8786 \r
8787 var b2BoundValues=Class.create();b2BoundValues.prototype={lowerValues:[0,0],upperValues:[0,0],initialize:function(){this.lowerValues=[0,0];this.upperValues=[0,0];}}\r
8788 \r
8789 var b2Pair=Class.create();b2Pair.prototype={SetBuffered:function(){this.status|=b2Pair.e_pairBuffered;},ClearBuffered:function(){this.status&=~b2Pair.e_pairBuffered;},IsBuffered:function(){return(this.status&b2Pair.e_pairBuffered)==b2Pair.e_pairBuffered;},SetRemoved:function(){this.status|=b2Pair.e_pairRemoved;},ClearRemoved:function(){this.status&=~b2Pair.e_pairRemoved;},IsRemoved:function(){return(this.status&b2Pair.e_pairRemoved)==b2Pair.e_pairRemoved;},SetFinal:function(){this.status|=b2Pair.e_pairFinal;},IsFinal:function(){return(this.status&b2Pair.e_pairFinal)==b2Pair.e_pairFinal;},userData:null,proxyId1:0,proxyId2:0,next:0,status:0,initialize:function(){}};b2Pair.b2_nullPair=b2Settings.USHRT_MAX;b2Pair.b2_nullProxy=b2Settings.USHRT_MAX;b2Pair.b2_tableCapacity=b2Settings.b2_maxPairs;b2Pair.b2_tableMask=b2Pair.b2_tableCapacity-1;b2Pair.e_pairBuffered=0x0001;b2Pair.e_pairRemoved=0x0002;b2Pair.e_pairFinal=0x0004;\r
8790 var b2PairCallback=Class.create();b2PairCallback.prototype={PairAdded:function(proxyUserData1,proxyUserData2){return null},PairRemoved:function(proxyUserData1,proxyUserData2,pairUserData){},initialize:function(){}};\r
8791 var b2BufferedPair=Class.create();b2BufferedPair.prototype={proxyId1:0,proxyId2:0,initialize:function(){}}\r
8792 \r
8793 var b2PairManager=Class.create();b2PairManager.prototype={initialize:function(){var i=0;this.m_hashTable=new Array(b2Pair.b2_tableCapacity);for(i=0;i<b2Pair.b2_tableCapacity;++i)\r
8794 {this.m_hashTable[i]=b2Pair.b2_nullPair;}\r
8795 this.m_pairs=new Array(b2Settings.b2_maxPairs);for(i=0;i<b2Settings.b2_maxPairs;++i)\r
8796 {this.m_pairs[i]=new b2Pair();}\r
8797 this.m_pairBuffer=new Array(b2Settings.b2_maxPairs);for(i=0;i<b2Settings.b2_maxPairs;++i)\r
8798 {this.m_pairBuffer[i]=new b2BufferedPair();}\r
8799 for(i=0;i<b2Settings.b2_maxPairs;++i)\r
8800 {this.m_pairs[i].proxyId1=b2Pair.b2_nullProxy;this.m_pairs[i].proxyId2=b2Pair.b2_nullProxy;this.m_pairs[i].userData=null;this.m_pairs[i].status=0;this.m_pairs[i].next=(i+1);}\r
8801 this.m_pairs[b2Settings.b2_maxPairs-1].next=b2Pair.b2_nullPair;this.m_pairCount=0;},Initialize:function(broadPhase,callback){this.m_broadPhase=broadPhase;this.m_callback=callback;},AddBufferedPair:function(proxyId1,proxyId2){var pair=this.AddPair(proxyId1,proxyId2);if(pair.IsBuffered()==false)\r
8802 {pair.SetBuffered();this.m_pairBuffer[this.m_pairBufferCount].proxyId1=pair.proxyId1;this.m_pairBuffer[this.m_pairBufferCount].proxyId2=pair.proxyId2;++this.m_pairBufferCount;}\r
8803 pair.ClearRemoved();if(b2BroadPhase.s_validate)\r
8804 {this.ValidateBuffer();}},RemoveBufferedPair:function(proxyId1,proxyId2){var pair=this.Find(proxyId1,proxyId2);if(pair==null)\r
8805 {return;}\r
8806 if(pair.IsBuffered()==false)\r
8807 {pair.SetBuffered();this.m_pairBuffer[this.m_pairBufferCount].proxyId1=pair.proxyId1;this.m_pairBuffer[this.m_pairBufferCount].proxyId2=pair.proxyId2;++this.m_pairBufferCount;}\r
8808 pair.SetRemoved();if(b2BroadPhase.s_validate)\r
8809 {this.ValidateBuffer();}},Commit:function(){var i=0;var removeCount=0;var proxies=this.m_broadPhase.m_proxyPool;for(i=0;i<this.m_pairBufferCount;++i)\r
8810 {var pair=this.Find(this.m_pairBuffer[i].proxyId1,this.m_pairBuffer[i].proxyId2);pair.ClearBuffered();var proxy1=proxies[pair.proxyId1];var proxy2=proxies[pair.proxyId2];if(pair.IsRemoved())\r
8811 {if(pair.IsFinal()==true)\r
8812 {this.m_callback.PairRemoved(proxy1.userData,proxy2.userData,pair.userData);}\r
8813 this.m_pairBuffer[removeCount].proxyId1=pair.proxyId1;this.m_pairBuffer[removeCount].proxyId2=pair.proxyId2;++removeCount;}\r
8814 else\r
8815 {if(pair.IsFinal()==false)\r
8816 {pair.userData=this.m_callback.PairAdded(proxy1.userData,proxy2.userData);pair.SetFinal();}}}\r
8817 for(i=0;i<removeCount;++i)\r
8818 {this.RemovePair(this.m_pairBuffer[i].proxyId1,this.m_pairBuffer[i].proxyId2);}\r
8819 this.m_pairBufferCount=0;if(b2BroadPhase.s_validate)\r
8820 {this.ValidateTable();}},AddPair:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}\r
8821 var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;var pair=pair=this.FindHash(proxyId1,proxyId2,hash);if(pair!=null)\r
8822 {return pair;}\r
8823 var pIndex=this.m_freePair;pair=this.m_pairs[pIndex];this.m_freePair=pair.next;pair.proxyId1=proxyId1;pair.proxyId2=proxyId2;pair.status=0;pair.userData=null;pair.next=this.m_hashTable[hash];this.m_hashTable[hash]=pIndex;++this.m_pairCount;return pair;},RemovePair:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}\r
8824 var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;var node=this.m_hashTable[hash];var pNode=null;while(node!=b2Pair.b2_nullPair)\r
8825 {if(b2PairManager.Equals(this.m_pairs[node],proxyId1,proxyId2))\r
8826 {var index=node;if(pNode){pNode.next=this.m_pairs[node].next;}\r
8827 else{this.m_hashTable[hash]=this.m_pairs[node].next;}\r
8828 var pair=this.m_pairs[index];var userData=pair.userData;pair.next=this.m_freePair;pair.proxyId1=b2Pair.b2_nullProxy;pair.proxyId2=b2Pair.b2_nullProxy;pair.userData=null;pair.status=0;this.m_freePair=index;--this.m_pairCount;return userData;}\r
8829 else\r
8830 {pNode=this.m_pairs[node];node=pNode.next;}}\r
8831 return null;},Find:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}\r
8832 var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;return this.FindHash(proxyId1,proxyId2,hash);},FindHash:function(proxyId1,proxyId2,hash){var index=this.m_hashTable[hash];while(index!=b2Pair.b2_nullPair&&b2PairManager.Equals(this.m_pairs[index],proxyId1,proxyId2)==false)\r
8833 {index=this.m_pairs[index].next;}\r
8834 if(index==b2Pair.b2_nullPair)\r
8835 {return null;}\r
8836 return this.m_pairs[index];},ValidateBuffer:function(){},ValidateTable:function(){},m_broadPhase:null,m_callback:null,m_pairs:null,m_freePair:0,m_pairCount:0,m_pairBuffer:null,m_pairBufferCount:0,m_hashTable:null};b2PairManager.Hash=function(proxyId1,proxyId2)\r
8837 {var key=((proxyId2<<16)&0xffff0000)|proxyId1;key=~key+((key<<15)&0xFFFF8000);key=key^((key>>12)&0x000fffff);key=key+((key<<2)&0xFFFFFFFC);key=key^((key>>4)&0x0fffffff);key=key*2057;key=key^((key>>16)&0x0000ffff);return key;};b2PairManager.Equals=function(pair,proxyId1,proxyId2)\r
8838 {return(pair.proxyId1==proxyId1&&pair.proxyId2==proxyId2);};b2PairManager.EqualsPair=function(pair1,pair2)\r
8839 {return pair1.proxyId1==pair2.proxyId1&&pair1.proxyId2==pair2.proxyId2;};\r
8840 var b2BroadPhase=Class.create();b2BroadPhase.prototype={initialize:function(worldAABB,callback){this.m_pairManager=new b2PairManager();this.m_proxyPool=new Array(b2Settings.b2_maxPairs);this.m_bounds=new Array(2*b2Settings.b2_maxProxies);this.m_queryResults=new Array(b2Settings.b2_maxProxies);this.m_quantizationFactor=new b2Vec2();var i=0;this.m_pairManager.Initialize(this,callback);this.m_worldAABB=worldAABB;this.m_proxyCount=0;for(i=0;i<b2Settings.b2_maxProxies;i++){this.m_queryResults[i]=0;}\r
8841 this.m_bounds=new Array(2);for(i=0;i<2;i++){this.m_bounds[i]=new Array(2*b2Settings.b2_maxProxies);for(var j=0;j<2*b2Settings.b2_maxProxies;j++){this.m_bounds[i][j]=new b2Bound();}}\r
8842 var dX=worldAABB.maxVertex.x;var dY=worldAABB.maxVertex.y;dX-=worldAABB.minVertex.x;dY-=worldAABB.minVertex.y;this.m_quantizationFactor.x=b2Settings.USHRT_MAX/dX;this.m_quantizationFactor.y=b2Settings.USHRT_MAX/dY;var tProxy;for(i=0;i<b2Settings.b2_maxProxies-1;++i)\r
8843 {tProxy=new b2Proxy();this.m_proxyPool[i]=tProxy;tProxy.SetNext(i+1);tProxy.timeStamp=0;tProxy.overlapCount=b2BroadPhase.b2_invalid;tProxy.userData=null;}\r
8844 tProxy=new b2Proxy();this.m_proxyPool[b2Settings.b2_maxProxies-1]=tProxy;tProxy.SetNext(b2Pair.b2_nullProxy);tProxy.timeStamp=0;tProxy.overlapCount=b2BroadPhase.b2_invalid;tProxy.userData=null;this.m_freeProxy=0;this.m_timeStamp=1;this.m_queryResultCount=0;},InRange:function(aabb){var dX;var dY;var d2X;var d2Y;dX=aabb.minVertex.x;dY=aabb.minVertex.y;dX-=this.m_worldAABB.maxVertex.x;dY-=this.m_worldAABB.maxVertex.y;d2X=this.m_worldAABB.minVertex.x;d2Y=this.m_worldAABB.minVertex.y;d2X-=aabb.maxVertex.x;d2Y-=aabb.maxVertex.y;dX=b2Math.b2Max(dX,d2X);dY=b2Math.b2Max(dY,d2Y);return b2Math.b2Max(dX,dY)<0.0;},GetProxy:function(proxyId){if(proxyId==b2Pair.b2_nullProxy||this.m_proxyPool[proxyId].IsValid()==false)\r
8845 {return null;}\r
8846 return this.m_proxyPool[proxyId];},CreateProxy:function(aabb,userData){var index=0;var proxy;var proxyId=this.m_freeProxy;proxy=this.m_proxyPool[proxyId];this.m_freeProxy=proxy.GetNext();proxy.overlapCount=0;proxy.userData=userData;var boundCount=2*this.m_proxyCount;var lowerValues=new Array();var upperValues=new Array();this.ComputeBounds(lowerValues,upperValues,aabb);for(var axis=0;axis<2;++axis)\r
8847 {var bounds=this.m_bounds[axis];var lowerIndex=0;var upperIndex=0;var lowerIndexOut=[lowerIndex];var upperIndexOut=[upperIndex];this.Query(lowerIndexOut,upperIndexOut,lowerValues[axis],upperValues[axis],bounds,boundCount,axis);lowerIndex=lowerIndexOut[0];upperIndex=upperIndexOut[0];var tArr=new Array();var j=0;var tEnd=boundCount-upperIndex\r
8848 var tBound1;var tBound2;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[upperIndex+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
8849 tEnd=tArr.length;var tIndex=upperIndex+2;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]\r
8850 tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
8851 tArr=new Array();tEnd=upperIndex-lowerIndex;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[lowerIndex+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
8852 tEnd=tArr.length;tIndex=lowerIndex+1;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]\r
8853 tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
8854 ++upperIndex;bounds[lowerIndex].value=lowerValues[axis];bounds[lowerIndex].proxyId=proxyId;bounds[upperIndex].value=upperValues[axis];bounds[upperIndex].proxyId=proxyId;bounds[lowerIndex].stabbingCount=lowerIndex==0?0:bounds[lowerIndex-1].stabbingCount;bounds[upperIndex].stabbingCount=bounds[upperIndex-1].stabbingCount;for(index=lowerIndex;index<upperIndex;++index)\r
8855 {bounds[index].stabbingCount++;}\r
8856 for(index=lowerIndex;index<boundCount+2;++index)\r
8857 {var proxy2=this.m_proxyPool[bounds[index].proxyId];if(bounds[index].IsLower())\r
8858 {proxy2.lowerBounds[axis]=index;}\r
8859 else\r
8860 {proxy2.upperBounds[axis]=index;}}}\r
8861 ++this.m_proxyCount;for(var i=0;i<this.m_queryResultCount;++i)\r
8862 {this.m_pairManager.AddBufferedPair(proxyId,this.m_queryResults[i]);}\r
8863 this.m_pairManager.Commit();this.m_queryResultCount=0;this.IncrementTimeStamp();return proxyId;},DestroyProxy:function(proxyId){var proxy=this.m_proxyPool[proxyId];var boundCount=2*this.m_proxyCount;for(var axis=0;axis<2;++axis)\r
8864 {var bounds=this.m_bounds[axis];var lowerIndex=proxy.lowerBounds[axis];var upperIndex=proxy.upperBounds[axis];var lowerValue=bounds[lowerIndex].value;var upperValue=bounds[upperIndex].value;var tArr=new Array();var j=0;var tEnd=upperIndex-lowerIndex-1;var tBound1;var tBound2;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[lowerIndex+1+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
8865 tEnd=tArr.length;var tIndex=lowerIndex;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]\r
8866 tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
8867 tArr=new Array();tEnd=boundCount-upperIndex-1;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[upperIndex+1+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
8868 tEnd=tArr.length;tIndex=upperIndex-1;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]\r
8869 tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
8870 tEnd=boundCount-2;for(var index=lowerIndex;index<tEnd;++index)\r
8871 {var proxy2=this.m_proxyPool[bounds[index].proxyId];if(bounds[index].IsLower())\r
8872 {proxy2.lowerBounds[axis]=index;}\r
8873 else\r
8874 {proxy2.upperBounds[axis]=index;}}\r
8875 tEnd=upperIndex-1;for(var index2=lowerIndex;index2<tEnd;++index2)\r
8876 {bounds[index2].stabbingCount--;}\r
8877 this.Query([0],[0],lowerValue,upperValue,bounds,boundCount-2,axis);}\r
8878 for(var i=0;i<this.m_queryResultCount;++i)\r
8879 {this.m_pairManager.RemoveBufferedPair(proxyId,this.m_queryResults[i]);}\r
8880 this.m_pairManager.Commit();this.m_queryResultCount=0;this.IncrementTimeStamp();proxy.userData=null;proxy.overlapCount=b2BroadPhase.b2_invalid;proxy.lowerBounds[0]=b2BroadPhase.b2_invalid;proxy.lowerBounds[1]=b2BroadPhase.b2_invalid;proxy.upperBounds[0]=b2BroadPhase.b2_invalid;proxy.upperBounds[1]=b2BroadPhase.b2_invalid;proxy.SetNext(this.m_freeProxy);this.m_freeProxy=proxyId;--this.m_proxyCount;},MoveProxy:function(proxyId,aabb){var axis=0;var index=0;var bound;var prevBound\r
8881 var nextBound\r
8882 var nextProxyId=0;var nextProxy;if(proxyId==b2Pair.b2_nullProxy||b2Settings.b2_maxProxies<=proxyId)\r
8883 {return;}\r
8884 if(aabb.IsValid()==false)\r
8885 {return;}\r
8886 var boundCount=2*this.m_proxyCount;var proxy=this.m_proxyPool[proxyId];var newValues=new b2BoundValues();this.ComputeBounds(newValues.lowerValues,newValues.upperValues,aabb);var oldValues=new b2BoundValues();for(axis=0;axis<2;++axis)\r
8887 {oldValues.lowerValues[axis]=this.m_bounds[axis][proxy.lowerBounds[axis]].value;oldValues.upperValues[axis]=this.m_bounds[axis][proxy.upperBounds[axis]].value;}\r
8888 for(axis=0;axis<2;++axis)\r
8889 {var bounds=this.m_bounds[axis];var lowerIndex=proxy.lowerBounds[axis];var upperIndex=proxy.upperBounds[axis];var lowerValue=newValues.lowerValues[axis];var upperValue=newValues.upperValues[axis];var deltaLower=lowerValue-bounds[lowerIndex].value;var deltaUpper=upperValue-bounds[upperIndex].value;bounds[lowerIndex].value=lowerValue;bounds[upperIndex].value=upperValue;if(deltaLower<0)\r
8890 {index=lowerIndex;while(index>0&&lowerValue<bounds[index-1].value)\r
8891 {bound=bounds[index];prevBound=bounds[index-1];var prevProxyId=prevBound.proxyId;var prevProxy=this.m_proxyPool[prevBound.proxyId];prevBound.stabbingCount++;if(prevBound.IsUpper()==true)\r
8892 {if(this.TestOverlap(newValues,prevProxy))\r
8893 {this.m_pairManager.AddBufferedPair(proxyId,prevProxyId);}\r
8894 prevProxy.upperBounds[axis]++;bound.stabbingCount++;}\r
8895 else\r
8896 {prevProxy.lowerBounds[axis]++;bound.stabbingCount--;}\r
8897 proxy.lowerBounds[axis]--;bound.Swap(prevBound);--index;}}\r
8898 if(deltaUpper>0)\r
8899 {index=upperIndex;while(index<boundCount-1&&bounds[index+1].value<=upperValue)\r
8900 {bound=bounds[index];nextBound=bounds[index+1];nextProxyId=nextBound.proxyId;nextProxy=this.m_proxyPool[nextProxyId];nextBound.stabbingCount++;if(nextBound.IsLower()==true)\r
8901 {if(this.TestOverlap(newValues,nextProxy))\r
8902 {this.m_pairManager.AddBufferedPair(proxyId,nextProxyId);}\r
8903 nextProxy.lowerBounds[axis]--;bound.stabbingCount++;}\r
8904 else\r
8905 {nextProxy.upperBounds[axis]--;bound.stabbingCount--;}\r
8906 proxy.upperBounds[axis]++;bound.Swap(nextBound);index++;}}\r
8907 if(deltaLower>0)\r
8908 {index=lowerIndex;while(index<boundCount-1&&bounds[index+1].value<=lowerValue)\r
8909 {bound=bounds[index];nextBound=bounds[index+1];nextProxyId=nextBound.proxyId;nextProxy=this.m_proxyPool[nextProxyId];nextBound.stabbingCount--;if(nextBound.IsUpper())\r
8910 {if(this.TestOverlap(oldValues,nextProxy))\r
8911 {this.m_pairManager.RemoveBufferedPair(proxyId,nextProxyId);}\r
8912 nextProxy.upperBounds[axis]--;bound.stabbingCount--;}\r
8913 else\r
8914 {nextProxy.lowerBounds[axis]--;bound.stabbingCount++;}\r
8915 proxy.lowerBounds[axis]++;bound.Swap(nextBound);index++;}}\r
8916 if(deltaUpper<0)\r
8917 {index=upperIndex;while(index>0&&upperValue<bounds[index-1].value)\r
8918 {bound=bounds[index];prevBound=bounds[index-1];prevProxyId=prevBound.proxyId;prevProxy=this.m_proxyPool[prevProxyId];prevBound.stabbingCount--;if(prevBound.IsLower()==true)\r
8919 {if(this.TestOverlap(oldValues,prevProxy))\r
8920 {this.m_pairManager.RemoveBufferedPair(proxyId,prevProxyId);}\r
8921 prevProxy.lowerBounds[axis]++;bound.stabbingCount--;}\r
8922 else\r
8923 {prevProxy.upperBounds[axis]++;bound.stabbingCount++;}\r
8924 proxy.upperBounds[axis]--;bound.Swap(prevBound);index--;}}}},Commit:function(){this.m_pairManager.Commit();},QueryAABB:function(aabb,userData,maxCount){var lowerValues=new Array();var upperValues=new Array();this.ComputeBounds(lowerValues,upperValues,aabb);var lowerIndex=0;var upperIndex=0;var lowerIndexOut=[lowerIndex];var upperIndexOut=[upperIndex];this.Query(lowerIndexOut,upperIndexOut,lowerValues[0],upperValues[0],this.m_bounds[0],2*this.m_proxyCount,0);this.Query(lowerIndexOut,upperIndexOut,lowerValues[1],upperValues[1],this.m_bounds[1],2*this.m_proxyCount,1);var count=0;for(var i=0;i<this.m_queryResultCount&&count<maxCount;++i,++count)\r
8925 {var proxy=this.m_proxyPool[this.m_queryResults[i]];userData[i]=proxy.userData;}\r
8926 this.m_queryResultCount=0;this.IncrementTimeStamp();return count;},Validate:function(){var pair;var proxy1;var proxy2;var overlap;for(var axis=0;axis<2;++axis)\r
8927 {var bounds=this.m_bounds[axis];var boundCount=2*this.m_proxyCount;var stabbingCount=0;for(var i=0;i<boundCount;++i)\r
8928 {var bound=bounds[i];if(bound.IsLower()==true)\r
8929 {stabbingCount++;}\r
8930 else\r
8931 {stabbingCount--;}}}},ComputeBounds:function(lowerValues,upperValues,aabb)\r
8932 {var minVertexX=aabb.minVertex.x;var minVertexY=aabb.minVertex.y;minVertexX=b2Math.b2Min(minVertexX,this.m_worldAABB.maxVertex.x);minVertexY=b2Math.b2Min(minVertexY,this.m_worldAABB.maxVertex.y);minVertexX=b2Math.b2Max(minVertexX,this.m_worldAABB.minVertex.x);minVertexY=b2Math.b2Max(minVertexY,this.m_worldAABB.minVertex.y);var maxVertexX=aabb.maxVertex.x;var maxVertexY=aabb.maxVertex.y;maxVertexX=b2Math.b2Min(maxVertexX,this.m_worldAABB.maxVertex.x);maxVertexY=b2Math.b2Min(maxVertexY,this.m_worldAABB.maxVertex.y);maxVertexX=b2Math.b2Max(maxVertexX,this.m_worldAABB.minVertex.x);maxVertexY=b2Math.b2Max(maxVertexY,this.m_worldAABB.minVertex.y);lowerValues[0]=(this.m_quantizationFactor.x*(minVertexX-this.m_worldAABB.minVertex.x))&(b2Settings.USHRT_MAX-1);upperValues[0]=((this.m_quantizationFactor.x*(maxVertexX-this.m_worldAABB.minVertex.x))&0x0000ffff)|1;lowerValues[1]=(this.m_quantizationFactor.y*(minVertexY-this.m_worldAABB.minVertex.y))&(b2Settings.USHRT_MAX-1);upperValues[1]=((this.m_quantizationFactor.y*(maxVertexY-this.m_worldAABB.minVertex.y))&0x0000ffff)|1;},TestOverlapValidate:function(p1,p2){for(var axis=0;axis<2;++axis)\r
8933 {var bounds=this.m_bounds[axis];if(bounds[p1.lowerBounds[axis]].value>bounds[p2.upperBounds[axis]].value)\r
8934 return false;if(bounds[p1.upperBounds[axis]].value<bounds[p2.lowerBounds[axis]].value)\r
8935 return false;}\r
8936 return true;},TestOverlap:function(b,p)\r
8937 {for(var axis=0;axis<2;++axis)\r
8938 {var bounds=this.m_bounds[axis];if(b.lowerValues[axis]>bounds[p.upperBounds[axis]].value)\r
8939 return false;if(b.upperValues[axis]<bounds[p.lowerBounds[axis]].value)\r
8940 return false;}\r
8941 return true;},Query:function(lowerQueryOut,upperQueryOut,lowerValue,upperValue,bounds,boundCount,axis){var lowerQuery=b2BroadPhase.BinarySearch(bounds,boundCount,lowerValue);var upperQuery=b2BroadPhase.BinarySearch(bounds,boundCount,upperValue);for(var j=lowerQuery;j<upperQuery;++j)\r
8942 {if(bounds[j].IsLower())\r
8943 {this.IncrementOverlapCount(bounds[j].proxyId);}}\r
8944 if(lowerQuery>0)\r
8945 {var i=lowerQuery-1;var s=bounds[i].stabbingCount;while(s)\r
8946 {if(bounds[i].IsLower())\r
8947 {var proxy=this.m_proxyPool[bounds[i].proxyId];if(lowerQuery<=proxy.upperBounds[axis])\r
8948 {this.IncrementOverlapCount(bounds[i].proxyId);--s;}}\r
8949 --i;}}\r
8950 lowerQueryOut[0]=lowerQuery;upperQueryOut[0]=upperQuery;},IncrementOverlapCount:function(proxyId){var proxy=this.m_proxyPool[proxyId];if(proxy.timeStamp<this.m_timeStamp)\r
8951 {proxy.timeStamp=this.m_timeStamp;proxy.overlapCount=1;}\r
8952 else\r
8953 {proxy.overlapCount=2;this.m_queryResults[this.m_queryResultCount]=proxyId;++this.m_queryResultCount;}},IncrementTimeStamp:function(){if(this.m_timeStamp==b2Settings.USHRT_MAX)\r
8954 {for(var i=0;i<b2Settings.b2_maxProxies;++i)\r
8955 {this.m_proxyPool[i].timeStamp=0;}\r
8956 this.m_timeStamp=1;}\r
8957 else\r
8958 {++this.m_timeStamp;}},m_pairManager:new b2PairManager(),m_proxyPool:new Array(b2Settings.b2_maxPairs),m_freeProxy:0,m_bounds:new Array(2*b2Settings.b2_maxProxies),m_queryResults:new Array(b2Settings.b2_maxProxies),m_queryResultCount:0,m_worldAABB:null,m_quantizationFactor:new b2Vec2(),m_proxyCount:0,m_timeStamp:0};b2BroadPhase.s_validate=false;b2BroadPhase.b2_invalid=b2Settings.USHRT_MAX;b2BroadPhase.b2_nullEdge=b2Settings.USHRT_MAX;b2BroadPhase.BinarySearch=function(bounds,count,value)\r
8959 {var low=0;var high=count-1;while(low<=high)\r
8960 {var mid=Math.floor((low+high)/2);if(bounds[mid].value>value)\r
8961 {high=mid-1;}\r
8962 else if(bounds[mid].value<value)\r
8963 {low=mid+1;}\r
8964 else\r
8965 {return(mid);}}\r
8966 return(low);};\r
8967 var b2Collision=Class.create();b2Collision.prototype={initialize:function(){}}\r
8968 b2Collision.b2_nullFeature=0x000000ff;b2Collision.ClipSegmentToLine=function(vOut,vIn,normal,offset)\r
8969 {var numOut=0;var vIn0=vIn[0].v;var vIn1=vIn[1].v;var distance0=b2Math.b2Dot(normal,vIn[0].v)-offset;var distance1=b2Math.b2Dot(normal,vIn[1].v)-offset;if(distance0<=0.0)vOut[numOut++]=vIn[0];if(distance1<=0.0)vOut[numOut++]=vIn[1];if(distance0*distance1<0.0)\r
8970 {var interp=distance0/(distance0-distance1);var tVec=vOut[numOut].v;tVec.x=vIn0.x+interp*(vIn1.x-vIn0.x);tVec.y=vIn0.y+interp*(vIn1.y-vIn0.y);if(distance0>0.0)\r
8971 {vOut[numOut].id=vIn[0].id;}\r
8972 else\r
8973 {vOut[numOut].id=vIn[1].id;}\r
8974 ++numOut;}\r
8975 return numOut;};b2Collision.EdgeSeparation=function(poly1,edge1,poly2)\r
8976 {var vert1s=poly1.m_vertices;var count2=poly2.m_vertexCount;var vert2s=poly2.m_vertices;var normalX=poly1.m_normals[edge1].x;var normalY=poly1.m_normals[edge1].y;var tX=normalX;var tMat=poly1.m_R;normalX=tMat.col1.x*tX+tMat.col2.x*normalY;normalY=tMat.col1.y*tX+tMat.col2.y*normalY;var normalLocal2X=normalX;var normalLocal2Y=normalY;tMat=poly2.m_R;tX=normalLocal2X*tMat.col1.x+normalLocal2Y*tMat.col1.y;normalLocal2Y=normalLocal2X*tMat.col2.x+normalLocal2Y*tMat.col2.y;normalLocal2X=tX;var vertexIndex2=0;var minDot=Number.MAX_VALUE;for(var i=0;i<count2;++i)\r
8977 {var tVec=vert2s[i];var dot=tVec.x*normalLocal2X+tVec.y*normalLocal2Y;if(dot<minDot)\r
8978 {minDot=dot;vertexIndex2=i;}}\r
8979 tMat=poly1.m_R;var v1X=poly1.m_position.x+(tMat.col1.x*vert1s[edge1].x+tMat.col2.x*vert1s[edge1].y)\r
8980 var v1Y=poly1.m_position.y+(tMat.col1.y*vert1s[edge1].x+tMat.col2.y*vert1s[edge1].y)\r
8981 tMat=poly2.m_R;var v2X=poly2.m_position.x+(tMat.col1.x*vert2s[vertexIndex2].x+tMat.col2.x*vert2s[vertexIndex2].y)\r
8982 var v2Y=poly2.m_position.y+(tMat.col1.y*vert2s[vertexIndex2].x+tMat.col2.y*vert2s[vertexIndex2].y)\r
8983 v2X-=v1X;v2Y-=v1Y;var separation=v2X*normalX+v2Y*normalY;return separation;};b2Collision.FindMaxSeparation=function(edgeIndex,poly1,poly2,conservative)\r
8984 {var count1=poly1.m_vertexCount;var dX=poly2.m_position.x-poly1.m_position.x;var dY=poly2.m_position.y-poly1.m_position.y;var dLocal1X=(dX*poly1.m_R.col1.x+dY*poly1.m_R.col1.y);var dLocal1Y=(dX*poly1.m_R.col2.x+dY*poly1.m_R.col2.y);var edge=0;var maxDot=-Number.MAX_VALUE;for(var i=0;i<count1;++i)\r
8985 {var dot=(poly1.m_normals[i].x*dLocal1X+poly1.m_normals[i].y*dLocal1Y);if(dot>maxDot)\r
8986 {maxDot=dot;edge=i;}}\r
8987 var s=b2Collision.EdgeSeparation(poly1,edge,poly2);if(s>0.0&&conservative==false)\r
8988 {return s;}\r
8989 var prevEdge=edge-1>=0?edge-1:count1-1;var sPrev=b2Collision.EdgeSeparation(poly1,prevEdge,poly2);if(sPrev>0.0&&conservative==false)\r
8990 {return sPrev;}\r
8991 var nextEdge=edge+1<count1?edge+1:0;var sNext=b2Collision.EdgeSeparation(poly1,nextEdge,poly2);if(sNext>0.0&&conservative==false)\r
8992 {return sNext;}\r
8993 var bestEdge=0;var bestSeparation;var increment=0;if(sPrev>s&&sPrev>sNext)\r
8994 {increment=-1;bestEdge=prevEdge;bestSeparation=sPrev;}\r
8995 else if(sNext>s)\r
8996 {increment=1;bestEdge=nextEdge;bestSeparation=sNext;}\r
8997 else\r
8998 {edgeIndex[0]=edge;return s;}\r
8999 while(true)\r
9000 {if(increment==-1)\r
9001 edge=bestEdge-1>=0?bestEdge-1:count1-1;else\r
9002 edge=bestEdge+1<count1?bestEdge+1:0;s=b2Collision.EdgeSeparation(poly1,edge,poly2);if(s>0.0&&conservative==false)\r
9003 {return s;}\r
9004 if(s>bestSeparation)\r
9005 {bestEdge=edge;bestSeparation=s;}\r
9006 else\r
9007 {break;}}\r
9008 edgeIndex[0]=bestEdge;return bestSeparation;};b2Collision.FindIncidentEdge=function(c,poly1,edge1,poly2)\r
9009 {var count1=poly1.m_vertexCount;var vert1s=poly1.m_vertices;var count2=poly2.m_vertexCount;var vert2s=poly2.m_vertices;var vertex11=edge1;var vertex12=edge1+1==count1?0:edge1+1;var tVec=vert1s[vertex12];var normal1Local1X=tVec.x;var normal1Local1Y=tVec.y;tVec=vert1s[vertex11];normal1Local1X-=tVec.x;normal1Local1Y-=tVec.y;var tX=normal1Local1X;normal1Local1X=normal1Local1Y;normal1Local1Y=-tX;var invLength=1.0/Math.sqrt(normal1Local1X*normal1Local1X+normal1Local1Y*normal1Local1Y);normal1Local1X*=invLength;normal1Local1Y*=invLength;var normal1X=normal1Local1X;var normal1Y=normal1Local1Y;tX=normal1X;var tMat=poly1.m_R;normal1X=tMat.col1.x*tX+tMat.col2.x*normal1Y;normal1Y=tMat.col1.y*tX+tMat.col2.y*normal1Y;var normal1Local2X=normal1X;var normal1Local2Y=normal1Y;tMat=poly2.m_R;tX=normal1Local2X*tMat.col1.x+normal1Local2Y*tMat.col1.y;normal1Local2Y=normal1Local2X*tMat.col2.x+normal1Local2Y*tMat.col2.y;normal1Local2X=tX;var vertex21=0;var vertex22=0;var minDot=Number.MAX_VALUE;for(var i=0;i<count2;++i)\r
9010 {var i1=i;var i2=i+1<count2?i+1:0;tVec=vert2s[i2];var normal2Local2X=tVec.x;var normal2Local2Y=tVec.y;tVec=vert2s[i1];normal2Local2X-=tVec.x;normal2Local2Y-=tVec.y;tX=normal2Local2X;normal2Local2X=normal2Local2Y;normal2Local2Y=-tX;invLength=1.0/Math.sqrt(normal2Local2X*normal2Local2X+normal2Local2Y*normal2Local2Y);normal2Local2X*=invLength;normal2Local2Y*=invLength;var dot=normal2Local2X*normal1Local2X+normal2Local2Y*normal1Local2Y;if(dot<minDot)\r
9011 {minDot=dot;vertex21=i1;vertex22=i2;}}\r
9012 var tClip;tClip=c[0];tVec=tClip.v;tVec.SetV(vert2s[vertex21]);tVec.MulM(poly2.m_R);tVec.Add(poly2.m_position);tClip.id.features.referenceFace=edge1;tClip.id.features.incidentEdge=vertex21;tClip.id.features.incidentVertex=vertex21;tClip=c[1];tVec=tClip.v;tVec.SetV(vert2s[vertex22]);tVec.MulM(poly2.m_R);tVec.Add(poly2.m_position);tClip.id.features.referenceFace=edge1;tClip.id.features.incidentEdge=vertex21;tClip.id.features.incidentVertex=vertex22;};b2Collision.b2CollidePolyTempVec=new b2Vec2();b2Collision.b2CollidePoly=function(manifold,polyA,polyB,conservative)\r
9013 {manifold.pointCount=0;var edgeA=0;var edgeAOut=[edgeA];var separationA=b2Collision.FindMaxSeparation(edgeAOut,polyA,polyB,conservative);edgeA=edgeAOut[0];if(separationA>0.0&&conservative==false)\r
9014 return;var edgeB=0;var edgeBOut=[edgeB];var separationB=b2Collision.FindMaxSeparation(edgeBOut,polyB,polyA,conservative);edgeB=edgeBOut[0];if(separationB>0.0&&conservative==false)\r
9015 return;var poly1;var poly2;var edge1=0;var flip=0;var k_relativeTol=0.98;var k_absoluteTol=0.001;if(separationB>k_relativeTol*separationA+k_absoluteTol)\r
9016 {poly1=polyB;poly2=polyA;edge1=edgeB;flip=1;}\r
9017 else\r
9018 {poly1=polyA;poly2=polyB;edge1=edgeA;flip=0;}\r
9019 var incidentEdge=[new ClipVertex(),new ClipVertex()];b2Collision.FindIncidentEdge(incidentEdge,poly1,edge1,poly2);var count1=poly1.m_vertexCount;var vert1s=poly1.m_vertices;var v11=vert1s[edge1];var v12=edge1+1<count1?vert1s[edge1+1]:vert1s[0];var dvX=v12.x-v11.x;var dvY=v12.y-v11.y;var sideNormalX=v12.x-v11.x;var sideNormalY=v12.y-v11.y;var tX=sideNormalX;var tMat=poly1.m_R;sideNormalX=tMat.col1.x*tX+tMat.col2.x*sideNormalY;sideNormalY=tMat.col1.y*tX+tMat.col2.y*sideNormalY;var invLength=1.0/Math.sqrt(sideNormalX*sideNormalX+sideNormalY*sideNormalY);sideNormalX*=invLength;sideNormalY*=invLength;var frontNormalX=sideNormalX;var frontNormalY=sideNormalY;tX=frontNormalX;frontNormalX=frontNormalY;frontNormalY=-tX;var v11X=v11.x;var v11Y=v11.y;tX=v11X;tMat=poly1.m_R;v11X=tMat.col1.x*tX+tMat.col2.x*v11Y;v11Y=tMat.col1.y*tX+tMat.col2.y*v11Y;v11X+=poly1.m_position.x;v11Y+=poly1.m_position.y;var v12X=v12.x;var v12Y=v12.y;tX=v12X;tMat=poly1.m_R;v12X=tMat.col1.x*tX+tMat.col2.x*v12Y;v12Y=tMat.col1.y*tX+tMat.col2.y*v12Y;v12X+=poly1.m_position.x;v12Y+=poly1.m_position.y;var frontOffset=frontNormalX*v11X+frontNormalY*v11Y;var sideOffset1=-(sideNormalX*v11X+sideNormalY*v11Y);var sideOffset2=sideNormalX*v12X+sideNormalY*v12Y;var clipPoints1=[new ClipVertex(),new ClipVertex()];var clipPoints2=[new ClipVertex(),new ClipVertex()];var np=0;b2Collision.b2CollidePolyTempVec.Set(-sideNormalX,-sideNormalY);np=b2Collision.ClipSegmentToLine(clipPoints1,incidentEdge,b2Collision.b2CollidePolyTempVec,sideOffset1);if(np<2)\r
9020 return;b2Collision.b2CollidePolyTempVec.Set(sideNormalX,sideNormalY);np=b2Collision.ClipSegmentToLine(clipPoints2,clipPoints1,b2Collision.b2CollidePolyTempVec,sideOffset2);if(np<2)\r
9021 return;if(flip){manifold.normal.Set(-frontNormalX,-frontNormalY);}\r
9022 else{manifold.normal.Set(frontNormalX,frontNormalY);}\r
9023 var pointCount=0;for(var i=0;i<b2Settings.b2_maxManifoldPoints;++i)\r
9024 {var tVec=clipPoints2[i].v;var separation=(frontNormalX*tVec.x+frontNormalY*tVec.y)-frontOffset;if(separation<=0.0||conservative==true)\r
9025 {var cp=manifold.points[pointCount];cp.separation=separation;cp.position.SetV(clipPoints2[i].v);cp.id.Set(clipPoints2[i].id);cp.id.features.flip=flip;++pointCount;}}\r
9026 manifold.pointCount=pointCount;};b2Collision.b2CollideCircle=function(manifold,circle1,circle2,conservative)\r
9027 {manifold.pointCount=0;var dX=circle2.m_position.x-circle1.m_position.x;var dY=circle2.m_position.y-circle1.m_position.y;var distSqr=dX*dX+dY*dY;var radiusSum=circle1.m_radius+circle2.m_radius;if(distSqr>radiusSum*radiusSum&&conservative==false)\r
9028 {return;}\r
9029 var separation;if(distSqr<Number.MIN_VALUE)\r
9030 {separation=-radiusSum;manifold.normal.Set(0.0,1.0);}\r
9031 else\r
9032 {var dist=Math.sqrt(distSqr);separation=dist-radiusSum;var a=1.0/dist;manifold.normal.x=a*dX;manifold.normal.y=a*dY;}\r
9033 manifold.pointCount=1;var tPoint=manifold.points[0];tPoint.id.set_key(0);tPoint.separation=separation;tPoint.position.x=circle2.m_position.x-(circle2.m_radius*manifold.normal.x);tPoint.position.y=circle2.m_position.y-(circle2.m_radius*manifold.normal.y);};b2Collision.b2CollidePolyAndCircle=function(manifold,poly,circle,conservative)\r
9034 {manifold.pointCount=0;var tPoint;var dX;var dY;var xLocalX=circle.m_position.x-poly.m_position.x;var xLocalY=circle.m_position.y-poly.m_position.y;var tMat=poly.m_R;var tX=xLocalX*tMat.col1.x+xLocalY*tMat.col1.y;xLocalY=xLocalX*tMat.col2.x+xLocalY*tMat.col2.y;xLocalX=tX;var dist;var normalIndex=0;var separation=-Number.MAX_VALUE;var radius=circle.m_radius;for(var i=0;i<poly.m_vertexCount;++i)\r
9035 {var s=poly.m_normals[i].x*(xLocalX-poly.m_vertices[i].x)+poly.m_normals[i].y*(xLocalY-poly.m_vertices[i].y);if(s>radius)\r
9036 {return;}\r
9037 if(s>separation)\r
9038 {separation=s;normalIndex=i;}}\r
9039 if(separation<Number.MIN_VALUE)\r
9040 {manifold.pointCount=1;var tVec=poly.m_normals[normalIndex];manifold.normal.x=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;manifold.normal.y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tPoint=manifold.points[0];tPoint.id.features.incidentEdge=normalIndex;tPoint.id.features.incidentVertex=b2Collision.b2_nullFeature;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=separation-radius;return;}\r
9041 var vertIndex1=normalIndex;var vertIndex2=vertIndex1+1<poly.m_vertexCount?vertIndex1+1:0;var eX=poly.m_vertices[vertIndex2].x-poly.m_vertices[vertIndex1].x;var eY=poly.m_vertices[vertIndex2].y-poly.m_vertices[vertIndex1].y;var length=Math.sqrt(eX*eX+eY*eY);eX/=length;eY/=length;if(length<Number.MIN_VALUE)\r
9042 {dX=xLocalX-poly.m_vertices[vertIndex1].x;dY=xLocalY-poly.m_vertices[vertIndex1].y;dist=Math.sqrt(dX*dX+dY*dY);dX/=dist;dY/=dist;if(dist>radius)\r
9043 {return;}\r
9044 manifold.pointCount=1;manifold.normal.Set(tMat.col1.x*dX+tMat.col2.x*dY,tMat.col1.y*dX+tMat.col2.y*dY);tPoint=manifold.points[0];tPoint.id.features.incidentEdge=b2Collision.b2_nullFeature;tPoint.id.features.incidentVertex=vertIndex1;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=dist-radius;return;}\r
9045 var u=(xLocalX-poly.m_vertices[vertIndex1].x)*eX+(xLocalY-poly.m_vertices[vertIndex1].y)*eY;tPoint=manifold.points[0];tPoint.id.features.incidentEdge=b2Collision.b2_nullFeature;tPoint.id.features.incidentVertex=b2Collision.b2_nullFeature;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;var pX,pY;if(u<=0.0)\r
9046 {pX=poly.m_vertices[vertIndex1].x;pY=poly.m_vertices[vertIndex1].y;tPoint.id.features.incidentVertex=vertIndex1;}\r
9047 else if(u>=length)\r
9048 {pX=poly.m_vertices[vertIndex2].x;pY=poly.m_vertices[vertIndex2].y;tPoint.id.features.incidentVertex=vertIndex2;}\r
9049 else\r
9050 {pX=eX*u+poly.m_vertices[vertIndex1].x;pY=eY*u+poly.m_vertices[vertIndex1].y;tPoint.id.features.incidentEdge=vertIndex1;}\r
9051 dX=xLocalX-pX;dY=xLocalY-pY;dist=Math.sqrt(dX*dX+dY*dY);dX/=dist;dY/=dist;if(dist>radius)\r
9052 {return;}\r
9053 manifold.pointCount=1;manifold.normal.Set(tMat.col1.x*dX+tMat.col2.x*dY,tMat.col1.y*dX+tMat.col2.y*dY);tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=dist-radius;};b2Collision.b2TestOverlap=function(a,b)\r
9054 {var t1=b.minVertex;var t2=a.maxVertex;var d1X=t1.x-t2.x;var d1Y=t1.y-t2.y;t1=a.minVertex;t2=b.maxVertex;var d2X=t1.x-t2.x;var d2Y=t1.y-t2.y;if(d1X>0.0||d1Y>0.0)\r
9055 return false;if(d2X>0.0||d2Y>0.0)\r
9056 return false;return true;};\r
9057 var Features=Class.create();Features.prototype={set_referenceFace:function(value){this._referenceFace=value;this._m_id._key=(this._m_id._key&0xffffff00)|(this._referenceFace&0x000000ff)},get_referenceFace:function(){return this._referenceFace;},_referenceFace:0,set_incidentEdge:function(value){this._incidentEdge=value;this._m_id._key=(this._m_id._key&0xffff00ff)|((this._incidentEdge<<8)&0x0000ff00)},get_incidentEdge:function(){return this._incidentEdge;},_incidentEdge:0,set_incidentVertex:function(value){this._incidentVertex=value;this._m_id._key=(this._m_id._key&0xff00ffff)|((this._incidentVertex<<16)&0x00ff0000)},get_incidentVertex:function(){return this._incidentVertex;},_incidentVertex:0,set_flip:function(value){this._flip=value;this._m_id._key=(this._m_id._key&0x00ffffff)|((this._flip<<24)&0xff000000)},get_flip:function(){return this._flip;},_flip:0,_m_id:null,initialize:function(){}};\r
9058 var b2ContactID=Class.create();b2ContactID.prototype={initialize:function(){this.features=new Features();this.features._m_id=this;},Set:function(id){this.set_key(id._key);},Copy:function(){var id=new b2ContactID();id.set_key(this._key);return id;},get_key:function(){return this._key;},set_key:function(value){this._key=value;this.features._referenceFace=this._key&0x000000ff;this.features._incidentEdge=((this._key&0x0000ff00)>>8)&0x000000ff;this.features._incidentVertex=((this._key&0x00ff0000)>>16)&0x000000ff;this.features._flip=((this._key&0xff000000)>>24)&0x000000ff;},features:new Features(),_key:0};\r
9059 var b2ContactPoint=Class.create();b2ContactPoint.prototype={position:new b2Vec2(),separation:null,normalImpulse:null,tangentImpulse:null,id:new b2ContactID(),initialize:function(){this.position=new b2Vec2();this.id=new b2ContactID();}};var b2Distance=Class.create();b2Distance.prototype={initialize:function(){}};b2Distance.ProcessTwo=function(p1Out,p2Out,p1s,p2s,points)\r
9060 {var rX=-points[1].x;var rY=-points[1].y;var dX=points[0].x-points[1].x;var dY=points[0].y-points[1].y;var length=Math.sqrt(dX*dX+dY*dY);dX/=length;dY/=length;var lambda=rX*dX+rY*dY;if(lambda<=0.0||length<Number.MIN_VALUE)\r
9061 {p1Out.SetV(p1s[1]);p2Out.SetV(p2s[1]);p1s[0].SetV(p1s[1]);p2s[0].SetV(p2s[1]);points[0].SetV(points[1]);return 1;}\r
9062 lambda/=length;p1Out.x=p1s[1].x+lambda*(p1s[0].x-p1s[1].x);p1Out.y=p1s[1].y+lambda*(p1s[0].y-p1s[1].y);p2Out.x=p2s[1].x+lambda*(p2s[0].x-p2s[1].x);p2Out.y=p2s[1].y+lambda*(p2s[0].y-p2s[1].y);return 2;};b2Distance.ProcessThree=function(p1Out,p2Out,p1s,p2s,points)\r
9063 {var aX=points[0].x;var aY=points[0].y;var bX=points[1].x;var bY=points[1].y;var cX=points[2].x;var cY=points[2].y;var abX=bX-aX;var abY=bY-aY;var acX=cX-aX;var acY=cY-aY;var bcX=cX-bX;var bcY=cY-bY;var sn=-(aX*abX+aY*abY);var sd=(bX*abX+bY*abY);var tn=-(aX*acX+aY*acY);var td=(cX*acX+cY*acY);var un=-(bX*bcX+bY*bcY);var ud=(cX*bcX+cY*bcY);if(td<=0.0&&ud<=0.0)\r
9064 {p1Out.SetV(p1s[2]);p2Out.SetV(p2s[2]);p1s[0].SetV(p1s[2]);p2s[0].SetV(p2s[2]);points[0].SetV(points[2]);return 1;}\r
9065 var n=abX*acY-abY*acX;var vc=n*(aX*bY-aY*bX);var va=n*(bX*cY-bY*cX);if(va<=0.0&&un>=0.0&&ud>=0.0)\r
9066 {var lambda=un/(un+ud);p1Out.x=p1s[1].x+lambda*(p1s[2].x-p1s[1].x);p1Out.y=p1s[1].y+lambda*(p1s[2].y-p1s[1].y);p2Out.x=p2s[1].x+lambda*(p2s[2].x-p2s[1].x);p2Out.y=p2s[1].y+lambda*(p2s[2].y-p2s[1].y);p1s[0].SetV(p1s[2]);p2s[0].SetV(p2s[2]);points[0].SetV(points[2]);return 2;}\r
9067 var vb=n*(cX*aY-cY*aX);if(vb<=0.0&&tn>=0.0&&td>=0.0)\r
9068 {var lambda=tn/(tn+td);p1Out.x=p1s[0].x+lambda*(p1s[2].x-p1s[0].x);p1Out.y=p1s[0].y+lambda*(p1s[2].y-p1s[0].y);p2Out.x=p2s[0].x+lambda*(p2s[2].x-p2s[0].x);p2Out.y=p2s[0].y+lambda*(p2s[2].y-p2s[0].y);p1s[1].SetV(p1s[2]);p2s[1].SetV(p2s[2]);points[1].SetV(points[2]);return 2;}\r
9069 var denom=va+vb+vc;denom=1.0/denom;var u=va*denom;var v=vb*denom;var w=1.0-u-v;p1Out.x=u*p1s[0].x+v*p1s[1].x+w*p1s[2].x;p1Out.y=u*p1s[0].y+v*p1s[1].y+w*p1s[2].y;p2Out.x=u*p2s[0].x+v*p2s[1].x+w*p2s[2].x;p2Out.y=u*p2s[0].y+v*p2s[1].y+w*p2s[2].y;return 3;};b2Distance.InPoinsts=function(w,points,pointCount)\r
9070 {for(var i=0;i<pointCount;++i)\r
9071 {if(w.x==points[i].x&&w.y==points[i].y)\r
9072 {return true;}}\r
9073 return false;};b2Distance.Distance=function(p1Out,p2Out,shape1,shape2)\r
9074 {var p1s=new Array(3);var p2s=new Array(3);var points=new Array(3);var pointCount=0;p1Out.SetV(shape1.m_position);p2Out.SetV(shape2.m_position);var vSqr=0.0;var maxIterations=20;for(var iter=0;iter<maxIterations;++iter)\r
9075 {var vX=p2Out.x-p1Out.x;var vY=p2Out.y-p1Out.y;var w1=shape1.Support(vX,vY);var w2=shape2.Support(-vX,-vY);vSqr=(vX*vX+vY*vY);var wX=w2.x-w1.x;var wY=w2.y-w1.y;var vw=(vX*wX+vY*wY);if(vSqr-b2Dot(vX*wX+vY*wY)<=0.01*vSqr)\r
9076 {if(pointCount==0)\r
9077 {p1Out.SetV(w1);p2Out.SetV(w2);}\r
9078 b2Distance.g_GJK_Iterations=iter;return Math.sqrt(vSqr);}\r
9079 switch(pointCount)\r
9080 {case 0:p1s[0].SetV(w1);p2s[0].SetV(w2);points[0]=w;p1Out.SetV(p1s[0]);p2Out.SetV(p2s[0]);++pointCount;break;case 1:p1s[1].SetV(w1);p2s[1].SetV(w2);points[1].x=wX;points[1].y=wY;pointCount=b2Distance.ProcessTwo(p1Out,p2Out,p1s,p2s,points);break;case 2:p1s[2].SetV(w1);p2s[2].SetV(w2);points[2].x=wX;points[2].y=wY;pointCount=b2Distance.ProcessThree(p1Out,p2Out,p1s,p2s,points);break;}\r
9081 if(pointCount==3)\r
9082 {b2Distance.g_GJK_Iterations=iter;return 0.0;}\r
9083 var maxSqr=-Number.MAX_VALUE;for(var i=0;i<pointCount;++i)\r
9084 {maxSqr=b2Math.b2Max(maxSqr,(points[i].x*points[i].x+points[i].y*points[i].y));}\r
9085 if(pointCount==3||vSqr<=100.0*Number.MIN_VALUE*maxSqr)\r
9086 {b2Distance.g_GJK_Iterations=iter;return Math.sqrt(vSqr);}}\r
9087 b2Distance.g_GJK_Iterations=maxIterations;return Math.sqrt(vSqr);};b2Distance.g_GJK_Iterations=0;\r
9088 var b2Manifold=Class.create();b2Manifold.prototype={initialize:function(){this.points=new Array(b2Settings.b2_maxManifoldPoints);for(var i=0;i<b2Settings.b2_maxManifoldPoints;i++){this.points[i]=new b2ContactPoint();}\r
9089 this.normal=new b2Vec2();},points:null,normal:null,pointCount:0};\r
9090 var b2OBB=Class.create();b2OBB.prototype={R:new b2Mat22(),center:new b2Vec2(),extents:new b2Vec2(),initialize:function(){this.R=new b2Mat22();this.center=new b2Vec2();this.extents=new b2Vec2();}};\r
9091 var b2Proxy=Class.create();b2Proxy.prototype={GetNext:function(){return this.lowerBounds[0];},SetNext:function(next){this.lowerBounds[0]=next;},IsValid:function(){return this.overlapCount!=b2BroadPhase.b2_invalid;},lowerBounds:[(0),(0)],upperBounds:[(0),(0)],overlapCount:0,timeStamp:0,userData:null,initialize:function(){this.lowerBounds=[(0),(0)];this.upperBounds=[(0),(0)];}}\r
9092 \r
9093 var ClipVertex=Class.create();ClipVertex.prototype={v:new b2Vec2(),id:new b2ContactID(),initialize:function(){this.v=new b2Vec2();this.id=new b2ContactID();}};var b2Shape=Class.create();b2Shape.prototype={TestPoint:function(p){return false},GetUserData:function(){return this.m_userData;},GetType:function(){return this.m_type;},GetBody:function(){return this.m_body;},GetPosition:function(){return this.m_position;},GetRotationMatrix:function(){return this.m_R;},ResetProxy:function(broadPhase){},GetNext:function(){return this.m_next;},initialize:function(def,body){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;},DestroyProxy:function()\r
9094 {if(this.m_proxyId!=b2Pair.b2_nullProxy)\r
9095 {this.m_body.m_world.m_broadPhase.DestroyProxy(this.m_proxyId);this.m_proxyId=b2Pair.b2_nullProxy;}},Synchronize:function(position1,R1,position2,R2){},QuickSync:function(position,R){},Support:function(dX,dY,out){},GetMaxRadius:function(){return this.m_maxRadius;},m_next:null,m_R:new b2Mat22(),m_position:new b2Vec2(),m_type:0,m_userData:null,m_body:null,m_friction:null,m_restitution:null,m_maxRadius:null,m_proxyId:0,m_categoryBits:0,m_maskBits:0,m_groupIndex:0};b2Shape.Create=function(def,body,center){switch(def.type)\r
9096 {case b2Shape.e_circleShape:{return new b2CircleShape(def,body,center);}\r
9097 case b2Shape.e_boxShape:case b2Shape.e_polyShape:{return new b2PolyShape(def,body,center);}}\r
9098 return null;};b2Shape.Destroy=function(shape)\r
9099 {if(shape.m_proxyId!=b2Pair.b2_nullProxy)\r
9100 shape.m_body.m_world.m_broadPhase.DestroyProxy(shape.m_proxyId);};b2Shape.e_unknownShape=-1;b2Shape.e_circleShape=0;b2Shape.e_boxShape=1;b2Shape.e_polyShape=2;b2Shape.e_meshShape=3;b2Shape.e_shapeTypeCount=4;b2Shape.PolyMass=function(massData,vs,count,rho)\r
9101 {var center=new b2Vec2();center.SetZero();var area=0.0;var I=0.0;var pRef=new b2Vec2(0.0,0.0);var inv3=1.0/3.0;for(var i=0;i<count;++i)\r
9102 {var p1=pRef;var p2=vs[i];var p3=i+1<count?vs[i+1]:vs[0];var e1=b2Math.SubtractVV(p2,p1);var e2=b2Math.SubtractVV(p3,p1);var D=b2Math.b2CrossVV(e1,e2);var triangleArea=0.5*D;area+=triangleArea;var tVec=new b2Vec2();tVec.SetV(p1);tVec.Add(p2);tVec.Add(p3);tVec.Multiply(inv3*triangleArea);center.Add(tVec);var px=p1.x;var py=p1.y;var ex1=e1.x;var ey1=e1.y;var ex2=e2.x;var ey2=e2.y;var intx2=inv3*(0.25*(ex1*ex1+ex2*ex1+ex2*ex2)+(px*ex1+px*ex2))+0.5*px*px;var inty2=inv3*(0.25*(ey1*ey1+ey2*ey1+ey2*ey2)+(py*ey1+py*ey2))+0.5*py*py;I+=D*(intx2+inty2);}\r
9103 massData.mass=rho*area;center.Multiply(1.0/area);massData.center=center;I=rho*(I-area*b2Math.b2Dot(center,center));massData.I=I;};b2Shape.PolyCentroid=function(vs,count,out)\r
9104 {var cX=0.0;var cY=0.0;var area=0.0;var pRefX=0.0;var pRefY=0.0;var inv3=1.0/3.0;for(var i=0;i<count;++i)\r
9105 {var p1X=pRefX;var p1Y=pRefY;var p2X=vs[i].x;var p2Y=vs[i].y;var p3X=i+1<count?vs[i+1].x:vs[0].x;var p3Y=i+1<count?vs[i+1].y:vs[0].y;var e1X=p2X-p1X;var e1Y=p2Y-p1Y;var e2X=p3X-p1X;var e2Y=p3Y-p1Y;var D=(e1X*e2Y-e1Y*e2X);var triangleArea=0.5*D;area+=triangleArea;cX+=triangleArea*inv3*(p1X+p2X+p3X);cY+=triangleArea*inv3*(p1Y+p2Y+p3Y);}\r
9106 cX*=1.0/area;cY*=1.0/area;out.Set(cX,cY);};\r
9107 var b2ShapeDef=Class.create();b2ShapeDef.prototype={initialize:function()\r
9108 {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;},ComputeMass:function(massData)\r
9109 {massData.center=new b2Vec2(0.0,0.0)\r
9110 if(this.density==0.0)\r
9111 {massData.mass=0.0;massData.center.Set(0.0,0.0);massData.I=0.0;};switch(this.type)\r
9112 {case b2Shape.e_circleShape:{var circle=this;massData.mass=this.density*b2Settings.b2_pi*circle.radius*circle.radius;massData.center.Set(0.0,0.0);massData.I=0.5*(massData.mass)*circle.radius*circle.radius;}\r
9113 break;case b2Shape.e_boxShape:{var box=this;massData.mass=4.0*this.density*box.extents.x*box.extents.y;massData.center.Set(0.0,0.0);massData.I=massData.mass/3.0*b2Math.b2Dot(box.extents,box.extents);}\r
9114 break;case b2Shape.e_polyShape:{var poly=this;b2Shape.PolyMass(massData,poly.vertices,poly.vertexCount,this.density);}\r
9115 break;default:massData.mass=0.0;massData.center.Set(0.0,0.0);massData.I=0.0;break;}},type:0,userData:null,localPosition:null,localRotation:null,friction:null,restitution:null,density:null,categoryBits:0,maskBits:0,groupIndex:0};\r
9116 var b2BoxDef=Class.create();Object.extend(b2BoxDef.prototype,b2ShapeDef.prototype);Object.extend(b2BoxDef.prototype,{initialize:function()\r
9117 {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.type=b2Shape.e_boxShape;this.extents=new b2Vec2(1.0,1.0);},extents:null});\r
9118 var b2CircleDef=Class.create();Object.extend(b2CircleDef.prototype,b2ShapeDef.prototype);Object.extend(b2CircleDef.prototype,{initialize:function()\r
9119 {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.type=b2Shape.e_circleShape;this.radius=1.0;},radius:null});var b2CircleShape=Class.create();Object.extend(b2CircleShape.prototype,b2Shape.prototype);Object.extend(b2CircleShape.prototype,{TestPoint:function(p){var d=new b2Vec2();d.SetV(p);d.Subtract(this.m_position);return b2Math.b2Dot(d,d)<=this.m_radius*this.m_radius;},initialize:function(def,body,localCenter){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;this.m_localPosition=new b2Vec2();var circle=def;this.m_localPosition.Set(def.localPosition.x-localCenter.x,def.localPosition.y-localCenter.y);this.m_type=b2Shape.e_circleShape;this.m_radius=circle.radius;this.m_R.SetM(this.m_body.m_R);var rX=this.m_R.col1.x*this.m_localPosition.x+this.m_R.col2.x*this.m_localPosition.y;var rY=this.m_R.col1.y*this.m_localPosition.x+this.m_R.col2.y*this.m_localPosition.y;this.m_position.x=this.m_body.m_position.x+rX;this.m_position.y=this.m_body.m_position.y+rY;this.m_maxRadius=Math.sqrt(rX*rX+rY*rY)+this.m_radius;var aabb=new b2AABB();aabb.minVertex.Set(this.m_position.x-this.m_radius,this.m_position.y-this.m_radius);aabb.maxVertex.Set(this.m_position.x+this.m_radius,this.m_position.y+this.m_radius);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))\r
9120 {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}\r
9121 else\r
9122 {this.m_proxyId=b2Pair.b2_nullProxy;}\r
9123 if(this.m_proxyId==b2Pair.b2_nullProxy)\r
9124 {this.m_body.Freeze();}},Synchronize:function(position1,R1,position2,R2){this.m_R.SetM(R2);this.m_position.x=(R2.col1.x*this.m_localPosition.x+R2.col2.x*this.m_localPosition.y)+position2.x;this.m_position.y=(R2.col1.y*this.m_localPosition.x+R2.col2.y*this.m_localPosition.y)+position2.y;if(this.m_proxyId==b2Pair.b2_nullProxy)\r
9125 {return;}\r
9126 var p1X=position1.x+(R1.col1.x*this.m_localPosition.x+R1.col2.x*this.m_localPosition.y);var p1Y=position1.y+(R1.col1.y*this.m_localPosition.x+R1.col2.y*this.m_localPosition.y);var lowerX=Math.min(p1X,this.m_position.x);var lowerY=Math.min(p1Y,this.m_position.y);var upperX=Math.max(p1X,this.m_position.x);var upperY=Math.max(p1Y,this.m_position.y);var aabb=new b2AABB();aabb.minVertex.Set(lowerX-this.m_radius,lowerY-this.m_radius);aabb.maxVertex.Set(upperX+this.m_radius,upperY+this.m_radius);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))\r
9127 {broadPhase.MoveProxy(this.m_proxyId,aabb);}\r
9128 else\r
9129 {this.m_body.Freeze();}},QuickSync:function(position,R){this.m_R.SetM(R);this.m_position.x=(R.col1.x*this.m_localPosition.x+R.col2.x*this.m_localPosition.y)+position.x;this.m_position.y=(R.col1.y*this.m_localPosition.x+R.col2.y*this.m_localPosition.y)+position.y;},ResetProxy:function(broadPhase)\r
9130 {if(this.m_proxyId==b2Pair.b2_nullProxy)\r
9131 {return;}\r
9132 var proxy=broadPhase.GetProxy(this.m_proxyId);broadPhase.DestroyProxy(this.m_proxyId);proxy=null;var aabb=new b2AABB();aabb.minVertex.Set(this.m_position.x-this.m_radius,this.m_position.y-this.m_radius);aabb.maxVertex.Set(this.m_position.x+this.m_radius,this.m_position.y+this.m_radius);if(broadPhase.InRange(aabb))\r
9133 {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}\r
9134 else\r
9135 {this.m_proxyId=b2Pair.b2_nullProxy;}\r
9136 if(this.m_proxyId==b2Pair.b2_nullProxy)\r
9137 {this.m_body.Freeze();}},Support:function(dX,dY,out)\r
9138 {var len=Math.sqrt(dX*dX+dY*dY);dX/=len;dY/=len;out.Set(this.m_position.x+this.m_radius*dX,this.m_position.y+this.m_radius*dY);},m_localPosition:new b2Vec2(),m_radius:null});\r
9139 var b2MassData=Class.create();b2MassData.prototype={mass:0.0,center:new b2Vec2(0,0),I:0.0,initialize:function(){this.center=new b2Vec2(0,0);}}\r
9140 \r
9141 var b2PolyDef=Class.create();Object.extend(b2PolyDef.prototype,b2ShapeDef.prototype);Object.extend(b2PolyDef.prototype,{initialize:function()\r
9142 {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.vertices=new Array(b2Settings.b2_maxPolyVertices);this.type=b2Shape.e_polyShape;this.vertexCount=0;for(var i=0;i<b2Settings.b2_maxPolyVertices;i++){this.vertices[i]=new b2Vec2();}},vertices:new Array(b2Settings.b2_maxPolyVertices),vertexCount:0});var b2PolyShape=Class.create();Object.extend(b2PolyShape.prototype,b2Shape.prototype);Object.extend(b2PolyShape.prototype,{TestPoint:function(p){var pLocal=new b2Vec2();pLocal.SetV(p);pLocal.Subtract(this.m_position);pLocal.MulTM(this.m_R);for(var i=0;i<this.m_vertexCount;++i)\r
9143 {var tVec=new b2Vec2();tVec.SetV(pLocal);tVec.Subtract(this.m_vertices[i]);var dot=b2Math.b2Dot(this.m_normals[i],tVec);if(dot>0.0)\r
9144 {return false;}}\r
9145 return true;},initialize:function(def,body,newOrigin){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;this.syncAABB=new b2AABB();this.syncMat=new b2Mat22();this.m_localCentroid=new b2Vec2();this.m_localOBB=new b2OBB();var i=0;var hX;var hY;var tVec;var aabb=new b2AABB();this.m_vertices=new Array(b2Settings.b2_maxPolyVertices);this.m_coreVertices=new Array(b2Settings.b2_maxPolyVertices);this.m_normals=new Array(b2Settings.b2_maxPolyVertices);this.m_type=b2Shape.e_polyShape;var localR=new b2Mat22(def.localRotation);if(def.type==b2Shape.e_boxShape)\r
9146 {this.m_localCentroid.x=def.localPosition.x-newOrigin.x;this.m_localCentroid.y=def.localPosition.y-newOrigin.y;var box=def;this.m_vertexCount=4;hX=box.extents.x;hY=box.extents.y;var hcX=Math.max(0.0,hX-2.0*b2Settings.b2_linearSlop);var hcY=Math.max(0.0,hY-2.0*b2Settings.b2_linearSlop);tVec=this.m_vertices[0]=new b2Vec2();tVec.x=localR.col1.x*hX+localR.col2.x*hY;tVec.y=localR.col1.y*hX+localR.col2.y*hY;tVec=this.m_vertices[1]=new b2Vec2();tVec.x=localR.col1.x*-hX+localR.col2.x*hY;tVec.y=localR.col1.y*-hX+localR.col2.y*hY;tVec=this.m_vertices[2]=new b2Vec2();tVec.x=localR.col1.x*-hX+localR.col2.x*-hY;tVec.y=localR.col1.y*-hX+localR.col2.y*-hY;tVec=this.m_vertices[3]=new b2Vec2();tVec.x=localR.col1.x*hX+localR.col2.x*-hY;tVec.y=localR.col1.y*hX+localR.col2.y*-hY;tVec=this.m_coreVertices[0]=new b2Vec2();tVec.x=localR.col1.x*hcX+localR.col2.x*hcY;tVec.y=localR.col1.y*hcX+localR.col2.y*hcY;tVec=this.m_coreVertices[1]=new b2Vec2();tVec.x=localR.col1.x*-hcX+localR.col2.x*hcY;tVec.y=localR.col1.y*-hcX+localR.col2.y*hcY;tVec=this.m_coreVertices[2]=new b2Vec2();tVec.x=localR.col1.x*-hcX+localR.col2.x*-hcY;tVec.y=localR.col1.y*-hcX+localR.col2.y*-hcY;tVec=this.m_coreVertices[3]=new b2Vec2();tVec.x=localR.col1.x*hcX+localR.col2.x*-hcY;tVec.y=localR.col1.y*hcX+localR.col2.y*-hcY;}\r
9147 else\r
9148 {var poly=def;this.m_vertexCount=poly.vertexCount;b2Shape.PolyCentroid(poly.vertices,poly.vertexCount,b2PolyShape.tempVec);var centroidX=b2PolyShape.tempVec.x;var centroidY=b2PolyShape.tempVec.y;this.m_localCentroid.x=def.localPosition.x+(localR.col1.x*centroidX+localR.col2.x*centroidY)-newOrigin.x;this.m_localCentroid.y=def.localPosition.y+(localR.col1.y*centroidX+localR.col2.y*centroidY)-newOrigin.y;for(i=0;i<this.m_vertexCount;++i)\r
9149 {this.m_vertices[i]=new b2Vec2();this.m_coreVertices[i]=new b2Vec2();hX=poly.vertices[i].x-centroidX;hY=poly.vertices[i].y-centroidY;this.m_vertices[i].x=localR.col1.x*hX+localR.col2.x*hY;this.m_vertices[i].y=localR.col1.y*hX+localR.col2.y*hY;var uX=this.m_vertices[i].x;var uY=this.m_vertices[i].y;var length=Math.sqrt(uX*uX+uY*uY);if(length>Number.MIN_VALUE)\r
9150 {uX*=1.0/length;uY*=1.0/length;}\r
9151 this.m_coreVertices[i].x=this.m_vertices[i].x-2.0*b2Settings.b2_linearSlop*uX;this.m_coreVertices[i].y=this.m_vertices[i].y-2.0*b2Settings.b2_linearSlop*uY;}}\r
9152 var minVertexX=Number.MAX_VALUE;var minVertexY=Number.MAX_VALUE;var maxVertexX=-Number.MAX_VALUE;var maxVertexY=-Number.MAX_VALUE;this.m_maxRadius=0.0;for(i=0;i<this.m_vertexCount;++i)\r
9153 {var v=this.m_vertices[i];minVertexX=Math.min(minVertexX,v.x);minVertexY=Math.min(minVertexY,v.y);maxVertexX=Math.max(maxVertexX,v.x);maxVertexY=Math.max(maxVertexY,v.y);this.m_maxRadius=Math.max(this.m_maxRadius,v.Length());}\r
9154 this.m_localOBB.R.SetIdentity();this.m_localOBB.center.Set((minVertexX+maxVertexX)*0.5,(minVertexY+maxVertexY)*0.5);this.m_localOBB.extents.Set((maxVertexX-minVertexX)*0.5,(maxVertexY-minVertexY)*0.5);var i1=0;var i2=0;for(i=0;i<this.m_vertexCount;++i)\r
9155 {this.m_normals[i]=new b2Vec2();i1=i;i2=i+1<this.m_vertexCount?i+1:0;this.m_normals[i].x=this.m_vertices[i2].y-this.m_vertices[i1].y;this.m_normals[i].y=-(this.m_vertices[i2].x-this.m_vertices[i1].x);this.m_normals[i].Normalize();}\r
9156 for(i=0;i<this.m_vertexCount;++i)\r
9157 {i1=i;i2=i+1<this.m_vertexCount?i+1:0;}\r
9158 this.m_R.SetM(this.m_body.m_R);this.m_position.x=this.m_body.m_position.x+(this.m_R.col1.x*this.m_localCentroid.x+this.m_R.col2.x*this.m_localCentroid.y);this.m_position.y=this.m_body.m_position.y+(this.m_R.col1.y*this.m_localCentroid.x+this.m_R.col2.y*this.m_localCentroid.y);b2PolyShape.tAbsR.col1.x=this.m_R.col1.x*this.m_localOBB.R.col1.x+this.m_R.col2.x*this.m_localOBB.R.col1.y;b2PolyShape.tAbsR.col1.y=this.m_R.col1.y*this.m_localOBB.R.col1.x+this.m_R.col2.y*this.m_localOBB.R.col1.y;b2PolyShape.tAbsR.col2.x=this.m_R.col1.x*this.m_localOBB.R.col2.x+this.m_R.col2.x*this.m_localOBB.R.col2.y;b2PolyShape.tAbsR.col2.y=this.m_R.col1.y*this.m_localOBB.R.col2.x+this.m_R.col2.y*this.m_localOBB.R.col2.y;b2PolyShape.tAbsR.Abs()\r
9159 hX=b2PolyShape.tAbsR.col1.x*this.m_localOBB.extents.x+b2PolyShape.tAbsR.col2.x*this.m_localOBB.extents.y;hY=b2PolyShape.tAbsR.col1.y*this.m_localOBB.extents.x+b2PolyShape.tAbsR.col2.y*this.m_localOBB.extents.y;var positionX=this.m_position.x+(this.m_R.col1.x*this.m_localOBB.center.x+this.m_R.col2.x*this.m_localOBB.center.y);var positionY=this.m_position.y+(this.m_R.col1.y*this.m_localOBB.center.x+this.m_R.col2.y*this.m_localOBB.center.y);aabb.minVertex.x=positionX-hX;aabb.minVertex.y=positionY-hY;aabb.maxVertex.x=positionX+hX;aabb.maxVertex.y=positionY+hY;var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))\r
9160 {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}\r
9161 else\r
9162 {this.m_proxyId=b2Pair.b2_nullProxy;}\r
9163 if(this.m_proxyId==b2Pair.b2_nullProxy)\r
9164 {this.m_body.Freeze();}},syncAABB:new b2AABB(),syncMat:new b2Mat22(),Synchronize:function(position1,R1,position2,R2){this.m_R.SetM(R2);this.m_position.x=this.m_body.m_position.x+(R2.col1.x*this.m_localCentroid.x+R2.col2.x*this.m_localCentroid.y);this.m_position.y=this.m_body.m_position.y+(R2.col1.y*this.m_localCentroid.x+R2.col2.y*this.m_localCentroid.y);if(this.m_proxyId==b2Pair.b2_nullProxy)\r
9165 {return;}\r
9166 var hX;var hY;var v1=R1.col1;var v2=R1.col2;var v3=this.m_localOBB.R.col1;var v4=this.m_localOBB.R.col2;this.syncMat.col1.x=v1.x*v3.x+v2.x*v3.y;this.syncMat.col1.y=v1.y*v3.x+v2.y*v3.y;this.syncMat.col2.x=v1.x*v4.x+v2.x*v4.y;this.syncMat.col2.y=v1.y*v4.x+v2.y*v4.y;this.syncMat.Abs();hX=this.m_localCentroid.x+this.m_localOBB.center.x;hY=this.m_localCentroid.y+this.m_localOBB.center.y;var centerX=position1.x+(R1.col1.x*hX+R1.col2.x*hY);var centerY=position1.y+(R1.col1.y*hX+R1.col2.y*hY);hX=this.syncMat.col1.x*this.m_localOBB.extents.x+this.syncMat.col2.x*this.m_localOBB.extents.y;hY=this.syncMat.col1.y*this.m_localOBB.extents.x+this.syncMat.col2.y*this.m_localOBB.extents.y;this.syncAABB.minVertex.x=centerX-hX;this.syncAABB.minVertex.y=centerY-hY;this.syncAABB.maxVertex.x=centerX+hX;this.syncAABB.maxVertex.y=centerY+hY;v1=R2.col1;v2=R2.col2;v3=this.m_localOBB.R.col1;v4=this.m_localOBB.R.col2;this.syncMat.col1.x=v1.x*v3.x+v2.x*v3.y;this.syncMat.col1.y=v1.y*v3.x+v2.y*v3.y;this.syncMat.col2.x=v1.x*v4.x+v2.x*v4.y;this.syncMat.col2.y=v1.y*v4.x+v2.y*v4.y;this.syncMat.Abs();hX=this.m_localCentroid.x+this.m_localOBB.center.x;hY=this.m_localCentroid.y+this.m_localOBB.center.y;centerX=position2.x+(R2.col1.x*hX+R2.col2.x*hY);centerY=position2.y+(R2.col1.y*hX+R2.col2.y*hY);hX=this.syncMat.col1.x*this.m_localOBB.extents.x+this.syncMat.col2.x*this.m_localOBB.extents.y;hY=this.syncMat.col1.y*this.m_localOBB.extents.x+this.syncMat.col2.y*this.m_localOBB.extents.y;this.syncAABB.minVertex.x=Math.min(this.syncAABB.minVertex.x,centerX-hX);this.syncAABB.minVertex.y=Math.min(this.syncAABB.minVertex.y,centerY-hY);this.syncAABB.maxVertex.x=Math.max(this.syncAABB.maxVertex.x,centerX+hX);this.syncAABB.maxVertex.y=Math.max(this.syncAABB.maxVertex.y,centerY+hY);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(this.syncAABB))\r
9167 {broadPhase.MoveProxy(this.m_proxyId,this.syncAABB);}\r
9168 else\r
9169 {this.m_body.Freeze();}},QuickSync:function(position,R){this.m_R.SetM(R);this.m_position.x=position.x+(R.col1.x*this.m_localCentroid.x+R.col2.x*this.m_localCentroid.y);this.m_position.y=position.y+(R.col1.y*this.m_localCentroid.x+R.col2.y*this.m_localCentroid.y);},ResetProxy:function(broadPhase){if(this.m_proxyId==b2Pair.b2_nullProxy)\r
9170 {return;}\r
9171 var proxy=broadPhase.GetProxy(this.m_proxyId);broadPhase.DestroyProxy(this.m_proxyId);proxy=null;var R=b2Math.b2MulMM(this.m_R,this.m_localOBB.R);var absR=b2Math.b2AbsM(R);var h=b2Math.b2MulMV(absR,this.m_localOBB.extents);var position=b2Math.b2MulMV(this.m_R,this.m_localOBB.center);position.Add(this.m_position);var aabb=new b2AABB();aabb.minVertex.SetV(position);aabb.minVertex.Subtract(h);aabb.maxVertex.SetV(position);aabb.maxVertex.Add(h);if(broadPhase.InRange(aabb))\r
9172 {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}\r
9173 else\r
9174 {this.m_proxyId=b2Pair.b2_nullProxy;}\r
9175 if(this.m_proxyId==b2Pair.b2_nullProxy)\r
9176 {this.m_body.Freeze();}},Support:function(dX,dY,out)\r
9177 {var dLocalX=(dX*this.m_R.col1.x+dY*this.m_R.col1.y);var dLocalY=(dX*this.m_R.col2.x+dY*this.m_R.col2.y);var bestIndex=0;var bestValue=(this.m_coreVertices[0].x*dLocalX+this.m_coreVertices[0].y*dLocalY);for(var i=1;i<this.m_vertexCount;++i)\r
9178 {var value=(this.m_coreVertices[i].x*dLocalX+this.m_coreVertices[i].y*dLocalY);if(value>bestValue)\r
9179 {bestIndex=i;bestValue=value;}}\r
9180 out.Set(this.m_position.x+(this.m_R.col1.x*this.m_coreVertices[bestIndex].x+this.m_R.col2.x*this.m_coreVertices[bestIndex].y),this.m_position.y+(this.m_R.col1.y*this.m_coreVertices[bestIndex].x+this.m_R.col2.y*this.m_coreVertices[bestIndex].y));},m_localCentroid:new b2Vec2(),m_localOBB:new b2OBB(),m_vertices:null,m_coreVertices:null,m_vertexCount:0,m_normals:null});b2PolyShape.tempVec=new b2Vec2();b2PolyShape.tAbsR=new b2Mat22();\r
9181 var b2Body=Class.create();b2Body.prototype={SetOriginPosition:function(position,rotation){if(this.IsFrozen())\r
9182 {return;}\r
9183 this.m_rotation=rotation;this.m_R.Set(this.m_rotation);this.m_position=b2Math.AddVV(position,b2Math.b2MulMV(this.m_R,this.m_center));this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
9184 {s.Synchronize(this.m_position,this.m_R,this.m_position,this.m_R);}\r
9185 this.m_world.m_broadPhase.Commit();},GetOriginPosition:function(){return b2Math.SubtractVV(this.m_position,b2Math.b2MulMV(this.m_R,this.m_center));},SetCenterPosition:function(position,rotation){if(this.IsFrozen())\r
9186 {return;}\r
9187 this.m_rotation=rotation;this.m_R.Set(this.m_rotation);this.m_position.SetV(position);this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
9188 {s.Synchronize(this.m_position,this.m_R,this.m_position,this.m_R);}\r
9189 this.m_world.m_broadPhase.Commit();},GetCenterPosition:function(){return this.m_position;},GetRotation:function(){return this.m_rotation;},GetRotationMatrix:function(){return this.m_R;},SetLinearVelocity:function(v){this.m_linearVelocity.SetV(v);},GetLinearVelocity:function(){return this.m_linearVelocity;},SetAngularVelocity:function(w){this.m_angularVelocity=w;},GetAngularVelocity:function(){return this.m_angularVelocity;},ApplyForce:function(force,point)\r
9190 {if(this.IsSleeping()==false)\r
9191 {this.m_force.Add(force);this.m_torque+=b2Math.b2CrossVV(b2Math.SubtractVV(point,this.m_position),force);}},ApplyTorque:function(torque)\r
9192 {if(this.IsSleeping()==false)\r
9193 {this.m_torque+=torque;}},ApplyImpulse:function(impulse,point)\r
9194 {if(this.IsSleeping()==false)\r
9195 {this.m_linearVelocity.Add(b2Math.MulFV(this.m_invMass,impulse));this.m_angularVelocity+=(this.m_invI*b2Math.b2CrossVV(b2Math.SubtractVV(point,this.m_position),impulse));}},GetMass:function(){return this.m_mass;},GetInertia:function(){return this.m_I;},GetWorldPoint:function(localPoint){return b2Math.AddVV(this.m_position,b2Math.b2MulMV(this.m_R,localPoint));},GetWorldVector:function(localVector){return b2Math.b2MulMV(this.m_R,localVector);},GetLocalPoint:function(worldPoint){return b2Math.b2MulTMV(this.m_R,b2Math.SubtractVV(worldPoint,this.m_position));},GetLocalVector:function(worldVector){return b2Math.b2MulTMV(this.m_R,worldVector);},IsStatic:function(){return(this.m_flags&b2Body.e_staticFlag)==b2Body.e_staticFlag;},IsFrozen:function()\r
9196 {return(this.m_flags&b2Body.e_frozenFlag)==b2Body.e_frozenFlag;},IsSleeping:function(){return(this.m_flags&b2Body.e_sleepFlag)==b2Body.e_sleepFlag;},AllowSleeping:function(flag)\r
9197 {if(flag)\r
9198 {this.m_flags|=b2Body.e_allowSleepFlag;}\r
9199 else\r
9200 {this.m_flags&=~b2Body.e_allowSleepFlag;this.WakeUp();}},WakeUp:function(){this.m_flags&=~b2Body.e_sleepFlag;this.m_sleepTime=0.0;},GetShapeList:function(){return this.m_shapeList;},GetContactList:function()\r
9201 {return this.m_contactList;},GetJointList:function()\r
9202 {return this.m_jointList;},GetNext:function(){return this.m_next;},GetUserData:function(){return this.m_userData;},initialize:function(bd,world){this.sMat0=new b2Mat22();this.m_position=new b2Vec2();this.m_R=new b2Mat22(0);this.m_position0=new b2Vec2();var i=0;var sd;var massData;this.m_flags=0;this.m_position.SetV(bd.position);this.m_rotation=bd.rotation;this.m_R.Set(this.m_rotation);this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;this.m_world=world;this.m_linearDamping=b2Math.b2Clamp(1.0-bd.linearDamping,0.0,1.0);this.m_angularDamping=b2Math.b2Clamp(1.0-bd.angularDamping,0.0,1.0);this.m_force=new b2Vec2(0.0,0.0);this.m_torque=0.0;this.m_mass=0.0;var massDatas=new Array(b2Settings.b2_maxShapesPerBody);for(i=0;i<b2Settings.b2_maxShapesPerBody;i++){massDatas[i]=new b2MassData();}\r
9203 this.m_shapeCount=0;this.m_center=new b2Vec2(0.0,0.0);for(i=0;i<b2Settings.b2_maxShapesPerBody;++i)\r
9204 {sd=bd.shapes[i];if(sd==null)break;massData=massDatas[i];sd.ComputeMass(massData);this.m_mass+=massData.mass;this.m_center.x+=massData.mass*(sd.localPosition.x+massData.center.x);this.m_center.y+=massData.mass*(sd.localPosition.y+massData.center.y);++this.m_shapeCount;}\r
9205 if(this.m_mass>0.0)\r
9206 {this.m_center.Multiply(1.0/this.m_mass);this.m_position.Add(b2Math.b2MulMV(this.m_R,this.m_center));}\r
9207 else\r
9208 {this.m_flags|=b2Body.e_staticFlag;}\r
9209 this.m_I=0.0;for(i=0;i<this.m_shapeCount;++i)\r
9210 {sd=bd.shapes[i];massData=massDatas[i];this.m_I+=massData.I;var r=b2Math.SubtractVV(b2Math.AddVV(sd.localPosition,massData.center),this.m_center);this.m_I+=massData.mass*b2Math.b2Dot(r,r);}\r
9211 if(this.m_mass>0.0)\r
9212 {this.m_invMass=1.0/this.m_mass;}\r
9213 else\r
9214 {this.m_invMass=0.0;}\r
9215 if(this.m_I>0.0&&bd.preventRotation==false)\r
9216 {this.m_invI=1.0/this.m_I;}\r
9217 else\r
9218 {this.m_I=0.0;this.m_invI=0.0;}\r
9219 this.m_linearVelocity=b2Math.AddVV(bd.linearVelocity,b2Math.b2CrossFV(bd.angularVelocity,this.m_center));this.m_angularVelocity=bd.angularVelocity;this.m_jointList=null;this.m_contactList=null;this.m_prev=null;this.m_next=null;this.m_shapeList=null;for(i=0;i<this.m_shapeCount;++i)\r
9220 {sd=bd.shapes[i];var shape=b2Shape.Create(sd,this,this.m_center);shape.m_next=this.m_shapeList;this.m_shapeList=shape;}\r
9221 this.m_sleepTime=0.0;if(bd.allowSleep)\r
9222 {this.m_flags|=b2Body.e_allowSleepFlag;}\r
9223 if(bd.isSleeping)\r
9224 {this.m_flags|=b2Body.e_sleepFlag;}\r
9225 if((this.m_flags&b2Body.e_sleepFlag)||this.m_invMass==0.0)\r
9226 {this.m_linearVelocity.Set(0.0,0.0);this.m_angularVelocity=0.0;}\r
9227 this.m_userData=bd.userData;},Destroy:function(){var s=this.m_shapeList;while(s)\r
9228 {var s0=s;s=s.m_next;b2Shape.Destroy(s0);}},sMat0:new b2Mat22(),SynchronizeShapes:function(){this.sMat0.Set(this.m_rotation0);for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
9229 {s.Synchronize(this.m_position0,this.sMat0,this.m_position,this.m_R);}},QuickSyncShapes:function(){for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
9230 {s.QuickSync(this.m_position,this.m_R);}},IsConnected:function(other){for(var jn=this.m_jointList;jn!=null;jn=jn.next)\r
9231 {if(jn.other==other)\r
9232 return jn.joint.m_collideConnected==false;}\r
9233 return false;},Freeze:function(){this.m_flags|=b2Body.e_frozenFlag;this.m_linearVelocity.SetZero();this.m_angularVelocity=0.0;for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
9234 {s.DestroyProxy();}},m_flags:0,m_position:new b2Vec2(),m_rotation:null,m_R:new b2Mat22(0),m_position0:new b2Vec2(),m_rotation0:null,m_linearVelocity:null,m_angularVelocity:null,m_force:null,m_torque:null,m_center:null,m_world:null,m_prev:null,m_next:null,m_shapeList:null,m_shapeCount:0,m_jointList:null,m_contactList:null,m_mass:null,m_invMass:null,m_I:null,m_invI:null,m_linearDamping:null,m_angularDamping:null,m_sleepTime:null,m_userData:null};b2Body.e_staticFlag=0x0001;b2Body.e_frozenFlag=0x0002;b2Body.e_islandFlag=0x0004;b2Body.e_sleepFlag=0x0008;b2Body.e_allowSleepFlag=0x0010;b2Body.e_destroyFlag=0x0020;\r
9235 var b2BodyDef=Class.create();b2BodyDef.prototype={initialize:function()\r
9236 {this.shapes=new Array();this.userData=null;for(var i=0;i<b2Settings.b2_maxShapesPerBody;i++){this.shapes[i]=null;}\r
9237 this.position=new b2Vec2(0.0,0.0);this.rotation=0.0;this.linearVelocity=new b2Vec2(0.0,0.0);this.angularVelocity=0.0;this.linearDamping=0.0;this.angularDamping=0.0;this.allowSleep=true;this.isSleeping=false;this.preventRotation=false;},userData:null,shapes:new Array(),position:null,rotation:null,linearVelocity:null,angularVelocity:null,linearDamping:null,angularDamping:null,allowSleep:null,isSleeping:null,preventRotation:null,AddShape:function(shape)\r
9238 {for(var i=0;i<b2Settings.b2_maxShapesPerBody;++i)\r
9239 {if(this.shapes[i]==null)\r
9240 {this.shapes[i]=shape;break;}}}};\r
9241 var b2CollisionFilter=Class.create();b2CollisionFilter.prototype={ShouldCollide:function(shape1,shape2){if(shape1.m_groupIndex==shape2.m_groupIndex&&shape1.m_groupIndex!=0)\r
9242 {return shape1.m_groupIndex>0;}\r
9243 var collide=(shape1.m_maskBits&shape2.m_categoryBits)!=0&&(shape1.m_categoryBits&shape2.m_maskBits)!=0;return collide;},initialize:function(){}};b2CollisionFilter.b2_defaultFilter=new b2CollisionFilter;\r
9244 var b2Island=Class.create();b2Island.prototype={initialize:function(bodyCapacity,contactCapacity,jointCapacity,allocator)\r
9245 {var i=0;this.m_bodyCapacity=bodyCapacity;this.m_contactCapacity=contactCapacity;this.m_jointCapacity=jointCapacity;this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;this.m_bodies=new Array(bodyCapacity);for(i=0;i<bodyCapacity;i++)\r
9246 this.m_bodies[i]=null;this.m_contacts=new Array(contactCapacity);for(i=0;i<contactCapacity;i++)\r
9247 this.m_contacts[i]=null;this.m_joints=new Array(jointCapacity);for(i=0;i<jointCapacity;i++)\r
9248 this.m_joints[i]=null;this.m_allocator=allocator;},Clear:function()\r
9249 {this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;},Solve:function(step,gravity)\r
9250 {var i=0;var b;for(i=0;i<this.m_bodyCount;++i)\r
9251 {b=this.m_bodies[i];if(b.m_invMass==0.0)\r
9252 continue;b.m_linearVelocity.Add(b2Math.MulFV(step.dt,b2Math.AddVV(gravity,b2Math.MulFV(b.m_invMass,b.m_force))));b.m_angularVelocity+=step.dt*b.m_invI*b.m_torque;b.m_linearVelocity.Multiply(b.m_linearDamping);b.m_angularVelocity*=b.m_angularDamping;b.m_position0.SetV(b.m_position);b.m_rotation0=b.m_rotation;}\r
9253 var contactSolver=new b2ContactSolver(this.m_contacts,this.m_contactCount,this.m_allocator);contactSolver.PreSolve();for(i=0;i<this.m_jointCount;++i)\r
9254 {this.m_joints[i].PrepareVelocitySolver();}\r
9255 for(i=0;i<step.iterations;++i)\r
9256 {contactSolver.SolveVelocityConstraints();for(var j=0;j<this.m_jointCount;++j)\r
9257 {this.m_joints[j].SolveVelocityConstraints(step);}}\r
9258 for(i=0;i<this.m_bodyCount;++i)\r
9259 {b=this.m_bodies[i];if(b.m_invMass==0.0)\r
9260 continue;b.m_position.x+=step.dt*b.m_linearVelocity.x;b.m_position.y+=step.dt*b.m_linearVelocity.y;b.m_rotation+=step.dt*b.m_angularVelocity;b.m_R.Set(b.m_rotation);}\r
9261 for(i=0;i<this.m_jointCount;++i)\r
9262 {this.m_joints[i].PreparePositionSolver();}\r
9263 if(b2World.s_enablePositionCorrection)\r
9264 {for(b2Island.m_positionIterationCount=0;b2Island.m_positionIterationCount<step.iterations;++b2Island.m_positionIterationCount)\r
9265 {var contactsOkay=contactSolver.SolvePositionConstraints(b2Settings.b2_contactBaumgarte);var jointsOkay=true;for(i=0;i<this.m_jointCount;++i)\r
9266 {var jointOkay=this.m_joints[i].SolvePositionConstraints();jointsOkay=jointsOkay&&jointOkay;}\r
9267 if(contactsOkay&&jointsOkay)\r
9268 {break;}}}\r
9269 contactSolver.PostSolve();for(i=0;i<this.m_bodyCount;++i)\r
9270 {b=this.m_bodies[i];if(b.m_invMass==0.0)\r
9271 continue;b.m_R.Set(b.m_rotation);b.SynchronizeShapes();b.m_force.Set(0.0,0.0);b.m_torque=0.0;}},UpdateSleep:function(dt)\r
9272 {var i=0;var b;var minSleepTime=Number.MAX_VALUE;var linTolSqr=b2Settings.b2_linearSleepTolerance*b2Settings.b2_linearSleepTolerance;var angTolSqr=b2Settings.b2_angularSleepTolerance*b2Settings.b2_angularSleepTolerance;for(i=0;i<this.m_bodyCount;++i)\r
9273 {b=this.m_bodies[i];if(b.m_invMass==0.0)\r
9274 {continue;}\r
9275 if((b.m_flags&b2Body.e_allowSleepFlag)==0)\r
9276 {b.m_sleepTime=0.0;minSleepTime=0.0;}\r
9277 if((b.m_flags&b2Body.e_allowSleepFlag)==0||b.m_angularVelocity*b.m_angularVelocity>angTolSqr||b2Math.b2Dot(b.m_linearVelocity,b.m_linearVelocity)>linTolSqr)\r
9278 {b.m_sleepTime=0.0;minSleepTime=0.0;}\r
9279 else\r
9280 {b.m_sleepTime+=dt;minSleepTime=b2Math.b2Min(minSleepTime,b.m_sleepTime);}}\r
9281 if(minSleepTime>=b2Settings.b2_timeToSleep)\r
9282 {for(i=0;i<this.m_bodyCount;++i)\r
9283 {b=this.m_bodies[i];b.m_flags|=b2Body.e_sleepFlag;}}},AddBody:function(body)\r
9284 {this.m_bodies[this.m_bodyCount++]=body;},AddContact:function(contact)\r
9285 {this.m_contacts[this.m_contactCount++]=contact;},AddJoint:function(joint)\r
9286 {this.m_joints[this.m_jointCount++]=joint;},m_allocator:null,m_bodies:null,m_contacts:null,m_joints:null,m_bodyCount:0,m_jointCount:0,m_contactCount:0,m_bodyCapacity:0,m_contactCapacity:0,m_jointCapacity:0,m_positionError:null};b2Island.m_positionIterationCount=0;\r
9287 var b2TimeStep=Class.create();b2TimeStep.prototype={dt:null,inv_dt:null,iterations:0,initialize:function(){}};\r
9288 var b2ContactNode=Class.create();b2ContactNode.prototype={other:null,contact:null,prev:null,next:null,initialize:function(){}};\r
9289 var b2Contact=Class.create();b2Contact.prototype={GetManifolds:function(){return null},GetManifoldCount:function()\r
9290 {return this.m_manifoldCount;},GetNext:function(){return this.m_next;},GetShape1:function(){return this.m_shape1;},GetShape2:function(){return this.m_shape2;},initialize:function(s1,s2)\r
9291 {this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
9292 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;},Evaluate:function(){},m_flags:0,m_prev:null,m_next:null,m_node1:new b2ContactNode(),m_node2:new b2ContactNode(),m_shape1:null,m_shape2:null,m_manifoldCount:0,m_friction:null,m_restitution:null};b2Contact.e_islandFlag=0x0001;b2Contact.e_destroyFlag=0x0002;b2Contact.AddType=function(createFcn,destroyFcn,type1,type2)\r
9293 {b2Contact.s_registers[type1][type2].createFcn=createFcn;b2Contact.s_registers[type1][type2].destroyFcn=destroyFcn;b2Contact.s_registers[type1][type2].primary=true;if(type1!=type2)\r
9294 {b2Contact.s_registers[type2][type1].createFcn=createFcn;b2Contact.s_registers[type2][type1].destroyFcn=destroyFcn;b2Contact.s_registers[type2][type1].primary=false;}};b2Contact.InitializeRegisters=function(){b2Contact.s_registers=new Array(b2Shape.e_shapeTypeCount);for(var i=0;i<b2Shape.e_shapeTypeCount;i++){b2Contact.s_registers[i]=new Array(b2Shape.e_shapeTypeCount);for(var j=0;j<b2Shape.e_shapeTypeCount;j++){b2Contact.s_registers[i][j]=new b2ContactRegister();}}\r
9295 b2Contact.AddType(b2CircleContact.Create,b2CircleContact.Destroy,b2Shape.e_circleShape,b2Shape.e_circleShape);b2Contact.AddType(b2PolyAndCircleContact.Create,b2PolyAndCircleContact.Destroy,b2Shape.e_polyShape,b2Shape.e_circleShape);b2Contact.AddType(b2PolyContact.Create,b2PolyContact.Destroy,b2Shape.e_polyShape,b2Shape.e_polyShape);};b2Contact.Create=function(shape1,shape2,allocator){if(b2Contact.s_initialized==false)\r
9296 {b2Contact.InitializeRegisters();b2Contact.s_initialized=true;}\r
9297 var type1=shape1.m_type;var type2=shape2.m_type;var createFcn=b2Contact.s_registers[type1][type2].createFcn;if(createFcn)\r
9298 {if(b2Contact.s_registers[type1][type2].primary)\r
9299 {return createFcn(shape1,shape2,allocator);}\r
9300 else\r
9301 {var c=createFcn(shape2,shape1,allocator);for(var i=0;i<c.GetManifoldCount();++i)\r
9302 {var m=c.GetManifolds()[i];m.normal=m.normal.Negative();}\r
9303 return c;}}\r
9304 else\r
9305 {return null;}};b2Contact.Destroy=function(contact,allocator){if(contact.GetManifoldCount()>0)\r
9306 {contact.m_shape1.m_body.WakeUp();contact.m_shape2.m_body.WakeUp();}\r
9307 var type1=contact.m_shape1.m_type;var type2=contact.m_shape2.m_type;var destroyFcn=b2Contact.s_registers[type1][type2].destroyFcn;destroyFcn(contact,allocator);};b2Contact.s_registers=null;b2Contact.s_initialized=false;\r
9308 var b2ContactConstraint=Class.create();b2ContactConstraint.prototype={initialize:function(){this.normal=new b2Vec2();this.points=new Array(b2Settings.b2_maxManifoldPoints);for(var i=0;i<b2Settings.b2_maxManifoldPoints;i++){this.points[i]=new b2ContactConstraintPoint();}},points:null,normal:new b2Vec2(),manifold:null,body1:null,body2:null,friction:null,restitution:null,pointCount:0};\r
9309 var b2ContactConstraintPoint=Class.create();b2ContactConstraintPoint.prototype={localAnchor1:new b2Vec2(),localAnchor2:new b2Vec2(),normalImpulse:null,tangentImpulse:null,positionImpulse:null,normalMass:null,tangentMass:null,separation:null,velocityBias:null,initialize:function(){this.localAnchor1=new b2Vec2();this.localAnchor2=new b2Vec2();}};\r
9310 var b2ContactRegister=Class.create();b2ContactRegister.prototype={createFcn:null,destroyFcn:null,primary:null,initialize:function(){}};\r
9311 var b2ContactSolver=Class.create();b2ContactSolver.prototype={initialize:function(contacts,contactCount,allocator){this.m_constraints=new Array();this.m_allocator=allocator;var i=0;var tVec;var tMat;this.m_constraintCount=0;for(i=0;i<contactCount;++i)\r
9312 {this.m_constraintCount+=contacts[i].GetManifoldCount();}\r
9313 for(i=0;i<this.m_constraintCount;i++){this.m_constraints[i]=new b2ContactConstraint();}\r
9314 var count=0;for(i=0;i<contactCount;++i)\r
9315 {var contact=contacts[i];var b1=contact.m_shape1.m_body;var b2=contact.m_shape2.m_body;var manifoldCount=contact.GetManifoldCount();var manifolds=contact.GetManifolds();var friction=contact.m_friction;var restitution=contact.m_restitution;var v1X=b1.m_linearVelocity.x;var v1Y=b1.m_linearVelocity.y;var v2X=b2.m_linearVelocity.x;var v2Y=b2.m_linearVelocity.y;var w1=b1.m_angularVelocity;var w2=b2.m_angularVelocity;for(var j=0;j<manifoldCount;++j)\r
9316 {var manifold=manifolds[j];var normalX=manifold.normal.x;var normalY=manifold.normal.y;var c=this.m_constraints[count];c.body1=b1;c.body2=b2;c.manifold=manifold;c.normal.x=normalX;c.normal.y=normalY;c.pointCount=manifold.pointCount;c.friction=friction;c.restitution=restitution;for(var k=0;k<c.pointCount;++k)\r
9317 {var cp=manifold.points[k];var ccp=c.points[k];ccp.normalImpulse=cp.normalImpulse;ccp.tangentImpulse=cp.tangentImpulse;ccp.separation=cp.separation;var r1X=cp.position.x-b1.m_position.x;var r1Y=cp.position.y-b1.m_position.y;var r2X=cp.position.x-b2.m_position.x;var r2Y=cp.position.y-b2.m_position.y;tVec=ccp.localAnchor1;tMat=b1.m_R;tVec.x=r1X*tMat.col1.x+r1Y*tMat.col1.y;tVec.y=r1X*tMat.col2.x+r1Y*tMat.col2.y;tVec=ccp.localAnchor2;tMat=b2.m_R;tVec.x=r2X*tMat.col1.x+r2Y*tMat.col1.y;tVec.y=r2X*tMat.col2.x+r2Y*tMat.col2.y;var r1Sqr=r1X*r1X+r1Y*r1Y;var r2Sqr=r2X*r2X+r2Y*r2Y;var rn1=r1X*normalX+r1Y*normalY;var rn2=r2X*normalX+r2Y*normalY;var kNormal=b1.m_invMass+b2.m_invMass;kNormal+=b1.m_invI*(r1Sqr-rn1*rn1)+b2.m_invI*(r2Sqr-rn2*rn2);ccp.normalMass=1.0/kNormal;var tangentX=normalY\r
9318 var tangentY=-normalX;var rt1=r1X*tangentX+r1Y*tangentY;var rt2=r2X*tangentX+r2Y*tangentY;var kTangent=b1.m_invMass+b2.m_invMass;kTangent+=b1.m_invI*(r1Sqr-rt1*rt1)+b2.m_invI*(r2Sqr-rt2*rt2);ccp.tangentMass=1.0/kTangent;ccp.velocityBias=0.0;if(ccp.separation>0.0)\r
9319 {ccp.velocityBias=-60.0*ccp.separation;}\r
9320 var tX=v2X+(-w2*r2Y)-v1X-(-w1*r1Y);var tY=v2Y+(w2*r2X)-v1Y-(w1*r1X);var vRel=c.normal.x*tX+c.normal.y*tY;if(vRel<-b2Settings.b2_velocityThreshold)\r
9321 {ccp.velocityBias+=-c.restitution*vRel;}}\r
9322 ++count;}}},PreSolve:function(){var tVec;var tVec2;var tMat;for(var i=0;i<this.m_constraintCount;++i)\r
9323 {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var j=0;var tCount=0;if(b2World.s_enableWarmStarting)\r
9324 {tCount=c.pointCount;for(j=0;j<tCount;++j)\r
9325 {var ccp=c.points[j];var PX=ccp.normalImpulse*normalX+ccp.tangentImpulse*tangentX;var PY=ccp.normalImpulse*normalY+ccp.tangentImpulse*tangentY;tMat=b1.m_R;tVec=ccp.localAnchor1;var r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;var r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b2.m_R;tVec=ccp.localAnchor2;var r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;var r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;b1.m_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b1.m_linearVelocity.x-=invMass1*PX;b1.m_linearVelocity.y-=invMass1*PY;b2.m_angularVelocity+=invI2*(r2X*PY-r2Y*PX);b2.m_linearVelocity.x+=invMass2*PX;b2.m_linearVelocity.y+=invMass2*PY;ccp.positionImpulse=0.0;}}\r
9326 else{tCount=c.pointCount;for(j=0;j<tCount;++j)\r
9327 {var ccp2=c.points[j];ccp2.normalImpulse=0.0;ccp2.tangentImpulse=0.0;ccp2.positionImpulse=0.0;}}}},SolveVelocityConstraints:function(){var j=0;var ccp;var r1X;var r1Y;var r2X;var r2Y;var dvX;var dvY;var lambda;var newImpulse;var PX;var PY;var tMat;var tVec;for(var i=0;i<this.m_constraintCount;++i)\r
9328 {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var b1_angularVelocity=b1.m_angularVelocity;var b1_linearVelocity=b1.m_linearVelocity;var b2_angularVelocity=b2.m_angularVelocity;var b2_linearVelocity=b2.m_linearVelocity;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var tCount=c.pointCount;for(j=0;j<tCount;++j)\r
9329 {ccp=c.points[j];tMat=b1.m_R;tVec=ccp.localAnchor1;r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y\r
9330 r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y\r
9331 tMat=b2.m_R;tVec=ccp.localAnchor2;r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y\r
9332 r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y\r
9333 dvX=b2_linearVelocity.x+(-b2_angularVelocity*r2Y)-b1_linearVelocity.x-(-b1_angularVelocity*r1Y);dvY=b2_linearVelocity.y+(b2_angularVelocity*r2X)-b1_linearVelocity.y-(b1_angularVelocity*r1X);var vn=dvX*normalX+dvY*normalY;lambda=-ccp.normalMass*(vn-ccp.velocityBias);newImpulse=b2Math.b2Max(ccp.normalImpulse+lambda,0.0);lambda=newImpulse-ccp.normalImpulse;PX=lambda*normalX;PY=lambda*normalY;b1_linearVelocity.x-=invMass1*PX;b1_linearVelocity.y-=invMass1*PY;b1_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b2_linearVelocity.x+=invMass2*PX;b2_linearVelocity.y+=invMass2*PY;b2_angularVelocity+=invI2*(r2X*PY-r2Y*PX);ccp.normalImpulse=newImpulse;dvX=b2_linearVelocity.x+(-b2_angularVelocity*r2Y)-b1_linearVelocity.x-(-b1_angularVelocity*r1Y);dvY=b2_linearVelocity.y+(b2_angularVelocity*r2X)-b1_linearVelocity.y-(b1_angularVelocity*r1X);var vt=dvX*tangentX+dvY*tangentY;lambda=ccp.tangentMass*(-vt);var maxFriction=c.friction*ccp.normalImpulse;newImpulse=b2Math.b2Clamp(ccp.tangentImpulse+lambda,-maxFriction,maxFriction);lambda=newImpulse-ccp.tangentImpulse;PX=lambda*tangentX;PY=lambda*tangentY;b1_linearVelocity.x-=invMass1*PX;b1_linearVelocity.y-=invMass1*PY;b1_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b2_linearVelocity.x+=invMass2*PX;b2_linearVelocity.y+=invMass2*PY;b2_angularVelocity+=invI2*(r2X*PY-r2Y*PX);ccp.tangentImpulse=newImpulse;}\r
9334 b1.m_angularVelocity=b1_angularVelocity;b2.m_angularVelocity=b2_angularVelocity;}},SolvePositionConstraints:function(beta){var minSeparation=0.0;var tMat;var tVec;for(var i=0;i<this.m_constraintCount;++i)\r
9335 {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var b1_position=b1.m_position;var b1_rotation=b1.m_rotation;var b2_position=b2.m_position;var b2_rotation=b2.m_rotation;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var tCount=c.pointCount;for(var j=0;j<tCount;++j)\r
9336 {var ccp=c.points[j];tMat=b1.m_R;tVec=ccp.localAnchor1;var r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y\r
9337 var r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y\r
9338 tMat=b2.m_R;tVec=ccp.localAnchor2;var r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y\r
9339 var r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y\r
9340 var p1X=b1_position.x+r1X;var p1Y=b1_position.y+r1Y;var p2X=b2_position.x+r2X;var p2Y=b2_position.y+r2Y;var dpX=p2X-p1X;var dpY=p2Y-p1Y;var separation=(dpX*normalX+dpY*normalY)+ccp.separation;minSeparation=b2Math.b2Min(minSeparation,separation);var C=beta*b2Math.b2Clamp(separation+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);var dImpulse=-ccp.normalMass*C;var impulse0=ccp.positionImpulse;ccp.positionImpulse=b2Math.b2Max(impulse0+dImpulse,0.0);dImpulse=ccp.positionImpulse-impulse0;var impulseX=dImpulse*normalX;var impulseY=dImpulse*normalY;b1_position.x-=invMass1*impulseX;b1_position.y-=invMass1*impulseY;b1_rotation-=invI1*(r1X*impulseY-r1Y*impulseX);b1.m_R.Set(b1_rotation);b2_position.x+=invMass2*impulseX;b2_position.y+=invMass2*impulseY;b2_rotation+=invI2*(r2X*impulseY-r2Y*impulseX);b2.m_R.Set(b2_rotation);}\r
9341 b1.m_rotation=b1_rotation;b2.m_rotation=b2_rotation;}\r
9342 return minSeparation>=-b2Settings.b2_linearSlop;},PostSolve:function(){for(var i=0;i<this.m_constraintCount;++i)\r
9343 {var c=this.m_constraints[i];var m=c.manifold;for(var j=0;j<c.pointCount;++j)\r
9344 {var mPoint=m.points[j];var cPoint=c.points[j];mPoint.normalImpulse=cPoint.normalImpulse;mPoint.tangentImpulse=cPoint.tangentImpulse;}}},m_allocator:null,m_constraints:new Array(),m_constraintCount:0};\r
9345 var b2CircleContact=Class.create();Object.extend(b2CircleContact.prototype,b2Contact.prototype);Object.extend(b2CircleContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
9346 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m_manifold=[new b2Manifold()];this.m_manifold[0].pointCount=0;this.m_manifold[0].points[0].normalImpulse=0.0;this.m_manifold[0].points[0].tangentImpulse=0.0;},Evaluate:function(){b2Collision.b2CollideCircle(this.m_manifold[0],this.m_shape1,this.m_shape2,false);if(this.m_manifold[0].pointCount>0)\r
9347 {this.m_manifoldCount=1;}\r
9348 else\r
9349 {this.m_manifoldCount=0;}},GetManifolds:function()\r
9350 {return this.m_manifold;},m_manifold:[new b2Manifold()]});b2CircleContact.Create=function(shape1,shape2,allocator){return new b2CircleContact(shape1,shape2);};b2CircleContact.Destroy=function(contact,allocator){};\r
9351 var b2Conservative=Class.create();b2Conservative.prototype={initialize:function(){}}\r
9352 b2Conservative.R1=new b2Mat22();b2Conservative.R2=new b2Mat22();b2Conservative.x1=new b2Vec2();b2Conservative.x2=new b2Vec2();b2Conservative.Conservative=function(shape1,shape2){var body1=shape1.GetBody();var body2=shape2.GetBody();var v1X=body1.m_position.x-body1.m_position0.x;var v1Y=body1.m_position.y-body1.m_position0.y;var omega1=body1.m_rotation-body1.m_rotation0;var v2X=body2.m_position.x-body2.m_position0.x;var v2Y=body2.m_position.y-body2.m_position0.y;var omega2=body2.m_rotation-body2.m_rotation0;var r1=shape1.GetMaxRadius();var r2=shape2.GetMaxRadius();var p1StartX=body1.m_position0.x;var p1StartY=body1.m_position0.y;var a1Start=body1.m_rotation0;var p2StartX=body2.m_position0.x;var p2StartY=body2.m_position0.y;var a2Start=body2.m_rotation0;var p1X=p1StartX;var p1Y=p1StartY;var a1=a1Start;var p2X=p2StartX;var p2Y=p2StartY;var a2=a2Start;b2Conservative.R1.Set(a1);b2Conservative.R2.Set(a2);shape1.QuickSync(p1,b2Conservative.R1);shape2.QuickSync(p2,b2Conservative.R2);var s1=0.0;var maxIterations=10;var dX;var dY;var invRelativeVelocity=0.0;var hit=true;for(var iter=0;iter<maxIterations;++iter)\r
9353 {var distance=b2Distance.Distance(b2Conservative.x1,b2Conservative.x2,shape1,shape2);if(distance<b2Settings.b2_linearSlop)\r
9354 {if(iter==0)\r
9355 {hit=false;}\r
9356 else\r
9357 {hit=true;}\r
9358 break;}\r
9359 if(iter==0)\r
9360 {dX=b2Conservative.x2.x-b2Conservative.x1.x;dY=b2Conservative.x2.y-b2Conservative.x1.y;var dLen=Math.sqrt(dX*dX+dY*dY);var relativeVelocity=(dX*(v1X-v2X)+dY*(v1Y-v2Y))+Math.abs(omega1)*r1+Math.abs(omega2)*r2;if(Math.abs(relativeVelocity)<Number.MIN_VALUE)\r
9361 {hit=false;break;}\r
9362 invRelativeVelocity=1.0/relativeVelocity;}\r
9363 var ds=distance*invRelativeVelocity;var s2=s1+ds;if(s2<0.0||1.0<s2)\r
9364 {hit=false;break;}\r
9365 if(s2<(1.0+100.0*Number.MIN_VALUE)*s1)\r
9366 {hit=true;break;}\r
9367 s1=s2;p1X=p1StartX+s1*v1.x;p1Y=p1StartY+s1*v1.y;a1=a1Start+s1*omega1;p2X=p2StartX+s1*v2.x;p2Y=p2StartY+s1*v2.y;a2=a2Start+s1*omega2;b2Conservative.R1.Set(a1);b2Conservative.R2.Set(a2);shape1.QuickSync(p1,b2Conservative.R1);shape2.QuickSync(p2,b2Conservative.R2);}\r
9368 if(hit)\r
9369 {dX=b2Conservative.x2.x-b2Conservative.x1.x;dY=b2Conservative.x2.y-b2Conservative.x1.y;var length=Math.sqrt(dX*dX+dY*dY);if(length>FLT_EPSILON)\r
9370 {d*=b2_linearSlop/length;}\r
9371 if(body1.IsStatic())\r
9372 {body1.m_position.x=p1X;body1.m_position.y=p1Y;}\r
9373 else\r
9374 {body1.m_position.x=p1X-dX;body1.m_position.y=p1Y-dY;}\r
9375 body1.m_rotation=a1;body1.m_R.Set(a1);body1.QuickSyncShapes();if(body2.IsStatic())\r
9376 {body2.m_position.x=p2X;body2.m_position.y=p2Y;}\r
9377 else\r
9378 {body2.m_position.x=p2X+dX;body2.m_position.y=p2Y+dY;}\r
9379 body2.m_position.x=p2X+dX;body2.m_position.y=p2Y+dY;body2.m_rotation=a2;body2.m_R.Set(a2);body2.QuickSyncShapes();return true;}\r
9380 shape1.QuickSync(body1.m_position,body1.m_R);shape2.QuickSync(body2.m_position,body2.m_R);return false;};\r
9381 var b2NullContact=Class.create();Object.extend(b2NullContact.prototype,b2Contact.prototype);Object.extend(b2NullContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
9382 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;},Evaluate:function(){},GetManifolds:function(){return null;}});\r
9383 var b2PolyAndCircleContact=Class.create();Object.extend(b2PolyAndCircleContact.prototype,b2Contact.prototype);Object.extend(b2PolyAndCircleContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
9384 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m_manifold=[new b2Manifold()];b2Settings.b2Assert(this.m_shape1.m_type==b2Shape.e_polyShape);b2Settings.b2Assert(this.m_shape2.m_type==b2Shape.e_circleShape);this.m_manifold[0].pointCount=0;this.m_manifold[0].points[0].normalImpulse=0.0;this.m_manifold[0].points[0].tangentImpulse=0.0;},Evaluate:function(){b2Collision.b2CollidePolyAndCircle(this.m_manifold[0],this.m_shape1,this.m_shape2,false);if(this.m_manifold[0].pointCount>0)\r
9385 {this.m_manifoldCount=1;}\r
9386 else\r
9387 {this.m_manifoldCount=0;}},GetManifolds:function()\r
9388 {return this.m_manifold;},m_manifold:[new b2Manifold()]})\r
9389 b2PolyAndCircleContact.Create=function(shape1,shape2,allocator){return new b2PolyAndCircleContact(shape1,shape2);};b2PolyAndCircleContact.Destroy=function(contact,allocator){};\r
9390 var b2PolyContact=Class.create();Object.extend(b2PolyContact.prototype,b2Contact.prototype);Object.extend(b2PolyContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
9391 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m0=new b2Manifold();this.m_manifold=[new b2Manifold()];this.m_manifold[0].pointCount=0;},m0:new b2Manifold(),Evaluate:function(){var tMani=this.m_manifold[0];var tPoints=this.m0.points;for(var k=0;k<tMani.pointCount;k++){var tPoint=tPoints[k];var tPoint0=tMani.points[k];tPoint.normalImpulse=tPoint0.normalImpulse;tPoint.tangentImpulse=tPoint0.tangentImpulse;tPoint.id=tPoint0.id.Copy();}\r
9392 this.m0.pointCount=tMani.pointCount;b2Collision.b2CollidePoly(tMani,this.m_shape1,this.m_shape2,false);if(tMani.pointCount>0)\r
9393 {var match=[false,false];for(var i=0;i<tMani.pointCount;++i)\r
9394 {var cp=tMani.points[i];cp.normalImpulse=0.0;cp.tangentImpulse=0.0;var idKey=cp.id.key;for(var j=0;j<this.m0.pointCount;++j)\r
9395 {if(match[j]==true)\r
9396 continue;var cp0=this.m0.points[j];var id0=cp0.id;if(id0.key==idKey)\r
9397 {match[j]=true;cp.normalImpulse=cp0.normalImpulse;cp.tangentImpulse=cp0.tangentImpulse;break;}}}\r
9398 this.m_manifoldCount=1;}\r
9399 else\r
9400 {this.m_manifoldCount=0;}},GetManifolds:function()\r
9401 {return this.m_manifold;},m_manifold:[new b2Manifold()]});b2PolyContact.Create=function(shape1,shape2,allocator){return new b2PolyContact(shape1,shape2);};b2PolyContact.Destroy=function(contact,allocator){};\r
9402 var b2ContactManager=Class.create();Object.extend(b2ContactManager.prototype,b2PairCallback.prototype);Object.extend(b2ContactManager.prototype,{initialize:function(){this.m_nullContact=new b2NullContact();this.m_world=null;this.m_destroyImmediate=false;},PairAdded:function(proxyUserData1,proxyUserData2){var shape1=proxyUserData1;var shape2=proxyUserData2;var body1=shape1.m_body;var body2=shape2.m_body;if(body1.IsStatic()&&body2.IsStatic())\r
9403 {return this.m_nullContact;}\r
9404 if(shape1.m_body==shape2.m_body)\r
9405 {return this.m_nullContact;}\r
9406 if(body2.IsConnected(body1))\r
9407 {return this.m_nullContact;}\r
9408 if(this.m_world.m_filter!=null&&this.m_world.m_filter.ShouldCollide(shape1,shape2)==false)\r
9409 {return this.m_nullContact;}\r
9410 if(body2.m_invMass==0.0)\r
9411 {var tempShape=shape1;shape1=shape2;shape2=tempShape;var tempBody=body1;body1=body2;body2=tempBody;}\r
9412 var contact=b2Contact.Create(shape1,shape2,this.m_world.m_blockAllocator);if(contact==null)\r
9413 {return this.m_nullContact;}\r
9414 else\r
9415 {contact.m_prev=null;contact.m_next=this.m_world.m_contactList;if(this.m_world.m_contactList!=null)\r
9416 {this.m_world.m_contactList.m_prev=contact;}\r
9417 this.m_world.m_contactList=contact;this.m_world.m_contactCount++;}\r
9418 return contact;},PairRemoved:function(proxyUserData1,proxyUserData2,pairUserData){if(pairUserData==null)\r
9419 {return;}\r
9420 var c=pairUserData;if(c!=this.m_nullContact)\r
9421 {if(this.m_destroyImmediate==true)\r
9422 {this.DestroyContact(c);c=null;}\r
9423 else\r
9424 {c.m_flags|=b2Contact.e_destroyFlag;}}},DestroyContact:function(c)\r
9425 {if(c.m_prev)\r
9426 {c.m_prev.m_next=c.m_next;}\r
9427 if(c.m_next)\r
9428 {c.m_next.m_prev=c.m_prev;}\r
9429 if(c==this.m_world.m_contactList)\r
9430 {this.m_world.m_contactList=c.m_next;}\r
9431 if(c.GetManifoldCount()>0)\r
9432 {var body1=c.m_shape1.m_body;var body2=c.m_shape2.m_body;var node1=c.m_node1;var node2=c.m_node2;body1.WakeUp();body2.WakeUp();if(node1.prev)\r
9433 {node1.prev.next=node1.next;}\r
9434 if(node1.next)\r
9435 {node1.next.prev=node1.prev;}\r
9436 if(node1==body1.m_contactList)\r
9437 {body1.m_contactList=node1.next;}\r
9438 node1.prev=null;node1.next=null;if(node2.prev)\r
9439 {node2.prev.next=node2.next;}\r
9440 if(node2.next)\r
9441 {node2.next.prev=node2.prev;}\r
9442 if(node2==body2.m_contactList)\r
9443 {body2.m_contactList=node2.next;}\r
9444 node2.prev=null;node2.next=null;}\r
9445 b2Contact.Destroy(c,this.m_world.m_blockAllocator);--this.m_world.m_contactCount;},CleanContactList:function()\r
9446 {var c=this.m_world.m_contactList;while(c!=null)\r
9447 {var c0=c;c=c.m_next;if(c0.m_flags&b2Contact.e_destroyFlag)\r
9448 {this.DestroyContact(c0);c0=null;}}},Collide:function()\r
9449 {var body1;var body2;var node1;var node2;for(var c=this.m_world.m_contactList;c!=null;c=c.m_next)\r
9450 {if(c.m_shape1.m_body.IsSleeping()&&c.m_shape2.m_body.IsSleeping())\r
9451 {continue;}\r
9452 var oldCount=c.GetManifoldCount();c.Evaluate();var newCount=c.GetManifoldCount();if(oldCount==0&&newCount>0)\r
9453 {body1=c.m_shape1.m_body;body2=c.m_shape2.m_body;node1=c.m_node1;node2=c.m_node2;node1.contact=c;node1.other=body2;node1.prev=null;node1.next=body1.m_contactList;if(node1.next!=null)\r
9454 {node1.next.prev=c.m_node1;}\r
9455 body1.m_contactList=c.m_node1;node2.contact=c;node2.other=body1;node2.prev=null;node2.next=body2.m_contactList;if(node2.next!=null)\r
9456 {node2.next.prev=node2;}\r
9457 body2.m_contactList=node2;}\r
9458 else if(oldCount>0&&newCount==0)\r
9459 {body1=c.m_shape1.m_body;body2=c.m_shape2.m_body;node1=c.m_node1;node2=c.m_node2;if(node1.prev)\r
9460 {node1.prev.next=node1.next;}\r
9461 if(node1.next)\r
9462 {node1.next.prev=node1.prev;}\r
9463 if(node1==body1.m_contactList)\r
9464 {body1.m_contactList=node1.next;}\r
9465 node1.prev=null;node1.next=null;if(node2.prev)\r
9466 {node2.prev.next=node2.next;}\r
9467 if(node2.next)\r
9468 {node2.next.prev=node2.prev;}\r
9469 if(node2==body2.m_contactList)\r
9470 {body2.m_contactList=node2.next;}\r
9471 node2.prev=null;node2.next=null;}}},m_world:null,m_nullContact:new b2NullContact(),m_destroyImmediate:null});\r
9472 var b2World=Class.create();b2World.prototype={initialize:function(worldAABB,gravity,doSleep){this.step=new b2TimeStep();this.m_contactManager=new b2ContactManager();this.m_listener=null;this.m_filter=b2CollisionFilter.b2_defaultFilter;this.m_bodyList=null;this.m_contactList=null;this.m_jointList=null;this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;this.m_bodyDestroyList=null;this.m_allowSleep=doSleep;this.m_gravity=gravity;this.m_contactManager.m_world=this;this.m_broadPhase=new b2BroadPhase(worldAABB,this.m_contactManager);var bd=new b2BodyDef();this.m_groundBody=this.CreateBody(bd);},SetListener:function(listener){this.m_listener=listener;},SetFilter:function(filter){this.m_filter=filter;},CreateBody:function(def){var b=new b2Body(def,this);b.m_prev=null;b.m_next=this.m_bodyList;if(this.m_bodyList)\r
9473 {this.m_bodyList.m_prev=b;}\r
9474 this.m_bodyList=b;++this.m_bodyCount;return b;},DestroyBody:function(b)\r
9475 {if(b.m_flags&b2Body.e_destroyFlag)\r
9476 {return;}\r
9477 if(b.m_prev)\r
9478 {b.m_prev.m_next=b.m_next;}\r
9479 if(b.m_next)\r
9480 {b.m_next.m_prev=b.m_prev;}\r
9481 if(b==this.m_bodyList)\r
9482 {this.m_bodyList=b.m_next;}\r
9483 b.m_flags|=b2Body.e_destroyFlag;--this.m_bodyCount;b.m_prev=null;b.m_next=this.m_bodyDestroyList;this.m_bodyDestroyList=b;},CleanBodyList:function()\r
9484 {this.m_contactManager.m_destroyImmediate=true;var b=this.m_bodyDestroyList;while(b)\r
9485 {var b0=b;b=b.m_next;var jn=b0.m_jointList;while(jn)\r
9486 {var jn0=jn;jn=jn.next;if(this.m_listener)\r
9487 {this.m_listener.NotifyJointDestroyed(jn0.joint);}\r
9488 this.DestroyJoint(jn0.joint);}\r
9489 b0.Destroy();}\r
9490 this.m_bodyDestroyList=null;this.m_contactManager.m_destroyImmediate=false;},CreateJoint:function(def){var j=b2Joint.Create(def,this.m_blockAllocator);j.m_prev=null;j.m_next=this.m_jointList;if(this.m_jointList)\r
9491 {this.m_jointList.m_prev=j;}\r
9492 this.m_jointList=j;++this.m_jointCount;j.m_node1.joint=j;j.m_node1.other=j.m_body2;j.m_node1.prev=null;j.m_node1.next=j.m_body1.m_jointList;if(j.m_body1.m_jointList)j.m_body1.m_jointList.prev=j.m_node1;j.m_body1.m_jointList=j.m_node1;j.m_node2.joint=j;j.m_node2.other=j.m_body1;j.m_node2.prev=null;j.m_node2.next=j.m_body2.m_jointList;if(j.m_body2.m_jointList)j.m_body2.m_jointList.prev=j.m_node2;j.m_body2.m_jointList=j.m_node2;if(def.collideConnected==false)\r
9493 {var b=def.body1.m_shapeCount<def.body2.m_shapeCount?def.body1:def.body2;for(var s=b.m_shapeList;s;s=s.m_next)\r
9494 {s.ResetProxy(this.m_broadPhase);}}\r
9495 return j;},DestroyJoint:function(j)\r
9496 {var collideConnected=j.m_collideConnected;if(j.m_prev)\r
9497 {j.m_prev.m_next=j.m_next;}\r
9498 if(j.m_next)\r
9499 {j.m_next.m_prev=j.m_prev;}\r
9500 if(j==this.m_jointList)\r
9501 {this.m_jointList=j.m_next;}\r
9502 var body1=j.m_body1;var body2=j.m_body2;body1.WakeUp();body2.WakeUp();if(j.m_node1.prev)\r
9503 {j.m_node1.prev.next=j.m_node1.next;}\r
9504 if(j.m_node1.next)\r
9505 {j.m_node1.next.prev=j.m_node1.prev;}\r
9506 if(j.m_node1==body1.m_jointList)\r
9507 {body1.m_jointList=j.m_node1.next;}\r
9508 j.m_node1.prev=null;j.m_node1.next=null;if(j.m_node2.prev)\r
9509 {j.m_node2.prev.next=j.m_node2.next;}\r
9510 if(j.m_node2.next)\r
9511 {j.m_node2.next.prev=j.m_node2.prev;}\r
9512 if(j.m_node2==body2.m_jointList)\r
9513 {body2.m_jointList=j.m_node2.next;}\r
9514 j.m_node2.prev=null;j.m_node2.next=null;b2Joint.Destroy(j,this.m_blockAllocator);--this.m_jointCount;if(collideConnected==false)\r
9515 {var b=body1.m_shapeCount<body2.m_shapeCount?body1:body2;for(var s=b.m_shapeList;s;s=s.m_next)\r
9516 {s.ResetProxy(this.m_broadPhase);}}},GetGroundBody:function(){return this.m_groundBody;},step:new b2TimeStep(),Step:function(dt,iterations){var b;var other;this.step.dt=dt;this.step.iterations=iterations;if(dt>0.0)\r
9517 {this.step.inv_dt=1.0/dt;}\r
9518 else\r
9519 {this.step.inv_dt=0.0;}\r
9520 this.m_positionIterationCount=0;this.m_contactManager.CleanContactList();this.CleanBodyList();this.m_contactManager.Collide();var island=new b2Island(this.m_bodyCount,this.m_contactCount,this.m_jointCount,this.m_stackAllocator);for(b=this.m_bodyList;b!=null;b=b.m_next)\r
9521 {b.m_flags&=~b2Body.e_islandFlag;}\r
9522 for(var c=this.m_contactList;c!=null;c=c.m_next)\r
9523 {c.m_flags&=~b2Contact.e_islandFlag;}\r
9524 for(var j=this.m_jointList;j!=null;j=j.m_next)\r
9525 {j.m_islandFlag=false;}\r
9526 var stackSize=this.m_bodyCount;var stack=new Array(this.m_bodyCount);for(var k=0;k<this.m_bodyCount;k++)\r
9527 stack[k]=null;for(var seed=this.m_bodyList;seed!=null;seed=seed.m_next)\r
9528 {if(seed.m_flags&(b2Body.e_staticFlag|b2Body.e_islandFlag|b2Body.e_sleepFlag|b2Body.e_frozenFlag))\r
9529 {continue;}\r
9530 island.Clear();var stackCount=0;stack[stackCount++]=seed;seed.m_flags|=b2Body.e_islandFlag;;while(stackCount>0)\r
9531 {b=stack[--stackCount];island.AddBody(b);b.m_flags&=~b2Body.e_sleepFlag;if(b.m_flags&b2Body.e_staticFlag)\r
9532 {continue;}\r
9533 for(var cn=b.m_contactList;cn!=null;cn=cn.next)\r
9534 {if(cn.contact.m_flags&b2Contact.e_islandFlag)\r
9535 {continue;}\r
9536 island.AddContact(cn.contact);cn.contact.m_flags|=b2Contact.e_islandFlag;other=cn.other;if(other.m_flags&b2Body.e_islandFlag)\r
9537 {continue;}\r
9538 stack[stackCount++]=other;other.m_flags|=b2Body.e_islandFlag;}\r
9539 for(var jn=b.m_jointList;jn!=null;jn=jn.next)\r
9540 {if(jn.joint.m_islandFlag==true)\r
9541 {continue;}\r
9542 island.AddJoint(jn.joint);jn.joint.m_islandFlag=true;other=jn.other;if(other.m_flags&b2Body.e_islandFlag)\r
9543 {continue;}\r
9544 stack[stackCount++]=other;other.m_flags|=b2Body.e_islandFlag;}}\r
9545 island.Solve(this.step,this.m_gravity);this.m_positionIterationCount=b2Math.b2Max(this.m_positionIterationCount,b2Island.m_positionIterationCount);if(this.m_allowSleep)\r
9546 {island.UpdateSleep(dt);}\r
9547 for(var i=0;i<island.m_bodyCount;++i)\r
9548 {b=island.m_bodies[i];if(b.m_flags&b2Body.e_staticFlag)\r
9549 {b.m_flags&=~b2Body.e_islandFlag;}\r
9550 if(b.IsFrozen()&&this.m_listener)\r
9551 {var response=this.m_listener.NotifyBoundaryViolated(b);if(response==b2WorldListener.b2_destroyBody)\r
9552 {this.DestroyBody(b);b=null;island.m_bodies[i]=null;}}}}\r
9553 this.m_broadPhase.Commit();},Query:function(aabb,shapes,maxCount){var results=new Array();var count=this.m_broadPhase.QueryAABB(aabb,results,maxCount);for(var i=0;i<count;++i)\r
9554 {shapes[i]=results[i];}\r
9555 return count;},GetBodyList:function(){return this.m_bodyList;},GetJointList:function(){return this.m_jointList;},GetContactList:function(){return this.m_contactList;},m_blockAllocator:null,m_stackAllocator:null,m_broadPhase:null,m_contactManager:new b2ContactManager(),m_bodyList:null,m_contactList:null,m_jointList:null,m_bodyCount:0,m_contactCount:0,m_jointCount:0,m_bodyDestroyList:null,m_gravity:null,m_allowSleep:null,m_groundBody:null,m_listener:null,m_filter:null,m_positionIterationCount:0};b2World.s_enablePositionCorrection=1;b2World.s_enableWarmStarting=1;\r
9556 var b2WorldListener=Class.create();b2WorldListener.prototype={NotifyJointDestroyed:function(joint){},NotifyBoundaryViolated:function(body)\r
9557 {return b2WorldListener.b2_freezeBody;},initialize:function(){}};b2WorldListener.b2_freezeBody=0;b2WorldListener.b2_destroyBody=1;\r
9558 var b2JointNode=Class.create();b2JointNode.prototype={other:null,joint:null,prev:null,next:null,initialize:function(){}}\r
9559 \r
9560 var b2Joint=Class.create();b2Joint.prototype={GetType:function(){return this.m_type;},GetAnchor1:function(){return null},GetAnchor2:function(){return null},GetReactionForce:function(invTimeStep){return null},GetReactionTorque:function(invTimeStep){return 0.0},GetBody1:function()\r
9561 {return this.m_body1;},GetBody2:function()\r
9562 {return this.m_body2;},GetNext:function(){return this.m_next;},GetUserData:function(){return this.m_userData;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;},PrepareVelocitySolver:function(){},SolveVelocityConstraints:function(step){},PreparePositionSolver:function(){},SolvePositionConstraints:function(){return false},m_type:0,m_prev:null,m_next:null,m_node1:new b2JointNode(),m_node2:new b2JointNode(),m_body1:null,m_body2:null,m_islandFlag:null,m_collideConnected:null,m_userData:null};b2Joint.Create=function(def,allocator){var joint=null;switch(def.type)\r
9563 {case b2Joint.e_distanceJoint:{joint=new b2DistanceJoint(def);}\r
9564 break;case b2Joint.e_mouseJoint:{joint=new b2MouseJoint(def);}\r
9565 break;case b2Joint.e_prismaticJoint:{joint=new b2PrismaticJoint(def);}\r
9566 break;case b2Joint.e_revoluteJoint:{joint=new b2RevoluteJoint(def);}\r
9567 break;case b2Joint.e_pulleyJoint:{joint=new b2PulleyJoint(def);}\r
9568 break;case b2Joint.e_gearJoint:{joint=new b2GearJoint(def);}\r
9569 break;default:break;}\r
9570 return joint;};b2Joint.Destroy=function(joint,allocator){};b2Joint.e_unknownJoint=0;b2Joint.e_revoluteJoint=1;b2Joint.e_prismaticJoint=2;b2Joint.e_distanceJoint=3;b2Joint.e_pulleyJoint=4;b2Joint.e_mouseJoint=5;b2Joint.e_gearJoint=6;b2Joint.e_inactiveLimit=0;b2Joint.e_atLowerLimit=1;b2Joint.e_atUpperLimit=2;b2Joint.e_equalLimits=3;\r
9571 var b2JointDef=Class.create();b2JointDef.prototype={initialize:function()\r
9572 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;},type:0,userData:null,body1:null,body2:null,collideConnected:null}\r
9573 \r
9574 var b2DistanceJoint=Class.create();Object.extend(b2DistanceJoint.prototype,b2Joint.prototype);Object.extend(b2DistanceJoint.prototype,{initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_u=new b2Vec2();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=def.anchorPoint1.x-this.m_body1.m_position.x;tY=def.anchorPoint1.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint2.x-this.m_body2.m_position.x;tY=def.anchorPoint2.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.y;tX=def.anchorPoint2.x-def.anchorPoint1.x;tY=def.anchorPoint2.y-def.anchorPoint1.y;this.m_length=Math.sqrt(tX*tX+tY*tY);this.m_impulse=0.0;},PrepareVelocitySolver:function(){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;this.m_u.x=this.m_body2.m_position.x+r2X-this.m_body1.m_position.x-r1X;this.m_u.y=this.m_body2.m_position.y+r2Y-this.m_body1.m_position.y-r1Y;var length=Math.sqrt(this.m_u.x*this.m_u.x+this.m_u.y*this.m_u.y);if(length>b2Settings.b2_linearSlop)\r
9575 {this.m_u.Multiply(1.0/length);}\r
9576 else\r
9577 {this.m_u.SetZero();}\r
9578 var cr1u=(r1X*this.m_u.y-r1Y*this.m_u.x);var cr2u=(r2X*this.m_u.y-r2Y*this.m_u.x);this.m_mass=this.m_body1.m_invMass+this.m_body1.m_invI*cr1u*cr1u+this.m_body2.m_invMass+this.m_body2.m_invI*cr2u*cr2u;this.m_mass=1.0/this.m_mass;if(b2World.s_enableWarmStarting)\r
9579 {var PX=this.m_impulse*this.m_u.x;var PY=this.m_impulse*this.m_u.y;this.m_body1.m_linearVelocity.x-=this.m_body1.m_invMass*PX;this.m_body1.m_linearVelocity.y-=this.m_body1.m_invMass*PY;this.m_body1.m_angularVelocity-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_linearVelocity.x+=this.m_body2.m_invMass*PX;this.m_body2.m_linearVelocity.y+=this.m_body2.m_invMass*PY;this.m_body2.m_angularVelocity+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);}\r
9580 else\r
9581 {this.m_impulse=0.0;}},SolveVelocityConstraints:function(step){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var v1X=this.m_body1.m_linearVelocity.x+(-this.m_body1.m_angularVelocity*r1Y);var v1Y=this.m_body1.m_linearVelocity.y+(this.m_body1.m_angularVelocity*r1X);var v2X=this.m_body2.m_linearVelocity.x+(-this.m_body2.m_angularVelocity*r2Y);var v2Y=this.m_body2.m_linearVelocity.y+(this.m_body2.m_angularVelocity*r2X);var Cdot=(this.m_u.x*(v2X-v1X)+this.m_u.y*(v2Y-v1Y));var impulse=-this.m_mass*Cdot;this.m_impulse+=impulse;var PX=impulse*this.m_u.x;var PY=impulse*this.m_u.y;this.m_body1.m_linearVelocity.x-=this.m_body1.m_invMass*PX;this.m_body1.m_linearVelocity.y-=this.m_body1.m_invMass*PY;this.m_body1.m_angularVelocity-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_linearVelocity.x+=this.m_body2.m_invMass*PX;this.m_body2.m_linearVelocity.y+=this.m_body2.m_invMass*PY;this.m_body2.m_angularVelocity+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);},SolvePositionConstraints:function(){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var dX=this.m_body2.m_position.x+r2X-this.m_body1.m_position.x-r1X;var dY=this.m_body2.m_position.y+r2Y-this.m_body1.m_position.y-r1Y;var length=Math.sqrt(dX*dX+dY*dY);dX/=length;dY/=length;var C=length-this.m_length;C=b2Math.b2Clamp(C,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);var impulse=-this.m_mass*C;this.m_u.Set(dX,dY);var PX=impulse*this.m_u.x;var PY=impulse*this.m_u.y;this.m_body1.m_position.x-=this.m_body1.m_invMass*PX;this.m_body1.m_position.y-=this.m_body1.m_invMass*PY;this.m_body1.m_rotation-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_position.x+=this.m_body2.m_invMass*PX;this.m_body2.m_position.y+=this.m_body2.m_invMass*PY;this.m_body2.m_rotation+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);this.m_body1.m_R.Set(this.m_body1.m_rotation);this.m_body2.m_R.Set(this.m_body2.m_rotation);return b2Math.b2Abs(C)<b2Settings.b2_linearSlop;},GetAnchor1:function(){return b2Math.AddVV(this.m_body1.m_position,b2Math.b2MulMV(this.m_body1.m_R,this.m_localAnchor1));},GetAnchor2:function(){return b2Math.AddVV(this.m_body2.m_position,b2Math.b2MulMV(this.m_body2.m_R,this.m_localAnchor2));},GetReactionForce:function(invTimeStep)\r
9582 {var F=new b2Vec2();F.SetV(this.m_u);F.Multiply(this.m_impulse*invTimeStep);return F;},GetReactionTorque:function(invTimeStep)\r
9583 {return 0.0;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_u:new b2Vec2(),m_impulse:null,m_mass:null,m_length:null});\r
9584 var b2DistanceJointDef=Class.create();Object.extend(b2DistanceJointDef.prototype,b2JointDef.prototype);Object.extend(b2DistanceJointDef.prototype,{initialize:function()\r
9585 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.anchorPoint1=new b2Vec2();this.anchorPoint2=new b2Vec2();this.type=b2Joint.e_distanceJoint;},anchorPoint1:new b2Vec2(),anchorPoint2:new b2Vec2()});\r
9586 var b2Jacobian=Class.create();b2Jacobian.prototype={linear1:new b2Vec2(),angular1:null,linear2:new b2Vec2(),angular2:null,SetZero:function(){this.linear1.SetZero();this.angular1=0.0;this.linear2.SetZero();this.angular2=0.0;},Set:function(x1,a1,x2,a2){this.linear1.SetV(x1);this.angular1=a1;this.linear2.SetV(x2);this.angular2=a2;},Compute:function(x1,a1,x2,a2){return(this.linear1.x*x1.x+this.linear1.y*x1.y)+this.angular1*a1+(this.linear2.x*x2.x+this.linear2.y*x2.y)+this.angular2*a2;},initialize:function(){this.linear1=new b2Vec2();this.linear2=new b2Vec2();}};\r
9587 var b2GearJoint=Class.create();Object.extend(b2GearJoint.prototype,b2Joint.prototype);Object.extend(b2GearJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetReactionForce:function(invTimeStep){return new b2Vec2();},GetReactionTorque:function(invTimeStep){return 0.0;},GetRatio:function(){return this.m_ratio;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_groundAnchor1=new b2Vec2();this.m_groundAnchor2=new b2Vec2();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_J=new b2Jacobian();this.m_revolute1=null;this.m_prismatic1=null;this.m_revolute2=null;this.m_prismatic2=null;var coordinate1;var coordinate2;this.m_ground1=def.joint1.m_body1;this.m_body1=def.joint1.m_body2;if(def.joint1.m_type==b2Joint.e_revoluteJoint)\r
9588 {this.m_revolute1=def.joint1;this.m_groundAnchor1.SetV(this.m_revolute1.m_localAnchor1);this.m_localAnchor1.SetV(this.m_revolute1.m_localAnchor2);coordinate1=this.m_revolute1.GetJointAngle();}\r
9589 else\r
9590 {this.m_prismatic1=def.joint1;this.m_groundAnchor1.SetV(this.m_prismatic1.m_localAnchor1);this.m_localAnchor1.SetV(this.m_prismatic1.m_localAnchor2);coordinate1=this.m_prismatic1.GetJointTranslation();}\r
9591 this.m_ground2=def.joint2.m_body1;this.m_body2=def.joint2.m_body2;if(def.joint2.m_type==b2Joint.e_revoluteJoint)\r
9592 {this.m_revolute2=def.joint2;this.m_groundAnchor2.SetV(this.m_revolute2.m_localAnchor1);this.m_localAnchor2.SetV(this.m_revolute2.m_localAnchor2);coordinate2=this.m_revolute2.GetJointAngle();}\r
9593 else\r
9594 {this.m_prismatic2=def.joint2;this.m_groundAnchor2.SetV(this.m_prismatic2.m_localAnchor1);this.m_localAnchor2.SetV(this.m_prismatic2.m_localAnchor2);coordinate2=this.m_prismatic2.GetJointTranslation();}\r
9595 this.m_ratio=def.ratio;this.m_constant=coordinate1+this.m_ratio*coordinate2;this.m_impulse=0.0;},PrepareVelocitySolver:function(){var g1=this.m_ground1;var g2=this.m_ground2;var b1=this.m_body1;var b2=this.m_body2;var ugX;var ugY;var rX;var rY;var tMat;var tVec;var crug;var K=0.0;this.m_J.SetZero();if(this.m_revolute1)\r
9596 {this.m_J.angular1=-1.0;K+=b1.m_invI;}\r
9597 else\r
9598 {tMat=g1.m_R;tVec=this.m_prismatic1.m_localXAxis1;ugX=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;ugY=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b1.m_R;rX=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;rY=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;crug=rX*ugY-rY*ugX;this.m_J.linear1.Set(-ugX,-ugY);this.m_J.angular1=-crug;K+=b1.m_invMass+b1.m_invI*crug*crug;}\r
9599 if(this.m_revolute2)\r
9600 {this.m_J.angular2=-this.m_ratio;K+=this.m_ratio*this.m_ratio*b2.m_invI;}\r
9601 else\r
9602 {tMat=g2.m_R;tVec=this.m_prismatic2.m_localXAxis1;ugX=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;ugY=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b2.m_R;rX=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;rY=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;crug=rX*ugY-rY*ugX;this.m_J.linear2.Set(-this.m_ratio*ugX,-this.m_ratio*ugY);this.m_J.angular2=-this.m_ratio*crug;K+=this.m_ratio*this.m_ratio*(b2.m_invMass+b2.m_invI*crug*crug);}\r
9603 this.m_mass=1.0/K;b1.m_linearVelocity.x+=b1.m_invMass*this.m_impulse*this.m_J.linear1.x;b1.m_linearVelocity.y+=b1.m_invMass*this.m_impulse*this.m_J.linear1.y;b1.m_angularVelocity+=b1.m_invI*this.m_impulse*this.m_J.angular1;b2.m_linearVelocity.x+=b2.m_invMass*this.m_impulse*this.m_J.linear2.x;b2.m_linearVelocity.y+=b2.m_invMass*this.m_impulse*this.m_J.linear2.y;b2.m_angularVelocity+=b2.m_invI*this.m_impulse*this.m_J.angular2;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var Cdot=this.m_J.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var impulse=-this.m_mass*Cdot;this.m_impulse+=impulse;b1.m_linearVelocity.x+=b1.m_invMass*impulse*this.m_J.linear1.x;b1.m_linearVelocity.y+=b1.m_invMass*impulse*this.m_J.linear1.y;b1.m_angularVelocity+=b1.m_invI*impulse*this.m_J.angular1;b2.m_linearVelocity.x+=b2.m_invMass*impulse*this.m_J.linear2.x;b2.m_linearVelocity.y+=b2.m_invMass*impulse*this.m_J.linear2.y;b2.m_angularVelocity+=b2.m_invI*impulse*this.m_J.angular2;},SolvePositionConstraints:function(){var linearError=0.0;var b1=this.m_body1;var b2=this.m_body2;var coordinate1;var coordinate2;if(this.m_revolute1)\r
9604 {coordinate1=this.m_revolute1.GetJointAngle();}\r
9605 else\r
9606 {coordinate1=this.m_prismatic1.GetJointTranslation();}\r
9607 if(this.m_revolute2)\r
9608 {coordinate2=this.m_revolute2.GetJointAngle();}\r
9609 else\r
9610 {coordinate2=this.m_prismatic2.GetJointTranslation();}\r
9611 var C=this.m_constant-(coordinate1+this.m_ratio*coordinate2);var impulse=-this.m_mass*C;b1.m_position.x+=b1.m_invMass*impulse*this.m_J.linear1.x;b1.m_position.y+=b1.m_invMass*impulse*this.m_J.linear1.y;b1.m_rotation+=b1.m_invI*impulse*this.m_J.angular1;b2.m_position.x+=b2.m_invMass*impulse*this.m_J.linear2.x;b2.m_position.y+=b2.m_invMass*impulse*this.m_J.linear2.y;b2.m_rotation+=b2.m_invI*impulse*this.m_J.angular2;b1.m_R.Set(b1.m_rotation);b2.m_R.Set(b2.m_rotation);return linearError<b2Settings.b2_linearSlop;},m_ground1:null,m_ground2:null,m_revolute1:null,m_prismatic1:null,m_revolute2:null,m_prismatic2:null,m_groundAnchor1:new b2Vec2(),m_groundAnchor2:new b2Vec2(),m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_J:new b2Jacobian(),m_constant:null,m_ratio:null,m_mass:null,m_impulse:null});\r
9612 var b2GearJointDef=Class.create();Object.extend(b2GearJointDef.prototype,b2JointDef.prototype);Object.extend(b2GearJointDef.prototype,{initialize:function()\r
9613 {this.type=b2Joint.e_gearJoint;this.joint1=null;this.joint2=null;this.ratio=1.0;},joint1:null,joint2:null,ratio:null});\r
9614 var b2MouseJoint=Class.create();Object.extend(b2MouseJoint.prototype,b2Joint.prototype);Object.extend(b2MouseJoint.prototype,{GetAnchor1:function(){return this.m_target;},GetAnchor2:function(){var tVec=b2Math.b2MulMV(this.m_body2.m_R,this.m_localAnchor);tVec.Add(this.m_body2.m_position);return tVec;},GetReactionForce:function(invTimeStep)\r
9615 {var F=new b2Vec2();F.SetV(this.m_impulse);F.Multiply(invTimeStep);return F;},GetReactionTorque:function(invTimeStep)\r
9616 {return 0.0;},SetTarget:function(target){this.m_body2.WakeUp();this.m_target=target;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.K=new b2Mat22();this.K1=new b2Mat22();this.K2=new b2Mat22();this.m_localAnchor=new b2Vec2();this.m_target=new b2Vec2();this.m_impulse=new b2Vec2();this.m_ptpMass=new b2Mat22();this.m_C=new b2Vec2();this.m_target.SetV(def.target);var tX=this.m_target.x-this.m_body2.m_position.x;var tY=this.m_target.y-this.m_body2.m_position.y;this.m_localAnchor.x=(tX*this.m_body2.m_R.col1.x+tY*this.m_body2.m_R.col1.y);this.m_localAnchor.y=(tX*this.m_body2.m_R.col2.x+tY*this.m_body2.m_R.col2.y);this.m_maxForce=def.maxForce;this.m_impulse.SetZero();var mass=this.m_body2.m_mass;var omega=2.0*b2Settings.b2_pi*def.frequencyHz;var d=2.0*mass*def.dampingRatio*omega;var k=mass*omega*omega;this.m_gamma=1.0/(d+def.timeStep*k);this.m_beta=def.timeStep*k/(d+def.timeStep*k);},K:new b2Mat22(),K1:new b2Mat22(),K2:new b2Mat22(),PrepareVelocitySolver:function(){var b=this.m_body2;var tMat;tMat=b.m_R;var rX=tMat.col1.x*this.m_localAnchor.x+tMat.col2.x*this.m_localAnchor.y;var rY=tMat.col1.y*this.m_localAnchor.x+tMat.col2.y*this.m_localAnchor.y;var invMass=b.m_invMass;var invI=b.m_invI;this.K1.col1.x=invMass;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass;this.K2.col1.x=invI*rY*rY;this.K2.col2.x=-invI*rX*rY;this.K2.col1.y=-invI*rX*rY;this.K2.col2.y=invI*rX*rX;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.col1.x+=this.m_gamma;this.K.col2.y+=this.m_gamma;this.K.Invert(this.m_ptpMass);this.m_C.x=b.m_position.x+rX-this.m_target.x;this.m_C.y=b.m_position.y+rY-this.m_target.y;b.m_angularVelocity*=0.98;var PX=this.m_impulse.x;var PY=this.m_impulse.y;b.m_linearVelocity.x+=invMass*PX;b.m_linearVelocity.y+=invMass*PY;b.m_angularVelocity+=invI*(rX*PY-rY*PX);},SolveVelocityConstraints:function(step){var body=this.m_body2;var tMat;tMat=body.m_R;var rX=tMat.col1.x*this.m_localAnchor.x+tMat.col2.x*this.m_localAnchor.y;var rY=tMat.col1.y*this.m_localAnchor.x+tMat.col2.y*this.m_localAnchor.y;var CdotX=body.m_linearVelocity.x+(-body.m_angularVelocity*rY);var CdotY=body.m_linearVelocity.y+(body.m_angularVelocity*rX);tMat=this.m_ptpMass;var tX=CdotX+(this.m_beta*step.inv_dt)*this.m_C.x+this.m_gamma*this.m_impulse.x;var tY=CdotY+(this.m_beta*step.inv_dt)*this.m_C.y+this.m_gamma*this.m_impulse.y;var impulseX=-(tMat.col1.x*tX+tMat.col2.x*tY);var impulseY=-(tMat.col1.y*tX+tMat.col2.y*tY);var oldImpulseX=this.m_impulse.x;var oldImpulseY=this.m_impulse.y;this.m_impulse.x+=impulseX;this.m_impulse.y+=impulseY;var length=this.m_impulse.Length();if(length>step.dt*this.m_maxForce)\r
9617 {this.m_impulse.Multiply(step.dt*this.m_maxForce/length);}\r
9618 impulseX=this.m_impulse.x-oldImpulseX;impulseY=this.m_impulse.y-oldImpulseY;body.m_linearVelocity.x+=body.m_invMass*impulseX;body.m_linearVelocity.y+=body.m_invMass*impulseY;body.m_angularVelocity+=body.m_invI*(rX*impulseY-rY*impulseX);},SolvePositionConstraints:function(){return true;},m_localAnchor:new b2Vec2(),m_target:new b2Vec2(),m_impulse:new b2Vec2(),m_ptpMass:new b2Mat22(),m_C:new b2Vec2(),m_maxForce:null,m_beta:null,m_gamma:null});\r
9619 var b2MouseJointDef=Class.create();Object.extend(b2MouseJointDef.prototype,b2JointDef.prototype);Object.extend(b2MouseJointDef.prototype,{initialize:function()\r
9620 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.target=new b2Vec2();this.type=b2Joint.e_mouseJoint;this.maxForce=0.0;this.frequencyHz=5.0;this.dampingRatio=0.7;this.timeStep=1.0/60.0;},target:new b2Vec2(),maxForce:null,frequencyHz:null,dampingRatio:null,timeStep:null});\r
9621 var b2PrismaticJoint=Class.create();Object.extend(b2PrismaticJoint.prototype,b2Joint.prototype);Object.extend(b2PrismaticJoint.prototype,{GetAnchor1:function(){var b1=this.m_body1;var tVec=new b2Vec2();tVec.SetV(this.m_localAnchor1);tVec.MulM(b1.m_R);tVec.Add(b1.m_position);return tVec;},GetAnchor2:function(){var b2=this.m_body2;var tVec=new b2Vec2();tVec.SetV(this.m_localAnchor2);tVec.MulM(b2.m_R);tVec.Add(b2.m_position);return tVec;},GetJointTranslation:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var translation=ax1X*dX+ax1Y*dY;return translation;},GetJointSpeed:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var v1=b1.m_linearVelocity;var v2=b2.m_linearVelocity;var w1=b1.m_angularVelocity;var w2=b2.m_angularVelocity;var speed=(dX*(-w1*ax1Y)+dY*(w1*ax1X))+(ax1X*(((v2.x+(-w2*r2Y))-v1.x)-(-w1*r1Y))+ax1Y*(((v2.y+(w2*r2X))-v1.y)-(w1*r1X)));return speed;},GetMotorForce:function(invTimeStep){return invTimeStep*this.m_motorImpulse;},SetMotorSpeed:function(speed)\r
9622 {this.m_motorSpeed=speed;},SetMotorForce:function(force)\r
9623 {this.m_maxMotorForce=force;},GetReactionForce:function(invTimeStep)\r
9624 {var tImp=invTimeStep*this.m_limitImpulse;var tMat;tMat=this.m_body1.m_R;var ax1X=tImp*(tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y);var ax1Y=tImp*(tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y);var ay1X=tImp*(tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y);var ay1Y=tImp*(tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y);return new b2Vec2(ax1X+ay1X,ax1Y+ay1Y);},GetReactionTorque:function(invTimeStep)\r
9625 {return invTimeStep*this.m_angularImpulse;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_localXAxis1=new b2Vec2();this.m_localYAxis1=new b2Vec2();this.m_linearJacobian=new b2Jacobian();this.m_motorJacobian=new b2Jacobian();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=(def.anchorPoint.x-this.m_body1.m_position.x);tY=(def.anchorPoint.y-this.m_body1.m_position.y);this.m_localAnchor1.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));tMat=this.m_body2.m_R;tX=(def.anchorPoint.x-this.m_body2.m_position.x);tY=(def.anchorPoint.y-this.m_body2.m_position.y);this.m_localAnchor2.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));tMat=this.m_body1.m_R;tX=def.axis.x;tY=def.axis.y;this.m_localXAxis1.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));this.m_localYAxis1.x=-this.m_localXAxis1.y;this.m_localYAxis1.y=this.m_localXAxis1.x;this.m_initialAngle=this.m_body2.m_rotation-this.m_body1.m_rotation;this.m_linearJacobian.SetZero();this.m_linearMass=0.0;this.m_linearImpulse=0.0;this.m_angularMass=0.0;this.m_angularImpulse=0.0;this.m_motorJacobian.SetZero();this.m_motorMass=0.0;this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;this.m_limitPositionImpulse=0.0;this.m_lowerTranslation=def.lowerTranslation;this.m_upperTranslation=def.upperTranslation;this.m_maxMotorForce=def.motorForce;this.m_motorSpeed=def.motorSpeed;this.m_enableLimit=def.enableLimit;this.m_enableMotor=def.enableMotor;},PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;tMat=b1.m_R;var ay1X=tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y;var ay1Y=tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y;var eX=b2.m_position.x+r2X-b1.m_position.x;var eY=b2.m_position.y+r2Y-b1.m_position.y;this.m_linearJacobian.linear1.x=-ay1X;this.m_linearJacobian.linear1.y=-ay1Y;this.m_linearJacobian.linear2.x=ay1X;this.m_linearJacobian.linear2.y=ay1Y;this.m_linearJacobian.angular1=-(eX*ay1Y-eY*ay1X);this.m_linearJacobian.angular2=r2X*ay1Y-r2Y*ay1X;this.m_linearMass=invMass1+invI1*this.m_linearJacobian.angular1*this.m_linearJacobian.angular1+\r
9626 invMass2+invI2*this.m_linearJacobian.angular2*this.m_linearJacobian.angular2;this.m_linearMass=1.0/this.m_linearMass;this.m_angularMass=1.0/(invI1+invI2);if(this.m_enableLimit||this.m_enableMotor)\r
9627 {tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;this.m_motorJacobian.linear1.x=-ax1X;this.m_motorJacobian.linear1.y=-ax1Y;this.m_motorJacobian.linear2.x=ax1X;this.m_motorJacobian.linear2.y=ax1Y;this.m_motorJacobian.angular1=-(eX*ax1Y-eY*ax1X);this.m_motorJacobian.angular2=r2X*ax1Y-r2Y*ax1X;this.m_motorMass=invMass1+invI1*this.m_motorJacobian.angular1*this.m_motorJacobian.angular1+\r
9628 invMass2+invI2*this.m_motorJacobian.angular2*this.m_motorJacobian.angular2;this.m_motorMass=1.0/this.m_motorMass;if(this.m_enableLimit)\r
9629 {var dX=eX-r1X;var dY=eY-r1Y;var jointTranslation=ax1X*dX+ax1Y*dY;if(b2Math.b2Abs(this.m_upperTranslation-this.m_lowerTranslation)<2.0*b2Settings.b2_linearSlop)\r
9630 {this.m_limitState=b2Joint.e_equalLimits;}\r
9631 else if(jointTranslation<=this.m_lowerTranslation)\r
9632 {if(this.m_limitState!=b2Joint.e_atLowerLimit)\r
9633 {this.m_limitImpulse=0.0;}\r
9634 this.m_limitState=b2Joint.e_atLowerLimit;}\r
9635 else if(jointTranslation>=this.m_upperTranslation)\r
9636 {if(this.m_limitState!=b2Joint.e_atUpperLimit)\r
9637 {this.m_limitImpulse=0.0;}\r
9638 this.m_limitState=b2Joint.e_atUpperLimit;}\r
9639 else\r
9640 {this.m_limitState=b2Joint.e_inactiveLimit;this.m_limitImpulse=0.0;}}}\r
9641 if(this.m_enableMotor==false)\r
9642 {this.m_motorImpulse=0.0;}\r
9643 if(this.m_enableLimit==false)\r
9644 {this.m_limitImpulse=0.0;}\r
9645 if(b2World.s_enableWarmStarting)\r
9646 {var P1X=this.m_linearImpulse*this.m_linearJacobian.linear1.x+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear1.x;var P1Y=this.m_linearImpulse*this.m_linearJacobian.linear1.y+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear1.y;var P2X=this.m_linearImpulse*this.m_linearJacobian.linear2.x+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear2.x;var P2Y=this.m_linearImpulse*this.m_linearJacobian.linear2.y+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear2.y;var L1=this.m_linearImpulse*this.m_linearJacobian.angular1-this.m_angularImpulse+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.angular1;var L2=this.m_linearImpulse*this.m_linearJacobian.angular2+this.m_angularImpulse+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.angular2;b1.m_linearVelocity.x+=invMass1*P1X;b1.m_linearVelocity.y+=invMass1*P1Y;b1.m_angularVelocity+=invI1*L1;b2.m_linearVelocity.x+=invMass2*P2X;b2.m_linearVelocity.y+=invMass2*P2Y;b2.m_angularVelocity+=invI2*L2;}\r
9647 else\r
9648 {this.m_linearImpulse=0.0;this.m_angularImpulse=0.0;this.m_limitImpulse=0.0;this.m_motorImpulse=0.0;}\r
9649 this.m_limitPositionImpulse=0.0;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;var oldLimitImpulse;var linearCdot=this.m_linearJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var linearImpulse=-this.m_linearMass*linearCdot;this.m_linearImpulse+=linearImpulse;b1.m_linearVelocity.x+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.y;b1.m_angularVelocity+=invI1*linearImpulse*this.m_linearJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.y;b2.m_angularVelocity+=invI2*linearImpulse*this.m_linearJacobian.angular2;var angularCdot=b2.m_angularVelocity-b1.m_angularVelocity;var angularImpulse=-this.m_angularMass*angularCdot;this.m_angularImpulse+=angularImpulse;b1.m_angularVelocity-=invI1*angularImpulse;b2.m_angularVelocity+=invI2*angularImpulse;if(this.m_enableMotor&&this.m_limitState!=b2Joint.e_equalLimits)\r
9650 {var motorCdot=this.m_motorJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity)-this.m_motorSpeed;var motorImpulse=-this.m_motorMass*motorCdot;var oldMotorImpulse=this.m_motorImpulse;this.m_motorImpulse=b2Math.b2Clamp(this.m_motorImpulse+motorImpulse,-step.dt*this.m_maxMotorForce,step.dt*this.m_maxMotorForce);motorImpulse=this.m_motorImpulse-oldMotorImpulse;b1.m_linearVelocity.x+=(invMass1*motorImpulse)*this.m_motorJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*motorImpulse)*this.m_motorJacobian.linear1.y;b1.m_angularVelocity+=invI1*motorImpulse*this.m_motorJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*motorImpulse)*this.m_motorJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*motorImpulse)*this.m_motorJacobian.linear2.y;b2.m_angularVelocity+=invI2*motorImpulse*this.m_motorJacobian.angular2;}\r
9651 if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)\r
9652 {var limitCdot=this.m_motorJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var limitImpulse=-this.m_motorMass*limitCdot;if(this.m_limitState==b2Joint.e_equalLimits)\r
9653 {this.m_limitImpulse+=limitImpulse;}\r
9654 else if(this.m_limitState==b2Joint.e_atLowerLimit)\r
9655 {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Max(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}\r
9656 else if(this.m_limitState==b2Joint.e_atUpperLimit)\r
9657 {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Min(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}\r
9658 b1.m_linearVelocity.x+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.y;b1.m_angularVelocity+=invI1*limitImpulse*this.m_motorJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.y;b2.m_angularVelocity+=invI2*limitImpulse*this.m_motorJacobian.angular2;}},SolvePositionConstraints:function(){var limitC;var oldLimitImpulse;var b1=this.m_body1;var b2=this.m_body2;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ay1X=tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y;var ay1Y=tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y;var linearC=ay1X*dX+ay1Y*dY;linearC=b2Math.b2Clamp(linearC,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);var linearImpulse=-this.m_linearMass*linearC;b1.m_position.x+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.x;b1.m_position.y+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.y;b1.m_rotation+=invI1*linearImpulse*this.m_linearJacobian.angular1;b2.m_position.x+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.x;b2.m_position.y+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.y;b2.m_rotation+=invI2*linearImpulse*this.m_linearJacobian.angular2;var positionError=b2Math.b2Abs(linearC);var angularC=b2.m_rotation-b1.m_rotation-this.m_initialAngle;angularC=b2Math.b2Clamp(angularC,-b2Settings.b2_maxAngularCorrection,b2Settings.b2_maxAngularCorrection);var angularImpulse=-this.m_angularMass*angularC;b1.m_rotation-=b1.m_invI*angularImpulse;b1.m_R.Set(b1.m_rotation);b2.m_rotation+=b2.m_invI*angularImpulse;b2.m_R.Set(b2.m_rotation);var angularError=b2Math.b2Abs(angularC);if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)\r
9659 {tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;dX=p2X-p1X;dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var translation=(ax1X*dX+ax1Y*dY);var limitImpulse=0.0;if(this.m_limitState==b2Joint.e_equalLimits)\r
9660 {limitC=b2Math.b2Clamp(translation,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);limitImpulse=-this.m_motorMass*limitC;positionError=b2Math.b2Max(positionError,b2Math.b2Abs(angularC));}\r
9661 else if(this.m_limitState==b2Joint.e_atLowerLimit)\r
9662 {limitC=translation-this.m_lowerTranslation;positionError=b2Math.b2Max(positionError,-limitC);limitC=b2Math.b2Clamp(limitC+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Max(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}\r
9663 else if(this.m_limitState==b2Joint.e_atUpperLimit)\r
9664 {limitC=translation-this.m_upperTranslation;positionError=b2Math.b2Max(positionError,limitC);limitC=b2Math.b2Clamp(limitC-b2Settings.b2_linearSlop,0.0,b2Settings.b2_maxLinearCorrection);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Min(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}\r
9665 b1.m_position.x+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.x;b1.m_position.y+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.y;b1.m_rotation+=invI1*limitImpulse*this.m_motorJacobian.angular1;b1.m_R.Set(b1.m_rotation);b2.m_position.x+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.x;b2.m_position.y+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.y;b2.m_rotation+=invI2*limitImpulse*this.m_motorJacobian.angular2;b2.m_R.Set(b2.m_rotation);}\r
9666 return positionError<=b2Settings.b2_linearSlop&&angularError<=b2Settings.b2_angularSlop;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_localXAxis1:new b2Vec2(),m_localYAxis1:new b2Vec2(),m_initialAngle:null,m_linearJacobian:new b2Jacobian(),m_linearMass:null,m_linearImpulse:null,m_angularMass:null,m_angularImpulse:null,m_motorJacobian:new b2Jacobian(),m_motorMass:null,m_motorImpulse:null,m_limitImpulse:null,m_limitPositionImpulse:null,m_lowerTranslation:null,m_upperTranslation:null,m_maxMotorForce:null,m_motorSpeed:null,m_enableLimit:null,m_enableMotor:null,m_limitState:0});\r
9667 var b2PrismaticJointDef=Class.create();Object.extend(b2PrismaticJointDef.prototype,b2JointDef.prototype);Object.extend(b2PrismaticJointDef.prototype,{initialize:function()\r
9668 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.type=b2Joint.e_prismaticJoint;this.anchorPoint=new b2Vec2(0.0,0.0);this.axis=new b2Vec2(0.0,0.0);this.lowerTranslation=0.0;this.upperTranslation=0.0;this.motorForce=0.0;this.motorSpeed=0.0;this.enableLimit=false;this.enableMotor=false;},anchorPoint:null,axis:null,lowerTranslation:null,upperTranslation:null,motorForce:null,motorSpeed:null,enableLimit:null,enableMotor:null});\r
9669 var b2PulleyJoint=Class.create();Object.extend(b2PulleyJoint.prototype,b2Joint.prototype);Object.extend(b2PulleyJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetGroundPoint1:function(){return new b2Vec2(this.m_ground.m_position.x+this.m_groundAnchor1.x,this.m_ground.m_position.y+this.m_groundAnchor1.y);},GetGroundPoint2:function(){return new b2Vec2(this.m_ground.m_position.x+this.m_groundAnchor2.x,this.m_ground.m_position.y+this.m_groundAnchor2.y);},GetReactionForce:function(invTimeStep){return new b2Vec2();},GetReactionTorque:function(invTimeStep){return 0.0;},GetLength1:function(){var tMat;tMat=this.m_body1.m_R;var pX=this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y);var pY=this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y);var dX=pX-(this.m_ground.m_position.x+this.m_groundAnchor1.x);var dY=pY-(this.m_ground.m_position.y+this.m_groundAnchor1.y);return Math.sqrt(dX*dX+dY*dY);},GetLength2:function(){var tMat;tMat=this.m_body2.m_R;var pX=this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y);var pY=this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y);var dX=pX-(this.m_ground.m_position.x+this.m_groundAnchor2.x);var dY=pY-(this.m_ground.m_position.y+this.m_groundAnchor2.y);return Math.sqrt(dX*dX+dY*dY);},GetRatio:function(){return this.m_ratio;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_groundAnchor1=new b2Vec2();this.m_groundAnchor2=new b2Vec2();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_u1=new b2Vec2();this.m_u2=new b2Vec2();var tMat;var tX;var tY;this.m_ground=this.m_body1.m_world.m_groundBody;this.m_groundAnchor1.x=def.groundPoint1.x-this.m_ground.m_position.x;this.m_groundAnchor1.y=def.groundPoint1.y-this.m_ground.m_position.y;this.m_groundAnchor2.x=def.groundPoint2.x-this.m_ground.m_position.x;this.m_groundAnchor2.y=def.groundPoint2.y-this.m_ground.m_position.y;tMat=this.m_body1.m_R;tX=def.anchorPoint1.x-this.m_body1.m_position.x;tY=def.anchorPoint1.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint2.x-this.m_body2.m_position.x;tY=def.anchorPoint2.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.y;this.m_ratio=def.ratio;tX=def.groundPoint1.x-def.anchorPoint1.x;tY=def.groundPoint1.y-def.anchorPoint1.y;var d1Len=Math.sqrt(tX*tX+tY*tY);tX=def.groundPoint2.x-def.anchorPoint2.x;tY=def.groundPoint2.y-def.anchorPoint2.y;var d2Len=Math.sqrt(tX*tX+tY*tY);var length1=b2Math.b2Max(0.5*b2PulleyJoint.b2_minPulleyLength,d1Len);var length2=b2Math.b2Max(0.5*b2PulleyJoint.b2_minPulleyLength,d2Len);this.m_constant=length1+this.m_ratio*length2;this.m_maxLength1=b2Math.b2Clamp(def.maxLength1,length1,this.m_constant-this.m_ratio*b2PulleyJoint.b2_minPulleyLength);this.m_maxLength2=b2Math.b2Clamp(def.maxLength2,length2,(this.m_constant-b2PulleyJoint.b2_minPulleyLength)/this.m_ratio);this.m_pulleyImpulse=0.0;this.m_limitImpulse1=0.0;this.m_limitImpulse2=0.0;},PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var s1X=this.m_ground.m_position.x+this.m_groundAnchor1.x;var s1Y=this.m_ground.m_position.y+this.m_groundAnchor1.y;var s2X=this.m_ground.m_position.x+this.m_groundAnchor2.x;var s2Y=this.m_ground.m_position.y+this.m_groundAnchor2.y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);this.m_u2.Set(p2X-s2X,p2Y-s2Y);var length1=this.m_u1.Length();var length2=this.m_u2.Length();if(length1>b2Settings.b2_linearSlop)\r
9670 {this.m_u1.Multiply(1.0/length1);}\r
9671 else\r
9672 {this.m_u1.SetZero();}\r
9673 if(length2>b2Settings.b2_linearSlop)\r
9674 {this.m_u2.Multiply(1.0/length2);}\r
9675 else\r
9676 {this.m_u2.SetZero();}\r
9677 if(length1<this.m_maxLength1)\r
9678 {this.m_limitState1=b2Joint.e_inactiveLimit;this.m_limitImpulse1=0.0;}\r
9679 else\r
9680 {this.m_limitState1=b2Joint.e_atUpperLimit;this.m_limitPositionImpulse1=0.0;}\r
9681 if(length2<this.m_maxLength2)\r
9682 {this.m_limitState2=b2Joint.e_inactiveLimit;this.m_limitImpulse2=0.0;}\r
9683 else\r
9684 {this.m_limitState2=b2Joint.e_atUpperLimit;this.m_limitPositionImpulse2=0.0;}\r
9685 var cr1u1=r1X*this.m_u1.y-r1Y*this.m_u1.x;var cr2u2=r2X*this.m_u2.y-r2Y*this.m_u2.x;this.m_limitMass1=b1.m_invMass+b1.m_invI*cr1u1*cr1u1;this.m_limitMass2=b2.m_invMass+b2.m_invI*cr2u2*cr2u2;this.m_pulleyMass=this.m_limitMass1+this.m_ratio*this.m_ratio*this.m_limitMass2;this.m_limitMass1=1.0/this.m_limitMass1;this.m_limitMass2=1.0/this.m_limitMass2;this.m_pulleyMass=1.0/this.m_pulleyMass;var P1X=(-this.m_pulleyImpulse-this.m_limitImpulse1)*this.m_u1.x;var P1Y=(-this.m_pulleyImpulse-this.m_limitImpulse1)*this.m_u1.y;var P2X=(-this.m_ratio*this.m_pulleyImpulse-this.m_limitImpulse2)*this.m_u2.x;var P2Y=(-this.m_ratio*this.m_pulleyImpulse-this.m_limitImpulse2)*this.m_u2.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var v1X;var v1Y;var v2X;var v2Y;var P1X;var P1Y;var P2X;var P2Y;var Cdot;var impulse;var oldLimitImpulse;v1X=b1.m_linearVelocity.x+(-b1.m_angularVelocity*r1Y);v1Y=b1.m_linearVelocity.y+(b1.m_angularVelocity*r1X);v2X=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y);v2Y=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X);Cdot=-(this.m_u1.x*v1X+this.m_u1.y*v1Y)-this.m_ratio*(this.m_u2.x*v2X+this.m_u2.y*v2Y);impulse=-this.m_pulleyMass*Cdot;this.m_pulleyImpulse+=impulse;P1X=-impulse*this.m_u1.x;P1Y=-impulse*this.m_u1.y;P2X=-this.m_ratio*impulse*this.m_u2.x;P2Y=-this.m_ratio*impulse*this.m_u2.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);if(this.m_limitState1==b2Joint.e_atUpperLimit)\r
9686 {v1X=b1.m_linearVelocity.x+(-b1.m_angularVelocity*r1Y);v1Y=b1.m_linearVelocity.y+(b1.m_angularVelocity*r1X);Cdot=-(this.m_u1.x*v1X+this.m_u1.y*v1Y);impulse=-this.m_limitMass1*Cdot;oldLimitImpulse=this.m_limitImpulse1;this.m_limitImpulse1=b2Math.b2Max(0.0,this.m_limitImpulse1+impulse);impulse=this.m_limitImpulse1-oldLimitImpulse;P1X=-impulse*this.m_u1.x;P1Y=-impulse*this.m_u1.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);}\r
9687 if(this.m_limitState2==b2Joint.e_atUpperLimit)\r
9688 {v2X=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y);v2Y=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X);Cdot=-(this.m_u2.x*v2X+this.m_u2.y*v2Y);impulse=-this.m_limitMass2*Cdot;oldLimitImpulse=this.m_limitImpulse2;this.m_limitImpulse2=b2Math.b2Max(0.0,this.m_limitImpulse2+impulse);impulse=this.m_limitImpulse2-oldLimitImpulse;P2X=-impulse*this.m_u2.x;P2Y=-impulse*this.m_u2.y;b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);}},SolvePositionConstraints:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;var s1X=this.m_ground.m_position.x+this.m_groundAnchor1.x;var s1Y=this.m_ground.m_position.y+this.m_groundAnchor1.y;var s2X=this.m_ground.m_position.x+this.m_groundAnchor2.x;var s2Y=this.m_ground.m_position.y+this.m_groundAnchor2.y;var r1X;var r1Y;var r2X;var r2Y;var p1X;var p1Y;var p2X;var p2Y;var length1;var length2;var C;var impulse;var oldLimitPositionImpulse;var linearError=0.0;{tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);this.m_u2.Set(p2X-s2X,p2Y-s2Y);length1=this.m_u1.Length();length2=this.m_u2.Length();if(length1>b2Settings.b2_linearSlop)\r
9689 {this.m_u1.Multiply(1.0/length1);}\r
9690 else\r
9691 {this.m_u1.SetZero();}\r
9692 if(length2>b2Settings.b2_linearSlop)\r
9693 {this.m_u2.Multiply(1.0/length2);}\r
9694 else\r
9695 {this.m_u2.SetZero();}\r
9696 C=this.m_constant-length1-this.m_ratio*length2;linearError=b2Math.b2Max(linearError,Math.abs(C));C=b2Math.b2Clamp(C,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);impulse=-this.m_pulleyMass*C;p1X=-impulse*this.m_u1.x;p1Y=-impulse*this.m_u1.y;p2X=-this.m_ratio*impulse*this.m_u2.x;p2Y=-this.m_ratio*impulse*this.m_u2.y;b1.m_position.x+=b1.m_invMass*p1X;b1.m_position.y+=b1.m_invMass*p1Y;b1.m_rotation+=b1.m_invI*(r1X*p1Y-r1Y*p1X);b2.m_position.x+=b2.m_invMass*p2X;b2.m_position.y+=b2.m_invMass*p2Y;b2.m_rotation+=b2.m_invI*(r2X*p2Y-r2Y*p2X);b1.m_R.Set(b1.m_rotation);b2.m_R.Set(b2.m_rotation);}\r
9697 if(this.m_limitState1==b2Joint.e_atUpperLimit)\r
9698 {tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);length1=this.m_u1.Length();if(length1>b2Settings.b2_linearSlop)\r
9699 {this.m_u1.x*=1.0/length1;this.m_u1.y*=1.0/length1;}\r
9700 else\r
9701 {this.m_u1.SetZero();}\r
9702 C=this.m_maxLength1-length1;linearError=b2Math.b2Max(linearError,-C);C=b2Math.b2Clamp(C+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);impulse=-this.m_limitMass1*C;oldLimitPositionImpulse=this.m_limitPositionImpulse1;this.m_limitPositionImpulse1=b2Math.b2Max(0.0,this.m_limitPositionImpulse1+impulse);impulse=this.m_limitPositionImpulse1-oldLimitPositionImpulse;p1X=-impulse*this.m_u1.x;p1Y=-impulse*this.m_u1.y;b1.m_position.x+=b1.m_invMass*p1X;b1.m_position.y+=b1.m_invMass*p1Y;b1.m_rotation+=b1.m_invI*(r1X*p1Y-r1Y*p1X);b1.m_R.Set(b1.m_rotation);}\r
9703 if(this.m_limitState2==b2Joint.e_atUpperLimit)\r
9704 {tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;this.m_u2.Set(p2X-s2X,p2Y-s2Y);length2=this.m_u2.Length();if(length2>b2Settings.b2_linearSlop)\r
9705 {this.m_u2.x*=1.0/length2;this.m_u2.y*=1.0/length2;}\r
9706 else\r
9707 {this.m_u2.SetZero();}\r
9708 C=this.m_maxLength2-length2;linearError=b2Math.b2Max(linearError,-C);C=b2Math.b2Clamp(C+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);impulse=-this.m_limitMass2*C;oldLimitPositionImpulse=this.m_limitPositionImpulse2;this.m_limitPositionImpulse2=b2Math.b2Max(0.0,this.m_limitPositionImpulse2+impulse);impulse=this.m_limitPositionImpulse2-oldLimitPositionImpulse;p2X=-impulse*this.m_u2.x;p2Y=-impulse*this.m_u2.y;b2.m_position.x+=b2.m_invMass*p2X;b2.m_position.y+=b2.m_invMass*p2Y;b2.m_rotation+=b2.m_invI*(r2X*p2Y-r2Y*p2X);b2.m_R.Set(b2.m_rotation);}\r
9709 return linearError<b2Settings.b2_linearSlop;},m_ground:null,m_groundAnchor1:new b2Vec2(),m_groundAnchor2:new b2Vec2(),m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_u1:new b2Vec2(),m_u2:new b2Vec2(),m_constant:null,m_ratio:null,m_maxLength1:null,m_maxLength2:null,m_pulleyMass:null,m_limitMass1:null,m_limitMass2:null,m_pulleyImpulse:null,m_limitImpulse1:null,m_limitImpulse2:null,m_limitPositionImpulse1:null,m_limitPositionImpulse2:null,m_limitState1:0,m_limitState2:0});b2PulleyJoint.b2_minPulleyLength=b2Settings.b2_lengthUnitsPerMeter;\r
9710 var b2PulleyJointDef=Class.create();Object.extend(b2PulleyJointDef.prototype,b2JointDef.prototype);Object.extend(b2PulleyJointDef.prototype,{initialize:function()\r
9711 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.groundPoint1=new b2Vec2();this.groundPoint2=new b2Vec2();this.anchorPoint1=new b2Vec2();this.anchorPoint2=new b2Vec2();this.type=b2Joint.e_pulleyJoint;this.groundPoint1.Set(-1.0,1.0);this.groundPoint2.Set(1.0,1.0);this.anchorPoint1.Set(-1.0,0.0);this.anchorPoint2.Set(1.0,0.0);this.maxLength1=0.5*b2PulleyJoint.b2_minPulleyLength;this.maxLength2=0.5*b2PulleyJoint.b2_minPulleyLength;this.ratio=1.0;this.collideConnected=true;},groundPoint1:new b2Vec2(),groundPoint2:new b2Vec2(),anchorPoint1:new b2Vec2(),anchorPoint2:new b2Vec2(),maxLength1:null,maxLength2:null,ratio:null});\r
9712 var b2RevoluteJoint=Class.create();Object.extend(b2RevoluteJoint.prototype,b2Joint.prototype);Object.extend(b2RevoluteJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetJointAngle:function(){return this.m_body2.m_rotation-this.m_body1.m_rotation;},GetJointSpeed:function(){return this.m_body2.m_angularVelocity-this.m_body1.m_angularVelocity;},GetMotorTorque:function(invTimeStep){return invTimeStep*this.m_motorImpulse;},SetMotorSpeed:function(speed)\r
9713 {this.m_motorSpeed=speed;},SetMotorTorque:function(torque)\r
9714 {this.m_maxMotorTorque=torque;},GetReactionForce:function(invTimeStep)\r
9715 {var tVec=this.m_ptpImpulse.Copy();tVec.Multiply(invTimeStep);return tVec;},GetReactionTorque:function(invTimeStep)\r
9716 {return invTimeStep*this.m_limitImpulse;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.K=new b2Mat22();this.K1=new b2Mat22();this.K2=new b2Mat22();this.K3=new b2Mat22();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_ptpImpulse=new b2Vec2();this.m_ptpMass=new b2Mat22();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=def.anchorPoint.x-this.m_body1.m_position.x;tY=def.anchorPoint.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint.x-this.m_body2.m_position.x;tY=def.anchorPoint.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.y;this.m_intialAngle=this.m_body2.m_rotation-this.m_body1.m_rotation;this.m_ptpImpulse.Set(0.0,0.0);this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;this.m_limitPositionImpulse=0.0;this.m_lowerAngle=def.lowerAngle;this.m_upperAngle=def.upperAngle;this.m_maxMotorTorque=def.motorTorque;this.m_motorSpeed=def.motorSpeed;this.m_enableLimit=def.enableLimit;this.m_enableMotor=def.enableMotor;},K:new b2Mat22(),K1:new b2Mat22(),K2:new b2Mat22(),K3:new b2Mat22(),PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;this.K1.col1.x=invMass1+invMass2;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass1+invMass2;this.K2.col1.x=invI1*r1Y*r1Y;this.K2.col2.x=-invI1*r1X*r1Y;this.K2.col1.y=-invI1*r1X*r1Y;this.K2.col2.y=invI1*r1X*r1X;this.K3.col1.x=invI2*r2Y*r2Y;this.K3.col2.x=-invI2*r2X*r2Y;this.K3.col1.y=-invI2*r2X*r2Y;this.K3.col2.y=invI2*r2X*r2X;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.AddM(this.K3);this.K.Invert(this.m_ptpMass);this.m_motorMass=1.0/(invI1+invI2);if(this.m_enableMotor==false)\r
9717 {this.m_motorImpulse=0.0;}\r
9718 if(this.m_enableLimit)\r
9719 {var jointAngle=b2.m_rotation-b1.m_rotation-this.m_intialAngle;if(b2Math.b2Abs(this.m_upperAngle-this.m_lowerAngle)<2.0*b2Settings.b2_angularSlop)\r
9720 {this.m_limitState=b2Joint.e_equalLimits;}\r
9721 else if(jointAngle<=this.m_lowerAngle)\r
9722 {if(this.m_limitState!=b2Joint.e_atLowerLimit)\r
9723 {this.m_limitImpulse=0.0;}\r
9724 this.m_limitState=b2Joint.e_atLowerLimit;}\r
9725 else if(jointAngle>=this.m_upperAngle)\r
9726 {if(this.m_limitState!=b2Joint.e_atUpperLimit)\r
9727 {this.m_limitImpulse=0.0;}\r
9728 this.m_limitState=b2Joint.e_atUpperLimit;}\r
9729 else\r
9730 {this.m_limitState=b2Joint.e_inactiveLimit;this.m_limitImpulse=0.0;}}\r
9731 else\r
9732 {this.m_limitImpulse=0.0;}\r
9733 if(b2World.s_enableWarmStarting)\r
9734 {b1.m_linearVelocity.x-=invMass1*this.m_ptpImpulse.x;b1.m_linearVelocity.y-=invMass1*this.m_ptpImpulse.y;b1.m_angularVelocity-=invI1*((r1X*this.m_ptpImpulse.y-r1Y*this.m_ptpImpulse.x)+this.m_motorImpulse+this.m_limitImpulse);b2.m_linearVelocity.x+=invMass2*this.m_ptpImpulse.x;b2.m_linearVelocity.y+=invMass2*this.m_ptpImpulse.y;b2.m_angularVelocity+=invI2*((r2X*this.m_ptpImpulse.y-r2Y*this.m_ptpImpulse.x)+this.m_motorImpulse+this.m_limitImpulse);}\r
9735 else{this.m_ptpImpulse.SetZero();this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;}\r
9736 this.m_limitPositionImpulse=0.0;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var oldLimitImpulse;var ptpCdotX=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y)-b1.m_linearVelocity.x-(-b1.m_angularVelocity*r1Y);var ptpCdotY=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X)-b1.m_linearVelocity.y-(b1.m_angularVelocity*r1X);var ptpImpulseX=-(this.m_ptpMass.col1.x*ptpCdotX+this.m_ptpMass.col2.x*ptpCdotY);var ptpImpulseY=-(this.m_ptpMass.col1.y*ptpCdotX+this.m_ptpMass.col2.y*ptpCdotY);this.m_ptpImpulse.x+=ptpImpulseX;this.m_ptpImpulse.y+=ptpImpulseY;b1.m_linearVelocity.x-=b1.m_invMass*ptpImpulseX;b1.m_linearVelocity.y-=b1.m_invMass*ptpImpulseY;b1.m_angularVelocity-=b1.m_invI*(r1X*ptpImpulseY-r1Y*ptpImpulseX);b2.m_linearVelocity.x+=b2.m_invMass*ptpImpulseX;b2.m_linearVelocity.y+=b2.m_invMass*ptpImpulseY;b2.m_angularVelocity+=b2.m_invI*(r2X*ptpImpulseY-r2Y*ptpImpulseX);if(this.m_enableMotor&&this.m_limitState!=b2Joint.e_equalLimits)\r
9737 {var motorCdot=b2.m_angularVelocity-b1.m_angularVelocity-this.m_motorSpeed;var motorImpulse=-this.m_motorMass*motorCdot;var oldMotorImpulse=this.m_motorImpulse;this.m_motorImpulse=b2Math.b2Clamp(this.m_motorImpulse+motorImpulse,-step.dt*this.m_maxMotorTorque,step.dt*this.m_maxMotorTorque);motorImpulse=this.m_motorImpulse-oldMotorImpulse;b1.m_angularVelocity-=b1.m_invI*motorImpulse;b2.m_angularVelocity+=b2.m_invI*motorImpulse;}\r
9738 if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)\r
9739 {var limitCdot=b2.m_angularVelocity-b1.m_angularVelocity;var limitImpulse=-this.m_motorMass*limitCdot;if(this.m_limitState==b2Joint.e_equalLimits)\r
9740 {this.m_limitImpulse+=limitImpulse;}\r
9741 else if(this.m_limitState==b2Joint.e_atLowerLimit)\r
9742 {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Max(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}\r
9743 else if(this.m_limitState==b2Joint.e_atUpperLimit)\r
9744 {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Min(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}\r
9745 b1.m_angularVelocity-=b1.m_invI*limitImpulse;b2.m_angularVelocity+=b2.m_invI*limitImpulse;}},SolvePositionConstraints:function(){var oldLimitImpulse;var limitC;var b1=this.m_body1;var b2=this.m_body2;var positionError=0.0;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var ptpCX=p2X-p1X;var ptpCY=p2Y-p1Y;positionError=Math.sqrt(ptpCX*ptpCX+ptpCY*ptpCY);var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;this.K1.col1.x=invMass1+invMass2;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass1+invMass2;this.K2.col1.x=invI1*r1Y*r1Y;this.K2.col2.x=-invI1*r1X*r1Y;this.K2.col1.y=-invI1*r1X*r1Y;this.K2.col2.y=invI1*r1X*r1X;this.K3.col1.x=invI2*r2Y*r2Y;this.K3.col2.x=-invI2*r2X*r2Y;this.K3.col1.y=-invI2*r2X*r2Y;this.K3.col2.y=invI2*r2X*r2X;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.AddM(this.K3);this.K.Solve(b2RevoluteJoint.tImpulse,-ptpCX,-ptpCY);var impulseX=b2RevoluteJoint.tImpulse.x;var impulseY=b2RevoluteJoint.tImpulse.y;b1.m_position.x-=b1.m_invMass*impulseX;b1.m_position.y-=b1.m_invMass*impulseY;b1.m_rotation-=b1.m_invI*(r1X*impulseY-r1Y*impulseX);b1.m_R.Set(b1.m_rotation);b2.m_position.x+=b2.m_invMass*impulseX;b2.m_position.y+=b2.m_invMass*impulseY;b2.m_rotation+=b2.m_invI*(r2X*impulseY-r2Y*impulseX);b2.m_R.Set(b2.m_rotation);var angularError=0.0;if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)\r
9746 {var angle=b2.m_rotation-b1.m_rotation-this.m_intialAngle;var limitImpulse=0.0;if(this.m_limitState==b2Joint.e_equalLimits)\r
9747 {limitC=b2Math.b2Clamp(angle,-b2Settings.b2_maxAngularCorrection,b2Settings.b2_maxAngularCorrection);limitImpulse=-this.m_motorMass*limitC;angularError=b2Math.b2Abs(limitC);}\r
9748 else if(this.m_limitState==b2Joint.e_atLowerLimit)\r
9749 {limitC=angle-this.m_lowerAngle;angularError=b2Math.b2Max(0.0,-limitC);limitC=b2Math.b2Clamp(limitC+b2Settings.b2_angularSlop,-b2Settings.b2_maxAngularCorrection,0.0);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Max(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}\r
9750 else if(this.m_limitState==b2Joint.e_atUpperLimit)\r
9751 {limitC=angle-this.m_upperAngle;angularError=b2Math.b2Max(0.0,limitC);limitC=b2Math.b2Clamp(limitC-b2Settings.b2_angularSlop,0.0,b2Settings.b2_maxAngularCorrection);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Min(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}\r
9752 b1.m_rotation-=b1.m_invI*limitImpulse;b1.m_R.Set(b1.m_rotation);b2.m_rotation+=b2.m_invI*limitImpulse;b2.m_R.Set(b2.m_rotation);}\r
9753 return positionError<=b2Settings.b2_linearSlop&&angularError<=b2Settings.b2_angularSlop;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_ptpImpulse:new b2Vec2(),m_motorImpulse:null,m_limitImpulse:null,m_limitPositionImpulse:null,m_ptpMass:new b2Mat22(),m_motorMass:null,m_intialAngle:null,m_lowerAngle:null,m_upperAngle:null,m_maxMotorTorque:null,m_motorSpeed:null,m_enableLimit:null,m_enableMotor:null,m_limitState:0});b2RevoluteJoint.tImpulse=new b2Vec2();\r
9754 var b2RevoluteJointDef=Class.create();Object.extend(b2RevoluteJointDef.prototype,b2JointDef.prototype);Object.extend(b2RevoluteJointDef.prototype,{initialize:function()\r
9755 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.type=b2Joint.e_revoluteJoint;this.anchorPoint=new b2Vec2(0.0,0.0);this.lowerAngle=0.0;this.upperAngle=0.0;this.motorTorque=0.0;this.motorSpeed=0.0;this.enableLimit=false;this.enableMotor=false;},anchorPoint:null,lowerAngle:null,upperAngle:null,motorTorque:null,motorSpeed:null,enableLimit:null,enableMotor:null});\r
9756 \r
9757 \r
9758 \r
9759 var canvas;\r
9760 \r
9761 //var stats = new Stats();\r
9762 \r
9763 var delta = [0,0];\r
9764 var stage = [window.screenX,window.screenY,window.innerWidth,window.innerHeight];\r
9765 getBrowserDimensions();\r
9766 \r
9767 var theme;\r
9768 var themes = [\r
9769                 ["#10222B","#95AB63","#BDD684","#E2F0D6","#F6FFE0"],\r
9770                 ["#362C2A","#732420","#BF734C","#FAD9A0","#736859"],\r
9771                 ["#0D1114","#102C2E","#695F4C","#EBBC5E","#FFFBB8"],\r
9772                 ["#2E2F38","#FFD63E","#FFB54B","#E88638","#8A221C"],\r
9773                 ["#121212","#E6F2DA","#C9F24B","#4D7B85","#23383D"],\r
9774                 ["#343F40","#736751","#F2D7B6","#BFAC95","#8C3F3F"],\r
9775                 ["#000000","#2D2B2A","#561812","#B81111","#FFFFFF"],\r
9776                 ["#333B3A","#B4BD51","#543B38","#61594D","#B8925A"]\r
9777         ];\r
9778 \r
9779 var worldAABB;\r
9780 var world;\r
9781 var iterations = 1;\r
9782 var timeStep = 1 / 20;\r
9783 \r
9784 var walls = new Array();\r
9785 var wall_thickness = 200;\r
9786 var wallsSetted = false;\r
9787 \r
9788 var text;\r
9789 \r
9790 var bodies;\r
9791 var elements;\r
9792 \r
9793 var createMode = false;\r
9794 var destroyMode = false;\r
9795 \r
9796 var isMouseDown = false;\r
9797 var mouseJoint;\r
9798 var mouseX = 0;\r
9799 var mouseY = 0;\r
9800 var PI2 = Math.PI * 2;\r
9801 \r
9802 init();\r
9803 play();\r
9804 \r
9805 function init()\r
9806 {\r
9807         canvas = document.getElementById('canvas');\r
9808         \r
9809         document.onmousedown = onDocumentMouseDown;\r
9810         document.onmouseup = onDocumentMouseUp;\r
9811         document.onmousemove = onDocumentMouseMove;\r
9812         document.ondblclick = onDocumentDoubleClick;\r
9813         //document.onselectstart = function() {return false;} // ie\r
9814         \r
9815         // init box2d\r
9816         \r
9817         worldAABB = new b2AABB();\r
9818         worldAABB.minVertex.Set(-200, -200);\r
9819         worldAABB.maxVertex.Set( screen.width + 200, screen.height + 200);\r
9820 \r
9821         world = new b2World(worldAABB, new b2Vec2(0, 0), true);\r
9822                 \r
9823         setWalls();\r
9824         reset();\r
9825 }\r
9826 \r
9827 \r
9828 function play()\r
9829 {\r
9830         setInterval(loop, 25);  \r
9831 }\r
9832 \r
9833 function reset()\r
9834 {       \r
9835         // color theme\r
9836         theme = themes[ Math.random() * themes.length >> 0 ];\r
9837         document.body.style['backgroundColor'] = theme[0];\r
9838         \r
9839         bodies = new Array();\r
9840         elements = new Array(); \r
9841 \r
9842         createInstructions();\r
9843         \r
9844         for(var i = 0; i < 10; i++)\r
9845                 createBall();\r
9846 }\r
9847 \r
9848 // .. ACTIONS\r
9849 \r
9850 function onDocumentMouseDown()\r
9851 {\r
9852         isMouseDown = true;\r
9853         return false;\r
9854 }\r
9855 \r
9856 function onDocumentMouseUp()\r
9857 {\r
9858         isMouseDown = false;\r
9859         return false;\r
9860 }\r
9861 \r
9862 function onDocumentMouseMove(e)\r
9863 {\r
9864         var ev = (!e) ? window.event : e;\r
9865         mouseX = ev.clientX;\r
9866         mouseY = ev.clientY;\r
9867 }\r
9868 \r
9869 function onDocumentDoubleClick()\r
9870 {\r
9871         for (i = 0; i < bodies.length; i++)\r
9872         {\r
9873                 var body = bodies[i]\r
9874                 canvas.removeChild( body.GetUserData().element );\r
9875                 world.DestroyBody(body);\r
9876                 body = null;\r
9877         }\r
9878 \r
9879         reset();\r
9880 }\r
9881 \r
9882 function onElementMouseDown()\r
9883 {\r
9884         return false;\r
9885 }\r
9886 \r
9887 function onElementMouseUp()\r
9888 {\r
9889         return false;\r
9890 }\r
9891 \r
9892 function onElementClick()\r
9893 {\r
9894         return false;\r
9895 }\r
9896 \r
9897 //\r
9898 function createInstructions()\r
9899 {\r
9900         var size = 250;\r
9901         \r
9902         var element = document.createElement("div");\r
9903         element.width = size;\r
9904         element.height = size;  \r
9905         element.style['position'] = 'absolute';\r
9906         element.style['left'] = -200 + 'px';\r
9907         element.style['top'] = -200 + 'px';\r
9908         element.style.cursor = "default";\r
9909         \r
9910         canvas.appendChild(element);\r
9911         elements.push( element );       \r
9912         \r
9913         var circle = document.createElement("canvas");  \r
9914         circle.width = size;\r
9915         circle.height = size;\r
9916         \r
9917         var graphics = circle.getContext("2d");\r
9918         \r
9919         graphics.fillStyle = theme[3];\r
9920         graphics.beginPath();\r
9921         graphics.arc(size * .5, size * .5, size * .5, 0, PI2, true); \r
9922         graphics.closePath();\r
9923         graphics.fill();\r
9924         \r
9925         element.appendChild(circle);\r
9926         \r
9927         text = document.createElement("div");\r
9928         text.onSelectStart = null;\r
9929         text.innerHTML = '<span style="color:' + theme[0] + ';font-size:40px;">Hello!</span><br /><br /><span style="font-size:15px;"><strong>This is how it works:</strong><br /><br />1. Drag a ball.<br />2.&nbsp;Click&nbsp;on&nbsp;the&nbsp;background.<br />3. Shake your browser.<br />4. Double click.<br />5. Play!</span>';\r
9930         text.style['color'] = theme[1];\r
9931         text.style['position'] = 'absolute';\r
9932         text.style['left'] = '0px';\r
9933         text.style['top'] = '0px';      \r
9934         text.style['font-family'] = 'Georgia';\r
9935         //text.style['text-align'] = 'center';\r
9936         text.style.textAlign = 'center';\r
9937         element.appendChild(text);      \r
9938         \r
9939         text.style['left'] = ((250 - text.clientWidth) / 2) +'px';\r
9940         text.style['top'] = ((250 - text.clientHeight) / 2) +'px';      \r
9941 \r
9942         var b2body = new b2BodyDef();   \r
9943         \r
9944         var circle = new b2CircleDef();\r
9945         circle.radius = size >> 1;\r
9946         circle.density = 1;\r
9947         circle.friction = 0.3;\r
9948         circle.restitution = 0.3;\r
9949         b2body.AddShape(circle);\r
9950         b2body.userData = {element: element};\r
9951 \r
9952         b2body.position.Set( Math.random() * stage[2], Math.random() * -200 );\r
9953         b2body.linearVelocity.Set( Math.random() * 400 - 200, Math.random() * 400 - 200 );\r
9954         bodies.push( world.CreateBody(b2body) );        \r
9955 }\r
9956 \r
9957 function createBall(x,y)\r
9958 {\r
9959         var x = (x != null) ? x : Math.random() * stage[2];\r
9960         var y = (y != null) ? y : Math.random() * -200;\r
9961 \r
9962         var size = (Math.random() * 100 >> 0) + 20;\r
9963 \r
9964         var element = document.createElement("canvas");\r
9965         element.width = size;\r
9966         element.height = size;\r
9967         element.style['position'] = 'absolute';\r
9968         element.style['left'] = -200 + 'px';\r
9969         element.style['top'] = -200 + 'px';     \r
9970         \r
9971         var graphics = element.getContext("2d");\r
9972 \r
9973         var num_circles = Math.random() * 10 >> 0;\r
9974         \r
9975         for (var i = size; i > 0; i-= (size/num_circles))\r
9976         {\r
9977                 graphics.fillStyle = theme[ (Math.random() * 4 >> 0) + 1];\r
9978                 graphics.beginPath();\r
9979                 graphics.arc(size * .5, size * .5, i * .5, 0, PI2, true); \r
9980                 graphics.closePath();\r
9981                 graphics.fill();\r
9982         }\r
9983         \r
9984         canvas.appendChild(element);\r
9985         \r
9986         elements.push( element );       \r
9987 \r
9988         var b2body = new b2BodyDef();   \r
9989         \r
9990         var circle = new b2CircleDef();\r
9991         circle.radius = size >> 1;\r
9992         circle.density = 1;\r
9993         circle.friction = 0.3;\r
9994         circle.restitution = 0.3;\r
9995         b2body.AddShape(circle);\r
9996         b2body.userData = {element: element};\r
9997 \r
9998         b2body.position.Set( x, y );\r
9999         b2body.linearVelocity.Set( Math.random() * 400 - 200, Math.random() * 400 - 200 );\r
10000         bodies.push( world.CreateBody(b2body) );\r
10001 }\r
10002 \r
10003 //\r
10004 \r
10005 function loop()\r
10006 {\r
10007         if (getBrowserDimensions())\r
10008                 setWalls();\r
10009 \r
10010         delta[0] += (0 - delta[0]) * .5;\r
10011         delta[1] += (0 - delta[1]) * .5;\r
10012         \r
10013         world.m_gravity.x = 0 + delta[0];\r
10014         world.m_gravity.y = 350 + delta[1];\r
10015                 \r
10016         mouseDrag();\r
10017         world.Step(timeStep, iterations);       \r
10018         \r
10019         for (i = 0; i < bodies.length; i++)\r
10020         {\r
10021                 var body = bodies[i];\r
10022                 var element = elements[i];\r
10023                 \r
10024                 element.style['left'] = (body.m_position0.x - (element.width >> 1)) + 'px';\r
10025                 element.style['top'] = (body.m_position0.y - (element.height >> 1)) + 'px';\r
10026                 \r
10027                 if (element.tagName == "DIV")\r
10028                 {\r
10029                         // webkit\r
10030                         text.style['-webkit-transform'] = 'rotate(' + (bodies[i].m_rotation0 * 57.2957795) + 'deg)';\r
10031                         \r
10032                         // gecko\r
10033                         text.style['MozTransform'] = 'rotate(' + (bodies[i].m_rotation0 * 57.2957795) + 'deg)';\r
10034 \r
10035                         // opera\r
10036                         element.style['OTransform'] = 'rotate(' + (bodies[i].m_rotation0 * 57.2957795) + 'deg)';\r
10037                 }\r
10038         }\r
10039 }\r
10040 \r
10041 \r
10042 // .. BOX2D UTILS\r
10043 \r
10044 function createBox(world, x, y, width, height, fixed)\r
10045 {\r
10046         if (typeof(fixed) == 'undefined') fixed = true;\r
10047         var boxSd = new b2BoxDef();\r
10048         if (!fixed) boxSd.density = 1.0;\r
10049         boxSd.extents.Set(width, height);\r
10050         var boxBd = new b2BodyDef();\r
10051         boxBd.AddShape(boxSd);\r
10052         boxBd.position.Set(x,y);\r
10053         return world.CreateBody(boxBd)\r
10054 }\r
10055 \r
10056 function mouseDrag()\r
10057 {\r
10058         // mouse press\r
10059         if (createMode)\r
10060         {\r
10061                 createBall( mouseX, mouseY );\r
10062         }\r
10063         else if (isMouseDown && !mouseJoint)\r
10064         {\r
10065                 var body = getBodyAtMouse();\r
10066                 \r
10067                 if (body)\r
10068                 {\r
10069                         var md = new b2MouseJointDef();\r
10070                         md.body1 = world.m_groundBody;\r
10071                         md.body2 = body;\r
10072                         md.target.Set(mouseX, mouseY);\r
10073                         md.maxForce = 30000 * body.m_mass;\r
10074                         md.timeStep = timeStep;\r
10075                         mouseJoint = world.CreateJoint(md);\r
10076                         body.WakeUp();\r
10077                 }\r
10078                 else\r
10079                 {\r
10080                         createMode = true;\r
10081                 }\r
10082         }\r
10083         \r
10084         // mouse release\r
10085         if (!isMouseDown)\r
10086         {\r
10087                 createMode = false;\r
10088                 destroyMode = false;\r
10089         \r
10090                 if (mouseJoint)\r
10091                 {\r
10092                         world.DestroyJoint(mouseJoint);\r
10093                         mouseJoint = null;\r
10094                 }\r
10095         }\r
10096         \r
10097         // mouse move\r
10098         if (mouseJoint)\r
10099         {\r
10100                 var p2 = new b2Vec2(mouseX, mouseY);\r
10101                 mouseJoint.SetTarget(p2);\r
10102         }\r
10103 }\r
10104 \r
10105 function getBodyAtMouse()\r
10106 {\r
10107         // Make a small box.\r
10108         var mousePVec = new b2Vec2();\r
10109         mousePVec.Set(mouseX, mouseY);\r
10110         \r
10111         var aabb = new b2AABB();\r
10112         aabb.minVertex.Set(mouseX - 1, mouseY - 1);\r
10113         aabb.maxVertex.Set(mouseX + 1, mouseY + 1);\r
10114 \r
10115         // Query the world for overlapping shapes.\r
10116         var k_maxCount = 10;\r
10117         var shapes = new Array();\r
10118         var count = world.Query(aabb, shapes, k_maxCount);\r
10119         var body = null;\r
10120         \r
10121         for (var i = 0; i < count; ++i)\r
10122         {\r
10123                 if (shapes[i].m_body.IsStatic() == false)\r
10124                 {\r
10125                         if ( shapes[i].TestPoint(mousePVec) )\r
10126                         {\r
10127                                 body = shapes[i].m_body;\r
10128                                 break;\r
10129                         }\r
10130                 }\r
10131         }\r
10132         return body;\r
10133 }\r
10134 \r
10135 function setWalls()\r
10136 {\r
10137         if (wallsSetted)\r
10138         {\r
10139                 world.DestroyBody(walls[0]);\r
10140                 world.DestroyBody(walls[1]);\r
10141                 world.DestroyBody(walls[2]);\r
10142                 world.DestroyBody(walls[3]);\r
10143                 \r
10144                 walls[0] = null; \r
10145                 walls[1] = null;\r
10146                 walls[2] = null;\r
10147                 walls[3] = null;\r
10148         }\r
10149         \r
10150         walls[0] = createBox(world, stage[2] / 2, - wall_thickness, stage[2], wall_thickness);\r
10151         walls[1] = createBox(world, stage[2] / 2, stage[3] + wall_thickness, stage[2], wall_thickness);\r
10152         walls[2] = createBox(world, - wall_thickness, stage[3] / 2, wall_thickness, stage[3]);\r
10153         walls[3] = createBox(world, stage[2] + wall_thickness, stage[3] / 2, wall_thickness, stage[3]); \r
10154         \r
10155         wallsSetted = true;\r
10156 }\r
10157 \r
10158 // BROWSER DIMENSIONS\r
10159 \r
10160 function getBrowserDimensions()\r
10161 {\r
10162         var changed = false;\r
10163                 \r
10164         if (stage[0] != window.screenX)\r
10165         {\r
10166                 delta[0] = (window.screenX - stage[0]) * 50;\r
10167                 stage[0] = window.screenX;\r
10168                 changed = true;\r
10169         }\r
10170         \r
10171         if (stage[1] != window.screenY)\r
10172         {\r
10173                 delta[1] = (window.screenY - stage[1]) * 50;\r
10174                 stage[1] = window.screenY;\r
10175                 changed = true;\r
10176         }\r
10177         \r
10178         if (stage[2] != window.innerWidth)\r
10179         {\r
10180                 stage[2] = window.innerWidth;\r
10181                 changed = true;\r
10182         }\r
10183         \r
10184         if (stage[3] != window.innerHeight)\r
10185         {\r
10186                 stage[3] = window.innerHeight;\r
10187                 changed = true;\r
10188         }\r
10189         \r
10190         return changed;\r
10191 }       \r
10192 \r
10193 \r
10194 \r
10195 var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");\r
10196 document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));\r
10197 \r
10198 \r
10199 \r
10200 (function(){var aa="_gat",ba="_gaq",r=true,v=false,w=undefined,ca="4.6.5",x="length",y="cookie",A="location",B="&",C="=",D="__utma=",E="__utmb=",G="__utmc=",da="__utmk=",H="__utmv=",J="__utmz=",K="__utmx=",L="GASO=";var N=function(i){return w==i||"-"==i||""==i},ea=function(i){return i[x]>0&&" \n\r\t".indexOf(i)>-1},P=function(i,l,g){var t="-",k;if(!N(i)&&!N(l)&&!N(g)){k=i.indexOf(l);if(k>-1){g=i.indexOf(g,k);if(g<0)g=i[x];t=O(i,k+l.indexOf(C)+1,g)}}return t},Q=function(i){var l=v,g=0,t,k;if(!N(i)){l=r;for(t=0;t<i[x];t++){k=i.charAt(t);g+="."==k?1:0;l=l&&g<=1&&(0==t&&"-"==k||".0123456789".indexOf(k)>-1)}}return l},S=function(i,l){var g=encodeURIComponent;return g instanceof Function?l?encodeURI(i):g(i):escape(i)},\r
10201 T=function(i,l){var g=decodeURIComponent,t;i=i.split("+").join(" ");if(g instanceof Function)try{t=l?decodeURI(i):g(i)}catch(k){t=unescape(i)}else t=unescape(i);return t},U=function(i,l){return i.indexOf(l)>-1},V=function(i,l){i[i[x]]=l},W=function(i){return i.toLowerCase()},X=function(i,l){return i.split(l)},fa=function(i,l){return i.indexOf(l)},O=function(i,l,g){g=w==g?i[x]:g;return i.substring(l,g)},ga=function(i,l){return i.join(l)},ia=function(i){var l=1,g=0,t;if(!N(i)){l=0;for(t=i[x]-1;t>=0;t--){g=\r
10202 i.charCodeAt(t);l=(l<<6&268435455)+g+(g<<14);g=l&266338304;l=g!=0?l^g>>21:l}}return l},ja=function(){var i=window,l=w;if(i&&i.gaGlobal&&i.gaGlobal.hid)l=i.gaGlobal.hid;else{l=Y();i.gaGlobal=i.gaGlobal?i.gaGlobal:{};i.gaGlobal.hid=l}return l},Y=function(){return Math.round(Math.random()*2147483647)},Z={Ha:function(i,l){this.bb=i;this.nb=l},ib:v,_gasoDomain:w,_gasoCPath:w};Z.Gb=function(){function i(k){return new t(k[0],k[1])}function l(k){var p=[];k=k.split(",");var f;for(f=0;f<k.length;++f)p.push(i(k[f].split(":")));return p}var g=this,t=Z.Ha;g.Ia="utm_campaign";g.Ja="utm_content";g.Ka="utm_id";g.La="utm_medium";g.Ma="utm_nooverride";g.Na="utm_source";g.Oa="utm_term";g.Pa="gclid";g.ba=0;g.z=0;g.Ta=15768E6;g.sb=18E5;g.v=63072E6;g.ta=[];g.va=[];g.nc="cse";g.oc="q";g.ob=5;g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");\r
10203 g.t=w;g.lb=v;g.h="/";g.U=100;g.oa="/__utm.gif";g.ga=1;g.ha=1;g.u="|";g.fa=1;g.da=1;g.Ra=1;g.b="auto";g.I=1;g.ra=1E3;g.Jc=10;g.Pb=10;g.Kc=0.2;g.o=w;g.a=document;g.e=window};Z.Hb=function(i){function l(d,a,j,c){var n="",s=0;n=P(d,"2"+a,";");if(!N(n)){d=n.indexOf("^"+j+".");if(d<0)return["",0];n=O(n,d+j[x]+2);if(n.indexOf("^")>0)n=n.split("^")[0];j=n.split(":");n=j[1];s=parseInt(j[0],10);if(!c&&s<p.r)n=""}if(N(n))n="";return[n,s]}function g(d,a){return"^"+ga([[a,d[1]].join("."),d[0]],":")}function t(d,a){f.a[y]=d+"; path="+f.h+"; "+a+p.fb()}function k(d){var a=new Date;d=new Date(a.getTime()+d);return"expires="+d.toGMTString()+"; "}var p=this,f=i;p.r=(new Date).getTime();\r
10204 var h=[D,E,G,J,H,K,L];p.k=function(){var d=f.a[y];return f.o?p.Wb(d,f.o):d};p.Wb=function(d,a){var j=[],c,n;for(c=0;c<h[x];c++){n=l(d,h[c],a)[0];N(n)||(j[j[x]]=h[c]+n+";")}return j.join("")};p.l=function(d,a,j){var c=j>0?k(j):"";if(f.o){a=p.kc(f.a[y],d,f.o,a,j);d="2"+d;c=j>0?k(f.v):""}t(d+a,c)};p.kc=function(d,a,j,c,n){var s="";n=n||f.v;c=g([c,p.r+n*1],j);s=P(d,"2"+a,";");if(!N(s)){d=g(l(d,a,j,r),j);s=ga(s.split(d),"");return s=c+s}return c};p.fb=function(){return N(f.b)?"":"domain="+f.b+";"}};Z.$=function(i){function l(b){b=b instanceof Array?b.join("."):"";return N(b)?"-":b}function g(b,e){var o=[];if(!N(b)){o=b.split(".");if(e)for(b=0;b<o[x];b++)Q(o[b])||(o[b]="-")}return o}function t(b,e,o){var m=c.M,q,u;for(q=0;q<m[x];q++){u=m[q][0];u+=N(e)?e:e+m[q][4];m[q][2](P(b,u,o))}}var k,p,f,h,d,a,j,c=this,n,s=i;c.j=new Z.Hb(i);c.kb=function(){return w==n||n==c.P()};c.k=function(){return c.j.k()};c.ma=function(){return d?d:"-"};c.vb=function(b){d=b};c.za=function(b){n=Q(b)?b*1:"-"};c.la=function(){return l(a)};\r
10205 c.Aa=function(b){a=g(b)};c.Vb=function(){c.j.l(H,"",-1)};c.lc=function(){return n?n:"-"};c.fb=function(){return N(s.b)?"":"domain="+s.b+";"};c.ja=function(){return l(k)};c.tb=function(b){k=g(b,1)};c.C=function(){return l(p)};c.ya=function(b){p=g(b,1)};c.ka=function(){return l(f)};c.ub=function(b){f=g(b,1)};c.na=function(){return l(h)};c.wb=function(b){h=g(b);for(b=0;b<h[x];b++)if(b<4&&!Q(h[b]))h[b]="-"};c.fc=function(){return j};c.Dc=function(b){j=b};c.Sb=function(){k=[];p=[];f=[];h=[];d=w;a=[];n=\r
10206 w};c.P=function(){var b="",e;for(e=0;e<c.M[x];e++)b+=c.M[e][1]();return ia(b)};c.ua=function(b){var e=c.k(),o=v;if(e){t(e,b,";");c.za(c.P());o=r}return o};c.zc=function(b){t(b,"",B);c.za(P(b,da,B))};c.Hc=function(){var b=c.M,e=[],o;for(o=0;o<b[x];o++)V(e,b[o][0]+b[o][1]());V(e,da+c.P());return e.join(B)};c.Nc=function(b,e){var o=c.M,m=s.h;c.ua(b);s.h=e;for(b=0;b<o[x];b++)N(o[b][1]())||o[b][3]();s.h=m};c.Cb=function(){c.j.l(D,c.ja(),s.v)};c.Ea=function(){c.j.l(E,c.C(),s.sb)};c.Db=function(){c.j.l(G,\r
10207 c.ka(),0)};c.Ga=function(){c.j.l(J,c.na(),s.Ta)};c.Eb=function(){c.j.l(K,c.ma(),s.v)};c.Fa=function(){c.j.l(H,c.la(),s.v)};c.Oc=function(){c.j.l(L,c.fc(),0)};c.M=[[D,c.ja,c.tb,c.Cb,"."],[E,c.C,c.ya,c.Ea,""],[G,c.ka,c.ub,c.Db,""],[K,c.ma,c.vb,c.Eb,""],[J,c.na,c.wb,c.Ga,"."],[H,c.la,c.Aa,c.Fa,"."]]};Z.Kb=function(i){var l=this,g=i,t=new Z.$(g),k=function(){},p=function(f){var h=(new Date).getTime(),d;d=(h-f[3])*(g.Kc/1E3);if(d>=1){f[2]=Math.min(Math.floor(f[2]*1+d),g.Pb);f[3]=h}return f};l.H=function(f,h,d,a,j,c){var n,s=g.I,b=g.a[A];t.ua(d);n=X(t.C(),".");if(n[1]<500||a){if(j)n=p(n);if(a||!j||n[2]>=1){if(!a&&j)n[2]=n[2]*1-1;n[1]=n[1]*1+1;f="?utmwv="+ca+"&utmn="+Y()+(N(b.hostname)?"":"&utmhn="+S(b.hostname))+(g.U==100?"":"&utmsp="+S(g.U))+f;if(0==s||2==s){a=2==s?k:c||k;l.$a(g.oa+f,a)}if(1==s||\r
10208 2==s){f=("https:"==b.protocol?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif")+f+"&utmac="+h+"&utmcc="+l.ac(d);if(ka)f+="&gaq=1";l.$a(f,c)}}}t.ya(n.join("."));t.Ea()};l.$a=function(f,h){var d=new Image(1,1);d.src=f;d.onload=function(){d.onload=null;(h||k)()}};l.ac=function(f){var h=[],d=[D,J,H,K],a,j=t.k(),c;for(a=0;a<d[x];a++){c=P(j,d[a]+f,";");if(!N(c)){if(d[a]==H){c=X(c.split(f+".")[1],"|")[0];if(N(c))continue;c=f+"."+c}V(h,d[a]+c+";")}}return S(h.join("+"))}};Z.n=function(){var i=this;i.Y=[];i.hb=function(l){var g,t=i.Y,k;for(k=0;k<t.length;k++)g=l==t[k].q?t[k]:g;return g};i.Ob=function(l,g,t,k,p,f,h,d){var a=i.hb(l);if(w==a){a=new Z.n.Mb(l,g,t,k,p,f,h,d);V(i.Y,a)}else{a.Qa=g;a.Ab=t;a.zb=k;a.xb=p;a.Xa=f;a.yb=h;a.Za=d}return a}};Z.n.Lb=function(i,l,g,t,k,p){var f=this;f.Bb=i;f.Ba=l;f.D=g;f.Va=t;f.pb=k;f.qb=p;f.Ca=function(){return"&"+["utmt=item","tid="+S(f.Bb),"ipc="+S(f.Ba),"ipn="+S(f.D),"iva="+S(f.Va),"ipr="+S(f.pb),"iqt="+S(f.qb)].join("&utm")}};\r
10209 Z.n.Mb=function(i,l,g,t,k,p,f,h){var d=this;d.q=i;d.Qa=l;d.Ab=g;d.zb=t;d.xb=k;d.Xa=p;d.yb=f;d.Za=h;d.R=[];d.Nb=function(a,j,c,n,s){var b=d.gc(a),e=d.q;if(w==b)V(d.R,new Z.n.Lb(e,a,j,c,n,s));else{b.Bb=e;b.Ba=a;b.D=j;b.Va=c;b.pb=n;b.qb=s}};d.gc=function(a){var j,c=d.R,n;for(n=0;n<c.length;n++)j=a==c[n].Ba?c[n]:j;return j};d.Ca=function(){return"&"+["utmt=tran","id="+S(d.q),"st="+S(d.Qa),"to="+S(d.Ab),"tx="+S(d.zb),"sp="+S(d.xb),"ci="+S(d.Xa),"rg="+S(d.yb),"co="+S(d.Za)].join("&utmt")}};Z.Fb=function(i){function l(){var f,h,d;h="ShockwaveFlash";var a="$version",j=k.d?k.d.plugins:w;if(j&&j[x]>0)for(f=0;f<j[x]&&!d;f++){h=j[f];if(U(h.name,"Shockwave Flash"))d=h.description.split("Shockwave Flash ")[1]}else{h=h+"."+h;try{f=new ActiveXObject(h+".7");d=f.GetVariable(a)}catch(c){}if(!d)try{f=new ActiveXObject(h+".6");d="WIN 6,0,21,0";f.AllowScriptAccess="always";d=f.GetVariable(a)}catch(n){}if(!d)try{f=new ActiveXObject(h);d=f.GetVariable(a)}catch(s){}if(d){d=X(d.split(" ")[1],",");d=d[0]+\r
10210 "."+d[1]+" r"+d[2]}}return d?d:p}var g=i,t=g.e,k=this,p="-";k.V=t.screen;k.Sa=!k.V&&t.java?java.awt.Toolkit.getDefaultToolkit():w;k.d=t.navigator;k.W=p;k.xa=p;k.Wa=p;k.qa=p;k.pa=1;k.eb=p;k.bc=function(){var f;if(t.screen){k.W=k.V.width+"x"+k.V.height;k.xa=k.V.colorDepth+"-bit"}else if(k.Sa)try{f=k.Sa.getScreenSize();k.W=f.width+"x"+f.height}catch(h){}k.qa=W(k.d&&k.d.language?k.d.language:k.d&&k.d.browserLanguage?k.d.browserLanguage:p);k.pa=k.d&&k.d.javaEnabled()?1:0;k.eb=g.ha?l():p;k.Wa=S(g.a.characterSet?\r
10211 g.a.characterSet:g.a.charset?g.a.charset:p)};k.Ic=function(){return B+"utm"+["cs="+S(k.Wa),"sr="+k.W,"sc="+k.xa,"ul="+k.qa,"je="+k.pa,"fl="+S(k.eb)].join("&utm")};k.$b=function(){var f=g.a,h=t.history[x];f=k.d.appName+k.d.version+k.qa+k.d.platform+k.d.userAgent+k.pa+k.W+k.xa+(f[y]?f[y]:"")+(f.referrer?f.referrer:"");for(var d=f[x];h>0;)f+=h--^d++;return ia(f)}};Z.m=function(i,l,g,t){function k(d){var a="";d=W(d.split("://")[1]);if(U(d,"/")){d=d.split("/")[1];if(U(d,"?"))a=d.split("?")[0]}return a}function p(d){var a="";a=W(d.split("://")[1]);if(U(a,"/"))a=a.split("/")[0];return a}var f=t,h=this;h.c=i;h.rb=l;h.r=g;h.ic=function(d){var a=h.gb();return new Z.m.w(P(d,f.Ka+C,B),P(d,f.Na+C,B),P(d,f.Pa+C,B),h.Q(d,f.Ia,"(not set)"),h.Q(d,f.La,"(not set)"),h.Q(d,f.Oa,a&&!N(a.K)?T(a.K):w),h.Q(d,f.Ja,w))};h.jb=function(d){var a=p(d),j=k(d);if(U(a,"google")){d=d.split("?").join(B);\r
10212 if(U(d,B+f.oc+C))if(j==f.nc)return r}return v};h.gb=function(){var d,a=h.rb,j,c,n=f.T;if(!(N(a)||"0"==a||!U(a,"://")||h.jb(a))){d=p(a);for(j=0;j<n[x];j++){c=n[j];if(U(d,W(c.bb))){a=a.split("?").join(B);if(U(a,B+c.nb+C)){d=a.split(B+c.nb+C)[1];if(U(d,B))d=d.split(B)[0];return new Z.m.w(w,c.bb,w,"(organic)","organic",d,w)}}}}};h.Q=function(d,a,j){d=P(d,a+C,B);return j=!N(d)?T(d):!N(j)?j:"-"};h.uc=function(d){var a=f.ta,j=v,c;if(d&&"organic"==d.S){d=W(T(d.K));for(c=0;c<a[x];c++)j=j||W(a[c])==d}return j};\r
10213 h.hc=function(){var d="",a="";d=h.rb;if(!(N(d)||"0"==d||!U(d,"://")||h.jb(d))){d=d.split("://")[1];if(U(d,"/")){a=O(d,d.indexOf("/"));a=a.split("?")[0];d=W(d.split("/")[0])}if(0==d.indexOf("www."))d=O(d,4);return new Z.m.w(w,d,w,"(referral)","referral",w,a)}};h.Xb=function(d){var a="";if(f.ba){a=d&&d.hash?d.href.substring(d.href.indexOf("#")):"";a=""!=a?a+B:a}a+=d.search;return a};h.dc=function(){return new Z.m.w(w,"(direct)",w,"(direct)","(none)",w,w)};h.vc=function(d){var a=v,j,c=f.va;if(d&&"referral"==\r
10214 d.S){d=W(S(d.X));for(j=0;j<c[x];j++)a=a||U(d,W(c[j]))}return a};h.L=function(d){return w!=d&&d.mb()};h.cc=function(d,a){var j="",c="-",n,s=0,b,e,o=h.c;if(!d)return"";e=d.k();j=h.Xb(f.a[A]);if(f.z&&d.kb()){c=d.na();if(!N(c)&&!U(c,";")){d.Ga();return""}}c=P(e,J+o+".",";");n=h.ic(j);if(h.L(n)){j=P(j,f.Ma+C,B);if("1"==j&&!N(c))return""}if(!h.L(n)){n=h.gb();if(!N(c)&&h.uc(n))return""}if(!h.L(n)&&a){n=h.hc();if(!N(c)&&h.vc(n))return""}if(!h.L(n))if(N(c)&&a)n=h.dc();if(!h.L(n))return"";if(!N(c)){s=c.split(".");\r
10215 b=new Z.m.w;b.Zb(s.slice(4).join("."));b=W(b.Da())==W(n.Da());s=s[3]*1}if(!b||a){a=P(e,D+o+".",";");e=a.lastIndexOf(".");a=e>9?O(a,e+1)*1:0;s++;a=0==a?1:a;d.wb([o,h.r,a,s,n.Da()].join("."));d.Ga();return B+"utmcn=1"}else return B+"utmcr=1"}};\r
10216 Z.m.w=function(i,l,g,t,k,p,f){var h=this;h.q=i;h.X=l;h.ea=g;h.D=t;h.S=k;h.K=p;h.Ya=f;h.Da=function(){var d=[],a=[["cid",h.q],["csr",h.X],["gclid",h.ea],["ccn",h.D],["cmd",h.S],["ctr",h.K],["cct",h.Ya]],j,c;if(h.mb())for(j=0;j<a[x];j++)if(!N(a[j][1])){c=a[j][1].split("+").join("%20");c=c.split(" ").join("%20");V(d,"utm"+a[j][0]+C+c)}return d.join("|")};h.mb=function(){return!(N(h.q)&&N(h.X)&&N(h.ea))};h.Zb=function(d){var a=function(j){return T(P(d,"utm"+j+C,"|"))};h.q=a("cid");h.X=a("csr");h.ea=a("gclid");\r
10217 h.D=a("ccn");h.S=a("cmd");h.K=a("ctr");h.Ya=a("cct")}};Z.Ib=function(i,l,g,t){function k(j,c,n){var s;if(!N(n)){n=n.split(",");for(var b=0;b<n[x];b++){s=n[b];if(!N(s)){s=s.split(h);if(s[x]==4)c[s[0]]=[s[1],s[2],j]}}}}var p=this,f=l,h=C,d=i,a=t;p.O=g;p.sa="";p.p={};p.tc=function(){var j;j=X(P(p.O.k(),H+f+".",";"),f+".")[1];if(!N(j)){j=j.split("|");k(1,p.p,j[1]);p.sa=j[0];p.Z()}};p.Z=function(){p.Qb();var j=p.sa,c,n,s="";for(c in p.p)if((n=p.p[c])&&1===n[2])s+=c+h+n[0]+h+n[1]+h+1+",";N(s)||(j+="|"+s);if(N(j))p.O.Vb();else{p.O.Aa(f+"."+j);p.O.Fa()}};p.Ec=\r
10218 function(j){p.sa=j;p.Z()};p.Cc=function(j,c,n,s){if(1!=s&&2!=s&&3!=s)s=3;var b=v;if(c&&n&&j>0&&j<=d.ob){c=S(c);n=S(n);if(c[x]+n[x]<=64){p.p[j]=[c,n,s];p.Z();b=r}}return b};p.mc=function(j){if((j=p.p[j])&&1===j[2])return j[1]};p.Ub=function(j){var c=p.p;if(c[j]){delete c[j];p.Z()}};p.Qb=function(){a._clearKey(8);a._clearKey(9);a._clearKey(11);var j=p.p,c,n;for(n in j)if(c=j[n]){a._setKey(8,n,c[0]);a._setKey(9,n,c[1]);(c=c[2])&&3!=c&&a._setKey(11,n,""+c)}}};Z.N=function(){function i(m,q,u,z){if(w==f[m])f[m]={};if(w==f[m][q])f[m][q]=[];f[m][q][u]=z}function l(m,q){if(w!=f[m]&&w!=f[m][q]){f[m][q]=w;q=r;var u;for(u=0;u<a[x];u++)if(w!=f[m][a[u]]){q=v;break}if(q)f[m]=w}}function g(m){var q="",u=v,z,M;for(z=0;z<a[x];z++){M=m[a[z]];if(w!=M){if(u)q+=a[z];q+=t(M);u=v}else u=r}return q}function t(m){var q=[],u,z;for(z=0;z<m[x];z++)if(w!=m[z]){u="";if(z!=o&&w==m[z-1])u+=z.toString()+s;u+=k(m[z]);V(q,u)}return j+q.join(n)+c}function k(m){var q="",u,z,M;for(u=0;u<\r
10219 m[x];u++){z=m.charAt(u);M=e[z];q+=w!=M?M:z}return q}var p=this,f={},h="k",d="v",a=[h,d],j="(",c=")",n="*",s="!",b="'",e={};e[b]="'0";e[c]="'1";e[n]="'2";e[s]="'3";var o=1;p.qc=function(m){return w!=f[m]};p.G=function(){var m="",q;for(q in f)if(w!=f[q])m+=q.toString()+g(f[q]);return m};p.Ac=function(m){if(m==w)return p.G();var q=m.G(),u;for(u in f)if(w!=f[u]&&!m.qc(u))q+=u.toString()+g(f[u]);return q};p._setKey=function(m,q,u){if(typeof u!="string")return v;i(m,h,q,u);return r};p._setValue=function(m,\r
10220 q,u){if(typeof u!="number"&&(w==Number||!(u instanceof Number))||Math.round(u)!=u||u==NaN||u==Infinity)return v;i(m,d,q,u.toString());return r};p._getKey=function(m,q){return w!=f[m]&&w!=f[m][h]?f[m][h][q]:w};p._getValue=function(m,q){return w!=f[m]&&w!=f[m][d]?f[m][d][q]:w};p._clearKey=function(m){l(m,h)};p._clearValue=function(m){l(m,d)}};Z.Jb=function(i,l){var g=this;g.Qc=l;g.xc=i;g._trackEvent=function(t,k,p){return l._trackEvent(g.xc,t,k,p)}};Z.aa=function(i,l){function g(){if("auto"==c.b){var b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.b=b}c.b=W(c.b)}function t(){var b=c.b,e=b.indexOf("www.google.")*b.indexOf(".google.")*b.indexOf("google.");return e||"/"!=c.h||b.indexOf("google.org")>-1}function k(b,e,o){if(N(b)||N(e)||N(o))return"-";b=P(b,D+a.c+".",e);if(!N(b)){b=b.split(".");b[5]=b[5]?b[5]*1+1:1;b[3]=b[4];b[4]=o;b=b.join(".")}return b}function p(){return"file:"!=c.a[A].protocol&&t()}function f(b){if(!b||""==b)return"";for(;ea(b.charAt(0));)b=\r
10221 O(b,1);for(;ea(b.charAt(b[x]-1));)b=O(b,0,b[x]-1);return b}function h(b,e,o,m){if(!N(b())){e(m?T(b()):b());U(b(),";")||o()}}function d(b){var e,o=""!=b&&c.a[A].host!=b;if(o)for(e=0;e<c.t[x];e++)o=o&&fa(W(b),W(c.t[e]))==-1;return o}var a=this,j=w,c=new Z.Gb,n=v,s=w;a.e=window;a.r=Math.round((new Date).getTime()/1E3);a.s=i||"UA-XXXXX-X";a.ab=c.a.referrer;a.ia=w;a.f=w;a.B=w;a.F=v;a.A=w;a.Ua="";a.g=w;a.cb=w;a.c=w;a.i=w;c.o=l?S(l):w;a.wc=function(){var b=v;if(a.B)b=a.B.match(/^[0-9a-z-_.]{10,1200}$/i);\r
10222 return b};a.jc=function(){return Y()^a.A.$b()&2147483647};a.ec=function(){if(!c.b||""==c.b||"none"==c.b){c.b="";return 1}g();return c.Ra?ia(c.b):1};a.Yb=function(b,e){if(N(b))b="-";else{e+=c.h&&"/"!=c.h?c.h:"";e=b.indexOf(e);b=e>=0&&e<=8?"0":"["==b.charAt(0)&&"]"==b.charAt(b[x]-1)?"-":b}return b};a.wa=function(b){var e="",o=c.a;e+=c.fa?a.A.Ic():"";e+=c.da?a.Ua:"";e+=c.ga&&!N(o.title)?"&utmdt="+S(o.title):"";e+="&utmhid="+ja()+"&utmr="+S(a.ia)+"&utmp="+S(a.Bc(b));return e};a.Bc=function(b){var e=c.a[A];\r
10223 return b=w!=b&&""!=b?S(b,r):S(e.pathname+e.search,r)};a.Lc=function(b){if(a.J()){var e="";if(a.g!=w&&a.g.G()[x]>0)e+="&utme="+S(a.g.G());e+=a.wa(b);j.H(e,a.s,a.c)}};a.Tb=function(){var b=new Z.$(c);return b.ua(a.c)?b.Hc():w};a._getLinkerUrl=function(b,e){var o=b.split("#"),m=b,q=a.Tb();if(q)if(e&&1>=o[x])m+="#"+q;else if(!e||1>=o[x])if(1>=o[x])m+=(U(b,"?")?B:"?")+q;else m=o[0]+(U(b,"?")?B:"?")+q+"#"+o[1];return m};a.Fc=function(){var b;if(a.wc()){a.i.Dc(a.B);a.i.Oc();Z._gasoDomain=c.b;Z._gasoCPath=\r
10224 c.h;b=c.a.createElement("script");b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.B+B+Y();c.a.getElementsByTagName("head")[0].appendChild(b)}};a.pc=function(){var b=a.r,e=a.i,o=e.k(),m=a.c+"",q=c.e,u=q?q.gaGlobal:w,z,M=U(o,D+m+"."),la=U(o,E+m),ma=U(o,G+m),F,I=[],R="",ha=v;o=N(o)?"":o;if(c.z){z=c.a[A]&&c.a[A].hash?c.a[A].href.substring(c.a[A].href.indexOf("#")):"";if(c.ba&&!N(z))R=z+B;R+=c.a[A].search;if(!N(R)&&U(R,D)){e.zc(R);e.kb()||e.Sb();\r
10225 F=e.ja()}h(e.ma,e.vb,e.Eb,true);h(e.la,e.Aa,e.Fa)}if(N(F))if(M)if(!la||!ma){F=k(o,";",b);a.F=r}else{F=P(o,D+m+".",";");I=X(P(o,E+m,";"),".")}else{F=ga([m,a.jc(),b,b,b,1],".");ha=a.F=r}else if(N(e.C())||N(e.ka())){F=k(R,B,b);a.F=r}else{I=X(e.C(),".");m=I[0]}F=F.split(".");if(q&&u&&u.dh==m&&!c.o){F[4]=u.sid?u.sid:F[4];if(ha){F[3]=u.sid?u.sid:F[4];if(u.vid){b=u.vid.split(".");F[1]=b[0];F[2]=b[1]}}}e.tb(F.join("."));I[0]=m;I[1]=I[1]?I[1]:0;I[2]=w!=I[2]?I[2]:c.Jc;I[3]=I[3]?I[3]:F[4];e.ya(I.join("."));\r
10226 e.ub(m);N(e.lc())||e.za(e.P());e.Cb();e.Ea();e.Db()};a.rc=function(){j=new Z.Kb(c)};a._initData=function(){var b;if(!n){if(!a.A){a.A=new Z.Fb(c);a.A.bc()}a.c=a.ec();a.i=new Z.$(c);a.g=new Z.N;s=new Z.Ib(c,a.c,a.i,a.g);a.rc()}if(p()){a.pc();s.tc()}if(!n){if(p()){a.ia=a.Yb(a.ab,c.a.domain);if(c.da){b=new Z.m(a.c,a.ia,a.r,c);a.Ua=b.cc(a.i,a.F)}}a.cb=new Z.N;n=r}Z.ib||a.sc()};a._visitCode=function(){a._initData();var b=P(a.i.k(),D+a.c+".",";");b=b.split(".");return b[x]<4?"":b[1]};a._cookiePathCopy=function(b){a._initData();\r
10227 a.i&&a.i.Nc(a.c,b)};a.sc=function(){var b=c.a[A].hash;if(b&&1==b.indexOf("gaso="))b=P(b,"gaso=",B);else b=(b=c.e.name)&&0<=b.indexOf("gaso=")?P(b,"gaso=",B):P(a.i.k(),L,";");if(b[x]>=10){a.B=b;a.Fc()}Z.ib=r};a.J=function(){return a._visitCode()%1E4<c.U*100};a.Gc=function(){var b,e,o=c.a.links;if(!c.lb){b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.t.push("."+b)}for(b=0;b<o[x]&&(c.ra==-1||b<c.ra);b++){e=o[b];if(d(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.yc;e.onclick=function(m){var q=\r
10228 !this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";q=q&&!a.Rb(m);a.Mc(m,this,q);return q?v:this.gatcOnclick?this.gatcOnclick(m):r}}}};a.yc=function(){};a._trackPageview=function(b){if(p()){a._initData();c.t&&a.Gc();a.Lc(b);a.F=v}};a._trackTrans=function(){var b=a.c,e=[],o,m,q;a._initData();if(a.f&&a.J()){for(o=0;o<a.f.Y[x];o++){m=a.f.Y[o];V(e,m.Ca());for(q=0;q<m.R[x];q++)V(e,m.R[q].Ca())}for(o=0;o<e[x];o++)j.H(e[o],a.s,b,r)}};a._setTrans=function(){var b=c.a,e,o,m;b=b.getElementById?\r
10229 b.getElementById("utmtrans"):b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:w;a._initData();if(b&&b.value){a.f=new Z.n;m=b.value.split("UTM:");c.u=!c.u||""==c.u?"|":c.u;for(b=0;b<m[x];b++){m[b]=f(m[b]);e=m[b].split(c.u);for(o=0;o<e[x];o++)e[o]=f(e[o]);if("T"==e[0])a._addTrans(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]);else"I"==e[0]&&a._addItem(e[1],e[2],e[3],e[4],e[5],e[6])}}};a._addTrans=function(b,e,o,m,q,u,z,M){a.f=a.f?a.f:new Z.n;return a.f.Ob(b,e,o,m,q,u,z,M)};a._addItem=function(b,e,o,m,q,u){var z;\r
10230 a.f=a.f?a.f:new Z.n;(z=a.f.hb(b))||(z=a._addTrans(b,"","","","","","",""));z.Nb(e,o,m,q,u)};a._setVar=function(b){if(b&&""!=b&&t()){a._initData();s.Ec(S(b));a.J()&&j.H("&utmt=var",a.s,a.c)}};a._setCustomVar=function(b,e,o,m){a._initData();return s.Cc(b,e,o,m)};a._deleteCustomVar=function(b){a._initData();s.Ub(b)};a._getVisitorCustomVar=function(b){a._initData();return s.mc(b)};a._setMaxCustomVariables=function(b){c.ob=b};a._link=function(b,e){if(c.z&&b){a._initData();c.a[A].href=a._getLinkerUrl(b,\r
10231 e)}};a._linkByPost=function(b,e){if(c.z&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,o){a.g._setKey(b,e,o)};a._setXValue=function(b,e,o){a.g._setValue(b,e,o)};a._getXKey=function(b,e){return a.g._getKey(b,e)};a._getXValue=function(b,e){return a.g.getValue(b,e)};a._clearXKey=function(b){a.g._clearKey(b)};a._clearXValue=function(b){a.g._clearValue(b)};a._createXObj=function(){a._initData();return new Z.N};a._sendXEvent=function(b){var e="";a._initData();\r
10232 if(a.J()){e+="&utmt=event&utme="+S(a.g.Ac(b))+a.wa();j.H(e,a.s,a.c,v,r)}};a._createEventTracker=function(b){a._initData();return new Z.Jb(b,a)};a._trackEvent=function(b,e,o,m){var q=a.cb;if(w!=b&&w!=e&&""!=b&&""!=e){q._clearKey(5);q._clearValue(5);(b=q._setKey(5,1,b)&&q._setKey(5,2,e)&&(w==o||q._setKey(5,3,o))&&(w==m||q._setValue(5,1,m)))&&a._sendXEvent(q)}else b=v;return b};a.Mc=function(b,e,o){a._initData();if(a.J()){var m=new Z.N;m._setKey(6,1,e.href);var q=o?function(){a.db(b,e)}:w;j.H("&utmt=event&utme="+\r
10233 S(m.G())+a.wa(),a.s,a.c,v,r,q);if(o){var u=this;c.e.setTimeout(function(){u.db(b,e)},500)}}};a.db=function(b,e){if(!b)b=c.e.event;var o=r;if(e.gatcOnclick)o=e.gatcOnclick(b);if(o||typeof o=="undefined")if(!e.target||e.target=="_self")c.e[A]=e.href;else if(e.target=="_top")c.e.top.document[A]=e.href;else if(e.target=="_parent")c.e.parent.document[A]=e.href};a.Rb=function(b){if(!b)b=c.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&c.e.Event)e=b.modifiers&c.e.Event.CONTROL_MASK||\r
10234 b.modifiers&c.e.Event.SHIFT_MASK||b.modifiers&c.e.Event.ALT_MASK;return e};a.Pc=function(){return c};a._setDomainName=function(b){c.b=b};a._addOrganic=function(b,e,o){c.T.splice(o?0:c.T.length,0,new Z.Ha(b,e))};a._clearOrganic=function(){c.T=[]};a._addIgnoredOrganic=function(b){V(c.ta,b)};a._clearIgnoredOrganic=function(){c.ta=[]};a._addIgnoredRef=function(b){V(c.va,b)};a._clearIgnoredRef=function(){c.va=[]};a._setAllowHash=function(b){c.Ra=b?1:0};a._setCampaignTrack=function(b){c.da=b?1:0};a._setClientInfo=\r
10235 function(b){c.fa=b?1:0};a._getClientInfo=function(){return c.fa};a._setCookiePath=function(b){c.h=b};a._setTransactionDelim=function(b){c.u=b};a._setCookieTimeout=function(b){a._setCampaignCookieTimeout(b*1E3)};a._setCampaignCookieTimeout=function(b){c.Ta=b};a._setDetectFlash=function(b){c.ha=b?1:0};a._getDetectFlash=function(){return c.ha};a._setDetectTitle=function(b){c.ga=b?1:0};a._getDetectTitle=function(){return c.ga};a._setLocalGifPath=function(b){c.oa=b};a._getLocalGifPath=function(){return c.oa};\r
10236 a._setLocalServerMode=function(){c.I=0};a._setRemoteServerMode=function(){c.I=1};a._setLocalRemoteServerMode=function(){c.I=2};a._getServiceMode=function(){return c.I};a._setSampleRate=function(b){c.U=b};a._setSessionTimeout=function(b){a._setSessionCookieTimeout(b*1E3)};a._setSessionCookieTimeout=function(b){c.sb=b};a._setAllowLinker=function(b){c.z=b?1:0};a._setAllowAnchor=function(b){c.ba=b?1:0};a._setCampNameKey=function(b){c.Ia=b};a._setCampContentKey=function(b){c.Ja=b};a._setCampIdKey=function(b){c.Ka=\r
10237 b};a._setCampMediumKey=function(b){c.La=b};a._setCampNOKey=function(b){c.Ma=b};a._setCampSourceKey=function(b){c.Na=b};a._setCampTermKey=function(b){c.Oa=b};a._setCampCIdKey=function(b){c.Pa=b};a._getAccount=function(){return a.s};a._setAccount=function(b){a.s=b};a._setNamespace=function(b){c.o=b?S(b):w};a._getVersion=function(){return ca};a._setAutoTrackOutbound=function(b){c.t=[];if(b)c.t=b};a._setTrackOutboundSubdomains=function(b){c.lb=b};a._setHrefExamineLimit=function(b){c.ra=b};a._setReferrerOverride=\r
10238 function(b){a.ab=b};a._setCookiePersistence=function(b){a._setVisitorCookieTimeout(b)};a._setVisitorCookieTimeout=function(b){c.v=b}};Z._getTracker=function(i,l){return new Z.aa(i,l)};var ka=v,$={ca:{},_createAsyncTracker:function(i,l){l=l||"";i=new Z.aa(i);$.ca[l]=i;ka=r;return i},_getAsyncTracker:function(i){i=i||"";var l=$.ca[i];if(!l){l=new Z.aa;$.ca[i]=l;ka=r}return l},push:function(){for(var i=arguments,l=0,g=0;g<i[x];g++)try{if(typeof i[g]==="function")i[g]();else{var t="",k=i[g][0],p=k.lastIndexOf(".");if(p>0){t=O(k,0,p);k=O(k,p+1)}var f=$._getAsyncTracker(t);f[k].apply(f,i[g].slice(1))}}catch(h){l++}return l}};window[aa]=Z;function na(){var i=window[ba],l=v;if(i&&typeof i.push=="function"){l=i.constructor==Array;if(!l)return}window[ba]=$;l&&$.push.apply($,i)}na();})()\r
10239 \r
10240 \r
10241 \r
10242 try {\r
10243 var pageTracker = _gat._getTracker("UA-86951-7");\r
10244 pageTracker._trackPageview();\r
10245 } catch(err) {}\r
10246 </script>\r
10247 \r
10248 \r
10249 <script id="dojo" type="x">\r
10250 /*\r
10251         Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.\r
10252         Available via Academic Free License >= 2.1 OR the modified BSD license.\r
10253         see: http://dojotoolkit.org/license for details\r
10254 */\r
10255 \r
10256 /*\r
10257         This is a compiled version of Dojo, built for deployment and not for\r
10258         development. To get an editable version, please visit:\r
10259 \r
10260                 http://dojotoolkit.org\r
10261 \r
10262         for documentation and information on getting the source.\r
10263 */\r
10264 \r
10265 (function(){var _1=null;if((_1||(typeof djConfig!="undefined"&&djConfig.scopeMap))&&(typeof window!="undefined")){var _2="",_3="",_4="",_5={},_6={};_1=_1||djConfig.scopeMap;for(var i=0;i<_1.length;i++){var _7=_1[i];_2+="var "+_7[0]+" = {}; "+_7[1]+" = "+_7[0]+";"+_7[1]+"._scopeName = '"+_7[1]+"';";_3+=(i==0?"":",")+_7[0];_4+=(i==0?"":",")+_7[1];_5[_7[0]]=_7[1];_6[_7[1]]=_7[0];}eval(_2+"dojo._scopeArgs = ["+_4+"];");dojo._scopePrefixArgs=_3;dojo._scopePrefix="(function("+_3+"){";dojo._scopeSuffix="})("+_4+")";dojo._scopeMap=_5;dojo._scopeMapRev=_6;}(function(){if(typeof this["loadFirebugConsole"]=="function"){this["loadFirebugConsole"]();}else{this.console=this.console||{};var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var _8=tn+"";console[_8]=("log" in console)?function(){var a=Array.apply({},arguments);a.unshift(_8+":");console["log"](a.join(" "));}:function(){};console[_8]._fake=true;})();}}}if(typeof dojo=="undefined"){dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};if(typeof djConfig!="undefined"){for(var _9 in djConfig){d.config[_9]=djConfig[_9];}}dojo.locale=d.config.locale;var _a="$Rev: 21254 $".match(/\d+/);dojo.version={major:1,minor:4,patch:1,flag:"",revision:_a?+_a[0]:NaN,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}var _b,_c,_d={};for(var i in {toString:1}){_b=[];break;}dojo._extraNames=_b=_b||["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];_c=_b.length;dojo._mixin=function(_e,_f){var _10,s,i;for(_10 in _f){s=_f[_10];if(!(_10 in _e)||(_e[_10]!==s&&(!(_10 in _d)||_d[_10]!==s))){_e[_10]=s;}}if(_c&&_f){for(i=0;i<_c;++i){_10=_b[i];s=_f[_10];if(!(_10 in _e)||(_e[_10]!==s&&(!(_10 in _d)||_d[_10]!==s))){_e[_10]=s;}}}return _e;};dojo.mixin=function(obj,_11){if(!obj){obj={};}for(var i=1,l=arguments.length;i<l;i++){d._mixin(obj,arguments[i]);}return obj;};dojo._getProp=function(_12,_13,_14){var obj=_14||d.global;for(var i=0,p;obj&&(p=_12[i]);i++){if(i==0&&d._scopeMap[p]){p=d._scopeMap[p];}obj=(p in obj?obj[p]:(_13?obj[p]={}:undefined));}return obj;};dojo.setObject=function(_15,_16,_17){var _18=_15.split("."),p=_18.pop(),obj=d._getProp(_18,true,_17);return obj&&p?(obj[p]=_16):undefined;};dojo.getObject=function(_19,_1a,_1b){return d._getProp(_19.split("."),_1a,_1b);};dojo.exists=function(_1c,obj){return !!d.getObject(_1c,false,obj);};dojo["eval"]=function(_1d){return d.global.eval?d.global.eval(_1d):eval(_1d);};d.deprecated=d.experimental=function(){};})();(function(){var d=dojo;d.mixin(d,{_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(_1e){var mp=d._modulePrefixes;return !!(mp[_1e]&&mp[_1e].value);},_getModulePrefix:function(_1f){var mp=d._modulePrefixes;if(d._moduleHasPrefix(_1f)){return mp[_1f].value;}return _1f;},_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});dojo._loadPath=function(_20,_21,cb){var uri=((_20.charAt(0)=="/"||_20.match(/^\w+:/))?"":d.baseUrl)+_20;try{return !_21?d._loadUri(uri,cb):d._loadUriAndCheck(uri,_21,cb);}catch(e){console.error(e);return false;}};dojo._loadUri=function(uri,cb){if(d._loadedUrls[uri]){return true;}d._inFlightCount++;var _22=d._getText(uri,true);if(_22){d._loadedUrls[uri]=true;d._loadedUrls.push(uri);if(cb){_22="("+_22+")";}else{_22=d._scopePrefix+_22+d._scopeSuffix;}if(!d.isIE){_22+="\r\n//@ sourceURL="+uri;}var _23=d["eval"](_22);if(cb){cb(_23);}}if(--d._inFlightCount==0&&d._postLoad&&d._loaders.length){setTimeout(function(){if(d._inFlightCount==0){d._callLoaded();}},0);}return !!_22;};dojo._loadUriAndCheck=function(uri,_24,cb){var ok=false;try{ok=d._loadUri(uri,cb);}catch(e){console.error("failed loading "+uri+" with error: "+e);}return !!(ok&&d._loadedModules[_24]);};dojo.loaded=function(){d._loadNotifying=true;d._postLoad=true;var mll=d._loaders;d._loaders=[];for(var x=0;x<mll.length;x++){mll[x]();}d._loadNotifying=false;if(d._postLoad&&d._inFlightCount==0&&mll.length){d._callLoaded();}};dojo.unloaded=function(){var mll=d._unloaders;while(mll.length){(mll.pop())();}};d._onto=function(arr,obj,fn){if(!fn){arr.push(obj);}else{if(fn){var _25=(typeof fn=="string")?obj[fn]:fn;arr.push(function(){_25.call(obj);});}}};dojo.ready=dojo.addOnLoad=function(obj,_26){d._onto(d._loaders,obj,_26);if(d._postLoad&&d._inFlightCount==0&&!d._loadNotifying){d._callLoaded();}};var dca=d.config.addOnLoad;if(dca){d.addOnLoad[(dca instanceof Array?"apply":"call")](d,dca);}dojo._modulesLoaded=function(){if(d._postLoad){return;}if(d._inFlightCount>0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(d.config.useXDomain&&d.isOpera)){setTimeout(d.isAIR?function(){d.loaded();}:d._scopeName+".loaded();",0);}else{d.loaded();}};dojo._getModuleSymbols=function(_27){var _28=_27.split(".");for(var i=_28.length;i>0;i--){var _29=_28.slice(0,i).join(".");if(i==1&&!d._moduleHasPrefix(_29)){_28[0]="../"+_28[0];}else{var _2a=d._getModulePrefix(_29);if(_2a!=_29){_28.splice(0,i,_2a);break;}}}return _28;};dojo._global_omit_module_check=false;dojo.loadInit=function(_2b){_2b();};dojo._loadModule=dojo.require=function(_2c,_2d){_2d=d._global_omit_module_check||_2d;var _2e=d._loadedModules[_2c];if(_2e){return _2e;}var _2f=d._getModuleSymbols(_2c).join("/")+".js";var _30=!_2d?_2c:null;var ok=d._loadPath(_2f,_30);if(!ok&&!_2d){throw new Error("Could not load '"+_2c+"'; last tried '"+_2f+"'");}if(!_2d&&!d._isXDomain){_2e=d._loadedModules[_2c];if(!_2e){throw new Error("symbol '"+_2c+"' is not defined after loading '"+_2f+"'");}}return _2e;};dojo.provide=function(_31){_31=_31+"";return (d._loadedModules[_31]=d.getObject(_31,true));};dojo.platformRequire=function(_32){var _33=_32.common||[];var _34=_33.concat(_32[d._name]||_32["default"]||[]);for(var x=0;x<_34.length;x++){var _35=_34[x];if(_35.constructor==Array){d._loadModule.apply(d,_35);}else{d._loadModule(_35);}}};dojo.requireIf=function(_36,_37){if(_36===true){var _38=[];for(var i=1;i<arguments.length;i++){_38.push(arguments[i]);}d.require.apply(d,_38);}};dojo.requireAfterIf=d.requireIf;dojo.registerModulePath=function(_39,_3a){d._modulePrefixes[_39]={name:_39,value:_3a};};dojo.requireLocalization=function(_3b,_3c,_3d,_3e){d.require("dojo.i18n");d.i18n._requireLocalization.apply(d.hostenv,arguments);};var ore=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),ire=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");dojo._Url=function(){var n=null,_3f=arguments,uri=[_3f[0]];for(var i=1;i<_3f.length;i++){if(!_3f[i]){continue;}var _40=new d._Url(_3f[i]+""),_41=new d._Url(uri[0]+"");if(_40.path==""&&!_40.scheme&&!_40.authority&&!_40.query){if(_40.fragment!=n){_41.fragment=_40.fragment;}_40=_41;}else{if(!_40.scheme){_40.scheme=_41.scheme;if(!_40.authority){_40.authority=_41.authority;if(_40.path.charAt(0)!="/"){var _42=_41.path.substring(0,_41.path.lastIndexOf("/")+1)+_40.path;var _43=_42.split("/");for(var j=0;j<_43.length;j++){if(_43[j]=="."){if(j==_43.length-1){_43[j]="";}else{_43.splice(j,1);j--;}}else{if(j>0&&!(j==1&&_43[0]=="")&&_43[j]==".."&&_43[j-1]!=".."){if(j==(_43.length-1)){_43.splice(j,1);_43[j-1]="";}else{_43.splice(j-1,2);j-=2;}}}}_40.path=_43.join("/");}}}}uri=[];if(_40.scheme){uri.push(_40.scheme,":");}if(_40.authority){uri.push("//",_40.authority);}uri.push(_40.path);if(_40.query){uri.push("?",_40.query);}if(_40.fragment){uri.push("#",_40.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_44,url){var loc=d._getModuleSymbols(_44).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _45=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_45==-1||_45>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _46=document.getElementsByTagName("script");var _47=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_46.length;i++){var src=_46[i].getAttribute("src");if(!src){continue;}var m=src.match(_47);if(m){if(!d.config.baseUrl){d.config.baseUrl=src.substring(0,m.index);}var cfg=_46[i].getAttribute("djConfig");if(cfg){var _48=eval("({ "+cfg+" })");for(var x in _48){dojo.config[x]=_48[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);if(dua.indexOf("Opera")>=0){d.isOpera=tv;}if(dua.indexOf("AdobeAIR")>=0){d.isAIR=1;}d.isKhtml=(dav.indexOf("Konqueror")>=0)?tv:0;d.isWebKit=parseFloat(dua.split("WebKit/")[1])||undefined;d.isChrome=parseFloat(dua.split("Chrome/")[1])||undefined;d.isMac=dav.indexOf("Macintosh")>=0;var _49=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(_49&&!dojo.isChrome){d.isSafari=parseFloat(dav.split("Version/")[1]);if(!d.isSafari||parseFloat(dav.substr(_49+7))<=419.3){d.isSafari=2;}}if(dua.indexOf("Gecko")>=0&&!d.isKhtml&&!d.isWebKit){d.isMozilla=d.isMoz=tv;}if(d.isMoz){d.isFF=parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined;}if(document.all&&!d.isOpera){d.isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var _4a=document.documentMode;if(_4a&&_4a!=5&&Math.floor(d.isIE)!=_4a){d.isIE=_4a;}}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}d.isQuirks=document.compatMode=="BackCompat";d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _4b,_4c;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_4b=new XMLHttpRequest();}catch(e){}}if(!_4b){for(var i=0;i<3;++i){var _4d=d._XMLHTTP_PROGIDS[i];try{_4b=new ActiveXObject(_4d);}catch(e){_4c=e;}if(_4b){d._XMLHTTP_PROGIDS=[_4d];break;}}}if(!_4b){throw new Error("XMLHTTP not available: "+_4c);}return _4b;};d._isDocumentOk=function(_4e){var _4f=_4e.status||0,lp=location.protocol;return (_4f>=200&&_4f<300)||_4f==304||_4f==1223||(!_4f&&(lp=="file:"||lp=="chrome:"||lp=="app:"));};var _50=window.location+"";var _51=document.getElementsByTagName("base");var _52=(_51&&_51.length>0);d._getText=function(uri,_53){var _54=d._xhrObj();if(!_52&&dojo._Url){uri=(new dojo._Url(_50,uri)).toString();}if(d.config.cacheBust){uri+="";uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_54.open("GET",uri,false);try{_54.send(null);if(!d._isDocumentOk(_54)){var err=Error("Unable to load "+uri+" status:"+_54.status);err.status=_54.status;err.responseText=_54.responseText;throw err;}}catch(e){if(_53){return null;}throw e;}return _54.responseText;};var _55=window;var _56=function(_57,fp){var _58=_55.attachEvent||_55.addEventListener;_57=_55.attachEvent?_57:_57.substring(2);_58(_57,function(){fp.apply(_55,arguments);},false);};d._windowUnloaders=[];d.windowUnloaded=function(){var mll=d._windowUnloaders;while(mll.length){(mll.pop())();}};var _59=0;d.addOnWindowUnload=function(obj,_5a){d._onto(d._windowUnloaders,obj,_5a);if(!_59){_59=1;_56("onunload",d.windowUnloaded);}};var _5b=0;d.addOnUnload=function(obj,_5c){d._onto(d._unloaders,obj,_5c);if(!_5b){_5b=1;_56("onbeforeunload",dojo.unloaded);}};})();dojo._initFired=false;dojo._loadInit=function(e){if(!dojo._initFired){dojo._initFired=true;if(!dojo.config.afterOnLoad&&window.detachEvent){window.detachEvent("onload",dojo._loadInit);}if(dojo._inFlightCount==0){dojo._modulesLoaded();}}};if(!dojo.config.afterOnLoad){if(document.addEventListener){document.addEventListener("DOMContentLoaded",dojo._loadInit,false);window.addEventListener("load",dojo._loadInit,false);}else{if(window.attachEvent){window.attachEvent("onload",dojo._loadInit);}}}if(dojo.isIE){if(!dojo.config.afterOnLoad&&!dojo.config.skipIeDomLoaded){document.write("<scr"+"ipt defer src=\"//:\" "+"onreadystatechange=\"if(this.readyState=='complete'){"+dojo._scopeName+"._loadInit();}\">"+"</scr"+"ipt>");}try{document.namespaces.add("v","urn:schemas-microsoft-com:vml");var _5d=["*","group","roundrect","oval","shape","rect","imagedata"],i=0,l=1,s=document.createStyleSheet();if(dojo.isIE>=8){i=1;l=_5d.length;}for(;i<l;++i){s.addRule("v\\:"+_5d[i],"behavior:url(#default#VML); display:inline-block");}}catch(e){}}}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _5e in mp){dojo.registerModulePath(_5e,mp[_5e]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.config.useXDomain=true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");dojo.require("dojo.i18n");}if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");(function(){var d=dojo,_5f=Object.prototype.toString;dojo.isString=function(it){return (typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=function(it){return _5f.call(it)==="[object Function]";};dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||d.isArray(it)||d.isFunction(it));};dojo.isArrayLike=function(it){return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!d.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_60,_61){for(var i=1,l=arguments.length;i<l;i++){d._mixin(_60.prototype,arguments[i]);}return _60;};dojo._hitchArgs=function(_62,_63){var pre=d._toArray(arguments,2);var _64=d.isString(_63);return function(){var _65=d._toArray(arguments);var f=_64?(_62||d.global)[_63]:_63;return f&&f.apply(_62||this,pre.concat(_65));};};dojo.hitch=function(_66,_67){if(arguments.length>2){return d._hitchArgs.apply(d,arguments);}if(!_67){_67=_66;_66=null;}if(d.isString(_67)){_66=_66||d.global;if(!_66[_67]){throw (["dojo.hitch: scope[\"",_67,"\"] is null (scope=\"",_66,"\")"].join(""));}return function(){return _66[_67].apply(_66,arguments||[]);};}return !_66?_67:function(){return _67.apply(_66,arguments||[]);};};dojo.delegate=dojo._delegate=(function(){function TMP(){};return function(obj,_68){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_68){d._mixin(tmp,_68);}return tmp;};})();var _69=function(obj,_6a,_6b){return (_6b||[]).concat(Array.prototype.slice.call(obj,_6a||0));};var _6c=function(obj,_6d,_6e){var arr=_6e||[];for(var x=_6d||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};dojo._toArray=d.isIE?function(obj){return ((obj.item)?_6c:_69).apply(this,arguments);}:_69;dojo.partial=function(_6f){var arr=[null];return d.hitch.apply(d,arr.concat(d._toArray(arguments)));};var _70=d._extraNames,_71=_70.length,_72={};dojo.clone=function(o){if(!o||typeof o!="object"||d.isFunction(o)){return o;}if(o.nodeType&&"cloneNode" in o){return o.cloneNode(true);}if(o instanceof Date){return new Date(o.getTime());}var r,i,l,s,_73;if(d.isArray(o)){r=[];for(i=0,l=o.length;i<l;++i){if(i in o){r.push(d.clone(o[i]));}}}else{r=o.constructor?new o.constructor():{};}for(_73 in o){s=o[_73];if(!(_73 in r)||(r[_73]!==s&&(!(_73 in _72)||_72[_73]!==s))){r[_73]=d.clone(s);}}if(_71){for(i=0;i<_71;++i){_73=_70[i];s=o[_73];if(!(_73 in r)||(r[_73]!==s&&(!(_73 in _72)||_72[_73]!==s))){r[_73]=s;}}}return r;};dojo.trim=String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");};var _74=/\{([^\}]+)\}/g;dojo.replace=function(_75,map,_76){return _75.replace(_76||_74,d.isFunction(map)?map:function(_77,k){return d.getObject(k,false,map);});};})();}if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.provide("dojo._base.array");(function(){var _78=function(arr,obj,cb){return [(typeof arr=="string")?arr.split(""):arr,obj||dojo.global,(typeof cb=="string")?new Function("item","index","array",cb):cb];};var _79=function(_7a,arr,_7b,_7c){var _7d=_78(arr,_7c,_7b);arr=_7d[0];for(var i=0,l=arr.length;i<l;++i){var _7e=!!_7d[2].call(_7d[1],arr[i],i,arr);if(_7a^_7e){return _7e;}}return _7a;};dojo.mixin(dojo,{indexOf:function(_7f,_80,_81,_82){var _83=1,end=_7f.length||0,i=0;if(_82){i=end-1;_83=end=-1;}if(_81!=undefined){i=_81;}if((_82&&i>end)||i<end){for(;i!=end;i+=_83){if(_7f[i]==_80){return i;}}}return -1;},lastIndexOf:function(_84,_85,_86){return dojo.indexOf(_84,_85,_86,true);},forEach:function(arr,_87,_88){if(!arr||!arr.length){return;}var _89=_78(arr,_88,_87);arr=_89[0];for(var i=0,l=arr.length;i<l;++i){_89[2].call(_89[1],arr[i],i,arr);}},every:function(arr,_8a,_8b){return _79(true,arr,_8a,_8b);},some:function(arr,_8c,_8d){return _79(false,arr,_8c,_8d);},map:function(arr,_8e,_8f){var _90=_78(arr,_8f,_8e);arr=_90[0];var _91=(arguments[3]?(new arguments[3]()):[]);for(var i=0,l=arr.length;i<l;++i){_91.push(_90[2].call(_90[1],arr[i],i,arr));}return _91;},filter:function(arr,_92,_93){var _94=_78(arr,_93,_92);arr=_94[0];var _95=[];for(var i=0,l=arr.length;i<l;++i){if(_94[2].call(_94[1],arr[i],i,arr)){_95.push(arr[i]);}}return _95;}});})();}if(!dojo._hasResource["dojo._base.declare"]){dojo._hasResource["dojo._base.declare"]=true;dojo.provide("dojo._base.declare");(function(){var d=dojo,mix=d._mixin,op=Object.prototype,_96=op.toString,_97=new Function,_98=0,_99="constructor";function err(msg){throw new Error("declare: "+msg);};function _9a(_9b){var _9c=[],_9d=[{cls:0,refs:[]}],_9e={},_9f=1,l=_9b.length,i=0,j,lin,_a0,top,_a1,rec,_a2,_a3;for(;i<l;++i){_a0=_9b[i];if(!_a0){err("mixin #"+i+" is null");}lin=_a0._meta?_a0._meta.bases:[_a0];top=0;for(j=lin.length-1;j>=0;--j){_a1=lin[j].prototype;if(!_a1.hasOwnProperty("declaredClass")){_a1.declaredClass="uniqName_"+(_98++);}_a2=_a1.declaredClass;if(!_9e.hasOwnProperty(_a2)){_9e[_a2]={count:0,refs:[],cls:lin[j]};++_9f;}rec=_9e[_a2];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_9d[0].refs.push(top);}while(_9d.length){top=_9d.pop();_9c.push(top.cls);--_9f;while(_a3=top.refs,_a3.length==1){top=_a3[0];if(!top||--top.count){top=0;break;}_9c.push(top.cls);--_9f;}if(top){for(i=0,l=_a3.length;i<l;++i){top=_a3[i];if(!--top.count){_9d.push(top);}}}}if(_9f){err("can't build consistent linearization");}_a0=_9b[0];_9c[0]=_a0?_a0._meta&&_a0===_9c[_9c.length-_a0._meta.bases.length]?_a0._meta.bases.length:1:0;return _9c;};function _a4(_a5,a,f){var _a6,_a7,_a8,_a9,_aa,_ab,_ac,opf,pos,_ad=this._inherited=this._inherited||{};if(typeof _a5=="string"){_a6=_a5;_a5=a;a=f;}f=0;_a9=_a5.callee;_a6=_a6||_a9.nom;if(!_a6){err("can't deduce a name to call inherited()");}_aa=this.constructor._meta;_a8=_aa.bases;pos=_ad.p;if(_a6!=_99){if(_ad.c!==_a9){pos=0;_ab=_a8[0];_aa=_ab._meta;if(_aa.hidden[_a6]!==_a9){_a7=_aa.chains;if(_a7&&typeof _a7[_a6]=="string"){err("calling chained method with inherited: "+_a6);}do{_aa=_ab._meta;_ac=_ab.prototype;if(_aa&&(_ac[_a6]===_a9&&_ac.hasOwnProperty(_a6)||_aa.hidden[_a6]===_a9)){break;}}while(_ab=_a8[++pos]);pos=_ab?pos:-1;}}_ab=_a8[++pos];if(_ab){_ac=_ab.prototype;if(_ab._meta&&_ac.hasOwnProperty(_a6)){f=_ac[_a6];}else{opf=op[_a6];do{_ac=_ab.prototype;f=_ac[_a6];if(f&&(_ab._meta?_ac.hasOwnProperty(_a6):f!==opf)){break;}}while(_ab=_a8[++pos]);}}f=_ab&&f||op[_a6];}else{if(_ad.c!==_a9){pos=0;_aa=_a8[0]._meta;if(_aa&&_aa.ctor!==_a9){_a7=_aa.chains;if(!_a7||_a7.constructor!=="manual"){err("calling chained constructor with inherited");}while(_ab=_a8[++pos]){_aa=_ab._meta;if(_aa&&_aa.ctor===_a9){break;}}pos=_ab?pos:-1;}}while(_ab=_a8[++pos]){_aa=_ab._meta;f=_aa?_aa.ctor:_ab;if(f){break;}}f=_ab&&f;}_ad.c=f;_ad.p=pos;if(f){return a===true?f:f.apply(this,a||_a5);}};function _ae(_af,_b0){if(typeof _af=="string"){return this.inherited(_af,_b0,true);}return this.inherited(_af,true);};function _b1(cls){var _b2=this.constructor._meta.bases;for(var i=0,l=_b2.length;i<l;++i){if(_b2[i]===cls){return true;}}return this instanceof cls;};function _b3(_b4,_b5){var _b6,t,i=0,l=d._extraNames.length;for(_b6 in _b5){t=_b5[_b6];if((t!==op[_b6]||!(_b6 in op))&&_b6!=_99){if(_96.call(t)=="[object Function]"){t.nom=_b6;}_b4[_b6]=t;}}for(;i<l;++i){_b6=d._extraNames[i];t=_b5[_b6];if((t!==op[_b6]||!(_b6 in op))&&_b6!=_99){if(_96.call(t)=="[object Function]"){t.nom=_b6;}_b4[_b6]=t;}}return _b4;};function _b7(_b8){_b3(this.prototype,_b8);return this;};function _b9(_ba,_bb){return function(){var a=arguments,_bc=a,a0=a[0],f,i,m,l=_ba.length,_bd;if(_bb&&(a0&&a0.preamble||this.preamble)){_bd=new Array(_ba.length);_bd[0]=a;for(i=0;;){a0=a[0];if(a0){f=a0.preamble;if(f){a=f.apply(this,a)||a;}}f=_ba[i].prototype;f=f.hasOwnProperty("preamble")&&f.preamble;if(f){a=f.apply(this,a)||a;}if(++i==l){break;}_bd[i]=a;}}for(i=l-1;i>=0;--i){f=_ba[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_bd?_bd[i]:a);}}f=this.postscript;if(f){f.apply(this,_bc);}};};function _be(_bf,_c0){return function(){var a=arguments,t=a,a0=a[0],f;if(_c0){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(_bf){_bf.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _c1(_c2){return function(){var a=arguments,i=0,f;for(;f=_c2[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _c3(_c4,_c5,_c6){return function(){var b,m,f,i=0,_c7=1;if(_c6){i=_c5.length-1;_c7=-1;}for(;b=_c5[i];i+=_c7){m=b._meta;f=(m?m.hidden:b.prototype)[_c4];if(f){f.apply(this,arguments);}}};};d.declare=function(_c8,_c9,_ca){var _cb,i,t,_cc,_cd,_ce,_cf,_d0=1,_d1=_c9;if(typeof _c8!="string"){_ca=_c9;_c9=_c8;_c8="";}_ca=_ca||{};if(_96.call(_c9)=="[object Array]"){_ce=_9a(_c9);t=_ce[0];_d0=_ce.length-t;_c9=_ce[_d0];}else{_ce=[0];if(_c9){t=_c9._meta;_ce=_ce.concat(t?t.bases:_c9);}}if(_c9){for(i=_d0-1;;--i){_97.prototype=_c9.prototype;_cb=new _97;if(!i){break;}t=_ce[i];mix(_cb,t._meta?t._meta.hidden:t.prototype);_cc=new Function;_cc.superclass=_c9;_cc.prototype=_cb;_c9=_cb.constructor=_cc;}}else{_cb={};}_b3(_cb,_ca);t=_ca.constructor;if(t!==op.constructor){t.nom=_99;_cb.constructor=t;}_97.prototype=0;for(i=_d0-1;i;--i){t=_ce[i]._meta;if(t&&t.chains){_cf=mix(_cf||{},t.chains);}}if(_cb["-chains-"]){_cf=mix(_cf||{},_cb["-chains-"]);}t=!_cf||!_cf.hasOwnProperty(_99);_ce[0]=_cc=(_cf&&_cf.constructor==="manual")?_c1(_ce):(_ce.length==1?_be(_ca.constructor,t):_b9(_ce,t));_cc._meta={bases:_ce,hidden:_ca,chains:_cf,parents:_d1,ctor:_ca.constructor};_cc.superclass=_c9&&_c9.prototype;_cc.extend=_b7;_cc.prototype=_cb;_cb.constructor=_cc;_cb.getInherited=_ae;_cb.inherited=_a4;_cb.isInstanceOf=_b1;if(_c8){_cb.declaredClass=_c8;d.setObject(_c8,_cc);}if(_cf){for(_cd in _cf){if(_cb[_cd]&&typeof _cf[_cd]=="string"&&_cd!=_99){t=_cb[_cd]=_c3(_cd,_ce,_cf[_cd]==="after");t.nom=_cd;}}}return _cc;};d.safeMixin=_b3;})();}if(!dojo._hasResource["dojo._base.connect"]){dojo._hasResource["dojo._base.connect"]=true;dojo.provide("dojo._base.connect");dojo._listener={getDispatcher:function(){return function(){var ap=Array.prototype,c=arguments.callee,ls=c._listeners,t=c.target;var r=t&&t.apply(this,arguments);var lls;lls=[].concat(ls);for(var i in lls){if(!(i in ap)){lls[i].apply(this,arguments);}}return r;};},add:function(_d2,_d3,_d4){_d2=_d2||dojo.global;var f=_d2[_d3];if(!f||!f._listeners){var d=dojo._listener.getDispatcher();d.target=f;d._listeners=[];f=_d2[_d3]=d;}return f._listeners.push(_d4);},remove:function(_d5,_d6,_d7){var f=(_d5||dojo.global)[_d6];if(f&&f._listeners&&_d7--){delete f._listeners[_d7];}}};dojo.connect=function(obj,_d8,_d9,_da,_db){var a=arguments,_dc=[],i=0;_dc.push(dojo.isString(a[0])?null:a[i++],a[i++]);var a1=a[i+1];_dc.push(dojo.isString(a1)||dojo.isFunction(a1)?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){_dc.push(a[i]);}return dojo._connect.apply(this,_dc);};dojo._connect=function(obj,_dd,_de,_df){var l=dojo._listener,h=l.add(obj,_dd,dojo.hitch(_de,_df));return [obj,_dd,h,l];};dojo.disconnect=function(_e0){if(_e0&&_e0[0]!==undefined){dojo._disconnect.apply(this,_e0);delete _e0[0];}};dojo._disconnect=function(obj,_e1,_e2,_e3){_e3.remove(obj,_e1,_e2);};dojo._topics={};dojo.subscribe=function(_e4,_e5,_e6){return [_e4,dojo._listener.add(dojo._topics,_e4,dojo.hitch(_e5,_e6))];};dojo.unsubscribe=function(_e7){if(_e7){dojo._listener.remove(dojo._topics,_e7[0],_e7[1]);}};dojo.publish=function(_e8,_e9){var f=dojo._topics[_e8];if(f){f.apply(this,_e9||[]);}};dojo.connectPublisher=function(_ea,obj,_eb){var pf=function(){dojo.publish(_ea,arguments);};return (_eb)?dojo.connect(obj,_eb,pf):dojo.connect(obj,pf);};}if(!dojo._hasResource["dojo._base.Deferred"]){dojo._hasResource["dojo._base.Deferred"]=true;dojo.provide("dojo._base.Deferred");dojo.Deferred=function(_ec){this.chain=[];this.id=this._nextId();this.fired=-1;this.paused=0;this.results=[null,null];this.canceller=_ec;this.silentlyCancelled=false;this.isFiring=false;};dojo.extend(dojo.Deferred,{_nextId:(function(){var n=1;return function(){return n++;};})(),cancel:function(){var err;if(this.fired==-1){if(this.canceller){err=this.canceller(this);}else{this.silentlyCancelled=true;}if(this.fired==-1){if(!(err instanceof Error)){var res=err;var msg="Deferred Cancelled";if(err&&err.toString){msg+=": "+err.toString();}err=new Error(msg);err.dojoType="cancel";err.cancelResult=res;}this.errback(err);}}else{if((this.fired==0)&&(this.results[0] instanceof dojo.Deferred)){this.results[0].cancel();}}},_resback:function(res){this.fired=((res instanceof Error)?1:0);this.results[this.fired]=res;this._fire();},_check:function(){if(this.fired!=-1){if(!this.silentlyCancelled){throw new Error("already called!");}this.silentlyCancelled=false;return;}},callback:function(res){this._check();this._resback(res);},errback:function(res){this._check();if(!(res instanceof Error)){res=new Error(res);}this._resback(res);},addBoth:function(cb,_ed){var _ee=dojo.hitch.apply(dojo,arguments);return this.addCallbacks(_ee,_ee);},addCallback:function(cb,_ef){return this.addCallbacks(dojo.hitch.apply(dojo,arguments));},addErrback:function(cb,_f0){return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));},addCallbacks:function(cb,eb){this.chain.push([cb,eb]);if(this.fired>=0&&!this.isFiring){this._fire();}return this;},_fire:function(){this.isFiring=true;var _f1=this.chain;var _f2=this.fired;var res=this.results[_f2];var _f3=this;var cb=null;while((_f1.length>0)&&(this.paused==0)){var f=_f1.shift()[_f2];if(!f){continue;}var _f4=function(){var ret=f(res);if(typeof ret!="undefined"){res=ret;}_f2=((res instanceof Error)?1:0);if(res instanceof dojo.Deferred){cb=function(res){_f3._resback(res);_f3.paused--;if((_f3.paused==0)&&(_f3.fired>=0)){_f3._fire();}};this.paused++;}};if(dojo.config.debugAtAllCosts){_f4.call(this);}else{try{_f4.call(this);}catch(err){_f2=1;res=err;}}}this.fired=_f2;this.results[_f2]=res;this.isFiring=false;if((cb)&&(this.paused)){res.addBoth(cb);}}});}if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(_f5){return eval("("+_f5+")");};dojo._escapeString=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_f6,_f7){if(it===undefined){return "undefined";}var _f8=typeof it;if(_f8=="number"||_f8=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}var _f9=arguments.callee;var _fa;_f7=_f7||"";var _fb=_f6?_f7+dojo.toJsonIndentStr:"";var tf=it.__json__||it.json;if(dojo.isFunction(tf)){_fa=tf.call(it);if(it!==_fa){return _f9(_fa,_f6,_fb);}}if(it.nodeType&&it.cloneNode){throw new Error("Can't serialize DOM nodes");}var sep=_f6?" ":"";var _fc=_f6?"\n":"";if(dojo.isArray(it)){var res=dojo.map(it,function(obj){var val=_f9(obj,_f6,_fb);if(typeof val!="string"){val="undefined";}return _fc+_fb+val;});return "["+res.join(","+sep)+_fc+_f7+"]";}if(_f8=="function"){return null;}var _fd=[],key;for(key in it){var _fe,val;if(typeof key=="number"){_fe="\""+key+"\"";}else{if(typeof key=="string"){_fe=dojo._escapeString(key);}else{continue;}}val=_f9(it[key],_f6,_fb);if(typeof val!="string"){continue;}_fd.push(_fc+_fb+_fe+":"+sep+val);}return "{"+_fd.join(","+sep)+_fc+_f7+"}";};}if(!dojo._hasResource["dojo._base.Color"]){dojo._hasResource["dojo._base.Color"]=true;dojo.provide("dojo._base.Color");(function(){var d=dojo;dojo.Color=function(_ff){if(_ff){this.setColor(_ff);}};dojo.Color.named={black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255],transparent:d.config.transparentColor||[255,255,255]};dojo.extend(dojo.Color,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_100){if(d.isString(_100)){d.colorFromString(_100,this);}else{if(d.isArray(_100)){d.colorFromArray(_100,this);}else{this._set(_100.r,_100.g,_100.b,_100.a);if(!(_100 instanceof d.Color)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=d.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_101){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_101?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});dojo.blendColors=function(_102,end,_103,obj){var t=obj||new d.Color();d.forEach(["r","g","b","a"],function(x){t[x]=_102[x]+(end[x]-_102[x])*_103;if(x!="a"){t[x]=Math.round(t[x]);}});return t.sanitize();};dojo.colorFromRgb=function(_104,obj){var m=_104.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&dojo.colorFromArray(m[1].split(/\s*,\s*/),obj);};dojo.colorFromHex=function(_105,obj){var t=obj||new d.Color(),bits=(_105.length==4)?4:8,mask=(1<<bits)-1;_105=Number("0x"+_105.substr(1));if(isNaN(_105)){return null;}d.forEach(["b","g","r"],function(x){var c=_105&mask;_105>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new d.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=d.Color.named[str];return a&&d.colorFromArray(a,obj)||d.colorFromRgb(str,obj)||d.colorFromHex(str,obj);};})();}if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");}if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_106,_107){dojo.global=_106;dojo.doc=_107;};dojo.withGlobal=function(_108,_109,_10a,_10b){var _10c=dojo.global;try{dojo.global=_108;return dojo.withDoc.call(null,_108.document,_109,_10a,_10b);}finally{dojo.global=_10c;}};dojo.withDoc=function(_10d,_10e,_10f,_110){var _111=dojo.doc,_112=dojo._bodyLtr,oldQ=dojo.isQuirks;try{dojo.doc=_10d;delete dojo._bodyLtr;dojo.isQuirks=dojo.doc.compatMode=="BackCompat";if(_10f&&typeof _10e=="string"){_10e=_10f[_10e];}return _10e.apply(_10f,_110||[]);}finally{dojo.doc=_111;delete dojo._bodyLtr;if(_112!==undefined){dojo._bodyLtr=_112;}dojo.isQuirks=oldQ;}};}if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");(function(){var del=(dojo._event_listener={add:function(node,name,fp){if(!node){return;}name=del._normalizeEventName(name);fp=del._fixCallback(name,fp);var _113=name;if(!dojo.isIE&&(name=="mouseenter"||name=="mouseleave")){var ofp=fp;name=(name=="mouseenter")?"mouseover":"mouseout";fp=function(e){if(!dojo.isDescendant(e.relatedTarget,node)){return ofp.call(this,e);}};}node.addEventListener(name,fp,false);return fp;},remove:function(node,_114,_115){if(node){_114=del._normalizeEventName(_114);if(!dojo.isIE&&(_114=="mouseenter"||_114=="mouseleave")){_114=(_114=="mouseenter")?"mouseover":"mouseout";}node.removeEventListener(_114,_115,false);}},_normalizeEventName:function(name){return name.slice(0,2)=="on"?name.slice(2):name;},_fixCallback:function(name,fp){return name!="keypress"?fp:function(e){return fp.call(this,del._fixEvent(e,this));};},_fixEvent:function(evt,_116){switch(evt.type){case "keypress":del._setKeyChar(evt);break;}return evt;},_setKeyChar:function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});dojo.fixEvent=function(evt,_117){return del._fixEvent(evt,_117);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _118=dojo._listener;dojo._connect=function(obj,_119,_11a,_11b,_11c){var _11d=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=_11d?(_11c?2:1):0,l=[dojo._listener,del,_118][lid];var h=l.add(obj,_119,dojo.hitch(_11a,_11b));return [obj,_119,h,lid];};dojo._disconnect=function(obj,_11e,_11f,_120){([dojo._listener,del,_118][_120]).remove(obj,_11e,_11f);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:dojo.isSafari?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,copyKey:dojo.isMac&&!dojo.isAIR?(dojo.isSafari?91:224):17};var _121=dojo.isMac?"metaKey":"ctrlKey";dojo.isCopyKey=function(e){return e[_121];};if(dojo.isIE){dojo.mouseButtons={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_122){return e.button&_122;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{dojo.mouseButtons={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_123){return e.button==_123;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}if(dojo.isIE){var _124=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};var iel=dojo._listener;var _125=(dojo._ieListenersName="_"+dojo._scopeName+"_listeners");if(!dojo.config._allow_leaks){_118=iel=dojo._ie_listener={handlers:[],add:function(_126,_127,_128){_126=_126||dojo.global;var f=_126[_127];if(!f||!f[_125]){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d[_125]=[];f=_126[_127]=d;}return f[_125].push(ieh.push(_128)-1);},remove:function(_129,_12a,_12b){var f=(_129||dojo.global)[_12a],l=f&&f[_125];if(f&&l&&_12b--){delete ieh[l[_12b]];delete l[_12b];}}};var ieh=iel.handlers;}dojo.mixin(del,{add:function(node,_12c,fp){if(!node){return;}_12c=del._normalizeEventName(_12c);if(_12c=="onkeypress"){var kd=node.onkeydown;if(!kd||!kd[_125]||!kd._stealthKeydownHandle){var h=del.add(node,"onkeydown",del._stealthKeyDown);kd=node.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(node,_12c,del._fixCallback(fp));},remove:function(node,_12d,_12e){_12d=del._normalizeEventName(_12d);iel.remove(node,_12d,_12e);if(_12d=="onkeypress"){var kd=node.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(node,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_12f){return _12f.slice(0,2)!="on"?"on"+_12f:_12f;},_nop:function(){},_fixEvent:function(evt,_130){if(!evt){var w=_130&&(_130.ownerDocument||_130.document||_130).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_130||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _131=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _132=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_131.scrollLeft||0)-_132.x;evt.pageY=evt.clientY+(_131.scrollTop||0)-_132.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}evt.stopPropagation=del._stopPropagation;evt.preventDefault=del._preventDefault;return del._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;del._setKeyChar(evt);break;}return evt;},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp[_125]){return;}var k=evt.keyCode;var _133=k!=13&&k!=32&&k!=27&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_133||evt.ctrlKey){var c=_133?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,faux);evt.cancelBubble=faux.cancelBubble;evt.returnValue=faux.returnValue;_124(evt,faux.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_124(this,0);}this.returnValue=false;}});dojo.stopEvent=function(evt){evt=evt||window.event;del._stopPropagation.call(evt);del._preventDefault.call(evt);};}del._synthesizeEvent=function(evt,_134){var faux=dojo.mixin({},evt,_134);del._setKeyChar(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};if(dojo.isOpera){dojo.mixin(del,{_fixEvent:function(evt,_135){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=c<41&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return del._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isWebKit){del._add=del.add;del._remove=del.remove;dojo.mixin(del,{add:function(node,_136,fp){if(!node){return;}var _137=del._add(node,_136,fp);if(del._normalizeEventName(_136)=="keypress"){_137._stealthKeyDownHandle=del._add(node,"keydown",function(evt){var k=evt.keyCode;var _138=k!=13&&k!=32&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_138||evt.ctrlKey){var c=_138?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if(!evt.shiftKey&&c>=65&&c<=90){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});fp.call(evt.currentTarget,faux);}});}return _137;},remove:function(node,_139,_13a){if(node){if(_13a._stealthKeyDownHandle){del._remove(node,"keydown",_13a._stealthKeyDownHandle);}del._remove(node,_139,_13a);}},_fixEvent:function(evt,_13b){switch(evt.type){case "keypress":if(evt.faux){return evt;}var c=evt.charCode;c=c>=32?c:0;return del._synthesizeEvent(evt,{charCode:c,faux:true});}return evt;}});}})();if(dojo.isIE){dojo._ieDispatcher=function(args,_13c){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=args.callee,ls=c[dojo._ieListenersName],t=h[c.target];var r=t&&t.apply(_13c,args);var lls=[].concat(ls);for(var i in lls){var f=h[lls[i]];if(!(i in ap)&&f){f.apply(_13c,args);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE||dojo.isOpera){dojo.byId=function(id,doc){if(typeof id!="string"){return id;}var _13d=doc||dojo.doc,te=_13d.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_13d.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}};}else{dojo.byId=function(id,doc){return (typeof id=="string")?(doc||dojo.doc).getElementById(id):id;};}(function(){var d=dojo;var byId=d.byId;var _13e=null,_13f;d.addOnWindowUnload(function(){_13e=null;});dojo._destroyElement=dojo.destroy=function(node){node=byId(node);try{var doc=node.ownerDocument;if(!_13e||_13f!=doc){_13e=doc.createElement("div");_13f=doc;}_13e.appendChild(node.parentNode?node.parentNode.removeChild(node):node);_13e.innerHTML="";}catch(e){}};dojo.isDescendant=function(node,_140){try{node=byId(node);_140=byId(_140);while(node){if(node==_140){return true;}node=node.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(node,_141){node=byId(node);if(d.isMozilla){node.style.MozUserSelect=_141?"":"none";}else{if(d.isKhtml||d.isWebKit){node.style.KhtmlUserSelect=_141?"auto":"none";}else{if(d.isIE){var v=(node.unselectable=_141?"":"on");d.query("*",node).forEach("item.unselectable = '"+v+"'");}}}};var _142=function(node,ref){var _143=ref.parentNode;if(_143){_143.insertBefore(node,ref);}};var _144=function(node,ref){var _145=ref.parentNode;if(_145){if(_145.lastChild==ref){_145.appendChild(node);}else{_145.insertBefore(node,ref.nextSibling);}}};dojo.place=function(node,_146,_147){_146=byId(_146);if(typeof node=="string"){node=node.charAt(0)=="<"?d._toDom(node,_146.ownerDocument):byId(node);}if(typeof _147=="number"){var cn=_146.childNodes;if(!cn.length||cn.length<=_147){_146.appendChild(node);}else{_142(node,cn[_147<0?0:_147]);}}else{switch(_147){case "before":_142(node,_146);break;case "after":_144(node,_146);break;case "replace":_146.parentNode.replaceChild(node,_146);break;case "only":d.empty(_146);_146.appendChild(node);break;case "first":if(_146.firstChild){_142(node,_146.firstChild);break;}default:_146.appendChild(node);}}return node;};dojo.boxModel="content-box";if(d.isIE){d.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}var gcs;if(d.isWebKit){gcs=function(node){var s;if(node.nodeType==1){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(d.isIE){gcs=function(node){return node.nodeType==1?node.currentStyle:{};};}else{gcs=function(node){return node.nodeType==1?node.ownerDocument.defaultView.getComputedStyle(node,null):{};};}}dojo.getComputedStyle=gcs;if(!d.isIE){d._toPixelValue=function(_148,_149){return parseFloat(_149)||0;};}else{d._toPixelValue=function(_14a,_14b){if(!_14b){return 0;}if(_14b=="medium"){return 4;}if(_14b.slice&&_14b.slice(-2)=="px"){return parseFloat(_14b);}with(_14a){var _14c=style.left;var _14d=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_14b;_14b=style.pixelLeft;}catch(e){_14b=0;}style.left=_14c;runtimeStyle.left=_14d;}return _14b;};}var px=d._toPixelValue;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};dojo._getOpacity=d.isIE?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return gcs(node).opacity;};dojo._setOpacity=d.isIE?function(node,_14e){var ov=_14e*100;node.style.zoom=1;af(node,1).Enabled=!(_14e==1);if(!af(node)){node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}else{af(node,1).Opacity=ov;}if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){d._setOpacity(i,_14e);});}return _14e;}:function(node,_14f){return node.style.opacity=_14f;};var _150={left:true,top:true};var _151=/margin|padding|width|height|max|min|offset/;var _152=function(node,type,_153){type=type.toLowerCase();if(d.isIE){if(_153=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_153){case 700:return "bold";case 400:default:return "normal";}}}if(!(type in _150)){_150[type]=_151.test(type);}return _150[type]?px(node,_153):_153;};var _154=d.isIE?"styleFloat":"cssFloat",_155={"cssFloat":_154,"styleFloat":_154,"float":_154};dojo.style=function(node,_156,_157){var n=byId(node),args=arguments.length,op=(_156=="opacity");_156=_155[_156]||_156;if(args==3){return op?d._setOpacity(n,_157):n.style[_156]=_157;}if(args==2&&op){return d._getOpacity(n);}var s=gcs(n);if(args==2&&typeof _156!="string"){for(var x in _156){d.style(node,x,_156[x]);}return s;}return (args==1)?s:_152(n,_156,s[_156]||n.style[_156]);};dojo._getPadExtents=function(n,_158){var s=_158||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_159){var ne="none",s=_159||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_15a){var s=_15a||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_15b){var s=_15b||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isWebKit&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(node,_15c){var s=_15c||gcs(node),me=d._getMarginExtents(node,s);var l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera||(d.isIE>7&&!d.isQuirks)){if(p){be=d._getBorderExtents(p);l-=be.l;t-=be.t;}}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};dojo._getContentBox=function(node,_15d){var s=_15d||gcs(node),pe=d._getPadExtents(node,s),be=d._getBorderExtents(node,s),w=node.clientWidth,h;if(!w){w=node.offsetWidth,h=node.offsetHeight;}else{h=node.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(node,_15e){var s=_15e||gcs(node),pe=d._getPadExtents(node,s),cb=d._getContentBox(node,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._isButtonTag=function(node){return node.tagName=="BUTTON"||node.tagName=="INPUT"&&(node.getAttribute("type")||"").toUpperCase()=="BUTTON";};dojo._usesBorderBox=function(node){var n=node.tagName;return d.boxModel=="border-box"||n=="TABLE"||d._isButtonTag(node);};dojo._setContentSize=function(node,_15f,_160,_161){if(d._usesBorderBox(node)){var pb=d._getPadBorderExtents(node,_161);if(_15f>=0){_15f+=pb.w;}if(_160>=0){_160+=pb.h;}}d._setBox(node,NaN,NaN,_15f,_160);};dojo._setMarginBox=function(node,_162,_163,_164,_165,_166){var s=_166||gcs(node),bb=d._usesBorderBox(node),pb=bb?_167:d._getPadBorderExtents(node,s);if(d.isWebKit){if(d._isButtonTag(node)){var ns=node.style;if(_164>=0&&!ns.width){ns.width="4px";}if(_165>=0&&!ns.height){ns.height="4px";}}}var mb=d._getMarginExtents(node,s);if(_164>=0){_164=Math.max(_164-pb.w-mb.w,0);}if(_165>=0){_165=Math.max(_165-pb.h-mb.h,0);}d._setBox(node,_162,_163,_164,_165);};var _167={l:0,t:0,w:0,h:0};dojo.marginBox=function(node,box){var n=byId(node),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(node,box){var n=byId(node),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _168=function(node,prop){if(!(node=(node||0).parentNode)){return 0;}var val,_169=0,_16a=d.body();while(node&&node.style){if(gcs(node).position=="fixed"){return 0;}val=node[prop];if(val){_169+=val-0;if(node==_16a){break;}}node=node.parentNode;}return _169;};dojo._docScroll=function(){var n=d.global;return "pageXOffset" in n?{x:n.pageXOffset,y:n.pageYOffset}:(n=d.doc.documentElement,n.clientHeight?{x:d._fixIeBiDiScrollLeft(n.scrollLeft),y:n.scrollTop}:(n=d.body(),{x:n.scrollLeft||0,y:n.scrollTop||0}));};dojo._isBodyLtr=function(){return "_bodyLtr" in d?d._bodyLtr:d._bodyLtr=(d.body().dir||d.doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;if(d.isIE<8){var r=de.getBoundingClientRect();var l=r.left,t=r.top;if(d.isIE<7){l+=de.clientLeft;t+=de.clientTop;}return {x:l<0?0:l,y:t<0?0:t};}else{return {x:0,y:0};}};dojo._fixIeBiDiScrollLeft=function(_16b){var dd=d.doc;if(d.isIE<8&&!d._isBodyLtr()){var de=d.isQuirks?dd.body:dd.documentElement;return _16b+de.clientWidth-de.scrollWidth;}return _16b;};dojo._abs=dojo.position=function(node,_16c){var db=d.body(),dh=db.parentNode,ret;node=byId(node);if(node["getBoundingClientRect"]){ret=node.getBoundingClientRect();ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(d.isIE){var _16d=d._getIeDocumentElementOffset();ret.x-=_16d.x+(d.isQuirks?db.clientLeft+db.offsetLeft:0);ret.y-=_16d.y+(d.isQuirks?db.clientTop+db.offsetTop:0);}else{if(d.isFF==3){var cs=gcs(dh);ret.x-=px(dh,cs.marginLeft)+px(dh,cs.borderLeftWidth);ret.y-=px(dh,cs.marginTop)+px(dh,cs.borderTopWidth);}}}else{ret={x:0,y:0,w:node.offsetWidth,h:node.offsetHeight};if(node["offsetParent"]){ret.x-=_168(node,"scrollLeft");ret.y-=_168(node,"scrollTop");var _16e=node;do{var n=_16e.offsetLeft,t=_16e.offsetTop;ret.x+=isNaN(n)?0:n;ret.y+=isNaN(t)?0:t;cs=gcs(_16e);if(_16e!=node){if(d.isMoz){ret.x+=2*px(_16e,cs.borderLeftWidth);ret.y+=2*px(_16e,cs.borderTopWidth);}else{ret.x+=px(_16e,cs.borderLeftWidth);ret.y+=px(_16e,cs.borderTopWidth);}}if(d.isMoz&&cs.position=="static"){var _16f=_16e.parentNode;while(_16f!=_16e.offsetParent){var pcs=gcs(_16f);if(pcs.position=="static"){ret.x+=px(_16e,pcs.borderLeftWidth);ret.y+=px(_16e,pcs.borderTopWidth);}_16f=_16f.parentNode;}}_16e=_16e.offsetParent;}while((_16e!=dh)&&_16e);}else{if(node.x&&node.y){ret.x+=isNaN(node.x)?0:node.x;ret.y+=isNaN(node.y)?0:node.y;}}}if(_16c){var _170=d._docScroll();ret.x+=_170.x;ret.y+=_170.y;}return ret;};dojo.coords=function(node,_171){var n=byId(node),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d.position(n,_171);mb.x=abs.x;mb.y=abs.y;return mb;};var _172={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"},_173={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"},_174={innerHTML:1,className:1,htmlFor:d.isIE,value:1};var _175=function(name){return _173[name.toLowerCase()]||name;};var _176=function(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return attr&&attr.specified;};dojo.hasAttr=function(node,name){var lc=name.toLowerCase();return _174[_172[lc]||name]||_176(byId(node),_173[lc]||name);};var _177={},_178=0,_179=dojo._scopeName+"attrid",_17a={col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1};dojo.attr=function(node,name,_17b){node=byId(node);var args=arguments.length,prop;if(args==2&&typeof name!="string"){for(var x in name){d.attr(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_17c=_172[lc]||name,_17d=_174[_17c],_17e=_173[lc]||name;if(args==3){do{if(_17c=="style"&&typeof _17b!="string"){d.style(node,_17b);break;}if(_17c=="innerHTML"){if(d.isIE&&node.tagName.toLowerCase() in _17a){d.empty(node);node.appendChild(d._toDom(_17b,node.ownerDocument));}else{node[_17c]=_17b;}break;}if(d.isFunction(_17b)){var _17f=d.attr(node,_179);if(!_17f){_17f=_178++;d.attr(node,_179,_17f);}if(!_177[_17f]){_177[_17f]={};}var h=_177[_17f][_17c];if(h){d.disconnect(h);}else{try{delete node[_17c];}catch(e){}}_177[_17f][_17c]=d.connect(node,_17c,_17b);break;}if(_17d||typeof _17b=="boolean"){node[_17c]=_17b;break;}node.setAttribute(_17e,_17b);}while(false);return node;}_17b=node[_17c];if(_17d&&typeof _17b!="undefined"){return _17b;}if(_17c!="href"&&(typeof _17b=="boolean"||d.isFunction(_17b))){return _17b;}return _176(node,_17e)?node.getAttribute(_17e):null;};dojo.removeAttr=function(node,name){byId(node).removeAttribute(_175(name));};dojo.getNodeProp=function(node,name){node=byId(node);var lc=name.toLowerCase(),_180=_172[lc]||name;if((_180 in node)&&_180!="href"){return node[_180];}var _181=_173[lc]||name;return _176(node,_181)?node.getAttribute(_181):null;};dojo.create=function(tag,_182,_183,pos){var doc=d.doc;if(_183){_183=byId(_183);doc=_183.ownerDocument;}if(typeof tag=="string"){tag=doc.createElement(tag);}if(_182){d.attr(tag,_182);}if(_183){d.place(tag,_183,pos);}return tag;};d.empty=d.isIE?function(node){node=byId(node);for(var c;c=node.lastChild;){d.destroy(c);}}:function(node){byId(node).innerHTML="";};var _184={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_185=/<\s*([\w\:]+)/,_186={},_187=0,_188="__"+d._scopeName+"ToDomId";for(var _189 in _184){var tw=_184[_189];tw.pre=_189=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";tw.post="</"+tw.reverse().join("></")+">";}d._toDom=function(frag,doc){doc=doc||d.doc;var _18a=doc[_188];if(!_18a){doc[_188]=_18a=++_187+"";_186[_18a]=doc.createElement("div");}frag+="";var _18b=frag.match(_185),tag=_18b?_18b[1].toLowerCase():"",_18c=_186[_18a],wrap,i,fc,df;if(_18b&&_184[tag]){wrap=_184[tag];_18c.innerHTML=wrap.pre+frag+wrap.post;for(i=wrap.length;i;--i){_18c=_18c.firstChild;}}else{_18c.innerHTML=frag;}if(_18c.childNodes.length==1){return _18c.removeChild(_18c.firstChild);}df=doc.createDocumentFragment();while(fc=_18c.firstChild){df.appendChild(fc);}return df;};var _18d="className";dojo.hasClass=function(node,_18e){return ((" "+byId(node)[_18d]+" ").indexOf(" "+_18e+" ")>=0);};var _18f=/\s+/,a1=[""],_190=function(s){if(typeof s=="string"||s instanceof String){if(s.indexOf(" ")<0){a1[0]=s;return a1;}else{return s.split(_18f);}}return s;};dojo.addClass=function(node,_191){node=byId(node);_191=_190(_191);var cls=" "+node[_18d]+" ";for(var i=0,len=_191.length,c;i<len;++i){c=_191[i];if(c&&cls.indexOf(" "+c+" ")<0){cls+=c+" ";}}node[_18d]=d.trim(cls);};dojo.removeClass=function(node,_192){node=byId(node);var cls;if(_192!==undefined){_192=_190(_192);cls=" "+node[_18d]+" ";for(var i=0,len=_192.length;i<len;++i){cls=cls.replace(" "+_192[i]+" "," ");}cls=d.trim(cls);}else{cls="";}if(node[_18d]!=cls){node[_18d]=cls;}};dojo.toggleClass=function(node,_193,_194){if(_194===undefined){_194=!d.hasClass(node,_193);}d[_194?"addClass":"removeClass"](node,_193);};})();}if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");(function(){var d=dojo;var ap=Array.prototype,aps=ap.slice,apc=ap.concat;var tnl=function(a,_195,_196){if(!a.sort){a=aps.call(a,0);}var ctor=_196||this._NodeListCtor||d._NodeListCtor;a.constructor=ctor;dojo._mixin(a,ctor.prototype);a._NodeListCtor=ctor;return _195?a._stash(_195):a;};var _197=function(f,a,o){a=[0].concat(aps.call(a,0));o=o||d.global;return function(node){a[0]=node;return f.apply(o,a);};};var _198=function(f,o){return function(){this.forEach(_197(f,arguments,o));return this;};};var _199=function(f,o){return function(){return this.map(_197(f,arguments,o));};};var _19a=function(f,o){return function(){return this.filter(_197(f,arguments,o));};};var _19b=function(f,g,o){return function(){var a=arguments,body=_197(f,a,o);if(g.call(o||d.global,a)){return this.map(body);}this.forEach(body);return this;};};var _19c=function(a){return a.length==1&&(typeof a[0]=="string");};var _19d=function(node){var p=node.parentNode;if(p){p.removeChild(node);}};dojo.NodeList=function(){return tnl(Array.apply(null,arguments));};d._NodeListCtor=d.NodeList;var nl=d.NodeList,nlp=nl.prototype;nl._wrap=nlp._wrap=tnl;nl._adaptAsMap=_199;nl._adaptAsForEach=_198;nl._adaptAsFilter=_19a;nl._adaptWithCondition=_19b;d.forEach(["slice","splice"],function(name){var f=ap[name];nlp[name]=function(){return this._wrap(f.apply(this,arguments),name=="slice"?this:null);};});d.forEach(["indexOf","lastIndexOf","every","some"],function(name){var f=d[name];nlp[name]=function(){return f.apply(d,[this].concat(aps.call(arguments,0)));};});d.forEach(["attr","style"],function(name){nlp[name]=_19b(d[name],_19c);});d.forEach(["connect","addClass","removeClass","toggleClass","empty","removeAttr"],function(name){nlp[name]=_198(d[name]);});dojo.extend(dojo.NodeList,{_normalize:function(_19e,_19f){var _1a0=_19e.parse===true?true:false;if(typeof _19e.template=="string"){var _1a1=_19e.templateFunc||(dojo.string&&dojo.string.substitute);_19e=_1a1?_1a1(_19e.template,_19e):_19e;}var type=(typeof _19e);if(type=="string"||type=="number"){_19e=dojo._toDom(_19e,(_19f&&_19f.ownerDocument));if(_19e.nodeType==11){_19e=dojo._toArray(_19e.childNodes);}else{_19e=[_19e];}}else{if(!dojo.isArrayLike(_19e)){_19e=[_19e];}else{if(!dojo.isArray(_19e)){_19e=dojo._toArray(_19e);}}}if(_1a0){_19e._runParse=true;}return _19e;},_cloneNode:function(node){return node.cloneNode(true);},_place:function(ary,_1a2,_1a3,_1a4){if(_1a2.nodeType!=1&&_1a3=="only"){return;}var _1a5=_1a2,_1a6;var _1a7=ary.length;for(var i=_1a7-1;i>=0;i--){var node=(_1a4?this._cloneNode(ary[i]):ary[i]);if(ary._runParse&&dojo.parser&&dojo.parser.parse){if(!_1a6){_1a6=_1a5.ownerDocument.createElement("div");}_1a6.appendChild(node);dojo.parser.parse(_1a6);node=_1a6.firstChild;while(_1a6.firstChild){_1a6.removeChild(_1a6.firstChild);}}if(i==_1a7-1){dojo.place(node,_1a5,_1a3);}else{_1a5.parentNode.insertBefore(node,_1a5);}_1a5=node;}},_stash:function(_1a8){this._parent=_1a8;return this;},end:function(){if(this._parent){return this._parent;}else{return new this._NodeListCtor();}},concat:function(item){var t=d.isArray(this)?this:aps.call(this,0),m=d.map(arguments,function(a){return a&&!d.isArray(a)&&(typeof NodeList!="undefined"&&a.constructor===NodeList||a.constructor===this._NodeListCtor)?aps.call(a,0):a;});return this._wrap(apc.apply(t,m),this);},map:function(func,obj){return this._wrap(d.map(this,func,obj),this);},forEach:function(_1a9,_1aa){d.forEach(this,_1a9,_1aa);return this;},coords:_199(d.coords),position:_199(d.position),place:function(_1ab,_1ac){var item=d.query(_1ab)[0];return this.forEach(function(node){d.place(node,item,_1ac);});},orphan:function(_1ad){return (_1ad?d._filterQueryResult(this,_1ad):this).forEach(_19d);},adopt:function(_1ae,_1af){return d.query(_1ae).place(this[0],_1af)._stash(this);},query:function(_1b0){if(!_1b0){return this;}var ret=this.map(function(node){return d.query(_1b0,node).filter(function(_1b1){return _1b1!==undefined;});});return this._wrap(apc.apply([],ret),this);},filter:function(_1b2){var a=arguments,_1b3=this,_1b4=0;if(typeof _1b2=="string"){_1b3=d._filterQueryResult(this,a[0]);if(a.length==1){return _1b3._stash(this);}_1b4=1;}return this._wrap(d.filter(_1b3,a[_1b4],a[_1b4+1]),this);},addContent:function(_1b5,_1b6){_1b5=this._normalize(_1b5,this[0]);for(var i=0,node;node=this[i];i++){this._place(_1b5,node,_1b6,i>0);}return this;},instantiate:function(_1b7,_1b8){var c=d.isFunction(_1b7)?_1b7:d.getObject(_1b7);_1b8=_1b8||{};return this.forEach(function(node){new c(_1b8,node);});},at:function(){var t=new this._NodeListCtor();d.forEach(arguments,function(i){if(this[i]){t.push(this[i]);}},this);return t._stash(this);}});nl.events=["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"];d.forEach(nl.events,function(evt){var _1b9="on"+evt;nlp[_1b9]=function(a,b){return this.connect(_1b9,a,b);};});})();}if(!dojo._hasResource["dojo._base.query"]){dojo._hasResource["dojo._base.query"]=true;if(typeof dojo!="undefined"){dojo.provide("dojo._base.query");}(function(d){var trim=d.trim;var each=d.forEach;var qlc=d._NodeListCtor=d.NodeList;var _1ba=function(){return d.doc;};var _1bb=((d.isWebKit||d.isMozilla)&&((_1ba().compatMode)=="BackCompat"));var _1bc=!!_1ba().firstChild["children"]?"children":"childNodes";var _1bd=">~+";var _1be=false;var _1bf=function(){return true;};var _1c0=function(_1c1){if(_1bd.indexOf(_1c1.slice(-1))>=0){_1c1+=" * ";}else{_1c1+=" ";}var ts=function(s,e){return trim(_1c1.slice(s,e));};var _1c2=[];var _1c3=-1,_1c4=-1,_1c5=-1,_1c6=-1,_1c7=-1,inId=-1,_1c8=-1,lc="",cc="",_1c9;var x=0,ql=_1c1.length,_1ca=null,_1cb=null;var _1cc=function(){if(_1c8>=0){var tv=(_1c8==x)?null:ts(_1c8,x);_1ca[(_1bd.indexOf(tv)<0)?"tag":"oper"]=tv;_1c8=-1;}};var _1cd=function(){if(inId>=0){_1ca.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _1ce=function(){if(_1c7>=0){_1ca.classes.push(ts(_1c7+1,x).replace(/\\/g,""));_1c7=-1;}};var _1cf=function(){_1cd();_1cc();_1ce();};var _1d0=function(){_1cf();if(_1c6>=0){_1ca.pseudos.push({name:ts(_1c6+1,x)});}_1ca.loops=(_1ca.pseudos.length||_1ca.attrs.length||_1ca.classes.length);_1ca.oquery=_1ca.query=ts(_1c9,x);_1ca.otag=_1ca.tag=(_1ca["oper"])?null:(_1ca.tag||"*");if(_1ca.tag){_1ca.tag=_1ca.tag.toUpperCase();}if(_1c2.length&&(_1c2[_1c2.length-1].oper)){_1ca.infixOper=_1c2.pop();_1ca.query=_1ca.infixOper.query+" "+_1ca.query;}_1c2.push(_1ca);_1ca=null;};for(;lc=cc,cc=_1c1.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_1ca){_1c9=x;_1ca={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return (_1be)?this.otag:this.tag;}};_1c8=x;}if(_1c3>=0){if(cc=="]"){if(!_1cb.attr){_1cb.attr=ts(_1c3+1,x);}else{_1cb.matchFor=ts((_1c5||_1c3+1),x);}var cmf=_1cb.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_1cb.matchFor=cmf.slice(1,-1);}}_1ca.attrs.push(_1cb);_1cb=null;_1c3=_1c5=-1;}else{if(cc=="="){var _1d1=("|~^$*".indexOf(lc)>=0)?lc:"";_1cb.type=_1d1+cc;_1cb.attr=ts(_1c3+1,x-_1d1.length);_1c5=x+1;}}}else{if(_1c4>=0){if(cc==")"){if(_1c6>=0){_1cb.value=ts(_1c4+1,x);}_1c6=_1c4=-1;}}else{if(cc=="#"){_1cf();inId=x+1;}else{if(cc=="."){_1cf();_1c7=x;}else{if(cc==":"){_1cf();_1c6=x;}else{if(cc=="["){_1cf();_1c3=x;_1cb={};}else{if(cc=="("){if(_1c6>=0){_1cb={name:ts(_1c6+1,x),value:null};_1ca.pseudos.push(_1cb);}_1c4=x;}else{if((cc==" ")&&(lc!=cc)){_1d0();}}}}}}}}}return _1c2;};var _1d2=function(_1d3,_1d4){if(!_1d3){return _1d4;}if(!_1d4){return _1d3;}return function(){return _1d3.apply(window,arguments)&&_1d4.apply(window,arguments);};};var _1d5=function(i,arr){var r=arr||[];if(i){r.push(i);}return r;};var _1d6=function(n){return (1==n.nodeType);};var _1d7="";var _1d8=function(elem,attr){if(!elem){return _1d7;}if(attr=="class"){return elem.className||_1d7;}if(attr=="for"){return elem.htmlFor||_1d7;}if(attr=="style"){return elem.style.cssText||_1d7;}return (_1be?elem.getAttribute(attr):elem.getAttribute(attr,2))||_1d7;};var _1d9={"*=":function(attr,_1da){return function(elem){return (_1d8(elem,attr).indexOf(_1da)>=0);};},"^=":function(attr,_1db){return function(elem){return (_1d8(elem,attr).indexOf(_1db)==0);};},"$=":function(attr,_1dc){var tval=" "+_1dc;return function(elem){var ea=" "+_1d8(elem,attr);return (ea.lastIndexOf(_1dc)==(ea.length-_1dc.length));};},"~=":function(attr,_1dd){var tval=" "+_1dd+" ";return function(elem){var ea=" "+_1d8(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_1de){var _1df=" "+_1de+"-";return function(elem){var ea=" "+_1d8(elem,attr);return ((ea==_1de)||(ea.indexOf(_1df)==0));};},"=":function(attr,_1e0){return function(elem){return (_1d8(elem,attr)==_1e0);};}};var _1e1=(typeof _1ba().firstChild.nextElementSibling=="undefined");var _1e2=!_1e1?"nextElementSibling":"nextSibling";var _1e3=!_1e1?"previousElementSibling":"previousSibling";var _1e4=(_1e1?_1d6:_1bf);var _1e5=function(node){while(node=node[_1e3]){if(_1e4(node)){return false;}}return true;};var _1e6=function(node){while(node=node[_1e2]){if(_1e4(node)){return false;}}return true;};var _1e7=function(node){var root=node.parentNode;var i=0,tret=root[_1bc],ci=(node["_i"]||-1),cl=(root["_l"]||-1);if(!tret){return -1;}var l=tret.length;if(cl==l&&ci>=0&&cl>=0){return ci;}root["_l"]=l;ci=-1;for(var te=root["firstElementChild"]||root["firstChild"];te;te=te[_1e2]){if(_1e4(te)){te["_i"]=++i;if(node===te){ci=i;}}}return ci;};var _1e8=function(elem){return !((_1e7(elem))%2);};var _1e9=function(elem){return ((_1e7(elem))%2);};var _1ea={"checked":function(name,_1eb){return function(elem){return !!("checked" in elem?elem.checked:elem.selected);};},"first-child":function(){return _1e5;},"last-child":function(){return _1e6;},"only-child":function(name,_1ec){return function(node){if(!_1e5(node)){return false;}if(!_1e6(node)){return false;}return true;};},"empty":function(name,_1ed){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt===1)||(nt==3)){return false;}}return true;};},"contains":function(name,_1ee){var cz=_1ee.charAt(0);if(cz=="\""||cz=="'"){_1ee=_1ee.slice(1,-1);}return function(elem){return (elem.innerHTML.indexOf(_1ee)>=0);};},"not":function(name,_1ef){var p=_1c0(_1ef)[0];var _1f0={el:1};if(p.tag!="*"){_1f0.tag=1;}if(!p.classes.length){_1f0.classes=1;}var ntf=_1f1(p,_1f0);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_1f2){var pi=parseInt;if(_1f2=="odd"){return _1e9;}else{if(_1f2=="even"){return _1e8;}}if(_1f2.indexOf("n")!=-1){var _1f3=_1f2.split("n",2);var pred=_1f3[0]?((_1f3[0]=="-")?-1:pi(_1f3[0])):1;var idx=_1f3[1]?pi(_1f3[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_1e7(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_1f2=idx;}}var _1f4=pi(_1f2);return function(elem){return (_1e7(elem)==_1f4);};}};var _1f5=(d.isIE)?function(cond){var clc=cond.toLowerCase();if(clc=="class"){cond="className";}return function(elem){return (_1be?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _1f1=function(_1f6,_1f7){if(!_1f6){return _1bf;}_1f7=_1f7||{};var ff=null;if(!("el" in _1f7)){ff=_1d2(ff,_1d6);}if(!("tag" in _1f7)){if(_1f6.tag!="*"){ff=_1d2(ff,function(elem){return (elem&&(elem.tagName==_1f6.getTag()));});}}if(!("classes" in _1f7)){each(_1f6.classes,function(_1f8,idx,arr){var re=new RegExp("(?:^|\\s)"+_1f8+"(?:\\s|$)");ff=_1d2(ff,function(elem){return re.test(elem.className);});ff.count=idx;});}if(!("pseudos" in _1f7)){each(_1f6.pseudos,function(_1f9){var pn=_1f9.name;if(_1ea[pn]){ff=_1d2(ff,_1ea[pn](pn,_1f9.value));}});}if(!("attrs" in _1f7)){each(_1f6.attrs,function(attr){var _1fa;var a=attr.attr;if(attr.type&&_1d9[attr.type]){_1fa=_1d9[attr.type](a,attr.matchFor);}else{if(a.length){_1fa=_1f5(a);}}if(_1fa){ff=_1d2(ff,_1fa);}});}if(!("id" in _1f7)){if(_1f6.id){ff=_1d2(ff,function(elem){return (!!elem&&(elem.id==_1f6.id));});}}if(!ff){if(!("default" in _1f7)){ff=_1bf;}}return ff;};var _1fb=function(_1fc){return function(node,ret,bag){while(node=node[_1e2]){if(_1e1&&(!_1d6(node))){continue;}if((!bag||_1fd(node,bag))&&_1fc(node)){ret.push(node);}break;}return ret;};};var _1fe=function(_1ff){return function(root,ret,bag){var te=root[_1e2];while(te){if(_1e4(te)){if(bag&&!_1fd(te,bag)){break;}if(_1ff(te)){ret.push(te);}}te=te[_1e2];}return ret;};};var _200=function(_201){_201=_201||_1bf;return function(root,ret,bag){var te,x=0,tret=root[_1bc];while(te=tret[x++]){if(_1e4(te)&&(!bag||_1fd(te,bag))&&(_201(te,x))){ret.push(te);}}return ret;};};var _202=function(node,root){var pn=node.parentNode;while(pn){if(pn==root){break;}pn=pn.parentNode;}return !!pn;};var _203={};var _204=function(_205){var _206=_203[_205.query];if(_206){return _206;}var io=_205.infixOper;var oper=(io?io.oper:"");var _207=_1f1(_205,{el:1});var qt=_205.tag;var _208=("*"==qt);var ecs=_1ba()["getElementsByClassName"];if(!oper){if(_205.id){_207=(!_205.loops&&_208)?_1bf:_1f1(_205,{el:1,id:1});_206=function(root,arr){var te=d.byId(_205.id,(root.ownerDocument||root));if(!te||!_207(te)){return;}if(9==root.nodeType){return _1d5(te,arr);}else{if(_202(te,root)){return _1d5(te,arr);}}};}else{if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_205.classes.length&&!_1bb){_207=_1f1(_205,{el:1,classes:1,id:1});var _209=_205.classes.join(" ");_206=function(root,arr,bag){var ret=_1d5(0,arr),te,x=0;var tret=root.getElementsByClassName(_209);while((te=tret[x++])){if(_207(te,root)&&_1fd(te,bag)){ret.push(te);}}return ret;};}else{if(!_208&&!_205.loops){_206=function(root,arr,bag){var ret=_1d5(0,arr),te,x=0;var tret=root.getElementsByTagName(_205.getTag());while((te=tret[x++])){if(_1fd(te,bag)){ret.push(te);}}return ret;};}else{_207=_1f1(_205,{el:1,tag:1,id:1});_206=function(root,arr,bag){var ret=_1d5(0,arr),te,x=0;var tret=root.getElementsByTagName(_205.getTag());while((te=tret[x++])){if(_207(te,root)&&_1fd(te,bag)){ret.push(te);}}return ret;};}}}}else{var _20a={el:1};if(_208){_20a.tag=1;}_207=_1f1(_205,_20a);if("+"==oper){_206=_1fb(_207);}else{if("~"==oper){_206=_1fe(_207);}else{if(">"==oper){_206=_200(_207);}}}}return _203[_205.query]=_206;};var _20b=function(root,_20c){var _20d=_1d5(root),qp,x,te,qpl=_20c.length,bag,ret;for(var i=0;i<qpl;i++){ret=[];qp=_20c[i];x=_20d.length-1;if(x>0){bag={};ret.nozip=true;}var gef=_204(qp);for(var j=0;(te=_20d[j]);j++){gef(te,ret,bag);}if(!ret.length){break;}_20d=ret;}return ret;};var _20e={},_20f={};var _210=function(_211){var _212=_1c0(trim(_211));if(_212.length==1){var tef=_204(_212[0]);return function(root){var r=tef(root,new qlc());if(r){r.nozip=true;}return r;};}return function(root){return _20b(root,_212);};};var nua=navigator.userAgent;var wk="WebKit/";var _213=(d.isWebKit&&(nua.indexOf(wk)>0)&&(parseFloat(nua.split(wk)[1])>528));var _214=d.isIE?"commentStrip":"nozip";var qsa="querySelectorAll";var _215=(!!_1ba()[qsa]&&(!d.isSafari||(d.isSafari>3.1)||_213));var _216=/n\+\d|([^ ])?([>~+])([^ =])?/g;var _217=function(_218,pre,ch,post){return ch?(pre?pre+" ":"")+ch+(post?" "+post:""):_218;};var _219=function(_21a,_21b){_21a=_21a.replace(_216,_217);if(_215){var _21c=_20f[_21a];if(_21c&&!_21b){return _21c;}}var _21d=_20e[_21a];if(_21d){return _21d;}var qcz=_21a.charAt(0);var _21e=(-1==_21a.indexOf(" "));if((_21a.indexOf("#")>=0)&&(_21e)){_21b=true;}var _21f=(_215&&(!_21b)&&(_1bd.indexOf(qcz)==-1)&&(!d.isIE||(_21a.indexOf(":")==-1))&&(!(_1bb&&(_21a.indexOf(".")>=0)))&&(_21a.indexOf(":contains")==-1)&&(_21a.indexOf(":checked")==-1)&&(_21a.indexOf("|=")==-1));if(_21f){var tq=(_1bd.indexOf(_21a.charAt(_21a.length-1))>=0)?(_21a+" *"):_21a;return _20f[_21a]=function(root){try{if(!((9==root.nodeType)||_21e)){throw "";}var r=root[qsa](tq);r[_214]=true;return r;}catch(e){return _219(_21a,true)(root);}};}else{var _220=_21a.split(/\s*,\s*/);return _20e[_21a]=((_220.length<2)?_210(_21a):function(root){var _221=0,ret=[],tp;while((tp=_220[_221++])){ret=ret.concat(_210(tp)(root));}return ret;});}};var _222=0;var _223=d.isIE?function(node){if(_1be){return (node.getAttribute("_uid")||node.setAttribute("_uid",++_222)||_222);}else{return node.uniqueID;}}:function(node){return (node._uid||(node._uid=++_222));};var _1fd=function(node,bag){if(!bag){return 1;}var id=_223(node);if(!bag[id]){return bag[id]=1;}return 0;};var _224="_zipIdx";var _225=function(arr){if(arr&&arr.nozip){return (qlc._wrap)?qlc._wrap(arr):arr;}var ret=new qlc();if(!arr||!arr.length){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_222++;if(d.isIE&&_1be){var _226=_222+"";arr[0].setAttribute(_224,_226);for(var x=1,te;te=arr[x];x++){if(arr[x].getAttribute(_224)!=_226){ret.push(te);}te.setAttribute(_224,_226);}}else{if(d.isIE&&arr.commentStrip){try{for(var x=1,te;te=arr[x];x++){if(_1d6(te)){ret.push(te);}}}catch(e){}}else{if(arr[0]){arr[0][_224]=_222;}for(var x=1,te;te=arr[x];x++){if(arr[x][_224]!=_222){ret.push(te);}te[_224]=_222;}}}return ret;};d.query=function(_227,root){qlc=d._NodeListCtor;if(!_227){return new qlc();}if(_227.constructor==qlc){return _227;}if(typeof _227!="string"){return new qlc(_227);}if(typeof root=="string"){root=d.byId(root);if(!root){return new qlc();}}root=root||_1ba();var od=root.ownerDocument||root.documentElement;_1be=(root.contentType&&root.contentType=="application/xml")||(d.isOpera&&(root.doctype||od.toString()=="[object XMLDocument]"))||(!!od)&&(d.isIE?od.xml:(root.xmlVersion||od.xmlVersion));var r=_219(_227)(root);if(r&&r.nozip&&!qlc._wrap){return r;}return _225(r);};d.query.pseudos=_1ea;d._filterQueryResult=function(_228,_229){var _22a=new d._NodeListCtor();var _22b=_1f1(_1c0(_229)[0]);for(var x=0,te;te=_228[x];x++){if(_22b(te)){_22a.push(te);}}return _22a;};})(this["queryPortability"]||this["acme"]||dojo);}if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");(function(){var _22c=dojo,cfg=_22c.config;function _22d(obj,name,_22e){if(_22e===null){return;}var val=obj[name];if(typeof val=="string"){obj[name]=[val,_22e];}else{if(_22c.isArray(val)){val.push(_22e);}else{obj[name]=_22e;}}};dojo.fieldToObject=function(_22f){var ret=null;var item=_22c.byId(_22f);if(item){var _230=item.name;var type=(item.type||"").toLowerCase();if(_230&&type&&!item.disabled){if(type=="radio"||type=="checkbox"){if(item.checked){ret=item.value;}}else{if(item.multiple){ret=[];_22c.query("option",item).forEach(function(opt){if(opt.selected){ret.push(opt.value);}});}else{ret=item.value;}}}}return ret;};dojo.formToObject=function(_231){var ret={};var _232="file|submit|image|reset|button|";_22c.forEach(dojo.byId(_231).elements,function(item){var _233=item.name;var type=(item.type||"").toLowerCase();if(_233&&type&&_232.indexOf(type)==-1&&!item.disabled){_22d(ret,_233,_22c.fieldToObject(item));if(type=="image"){ret[_233+".x"]=ret[_233+".y"]=ret[_233].x=ret[_233].y=0;}}});return ret;};dojo.objectToQuery=function(map){var enc=encodeURIComponent;var _234=[];var _235={};for(var name in map){var _236=map[name];if(_236!=_235[name]){var _237=enc(name)+"=";if(_22c.isArray(_236)){for(var i=0;i<_236.length;i++){_234.push(_237+enc(_236[i]));}}else{_234.push(_237+enc(_236));}}}return _234.join("&");};dojo.formToQuery=function(_238){return _22c.objectToQuery(_22c.formToObject(_238));};dojo.formToJson=function(_239,_23a){return _22c.toJson(_22c.formToObject(_239),_23a);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_22c.forEach(qp,function(item){if(item.length){var _23b=item.split("=");var name=dec(_23b.shift());var val=dec(_23b.join("="));if(typeof ret[name]=="string"){ret[name]=[ret[name]];}if(_22c.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}});return ret;};dojo._blockAsync=false;var _23c=_22c._contentHandlers=dojo.contentHandlers={text:function(xhr){return xhr.responseText;},json:function(xhr){return _22c.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!dojo.config.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _23d=xhr.responseText;var _23e=_23d.indexOf("/*");var _23f=_23d.lastIndexOf("*/");if(_23e==-1||_23f==-1){throw new Error("JSON was not comment filtered");}return _22c.fromJson(_23d.substring(_23e+2,_23f));},javascript:function(xhr){return _22c.eval(xhr.responseText);},xml:function(xhr){var _240=xhr.responseXML;if(_22c.isIE&&(!_240||!_240.documentElement)){var ms=function(n){return "MSXML"+n+".DOMDocument";};var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];_22c.some(dp,function(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(xhr.responseText);_240=dom;}catch(e){return false;}return true;});}return _240;},"json-comment-optional":function(xhr){if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){return _23c["json-comment-filtered"](xhr);}else{return _23c["json"](xhr);}}};dojo._ioSetArgs=function(args,_241,_242,_243){var _244={args:args,url:args.url};var _245=null;if(args.form){var form=_22c.byId(args.form);var _246=form.getAttributeNode("action");_244.url=_244.url||(_246?_246.value:null);_245=_22c.formToObject(form);}var _247=[{}];if(_245){_247.push(_245);}if(args.content){_247.push(args.content);}if(args.preventCache){_247.push({"dojo.preventCache":new Date().valueOf()});}_244.query=_22c.objectToQuery(_22c.mixin.apply(null,_247));_244.handleAs=args.handleAs||"text";var d=new _22c.Deferred(_241);d.addCallbacks(_242,function(_248){return _243(_248,d);});var ld=args.load;if(ld&&_22c.isFunction(ld)){d.addCallback(function(_249){return ld.call(args,_249,_244);});}var err=args.error;if(err&&_22c.isFunction(err)){d.addErrback(function(_24a){return err.call(args,_24a,_244);});}var _24b=args.handle;if(_24b&&_22c.isFunction(_24b)){d.addBoth(function(_24c){return _24b.call(args,_24c,_244);});}if(cfg.ioPublish&&_22c.publish&&_244.args.ioPublish!==false){d.addCallbacks(function(res){_22c.publish("/dojo/io/load",[d,res]);return res;},function(res){_22c.publish("/dojo/io/error",[d,res]);return res;});d.addBoth(function(res){_22c.publish("/dojo/io/done",[d,res]);return res;});}d.ioArgs=_244;return d;};var _24d=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _24e=typeof xhr.abort;if(_24e=="function"||_24e=="object"||_24e=="unknown"){xhr.abort();}var err=dfd.ioArgs.error;if(!err){err=new Error("xhr cancelled");err.dojoType="cancel";}return err;};var _24f=function(dfd){var ret=_23c[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return ret===undefined?null:ret;};var _250=function(_251,dfd){if(!dfd.ioArgs.args.failOk){console.error(_251);}return _251;};var _252=null;var _253=[];var _254=0;var _255=function(dfd){if(_254<=0){_254=0;if(cfg.ioPublish&&_22c.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){_22c.publish("/dojo/io/stop");}}};var _256=function(){var now=(new Date()).getTime();if(!_22c._blockAsync){for(var i=0,tif;i<_253.length&&(tif=_253[i]);i++){var dfd=tif.dfd;var func=function(){if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_253.splice(i--,1);_254-=1;}else{if(tif.ioCheck(dfd)){_253.splice(i--,1);tif.resHandle(dfd);_254-=1;}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)<now){_253.splice(i--,1);var err=new Error("timeout exceeded");err.dojoType="timeout";dfd.errback(err);dfd.cancel();_254-=1;}}}}};if(dojo.config.debugAtAllCosts){func.call(this);}else{try{func.call(this);}catch(e){dfd.errback(e);}}}}_255(dfd);if(!_253.length){clearInterval(_252);_252=null;return;}};dojo._ioCancelAll=function(){try{_22c.forEach(_253,function(i){try{i.dfd.cancel();}catch(e){}});}catch(e){}};if(_22c.isIE){_22c.addOnWindowUnload(_22c._ioCancelAll);}_22c._ioNotifyStart=function(dfd){if(cfg.ioPublish&&_22c.publish&&dfd.ioArgs.args.ioPublish!==false){if(!_254){_22c.publish("/dojo/io/start");}_254+=1;_22c.publish("/dojo/io/send",[dfd]);}};_22c._ioWatch=function(dfd,_257,_258,_259){var args=dfd.ioArgs.args;if(args.timeout){dfd.startTime=(new Date()).getTime();}_253.push({dfd:dfd,validCheck:_257,ioCheck:_258,resHandle:_259});if(!_252){_252=setInterval(_256,50);}if(args.sync){_256();}};var _25a="application/x-www-form-urlencoded";var _25b=function(dfd){return dfd.ioArgs.xhr.readyState;};var _25c=function(dfd){return 4==dfd.ioArgs.xhr.readyState;};var _25d=function(dfd){var xhr=dfd.ioArgs.xhr;if(_22c._isDocumentOk(xhr)){dfd.callback(dfd);}else{var err=new Error("Unable to load "+dfd.ioArgs.url+" status:"+xhr.status);err.status=xhr.status;err.responseText=xhr.responseText;dfd.errback(err);}};dojo._ioAddQueryToUrl=function(_25e){if(_25e.query.length){_25e.url+=(_25e.url.indexOf("?")==-1?"?":"&")+_25e.query;_25e.query=null;}};dojo.xhr=function(_25f,args,_260){var dfd=_22c._ioSetArgs(args,_24d,_24f,_250);var _261=dfd.ioArgs;var xhr=_261.xhr=_22c._xhrObj(_261.args);if(!xhr){dfd.cancel();return dfd;}if("postData" in args){_261.query=args.postData;}else{if("putData" in args){_261.query=args.putData;}else{if("rawBody" in args){_261.query=args.rawBody;}else{if((arguments.length>2&&!_260)||"POST|PUT".indexOf(_25f.toUpperCase())==-1){_22c._ioAddQueryToUrl(_261);}}}}xhr.open(_25f,_261.url,args.sync!==true,args.user||undefined,args.password||undefined);if(args.headers){for(var hdr in args.headers){if(hdr.toLowerCase()==="content-type"&&!args.contentType){args.contentType=args.headers[hdr];}else{if(args.headers[hdr]){xhr.setRequestHeader(hdr,args.headers[hdr]);}}}}xhr.setRequestHeader("Content-Type",args.contentType||_25a);if(!args.headers||!("X-Requested-With" in args.headers)){xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");}_22c._ioNotifyStart(dfd);if(dojo.config.debugAtAllCosts){xhr.send(_261.query);}else{try{xhr.send(_261.query);}catch(e){_261.error=e;dfd.cancel();}}_22c._ioWatch(dfd,_25b,_25c,_25d);xhr=null;return dfd;};dojo.xhrGet=function(args){return _22c.xhr("GET",args);};dojo.rawXhrPost=dojo.xhrPost=function(args){return _22c.xhr("POST",args,true);};dojo.rawXhrPut=dojo.xhrPut=function(args){return _22c.xhr("PUT",args,true);};dojo.xhrDelete=function(args){return _22c.xhr("DELETE",args);};})();}if(!dojo._hasResource["dojo._base.fx"]){dojo._hasResource["dojo._base.fx"]=true;dojo.provide("dojo._base.fx");(function(){var d=dojo;var _262=d._mixin;dojo._Line=function(_263,end){this.start=_263;this.end=end;};dojo._Line.prototype.getValue=function(n){return ((this.end-this.start)*n)+this.start;};dojo.Animation=function(args){_262(this,args);if(d.isArray(this.curve)){this.curve=new d._Line(this.curve[0],this.curve[1]);}};d._Animation=d.Animation;d.extend(dojo.Animation,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var _264=this._percent,_265=this.easing;return _265?_265(_264):_264;},_fire:function(evt,args){var a=args||[];if(this[evt]){if(d.config.debugAtAllCosts){this[evt].apply(this,a);}else{try{this[evt].apply(this,a);}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}}}return this;},play:function(_266,_267){var _268=this;if(_268._delayTimer){_268._clearTimer();}if(_267){_268._stopTimer();_268._active=_268._paused=false;_268._percent=0;}else{if(_268._active&&!_268._paused){return _268;}}_268._fire("beforeBegin",[_268.node]);var de=_266||_268.delay,_269=dojo.hitch(_268,"_play",_267);if(de>0){_268._delayTimer=setTimeout(_269,de);return _268;}_269();return _268;},_play:function(_26a){var _26b=this;if(_26b._delayTimer){_26b._clearTimer();}_26b._startTime=new Date().valueOf();if(_26b._paused){_26b._startTime-=_26b.duration*_26b._percent;}_26b._endTime=_26b._startTime+_26b.duration;_26b._active=true;_26b._paused=false;var _26c=_26b.curve.getValue(_26b._getStep());if(!_26b._percent){if(!_26b._startRepeatCount){_26b._startRepeatCount=_26b.repeat;}_26b._fire("onBegin",[_26c]);}_26b._fire("onPlay",[_26c]);_26b._cycle();return _26b;},pause:function(){var _26d=this;if(_26d._delayTimer){_26d._clearTimer();}_26d._stopTimer();if(!_26d._active){return _26d;}_26d._paused=true;_26d._fire("onPause",[_26d.curve.getValue(_26d._getStep())]);return _26d;},gotoPercent:function(_26e,_26f){var _270=this;_270._stopTimer();_270._active=_270._paused=true;_270._percent=_26e;if(_26f){_270.play();}return _270;},stop:function(_271){var _272=this;if(_272._delayTimer){_272._clearTimer();}if(!_272._timer){return _272;}_272._stopTimer();if(_271){_272._percent=1;}_272._fire("onStop",[_272.curve.getValue(_272._getStep())]);_272._active=_272._paused=false;return _272;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _273=this;if(_273._active){var curr=new Date().valueOf();var step=(curr-_273._startTime)/(_273._endTime-_273._startTime);if(step>=1){step=1;}_273._percent=step;if(_273.easing){step=_273.easing(step);}_273._fire("onAnimate",[_273.curve.getValue(step)]);if(_273._percent<1){_273._startTimer();}else{_273._active=false;if(_273.repeat>0){_273.repeat--;_273.play(null,true);}else{if(_273.repeat==-1){_273.play(null,true);}else{if(_273._startRepeatCount){_273.repeat=_273._startRepeatCount;_273._startRepeatCount=0;}}}_273._percent=0;_273._fire("onEnd",[_273.node]);!_273.repeat&&_273._stopTimer();}}return _273;},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer;}});var ctr=0,_274=[],_275=null,_276={run:function(){}};d.extend(d.Animation,{_startTimer:function(){if(!this._timer){this._timer=d.connect(_276,"run",this,"_cycle");ctr++;}if(!_275){_275=setInterval(d.hitch(_276,"run"),this.rate);}},_stopTimer:function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_275);_275=null;ctr=0;}}});var _277=d.isIE?function(node){var ns=node.style;if(!ns.width.length&&d.style(node,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(args){args.node=d.byId(args.node);var _278=_262({properties:{}},args),_279=(_278.properties.opacity={});_279.start=!("start" in _278)?function(){return +d.style(_278.node,"opacity")||0;}:_278.start;_279.end=_278.end;var anim=d.animateProperty(_278);d.connect(anim,"beforeBegin",d.partial(_277,_278.node));return anim;};dojo.fadeIn=function(args){return d._fade(_262({end:1},args));};dojo.fadeOut=function(args){return d._fade(_262({end:0},args));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _27a=function(_27b){this._properties=_27b;for(var p in _27b){var prop=_27b[p];if(prop.start instanceof d.Color){prop.tempColor=new d.Color();}}};_27a.prototype.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p],_27c=prop.start;if(_27c instanceof d.Color){ret[p]=d.blendColors(_27c,prop.end,r,prop.tempColor).toCss();}else{if(!d.isArray(_27c)){ret[p]=((prop.end-_27c)*r)+_27c+(p!="opacity"?prop.units||"px":0);}}}return ret;};dojo.animateProperty=function(args){var n=args.node=d.byId(args.node);if(!args.easing){args.easing=d._defaultEasing;}var anim=new d.Animation(args);d.connect(anim,"beforeBegin",anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];if(d.isFunction(prop)){prop=prop(n);}prop=pm[p]=_262({},(d.isObject(prop)?prop:{end:prop}));if(d.isFunction(prop.start)){prop.start=prop.start(n);}if(d.isFunction(prop.end)){prop.end=prop.end(n);}var _27d=(p.toLowerCase().indexOf("color")>=0);function _27e(node,p){var v={height:node.offsetHeight,width:node.offsetWidth}[p];if(v!==undefined){return v;}v=d.style(node,p);return (p=="opacity")?+v:(_27d?v:parseFloat(v));};if(!("end" in prop)){prop.end=_27e(n,p);}else{if(!("start" in prop)){prop.start=_27e(n,p);}}if(_27d){prop.start=new d.Color(prop.start);prop.end=new d.Color(prop.end);}else{prop.start=(p=="opacity")?+prop.start:parseFloat(prop.start);}}this.curve=new _27a(pm);});d.connect(anim,"onAnimate",d.hitch(d,"style",anim.node));return anim;};dojo.anim=function(node,_27f,_280,_281,_282,_283){return d.animateProperty({node:node,duration:_280||d.Animation.prototype.duration,properties:_27f,easing:_281,onEnd:_282}).play(_283||0);};})();}if(!dojo._hasResource["dojo._base.browser"]){dojo._hasResource["dojo._base.browser"]=true;dojo.provide("dojo._base.browser");dojo.forEach(dojo.config.require,function(i){dojo["require"](i);});}if(dojo.config.afterOnLoad&&dojo.isBrowser){window.setTimeout(dojo._loadInit,1000);}})();\r
10266 </script>\r
10267 \r
10268 \r
10269 <script id="effectgames" type="x">\r
10270 ;\r
10271 var ZeroUpload = {\r
10272 clients: {}, \r
10273 moviePath: 'ZeroUpload.swf', \r
10274 nextId: 1, \r
10275 $: function(thingy) {\r
10276 if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);\r
10277 if (!thingy.__zeroUploadExtended) {\r
10278 thingy.__zeroUploadExtended = true;\r
10279 thingy.hide = function() { this.style.display = 'none'; };\r
10280 thingy.show = function() { this.style.display = ''; };\r
10281 thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };\r
10282 thingy.removeClass = function(name) {\r
10283 this.className = this.className.replace( new RegExp("(^|\\s+)" + name + "(\\s+|$)"), "").replace(/^\s+|\s+$/g, '');\r
10284 };\r
10285 thingy.hasClass = function(name) {\r
10286 return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );\r
10287 };\r
10288 }\r
10289 return thingy;\r
10290 },\r
10291 setMoviePath: function(path) {\r
10292 this.moviePath = path;\r
10293 },\r
10294 dispatch: function(id, eventName, args) {\r
10295 var client = this.clients[id];\r
10296 if (client) {\r
10297 client.receiveEvent(eventName, args);\r
10298 }\r
10299 },\r
10300 register: function(id, client) {\r
10301 this.clients[id] = client;\r
10302 },\r
10303 getDOMObjectPosition: function(obj) {\r
10304 var info = {\r
10305 left: 0, \r
10306 top: 0, \r
10307 width: obj.width ? obj.width : obj.offsetWidth, \r
10308 height: obj.height ? obj.height : obj.offsetHeight\r
10309 };\r
10310 while (obj) {\r
10311 info.left += obj.offsetLeft;\r
10312 info.top += obj.offsetTop;\r
10313 obj = obj.offsetParent;\r
10314 }\r
10315 return info;\r
10316 },\r
10317 Client: function(elem) {\r
10318 this.fileTypes = ["All Files", "*.*"];\r
10319 this.postParams = {};\r
10320 this.handlers = {};\r
10321 this.id = ZeroUpload.nextId++;\r
10322 this.containerId = 'ZeroUploadContainer_' + this.id;\r
10323 this.movieId = 'ZeroUploadMovie_' + this.id;\r
10324 ZeroUpload.register(this.id, this);\r
10325 if (elem) this.glue(elem);\r
10326 }\r
10327 };\r
10328 ZeroUpload.Client.prototype = {\r
10329 id: 0, \r
10330 ready: false, \r
10331 movie: null, \r
10332 fileTypes: null, \r
10333 postParams: null, \r
10334 targetURL: '', \r
10335 fileDataField: 'Filedata', \r
10336 handCursorEnabled: true, \r
10337 maxFileSize: 0, \r
10338 cssEffects: true, \r
10339 maxFiles: 0, \r
10340 delayBetween: 1, \r
10341 handlers: null, \r
10342 glue: function(elem) {\r
10343 this.domElement = ZeroUpload.$(elem);\r
10344 var zIndex = 9999;\r
10345 if (this.domElement.style.zIndex) {\r
10346 zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;\r
10347 }\r
10348 var box = ZeroUpload.getDOMObjectPosition(this.domElement);\r
10349 this.div = document.createElement('div');\r
10350 var style = this.div.style;\r
10351 style.position = 'absolute';\r
10352 style.left = '' + box.left + 'px';\r
10353 style.top = '' + box.top + 'px';\r
10354 style.width = '' + box.width + 'px';\r
10355 style.height = '' + box.height + 'px';\r
10356 style.zIndex = zIndex;\r
10357 var body = document.getElementsByTagName('body')[0];\r
10358 body.appendChild(this.div);\r
10359 this.div.innerHTML = this.getHTML( box.width, box.height );\r
10360 },\r
10361 getHTML: function(width, height) {\r
10362 var html = '';\r
10363 var flashvars = 'id=' + this.id + \r
10364 '&width=' + width + \r
10365 '&height=' + height;\r
10366 if (navigator.userAgent.match(/MSIE/)) {\r
10367 var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';\r
10368 html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroUpload.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';\r
10369 }\r
10370 else {\r
10371 html += '<embed id="'+this.movieId+'" src="'+ZeroUpload.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';\r
10372 }\r
10373 return html;\r
10374 },\r
10375 hide: function() {\r
10376 if (this.div) {\r
10377 this.div.style.left = '-2000px';\r
10378 }\r
10379 },\r
10380 show: function() {\r
10381 this.reposition();\r
10382 },\r
10383 destroy: function() {\r
10384 if (this.domElement && this.div) {\r
10385 this.hide();\r
10386 this.movie = null;\r
10387 try { this.div.removeChild( this.movie ); } catch(e) {;}\r
10388 var body = document.getElementsByTagName('body')[0];\r
10389 try { body.removeChild( this.div ); } catch(e) {;}\r
10390 this.domElement = null;\r
10391 this.div = null;\r
10392 }\r
10393 },\r
10394 reposition: function(elem) {\r
10395 if (elem) {\r
10396 this.domElement = ZeroUpload.$(elem);\r
10397 }\r
10398 if (this.domElement && this.div) {\r
10399 var box = ZeroUpload.getDOMObjectPosition(this.domElement);\r
10400 var style = this.div.style;\r
10401 style.left = '' + box.left + 'px';\r
10402 style.top = '' + box.top + 'px';\r
10403 }\r
10404 },\r
10405 setFileTypes: function(desc, exts) {\r
10406 this.fileTypes = [desc, exts];\r
10407 if (this.ready) this.movie.setFileTypes(desc, exts);\r
10408 },\r
10409 setPostParam: function(name, value) {\r
10410 this.postParams[name] = value;\r
10411 if (this.ready) this.movie.setPostParam(name, value);\r
10412 },\r
10413 setPostParams: function(obj) {\r
10414 for (var key in obj) this.setPostParam(key, obj[key]);\r
10415 if (this.ready) this.movie.setPostParams(obj);\r
10416 },\r
10417 setURL: function(url) {\r
10418 this.targetURL = url;\r
10419 if (this.ready) this.movie.setURL(url);\r
10420 },\r
10421 setFileDataField: function(name) {\r
10422 this.fileDataField = name;\r
10423 if (this.ready) this.movie.setFileDataField(name);\r
10424 },\r
10425 addEventListener: function(eventName, func) {\r
10426 eventName = eventName.toString().toLowerCase().replace(/^on/, '');\r
10427 if (!this.handlers[eventName]) this.handlers[eventName] = [];\r
10428 this.handlers[eventName].push(func);\r
10429 },\r
10430 cancel: function() {\r
10431 if (this.ready) this.movie.cancel();\r
10432 },\r
10433 setHandCursor: function(enabled) {\r
10434 this.handCursorEnabled = enabled;\r
10435 if (this.ready) this.movie.setHandCursor(enabled);\r
10436 },\r
10437 setMaxFileSize: function(size) {\r
10438 this.maxFileSize = size;\r
10439 if (this.ready) this.movie.setMaxFileSize(size);\r
10440 },\r
10441 setMaxFiles: function(num) {\r
10442 this.maxFiles = num;\r
10443 if (this.ready) this.movie.setMaxFiles(num);\r
10444 },\r
10445 setCSSEffects: function(enabled) {\r
10446 this.cssEffects = !!enabled;\r
10447 },\r
10448 setDelayBetween: function(ms) {\r
10449 this.delayBetween = ms;\r
10450 if (this.ready) this.movie.setDelayBetween(ms);\r
10451 },\r
10452 receiveEvent: function(eventName, args) {\r
10453 eventName = eventName.toString().toLowerCase().replace(/^on/, '');\r
10454 if (this.handlers.debug) {\r
10455 for (var idx = 0, len = this.handlers.debug.length; idx < len; idx++) {\r
10456 this.fireHandler( 'debug', eventName, args );\r
10457 }\r
10458 }\r
10459 switch (eventName) {\r
10460 case 'load':\r
10461 this.movie = document.getElementById(this.movieId);\r
10462 if (!this.movie) {\r
10463 var self = this;\r
10464 setTimeout( function() { self.receiveEvent('load', null); }, 10 );\r
10465 return;\r
10466 }\r
10467 if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {\r
10468 var self = this;\r
10469 setTimeout( function() { self.receiveEvent('load', null); }, 100 );\r
10470 this.ready = true;\r
10471 return;\r
10472 }\r
10473 this.ready = true;\r
10474 this.movie.setFileTypes( this.fileTypes[0], this.fileTypes[1] );\r
10475 this.movie.setPostParams( this.postParams );\r
10476 this.movie.setURL( this.targetURL );\r
10477 this.movie.setFileDataField( this.fileDataField );\r
10478 this.movie.setHandCursor( this.handCursorEnabled );\r
10479 this.movie.setMaxFileSize( this.maxFileSize );\r
10480 this.movie.setMaxFiles( this.maxFiles );\r
10481 this.movie.setDelayBetween( this.delayBetween );\r
10482 break;\r
10483 case 'mouseover':\r
10484 if (this.domElement && this.cssEffects) {\r
10485 this.domElement.addClass('hover');\r
10486 if (this.recoverActive) this.domElement.addClass('active');\r
10487 }\r
10488 break;\r
10489 case 'mouseout':\r
10490 if (this.domElement && this.cssEffects) {\r
10491 this.recoverActive = false;\r
10492 if (this.domElement.hasClass('active')) {\r
10493 this.domElement.removeClass('active');\r
10494 this.recoverActive = true;\r
10495 }\r
10496 this.domElement.removeClass('hover');\r
10497 }\r
10498 break;\r
10499 case 'mousedown':\r
10500 if (this.domElement && this.cssEffects) {\r
10501 this.domElement.addClass('active');\r
10502 }\r
10503 break;\r
10504 case 'mouseup':\r
10505 if (this.domElement && this.cssEffects) {\r
10506 this.domElement.removeClass('active');\r
10507 this.recoverActive = false;\r
10508 }\r
10509 break;\r
10510\r
10511 this.fireHandler(eventName, args);\r
10512 },\r
10513 fireHandler: function() {\r
10514 var eventName = arguments[0];\r
10515 eventName = eventName.toString().toLowerCase().replace(/^on/, '');\r
10516 var args = [ this ];\r
10517 for (var idx = 1; idx < arguments.length; idx++) args.push( arguments[idx] );\r
10518 if (this.handlers[eventName]) {\r
10519 for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {\r
10520 var func = this.handlers[eventName][idx];\r
10521 if (typeof(func) == 'function') {\r
10522 func.apply(window, args);\r
10523 }\r
10524 else if ((typeof(func) == 'object') && (func.length == 2)) {\r
10525 func[0][ func[1] ].apply(func[0], args);\r
10526 }\r
10527 else if (typeof(func) == 'string') {\r
10528 window[func].apply(window, args);\r
10529 }\r
10530\r
10531\r
10532 }\r
10533 };\r
10534 var ZeroClipboard = {\r
10535 version: "1.0.5",\r
10536 clients: {}, \r
10537 moviePath: 'ZeroClipboard.swf', \r
10538 nextId: 1, \r
10539 $: function(thingy) {\r
10540 if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);\r
10541 if (!thingy.addClass) {\r
10542 thingy.hide = function() { this.style.display = 'none'; };\r
10543 thingy.show = function() { this.style.display = ''; };\r
10544 thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };\r
10545 thingy.removeClass = function(name) {\r
10546 this.className = this.className.replace( new RegExp("(^|\\s+)" + name + "(\\s+|$)"), "").replace(/^\s+|\s+$/g, '');\r
10547 };\r
10548 thingy.hasClass = function(name) {\r
10549 return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );\r
10550 };\r
10551 }\r
10552 return thingy;\r
10553 },\r
10554 setMoviePath: function(path) {\r
10555 this.moviePath = path;\r
10556 },\r
10557 dispatch: function(id, eventName, args) {\r
10558 var client = this.clients[id];\r
10559 if (client) {\r
10560 client.receiveEvent(eventName, args);\r
10561 }\r
10562 },\r
10563 register: function(id, client) {\r
10564 this.clients[id] = client;\r
10565 },\r
10566 getDOMObjectPosition: function(obj, stopObj) {\r
10567 var info = {\r
10568 left: 0, \r
10569 top: 0, \r
10570 width: obj.width ? obj.width : obj.offsetWidth, \r
10571 height: obj.height ? obj.height : obj.offsetHeight\r
10572 };\r
10573 while (obj && (obj != stopObj)) {\r
10574 info.left += obj.offsetLeft;\r
10575 info.top += obj.offsetTop;\r
10576 obj = obj.offsetParent;\r
10577 }\r
10578 return info;\r
10579 },\r
10580 Client: function(elem) {\r
10581 this.handlers = {};\r
10582 this.id = ZeroClipboard.nextId++;\r
10583 this.movieId = 'ZeroClipboardMovie_' + this.id;\r
10584 ZeroClipboard.register(this.id, this);\r
10585 if (elem) this.glue(elem);\r
10586 }\r
10587 };\r
10588 ZeroClipboard.Client.prototype = {\r
10589 id: 0, \r
10590 ready: false, \r
10591 movie: null, \r
10592 clipText: '', \r
10593 handCursorEnabled: true, \r
10594 cssEffects: true, \r
10595 handlers: null, \r
10596 glue: function(elem, appendElem, stylesToAdd) {\r
10597 this.domElement = ZeroClipboard.$(elem);\r
10598 var zIndex = 99;\r
10599 if (this.domElement.style.zIndex) {\r
10600 zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;\r
10601 }\r
10602 if (typeof(appendElem) == 'string') {\r
10603 appendElem = ZeroClipboard.$(appendElem);\r
10604 }\r
10605 else if (typeof(appendElem) == 'undefined') {\r
10606 appendElem = document.getElementsByTagName('body')[0];\r
10607 }\r
10608 var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);\r
10609 this.div = document.createElement('div');\r
10610 var style = this.div.style;\r
10611 style.position = 'absolute';\r
10612 style.left = '' + box.left + 'px';\r
10613 style.top = '' + box.top + 'px';\r
10614 style.width = '' + box.width + 'px';\r
10615 style.height = '' + box.height + 'px';\r
10616 style.zIndex = zIndex;\r
10617 if (typeof(stylesToAdd) == 'object') {\r
10618 for (addedStyle in stylesToAdd) {\r
10619 style[addedStyle] = stylesToAdd[addedStyle];\r
10620 }\r
10621 }\r
10622 appendElem.appendChild(this.div);\r
10623 this.div.innerHTML = this.getHTML( box.width, box.height );\r
10624 },\r
10625 getHTML: function(width, height) {\r
10626 var html = '';\r
10627 var flashvars = 'id=' + this.id + \r
10628 '&width=' + width + \r
10629 '&height=' + height;\r
10630 if (navigator.userAgent.match(/MSIE/)) {\r
10631 var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';\r
10632 html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';\r
10633 }\r
10634 else {\r
10635 html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';\r
10636 }\r
10637 return html;\r
10638 },\r
10639 hide: function() {\r
10640 if (this.div) {\r
10641 this.div.style.left = '-2000px';\r
10642 }\r
10643 },\r
10644 show: function() {\r
10645 this.reposition();\r
10646 },\r
10647 destroy: function() {\r
10648 if (this.domElement && this.div) {\r
10649 this.hide();\r
10650 this.div.innerHTML = '';\r
10651 var body = document.getElementsByTagName('body')[0];\r
10652 try { body.removeChild( this.div ); } catch(e) {;}\r
10653 this.domElement = null;\r
10654 this.div = null;\r
10655 }\r
10656 },\r
10657 reposition: function(elem) {\r
10658 if (elem) {\r
10659 this.domElement = ZeroClipboard.$(elem);\r
10660 if (!this.domElement) this.hide();\r
10661 }\r
10662 if (this.domElement && this.div) {\r
10663 var box = ZeroClipboard.getDOMObjectPosition(this.domElement);\r
10664 var style = this.div.style;\r
10665 style.left = '' + box.left + 'px';\r
10666 style.top = '' + box.top + 'px';\r
10667 }\r
10668 },\r
10669 setText: function(newText) {\r
10670 this.clipText = newText;\r
10671 if (this.ready) this.movie.setText(newText);\r
10672 },\r
10673 addEventListener: function(eventName, func) {\r
10674 eventName = eventName.toString().toLowerCase().replace(/^on/, '');\r
10675 if (!this.handlers[eventName]) this.handlers[eventName] = [];\r
10676 this.handlers[eventName].push(func);\r
10677 },\r
10678 setHandCursor: function(enabled) {\r
10679 this.handCursorEnabled = enabled;\r
10680 if (this.ready) this.movie.setHandCursor(enabled);\r
10681 },\r
10682 setCSSEffects: function(enabled) {\r
10683 this.cssEffects = !!enabled;\r
10684 },\r
10685 receiveEvent: function(eventName, args) {\r
10686 eventName = eventName.toString().toLowerCase().replace(/^on/, '');\r
10687 switch (eventName) {\r
10688 case 'load':\r
10689 this.movie = document.getElementById(this.movieId);\r
10690 if (!this.movie) {\r
10691 var self = this;\r
10692 setTimeout( function() { self.receiveEvent('load', null); }, 1 );\r
10693 return;\r
10694 }\r
10695 if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {\r
10696 var self = this;\r
10697 setTimeout( function() { self.receiveEvent('load', null); }, 100 );\r
10698 this.ready = true;\r
10699 return;\r
10700 }\r
10701 this.ready = true;\r
10702 this.movie.setText( this.clipText );\r
10703 this.movie.setHandCursor( this.handCursorEnabled );\r
10704 break;\r
10705 case 'mouseover':\r
10706 if (this.domElement && this.cssEffects) {\r
10707 this.domElement.addClass('hover');\r
10708 if (this.recoverActive) this.domElement.addClass('active');\r
10709 }\r
10710 break;\r
10711 case 'mouseout':\r
10712 if (this.domElement && this.cssEffects) {\r
10713 this.recoverActive = false;\r
10714 if (this.domElement.hasClass('active')) {\r
10715 this.domElement.removeClass('active');\r
10716 this.recoverActive = true;\r
10717 }\r
10718 this.domElement.removeClass('hover');\r
10719 }\r
10720 break;\r
10721 case 'mousedown':\r
10722 if (this.domElement && this.cssEffects) {\r
10723 this.domElement.addClass('active');\r
10724 }\r
10725 break;\r
10726 case 'mouseup':\r
10727 if (this.domElement && this.cssEffects) {\r
10728 this.domElement.removeClass('active');\r
10729 this.recoverActive = false;\r
10730 }\r
10731 break;\r
10732\r
10733 if (this.handlers[eventName]) {\r
10734 for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {\r
10735 var func = this.handlers[eventName][idx];\r
10736 if (typeof(func) == 'function') {\r
10737 func(this, args);\r
10738 }\r
10739 else if ((typeof(func) == 'object') && (func.length == 2)) {\r
10740 func[0][ func[1] ](this, args);\r
10741 }\r
10742 else if (typeof(func) == 'string') {\r
10743 window[func](this, args);\r
10744 }\r
10745\r
10746\r
10747 }\r
10748 };\r
10749 var hexcase = 0;  \r
10750 var b64pad  = ""; \r
10751 var chrsz   = 8;  \r
10752 function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}\r
10753 function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}\r
10754 function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }\r
10755 function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }\r
10756 function calcMD5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}\r
10757 function md5_vm_test()\r
10758 {\r
10759 return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";\r
10760 }\r
10761 function core_md5(x, len)\r
10762 {\r
10763 x[len >> 5] |= 0x80 << ((len) % 32);\r
10764 x[(((len + 64) >>> 9) << 4) + 14] = len;\r
10765 var a =  1732584193;\r
10766 var b = -271733879;\r
10767 var c = -1732584194;\r
10768 var d =  271733878;\r
10769 for(var i = 0; i < x.length; i += 16)\r
10770 {\r
10771 var olda = a;\r
10772 var oldb = b;\r
10773 var oldc = c;\r
10774 var oldd = d;\r
10775 a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);\r
10776 d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);\r
10777 c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);\r
10778 b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);\r
10779 a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);\r
10780 d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);\r
10781 c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);\r
10782 b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);\r
10783 a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);\r
10784 d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);\r
10785 c = md5_ff(c, d, a, b, x[i+10], 17, -42063);\r
10786 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);\r
10787 a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);\r
10788 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);\r
10789 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);\r
10790 b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);\r
10791 a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);\r
10792 d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);\r
10793 c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);\r
10794 b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);\r
10795 a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);\r
10796 d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);\r
10797 c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);\r
10798 b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);\r
10799 a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);\r
10800 d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);\r
10801 c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);\r
10802 b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);\r
10803 a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);\r
10804 d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);\r
10805 c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);\r
10806 b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);\r
10807 a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);\r
10808 d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);\r
10809 c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);\r
10810 b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);\r
10811 a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);\r
10812 d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);\r
10813 c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);\r
10814 b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);\r
10815 a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);\r
10816 d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);\r
10817 c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);\r
10818 b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);\r
10819 a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);\r
10820 d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);\r
10821 c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);\r
10822 b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);\r
10823 a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);\r
10824 d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);\r
10825 c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);\r
10826 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);\r
10827 a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);\r
10828 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);\r
10829 c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);\r
10830 b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);\r
10831 a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);\r
10832 d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);\r
10833 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);\r
10834 b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);\r
10835 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);\r
10836 d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);\r
10837 c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);\r
10838 b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);\r
10839 a = safe_add(a, olda);\r
10840 b = safe_add(b, oldb);\r
10841 c = safe_add(c, oldc);\r
10842 d = safe_add(d, oldd);\r
10843 }\r
10844 return Array(a, b, c, d);\r
10845 }\r
10846 function md5_cmn(q, a, b, x, s, t)\r
10847 {\r
10848 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);\r
10849 }\r
10850 function md5_ff(a, b, c, d, x, s, t)\r
10851 {\r
10852 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\r
10853 }\r
10854 function md5_gg(a, b, c, d, x, s, t)\r
10855 {\r
10856 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\r
10857 }\r
10858 function md5_hh(a, b, c, d, x, s, t)\r
10859 {\r
10860 return md5_cmn(b ^ c ^ d, a, b, x, s, t);\r
10861 }\r
10862 function md5_ii(a, b, c, d, x, s, t)\r
10863 {\r
10864 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\r
10865 }\r
10866 function core_hmac_md5(key, data)\r
10867 {\r
10868 var bkey = str2binl(key);\r
10869 if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);\r
10870 var ipad = Array(16), opad = Array(16);\r
10871 for(var i = 0; i < 16; i++) \r
10872 {\r
10873 ipad[i] = bkey[i] ^ 0x36363636;\r
10874 opad[i] = bkey[i] ^ 0x5C5C5C5C;\r
10875 }\r
10876 var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);\r
10877 return core_md5(opad.concat(hash), 512 + 128);\r
10878 }\r
10879 function safe_add(x, y)\r
10880 {\r
10881 var lsw = (x & 0xFFFF) + (y & 0xFFFF);\r
10882 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r
10883 return (msw << 16) | (lsw & 0xFFFF);\r
10884 }\r
10885 function bit_rol(num, cnt)\r
10886 {\r
10887 return (num << cnt) | (num >>> (32 - cnt));\r
10888 }\r
10889 function str2binl(str)\r
10890 {\r
10891 var bin = Array();\r
10892 var mask = (1 << chrsz) - 1;\r
10893 for(var i = 0; i < str.length * chrsz; i += chrsz)\r
10894 bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);\r
10895 return bin;\r
10896 }\r
10897 function binl2hex(binarray)\r
10898 {\r
10899 var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";\r
10900 var str = "";\r
10901 for(var i = 0; i < binarray.length * 4; i++)\r
10902 {\r
10903 str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +\r
10904 hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);\r
10905 }\r
10906 return str;\r
10907 }\r
10908 function binl2b64(binarray)\r
10909 {\r
10910 var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";\r
10911 var str = "";\r
10912 for(var i = 0; i < binarray.length * 4; i += 3)\r
10913 {\r
10914 var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)\r
10915 | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )\r
10916 |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);\r
10917 for(var j = 0; j < 4; j++)\r
10918 {\r
10919 if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;\r
10920 else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);\r
10921 }\r
10922 }\r
10923 return str;\r
10924 }\r
10925 var Namespace = {\r
10926 create: function(path, container) {\r
10927 if (!container) container = window;\r
10928 while (path.match(/^(\w+)\.?/)) {\r
10929 var key = RegExp.$1;\r
10930 path = path.replace(/^(\w+)\.?/, "");\r
10931 if (!container[key]) container[key] = {};\r
10932 container = container[key];\r
10933 }\r
10934 return container;\r
10935 },\r
10936 prep: function(name, container) {\r
10937 if (!container) container = window;\r
10938 if (name.match(/^(.+)\.(\w+)$/)) {\r
10939 var path = RegExp.$1;\r
10940 name = RegExp.$2;\r
10941 container = Namespace.create(path, container);\r
10942 }\r
10943 return { container: container, name: name };\r
10944 }\r
10945 };\r
10946 var Class = {\r
10947 create: function(name, members) {\r
10948 assert(name, "Must pass name to Class.create");\r
10949 if (!members) members = {};\r
10950 members.__parent = null;\r
10951 var ns = Namespace.prep(name);\r
10952 var container = ns.container;\r
10953 name = ns.name;\r
10954 members.__name = name;\r
10955 if (!members.__construct) members.__construct = function() {};\r
10956 container[name] = members.__construct;\r
10957 var static_members = members.__static;\r
10958 if (static_members) {\r
10959 for (var key in static_members) {\r
10960 container[name][key] = static_members[key];\r
10961 }\r
10962 }\r
10963 container[name].prototype = members;\r
10964 container[name].extend = container[name].subclass = function(name, members) {\r
10965 Class.subclass( this, name, members );\r
10966 };\r
10967 container[name].set = container[name].add = function(members) {\r
10968 Class.add( this, members );\r
10969 };\r
10970 },\r
10971 subclass: function(parent, name, members) {\r
10972 assert(parent, "Must pass parent class to Class.subclass");\r
10973 assert(name, "Must pass name to Class.subclass");\r
10974 if (!members) members = {};\r
10975 members.__name = name;\r
10976 members.__parent = parent.prototype;\r
10977 var ns = Namespace.prep(name);\r
10978 var container = ns.container;\r
10979 var subname = ns.name;\r
10980 if (members.__construct) {\r
10981 container[subname] = members.__construct;\r
10982 }\r
10983 else {\r
10984 var code = parent.toString();\r
10985 var args = code.substring( code.indexOf("(")+1, code.indexOf(")") );\r
10986 var inner_code = code.substring( code.indexOf("{")+1, code.lastIndexOf("}") );\r
10987 eval('members.__construct = container[subname] = function ('+args+') {'+inner_code+'};');\r
10988 }\r
10989 if (parent.prototype.__static) {\r
10990 for (var key in parent.prototype.__static) {\r
10991 container[subname][key] = parent.prototype.__static[key];\r
10992 }\r
10993 }\r
10994 var static_members = members.__static;\r
10995 if (static_members) {\r
10996 for (var key in static_members) {\r
10997 container[subname][key] = static_members[key];\r
10998 }\r
10999 }\r
11000 container[subname].prototype = new parent();\r
11001 for (var key in members) container[subname].prototype[key] = members[key];\r
11002 container[subname].extend = container[subname].subclass = function(name, members) {\r
11003 Class.subclass( this, name, members );\r
11004 };\r
11005 container[subname].set = container[subname].add = function(members) {\r
11006 Class.add( this, members );\r
11007 };\r
11008 },\r
11009 add: function(obj, members) {\r
11010 for (var key in members) obj.prototype[key] = members[key];\r
11011 },\r
11012 require: function() {\r
11013 for (var idx = 0, len = arguments.length; idx < len; idx++) {\r
11014 assert( !!eval('window.' + arguments[idx]) );\r
11015 }\r
11016 return true;\r
11017 }\r
11018 };\r
11019 Class.extend = Class.subclass;\r
11020 Class.set = Class.add;\r
11021 if (!window.assert) window.assert = function(fact, msg) {\r
11022 if (!fact) return alert("ASSERT FAILED!  " + msg);\r
11023 return fact;\r
11024 };\r
11025 var images_uri = '/effect/images';\r
11026 var icons_uri = images_uri + '/icons';\r
11027 var protocol = location.protocol.match(/https/i) ? 'https' : 'http';\r
11028 var ua = navigator.userAgent;\r
11029 var safari = !!ua.match(/Safari/);\r
11030 var safari3 = safari && (!!ua.match(/Version\/[3456789]/) || window.chrome);\r
11031 var safari2 = (safari && !safari3 && !window.chrome);\r
11032 var ie = !!ua.match(/MSIE/);\r
11033 var ie7 = ie && !!ua.match(/MSIE\s+[789]/);\r
11034 var ie6 = (ie && !ie7);\r
11035 var moz = !safari && !ie;\r
11036 var op = !!window.opera;\r
11037 var mac = !!ua.match(/Mac/i);\r
11038 var ff = !!ua.match(/Firefox/i);\r
11039 var ff2 = ff && !!ua.match(/Firefox\/2/);\r
11040 var ff3 = ff && !!ua.match(/Firefox\/[3456789]/);\r
11041 var months = [\r
11042 [ 1, 'January' ], [ 2, 'February' ], [ 3, 'March' ], [ 4, 'April' ],\r
11043 [ 5, 'May' ], [ 6, 'June' ], [ 7, 'July' ], [ 8, 'August' ],\r
11044 [ 9, 'September' ], [ 10, 'October' ], [ 11, 'November' ],\r
11045 [ 12, 'December' ]\r
11046 ];\r
11047 var short_month_names = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', \r
11048 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec' ];\r
11049 var day_names = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', \r
11050 'Thursday', 'Friday', 'Saturday'];\r
11051 function $(thingy) {\r
11052 var obj = (typeof(thingy) == 'string') ? document.getElementById(thingy) : thingy;\r
11053 if (obj && !obj.setOpacity) {\r
11054 obj.hide = function() { this.style.display = 'none'; return this; };\r
11055 obj.show = function() { this.style.display = ''; return this; };\r
11056 obj.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; return this; };\r
11057 obj.removeClass = function(name) {\r
11058 var classes = this.className.split(/\s+/);\r
11059 var idx = find_idx_in_array( classes, name );\r
11060 if (idx > -1) {\r
11061 classes.splice( idx, 1 );\r
11062 this.className = classes.join(' ');\r
11063 }\r
11064 return this;\r
11065 };\r
11066 obj.setOpacity = function(opacity) {\r
11067 if (opacity == 0.0) {\r
11068 this.style.opacity = 1.0;\r
11069 if (moz) this.style.MozOpacity = 1.0;\r
11070 else if (ie) this.style.filter = "";\r
11071 this.style.visibility = 'hidden';\r
11072 }\r
11073 else if (opacity == 1.0) {\r
11074 this.style.opacity = 1.0;\r
11075 if (moz) this.style.MozOpacity = 1.0;\r
11076 else if (ie) this.style.filter = "";\r
11077 this.style.visibility = 'visible';\r
11078 }\r
11079 else {\r
11080 this.style.opacity = opacity;\r
11081 if (moz) this.style.MozOpacity = opacity;\r
11082 else if (ie) this.style.filter = "alpha(opacity=" + parseInt(opacity * 100, 10) + ")";\r
11083 this.style.visibility = 'visible';\r
11084 }\r
11085 return this;\r
11086 };\r
11087 }\r
11088 return obj;\r
11089 }\r
11090 function parseQueryString(queryString) {\r
11091 var pair = null;\r
11092 var queryObject = new Object();\r
11093 queryString = queryString.replace(/^.*\?(.+)$/,'$1');\r
11094 while ((pair = queryString.match(/(\w+)=([^\&]*)\&?/)) && pair[0].length) {\r
11095 queryString = queryString.substring( pair[0].length );\r
11096 pair[2] = unescape(pair[2]);\r
11097 if (/^\-?\d+$/.test(pair[2])) pair[2] = parseInt(pair[2], 10);\r
11098 if (typeof(queryObject[pair[1]]) != 'undefined') {\r
11099 always_array( queryObject, pair[1] );\r
11100 array_push( queryObject[pair[1]], pair[2] );\r
11101 }\r
11102 else queryObject[pair[1]] = pair[2];\r
11103 }\r
11104 return queryObject;\r
11105 }\r
11106 function composeQueryString(queryObj) {\r
11107 var qs = '';\r
11108 for (var key in queryObj) {\r
11109 var values = always_array(queryObj[key]);\r
11110 for (var idx = 0, len = values.length; idx < len; idx++) {\r
11111 qs += (qs.length ? '&' : '?') + escape(key) + '=' + escape(values[idx]);\r
11112 }\r
11113 }\r
11114 return qs;\r
11115 }\r
11116 function spacer(width, height) {\r
11117 return '<img src="'+images_uri+'/spacer.gif" width="'+width+'" height="'+height+'">';\r
11118 }\r
11119 function solidify(obj) {\r
11120 obj.style.opacity = '1.0';\r
11121 if (moz) obj.style.MozOpacity = '1.0';\r
11122 else if (ie) obj.style.filter = '';\r
11123 }\r
11124 function transify(obj) {\r
11125 obj.style.opacity = '0.5';\r
11126 if (moz) obj.style.MozOpacity = '0.5';\r
11127 else if (ie) obj.style.filter = 'alpha(opacity=50)';\r
11128 }\r
11129 function trans_icon(name, code) {\r
11130 var size = 16;\r
11131 var html = '<a href="javascript:void(' + code + ')">';\r
11132 html += '<img src="'+icons_uri+'/'+name+'.gif" width='+size+' height='+size+' border=0';\r
11133 html += ' style="opacity:0.5; moz-opacity:0.5; filter:alpha(opacity=50);"';\r
11134 html += ' onMouseOver="solidify(this)"';\r
11135 html += ' onMouseOut="transify(this)"';\r
11136 html += '>';\r
11137 html += '</a>';\r
11138 return html;\r
11139 }\r
11140 function icon(name, label, code, status_text, id, hspace) {\r
11141 if (!window.icons_uri) return 'icons_uri not set!';\r
11142 var html = '';\r
11143 var ahref = '';\r
11144 var size = 16;\r
11145 if (typeof(label) == 'undefined') label = '';\r
11146 else label = '' + label;\r
11147 if (!id) id = '';\r
11148 if (!status_text) status_text = '';\r
11149 if (name.indexOf('_mini') > -1) size = 14;\r
11150 if (!name.match(/\.\w+$/)) name += '.gif';\r
11151 if (label) {\r
11152 html += '<table cellspacing=0 cellpadding=0 border=0><tr><td style="padding:0px; background:transparent;" valign=center>';\r
11153 }\r
11154 if (code) {\r
11155 if (code.toString().match(/^(\#|\/|http\:\/\/)/)) ahref = '<a href="' + code + '"';\r
11156 else ahref = '<a href="javascript:void(' + code + ')"';\r
11157 ahref += ' title="' + status_text + '">';\r
11158 html += ahref;\r
11159 }\r
11160 html += '<img id="'+id+'" class="png" src="'+png(icons_uri+'/'+name, true)+'" width='+size+' height='+size+' border=0>';\r
11161 if (code) html += '</a>';\r
11162 if (hspace) html += '&nbsp;';\r
11163 if (label) {\r
11164 html += '</td><td style="padding:0px;  background:transparent;" width=4>'+spacer(4,1)+'</td><td style="padding:0px; background:transparent;" valign=center>';\r
11165 if (code) html += ahref;\r
11166 html += label;\r
11167 if (code) html += '</a>';\r
11168 html += '</td></tr></table>';\r
11169 }\r
11170 return html;\r
11171 }\r
11172 function code_link(code, html, status_text) {\r
11173 if (!status_text) status_text = html.toString().replace(/<.+?>/g, "");\r
11174 return '<a href="javascript:void(' + code + ')"' + \r
11175 ' title="' + status_text + '"' + \r
11176 ' style="cursor:pointer"' + \r
11177 '>' + html + '</a>';\r
11178 }\r
11179 function set_section_visibility(id, visible) {\r
11180 var div = document.getElementById(id);\r
11181 var current_state = div.style.display;\r
11182 div.style.display = visible ? 'block' : 'none';\r
11183 var sc = document.getElementById('sc_' + id);\r
11184 if (sc) {\r
11185 var new_icon_name = visible ? 'arrow-down' : 'arrow-right';\r
11186 if (sc.src.indexOf('_mini') > -1) new_icon_name += '_mini';\r
11187 sc.src = icons_uri + '/' + new_icon_name + '.png';\r
11188 }\r
11189 if (visible && !div.innerHTML.length && div.getAttribute('onExpand')) \r
11190 eval( div.getAttribute('onExpand') );\r
11191 }\r
11192 function toggle_section(id) {\r
11193 var div = document.getElementById(id);\r
11194 var current_state = div.style.display;\r
11195 div.style.display = (current_state == 'block') ? 'none' : 'block';\r
11196 var sc = document.getElementById('sc_' + id);\r
11197 if (sc) {\r
11198 var new_icon_name = (current_state == 'block') ? 'arrow-right' : 'arrow-down';\r
11199 if (sc.src.indexOf('_mini') > -1) new_icon_name += '_mini';\r
11200 sc.src = icons_uri + '/' + new_icon_name + '.png';\r
11201 }\r
11202 if (!div.innerHTML.length && div.getAttribute('onExpand')) \r
11203 eval( div.getAttribute('onExpand') );\r
11204 }\r
11205 function section_control(id, expanded) {\r
11206 return icon(\r
11207 expanded ? 'arrow-down.png' : 'arrow-right.png', '', '', 'Toggle Section View', 'sc_' + id\r
11208 );\r
11209 }\r
11210 function get_text_from_bytes(bytes) {\r
11211 if (bytes >= 1024) {\r
11212 bytes = parseInt( (bytes / 1024) * 10, 10 ) / 10;\r
11213 if (bytes >= 1024) {\r
11214 bytes = parseInt( (bytes / 1024) * 10, 10 ) / 10;\r
11215 if (bytes >= 1024) {\r
11216 bytes = parseInt( (bytes / 1024) * 10, 10 ) / 10;\r
11217 return bytes + ' GB';\r
11218 } else return bytes + ' MB';\r
11219 }\r
11220 else return bytes + ' K';\r
11221 }\r
11222 else return bytes + ' bytes';\r
11223 }\r
11224 function csv_to_hash(csv) {\r
11225 if (!csv.length) return {};\r
11226 assert( arguments.length == 1, "Wrong number of arguments sent to csv_to_hash (" + arguments.length + ")" );\r
11227 var list = csv.split(/\,\s*/);\r
11228 var hash = {};\r
11229 for (var idx = 0, len = list.length; idx < len; idx++) {\r
11230 hash[ list[idx] ] = 1;\r
11231 }\r
11232 return hash;\r
11233 }\r
11234 function num_keys(hash) {\r
11235 var count = 0;\r
11236 for (var a in hash) count++;\r
11237 return count;\r
11238 }\r
11239 function reverse_hash(a) {\r
11240 var c = {};\r
11241 for (var key in a) {\r
11242 c[ a[key] ] = key;\r
11243 }\r
11244 return c;\r
11245 }\r
11246 function progress_bar(args) {\r
11247 if (!args.counter_max) args.counter_max = 1;\r
11248 var x = parseInt( (args.counter * args.width) / args.counter_max, 10 );\r
11249 if (x < 0) x = 0;\r
11250 if (x > args.width) x = args.width;\r
11251 var html = '<table cellspacing=0 cellpadding=0 border=0><tr><td valign=center';\r
11252 if (!x) html += ' background="'+images_uri+'/b2_loop.gif"';\r
11253 html += '>';\r
11254 html += '<nobr>';\r
11255 if (x > 4) {\r
11256 var xtemp = x - 4;\r
11257 html += '<img src="'+images_uri+'/a1.gif" width=2 height='+args.height+'>';\r
11258 html += '<img src="'+images_uri+'/a2.gif" width='+xtemp+' height='+args.height+'>';\r
11259 html += '<img src="'+images_uri+'/a3.gif" width=2 height='+args.height+'>';\r
11260 }\r
11261 if (x < args.width - 4) {\r
11262 var xtemp = (args.width - x) - 4;\r
11263 var b2 = x ? "b2" : "spacer";\r
11264 html += '<img src="'+images_uri+'/b1.gif" width=2 height='+args.height+'>';\r
11265 html += '<img src="'+images_uri+'/'+b2+'.gif" width='+xtemp+' height='+args.height+'>';\r
11266 html += '<img src="'+images_uri+'/b3.gif" width=2 height='+args.height+'>';\r
11267 }\r
11268 html += '</nobr>';\r
11269 html += '</td>';\r
11270 if (args.show_percent) {\r
11271 var pct = parseInt( (args.counter * 100) / args.counter_max, 10 );\r
11272 if (pct < 0) pct = 0;\r
11273 if (pct > 100) pct = 100;\r
11274 html += '<td valign=center>&nbsp;' + pct + '%</td>';\r
11275 }\r
11276 html += '</tr></table>';\r
11277 return html;\r
11278 }\r
11279 var g_unique_id = 772; \r
11280 function get_unique_id() {\r
11281 g_unique_id++;\r
11282 return g_unique_id;\r
11283 }\r
11284 function substitute(text, args) {\r
11285 if (!text) text = "";\r
11286 if (!args) args = {};\r
11287 while (text.indexOf('[') > -1) {\r
11288 var open_bracket = text.indexOf('[');\r
11289 var close_bracket = text.indexOf(']');\r
11290 var before = text.substring(0, open_bracket);\r
11291 var after = text.substring(close_bracket + 1, text.length);\r
11292 var name = text.substring( open_bracket + 1, close_bracket );\r
11293 var value = '';\r
11294 if (name.indexOf('/') == 0) value = lookup_path(name, args);\r
11295 else if (typeof(args[name]) != 'undefined') value = args[name];\r
11296 else if (!(/^\w+$/.test(name))) value = eval(name);\r
11297 else value = '[' + name + ']';\r
11298 text = before + value + after;\r
11299\r
11300 return text;\r
11301 }\r
11302 function time_now() {\r
11303 var now = new Date();\r
11304 return parseInt( now.getTime() / 1000, 10 );\r
11305 }\r
11306 function ucfirst(text) {\r
11307 return text.substring(0, 1).toUpperCase() + text.substring(1, text.length).toLowerCase();\r
11308 }\r
11309 function text_to_html(text) {\r
11310 if (!text) text = "";\r
11311 return encode_entities(text).toString().replace(/\n/g, "\n<br>");\r
11312 }\r
11313 function html_to_text(html) {\r
11314 html = html.replace(/<\/(p|div|ul|ol|li|table|tr|dl|dd|dt|h\d)>/ig, "__ChBREAk__");\r
11315 html = html.replace(/<br\/?>/ig, "__ChBREAk__");\r
11316 html = html.replace(/<.+?>/g, "");\r
11317 html = html.replace(/__ChBREAk__/g, "<br/>");\r
11318 return html;\r
11319 }\r
11320 function image_rollover(img) {\r
11321 img.src = img.src.replace(/_up(\.\w+)$/, "_over$1");\r
11322 }\r
11323 function image_rollout(img) {\r
11324 img.src = img.src.replace(/_over(\.\w+)$/, "_up$1");\r
11325 }\r
11326 function commify(number) {\r
11327 if (!number) number = 0;\r
11328 number = '' + number;\r
11329 if (number.length > 3) {\r
11330 var mod = number.length % 3;\r
11331 var output = (mod > 0 ? (number.substring(0,mod)) : '');\r
11332 for (i=0 ; i < Math.floor(number.length / 3); i++) {\r
11333 if ((mod == 0) && (i == 0))\r
11334 output += number.substring(mod+ 3 * i, mod + 3 * i + 3);\r
11335 else\r
11336 output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);\r
11337 }\r
11338 return (output);\r
11339 }\r
11340 else return number;\r
11341 }\r
11342 function short_float(value) {\r
11343 if (!value) value = 0;\r
11344 return value.toString().replace(/^(\-?\d+\.[0]*\d{2}).*$/, '$1');\r
11345 }\r
11346 function pct(count, max) {\r
11347 var pct = (count * 100) / (max || 1);\r
11348 if (!pct.toString().match(/^\d+(\.\d+)?$/)) { pct = 0; }\r
11349 return '' + short_float( pct ) + '%';\r
11350 }\r
11351 function hash_to_query(hash) {\r
11352 var str = '';\r
11353 for (var key in hash) {\r
11354 if (str.length > 0) str += '&';\r
11355 str += key + '=' + escape(hash[key]);\r
11356 }\r
11357 return str;\r
11358 }\r
11359 function get_text_from_seconds(sec, abbrev, no_secondary) {\r
11360 var neg = '';\r
11361 sec = parseInt(sec, 10);\r
11362 if (sec<0) { sec =- sec; neg = '-'; }\r
11363 var p_text = abbrev ? "sec" : "second";\r
11364 var p_amt = sec;\r
11365 var s_text = "";\r
11366 var s_amt = 0;\r
11367 if (sec > 59) {\r
11368 var min = parseInt(sec / 60, 10);\r
11369 sec = sec % 60; \r
11370 s_text = abbrev ? "sec" : "second"; \r
11371 s_amt = sec; \r
11372 p_text = abbrev ? "min" : "minute"; \r
11373 p_amt = min;\r
11374 if (min > 59) {\r
11375 var hour = parseInt(min / 60, 10);\r
11376 min = min % 60; \r
11377 s_text = abbrev ? "min" : "minute"; \r
11378 s_amt = min; \r
11379 p_text = abbrev ? "hr" : "hour"; \r
11380 p_amt = hour;\r
11381 if (hour > 23) {\r
11382 var day = parseInt(hour / 24, 10);\r
11383 hour = hour % 24; \r
11384 s_text = abbrev ? "hr" : "hour"; \r
11385 s_amt = hour; \r
11386 p_text = "day"; \r
11387 p_amt = day;\r
11388 if (day > 29) {\r
11389 var month = parseInt(day / 30, 10);\r
11390 day = day % 30; \r
11391 s_text = "day"; \r
11392 s_amt = day; \r
11393 p_text = abbrev ? "mon" : "month"; \r
11394 p_amt = month;\r
11395\r
11396\r
11397\r
11398\r
11399 var text = p_amt + "&nbsp;" + p_text;\r
11400 if ((p_amt != 1) && !abbrev) text += "s";\r
11401 if (s_amt && !no_secondary) {\r
11402 text += ", " + s_amt + "&nbsp;" + s_text;\r
11403 if ((s_amt != 1) && !abbrev) text += "s";\r
11404 }\r
11405 return(neg + text);\r
11406 }\r
11407 function get_nice_remaining_time(epoch_start, epoch_now, counter, counter_max, abbrev) {\r
11408 if (counter == counter_max) return 'Complete';\r
11409 if (counter == 0) return 'n/a';\r
11410 var sec_remain = parseInt(((counter_max - counter) * (epoch_now - epoch_start)) / counter, 10);\r
11411 return get_text_from_seconds( sec_remain, abbrev );\r
11412 }\r
11413 function dumper(_obj, _max_levels, _indent) {\r
11414 if (typeof(_max_levels) == 'undefined') _max_levels = 0;\r
11415 var _text = '';\r
11416 if (!_indent) {\r
11417 if (typeof(_obj) == 'object' && typeof(_obj.length) != 'undefined') _text += "[\n";\r
11418 else _text += "{\n";\r
11419 _indent = 1;\r
11420 }\r
11421 var _indentStr = '';\r
11422 for (var _k=0; _k<_indent; _k++) _indentStr += "\t";\r
11423 if (typeof(_obj) == 'object' && typeof(_obj.length) != 'undefined') {\r
11424 for (var _a = 0; _a < _obj.length; _a++) {\r
11425 if (typeof(_obj[_a]) != 'function') {\r
11426 if (typeof(_obj.length) != 'undefined') _text += _indentStr;\r
11427 else _text += _indentStr + _a + ": ";\r
11428 if (typeof(_obj[_a]) == 'object') {\r
11429 if (_obj[_a] == null) {\r
11430 _text += "null,\n";\r
11431 }\r
11432 else if (typeof(_obj[_a].length) != 'undefined') {\r
11433 if (_max_levels) _text += "[\n" + dumper( _obj[_a], _max_levels - 1, _indent + 1 ) + _indentStr + "],\n";\r
11434 else _text += "[...],\n";\r
11435 }\r
11436 else {\r
11437 if (_max_levels) _text += "{\n" + dumper( _obj[_a], _max_levels - 1, _indent + 1 ) + _indentStr + "},\n";\r
11438 else _text += "{...},\n";\r
11439 }\r
11440 }\r
11441 else if (typeof(_obj[_a]) == 'number') _text += _obj[_a] + ",\n";\r
11442 else _text += '"' + _obj[_a] + '",' + "\n";\r
11443\r
11444\r
11445\r
11446 else {\r
11447 for (var _a in _obj) {\r
11448 if (typeof(_obj[_a]) != 'function') {\r
11449 if (typeof(_obj.length) != 'undefined') _text += _indentStr;\r
11450 else _text += _indentStr + _a + ": ";\r
11451 if (typeof(_obj[_a]) == 'object') {\r
11452 if (_obj[_a] == null) {\r
11453 _text += "null,\n";\r
11454 }\r
11455 else if (typeof(_obj[_a].length) != 'undefined') {\r
11456 if (_max_levels) _text += "[\n" + dumper( _obj[_a], _max_levels - 1, _indent + 1 ) + _indentStr + "],\n";\r
11457 else _text += "[...],\n";\r
11458 }\r
11459 else {\r
11460 if (_max_levels) _text += "{\n" + dumper( _obj[_a], _max_levels - 1, _indent + 1) + _indentStr + "},\n";\r
11461 else _text += "{...},\n";\r
11462 }\r
11463 }\r
11464 else if (typeof(_obj[_a]) == 'number') _text += _obj[_a] + ",\n";\r
11465 else _text += '"' + _obj[_a] + '",' + "\n";\r
11466\r
11467\r
11468\r
11469 if (_indent == 1) {\r
11470 if (typeof(_obj) == 'object' && typeof(_obj.length) != 'undefined') _text += "]\n";\r
11471 else _text += "}\n";\r
11472 }\r
11473 return _text;\r
11474 \r
11475 }\r
11476 function object_tree( title, obj, expanded ) {\r
11477 var html = '';\r
11478 var id = 's_' + get_unique_id();\r
11479 html += '<table cellspacing=0 cellpadding=0 onClick="toggle_section(\'' + id + '\')"><tr>';\r
11480 html += '<td style="padding:0px" width=16>' + section_control(id, expanded) + '</td>';\r
11481 html += '<td style="padding:0px" width=16>' + icon('folder') + '</td><td style="padding:0px" width=2>' + spacer(2,1) + '</td>';\r
11482 html += '<td style="padding:0px"><font class=section_title><nobr><font color=blue style="cursor:pointer"><b>'+title+'</b></font></nobr></font></td>';\r
11483 html += '</tr></table>';\r
11484 html += '<div id="'+id+'" style="display:' + (expanded ? 'block' : 'none') + '">';\r
11485 html += '<table cellspacing=0 cellpadding=0><tr><td style="padding:0px" width=16>&nbsp;</td><td style="padding:0px">';\r
11486 html += '<table>';\r
11487 var sorted_keys = hash_keys_to_array(obj).sort();\r
11488 for (var idx in sorted_keys) {\r
11489 var key = sorted_keys[idx];\r
11490 if (typeof(obj[key]) == 'object') {\r
11491 html += '<tr><td style="padding:0px">';\r
11492 html += object_tree( key, obj[key], 0 );\r
11493 html += '</td></tr>';\r
11494 }\r
11495 }\r
11496 for (var idx in sorted_keys) {\r
11497 var key = sorted_keys[idx];\r
11498 if (typeof(obj[key]) != 'object') {\r
11499 html += '<tr><td style="padding:0px">';\r
11500 html += '<table cellspacing=0 cellpadding=0><tr><td style="padding:0px" width=16>&nbsp;</td><td style="padding:0px">';\r
11501 html += icon( 'file', '<b>' + key.toString().replace(/^\W+/, "") + ':</b> ' + obj[key] );\r
11502 html += '</td></tr></table>';\r
11503 html += '</td></tr>';\r
11504 }\r
11505 }\r
11506 html += '</table>';\r
11507 html += '</td></tr></table>';\r
11508 html += '</div>';\r
11509 return html;\r
11510 }\r
11511 function this_hour() {\r
11512 var now = new Date();\r
11513 var then = new Date(\r
11514 now.getFullYear(),\r
11515 now.getMonth(),\r
11516 now.getDate(),\r
11517 now.getHours(),\r
11518 0, 0, 0 );\r
11519 return parseInt( then.getTime() / 1000, 10 );\r
11520 }\r
11521 function today_midnight() {\r
11522 var now = new Date();\r
11523 var then = new Date(\r
11524 now.getFullYear(),\r
11525 now.getMonth(),\r
11526 now.getDate(),\r
11527 0, 0, 0, 0 );\r
11528 return parseInt( then.getTime() / 1000, 10 );\r
11529 }\r
11530 function yesterday_midnight() {\r
11531 var midnight = today_midnight();\r
11532 var yesterday = new Date( (midnight - 1) * 1000 );\r
11533 var then = new Date(\r
11534 yesterday.getFullYear(),\r
11535 yesterday.getMonth(),\r
11536 yesterday.getDate(),\r
11537 0, 0, 0, 0 );\r
11538 return parseInt( then.getTime() / 1000, 10 );\r
11539 }\r
11540 function this_month_midnight() {\r
11541 var now = new Date();\r
11542 var then = new Date(\r
11543 now.getFullYear(),\r
11544 now.getMonth(),\r
11545 1, 0, 0, 0, 0 );\r
11546 return parseInt( then.getTime() / 1000, 10 );\r
11547 }\r
11548 function last_month_midnight() {\r
11549 var this_month = this_month_midnight();\r
11550 var last_month = new Date( (this_month - 1) * 1000 );\r
11551 var then = new Date(\r
11552 last_month.getFullYear(),\r
11553 last_month.getMonth(),\r
11554 1, 0, 0, 0, 0 );\r
11555 return parseInt( then.getTime() / 1000, 10 );\r
11556 }\r
11557 function get_date_args(epoch) {\r
11558 var date = new Date( epoch * 1000 );\r
11559 var args = {\r
11560 year: date.getFullYear(),\r
11561 mon: date.getMonth() + 1,\r
11562 mday: date.getDate(),\r
11563 hour: date.getHours(),\r
11564 min: date.getMinutes(),\r
11565 sec: date.getSeconds(),\r
11566 msec: date.getMilliseconds()\r
11567 };\r
11568 args.yyyy = args.year;\r
11569 if (args.mon < 10) args.mm = "0" + args.mon; else args.mm = args.mon;\r
11570 if (args.mday < 10) args.dd = "0" + args.mday; else args.dd = args.mday;\r
11571 if (args.hour < 10) args.hh = "0" + args.hour; else args.hh = args.hour;\r
11572 if (args.min < 10) args.mi = "0" + args.min; else args.mi = args.min;\r
11573 if (args.sec < 10) args.ss = "0" + args.sec; else args.ss = args.sec;\r
11574 if (args.hour >= 12) {\r
11575 args.ampm = 'pm';\r
11576 args.hour12 = args.hour - 12;\r
11577 if (!args.hour12) args.hour12 = 12;\r
11578 }\r
11579 else {\r
11580 args.ampm = 'am';\r
11581 args.hour12 = args.hour;\r
11582 if (!args.hour12) args.hour12 = 12;\r
11583 }\r
11584 return args;\r
11585 }\r
11586 function get_time_from_args(args) {\r
11587 var then = new Date(\r
11588 args.year,\r
11589 args.mon - 1,\r
11590 args.mday,\r
11591 args.hour,\r
11592 args.min,\r
11593 args.sec,\r
11594 0\r
11595 );\r
11596 return parseInt( then.getTime() / 1000, 10 );\r
11597 }\r
11598 function yyyy(epoch) {\r
11599 if (!epoch) epoch = time_now();\r
11600 var args = get_date_args(epoch);\r
11601 return args.year;\r
11602 }\r
11603 function yyyy_mm_dd(epoch) {\r
11604 if (!epoch) epoch = time_now();\r
11605 var args = get_date_args(epoch);\r
11606 return args.yyyy + '/' + args.mm + '/' + args.dd;\r
11607 }\r
11608 function normalize_time(epoch, zero_args) {\r
11609 var args = get_date_args(epoch);\r
11610 for (key in zero_args) args[key] = zero_args[key];\r
11611 if (!args['mday']) args['mday'] = 1;\r
11612 return get_time_from_args(args);\r
11613 }\r
11614 function find_iframe_doc(id) {\r
11615 var domObj = $(id);\r
11616 if (!domObj) return null;\r
11617 var doc = null;\r
11618 if (domObj.contentDocument)     doc = domObj.contentDocument; \r
11619 else if (domObj.contentWindow) doc = domObj.contentWindow.document; \r
11620 else if (domObj.document) doc = eval(domObj.id+".document"); \r
11621 return doc;\r
11622 }\r
11623 function rand_array(arr) {\r
11624 return arr[ parseInt(Math.random() * arr.length, 10) ];\r
11625 }\r
11626 function find_elem_idx(arr, elem) {\r
11627 for (var idx = 0, len = arr.length; idx < len; idx++) {\r
11628 if (arr[idx] == elem) return idx;\r
11629 }\r
11630 return -1; \r
11631 }\r
11632 function remove_from_array(arr, elem) {\r
11633 var idx = find_elem_idx(arr, elem);\r
11634 if (idx > -1) {\r
11635 array_splice( arr, idx, 1 );\r
11636 return 1;\r
11637 }\r
11638 return 0;\r
11639 }\r
11640 function remove_all_from_array(arr, elem) {\r
11641 var done = 0;\r
11642 var found = 0;\r
11643 while (!done) {\r
11644 var idx = find_elem_idx(arr, elem);\r
11645 if (idx > -1) { array_splice(arr, idx, 1); found++; }\r
11646 else { done = 1; }\r
11647 }\r
11648 return found;\r
11649 }\r
11650 function getInnerWindowSize(dom) {\r
11651 if (!dom) dom = window;\r
11652 var myWidth = 0, myHeight = 0;\r
11653 if( typeof( dom.innerWidth ) == 'number' ) {\r
11654 myWidth = dom.innerWidth;\r
11655 myHeight = dom.innerHeight;\r
11656 }\r
11657 else if( dom.document.documentElement && ( dom.document.documentElement.clientWidth || dom.document.documentElement.clientHeight ) ) {\r
11658 myWidth = dom.document.documentElement.clientWidth;\r
11659 myHeight = dom.document.documentElement.clientHeight;\r
11660 }\r
11661 else if( dom.document.body && ( dom.document.body.clientWidth || dom.document.body.clientHeight ) ) {\r
11662 myWidth = dom.document.body.clientWidth;\r
11663 myHeight = dom.document.body.clientHeight;\r
11664 }\r
11665 return { width: myWidth, height: myHeight };\r
11666 }\r
11667 function getScrollXY(dom) {\r
11668 if (!dom) dom = window;\r
11669 var scrOfX = 0, scrOfY = 0;\r
11670 if( typeof( dom.pageYOffset ) == 'number' ) {\r
11671 scrOfY = dom.pageYOffset;\r
11672 scrOfX = dom.pageXOffset;\r
11673 } else if( dom.document.body && ( dom.document.body.scrollLeft || dom.document.body.scrollTop ) ) {\r
11674 scrOfY = dom.document.body.scrollTop;\r
11675 scrOfX = dom.document.body.scrollLeft;\r
11676 } else if( dom.document.documentElement && ( dom.document.documentElement.scrollLeft || dom.document.documentElement.scrollTop ) ) {\r
11677 scrOfY = dom.document.documentElement.scrollTop;\r
11678 scrOfX = dom.document.documentElement.scrollLeft;\r
11679 }\r
11680 return { x: scrOfX, y: scrOfY };\r
11681 }\r
11682 function getScrollMax(dom) {\r
11683 if (!dom) dom = window;\r
11684 var myWidth = 0, myHeight = 0;\r
11685 if (dom.document.body.scrollHeight) {\r
11686 myWidth = dom.document.body.scrollWidth;\r
11687 myHeight = dom.document.body.scrollHeight;\r
11688 }\r
11689 else if (dom.document.documentElement.scrollHeight) {\r
11690 myWidth = dom.document.documentElement.scrollWidth;\r
11691 myHeight = dom.document.documentElement.scrollHeight;\r
11692 }\r
11693 return { width: myWidth, height: myHeight };\r
11694 }\r
11695 function safe_call(name, arg1, arg2, arg3) {\r
11696 if (window[name]) return window[name](arg1, arg2, arg3);\r
11697 else return null;\r
11698 }\r
11699 function hires_time_now() {\r
11700 var now = new Date();\r
11701 return ( now.getTime() / 1000 );\r
11702 }\r
11703 function fire_callback(callback) {\r
11704 var args = array_slice( arguments, 1 );\r
11705 if (isa_array(callback)) {\r
11706 var obj = callback[0];\r
11707 var func = callback[1];\r
11708 return obj[func].apply(obj, args);\r
11709 }\r
11710 else if (typeof(callback) == 'function') {\r
11711 return callback.apply(null, args);\r
11712 }\r
11713 else {\r
11714 return window[callback].apply(null, args);\r
11715 }\r
11716 }\r
11717 function fire_hook(name) {\r
11718 if (session.hooks[name]) {\r
11719 var args = array_slice(arguments, 1);\r
11720 array_unshift( args, session.hooks[name] );\r
11721 delete session.hooks[name];\r
11722 return fire_callback.apply(window, args);\r
11723 }\r
11724 return true; \r
11725 }\r
11726 function str_value(str) {\r
11727 if (typeof(str) == 'undefined') str = '';\r
11728 else if (str === null) str = '';\r
11729 return '' + str;\r
11730 }\r
11731 function pluralize(word, num) {\r
11732 if (num != 1) return word + 's'; else return word;\r
11733 }\r
11734 function get_menu_value(id) {\r
11735 var menu = $(id);\r
11736 if (!menu) return '';\r
11737 return menu.options[menu.selectedIndex].value;\r
11738 }\r
11739 function get_menu_text(id) {\r
11740 var menu = $(id);\r
11741 if (!menu) return '';\r
11742 return menu.options[menu.selectedIndex].text;\r
11743 }\r
11744 function set_menu_value(id, value, auto_add) {\r
11745 var menu = $(id);\r
11746 if (!menu) return false;\r
11747 for (var idx = 0, len = menu.options.length; idx < len; idx++) {\r
11748 if (menu.options[idx].value == value) {\r
11749 menu.selectedIndex = idx;\r
11750 return true;\r
11751 }\r
11752 }\r
11753 if (auto_add) {\r
11754 menu.options[menu.options.length] = new Option(value, value);\r
11755 menu.selectedIndex = menu.options.length - 1;\r
11756 return true;\r
11757 }\r
11758 return false;\r
11759 }\r
11760 function disable_menu(id) {\r
11761 var menu = $(id);\r
11762 if (!menu) return false;\r
11763 menu.disabled = true;\r
11764 menu.setAttribute( 'disabled', 'disabled' );\r
11765 }\r
11766 function enable_menu(id) {\r
11767 var menu = $(id);\r
11768 if (!menu) return false;\r
11769 menu.disabled = false;\r
11770 menu.setAttribute( 'disabled', '' );\r
11771 }\r
11772 function populate_menu(id, items, sel_value) {\r
11773 var menu = $(id);\r
11774 if (!menu) return false;\r
11775 menu.options.length = 0;\r
11776 for (var idx = 0, len = items.length; idx < len; idx++) {\r
11777 var item = items[idx];\r
11778 var item_name = isa_array(item) ? item[0] : item;\r
11779 var item_value = isa_array(item) ? item[1] : item;\r
11780 menu.options[ menu.options.length ] = new Option( item_name, item_value );\r
11781 if (item_value == sel_value) menu.selectedIndex = idx;\r
11782\r
11783 }\r
11784 function dirname(path) {\r
11785 return path.toString().replace(/\/$/, "").replace(/\/[^\/]+$/, "");\r
11786 }\r
11787 function basename(path) {\r
11788 return path.toString().replace(/\/$/, "").replace(/^(.*)\/([^\/]+)$/, "$2");\r
11789 }\r
11790 function strip_ext(path) {\r
11791 return path.toString().replace(/\.\w+$/, "");\r
11792 }\r
11793 function mm_dd_yyyy(epoch, ch) {\r
11794 if (!ch) ch = '/';\r
11795 var dargs = get_date_args(epoch);\r
11796 if (dargs.mon < 10) dargs.mon = '0' + dargs.mon;\r
11797 if (dargs.mday < 10) dargs.mday = '0' + dargs.mday;\r
11798 return dargs.year + ch + dargs.mon + ch + dargs.mday;\r
11799 }\r
11800 function get_nice_date(epoch, abbrev) {\r
11801 var dargs = get_date_args(epoch);\r
11802 var month = months[dargs.mon - 1][1];\r
11803 if (abbrev) month = month.substring(0, 3);\r
11804 return month + ' ' + dargs.mday + ', ' + dargs.year;\r
11805 }\r
11806 function get_nice_time(epoch, secs) {\r
11807 var dargs = get_date_args(epoch);\r
11808 if (dargs.min < 10) dargs.min = '0' + dargs.min;\r
11809 if (dargs.sec < 10) dargs.sec = '0' + dargs.sec;\r
11810 var output = dargs.hour12 + ':' + dargs.min;\r
11811 if (secs) output += ':' + dargs.sec;\r
11812 output += ' ' + dargs.ampm.toUpperCase();\r
11813 return output;\r
11814 }\r
11815 function get_nice_date_time(epoch, secs) {\r
11816 return get_nice_date(epoch) + ' ' + get_nice_time(epoch, secs);\r
11817 }\r
11818 function get_short_date_time(epoch) {\r
11819 return get_nice_date(epoch, true) + ' ' + get_nice_time(epoch, false);\r
11820 }\r
11821 function get_midnight(date) {\r
11822 var midnight = parseInt( date.getTime() / 1000, 10 );\r
11823 midnight -= (date.getHours() * 3600);\r
11824 midnight -= (date.getMinutes() * 60);\r
11825 midnight -= date.getSeconds();\r
11826 return midnight;\r
11827 }\r
11828 function get_relative_date(epoch, show_time) {\r
11829 var mydate;\r
11830 var now = new Date();\r
11831 var now_epoch = parseInt( now.getTime() / 1000, 10 );\r
11832 if (epoch) {\r
11833 mydate = new Date( epoch * 1000 );\r
11834 epoch = parseInt( epoch, 10 );\r
11835 }\r
11836 else {\r
11837 mydate = new Date();\r
11838 epoch = parseInt( mydate.getTime() / 1000, 10 );\r
11839 }\r
11840 var full_date_string = mydate.toLocaleString();\r
11841 var html = '<span title="'+full_date_string+'">';\r
11842 var mydate_midnight = get_midnight( mydate );\r
11843 var now_midnight = get_midnight( now );\r
11844 if (mydate_midnight > now_midnight) {\r
11845 var mm = mydate.getMonth() + 1; \r
11846 var dd = mydate.getDate(); \r
11847 var yyyy = mydate.getFullYear();\r
11848 html += short_month_names[ mydate.getMonth() ] + ' ' + dd;\r
11849 if (yyyy != now.getFullYear()) html += ', ' + yyyy;\r
11850 }\r
11851 else if (mydate_midnight == now_midnight) {\r
11852 if (show_time) {\r
11853 if (now_epoch - epoch < 1) {\r
11854 html += 'Now';\r
11855 }\r
11856 else if (now_epoch - epoch < 60) {\r
11857 html += 'A Moment Ago';\r
11858 }\r
11859 else if (now_epoch - epoch < 3600) {\r
11860 var min = parseInt( (now_epoch - epoch) / 60, 10 );\r
11861 html += min + ' Minute';\r
11862 if (min != 1) html += 's';\r
11863 html += ' Ago';\r
11864 }\r
11865 else if (now_epoch - epoch <= 12 * 3600) {\r
11866 var hr = parseInt( (now_epoch - epoch) / 3600, 10 );\r
11867 html += hr + ' Hour';\r
11868 if (hr != 1) html += 's';\r
11869 html += ' Ago';\r
11870 }\r
11871 else {\r
11872 html += 'Earlier Today';\r
11873 if (show_time) html += ', ' + get_short_time(epoch);\r
11874 }\r
11875 }\r
11876 else html += 'Today';\r
11877 }\r
11878 else if (now_midnight - mydate_midnight == 86400) {\r
11879 html += 'Yesterday';\r
11880 if (show_time) html += ', ' + get_short_time(epoch);\r
11881 }\r
11882 else if ((now_midnight - mydate_midnight < 86400 * 7) && (mydate.getDay() < now.getDay())) {\r
11883 html += day_names[ mydate.getDay() ];\r
11884 if (show_time) html += ', ' + get_short_time(epoch);\r
11885 }\r
11886 else if ((mydate.getMonth() == now.getMonth()) && (mydate.getFullYear() == now.getFullYear())) {\r
11887 var mydate_sunday = mydate_midnight - (mydate.getDay() * 86400);\r
11888 var now_sunday = now_midnight - (now.getDay() * 86400);\r
11889 if (now_sunday - mydate_sunday == 86400 * 7) {\r
11890 html += 'Last ' + day_names[ mydate.getDay() ];\r
11891 }\r
11892 else if (now_sunday - mydate_sunday == 86400 * 14) {\r
11893 html += 'Two Weeks Ago';\r
11894 }\r
11895 else if (now_sunday - mydate_sunday == 86400 * 21) {\r
11896 html += 'Three Weeks Ago';\r
11897 }\r
11898 else {\r
11899 html += 'Four Weeks Ago';\r
11900 }\r
11901 }\r
11902 else {\r
11903 var mm = mydate.getMonth() + 1; \r
11904 var dd = mydate.getDate(); \r
11905 var yyyy = mydate.getFullYear();\r
11906 html += short_month_names[ mydate.getMonth() ] + ' ' + dd;\r
11907 if (yyyy != now.getFullYear()) html += ', ' + yyyy;\r
11908 }\r
11909 html += '</span>';\r
11910 return html;\r
11911 }\r
11912 function get_short_time(epoch, show_msec) {\r
11913 var mydate;\r
11914 if (epoch) mydate = new Date( epoch * 1000 );\r
11915 else mydate = new Date();\r
11916 var ampm = 'AM';\r
11917 var hh = mydate.getHours();\r
11918 if (hh >= 12) { ampm = 'PM'; hh -=12; }\r
11919 if (hh == 0) hh = 12;\r
11920 var mi = mydate.getMinutes(); if (mi < 10) mi = "0" + mi;\r
11921 var ss = mydate.getSeconds(); if (ss < 10) ss = "0" + ss;\r
11922 var msec = mydate.getMilliseconds();\r
11923 if (msec < 10) msec = "00" + msec;\r
11924 else if (msec < 100) msec = "0" + msec;\r
11925 var str = hh+':'+mi;\r
11926 if (show_msec) str += ':'+ss+'.'+msec;\r
11927 str += '&nbsp;'+ampm;\r
11928 return str;\r
11929 }\r
11930 function load_script(url) {\r
11931 var scr = document.createElement('SCRIPT');\r
11932 scr.type = 'text/javascript';\r
11933 scr.src = url;\r
11934 document.getElementsByTagName('HEAD')[0].appendChild(scr);\r
11935 }\r
11936 function safe_query_add(url, str) {\r
11937 if (url.match(/\?/)) url += '&'; else url += '?';\r
11938 return url + str;\r
11939 }\r
11940 function trim(str) {\r
11941 return str.toString().replace(/^\s+/, "").replace(/\s+$/, "");\r
11942 }\r
11943 function compose_attribs(attribs) {\r
11944 var html = '';\r
11945 if (attribs) {\r
11946 for (var key in attribs) {\r
11947 html += " " + key + "=\"" + attribs[key] + "\"";\r
11948 }\r
11949 }\r
11950 return html;\r
11951 }\r
11952 function compose_style(attribs) {\r
11953 var html = '';\r
11954 if (attribs) {\r
11955 for (var key in attribs) {\r
11956 html += " " + key + ":" + attribs[key] + ";";\r
11957 }\r
11958 }\r
11959 return html;\r
11960 }\r
11961 function find_idx_in_array(arr, elem) {\r
11962 for (var idx = 0, len = arr.length; idx < len; idx++) {\r
11963 if (arr[idx] == elem) return idx;\r
11964 }\r
11965 return -1;\r
11966 }\r
11967 function find_in_array(arr, elem) {\r
11968 for (var idx = 0, len = arr.length; idx < len; idx++) {\r
11969 if (arr[idx] == elem) return true;\r
11970 }\r
11971 return false;\r
11972 }\r
11973 function delete_from_array(arr, elem) {\r
11974 var idx = find_idx_in_array(arr, elem);\r
11975 if (idx > -1) arr.splice(idx, 1);\r
11976 }\r
11977 function tiptext_field(id, class_name, attribs, style, value, tip) {\r
11978 var html = '';\r
11979 if (!attribs) attribs = {};\r
11980 if (!style) style = {};\r
11981 value = str_value(value);\r
11982 if (value.length == 0) {\r
11983 value = tip;\r
11984 if (class_name.length) class_name += ' ';\r
11985 class_name += 'tiptext_empty';\r
11986 }\r
11987 html += '<input type="text" class="'+class_name+'" id="'+id+'" style="'+compose_style(style)+'" value="'+escape_text_field_value(value)+'" title="'+tip+'" onBlur="tiptext_blur(this)" onFocus="tiptext_focus(this)" '+compose_attribs(attribs)+'>';\r
11988 return html;\r
11989 }\r
11990 function tiptext_focus(obj) {\r
11991 if (obj.value == obj.getAttribute('title')) obj.value = '';\r
11992 $(obj).removeClass('tiptext_empty');\r
11993 }\r
11994 function tiptext_blur(obj) {\r
11995 if (!obj.value.length) {\r
11996 obj.value = obj.getAttribute('title');\r
11997 $(obj).addClass('tiptext_empty');\r
11998 }\r
11999 else if (obj.value != obj.getAttribute('title')) {\r
12000 $(obj).removeClass('tiptext_empty');\r
12001 }\r
12002 }\r
12003 function tiptext_value(id) {\r
12004 var value = get_clean_field_value(id);\r
12005 if (value == $(id).getAttribute('title')) value = '';\r
12006 return value;\r
12007 }\r
12008 function tiptext_set(id, value) {\r
12009 var obj = $(id); if (!obj) return;\r
12010 value = str_value(value);\r
12011 if (value.length > 0) {\r
12012 tiptext_focus(obj);\r
12013 obj.value = value;\r
12014 }\r
12015 else {\r
12016 obj.value = '';\r
12017 tiptext_blur(obj);\r
12018 }\r
12019 }\r
12020 function get_clean_field_value(id) {\r
12021 return trim( $(id).value );\r
12022 }\r
12023 function validate_url(url) {\r
12024 \r
12025 return !!url.match(/^(https?\:\/\/)[\w\-\.\/]+(\?\S+)?$/);\r
12026 }\r
12027 function format_price_usd(value, show_usd) {\r
12028 var matches = value.toString().match(/^(\d+)\.(\d+)$/);\r
12029 if (matches) {\r
12030 if (matches[2].length < 2) matches[2] = '0' + matches[2];\r
12031 else if (matches[2].length > 2) matches[2] = matches[2].substring(0, 2);\r
12032 return '$' + commify(matches[1]) + '.' + matches[2] + (show_usd ? ' USD' : '');\r
12033 }\r
12034 else return '$' + commify(value) + '.00' + (show_usd ? ' USD' : '');\r
12035 }\r
12036 function pretty_print_csv(csv) {\r
12037 csv = str_value(csv);\r
12038 return csv.toString().replace(/\,(\S)/g, ", $1");\r
12039 }\r
12040 function blur_all_text_fields() {\r
12041 var fields = document.getElementsByTagName('input');\r
12042 for (var idx = 0, len = fields.length; idx < len; idx++) {\r
12043 var field = fields[idx];\r
12044 if (field.type == 'text') field.blur();\r
12045 }\r
12046 }\r
12047 function escape_text_field_value(text) {\r
12048 text = encode_attrib_entities( str_value(text) );\r
12049 if (ie && text.replace) text = text.replace(/\&apos\;/g, "'");\r
12050 return text;\r
12051 }\r
12052 function escape_textarea_value(text) {\r
12053 text = encode_entities( str_value(text) );\r
12054 if (ie && text.replace) text = text.replace(/\&apos\;/g, "'");\r
12055 return text;\r
12056 }\r
12057 function selectLine(input, lineNum) {\r
12058 lineNum--; \r
12059 var lines = input.value.split(/\n/);\r
12060 var before = '';\r
12061 for (var idx = 0, len = lines.length; idx < len; idx++) {\r
12062 if (idx == lineNum) idx = len;\r
12063 else before += lines[idx] + "\n";\r
12064 }\r
12065 setSelectionRange( input, before.length, before.length + lines[lineNum].length + 1 );\r
12066 }\r
12067 function selectAllText(input) {\r
12068 if (input.setSelectionRange) {\r
12069 input.focus();\r
12070 input.setSelectionRange(0, input.value.length);\r
12071 }\r
12072 else if (input.createTextRange) {\r
12073 var range = input.createTextRange();\r
12074 range.collapse(true);\r
12075 range.moveEnd('character', input.value.length);\r
12076 range.moveStart('character', 0);\r
12077 range.select();\r
12078 }\r
12079 return true;\r
12080 }\r
12081 function setSelectionRange(input, selectionStart, selectionEnd) {\r
12082 if (input.setSelectionRange) {\r
12083 input.focus();\r
12084 input.setSelectionRange(selectionStart, selectionEnd);\r
12085 }\r
12086 else if (input.createTextRange) {\r
12087 var range = input.createTextRange();\r
12088 range.collapse(true);\r
12089 range.moveEnd('character', selectionEnd);\r
12090 range.moveStart('character', selectionStart);\r
12091 range.select();\r
12092 }\r
12093 }\r
12094 function getSelectedText(input) {\r
12095 if (input.setSelectionRange) {\r
12096 return input.value.substring( input.selectionStart, input.selectionEnd );\r
12097 }\r
12098 else if (document.selection) {\r
12099 var range = document.selection.createRange();\r
12100 if (range.parentElement() == input) {\r
12101 return range.text;\r
12102 }\r
12103 }\r
12104 return '';\r
12105 }\r
12106 function indentSelectedText(input, direction) {\r
12107 if (input.setSelectionRange) {\r
12108 var selectionStart = input.selectionStart;\r
12109 var selectionEnd = input.selectionEnd;\r
12110 while ((selectionStart > 0) && (input.value.substring(selectionStart - 1, selectionStart) != "\n"))\r
12111 selectionStart--;\r
12112 while ((selectionEnd < input.value.length) && !input.value.substring(selectionEnd - 1, selectionEnd).match(/[\r\n]/))\r
12113 selectionEnd++;\r
12114 input.setSelectionRange( selectionStart, selectionEnd );\r
12115 input.focus();\r
12116 }\r
12117 var lines = getSelectedText(input).split(/\n/);\r
12118 var text = '';\r
12119 for (var idx = 0, len = lines.length; idx < len - 1; idx++) {\r
12120 var line = lines[idx];\r
12121 if (direction == 1) text += "\t" + line;\r
12122 else if (direction == -1) text += line.replace(/^(\t| {4})/, '');\r
12123 if (idx < len - 1) text += "\n";\r
12124 }\r
12125 replaceSelection(input, text);\r
12126 }\r
12127 function surroundSelection(input, left, right) {\r
12128 if (!right) right = left;\r
12129 var text = getSelectedText(input);\r
12130 replaceSelection(input, left + text + right);\r
12131 if (!text.length && input.setSelectionRange) {\r
12132 input.setSelectionRange(input.selectionStart - right.length, input.selectionEnd - right.length);\r
12133 }\r
12134 }\r
12135 function replaceSelection (input, replaceString) {\r
12136 var oldScroll = input.scrollTop;\r
12137 if (input.setSelectionRange) {\r
12138 var selectionStart = input.selectionStart;\r
12139 var selectionEnd = input.selectionEnd;\r
12140 input.value = input.value.substring(0, selectionStart)+ replaceString + input.value.substring(selectionEnd);\r
12141 if (selectionStart != selectionEnd){ \r
12142 setSelectionRange(input, selectionStart, selectionStart +       replaceString.length);\r
12143 }else{\r
12144 setSelectionRange(input, selectionStart + replaceString.length, selectionStart + replaceString.length);\r
12145 }\r
12146 }else if (document.selection) {\r
12147 var range = document.selection.createRange();\r
12148 if (range.parentElement() == input) {\r
12149 var isCollapsed = range.text == '';\r
12150 range.text = replaceString;\r
12151 if (!isCollapsed)  {\r
12152 range.moveStart('character', -replaceString.length);\r
12153 range.select();\r
12154 }\r
12155 }\r
12156 }\r
12157 input.scrollTop = oldScroll;\r
12158 }\r
12159 function catchTab(item,e){\r
12160 var c = e.which ? e.which : e.keyCode;\r
12161 if (c == 9) { \r
12162 if (getSelectedText(item).length) {\r
12163 indentSelectedText(item, e.shiftKey ? -1 : 1);\r
12164 }\r
12165 else {\r
12166 replaceSelection(item, String.fromCharCode(9));\r
12167 }\r
12168 setTimeout("document.getElementById('"+item.id+"').focus();",0);        \r
12169 return false;\r
12170 }\r
12171 }\r
12172 function count_chars(str, ch) {\r
12173 var count = 0;\r
12174 for (var idx = 0, len = str.length; idx < len; idx++) {\r
12175 if (str.substring(idx, idx + 1) == ch) count++;\r
12176 }\r
12177 return count;\r
12178 }\r
12179 function multiplex_str(ch, num) {\r
12180 var str = '';\r
12181 for (var idx = 0; idx < num; idx++) str += ch;\r
12182 return str;\r
12183 }\r
12184 function deep_copy_tree(obj) {\r
12185 var new_obj = null;\r
12186 if (typeof(obj.length) != 'undefined') {\r
12187 new_obj = [];\r
12188 for (var idx = 0, len = obj.length; idx < len; idx++) {\r
12189 if ((typeof(obj[idx]) == 'object') || (typeof(obj[idx]) == 'array')) new_obj[idx] = deep_copy_tree( obj[idx] );\r
12190 else new_obj[idx] = obj[idx];\r
12191 }\r
12192 }\r
12193 else {\r
12194 new_obj = {};\r
12195 for (var key in obj) {\r
12196 if ((typeof(obj[key]) == 'object') || (typeof(obj[key]) == 'array')) new_obj[key] = deep_copy_tree( obj[key] );\r
12197 else new_obj[key] = obj[key];\r
12198 }\r
12199 }\r
12200 return new_obj;\r
12201 }\r
12202 function strip_base_path(path, base) {\r
12203 if (!path || !base) return '';\r
12204 if (path.indexOf(base) == 0) path = path.substring( base.length );\r
12205 return path;\r
12206 }\r
12207 function parse_useragent(useragent) {\r
12208 if (!useragent) useragent = navigator.userAgent;\r
12209 useragent = '' + useragent;\r
12210 var os = 'Unknown';\r
12211 var browser = 'Unknown';\r
12212 useragent = useragent.replace(/\;\s+[\d\.]+\s+cache[\.\w]+(\:\d+)?\s+\(squid[^\)]+\)/, '');\r
12213 if (useragent.match(/SunOS/)) { os = 'SunOS'; }\r
12214 else if (useragent.match(/IRIX/)) { os = 'IRIX'; }\r
12215 else if (useragent.match(/Linux/)) { os = 'Linux'; }\r
12216 else if (useragent.match(/iPhone/)) { os = 'iPhone'; }\r
12217 else if (useragent.match(/Mac\s+OS\s+X\s+([\d\_]+)/)) { os = 'Mac OS X'; }\r
12218 else if (useragent.match(/(Mac\s+OS\s+X|Mac_PowerPC)/)) { os = 'Mac OS X'; }\r
12219 else if (useragent.match(/Mac/)) { os = 'Mac OS'; }\r
12220 else if (useragent.match(/Windows\s+CE/)) { os = 'Windows CE'; }\r
12221 else if (useragent.match(/(Windows\s+ME|Win\s9x)/)) { os = 'Windows Me'; }\r
12222 else if (useragent.match(/Win(95|98|NT)/)) { os = "Windows " + RegExp.RegExp.$1; }\r
12223 else if (useragent.match(/Win\D+([\d\.]+)/)) {\r
12224 var ver = RegExp.$1;\r
12225 if (ver.match(/95/)) { os = 'Windows 95'; }\r
12226 else if (ver.match(/98/)) { os = 'Windows 98'; }\r
12227 else if (ver.match(/4\.0/)) { os = 'Windows NT'; }\r
12228 else if (ver.match(/5\.0/)) { os = 'Windows 2000'; }\r
12229 else if (ver.match(/5\.[12]/)) {\r
12230 os = 'Windows XP';\r
12231 }\r
12232 else if (ver.match(/6.\d+/)) { os = 'Windows Vista'; }\r
12233 else if (ver.match(/7.\d+/)) { os = 'Windows 7'; }\r
12234 else if (useragent.match(/Windows\sNT/)) { os = 'Windows NT'; }\r
12235 }\r
12236 else if (useragent.match(/Windows\sNT/)) { os = 'Windows NT'; }\r
12237 else if (useragent.match(/PSP/)) { os = 'Sony PSP'; }\r
12238 else if (useragent.match(/WebTV/)) { os = 'Web TV'; }\r
12239 else if (useragent.match(/Palm/)) { os = 'Palm OS'; }\r
12240 else if (useragent.match(/Wii/)) { os = 'Nintendo Wii'; }\r
12241 else if (useragent.match(/Symbian/)) { os = 'Symbian OS'; }\r
12242 if (useragent.match(/Chrome\D+(\d+)/)) {\r
12243 browser = "Chrome " + RegExp.$1;\r
12244 }\r
12245 else if (useragent.match(/Safari\/((\d+)[\d\.]+)/)) {\r
12246 if (useragent.match(/Version\D+([\d]+)/)) {\r
12247 browser = "Safari " + RegExp.$1;\r
12248 }\r
12249 else {\r
12250 browser = 'Safari 2';\r
12251 }\r
12252 }\r
12253 else if (useragent.match(/iCab/)) { browser = 'iCab'; }\r
12254 else if (useragent.match(/OmniWeb/)) { browser = 'OmniWeb'; }\r
12255 else if (useragent.match(/Opera\D*(\d+)/)) { browser = "Opera " + RegExp.$1; }\r
12256 else if (useragent.match(/(Camino|Chimera)/)) { browser = 'Camino'; }\r
12257 else if (useragent.match(/Firefox\D*(\d+\.\d+)/)) { browser = "Firefox " + RegExp.$1; }\r
12258 else if (useragent.match(/Netscape\D*(\d+(\.\d+)?)/)) { browser = "Netscape " + RegExp.$1; }\r
12259 else if (useragent.match(/Gecko/)) { browser = 'Mozilla'; }\r
12260 else if (useragent.match(/America\s+Online\s+Browser\D+(\d+(\.\d+)?)/)) { browser = "AOL Explorer " + RegExp.$1; }\r
12261 else if (useragent.match(/PSP\D+(\d+(\.\d+)?)/)) { browser = "PSP " + RegExp.$1; }\r
12262 else if (useragent.match(/Lynx\D+(\d+(\.\d+)?)/)) { browser = "Lynx " + RegExp.$1; }\r
12263 else if (useragent.match(/Konqueror\D+(\d+(\.\d+)?)/)) { browser = "Konqueror " + RegExp.$1; }\r
12264 else if (useragent.match(/Blazer\D+(\d+(\.\d+)?)/)) { browser = "Blazer " + RegExp.$1; }\r
12265 else if (useragent.match(/MSIE\D+(\d+)/)) { browser = "Internet Explorer " + RegExp.$1; }\r
12266 else if (useragent.match(/Mozilla\/(4\.\d)/)) {\r
12267 var ver = RegExp.$1;\r
12268 if (ver != '4.0') { browser = "Netscape " + ver; }\r
12269 else { browser = "Mozilla"; }\r
12270 }\r
12271 else if (useragent.match(/Mozilla/)) { browser = "Mozilla"; }\r
12272 if ((os == 'Unknown') && (browser == 'Unknown') && useragent.match(/Flash\s+Player\s+([\d\.\,]+)/)) {\r
12273 os = 'Adobe';\r
12274 browser = 'Flash Player ' + RegExp.$1;\r
12275 }\r
12276 if ((os == 'Unknown') && (browser == 'Unknown')) {\r
12277 os = '';\r
12278 browser = useragent;\r
12279 }\r
12280 return { os: os, browser: browser };\r
12281 }\r
12282 function forceFloatString(value) {\r
12283 if (!value.toString().match(/^\d+\.\d+$/)) value = '' + value + '.0';\r
12284 return value;\r
12285 }\r
12286 function check_reserved_word(name) {\r
12287 return !name.toString().match(/^(break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|this|throw|try|typeof|var|void|while|with|type|interface|class)$/);\r
12288 }\r
12289 function get_next_key_seq(hash) {\r
12290 var largest = 0;\r
12291 for (var key in hash) {\r
12292 if (key.match(/^\d+$/)) {\r
12293 var num = parseInt(key, 10);\r
12294 if (num > largest) largest = num;\r
12295 }\r
12296 }\r
12297 return largest + 1;\r
12298 }\r
12299 function scroll_to_element(elem) {\r
12300 var elem = $(elem);\r
12301 if (elem) {\r
12302 var info = get_dom_object_info( $(elem) );\r
12303 if (info) window.scrollTo( 0, info.top );\r
12304 }\r
12305 }\r
12306 function get_user_client_info(str) {\r
12307 str = str.toString().replace( /\b10\.\d+\.\d+\.\d+\,\s*/, '' ); \r
12308 var ip = '';\r
12309 if (str.match(/^(\d+\.\d+\.\d+\.\d+)\,\s*/)) {\r
12310 ip = RegExp.$1;\r
12311 str = str.replace( /^(\d+\.\d+\.\d+\.\d+)\,\s*/, '' );\r
12312 }\r
12313 str = str.toString().replace(/\;\s+[\d\.]+\s+cache[\.\w]+(\:\d+)?\s+\(squid[^\)]+\)/, '');\r
12314 var user_info = parse_useragent( str );\r
12315 user_info.ip = ip;\r
12316 return user_info;\r
12317 }\r
12318 window.EaseAlgos = {\r
12319 Linear: function(amount) { return amount; },\r
12320 Quadratic: function(amount) { return Math.pow(amount, 2); },\r
12321 Cubic: function(amount) { return Math.pow(amount, 3); },\r
12322 Quartetic: function(amount) { return Math.pow(amount, 4); },\r
12323 Quintic: function(amount) { return Math.pow(amount, 5); },\r
12324 Sine: function(amount) { return 1 - Math.sin((1 - amount) * Math.PI / 2); },\r
12325 Circular: function(amount) { return 1 - Math.sin(Math.acos(amount)); }\r
12326 };\r
12327 window.EaseModes = {\r
12328 EaseIn: function(amount, algo) { return window.EaseAlgos[algo](amount); },\r
12329 EaseOut: function(amount, algo) { return 1 - window.EaseAlgos[algo](1 - amount); },\r
12330 EaseInOut: function(amount, algo) {\r
12331 return (amount <= 0.5) ? window.EaseAlgos[algo](2 * amount) / 2 : (2 - window.EaseAlgos[algo](2 * (1 - amount))) / 2;\r
12332 }\r
12333 };\r
12334 function ease(amount, mode, algo) {\r
12335 return window.EaseModes[mode]( amount, algo );\r
12336 }\r
12337 function tweenFrame(start, end, amount, mode, algo) {\r
12338 return start + (ease(amount, mode, algo) * (end - start));\r
12339 }\r
12340 var indent_string = "\t";\r
12341 var xml_header = '<?xml version="1.0"?>';\r
12342 var sort_args = null;\r
12343 var re_valid_tag_name  = /^\w[\w\-\:]*$/;\r
12344 function XML(args) {\r
12345 if (!args) args = '';\r
12346 if (isa_hash(args)) {\r
12347 for (var key in args) this[key] = args[key];\r
12348 }\r
12349 else this.text = args || '';\r
12350 this.tree = {};\r
12351 this.errors = [];\r
12352 this.piNodeList = [];\r
12353 this.dtdNodeList = [];\r
12354 this.documentNodeName = '';\r
12355 this.patTag.lastIndex = 0;\r
12356 if (this.text) this.parse();\r
12357 }\r
12358 XML.prototype.preserveAttributes = false;\r
12359 XML.prototype.patTag = /([^<]*?)<([^>]+)>/g;\r
12360 XML.prototype.patSpecialTag = /^\s*([\!\?])/;\r
12361 XML.prototype.patPITag = /^\s*\?/;\r
12362 XML.prototype.patCommentTag = /^\s*\!--/;\r
12363 XML.prototype.patDTDTag = /^\s*\!DOCTYPE/;\r
12364 XML.prototype.patCDATATag = /^\s*\!\s*\[\s*CDATA/;\r
12365 XML.prototype.patStandardTag = /^\s*(\/?)([\w\-\:\.]+)\s*(.*)$/;\r
12366 XML.prototype.patSelfClosing = /\/\s*$/;\r
12367 XML.prototype.patAttrib = new RegExp("([\\w\\-\\:\\.]+)\\s*=\\s*([\\\"\\'])([^\\2]*?)\\2", "g");\r
12368 XML.prototype.patPINode = /^\s*\?\s*([\w\-\:]+)\s*(.*)$/;\r
12369 XML.prototype.patEndComment = /--$/;\r
12370 XML.prototype.patNextClose = /([^>]*?)>/g;\r
12371 XML.prototype.patExternalDTDNode = new RegExp("^\\s*\\!DOCTYPE\\s+([\\w\\-\\:]+)\\s+(SYSTEM|PUBLIC)\\s+\\\"([^\\\"]+)\\\"");\r
12372 XML.prototype.patInlineDTDNode = /^\s*\!DOCTYPE\s+([\w\-\:]+)\s+\[/;\r
12373 XML.prototype.patEndDTD = /\]$/;\r
12374 XML.prototype.patDTDNode = /^\s*\!DOCTYPE\s+([\w\-\:]+)\s+\[(.*)\]/;\r
12375 XML.prototype.patEndCDATA = /\]\]$/;\r
12376 XML.prototype.patCDATANode = /^\s*\!\s*\[\s*CDATA\s*\[(.*)\]\]/;\r
12377 XML.prototype.attribsKey = '_Attribs';\r
12378 XML.prototype.dataKey = '_Data';\r
12379 XML.prototype.parse = function(branch, name) {\r
12380 if (!branch) branch = this.tree;\r
12381 if (!name) name = null;\r
12382 var foundClosing = false;\r
12383 var matches = null;\r
12384 while ( matches = this.patTag.exec(this.text) ) {\r
12385 var before = matches[1];\r
12386 var tag = matches[2];\r
12387 if (before.match(/\S/)) {\r
12388 if (typeof(branch[this.dataKey]) != 'undefined') branch[this.dataKey] += ' '; else branch[this.dataKey] = '';\r
12389 branch[this.dataKey] += trim(decode_entities(before));\r
12390 }\r
12391 if (tag.match(this.patSpecialTag)) {\r
12392 if (tag.match(this.patPITag)) tag = this.parsePINode(tag);\r
12393 else if (tag.match(this.patCommentTag)) tag = this.parseCommentNode(tag);\r
12394 else if (tag.match(this.patDTDTag)) tag = this.parseDTDNode(tag);\r
12395 else if (tag.match(this.patCDATATag)) {\r
12396 tag = this.parseCDATANode(tag);\r
12397 if (typeof(branch[this.dataKey]) != 'undefined') branch[this.dataKey] += ' '; else branch[this.dataKey] = '';\r
12398 branch[this.dataKey] += trim(decode_entities(tag));\r
12399\r
12400 else {\r
12401 this.throwParseError( "Malformed special tag", tag );\r
12402 break;\r
12403\r
12404 if (tag == null) break;\r
12405 continue;\r
12406\r
12407 else {\r
12408 var matches = tag.match(this.patStandardTag);\r
12409 if (!matches) {\r
12410 this.throwParseError( "Malformed tag", tag );\r
12411 break;\r
12412 }\r
12413 var closing = matches[1];\r
12414 var nodeName = matches[2];\r
12415 var attribsRaw = matches[3];\r
12416 if (closing) {\r
12417 if (nodeName == (name || '')) {\r
12418 foundClosing = 1;\r
12419 break;\r
12420 }\r
12421 else {\r
12422 this.throwParseError( "Mismatched closing tag (expected </" + name + ">)", tag );\r
12423 break;\r
12424 }\r
12425\r
12426 else {\r
12427 var selfClosing = !!attribsRaw.match(this.patSelfClosing);\r
12428 var leaf = {};\r
12429 var attribs = leaf;\r
12430 if (this.preserveAttributes) {\r
12431 leaf[this.attribsKey] = {};\r
12432 attribs = leaf[this.attribsKey];\r
12433 }\r
12434 this.patAttrib.lastIndex = 0;\r
12435 while ( matches = this.patAttrib.exec(attribsRaw) ) {\r
12436 attribs[ matches[1] ] = decode_entities( matches[3] );\r
12437\r
12438 if (this.preserveAttributes && !num_keys(attribs)) {\r
12439 delete leaf[this.attribsKey];\r
12440 }\r
12441 if (!selfClosing) {\r
12442 this.parse( leaf, nodeName );\r
12443 if (this.error()) break;\r
12444 }\r
12445 var num_leaf_keys = num_keys(leaf);\r
12446 if ((typeof(leaf[this.dataKey]) != 'undefined') && (num_leaf_keys == 1)) {\r
12447 leaf = leaf[this.dataKey];\r
12448 }\r
12449 else if (!num_leaf_keys) {\r
12450 leaf = '';\r
12451 }\r
12452 if (typeof(branch[nodeName]) != 'undefined') {\r
12453 if (isa_array(branch[nodeName])) {\r
12454 array_push( branch[nodeName], leaf );\r
12455 }\r
12456 else {\r
12457 var temp = branch[nodeName];\r
12458 branch[nodeName] = [ temp, leaf ];\r
12459 }\r
12460 }\r
12461 else {\r
12462 branch[nodeName] = leaf;\r
12463 }\r
12464 if (this.error() || (branch == this.tree)) break;\r
12465\r
12466\r
12467\r
12468 if (name && !foundClosing) {\r
12469 this.throwParseError( "Missing closing tag (expected </" + name + ">)", name );\r
12470 }\r
12471 if (branch == this.tree) {\r
12472 if (typeof(this.tree[this.dataKey]) != 'undefined') delete this.tree[this.dataKey];\r
12473 if (num_keys(this.tree) > 1) {\r
12474 this.throwParseError( 'Only one top-level node is allowed in document', first_key(this.tree) );\r
12475 return;\r
12476 }\r
12477 this.documentNodeName = first_key(this.tree);\r
12478 if (this.documentNodeName) {\r
12479 this.tree = this.tree[this.documentNodeName];\r
12480 }\r
12481 }\r
12482 };\r
12483 XML.prototype.throwParseError = function(key, tag) {\r
12484 var parsedSource = this.text.substring(0, this.patTag.lastIndex);\r
12485 var eolMatch = parsedSource.match(/\n/g);\r
12486 var lineNum = (eolMatch ? eolMatch.length : 0) + 1;\r
12487 lineNum -= tag.match(/\n/) ? tag.match(/\n/g).length : 0;\r
12488 array_push(this.errors, {\r
12489 type: 'Parse',\r
12490 key: key,\r
12491 text: '<' + tag + '>',\r
12492 line: lineNum\r
12493 });\r
12494 };\r
12495 XML.prototype.error = function() {\r
12496 return this.errors.length;\r
12497 };\r
12498 XML.prototype.getError = function(error) {\r
12499 var text = '';\r
12500 if (!error) return '';\r
12501 text = (error.type || 'General') + ' Error';\r
12502 if (error.code) text += ' ' + error.code;\r
12503 text += ': ' + error.key;\r
12504 if (error.line) text += ' on line ' + error.line;\r
12505 if (error.text) text += ': ' + error.text;\r
12506 return text;\r
12507 };\r
12508 XML.prototype.getLastError = function() {\r
12509 if (!this.error()) return '';\r
12510 return this.getError( this.errors[this.errors.length - 1] );\r
12511 };\r
12512 XML.prototype.parsePINode = function(tag) {\r
12513 if (!tag.match(this.patPINode)) {\r
12514 this.throwParseError( "Malformed processor instruction", tag );\r
12515 return null;\r
12516 }\r
12517 array_push( this.piNodeList, tag );\r
12518 return tag;\r
12519 };\r
12520 XML.prototype.parseCommentNode = function(tag) {\r
12521 var matches = null;\r
12522 this.patNextClose.lastIndex = this.patTag.lastIndex;\r
12523 while (!tag.match(this.patEndComment)) {\r
12524 if (matches = this.patNextClose.exec(this.text)) {\r
12525 tag += '>' + matches[1];\r
12526 }\r
12527 else {\r
12528 this.throwParseError( "Unclosed comment tag", tag );\r
12529 return null;\r
12530 }\r
12531 }\r
12532 this.patTag.lastIndex = this.patNextClose.lastIndex;\r
12533 return tag;\r
12534 };\r
12535 XML.prototype.parseDTDNode = function(tag) {\r
12536 var matches = null;\r
12537 if (tag.match(this.patExternalDTDNode)) {\r
12538 array_push( this.dtdNodeList, tag );\r
12539 }\r
12540 else if (tag.match(this.patInlineDTDNode)) {\r
12541 this.patNextClose.lastIndex = this.patTag.lastIndex;\r
12542 while (!tag.match(this.patEndDTD)) {\r
12543 if (matches = this.patNextClose.exec(this.text)) {\r
12544 tag += '>' + matches[1];\r
12545 }\r
12546 else {\r
12547 this.throwParseError( "Unclosed DTD tag", tag );\r
12548 return null;\r
12549 }\r
12550 }\r
12551 this.patTag.lastIndex = this.patNextClose.lastIndex;\r
12552 if (tag.match(this.patDTDNode)) {\r
12553 array_push( this.dtdNodeList, tag );\r
12554 }\r
12555 else {\r
12556 this.throwParseError( "Malformed DTD tag", tag );\r
12557 return null;\r
12558 }\r
12559 }\r
12560 else {\r
12561 this.throwParseError( "Malformed DTD tag", tag );\r
12562 return null;\r
12563 }\r
12564 return tag;\r
12565 };\r
12566 XML.prototype.parseCDATANode = function(tag) {\r
12567 var matches = null;\r
12568 this.patNextClose.lastIndex = this.patTag.lastIndex;\r
12569 while (!tag.match(this.patEndCDATA)) {\r
12570 if (matches = this.patNextClose.exec(this.text)) {\r
12571 tag += '>' + matches[1];\r
12572 }\r
12573 else {\r
12574 this.throwParseError( "Unclosed CDATA tag", tag );\r
12575 return null;\r
12576 }\r
12577 }\r
12578 this.patTag.lastIndex = this.patNextClose.lastIndex;\r
12579 if (matches = tag.match(this.patCDATANode)) {\r
12580 return matches[1];\r
12581 }\r
12582 else {\r
12583 this.throwParseError( "Malformed CDATA tag", tag );\r
12584 return null;\r
12585 }\r
12586 };\r
12587 XML.prototype.getTree = function() {\r
12588 return this.tree;\r
12589 };\r
12590 XML.prototype.compose = function() {\r
12591 var raw = compose_xml( this.documentNodeName, this.tree );\r
12592 var body = raw.substring( raw.indexOf("\n") + 1, raw.length );\r
12593 var xml = '';\r
12594 if (this.piNodeList.length) {\r
12595 for (var idx = 0, len = this.piNodeList.length; idx < len; idx++) {\r
12596 xml += '<' + this.piNodeList[idx] + '>' + "\n";\r
12597 }\r
12598 }\r
12599 else {\r
12600 xml += xml_header + "\n";\r
12601 }\r
12602 if (this.dtdNodeList.length) {\r
12603 for (var idx = 0, len = this.dtdNodeList.length; idx < len; idx++) {\r
12604 xml += '<' + this.dtdNodeList[idx] + '>' + "\n";\r
12605 }\r
12606 }\r
12607 xml += body;\r
12608 return xml;\r
12609 };\r
12610 function parse_xml(text) {\r
12611 var parser = new XML(text);\r
12612 return parser.error() ? parser.getLastError() : parser.getTree();\r
12613 }\r
12614 function trim(text) {\r
12615 if (text == null) return '';\r
12616 if (text && text.replace) {\r
12617 text = text.replace(/^\s+/, "");\r
12618 text = text.replace(/\s+$/, "");\r
12619 }\r
12620 return text;\r
12621 }\r
12622 function encode_entities(text) {\r
12623 if (text == null) return '';\r
12624 if (text && text.replace) {\r
12625 text = text.replace(/\&/g, "&amp;"); \r
12626 text = text.replace(/</g, "&lt;");\r
12627 text = text.replace(/>/g, "&gt;");\r
12628 }\r
12629 return text;\r
12630 }\r
12631 function encode_attrib_entities(text) {\r
12632 if (text == null) return '';\r
12633 if (text && text.replace) {\r
12634 text = text.replace(/\&/g, "&amp;"); \r
12635 text = text.replace(/</g, "&lt;");\r
12636 text = text.replace(/>/g, "&gt;");\r
12637 text = text.replace(/\"/g, "&quot;");\r
12638 text = text.replace(/\'/g, "&apos;");\r
12639 }\r
12640 return text;\r
12641 }\r
12642 function decode_entities(text) {\r
12643 if (text == null) return '';\r
12644 if (text && text.replace) {\r
12645 text = text.replace(/\&lt\;/g, "<");\r
12646 text = text.replace(/\&gt\;/g, ">");\r
12647 text = text.replace(/\&quot\;/g, '"');\r
12648 text = text.replace(/\&apos\;/g, "'");\r
12649 text = text.replace(/\&amp\;/g, "&"); \r
12650 }\r
12651 return text;\r
12652 }\r
12653 function compose_xml(name, node, indent) {\r
12654 var xml = "";\r
12655 if (!indent) {\r
12656 indent = 0;\r
12657 xml = xml_header + "\n";\r
12658 }\r
12659 var indent_text = "";\r
12660 for (var k = 0; k < indent; k++) indent_text += indent_string;\r
12661 if ((typeof(node) == 'object') && (node != null)) {\r
12662 if (!node.length) { \r
12663 xml += indent_text + "<" + name;\r
12664 var num_keys = 0;\r
12665 var has_attribs = 0;\r
12666 for (var key in node) num_keys++; \r
12667 if (node["_Attribs"]) {\r
12668 has_attribs = 1;\r
12669 var sorted_keys = hash_keys_to_array(node["_Attribs"]).sort();\r
12670 for (var idx = 0, len = sorted_keys.length; idx < len; idx++) {\r
12671 var key = sorted_keys[idx];\r
12672 xml += " " + key + "=\"" + encode_attrib_entities(node["_Attribs"][key]) + "\"";\r
12673 }\r
12674\r
12675 if (num_keys > has_attribs) {\r
12676 xml += ">";\r
12677 if (node["_Data"]) {\r
12678 xml += encode_entities(node["_Data"]) + "</" + name + ">\n";\r
12679\r
12680 else {\r
12681 xml += "\n";\r
12682 var sorted_keys = hash_keys_to_array(node).sort();\r
12683 for (var idx = 0, len = sorted_keys.length; idx < len; idx++) {\r
12684 var key = sorted_keys[idx];                                     \r
12685 if ((key != "_Attribs") && key.match(re_valid_tag_name)) {\r
12686 xml += compose_xml( key, node[key], indent + 1 );\r
12687\r
12688\r
12689 xml += indent_text + "</" + name + ">\n";\r
12690\r
12691 }\r
12692 else {\r
12693 xml += "/>\n";\r
12694 }\r
12695\r
12696 else {\r
12697 for (var idx = 0; idx < node.length; idx++) {\r
12698 xml += compose_xml( name, node[idx], indent );\r
12699 }\r
12700\r
12701\r
12702 else {\r
12703 xml += indent_text + "<" + name + ">" + encode_entities(node) + "</" + name + ">\n";\r
12704\r
12705 return xml;\r
12706 }\r
12707 function find_object(obj, criteria) {\r
12708 var criteria_length = 0;\r
12709 for (var a in criteria) criteria_length++;\r
12710 obj = always_array(obj);\r
12711 for (var a = 0; a < obj.length; a++) {\r
12712 var matches = 0;\r
12713 for (var b in criteria) {\r
12714 if (obj[a][b] && (obj[a][b] == criteria[b])) matches++;\r
12715 else if (obj[a]["_Attribs"] && obj[a]["_Attribs"][b] && (obj[a]["_Attribs"][b] == criteria[b])) matches++;\r
12716 }\r
12717 if (matches >= criteria_length) return obj[a];\r
12718 }\r
12719 return null;\r
12720 }\r
12721 function find_objects(obj, criteria) {\r
12722 var objs = new Array();\r
12723 var criteria_length = 0;\r
12724 for (var a in criteria) criteria_length++;\r
12725 obj = always_array(obj);\r
12726 for (var a = 0; a < obj.length; a++) {\r
12727 var matches = 0;\r
12728 for (var b in criteria) {\r
12729 if (obj[a][b] && obj[a][b] == criteria[b]) matches++;\r
12730 else if (obj[a]["_Attribs"] && obj[a]["_Attribs"][b] && (obj[a]["_Attribs"][b] == criteria[b])) matches++;\r
12731 }\r
12732 if (matches >= criteria_length) array_push( objs, obj[a] );\r
12733 }\r
12734 return objs;\r
12735 }\r
12736 function find_object_idx(obj, criteria) {\r
12737 var criteria_length = 0;\r
12738 for (var a in criteria) criteria_length++;\r
12739 obj = always_array(obj);\r
12740 for (var idx = 0; idx < obj.length; idx++) {\r
12741 var matches = 0;\r
12742 for (var b in criteria) {\r
12743 if (obj[idx][b] && (obj[idx][b] == criteria[b])) matches++;\r
12744 else if (obj[idx]["_Attribs"] && obj[idx]["_Attribs"][b] && (obj[idx]["_Attribs"][b] == criteria[b])) matches++;\r
12745 }\r
12746 if (matches >= criteria_length) return idx;\r
12747 }\r
12748 return -1;\r
12749 }\r
12750 function delete_object(obj, criteria) {\r
12751 var idx = find_object_idx(obj, criteria);\r
12752 if (idx > -1) {\r
12753 array_splice( obj, idx, 1 );\r
12754 return true;\r
12755 }\r
12756 return false;\r
12757 }\r
12758 function delete_objects(obj, criteria) {\r
12759 while (delete_object(obj, criteria)) ;\r
12760 }\r
12761 function insert_object_before(obj, criteria, insert) {\r
12762 var idx = find_object_idx(obj, criteria);\r
12763 if (idx > -1) {\r
12764 array_splice( obj, idx, 0, insert );\r
12765 return true;\r
12766 }\r
12767 return false;\r
12768 }\r
12769 function always_array(obj, key) {\r
12770 if (key) {\r
12771 if ((typeof(obj[key]) != 'object') || (typeof(obj[key].length) == 'undefined')) {\r
12772 var temp = obj[key];\r
12773 delete obj[key];\r
12774 obj[key] = new Array();\r
12775 obj[key][0] = temp;\r
12776 }\r
12777 return null;\r
12778 }\r
12779 else {\r
12780 if ((typeof(obj) != 'object') || (typeof(obj.length) == 'undefined')) { return [ obj ]; }\r
12781 else return obj;\r
12782 }\r
12783 }\r
12784 function hash_keys_to_array(hash) {\r
12785 var array = [];\r
12786 for (var key in hash) array_push(array, key);\r
12787 return array;\r
12788 }\r
12789 function encode_object(obj) {\r
12790 for (var idx = 1; idx < arguments.length; idx++) obj = merge_objects(obj, arguments[idx]);\r
12791 var stream = serialize(obj);\r
12792 return "decode_object('" + escape(stream) + "')";\r
12793 }\r
12794 function decode_object(stream) {\r
12795 var a;\r
12796 return eval( 'a=' + unescape(stream) );\r
12797 }\r
12798 function serialize(thingy, glue) {\r
12799 if (!glue) glue = ':'; \r
12800 var stream = '';\r
12801 if (typeof(thingy) == 'number') {\r
12802 stream += thingy;\r
12803 }\r
12804 else if (typeof(thingy) == 'string') {\r
12805 stream += '"' + thingy.replace(/([\"\\])/g, '\\$1').replace(/\r/g, "\\r").replace(/\n/g, "\\n") + '"';\r
12806 }\r
12807 else if (isa_hash(thingy)) {\r
12808 var num = 0;\r
12809 var buffer = [];\r
12810 for (var key in thingy) {\r
12811 buffer[num] = (key.match(/^[A-Za-z]\w*$/) ? key : ('"'+key+'"')) + glue + serialize(thingy[key], glue);\r
12812 num++;\r
12813 }\r
12814 stream += '{' + buffer.join(',') + '}';\r
12815 }\r
12816 else if (isa_array(thingy)) {\r
12817 var buffer = [];\r
12818 for (var idx = 0, len = thingy.length; idx < len; idx++) {\r
12819 buffer[idx] = serialize(thingy[idx], glue);\r
12820 }\r
12821 stream += '[' + buffer.join(',') + ']';\r
12822 }\r
12823 else {\r
12824 stream += '0';\r
12825 }\r
12826 return stream;\r
12827 }\r
12828 function ue(str) {\r
12829 return unescape(str);\r
12830 }\r
12831 function custom_sort(a, b) {\r
12832 var value_a = a[ sort_args.sort_by ];\r
12833 if (!value_a && a["_Attribs"]) value_a = a["_Attribs"][ sort_args.sort_by ];\r
12834 var value_b = b[ sort_args.sort_by ];\r
12835 if (!value_b && b["_Attribs"]) value_b = b["_Attribs"][ sort_args.sort_by ];\r
12836 var cmp = (value_b < value_a) ? 1 : -1;\r
12837 return cmp * sort_args.sort_dir;\r
12838 }\r
12839 function sort_array(obj, args) {\r
12840 var list = always_array(obj);\r
12841 sort_args = args;\r
12842 return list.sort( custom_sort );\r
12843 }\r
12844 function merge_objects(a, b) {\r
12845 if (!a) a = {};\r
12846 if (!b) b = {};\r
12847 var c = {};\r
12848 if (typeof(a) != 'object') eval( "a = " + a );\r
12849 if (typeof(b) != 'object') eval( "b = " + b );\r
12850 for (var key in a) c[key] = a[key];\r
12851 for (var key in b) c[key] = b[key];\r
12852 return c;\r
12853 }\r
12854 function copy_object(obj) {\r
12855 var new_obj = {};\r
12856 for (var key in obj) new_obj[key] = obj[key];\r
12857 return new_obj;\r
12858 }\r
12859 function deep_copy_object(obj) {\r
12860 if (isa_hash(obj)) {\r
12861 var new_obj = {};\r
12862 for (var key in obj) {\r
12863 if (isa_hash(obj[key]) || isa_array(obj[key]))\r
12864 new_obj[key] = deep_copy_object(obj[key]);\r
12865 else\r
12866 new_obj[key] = obj[key];\r
12867 }\r
12868 return new_obj;\r
12869 }\r
12870 else if (isa_array(obj)) {\r
12871 var new_obj = [];\r
12872 for (var idx = 0, len = obj.length; idx < len; idx++) {\r
12873 if (isa_hash(obj[idx]) || isa_array(obj[idx]))\r
12874 new_obj[idx] = deep_copy_object(obj[idx]);\r
12875 else\r
12876 new_obj[idx] = obj[idx];\r
12877 }\r
12878 return new_obj;\r
12879 }\r
12880 return null;\r
12881 }\r
12882 function deep_copy_object_lc_keys(obj) {\r
12883 var new_obj = {};\r
12884 if (obj.length) new_obj = [];\r
12885 for (var key in obj) {\r
12886 var lc_key = key.toLowerCase ? key.toLowerCase() : key;\r
12887 if (typeof(obj[key]) == 'object') new_obj[lc_key] = deep_copy_object_lc_keys( obj[key] );\r
12888 else new_obj[lc_key] = obj[key];\r
12889 }\r
12890 return new_obj;\r
12891 }\r
12892 function copy_into_object(a, b) {\r
12893 for (var key in b) a[key] = b[key];\r
12894 }\r
12895 function deep_copy_into_object(a, b) {\r
12896 for (var key in b) {\r
12897 if (typeof(b[key]) == 'object') {\r
12898 if (typeof(a[key]) == 'undefined') {\r
12899 if (b[key].length) a[key] = []; else a[key] = {};\r
12900 }\r
12901 deep_copy_into_object( a[key], b[key] );\r
12902 }\r
12903 else a[key] = b[key];\r
12904 }\r
12905 }\r
12906 function num_keys(hash) {\r
12907 var count = 0;\r
12908 for (var a in hash) count++;\r
12909 return count;\r
12910 }\r
12911 function deep_diff_object(a, b) {\r
12912 if ((typeof(a) != 'object') && (typeof(a) != 'array')) {\r
12913 if (typeof(a) == 'string') {\r
12914 a = a.replace(/\r\n/g, "\n");\r
12915 a = a.replace(/\r/g, "\n");\r
12916 }\r
12917 if (typeof(b) == 'string') {\r
12918 b = b.replace(/\r\n/g, "\n");\r
12919 b = b.replace(/\r/g, "\n");\r
12920 }\r
12921 if (a != b) return 1; \r
12922 else return 0;\r
12923 }\r
12924 if (typeof(a) != typeof(b)) return 1; \r
12925 if (typeof(a.length) == 'undefined') {\r
12926 if (num_keys(a) != num_keys(b)) return 1; \r
12927 for (var akey in a) {\r
12928 if (typeof(b[akey]) == 'undefined') return 1; \r
12929 if (deep_diff_object( a[akey], b[akey] )) return 1; \r
12930 }\r
12931 for (var bkey in b) {\r
12932 if (typeof(a[bkey]) == 'undefined') return 1; \r
12933 }\r
12934 }\r
12935 else {\r
12936 if (a.length != b.length) return 1; \r
12937 for (var idx = 0; idx < a.length; idx++) {\r
12938 if (deep_diff_object( a[idx], b[idx] )) return 1; \r
12939 }\r
12940 }\r
12941 return 0;\r
12942 }\r
12943 function lookup_path(path, obj) {\r
12944 path = path.replace(/\/$/, ""); \r
12945 while (/\/[^\/]+/.test(path) && (typeof(obj) == 'object')) {\r
12946 var slash = path.indexOf('/');\r
12947 path = path.substring( slash + 1 );\r
12948 slash = path.indexOf('/');\r
12949 if (slash == -1) slash = path.length;\r
12950 var name = path.substring(0, slash);\r
12951 if (typeof(obj.length) == 'undefined') {\r
12952 if (typeof(obj[name]) != 'undefined') obj = obj[name];\r
12953 else return null;\r
12954 }\r
12955 else {\r
12956 var idx = parseInt(name, 10);\r
12957 if (isNaN(idx)) return null;\r
12958 if (typeof(obj[idx]) != 'undefined') obj = obj[idx];\r
12959 else return null;\r
12960 }\r
12961\r
12962 return obj;\r
12963 }\r
12964 function set_path_value(path, obj, value) {\r
12965 path = path.replace(/\/$/, ""); \r
12966 var final_slash = path.lastIndexOf('/');\r
12967 var final_name = path.substring( final_slash + 1, path.length );\r
12968 path = path.substring( 0, final_slash );\r
12969 while (/\/[^\/]+/.test(path)) {\r
12970 var slash = path.indexOf('/');\r
12971 path = path.substring( slash + 1 );\r
12972 slash = path.indexOf('/');\r
12973 if (slash == -1) slash = path.length;\r
12974 var name = path.substring(0, slash);\r
12975 if (typeof(obj.length) == 'undefined') {\r
12976 if (!isa_hash(obj[name])) obj[name] = {}; \r
12977 obj = obj[name];\r
12978 }\r
12979 else {\r
12980 var idx = parseInt(name, 10);\r
12981 if (isNaN(idx)) return null;\r
12982 if (typeof(obj[idx]) != 'undefined') obj[idx] = {}; \r
12983 obj = obj[idx];\r
12984 }\r
12985\r
12986 obj[final_name] = value;\r
12987 }\r
12988 function delete_path_value(path, obj) {\r
12989 path = path.replace(/\/$/, ""); \r
12990 var final_slash = path.lastIndexOf('/');\r
12991 var final_name = path.substring( final_slash + 1, path.length );\r
12992 path = path.substring( 0, final_slash );\r
12993 while (/\/[^\/]+/.test(path) && (typeof(obj) == 'object')) {\r
12994 var slash = path.indexOf('/');\r
12995 path = path.substring( slash + 1 );\r
12996 slash = path.indexOf('/');\r
12997 if (slash == -1) slash = path.length;\r
12998 var name = path.substring(0, slash);\r
12999 if (typeof(obj.length) == 'undefined') {\r
13000 if (typeof(obj[name]) != 'undefined') obj = obj[name];\r
13001 else return null;\r
13002 }\r
13003 else {\r
13004 var idx = parseInt(name, 10);\r
13005 if (isNaN(idx)) return null;\r
13006 if (typeof(obj[idx]) != 'undefined') obj = obj[idx];\r
13007 else return null;\r
13008 }\r
13009\r
13010 delete obj[final_name];\r
13011 return true;\r
13012 }\r
13013 function set_all(obj, args) {\r
13014 for (var idx = 0; idx < obj.length; idx++) {\r
13015 for (var a in args) {\r
13016 obj[idx][a] = args[a];\r
13017\r
13018\r
13019 }\r
13020 function delete_all(obj, key) {\r
13021 for (var idx = 0; idx < obj.length; idx++) {\r
13022 if (typeof(obj[idx][key]) != 'undefined') delete obj[idx][key];\r
13023 }\r
13024 }\r
13025 function compose_attribs(attribs) {\r
13026 var html = '';\r
13027 if (attribs) {\r
13028 for (var key in attribs) {\r
13029 html += " " + key + "=\"" + attribs[key] + "\"";\r
13030 }\r
13031 }\r
13032 return html;\r
13033 }\r
13034 function compose_style(attribs) {\r
13035 var html = '';\r
13036 if (attribs) {\r
13037 for (var key in attribs) {\r
13038 html += " " + key + ":" + attribs[key] + ";";\r
13039 }\r
13040 }\r
13041 return html;\r
13042 }\r
13043 function isa_hash(arg) {\r
13044 return( !!arg && (typeof(arg) == 'object') && (typeof(arg.length) == 'undefined') );\r
13045 }\r
13046 function isa_array(arg) {\r
13047 if (typeof(arg) == 'array') return true;\r
13048 return( !!arg && (typeof(arg) == 'object') && (typeof(arg.length) != 'undefined') );\r
13049 }\r
13050 function first_key(hash) {\r
13051 for (var key in hash) return key;\r
13052 return null; \r
13053 }\r
13054 function xml_index_by( xml, element, key, recursive, compress ) {\r
13055 if (!xml || !key || !element) return 0;\r
13056 if (isa_hash(xml) && isa_hash(xml[element]) && xml[element][key])\r
13057 always_array( xml, element );\r
13058 if (isa_hash(xml) && isa_array(xml[element])) {\r
13059 var reindex = 0;\r
13060 for (var idx = xml[element].length - 1; idx >= 0; idx--) {\r
13061 var elem = xml[element][idx];\r
13062 if (elem[key]) {\r
13063 reindex = 1;\r
13064 var new_name = elem[key];\r
13065 delete elem[key];\r
13066 if (compress && (num_keys(elem) == 1) && (typeof(elem[ first_key(elem) ]) != 'object')) {\r
13067 elem = elem[ first_key(elem) ];\r
13068\r
13069 if (typeof(xml[new_name]) != 'undefined') {\r
13070 always_array( xml, new_name );\r
13071 array_unshift( xml[new_name], elem );\r
13072 }\r
13073 else {\r
13074 xml[new_name] = elem;\r
13075 }\r
13076\r
13077\r
13078 if (reindex) {\r
13079 delete xml[element];\r
13080 }\r
13081\r
13082 if (recursive) {\r
13083 if (xml && (typeof(xml) == 'object')) { \r
13084 if (typeof(xml.length) != 'undefined') {\r
13085 for (var idx = 0; idx < xml.length; idx++) {\r
13086 xml_index_by( xml[idx], element, key, recursive, compress );\r
13087\r
13088 }\r
13089 else {\r
13090 for (var key in xml) {\r
13091 xml_index_by( xml[key], element, key, recursive, compress );\r
13092\r
13093 }\r
13094\r
13095\r
13096 }\r
13097 function expand_parameter_nodes(tree) {\r
13098 xml_index_by( tree, 'ParameterGroup', 'Name', true, false );\r
13099 xml_index_by( tree, 'Parameter', 'Name', true, true );\r
13100 }\r
13101 function make_parameter_nodes(tree, max_levels) {\r
13102 var out = {};\r
13103 if (typeof(max_levels) == 'undefined') { max_levels = -1; } \r
13104 if (!max_levels) { return {}; } \r
13105 for (var key in tree) {\r
13106 if (isa_hash(tree[key])) {\r
13107 var node_group = merge_objects({ "_Attribs": { Name: key } },\r
13108 make_parameter_nodes(tree[key], max_levels - 1) );\r
13109 if (out['ParameterGroup']) {\r
13110 if (isa_array(out['ParameterGroup'])) {\r
13111 array_push( out['ParameterGroup'], node_group );\r
13112 }\r
13113 else {\r
13114 out['ParameterGroup'] = [ out['ParameterGroup'], node_group ];\r
13115 }\r
13116 }\r
13117 else {\r
13118 out['ParameterGroup'] = node_group;\r
13119 }\r
13120 }\r
13121 else if (isa_array(tree[key])) {\r
13122 for (var idx = 0; idx < tree[key].length; idx++) {\r
13123 var elem = tree[key][idx];\r
13124 if (isa_hash(elem)) {\r
13125 var node_group = merge_objects({ "_Attribs": { Name: key } },\r
13126 make_parameter_nodes(elem, max_levels - 1) );\r
13127 if (out['ParameterGroup']) {\r
13128 if (isa_array(out['ParameterGroup'])) {\r
13129 array_push( out['ParameterGroup'], node_group );\r
13130 }\r
13131 else {\r
13132 out['ParameterGroup'] = [ out['ParameterGroup'], node_group ];\r
13133 }\r
13134 }\r
13135 else {\r
13136 out['ParameterGroup'] = node_group;\r
13137 }\r
13138\r
13139 else {\r
13140 var node = { "_Attribs": { Name: key } };\r
13141 if (/[\n\"]/.test(elem)) {\r
13142 node['content'] = elem;\r
13143 }\r
13144 else {\r
13145 node['_Attribs']['Value'] = elem;\r
13146 }\r
13147 if (out['Parameter']) {\r
13148 if (isa_array(out['Parameter'])) {\r
13149 array_push( out['Parameter'], node );\r
13150 }\r
13151 else {\r
13152 out['Parameter'] = [ out['Parameter'], node ];\r
13153 }\r
13154 }\r
13155 else {\r
13156 out['Parameter'] = node;\r
13157 }\r
13158\r
13159\r
13160 }\r
13161 else {\r
13162 var node = { "_Attribs": { Name: key } };\r
13163 if (/[\n\"]/.test(tree[key])) {\r
13164 node['content'] = tree[key];\r
13165 }\r
13166 else {\r
13167 node['_Attribs']['Value'] = tree[key];\r
13168 }\r
13169 if (out['Parameter']) {\r
13170 if (isa_array(out['Parameter'])) {\r
13171 array_push( out['Parameter'], node );\r
13172 }\r
13173 else {\r
13174 out['Parameter'] = [ out['Parameter'], node ];\r
13175 }\r
13176 }\r
13177 else {\r
13178 out['Parameter'] = node;\r
13179 }\r
13180 }\r
13181 }\r
13182 return out;\r
13183 }\r
13184 function xpath_summary(xml, base_path) {\r
13185 if (!base_path) base_path = '/';\r
13186 var paths = {};\r
13187 if (isa_hash(xml)) {\r
13188 for (var key in xml) {\r
13189 if (typeof(xml[key]) == 'object') paths = merge_objects(paths, xpath_summary(xml[key], base_path + key + '/'));\r
13190 else paths[base_path + key] = xml[key];\r
13191 }\r
13192 }\r
13193 else if (isa_array(xml)) {\r
13194 for (var idx = 0, len = xml.length; idx < len; idx++) {\r
13195 if (typeof(xml[idx]) == 'object') paths = merge_objects(paths, xpath_summary(xml[idx], base_path.replace(/\/$/, '') + '[' + idx + ']/'));\r
13196 else paths[ base_path.replace(/\/$/, '') + '[' + idx + ']'] = xml[idx];\r
13197 }\r
13198 }\r
13199 return paths;\r
13200 }\r
13201 function array_push(array, item) {\r
13202 array[ array.length ] = item;\r
13203 }\r
13204 function array_pop(array) {\r
13205 if (array.length > 0) {\r
13206 var temp = array[ array.length - 1 ];\r
13207 delete array[ array.length - 1 ];\r
13208 array.length--;\r
13209 return temp;\r
13210 }\r
13211 else return null;\r
13212 }\r
13213 function array_unshift(array, item) {\r
13214 if (array.length > 0) {\r
13215 for (var idx = array.length - 1; idx >= 0; idx--) {\r
13216 array[idx + 1] = array[idx];\r
13217 }\r
13218 }\r
13219 array[0] = item;\r
13220 }\r
13221 function array_shift(array) {\r
13222 if (array.length > 0) {\r
13223 var temp = array[0];\r
13224 if (array.length > 1) {\r
13225 for (var idx = 0; idx < array.length - 1; idx++) {\r
13226 array[idx] = array[idx + 1];\r
13227 }\r
13228 }\r
13229 array_pop(array);\r
13230 return temp;\r
13231 }\r
13232 else return null;\r
13233 }\r
13234 function array_splice(array, pos, del_count, item) {\r
13235 var spliced = [];\r
13236 while (del_count) {\r
13237 array_push(spliced, array[pos]);\r
13238 if (array.length > pos + 1) {\r
13239 for (var idx = pos; idx < array.length - 1; idx++) {\r
13240 array[idx] = array[idx + 1];\r
13241 }\r
13242 }\r
13243 array_pop(array);\r
13244 del_count--;\r
13245 }\r
13246 if (typeof(item) != 'undefined') {\r
13247 for (var idx = array.length - 1; idx >= pos; idx--) {\r
13248 array[idx + 1] = array[idx];\r
13249 }\r
13250 array[pos] = item;\r
13251 }\r
13252 return spliced;\r
13253 }\r
13254 function array_slice(array, start, end) {\r
13255 if (!end) end = array.length;\r
13256 var slice = [];\r
13257 for (var idx = start; idx < end; idx++) {\r
13258 if (idx < array.length) array_push( slice, array[idx] );\r
13259 }\r
13260 return slice;\r
13261 }\r
13262 function array_combine(a, b) {\r
13263 var c = [];\r
13264 for (var idx = 0; idx < a.length; idx++) array_push( c, a[idx] );\r
13265 for (var idx = 0; idx < b.length; idx++) array_push( c, b[idx] );\r
13266 return c;\r
13267 }\r
13268 function array_cat(a, b) {\r
13269 for (var idx = 0; idx < b.length; idx++) array_push( a, b[idx] );\r
13270 }\r
13271 function array_join(arr, glue) {\r
13272 var str = '';\r
13273 for (var idx = 0, len = arr.length; idx < len; idx++) {\r
13274 if (idx > 0) str += glue;\r
13275 str += arr[idx];\r
13276 }\r
13277 return str;\r
13278 }\r
13279 if (!window.Ajax) window.Ajax = {};\r
13280 Ajax.Connection = function() {\r
13281 this._inUse = false;\r
13282 this._conn = null;\r
13283 this._xProgIds = [\r
13284 'MSXML2.XMLHTTP.3.0',\r
13285 'MSXML2.XMLHTTP',\r
13286 'Microsoft.XMLHTTP'\r
13287 ];\r
13288 try {\r
13289 this._conn = new XMLHttpRequest();\r
13290 }\r
13291 catch (e) {\r
13292 for (var idx = 0; idx < this._xProgIds.length; idx++) {\r
13293 try {\r
13294 this._conn = new ActiveXObject( this._xProgIds[idx] );\r
13295 break;\r
13296 }\r
13297 catch (e) {}\r
13298\r
13299\r
13300 };\r
13301 Ajax.Connection.prototype._socketTimeout = 30 * 1000;\r
13302 Ajax.Connection.prototype.send = function(tx) {\r
13303 this.tx = tx;\r
13304 if (!this._conn) {\r
13305 this.tx.response.code = 500;\r
13306 this.tx.response.data = "Could not create XMLHTTP object";\r
13307 this.tx._notifyComplete();\r
13308 return;\r
13309 }\r
13310 if (this.tx.request.url.toLowerCase().match(/^(\w+)\:\/\/([\w\-\.]+)/)) {\r
13311 if ((RegExp.$1 != 'file') && (RegExp.$2.toLowerCase() != location.hostname.toLowerCase())) {\r
13312 this.tx.response.code = 501;\r
13313 this.tx.response.data = "Cannot perform cross-domain AJAX calls";\r
13314 this.tx._notifyComplete();\r
13315 return;\r
13316 }\r
13317 }\r
13318 else {\r
13319 if (this.tx.request.url.match(/^\//)) {\r
13320 var proto = location.protocol.match(/https/i) ? 'https' : 'http';\r
13321 this.tx.request.url = proto + '://' + location.hostname + this.tx.request.url;\r
13322 }\r
13323 else {\r
13324 var base_url = location.href.replace(/\?.*$/, ""); \r
13325 if (!base_url.match(/\/$/)) base_url = base_url.replace(/\/[^\/]+$/, "/");\r
13326 this.tx.request.url = base_url + this.tx.request.url;\r
13327 }\r
13328 }\r
13329 try {\r
13330 this._conn.open(this.tx.request.method, this.tx.request.url, true);\r
13331 }\r
13332 catch (e) {\r
13333 this.tx.response.code = 502;\r
13334 this.tx.response.data = e.toString();\r
13335 this.tx._notifyComplete();\r
13336 return;\r
13337 }\r
13338 var me = this;\r
13339 this._conn.onreadystatechange = function() {\r
13340 me.pollConnection();\r
13341 };\r
13342 for (var key in this.tx.request.headers)\r
13343 this._conn.setRequestHeader( key, this.tx.request.headers[key] );\r
13344 try {\r
13345 this._conn.send( this.tx.request.data.length ? this.tx.request.data : null );\r
13346 }\r
13347 catch (e) {\r
13348 this.tx.response.code = 503;\r
13349 this.tx.response.data = e.toString();\r
13350 this.tx._notifyComplete();\r
13351 return;\r
13352 }\r
13353 this._inUse = true;\r
13354 this._timeout = setTimeout( function() { me.callTimeout(); }, this._socketTimeout );\r
13355 };\r
13356 Ajax.Connection.prototype.callTimeout = function() {\r
13357 this._conn.abort();\r
13358 if (this._pollTimer) { clearInterval( this._pollTimer ); this._pollTimer = null; }\r
13359 this._inUse = false;\r
13360 this.tx.response.code = 504;\r
13361 this.tx.response.data = 'Socket Timeout: ' + this.tx.request.url.replace(/\?.+$/, "?...");\r
13362 this.tx._notifyComplete();\r
13363 };\r
13364 Ajax.Connection.prototype.pollConnection = function() {\r
13365 if (this._inUse && this._conn && (this._conn.readyState == 4)) {\r
13366 if (this._pollTimer) { clearInterval( this._pollTimer ); this._pollTimer = null; }\r
13367 if (this._timeout) { clearTimeout( this._timeout ); this._timeout = null; }\r
13368 this.complete();\r
13369\r
13370 };\r
13371 Ajax.Connection.prototype.complete = function() {\r
13372 this._inUse = false;\r
13373 if (!this._conn.status && this._conn.responseText.length) {\r
13374 this.tx.response.code = 200;\r
13375 }\r
13376 else {\r
13377 try {\r
13378 if ((typeof(this._conn.status) != "undefined") && (this._conn.status != 0)) {\r
13379 this.tx.response.code = this._conn.status;\r
13380 }\r
13381 else {\r
13382 this.tx.response.code = 505;\r
13383 this.tx.response.data = 'Could not determine HTTP Status Code';\r
13384 }\r
13385 }\r
13386 catch(e) {\r
13387 this.tx.response.code = 506;\r
13388 this.tx.response.data = 'Could not determine HTTP Status Code';\r
13389 }\r
13390 try {\r
13391 this.tx.response.headersRaw = this._conn.getAllResponseHeaders();\r
13392 var headers = this.tx.response.headersRaw.split('\n');\r
13393 for (var idx = 0; idx < headers.length; idx++){\r
13394 var delimitPos = headers[idx].indexOf(':');\r
13395 if (delimitPos != -1) {\r
13396 this.tx.response.headers[headers[idx].substring(0, delimitPos)] = \r
13397 headers[idx].substring(delimitPos + 2);\r
13398 }\r
13399 }\r
13400 }\r
13401 catch (e) {\r
13402 }\r
13403 }\r
13404 this.tx.response.data = '' + this._conn.responseText;\r
13405 this.tx.response.xml = this._conn.responseXML ? this._conn.responseXML : null;\r
13406 this.tx.response.statusLine = this._conn.statusText ? this._conn.statusText : '';\r
13407 this.tx._notifyComplete();\r
13408 }\r
13409 Ajax.Request = function() {\r
13410 this.method = 'POST';\r
13411 this.url = '';\r
13412 this.data = '';\r
13413 this.headers = {};\r
13414 };\r
13415 Ajax.Response = function() {\r
13416 this.code = 0;\r
13417 this.data = '';\r
13418 this.headers = {};\r
13419 this.xml = null;\r
13420 this.statusLine = '';\r
13421 };\r
13422 Ajax.Transaction = function() {\r
13423 this.request = new Ajax.Request();\r
13424 this.response = new Ajax.Response();\r
13425 this.callback = null;\r
13426 this.connection = null;\r
13427 };\r
13428 Ajax.Transaction.prototype._notifyComplete = function() {\r
13429 if (typeof(this.callback) == 'function') this.callback( this );\r
13430 else if (window[this.callback]) window[this.callback]( this );\r
13431 else alert("ERROR: AJAX callback function is unknown: " + this.callback);\r
13432 }\r
13433 Ajax.ConnectionManager = function() {\r
13434 this._connections = []; \r
13435 this.ie = !!navigator.userAgent.match(/MSIE/);\r
13436 };\r
13437 Ajax.ConnectionManager.prototype._createConnection = function() {\r
13438 var obj = new Ajax.Connection();\r
13439 this._connections[ this._connections.length ] = obj;\r
13440 return obj;\r
13441 };\r
13442 Ajax.ConnectionManager.prototype._getConnection = function() {\r
13443 for (var idx = 0; idx < this._connections.length; idx++) {\r
13444 var conn = this._connections[idx];\r
13445 if (!conn._inUse) return conn;\r
13446 }\r
13447 if (this.ie && this._connections.length > 0) return null;\r
13448 return this._createConnection();\r
13449 };\r
13450 Ajax.ConnectionManager.prototype.inUse = function() {\r
13451 var num = 0;\r
13452 for (var idx = 0; idx < this._connections.length; idx++) {\r
13453 var conn = this._connections[idx];\r
13454 if (conn._inUse) num++;\r
13455 }\r
13456 if (!num && this.req_wait) num = true; \r
13457 return num;\r
13458 }\r
13459 Ajax.ConnectionManager.prototype.send = function(requestArgs, callback, userData) {\r
13460 if (!userData) userData = {};\r
13461 var tx = new Ajax.Transaction();\r
13462 for (var key in requestArgs) tx.request[key] = requestArgs[key];\r
13463 for (var key in userData) tx[key] = userData[key];\r
13464 if (!callback) return this.doError( "callback is not set" );\r
13465 if (!requestArgs.url) return this.doError( "url is not set" );\r
13466 tx.callback = callback;\r
13467 tx.connection = this._getConnection();\r
13468 var me = this;\r
13469 if (!tx.connection) {\r
13470 this.req_wait = true;\r
13471 setTimeout( function() {\r
13472 me.send( requestArgs, callback, userData );\r
13473 }, 100 );\r
13474 return false;\r
13475 }\r
13476 this.req_wait = false;\r
13477 tx.connection.send( tx );\r
13478 return true;\r
13479 };\r
13480 Ajax.ConnectionManager.prototype.get = function(url, callback, userData) {\r
13481 return this.send({\r
13482 method: 'GET',\r
13483 url: url\r
13484 }, callback, userData );\r
13485 }\r
13486 Ajax.ConnectionManager.prototype.doError = function(msg) {\r
13487 alert( "ERROR: " + msg );\r
13488 }\r
13489 Ajax.ConnectionManager.prototype.setSocketTimeout = function(sec) {\r
13490 Ajax.Connection.prototype._socketTimeout = sec * 1000;\r
13491 }\r
13492 ajax = new Ajax.ConnectionManager();\r
13493 if (!window.merge_objects || !window.serialize)\r
13494 alert("ERROR: cookie.js requires tools.js.");\r
13495 function CookieTree(args) {\r
13496 if (args) {\r
13497 for (var key in args) this[key] = args[key];\r
13498 }\r
13499 if (!this.expires) {\r
13500 var now = new Date();\r
13501 now.setFullYear( now.getFullYear() + 10 ); \r
13502 this.expires = now.toGMTString();\r
13503 }\r
13504 this.parse();\r
13505 };\r
13506 CookieTree.prototype.domain = location.hostname;\r
13507 CookieTree.prototype.path = location.pathname;\r
13508 CookieTree.prototype.parse = function() {\r
13509 this.tree = {};\r
13510 var cookies = document.cookie.split(/\;\s*/);\r
13511 for (var idx = 0, len = cookies.length; idx < len; idx++) {\r
13512 var cookie_raw = cookies[idx];\r
13513 if (cookie_raw.match(/^CookieTree=(.+)$/)) {\r
13514 var cookie = null;\r
13515 var cookie_raw = unescape( RegExp.$1 );\r
13516 Debug.trace("Cookie", "Parsing cookie: " + cookie_raw);\r
13517 try {\r
13518 eval( "cookie = " + cookie_raw + ";" );\r
13519 }\r
13520 catch (e) {\r
13521 Debug.trace("Cookie", "Failed to parse cookie.");\r
13522 cookie = {}; \r
13523 }\r
13524 this.tree = merge_objects( this.tree, cookie );\r
13525 idx = len;\r
13526 }\r
13527 }\r
13528 };\r
13529 CookieTree.prototype.get = function(key) {\r
13530 return this.tree[key];\r
13531 };\r
13532 CookieTree.prototype.set = function(key, value) {\r
13533 this.tree[key] = value;\r
13534 };\r
13535 CookieTree.prototype.save = function() {\r
13536 var cookie_raw = 'CookieTree=' + escape(serialize(this.tree));\r
13537 if (!this.path.match(/\/$/)) {\r
13538 this.path = this.path.replace(/\/[^\/]+$/, "") + '/';\r
13539 }\r
13540 cookie_raw += '; expires=' + this.expires;\r
13541 cookie_raw += '; domain=' + this.domain;\r
13542 cookie_raw += '; path=' + this.path;\r
13543 Debug.trace("Cookie", "Saving cookie: " + cookie_raw);\r
13544 document.cookie = cookie_raw;\r
13545 };\r
13546 CookieTree.prototype.remove = function() {\r
13547 var cookie_raw = 'CookieTree={}';\r
13548 if (!this.path.match(/\/$/)) {\r
13549 this.path = this.path.replace(/\/[^\/]+$/, "") + '/';\r
13550 }\r
13551 var now = new Date();\r
13552 now.setFullYear( now.getFullYear() - 1 ); \r
13553 cookie_raw += '; expires=' + now.toGMTString();\r
13554 cookie_raw += '; domain=' + this.domain;\r
13555 cookie_raw += '; path=' + this.path;\r
13556 document.cookie = cookie_raw;\r
13557 };\r
13558 var ww_char_widths = { 32: 0.33, 33: 0.33, 34: 0.4, 35: 0.66, 36: 0.66, 37: 1.03, 38: 0, 39: 0.22, 40: 0.4, 41: 0.4, 42: 0.44, 43: 0.7, 44: 0.33, 45: 0.4, 46: 0.33, 47: 0.33, 48: 0.66, 49: 0.66, 50: 0.66, 51: 0.66, 52: 0.66, 53: 0.66, 54: 0.66, 55: 0.66, 56: 0.66, 57: 0.66, 58: 0.33, 59: 0.33, 60: 0, 61: 0.7, 62: 0.7, 63: 0.66, 64: 1.18, 65: 0.77, 66: 0.77, 67: 0.85, 68: 0.85, 69: 0.77, 70: 0.74, 71: 0.92, 72: 0.85, 73: 0.33, 74: 0.59, 75: 0.77, 76: 0.66, 77: 1, 78: 0.85, 79: 0.92, 80: 0.77, 81: 0.92, 82: 0.85, 83: 0.77, 84: 0.74, 85: 0.85, 86: 0.77, 87: 1.11, 88: 0.77, 89: 0.77, 90: 0.74, 91: 0.33, 92: 0.33, 93: 0.33, 94: 0.55, 95: 0.66, 96: 0.4, 97: 0.66, 98: 0.66, 99: 0.59, 100: 0.66, 101: 0.66, 102: 0.33, 103: 0.66, 104: 0.66, 105: 0.25, 106: 0.25, 107: 0.59, 108: 0.25, 109: 1, 110: 0.66, 111: 0.66, 112: 0.66, 113: 0.66, 114: 0.4, 115: 0.59, 116: 0.33, 117: 0.66, 118: 0.59, 119: 0.85, 120: 0.59, 121: 0.59, 122: 0.59, 123: 0.4, 124: 0.29, 125: 0.4, 126: 0.7, 127: 1.18 };\r
13559 document.write( '<span style="position:absolute; left:-1000px; top:0px; padding:0px; margin:0px;" id="ww_span"></span>' );\r
13560 function ww_precalc_font(sty, callback) {\r
13561 var css_type = !!sty.match(/:/) ? 'style' : 'class';\r
13562 document.getElementById('ww_span').innerHTML = '<font '+css_type+'="'+sty+'">M</font>';\r
13563 setTimeout( 'ww_precalc_font_finish("'+callback+'")', 1 );\r
13564 }\r
13565 function ww_precalc_font_finish(callback) {\r
13566 var span = document.getElementById('ww_span');\r
13567 window[ callback ]( span.offsetWidth, span.offsetHeight );\r
13568 }\r
13569 function ww_string_width(str, em_width) {\r
13570 var len = str.length;\r
13571 var width = 0;\r
13572 for (var idx=0; idx<len; idx++) {\r
13573 var ch = str.charCodeAt(idx);\r
13574 if (ww_char_widths[ch]) width += (em_width * ww_char_widths[ch]);\r
13575 else width += em_width;\r
13576 }\r
13577 return width;\r
13578 }\r
13579 function ww_fit_filename(filename, max_width, em_width) {\r
13580 if (ww_string_width(filename, em_width) <= max_width) return filename;\r
13581 var end = filename.lastIndexOf('.');\r
13582 if (end == -1) end = filename.length;\r
13583 if (end < 3) return filename; \r
13584 var tpos = Math.floor(end / 2);\r
13585 var a = filename.substring(0,tpos);\r
13586 var b = filename.substring(tpos + 1);\r
13587 while (ww_string_width(a + '...' + b, em_width) > max_width) {\r
13588 a = a.substring(0, a.length - 1); if (!a.length) return '...' + b;\r
13589 b = b.substring(1); if (!b.length) return a + '...';\r
13590 }\r
13591 return a + '...' + b;\r
13592 }\r
13593 function ww_fit_array(arr, max_width, em_width, ellipsis, html) {\r
13594 var output = [];\r
13595 for (var idx = 0, len = arr.length; idx < len; idx++) {\r
13596 output.push( ww_fit_string(arr[idx], max_width, em_width, ellipsis, html) );\r
13597 }\r
13598 return output;\r
13599 }\r
13600 function ww_fit_string(in_str, max_width, em_width, ellipsis, html) {\r
13601 var str = '' + in_str;\r
13602 var len = str.length;\r
13603 var width = 0;\r
13604 var state = 0;\r
13605 var last_word_end = 0;\r
13606 if (ellipsis == 1) max_width -= ww_string_width("...", em_width);\r
13607 for (var idx=0; idx<len; idx++) {\r
13608 var is_word_char = !!str.substring(idx, idx + 1).match(/\S/);\r
13609 if ((state == 1) && !is_word_char) {\r
13610 last_word_end = idx;\r
13611 }\r
13612 state = is_word_char ? 1 : 0;\r
13613 var code = str.charCodeAt(idx);\r
13614 if (ww_char_widths[code]) width += (em_width * ww_char_widths[code]);\r
13615 else width += em_width;\r
13616 if (width > max_width) {\r
13617 if (!last_word_end) {\r
13618 var final_str = str.substring(0, (ellipsis == 2) ? (idx - 3) : idx);\r
13619 if (ellipsis) final_str += '...';\r
13620 return html ? ('<nobr>'+final_str.replace(/\s/g, "&nbsp;")+'</nobr>') : final_str;\r
13621 }\r
13622 else {\r
13623 var final_str = str.substring(0, last_word_end);\r
13624 if (ellipsis == 1) final_str += '...';\r
13625 return html ? ('<nobr>'+final_str.replace(/\s/g, "&nbsp;")+'</nobr>') : final_str;\r
13626 }\r
13627\r
13628\r
13629 return html ? str.replace(/\s/g, "&nbsp;") : str;\r
13630 }\r
13631 function ww_fit_box(str, max_width, max_lines, em_width, ellipsis, html) {\r
13632 var line_idx = 0;\r
13633 var char_idx = 0;\r
13634 var final_str = '';\r
13635 while (line_idx < max_lines) {\r
13636 while (!!str.substring(char_idx, char_idx + 1).match(/\s/)) char_idx++;\r
13637 var last_line = (line_idx == (max_lines - 1));\r
13638 var temp_str = ww_fit_string( str.substring(char_idx), max_width, em_width, last_line ? ellipsis : 2, 0 );\r
13639 final_str += temp_str;\r
13640 char_idx += temp_str.length;\r
13641 if (temp_str.match(/\.\.\.$/)) char_idx -= 3;\r
13642 if (char_idx >= str.length) line_idx = max_lines;\r
13643 else if (!last_line) final_str += "\n";\r
13644 line_idx++;\r
13645\r
13646 return html ? final_str.replace(/\n/g, "<br>").replace(/\s/g, "&nbsp;") : final_str;\r
13647 }\r
13648 var last_section = {};\r
13649 var last_tab = '';\r
13650 var rendering_page = true;\r
13651 var years = [\r
13652 [ 2002, '2002' ], [ 2003, '2003' ], [ 2004, '2004' ], [ 2005, '2005' ],\r
13653 [ 2006, '2006' ], [ 2007, '2007' ], [ 2008, '2008' ], [ 2009, '2009' ],\r
13654 [ 2010, '2010' ]\r
13655 ];\r
13656 var months = [\r
13657 [ 1, 'January' ], [ 2, 'February' ], [ 3, 'March' ], [ 4, 'April' ],\r
13658 [ 5, 'May' ], [ 6, 'June' ], [ 7, 'July' ], [ 8, 'August' ],\r
13659 [ 9, 'September' ], [ 10, 'October' ], [ 11, 'November' ],\r
13660 [ 12, 'December' ]\r
13661 ];\r
13662 var days = [\r
13663 [1,1], [2,2], [3,3], [4,4], [5,5], [6,6], [7,7], [8,8], [9,9], [10,10],\r
13664 [11,11], [12,12], [13,13], [14,14], [15,15], [16,16], [17,17], [18,18], \r
13665 [19,19], [20,20], [21,21], [22,22], [23,23], [24,24], [25,25], [26,26],\r
13666 [27,27], [28,28], [29,29], [30,30], [31,31]\r
13667 ];\r
13668 var hours = [\r
13669 [0, '12 AM'], [1, '1 AM'], [2, '2 AM'], [3, '3 AM'], [4, '4 AM'],\r
13670 [5, '5 AM'], [6, '6 AM'], [7, '7 AM'], [8, '8 AM'], [9, '9 AM'],\r
13671 [10, '10 AM'], [11, '11 AM'], [12, '12 PM'], [13, '1 PM'], \r
13672 [14, '2 PM'], [15, '3 PM'], [16, '4 PM'], [17, '5 PM'], [18, '6 PM'],\r
13673 [19, '7 PM'], [20, '8 PM'], [21, '9 PM'], [22, '10 PM'], [23, '11 PM']\r
13674 ];\r
13675 function mouse_icon_button(type, e, pt) {\r
13676 switch (type) {\r
13677 case 'mouseDown': this.className = 'icon_button_active'; return false; \r
13678 case 'mouseUp': this.className = 'icon_button'; break;\r
13679 case 'click':\r
13680 var self = this;\r
13681 setTimeout( function() { invoke_dom_handler(self, 'onMouseClick'); }, 10 );\r
13682 break;\r
13683 }\r
13684 return true; \r
13685 }\r
13686 function icon_button(icon_name, text, code, width) {\r
13687 var html = '';\r
13688 html += '<table class="icon_button" cellspacing=0 cellpadding=0 captureMouse="mouse_icon_button"';\r
13689 if (width) html += ' width="'+width+'"';\r
13690 html += ' onMouseClick="'+code+'">';\r
13691 html += '<tr>';\r
13692 html += '<td width="16" style="padding-right:0px;">' + icon(icon_name) + '</td>';\r
13693 if (!ie) html += '<td width="3" style="padding-right:0px;">' + spacer(3,1) + '</td>';\r
13694 html += '<td align="center" width="*" onselectstart="return false" style="padding-right:0px;"><nobr>' + text + '</nobr></td>';\r
13695 html += '</tr></table>';\r
13696 return html;\r
13697 }\r
13698 function large_icon_button(icon_name, text, code, id, style, extra_classes) {\r
13699 var html = '';\r
13700 if (!icon_name) icon_name = '';\r
13701 if (!icon_name.match(/\.\w+$/)) icon_name += '.gif';\r
13702 if (!text) text = '';\r
13703 if (!code) code = '';\r
13704 if (!id) id = '';\r
13705 if (!extra_classes) extra_classes = '';\r
13706 if (code.toString().match(/^\#(.+)$/)) code = "Nav.go('"+RegExp.$1+"')";\r
13707 html += '<div class="button '+extra_classes+'" id="'+id+'" onClick="'+code+'">';\r
13708 html += '<ul>';\r
13709 html += '<li class="left"></li>';\r
13710 if (icon_name) html += '<li class="icon"><img src="'+png(icons_uri+'/'+icon_name, true)+'" class="png" width="16" height="16"/></li>';\r
13711 html += '<li class="center" style="' + (icon_name ? 'padding-left:5px;' : '') + compose_style(style) + '">' + text + '</li>';\r
13712 html += '<li class="right"></li>';\r
13713 html += '</ul>';\r
13714 html += '<div class="clear"></div>';\r
13715 html += '</div>';\r
13716 return html;\r
13717 }\r
13718 function get_icon_for(filename, id, text, code) {\r
13719 if (!id) id = '';\r
13720 if (!text) text = '';\r
13721 if (!code) code = '';\r
13722 var icon_name = '';\r
13723 var ext = filename.replace(/^.+\.(\w+)$/, '$1').toLowerCase();\r
13724 if (filename.match(/\/$/)) icon_name = 'folder.png';\r
13725 else if (ext.match(/(js|sh|pl|pm|php|asp)/)) icon_name = 'page_white_code.png';\r
13726 else if (ext.match(/(xml|xsl|dtd|txt|htm|html|css)/)) icon_name = 'page_white_text.png';\r
13727 else if (ext.match(/(jpg|jpe|jpeg|bmp|gif|pcx|png|tif|tiff|psd)/)) icon_name = 'page_white_colorwheel.png';\r
13728 else if (ext.match(/(as|swf|fla)/)) icon_name = 'page_white_flash.png';\r
13729 else if (ext.match(/(doc)/)) icon_name = 'page_white_word.png';\r
13730 else if (ext.match(/(xls)/)) icon_name = 'page_white_excel.png';\r
13731 else if (ext.match(/(pdf)/)) icon_name = 'page_white_acrobat.png';\r
13732 else if (ext.match(/(zip)/)) icon_name = 'page_white_zip.png';\r
13733 else if (ext.match(/(mp3)/)) icon_name = 'page_white_audio.png';\r
13734 else if (ext.match(/(flv|mp4|mp4v|mov|3gp|3g2)/)) icon_name = 'page_white_movie.png';\r
13735 else if (ext.match(/(ttf|otf)/)) icon_name = 'page_white_font.png';\r
13736 else icon_name = 'page_white.png';\r
13737 return icon(icon_name, text, code, filename, id);\r
13738 }\r
13739 function get_color_preview(color) {\r
13740 if (!color.match(/^\#/)) color = '#' + color;\r
13741 var html = '';\r
13742 html += '<table cellspacing="0" cellpadding="0"><tr>';\r
13743 html += '<td style="margin:0; padding:0;"><div style="width:24px; height:14px; border:1px solid #aaa; background-color:'+color+';"></div></td>';\r
13744 html += '<td style="margin:0; padding:0;">' + spacer(4,1) + '</td>';\r
13745 html += '<td style="margin:0; padding:0;">' + color + '</td>';\r
13746 html += '</tr></table>';\r
13747 return html;\r
13748 }\r
13749 function busy() {\r
13750 return '<img src="'+images_uri+'/busy.gif" width="16" height="16"/>';\r
13751 }\r
13752 function loading_image() {\r
13753 return '<center><img src="'+images_uri+'/loading.gif" width="32" height="32"/></center>';\r
13754 }\r
13755 function begin_section(type, size, ext, table_attribs) {\r
13756 if (typeof(size) == 'number') size = [size, size, size, size];\r
13757 if (!ext || ie6) ext = 'gif';\r
13758 last_section.type = type;\r
13759 last_section.size = size;\r
13760 last_section.ext = ext;\r
13761 var png = (ext.toLowerCase() == 'png') ? true : false;\r
13762 var html = '<table cellspacing=0 cellpadding=0 border=0 '+compose_attribs(table_attribs)+'><tr>';\r
13763 html += '<td width="'+size[0]+'" height="'+size[1]+'"><img '+(png ? 'class="png" ' : '')+'src="'+images_uri+'/'+type+'/top_left.'+ext+'" width="'+size[0]+'" height="'+size[1]+'"></td>';\r
13764 html += '<td width="*" height="'+size[1]+'" '+(png ? 'class="png" ' : '')+' background="'+images_uri+'/'+type+'/top.'+ext+'"><img src="'+images_uri+'/pixel.gif" width="1" height="1"></td>';\r
13765 html += '<td width="'+size[2]+'" height="'+size[1]+'"><img '+(png ? 'class="png" ' : '')+'src="'+images_uri+'/'+type+'/top_right.'+ext+'" width="'+size[2]+'" height="'+size[1]+'"></td>';\r
13766 html += '</tr><tr>';\r
13767 html += '<td width="'+size[0]+'" height="*" '+(png ? 'class="png" ' : '')+'background="'+images_uri+'/'+type+'/left.'+ext+'"><img src="'+images_uri+'/pixel.gif" width="1" height="1"></td>';\r
13768 html += '<td width="*" height="*">';\r
13769 if (rendering_page) document.write(html); else return html;\r
13770 }\r
13771 function end_section(type, size, ext) {\r
13772 if (typeof(size) == 'number') size = [size, size, size, size];\r
13773 if (!type) type = last_section.type;\r
13774 if (!size) size = last_section.size;\r
13775 if (!ext) ext = last_section.ext;\r
13776 if (ie6) ext = 'gif';\r
13777 var png = (ext.toLowerCase() == 'png') ? true : false;\r
13778 var html = '</td>';\r
13779 html += '<td width="'+size[2]+'" height="*" '+(png ? 'class="png" ' : '')+'background="'+images_uri+'/'+type+'/right.'+ext+'"><img src="'+images_uri+'/pixel.gif" width="1" height="1"></td>';\r
13780 html += '</tr><tr>';\r
13781 html += '<td width="'+size[0]+'" height="'+size[3]+'"><img '+(png ? 'class="png" ' : '')+'src="'+images_uri+'/'+type+'/bottom_left.'+ext+'" width="'+size[0]+'" height="'+size[3]+'"></td>';\r
13782 html += '<td width="*" height="'+size[3]+'" '+(png ? 'class="png" ' : '')+'background="'+images_uri+'/'+type+'/bottom.'+ext+'"><img src="'+images_uri+'/pixel.gif" width="1" height="1"></td>';\r
13783 html += '<td width="'+size[2]+'" height="'+size[3]+'"><img '+(png ? 'class="png" ' : '')+'src="'+images_uri+'/'+type+'/bottom_right.'+ext+'" width="'+size[2]+'" height="'+size[3]+'"></td>';\r
13784 html += '</tr></table>';\r
13785 if (rendering_page) document.write(html); else return html;\r
13786 }\r
13787 function img8_bkgnd(lw, th, rw, bh) {\r
13788 if (arguments.length == 1) { th = rw = bh = lw; }\r
13789 else if (arguments.length == 2) { rw = lw; bh = th; }\r
13790 return( \r
13791 '<table cellspacing="0" cellpadding="0" border="0" width="100%" height="100%"><tr>' + \r
13792 '<td width="'+lw+'" height="'+th+'" class="tl"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' +\r
13793 '<td width="*" height="'+th+'" class="t"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' + \r
13794 '<td width="'+rw+'" height="'+th+'" class="tr"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' + \r
13795 '</tr><tr>' + \r
13796 '<td width="'+lw+'" height="*" class="l"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' + \r
13797 '<td width="*" height="*" class="c"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' + \r
13798 '<td width="'+rw+'" height="*" class="r"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' + \r
13799 '</tr><tr>' + \r
13800 '<td width="'+lw+'" height="'+bh+'" class="bl"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' + \r
13801 '<td width="*" height="'+bh+'" class="b"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' + \r
13802 '<td width="'+rw+'" height="'+bh+'" class="br"><img src="'+images_uri+'/sp.gif" width="1" height="1"/></td>' + \r
13803 '</tr></table>'\r
13804 );\r
13805 }\r
13806 function tab_bar(tabs, cur_tab_name) {\r
13807 var lw = 10, th = 10, rw = 10;\r
13808 var html = '';\r
13809 html += '<div class="tab_bar">';\r
13810 for (var idx = 0, len = tabs.length; idx < len; idx++) {\r
13811 var tab = tabs[idx];\r
13812 var code = tab[0];\r
13813 if (code.toString().match(/^\#(.+)$/)) code = "Nav.go('"+RegExp.$1+"')";\r
13814 html += '<div class="tab '+((tab[1] == cur_tab_name) ? 'active' : 'inactive')+'" onClick="'+code+'">';\r
13815 html += '<div class="content ' + (tab[2] ? (' icon" style="background-image:url(images/icons/'+tab[2]+')"') : '"') + '>' + tab[1] + '</div>';\r
13816 html += '</div>';\r
13817 }\r
13818 html += '<div class="clear"></div>';\r
13819 html += '</div>';\r
13820 return html;\r
13821 }\r
13822 function select_tab(id) {\r
13823 $('tab_left_'+id).src = $('tab_left_'+id).src.replace(/_inactive_/, '_active_');\r
13824 $('tab_middle_'+id).style.backgroundImage = $('tab_middle_'+id).style.backgroundImage.replace(/_inactive_/, '_active_');\r
13825 $('tab_right_'+id).src = $('tab_right_'+id).src.replace(/_inactive_/, '_active_');\r
13826 $('tab_text_'+id).className = 'tab_active';\r
13827 $('page_'+id).show();\r
13828 }\r
13829 function deselect_tab(id) {\r
13830 $('tab_left_'+id).src = $('tab_left_'+id).src.replace(/_active_/, '_inactive_');\r
13831 $('tab_middle_'+id).style.backgroundImage = $('tab_middle_'+id).style.backgroundImage.replace(/_active_/, '_inactive_');\r
13832 $('tab_right_'+id).src = $('tab_right_'+id).src.replace(/_active_/, '_inactive_');\r
13833 $('tab_text_'+id).className = 'tab_inactive';\r
13834 $('page_'+id).hide();\r
13835 }\r
13836 function click_tab(id) {\r
13837 if (id != last_tab) {\r
13838 if (last_tab) {\r
13839 deselect_tab(last_tab);\r
13840 safe_call('deactivate_page_'+last_tab);\r
13841 }\r
13842 select_tab(id);\r
13843 last_tab = id;\r
13844 if (!$('page_'+id).innerHTML.length) safe_call('init_page_'+id);\r
13845 else safe_call('activate_page_'+id);\r
13846 }\r
13847 }\r
13848 function begin_tabs(tabs, type, size, tab_height, ext, table_attribs) {\r
13849 if (!ext) ext = 'gif';\r
13850 last_section.type = type;\r
13851 last_section.size = size;\r
13852 last_section.ext = ext;\r
13853 var png = (ext.toLowerCase() == 'png') ? true : false;\r
13854 var html = '<table cellspacing=0 cellpadding=0 border=0 '+compose_attribs(table_attribs)+'>';\r
13855 html += '<tr>';\r
13856 html += '<td width="'+size+'" height="'+tab_height+'"><img '+(png ? 'class="png" ' : '')+'src="'+images_uri+'/'+type+'/tabs/top_left.'+ext+'" width="'+size+'" height="'+tab_height+'"></td>';\r
13857 html += '<td width="*" height="'+tab_height+'">';\r
13858 html += '<table width="100%" cellspacing=0 cellpadding=0 border=0><tr>';\r
13859 for (var idx = 0, len = tabs.length; idx < len; idx++) {\r
13860 var tab = tabs[idx];\r
13861 var tab_mode = 'tab_inactive';\r
13862 var click_action = 'onMouseDown="return false" onMouseUp="click_tab(\''+tab[1]+'\')"';\r
13863 html += '<td width="'+size+'" height="'+tab_height+'" '+click_action+'>';\r
13864 html += '<img '+(png ? 'class="png" ' : '')+'src="'+images_uri+'/'+type+'/tabs/'+tab_mode+'_left.'+ext+'" width="'+size+'" height="'+tab_height+'" id="tab_left_'+tab[1]+'">';\r
13865 html += '</td>';\r
13866 html += '<td '+(png ? 'class="png" ' : '')+'width="1" height="'+tab_height+'" '+click_action+' id="tab_middle_'+tab[1]+'" style="background-image:url('+images_uri+'/'+type+'/tabs/'+tab_mode+'_middle.'+ext+');">';\r
13867 html += '<span id="tab_text_'+tab[1]+'" class="'+tab_mode+'">' + tab[0].toString().replace(/\s/g, "&nbsp;") + '</span>';\r
13868 html += '</td>';\r
13869 html += '<td width="'+size+'" height="'+tab_height+'" '+click_action+'>';\r
13870 html += '<img '+(png ? 'class="png" ' : '')+'src="'+images_uri+'/'+type+'/tabs/'+tab_mode+'_right.'+ext+'" width="'+size+'" height="'+tab_height+'" id="tab_right_'+tab[1]+'">';\r
13871 html += '</td>';\r
13872 }\r
13873 html += '<td width="*" height="'+tab_height+'" '+(png ? 'class="png" ' : '')+' background="'+images_uri+'/'+type+'/tabs/top.'+ext+'"><img src="'+images_uri+'/pixel.gif" width="1" height="1"></td>';\r
13874 html += '</tr></table>';\r
13875 html += '</td>';\r
13876 html += '<td width="'+size+'" height="'+tab_height+'"><img '+(png ? 'class="png" ' : '')+'src="'+images_uri+'/'+type+'/tabs/top_right.'+ext+'" width="'+size+'" height="'+tab_height+'"></td>';\r
13877 html += '</tr><tr>';\r
13878 html += '<td width="'+size+'" height="*" '+(png ? 'class="png" ' : '')+'background="'+images_uri+'/'+type+'/left.'+ext+'"><img src="'+images_uri+'/pixel.gif" width="1" height="1"></td>';\r
13879 html += '<td width="*" height="*" bgcolor=white>';\r
13880 if (rendering_page) document.write(html); else return html;\r
13881 }\r
13882 function popup_fade_animate() {\r
13883 if (session.popup_fade_screen_active) {\r
13884 var div_amount = (session.popup_fade_target == 0.0) ? 4 : 8;\r
13885 session.popup_fade_opacity += ((session.popup_fade_target - session.popup_fade_opacity) / div_amount);\r
13886 var div = document.getElementById('lbox_overlay');\r
13887 if (div) {\r
13888 div.style.opacity = session.popup_fade_opacity;\r
13889 if (ie) div.style.filter = 'alpha(opacity=' + parseInt(session.popup_fade_opacity * 100, 10) + ')';\r
13890 div = null;\r
13891 }\r
13892 if (Math.abs(session.popup_fade_target - session.popup_fade_opacity) < 0.01) {\r
13893 session.popup_fade_screen_active = 0;\r
13894 if (!session.popup_fade_target) {\r
13895 document.body.removeChild( $('lbox_overlay') );\r
13896 if (ie) {\r
13897 document.body.removeChild( $('lbox_msie_frame') );\r
13898 }\r
13899 if (0) {\r
13900 var html = document.getElementsByTagName('html')[0];\r
13901 html.style.height = 'auto';\r
13902 html.style.width = 'auto';\r
13903 html.style.overflow = '';\r
13904 var body = document.getElementsByTagName('body')[0];\r
13905 body.style.width = 'auto';\r
13906 body.style.height = 'auto';\r
13907 body.style.overflow = '';\r
13908 body.style.marginRight = '0px';\r
13909 }\r
13910 if (safari) {\r
13911 window.scrollBy(0, 1);\r
13912 window.scrollBy(0, -1);\r
13913 }\r
13914\r
13915 }\r
13916 else {\r
13917 setTimeout( 'popup_fade_animate()', 33 );\r
13918 }\r
13919 }\r
13920 }\r
13921 function popup_fade_screen() {\r
13922 if (!session.popup_dialog_active) {\r
13923 if (0) {\r
13924 var html = document.getElementsByTagName('html')[0];\r
13925 html.style.height = '100%';\r
13926 html.style.width = '100%';\r
13927 html.style.overflow = 'hidden';\r
13928 var body = document.getElementsByTagName('body')[0];\r
13929 body.style.height = '100%';\r
13930 body.style.overflow = 'hidden';\r
13931 if (getInnerWindowSize().height < getScrollMax().height) {\r
13932 body.style.marginRight = '16px';\r
13933 }\r
13934 }\r
13935 if (ie && !$('lbox_msie_frame')) {\r
13936 var ifr = document.createElement('IFRAME');\r
13937 ifr.id = 'lbox_msie_frame';\r
13938 document.body.appendChild(ifr);\r
13939 }\r
13940 if (!$('lbox_overlay')) {\r
13941 var div = document.createElement('DIV');\r
13942 div.id = 'lbox_overlay';\r
13943 document.body.appendChild(div);\r
13944 }\r
13945 session.popup_fade_target = 0.4;\r
13946 if (!session.popup_fade_screen_active) {\r
13947 session.popup_fade_opacity = 0.0;\r
13948 session.popup_fade_screen_active = 1;\r
13949 popup_fade_animate();\r
13950 }\r
13951 }\r
13952 }\r
13953 function popup_restore_screen() {\r
13954 if (session.popup_dialog_active) {\r
13955 session.popup_fade_target = 0.0;\r
13956 if (1) {\r
13957 var html = document.getElementsByTagName('html')[0];\r
13958 html.style.height = 'auto';\r
13959 html.style.width = 'auto';\r
13960 html.style.overflow = '';\r
13961 var body = document.getElementsByTagName('body')[0];\r
13962 body.style.width = 'auto';\r
13963 body.style.height = 'auto';\r
13964 body.style.overflow = '';\r
13965 body.style.marginRight = '0px';\r
13966 }\r
13967 if (safari) {\r
13968 window.scrollBy(0, 1);\r
13969 window.scrollBy(0, -1);\r
13970 }\r
13971 if (!session.popup_fade_screen_active) {\r
13972 session.popup_fade_opacity = 0.5;\r
13973 session.popup_fade_screen_active = 1;\r
13974 popup_fade_animate();\r
13975 }\r
13976 }\r
13977 }\r
13978 function show_popup_dialog(width, height, html) {\r
13979 if (session.net_error) return;\r
13980 if (window.gGameControl) {\r
13981 gGameControl.pause();\r
13982 gGameControl.setClickResume( false );\r
13983 }\r
13984 else {\r
13985 if (window.Effect && Effect.Game && Effect.Game.inGame) Effect.Game.pause();\r
13986 if (window.Effect && Effect.Game) Effect.Game.clickResume = false;\r
13987 }\r
13988 var popup = $('d_dialog_outer');\r
13989 var doc_size = getInnerWindowSize();\r
13990 var scroll = getScrollXY();\r
13991 var outer_width = width + 24 + 24; \r
13992 var outer_height = height + 24 + 24; \r
13993 var left = Math.floor( (doc_size.width / 2) - (outer_width / 2) );\r
13994 var top = Math.floor( ((doc_size.height / 2) - (outer_height / 2)) / 2 );\r
13995 top += scroll.y;\r
13996 top += 50;\r
13997 popup.style.left = left + 'px';\r
13998 popup.style.top = top + 'px';\r
13999 popup.style.width = outer_width + 'px';\r
14000 popup.style.height = outer_height + 'px';\r
14001 var content = $('d_dialog_inner');\r
14002 content.style.width = width + 'px';\r
14003 content.style.height = height + 'px';\r
14004 content.innerHTML = html;\r
14005 popup.show();\r
14006 if (!ie) popup_fade_screen();\r
14007 session.popup_dialog_active = true;\r
14008 delete session.progress;\r
14009 safe_call('hook_show_popup_dialog');\r
14010 }\r
14011 function hide_popup_dialog() {\r
14012 $('d_dialog_inner').innerHTML = '';\r
14013 var popup = $('d_dialog_outer');\r
14014 popup.left = "-4000px";\r
14015 popup.hide();\r
14016 if (!ie) popup_restore_screen();\r
14017 session.popup_dialog_active = false;\r
14018 delete session.hooks.keys[ENTER_KEY];\r
14019 delete session.hooks.keys[ESC_KEY];\r
14020 delete session.progress;\r
14021 safe_call('hook_hide_popup_dialog');\r
14022 if (window.gGameControl) {\r
14023 gGameControl.setClickResume( true );\r
14024 }\r
14025 else if (window.Effect && Effect.Game) Effect.Game.clickResume = true;\r
14026 }\r
14027 function clear_notice() {\r
14028 hide_popup_dialog();\r
14029 fire_hook('after_notice');\r
14030 }\r
14031 function do_notice(title, msg, callback) {\r
14032 hide_popup_dialog();\r
14033 delete session.progress;\r
14034 if (callback) session.hooks.after_notice = callback;\r
14035 var html = '<table cellspacing=0 cellpadding=0><tr><td width=400 height=150 valign=center align=center>';\r
14036 html += '<div class="dialog_title">'+title+'</div>';\r
14037 html += text_to_html(msg);\r
14038 html += '<br><br>';\r
14039 html += '<table><tr>';\r
14040 html += '<td>' + large_icon_button('check', 'Close', 'clear_notice()') + '</td>';\r
14041 html += '</tr></table>';\r
14042 html += '</td></tr></table>';\r
14043 session.hooks.keys[ENTER_KEY] = 'clear_notice'; \r
14044 session.hooks.keys[ESC_KEY] = 'clear_notice'; \r
14045 show_popup_dialog(400, 150, html);\r
14046 }\r
14047 function clear_error() {\r
14048 hide_popup_dialog();\r
14049 fire_hook('after_error');\r
14050 }\r
14051 function do_error(msg, button_args, pure) {\r
14052 hide_popup_dialog();\r
14053 delete session.progress;\r
14054 fire_hook('before_error');\r
14055 var html = '<table cellspacing=0 cellpadding=0><tr><td width=400 height=250 valign=center align=center>';\r
14056 html += '<img src="'+images_uri+'/icons/error.gif" width="33" height="32"><br>';\r
14057 html += '<span class="subtitle" style="color:#f00;">Sorry, an error occurred:</span><br><br>';\r
14058 html += '<div style="width:350px; height:150px; overflow-x:hidden; overflow-y:auto;">';\r
14059 html += pure ? msg : text_to_html(msg);\r
14060 html += '</div><br>';\r
14061 html += '<table><tr>';\r
14062 html += '<td>' + large_icon_button('check', 'Close', 'clear_error()') + '</td>';\r
14063 if (button_args) {\r
14064 html += '<td width=15>&nbsp;</td>';\r
14065 html += '<td>' + large_icon_button.apply(window, button_args) + '</td>';\r
14066 }\r
14067 html += '</tr></table>';\r
14068 html += '</td></tr></table>';\r
14069 session.hooks.keys[ENTER_KEY] = 'clear_error'; \r
14070 session.hooks.keys[ESC_KEY] = 'clear_error'; \r
14071 show_popup_dialog(400, 250, html);\r
14072 return null;\r
14073 }\r
14074 function show_progress_dialog(counter, title, remain_disp, button_args) {\r
14075 if (session.progress) {\r
14076 update_progress_dialog(counter, title);\r
14077 return;\r
14078 }\r
14079 if (!counter) counter = 0;\r
14080 var cx = Math.floor( counter * 196 );\r
14081 var html = '';\r
14082 html += '<center><br>';\r
14083 html += '<span id="d_progress_title" class="subtitle">' + title + '</span><br><br>';\r
14084 var opac_str = '';\r
14085 if (counter == 1.0) opac_str = 'opacity:0.5; moz-opacity:0.5; filter:alpha(opacity=50);';\r
14086 html += '<div style="position:relative; overflow:hidden; width:196px; height:20px; background-image:url('+images_uri+'/aquaprogressbar_bkgnd.gif);">';\r
14087 html += '<div id="d_progress_bar" style="position:absolute; left:0px; top:0px; width:196px; height:20px; clip:rect(0px '+cx+'px 20px 0px);'+opac_str+'">';\r
14088 html += '<img src="'+images_uri+'/aquaprogressbar.gif" width="196" height="20"/>';\r
14089 html += '</div>';\r
14090 html += '</div>';\r
14091 html += '<br><span id="d_progress_caption" class="caption"></span>';\r
14092 if (button_args) {\r
14093 html += '<br/><br/><table><tr><td>';\r
14094 html += large_icon_button.apply(window, button_args);\r
14095 html += '<br clear="all"/></td></tr></table>';\r
14096 }\r
14097 html += '</center>';\r
14098 show_popup_dialog(275, button_args ? 150 : 100, html);\r
14099 session.progress = {\r
14100 remain_disp: remain_disp,\r
14101 start_counter: counter,\r
14102 counter: counter,\r
14103 counter_max: 1,\r
14104 start_time: hires_time_now(),\r
14105 last_update: hires_time_now(),\r
14106 title: title\r
14107 };\r
14108 }\r
14109 function hide_progress_dialog() {\r
14110 hide_popup_dialog();\r
14111 session.progress = null;\r
14112 delete session.progress;\r
14113 }\r
14114 function update_progress_dialog(counter, title, caption) {\r
14115 var now = hires_time_now();\r
14116 var cx = Math.floor( counter * 196 );\r
14117 var prog_div = $('d_progress_bar');\r
14118 if (prog_div) {\r
14119 prog_div.style.clip = 'rect(0px '+cx+'px 20px 0px)';\r
14120 var opacity = (counter == 1.0) ? 0.5 : 1.0;\r
14121 if ((opacity > 0) && (opacity < 1.0)) {\r
14122 prog_div.style.opacity = opacity;\r
14123 if (moz) prog_div.style.MozOpacity = opacity;\r
14124 else if (ie) prog_div.style.filter = "alpha(opacity=" + parseInt(opacity * 100, 10) + ")";\r
14125 }\r
14126 else {\r
14127 prog_div.style.opacity = 1.0;\r
14128 if (moz) prog_div.style.MozOpacity = 1.0;\r
14129 else if (ie) prog_div.style.filter = "";\r
14130 }\r
14131 }\r
14132 if (title) session.progress.title = title;\r
14133 var title_div = $('d_progress_title');\r
14134 if (title_div) title_div.innerHTML = session.progress.title;\r
14135 if (caption) {\r
14136 var cap_div = $('d_progress_caption');\r
14137 if (cap_div) cap_div.innerHTML = caption;\r
14138 }\r
14139 else if (session.progress.remain_disp) {\r
14140 if (session.progress.start_time <= now - 5.0) {\r
14141 var caption = '';\r
14142 if ((counter > 0.0) && (counter < 1.0)) {\r
14143 caption = get_nice_remaining_time(session.progress.start_time, now, counter, 1.0, true);\r
14144 caption += ' remaining';\r
14145 }\r
14146 var cap_div = $('d_progress_caption');\r
14147 if (cap_div) cap_div.innerHTML = caption;\r
14148 }\r
14149\r
14150 session.progress.last_update = now;\r
14151 session.progress.counter = counter;\r
14152 }\r
14153 function safe_focus(id) {\r
14154 if ($(id)) {\r
14155 try { $(id).focus(); } catch (e) {;}\r
14156 }\r
14157 else setTimeout( "try { $('"+id+"').focus(); } catch (e) {;}", 1 );\r
14158 }\r
14159 function do_message(type, msg) {\r
14160 $GR.growl(type, msg);\r
14161 return;\r
14162 }\r
14163 function hide_message(id) {\r
14164 if (session.message_id == id) {\r
14165 if (ie) $('d_message').hide();\r
14166 else animate_div_visibility('d_message_wrapper', false);\r
14167 }\r
14168 }\r
14169 function menu( id, items, value, attribs ) {\r
14170 if (typeof(value) == 'undefined') value = null;\r
14171 var html = '<select name="'+id+'" id="'+id+'" '+compose_attribs(attribs)+'>';\r
14172 for (var idx = 0, len = items.length; idx < len; idx++) {\r
14173 var item = items[idx];\r
14174 if (typeof(item) != 'object') item = [ items[idx], items[idx] ];\r
14175 if (isa_array(item[0])) {\r
14176 var subitems = item[0];\r
14177 html += '<optgroup label="'+item[1]+'">';\r
14178 for (var idy = 0, ley = subitems.length; idy < ley; idy++) {\r
14179 var subitem = subitems[idy];\r
14180 if (typeof(subitem) != 'object') subitem = [ subitems[idy], subitems[idy] ];\r
14181 var selected = (subitem[0] == value) ? ' selected="selected"' : '';\r
14182 html += '<option value="'+subitem[0]+'"' + selected + '>' + subitem[1] + '</option>';\r
14183 }\r
14184 html += '</optgroup>';\r
14185 }\r
14186 else {\r
14187 var selected = (item[0] == value) ? ' selected="selected"' : '';\r
14188 html += '<option value="'+item[0]+'"' + selected + '>' + item[1] + '</option>';\r
14189 }\r
14190 }\r
14191 html += '</select>';\r
14192 return html;\r
14193 }\r
14194 function insert_date_selector(prefix, epoch) {\r
14195 var date = get_date_args(epoch);\r
14196 var html = '';\r
14197 html += menu( prefix + '_mon', months, date.mon );\r
14198 html += menu( prefix + '_mday', days, date.mday );\r
14199 html += menu( prefix + '_year', years, date.year );\r
14200 return html;\r
14201 }\r
14202 function set_menu_date( prefix, epoch ) {\r
14203 var date = get_date_args(epoch);\r
14204 var mon = $( prefix + '_mon' );\r
14205 if (mon) mon.selectedIndex = date.mon - 1;\r
14206 var mday = $( prefix + '_mday' );\r
14207 if (mday) mday.selectedIndex = date.mday - 1;\r
14208 var year = $( prefix + '_year' );\r
14209 if (year) year.selectedIndex = date.year - years[0][0];\r
14210 }\r
14211 function get_menu_date( prefix ) {\r
14212 var mon = get_menu_value( prefix + '_mon' );\r
14213 var mday = get_menu_value( prefix + '_mday' );\r
14214 var year = get_menu_value( prefix + '_year' );\r
14215 var date = new Date( year, mon - 1, mday, 0, 0, 0, 0 );\r
14216 return parseInt( date.getTime() / 1000, 10 );\r
14217 }\r
14218 function animate_div(id) {\r
14219 var div = $(id);\r
14220 if (!div) return alert("Cannot find div: " + id);\r
14221 div._timer = null;\r
14222 var target = div._state ? div.scrollHeight : 0;\r
14223 if (div._height != target) {\r
14224 div._height += ((target - div._height) / 4);\r
14225 if (Math.abs( target - div._height ) < 1.0) div._height = target;\r
14226 div.style.height = '' + div._height + 'px';\r
14227 if (div._mode == -1) div.scrollTop = div.scrollHeight;\r
14228 else div.scrollTop = 0;\r
14229 div._timer = setTimeout('animate_div("'+id+'");', 33);\r
14230 }\r
14231 else {\r
14232 if (div._state) {\r
14233 div.style.height = 'auto';\r
14234 }\r
14235 div.scrollTop = 0;\r
14236 }\r
14237 }\r
14238 function animate_div_visibility(id, visible) {\r
14239 var div = $(id);\r
14240 if (typeof(div._state) == 'undefined') {\r
14241 div._state = (div.style.display != 'none') ? true : false;\r
14242 div._height = div._state ? div.scrollHeight : 0;\r
14243 div.style.height = '' + (div._state ? 'auto' : '0px');\r
14244 div.style.overflow = 'hidden';\r
14245 div.scrollTop = 0;\r
14246 }\r
14247 else {\r
14248 div._height = div.offsetHeight;\r
14249 }\r
14250 div.show();\r
14251 div._state = visible;\r
14252 div._mode = -1; \r
14253 if (!div._timer) animate_div(id);\r
14254 var sc = document.getElementById('sc_' + id);\r
14255 if (sc) {\r
14256 var new_icon_name = visible ? 'arrow-down' : 'arrow-right';\r
14257 if (sc.src.indexOf('_mini') > -1) new_icon_name += '_mini';\r
14258 sc.src = images_uri + '/icons/' + new_icon_name + '.png';\r
14259 }\r
14260 if (visible && !div.innerHTML.length && div.getAttribute('onExpand')) \r
14261 eval( div.getAttribute('onExpand') );\r
14262 }\r
14263 function image_placeholder(text, width, height) {\r
14264 return '<table cellspacing="0" cellpadding="0" width="'+width+'" height="'+height+'"><tr><td bgcolor="#dddddd" align="center" valign="center"><b>'+text+'</b></td></tr></table>';\r
14265 }\r
14266 function bad_field(id, msg) {\r
14267 var field = $(id);\r
14268 field.addClass('control_bad');\r
14269 do_message("error", msg);\r
14270 try { field.focus(); } catch(e) {;}\r
14271 session.last_bad_field_id = id;\r
14272 return false;\r
14273 }\r
14274 function clear_field_error() {\r
14275 if (session.last_bad_field_id && $(session.last_bad_field_id)) $(session.last_bad_field_id).removeClass('control_bad');\r
14276 }\r
14277 function smart_sect_restore(sects, prefs) {\r
14278 if (!sects) sects = [];\r
14279 if (!prefs) prefs = {};\r
14280 for (var idx = 0, len = sects.length; idx < len; idx++) {\r
14281 var sect = sects[idx];\r
14282 if (typeof(prefs[sect]) == 'undefined') prefs[sect] = 1;\r
14283 if (prefs[sect] == 1) {\r
14284 $(sect).show();\r
14285 $(sect).style.height = '';\r
14286 $('ctl_'+sect).removeClass('closed');\r
14287 $('ctl_'+sect).addClass('open');\r
14288 }\r
14289 else {\r
14290 $(sect).hide();\r
14291 $('ctl_'+sect).removeClass('open');\r
14292 $('ctl_'+sect).addClass('closed');\r
14293 }\r
14294 }\r
14295 }\r
14296 function smart_sect_toggle(sect, prefs) {\r
14297 if (prefs[sect] == 0) {\r
14298 animate_div_visibility(sect, true);\r
14299 $('ctl_'+sect).removeClass('closed');\r
14300 $('ctl_'+sect).addClass('open');\r
14301 prefs[sect] = 1;\r
14302 }\r
14303 else {\r
14304 animate_div_visibility(sect, false);\r
14305 $('ctl_'+sect).removeClass('open');\r
14306 $('ctl_'+sect).addClass('closed');\r
14307 prefs[sect] = 0;\r
14308 }\r
14309 user_storage_mark();\r
14310 }\r
14311 function custom_fit(source_width, source_height, dest_width, dest_height) {\r
14312 var width = dest_width;\r
14313 var height = dest_height;\r
14314 if ((dest_width <= source_width) || (dest_height <= source_height)) {\r
14315 width = source_width;\r
14316 height = source_height;\r
14317 for (var idx = 0; idx < 2; idx++) {\r
14318 if (width - dest_width > height - dest_height) {\r
14319 if (width > dest_width) {\r
14320 height = Math.floor( height / (width / dest_width) );\r
14321 width = dest_width;\r
14322 }\r
14323 }\r
14324 else {\r
14325 if (height > dest_height) {\r
14326 width = Math.floor( width / (height / dest_height) );\r
14327 height = dest_height;\r
14328 }\r
14329 }\r
14330\r
14331 if (!width) width = 1;\r
14332 if (!height) height = 1;\r
14333 }\r
14334 return { width: width, height: height };\r
14335 }\r
14336 function fit_game_title(title) {\r
14337 return ww_fit_string(title, 550, session.em_width, 1);\r
14338 }\r
14339 function render_user_stats(stats) {\r
14340 var html = '';\r
14341 html += '<div class="article_info_floater">';\r
14342 html += '<div class="article_info_header">' + icon('chart_pie.png', 'User Stats') + '</div>';\r
14343 html += '<div class="stats_row"><b>Logins:</b>&nbsp;' + commify(stats.Logins || 0) + '</div>';\r
14344 html += '<div class="stats_row"><b>Articles:</b>&nbsp;' + commify(stats.Articles || 0) + '</div>';\r
14345 html += '<div class="stats_row"><b>Comments:</b>&nbsp;' + commify(stats.Comments || 0) + '</div>';\r
14346 html += '<div class="stats_row"><b>Games:</b>&nbsp;' + commify(stats.Games || 0) + '</div>';\r
14347 html += '</div>';\r
14348 return html;\r
14349 }\r
14350 function get_speech_bubble(color, content) {\r
14351 var bubble_uri = images_uri + '/speech_bubbles/' + color;\r
14352 var html = '';\r
14353 html += '<table cellspacing=0 cellpadding=0 border=0><tr>';\r
14354 html += '<td width="24" height="14"><img class="png" src="'+png(bubble_uri+'_tl.png', true)+'" width="24" height="14"/></td>';\r
14355 html += '<td width="*" height="14" class="png" background="'+png(bubble_uri+'_tm.png', true)+'">'+spacer(1,14)+'</td>';\r
14356 html += '<td width="24" height="14"><img class="png" src="'+png(bubble_uri+'_tr.png', true)+'" width="24" height="14"/></td>';\r
14357 html += '</tr><tr>';\r
14358 html += '<td width="24" height="*" class="png" background="'+png(bubble_uri+'_ml.png', true)+'">'+spacer(24,1)+'</td>';\r
14359 html += '<td width="*" height="*" class="png" background="'+png(bubble_uri+'_mi.png', true)+'">';\r
14360 html += '<div ';\r
14361 if (!ie6) {\r
14362 html += 'style="';\r
14363 if (!ie7) html += 'margin-left:-5px; margin-right:-5px; ';\r
14364 html += 'margin-top:-7px; margin-bottom:-7px; overflow:visible; position:relative;"';\r
14365 }\r
14366 html += '>';\r
14367 html += content;\r
14368 html += '</div></td>';\r
14369 html += '<td width="24" height="*" class="png" background="'+png(bubble_uri+'_mr.png', true)+'">'+spacer(24,1)+'</td>';\r
14370 html += '</tr><tr>';\r
14371 html += '<td width="24" height="17"><img class="png" src="'+png(bubble_uri+'_bl.png', true)+'" width="24" height="17"/></td>';\r
14372 html += '<td width="*" height="17" class="png" background="'+png(bubble_uri+'_bm.png', true)+'">'+spacer(1,17)+'</td>';\r
14373 html += '<td width="24" height="17"><img class="png" src="'+png(bubble_uri+'_br.png', true)+'" width="24" height="17"/></td>';\r
14374 html += '</tr></table>';\r
14375 return html;\r
14376 }\r
14377 function get_chat_balloon(color, username, chat_text) {\r
14378 var html = '<div class="chat_msg_bubble"><table><tr><th valign="bottom" onClick="Nav.go(\'User/'+username+'\')" style="cursor:pointer;" title="'+username+'">';\r
14379 html += get_buddy_icon_display(username, true, false);\r
14380 html += '</th>';\r
14381 var user_span = '';\r
14382 user_span += '<span class="chat_msg_text"';\r
14383 user_span += '>';\r
14384 user_span += chat_text;\r
14385 user_span += '</span>';\r
14386 html += '<td valign="bottom"';\r
14387 html += '>';\r
14388 html += get_speech_bubble( color, user_span );\r
14389 html += '</td></tr></table></div>';\r
14390 return html;\r
14391 }\r
14392 function bar(count, max, width) {\r
14393 if (!max) max = 1; \r
14394 var a_width = Math.floor( (count / max) * width );\r
14395 var b_width = Math.floor( ((max - count) / max) * width );\r
14396 var html = '';\r
14397 html += '<div style="width:'+width+'px; height:14px;">';\r
14398 html += '<div class="bar_inner" style="width:'+a_width+'px;">';\r
14399 html += '</div>';\r
14400 html += '</div>';\r
14401 return html;\r
14402 }\r
14403 function get_ticket_number_disp(num) {\r
14404 num = num.toString();\r
14405 return "#" + num;\r
14406 }\r
14407 function png(url, no_alpha_dither) {\r
14408 if (ie6 && url.match(/\.png/)) {\r
14409 if (url.match(/^images\//)) {\r
14410 url = url.replace(/^images\//, '/effect/api/image/');\r
14411 }\r
14412 else if (url.match(/^\/effect\/images\//)) {\r
14413 url = url.replace(/^\/effect\/images\//, '/effect/api/image/');\r
14414 }\r
14415 if (url.match(/\?/)) url += '&'; else url += '?';\r
14416 url += 'format=gif';\r
14417 if (no_alpha_dither) url += '&noalphadither=1';\r
14418 }\r
14419 return url;\r
14420 }\r
14421 var dblclick_threshold = 0.25;\r
14422 var SPACE_BAR = 32;\r
14423 var ENTER_KEY = 13;\r
14424 var ESC_KEY = 27;\r
14425 var DELETE_KEY = 8;\r
14426 var TAB_KEY = 9;\r
14427 var LEFT_ARROW = 37;\r
14428 var RIGHT_ARROW = 39;\r
14429 var UP_ARROW = 38;\r
14430 var DOWN_ARROW = 40;\r
14431 var mozKeyMap = {\r
14432 192: '~',\r
14433 187: '=',\r
14434 189: '-',\r
14435 111: '/',\r
14436 106: '*',\r
14437 109: '-',\r
14438 219: '[',\r
14439 221: ']',\r
14440 220: "\\",\r
14441 103: '7',\r
14442 104: '8',\r
14443 105: '9',\r
14444 107: '+',\r
14445 186: ':',\r
14446 222: '\'',\r
14447 100: '4',\r
14448 101: '5',\r
14449 102: '6',\r
14450 188: ',',\r
14451 190: '.',\r
14452 191: '/',\r
14453 97: '1',\r
14454 98: '2',\r
14455 99: '3',\r
14456 96: '0',\r
14457 110: '.'\r
14458 };\r
14459 var keyCodeTitleMap = {\r
14460 8: 'Backspace',\r
14461 9: 'Tab',\r
14462 27: 'Escape', \r
14463 32: 'Space',\r
14464 192: 'Tilde',\r
14465 187: 'Equals',\r
14466 189: 'Dash',\r
14467 45: 'Insert',\r
14468 36: 'Home',\r
14469 33: 'Page Up',\r
14470 144: 'Num Lock',\r
14471 111: 'Slash (Keypad)',\r
14472 106: 'Asterisk (Keypad)',\r
14473 109: 'Dash (Keypad)',\r
14474 219: 'Left Bracket',\r
14475 221: 'Right Bracket',\r
14476 220: "Backslash",\r
14477 46: 'Delete',\r
14478 35: 'End',\r
14479 34: 'Page Down',\r
14480 103: '7 (Keypad)',\r
14481 104: '8 (Keypad)',\r
14482 105: '9 (Keypad)',\r
14483 107: 'Plus (Keypad)',\r
14484 186: 'Semicolon',\r
14485 222: 'Quote',\r
14486 13: 'Enter',\r
14487 100: '4 (Keypad)',\r
14488 101: '5 (Keypad)',\r
14489 102: '6 (Keypad)',\r
14490 188: 'Comma',\r
14491 190: 'Period',\r
14492 191: 'Slash',\r
14493 38: 'Up Arrow',\r
14494 97: '1 (Keypad)',\r
14495 98: '2 (Keypad)',\r
14496 99: '3 (Keypad)',\r
14497 17: 'Control',\r
14498 37: 'Left Arrow',\r
14499 40: 'Down Arrow',\r
14500 39: 'Right Arrow',\r
14501 96: '0 (Keypad)',\r
14502 110: 'Period (Keypad)',\r
14503 16: 'Shift',\r
14504 18: 'Alt/Option',\r
14505 224: 'Meta/Cmd'\r
14506 };\r
14507 function get_nice_key_name(keyCode) {\r
14508 if (keyCodeTitleMap[keyCode]) return keyCodeTitleMap[keyCode];\r
14509 else {\r
14510 var ch = String.fromCharCode(keyCode);\r
14511 if ( ((keyCode >= 65) && (keyCode <= 90)) || ((keyCode >= 45) && (keyCode <= 57)) ) {\r
14512 return ch;\r
14513 }\r
14514 else {\r
14515 return 'Unknown (#' + keyCode + ')';\r
14516 }\r
14517 }       \r
14518 }\r
14519 function fix_key_code(keyCode) {\r
14520 switch (keyCode) {\r
14521 case 59: keyCode = 186; break; \r
14522 case 91:\r
14523 case 93: keyCode = 224; break; \r
14524 }\r
14525 return keyCode;\r
14526 }\r
14527 function get_mouse_coords(e, obj) {\r
14528 var pt = {};\r
14529 if (document.all) {\r
14530 pt.x = e.clientX;\r
14531 pt.y = e.clientY;\r
14532 }\r
14533 else {\r
14534 pt.x = e.pageX;\r
14535 pt.y = e.pageY;\r
14536 }\r
14537 if (obj) {\r
14538 var info = get_dom_object_info(obj);\r
14539 pt.x -= info.left;\r
14540 pt.y -= info.top;\r
14541 }\r
14542 return pt;\r
14543 }\r
14544 function get_dom_object_info(obj) {\r
14545 var info = {\r
14546 left: 0, \r
14547 top: 0, \r
14548 width: obj.width ? obj.width : obj.offsetWidth, \r
14549 height: obj.height ? obj.height : obj.offsetHeight\r
14550 };\r
14551 while (obj) {\r
14552 info.left += obj.offsetLeft;\r
14553 info.top += obj.offsetTop;\r
14554 obj = obj.offsetParent;\r
14555 }\r
14556 return info;\r
14557 }\r
14558 function delay_onChange_input_text(e) {\r
14559 if (!e) e = window.event;\r
14560 var ch = 0;\r
14561 if (e.keyCode) ch = e.keyCode;\r
14562 else if (e.which) ch = e.which;\r
14563 if (ch == 13) {\r
14564 if (this.getAttribute('onEnter')) invoke_dom_handler(this, 'onEnter');\r
14565 if (e.preventDefault) {\r
14566 e.preventDefault();\r
14567 e.stopPropagation();\r
14568 }\r
14569 else {\r
14570 e.returnValue = false;\r
14571 e.cancelBubble = true;\r
14572 }\r
14573 return false;\r
14574 }\r
14575 if (this.getAttribute('onChange')) {\r
14576 var obj = this;\r
14577 setTimeout( function() { invoke_dom_handler(obj, 'onChange'); }, 1 );\r
14578 }\r
14579 return true;\r
14580 }\r
14581 function delay_onChange_textarea() {\r
14582 if (this.getAttribute('onChange')) {\r
14583 var obj = this;\r
14584 setTimeout( function() { invoke_dom_handler(obj, 'onChange'); }, 1 );\r
14585 }\r
14586 return true;\r
14587 }\r
14588 function invoke_dom_handler(target, handlerName) {\r
14589 if (typeof(target[handlerName]) == 'function') return target[handlerName](); \r
14590 var handler = target.getAttribute(handlerName);\r
14591 if (!handler) return false;\r
14592 var code = handler.toString ? handler.toString() : handler;\r
14593 if (code.match(/^function\s+\w+\(\)/)) {\r
14594 code = code.substring( code.indexOf("{") + 1, code.lastIndexOf("}") ) + "\r;";\r
14595 }\r
14596 target['__temp'] = new Function( code );\r
14597 target['__temp']();\r
14598 }\r
14599 var received_mouse_down = false;\r
14600 var received_mouse_up = false;\r
14601 function pass_event_if(state, e) {\r
14602 if (!received_mouse_down || !received_mouse_up) return true;\r
14603 if (state) return true; \r
14604 else return stop_event(e);\r
14605 }\r
14606 function stop_event(e) {\r
14607 if (e.preventDefault) {\r
14608 e.preventDefault();\r
14609 e.stopPropagation();\r
14610 }\r
14611 else {\r
14612 e.returnValue = false;\r
14613 e.cancelBubble = true;\r
14614 }\r
14615 return false;\r
14616 }\r
14617 function stop_textarea_key_event(e) {\r
14618 if (!e) e = window.event;\r
14619 if (e && !e.metaKey && !e.ctrlKey) {\r
14620 return stop_event(e);\r
14621 }\r
14622 else return true;\r
14623 }\r
14624 var mouseObj = null; \r
14625 function app_mouse_down(e) {\r
14626 received_mouse_down = true;\r
14627 if (!e) e = window.event;\r
14628 if (window.session) session.mouseIsDown = true;\r
14629 if (window.session && session.progress) {\r
14630 stop_event(e);\r
14631 return false; \r
14632 }\r
14633 if (window.session) session.last_mouse_event = e;\r
14634 var targetObj = e.target ? e.target : e.srcElement;\r
14635 while (targetObj && !targetObj.tagName.match(/^(BODY|HTML)$/) && !targetObj.getAttribute('captureMouse') && !targetObj.captureMouse) {\r
14636 targetObj = targetObj.parentNode ? targetObj.parentNode : targetObj.parentElement;\r
14637 }\r
14638 if (targetObj && targetObj.getAttribute('captureMouse')) {\r
14639 var pt = get_mouse_coords(e, targetObj);\r
14640 mouseObj = targetObj;\r
14641 targetObj['__captureMouse'] = eval( 'window.' + targetObj.getAttribute('captureMouse') );\r
14642 if (!targetObj['__captureMouse']) return alert("captureMouse handler not found: " + targetObj.getAttribute('captureMouse'));\r
14643 var result = pass_event_if( targetObj.__captureMouse('mouseDown', e, pt), e );\r
14644 if (!result) return false; \r
14645 }\r
14646 else if (targetObj && targetObj.captureMouse) {\r
14647 var pt = get_mouse_coords(e, targetObj);\r
14648 mouseObj = targetObj;\r
14649 if (mouseObj.captureMouse.onMouseDown) {\r
14650 var handlers = always_array( mouseObj.captureMouse.onMouseDown );\r
14651 for (var idx = 0, len = handlers.length; idx < len; idx++) {\r
14652 var result = pass_event_if(\r
14653 (typeof(handlers[idx]) == 'function') ? \r
14654 handlers[idx].apply( mouseObj.captureMouse, [e, pt]) : \r
14655 window[handlers[idx]].apply( mouseObj.captureMouse, [e, pt]), \r
14656 e );\r
14657 if (!result) return false; \r
14658\r
14659\r
14660\r
14661 var pt = get_mouse_coords(e);\r
14662 if (window.session) {\r
14663 session.mousePt = pt;\r
14664 }\r
14665 return true; \r
14666 }\r
14667 function app_mouse_move(e) {\r
14668 if (!e) e = window.event;\r
14669 var globalPt = get_mouse_coords(e);\r
14670 if ((globalPt.x < 0) || (globalPt.y < 0)) return true;\r
14671 if (mouseObj && mouseObj.__captureMouse) {\r
14672 var pt = get_mouse_coords(e, mouseObj);\r
14673 var result = pass_event_if( mouseObj.__captureMouse('mouseMove', e, pt), e );\r
14674 if (!result) return false; \r
14675 }\r
14676 else if (mouseObj && mouseObj.captureMouse && mouseObj.captureMouse.onMouseMove) {\r
14677 var pt = get_mouse_coords(e, mouseObj);\r
14678 var handlers = always_array( mouseObj.captureMouse.onMouseMove );\r
14679 for (var idx = 0, len = handlers.length; idx < len; idx++) {\r
14680 var result = pass_event_if( \r
14681 (typeof(handlers[idx]) == 'function') ? \r
14682 handlers[idx].apply( mouseObj.captureMouse, [e, pt]) : \r
14683 window[handlers[idx]].apply( mouseObj.captureMouse, [e, pt]), \r
14684 e );\r
14685 if (!result) return false; \r
14686\r
14687\r
14688 if (window.session) session.mousePt = globalPt;\r
14689 safe_call('notify_mouse_move', e);\r
14690 return true; \r
14691 }\r
14692 function app_mouse_up(e) {\r
14693 received_mouse_up = true;\r
14694 if (!e) e = window.event;\r
14695 if (window.session) session.last_mouse_event = e;\r
14696 if (window.session) session.mouseIsDown = false;\r
14697 var globalPt = get_mouse_coords(e);\r
14698 if (mouseObj && mouseObj.__captureMouse) {\r
14699 var pt = get_mouse_coords(e, mouseObj);\r
14700 var result = pass_event_if( mouseObj.__captureMouse('mouseUp', e, pt), e );\r
14701 if (1 || ((pt.x >= 0) && (pt.y >= 0) && (pt.x < mouseObj.offsetWidth) && (pt.y < mouseObj.offsetHeight))) {\r
14702 if (mouseObj.__lastClick && (mouseObj.__lastClick > hires_time_now() - dblclick_threshold))\r
14703 result = pass_event_if( mouseObj.__captureMouse('doubleClick', e, pt), e );\r
14704 else\r
14705 result = pass_event_if( mouseObj.__captureMouse('click', e, pt), e );\r
14706 mouseObj.__lastClick = hires_time_now();\r
14707 }\r
14708 mouseObj = null;\r
14709 if (!result) return false; \r
14710 }\r
14711 else if (mouseObj && mouseObj.captureMouse) {\r
14712 var pt = get_mouse_coords(e, mouseObj);\r
14713 var result = true;\r
14714 var handlers = mouseObj.captureMouse.onMouseUp ? always_array( mouseObj.captureMouse.onMouseUp ) : [];\r
14715 var capMouse = mouseObj.captureMouse;\r
14716 mouseObj = null;\r
14717 for (var idx = 0, len = handlers.length; idx < len; idx++) {\r
14718 var result = (typeof(handlers[idx]) == 'function') ? \r
14719 handlers[idx].apply( capMouse, [e, pt]) : \r
14720 window[handlers[idx]].apply( capMouse, [e, pt]);\r
14721 if (!result) return stop_event(e);\r
14722 }\r
14723 if (!result) return false; \r
14724 }\r
14725 if (window.session) session.mousePt = globalPt;\r
14726 return true;\r
14727 }\r
14728 function ie_dblclick(e) {\r
14729 if (!e) e = window.event;\r
14730 app_mouse_down(e);\r
14731 return app_mouse_up(e);\r
14732 }\r
14733 function app_key_down(e) {\r
14734 if (!e) e = window.event;\r
14735 if (window.session) session.last_key_event = e;\r
14736 var ch = fix_key_code( e.keyCode );\r
14737 if (window.session && session.hooks.keys[ch]) {\r
14738 var func = session.hooks.keys[ch];\r
14739 delete session.hooks.keys[ch];\r
14740 var result = pass_event_if( isa_array(func) ? func[0][ func[1] ](func[2]) : window[func](), e );\r
14741 return result;\r
14742 }\r
14743 var result = pass_event_if( fire_hook('key_down', e), e );\r
14744 if (!result) return false;\r
14745 safe_call('notify_key_down', e);\r
14746 return true;\r
14747 }\r
14748 function app_key_up(e) {\r
14749 if (!e) e = window.event;\r
14750 if (window.session) session.last_key_event = e;\r
14751 var ch = fix_key_code( e.keyCode );\r
14752 var result = pass_event_if( fire_hook('key_up', e), e );\r
14753 if (!result) return false;\r
14754 return true;\r
14755 }\r
14756 if (!window.no_hooky) {\r
14757 if (window.addEventListener) {\r
14758 window.addEventListener( 'mousedown', app_mouse_down, false );\r
14759 window.addEventListener( 'mousemove', app_mouse_move, false );\r
14760 window.addEventListener( 'mouseup', app_mouse_up, false );\r
14761 window.addEventListener( 'keydown', app_key_down, false );\r
14762 window.addEventListener( 'keyup', app_key_up, false );\r
14763 }\r
14764 else {\r
14765 if (document.captureEvents) {\r
14766 document.captureEvents(Event.MOUSEDOWN);\r
14767 document.captureEvents(Event.MOUSEMOVE);\r
14768 document.captureEvents(Event.MOUSEUP);\r
14769 document.captureEvents(Event.KEYDOWN);\r
14770 document.captureEvents(Event.KEYUP);\r
14771 }\r
14772 var body = document.body ? document.body : document.getElementsByTagName('body')[0];\r
14773 if (!body) body = {};\r
14774 window.onmousedown = document.onmousedown = body.onmousedown = app_mouse_down;\r
14775 window.onmousemove = document.onmousemove = body.onmousemove = app_mouse_move;\r
14776 window.onmouseup = document.onmouseup = body.onmouseup = app_mouse_up;\r
14777 parent.onkeydown = window.onkeydown = document.onkeydown = app_key_down;\r
14778 parent.onkeyup = window.onkeyup = document.onkeyup = app_key_up;\r
14779 if (ie) {\r
14780 window.ondblclick = document.ondblclick = body.ondblclick = ie_dblclick;\r
14781 }\r
14782 }\r
14783 }\r
14784 var webcam_callback = null;\r
14785 function get_webcam_html(width, height) {\r
14786 var html = '';\r
14787 if (ie) {\r
14788 html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="webcam" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="false" /><param name="movie" value="webcam.swf" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" />   </object>';\r
14789 }\r
14790 else {\r
14791 html += '<embed id="webcam" src="webcam.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="webcam" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';\r
14792 }\r
14793 return html;\r
14794 }\r
14795 function webcam_snap(url, callback) {\r
14796 if (callback) webcam_callback = callback;\r
14797 else webcam_callback = null;\r
14798 Debug.trace('webcam', 'Sending snapshot to: ' + url);\r
14799 session.webcam_in_progress = true;\r
14800 var movie = $('webcam');\r
14801 movie._snap( url );\r
14802 }\r
14803 function webcam_configure(panel) {\r
14804 if (!panel) panel = "camera";\r
14805 var movie = $('webcam');\r
14806 movie._configure(panel);\r
14807 }\r
14808 function webcam_flash_notify(type, msg) {\r
14809 Debug.trace('webcam', 'Flash Notify: ' + type);\r
14810 switch (type) {\r
14811 case 'flashLoadComplete':\r
14812 session.webcam_loaded = true;\r
14813 safe_call('notify_webcam_loaded');\r
14814 if (!session.cookie.get('wbfuse')) {\r
14815 webcam_configure();\r
14816 session.cookie.set('wbfuse', 1);\r
14817 session.cookie.save();\r
14818 }\r
14819 break;\r
14820 case 'debug':\r
14821 alert("Flash Debug: " + msg);\r
14822 break;\r
14823 case 'error':\r
14824 alert("Flash Error: " + msg);\r
14825 session.webcam_in_progress = false;\r
14826 break;\r
14827 case 'success':\r
14828 session.webcam_in_progress = false;\r
14829 if (webcam_callback) window[webcam_callback](msg);\r
14830 break;\r
14831 default:\r
14832 alert("webcam_flash_notify: " + type + ": " + msg);\r
14833 break;\r
14834 }\r
14835 }\r
14836 var zero_client;\r
14837 function uploadQueueStart(client, stats) {\r
14838 Debug.trace('upload', "Upload queue starting now");\r
14839 show_progress_dialog( 0, 'Starting Upload...', true );\r
14840 session.upload_in_progress = 1;\r
14841 }\r
14842 function uploadFileStart(client, stats) {\r
14843 Debug.trace('upload', "Upload file starting now");\r
14844 update_progress_dialog(stats.progress, "Uploading file " + stats.currentFileNum + " of " + stats.numFiles + "...");\r
14845 }\r
14846 function uploadProgress(client, stats) {\r
14847 update_progress_dialog(stats.progress);\r
14848 }\r
14849 function uploadFileComplete(client, stats) {\r
14850 Debug.trace('upload', "Upload file complete");\r
14851 update_progress_dialog(stats.progress);\r
14852 }\r
14853 function uploadQueueComplete() {\r
14854 Debug.trace('upload', "Upload queue complete");\r
14855 session.upload_in_progress = 0;\r
14856 update_progress_dialog(1.0);\r
14857 fire_callback( session.upload_callback );\r
14858 }\r
14859 function uploadError(client, msg) {\r
14860 session.upload_in_progress = 0;\r
14861 do_error("Upload Error: " + msg);\r
14862 }\r
14863 function upload_basic() {\r
14864 hide_popup_dialog();\r
14865 delete session.progress;\r
14866 var html = '';\r
14867 html += '<iframe id="i_upload_basic" src="blank.html" style="position:absolute; left:-2000px; top:0px; width:1px; height:1px;"></iframe>';\r
14868 html += '<div class="dialog_bkgnd" style="background-image:url('+png('/effect/images/big_icons/upload.png')+')">';\r
14869 html += '<table cellspacing=0 cellpadding=0><tr><td width=400 height=200 valign=center align=center>';\r
14870 html += '<div class="dialog_title">Upload File</div>';\r
14871 html += '<div class="caption">Want to upload multiple files at once?  Please upgrade to the latest <a href="http://www.adobe.com/products/flashplayer/" target="_blank">Flash Player</a>, then reload this page.  For some reason our Flash based uploader did not load, so you are currently using our single file uploader.</div>';\r
14872 html += spacer(1,20) + '<br/>';\r
14873 var url = zero_client.targetURL;\r
14874 if (url.indexOf('?') > -1) url += '&'; else url += '?';\r
14875 url += 'format=jshtml&onafter=' + escape('window.parent.upload_basic_finish(response);');\r
14876 Debug.trace('upload', "Prepping basic upload: " + url);\r
14877 html += '<form id="f_upload_basic" method="post" enctype="multipart/form-data" target="i_upload_basic" action="'+url+'">';\r
14878 html += '<div id="d_upload_form">';\r
14879 html += '<input type="file" name="Filedata"/><br/>';\r
14880 html += '<br><br><table><tr>';\r
14881 html += '<td>' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + '</td>';\r
14882 html += '<td width=50>&nbsp;</td>';\r
14883 html += '<td>' + large_icon_button('page_white_get.png', '<b>Upload</b>', "upload_basic_go()") + '</td>';\r
14884 html += '</tr></table>';\r
14885 html += '</div>';\r
14886 html += '<div id="d_upload_progress" style="display:none">';\r
14887 html += '<img src="'+images_uri+'/aquaprogressbar.gif" width="196" height="20"/>';\r
14888 html += '</div>';\r
14889 html += '</form>';\r
14890 html += '</div>';\r
14891 session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; \r
14892 show_popup_dialog(528, 200, html);\r
14893 }\r
14894 function upload_basic_go() {\r
14895 $('f_upload_basic').submit();\r
14896 $('d_upload_form').hide();\r
14897 $('d_upload_progress').show();\r
14898 }\r
14899 function upload_basic_finish(response) {\r
14900 Debug.trace('upload', "Basic upload complete: " + dumper(response));\r
14901 setTimeout( 'upload_basic_finish_2()', 100 );\r
14902 }\r
14903 function upload_basic_finish_2() {\r
14904 $('i_upload_basic').src = 'blank.html';\r
14905 setTimeout( 'upload_basic_finish_3()', 100 );\r
14906 }\r
14907 function upload_basic_finish_3() {\r
14908 hide_popup_dialog();\r
14909 delete session.progress;\r
14910 show_progress_dialog( 0, 'Finishing Upload...', true );\r
14911 fire_callback( session.upload_callback );\r
14912 }\r
14913 function upload_destroy() {\r
14914 if (zero_client) {\r
14915 zero_client.destroy();\r
14916 delete ZeroUpload.clients[ zero_client.id ];\r
14917 zero_client = null;\r
14918 }\r
14919 }\r
14920 function prep_upload(dom_id, url, callback, types) {\r
14921 session.upload_callback = callback;\r
14922 if (url) {\r
14923 if (url.indexOf('?') > -1) url += '&'; else url += '?';\r
14924 url += 'session=' + session.cookie.get('effect_session_id');\r
14925 }\r
14926 upload_destroy();\r
14927 zero_client = new ZeroUpload.Client();\r
14928 if (url) zero_client.setURL( url );\r
14929 zero_client.setHandCursor( true );\r
14930 if (types) zero_client.setFileTypes( types[0], types[1] );\r
14931 zero_client.addEventListener( 'queueStart', uploadQueueStart );\r
14932 zero_client.addEventListener( 'fileStart', uploadFileStart );\r
14933 zero_client.addEventListener( 'progress', uploadProgress );\r
14934 zero_client.addEventListener( 'fileComplete', uploadFileComplete );\r
14935 zero_client.addEventListener( 'queueComplete', uploadQueueComplete );\r
14936 zero_client.addEventListener( 'error', uploadError );\r
14937 zero_client.addEventListener( 'debug', function(client, eventName, args) {\r
14938 Debug.trace('upload', "Caught event: " + eventName);\r
14939 } );\r
14940 if (dom_id) {\r
14941 Debug.trace('upload', "Gluing ZeroUpload to: " + dom_id);\r
14942 zero_client.glue( dom_id );\r
14943 }\r
14944 }\r
14945 Class.create( 'Debug', {\r
14946 __static: {\r
14947 enabled: false,\r
14948 categories: { all: 1 }, \r
14949 buffer: [], \r
14950 max_rows: 5000, \r
14951 win: null, \r
14952 ie: !!navigator.userAgent.match(/MSIE/),\r
14953 ie6: !!navigator.userAgent.match(/MSIE\D+6/),\r
14954 init: function() {\r
14955 Debug.enabled = true;\r
14956 Debug.trace( 'debug', 'Debug log start' );\r
14957 var html = '<p align="right"><input type="button" value="Debug..." onClick="Debug.show()"/></p>';\r
14958 if (Debug.ie) {\r
14959 setTimeout( function() {\r
14960 document.body.insertAdjacentHTML('beforeEnd',\r
14961 '<div id="d_debug" style="position:absolute; z-index:101; left:0px; top:0px; width:100%;">' + html + '</div>'\r
14962 );\r
14963 }, 1000 );\r
14964 }\r
14965 else {\r
14966 var div = document.createElement('DIV');\r
14967 div.id = 'd_debug';\r
14968 div.setAttribute('id', 'd_debug');\r
14969 div.style.position = Debug.ie6 ? 'absolute' : 'fixed';\r
14970 div.style.zIndex = '101';\r
14971 div.style.left = '0px';\r
14972 div.style.top = '0px';\r
14973 div.style.width = '100%';\r
14974 div.innerHTML = html;\r
14975 document.getElementsByTagName('body')[0].appendChild(div);\r
14976 }\r
14977 },\r
14978 show: function() {\r
14979 if (!Debug.win || Debug.win.closed) {\r
14980 Debug.trace('debug', "Opening debug window");\r
14981 Debug.win = window.open( '', 'DebugWindow', 'width=600,height=500,menubar=no,resizable=yes,scrollbars=yes,location=no,status=no,toolbar=no,directories=no' );\r
14982 if (!Debug.win) return alert("Failed to open window.  Popup blocker maybe?");\r
14983 var doc = Debug.win.document;\r
14984 doc.open();\r
14985 doc.writeln( '<html><head><title>Debug Log</title></head><body onLoad="window.opener.Debug.refresh_console()">' );\r
14986 doc.writeln( '<div id="d_debug_log"></div>' );\r
14987 doc.writeln( '<hr/>' );\r
14988 doc.writeln( '<form action="javascript:void(window.opener.Debug.console_execute())" style="margin:0; padding:0;"><table width="100%"><tr>' );\r
14989 doc.writeln( '<td width="*"><input type="text" id="fe_command" style="width:100%;"/></td>' );\r
14990 doc.writeln( '<td width="50"><input type=button value="Clear" onClick="document.getElementById(\'d_debug_log\').innerHTML = \'\';"/></td>' );\r
14991 doc.writeln( '</tr></table></form>' );\r
14992 doc.writeln( '</body></html>' );\r
14993 doc.close();\r
14994 }\r
14995 Debug.win.focus();\r
14996 },\r
14997 console_execute: function() {\r
14998 var cmd = Debug.win.document.getElementById('fe_command');\r
14999 if (cmd.value.length) {\r
15000 Debug.trace( 'console', cmd.value );\r
15001 try {\r
15002 Debug.trace( 'console', '' + eval(cmd.value) );\r
15003 }\r
15004 catch (e) {\r
15005 Debug.trace( 'error', 'JavaScript Interpreter Exception: ' + e.toString() );\r
15006 }\r
15007 }\r
15008 },\r
15009 get_time_stamp: function(now) {\r
15010 var date = new Date( now * 1000 );\r
15011 var hh = date.getHours(); if (hh < 10) hh = "0" + hh;\r
15012 var mi = date.getMinutes(); if (mi < 10) mi = "0" + mi;\r
15013 var ss = date.getSeconds(); if (ss < 10) ss = "0" + ss;\r
15014 var sss = '' + date.getMilliseconds(); while (sss.length < 3) sss = "0" + sss;\r
15015 return '' + hh + ':' + mi + ':' + ss + '.' + sss;\r
15016 },\r
15017 refresh_console: function() {\r
15018 if (!Debug.win || Debug.win.closed) return;\r
15019 var div = Debug.win.document.getElementById('d_debug_log');\r
15020 if (div) {\r
15021 var row = null;\r
15022 while ( row = Debug.buffer.shift() ) {\r
15023 var time_stamp = Debug.get_time_stamp(row.time);\r
15024 var msg = row.msg;\r
15025 msg = msg.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;");\r
15026 msg = msg.replace(/</g, "&lt;");\r
15027 msg = msg.replace(/>/g, "&gt;");\r
15028 msg = msg.replace(/\n/g, "<br>\n");\r
15029 var html = '';\r
15030 var sty = 'float:left; font-family: Consolas, Courier, mono; font-size: 12px; cursor:default; margin-right:10px; margin-bottom:1px; padding:2px;';\r
15031 html += '<div style="'+sty+' background-color:#eee;">' + time_stamp + '</div>';\r
15032 html += '<div style="'+sty+' background-color:#eee; width:60px; overflow:hidden;">' + row.cat + '</div>';\r
15033 html += '<div style="'+sty+' background-color:#fff; word-break:break-all;">' + msg + '</div>';\r
15034 html += '<br clear="all"/>';\r
15035 var chunk = Debug.win.document.createElement('DIV');\r
15036 chunk.style['float'] = 'none';\r
15037 chunk.innerHTML = html;\r
15038 div.appendChild(chunk);\r
15039 }\r
15040 var cmd = Debug.win.document.getElementById('fe_command');\r
15041 cmd.focus();\r
15042\r
15043 Debug.dirty = 0;\r
15044 Debug.win.scrollTo(0, 99999);\r
15045 },\r
15046 hires_time_now: function() {\r
15047 var now = new Date();\r
15048 return ( now.getTime() / 1000 );\r
15049 },\r
15050 trace: function(cat, msg) {\r
15051 if (arguments.length == 1) {\r
15052 msg = cat;\r
15053 cat = 'debug';\r
15054 }\r
15055 if (Debug.categories.all || Debug.categories[cat]) {\r
15056 Debug.buffer.push({ cat: cat, msg: msg, time: Debug.hires_time_now() });\r
15057 if (Debug.buffer.length > Debug.max_rows) Debug.buffer.shift();\r
15058 if (!Debug.dirty) {\r
15059 Debug.dirty = 1; \r
15060 setTimeout( 'Debug.refresh_console();', 1 );\r
15061 }\r
15062 }\r
15063 }\r
15064\r
15065 } ); \r
15066 var session = {\r
15067 inited: false,\r
15068 api_mod_cache: {},\r
15069 query: parseQueryString( ''+location.search ),\r
15070 cookie: new CookieTree({ path: '/effect/' }),\r
15071 storage: {},\r
15072 storage_dirty: false,\r
15073 hooks: {\r
15074 keys: {}\r
15075 },\r
15076 username: '',\r
15077 em_width: 11,\r
15078 audioResourceMatch: /\.mp3$/i,\r
15079 imageResourceMatch: /\.(jpe|jpeg|jpg|png|gif)$/i,\r
15080 textResourceMatch: /\.xml$/i,\r
15081 movieResourceMatch: /\.(flv|mp4|mp4v|mov|3gp|3g2)$/i,\r
15082 imageResourceMatchString: '\.(jpe|jpeg|jpg|png|gif)$'\r
15083 };\r
15084 session.debug = session.query.debug ? true : false;\r
15085 var page_manager = null;\r
15086 var preload_icons = [];\r
15087 var preload_images = [\r
15088 'loading.gif',\r
15089 'aquaprogressbar.gif', \r
15090 'aquaprogressbar_bkgnd.gif'\r
15091 ];\r
15092 function get_base_url() {\r
15093 return protocol + '://' + location.hostname + session.config.BaseURI;\r
15094 }\r
15095 function effect_init() {\r
15096 if (session.inited) return;\r
15097 session.inited = true;\r
15098 assert( window.config, "Config not loaded" );\r
15099 session.config = window.config;\r
15100 Debug.trace("Starting up");\r
15101 rendering_page = false;\r
15102 preload();\r
15103 window.$R = {};\r
15104 for (var key in config.RegExpShortcuts) {\r
15105 $R[key] = new RegExp( config.RegExpShortcuts[key] );\r
15106 }\r
15107 ww_precalc_font("body", "effect_precalc_font_finish");\r
15108 page_manager = new Effect.PageManager( config.Pages.Page );\r
15109 var session_id = session.cookie.get('effect_session_id');\r
15110 if (session_id && session_id.match(/^login/)) {\r
15111 do_session_recover();\r
15112 }\r
15113 else {\r
15114 show_default_login_status();\r
15115 Nav.init();\r
15116 }\r
15117 Blog.search({\r
15118 stag: 'sidebar_docs',\r
15119 limit: 20,\r
15120 title_only: true,\r
15121 sort_by: 'seq',\r
15122 sort_dir: -1,\r
15123 target: 'd_sidebar_documents',\r
15124 outer_div_class: 'sidebar_blog_row',\r
15125 title_class: 'sidebar_blog_title',\r
15126 after: '<div class="sidebar_see_more">&rarr; <a href="#ArticleCategory/docs">See More...</a></div>'\r
15127 });\r
15128 Blog.search({\r
15129 stag: 'sidebar_tutorials',\r
15130 limit: 5,\r
15131 title_only: true,\r
15132 sort_by: 'seq',\r
15133 sort_dir: -1,\r
15134 target: 'd_sidebar_tutorials',\r
15135 outer_div_class: 'sidebar_blog_row',\r
15136 title_class: 'sidebar_blog_title',\r
15137 after: '<div class="sidebar_see_more">&rarr; <a href="#ArticleCategory/tutorials">See More...</a></div>'\r
15138 });\r
15139 Blog.search({\r
15140 stag: 'sidebar_plugins',\r
15141 limit: 5,\r
15142 title_only: true,\r
15143 sort_by: 'seq',\r
15144 sort_dir: -1,\r
15145 target: 'd_sidebar_plugins',\r
15146 outer_div_class: 'sidebar_blog_row',\r
15147 title_class: 'sidebar_blog_title',\r
15148 after: '<div class="sidebar_see_more">&rarr; <a href="#ArticleCategory/plugins">See More...</a></div>'\r
15149 });\r
15150 $('fe_search_bar').onkeydown = delay_onChange_input_text;\r
15151 user_storage_idle();\r
15152 }\r
15153 function effect_precalc_font_finish(width, height) {\r
15154 session.em_width = width;\r
15155 }\r
15156 function preload() {\r
15157 for (var idx = 0, len = preload_icons.length; idx < len; idx++) {\r
15158 var url = images_uri + '/icons/' + preload_icons[idx] + '.gif';\r
15159 preload_icons[idx] = new Image();\r
15160 preload_icons[idx].src = url;\r
15161 }\r
15162 for (var idx = 0, len = preload_images.length; idx < len; idx++) {\r
15163 var url = images_uri + '/' + preload_images[idx];\r
15164 preload_images[idx] = new Image();\r
15165 preload_images[idx].src = url;\r
15166 }\r
15167 }\r
15168 function $P(id) {\r
15169 if (!id) id = page_manager.current_page_id;\r
15170 var page = page_manager.find(id);\r
15171 assert( !!page, "Failed to locate page: " + id );\r
15172 return page;\r
15173 }\r
15174 function get_pref(name) {\r
15175 if (!session.user || !session.user.Preferences) return alert("ASSERT FAILURE!  Tried to lookup pref " + name + " and user is not yet loaded!");\r
15176 return session.user.Preferences[name];\r
15177 }\r
15178 function get_bool_pref(name) {\r
15179 return (get_pref(name) == 1);\r
15180 }\r
15181 function set_pref(name, value) {\r
15182 session.user.Preferences[name] = value;\r
15183 }\r
15184 function set_bool_pref(name, value) {\r
15185 set_pref(name, value ? '1' : '0');\r
15186 }\r
15187 function save_prefs() {\r
15188 var prefs_to_save = {};\r
15189 if (arguments.length) {\r
15190 for (var idx = 0, len = arguments.length; idx < len; idx++) {\r
15191 var key = arguments[idx];\r
15192 prefs_to_save[key] = get_pref(key);\r
15193 }\r
15194 }\r
15195 else prefs_to_save = session.user.Preferences;\r
15196 effect_api_mod_touch('user_get');\r
15197 effect_api_send('user_update', {\r
15198 Username: session.username,\r
15199 Preferences: prefs_to_save\r
15200 }, 'save_prefs_2');\r
15201 }\r
15202 function save_prefs_2(response) {\r
15203 do_message('success', 'Preferences saved.');\r
15204 }\r
15205 \r
15206 function get_full_name(username) {\r
15207 var user = session.users[username];\r
15208 if (!user) return username;\r
15209 return user.FullName;\r
15210 }\r
15211 function get_buddy_icon_url(username, size) {\r
15212 var mod = session.api_mod_cache.get_buddy_icon || 0;\r
15213 if (!size) size = 32;\r
15214 var url = '/effect/api/get_buddy_icon?username='+username + '&mod=' + mod + '&size=' + size;\r
15215 return url;\r
15216 }\r
15217 function get_buddy_icon_display(username, show_icon, show_name) {\r
15218 if ((typeof(show_icon) == 'undefined') && get_bool_pref('show_user_icons')) show_icon = 1;\r
15219 if ((typeof(show_name) == 'undefined') && get_bool_pref('show_user_names')) show_name = 1;\r
15220 var html = '';\r
15221 if (show_icon) html += '<img class="png" src="'+get_buddy_icon_url(username)+'" width="32" height="32" border="0"/>';\r
15222 if (show_icon && show_name) html += '<br/>';\r
15223 if (show_name) html += username;\r
15224 return html;\r
15225 }\r
15226 function do_session_recover() {\r
15227 session.hooks.after_error = 'do_logout';\r
15228 effect_api_send('session_recover', {}, 'do_login_2', { _from_recover: 1 } );\r
15229 }\r
15230 function require_login() {\r
15231 if (session.user) return true;\r
15232 Debug.trace('Page requires login, showing login page');\r
15233 session.nav_after_login = Nav.currentAnchor();\r
15234 setTimeout( function() {\r
15235 Nav.go( 'Login' );\r
15236 }, 1 );\r
15237 return false;\r
15238 }\r
15239 function popup_window(url, name) {\r
15240 if (!url) url = '';\r
15241 if (!name) name = '';\r
15242 var win = window.open(url, name);\r
15243 if (!win) return alert('Failed to open popup window.  If you have a popup blocker, please disable it for this website and try again.');\r
15244 return win;\r
15245 }\r
15246 function do_login_prompt() {\r
15247 hide_popup_dialog();\r
15248 delete session.progress;\r
15249 if (!session.temp_password) session.temp_password = ''; \r
15250 if (!session.username) session.username = '';\r
15251 var temp_username = session.open_id || session.username || '';\r
15252 var html = '';\r
15253 html += '<div class="dialog_bkgnd" style="background-image:url('+png('images/big_icons/key.png')+')">';\r
15254 html += '<table cellspacing=0 cellpadding=0><tr><td width=450 height=225 valign=center align=center>';\r
15255 html += '<div class="dialog_title">Effect Developer Login</div>';\r
15256 html += '<form method=get action="javascript:void(0)"><table cellspacing="0" cellpadding="0"><tr><td align="left">';\r
15257 html += '<div class="fe_label"><table cellspacing="0" cellpadding="0"><tr><td>Effect Username&nbsp;&nbsp;or&nbsp;&nbsp;</td><td>'+icon('openid', 'OpenID', 'popup_window(\'http://openid.net/\')', 'What is OpenID?')+'</td></tr></table></div><input type=text class="fe_big" id="fe_username" size=20 value="'+temp_username+'"><br><br>';\r
15258 html += '<input type=checkbox id="fe_auto_login" value="1"><label for="fe_auto_login"><span class="fe_label">Keep me logged in</span></label><br>';\r
15259 html += '</td></tr></table>';\r
15260 html += '<br><br><table><tr>';\r
15261 html += '<td>' + large_icon_button('x', 'Cancel', "clear_login()") + '</td>';\r
15262 html += '<td width=30>&nbsp;</td>';\r
15263 html += '<td>' + large_icon_button('check', '<b>Login</b>', 'do_login()') + '</td>';\r
15264 html += '</tr></table>';\r
15265 html += '</form>';\r
15266 html += '</div>';\r
15267 session.hooks.keys[ENTER_KEY] = 'do_login'; \r
15268 session.hooks.keys[ESC_KEY] = 'clear_login'; \r
15269 safe_focus( 'fe_username' );\r
15270 show_popup_dialog(450, 225, html);\r
15271 }\r
15272 function do_openid_reg(title, auto_login_button) {\r
15273 hide_popup_dialog();\r
15274 delete session.progress;\r
15275 if (!title) title = 'Register Account Using OpenID';\r
15276 if (typeof(auto_login_button) == 'undefined') auto_login_button = 1;\r
15277 var html = '';\r
15278 html += '<div class="dialog_bkgnd" style="background-image:url('+png('images/big_icons/openid.png')+')">';\r
15279 html += '<table cellspacing=0 cellpadding=0><tr><td width=450 height=225 valign=center align=center>';\r
15280 html += '<div class="dialog_title">'+title+'</div>';\r
15281 html += '<form method=get action="javascript:void(0)"><table cellspacing="0" cellpadding="0"><tr><td align="left">';\r
15282 html += '<div class="fe_label"><table cellspacing="0" cellpadding="0"><tr><td>'+icon('openid', 'Enter Your OpenID URL:')+'</td></tr></table></div><input type=text class="fe_big" id="fe_username" size=20 value="">';\r
15283 if (auto_login_button) html += '<br><br><input type=checkbox id="fe_auto_login" value="1"><label for="fe_auto_login"><span class="fe_label">Keep me logged in</span></label><br>';\r
15284 html += '</td></tr></table>';\r
15285 html += '<br><br><table><tr>';\r
15286 html += '<td>' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + '</td>';\r
15287 html += '<td width=30>&nbsp;</td>';\r
15288 html += '<td>' + large_icon_button('check', title.match(/login/i) ? '<b>Login</b>' : '<b>Register</b>', 'do_openid_login()') + '</td>';\r
15289 html += '</tr></table>';\r
15290 html += '</form>';\r
15291 html += '</div>';\r
15292 session.hooks.keys[ENTER_KEY] = 'do_openid_login'; \r
15293 session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; \r
15294 safe_focus( 'fe_username' );\r
15295 show_popup_dialog(450, 225, html);\r
15296 }\r
15297 function do_login_prompt_2() {\r
15298 hide_popup_dialog();\r
15299 delete session.progress;\r
15300 if (!session.temp_password) session.temp_password = ''; \r
15301 if (!session.username) session.username = '';\r
15302 var html = '';\r
15303 html += '<div class="dialog_bkgnd" style="background-image:url('+png('images/big_icons/key.png')+')">';\r
15304 html += '<table cellspacing=0 cellpadding=0><tr><td width=450 height=225 valign=center align=center>';\r
15305 html += '<div class="dialog_title">Enter Your Password</div>';\r
15306 html += '<form method=get action="javascript:void(0)"><table cellspacing="0" cellpadding="0"><tr><td align="left">';\r
15307 html += '<div class="fe_label">Password:</div><input type=password class="fe_big" id="fe_lp_password" size=20 value="'+session.temp_password+'"><br><br>';\r
15308 html += '<input type=checkbox id="fe_auto_login" value="1" '+(session.auto_login ? 'checked="checked"' : '')+'><label for="fe_auto_login"><span class="fe_label">Keep me logged in</span></label><br>';\r
15309 html += '</td></tr></table>';\r
15310 html += '<br><br><table><tr>';\r
15311 html += '<td>' + large_icon_button('x', 'Cancel', "clear_login()") + '</td>';\r
15312 html += '<td width=30>&nbsp;</td>';\r
15313 html += '<td>' + large_icon_button('check', '<b>Login</b>', 'do_effect_login()') + '</td>';\r
15314 html += '</tr></table>';\r
15315 html += '</form>';\r
15316 html += '</div>';\r
15317 session.hooks.keys[ENTER_KEY] = 'do_effect_login'; \r
15318 session.hooks.keys[ESC_KEY] = 'clear_login'; \r
15319 safe_focus( 'fe_lp_password' );\r
15320 show_popup_dialog(450, 225, html);\r
15321 }\r
15322 function clear_login() {\r
15323 hide_popup_dialog();\r
15324 Nav.prev();\r
15325 }\r
15326 function do_login() {\r
15327 if ($('fe_username').value.match(/^\w+$/)) {\r
15328 session.username = $('fe_username').value;\r
15329 session.auto_login = $('fe_auto_login').checked;\r
15330 do_login_prompt_2();\r
15331 return;\r
15332 }\r
15333 else {\r
15334 do_openid_login();\r
15335 }\r
15336 }\r
15337 function do_openid_login() {\r
15338 if (!$('fe_username').value) return;\r
15339 session.openid_win = popup_window('');\r
15340 if (!session.openid_win) return;\r
15341 session.open_id = $('fe_username').value;\r
15342 session.auto_login = $('fe_auto_login') && $('fe_auto_login').checked;\r
15343 hide_popup_dialog();\r
15344 show_progress_dialog(1, "Logging in...");\r
15345 session.hooks.before_error = 'close_openid_window';\r
15346 session.hooks.after_error = 'do_login_prompt';\r
15347 effect_api_send('openid_login', {\r
15348 OpenID: session.open_id,\r
15349 Infinite: session.auto_login ? 1 : 0\r
15350 }, 'do_openid_login_2');\r
15351 }\r
15352 function close_openid_window() {\r
15353 if (session.openid_win) {\r
15354 session.openid_win.close();\r
15355 delete session.openid_win;\r
15356 }\r
15357 }\r
15358 function do_openid_login_2(response) {\r
15359 if (response.CheckURL) {\r
15360 Debug.trace('openid', "Redirecting popup window to OpenID Check URL: " + response.CheckURL);\r
15361 show_progress_dialog(1, "Waiting for popup window...", false, ['x', 'Cancel', 'do_login_prompt()']);\r
15362 session.openid_win.location = response.CheckURL;\r
15363 session.openid_win.focus();\r
15364 }\r
15365 }\r
15366 function receive_openid_response(iframe_response) {\r
15367 var response = deep_copy_object(iframe_response); \r
15368 Debug.trace('openid', "Received OpenID Response: " + dumper(response));\r
15369 hide_popup_dialog();\r
15370 if (response.Code) {\r
15371 close_openid_window();\r
15372 return do_error( response.Description );\r
15373 }\r
15374 delete session.hooks.before_error;\r
15375 delete session.hooks.after_error;\r
15376 if (response.SessionID) {\r
15377 session.cookie.set( 'effect_session_id', response.SessionID );\r
15378 session.cookie.save();\r
15379 }\r
15380 switch (response.Action) {\r
15381 case 'popup':\r
15382 show_progress_dialog(1, "Waiting for popup window...", false, ['x', 'Cancel', 'do_login_prompt()']);\r
15383 Debug.trace('openid', "Redirecting popup window to OpenID Setup URL: " + response.SetupURL);\r
15384 session.openid_win.location = response.SetupURL;\r
15385 session.openid_win.focus();\r
15386 break;\r
15387 case 'login':\r
15388 close_openid_window();\r
15389 do_login_2(response);\r
15390 break;\r
15391 case 'register':\r
15392 if (!response.Info) response.Info = {};\r
15393 close_openid_window();\r
15394 Debug.trace('openid', 'Original OpenID: ' + response.OpenID_Login);\r
15395 Debug.trace('openid', 'Clean OpenID: ' + response.OpenID_Unique);\r
15396 Debug.trace('openid', 'Registration Info: ' + dumper(response.Info));\r
15397 session.prereg = response.Info;\r
15398 session.prereg.open_id_login = response.OpenID_Login;\r
15399 session.prereg.open_id = response.OpenID_Unique;\r
15400 if (session.user) {\r
15401 if (!session.user.OpenIDs) session.user.OpenIDs = {};\r
15402 if (!session.user.OpenIDs.OpenID) session.user.OpenIDs.OpenID = [];\r
15403 var dupe = find_object( session.user.OpenIDs.OpenID, { Unique: session.prereg.open_id } );\r
15404 if (dupe) return do_error("That OpenID is already registered and attached to your account.  No need to add it again.");\r
15405 session.user.OpenIDs.OpenID.push({\r
15406 Login: session.prereg.open_id_login,\r
15407 Unique: session.prereg.open_id\r
15408 });\r
15409 setTimeout( function() {\r
15410 Nav.go('MyAccount', true);\r
15411 do_message('success', 'Added new OpenID URL to account.');\r
15412 }, 1 );\r
15413 }\r
15414 else {\r
15415 setTimeout( function() { Nav.go('CreateAccount', true); }, 1 );\r
15416 }\r
15417 break;\r
15418 }\r
15419 }\r
15420 function do_effect_login() {\r
15421 var password = $('fe_lp_password').value;\r
15422 session.auto_login = $('fe_auto_login').checked;\r
15423 hide_popup_dialog();\r
15424 show_progress_dialog(1, "Logging in...");\r
15425 session.hooks.after_error = 'do_login_prompt';\r
15426 effect_api_send('user_login', {\r
15427 Username: session.username,\r
15428 Password: password,\r
15429 Infinite: session.auto_login ? 1 : 0\r
15430 }, 'do_login_2');\r
15431 }\r
15432 function do_logout() {\r
15433 effect_api_send('user_logout', {}, 'do_logout_2');\r
15434 }\r
15435 function do_logout_2(response) {\r
15436 hide_popup_dialog();\r
15437 show_default_login_status();\r
15438 delete session.hooks.after_error;\r
15439 delete session.cookie.tree.effect_session_id;\r
15440 session.cookie.save();\r
15441 session.storage = {};\r
15442 session.storage_dirty = false;\r
15443 delete session.user;\r
15444 delete session.first_login;\r
15445 var old_username = session.username;\r
15446 session.username = '';\r
15447 if (Nav.inited) {\r
15448 Nav.go('Main');\r
15449 if (old_username) $GR.growl('success', "Logged out of account: " + old_username);\r
15450 }\r
15451 else {\r
15452 Nav.init();\r
15453 }\r
15454 }\r
15455 function do_login_2(response, tx) {\r
15456 if (response.FirstLogin) session.first_login = 1;\r
15457 if (response.User.UserStorage) {\r
15458 Debug.trace('Recovering site storage blob: session.storage = ' + response.User.UserStorage + ';');\r
15459 try {\r
15460 eval( 'session.storage = ' + response.User.UserStorage + ';' );\r
15461 }\r
15462 catch (e) {\r
15463 Debug.trace("SITE STORAGE RECOVERY FAILED: " + e);\r
15464 session.storage = {};\r
15465 }\r
15466 delete response.User.UserStorage;\r
15467 session.storage_dirty = false;\r
15468 }\r
15469 session.user = response.User;\r
15470 session.username = session.user.Username;\r
15471 hide_popup_dialog();\r
15472 delete session.hooks.after_error;\r
15473 update_header();\r
15474 if (!tx || !tx._from_recover) $GR.growl('success', "Logged in as: " + session.username);\r
15475 if (session.nav_after_login) {\r
15476 Nav.go( session.nav_after_login );\r
15477 delete session.nav_after_login;\r
15478 }\r
15479 else if (Nav.currentAnchor().match(/^Login/)) {\r
15480 Nav.go('Home');\r
15481 }\r
15482 else {\r
15483 Nav.refresh();\r
15484 }\r
15485 Nav.init();\r
15486 }\r
15487 function user_storage_mark() {\r
15488 Debug.trace("Marking user storage as dirty");\r
15489 session.storage_dirty = true;\r
15490 }\r
15491 function user_storage_idle() {\r
15492 if (session.storage_dirty && !session.mouseIsDown) {\r
15493 user_storage_save();\r
15494 session.storage_dirty = false;\r
15495 }\r
15496 setTimeout( 'user_storage_idle()', 5000 );\r
15497 }\r
15498 function user_storage_save() {\r
15499 if (session.user) {\r
15500 Debug.trace("Committing user storage blob");\r
15501 effect_api_send('update_user_storage', { Data: serialize(session.storage) }, 'user_storage_save_finish', { _silent: 1 } );\r
15502 }\r
15503 }\r
15504 function user_storage_save_finish(response, tx) {\r
15505 }\r
15506 function show_default_login_status() {\r
15507 $('d_sidebar_wrapper_recent_games').hide();\r
15508 $('d_login_status').innerHTML = '<center><table><tr><td>' + \r
15509 large_icon_button('key', "<b>Login</b>", '#Home') + '</td>' + \r
15510 '<td>' + spacer(1,1) + '<td>' + \r
15511 '<td>' + large_icon_button('user_add.png', "<b>Signup</b>", '#CreateAccount') + '</td></tr></table>' + \r
15512 '</center>';\r
15513 $('d_tagline').innerHTML = \r
15514 '<a href="#Home">Login</a>' + ' <span class="spacer">|</span> ' + \r
15515 '<a href="#CreateAccount">Create Account</a>';\r
15516 }\r
15517 function update_header() {\r
15518 var html = '';\r
15519 html += '<table><tr><td>';\r
15520 html += '<a href="#Home">';\r
15521 html += '<img class="png" src="'+get_buddy_icon_url(session.username) + '" width="32" height="32" border="0"/>';\r
15522 html += '</a>';\r
15523 html += '</td><td>'+spacer(2,2)+'</td><td>';\r
15524 html += session.user.FullName + '<br/>';\r
15525 html += spacer(1,5) + '<br/>';\r
15526 html += '<a href="#Home"><b>My Home</b></a>&nbsp;&nbsp;|&nbsp;&nbsp;';\r
15527 html += '<a href="javascript:void(0)" onClick="do_logout()">Logout</a>';\r
15528 html += '</td></tr></table>';\r
15529 $('d_login_status').innerHTML = html;\r
15530 $('d_tagline').innerHTML = \r
15531 'Welcome '+session.user.FirstName+'' + ' <span class="spacer">|</span> ' + \r
15532 '<a href="#Home">My Home</a>' + ' <span class="spacer">|</span> ' + \r
15533 '<a href="javascript:void(0)" onClick="do_logout()">Logout</a>';\r
15534 effect_api_get( 'get_user_games', { limit:5, offset:0 }, 'receive_sidebar_recent_games', { } );\r
15535 }\r
15536 function receive_sidebar_recent_games(response, tx) {\r
15537 var html = '';\r
15538 if (response.Rows && response.Rows.Row) {\r
15539 var games = always_array( response.Rows.Row );\r
15540 for (var idx = 0, len = games.length; idx < len; idx++) {\r
15541 var game = games[idx];\r
15542 html += '<div class="sidebar_blog_row">';\r
15543 html += '<div class="sidebar_blog_title"><a href="#Game/'+game.GameID+'">'+ww_fit_string(game.Title, 170, session.em_width, 1)+'</a></div>';\r
15544 html += '</div>';\r
15545\r
15546 html += '<div class="sidebar_see_more">&rarr; <a href="#GameEdit">Create New Game...</a></div>';\r
15547 $('d_sidebar_recent_games').innerHTML = html;\r
15548 $('d_sidebar_wrapper_recent_games').show();\r
15549 }\r
15550 else {\r
15551 $('d_sidebar_wrapper_recent_games').hide();\r
15552 }\r
15553 }\r
15554 function check_privilege(key) {\r
15555 if (!session.user) return false;\r
15556 if (session.user.Privileges.admin == 1) return true; \r
15557 if (!key.toString().match(/^\//)) key = '/' + key;\r
15558 var value = lookup_path(key, session.user.Privileges);\r
15559 return( value && (value != 0) );\r
15560 }\r
15561 function is_admin() {\r
15562 return check_privilege('admin');\r
15563 }\r
15564 function upgrade_flash_error() {\r
15565 return alert("Sorry, file upload requires Adobe Flash Player 9 or higher.");\r
15566 }\r
15567 function cancel_user_image_manager() {\r
15568 upload_destroy();\r
15569 hide_popup_dialog();\r
15570 delete session.hooks.keys[DELETE_KEY];\r
15571 }\r
15572 function do_user_image_manager(callback) {\r
15573 if (callback) session.uim_callback = callback;\r
15574 else session.uim_callback = null;\r
15575 session.temp_last_user_img = null;\r
15576 session.temp_last_user_image_filename = '';\r
15577 var html = '<table cellspacing=0 cellpadding=0><tr><td width=500 height=300 valign=center align=center>';\r
15578 html += '<div class="dialog_title">Image Manager</div>';\r
15579 html += '<div class="vert_selector" id="d_user_image_list" style="width:480px; height:200px;">';\r
15580 html += '<img src="images/loading.gif" width="32" height="32" style="margin-left:174px; margin-top:84px"/>';\r
15581 html += '</div>';\r
15582 html += '<br><table><tr>';\r
15583 html += '<td>' + large_icon_button('x', 'Cancel', 'cancel_user_image_manager()') + '</td>';\r
15584 html += '<td width=25>&nbsp;</td>';\r
15585 html += '<td>' + large_icon_button('bullet_upload.png', 'Upload Files...', 'upload_basic()', 'b_upload_user_image') + '</td>';\r
15586 html += '<td width=25>&nbsp;</td>';\r
15587 html += '<td>' + large_icon_button('check', '<b>Choose</b>', 'do_choose_user_image()', 'btn_choose_user_image', '', 'disabled') + '</td>';\r
15588 html += '</tr></table>';\r
15589 html += '</td></tr></table>';\r
15590 session.hooks.keys[ENTER_KEY] = 'do_choose_user_image'; \r
15591 session.hooks.keys[ESC_KEY] = 'cancel_user_image_manager'; \r
15592 session.hooks.keys[DELETE_KEY] = 'do_delete_selected_user_image';\r
15593 show_popup_dialog(500, 300, html);\r
15594 var self = this;\r
15595 setTimeout( function() {\r
15596 prep_upload('b_upload_user_image', '/effect/api/upload_user_image', [self, 'do_upload_user_image_2'], ['Image Files', '*.jpg;*.jpe;*.jpeg;*.gif;*.png']);\r
15597 }, 1 );\r
15598 var args = {\r
15599 limit: 50,\r
15600 offset: 0,\r
15601 random: Math.random()\r
15602 };\r
15603 effect_api_get( 'user_images_get', args, 'uim_populate_images', { } );\r
15604 }\r
15605 function do_upload_user_image_2() {\r
15606 effect_api_mod_touch('user_images_get');\r
15607 effect_api_send('user_get', {\r
15608 Username: session.username\r
15609 }, [this, 'do_upload_user_image_3']);\r
15610 }\r
15611 function do_upload_user_image_3(response) {\r
15612 if (response.User.LastUploadError) return do_error( "Failed to upload image: " + response.User.LastUploadError );\r
15613 do_user_image_manager( session.uim_callback );\r
15614 }\r
15615 function uim_populate_images(response, tx) {\r
15616 var html = '';\r
15617 var base_url = '/effect/api/view/users/' + session.username + '/images';\r
15618 if (response.Rows && response.Rows.Row) {\r
15619 var imgs = always_array( response.Rows.Row );\r
15620 for (var idx = 0, len = imgs.length; idx < len; idx++) {\r
15621 var img = imgs[idx];\r
15622 var class_name = ((img.Filename == session.temp_last_user_image_filename) ? 'choose_item_selected' : 'choose_item');\r
15623 html += '<img class="'+class_name+'" src="'+base_url+'/'+img.Thumbnail+'" width="80" height="60" onClick="do_select_user_image(this,\''+img.Filename+'\')" onDblClick="do_select_user_image(this,\''+img.Filename+'\'); do_choose_user_image();">';\r
15624\r
15625\r
15626 else {\r
15627 html = '';\r
15628 }\r
15629 $('d_user_image_list').innerHTML = html;\r
15630 }\r
15631 function do_select_user_image(img, filename) {\r
15632 if (session.temp_last_user_img) session.temp_last_user_img.className = 'choose_item';\r
15633 img.className = 'choose_item_selected';\r
15634 $('btn_choose_user_image').removeClass('disabled');\r
15635 session.temp_last_user_img = img;\r
15636 session.temp_last_user_image_filename = filename;\r
15637 }\r
15638 function do_delete_selected_user_image() {\r
15639 if (session.temp_last_user_image_filename) {\r
15640 effect_api_send('user_image_delete', { Filename: session.temp_last_user_image_filename }, 'do_delete_selected_user_image_finish', {});\r
15641 }\r
15642 }\r
15643 function do_delete_selected_user_image_finish(response, tx) {\r
15644 try { $('d_user_image_list').removeChild( session.temp_last_user_img ); } catch(e) {;}\r
15645 session.temp_last_user_img = null;\r
15646 session.temp_last_user_image_filename = null;\r
15647 }\r
15648 function do_choose_user_image() {\r
15649 if (!session.temp_last_user_image_filename) return;\r
15650 if (session.uim_callback) {\r
15651 fire_callback( session.uim_callback, session.temp_last_user_image_filename );\r
15652 }\r
15653 cancel_user_image_manager();\r
15654 }\r
15655 function user_image_thumbnail(filename, width, height, attribs) {\r
15656 var username = session.username;\r
15657 if (filename.match(/^(\w+)\/(.+)$/)) {\r
15658 username = RegExp.$1;\r
15659 filename = RegExp.$2;\r
15660 }\r
15661 var url = '/effect/api/view/users/' + username + '/images/' + filename.replace(/\.(\w+)$/, '_thumb.jpg');\r
15662 return '<img src="'+url+'" width="'+width+'" height="'+height+'" '+compose_attribs(attribs)+'/>';\r
15663 }\r
15664 function get_user_display(username, full_name, base_url) {\r
15665 if (!base_url) base_url = '';\r
15666 return icon('user', full_name || username, base_url + '#User/' + username);\r
15667 }\r
15668 function get_game_tab_bar(game_id, cur_page_name) {\r
15669 return tab_bar([\r
15670 ['#Game/' + game_id, 'Game', 'controller.png'],\r
15671 ['#GameDisplay/' + game_id, 'Display', 'monitor.png'],\r
15672 ['#GameAssets/' + game_id, 'Assets', 'folder_page_white.png'],\r
15673 ['#GameObjects/' + game_id, 'Objects', 'bricks.png'],\r
15674 ['#GameAudio/' + game_id, 'Audio', 'sound.gif'],\r
15675 ['#GameKeys/' + game_id, 'Keyboard', 'keyboard.png'],\r
15676 ['#GameLevels/' + game_id, 'Levels', 'world.png'],\r
15677 ['#GamePublisher/' + game_id, 'Publish', 'cd.png']\r
15678 ], cur_page_name);\r
15679 }\r
15680 function get_user_tab_bar(cur_page_name) {\r
15681 var tabs = [\r
15682 ['#Home', 'My Home', 'house.png']\r
15683 ];\r
15684 tabs.push( ['#MyAccount', 'Edit Account', 'user_edit.png'] );\r
15685 tabs.push( ['#ArticleEdit', 'Post Article', 'page_white_edit.png'] );\r
15686 if (config.ProEnabled) {\r
15687 tabs.push( ['#UserPayments', 'Payments', 'money.png'] );\r
15688 }\r
15689 tabs.push( ['#UserLog', 'Security Log', 'application_view_detail.png'] );\r
15690 return tab_bar(tabs, cur_page_name);\r
15691 }\r
15692 function get_admin_tab_bar(cur_page_name) {\r
15693 var tabs = [];\r
15694 tabs.push( ['#Admin', 'Admin', 'lock.png'] );\r
15695 tabs.push( ['#TicketSearch/bugs', 'Bug Tracker', 'bug.png'] );\r
15696 tabs.push( ['#TicketSearch/helpdesk', 'Help Desk', 'telephone.png'] );\r
15697 tabs.push( ['#AdminReport', 'Reports', 'chart_pie.png'] );\r
15698 return tab_bar(tabs, cur_page_name);\r
15699 }\r
15700 function get_string(path, args) {\r
15701 assert(window.config, "get_string() called before config loaded");\r
15702 if (!args) args = {};\r
15703 args.config = config;\r
15704 args.session = session;\r
15705 args.query = session.query;\r
15706 var value = lookup_path(path, config.Strings);\r
15707 return (typeof(value) == 'string') ? substitute(value, args) : value;\r
15708 }\r
15709 function normalize_dir_path(path) {\r
15710 if (!path.match(/^\//)) path = '/' + path;\r
15711 if (!path.match(/\/$/)) path += '/';\r
15712 return path;\r
15713 }\r
15714 function textedit_window_save(storage_key, filename, content, callback) {\r
15715 if (!callback) callback = null;\r
15716 effect_api_mod_touch('textedit');\r
15717 if (storage_key.match(/^\/games\/([a-z0-9][a-z0-9\-]*[a-z0-9])\/assets(.+)$/)) {\r
15718 var game_id = RegExp.$1;\r
15719 var path = RegExp.$2;\r
15720 show_progress_dialog(1, "Saving file...");\r
15721 effect_api_send('asset_save_file_contents', {\r
15722 GameID: game_id,\r
15723 Path: path,\r
15724 Filename: filename,\r
15725 Content: content\r
15726 }, 'textedit_window_save_finish', { _mode: 'asset', _game_id: game_id, _filename: filename, _callback: callback } );\r
15727 }\r
15728 else {\r
15729 show_progress_dialog(1, "Saving data...");\r
15730 effect_api_send('admin_save_file_contents', {\r
15731 Path: storage_key,\r
15732 Filename: filename,\r
15733 Content: content\r
15734 }, 'textedit_window_save_finish', { _mode: 'admin', _storage_key: storage_key, _filename: filename, _callback: callback } );\r
15735 }\r
15736 }\r
15737 function textedit_window_save_finish(response, tx) {\r
15738 hide_progress_dialog();\r
15739 if (tx._mode == 'asset') {\r
15740 do_message('success', "Saved asset: \""+tx._filename+"\"");\r
15741 show_glog_widget();\r
15742 }\r
15743 else {\r
15744 do_message('success', "Saved data: \""+tx._storage_key+'/'+tx._filename+"\"");\r
15745 }\r
15746 if (tx._callback) tx._callback();\r
15747 }\r
15748 function do_buy(args) {\r
15749 $P().hide();\r
15750 $('d_page_loading').show();\r
15751 effect_api_send('create_order', args, 'do_buy_redirect', { _buy_args: args } );\r
15752 }\r
15753 function do_buy_redirect(response, tx) {\r
15754 var args = tx._buy_args;\r
15755 $('fe_gco_title').value = args.Title || '';\r
15756 $('fe_gco_desc').value = args.Desc || '';\r
15757 $('fe_gco_price').value = args.Price || '';\r
15758 $('fe_gco_after').value = args.After || '';\r
15759 $('fe_gco_unique_id').value = response.OrderID;\r
15760 Debug.trace('payment', "Redirecting to Google Checkout");\r
15761 setTimeout( function() { $('BB_BuyButtonForm').submit(); }, 1 );\r
15762 }\r
15763 function show_glog_widget(game_id) {\r
15764 if (!game_id) game_id = session.glog_game_id;\r
15765 if (!game_id) {\r
15766 $('glog_widget').hide();\r
15767 return;\r
15768 }\r
15769 if (game_id != session.glog_game_id) {\r
15770 $('glog_widget').hide();\r
15771 session.glog_game_id = game_id;\r
15772 update_glog_widget(game_id);\r
15773 }\r
15774 else {\r
15775 $('glog_widget').show();\r
15776 setTimeout( function() { update_glog_widget(game_id); }, 500 );\r
15777 }\r
15778 }\r
15779 function update_glog_widget(game_id) {\r
15780 effect_api_get('game_get_log', { \r
15781 id: game_id,\r
15782 offset: 0,\r
15783 limit: 1,\r
15784 rand: Math.random()\r
15785 }, 'receive_glog_data', { _game_id: game_id });\r
15786 }\r
15787 function receive_glog_data(response, tx) {\r
15788 var game_id = tx._game_id;\r
15789 if (response && response.Rows && response.Rows.Row) {\r
15790 var rows = always_array( response.Rows.Row );\r
15791 var row = rows[0];\r
15792 var html = '';\r
15793 html += '<div class="h2" style="margin-bottom:5px;">';\r
15794 html += '<div class="fl">Latest Game Activity</div>';\r
15795 html += '<div class="fr"><a href="#GameLog/'+game_id+'" title="View Log" class="icon" style="margin-left:5px; background-image:url(images/icons/application_view_detail.png)">View Log</a></div>';\r
15796 html += '<div class="fr"><a href="javascript:void(show_glog_post_dialog(\''+game_id+'\'))" title="Post Message" class="icon" style="margin-left:5px; background-image:url(images/icons/comment_edit.png)">Post Message</a></div>';\r
15797 html += '<div class="clear"></div>';\r
15798 html += '</div>';\r
15799 html += '<table><tr>';\r
15800 html += '<td style="cursor:pointer" onClick="Nav.go(\'User/'+row.Username+'\')">' + get_buddy_icon_display(row.Username, 1, 0) + '</td>';\r
15801 html += '<td>';\r
15802 html += '<div>' + icon( get_icon_for_glog_type(row.Type), '<span class="fe_label">'+row.Message+'</span>' ) + '</div>';\r
15803 html += '<div class="caption" style="margin-top:2px;">' + get_relative_date(row.Date, true) + '</div>';\r
15804 html += '</td>';\r
15805 html += '</tr></table>';\r
15806 $('glog_widget').innerHTML = html;\r
15807 $('glog_widget').show();\r
15808 }\r
15809 }\r
15810 function show_glog_post_dialog(game_id) {\r
15811 hide_popup_dialog();\r
15812 delete session.progress;\r
15813 var html = '';\r
15814 html += '<div class="dialog_bkgnd" style="background-image:url('+png('/effect/images/big_icons/pencil_paper.png')+')">';\r
15815 html += '<table cellspacing=0 cellpadding=0><tr><td width=500 height=175 valign=center align=center>';\r
15816 html += '<div class="dialog_title">Post Game Log Message</div>';\r
15817 html += '<form method=get action="javascript:void(0)"><table cellspacing="0" cellpadding="0"><tr><td align="left">';\r
15818 html += '<textarea class="fe_edit" id="fe_glog_body" style="width:300px; height:50px;" wrap="virtual" onkeydown="return catchTab(this,event)"></textarea>';\r
15819 html += '<div class="caption">Enter your log message here.  Plain text only please.</div>';\r
15820 html += '</td></tr></table>';\r
15821 html += '<br><br><table><tr>';\r
15822 html += '<td>' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + '</td>';\r
15823 html += '<td width=50>&nbsp;</td>';\r
15824 html += '<td>' + large_icon_button('check', '<b>Post Message</b>', "glog_post('"+game_id+"')") + '</td>';\r
15825 html += '</tr></table>';\r
15826 html += '</form>';\r
15827 html += '</div>';\r
15828 session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; \r
15829 safe_focus( 'fe_glog_body' );\r
15830 show_popup_dialog(500, 175, html);\r
15831 }\r
15832 function glog_post(game_id) {\r
15833 var msg = trim( $('fe_glog_body').value );\r
15834 if (msg) {\r
15835 hide_popup_dialog();\r
15836 effect_api_send('game_post_log', {\r
15837 GameID: game_id,\r
15838 Message: msg\r
15839 }, [this, 'glog_post_finish'], { _game_id: game_id });\r
15840 }\r
15841 }\r
15842 function glog_post_finish(response, tx) {\r
15843 show_glog_widget( tx._game_id );\r
15844 }\r
15845 function hide_glog_widget() {\r
15846 $('glog_widget').hide();\r
15847 }\r
15848 function get_icon_for_glog_type(type) {\r
15849 var icon = 'page_white.png';\r
15850 switch (type) {\r
15851 case 'asset': icon = 'folder_page_white.png'; break;\r
15852 case 'game': icon = 'controller.png'; break;\r
15853 case 'member': icon = 'user'; break;\r
15854 case 'comment': icon = 'comment.png'; break;\r
15855 case 'level': icon = 'world.png'; break;\r
15856 case 'sprite': icon = 'cog.png'; break;\r
15857 case 'tile': icon = 'brick.png'; break;\r
15858 case 'tileset': icon = 'color_swatch.png'; break;\r
15859 case 'rev': icon = 'cd.png'; break;\r
15860 case 'revision': icon = 'cd.png'; break;\r
15861 case 'font': icon = 'style.png'; break;\r
15862 case 'key': icon = 'keyboard.png'; break;\r
15863 case 'audio': icon = 'sound'; break;\r
15864 case 'payment': icon = 'money.png'; break;\r
15865 case 'env': icon = 'weather.png'; break;\r
15866 case 'environment': icon = 'weather.png'; break;\r
15867 }\r
15868 return icon;\r
15869 }\r
15870 function effect_load_script(url) {\r
15871 Debug.trace('api', 'Loading script: ' + url);\r
15872 load_script(url);\r
15873 }\r
15874 function effect_api_get_ie(cmd, params, userData) {\r
15875 if (!session.api_state_ie) session.api_state_ie = {};\r
15876 var unique_id = get_unique_id();\r
15877 session.api_state_ie[unique_id] = userData;\r
15878 params.format = 'js';\r
15879 params.onafter = 'effect_api_response_ie(' + unique_id + ', response);';\r
15880 var url = '/effect/api/' + cmd + composeQueryString(params);\r
15881 Debug.trace('api', "Sending MSIE HTTP GET: " + url);\r
15882 load_script(url);\r
15883 }\r
15884 function effect_api_response_ie(unique_id, tree) {\r
15885 Debug.trace('api', "Got response from MSIE HTTP GET");\r
15886 var tx = session.api_state_ie[unique_id];\r
15887 delete session.api_state_ie[unique_id];\r
15888 if (tree.Code == 'session') {\r
15889 do_logout_2();\r
15890 return;\r
15891 }\r
15892 if (tree.Code == 'access') {\r
15893 do_notice("Access Denied", tree.Description, 'do_not_pass_go');\r
15894 return;\r
15895 }\r
15896 if (tree.Code != 0) {\r
15897 if (tx._on_error) return fire_callback( tx._on_error, tree, tx );\r
15898 return do_error( tree.Description );\r
15899 }\r
15900 if (tree.SessionID) {\r
15901 if (tree.SessionID == '_DELETE_') {\r
15902 delete session.cookie.tree.effect_session_id;\r
15903 }\r
15904 else {\r
15905 session.cookie.set( 'effect_session_id', tree.SessionID );\r
15906 }\r
15907 session.cookie.save();\r
15908 }\r
15909 if (tx._api_callback) {\r
15910 fire_callback( tx._api_callback, tree, tx );\r
15911 }\r
15912 }\r
15913 function effect_api_get(cmd, params, callback, userData) {\r
15914 if (!userData) userData = {};\r
15915 userData._api_callback = callback;\r
15916 if (!session.api_mod_cache[cmd] && session.username) session.api_mod_cache[cmd] = hires_time_now();\r
15917 if (!params.mod && session.api_mod_cache[cmd]) params.mod = session.api_mod_cache[cmd];\r
15918 if (ie) return effect_api_get_ie(cmd, params, userData);\r
15919 var url = '/effect/api/' + cmd + composeQueryString(params);\r
15920 Debug.trace('api', "Sending HTTP GET: " + url);\r
15921 ajax.get( url, 'effect_api_response', userData );\r
15922 }\r
15923 function effect_api_send(cmd, xml, callback, userData) {\r
15924 if (!userData) userData = {};\r
15925 userData._api_callback = callback;\r
15926 var data = compose_xml('EffectRequest', xml);\r
15927 Debug.trace('api', "Sending API Command: " + cmd + ": " + data);\r
15928 ajax.send({\r
15929 method: 'POST',\r
15930 url: '/effect/api/' + cmd,\r
15931 data: data,\r
15932 headers: { 'Content-Type': 'text/xml' }\r
15933 }, 'effect_api_response', userData);\r
15934 }\r
15935 function effect_api_response(tx) {\r
15936 Debug.trace('api', "HTTP " + tx.response.code + ": " + tx.response.data);\r
15937 if (tx.response.code == 999) { \r
15938 if (tx.request._auto_retry) {\r
15939 session.net_error = false; \r
15940 show_progress_dialog(1, "Trying to reestablish connection...");\r
15941 session.net_error = true;\r
15942 setTimeout( function() { ajax.send(tx.request); }, 1000 );\r
15943 return;\r
15944 }\r
15945 else return do_error( "HTTP ERROR: " + tx.response.code + ": " + tx.response.data + ' (URL: ' + tx.request.url + ')' );\r
15946 }\r
15947 if (session.net_error) {\r
15948 hide_progress_dialog();\r
15949 session.net_error = false;\r
15950 }\r
15951 if (tx.response.code != 200) {\r
15952 if (tx._silent) return; \r
15953 else return do_error( "HTTP ERROR: " + tx.response.code + ": " + tx.response.data + ' (URL: ' + tx.request.url + ')' );\r
15954 }\r
15955 var tree = null;\r
15956 if (!tx._raw) {\r
15957 var parser = new XML({\r
15958 preserveAttributes: true,\r
15959 text: tx.response.data \r
15960 });\r
15961 if (parser.getLastError()) return do_error("XML PARSE ERROR: " + parser.getLastError());\r
15962 tree = parser.getTree();\r
15963 if (tree.Code == 'session') {\r
15964 do_logout_2();\r
15965 return;\r
15966 }\r
15967 if (tree.Code == 'access') {\r
15968 do_notice("Access Denied", tree.Description, 'do_not_pass_go');\r
15969 return;\r
15970 }\r
15971 if (tree.Code != 0) {\r
15972 if (tx._on_error) return fire_callback( tx._on_error, tree, tx );\r
15973 return do_error( tree.Description );\r
15974 }\r
15975 if (tree.SessionID) {\r
15976 if (tree.SessionID == '_DELETE_') {\r
15977 delete session.cookie.tree.effect_session_id;\r
15978 }\r
15979 else {\r
15980 session.cookie.set( 'effect_session_id', tree.SessionID );\r
15981 }\r
15982 session.cookie.save();\r
15983 }\r
15984\r
15985 if (tx._api_callback) {\r
15986 fire_callback( tx._api_callback, tree, tx );\r
15987 }\r
15988 }\r
15989 function effect_api_mod_touch() {\r
15990 for (var idx = 0, len = arguments.length; idx < len; idx++) {\r
15991 session.api_mod_cache[ arguments[idx] ] = hires_time_now();\r
15992 }\r
15993 }\r
15994 function do_not_pass_go() {\r
15995 Nav.go('Main');\r
15996 }\r
15997 var Nav = {\r
15998 loc: '',\r
15999 old_loc: '',\r
16000 inited: false,\r
16001 nodes: [],\r
16002 init: function() {\r
16003 if (!this.inited) {\r
16004 this.inited = true;\r
16005 this.loc = 'init';\r
16006 this.monitor();\r
16007 }\r
16008 },\r
16009 monitor: function() {\r
16010 var parts = window.location.href.split(/\#/);\r
16011 var anchor = parts[1];\r
16012 if (!anchor) anchor = 'Main';\r
16013 var full_anchor = '' + anchor;\r
16014 var sub_anchor = '';\r
16015 anchor = anchor.replace(/\%7C/, '|');\r
16016 if (anchor.match(/\|(\w+)$/)) {\r
16017 sub_anchor = RegExp.$1.toLowerCase();\r
16018 anchor = anchor.replace(/\|(\w+)$/, '');\r
16019 }\r
16020 if ((anchor != this.loc) && !anchor.match(/^_/)) { \r
16021 Debug.trace('nav', "Caught navigation anchor: " + full_anchor);\r
16022 var page_name = '';\r
16023 var page_args = null;\r
16024 if (full_anchor.match(/^\w+\?.+/)) {\r
16025 parts = full_anchor.split(/\?/);\r
16026 page_name = parts[0];\r
16027 page_args = parseQueryString( parts[1] );\r
16028 }\r
16029 else if (full_anchor.match(/^(\w+)\/(.*)$/)) {\r
16030 page_name = RegExp.$1;\r
16031 page_args = RegExp.$2;\r
16032 }\r
16033 else {\r
16034 parts = full_anchor.split(/\//);\r
16035 page_name = parts[0];\r
16036 page_args = parts.slice(1);\r
16037 }\r
16038 Debug.trace('nav', "Calling page: " + page_name + ": " + serialize(page_args));\r
16039 hide_popup_dialog();\r
16040 var result = page_manager.click( page_name, page_args );\r
16041 if (result) {\r
16042 if (window.pageTracker && (this.loc != 'init')) {\r
16043 setTimeout( function() { pageTracker._trackPageview('/effect/' + anchor); }, 1000 );\r
16044 }\r
16045 this.old_loc = this.loc;\r
16046 if (this.old_loc == 'init') this.old_loc = 'Main';\r
16047 this.loc = anchor;\r
16048 }\r
16049 else {\r
16050 this.go( this.loc );\r
16051 }\r
16052 }\r
16053 else if (sub_anchor != this.sub_anchor) {\r
16054 Debug.trace('nav', "Caught sub-anchor: " + sub_anchor);\r
16055 $P().gosub( sub_anchor );\r
16056\r
16057 this.sub_anchor = sub_anchor;\r
16058 setTimeout( 'Nav.monitor()', 100 );\r
16059 },\r
16060 go: function(anchor, force) {\r
16061 anchor = anchor.replace(/^\#/, '');\r
16062 if (force) this.loc = 'init';\r
16063 window.location.href = '#' + anchor;\r
16064 },\r
16065 prev: function() {\r
16066 this.go( this.old_loc || 'Main' );\r
16067 },\r
16068 refresh: function() {\r
16069 this.loc = 'refresh';\r
16070 },\r
16071 bar: function() {\r
16072 var nodes = arguments;\r
16073 var html = '';\r
16074 for (var idx = 0, len = nodes.length; idx < len; idx++) {\r
16075 var node = nodes[idx];\r
16076 if (node) this.nodes[idx] = node;\r
16077 else node = this.nodes[idx];\r
16078 if (node != '_ignore_') {\r
16079 html += '<div><a href="#'+node[0]+'"><b>'+ww_fit_string(node[1], 200, session.em_width, 1)+'</b></a></div>';\r
16080 }\r
16081 }\r
16082 html += '<br clear="all"/>';\r
16083 $('d_nav_bar').innerHTML = html;\r
16084 },\r
16085 title: function(name) {\r
16086 if (name) document.title = name + ' | EffectGames.com';\r
16087 else document.title = 'EffectGames.com';\r
16088 },\r
16089 currentAnchor: function() {\r
16090 var parts = window.location.href.split(/\#/);\r
16091 var anchor = parts[1] || '';\r
16092 var sub_anchor = '';\r
16093 anchor = anchor.replace(/\%7C/, '|');\r
16094 if (anchor.match(/\|(\w+)$/)) {\r
16095 sub_anchor = RegExp.$1.toLowerCase();\r
16096 anchor = anchor.replace(/\|(\w+)$/, '');\r
16097 }\r
16098 return anchor;\r
16099 }\r
16100 };\r
16101 var Blog = {\r
16102 edit_caption: '<div class="caption" style="margin-top:5px;">*<b>Bold</b>*&nbsp;&nbsp;|<i>Italic</i>|&nbsp;&nbsp;{<span style="font-family:monaco,courier,monospace;">monospace</span>}&nbsp;&nbsp;[http://link]&nbsp;&nbsp;<a href="/effect/#Article/Formatting_Guide" target="_blank">Formatting Guide...</a></div>',\r
16103 search: function(args) {\r
16104 if (!args.mode) args.mode = 'and';\r
16105 if (!args.offset) args.offset = 0;\r
16106 if (!args.limit) args.limit = 10;\r
16107 if (!args.format) args.format = 'xml';\r
16108 var query_args = copy_object( args ); \r
16109 delete query_args.callback;\r
16110 effect_api_get( 'article_search', query_args, [this, 'search_response'], { _search_args: args } );\r
16111 },\r
16112 get_article_preview: function(row, args) {\r
16113 var html = '';\r
16114 Debug.trace('blog', 'Row: ' + dumper(row));\r
16115 html += '<div class="' + (args.outer_div_class || 'blog_article_preview') + '">';\r
16116 var ext_article_url = 'http://' + location.hostname + '/effect/article.psp.html' + row.Path + '/' + row.ArticleID;\r
16117 var article_url = '#Article' + row.Path + '/' + row.ArticleID;\r
16118 html += '<div class="' + (args.title_class || 'blog_title') + '"><a href="'+article_url+'">' + row.Title + '</a></div>';\r
16119 if (!args.title_only) {\r
16120 html += '<div class="' + (args.preview_class || 'blog_preview_body') + '">';\r
16121 html += row.Preview;\r
16122 html += '&nbsp;&nbsp;<a href="'+article_url+'">' + (args.link_title || 'Read Full Story...') + '</a>';\r
16123 html += '</div>';\r
16124 html += '<nobr>';\r
16125 html += '<div class="' + (args.footer_class || 'blog_preview_footer') + '">';\r
16126 var elem_class = args.footer_element_class || 'blog_preview_footer_element';\r
16127 if ((session.username == row.Username) || is_admin()) {\r
16128 html += '<div class="' + elem_class + '">' + \r
16129 icon('page_white_edit.png', "Edit", '#ArticleEdit?path=' + row.Path + '&id=' + row.ArticleID) + '</div>';\r
16130 }\r
16131 html += '<div class="' + elem_class + '">' + get_user_display(row.Username) + '</div>';\r
16132 html += '<div class="' + elem_class + '">' + icon('calendar', get_short_date_time(row.Published)) + '</div>';\r
16133 html += '<div class="' + elem_class + '">' + icon('talk', row.Comments) + '</div>';\r
16134 if (0 && row.Tags) html += '<div class="' + elem_class + '">' + icon('note.png', make_tag_links(row.Tags, 3)) + '</div>';\r
16135 html += '<div class="' + elem_class + '">' + icon('facebook.png', 'Facebook', "window.open('http://www.facebook.com/sharer.php?u="+encodeURIComponent(ext_article_url)+'&t='+encodeURIComponent(row.Title)+"','sharer','toolbar=0,status=0,width=626,height=436')", "Share on Facebook") + '</div>';\r
16136 html += '<div class="' + elem_class + '">' + icon('twitter.png', 'Twitter', "window.open('http://twitter.com/home?status=Reading%20" + encodeURIComponent(row.Title) + "%3A%20" +  encodeURIComponent(ext_article_url)+"')", "Share on Twitter") + '</div>';\r
16137 html += '</nobr>';\r
16138 html += '<br clear="both"/>';\r
16139 html += '</div>';\r
16140 }\r
16141 html += '</div>';\r
16142 return html;\r
16143 },\r
16144 search_response: function(response, tx) {\r
16145 var args = tx._search_args;\r
16146 if (args.callback) return fire_callback(args.callback, response, args);\r
16147 var div = $(args.target);\r
16148 assert(div, "Could not find target DIV: " + args.target);\r
16149 var html = '';\r
16150 if (response.Rows && response.Rows.Row) {\r
16151 var rows = always_array( response.Rows.Row );\r
16152 for (var idx = 0, len = rows.length; idx < len; idx++) {\r
16153 var row = rows[idx];\r
16154 html += this.get_article_preview( row, args );\r
16155\r
16156 if (args.more && (rows.length == args.limit)) {\r
16157 html += large_icon_button('page_white_put.png', 'More...', "Blog.more(this, "+encode_object(args)+")") + '<br clear="all"/>';\r
16158 html += spacer(1,15) + '<br/>';\r
16159 }\r
16160 if (args.after) html += args.after;\r
16161\r
16162 else if (response.Code != 0) {\r
16163 html = 'Search Error: ' . response.Code + ': ' + response.Description;\r
16164 }\r
16165 else {\r
16166 html = args.none_found_msg || 'No articles found.';\r
16167 }\r
16168 div.innerHTML = html;\r
16169 },\r
16170 more: function(div, args) {\r
16171 args.offset += args.limit;\r
16172 Debug.trace('blog', "More Args: " + dumper(args));\r
16173 div.innerHTML = '<img src="images/loading.gif" width="32" height="32"/>';\r
16174 effect_api_get( 'article_search', args, [this, 'more_response'], { _search_args: args, _div: div } );\r
16175 },\r
16176 more_response: function(response, tx) {\r
16177 var args = tx._search_args;\r
16178 var button = tx._div;\r
16179 var html = '';\r
16180 if (response.Rows && response.Rows.Row) {\r
16181 var rows = always_array( response.Rows.Row );\r
16182 for (var idx = 0, len = rows.length; idx < len; idx++) {\r
16183 var row = rows[idx];\r
16184 html += this.get_article_preview( row, args );\r
16185\r
16186 if (args.more && (rows.length == args.limit)) {\r
16187 html += large_icon_button('page_white_put.png', 'More...', "Blog.more(this, "+encode_object(args)+")") + '<br clear="all"/>';\r
16188 html += spacer(1,15) + '<br/>';\r
16189 }\r
16190\r
16191 else if (response.Code != 0) {\r
16192 html = 'Search Error: ' . response.Code + ': ' + response.Description;\r
16193 }\r
16194 else {\r
16195 html = args.none_found_msg || 'No more articles found.';\r
16196 }\r
16197 var div = document.createElement('div');\r
16198 div.innerHTML = html;\r
16199 button.parentNode.replaceChild( div, button );\r
16200 }\r
16201 };\r
16202 function make_tag_links(csv, max, base_url) {\r
16203 if (!base_url) base_url = '';\r
16204 var tags = csv.split(/\,\s*/);\r
16205 var append = '';\r
16206 if (max && (tags.length > max)) {\r
16207 tags.length = max;\r
16208 append = '...';\r
16209 }\r
16210 var html = '';\r
16211 for (var idx = 0, len = tags.length; idx < len; idx++) {\r
16212 html += '<a href="' + base_url + '#Tag/'+tags[idx]+'">'+tags[idx]+'</a>';\r
16213 if (idx < len - 1) html += ', ';\r
16214 }\r
16215 html += append;\r
16216 return html;\r
16217 }\r
16218 function get_url_friendly_title(title) {\r
16219 title = title.toString().replace(/\W+/g, '_'); \r
16220 if (title.length > 40) title = title.substring(0, 40);\r
16221 title = title.replace(/^_+/, ''); \r
16222 title = title.replace(/_+$/, ''); \r
16223 return title;\r
16224 }\r
16225 function get_full_url(url) {\r
16226 if (url.match(/^\#/)) {\r
16227 var parts = window.location.href.split(/\#/);\r
16228 url = parts[0] + url;\r
16229 }\r
16230 return url;\r
16231 }\r
16232 var Comments = {\r
16233 comments_per_page: 10,\r
16234 get: function(page_id) {\r
16235 var html = '';\r
16236 html += '<div class="comments_container">';\r
16237 html += '<fieldset><legend>Comments</legend>';\r
16238 html += '<div class="comments" id="d_comments_' + page_id + '"></div>';\r
16239 html += '</fieldset>';\r
16240 html += '</div>';\r
16241 setTimeout( function() { Comments.search({ page_id: page_id }); }, 1 );\r
16242 return html;\r
16243 },\r
16244 search: function(args) {\r
16245 if (!args.limit) args.limit = this.comments_per_page;\r
16246 if (!args.offset) args.offset = 0;\r
16247 assert(args.page_id, "Comments.search: No page_id specified");\r
16248 args.format = 'xml';\r
16249 this.last_search = args;\r
16250 effect_api_get( 'comments_get', args, [this, 'search_response'], { _search_args: args } );\r
16251 },\r
16252 research: function(offset) {\r
16253 var args = this.last_search;\r
16254 if (!args) return;\r
16255 args.offset = offset;\r
16256 effect_api_get( 'comments_get', args, [this, 'search_response'], { _search_args: args } );\r
16257 },\r
16258 search_response: function(response, tx) {\r
16259 this.comments = [];\r
16260 var args = tx._search_args;\r
16261 if (args.callback) return fire_callback(args.callback, response, args);\r
16262 var html = '';\r
16263 html += '<div class="little_button_stack">' + \r
16264 large_icon_button( 'comment_edit.png', 'Post Comment...', "Comments.add('"+args.page_id+"')" ) + '<div class="clear"></div></div>';\r
16265 if (args.page_id.match(/^Article\//)) {\r
16266 html += '<div class="feed">' + icon('feed.png', 'RSS', '/effect/api/comment_feed/' + args.page_id + '.rss', 'Comments RSS Feed') + '</div>';\r
16267 }\r
16268 if (response.Items && response.Items.Item && response.List && response.List.length) {\r
16269 html += '<div class="pagination">';\r
16270 var total_items = response.List.length;\r
16271 var num_pages = parseInt( total_items / args.limit, 10 ) + 1;\r
16272 if (total_items % args.limit == 0) num_pages--;\r
16273 var current_page = parseInt( args.offset / args.limit, 10 ) + 1;\r
16274 if (num_pages > 1) {\r
16275 html += 'Page: ';\r
16276 if (current_page > 1) {\r
16277 html += code_link( 'Comments.research(' + ((current_page - 2) * args.limit) + ')', '&larr; Newer' );\r
16278 }\r
16279 html += '&nbsp;&nbsp;';\r
16280 var start_page = current_page - 4;\r
16281 var end_page = current_page + 5;\r
16282 if (start_page < 1) {\r
16283 end_page += (1 - start_page);\r
16284 start_page = 1;\r
16285 }\r
16286 if (end_page > num_pages) {\r
16287 start_page -= (end_page - num_pages);\r
16288 if (start_page < 1) start_page = 1;\r
16289 end_page = num_pages;\r
16290 }\r
16291 for (var idx = start_page; idx <= end_page; idx++) {\r
16292 if (idx == current_page) {\r
16293 html += '<b>' + idx + '</b>';\r
16294 }\r
16295 else {\r
16296 html += code_link( 'Comments.research(' + ((idx - 1) * args.limit) + ')', idx );\r
16297 }\r
16298 html += '&nbsp;';\r
16299 }\r
16300 html += '&nbsp;&nbsp;';\r
16301 if (current_page < num_pages) {\r
16302 html += code_link( 'Comments.research(' + ((current_page + 0) * args.limit) + ')', 'Older &rarr;' );\r
16303 }\r
16304\r
16305 else {\r
16306 html += 'Page 1 of 1';\r
16307 }\r
16308 html += '</div>';\r
16309 html += '<br clear="all"/>';\r
16310 var items = this.comments = always_array( response.Items.Item );\r
16311 for (var idx = 0, len = items.length; idx < len; idx++) {\r
16312 var item = items[idx];\r
16313 var extra_classes = (args.highlight && (args.highlight == item.ID)) ? ' highlight' : '';\r
16314 html += '<div class="comment_container'+extra_classes+'">';\r
16315 html += '<div class="info">';\r
16316 if (item.Username) html += '<a href="#User/'+item.Username+'">';\r
16317 html += '<b>' + item.Name.toString().toUpperCase() + '</b>';\r
16318 if (item.Username) html += '</a>';\r
16319 html += ', ' + get_short_date_time(item.Date) + '</div>';\r
16320 html += '<div class="controls" id="d_comment_controls_'+item.ID+'">';\r
16321 html += this.get_comment_controls( args.page_id, item );\r
16322 html += '</div>';\r
16323 html += '<br clear="all"/>';\r
16324 html += '<div class="comment_body">' + item.Comment + '</div>';\r
16325 html += '</div>';\r
16326 html += '<div id="d_comment_replies_'+item.ID+'" class="comment_replies_container" style="display:none"></div>';\r
16327 if (item.LastReply && ((item.LastReply >= time_now() - (86400 * 7)) || (session.username && (session.username == item.Username)))) {\r
16328 setTimeout( "Comments.show_replies('"+args.page_id+"','"+item.ID+"')", 1 );\r
16329 }\r
16330\r
16331 }\r
16332 else {\r
16333 }\r
16334 $( 'd_comments_' + args.page_id ).innerHTML = html;\r
16335 },\r
16336 get_control: function(icon, code, text, status_text) {\r
16337 if (!icon.match(/\.\w+$/)) icon += '.gif';\r
16338 return '<span class="comment_control" style="background-image:url(/effect/images/icons/small/'+icon+')">' + code_link(code, text, status_text) + '</span>';\r
16339 },\r
16340 get_comment_controls: function(page_id, comment) {\r
16341 var html = '';\r
16342 var spacer_txt = '&nbsp;&nbsp;|&nbsp;&nbsp;';\r
16343 if (session.user) {\r
16344 html += this.get_control('comment', "Comments.reply('"+page_id+"','"+comment.ID+"')", 'Reply') + spacer_txt;\r
16345 }\r
16346 if (comment.Replies) {\r
16347 if (comment._replies_visible) html += this.get_control('magnify_minus', "Comments.hide_replies('"+page_id+"','"+comment.ID+"')", 'Hide Replies');\r
16348 else html += this.get_control('magnify_plus', "Comments.show_replies('"+page_id+"','"+comment.ID+"')", 'Show Replies ('+comment.Replies+')');\r
16349 if (session.user) html += spacer_txt;\r
16350 }\r
16351 if (session.user) {\r
16352 html += this.get_control(\r
16353 'star', \r
16354 "Comments.like('"+page_id+"','"+comment.ID+"')", \r
16355 'Like' + (comment.Like ? (' ('+comment.Like+')') : ''),\r
16356 comment.Like ? (comment.Like + ' ' + ((comment.Like == 1) ? 'person likes this' : 'people like this')) : 'I like this comment'\r
16357 ) + spacer_txt;\r
16358 if (is_admin()) html += this.get_control('trash', "Comments._delete('"+page_id+"','"+comment.ID+"')", 'Delete') + spacer_txt;\r
16359 html += this.get_control('warning', "Comments.report('"+page_id+"','"+comment.ID+"')", 'Report Abuse');\r
16360 }\r
16361 return html;\r
16362 },\r
16363 reply: function(page_id, comment_id) {\r
16364 hide_popup_dialog();\r
16365 delete session.progress;\r
16366 var comment = find_object( this.comments, { ID: comment_id } );\r
16367 var html = '';\r
16368 html += '<div class="dialog_bkgnd" style="background-image:url('+png('/effect/images/big_icons/pencil_paper.png')+')">';\r
16369 html += '<table cellspacing=0 cellpadding=0><tr><td width=600 height=300 valign=center align=center>';\r
16370 html += '<div class="dialog_title">Reply to Comment by "'+comment.Name+'"</div>';\r
16371 html += '<form method=get action="javascript:void(0)"><table cellspacing="0" cellpadding="0"><tr><td align="left">';\r
16372 var name = this.get_name();\r
16373 html += '<p align="left"><span class="fe_label">Posted by:</span>&nbsp;' + name;\r
16374 if (!session.user) html += ' &rarr; <a href="/effect/#CreateAccount">Create Account</a>';\r
16375 html += '</p><br/>';\r
16376 html += '<textarea class="fe_edit" id="fe_comment_body" style="width:400px; height:150px;" wrap="virtual" onkeydown="return catchTab(this,event)"></textarea>';\r
16377 html += Blog.edit_caption;\r
16378 html += '</td></tr></table>';\r
16379 html += '<br><br><table><tr>';\r
16380 html += '<td>' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + '</td>';\r
16381 html += '<td width=50>&nbsp;</td>';\r
16382 html += '<td>' + large_icon_button('check', '<b>Post Reply</b>', "Comments.post_reply('"+page_id+"','"+comment_id+"')") + '</td>';\r
16383 html += '</tr></table>';\r
16384 html += '</form>';\r
16385 html += '</div>';\r
16386 session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; \r
16387 safe_focus( 'fe_comment_body' );\r
16388 show_popup_dialog(600, 300, html);\r
16389 },\r
16390 post_reply: function(page_id, comment_id) {\r
16391 var value = $('fe_comment_body').value;\r
16392 if (!value) return;\r
16393 hide_popup_dialog();\r
16394 show_progress_dialog(1, "Posting reply...");\r
16395 var name = this.get_name();\r
16396 effect_api_mod_touch('comment_replies_get');\r
16397 effect_api_send('comment_post_reply', {\r
16398 PageID: page_id,\r
16399 CommentID: comment_id,\r
16400 Username: session.username || '',\r
16401 Name: name,\r
16402 Comment: value,\r
16403 PageURL: location.href\r
16404 }, [this, 'post_reply_finish'], { _page_id: page_id, _comment_id: comment_id } );\r
16405 },\r
16406 post_reply_finish: function(response, tx) {\r
16407 hide_popup_dialog();\r
16408 var page_id = tx._page_id;\r
16409 var comment_id = tx._comment_id;\r
16410 var comment = find_object( this.comments, { ID: comment_id } );\r
16411 do_message('success', "Comment reply posted successfully.");\r
16412 this.show_replies(page_id, comment_id);\r
16413 if (!comment.Replies) comment.Replies = 1; else comment.Replies++;\r
16414 $('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment );\r
16415 },\r
16416 show_replies: function(page_id, comment_id) {\r
16417 var comment = find_object( this.comments, { ID: comment_id } );\r
16418 if (!comment._replies_visible) {\r
16419 $('d_comment_replies_' + comment_id).show().innerHTML = '<img src="images/loading.gif" width="32" height="32"/>';\r
16420 }\r
16421 var args = { page_id: page_id, comment_id: comment_id, offset: 0, limit: 100 };\r
16422 effect_api_get( 'comment_replies_get', args, [this, 'receive_replies_response'], { _search_args: args } );\r
16423 },\r
16424 receive_replies_response: function(response, tx) {\r
16425 var page_id = tx._search_args.page_id;\r
16426 var comment_id = tx._search_args.comment_id;\r
16427 var comment = find_object( this.comments, { ID: comment_id } );\r
16428 var html = '';\r
16429 var replies = always_array( response.Items.Item );\r
16430 for (var idx = 0, len = replies.length; idx < len; idx++) {\r
16431 var reply = replies[idx];\r
16432 html += get_chat_balloon(\r
16433 (reply.Username == session.username) ? 'blue' : 'grey', \r
16434 reply.Username, \r
16435 reply.Comment.replace(/^<div[^>]*?>(.+)<\/div>$/i, '$1')\r
16436 );\r
16437\r
16438 $('d_comment_replies_' + comment_id).innerHTML = html;\r
16439 if (!comment._replies_visible) {\r
16440 $('d_comment_replies_' + comment_id).hide();\r
16441 animate_div_visibility( 'd_comment_replies_' + comment_id, true );\r
16442 }\r
16443 comment._replies_visible = true;\r
16444 $('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment );\r
16445 },\r
16446 hide_replies: function(page_id, comment_id) {\r
16447 var comment = find_object( this.comments, { ID: comment_id } );\r
16448 if (comment._replies_visible) {\r
16449 animate_div_visibility( 'd_comment_replies_' + comment_id, false );\r
16450 comment._replies_visible = false;\r
16451 $('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment );\r
16452 }\r
16453 },\r
16454 like: function(page_id, comment_id) {\r
16455 effect_api_mod_touch('comments_get');\r
16456 effect_api_send('comment_like', {\r
16457 PageID: page_id,\r
16458 CommentID: comment_id\r
16459 }, [this, 'like_finish'], { _page_id: page_id, _comment_id: comment_id, _on_error: [this, 'like_error'] } );\r
16460 },\r
16461 like_error: function(response, tx) {\r
16462 if (response.Code == 'comment_already_like') do_message('error', "You already like this comment.");\r
16463 else do_error( response.Description );\r
16464 },\r
16465 like_finish: function(resopnse, tx) {\r
16466 var page_id = tx._page_id;\r
16467 var comment_id = tx._comment_id;\r
16468 var comment = find_object( this.comments, { ID: comment_id } );\r
16469 do_message('success', "You now like this comment.");\r
16470 if (!comment.Like) comment.Like = 1; else comment.Like++;\r
16471 $('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment );\r
16472 },\r
16473 add: function(page_id) {\r
16474 hide_popup_dialog();\r
16475 delete session.progress;\r
16476 var html = '';\r
16477 html += '<div class="dialog_bkgnd" style="background-image:url('+png('/effect/images/big_icons/pencil_paper.png')+')">';\r
16478 html += '<table cellspacing=0 cellpadding=0><tr><td width=600 height=300 valign=center align=center>';\r
16479 html += '<div class="dialog_title">Post New Comment</div>';\r
16480 html += '<form method=get action="javascript:void(0)"><table cellspacing="0" cellpadding="0"><tr><td align="left">';\r
16481 var name = this.get_name();\r
16482 html += '<p align="left"><span class="fe_label">Posted by:</span>&nbsp;' + name;\r
16483 if (!session.user) html += ' &rarr; <a href="/effect/#CreateAccount">Create Account</a>';\r
16484 html += '</p><br/>';\r
16485 html += '<textarea class="fe_edit" id="fe_comment_body" style="width:400px; height:150px;" wrap="virtual" onkeydown="return catchTab(this,event)"></textarea>';\r
16486 html += Blog.edit_caption;\r
16487 html += '</td></tr></table>';\r
16488 html += '<br><br><table><tr>';\r
16489 html += '<td>' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + '</td>';\r
16490 html += '<td width=50>&nbsp;</td>';\r
16491 html += '<td>' + large_icon_button('check', '<b>Post Comment</b>', "Comments.post('"+page_id+"')") + '</td>';\r
16492 html += '</tr></table>';\r
16493 html += '</form>';\r
16494 html += '</div>';\r
16495 session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; \r
16496 safe_focus( 'fe_comment_body' );\r
16497 show_popup_dialog(600, 300, html);\r
16498 },\r
16499 report: function(page_id, comment_id) {\r
16500 if (confirm('Are you sure you want to report this comment to the site administrators as abusive and/or spam?')) {\r
16501 effect_api_send('comment_report_abuse', {\r
16502 PageID: page_id,\r
16503 CommentID: comment_id\r
16504 }, [this, 'report_finish'], { _page_id: page_id, _comment_id: comment_id } );\r
16505 }\r
16506 },\r
16507 report_finish: function(response, tx) {\r
16508 do_message('success', 'Your abuse report has been received, and will be evaluated by the site administrators.');\r
16509 },\r
16510 _delete: function(page_id, comment_id) {\r
16511 if (confirm('Are you sure you want to permanently delete this comment?')) {\r
16512 effect_api_mod_touch('comments_get');\r
16513 effect_api_send('comment_delete', {\r
16514 PageID: page_id,\r
16515 CommentID: comment_id\r
16516 }, [this, 'delete_finish'], { _page_id: page_id, _comment_id: comment_id } );\r
16517 }\r
16518 },\r
16519 delete_finish: function(response, tx) {\r
16520 do_message('success', 'The comment was deleted successfully.');\r
16521 var page_id = tx._page_id;\r
16522 this.search({ page_id: page_id });\r
16523 },\r
16524 get_name: function() {\r
16525 var name = '(Anonymous)';\r
16526 if (session.user) {\r
16527 if (get_bool_pref('public_profile')) name = session.user.FullName;\r
16528 else name = session.username;\r
16529 }\r
16530 return name;\r
16531 },\r
16532 post: function(page_id) {\r
16533 var value = $('fe_comment_body').value;\r
16534 if (!value) return;\r
16535 hide_popup_dialog();\r
16536 show_progress_dialog(1, "Posting comment...");\r
16537 var name = this.get_name();\r
16538 effect_api_mod_touch('comments_get');\r
16539 effect_api_send('comment_post', {\r
16540 PageID: page_id,\r
16541 Username: session.username || '',\r
16542 Name: name,\r
16543 Comment: value\r
16544 }, [this, 'post_finish'], { _page_id: page_id } );\r
16545 },\r
16546 post_finish: function(response, tx) {\r
16547 hide_popup_dialog();\r
16548 var comment_id = response.CommentID;\r
16549 var page_id = tx._page_id;\r
16550 this.search({ page_id: page_id, highlight: comment_id });\r
16551 }\r
16552 };\r
16553 Class.create( 'Menu', {\r
16554 id: '', \r
16555 menu: null, \r
16556 __construct: function(id) {\r
16557 this.id = id;\r
16558 },\r
16559 load: function() {\r
16560 if (!this.menu) {\r
16561 this.menu = $(this.id);\r
16562 assert( !!this.menu, "Could not locate DOM element: " + this.id );\r
16563 }\r
16564 },\r
16565 get_value: function() {\r
16566 this.load();\r
16567 return this.menu.options[this.menu.selectedIndex].value;\r
16568 },\r
16569 set_value: function(value, auto_add) {\r
16570 value = str_value(value);\r
16571 this.load();\r
16572 for (var idx = 0, len = this.menu.options.length; idx < len; idx++) {\r
16573 if (this.menu.options[idx].value == value) {\r
16574 this.menu.selectedIndex = idx;\r
16575 return true;\r
16576 }\r
16577 }\r
16578 if (auto_add) {\r
16579 this.menu.options[this.menu.options.length] = new Option(value, value);\r
16580 this.menu.selectedIndex = this.menu.options.length - 1;\r
16581 return true;\r
16582 }\r
16583 return false;\r
16584 },\r
16585 disable: function() {\r
16586 this.load();\r
16587 this.menu.disabled = true;\r
16588 this.menu.setAttribute( 'disabled', 'disabled' );\r
16589 },\r
16590 enable: function() {\r
16591 this.load();\r
16592 this.menu.setAttribute( 'disabled', '' );\r
16593 this.menu.disabled = false;\r
16594 },\r
16595 populate: function(items, sel_value) {\r
16596 this.load();\r
16597 this.menu.options.length = 0;\r
16598 for (var idx = 0, len = items.length; idx < len; idx++) {\r
16599 var item = items[idx];\r
16600 var item_name = '';\r
16601 var item_value = '';\r
16602 if (isa_hash(item)) {\r
16603 item_name = item.label;\r
16604 item_value = item.data;\r
16605 }\r
16606 else if (isa_array(item)) {\r
16607 item_name = item[0];\r
16608 item_value = item[1];\r
16609 }\r
16610 else {\r
16611 item_name = item_value = item;\r
16612 }\r
16613 this.menu.options[ this.menu.options.length ] = new Option( item_name, item_value );\r
16614 if (item_value == sel_value) this.menu.selectedIndex = idx;\r
16615\r
16616 }\r
16617 } ); \r
16618 Class.subclass( Menu, 'MultiMenu', {\r
16619 __static: {\r
16620 toggle_type: function(id) {\r
16621 var menu = $(id);\r
16622 assert(menu, "Could not find menu in DOM: " + id);\r
16623 if (menu.disabled) return;\r
16624 var obj = MenuManager.find(id);\r
16625 assert(obj, "Could not find menu in MenuManager: " + id);\r
16626 var div = $( 'd_inner_' + id );\r
16627 var ic = $( 'ic_' + id );\r
16628 var is_multiple = (ic.src.indexOf('contract') > -1);\r
16629 obj.multi = !is_multiple;\r
16630 var multiple_tag = !is_multiple ? \r
16631 ' multiple="multiple" size=5' : '';\r
16632 var items = [];\r
16633 for (var idx = 0; idx < menu.options.length; idx++) {\r
16634 var option = menu.options[idx];\r
16635 array_push( items, {\r
16636 value: option.value,\r
16637 text: option.text,\r
16638 selected: option.selected\r
16639 });\r
16640\r
16641 var html = '';\r
16642 html += '<select name="'+id+'" id="'+id+'"' + multiple_tag + ' ' + compose_attribs(obj.attribs) + '>' + "\n";\r
16643 var found_selected = 0;\r
16644 for (var idx in items) {\r
16645 var item = items[idx];\r
16646 html += '<option value="' + item.value.replace(/\"/g, "&quot;") + '"';\r
16647 if (item.selected && (!found_selected || multiple_tag)) {\r
16648 html += ' selected="selected"';\r
16649 found_selected = 1;\r
16650 }\r
16651 html += '>' + item.text + '</option>' + "\n";\r
16652 }\r
16653 html += '</select>';\r
16654 div.innerHTML = html;\r
16655 ic.src = images_uri + '/menu_' + (is_multiple ? 'expand' : 'contract') + '.gif';\r
16656 obj.menu = null;\r
16657 }\r
16658 }, \r
16659 attribs: null, \r
16660 multi: false, \r
16661 toggle: true, \r
16662 __construct: function(id, attribs) {\r
16663 this.id = id;\r
16664 if (attribs) this.attribs = attribs;\r
16665 },\r
16666 get_html: function(items, selected_csv, attribs) {\r
16667 if (!items) items = [];\r
16668 if (!selected_csv) selected_csv = '';\r
16669 if (attribs) this.attribs = attribs;\r
16670 var selected = csv_to_hash(selected_csv);\r
16671 this.menu = null;\r
16672 if (num_keys(selected) > 1) this.multi = true;\r
16673 var html = '<div id="d_outer_'+this.id+'"><form>';\r
16674 html += '<table cellspacing="0" cellpadding="0"><tr>';\r
16675 html += '<td><div id="d_inner_'+this.id+'"><select id="'+this.id+'"';\r
16676 if (this.multi) html += ' multiple="multiple" size="5"';\r
16677 html += compose_attribs(this.attribs);\r
16678 html += '>';\r
16679 for (var idx = 0, len = items.length; idx < len; idx++) {\r
16680 var item = items[idx];\r
16681 var item_name = '';\r
16682 var item_value = '';\r
16683 if (isa_hash(item)) {\r
16684 item_name = item.label;\r
16685 item_value = item.data;\r
16686 }\r
16687 else if (isa_array(item)) {\r
16688 item_name = item[0];\r
16689 item_value = item[1];\r
16690 }\r
16691 else {\r
16692 item_name = item_value = item;\r
16693 }\r
16694 html += '<option value="'+item_value+'"';\r
16695 if (selected[item_value]) html += ' selected="selected"';\r
16696 html += '>' + item_name + '</option>';\r
16697 }\r
16698 html += '</select></div></td>';\r
16699 html += '<td width="1">' + spacer(1,1) + '</td>';\r
16700 if (this.toggle) html += '<td valign="bottom"><img id="ic_'+this.id+'" src="'+images_uri+'/menu_'+(this.multi ? 'contract' : 'expand')+'.gif" width="16" height="16" style="cursor:pointer" onClick="MultiMenu.toggle_type(\''+this.id+'\')"><br/>'+spacer(1,2)+'</td>';\r
16701 html += '</tr></table>';\r
16702 html += '</form></div>';\r
16703 return html;\r
16704 },\r
16705 get_value: function() {\r
16706 this.load();\r
16707 var value = '';\r
16708 for (var idx = 0; idx < this.menu.options.length; idx++) {\r
16709 var option = this.menu.options[idx];\r
16710 if (option.selected && option.value.length) {\r
16711 if (value.length > 0) value += ',';\r
16712 value += option.value;\r
16713 }\r
16714\r
16715 return value;\r
16716 },\r
16717 set_value: function(value, auto_add) {\r
16718 value = '' + value; \r
16719 this.load();\r
16720 if (!value) {\r
16721 value = '';\r
16722 for (var idx = 0; idx < this.menu.options.length; idx++) {\r
16723 var option = this.menu.options[idx];\r
16724 option.selected = (option.value == value);\r
16725 }\r
16726 return;\r
16727 }\r
16728 var selected = csv_to_hash(value);\r
16729 if ((num_keys(selected) > 1) && !this.multi) {\r
16730 MultiMenu.toggle_type(this.id);\r
16731 var self = this;\r
16732 setTimeout( function() {\r
16733 self.set_value(value, auto_add);\r
16734 }, 1 );\r
16735 return;\r
16736 }\r
16737 for (var idx = 0; idx < this.menu.options.length; idx++) {\r
16738 var option = this.menu.options[idx];\r
16739 option.selected = selected[option.value] ? true : false;\r
16740 }\r
16741 },\r
16742 populate: function(items, value) {\r
16743 this.load();\r
16744 this.menu.options.length = 0;\r
16745 if (!value) value = '';\r
16746 var selected = csv_to_hash(value);\r
16747 for (var idx = 0, len = items.length; idx < len; idx++) {\r
16748 var item = items[idx];\r
16749 var item_name = '';\r
16750 var item_value = '';\r
16751 if (isa_hash(item)) {\r
16752 item_name = item.label;\r
16753 item_value = item.data;\r
16754 }\r
16755 else if (isa_array(item)) {\r
16756 item_name = item[0];\r
16757 item_value = item[1];\r
16758 }\r
16759 else {\r
16760 item_name = item_value = item;\r
16761 }\r
16762 var opt = new Option( item_name, item_value );\r
16763 this.menu.options[ this.menu.options.length ] = opt;\r
16764 opt.selected = selected[item_value] ? true : false;\r
16765\r
16766 },\r
16767 collapse: function() {\r
16768 if (this.multi) MultiMenu.toggle_type(this.id);\r
16769 },\r
16770 expand: function() {\r
16771 if (!this.multi) MultiMenu.toggle_type(this.id);\r
16772 }\r
16773 } ); \r
16774 Class.create( 'MenuManager', {\r
16775 __static: {\r
16776 menus: {},\r
16777 register: function(menu) {\r
16778 this.menus[ menu.id ] = menu;\r
16779 return menu; \r
16780 },\r
16781 find: function(id) {\r
16782 return this.menus[id];\r
16783 }\r
16784\r
16785 } ); \r
16786 Class.create( 'GrowlManager', {\r
16787 lifetime: 10,\r
16788 marginRight: 0,\r
16789 marginTop: 0,\r
16790 __construct: function() {\r
16791 this.growls = [];\r
16792 },\r
16793 growl: function(type, msg) {\r
16794 if (find_object(this.growls, { type: type, msg: msg })) return;\r
16795 var div = $(document.createElement('div'));\r
16796 div.className = 'growl_message ' + type;\r
16797 div.setOpacity(0.0);\r
16798 div.innerHTML = '<div class="growl_message_inner">' + msg + '<br/>' + spacer(1,5) + '</div>';\r
16799 $('d_growl_wrapper').insertBefore( div, $('d_growl_top').nextSibling );\r
16800 var growl = { id:get_unique_id(), type: type, msg: msg, opacity:0.0, start:hires_time_now(), div:div };\r
16801 this.growls.push(growl);\r
16802 this.handle_resize();\r
16803 this.animate(growl);\r
16804 var self = this;\r
16805 div.onclick = function() {\r
16806 delete_object(self.growls, { id: growl.id });\r
16807 $('d_growl_wrapper').removeChild( div );\r
16808 };\r
16809 },\r
16810 animate: function(growl) {\r
16811 if (growl.deleted) return;\r
16812 var now = hires_time_now();\r
16813 var div = growl.div;\r
16814 if (now - growl.start <= 0.5) {\r
16815 div.setOpacity( tweenFrame(0.0, 1.0, (now - growl.start) * 2, 'EaseOut', 'Quadratic') );\r
16816 }\r
16817 else if (now - growl.start <= this.lifetime) {\r
16818 if (!growl._fully_opaque) {\r
16819 div.setOpacity( 1.0 );\r
16820 growl._fully_opaque = true;\r
16821 }\r
16822 }\r
16823 else if (now - growl.start <= this.lifetime + 1.0) {\r
16824 div.setOpacity( tweenFrame(1.0, 0.0, (now - growl.start) - this.lifetime, 'EaseOut', 'Quadratic') );\r
16825 }\r
16826 else {\r
16827 delete_object(this.growls, { id: growl.id });\r
16828 $('d_growl_wrapper').removeChild( div );\r
16829 return; \r
16830 }\r
16831 var self = this;\r
16832 setTimeout( function() { self.animate(growl); }, 33 );\r
16833 },\r
16834 handle_resize: function() {\r
16835 var div = $('d_growl_wrapper');\r
16836 if (this.growls.length) {\r
16837 var size = getInnerWindowSize();\r
16838 div.style.top = '' + (10 + this.marginTop) + 'px';\r
16839 div.style.left = '' + Math.floor((size.width - 310) - this.marginRight) + 'px';\r
16840 }\r
16841 else {\r
16842 div.style.left = '-2000px';\r
16843 }\r
16844 }\r
16845 } );\r
16846 window.$GR = new GrowlManager();\r
16847 if (window.addEventListener) {\r
16848 window.addEventListener( "resize", function() {\r
16849 $GR.handle_resize();\r
16850 }, false );\r
16851 }\r
16852 else if (window.attachEvent && !ie6) {\r
16853 window.attachEvent("onresize", function() {\r
16854 $GR.handle_resize();\r
16855 });\r
16856 }\r
16857 Class.create( 'Effect.Page', {\r
16858 ID: '', \r
16859 data: null,   \r
16860 active: false, \r
16861 __construct: function(config) {\r
16862 if (!config) return;\r
16863 this.data = {};\r
16864 if (!config) config = {};\r
16865 for (var key in config) this[key] = config[key];\r
16866 this.div = $('page_' + this.ID);\r
16867 assert(this.div, "Cannot find page div: page_" + this.ID);\r
16868 },\r
16869 onInit: function() {\r
16870 },\r
16871 onActivate: function() {\r
16872 return true;\r
16873 },\r
16874 onDeactivate: function() {\r
16875 return true;\r
16876 },\r
16877 show: function() {\r
16878 this.div.show();\r
16879 },\r
16880 hide: function() {\r
16881 this.div.hide();\r
16882 },\r
16883 gosub: function(anchor) {\r
16884 }\r
16885 } ); \r
16886 Class.require( 'Effect.Page' );\r
16887 Class.create( 'Effect.PageManager', {\r
16888 pages: null, \r
16889 current_page_id: '', \r
16890 on_demand: {}, \r
16891 __construct: function(page_list) {\r
16892 this.pages = [];\r
16893 this.page_list = page_list;\r
16894 for (var idx = 0, len = page_list.length; idx < len; idx++) {\r
16895 Debug.trace( 'page', "Initializing page: " + page_list[idx].ID );\r
16896 if (Effect.Page[ page_list[idx].ID ]) {\r
16897 var page = new Effect.Page[ page_list[idx].ID ]( page_list[idx] );\r
16898 page.onInit();\r
16899 this.pages.push(page);\r
16900 }\r
16901 else {\r
16902 Debug.trace( 'page', 'Page ' + page_list[idx].ID + ' will be loaded on-demand' );\r
16903 }\r
16904 }\r
16905 },\r
16906 find: function(id) {\r
16907 var page = find_object( this.pages, { ID: id } );\r
16908 if (!page) Debug.trace('PageManager', "Could not find page: " + id);\r
16909 return page;\r
16910 },\r
16911 notify_load: function(file, id) {\r
16912 for (var idx = 0, len = this.page_list.length; idx < len; idx++) {\r
16913 var page_config = this.page_list[idx];\r
16914 if (page_config.File == file) {\r
16915 Debug.trace( 'page', "Initializing page on-demand: " + page_config.ID );\r
16916 var page = new Effect.Page[ page_config.ID ]( page_config );\r
16917 page.onInit();\r
16918 this.pages.push(page);\r
16919 }\r
16920 }\r
16921 var self = this;\r
16922 setTimeout( function() {\r
16923 var result = self.activate(id, self.temp_args);\r
16924 delete self.temp_args;\r
16925 $('d_page_loading').hide();\r
16926 if (!result) {\r
16927 $('page_'+id).hide();\r
16928 self.current_page_id = '';\r
16929 }\r
16930 }, 1 );\r
16931 },\r
16932 activate: function(id, args) {\r
16933 if (!find_object( this.pages, { ID: id } )) {\r
16934 var page_config = find_object( this.page_list, { ID: id } );\r
16935 assert(!!page_config, "Page config not found: " + id );\r
16936 Debug.trace('page', "Loading file on-demand: " + page_config.File + " for page: " + id);\r
16937 var url = '/effect/api/load_page/' + page_config.File + '?onafter=' + escape('page_manager.notify_load(\''+page_config.File+'\',\''+id+'\')');\r
16938 if (page_config.Requires) {\r
16939 var files = page_config.Requires.split(/\,\s*/);\r
16940 for (var idx = 0, len = files.length; idx < len; idx++) {\r
16941 var filename = files[idx];\r
16942 if (!this.on_demand[filename]) {\r
16943 Debug.trace('page', "Also loading file: " + filename);\r
16944 url += '&file=' + filename;\r
16945 this.on_demand[filename] = 1;\r
16946\r
16947\r
16948\r
16949 $('d_page_loading').show();\r
16950 this.temp_args = args;\r
16951 load_script( url );\r
16952 return true;\r
16953 }\r
16954 $('page_'+id).show();\r
16955 var page = this.find(id);\r
16956 page.active = true;\r
16957 if (!args) args = [];\r
16958 if (!isa_array(args)) args = [ args ];\r
16959 var result = page.onActivate.apply(page, args);\r
16960 if (typeof(result) == 'boolean') return result;\r
16961 else return alert("Page " + id + " onActivate did not return a boolean!");\r
16962 },\r
16963 deactivate: function(id, new_id) {\r
16964 var page = this.find(id);\r
16965 var result = page.onDeactivate(new_id);\r
16966 if (result) {\r
16967 $('page_'+id).hide();\r
16968 page.active = false;\r
16969 }\r
16970 return result;\r
16971 },\r
16972 click: function(id, args) {\r
16973 Debug.trace('page', "Switching pages to: " + id);\r
16974 var old_id = this.current_page_id;\r
16975 if (this.current_page_id) {\r
16976 var result = this.deactivate( this.current_page_id, id );\r
16977 if (!result) return false; \r
16978 }\r
16979 this.current_page_id = id;\r
16980 this.old_page_id = old_id;\r
16981 window.scrollTo( 0, 0 );\r
16982 var result = this.activate(id, args);\r
16983 if (!result) {\r
16984 $('page_'+id).hide();\r
16985 this.current_page_id = '';\r
16986 }\r
16987 return true;\r
16988 }\r
16989 } ); \r
16990 Class.subclass( Effect.Page, "Effect.Page.Main", {\r
16991 inited: false,\r
16992 onActivate: function() {\r
16993 Nav.bar( ['Main', 'EffectGames.com'] );\r
16994 Nav.title('');\r
16995 $('d_blog_news').innerHTML = loading_image();\r
16996 $('d_blog_community').innerHTML = loading_image();\r
16997 $('d_blog_featured').innerHTML = loading_image();\r
16998 Blog.search({\r
16999 stag: 'featured_game',\r
17000 limit: 4,\r
17001 full: 1,\r
17002 callback: [this, 'receive_featured_games']\r
17003 });\r
17004 effect_api_get( 'get_site_info', { cat: 'pop_pub_games' }, [this, 'receive_pop_pub_games'], { } );\r
17005 Blog.search({\r
17006 stag: 'front_page',\r
17007 limit: 5,\r
17008 target: 'd_blog_news',\r
17009 more: 1\r
17010 });\r
17011 Blog.search({\r
17012 path: '/community',\r
17013 limit: 5,\r
17014 target: 'd_blog_community',\r
17015 more: 1\r
17016 });\r
17017 if (!this.inited) {\r
17018 this.inited = true;\r
17019 config.Strings.MainSlideshow.Slide = always_array( config.Strings.MainSlideshow.Slide );\r
17020 this.slide_idx = 0;\r
17021 this.num_slides = config.Strings.MainSlideshow.Slide.length;\r
17022 this.slide_div_num = 0;\r
17023 this.slide_dir = 1;\r
17024 this.bk_pos = -340;\r
17025 this.bk_pos_target = -340;\r
17026 this.slide_images = [];\r
17027 for (var idx = 0, len = this.num_slides; idx < len; idx++) {\r
17028 var url = images_uri + '/' + config.Strings.MainSlideshow.Slide[idx].Photo;\r
17029 this.slide_images[idx] = new Image();\r
17030 this.slide_images[idx].src = png(url, true);\r
17031 }                       \r
17032 }\r
17033 this.height_target = 470;\r
17034 this.height_start = $('d_header').offsetHeight;\r
17035 this.time_start = hires_time_now();\r
17036 this.duration = 0.75;\r
17037 if (!this.timer) this.timer = setTimeout( '$P("Main").animate_mhs()', 33 );\r
17038 if (session.user) $('d_blurb_main').hide();\r
17039 else {\r
17040 $('d_blurb_main').innerHTML = get_string('/Main/Blurb');\r
17041 $('d_blurb_main').show();\r
17042 }\r
17043 return true;\r
17044 },\r
17045 receive_pop_pub_games: function(response, tx) {\r
17046 var html = '';\r
17047 if (response.Data && response.Data.Games && response.Data.Games.Game) {\r
17048 var games = always_array( response.Data.Games.Game );\r
17049 for (var idx = 0, len = Math.min(games.length, 16); idx < len; idx++) {\r
17050 var game = games[idx];\r
17051 html += '<div class="game_thumb" onClick="Nav.go(\'Game/'+game.GameID+'\')">' + \r
17052 (game.Logo ? \r
17053 user_image_thumbnail(game.Logo, 80, 60) : \r
17054 '<img class="png" src="/effect/images/logo_80_60.png" width="80" height="60"/>'\r
17055 ) + '<br/>' + ww_fit_box(game.Title, 80, 2, session.em_width, 1) + '</div>';\r
17056\r
17057 html += '<div class="clear"></div>';\r
17058 }\r
17059 else {\r
17060 html += 'No active public games found!  Why not <a href="#GameEdit"><b>create a new one?</b></a>';\r
17061 }\r
17062 $('d_main_pop_pub_games').innerHTML = html;\r
17063 },\r
17064 receive_featured_games: function(response, tx) {\r
17065 var html = '';\r
17066 if (response.Rows && response.Rows.Row) {\r
17067 html += '<table cellspacing="0" cellpadding="0" border="0" width="100%">';\r
17068 var rows = always_array( response.Rows.Row );\r
17069 for (var idx = 0, len = rows.length; idx < len; idx++) {\r
17070 var row = rows[idx];\r
17071 var image_url = row.Params.featured_image;\r
17072 if (image_url && image_url.match(/^(\w+)\/(\w+\.\w+)$/)) {\r
17073 image_url = '/effect/api/view/users/' + RegExp.$1 + '/images/' + RegExp.$2;\r
17074 }\r
17075 if (idx % 2 == 0) html += '<tr>';\r
17076 html += '<td width="50%">';\r
17077 html += '<table cellspacing="0" cellpadding="0"><tr>';\r
17078 html += '<td width="175" height="175">';\r
17079 html += '<div class="featured_image_container" style="background-image:url('+image_url+')">';\r
17080 html += '<div class="featured_image_overlay" onClick="window.open(\''+row.Params.featured_link+'\')"></div>';\r
17081 html += '</div>';\r
17082 html += '</td>';\r
17083 html += '<td width="10">' + spacer(10,1) + '</td>';\r
17084 html += '<td width="*" valign="top">';\r
17085 html += '<div class="blog_title"><a href="'+row.Params.featured_link+'" target="_blank">' + row.Title + '</a></div>';\r
17086 html += '<div class="featured_game_content">' + row.HTML + '</div>';\r
17087 html += '</td>';\r
17088 html += '<td width="10">' + spacer(15,1) + '</td>';\r
17089 html += '</tr></table>';\r
17090 html += spacer(1,20);\r
17091 html += '</td>';\r
17092 if (idx % 2 == 1) html += '</tr>';\r
17093\r
17094 if (rows.length % 2 == 1) {\r
17095 html += '<td></td>';\r
17096 html += '</tr>';\r
17097 }\r
17098 html += '</table>';\r
17099\r
17100 $('d_blog_featured').innerHTML = html;\r
17101 },\r
17102 animate_mhs: function() {\r
17103 var now = hires_time_now();\r
17104 if (now - this.time_start >= this.duration) {\r
17105 $('d_header').style.height = '' + this.height_target + 'px';\r
17106 $('d_shadow').style.height = '' + this.height_target + 'px';\r
17107 delete this.timer;\r
17108 }\r
17109 else {\r
17110 var height = tweenFrame(this.height_start, this.height_target, (now - this.time_start) / this.duration, 'EaseOut', 'Circular');\r
17111 $('d_header').style.height = '' + height + 'px';\r
17112 $('d_shadow').style.height = '' + height + 'px';\r
17113 this.timer = setTimeout( '$P("Main").animate_mhs()', 33 );\r
17114 }\r
17115 },\r
17116 onDeactivate: function() {\r
17117 $('d_blog_news').innerHTML = '';\r
17118 $('d_blog_community').innerHTML = '';\r
17119 this.height_target = 75;\r
17120 this.height_start = $('d_header').offsetHeight;\r
17121 this.time_start = hires_time_now();\r
17122 if (!this.timer) this.timer = setTimeout( '$P("Main").animate_mhs()', 33 );\r
17123 return true;\r
17124 },\r
17125 draw_slide: function() {\r
17126 if (this.slide_timer) return;\r
17127 var slide = config.Strings.MainSlideshow.Slide[ this.slide_idx ];\r
17128 this.old_photo = $('d_header_slideshow_photo_' + this.slide_div_num);\r
17129 this.old_text = $('d_header_slideshow_text_' + this.slide_div_num);\r
17130 this.slide_div_num = 1 - this.slide_div_num;\r
17131 this.new_photo = $('d_header_slideshow_photo_' + this.slide_div_num);\r
17132 this.new_text = $('d_header_slideshow_text_' + this.slide_div_num);\r
17133 this.new_photo.style.backgroundImage = 'url('+png(images_uri+'/'+slide.Photo, true)+')';\r
17134 this.new_photo.setOpacity(0.0);\r
17135 var html = '';\r
17136 html += slide.Text;\r
17137 this.slide_width = this.new_text.offsetWidth;\r
17138 this.new_text.innerHTML = html;\r
17139 if (this.slide_dir == 1) this.new_text.style.left = '' + this.slide_width + 'px';\r
17140 else this.new_text.style.left = '-' + this.slide_width + 'px';\r
17141 this.slide_time_start = hires_time_now();\r
17142 this.slide_timer = setTimeout( '$P("Main").animate_mhs_slide()', 33 );\r
17143 },\r
17144 animate_mhs_slide: function() {\r
17145 var now = hires_time_now();\r
17146 if (now - this.slide_time_start >= this.duration) {\r
17147 this.new_text.style.left = '0px';\r
17148 this.old_text.style.left = '-' + this.slide_width + 'px';\r
17149 this.new_photo.setOpacity( 1.0 );\r
17150 this.old_photo.setOpacity( 0.0 );\r
17151 delete this.slide_timer;\r
17152 this.bk_pos = this.bk_pos_target;\r
17153 }\r
17154 else {\r
17155 var value = tweenFrame(0.0, 1.0, (now - this.slide_time_start) / this.duration, 'EaseOut', 'Circular');\r
17156 if (this.slide_dir == 1) {\r
17157 this.new_text.style.left = '' + Math.floor( this.slide_width - (this.slide_width * value) ) + 'px';\r
17158 this.old_text.style.left = '-' + Math.floor( this.slide_width * value ) + 'px';\r
17159 }\r
17160 else {\r
17161 this.new_text.style.left = '-' + Math.floor( this.slide_width - (this.slide_width * value) ) + 'px';\r
17162 this.old_text.style.left = '' + Math.floor( this.slide_width * value ) + 'px';\r
17163 }\r
17164 this.new_photo.setOpacity( value );\r
17165 this.old_photo.setOpacity( 1.0 - value );\r
17166 var bkp = Math.floor( this.bk_pos + ((this.bk_pos_target - this.bk_pos) * value) );\r
17167 $('d_header').style.backgroundPosition = '' + bkp + 'px 0px';\r
17168 this.slide_timer = setTimeout( '$P("Main").animate_mhs_slide()', 33 );\r
17169 }\r
17170 },\r
17171 prev_slide: function() {\r
17172 this.bk_pos_target += 200;\r
17173 this.slide_idx--;\r
17174 if (this.slide_idx < 0) this.slide_idx += this.num_slides;\r
17175 this.slide_dir = -1;\r
17176 this.draw_slide();\r
17177 },\r
17178 next_slide: function() {\r
17179 this.bk_pos_target -= 200;\r
17180 this.slide_idx++;\r
17181 if (this.slide_idx >= this.num_slides) this.slide_idx -= this.num_slides;\r
17182 this.slide_dir = 1;\r
17183 this.draw_slide();\r
17184 }\r
17185 } );\r
17186 Class.subclass( Effect.Page, "Effect.Page.PublicGameList", {\r
17187 onActivate: function() {\r
17188 Nav.bar(\r
17189 ['Main', 'EffectGames.com'],\r
17190 ['PublicGameList', "All Public Games"]\r
17191 );\r
17192 Nav.title( "List of All Public Game Projects" );\r
17193 effect_api_get( 'get_site_info', { cat: 'all_pub_games' }, [this, 'receive_all_pub_games'], { } );\r
17194 this.div.innerHTML = loading_image();\r
17195 return true;\r
17196 },\r
17197 onDeactivate: function() {\r
17198 this.div.innerHTML = '';\r
17199 return true;\r
17200 },\r
17201 receive_all_pub_games: function(response, tx) {\r
17202 var html = '';\r
17203 html += '<h1>List of All Public Game Projects</h1>';\r
17204 html += '<div class="blurb">This is the complete list of public games currently being built by our users, presented in alphabetical order.  Maybe they could use some help!  Check out the game project pages and see (requires user account).</div>';\r
17205 if (response.Data && response.Data.Games && response.Data.Games.Game) {\r
17206 var games = always_array( response.Data.Games.Game );\r
17207 for (var idx = 0, len = games.length; idx < len; idx++) {\r
17208 var game = games[idx];\r
17209 html += '<div class="game_thumb" onClick="Nav.go(\'Game/'+game.GameID+'\')">' + \r
17210 (game.Logo ? \r
17211 user_image_thumbnail(game.Logo, 80, 60) : \r
17212 '<img class="png" src="/effect/images/logo_80_60.png" width="80" height="60"/>'\r
17213 ) + '<br/>' + ww_fit_box(game.Title, 80, 2, session.em_width, 1) + '</div>';\r
17214\r
17215 html += '<div class="clear"></div>';\r
17216 }\r
17217 else {\r
17218 html += 'No public games found!  Why not <a href="#GameEdit"><b>create a new one?</b></a>';\r
17219 }\r
17220 this.div.innerHTML = html;\r
17221 }\r
17222 } );\r
17223 Class.subclass( Effect.Page, "Effect.Page.Search", {\r
17224 onActivate: function(args) {\r
17225 if (!args) args = {};\r
17226 var search_text = args.q;\r
17227 var start = args.s || 0;\r
17228 if (!start) start = 0;\r
17229 var title = 'Search results for "'+search_text+'"';\r
17230 Nav.bar(\r
17231 ['Main', 'EffectGames.com'],\r
17232 ['Search?q=' + escape(search_text), "Search Results"]\r
17233 );\r
17234 Nav.title( title );\r
17235 this.last_search_text = search_text;\r
17236 $('d_article_search').innerHTML = loading_image();\r
17237 load_script( 'http://www.google.com/uds/GwebSearch?callback=receive_google_search_results&context=0&lstkp=0&rsz=large&hl=en&source=gsc&gss=.com&sig=&q='+escape(search_text)+'%20site%3Ahttp%3A%2F%2Fwww.effectgames.com%2F&key=notsupplied&v=1.0&start='+start+'&nocache=' + (new Date()).getTime() );\r
17238 $('h_article_search').innerHTML = title;\r
17239 return true;\r
17240 },\r
17241 onDeactivate: function(new_page) {\r
17242 $('fe_search_bar').value = '';\r
17243 $('d_article_search').innerHTML = '';\r
17244 return true;\r
17245 }\r
17246 } );\r
17247 function do_search_bar() {\r
17248 var search_text = $('fe_search_bar').value;\r
17249 if (search_text.length) {\r
17250 Nav.go('Search?q=' + escape(search_text));\r
17251 }\r
17252 }\r
17253 function receive_google_search_results(context, response) {\r
17254 var html = '';\r
17255 html += '<div class="powered_by_google">Powered by</div><div class="clear"></div>';\r
17256 if (response.results.length) {\r
17257 for (var idx = 0, len = response.results.length; idx < len; idx++) {\r
17258 var row = response.results[idx];\r
17259 var url = row.unescapedUrl.replace(/^.+article\.psp\.html/, '#Article'); \r
17260 html += '<div class="google_search_result_row">';\r
17261 html += '<div class="link"><a href="'+url+'"><b>'+row.title+'</b></a></div>';\r
17262 html += '<div class="preview">' + row.content + '</div>';\r
17263 html += '</div>';\r
17264\r
17265\r
17266 else {\r
17267 html += 'No results found.';\r
17268 }\r
17269 if (response.cursor.pages) {\r
17270 html += '<div class="google_pagination">Page: ';\r
17271 for (var idx = 0, len = response.cursor.pages.length; idx < len; idx++) {\r
17272 html += '<span>';\r
17273 var page = response.cursor.pages[idx];\r
17274 var url = '#Search?q=' + escape($P('Search').last_search_text) + '&s=' + page.start;\r
17275 if (response.cursor.currentPageIndex != idx) html += '<a href="'+url+'">';\r
17276 else html += '<b>';\r
17277 html += page.label;\r
17278 if (response.cursor.currentPageIndex != idx) html += '</a>';\r
17279 else html += '</b>';\r
17280 html += '</span>';\r
17281 }\r
17282 html += '</div>';\r
17283 }\r
17284 $('d_article_search').innerHTML = html;\r
17285 }\r
17286 </script>\r
17287 \r
17288 \r
17289 <script id="ext" type="x">\r
17290 /*\r
17291  * Ext JS Library 3.4.0\r
17292  * Copyright(c) 2006-2011 Sencha Inc.\r
17293  * licensing@sencha.com\r
17294  * http://www.sencha.com/license\r
17295  */\r
17296 (function(){var h=Ext.util,j=Ext.each,g=true,i=false;h.Observable=function(){var k=this,l=k.events;if(k.listeners){k.on(k.listeners);delete k.listeners}k.events=l||{}};h.Observable.prototype={filterOptRe:/^(?:scope|delay|buffer|single)$/,fireEvent:function(){var k=Array.prototype.slice.call(arguments,0),m=k[0].toLowerCase(),n=this,l=g,p=n.events[m],s,o,r;if(n.eventsSuspended===g){if(o=n.eventQueue){o.push(k)}}else{if(typeof p=="object"){if(p.bubble){if(p.fire.apply(p,k.slice(1))===i){return i}r=n.getBubbleTarget&&n.getBubbleTarget();if(r&&r.enableBubble){s=r.events[m];if(!s||typeof s!="object"||!s.bubble){r.enableBubble(m)}return r.fireEvent.apply(r,k)}}else{k.shift();l=p.fire.apply(p,k)}}}return l},addListener:function(k,m,l,r){var n=this,q,s,p;if(typeof k=="object"){r=k;for(q in r){s=r[q];if(!n.filterOptRe.test(q)){n.addListener(q,s.fn||s,s.scope||r.scope,s.fn?s:r)}}}else{k=k.toLowerCase();p=n.events[k]||g;if(typeof p=="boolean"){n.events[k]=p=new h.Event(n,k)}p.addListener(m,l,typeof r=="object"?r:{})}},removeListener:function(k,m,l){var n=this.events[k.toLowerCase()];if(typeof n=="object"){n.removeListener(m,l)}},purgeListeners:function(){var m=this.events,k,l;for(l in m){k=m[l];if(typeof k=="object"){k.clearListeners()}}},addEvents:function(n){var m=this;m.events=m.events||{};if(typeof n=="string"){var k=arguments,l=k.length;while(l--){m.events[k[l]]=m.events[k[l]]||g}}else{Ext.applyIf(m.events,n)}},hasListener:function(k){var l=this.events[k.toLowerCase()];return typeof l=="object"&&l.listeners.length>0},suspendEvents:function(k){this.eventsSuspended=g;if(k&&!this.eventQueue){this.eventQueue=[]}},resumeEvents:function(){var k=this,l=k.eventQueue||[];k.eventsSuspended=i;delete k.eventQueue;j(l,function(m){k.fireEvent.apply(k,m)})}};var d=h.Observable.prototype;d.on=d.addListener;d.un=d.removeListener;h.Observable.releaseCapture=function(k){k.fireEvent=d.fireEvent};function e(l,m,k){return function(){if(m.target==arguments[0]){l.apply(k,Array.prototype.slice.call(arguments,0))}}}function b(n,p,k,m){k.task=new h.DelayedTask();return function(){k.task.delay(p.buffer,n,m,Array.prototype.slice.call(arguments,0))}}function c(m,n,l,k){return function(){n.removeListener(l,k);return m.apply(k,arguments)}}function a(n,p,k,m){return function(){var l=new h.DelayedTask(),o=Array.prototype.slice.call(arguments,0);if(!k.tasks){k.tasks=[]}k.tasks.push(l);l.delay(p.delay||10,function(){k.tasks.remove(l);n.apply(m,o)},m)}}h.Event=function(l,k){this.name=k;this.obj=l;this.listeners=[]};h.Event.prototype={addListener:function(o,n,m){var p=this,k;n=n||p.obj;if(!p.isListening(o,n)){k=p.createListener(o,n,m);if(p.firing){p.listeners=p.listeners.slice(0)}p.listeners.push(k)}},createListener:function(p,n,q){q=q||{};n=n||this.obj;var k={fn:p,scope:n,options:q},m=p;if(q.target){m=e(m,q,n)}if(q.delay){m=a(m,q,k,n)}if(q.single){m=c(m,this,p,n)}if(q.buffer){m=b(m,q,k,n)}k.fireFn=m;return k},findListener:function(o,n){var p=this.listeners,m=p.length,k;n=n||this.obj;while(m--){k=p[m];if(k){if(k.fn==o&&k.scope==n){return m}}}return -1},isListening:function(l,k){return this.findListener(l,k)!=-1},removeListener:function(r,q){var p,m,n,s=this,o=i;if((p=s.findListener(r,q))!=-1){if(s.firing){s.listeners=s.listeners.slice(0)}m=s.listeners[p];if(m.task){m.task.cancel();delete m.task}n=m.tasks&&m.tasks.length;if(n){while(n--){m.tasks[n].cancel()}delete m.tasks}s.listeners.splice(p,1);o=g}return o},clearListeners:function(){var n=this,k=n.listeners,m=k.length;while(m--){n.removeListener(k[m].fn,k[m].scope)}},fire:function(){var q=this,p=q.listeners,k=p.length,o=0,m;if(k>0){q.firing=g;var n=Array.prototype.slice.call(arguments,0);for(;o<k;o++){m=p[o];if(m&&m.fireFn.apply(m.scope||q.obj||window,n)===i){return(q.firing=i)}}}q.firing=i;return g}}})();Ext.DomHelper=function(){var x=null,k=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,m=/^table|tbody|tr|td$/i,d=/tag|children|cn|html$/i,t=/td|tr|tbody/i,o=/([a-z0-9-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,v=/end/i,r,n="afterbegin",p="afterend",c="beforebegin",q="beforeend",a="<table>",i="</table>",b=a+"<tbody>",j="</tbody>"+i,l=b+"<tr>",w="</tr>"+j;function h(B,D,C,E,A,y){var z=r.insertHtml(E,Ext.getDom(B),u(D));return C?Ext.get(z,true):z}function u(D){var z="",y,C,B,E;if(typeof D=="string"){z=D}else{if(Ext.isArray(D)){for(var A=0;A<D.length;A++){if(D[A]){z+=u(D[A])}}}else{z+="<"+(D.tag=D.tag||"div");for(y in D){C=D[y];if(!d.test(y)){if(typeof C=="object"){z+=" "+y+'="';for(B in C){z+=B+":"+C[B]+";"}z+='"'}else{z+=" "+({cls:"class",htmlFor:"for"}[y]||y)+'="'+C+'"'}}}if(k.test(D.tag)){z+="/>"}else{z+=">";if((E=D.children||D.cn)){z+=u(E)}else{if(D.html){z+=D.html}}z+="</"+D.tag+">"}}}return z}function g(F,C,B,D){x.innerHTML=[C,B,D].join("");var y=-1,A=x,z;while(++y<F){A=A.firstChild}if(z=A.nextSibling){var E=document.createDocumentFragment();while(A){z=A.nextSibling;E.appendChild(A);A=z}A=E}return A}function e(y,z,B,A){var C,D;x=x||document.createElement("div");if(y=="td"&&(z==n||z==q)||!t.test(y)&&(z==c||z==p)){return}D=z==c?B:z==p?B.nextSibling:z==n?B.firstChild:null;if(z==c||z==p){B=B.parentNode}if(y=="td"||(y=="tr"&&(z==q||z==n))){C=g(4,l,A,w)}else{if((y=="tbody"&&(z==q||z==n))||(y=="tr"&&(z==c||z==p))){C=g(3,b,A,j)}else{C=g(2,a,A,i)}}B.insertBefore(C,D);return C}function s(A){var D=document.createElement("div"),y=document.createDocumentFragment(),z=0,B,C;D.innerHTML=A;C=D.childNodes;B=C.length;for(;z<B;z++){y.appendChild(C[z].cloneNode(true))}return y}r={markup:function(y){return u(y)},applyStyles:function(y,z){if(z){var A;y=Ext.fly(y);if(typeof z=="function"){z=z.call()}if(typeof z=="string"){o.lastIndex=0;while((A=o.exec(z))){y.setStyle(A[1],A[2])}}else{if(typeof z=="object"){y.setStyle(z)}}}},insertHtml:function(D,y,E){var B={},A,F,C,G,H,z;D=D.toLowerCase();B[c]=["BeforeBegin","previousSibling"];B[p]=["AfterEnd","nextSibling"];if(y.insertAdjacentHTML){if(m.test(y.tagName)&&(z=e(y.tagName.toLowerCase(),D,y,E))){return z}B[n]=["AfterBegin","firstChild"];B[q]=["BeforeEnd","lastChild"];if((A=B[D])){y.insertAdjacentHTML(A[0],E);return y[A[1]]}}else{F=y.ownerDocument.createRange();G="setStart"+(v.test(D)?"After":"Before");if(B[D]){F[G](y);if(!F.createContextualFragment){H=s(E)}else{H=F.createContextualFragment(E)}y.parentNode.insertBefore(H,D==c?y:y.nextSibling);return y[(D==c?"previous":"next")+"Sibling"]}else{C=(D==n?"first":"last")+"Child";if(y.firstChild){F[G](y[C]);if(!F.createContextualFragment){H=s(E)}else{H=F.createContextualFragment(E)}if(D==n){y.insertBefore(H,y.firstChild)}else{y.appendChild(H)}}else{y.innerHTML=E}return y[C]}}throw'Illegal insertion point -> "'+D+'"'},insertBefore:function(y,A,z){return h(y,A,z,c)},insertAfter:function(y,A,z){return h(y,A,z,p,"nextSibling")},insertFirst:function(y,A,z){return h(y,A,z,n,"firstChild")},append:function(y,A,z){return h(y,A,z,q,"",true)},overwrite:function(y,A,z){y=Ext.getDom(y);y.innerHTML=u(A);return z?Ext.get(y.firstChild):y.firstChild},createHtml:u};return r}();Ext.Template=function(h){var j=this,c=arguments,e=[],d;if(Ext.isArray(h)){h=h.join("")}else{if(c.length>1){for(var g=0,b=c.length;g<b;g++){d=c[g];if(typeof d=="object"){Ext.apply(j,d)}else{e.push(d)}}h=e.join("")}}j.html=h;if(j.compiled){j.compile()}};Ext.Template.prototype={re:/\{([\w\-]+)\}/g,applyTemplate:function(a){var b=this;return b.compiled?b.compiled(a):b.html.replace(b.re,function(c,d){return a[d]!==undefined?a[d]:""})},set:function(a,c){var b=this;b.html=a;b.compiled=null;return c?b.compile():b},compile:function(){var me=this,sep=Ext.isGecko?"+":",";function fn(m,name){name="values['"+name+"']";return"'"+sep+"("+name+" == undefined ? '' : "+name+")"+sep+"'"}eval("this.compiled = function(values){ return "+(Ext.isGecko?"'":"['")+me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+(Ext.isGecko?"';};":"'].join('');};"));return me},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.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={},nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,isIE=window.ActiveXObject?true:false,key=30803;eval("var batch = 30803;");function child(parent,index){var i=0,n=parent.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(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}function byClassName(nodeSet,cls){if(!cls){return nodeSet}var result=[],ri=-1;for(var i=0,ci;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!=-1){result[++ri]=ci}}return result}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.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=="~"){var utag=tagName.toUpperCase();for(var i=0,n;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){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 result=[],ri=-1;tagName=tagName.toLowerCase();for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){if(cs.tagName||cs==document){cs=[cs]}if(!id){return cs}var result=[],ri=-1;for(var i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=Ext.DomQuery.operators[op],a,xml,hasXml;for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType!=1){continue}if(!hasXml){xml=Ext.DomQuery.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=Ext.DomQuery.getStyle(ci,attr)}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)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}return result}function byPseudo(cs,name,value){return Ext.DomQuery.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r;cs[0].setAttribute("_nodup",d);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,r=[];for(var i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d)}for(var i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i]}}for(var i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff")}return r}function quickDiff(c1,c2){var len1=c1.length,d=++key,r=[];if(!len1){return c2}if(isIE&&typeof c1[0].selectSingleNode!="undefined"){return quickDiffIEXml(c1,c2)}for(var i=0;i<len1;i++){c1[i]._qdiff=d}for(var i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i]}}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,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"],mode,lastPath,matchers=Ext.DomQuery.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';path=path.replace(lmode[1],"")}while(path.substr(0,1)=="/"){path=path.substr(1)}while(path&&lastPath!=path){lastPath=path;var tokenMatch=path.match(tagTokenRe);if(type=="select"){if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}else{if(path.substr(0,1)!="@"){fn[fn.length]='n = getNodes(n, mode, "*");'}}}else{if(tokenMatch){if(tokenMatch[1]=="#"){fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");'}else{fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");'}path=path.replace(tokenMatch[0],"")}}while(!(modeMatch=path.match(modeRe))){var matched=false;for(var j=0;j<matchersLn;j++){var t=matchers[j];var m=path.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]});path=path.replace(m[0],"");matched=true;break}}if(!matched){throw'Error parsing selector, parsing failed at "'+path+'"'}}if(modeMatch[1]){fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";';path=path.replace(modeMatch[1],"")}}fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f},jsSelect:function(path,root,type){root=root||document;if(typeof root=="string"){root=document.getElementById(root)}var paths=path.split(","),results=[];for(var i=0,len=paths.length;i<len;i++){var subPath=paths[i].replace(trimRe,"");if(!cache[subPath]){cache[subPath]=Ext.DomQuery.compile(subPath);if(!cache[subPath]){throw subPath+" is not a valid selector"}}var result=cache[subPath](root);if(result&&result!=document){results=results.concat(result)}}if(paths.length>1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:document.querySelectorAll?function(path,root,type){root=root||document;if(!Ext.DomQuery.isXml(root)){try{var cs=root.querySelectorAll(path);return Ext.toArray(cs)}catch(ex){}}return Ext.DomQuery.jsSelect.call(this,path,root,type)}:function(path,root,type){return Ext.DomQuery.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select")}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el)}var isArray=Ext.isArray(el),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, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?(["']?)(.*?)\4)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{5}", "{3}", "{1}");'},{re:/^#([\w\-]+)/,select:'n = byId(n, "{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,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),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("|"),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,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,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,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.DelayedTask=function(d,c,a){var e=this,g,b=function(){clearInterval(g);g=null;d.apply(c,a||[])};e.delay=function(i,k,j,h){e.cancel();d=k||d;c=j||c;a=h||a;g=setInterval(b,i)};e.cancel=function(){if(g){clearInterval(g);g=null}}};(function(){var h=document;Ext.Element=function(l,m){var n=typeof l=="string"?h.getElementById(l):l,o;if(!n){return null}o=n.id;if(!m&&o&&Ext.elCache[o]){return Ext.elCache[o].el}this.dom=n;this.id=o||Ext.id(n)};var d=Ext.DomHelper,e=Ext.Element,a=Ext.elCache;e.prototype={set:function(q,m){var n=this.dom,l,p,m=(m!==false)&&!!n.setAttribute;for(l in q){if(q.hasOwnProperty(l)){p=q[l];if(l=="style"){d.applyStyles(n,p)}else{if(l=="cls"){n.className=p}else{if(m){n.setAttribute(l,p)}else{n[l]=p}}}}}return this},defaultUnit:"px",is:function(l){return Ext.DomQuery.is(this.dom,l)},focus:function(o,n){var l=this,n=n||l.dom;try{if(Number(o)){l.focus.defer(o,null,[null,n])}else{n.focus()}}catch(m){}return l},blur:function(){try{this.dom.blur()}catch(l){}return this},getValue:function(l){var m=this.dom.value;return l?parseInt(m,10):m},addListener:function(l,o,n,m){Ext.EventManager.on(this.dom,l,o,n||this,m);return this},removeListener:function(l,n,m){Ext.EventManager.removeListener(this.dom,l,n,m||this);return this},removeAllListeners:function(){Ext.EventManager.removeAll(this.dom);return this},purgeAllListeners:function(){Ext.EventManager.purgeElement(this,true);return this},addUnits:function(l){if(l===""||l=="auto"||l===undefined){l=l||""}else{if(!isNaN(l)||!i.test(l)){l=l+(this.defaultUnit||"px")}}return l},load:function(m,n,l){Ext.Ajax.request(Ext.apply({params:n,url:m.url||m,callback:l,el:this.dom,indicatorText:m.indicatorText||""},Ext.isObject(m)?m:{}));return this},isBorderBox:function(){return Ext.isBorderBox||Ext.isForcedBorderBox||g[(this.dom.tagName||"").toLowerCase()]},remove:function(){var l=this,m=l.dom;if(m){delete l.dom;Ext.removeNode(m)}},hover:function(m,l,o,n){var p=this;p.on("mouseenter",m,o||p.dom,n);p.on("mouseleave",l,o||p.dom,n);return p},contains:function(l){return !l?false:Ext.lib.Dom.isAncestor(this.dom,l.dom?l.dom:l)},getAttributeNS:function(m,l){return this.getAttribute(l,m)},getAttribute:(function(){var p=document.createElement("table"),o=false,m="getAttribute" in p,l=/undefined|unknown/;if(m){try{p.getAttribute("ext:qtip")}catch(n){o=true}return function(q,s){var r=this.dom,t;if(r.getAttributeNS){t=r.getAttributeNS(s,q)||null}if(t==null){if(s){if(o&&r.tagName.toUpperCase()=="TABLE"){try{t=r.getAttribute(s+":"+q)}catch(u){t=""}}else{t=r.getAttribute(s+":"+q)}}else{t=r.getAttribute(q)||r[q]}}return t||""}}else{return function(q,s){var r=this.om,u,t;if(s){t=r[s+":"+q];u=l.test(typeof t)?undefined:t}else{u=r[q]}return u||""}}p=null})(),update:function(l){if(this.dom){this.dom.innerHTML=l}return this}};var k=e.prototype;e.addMethods=function(l){Ext.apply(k,l)};k.on=k.addListener;k.un=k.removeListener;k.autoBoxAdjust=true;var i=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,c;e.get=function(m){var l,p,o;if(!m){return null}if(typeof m=="string"){if(!(p=h.getElementById(m))){return null}if(a[m]&&a[m].el){l=a[m].el;l.dom=p}else{l=e.addToCache(new e(p))}return l}else{if(m.tagName){if(!(o=m.id)){o=Ext.id(m)}if(a[o]&&a[o].el){l=a[o].el;l.dom=m}else{l=e.addToCache(new e(m))}return l}else{if(m instanceof e){if(m!=c){if(Ext.isIE&&(m.id==undefined||m.id=="")){m.dom=m.dom}else{m.dom=h.getElementById(m.id)||m.dom}}return m}else{if(m.isComposite){return m}else{if(Ext.isArray(m)){return e.select(m)}else{if(m==h){if(!c){var n=function(){};n.prototype=e.prototype;c=new n();c.dom=h}return c}}}}}}return null};e.addToCache=function(l,m){m=m||l.id;a[m]={el:l,data:{},events:{}};return l};e.data=function(m,l,n){m=e.get(m);if(!m){return null}var o=a[m.id].data;if(arguments.length==2){return o[l]}else{return(o[l]=n)}};function j(){if(!Ext.enableGarbageCollector){clearInterval(e.collectorThreadId)}else{var l,n,q,p;for(l in a){p=a[l];if(p.skipGC){continue}n=p.el;q=n.dom;if(!q||!q.parentNode||(!q.offsetParent&&!h.getElementById(l))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(q)}delete a[l]}}if(Ext.isIE){var m={};for(l in a){m[l]=a[l]}a=Ext.elCache=m}}}e.collectorThreadId=setInterval(j,30000);var b=function(){};b.prototype=e.prototype;e.Flyweight=function(l){this.dom=l};e.Flyweight.prototype=new b();e.Flyweight.prototype.isFlyweight=true;e._flyweights={};e.fly=function(n,l){var m=null;l=l||"_global";if(n=Ext.getDom(n)){(e._flyweights[l]=e._flyweights[l]||new e.Flyweight()).dom=n;m=e._flyweights[l]}return m};Ext.get=e.get;Ext.fly=e.fly;var g=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){g.button=1}})();Ext.Element.addMethods(function(){var d="parentNode",b="nextSibling",c="previousSibling",e=Ext.DomQuery,a=Ext.get;return{findParent:function(m,l,h){var j=this.dom,g=document.body,k=0,i;if(Ext.isGecko&&Object.prototype.toString.call(j)=="[object XULElement]"){return null}l=l||50;if(isNaN(l)){i=Ext.getDom(l);l=Number.MAX_VALUE}while(j&&j.nodeType==1&&k<l&&j!=g&&j!=i){if(e.is(j,m)){return h?a(j):j}k++;j=j.parentNode}return null},findParentNode:function(j,i,g){var h=Ext.fly(this.dom.parentNode,"_internal");return h?h.findParent(j,i,g):null},up:function(h,g){return this.findParentNode(h,g,true)},select:function(g){return Ext.Element.select(g,this.dom)},query:function(g){return e.select(g,this.dom)},child:function(g,h){var i=e.selectNode(g,this.dom);return h?i:a(i)},down:function(g,h){var i=e.selectNode(" > "+g,this.dom);return h?i:a(i)},parent:function(g,h){return this.matchNode(d,d,g,h)},next:function(g,h){return this.matchNode(b,b,g,h)},prev:function(g,h){return this.matchNode(c,c,g,h)},first:function(g,h){return this.matchNode(b,"firstChild",g,h)},last:function(g,h){return this.matchNode(c,"lastChild",g,h)},matchNode:function(h,k,g,i){var j=this.dom[k];while(j){if(j.nodeType==1&&(!g||e.is(j,g))){return !i?a(j):j}j=j[h]}return null}}}());Ext.Element.addMethods(function(){var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;return{appendChild:function(d){return a(d).appendTo(this)},appendTo:function(d){c(d).appendChild(this.dom);return this},insertBefore:function(d){(d=c(d)).parentNode.insertBefore(this.dom,d);return this},insertAfter:function(d){(d=c(d)).parentNode.insertBefore(this.dom,d.nextSibling);return this},insertFirst:function(e,d){e=e||{};if(e.nodeType||e.dom||typeof e=="string"){e=c(e);this.dom.insertBefore(e,this.dom.firstChild);return !d?a(e):e}else{return this.createChild(e,this.dom.firstChild,d)}},replace:function(d){d=a(d);this.insertBefore(d);d.remove();return this},replaceWith:function(d){var e=this;if(d.nodeType||d.dom||typeof d=="string"){d=c(d);e.dom.parentNode.insertBefore(d,e.dom)}else{d=b.insertBefore(e.dom,d)}delete Ext.elCache[e.id];Ext.removeNode(e.dom);e.id=Ext.id(e.dom=d);Ext.Element.addToCache(e.isFlyweight?new Ext.Element(e.dom):e);return e},createChild:function(e,d,g){e=e||{tag:"div"};return d?b.insertBefore(d,e,g!==true):b[!this.dom.firstChild?"overwrite":"append"](this.dom,e,g!==true)},wrap:function(d,e){var g=b.insertBefore(this.dom,d||{tag:"div"},!e);g.dom?g.dom.appendChild(this.dom):g.appendChild(this.dom);return g},insertHtml:function(e,g,d){var h=b.insertHtml(e,this.dom,g);return d?Ext.get(h):h}}}());Ext.Element.addMethods(function(){var A=Ext.supports,h={},x=/(-[a-z])/gi,s=document.defaultView,D=/alpha\(opacity=(.*)\)/i,l=/^\s+|\s+$/g,B=Ext.Element,u=/\s+/,b=/\w/g,d="padding",c="margin",y="border",t="-left",q="-right",w="-top",o="-bottom",j="-width",r=Math,z="hidden",e="isClipped",k="overflow",n="overflow-x",m="overflow-y",C="originalClip",i={l:y+t+j,r:y+q+j,t:y+w+j,b:y+o+j},g={l:d+t,r:d+q,t:d+w,b:d+o},a={l:c+t,r:c+q,t:c+w,b:c+o},E=Ext.Element.data;function p(F,G){return G.charAt(1).toUpperCase()}function v(F){return h[F]||(h[F]=F=="float"?(A.cssFloat?"cssFloat":"styleFloat"):F.replace(x,p))}return{adjustWidth:function(F){var G=this;var H=(typeof F=="number");if(H&&G.autoBoxAdjust&&!G.isBorderBox()){F-=(G.getBorderWidth("lr")+G.getPadding("lr"))}return(H&&F<0)?0:F},adjustHeight:function(F){var G=this;var H=(typeof F=="number");if(H&&G.autoBoxAdjust&&!G.isBorderBox()){F-=(G.getBorderWidth("tb")+G.getPadding("tb"))}return(H&&F<0)?0:F},addClass:function(J){var K=this,I,F,H,G=[];if(!Ext.isArray(J)){if(typeof J=="string"&&!this.hasClass(J)){K.dom.className+=" "+J}}else{for(I=0,F=J.length;I<F;I++){H=J[I];if(typeof H=="string"&&(" "+K.dom.className+" ").indexOf(" "+H+" ")==-1){G.push(H)}}if(G.length){K.dom.className+=" "+G.join(" ")}}return K},removeClass:function(K){var L=this,J,G,F,I,H;if(!Ext.isArray(K)){K=[K]}if(L.dom&&L.dom.className){H=L.dom.className.replace(l,"").split(u);for(J=0,F=K.length;J<F;J++){I=K[J];if(typeof I=="string"){I=I.replace(l,"");G=H.indexOf(I);if(G!=-1){H.splice(G,1)}}}L.dom.className=H.join(" ")}return L},radioClass:function(I){var J=this.dom.parentNode.childNodes,G,H,F;I=Ext.isArray(I)?I:[I];for(H=0,F=J.length;H<F;H++){G=J[H];if(G&&G.nodeType==1){Ext.fly(G,"_internal").removeClass(I)}}return this.addClass(I)},toggleClass:function(F){return this.hasClass(F)?this.removeClass(F):this.addClass(F)},hasClass:function(F){return F&&(" "+this.dom.className+" ").indexOf(" "+F+" ")!=-1},replaceClass:function(G,F){return this.removeClass(G).addClass(F)},isStyle:function(F,G){return this.getStyle(F)==G},getStyle:function(){return s&&s.getComputedStyle?function(K){var I=this.dom,F,H,G,J;if(I==document){return null}K=v(K);G=(F=I.style[K])?F:(H=s.getComputedStyle(I,""))?H[K]:null;if(K=="marginRight"&&G!="0px"&&!A.correctRightMargin){J=I.style.display;I.style.display="inline-block";G=s.getComputedStyle(I,"").marginRight;I.style.display=J}if(K=="backgroundColor"&&G=="rgba(0, 0, 0, 0)"&&!A.correctTransparentColor){G="transparent"}return G}:function(J){var H=this.dom,F,G;if(H==document){return null}if(J=="opacity"){if(H.style.filter.match){if(F=H.style.filter.match(D)){var I=parseFloat(F[1]);if(!isNaN(I)){return I?I/100:0}}}return 1}J=v(J);return H.style[J]||((G=H.currentStyle)?G[J]:null)}}(),getColor:function(F,G,K){var I=this.getStyle(F),H=(typeof K!="undefined")?K:"#",J;if(!I||(/transparent|inherit/.test(I))){return G}if(/^r/.test(I)){Ext.each(I.slice(4,I.length-1).split(","),function(L){J=parseInt(L,10);H+=(J<16?"0":"")+J.toString(16)})}else{I=I.replace("#","");H+=I.length==3?I.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):I}return(H.length>5?H.toLowerCase():G)},setStyle:function(I,H){var F,G;if(typeof I!="object"){F={};F[I]=H;I=F}for(G in I){H=I[G];G=="opacity"?this.setOpacity(H):this.dom.style[v(G)]=H}return this},setOpacity:function(G,F){var J=this,H=J.dom.style;if(!F||!J.anim){if(Ext.isIE){var I=G<1?"alpha(opacity="+G*100+")":"",K=H.filter.replace(D,"").replace(l,"");H.zoom=1;H.filter=K+(K.length>0?" ":"")+I}else{H.opacity=G}}else{J.anim({opacity:{to:G}},J.preanim(arguments,1),null,0.35,"easeIn")}return J},clearOpacity:function(){var F=this.dom.style;if(Ext.isIE){if(!Ext.isEmpty(F.filter)){F.filter=F.filter.replace(D,"").replace(l,"")}}else{F.opacity=F["-moz-opacity"]=F["-khtml-opacity"]=""}return this},getHeight:function(H){var G=this,J=G.dom,I=Ext.isIE&&G.isStyle("display","none"),F=r.max(J.offsetHeight,I?0:J.clientHeight)||0;F=!H?F:F-G.getBorderWidth("tb")-G.getPadding("tb");return F<0?0:F},getWidth:function(G){var H=this,J=H.dom,I=Ext.isIE&&H.isStyle("display","none"),F=r.max(J.offsetWidth,I?0:J.clientWidth)||0;F=!G?F:F-H.getBorderWidth("lr")-H.getPadding("lr");return F<0?0:F},setWidth:function(G,F){var H=this;G=H.adjustWidth(G);!F||!H.anim?H.dom.style.width=H.addUnits(G):H.anim({width:{to:G}},H.preanim(arguments,1));return H},setHeight:function(F,G){var H=this;F=H.adjustHeight(F);!G||!H.anim?H.dom.style.height=H.addUnits(F):H.anim({height:{to:F}},H.preanim(arguments,1));return H},getBorderWidth:function(F){return this.addStyles(F,i)},getPadding:function(F){return this.addStyles(F,g)},clip:function(){var F=this,G=F.dom;if(!E(G,e)){E(G,e,true);E(G,C,{o:F.getStyle(k),x:F.getStyle(n),y:F.getStyle(m)});F.setStyle(k,z);F.setStyle(n,z);F.setStyle(m,z)}return F},unclip:function(){var F=this,H=F.dom;if(E(H,e)){E(H,e,false);var G=E(H,C);if(G.o){F.setStyle(k,G.o)}if(G.x){F.setStyle(n,G.x)}if(G.y){F.setStyle(m,G.y)}}return F},addStyles:function(M,L){var J=0,K=M.match(b),I,H,G,F=K.length;for(G=0;G<F;G++){I=K[G];H=I&&parseInt(this.getStyle(L[I]),10);if(H){J+=r.abs(H)}}return J},margins:a}}());(function(){var a=Ext.lib.Dom,b="left",g="right",d="top",i="bottom",h="position",c="static",e="relative",j="auto",k="z-index";Ext.Element.addMethods({getX:function(){return a.getX(this.dom)},getY:function(){return a.getY(this.dom)},getXY:function(){return a.getXY(this.dom)},getOffsetsTo:function(l){var n=this.getXY(),m=Ext.fly(l,"_internal").getXY();return[n[0]-m[0],n[1]-m[1]]},setX:function(l,m){return this.setXY([l,this.getY()],this.animTest(arguments,m,1))},setY:function(m,l){return this.setXY([this.getX(),m],this.animTest(arguments,l,1))},setLeft:function(l){this.setStyle(b,this.addUnits(l));return this},setTop:function(l){this.setStyle(d,this.addUnits(l));return this},setRight:function(l){this.setStyle(g,this.addUnits(l));return this},setBottom:function(l){this.setStyle(i,this.addUnits(l));return this},setXY:function(n,l){var m=this;if(!l||!m.anim){a.setXY(m.dom,n)}else{m.anim({points:{to:n}},m.preanim(arguments,1),"motion")}return m},setLocation:function(l,n,m){return this.setXY([l,n],this.animTest(arguments,m,2))},moveTo:function(l,n,m){return this.setXY([l,n],this.animTest(arguments,m,2))},getLeft:function(l){return !l?this.getX():parseInt(this.getStyle(b),10)||0},getRight:function(l){var m=this;return !l?m.getX()+m.getWidth():(m.getLeft(true)+m.getWidth())||0},getTop:function(l){return !l?this.getY():parseInt(this.getStyle(d),10)||0},getBottom:function(l){var m=this;return !l?m.getY()+m.getHeight():(m.getTop(true)+m.getHeight())||0},position:function(p,o,l,n){var m=this;if(!p&&m.isStyle(h,c)){m.setStyle(h,e)}else{if(p){m.setStyle(h,p)}}if(o){m.setStyle(k,o)}if(l||n){m.setXY([l||false,n||false])}},clearPositioning:function(l){l=l||"";this.setStyle({left:l,right:l,top:l,bottom:l,"z-index":"",position:c});return this},getPositioning:function(){var m=this.getStyle(b);var n=this.getStyle(d);return{position:this.getStyle(h),left:m,right:m?"":this.getStyle(g),top:n,bottom:n?"":this.getStyle(i),"z-index":this.getStyle(k)}},setPositioning:function(l){var n=this,m=n.dom.style;n.setStyle(l);if(l.right==j){m.right=""}if(l.bottom==j){m.bottom=""}return n},translatePoints:function(m,u){u=isNaN(m[1])?u:m[1];m=isNaN(m[0])?m:m[0];var q=this,r=q.isStyle(h,e),s=q.getXY(),n=parseInt(q.getStyle(b),10),p=parseInt(q.getStyle(d),10);n=!isNaN(n)?n:(r?0:q.dom.offsetLeft);p=!isNaN(p)?p:(r?0:q.dom.offsetTop);return{left:(m-s[0]+n),top:(u-s[1]+p)}},animTest:function(m,l,n){return !!l&&this.preanim?this.preanim(m,n):false}})})();Ext.Element.addMethods({isScrollable:function(){var a=this.dom;return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth},scrollTo:function(a,b){this.dom["scroll"+(/top/i.test(a)?"Top":"Left")]=b;return this},getScroll:function(){var i=this.dom,h=document,a=h.body,c=h.documentElement,b,g,e;if(i==h||i==a){if(Ext.isIE&&Ext.isStrict){b=c.scrollLeft;g=c.scrollTop}else{b=window.pageXOffset;g=window.pageYOffset}e={left:b||(a?a.scrollLeft:0),top:g||(a?a.scrollTop:0)}}else{e={left:i.scrollLeft,top:i.scrollTop}}return e}});Ext.Element.VISIBILITY=1;Ext.Element.DISPLAY=2;Ext.Element.OFFSETS=3;Ext.Element.ASCLASS=4;Ext.Element.visibilityCls="x-hide-nosize";Ext.Element.addMethods(function(){var e=Ext.Element,p="opacity",j="visibility",g="display",d="hidden",n="offsets",k="asclass",m="none",a="nosize",b="originalDisplay",c="visibilityMode",h="isVisible",i=e.data,l=function(r){var q=i(r,b);if(q===undefined){i(r,b,q="")}return q},o=function(r){var q=i(r,c);if(q===undefined){i(r,c,q=1)}return q};return{originalDisplay:"",visibilityMode:1,setVisibilityMode:function(q){i(this.dom,c,q);return this},animate:function(r,t,s,u,q){this.anim(r,{duration:t,callback:s,easing:u},q);return this},anim:function(t,u,r,w,s,q){r=r||"run";u=u||{};var v=this,x=Ext.lib.Anim[r](v.dom,t,(u.duration||w)||0.35,(u.easing||s)||"easeOut",function(){if(q){q.call(v)}if(u.callback){u.callback.call(u.scope||v,v,u)}},v);u.anim=x;return x},preanim:function(q,r){return !q[r]?false:(typeof q[r]=="object"?q[r]:{duration:q[r+1],callback:q[r+2],easing:q[r+3]})},isVisible:function(){var q=this,s=q.dom,r=i(s,h);if(typeof r=="boolean"){return r}r=!q.isStyle(j,d)&&!q.isStyle(g,m)&&!((o(s)==e.ASCLASS)&&q.hasClass(q.visibilityCls||e.visibilityCls));i(s,h,r);return r},setVisible:function(t,q){var w=this,r,y,x,v,u=w.dom,s=o(u);if(typeof q=="string"){switch(q){case g:s=e.DISPLAY;break;case j:s=e.VISIBILITY;break;case n:s=e.OFFSETS;break;case a:case k:s=e.ASCLASS;break}w.setVisibilityMode(s);q=false}if(!q||!w.anim){if(s==e.ASCLASS){w[t?"removeClass":"addClass"](w.visibilityCls||e.visibilityCls)}else{if(s==e.DISPLAY){return w.setDisplayed(t)}else{if(s==e.OFFSETS){if(!t){w.hideModeStyles={position:w.getStyle("position"),top:w.getStyle("top"),left:w.getStyle("left")};w.applyStyles({position:"absolute",top:"-10000px",left:"-10000px"})}else{w.applyStyles(w.hideModeStyles||{position:"",top:"",left:""});delete w.hideModeStyles}}else{w.fixDisplay();u.style.visibility=t?"visible":d}}}}else{if(t){w.setOpacity(0.01);w.setVisible(true)}w.anim({opacity:{to:(t?1:0)}},w.preanim(arguments,1),null,0.35,"easeIn",function(){t||w.setVisible(false).setOpacity(1)})}i(u,h,t);return w},hasMetrics:function(){var q=this.dom;return this.isVisible()||(o(q)==e.VISIBILITY)},toggle:function(q){var r=this;r.setVisible(!r.isVisible(),r.preanim(arguments,0));return r},setDisplayed:function(q){if(typeof q=="boolean"){q=q?l(this.dom):m}this.setStyle(g,q);return this},fixDisplay:function(){var q=this;if(q.isStyle(g,m)){q.setStyle(j,d);q.setStyle(g,l(this.dom));if(q.isStyle(g,m)){q.setStyle(g,"block")}}},hide:function(q){if(typeof q=="string"){this.setVisible(false,q);return this}this.setVisible(false,this.preanim(arguments,0));return this},show:function(q){if(typeof q=="string"){this.setVisible(true,q);return this}this.setVisible(true,this.preanim(arguments,0));return this}}}());(function(){var y=null,A=undefined,k=true,t=false,j="setX",h="setY",a="setXY",n="left",l="bottom",s="top",m="right",q="height",g="width",i="points",w="hidden",z="absolute",u="visible",e="motion",o="position",r="easeOut",d=new Ext.Element.Flyweight(),v={},x=function(B){return B||{}},p=function(B){d.dom=B;d.id=Ext.id(B);return d},c=function(B){if(!v[B]){v[B]=[]}return v[B]},b=function(C,B){v[C]=B};Ext.enableFx=k;Ext.Fx={switchStatements:function(C,D,B){return D.apply(this,B[C])},slideIn:function(H,E){E=x(E);var J=this,G=J.dom,M=G.style,O,B,L,D,C,M,I,N,K,F;H=H||"t";J.queueFx(E,function(){O=p(G).getXY();p(G).fixDisplay();B=p(G).getFxRestore();L={x:O[0],y:O[1],0:O[0],1:O[1],width:G.offsetWidth,height:G.offsetHeight};L.right=L.x+L.width;L.bottom=L.y+L.height;p(G).setWidth(L.width).setHeight(L.height);D=p(G).fxWrap(B.pos,E,w);M.visibility=u;M.position=z;function P(){p(G).fxUnwrap(D,B.pos,E);M.width=B.width;M.height=B.height;p(G).afterFx(E)}N={to:[L.x,L.y]};K={to:L.width};F={to:L.height};function Q(U,R,V,S,X,Z,ac,ab,aa,W,T){var Y={};p(U).setWidth(V).setHeight(S);if(p(U)[X]){p(U)[X](Z)}R[ac]=R[ab]="0";if(aa){Y.width=aa}if(W){Y.height=W}if(T){Y.points=T}return Y}I=p(G).switchStatements(H.toLowerCase(),Q,{t:[D,M,L.width,0,y,y,n,l,y,F,y],l:[D,M,0,L.height,y,y,m,s,K,y,y],r:[D,M,L.width,L.height,j,L.right,n,s,y,y,N],b:[D,M,L.width,L.height,h,L.bottom,n,s,y,F,N],tl:[D,M,0,0,y,y,m,l,K,F,N],bl:[D,M,0,0,h,L.y+L.height,m,s,K,F,N],br:[D,M,0,0,a,[L.right,L.bottom],n,s,K,F,N],tr:[D,M,0,0,j,L.x+L.width,n,l,K,F,N]});M.visibility=u;p(D).show();arguments.callee.anim=p(D).fxanim(I,E,e,0.5,r,P)});return J},slideOut:function(F,D){D=x(D);var H=this,E=H.dom,K=E.style,L=H.getXY(),C,B,I,J,G={to:0};F=F||"t";H.queueFx(D,function(){B=p(E).getFxRestore();I={x:L[0],y:L[1],0:L[0],1:L[1],width:E.offsetWidth,height:E.offsetHeight};I.right=I.x+I.width;I.bottom=I.y+I.height;p(E).setWidth(I.width).setHeight(I.height);C=p(E).fxWrap(B.pos,D,u);K.visibility=u;K.position=z;p(C).setWidth(I.width).setHeight(I.height);function M(){D.useDisplay?p(E).setDisplayed(t):p(E).hide();p(E).fxUnwrap(C,B.pos,D);K.width=B.width;K.height=B.height;p(E).afterFx(D)}function N(O,W,U,X,S,V,R,T,Q){var P={};O[W]=O[U]="0";P[X]=S;if(V){P[V]=R}if(T){P[T]=Q}return P}J=p(E).switchStatements(F.toLowerCase(),N,{t:[K,n,l,q,G],l:[K,m,s,g,G],r:[K,n,s,g,G,i,{to:[I.right,I.y]}],b:[K,n,s,q,G,i,{to:[I.x,I.bottom]}],tl:[K,m,l,g,G,q,G],bl:[K,m,s,g,G,q,G,i,{to:[I.x,I.bottom]}],br:[K,n,s,g,G,q,G,i,{to:[I.x+I.width,I.bottom]}],tr:[K,n,l,g,G,q,G,i,{to:[I.right,I.y]}]});arguments.callee.anim=p(C).fxanim(J,D,e,0.5,r,M)});return H},puff:function(H){H=x(H);var F=this,G=F.dom,C=G.style,D,B,E;F.queueFx(H,function(){D=p(G).getWidth();B=p(G).getHeight();p(G).clearOpacity();p(G).show();E=p(G).getFxRestore();function I(){H.useDisplay?p(G).setDisplayed(t):p(G).hide();p(G).clearOpacity();p(G).setPositioning(E.pos);C.width=E.width;C.height=E.height;C.fontSize="";p(G).afterFx(H)}arguments.callee.anim=p(G).fxanim({width:{to:p(G).adjustWidth(D*2)},height:{to:p(G).adjustHeight(B*2)},points:{by:[-D*0.5,-B*0.5]},opacity:{to:0},fontSize:{to:200,unit:"%"}},H,e,0.5,r,I)});return F},switchOff:function(F){F=x(F);var D=this,E=D.dom,B=E.style,C;D.queueFx(F,function(){p(E).clearOpacity();p(E).clip();C=p(E).getFxRestore();function G(){F.useDisplay?p(E).setDisplayed(t):p(E).hide();p(E).clearOpacity();p(E).setPositioning(C.pos);B.width=C.width;B.height=C.height;p(E).afterFx(F)}p(E).fxanim({opacity:{to:0.3}},y,y,0.1,y,function(){p(E).clearOpacity();(function(){p(E).fxanim({height:{to:1},points:{by:[0,p(E).getHeight()*0.5]}},F,e,0.3,"easeIn",G)}).defer(100)})});return D},highlight:function(D,H){H=x(H);var F=this,G=F.dom,B=H.attr||"backgroundColor",C={},E;F.queueFx(H,function(){p(G).clearOpacity();p(G).show();function I(){G.style[B]=E;p(G).afterFx(H)}E=G.style[B];C[B]={from:D||"ffff9c",to:H.endColor||p(G).getColor(B)||"ffffff"};arguments.callee.anim=p(G).fxanim(C,H,"color",1,"easeIn",I)});return F},frame:function(B,E,H){H=x(H);var D=this,G=D.dom,C,F;D.queueFx(H,function(){B=B||"#C3DAF9";if(B.length==6){B="#"+B}E=E||1;p(G).show();var L=p(G).getXY(),J={x:L[0],y:L[1],0:L[0],1:L[1],width:G.offsetWidth,height:G.offsetHeight},I=function(){C=p(document.body||document.documentElement).createChild({style:{position:z,"z-index":35000,border:"0px solid "+B}});return C.queueFx({},K)};arguments.callee.anim={isAnimated:true,stop:function(){E=0;C.stopFx()}};function K(){var M=Ext.isBorderBox?2:1;F=C.anim({top:{from:J.y,to:J.y-20},left:{from:J.x,to:J.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:J.height,to:J.height+20*M},width:{from:J.width,to:J.width+20*M}},{duration:H.duration||1,callback:function(){C.remove();--E>0?I():p(G).afterFx(H)}});arguments.callee.anim={isAnimated:true,stop:function(){F.stop()}}}I()});return D},pause:function(D){var C=this.dom,B;this.queueFx({},function(){B=setTimeout(function(){p(C).afterFx({})},D*1000);arguments.callee.anim={isAnimated:true,stop:function(){clearTimeout(B);p(C).afterFx({})}}});return this},fadeIn:function(D){D=x(D);var B=this,C=B.dom,E=D.endOpacity||1;B.queueFx(D,function(){p(C).setOpacity(0);p(C).fixDisplay();C.style.visibility=u;arguments.callee.anim=p(C).fxanim({opacity:{to:E}},D,y,0.5,r,function(){if(E==1){p(C).clearOpacity()}p(C).afterFx(D)})});return B},fadeOut:function(E){E=x(E);var C=this,D=C.dom,B=D.style,F=E.endOpacity||0;C.queueFx(E,function(){arguments.callee.anim=p(D).fxanim({opacity:{to:F}},E,y,0.5,r,function(){if(F==0){Ext.Element.data(D,"visibilityMode")==Ext.Element.DISPLAY||E.useDisplay?B.display="none":B.visibility=w;p(D).clearOpacity()}p(D).afterFx(E)})});return C},scale:function(B,C,D){this.shift(Ext.apply({},D,{width:B,height:C}));return this},shift:function(D){D=x(D);var C=this.dom,B={};this.queueFx(D,function(){for(var E in D){if(D[E]!=A){B[E]={to:D[E]}}}B.width?B.width.to=p(C).adjustWidth(D.width):B;B.height?B.height.to=p(C).adjustWidth(D.height):B;if(B.x||B.y||B.xy){B.points=B.xy||{to:[B.x?B.x.to:p(C).getX(),B.y?B.y.to:p(C).getY()]}}arguments.callee.anim=p(C).fxanim(B,D,e,0.35,r,function(){p(C).afterFx(D)})});return this},ghost:function(E,C){C=x(C);var G=this,D=G.dom,J=D.style,H={opacity:{to:0},points:{}},K=H.points,B,I,F;E=E||"b";G.queueFx(C,function(){B=p(D).getFxRestore();I=p(D).getWidth();F=p(D).getHeight();function L(){C.useDisplay?p(D).setDisplayed(t):p(D).hide();p(D).clearOpacity();p(D).setPositioning(B.pos);J.width=B.width;J.height=B.height;p(D).afterFx(C)}K.by=p(D).switchStatements(E.toLowerCase(),function(N,M){return[N,M]},{t:[0,-F],l:[-I,0],r:[I,0],b:[0,F],tl:[-I,-F],bl:[-I,F],br:[I,F],tr:[I,-F]});arguments.callee.anim=p(D).fxanim(H,C,e,0.5,r,L)});return G},syncFx:function(){var B=this;B.fxDefaults=Ext.apply(B.fxDefaults||{},{block:t,concurrent:k,stopFx:t});return B},sequenceFx:function(){var B=this;B.fxDefaults=Ext.apply(B.fxDefaults||{},{block:t,concurrent:t,stopFx:t});return B},nextFx:function(){var B=c(this.dom.id)[0];if(B){B.call(this)}},hasActiveFx:function(){return c(this.dom.id)[0]},stopFx:function(B){var C=this,E=C.dom.id;if(C.hasActiveFx()){var D=c(E)[0];if(D&&D.anim){if(D.anim.isAnimated){b(E,[D]);D.anim.stop(B!==undefined?B:k)}else{b(E,[])}}}return C},beforeFx:function(B){if(this.hasActiveFx()&&!B.concurrent){if(B.stopFx){this.stopFx();return k}return t}return k},hasFxBlock:function(){var B=c(this.dom.id);return B&&B[0]&&B[0].block},queueFx:function(E,B){var C=p(this.dom);if(!C.hasFxBlock()){Ext.applyIf(E,C.fxDefaults);if(!E.concurrent){var D=C.beforeFx(E);B.block=E.block;c(C.dom.id).push(B);if(D){C.nextFx()}}else{B.call(C)}}return C},fxWrap:function(H,F,D){var E=this.dom,C,B;if(!F.wrap||!(C=Ext.getDom(F.wrap))){if(F.fixPosition){B=p(E).getXY()}var G=document.createElement("div");G.style.visibility=D;C=E.parentNode.insertBefore(G,E);p(C).setPositioning(H);if(p(C).isStyle(o,"static")){p(C).position("relative")}p(E).clearPositioning("auto");p(C).clip();C.appendChild(E);if(B){p(C).setXY(B)}}return C},fxUnwrap:function(C,F,E){var D=this.dom;p(D).clearPositioning();p(D).setPositioning(F);if(!E.wrap){var B=p(C).dom.parentNode;B.insertBefore(D,C);p(C).remove()}},getFxRestore:function(){var B=this.dom.style;return{pos:this.getPositioning(),width:B.width,height:B.height}},afterFx:function(C){var B=this.dom,D=B.id;if(C.afterStyle){p(B).setStyle(C.afterStyle)}if(C.afterCls){p(B).addClass(C.afterCls)}if(C.remove==k){p(B).remove()}if(C.callback){C.callback.call(C.scope,p(B))}if(!C.concurrent){c(D).shift();p(B).nextFx()}},fxanim:function(E,F,C,G,D,B){C=C||"run";F=F||{};var H=Ext.lib.Anim[C](this.dom,E,(F.duration||G)||0.35,(F.easing||D)||r,B,this);F.anim=H;return H}};Ext.Fx.resize=Ext.Fx.scale;Ext.Element.addMethods(Ext.Fx)})();Ext.CompositeElementLite=function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.Element.Flyweight()};Ext.CompositeElementLite.prototype={isComposite:true,getElement:function(a){var b=this.el;b.dom=a;b.id=a.id;return b},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(d,b){var e=this,g=e.elements;if(!d){return this}if(typeof d=="string"){d=Ext.Element.selectorFunction(d,b)}else{if(d.isComposite){d=d.elements}else{if(!Ext.isIterable(d)){d=[d]}}}for(var c=0,a=d.length;c<a;++c){g.push(e.transformElement(d[c]))}return e},invoke:function(g,b){var h=this,d=h.elements,a=d.length,j,c;for(c=0;c<a;c++){j=d[c];if(j){Ext.Element.prototype[g].apply(h.getElement(j),b)}}return h},item:function(b){var d=this,c=d.elements[b],a=null;if(c){a=d.getElement(c)}return a},addListener:function(b,j,h,g){var d=this.elements,a=d.length,c,k;for(c=0;c<a;c++){k=d[c];if(k){Ext.EventManager.on(k,b,j,h||k,g)}}return this},each:function(g,d){var h=this,c=h.elements,a=c.length,b,j;for(b=0;b<a;b++){j=c[b];if(j){j=this.getElement(j);if(g.call(d||j,j,h,b)===false){break}}}return h},fill:function(a){var b=this;b.elements=[];b.add(a);return b},filter:function(a){var b=[],d=this,c=Ext.isFunction(a)?a:function(e){return e.is(a)};d.each(function(h,e,g){if(c(h,g)!==false){b[b.length]=d.transformElement(h)}});d.elements=b;return d},indexOf:function(a){return this.elements.indexOf(this.transformElement(a))},replaceElement:function(e,c,a){var b=!isNaN(e)?e:this.indexOf(e),g;if(b>-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}this.elements.splice(b,1,c)}return this},clear:function(){this.elements=[]}};Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;Ext.CompositeElementLite.importElementMethods=function(){var c,b=Ext.Element.prototype,a=Ext.CompositeElementLite.prototype;for(c in b){if(typeof b[c]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,c)}}};Ext.CompositeElementLite.importElementMethods();if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select}Ext.Element.select=function(a,b){var c;if(typeof a=="string"){c=Ext.Element.selectorFunction(a,b)}else{if(a.length!==undefined){c=a}else{throw"Invalid selector"}}return new Ext.CompositeElementLite(c)};Ext.select=Ext.Element.select;(function(){var b="beforerequest",e="requestcomplete",d="requestexception",h=undefined,c="load",i="POST",a="GET",g=window;Ext.data.Connection=function(j){Ext.apply(this,j);this.addEvents(b,e,d);Ext.data.Connection.superclass.constructor.call(this)};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,autoAbort:false,disableCaching:true,disableCachingParam:"_dc",request:function(n){var s=this;if(s.fireEvent(b,s,n)){if(n.el){if(!Ext.isEmpty(n.indicatorText)){s.indicatorText='<div class="loading-indicator">'+n.indicatorText+"</div>"}if(s.indicatorText){Ext.getDom(n.el).innerHTML=s.indicatorText}n.success=(Ext.isFunction(n.success)?n.success:function(){}).createInterceptor(function(o){Ext.getDom(n.el).innerHTML=o.responseText})}var l=n.params,k=n.url||s.url,j,q={success:s.handleResponse,failure:s.handleFailure,scope:s,argument:{options:n},timeout:Ext.num(n.timeout,s.timeout)},m,t;if(Ext.isFunction(l)){l=l.call(n.scope||g,n)}l=Ext.urlEncode(s.extraParams,Ext.isObject(l)?Ext.urlEncode(l):l);if(Ext.isFunction(k)){k=k.call(n.scope||g,n)}if((m=Ext.getDom(n.form))){k=k||m.action;if(n.isUpload||(/multipart\/form-data/i.test(m.getAttribute("enctype")))){return s.doFormUpload.call(s,n,l,k)}t=Ext.lib.Ajax.serializeForm(m);l=l?(l+"&"+t):t}j=n.method||s.method||((l||n.xmlData||n.jsonData)?i:a);if(j===a&&(s.disableCaching&&n.disableCaching!==false)||n.disableCaching===true){var r=n.disableCachingParam||s.disableCachingParam;k=Ext.urlAppend(k,r+"="+(new Date().getTime()))}n.headers=Ext.applyIf(n.headers||{},s.defaultHeaders||{});if(n.autoAbort===true||s.autoAbort){s.abort()}if((j==a||n.xmlData||n.jsonData)&&l){k=Ext.urlAppend(k,l);l=""}return(s.transId=Ext.lib.Ajax.request(j,k,q,l,n))}else{return n.callback?n.callback.apply(n.scope,[n,h,h]):null}},isLoading:function(j){return j?Ext.lib.Ajax.isCallInProgress(j):!!this.transId},abort:function(j){if(j||this.isLoading()){Ext.lib.Ajax.abort(j||this.transId)}},handleResponse:function(j){this.transId=false;var k=j.argument.options;j.argument=k?k.argument:null;this.fireEvent(e,this,j,k);if(k.success){k.success.call(k.scope,j,k)}if(k.callback){k.callback.call(k.scope,k,true,j)}},handleFailure:function(j,l){this.transId=false;var k=j.argument.options;j.argument=k?k.argument:null;this.fireEvent(d,this,j,k,l);if(k.failure){k.failure.call(k.scope,j,k)}if(k.callback){k.callback.call(k.scope,k,false,j)}},doFormUpload:function(q,j,k){var l=Ext.id(),v=document,r=v.createElement("iframe"),m=Ext.getDom(q.form),u=[],t,p="multipart/form-data",n={target:m.target,method:m.method,encoding:m.encoding,enctype:m.enctype,action:m.action};Ext.fly(r).set({id:l,name:l,cls:"x-hidden",src:Ext.SSL_SECURE_URL});v.body.appendChild(r);if(Ext.isIE){document.frames[l].name=l}Ext.fly(m).set({target:l,method:i,enctype:p,encoding:p,action:k||n.action});Ext.iterate(Ext.urlDecode(j,false),function(w,o){t=v.createElement("input");Ext.fly(t).set({type:"hidden",value:o,name:w});m.appendChild(t);u.push(t)});function s(){var x=this,w={responseText:"",responseXML:null,argument:q.argument},A,z;try{A=r.contentWindow.document||r.contentDocument||g.frames[l].document;if(A){if(A.body){if(/textarea/i.test((z=A.body.firstChild||{}).tagName)){w.responseText=z.value}else{w.responseText=A.body.innerHTML}}w.responseXML=A.XMLDocument||A}}catch(y){}Ext.EventManager.removeListener(r,c,s,x);x.fireEvent(e,x,w,q);function o(D,C,B){if(Ext.isFunction(D)){D.apply(C,B)}}o(q.success,q.scope,[w,q]);o(q.callback,q.scope,[q,true,w]);if(!x.debugUploads){setTimeout(function(){Ext.removeNode(r)},100)}}Ext.EventManager.on(r,c,s,this);m.submit();Ext.fly(m).set(n);Ext.each(u,function(o){Ext.removeNode(o)})}})})();Ext.Ajax=new Ext.data.Connection({autoAbort:false,serializeForm:function(a){return Ext.lib.Ajax.serializeForm(a)}});Ext.util.JSON=new (function(){var useHasOwn=!!{}.hasOwnProperty,isNative=function(){var useNative=null;return function(){if(useNative===null){useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"}return useNative}}(),pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return json?eval("("+json+")"):""},doEncode=function(o){if(!Ext.isDefined(o)||o===null){return"null"}else{if(Ext.isArray(o)){return encodeArray(o)}else{if(Ext.isDate(o)){return Ext.util.JSON.encodeDate(o)}else{if(Ext.isString(o)){return encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(Ext.isBoolean(o)){return String(o)}else{var a=["{"],b,i,v;for(i in o){if(!o.getElementsByTagName){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(doEncode(i),":",v===null?"null":doEncode(v));b=true}}}}a.push("}");return a.join("")}}}}}}},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},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+'"'},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("")};this.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(){var ec;return function(o){if(!ec){ec=isNative()?JSON.stringify:doEncode}return ec(o)}}();this.decode=function(){var dc;return function(json){if(!dc){dc=isNative()?JSON.parse:doDecode}return dc(json)}}()})();Ext.encode=Ext.util.JSON.encode;Ext.decode=Ext.util.JSON.decode;Ext.EventManager=function(){var z,p,j=false,l=Ext.isGecko||Ext.isWebKit||Ext.isSafari,o=Ext.lib.Event,q=Ext.lib.Dom,c=document,A=window,r="DOMContentLoaded",t="complete",g=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,u=[];function n(E){var H=false,D=0,C=u.length,F=false,G;if(E){if(E.getElementById||E.navigator){for(;D<C;++D){G=u[D];if(G.el===E){H=G.id;break}}if(!H){H=Ext.id(E);u.push({id:H,el:E});F=true}}else{H=Ext.id(E)}if(!Ext.elCache[H]){Ext.Element.addToCache(new Ext.Element(E),H);if(F){Ext.elCache[H].skipGC=true}}}return H}function m(E,G,J,F,D,L){E=Ext.getDom(E);var C=n(E),K=Ext.elCache[C].events,H;H=o.on(E,G,D);K[G]=K[G]||[];K[G].push([J,D,L,H,F]);if(E.addEventListener&&G=="mousewheel"){var I=["DOMMouseScroll",D,false];E.addEventListener.apply(E,I);Ext.EventManager.addListener(A,"unload",function(){E.removeEventListener.apply(E,I)})}if(E==c&&G=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.addListener(D)}}function d(){if(window!=top){return false}try{c.documentElement.doScroll("left")}catch(C){return false}b();return true}function B(C){if(Ext.isIE&&d()){return true}if(c.readyState==t){b();return true}j||(p=setTimeout(arguments.callee,2));return false}var k;function i(C){k||(k=Ext.query("style, link[rel=stylesheet]"));if(k.length==c.styleSheets.length){b();return true}j||(p=setTimeout(arguments.callee,2));return false}function y(C){c.removeEventListener(r,arguments.callee,false);i()}function b(C){if(!j){j=true;if(p){clearTimeout(p)}if(l){c.removeEventListener(r,b,false)}if(Ext.isIE&&B.bindIE){c.detachEvent("onreadystatechange",B)}o.un(A,"load",arguments.callee)}if(z&&!Ext.isReady){Ext.isReady=true;z.fire();z.listeners=[]}}function a(){z||(z=new Ext.util.Event());if(l){c.addEventListener(r,b,false)}if(Ext.isIE){if(!B()){B.bindIE=true;c.attachEvent("onreadystatechange",B)}}else{if(Ext.isOpera){(c.readyState==t&&i())||c.addEventListener(r,y,false)}else{if(Ext.isWebKit){B()}}}o.on(A,"load",b)}function x(C,D){return function(){var E=Ext.toArray(arguments);if(D.target==Ext.EventObject.setEvent(E[0]).target){C.apply(this,E)}}}function w(D,E,C){return function(F){C.delay(E.buffer,D,null,[new Ext.EventObjectImpl(F)])}}function s(G,F,C,E,D){return function(H){Ext.EventManager.removeListener(F,C,E,D);G(H)}}function e(D,E,C){return function(G){var F=new Ext.util.DelayedTask(D);if(!C.tasks){C.tasks=[]}C.tasks.push(F);F.delay(E.delay||10,D,null,[new Ext.EventObjectImpl(G)])}}function h(H,G,C,J,K){var D=(!C||typeof C=="boolean")?{}:C,E=Ext.getDom(H),F;J=J||D.fn;K=K||D.scope;if(!E){throw'Error listening for "'+G+'". Element "'+H+"\" doesn't exist."}function I(M){if(!Ext){return}M=Ext.EventObject.setEvent(M);var L;if(D.delegate){if(!(L=M.getTarget(D.delegate,E))){return}}else{L=M.target}if(D.stopEvent){M.stopEvent()}if(D.preventDefault){M.preventDefault()}if(D.stopPropagation){M.stopPropagation()}if(D.normalized===false){M=M.browserEvent}J.call(K||E,M,L,D)}if(D.target){I=x(I,D)}if(D.delay){I=e(I,D,J)}if(D.single){I=s(I,E,G,J,K)}if(D.buffer){F=new Ext.util.DelayedTask(I);I=w(I,D,F)}m(E,G,J,F,I,K);return I}var v={addListener:function(E,C,G,F,D){if(typeof C=="object"){var J=C,H,I;for(H in J){I=J[H];if(!g.test(H)){if(Ext.isFunction(I)){h(E,H,J,I,J.scope)}else{h(E,H,I)}}}}else{h(E,C,D,G,F)}},removeListener:function(E,I,M,N){E=Ext.getDom(E);var C=n(E),K=E&&(Ext.elCache[C].events)[I]||[],D,H,F,G,J,L;for(H=0,J=K.length;H<J;H++){if(Ext.isArray(L=K[H])&&L[0]==M&&(!N||L[2]==N)){if(L[4]){L[4].cancel()}G=M.tasks&&M.tasks.length;if(G){while(G--){M.tasks[G].cancel()}delete M.tasks}D=L[1];o.un(E,I,o.extAdapter?L[3]:D);if(D&&E.addEventListener&&I=="mousewheel"){E.removeEventListener("DOMMouseScroll",D,false)}if(D&&E==c&&I=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.removeListener(D)}K.splice(H,1);if(K.length===0){delete Ext.elCache[C].events[I]}for(G in Ext.elCache[C].events){return false}Ext.elCache[C].events={};return false}}},removeAll:function(E){E=Ext.getDom(E);var D=n(E),J=Ext.elCache[D]||{},M=J.events||{},I,H,K,F,L,G,C;for(F in M){if(M.hasOwnProperty(F)){I=M[F];for(H=0,K=I.length;H<K;H++){L=I[H];if(L[4]){L[4].cancel()}if(L[0].tasks&&(G=L[0].tasks.length)){while(G--){L[0].tasks[G].cancel()}delete L.tasks}C=L[1];o.un(E,F,o.extAdapter?L[3]:C);if(E.addEventListener&&C&&F=="mousewheel"){E.removeEventListener("DOMMouseScroll",C,false)}if(C&&E==c&&F=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.removeListener(C)}}}}if(Ext.elCache[D]){Ext.elCache[D].events={}}},getListeners:function(F,C){F=Ext.getDom(F);var H=n(F),D=Ext.elCache[H]||{},G=D.events||{},E=[];if(G&&G[C]){return G[C]}else{return null}},purgeElement:function(E,C,G){E=Ext.getDom(E);var D=n(E),J=Ext.elCache[D]||{},K=J.events||{},F,I,H;if(G){if(K&&K.hasOwnProperty(G)){I=K[G];for(F=0,H=I.length;F<H;F++){Ext.EventManager.removeListener(E,G,I[F][0])}}}else{Ext.EventManager.removeAll(E)}if(C&&E&&E.childNodes){for(F=0,H=E.childNodes.length;F<H;F++){Ext.EventManager.purgeElement(E.childNodes[F],C,G)}}},_unload:function(){var C;for(C in Ext.elCache){Ext.EventManager.removeAll(C)}delete Ext.elCache;delete Ext.Element._flyweights;var G,D,F,E=Ext.lib.Ajax;(typeof E.conn=="object")?D=E.conn:D={};for(F in D){G=D[F];if(G){E.abort({conn:G,tId:F})}}},onDocumentReady:function(E,D,C){if(Ext.isReady){z||(z=new Ext.util.Event());z.addListener(E,D,C);z.fire();z.listeners=[]}else{if(!z){a()}C=C||{};C.delay=C.delay||1;z.addListener(E,D,C)}},fireDocReady:b};v.on=v.addListener;v.un=v.removeListener;v.stoppedMouseDownEvent=new Ext.util.Event();return v}();Ext.onReady=Ext.EventManager.onDocumentReady;(function(){var a=function(){var c=document.body||document.getElementsByTagName("body")[0];if(!c){return false}var b=[" ",Ext.isIE?"ext-ie "+(Ext.isIE6?"ext-ie6":(Ext.isIE7?"ext-ie7":(Ext.isIE8?"ext-ie8":"ext-ie9"))):Ext.isGecko?"ext-gecko "+(Ext.isGecko2?"ext-gecko2":"ext-gecko3"):Ext.isOpera?"ext-opera":Ext.isWebKit?"ext-webkit":""];if(Ext.isSafari){b.push("ext-safari "+(Ext.isSafari2?"ext-safari2":(Ext.isSafari3?"ext-safari3":"ext-safari4")))}else{if(Ext.isChrome){b.push("ext-chrome")}}if(Ext.isMac){b.push("ext-mac")}if(Ext.isLinux){b.push("ext-linux")}if(Ext.isStrict||Ext.isBorderBox){var d=c.parentNode;if(d){if(!Ext.isStrict){Ext.fly(d,"_internal").addClass("x-quirks");if(Ext.isIE&&!Ext.isStrict){Ext.isIEQuirks=true}}Ext.fly(d,"_internal").addClass(((Ext.isStrict&&Ext.isIE)||(!Ext.enableForcedBoxModel&&!Ext.isIE))?" ext-strict":" ext-border-box")}}if(Ext.enableForcedBoxModel&&!Ext.isIE){Ext.isForcedBorderBox=true;b.push("ext-forced-border-box")}Ext.fly(c,"_internal").addClass(b);return true};if(!a()){Ext.onReady(a)}})();(function(){var b=Ext.apply(Ext.supports,{correctRightMargin:true,correctTransparentColor:true,cssFloat:true});var a=function(){var g=document.createElement("div"),e=document,c,d;g.innerHTML='<div style="height:30px;width:50px;"><div style="height:20px;width:20px;"></div></div><div style="float:left;background-color:transparent;">';e.body.appendChild(g);d=g.lastChild;if((c=e.defaultView)){if(c.getComputedStyle(g.firstChild.firstChild,null).marginRight!="0px"){b.correctRightMargin=false}if(c.getComputedStyle(d,null).backgroundColor!="transparent"){b.correctTransparentColor=false}}b.cssFloat=!!d.style.cssFloat;e.body.removeChild(g)};if(Ext.isReady){a()}else{Ext.onReady(a)}})();Ext.EventObject=function(){var b=Ext.lib.Event,c=/(dbl)?click/,a={3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},d=Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2};Ext.EventObjectImpl=function(g){if(g){this.setEvent(g.browserEvent||g)}};Ext.EventObjectImpl.prototype={setEvent:function(h){var g=this;if(h==g||(h&&h.browserEvent)){return h}g.browserEvent=h;if(h){g.button=h.button?d[h.button]:(h.which?h.which-1:-1);if(c.test(h.type)&&g.button==-1){g.button=0}g.type=h.type;g.shiftKey=h.shiftKey;g.ctrlKey=h.ctrlKey||h.metaKey||false;g.altKey=h.altKey;g.keyCode=h.keyCode;g.charCode=h.charCode;g.target=b.getTarget(h);g.xy=b.getXY(h)}else{g.button=-1;g.shiftKey=false;g.ctrlKey=false;g.altKey=false;g.keyCode=0;g.charCode=0;g.target=null;g.xy=[0,0]}return g},stopEvent:function(){var e=this;if(e.browserEvent){if(e.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(e)}b.stopEvent(e.browserEvent)}},preventDefault:function(){if(this.browserEvent){b.preventDefault(this.browserEvent)}},stopPropagation:function(){var e=this;if(e.browserEvent){if(e.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(e)}b.stopPropagation(e.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(e){return Ext.isSafari?(a[e]||e):e},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getXY:function(){return this.xy},getTarget:function(g,h,e){return g?Ext.fly(this.target).findParent(g,h,e):(e?Ext.get(this.target):this.target)},getRelatedTarget:function(){return this.browserEvent?b.getRelatedTarget(this.browserEvent):null},getWheelDelta:function(){var g=this.browserEvent;var h=0;if(g.wheelDelta){h=g.wheelDelta/120}else{if(g.detail){h=-g.detail/3}}return h},within:function(h,i,e){if(h){var g=this[i?"getRelatedTarget":"getTarget"]();return g&&((e?(g==Ext.getDom(h)):false)||Ext.fly(h).contains(g))}return false}};return new Ext.EventObjectImpl()}();Ext.Loader=Ext.apply({},{load:function(j,i,k,c){var k=k||this,g=document.getElementsByTagName("head")[0],b=document.createDocumentFragment(),a=j.length,h=0,e=this;var l=function(m){g.appendChild(e.buildScriptTag(j[m],d))};var d=function(){h++;if(a==h&&typeof i=="function"){i.call(k)}else{if(c===true){l(h)}}};if(c===true){l.call(this,0)}else{Ext.each(j,function(n,m){b.appendChild(this.buildScriptTag(n,d))},this);g.appendChild(b)}},buildScriptTag:function(b,c){var a=document.createElement("script");a.type="text/javascript";a.src=b;if(a.readyState){a.onreadystatechange=function(){if(a.readyState=="loaded"||a.readyState=="complete"){a.onreadystatechange=null;c()}}}else{a.onload=c}return a}});Ext.ns("Ext.grid","Ext.list","Ext.dd","Ext.tree","Ext.form","Ext.menu","Ext.state","Ext.layout.boxOverflow","Ext.app","Ext.ux","Ext.chart","Ext.direct","Ext.slider");Ext.apply(Ext,function(){var c=Ext,a=0,b=null;return{emptyFn:function(){},BLANK_IMAGE_URL:Ext.isIE6||Ext.isIE7||Ext.isAir?"http://www.extjs.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",extendX:function(d,e){return Ext.extend(d,e(d.prototype))},getDoc:function(){return Ext.get(document)},num:function(e,d){e=Number(Ext.isEmpty(e)||Ext.isArray(e)||typeof e=="boolean"||(typeof e=="string"&&e.trim().length==0)?NaN:e);return isNaN(e)?d:e},value:function(g,d,e){return Ext.isEmpty(g,e)?d:g},escapeRe:function(d){return d.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1")},sequence:function(h,d,g,e){h[d]=h[d].createSequence(g,e)},addBehaviors:function(i){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(i)})}else{var e={},h,d,g;for(d in i){if((h=d.split("@"))[1]){g=h[0];if(!e[g]){e[g]=Ext.select(g)}e[g].on(h[1],i[d])}}e=null}},getScrollBarWidth:function(g){if(!Ext.isReady){return 0}if(g===true||b===null){var i=Ext.getBody().createChild('<div class="x-hide-offsets" style="width:100px;height:50px;overflow:hidden;"><div style="height:200px;"></div></div>'),h=i.child("div",true);var e=h.offsetWidth;i.setStyle("overflow",(Ext.isWebKit||Ext.isGecko)?"auto":"scroll");var d=h.offsetWidth;i.remove();b=e-d+2}return b},combine:function(){var g=arguments,e=g.length,j=[];for(var h=0;h<e;h++){var d=g[h];if(Ext.isArray(d)){j=j.concat(d)}else{if(d.length!==undefined&&!d.substr){j=j.concat(Array.prototype.slice.call(d,0))}else{j.push(d)}}}return j},copyTo:function(d,e,g){if(typeof g=="string"){g=g.split(/[,;\s]/)}Ext.each(g,function(h){if(e.hasOwnProperty(h)){d[h]=e[h]}},this);return d},destroy:function(){Ext.each(arguments,function(d){if(d){if(Ext.isArray(d)){this.destroy.apply(this,d)}else{if(typeof d.destroy=="function"){d.destroy()}else{if(d.dom){d.remove()}}}}},this)},destroyMembers:function(l,j,g,h){for(var k=1,e=arguments,d=e.length;k<d;k++){Ext.destroy(l[e[k]]);delete l[e[k]]}},clean:function(d){var e=[];Ext.each(d,function(g){if(!!g){e.push(g)}});return e},unique:function(d){var e=[],g={};Ext.each(d,function(h){if(!g[h]){e.push(h)}g[h]=true});return e},flatten:function(d){var g=[];function e(h){Ext.each(h,function(i){if(Ext.isArray(i)){e(i)}else{g.push(i)}});return g}return e(d)},min:function(d,e){var g=d[0];e=e||function(i,h){return i<h?-1:1};Ext.each(d,function(h){g=e(g,h)==-1?g:h});return g},max:function(d,e){var g=d[0];e=e||function(i,h){return i>h?1:-1};Ext.each(d,function(h){g=e(g,h)==1?g:h});return g},mean:function(d){return d.length>0?Ext.sum(d)/d.length:undefined},sum:function(d){var e=0;Ext.each(d,function(g){e+=g});return e},partition:function(d,e){var g=[[],[]];Ext.each(d,function(j,k,h){g[(e&&e(j,k,h))||(!e&&j)?0:1].push(j)});return g},invoke:function(d,e){var h=[],g=Array.prototype.slice.call(arguments,2);Ext.each(d,function(j,k){if(j&&typeof j[e]=="function"){h.push(j[e].apply(j,g))}else{h.push(undefined)}});return h},pluck:function(d,g){var e=[];Ext.each(d,function(h){e.push(h[g])});return e},zip:function(){var n=Ext.partition(arguments,function(i){return typeof i!="function"}),k=n[0],m=n[1][0],d=Ext.max(Ext.pluck(k,"length")),h=[];for(var l=0;l<d;l++){h[l]=[];if(m){h[l]=m.apply(m,Ext.pluck(k,l))}else{for(var g=0,e=k.length;g<e;g++){h[l].push(k[g][l])}}}return h},getCmp:function(d){return Ext.ComponentMgr.get(d)},useShims:c.isIE6||(c.isMac&&c.isGecko2),type:function(e){if(e===undefined||e===null){return false}if(e.htmlElement){return"element"}var d=typeof e;if(d=="object"&&e.nodeName){switch(e.nodeType){case 1:return"element";case 3:return(/\S/).test(e.nodeValue)?"textnode":"whitespace"}}if(d=="object"||d=="function"){switch(e.constructor){case Array:return"array";case RegExp:return"regexp";case Date:return"date"}if(typeof e.length=="number"&&typeof e.item=="function"){return"nodelist"}}return d},intercept:function(h,d,g,e){h[d]=h[d].createInterceptor(g,e)},callback:function(d,h,g,e){if(typeof d=="function"){if(e){d.defer(e,h,g||[])}else{d.apply(h,g||[])}}}}}());Ext.apply(Function.prototype,{createSequence:function(b,a){var c=this;return(typeof b!="function")?this:function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}}});Ext.applyIf(String,{escape:function(a){return a.replace(/('|\\)/g,"\\$1")},leftPad:function(d,b,c){var a=String(d);if(!c){c=" "}while(a.length<b){a=c+a}return a}});String.prototype.toggle=function(b,a){return this==b?a:b};String.prototype.trim=function(){var a=/^\s+|\s+$/g;return function(){return this.replace(a,"")}}();Date.prototype.getElapsed=function(a){return Math.abs((a||new Date()).getTime()-this.getTime())};Ext.applyIf(Number.prototype,{constrain:function(b,a){return Math.min(Math.max(this,b),a)}});Ext.lib.Dom.getRegion=function(a){return Ext.lib.Region.getRegion(a)};Ext.lib.Region=function(d,g,a,c){var e=this;e.top=d;e[1]=d;e.right=g;e.bottom=a;e.left=c;e[0]=c};Ext.lib.Region.prototype={contains:function(b){var a=this;return(b.left>=a.left&&b.right<=a.right&&b.top>=a.top&&b.bottom<=a.bottom)},getArea:function(){var a=this;return((a.bottom-a.top)*(a.right-a.left))},intersect:function(h){var g=this,d=Math.max(g.top,h.top),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.left,h.left);if(a>=d&&e>=c){return new Ext.lib.Region(d,e,a,c)}},union:function(h){var g=this,d=Math.min(g.top,h.top),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.left,h.left);return new Ext.lib.Region(d,e,a,c)},constrainTo:function(b){var a=this;a.top=a.top.constrain(b.top,b.bottom);a.bottom=a.bottom.constrain(b.top,b.bottom);a.left=a.left.constrain(b.left,b.right);a.right=a.right.constrain(b.left,b.right);return a},adjust:function(d,c,a,g){var e=this;e.top+=d;e.left+=c;e.right+=g;e.bottom+=a;return e}};Ext.lib.Region.getRegion=function(e){var h=Ext.lib.Dom.getXY(e),d=h[1],g=h[0]+e.offsetWidth,a=h[1]+e.offsetHeight,c=h[0];return new Ext.lib.Region(d,g,a,c)};Ext.lib.Point=function(a,c){if(Ext.isArray(a)){c=a[1];a=a[0]}var b=this;b.x=b.right=b.left=b[0]=a;b.y=b.top=b.bottom=b[1]=c};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.apply(Ext.DomHelper,function(){var e,a="afterbegin",h="afterend",i="beforebegin",d="beforeend",b=/tag|children|cn|html$/i;function g(m,p,n,q,l,j){m=Ext.getDom(m);var k;if(e.useDom){k=c(p,null);if(j){m.appendChild(k)}else{(l=="firstChild"?m:m.parentNode).insertBefore(k,m[l]||m)}}else{k=Ext.DomHelper.insertHtml(q,m,Ext.DomHelper.createHtml(p))}return n?Ext.get(k,true):k}function c(j,r){var k,u=document,p,s,m,t;if(Ext.isArray(j)){k=u.createDocumentFragment();for(var q=0,n=j.length;q<n;q++){c(j[q],k)}}else{if(typeof j=="string"){k=u.createTextNode(j)}else{k=u.createElement(j.tag||"div");p=!!k.setAttribute;for(var s in j){if(!b.test(s)){m=j[s];if(s=="cls"){k.className=m}else{if(p){k.setAttribute(s,m)}else{k[s]=m}}}}Ext.DomHelper.applyStyles(k,j.style);if((t=j.children||j.cn)){c(t,k)}else{if(j.html){k.innerHTML=j.html}}}}if(r){r.appendChild(k)}return k}e={createTemplate:function(k){var j=Ext.DomHelper.createHtml(k);return new Ext.Template(j)},useDom:false,insertBefore:function(j,l,k){return g(j,l,k,i)},insertAfter:function(j,l,k){return g(j,l,k,h,"nextSibling")},insertFirst:function(j,l,k){return g(j,l,k,a,"firstChild")},append:function(j,l,k){return g(j,l,k,d,"",true)},createDom:c};return e}());Ext.apply(Ext.Template.prototype,{disableFormats:false,re:/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,argsRe:/^\s*['"](.*)["']\s*$/,compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,applyTemplate:function(b){var g=this,a=g.disableFormats!==true,e=Ext.util.Format,c=g;if(g.compiled){return g.compiled(b)}function d(j,l,p,k){if(p&&a){if(p.substr(0,5)=="this."){return c.call(p.substr(5),b[l],b)}else{if(k){var o=g.argsRe;k=k.split(",");for(var n=0,h=k.length;n<h;n++){k[n]=k[n].replace(o,"$1")}k=[b[l]].concat(k)}else{k=[b[l]]}return e[p].apply(e,k)}}else{return b[l]!==undefined?b[l]:""}}return g.html.replace(g.re,d)},compile:function(){var me=this,fm=Ext.util.Format,useF=me.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(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+"'"}if(Ext.isGecko){body="this.compiled = function(values){ return '"+me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn)+"';};"}else{body=["this.compiled = function(values){ return ['"];body.push(me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn));body.push("'].join('');};");body=body.join("")}eval(body);return me},call:function(c,b,a){return this[c](b,a)}});Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.util.Functions={createInterceptor:function(c,b,a){var d=c;if(!Ext.isFunction(b)){return c}else{return function(){var g=this,e=arguments;b.target=g;b.method=c;return(b.apply(a||g||window,e)!==false)?c.apply(g||window,e):null}}},createDelegate:function(c,d,b,a){if(!Ext.isFunction(c)){return c}return function(){var g=b||arguments;if(a===true){g=Array.prototype.slice.call(arguments,0);g=g.concat(b)}else{if(Ext.isNumber(a)){g=Array.prototype.slice.call(arguments,0);var e=[a,0].concat(b);Array.prototype.splice.apply(g,e)}}return c.apply(d||window,g)}},defer:function(d,c,e,b,a){d=Ext.util.Functions.createDelegate(d,e,b,a);if(c>0){return setTimeout(d,c)}d();return 0},createSequence:function(c,b,a){if(!Ext.isFunction(b)){return c}else{return function(){var d=c.apply(this||window,arguments);b.apply(a||this||window,arguments);return d}}}};Ext.defer=Ext.util.Functions.defer;Ext.createInterceptor=Ext.util.Functions.createInterceptor;Ext.createSequence=Ext.util.Functions.createSequence;Ext.createDelegate=Ext.util.Functions.createDelegate;Ext.apply(Ext.util.Observable.prototype,function(){function a(j){var i=(this.methodEvents=this.methodEvents||{})[j],d,c,g,h=this;if(!i){this.methodEvents[j]=i={};i.originalFn=this[j];i.methodName=j;i.before=[];i.after=[];var b=function(l,k,e){if((c=l.apply(k||h,e))!==undefined){if(typeof c=="object"){if(c.returnValue!==undefined){d=c.returnValue}else{d=c}g=!!c.cancel}else{if(c===false){g=true}else{d=c}}}};this[j]=function(){var l=Array.prototype.slice.call(arguments,0),k;d=c=undefined;g=false;for(var m=0,e=i.before.length;m<e;m++){k=i.before[m];b(k.fn,k.scope,l);if(g){return d}}if((c=i.originalFn.apply(h,l))!==undefined){d=c}for(var m=0,e=i.after.length;m<e;m++){k=i.after[m];b(k.fn,k.scope,l);if(g){return d}}return d}}return i}return{beforeMethod:function(d,c,b){a.call(this,d).before.push({fn:c,scope:b})},afterMethod:function(d,c,b){a.call(this,d).after.push({fn:c,scope:b})},removeMethodListener:function(j,g,d){var h=this.getMethodEvent(j);for(var c=0,b=h.before.length;c<b;c++){if(h.before[c].fn==g&&h.before[c].scope==d){h.before.splice(c,1);return}}for(var c=0,b=h.after.length;c<b;c++){if(h.after[c].fn==g&&h.after[c].scope==d){h.after.splice(c,1);return}}},relayEvents:function(j,e){var h=this;function g(i){return function(){return h.fireEvent.apply(h,[i].concat(Array.prototype.slice.call(arguments,0)))}}for(var d=0,b=e.length;d<b;d++){var c=e[d];h.events[c]=h.events[c]||true;j.on(c,g(c),h)}},enableBubble:function(e){var g=this;if(!Ext.isEmpty(e)){e=Ext.isArray(e)?e:Array.prototype.slice.call(arguments,0);for(var d=0,b=e.length;d<b;d++){var c=e[d];c=c.toLowerCase();var h=g.events[c]||true;if(typeof h=="boolean"){h=new Ext.util.Event(g,c);g.events[c]=h}h.bubble=true}}}}}());Ext.util.Observable.capture=function(c,b,a){c.fireEvent=c.fireEvent.createInterceptor(b,a)};Ext.util.Observable.observeClass=function(b,a){if(b){if(!b.fireEvent){Ext.apply(b,new Ext.util.Observable());Ext.util.Observable.capture(b.prototype,b.fireEvent,b)}if(typeof a=="object"){b.on(a)}return b}};Ext.apply(Ext.EventManager,function(){var d,k,g,b,a=Ext.lib.Dom,j=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,c=Ext.EventManager._unload,i=0,h=0,e=Ext.isWebKit?Ext.num(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1])>=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera);return{_unload:function(){Ext.EventManager.un(window,"resize",this.fireWindowResize,this);c.call(Ext.EventManager)},doResizeEvent:function(){var m=a.getViewHeight(),l=a.getViewWidth();if(h!=m||i!=l){d.fire(i=l,h=m)}},onWindowResize:function(n,m,l){if(!d){d=new Ext.util.Event();k=new Ext.util.DelayedTask(this.doResizeEvent);Ext.EventManager.on(window,"resize",this.fireWindowResize,this)}d.addListener(n,m,l)},fireWindowResize:function(){if(d){k.delay(100)}},onTextResize:function(o,n,l){if(!g){g=new Ext.util.Event();var m=new Ext.Element(document.createElement("div"));m.dom.className="x-text-resize";m.dom.innerHTML="X";m.appendTo(document.body);b=m.dom.offsetHeight;setInterval(function(){if(m.dom.offsetHeight!=b){g.fire(b,b=m.dom.offsetHeight)}},this.textResizeInterval)}g.addListener(o,n,l)},removeResizeListener:function(m,l){if(d){d.removeListener(m,l)}},fireResize:function(){if(d){d.fire(a.getViewWidth(),a.getViewHeight())}},textResizeInterval:50,ieDeferSrc:false,getKeyEvent:function(){return e?"keydown":"keypress"},useKeydown:e}}());Ext.EventManager.on=Ext.EventManager.addListener;Ext.apply(Ext.EventObjectImpl.prototype,{BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,CONTROL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGEUP:33,PAGE_DOWN:34,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1])},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)}});Ext.Element.addMethods({swallowEvent:function(a,b){var d=this;function c(g){g.stopPropagation();if(b){g.preventDefault()}}if(Ext.isArray(a)){Ext.each(a,function(g){d.on(g,c)});return d}d.on(a,c);return d},relayEvent:function(a,b){this.on(a,function(c){b.fireEvent(a,c)})},clean:function(b){var d=this,e=d.dom,g=e.firstChild,c=-1;if(Ext.Element.data(e,"isCleaned")&&b!==true){return d}while(g){var a=g.nextSibling;if(g.nodeType==3&&!(/\S/.test(g.nodeValue))){e.removeChild(g)}else{g.nodeIndex=++c}g=a}Ext.Element.data(e,"isCleaned",true);return d},load:function(){var a=this.getUpdater();a.update.apply(a,arguments);return this},getUpdater:function(){return this.updateManager||(this.updateManager=new Ext.Updater(this))},update:function(html,loadScripts,callback){if(!this.dom){return this}html=html||"";if(loadScripts!==true){this.dom.innerHTML=html;if(typeof callback=="function"){callback()}return this}var id=Ext.id(),dom=this.dom;html+='<span id="'+id+'"></span>';Ext.lib.Event.onAvailable(id,function(){var DOC=document,hd=DOC.getElementsByTagName("head")[0],re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,match,attrs,srcMatch,typeMatch,el,s;while((match=re.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];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])}}}}el=DOC.getElementById(id);if(el){Ext.removeNode(el)}if(typeof callback=="function"){callback()}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(a,e,d){a=(typeof a=="object")?a:{tag:"div",cls:a};var c=this,b=e?Ext.DomHelper.append(e,a,true):Ext.DomHelper.insertBefore(c.dom,a,true);if(d&&c.setBox&&c.getBox){b.setBox(c.getBox())}return b}});Ext.Element.prototype.getUpdateManager=Ext.Element.prototype.getUpdater;Ext.Element.addMethods({getAnchorXY:function(e,l,q){e=(e||"tl").toLowerCase();q=q||{};var k=this,b=k.dom==document.body||k.dom==document,n=q.width||b?Ext.lib.Dom.getViewWidth():k.getWidth(),i=q.height||b?Ext.lib.Dom.getViewHeight():k.getHeight(),p,a=Math.round,c=k.getXY(),m=k.getScroll(),j=b?m.left:!l?c[0]:0,g=b?m.top:!l?c[1]:0,d={c:[a(n*0.5),a(i*0.5)],t:[a(n*0.5),0],l:[0,a(i*0.5)],r:[n,a(i*0.5)],b:[a(n*0.5),i],tl:[0,0],bl:[0,i],br:[n,i],tr:[n,0]};p=d[e];return[p[0]+j,p[1]+g]},anchorTo:function(b,h,c,a,k,l){var i=this,e=i.dom,j=!Ext.isEmpty(k),d=function(){Ext.fly(e).alignTo(b,h,c,a);Ext.callback(l,Ext.fly(e))},g=this.getAnchor();this.removeAnchor();Ext.apply(g,{fn:d,scroll:j});Ext.EventManager.onWindowResize(d,null);if(j){Ext.EventManager.on(window,"scroll",d,null,{buffer:!isNaN(k)?k:50})}d.call(i);return i},removeAnchor:function(){var b=this,a=this.getAnchor();if(a&&a.fn){Ext.EventManager.removeResizeListener(a.fn);if(a.scroll){Ext.EventManager.un(window,"scroll",a.fn)}delete a.fn}return b},getAnchor:function(){var b=Ext.Element.data,c=this.dom;if(!c){return}var a=b(c,"_anchor");if(!a){a=b(c,"_anchor",{})}return a},getAlignToXY:function(g,A,B){g=Ext.get(g);if(!g||!g.dom){throw"Element.alignToXY with an element that doesn't exist"}B=B||[0,0];A=(!A||A=="?"?"tl-bl?":(!(/-/).test(A)&&A!==""?"tl-"+A:A||"tl-bl")).toLowerCase();var K=this,H=K.dom,M,L,n,l,s,F,v,t=Ext.lib.Dom.getViewWidth()-10,G=Ext.lib.Dom.getViewHeight()-10,b,i,j,k,u,z,N=document,J=N.documentElement,q=N.body,E=(J.scrollLeft||q.scrollLeft||0)+5,D=(J.scrollTop||q.scrollTop||0)+5,I=false,e="",a="",C=A.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!C){throw"Element.alignTo with an invalid alignment "+A}e=C[1];a=C[2];I=!!C[3];M=K.getAnchorXY(e,true);L=g.getAnchorXY(a,false);n=L[0]-M[0]+B[0];l=L[1]-M[1]+B[1];if(I){s=K.getWidth();F=K.getHeight();v=g.getRegion();b=e.charAt(0);i=e.charAt(e.length-1);j=a.charAt(0);k=a.charAt(a.length-1);u=((b=="t"&&j=="b")||(b=="b"&&j=="t"));z=((i=="r"&&k=="l")||(i=="l"&&k=="r"));if(n+s>t+E){n=z?v.left-s:t+E-s}if(n<E){n=z?v.right:E}if(l+F>G+D){l=u?v.top-F:G+D-F}if(l<D){l=u?v.bottom:D}}return[n,l]},alignTo:function(c,a,e,b){var d=this;return d.setXY(d.getAlignToXY(c,a,e),d.preanim&&!!b?d.preanim(arguments,3):false)},adjustForConstraints:function(c,a,b){return this.getConstrainToXY(a||document,false,b,c)||c},getConstrainToXY:function(b,a,c,e){var d={top:0,left:0,bottom:0,right:0};return function(i,A,l,n){i=Ext.get(i);l=l?Ext.applyIf(l,d):d;var z,D,v=0,u=0;if(i.dom==document.body||i.dom==document){z=Ext.lib.Dom.getViewWidth();D=Ext.lib.Dom.getViewHeight()}else{z=i.dom.clientWidth;D=i.dom.clientHeight;if(!A){var t=i.getXY();v=t[0];u=t[1]}}var r=i.getScroll();v+=l.left+r.left;u+=l.top+r.top;z-=l.right;D-=l.bottom;var B=v+z,g=u+D,j=n||(!A?this.getXY():[this.getLeft(true),this.getTop(true)]),p=j[0],o=j[1],k=this.getConstrainOffset(),q=this.dom.offsetWidth+k,C=this.dom.offsetHeight+k;var m=false;if((p+q)>B){p=B-q;m=true}if((o+C)>g){o=g-C;m=true}if(p<v){p=v;m=true}if(o<u){o=u;m=true}return m?[p,o]:false}}(),getConstrainOffset:function(){return 0},getCenterXY:function(){return this.getAlignToXY(document,"c-c")},center:function(a){return this.alignTo(a||document,"c-c")}});Ext.Element.addMethods({select:function(a,b){return Ext.Element.select(a,b,this.dom)}});Ext.apply(Ext.Element.prototype,function(){var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;return{insertSibling:function(i,g,h){var j=this,e,d=(g||"before").toLowerCase()=="after",k;if(Ext.isArray(i)){k=j;Ext.each(i,function(l){e=Ext.fly(k,"_internal").insertSibling(l,g,h);if(d){k=e}});return e}i=i||{};if(i.nodeType||i.dom){e=j.dom.parentNode.insertBefore(c(i),d?j.dom.nextSibling:j.dom);if(!h){e=a(e)}}else{if(d&&!j.dom.nextSibling){e=b.append(j.dom.parentNode,i,!h)}else{e=b[d?"insertAfter":"insertBefore"](j.dom,i,!h)}}return e}}}());Ext.Element.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';Ext.Element.addMethods(function(){var a="_internal",b=/(\d+\.?\d+)px/;return{applyStyles:function(c){Ext.DomHelper.applyStyles(this.dom,c);return this},getStyles:function(){var c={};Ext.each(arguments,function(d){c[d]=this.getStyle(d)},this);return c},setOverflow:function(c){var d=this.dom;if(c=="auto"&&Ext.isMac&&Ext.isGecko2){d.style.overflow="hidden";(function(){d.style.overflow="auto"}).defer(1)}else{d.style.overflow=c}},boxWrap:function(c){c=c||"x-box";var d=Ext.get(this.insertHtml("beforeBegin","<div class='"+c+"'>"+String.format(Ext.Element.boxMarkup,c)+"</div>"));Ext.DomQuery.selectNode("."+c+"-mc",d.dom).appendChild(this.dom);return d},setSize:function(e,c,d){var g=this;if(typeof e=="object"){c=e.height;e=e.width}e=g.adjustWidth(e);c=g.adjustHeight(c);if(!d||!g.anim){g.dom.style.width=g.addUnits(e);g.dom.style.height=g.addUnits(c)}else{g.anim({width:{to:e},height:{to:c}},g.preanim(arguments,2))}return g},getComputedHeight:function(){var d=this,c=Math.max(d.dom.offsetHeight,d.dom.clientHeight);if(!c){c=parseFloat(d.getStyle("height"))||0;if(!d.isBorderBox()){c+=d.getFrameWidth("tb")}}return c},getComputedWidth:function(){var c=Math.max(this.dom.offsetWidth,this.dom.clientWidth);if(!c){c=parseFloat(this.getStyle("width"))||0;if(!this.isBorderBox()){c+=this.getFrameWidth("lr")}}return c},getFrameWidth:function(d,c){return c&&this.isBorderBox()?0:(this.getPadding(d)+this.getBorderWidth(d))},addClassOnOver:function(c){this.hover(function(){Ext.fly(this,a).addClass(c)},function(){Ext.fly(this,a).removeClass(c)});return this},addClassOnFocus:function(c){this.on("focus",function(){Ext.fly(this,a).addClass(c)},this.dom);this.on("blur",function(){Ext.fly(this,a).removeClass(c)},this.dom);return this},addClassOnClick:function(c){var d=this.dom;this.on("mousedown",function(){Ext.fly(d,a).addClass(c);var g=Ext.getDoc(),e=function(){Ext.fly(d,a).removeClass(c);g.removeListener("mouseup",e)};g.on("mouseup",e)});return this},getViewSize:function(){var g=document,h=this.dom,c=(h==g||h==g.body);if(c){var e=Ext.lib.Dom;return{width:e.getViewWidth(),height:e.getViewHeight()}}else{return{width:h.clientWidth,height:h.clientHeight}}},getStyleSize:function(){var j=this,c,i,l=document,m=this.dom,e=(m==l||m==l.body),g=m.style;if(e){var k=Ext.lib.Dom;return{width:k.getViewWidth(),height:k.getViewHeight()}}if(g.width&&g.width!="auto"){c=parseFloat(g.width);if(j.isBorderBox()){c-=j.getFrameWidth("lr")}}if(g.height&&g.height!="auto"){i=parseFloat(g.height);if(j.isBorderBox()){i-=j.getFrameWidth("tb")}}return{width:c||j.getWidth(true),height:i||j.getHeight(true)}},getSize:function(c){return{width:this.getWidth(c),height:this.getHeight(c)}},repaint:function(){var c=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.fly(c).removeClass("x-repaint")},1);return this},unselectable:function(){this.dom.unselectable="on";return this.swallowEvent("selectstart",true).applyStyles("-moz-user-select:none;-khtml-user-select:none;").addClass("x-unselectable")},getMargins:function(d){var e=this,c,g={t:"top",l:"left",r:"right",b:"bottom"},h={};if(!d){for(c in e.margins){h[g[c]]=parseFloat(e.getStyle(e.margins[c]))||0}return h}else{return e.addStyles.call(e,d,e.margins)}}}}());Ext.Element.addMethods({setBox:function(e,g,b){var d=this,a=e.width,c=e.height;if((g&&!d.autoBoxAdjust)&&!d.isBorderBox()){a-=(d.getBorderWidth("lr")+d.getPadding("lr"));c-=(d.getBorderWidth("tb")+d.getPadding("tb"))}d.setBounds(e.x,e.y,a,c,d.animTest.call(d,arguments,b,2));return d},getBox:function(j,p){var m=this,v,e,o,d=m.getBorderWidth,q=m.getPadding,g,a,u,n;if(!p){v=m.getXY()}else{e=parseInt(m.getStyle("left"),10)||0;o=parseInt(m.getStyle("top"),10)||0;v=[e,o]}var c=m.dom,s=c.offsetWidth,i=c.offsetHeight,k;if(!j){k={x:v[0],y:v[1],0:v[0],1:v[1],width:s,height:i}}else{g=d.call(m,"l")+q.call(m,"l");a=d.call(m,"r")+q.call(m,"r");u=d.call(m,"t")+q.call(m,"t");n=d.call(m,"b")+q.call(m,"b");k={x:v[0]+g,y:v[1]+u,0:v[0]+g,1:v[1]+u,width:s-(g+a),height:i-(u+n)}}k.right=k.x+k.width;k.bottom=k.y+k.height;return k},move:function(j,b,c){var g=this,m=g.getXY(),k=m[0],i=m[1],d=[k-b,i],l=[k+b,i],h=[k,i-b],a=[k,i+b],e={l:d,left:d,r:l,right:l,t:h,top:h,up:h,b:a,bottom:a,down:a};j=j.toLowerCase();g.moveTo(e[j][0],e[j][1],g.animTest.call(g,arguments,c,2))},setLeftTop:function(d,c){var b=this,a=b.dom.style;a.left=b.addUnits(d);a.top=b.addUnits(c);return b},getRegion:function(){return Ext.lib.Dom.getRegion(this.dom)},setBounds:function(b,g,d,a,c){var e=this;if(!c||!e.anim){e.setSize(d,a);e.setLocation(b,g)}else{e.anim({points:{to:[b,g]},width:{to:e.adjustWidth(d)},height:{to:e.adjustHeight(a)}},e.preanim(arguments,4),"motion")}return e},setRegion:function(b,a){return this.setBounds(b.left,b.top,b.right-b.left,b.bottom-b.top,this.animTest.call(this,arguments,a,1))}});Ext.Element.addMethods({scrollTo:function(b,d,a){var e=/top/i.test(b),c=this,g=c.dom,h;if(!a||!c.anim){h="scroll"+(e?"Top":"Left");g[h]=d}else{h="scroll"+(e?"Left":"Top");c.anim({scroll:{to:e?[g[h],d]:[d,g[h]]}},c.preanim(arguments,2),"scroll")}return c},scrollIntoView:function(e,i){var p=Ext.getDom(e)||Ext.getBody().dom,h=this.dom,g=this.getOffsetsTo(p),k=g[0]+p.scrollLeft,u=g[1]+p.scrollTop,q=u+h.offsetHeight,d=k+h.offsetWidth,a=p.clientHeight,m=parseInt(p.scrollTop,10),s=parseInt(p.scrollLeft,10),j=m+a,n=s+p.clientWidth;if(h.offsetHeight>a||u<m){p.scrollTop=u}else{if(q>j){p.scrollTop=q-a}}p.scrollTop=p.scrollTop;if(i!==false){if(h.offsetWidth>p.clientWidth||k<s){p.scrollLeft=k}else{if(d>n){p.scrollLeft=d-p.clientWidth}}p.scrollLeft=p.scrollLeft}return this},scrollChildIntoView:function(b,a){Ext.fly(b,"_scrollChildIntoView").scrollIntoView(this,a)},scroll:function(m,b,d){if(!this.isScrollable()){return false}var e=this.dom,g=e.scrollLeft,p=e.scrollTop,n=e.scrollWidth,k=e.scrollHeight,i=e.clientWidth,a=e.clientHeight,c=false,o,j={l:Math.min(g+b,n-i),r:o=Math.max(g-b,0),t:Math.max(p-b,0),b:Math.min(p+b,k-a)};j.d=j.b;j.u=j.t;m=m.substr(0,1);if((o=j[m])>-1){c=true;this.scrollTo(m=="l"||m=="r"?"left":"top",o,this.preanim(arguments,2))}return c}});Ext.Element.addMethods(function(){var d="visibility",b="display",a="hidden",h="none",c="x-masked",g="x-masked-relative",e=Ext.Element.data;return{isVisible:function(i){var j=!this.isStyle(d,a)&&!this.isStyle(b,h),k=this.dom.parentNode;if(i!==true||!j){return j}while(k&&!(/^body/i.test(k.tagName))){if(!Ext.fly(k,"_isVisible").isVisible()){return false}k=k.parentNode}return true},isDisplayed:function(){return !this.isStyle(b,h)},enableDisplayMode:function(i){this.setVisibilityMode(Ext.Element.DISPLAY);if(!Ext.isEmpty(i)){e(this.dom,"originalDisplay",i)}return this},mask:function(j,n){var p=this,l=p.dom,o=Ext.DomHelper,m="ext-el-mask-msg",i,q;if(!/^body/i.test(l.tagName)&&p.getStyle("position")=="static"){p.addClass(g)}if(i=e(l,"maskMsg")){i.remove()}if(i=e(l,"mask")){i.remove()}q=o.append(l,{cls:"ext-el-mask"},true);e(l,"mask",q);p.addClass(c);q.setDisplayed(true);if(typeof j=="string"){var k=o.append(l,{cls:m,cn:{tag:"div"}},true);e(l,"maskMsg",k);k.dom.className=n?m+" "+n:m;k.dom.firstChild.innerHTML=j;k.setDisplayed(true);k.center(p)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&p.getStyle("height")=="auto"){q.setSize(undefined,p.getHeight())}return q},unmask:function(){var k=this,l=k.dom,i=e(l,"mask"),j=e(l,"maskMsg");if(i){if(j){j.remove();e(l,"maskMsg",undefined)}i.remove();e(l,"mask",undefined);k.removeClass([c,g])}},isMasked:function(){var i=e(this.dom,"mask");return i&&i.isVisible()},createShim:function(){var i=document.createElement("iframe"),j;i.frameBorder="0";i.className="ext-shim";i.src=Ext.SSL_SECURE_URL;j=Ext.get(this.dom.parentNode.insertBefore(i,this.dom));j.autoBoxAdjust=false;return j}}}());Ext.Element.addMethods({addKeyListener:function(b,d,c){var a;if(typeof b!="object"||Ext.isArray(b)){a={key:b,fn:d,scope:c}}else{a={key:b.key,shift:b.shift,ctrl:b.ctrl,alt:b.alt,fn:d,scope:c}}return new Ext.KeyMap(this,a)},addKeyMap:function(a){return new Ext.KeyMap(this,a)}});Ext.CompositeElementLite.importElementMethods();Ext.apply(Ext.CompositeElementLite.prototype,{addElements:function(c,a){if(!c){return this}if(typeof c=="string"){c=Ext.Element.selectorFunction(c,a)}var b=this.elements;Ext.each(c,function(d){b.push(Ext.get(d))});return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(a){return this.indexOf(a)!=-1},removeElement:function(d,e){var c=this,a=this.elements,b;Ext.each(d,function(g){if((b=(a[g]||a[g=c.indexOf(g)]))){if(e){if(b.dom){b.remove()}else{Ext.removeNode(b)}}a.splice(g,1)}});return this}});Ext.CompositeElement=Ext.extend(Ext.CompositeElementLite,{constructor:function(b,a){this.elements=[];this.add(b,a)},getElement:function(a){return a},transformElement:function(a){return Ext.get(a)}});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"}}return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)};Ext.select=Ext.Element.select;Ext.UpdateManager=Ext.Updater=Ext.extend(Ext.util.Observable,function(){var b="beforeupdate",d="update",c="failure";function a(h){var i=this;i.transaction=null;if(h.argument.form&&h.argument.reset){try{h.argument.form.reset()}catch(j){}}if(i.loadScripts){i.renderer.render(i.el,h,i,g.createDelegate(i,[h]))}else{i.renderer.render(i.el,h,i);g.call(i,h)}}function g(h,i,j){this.fireEvent(i||d,this.el,h);if(Ext.isFunction(h.argument.callback)){h.argument.callback.call(h.argument.scope,this.el,Ext.isEmpty(j)?true:false,h,h.argument.options)}}function e(h){g.call(this,h,c,!!(this.transaction=null))}return{constructor:function(i,h){var j=this;i=Ext.get(i);if(!h&&i.updateManager){return i.updateManager}j.el=i;j.defaultUrl=null;j.addEvents(b,d,c);Ext.apply(j,Ext.Updater.defaults);j.transaction=null;j.refreshDelegate=j.refresh.createDelegate(j);j.updateDelegate=j.update.createDelegate(j);j.formUpdateDelegate=(j.formUpdate||function(){}).createDelegate(j);j.renderer=j.renderer||j.getDefaultRenderer();Ext.Updater.superclass.constructor.call(j)},setRenderer:function(h){this.renderer=h},getRenderer:function(){return this.renderer},getDefaultRenderer:function(){return new Ext.Updater.BasicRenderer()},setDefaultUrl:function(h){this.defaultUrl=h},getEl:function(){return this.el},update:function(i,n,p,l){var k=this,h,j;if(k.fireEvent(b,k.el,i,n)!==false){if(Ext.isObject(i)){h=i;i=h.url;n=n||h.params;p=p||h.callback;l=l||h.discardUrl;j=h.scope;if(!Ext.isEmpty(h.nocache)){k.disableCaching=h.nocache}if(!Ext.isEmpty(h.text)){k.indicatorText='<div class="loading-indicator">'+h.text+"</div>"}if(!Ext.isEmpty(h.scripts)){k.loadScripts=h.scripts}if(!Ext.isEmpty(h.timeout)){k.timeout=h.timeout}}k.showLoading();if(!l){k.defaultUrl=i}if(Ext.isFunction(i)){i=i.call(k)}var m=Ext.apply({},{url:i,params:(Ext.isFunction(n)&&j)?n.createDelegate(j):n,success:a,failure:e,scope:k,callback:undefined,timeout:(k.timeout*1000),disableCaching:k.disableCaching,argument:{options:h,url:i,form:null,callback:p,scope:j||window,params:n}},h);k.transaction=Ext.Ajax.request(m)}},formUpdate:function(k,h,j,l){var i=this;if(i.fireEvent(b,i.el,k,h)!==false){if(Ext.isFunction(h)){h=h.call(i)}k=Ext.getDom(k);i.transaction=Ext.Ajax.request({form:k,url:h,success:a,failure:e,scope:i,timeout:(i.timeout*1000),argument:{url:h,form:k,callback:l,reset:j}});i.showLoading.defer(1,i)}},startAutoRefresh:function(i,j,l,m,h){var k=this;if(h){k.update(j||k.defaultUrl,l,m,true)}if(k.autoRefreshProcId){clearInterval(k.autoRefreshProcId)}k.autoRefreshProcId=setInterval(k.update.createDelegate(k,[j||k.defaultUrl,l,m,true]),i*1000)},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId}},isAutoRefreshing:function(){return !!this.autoRefreshProcId},showLoading:function(){if(this.showLoadIndicator){this.el.dom.innerHTML=this.indicatorText}},abort:function(){if(this.transaction){Ext.Ajax.abort(this.transaction)}},isUpdating:function(){return this.transaction?Ext.Ajax.isLoading(this.transaction):false},refresh:function(h){if(this.defaultUrl){this.update(this.defaultUrl,null,h,true)}}}}());Ext.Updater.defaults={timeout:30,disableCaching:false,showLoadIndicator:true,indicatorText:'<div class="loading-indicator">Loading...</div>',loadScripts:false,sslBlankUrl:Ext.SSL_SECURE_URL};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.BasicRenderer=function(){};Ext.Updater.BasicRenderer.prototype={render:function(c,a,b,d){c.update(a.responseText,b.loadScripts,d)}};(function(){Date.useStrict=false;function b(d){var c=Array.prototype.slice.call(arguments,1);return d.replace(/\{(\d+)\}/g,function(e,g){return c[g]})}Date.formatCodeToRegex=function(d,c){var e=Date.parseCodes[d];if(e){e=typeof e=="function"?e():e;Date.parseCodes[d]=e}return e?Ext.applyIf({c:e.c?b(e.c,c||"{0}"):e.c},e):{g:0,c:null,s:Ext.escapeRe(d)}};var a=Date.formatCodeToRegex;Ext.apply(Date,{parseFunctions:{"M$":function(d,c){var e=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/");var g=(d||"").match(e);return g?new Date(((g[1]||"")+g[2])*1):null}},parseRegexes:[],formatFunctions:{"M$":function(){return"\\/Date("+this.getTime()+")\\/"}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},getShortMonthName:function(c){return Date.monthNames[c].substring(0,3)},getShortDayName:function(c){return Date.dayNames[c].substring(0,3)},getMonthNumber:function(c){return Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]},formatContainsHourInfo:(function(){var d=/(\\.)/g,c=/([gGhHisucUOPZ]|M\$)/;return function(e){return c.test(e.replace(d,""))}})(),formatCodes:{d:"String.leftPad(this.getDate(), 2, '0')",D:"Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"this.getSuffix()",w:"this.getDay()",z:"this.getDayOfYear()",W:"String.leftPad(this.getWeekOfYear(), 2, '0')",F:"Date.monthNames[this.getMonth()]",m:"String.leftPad(this.getMonth() + 1, 2, '0')",M:"Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"this.getDaysInMonth()",L:"(this.isLeapYear() ? 1 : 0)",o:"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"String.leftPad(this.getHours(), 2, '0')",i:"String.leftPad(this.getMinutes(), 2, '0')",s:"String.leftPad(this.getSeconds(), 2, '0')",u:"String.leftPad(this.getMilliseconds(), 3, '0')",O:"this.getGMTOffset()",P:"this.getGMTOffset(true)",T:"this.getTimezone()",Z:"(this.getTimezoneOffset() * -60)",c:function(){for(var k="Y-m-dTH:i:sP",h=[],g=0,d=k.length;g<d;++g){var j=k.charAt(g);h.push(j=="T"?"'T'":Date.getFormatCode(j))}return h.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(o,c,n,k,g,j,e){k=k||0;g=g||0;j=j||0;e=e||0;var l=new Date(o<100?100:o,c-1,n,k,g,j,e).add(Date.YEAR,o<100?o-100:0);return o==l.getFullYear()&&c==l.getMonth()+1&&n==l.getDate()&&k==l.getHours()&&g==l.getMinutes()&&j==l.getSeconds()&&e==l.getMilliseconds()},parseDate:function(d,g,c){var e=Date.parseFunctions;if(e[g]==null){Date.createParser(g)}return e[g](d,Ext.isDefined(c)?c:Date.useStrict)},getFormatCode:function(d){var c=Date.formatCodes[d];if(c){c=typeof c=="function"?c():c;Date.formatCodes[d]=c}return c||("'"+String.escape(d)+"'")},createFormat:function(h){var g=[],c=false,e="";for(var d=0;d<h.length;++d){e=h.charAt(d);if(!c&&e=="\\"){c=true}else{if(c){c=false;g.push("'"+String.escape(e)+"'")}else{g.push(Date.getFormatCode(e))}}}Date.formatFunctions[h]=new Function("return "+g.join("+"))},createParser:function(){var c=["var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,","def = Date.defaults,","results = String(input).match(Date.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = (new Date()).clearTime();","y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));","m = Ext.num(m, Ext.num(def.m - 1, dt.getMonth()));","d = Ext.num(d, Ext.num(def.d, dt.getDate()));","h  = Ext.num(h, Ext.num(def.h, dt.getHours()));","i  = Ext.num(i, Ext.num(def.i, dt.getMinutes()));","s  = Ext.num(s, Ext.num(def.s, dt.getSeconds()));","ms = Ext.num(ms, Ext.num(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);","}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","v = new Date(y < 100 ? 100 : y, m, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","}","}","}","if(v){","if(zz != null){","v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");return function(m){var e=Date.parseRegexes.length,o=1,g=[],l=[],k=false,d="",j=0,h,n;for(;j<m.length;++j){d=m.charAt(j);if(!k&&d=="\\"){k=true}else{if(k){k=false;l.push(String.escape(d))}else{h=a(d,o);o+=h.g;l.push(h.s);if(h.g&&h.c){if(h.calcLast){n=h.c}else{g.push(h.c)}}}}}if(n){g.push(n)}Date.parseRegexes[e]=new RegExp("^"+l.join("")+"$","i");Date.parseFunctions[m]=new Function("input","strict",b(c,e,g.join("")))}}(),parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},D:function(){for(var c=[],d=0;d<7;c.push(Date.getShortDayName(d)),++d){}return{g:0,c:null,s:"(?:"+c.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:0,c:null,s:"(?:\\d{2})"},F:function(){return{g:1,c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n",s:"("+Date.monthNames.join("|")+")"}},M:function(){for(var c=[],d=0;d<12;c.push(Date.getShortMonthName(d)),++d){}return Ext.applyIf({s:"("+c.join("|")+")"},a("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{2})"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(\\d{1,2})"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:function(){return a("Y")},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:function(){return a("A")},A:{calcLast:true,g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)"},g:function(){return a("G")},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{1,2})"},h:function(){return a("H")},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,4}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var e=[],c=[a("Y",1),a("m",2),a("d",3),a("h",4),a("i",5),a("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",a("P",8).c,"}else{",a("O",8).c,"}","}"].join("\n")}];for(var g=0,d=c.length;g<d;++g){e.push(c[g].c)}return{g:1,c:e.join(""),s:[c[0].s,"(?:","-",c[1].s,"(?:","-",c[2].s,"(?:","(?:T| )?",c[3].s,":",c[4].s,"(?::",c[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}}})}());Ext.apply(Date.prototype,{dateFormat:function(a){if(Date.formatFunctions[a]==null){Date.createFormat(a)}return Date.formatFunctions[a].call(this)},getTimezone:function(){return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(a){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+(a?":":"")+String.leftPad(Math.abs(this.getTimezoneOffset()%60),2,"0")},getDayOfYear:function(){var b=0,e=this.clone(),a=this.getMonth(),c;for(c=0,e.setDate(1),e.setMonth(0);c<a;e.setMonth(++c)){b+=e.getDaysInMonth()}return b+this.getDate()-1},getWeekOfYear:function(){var a=86400000,b=7*a;return function(){var d=Date.UTC(this.getFullYear(),this.getMonth(),this.getDate()+3)/a,c=Math.floor(d/7),e=new Date(c*b).getUTCFullYear();return c-Math.floor(Date.UTC(e,0,7)/b)+1}}(),isLeapYear:function(){var a=this.getFullYear();return !!((a&3)==0&&(a%100||(a%400==0&&a)))},getFirstDayOfMonth:function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a},getLastDayOfMonth:function(){return this.getLastDateOfMonth().getDay()},getFirstDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),1)},getLastDateOfMonth:function(){return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth())},getDaysInMonth:function(){var a=[31,28,31,30,31,30,31,31,30,31,30,31];return function(){var b=this.getMonth();return b==1&&this.isLeapYear()?29:a[b]}}(),getSuffix:function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(){return new Date(this.getTime())},isDST:function(){return new Date(this.getFullYear(),0,1).getTimezoneOffset()!=this.getTimezoneOffset()},clearTime:function(g){if(g){return this.clone().clearTime()}var b=this.getDate();this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);if(this.getDate()!=b){for(var a=1,e=this.add(Date.HOUR,a);e.getDate()!=b;a++,e=this.add(Date.HOUR,a)){}this.setDate(b);this.setHours(e.getHours())}return this},add:function(b,c){var e=this.clone();if(!b||c===0){return e}switch(b.toLowerCase()){case Date.MILLI:e.setMilliseconds(this.getMilliseconds()+c);break;case Date.SECOND:e.setSeconds(this.getSeconds()+c);break;case Date.MINUTE:e.setMinutes(this.getMinutes()+c);break;case Date.HOUR:e.setHours(this.getHours()+c);break;case Date.DAY:e.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())}e.setDate(a);e.setMonth(this.getMonth()+c);break;case Date.YEAR:e.setFullYear(this.getFullYear()+c);break}return e},between:function(c,a){var b=this.getTime();return c.getTime()<=b&&b<=a.getTime()}});Date.prototype.format=Date.prototype.dateFormat;if(Ext.isSafari&&(navigator.userAgent.match(/WebKit\/(\d+)/)[1]||NaN)<420){Ext.apply(Date.prototype,{_xMonth:Date.prototype.setMonth,_xDate:Date.prototype.setDate,setMonth:function(a){if(a<=-1){var d=Math.ceil(-a),c=Math.ceil(d/12),b=(d%12)?12-d%12:0;this.setFullYear(this.getFullYear()-c);return this._xMonth(b)}else{return this._xMonth(a)}},setDate:function(a){return this.setTime(this.getTime()-(this.getDate()-a)*86400000)}})}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){var a=this.map[b];if(typeof a!="undefined"){return this.replace(b,c)}this.map[b]=c}this.length++;this.items.push(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.map[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(this.containsKey(b)){this.suspendEvents();this.removeKey(b);this.resumeEvents()}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(b){var a=this.map[b],c=a!==undefined?a:(typeof b=="number")?this.items[b]:undefined;return typeof c!="function"||this.allowFunctions?c: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(k,a,j){var d,e,b=String(a).toUpperCase()=="DESC"?-1:1,h=[],l=this.keys,g=this.items;j=j||function(i,c){return i-c};for(d=0,e=g.length;d<e;d++){h[h.length]={key:l[d],value:g[d],index:d}}h.sort(function(i,c){var m=j(i[k],c[k])*b;if(m===0){m=(i.index<c.index?-1:1)}return m});for(d=0,e=h.length;d<e;d++){g[d]=h[d].value;l[d]=h[d].key}this.fireEvent("sort",this)},sort:function(a,b){this._sort("value",a,b)},reorder:function(d){this.suspendEvents();var b=this.items,c=0,g=b.length,a=[],e=[],h;for(h in d){a[d[h]]=b[h]}for(c=0;c<g;c++){if(d[c]==undefined){e.push(b[c])}}for(c=0;c<g;c++){if(a[c]==undefined){a[c]=e.shift()}}this.clear();this.addAll(a);this.resumeEvents();this.fireEvent("sort",this)},keySort:function(a,b){this._sort("key",a,b||function(d,c){var g=String(d).toUpperCase(),e=String(c).toUpperCase();return g>e?1:(g<e?-1:0)})},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 c,d=[];if(e<=a){for(c=e;c<=a;c++){d[d.length]=b[c]}}else{for(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(g,e){var h=new Ext.util.MixedCollection();h.getKey=this.getKey;var b=this.keys,d=this.items;for(var c=0,a=d.length;c<a;c++){if(g.call(e||this,d[c],b[c])){h.add(b[c],d[c])}}return h},findIndex:function(c,b,e,d,a){if(Ext.isEmpty(b,false)){return -1}b=this.createValueMatcher(b,d,a);return this.findIndexBy(function(g){return g&&b.test(g[c])},null,e)},findIndexBy:function(g,e,h){var b=this.keys,d=this.items;for(var c=(h||0),a=d.length;c<a;c++){if(g.call(e||this,d[c],b[c])){return c}}return -1},createValueMatcher:function(c,e,a,b){if(!c.exec){var d=Ext.escapeRe;c=String(c);if(e===true){c=d(c)}else{c="^"+d(c);if(b===true){c+="$"}}c=new RegExp(c,a?"":"i")}return c},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.AbstractManager=Ext.extend(Object,{typeName:"type",constructor:function(a){Ext.apply(this,a||{});this.all=new Ext.util.MixedCollection();this.types={}},get:function(a){return this.all.get(a)},register:function(a){this.all.add(a)},unregister:function(a){this.all.remove(a)},registerType:function(b,a){this.types[b]=a;a[this.typeName]=b},isRegistered:function(a){return this.types[a]!==undefined},create:function(a,d){var b=a[this.typeName]||a.type||d,c=this.types[b];if(c==undefined){throw new Error(String.format("The '{0}' type has not been registered with this manager",b))}return new c(a)},onAvailable:function(d,c,b){var a=this.all;a.on("add",function(e,g){if(g.id==d){c.call(b||g,g);a.un("add",c,b)}})}});Ext.util.Format=function(){var trimRe=/^\s+|\s+$/g,stripTagsRE=/<\/?[^>]+>/gi,stripScriptsRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,nl2brRe=/\r?\n/g;return{ellipsis:function(value,len,word){if(value&&value.length>len){if(word){var vs=value.substr(0,len-2),index=Math.max(vs.lastIndexOf(" "),vs.lastIndexOf("."),vs.lastIndexOf("!"),vs.lastIndexOf("?"));if(index==-1||index<(len-15)){return value.substr(0,len-3)+"..."}else{return vs.substr(0,index)+"..."}}else{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,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;")},htmlDecode:function(value){return !value?value:String(value).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&amp;/g,"&")},trim:function(value){return String(value).replace(trimRe,"")},substr:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},uppercase:function(value){return String(value).toUpperCase()},capitalize:function(value){return !value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase()},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);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("."),whole=ps[0],sub=ps[1]?"."+ps[1]:".00",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)}},stripTags:function(v){return !v?v:String(v).replace(stripTagsRE,"")},stripScripts:function(v){return !v?v:String(v).replace(stripScriptsRe,"")},fileSize:function(size){if(size<1024){return size+" bytes"}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)}}(),round:function(value,precision){var result=Number(value);if(typeof precision=="number"){precision=Math.pow(10,precision);result=Math.round(value*precision)/precision}return result},number:function(v,format){if(!format){return v}v=Ext.num(v,NaN);if(isNaN(v)){return""}var comma=",",dec=".",i18n=false,neg=v<0;v=Math.abs(v);if(format.substr(format.length-2)=="/i"){format=format.substr(0,format.length-2);i18n=true;comma=".";dec=","}var hasComma=format.indexOf(comma)!=-1,psplit=(i18n?format.replace(/[^\d\,]/g,""):format.replace(/[^\d\.]/g,"")).split(dec);if(1<psplit.length){v=v.toFixed(psplit[1].length)}else{if(2<psplit.length){throw ("NumberFormatException: invalid format, formats should have no more than 1 period: "+format)}else{v=v.toFixed(0)}}var fnum=v.toString();psplit=fnum.split(".");if(hasComma){var cnum=psplit[0],parr=[],j=cnum.length,m=Math.floor(j/3),n=cnum.length%3||3,i;for(i=0;i<j;i+=n){if(i!=0){n=3}parr[parr.length]=cnum.substr(i,n);m-=1}fnum=parr.join(comma);if(psplit[1]){fnum+=dec+psplit[1]}}else{if(psplit[1]){fnum=psplit[0]+dec+psplit[1]}}return(neg?"-":"")+format.replace(/[\d,?\.?]+/,fnum)},numberRenderer:function(format){return function(v){return Ext.util.Format.number(v,format)}},plural:function(v,s,p){return v+" "+(v==1?s:(p?p:s+"s"))},nl2br:function(v){return Ext.isEmpty(v)?"":v.replace(nl2brRe,"<br/>")}}}();Ext.XTemplate=function(){Ext.XTemplate.superclass.constructor.apply(this,arguments);var y=this,j=y.html,q=/<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,d=/^<tpl\b[^>]*?for="(.*?)"/,v=/^<tpl\b[^>]*?if="(.*?)"/,x=/^<tpl\b[^>]*?exec="(.*?)"/,r,p=0,k=[],o="values",w="parent",l="xindex",n="xcount",e="return ",c="with(values){ ";j=["<tpl>",j,"</tpl>"].join("");while((r=j.match(q))){var b=r[0].match(d),a=r[0].match(v),A=r[0].match(x),g=null,h=null,t=null,z=b&&b[1]?b[1]:"";if(a){g=a&&a[1]?a[1]:null;if(g){h=new Function(o,w,l,n,c+e+(Ext.util.Format.htmlDecode(g))+"; }")}}if(A){g=A&&A[1]?A[1]:null;if(g){t=new Function(o,w,l,n,c+(Ext.util.Format.htmlDecode(g))+"; }")}}if(z){switch(z){case".":z=new Function(o,w,c+e+o+"; }");break;case"..":z=new Function(o,w,c+e+w+"; }");break;default:z=new Function(o,w,c+e+z+"; }")}}k.push({id:p,target:z,exec:t,test:h,body:r[1]||""});j=j.replace(r[0],"{xtpl"+p+"}");++p}for(var u=k.length-1;u>=0;--u){y.compileTpl(k[u])}y.master=k[k.length-1];y.tpls=k};Ext.extend(Ext.XTemplate,Ext.Template,{re:/\{([\w\-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(a,k,j,d,c){var h=this,g,m=h.tpls[a],l,b=[];if((m.test&&!m.test.call(h,k,j,d,c))||(m.exec&&m.exec.call(h,k,j,d,c))){return""}l=m.target?m.target.call(h,k,j):k;g=l.length;j=m.target?k:j;if(m.target&&Ext.isArray(l)){for(var e=0,g=l.length;e<g;e++){b[b.length]=m.compiled.call(h,l[e],j,e+1,g)}return b.join("")}return m.compiled.call(h,l,j,d,c)},compileTpl:function(tpl){var fm=Ext.util.Format,useF=this.disableFormats!==true,sep=Ext.isGecko?"+":",",body;function fn(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+"'"}function codeFn(m,code){return"'"+sep+"("+code.replace(/\\'/g,"'")+")"+sep+"'"}if(Ext.isGecko){body="tpl.compiled = function(values, parent, xindex, xcount){ return '"+tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn)+"';};"}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},applyTemplate:function(a){return this.master.compiled.call(this,a,{},1,1)},compile:function(){return this}});Ext.XTemplate.prototype.apply=Ext.XTemplate.prototype.applyTemplate;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,g){return g.charAt(1).toUpperCase()};return{createStyleSheet:function(i,l){var h;var g=c.getElementsByTagName("head")[0];var k=c.createElement("style");k.setAttribute("type","text/css");if(l){k.setAttribute("id",l)}if(Ext.isIE){g.appendChild(k);h=k.styleSheet;h.cssText=i}else{try{k.appendChild(c.createTextNode(i))}catch(j){k.cssText=i}g.appendChild(k);h=k.styleSheet?k.styleSheet:(k.sheet||c.styleSheets[c.styleSheets.length-1])}this.cacheStyleSheet(h);return h},removeStyleSheet:function(g){var e=c.getElementById(g);if(e){e.parentNode.removeChild(e)}},swapStyleSheet:function(h,e){this.removeStyleSheet(h);var g=c.createElement("link");g.setAttribute("rel","stylesheet");g.setAttribute("type","text/css");g.setAttribute("id",h);g.setAttribute("href",e);c.getElementsByTagName("head")[0].appendChild(g)},refreshCache:function(){return this.getRules(true)},cacheStyleSheet:function(h){if(!d){d={}}try{var k=h.cssRules||h.rules;for(var g=k.length-1;g>=0;--g){d[k[g].selectorText.toLowerCase()]=k[g]}}catch(i){}},getRules:function(h){if(d===null||h){d={};var k=c.styleSheets;for(var j=0,g=k.length;j<g;j++){try{this.cacheStyleSheet(k[j])}catch(l){}}}return d},getRule:function(e,h){var g=this.getRules(h);if(!Ext.isArray(e)){return g[e.toLowerCase()]}for(var j=0;j<e.length;j++){if(g[e[j]]){return g[e[j].toLowerCase()]}}return null},updateRule:function(e,j,h){if(!Ext.isArray(e)){var k=this.getRule(e);if(k){k.style[j.replace(b,a)]=h;return true}}else{for(var g=0;g<e.length;g++){if(this.updateRule(e[g],j,h)){return true}}}return false}}}();Ext.util.ClickRepeater=Ext.extend(Ext.util.Observable,{constructor:function(b,a){this.el=Ext.get(b);this.el.unselectable();Ext.apply(this,a);this.addEvents("mousedown","click","mouseup");if(!this.disabled){this.disabled=true;this.enable()}if(this.handler){this.on("click",this.handler,this.scope||this)}Ext.util.ClickRepeater.superclass.constructor.call(this)},interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,enable:function(){if(this.disabled){this.el.on("mousedown",this.handleMouseDown,this);if(Ext.isIE){this.el.on("dblclick",this.handleDblClick,this)}if(this.preventDefault||this.stopDefault){this.el.on("click",this.eventOptions,this)}}this.disabled=false},disable:function(a){if(a||!this.disabled){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass)}Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeAllListeners()}this.disabled=true},setDisabled:function(a){this[a?"disable":"enable"]()},eventOptions:function(a){if(this.preventDefault){a.preventDefault()}if(this.stopDefault){a.stopEvent()}},destroy:function(){this.disable(true);Ext.destroy(this.el);this.purgeListeners()},handleDblClick:function(a){clearTimeout(this.timer);this.el.blur();this.fireEvent("mousedown",this,a);this.fireEvent("click",this,a)},handleMouseDown:function(a){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,a);this.fireEvent("click",this,a);if(this.accelerate){this.delay=400}this.timer=this.click.defer(this.delay||this.interval,this,[a])},click:function(a){this.fireEvent("click",this,a);this.timer=this.click.defer(this.accelerate?this.easeOutExpo(this.mousedownTime.getElapsed(),400,-390,12000):this.interval,this,[a])},easeOutExpo:function(e,a,h,g){return(e==g)?a+h:h*(-Math.pow(2,-10*e/g)+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,this);if(this.pressClass){this.el.addClass(this.pressClass)}this.click()},handleMouseUp:function(a){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn,this);this.el.un("mouseout",this.handleMouseOut,this);Ext.getDoc().un("mouseup",this.handleMouseUp,this);this.el.removeClass(this.pressClass);this.fireEvent("mouseup",this,a)}});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,relay:function(c){var a=c.getKey(),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,a)},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,space: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",32:"space"},stopKeyUp:function(b){var a=b.getKey();if(a>=37&&a<=40){b.stopEvent()}},destroy:function(){this.disable()},enable:function(){if(this.disabled){if(Ext.isSafari2){this.el.on("keyup",this.stopKeyUp,this)}this.el.on(this.isKeydown()?"keydown":"keypress",this.relay,this);this.disabled=false}},disable:function(){if(!this.disabled){if(Ext.isSafari2){this.el.un("keyup",this.stopKeyUp,this)}this.el.un(this.isKeydown()?"keydown":"keypress",this.relay,this);this.disabled=true}},setDisabled:function(a){this[a?"disable":"enable"]()},isKeydown:function(){return this.forceKeyDown||Ext.EventManager.useKeydown}};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(b){if(Ext.isArray(b)){Ext.each(b,function(j){this.addBinding(j)},this);return}var k=b.key,g=b.fn||b.handler,l=b.scope;if(b.stopEvent){this.stopEvent=b.stopEvent}if(typeof k=="string"){var h=[];var e=k.toUpperCase();for(var c=0,d=e.length;c<d;c++){h.push(e.charCodeAt(c))}k=h}var a=Ext.isArray(k);var i=function(o){if(this.checkModifiers(b,o)){var m=o.getKey();if(a){for(var n=0,j=k.length;n<j;n++){if(k[n]==m){if(this.stopEvent){o.stopEvent()}g.call(l||window,m,o);return}}}else{if(m==k){if(this.stopEvent){o.stopEvent()}g.call(l||window,m,o)}}}};this.bindings.push(i)},checkModifiers:function(b,h){var j,d,g=["shift","ctrl","alt"];for(var c=0,a=g.length;c<a;++c){d=g[c];j=b[d];if(!(j===undefined||(j===h[d+"Key"]))){return false}}return true},on:function(b,d,c){var h,a,e,g;if(typeof b=="object"&&!Ext.isArray(b)){h=b.key;a=b.shift;e=b.ctrl;g=b.alt}else{h=b}this.addBinding({key:h,shift:a,ctrl:e,alt:g,fn:d,scope:c})},handleKeyDown:function(g){if(this.enabled){var c=this.bindings;for(var d=0,a=c.length;d<a;d++){c[d].call(this,g)}}},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}},setDisabled:function(a){this[a?"disable":"enable"]()}};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(g){c.update(g);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","text-transform","letter-spacing"))},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.addMethods({getTextWidth:function(c,b,a){return(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width).constrain(b||0,a||1000000)}});Ext.util.Cookies={set:function(c,e){var a=arguments;var i=arguments.length;var b=(i>2)?a[2]:null;var h=(i>3)?a[3]:"/";var d=(i>4)?a[4]:null;var g=(i>5)?a[5]:false;document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((h===null)?"":("; path="+h))+((d===null)?"":("; domain="+d))+((g===true)?"; secure":"")},get:function(d){var b=d+"=";var g=b.length;var a=document.cookie.length;var e=0;var c=0;while(e<a){c=e+g;if(document.cookie.substring(e,c)==b){return Ext.util.Cookies.getCookieVal(c)}e=document.cookie.indexOf(" ",e)+1;if(e===0){break}}return null},clear:function(a){if(Ext.util.Cookies.get(a)){document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT"}},getCookieVal:function(b){var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}return unescape(document.cookie.substring(b,a))}};Ext.handleError=function(a){throw a};Ext.Error=function(a){this.message=(this.lang[a])?this.lang[a]:a};Ext.Error.prototype=new Error();Ext.apply(Ext.Error.prototype,{lang:{},name:"Ext.Error",getName:function(){return this.name},getMessage:function(){return this.message},toJson:function(){return Ext.encode(this)}});Ext.ComponentMgr=function(){var c=new Ext.util.MixedCollection();var b={};var a={};return{register:function(d){c.add(d)},unregister:function(d){c.remove(d)},get:function(d){return c.get(d)},onAvailable:function(g,e,d){c.on("add",function(h,i){if(i.id==g){e.call(d||i,i);c.un("add",e,d)}})},all:c,types:b,ptypes:a,isRegistered:function(d){return b[d]!==undefined},isPluginRegistered:function(d){return a[d]!==undefined},registerType:function(e,d){b[e]=d;d.xtype=e},create:function(d,e){return d.render?d:new b[d.xtype||e](d)},registerPlugin:function(e,d){a[e]=d;d.ptype=e},createPlugin:function(e,g){var d=a[e.ptype||g];if(d.init){return d}else{return new d(e)}}}}();Ext.reg=Ext.ComponentMgr.registerType;Ext.preg=Ext.ComponentMgr.registerPlugin;Ext.create=Ext.ComponentMgr.create;Ext.Component=function(b){b=b||{};if(b.initialConfig){if(b.isAction){this.baseAction=b}b=b.initialConfig}else{if(b.tagName||b.dom||Ext.isString(b)){b={applyTo:b,id:b.id||b}}}this.initialConfig=b;Ext.apply(this,b);this.addEvents("added","disable","enable","beforeshow","show","beforehide","hide","removed","beforerender","render","afterrender","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]=this.initPlugin(this.plugins[c])}}else{this.plugins=this.initPlugin(this.plugins)}}if(this.stateful!==false){this.initState()}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,{disabled:false,hidden:false,autoEl:"div",disabledClass:"x-item-disabled",allowDomMove:true,autoShow:false,hideMode:"display",hideParent:false,rendered:false,tplWriteMode:"overwrite",bubbleEvents:[],ctype:"Ext.Component",actionMode:"el",getActionEl:function(){return this[this.actionMode]},initPlugin:function(a){if(a.ptype&&!Ext.isFunction(a.init)){a=Ext.ComponentMgr.createPlugin(a)}else{if(Ext.isString(a)){a=Ext.ComponentMgr.createPlugin({ptype:a})}}a.init(this);return a},initComponent:function(){if(this.listeners){this.on(this.listeners);delete this.listeners}this.enableBubble(this.bubbleEvents)},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(Ext.isNumber(a)){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}if(this.overCls){this.el.addClassOnOver(this.overCls)}this.fireEvent("render",this);var c=this.getContentTarget();if(this.html){c.update(Ext.DomHelper.markup(this.html));delete this.html}if(this.contentEl){var d=Ext.getDom(this.contentEl);Ext.fly(d).removeClass(["x-hidden","x-hide-display"]);c.appendChild(d)}if(this.tpl){if(!this.tpl.compile){this.tpl=new Ext.XTemplate(this.tpl)}if(this.data){this.tpl[this.tplWriteMode](c,this.data);delete this.data}}this.afterRender(this.container);if(this.hidden){this.doHide()}if(this.disabled){this.disable(true)}if(this.stateful!==false){this.initStateEvents()}this.fireEvent("afterrender",this)}return this},update:function(b,d,a){var c=this.getContentTarget();if(this.tpl&&typeof b!=="string"){this.tpl[this.tplWriteMode](c,b||{})}else{var e=Ext.isObject(b)?Ext.DomHelper.markup(b):b;c.update(e,d,a)}},onAdded:function(a,b){this.ownerCt=a;this.initRef();this.fireEvent("added",this,a,b)},onRemoved:function(){this.removeRef();this.fireEvent("removed",this,this.ownerCt);delete this.ownerCt},initRef:function(){if(this.ref&&!this.refOwner){var d=this.ref.split("/"),c=d.length,b=0,a=this;while(a&&b<c){a=a.ownerCt;++b}if(a){a[this.refName=d[--b]]=this;this.refOwner=a}}},removeRef:function(){if(this.refOwner&&this.refName){delete this.refOwner[this.refName];delete this.refOwner}},initState:function(){if(Ext.state.Manager){var b=this.getStateId();if(b){var a=Ext.state.Manager.get(b);if(a){if(this.fireEvent("beforestaterestore",this,a)!==false){this.applyState(Ext.apply({},a));this.fireEvent("staterestore",this,a)}}}}},getStateId:function(){return this.stateId||((/^(ext-comp-|ext-gen)/).test(String(this.id))?null:this.id)},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(a){if(a){Ext.apply(this,a)}},getState:function(){return null},saveState:function(){if(Ext.state.Manager&&this.stateful!==false){var b=this.getStateId();if(b){var a=this.getState();if(this.fireEvent("beforestatesave",this,a)!==false){Ext.state.Manager.set(b,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}return this},removeClass:function(a){if(this.el){this.el.removeClass(a)}else{if(this.cls){this.cls=this.cls.split(" ").remove(a).join(" ")}}return this},onRender:function(b,a){if(!this.el&&this.autoEl){if(Ext.isString(this.autoEl)){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);if(c){Ext.removeNode(c);c=null}}}},getAutoCreate:function(){var a=Ext.isObject(this.autoCreate)?this.autoCreate:Ext.apply({},this.defaultAutoCreate);if(this.id&&!a.id){a.id=this.id}return a},afterRender:Ext.emptyFn,destroy:function(){if(!this.isDestroyed){if(this.fireEvent("beforedestroy",this)!==false){this.destroying=true;this.beforeDestroy();if(this.ownerCt&&this.ownerCt.remove){this.ownerCt.remove(this,false)}if(this.rendered){this.el.remove();if(this.actionMode=="container"||this.removeMode=="container"){this.container.remove()}}if(this.focusTask&&this.focusTask.cancel){this.focusTask.cancel()}this.onDestroy();Ext.ComponentMgr.unregister(this);this.fireEvent("destroy",this);this.purgeListeners();this.destroying=false;this.isDestroyed=true}}},deleteMembers:function(){var b=arguments;for(var c=0,a=b.length;c<a;++c){delete this[b[c]]}},beforeDestroy:Ext.emptyFn,onDestroy:Ext.emptyFn,getEl:function(){return this.el},getContentTarget:function(){return this.el},getId:function(){return this.id||(this.id="ext-comp-"+(++Ext.Component.AUTO_ID))},getItemId:function(){return this.itemId||this.getId()},focus:function(b,a){if(a){this.focusTask=new Ext.util.DelayedTask(this.focus,this,[b,false]);this.focusTask.delay(Ext.isNumber(a)?a:10);return this}if(this.rendered&&!this.isDestroyed){this.el.focus();if(b===true){this.el.dom.select()}}return this},blur:function(){if(this.rendered){this.el.blur()}return this},disable:function(a){if(this.rendered){this.onDisable()}this.disabled=true;if(a!==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){return this[a?"disable":"enable"]()},show:function(){if(this.fireEvent("beforeshow",this)!==false){this.hidden=false;if(this.autoRender){this.render(Ext.isBoolean(this.autoRender)?Ext.getBody():this.autoRender)}if(this.rendered){this.onShow()}this.fireEvent("show",this)}return this},onShow:function(){this.getVisibilityEl().removeClass("x-hide-"+this.hideMode)},hide:function(){if(this.fireEvent("beforehide",this)!==false){this.doHide();this.fireEvent("hide",this)}return this},doHide:function(){this.hidden=true;if(this.rendered){this.onHide()}},onHide:function(){this.getVisibilityEl().addClass("x-hide-"+this.hideMode)},getVisibilityEl:function(){return this.hideParent?this.container:this.getActionEl()},setVisible:function(a){return this[a?"show":"hide"]()},isVisible:function(){return this.rendered&&this.getVisibilityEl().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){if(Ext.isFunction(b)){b=b.xtype}else{if(Ext.isObject(b)){b=b.constructor.xtype}}return !a?("/"+this.getXTypes()+"/").indexOf("/"+b+"/")!=-1:this.constructor.xtype==b},getXTypes:function(){var a=this.constructor;if(!a.xtypes){var d=[],b=this;while(b&&b.constructor.xtype){d.unshift(b.constructor.xtype);b=b.constructor.superclass}a.xtypeChain=d;a.xtypes=d.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(b,a){return this.findParentBy(function(d){return d.isXType(b,a)})},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.ownerCt}return this},getPositionEl:function(){return this.positionEl||this.el},purgeListeners:function(){Ext.Component.superclass.purgeListeners.call(this);if(this.mons){this.on("beforedestroy",this.clearMons,this,{single:true})}},clearMons:function(){Ext.each(this.mons,function(a){a.item.un(a.ename,a.fn,a.scope)},this);this.mons=[]},createMons:function(){if(!this.mons){this.mons=[];this.on("beforedestroy",this.clearMons,this,{single:true})}},mon:function(g,b,d,c,a){this.createMons();if(Ext.isObject(b)){var j=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;var i=b;for(var h in i){if(j.test(h)){continue}if(Ext.isFunction(i[h])){this.mons.push({item:g,ename:h,fn:i[h],scope:i.scope});g.on(h,i[h],i.scope,i)}else{this.mons.push({item:g,ename:h,fn:i[h],scope:i.scope});g.on(h,i[h])}}return}this.mons.push({item:g,ename:b,fn:d,scope:c});g.on(b,d,c,a)},mun:function(h,c,g,e){var j,d;this.createMons();for(var b=0,a=this.mons.length;b<a;++b){d=this.mons[b];if(h===d.item&&c==d.ename&&g===d.fn&&e===d.scope){this.mons.splice(b,1);h.un(c,g,e);j=true;break}}return j},nextSibling:function(){if(this.ownerCt){var a=this.ownerCt.items.indexOf(this);if(a!=-1&&a+1<this.ownerCt.items.getCount()){return this.ownerCt.items.itemAt(a+1)}}return null},previousSibling:function(){if(this.ownerCt){var a=this.ownerCt.items.indexOf(this);if(a>0){return this.ownerCt.items.itemAt(a-1)}}return null},getBubbleTarget:function(){return this.ownerCt}});Ext.reg("component",Ext.Component);Ext.Action=Ext.extend(Object,{constructor:function(a){this.initialConfig=a;this.itemId=a.itemId=(a.itemId||a.id||Ext.id());this.items=[]},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,h=d.parentEl,g=h?Ext.getDom(h):document.body;if(c){this.dom=Ext.getDom(c)}if(!this.dom){var i=d.dh||{tag:"div",cls:"x-layer"};this.dom=e.append(g,i)}if(d.cls){this.addClass(d.cls)}this.constrain=d.constrain!==false;this.setVisibilityMode(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.getShim()||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;if(Ext.isDefined(this.lastShadowOffset)){this.shadowOffset=this.lastShadowOffset;delete this.lastShadowOffset}if(c){this.sync(true)}}},sync:function(d){var n=this.shadow;if(!this.updating&&this.isVisible()&&(n||this.useShim)){var i=this.getShim(),m=this.getWidth(),j=this.getHeight(),e=this.getLeft(true),o=this.getTop(true);if(n&&!this.shadowDisabled){if(d&&!n.isVisible()){n.show(this)}else{n.realign(e,o,m,j)}if(i){if(d){i.show()}var k=n.el.getXY(),g=i.dom.style,c=n.el.getSize();g.left=(k[0])+"px";g.top=(k[1])+"px";g.width=(c.width)+"px";g.height=(c.height)+"px"}}else{if(i){if(d){i.show()}i.setSize(m,j);i.setLeftTop(e,o)}}}},destroy:function(){this.hideShim();if(this.shadow){this.shadow.hide()}this.removeAllListeners();Ext.removeNode(this.dom);delete this.dom},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 j=Ext.lib.Dom.getViewWidth(),d=Ext.lib.Dom.getViewHeight();var o=Ext.getDoc().getScroll();var n=this.getXY();var k=n[0],i=n[1];var c=this.shadowOffset;var l=this.dom.offsetWidth+c,e=this.dom.offsetHeight+c;var g=false;if((k+l)>j+o.left){k=j-l-c;g=true}if((i+e)>d+o.top){i=d-e-c;g=true}if(k<o.left){k=o.left;g=true}if(i<o.top){i=o.top;g=true}if(g){if(this.avoidY){var m=this.avoidY;if(i<=m&&(i+e)>=m){i=m-e-5}}n=[k,i];this.storeXY(n);a.setXY.call(this,n);this.sync()}}return this},getConstrainOffset:function(){return this.shadowOffset},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(i,h,k,l,j){if(i){this.showAction()}if(h&&i){var g=function(){this.sync(true);if(l){l()}}.createDelegate(this);a.setVisible.call(this,true,true,k,g,j)}else{if(!i){this.hideUnders(true)}var g=l;if(h){g=function(){this.hideAction();if(l){l()}}.createDelegate(this)}a.setVisible.call(this,i,h,k,g,j);if(i){this.sync(true)}else{if(!h){this.hideAction()}}}return this},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();return this},setTop:function(c){this.storeLeftTop(this.getLeft(true),c);a.setTop.apply(this,arguments);this.sync();return this},setLeftTop:function(d,c){this.storeLeftTop(d,c);a.setLeftTop.apply(this,arguments);this.sync();return this},setXY:function(j,h,k,l,i){this.fixDisplay();this.beforeAction();this.storeXY(j);var g=this.createCB(l);a.setXY.call(this,j,h,k,g,i);if(!h){g()}return this},createCB:function(e){var d=this;return function(){d.constrainXY();d.sync(true);if(e){e()}}},setX:function(g,h,j,k,i){this.setXY([g,this.getY()],h,j,k,i);return this},setY:function(k,g,i,j,h){this.setXY([this.getX(),k],g,i,j,h);return this},setSize:function(j,k,i,m,n,l){this.beforeAction();var g=this.createCB(n);a.setSize.call(this,j,k,i,m,g,l);if(!i){g()}return this},setWidth:function(i,h,k,l,j){this.beforeAction();var g=this.createCB(l);a.setWidth.call(this,i,h,k,g,j);if(!h){g()}return this},setHeight:function(j,i,l,m,k){this.beforeAction();var g=this.createCB(m);a.setHeight.call(this,j,i,l,g,k);if(!i){g()}return this},setBounds:function(o,m,p,i,n,k,l,j){this.beforeAction();var g=this.createCB(l);if(!n){this.storeXY([o,m]);a.setXY.call(this,[o,m]);a.setSize.call(this,p,i,n,k,g,j);g()}else{a.setBounds.call(this,o,m,p,i,n,k,g,j)}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)}return this}})})();Ext.Shadow=function(d){Ext.apply(this,d);if(typeof this.mode!="string"){this.mode=this.defaultMode}var e=this.offset,c={h:0},b=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":c.w=0;c.l=c.t=e;c.t-=1;if(Ext.isIE){c.l-=this.offset+b;c.t-=this.offset+b;c.w-=b;c.h-=b;c.t+=1}break;case"sides":c.w=(e*2);c.l=-e;c.t=e-1;if(Ext.isIE){c.l-=(this.offset-b);c.t-=this.offset+b;c.l+=1;c.w-=(this.offset-b)*2;c.w-=b+1;c.h-=1}break;case"frame":c.w=c.h=(e*2);c.l=c.t=-e;c.t+=1;c.h-=2;if(Ext.isIE){c.l-=(this.offset-b);c.t-=(this.offset-b);c.l+=1;c.w-=(this.offset+b+1);c.h-=(this.offset+b);c.h+=1}break}this.adjusts=c};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(b,r,q,g){if(!this.el){return}var n=this.adjusts,k=this.el.dom,u=k.style,i=0,p=(q+n.w),e=(g+n.h),j=p+"px",o=e+"px",m,c;u.left=(b+n.l)+"px";u.top=(r+n.t)+"px";if(u.width!=j||u.height!=o){u.width=j;u.height=o;if(!Ext.isIE){m=k.childNodes;c=Math.max(0,(p-12))+"px";m[0].childNodes[1].style.width=c;m[1].childNodes[1].style.width=c;m[2].childNodes[1].style.width=c;m[1].style.height=Math.max(0,(e-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=[],a=Ext.isIE?'<div class="x-ie-shadow"></div>':'<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';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(Ext.isDefined(b)&&Ext.isDefined(this.boxMinWidth)&&(b<this.boxMinWidth)){b=this.boxMinWidth}if(Ext.isDefined(d)&&Ext.isDefined(this.boxMinHeight)&&(d<this.boxMinHeight)){d=this.boxMinHeight}if(Ext.isDefined(b)&&Ext.isDefined(this.boxMaxWidth)&&(b>this.boxMaxWidth)){b=this.boxMaxWidth}if(Ext.isDefined(d)&&Ext.isDefined(this.boxMaxHeight)&&(d>this.boxMaxHeight)){d=this.boxMaxHeight}if(!this.boxReady){this.width=b;this.height=d;return this}if(this.cacheSizes!==false&&this.lastSize&&this.lastSize.width==b&&this.lastSize.height==d){return this}this.lastSize={width:b,height:d};var c=this.adjustSize(b,d),g=c.width,a=c.height,e;if(g!==undefined||a!==undefined){e=this.getResizeEl();if(!this.deferHeight&&g!==undefined&&a!==undefined){e.setSize(g,a)}else{if(!this.deferHeight&&a!==undefined){e.setHeight(a)}else{if(g!==undefined){e.setWidth(g)}}}this.onResize(g,a,b,d);this.fireEvent("resize",this,g,a,b,d)}return this},setWidth:function(a){return this.setSize(a)},setHeight:function(a){return this.setSize(undefined,a)},getSize:function(){return this.getResizeEl().getSize()},getWidth:function(){return this.getResizeEl().getWidth()},getHeight:function(){return this.getResizeEl().getHeight()},getOuterSize:function(){var a=this.getResizeEl();return{width:a.getWidth()+a.getMargins("lr"),height:a.getHeight()+a.getMargins("tb")}},getPosition:function(a){var b=this.getPositionEl();if(a===true){return[b.getLeft(true),b.getTop(true)]}return this.xy||b.getXY()},getBox:function(a){var c=this.getPosition(a);var b=this.getSize();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},setAutoScroll:function(a){if(this.rendered){this.getContentTarget().setOverflow(a?"auto":"")}this.autoScroll=a;return this},setPosition:function(a,g){if(a&&typeof a[1]=="number"){g=a[1];a=a[0]}this.x=a;this.y=g;if(!this.boxReady){return this}var b=this.adjustPosition(a,g);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.getPositionEl().translatePoints(a,c);this.setPosition(b.left,b.top);return this},afterRender:function(){Ext.BoxComponent.superclass.afterRender.call(this);if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl)}if(this.positionEl){this.positionEl=Ext.get(this.positionEl)}this.boxReady=true;Ext.isDefined(this.autoScroll)&&this.setAutoScroll(this.autoScroll);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.getResizeEl().getWidth(),this.autoHeight?undefined:this.getResizeEl().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.Spacer=Ext.extend(Ext.BoxComponent,{autoEl:"div"});Ext.reg("spacer",Ext.Spacer);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:"&#160;"},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.tickSize);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.tickSize)}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){Ext.destroy(this.overlay);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){Ext.destroy(this.shim,Ext.get(this.proxy));this.dd.unreg();if(a){this.el.remove()}this.purgeListeners()}});Ext.SplitBar.createProxy=function(b){var c=new Ext.Element(document.createElement("div"));document.body.appendChild(c.dom);c.unselectable();var a="x-splitbar-proxy";c.addClass(a+" "+(b==Ext.SplitBar.HORIZONTAL?a+"-h":a+"-v"));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,{bufferResize:50,autoDestroy:true,forceLayout:false,defaultType:"panel",resizeEvent:"resize",bubbleEvents:["add","remove"],initComponent:function(){Ext.Container.superclass.initComponent.call(this);this.addEvents("afterlayout","beforeadd","beforeremove","add","remove");var a=this.items;if(a){delete this.items;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.layout=a;this.initItems();a.setContainer(this)},afterRender:function(){Ext.Container.superclass.afterRender.call(this);if(!this.layout){this.layout="auto"}if(Ext.isObject(this.layout)&&!this.layout.layout){this.layoutConfig=this.layout;this.layout=this.layoutConfig.type}if(Ext.isString(this.layout)){this.layout=new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)}this.setLayout(this.layout);if(this.activeItem!==undefined&&this.layout.setActiveItem){var a=this.activeItem;delete this.activeItem;this.layout.setActiveItem(a)}if(!this.ownerCt){this.doLayout(false,true)}if(this.monitorResize===true){Ext.EventManager.onWindowResize(this.doLayout,this,[false])}},getLayoutTarget:function(){return this.el},getComponentId:function(a){return a.getItemId()},add:function(b){this.initItems();var e=arguments.length>1;if(e||Ext.isArray(b)){var a=[];Ext.each(e?arguments:b,function(h){a.push(this.add(h))},this);return a}var g=this.lookupComponent(this.applyDefaults(b));var d=this.items.length;if(this.fireEvent("beforeadd",this,g,d)!==false&&this.onBeforeAdd(g)!==false){this.items.add(g);g.onAdded(this,d);this.onAdd(g);this.fireEvent("add",this,g,d)}return g},onAdd:function(a){},onAdded:function(a,b){this.ownerCt=a;this.initRef();this.cascade(function(d){d.initRef()});this.fireEvent("added",this,a,b)},insert:function(e,b){var d=arguments,h=d.length,a=[],g,j;this.initItems();if(h>2){for(g=h-1;g>=1;--g){a.push(this.insert(e,d[g]))}return a}j=this.lookupComponent(this.applyDefaults(b));e=Math.min(e,this.items.length);if(this.fireEvent("beforeadd",this,j,e)!==false&&this.onBeforeAdd(j)!==false){if(j.ownerCt==this){this.items.remove(j)}this.items.insert(e,j);j.onAdded(this,e);this.onAdd(j);this.fireEvent("add",this,j,e)}return j},applyDefaults:function(b){var a=this.defaults;if(a){if(Ext.isFunction(a)){a=a.call(this,b)}if(Ext.isString(b)){b=Ext.ComponentMgr.get(b);Ext.apply(b,a)}else{if(!b.events){Ext.applyIf(b.isAction?b.initialConfig:b,a)}else{Ext.apply(b,a)}}}return b},onBeforeAdd:function(a){if(a.ownerCt){a.ownerCt.remove(a,false)}if(this.hideBorders===true){a.border=(a.border===true)}},remove:function(a,b){this.initItems();var d=this.getComponent(a);if(d&&this.fireEvent("beforeremove",this,d)!==false){this.doRemove(d,b);this.fireEvent("remove",this,d)}return d},onRemove:function(a){},doRemove:function(e,d){var b=this.layout,a=b&&this.rendered;if(a){b.onRemove(e)}this.items.remove(e);e.onRemoved();this.onRemove(e);if(d===true||(d!==false&&this.autoDestroy)){e.destroy()}if(a){b.afterRemove(e)}},removeAll:function(c){this.initItems();var e,g=[],b=[];this.items.each(function(h){g.push(h)});for(var d=0,a=g.length;d<a;++d){e=g[d];this.remove(e,c);if(e.ownerCt!==this){b.push(e)}}return b},getComponent:function(a){if(Ext.isObject(a)){a=a.getItemId()}return this.items.get(a)},lookupComponent:function(a){if(Ext.isString(a)){return Ext.ComponentMgr.get(a)}else{if(!a.events){return this.createComponent(a)}}return a},createComponent:function(a,d){if(a.render){return a}var b=Ext.create(Ext.apply({ownerCt:this},a),d||this.defaultType);delete b.initialConfig.ownerCt;delete b.ownerCt;return b},canLayout:function(){var a=this.getVisibilityEl();return a&&a.dom&&!a.isStyle("display","none")},doLayout:function(g,e){var k=this.rendered,j=e||this.forceLayout;if(this.collapsed||!this.canLayout()){this.deferLayout=this.deferLayout||!g;if(!j){return}g=g&&!this.deferLayout}else{delete this.deferLayout}if(k&&this.layout){this.layout.layout()}if(g!==true&&this.items){var d=this.items.items;for(var b=0,a=d.length;b<a;b++){var h=d[b];if(h.doLayout){h.doLayout(false,j)}}}if(k){this.onLayout(g,j)}this.hasLayout=true;delete this.forceLayout},onLayout:Ext.emptyFn,shouldBufferLayout:function(){var a=this.hasLayout;if(this.ownerCt){return a?!this.hasLayoutPending():false}return a},hasLayoutPending:function(){var a=false;this.ownerCt.bubble(function(b){if(b.layoutPending){a=true;return false}});return a},onShow:function(){Ext.Container.superclass.onShow.call(this);if(Ext.isDefined(this.deferLayout)){delete this.deferLayout;this.doLayout(true)}},getLayout:function(){if(!this.layout){var a=new Ext.layout.AutoLayout(this.layoutConfig);this.setLayout(a)}return this.layout},beforeDestroy:function(){var a;if(this.items){while(a=this.items.first()){this.doRemove(a,true)}}if(this.monitorResize){Ext.EventManager.removeResizeListener(this.doLayout,this)}Ext.destroy(this.layout);Ext.Container.superclass.beforeDestroy.call(this)},cascade:function(g,e,b){if(g.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(g,e,b)}else{g.apply(e||d[c],b||[d[c]])}}}}return this},findById:function(c){var a=null,b=this;this.cascade(function(d){if(b!=d&&d.id===c){a=d;return false}});return a},findByType:function(b,a){return this.findBy(function(d){return d.isXType(b,a)})},find:function(b,a){return this.findBy(function(d){return d[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},get:function(a){return this.getComponent(a)}});Ext.Container.LAYOUTS={};Ext.reg("container",Ext.Container);Ext.layout.ContainerLayout=Ext.extend(Object,{monitorResize:false,activeItem:null,constructor:function(a){this.id=Ext.id(null,"ext-layout-");Ext.apply(this,a)},type:"container",IEMeasureHack:function(k,g){var a=k.dom.childNodes,b=a.length,n,m=[],l,h,j;for(h=0;h<b;h++){n=a[h];l=Ext.get(n);if(l){m[h]=l.getStyle("display");l.setStyle({display:"none"})}}j=k?k.getViewSize(g):{};for(h=0;h<b;h++){n=a[h];l=Ext.get(n);if(l){l.setStyle({display:m[h]})}}return j},getLayoutTargetSize:Ext.EmptyFn,layout:function(){var a=this.container,b=a.getLayoutTarget();if(!(this.hasLayout||Ext.isEmpty(this.targetCls))){b.addClass(this.targetCls)}this.onLayout(a,b);a.fireEvent("afterlayout",a,this)},onLayout:function(a,b){this.renderAll(a,b)},isValidParent:function(b,a){return a&&b.getPositionEl().dom.parentNode==(a.dom||a)},renderAll:function(e,g){var b=e.items.items,d,h,a=b.length;for(d=0;d<a;d++){h=b[d];if(h&&(!h.rendered||!this.isValidParent(h,g))){this.renderItem(h,d,g)}}},renderItem:function(d,a,b){if(d){if(!d.rendered){d.render(b,a);this.configureItem(d)}else{if(!this.isValidParent(d,b)){if(Ext.isNumber(a)){a=b.dom.childNodes[a]}b.dom.insertBefore(d.getPositionEl().dom,a||null);d.container=b;this.configureItem(d)}}}},getRenderedItems:function(g){var e=g.getLayoutTarget(),h=g.items.items,a=h.length,d,j,b=[];for(d=0;d<a;d++){if((j=h[d]).rendered&&this.isValidParent(j,e)&&j.shouldLayout!==false){b.push(j)}}return b},configureItem:function(b){if(this.extraCls){var a=b.getPositionEl?b.getPositionEl():b;a.addClass(this.extraCls)}if(b.doLayout&&this.forceLayout){b.doLayout()}if(this.renderHidden&&b!=this.activeItem){b.hide()}},onRemove:function(b){if(this.activeItem==b){delete this.activeItem}if(b.rendered&&this.extraCls){var a=b.getPositionEl?b.getPositionEl():b;a.removeClass(this.extraCls)}},afterRemove:function(a){if(a.removeRestore){a.removeMode="container";delete a.removeRestore}},onResize:function(){var c=this.container,a;if(c.collapsed){return}if(a=c.bufferResize&&c.shouldBufferLayout()){if(!this.resizeTask){this.resizeTask=new Ext.util.DelayedTask(this.runLayout,this);this.resizeBuffer=Ext.isNumber(a)?a:50}c.layoutPending=true;this.resizeTask.delay(this.resizeBuffer)}else{this.runLayout()}},runLayout:function(){var a=this.container;this.layout();a.onLayout();delete a.layoutPending},setContainer:function(b){if(this.monitorResize&&b!=this.container){var a=this.container;if(a){a.un(a.resizeEvent,this.onResize,this)}if(b){b.on(b.resizeEvent,this.onResize,this)}}this.container=b},parseMargins:function(b){if(Ext.isNumber(b)){b=b.toString()}var c=b.split(" "),a=c.length;if(a==1){c[1]=c[2]=c[3]=c[0]}else{if(a==2){c[2]=c[0];c[3]=c[1]}else{if(a==3){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}},fieldTpl:(function(){var a=new Ext.Template('<div class="x-form-item {itemCls}" tabIndex="-1">','<label for="{id}" style="{labelStyle}" class="x-form-item-label">{label}{labelSeparator}</label>','<div class="x-form-element" id="x-form-el-{id}" style="{elementStyle}">','</div><div class="{clearCls}"></div>',"</div>");a.disableFormats=true;return a.compile()})(),destroy:function(){if(this.resizeTask&&this.resizeTask.cancel){this.resizeTask.cancel()}if(this.container){this.container.un(this.container.resizeEvent,this.onResize,this)}if(!Ext.isEmpty(this.targetCls)){var a=this.container.getLayoutTarget();if(a){a.removeClass(this.targetCls)}}}});Ext.layout.AutoLayout=Ext.extend(Ext.layout.ContainerLayout,{type:"auto",monitorResize:true,onLayout:function(d,g){Ext.layout.AutoLayout.superclass.onLayout.call(this,d,g);var e=this.getRenderedItems(d),a=e.length,b,h;for(b=0;b<a;b++){h=e[b];if(h.doLayout){h.doLayout(true)}}}});Ext.Container.LAYOUTS.auto=Ext.layout.AutoLayout;Ext.layout.FitLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"fit",getLayoutTargetSize:function(){var a=this.container.getLayoutTarget();if(!a){return{}}return a.getStyleSize()},onLayout:function(a,b){Ext.layout.FitLayout.superclass.onLayout.call(this,a,b);if(!a.collapsed){this.setItemSize(this.activeItem||a.items.itemAt(0),this.getLayoutTargetSize())}},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,layoutOnCardChange:false,renderHidden:true,type:"card",setActiveItem:function(d){var a=this.activeItem,b=this.container;d=b.getComponent(d);if(d&&a!=d){if(a){a.hide();if(a.hidden!==true){return false}a.fireEvent("deactivate",a)}var c=d.doLayout&&(this.layoutOnCardChange||!d.rendered);this.activeItem=d;delete d.deferLayout;d.show();this.layout();if(c){d.doLayout()}d.fireEvent("activate",d)}},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,type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a={};if(b){a=b.getViewSize();if(Ext.isIE&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},onLayout:function(m,w){Ext.layout.AnchorLayout.superclass.onLayout.call(this,m,w);var p=this.getLayoutTargetSize(),k=p.width,o=p.height,q=w.getStyle("overflow"),n=this.getRenderedItems(m),t=n.length,g=[],j,a,v,l,h,c,e,d,u=0,s,b;if(k<20&&o<20){return}if(m.anchorSize){if(typeof m.anchorSize=="number"){a=m.anchorSize}else{a=m.anchorSize.width;v=m.anchorSize.height}}else{a=m.initialConfig.width;v=m.initialConfig.height}for(s=0;s<t;s++){l=n[s];b=l.getPositionEl();if(!l.anchor&&l.items&&!Ext.isNumber(l.width)&&!(Ext.isIE6&&Ext.isStrict)){l.anchor=this.defaultAnchor}if(l.anchor){h=l.anchorSpec;if(!h){d=l.anchor.split(" ");l.anchorSpec=h={right:this.parseAnchor(d[0],l.initialConfig.width,a),bottom:this.parseAnchor(d[1],l.initialConfig.height,v)}}c=h.right?this.adjustWidthAnchor(h.right(k)-b.getMargins("lr"),l):undefined;e=h.bottom?this.adjustHeightAnchor(h.bottom(o)-b.getMargins("tb"),l):undefined;if(c||e){g.push({component:l,width:c||undefined,height:e||undefined})}}}for(s=0,t=g.length;s<t;s++){j=g[s];j.component.setSize(j.width,j.height)}if(q&&q!="hidden"&&!this.adjustmentPass){var r=this.getLayoutTargetSize();if(r.width!=p.width||r.height!=p.height){this.adjustmentPass=true;this.onLayout(m,w)}}delete this.adjustmentPass},parseAnchor:function(c,h,b){if(c&&c!="none"){var e;if(this.parseAnchorRE.test(c)){var g=b-h;return function(a){if(a!==e){e=a;return a-g}}}else{if(c.indexOf("%")!=-1){var d=parseFloat(c.replace("%",""))*0.01;return function(a){if(a!==e){e=a;return Math.floor(a*d)}}}else{c=parseInt(c,10);if(!isNaN(c)){return function(a){if(a!==e){e=a;return a+c}}}}}}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,type:"column",extraCls:"x-column",scrollOffset:0,targetCls:"x-column-layout-ct",isValidParent:function(b,a){return this.innerCt&&b.getPositionEl().dom.parentNode==this.innerCt.dom},getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a;if(b){a=b.getViewSize();if(Ext.isIE&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},renderAll:function(a,b){if(!this.innerCt){this.innerCt=b.createChild({cls:"x-column-inner"});this.innerCt.createChild({cls:"x-clear"})}Ext.layout.ColumnLayout.superclass.renderAll.call(this,a,this.innerCt)},onLayout:function(e,k){var g=e.items.items,j=g.length,n,b,a,o=[];this.renderAll(e,k);var r=this.getLayoutTargetSize();if(r.width<1&&r.height<1){return}var p=r.width-this.scrollOffset,d=r.height,q=p;this.innerCt.setWidth(p);for(b=0;b<j;b++){n=g[b];a=n.getPositionEl().getMargins("lr");o[b]=a;if(!n.columnWidth){q-=(n.getWidth()+a)}}q=q<0?0:q;for(b=0;b<j;b++){n=g[b];a=o[b];if(n.columnWidth){n.setSize(Math.floor(n.columnWidth*q)-a)}}if(Ext.isIE){if(b=k.getStyle("overflow")&&b!="hidden"&&!this.adjustmentPass){var l=this.getLayoutTargetSize();if(l.width!=r.width){this.adjustmentPass=true;this.onLayout(e,k)}}}delete this.adjustmentPass}});Ext.Container.LAYOUTS.column=Ext.layout.ColumnLayout;Ext.layout.BorderLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,rendered:false,type:"border",targetCls:"x-border-layout-ct",getLayoutTargetSize:function(){var a=this.container.getLayoutTarget();return a?a.getViewSize():{}},onLayout:function(g,I){var j,B,F,o,x=g.items.items,C=x.length;if(!this.rendered){j=[];for(B=0;B<C;B++){F=x[B];o=F.region;if(F.collapsed){j.push(F)}F.collapsed=false;if(!F.rendered){F.render(I,B);F.getPositionEl().addClass("x-border-panel")}this[o]=o!="center"&&F.split?new Ext.layout.BorderLayout.SplitRegion(this,F.initialConfig,o):new Ext.layout.BorderLayout.Region(this,F.initialConfig,o);this[o].render(I,F)}this.rendered=true}var v=this.getLayoutTargetSize();if(v.width<20||v.height<20){if(j){this.restoreCollapsed=j}return}else{if(this.restoreCollapsed){j=this.restoreCollapsed;delete this.restoreCollapsed}}var t=v.width,D=v.height,r=t,A=D,p=0,q=0,y=this.north,u=this.south,l=this.west,E=this.east,F=this.center,H,z,d,G;if(!F&&Ext.layout.BorderLayout.WARN!==false){throw"No center region defined in BorderLayout "+g.id}if(y&&y.isVisible()){H=y.getSize();z=y.getMargins();H.width=t-(z.left+z.right);H.x=z.left;H.y=z.top;p=H.height+H.y+z.bottom;A-=p;y.applyLayout(H)}if(u&&u.isVisible()){H=u.getSize();z=u.getMargins();H.width=t-(z.left+z.right);H.x=z.left;G=(H.height+z.top+z.bottom);H.y=D-G+z.top;A-=G;u.applyLayout(H)}if(l&&l.isVisible()){H=l.getSize();z=l.getMargins();H.height=A-(z.top+z.bottom);H.x=z.left;H.y=p+z.top;d=(H.width+z.left+z.right);q+=d;r-=d;l.applyLayout(H)}if(E&&E.isVisible()){H=E.getSize();z=E.getMargins();H.height=A-(z.top+z.bottom);d=(H.width+z.left+z.right);H.x=t-d+z.left;H.y=p+z.top;r-=d;E.applyLayout(H)}if(F){z=F.getMargins();var k={x:q+z.left,y:p+z.top,width:r-(z.left+z.right),height:A-(z.top+z.bottom)};F.applyLayout(k)}if(j){for(B=0,C=j.length;B<C;B++){j[B].collapse(false)}}if(Ext.isIE&&Ext.isStrict){I.repaint()}if(B=I.getStyle("overflow")&&B!="hidden"&&!this.adjustmentPass){var a=this.getLayoutTargetSize();if(a.width!=v.width||a.height!=v.height){this.adjustmentPass=true;this.onLayout(g,I)}}delete this.adjustmentPass},destroy:function(){var b=["north","south","east","west"],a,c;for(a=0;a<b.length;a++){c=this[b[a]];if(c){if(c.destroy){c.destroy()}else{if(c.split){c.split.destroy(true)}}}}Ext.layout.BorderLayout.superclass.destroy.call(this)}});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},floatingZIndex:100,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||this.floatable){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('<div class="x-tool x-tool-{id}">&#160;</div>');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:"&#160;"});this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.onExpandClick,this,{stopEvent:true})}else{if(this.collapsible!==false&&!this.hideCollapseTool){var a=this.expandToolEl=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.titleCollapse){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this[this.floatable?"collapseClick":"onExpandClick"],this)}}}return this.collapsedEl},onExpandClick:function(a){if(this.isSlid){this.panel.expand(false)}else{this.panel.expand()}},onCollapseClick:function(a){this.panel.collapse()},beforeCollapse:function(c,a){this.lastAnim=a;if(this.splitEl){this.splitEl.hide()}this.getCollapsedEl().show();var b=this.panel.getEl();this.originalZIndex=b.getStyle("z-index");b.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){if(this.isSlid){this.afterSlideIn()}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",this.floatingZIndex)},onExpand:function(){this.isCollapsed=false;if(this.splitEl){this.splitEl.show()}this.layout.layout();this.panel.el.setStyle("z-index",this.originalZIndex);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){this.autoHideSlideTask=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={mouseout:function(a){if(!a.within(this.el,true)){this.autoHideSlideTask.delay(500)}},mouseover:function(a){this.autoHideSlideTask.cancel()},scope:this}}this.el.on(this.autoHideHd);this.collapsedEl.on(this.autoHideHd)}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover);this.collapsedEl.un("mouseout",this.autoHideHd.mouseout);this.collapsedEl.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 b=this.panel.tools,c,a;if(b&&b.toggle){b.toggle.hide()}this.el.show();a=this.panel.collapsed;this.panel.collapsed=false;if(this.position=="east"||this.position=="west"){c=this.panel.deferHeight;this.panel.deferHeight=false;this.panel.setSize(undefined,this.collapsedEl.getHeight());this.panel.deferHeight=c}else{this.panel.setSize(this.collapsedEl.getWidth(),undefined)}this.panel.collapsed=a;this.restoreLT=[this.el.dom.style.left,this.el.dom.style.top];this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.el.setStyle("z-index",this.floatingZIndex+2);this.panel.el.replaceClass("x-panel-collapsed","x-panel-floating");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.panel.el.replaceClass("x-panel-floating","x-panel-collapsed");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}},destroy:function(){if(this.autoHideSlideTask&&this.autoHideSlideTask.cancel){this.autoHideSlideTask.cancel()}Ext.destroyMembers(this,"miniCollapsedEl","collapsedEl","expandToolEl")}};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:"&#160;",id:this.panel.id+"-xsplit"});if(this.collapseMode=="mini"){this.miniSplitEl=this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-"+d,html:"&#160;"});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.tickSize=this.tickSize;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},destroy:function(){Ext.destroy(this.miniSplitEl,this.split,this.splitEl);Ext.layout.BorderLayout.SplitRegion.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.border=Ext.layout.BorderLayout;Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{labelSeparator:":",trackLabels:true,type:"form",onRemove:function(d){Ext.layout.FormLayout.superclass.onRemove.call(this,d);if(this.trackLabels){d.un("show",this.onFieldShow,this);d.un("hide",this.onFieldHide,this)}var b=d.getPositionEl(),a=d.getItemCt&&d.getItemCt();if(d.rendered&&a){if(b&&b.dom){b.insertAfter(a)}Ext.destroy(a);Ext.destroyMembers(d,"label","itemCt");if(d.customItemCt){Ext.destroyMembers(d,"getItemCt","customItemCt")}}},setContainer:function(a){Ext.layout.FormLayout.superclass.setContainer.call(this,a);if(a.labelAlign){a.addClass("x-form-label-"+a.labelAlign)}if(a.hideLabels){Ext.apply(this,{labelStyle:"display:none",elementStyle:"padding-left:0;",labelAdjust:0})}else{this.labelSeparator=Ext.isDefined(a.labelSeparator)?a.labelSeparator:this.labelSeparator;a.labelWidth=a.labelWidth||100;if(Ext.isNumber(a.labelWidth)){var b=Ext.isNumber(a.labelPad)?a.labelPad:5;Ext.apply(this,{labelAdjust:a.labelWidth+b,labelStyle:"width:"+a.labelWidth+"px;",elementStyle:"padding-left:"+(a.labelWidth+b)+"px"})}if(a.labelAlign=="top"){Ext.apply(this,{labelStyle:"width:auto;",labelAdjust:0,elementStyle:"padding-left:0;"})}}},isHide:function(a){return a.hideLabel||this.container.hideLabels},onFieldShow:function(a){a.getItemCt().removeClass("x-hide-"+a.hideMode);if(a.isComposite){a.doLayout()}},onFieldHide:function(a){a.getItemCt().addClass("x-hide-"+a.hideMode)},getLabelStyle:function(e){var b="",c=[this.labelStyle,e];for(var d=0,a=c.length;d<a;++d){if(c[d]){b+=c[d];if(b.substr(-1,1)!=";"){b+=";"}}}return b},renderItem:function(e,a,d){if(e&&(e.isFormField||e.fieldLabel)&&e.inputType!="hidden"){var b=this.getTemplateArgs(e);if(Ext.isNumber(a)){a=d.dom.childNodes[a]||null}if(a){e.itemCt=this.fieldTpl.insertBefore(a,b,true)}else{e.itemCt=this.fieldTpl.append(d,b,true)}if(!e.getItemCt){Ext.apply(e,{getItemCt:function(){return e.itemCt},customItemCt:true})}e.label=e.getItemCt().child("label.x-form-item-label");if(!e.rendered){e.render("x-form-el-"+e.id)}else{if(!this.isValidParent(e,d)){Ext.fly("x-form-el-"+e.id).appendChild(e.getPositionEl())}}if(this.trackLabels){if(e.hidden){this.onFieldHide(e)}e.on({scope:this,show:this.onFieldShow,hide:this.onFieldHide})}this.configureItem(e)}else{Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments)}},getTemplateArgs:function(c){var a=!c.fieldLabel||c.hideLabel,b=(c.itemCls||this.container.itemCls||"")+(c.hideLabel?" x-hide-label":"");if(Ext.isIE9&&Ext.isIEQuirks&&c instanceof Ext.form.TextField){b+=" x-input-wrapper"}return{id:c.id,label:c.fieldLabel,itemCls:b,clearCls:c.clearCls||"x-form-clear-left",labelStyle:this.getLabelStyle(c.labelStyle),elementStyle:this.elementStyle||"",labelSeparator:a?"":(Ext.isDefined(c.labelSeparator)?c.labelSeparator:this.labelSeparator)}},adjustWidthAnchor:function(a,d){if(d.label&&!this.isHide(d)&&(this.container.labelAlign!="top")){var b=Ext.isIE6||(Ext.isIE&&!Ext.isStrict);return a-this.labelAdjust+(b?-3:0)}return a},adjustHeightAnchor:function(a,b){if(b.label&&!this.isHide(b)&&(this.container.labelAlign=="top")){return a-b.label.getHeight()}return a},isValidParent:function(b,a){return a&&this.container.getEl().contains(b.getPositionEl())}});Ext.Container.LAYOUTS.form=Ext.layout.FormLayout;Ext.layout.AccordionLayout=Ext.extend(Ext.layout.FitLayout,{fill:true,autoWidth:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:false,animate:false,sequence:false,activeOnTop:false,type:"accordion",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.setActiveItem(a,true)}else{if(this.activeItem&&this.activeItem!=a){a.collapsed=true}}Ext.layout.AccordionLayout.superclass.renderItem.apply(this,arguments);a.header.addClass("x-accordion-hd");a.on("beforeexpand",this.beforeExpand,this)},onRemove:function(a){Ext.layout.AccordionLayout.superclass.onRemove.call(this,a);if(a.rendered){a.header.removeClass("x-accordion-hd")}a.un("beforeexpand",this.beforeExpand,this)},beforeExpand:function(c,b){var a=this.activeItem;if(a){if(this.sequence){delete this.activeItem;if(!a.collapsed){a.collapse({callback:function(){c.expand(b||true)},scope:this});return false}}else{a.collapse(this.animate)}}this.setActive(c);if(this.activeOnTop){c.el.dom.parentNode.insertBefore(c.el.dom,c.el.dom.parentNode.firstChild)}this.layout()},setItemSize:function(g,e){if(this.fill&&g){var d=0,c,b=this.getRenderedItems(this.container),a=b.length,h;for(c=0;c<a;c++){if((h=b[c])!=g&&!h.hidden){d+=h.header.getHeight()}}e.height-=d;g.setSize(e)}},setActiveItem:function(a){this.setActive(a,true)},setActive:function(c,b){var a=this.activeItem;c=this.container.getComponent(c);if(a!=c){if(c.rendered&&c.collapsed&&b){c.expand()}else{if(a){a.fireEvent("deactivate",a)}this.activeItem=c;c.fireEvent("activate",c)}}}});Ext.Container.LAYOUTS.accordion=Ext.layout.AccordionLayout;Ext.layout.Accordion=Ext.layout.AccordionLayout;Ext.layout.TableLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:false,type:"table",targetCls:"x-table-layout-ct",tableAttrs:null,setContainer:function(a){Ext.layout.TableLayout.superclass.setContainer.call(this,a);this.currentRow=0;this.currentColumn=0;this.cells=[]},onLayout:function(d,g){var e=d.items.items,a=e.length,h,b;if(!this.table){g.addClass("x-table-layout-ct");this.table=g.createChild(Ext.apply({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},this.tableAttrs),null,true)}this.renderAll(d,g)},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(j){var a=this.getNextNonSpan(this.currentColumn,this.currentRow);var g=this.currentColumn=a[0],e=this.currentRow=a[1];for(var i=e;i<e+(j.rowspan||1);i++){if(!this.cells[i]){this.cells[i]=[]}for(var d=g;d<g+(j.colspan||1);d++){this.cells[i][d]=true}}var h=document.createElement("td");if(j.cellId){h.id=j.cellId}var b="x-table-layout-cell";if(j.cellCls){b+=" "+j.cellCls}h.className=b;if(j.colspan){h.colSpan=j.colspan}if(j.rowspan){h.rowSpan=j.rowspan}this.getRow(e).appendChild(h);return h},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(e,a,d){if(!this.table){this.table=d.createChild(Ext.apply({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},this.tableAttrs),null,true)}if(e&&!e.rendered){e.render(this.getNextCell(e));this.configureItem(e)}else{if(e&&!this.isValidParent(e,d)){var b=this.getNextCell(e);b.insertBefore(e.getPositionEl().dom,null);e.container=Ext.get(b);this.configureItem(e)}}},isValidParent:function(b,a){return b.getPositionEl().up("table",5).dom.parentNode===(a.dom||a)},destroy:function(){delete this.table;Ext.layout.TableLayout.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.table=Ext.layout.TableLayout;Ext.layout.AbsoluteLayout=Ext.extend(Ext.layout.AnchorLayout,{extraCls:"x-abs-layout-item",type:"absolute",onLayout:function(a,b){b.position();this.paddingLeft=b.getPadding("l");this.paddingTop=b.getPadding("t");Ext.layout.AbsoluteLayout.superclass.onLayout.call(this,a,b)},adjustWidthAnchor:function(b,a){return b?b-a.getPosition(true)[0]+this.paddingLeft:b},adjustHeightAnchor:function(b,a){return b?b-a.getPosition(true)[1]+this.paddingTop:b}});Ext.Container.LAYOUTS.absolute=Ext.layout.AbsoluteLayout;Ext.layout.BoxLayout=Ext.extend(Ext.layout.ContainerLayout,{defaultMargins:{left:0,top:0,right:0,bottom:0},padding:"0",pack:"start",monitorResize:true,type:"box",scrollOffset:0,extraCls:"x-box-item",targetCls:"x-box-layout-ct",innerCls:"x-box-inner",constructor:function(a){Ext.layout.BoxLayout.superclass.constructor.call(this,a);if(Ext.isString(this.defaultMargins)){this.defaultMargins=this.parseMargins(this.defaultMargins)}var d=this.overflowHandler;if(typeof d=="string"){d={type:d}}var c="none";if(d&&d.type!=undefined){c=d.type}var b=Ext.layout.boxOverflow[c];if(b[this.type]){b=b[this.type]}this.overflowHandler=new b(this,d)},onLayout:function(b,h){Ext.layout.BoxLayout.superclass.onLayout.call(this,b,h);var d=this.getLayoutTargetSize(),i=this.getVisibleItems(b),c=this.calculateChildBoxes(i,d),g=c.boxes,j=c.meta;if(d.width>0){var k=this.overflowHandler,a=j.tooNarrow?"handleOverflow":"clearOverflow";var e=k[a](c,d);if(e){if(e.targetSize){d=e.targetSize}if(e.recalculate){i=this.getVisibleItems(b);c=this.calculateChildBoxes(i,d);g=c.boxes}}}this.layoutTargetLastSize=d;this.childBoxCache=c;this.updateInnerCtSize(d,c);this.updateChildBoxes(g);this.handleTargetOverflow(d,b,h)},updateChildBoxes:function(c){for(var b=0,e=c.length;b<e;b++){var d=c[b],a=d.component;if(d.dirtySize){a.setSize(d.width,d.height)}if(isNaN(d.left)||isNaN(d.top)){continue}a.setPosition(d.left,d.top)}},updateInnerCtSize:function(c,h){var i=this.align,g=this.padding,e=c.width,a=c.height;if(this.type=="hbox"){var b=e,d=h.meta.maxHeight+g.top+g.bottom;if(i=="stretch"){d=a}else{if(i=="middle"){d=Math.max(a,d)}}}else{var d=a,b=h.meta.maxWidth+g.left+g.right;if(i=="stretch"){b=e}else{if(i=="center"){b=Math.max(e,b)}}}this.innerCt.setSize(b||undefined,d||undefined)},handleTargetOverflow:function(d,a,c){var e=c.getStyle("overflow");if(e&&e!="hidden"&&!this.adjustmentPass){var b=this.getLayoutTargetSize();if(b.width!=d.width||b.height!=d.height){this.adjustmentPass=true;this.onLayout(a,c)}}delete this.adjustmentPass},isValidParent:function(b,a){return this.innerCt&&b.getPositionEl().dom.parentNode==this.innerCt.dom},getVisibleItems:function(g){var g=g||this.container,e=g.getLayoutTarget(),h=g.items.items,a=h.length,d,j,b=[];for(d=0;d<a;d++){if((j=h[d]).rendered&&this.isValidParent(j,e)&&j.hidden!==true&&j.collapsed!==true&&j.shouldLayout!==false){b.push(j)}}return b},renderAll:function(a,b){if(!this.innerCt){this.innerCt=b.createChild({cls:this.innerCls});this.padding=this.parseMargins(this.padding)}Ext.layout.BoxLayout.superclass.renderAll.call(this,a,this.innerCt)},getLayoutTargetSize:function(){var b=this.container.getLayoutTarget(),a;if(b){a=b.getViewSize();if(Ext.isIE&&Ext.isStrict&&a.width==0){a=b.getStyleSize()}a.width-=b.getPadding("lr");a.height-=b.getPadding("tb")}return a},renderItem:function(a){if(Ext.isString(a.margins)){a.margins=this.parseMargins(a.margins)}else{if(!a.margins){a.margins=this.defaultMargins}}Ext.layout.BoxLayout.superclass.renderItem.apply(this,arguments)},destroy:function(){Ext.destroy(this.overflowHandler);Ext.layout.BoxLayout.superclass.destroy.apply(this,arguments)}});Ext.layout.boxOverflow.None=Ext.extend(Object,{constructor:function(b,a){this.layout=b;Ext.apply(this,a||{})},handleOverflow:Ext.emptyFn,clearOverflow:Ext.emptyFn});Ext.layout.boxOverflow.none=Ext.layout.boxOverflow.None;Ext.layout.boxOverflow.Menu=Ext.extend(Ext.layout.boxOverflow.None,{afterCls:"x-strip-right",noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>',constructor:function(a){Ext.layout.boxOverflow.Menu.superclass.constructor.apply(this,arguments);this.menuItems=[]},createInnerElements:function(){if(!this.afterCt){this.afterCt=this.layout.innerCt.insertSibling({cls:this.afterCls},"before")}},clearOverflow:function(a,g){var e=g.width+(this.afterCt?this.afterCt.getWidth():0),b=this.menuItems;this.hideTrigger();for(var c=0,d=b.length;c<d;c++){b.pop().component.show()}return{targetSize:{height:g.height,width:e}}},showTrigger:function(){this.createMenu();this.menuTrigger.show()},hideTrigger:function(){if(this.menuTrigger!=undefined){this.menuTrigger.hide()}},beforeMenuShow:function(h){var b=this.menuItems,a=b.length,g,e;var c=function(j,i){return j.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)};this.clearMenu();h.removeAll();for(var d=0;d<a;d++){g=b[d].component;if(e&&(c(g,e)||c(e,g))){h.add("-")}this.addComponentToMenu(h,g);e=g}if(h.items.length<1){h.add(this.noItemsMenuText)}},createMenuConfig:function(c,a){var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a});if(d||c.enableToggle){Ext.apply(b,{group:d,checked:c.pressed,listeners:{checkchange:function(g,e){c.toggle(e)}}})}delete b.ownerCt;delete b.xtype;delete b.id;return b},addComponentToMenu:function(b,a){if(a instanceof Ext.Toolbar.Separator){b.add("-")}else{if(Ext.isFunction(a.isXType)){if(a.isXType("splitbutton")){b.add(this.createMenuConfig(a,true))}else{if(a.isXType("button")){b.add(this.createMenuConfig(a,!a.menu))}else{if(a.isXType("buttongroup")){a.items.each(function(c){this.addComponentToMenu(b,c)},this)}}}}}},clearMenu:function(){var a=this.moreMenu;if(a&&a.items){a.items.each(function(b){delete b.menu})}},createMenu:function(){if(!this.menuTrigger){this.createInnerElements();this.menu=new Ext.menu.Menu({ownerCt:this.layout.container,listeners:{scope:this,beforeshow:this.beforeMenuShow}});this.menuTrigger=new Ext.Button({iconCls:"x-toolbar-more-icon",cls:"x-toolbar-more",menu:this.menu,renderTo:this.afterCt})}},destroy:function(){Ext.destroy(this.menu,this.menuTrigger)}});Ext.layout.boxOverflow.menu=Ext.layout.boxOverflow.Menu;Ext.layout.boxOverflow.HorizontalMenu=Ext.extend(Ext.layout.boxOverflow.Menu,{constructor:function(){Ext.layout.boxOverflow.HorizontalMenu.superclass.constructor.apply(this,arguments);var c=this,b=c.layout,a=b.calculateChildBoxes;b.calculateChildBoxes=function(d,i){var l=a.apply(b,arguments),k=l.meta,e=c.menuItems;var j=0;for(var g=0,h=e.length;g<h;g++){j+=e[g].width}k.minimumWidth+=j;k.tooNarrow=k.minimumWidth>i.width;return l}},handleOverflow:function(d,h){this.showTrigger();var k=h.width-this.afterCt.getWidth(),l=d.boxes,e=0,r=false;for(var o=0,c=l.length;o<c;o++){e+=l[o].width}var a=k-e,g=0;for(var o=0,c=this.menuItems.length;o<c;o++){var n=this.menuItems[o],m=n.component,b=n.width;if(b<a){m.show();a-=b;g++;r=true}else{break}}if(r){this.menuItems=this.menuItems.slice(g)}else{for(var j=l.length-1;j>=0;j--){var q=l[j].component,p=l[j].left+l[j].width;if(p>=k){this.menuItems.unshift({component:q,width:l[j].width});q.hide()}else{break}}}if(this.menuItems.length==0){this.hideTrigger()}return{targetSize:{height:h.height,width:k},recalculate:r}}});Ext.layout.boxOverflow.menu.hbox=Ext.layout.boxOverflow.HorizontalMenu;Ext.layout.boxOverflow.Scroller=Ext.extend(Ext.layout.boxOverflow.None,{animateScroll:true,scrollIncrement:100,wheelIncrement:3,scrollRepeatInterval:400,scrollDuration:0.4,beforeCls:"x-strip-left",afterCls:"x-strip-right",scrollerCls:"x-strip-scroller",beforeScrollerCls:"x-strip-scroller-left",afterScrollerCls:"x-strip-scroller-right",createWheelListener:function(){this.layout.innerCt.on({scope:this,mousewheel:function(a){a.stopEvent();this.scrollBy(a.getWheelDelta()*this.wheelIncrement*-1,false)}})},handleOverflow:function(a,b){this.createInnerElements();this.showScrollers()},clearOverflow:function(){this.hideScrollers()},showScrollers:function(){this.createScrollers();this.beforeScroller.show();this.afterScroller.show();this.updateScrollButtons()},hideScrollers:function(){if(this.beforeScroller!=undefined){this.beforeScroller.hide();this.afterScroller.hide()}},createScrollers:function(){if(!this.beforeScroller&&!this.afterScroller){var a=this.beforeCt.createChild({cls:String.format("{0} {1} ",this.scrollerCls,this.beforeScrollerCls)});var b=this.afterCt.createChild({cls:String.format("{0} {1}",this.scrollerCls,this.afterScrollerCls)});a.addClassOnOver(this.beforeScrollerCls+"-hover");b.addClassOnOver(this.afterScrollerCls+"-hover");a.setVisibilityMode(Ext.Element.DISPLAY);b.setVisibilityMode(Ext.Element.DISPLAY);this.beforeRepeater=new Ext.util.ClickRepeater(a,{interval:this.scrollRepeatInterval,handler:this.scrollLeft,scope:this});this.afterRepeater=new Ext.util.ClickRepeater(b,{interval:this.scrollRepeatInterval,handler:this.scrollRight,scope:this});this.beforeScroller=a;this.afterScroller=b}},destroy:function(){Ext.destroy(this.beforeScroller,this.afterScroller,this.beforeRepeater,this.afterRepeater,this.beforeCt,this.afterCt)},scrollBy:function(b,a){this.scrollTo(this.getScrollPosition()+b,a)},getItem:function(a){if(Ext.isString(a)){a=Ext.getCmp(a)}else{if(Ext.isNumber(a)){a=this.items[a]}}return a},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){if(this.beforeScroller==undefined||this.afterScroller==undefined){return}var d=this.atExtremeBefore()?"addClass":"removeClass",c=this.atExtremeAfter()?"addClass":"removeClass",a=this.beforeScrollerCls+"-disabled",b=this.afterScrollerCls+"-disabled";this.beforeScroller[d](a);this.afterScroller[c](b);this.scrolling=false},atExtremeBefore:function(){return this.getScrollPosition()===0},scrollLeft:function(a){this.scrollBy(-this.scrollIncrement,a)},scrollRight:function(a){this.scrollBy(this.scrollIncrement,a)},scrollToItem:function(d,b){d=this.getItem(d);if(d!=undefined){var a=this.getItemVisibility(d);if(!a.fullyVisible){var c=d.getBox(true,true),e=c.x;if(a.hiddenRight){e-=(this.layout.innerCt.getWidth()-c.width)}this.scrollTo(e,b)}}},getItemVisibility:function(e){var d=this.getItem(e).getBox(true,true),a=d.x,c=d.x+d.width,g=this.getScrollPosition(),b=this.layout.innerCt.getWidth()+g;return{hiddenLeft:a<g,hiddenRight:c>b,fullyVisible:a>g&&c<b}}});Ext.layout.boxOverflow.scroller=Ext.layout.boxOverflow.Scroller;Ext.layout.boxOverflow.VerticalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{scrollIncrement:75,wheelIncrement:2,handleOverflow:function(a,b){Ext.layout.boxOverflow.VerticalScroller.superclass.handleOverflow.apply(this,arguments);return{targetSize:{height:b.height-(this.beforeCt.getHeight()+this.afterCt.getHeight()),width:b.width}}},createInnerElements:function(){var a=this.layout.innerCt;if(!this.beforeCt){this.beforeCt=a.insertSibling({cls:this.beforeCls},"before");this.afterCt=a.insertSibling({cls:this.afterCls},"after");this.createWheelListener()}},scrollTo:function(a,b){var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollBottom());if(c!=d&&!this.scrolling){if(b==undefined){b=this.animateScroll}this.layout.innerCt.scrollTo("top",c,b?this.getScrollAnim():false);if(b){this.scrolling=true}else{this.scrolling=false;this.updateScrollButtons()}}},getScrollPosition:function(){return parseInt(this.layout.innerCt.dom.scrollTop,10)||0},getMaxScrollBottom:function(){return this.layout.innerCt.dom.scrollHeight-this.layout.innerCt.getHeight()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollBottom()}});Ext.layout.boxOverflow.scroller.vbox=Ext.layout.boxOverflow.VerticalScroller;Ext.layout.boxOverflow.HorizontalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{handleOverflow:function(a,b){Ext.layout.boxOverflow.HorizontalScroller.superclass.handleOverflow.apply(this,arguments);return{targetSize:{height:b.height,width:b.width-(this.beforeCt.getWidth()+this.afterCt.getWidth())}}},createInnerElements:function(){var a=this.layout.innerCt;if(!this.beforeCt){this.afterCt=a.insertSibling({cls:this.afterCls},"before");this.beforeCt=a.insertSibling({cls:this.beforeCls},"before");this.createWheelListener()}},scrollTo:function(a,b){var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollRight());if(c!=d&&!this.scrolling){if(b==undefined){b=this.animateScroll}this.layout.innerCt.scrollTo("left",c,b?this.getScrollAnim():false);if(b){this.scrolling=true}else{this.scrolling=false;this.updateScrollButtons()}}},getScrollPosition:function(){return parseInt(this.layout.innerCt.dom.scrollLeft,10)||0},getMaxScrollRight:function(){return this.layout.innerCt.dom.scrollWidth-this.layout.innerCt.getWidth()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollRight()}});Ext.layout.boxOverflow.scroller.hbox=Ext.layout.boxOverflow.HorizontalScroller;Ext.layout.HBoxLayout=Ext.extend(Ext.layout.BoxLayout,{align:"top",type:"hbox",calculateChildBoxes:function(r,b){var F=r.length,R=this.padding,D=R.top,U=R.left,y=D+R.bottom,O=U+R.right,a=b.width-this.scrollOffset,e=b.height,o=Math.max(0,e-y),P=this.pack=="start",W=this.pack=="center",A=this.pack=="end",L=0,Q=0,T=0,l=0,X=0,H=[],k,J,M,V,w,j,S,I,c,x,q,N;for(S=0;S<F;S++){k=r[S];M=k.height;J=k.width;j=!k.hasLayout&&typeof k.doLayout=="function";if(typeof J!="number"){if(k.flex&&!J){T+=k.flex}else{if(!J&&j){k.doLayout()}V=k.getSize();J=V.width;M=V.height}}w=k.margins;x=w.left+w.right;L+=x+(J||0);l+=x+(k.flex?k.minWidth||0:J);X+=x+(k.minWidth||J||0);if(typeof M!="number"){if(j){k.doLayout()}M=k.getHeight()}Q=Math.max(Q,M+w.top+w.bottom);H.push({component:k,height:M||undefined,width:J||undefined})}var K=l-a,p=X>a;var n=Math.max(0,a-L-O);if(p){for(S=0;S<F;S++){H[S].width=r[S].minWidth||r[S].width||H[S].width}}else{if(K>0){var C=[];for(var E=0,v=F;E<v;E++){var B=r[E],t=B.minWidth||0;if(B.flex){H[E].width=t}else{C.push({minWidth:t,available:H[E].width-t,index:E})}}C.sort(function(Y,i){return Y.available>i.available?1:-1});for(var S=0,v=C.length;S<v;S++){var G=C[S].index;if(G==undefined){continue}var B=r[G],m=H[G],u=m.width,t=B.minWidth,d=Math.max(t,u-Math.ceil(K/(v-S))),g=u-d;H[G].width=d;K-=g}}else{var h=n,s=T;for(S=0;S<F;S++){k=r[S];I=H[S];w=k.margins;q=w.top+w.bottom;if(P&&k.flex&&!k.width){c=Math.ceil((k.flex/s)*h);h-=c;s-=k.flex;I.width=c;I.dirtySize=true}}}}if(W){U+=n/2}else{if(A){U+=n}}for(S=0;S<F;S++){k=r[S];I=H[S];w=k.margins;U+=w.left;q=w.top+w.bottom;I.left=U;I.top=D+w.top;switch(this.align){case"stretch":N=o-q;I.height=N.constrain(k.minHeight||0,k.maxHeight||1000000);I.dirtySize=true;break;case"stretchmax":N=Q-q;I.height=N.constrain(k.minHeight||0,k.maxHeight||1000000);I.dirtySize=true;break;case"middle":var z=o-I.height-q;if(z>0){I.top=D+q+(z/2)}}U+=I.width+w.right}return{boxes:H,meta:{maxHeight:Q,nonFlexWidth:L,desiredWidth:l,minimumWidth:X,shortfall:l-a,tooNarrow:p}}}});Ext.Container.LAYOUTS.hbox=Ext.layout.HBoxLayout;Ext.layout.VBoxLayout=Ext.extend(Ext.layout.BoxLayout,{align:"left",type:"vbox",calculateChildBoxes:function(o,b){var E=o.length,R=this.padding,C=R.top,V=R.left,x=C+R.bottom,O=V+R.right,a=b.width-this.scrollOffset,c=b.height,K=Math.max(0,a-O),P=this.pack=="start",X=this.pack=="center",z=this.pack=="end",k=0,u=0,U=0,L=0,m=0,G=[],h,I,N,W,t,g,T,H,S,w,n,d,r;for(T=0;T<E;T++){h=o[T];N=h.height;I=h.width;g=!h.hasLayout&&typeof h.doLayout=="function";if(typeof N!="number"){if(h.flex&&!N){U+=h.flex}else{if(!N&&g){h.doLayout()}W=h.getSize();I=W.width;N=W.height}}t=h.margins;n=t.top+t.bottom;k+=n+(N||0);L+=n+(h.flex?h.minHeight||0:N);m+=n+(h.minHeight||N||0);if(typeof I!="number"){if(g){h.doLayout()}I=h.getWidth()}u=Math.max(u,I+t.left+t.right);G.push({component:h,height:N||undefined,width:I||undefined})}var M=L-c,l=m>c;var q=Math.max(0,(c-k-x));if(l){for(T=0,r=E;T<r;T++){G[T].height=o[T].minHeight||o[T].height||G[T].height}}else{if(M>0){var J=[];for(var D=0,r=E;D<r;D++){var A=o[D],s=A.minHeight||0;if(A.flex){G[D].height=s}else{J.push({minHeight:s,available:G[D].height-s,index:D})}}J.sort(function(Y,i){return Y.available>i.available?1:-1});for(var T=0,r=J.length;T<r;T++){var F=J[T].index;if(F==undefined){continue}var A=o[F],j=G[F],v=j.height,s=A.minHeight,B=Math.max(s,v-Math.ceil(M/(r-T))),e=v-B;G[F].height=B;M-=e}}else{var Q=q,p=U;for(T=0;T<E;T++){h=o[T];H=G[T];t=h.margins;w=t.left+t.right;if(P&&h.flex&&!h.height){S=Math.ceil((h.flex/p)*Q);Q-=S;p-=h.flex;H.height=S;H.dirtySize=true}}}}if(X){C+=q/2}else{if(z){C+=q}}for(T=0;T<E;T++){h=o[T];H=G[T];t=h.margins;C+=t.top;w=t.left+t.right;H.left=V+t.left;H.top=C;switch(this.align){case"stretch":d=K-w;H.width=d.constrain(h.minWidth||0,h.maxWidth||1000000);H.dirtySize=true;break;case"stretchmax":d=u-w;H.width=d.constrain(h.minWidth||0,h.maxWidth||1000000);H.dirtySize=true;break;case"center":var y=K-H.width-w;if(y>0){H.left=V+w+(y/2)}}C+=H.height+t.bottom}return{boxes:G,meta:{maxWidth:u,nonFlexHeight:k,desiredHeight:L,minimumHeight:m,shortfall:L-c,tooNarrow:l}}}});Ext.Container.LAYOUTS.vbox=Ext.layout.VBoxLayout;Ext.layout.ToolbarLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"toolbar",triggerWidth:18,noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>',lastOverflow:false,tableHTML:['<table cellspacing="0" class="x-toolbar-ct">',"<tbody>","<tr>",'<td class="x-toolbar-left" align="{0}">','<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-left-row"></tr>',"</tbody>","</table>","</td>",'<td class="x-toolbar-right" align="right">','<table cellspacing="0" class="x-toolbar-right-ct">',"<tbody>","<tr>","<td>",'<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-right-row"></tr>',"</tbody>","</table>","</td>","<td>",'<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-extras-row"></tr>',"</tbody>","</table>","</td>","</tr>","</tbody>","</table>","</td>","</tr>","</tbody>","</table>"].join(""),onLayout:function(e,j){if(!this.leftTr){var h=e.buttonAlign=="center"?"center":"left";j.addClass("x-toolbar-layout-ct");j.insertHtml("beforeEnd",String.format(this.tableHTML,h));this.leftTr=j.child("tr.x-toolbar-left-row",true);this.rightTr=j.child("tr.x-toolbar-right-row",true);this.extrasTr=j.child("tr.x-toolbar-extras-row",true);if(this.hiddenItem==undefined){this.hiddenItems=[]}}var k=e.buttonAlign=="right"?this.rightTr:this.leftTr,l=e.items.items,d=0;for(var b=0,g=l.length,m;b<g;b++,d++){m=l[b];if(m.isFill){k=this.rightTr;d=-1}else{if(!m.rendered){m.render(this.insertCell(m,k,d));this.configureItem(m)}else{if(!m.xtbHidden&&!this.isValidParent(m,k.childNodes[d])){var a=this.insertCell(m,k,d);a.appendChild(m.getPositionEl().dom);m.container=Ext.get(a)}}}}this.cleanup(this.leftTr);this.cleanup(this.rightTr);this.cleanup(this.extrasTr);this.fitToSize(j)},cleanup:function(b){var e=b.childNodes,a,d;for(a=e.length-1;a>=0&&(d=e[a]);a--){if(!d.firstChild){b.removeChild(d)}}},insertCell:function(e,b,a){var d=document.createElement("td");d.className="x-toolbar-cell";b.insertBefore(d,b.childNodes[a]||null);return d},hideItem:function(a){this.hiddenItems.push(a);a.xtbHidden=true;a.xtbWidth=a.getPositionEl().dom.parentNode.offsetWidth;a.hide()},unhideItem:function(a){a.show();a.xtbHidden=false;this.hiddenItems.remove(a)},getItemWidth:function(a){return a.hidden?(a.xtbWidth||0):a.getPositionEl().dom.parentNode.offsetWidth},fitToSize:function(k){if(this.container.enableOverflow===false){return}var b=k.dom.clientWidth,j=k.dom.firstChild.offsetWidth,m=b-this.triggerWidth,a=this.lastWidth||0,c=this.hiddenItems,e=c.length!=0,n=b>=a;this.lastWidth=b;if(j>b||(e&&n)){var l=this.container.items.items,h=l.length,d=0,o;for(var g=0;g<h;g++){o=l[g];if(!o.isFill){d+=this.getItemWidth(o);if(d>m){if(!(o.hidden||o.xtbHidden)){this.hideItem(o)}}else{if(o.xtbHidden){this.unhideItem(o)}}}}}e=c.length!=0;if(e){this.initMore();if(!this.lastOverflow){this.container.fireEvent("overflowchange",this.container,true);this.lastOverflow=true}}else{if(this.more){this.clearMenu();this.more.destroy();delete this.more;if(this.lastOverflow){this.container.fireEvent("overflowchange",this.container,false);this.lastOverflow=false}}}},createMenuConfig:function(c,a){var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);Ext.apply(b,{text:c.overflowText||c.text,hideOnClick:a});if(d||c.enableToggle){Ext.apply(b,{group:d,checked:c.pressed,listeners:{checkchange:function(g,e){c.toggle(e)}}})}delete b.ownerCt;delete b.xtype;delete b.id;return b},addComponentToMenu:function(b,a){if(a instanceof Ext.Toolbar.Separator){b.add("-")}else{if(Ext.isFunction(a.isXType)){if(a.isXType("splitbutton")){b.add(this.createMenuConfig(a,true))}else{if(a.isXType("button")){b.add(this.createMenuConfig(a,!a.menu))}else{if(a.isXType("buttongroup")){a.items.each(function(c){this.addComponentToMenu(b,c)},this)}}}}}},clearMenu:function(){var a=this.moreMenu;if(a&&a.items){a.items.each(function(b){delete b.menu})}},beforeMoreShow:function(h){var b=this.container.items.items,a=b.length,g,e;var c=function(j,i){return j.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)};this.clearMenu();h.removeAll();for(var d=0;d<a;d++){g=b[d];if(g.xtbHidden){if(e&&(c(g,e)||c(e,g))){h.add("-")}this.addComponentToMenu(h,g);e=g}}if(h.items.length<1){h.add(this.noItemsMenuText)}},initMore:function(){if(!this.more){this.moreMenu=new Ext.menu.Menu({ownerCt:this.container,listeners:{beforeshow:this.beforeMoreShow,scope:this}});this.more=new Ext.Button({iconCls:"x-toolbar-more-icon",cls:"x-toolbar-more",menu:this.moreMenu,ownerCt:this.container});var a=this.insertCell(this.more,this.extrasTr,100);this.more.render(a)}},destroy:function(){Ext.destroy(this.more,this.moreMenu);delete this.leftTr;delete this.rightTr;delete this.extrasTr;Ext.layout.ToolbarLayout.superclass.destroy.call(this)}});Ext.Container.LAYOUTS.toolbar=Ext.layout.ToolbarLayout;Ext.layout.MenuLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,type:"menu",setContainer:function(a){this.monitorResize=!a.floating;a.on("autosize",this.doAutoSize,this);Ext.layout.MenuLayout.superclass.setContainer.call(this,a)},renderItem:function(g,b,e){if(!this.itemTpl){this.itemTpl=Ext.layout.MenuLayout.prototype.itemTpl=new Ext.XTemplate('<li id="{itemId}" class="{itemCls}">','<tpl if="needsIcon">','<img alt="{altText}" src="{icon}" class="{iconCls}"/>',"</tpl>","</li>")}if(g&&!g.rendered){if(Ext.isNumber(b)){b=e.dom.childNodes[b]}var d=this.getItemArgs(g);g.render(g.positionEl=b?this.itemTpl.insertBefore(b,d,true):this.itemTpl.append(e,d,true));g.positionEl.menuItemId=g.getItemId();if(!d.isMenuItem&&d.needsIcon){g.positionEl.addClass("x-menu-list-item-indent")}this.configureItem(g)}else{if(g&&!this.isValidParent(g,e)){if(Ext.isNumber(b)){b=e.dom.childNodes[b]}e.dom.insertBefore(g.getActionEl().dom,b||null)}}},getItemArgs:function(d){var a=d instanceof Ext.menu.Item,b=!(a||d instanceof Ext.menu.Separator);return{isMenuItem:a,needsIcon:b&&(d.icon||d.iconCls),icon:d.icon||Ext.BLANK_IMAGE_URL,iconCls:"x-menu-item-icon "+(d.iconCls||""),itemId:"x-menu-el-"+d.id,itemCls:"x-menu-list-item ",altText:d.altText||""}},isValidParent:function(b,a){return b.el.up("li.x-menu-list-item",5).dom.parentNode===(a.dom||a)},onLayout:function(a,b){Ext.layout.MenuLayout.superclass.onLayout.call(this,a,b);this.doAutoSize()},doAutoSize:function(){var c=this.container,a=c.width;if(c.floating){if(a){c.setWidth(a)}else{if(Ext.isIE){c.setWidth(Ext.isStrict&&(Ext.isIE7||Ext.isIE8||Ext.isIE9)?"auto":c.minWidth);var d=c.getEl(),b=d.dom.offsetWidth;c.setWidth(c.getLayoutTarget().getWidth()+d.getFrameWidth("lr"))}}}}});Ext.Container.LAYOUTS.menu=Ext.layout.MenuLayout;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",preventBodyReset:false,padding:undefined,resizeEvent:"bodyresize",toolTarget:"header",collapseEl:"bwrap",slideAnchor:"t",disabledClass:"",deferHeight:true,expandDefaults:{duration:0.25},collapseDefaults:{duration:0.25},initComponent:function(){Ext.Panel.superclass.initComponent.call(this);this.addEvents("bodyresize","titlechange","iconchange","collapse","expand","beforecollapse","beforeexpand","beforeclose","close","activate","deactivate");if(this.unstyled){this.baseCls="x-plain"}this.toolbars=[];if(this.tbar){this.elements+=",tbar";this.topToolbar=this.createToolbar(this.tbar);this.tbar=null}if(this.bbar){this.elements+=",bbar";this.bottomToolbar=this.createToolbar(this.bbar);this.bbar=null}if(this.header===true){this.elements+=",header";this.header=null}else{if(this.headerCfg||(this.title&&this.header!==false)){this.elements+=",header"}}if(this.footerCfg||this.footer===true){this.elements+=",footer";this.footer=null}if(this.buttons){this.fbar=this.buttons;this.buttons=null}if(this.fbar){this.createFbar(this.fbar)}if(this.autoLoad){this.on("render",this.doAutoLoad,this,{delay:10})}},createFbar:function(b){var a=this.minButtonWidth;this.elements+=",footer";this.fbar=this.createToolbar(b,{buttonAlign:this.buttonAlign,toolbarCls:"x-panel-fbar",enableOverflow:false,defaults:function(d){return{minWidth:d.minWidth||a}}});this.fbar.items.each(function(d){d.minWidth=d.minWidth||this.minButtonWidth},this);this.buttons=this.fbar.items.items},createToolbar:function(b,c){var a;if(Ext.isArray(b)){b={items:b}}a=b.events?Ext.apply(b,c):this.createComponent(Ext.apply({},b,c),"toolbar");this.toolbars.push(a);return a},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))}if(this[a+"CssClass"]){this[a].addClass(this[a+"CssClass"])}if(this[a+"Style"]){this[a].applyStyles(this[a+"Style"])}}},onRender:function(g,e){Ext.Panel.superclass.onRender.call(this,g,e);this.createClasses();var a=this.el,h=a.dom,k,i;if(this.collapsible&&!this.hideCollapseTool){this.tools=this.tools?this.tools.slice(0):[];this.tools[this.collapseFirst?"unshift":"push"]({id:"toggle",handler:this.toggleCollapse,scope:this})}if(this.tools){i=this.tools;this.elements+=(this.header!==false)?",header":""}this.tools={};a.addClass(this.baseCls);if(h.firstChild){this.header=a.down("."+this.headerCls);this.bwrap=a.down("."+this.bwrapCls);var j=this.bwrap?this.bwrap:a;this.tbar=j.down("."+this.tbarCls);this.body=j.down("."+this.bodyCls);this.bbar=j.down("."+this.bbarCls);this.footer=j.down("."+this.footerCls);this.fromMarkup=true}if(this.preventBodyReset===true){a.addClass("x-panel-reset")}if(this.cls){a.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",h.firstChild.firstChild.firstChild);this.createElement("bwrap",h);k=this.bwrap.dom;var c=h.childNodes[1],b=h.childNodes[2];k.appendChild(c);k.appendChild(b);var l=k.firstChild.firstChild.firstChild;this.createElement("tbar",l);this.createElement("body",l);this.createElement("bbar",l);this.createElement("footer",k.lastChild.firstChild.firstChild);if(!this.footer){this.bwrap.dom.lastChild.className+=" x-panel-nofooter"}this.ft=Ext.get(this.bwrap.dom.lastChild);this.mc=Ext.get(l)}else{this.createElement("header",h);this.createElement("bwrap",h);k=this.bwrap.dom;this.createElement("tbar",k);this.createElement("body",k);this.createElement("bbar",k);this.createElement("footer",k);if(!this.header){this.body.addClass(this.bodyCls+"-noheader");if(this.tbar){this.tbar.addClass(this.tbarCls+"-noheader")}}}if(Ext.isDefined(this.padding)){this.body.setStyle("padding",this.body.addUnits(this.padding))}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")}this.bwrap.enableDisplayMode("block");if(this.header){this.header.unselectable();if(this.headerAsText){this.header.dom.innerHTML='<span class="'+this.headerTextCls+'">'+this.header.dom.innerHTML+"</span>";if(this.iconCls){this.setIconClass(this.iconCls)}}}if(this.floating){this.makeFloating(this.floating)}if(this.collapsible&&this.titleCollapse&&this.header){this.mon(this.header,"click",this.toggleCollapse,this);this.header.setStyle("cursor","pointer")}if(i){this.addTool.apply(this,i)}if(this.fbar){this.footer.addClass("x-panel-btns");this.fbar.ownerCt=this;this.fbar.render(this.footer);this.footer.createChild({cls:"x-clear"})}if(this.tbar&&this.topToolbar){this.topToolbar.ownerCt=this;this.topToolbar.render(this.tbar)}if(this.bbar&&this.bottomToolbar){this.bottomToolbar.ownerCt=this;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 e=this.header,c=e.child("img.x-panel-inline-icon");if(c){Ext.fly(c).replaceClass(a,this.iconCls)}else{var d=e.child("span."+this.headerTextCls);if(d){Ext.DomHelper.insertBefore(d.dom,{tag:"img",alt:"",src:Ext.BLANK_IMAGE_URL,cls:"x-panel-inline-icon "+this.iconCls})}}}}this.fireEvent("iconchange",this,b,a)},makeFloating:function(a){this.floating=true;this.el=new Ext.Layer(Ext.apply({},a,{shadow:Ext.isDefined(this.shadow)?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},getFooterToolbar:function(){return this.fbar},addButton:function(a,c,b){if(!this.fbar){this.createFbar([])}if(c){if(Ext.isString(a)){a={text:a}}a=Ext.apply({handler:c,scope:b},a)}return this.fbar.add(a)},addTool:function(){if(!this.rendered){if(!this.tools){this.tools=[]}Ext.each(arguments,function(a){this.tools.push(a)},this);return}if(!this[this.toolTarget]){return}if(!this.toolTemplate){var h=new Ext.Template('<div class="x-tool x-tool-{id}">&#160;</div>');h.disableFormats=true;h.compile();Ext.Panel.prototype.toolTemplate=h}for(var g=0,d=arguments,c=d.length;g<c;g++){var b=d[g];if(!this.tools[b.id]){var j="x-tool-"+b.id+"-over";var e=this.toolTemplate.insertFirst(this[this.toolTarget],b,true);this.tools[b.id]=e;e.enableDisplayMode("block");this.mon(e,"click",this.createToolHandler(e,b,j,this));if(b.on){this.mon(e,b.on)}if(b.hidden){e.hide()}if(b.qtip){if(Ext.isObject(b.qtip)){Ext.QuickTips.register(Ext.apply({target:e.id},b.qtip))}else{e.dom.qtip=b.qtip}}e.addClassOnOver(j)}}},onLayout:function(b,a){Ext.Panel.superclass.onLayout.apply(this,arguments);if(this.hasLayout&&this.toolbars.length>0){Ext.each(this.toolbars,function(c){c.doLayout(undefined,a)});this.syncHeight()}},syncHeight:function(){var b=this.toolbarHeight,c=this.body,a=this.lastSize.height,d;if(this.autoHeight||!Ext.isDefined(a)||a=="auto"){return}if(b!=this.getToolbarHeight()){b=Math.max(0,a-this.getFrameHeight());c.setHeight(b);d=c.getSize();this.toolbarHeight=this.getToolbarHeight();this.onBodyResize(d.width,d.height)}},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(g){c.removeClass(d);if(a.stopEvent!==false){g.stopEvent()}if(a.handler){a.handler.call(a.scope||c,g,c,b,a)}}},afterRender:function(){if(this.floating&&!this.hidden){this.el.show()}if(this.title){this.setTitle(this.title)}Ext.Panel.superclass.afterRender.call(this);if(this.collapsed){this.collapsed=false;this.collapse(false)}this.initEvents()},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()}if(this.toolbars.length>0){Ext.each(this.toolbars,function(a){a.doLayout();a.on({scope:this,afterlayout:this.syncHeight,remove:this.syncHeight})},this);this.syncHeight()}},initDraggable:function(){this.dd=new Ext.Panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)},beforeEffect:function(a){if(this.floating){this.el.beforeAction()}if(a!==false){this.el.addClass("x-panel-animated")}},afterEffect:function(a){this.syncShadow();this.el.removeClass("x-panel-animated")},createEffect:function(c,b,d){var e={scope:d,block:true};if(c===true){e.callback=b;return e}else{if(!c.callback){e.callback=b}else{e.callback=function(){b.call(d);Ext.callback(c.callback,c.scope)}}}return Ext.applyIf(e,c)},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(a);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.hideMode);this.afterCollapse(false)}},afterCollapse:function(a){this.collapsed=true;this.el.addClass(this.collapsedCls);if(a!==false){this[this.collapseEl].hide(this.hideMode)}this.afterEffect(a);this.cascade(function(b){if(b.lastSize){b.lastSize={width:undefined,height:undefined}}});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(a);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.hideMode);this.afterExpand(false)}},afterExpand:function(a){this.collapsed=false;if(a!==false){this[this.collapseEl].show(this.hideMode)}this.afterEffect(a);if(this.deferLayout){delete this.deferLayout;this.doLayout(true)}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(g,d,c,e){var a=g,b=d;if(Ext.isDefined(a)||Ext.isDefined(b)){if(!this.collapsed){if(Ext.isNumber(a)){this.body.setWidth(a=this.adjustBodyWidth(a-this.getFrameWidth()))}else{if(a=="auto"){a=this.body.setWidth("auto").dom.offsetWidth}else{a=this.body.dom.offsetWidth}}if(this.tbar){this.tbar.setWidth(a);if(this.topToolbar){this.topToolbar.setSize(a)}}if(this.bbar){this.bbar.setWidth(a);if(this.bottomToolbar){this.bottomToolbar.setSize(a);if(Ext.isIE){this.bbar.setStyle("position","static");this.bbar.setStyle("position","")}}}if(this.footer){this.footer.setWidth(a);if(this.fbar){this.fbar.setSize(Ext.isIE?(a-this.footer.getFrameWidth("lr")):"auto")}}if(Ext.isNumber(b)){b=Math.max(0,b-this.getFrameHeight());this.body.setHeight(b)}else{if(b=="auto"){this.body.setHeight(b)}}if(this.disabled&&this.el._mask){this.el._mask.setSize(this.el.dom.clientWidth,this.el.getHeight())}}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,{single:true})}}this.onBodyResize(a,b)}this.syncShadow();Ext.Panel.superclass.onResize.call(this,g,d,c,e)},onBodyResize:function(a,b){this.fireEvent("bodyresize",this,a,b)},getToolbarHeight:function(){var a=0;if(this.rendered){Ext.each(this.toolbars,function(b){a+=b.getHeight()},this)}return a},adjustBodyHeight:function(a){return a},adjustBodyWidth:function(a){return a},onPosition:function(){this.syncShadow()},getFrameWidth:function(){var b=this.el.getFrameWidth("lr")+this.bwrap.getFrameWidth("lr");if(this.frame){var a=this.bwrap.dom.firstChild;b+=(Ext.fly(a).getFrameWidth("l")+Ext.fly(a.firstChild).getFrameWidth("r"));b+=this.mc.getFrameWidth("lr")}return b},getFrameHeight:function(){var a=this.el.getFrameWidth("tb")+this.bwrap.getFrameWidth("tb");a+=(this.tbar?this.tbar.getHeight():0)+(this.bbar?this.bbar.getHeight():0);if(this.frame){a+=this.el.dom.firstChild.offsetHeight+this.ft.dom.offsetHeight+this.mc.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.body.getHeight()},syncShadow:function(){if(this.floating){this.el.sync(true)}},getLayoutTarget:function(){return this.body},getContentTarget: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.Panel.superclass.beforeDestroy.call(this);if(this.header){this.header.removeAllListeners()}if(this.tools){for(var a in this.tools){Ext.destroy(this.tools[a])}}if(this.toolbars.length>0){Ext.each(this.toolbars,function(b){b.un("afterlayout",this.syncHeight,this);b.un("remove",this.syncHeight,this)},this)}if(Ext.isArray(this.buttons)){while(this.buttons.length){Ext.destroy(this.buttons[0])}}if(this.rendered){Ext.destroy(this.ft,this.header,this.footer,this.tbar,this.bbar,this.body,this.mc,this.bwrap,this.dd);if(this.fbar){Ext.destroy(this.fbar,this.fbar.el)}}Ext.destroy(this.toolbars)},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(){var a=this.body.getUpdater();if(this.renderer){a.setRenderer(this.renderer)}a.update(Ext.isObject(this.autoLoad)?this.autoLoad:{url:this.autoLoad})},getTool:function(a){return this.tools[a]}});Ext.reg("panel",Ext.Panel);Ext.Editor=function(b,a){if(b.field){this.field=Ext.create(b.field,"textfield");a=Ext.apply({},b);delete a.field}else{this.field=b}Ext.Editor.superclass.constructor.call(this,a)};Ext.extend(Ext.Editor,Ext.Component,{allowBlur:true,value:"",alignment:"c-c?",offsets:[0,0],shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:true,cancelOnEsc:true,updateEl:false,initComponent:function(){Ext.Editor.superclass.initComponent.call(this);this.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onRender:function(b,a){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:b,shim:this.shim,shadowOffset:this.shadowOffset||4,id:this.id,constrain:this.constrain});if(this.zIndex){this.el.setZIndex(this.zIndex)}this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!="title"){this.field.msgTarget="qtip"}this.field.inEditor=true;this.mon(this.field,{scope:this,blur:this.onBlur,specialkey:this.onSpecialKey});if(this.field.grow){this.mon(this.field,"autosize",this.el.sync,this.el,{delay:1})}this.field.render(this.el).show();this.field.getEl().dom.name="";if(this.swallowKeys){this.field.el.swallowEvent(["keypress","keydown"])}},onSpecialKey:function(g,d){var b=d.getKey(),a=this.completeOnEnter&&b==d.ENTER,c=this.cancelOnEsc&&b==d.ESC;if(a||c){d.stopEvent();if(a){this.completeEdit()}else{this.cancelEdit()}if(g.triggerBlur){g.triggerBlur()}}this.fireEvent("specialkey",g,d)},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){this.startValue=a;this.field.reset();this.field.setValue(a);this.realign(true);this.editing=true;this.show()}},doAutoSize:function(){if(this.autoSize){var b=this.boundEl.getSize(),a=this.field.getSize();switch(this.autoSize){case"width":this.setSize(b.width,a.height);break;case"height":this.setSize(a.width,b.height);break;case"none":this.setSize(a.width,a.height);break;default:this.setSize(b.width,b.height)}}},setSize:function(a,b){delete this.field.lastSize;this.field.setSize(a,b);if(this.el){if(Ext.isGecko2||Ext.isOpera||(Ext.isIE7&&Ext.isStrict)){this.el.setSize(a,b)}this.el.sync()}},realign:function(a){if(a===true){this.doAutoSize()}this.el.alignTo(this.boundEl,this.alignment,this.offsets)},completeEdit:function(a){if(!this.editing){return}if(this.field.assertValue){this.field.assertValue()}var b=this.getValue();if(!this.field.isValid()){if(this.revertInvalid!==false){this.cancelEdit(a)}return}if(String(b)===String(this.startValue)&&this.ignoreNoChange){this.hideEdit(a);return}if(this.fireEvent("beforecomplete",this,b,this.startValue)!==false){b=this.getValue();if(this.updateEl&&this.boundEl){this.boundEl.update(b)}this.hideEdit(a);this.fireEvent("complete",this,b,this.startValue)}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide()}this.field.show().focus(false,true);this.fireEvent("startedit",this.boundEl,this.startValue)},cancelEdit:function(a){if(this.editing){var b=this.getValue();this.setValue(this.startValue);this.hideEdit(a);this.fireEvent("canceledit",this,b,this.startValue)}},hideEdit:function(a){if(a!==true){this.editing=false;this.hide()}},onBlur:function(){if(this.allowBlur===true&&this.editing&&this.selectSameEditor!==true){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(){Ext.destroyMembers(this,"field");delete this.parentEl;delete this.boundEl}});Ext.reg("editor",Ext.Editor);Ext.ColorPalette=Ext.extend(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"],initComponent:function(){Ext.ColorPalette.superclass.initComponent.call(this);this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope,true)}},onRender:function(b,a){this.autoEl={tag:"div",cls:this.itemCls};Ext.ColorPalette.superclass.onRender.call(this,b,a);var c=this.tpl||new Ext.XTemplate('<tpl for="."><a href="#" class="color-{.}" hidefocus="on"><em><span style="background:#{.}" unselectable="on">&#160;</span></em></a></tpl>');c.overwrite(this.el,this.colors);this.mon(this.el,this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!="click"){this.mon(this.el,"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,true)}},handleClick:function(b,a){b.preventDefault();if(!this.disabled){var d=a.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(d.toUpperCase())}},select:function(b,a){b=b.replace("#","");if(b!=this.value||this.allowReselect){var c=this.el;if(this.value){c.child("a.color-"+this.value).removeClass("x-color-palette-sel")}c.child("a.color-"+b).addClass("x-color-palette-sel");this.value=b;if(a!==true){this.fireEvent("select",this,b)}}}});Ext.reg("colorpalette",Ext.ColorPalette);Ext.DatePicker=Ext.extend(Ext.BoxComponent,{todayText:"Today",okText:"&#160;OK&#160;",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDaysText:"Disabled",disabledDatesText:"Disabled",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,showToday:true,focusOnSelect:true,initHour:12,initComponent:function(){Ext.DatePicker.superclass.initComponent.call(this);this.value=this.value?this.value.clearTime(true):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 b=this.disabledDates,a=b.length-1,c="(?:";Ext.each(b,function(g,e){c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];if(e!=a){c+="|"}},this);this.disabledDatesRE=new RegExp(c+")")}},setDisabledDates:function(a){if(Ext.isArray(a)){this.disabledDates=a;this.disabledDatesRE=null}else{this.disabledDatesRE=a}this.initDisabledDays();this.update(this.value,true)},setDisabledDays:function(a){this.disabledDays=a;this.update(this.value,true)},setMinDate:function(a){this.minDate=a;this.update(this.value,true)},setMaxDate:function(a){this.maxDate=a;this.update(this.value,true)},setValue:function(a){this.value=a.clearTime(true);this.update(this.value)},getValue:function(){return this.value},focus:function(){this.update(this.activeDate)},onEnable:function(a){Ext.DatePicker.superclass.onEnable.call(this);this.doDisabled(false);this.update(a?this.value:this.activeDate);if(Ext.isIE){this.el.repaint()}},onDisable:function(){Ext.DatePicker.superclass.onDisable.call(this);this.doDisabled(true);if(Ext.isIE&&!Ext.isIE8){Ext.each([].concat(this.textNodes,this.el.query("th span")),function(a){Ext.fly(a).repaint()})}},doDisabled:function(a){this.keyNav.setDisabled(a);this.prevRepeater.setDisabled(a);this.nextRepeater.setDisabled(a);if(this.showToday){this.todayKeyListener.setDisabled(a);this.todayBtn.setDisabled(a)}},onRender:function(e,b){var a=['<table cellspacing="0">','<tr><td class="x-date-left"><a href="#" title="',this.prevText,'">&#160;</a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="',this.nextText,'">&#160;</a></td></tr>','<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'],c=this.dayNames,h;for(h=0;h<7;h++){var k=this.startDay+h;if(k>6){k=k-7}a.push("<th><span>",c[k].substr(0,1),"</span></th>")}a[a.length]="</tr></thead><tbody><tr>";for(h=0;h<42;h++){if(h%7===0&&h!==0){a[a.length]="</tr><tr>"}a[a.length]='<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>'}a.push("</tr></tbody></table></td></tr>",this.showToday?'<tr><td colspan="3" class="x-date-bottom" align="center"></td></tr>':"",'</table><div class="x-date-mp"></div>');var j=document.createElement("div");j.className="x-date-picker";j.innerHTML=a.join("");e.dom.insertBefore(j,b);this.el=Ext.get(j);this.eventEl=Ext.get(j.firstChild);this.prevRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});this.nextRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.monthPicker=this.el.down("div.x-date-mp");this.monthPicker.enableDisplayMode("block");this.keyNav=new Ext.KeyNav(this.eventEl,{left:function(d){if(d.ctrlKey){this.showPrevMonth()}else{this.update(this.activeDate.add("d",-1))}},right:function(d){if(d.ctrlKey){this.showNextMonth()}else{this.update(this.activeDate.add("d",1))}},up:function(d){if(d.ctrlKey){this.showNextYear()}else{this.update(this.activeDate.add("d",-7))}},down:function(d){if(d.ctrlKey){this.showPrevYear()}else{this.update(this.activeDate.add("d",7))}},pageUp:function(d){this.showNextMonth()},pageDown:function(d){this.showPrevMonth()},enter:function(d){d.stopPropagation();return true},scope: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:"&#160;",tooltip:this.monthYearText,renderTo:this.el.child("td.x-date-middle",true)});this.mbtn.el.child("em").addClass("x-btn-arrow");if(this.showToday){this.todayKeyListener=this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);var g=(new Date()).dateFormat(this.format);this.todayBtn=new Ext.Button({renderTo:this.el.child("td.x-date-bottom",true),text:String.format(this.todayText,g),tooltip:String.format(this.todayTip,g),handler:this.selectToday,scope:this})}this.mon(this.eventEl,"mousewheel",this.handleMouseWheel,this);this.mon(this.eventEl,"click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.mon(this.mbtn,"click",this.showMonthPicker,this);this.onEnable(true)},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var a=['<table border="0" cellspacing="0">'];for(var b=0;b<6;b++){a.push('<tr><td class="x-date-mp-month"><a href="#">',Date.getShortMonthName(b),"</a></td>",'<td class="x-date-mp-month x-date-mp-sep"><a href="#">',Date.getShortMonthName(b+6),"</a></td>",b===0?'<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td></tr>':'<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>')}a.push('<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">',this.okText,'</button><button type="button" class="x-date-mp-cancel">',this.cancelText,"</button></td></tr>","</table>");this.monthPicker.update(a.join(""));this.mon(this.monthPicker,"click",this.onMonthClick,this);this.mon(this.monthPicker,"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(){if(!this.disabled){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(g,b){g.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")){var h=new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate());if(h.getMonth()!=this.mpSelMonth){h=new Date(this.mpSelYear,this.mpSelMonth,1).getLastDateOfMonth()}this.update(h);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){a.stopEvent();if(!this.disabled){var b=a.getWheelDelta();if(b>0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(b,a){b.stopEvent();if(!this.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasClass("x-date-disabled")){this.cancelFocus=this.focusOnSelect===false;this.setValue(new Date(a.dateValue));delete this.cancelFocus;this.fireEvent("select",this,this.value)}},selectToday:function(){if(this.todayBtn&&!this.todayBtn.disabled){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value)}},update:function(G,A){if(this.rendered){var a=this.activeDate,p=this.isVisible();this.activeDate=G;if(!A&&a&&this.el){var o=G.getTime();if(a.getMonth()==G.getMonth()&&a.getFullYear()==G.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(d){if(d.dom.firstChild.dateValue==o){d.addClass("x-date-selected");if(p&&!this.cancelFocus){Ext.fly(d.dom.firstChild).focus(50)}return false}},this);return}}var k=G.getDaysInMonth(),q=G.getFirstDateOfMonth(),g=q.getDay()-this.startDay;if(g<0){g+=7}k+=g;var B=G.add("mo",-1),h=B.getDaysInMonth()-g,e=this.cells.elements,r=this.textNodes,D=(new Date(B.getFullYear(),B.getMonth(),h,this.initHour)),C=new Date().clearTime().getTime(),v=G.clearTime(true).getTime(),u=this.minDate?this.minDate.clearTime(true):Number.NEGATIVE_INFINITY,y=this.maxDate?this.maxDate.clearTime(true):Number.POSITIVE_INFINITY,F=this.disabledDatesRE,s=this.disabledDatesText,I=this.disabledDays?this.disabledDays.join(""):false,E=this.disabledDaysText,z=this.format;if(this.showToday){var m=new Date().clearTime(),c=(m<u||m>y||(F&&z&&F.test(m.dateFormat(z)))||(I&&I.indexOf(m.getDay())!=-1));if(!this.disabled){this.todayBtn.setDisabled(c);this.todayKeyListener[c?"disable":"enable"]()}}var l=function(J,d){d.title="";var i=D.clearTime(true).getTime();d.firstChild.dateValue=i;if(i==C){d.className+=" x-date-today";d.title=J.todayText}if(i==v){d.className+=" x-date-selected";if(p){Ext.fly(d.firstChild).focus(50)}}if(i<u){d.className=" x-date-disabled";d.title=J.minText;return}if(i>y){d.className=" x-date-disabled";d.title=J.maxText;return}if(I){if(I.indexOf(D.getDay())!=-1){d.title=E;d.className=" x-date-disabled"}}if(F&&z){var w=D.dateFormat(z);if(F.test(w)){d.title=s.replace("%0",w);d.className=" x-date-disabled"}}};var x=0;for(;x<g;x++){r[x].innerHTML=(++h);D.setDate(D.getDate()+1);e[x].className="x-date-prevday";l(this,e[x])}for(;x<k;x++){var b=x-g+1;r[x].innerHTML=(b);D.setDate(D.getDate()+1);e[x].className="x-date-active";l(this,e[x])}var H=0;for(;x<42;x++){r[x].innerHTML=(++H);D.setDate(D.getDate()+1);e[x].className="x-date-nextday";l(this,e[x])}this.mbtn.setText(this.monthNames[G.getMonth()]+" "+G.getFullYear());if(!this.internalRender){var j=this.el.dom.firstChild,n=j.offsetWidth;this.el.setWidth(n+this.el.getBorderWidth("lr"));Ext.fly(j).setWidth(n);this.internalRender=true;if(Ext.isOpera&&!this.secondPass){j.rows[0].cells[1].style.width=(n-(j.rows[0].cells[0].offsetWidth+j.rows[0].cells[2].offsetWidth))+"px";this.secondPass=true;this.update.defer(10,this,[G])}}}},beforeDestroy:function(){if(this.rendered){Ext.destroy(this.keyNav,this.monthPicker,this.eventEl,this.mbtn,this.nextRepeater,this.prevRepeater,this.cells.el,this.todayBtn);delete this.textNodes;delete this.cells.elements}}});Ext.reg("datepicker",Ext.DatePicker);Ext.LoadMask=function(c,b){this.el=Ext.get(c);Ext.apply(this,b);if(this.store){this.store.on({scope:this,beforeload:this.onBeforeLoad,load:this.onLoad,exception:this.onLoad});this.removeMask=Ext.value(this.removeMask,false)}else{var a=this.el.getUpdater();a.showLoadIndicator=false;a.on({scope:this,beforeupdate:this.onBeforeLoad,update:this.onLoad,failure:this.onLoad});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("exception",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.slider.Thumb=Ext.extend(Object,{dragging:false,constructor:function(a){Ext.apply(this,a||{},{cls:"x-slider-thumb",constrain:false});Ext.slider.Thumb.superclass.constructor.call(this,a);if(this.slider.vertical){Ext.apply(this,Ext.slider.Thumb.Vertical)}},render:function(){this.el=this.slider.innerEl.insertFirst({cls:this.cls});this.initEvents()},enable:function(){this.disabled=false;this.el.removeClass(this.slider.disabledClass)},disable:function(){this.disabled=true;this.el.addClass(this.slider.disabledClass)},initEvents:function(){var a=this.el;a.addClassOnOver("x-slider-thumb-over");this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeDragStart.createDelegate(this),onStart:this.onDragStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onDragEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(a)},onBeforeDragStart:function(a){if(this.disabled){return false}else{this.slider.promoteThumb(this);return true}},onDragStart:function(a){this.el.addClass("x-slider-thumb-drag");this.dragging=true;this.dragStartValue=this.value;this.slider.fireEvent("dragstart",this.slider,a,this)},onDrag:function(g){var c=this.slider,b=this.index,d=this.getNewValue();if(this.constrain){var a=c.thumbs[b+1],h=c.thumbs[b-1];if(h!=undefined&&d<=h.value){d=h.value}if(a!=undefined&&d>=a.value){d=a.value}}c.setValue(b,d,false);c.fireEvent("drag",c,g,this)},getNewValue:function(){var a=this.slider,b=a.innerEl.translatePoints(this.tracker.getXY());return Ext.util.Format.round(a.reverseValue(b.left),a.decimalPrecision)},onDragEnd:function(c){var a=this.slider,b=this.value;this.el.removeClass("x-slider-thumb-drag");this.dragging=false;a.fireEvent("dragend",a,c);if(this.dragStartValue!=b){a.fireEvent("changecomplete",a,b,this)}},destroy:function(){Ext.destroyMembers(this,"tracker","el")}});Ext.slider.MultiSlider=Ext.extend(Ext.BoxComponent,{vertical:false,minValue:0,maxValue:100,decimalPrecision:0,keyIncrement:1,increment:0,clickRange:[5,15],clickToChange:true,animate:true,constrainThumbs:true,topThumbZIndex:10000,initComponent:function(){if(!Ext.isDefined(this.value)){this.value=this.minValue}this.thumbs=[];Ext.slider.MultiSlider.superclass.initComponent.call(this);this.keyIncrement=Math.max(this.increment,this.keyIncrement);this.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");if(this.values==undefined||Ext.isEmpty(this.values)){this.values=[0]}var a=this.values;for(var b=0;b<a.length;b++){this.addThumb(a[b])}if(this.vertical){Ext.apply(this,Ext.slider.Vertical)}},addThumb:function(b){var a=new Ext.slider.Thumb({value:b,slider:this,index:this.thumbs.length,constrain:this.constrainThumbs});this.thumbs.push(a);if(this.rendered){a.render()}},promoteThumb:function(d){var a=this.thumbs,g,b;for(var e=0,c=a.length;e<c;e++){b=a[e];if(b==d){g=this.topThumbZIndex}else{g=""}b.el.setStyle("zIndex",g)}},onRender:function(){this.autoEl={cls:"x-slider "+(this.vertical?"x-slider-vert":"x-slider-horz"),cn:{cls:"x-slider-end",cn:{cls:"x-slider-inner",cn:[{tag:"a",cls:"x-slider-focus",href:"#",tabIndex:"-1",hidefocus:"on"}]}}};Ext.slider.MultiSlider.superclass.onRender.apply(this,arguments);this.endEl=this.el.first();this.innerEl=this.endEl.first();this.focusEl=this.innerEl.child(".x-slider-focus");for(var b=0;b<this.thumbs.length;b++){this.thumbs[b].render()}var a=this.innerEl.child(".x-slider-thumb");this.halfThumb=(this.vertical?a.getHeight():a.getWidth())/2;this.initEvents()},initEvents:function(){this.mon(this.el,{scope:this,mousedown:this.onMouseDown,keydown:this.onKeyDown});this.focusEl.swallowEvent("click",true)},onMouseDown:function(d){if(this.disabled){return}var c=false;for(var b=0;b<this.thumbs.length;b++){c=c||d.target==this.thumbs[b].el.dom}if(this.clickToChange&&!c){var a=this.innerEl.translatePoints(d.getXY());this.onClickChange(a)}this.focus()},onClickChange:function(c){if(c.top>this.clickRange[0]&&c.top<this.clickRange[1]){var a=this.getNearest(c,"left"),b=a.index;this.setValue(b,Ext.util.Format.round(this.reverseValue(c.left),this.decimalPrecision),undefined,true)}},getNearest:function(k,b){var m=b=="top"?this.innerEl.getHeight()-k[b]:k[b],g=this.reverseValue(m),j=(this.maxValue-this.minValue)+5,e=0,c=null;for(var d=0;d<this.thumbs.length;d++){var a=this.thumbs[d],l=a.value,h=Math.abs(l-g);if(Math.abs(h<=j)){c=a;e=d;j=h}}return c},onKeyDown:function(b){if(this.disabled||this.thumbs.length!==1){b.preventDefault();return}var a=b.getKey(),c;switch(a){case b.UP:case b.RIGHT:b.stopEvent();c=b.ctrlKey?this.maxValue:this.getValue(0)+this.keyIncrement;this.setValue(0,c,undefined,true);break;case b.DOWN:case b.LEFT:b.stopEvent();c=b.ctrlKey?this.minValue:this.getValue(0)-this.keyIncrement;this.setValue(0,c,undefined,true);break;default:b.preventDefault()}},doSnap:function(b){if(!(this.increment&&b)){return b}var d=b,c=this.increment,a=b%c;if(a!=0){d-=a;if(a*2>=c){d+=c}else{if(a*2<-c){d-=c}}}return d.constrain(this.minValue,this.maxValue)},afterRender:function(){Ext.slider.MultiSlider.superclass.afterRender.apply(this,arguments);for(var c=0;c<this.thumbs.length;c++){var b=this.thumbs[c];if(b.value!==undefined){var a=this.normalizeValue(b.value);if(a!==b.value){this.setValue(c,a,false)}else{this.moveThumb(c,this.translateValue(a),false)}}}},getRatio:function(){var a=this.innerEl.getWidth(),b=this.maxValue-this.minValue;return b==0?a:(a/b)},normalizeValue:function(a){a=this.doSnap(a);a=Ext.util.Format.round(a,this.decimalPrecision);a=a.constrain(this.minValue,this.maxValue);return a},setMinValue:function(e){this.minValue=e;var d=0,b=this.thumbs,a=b.length,c;for(;d<a;++d){c=b[d];c.value=c.value<e?e:c.value}this.syncThumb()},setMaxValue:function(e){this.maxValue=e;var d=0,b=this.thumbs,a=b.length,c;for(;d<a;++d){c=b[d];c.value=c.value>e?e:c.value}this.syncThumb()},setValue:function(d,c,b,g){var a=this.thumbs[d],e=a.el;c=this.normalizeValue(c);if(c!==a.value&&this.fireEvent("beforechange",this,c,a.value,a)!==false){a.value=c;if(this.rendered){this.moveThumb(d,this.translateValue(c),b!==false);this.fireEvent("change",this,c,a);if(g){this.fireEvent("changecomplete",this,c,a)}}}},translateValue:function(a){var b=this.getRatio();return(a*b)-(this.minValue*b)-this.halfThumb},reverseValue:function(b){var a=this.getRatio();return(b+(this.minValue*a))/a},moveThumb:function(d,c,b){var a=this.thumbs[d].el;if(!b||this.animate===false){a.setLeft(c)}else{a.shift({left:c,stopFx:true,duration:0.35})}},focus:function(){this.focusEl.focus(10)},onResize:function(c,e){var b=this.thumbs,a=b.length,d=0;for(;d<a;++d){b[d].el.stopFx()}if(Ext.isNumber(c)){this.innerEl.setWidth(c-(this.el.getPadding("l")+this.endEl.getPadding("r")))}this.syncThumb();Ext.slider.MultiSlider.superclass.onResize.apply(this,arguments)},onDisable:function(){Ext.slider.MultiSlider.superclass.onDisable.call(this);for(var b=0;b<this.thumbs.length;b++){var a=this.thumbs[b],c=a.el;a.disable();if(Ext.isIE){var d=c.getXY();c.hide();this.innerEl.addClass(this.disabledClass).dom.disabled=true;if(!this.thumbHolder){this.thumbHolder=this.endEl.createChild({cls:"x-slider-thumb "+this.disabledClass})}this.thumbHolder.show().setXY(d)}}},onEnable:function(){Ext.slider.MultiSlider.superclass.onEnable.call(this);for(var b=0;b<this.thumbs.length;b++){var a=this.thumbs[b],c=a.el;a.enable();if(Ext.isIE){this.innerEl.removeClass(this.disabledClass).dom.disabled=false;if(this.thumbHolder){this.thumbHolder.hide()}c.show();this.syncThumb()}}},syncThumb:function(){if(this.rendered){for(var a=0;a<this.thumbs.length;a++){this.moveThumb(a,this.translateValue(this.thumbs[a].value))}}},getValue:function(a){return this.thumbs[a].value},getValues:function(){var a=[];for(var b=0;b<this.thumbs.length;b++){a.push(this.thumbs[b].value)}return a},beforeDestroy:function(){var b=this.thumbs;for(var c=0,a=b.length;c<a;++c){b[c].destroy();b[c]=null}Ext.destroyMembers(this,"endEl","innerEl","focusEl","thumbHolder");Ext.slider.MultiSlider.superclass.beforeDestroy.call(this)}});Ext.reg("multislider",Ext.slider.MultiSlider);Ext.slider.SingleSlider=Ext.extend(Ext.slider.MultiSlider,{constructor:function(a){a=a||{};Ext.applyIf(a,{values:[a.value||0]});Ext.slider.SingleSlider.superclass.constructor.call(this,a)},getValue:function(){return Ext.slider.SingleSlider.superclass.getValue.call(this,0)},setValue:function(d,b){var c=Ext.toArray(arguments),a=c.length;if(a==1||(a<=3&&typeof arguments[1]!="number")){c.unshift(0)}return Ext.slider.SingleSlider.superclass.setValue.apply(this,c)},syncThumb:function(){return Ext.slider.SingleSlider.superclass.syncThumb.apply(this,[0].concat(arguments))},getNearest:function(){return this.thumbs[0]}});Ext.Slider=Ext.slider.SingleSlider;Ext.reg("slider",Ext.slider.SingleSlider);Ext.slider.Vertical={onResize:function(a,b){this.innerEl.setHeight(b-(this.el.getPadding("t")+this.endEl.getPadding("b")));this.syncThumb()},getRatio:function(){var b=this.innerEl.getHeight(),a=this.maxValue-this.minValue;return b/a},moveThumb:function(d,c,b){var a=this.thumbs[d],e=a.el;if(!b||this.animate===false){e.setBottom(c)}else{e.shift({bottom:c,stopFx:true,duration:0.35})}},onClickChange:function(c){if(c.left>this.clickRange[0]&&c.left<this.clickRange[1]){var a=this.getNearest(c,"top"),b=a.index,d=this.minValue+this.reverseValue(this.innerEl.getHeight()-c.top);this.setValue(b,Ext.util.Format.round(d,this.decimalPrecision),undefined,true)}}};Ext.slider.Thumb.Vertical={getNewValue:function(){var b=this.slider,c=b.innerEl,d=c.translatePoints(this.tracker.getXY()),a=c.getHeight()-d.top;return b.minValue+Ext.util.Format.round(a/b.getRatio(),b.decimalPrecision)}};Ext.ProgressBar=Ext.extend(Ext.BoxComponent,{baseCls:"x-progress",animate:false,waitTimer:null,initComponent:function(){Ext.ProgressBar.superclass.initComponent.call(this);this.addEvents("update")},onRender:function(d,a){var c=new Ext.Template('<div class="{cls}-wrap">','<div class="{cls}-inner">','<div class="{cls}-bar">','<div class="{cls}-text">',"<div>&#160;</div>","</div>","</div>",'<div class="{cls}-text {cls}-text-back">',"<div>&#160;</div>","</div>","</div>","</div>");this.el=a?c.insertBefore(a,{cls:this.baseCls},true):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)}this.progressBar.setHeight(b.offsetHeight)},afterRender:function(){Ext.ProgressBar.superclass.afterRender.call(this);if(this.value){this.updateProgress(this.value,this.text)}else{this.updateText(this.text)}},updateProgress:function(c,d,b){this.value=c||0;if(d){this.updateText(d)}if(this.rendered&&!this.isDestroyed){var a=Math.floor(c*this.el.dom.firstChild.offsetWidth);this.progressBar.setWidth(a,b===true||(b!==false&&this.animate));if(this.textTopEl){this.textTopEl.removeClass("x-hidden").setWidth(a)}}this.fireEvent("update",this,c,d);return this},wait:function(b){if(!this.waitTimer){var a=this;b=b||{};this.updateText(b.text);this.waitTimer=Ext.TaskMgr.start({run:function(c){var d=b.increment||10;c-=1;this.updateProgress(((((c+d)%d)+1)*(100/d))*0.01,null,b.animate)},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||"&#160;";if(this.rendered){this.textEl.update(this.text)}return this},syncProgressBar:function(){if(this.value){this.updateProgress(this.value,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)}this.syncProgressBar();return this},reset:function(a){this.updateProgress(0);if(this.textTopEl){this.textTopEl.addClass("x-hidden")}this.clearTimer();if(a===true){this.hide()}return this},clearTimer:function(){if(this.waitTimer){this.waitTimer.onStop=null;Ext.TaskMgr.stop(this.waitTimer);this.waitTimer=null}},onDestroy:function(){this.clearTimer();if(this.rendered){if(this.textEl.isComposite){this.textEl.clear()}Ext.destroyMembers(this,"textEl","progressBar","textTopEl")}Ext.ProgressBar.superclass.onDestroy.call(this)}});Ext.reg("progress",Ext.ProgressBar);(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},moveOnly:false,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(j,h,o){if(Ext.isNumber(h)){h={left:h,right:h,top:h,bottom:h}}h=h||this.defaultPadding;var l=Ext.get(this.getEl()).getBox(),d=Ext.get(j),n=d.getScroll(),k,e=d.dom;if(e==document.body){k={x:n.left,y:n.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()}}else{var m=d.getXY();k={x:m[0],y:m[1],width:e.clientWidth,height:e.clientHeight}}var i=l.y-k.y,g=l.x-k.x;this.resetConstraints();this.setXConstraint(g-(h.left||0),k.width-g-l.width-(h.right||0),this.xTickSize);this.setYConstraint(i-(h.top||0),k.height-i-l.height-(h.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,g,d){if(!c&&0!==c){this.padding=[e,e,e,e]}else{if(!g&&0!==g){this.padding=[e,c,e,c]}else{this.padding=[e,c,g,d]}}},setInitPosition:function(g,e){var h=this.getEl();if(!this.DDM.verifyEl(h)){return}var d=g||0;var c=e||0;var i=b.getXY(h);this.initPageX=i[0]-d;this.initPageY=i[1]-c;this.lastPageX=i[0];this.lastPageY=i[1];this.setStartPosition(i)},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(g,d){if(this.primaryButtonOnly&&g.button!=0){return}if(this.isLocked()){return}this.DDM.refreshCache(this.groups);var c=new Ext.lib.Point(Ext.lib.Event.getPageX(g),Ext.lib.Event.getPageY(g));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(c,this)){}else{if(this.clickValidator(g)){this.setStartPosition();this.b4MouseDown(g);this.onMouseDown(g);this.DDM.handleMouseDown(g,this);this.DDM.stopEvent(g)}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(h){var g=true;var k;try{k=h.nodeName.toUpperCase()}catch(j){k=h.nodeName}g=g&&!this.invalidHandleTypes[k];g=g&&!this.invalidHandleIds[h.id];for(var d=0,c=this.invalidHandleClasses.length;g&&d<c;++d){g=!Ext.fly(h).hasClass(this.invalidHandleClasses[d])}return g},setXTicks:function(g,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(g,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(k,g){if(!g){return k}else{if(g[0]>=k){return g[0]}else{for(var d=0,c=g.length;d<c;++d){var e=d+1;if(g[e]&&g[e]>=k){var j=k-g[d];var h=g[e]-k;return(h>j)?g[d]:g[e]}}return g[g.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,initialized: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 g=this.ids[e][b];if(!this.isTypeOfDD(g)){continue}g[d].apply(g,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]&&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(h,c){var g=[];for(var e in h.groups){for(var d in this.ids[e]){var b=this.ids[e][d];if(!this.isTypeOfDD(b)){continue}if(!c||b.isTarget){g[g.length]=b}}}return g},isLegalTarget:function(g,e){var c=this.getRelated(g,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.ddDisable()}if(this.dragCurrent){this.handleMouseUp(d)}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.ddEnable()}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(n,o){var q=this.dragCurrent;if(!q||q.isLocked()){return}var r=n.getPoint();var b=[];var g=[];var l=[];var j=[];var d=[];for(var h in this.dragOvers){var c=this.dragOvers[h];if(!this.isTypeOfDD(c)){continue}if(!this.isOverTarget(r,c,this.mode)){g.push(c)}b[h]=true;delete this.dragOvers[h]}for(var p in q.groups){if("string"!=typeof p){continue}for(h in this.ids[p]){var k=this.ids[p][h];if(!this.isTypeOfDD(k)){continue}if(k.isTarget&&!k.isLocked()&&((k!=q)||(q.ignoreSelf===false))){if(this.isOverTarget(r,k,this.mode)){if(o){j.push(k)}else{if(!b[k.id]){d.push(k)}else{l.push(k)}this.dragOvers[k.id]=k}}}}}if(this.mode){if(g.length){q.b4DragOut(n,g);q.onDragOut(n,g)}if(d.length){q.onDragEnter(n,d)}if(l.length){q.b4DragOver(n,l);q.onDragOver(n,l)}if(j.length){q.b4DragDrop(n,j);q.onDragDrop(n,j)}}else{var m=0;for(h=0,m=g.length;h<m;++h){q.b4DragOut(n,g[h].id);q.onDragOut(n,g[h].id)}for(h=0,m=d.length;h<m;++h){q.onDragEnter(n,d[h].id)}for(h=0,m=l.length;h<m;++h){q.b4DragOver(n,l[h].id);q.onDragOver(n,l[h].id)}for(h=0,m=j.length;h<m;++h){q.b4DragDrop(n,j[h].id);q.onDragDrop(n,j[h].id)}}if(o&&!j.length){q.onInvalidDrop(n)}},getBestMatch:function(d){var g=null;var c=d.length;if(c==1){g=d[0]}else{for(var e=0;e<c;++e){var b=d[e];if(b.cursorIsOver){g=b;break}else{if(!g||g.overlap.getArea()<b.overlap.getArea()){g=b}}}}return g},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 g=this.getLocation(e);if(g){this.locationCache[e.id]=g}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(j){if(!this.isTypeOfDD(j)){return null}var h=j.getEl(),o,g,d,q,p,s,c,n,i,m;try{o=Ext.lib.Dom.getXY(h)}catch(k){}if(!o){return null}g=o[0];d=g+h.offsetWidth;q=o[1];p=q+h.offsetHeight;s=q-j.padding[0];c=d+j.padding[1];n=p+j.padding[2];i=g-j.padding[3];m=new Ext.lib.Region(s,c,n,i);h=Ext.get(h.parentNode);while(h&&m){if(h.isScrollable()){m=m.intersect(h.getRegion())}h=h.parent()}return m},isOverTarget:function(k,b,d){var g=this.locationCache[b.id];if(!g||!this.useCache){g=this.getLocation(b);this.locationCache[b.id]=g}if(!g){return false}b.cursorIsOver=g.contains(k);var j=this.dragCurrent;if(!j||!j.getTargetCoord||(!d&&!j.constrainX&&!j.constrainY)){return b.cursorIsOver}b.overlap=null;var h=j.getTargetCoord(k.x,k.y);var c=j.getDragEl();var e=new Ext.lib.Region(h.y,h.x+c.offsetWidth,h.y+c.offsetHeight,h.x);var i=e.intersect(g);if(i){b.overlap=i;return(d)?true:b.cursorIsOver}else{return false}},_onUnload:function(c,b){a.removeListener(document,"mouseup",this.handleMouseUp,this);a.removeListener(document,"mousemove",this.handleMouseMove,this);a.removeListener(window,"resize",this._onResize,this);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(d,c){return(d-c)},_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,h,g){var e=this.getTargetCoord(h,g);var b=c.dom?c:Ext.fly(c,"_dd");if(!this.deltaSetXY){var i=[e.x,e.y];b.setXY(i);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(l,k,e,m){if(this.scroll){var n=Ext.lib.Dom.getViewHeight();var b=Ext.lib.Dom.getViewWidth();var p=this.DDM.getScrollTop();var d=this.DDM.getScrollLeft();var j=e+k;var o=m+l;var i=(n+p-k-this.deltaY);var g=(b+d-l-this.deltaX);var c=40;var a=(document.all)?80:30;if(j>n&&i<c){window.scrollTo(d,p+a)}if(k<p&&p>0&&k-p<c){window.scrollTo(d,p-a)}if(o>b&&g<c){window.scrollTo(d+a,p)}if(l<d&&d>0&&l-d<c){window.scrollTo(d-a,p)}}},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,{getDragEl:Ext.emptyFn,isValidHandleChild:Ext.emptyFn,startDrag:Ext.emptyFn,endDrag:Ext.emptyFn,onDrag:Ext.emptyFn,onDragDrop:Ext.emptyFn,onDragEnter:Ext.emptyFn,onDragOut:Ext.emptyFn,onDragOver:Ext.emptyFn,onInvalidDrop:Ext.emptyFn,onMouseDown:Ext.emptyFn,onMouseUp:Ext.emptyFn,setXConstraint:Ext.emptyFn,setYConstraint:Ext.emptyFn,resetConstraints:Ext.emptyFn,clearConstraints:Ext.emptyFn,clearTicks:Ext.emptyFn,setInitPosition:Ext.emptyFn,setDragElId:Ext.emptyFn,setHandleElId:Ext.emptyFn,setOuterHandleElId:Ext.emptyFn,addInvalidHandleClass:Ext.emptyFn,addInvalidHandleId:Ext.emptyFn,addInvalidHandleType:Ext.emptyFn,removeInvalidHandleClass:Ext.emptyFn,removeInvalidHandleId:Ext.emptyFn,removeInvalidHandleType:Ext.emptyFn,toString:function(){return("DDTarget "+this.id)}});Ext.dd.DragTracker=Ext.extend(Ext.util.Observable,{active:false,tolerance:5,autoStart:false,constructor: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.dd.DragTracker.superclass.constructor.call(this,a)},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);delete this.el},onMouseDown:function(b,a){if(this.fireEvent("mousedown",this,b)!==false&&this.onBeforeStart(b)!==false){this.startXY=this.lastXY=b.getXY();this.dragTarget=this.delegate?a:this.el.dom;if(this.preventDefault!==false){b.preventDefault()}Ext.getDoc().on({scope:this,mouseup:this.onMouseUp,mousemove:this.onMouseMove,selectstart:this.stopSelect});if(this.autoStart){this.timer=this.triggerStart.defer(this.autoStart===true?1000:this.autoStart,this,[b])}}},onMouseMove:function(d,c){if(this.active&&Ext.isIE&&!d.browserEvent.button){d.preventDefault();this.onMouseUp(d);return}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(d)}else{return}}this.fireEvent("mousemove",this,d);this.onDrag(d);this.fireEvent("drag",this,d)},onMouseUp:function(c){var b=Ext.getDoc(),a=this.active;b.un("mousemove",this.onMouseMove,this);b.un("mouseup",this.onMouseUp,this);b.un("selectstart",this.stopSelect,this);c.preventDefault();this.clearStart();this.active=false;delete this.elRegion;this.fireEvent("mouseup",this,c);if(a){this.onEnd(c);this.fireEvent("dragend",this,c)}},triggerStart:function(a){this.clearStart();this.active=true;this.onStart(a);this.fireEvent("dragstart",this,a)},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),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 i={};var h=function(l){b=null;a()};var j=function(){if(c.dragCurrent){c.refreshCache(c.dragCurrent.groups)}};var d=function(){if(c.dragCurrent){var l=Ext.dd.ScrollManager;var m=i.el.ddScrollConfig?i.el.ddScrollConfig.increment:l.increment;if(!l.animate){if(i.el.scroll(i.dir,m)){j()}}else{i.el.scroll(i.dir,m,true,l.animDuration,j)}}};var a=function(){if(i.id){clearInterval(i.id)}i.id=0;i.el=null;i.dir=""};var g=function(m,l){a();i.el=m;i.dir=l;var o=m.ddScrollConfig?m.ddScrollConfig.ddGroup:undefined,n=(m.ddScrollConfig&&m.ddScrollConfig.frequency)?m.ddScrollConfig.frequency:Ext.dd.ScrollManager.frequency;if(o===undefined||c.dragCurrent.ddGroup==o){i.id=setInterval(d,n)}};var k=function(o,q){if(q||!c.dragCurrent){return}var s=Ext.dd.ScrollManager;if(!b||b!=c.dragCurrent){b=c.dragCurrent;s.refreshCache()}var t=Ext.lib.Event.getXY(o);var u=new Ext.lib.Point(t[0],t[1]);for(var m in e){var n=e[m],l=n._region;var p=n.ddScrollConfig?n.ddScrollConfig:s;if(l&&l.contains(u)&&n.isScrollable()){if(l.bottom-u.y<=p.vthresh){if(i.el!=n){g(n,"down")}return}else{if(l.right-u.x<=p.hthresh){if(i.el!=n){g(n,"left")}return}else{if(u.y-l.top<=p.vthresh){if(i.el!=n){g(n,"up")}return}else{if(u.x-l.left<=p.hthresh){if(i.el!=n){g(n,"right")}return}}}}}}a()};c.fireEvents=c.fireEvents.createSequence(k,c);c.stopDrag=c.stopDrag.createSequence(h,c);return{register:function(n){if(Ext.isArray(n)){for(var m=0,l=n.length;m<l;m++){this.register(n[m])}}else{n=Ext.get(n);e[n.id]=n}},unregister:function(n){if(Ext.isArray(n)){for(var m=0,l=n.length;m<l;m++){this.unregister(n[m])}}else{n=Ext.get(n);delete e[n.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,ddGroup:undefined,refreshCache:function(){for(var l in e){if(typeof e[l]=="object"){e[l]._region=e[l].getRegion()}}}}}();Ext.dd.Registry=function(){var d={};var b={};var a=0;var c=function(g,e){if(typeof g=="string"){return g}var h=g.id;if(!h&&e!==false){h="extdd-"+(++a);g.id=h}return h};return{register:function(j,k){k=k||{};if(typeof j=="string"){j=document.getElementById(j)}k.ddel=j;d[c(j)]=k;if(k.isHandle!==false){b[k.ddel.id]=k}if(k.handles){var h=k.handles;for(var g=0,e=h.length;g<e;g++){b[c(h[g])]=k}}},unregister:function(j){var l=c(j,false);var k=d[l];if(k){delete d[l];if(k.handles){var h=k.handles;for(var g=0,e=h.length;g<e;g++){delete b[c(h[g],false)]}}}},getHandle:function(e){if(typeof e!="string"){e=e.id}return b[e]},getHandleFromEvent:function(h){var g=Ext.lib.Event.getTarget(h);return g?b[g.id]:null},getTarget:function(e){if(typeof e!="string"){e=e.id}return d[e]},getTargetFromEvent:function(h){var g=Ext.lib.Event.getTarget(h);return g?d[g.id]||b[g.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)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},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},destroy:function(){Ext.destroy(this.ghost,this.el)}};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)},destroy:function(){Ext.dd.DragSource.superclass.destroy.call(this);Ext.destroy(this.proxy)}});Ext.dd.DropTarget=Ext.extend(Ext.dd.DDTarget,{constructor: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})},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},destroy:function(){Ext.dd.DropTarget.superclass.destroy.call(this);if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});Ext.dd.DragZone=Ext.extend(Ext.dd.DragSource,{constructor:function(b,a){Ext.dd.DragZone.superclass.constructor.call(this,b,a);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}},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()},destroy:function(){Ext.dd.DragZone.superclass.destroy.call(this);if(this.containerScroll){Ext.dd.ScrollManager.unregister(this.el)}}});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.Element.addMethods({initDD:function(c,b,d){var a=new Ext.dd.DD(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDProxy:function(c,b,d){var a=new Ext.dd.DDProxy(Ext.id(this.dom),c,b);return Ext.apply(a,d)},initDDTarget:function(c,b,d){var a=new Ext.dd.DDTarget(Ext.id(this.dom),c,b);return Ext.apply(a,d)}});Ext.data.Api=(function(){var a={};return{actions:{create:"create",read:"read",update:"update",destroy:"destroy"},restActions:{create:"POST",read:"GET",update:"PUT",destroy:"DELETE"},isAction:function(b){return(Ext.data.Api.actions[b])?true:false},getVerb:function(b){if(a[b]){return a[b]}for(var c in this.actions){if(this.actions[c]===b){a[b]=c;break}}return(a[b]!==undefined)?a[b]:null},isValid:function(b){var e=[];var d=this.actions;for(var c in b){if(!(c in d)){e.push(c)}}return(!e.length)?true:e},hasUniqueUrl:function(c,g){var b=(c.api[g])?c.api[g].url:null;var e=true;for(var d in c.api){if((e=(d===g)?true:(c.api[d].url!=b)?true:false)===false){break}}return e},prepare:function(b){if(!b.api){b.api={}}for(var d in this.actions){var c=this.actions[d];b.api[c]=b.api[c]||b.url||b.directFn;if(typeof(b.api[c])=="string"){b.api[c]={url:b.api[c],method:(b.restful===true)?Ext.data.Api.restActions[c]:undefined}}}},restify:function(b){b.restful=true;for(var c in this.restActions){b.api[this.actions[c]].method||(b.api[this.actions[c]].method=this.restActions[c])}b.onWrite=b.onWrite.createInterceptor(function(i,j,g,e){var d=j.reader;var h=new Ext.data.Response({action:i,raw:g});switch(g.status){case 200:return true;break;case 201:if(Ext.isEmpty(h.raw.responseText)){h.success=true}else{return true}break;case 204:h.success=true;h.data=null;break;default:return true;break}if(h.success===true){this.fireEvent("write",this,i,h.data,h,e,j.request.arg)}else{this.fireEvent("exception",this,"remote",i,j,h,e)}j.request.callback.call(j.request.scope,h.data,h,h.success);return false},b)}}})();Ext.data.Response=function(b,a){Ext.apply(this,b,{raw:a})};Ext.data.Response.prototype={message:null,success:false,status:null,root:null,raw:null,getMessage:function(){return this.message},getSuccess:function(){return this.success},getStatus:function(){return this.status},getRoot:function(){return this.root},getRawResponse:function(){return this.raw}};Ext.data.Api.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.Api"});Ext.apply(Ext.data.Api.Error.prototype,{lang:{"action-url-undefined":"No fallback url defined for this action.  When defining a DataProxy api, please be sure to define an url for each CRUD action in Ext.data.Api.actions or define a default url in addition to your api-configuration.",invalid:"received an invalid API-configuration.  Please ensure your proxy API-configuration contains only the actions defined in Ext.data.Api.actions","invalid-url":"Invalid url.  Please review your proxy configuration.",execute:'Attempted to execute an unknown action.  Valid API actions are defined in Ext.data.Api.actions"'}});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,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}};Ext.data.Record=function(a,b){this.id=(b||b===0)?b:Ext.data.Record.id(this);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(g){return g.name});for(var b=0,a=e.length;b<a;b++){d.fields.add(new Ext.data.Field(e[b]))}c.getField=function(g){return d.fields.get(g)};return c};Ext.data.Record.PREFIX="ext-record";Ext.data.Record.AUTO_ID=1;Ext.data.Record.EDIT="edit";Ext.data.Record.REJECT="reject";Ext.data.Record.COMMIT="commit";Ext.data.Record.id=function(a){a.phantom=true;return[Ext.data.Record.PREFIX,"-",Ext.data.Record.AUTO_ID++].join("")};Ext.data.Record.prototype={dirty:false,editing:false,error:null,modified:null,phantom:false,join:function(a){this.store=a},set:function(a,c){var b=Ext.isPrimitive(c)?String:Ext.encode;if(b(this.data[a])==b(c)){return}this.dirty=true;if(!this.modified){this.modified={}}if(this.modified[a]===undefined){this.modified[a]=this.data[a]}this.data[a]=c;if(!this.editing){this.afterEdit()}},afterEdit:function(){if(this.store!=undefined&&typeof this.store.afterEdit=="function"){this.store.afterEdit(this)}},afterReject:function(){if(this.store){this.store.afterReject(this)}},afterCommit:function(){if(this.store){this.store.afterCommit(this)}},get:function(a){return this.data[a]},beginEdit:function(){this.editing=true;this.modified=this.modified||{}},cancelEdit:function(){this.editing=false;delete this.modified},endEdit:function(){this.editing=false;if(this.dirty){this.afterEdit()}},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(b!==true){this.afterReject()}},commit:function(a){this.dirty=false;delete this.modified;this.editing=false;if(a!==true){this.afterCommit()}},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))},isValid:function(){return this.fields.find(function(a){return(a.allowBlank===false&&Ext.isEmpty(this.data[a.name]))?true:false},this)?false:true},markDirty:function(){this.dirty=true;if(!this.modified){this.modified={}}this.fields.each(function(a){this.modified[a.name]=this.data[a.name]},this)}};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(e){if(Ext.isArray(e)){var b=["field1"],d=!Ext.isArray(e[0]);if(!d){for(var c=2,a=e[0].length;c<=a;++c){b.push("field"+c)}}return new Ext.data.ArrayStore({fields:b,data:e,expandData:d,autoDestroy:true,autoCreated:true})}return Ext.isObject(e)?(e.events?e:Ext.create(e,"store")):this.get(e)},getKey:function(a){return a.storeId}});Ext.data.Store=Ext.extend(Ext.util.Observable,{writer:undefined,remoteSort:false,autoDestroy:false,pruneModifiedRecords:false,lastOptions:null,autoSave:true,batch:true,restful:false,paramNames:undefined,defaultParamNames:{start:"start",limit:"limit",sort:"sort",dir:"dir"},isDestroyed:false,hasMultiSort:false,batchKey:"_ext_batch_",constructor:function(a){this.data=new Ext.util.MixedCollection(false);this.data.getKey=function(b){return b.id};this.removed=[];if(a&&a.data){this.inlineData=a.data;delete a.data}Ext.apply(this,a);this.baseParams=Ext.isObject(this.baseParams)?this.baseParams:{};this.paramNames=Ext.applyIf(this.paramNames||{},this.defaultParamNames);if((this.url||this.api)&&!this.proxy){this.proxy=new Ext.data.HttpProxy({url:this.url,api:this.api})}if(this.restful===true&&this.proxy){this.batch=false;Ext.data.Api.restify(this.proxy)}if(this.reader){if(!this.recordType){this.recordType=this.reader.recordType}if(this.reader.onMetaChange){this.reader.onMetaChange=this.reader.onMetaChange.createSequence(this.onMetaChange,this)}if(this.writer){if(this.writer instanceof (Ext.data.DataWriter)===false){this.writer=this.buildWriter(this.writer)}this.writer.meta=this.reader.meta;this.pruneModifiedRecords=true}}if(this.recordType){this.fields=this.recordType.prototype.fields}this.modified=[];this.addEvents("datachanged","metachange","add","remove","update","clear","exception","beforeload","load","loadexception","beforewrite","write","beforesave","save");if(this.proxy){this.relayEvents(this.proxy,["loadexception","exception"])}if(this.writer){this.on({scope:this,add:this.createRecords,remove:this.destroyRecord,update:this.updateRecord,clear:this.onClear})}this.sortToggle={};if(this.sortField){this.setDefaultSort(this.sortField,this.sortDir)}else{if(this.sortInfo){this.setDefaultSort(this.sortInfo.field,this.sortInfo.direction)}}Ext.data.Store.superclass.constructor.call(this);if(this.id){this.storeId=this.id;delete this.id}if(this.storeId){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])}}this.batchCounter=0;this.batches={}},buildWriter:function(b){var a=undefined,c=(b.format||"json").toLowerCase();switch(c){case"json":a=Ext.data.JsonWriter;break;case"xml":a=Ext.data.XmlWriter;break;default:a=Ext.data.JsonWriter}return new a(b)},destroy:function(){if(!this.isDestroyed){if(this.storeId){Ext.StoreMgr.unregister(this)}this.clearData();this.data=null;Ext.destroy(this.proxy);this.reader=this.writer=null;this.purgeListeners();this.isDestroyed=true}},add:function(c){var e,a,b,d;c=[].concat(c);if(c.length<1){return}for(e=0,a=c.length;e<a;e++){b=c[e];b.join(this);if(b.dirty||b.phantom){this.modified.push(b)}}d=this.data.length;this.data.addAll(c);if(this.snapshot){this.snapshot.addAll(c)}this.fireEvent("add",this,c,d)},addSorted:function(a){var b=this.findInsertIndex(a);this.insert(b,a)},doUpdate:function(a){var b=a.id;this.getById(b).join(null);this.data.replace(b,a);if(this.snapshot){this.snapshot.replace(b,a)}a.join(this);this.fireEvent("update",this,a,Ext.data.Record.COMMIT)},remove:function(a){if(Ext.isArray(a)){Ext.each(a,function(c){this.remove(c)},this);return}var b=this.data.indexOf(a);if(b>-1){a.join(null);this.data.removeAt(b)}if(this.pruneModifiedRecords){this.modified.remove(a)}if(this.snapshot){this.snapshot.remove(a)}if(b>-1){this.fireEvent("remove",this,a,b)}},removeAt:function(a){this.remove(this.getAt(a))},removeAll:function(b){var a=[];this.each(function(c){a.push(c)});this.clearData();if(this.snapshot){this.snapshot.clear()}if(this.pruneModifiedRecords){this.modified=[]}if(b!==true){this.fireEvent("clear",this,a)}},onClear:function(b,a){Ext.each(a,function(d,c){this.destroyRecord(this,d,c)},this)},insert:function(d,c){var e,a,b;c=[].concat(c);for(e=0,a=c.length;e<a;e++){b=c[e];this.data.insert(d+e,b);b.join(this);if(b.dirty||b.phantom){this.modified.push(b)}}if(this.snapshot){this.snapshot.addAll(c)}this.fireEvent("add",this,c,d)},indexOf:function(a){return this.data.indexOf(a)},indexOfId:function(a){return this.data.indexOfKey(a)},getById:function(a){return(this.snapshot||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},clearData:function(){this.data.each(function(a){a.join(null)});this.data.clear()},load:function(b){b=Ext.apply({},b);this.storeOptions(b);if(this.sortInfo&&this.remoteSort){var a=this.paramNames;b.params=Ext.apply({},b.params);b.params[a.sort]=this.sortInfo.field;b.params[a.dir]=this.sortInfo.direction}try{return this.execute("read",null,b)}catch(c){this.handleException(c);return false}},updateRecord:function(b,a,c){if(c==Ext.data.Record.EDIT&&this.autoSave===true&&(!a.phantom||(a.phantom&&a.isValid()))){this.save()}},createRecords:function(c,b,e){var d=this.modified,h=b.length,a,g;for(g=0;g<h;g++){a=b[g];if(a.phantom&&a.isValid()){a.markDirty();if(d.indexOf(a)==-1){d.push(a)}}}if(this.autoSave===true){this.save()}},destroyRecord:function(b,a,c){if(this.modified.indexOf(a)!=-1){this.modified.remove(a)}if(!a.phantom){this.removed.push(a);a.lastIndex=c;if(this.autoSave===true){this.save()}}},execute:function(e,a,c,b){if(!Ext.data.Api.isAction(e)){throw new Ext.data.Api.Error("execute",e)}c=Ext.applyIf(c||{},{params:{}});if(b!==undefined){this.addToBatch(b)}var d=true;if(e==="read"){d=this.fireEvent("beforeload",this,c);Ext.applyIf(c.params,this.baseParams)}else{if(this.writer.listful===true&&this.restful!==true){a=(Ext.isArray(a))?a:[a]}else{if(Ext.isArray(a)&&a.length==1){a=a.shift()}}if((d=this.fireEvent("beforewrite",this,e,a,c))!==false){this.writer.apply(c.params,this.baseParams,e,a)}}if(d!==false){if(this.writer&&this.proxy.url&&!this.proxy.restful&&!Ext.data.Api.hasUniqueUrl(this.proxy,e)){c.params.xaction=e}this.proxy.request(Ext.data.Api.actions[e],a,c.params,this.reader,this.createCallback(e,a,b),this,c)}return d},save:function(){if(!this.writer){throw new Ext.data.Store.Error("writer-undefined")}var h=[],j,k,e,c={},d;if(this.removed.length){h.push(["destroy",this.removed])}var b=[].concat(this.getModifiedRecords());if(b.length){var g=[];for(d=b.length-1;d>=0;d--){if(b[d].phantom===true){var a=b.splice(d,1).shift();if(a.isValid()){g.push(a)}}else{if(!b[d].isValid()){b.splice(d,1)}}}if(g.length){h.push(["create",g])}if(b.length){h.push(["update",b])}}j=h.length;if(j){e=++this.batchCounter;for(d=0;d<j;++d){k=h[d];c[k[0]]=k[1]}if(this.fireEvent("beforesave",this,c)!==false){for(d=0;d<j;++d){k=h[d];this.doTransaction(k[0],k[1],e)}return e}}return -1},doTransaction:function(e,b,c){function g(h){try{this.execute(e,h,undefined,c)}catch(i){this.handleException(i)}}if(this.batch===false){for(var d=0,a=b.length;d<a;d++){g.call(this,b[d])}}else{g.call(this,b)}},addToBatch:function(c){var a=this.batches,d=this.batchKey+c,e=a[d];if(!e){a[d]=e={id:c,count:0,data:{}}}++e.count},removeFromBatch:function(d,h,g){var c=this.batches,e=this.batchKey+d,i=c[e],a;if(i){a=i.data[h]||[];i.data[h]=a.concat(g);if(i.count===1){g=i.data;delete c[e];this.fireEvent("save",this,d,g)}else{--i.count}}},createCallback:function(c,a,b){var d=Ext.data.Api.actions;return(c=="read")?this.loadRecords:function(g,e,h){this["on"+Ext.util.Format.capitalize(c)+"Records"](h,a,[].concat(g));if(h===true){this.fireEvent("write",this,c,g,e,a)}this.removeFromBatch(b,c,g)}},clearModified:function(a){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){this.modified.splice(this.modified.indexOf(a[b]),1)}}else{this.modified.splice(this.modified.indexOf(a),1)}},reMap:function(b){if(Ext.isArray(b)){for(var d=0,a=b.length;d<a;d++){this.reMap(b[d])}}else{delete this.data.map[b._phid];this.data.map[b.id]=b;var c=this.data.keys.indexOf(b._phid);this.data.keys.splice(c,1,b.id);delete b._phid}},onCreateRecords:function(d,a,b){if(d===true){try{this.reader.realize(a,b)}catch(c){this.handleException(c);if(Ext.isArray(a)){this.onCreateRecords(d,a,b)}}}},onUpdateRecords:function(d,a,b){if(d===true){try{this.reader.update(a,b)}catch(c){this.handleException(c);if(Ext.isArray(a)){this.onUpdateRecords(d,a,b)}}}},onDestroyRecords:function(e,b,d){b=(b instanceof Ext.data.Record)?[b]:[].concat(b);for(var c=0,a=b.length;c<a;c++){this.removed.splice(this.removed.indexOf(b[c]),1)}if(e===false){for(c=b.length-1;c>=0;c--){this.insert(b[c].lastIndex,b[c])}}},handleException:function(a){Ext.handleError(a)},reload:function(a){this.load(Ext.applyIf(a||{},this.lastOptions))},loadRecords:function(b,l,h){var e,g;if(this.isDestroyed===true){return}if(!b||h===false){if(h!==false){this.fireEvent("load",this,[],l)}if(l.callback){l.callback.call(l.scope||this,[],l,false,b)}return}var a=b.records,j=b.totalRecords||a.length;if(!l||l.add!==true){if(this.pruneModifiedRecords){this.modified=[]}for(e=0,g=a.length;e<g;e++){a[e].join(this)}if(this.snapshot){this.data=this.snapshot;delete this.snapshot}this.clearData();this.data.addAll(a);this.totalLength=j;this.applySort();this.fireEvent("datachanged",this)}else{var k=[],d,c=0;for(e=0,g=a.length;e<g;++e){d=a[e];if(this.indexOfId(d.id)>-1){this.doUpdate(d)}else{k.push(d);++c}}this.totalLength=Math.max(j,this.data.length+c);this.add(k)}this.fireEvent("load",this,a,l);if(l.callback){l.callback.call(l.scope||this,a,l,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.multiSortInfo)&&!this.remoteSort){this.sortData()}},sortData:function(){var a=this.hasMultiSort?this.multiSortInfo:this.sortInfo,k=a.direction||"ASC",h=a.sorters,c=[];if(!this.hasMultiSort){h=[{direction:k,field:a.field}]}for(var d=0,b=h.length;d<b;d++){c.push(this.createSortFunction(h[d].field,h[d].direction))}if(c.length==0){return}var g=k.toUpperCase()=="DESC"?-1:1;var e=function(n,m){var l=c[0].call(this,n,m);if(c.length>1){for(var p=1,o=c.length;p<o;p++){l=l||c[p].call(this,n,m)}}return g*l};this.data.sort(k,e);if(this.snapshot&&this.snapshot!=this.data){this.snapshot.sort(k,e)}},createSortFunction:function(c,b){b=b||"ASC";var a=b.toUpperCase()=="DESC"?-1:1;var d=this.fields.get(c).sortType;return function(g,e){var i=d(g.data[c]),h=d(e.data[c]);return a*(i>h?1:(i<h?-1:0))}},setDefaultSort:function(b,a){a=a?a.toUpperCase():"ASC";this.sortInfo={field:b,direction:a};this.sortToggle[b]=a},sort:function(b,a){if(Ext.isArray(arguments[0])){return this.multiSort.call(this,b,a)}else{return this.singleSort(b,a)}},singleSort:function(g,c){var e=this.fields.get(g);if(!e){return false}var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;if(!c){if(a&&a.field==b){c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")}else{c=e.sortDir}}this.sortToggle[b]=c;this.sortInfo={field:b,direction:c};this.hasMultiSort=false;if(this.remoteSort){if(!this.load(this.lastOptions)){if(d){this.sortToggle[b]=d}if(a){this.sortInfo=a}}}else{this.applySort();this.fireEvent("datachanged",this)}return true},multiSort:function(b,a){this.hasMultiSort=true;a=a||"ASC";if(this.multiSortInfo&&a==this.multiSortInfo.direction){a=a.toggle("ASC","DESC")}this.multiSortInfo={sorters:b,direction:a};if(this.remoteSort){this.singleSort(b[0].field,b[0].direction)}else{this.applySort();this.fireEvent("datachanged",this)}},each:function(b,a){this.data.each(b,a)},getModifiedRecords:function(){return this.modified},sum:function(e,g,a){var c=this.data.items,b=0;g=g||0;a=(a||a===0)?a:c.length-1;for(var d=g;d<=a;d++){b+=(c[d].data[e]||0)}return b},createFilterFn:function(d,c,e,a,b){if(Ext.isEmpty(c,false)){return false}c=this.data.createValueMatcher(c,e,a,b);return function(g){return c.test(g.data[d])}},createMultipleFilterFn:function(a){return function(b){var k=true;for(var d=0,c=a.length;d<c;d++){var h=a[d],g=h.fn,e=h.scope;k=k&&g.call(e,b)}return k}},filter:function(n,m,h,k,e){var l;if(Ext.isObject(n)){n=[n]}if(Ext.isArray(n)){var b=[];for(var g=0,d=n.length;g<d;g++){var a=n[g],c=a.fn,o=a.scope||this;if(!Ext.isFunction(c)){c=this.createFilterFn(a.property,a.value,a.anyMatch,a.caseSensitive,a.exactMatch)}b.push({fn:c,scope:o})}l=this.createMultipleFilterFn(b)}else{l=this.createFilterFn(n,m,h,k,e)}return l?this.filterBy(l):this.clearFilter()},filterBy:function(b,a){this.snapshot=this.snapshot||this.data;this.data=this.queryBy(b,a||this);this.fireEvent("datachanged",this)},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},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,g,e,a){var b=this.createFilterFn(d,c,e,a);return b?this.data.findIndexBy(b,null,g):-1},findExact:function(b,a,c){return this.data.findIndexBy(function(d){return d.get(b)===a},this,c)},findBy:function(b,a,c){return this.data.findIndexBy(b,a,c)},collect:function(j,k,b){var h=(b===true&&this.snapshot)?this.snapshot.items:this.data.items;var m,n,a=[],c={};for(var e=0,g=h.length;e<g;e++){m=h[e].data[j];n=String(m);if((k||!Ext.isEmpty(m))&&!c[n]){c[n]=true;a[a.length]=m}}return a},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 a=this.modified.slice(0),c=a.length,b;for(b=0;b<c;b++){a[b].commit()}this.modified=[];this.removed=[]},rejectChanges:function(){var a=this.modified.slice(0),e=this.removed.slice(0).reverse(),c=a.length,d=e.length,b;for(b=0;b<c;b++){a[b].reject()}for(b=0;b<d;b++){this.insert(e[b].lastIndex||0,e[b]);e[b].reject()}this.modified=[];this.removed=[]},onMetaChange:function(a){this.recordType=this.reader.recordType;this.fields=this.recordType.prototype.fields;delete this.snapshot;if(this.reader.meta.sortInfo){this.sortInfo=this.reader.meta.sortInfo}else{if(this.sortInfo&&!this.fields.get(this.sortInfo.field)){delete this.sortInfo}}if(this.writer){this.writer.meta=this.reader.meta}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},setBaseParam:function(a,b){this.baseParams=this.baseParams||{};this.baseParams[a]=b}});Ext.reg("store",Ext.data.Store);Ext.data.Store.Error=Ext.extend(Ext.Error,{name:"Ext.data.Store"});Ext.apply(Ext.data.Store.Error.prototype,{lang:{"writer-undefined":"Attempted to execute a write-action without a DataWriter installed."}});Ext.data.Field=Ext.extend(Object,{constructor:function(b){if(Ext.isString(b)){b={name:b}}Ext.apply(this,b);var d=Ext.data.Types,a=this.sortType,c;if(this.type){if(Ext.isString(this.type)){this.type=Ext.data.Types[this.type.toUpperCase()]||d.AUTO}}else{this.type=d.AUTO}if(Ext.isString(a)){this.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){this.sortType=this.type.sortType}}if(!this.convert){this.convert=this.type.convert}},dateFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true});Ext.data.DataReader=function(a,b){this.meta=a;this.recordType=Ext.isArray(b)?Ext.data.Record.create(b):b;if(this.recordType){this.buildExtractors()}};Ext.data.DataReader.prototype={getTotal:Ext.emptyFn,getRoot:Ext.emptyFn,getMessage:Ext.emptyFn,getSuccess:Ext.emptyFn,getId:Ext.emptyFn,buildExtractors:Ext.emptyFn,extractValues:Ext.emptyFn,realize:function(a,c){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){if(Ext.isArray(c)){this.realize(a.splice(b,1).shift(),c.splice(b,1).shift())}else{this.realize(a.splice(b,1).shift(),c)}}}else{if(Ext.isArray(c)&&c.length==1){c=c.shift()}if(!this.isData(c)){throw new Ext.data.DataReader.Error("realize",a)}a.phantom=false;a._phid=a.id;a.id=this.getId(c);a.data=c;a.commit();a.store.reMap(a)}},update:function(a,c){if(Ext.isArray(a)){for(var b=a.length-1;b>=0;b--){if(Ext.isArray(c)){this.update(a.splice(b,1).shift(),c.splice(b,1).shift())}else{this.update(a.splice(b,1).shift(),c)}}}else{if(Ext.isArray(c)&&c.length==1){c=c.shift()}if(this.isData(c)){a.data=Ext.apply(a.data,c)}a.commit()}},extractData:function(k,a){var j=(this instanceof Ext.data.JsonReader)?"json":"node";var c=[];if(this.isData(k)&&!(this instanceof Ext.data.XmlReader)){k=[k]}var h=this.recordType.prototype.fields,o=h.items,m=h.length,c=[];if(a===true){var l=this.recordType;for(var e=0;e<k.length;e++){var b=k[e];var g=new l(this.extractValues(b,o,m),this.getId(b));g[j]=b;c.push(g)}}else{for(var e=0;e<k.length;e++){var d=this.extractValues(k[e],o,m);d[this.meta.idProperty]=this.getId(k[e]);c.push(d)}}return c},isData:function(a){return(a&&Ext.isObject(a)&&!Ext.isEmpty(this.getId(a)))?true:false},onMetaChange:function(a){delete this.ef;this.meta=a;this.recordType=Ext.data.Record.create(a.fields);this.buildExtractors()}};Ext.data.DataReader.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.DataReader"});Ext.apply(Ext.data.DataReader.Error.prototype,{lang:{update:"#update received invalid data from server.  Please see docs for DataReader#update and review your DataReader configuration.",realize:"#realize was called with invalid remote-data.  Please see the docs for DataReader#realize and review your DataReader configuration.","invalid-response":"#readResponse received an invalid response from the server."}});Ext.data.DataWriter=function(a){Ext.apply(this,a)};Ext.data.DataWriter.prototype={writeAllFields:false,listful:false,apply:function(e,g,d,a){var c=[],b=d+"Record";if(Ext.isArray(a)){Ext.each(a,function(h){c.push(this[b](h))},this)}else{if(a instanceof Ext.data.Record){c=this[b](a)}}this.render(e,g,c)},render:Ext.emptyFn,updateRecord:Ext.emptyFn,createRecord:Ext.emptyFn,destroyRecord:Ext.emptyFn,toHash:function(g,c){var e=g.fields.map,d={},b=(this.writeAllFields===false&&g.phantom===false)?g.getChanges():g.data,a;Ext.iterate(b,function(i,h){if((a=e[i])){d[a.mapping?a.mapping:a.name]=h}});if(g.phantom){if(g.fields.containsKey(this.meta.idProperty)&&Ext.isEmpty(g.data[this.meta.idProperty])){delete d[this.meta.idProperty]}}else{d[this.meta.idProperty]=g.id}return d},toArray:function(b){var a=[];Ext.iterate(b,function(d,c){a.push({name:d,value:c})},this);return a}};Ext.data.DataProxy=function(a){a=a||{};this.api=a.api;this.url=a.url;this.restful=a.restful;this.listeners=a.listeners;this.prettyUrls=a.prettyUrls;this.addEvents("exception","beforeload","load","loadexception","beforewrite","write");Ext.data.DataProxy.superclass.constructor.call(this);try{Ext.data.Api.prepare(this)}catch(b){if(b instanceof Ext.data.Api.Error){b.toConsole()}}Ext.data.DataProxy.relayEvents(this,["beforewrite","write","exception"])};Ext.extend(Ext.data.DataProxy,Ext.util.Observable,{restful:false,setApi:function(){if(arguments.length==1){var a=Ext.data.Api.isValid(arguments[0]);if(a===true){this.api=arguments[0]}else{throw new Ext.data.Api.Error("invalid",a)}}else{if(arguments.length==2){if(!Ext.data.Api.isAction(arguments[0])){throw new Ext.data.Api.Error("invalid",arguments[0])}this.api[arguments[0]]=arguments[1]}}Ext.data.Api.prepare(this)},isApiAction:function(a){return(this.api[a])?true:false},request:function(e,b,g,a,h,d,c){if(!this.api[e]&&!this.load){throw new Ext.data.DataProxy.Error("action-undefined",e)}g=g||{};if((e===Ext.data.Api.actions.read)?this.fireEvent("beforeload",this,g):this.fireEvent("beforewrite",this,e,b,g)!==false){this.doRequest.apply(this,arguments)}else{h.call(d||this,null,c,false)}},load:null,doRequest:function(e,b,g,a,h,d,c){this.load(g,a,h,d,c)},onRead:Ext.emptyFn,onWrite:Ext.emptyFn,buildUrl:function(d,b){b=b||null;var c=(this.conn&&this.conn.url)?this.conn.url:(this.api[d])?this.api[d].url:this.url;if(!c){throw new Ext.data.Api.Error("invalid-url",d)}var e=null;var a=c.match(/(.*)(\.json|\.xml|\.html)$/);if(a){e=a[2];c=a[1]}if((this.restful===true||this.prettyUrls===true)&&b instanceof Ext.data.Record&&!b.phantom){c+="/"+b.id}return(e===null)?c:c+e},destroy:function(){this.purgeListeners()}});Ext.apply(Ext.data.DataProxy,Ext.util.Observable.prototype);Ext.util.Observable.call(Ext.data.DataProxy);Ext.data.DataProxy.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.DataProxy"});Ext.apply(Ext.data.DataProxy.Error.prototype,{lang:{"action-undefined":"DataProxy attempted to execute an API-action but found an undefined url / function.  Please review your Proxy url/api-configuration.","api-invalid":"Recieved an invalid API-configuration.  Please ensure your proxy API-configuration contains only the actions from Ext.data.Api.actions."}});Ext.data.Request=function(a){Ext.apply(this,a)};Ext.data.Request.prototype={action:undefined,rs:undefined,params:undefined,callback:Ext.emptyFn,scope:undefined,reader:undefined};Ext.data.Response=function(a){Ext.apply(this,a)};Ext.data.Response.prototype={action:undefined,success:undefined,message:undefined,data:undefined,raw:undefined,records:undefined};Ext.data.ScriptTagProxy=function(a){Ext.apply(this,a);Ext.data.ScriptTagProxy.superclass.constructor.call(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,doRequest:function(e,g,d,h,j,k,l){var c=Ext.urlEncode(Ext.apply(d,this.extraParams));var b=this.buildUrl(e,g);if(!b){throw new Ext.data.Api.Error("invalid-url",b)}b=Ext.urlAppend(b,c);if(this.nocache){b=Ext.urlAppend(b,"_dc="+(new Date().getTime()))}var a=++Ext.data.ScriptTagProxy.TRANS_ID;var m={id:a,action:e,cb:"stcCallback"+a,scriptId:"stcScript"+a,params:d,arg:l,url:b,callback:j,scope:k,reader:h};window[m.cb]=this.createCallback(e,g,m);b+=String.format("&{0}={1}",this.callbackParam,m.cb);if(this.autoAbort!==false){this.abort()}m.timeoutId=this.handleFailure.defer(this.timeout,this,[m]);var i=document.createElement("script");i.setAttribute("src",b);i.setAttribute("type","text/javascript");i.setAttribute("id",m.scriptId);this.head.appendChild(i);this.trans=m},createCallback:function(d,b,c){var a=this;return function(e){a.trans=false;a.destroyTrans(c,true);if(d===Ext.data.Api.actions.read){a.onRead.call(a,d,c,e)}else{a.onWrite.call(a,d,c,e,b)}}},onRead:function(d,c,b){var a;try{a=c.reader.readRecords(b)}catch(g){this.fireEvent("loadexception",this,c,b,g);this.fireEvent("exception",this,"response",d,c,b,g);c.callback.call(c.scope||window,null,c.arg,false);return}if(a.success===false){this.fireEvent("loadexception",this,c,b);this.fireEvent("exception",this,"remote",d,c,b,null)}else{this.fireEvent("load",this,b,c.arg)}c.callback.call(c.scope||window,a,c.arg,a.success)},onWrite:function(h,g,c,b){var a=g.reader;try{var d=a.readResponse(h,c)}catch(i){this.fireEvent("exception",this,"response",h,g,d,i);g.callback.call(g.scope||window,null,d,false);return}if(!d.success===true){this.fireEvent("exception",this,"remote",h,g,d,b);g.callback.call(g.scope||window,null,d,false);return}this.fireEvent("write",this,h,d.data,d,b,g.arg);g.callback.call(g.scope||window,d.data,d,true)},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){}}}},handleFailure:function(a){this.trans=false;this.destroyTrans(a,false);if(a.action===Ext.data.Api.actions.read){this.fireEvent("loadexception",this,null,a.arg)}this.fireEvent("exception",this,"response",a.action,{response:null,options:a.arg});a.callback.call(a.scope||window,null,a.arg,false)},destroy:function(){this.abort();Ext.data.ScriptTagProxy.superclass.destroy.call(this)}});Ext.data.HttpProxy=function(a){Ext.data.HttpProxy.superclass.constructor.call(this,a);this.conn=a;this.conn.url=null;this.useAjax=!a||!a.events;var c=Ext.data.Api.actions;this.activeRequest={};for(var b in c){this.activeRequest[c[b]]=undefined}};Ext.extend(Ext.data.HttpProxy,Ext.data.DataProxy,{getConnection:function(){return this.useAjax?Ext.Ajax:this.conn},setUrl:function(a,b){this.conn.url=a;if(b===true){this.url=a;this.api=null;Ext.data.Api.prepare(this)}},doRequest:function(g,d,i,c,b,e,a){var h={method:(this.api[g])?this.api[g]["method"]:undefined,request:{callback:b,scope:e,arg:a},reader:c,callback:this.createCallback(g,d),scope:this};if(i.jsonData){h.jsonData=i.jsonData}else{if(i.xmlData){h.xmlData=i.xmlData}else{h.params=i||{}}}this.conn.url=this.buildUrl(g,d);if(this.useAjax){Ext.applyIf(h,this.conn);if(this.activeRequest[g]){}this.activeRequest[g]=Ext.Ajax.request(h)}else{this.conn.request(h)}this.conn.url=null},createCallback:function(b,a){return function(e,d,c){this.activeRequest[b]=undefined;if(!d){if(b===Ext.data.Api.actions.read){this.fireEvent("loadexception",this,e,c)}this.fireEvent("exception",this,"response",b,e,c);e.request.callback.call(e.request.scope,null,e.request.arg,false);return}if(b===Ext.data.Api.actions.read){this.onRead(b,e,c)}else{this.onWrite(b,e,c,a)}}},onRead:function(d,h,b){var a;try{a=h.reader.read(b)}catch(g){this.fireEvent("loadexception",this,h,b,g);this.fireEvent("exception",this,"response",d,h,b,g);h.request.callback.call(h.request.scope,null,h.request.arg,false);return}if(a.success===false){this.fireEvent("loadexception",this,h,b);var c=h.reader.readResponse(d,b);this.fireEvent("exception",this,"remote",d,h,c,null)}else{this.fireEvent("load",this,h,h.request.arg)}h.request.callback.call(h.request.scope,a,h.request.arg,a.success)},onWrite:function(g,i,c,b){var a=i.reader;var d;try{d=a.readResponse(g,c)}catch(h){this.fireEvent("exception",this,"response",g,i,c,h);i.request.callback.call(i.request.scope,null,i.request.arg,false);return}if(d.success===true){this.fireEvent("write",this,g,d.data,d,b,i.request.arg)}else{this.fireEvent("exception",this,"remote",g,i,d,b)}i.request.callback.call(i.request.scope,d.data,d,d.success)},destroy:function(){if(!this.useAjax){this.conn.abort()}else{if(this.activeRequest){var b=Ext.data.Api.actions;for(var a in b){if(this.activeRequest[b[a]]){Ext.Ajax.abort(this.activeRequest[b[a]])}}}}Ext.data.HttpProxy.superclass.destroy.call(this)}});Ext.data.MemoryProxy=function(b){var a={};a[Ext.data.Api.actions.read]=true;Ext.data.MemoryProxy.superclass.constructor.call(this,{api:a});this.data=b};Ext.extend(Ext.data.MemoryProxy,Ext.data.DataProxy,{doRequest:function(b,c,a,d,h,i,j){a=a||{};var k;try{k=d.readRecords(this.data)}catch(g){this.fireEvent("loadexception",this,null,j,g);this.fireEvent("exception",this,"response",b,j,null,g);h.call(i,null,j,false);return}h.call(i,k,j,true)}});Ext.data.Types=new function(){var a=Ext.data.SortTypes;Ext.apply(this,{stripRe:/[\$,%]/g,AUTO:{convert:function(b){return b},sortType:a.none,type:"auto"},STRING:{convert:function(b){return(b===undefined||b===null)?"":String(b)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){return b===true||b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateFormat;if(!c){return null}if(Ext.isDate(c)){return c}if(d){if(d=="timestamp"){return new Date(c*1000)}if(d=="time"){return new Date(parseInt(c,10))}return Date.parseDate(c,d)}var b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(this,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})};Ext.data.JsonWriter=Ext.extend(Ext.data.DataWriter,{encode:true,encodeDelete:false,constructor:function(a){Ext.data.JsonWriter.superclass.constructor.call(this,a)},render:function(c,d,b){if(this.encode===true){Ext.apply(c,d);c[this.meta.root]=Ext.encode(b)}else{var a=Ext.apply({},d);a[this.meta.root]=b;c.jsonData=a}},createRecord:function(a){return this.toHash(a)},updateRecord:function(a){return this.toHash(a)},destroyRecord:function(b){if(this.encodeDelete){var a={};a[this.meta.idProperty]=b.id;return a}else{return b.id}}});Ext.data.JsonReader=function(a,b){a=a||{};Ext.applyIf(a,{idProperty:"id",successProperty:"success",totalProperty:"total"});Ext.data.JsonReader.superclass.constructor.call(this,a,b||a.fields)};Ext.extend(Ext.data.JsonReader,Ext.data.DataReader,{read:function(a){var b=a.responseText;var c=Ext.decode(b);if(!c){throw {message:"JsonReader.read: Json object not found"}}return this.readRecords(c)},readResponse:function(e,b){var h=(b.responseText!==undefined)?Ext.decode(b.responseText):b;if(!h){throw new Ext.data.JsonReader.Error("response")}var a=this.getRoot(h),g=this.getSuccess(h);if(g&&e===Ext.data.Api.actions.create){var d=Ext.isDefined(a);if(d&&Ext.isEmpty(a)){throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)}else{if(!d){throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)}}}var c=new Ext.data.Response({action:e,success:g,data:(a)?this.extractData(a,false):[],message:this.getMessage(h),raw:h});if(Ext.isEmpty(c.success)){throw new Ext.data.JsonReader.Error("successProperty-response",this.meta.successProperty)}return c},readRecords:function(a){this.jsonData=a;if(a.metaData){this.onMetaChange(a.metaData)}var m=this.meta,h=this.recordType,b=h.prototype.fields,l=b.items,i=b.length,j;var g=this.getRoot(a),e=g.length,d=e,k=true;if(m.totalProperty){j=parseInt(this.getTotal(a),10);if(!isNaN(j)){d=j}}if(m.successProperty){j=this.getSuccess(a);if(j===false||j==="false"){k=false}}return{success:k,records:this.extractData(g,true),totalRecords:d}},buildExtractors:function(){if(this.ef){return}var l=this.meta,h=this.recordType,e=h.prototype.fields,k=e.items,j=e.length;if(l.totalProperty){this.getTotal=this.createAccessor(l.totalProperty)}if(l.successProperty){this.getSuccess=this.createAccessor(l.successProperty)}if(l.messageProperty){this.getMessage=this.createAccessor(l.messageProperty)}this.getRoot=l.root?this.createAccessor(l.root):function(g){return g};if(l.id||l.idProperty){var d=this.createAccessor(l.id||l.idProperty);this.getId=function(i){var g=d(i);return(g===undefined||g==="")?null:g}}else{this.getId=function(){return null}}var c=[];for(var b=0;b<j;b++){e=k[b];var a=(e.mapping!==undefined&&e.mapping!==null)?e.mapping:e.name;c.push(this.createAccessor(a))}this.ef=c},simpleAccess:function(b,a){return b[a]},createAccessor:function(){var a=/[\[\.]/;return function(c){if(Ext.isEmpty(c)){return Ext.emptyFn}if(Ext.isFunction(c)){return c}var b=String(c).search(a);if(b>=0){return new Function("obj","return obj"+(b>0?".":"")+c)}return function(d){return d[c]}}}(),extractValues:function(h,d,a){var g,c={};for(var e=0;e<a;e++){g=d[e];var b=this.ef[e](h);c[g.name]=g.convert((b!==undefined)?b:g.defaultValue,h)}return c}});Ext.data.JsonReader.Error=Ext.extend(Ext.Error,{constructor:function(b,a){this.arg=a;Ext.Error.call(this,b)},name:"Ext.data.JsonReader"});Ext.apply(Ext.data.JsonReader.Error.prototype,{lang:{response:"An error occurred while json-decoding your server response","successProperty-response":'Could not locate your "successProperty" in your server response.  Please review your JsonReader config to ensure the config-property "successProperty" matches the property in your server-response.  See the JsonReader docs.',"root-undefined-config":'Your JsonReader was configured without a "root" property.  Please review your JsonReader config and make sure to define the root property.  See the JsonReader docs.',"idProperty-undefined":'Your JsonReader was configured without an "idProperty"  Please review your JsonReader configuration and ensure the "idProperty" is set (e.g.: "id").  See the JsonReader docs.',"root-empty":'Data was expected to be returned by the server in the "root" property of the response.  Please review your JsonReader configuration to ensure the "root" property matches that returned in the server-response.  See JsonReader docs.'}});Ext.data.ArrayReader=Ext.extend(Ext.data.JsonReader,{readRecords:function(r){this.arrayData=r;var l=this.meta,d=l?Ext.num(l.idIndex,l.id):null,b=this.recordType,q=b.prototype.fields,z=[],e=true,g;var u=this.getRoot(r);for(var y=0,A=u.length;y<A;y++){var t=u[y],a={},p=((d||d===0)&&t[d]!==undefined&&t[d]!==""?t[d]:null);for(var x=0,m=q.length;x<m;x++){var B=q.items[x],w=B.mapping!==undefined&&B.mapping!==null?B.mapping:x;g=t[w]!==undefined?t[w]:B.defaultValue;g=B.convert(g,t);a[B.name]=g}var c=new b(a,p);c.json=t;z[z.length]=c}var h=z.length;if(l.totalProperty){g=parseInt(this.getTotal(r),10);if(!isNaN(g)){h=g}}if(l.successProperty){g=this.getSuccess(r);if(g===false||g==="false"){e=false}}return{success:e,records:z,totalRecords:h}}});Ext.data.ArrayStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.ArrayStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.ArrayReader(a)}))},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.ArrayStore.superclass.loadData.call(this,e,b)}});Ext.reg("arraystore",Ext.data.ArrayStore);Ext.data.SimpleStore=Ext.data.ArrayStore;Ext.reg("simplestore",Ext.data.SimpleStore);Ext.data.JsonStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.JsonStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.JsonReader(a)}))}});Ext.reg("jsonstore",Ext.data.JsonStore);Ext.data.XmlWriter=function(a){Ext.data.XmlWriter.superclass.constructor.apply(this,arguments);this.tpl=(typeof(this.tpl)==="string")?new Ext.XTemplate(this.tpl).compile():this.tpl.compile()};Ext.extend(Ext.data.XmlWriter,Ext.data.DataWriter,{documentRoot:"xrequest",forceDocumentRoot:false,root:"records",xmlVersion:"1.0",xmlEncoding:"ISO-8859-15",tpl:'<tpl for="."><\u003fxml version="{version}" encoding="{encoding}"\u003f><tpl if="documentRoot"><{documentRoot}><tpl for="baseParams"><tpl for="."><{name}>{value}</{name}></tpl></tpl></tpl><tpl if="records.length&gt;1"><{root}></tpl><tpl for="records"><{parent.record}><tpl for="."><{name}>{value}</{name}></tpl></{parent.record}></tpl><tpl if="records.length&gt;1"></{root}></tpl><tpl if="documentRoot"></{documentRoot}></tpl></tpl>',render:function(b,c,a){c=this.toArray(c);b.xmlData=this.tpl.applyTemplate({version:this.xmlVersion,encoding:this.xmlEncoding,documentRoot:(c.length>0||this.forceDocumentRoot===true)?this.documentRoot:false,record:this.meta.record,root:this.root,baseParams:c,records:(Ext.isArray(a[0]))?a:[a]})},createRecord:function(a){return this.toArray(this.toHash(a))},updateRecord:function(a){return this.toArray(this.toHash(a))},destroyRecord:function(b){var a={};a[this.meta.idProperty]=b.id;return this.toArray(a)}});Ext.data.XmlReader=function(a,b){a=a||{};Ext.applyIf(a,{idProperty:a.idProperty||a.idPath||a.id,successProperty:a.successProperty||a.success});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(d){this.xmlData=d;var a=d.documentElement||d,c=Ext.DomQuery,g=0,e=true;if(this.meta.totalProperty){g=this.getTotal(a,0)}if(this.meta.successProperty){e=this.getSuccess(a)}var b=this.extractData(c.select(this.meta.record,a),true);return{success:e,records:b,totalRecords:g||b.length}},readResponse:function(g,b){var e=Ext.DomQuery,h=b.responseXML,a=h.documentElement||h;var c=new Ext.data.Response({action:g,success:this.getSuccess(a),message:this.getMessage(a),data:this.extractData(e.select(this.meta.record,a)||e.select(this.meta.root,a),false),raw:h});if(Ext.isEmpty(c.success)){throw new Ext.data.DataReader.Error("successProperty-response",this.meta.successProperty)}if(g===Ext.data.Api.actions.create){var d=Ext.isDefined(c.data);if(d&&Ext.isEmpty(c.data)){throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)}else{if(!d){throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)}}}return c},getSuccess:function(){return true},buildExtractors:function(){if(this.ef){return}var l=this.meta,h=this.recordType,e=h.prototype.fields,k=e.items,j=e.length;if(l.totalProperty){this.getTotal=this.createAccessor(l.totalProperty)}if(l.successProperty){this.getSuccess=this.createAccessor(l.successProperty)}if(l.messageProperty){this.getMessage=this.createAccessor(l.messageProperty)}this.getRoot=function(g){return(!Ext.isEmpty(g[this.meta.record]))?g[this.meta.record]:g[this.meta.root]};if(l.idPath||l.idProperty){var d=this.createAccessor(l.idPath||l.idProperty);this.getId=function(g){var i=d(g)||g.id;return(i===undefined||i==="")?null:i}}else{this.getId=function(){return null}}var c=[];for(var b=0;b<j;b++){e=k[b];var a=(e.mapping!==undefined&&e.mapping!==null)?e.mapping:e.name;c.push(this.createAccessor(a))}this.ef=c},createAccessor:function(){var a=Ext.DomQuery;return function(b){if(Ext.isFunction(b)){return b}switch(b){case this.meta.totalProperty:return function(c,d){return a.selectNumber(b,c,d)};break;case this.meta.successProperty:return function(d,e){var c=a.selectValue(b,d,true);var g=c!==false&&c!=="false";return g};break;default:return function(c,d){return a.selectValue(b,c,d)};break}}}(),extractValues:function(h,d,a){var g,c={};for(var e=0;e<a;e++){g=d[e];var b=this.ef[e](h);c[g.name]=g.convert((b!==undefined)?b:g.defaultValue,h)}return c}});Ext.data.XmlStore=Ext.extend(Ext.data.Store,{constructor:function(a){Ext.data.XmlStore.superclass.constructor.call(this,Ext.apply(a,{reader:new Ext.data.XmlReader(a)}))}});Ext.reg("xmlstore",Ext.data.XmlStore);Ext.data.GroupingStore=Ext.extend(Ext.data.Store,{constructor:function(d){d=d||{};this.hasMultiSort=true;this.multiSortInfo=this.multiSortInfo||{sorters:[]};var e=this.multiSortInfo.sorters,c=d.groupField||this.groupField,b=d.sortInfo||this.sortInfo,a=d.groupDir||this.groupDir;if(c){e.push({field:c,direction:a})}if(b){e.push(b)}Ext.data.GroupingStore.superclass.constructor.call(this,d);this.addEvents("groupchange");this.applyGroupField()},remoteGroup:false,groupOnSort:false,groupDir:"ASC",clearGrouping:function(){this.groupField=false;if(this.remoteGroup){if(this.baseParams){delete this.baseParams.groupBy;delete this.baseParams.groupDir}var a=this.lastOptions;if(a&&a.params){delete a.params.groupBy;delete a.params.groupDir}this.reload()}else{this.sort();this.fireEvent("datachanged",this)}},groupBy:function(e,a,d){d=d?(String(d).toUpperCase()=="DESC"?"DESC":"ASC"):this.groupDir;if(this.groupField==e&&this.groupDir==d&&!a){return}var c=this.multiSortInfo.sorters;if(c.length>0&&c[0].field==this.groupField){c.shift()}this.groupField=e;this.groupDir=d;this.applyGroupField();var b=function(){this.fireEvent("groupchange",this,this.getGroupState())};if(this.groupOnSort){this.sort(e,d);b.call(this);return}if(this.remoteGroup){this.on("load",b,this,{single:true});this.reload()}else{this.sort(c);b.call(this)}},sort:function(h,c){if(this.remoteSort){return Ext.data.GroupingStore.superclass.sort.call(this,h,c)}var g=[];if(Ext.isArray(arguments[0])){g=arguments[0]}else{if(h==undefined){g=this.sortInfo?[this.sortInfo]:[]}else{var e=this.fields.get(h);if(!e){return false}var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;if(!c){if(a&&a.field==b){c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")}else{c=e.sortDir}}this.sortToggle[b]=c;this.sortInfo={field:b,direction:c};g=[this.sortInfo]}}if(this.groupField){g.unshift({direction:this.groupDir,field:this.groupField})}return this.multiSort.call(this,g,c)},applyGroupField:function(){if(this.remoteGroup){if(!this.baseParams){this.baseParams={}}Ext.apply(this.baseParams,{groupBy:this.groupField,groupDir:this.groupDir});var a=this.lastOptions;if(a&&a.params){a.params.groupDir=this.groupDir;delete a.params.groupBy}}},applyGrouping:function(a){if(this.groupField!==false){this.groupBy(this.groupField,true,this.groupDir);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.reg("groupingstore",Ext.data.GroupingStore);Ext.data.DirectProxy=function(a){Ext.apply(this,a);if(typeof this.paramOrder=="string"){this.paramOrder=this.paramOrder.split(/[\s,|]/)}Ext.data.DirectProxy.superclass.constructor.call(this,a)};Ext.extend(Ext.data.DirectProxy,Ext.data.DataProxy,{paramOrder:undefined,paramsAsHash:true,directFn:undefined,doRequest:function(b,c,a,e,k,l,n){var j=[],h=this.api[b]||this.directFn;switch(b){case Ext.data.Api.actions.create:j.push(a.jsonData);break;case Ext.data.Api.actions.read:if(h.directCfg.method.len>0){if(this.paramOrder){for(var d=0,g=this.paramOrder.length;d<g;d++){j.push(a[this.paramOrder[d]])}}else{if(this.paramsAsHash){j.push(a)}}}break;case Ext.data.Api.actions.update:j.push(a.jsonData);break;case Ext.data.Api.actions.destroy:j.push(a.jsonData);break}var m={params:a||{},request:{callback:k,scope:l,arg:n},reader:e};j.push(this.createCallback(b,c,m),this);h.apply(window,j)},createCallback:function(d,a,b){var c=this;return function(e,g){if(!g.status){if(d===Ext.data.Api.actions.read){c.fireEvent("loadexception",c,b,g,null)}c.fireEvent("exception",c,"remote",d,b,g,null);b.request.callback.call(b.request.scope,null,b.request.arg,false);return}if(d===Ext.data.Api.actions.read){c.onRead(d,b,e,g)}else{c.onWrite(d,b,e,g,a)}}},onRead:function(g,e,a,d){var b;try{b=e.reader.readRecords(a)}catch(c){this.fireEvent("loadexception",this,e,d,c);this.fireEvent("exception",this,"response",g,e,d,c);e.request.callback.call(e.request.scope,null,e.request.arg,false);return}this.fireEvent("load",this,d,e.request.arg);e.request.callback.call(e.request.scope,b,e.request.arg,true)},onWrite:function(g,d,a,c,b){var e=d.reader.extractData(d.reader.getRoot(a),false);var h=d.reader.getSuccess(a);h=(h!==false);if(h){this.fireEvent("write",this,g,e,c,b,d.request.arg)}else{this.fireEvent("exception",this,"remote",g,d,a,b)}d.request.callback.call(d.request.scope,e,c,h)}});Ext.data.DirectStore=Ext.extend(Ext.data.Store,{constructor:function(a){var b=Ext.apply({},{batchTransactions:false},a);Ext.data.DirectStore.superclass.constructor.call(this,Ext.apply(b,{proxy:Ext.isDefined(b.proxy)?b.proxy:new Ext.data.DirectProxy(Ext.copyTo({},b,"paramOrder,paramsAsHash,directFn,api")),reader:(!Ext.isDefined(b.reader)&&b.fields)?new Ext.data.JsonReader(Ext.copyTo({},b,"totalProperty,root,idProperty"),b.fields):b.reader}))}});Ext.reg("directstore",Ext.data.DirectStore);Ext.Direct=Ext.extend(Ext.util.Observable,{exceptions:{TRANSPORT:"xhr",PARSE:"parse",LOGIN:"login",SERVER:"exception"},constructor:function(){this.addEvents("event","exception");this.transactions={};this.providers={}},addProvider:function(e){var c=arguments;if(c.length>1){for(var d=0,b=c.length;d<b;d++){this.addProvider(c[d])}return}if(!e.events){e=new Ext.Direct.PROVIDERS[e.type](e)}e.id=e.id||Ext.id();this.providers[e.id]=e;e.on("data",this.onProviderData,this);e.on("exception",this.onProviderException,this);if(!e.isConnected()){e.connect()}return e},getProvider:function(a){return this.providers[a]},removeProvider:function(b){var a=b.id?b:this.providers[b];a.un("data",this.onProviderData,this);a.un("exception",this.onProviderException,this);delete this.providers[a.id];return a},addTransaction:function(a){this.transactions[a.tid]=a;return a},removeTransaction:function(a){delete this.transactions[a.tid||a];return a},getTransaction:function(a){return this.transactions[a.tid||a]},onProviderData:function(d,c){if(Ext.isArray(c)){for(var b=0,a=c.length;b<a;b++){this.onProviderData(d,c[b])}return}if(c.name&&c.name!="event"&&c.name!="exception"){this.fireEvent(c.name,c)}else{if(c.type=="exception"){this.fireEvent("exception",c)}}this.fireEvent("event",c,d)},createEvent:function(a,b){return new Ext.Direct.eventTypes[a.type](Ext.apply(a,b))}});Ext.Direct=new Ext.Direct();Ext.Direct.TID=1;Ext.Direct.PROVIDERS={};Ext.Direct.Transaction=function(a){Ext.apply(this,a);this.tid=++Ext.Direct.TID;this.retryCount=0};Ext.Direct.Transaction.prototype={send:function(){this.provider.queueTransaction(this)},retry:function(){this.retryCount++;this.send()},getProvider:function(){return this.provider}};Ext.Direct.Event=function(a){Ext.apply(this,a)};Ext.Direct.Event.prototype={status:true,getData:function(){return this.data}};Ext.Direct.RemotingEvent=Ext.extend(Ext.Direct.Event,{type:"rpc",getTransaction:function(){return this.transaction||Ext.Direct.getTransaction(this.tid)}});Ext.Direct.ExceptionEvent=Ext.extend(Ext.Direct.RemotingEvent,{status:false,type:"exception"});Ext.Direct.eventTypes={rpc:Ext.Direct.RemotingEvent,event:Ext.Direct.Event,exception:Ext.Direct.ExceptionEvent};Ext.direct.Provider=Ext.extend(Ext.util.Observable,{priority:1,constructor:function(a){Ext.apply(this,a);this.addEvents("connect","disconnect","data","exception");Ext.direct.Provider.superclass.constructor.call(this,a)},isConnected:function(){return false},connect:Ext.emptyFn,disconnect:Ext.emptyFn});Ext.direct.JsonProvider=Ext.extend(Ext.direct.Provider,{parseResponse:function(a){if(!Ext.isEmpty(a.responseText)){if(typeof a.responseText=="object"){return a.responseText}return Ext.decode(a.responseText)}return null},getEvents:function(j){var g=null;try{g=this.parseResponse(j)}catch(h){var d=new Ext.Direct.ExceptionEvent({data:h,xhr:j,code:Ext.Direct.exceptions.PARSE,message:"Error parsing json response: \n\n "+g});return[d]}var c=[];if(Ext.isArray(g)){for(var b=0,a=g.length;b<a;b++){c.push(Ext.Direct.createEvent(g[b]))}}else{c.push(Ext.Direct.createEvent(g))}return c}});Ext.direct.PollingProvider=Ext.extend(Ext.direct.JsonProvider,{priority:3,interval:3000,constructor:function(a){Ext.direct.PollingProvider.superclass.constructor.call(this,a);this.addEvents("beforepoll","poll")},isConnected:function(){return !!this.pollTask},connect:function(){if(this.url&&!this.pollTask){this.pollTask=Ext.TaskMgr.start({run:function(){if(this.fireEvent("beforepoll",this)!==false){if(typeof this.url=="function"){this.url(this.baseParams)}else{Ext.Ajax.request({url:this.url,callback:this.onData,scope:this,params:this.baseParams})}}},interval:this.interval,scope:this});this.fireEvent("connect",this)}else{if(!this.url){throw"Error initializing PollingProvider, no url configured."}}},disconnect:function(){if(this.pollTask){Ext.TaskMgr.stop(this.pollTask);delete this.pollTask;this.fireEvent("disconnect",this)}},onData:function(d,j,h){if(j){var c=this.getEvents(h);for(var b=0,a=c.length;b<a;b++){var g=c[b];this.fireEvent("data",this,g)}}else{var g=new Ext.Direct.ExceptionEvent({data:g,code:Ext.Direct.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:h});this.fireEvent("data",this,g)}}});Ext.Direct.PROVIDERS.polling=Ext.direct.PollingProvider;Ext.direct.RemotingProvider=Ext.extend(Ext.direct.JsonProvider,{enableBuffer:10,maxRetries:1,timeout:undefined,constructor:function(a){Ext.direct.RemotingProvider.superclass.constructor.call(this,a);this.addEvents("beforecall","call");this.namespace=(Ext.isString(this.namespace))?Ext.ns(this.namespace):this.namespace||window;this.transactions={};this.callBuffer=[]},initAPI:function(){var h=this.actions;for(var j in h){var d=this.namespace[j]||(this.namespace[j]={}),e=h[j];for(var g=0,b=e.length;g<b;g++){var a=e[g];d[a.name]=this.createMethod(j,a)}}},isConnected:function(){return !!this.connected},connect:function(){if(this.url){this.initAPI();this.connected=true;this.fireEvent("connect",this)}else{if(!this.url){throw"Error initializing RemotingProvider, no url configured."}}},disconnect:function(){if(this.connected){this.connected=false;this.fireEvent("disconnect",this)}},onData:function(a,h,j){if(h){var k=this.getEvents(j);for(var b=0,c=k.length;b<c;b++){var d=k[b],l=this.getTransaction(d);this.fireEvent("data",this,d);if(l){this.doCallback(l,d,true);Ext.Direct.removeTransaction(l)}}}else{var g=[].concat(a.ts);for(var b=0,c=g.length;b<c;b++){var l=this.getTransaction(g[b]);if(l&&l.retryCount<this.maxRetries){l.retry()}else{var d=new Ext.Direct.ExceptionEvent({data:d,transaction:l,code:Ext.Direct.exceptions.TRANSPORT,message:"Unable to connect to the server.",xhr:j});this.fireEvent("data",this,d);if(l){this.doCallback(l,d,false);Ext.Direct.removeTransaction(l)}}}}},getCallData:function(a){return{action:a.action,method:a.method,data:a.data,type:"rpc",tid:a.tid}},doSend:function(d){var g={url:this.url,callback:this.onData,scope:this,ts:d,timeout:this.timeout},b;if(Ext.isArray(d)){b=[];for(var c=0,a=d.length;c<a;c++){b.push(this.getCallData(d[c]))}}else{b=this.getCallData(d)}if(this.enableUrlEncode){var e={};e[Ext.isString(this.enableUrlEncode)?this.enableUrlEncode:"data"]=Ext.encode(b);g.params=e}else{g.jsonData=b}Ext.Ajax.request(g)},combineAndSend:function(){var a=this.callBuffer.length;if(a>0){this.doSend(a==1?this.callBuffer[0]:this.callBuffer);this.callBuffer=[]}},queueTransaction:function(a){if(a.form){this.processForm(a);return}this.callBuffer.push(a);if(this.enableBuffer){if(!this.callTask){this.callTask=new Ext.util.DelayedTask(this.combineAndSend,this)}this.callTask.delay(Ext.isNumber(this.enableBuffer)?this.enableBuffer:10)}else{this.combineAndSend()}},doCall:function(i,a,b){var h=null,e=b[a.len],g=b[a.len+1];if(a.len!==0){h=b.slice(0,a.len)}var d=new Ext.Direct.Transaction({provider:this,args:b,action:i,method:a.name,data:h,cb:g&&Ext.isFunction(e)?e.createDelegate(g):e});if(this.fireEvent("beforecall",this,d,a)!==false){Ext.Direct.addTransaction(d);this.queueTransaction(d);this.fireEvent("call",this,d,a)}},doForm:function(j,b,g,i,e){var d=new Ext.Direct.Transaction({provider:this,action:j,method:b.name,args:[g,i,e],cb:e&&Ext.isFunction(i)?i.createDelegate(e):i,isForm:true});if(this.fireEvent("beforecall",this,d,b)!==false){Ext.Direct.addTransaction(d);var a=String(g.getAttribute("enctype")).toLowerCase()=="multipart/form-data",h={extTID:d.tid,extAction:j,extMethod:b.name,extType:"rpc",extUpload:String(a)};Ext.apply(d,{form:Ext.getDom(g),isUpload:a,params:i&&Ext.isObject(i.params)?Ext.apply(h,i.params):h});this.fireEvent("call",this,d,b);this.processForm(d)}},processForm:function(a){Ext.Ajax.request({url:this.url,params:a.params,callback:this.onData,scope:this,form:a.form,isUpload:a.isUpload,ts:a})},createMethod:function(d,a){var b;if(!a.formHandler){b=function(){this.doCall(d,a,Array.prototype.slice.call(arguments,0))}.createDelegate(this)}else{b=function(e,g,c){this.doForm(d,a,e,g,c)}.createDelegate(this)}b.directCfg={action:d,method:a};return b},getTransaction:function(a){return a&&a.tid?Ext.Direct.getTransaction(a.tid):null},doCallback:function(c,g){var d=g.status?"success":"failure";if(c&&c.cb){var b=c.cb,a=Ext.isDefined(g.result)?g.result:g.data;if(Ext.isFunction(b)){b(a,g)}else{Ext.callback(b[d],b.scope,[a,g]);Ext.callback(b.callback,b.scope,[a,g])}}}});Ext.Direct.PROVIDERS.remoting=Ext.direct.RemotingProvider;Ext.Resizable=Ext.extend(Ext.util.Observable,{constructor: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 g=e.resizeChild.getSize();this.el.setSize(g.width,g.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"},Ext.getBody());this.proxy.unselectable();this.proxy.enableDisplayMode("block");Ext.apply(this,e);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned")}var k=this.el.getStyle("position");if(k!="absolute"&&k!="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 o=this.handles.split(/\s*?[,;]\s*?| /);var c=Ext.Resizable.positions;for(var j=0,l=o.length;j<l;j++){if(o[j]&&c[o[j]]){var n=c[o[j]];this[n]=new Ext.Resizable.Handle(this,n,this.disableTrackOver,this.transparent,this.handleCls)}}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 m=this.west,h=this.east,a=this.north,o=this.south;if(b&&(m||a)){b.position("relative");b.setLeft(m?m.el.getWidth():0);b.setTop(a?a.el.getHeight():0)}this.adjustments=[(h?-h.el.getWidth():0)+(m?-m.el.getWidth():0),(a?-a.el.getHeight():0)+(o?-o.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);if(this.constrainTo){this.dd.constrainTo(this.constrainTo)}}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)},adjustments:[0,0],animate:false,disableTrackOver:false,draggable:false,duration:0.35,dynamic:false,easing:"easeOutStrong",enabled:true,handles:false,multiDirectional:false,height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:5,minWidth:5,maxHeight:10000,maxWidth:10000,minX:0,minY:0,pinned:false,preserveRatio:false,resizeChild:false,transparent: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:"&#160;"},Ext.getBody());this.overlay.unselectable();this.overlay.enableDisplayMode("block");this.overlay.on({scope:this,mousemove:this.onMouseMove,mouseup:this.onMouseUp})}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){this.activeHandle=null;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 d=this.el;var e=this.resizeChild;var c=this.adjustments;if(d.dom.offsetWidth){var a=d.getSize(true);e.setSize(a.width+c[0],a.height+c[1])}if(Ext.isIE){setTimeout(function(){if(d.dom.offsetWidth){var g=d.getSize(true);e.setSize(g.width+c[0],g.height+c[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()}if(this.draggable&&this.constrainTo){this.dd.resetConstraints();this.dd.constrainTo(this.constrainTo)}return a},constrain:function(b,c,a,d){if(b-c<a){c=b-a}else{if(b-c>d){c=b-d}}return c},onMouseMove:function(z){if(this.enabled&&this.activeHandle){try{if(this.resizeRegion&&!this.resizeRegion.contains(z.getPoint())){return}var t=this.curSize||this.startBox,l=this.startBox.x,k=this.startBox.y,c=l,b=k,m=t.width,u=t.height,d=m,o=u,n=this.minWidth,A=this.minHeight,s=this.maxWidth,D=this.maxHeight,i=this.widthIncrement,a=this.heightIncrement,B=z.getXY(),r=-(this.startPoint[0]-Math.max(this.minX,B[0])),p=-(this.startPoint[1]-Math.max(this.minY,B[1])),j=this.activeHandle.position,E,g;switch(j){case"east":m+=r;m=Math.min(Math.max(n,m),s);break;case"south":u+=p;u=Math.min(Math.max(A,u),D);break;case"southeast":m+=r;u+=p;m=Math.min(Math.max(n,m),s);u=Math.min(Math.max(A,u),D);break;case"north":p=this.constrain(u,p,A,D);k+=p;u-=p;break;case"west":r=this.constrain(m,r,n,s);l+=r;m-=r;break;case"northeast":m+=r;m=Math.min(Math.max(n,m),s);p=this.constrain(u,p,A,D);k+=p;u-=p;break;case"northwest":r=this.constrain(m,r,n,s);p=this.constrain(u,p,A,D);k+=p;u-=p;l+=r;m-=r;break;case"southwest":r=this.constrain(m,r,n,s);u+=p;u=Math.min(Math.max(A,u),D);l+=r;m-=r;break}var q=this.snap(m,i,n);var C=this.snap(u,a,A);if(q!=m||C!=u){switch(j){case"northeast":k-=C-u;break;case"north":k-=C-u;break;case"southwest":l-=q-m;break;case"west":l-=q-m;break;case"northwest":l-=q-m;k-=C-u;break}m=q;u=C}if(this.preserveRatio){switch(j){case"southeast":case"east":u=o*(m/d);u=Math.min(Math.max(A,u),D);m=d*(u/o);break;case"south":m=d*(u/o);m=Math.min(Math.max(n,m),s);u=o*(m/d);break;case"northeast":m=d*(u/o);m=Math.min(Math.max(n,m),s);u=o*(m/d);break;case"north":E=m;m=d*(u/o);m=Math.min(Math.max(n,m),s);u=o*(m/d);l+=(E-m)/2;break;case"southwest":u=o*(m/d);u=Math.min(Math.max(A,u),D);E=m;m=d*(u/o);l+=E-m;break;case"west":g=u;u=o*(m/d);u=Math.min(Math.max(A,u),D);k+=(g-u)/2;E=m;m=d*(u/o);l+=E-m;break;case"northwest":E=m;g=u;u=o*(m/d);u=Math.min(Math.max(A,u),D);m=d*(u/o);k+=g-u;l+=E-m;break}}this.proxy.setBounds(l,k,m,u);if(this.dynamic){this.resizeElement()}}catch(v){}}},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(b){Ext.destroy(this.dd,this.overlay,this.proxy);this.overlay=null;this.proxy=null;var c=Ext.Resizable.positions;for(var a in c){if(typeof c[a]!="function"&&this[c[a]]){this[c[a]].destroy()}}if(b){this.el.update("");Ext.destroy(this.el);this.el=null}this.purgeListeners()},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=Ext.extend(Object,{constructor:function(d,g,c,e,a){if(!this.tpl){var b=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});b.compile();Ext.Resizable.Handle.prototype.tpl=b}this.position=g;this.rz=d;this.el=this.tpl.append(d.el.dom,[this.position],true);this.el.unselectable();if(e){this.el.setOpacity(0)}if(!Ext.isEmpty(a)){this.el.addClass(a)}this.el.on("mousedown",this.onMouseDown,this);if(!c){this.el.on({scope:this,mouseover:this.onMouseOver,mouseout:this.onMouseOut})}},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)},destroy:function(){Ext.destroy(this.el);this.el=null}});Ext.Window=Ext.extend(Ext.Panel,{baseCls:"x-window",resizable:true,draggable:true,closable:true,closeAction:"close",constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:100,minWidth:200,expandOnShow:true,showAnimDuration:0.25,hideAnimDuration:0.25,collapsible:false,initHidden:undefined,hidden:true,elements:"header,body",frame:true,floating:true,initComponent:function(){this.initTools();Ext.Window.superclass.initComponent.call(this);this.addEvents("resize","maximize","minimize","restore");if(Ext.isDefined(this.initHidden)){this.hidden=this.initHidden}if(this.hidden===false){this.hidden=true;this.show()}},getState:function(){return Ext.apply(Ext.Window.superclass.getState.call(this)||{},this.getBox(true))},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:"&#160;"});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();this.mon(this.mask,"click",this.focus,this)}if(this.maximizable){this.mon(this.header,"dblclick",this.toggleMaximize,this)}},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,handleCls:"x-window-handle"});this.resizer.window=this;this.mon(this.resizer,"beforeresize",this.beforeResize,this)}if(this.draggable){this.header.addClass("x-window-draggable")}this.mon(this.el,"mousedown",this.toFront,this);this.manager=this.manager||Ext.WindowMgr;this.manager.register(this);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(a,b){if(this.activeGhost){this.unghost()}b.stopEvent();this[this.closeAction]()},beforeDestroy:function(){if(this.rendered){this.hide();this.clearAnchor();Ext.destroy(this.focusEl,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})}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);if(Ext.isIE6&&Ext.isStrict){this.doLayout()}}this.focus();this.updateHandles();this.saveState()},focus:function(){var e=this.focusEl,a=this.defaultButton,c=typeof a,d,b;if(Ext.isDefined(a)){if(Ext.isNumber(a)&&this.fbar){e=this.fbar.items.get(a)}else{if(Ext.isString(a)){e=Ext.getCmp(a)}else{e=a}}d=e.getEl();b=Ext.getDom(this.container);if(d&&b){if(b!=document.body&&!Ext.lib.Region.getRegion(b).contains(Ext.lib.Region.getRegion(d.dom))){return}}}e=e||this.focusEl;e.focus.defer(10,e)},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 this}if(this.fireEvent("beforeshow",this)===false){return this}if(a){this.on("show",a,b,{single:true})}this.hidden=false;if(Ext.isDefined(c)){this.setAnimateTarget(c)}this.beforeShow();if(this.animateTarget){this.animShow()}else{this.afterShow()}return this},afterShow:function(b){if(this.isDestroyed){return false}this.proxy.hide();this.el.setStyle("display","block");this.el.show();if(this.maximized){this.fitContainer()}if(Ext.isMac&&Ext.isGecko2){this.cascade(this.setAutoScroll)}if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.onWindowResize(this.onWindowResize,this)}this.doConstrain();this.doLayout();if(this.keyMap){this.keyMap.enable()}this.toFront();this.updateHandles();if(b&&(Ext.isIE||Ext.isWebKit)){var a=this.getSize();this.onResize(a.width,a.height)}this.onShow();this.fireEvent("show",this)},animShow:function(){this.proxy.show();this.proxy.setBox(this.animateTarget.getBox());this.proxy.setOpacity(0);var a=this.getBox();this.el.setStyle("display","none");this.proxy.shift(Ext.apply(a,{callback:this.afterShow.createDelegate(this,[true],false),scope:this,easing:"easeNone",duration:this.showAnimDuration,opacity:0.5}))},hide:function(c,a,b){if(this.hidden||this.fireEvent("beforehide",this)===false){return this}if(a){this.on("hide",a,b,{single:true})}this.hidden=true;if(c!==undefined){this.setAnimateTarget(c)}if(this.modal){this.mask.hide();Ext.getBody().removeClass("x-body-masked")}if(this.animateTarget){this.animHide()}else{this.el.hide();this.afterHide()}return this},afterHide:function(){this.proxy.hide();if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.removeResizeListener(this.onWindowResize,this)}if(this.keyMap){this.keyMap.disable()}this.onHide();this.fireEvent("hide",this)},animHide:function(){this.proxy.setOpacity(0.5);this.proxy.show();var a=this.getBox(false);this.proxy.setBox(a);this.el.hide();this.proxy.shift(Ext.apply(this.animateTarget.getBox(),{callback:this.afterHide,scope:this,duration:this.hideAnimDuration,easing:"easeNone",opacity:0}))},onShow:Ext.emptyFn,onHide:Ext.emptyFn,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+this.el.getConstrainOffset())}}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(!this.activeGhost){return}if(b!==false){this.el.show();this.focus.defer(10,this);if(Ext.isMac&&Ext.isGecko2){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);return this},close:function(){if(this.fireEvent("beforeclose",this)!==false){if(this.hidden){this.doClose()}else{this.hide(null,this.doClose,this)}}},doClose:function(){this.fireEvent("close",this);this.destroy()},maximize:function(){if(!this.maximized){this.expand(false);this.restoreSize=this.getSize();this.restorePos=this.getPosition(true);if(this.maximizable){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)}return this},restore:function(){if(this.maximized){var a=this.tools;this.el.removeClass("x-window-maximized");if(a.restore){a.restore.hide()}if(a.maximize){a.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&&a.toggle){a.toggle.show()}this.container.removeClass("x-window-maximized-ct");this.doConstrain();this.fireEvent("restore",this)}return this},toggleMaximize:function(){return this[this.maximized?"restore":"maximize"]()},fitContainer:function(){var a=this.container.getViewSize(false);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,e,d,b){this.clearAnchor();this.anchorTarget={el:c,alignment:e,offsets:d};Ext.EventManager.onWindowResize(this.doAnchor,this);var a=typeof b;if(a!="undefined"){Ext.EventManager.on(window,"scroll",this.doAnchor,this,{buffer:a=="number"?b:50})}return this.doAnchor()},doAnchor:function(){var a=this.anchorTarget;this.alignTo(a.el,a.alignment,a.offsets);return this},clearAnchor:function(){if(this.anchorTarget){Ext.EventManager.removeResizeListener(this.doAnchor,this);Ext.EventManager.un(window,"scroll",this.doAnchor,this);delete this.anchorTarget}return this},toFront:function(a){if(this.manager.bringToFront(this)){if(!a||!a.getTarget().focus){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=Ext.extend(Ext.dd.DD,{constructor: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},moveOnly:true,headerOffsets:[100,25],startDrag:function(){var a=this.win;this.proxy=a.ghost(a.initialConfig.cls);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 g={};var d=[];var e=null;var c=function(j,i){return(!j._lastAccess||j._lastAccess<i._lastAccess)?-1:1};var h=function(){var l=d,j=l.length;if(j>0){l.sort(c);var k=l[0].manager.zseed;for(var m=0;m<j;m++){var n=l[m];if(n&&!n.hidden){n.setZIndex(k+(m*10))}}}a()};var b=function(i){if(i!=e){if(e){e.setActive(false)}e=i;if(i){i.setActive(true)}}};var a=function(){for(var j=d.length-1;j>=0;--j){if(!d[j].hidden){b(d[j]);return}}b(null)};return{zseed:9000,register:function(i){if(i.manager){i.manager.unregister(i)}i.manager=this;g[i.id]=i;d.push(i);i.on("hide",a)},unregister:function(i){delete i.manager;delete g[i.id];i.un("hide",a);d.remove(i)},get:function(i){return typeof i=="object"?i:g[i]},bringToFront:function(i){i=this.get(i);if(i!=e){i._lastAccess=new Date().getTime();h();return true}return false},sendToBack:function(i){i=this.get(i);i._lastAccess=-(new Date().getTime());h();return i},hideAll:function(){for(var i in g){if(g[i]&&typeof g[i]!="function"&&g[i].isVisible()){g[i].hide()}}},getActive:function(){return e},getBy:function(l,k){var m=[];for(var j=d.length-1;j>=0;--j){var n=d[j];if(l.call(k||n,n)!==false){m.push(n)}}return m},each:function(j,i){for(var k in g){if(g[k]&&typeof g[k]!="function"){if(j.call(i||g[k],g[k])===false){return}}}}}};Ext.WindowMgr=new Ext.WindowGroup();Ext.MessageBox=function(){var u,b,q,t,h,l,s,a,n,p,j,g,r,v,o,i="",d="",m=["ok","yes","no","cancel"];var c=function(x){r[x].blur();if(u.isVisible()){u.hide();w();Ext.callback(b.fn,b.scope||window,[x,v.dom.value,b],1)}};var w=function(){if(b&&b.cls){u.el.removeClass(b.cls)}n.reset()};var e=function(z,x,y){if(b&&b.closable!==false){u.hide();w()}if(y){y.stopEvent()}};var k=function(x){var z=0,y;if(!x){Ext.each(m,function(A){r[A].hide()});return z}u.footer.dom.style.display="";Ext.iterate(r,function(A,B){y=x[A];if(y){B.show();B.setText(Ext.isString(y)?y:Ext.MessageBox.buttonText[A]);z+=B.getEl().getWidth()+15}else{B.hide()}});return z};return{getDialog:function(x){if(!u){var z=[];r={};Ext.each(m,function(A){z.push(r[A]=new Ext.Button({text:this.buttonText[A],handler:c.createCallback(A),hideMode:"offsets"}))},this);u=new Ext.Window({autoCreate:true,title:x,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){c("no")}else{c("cancel")}},fbar:new Ext.Toolbar({items:z,enableOverflow:false})});u.render(document.body);u.getEl().addClass("x-window-dlg");q=u.mask;h=u.body.createChild({html:'<div class="ext-mb-icon"></div><div class="ext-mb-content"><span class="ext-mb-text"></span><br /><div class="ext-mb-fix-cursor"><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea></div></div>'});j=Ext.get(h.dom.firstChild);var y=h.dom.childNodes[1];l=Ext.get(y.firstChild);s=Ext.get(y.childNodes[2].firstChild);s.enableDisplayMode();s.addKeyListener([10,13],function(){if(u.isVisible()&&b&&b.buttons){if(b.buttons.ok){c("ok")}else{if(b.buttons.yes){c("yes")}}}});a=Ext.get(y.childNodes[2].childNodes[1]);a.enableDisplayMode();n=new Ext.ProgressBar({renderTo:h});h.createChild({cls:"x-clear"})}return u},updateText:function(A){if(!u.isVisible()&&!b.width){u.setSize(this.maxWidth,100)}l.update(A?A+" ":"&#160;");var y=d!=""?(j.getWidth()+j.getMargins("lr")):0,C=l.getWidth()+l.getMargins("lr"),z=u.getFrameWidth("lr"),B=u.body.getFrameWidth("lr"),x;x=Math.max(Math.min(b.width||y+C+z+B,b.maxWidth||this.maxWidth),Math.max(b.minWidth||this.minWidth,o||0));if(b.prompt===true){v.setWidth(x-y-z-B)}if(b.progress===true||b.wait===true){n.setSize(x-y-z-B)}if(Ext.isIE&&x==o){x+=4}l.update(A||"&#160;");u.setSize(x,"auto").center();return this},updateProgress:function(y,x,z){n.updateProgress(y,x);if(z){this.updateText(z)}return this},isVisible:function(){return u&&u.isVisible()},hide:function(){var x=u?u.activeGhost:null;if(this.isVisible()||x){u.hide();w();if(x){u.unghost(false,false)}}return this},show:function(A){if(this.isVisible()){this.hide()}b=A;var B=this.getDialog(b.title||"&#160;");B.setTitle(b.title||"&#160;");var x=(b.closable!==false&&b.progress!==true&&b.wait!==true);B.tools.close.setDisplayed(x);v=s;b.prompt=b.prompt||(b.multiline?true:false);if(b.prompt){if(b.multiline){s.hide();a.show();a.setHeight(Ext.isNumber(b.multiline)?b.multiline:this.defaultTextHeight);v=a}else{s.show();a.hide()}}else{s.hide();a.hide()}v.dom.value=b.value||"";if(b.prompt){B.focusEl=v}else{var z=b.buttons;var y=null;if(z&&z.ok){y=r.ok}else{if(z&&z.yes){y=r.yes}}if(y){B.focusEl=y}}if(Ext.isDefined(b.iconCls)){B.setIconClass(b.iconCls)}this.setIcon(Ext.isDefined(b.icon)?b.icon:i);o=k(b.buttons);n.setVisible(b.progress===true||b.wait===true);this.updateProgress(0,b.progressText);this.updateText(b.msg);if(b.cls){B.el.addClass(b.cls)}B.proxyDrag=b.proxyDrag===true;B.modal=b.modal!==false;B.mask=b.modal!==false?q:false;if(!B.isVisible()){document.body.appendChild(u.el.dom);B.setAnimateTarget(b.animEl);B.on("show",function(){if(x===true){B.keyMap.enable()}else{B.keyMap.disable()}},this,{single:true});B.show(b.animEl)}if(b.wait===true){n.wait(b.waitConfig)}return this},setIcon:function(x){if(!u){i=x;return}i=undefined;if(x&&x!=""){j.removeClass("x-hidden");j.replaceClass(d,x);h.addClass("x-dlg-icon");d=x}else{j.replaceClass(d,"x-hidden");h.removeClass("x-dlg-icon");d=""}return this},progress:function(z,y,x){this.show({title:z,msg:y,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,progressText:x});return this},wait:function(z,y,x){this.show({title:y,msg:z,buttons:false,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:x});return this},alert:function(A,z,y,x){this.show({title:A,msg:z,buttons:this.OK,fn:y,scope:x,minWidth:this.minWidth});return this},confirm:function(A,z,y,x){this.show({title:A,msg:z,buttons:this.YESNO,fn:y,scope:x,icon:this.QUESTION,minWidth:this.minWidth});return this},prompt:function(C,B,z,y,x,A){this.show({title:C,msg:B,buttons:this.OKCANCEL,fn:z,minWidth:this.minPromptWidth,scope:y,prompt:true,multiline:x,value:A});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,minPromptWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}}}();Ext.Msg=Ext.MessageBox;Ext.dd.PanelProxy=Ext.extend(Object,{constructor:function(a,b){this.panel=a;this.id=this.panel.id+"-ddproxy";Ext.apply(this,b)},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(this.panel.initialConfig.cls,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=Ext.extend(Ext.dd.DragSource,{constructor: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);var d=b.header,c=b.body;if(d){this.setHandleElId(d.id);c=b.header}c.setStyle("cursor","move");this.scroll=false},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.proxy.show()},b4MouseDown:function(b){var a=b.getPageX(),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=Ext.extend(Ext.util.Observable,{constructor:function(){this.addEvents("statechange");this.state={};Ext.state.Provider.superclass.constructor.call(this)},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(b){var e=/^(a|n|d|b|s|o|e)\:(.*)$/,h=e.exec(unescape(b)),d,c,a,g;if(!h||!h[1]){return}c=h[1];a=h[2];switch(c){case"e":return null;case"n":return parseFloat(a);case"d":return new Date(Date.parse(a));case"b":return(a=="1");case"a":d=[];if(a!=""){Ext.each(a.split("^"),function(i){d.push(this.decodeValue(i))},this)}return d;case"o":d={};if(a!=""){Ext.each(a.split("^"),function(i){g=i.split("=");d[g[0]]=this.decodeValue(g[1])},this)}return d;default:return a}},encodeValue:function(c){var b,g="",e=0,a,d;if(c==null){return"e:1"}else{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)){for(a=c.length;e<a;e++){g+=this.encodeValue(c[e]);if(e!=a-1){g+="^"}}b="a:"+g}else{if(typeof c=="object"){for(d in c){if(typeof c[d]!="function"&&c[d]!==undefined){g+=d+"="+this.encodeValue(c[d])+"^"}}b="o:"+g.substring(0,g.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=Ext.extend(Ext.state.Provider,{constructor: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()},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 d={},h=document.cookie+";",b=/\s?(.*?)=(.*?);/g,g,a,e;while((g=b.exec(h))!=null){a=g[1];e=g[2];if(a&&a.substring(0,3)=="ys-"){d[a.substr(3)]=this.decodeValue(e)}}return d},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:"",deferEmptyText:true,trackOver:false,blockRefresh:false,last:false,initComponent:function(){Ext.DataView.superclass.initComponent.call(this);if(Ext.isString(this.tpl)||Ext.isArray(this.tpl)){this.tpl=new Ext.XTemplate(this.tpl)}this.addEvents("beforeclick","click","mouseenter","mouseleave","containerclick","dblclick","contextmenu","containercontextmenu","selectionchange","beforeselect");this.store=Ext.StoreMgr.lookup(this.store);this.all=new Ext.CompositeElementLite();this.selected=new Ext.CompositeElementLite()},afterRender:function(){Ext.DataView.superclass.afterRender.call(this);this.mon(this.getTemplateTarget(),{click:this.onClick,dblclick:this.onDblClick,contextmenu:this.onContextMenu,scope:this});if(this.overClass||this.trackOver){this.mon(this.getTemplateTarget(),{mouseover:this.onMouseOver,mouseout:this.onMouseOut,scope:this})}if(this.store){this.bindStore(this.store,true)}},refresh:function(){this.clearSelections(false,true);var b=this.getTemplateTarget(),a=this.store.getRange();b.update("");if(a.length<1){if(!this.deferEmptyText||this.hasSkippedEmptyText){b.update(this.emptyText)}this.all.clear()}else{this.tpl.overwrite(b,this.collectData(a,0));this.all.fill(Ext.query(this.itemSelector,b.dom));this.updateIndexes(0)}this.hasSkippedEmptyText=true},getTemplateTarget:function(){return this.el},prepareData:function(a){return a},collectData:function(b,e){var d=[],c=0,a=b.length;for(;c<a;c++){d[d.length]=this.prepareData(b[c].data,e+c,b[c])}return d},bufferRender:function(a,b){var c=document.createElement("div");this.tpl.overwrite(c,this.collectData(a,b));return Ext.query(this.itemSelector,c)},onUpdate:function(g,a){var b=this.store.indexOf(a);if(b>-1){var e=this.isSelected(b),c=this.all.elements[b],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(g,d,e){if(this.all.getCount()===0){this.refresh();return}var c=this.bufferRender(d,e),h,b=this.all.elements;if(e<this.all.getCount()){h=this.all.item(e).insertSibling(c,"before",true);b.splice.apply(b,[e,0].concat(c))}else{h=this.all.last().insertSibling(c,"after",true);b.push.apply(b,c)}this.updateIndexes(e)},onRemove:function(c,a,b){this.deselect(b);this.all.removeElement(b,true);this.updateIndexes(b);if(this.store.getCount()===0){this.refresh()}},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}},getStore:function(){return this.store},bindStore:function(a,b){if(!b&&this.store){if(a!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("datachanged",this.onDataChanged,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){this.store=null}}if(a){a=Ext.StoreMgr.lookup(a);a.on({scope:this,beforeload:this.onBeforeLoad,datachanged:this.onDataChanged,add:this.onAdd,remove:this.onRemove,update:this.onUpdate,clear:this.refresh})}this.store=a;if(a){this.refresh()}},onDataChanged:function(){if(this.blockRefresh!==true){this.refresh.apply(this,arguments)}},findItemFromChild:function(a){return Ext.fly(a).findParent(this.itemSelector,this.getTemplateTarget())},onClick:function(c){var b=c.getTarget(this.itemSelector,this.getTemplateTarget()),a;if(b){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.onContainerClick(c)}}},onContainerClick:function(a){this.clearSelections()},onContextMenu:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a){this.fireEvent("contextmenu",this,this.indexOf(a),a,b)}else{this.fireEvent("containercontextmenu",this,b)}},onDblClick:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a){this.fireEvent("dblclick",this,this.indexOf(a),a,b)}},onMouseOver:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a&&a!==this.lastItem){this.lastItem=a;Ext.fly(a).addClass(this.overClass);this.fireEvent("mouseenter",this,this.indexOf(a),a,b)}},onMouseOut:function(a){if(this.lastItem){if(!a.within(this.lastItem,true,true)){Ext.fly(this.lastItem).removeClass(this.overClass);this.fireEvent("mouseleave",this,this.indexOf(this.lastItem),this.lastItem,a);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,c=0,a=d.length;for(;c<a;c++){b.push(d[c].viewIndex)}return b},getSelectedRecords:function(){return this.getRecords(this.selected.elements)},getRecords:function(c){var b=[],d=0,a=c.length;for(;d<a;d++){b[b.length]=this.store.getAt(c[d].viewIndex)}return b},getRecord:function(a){return this.store.getAt(a.viewIndex)},clearSelections:function(a,b){if((this.multiSelect||this.singleSelect)&&this.selected.getCount()>0){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)){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,g,b){if(Ext.isArray(d)){if(!g){this.clearSelections(true)}for(var c=0,a=d.length;c<a;c++){this.select(d[c],true,true)}if(!b){this.fireEvent("selectionchange",this,this.selected.elements)}}else{var e=this.getNode(d);if(!g){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(b){if(Ext.isString(b)){return document.getElementById(b)}else{if(Ext.isNumber(b)){return this.all.elements[b]}else{if(b instanceof Ext.data.Record){var a=this.store.indexOf(b);return this.all.elements[a]}}}return b},getNodes:function(e,a){var d=this.all.elements,b=[],c;e=e||0;a=!Ext.isDefined(a)?Math.max(d.length-1,0):a;if(e<=a){for(c=e;c<=a&&d[c];c++){b.push(d[c])}}else{for(c=e;c>=a&&d[c];c--){b.push(d[c])}}return b},indexOf:function(a){a=this.getNode(a);if(Ext.isNumber(a.viewIndex)){return a.viewIndex}return this.all.indexOf(a)},onBeforeLoad:function(){if(this.loadingText){this.clearSelections(false,true);this.getTemplateTarget().update('<div class="loading-indicator">'+this.loadingText+"</div>");this.all.clear()}},onDestroy:function(){this.all.clear();this.selected.clear();Ext.DataView.superclass.onDestroy.call(this);this.bindStore(null)}});Ext.DataView.prototype.setStore=Ext.DataView.prototype.bindStore;Ext.reg("dataview",Ext.DataView);Ext.list.ListView=Ext.extend(Ext.DataView,{itemSelector:"dl",selectedClass:"x-list-selected",overClass:"x-list-over",scrollOffset:undefined,columnResize:true,columnSort:true,maxColumnWidth:Ext.isIE?99:100,initComponent:function(){if(this.columnResize){this.colResizer=new Ext.list.ColumnResizer(this.colResizer);this.colResizer.init(this)}if(this.columnSort){this.colSorter=new Ext.list.Sorter(this.columnSort);this.colSorter.init(this)}if(!this.internalTpl){this.internalTpl=new Ext.XTemplate('<div class="x-list-header"><div class="x-list-header-inner">','<tpl for="columns">','<div style="width:{[values.width*100]}%;text-align:{align};"><em unselectable="on" id="',this.id,'-xlhd-{#}">',"{header}","</em></div>","</tpl>",'<div class="x-clear"></div>',"</div></div>",'<div class="x-list-body"><div class="x-list-body-inner">',"</div></div>")}if(!this.tpl){this.tpl=new Ext.XTemplate('<tpl for="rows">',"<dl>",'<tpl for="parent.columns">','<dt style="width:{[values.width*100]}%;text-align:{align};">','<em unselectable="on"<tpl if="cls"> class="{cls}</tpl>">',"{[values.tpl.apply(parent)]}","</em></dt>","</tpl>",'<div class="x-clear"></div>',"</dl>","</tpl>")}var l=this.columns,h=0,k=0,m=l.length,b=[];for(var g=0;g<m;g++){var n=l[g];if(!n.isColumn){n.xtype=n.xtype?(/^lv/.test(n.xtype)?n.xtype:"lv"+n.xtype):"lvcolumn";n=Ext.create(n)}if(n.width){h+=n.width*100;if(h>this.maxColumnWidth){n.width-=(h-this.maxColumnWidth)/100}k++}b.push(n)}l=this.columns=b;if(k<m){var d=m-k;if(h<this.maxColumnWidth){var a=((this.maxColumnWidth-h)/d)/100;for(var e=0;e<m;e++){var n=l[e];if(!n.width){n.width=a}}}}Ext.list.ListView.superclass.initComponent.call(this)},onRender:function(){this.autoEl={cls:"x-list-wrap"};Ext.list.ListView.superclass.onRender.apply(this,arguments);this.internalTpl.overwrite(this.el,{columns:this.columns});this.innerBody=Ext.get(this.el.dom.childNodes[1].firstChild);this.innerHd=Ext.get(this.el.dom.firstChild.firstChild);if(this.hideHeaders){this.el.dom.firstChild.style.display="none"}},getTemplateTarget:function(){return this.innerBody},collectData:function(){var a=Ext.list.ListView.superclass.collectData.apply(this,arguments);return{columns:this.columns,rows:a}},verifyInternalSize:function(){if(this.lastSize){this.onResize(this.lastSize.width,this.lastSize.height)}},onResize:function(c,e){var b=this.innerBody.dom,g=this.innerHd.dom,d=c-Ext.num(this.scrollOffset,Ext.getScrollBarWidth())+"px",a;if(!b){return}a=b.parentNode;if(Ext.isNumber(c)){if(this.reserveScrollOffset||((a.offsetWidth-a.clientWidth)>10)){b.style.width=d;g.style.width=d}else{b.style.width=c+"px";g.style.width=c+"px";setTimeout(function(){if((a.offsetWidth-a.clientWidth)>10){b.style.width=d;g.style.width=d}},10)}}if(Ext.isNumber(e)){a.style.height=Math.max(0,e-g.parentNode.offsetHeight)+"px"}},updateIndexes:function(){Ext.list.ListView.superclass.updateIndexes.apply(this,arguments);this.verifyInternalSize()},findHeaderIndex:function(g){g=g.dom||g;var a=g.parentNode,d=a.parentNode.childNodes,b=0,e;for(;e=d[b];b++){if(e==a){return b}}return -1},setHdWidths:function(){var d=this.innerHd.dom.getElementsByTagName("div"),c=0,b=this.columns,a=b.length;for(;c<a;c++){d[c].style.width=(b[c].width*100)+"%"}}});Ext.reg("listview",Ext.list.ListView);Ext.ListView=Ext.list.ListView;Ext.list.Column=Ext.extend(Object,{isColumn:true,align:"left",header:"",width:null,cls:"",constructor:function(a){if(!a.tpl){a.tpl=new Ext.XTemplate("{"+a.dataIndex+"}")}else{if(Ext.isString(a.tpl)){a.tpl=new Ext.XTemplate(a.tpl)}}Ext.apply(this,a)}});Ext.reg("lvcolumn",Ext.list.Column);Ext.list.NumberColumn=Ext.extend(Ext.list.Column,{format:"0,000.00",constructor:function(a){a.tpl=a.tpl||new Ext.XTemplate("{"+a.dataIndex+':number("'+(a.format||this.format)+'")}');Ext.list.NumberColumn.superclass.constructor.call(this,a)}});Ext.reg("lvnumbercolumn",Ext.list.NumberColumn);Ext.list.DateColumn=Ext.extend(Ext.list.Column,{format:"m/d/Y",constructor:function(a){a.tpl=a.tpl||new Ext.XTemplate("{"+a.dataIndex+':date("'+(a.format||this.format)+'")}');Ext.list.DateColumn.superclass.constructor.call(this,a)}});Ext.reg("lvdatecolumn",Ext.list.DateColumn);Ext.list.BooleanColumn=Ext.extend(Ext.list.Column,{trueText:"true",falseText:"false",undefinedText:"&#160;",constructor:function(e){e.tpl=e.tpl||new Ext.XTemplate("{"+e.dataIndex+":this.format}");var b=this.trueText,d=this.falseText,a=this.undefinedText;e.tpl.format=function(c){if(c===undefined){return a}if(!c||c==="false"){return d}return b};Ext.list.DateColumn.superclass.constructor.call(this,e)}});Ext.reg("lvbooleancolumn",Ext.list.BooleanColumn);Ext.list.ColumnResizer=Ext.extend(Ext.util.Observable,{minPct:0.05,constructor:function(a){Ext.apply(this,a);Ext.list.ColumnResizer.superclass.constructor.call(this)},init:function(a){this.view=a;a.on("render",this.initEvents,this)},initEvents:function(a){a.mon(a.innerHd,"mousemove",this.handleHdMove,this);this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeStart.createDelegate(this),onStart:this.onStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(a.innerHd);a.on("beforedestroy",this.tracker.destroy,this.tracker)},handleHdMove:function(i,d){var c=5,b=i.getPageX(),j=i.getTarget("em",3,true);if(j){var h=j.getRegion(),g=j.dom.style,a=j.dom.parentNode;if(b-h.left<=c&&a!=a.parentNode.firstChild){this.activeHd=Ext.get(a.previousSibling.firstChild);g.cursor=Ext.isWebKit?"e-resize":"col-resize"}else{if(h.right-b<=c&&a!=a.parentNode.lastChild.previousSibling){this.activeHd=j;g.cursor=Ext.isWebKit?"w-resize":"col-resize"}else{delete this.activeHd;g.cursor=""}}}},onBeforeStart:function(a){this.dragHd=this.activeHd;return !!this.dragHd},onStart:function(g){var d=this,b=d.view,c=d.dragHd,a=d.tracker.getXY()[0];d.proxy=b.el.createChild({cls:"x-list-resizer"});d.dragX=c.getX();d.headerIndex=b.findHeaderIndex(c);d.headersDisabled=b.disableHeaders;b.disableHeaders=true;d.proxy.setHeight(b.el.getHeight());d.proxy.setX(d.dragX);d.proxy.setWidth(a-d.dragX);this.setBoundaries()},setBoundaries:function(j){var k=this.view,h=this.headerIndex,c=k.innerHd.getWidth(),j=k.innerHd.getX(),b=Math.ceil(c*this.minPct),l=c-b,e=k.columns.length,d=k.innerHd.select("em",true),g=b+j,a=l+j,i;if(e==2){this.minX=g;this.maxX=a}else{i=d.item(h+2);this.minX=d.item(h).getX()+b;this.maxX=i?i.getX()-b:a;if(h==0){this.minX=g}else{if(h==e-2){this.maxX=a}}}},onDrag:function(c){var b=this,a=b.tracker.getXY()[0].constrain(b.minX,b.maxX);b.proxy.setWidth(a-this.dragX)},onEnd:function(i){var g=this.proxy.getWidth(),h=this.headerIndex,l=this.view,c=l.columns,b=l.innerHd.getWidth(),k=Math.ceil(g*l.maxColumnWidth/b)/100,d=this.headersDisabled,m=c[h],j=c[h+1],a=m.width+j.width;this.proxy.remove();m.width=k;j.width=a-k;delete this.dragHd;l.setHdWidths();l.refresh();setTimeout(function(){l.disableHeaders=d},100)}});Ext.ListView.ColumnResizer=Ext.list.ColumnResizer;Ext.list.Sorter=Ext.extend(Ext.util.Observable,{sortClasses:["sort-asc","sort-desc"],constructor:function(a){Ext.apply(this,a);Ext.list.Sorter.superclass.constructor.call(this)},init:function(a){this.view=a;a.on("render",this.initEvents,this)},initEvents:function(a){a.mon(a.innerHd,"click",this.onHdClick,this);a.innerHd.setStyle("cursor","pointer");a.mon(a.store,"datachanged",this.updateSortState,this);this.updateSortState.defer(10,this,[a.store])},updateSortState:function(c){var g=c.getSortState();if(!g){return}this.sortState=g;var e=this.view.columns,h=-1;for(var d=0,a=e.length;d<a;d++){if(e[d].dataIndex==g.field){h=d;break}}if(h!=-1){var b=g.direction;this.updateSortIcon(h,b)}},updateSortIcon:function(b,a){var d=this.sortClasses;var c=this.view.innerHd.select("em").removeClass(d);c.item(b).addClass(d[a=="DESC"?1:0])},onHdClick:function(c){var b=c.getTarget("em",3);if(b&&!this.view.disableHeaders){var a=this.view.findHeaderIndex(b);this.view.store.sort(this.view.columns[a].dataIndex)}}});Ext.ListView.Sorter=Ext.list.Sorter;Ext.TabPanel=Ext.extend(Ext.Panel,{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:undefined,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(Ext.apply({layoutOnCardChange:this.layoutOnTabChange,deferredRender:this.deferredRender},this.layoutConfig)));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()},onRender:function(c,a){Ext.TabPanel.superclass.onRender.call(this,c,a);if(this.plain){var g=this.tabPosition=="top"?"header":"footer";this[g].addClass("x-tab-panel-"+g+"-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}});var e=(this.tabPosition=="bottom"?this.stripWrap:null);b.createChild({cls:"x-tab-strip-spacer"},e);this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:"li",cls:"x-tab-edge",cn:[{tag:"span",cls:"x-tab-strip-text",cn:"&#160;"}]});this.strip.createChild({cls:"x-clear"});this.body.addClass("x-tab-panel-body-"+this.tabPosition);if(!this.itemTpl){var d=new Ext.Template('<li class="{cls}" id="{id}"><a class="x-tab-strip-close"></a>','<a class="x-tab-right" href="#"><em class="x-tab-left">','<span class="x-tab-strip-inner"><span class="x-tab-strip-text {iconCls}">{text}</span></span>',"</em></a></li>");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)}if(this.activeTab!==undefined){var a=Ext.isObject(this.activeTab)?this.activeTab:this.items.get(this.activeTab);delete this.activeTab;this.setActiveTab(a)}},initEvents:function(){Ext.TabPanel.superclass.initEvents.call(this);this.mon(this.strip,{scope:this,mousedown:this.onStripMouseDown,contextmenu:this.onStripContextMenu});if(this.enableTabScroll){this.mon(this.strip,"mousewheel",this.onWheel,this)}},findTargets:function(c){var b=null,a=c.getTarget("li:not(.x-tab-edge)",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){if(b.button!==0){return}b.preventDefault();var a=this.findTargets(b);if(a.close){if(a.item.fireEvent("beforeclose",a.item)!==false){a.item.fireEvent("close",a.item);this.remove(a.item)}return}if(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(h){this.remove(h)},this)}var c=this.el.query(this.autoTabSelector);for(var b=0,a=c.length;b<a;b++){var e=c[b],g=e.getAttribute("title");e.removeAttribute("title");this.add({title:g,contentEl:e})}},initTab:function(d,b){var e=this.strip.dom.childNodes[b],g=this.getTemplateArgs(d),c=e?this.itemTpl.insertBefore(e,g):this.itemTpl.append(this.strip,g),a="x-tab-strip-over",h=Ext.get(c);h.hover(function(){if(!d.disabled){h.addClass(a)}},function(){h.removeClass(a)});if(d.tabTip){h.child("span.x-tab-strip-text",true).qtip=d.tabTip}d.tabEl=c;h.select("a").on("click",function(i){if(!i.getPageX()){this.onStripMouseDown(i)}},this,{preventDefault:true});d.on({scope:this,disable:this.onItemDisabled,enable:this.onItemEnabled,titlechange:this.onItemTitleChanged,iconchange:this.onItemIconChanged,beforeshow:this.onBeforeShowItem})},getTemplateArgs:function(b){var a=b.closable?"x-tab-strip-closable":"";if(b.disabled){a+=" x-item-disabled"}if(b.iconCls){a+=" x-tab-with-icon"}if(b.tabCls){a+=" "+b.tabCls}return{id:this.id+this.idDelimiter+b.getItemId(),text:b.title,cls:a,iconCls:b.iconCls||""}},onAdd:function(b){Ext.TabPanel.superclass.onAdd.call(this,b);if(this.rendered){var a=this.items;this.initTab(b,a.indexOf(b));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(d){var b=Ext.get(d.tabEl);if(b){b.select("a").removeAllListeners();Ext.destroy(b)}Ext.TabPanel.superclass.onRemove.call(this,d);this.stack.remove(d);delete d.tabEl;d.un("disable",this.onItemDisabled,this);d.un("enable",this.onItemEnabled,this);d.un("titlechange",this.onItemTitleChanged,this);d.un("iconchange",this.onItemIconChanged,this);d.un("beforeshow",this.onBeforeShowItem,this);if(d==this.activeTab){var a=this.stack.next();if(a){this.setActiveTab(a)}else{if(this.items.getCount()>0){this.setActiveTab(0)}else{this.setActiveTab(null)}}}if(!this.destroying){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}},onItemIconChanged:function(d,a,c){var b=this.getTabEl(d);if(b){b=Ext.get(b);b.child("span.x-tab-strip-text").replaceClass(c,a);b[Ext.isEmpty(a)?"removeClass":"addClass"]("x-tab-with-icon")}},getTabEl:function(a){var b=this.getComponent(a);return b?b.tabEl:null},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()}this.stack.remove(b)},unhideTabStripItem:function(b){b=this.getComponent(b);var a=this.getTabEl(b);if(a){a.style.display="";this.delegateUpdates()}},delegateUpdates:function(){var a=this.rendered;if(this.suspendUpdates){return}if(this.resizeTabs&&a){this.autoSizeTabs()}if(this.enableTabScroll&&a){this.autoScrollTabs()}},autoSizeTabs:function(){var h=this.items.length,b=this.tabPosition!="bottom"?"header":"footer",c=this[b].dom.offsetWidth,a=this[b].dom.clientWidth;if(!this.resizeTabs||h<1||!a){return}var k=Math.max(Math.min(Math.floor((a-4)/h)-this.tabMargin,this.tabWidth),this.minTabWidth);this.lastTabWidth=k;var m=this.strip.query("li:not(.x-tab-edge)");for(var e=0,j=m.length;e<j;e++){var l=m[e],n=Ext.fly(l).child(".x-tab-strip-inner",true),g=l.offsetWidth,d=n.offsetWidth;n.style.width=(k-(g-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(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=c;if(c){var b=this.getTabEl(c);Ext.fly(b).addClass("x-tab-strip-active");this.stack.add(c);this.layout.setActiveItem(c);this.delegateUpdates();if(this.scrolling){this.scrollToTab(c,this.animScroll)}}this.fireEvent("tabchange",this,c)}},getActiveTab:function(){return this.activeTab||null},getItem:function(a){return this.getComponent(a)},autoScrollTabs:function(){this.pos=this.tabPosition=="bottom"?this.footer:this.header;var h=this.items.length,d=this.pos.dom.offsetWidth,c=this.pos.dom.clientWidth,g=this.stripWrap,e=g.dom,b=e.offsetWidth,i=this.getScrollPos(),a=this.edge.getOffsetsTo(this.stripWrap)[0]+i;if(!this.enableTabScroll||b<20){return}if(h==0||a<=c){e.scrollLeft=0;g.setWidth(c);if(this.scrolling){this.scrolling=false;this.pos.removeClass("x-tab-scrolling");this.scrollLeft.hide();this.scrollRight.hide();if(Ext.isAir||Ext.isWebKit){e.style.marginLeft="";e.style.marginRight=""}}}else{if(!this.scrolling){this.pos.addClass("x-tab-scrolling");if(Ext.isAir||Ext.isWebKit){e.style.marginLeft="18px";e.style.marginRight="18px"}}c-=g.getMargins("lr");g.setWidth(c>20?c:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(i>(a-c)){e.scrollLeft=a-c}else{this.scrollToTab(this.activeTab,false)}this.updateScrollButtons()}},createScrollers:function(){this.pos.addClass("x-tab-scrolling-"+this.tabPosition);var c=this.stripWrap.dom.offsetHeight;var a=this.pos.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.pos.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),h=this.getScrollPos(),d=this.getScrollArea(),g=Ext.fly(c).getOffsetsTo(this.stripWrap)[0]+h,b=g+c.offsetWidth;if(g<h){this.scrollTo(g,a)}else{if(b>(h+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(g){var h=g.getWheelDelta()*this.wheelIncrement*-1;g.stopEvent();var i=this.getScrollPos(),c=i+h,a=this.getScrollWidth()-this.getScrollArea();var b=Math.max(0,Math.min(a,c));if(b!=i){this.scrollTo(b,false)}},onScrollRight:function(){var a=this.getScrollWidth()-this.getScrollArea(),c=this.getScrollPos(),b=Math.min(a,c+this.getScrollIncrement());if(b!=c){this.scrollTo(b,this.animScroll)}},onScrollLeft:function(){var b=this.getScrollPos(),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")},beforeDestroy:function(){Ext.destroy(this.leftRepeater,this.rightRepeater);this.deleteMembers("strip","edge","scrollLeft","scrollRight","stripWrap");this.activeTab=null;Ext.TabPanel.superclass.beforeDestroy.apply(this)}});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.BoxComponent,{hidden:false,disabled:false,pressed:false,enableToggle:false,menuAlign:"tl-bl?",type:"button",menuClassTarget:"tr:nth(2)",clickEvent:"click",handleMouseEvents:true,tooltipType:"qtip",buttonSelector:"button:first-child",scale:"small",iconAlign:"left",arrowAlign:"right",initComponent:function(){if(this.menu){if(Ext.isArray(this.menu)){this.menu={items:this.menu}}if(Ext.isObject(this.menu)){this.menu.ownerCt=this}this.menu=Ext.menu.MenuMgr.get(this.menu);this.menu.ownerCt=undefined}Ext.Button.superclass.initComponent.call(this);this.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout");if(Ext.isString(this.toggleGroup)){this.enableToggle=true}},getTemplateArgs:function(){return[this.type,"x-btn-"+this.scale+" x-btn-icon-"+this.scale+"-"+this.iconAlign,this.getMenuClass(),this.cls,this.id]},setButtonClass:function(){if(this.useSetClass){if(!Ext.isEmpty(this.oldCls)){this.el.removeClass([this.oldCls,"x-btn-pressed"])}this.oldCls=(this.iconCls||this.icon)?(this.text?"x-btn-text-icon":"x-btn-icon"):"x-btn-noicon";this.el.addClass([this.oldCls,this.pressed?"x-btn-pressed":null])}},getMenuClass:function(){return this.menu?(this.arrowAlign!="bottom"?"x-btn-arrow":"x-btn-arrow-bottom"):""},onRender:function(c,a){if(!this.template){if(!Ext.Button.buttonTemplate){Ext.Button.buttonTemplate=new Ext.Template('<table id="{4}" cellspacing="0" class="x-btn {3}"><tbody class="{1}">','<tr><td class="x-btn-tl"><i>&#160;</i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i>&#160;</i></td></tr>','<tr><td class="x-btn-ml"><i>&#160;</i></td><td class="x-btn-mc"><em class="{2}" unselectable="on"><button type="{0}"></button></em></td><td class="x-btn-mr"><i>&#160;</i></td></tr>','<tr><td class="x-btn-bl"><i>&#160;</i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i>&#160;</i></td></tr>',"</tbody></table>");Ext.Button.buttonTemplate.compile()}this.template=Ext.Button.buttonTemplate}var b,d=this.getTemplateArgs();if(a){b=this.template.insertBefore(a,d,true)}else{b=this.template.append(c,d,true)}this.btnEl=b.child(this.buttonSelector);this.mon(this.btnEl,{scope:this,focus:this.onFocus,blur:this.onBlur});this.initButtonEl(b,this.btnEl);Ext.ButtonToggleMgr.register(this)},initButtonEl:function(b,c){this.el=b;this.setIcon(this.icon);this.setText(this.text);this.setIconClass(this.iconCls);if(Ext.isDefined(this.tabIndex)){c.dom.tabIndex=this.tabIndex}if(this.tooltip){this.setTooltip(this.tooltip,true)}if(this.handleMouseEvents){this.mon(b,{scope:this,mouseover:this.onMouseOver,mousedown:this.onMouseDown})}if(this.menu){this.mon(this.menu,{scope:this,show:this.onMenuShow,hide:this.onMenuHide})}if(this.repeat){var a=new Ext.util.ClickRepeater(b,Ext.isObject(this.repeat)?this.repeat:{});this.mon(a,"click",this.onRepeatClick,this)}else{this.mon(b,this.clickEvent,this.onClick,this)}},afterRender:function(){Ext.Button.superclass.afterRender.call(this);this.useSetClass=true;this.setButtonClass();this.doc=Ext.getDoc();this.doAutoWidth()},setIconClass:function(a){this.iconCls=a;if(this.el){this.btnEl.dom.className="";this.btnEl.addClass(["x-btn-text",a||""]);this.setButtonClass()}return this},setTooltip:function(b,a){if(this.rendered){if(!a){this.clearTip()}if(Ext.isObject(b)){Ext.QuickTips.register(Ext.apply({target:this.btnEl.id},b));this.tooltip=b}else{this.btnEl.dom[this.tooltipType]=b}}else{this.tooltip=b}return this},clearTip:function(){if(Ext.isObject(this.tooltip)){Ext.QuickTips.unregister(this.btnEl)}},beforeDestroy:function(){if(this.rendered){this.clearTip()}if(this.menu&&this.destroyMenu!==false){Ext.destroy(this.btnEl,this.menu)}Ext.destroy(this.repeater)},onDestroy:function(){if(this.rendered){this.doc.un("mouseover",this.monitorMouseOver,this);this.doc.un("mouseup",this.onMouseUp,this);delete this.doc;delete this.btnEl;Ext.ButtonToggleMgr.unregister(this)}Ext.Button.superclass.onDestroy.call(this)},doAutoWidth:function(){if(this.autoWidth!==false&&this.el&&this.text&&this.width===undefined){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var a=this.btnEl;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;return this},setText:function(a){this.text=a;if(this.el){this.btnEl.update(a||"&#160;");this.setButtonClass()}this.doAutoWidth();return this},setIcon:function(a){this.icon=a;if(this.el){this.btnEl.setStyle("background-image",a?"url("+a+")":"");this.setButtonClass()}return this},getText:function(){return this.text},toggle:function(b,a){b=b===undefined?!this.pressed:!!b;if(b!=this.pressed){if(this.rendered){this.el[b?"addClass":"removeClass"]("x-btn-pressed")}this.pressed=b;if(!a){this.fireEvent("toggle",this,b);if(this.toggleHandler){this.toggleHandler.call(this.scope||this,this,b)}}}return this},onDisable:function(){this.onDisableChange(true)},onEnable:function(){this.onDisableChange(false)},onDisableChange:function(a){if(this.el){if(!Ext.isIE6||!this.text){this.el[a?"addClass":"removeClass"](this.disabledClass)}this.el.dom.disabled=a}this.disabled=a},showMenu:function(){if(this.rendered&&this.menu){if(this.tooltip){Ext.QuickTips.getQuickTip().cancelShow(this.btnEl)}if(this.menu.isVisible()){this.menu.hide()}this.menu.ownerCt=this;this.menu.show(this.el,this.menuAlign)}return this},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){return this.menu&&this.menu.ownerCt==this&&this.menu.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(a){if(a){a.preventDefault()}if(a.button!==0){return}if(!this.disabled){this.doToggle();if(this.menu&&!this.hasVisibleMenu()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("click",this,a);if(this.handler){this.handler.call(this.scope||this,this,a)}}},doToggle:function(){if(this.enableToggle&&(this.allowDepress!==false||!this.pressed)){this.toggle()}},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");if(!this.monitoringMouseOver){this.doc.on("mouseover",this.monitorMouseOver,this);this.monitoringMouseOver=true}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)){if(this.monitoringMouseOver){this.doc.un("mouseover",this.monitorMouseOver,this);this.monitoringMouseOver=false}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)}},focus:function(){this.btnEl.focus()},blur:function(){this.btnEl.blur()},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");this.doc.on("mouseup",this.onMouseUp,this)}},onMouseUp:function(a){if(a.button===0){this.getClickEl(a,true).removeClass("x-btn-click");this.doc.un("mouseup",this.onMouseUp,this)}},onMenuShow:function(a){if(this.menu.ownerCt==this){this.menu.ownerCt=this;this.ignoreNextClick=0;this.el.addClass("x-btn-menu-active");this.fireEvent("menushow",this,this.menu)}},onMenuHide:function(a){if(this.menu.ownerCt==this){this.el.removeClass("x-btn-menu-active");this.ignoreNextClick=this.restoreClick.defer(250,this);this.fireEvent("menuhide",this,this.menu);delete this.menu.ownerCt}},restoreClick:function(){this.ignoreNextClick=0}});Ext.reg("button",Ext.Button);Ext.ButtonToggleMgr=function(){var a={};function b(e,j){if(j){var h=a[e.toggleGroup];for(var d=0,c=h.length;d<c;d++){if(h[d]!=e){h[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)}},getPressed:function(h){var e=a[h];if(e){for(var d=0,c=e.length;d<c;d++){if(e[d].pressed===true){return e[d]}}}return null}}}();Ext.SplitButton=Ext.extend(Ext.Button,{arrowSelector:"em",split:true,initComponent:function(){Ext.SplitButton.superclass.initComponent.call(this);this.addEvents("arrowclick")},onRender:function(){Ext.SplitButton.superclass.onRender.apply(this,arguments);if(this.arrowTooltip){this.el.child(this.arrowSelector).dom[this.tooltipType]=this.arrowTooltip}},setArrowHandler:function(b,a){this.arrowHandler=b;this.scope=a},getMenuClass:function(){return"x-btn-split"+(this.arrowAlign=="bottom"?"-bottom":"")},isClickOnArrow:function(c){if(this.arrowAlign!="bottom"){var b=this.el.child("em.x-btn-split");var a=b.getRegion().right-b.getPadding("r");return c.getPageX()>a}else{return c.getPageY()>this.btnEl.getRegion().bottom}},onClick:function(b,a){b.preventDefault();if(!this.disabled){if(this.isClickOnArrow(b)){if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("arrowclick",this,b);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,b)}}else{this.doToggle();this.fireEvent("click",this,b);if(this.handler){this.handler.call(this.scope||this,this,b)}}}},isMenuTriggerOver:function(a){return this.menu&&a.target.tagName==this.arrowSelector},isMenuTriggerOut:function(b,a){return this.menu&&b.target.tagName!=this.arrowSelector}});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(!Ext.isObject(c)){c=this.menu.getComponent(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,a)}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 a=0;Ext.each(this.items,function(c,b){Ext.apply(c,{group:c.group||this.id,itemIndex:b,checkHandler:this.checkHandler,scope:this,checked:c.checked||false});this.menu.items.push(c);if(c.checked){a=b}},this);Ext.CycleButton.superclass.initComponent.call(this);this.on("click",this.toggleSelected,this);this.setActiveItem(a,true)},checkHandler:function(a,b){if(b){this.setActiveItem(a)}},toggleSelected:function(){var a=this.menu;a.render();if(!a.hasLayout){a.doLayout()}var d,b;for(var c=1;c<this.itemCount;c++){d=(this.activeItem.itemIndex+c)%this.itemCount;b=a.items.itemAt(d);if(!b.disabled){b.setChecked(true);break}}}});Ext.reg("cycle",Ext.CycleButton);Ext.Toolbar=function(a){if(Ext.isArray(a)){a={items:a,layout:"toolbar"}}else{a=Ext.apply({layout:"toolbar"},a);if(a.buttons){a.items=a.buttons}}Ext.Toolbar.superclass.constructor.call(this,a)};(function(){var a=Ext.Toolbar;Ext.extend(a,Ext.Container,{defaultType:"button",enableOverflow:false,trackMenus:true,internalDefaults:{removeMode:"container",hideParent:true},toolbarCls:"x-toolbar",initComponent:function(){a.superclass.initComponent.call(this);this.addEvents("overflowchange")},onRender:function(c,b){if(!this.el){if(!this.autoCreate){this.autoCreate={cls:this.toolbarCls+" x-small-editor"}}this.el=c.createChild(Ext.apply({id:this.id},this.autoCreate),b);Ext.Toolbar.superclass.onRender.apply(this,arguments)}},lookupComponent:function(b){if(Ext.isString(b)){if(b=="-"){b=new a.Separator()}else{if(b==" "){b=new a.Spacer()}else{if(b=="->"){b=new a.Fill()}else{b=new a.TextItem(b)}}}this.applyDefaults(b)}else{if(b.isFormField||b.render){b=this.createComponent(b)}else{if(b.tag){b=new a.Item({autoEl:b})}else{if(b.tagName){b=new a.Item({el:b})}else{if(Ext.isObject(b)){b=b.xtype?this.createComponent(b):this.constructButton(b)}}}}}return b},applyDefaults:function(e){if(!Ext.isString(e)){e=Ext.Toolbar.superclass.applyDefaults.call(this,e);var b=this.internalDefaults;if(e.events){Ext.applyIf(e.initialConfig,b);Ext.apply(e,b)}else{Ext.applyIf(e,b)}}return e},addSeparator:function(){return this.add(new a.Separator())},addSpacer:function(){return this.add(new a.Spacer())},addFill:function(){this.add(new a.Fill())},addElement:function(b){return this.addItem(new a.Item({el:b}))},addItem:function(b){return this.add.apply(this,arguments)},addButton:function(c){if(Ext.isArray(c)){var e=[];for(var d=0,b=c.length;d<b;d++){e.push(this.addButton(c[d]))}return e}return this.add(this.constructButton(c))},addText:function(b){return this.addItem(new a.TextItem(b))},addDom:function(b){return this.add(new a.Item({autoEl:b}))},addField:function(b){return this.add(b)},insertButton:function(c,g){if(Ext.isArray(g)){var e=[];for(var d=0,b=g.length;d<b;d++){e.push(this.insertButton(c+d,g[d]))}return e}return Ext.Toolbar.superclass.insert.call(this,c,g)},trackMenu:function(c,b){if(this.trackMenus&&c.menu){var d=b?"mun":"mon";this[d](c,"menutriggerover",this.onButtonTriggerOver,this);this[d](c,"menushow",this.onButtonMenuShow,this);this[d](c,"menuhide",this.onButtonMenuHide,this)}},constructButton:function(d){var c=d.events?d:this.createComponent(d,d.split?"splitbutton":this.defaultType);return c},onAdd:function(b){Ext.Toolbar.superclass.onAdd.call(this);this.trackMenu(b);if(this.disabled){b.disable()}},onRemove:function(b){Ext.Toolbar.superclass.onRemove.call(this);if(b==this.activeMenuBtn){delete this.activeMenuBtn}this.trackMenu(b,true)},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=Ext.extend(Ext.BoxComponent,{hideParent:true,enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbitem",a.Item);a.Separator=Ext.extend(a.Item,{onRender:function(c,b){this.el=c.createChild({tag:"span",cls:"xtb-sep"},b)}});Ext.reg("tbseparator",a.Separator);a.Spacer=Ext.extend(a.Item,{onRender:function(c,b){this.el=c.createChild({tag:"div",cls:"xtb-spacer",style:this.width?"width:"+this.width+"px":""},b)}});Ext.reg("tbspacer",a.Spacer);a.Fill=Ext.extend(a.Item,{render:Ext.emptyFn,isFill:true});Ext.reg("tbfill",a.Fill);a.TextItem=Ext.extend(a.Item,{constructor:function(b){a.TextItem.superclass.constructor.call(this,Ext.isString(b)?{text:b}:b)},onRender:function(c,b){this.autoEl={cls:"xtb-text",html:this.text||""};a.TextItem.superclass.onRender.call(this,c,b)},setText:function(b){if(this.rendered){this.el.update(b)}else{this.text=b}}});Ext.reg("tbtext",a.TextItem);a.Button=Ext.extend(Ext.Button,{});a.SplitButton=Ext.extend(Ext.SplitButton,{});Ext.reg("tbbutton",a.Button);Ext.reg("tbsplit",a.SplitButton)})();Ext.ButtonGroup=Ext.extend(Ext.Panel,{baseCls:"x-btn-group",layout:"table",defaultType:"button",frame:true,internalDefaults:{removeMode:"container",hideParent:true},initComponent:function(){this.layoutConfig=this.layoutConfig||{};Ext.applyIf(this.layoutConfig,{columns:this.columns});if(!this.title){this.addClass("x-btn-group-notitle")}this.on("afterlayout",this.onAfterLayout,this);Ext.ButtonGroup.superclass.initComponent.call(this)},applyDefaults:function(b){b=Ext.ButtonGroup.superclass.applyDefaults.call(this,b);var a=this.internalDefaults;if(b.events){Ext.applyIf(b.initialConfig,a);Ext.apply(b,a)}else{Ext.applyIf(b,a)}return b},onAfterLayout:function(){var a=this.body.getFrameWidth("lr")+this.body.dom.firstChild.offsetWidth;this.body.setWidth(a);this.el.setWidth(a+this.getFrameWidth())}});Ext.reg("buttongroup",Ext.ButtonGroup);(function(){var a=Ext.Toolbar;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",initComponent:function(){var c=[this.first=new a.Button({tooltip:this.firstText,overflowText:this.firstText,iconCls:"x-tbar-page-first",disabled:true,handler:this.moveFirst,scope:this}),this.prev=new a.Button({tooltip:this.prevText,overflowText:this.prevText,iconCls:"x-tbar-page-prev",disabled:true,handler:this.movePrevious,scope:this}),"-",this.beforePageText,this.inputItem=new Ext.form.NumberField({cls:"x-tbar-page-number",allowDecimals:false,allowNegative:false,enableKeyEvents:true,selectOnFocus:true,submitValue:false,listeners:{scope:this,keydown:this.onPagingKeyDown,blur:this.onPagingBlur}}),this.afterTextItem=new a.TextItem({text:String.format(this.afterPageText,1)}),"-",this.next=new a.Button({tooltip:this.nextText,overflowText:this.nextText,iconCls:"x-tbar-page-next",disabled:true,handler:this.moveNext,scope:this}),this.last=new a.Button({tooltip:this.lastText,overflowText:this.lastText,iconCls:"x-tbar-page-last",disabled:true,handler:this.moveLast,scope:this}),"-",this.refresh=new a.Button({tooltip:this.refreshText,overflowText:this.refreshText,iconCls:"x-tbar-loading",handler:this.doRefresh,scope:this})];var b=this.items||this.buttons||[];if(this.prependButtons){this.items=b.concat(c)}else{this.items=c.concat(b)}delete this.buttons;if(this.displayInfo){this.items.push("->");this.items.push(this.displayItem=new a.TextItem({}))}Ext.PagingToolbar.superclass.initComponent.call(this);this.addEvents("change","beforechange");this.on("afterlayout",this.onFirstLayout,this,{single:true});this.cursor=0;this.bindStore(this.store,true)},onFirstLayout:function(){if(this.dsLoaded){this.onLoad.apply(this,this.dsLoaded)}},updateInfo:function(){if(this.displayItem){var b=this.store.getCount();var c=b==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+b,this.store.getTotalCount());this.displayItem.setText(c)}},onLoad:function(b,e,j){if(!this.rendered){this.dsLoaded=[b,e,j];return}var g=this.getParams();this.cursor=(j.params&&j.params[g.start])?j.params[g.start]:0;var i=this.getPageData(),c=i.activePage,h=i.pages;this.afterTextItem.setText(String.format(this.afterPageText,i.pages));this.inputItem.setValue(c);this.first.setDisabled(c==1);this.prev.setDisabled(c==1);this.next.setDisabled(c==h);this.last.setDisabled(c==h);this.refresh.enable();this.updateInfo();this.fireEvent("change",this,i)},getPageData:function(){var b=this.store.getTotalCount();return{total:b,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:b<this.pageSize?1:Math.ceil(b/this.pageSize)}},changePage:function(b){this.doLoad(((b-1)*this.pageSize).constrain(0,this.store.getTotalCount()))},onLoadError:function(){if(!this.rendered){return}this.refresh.enable()},readPage:function(e){var b=this.inputItem.getValue(),c;if(!b||isNaN(c=parseInt(b,10))){this.inputItem.setValue(e.activePage);return false}return c},onPagingFocus:function(){this.inputItem.select()},onPagingBlur:function(b){this.inputItem.setValue(this.getPageData().activePage)},onPagingKeyDown:function(i,h){var c=h.getKey(),j=this.getPageData(),g;if(c==h.RETURN){h.stopEvent();g=this.readPage(j);if(g!==false){g=Math.min(Math.max(1,g),j.pages)-1;this.doLoad(g*this.pageSize)}}else{if(c==h.HOME||c==h.END){h.stopEvent();g=c==h.HOME?1:j.pages;i.setValue(g)}else{if(c==h.UP||c==h.PAGEUP||c==h.DOWN||c==h.PAGEDOWN){h.stopEvent();if((g=this.readPage(j))){var b=h.shiftKey?10:1;if(c==h.DOWN||c==h.PAGEDOWN){b*=-1}g+=b;if(g>=1&g<=j.pages){i.setValue(g)}}}}}},getParams:function(){return this.paramNames||this.store.paramNames},beforeLoad:function(){if(this.rendered&&this.refresh){this.refresh.disable()}},doLoad:function(d){var c={},b=this.getParams();c[b.start]=d;c[b.limit]=this.pageSize;if(this.fireEvent("beforechange",this,c)!==false){this.store.load({params:c})}},moveFirst:function(){this.doLoad(0)},movePrevious:function(){this.doLoad(Math.max(0,this.cursor-this.pageSize))},moveNext:function(){this.doLoad(this.cursor+this.pageSize)},moveLast:function(){var c=this.store.getTotalCount(),b=c%this.pageSize;this.doLoad(b?(c-b):c-this.pageSize)},doRefresh:function(){this.doLoad(this.cursor)},bindStore:function(c,d){var b;if(!d&&this.store){if(c!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.beforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.onLoadError,this)}if(!c){this.store=null}}if(c){c=Ext.StoreMgr.lookup(c);c.on({scope:this,beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError});b=true}this.store=c;if(b){this.onLoad(c,null,{})}},unbind:function(b){this.bindStore(null)},bind:function(b){this.bindStore(b)},onDestroy:function(){this.bindStore(null);Ext.PagingToolbar.superclass.onDestroy.call(this)}})})();Ext.reg("paging",Ext.PagingToolbar);Ext.History=(function(){var e,c;var k=false;var d;function g(){var l=location.href,m=l.indexOf("#"),n=m>=0?l.substr(m+1):null;if(Ext.isGecko){n=decodeURIComponent(n)}return n}function a(){c.value=d}function h(l){d=l;Ext.History.fireEvent("change",l)}function i(m){var l=['<html><body><div id="state">',Ext.util.Format.htmlEncode(m),"</div></body></html>"].join("");try{var o=e.contentWindow.document;o.open();o.write(l);o.close();return true}catch(n){return false}}function b(){if(!e.contentWindow||!e.contentWindow.document){setTimeout(b,10);return}var o=e.contentWindow.document;var m=o.getElementById("state");var l=m?m.innerText:null;var n=g();setInterval(function(){o=e.contentWindow.document;m=o.getElementById("state");var q=m?m.innerText:null;var p=g();if(q!==l){l=q;h(l);location.hash=l;n=l;a()}else{if(p!==n){n=p;i(p)}}},50);k=true;Ext.History.fireEvent("ready",Ext.History)}function j(){d=c.value?c.value:g();if(Ext.isIE){b()}else{var l=g();setInterval(function(){var m=g();if(m!==l){l=m;h(l);a()}},50);k=true;Ext.History.fireEvent("ready",Ext.History)}}return{fieldId:"x-history-field",iframeId:"x-history-frame",events:{},init:function(m,l){if(k){Ext.callback(m,l,[this]);return}if(!Ext.isReady){Ext.onReady(function(){Ext.History.init(m,l)});return}c=Ext.getDom(Ext.History.fieldId);if(Ext.isIE){e=Ext.getDom(Ext.History.iframeId)}this.addEvents("ready","change");if(m){this.on("ready",m,l,{single:true})}j()},add:function(l,m){if(m!==false){if(this.getToken()==l){return true}}if(Ext.isIE){return i(l)}else{location.hash=l;return true}},back:function(){history.go(-1)},forward:function(){history.go(1)},getToken:function(){return k?d:g()}}})();Ext.apply(Ext.History,new Ext.util.Observable());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,closeAction:"hide",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[this.closeAction],scope:this})}},showAt:function(a){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){this.doAutoWidth()}if(this.constrainPosition){a=this.el.adjustForConstraints(a)}this.setPagePosition(a[0],a[1])},doAutoWidth:function(a){a=a||0;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")+a;this.setWidth(b.constrain(this.minWidth,this.maxWidth));if(Ext.isIE7&&!this.repainted){this.el.repaint();this.repainted=true}},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.reg("tip",Ext.Tip);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,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,constrainPosition:false,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget(this.target);this.origAnchor=this.anchor},onRender:function(b,a){Ext.ToolTip.superclass.onRender.call(this,b,a);this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl=this.el.createChild({cls:"x-tip-anchor "+this.anchorCls})},afterRender:function(){Ext.ToolTip.superclass.afterRender.call(this);this.anchorEl.setStyle("z-index",this.el.getZIndex()+1).setVisibilityMode(Ext.Element.DISPLAY)},initTarget:function(c){var a;if((a=Ext.get(c))){if(this.target){var b=Ext.get(this.target);this.mun(b,"mouseover",this.onTargetOver,this);this.mun(b,"mouseout",this.onTargetOut,this);this.mun(b,"mousemove",this.onMouseMove,this)}this.mon(a,{mouseover:this.onTargetOver,mouseout:this.onTargetOut,mousemove:this.onMouseMove,scope:this});this.target=a}if(this.anchor){this.anchorTarget=this.target}},onMouseMove:function(b){var a=this.delegate?b.getTarget(this.delegate):this.triggerElement=true;if(a){this.targetXY=b.getXY();if(a===this.triggerElement){if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}}else{this.hide();this.lastActive=new Date(0);this.onTargetOver(b)}}else{if(!this.closable&&this.isVisible()){this.hide()}}},getTargetXY:function(){if(this.delegate){this.anchorTarget=this.triggerElement}if(this.anchor){this.targetCounter++;var c=this.getOffsets(),l=(this.anchorToTarget&&!this.trackMouse)?this.el.getAlignToXY(this.anchorTarget,this.getAnchorAlign()):this.targetXY,a=Ext.lib.Dom.getViewWidth()-5,h=Ext.lib.Dom.getViewHeight()-5,i=document.documentElement,e=document.body,k=(i.scrollLeft||e.scrollLeft||0)+5,j=(i.scrollTop||e.scrollTop||0)+5,b=[l[0]+c[0],l[1]+c[1]],g=this.getSize();this.anchorEl.removeClass(this.anchorCls);if(this.targetCounter<2){if(b[0]<k){if(this.anchorToTarget){this.defaultAlign="l-r";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="left";return this.getTargetXY()}if(b[0]+g.width>a){if(this.anchorToTarget){this.defaultAlign="r-l";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="right";return this.getTargetXY()}if(b[1]<j){if(this.anchorToTarget){this.defaultAlign="t-b";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="top";return this.getTargetXY()}if(b[1]+g.height>h){if(this.anchorToTarget){this.defaultAlign="b-t";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="bottom";return this.getTargetXY()}}this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl.addClass(this.anchorCls);this.targetCounter=0;return b}else{var d=this.getMouseOffset();return[this.targetXY[0]+d[0],this.targetXY[1]+d[1]]}},getMouseOffset:function(){var a=this.anchor?[0,0]:[15,18];if(this.mouseOffset){a[0]+=this.mouseOffset[0];a[1]+=this.mouseOffset[1]}return a},getAnchorPosition:function(){if(this.anchor){this.tipAnchor=this.anchor.charAt(0)}else{var a=this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!a){throw"AnchorTip.defaultAlign is invalid"}this.tipAnchor=a[1].charAt(0)}switch(this.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var b,a=this.getAnchorPosition().charAt(0);if(this.anchorToTarget&&!this.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-this.anchorOffset,30];break;case"b":b=[-19-this.anchorOffset,-13-this.el.dom.offsetHeight];break;case"r":b=[-15-this.el.dom.offsetWidth,-13-this.anchorOffset];break;default:b=[25,-13-this.anchorOffset];break}}var c=this.getMouseOffset();b[0]+=c[0];b[1]+=c[1];return b},onTargetOver:function(b){if(this.disabled||b.within(this.target.dom,true)){return}var a=b.getTarget(this.delegate);if(a){this.triggerElement=a;this.clearTimer("hide");this.targetXY=b.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();if(this.anchorEl){this.anchorEl.hide()}Ext.ToolTip.superclass.hide.call(this);delete this.triggerElement},show:function(){if(this.anchor){this.showAt([-1000,-1000]);this.origConstrainPosition=this.constrainPosition;this.constrainPosition=false;this.anchor=this.origAnchor}this.showAt(this.getTargetXY());if(this.anchor){this.anchorEl.show();this.syncAnchor();this.constrainPosition=this.origConstrainPosition}else{this.anchorEl.hide()}},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)}if(this.anchor&&!this.anchorEl.isVisible()){this.syncAnchor();this.anchorEl.show()}else{this.anchorEl.hide()}},syncAnchor:function(){var a,b,c;switch(this.tipAnchor.charAt(0)){case"t":a="b";b="tl";c=[20+this.anchorOffset,2];break;case"r":a="l";b="tr";c=[-2,11+this.anchorOffset];break;case"b":a="t";b="bl";c=[20+this.anchorOffset,-2];break;default:a="r";b="tl";c=[2,11+this.anchorOffset];break}this.anchorEl.alignTo(this.el,a+"-"+b,c)},setPagePosition:function(a,b){Ext.ToolTip.superclass.setPagePosition.call(this,a,b);if(this.anchor){this.syncAnchor()}},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!==true&&!this.closable&&!a.within(this.el.dom)){this.disable();this.doEnable.defer(100,this)}},doEnable:function(){if(!this.isDestroyed){this.enable()}},onDisable:function(){this.clearTimers();this.hide()},adjustPosition:function(a,d){if(this.constrainPosition){var c=this.targetXY[1],b=this.getSize().height;if(d<=c&&(d+b)>=c){d=c-b-5}}return{x:a,y:d}},beforeDestroy:function(){this.clearTimers();Ext.destroy(this.anchorEl);delete this.anchorEl;delete this.target;delete this.anchorTarget;delete this.triggerElement;Ext.ToolTip.superclass.beforeDestroy.call(this)},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);Ext.ToolTip.superclass.onDestroy.call(this)}});Ext.reg("tooltip",Ext.ToolTip);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",anchor:"anchor"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(e){var h=Ext.isArray(e)?e:arguments;for(var g=0,a=h.length;g<a;g++){var l=h[g];var k=l.target;if(k){if(Ext.isArray(k)){for(var d=0,b=k.length;d<b;d++){this.targets[Ext.id(k[d])]=l}}else{this.targets[Ext.id(k)]=l}}}},unregister:function(a){delete this.targets[Ext.id(a)]},cancelShow:function(b){var a=this.activeTarget;b=Ext.get(b).dom;if(this.isVisible()){if(a&&a.el==b){this.hide()}}else{if(a&&a.el==b){this.clearTimer("show")}}},getTipCfg:function(d){var b=d.getTarget(),c,a;if(this.interceptTitles&&b.title&&Ext.isString(b.title)){c=b.title;b.qtip=c;b.removeAttribute("title");d.preventDefault()}else{a=this.tagConfig;c=b.qtip||Ext.fly(b).getAttribute(a.attribute,a.namespace)}return c},onTargetOver:function(i){if(this.disabled){return}this.targetXY=i.getXY();var c=i.getTarget();if(!c||c.nodeType!==1||c==document||c==document.body){return}if(this.activeTarget&&((c==this.activeTarget.el)||Ext.fly(this.activeTarget.el).contains(c))){this.clearTimer("hide");this.show();return}if(c&&this.targets[c.id]){this.activeTarget=this.targets[c.id];this.activeTarget.el=c;this.anchor=this.activeTarget.anchor;if(this.anchor){this.anchorTarget=c}this.delayShow();return}var g,h=Ext.fly(c),b=this.tagConfig,d=b.namespace;if(g=this.getTipCfg(i)){var a=h.getAttribute(b.hide,d);this.activeTarget={el:c,text:g,width:h.getAttribute(b.width,d),autoHide:a!="user"&&a!=="false",title:h.getAttribute(b.title,d),cls:h.getAttribute(b.cls,d),align:h.getAttribute(b.align,d)};this.anchor=h.getAttribute(b.anchor,d);if(this.anchor){this.anchorTarget=c}this.delayShow()}},onTargetOut:function(a){if(this.activeTarget&&a.within(this.activeTarget.el)&&!this.getTipCfg(a)){return}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(this.anchor){this.constrainPosition=false}else{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.reg("quicktip",Ext.QuickTip);Ext.QuickTips=function(){var b,a=false;return{init:function(c){if(!b){if(!Ext.isReady){Ext.onReady(function(){Ext.QuickTips.init(c)});return}b=new Ext.QuickTip({elements:"header,body",disabled:a});if(c!==false){b.render(Ext.getBody())}}},ddDisable:function(){if(b&&!a){b.disable()}},ddEnable:function(){if(b&&!a){b.enable()}},enable:function(){if(b){b.enable()}a=false},disable:function(){if(b){b.disable()}a=true},isEnabled:function(){return b!==undefined&&!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.slider.Tip=Ext.extend(Ext.Tip,{minWidth:10,offsets:[0,-10],init:function(a){a.on({scope:this,dragstart:this.onSlide,drag:this.onSlide,dragend:this.hide,destroy:this.destroy})},onSlide:function(b,c,a){this.show();this.body.update(this.getText(a));this.doAutoWidth();this.el.alignTo(a.el,"b-t?",this.offsets)},getText:function(a){return String(a.value)}});Ext.ux.SliderTip=Ext.slider.Tip;Ext.tree.TreePanel=Ext.extend(Ext.Panel,{rootVisible:true,animate:Ext.enableFx,lines:true,enableDD:false,hlDrop:Ext.enableFx,pathSeparator:"/",bubbleEvents:[],initComponent:function(){Ext.tree.TreePanel.superclass.initComponent.call(this);if(!this.eventModel){this.eventModel=new Ext.tree.TreeEventModel(this)}var a=this.loader;if(!a){a=new Ext.tree.TreeLoader({dataUrl:this.dataUrl,requestMethod:this.requestMethod})}else{if(Ext.isObject(a)&&!a.load){a=new Ext.tree.TreeLoader(a)}}this.loader=a;this.nodeHash={};if(this.root){var b=this.root;delete this.root;this.setRootNode(b)}this.addEvents("append","remove","movenode","insert","beforeappend","beforeremove","beforemovenode","beforeinsert","beforeload","load","textchange","beforeexpandnode","beforecollapsenode","expandnode","disabledchange","collapsenode","beforeclick","click","containerclick","checkchange","beforedblclick","dblclick","containerdblclick","contextmenu","containercontextmenu","beforechildrenrendered","startdrag","enddrag","dragdrop","beforenodedrop","nodedrop","nodedragover");if(this.singleExpand){this.on("beforeexpandnode",this.restrictExpand,this)}},proxyNodeEvent:function(c,b,a,h,g,e,d){if(c=="collapse"||c=="expand"||c=="beforecollapse"||c=="beforeexpand"||c=="move"||c=="beforemove"){c=c+"node"}return this.fireEvent(c,b,a,h,g,e,d)},getRootNode:function(){return this.root},setRootNode:function(b){this.destroyRoot();if(!b.render){b=this.loader.createNode(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)}if(this.innerCt){this.clearInnerCt();this.renderRoot()}return b},clearInnerCt:function(){this.innerCt.update("")},renderRoot:function(){this.root.render();if(!this.rootVisible){this.root.renderChildren()}},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(b,c){c=c||this.root;var d=[];var e=function(){if(this.attributes.checked){d.push(!b?this:(b=="id"?this.id:this.attributes[b]))}};c.cascade(e);return d},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(g,a,h){if(Ext.isEmpty(g)){if(h){h(false,undefined)}return}a=a||"id";var d=g.split(this.pathSeparator);var c=this.root;if(c.attributes[a]!=d[1]){if(h){h(false,null)}return}var b=1;var e=function(){if(++b==d.length){if(h){h(true,c)}return}var i=c.findChild(a,d[b]);if(!i){if(h){h(false,c)}return}c=i;i.expand(false,false,e)};c.expand(false,false,e)},selectPath:function(e,a,g){if(Ext.isEmpty(e)){if(g){g(false,undefined)}return}a=a||"id";var c=e.split(this.pathSeparator),b=c.pop();if(c.length>1){var d=function(i,h){if(i&&h){var j=h.findChild(a,b);if(j){j.select();if(g){g(true,j)}}else{if(g){g(false,j)}}}else{if(g){g(false,j)}}};this.expandPath(c.join(this.pathSeparator),a,d)}else{this.root.select();if(g){g(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.renderRoot()},beforeDestroy:function(){if(this.rendered){Ext.dd.ScrollManager.unregister(this.body);Ext.destroy(this.dropZone,this.dragZone)}this.destroyRoot();Ext.destroy(this.loader);this.nodeHash=this.root=this.loader=null;Ext.tree.TreePanel.superclass.beforeDestroy.call(this)},destroyRoot:function(){if(this.root&&this.root.destroy){this.root.destroy(true)}}});Ext.tree.TreePanel.nodeTypes={};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;if(a.trackMouseOver!==false){a.mon(a.innerCt,{scope:this,mouseover:this.delegateOver,mouseout:this.delegateOut})}a.mon(a.getTreeEl(),{scope:this,click:this.delegateClick,dblclick:this.delegateDblClick,contextmenu:this.delegateContextMenu})},getNode:function(b){var a;if(a=b.getTarget(".x-tree-node-el",10)){var c=Ext.fly(a,"_treeEvents").getAttribute("tree-node-id","ext");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(Ext.isGecko&&!this.trackingDoc){Ext.getBody().on("mouseover",this.trackExit,this);this.trackingDoc=true}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))}},trackExit:function(a){if(this.lastOverNode){if(this.lastOverNode.ui&&!a.within(this.lastOverNode.ui.getEl())){this.onNodeOut(a,this.lastOverNode)}delete this.lastOverNode;Ext.getBody().un("mouseover",this.trackExit,this);this.trackingDoc=false}},delegateClick:function(b,a){if(this.beforeEvent(b)){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))}}}}else{this.checkContainerEvent(b,"click")}},delegateDblClick:function(b,a){if(this.beforeEvent(b)){if(this.getNodeTarget(b)){this.onNodeDblClick(b,this.getNode(b))}}else{this.checkContainerEvent(b,"dblclick")}},delegateContextMenu:function(b,a){if(this.beforeEvent(b)){if(this.getNodeTarget(b)){this.onNodeContextMenu(b,this.getNode(b))}}else{this.checkContainerEvent(b,"contextmenu")}},checkContainerEvent:function(b,a){if(this.disabled){b.stopEvent();return false}this.onContainerEvent(b,a)},onContainerEvent:function(b,a){this.tree.fireEvent("container"+a,this.tree,b)},onNodeClick:function(b,a){a.ui.onClick(b)},onNodeOver:function(b,a){this.lastOverNode=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(b){var a=this.getNode(b);if(this.disabled||!a||!a.ui){b.stopEvent();return false}return true},disable:function(){this.disabled=true},enable:function(){this.disabled=false}};Ext.tree.DefaultSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(a){this.selNode=null;this.addEvents("selectionchange","beforeselect");Ext.apply(this,a);Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)},init:function(a){this.tree=a;a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);a.on("click",this.onNodeClick,this)},onNodeClick:function(a,b){this.select(a)},select:function(c,a){if(!Ext.fly(c.ui.wrap).isVisible()&&a){return a.call(this,c)}var b=this.selNode;if(c==b){c.ui.onSelectedChange(true)}else{if(this.fireEvent("beforeselect",this,c,b)!==false){if(b&&b.ui){b.ui.onSelectedChange(false)}this.selNode=c;c.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,c,b)}}return c},unselect:function(b,a){if(this.selNode==b){this.clearSelections(a)}},clearSelections:function(a){var b=this.selNode;if(b){b.ui.onSelectedChange(false);this.selNode=null;if(a!==true){this.fireEvent("selectionchange",this,null)}}return b},getSelectedNode:function(){return this.selNode},isSelected:function(a){return this.selNode==a},selectPrevious:function(a){if(!(a=a||this.selNode||this.lastSelNode)){return null}var c=a.previousSibling;if(c){if(!c.isExpanded()||c.childNodes.length<1){return this.select(c,this.selectPrevious)}else{var b=c.lastChild;while(b&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()&&b.childNodes.length>0){b=b.lastChild}return this.select(b,this.selectPrevious)}}else{if(a.parentNode&&(this.tree.rootVisible||!a.parentNode.isRoot)){return this.select(a.parentNode,this.selectPrevious)}}return null},selectNext:function(b){if(!(b=b||this.selNode||this.lastSelNode)){return null}if(b.firstChild&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()){return this.select(b.firstChild,this.selectNext)}else{if(b.nextSibling){return this.select(b.nextSibling,this.selectNext)}else{if(b.parentNode){var a=null;b.parentNode.bubble(function(){if(this.nextSibling){a=this.getOwnerTree().selModel.select(this.nextSibling,this.selectNext);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=Ext.extend(Ext.util.Observable,{constructor:function(a){this.selNodes=[];this.selMap={};this.addEvents("selectionchange");Ext.apply(this,a);Ext.tree.MultiSelectionModel.superclass.constructor.call(this)},init:function(a){this.tree=a;a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);a.on("click",this.onNodeClick,this)},onNodeClick:function(a,b){if(b.ctrlKey&&this.isSelected(a)){this.unselect(a)}else{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.concat([])},onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious});Ext.data.Tree=Ext.extend(Ext.util.Observable,{constructor: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)},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=Ext.extend(Ext.util.Observable,{constructor:function(a){this.attributes=a||{};this.leaf=this.attributes.leaf;this.id=this.attributes.id;if(!this.id){this.id=Ext.id(null,"xnode-");this.attributes.id=this.id}this.childNodes=[];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)},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},isExpandable:function(){return this.attributes.expandable||this.hasChildNodes()},appendChild:function(e){var g=false;if(Ext.isArray(e)){g=e}else{if(arguments.length>1){g=arguments}}if(g){for(var d=0,a=g.length;d<a;d++){this.appendChild(g[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 h=this.childNodes[b-1];if(h){e.previousSibling=h;h.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(c,b){var a=this.childNodes.indexOf(c);if(a==-1){return false}if(this.fireEvent("beforeremove",this.ownerTree,this,c)===false){return false}this.childNodes.splice(a,1);if(c.previousSibling){c.previousSibling.nextSibling=c.nextSibling}if(c.nextSibling){c.nextSibling.previousSibling=c.previousSibling}if(this.firstChild==c){this.setFirstChild(c.nextSibling)}if(this.lastChild==c){this.setLastChild(c.previousSibling)}this.fireEvent("remove",this.ownerTree,this,c);if(b){c.destroy(true)}else{c.clear()}return c},clear:function(a){this.setOwnerTree(null,a);this.parentNode=this.previousSibling=this.nextSibling=null;if(a){this.firstChild=this.lastChild=null}},destroy:function(a){if(a===true){this.purgeListeners();this.clear(true);Ext.each(this.childNodes,function(b){b.destroy(true)});this.childNodes=null}else{this.remove(true)}},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 g=this.childNodes[e-1];if(g){d.previousSibling=g;g.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(a){if(this.parentNode){this.parentNode.removeChild(this,a)}return this},removeAll:function(a){var c=this.childNodes,b;while((b=c[0])){this.removeChild(b,a)}return this},item:function(a){return this.childNodes[a]},replaceChild:function(a,c){var b=c?c.nextSibling:null;this.removeChild(c);this.insertBefore(a,b);return c},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(a,b){if(a!=this.ownerTree){if(this.ownerTree){this.ownerTree.unregisterNode(this)}this.ownerTree=a;if(b!==true){Ext.each(this.childNodes,function(c){c.setOwnerTree(a)})}if(a){a.registerNode(this)}}},setId:function(b){if(b!==this.id){var a=this.ownerTree;if(a){a.unregisterNode(this)}this.id=this.attributes.id=b;if(a){a.registerNode(this)}this.onIdChange(b)}},onIdChange:Ext.emptyFn,getPath:function(c){c=c||"id";var e=this.parentNode;var a=[this.attributes[c]];while(e){a.unshift(e.attributes[c]);e=e.parentNode}var d=this.getOwnerTree().pathSeparator;return d+a.join(d)},bubble:function(c,b,a){var d=this;while(d){if(c.apply(b||d,a||[d])===false){break}d=d.parentNode}},cascade:function(g,e,b){if(g.apply(e||this,b||[this])!==false){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){d[c].cascade(g,e,b)}}},eachChild:function(g,e,b){var d=this.childNodes;for(var c=0,a=d.length;c<a;c++){if(g.apply(e||d[c],b||[d[c]])===false){break}}},findChild:function(b,c,a){return this.findChildBy(function(){return this.attributes[b]==c},null,a)},findChildBy:function(h,g,b){var e=this.childNodes,a=e.length,d=0,j,c;for(;d<a;d++){j=e[d];if(h.call(g||j,j)===true){return j}else{if(b){c=j.findChildBy(h,g,b);if(c!=null){return c}}}}return null},sort:function(e,d){var c=this.childNodes;var a=c.length;if(a>0){var g=d?function(){e.apply(d,arguments)}:e;c.sort(g);for(var b=0;b<a;b++){var h=c[b];h.previousSibling=c[b-1];h.nextSibling=c[b+1];if(b===0){this.setFirstChild(h)}if(b==a-1){this.setLastChild(h)}}}},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.tree.TreeNode=Ext.extend(Ext.data.Node,{constructor:function(a){a=a||{};if(Ext.isString(a)){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.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.hidden=a.hidden===true;this.addEvents("textchange","beforeexpand","beforecollapse","expand","disabledchange","collapse","beforeclick","click","checkchange","beforedblclick","dblclick","contextmenu","beforechildrenrendered");var b=this.attributes.uiProvider||this.defaultUI||Ext.tree.TreeNodeUI;this.ui=new b(this)},preventHScroll:true,isExpanded:function(){return this.expanded},getUI:function(){return this.ui},getLoader:function(){var a;return this.loader||((a=this.getOwnerTree())&&a.loader?a.loader:(this.loader=new Ext.tree.TreeLoader()))},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(b){if(!b.render&&!Ext.isArray(b)){b=this.getLoader().createNode(b)}var a=Ext.tree.TreeNode.superclass.appendChild.call(this,b);if(a&&this.childrenRendered){a.render()}this.ui.updateExpandIcon();return a},removeChild:function(b,a){this.ownerTree.getSelectionModel().unselect(b);Ext.tree.TreeNode.superclass.removeChild.apply(this,arguments);if(!a){var c=b.ui.rendered;if(c){b.ui.remove()}if(c&&this.childNodes.length<1){this.collapse(false,false)}else{this.ui.updateExpandIcon()}if(!this.firstChild&&!this.isHiddenRoot()){this.childrenRendered=false}}return b},insertBefore:function(c,a){if(!c.render){c=this.getLoader().createNode(c)}var b=Ext.tree.TreeNode.superclass.insertBefore.call(this,c,a);if(b&&a&&this.childrenRendered){c.render()}this.ui.updateExpandIcon();return b},setText:function(b){var a=this.text;this.text=this.attributes.text=b;if(this.rendered){this.ui.onTextChange(this,b,a)}this.fireEvent("textchange",this,b,a)},setIconCls:function(b){var a=this.attributes.iconCls;this.attributes.iconCls=b;if(this.rendered){this.ui.onIconClsChange(this,b,a)}},setTooltip:function(a,b){this.attributes.qtip=a;this.attributes.qtipTitle=b;if(this.rendered){this.ui.onTipChange(this,a,b)}},setIcon:function(a){this.attributes.icon=a;if(this.rendered){this.ui.onIconChange(this,a)}},setHref:function(a,b){this.attributes.href=a;this.attributes.hrefTarget=b;if(this.rendered){this.ui.onHrefChange(this,a,b)}},setCls:function(b){var a=this.attributes.cls;this.attributes.cls=b;if(this.rendered){this.ui.onClsChange(this,b,a)}},select:function(){var a=this.getOwnerTree();if(a){a.getSelectionModel().select(this)}},unselect:function(a){var b=this.getOwnerTree();if(b){b.getSelectionModel().unselect(this,a)}},isSelected:function(){var a=this.getOwnerTree();return a?a.getSelectionModel().isSelected(this):false},expand:function(a,c,d,b){if(!this.expanded){if(this.fireEvent("beforeexpand",this,a,c)===false){return}if(!this.childrenRendered){this.renderChildren()}this.expanded=true;if(!this.isHiddenRoot()&&(this.getOwnerTree().animate&&c!==false)||c){this.ui.animExpand(function(){this.fireEvent("expand",this);this.runCallback(d,b||this,[this]);if(a===true){this.expandChildNodes(true,true)}}.createDelegate(this));return}else{this.ui.expand();this.fireEvent("expand",this);this.runCallback(d,b||this,[this])}}else{this.runCallback(d,b||this,[this])}if(a===true){this.expandChildNodes(true)}},runCallback:function(a,c,b){if(Ext.isFunction(a)){a.apply(c,b)}},isHiddenRoot:function(){return this.isRoot&&!this.getOwnerTree().rootVisible},collapse:function(b,g,h,e){if(this.expanded&&!this.isHiddenRoot()){if(this.fireEvent("beforecollapse",this,b,g)===false){return}this.expanded=false;if((this.getOwnerTree().animate&&g!==false)||g){this.ui.animCollapse(function(){this.fireEvent("collapse",this);this.runCallback(h,e||this,[this]);if(b===true){this.collapseChildNodes(true)}}.createDelegate(this));return}else{this.ui.collapse();this.fireEvent("collapse",this);this.runCallback(h,e||this,[this])}}else{if(!this.expanded){this.runCallback(h,e||this,[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(c,b){var a=this.getOwnerTree();a.expandPath(this.parentNode?this.parentNode.getPath():this.getPath(),false,function(){var d=a.getNodeById(this.id);a.getTreeEl().scrollChildIntoView(d.ui.anchor);this.runCallback(c,b||this,[this])}.createDelegate(this))},expandChildNodes:function(b,e){var d=this.childNodes,c,a=d.length;for(c=0;c<a;c++){d[c].expand(b,e)}},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.rendered){this.renderChildren()}},destroy:function(a){if(a===true){this.unselect(true)}Ext.tree.TreeNode.superclass.destroy.call(this,a);Ext.destroy(this.ui,this.loader);this.ui=this.loader=null},onIdChange:function(a){this.ui.onIdChange(a)}});Ext.tree.TreePanel.nodeTypes.node=Ext.tree.TreeNode;Ext.tree.AsyncTreeNode=function(a){this.loaded=a&&a.loaded===true;this.loading=false;Ext.tree.AsyncTreeNode.superclass.constructor.apply(this,arguments);this.addEvents("beforeload","load")};Ext.extend(Ext.tree.AsyncTreeNode,Ext.tree.TreeNode,{expand:function(b,e,h,c){if(this.loading){var g;var d=function(){if(!this.loading){clearInterval(g);this.expand(b,e,h,c)}}.createDelegate(this);g=setInterval(d,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,e,h,c]),this);return}}Ext.tree.AsyncTreeNode.superclass.expand.call(this,b,e,h,c)},isLoading:function(){return this.loading},loadComplete:function(a,c,d,b){this.loading=false;this.loaded=true;this.ui.afterLoad(this);this.fireEvent("load",this);this.expand(a,c,d,b)},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(b,a){this.collapse(false,false);while(this.firstChild){this.removeChild(this.firstChild).destroy()}this.childrenRendered=false;this.loaded=false;if(this.isHiddenRoot()){this.expanded=false}this.expand(false,false,b,a)}});Ext.tree.TreePanel.nodeTypes.async=Ext.tree.AsyncTreeNode;Ext.tree.TreeNodeUI=Ext.extend(Object,{constructor:function(a){Ext.apply(this,{node:a,rendered:false,animating:false,wasLeaf:true,ecc:"x-tree-ec-icon x-tree-elbow",emptyIcon:Ext.BLANK_IMAGE_URL})},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}},onIconClsChange:function(c,a,b){if(this.rendered){Ext.fly(this.iconNode).replaceClass(b,a)}},onIconChange:function(b,a){if(this.rendered){var c=Ext.isEmpty(a);this.iconNode.src=c?this.emptyIcon:a;Ext.fly(this.iconNode)[c?"removeClass":"addClass"]("x-tree-node-inline-icon")}},onTipChange:function(b,c,d){if(this.rendered){var a=Ext.isDefined(d);if(this.textNode.setAttributeNS){this.textNode.setAttributeNS("ext","qtip",c);if(a){this.textNode.setAttributeNS("ext","qtitle",d)}}else{this.textNode.setAttribute("ext:qtip",c);if(a){this.textNode.setAttribute("ext:qtitle",d)}}}},onHrefChange:function(b,a,c){if(this.rendered){this.anchor.href=this.getHref(a);if(Ext.isDefined(c)){this.anchor.target=c}}},onClsChange:function(c,a,b){if(this.rendered){Ext.fly(this.elNode).replaceClass(b,a)}},onDisableChange:function(a,b){this.disabled=b;if(this.checkbox){this.checkbox.disabled=b}this[b?"addClass":"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,h,e,g,d,b){this.childIndent=null;if(this.rendered){var i=g.ui.getContainer();if(!i){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);return}var c=b?b.ui.getEl():null;if(c){i.insertBefore(this.wrap,c)}else{i.appendChild(this.wrap)}this.node.renderIndent(true,e!=g)}},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.onDisableChange(this.node,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(c){if(this.dropping){c.stopEvent();return}if(this.fireEvent("beforeclick",this.node,c)!==false){var b=c.getTarget("a");if(!this.disabled&&this.node.attributes.href&&b){this.fireEvent("click",this.node,c);return}else{if(b&&c.ctrlKey){c.stopEvent()}}c.preventDefault();if(this.disabled){return}if(this.node.attributes.singleClickExpand&&!this.animating&&this.node.isExpandable()){this.node.toggle()}this.fireEvent("click",this.node,c)}else{c.stopEvent()}},onDblClick:function(a){a.preventDefault();if(this.disabled){return}if(this.fireEvent("beforedblclick",this.node,a)!==false){if(this.checkbox){this.toggleCheck()}if(!this.animating&&this.node.isExpandable()){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.checkbox.defaultChecked=a;this.node.attributes.checked=a;this.fireEvent("checkchange",this.node,a)},ecClick:function(a){if(!this.animating&&this.node.isExpandable()){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{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);this.onCheckChange()}},blur:function(){try{this.anchor.blur()}catch(a){}},animExpand:function(b){var a=Ext.get(this.ctNode);a.stopFx();if(!this.node.isExpandable()){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(c){var e=this.node,b=e.attributes;var d=e.parentNode?e.parentNode.ui.getContainer():e.ownerTree.innerCt.dom;if(!this.rendered){this.rendered=true;this.renderElements(e,b,d,c);if(b.qtip){this.onTipChange(e,b.qtip,b.qtipTitle)}else{if(b.qtipCfg){b.qtipCfg.target=Ext.id(this.textNode);Ext.QuickTips.register(b.qtipCfg)}}this.initEvents();if(!this.node.expanded){this.updateExpandIcon(true)}}else{if(c===true){d.appendChild(this.wrap)}}},renderElements:function(e,k,j,l){this.indentMarkup=e.parentNode?e.parentNode.ui.getChildIndent():"";var g=Ext.isBoolean(k.checked),b,c=this.getHref(k.href),d=['<li class="x-tree-node"><div ext:tree-node-id="',e.id,'" class="x-tree-node-el x-tree-node-leaf x-unselectable ',k.cls,'" unselectable="on">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img alt="" src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow" />','<img alt="" src="',k.icon||this.emptyIcon,'" class="x-tree-node-icon',(k.icon?" x-tree-node-inline-icon":""),(k.iconCls?" "+k.iconCls:""),'" unselectable="on" />',g?('<input class="x-tree-node-cb" type="checkbox" '+(k.checked?'checked="checked" />':"/>")):"",'<a hidefocus="on" class="x-tree-node-anchor" href="',c,'" tabIndex="1" ',k.hrefTarget?' target="'+k.hrefTarget+'"':"",'><span unselectable="on">',e.text,"</span></a></div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"].join("");if(l!==true&&e.nextSibling&&(b=e.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",b,d)}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",j,d)}this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var i=this.elNode.childNodes;this.indentNode=i[0];this.ecNode=i[1];this.iconNode=i[2];var h=3;if(g){this.checkbox=i[3];this.checkbox.defaultChecked=this.checkbox.checked;h++}this.anchor=i[h];this.textNode=i[h].firstChild},getHref:function(a){return Ext.isEmpty(a)?(Ext.isGecko?"":"#"):a},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 g=this.node,d,c,a=g.isLast()?"x-tree-elbow-end":"x-tree-elbow",e=g.hasChildNodes();if(e||g.attributes.expandable){if(g.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-collapsed");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}}},onIdChange:function(a){if(this.rendered){this.elNode.setAttribute("ext:tree-node-id",a)}},getChildIndent:function(){if(!this.childIndent){var a=[],b=this.node;while(b){if(!b.isRoot||(b.isRoot&&b.ownerTree.rootVisible)){if(!b.isLast()){a.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-elbow-line" />')}else{a.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-icon" />')}}b=b.parentNode}this.childIndent=a.join("")}return this.childIndent},renderIndent:function(){if(this.rendered){var a="",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)}Ext.each(["textnode","anchor","checkbox","indentNode","ecNode","iconNode","elNode","ctNode","wrap","holder"],function(a){if(this[a]){Ext.fly(this[a]).remove();delete this[a]}},this);delete this.node}});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='<div class="x-tree-root-node"></div>';this.wrap=this.ctNode=a.firstChild}},collapse:Ext.emptyFn,expand:Ext.emptyFn});Ext.tree.TreeLoader=function(a){this.baseParams={};Ext.apply(this,a);this.addEvents("beforeload","load","loadexception");Ext.tree.TreeLoader.superclass.constructor.call(this);if(Ext.isString(this.paramOrder)){this.paramOrder=this.paramOrder.split(/[\s,|]/)}};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,paramOrder:undefined,paramsAsHash:false,nodeParameter:"node",directFn:undefined,load:function(b,c,a){if(this.clearOnLoad){while(b.firstChild){b.removeChild(b.firstChild)}}if(this.doPreload(b)){this.runCallback(c,a||b,[b])}else{if(this.directFn||this.dataUrl||this.url){this.requestData(b,c,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}return false},getParams:function(g){var e=Ext.apply({},this.baseParams),h=this.nodeParameter,b=this.paramOrder;h&&(e[h]=g.id);if(this.directFn){var c=[g.id];if(b){if(h&&b.indexOf(h)>-1){c=[]}for(var d=0,a=b.length;d<a;d++){c.push(e[b[d]])}}else{if(this.paramsAsHash){c=[e]}}return c}else{return e}},requestData:function(c,d,b){if(this.fireEvent("beforeload",this,c,d)!==false){if(this.directFn){var a=this.getParams(c);a.push(this.processDirectResponse.createDelegate(this,[{callback:d,node:c,scope:b}],true));this.directFn.apply(window,a)}else{this.transId=Ext.Ajax.request({method:this.requestMethod,url:this.dataUrl||this.url,success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:d,node:c,scope:b},params:this.getParams(c)})}}else{this.runCallback(d,b||c,[])}},processDirectResponse:function(a,b,c){if(b.status){this.handleResponse({responseData:Ext.isArray(a)?a:null,responseText:a,argument:c})}else{this.handleFailure({argument:c})}},runCallback:function(a,c,b){if(Ext.isFunction(a)){a.apply(c,b)}},isLoading:function(){return !!this.transId},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){attr.loader=this}if(Ext.isString(attr.uiProvider)){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider)}if(attr.nodeType){return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr)}else{return attr.leaf?new Ext.tree.TreeNode(attr):new Ext.tree.AsyncTreeNode(attr)}},processResponse:function(d,c,k,l){var m=d.responseText;try{var a=d.responseData||Ext.decode(m);c.beginUpdate();for(var g=0,h=a.length;g<h;g++){var b=this.createNode(a[g]);if(b){c.appendChild(b)}}c.endUpdate();this.runCallback(k,l||c,[c])}catch(j){this.handleFailure(d)}},handleResponse:function(c){this.transId=false;var b=c.argument;this.processResponse(c,b.node,b.callback,b.scope);this.fireEvent("load",this,b.node,c)},handleFailure:function(c){this.transId=false;var b=c.argument;this.fireEvent("loadexception",this,b.node,c);this.runCallback(b.callback,b.scope||b.node,[b.node])},destroy:function(){this.abort();this.purgeListeners()}});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(g){return g.attributes[a].substr(0,e).toLowerCase()==d}}else{if(d.exec){c=function(g){return d.test(g.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,i=this.reverse;var e=function(k){if(k==b){return true}if(a[k.id]){return false}var j=d.call(c||k,k);if(!j||i){a[k.id]=k;k.ui.hide();return false}return true};b.cascade(e);if(this.remove){for(var h in a){if(typeof h!="function"){var g=a[h];if(g&&g.parentNode){g.parentNode.removeChild(g)}}}}},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=Ext.extend(Object,{constructor:function(a,c){Ext.apply(this,c);a.on({scope:this,beforechildrenrendered:this.doSort,append:this.updateSort,insert:this.updateSort,textchange:this.updateSortParent});var e=this.dir&&this.dir.toLowerCase()=="desc",i=this.property||"text",d=this.sortType,h=this.folderSort,b=this.caseSensitive===true,g=this.leafAttr||"leaf";if(Ext.isString(d)){d=Ext.data.SortTypes[d]}this.sortFn=function(o,m){var k=o.attributes,j=m.attributes;if(h){if(k[g]&&!j[g]){return 1}if(!k[g]&&j[g]){return -1}}var n=k[i],l=j[i],q=d?d(n):(b?n:n.toUpperCase()),p=d?d(l):(b?l:l.toUpperCase());if(q<p){return e?1:-1}else{if(q>p){return e?-1:1}}return 0}},doSort:function(a){a.sort(this.sortFn)},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=b.allowParentInsert||false;this.allowContainerDrop=b.allowContainerDrop||false;this.appendOnly=b.appendOnly||false;Ext.tree.TreeDropZone.superclass.constructor.call(this,a.getTreeEl(),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,k,i,d,c){if(!a||!c){return false}var g=a.node;var h=c.node;if(!(g&&g.isTarget&&k)){return false}if(k=="append"&&g.allowChildren===false){return false}if((k=="above"||k=="below")&&(g.parentNode&&g.parentNode.allowChildren===false)){return false}if(h&&(g==h||h.contains(g))){return false}var b=this.dragOverData;b.tree=this.tree;b.target=g;b.data=c;b.point=k;b.source=i;b.rawEvent=d;b.dropNode=h;b.cancel=false;var j=this.tree.fireEvent("nodedragover",b);return b.cancel===false&&j!==false},getDropPoint:function(h,g,l){var m=g.node;if(m.isRoot){return m.allowChildren!==false?"append":false}var c=g.ddel;var o=Ext.lib.Dom.getY(c),j=o+c.offsetHeight;var i=Ext.lib.Event.getPageY(h);var k=m.allowChildren===false||m.isLeaf();if(this.appendOnly||m.parentNode.allowChildren===false){return k?false:"append"}var d=false;if(!this.allowParentInsert){d=m.hasChildNodes()&&m.isExpanded()}var a=(j-o)/(k?2:3);if(i>=o&&i<(o+a)){return"above"}else{if(!d&&(k||i>=j-a&&i<=j)){return"below"}else{return"append"}}},onNodeEnter:function(d,a,c,b){this.cancelExpand()},onContainerOver:function(a,c,b){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",a,c,b)){return this.dropAllowed}return this.dropNotAllowed},onNodeOver:function(b,i,h,g){var k=this.getDropPoint(h,b,i);var c=b.node;if(!this.expandProcId&&k=="append"&&c.hasChildNodes()&&!b.node.isExpanded()){this.queueExpand(c)}else{if(k!="append"){this.cancelExpand()}}var d=this.dropNotAllowed;if(this.isValidDropPoint(b,k,i,h,g)){if(k){var a=b.ddel;var j;if(k=="above"){d=b.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";j="x-tree-drag-insert-above"}else{if(k=="below"){d=b.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";j="x-tree-drag-insert-below"}else{d="x-tree-drop-ok-append";j="x-tree-drag-append"}}if(this.lastInsertClass!=j){Ext.fly(a).replaceClass(this.lastInsertClass,j);this.lastInsertClass=j}}}return d},onNodeOut:function(d,a,c,b){this.cancelExpand();this.removeDropIndicators(d)},onNodeDrop:function(i,b,h,d){var a=this.getDropPoint(h,i,b);var g=i.node;g.ui.startDrop();if(!this.isValidDropPoint(i,a,b,h,d)){g.ui.endDrop();return false}var c=d.node||(b.getTreeNode?b.getTreeNode(d,g,a,h):null);return this.processDrop(g,d,a,b,h,c)},onContainerDrop:function(a,g,c){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",a,g,c)){var d=this.tree.getRootNode();d.ui.startDrop();var b=c.node||(a.getTreeNode?a.getTreeNode(c,d,"append",g):null);return this.processDrop(d,c,"append",a,g,b)}return false},processDrop:function(j,h,b,a,i,d){var g={tree:this.tree,target:j,data:h,point:b,source:a,rawEvent:i,dropNode:d,cancel:!d,dropStatus:false};var c=this.tree.fireEvent("beforenodedrop",g);if(c===false||g.cancel===true||!g.dropNode){j.ui.endDrop();return g.dropStatus}j=g.target;if(b=="append"&&!j.isExpanded()){j.expand(false,null,function(){this.completeDrop(g)}.createDelegate(this))}else{this.completeDrop(g)}return true},completeDrop:function(h){var d=h.dropNode,e=h.point,c=h.target;if(!Ext.isArray(d)){d=[d]}var g;for(var b=0,a=d.length;b<a;b++){g=d[b];if(e=="above"){c.parentNode.insertBefore(g,c)}else{if(e=="below"){c.parentNode.insertBefore(g,c.nextSibling)}else{c.appendChild(g)}}}g.ui.focus();if(Ext.enableFx&&this.tree.hlDrop){g.ui.highlight()}c.ui.endDrop();this.tree.fireEvent("nodedrop",h)},afterNodeMoved:function(a,c,g,d,b){if(Ext.enableFx&&this.tree.hlDrop){b.ui.focus();b.ui.highlight()}this.tree.fireEvent("nodedrop",this.tree,d,c,a,g)},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.innerCt,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)},afterRepair:function(){if(Ext.enableFx&&this.tree.hlDrop){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")}this.dragging=false}})}Ext.tree.TreeEditor=function(a,c,b){c=c||{};var d=c.events?c:new Ext.form.TextField(c);Ext.tree.TreeEditor.superclass.constructor.call(this,d,b);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({scope:this,beforeclick:this.beforeNodeClick,dblclick:this.onNodeDblClick});this.on({scope:this,complete:this.updateNode,beforestartedit:this.fitToTree,specialkey:this.onSpecialKey});this.on("startedit",this.bindScroll,this,{delay:10})},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,c){this.completeEdit();if(a.attributes.editable!==false){this.editNode=a;if(this.tree.autoScroll){Ext.fly(a.ui.getEl()).scrollIntoView(this.tree.body)}var b=a.text||"";if(!Ext.isGecko&&Ext.isEmpty(a.text)){a.setText("&#160;")}this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[a.ui.textNode,b]);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()}}},onDestroy:function(){clearTimeout(this.autoEditTimer);Ext.tree.TreeEditor.superclass.onDestroy.call(this);var a=this.tree;a.un("beforeclick",this.beforeNodeClick,this);a.un("dblclick",this.onNodeDblClick,this)}});\r
17297 /* SWFObject v2.2 <http://code.google.com/p/swfobject/> \r
17298     is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> \r
17299 */\r
17300 var swfobject=function(){var E="undefined",s="object",T="Shockwave Flash",X="ShockwaveFlash.ShockwaveFlash",r="application/x-shockwave-flash",S="SWFObjectExprInst",y="onreadystatechange",P=window,k=document,u=navigator,U=false,V=[i],p=[],O=[],J=[],m,R,F,C,K=false,a=false,o,H,n=true,N=function(){var ab=typeof k.getElementById!=E&&typeof k.getElementsByTagName!=E&&typeof k.createElement!=E,ai=u.userAgent.toLowerCase(),Z=u.platform.toLowerCase(),af=Z?(/win/).test(Z):/win/.test(ai),ad=Z?(/mac/).test(Z):/mac/.test(ai),ag=/webkit/.test(ai)?parseFloat(ai.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,Y=!+"\v1",ah=[0,0,0],ac=null;if(typeof u.plugins!=E&&typeof u.plugins[T]==s){ac=u.plugins[T].description;if(ac&&!(typeof u.mimeTypes!=E&&u.mimeTypes[r]&&!u.mimeTypes[r].enabledPlugin)){U=true;Y=false;ac=ac.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ah[0]=parseInt(ac.replace(/^(.*)\..*$/,"$1"),10);ah[1]=parseInt(ac.replace(/^.*\.(.*)\s.*$/,"$1"),10);ah[2]=/[a-zA-Z]/.test(ac)?parseInt(ac.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof P.ActiveXObject!=E){try{var ae=new ActiveXObject(X);if(ae){ac=ae.GetVariable("$version");if(ac){Y=true;ac=ac.split(" ")[1].split(",");ah=[parseInt(ac[0],10),parseInt(ac[1],10),parseInt(ac[2],10)]}}}catch(aa){}}}return{w3:ab,pv:ah,wk:ag,ie:Y,win:af,mac:ad}}(),l=function(){if(!N.w3){return}if((typeof k.readyState!=E&&k.readyState=="complete")||(typeof k.readyState==E&&(k.getElementsByTagName("body")[0]||k.body))){g()}if(!K){if(typeof k.addEventListener!=E){k.addEventListener("DOMContentLoaded",g,false)}if(N.ie&&N.win){k.attachEvent(y,function(){if(k.readyState=="complete"){k.detachEvent(y,arguments.callee);g()}});if(P==top){(function(){if(K){return}try{k.documentElement.doScroll("left")}catch(Y){setTimeout(arguments.callee,0);return}g()})()}}if(N.wk){(function(){if(K){return}if(!(/loaded|complete/).test(k.readyState)){setTimeout(arguments.callee,0);return}g()})()}t(g)}}();function g(){if(K){return}try{var aa=k.getElementsByTagName("body")[0].appendChild(D("span"));aa.parentNode.removeChild(aa)}catch(ab){return}K=true;var Y=V.length;for(var Z=0;Z<Y;Z++){V[Z]()}}function L(Y){if(K){Y()}else{V[V.length]=Y}}function t(Z){if(typeof P.addEventListener!=E){P.addEventListener("load",Z,false)}else{if(typeof k.addEventListener!=E){k.addEventListener("load",Z,false)}else{if(typeof P.attachEvent!=E){j(P,"onload",Z)}else{if(typeof P.onload=="function"){var Y=P.onload;P.onload=function(){Y();Z()}}else{P.onload=Z}}}}}function i(){if(U){W()}else{I()}}function W(){var Y=k.getElementsByTagName("body")[0];var ab=D(s);ab.setAttribute("type",r);var aa=Y.appendChild(ab);if(aa){var Z=0;(function(){if(typeof aa.GetVariable!=E){var ac=aa.GetVariable("$version");if(ac){ac=ac.split(" ")[1].split(",");N.pv=[parseInt(ac[0],10),parseInt(ac[1],10),parseInt(ac[2],10)]}}else{if(Z<10){Z++;setTimeout(arguments.callee,10);return}}Y.removeChild(ab);aa=null;I()})()}else{I()}}function I(){var ah=p.length;if(ah>0){for(var ag=0;ag<ah;ag++){var Z=p[ag].id;var ac=p[ag].callbackFn;var ab={success:false,id:Z};if(N.pv[0]>0){var af=c(Z);if(af){if(G(p[ag].swfVersion)&&!(N.wk&&N.wk<312)){x(Z,true);if(ac){ab.success=true;ab.ref=A(Z);ac(ab)}}else{if(p[ag].expressInstall&&B()){var aj={};aj.data=p[ag].expressInstall;aj.width=af.getAttribute("width")||"0";aj.height=af.getAttribute("height")||"0";if(af.getAttribute("class")){aj.styleclass=af.getAttribute("class")}if(af.getAttribute("align")){aj.align=af.getAttribute("align")}var ai={};var Y=af.getElementsByTagName("param");var ad=Y.length;for(var ae=0;ae<ad;ae++){if(Y[ae].getAttribute("name").toLowerCase()!="movie"){ai[Y[ae].getAttribute("name")]=Y[ae].getAttribute("value")}}Q(aj,ai,Z,ac)}else{q(af);if(ac){ac(ab)}}}}}else{x(Z,true);if(ac){var aa=A(Z);if(aa&&typeof aa.SetVariable!=E){ab.success=true;ab.ref=aa}ac(ab)}}}}}function A(ab){var Y=null;var Z=c(ab);if(Z&&Z.nodeName=="OBJECT"){if(typeof Z.SetVariable!=E){Y=Z}else{var aa=Z.getElementsByTagName(s)[0];if(aa){Y=aa}}}return Y}function B(){return !a&&G("6.0.65")&&(N.win||N.mac)&&!(N.wk&&N.wk<312)}function Q(ab,ac,Y,aa){a=true;F=aa||null;C={success:false,id:Y};var af=c(Y);if(af){if(af.nodeName=="OBJECT"){m=h(af);R=null}else{m=af;R=Y}ab.id=S;if(typeof ab.width==E||(!(/%$/).test(ab.width)&&parseInt(ab.width,10)<310)){ab.width="310"}if(typeof ab.height==E||(!(/%$/).test(ab.height)&&parseInt(ab.height,10)<137)){ab.height="137"}k.title=k.title.slice(0,47)+" - Flash Player Installation";var ae=N.ie&&N.win?"ActiveX":"PlugIn",ad="MMredirectURL="+P.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ae+"&MMdoctitle="+k.title;if(typeof ac.flashvars!=E){ac.flashvars+="&"+ad}else{ac.flashvars=ad}if(N.ie&&N.win&&af.readyState!=4){var Z=D("div");Y+="SWFObjectNew";Z.setAttribute("id",Y);af.parentNode.insertBefore(Z,af);af.style.display="none";(function(){if(af.readyState==4){af.parentNode.removeChild(af)}else{setTimeout(arguments.callee,10)}})()}v(ab,ac,Y)}}function q(Z){if(N.ie&&N.win&&Z.readyState!=4){var Y=D("div");Z.parentNode.insertBefore(Y,Z);Y.parentNode.replaceChild(h(Z),Y);Z.style.display="none";(function(){if(Z.readyState==4){Z.parentNode.removeChild(Z)}else{setTimeout(arguments.callee,10)}})()}else{Z.parentNode.replaceChild(h(Z),Z)}}function h(ad){var ab=D("div");if(N.win&&N.ie){ab.innerHTML=ad.innerHTML}else{var Z=ad.getElementsByTagName(s)[0];if(Z){var ae=Z.childNodes;if(ae){var Y=ae.length;for(var aa=0;aa<Y;aa++){if(!(ae[aa].nodeType==1&&ae[aa].nodeName=="PARAM")&&!(ae[aa].nodeType==8)){ab.appendChild(ae[aa].cloneNode(true))}}}}}return ab}function v(aj,ah,Z){var Y,ab=c(Z);if(N.wk&&N.wk<312){return Y}if(ab){if(typeof aj.id==E){aj.id=Z}if(N.ie&&N.win){var ai="";for(var af in aj){if(aj[af]!=Object.prototype[af]){if(af.toLowerCase()=="data"){ah.movie=aj[af]}else{if(af.toLowerCase()=="styleclass"){ai+=' class="'+aj[af]+'"'}else{if(af.toLowerCase()!="classid"){ai+=" "+af+'="'+aj[af]+'"'}}}}}var ag="";for(var ae in ah){if(ah[ae]!=Object.prototype[ae]){ag+='<param name="'+ae+'" value="'+ah[ae]+'" />'}}ab.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ai+">"+ag+"</object>";O[O.length]=aj.id;Y=c(aj.id)}else{var aa=D(s);aa.setAttribute("type",r);for(var ad in aj){if(aj[ad]!=Object.prototype[ad]){if(ad.toLowerCase()=="styleclass"){aa.setAttribute("class",aj[ad])}else{if(ad.toLowerCase()!="classid"){aa.setAttribute(ad,aj[ad])}}}}for(var ac in ah){if(ah[ac]!=Object.prototype[ac]&&ac.toLowerCase()!="movie"){e(aa,ac,ah[ac])}}ab.parentNode.replaceChild(aa,ab);Y=aa}}return Y}function e(aa,Y,Z){var ab=D("param");ab.setAttribute("name",Y);ab.setAttribute("value",Z);aa.appendChild(ab)}function z(Z){var Y=c(Z);if(Y&&Y.nodeName=="OBJECT"){if(N.ie&&N.win){Y.style.display="none";(function(){if(Y.readyState==4){b(Z)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.removeChild(Y)}}}function b(aa){var Z=c(aa);if(Z){for(var Y in Z){if(typeof Z[Y]=="function"){Z[Y]=null}}Z.parentNode.removeChild(Z)}}function c(aa){var Y=null;try{Y=k.getElementById(aa)}catch(Z){}return Y}function D(Y){return k.createElement(Y)}function j(aa,Y,Z){aa.attachEvent(Y,Z);J[J.length]=[aa,Y,Z]}function G(aa){var Z=N.pv,Y=aa.split(".");Y[0]=parseInt(Y[0],10);Y[1]=parseInt(Y[1],10)||0;Y[2]=parseInt(Y[2],10)||0;return(Z[0]>Y[0]||(Z[0]==Y[0]&&Z[1]>Y[1])||(Z[0]==Y[0]&&Z[1]==Y[1]&&Z[2]>=Y[2]))?true:false}function w(ad,Z,ae,ac){if(N.ie&&N.mac){return}var ab=k.getElementsByTagName("head")[0];if(!ab){return}var Y=(ae&&typeof ae=="string")?ae:"screen";if(ac){o=null;H=null}if(!o||H!=Y){var aa=D("style");aa.setAttribute("type","text/css");aa.setAttribute("media",Y);o=ab.appendChild(aa);if(N.ie&&N.win&&typeof k.styleSheets!=E&&k.styleSheets.length>0){o=k.styleSheets[k.styleSheets.length-1]}H=Y}if(N.ie&&N.win){if(o&&typeof o.addRule==s){o.addRule(ad,Z)}}else{if(o&&typeof k.createTextNode!=E){o.appendChild(k.createTextNode(ad+" {"+Z+"}"))}}}function x(aa,Y){if(!n){return}var Z=Y?"visible":"hidden";if(K&&c(aa)){c(aa).style.visibility=Z}else{w("#"+aa,"visibility:"+Z)}}function M(Z){var aa=/[\\\"<>\.;]/;var Y=aa.exec(Z)!=null;return Y&&typeof encodeURIComponent!=E?encodeURIComponent(Z):Z}var d=function(){if(N.ie&&N.win){window.attachEvent("onunload",function(){var ad=J.length;for(var ac=0;ac<ad;ac++){J[ac][0].detachEvent(J[ac][1],J[ac][2])}var aa=O.length;for(var ab=0;ab<aa;ab++){z(O[ab])}for(var Z in N){N[Z]=null}N=null;for(var Y in swfobject){swfobject[Y]=null}swfobject=null;window.detachEvent("onunload",arguments.callee)})}}();return{registerObject:function(ac,Y,ab,aa){if(N.w3&&ac&&Y){var Z={};Z.id=ac;Z.swfVersion=Y;Z.expressInstall=ab;Z.callbackFn=aa;p[p.length]=Z;x(ac,false)}else{if(aa){aa({success:false,id:ac})}}},getObjectById:function(Y){if(N.w3){return A(Y)}},embedSWF:function(ac,ai,af,ah,Z,ab,aa,ae,ag,ad){var Y={success:false,id:ai};if(N.w3&&!(N.wk&&N.wk<312)&&ac&&ai&&af&&ah&&Z){x(ai,false);L(function(){af+="";ah+="";var ak={};if(ag&&typeof ag===s){for(var am in ag){ak[am]=ag[am]}}ak.data=ac;ak.width=af;ak.height=ah;var an={};if(ae&&typeof ae===s){for(var al in ae){an[al]=ae[al]}}if(aa&&typeof aa===s){for(var aj in aa){if(typeof an.flashvars!=E){an.flashvars+="&"+aj+"="+aa[aj]}else{an.flashvars=aj+"="+aa[aj]}}}if(G(Z)){var ao=v(ak,an,ai);if(ak.id==ai){x(ai,true)}Y.success=true;Y.ref=ao}else{if(ab&&B()){ak.data=ab;Q(ak,an,ai,ad);return}else{x(ai,true)}}if(ad){ad(Y)}})}else{if(ad){ad(Y)}}},switchOffAutoHideShow:function(){n=false},ua:N,getFlashPlayerVersion:function(){return{major:N.pv[0],minor:N.pv[1],release:N.pv[2]}},hasFlashPlayerVersion:G,createSWF:function(aa,Z,Y){if(N.w3){return v(aa,Z,Y)}else{return undefined}},showExpressInstall:function(aa,ab,Y,Z){if(N.w3&&B()){Q(aa,ab,Y,Z)}},removeSWF:function(Y){if(N.w3){z(Y)}},createCSS:function(ab,aa,Z,Y){if(N.w3){w(ab,aa,Z,Y)}},addDomLoadEvent:L,addLoadEvent:t,getQueryParamValue:function(ab){var aa=k.location.search||k.location.hash;if(aa){if(/\?/.test(aa)){aa=aa.split("?")[1]}if(ab==null){return M(aa)}var Z=aa.split("&");for(var Y=0;Y<Z.length;Y++){if(Z[Y].substring(0,Z[Y].indexOf("="))==ab){return M(Z[Y].substring((Z[Y].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var Y=c(S);if(Y&&m){Y.parentNode.replaceChild(m,Y);if(R){x(R,true);if(N.ie&&N.win){m.style.display="block"}}if(F){F(C)}}a=false}}}}();Ext.FlashComponent=Ext.extend(Ext.BoxComponent,{flashVersion:"9.0.115",backgroundColor:"#ffffff",wmode:"opaque",flashVars:undefined,flashParams:undefined,url:undefined,swfId:undefined,swfWidth:"100%",swfHeight:"100%",expressInstall:false,initComponent:function(){Ext.FlashComponent.superclass.initComponent.call(this);this.addEvents("initialize")},onRender:function(){Ext.FlashComponent.superclass.onRender.apply(this,arguments);var b=Ext.apply({allowScriptAccess:"always",bgcolor:this.backgroundColor,wmode:this.wmode},this.flashParams),a=Ext.apply({allowedDomain:document.location.hostname,YUISwfId:this.getId(),YUIBridgeCallback:"Ext.FlashEventProxy.onEvent"},this.flashVars);new swfobject.embedSWF(this.url,this.id,this.swfWidth,this.swfHeight,this.flashVersion,this.expressInstall?Ext.FlashComponent.EXPRESS_INSTALL_URL:undefined,a,b);this.swf=Ext.getDom(this.id);this.el=Ext.get(this.swf)},getSwfId:function(){return this.swfId||(this.swfId="extswf"+(++Ext.Component.AUTO_ID))},getId:function(){return this.id||(this.id="extflashcmp"+(++Ext.Component.AUTO_ID))},onFlashEvent:function(a){switch(a.type){case"swfReady":this.initSwf();return;case"log":return}a.component=this;this.fireEvent(a.type.toLowerCase().replace(/event$/,""),a)},initSwf:function(){this.onSwfReady(!!this.isInitialized);this.isInitialized=true;this.fireEvent("initialize",this)},beforeDestroy:function(){if(this.rendered){swfobject.removeSWF(this.swf.id)}Ext.FlashComponent.superclass.beforeDestroy.call(this)},onSwfReady:Ext.emptyFn});Ext.FlashComponent.EXPRESS_INSTALL_URL="http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf";Ext.reg("flash",Ext.FlashComponent);Ext.FlashEventProxy={onEvent:function(c,b){var a=Ext.getCmp(c);if(a){a.onFlashEvent(b)}else{arguments.callee.defer(10,this,[c,b])}}};Ext.chart.Chart=Ext.extend(Ext.FlashComponent,{refreshBuffer:100,chartStyle:{padding:10,animationEnabled:true,font:{name:"Tahoma",color:4473924,size:11},dataTip:{padding:5,border:{color:10075112,size:1},background:{color:14346230,alpha:0.9},font:{name:"Tahoma",color:1393291,size:10,bold:true}}},extraStyle:null,seriesStyles:null,disableCaching:Ext.isIE||Ext.isOpera,disableCacheParam:"_dc",initComponent:function(){Ext.chart.Chart.superclass.initComponent.call(this);if(!this.url){this.url=Ext.chart.Chart.CHART_URL}if(this.disableCaching){this.url=Ext.urlAppend(this.url,String.format("{0}={1}",this.disableCacheParam,new Date().getTime()))}this.addEvents("itemmouseover","itemmouseout","itemclick","itemdoubleclick","itemdragstart","itemdrag","itemdragend","beforerefresh","refresh");this.store=Ext.StoreMgr.lookup(this.store)},setStyle:function(a,b){this.swf.setStyle(a,Ext.encode(b))},setStyles:function(a){this.swf.setStyles(Ext.encode(a))},setSeriesStyles:function(b){this.seriesStyles=b;var a=[];Ext.each(b,function(c){a.push(Ext.encode(c))});this.swf.setSeriesStyles(a)},setCategoryNames:function(a){this.swf.setCategoryNames(a)},setLegendRenderer:function(c,b){var a=this;b=b||a;a.removeFnProxy(a.legendFnName);a.legendFnName=a.createFnProxy(function(d){return c.call(b,d)});a.swf.setLegendLabelFunction(a.legendFnName)},setTipRenderer:function(c,b){var a=this;b=b||a;a.removeFnProxy(a.tipFnName);a.tipFnName=a.createFnProxy(function(h,e,g){var d=a.store.getAt(e);return c.call(b,a,d,e,g)});a.swf.setDataTipFunction(a.tipFnName)},setSeries:function(a){this.series=a;this.refresh()},bindStore:function(a,b){if(!b&&this.store){if(a!==this.store&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("datachanged",this.refresh,this);this.store.un("add",this.delayRefresh,this);this.store.un("remove",this.delayRefresh,this);this.store.un("update",this.delayRefresh,this);this.store.un("clear",this.refresh,this)}}if(a){a=Ext.StoreMgr.lookup(a);a.on({scope:this,datachanged:this.refresh,add:this.delayRefresh,remove:this.delayRefresh,update:this.delayRefresh,clear:this.refresh})}this.store=a;if(a&&!b){this.refresh()}},onSwfReady:function(b){Ext.chart.Chart.superclass.onSwfReady.call(this,b);var a;this.swf.setType(this.type);if(this.chartStyle){this.setStyles(Ext.apply({},this.extraStyle,this.chartStyle))}if(this.categoryNames){this.setCategoryNames(this.categoryNames)}if(this.tipRenderer){a=this.getFunctionRef(this.tipRenderer);this.setTipRenderer(a.fn,a.scope)}if(this.legendRenderer){a=this.getFunctionRef(this.legendRenderer);this.setLegendRenderer(a.fn,a.scope)}if(!b){this.bindStore(this.store,true)}this.refresh.defer(10,this)},delayRefresh:function(){if(!this.refreshTask){this.refreshTask=new Ext.util.DelayedTask(this.refresh,this)}this.refreshTask.delay(this.refreshBuffer)},refresh:function(){if(this.fireEvent("beforerefresh",this)!==false){var m=false;var k=[],c=this.store.data.items;for(var g=0,l=c.length;g<l;g++){k[g]=c[g].data}var e=[];var d=0;var n=null;var h=0;if(this.series){d=this.series.length;for(h=0;h<d;h++){n=this.series[h];var b={};for(var a in n){if(a=="style"&&n.style!==null){b.style=Ext.encode(n.style);m=true}else{b[a]=n[a]}}e.push(b)}}if(d>0){for(h=0;h<d;h++){n=e[h];if(!n.type){n.type=this.type}n.dataProvider=k}}else{e.push({type:this.type,dataProvider:k})}this.swf.setDataProvider(e);if(this.seriesStyles){this.setSeriesStyles(this.seriesStyles)}this.fireEvent("refresh",this)}},createFnProxy:function(a){var b="extFnProxy"+(++Ext.chart.Chart.PROXY_FN_ID);Ext.chart.Chart.proxyFunction[b]=a;return"Ext.chart.Chart.proxyFunction."+b},removeFnProxy:function(a){if(!Ext.isEmpty(a)){a=a.replace("Ext.chart.Chart.proxyFunction.","");delete Ext.chart.Chart.proxyFunction[a]}},getFunctionRef:function(a){if(Ext.isFunction(a)){return{fn:a,scope:this}}else{return{fn:a.fn,scope:a.scope||this}}},onDestroy:function(){if(this.refreshTask&&this.refreshTask.cancel){this.refreshTask.cancel()}Ext.chart.Chart.superclass.onDestroy.call(this);this.bindStore(null);this.removeFnProxy(this.tipFnName);this.removeFnProxy(this.legendFnName)}});Ext.reg("chart",Ext.chart.Chart);Ext.chart.Chart.PROXY_FN_ID=0;Ext.chart.Chart.proxyFunction={};Ext.chart.Chart.CHART_URL="http://yui.yahooapis.com/2.8.2/build/charts/assets/charts.swf";Ext.chart.PieChart=Ext.extend(Ext.chart.Chart,{type:"pie",onSwfReady:function(a){Ext.chart.PieChart.superclass.onSwfReady.call(this,a);this.setDataField(this.dataField);this.setCategoryField(this.categoryField)},setDataField:function(a){this.dataField=a;this.swf.setDataField(a)},setCategoryField:function(a){this.categoryField=a;this.swf.setCategoryField(a)}});Ext.reg("piechart",Ext.chart.PieChart);Ext.chart.CartesianChart=Ext.extend(Ext.chart.Chart,{onSwfReady:function(a){Ext.chart.CartesianChart.superclass.onSwfReady.call(this,a);this.labelFn=[];if(this.xField){this.setXField(this.xField)}if(this.yField){this.setYField(this.yField)}if(this.xAxis){this.setXAxis(this.xAxis)}if(this.xAxes){this.setXAxes(this.xAxes)}if(this.yAxis){this.setYAxis(this.yAxis)}if(this.yAxes){this.setYAxes(this.yAxes)}if(Ext.isDefined(this.constrainViewport)){this.swf.setConstrainViewport(this.constrainViewport)}},setXField:function(a){this.xField=a;this.swf.setHorizontalField(a)},setYField:function(a){this.yField=a;this.swf.setVerticalField(a)},setXAxis:function(a){this.xAxis=this.createAxis("xAxis",a);this.swf.setHorizontalAxis(this.xAxis)},setXAxes:function(c){var b;for(var a=0;a<c.length;a++){b=this.createAxis("xAxis"+a,c[a]);this.swf.setHorizontalAxis(b)}},setYAxis:function(a){this.yAxis=this.createAxis("yAxis",a);this.swf.setVerticalAxis(this.yAxis)},setYAxes:function(c){var b;for(var a=0;a<c.length;a++){b=this.createAxis("yAxis"+a,c[a]);this.swf.setVerticalAxis(b)}},createAxis:function(b,d){var e=Ext.apply({},d),c,a;if(this[b]){a=this[b].labelFunction;this.removeFnProxy(a);this.labelFn.remove(a)}if(e.labelRenderer){c=this.getFunctionRef(e.labelRenderer);e.labelFunction=this.createFnProxy(function(g){return c.fn.call(c.scope,g)});delete e.labelRenderer;this.labelFn.push(e.labelFunction)}if(b.indexOf("xAxis")>-1&&e.position=="left"){e.position="bottom"}return e},onDestroy:function(){Ext.chart.CartesianChart.superclass.onDestroy.call(this);Ext.each(this.labelFn,function(a){this.removeFnProxy(a)},this)}});Ext.reg("cartesianchart",Ext.chart.CartesianChart);Ext.chart.LineChart=Ext.extend(Ext.chart.CartesianChart,{type:"line"});Ext.reg("linechart",Ext.chart.LineChart);Ext.chart.ColumnChart=Ext.extend(Ext.chart.CartesianChart,{type:"column"});Ext.reg("columnchart",Ext.chart.ColumnChart);Ext.chart.StackedColumnChart=Ext.extend(Ext.chart.CartesianChart,{type:"stackcolumn"});Ext.reg("stackedcolumnchart",Ext.chart.StackedColumnChart);Ext.chart.BarChart=Ext.extend(Ext.chart.CartesianChart,{type:"bar"});Ext.reg("barchart",Ext.chart.BarChart);Ext.chart.StackedBarChart=Ext.extend(Ext.chart.CartesianChart,{type:"stackbar"});Ext.reg("stackedbarchart",Ext.chart.StackedBarChart);Ext.chart.Axis=function(a){Ext.apply(this,a)};Ext.chart.Axis.prototype={type:null,orientation:"horizontal",reverse:false,labelFunction:null,hideOverlappingLabels:true,labelSpacing:2};Ext.chart.NumericAxis=Ext.extend(Ext.chart.Axis,{type:"numeric",minimum:NaN,maximum:NaN,majorUnit:NaN,minorUnit:NaN,snapToUnits:true,alwaysShowZero:true,scale:"linear",roundMajorUnit:true,calculateByLabelSize:true,position:"left",adjustMaximumByMajorUnit:true,adjustMinimumByMajorUnit:true});Ext.chart.TimeAxis=Ext.extend(Ext.chart.Axis,{type:"time",minimum:null,maximum:null,majorUnit:NaN,majorTimeUnit:null,minorUnit:NaN,minorTimeUnit:null,snapToUnits:true,stackingEnabled:false,calculateByLabelSize:true});Ext.chart.CategoryAxis=Ext.extend(Ext.chart.Axis,{type:"category",categoryNames:null,calculateCategoryCount:false});Ext.chart.Series=function(a){Ext.apply(this,a)};Ext.chart.Series.prototype={type:null,displayName:null};Ext.chart.CartesianSeries=Ext.extend(Ext.chart.Series,{xField:null,yField:null,showInLegend:true,axis:"primary"});Ext.chart.ColumnSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"column"});Ext.chart.LineSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"line"});Ext.chart.BarSeries=Ext.extend(Ext.chart.CartesianSeries,{type:"bar"});Ext.chart.PieSeries=Ext.extend(Ext.chart.Series,{type:"pie",dataField:null,categoryField:null});Ext.menu.Menu=Ext.extend(Ext.Container,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,ignoreParentClicks:false,enableScrolling:true,maxHeight:null,scrollIncrement:24,showSeparator:true,defaultOffsets:[0,0],plain:false,floating:true,zIndex:15000,hidden:true,layout:"menu",hideMode:"offsets",scrollerHeight:8,autoLayout:true,defaultType:"menuitem",bufferResize:false,initComponent:function(){if(Ext.isArray(this.initialConfig)){Ext.apply(this,{items:this.initialConfig})}this.addEvents("click","mouseover","mouseout","itemclick");Ext.menu.MenuMgr.register(this);if(this.floating){Ext.EventManager.onWindowResize(this.hide,this)}else{if(this.initialConfig.hidden!==false){this.hidden=false}this.internalDefaults={hideOnClick:false}}Ext.menu.Menu.superclass.initComponent.call(this);if(this.autoLayout){var a=this.doLayout.createDelegate(this,[]);this.on({add:a,remove:a})}},getLayoutTarget:function(){return this.ul},onRender:function(b,a){if(!b){b=Ext.getBody()}var c={id:this.getId(),cls:"x-menu "+((this.floating)?"x-menu-floating x-layer ":"")+(this.cls||"")+(this.plain?" x-menu-plain":"")+(this.showSeparator?"":" x-menu-nosep"),style:this.style,cn:[{tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"},{tag:"ul",cls:"x-menu-list"}]};if(this.floating){this.el=new Ext.Layer({shadow:this.shadow,dh:c,constrain:false,parentEl:b,zindex:this.zIndex})}else{this.el=b.createChild(c)}Ext.menu.Menu.superclass.onRender.call(this,b,a);if(!this.keyNav){this.keyNav=new Ext.menu.MenuNav(this)}this.focusEl=this.el.child("a.x-menu-focus");this.ul=this.el.child("ul.x-menu-list");this.mon(this.ul,{scope:this,click:this.onClick,mouseover:this.onMouseOver,mouseout:this.onMouseOut});if(this.enableScrolling){this.mon(this.el,{scope:this,delegate:".x-menu-scroller",click:this.onScroll,mouseover:this.deactivateActive})}},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=this.findTargetItem(b);if(a){if(a.isFormField){this.setActiveItem(a)}else{if(a instanceof Ext.menu.BaseItem){if(a.menu&&this.ignoreParentClicks){a.expandMenu();b.preventDefault()}else{if(a.onClick){a.onClick(b);this.fireEvent("click",this,a,b)}}}}}},setActiveItem:function(a,b){if(a!=this.activeItem){this.deactivateActive();if((this.activeItem=a).isFormField){a.focus()}else{a.activate(b)}}else{if(b){a.expandMenu()}}},deactivateActive:function(){var b=this.activeItem;if(b){if(b.isFormField){if(b.collapse){b.collapse()}}else{b.deactivate()}delete this.activeItem}},tryActivate:function(g,e){var b=this.items;for(var c=g,a=b.length;c>=0&&c<a;c+=e){var d=b.get(c);if(d.isVisible()&&!d.disabled&&(d.canActivate||d.isFormField)){this.setActiveItem(d,false);return d}}return false},onMouseOver:function(b){var a=this.findTargetItem(b);if(a){if(a.canActivate&&!a.disabled){this.setActiveItem(a,true)}}this.over=true;this.fireEvent("mouseover",this,b,a)},onMouseOut:function(b){var a=this.findTargetItem(b);if(a){if(a==this.activeItem&&a.shouldDeactivate&&a.shouldDeactivate(b)){this.activeItem.deactivate();delete this.activeItem}}this.over=false;this.fireEvent("mouseout",this,b,a)},onScroll:function(d,b){if(d){d.stopEvent()}var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");a.scrollTop+=this.scrollIncrement*(c?-1:1);if(c?a.scrollTop<=0:a.scrollTop+this.activeMax>=a.scrollHeight){this.onScrollerOut(null,b)}},onScrollerIn:function(d,b){var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");if(c?a.scrollTop>0:a.scrollTop+this.activeMax<a.scrollHeight){Ext.fly(b).addClass(["x-menu-item-active","x-menu-scroller-active"])}},onScrollerOut:function(b,a){Ext.fly(a).removeClass(["x-menu-item-active","x-menu-scroller-active"])},show:function(b,c,a){if(this.floating){this.parentMenu=a;if(!this.el){this.render();this.doLayout(false,true)}this.showAt(this.el.getAlignToXY(b,c||this.defaultAlign,this.defaultOffsets),a)}else{Ext.menu.Menu.superclass.show.call(this)}},showAt:function(b,a){if(this.fireEvent("beforeshow",this)!==false){this.parentMenu=a;if(!this.el){this.render()}if(this.enableScrolling){this.el.setXY(b);b[1]=this.constrainScroll(b[1]);b=[this.el.adjustForConstraints(b)[0],b[1]]}else{b=this.el.adjustForConstraints(b)}this.el.setXY(b);this.el.show();Ext.menu.Menu.superclass.onShow.call(this);if(Ext.isIE){this.fireEvent("autosize",this);if(!Ext.isIE8){this.el.repaint()}}this.hidden=false;this.focus();this.fireEvent("show",this)}},constrainScroll:function(i){var b,d=this.ul.setHeight("auto").getHeight(),a=i,h,e,g,c;if(this.floating){e=Ext.fly(this.el.dom.parentNode);g=e.getScroll().top;c=e.getViewSize().height;h=i-g;b=this.maxHeight?this.maxHeight:c-h;if(d>c){b=c;a=i-h}else{if(b<d){a=i-(d-b);b=d}}}else{b=this.getHeight()}if(this.maxHeight){b=Math.min(this.maxHeight,b)}if(d>b&&b>0){this.activeMax=b-this.scrollerHeight*2-this.el.getFrameWidth("tb")-Ext.num(this.el.shadowOffset,0);this.ul.setHeight(this.activeMax);this.createScrollers();this.el.select(".x-menu-scroller").setDisplayed("")}else{this.ul.setHeight(d);this.el.select(".x-menu-scroller").setDisplayed("none")}this.ul.dom.scrollTop=0;return a},createScrollers:function(){if(!this.scroller){this.scroller={pos:0,top:this.el.insertFirst({tag:"div",cls:"x-menu-scroller x-menu-scroller-top",html:"&#160;"}),bottom:this.el.createChild({tag:"div",cls:"x-menu-scroller x-menu-scroller-bottom",html:"&#160;"})};this.scroller.top.hover(this.onScrollerIn,this.onScrollerOut,this);this.scroller.topRepeater=new Ext.util.ClickRepeater(this.scroller.top,{listeners:{click:this.onScroll.createDelegate(this,[null,this.scroller.top],false)}});this.scroller.bottom.hover(this.onScrollerIn,this.onScrollerOut,this);this.scroller.bottomRepeater=new Ext.util.ClickRepeater(this.scroller.bottom,{listeners:{click:this.onScroll.createDelegate(this,[null,this.scroller.bottom],false)}})}},onLayout:function(){if(this.isVisible()){if(this.enableScrolling){this.constrainScroll(this.el.getTop())}if(this.floating){this.el.sync()}}},focus:function(){if(!this.hidden){this.doFocus.defer(50,this)}},doFocus:function(){if(!this.hidden){this.focusEl.focus()}},hide:function(a){if(!this.isDestroyed){this.deepHide=a;Ext.menu.Menu.superclass.hide.call(this);delete this.deepHide}},onHide:function(){Ext.menu.Menu.superclass.onHide.call(this);this.deactivateActive();if(this.el&&this.floating){this.el.hide()}var a=this.parentMenu;if(this.deepHide===true&&a){if(a.floating){a.hide(true)}else{a.deactivateActive()}}},lookupComponent:function(a){if(Ext.isString(a)){a=(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.TextItem(a);this.applyDefaults(a)}else{if(Ext.isObject(a)){a=this.getMenuItem(a)}else{if(a.tagName||a.el){a=new Ext.BoxComponent({el:a})}}}return a},applyDefaults:function(b){if(!Ext.isString(b)){b=Ext.menu.Menu.superclass.applyDefaults.call(this,b);var a=this.internalDefaults;if(a){if(b.events){Ext.applyIf(b.initialConfig,a);Ext.apply(b,a)}else{Ext.applyIf(b,a)}}}return b},getMenuItem:function(a){a.ownerCt=this;if(!a.isXType){if(!a.xtype&&Ext.isBoolean(a.checked)){return new Ext.menu.CheckItem(a)}return Ext.create(a,this.defaultType)}return a},addSeparator:function(){return this.add(new Ext.menu.Separator())},addElement:function(a){return this.add(new Ext.menu.BaseItem({el:a}))},addItem:function(a){return this.add(a)},addMenuItem:function(a){return this.add(this.getMenuItem(a))},addText:function(a){return this.add(new Ext.menu.TextItem(a))},onDestroy:function(){Ext.EventManager.removeResizeListener(this.hide,this);var a=this.parentMenu;if(a&&a.activeChild==this){delete a.activeChild}delete this.parentMenu;Ext.menu.Menu.superclass.onDestroy.call(this);Ext.menu.MenuMgr.unregister(this);if(this.keyNav){this.keyNav.disable()}var b=this.scroller;if(b){Ext.destroy(b.topRepeater,b.bottomRepeater,b.top,b.bottom)}Ext.destroy(this.el,this.focusEl,this.ul)}});Ext.reg("menu",Ext.menu.Menu);Ext.menu.MenuNav=Ext.extend(Ext.KeyNav,function(){function a(d,c){if(!c.tryActivate(c.items.indexOf(c.activeItem)-1,-1)){c.tryActivate(c.items.length-1,-1)}}function b(d,c){if(!c.tryActivate(c.items.indexOf(c.activeItem)+1,1)){c.tryActivate(0,1)}}return{constructor:function(c){Ext.menu.MenuNav.superclass.constructor.call(this,c.el);this.scope=this.menu=c},doRelay:function(g,d){var c=g.getKey();if(this.menu.activeItem&&this.menu.activeItem.isFormField&&c!=g.TAB){return false}if(!this.menu.activeItem&&g.isNavKeyPress()&&c!=g.SPACE&&c!=g.RETURN){this.menu.tryActivate(0,1);return false}return d.call(this.scope||this,g,this.menu)},tab:function(d,c){d.stopEvent();if(d.shiftKey){a(d,c)}else{b(d,c)}},up:a,down:b,right:function(d,c){if(c.activeItem){c.activeItem.expandMenu(true)}},left:function(d,c){c.hide();if(c.parentMenu&&c.parentMenu.activeItem){c.parentMenu.activeItem.activate()}},enter:function(d,c){if(c.activeItem){d.stopPropagation();c.activeItem.onClick(d);c.fireEvent("click",this,c.activeItem);return true}}}}());Ext.menu.MenuMgr=function(){var h,e,b,d={},a=false,l=new Date();function n(){h={};e=new Ext.util.MixedCollection();b=Ext.getDoc().addKeyListener(27,j);b.disable()}function j(){if(e&&e.length>0){var o=e.clone();o.each(function(p){p.hide()});return true}return false}function g(o){e.remove(o);if(e.length<1){b.disable();Ext.getDoc().un("mousedown",m);a=false}}function k(o){var p=e.last();l=new Date();e.add(o);if(!a){b.enable();Ext.getDoc().on("mousedown",m);a=true}if(o.parentMenu){o.getEl().setZIndex(parseInt(o.parentMenu.getEl().getStyle("z-index"),10)+3);o.parentMenu.activeChild=o}else{if(p&&!p.isDestroyed&&p.isVisible()){o.getEl().setZIndex(parseInt(p.getEl().getStyle("z-index"),10)+3)}}}function c(o){if(o.activeChild){o.activeChild.hide()}if(o.autoHideTimer){clearTimeout(o.autoHideTimer);delete o.autoHideTimer}}function i(o){var p=o.parentMenu;if(!p&&!o.allowOtherMenus){j()}else{if(p&&p.activeChild){p.activeChild.hide()}}}function m(o){if(l.getElapsed()>50&&e.length>0&&!o.getTarget(".x-menu")){j()}}return{hideAll:function(){return j()},register:function(o){if(!h){n()}h[o.id]=o;o.on({beforehide:c,hide:g,beforeshow:i,show:k})},get:function(o){if(typeof o=="string"){if(!h){return null}return h[o]}else{if(o.events){return o}else{if(typeof o.length=="number"){return new Ext.menu.Menu({items:o})}else{return Ext.create(o,"menu")}}}},unregister:function(o){delete h[o.id];o.un("beforehide",c);o.un("hide",g);o.un("beforeshow",i);o.un("show",k)},registerCheckable:function(o){var p=o.group;if(p){if(!d[p]){d[p]=[]}d[p].push(o)}},unregisterCheckable:function(o){var p=o.group;if(p){d[p].remove(o)}},onCheckChange:function(q,r){if(q.group&&r){var t=d[q.group],p=0,o=t.length,s;for(;p<o;p++){s=t[p];if(s!=q){s.setChecked(false)}}}},getCheckedItem:function(q){var r=d[q];if(r){for(var p=0,o=r.length;p<o;p++){if(r[p].checked){return r[p]}}}return null},setCheckedItem:function(q,s){var r=d[q];if(r){for(var p=0,o=r.length;p<o;p++){if(r[p].id==s){r[p].setChecked(true)}}}return null}}}();Ext.menu.BaseItem=Ext.extend(Ext.Component,{canActivate:false,activeClass:"x-menu-item-active",hideOnClick:true,clickHideDelay:1,ctype:"Ext.menu.BaseItem",actionMode:"container",initComponent:function(){Ext.menu.BaseItem.superclass.initComponent.call(this);this.addEvents("click","activate","deactivate");if(this.handler){this.on("click",this.handler,this.scope)}},onRender:function(b,a){Ext.menu.BaseItem.superclass.onRender.apply(this,arguments);if(this.ownerCt&&this.ownerCt instanceof Ext.menu.Menu){this.parentMenu=this.ownerCt}else{this.container.addClass("x-menu-list-item");this.mon(this.el,{scope:this,click:this.onClick,mouseenter:this.activate,mouseleave:this.deactivate})}},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&&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(b){var a=this.parentMenu;if(this.hideOnClick){if(a.floating){this.clickHideDelayTimer=a.hide.defer(this.clickHideDelay,a,[true])}else{a.deactivateActive()}}},beforeDestroy:function(){clearTimeout(this.clickHideDelayTimer);Ext.menu.BaseItem.superclass.beforeDestroy.call(this)},expandMenu:Ext.emptyFn,hideMenu:Ext.emptyFn});Ext.reg("menubaseitem",Ext.menu.BaseItem);Ext.menu.TextItem=Ext.extend(Ext.menu.BaseItem,{hideOnClick:false,itemCls:"x-menu-text",constructor:function(a){if(typeof a=="string"){a={text:a}}Ext.menu.TextItem.superclass.constructor.call(this,a)},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.reg("menutextitem",Ext.menu.TextItem);Ext.menu.Separator=Ext.extend(Ext.menu.BaseItem,{itemCls:"x-menu-sep",hideOnClick:false,activeClass:"",onRender:function(a){var b=document.createElement("span");b.className=this.itemCls;b.innerHTML="&#160;";this.el=b;a.addClass("x-menu-sep-li");Ext.menu.Separator.superclass.onRender.apply(this,arguments)}});Ext.reg("menuseparator",Ext.menu.Separator);Ext.menu.Item=Ext.extend(Ext.menu.BaseItem,{itemCls:"x-menu-item",canActivate:true,showDelay:200,altText:"",hideDelay:200,ctype:"Ext.menu.Item",initComponent:function(){Ext.menu.Item.superclass.initComponent.call(this);if(this.menu){if(Ext.isArray(this.menu)){this.menu={items:this.menu}}if(Ext.isObject(this.menu)){this.menu.ownerCt=this}this.menu=Ext.menu.MenuMgr.get(this.menu);this.menu.ownerCt=undefined}},onRender:function(d,b){if(!this.itemTpl){this.itemTpl=Ext.menu.Item.prototype.itemTpl=new Ext.XTemplate('<a id="{id}" class="{cls}" hidefocus="true" unselectable="on" href="{href}"','<tpl if="hrefTarget">',' target="{hrefTarget}"',"</tpl>",">",'<img alt="{altText}" src="{icon}" class="x-menu-item-icon {iconCls}"/>','<span class="x-menu-item-text">{text}</span>',"</a>")}var c=this.getTemplateArgs();this.el=b?this.itemTpl.insertBefore(b,c,true):this.itemTpl.append(d,c,true);this.iconEl=this.el.child("img.x-menu-item-icon");this.textEl=this.el.child(".x-menu-item-text");if(!this.href){this.mon(this.el,"click",Ext.emptyFn,null,{preventDefault:true})}Ext.menu.Item.superclass.onRender.call(this,d,b)},getTemplateArgs:function(){return{id:this.id,cls:this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:""),href:this.href||"#",hrefTarget:this.hrefTarget,icon:this.icon||Ext.BLANK_IMAGE_URL,iconCls:this.iconCls||"",text:this.itemText||this.text||"&#160;",altText:this.altText||""}},setText:function(a){this.text=a||"&#160;";if(this.rendered){this.textEl.update(this.text);this.parentMenu.layout.doAutoSize()}},setIconClass:function(a){var b=this.iconCls;this.iconCls=a;if(this.rendered){this.iconEl.replaceClass(b,this.iconCls)}},beforeDestroy:function(){clearTimeout(this.showTimer);clearTimeout(this.hideTimer);if(this.menu){delete this.menu.ownerCt;this.menu.destroy()}Ext.menu.Item.superclass.beforeDestroy.call(this)},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;if(this.menu.over){this.parentMenu.setActiveItem(this,false)}else{this.menu.hide()}}});Ext.reg("menuitem",Ext.menu.Item);Ext.menu.CheckItem=Ext.extend(Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",initComponent:function(){Ext.menu.CheckItem.superclass.initComponent.call(this);this.addEvents("beforecheckchange","checkchange");if(this.checkHandler){this.on("checkchange",this.checkHandler,this.scope)}Ext.menu.MenuMgr.registerCheckable(this)},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){var c=a===true;if(this.checked!=b&&(c||this.fireEvent("beforecheckchange",this,b)!==false)){Ext.menu.MenuMgr.onCheckChange(this,b);if(this.container){this.container[b?"addClass":"removeClass"]("x-menu-item-checked")}this.checked=b;if(!c){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.reg("menucheckitem",Ext.menu.CheckItem);Ext.menu.DateMenu=Ext.extend(Ext.menu.Menu,{enableScrolling:false,hideOnClick:true,pickerId:null,cls:"x-date-menu",initComponent:function(){this.on("beforeshow",this.onBeforeShow,this);if(this.strict=(Ext.isIE7&&Ext.isStrict)){this.on("show",this.onShow,this,{single:true,delay:20})}Ext.apply(this,{plain:true,showSeparator:false,items:this.picker=new Ext.DatePicker(Ext.applyIf({internalRender:this.strict||!Ext.isIE,ctCls:"x-menu-date-item",id:this.pickerId},this.initialConfig))});this.picker.purgeListeners();Ext.menu.DateMenu.superclass.initComponent.call(this);this.relayEvents(this.picker,["select"]);this.on("show",this.picker.focus,this.picker);this.on("select",this.menuHide,this);if(this.handler){this.on("select",this.handler,this.scope||this)}},menuHide:function(){if(this.hideOnClick){this.hide(true)}},onBeforeShow:function(){if(this.picker){this.picker.hideMonthPicker(true)}},onShow:function(){var a=this.picker.getEl();a.setWidth(a.getWidth())}});Ext.reg("datemenu",Ext.menu.DateMenu);Ext.menu.ColorMenu=Ext.extend(Ext.menu.Menu,{enableScrolling:false,hideOnClick:true,cls:"x-color-menu",paletteId:null,initComponent:function(){Ext.apply(this,{plain:true,showSeparator:false,items:this.palette=new Ext.ColorPalette(Ext.applyIf({id:this.paletteId},this.initialConfig))});this.palette.purgeListeners();Ext.menu.ColorMenu.superclass.initComponent.call(this);this.relayEvents(this.palette,["select"]);this.on("select",this.menuHide,this);if(this.handler){this.on("select",this.handler,this.scope||this)}},menuHide:function(){if(this.hideOnClick){this.hide(true)}}});Ext.reg("colormenu",Ext.menu.ColorMenu);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,submitValue:true,isFormField:true,msgDisplay:"",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.name||this.id||""},onRender:function(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.autoEl=b}Ext.form.Field.superclass.onRender.call(this,c,a);if(this.submitValue===false){this.el.dom.removeAttribute("name")}var d=this.el.dom.type;if(d){if(d=="password"){d="text"}this.el.addClass("x-form-"+d)}if(this.readOnly){this.setReadOnly(true)}if(this.tabIndex!==undefined){this.el.dom.setAttribute("tabIndex",this.tabIndex)}this.el.addClass([this.fieldClass,this.cls])},getItemCt:function(){return this.itemCt},initValue:function(){if(this.value!==undefined){this.setValue(this.value)}else{if(!Ext.isEmpty(this.el.dom.value)&&this.el.dom.value!=this.emptyText){this.setValue(this.el.dom.value)}}this.originalValue=this.getValue()},isDirty:function(){if(this.disabled||!this.rendered){return false}return String(this.getValue())!==String(this.originalValue)},setReadOnly:function(a){if(this.rendered){this.el.dom.readOnly=a}this.readOnly=a},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents();this.initValue()},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,a)}},reset:function(){this.setValue(this.originalValue);this.clearInvalid()},initEvents:function(){this.mon(this.el,Ext.EventManager.getKeyEvent(),this.fireKey,this);this.mon(this.el,"focus",this.onFocus,this);this.mon(this.el,"blur",this.onBlur,this,this.inEditor?{buffer:10}:null)},preFocus:Ext.emptyFn,onFocus:function(){this.preFocus();if(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(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);this.postBlur()},postBlur:Ext.emptyFn,isValid:function(a){if(this.disabled){return true}var c=this.preventMark;this.preventMark=a===true;var b=this.validateValue(this.processValue(this.getRawValue()),a);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(b){var a=this.getErrors(b)[0];if(a==undefined){return true}else{this.markInvalid(a);return false}},getErrors:function(){return[]},getActiveError:function(){return this.activeError||""},markInvalid:function(c){if(this.rendered&&!this.preventMark){c=c||this.invalidText;var a=this.getMessageHandler();if(a){a.mark(this,c)}else{if(this.msgTarget){this.el.addClass(this.invalidClass);var b=Ext.getDom(this.msgTarget);if(b){b.innerHTML=c;b.style.display=this.msgDisplay}}}}this.setActiveError(c)},clearInvalid:function(){if(this.rendered&&!this.preventMark){this.el.removeClass(this.invalidClass);var a=this.getMessageHandler();if(a){a.clear(this)}else{if(this.msgTarget){this.el.removeClass(this.invalidClass);var b=Ext.getDom(this.msgTarget);if(b){b.innerHTML="";b.style.display="none"}}}}this.unsetActiveError()},setActiveError:function(b,a){this.activeError=b;if(a!==true){this.fireEvent("invalid",this,b)}},unsetActiveError:function(a){delete this.activeError;if(a!==true){this.fireEvent("valid",this)}},getMessageHandler:function(){return Ext.form.MessageTargets[this.msgTarget]},getErrorCt:function(){return this.el.findParent(".x-form-element",5,true)||this.el.findParent(".x-form-field-wrap",5,true)},alignErrorEl:function(){this.errorEl.setWidth(this.getErrorCt().getWidth(true)-20)},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,"tl-tr",[2,0])},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.rendered?(this.el.dom.value=(Ext.isEmpty(a)?"":a)):""},setValue:function(a){this.value=a;if(this.rendered){this.el.dom.value=(Ext.isEmpty(a)?"":a);this.validate()}return this},append:function(a){this.setValue([this.getValue(),a].join(""))}});Ext.form.MessageTargets={qtip:{mark:function(a,b){a.el.addClass(a.invalidClass);a.el.dom.qtip=b;a.el.dom.qclass="x-form-invalid-tip";if(Ext.QuickTips){Ext.QuickTips.enable()}},clear:function(a){a.el.removeClass(a.invalidClass);a.el.dom.qtip=""}},title:{mark:function(a,b){a.el.addClass(a.invalidClass);a.el.dom.title=b},clear:function(a){a.el.dom.title=""}},under:{mark:function(b,c){b.el.addClass(b.invalidClass);if(!b.errorEl){var a=b.getErrorCt();if(!a){b.el.dom.title=c;return}b.errorEl=a.createChild({cls:"x-form-invalid-msg"});b.on("resize",b.alignErrorEl,b);b.on("destroy",function(){Ext.destroy(this.errorEl)},b)}b.alignErrorEl();b.errorEl.update(c);Ext.form.Field.msgFx[b.msgFx].show(b.errorEl,b)},clear:function(a){a.el.removeClass(a.invalidClass);if(a.errorEl){Ext.form.Field.msgFx[a.msgFx].hide(a.errorEl,a)}else{a.el.dom.title=""}}},side:{mark:function(b,c){b.el.addClass(b.invalidClass);if(!b.errorIcon){var a=b.getErrorCt();if(!a){b.el.dom.title=c;return}b.errorIcon=a.createChild({cls:"x-form-invalid-icon"});if(b.ownerCt){b.ownerCt.on("afterlayout",b.alignErrorIcon,b);b.ownerCt.on("expand",b.alignErrorIcon,b)}b.on("resize",b.alignErrorIcon,b);b.on("destroy",function(){Ext.destroy(this.errorIcon)},b)}b.alignErrorIcon();b.errorIcon.dom.qtip=c;b.errorIcon.dom.qclass="x-form-invalid-tip";b.errorIcon.show()},clear:function(a){a.el.removeClass(a.invalidClass);if(a.errorIcon){a.errorIcon.dom.qtip="";a.errorIcon.hide()}else{a.el.dom.title=""}}}};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","keydown","keyup","keypress")},initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=="keyup"){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.mon(this.el,"keyup",this.filterValidation,this)}else{if(this.validationEvent!==false&&this.validationEvent!="blur"){this.mon(this.el,this.validationEvent,this.validate,this,{buffer:this.validationDelay})}}if(this.selectOnFocus||this.emptyText){this.mon(this.el,"mousedown",this.onMouseDown,this);if(this.emptyText){this.applyEmptyText()}}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+"Mask"]))){this.mon(this.el,"keypress",this.filterKeys,this)}if(this.grow){this.mon(this.el,"keyup",this.onKeyUpBuffered,this,{buffer:50});this.mon(this.el,"click",this.autoSize,this)}if(this.enableKeyEvents){this.mon(this.el,{scope:this,keyup:this.onKeyUp,keydown:this.onKeyDown,keypress:this.onKeyPress})}},onMouseDown:function(a){if(!this.hasFocus){this.mon(this.el,"mouseup",Ext.emptyFn,this,{single:true,preventDefault:true})}},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)}},onDisable:function(){Ext.form.TextField.superclass.onDisable.call(this);if(Ext.isIE){this.el.dom.unselectable="on"}},onEnable:function(){Ext.form.TextField.superclass.onEnable.call(this);if(Ext.isIE){this.el.dom.unselectable=""}},onKeyUpBuffered:function(a){if(this.doAutoSize(a)){this.autoSize()}},doAutoSize:function(a){return !a.isNavKeyPress()},onKeyUp:function(a){this.fireEvent("keyup",this,a)},onKeyDown:function(a){this.fireEvent("keydown",this,a)},onKeyPress:function(a){this.fireEvent("keypress",this,a)},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText()},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1&&!this.hasFocus){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass)}},preFocus:function(){var a=this.el,b;if(this.emptyText){if(a.dom.value==this.emptyText){this.setRawValue("");b=true}a.removeClass(this.emptyClass)}if(this.selectOnFocus||b){a.dom.select()}},postBlur:function(){this.applyEmptyText()},filterKeys:function(b){if(b.ctrlKey){return}var a=b.getKey();if(Ext.isGecko&&(b.isNavKeyPress()||a==b.BACKSPACE||(a==b.DELETE&&b.button==-1))){return}var c=String.fromCharCode(b.getCharCode());if(!Ext.isGecko&&b.isSpecialKey()&&!c){return}if(!this.maskRe.test(c)){b.stopEvent()}},setValue:function(a){if(this.emptyText&&this.el&&!Ext.isEmpty(a)){this.el.removeClass(this.emptyClass)}Ext.form.TextField.superclass.setValue.apply(this,arguments);this.applyEmptyText();this.autoSize();return this},getErrors:function(a){var d=Ext.form.TextField.superclass.getErrors.apply(this,arguments);a=Ext.isDefined(a)?a:this.processValue(this.getRawValue());if(Ext.isFunction(this.validator)){var c=this.validator(a);if(c!==true){d.push(c)}}if(a.length<1||a===this.emptyText){if(this.allowBlank){return d}else{d.push(this.blankText)}}if(!this.allowBlank&&(a.length<1||a===this.emptyText)){d.push(this.blankText)}if(a.length<this.minLength){d.push(String.format(this.minLengthText,this.minLength))}if(a.length>this.maxLength){d.push(String.format(this.maxLengthText,this.maxLength))}if(this.vtype){var b=Ext.form.VTypes;if(!b[this.vtype](a,this)){d.push(this.vtypeText||b[this.vtype+"Text"])}}if(this.regex&&!this.regex.test(a)){d.push(this.regexText)}return d},selectText:function(h,a){var c=this.getRawValue();var e=false;if(c.length>0){h=h===undefined?0:h;a=a===undefined?c.length:a;var g=this.el.dom;if(g.setSelectionRange){g.setSelectionRange(h,a)}else{if(g.createTextRange){var b=g.createTextRange();b.moveStart("character",h);b.moveEnd("character",a-c.length);b.select()}}e=Ext.isGecko||Ext.isOpera}else{e=true}if(e){this.focus()}},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 e=document.createElement("div");e.appendChild(document.createTextNode(b));b=e.innerHTML;Ext.removeNode(e);e=null;b+="&#160;";var a=Math.min(this.growMax,Math.max(this.metrics.getWidth(b)+10,this.growMin));this.el.setWidth(a);this.fireEvent("autosize",this,a)},onDestroy:function(){if(this.validationTask){this.validationTask.cancel();this.validationTask=null}Ext.form.TextField.superclass.onDestroy.call(this)}});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,editable:true,readOnly:false,wrapFocusClass:"x-trigger-wrap-focus",autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,mimicing:false,actionMode:"wrap",defaultTriggerWidth:17,onResize:function(a,c){Ext.form.TriggerField.superclass.onResize.call(this,a,c);var b=this.getTriggerWidth();if(Ext.isNumber(a)){this.el.setWidth(a-b)}this.wrap.setWidth(this.el.getWidth()+b)},getTriggerWidth:function(){var a=this.trigger.getWidth();if(!this.hideTrigger&&!this.readOnly&&a===0){a=this.defaultTriggerWidth}return a},alignErrorIcon:function(){if(this.wrap){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])}},onRender:function(b,a){this.doc=Ext.isIE?Ext.getBody():Ext.getDoc();Ext.form.TriggerField.superclass.onRender.call(this,b,a);this.wrap=this.el.wrap({cls:"x-form-field-wrap x-form-field-trigger-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.triggerClass});this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())}this.resizeEl=this.positionEl=this.wrap},getWidth:function(){return(this.el.getWidth()+this.trigger.getWidth())},updateEditState:function(){if(this.rendered){if(this.readOnly){this.el.dom.readOnly=true;this.el.addClass("x-trigger-noedit");this.mun(this.el,"click",this.onTriggerClick,this);this.trigger.setDisplayed(false)}else{if(!this.editable){this.el.dom.readOnly=true;this.el.addClass("x-trigger-noedit");this.mon(this.el,"click",this.onTriggerClick,this)}else{this.el.dom.readOnly=false;this.el.removeClass("x-trigger-noedit");this.mun(this.el,"click",this.onTriggerClick,this)}this.trigger.setDisplayed(!this.hideTrigger)}this.onResize(this.width||this.wrap.getWidth())}},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateEditState()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateEditState()}},setReadOnly:function(a){if(a!=this.readOnly){this.readOnly=a;this.updateEditState()}},afterRender:function(){Ext.form.TriggerField.superclass.afterRender.call(this);this.updateEditState()},initTrigger:function(){this.mon(this.trigger,"click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver("x-form-trigger-over");this.trigger.addClassOnClick("x-form-trigger-click")},onDestroy:function(){Ext.destroy(this.trigger,this.wrap);if(this.mimicing){this.doc.un("mousedown",this.mimicBlur,this)}delete this.doc;Ext.form.TriggerField.superclass.onDestroy.call(this)},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass(this.wrapFocusClass);this.mimicing=true;this.doc.on("mousedown",this.mimicBlur,this,{delay:10});if(this.monitorTab){this.on("specialkey",this.checkTab,this)}}},checkTab:function(a,b){if(b.getKey()==b.TAB){this.triggerBlur()}},onBlur:Ext.emptyFn,mimicBlur:function(a){if(!this.isDestroyed&&!this.wrap.contains(a.target)&&this.validateBlur(a)){this.triggerBlur()}},triggerBlur:function(){this.mimicing=false;this.doc.un("mousedown",this.mimicBlur,this);if(this.monitorTab&&this.el){this.un("specialkey",this.checkTab,this)}Ext.form.TriggerField.superclass.onBlur.call(this);if(this.wrap){this.wrap.removeClass(this.wrapFocusClass)}},beforeBlur:Ext.emptyFn,validateBlur:function(a){return true},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,alt:"",cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,alt:"",cls:"x-form-trigger "+this.trigger2Class}]}},getTrigger:function(a){return this.triggers[a]},afterRender:function(){Ext.form.TwinTriggerField.superclass.afterRender.call(this);var c=this.triggers,b=0,a=c.length;for(;b<a;++b){if(this["hideTrigger"+(b+1)]){c[b].hide()}}},initTrigger:function(){var a=this.trigger.select(".x-form-trigger",true),b=this;a.each(function(d,g,c){var e="Trigger"+(c+1);d.hide=function(){var h=b.wrap.getWidth();this.dom.style.display="none";b.el.setWidth(h-b.trigger.getWidth());b["hidden"+e]=true};d.show=function(){var h=b.wrap.getWidth();this.dom.style.display="";b.el.setWidth(h-b.trigger.getWidth());b["hidden"+e]=false};this.mon(d,"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},getTriggerWidth:function(){var a=0;Ext.each(this.triggers,function(d,c){var e="Trigger"+(c+1),b=d.getWidth();if(b===0&&!this["hidden"+e]){a+=this.defaultTriggerWidth}else{a+=b}},this);return a},onDestroy:function(){Ext.destroy(this.triggers);Ext.form.TwinTriggerField.superclass.onDestroy.call(this)},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:"&#160;\n&#160;",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(){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)}},doAutoSize:function(a){return !a.isNavKeyPress()||a.getKey()==a.ENTER},filterValidation:function(a){if(!a.isNavKeyPress()||(!this.enterIsSpecial&&a.keyCode==a.ENTER)){this.validationTask.delay(this.validationDelay)}},autoSize:function(){if(!this.grow||!this.textSizeEl){return}var c=this.el,a=Ext.util.Format.htmlEncode(c.dom.value),d=this.textSizeEl,b;Ext.fly(d).setWidth(this.el.getWidth());if(a.length<1){a="&#160;&#160;"}else{a+=this.growAppend;if(Ext.isIE){a=a.replace(/\n/g,"&#160;<br />")}}d.innerHTML=a;b=Math.min(this.growMax,Math.max(d.offsetHeight,this.growMin));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",autoStripChars:false,initEvents:function(){var a=this.baseChars+"";if(this.allowDecimals){a+=this.decimalSeparator}if(this.allowNegative){a+="-"}a=Ext.escapeRe(a);this.maskRe=new RegExp("["+a+"]");if(this.autoStripChars){this.stripCharsRe=new RegExp("[^"+a+"]","gi")}Ext.form.NumberField.superclass.initEvents.call(this)},getErrors:function(b){var c=Ext.form.NumberField.superclass.getErrors.apply(this,arguments);b=Ext.isDefined(b)?b:this.processValue(this.getRawValue());if(b.length<1){return c}b=String(b).replace(this.decimalSeparator,".");if(isNaN(b)){c.push(String.format(this.nanText,b))}var a=this.parseValue(b);if(a<this.minValue){c.push(String.format(this.minText,this.minValue))}if(a>this.maxValue){c.push(String.format(this.maxText,this.maxValue))}return c},getValue:function(){return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))},setValue:function(a){a=Ext.isNumber(a)?a:parseFloat(String(a).replace(this.decimalSeparator,"."));a=this.fixPrecision(a);a=isNaN(a)?"":String(a).replace(".",this.decimalSeparator);return Ext.form.NumberField.superclass.setValue.call(this,a)},setMinValue:function(a){this.minValue=Ext.num(a,Number.NEGATIVE_INFINITY)},setMaxValue:function(a){this.maxValue=Ext.num(a,Number.MAX_VALUE)},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(!Ext.isEmpty(a)){this.setValue(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|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",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",showToday:true,startDay:0,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},initTime:"12",initTimeFormat:"H",safeParse:function(b,c){if(Date.formatContainsHourInfo(c)){return Date.parseDate(b,c)}else{var a=Date.parseDate(b+" "+this.initTime,c+" "+this.initTimeFormat);if(a){return a.clearTime()}}},initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);this.addEvents("select");if(Ext.isString(this.minValue)){this.minValue=this.parseDate(this.minValue)}if(Ext.isString(this.maxValue)){this.maxValue=this.parseDate(this.maxValue)}this.disabledDatesRE=null;this.initDisabledDays()},initEvents:function(){Ext.form.DateField.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{down:function(a){this.onTriggerClick()},scope:this,forceKeyDown:true})},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,c="(?:";Ext.each(b,function(g,e){c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];if(e!=a){c+="|"}},this);this.disabledDatesRE=new RegExp(c+")")}},setDisabledDates:function(a){this.disabledDates=a;this.initDisabledDays();if(this.menu){this.menu.picker.setDisabledDates(this.disabledDatesRE)}},setDisabledDays:function(a){this.disabledDays=a;if(this.menu){this.menu.picker.setDisabledDays(a)}},setMinValue:function(a){this.minValue=(Ext.isString(a)?this.parseDate(a):a);if(this.menu){this.menu.picker.setMinDate(this.minValue)}},setMaxValue:function(a){this.maxValue=(Ext.isString(a)?this.parseDate(a):a);if(this.menu){this.menu.picker.setMaxDate(this.maxValue)}},getErrors:function(e){var h=Ext.form.DateField.superclass.getErrors.apply(this,arguments);e=this.formatDate(e||this.processValue(this.getRawValue()));if(e.length<1){return h}var c=e;e=this.parseDate(e);if(!e){h.push(String.format(this.invalidText,c,this.format));return h}var g=e.getTime();if(this.minValue&&g<this.minValue.clearTime().getTime()){h.push(String.format(this.minText,this.formatDate(this.minValue)))}if(this.maxValue&&g>this.maxValue.clearTime().getTime()){h.push(String.format(this.maxText,this.formatDate(this.maxValue)))}if(this.disabledDays){var a=e.getDay();for(var b=0;b<this.disabledDays.length;b++){if(a===this.disabledDays[b]){h.push(this.disabledDaysText);break}}}var d=this.formatDate(e);if(this.disabledDatesRE&&this.disabledDatesRE.test(d)){h.push(String.format(this.disabledDatesText,d))}return h},validateBlur:function(){return !this.menu||!this.menu.isVisible()},getValue:function(){return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))||""},setValue:function(a){return Ext.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))},parseDate:function(g){if(!g||Ext.isDate(g)){return g}var b=this.safeParse(g,this.format),c=this.altFormats,e=this.altFormatsArray;if(!b&&c){e=e||c.split("|");for(var d=0,a=e.length;d<a&&!b;d++){b=this.safeParse(g,e[d])}}return b},onDestroy:function(){Ext.destroy(this.menu,this.keyNav);Ext.form.DateField.superclass.onDestroy.call(this)},formatDate:function(a){return Ext.isDate(a)?a.dateFormat(this.format):a},onTriggerClick:function(){if(this.disabled){return}if(this.menu==null){this.menu=new Ext.menu.DateMenu({hideOnClick:false,focusOnSelect:false})}this.onFocus();Ext.apply(this.menu.picker,{minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.disabledDatesRE,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.format,showToday:this.showToday,startDay:this.startDay,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))});this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?");this.menuEvents("on")},menuEvents:function(a){this.menu[a]("select",this.onSelect,this);this.menu[a]("hide",this.onMenuHide,this);this.menu[a]("show",this.onFocus,this)},onSelect:function(a,b){this.setValue(b);this.fireEvent("select",this,b);this.menu.hide()},onMenuHide:function(){this.focus(false,60);this.menuEvents("un")},beforeBlur:function(){var a=this.parseDate(this.getRawValue());if(a){this.setValue(a)}}});Ext.reg("datefield",Ext.form.DateField);Ext.form.DisplayField=Ext.extend(Ext.form.Field,{validationEvent:false,validateOnBlur:false,defaultAutoCreate:{tag:"div"},fieldClass:"x-form-display-field",htmlEncode:false,initEvents:Ext.emptyFn,isValid:function(){return true},validate:function(){return true},getRawValue:function(){var a=this.rendered?this.el.dom.innerHTML:Ext.value(this.value,"");if(a===this.emptyText){a=""}if(this.htmlEncode){a=Ext.util.Format.htmlDecode(a)}return a},getValue:function(){return this.getRawValue()},getName:function(){return this.name},setRawValue:function(a){if(this.htmlEncode){a=Ext.util.Format.htmlEncode(a)}return this.rendered?(this.el.dom.innerHTML=(Ext.isEmpty(a)?"":a)):(this.value=a)},setValue:function(a){this.setRawValue(a);return this}});Ext.reg("displayfield",Ext.form.DisplayField);Ext.form.ComboBox=Ext.extend(Ext.form.TriggerField,{defaultAutoCreate:{tag:"input",type:"text",size:"24",autocomplete:"off"},listClass:"",selectedClass:"x-combo-selected",listEmptyText:"",triggerClass:"x-form-arrow-trigger",shadow:"sides",listAlign:"tl-bl?",maxHeight:300,minHeight:90,triggerAction:"query",minChars:4,autoSelect:true,typeAhead:false,queryDelay:500,pageSize:0,selectOnFocus:false,queryParam:"query",loadingText:"Loading...",resizable:false,handleHeight:8,allQuery:"",mode:"remote",minListWidth:70,forceSelection:false,typeAheadDelay:250,lazyInit:true,clearFilterOnReset:true,submitValue:undefined,initComponent:function(){Ext.form.ComboBox.superclass.initComponent.call(this);this.addEvents("expand","collapse","beforeselect","select","beforequery");if(this.transform){var c=Ext.getDom(this.transform);if(!this.hiddenName){this.hiddenName=c.name}if(!this.store){this.mode="local";var j=[],e=c.options;for(var b=0,a=e.length;b<a;b++){var h=e[b],g=(h.hasAttribute?h.hasAttribute("value"):h.getAttributeNode("value").specified)?h.value:h.text;if(h.selected&&Ext.isEmpty(this.value,true)){this.value=g}j.push([g,h.text])}this.store=new Ext.data.ArrayStore({idIndex:0,fields:["value","text"],data:j,autoDestroy:true});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);this.render(this.el.parentNode,c)}Ext.removeNode(c)}else{if(this.store){this.store=Ext.StoreMgr.lookup(this.store);if(this.store.autoCreated){this.displayField=this.valueField="field1";if(!this.store.expandData){this.displayField="field2"}this.mode="local"}}}this.selectedIndex=-1;if(this.mode=="local"){if(!Ext.isDefined(this.initialConfig.queryDelay)){this.queryDelay=10}if(!Ext.isDefined(this.initialConfig.minChars)){this.minChars=0}}},onRender:function(b,a){if(this.hiddenName&&!Ext.isDefined(this.submitValue)){this.submitValue=false}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||Ext.id())},"before",true)}if(Ext.isGecko){this.el.dom.setAttribute("autocomplete","off")}if(!this.lazyInit){this.initList()}else{this.on("focus",this.initList,this,{single:true})}},initValue:function(){Ext.form.ComboBox.superclass.initValue.call(this);if(this.hiddenField){this.hiddenField.value=Ext.value(Ext.isDefined(this.hiddenValue)?this.hiddenValue:this.value,"")}},getParentZIndex:function(){var a;if(this.ownerCt){this.findParentBy(function(b){a=parseInt(b.getPositionEl().getStyle("z-index"),10);return !!a})}return a},getZIndex:function(b){b=b||Ext.getDom(this.getListParent()||Ext.getBody());var a=parseInt(Ext.fly(b).getStyle("z-index"),10);if(!a){a=this.getParentZIndex()}return(a||12000)+5},initList:function(){if(!this.list){var a="x-combo-list",c=Ext.getDom(this.getListParent()||Ext.getBody());this.list=new Ext.Layer({parentEl:c,shadow:this.shadow,cls:[a,this.listClass].join(" "),constrain:false,zindex:this.getZIndex(c)});var b=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);this.list.setSize(b,0);this.list.swallowEvent("mousewheel");this.assetHeight=0;if(this.syncFont!==false){this.list.setStyle("font-size",this.el.getStyle("font-size"))}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.mon(this.innerList,"mouseover",this.onViewOver,this);this.mon(this.innerList,"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='<tpl for="."><div class="'+a+'-item">{'+this.displayField+"}</div></tpl>"}this.view=new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector||"."+a+"-item",emptyText:this.listEmptyText,deferEmptyText:false});this.mon(this.view,{containerclick:this.onViewClick,click:this.onViewClick,scope:this});this.bindStore(this.store,true);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:"se"});this.mon(this.resizer,"resize",function(g,d,e){this.maxHeight=e-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;this.listWidth=d;this.innerList.setWidth(d-this.list.getFrameWidth("lr"));this.restrictHeight()},this);this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")}}},getListParent:function(){return document.body},getStore:function(){return this.store},bindStore:function(a,b){if(this.store&&!b){if(this.store!==a&&this.store.autoDestroy){this.store.destroy()}else{this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("exception",this.collapse,this)}if(!a){this.store=null;if(this.view){this.view.bindStore(null)}if(this.pageTb){this.pageTb.bindStore(null)}}}if(a){if(!b){this.lastQuery=null;if(this.pageTb){this.pageTb.bindStore(a)}}this.store=Ext.StoreMgr.lookup(a);this.store.on({scope:this,beforeload:this.onBeforeLoad,load:this.onLoad,exception:this.collapse});if(this.view){this.view.bindStore(a)}}},reset:function(){if(this.clearFilterOnReset&&this.mode=="local"){this.store.clearFilter()}Ext.form.ComboBox.superclass.reset.call(this)},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()},esc:function(a){this.collapse()},tab:function(a){if(this.forceSelection===true){this.collapse()}else{this.onViewClick(false)}return true},scope:this,doRelay:function(c,b,a){if(a=="down"||this.scope.isExpanded()){var d=Ext.KeyNav.prototype.doRelay.apply(this,arguments);if(!Ext.isIE&&Ext.EventManager.useKeydown){this.scope.fireKey(c)}return d}return true},forceKeyDown:true,defaultEventAction:"stopEvent"});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.enableKeyEvents){this.mon(this.el,"keyup",this.onKeyUp,this)}},onDestroy:function(){if(this.dqTask){this.dqTask.cancel();this.dqTask=null}this.bindStore(null);Ext.destroy(this.resizer,this.view,this.pageTb,this.list);Ext.destroyMembers(this,"hiddenField");Ext.form.ComboBox.superclass.onDestroy.call(this)},fireKey:function(a){if(!this.isExpanded()){Ext.form.ComboBox.superclass.fireKey.call(this,a)}},onResize:function(a,b){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(!isNaN(a)&&this.isVisible()&&this.list){this.doResize(a)}else{this.bufferSize=a}},doResize:function(a){if(!Ext.isDefined(this.listWidth)){var b=Math.max(a,this.minListWidth);this.list.setWidth(b);this.innerList.setWidth(b-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}},onBeforeLoad:function(){if(!this.hasFocus){return}this.innerList.update(this.loadingText?'<div class="loading-indicator">'+this.loadingText+"</div>":"");this.restrictHeight();this.selectedIndex=-1},onLoad:function(){if(!this.hasFocus){return}if(this.store.getCount()>0||this.listEmptyText){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select()}if(this.autoSelect!==false&&!this.selectByValue(this.value,true)){this.select(0,true)}}else{if(this.autoSelect!==false){this.selectNext()}if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay)}}}else{this.collapse()}},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)}}},assertValue:function(){var b=this.getRawValue(),a;if(this.valueField&&Ext.isDefined(this.value)){a=this.findRecord(this.valueField,this.value)}if(!a||a.get(this.displayField)!=b){a=this.findRecord(this.displayField,b)}if(!a&&this.forceSelection){if(b.length>0&&b!=this.emptyText){this.el.dom.value=Ext.value(this.lastSelectionText,"");this.applyEmptyText()}else{this.clearValue()}}else{if(a&&this.valueField){if(this.value==b){return}b=a.get(this.valueField||this.displayField)}this.setValue(b)}},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)}},getName:function(){var a=this.hiddenField;return a&&a.name?a.name:this.hiddenName||Ext.form.ComboBox.superclass.getName.call(this)},getValue:function(){if(this.valueField){return Ext.isDefined(this.value)?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(Ext.isDefined(this.valueNotFoundText)){c=this.valueNotFoundText}}}this.lastSelectionText=c;if(this.hiddenField){this.hiddenField.value=Ext.value(a,"")}Ext.form.ComboBox.superclass.setValue.call(this,c);this.value=a;return this},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],c=this.store,d=c.getAt(a);if(d){this.onSelect(d,a)}else{this.collapse()}if(b!==false){this.el.focus()}},restrictHeight:function(){this.innerList.dom.style.height="";var b=this.innerList.dom,e=this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight,c=Math.max(b.clientHeight,b.offsetHeight,b.scrollHeight),a=this.getPosition()[1]-Ext.getBody().getScroll().top,g=Ext.lib.Dom.getViewHeight()-a-this.getSize().height,d=Math.max(a,g,this.minHeight||0)-this.list.shadowOffset-e-5;c=Math.min(c,d,this.maxHeight);this.innerList.setHeight(c);this.list.beginUpdate();this.list.setHeight(c+e);this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));this.list.endUpdate()},isExpanded:function(){return this.list&&this.list.isVisible()},selectByValue:function(a,c){if(!Ext.isEmpty(a,true)){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(b){var a=b.getKey();if(this.editable!==false&&this.readOnly!==true&&(a==b.BACKSPACE||!b.isSpecialKey())){this.lastKey=a;this.dqTask.delay(this.queryDelay)}Ext.form.ComboBox.superclass.onKeyUp.call(this,b)},validateBlur:function(){return !this.list||!this.list.isVisible()},initQuery:function(){this.doQuery(this.getRawValue())},beforeBlur:function(){this.assertValue()},postBlur:function(){Ext.form.ComboBox.superclass.postBlur.call(this);this.collapse();this.inKeyMode=false},doQuery:function(c,b){c=Ext.isEmpty(c)?"":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={},c=this.store.paramNames;if(this.pageSize){b[c.start]=0;b[c.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(!this.isDestroyed&&!a.within(this.wrap)&&!a.within(this.list)){this.collapse()}},expand:function(){if(this.isExpanded()||!this.hasFocus){return}if(this.title||this.pageSize){this.assetHeight=0;if(this.title){this.assetHeight+=this.header.getHeight()}if(this.pageSize){this.assetHeight+=this.footer.getHeight()}}if(this.bufferSize){this.doResize(this.bufferSize);delete this.bufferSize}this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));this.list.setZIndex(this.getZIndex());this.list.show();if(Ext.isGecko2){this.innerList.setOverflow("auto")}this.mon(Ext.getDoc(),{scope:this,mousewheel:this.collapseIf,mousedown:this.collapseIf});this.fireEvent("expand",this)},onTriggerClick:function(){if(this.readOnly||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,boxLabel:"&#160;",defaultAutoCreate:{tag:"input",type:"checkbox",autocomplete:"off"},actionMode:"wrap",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.fieldLabel){this.el.alignTo(this.wrap,"c-c")}},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.mon(this.el,{scope:this,click:this.onClick,change:this.onClick})},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}if(Ext.isIE&&!Ext.isStrict){this.wrap.repaint()}this.resizeEl=this.positionEl=this.wrap},onDestroy:function(){Ext.destroy(this.wrap);Ext.form.Checkbox.superclass.onDestroy.call(this)},initValue:function(){this.originalValue=this.getValue()},getValue:function(){if(this.rendered){return this.el.dom.checked}return this.checked},onClick:function(){if(this.el.dom.checked!=this.checked){this.setValue(this.el.dom.checked)}},setValue:function(a){var c=this.checked,b=this.inputValue;if(a===false){this.checked=false}else{this.checked=(a===true||a==="true"||a=="1"||(b?a==b:String(a).toLowerCase()=="on"))}if(this.rendered){this.el.dom.checked=this.checked;this.el.dom.defaultChecked=this.checked}if(c!=this.checked){this.fireEvent("check",this,this.checked);if(this.handler){this.handler.call(this.scope||this,this,this.checked)}}return this}});Ext.reg("checkbox",Ext.form.Checkbox);Ext.form.CheckboxGroup=Ext.extend(Ext.form.Field,{columns:"auto",vertical:false,allowBlank:true,blankText:"You must select at least one item in this group",defaultType:"checkbox",groupCls:"x-form-check-group",initComponent:function(){this.addEvents("change");this.on("change",this.validate,this);Ext.form.CheckboxGroup.superclass.initComponent.call(this)},onRender:function(j,g){if(!this.el){var p={autoEl:{id:this.id},cls:this.groupCls,layout:"column",renderTo:j,bufferResize:false};var a={xtype:"container",defaultType:this.defaultType,layout:"form",defaults:{hideLabel:true,anchor:"100%"}};if(this.items[0].items){Ext.apply(p,{layoutConfig:{columns:this.items.length},defaults:this.defaults,items:this.items});for(var e=0,m=this.items.length;e<m;e++){Ext.applyIf(this.items[e],a)}}else{var d,n=[];if(typeof this.columns=="string"){this.columns=this.items.length}if(!Ext.isArray(this.columns)){var k=[];for(var e=0;e<this.columns;e++){k.push((100/this.columns)*0.01)}this.columns=k}d=this.columns.length;for(var e=0;e<d;e++){var b=Ext.apply({items:[]},a);b[this.columns[e]<=1?"columnWidth":"width"]=this.columns[e];if(this.defaults){b.defaults=Ext.apply(b.defaults||{},this.defaults)}n.push(b)}if(this.vertical){var r=Math.ceil(this.items.length/d),o=0;for(var e=0,m=this.items.length;e<m;e++){if(e>0&&e%r==0){o++}if(this.items[e].fieldLabel){this.items[e].hideLabel=false}n[o].items.push(this.items[e])}}else{for(var e=0,m=this.items.length;e<m;e++){var q=e%d;if(this.items[e].fieldLabel){this.items[e].hideLabel=false}n[q].items.push(this.items[e])}}Ext.apply(p,{layoutConfig:{columns:d},items:n})}this.panel=new Ext.Container(p);this.panel.ownerCt=this;this.el=this.panel.getEl();if(this.forId&&this.itemCls){var c=this.el.up(this.itemCls).child("label",true);if(c){c.setAttribute("htmlFor",this.forId)}}var h=this.panel.findBy(function(i){return i.isFormField},this);this.items=new Ext.util.MixedCollection();this.items.addAll(h)}Ext.form.CheckboxGroup.superclass.onRender.call(this,j,g)},initValue:function(){if(this.value){this.setValue.apply(this,this.buffered?this.value:[this.value]);delete this.buffered;delete this.value}},afterRender:function(){Ext.form.CheckboxGroup.superclass.afterRender.call(this);this.eachItem(function(a){a.on("check",this.fireChecked,this);a.inGroup=true})},doLayout:function(){if(this.rendered){this.panel.forceLayout=this.ownerCt.forceLayout;this.panel.doLayout()}},fireChecked:function(){var a=[];this.eachItem(function(b){if(b.checked){a.push(b)}});this.fireEvent("change",this,a)},getErrors:function(){var b=Ext.form.CheckboxGroup.superclass.getErrors.apply(this,arguments);if(!this.allowBlank){var a=true;this.eachItem(function(c){if(c.checked){return(a=false)}});if(a){b.push(this.blankText)}}return b},isDirty:function(){if(this.disabled||!this.rendered){return false}var a=false;this.eachItem(function(b){if(b.isDirty()){a=true;return false}});return a},setReadOnly:function(a){if(this.rendered){this.eachItem(function(b){b.setReadOnly(a)})}this.readOnly=a},onDisable:function(){this.eachItem(function(a){a.disable()})},onEnable:function(){this.eachItem(function(a){a.enable()})},onResize:function(a,b){this.panel.setSize(a,b);this.panel.doLayout()},reset:function(){if(this.originalValue){this.eachItem(function(a){if(a.setValue){a.setValue(false);a.originalValue=a.getValue()}});this.resetOriginal=true;this.setValue(this.originalValue);delete this.resetOriginal}else{this.eachItem(function(a){if(a.reset){a.reset()}})}(function(){this.clearInvalid()}).defer(50,this)},setValue:function(){if(this.rendered){this.onSetValue.apply(this,arguments)}else{this.buffered=true;this.value=arguments}return this},onSetValue:function(d,c){if(arguments.length==1){if(Ext.isArray(d)){Ext.each(d,function(h,e){if(Ext.isObject(h)&&h.setValue){h.setValue(true);if(this.resetOriginal===true){h.originalValue=h.getValue()}}else{var g=this.items.itemAt(e);if(g){g.setValue(h)}}},this)}else{if(Ext.isObject(d)){for(var a in d){var b=this.getBox(a);if(b){b.setValue(d[a])}}}else{this.setValueForItem(d)}}}else{var b=this.getBox(d);if(b){b.setValue(c)}}},beforeDestroy:function(){Ext.destroy(this.panel);if(!this.rendered){Ext.destroy(this.items)}Ext.form.CheckboxGroup.superclass.beforeDestroy.call(this)},setValueForItem:function(a){a=String(a).split(",");this.eachItem(function(b){if(a.indexOf(b.inputValue)>-1){b.setValue(true)}})},getBox:function(b){var a=null;this.eachItem(function(c){if(b==c||c.dataIndex==b||c.id==b||c.getName()==b){a=c;return false}});return a},getValue:function(){var a=[];this.eachItem(function(b){if(b.checked){a.push(b)}});return a},eachItem:function(b,a){if(this.items&&this.items.each){this.items.each(b,a||this)}},getRawValue:Ext.emptyFn,setRawValue:Ext.emptyFn});Ext.reg("checkboxgroup",Ext.form.CheckboxGroup);Ext.form.CompositeField=Ext.extend(Ext.form.Field,{defaultMargins:"0 5 0 0",skipLastItemMargin:true,isComposite:true,combineErrors:true,labelConnector:", ",initComponent:function(){var g=[],b=this.items,e;for(var d=0,c=b.length;d<c;d++){e=b[d];if(!Ext.isEmpty(e.ref)){e.ref="../"+e.ref}g.push(e.fieldLabel);Ext.applyIf(e,this.defaults);if(!(d==c-1&&this.skipLastItemMargin)){Ext.applyIf(e,{margins:this.defaultMargins})}}this.fieldLabel=this.fieldLabel||this.buildLabel(g);this.fieldErrors=new Ext.util.MixedCollection(true,function(h){return h.field});this.fieldErrors.on({scope:this,add:this.updateInvalidMark,remove:this.updateInvalidMark,replace:this.updateInvalidMark});Ext.form.CompositeField.superclass.initComponent.apply(this,arguments);this.innerCt=new Ext.Container({layout:"hbox",items:this.items,cls:"x-form-composite",defaultMargins:"0 3 0 0",ownerCt:this});this.innerCt.ownerCt=undefined;var a=this.innerCt.findBy(function(h){return h.isFormField},this);this.items=new Ext.util.MixedCollection();this.items.addAll(a)},onRender:function(c,a){if(!this.el){var d=this.innerCt;d.render(c);this.el=d.getEl();if(this.combineErrors){this.eachItem(function(e){Ext.apply(e,{markInvalid:this.onFieldMarkInvalid.createDelegate(this,[e],0),clearInvalid:this.onFieldClearInvalid.createDelegate(this,[e],0)})})}var b=this.el.parent().parent().child("label",true);if(b){b.setAttribute("for",this.items.items[0].id)}}Ext.form.CompositeField.superclass.onRender.apply(this,arguments)},onFieldMarkInvalid:function(d,c){var b=d.getName(),a={field:b,errorName:d.fieldLabel||b,error:c};this.fieldErrors.replace(b,a);if(!d.preventMark){d.el.addClass(d.invalidClass)}},onFieldClearInvalid:function(a){this.fieldErrors.removeKey(a.getName());a.el.removeClass(a.invalidClass)},updateInvalidMark:function(){var a=Ext.isIE6&&Ext.isStrict;if(this.fieldErrors.length==0){this.clearInvalid();if(a){this.clearInvalid.defer(50,this)}}else{var b=this.buildCombinedErrorMessage(this.fieldErrors.items);this.sortErrors();this.markInvalid(b);if(a){this.markInvalid(b)}}},validateValue:function(c,a){var b=true;this.eachItem(function(d){if(!d.isValid(a)){b=false}});return b},buildCombinedErrorMessage:function(e){var d=[],b;for(var c=0,a=e.length;c<a;c++){b=e[c];d.push(String.format("{0}: {1}",b.errorName,b.error))}return d.join("<br />")},sortErrors:function(){var a=this.items;this.fieldErrors.sort("ASC",function(g,d){var c=function(b){return function(i){return i.getName()==b}};var h=a.findIndexBy(c(g.field)),e=a.findIndexBy(c(d.field));return h<e?-1:1})},reset:function(){this.eachItem(function(a){a.reset()});(function(){this.clearInvalid()}).defer(50,this)},clearInvalidChildren:function(){this.eachItem(function(a){a.clearInvalid()})},buildLabel:function(a){return Ext.clean(a).join(this.labelConnector)},isDirty:function(){if(this.disabled||!this.rendered){return false}var a=false;this.eachItem(function(b){if(b.isDirty()){a=true;return false}});return a},eachItem:function(b,a){if(this.items&&this.items.each){this.items.each(b,a||this)}},onResize:function(e,c,a,d){var b=this.innerCt;if(this.rendered&&b.rendered){b.setSize(e,c)}Ext.form.CompositeField.superclass.onResize.apply(this,arguments)},doLayout:function(c,b){if(this.rendered){var a=this.innerCt;a.forceLayout=this.ownerCt.forceLayout;a.doLayout(c,b)}},beforeDestroy:function(){Ext.destroy(this.innerCt);Ext.form.CompositeField.superclass.beforeDestroy.call(this)},setReadOnly:function(a){if(a==undefined){a=true}a=!!a;if(this.rendered){this.eachItem(function(b){b.setReadOnly(a)})}this.readOnly=a},onShow:function(){Ext.form.CompositeField.superclass.onShow.call(this);this.doLayout()},onDisable:function(){this.eachItem(function(a){a.disable()})},onEnable:function(){this.eachItem(function(a){a.enable()})}});Ext.reg("compositefield",Ext.form.CompositeField);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},setValue:function(b){var a,d,c;if(typeof b=="boolean"){Ext.form.Radio.superclass.setValue.call(this,b)}else{if(this.rendered){a=this.getCheckEl();c=a.child('input[name="'+this.el.dom.name+'"][value="'+b+'"]',true);if(c){Ext.getCmp(c.id).setValue(true)}}}if(this.rendered&&this.checked){a=a||this.getCheckEl();d=this.getCheckEl().select('input[name="'+this.el.dom.name+'"]');d.each(function(e){if(e.dom.id!=this.id){Ext.getCmp(e.dom.id).setValue(false)}},this)}return this},getCheckEl:function(){if(this.inGroup){return this.el.up(".x-form-radio-group")}return this.el.up("form")||Ext.getBody()}});Ext.reg("radio",Ext.form.Radio);Ext.form.RadioGroup=Ext.extend(Ext.form.CheckboxGroup,{allowBlank:true,blankText:"You must select one item in this group",defaultType:"radio",groupCls:"x-form-radio-group",getValue:function(){var a=null;this.eachItem(function(b){if(b.checked){a=b;return false}});return a},onSetValue:function(c,b){if(arguments.length>1){var a=this.getBox(c);if(a){a.setValue(b);if(a.checked){this.eachItem(function(d){if(d!==a){d.setValue(false)}})}}}else{this.setValueForItem(c)}},setValueForItem:function(a){a=String(a).split(",")[0];this.eachItem(function(b){b.setValue(a==b.inputValue)})},fireChecked:function(){if(!this.checkTask){this.checkTask=new Ext.util.DelayedTask(this.bufferChecked,this)}this.checkTask.delay(10)},bufferChecked:function(){var a=null;this.eachItem(function(b){if(b.checked){a=b;return false}});this.fireEvent("change",this,a)},onDestroy:function(){if(this.checkTask){this.checkTask.cancel();this.checkTask=null}Ext.form.RadioGroup.superclass.onDestroy.call(this)}});Ext.reg("radiogroup",Ext.form.RadioGroup);Ext.form.Hidden=Ext.extend(Ext.form.Field,{inputType:"hidden",shouldLayout:false,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=Ext.extend(Ext.util.Observable,{constructor:function(b,a){Ext.apply(this,a);if(Ext.isString(this.paramOrder)){this.paramOrder=this.paramOrder.split(/[\s,|]/)}this.items=new Ext.util.MixedCollection(false,function(c){return c.getItemId()});this.addEvents("beforeaction","actionfailed","actioncomplete");if(b){this.initEl(b)}Ext.form.BasicForm.superclass.constructor.call(this)},timeout:30,paramOrder:undefined,paramsAsHash:false,waitTitle:"Please Wait...",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(a){if(a!==true){this.items.each(function(b){Ext.destroy(b)});Ext.destroy(this.el)}this.items.clear();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(Ext.isString(b)){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){b=b||{};if(this.standardSubmit){var a=b.clientValidation===false||this.isValid();if(a){var c=this.el.dom;if(this.url&&Ext.isEmpty(c.action)){c.action=this.url}c.submit()}return a}var d=String.format("{0}submit",this.api?"direct":"");this.doAction(d,b);return this},load:function(a){var b=String.format("{0}load",this.api?"direct":"");this.doAction(b,a);return this},updateRecord:function(b){b.beginEdit();var a=b.fields,d,c;a.each(function(e){d=this.findField(e.name);if(d){c=d.getValue();if(Ext.type(c)!==false&&c.getGroupValue){c=c.getGroupValue()}else{if(d.eachItem){c=[];d.eachItem(function(g){c.push(g.getValue())})}}b.set(e.name,c)}},this);b.endEdit();return this},loadRecord:function(a){this.setValues(a.data);return this},beforeAction:function(a){this.items.each(function(c){if(c.isFormField&&c.syncValue){c.syncValue()}});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)}}}},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(c){var b=this.items.get(c);if(!Ext.isObject(b)){var a=function(d){if(d.isFormField){if(d.dataIndex==c||d.id==c||d.getName()==c){b=d;return false}else{if(d.isComposite){return d.items.each(a)}else{if(d instanceof Ext.form.CheckboxGroup&&d.rendered){return d.eachItem(a)}}}}};this.items.each(a)}return b||null},markInvalid:function(h){if(Ext.isArray(h)){for(var c=0,a=h.length;c<a;c++){var b=h[c];var d=this.findField(b.id);if(d){d.markInvalid(b.msg)}}}else{var e,g;for(g in h){if(!Ext.isFunction(h[g])&&(e=this.findField(g))){e.markInvalid(h[g])}}}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 g,h;for(h in c){if(!Ext.isFunction(c[h])&&(g=this.findField(h))){g.setValue(c[h]);if(this.trackResetOnLoad){g.originalValue=g.getValue()}}}}return this},getValues:function(b){var a=Ext.lib.Ajax.serializeForm(this.el.dom);if(b===true){return a}return Ext.urlDecode(a)},getFieldValues:function(a){var d={},e,b,c;this.items.each(function(g){if(!g.disabled&&(a!==true||g.isDirty())){e=g.getName();b=d[e];c=g.getValue();if(Ext.isDefined(b)){if(Ext.isArray(b)){d[e].push(c)}else{d[e]=[b,c]}}else{d[e]=c}}});return d},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},cleanDestroyed:function(){this.items.filterBy(function(a){return !!a.isDestroyed}).each(this.remove,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},callFieldMethod:function(b,a){a=a||[];this.items.each(function(c){if(Ext.isFunction(c[b])){c[b].apply(c,a)}});return this}});Ext.BasicForm=Ext.form.BasicForm;Ext.FormPanel=Ext.extend(Ext.Panel,{minButtonWidth:75,labelAlign:"left",monitorValid:false,monitorPoll:200,layout:"form",initComponent:function(){this.form=this.createForm();Ext.FormPanel.superclass.initComponent.call(this);this.bodyCfg={tag:"form",cls:this.baseCls+"-body",method:this.method||"POST",id:this.formId||Ext.id()};if(this.fileUpload){this.bodyCfg.enctype="multipart/form-data"}this.initItems();this.addEvents("clientvalidation");this.relayEvents(this.form,["beforeaction","actionfailed","actioncomplete"])},createForm:function(){var a=Ext.applyIf({listeners:{}},this.initialConfig);return new Ext.form.BasicForm(null,a)},initFields:function(){var c=this.form;var a=this;var b=function(d){if(a.isField(d)){c.add(d)}else{if(d.findBy&&d!=a){a.applySettings(d);if(d.items&&d.items.each){d.items.each(b,this)}}}};this.items.each(b,this)},applySettings:function(b){var a=b.ownerCt;Ext.applyIf(b,{labelAlign:a.labelAlign,labelWidth:a.labelWidth,itemCls:a.itemCls})},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);this.form.initEl(this.body)},beforeDestroy:function(){this.stopMonitoring();this.form.destroy(true);Ext.FormPanel.superclass.beforeDestroy.call(this)},isField:function(a){return !!a.setValue&&!!a.getValue&&!!a.markInvalid&&!!a.clearInvalid},initEvents:function(){Ext.FormPanel.superclass.initEvents.call(this);this.on({scope:this,add:this.onAddEvent,remove:this.onRemoveEvent});if(this.monitorValid){this.startMonitoring()}},onAdd:function(a){Ext.FormPanel.superclass.onAdd.call(this,a);this.processAdd(a)},onAddEvent:function(a,b){if(a!==this){this.processAdd(b)}},processAdd:function(a){if(this.isField(a)){this.form.add(a)}else{if(a.findBy){this.applySettings(a);this.form.add.apply(this.form,a.findBy(this.isField))}}},onRemove:function(a){Ext.FormPanel.superclass.onRemove.call(this,a);this.processRemove(a)},onRemoveEvent:function(a,b){if(a!==this){this.processRemove(b)}},processRemove:function(a){if(!this.destroying){if(this.isField(a)){this.form.remove(a)}else{if(a.findBy){Ext.each(a.findBy(this.isField),this.form.remove,this.form);this.form.cleanDestroyed()}}}},startMonitoring:function(){if(!this.validTask){this.validTask=new Ext.util.TaskRunner();this.validTask.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this})}},stopMonitoring:function(){if(this.validTask){this.validTask.stopAll();this.validTask=null}},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(){var e=true;this.form.items.each(function(g){if(!g.isValid(true)){e=false;return false}});if(this.fbar){var b=this.fbar.items.items;for(var d=0,a=b.length;d<a;d++){var c=b[d];if(c.formBind===true&&c.disabled===e){c.setDisabled(!e)}}}this.fireEvent("clientvalidation",this,e)}});Ext.reg("form",Ext.FormPanel);Ext.form.FormPanel=Ext.FormPanel;Ext.form.FieldSet=Ext.extend(Ext.Panel,{baseCls:"x-fieldset",layout:"form",animCollapse:false,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=this.baseCls+"-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.mon(this.checkbox,"click",this.onCheckClick,this)}},onCollapse:function(a,b){if(this.checkbox){this.checkbox.dom.checked=false}Ext.form.FieldSet.superclass.onCollapse.call(this,a,b)},onExpand:function(a,b){if(this.checkbox){this.checkbox.dom.checked=true}Ext.form.FieldSet.superclass.onExpand.call(this,a,b)},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",defaultValue:(Ext.isOpera||Ext.isIE6)?"&#160;":"&#8203;",actionMode:"wrap",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");Ext.form.HtmlEditor.superclass.initComponent.call(this)},createFontOptions:function(){var d=[],b=this.fontFamilies,c,g;for(var e=0,a=b.length;e<a;e++){c=b[e];g=c.toLowerCase();d.push('<option value="',g,'" style="font-family:',c,';"',(this.defaultFont==g?' selected="true">':">"),c,"</option>")}return d.join("")},createToolbar:function(e){var c=[];var a=Ext.QuickTips&&Ext.QuickTips.isEnabled();function d(j,h,i){return{itemId:j,cls:"x-btn-icon",iconCls:"x-edit-"+j,enableToggle:h!==false,scope:e,handler:i||e.relayBtnCmd,clickEvent:"mousedown",tooltip:a?e.buttonTips[j]||undefined:undefined,overflowText:e.buttonTips[j].title||undefined,tabIndex:-1}}if(this.enableFont&&!Ext.isSafari2){var g=new Ext.Toolbar.Item({autoEl:{tag:"select",cls:"x-font-select",html:this.createFontOptions()}});c.push(g,"-")}if(this.enableFormat){c.push(d("bold"),d("italic"),d("underline"))}if(this.enableFontSize){c.push("-",d("increasefontsize",false,this.adjustFont),d("decreasefontsize",false,this.adjustFont))}if(this.enableColors){c.push("-",{itemId:"forecolor",cls:"x-btn-icon",iconCls:"x-edit-forecolor",clickEvent:"mousedown",tooltip:a?e.buttonTips.forecolor||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,listeners:{scope:this,select:function(i,h){this.execCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+h:h);this.deferFocus()}},clickEvent:"mousedown"})},{itemId:"backcolor",cls:"x-btn-icon",iconCls:"x-edit-backcolor",clickEvent:"mousedown",tooltip:a?e.buttonTips.backcolor||undefined:undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,listeners:{scope:this,select:function(i,h){if(Ext.isGecko){this.execCmd("useCSS",false);this.execCmd("hilitecolor",h);this.execCmd("useCSS",true);this.deferFocus()}else{this.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE?"#"+h:h);this.deferFocus()}}},clickEvent:"mousedown"})})}if(this.enableAlignments){c.push("-",d("justifyleft"),d("justifycenter"),d("justifyright"))}if(!Ext.isSafari2){if(this.enableLinks){c.push("-",d("createlink",false,this.createLink))}if(this.enableLists){c.push("-",d("insertorderedlist"),d("insertunorderedlist"))}if(this.enableSourceEdit){c.push("-",d("sourceedit",true,function(h){this.toggleSourceEdit(!this.sourceEditMode)}))}}var b=new Ext.Toolbar({renderTo:this.wrap.dom.firstChild,items:c});if(g){this.fontSelect=g.el;this.mon(this.fontSelect,"change",function(){var h=this.fontSelect.dom.value;this.relayCmd("fontname",h);this.deferFocus()},this)}this.mon(b.el,"click",function(h){h.preventDefault()});this.tb=b;this.tb.doLayout()},onDisable:function(){this.wrap.mask();Ext.form.HtmlEditor.superclass.onDisable.call(this)},onEnable:function(){this.wrap.unmask();Ext.form.HtmlEditor.superclass.onEnable.call(this)},setReadOnly:function(b){Ext.form.HtmlEditor.superclass.setReadOnly.call(this,b);if(this.initialized){if(Ext.isIE){this.getEditorBody().contentEditable=!b}else{this.setDesignMode(!b)}var a=this.getEditorBody();if(a){a.style.cursor=this.readOnly?"default":"text"}this.disableItems(b)}},getDocMarkup:function(){var a=Ext.fly(this.iframe).getHeight()-this.iframePad*2;return String.format('<html><head><style type="text/css">body{border: 0; margin: 0; padding: {0}px; height: {1}px; cursor: text}</style></head><body></body></html>',this.iframePad,a)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return Ext.isIE?this.getWin().document:(this.iframe.contentDocument||this.getWin().document)},getWin:function(){return Ext.isIE?this.iframe.contentWindow:window.frames[this.iframe.name]},onRender:function(b,a){Ext.form.HtmlEditor.superclass.onRender.call(this,b,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.disableItems(true);this.tb.doLayout();this.createIFrame();if(!this.width){var c=this.el.getSize();this.setSize(c.width,this.height||c.height)}this.resizeEl=this.positionEl=this.wrap},createIFrame:function(){var a=document.createElement("iframe");a.name=Ext.id();a.frameBorder="0";a.style.overflow="auto";a.src=Ext.SSL_SECURE_URL;this.wrap.dom.appendChild(a);this.iframe=a;this.monitorTask=Ext.TaskMgr.start({run:this.checkDesignMode,scope:this,interval:100})},initFrame:function(){Ext.TaskMgr.stop(this.monitorTask);var b=this.getDoc();this.win=this.getWin();b.open();b.write(this.getDocMarkup());b.close();var a={run:function(){var c=this.getDoc();if(c.body||c.readyState=="complete"){Ext.TaskMgr.stop(a);this.setDesignMode(true);this.initEditor.defer(10,this)}},interval:10,duration:10000,scope:this};Ext.TaskMgr.start(a)},checkDesignMode:function(){if(this.wrap&&this.wrap.dom.offsetWidth){var a=this.getDoc();if(!a){return}if(!a.editorInitialized||this.getDesignMode()!="on"){this.initFrame()}}},setDesignMode:function(b){var a=this.getDoc();if(a){if(this.readOnly){b=false}a.designMode=(/on|true/i).test(String(b).toLowerCase())?"on":"off"}},getDesignMode:function(){var a=this.getDoc();if(!a){return""}return String(a.designMode).toLowerCase()},disableItems:function(a){if(this.fontSelect){this.fontSelect.dom.disabled=a}this.tb.items.each(function(b){if(b.getItemId()!="sourceedit"){b.setDisabled(a)}})},onResize:function(b,c){Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(Ext.isNumber(b)){var e=b-this.wrap.getFrameWidth("lr");this.el.setWidth(e);this.tb.setWidth(e);this.iframe.style.width=Math.max(e,0)+"px"}if(Ext.isNumber(c)){var a=c-this.wrap.getFrameWidth("tb")-this.tb.el.getHeight();this.el.setHeight(a);this.iframe.style.height=Math.max(a,0)+"px";var d=this.getEditorBody();if(d){d.style.height=Math.max((a-(this.iframePad*2)),0)+"px"}}}},toggleSourceEdit:function(b){var d,a;if(b===undefined){b=!this.sourceEditMode}this.sourceEditMode=b===true;var c=this.tb.getComponent("sourceedit");if(c.pressed!==this.sourceEditMode){c.toggle(this.sourceEditMode);if(!c.xtbHidden){return}}if(this.sourceEditMode){this.previousSize=this.getSize();d=Ext.get(this.iframe).getHeight();this.disableItems(true);this.syncValue();this.iframe.className="x-hidden";this.el.removeClass("x-hidden");this.el.dom.removeAttribute("tabIndex");this.el.focus();this.el.dom.style.height=d+"px"}else{a=parseInt(this.el.dom.style.height,10);if(this.initialized){this.disableItems(this.readOnly)}this.pushValue();this.iframe.className="";this.el.addClass("x-hidden");this.el.dom.setAttribute("tabIndex",-1);this.deferFocus();this.setSize(this.previousSize);delete this.previousSize;this.iframe.style.height=a+"px"}this.fireEvent("editmodechange",this,this.sourceEditMode)},createLink:function(){var a=prompt(this.createLinkText,this.defaultLinkValue);if(a&&a!="http://"){this.relayCmd("createlink",a)}},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();return this},cleanHtml:function(a){a=String(a);if(Ext.isWebKit){a=a.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")}if(a.charCodeAt(0)==this.defaultValue.replace(/\D/g,"")){a=a.substring(1)}return a},syncValue:function(){if(this.initialized){var d=this.getEditorBody();var c=d.innerHTML;if(Ext.isWebKit){var b=d.getAttribute("style");var a=b.match(/text-align:(.*?);/i);if(a&&a[1]){c='<div style="'+a[0]+'">'+c+"</div>"}}c=this.cleanHtml(c);if(this.fireEvent("beforesync",this,c)!==false){this.el.dom.value=c;this.fireEvent("sync",this,c)}}},getValue:function(){this[this.sourceEditMode?"pushValue":"syncValue"]();return Ext.form.HtmlEditor.superclass.getValue.call(this)},pushValue:function(){if(this.initialized){var a=this.el.dom.value;if(!this.activated&&a.length<1){a=this.defaultValue}if(this.fireEvent("beforepush",this,a)!==false){this.getEditorBody().innerHTML=a;if(Ext.isGecko){this.setDesignMode(false);this.setDesignMode(true)}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(){try{var c=this.getEditorBody(),a=this.el.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),g,b;a["background-attachment"]="fixed";c.bgProperties="fixed";Ext.DomHelper.applyStyles(c,a);g=this.getDoc();if(g){try{Ext.EventManager.removeAll(g)}catch(d){}}b=this.onEditorEvent.createDelegate(this);Ext.EventManager.on(g,{mousedown:b,dblclick:b,click:b,keyup:b,buffer:100});if(Ext.isGecko){Ext.EventManager.on(g,"keypress",this.applyCommand,this)}if(Ext.isIE||Ext.isWebKit||Ext.isOpera){Ext.EventManager.on(g,"keydown",this.fixKeys,this)}g.editorInitialized=true;this.initialized=true;this.pushValue();this.setReadOnly(this.readOnly);this.fireEvent("initialize",this)}catch(d){}},beforeDestroy:function(){if(this.monitorTask){Ext.TaskMgr.stop(this.monitorTask)}if(this.rendered){Ext.destroy(this.tb);var b=this.getDoc();if(b){try{Ext.EventManager.removeAll(b);for(var c in b){delete b[c]}}catch(a){}}if(this.wrap){this.wrap.dom.innerHTML="";this.wrap.remove()}}Ext.form.HtmlEditor.superclass.beforeDestroy.call(this)},onFirstFocus:function(){this.activated=true;this.disableItems(this.readOnly);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 d=b.getItemId()=="increasefontsize"?1:-1,c=this.getDoc(),a=parseInt(c.queryCommandValue("FontSize")||2,10);if((Ext.isSafari&&!Ext.isSafari2)||Ext.isChrome||Ext.isAir){if(a<=10){a=1+d}else{if(a<=13){a=2+d}else{if(a<=16){a=3+d}else{if(a<=18){a=4+d}else{if(a<=24){a=5+d}else{a=6+d}}}}}a=a.constrain(1,6)}else{if(Ext.isSafari){d*=2}a=Math.max(1,a+d)+(Ext.isSafari?"px":0)}this.execCmd("FontSize",a)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){if(this.readOnly){return}if(!this.activated){this.onFirstFocus();return}var b=this.tb.items.map,c=this.getDoc();if(this.enableFont&&!Ext.isSafari2){var a=(c.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.isSafari2&&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.getItemId())},relayCmd:function(b,a){(function(){this.focus();this.execCmd(b,a);this.updateToolbar()}).defer(10,this)},execCmd:function(b,a){var c=this.getDoc();c.execCommand(b,false,a===undefined?null:a);this.syncValue()},applyCommand:function(b){if(b.ctrlKey){var d=b.getCharCode(),a;if(d>0){d=String.fromCharCode(d);switch(d){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(c){if(!this.activated){return}if(Ext.isIE){this.win.focus();var b=this.getDoc(),a=b.selection.createRange();if(a){a.pasteHTML(c);this.syncValue();this.deferFocus()}}else{this.win.focus();this.execCmd("InsertHTML",c);this.deferFocus()}},fixKeys:function(){if(Ext.isIE){return function(g){var a=g.getKey(),d=this.getDoc(),b;if(a==g.TAB){g.stopEvent();b=d.selection.createRange();if(b){b.collapse(true);b.pasteHTML("&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}else{if(a==g.ENTER){b=d.selection.createRange();if(b){var c=b.parentElement();if(!c||c.tagName.toLowerCase()!="li"){g.stopEvent();b.pasteHTML("<br />");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","&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}}else{if(Ext.isWebKit){return function(b){var a=b.getKey();if(a==b.TAB){b.stopEvent();this.execCmd("InsertText","\t");this.deferFocus()}else{if(a==b.ENTER){b.stopEvent();this.execCmd("InsertHtml","<br /><br />");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:undefined,maxValue:undefined,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|gi a|hi a|giA|hiA|gi A|hi A",increment:15,mode:"local",triggerAction:"all",typeAhead:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",initComponent:function(){if(Ext.isDefined(this.minValue)){this.setMinValue(this.minValue,true)}if(Ext.isDefined(this.maxValue)){this.setMaxValue(this.maxValue,true)}if(!this.store){this.generateStore(true)}Ext.form.TimeField.superclass.initComponent.call(this)},setMinValue:function(b,a){this.setLimit(b,true,a);return this},setMaxValue:function(b,a){this.setLimit(b,false,a);return this},generateStore:function(b){var c=this.minValue||new Date(this.initDate).clearTime(),a=this.maxValue||new Date(this.initDate).clearTime().add("mi",(24*60)-1),d=[];while(c<=a){d.push(c.dateFormat(this.format));c=c.add("mi",this.increment)}this.bindStore(d,b)},setLimit:function(b,g,a){var e;if(Ext.isString(b)){e=this.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){var c=new Date(this.initDate).clearTime();c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());this[g?"minValue":"maxValue"]=c;if(!a){this.generateStore()}}},getValue:function(){var a=Ext.form.TimeField.superclass.getValue.call(this);return this.formatDate(this.parseDate(a))||""},setValue:function(a){return Ext.form.TimeField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))},validateValue:Ext.form.DateField.prototype.validateValue,formatDate:Ext.form.DateField.prototype.formatDate,parseDate:function(h){if(!h||Ext.isDate(h)){return h}var j=this.initDate+" ",g=this.initDateFormat+" ",b=Date.parseDate(j+h,g+this.format),c=this.altFormats;if(!b&&c){if(!this.altFormatsArray){this.altFormatsArray=c.split("|")}for(var e=0,d=this.altFormatsArray,a=d.length;e<a&&!b;e++){b=Date.parseDate(j+h,g+d[e])}}return b}});Ext.reg("timefield",Ext.form.TimeField);Ext.form.SliderField=Ext.extend(Ext.form.Field,{useTips:true,tipText:null,actionMode:"wrap",initComponent:function(){var b=Ext.copyTo({id:this.id+"-slider"},this.initialConfig,["vertical","minValue","maxValue","decimalPrecision","keyIncrement","increment","clickToChange","animate"]);if(this.useTips){var a=this.tipText?{getText:this.tipText}:{};b.plugins=[new Ext.slider.Tip(a)]}this.slider=new Ext.Slider(b);Ext.form.SliderField.superclass.initComponent.call(this)},onRender:function(b,a){this.autoCreate={id:this.id,name:this.name,type:"hidden",tag:"input"};Ext.form.SliderField.superclass.onRender.call(this,b,a);this.wrap=this.el.wrap({cls:"x-form-field-wrap"});this.resizeEl=this.positionEl=this.wrap;this.slider.render(this.wrap)},onResize:function(b,c,d,a){Ext.form.SliderField.superclass.onResize.call(this,b,c,d,a);this.slider.setSize(b,c)},initEvents:function(){Ext.form.SliderField.superclass.initEvents.call(this);this.slider.on("change",this.onChange,this)},onChange:function(b,a){this.setValue(a,undefined,true)},onEnable:function(){Ext.form.SliderField.superclass.onEnable.call(this);this.slider.enable()},onDisable:function(){Ext.form.SliderField.superclass.onDisable.call(this);this.slider.disable()},beforeDestroy:function(){Ext.destroy(this.slider);Ext.form.SliderField.superclass.beforeDestroy.call(this)},alignErrorIcon:function(){this.errorIcon.alignTo(this.slider.el,"tl-tr",[2,0])},setMinValue:function(a){this.slider.setMinValue(a);return this},setMaxValue:function(a){this.slider.setMaxValue(a);return this},setValue:function(c,b,a){if(!a){this.slider.setValue(c,b)}return Ext.form.SliderField.superclass.setValue.call(this,this.slider.getValue())},getValue:function(){return this.slider.getValue()}});Ext.reg("sliderfield",Ext.form.SliderField);Ext.form.Label=Ext.extend(Ext.BoxComponent,{onRender:function(b,a){if(!this.el){this.el=document.createElement("label");this.el.id=this.getId();this.el.innerHTML=this.text?Ext.util.Format.htmlEncode(this.text):(this.html||"");if(this.forId){this.el.setAttribute("for",this.forId)}}Ext.form.Label.superclass.onRender.call(this,b,a)},setText:function(a,b){var c=b===false;this[!c?"text":"html"]=a;delete this[c?"text":"html"];if(this.rendered){this.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(a):a}return this}});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&&!a.responseXML){return true}this.result=this.handleResponse(a);return this.result},decodeResponse:function(a){try{return Ext.decode(a.responseText)}catch(b){return false}},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=Ext.urlAppend(a,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 e=this.options,g=this.getMethod(),d=g=="GET";if(e.clientValidation===false||this.form.isValid()){if(e.submitEmptyText===false){var a=this.form.items,c=[],b=function(h){if(h.el.getValue()==h.emptyText){c.push(h);h.el.dom.value=""}if(h.isComposite&&h.rendered){h.items.each(b)}};a.each(b)}Ext.Ajax.request(Ext.apply(this.createCallback(e),{form:this.form.el.dom,url:this.getUrl(d),method:g,headers:e.headers,params:!d?this.getParams():null,isUpload:this.form.fileUpload}));if(e.submitEmptyText===false){Ext.each(c,function(h){if(h.applyEmptyText){h.applyEmptyText()}})}}else{if(e.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 g=[];if(b.records){for(var d=0,a=b.records.length;d<a;d++){var e=b.records[d];g[d]=e.data}}if(g.length<1){g=null}return{success:b.success,errors:g}}return this.decodeResponse(c)}});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),headers:this.options.headers,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 this.decodeResponse(b)}});Ext.form.Action.DirectLoad=Ext.extend(Ext.form.Action.Load,{constructor:function(b,a){Ext.form.Action.DirectLoad.superclass.constructor.call(this,b,a)},type:"directload",run:function(){var a=this.getParams();a.push(this.success,this);this.form.api.load.apply(window,a)},getParams:function(){var c=[],h={};var e=this.form.baseParams;var g=this.options.params;Ext.apply(h,g,e);var b=this.form.paramOrder;if(b){for(var d=0,a=b.length;d<a;d++){c.push(h[b[d]])}}else{if(this.form.paramsAsHash){c.push(h)}}return c},processResponse:function(a){this.result=a;return a},success:function(a,b){if(b.type==Ext.Direct.exceptions.SERVER){a={}}Ext.form.Action.DirectLoad.superclass.success.call(this,a)}});Ext.form.Action.DirectSubmit=Ext.extend(Ext.form.Action.Submit,{constructor:function(b,a){Ext.form.Action.DirectSubmit.superclass.constructor.call(this,b,a)},type:"directsubmit",run:function(){var a=this.options;if(a.clientValidation===false||this.form.isValid()){this.success.params=this.getParams();this.form.api.submit(this.form.el.dom,this.success,this)}else{if(a.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false)}}},getParams:function(){var c={};var a=this.form.baseParams;var b=this.options.params;Ext.apply(c,b,a);return c},processResponse:function(a){this.result=a;return a},success:function(a,b){if(b.type==Ext.Direct.exceptions.SERVER){a={}}Ext.form.Action.DirectSubmit.superclass.success.call(this,a)}});Ext.form.Action.ACTION_TYPES={load:Ext.form.Action.Load,submit:Ext.form.Action.Submit,directload:Ext.form.Action.DirectLoad,directsubmit:Ext.form.Action.DirectSubmit};Ext.form.VTypes=function(){var c=/^[a-zA-Z_]+$/,d=/^[a-zA-Z0-9_]+$/,b=/^(\w+)([\-+.\'][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,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@example.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.example.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,{autoExpandColumn:false,autoExpandMax:1000,autoExpandMin:50,columnLines:false,ddText:"{0} selected row{1}",deferRowRender:true,enableColumnHide:true,enableColumnMove:true,enableDragDrop:false,enableHdMenu:true,loadMask:false,minColumnWidth:25,stripeRows:false,trackMouseOver:true,stateEvents:["columnmove","columnresize","sortchange","groupchange"],view:null,bubbleEvents:[],rendered:false,viewReady:false,initComponent:function(){Ext.grid.GridPanel.superclass.initComponent.call(this);if(this.columnLines){this.cls=(this.cls||"")+" x-grid-with-col-lines"}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","groupmousedown","rowbodymousedown","containermousedown","cellclick","celldblclick","rowclick","rowdblclick","headerclick","headerdblclick","groupclick","groupdblclick","containerclick","containerdblclick","rowbodyclick","rowbodydblclick","rowcontextmenu","cellcontextmenu","headercontextmenu","groupcontextmenu","containercontextmenu","rowbodycontextmenu","bodyscroll","columnresize","columnmove","sortchange","groupchange","reconfigure","viewready")},onRender:function(d,a){Ext.grid.GridPanel.superclass.onRender.apply(this,arguments);var e=this.getGridEl();this.el.addClass("x-grid-panel");this.mon(e,{scope:this,mousedown:this.onMouseDown,click:this.onClick,dblclick:this.onDblClick,contextmenu:this.onContextMenu});this.relayEvents(e,["mousedown","mouseup","mouseover","mouseout","keypress","keydown"]);var b=this.getView();b.init(this);b.render();this.getSelectionModel().init(this)},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.mon(this.colModel,"hiddenchange",this.saveState,this,{delay:100})},applyState:function(a){var k=this.colModel,g=a.columns,j=this.store,m,h,l;if(g){for(var d=0,e=g.length;d<e;d++){m=g[d];h=k.getColumnById(m.id);if(h){l=k.getIndexById(m.id);k.setState(l,{hidden:m.hidden,width:m.width,sortable:m.sortable});if(l!=d){k.moveColumn(l,d)}}}}if(j){m=a.sort;if(m){j[j.remoteSort?"setDefaultSort":"sort"](m.field,m.direction)}m=a.group;if(j.groupBy){if(m){j.groupBy(m)}else{j.clearGrouping()}}}var b=Ext.apply({},a);delete b.columns;delete b.sort;Ext.grid.GridPanel.superclass.applyState.call(this,b)},getState:function(){var g={columns:[]},b=this.store,e,a;for(var d=0,h;(h=this.colModel.config[d]);d++){g.columns[d]={id:h.id,width:h.width};if(h.hidden){g.columns[d].hidden=true}if(h.sortable){g.columns[d].sortable=true}}if(b){e=b.getSortState();if(e){g.sort=e}if(b.getGroupState){a=b.getGroupState();if(a){g.group=a}}}return g},afterRender:function(){Ext.grid.GridPanel.superclass.afterRender.call(this);var a=this.view;this.on("bodyresize",a.layout,a);a.layout(true);if(this.deferRowRender){if(!this.deferRowRenderTask){this.deferRowRenderTask=new Ext.util.DelayedTask(a.afterRender,this.view)}this.deferRowRenderTask.delay(10)}else{a.afterRender()}this.viewReady=true},reconfigure:function(a,b){var c=this.rendered;if(c){if(this.loadMask){this.loadMask.destroy();this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({},{store:a},this.initialConfig.loadMask))}}if(this.view){this.view.initData(a,b)}this.store=a;this.colModel=b;if(c){this.view.refresh(true)}this.fireEvent("reconfigure",this,a,b)},onDestroy:function(){if(this.deferRowRenderTask&&this.deferRowRenderTask.cancel){this.deferRowRenderTask.cancel()}if(this.rendered){Ext.destroy(this.view,this.loadMask)}else{if(this.store&&this.store.autoDestroy){this.store.destroy()}}Ext.destroy(this.colModel,this.selModel);this.store=this.selModel=this.colModel=this.view=this.loadMask=null;Ext.grid.GridPanel.superclass.onDestroy.call(this)},processEvent:function(a,b){this.view.processEvent(a,b)},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(k,c,b,e,j){var i=this.colModel,g=i.getColumnCount(),a=this.store,h=a.getCount(),d=true;if(b<0){if(c<0){k--;d=false}while(k>=0){if(!d){c=g-1}d=false;while(c>=0){if(e.call(j||this,k,c,i)===true){return[k,c]}c--}k--}}else{if(c>=g){k++;d=false}while(k<h){if(!d){c=0}d=false;while(c<g){if(e.call(j||this,k,c,i)===true){return[k,c]}c++}k++}}return null},getGridEl:function(){return this.body},stopEditing:Ext.emptyFn,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.PivotGrid=Ext.extend(Ext.grid.GridPanel,{aggregator:"sum",renderer:undefined,initComponent:function(){Ext.grid.PivotGrid.superclass.initComponent.apply(this,arguments);this.initAxes();this.enableColumnResize=false;this.viewConfig=Ext.apply(this.viewConfig||{},{forceFit:true});this.colModel=new Ext.grid.ColumnModel({})},getAggregator:function(){if(typeof this.aggregator=="string"){return Ext.grid.PivotAggregatorMgr.types[this.aggregator]}else{return this.aggregator}},setAggregator:function(a){this.aggregator=a},setMeasure:function(a){this.measure=a},setLeftAxis:function(b,a){this.leftAxis=b;if(a){this.view.refresh()}},setTopAxis:function(b,a){this.topAxis=b;if(a){this.view.refresh()}},initAxes:function(){var a=Ext.grid.PivotAxis;if(!(this.leftAxis instanceof a)){this.setLeftAxis(new a({orientation:"vertical",dimensions:this.leftAxis||[],store:this.store}))}if(!(this.topAxis instanceof a)){this.setTopAxis(new a({orientation:"horizontal",dimensions:this.topAxis||[],store:this.store}))}},extractData:function(){var c=this.store.data.items,s=c.length,q=[],h,g,e,d;if(s==0){return[]}var l=this.leftAxis.getTuples(),o=l.length,m=this.topAxis.getTuples(),a=m.length,b=this.getAggregator();for(g=0;g<s;g++){h=c[g];for(e=0;e<o;e++){q[e]=q[e]||[];if(l[e].matcher(h)===true){for(d=0;d<a;d++){q[e][d]=q[e][d]||[];if(m[d].matcher(h)){q[e][d].push(h)}}}}}var n=q.length,p,r;for(g=0;g<n;g++){r=q[g];p=r.length;for(e=0;e<p;e++){q[g][e]=b(q[g][e],this.measure)}}return q},getView:function(){if(!this.view){this.view=new Ext.grid.PivotGridView(this.viewConfig)}return this.view}});Ext.reg("pivotgrid",Ext.grid.PivotGrid);Ext.grid.PivotAggregatorMgr=new Ext.AbstractManager();Ext.grid.PivotAggregatorMgr.registerType("sum",function(a,c){var e=a.length,d=0,b;for(b=0;b<e;b++){d+=a[b].get(c)}return d});Ext.grid.PivotAggregatorMgr.registerType("avg",function(a,c){var e=a.length,d=0,b;for(b=0;b<e;b++){d+=a[b].get(c)}return(d/e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("min",function(a,c){var e=[],d=a.length,b;for(b=0;b<d;b++){e.push(a[b].get(c))}return Math.min.apply(this,e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("max",function(a,c){var e=[],d=a.length,b;for(b=0;b<d;b++){e.push(a[b].get(c))}return Math.max.apply(this,e)||"n/a"});Ext.grid.PivotAggregatorMgr.registerType("count",function(a,b){return a.length});Ext.grid.GridView=Ext.extend(Ext.util.Observable,{deferEmptyText:true,scrollOffset:undefined,autoFill:false,forceFit:false,sortClasses:["sort-asc","sort-desc"],sortAscText:"Sort Ascending",sortDescText:"Sort Descending",columnsText:"Columns",selectedRowClass:"x-grid3-row-selected",borderWidth:2,tdClass:"x-grid3-cell",hdCls:"x-grid3-hd",markDirty:true,cellSelectorDepth:4,rowSelectorDepth:10,rowBodySelectorDepth:10,cellSelector:"td.x-grid3-cell",rowSelector:"div.x-grid3-row",rowBodySelector:"div.x-grid3-row-body",firstRowCls:"x-grid3-row-first",lastRowCls:"x-grid3-row-last",rowClsRe:/(?:^|\s+)x-grid3-row-(first|last|alt)(?:\s+|$)/g,headerMenuOpenCls:"x-grid3-hd-menu-open",rowOverCls:"x-grid3-row-over",constructor:function(a){Ext.apply(this,a);this.addEvents("beforerowremoved","beforerowsinserted","beforerefresh","rowremoved","rowsinserted","rowupdated","refresh");Ext.grid.GridView.superclass.constructor.call(this)},masterTpl:new Ext.Template('<div class="x-grid3" hidefocus="true">','<div class="x-grid3-viewport">','<div class="x-grid3-header">','<div class="x-grid3-header-inner">','<div class="x-grid3-header-offset" style="{ostyle}">{header}</div>',"</div>",'<div class="x-clear"></div>',"</div>",'<div class="x-grid3-scroller">','<div class="x-grid3-body" style="{bstyle}">{body}</div>','<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',"</div>","</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>"),headerTpl:new Ext.Template('<table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<thead>",'<tr class="x-grid3-hd-row">{cells}</tr>',"</thead>","</table>"),bodyTpl:new Ext.Template("{rows}"),cellTpl:new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}" tabIndex="0" {cellAttr}>','<div class="x-grid3-cell-inner x-grid3-col-{id}" unselectable="on" {attr}>{value}</div>',"</td>"),initTemplates:function(){var c=this.templates||{},d,b,g=new Ext.Template('<td class="x-grid3-hd x-grid3-cell x-grid3-td-{id} {css}" style="{style}">','<div {tooltip} {attr} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"","{value}",'<img alt="" class="x-grid3-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" />',"</div>","</td>"),a=['<tr class="x-grid3-row-body-tr" style="{bodyStyle}">','<td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on">','<div class="x-grid3-row-body">{body}</div>',"</td>","</tr>"].join(""),e=['<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<tbody>","<tr>{cells}</tr>",this.enableRowBody?a:"","</tbody>","</table>"].join("");Ext.applyIf(c,{hcell:g,cell:this.cellTpl,body:this.bodyTpl,header:this.headerTpl,master:this.masterTpl,row:new Ext.Template('<div class="x-grid3-row {alt}" style="{tstyle}">'+e+"</div>"),rowInner:new Ext.Template(e)});for(b in c){d=c[b];if(d&&Ext.isFunction(d.compile)&&!d.compiled){d.disableFormats=true;d.compile()}}this.templates=c;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(){return this.scroller.dom},initElements:function(){var b=Ext.Element,d=Ext.get(this.grid.getGridEl().dom.firstChild),e=new b(d.child("div.x-grid3-viewport")),c=new b(e.child("div.x-grid3-header")),a=new b(e.child("div.x-grid3-scroller"));if(this.grid.hideHeaders){c.setDisplayed(false)}if(this.forceFit){a.setStyle("overflow-x","hidden")}Ext.apply(this,{el:d,mainWrap:e,scroller:a,mainHd:c,innerHd:c.child("div.x-grid3-header-inner").dom,mainBody:new b(b.fly(a).child("div.x-grid3-body")),focusEl:new b(b.fly(a).child("a")),resizeMarker:new b(d.child("div.x-grid3-resize-marker")),resizeProxy:new b(d.child("div.x-grid3-resize-proxy"))});this.focusEl.swallowEvent("click",true)},getRows:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},findCell:function(a){if(!a){return false}return this.fly(a).findParent(this.cellSelector,this.cellSelectorDepth)},findCellIndex:function(d,c){var b=this.findCell(d),a;if(b){a=this.fly(b).hasClass(c);if(!c||a){return this.getCellIndex(b)}}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,this.rowSelectorDepth)},findRowIndex:function(a){var b=this.findRow(a);return b?b.rowIndex:false},findRowBody:function(a){if(!a){return false}return this.fly(a).findParent(this.rowBodySelector,this.rowBodySelectorDepth)},getRow:function(a){return this.getRows()[a]},getCell:function(b,a){return Ext.fly(this.getRow(b)).query(this.cellSelector)[a]},getHeaderCell:function(a){return this.mainHd.dom.getElementsByTagName("td")[a]},addRowClass:function(b,a){var c=this.getRow(b);if(c){this.fly(c).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));this.syncFocusEl(a)},removeRows:function(c,a){var b=this.mainBody.dom,d;for(d=c;d<=a;d++){Ext.removeNode(b.childNodes[c])}this.syncFocusEl(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(){var a=this.scroller.dom;a.scrollTop=0;a.scrollLeft=0},syncScroll:function(){this.syncHeaderScroll();var a=this.scroller.dom;this.grid.fireEvent("bodyscroll",a.scrollLeft,a.scrollTop)},syncHeaderScroll:function(){var a=this.innerHd,b=this.scroller.dom.scrollLeft;a.scrollLeft=b;a.scrollLeft=b},updateSortIcon:function(d,c){var a=this.sortClasses,b=a[c=="DESC"?1:0],e=this.mainHd.select("td").removeClass(a);e.item(d).addClass(b)},updateAllColumnWidths:function(){var e=this.getTotalWidth(),k=this.cm.getColumnCount(),m=this.getRows(),g=m.length,b=[],l,a,h,d,c;for(d=0;d<k;d++){b[d]=this.getColumnWidth(d);this.getHeaderCell(d).style.width=b[d]}this.updateHeaderWidth();for(d=0;d<g;d++){l=m[d];l.style.width=e;a=l.firstChild;if(a){a.style.width=e;h=a.rows[0];for(c=0;c<k;c++){h.childNodes[c].style.width=b[c]}}}this.onAllColumnWidthsUpdated(b,e)},updateColumnWidth:function(d,b){var c=this.getColumnWidth(d),j=this.getTotalWidth(),h=this.getHeaderCell(d),a=this.getRows(),e=a.length,l,g,k;this.updateHeaderWidth();h.style.width=c;for(g=0;g<e;g++){l=a[g];k=l.firstChild;l.style.width=j;if(k){k.style.width=j;k.rows[0].childNodes[d].style.width=c}}this.onColumnWidthUpdated(d,c,j)},updateColumnHidden:function(b,j){var h=this.getTotalWidth(),k=j?"none":"",g=this.getHeaderCell(b),a=this.getRows(),d=a.length,l,c,e;this.updateHeaderWidth();g.style.display=k;for(e=0;e<d;e++){l=a[e];l.style.width=h;c=l.firstChild;if(c){c.style.width=h;c.rows[0].childNodes[b].style.display=k}}this.onColumnHiddenUpdated(b,j,h);delete this.lastViewWidth;this.layout()},doRender:function(d,v,m,a,r,t){var h=this.templates,c=h.cell,y=h.row,o=r-1,b="width:"+this.getTotalWidth()+";",k=[],l=[],n={tstyle:b},q={},w=v.length,x,g,e,u,s,p;for(s=0;s<w;s++){e=v[s];l=[];p=s+a;for(u=0;u<r;u++){g=d[u];q.id=g.id;q.css=u===0?"x-grid3-cell-first ":(u==o?"x-grid3-cell-last ":"");q.attr=q.cellAttr="";q.style=g.style;q.value=g.renderer.call(g.scope,e.data[g.name],q,e,p,u,m);if(Ext.isEmpty(q.value)){q.value="&#160;"}if(this.markDirty&&e.dirty&&typeof e.modified[g.name]!="undefined"){q.css+=" x-grid3-dirty-cell"}l[l.length]=c.apply(q)}x=[];if(t&&((p+1)%2===0)){x[0]="x-grid3-row-alt"}if(e.dirty){x[1]=" x-grid3-dirty-row"}n.cols=r;if(this.getRowClass){x[2]=this.getRowClass(e,p,n,m)}n.alt=x.join(" ");n.cells=l.join("");k[k.length]=y.apply(n)}return k.join("")},processRows:function(a,g){if(!this.ds||this.ds.getCount()<1){return}var d=this.getRows(),c=d.length,e,b;g=g||!this.grid.stripeRows;a=a||0;for(b=0;b<c;b++){e=d[b];if(e){e.rowIndex=b;if(!g){e.className=e.className.replace(this.rowClsRe," ");if((b+1)%2===0){e.className+=" x-grid3-row-alt"}}}}if(a===0){Ext.fly(d[0]).addClass(this.firstRowCls)}Ext.fly(d[c-1]).addClass(this.lastRowCls)},afterRender:function(){if(!this.ds||!this.cm){return}this.mainBody.dom.innerHTML=this.renderBody()||"&#160;";this.processRows(0,true);if(this.deferEmptyText!==true){this.applyEmptyText()}this.grid.fireEvent("viewready",this.grid)},afterRenderUI:function(){var a=this.grid;this.initElements();Ext.fly(this.innerHd).on("click",this.handleHdDown,this);this.mainHd.on({scope:this,mouseover:this.handleHdOver,mouseout:this.handleHdOut,mousemove:this.handleHdMove});this.scroller.on("scroll",this.syncScroll,this);if(a.enableColumnResize!==false){this.splitZone=new Ext.grid.GridView.SplitDragZone(a,this.mainHd.dom)}if(a.enableColumnMove){this.columnDrag=new Ext.grid.GridView.ColumnDragZone(a,this.innerHd);this.columnDrop=new Ext.grid.HeaderDropZone(a,this.mainHd.dom)}if(a.enableHdMenu!==false){this.hmenu=new Ext.menu.Menu({id:a.id+"-hctx"});this.hmenu.add({itemId:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{itemId:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});if(a.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:a.id+"-hcols-menu"});this.colMenu.on({scope:this,beforeshow:this.beforeColMenuShow,itemclick:this.handleHdMenuClick});this.hmenu.add("-",{itemId:"columns",hideOnClick:false,text:this.columnsText,menu:this.colMenu,iconCls:"x-cols-icon"})}this.hmenu.on("itemclick",this.handleHdMenuClick,this)}if(a.trackMouseOver){this.mainBody.on({scope:this,mouseover:this.onRowOver,mouseout:this.onRowOut})}if(a.enableDragDrop||a.enableDrag){this.dragZone=new Ext.grid.GridDragZone(a,{ddGroup:a.ddGroup||"GridDD"})}this.updateHeaderSortState()},renderUI:function(){var a=this.templates;return a.master.apply({body:a.body.apply({rows:"&#160;"}),header:this.renderHeaders(),ostyle:"width:"+this.getOffsetWidth()+";",bstyle:"width:"+this.getTotalWidth()+";"})},processEvent:function(b,h){var i=h.getTarget(),a=this.grid,d=this.findHeaderIndex(i),k,j,c,g;a.fireEvent(b,h);if(d!==false){a.fireEvent("header"+b,a,d,h)}else{k=this.findRowIndex(i);if(k!==false){j=this.findCellIndex(i);if(j!==false){c=a.colModel.getColumnAt(j);if(a.fireEvent("cell"+b,a,k,j,h)!==false){if(!c||(c.processEvent&&(c.processEvent(b,h,a,k,j)!==false))){a.fireEvent("row"+b,a,k,h)}}}else{if(a.fireEvent("row"+b,a,k,h)!==false){(g=this.findRowBody(i))&&a.fireEvent("rowbody"+b,a,k,h)}}}else{a.fireEvent("container"+b,a,h)}}},layout:function(j){if(!this.mainBody){return}var a=this.grid,d=a.getGridEl(),c=d.getSize(true),i=c.width,b=c.height,h=this.scroller,g,e,k;if(i<20||b<20){return}if(a.autoHeight){g=h.dom.style;g.overflow="visible";if(Ext.isWebKit){g.position="static"}}else{this.el.setSize(i,b);e=this.mainHd.getHeight();k=b-e;h.setSize(i,k);if(this.innerHd){this.innerHd.style.width=(i)+"px"}}if(this.forceFit||(j===true&&this.autoFill)){if(this.lastViewWidth!=i){this.fitColumns(false,false);this.lastViewWidth=i}}else{this.autoExpand();this.syncHeaderScroll()}this.onLayout(i,k)},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)},getOffsetWidth:function(){return(this.cm.getTotalWidth()+this.getScrollOffset())+"px"},getScrollOffset:function(){return Ext.num(this.scrollOffset,Ext.getScrollBarWidth())},renderHeaders:function(){var e=this.cm,g=this.templates,a=g.hcell,d={},h=e.getColumnCount(),j=h-1,k=[],c,b;for(c=0;c<h;c++){if(c==0){b="x-grid3-cell-first "}else{b=c==j?"x-grid3-cell-last ":""}d={id:e.getColumnId(c),value:e.getColumnHeader(c)||"",style:this.getColumnStyle(c,true),css:b,tooltip:this.getColumnTooltip(c)};if(e.config[c].align=="right"){d.istyle="padding-right: 16px;"}else{delete d.istyle}k[c]=a.apply(d)}return g.header.apply({cells:k.join(""),tstyle:String.format("width: {0};",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();this.updateHeaderWidth(false)},updateHeaderWidth:function(c){var b=this.innerHd.firstChild,a=this.getTotalWidth();b.style.width=this.getOffsetWidth();b.firstChild.style.width=a;if(c!==false){this.mainBody.dom.style.width=a}},focusRow:function(a){this.focusCell(a,0,false)},focusCell:function(d,b,c){this.syncFocusEl(this.ensureVisible(d,b,c));var a=this.focusEl;if(Ext.isGecko){a.focus()}else{a.focus.defer(1,a)}},resolveCell:function(h,d,g){if(!Ext.isNumber(h)){h=h.rowIndex}if(!this.ds){return null}if(h<0||h>=this.ds.getCount()){return null}d=(d!==undefined?d:0);var c=this.getRow(h),b=this.cm,e=b.getColumnCount(),a;if(!(g===false&&d===0)){while(d<e&&b.isHidden(d)){d++}a=this.getCell(h,d)}return{row:c,cell:a}},getResolvedXY:function(b){if(!b){return null}var a=b.cell,c=b.row;if(a){return Ext.fly(a).getXY()}else{return[this.el.getX(),Ext.fly(c).getY()]}},syncFocusEl:function(d,a,c){var b=d;if(!Ext.isArray(b)){d=Math.min(d,Math.max(0,this.getRows().length-1));if(isNaN(d)){return}b=this.getResolvedXY(this.resolveCell(d,a,c))}this.focusEl.setXY(b||this.scroller.getXY())},ensureVisible:function(t,g,e){var r=this.resolveCell(t,g,e);if(!r||!r.row){return null}var k=r.row,h=r.cell,n=this.scroller.dom,d=k,s=0,o=this.el.dom;while(d&&d!=o){s+=d.offsetTop;d=d.offsetParent}s-=this.mainHd.dom.offsetHeight;o=parseInt(n.scrollTop,10);var q=s+k.offsetHeight,a=n.clientHeight,m=o+a;if(s<o){n.scrollTop=s}else{if(q>m){n.scrollTop=q-a}}if(e!==false){var l=parseInt(h.offsetLeft,10),j=l+h.offsetWidth,i=parseInt(n.scrollLeft,10),b=i+n.clientWidth;if(l<i){n.scrollLeft=l}else{if(j>b){n.scrollLeft=j-n.clientWidth}}}return this.getResolvedXY(r)},insertRows:function(a,i,e,h){var d=a.getCount()-1;if(!h&&i===0&&e>=d){this.fireEvent("beforerowsinserted",this,i,e);this.refresh();this.fireEvent("rowsinserted",this,i,e)}else{if(!h){this.fireEvent("beforerowsinserted",this,i,e)}var b=this.renderRows(i,e),g=this.getRow(i);if(g){if(i===0){Ext.fly(this.getRow(0)).removeClass(this.firstRowCls)}Ext.DomHelper.insertHtml("beforeBegin",g,b)}else{var c=this.getRow(d-1);if(c){Ext.fly(c).removeClass(this.lastRowCls)}Ext.DomHelper.insertHtml("beforeEnd",this.mainBody.dom,b)}if(!h){this.processRows(i);this.fireEvent("rowsinserted",this,i,e)}else{if(i===0||i>=d){Ext.fly(this.getRow(i)).addClass(i===0?this.firstRowCls:this.lastRowCls)}}}this.syncFocusEl(i)},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(b,d){var a=this.cm,g=a.config,c=d?"":g[b].css||"",e=g[b].align;c+=String.format("width: {0};",this.getColumnWidth(b));if(a.isHidden(b)){c+="display: none; "}if(e){c+=String.format("text-align: {0};",e)}return c},getColumnWidth:function(b){var c=this.cm.getColumnWidth(b),a=this.borderWidth;if(Ext.isNumber(c)){if(Ext.isBorderBox||(Ext.isWebKit&&!Ext.isSafari2)){return c+"px"}else{return Math.max(c-a,0)+"px"}}else{return c}},getTotalWidth:function(){return this.cm.getTotalWidth()+"px"},fitColumns:function(g,j,h){var a=this.grid,l=this.cm,s=l.getTotalWidth(false),q=this.getGridInnerWidth(),r=q-s,c=[],o=0,n=0,u,d,p;if(q<20||r===0){return false}var e=l.getColumnCount(true),m=l.getColumnCount(false),b=e-(Ext.isNumber(h)?1:0);if(b===0){b=1;h=undefined}for(p=0;p<m;p++){if(!l.isFixed(p)&&p!==h){u=l.getColumnWidth(p);c.push(p,u);if(!l.isHidden(p)){o=p;n+=u}}}d=(q-l.getTotalWidth())/n;while(c.length){u=c.pop();p=c.pop();l.setColumnWidth(p,Math.max(a.minColumnWidth,Math.floor(u+u*d)),true)}s=l.getTotalWidth(false);if(s>q){var t=(b==e)?o:h,k=Math.max(1,l.getColumnWidth(t)-(s-q));l.setColumnWidth(t,k,true)}if(g!==true){this.updateAllColumnWidths()}return true},autoExpand:function(k){var a=this.grid,i=this.cm,e=this.getGridInnerWidth(),c=i.getTotalWidth(false),g=a.autoExpandColumn;if(!this.userResized&&g){if(e!=c){var j=i.getIndexById(g),b=i.getColumnWidth(j),h=e-c+b,d=Math.min(Math.max(h,a.autoExpandMin),a.autoExpandMax);if(b!=d){i.setColumnWidth(j,d,true);if(k!==true){this.updateColumnWidth(j,d)}}}}},getGridInnerWidth:function(){return this.grid.getGridEl().getWidth(true)-this.getScrollOffset()},getColumnData:function(){var e=[],c=this.cm,g=c.getColumnCount(),a=this.ds.fields,d,b;for(d=0;d<g;d++){b=c.getDataIndex(d);e[d]={name:Ext.isDefined(b)?b:(a.get(d)?a.get(d).name:undefined),renderer:c.getRenderer(d),scope:c.getRendererScope(d),id:c.getColumnId(d),style:this.getColumnStyle(d)}}return e},renderRows:function(i,c){var a=this.grid,g=a.store,j=a.stripeRows,e=a.colModel,h=e.getColumnCount(),d=g.getCount(),b;if(d<1){return""}i=i||0;c=Ext.isDefined(c)?c:d-1;b=g.getRange(i,c);return this.doRender(this.getColumnData(),b,g,i,h,j)},renderBody:function(){var a=this.renderRows()||"&#160;";return this.templates.body.apply({rows:a})},refreshRow:function(g){var l=this.ds,m=this.cm.getColumnCount(),c=this.getColumnData(),n=m-1,p=["x-grid3-row"],e={tstyle:String.format("width: {0};",this.getTotalWidth())},a=[],k=this.templates.cell,j,q,b,o,h,d;if(Ext.isNumber(g)){j=g;g=l.getAt(j)}else{j=l.indexOf(g)}if(!g||j<0){return}for(d=0;d<m;d++){b=c[d];if(d==0){h="x-grid3-cell-first"}else{h=(d==n)?"x-grid3-cell-last ":""}o={id:b.id,style:b.style,css:h,attr:"",cellAttr:""};o.value=b.renderer.call(b.scope,g.data[b.name],o,g,j,d,l);if(Ext.isEmpty(o.value)){o.value="&#160;"}if(this.markDirty&&g.dirty&&typeof g.modified[b.name]!="undefined"){o.css+=" x-grid3-dirty-cell"}a[d]=k.apply(o)}q=this.getRow(j);q.className="";if(this.grid.stripeRows&&((j+1)%2===0)){p.push("x-grid3-row-alt")}if(this.getRowClass){e.cols=m;p.push(this.getRowClass(g,j,e,l))}this.fly(q).addClass(p).setStyle(e.tstyle);e.cells=a.join("");q.innerHTML=this.templates.rowInner.apply(e);this.fireEvent("rowupdated",this,j,g)},refresh:function(b){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var a=this.renderBody();this.mainBody.update(a).setWidth(this.getTotalWidth());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('<div class="x-grid-empty">'+this.emptyText+"</div>")}},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)}},clearHeaderSortState:function(){if(!this.sortState){return}this.grid.fireEvent("sortchange",this.grid,null);this.mainHd.select("td").removeClass(this.sortClasses);delete this.sortState},destroy:function(){var j=this,a=j.grid,d=a.getGridEl(),i=j.dragZone,g=j.splitZone,h=j.columnDrag,e=j.columnDrop,k=j.scrollToTopTask,c,b;if(k&&k.cancel){k.cancel()}Ext.destroyMembers(j,"colMenu","hmenu");j.initData(null,null);j.purgeListeners();Ext.fly(j.innerHd).un("click",j.handleHdDown,j);if(a.enableColumnMove){c=h.dragData;b=h.proxy;Ext.destroy(h.el,b.ghost,b.el,e.el,e.proxyTop,e.proxyBottom,c.ddel,c.header);if(b.anim){Ext.destroy(b.anim)}delete b.ghost;delete c.ddel;delete c.header;h.destroy();delete Ext.dd.DDM.locationCache[h.id];delete h._domRef;delete e.proxyTop;delete e.proxyBottom;e.destroy();delete Ext.dd.DDM.locationCache["gridHeader"+d.id];delete e._domRef;delete Ext.dd.DDM.ids[e.ddGroup]}if(g){g.destroy();delete g._domRef;delete Ext.dd.DDM.ids["gridSplitters"+d.id]}Ext.fly(j.innerHd).removeAllListeners();Ext.removeNode(j.innerHd);delete j.innerHd;Ext.destroy(j.el,j.mainWrap,j.mainHd,j.scroller,j.mainBody,j.focusEl,j.resizeMarker,j.resizeProxy,j.activeHdBtn,j._flyweight,i,g);delete a.container;if(i){i.destroy()}Ext.dd.DDM.currentTarget=null;delete Ext.dd.DDM.locationCache[d.id];Ext.EventManager.removeResizeListener(j.onWindowResize,j)},onDenyColumnHide:function(){},render:function(){if(this.autoFill){var a=this.grid.ownerCt;if(a&&a.getLayout()){a.on("afterlayout",function(){this.fitColumns(true,true);this.updateHeaders();this.updateHeaderSortState()},this,{single:true})}}else{if(this.forceFit){this.fitColumns(true,false)}else{if(this.grid.autoExpandColumn){this.autoExpand(true)}}}this.grid.getGridEl().dom.innerHTML=this.renderUI();this.afterRenderUI()},initData:function(a,e){var b=this;if(b.ds){var d=b.ds;d.un("add",b.onAdd,b);d.un("load",b.onLoad,b);d.un("clear",b.onClear,b);d.un("remove",b.onRemove,b);d.un("update",b.onUpdate,b);d.un("datachanged",b.onDataChange,b);if(d!==a&&d.autoDestroy){d.destroy()}}if(a){a.on({scope:b,load:b.onLoad,add:b.onAdd,remove:b.onRemove,update:b.onUpdate,clear:b.onClear,datachanged:b.onDataChange})}if(b.cm){var c=b.cm;c.un("configchange",b.onColConfigChange,b);c.un("widthchange",b.onColWidthChange,b);c.un("headerchange",b.onHeaderChange,b);c.un("hiddenchange",b.onHiddenChange,b);c.un("columnmoved",b.onColumnMove,b)}if(e){delete b.lastViewWidth;e.on({scope:b,configchange:b.onColConfigChange,widthchange:b.onColWidthChange,headerchange:b.onHeaderChange,hiddenchange:b.onHiddenChange,columnmoved:b.onColumnMove})}b.ds=a;b.cm=e},onDataChange:function(){this.refresh(true);this.updateHeaderSortState();this.syncFocusEl(0)},onClear:function(){this.refresh();this.syncFocusEl(0)},onUpdate:function(b,a){this.refreshRow(a)},onAdd:function(b,a,c){this.insertRows(b,c,c+(a.length-1))},onRemove:function(b,a,c,d){if(d!==true){this.fireEvent("beforerowremoved",this,c,a)}this.removeRow(c);if(d!==true){this.processRows(c);this.applyEmptyText();this.fireEvent("rowremoved",this,c,a)}},onLoad:function(){if(Ext.isGecko){if(!this.scrollToTopTask){this.scrollToTopTask=new Ext.util.DelayedTask(this.scrollToTop,this)}this.scrollToTopTask.delay(1)}else{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,c,b){this.indexMap=null;this.refresh(true);this.restoreScroll(this.getScrollState());this.afterMove(b);this.grid.fireEvent("columnmove",c,b)},onColConfigChange:function(){delete this.lastViewWidth;this.indexMap=null;this.refresh(true)},initUI:function(a){a.on("headerclick",this.onHeaderClick,this)},initEvents:Ext.emptyFn,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=this.findRowIndex(a);if(c!==false){this.addRowClass(c,this.rowOverCls)}},onRowOut:function(b,a){var c=this.findRowIndex(a);if(c!==false&&!b.within(this.getRow(c),true)){this.removeRowClass(c,this.rowOverCls)}},onRowSelect:function(a){this.addRowClass(a,this.selectedRowClass)},onRowDeselect:function(a){this.removeRowClass(a,this.selectedRowClass)},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")}},handleWheel:function(a){a.stopPropagation()},onColumnSplitterMoved:function(a,b){this.userResized=true;this.grid.colModel.setColumnWidth(a,b,true);if(this.forceFit){this.fitColumns(true,false,a);this.updateAllColumnWidths()}else{this.updateColumnWidth(a,b);this.syncHeaderScroll()}this.grid.fireEvent("columnresize",a,b)},beforeColMenuShow:function(){var b=this.cm,d=b.getColumnCount(),a=this.colMenu,c;a.removeAll();for(c=0;c<d;c++){if(b.config[c].hideable!==false){a.add(new Ext.menu.CheckItem({text:b.getColumnHeader(c),itemId:"col-"+b.getColumnId(c),checked:!b.isHidden(c),disabled:b.config[c].hideable===false,hideOnClick:false}))}}},handleHdMenuClick:function(c){var a=this.ds,b=this.cm.getDataIndex(this.hdCtxIndex);switch(c.getItemId()){case"asc":a.sort(b,"ASC");break;case"desc":a.sort(b,"DESC");break;default:this.handleHdMenuClickDefault(c)}return true},handleHdMenuClickDefault:function(c){var b=this.cm,d=c.getItemId(),a=b.getIndexById(d.substr(4));if(a!=-1){if(c.checked&&b.getColumnsBy(this.isHideableColumn,this).length<=1){this.onDenyColumnHide();return}b.setHidden(a,c.checked)}},handleHdDown:function(i,j){if(Ext.fly(j).hasClass("x-grid3-hd-btn")){i.stopEvent();var k=this.cm,g=this.findHeaderCell(j),h=this.getCellIndex(g),d=k.isSortable(h),c=this.hmenu,b=c.items,a=this.headerMenuOpenCls;this.hdCtxIndex=h;Ext.fly(g).addClass(a);b.get("asc").setDisabled(!d);b.get("desc").setDisabled(!d);c.on("hide",function(){Ext.fly(g).removeClass(a)},this,{single:true});c.show(j,"tl-bl?")}},handleHdMove:function(k){var i=this.findHeaderCell(this.activeHdRef);if(i&&!this.headersDisabled){var l=this.splitHandleWidth||5,j=this.activeHdRegion,p=i.style,m=this.cm,o="",g=k.getPageX();if(this.grid.enableColumnResize!==false){var a=this.activeHdIndex,b=this.getPreviousVisible(a),n=m.isResizable(a),c=b&&m.isResizable(b),d=g-j.left<=l,h=j.right-g<=(!this.activeHdBtn?l:2);if(d&&c){o=Ext.isAir?"move":Ext.isWebKit?"e-resize":"col-resize"}else{if(h&&n){o=Ext.isAir?"move":Ext.isWebKit?"w-resize":"col-resize"}}}p.cursor=o}},getPreviousVisible:function(a){while(a>0){if(!this.cm.isHidden(a-1)){return a}a--}return undefined},handleHdOver:function(c,b){var d=this.findHeaderCell(b);if(d&&!this.headersDisabled){var a=this.fly(d);this.activeHdRef=b;this.activeHdIndex=this.getCellIndex(d);this.activeHdRegion=a.getRegion();if(!this.isMenuDisabled(this.activeHdIndex,a)){a.addClass("x-grid3-hd-over");this.activeHdBtn=a.child(".x-grid3-hd-btn");if(this.activeHdBtn){this.activeHdBtn.dom.style.height=(d.firstChild.offsetHeight-1)+"px"}}}},handleHdOut:function(b,a){var c=this.findHeaderCell(a);if(c&&(!Ext.isIE||!b.within(c,true))){this.activeHdRef=null;this.fly(c).removeClass("x-grid3-hd-over");c.style.cursor=""}},isMenuDisabled:function(a,b){return this.cm.isMenuDisabled(a)},hasRows:function(){var a=this.mainBody.dom.firstChild;return a&&a.nodeType==1&&a.className!="x-grid-empty"},isHideableColumn:function(a){return !a.hidden},bind:function(a,b){this.initData(a,b)}});Ext.grid.GridView.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{constructor: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},b4StartDrag:function(a,e){this.dragHeadersDisabled=this.view.headersDisabled;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),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)},allowHeaderDrag:function(a){return true},handleMouseDown:function(a){var h=this.view.findHeaderCell(a.getTarget());if(h&&this.allowHeaderDrag(a)){var k=this.view.fly(h).getXY(),c=k[0],i=a.getXY(),b=i[0],g=h.offsetWidth,d=false;if((b-c)<=this.hw){d=-1}else{if((c+g)-b<=this.hw){d=0}}if(d!==false){this.cm=this.grid.colModel;var j=this.view.getCellIndex(h);if(d==-1){if(j+d<0){return}while(this.cm.isHidden(j+d)){--d;if(j+d<0){return}}}this.cellIndex=j+d;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(g){this.marker.hide();var a=this.view,c=Math.max(this.minX,g.getPageX()),d=c-this.startPos,b=this.dragHeadersDisabled;a.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+d);setTimeout(function(){a.headersDisabled=b},50)},autoOffset:function(){this.setDelta(0,0)}});Ext.grid.PivotGridView=Ext.extend(Ext.grid.GridView,{colHeaderCellCls:"grid-hd-group-cell",title:"",getColumnHeaders:function(){return this.grid.topAxis.buildHeaders()},getRowHeaders:function(){return this.grid.leftAxis.buildHeaders()},renderRows:function(a,t){var b=this.grid,o=b.extractData(),p=o.length,g=this.templates,s=b.renderer,h=typeof s=="function",w=this.getCellCls,n=typeof w=="function",d=g.cell,x=g.row,k=[],q={},c="width:"+this.getGridInnerWidth()+"px;",l,r,e,v,m;a=a||0;t=Ext.isDefined(t)?t:p-1;for(v=0;v<p;v++){m=o[v];r=m.length;l=[];for(var u=0;u<r;u++){q.id=v+"-"+u;q.css=u===0?"x-grid3-cell-first ":(u==(r-1)?"x-grid3-cell-last ":"");q.attr=q.cellAttr="";q.value=m[u];if(Ext.isEmpty(q.value)){q.value="&#160;"}if(h){q.value=s(q.value)}if(n){q.css+=w(q.value)+" "}l[l.length]=d.apply(q)}k[k.length]=x.apply({tstyle:c,cols:r,cells:l.join(""),alt:""})}return k.join("")},masterTpl:new Ext.Template('<div class="x-grid3 x-pivotgrid" hidefocus="true">','<div class="x-grid3-viewport">','<div class="x-grid3-header">','<div class="x-grid3-header-title"><span>{title}</span></div>','<div class="x-grid3-header-inner">','<div class="x-grid3-header-offset" style="{ostyle}"></div>',"</div>",'<div class="x-clear"></div>',"</div>",'<div class="x-grid3-scroller">','<div class="x-grid3-row-headers"></div>','<div class="x-grid3-body" style="{bstyle}">{body}</div>','<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',"</div>","</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>"),initTemplates:function(){Ext.grid.PivotGridView.superclass.initTemplates.apply(this,arguments);var a=this.templates||{};if(!a.gcell){a.gcell=new Ext.XTemplate('<td class="x-grid3-hd x-grid3-gcell x-grid3-td-{id} ux-grid-hd-group-row-{row} '+this.colHeaderCellCls+'" style="{style}">','<div {tooltip} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"","{value}","</div>","</td>")}this.templates=a;this.hrowRe=new RegExp("ux-grid-hd-group-row-(\\d+)","")},initElements:function(){Ext.grid.PivotGridView.superclass.initElements.apply(this,arguments);this.rowHeadersEl=new Ext.Element(this.scroller.child("div.x-grid3-row-headers"));this.headerTitleEl=new Ext.Element(this.mainHd.child("div.x-grid3-header-title"))},getGridInnerWidth:function(){var a=Ext.grid.PivotGridView.superclass.getGridInnerWidth.apply(this,arguments);return a-this.getTotalRowHeaderWidth()},getTotalRowHeaderWidth:function(){var d=this.getRowHeaders(),c=d.length,b=0,a;for(a=0;a<c;a++){b+=d[a].width}return b},getTotalColumnHeaderHeight:function(){return this.getColumnHeaders().length*21},getCellIndex:function(b){if(b){var a=b.className.match(this.colRe),c;if(a&&(c=a[1])){return parseInt(c.split("-")[1],10)}}return false},renderUI:function(){var b=this.templates,a=this.getGridInnerWidth();return b.master.apply({body:b.body.apply({rows:"&#160;"}),ostyle:"width:"+a+"px",bstyle:"width:"+a+"px"})},onLayout:function(b,a){Ext.grid.PivotGridView.superclass.onLayout.apply(this,arguments);var b=this.getGridInnerWidth();this.resizeColumnHeaders(b);this.resizeAllRows(b)},refresh:function(b){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var a=this.renderBody();this.mainBody.update(a).setWidth(this.getGridInnerWidth());if(b===true){this.updateHeaders();this.updateHeaderSortState()}this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this)},renderHeaders:Ext.emptyFn,fitColumns:Ext.emptyFn,resizeColumnHeaders:function(b){var a=this.grid.topAxis;if(a.rendered){a.el.setWidth(b)}},resizeRowHeaders:function(){var a=this.getTotalRowHeaderWidth(),b=String.format("margin-left: {0}px;",a);this.rowHeadersEl.setWidth(a);this.mainBody.applyStyles(b);Ext.fly(this.innerHd).applyStyles(b);this.headerTitleEl.setWidth(a);this.headerTitleEl.setHeight(this.getTotalColumnHeaderHeight())},resizeAllRows:function(b){var d=this.getRows(),c=d.length,a;for(a=0;a<c;a++){Ext.fly(d[a]).setWidth(b);Ext.fly(d[a]).child("table").setWidth(b)}},updateHeaders:function(){this.renderGroupRowHeaders();this.renderGroupColumnHeaders()},renderGroupRowHeaders:function(){var a=this.grid.leftAxis;this.resizeRowHeaders();a.rendered=false;a.render(this.rowHeadersEl);this.setTitle(this.title)},setTitle:function(a){this.headerTitleEl.child("span").dom.innerHTML=a},renderGroupColumnHeaders:function(){var a=this.grid.topAxis;a.rendered=false;a.render(this.innerHd.firstChild)},isMenuDisabled:function(a,b){return true}});Ext.grid.PivotAxis=Ext.extend(Ext.Component,{orientation:"horizontal",defaultHeaderWidth:80,paddingWidth:7,setDimensions:function(a){this.dimensions=a},onRender:function(b,a){var c=this.orientation=="horizontal"?this.renderHorizontalRows():this.renderVerticalRows();this.el=Ext.DomHelper.overwrite(b.dom,{tag:"table",cn:c},true)},renderHorizontalRows:function(){var k=this.buildHeaders(),a=k.length,g=[],c,h,e,d,b;for(d=0;d<a;d++){c=[];h=k[d].items;e=h.length;for(b=0;b<e;b++){c.push({tag:"td",html:h[b].header,colspan:h[b].span})}g[d]={tag:"tr",cn:c}}return g},renderVerticalRows:function(){var b=this.buildHeaders(),k=b.length,a=[],m=[],h,c,l,g,e,d;for(e=0;e<k;e++){c=b[e];g=c.width||80;h=c.items.length;for(d=0;d<h;d++){l=c.items[d];a[l.start]=a[l.start]||[];a[l.start].push({tag:"td",html:l.header,rowspan:l.span,width:Ext.isBorderBox?g:g-this.paddingWidth})}}h=a.length;for(e=0;e<h;e++){m[e]={tag:"tr",cn:a[e]}}return m},getTuples:function(){var b=new Ext.data.Store({});b.data=this.store.data.clone();b.fields=this.store.fields;var l=[],a=this.dimensions,c=a.length,j;for(j=0;j<c;j++){l.push({field:a[j].dataIndex,direction:a[j].direction||"ASC"})}b.sort(l);var e=b.data.items,n=[],k=[],o,h,d,g,m;c=e.length;for(j=0;j<c;j++){d=this.getRecordInfo(e[j]);g=d.data;h="";for(m in g){h+=g[m]+"---"}if(n.indexOf(h)==-1){n.push(h);k.push(d)}}b.destroy();return k},getRecordInfo:function(a){var e=this.dimensions,d=e.length,h={},j,c,b;for(b=0;b<d;b++){j=e[b];c=j.dataIndex;h[c]=a.get(c)}var g=function(i){return function(k){for(var l in i){if(k.get(l)!=i[l]){return false}}return true}};return{data:h,matcher:g(h)}},buildHeaders:function(){var l=this.getTuples(),m=l.length,a=this.dimensions,e,r=a.length,c=[],o,s,n,q,p,b,k,h,g,d;for(g=0;g<r;g++){e=a[g];s=[];p=0;b=0;for(d=0;d<m;d++){o=l[d];k=d==(m-1);n=o.data[e.dataIndex];h=q!=undefined&&q!=n;if(g>0&&d>0){h=h||o.data[a[g-1].dataIndex]!=l[d-1].data[a[g-1].dataIndex]}if(h){s.push({header:q,span:p,start:b});b+=p;p=0}if(k){s.push({header:n,span:p+1,start:b});b+=p;p=0}q=n;p++}c.push({items:s,width:e.width||this.defaultHeaderWidth});q=undefined}return c}});Ext.grid.HeaderDragZone=Ext.extend(Ext.dd.DragZone,{maxDragWidth:120,constructor: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},getDragData:function(c){var a=Ext.lib.Event.getTarget(c),b=this.view.findHeaderCell(a);if(b){return{ddel:b.firstChild,header:b}}return false},onInitDrag:function(a){this.dragHeadersDisabled=this.view.headersDisabled;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(){this.completeDrop()},afterInvalidDrop:function(){this.completeDrop()},completeDrop:function(){var a=this.view,b=this.dragHeadersDisabled;setTimeout(function(){a.headersDisabled=b},50)}});Ext.grid.HeaderDropZone=Ext.extend(Ext.dd.DropZone,{proxyOffsets:[-4,-9],fly:Ext.Element.fly,constructor:function(a,c,b){this.grid=a;this.view=a.getView();this.proxyTop=Ext.DomHelper.append(document.body,{cls:"col-move-top",html:"&#160;"},true);this.proxyBottom=Ext.DomHelper.append(document.body,{cls:"col-move-bottom",html:"&#160;"},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)},getTargetFromEvent:function(c){var a=Ext.lib.Event.getTarget(c),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,k,j){var a=Ext.lib.Event.getPageX(j),g=Ext.lib.Dom.getRegion(k.firstChild),c,i,b=g.top+this.proxyOffsets[1];if((g.right-a)<=(g.right-g.left)/2){c=g.right+this.view.borderWidth;i="after"}else{c=g.left;i="before"}if(this.grid.colModel.isFixed(this.view.getCellIndex(k))){return false}c+=this.proxyOffsets[0];this.proxyTop.setLeftTop(c,b);this.proxyTop.show();if(!this.bottomOffset){this.bottomOffset=this.view.mainHd.getHeight()}this.proxyBottom.setLeftTop(c,b+this.proxyTop.dom.offsetHeight+this.bottomOffset);this.proxyBottom.show();return i},onNodeEnter:function(d,a,c,b){if(b.header!=d){this.positionIndicator(b.header,d,c)}},onNodeOver:function(g,b,d,c){var a=false;if(c.header!=g){a=this.positionIndicator(c.header,g,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,m,g,c){var d=c.header;if(d!=b){var k=this.grid.colModel,j=Ext.lib.Event.getPageX(g),a=Ext.lib.Dom.getRegion(b.firstChild),o=(a.right-j)<=((a.right-a.left)/2)?"after":"before",i=this.view.getCellIndex(d),l=this.view.getCellIndex(b);if(o=="after"){l++}if(i<l){l--}k.moveColumn(i,l);return true}return false}});Ext.grid.GridView.ColumnDragZone=Ext.extend(Ext.grid.HeaderDragZone,{constructor:function(a,b){Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this,a,b,null);this.proxy.el.addClass("x-grid3-col-dd")},handleMouseDown:function(a){},callHandleMouseDown:function(a){Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this,a)}});Ext.grid.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{fly:Ext.Element.fly,constructor: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},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(c){var b=Ext.EventObject.setEvent(c);var a=this.fly(b.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);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=Ext.extend(Ext.util.Observable,{defaultWidth:100,defaultSortable:false,constructor:function(a){if(a.columns){Ext.apply(this,a);this.setConfig(a.columns,true)}else{this.setConfig(a,true)}this.addEvents("widthchange","headerchange","hiddenchange","columnmoved","configchange");Ext.grid.ColumnModel.superclass.constructor.call(this)},getColumnId:function(a){return this.config[a].id},getColumnAt:function(a){return this.config[a]},setConfig:function(d,b){var e,h,a;if(!b){delete this.totalWidth;for(e=0,a=this.config.length;e<a;e++){h=this.config[e];if(h.setEditor){h.setEditor(null)}}}this.defaults=Ext.apply({width:this.defaultWidth,sortable:this.defaultSortable},this.defaults);this.config=d;this.lookup={};for(e=0,a=d.length;e<a;e++){h=Ext.applyIf(d[e],this.defaults);if(Ext.isEmpty(h.id)){h.id=e}if(!h.isColumn){var g=Ext.grid.Column.types[h.xtype||"gridcolumn"];h=new g(h);d[e]=h}this.lookup[h.id]=h}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(e,b){var a=this.config,d=a[e];a.splice(e,1);a.splice(b,0,d);this.dataMap=null;this.fireEvent("columnmoved",this,e,b)},getColumnCount:function(b){var d=this.config.length,e=0,a;if(b===true){for(a=0;a<d;a++){if(!this.isHidden(a)){e++}}return e}return d},getColumnsBy:function(g,e){var b=this.config,h=b.length,a=[],d,j;for(d=0;d<h;d++){j=b[d];if(g.call(e||this,j,d)===true){a[a.length]=j}}return a},isSortable:function(a){return !!this.config[a].sortable},isMenuDisabled:function(a){return !!this.config[a].menuDisabled},getRenderer:function(a){return this.config[a].renderer||Ext.grid.ColumnModel.defaultRenderer},getRendererScope:function(a){return this.config[a].scope},setRenderer:function(a,b){this.config[a].renderer=b},getColumnWidth:function(a){var b=this.config[a].width;if(typeof b!="number"){b=this.defaultWidth}return b},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(d){var e=this.config;for(var b=0,a=e.length;b<a;b++){if(e[b].dataIndex==d){return b}}return -1},isCellEditable:function(b,e){var d=this.config[b],a=d.editable;return !!(a||(!Ext.isDefined(a)&&d.editor))},getCellEditor:function(a,b){return this.config[a].getCellEditor(b)},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 d=this.config[a];if(d.hidden!==b){d.hidden=b;this.totalWidth=null;this.fireEvent("hiddenchange",this,a,b)}},setEditor:function(a,b){this.config[a].setEditor(b)},destroy:function(){var b=this.config.length,a=0;for(;a<b;a++){this.config[a].destroy()}delete this.config;delete this.lookup;this.purgeListeners()},setState:function(a,b){b=Ext.applyIf(b,this.defaults);Ext.apply(this.config[a],b)}});Ext.grid.ColumnModel.defaultRenderer=function(a){if(typeof a=="string"&&a.length<1){return"&#160;"}return a};Ext.grid.AbstractSelectionModel=Ext.extend(Ext.util.Observable,{constructor:function(){this.locked=false;Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)},init:function(a){this.grid=a;if(this.lockOnInit){delete this.lockOnInit;this.locked=false;this.lock()}this.initEvents()},lock:function(){if(!this.locked){this.locked=true;var a=this.grid;if(a){a.getView().on({scope:this,beforerefresh:this.sortUnLock,refresh:this.sortLock})}else{this.lockOnInit=true}}},sortLock:function(){this.locked=true},sortUnLock:function(){this.locked=false},unlock:function(){if(this.locked){this.locked=false;var a=this.grid,b;if(a){b=a.getView();b.un("beforerefresh",this.sortUnLock,this);b.un("refresh",this.sortLock,this)}else{delete this.lockOnInit}}},isLocked:function(){return this.locked},destroy:function(){this.unlock();this.purgeListeners()}});Ext.grid.RowSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{singleSelect:false,constructor: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)},initEvents:function(){if(!this.grid.enableDragDrop&&!this.grid.enableDrag){this.grid.on("rowmousedown",this.handleMouseDown,this)}this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{up:this.onKeyPress,down:this.onKeyPress,scope:this});this.grid.getView().on({scope:this,refresh:this.onRefresh,rowupdated:this.onRowUpdated,rowremoved:this.onRemove})},onKeyPress:function(g,b){var a=b=="up",h=a?"selectPrevious":"selectNext",d=a?-1:1,c;if(!g.shiftKey||this.singleSelect){this[h](false)}else{if(this.last!==false&&this.lastActive!==false){c=this.last;this.selectRange(this.last,this.lastActive+d);this.grid.getView().focusRow(this.lastActive);if(c!==false){this.last=c}}else{this.selectFirstRow()}}},onRefresh:function(){var g=this.grid.store,d=this.getSelections(),c=0,a=d.length,b,e;this.silent=true;this.clearSelections(true);for(;c<a;c++){e=d[c];if((b=g.indexOfId(e.id))!=-1){this.selectRow(b,true)}}if(d.length!=this.selections.getCount()){this.fireEvent("selectionchange",this)}this.silent=false},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,c=0,a=b.length;for(;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(),b=0,a=c.length;for(;b<a;b++){if(e.call(d||this,c[b],b)===false){return false}}return true},clearSelections:function(a){if(this.isLocked()){return}if(a!==true){var c=this.grid.store,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.isLocked()){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=Ext.isNumber(a)?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,i,h){if(h.button!==0||this.isLocked()){return}var a=this.grid.getView();if(h.shiftKey&&!this.singleSelect&&this.last!==false){var c=this.last;this.selectRange(c,i,h.ctrlKey);this.last=c;a.focusRow(i)}else{var b=this.isSelected(i);if(h.ctrlKey&&b){this.deselectRow(i)}else{if(!b||this.getCount()>1){this.selectRow(i,h.ctrlKey||h.shiftKey);a.focusRow(i)}}}},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){var c;if(this.isLocked()){return}if(!d){this.clearSelections()}if(b<=a){for(c=b;c<=a;c++){this.selectRow(c,true)}}else{for(c=b;c>=a;c--){this.selectRow(c,true)}}},deselectRange:function(c,b,a){if(this.isLocked()){return}for(var d=c;d<=b;d++){this.deselectRow(d,a)}},selectRow:function(b,d,a){if(this.isLocked()||(b<0||b>=this.grid.store.getCount())||(d&&this.isSelected(b))){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)}if(!this.silent){this.fireEvent("rowselect",this,b,c);this.fireEvent("selectionchange",this)}}},deselectRow:function(b,a){if(this.isLocked()){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)}},acceptsNav:function(c,b,a){return !a.isHidden(b)&&a.isCellEditable(b,c)},onEditorKey:function(n,l){var d=l.getKey(),h,i=this.grid,p=i.lastEdit,j=i.activeEditor,b=l.shiftKey,o,p,a,m;if(d==l.TAB){l.stopEvent();j.completeEdit();if(b){h=i.walkCells(j.row,j.col-1,-1,this.acceptsNav,this)}else{h=i.walkCells(j.row,j.col+1,1,this.acceptsNav,this)}}else{if(d==l.ENTER){if(this.moveEditorOnEnter!==false){if(b){h=i.walkCells(p.row-1,p.col,-1,this.acceptsNav,this)}else{h=i.walkCells(p.row+1,p.col,1,this.acceptsNav,this)}}}}if(h){a=h[0];m=h[1];this.onEditorSelect(a,p.row);if(i.isEditor&&i.editing){o=i.activeEditor;if(o&&o.field.triggerBlur){o.field.triggerBlur()}}i.startEditing(a,m)}},onEditorSelect:function(b,a){if(a!=b){this.selectRow(b)}},destroy:function(){Ext.destroy(this.rowNav);this.rowNav=null;Ext.grid.RowSelectionModel.superclass.destroy.call(this)}});Ext.grid.Column=Ext.extend(Ext.util.Observable,{isColumn:true,constructor:function(b){Ext.apply(this,b);if(Ext.isString(this.renderer)){this.renderer=Ext.util.Format[this.renderer]}else{if(Ext.isObject(this.renderer)){this.scope=this.renderer.scope;this.renderer=this.renderer.fn}}if(!this.scope){this.scope=this}var a=this.editor;delete this.editor;this.setEditor(a);this.addEvents("click","contextmenu","dblclick","mousedown");Ext.grid.Column.superclass.constructor.call(this)},processEvent:function(b,d,c,g,a){return this.fireEvent(b,this,c,g,d)},destroy:function(){if(this.setEditor){this.setEditor(null)}this.purgeListeners()},renderer:function(a){return a},getEditor:function(a){return this.editable!==false?this.editor:null},setEditor:function(b){var a=this.editor;if(a){if(a.gridEditor){a.gridEditor.destroy();delete a.gridEditor}else{a.destroy()}}this.editor=null;if(b){if(!b.isXType){b=Ext.create(b,"textfield")}this.editor=b}},getCellEditor:function(b){var a=this.getEditor(b);if(a){if(!a.startEdit){if(!a.gridEditor){a.gridEditor=new Ext.grid.GridEditor(a)}a=a.gridEditor}}return a}});Ext.grid.BooleanColumn=Ext.extend(Ext.grid.Column,{trueText:"true",falseText:"false",undefinedText:"&#160;",constructor:function(a){Ext.grid.BooleanColumn.superclass.constructor.call(this,a);var c=this.trueText,d=this.falseText,b=this.undefinedText;this.renderer=function(e){if(e===undefined){return b}if(!e||e==="false"){return d}return c}}});Ext.grid.NumberColumn=Ext.extend(Ext.grid.Column,{format:"0,000.00",constructor:function(a){Ext.grid.NumberColumn.superclass.constructor.call(this,a);this.renderer=Ext.util.Format.numberRenderer(this.format)}});Ext.grid.DateColumn=Ext.extend(Ext.grid.Column,{format:"m/d/Y",constructor:function(a){Ext.grid.DateColumn.superclass.constructor.call(this,a);this.renderer=Ext.util.Format.dateRenderer(this.format)}});Ext.grid.TemplateColumn=Ext.extend(Ext.grid.Column,{constructor:function(a){Ext.grid.TemplateColumn.superclass.constructor.call(this,a);var b=(!Ext.isPrimitive(this.tpl)&&this.tpl.compile)?this.tpl:new Ext.XTemplate(this.tpl);this.renderer=function(d,e,c){return b.apply(c.data)};this.tpl=b}});Ext.grid.ActionColumn=Ext.extend(Ext.grid.Column,{header:"&#160;",actionIdRe:/x-action-col-(\d+)/,altText:"",constructor:function(b){var g=this,c=b.items||(g.items=[g]),a=c.length,d,e;Ext.grid.ActionColumn.superclass.constructor.call(g,b);g.renderer=function(h,i){h=Ext.isFunction(b.renderer)?b.renderer.apply(this,arguments)||"":"";i.css+=" x-action-col-cell";for(d=0;d<a;d++){e=c[d];h+='<img alt="'+(e.altText||g.altText)+'" src="'+(e.icon||Ext.BLANK_IMAGE_URL)+'" class="x-action-col-icon x-action-col-'+String(d)+" "+(e.iconCls||"")+" "+(Ext.isFunction(e.getClass)?e.getClass.apply(e.scope||this.scope||this,arguments):"")+'"'+((e.tooltip)?' ext:qtip="'+e.tooltip+'"':"")+" />"}return h}},destroy:function(){delete this.items;delete this.renderer;return Ext.grid.ActionColumn.superclass.destroy.apply(this,arguments)},processEvent:function(c,i,d,j,b){var a=i.getTarget().className.match(this.actionIdRe),h,g;if(a&&(h=this.items[parseInt(a[1],10)])){if(c=="click"){(g=h.handler||this.handler)&&g.call(h.scope||this.scope||this,d,j,b,h,i)}else{if((c=="mousedown")&&(h.stopSelection!==false)){return false}}}return Ext.grid.ActionColumn.superclass.processEvent.apply(this,arguments)}});Ext.grid.Column.types={gridcolumn:Ext.grid.Column,booleancolumn:Ext.grid.BooleanColumn,numbercolumn:Ext.grid.NumberColumn,datecolumn:Ext.grid.DateColumn,templatecolumn:Ext.grid.TemplateColumn,actioncolumn:Ext.grid.ActionColumn};Ext.grid.RowNumberer=Ext.extend(Object,{header:"",width:23,sortable:false,constructor:function(a){Ext.apply(this,a);if(this.rowspan){this.renderer=this.renderer.createDelegate(this)}},fixed:true,hideable:false,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:'<div class="x-grid3-hd-checker">&#160;</div>',width:20,sortable:false,menuDisabled:true,fixed:true,hideable:false,dataIndex:"",id:"checker",isColumn:true,constructor:function(){Ext.grid.CheckboxSelectionModel.superclass.constructor.apply(this,arguments);if(this.checkOnly){this.handleMouseDown=Ext.emptyFn}},initEvents:function(){Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on("render",function(){Ext.fly(this.grid.getView().innerHd).on("mousedown",this.onHdMouseDown,this)},this)},processEvent:function(b,d,c,g,a){if(b=="mousedown"){this.onMouseDown(d,d.getTarget());return false}else{return Ext.grid.Column.prototype.processEvent.apply(this,arguments)}},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);this.grid.getView().focusRow(a)}}}},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'<div class="x-grid3-row-checker">&#160;</div>'},onEditorSelect:function(b,a){if(a!=b&&!this.checkOnly){this.selectRow(b)}}});Ext.grid.CellSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{constructor:function(a){Ext.apply(this,a);this.selection=null;this.addEvents("beforecellselect","cellselect","selectionchange");Ext.grid.CellSelectionModel.superclass.constructor.call(this)},initEvents:function(){this.grid.on("cellmousedown",this.handleMouseDown,this);this.grid.on(Ext.EventManager.getKeyEvent(),this.handleKeyDown,this);this.grid.getView().on({scope:this,refresh:this.onViewChange,rowupdated:this.onRowUpdated,beforerowremoved:this.clearSelections,beforerowsinserted:this.clearSelections});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(g,c,b,e,d){if(this.fireEvent("beforecellselect",this,g,c)!==false){this.clearSelections();d=d||this.grid.store.getAt(g);this.selection={record:d,cell:[g,c]};if(!b){var a=this.grid.getView();a.onCellSelect(g,c);if(e!==true){a.focusCell(g,c)}}this.fireEvent("cellselect",this,g,c);this.fireEvent("selectionchange",this,this.selection)}},isSelectable:function(c,b,a){return !a.isHidden(b)},onEditorKey:function(b,a){if(a.getKey()==a.TAB){this.handleKeyDown(a)}},handleKeyDown:function(j){if(!j.isNavKeyPress()){return}var d=j.getKey(),i=this.grid,p=this.selection,b=this,m=function(g,c,e){return i.walkCells(g,c,e,i.isEditor&&i.editing?b.acceptsNav:b.isSelectable,b)},o,h,a,l,n;switch(d){case j.ESC:case j.PAGE_UP:case j.PAGE_DOWN:break;default:j.stopEvent();break}if(!p){o=m(0,0,1);if(o){this.select(o[0],o[1])}return}o=p.cell;a=o[0];l=o[1];switch(d){case j.TAB:if(j.shiftKey){h=m(a,l-1,-1)}else{h=m(a,l+1,1)}break;case j.DOWN:h=m(a+1,l,1);break;case j.UP:h=m(a-1,l,-1);break;case j.RIGHT:h=m(a,l+1,1);break;case j.LEFT:h=m(a,l-1,-1);break;case j.ENTER:if(i.isEditor&&!i.editing){i.startEditing(a,l);return}break}if(h){a=h[0];l=h[1];this.select(a,l);if(i.isEditor&&i.editing){n=i.activeEditor;if(n&&n.field.triggerBlur){n.field.triggerBlur()}i.startEditing(a,l)}}},acceptsNav:function(c,b,a){return !a.isHidden(b)&&a.isCellEditable(b,c)}});Ext.grid.EditorGridPanel=Ext.extend(Ext.grid.GridPanel,{clicksToEdit:2,forceValidation:false,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.getGridEl().on("mousewheel",this.stopEditing.createDelegate(this,[true]),this);this.on("columnresize",this.stopEditing,this,[true]);if(this.clicksToEdit==1){this.on("cellclick",this.onCellDblClick,this)}else{var a=this.getView();if(this.clicksToEdit=="auto"&&a.mainBody){a.mainBody.on("mousedown",this.onAutoEditClick,this)}this.on("celldblclick",this.onCellDblClick,this)}},onResize:function(){Ext.grid.EditorGridPanel.superclass.onResize.apply(this,arguments);var a=this.activeEditor;if(this.editing&&a){a.realign(true)}},onCellDblClick:function(b,c,a){this.startEditing(c,a)},onAutoEditClick:function(c,b){if(c.button!==0){return}var g=this.view.findRowIndex(b),a=this.view.findCellIndex(b);if(g!==false&&a!==false){this.stopEditing();if(this.selModel.getSelectedCell){var d=this.selModel.getSelectedCell();if(d&&d[0]===g&&d[1]===a){this.startEditing(g,a)}}else{if(this.selModel.isSelected(g)){this.startEditing(g,a)}}}},onEditComplete:function(b,d,a){this.editing=false;this.lastActiveEditor=this.activeEditor;this.activeEditor=null;var c=b.record,h=this.colModel.getDataIndex(b.col);d=this.postEditValue(d,a,c,h);if(this.forceValidation===true||String(d)!==String(a)){var g={grid:this,record:c,field:h,originalValue:a,value:d,row:b.row,column:b.col,cancel:false};if(this.fireEvent("validateedit",g)!==false&&!g.cancel&&String(d)!==String(a)){c.set(h,g.value);delete g.cancel;this.fireEvent("afteredit",g)}}this.view.focusCell(b.row,b.col)},startEditing:function(i,c){this.stopEditing();if(this.colModel.isCellEditable(c,i)){this.view.ensureVisible(i,c,true);var d=this.store.getAt(i),h=this.colModel.getDataIndex(c),g={grid:this,record:d,field:h,value:d.data[h],row:i,column:c,cancel:false};if(this.fireEvent("beforeedit",g)!==false&&!g.cancel){this.editing=true;var b=this.colModel.getCellEditor(c,i);if(!b){return}if(!b.rendered){b.parentEl=this.view.getEditorParent(b);b.on({scope:this,render:{fn:function(e){e.field.focus(false,true)},single:true,scope:this},specialkey:function(k,j){this.getSelectionModel().onEditorKey(k,j)},complete:this.onEditComplete,canceledit:this.stopEditing.createDelegate(this,[true])})}Ext.apply(b,{row:i,col:c,record:d});this.lastEdit={row:i,col:c};this.activeEditor=b;b.selectSameEditor=(this.activeEditor==this.lastActiveEditor);var a=this.preEditValue(d,h);b.startEdit(this.view.getCell(i,c).firstChild,Ext.isDefined(a)?a:"");(function(){delete b.selectSameEditor}).defer(50)}}},preEditValue:function(a,c){var b=a.data[c];return this.autoEncode&&Ext.isString(b)?Ext.util.Format.htmlDecode(b):b},postEditValue:function(c,a,b,d){return this.autoEncode&&Ext.isString(c)?Ext.util.Format.htmlEncode(c):c},stopEditing:function(b){if(this.editing){var a=this.lastActiveEditor=this.activeEditor;if(a){a[b===true?"cancelEdit":"completeEdit"]();this.view.focusCell(a.row,a.col)}this.activeEditor=null}this.editing=false}});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=Ext.extend(Ext.util.Observable,{constructor: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)},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){return Ext.isPrimitive(a)||Ext.isDate(a)},setValue:function(d,c,a){var b=this.getRec(d);if(b){b.set("value",c);this.source[d]=c}else{if(a){this.source[d]=c;b=new Ext.grid.PropertyRecord({name:d,value:c},d);this.store.add(b)}}},remove:function(b){var a=this.getRec(b);if(a){this.store.remove(a);delete this.source[b]}},getRec:function(a){return this.store.getById(a)},getSource:function(){return this.source}});Ext.grid.PropertyColumnModel=Ext.extend(Ext.grid.ColumnModel,{nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",trueText:"true",falseText:"false",constructor:function(c,b){var d=Ext.grid,e=Ext.form;this.grid=c;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;var a=new e.Field({autoCreate:{tag:"select",children:[{tag:"option",value:"true",html:this.trueText},{tag:"option",value:"false",html:this.falseText}]},getValue:function(){return this.el.dom.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,{autoSize:"both"})};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this)},renderDate:function(a){return a.dateFormat(this.dateFormat)},renderBool:function(a){return this[a?"trueText":"falseText"]},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(d,b,c){var a=this.grid.customRenderers[c.get("name")];if(a){return a.apply(this,arguments)}var e=d;if(Ext.isDate(d)){e=this.renderDate(d)}else{if(typeof d=="boolean"){e=this.renderBool(d)}}return Ext.util.Format.htmlEncode(e)},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),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}}}},destroy:function(){Ext.grid.PropertyColumnModel.superclass.destroy.call(this);this.destroyEditors(this.editors);this.destroyEditors(this.grid.customEditors)},destroyEditors:function(b){for(var a in b){Ext.destroy(b[a])}}});Ext.grid.PropertyGrid=Ext.extend(Ext.grid.EditorGridPanel,{enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,viewConfig:{forceFit:true},initComponent:function(){this.customRenderers=this.customRenderers||{};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.mon(this.selModel,"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()},setProperty:function(c,b,a){this.propStore.setValue(c,b,a)},removeProperty:function(a){this.propStore.remove(a)}});Ext.reg("propertygrid",Ext.grid.PropertyGrid);Ext.grid.GroupingView=Ext.extend(Ext.grid.GridView,{groupByText:"Group By This Field",showGroupsText:"Show in Groups",hideGroupedColumn:false,showGroupName:true,startCollapsed:false,enableGrouping:true,enableGroupingMenu:true,enableNoGroups:true,emptyGroupText:"(None)",ignoreAdd:false,groupTextTpl:"{text}",groupMode:"value",cancelEditOnToggle:true,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('<div id="{groupId}" class="x-grid-group {cls}">','<div id="{groupId}-hd" class="x-grid-group-hd" style="{style}"><div class="x-grid-group-title">',this.groupTextTpl,"</div></div>",'<div id="{groupId}-bd" class="x-grid-group-body">')}this.startGroup.compile();if(!this.endGroup){this.endGroup="</div></div>"}},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(d,a,b){if(this.canGroup()&&!this.ignoreAdd){var c=this.getScrollState();this.fireEvent("beforerowsinserted",d,b,b+(a.length-1));this.refresh();this.restoreScroll(c);this.fireEvent("rowsinserted",d,b,b+(a.length-1))}else{if(!this.canGroup()){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,a=this.hmenu.items,b=this.cm.config[this.hdCtxIndex].groupable===false;if((c=a.get("groupBy"))){c.setDisabled(b)}if((c=a.get("showGroups"))){c.setDisabled(b);c.setChecked(this.canGroup(),true)}},renderUI:function(){var a=Ext.grid.GroupingView.superclass.renderUI.call(this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{itemId:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({itemId:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}return a},processEvent:function(b,i){Ext.grid.GroupingView.superclass.processEvent.call(this,b,i);var h=i.getTarget(".x-grid-group-hd",this.mainBody);if(h){var g=this.getGroupField(),d=this.getPrefix(g),a=h.id.substring(d.length),c=new RegExp("gp-"+Ext.escapeRe(g)+"--hd");a=a.substr(0,a.length-3);if(a||c.test(h.id)){this.grid.fireEvent("group"+b,this.grid,g,a,i)}if(b=="mousedown"&&i.button==0){this.toggleGroup(h.parentNode)}}},onGroupByClick:function(){var a=this.grid;this.enableGrouping=true;a.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));a.fireEvent("groupchange",a,a.store.getGroupState());this.beforeMenuShow();this.refresh()},onShowGroupsClick:function(a,b){this.enableGrouping=b;if(b){this.onGroupByClick()}else{this.grid.store.clearGrouping();this.grid.fireEvent("groupchange",this,null)}},toggleRowIndex:function(c,a){if(!this.canGroup()){return}var b=this.getRow(c);if(b){this.toggleGroup(this.findGroup(b),a)}},toggleGroup:function(c,b){var a=Ext.get(c),d=Ext.util.Format.htmlEncode(a.id);b=Ext.isDefined(b)?b:a.hasClass("x-grid-group-collapsed");if(this.state[d]!==b){if(this.cancelEditOnToggle!==false){this.grid.stopEditing(true)}this.state[d]=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)},getGroup:function(a,e,i,j,b,h){var c=this.cm.config[b],d=i?i.call(c.scope,a,{},e,j,b,h):String(a);if(d===""||d==="&#160;"){d=c.emptyGroupText||this.emptyGroupText}return d},getGroupField:function(){return this.grid.store.getGroupState()},afterRender:function(){if(!this.ds||!this.cm){return}Ext.grid.GroupingView.superclass.afterRender.call(this);if(this.grid.deferRowRender){this.updateGroupWidths()}},afterRenderUI:function(){Ext.grid.GroupingView.superclass.afterRenderUI.call(this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{itemId:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({itemId:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}},renderRows:function(){var a=this.getGroupField();var e=!!a;if(this.hideGroupedColumn){var b=this.cm.findColumnIndex(a),d=Ext.isDefined(this.lastGroupField);if(!e&&d){this.mainBody.update("");this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField),false);delete this.lastGroupField}else{if(e&&!d){this.lastGroupField=a;this.cm.setHidden(b,true)}else{if(e&&d&&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(c,h,q,a,p,s){if(h.length<1){return""}if(!this.canGroup()||this.isUpdating){return Ext.grid.GroupingView.superclass.doRender.apply(this,arguments)}var z=this.getGroupField(),o=this.cm.findColumnIndex(z),w,j="width:"+this.getTotalWidth()+";",e=this.cm.config[o],b=e.groupRenderer||e.renderer,t=this.showGroupName?(e.groupName||e.header)+": ":"",y=[],l,u,v,n;for(u=0,v=h.length;u<v;u++){var k=a+u,m=h[u],d=m.data[z];w=this.getGroup(d,m,b,k,o,q);if(!l||l.group!=w){n=this.constructId(d,z,o);this.state[n]=!(Ext.isDefined(this.state[n])?!this.state[n]:this.startCollapsed);l={group:w,gvalue:d,text:t+w,groupId:n,startRow:k,rs:[m],cls:this.state[n]?"":"x-grid-group-collapsed",style:j};y.push(l)}else{l.rs.push(m)}m._groupId=n}var x=[];for(u=0,v=y.length;u<v;u++){w=y[u];this.doGroupStart(x,w,c,q,p);x[x.length]=Ext.grid.GroupingView.superclass.doRender.call(this,c,w.rs,q,w.startRow,p,s);this.doGroupEnd(x,w,c,q,p)}return x.join("")},getGroupId:function(a){var b=this.getGroupField();return this.constructId(a,b,this.cm.findColumnIndex(b))},constructId:function(c,e,a){var b=this.cm.config[a],d=b.groupRenderer||b.renderer,g=(this.groupMode=="value")?c:this.getGroup(c,{data:{}},d,0,a,this.ds);return this.getPrefix(e)+Ext.util.Format.htmlEncode(g)},canGroup:function(){return this.enableGrouping&&!!this.getGroupField()},getPrefix:function(a){return this.grid.getGridEl().id+"-gp-"+a+"-"},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.canGroup()){return Ext.grid.GroupingView.superclass.getRows.call(this)}var k=[],c=this.getGroups(),h,e=0,a=c.length,d,b;for(;e<a;++e){h=c[e].childNodes[1];if(h){h=h.childNodes;for(d=0,b=h.length;d<b;++d){k[k.length]=h[d]}}}return k},updateGroupWidths:function(){if(!this.canGroup()||!this.hasRows()){return}var c=Math.max(this.cm.getTotalWidth(),this.el.dom.offsetWidth-this.getScrollOffset())+"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){Ext.grid.GroupingView.superclass.onColumnWidthUpdated.call(this,c,a,b);this.updateGroupWidths()},onAllColumnWidthsUpdated:function(a,b){Ext.grid.GroupingView.superclass.onAllColumnWidthsUpdated.call(this,a,b);this.updateGroupWidths()},onColumnHiddenUpdated:function(b,c,a){Ext.grid.GroupingView.superclass.onColumnHiddenUpdated.call(this,b,c,a);this.updateGroupWidths()},onLayout:function(){this.updateGroupWidths()},onBeforeRowSelect:function(b,a){this.toggleRowIndex(a,true)}});Ext.grid.GroupingView.GROUP_ID=1000;\r
17301 </script>\r
17302 \r
17303 <script id="ga" type="x">\r
17304 (function(){var aa="_gat",ba="_gaq",r=true,v=false,w=undefined,ca="4.6.5",x="length",y="cookie",A="location",B="&",C="=",D="__utma=",E="__utmb=",G="__utmc=",da="__utmk=",H="__utmv=",J="__utmz=",K="__utmx=",L="GASO=";var N=function(i){return w==i||"-"==i||""==i},ea=function(i){return i[x]>0&&" \n\r\t".indexOf(i)>-1},P=function(i,l,g){var t="-",k;if(!N(i)&&!N(l)&&!N(g)){k=i.indexOf(l);if(k>-1){g=i.indexOf(g,k);if(g<0)g=i[x];t=O(i,k+l.indexOf(C)+1,g)}}return t},Q=function(i){var l=v,g=0,t,k;if(!N(i)){l=r;for(t=0;t<i[x];t++){k=i.charAt(t);g+="."==k?1:0;l=l&&g<=1&&(0==t&&"-"==k||".0123456789".indexOf(k)>-1)}}return l},S=function(i,l){var g=encodeURIComponent;return g instanceof Function?l?encodeURI(i):g(i):escape(i)},\r
17305 T=function(i,l){var g=decodeURIComponent,t;i=i.split("+").join(" ");if(g instanceof Function)try{t=l?decodeURI(i):g(i)}catch(k){t=unescape(i)}else t=unescape(i);return t},U=function(i,l){return i.indexOf(l)>-1},V=function(i,l){i[i[x]]=l},W=function(i){return i.toLowerCase()},X=function(i,l){return i.split(l)},fa=function(i,l){return i.indexOf(l)},O=function(i,l,g){g=w==g?i[x]:g;return i.substring(l,g)},ga=function(i,l){return i.join(l)},ia=function(i){var l=1,g=0,t;if(!N(i)){l=0;for(t=i[x]-1;t>=0;t--){g=\r
17306 i.charCodeAt(t);l=(l<<6&268435455)+g+(g<<14);g=l&266338304;l=g!=0?l^g>>21:l}}return l},ja=function(){var i=window,l=w;if(i&&i.gaGlobal&&i.gaGlobal.hid)l=i.gaGlobal.hid;else{l=Y();i.gaGlobal=i.gaGlobal?i.gaGlobal:{};i.gaGlobal.hid=l}return l},Y=function(){return Math.round(Math.random()*2147483647)},Z={Ha:function(i,l){this.bb=i;this.nb=l},ib:v,_gasoDomain:w,_gasoCPath:w};Z.Gb=function(){function i(k){return new t(k[0],k[1])}function l(k){var p=[];k=k.split(",");var f;for(f=0;f<k.length;++f)p.push(i(k[f].split(":")));return p}var g=this,t=Z.Ha;g.Ia="utm_campaign";g.Ja="utm_content";g.Ka="utm_id";g.La="utm_medium";g.Ma="utm_nooverride";g.Na="utm_source";g.Oa="utm_term";g.Pa="gclid";g.ba=0;g.z=0;g.Ta=15768E6;g.sb=18E5;g.v=63072E6;g.ta=[];g.va=[];g.nc="cse";g.oc="q";g.ob=5;g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");\r
17307 g.t=w;g.lb=v;g.h="/";g.U=100;g.oa="/__utm.gif";g.ga=1;g.ha=1;g.u="|";g.fa=1;g.da=1;g.Ra=1;g.b="auto";g.I=1;g.ra=1E3;g.Jc=10;g.Pb=10;g.Kc=0.2;g.o=w;g.a=document;g.e=window};Z.Hb=function(i){function l(d,a,j,c){var n="",s=0;n=P(d,"2"+a,";");if(!N(n)){d=n.indexOf("^"+j+".");if(d<0)return["",0];n=O(n,d+j[x]+2);if(n.indexOf("^")>0)n=n.split("^")[0];j=n.split(":");n=j[1];s=parseInt(j[0],10);if(!c&&s<p.r)n=""}if(N(n))n="";return[n,s]}function g(d,a){return"^"+ga([[a,d[1]].join("."),d[0]],":")}function t(d,a){f.a[y]=d+"; path="+f.h+"; "+a+p.fb()}function k(d){var a=new Date;d=new Date(a.getTime()+d);return"expires="+d.toGMTString()+"; "}var p=this,f=i;p.r=(new Date).getTime();\r
17308 var h=[D,E,G,J,H,K,L];p.k=function(){var d=f.a[y];return f.o?p.Wb(d,f.o):d};p.Wb=function(d,a){var j=[],c,n;for(c=0;c<h[x];c++){n=l(d,h[c],a)[0];N(n)||(j[j[x]]=h[c]+n+";")}return j.join("")};p.l=function(d,a,j){var c=j>0?k(j):"";if(f.o){a=p.kc(f.a[y],d,f.o,a,j);d="2"+d;c=j>0?k(f.v):""}t(d+a,c)};p.kc=function(d,a,j,c,n){var s="";n=n||f.v;c=g([c,p.r+n*1],j);s=P(d,"2"+a,";");if(!N(s)){d=g(l(d,a,j,r),j);s=ga(s.split(d),"");return s=c+s}return c};p.fb=function(){return N(f.b)?"":"domain="+f.b+";"}};Z.$=function(i){function l(b){b=b instanceof Array?b.join("."):"";return N(b)?"-":b}function g(b,e){var o=[];if(!N(b)){o=b.split(".");if(e)for(b=0;b<o[x];b++)Q(o[b])||(o[b]="-")}return o}function t(b,e,o){var m=c.M,q,u;for(q=0;q<m[x];q++){u=m[q][0];u+=N(e)?e:e+m[q][4];m[q][2](P(b,u,o))}}var k,p,f,h,d,a,j,c=this,n,s=i;c.j=new Z.Hb(i);c.kb=function(){return w==n||n==c.P()};c.k=function(){return c.j.k()};c.ma=function(){return d?d:"-"};c.vb=function(b){d=b};c.za=function(b){n=Q(b)?b*1:"-"};c.la=function(){return l(a)};\r
17309 c.Aa=function(b){a=g(b)};c.Vb=function(){c.j.l(H,"",-1)};c.lc=function(){return n?n:"-"};c.fb=function(){return N(s.b)?"":"domain="+s.b+";"};c.ja=function(){return l(k)};c.tb=function(b){k=g(b,1)};c.C=function(){return l(p)};c.ya=function(b){p=g(b,1)};c.ka=function(){return l(f)};c.ub=function(b){f=g(b,1)};c.na=function(){return l(h)};c.wb=function(b){h=g(b);for(b=0;b<h[x];b++)if(b<4&&!Q(h[b]))h[b]="-"};c.fc=function(){return j};c.Dc=function(b){j=b};c.Sb=function(){k=[];p=[];f=[];h=[];d=w;a=[];n=\r
17310 w};c.P=function(){var b="",e;for(e=0;e<c.M[x];e++)b+=c.M[e][1]();return ia(b)};c.ua=function(b){var e=c.k(),o=v;if(e){t(e,b,";");c.za(c.P());o=r}return o};c.zc=function(b){t(b,"",B);c.za(P(b,da,B))};c.Hc=function(){var b=c.M,e=[],o;for(o=0;o<b[x];o++)V(e,b[o][0]+b[o][1]());V(e,da+c.P());return e.join(B)};c.Nc=function(b,e){var o=c.M,m=s.h;c.ua(b);s.h=e;for(b=0;b<o[x];b++)N(o[b][1]())||o[b][3]();s.h=m};c.Cb=function(){c.j.l(D,c.ja(),s.v)};c.Ea=function(){c.j.l(E,c.C(),s.sb)};c.Db=function(){c.j.l(G,\r
17311 c.ka(),0)};c.Ga=function(){c.j.l(J,c.na(),s.Ta)};c.Eb=function(){c.j.l(K,c.ma(),s.v)};c.Fa=function(){c.j.l(H,c.la(),s.v)};c.Oc=function(){c.j.l(L,c.fc(),0)};c.M=[[D,c.ja,c.tb,c.Cb,"."],[E,c.C,c.ya,c.Ea,""],[G,c.ka,c.ub,c.Db,""],[K,c.ma,c.vb,c.Eb,""],[J,c.na,c.wb,c.Ga,"."],[H,c.la,c.Aa,c.Fa,"."]]};Z.Kb=function(i){var l=this,g=i,t=new Z.$(g),k=function(){},p=function(f){var h=(new Date).getTime(),d;d=(h-f[3])*(g.Kc/1E3);if(d>=1){f[2]=Math.min(Math.floor(f[2]*1+d),g.Pb);f[3]=h}return f};l.H=function(f,h,d,a,j,c){var n,s=g.I,b=g.a[A];t.ua(d);n=X(t.C(),".");if(n[1]<500||a){if(j)n=p(n);if(a||!j||n[2]>=1){if(!a&&j)n[2]=n[2]*1-1;n[1]=n[1]*1+1;f="?utmwv="+ca+"&utmn="+Y()+(N(b.hostname)?"":"&utmhn="+S(b.hostname))+(g.U==100?"":"&utmsp="+S(g.U))+f;if(0==s||2==s){a=2==s?k:c||k;l.$a(g.oa+f,a)}if(1==s||\r
17312 2==s){f=("https:"==b.protocol?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif")+f+"&utmac="+h+"&utmcc="+l.ac(d);if(ka)f+="&gaq=1";l.$a(f,c)}}}t.ya(n.join("."));t.Ea()};l.$a=function(f,h){var d=new Image(1,1);d.src=f;d.onload=function(){d.onload=null;(h||k)()}};l.ac=function(f){var h=[],d=[D,J,H,K],a,j=t.k(),c;for(a=0;a<d[x];a++){c=P(j,d[a]+f,";");if(!N(c)){if(d[a]==H){c=X(c.split(f+".")[1],"|")[0];if(N(c))continue;c=f+"."+c}V(h,d[a]+c+";")}}return S(h.join("+"))}};Z.n=function(){var i=this;i.Y=[];i.hb=function(l){var g,t=i.Y,k;for(k=0;k<t.length;k++)g=l==t[k].q?t[k]:g;return g};i.Ob=function(l,g,t,k,p,f,h,d){var a=i.hb(l);if(w==a){a=new Z.n.Mb(l,g,t,k,p,f,h,d);V(i.Y,a)}else{a.Qa=g;a.Ab=t;a.zb=k;a.xb=p;a.Xa=f;a.yb=h;a.Za=d}return a}};Z.n.Lb=function(i,l,g,t,k,p){var f=this;f.Bb=i;f.Ba=l;f.D=g;f.Va=t;f.pb=k;f.qb=p;f.Ca=function(){return"&"+["utmt=item","tid="+S(f.Bb),"ipc="+S(f.Ba),"ipn="+S(f.D),"iva="+S(f.Va),"ipr="+S(f.pb),"iqt="+S(f.qb)].join("&utm")}};\r
17313 Z.n.Mb=function(i,l,g,t,k,p,f,h){var d=this;d.q=i;d.Qa=l;d.Ab=g;d.zb=t;d.xb=k;d.Xa=p;d.yb=f;d.Za=h;d.R=[];d.Nb=function(a,j,c,n,s){var b=d.gc(a),e=d.q;if(w==b)V(d.R,new Z.n.Lb(e,a,j,c,n,s));else{b.Bb=e;b.Ba=a;b.D=j;b.Va=c;b.pb=n;b.qb=s}};d.gc=function(a){var j,c=d.R,n;for(n=0;n<c.length;n++)j=a==c[n].Ba?c[n]:j;return j};d.Ca=function(){return"&"+["utmt=tran","id="+S(d.q),"st="+S(d.Qa),"to="+S(d.Ab),"tx="+S(d.zb),"sp="+S(d.xb),"ci="+S(d.Xa),"rg="+S(d.yb),"co="+S(d.Za)].join("&utmt")}};Z.Fb=function(i){function l(){var f,h,d;h="ShockwaveFlash";var a="$version",j=k.d?k.d.plugins:w;if(j&&j[x]>0)for(f=0;f<j[x]&&!d;f++){h=j[f];if(U(h.name,"Shockwave Flash"))d=h.description.split("Shockwave Flash ")[1]}else{h=h+"."+h;try{f=new ActiveXObject(h+".7");d=f.GetVariable(a)}catch(c){}if(!d)try{f=new ActiveXObject(h+".6");d="WIN 6,0,21,0";f.AllowScriptAccess="always";d=f.GetVariable(a)}catch(n){}if(!d)try{f=new ActiveXObject(h);d=f.GetVariable(a)}catch(s){}if(d){d=X(d.split(" ")[1],",");d=d[0]+\r
17314 "."+d[1]+" r"+d[2]}}return d?d:p}var g=i,t=g.e,k=this,p="-";k.V=t.screen;k.Sa=!k.V&&t.java?java.awt.Toolkit.getDefaultToolkit():w;k.d=t.navigator;k.W=p;k.xa=p;k.Wa=p;k.qa=p;k.pa=1;k.eb=p;k.bc=function(){var f;if(t.screen){k.W=k.V.width+"x"+k.V.height;k.xa=k.V.colorDepth+"-bit"}else if(k.Sa)try{f=k.Sa.getScreenSize();k.W=f.width+"x"+f.height}catch(h){}k.qa=W(k.d&&k.d.language?k.d.language:k.d&&k.d.browserLanguage?k.d.browserLanguage:p);k.pa=k.d&&k.d.javaEnabled()?1:0;k.eb=g.ha?l():p;k.Wa=S(g.a.characterSet?\r
17315 g.a.characterSet:g.a.charset?g.a.charset:p)};k.Ic=function(){return B+"utm"+["cs="+S(k.Wa),"sr="+k.W,"sc="+k.xa,"ul="+k.qa,"je="+k.pa,"fl="+S(k.eb)].join("&utm")};k.$b=function(){var f=g.a,h=t.history[x];f=k.d.appName+k.d.version+k.qa+k.d.platform+k.d.userAgent+k.pa+k.W+k.xa+(f[y]?f[y]:"")+(f.referrer?f.referrer:"");for(var d=f[x];h>0;)f+=h--^d++;return ia(f)}};Z.m=function(i,l,g,t){function k(d){var a="";d=W(d.split("://")[1]);if(U(d,"/")){d=d.split("/")[1];if(U(d,"?"))a=d.split("?")[0]}return a}function p(d){var a="";a=W(d.split("://")[1]);if(U(a,"/"))a=a.split("/")[0];return a}var f=t,h=this;h.c=i;h.rb=l;h.r=g;h.ic=function(d){var a=h.gb();return new Z.m.w(P(d,f.Ka+C,B),P(d,f.Na+C,B),P(d,f.Pa+C,B),h.Q(d,f.Ia,"(not set)"),h.Q(d,f.La,"(not set)"),h.Q(d,f.Oa,a&&!N(a.K)?T(a.K):w),h.Q(d,f.Ja,w))};h.jb=function(d){var a=p(d),j=k(d);if(U(a,"google")){d=d.split("?").join(B);\r
17316 if(U(d,B+f.oc+C))if(j==f.nc)return r}return v};h.gb=function(){var d,a=h.rb,j,c,n=f.T;if(!(N(a)||"0"==a||!U(a,"://")||h.jb(a))){d=p(a);for(j=0;j<n[x];j++){c=n[j];if(U(d,W(c.bb))){a=a.split("?").join(B);if(U(a,B+c.nb+C)){d=a.split(B+c.nb+C)[1];if(U(d,B))d=d.split(B)[0];return new Z.m.w(w,c.bb,w,"(organic)","organic",d,w)}}}}};h.Q=function(d,a,j){d=P(d,a+C,B);return j=!N(d)?T(d):!N(j)?j:"-"};h.uc=function(d){var a=f.ta,j=v,c;if(d&&"organic"==d.S){d=W(T(d.K));for(c=0;c<a[x];c++)j=j||W(a[c])==d}return j};\r
17317 h.hc=function(){var d="",a="";d=h.rb;if(!(N(d)||"0"==d||!U(d,"://")||h.jb(d))){d=d.split("://")[1];if(U(d,"/")){a=O(d,d.indexOf("/"));a=a.split("?")[0];d=W(d.split("/")[0])}if(0==d.indexOf("www."))d=O(d,4);return new Z.m.w(w,d,w,"(referral)","referral",w,a)}};h.Xb=function(d){var a="";if(f.ba){a=d&&d.hash?d.href.substring(d.href.indexOf("#")):"";a=""!=a?a+B:a}a+=d.search;return a};h.dc=function(){return new Z.m.w(w,"(direct)",w,"(direct)","(none)",w,w)};h.vc=function(d){var a=v,j,c=f.va;if(d&&"referral"==\r
17318 d.S){d=W(S(d.X));for(j=0;j<c[x];j++)a=a||U(d,W(c[j]))}return a};h.L=function(d){return w!=d&&d.mb()};h.cc=function(d,a){var j="",c="-",n,s=0,b,e,o=h.c;if(!d)return"";e=d.k();j=h.Xb(f.a[A]);if(f.z&&d.kb()){c=d.na();if(!N(c)&&!U(c,";")){d.Ga();return""}}c=P(e,J+o+".",";");n=h.ic(j);if(h.L(n)){j=P(j,f.Ma+C,B);if("1"==j&&!N(c))return""}if(!h.L(n)){n=h.gb();if(!N(c)&&h.uc(n))return""}if(!h.L(n)&&a){n=h.hc();if(!N(c)&&h.vc(n))return""}if(!h.L(n))if(N(c)&&a)n=h.dc();if(!h.L(n))return"";if(!N(c)){s=c.split(".");\r
17319 b=new Z.m.w;b.Zb(s.slice(4).join("."));b=W(b.Da())==W(n.Da());s=s[3]*1}if(!b||a){a=P(e,D+o+".",";");e=a.lastIndexOf(".");a=e>9?O(a,e+1)*1:0;s++;a=0==a?1:a;d.wb([o,h.r,a,s,n.Da()].join("."));d.Ga();return B+"utmcn=1"}else return B+"utmcr=1"}};\r
17320 Z.m.w=function(i,l,g,t,k,p,f){var h=this;h.q=i;h.X=l;h.ea=g;h.D=t;h.S=k;h.K=p;h.Ya=f;h.Da=function(){var d=[],a=[["cid",h.q],["csr",h.X],["gclid",h.ea],["ccn",h.D],["cmd",h.S],["ctr",h.K],["cct",h.Ya]],j,c;if(h.mb())for(j=0;j<a[x];j++)if(!N(a[j][1])){c=a[j][1].split("+").join("%20");c=c.split(" ").join("%20");V(d,"utm"+a[j][0]+C+c)}return d.join("|")};h.mb=function(){return!(N(h.q)&&N(h.X)&&N(h.ea))};h.Zb=function(d){var a=function(j){return T(P(d,"utm"+j+C,"|"))};h.q=a("cid");h.X=a("csr");h.ea=a("gclid");\r
17321 h.D=a("ccn");h.S=a("cmd");h.K=a("ctr");h.Ya=a("cct")}};Z.Ib=function(i,l,g,t){function k(j,c,n){var s;if(!N(n)){n=n.split(",");for(var b=0;b<n[x];b++){s=n[b];if(!N(s)){s=s.split(h);if(s[x]==4)c[s[0]]=[s[1],s[2],j]}}}}var p=this,f=l,h=C,d=i,a=t;p.O=g;p.sa="";p.p={};p.tc=function(){var j;j=X(P(p.O.k(),H+f+".",";"),f+".")[1];if(!N(j)){j=j.split("|");k(1,p.p,j[1]);p.sa=j[0];p.Z()}};p.Z=function(){p.Qb();var j=p.sa,c,n,s="";for(c in p.p)if((n=p.p[c])&&1===n[2])s+=c+h+n[0]+h+n[1]+h+1+",";N(s)||(j+="|"+s);if(N(j))p.O.Vb();else{p.O.Aa(f+"."+j);p.O.Fa()}};p.Ec=\r
17322 function(j){p.sa=j;p.Z()};p.Cc=function(j,c,n,s){if(1!=s&&2!=s&&3!=s)s=3;var b=v;if(c&&n&&j>0&&j<=d.ob){c=S(c);n=S(n);if(c[x]+n[x]<=64){p.p[j]=[c,n,s];p.Z();b=r}}return b};p.mc=function(j){if((j=p.p[j])&&1===j[2])return j[1]};p.Ub=function(j){var c=p.p;if(c[j]){delete c[j];p.Z()}};p.Qb=function(){a._clearKey(8);a._clearKey(9);a._clearKey(11);var j=p.p,c,n;for(n in j)if(c=j[n]){a._setKey(8,n,c[0]);a._setKey(9,n,c[1]);(c=c[2])&&3!=c&&a._setKey(11,n,""+c)}}};Z.N=function(){function i(m,q,u,z){if(w==f[m])f[m]={};if(w==f[m][q])f[m][q]=[];f[m][q][u]=z}function l(m,q){if(w!=f[m]&&w!=f[m][q]){f[m][q]=w;q=r;var u;for(u=0;u<a[x];u++)if(w!=f[m][a[u]]){q=v;break}if(q)f[m]=w}}function g(m){var q="",u=v,z,M;for(z=0;z<a[x];z++){M=m[a[z]];if(w!=M){if(u)q+=a[z];q+=t(M);u=v}else u=r}return q}function t(m){var q=[],u,z;for(z=0;z<m[x];z++)if(w!=m[z]){u="";if(z!=o&&w==m[z-1])u+=z.toString()+s;u+=k(m[z]);V(q,u)}return j+q.join(n)+c}function k(m){var q="",u,z,M;for(u=0;u<\r
17323 m[x];u++){z=m.charAt(u);M=e[z];q+=w!=M?M:z}return q}var p=this,f={},h="k",d="v",a=[h,d],j="(",c=")",n="*",s="!",b="'",e={};e[b]="'0";e[c]="'1";e[n]="'2";e[s]="'3";var o=1;p.qc=function(m){return w!=f[m]};p.G=function(){var m="",q;for(q in f)if(w!=f[q])m+=q.toString()+g(f[q]);return m};p.Ac=function(m){if(m==w)return p.G();var q=m.G(),u;for(u in f)if(w!=f[u]&&!m.qc(u))q+=u.toString()+g(f[u]);return q};p._setKey=function(m,q,u){if(typeof u!="string")return v;i(m,h,q,u);return r};p._setValue=function(m,\r
17324 q,u){if(typeof u!="number"&&(w==Number||!(u instanceof Number))||Math.round(u)!=u||u==NaN||u==Infinity)return v;i(m,d,q,u.toString());return r};p._getKey=function(m,q){return w!=f[m]&&w!=f[m][h]?f[m][h][q]:w};p._getValue=function(m,q){return w!=f[m]&&w!=f[m][d]?f[m][d][q]:w};p._clearKey=function(m){l(m,h)};p._clearValue=function(m){l(m,d)}};Z.Jb=function(i,l){var g=this;g.Qc=l;g.xc=i;g._trackEvent=function(t,k,p){return l._trackEvent(g.xc,t,k,p)}};Z.aa=function(i,l){function g(){if("auto"==c.b){var b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.b=b}c.b=W(c.b)}function t(){var b=c.b,e=b.indexOf("www.google.")*b.indexOf(".google.")*b.indexOf("google.");return e||"/"!=c.h||b.indexOf("google.org")>-1}function k(b,e,o){if(N(b)||N(e)||N(o))return"-";b=P(b,D+a.c+".",e);if(!N(b)){b=b.split(".");b[5]=b[5]?b[5]*1+1:1;b[3]=b[4];b[4]=o;b=b.join(".")}return b}function p(){return"file:"!=c.a[A].protocol&&t()}function f(b){if(!b||""==b)return"";for(;ea(b.charAt(0));)b=\r
17325 O(b,1);for(;ea(b.charAt(b[x]-1));)b=O(b,0,b[x]-1);return b}function h(b,e,o,m){if(!N(b())){e(m?T(b()):b());U(b(),";")||o()}}function d(b){var e,o=""!=b&&c.a[A].host!=b;if(o)for(e=0;e<c.t[x];e++)o=o&&fa(W(b),W(c.t[e]))==-1;return o}var a=this,j=w,c=new Z.Gb,n=v,s=w;a.e=window;a.r=Math.round((new Date).getTime()/1E3);a.s=i||"UA-XXXXX-X";a.ab=c.a.referrer;a.ia=w;a.f=w;a.B=w;a.F=v;a.A=w;a.Ua="";a.g=w;a.cb=w;a.c=w;a.i=w;c.o=l?S(l):w;a.wc=function(){var b=v;if(a.B)b=a.B.match(/^[0-9a-z-_.]{10,1200}$/i);\r
17326 return b};a.jc=function(){return Y()^a.A.$b()&2147483647};a.ec=function(){if(!c.b||""==c.b||"none"==c.b){c.b="";return 1}g();return c.Ra?ia(c.b):1};a.Yb=function(b,e){if(N(b))b="-";else{e+=c.h&&"/"!=c.h?c.h:"";e=b.indexOf(e);b=e>=0&&e<=8?"0":"["==b.charAt(0)&&"]"==b.charAt(b[x]-1)?"-":b}return b};a.wa=function(b){var e="",o=c.a;e+=c.fa?a.A.Ic():"";e+=c.da?a.Ua:"";e+=c.ga&&!N(o.title)?"&utmdt="+S(o.title):"";e+="&utmhid="+ja()+"&utmr="+S(a.ia)+"&utmp="+S(a.Bc(b));return e};a.Bc=function(b){var e=c.a[A];\r
17327 return b=w!=b&&""!=b?S(b,r):S(e.pathname+e.search,r)};a.Lc=function(b){if(a.J()){var e="";if(a.g!=w&&a.g.G()[x]>0)e+="&utme="+S(a.g.G());e+=a.wa(b);j.H(e,a.s,a.c)}};a.Tb=function(){var b=new Z.$(c);return b.ua(a.c)?b.Hc():w};a._getLinkerUrl=function(b,e){var o=b.split("#"),m=b,q=a.Tb();if(q)if(e&&1>=o[x])m+="#"+q;else if(!e||1>=o[x])if(1>=o[x])m+=(U(b,"?")?B:"?")+q;else m=o[0]+(U(b,"?")?B:"?")+q+"#"+o[1];return m};a.Fc=function(){var b;if(a.wc()){a.i.Dc(a.B);a.i.Oc();Z._gasoDomain=c.b;Z._gasoCPath=\r
17328 c.h;b=c.a.createElement("script");b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.B+B+Y();c.a.getElementsByTagName("head")[0].appendChild(b)}};a.pc=function(){var b=a.r,e=a.i,o=e.k(),m=a.c+"",q=c.e,u=q?q.gaGlobal:w,z,M=U(o,D+m+"."),la=U(o,E+m),ma=U(o,G+m),F,I=[],R="",ha=v;o=N(o)?"":o;if(c.z){z=c.a[A]&&c.a[A].hash?c.a[A].href.substring(c.a[A].href.indexOf("#")):"";if(c.ba&&!N(z))R=z+B;R+=c.a[A].search;if(!N(R)&&U(R,D)){e.zc(R);e.kb()||e.Sb();\r
17329 F=e.ja()}h(e.ma,e.vb,e.Eb,true);h(e.la,e.Aa,e.Fa)}if(N(F))if(M)if(!la||!ma){F=k(o,";",b);a.F=r}else{F=P(o,D+m+".",";");I=X(P(o,E+m,";"),".")}else{F=ga([m,a.jc(),b,b,b,1],".");ha=a.F=r}else if(N(e.C())||N(e.ka())){F=k(R,B,b);a.F=r}else{I=X(e.C(),".");m=I[0]}F=F.split(".");if(q&&u&&u.dh==m&&!c.o){F[4]=u.sid?u.sid:F[4];if(ha){F[3]=u.sid?u.sid:F[4];if(u.vid){b=u.vid.split(".");F[1]=b[0];F[2]=b[1]}}}e.tb(F.join("."));I[0]=m;I[1]=I[1]?I[1]:0;I[2]=w!=I[2]?I[2]:c.Jc;I[3]=I[3]?I[3]:F[4];e.ya(I.join("."));\r
17330 e.ub(m);N(e.lc())||e.za(e.P());e.Cb();e.Ea();e.Db()};a.rc=function(){j=new Z.Kb(c)};a._initData=function(){var b;if(!n){if(!a.A){a.A=new Z.Fb(c);a.A.bc()}a.c=a.ec();a.i=new Z.$(c);a.g=new Z.N;s=new Z.Ib(c,a.c,a.i,a.g);a.rc()}if(p()){a.pc();s.tc()}if(!n){if(p()){a.ia=a.Yb(a.ab,c.a.domain);if(c.da){b=new Z.m(a.c,a.ia,a.r,c);a.Ua=b.cc(a.i,a.F)}}a.cb=new Z.N;n=r}Z.ib||a.sc()};a._visitCode=function(){a._initData();var b=P(a.i.k(),D+a.c+".",";");b=b.split(".");return b[x]<4?"":b[1]};a._cookiePathCopy=function(b){a._initData();\r
17331 a.i&&a.i.Nc(a.c,b)};a.sc=function(){var b=c.a[A].hash;if(b&&1==b.indexOf("gaso="))b=P(b,"gaso=",B);else b=(b=c.e.name)&&0<=b.indexOf("gaso=")?P(b,"gaso=",B):P(a.i.k(),L,";");if(b[x]>=10){a.B=b;a.Fc()}Z.ib=r};a.J=function(){return a._visitCode()%1E4<c.U*100};a.Gc=function(){var b,e,o=c.a.links;if(!c.lb){b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.t.push("."+b)}for(b=0;b<o[x]&&(c.ra==-1||b<c.ra);b++){e=o[b];if(d(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.yc;e.onclick=function(m){var q=\r
17332 !this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";q=q&&!a.Rb(m);a.Mc(m,this,q);return q?v:this.gatcOnclick?this.gatcOnclick(m):r}}}};a.yc=function(){};a._trackPageview=function(b){if(p()){a._initData();c.t&&a.Gc();a.Lc(b);a.F=v}};a._trackTrans=function(){var b=a.c,e=[],o,m,q;a._initData();if(a.f&&a.J()){for(o=0;o<a.f.Y[x];o++){m=a.f.Y[o];V(e,m.Ca());for(q=0;q<m.R[x];q++)V(e,m.R[q].Ca())}for(o=0;o<e[x];o++)j.H(e[o],a.s,b,r)}};a._setTrans=function(){var b=c.a,e,o,m;b=b.getElementById?\r
17333 b.getElementById("utmtrans"):b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:w;a._initData();if(b&&b.value){a.f=new Z.n;m=b.value.split("UTM:");c.u=!c.u||""==c.u?"|":c.u;for(b=0;b<m[x];b++){m[b]=f(m[b]);e=m[b].split(c.u);for(o=0;o<e[x];o++)e[o]=f(e[o]);if("T"==e[0])a._addTrans(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]);else"I"==e[0]&&a._addItem(e[1],e[2],e[3],e[4],e[5],e[6])}}};a._addTrans=function(b,e,o,m,q,u,z,M){a.f=a.f?a.f:new Z.n;return a.f.Ob(b,e,o,m,q,u,z,M)};a._addItem=function(b,e,o,m,q,u){var z;\r
17334 a.f=a.f?a.f:new Z.n;(z=a.f.hb(b))||(z=a._addTrans(b,"","","","","","",""));z.Nb(e,o,m,q,u)};a._setVar=function(b){if(b&&""!=b&&t()){a._initData();s.Ec(S(b));a.J()&&j.H("&utmt=var",a.s,a.c)}};a._setCustomVar=function(b,e,o,m){a._initData();return s.Cc(b,e,o,m)};a._deleteCustomVar=function(b){a._initData();s.Ub(b)};a._getVisitorCustomVar=function(b){a._initData();return s.mc(b)};a._setMaxCustomVariables=function(b){c.ob=b};a._link=function(b,e){if(c.z&&b){a._initData();c.a[A].href=a._getLinkerUrl(b,\r
17335 e)}};a._linkByPost=function(b,e){if(c.z&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,o){a.g._setKey(b,e,o)};a._setXValue=function(b,e,o){a.g._setValue(b,e,o)};a._getXKey=function(b,e){return a.g._getKey(b,e)};a._getXValue=function(b,e){return a.g.getValue(b,e)};a._clearXKey=function(b){a.g._clearKey(b)};a._clearXValue=function(b){a.g._clearValue(b)};a._createXObj=function(){a._initData();return new Z.N};a._sendXEvent=function(b){var e="";a._initData();\r
17336 if(a.J()){e+="&utmt=event&utme="+S(a.g.Ac(b))+a.wa();j.H(e,a.s,a.c,v,r)}};a._createEventTracker=function(b){a._initData();return new Z.Jb(b,a)};a._trackEvent=function(b,e,o,m){var q=a.cb;if(w!=b&&w!=e&&""!=b&&""!=e){q._clearKey(5);q._clearValue(5);(b=q._setKey(5,1,b)&&q._setKey(5,2,e)&&(w==o||q._setKey(5,3,o))&&(w==m||q._setValue(5,1,m)))&&a._sendXEvent(q)}else b=v;return b};a.Mc=function(b,e,o){a._initData();if(a.J()){var m=new Z.N;m._setKey(6,1,e.href);var q=o?function(){a.db(b,e)}:w;j.H("&utmt=event&utme="+\r
17337 S(m.G())+a.wa(),a.s,a.c,v,r,q);if(o){var u=this;c.e.setTimeout(function(){u.db(b,e)},500)}}};a.db=function(b,e){if(!b)b=c.e.event;var o=r;if(e.gatcOnclick)o=e.gatcOnclick(b);if(o||typeof o=="undefined")if(!e.target||e.target=="_self")c.e[A]=e.href;else if(e.target=="_top")c.e.top.document[A]=e.href;else if(e.target=="_parent")c.e.parent.document[A]=e.href};a.Rb=function(b){if(!b)b=c.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&c.e.Event)e=b.modifiers&c.e.Event.CONTROL_MASK||\r
17338 b.modifiers&c.e.Event.SHIFT_MASK||b.modifiers&c.e.Event.ALT_MASK;return e};a.Pc=function(){return c};a._setDomainName=function(b){c.b=b};a._addOrganic=function(b,e,o){c.T.splice(o?0:c.T.length,0,new Z.Ha(b,e))};a._clearOrganic=function(){c.T=[]};a._addIgnoredOrganic=function(b){V(c.ta,b)};a._clearIgnoredOrganic=function(){c.ta=[]};a._addIgnoredRef=function(b){V(c.va,b)};a._clearIgnoredRef=function(){c.va=[]};a._setAllowHash=function(b){c.Ra=b?1:0};a._setCampaignTrack=function(b){c.da=b?1:0};a._setClientInfo=\r
17339 function(b){c.fa=b?1:0};a._getClientInfo=function(){return c.fa};a._setCookiePath=function(b){c.h=b};a._setTransactionDelim=function(b){c.u=b};a._setCookieTimeout=function(b){a._setCampaignCookieTimeout(b*1E3)};a._setCampaignCookieTimeout=function(b){c.Ta=b};a._setDetectFlash=function(b){c.ha=b?1:0};a._getDetectFlash=function(){return c.ha};a._setDetectTitle=function(b){c.ga=b?1:0};a._getDetectTitle=function(){return c.ga};a._setLocalGifPath=function(b){c.oa=b};a._getLocalGifPath=function(){return c.oa};\r
17340 a._setLocalServerMode=function(){c.I=0};a._setRemoteServerMode=function(){c.I=1};a._setLocalRemoteServerMode=function(){c.I=2};a._getServiceMode=function(){return c.I};a._setSampleRate=function(b){c.U=b};a._setSessionTimeout=function(b){a._setSessionCookieTimeout(b*1E3)};a._setSessionCookieTimeout=function(b){c.sb=b};a._setAllowLinker=function(b){c.z=b?1:0};a._setAllowAnchor=function(b){c.ba=b?1:0};a._setCampNameKey=function(b){c.Ia=b};a._setCampContentKey=function(b){c.Ja=b};a._setCampIdKey=function(b){c.Ka=\r
17341 b};a._setCampMediumKey=function(b){c.La=b};a._setCampNOKey=function(b){c.Ma=b};a._setCampSourceKey=function(b){c.Na=b};a._setCampTermKey=function(b){c.Oa=b};a._setCampCIdKey=function(b){c.Pa=b};a._getAccount=function(){return a.s};a._setAccount=function(b){a.s=b};a._setNamespace=function(b){c.o=b?S(b):w};a._getVersion=function(){return ca};a._setAutoTrackOutbound=function(b){c.t=[];if(b)c.t=b};a._setTrackOutboundSubdomains=function(b){c.lb=b};a._setHrefExamineLimit=function(b){c.ra=b};a._setReferrerOverride=\r
17342 function(b){a.ab=b};a._setCookiePersistence=function(b){a._setVisitorCookieTimeout(b)};a._setVisitorCookieTimeout=function(b){c.v=b}};Z._getTracker=function(i,l){return new Z.aa(i,l)};var ka=v,$={ca:{},_createAsyncTracker:function(i,l){l=l||"";i=new Z.aa(i);$.ca[l]=i;ka=r;return i},_getAsyncTracker:function(i){i=i||"";var l=$.ca[i];if(!l){l=new Z.aa;$.ca[i]=l;ka=r}return l},push:function(){for(var i=arguments,l=0,g=0;g<i[x];g++)try{if(typeof i[g]==="function")i[g]();else{var t="",k=i[g][0],p=k.lastIndexOf(".");if(p>0){t=O(k,0,p);k=O(k,p+1)}var f=$._getAsyncTracker(t);f[k].apply(f,i[g].slice(1))}}catch(h){l++}return l}};window[aa]=Z;function na(){var i=window[ba],l=v;if(i&&typeof i.push=="function"){l=i.constructor==Array;if(!l)return}window[ba]=$;l&&$.push.apply($,i)}na();})()\r
17343 </script>\r
17344 \r
17345 \r
17346 <script id="gmail" type="x">\r
17347 var startTime=(new Date).getTime()\r
17348 \r
17349 var BrowserSupport_={IsBrowserSupported:function(){var agt=navigator.userAgent.toLowerCase();var is_op=agt.indexOf("opera")!=-1;var is_ie=agt.indexOf("msie")!=-1&&document.all&&!is_op;var is_ie5=agt.indexOf("msie 5")!=-1&&document.all&&!is_op;var is_mac=agt.indexOf("mac")!=-1;var is_gk=agt.indexOf("gecko")!=-1;var is_sf=agt.indexOf("safari")!=-1;if(is_ie&&!is_op&&!is_mac){if(agt.indexOf("palmsource")!=\r
17350 -1||agt.indexOf("regking")!=-1||agt.indexOf("windows ce")!=-1||agt.indexOf("j2me")!=-1||agt.indexOf("avantgo")!=-1||agt.indexOf(" stb")!=-1)return false;var v=BrowserSupport_.GetFollowingFloat(agt,"msie ");if(v!=null)return v>=5.5}if(is_gk&&!is_sf){var v=BrowserSupport_.GetFollowingFloat(agt,"rv:");if(v!=null)return v>=1.4;else{v=BrowserSupport_.GetFollowingFloat(agt,"galeon/");if(v!=null)return v>=\r
17351 1.3}}if(is_sf){if(agt.indexOf("rv:3.14.15.92.65")!=-1)return false;var v=BrowserSupport_.GetFollowingFloat(agt,"applewebkit/");if(v!=null)return v>=312}if(is_op){if(agt.indexOf("sony/com1")!=-1)return false;var v=BrowserSupport_.GetFollowingFloat(agt,"opera ");if(v==null)v=BrowserSupport_.GetFollowingFloat(agt,"opera/");if(v!=null)return v>=8}if(agt.indexOf("pda; sony/com2")!=-1)return true;return false},\r
17352 GetFollowingFloat:function(str,pfx){var i=str.indexOf(pfx);if(i!=-1){var v=parseFloat(str.substring(i+pfx.length));if(!isNaN(v))return v}return null},tz_path:";path=/"};if(window.location.href.toLowerCase().indexOf("google.com")>0)BrowserSupport_.tz_path+=";domain=.google.com";document.cookie="TZ="+(new Date).getTimezoneOffset()+BrowserSupport_.tz_path;var is_browser_supported=BrowserSupport_.IsBrowserSupported()\r
17353 \r
17354 if(window!=top)top.location=location.href;\r
17355 (function(){if(location.href.indexOf("nocheckbrowser")!=-1)return;if(!is_browser_supported)location="?ui=html&zy=b";var agt=navigator.userAgent.toLowerCase();var wk=/webkit\/([^ ]+)/.exec(agt);var g=/rv:([^;)]+)/.exec(agt);var ie=/msie (\d+)/.exec(agt);var opr=window.opera&&parseFloat(window.opera.version());var sup=ie&&ie[1]>=7&&!opr||navigator.product=="Gecko"&&g&&g[1]>"1.8"||wk&&wk[1].split(".")[0]>\r
17356 "522"||opr&&opr>=9.5;var win2k=agt.indexOf("windows nt 5.0")!=-1||agt.indexOf("windows 2000")!=-1;var win98OrMe=agt.indexOf("windows 98")!=-1;if(ie&&ie[1]==6&&!opr&&!win2k&&!win98OrMe){var jsv=Number(ScriptEngineMajorVersion()+"."+ScriptEngineMinorVersion());sup=jsv>=5.7||jsv==5.6&&ScriptEngineBuildVersion()>=8834}if(!sup)location="?ui=1&ov=0";var c="jscookietest=valid";document.cookie=c;if(document.cookie.indexOf(c)==\r
17357 -1)location="html/nocookies.html";document.cookie=c+";expires=Thu, 01 Jan 1970 00:00:00 GMT";if(agt.indexOf("msie")!=-1&&document.all&&agt.indexOf("opera")==-1&&agt.indexOf("mac")==-1)eval('try{new ActiveXObject(agt.indexOf("msie 5")!=-1?"Microsoft.XMLHTTP":"Msxml2.XMLHTTP")}catch(e){location="html/noactivex.html"}')})();var lbwnc=false\r
17358 \r
17359 var GLOBALS=[]; // Redacted\r
17360 GLOBALS[0]=startTime;\r
17361 var pr=0;var lp=0;function sc(k,v){document.cookie=k+"="+v+";path="+GLOBALS[7]}function onLoadTimeout(){if(lbwnc)return;if(pr>lp){lp=pr;loadTimeout=setTimeout(onLoadTimeout,3E4);return}var d=document;d.getElementById("loadingError").style.display="";d.getElementById("stb").style.display="none";if(!top._jsl){sc("GMAIL_CB",startTime);si("jscc")}si("jsle")}\r
17362 function si(i){(new Image).src="?ui=2&view=jsle&ik="+GLOBALS[9]+"&imp="+i+"&val="+pr+"&random="+startTime}var loadTimeout=setTimeout(onLoadTimeout,3E4);GLOBALS[1]=(new Date).getTime()\r
17363 \r
17364 var VIEW_DATA=[]; // Redacted\r
17365 \r
17366 var JS_MODE="OPTIMIZED,LOCALE=en",JS_OBFUSCATED=1,JS_START_TIME=(new Date).getTime(),GLOBALS=top.GLOBALS;if("32mVEedHbfc.en."!=GLOBALS[4])top.location.replace(top.location.href.split("#")[0]);function _B_log(imp,opt_val){var p="imp="+imp;if(arguments.length>1)p+="&val="+opt_val;_B_logImg_("jsle",p)}var loadTimes=[GLOBALS[0],GLOBALS[1],JS_START_TIME];\r
17367 function _B_record(){loadTimes.push((new Date).getTime())}var _B_thumbStyle_;function _B_prog(pct){top["pr"]=pct;if(_B_thumbStyle_===undefined){var thumb=top.document.getElementById("lpt");_B_thumbStyle_=thumb?thumb.style:null}if(_B_thumbStyle_){_B_thumbStyle_.width=Math.round(pct*0.99)+"%";if(pct==100)_B_thumbStyle_=null}}\r
17368 function _B_err(e){var state=loadTimes.join("-");_B_logImg_("jserr","jsstate="+encodeURIComponent(state)+"&jsmsg="+encodeURIComponent(e));_B_handleError(e)}function _B_handleError(e){throw e;}function _B_logImg_(v,p){(new Image).src="?ui=2&view="+v+"&"+p+"&ik="+GLOBALS[9]+"&random="+(new Date).getTime()}window.onerror=function(message,url,line){_B_err(message)};_B_prog(1)\r
17369 \r
17370 try{top['jpgt']=1267218585107;}catch(e){_B_err(e)}\r
17371 \r
17372 try{function e(b){throw b;}var h=true,i=null,k=false,aa=encodeURIComponent,ba=window,aaa=JS_OBFUSCATED,ca=Object,da=parseInt,baa=isFinite,caa=Function,ea=document,fa=GLOBALS,ga=decodeURIComponent,ia=isNaN,l=Math;function daa(b,a){return b.appendChild=a}function ja(b,a){return b.onreadystatechange=a}function ka(b,a){return b.width=a}function la(b,a){return b.text=a}function ma(b,a){return b.data=a}function na(b,a){return b.load=a}function oa(b,a){return b.onerror=a}function pa(b,a){return b.value=a}\r
17373 function eaa(b,a){return b.button=a}function qa(b,a){return b.indexOf=a}function ra(b,a){return b.dispatchEvent=a}function sa(b,a){return b.currentTarget=a}function ta(b,a){return b.backgroundColor=a}function faa(b,a){return b.screenX=a}function gaa(b,a){return b.screenY=a}function ua(b,a){return b.send=a}function va(b,a){return b.getName=a}function haa(b,a){return b.charCode=a}function wa(b,a){return b.remove=a}function iaa(b,a){return b.cssText=a}function xa(b,a){return b.keyCode=a}\r
17374 function ya(b,a){return b.handleEvent=a}function za(b,a){return b.type=a}function Aa(b,a){return b.clear=a}function jaa(b,a){return b.source=a}function Ba(b,a){return b.name=a}function Ca(b,a){return b.zIndex=a}function Da(b,a){return b.clientX=a}function Ea(b,a){return b.clientY=a}function Fa(b,a){return b.visibility=a}function Ga(b,a){return b.stop=a}function Ha(b,a){return b.toString=a}function kaa(b,a){return b.getMonth=a}function laa(b,a){return b.createObject=a}\r
17375 function Ia(b,a){return b.length=a}function Ja(b,a){return b.position=a}function Ka(b,a){return b.create=a}function maa(b,a){return b.prototype=a}function m(b,a){return b.className=a}function La(b,a){return b.abort=a}function naa(b,a){return b.setTimeout=a}function Ma(b,a){return b.next=a}function oaa(b,a){return b.stack=a}function Na(b,a){return b.location=a}function Oa(b,a){return b.message=a}function Pa(b,a){return b.target=a}function Qa(b,a){return b.start=a}\r
17376 function Ra(b,a){return b.enabled=a}function paa(b,a){return b.returnValue=a}function qaa(b,a){return b.removeNode=a}function Sa(b,a){return b.contains=a}function Ta(b,a){return b.border=a}function Ua(b,a){return b.display=a}function Va(b,a){return b.execute=a}function Wa(b,a){return b.height=a}\r
17377 var o="appendChild",Xa="error",p="push",Ya="filter",raa="hash",Za="version",ab="innerWidth",bb="open",cb="test",db="shift",eb="relatedTarget",fb="replaceChild",gb="clearTimeout",hb="exec",ib="width",jb="text",kb="round",lb="slice",mb="replace",nb="nodeType",ob="ceil",pb="load",rb="floor",sb="cookie",ub="getElementById",vb="mimeTypes",saa="srcElement",wb="concat",xb="charAt",yb="createTextNode",q="value",zb="preventDefault",Ab="item",Bb="insertBefore",Cb="button",Db="indexOf",Eb="metaKey",taa="compareDocumentPosition",\r
17378 r="dispatchEvent",Fb="capture",Gb="nodeName",Hb="currentTarget",Ib="screenX",Jb="screenY",Kb="match",Lb="status",uaa="defaultValue",Mb="send",Nb="readyState",Ob="charCode",Pb="remove",Qb="createElement",Rb="scrollHeight",Sb="keyCode",Tb="firstChild",Ub="forEach",Vb="addEventListener",Wb="setAttribute",Xb="handleEvent",Yb="execCommand",Zb="type",ac="parentWindow",bc="clear",cc="childNodes",vaa="attachEvent",dc="defaultView",ec="name",fc="nextSibling",gc="contentWindow",hc="getTime",ic="getElementsByTagName",\r
17379 jc="frames",kc="clientX",lc="clientY",mc="documentElement",nc="substr",oc="opener",pc="previousSibling",qc="stop",t="toString",rc="altKey",waa="innerText",sc="createObject",u="length",xaa="propertyIsEnumerable",yaa="position",tc="create",w="prototype",zaa="toUTCString",uc="className",vc="clientWidth",wc="abort",xc="setTimeout",yc="document",Ac="removeEventListener",Bc="ctrlKey",Cc="split",Dc="setInterval",Ec="stopPropagation",Fc="userAgent",Gc="stack",Hc="callee",Ic="location",Jc="caller",Kc="hasOwnProperty",\r
17380 x="style",Lc="body",Mc="ownerDocument",Nc="removeChild",Oc="parent",Pc="search",y="target",Qc="lastChild",z="call",Aaa="some",Rc="start",Sc="lastIndexOf",Tc="random",Uc="getAttribute",Vc="enabled",Wc="clientHeight",Xc="charCodeAt",Baa="arguments",Yc="href",Zc="substring",ad="removeNode",Caa="every",bd="contains",cd="apply",dd="shiftKey",ed="tagName",Daa="border",fd="attributes",gd="navigator",A="parentNode",hd="execute",id="height",jd="splice",kd="join",ld="unshift",Eaa="execScript",md="nodeValue",\r
17381 od="toLowerCase",pd="view",qd="ls",rd="ver",sd="absolute",td="overflow",ud="visible",vd="TR",wd="display",xd="none",yd="hidden",zd="BODY",Ad="jf",Bd="HR",Cd="DIV",Dd="UL",Ed="\u00a0",Fd="TD",Gd="Xd",Hd="IFRAME",Faa="Chrome",Id="stop",Gaa="begin",Jd="end",Kd="a",Ld="padding",Md="/",Nd="contacts",Od="$",Pd="d",Qd="-",Rd="e",Sd="hl",Td="iframe",Ud="border",Haa="margin",Vd="IMG",Wd="TABLE",Iaa="PRE",Xd="P",Yd="cc",Zd='" ',ae="O",be="BLOCKQUOTE",ce="group",de="pq",ee="relative",Jaa="DL",Kaa="/*",Laa="/...",\r
17382 fe="id",ge="ae",he="cd",ie="mid",je="gd",ke="cl",le="xe",me="NONE",ne="img",oe="pt",pe="block",Maa='" <',qe="gc",re="5",se="9",ue="add",ve="remove",we="contact",Naa="yr",Oaa="revert",Paa="cB",xe="LI",Qaa="COL",ye="DD",Raa="DT",ze="H2",Ae="H3",Saa="H4",Taa="H5",Uaa="ISINDEX",Be="OL",Vaa="TBODY",Waa="backgroundColor",Ce="transparent",Xaa='url("',Yaa='")',De="js",Zaa="Parent",aba="Child";function Ee(){return function(b){return b}}function B(){return function(){}}\r
17383 function Ge(b){return function(a){this[b]=a}}function D(b){return function(){return this[b]}}function E(b){return function(){return b}}var F,He=".",bba="var ";function Ie(b,a,c){b=b[Cc](He);c=c||Je;!(b[0]in c)&&c[Eaa]&&c[Eaa](bba+b[0]);for(var d;b[u]&&(d=b[db]());)if(!b[u]&&Ke(a))c[d]=a;else c=c[d]?c[d]:(c[d]={})}function Le(b,a){b=b[Cc](He);a=a||Je;for(var c;c=b[db]();)if(a[c])a=a[c];else return i;return a}function Me(){}function Ne(b){b.S=function $(){return b.AOc||(b.AOc=new b)}}\r
17384 var Oe="object",cba="[object Array]",Qe="number",dba="splice",Re="array",eba="[object Function]",fba="call",Se="function",gba="null";\r
17385 function Te(b){var a=typeof b;if(a==Oe)if(b){if(b instanceof Array||!(b instanceof ca)&&ca[w][t][z](b)==cba||typeof b[u]==Qe&&typeof b[jd]!="undefined"&&typeof b[xaa]!="undefined"&&!b[xaa](dba))return Re;if(!(b instanceof ca)&&(ca[w][t][z](b)==eba||typeof b[z]!="undefined"&&typeof b[xaa]!="undefined"&&!b[xaa](fba)))return Se}else return gba;else if(a==Se&&typeof b[z]=="undefined")return Oe;return a}function Ke(b){return b!==undefined}function Ue(b){return b!=i}function Ve(b){return Te(b)==Re}\r
17386 function We(b){var a=Te(b);return a==Re||a==Oe&&typeof b[u]==Qe}var Xe="string";function Ye(b){return typeof b==Xe}function Ze(b){return Te(b)==Se}function af(b){b=Te(b);return b==Oe||b==Re||b==Se}function bf(b){if(b[Kc]&&b[Kc](cf))return b[cf];b[cf]||(b[cf]=++hba);return b[cf]}function iba(b){var a=Te(b);if(a==Oe||a==Re){if(b.vc)return b.vc[z](b);a=a==Re?[]:{};for(var c in b)a[c]=iba(b[c]);return a}return b}\r
17387 function G(b,a){var c=a||Je;if(arguments[u]>2){var d=Array[w][lb][z](arguments,2);return function(){var f=Array[w][lb][z](arguments);Array[w][ld][cd](f,d);return b[cd](c,f)}}else return function(){return b[cd](c,arguments)}}function df(b){var a=Array[w][lb][z](arguments,1);return function(){var c=Array[w][lb][z](arguments);c[ld][cd](c,a);return b[cd](this,c)}}function H(b,a){function c(){}maa(c,a[w]);b.C=a[w];maa(b,new c);b[w].constructor=b}function ef(b,a){return ff(b,a)>=0}\r
17388 function gf(b){if(!Ve(b))for(var a=b[u]-1;a>=0;a--)delete b[a];Ia(b,0)}function hf(b,a){ef(b,a)||b[p](a)}function jf(b,a){a=ff(b,a);var c;if(c=a>=0)kf(b,a);return c}function kf(b,a){return lf[jd][z](b,a,1)[u]==1}function mf(){return lf[wb][cd](lf,arguments)}function nf(b){if(Ve(b))return mf(b);else{for(var a=[],c=0,d=b[u];c<d;c++)a[c]=b[c];return a}}var jba="callee";\r
17389 function of(b){for(var a=1;a<arguments[u];a++){var c=arguments[a],d;if(Ve(c)||(d=We(c))&&c[Kc](jba))b[p][cd](b,c);else if(d)for(var f=b[u],g=c[u],j=0;j<g;j++)b[f+j]=c[j];else b[p](c)}}function pf(b){return lf[jd][cd](b,qf(arguments,1))}function qf(b,a,c){return arguments[u]<=2?lf[lb][z](b,a):lf[lb][z](b,a,c)}function rf(b,a){a=a||b;for(var c={},d=0,f=0;f<b[u];){var g=b[f++],j=af(g)?bf(g):g;if(!ca[w][Kc][z](c,j)){c[j]=h;a[d++]=g}}Ia(a,d)}\r
17390 function sf(){for(var b=[],a=0;a<arguments[u];a++){var c=arguments[a];Ve(c)?b[p][cd](b,sf[cd](i,c)):b[p](c)}return b}function tf(){}function uf(b,a,c){for(var d in b)a[z](c,b[d],d,b)}function vf(b){var a=0;for(var c in b)a++;return a}function wf(b){var a=[],c=0;for(var d in b)a[c++]=b[d];return a}function xf(b){var a=[],c=0;for(var d in b)a[c++]=d;return a}function kba(b,a){for(var c in b)if(b[c]==a)return h;return k}function yf(b){for(var a in b)return k;return h}\r
17391 function zf(b){for(var a,c,d=1;d<arguments[u];d++){c=arguments[d];for(a in c)b[a]=c[a];for(var f=0;f<lba[u];f++){a=lba[f];if(ca[w][Kc][z](c,a))b[a]=c[a]}}}function Af(){var b=arguments[u];if(b==1&&Ve(arguments[0]))return Af[cd](i,arguments[0]);if(b%2)e(Error(".5"));for(var a={},c=0;c<b;c+=2)a[arguments[c]]=arguments[c+1];return a}function Bf(){var b=arguments[u];if(b==1&&Ve(arguments[0]))return Bf[cd](i,arguments[0]);for(var a={},c=0;c<b;c++)a[arguments[c]]=h;return a}\r
17392 function mba(b){if(typeof b.Nb==Se)return b.Nb();if(We(b)||Ye(b))return b[u];return vf(b)}var I="";function Cf(b){if(typeof b.Oa==Se)return b.Oa();if(Ye(b))return b[Cc](I);if(We(b)){for(var a=[],c=b[u],d=0;d<c;d++)a[p](b[d]);return a}return wf(b)}function Df(b){if(typeof b.Sb==Se)return b.Sb();if(typeof b.Oa!=Se){if(We(b)||Ye(b)){var a=[];b=b[u];for(var c=0;c<b;c++)a[p](c);return a}return xf(b)}}\r
17393 function nba(b,a){if(typeof b[bd]==Se)return b[bd](a);if(typeof b.BS==Se)return b.BS(a);if(We(b)||Ye(b))return ef(b,a);return kba(b,a)}function Ef(b,a,c){if(typeof b[Ub]==Se)b[Ub](a,c);else if(We(b)||Ye(b))Ff(b,a,c);else for(var d=Df(b),f=Cf(b),g=f[u],j=0;j<g;j++)a[z](c,f[j],d&&d[j],b)}function oba(b,a,c){if(typeof b[Caa]==Se)return b[Caa](a,c);if(We(b)||Ye(b))return Gf(b,a,c);for(var d=Df(b),f=Cf(b),g=f[u],j=0;j<g;j++)if(!a[z](c,f[j],d&&d[j],b))return k;return h}\r
17394 function Hf(b){this.yd={};this.ri=[];var a=arguments[u];if(a>1){if(a%2)e(Error(".5"));for(var c=0;c<a;c+=2)this.set(arguments[c],arguments[c+1])}else b&&this.Vl(b)}function pba(b,a){return b===a}function qba(b){if(b.Cf!=b.ri[u]){for(var a=0,c=0;a<b.ri[u];){var d=b.ri[a];if(If(b.yd,d))b.ri[c++]=d;a++}Ia(b.ri,c)}if(b.Cf!=b.ri[u]){var f={};for(c=a=0;a<b.ri[u];){d=b.ri[a];if(!If(f,d)){b.ri[c++]=d;f[d]=1}a++}Ia(b.ri,c)}}function If(b,a){return ca[w][Kc][z](b,a)}function Jf(){}\r
17395 function Kf(b){b&&typeof b.D==Se&&b.D()}function Lf(b,a){this.LP=a;this.nv=[];if(b>this.LP)e(Error(".7"));for(a=0;a<b;a++)this.nv[p](this[sc]())}function Mf(b,a){return b[Db](a)==0}function Nf(b,a){var c=b[u]-a[u];return c>=0&&b[Sc](a,c)==c}function Of(b){return!/[^\t\n\r ]/[cb](b)}function Pf(b){return b[mb](/^[\s\xa0]+|[\s\xa0]+$/g,I)}function Qf(b){b=String(b);if(!rba[cb](b))return aa(b);return b}var J=" ";function Rf(b){return ga(b[mb](/\+/g,J))}\r
17396 var sba="&amp;",tba="&lt;",uba="&gt;",vba="&quot;",Sf="&",Tf="<",Uf=">",Vf='"';function Wf(b,a){if(a)return b[mb](wba,sba)[mb](xba,tba)[mb](yba,uba)[mb](zba,vba);else{if(!Aba[cb](b))return b;if(b[Db](Sf)!=-1)b=b[mb](wba,sba);if(b[Db](Tf)!=-1)b=b[mb](xba,tba);if(b[Db](Uf)!=-1)b=b[mb](yba,uba);if(b[Db](Vf)!=-1)b=b[mb](zba,vba);return b}}function Xf(b,a){return b[Db](a)!=-1}function Yf(){return l[rb](l[Tc]()*2147483648)[t](36)+(l[rb](l[Tc]()*2147483648)^Zf())[t](36)}var Bba="(\\d*)(\\D*)",ag="g";\r
17397 function bg(b,a){var c=0;b=Pf(String(b))[Cc](He);a=Pf(String(a))[Cc](He);for(var d=l.max(b[u],a[u]),f=0;c==0&&f<d;f++){var g=b[f]||I,j=a[f]||I,n=new RegExp(Bba,ag),s=new RegExp(Bba,ag);do{var v=n[hb](g)||[I,I,I],C=s[hb](j)||[I,I,I];if(v[0][u]==0&&C[0][u]==0)break;c=Cba(v[1][u]==0?0:da(v[1],10),C[1][u]==0?0:da(C[1],10))||Cba(v[2][u]==0,C[2][u]==0)||Cba(v[2],C[2])}while(c==0)}return c}function Cba(b,a){if(b<a)return-1;else if(b>a)return 1;return 0}function cg(b){this.yd=new Hf;b&&this.Vl(b)}\r
17398 var dg="o";function Dba(b){var a=typeof b;return a==Oe&&b||a==Se?dg+bf(b):a[nc](0,1)+b}function Eba(b,a,c){c=c||Je;var d=c.onerror;oa(c,function $a(g,j,n){d&&d(g,j,n);j=String(j)[Cc](/[\/\\]/).pop();b({message:g,fileName:j,SZb:n});return Boolean(a)})}var eg="message";function Fba(b,a){var c=typeof b==Xe?Error(b):b;if(!c[Gc])oaa(c,Gba(arguments[Hc][Jc]));if(a){for(var d=0;c[eg+d];)++d;c[eg+d]=String(a)}return c}\r
17399 var Hba="()\n",Iba="[exception trying to get caller]\n",Jba="[...long stack...]",Kba="[...reached max depth limit...]",Lba="[end]";function Mba(b){for(var a=[],c=arguments[Hc][Jc],d=0;c&&(!b||d<b);){a[p](fg(c));a[p](Hba);try{c=c[Jc]}catch(f){a[p](Iba);break}d++;if(d>=50){a[p](Jba);break}}b&&d>=b?a[p](Kba):a[p](Lba);return a[kd](I)}function Gba(b){return Nba(b||arguments[Hc][Jc],[])}var Oba="[...circular reference...]",gg="(",hg=", ",ig="boolean",jg="true",kg="false",Pba="[fn]",lg="...",Qba=")\n";\r
17400 function Nba(b,a){var c=[];if(ef(a,b))c[p](Oba);else if(b&&a[u]<50){c[p](fg(b)+gg);for(var d=b[Baa],f=0;f<d[u];f++){f>0&&c[p](hg);var g;g=d[f];switch(typeof g){case Oe:g=g?Oe:gba;break;case Xe:g=g;break;case Qe:g=String(g);break;case ig:g=g?jg:kg;break;case Se:g=(g=fg(g))?g:Pba;break;case "undefined":default:g=typeof g;break}if(g[u]>40)g=g[nc](0,40)+lg;c[p](g)}a[p](b);c[p](Qba);try{c[p](Nba(b[Jc],a))}catch(j){c[p](Iba)}}else b?c[p](Jba):c[p](Lba);return c[kd](I)}var Rba="[Anonymous]";\r
17401 function fg(b){b=String(b);if(!Sba[b]){var a=/function ([^\(]+)/[hb](b);Sba[b]=a?a[1]:Rba}return Sba[b]}function Tba(b){this.rOb=b}var Uba="__protected_",mg="_",ng="__";function og(b,a,c){c=!!c;var d=Uba+bf(b)+mg+c+ng;a[d]||(a[d]=b.Gdb(a,c));return a[d]}var pg="window";function Vba(b,a){var c=Le(pg),d=c[xc];naa(c,function $b(g,j){g=og(b,g,a);return d[z]?d[z](this,g,j):d(g,j)})}function Wba(b,a){var c=Le(pg),d=c[Dc];c.setInterval=function $c(g,j){g=og(b,g,a);return d[z]?d[z](this,g,j):d(g,j)}}\r
17402 function Xba(b,a){this.rOb=b;this.oBc=!!a}function Yba(b,a){return function(){b.dDc&&b.dDc();return a[cd](this,arguments)}}function Zba(){}function rg(b,a,c){if(b.Qla)b.Qla.yI(c,a);else b.Dla&&b.Dla[u]<10&&b.Dla[p]([a,c])}function sg(b){rg(tg,i,b)}function ug(){return Je[gd]?Je[gd][Fc]:i}function aca(){return Je[gd]}function vg(b){return bca[b]||(bca[b]=bg(wg,b)>=0)}function xg(b,a){this.x=Ke(b)?b:0;this.y=Ke(a)?a:0}function yg(b,a){ka(this,b);Wa(this,a)}\r
17403 function zg(b){return(b=b[uc])&&typeof b[Cc]==Se?b[Cc](J):[]}function K(b){var a=zg(b),c=qf(arguments,1);c=cca(a,c);m(b,a[kd](J));return c}function Ag(b){var a=zg(b),c=qf(arguments,1);c=dca(a,c);m(b,a[kd](J));return c}function cca(b,a){for(var c=0,d=0;d<a[u];d++)if(!ef(b,a[d])){b[p](a[d]);c++}return c==a[u]}function dca(b,a){for(var c=0,d=0;d<b[u];d++)if(ef(a,b[d])){pf(b,d--,1);c++}return c==a[u]}function Bg(b,a){return ef(zg(b),a)}function Cg(b){return b?new Dg(Eg(b)):eca||(eca=new Dg)}\r
17404 function Fg(b){return Ye(b)?ea[ub](b):b}function Gg(b,a,c){return fca(ea,b,a,c)}var Hg="*",Ig="528";\r
17405 function fca(b,a,c,d){d=d||b;a=a&&a!=Hg?a[od]():I;if(d.querySelectorAll&&(a||c)&&(!Jg||gca(b)||vg(Ig)))return d.querySelectorAll(a+(c?He+c:I));if(c&&d.getElementsByClassName){b=d.getElementsByClassName(c);if(a){d={};for(var f=0,g=0,j;j=b[g];g++)if(a==j[Gb][od]())d[f++]=j;Ia(d,f);return d}else return b}b=d[ic](a||Hg);if(c){d={};for(g=f=0;j=b[g];g++){a=j[uc];if(typeof a[Cc]==Se&&ef(a[Cc](J),c))d[f++]=j}Ia(d,f);return d}else return b}var Kg="style",hca="class",ica="for";\r
17406 function Lg(b,a){uf(a,function(c,d){if(d==Kg)iaa(b[x],c);else if(d==hca)m(b,c);else if(d==ica)b.htmlFor=c;else if(d in jca)b[Wb](jca[d],c);else b[d]=c})}var kca="500",lca="9.50";function Mg(b){b=b||ba;var a=b[yc];if(Jg&&!vg(kca)&&!mca){if(typeof b.innerHeight=="undefined")b=ba;a=b.innerHeight;var c=b[yc][mc][Rb];if(b==b.top)if(c<a)a-=15;b=new yg(b[ab],a)}else{b=gca(a)&&(!Ng||Ng&&vg(lca))?a[mc]:a[Lc];b=new yg(b[vc],b[Wc])}return b}var nca=' name="',oca=' type="';\r
17407 function pca(b,a){var c=a[0],d=a[1];if(L&&d&&(d[ec]||d[Zb])){c=[Tf,c];d[ec]&&c[p](nca,Wf(d[ec]),Vf);if(d[Zb]){c[p](oca,Wf(d[Zb]),Vf);d=iba(d);delete d[Zb]}c[p](Uf);c=c[kd](I)}var f=b[Qb](c);if(d)if(Ye(d))m(f,d);else Lg(f,d);if(a[u]>2){d=function $d(n){if(n)f[o](Ye(n)?b[yb](n):n)};for(c=2;c<a[u];c++){var g=a[c];We(g)&&!qca(g)?Ff(rca(g)?nf(g):g,d):d(g)}}return f}var sca="CSS1Compat";function gca(b){return b.compatMode==sca}function Og(b,a){b[o](a)}function Pg(b){for(var a;a=b[Tb];)b[Nc](a)}\r
17408 function Qg(b,a){a[A]&&a[A][Bb](b,a)}function Rg(b,a){a[A]&&a[A][Bb](b,a[fc])}function Sg(b){return b&&b[A]?b[A][Nc](b):i}function Ug(b,a){var c=a[A];c&&c[fb](b,a)}function Vg(b){var a,c=b[A];if(c&&c[nb]!=11)if(b[ad])return b[ad](k);else{for(;a=b[Tb];)c[Bb](a,b);return Sg(b)}}function Wg(b){return Xg(b[Tb],h)}function Yg(b){return Xg(b[fc],h)}function tca(b){return Xg(b[pc],k)}function Xg(b,a){for(;b&&b[nb]!=1;)b=a?b[fc]:b[pc];return b}function qca(b){return af(b)&&b[nb]>0}\r
17409 function Zg(b,a){if(b[bd]&&a[nb]==1)return b==a||b[bd](a);if(typeof b[taa]!="undefined")return b==a||Boolean(b[taa](a)&16);for(;a&&b!=a;)a=a[A];return a==b}function Eg(b){return b[nb]==9?b:b[Mc]||b[yc]}var uca="textContent";function ah(b,a){if(uca in b)b.textContent=a;else if(b[Tb]&&b[Tb][nb]==3){for(;b[Qc]!=b[Tb];)b[Nc](b[Qc]);ma(b[Tb],a)}else{Pg(b);b[o](Eg(b)[yb](a))}}function bh(b,a){var c=[];return vca(b,a,c,h)?c[0]:undefined}function wca(b,a){var c=[];vca(b,a,c,k);return c}\r
17410 function vca(b,a,c,d){if(b!=i)for(var f=0,g;g=b[cc][f];f++){if(a(g)){c[p](g);if(d)return h}if(vca(g,a,c,d))return h}return k}var xca="innerText",ch="\n";function dh(b){if(L&&xca in b)b=b[waa][mb](/(\r\n|\r|\n)/g,ch);else{var a=[];yca(b,a,h);b=a[kd](I)}b=b[mb](/\xAD/g,I);b=b[mb](/ +/g,J);if(b!=J)b=b[mb](/^\s*/,I);return b}function eh(b){var a=[];yca(b,a,k);return a[kd](I)}\r
17411 function yca(b,a,c){if(!(b[Gb]in zca))if(b[nb]==3)c?a[p](String(b[md])[mb](/(\r\n|\r|\n)/g,I)):a[p](b[md]);else if(b[Gb]in Aca)a[p](Aca[b[Gb]]);else for(b=b[Tb];b;){yca(b,a,c);b=b[fc]}}function rca(b){if(b&&typeof b[u]==Qe)if(af(b))return typeof b[Ab]==Se||typeof b[Ab]==Xe;else if(Ze(b))return typeof b[Ab]==Se;return k}function fh(b,a,c){return gh(b,function(d){return(!a||d[Gb]==a)&&(!c||Bg(d,c))},h)}\r
17412 function gh(b,a,c,d){if(!c)b=b[A];c=d==i;for(var f=0;b&&(c||f<=d);){if(a(b))return b;b=b[A];f++}return i}function Dg(b){this.ki=b||Je[yc]||ea}function Bca(){}function N(b,a){za(this,b);Pa(this,a);sa(this,this[y])}function hh(b,a){b&&this.wc(b,a)}function Cca(){}\r
17413 function ih(b,a,c,d,f){if(a)if(Ve(a)){for(var g=0;g<a[u];g++)ih(b,a[g],c,d,f);return i}else{d=!!d;var j=jh;a in j||(j[a]=Dca());j=j[a];if(!(d in j)){j[d]=Dca();j.Cf++}j=j[d];var n=bf(b),s;j.SL++;if(j[n]){s=j[n];for(g=0;g<s[u];g++){j=s[g];if(j.GA==c&&j.Si==f){if(j.rla)break;return s[g].key}}}else{s=j[n]=Eca();j.Cf++}g=Fca();g.src=b;j=Gca();j.wc(c,g,b,a,d,f);c=j.key;g.key=c;s[p](j);kh[c]=j;lh[n]||(lh[n]=Eca());lh[n][p](j);if(b[Vb]){if(b==Je||!b.f8a)b[Vb](a,g,d)}else b[vaa](Hca(a),g);return c}else e(Error(".10"))}\r
17414 function mh(b,a,c,d,f){if(Ve(a)){for(var g=0;g<a[u];g++)mh(b,a[g],c,d,f);return i}b=ih(b,a,c,d,f);kh[b].e5a=h;return b}function nh(b,a,c,d,f){if(Ve(a)){for(var g=0;g<a[u];g++)nh(b,a[g],c,d,f);return i}d=!!d;b=Ica(b,a,d);if(!b)return k;for(g=0;g<b[u];g++)if(b[g].GA==c&&b[g][Fb]==d&&b[g].Si==f)return oh(b[g].key);return k}\r
17415 function oh(b){if(!kh[b])return k;var a=kh[b];if(a.rla)return k;var c=a.src,d=a[Zb],f=a.qf,g=a[Fb];if(c[Ac]){if(c==Je||!c.f8a)c[Ac](d,f,g)}else c.detachEvent&&c.detachEvent(Hca(d),f);c=bf(c);f=jh[d][g][c];if(lh[c]){var j=lh[c];jf(j,a);j[u]==0&&delete lh[c]}a.rla=h;f.h2b=h;Jca(d,g,c,f);delete kh[b];return h}\r
17416 function Jca(b,a,c,d){if(!d.vRa)if(d.h2b){for(var f=0,g=0;f<d[u];f++)if(d[f].rla){var j=d[f].qf;j.src=i;Kca(j);Lca(d[f])}else{if(f!=g)d[g]=d[f];g++}Ia(d,g);d.h2b=k;if(g==0){Mca(d);delete jh[b][a][c];jh[b][a].Cf--;if(jh[b][a].Cf==0){Nca(jh[b][a]);delete jh[b][a];jh[b].Cf--}if(jh[b].Cf==0){Nca(jh[b]);delete jh[b]}}}}\r
17417 function ph(b,a,c){var d=0,f=b==i,g=a==i,j=c==i;c=!!c;if(f)uf(lh,function(s){for(var v=s[u]-1;v>=0;v--){var C=s[v];if((g||a==C[Zb])&&(j||c==C[Fb])){oh(C.key);d++}}});else{b=bf(b);if(lh[b]){b=lh[b];for(f=b[u]-1;f>=0;f--){var n=b[f];if((g||a==n[Zb])&&(j||c==n[Fb])){oh(n.key);d++}}}}return d}function Ica(b,a,c){var d=jh;if(a in d){d=d[a];if(c in d){d=d[c];b=bf(b);if(d[b])return d[b]}}return i}var qh="on";function Hca(b){if(b in Oca)return Oca[b];return Oca[b]=qh+b}\r
17418 function rh(b,a,c,d,f){var g=1;a=bf(a);if(b[a]){b.SL--;b=b[a];if(b.vRa)b.vRa++;else b.vRa=1;try{for(var j=b[u],n=0;n<j;n++){var s=b[n];if(s&&!s.rla)g&=Pca(s,f)!==k}}finally{b.vRa--;Jca(c,d,a,b)}}return Boolean(g)}function Pca(b,a){a=b[Xb](a);b.e5a&&oh(b.key);return a}\r
17419 function sh(b,a){if(Ye(a))a=new N(a,b);else if(a instanceof N)Pa(a,a[y]||b);else{var c=a;a=new N(a[Zb],b);zf(a,c)}c=1;var d,f=a[Zb],g=jh;if(!(f in g))return h;g=g[f];f=h in g;var j;if(f){d=[];for(j=b;j;j=j.rv())d[p](j);j=g[h];j.SL=j.Cf;for(var n=d[u]-1;!a.sQ&&n>=0&&j.SL;n--){sa(a,d[n]);c&=rh(j,d[n],a[Zb],h,a)&&a.t1!=k}}if(k in g){j=g[k];j.SL=j.Cf;if(f)for(n=0;!a.sQ&&n<d[u]&&j.SL;n++){sa(a,d[n]);c&=rh(j,d[n],a[Zb],k,a)&&a.t1!=k}else for(b=b;!a.sQ&&b&&j.SL;b=b.rv()){sa(a,b);c&=rh(j,b,a[Zb],k,a)&&a.t1!=\r
17420 k}}return Boolean(c)}var Qca="window.event";\r
17421 function th(b,a){if(!kh[b])return h;b=kh[b];var c=b[Zb],d=jh;if(!(c in d))return h;d=d[c];var f,g;if(L){f=a||Le(Qca);a=h in d;var j=k in d;if(a){if(f[Sb]<0||f.returnValue!=undefined)return h;a:{var n=k;if(f[Sb]==0)try{xa(f,-1);break a}catch(s){n=h}if(n||f.returnValue==undefined)paa(f,h)}}n=Rca();n.wc(f,this);f=h;try{if(a){for(var v=Eca(),C=n[Hb];C;C=C[A])v[p](C);g=d[h];g.SL=g.Cf;for(var M=v[u]-1;!n.sQ&&M>=0&&g.SL;M--){sa(n,v[M]);f&=rh(g,v[M],c,h,n)}if(j){g=d[k];g.SL=g.Cf;for(M=0;!n.sQ&&M<v[u]&&g.SL;M++){sa(n,\r
17422 v[M]);f&=rh(g,v[M],c,k,n)}}}else f=Pca(b,n)}finally{if(v){Ia(v,0);Mca(v)}n.D();Sca(n)}return f}g=new hh(a,this);try{f=Pca(b,g)}finally{g.D()}return f}function uh(){}var vh="@",wh="]",xh=")";\r
17423 function yh(b){b=String(b);if(/^\s*$/[cb](b)?k:/^[\],:{}\s\u2028\u2029]*$/[cb](b[mb](/\\["\\\/bfnrtu]/g,vh)[mb](/"[^"\\\n\r\u2028\u2029\x00-\x08\x10-\x1f\x80-\x9f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,wh)[mb](/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g,I)))try{return eval(gg+b+xh)}catch(a){}e(Error(".11`"+b))}function zh(b){return(new Tca).Xs(b)}function Tca(){}var Uca="\\u",Vca="000",Wca="00",Ah="0";\r
17424 function Xca(b,a,c){c[p](Vf,a[mb](Yca,function(d){if(d in Zca)return Zca[d];var f=d[Xc](0),g=Uca;if(f<16)g+=Vca;else if(f<256)g+=Wca;else if(f<4096)g+=Ah;return Zca[d]=g+f[t](16)}),Vf)}function Bh(b,a){this.Ly=b||1;this.UDa=a||Ch;this.E4a=G(this.Pnd,this);this.Oia=Zf()}function Dh(b,a,c){if(Ze(b)){if(c)b=G(b,c)}else if(b&&typeof b[Xb]==Se)b=G(b[Xb],b);else e(Error(".9"));return a>2147483647?-1:Ch[xc](b,a||0)}function Eh(b){Ch[gb](b)}function ada(){if(Fh){this.GY={};this.a1a={};this.oZa=[]}}\r
17425 function bda(b,a){if(b.Lf){a=Ye(a)?a:af(a)?bf(a):I;b.oZa[p](a)}}function cda(b){if(b.Lf){var a=b.oZa.pop();dda(b,a)}}function eda(b,a){if(b.Lf){a=bf(a);for(var c=0;c<b.oZa[u];c++){var d=b.oZa[c];fda(b,b.GY,d,a);fda(b,b.a1a,a,d)}}}function dda(b,a){var c=b.a1a[a],d=b.GY[a];c&&d&&Ff(c,function(f){Ff(d,function(g){fda(this,this.GY,f,g);fda(this,this.a1a,g,f)},this)},b)}function fda(b,a,c,d){a[c]||(a[c]=[]);ef(a[c],d)||a[c][p](d)}function gda(){return hda()}\r
17426 var ida="MSXML2.XMLHTTP.6.0",jda="MSXML2.XMLHTTP.3.0",kda="MSXML2.XMLHTTP",lda="Microsoft.XMLHTTP";function mda(){if(!nda&&typeof XMLHttpRequest=="undefined"&&typeof ActiveXObject!="undefined"){for(var b=[ida,jda,kda,lda],a=0;a<b[u];a++){var c=b[a];try{new ActiveXObject(c);return nda=c}catch(d){}}e(Error(".13"))}return nda}function Gh(){this.headers=new Hf}var Hh="complete",Ih="ready";function Jh(b,a,c,d,f,g){var j=new Gh;oda[p](j);a&&ih(j,Hh,a);ih(j,Ih,df(pda,j));g&&j.X1(g);j[Mb](b,c,d,f)}\r
17427 function qda(b,a){Gh[w].oqb=og(b,Gh[w].oqb,a)}function pda(b){b.D();jf(oda,b)}var Kh="error";function rda(b){if(!b.vab){b.vab=h;b[r](Hh);b[r](Kh)}}var Lh="readystatechange",Mh="success",sda=" [";function tda(b){if(b.ng)if(typeof uda!="undefined")if(!(b.Z0a[1]&&b.ts()==4&&b.hf()==2))if(b.XOa&&b.ts()==4)Ch[xc](G(b.Y5b,b),0);else{b[r](Lh);if(b.jm()){b.ng=k;if(b.ye()){b[r](Hh);b[r](Mh)}else{b.eo=6;var a;try{a=b.ts()>2?b.ob.statusText:I}catch(c){a=I}b.wk=a+sda+b.hf()+wh;rda(b)}vda(b)}}}\r
17428 function vda(b,a){if(b.ob){var c=b.ob,d=b.Z0a[0]?Me:i;b.ob=i;b.Z0a=i;if(b.hD){Ch[gb](b.hD);b.hD=i}if(!a){bda(Nh,c);b[r](Ih);cda(Nh)}if(Nh.Lf){b=bf(c);delete Nh.a1a[b];for(var f in Nh.GY){jf(Nh.GY[f],b);Nh.GY[f][u]==0&&delete Nh.GY[f]}}try{ja(c,d)}catch(g){}}}function Oh(b,a){this.defaultValue=b;za(this,a);pa(this,b)}var Ph="b";function Qh(b){Oh[z](this,b,Ph)}function Rh(b){oaa(this,(new Error)[Gc]||I);Fba(this);if(b)Oa(this,String(b))}\r
17429 function Sh(b,a){var c;if(b instanceof Sh){this.hma(a==i?b.hP:a);this.Pr(b.ul);wda(this,b.DX);this.iB(b.Jk());Th(this,b.UA);this.Or(b.Vf);this.Jx(b.Of().vc());Uh(this,b.td())}else if(b&&(c=String(b)[Kb](Vh))){this.hma(!!a);this.Pr(c[1]||I,h);wda(this,c[2]||I,h);this.iB(c[3]||I,h);Th(this,c[4]);this.Or(c[5]||I,h);this.uo(c[6]||I,h);Uh(this,c[7]||I,h)}else{this.hma(!!a);this.Vs=new Wh(i,this,this.hP)}}function wda(b,a,c){Xh(b);delete b.DG;b.DX=c?Yh(a):a;return b}\r
17430 function Th(b,a){Xh(b);delete b.DG;if(a){a=Number(a);if(ia(a)||a<0)e(Error(".15`"+a));b.UA=a}else b.UA=i;return b}function Zh(b,a){return b.Vs.J(a)}function Uh(b,a,c){Xh(b);delete b.DG;b.N5=c?Yh(a):a;return b}var ai="zx";function bi(b){Xh(b);b.ka(ai,Yf());return b}function Xh(b){if(b.xia)e(Error(".16"))}function ci(b,a,c,d,f,g,j,n){n=new Sh(i,n);b&&n.Pr(b);a&&wda(n,a);c&&n.iB(c);d&&Th(n,d);f&&n.Or(f);g&&n.Jx(g);j&&Uh(n,j);return n}function Yh(b){return b?ga(b):I}\r
17431 function xda(b,a){var c=i;if(Ye(b)){c=b;yda[cb](c)||(c=encodeURI(b));if(c[Pc](a)>=0)c=c[mb](a,zda)}return c}var di="%";function zda(b){b=b[Xc](0);return di+(b>>4&15)[t](16)+(b&15)[t](16)}function Wh(b,a,c){this.mT=b||i;this.Bf=a||i;this.hP=!!c}var ei="=";function fi(b){if(!b.km){b.km=new Hf;if(b.mT)for(var a=b.mT[Cc](Sf),c=0;c<a[u];c++){var d=a[c][Db](ei),f=i,g=i;if(d>=0){f=a[c][Zc](0,d);g=a[c][Zc](d+1)}else f=a[c];f=Rf(f);f=gi(b,f);b.add(f,g?Rf(g):I)}}}\r
17432 function Ada(b,a,c){var d=Df(b);if(typeof d=="undefined")e(Error(".17"));b=Cf(b);if(d[u]!=b[u])e(Error(".18"));a=new Wh(i,a,c);for(c=0;c<d[u];c++)a.add(d[c],b[c]);return a}function hi(b){delete b.Cea;delete b.mT;b.Bf&&delete b.Bf.DG}function gi(b,a){a=String(a);if(b.hP)a=a[od]();return a}var ii="i";function ji(b){Oh[z](this,b,ii)}var ki="s";function Bda(b){Oh[z](this,b,ki)}var Cda="[exception trying to get caller]";\r
17433 function Dda(b,a,c){c[p](b);try{if(b[Jc])a-- >0?Dda(b[Jc],a,c):c[p](lg)}catch(d){c[p](Cda)}}function Eda(b,a,c,d,f){var g=[];Dda(arguments[Hc],5,g);var j=Fda(b,a,c,d,f);if(j)kh[j].nZa=g;return j}var Gda=";domain=",Hda=";path=",Ida=";expires=";function li(b,a,c,d,f){if(/[;=]/[cb](b))e(Error(".19`"+b));if(/;/[cb](a))e(Error(".20`"+a));Ke(c)||(c=-1);ea.cookie=b+ei+a+(f?Gda+f:I)+(d?Hda+d:I)+(c<0?I:c==0?Ida+(new Date(1970,1,1))[zaa]():Ida+(new Date((new Date)[hc]()+c*1E3))[zaa]())}\r
17434 function mi(b,a){b=b+ei;for(var c=String(ea[sb])[Cc](Jda),d=0,f;f=c[d];d++)if(f[Db](b)==0)return f[nc](b[u]);return a}function ni(b,a,c){var d=Ke(mi(b));li(b,I,0,a,c);return d}var Kda="GMAIL_LF";function oi(b){ni(b,pi);b=Lda.J(b);if((qi&b)==0){qi|=b;li(Kda,qi[t](16),31536E3,pi)}}function Mda(b){ni(b,pi);b=Lda.J(b);if(qi&b){qi&=~b;qi==0?ni(Kda,pi):li(Kda,qi[t](16),31536E3,pi)}}function ri(b){Ke(mi(b))&&oi(b);b=Lda.J(b);return(qi&b)!=0}function Nda(){this.eE=[];this.pDa=[];this.dna=[]}\r
17435 function si(b,a,c){return(a=Oda(a,c))&&a.js&&a.js[b]}function Oda(b,a){b=b?b[oc]:top[oc];try{if(b&&b.js&&(ti==b.js._GM_JSVersion||a))return b}catch(c){}return i}function Pda(b,a,c,d,f,g,j){return(b=si(b,a,c))&&b(d,f,g,j)}function Qda(){}function ui(b,a){this.WIb=[];this.eh=[i,i];this.LIb=b;this.kMb=a||i}function Rda(b,a){b.wE=a instanceof Error?1:0;b.eh[b.wE]=a;Sda(b)}function vi(b,a,c,d){b.WIb[p]([a,c,d]);b.wE>=0&&Sda(b);return b}\r
17436 function Sda(b){if(b.XAb&&b.wE!=0){Eh(b.XAb);delete b.XAb}for(var a=b.WIb,c=b.wE,d=b.eh[c],f=k,g;a[u]>0&&b.IV==0;){var j=a[db](),n=j[c];if(n)try{var s=n[z](j[2]||b.kMb,d);if(s!==undefined)d=s;c=d instanceof Error?1:0;if(d instanceof ui){g=G(b.Tyc,b);b.Mrb()}}catch(v){c=1;d=v;a[u]||(f=h)}}b.wE=c;b.eh[c]=d;if(g&&b.IV){vi(d,g,g,void 0);d.lwc=h}if(f)b.XAb=Dh(function(){e(d)})}function Tda(b){Rh[z](this);this.MAc=b}function wi(b){Rh[z](this);this.MAc=b}function xi(){}\r
17437 function Uda(b){this.yMb=b;this.irb=[];this.eza=[];this.G9a=[]}function Vda(b,a,c){for(b=0;b<a[u];b++)a[b][hd](c);Ia(a,0)}function Wda(b,a){this.SLa=b;this.na=a}function O(){this.bk={};this.eF=[];this.rI=[];this.U2=[];this.gIa={}}var yi="active",zi="idle",Xda="userActive",Yda="userIdle";function Ai(b){var a=b.TYb,c=b.Eb();if(c!=a){Zda(b,c?yi:zi);b.TYb=c}a=b.U2[u]>0;if(a!=b.mjc){Zda(b,a?Xda:Yda);b.mjc=a}}function aea(b,a){if(b.eF[u]==0)bea(b,a);else{b.rI[p](a);Ai(b)}}\r
17438 function bea(b,a,c,d){if(b.bk[a].hc())e(Error(".22`"+a));a=cea(b,a);if(!b.uHa&&a[u]>1){var f=a[db]();b.rI=a[wb](b.rI);a=[f]}if(!c)b.H6a=0;b.eF=a;Ai(b);b.Bxa.ySc(nf(a),b.bk,i,G(b.hJc,b),G(b.jJc,b),!!d)}function cea(b,a){var c=[a];for(a=nf(b.bk[a].yMb);a[u];){var d=a.pop();if(!b.bk[d].hc()){c[ld](d);Array[w][ld][cd](a,b.bk[d].yMb)}}rf(c);return c}function Bi(b,a){b.CSc=i;b.vea=a}function Ci(b){b.vea=i}\r
17439 function dea(b,a){var c=b.eF.pop();Ia(b.eF,0);var d=Di(b.rI,function(s){return ef(cea(b,s),c)});c&&hf(d,c);for(var f=0;f<d[u];f++){jf(b.rI,d[f]);jf(b.U2,d[f])}var g=b.gIa[Xa];if(g)for(f=0;f<g[u];f++)for(var j=g[f],n=0;n<d[u];n++)j(Kh,d[n],a);b.bk[c]&&b.bk[c].dza(a);Ai(b)}function eea(b){for(;b.rI[u];){var a=b.rI[db]();if(!b.bk[a].hc()){bea(b,a);return}}Ai(b)}function Zda(b,a){b=b.gIa[a];for(var c=0;b&&c<b[u];c++)b[c](a)}\r
17440 var fea=fa[0],gea=fa[2],Ei=fa[3],ti=fa[4],hea=fa[5],Fi=fa[6],pi=fa[7],iea=fa[8],Gi=fa[9],Hi=fa[10],jea=fa[11],kea=fa[12],lea=fa[14],Ii=fa[15],Ji=fa[16],mea=fa[17],nea=fa[18],Ki=fa[19],oea=fa[20],pea=fa[21],qea=fa[22],rea=fa[23],sea=fa[24],tea=fa[25];_B_prog(4)}catch(e){_B_err(e)}\r
17441 \r
17442 try{var uda=uda||{},Je=this,cf="closure_hashCode_"+l[rb](l[Tc]()*2147483648)[t](36),hba=0,Zf=Date.now||function(){return+new Date};caa[w].GHb=function $e(a){if(arguments[u]>1){var c=Array[w][lb][z](arguments,1);c[ld](this,a);return G[cd](i,c)}else return G(this,a)};caa[w].vC=function $f(a){H(this,a)};var lf=Array[w],ff=lf[Db]?function(b,a,c){return lf[Db][z](b,a,c)}:function(b,a,c){c=c==i?0:c<0?l.max(0,b[u]+c):c;if(Ye(b)){if(!Ye(a)||a[u]!=1)return-1;return b[Db](a,c)}for(c=c;c<b[u];c++)if(c in b&&b[c]===a)return c;return-1},Ff=lf[Ub]?function(b,a,c){lf[Ub][z](b,a,c)}:function(b,a,c){for(var d=b[u],f=Ye(b)?b[Cc](I):b,g=0;g<d;g++)g in f&&a[z](c,f[g],g,b)},Di=lf[Ya]?function(b,a,c){return lf[Ya][z](b,a,c)}:function(b,a,c){for(var d=b[u],f=[],g=0,j=Ye(b)?b[Cc](I):b,n=0;n<d;n++)if(n in j){var s=j[n];\r
17443 if(a[z](c,s,n,b))f[g++]=s}return f},Li=lf.map?function(b,a,c){return lf.map[z](b,a,c)}:function(b,a,c){for(var d=b[u],f=new Array(d),g=Ye(b)?b[Cc](I):b,j=0;j<d;j++)if(j in g)f[j]=a[z](c,g[j],j,b);return f},Mi=lf[Aaa]?function(b,a,c){return lf[Aaa][z](b,a,c)}:function(b,a,c){for(var d=b[u],f=Ye(b)?b[Cc](I):b,g=0;g<d;g++)if(g in f&&a[z](c,f[g],g,b))return h;return k},Gf=lf[Caa]?function(b,a,c){return lf[Caa][z](b,a,c)}:function(b,a,c){for(var d=b[u],f=Ye(b)?b[Cc](I):b,g=0;g<d;g++)if(g in f&&!a[z](c,\r
17444 f[g],g,b))return k;return h};var Ni="StopIteration"in Je?Je.StopIteration:Error(".2");Ma(tf[w],function $g(){e(Ni)});tf[w].mG=function $h(){return this};var lba=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"];F=Hf[w];F.Cf=0;F.FX=0;var uea="Cf";F.Nb=D(uea);F.Oa=function $j(){qba(this);for(var a=[],c=0;c<this.ri[u];c++)a[p](this.yd[this.ri[c]]);return a};F.Sb=function $k(){qba(this);return this.ri[wb]()};F.Xb=function $l(a){return If(this.yd,a)};F.BS=function $m(a){for(var c=0;c<this.ri[u];c++){var d=this.ri[c];if(If(this.yd,d)&&this.yd[d]==a)return h}return k};\r
17445 F.Qc=function $n(a,c){if(this===a)return h;if(this.Cf!=a.Nb())return k;c=c||pba;qba(this);for(var d,f=0;d=this.ri[f];f++)if(!c(this.J(d),a.J(d)))return k;return h};F.nd=function $o(){return this.Cf==0};Aa(F,function $p(){this.yd={};Ia(this.ri,0);this.FX=this.Cf=0});wa(F,function $q(a){if(If(this.yd,a)){delete this.yd[a];this.Cf--;this.FX++;this.ri[u]>2*this.Cf&&qba(this);return h}return k});F.J=function $r(a,c){if(If(this.yd,a))return this.yd[a];return c};\r
17446 F.set=function $s(a,c){if(!If(this.yd,a)){this.Cf++;this.ri[p](a);this.FX++}this.yd[a]=c};F.Vl=function $t(a){var c;if(a instanceof Hf){c=a.Sb();a=a.Oa()}else{c=xf(a);a=wf(a)}for(var d=0;d<c[u];d++)this.set(c[d],a[d])};F.vc=function $u(){return new Hf(this)};F.mG=function $w(a){qba(this);var c=0,d=this.ri,f=this.yd,g=this.FX,j=this,n=new tf;Ma(n,function $v(){for(;;){if(g!=j.FX)e(Error(".6"));if(c>=d[u])e(Ni);var v=d[c++];return a?v:f[v]}});return n};F=Jf[w];F.Pc=k;var Oi="Pc";F.yPc=D(Oi);F.xga=Jf[w].yPc;F.D=function $y(){if(!this.Pc){this.Pc=h;this.L()}};F.L=B();H(Lf,Jf);F=Lf[w];F.r4=i;F.VMb=i;F.Iw=function $A(){if(this.nv[u])return this.nv.pop();return this[sc]()};F.ez=function $B(a){this.nv[u]<this.LP?this.nv[p](a):this.ZS(a)};laa(F,function $C(){return this.r4?this.r4():{}});F.ZS=function $D(a){if(this.VMb)this.VMb(a);else if(Ze(a.D))a.D();else for(var c in a)delete a[c]};F.L=function $E(){Lf.C.L[z](this);for(var a=this.nv;a[u];)this.ZS(a.pop());delete this.nv};var rba=/^[a-zA-Z0-9\-_.!~*'()]*$/,wba=/&/g,xba=/</g,yba=/>/g,zba=/\"/g,Aba=/[&<>\"]/,vea=Zf();F=cg[w];F.Nb=function $F(){return this.yd.Nb()};F.add=function $G(a){this.yd.set(Dba(a),a)};F.Vl=function $H(a){a=Cf(a);for(var c=a[u],d=0;d<c;d++)this.add(a[d])};F.wb=function $I(a){a=Cf(a);for(var c=a[u],d=0;d<c;d++)this[Pb](a[d])};wa(F,function $J(a){return this.yd[Pb](Dba(a))});Aa(F,function $K(){this.yd[bc]()});F.nd=function $L(){return this.yd.nd()};Sa(F,function $M(a){return this.yd.Xb(Dba(a))});F.iwa=function $N(a){var c=new cg;a=Cf(a);for(var d=0;d<a[u];d++){var f=a[d];this[bd](f)&&c.add(f)}return c};\r
17447 F.Oa=function $O(){return this.yd.Oa()};F.vc=function $P(){return new cg(this)};F.Qc=function $Q(a){return this.Nb()==mba(a)&&this.mQa(a)};F.mQa=function $R(a){var c=mba(a);if(this.Nb()>c)return k;if(!(a instanceof cg)&&c>5)a=new cg(a);return oba(this,function(d){return nba(a,d)})};F.mG=function $S(){return this.yd.mG(k)};var Sba={};Tba[w].Gdb=function $T(a,c){var d=this;c&&Mba(15);return function(){try{return a[cd](this,arguments)}catch(f){d.rOb(f);e(f)}finally{}}};H(Xba,Tba);var wea="__hooked_";Xba[w].Gdb=function $U(a,c){var d=wea+ +bf(this)+ng;a[d]||(a[d]=Yba(this,a));a=a[d];if(this.oBc)return a;return Xba.C.Gdb[z](this,a,c)};Zba[w].wc=function $V(){this.Dla=[]};var tg=new Zba;var Pi,xea,yea,zea,Aea,Qi,Ri,Si;Aea=zea=yea=xea=Pi=k;var Bea,Cea="Mobile";if(Bea=ug()){var Dea=aca();Pi=Bea[Db]("Opera")==0;xea=!Pi&&Bea[Db]("MSIE")!=-1;zea=(yea=!Pi&&Bea[Db]("WebKit")!=-1)&&Bea[Db](Cea)!=-1;Aea=!Pi&&!yea&&Dea.product=="Gecko"}var Ng=Pi,L=xea,Fh=Aea,Jg=yea,mca=zea,Eea=aca(),Ti=Eea&&Eea.platform||I;Qi=Xf(Ti,"Mac");Ri=Xf(Ti,"Win");Si=Xf(Ti,"Linux");var Fea=!!aca()&&Xf(aca().appVersion||I,"X11"),Gea=I,Hea;\r
17448 if(Ng&&Je.opera){var Iea=Je.opera[Za];Gea=typeof Iea==Se?Iea():Iea}else{if(Fh)Hea=/rv\:([^\);]+)(\)|;)/;else if(L)Hea=/MSIE\s+([^\);]+)(\)|;)/;else if(Jg)Hea=/WebKit\/(\S+)/;if(Hea){var Jea=Hea[hb](ug());Gea=Jea?Jea[1]:I}}var wg=Gea,bca={};xg[w].vc=function $W(){return new xg(this.x,this.y)};F=yg[w];F.vc=function $X(){return new yg(this[ib],this[id])};F.ktc=function $Y(){return this[ib]*this[id]};F.x3a=function $Z(){return this[ib]/this[id]};F.nd=function $_(){return!this.ktc()};F.ceil=function $0(){ka(this,l[ob](this[ib]));Wa(this,l[ob](this[id]));return this};F.floor=function $1(){ka(this,l[rb](this[ib]));Wa(this,l[rb](this[id]));return this};F.round=function $2(){ka(this,l[kb](this[ib]));Wa(this,l[kb](this[id]));return this};F.scale=function $3(a){this.width*=a;this.height*=a;return this};_B_prog(5)}catch(e){_B_err(e)}\r
17449 \r
17450 try{var eca;var Ui="height",Vi="width",Wi="type",jca={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:Ui,width:Vi,usemap:"useMap",frameborder:"frameBorder",type:Wi},zca={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},Aca={IMG:J,BR:ch};F=Dg[w];F.W=Cg;var Kea="ki";F.cb=D(Kea);F.b=function $5(a){return Ye(a)?this.ki[ub](a):a};F.Qa=Dg[w].b;F.ie=function $6(a,c,d){return fca(this.ki,a,c,d)};F.Gkc=Dg[w].ie;F.nCa=Lg;F.UO=function $7(a){return Mg(a||this.Ec())};\r
17451 F.ba=function $8(){return pca(this.ki,arguments)};F.NR=Dg[w].ba;F.createElement=function $9(a){return this.ki[Qb](a)};F.createTextNode=function $$(a){return this.ki[yb](a)};F.Ec=function $aa(){return this.ki[ac]||this.ki[dc]};daa(F,Og);F.ZA=Pg;F.yA=Qg;F.xA=Rg;qaa(F,Sg);F.oac=Ug;F.sbb=Vg;F.Bp=Wg;F.LT=Yg;F.b_=tca;F.mjb=qca;Sa(F,Zg);F.Fp=Eg;F.TQ=ah;F.iEc=bh;F.hbb=wca;F.neb=dh;F.zFc=fh;F.yFc=gh;var Lea="L2.NativeHelper";Bca[w].sPa=function $ba(){if(L)try{var a=new ActiveXObject(Lea);if(a.gcTracer){a.gcTracer.installGcTracing();this.LZ=a.gcTracer}}catch(c){}};Qa(Bca[w],function $ca(){if(this.LZ){this.LZ.isTracing()&&this.LZ.endGcTracing();this.LZ.startGcTracing()}});Ga(Bca[w],function $da(){if(this.LZ&&this.LZ.isTracing()){var a=this.LZ;this.LZ.endGcTracing();for(var c=a.getNumTraces(),d=0,f=0;f<c;f++){var g=a.getTrace(f).gcElapsedTime;l[kb](g*10)/10;d+=g}}});var Mea=new Bca;H(N,Jf);F=N[w];F.L=function $ea(){delete this[Zb];delete this[y];delete this[Hb]};F.sQ=k;F.t1=h;F.stopPropagation=function $fa(){this.sQ=h};F.preventDefault=function $ga(){this.t1=k};H(hh,N);F=hh[w];Pa(F,i);F.relatedTarget=i;F.offsetX=0;F.offsetY=0;Da(F,0);Ea(F,0);faa(F,0);gaa(F,0);eaa(F,0);xa(F,0);haa(F,0);F.ctrlKey=k;F.altKey=k;F.shiftKey=k;F.metaKey=k;F.pj=i;var Xi="mouseover",Yi="mouseout",Zi="keypress";\r
17452 F.wc=function $ha(a,c){var d=za(this,a[Zb]);Pa(this,a[y]||a[saa]);sa(this,c);if(c=a[eb]){if(Fh)try{c=c[Gb]&&c}catch(f){c=i}}else if(d==Xi)c=a.fromElement;else if(d==Yi)c=a.toElement;this.relatedTarget=c;this.offsetX=a.offsetX!==undefined?a.offsetX:a.layerX;this.offsetY=a.offsetY!==undefined?a.offsetY:a.layerY;Da(this,a[kc]!==undefined?a[kc]:a.pageX);Ea(this,a[lc]!==undefined?a[lc]:a.pageY);faa(this,a[Ib]||0);gaa(this,a[Jb]||0);eaa(this,a[Cb]);xa(this,a[Sb]||0);haa(this,a[Ob]||(d==Zi?a[Sb]:0));this.ctrlKey=\r
17453 a[Bc];this.altKey=a[rc];this.shiftKey=a[dd];this.metaKey=a[Eb];this.pj=a;delete this.t1;delete this.sQ};F.stopPropagation=function $ia(){this.sQ=h;if(this.pj[Ec])this.pj[Ec]();else this.pj.cancelBubble=h};var aj="8",Nea=L&&!vg(aj);hh[w].preventDefault=function $ja(){this.t1=k;var a=this.pj;if(a[zb])a[zb]();else{paa(a,k);if(Nea)try{if(a[Bc]||a[Sb]>=112&&a[Sb]<=123)xa(a,-1)}catch(c){}}};var Oea="pj";hh[w].DFc=D(Oea);\r
17454 hh[w].L=function $la(){hh.C.L[z](this);this.pj=i;Pa(this,i);sa(this,i);this.relatedTarget=i};var bj;var Pea=(bj="ScriptEngine"in Je&&Je.ScriptEngine()=="JScript")?Je.ScriptEngineMajorVersion()+He+Je.ScriptEngineMinorVersion()+He+Je.ScriptEngineBuildVersion():Ah;var Qea=0;F=Cca[w];F.key=0;F.rla=k;F.e5a=k;F.wc=function $ma(a,c,d,f,g,j){if(Ze(a))this.HXb=h;else if(a&&a[Xb]&&Ze(a[Xb]))this.HXb=k;else e(Error(".9"));this.GA=a;this.qf=c;this.src=d;za(this,f);this.capture=!!g;this.Si=j;this.e5a=k;this.key=++Qea;this.rla=k};ya(F,function $na(a){if(this.HXb)return this.GA[z](this.Si||this.src,a);return this.GA[Xb][z](this.GA,a)});var Dca,Nca,Eca,Mca,Fca,Rea,Kca,Gca,Lca,Rca,Sca,Sea="5.7";\r
17455 (function(){function b(){return{Cf:0,SL:0}}function a(){return[]}function c(){function Y(ha){return j[z](Y.src,Y.key,ha)}return Y}function d(){return new Cca}function f(){return new hh}var g=bj&&!(bg(Pea,Sea)>=0),j;Rea=function $oa(ha){j=ha};if(g){Dca=function $pa(){return n.Iw()};Nca=function $qa(ha){n.ez(ha)};Eca=function $ra(){return s.Iw()};Mca=function $sa(ha){s.ez(ha)};Fca=function $ta(){return v.Iw()};Kca=function $ua(){v.ez(c())};Gca=function $va(){return C.Iw()};Lca=function $wa(ha){C.ez(ha)};\r
17456 Rca=function $xa(){return M.Iw()};Sca=function $ya(ha){M.ez(ha)};var n=new Lf(0,600);n.r4=b;var s=new Lf(0,600);s.r4=a;var v=new Lf(0,600);v.r4=c;var C=new Lf(0,600);C.r4=d;var M=new Lf(0,600);M.r4=f}else{Dca=b;Nca=Me;Eca=a;Mca=Me;Fca=c;Kca=Me;Gca=d;Lca=Me;Rca=f;Sca=Me}})();var kh={},jh={},lh={},Oca={},cj="focusin",Tea=L?cj:"DOMFocusIn",dj="focusout",Uea=L?dj:"DOMFocusOut",P="click",ej="dblclick",fj="mousedown",gj="mouseup",hj="mousemove",Vea="selectstart",ij="keydown",jj="keyup",kj="blur",lj="focus",Wea="deactivate",mj="change",nj="select",oj="submit",pj="contextmenu",qj="dragstart",Xea="hashchange",rj="load",Yea="losecapture",sj="resize",tj="scroll",uj="unload",Zea={Vsd:P,ltd:ej,fwd:fj,jwd:gj,iwd:Xi,hwd:Yi,gwd:hj,eyd:Vea,yvd:Zi,xvd:ij,zvd:jj,slc:kj,anc:lj,ntd:Wea,\r
17457 gud:Tea,hud:Uea,Dlc:mj,tpc:nj,Pyd:oj,ftd:pj,Atd:qj,yDb:Kh,Iud:Xea,pnc:"help",E1a:rj,Nvd:Yea,rxd:Lh,Uxd:sj,Zxd:tj,Aqc:uj};Rea(th);H(uh,Jf);F=uh[w];F.f8a=h;F.Drb=i;F.rv=D("Drb");F.dk=Ge("Drb");F.addEventListener=function $Ba(a,c,d,f){ih(this,a,c,d,f)};F.removeEventListener=function $Ca(a,c,d,f){nh(this,a,c,d,f)};ra(F,function $Da(a){return sh(this,a)});F.L=function $Ea(){uh.C.L[z](this);ph(this);this.Drb=i};Tca[w].Xs=function $Fa(a){var c=[];this.Haa(a,c);return c[kd](I)};var vj="[",wj=",",afa="{",xj=":",bfa="}";\r
17458 Tca[w].Haa=function $Ga(a,c){switch(typeof a){case Xe:Xca(this,a,c);break;case Qe:c[p](baa(a)&&!ia(a)?a:gba);break;case ig:c[p](a);break;case "undefined":c[p](gba);break;case Oe:if(a==i){c[p](gba);break}if(Ve(a)){var d=a[u];c[p](vj);for(var f=I,g=0;g<d;g++){c[p](f);this.Haa(a[g],c);f=wj}c[p](wh);break}c[p](afa);d=I;for(f in a)if(a[Kc](f)){g=a[f];if(typeof g!=Se){c[p](d);Xca(this,f,c);c[p](xj);this.Haa(g,c);d=wj}}c[p](bfa);break;case Se:break;default:e(Error(".12`"+typeof a))}};\r
17459 var cfa="\\n",Zca={'"':'\\"',"\\":"\\\\","/":"\\/","\u0008":"\\b","\u000c":"\\f","\n":cfa,"\r":"\\r","\t":"\\t","\u000b":"\\u000b"},Yca=/\uffff/[cb]("\uffff")?/[\\\"\x00-\x1f\x7f-\uffff]/g:/[\\\"\x00-\x1f\x7f-\xff]/g;H(Bh,uh);Ra(Bh[w],k);var Ch=Je.window;F=Bh[w];F.ab=i;F.setInterval=function $Ha(a){this.Ly=a;if(this.ab&&this[Vc]){this[qc]();this[Rc]()}else this.ab&&this[qc]()};F.Pnd=function $Ia(){if(this[Vc]){var a=Zf()-this.Oia;if(a>0&&a<this.Ly*0.8)this.ab=this.UDa[xc](this.E4a,this.Ly-a);else{this.e9a();if(this[Vc]){this.ab=this.UDa[xc](this.E4a,this.Ly);this.Oia=Zf()}}}};var yj="tick";F.e9a=function $Ja(){this[r](yj)};\r
17460 Qa(F,function $Ka(){Ra(this,h);if(!this.ab){this.ab=this.UDa[xc](this.E4a,this.Ly);this.Oia=Zf()}});Ga(F,function $La(){Ra(this,k);if(this.ab){this.UDa[gb](this.ab);this.ab=i}});F.L=function $Ma(){Bh.C.L[z](this);this[qc]();delete this.UDa};ada[w].Lf=Fh;ada[w].Ac=function $Na(a){this.Lf=Fh&&a};var Nh=new ada;var hda=i,dfa=i,efa=i;hda=function $Oa(){var a=mda();return a?new ActiveXObject(a):new XMLHttpRequest};dfa=function $Pa(){var a={};if(mda()){a[0]=h;a[1]=h}return a};efa=i;var nda=i;H(Gh,uh);var oda=[];F=Gh[w];F.ng=k;F.ob=i;F.Z0a=i;F.c8=I;F.zRc=I;F.eo=0;F.wk=I;F.vab=k;F.XOa=k;F.Hhb=k;F.s7=k;F.lX=0;F.hD=i;F.X1=function $Qa(a){this.lX=l.max(0,a)};var zj="GET",Aj="POST",Bj="Content-Type",ffa="application/x-www-form-urlencoded;charset=utf-8";\r
17461 ua(F,function $Ra(a,c,d,f){if(this.ng)e(Error(".14"));c=c||zj;this.c8=a;this.wk=I;this.eo=0;this.zRc=c;this.vab=k;this.ng=h;this.ob=new gda;this.Z0a=efa||(efa=dfa());eda(Nh,this.ob);ja(this.ob,G(this.Y5b,this));try{this.Hhb=h;this.ob[bb](c,a,h);this.Hhb=k}catch(g){this.wq(5,g);return}a=d||I;var j=this.headers.vc();f&&Ef(f,function(s,v){j.set(v,s)});c==Aj&&!j.Xb(Bj)&&j.set(Bj,ffa);Ef(j,function(s,v){this.ob.setRequestHeader(v,s)},this);try{if(this.hD){Ch[gb](this.hD);this.hD=i}if(this.lX>0)this.hD=\r
17462 Ch[xc](G(this.wo,this),this.lX);this.XOa=h;this.ob[Mb](a);this.XOa=k}catch(n){this.wq(5,n)}});ra(F,function $Sa(a){if(this.ob){bda(Nh,this.ob);try{return Gh.C[r][z](this,a)}finally{cda(Nh)}}else return Gh.C[r][z](this,a)});var gfa="Timed out after ",hfa="ms, aborting",Cj="timeout";F.wo=function $Ta(){if(typeof uda!="undefined")if(this.ob){this.wk=gfa+this.lX+hfa;this.eo=8;this[r](Cj);this[wc](8)}};\r
17463 F.wq=function $Ua(a,c){this.ng=k;if(this.ob){this.s7=h;this.ob[wc]();this.s7=k}this.wk=c;this.eo=a;rda(this);vda(this)};var Dj="abort";La(F,function $Va(a){if(this.ob){this.ng=k;this.s7=h;this.ob[wc]();this.s7=k;this.eo=a||7;this[r](Hh);this[r](Dj);vda(this)}});F.L=function $Wa(){if(this.ob){if(this.ng){this.ng=k;this.s7=h;this.ob[wc]();this.s7=k}vda(this,h)}Gh.C.L[z](this)};F.Y5b=function $Xa(){!this.Hhb&&!this.XOa&&!this.s7?this.oqb():tda(this)};F.oqb=function $Ya(){tda(this)};var Ej="ng";\r
17464 F.Eb=D(Ej);F.jm=function $_a(){return this.ts()==4};F.ye=function $0a(){switch(this.hf()){case 0:case 200:case 204:case 304:return h;default:return k}};F.ts=function $1a(){return this.ob?this.ob[Nb]:0};F.hf=function $2a(){try{return this.ts()>2?this.ob[Lb]:-1}catch(a){return-1}};F.zRb=function $3a(){return String(this.c8)};F.dj=function $4a(){return this.ob?this.ob.responseText:I};F.Mdb=function $5a(){return this.ob?yh(this.ob.responseText):undefined};\r
17465 F.Kga=function $6a(){return Ye(this.wk)?this.wk:String(this.wk)};_B_prog(6)}catch(e){_B_err(e)}\r
17466 \r
17467 try{var Fj="value";Oh[w].J=D(Fj);Oh[w].Ga=D(Wi);Oh[w].set=Ge(Fj);H(Qh,Oh);Qh[w].J=D(Fj);var Gj="off",Hj="1";Qh[w].Hwb=function $ab(a){var c=this[uaa];if(a==Ah||a==Gj||a==kg)c=k;else if(a==Hj||a==qh||a==jg)c=h;pa(this,c)};var Ij="7",ifa=new Qh(function(){if(L&&!vg(Ij)){var b=Number(ba.ScriptEngineMajorVersion()+He+ba.ScriptEngineMinorVersion());return!(b>=5.7||b==5.6&&ba.ScriptEngineBuildVersion()>=8834)}return k}());var jfa=new Qh(k),kfa=new Qh(k),lfa=new Qh(h),mfa=new Qh(h);H(Rh,Error);Ba(Rh[w],"CustomError");var Vh=/^(?:([^:\/?#]+):)?(?:\/\/(?:([^\/?#]*)@)?([^\/?#:@]*)(?::([0-9]+))?)?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/;F=Sh[w];F.ul=I;F.DX=I;F.Gt=I;F.UA=i;F.Vf=I;F.N5=I;F.xia=k;F.hP=k;var Jj="//",Kj="?",Lj="#";Ha(F,function $bb(){if(this.DG)return this.DG;var a=[];this.ul&&a[p](xda(this.ul,nfa),xj);if(this.Gt){a[p](Jj);this.DX&&a[p](xda(this.DX,nfa),vh);var c;c=this.Gt;c=Ye(c)?aa(c):i;a[p](c);this.UA!=i&&a[p](xj,String(this.UA))}this.Vf&&a[p](xda(this.Vf,ofa));(c=String(this.Vs))&&a[p](Kj,c);this.N5&&a[p](Lj,xda(this.N5,pfa));return this.DG=a[kd](I)});\r
17468 F.vc=function $cb(){return ci(this.ul,this.DX,this.Gt,this.UA,this.Vf,this.Vs.vc(),this.N5,this.hP)};F.Pr=function $db(a,c){Xh(this);delete this.DG;if(this.ul=c?Yh(a):a)this.ul=this.ul[mb](/:$/,I);return this};var qfa="Gt";F.Jk=D(qfa);F.iB=function $fb(a,c){Xh(this);delete this.DG;this.Gt=c?Yh(a):a;return this};F.u_=function $gb(){return!!this.Gt};F.Or=function $hb(a,c){Xh(this);delete this.DG;this.Vf=c?Yh(a):a;return this};\r
17469 F.Jx=function $ib(a,c){Xh(this);delete this.DG;if(a instanceof Wh){this.Vs=a;this.Vs.Bf=this;this.Vs.hma(this.hP)}else{c||(a=xda(a,rfa));this.Vs=new Wh(a,this,this.hP)}return this};F.uo=function $jb(a,c){return this.Jx(a,c)};F.Of=D("Vs");F.Qe=function $lb(){return this.Vs[t]()};F.ka=function $mb(a,c){Xh(this);delete this.DG;this.Vs.set(a,c);return this};var sfa="N5";F.td=D(sfa);F.bub=function $ob(a){Xh(this);this.Vs[Pb](a);return this};F.cQa=D("xia");F.hma=function $qb(a){this.hP=a;this.Vs&&this.Vs.hma(a)};\r
17470 var yda=/^[a-zA-Z0-9\-_.!~*'():\/;?]*$/,nfa=/[#\/\?@]/g,ofa=/[\#\?]/g,rfa=/[\#\?@]/g,pfa=/#/g;F=Wh[w];F.km=i;F.Cf=i;F.Nb=function $rb(){fi(this);return this.Cf};F.add=function $sb(a,c){fi(this);hi(this);a=gi(this,a);if(this.Xb(a)){var d=this.km.J(a);Ve(d)?d[p](c):this.km.set(a,[d,c])}else this.km.set(a,c);this.Cf++;return this};wa(F,function $tb(a){fi(this);a=gi(this,a);if(this.km.Xb(a)){hi(this);var c=this.km.J(a);if(Ve(c))this.Cf-=c[u];else this.Cf--;return this.km[Pb](a)}return k});\r
17471 Aa(F,function $ub(){hi(this);this.km&&this.km[bc]();this.Cf=0});F.nd=function $vb(){fi(this);return this.Cf==0};F.Xb=function $wb(a){fi(this);a=gi(this,a);return this.km.Xb(a)};F.BS=function $xb(a){var c=this.Oa();return ef(c,a)};F.Sb=function $yb(){fi(this);for(var a=this.km.Oa(),c=this.km.Sb(),d=[],f=0;f<c[u];f++){var g=a[f];if(Ve(g))for(var j=0;j<g[u];j++)d[p](c[f]);else d[p](c[f])}return d};\r
17472 F.Oa=function $zb(a){fi(this);if(a){a=gi(this,a);if(this.Xb(a)){var c=this.km.J(a);if(Ve(c))return c;else{a=[];a[p](c)}}else a=[]}else{c=this.km.Oa();a=[];for(var d=0;d<c[u];d++){var f=c[d];Ve(f)?of(a,f):a[p](f)}}return a};F.set=function $Ab(a,c){fi(this);hi(this);a=gi(this,a);if(this.Xb(a)){var d=this.km.J(a);if(Ve(d))this.Cf-=d[u];else this.Cf--}this.km.set(a,c);this.Cf++;return this};F.J=function $Bb(a,c){fi(this);a=gi(this,a);if(this.Xb(a)){a=this.km.J(a);return Ve(a)?a[0]:a}else return c};\r
17473 Ha(F,function $Cb(){if(this.mT)return this.mT;if(!this.km)return I;for(var a=[],c=0,d=this.km.Sb(),f=0;f<d[u];f++){var g=d[f],j=Qf(g);g=this.km.J(g);if(Ve(g))for(var n=0;n<g[u];n++){c>0&&a[p](Sf);a[p](j,ei,Qf(g[n]));c++}else{c>0&&a[p](Sf);a[p](j,ei,Qf(g));c++}}return this.mT=a[kd](I)});F.vc=function $Db(){var a=new Wh;if(this.Cea)a.Cea=this.Cea;if(this.mT)a.mT=this.mT;if(this.km)a.km=this.km.vc();return a};\r
17474 F.hma=function $Eb(a){if(a&&!this.hP){fi(this);hi(this);Ef(this.km,function(c,d){var f=d[od]();if(d!=f){this[Pb](d);this.add(f,c)}},this)}this.hP=a};F.extend=function $Fb(){for(var a=0;a<arguments[u];a++)Ef(arguments[a],function(c,d){this.add(d,c)},this)};H(ji,Oh);ji[w].J=D(Fj);ji[w].Hwb=function $Hb(a){var c=this[uaa];if(a){a=da(a,10);c=ia(a)?this[uaa]:a}pa(this,c)};H(Bda,Oh);Bda[w].J=D(Fj);Bda[w].Hwb=Ge(Fj);var tfa=new Qh(h),ufa=new Qh(h),vfa=new Qh(h),wfa=new Qh(k),xfa=new Qh(k),yfa=new Qh(h),zfa=new Bda(I),Afa=new Qh(k),Bfa=new Qh(k),Cfa=new Qh(h),Dfa=new Qh(h),Efa=new Qh(k),Ffa=new Qh(k),Gfa=new ji(3),Hfa=new ji(0),Ifa=new ji(1E3),Jfa=new Qh(k),Kfa=new Qh(k),Lfa=new Qh(h),Mfa=new Qh(h),Nfa=new Qh(h),Ofa=new ji(0),Pfa=new Qh(k),Qfa=new Qh(k),Rfa=new Qh(k),Sfa=new Qh(h),Tfa=new Qh(k);var Ufa=Yf(),Vfa=Ufa[nc](0,4);var Mj=new Sh(top[Ic]),Nj="tf",Wfa="labs",Oj="ui",Pj="2",Xfa=function(b,a){fi(b);Ef(b.km,function(c,d){ef(a,d)||this[Pb](d)},b);return b}(Mj.Of().vc(),[Nj,Wfa]).set(Oj,Pj),Yfa="ik",Zfa=Xfa.vc().set(Yfa,Gi),Qj=Kj+String(Zfa),aga=new Sh;aga.Jx(Xfa);aga.xia=h;var Rj=new Sh;Rj.Jx(Zfa);Rj.xia=h;var bga=String(Uh((new Sh(Mj)).Jx(Zfa),I)),Sj=Uh(Mj.vc(),I);Sj.xia=h;var cga=Sj.vc().Jx(i);cga.xia=h;_B_prog(7)}catch(e){_B_err(e)}\r
17475 \r
17476 try{lfa.set(k);mfa.set(k);var dga=new function(){this.C5={}};(function(b,a){uf(a,function(c,d){this.C5[d]=c},b)})(dga,{pre:tfa,mincaching:ifa,chat:ufa,frills:vfa,evt:wfa,dom:xfa,preload_compose:yfa,tracers:zfa,lo:jfa,forced_reflows:kfa,dml:Afa,verbose:Bfa,ep:Cfa,ads:Dfa,trace_timers:Efa,noif:Ffa,tth:Gfa,icc:Hfa,icm:Ifa,gdts:Jfa,gddh:Kfa,labs:Lfa,ie6_forced_reflows:Mfa,gd:Nfa,navw:Ofa,disable_flash_upload:Pfa,uwd:Qfa,al1:lfa,al2:mfa,h5dnd:Rfa,winac:Sfa,br:Tfa});\r
17477 (function(b,a){uf(b.C5,function(c,d){d=a.J(d);Ke(d)&&c.Hwb(d)},b)})(dga,Mj.Of());var ega=tfa.J(),fga=ifa.J(),gga=ufa.J()&&vfa.J(),hga=wfa.J(),iga=xfa.J(),jga=yfa.J();jfa.J();kfa.J();var kga=Afa.J();Bfa.J();var lga=Cfa.J(),mga=Ffa.J();Gfa.J();var nga=Hfa.J(),oga=Ifa.J(),pga=!Lfa.J(),qga=Mfa.J(),rga=Kfa.J(),sga=Ofa.J(),tga=Pfa.J(),uga=Qfa.J();Rfa.J();var vga=lga&&Efa.J(),wga=zfa.J();if(wga)for(var xga=wga[Cc](wj),yga=0;yga<xga[u];yga++);var Fda=ih;if(hga)ih=Eda;tg.wc();var _DumpException=sg;oa(Je,i);Eba(sg);var zga=new Xba(sg,!lga);_B_handleError=function $Kb(a){sg(a)};Vba(zga,vga);Wba(zga,vga);th=og(zga,th,vga);Rea(th);qda(zga,vga);var Tj="6",Aga="BackgroundImageCache";if(L){Mea.sPa();if(vg(Tj))try{ea[Yb](Aga,k,h)}catch(Bga){}};var Jda=/\s*;\s*/;var Cga="GMAIL_FB",Dga="GMAIL_BG",Ega="GMAIL_DC",Fga="GMAIL_IFTO",Gga="GMAIL_BAK",Hga="GMAIL_IE",Iga="GMAIL_SSLF",Jga="GMAIL_GM",Lda=new Hf(Cga,1,Dga,2,Ega,8,Fga,16,Gga,32,Hga,64,Iga,128,Jga,256),qi=da(mi(Kda,Ah),16),Uj="GMAIL_STAT_"+l[rb](l[Tc]()*1E4);H(Nda,Jf);Nda[w].vib=function $Lb(a){var c=this.pDa[u];this.pDa[c]=a;for(var d=0;d<this.eE[u];d++){var f=Vj(a,this.eE[d]);this.dna[d][c]=f}return c};Nda[w].D=function $Mb(){this.dna=this.eE=i;Nda.C.D[z](this)};var Wj=new Nda;H(Qda,Jf);Qda[w].qa=0;var Xj=new Qda;F=Qda[w];na(F,function $Nb(a,c){this.ob&&this.ob.Eb()&&this.ob[wc]();if(!this.ob)this.ob=new Gh;this.qS=c;ih(this.ob,Hh,this.b7,k,this);this.qa=1;this.ob[Mb](a,zj)});\r
17478 F.b7=function $Ob(){nh(this.ob,Hh,this.b7,k,this);var a;_B_record();if(this.ob.hf()==400){if(!this.x4&&!ri(Iga)){this.qa=2;oi(Iga);Kga(top[Ic][raa]);this.ob.D();this.ob=i;return}}else Mda(Iga);if(this.ob.ye()){try{a=eval(this.ob.dj())}catch(c){this.qa=3}if(a&&Te(a)==Re){a=a;if(this.Iq(a)){var d=a[1];if(Te(d)!=Re)d=[0,d];a[1]=d;d=d[0];if(d==0||d>=1&&d<=2){this.x4=a[0];this.dKa=a[1];this.Sf=a[2];if(!this.Sf)this.qa=5;if(Ke(this.ogc)){a=this.ogc;d=this.dKa[1];for(var f=0;f<Wj.eE[u];f++)Lga(Wj.dna[f][a],\r
17479 d);Wj.pDa[a]=d}else this.ogc=Wj.vib(this.dKa[1]);delete this.dKa[1];if(this.qa!=5)this.qa=6;if(this.qS){a=this.qS;this.qS=i;a()}if(this.qa!=5)this.qa=7}else this.qa=8}else this.qa=4}else if(this.qa!=3)this.qa=9}else this.qa=2;this.ob.D();this.ob=i};F.Iq=function $Pb(a){return!!a[0]};F.D=function $Qb(){this.ob&&this.ob.D();Qda.C.D[z](this)};F.il=D("Sf");var Yj="qa";F.xc=D(Yj);var Mga=Pda("_GM_getSSUrl",top,h)||jea;Xj[pb](Mga);/*\r
17480  Portions of this code are from MochiKit, received by\r
17481  Google under the MIT license. All other code is Copyright 2005-2009 Google,\r
17482  Inc. All Rights Reserved.\r
17483 */\r
17484 F=ui[w];F.wE=-1;F.IV=0;F.zyb=k;F.lwc=k;F.tf=function $Tb(){if(this.wE>=0)!this.wE&&this.eh[0]instanceof ui&&this.eh[0].tf();else{if(this.LIb)this.LIb[z](this.kMb,this);else this.zyb=h;this.wE>=0||this.mE(new wi(this))}};F.Mrb=function $Ub(){this.IV++};F.YAb=function $Vb(){this.IV--;this.IV==0&&this.wE>=0&&Sda(this)};F.Tyc=function $Wb(a){Rda(this,a);this.YAb()};F.rJ=function $Xb(){if(this.wE>=0){if(!this.zyb)e(new Tda(this));this.zyb=k}};F.ad=function $Yb(a){this.rJ();Rda(this,a)};\r
17485 F.mE=function $Zb(a){this.rJ();Rda(this,a instanceof Error?a:Error(a))};H(Tda,Rh);Oa(Tda[w],"Already called");H(wi,Rh);Oa(wi[w],"Deferred was cancelled");H(xi,Jf);xi[w].tb=B();H(Uda,Jf);F=Uda[w];F.mmb=xi;F.HC=i;F.ym=function $0b(a){if(this.mmb===xi)this.mmb=a;else e(Error(".21"))};F.Lr=function $1b(a,c){return this.kW(this.irb,a,c)};F.kW=function $2b(a,c,d){c=new Wda(c,d);a[p](c);return c};F.hc=function $3b(){return!!this.HC};F.CTa=function $4b(a){var c=new this.mmb;c.tb(a());this.HC=c;Vda(this,this.G9a,a());Vda(this,this.irb,a());Ia(this.eza,0)};F.dza=function $5b(a){Vda(this,this.eza,a);Ia(this.G9a,0);Ia(this.irb,0)};F.L=function $6b(){Uda.C.L[z](this);this.HC&&this.HC.D()};\r
17486 Va(Wda[w],function $7b(a){if(this.SLa){this.SLa[z](this.na||i,a);this.SLa=this.na=i}});La(Wda[w],function $8b(){this.na=this.SLa=i});H(O,Jf);Ne(O);F=O[w];F.uHa=k;F.Bxa=i;F.CSc=i;F.H6a=0;F.TYb=k;F.mjc=k;F.Zxa=i;F.iGc=D("Zxa");F.Eb=function $$b(){return this.eF[u]>0};F.xSc=function $ac(a,c){var d=this.bk[a];if(d.hc())c.ad(this.Zxa);else{d.Lr(c.ad,c);d.kW(d.eza,c.mE,c);ef(this.eF,a)||ef(this.rI,a)||aea(this,a)}};F.gb=function $bc(a){jf(this.U2,a);jf(this.eF,a);this.bk[a].CTa(G(this.iGc,this));this.eF[u]==0&&eea(this);Ai(this)};\r
17487 na(F,function $cc(a,c){var d=this.bk[a],f=new ui;if(d.hc())f.ad(this.Zxa);else if(ef(this.eF,a)||ef(this.rI,a)){d.Lr(f.ad,f);d.kW(d.eza,f.mE,f);if(c){this.U2[p](a);Ai(this)}}else{d.Lr(f.ad,f);d.kW(d.eza,f.mE,f);c&&this.U2[p](a);aea(this,a)}return f});F.ym=function $dc(a){this.vea&&this.bk[this.vea].ym(a)};\r
17488 F.hJc=function $ec(a){this.H6a++;if(a==401){dea(this,0);Ia(this.rI,0)}else if(a==410){dea(this,3);eea(this)}else if(this.H6a>=3){dea(this,1);eea(this)}else{var c=this.eF.pop();Ia(this.eF,0);bea(this,c,h,a==8001)}};F.jJc=function $fc(){dea(this,2);eea(this)};F.Lr=function $gc(a,c){Ve(a)||(a=[a]);for(var d=0;d<a[u];d++)this.kW(a[d],c)};F.kW=function $hc(a,c){var d=this.gIa;d[a]||(d[a]=[]);d[a][p](c)};F.L=function $ic(){O.C.L[z](this);Ff(wf(this.bk),Kf);this.gIa=this.rI=this.U2=this.eF=this.bk=i};for(var Nga={},Oga=0;Oga<rea[u];Oga+=2)Nga[rea[Oga]]=rea[Oga+1];var Pga=O.S();for(var Qga in Nga)Pga.bk[Qga]=new Uda(Nga[Qga]);var Zj="bg";Bi(O.S(),Zj);O.S().gb(Zj);Ci(O.S(),Zj);var ak=parseFloat;function aha(b,a){return b.filter=a}function bha(b,a){return b.page=a}function bk(b,a){return b.collapse=a}function Q(b,a){return b.innerHTML=a}function cha(b,a){return b.insertNode=a}function ck(b,a){return b.left=a}function dk(b,a){return b.select=a}function ek(b,a){return b.detach=a}function fk(b,a){return b.tabIndex=a}function gk(b,a){return b.cellPadding=a}function hk(b,a){return b.setActive=a}function ik(b,a){return b.title=a}function dha(b,a){return b.opacity=a}\r
17489 function jk(b,a){return b.disabled=a}function kk(b,a){return b.hideFocus=a}function lk(b,a){return b.removeChild=a}function mk(b,a){return b.removeItem=a}function nk(b,a){return b.bottom=a}function eha(b,a){return b.cellSpacing=a}function ok(b,a){return b.element=a}function pk(b,a){return b.nodeValue=a}function qk(b,a){return b.right=a}\r
17490 var rk="activeElement",fha="getBoundingClientRect",sk="form",tk="collapse",uk="selection",vk="inRange",gha="createCaption",wk="innerHTML",xk="offsetWidth",yk="blur",zk="insertNode",Ak="move",Bk="createRange",Ck="left",Dk="createTextRange",hha="getBoxObjectFor",Ek="focus",Fk="select",iha="clientLeft",jha="sqrt",kha="clientTop",Gk="cloneNode",Hk="setEndPoint",Ik="detach",lha="tabIndex",Jk="rangeCount",Kk="frameElement",Lk="setActive",Mk="duplicate",Nk="scrollTop",Ok="setStart",Pk="title",Qk="getSelection",\r
17491 Rk="next",mha="offsetParent",Sk="constructor",Tk="moveToElementText",Uk="disabled",Vk="offsetLeft",Wk="getComputedStyle",Xk="close",nha="hasChildNodes",Yk="removeItem",al="moveEnd",bl="scrollWidth",cl="cells",dl="scrollLeft",el="sort",fl="bottom",gl="compareEndPoints",hl="containsNode",il="currentStyle",jl="restore",kl="rows",ll="element",oha="contentDocument",ml="removeAttribute",nl="display",R="append",ol="offsetTop",pl="toUpperCase",ql="offsetHeight",rl="right",sl="<br>",tl="+",ul="cf",vl="as",\r
17492 wl='"><div class="',pha="loading",xl=" (",yl='"><div id="',S='" class="',zl="character",Al="StartToStart",Bl="|",Cl="BR",qha="STYLE",Dl="SCRIPT",El='"><tr><td class="',Fl='<table cellpadding="0" class="',Gl='" id="',Hl="label",Il="text",Jl=": ",rha="An",Kl='">&nbsp;</td><td class="',Ll="\n\n",Ml="<br><br>",Nl="li",sha="ul",tha="pZ",uha="iE",Ol="bold",Pl="italic",vha="Change picture",Ql="Db",Rl='"><input type="checkbox" id="',wha="Kg",Sl="ni",xha="photo",yha="r0",zha="OBJECT",Aha="Oi",Bha="Start",\r
17493 Cha="End",Dha="To",Tl="ie",Eha='">&nbsp;',Ul='" height="',Fha="att",Gha="hd",Vl="<tr><td>",Hha="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;",Wl=" and ",Iha="+1",Xl="mainElement",Yl="<li>",Jha="</li>",Zl="</ul>",am="100%",Kha="live",Lha="br",bm="goomoji",cm="http://",dm='" width="',Mha="valuemin",Nha="valuemax",Oha="valuenow";\r
17494 function em(b){if(b instanceof tf)return b;if(typeof b.mG==Se)return b.mG(k);if(We(b)){var a=0,c=new tf;Ma(c,function $mc(){for(;;){if(a>=b[u])e(Ni);if(a in b)return b[a++];else a++}});return c}e(Error(".3"))}function Pha(b){return!Jg&&gca(b)?b[mc]:b[Lc]}function fm(b,a){return b>a?1:b<a?-1:0}function Qha(b,a,c,d){a=a;for(var f=c[u];(a=b[Db](c,a))>=0&&a<d;){var g=b[Xc](a-1);if(g==38||g==63){g=b[Xc](a+f);if(!g||g==61||g==38||g==35)return a}a+=f+1}return-1}\r
17495 function gm(b){b=Pha(b.ki);return new xg(b[dl],b[Nk])}function Rha(b){return gca(b.ki)}function hm(b,a,c){c?K(b,a):Ag(b,a)}function im(b){return/^[\s\xa0]*$/[cb](b)}function Sha(b,a){return b===a}function jm(b,a,c){var d=0,f=b[u]-1;for(c=c||fm;d<=f;){var g=d+f>>1,j=c(a,b[g]);if(j>0)d=g+1;else if(j<0)f=g-1;else return g}return-(d+1)}function km(b,a,c){pf(b,c,0,a)}function lm(b,a,c){for(var d=b[u],f=Ye(b)?b[Cc](I):b,g=0;g<d;g++)if(g in f&&a[z](c,f[g],g,b))return g;return-1}\r
17496 function mm(b){return typeof b==Qe}function nm(b,a){return L?b[Zb]==P?a==0:!!(b.pj[Cb]&Tha[a]):b.pj[Cb]==a}var Uha="tabIndex";function Vha(b,a){if(a)fk(b,0);else b[ml](Uha)}var Wha="tabindex";function Xha(b){var a=b.getAttributeNode(Wha);if(a&&a.specified){b=b[lha];return mm(b)&&b>=0}return k}function om(b){return Jg?b[yc]||b[gc][yc]:b[oha]||b[gc][yc]}function pm(b){return b?b[ac]||b[dc]:ba}\r
17497 function qm(b,a,c){for(var d=zg(b),f=k,g=0;g<d[u];g++)if(d[g]==a){pf(d,g--,1);f=h}if(f){d[p](c);m(b,d[kd](J))}return f}function Yha(b,a){if(b==a)return h;if(!b||!a)return k;return b[ib]==a[ib]&&b[id]==a[id]}function Zha(b,a){return new xg(b.x-a.x,b.y-a.y)}function rm(){return"goog_"+vea++}function sm(){return Array[w][kd][z](arguments,I)}function aia(b){return b[mb](/[\s\xa0]+$/,I)}function bia(b){return b[mb](/^[\s\xa0]+/,I)}function tm(b){var a={};for(var c in b)a[b[c]]=c;return a}\r
17498 function cia(b,a,c){if(a in b)return b[a];return c}function dia(b,a){var c;if(c=a in b)delete b[a];return c}function um(b,a,c){if(We(b))try{Ff(b,a,c)}catch(d){if(d!==Ni)e(d)}else{b=em(b);try{for(;;)a[z](c,b[Rk](),undefined,b)}catch(f){if(f!==Ni)e(f)}}}function eia(b,a,c){if(!We(b)||!We(a)||b[u]!=a[u])return k;var d=b[u];c=c||Sha;for(var f=0;f<d;f++)if(!c(b[f],a[f]))return k;return h}function vm(b,a,c){a=lm(b,a,c);return a<0?i:Ye(b)?b[xb](a):b[a]}function wm(b){return b[b[u]-1]}\r
17499 function xm(b){this.wa=b;b=L?dj:kj;this.qSc=ih(this.wa,L?cj:lj,this,!L);this.rSc=ih(this.wa,b,this,!L)}var fia="propertychange",ym="TEXTAREA",gia="531",zm="input";function Am(b){this.wa=b;b=L?fia:Jg&&b[ed]==ym&&!vg(gia)?Zi:zm;this.lRa=ih(this.wa,b,this)}function Bm(b,a,c,d){this.top=b;qk(this,a);nk(this,c);ck(this,d)}function hia(b,a){if(b==a)return h;if(!b||!a)return k;return b.top==a.top&&b[rl]==a[rl]&&b[fl]==a[fl]&&b[Ck]==a[Ck]}function Cm(b,a,c,d){ck(this,b);this.top=a;ka(this,c);Wa(this,d)}\r
17500 function iia(b){return new Cm(b[Ck],b.top,b[rl]-b[Ck],b[fl]-b.top)}function jia(b,a){if(b==a)return h;if(!b||!a)return k;return b[Ck]==a[Ck]&&b[ib]==a[ib]&&b.top==a.top&&b[id]==a[id]}function Dm(b,a,c){Ye(a)?kia(b,c,a):uf(a,df(kia,b))}function kia(b,a,c){b[x][lia(c)]=a}function Em(b,a){var c=Eg(b);if(c[dc]&&c[dc][Wk])if(b=c[dc][Wk](b,I))return b[a];return i}function Fm(b,a){return b[il]?b[il][a]:i}function Gm(b,a){return Em(b,a)||Fm(b,a)||b[x][a]}var Hm="position";\r
17501 function mia(b){return Gm(b,Hm)}var Im="1.9",Jm="px";function Km(b,a,c){var d,f=Fh&&(Qi||Fea)&&vg(Im);if(a instanceof xg){d=a.x;a=a.y}else{d=a;a=c}ck(b[x],typeof d==Qe?(f?l[kb](d):d)+Jm:d);b[x].top=typeof a==Qe?(f?l[kb](a):a)+Jm:a}function Lm(b){b=b?b[nb]==9?b:Eg(b):ea;if(L&&!Rha(Cg(b)))return b[Lc];return b[mc]}function nia(b){var a=b[fha]();if(L){b=b[Mc];a.left-=b[mc][iha]+b[Lc][iha];a.top-=b[mc][kha]+b[Lc][kha]}return a}var oia="fixed",pia="static";\r
17502 function qia(b){if(L)return b[mha];var a=Eg(b),c=Gm(b,Hm),d=c==oia||c==sd;for(b=b[A];b&&b!=a;b=b[A]){c=Gm(b,Hm);d=d&&c==pia&&b!=a[mc]&&b!=a[Lc];if(!d&&(b[bl]>b[vc]||b[Rb]>b[Wc]||c==oia||c==sd))return b}return i}var ria="borderLeftWidth",sia="borderRightWidth",tia="borderTopWidth";\r
17503 function Mm(b){var a=new Bm(0,Infinity,Infinity,0),c=Cg(b),d=c.cb()[Lc],f=Pha(c.ki),g;for(b=b;b=qia(b);)if((!L||b[vc]!=0)&&(!Jg||b[Wc]!=0||b!=d)&&(b[bl]!=b[vc]||b[Rb]!=b[Wc])&&Gm(b,td)!=ud){var j=Nm(b),n;n=b;if(Fh&&!vg(Im)){var s=ak(Em(n,ria));if(Om(n)){var v=n[xk]-n[vc]-s-ak(Em(n,sia));s+=v}n=new xg(s,ak(Em(n,tia)))}else n=new xg(n[iha],n[kha]);j.x+=n.x;j.y+=n.y;a.top=l.max(a.top,j.y);qk(a,l.min(a[rl],j.x+b[vc]));nk(a,l.min(a[fl],j.y+b[Wc]));ck(a,l.max(a[Ck],j.x));g=g||b!=f}d=f[dl];f=f[Nk];if(Jg){a.left+=\r
17504 d;a.top+=f}else{ck(a,l.max(a[Ck],d));a.top=l.max(a.top,f)}if(!g||Jg){a.right+=d;a.bottom+=f}c=c.UO();qk(a,l.min(a[rl],d+c[ib]));nk(a,l.min(a[fl],f+c[id]));return a.top>=0&&a[Ck]>=0&&a[fl]>a.top&&a[rl]>a[Ck]?a:i}\r
17505 function Nm(b){var a,c=Eg(b),d=Gm(b,Hm),f=Fh&&c[hha]&&!b[fha]&&d==sd&&(a=c[hha](b))&&(a[Ib]<0||a[Jb]<0),g=new xg(0,0),j=Lm(c);if(b==j)return g;if(b[fha]){a=nia(b);b=gm(Cg(c));g.x=a[Ck]+b.x;g.y=a.top+b.y}else if(c[hha]&&!f){a=c[hha](b);b=c[hha](j);g.x=a[Ib]-b[Ib];g.y=a[Jb]-b[Jb]}else{a=b;do{g.x+=a[Vk];g.y+=a[ol];if(a!=b){g.x+=a[iha]||0;g.y+=a[kha]||0}if(Jg&&mia(a)==oia){g.x+=c[Lc][dl];g.y+=c[Lc][Nk];break}a=a[mha]}while(a&&a!=b);if(Ng||Jg&&d==sd)g.y-=c[Lc][ol];for(a=b;(a=qia(a))&&a!=c[Lc]&&a!=j;){g.x-=\r
17506 a[dl];if(!Ng||a[ed]!=vd)g.y-=a[Nk]}}return g}function uia(b,a,c){if(a.cb()!=c.cb()){var d=a.cb()[Lc];c=c.Ec();var f=new xg(0,0),g=pm(Eg(d)),j=d;do{var n=g==c?Nm(j):Pm(j);f.x+=n.x;f.y+=n.y}while(g&&g!=c&&(j=g[Kk])&&(g=g[Oc]));c=f;c=Zha(c,Nm(d));if(L&&!Rha(a))c=Zha(c,gm(a));b.left+=c.x;b.top+=c.y}}function Pm(b){var a=new xg;if(b[nb]==1)if(b[fha]){var c=nia(b);a.x=c[Ck];a.y=c.top}else{c=gm(Cg(b));b=Nm(b);a.x=b.x-c.x;a.y=b.y-c.y}else{a.x=b[kc];a.y=b[lc]}return a}\r
17507 function Qm(b,a,c){var d=Nm(b);if(a instanceof xg){c=a.y;a=a.x}Km(b,b[Vk]+(a-d.x),b[ol]+(c-d.y))}function Rm(b,a,c){if(a instanceof yg){c=a[id];a=a[ib]}else{if(c==undefined)e(Error(".23"));c=c}ka(b[x],typeof a==Qe?l[kb](a)+Jm:a);Wa(b[x],typeof c==Qe?l[kb](c)+Jm:c)}var Sm="10",via="inline";\r
17508 function Tm(b){var a=Ng&&!vg(Sm);if(Gm(b,wd)!=xd)return a?new yg(b[xk]||b[vc],b[ql]||b[Wc]):new yg(b[xk],b[ql]);var c=b[x],d=c[nl],f=c.visibility,g=c[yaa];Fa(c,yd);Ja(c,sd);Ua(c,via);if(a){a=b[xk]||b[vc];b=b[ql]||b[Wc]}else{a=b[xk];b=b[ql]}Ua(c,d);Ja(c,g);Fa(c,f);return new yg(a,b)}function Um(b){var a=Nm(b);b=Tm(b);return new Cm(a.x,a.y,b[ib],b[id])}function lia(b){return wia[b]||(wia[b]=String(b)[mb](/\-([a-z])/g,function(a,c){return c[pl]()}))}\r
17509 var xia="opacity",yia="MozOpacity",zia="filter",Aia="alpha(opacity=";function Vm(b,a){b=b[x];if(xia in b)dha(b,a);else if(yia in b)b.MozOpacity=a;else if(zia in b)aha(b,a===I?I:Aia+a*100+xh)}function Wm(b,a){Ua(b[x],a?I:xd)}var Xm="head",Ym="body";function Vj(b,a){a=Cg(a);var c=i;if(L){c=a.cb().createStyleSheet();Lga(c,b)}else{var d=a.ie(Xm)[0];if(!d){c=a.ie(Ym)[0];d=a.ba(Xm);c[A][Bb](d,c)}c=a.ba(Kg);Lga(c,b);a[o](d,c)}return c}var Bia="innerHTML";\r
17510 function Lga(b,a){if(L)iaa(b,a);else b[Jg?xca:Bia]=a}var Zm="rtl",Cia="direction";function Om(b){return Zm==Gm(b,Cia)}var Dia="unselectable";function an(b,a,c){c=!c?b[ic](Hg):i;if(Eia){a=a?xd:I;b[x][Eia]=a;if(c){b=0;for(var d;d=c[b];b++)d[x][Eia]=a}}else if(L||Ng){a=a?qh:I;b[Wb](Dia,a);if(c)for(b=0;d=c[b];b++)d[Wb](Dia,a)}}var Fia="HTML";\r
17511 function bn(b,a,c,d,f,g,j,n){var s,v=c[mha];if(v){var C=v[ed]==Fia||v[ed]==zd;if(!C||mia(v)!=pia){s=Nm(v);C||(s=Zha(s,new xg(v[dl],v[Nk])))}}v=Um(b);(C=Mm(b))&&v.iwa(iia(C));uia(v,Cg(b),Cg(c));b=(a&4&&Om(b)?a^2:a)&-5;a=new xg(b&2?v[Ck]+v[ib]:v[Ck],b&1?v.top+v[id]:v.top);if(s)a=Zha(a,s);if(f){a.x+=(b&2?-1:1)*f.x;a.y+=(b&1?-1:1)*f.y}var M;if(j)if((M=Mm(c))&&s){M.top=l.max(0,M.top-s.y);M.right-=s.x;M.bottom-=s.y;ck(M,l.max(0,M[Ck]-s.x))}return cn(a,c,d,g,M,j,n)}\r
17512 function cn(b,a,c,d,f,g,j){b=b.vc();var n=0;c=(c&4&&Om(a)?c^2:c)&-5;var s=Tm(a);j=j?j.vc():s;if(d||c!=0){if(c&2)b.x-=j[ib]+(d?d[rl]:0);else if(d)b.x+=d[Ck];if(c&1)b.y-=j[id]+(d?d[fl]:0);else if(d)b.y+=d.top}if(g){n=f?Gia(b,j,f,g):256;if(n&496)return n}Km(a,b);Yha(s,j)||Rm(a,j);return n}\r
17513 function Gia(b,a,c,d){var f=0;if(b.x<c[Ck]&&d&1){b.x=c[Ck];f|=1}if(b.x<c[Ck]&&b.x+a[ib]>c[rl]&&d&16){a.width-=b.x+a[ib]-c[rl];f|=4}if(b.x+a[ib]>c[rl]&&d&1){b.x=l.max(c[rl]-a[ib],c[Ck]);f|=1}if(d&2)f|=(b.x<c[Ck]?16:0)|(b.x+a[ib]>c[rl]?32:0);if(b.y<c.top&&d&4){b.y=c.top;f|=2}if(b.y>=c.top&&b.y+a[id]>c[fl]&&d&32){a.height-=b.y+a[id]-c[fl];f|=8}if(b.y+a[id]>c[fl]&&d&4){b.y=l.max(c[fl]-a[id],c.top);f|=2}if(d&8)f|=(b.y<c.top?64:0)|(b.y+a[id]>c[fl]?128:0);return f}function Hia(){}\r
17514 function dn(b,a){ok(this,b);this.GN=a}function en(b,a,c){dn[z](this,b,a);this.dsc=c}var Iia="role";function fn(b,a){if(Fh||Jia){b[Wb](Iia,a);b.SDd=a}}var Kia="aria-";function gn(b,a,c){if(Fh||Jia)b[Wb](Kia+a,c)}var Lia="525";function Mia(b,a,c,d,f){if(!L&&!(Jg&&vg(Lia)))return h;if(Qi&&f)return Nia(b);if(f&&!d)return k;if(L&&!c&&(a==17||a==18))return k;if(L&&d&&a==b)return k;switch(b){case 13:return h;case 27:return!Jg}return Nia(b)}\r
17515 function Nia(b){if(b>=48&&b<=57)return h;if(b>=96&&b<=106)return h;if(b>=65&&b<=90)return h;switch(b){case 32:case 63:case 107:case 109:case 110:case 111:case 186:case 189:case 187:case 188:case 190:case 191:case 192:case 222:case 219:case 220:case 221:return h;default:return k}}function hn(b){b&&this.Pe(b)}var jn="key";function Oia(b,a,c,d){d&&this.wc(d,void 0);za(this,jn);xa(this,b);haa(this,a);this.repeat=c}function Pia(b,a,c,d){en[z](this,b,a,c);this.EWa=d}function kn(b){this.na=b}\r
17516 function ln(b,a,c,d,f,g){if(Ve(c))for(var j=0;j<c[u];j++)ln(b,a,c[j],d,f,g);else{a=mh(a,c,d||b,f||k,g||b.na||b);Qia(b,a)}return b}function Qia(b,a){if(b.ri)b.ri[a]=h;else if(b.Js){b.ri=Ria.Iw();b.ri[b.Js]=h;b.Js=i;b.ri[a]=h}else b.Js=a}function mn(){}function nn(b){this.ya=b||Cg();this.vBa=Sia}var Tia="disable",Uia="enable",on="highlight",Via="unhighlight",Wia="activate",Xia="unselect",Yia="check",Zia="uncheck",pn="open",qn="close";\r
17517 function aja(b,a){switch(b){case 1:return a?Tia:Uia;case 2:return a?on:Via;case 4:return a?Wia:Wea;case 8:return a?nj:Xia;case 16:return a?Yia:Zia;case 32:return a?lj:kj;case 64:return a?pn:qn;default:}e(Error(".25"))}function bja(b,a){b.wa=a}function rn(b){return b.bf?b.bf[u]:0}function sn(b,a,c){b.bf&&Ff(b.bf,a,c)}function tn(b,a){return b.bf&&a?ff(b.bf,a):-1}function un(){}\r
17518 function cja(b,a,c){var d=[];if(c)a=a[wb]([c]);Ff([],function(f){if(Gf(f,df(ef,a))&&(!c||ef(f,c)))d[p](f[kd](mg))});return d}var dja="-JE",eja="-JW",fja="-Je",gja="-KO",hja="-Jp",ija="-JO",jja="-Kq";function kja(b){var a=b.Qb();b.KIa=Af(1,a+dja,2,a+eja,4,a+fja,8,a+gja,16,a+hja,32,a+ija,64,a+jja)}function lja(b){b.KIa||kja(b);b.Xfc=tm(b.KIa)}function vn(){}function mja(b){for(var a;b;){a=bf(b);if(a=nja[a])break;b=b.C?b.C[Sk]:i}if(a)return Ze(a.S)?a.S():new a;return i}\r
17519 function wn(b,a){if(!b)e(Error(".33`"+b));if(!Ze(a))e(Error(".34`"+a));oja[b]=a}function pja(b){for(var a=zg(b),c=0,d=a[u];c<d;c++)if(b=a[c]in oja?oja[a[c]]():i)return b;return i}function xn(b,a,c){nn[z](this,c);this.Kc=a||mja(this[Sk]);this.bma(b)}function qja(b,a){b.Cc()&&a!=b.Bfb&&rja(b,a);b.Bfb=a}function sja(b,a){if(a&&b.eK){jf(b.eK,a);if(b.eK[u]==0)b.eK=i;b.Kc.kT(b,a,k)}}\r
17520 function rja(b,a){var c=b.H(),d=b.b();if(a){c.w(d,Xi,b.qA).w(d,fj,b.Ey).w(d,gj,b.X6).w(d,Yi,b.q_);L&&c.w(d,ej,b.dUb)}else{c.hb(d,Xi,b.qA).hb(d,fj,b.Ey).hb(d,gj,b.X6).hb(d,Yi,b.q_);L&&c.hb(d,ej,b.dUb)}}function yn(b,a){zn(b,16,a)&&b.Oe(16,a)}function tja(b,a){zn(b,32,a)&&b.Oe(32,a)}var An=".28";function Bn(b,a,c){if(b.Cc()&&b.VE(a)&&!c)e(Error(An));!c&&b.VE(a)&&b.Oe(a,k);b.ht=c?b.ht|a:b.ht&~a}function Cn(b,a){return!!(b.U3a&a)&&!!(b.ht&a)}function Dn(b,a,c){b.xZa=c?b.xZa|a:b.xZa&~a}\r
17521 function zn(b,a,c){return!!(b.ht&a)&&b.VE(a)!=c&&(!(b.xZa&a)||b[r](aja(a,c)))&&!b.Pc}function En(){}function uja(b,a){qja(a,k);a.U3a&=-256;Bn(a,32,k)}function Fn(b,a,c){xn[z](this,b,a||En.S(),c)}function Gn(){}function Hn(b,a){xn[z](this,i,b||Gn.S(),a);Bn(this,1,k);Bn(this,2,k);Bn(this,4,k);Bn(this,32,k);this.qa=1}function vja(){}function wja(b,a,c){if(a)fk(a,c?0:-1)}var In="vertical";function Jn(b,a,c){nn[z](this,c);this.Kc=a||vja.S();this.Rs=b||In}\r
17522 function xja(b,a){var c=b.H(),d=b.Lk();a?c.w(d,lj,b.aU).w(d,kj,b.oC).w(b.Hga(),jn,b.Qo):c.hb(d,lj,b.aU).hb(d,kj,b.oC).hb(b.Hga(),jn,b.Qo)}function yja(b,a){var c=a.b();c=c.id||(c.id=a.ea());if(!b.vY)b.vY={};b.vY[c]=a}function Kn(b){return b.rb(b.Km)}function Ln(b){zja(b,function(a,c){return(a+1)%c},rn(b)-1)}function Aja(b){zja(b,function(a,c){a--;return a<0?c-1:a},0)}function Bja(b){zja(b,function(a,c){return(a+1)%c},b.Km)}function Cja(b){zja(b,function(a,c){a--;return a<0?c-1:a},b.Km)}\r
17523 function zja(b,a,c){c=c<0?tn(b,b.wu):c;var d=rn(b);c=a(c,d);for(var f=0;f<=d;){var g=b.rb(c);if(g&&b.j5a(g)){b.Mwb(c);return h}f++;c=a(c,d)}return k}function Dja(b,a){b.gV=a}function Mn(){this.Zpa=[]}var Eja="-JT",Fja="-Jo",Nn="-Jz";function On(b,a){var c=b.Zpa[a];if(!c){switch(a){case 0:c=b.Qb()+Eja;break;case 1:c=b.Qb()+Fja;break;case 2:c=b.Qb()+Nn;break}b.Zpa[a]=c}return c}var T="div";function Gja(b,a,c){b=On(b,2);return c.ba(T,b,a)}\r
17524 function Hja(b,a){if(a=b.Cd(a)){a=a[Tb];b=On(b,1);return!!a&&!!a[uc]&&a[uc][Db](b)!=-1}return k}var Pn="J-Ks";function Ija(b,a,c,d){if(d!=Hja(b,c)){hm(c,Pn,d);c=b.Cd(c);if(d){b=On(b,1);c[Bb](a.W().ba(T,b),c[Tb]||i)}else c[Nc](c[Tb])}}function Qn(b,a,c,d){xn[z](this,b,d||Mn.S(),c);this.Fa(a)}function Rn(){}function Sn(b,a){Jn[z](this,In,a||Rn.S(),b);this.Xm(k)}function Tn(){}\r
17525 function Jja(b,a){if(b)for(var c=a?b[Tb]:b[Qc],d;c&&c[A]==b;){d=a?c[fc]:c[pc];if(c[nb]==3){var f=c[md];if(Pf(f)==I)b[Nc](c);else{pk(c,a?bia(f):aia(f));break}}else break;c=d}}function Un(){}function Vn(b,a,c,d){Fn[z](this,b,c||Un.S(),d);Bn(this,64,h);a&&this.Zs(a);this.ab=new Bh(500)}var Wn="action";function Kja(b,a,c){var d=b.H();c=c?d.w:d.hb;c[z](d,a,Wn,b.Afb);c[z](d,a,on,b.nfb);c[z](d,a,Via,b.cgb)}function Xn(b,a){b=Number(b);a=Number(a);Qa(this,b<a?b:a);this.Oc=b<a?a:b}var Lja="#$1$1$2$2$3$3";\r
17526 function Mja(b){if(!Nja[cb](b))e(Error(".39`"+b));if(b[u]==4)b=b[mb](Oja,Lja);return b[od]()}function Yn(){}var Zn="tr",Pja="-oKdM2c";function Qja(b,a,c,d){for(var f=[],g=0,j=0;g<c[id];g++){for(var n=[],s=0;s<c[ib];s++){var v=a&&a[j++];n[p](b.AJa(v,d))}f[p](d.ba(Zn,b.Qb()+Pja,n))}return b.Pqa(f,d)}var Rja="-Jn-JW",Sja="activedescendent";function Tja(b,a,c,d){if(c){c=c[A];hm(c,b.Qb()+Rja,d);b=a.b()[Tb];gn(b,Sja,c.id)}}var Uja="-Jn-KO";function Vja(b,a,c,d){c&&hm(c[A],b.Qb()+Uja,d)}\r
17527 function Wja(b){this.qi=[];this.dGa(b)}function ao(b,a,c){xn[z](this,b,a||Yn.S(),c)}function Xja(b){var a=b.Ee();return a&&a[b.Km]}function Yja(b,a){var c=b.Ee();b.dp(c?ff(c,a):-1)}function Zja(b){var a=b.Ee();if(a)if(b.We&&b.We[ib]){a=l[ob](a[u]/b.We[ib]);if(!mm(b.We[id])||b.We[id]<a)Wa(b.We,a)}else{a=l[ob](l[jha](a[u]));b.We=new yg(a,a)}else b.We=new yg(0,0)}function aka(b,a){this.GJ=b instanceof xg?b:new xg(b,a)}function bka(b,a){aka[z](this,b,a)}\r
17528 function bo(b,a){this.na=new kn(this);this.mM(b||i);a&&this.pma(a)}function cka(b){if(b.Nm)e(Error(".41"))}var dka="-200px";function eka(b){ck(b.wa[x],dka);b.wa[x].top=dka}function co(b){Sn[z](this,b);this.Qk(h);this.ra(k,h);this.kt=new Hf}function fka(b,a){b.H().hb(a.wa,a.Aab,b.D6b)}function U(b){this.pp=bj?[]:I;b!=i&&this[R][cd](this,arguments)}var gka=/#|$/,Tha=[1,4,2];Bi(O.S(),Ph);_B_prog(10)}catch(e){_B_err(e)}\r
17529 \r
17530 try{H(xm,uh);ya(xm[w],function $nc(a){var c=new hh(a.pj);za(c,a[Zb]==cj||a[Zb]==lj?cj:dj);try{this[r](c)}finally{c.D()}});xm[w].L=function $oc(){xm.C.L[z](this);oh(this.qSc);oh(this.rSc);delete this.wa};H(Am,uh);ya(Am[w],function $pc(a){a=a.pj;if(a[Zb]==fia&&a.propertyName==Fj||a[Zb]==zm||a[Zb]==Zi){if(L||Ng){var c=a[saa];if(c!=Eg(c)[rk])return}a=new hh(a);za(a,zm);try{this[r](a)}finally{a.D()}}});Am[w].L=function $qc(){Am.C.L[z](this);oh(this.lRa);delete this.wa};Bm[w].vc=function $rc(){return new Bm(this.top,this[rl],this[fl],this[Ck])};Sa(Bm[w],function $sc(a){return!this||!a?k:a instanceof Bm?a[Ck]>=this[Ck]&&a[rl]<=this[rl]&&a.top>=this.top&&a[fl]<=this[fl]:a.x>=this[Ck]&&a.x<=this[rl]&&a.y>=this.top&&a.y<=this[fl]});Bm[w].expand=function $tc(a,c,d,f){if(af(a)){this.top-=a.top;this.right+=a[rl];this.bottom+=a[fl];this.left-=a[Ck]}else{this.top-=a;this.right+=c;this.bottom+=d;this.left-=f}return this};F=Cm[w];F.vc=function $uc(){return new Cm(this[Ck],this.top,this[ib],this[id])};F.iwa=function $vc(a){var c=l.max(this[Ck],a[Ck]),d=l.min(this[Ck]+this[ib],a[Ck]+a[ib]);if(c<=d){var f=l.max(this.top,a.top);a=l.min(this.top+this[id],a.top+a[id]);if(f<=a){ck(this,c);this.top=f;ka(this,d-c);Wa(this,a-f);return h}}return k};\r
17531 F.WD=function $wc(a){var c;b:{c=l.max(this[Ck],a[Ck]);var d=l.min(this[Ck]+this[ib],a[Ck]+a[ib]);if(c<=d){var f=l.max(this.top,a.top),g=l.min(this.top+this[id],a.top+a[id]);if(f<=g){c=new Cm(c,f,d-c,g-f);break b}}c=i}if(!c||!c[id]||!c[ib])a=[this.vc()];else{c=[];d=this.top;f=this[id];g=this[Ck]+this[ib];var j=this.top+this[id],n=a[Ck]+a[ib],s=a.top+a[id];if(a.top>this.top){c[p](new Cm(this[Ck],this.top,this[ib],a.top-this.top));d=a.top;f-=a.top-this.top}if(s<j){c[p](new Cm(this[Ck],s,this[ib],j-s));\r
17532 f=s-d}a[Ck]>this[Ck]&&c[p](new Cm(this[Ck],d,a[Ck]-this[Ck],f));n<g&&c[p](new Cm(n,d,g-n,f));a=c}return a};Sa(F,function $xc(a){return a instanceof Cm?this[Ck]<=a[Ck]&&this[Ck]+this[ib]>=a[Ck]+a[ib]&&this.top<=a.top&&this.top+this[id]>=a.top+a[id]:a.x>=this[Ck]&&a.x<=this[Ck]+this[ib]&&a.y>=this.top&&a.y<=this.top+this[id]});F.Ke=function $yc(){return new yg(this[ib],this[id])};var wia={},hka="MozUserSelect",ika="WebkitUserSelect",Eia=Fh?hka:Jg?ika:i;Hia[w].If=B();H(dn,Hia);dn[w].If=function $Ac(a,c,d){bn(this[ll],this.GN,a,c,undefined,d)};H(en,dn);en[w].If=function $Bc(a,c,d,f){var g=bn(this[ll],this.GN,a,c,i,d,10,f);if(g&496){var j=this.GN,n=c;if(g&48){j^=2;n^=2}if(g&192){j^=1;n^=1}g=bn(this[ll],j,a,n,i,d,10,f);if(g&496)this.dsc?bn(this[ll],this.GN,a,c,i,d,5,f):bn(this[ll],this.GN,a,c,i,d,0,f)}};var Jia;H(hn,uh);F=hn[w];F.wa=i;F.yQa=i;F.hkb=i;F.zQa=i;F.kxa=-1;F.Hia=-1;\r
17533 var jka={"3":13,"12":144,"63232":38,"63233":40,"63234":37,"63235":39,"63236":112,"63237":113,"63238":114,"63239":115,"63240":116,"63241":117,"63242":118,"63243":119,"63244":120,"63245":121,"63246":122,"63247":123,"63248":44,"63272":46,"63273":36,"63275":35,"63276":33,"63277":34,"63289":144,"63302":45},kka={Up:38,Down:40,Left:37,Right:39,Enter:13,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,"U+007F":46,Home:36,End:35,PageUp:33,PageDown:34,Insert:45},lka={61:187,\r
17534 59:186},mka=L||Jg&&vg(Lia);F=hn[w];F.BH=function $Cc(a){if(mka&&!Mia(a[Sb],this.kxa,a[dd],a[Bc],a[rc]))this[Xb](a);else this.Hia=Fh&&a[Sb]in lka?lka[a[Sb]]:a[Sb]};F.eJc=function $Dc(){this.Hia=this.kxa=-1};\r
17535 ya(F,function $Ec(a){var c=a.pj,d,f;if(L&&a[Zb]==Zi){d=this.Hia;f=d!=13&&d!=27?c[Sb]:0}else if(Jg&&a[Zb]==Zi){d=this.Hia;f=c[Ob]>=0&&c[Ob]<63232&&Nia(d)?c[Ob]:0}else if(Ng){d=this.Hia;f=Nia(d)?c[Sb]:0}else{d=c[Sb]||this.Hia;f=c[Ob]||0;if(Qi&&f==63&&!d)d=191}var g=d,j=c.keyIdentifier;if(d)if(d>=63232&&d in jka)g=jka[d];else{if(d==25&&a[dd])g=9}else if(j&&j in kka)g=kka[j];a=g==this.kxa;this.kxa=g;c=new Oia(g,f,a,c);try{this[r](c)}finally{c.D()}});\r
17536 F.Pe=function $Fc(a){this.zQa&&this[Ik]();this.wa=a;this.yQa=ih(this.wa,Zi,this);this.hkb=ih(this.wa,ij,this.BH,k,this);this.zQa=ih(this.wa,jj,this.eJc,k,this)};ek(F,function $Gc(){if(this.yQa){oh(this.yQa);oh(this.hkb);oh(this.zQa);this.zQa=this.hkb=this.yQa=i}this.wa=i;this.kxa=-1});F.L=function $Hc(){hn.C.L[z](this);this[Ik]()};H(Oia,hh);H(Pia,en);Pia[w].If=function $Ic(a,c,d,f){this.EWa?bn(this[ll],this.GN,a,c,i,d,33,f):Pia.C.If[z](this,a,c,d,f)};H(kn,Jf);var Ria=new Lf(0,100);F=kn[w];F.w=function $Jc(a,c,d,f,g){if(Ve(c))for(var j=0;j<c[u];j++)this.w(a,c[j],d,f,g);else{a=ih(a,c,d||this,f||k,g||this.na||this);Qia(this,a)}return this};\r
17537 F.hb=function $Kc(a,c,d,f,g){if(this.Js||this.ri)if(Ve(c))for(var j=0;j<c[u];j++)this.hb(a,c[j],d,f,g);else{a:{d=d||this;g=g||this.na||this;f=!!(f||k);if(a=Ica(a,c,f))for(c=0;c<a[u];c++)if(a[c].GA==d&&a[c][Fb]==f&&a[c].Si==g){a=a[c];break a}a=i}if(a){a=a.key;oh(a);if(this.ri)dia(this.ri,a);else if(this.Js==a)this.Js=i}}return this};F.wb=function $Lc(){if(this.ri){for(var a in this.ri){oh(a);delete this.ri[a]}Ria.ez(this.ri);this.ri=i}else this.Js&&oh(this.Js)};F.L=function $Mc(){kn.C.L[z](this);this.wb()};\r
17538 \r
17539 ya(F,function $Nc(){e(Error(".24"))});_B_prog(11)}catch(e){_B_err(e)}\r
17540 \r
17541 try{Ne(mn);mn[w].z0=0;mn[w].jH=function $Oc(){return xj+(this.z0++)[t](36)};var nka=mn.S();H(nn,uh);nn[w].jhb=mn.S();var Sia=i;F=nn[w];F.Xa=i;F.ya=i;F.vA=k;F.wa=i;F.vBa=i;F.kb=i;F.mh=i;F.bf=i;F.sJ=i;F.gkc=k;F.ea=function $Pc(){return this.Xa||(this.Xa=this.jhb.jH())};F.qh=function $Qc(a){if(this.mh&&this.mh.sJ){dia(this.mh.sJ,this.Xa);var c=this.mh.sJ;if(a in c)e(Error(".4`"+a));c[a]=this}this.Xa=a};var eo="wa";F.b=D(eo);F.H=function $Sc(){return this.nha||(this.nha=new kn(this))};\r
17542 F.Ig=function $Tc(a){if(this==a)e(Error(".26"));if(a&&this.mh&&this.Xa&&this.mh.za(this.Xa)&&this.mh!=a)e(Error(".26"));this.mh=a;nn.C.dk[z](this,a)};var oka="mh";F.ac=D(oka);F.dk=function $Vc(a){if(this.mh&&this.mh!=a)e(Error(".27"));nn.C.dk[z](this,a)};var fo="ya";F.W=D(fo);var pka="vA";F.Cc=D(pka);F.ba=function $Yc(){this.wa=this.ya[Qb](T)};F.eb=function $Zc(a){this.sx(a)};\r
17543 F.sx=function $_c(a,c){if(this.vA)e(Error(An));this.wa||this.ba();a?a[Bb](this.wa,c||i):this.ya.cb()[Lc][o](this.wa);if(!this.mh||this.mh.Cc())this.ma()};F.Pb=function $0c(a){if(this.vA)e(Error(An));else if(a&&this.ji(a)){this.gkc=h;if(!this.ya||this.ya.cb()!=Eg(a))this.ya=Cg(a);this.Ff(a);this.ma()}else e(Error(".29"))};F.ji=E(h);F.Ff=Ge(eo);F.ma=function $3c(){this.vA=h;sn(this,function(a){!a.Cc()&&a.b()&&a.ma()})};\r
17544 F.Ba=function $4c(){sn(this,function(a){a.Cc()&&a.Ba()});this.nha&&this.nha.wb();this.vA=k};F.L=function $5c(){nn.C.L[z](this);this.vA&&this.Ba();if(this.nha){this.nha.D();delete this.nha}sn(this,function(a){a.D()});!this.gkc&&this.wa&&Sg(this.wa);this.mh=this.kb=this.wa=this.sJ=this.bf=i};F.X=function $6c(a){return this.ea()+He+a};F.ve=function $7c(a){if(!this.vA)e(Error(".30"));return this.ya.b(this.X(a))};F.ha=function $8c(a,c){this.Jf(a,rn(this),c)};\r
17545 F.Jf=function $9c(a,c,d){if(a.vA&&(d||!this.vA))e(Error(An));if(c<0||c>rn(this))e(Error(".31"));if(!this.sJ||!this.bf){this.sJ={};this.bf=[]}if(a.ac()==this){this.sJ[a.ea()]=a;jf(this.bf,a)}else{var f=this.sJ,g=a.ea();if(g in f)e(Error(".4`"+g));f[g]=a}a.Ig(this);km(this.bf,a,c);if(a.vA&&this.vA&&a.ac()==this){d=this.Cd();d[Bb](a.b(),d[cc][c+1]||i)}else if(d){this.wa||this.ba();c=this.rb(c+1);a.sx(this.Cd(),c?c.wa:i)}else this.vA&&!a.vA&&a.wa&&a.ma()};F.Cd=D(eo);\r
17546 F.wP=function $ad(){if(this.vBa==i)this.vBa=Om(this.vA?this.wa:this.ya.cb()[Lc]);return this.vBa};F.mma=function $bd(a){if(this.vA)e(Error(An));this.vBa=a};F.za=function $cd(a){return this.sJ&&a?cia(this.sJ,a)||i:i};F.rb=function $dd(a){return this.bf?this.bf[a]||i:i};lk(F,function $ed(a,c){if(a){var d=Ye(a)?a:a.ea();a=this.za(d);if(d&&a){dia(this.sJ,d);jf(this.bf,a);if(c){a.Ba();a.wa&&Sg(a.wa)}a.Ig(i)}}if(!a)e(Error(".32"));return a});F.Vp=function $fd(a,c){return this[Nc](this.rb(a),c)};\r
17547 F.ZA=function $gd(a){for(;this.bf&&this.bf[u]!=0;)this.Vp(0,a)};var qka;Ne(un);F=un[w];F.WG=B();F.ba=function $id(a){return a.W().ba(T,this.ry(a)[kd](J),a.Ee())};F.Cd=Ee();F.kT=function $kd(a,c,d){if(a=a.b?a.b():a)if(L&&!vg(Ij)){var f=cja(this,zg(a),c);f[p](c);df(d?K:Ag,a)[cd](i,f)}else hm(a,c,d)};F.ji=E(h);\r
17548 F.Pb=function $md(a,c){c.id&&a.qh(c.id);var d=this.Cd(c);d&&d[Tb]?a.bma(d[Tb][fc]?nf(d[cc]):d[Tb]):a.bma(i);var f=0,g=this.Qb(),j=this.Qb(),n=k,s=k;d=k;var v=zg(c);Ff(v,function(M){if(!n&&M==g){n=h;if(j==g)s=h}else if(!s&&M==j)s=h;else f|=this.geb(M)},this);a.qa=f;if(!n){v[p](g);if(j==g)s=h}s||v[p](j);(a=a.eK)&&v[p][cd](v,a);if(L&&!vg(Ij)){var C=cja(this,v);if(C[u]>0){v[p][cd](v,C);d=h}}if(!n||!s||a||d)m(c,v[kd](J));return c};F.mP=function $nd(a){a.wP()&&this.mma(a.b(),h);a.Mc()&&this.Xm(a,a.Ib())};\r
17549 F.Kaa=function $od(a,c){an(a,!c,!L&&!Ng)};var rka="-KL";F.mma=function $pd(a,c){this.kT(a,this.Qb()+rka,c)};F.yC=function $qd(a){var c;if(a.ht&32&&(c=a.Lk()))return Xha(c);return k};F.Xm=function $rd(a,c){var d;if(a.ht&32&&(d=a.Lk())){if(!c&&a.zwa()){try{d[yk]()}catch(f){}a.zwa()&&a.oC(i)}Xha(d)!=c&&Vha(d,c)}};F.ra=function $sd(a,c){Wm(a,c)};F.Oe=function $td(a,c,d){var f=a.b();if(f){var g=this.nta(c);g&&this.kT(a,g,d);this.Gna(f,c,d)}};\r
17550 var go="disabled",ska="pressed",ho="selected",io="checked",tka="expanded";F.Gna=function $ud(a,c,d){if(Fh){qka||(qka=Af(1,go,4,ska,8,ho,16,io,64,tka));(c=qka[c])&&gn(a,c,d)}};var uka="nodeType";F.xb=function $wd(a,c){var d=this.Cd(a);if(d){Pg(d);if(c)if(Ye(c))ah(d,c);else{a=function $vd(g){if(g){var j=Eg(d);d[o](Ye(g)?j[yb](g):g)}};if(Ve(c))Ff(c,a);else We(c)&&!(uka in c)?Ff(nf(c),a):a(c)}}};F.Lk=function $xd(a){return a.b()};F.Qb=E("J-bMcfAe");\r
17551 F.ry=function $zd(a){var c=this.Qb(),d=[c],f=this.Qb();f!=c&&d[p](f);c=a.xc();for(f=[];c;){var g=c&-c;f[p](this.nta(g));c&=~g}d[p][cd](d,f);(a=a.eK)&&d[p][cd](d,a);L&&!vg(Ij)&&d[p][cd](d,cja(this,d));return d};F.nta=function $Ad(a){this.KIa||kja(this);return this.KIa[a]};F.geb=function $Bd(a){this.Xfc||lja(this);a=da(this.Xfc[a],10);return ia(a)?0:a};H(vn,un);Ne(vn);F=vn[w];var jo="button";F.WG=E(jo);F.Gna=function $Dd(a,c,d){if(Fh)c==16?gn(a,ska,d):vn.C.Gna[z](this,a,c,d)};F.ba=function $Ed(a){var c=vn.C.ba[z](this,a),d=a.wK();d&&this.UQ(c,d);(d=a.Ca())&&this.Fa(c,d);a.ht&16&&this.Gna(c,16,k);return c};F.Pb=function $Fd(a,c){c=vn.C.Pb[z](this,a,c);a.vo(this.Ca(c));a.rYa(this.wK(c));a.ht&16&&this.Gna(c,16,k);return c};F.Ca=Me;F.Fa=Me;F.wK=function $Gd(a){return a[Pk]};F.UQ=function $Hd(a,c){if(a)ik(a,c||I)};var vka="-Js-Kc",wka="-Js-KK";\r
17552 F.KXa=function $Id(a,c){var d=a.wP(),f=this.Qb()+vka,g=this.Qb()+wka;a.kT(d?g:f,!!(c&1));a.kT(d?f:g,!!(c&2))};var xka="J-I";F.Qb=E(xka);var nja={},oja={};H(xn,nn);F=xn[w];F.Bg=i;F.qa=0;F.ht=39;F.U3a=255;F.xZa=0;F.yg=h;F.eK=i;F.Bfb=h;F.JGa=k;F.Lk=function $Kd(){return this.Kc.Lk(this)};F.Hga=function $Ld(){return this.sc||(this.sc=new hn)};var ko="Kc";F.li=D(ko);F.PW=function $Nd(a){if(this.Cc())e(Error(An));this.b()&&bja(this,i);this.Kc=a};F.Wl=function $Od(a){if(a){if(this.eK)ef(this.eK,a)||this.eK[p](a);else this.eK=[a];this.Kc.kT(this,a,h)}};F.kT=function $Pd(a,c){c?this.Wl(a):sja(this,a)};\r
17553 F.ba=function $Qd(){var a=this.Kc.ba(this);this.wa=a;if(Fh){var c=this.Kc.WG();c&&fn(a,c)}this.JGa||this.Kc.Kaa(a,k);this.Ib()||this.Kc.ra(a,k)};F.Cd=function $Rd(){return this.Kc.Cd(this.b())};F.ji=function $Sd(a){return this.Kc.ji(a)};F.Ff=function $Td(a){this.wa=a=this.Kc.Pb(this,a);if(Fh){var c=this.Kc.WG();c&&fn(a,c)}this.JGa||this.Kc.Kaa(a,k);this.yg=a[x][nl]!=xd};\r
17554 F.ma=function $Ud(){xn.C.ma[z](this);this.Kc.mP(this);if(this.ht&-2){this.Bfb&&rja(this,h);if(this.ht&32){var a=this.Lk();if(a){var c=this.Hga();c.Pe(a);this.H().w(c,jn,this.Qo).w(a,lj,this.aU).w(a,kj,this.oC)}}}};F.Ba=function $Vd(){xn.C.Ba[z](this);this.sc&&this.sc[Ik]();this.Ib()&&this.Mc()&&this.Kc.Xm(this,k)};F.L=function $Wd(){xn.C.L[z](this);if(this.sc){this.sc.D();delete this.sc}delete this.Kc;this.eK=this.Bg=i};var lo="Bg";F.Ee=D(lo);F.xb=function $Yd(a){this.Kc.xb(this.b(),a);this.bma(a)};\r
17555 F.bma=Ge(lo);F.un=function $_d(){var a=this.Ee();if(!a||Ye(a))return a;return(a=Ve(a)?Li(a,dh)[kd](I):dh(a))&&Pf(a)};F.lM=function $0d(a){this.xb(a)};F.mma=function $1d(a){xn.C.mma[z](this,a);var c=this.b();c&&this.Kc.mma(c,a)};F.Kaa=function $2d(a){this.JGa=a;var c=this.b();c&&this.Kc.Kaa(c,a)};F.Ib=D("yg");var mo="show",no="hide";F.ra=function $4d(a,c){if(c||this.yg!=a&&this[r](a?mo:no)){(c=this.b())&&this.Kc.ra(c,a);this.Mc()&&this.Kc.Xm(this,a);this.yg=a;return h}return k};F.Mc=function $5d(){return!this.VE(1)};\r
17556 F.Ac=function $6d(a){var c=this.ac();if(!(c&&typeof c.Mc==Se&&!c.Mc())&&zn(this,1,!a)){if(!a){this[Lk](k);this.Rk(k)}this.Ib()&&this.Kc.Xm(this,a);this.Oe(1,!a)}};F.Rk=function $7d(a){zn(this,2,a)&&this.Oe(2,a)};F.Eb=function $8d(){return this.VE(4)};hk(F,function $9d(a){zn(this,4,a)&&this.Oe(4,a)});F.Vo=function $$d(){return this.VE(8)};F.zm=function $ae(a){zn(this,8,a)&&this.Oe(8,a)};F.LH=function $be(){return this.VE(16)};F.zwa=function $ce(){return this.VE(32)};F.vj=function $de(){return this.VE(64)};\r
17557 F.Hi=function $ee(a){zn(this,64,a)&&this.Oe(64,a)};F.xc=D(Yj);F.VE=function $ge(a){return!!(this.qa&a)};F.Oe=function $he(a,c){if(this.ht&a&&c!=this.VE(a)){this.Kc.Oe(this,a,c);this.qa=c?this.qa|a:this.qa&~a}};var yka="enter";F.qA=function $ie(a){a[eb]&&!Zg(this.b(),a[eb])&&this[r](yka)&&this.Mc()&&Cn(this,2)&&this.Rk(h)};var zka="leave";F.q_=function $je(a){if(a[eb]&&!Zg(this.b(),a[eb])&&this[r](zka)){Cn(this,4)&&this[Lk](k);Cn(this,2)&&this.Rk(k)}};\r
17558 F.Ey=function $ke(a){if(this.Mc()){Cn(this,2)&&this.Rk(h);if(nm(a,0)){Cn(this,4)&&this[Lk](h);this.Kc.yC(this)&&this.Lk()[Ek]()}}!this.JGa&&nm(a,0)&&a[zb]()};F.X6=function $le(a){if(this.Mc()){Cn(this,2)&&this.Rk(h);this.Eb()&&this.ox(a)&&Cn(this,4)&&this[Lk](k)}};F.dUb=function $me(a){this.Mc()&&this.ox(a)};var Aka="altKey",Bka="ctrlKey",Cka="metaKey",Dka="shiftKey";\r
17559 F.ox=function $ne(a){Cn(this,16)&&yn(this,!this.LH());Cn(this,8)&&this.zm(h);Cn(this,64)&&this.Hi(!this.vj());var c=new N(Wn,this);if(a)for(var d=[Aka,Bka,Cka,Dka],f,g=0;f=d[g];g++)c[f]=a[f];return this[r](c)};F.aU=function $oe(){Cn(this,32)&&tja(this,h)};F.oC=function $pe(){Cn(this,4)&&this[Lk](k);Cn(this,32)&&tja(this,k)};F.Qo=function $qe(a){if(this.Ib()&&this.Mc()&&this.bU(a)){a[zb]();a[Ec]();return h}return k};F.bU=function $re(a){return a[Sb]==13&&this.ox(a)};if(!Ze(xn))e(Error(".35`"+xn));\r
17560 if(!Ze(un))e(Error(".36`"+un));var Eka=bf(xn);nja[Eka]=un;wn("J-bMcfAe",function(){return new xn(i)});_B_prog(12)}catch(e){_B_err(e)}\r
17561 \r
17562 try{H(En,vn);Ne(En);F=En[w];F.WG=B();F.ba=function $te(a){uja(this,a);return a.W().ba(jo,{"class":this.ry(a)[kd](J),disabled:!a.Mc(),title:a.wK()||I,value:a.Ca()||I},a.un()||I)};var Fka="BUTTON",oo="INPUT",Gka="reset";F.ji=function $ue(a){return a[ed]==Fka||a[ed]==oo&&(a[Zb]==jo||a[Zb]==oj||a[Zb]==Gka)};F.Pb=function $ve(a,c){uja(this,a);c[Uk]&&K(c,this.nta(1));return En.C.Pb[z](this,a,c)};F.mP=function $we(a){a.H().w(a.b(),P,a.ox)};F.Kaa=Me;F.mma=Me;F.yC=function $xe(a){return a.Mc()};F.Xm=Me;\r
17563 F.Oe=function $ye(a,c,d){En.C.Oe[z](this,a,c,d);if((a=a.b())&&c==1)jk(a,d)};F.Ca=function $ze(a){return a[q]};F.Fa=function $Ae(a,c){if(a)pa(a,c)};F.Gna=Me;H(Fn,xn);F=Fn[w];F.Ca=D(Ad);F.Fa=function $Ce(a){this.jf=a;this.li().Fa(this.b(),a)};F.vo=Ge(Ad);F.wK=D("fEa");F.UQ=function $Fe(a){this.fEa=a;this.li().UQ(this.b(),a)};F.rYa=Ge("fEa");F.KXa=function $He(a){this.li().KXa(this,a)};F.L=function $Ie(){Fn.C.L[z](this);delete this.jf;delete this.fEa};F.ma=function $Je(){Fn.C.ma[z](this);if(this.ht&32){var a=this.Lk();a&&this.H().w(a,jj,this.bU)}};F.bU=function $Ke(a){if(a[Sb]==13&&a[Zb]==jn||a[Sb]==32&&a[Zb]==jj)return this.ox(a);return a[Sb]==32};\r
17564 wn(xka,function(){return new Fn(i)});H(Gn,un);Ne(Gn);Gn[w].ba=function $Le(a){return a.W().ba(T,this.Qb())};Gn[w].Pb=function $Me(a,c){if(c[ed]==Bd){var d=c;c=this.ba(a);Qg(c,d);Sg(d)}else K(c,this.Qb());return c};Gn[w].xb=B();var po="J-Kh";Gn[w].Qb=E(po);H(Hn,xn);var Hka="separator";Hn[w].ma=function $Pe(){Hn.C.ma[z](this);fn(this.b(),Hka)};wn(po,function(){return new Hn});Ne(vja);F=vja[w];F.WG=B();F.ba=function $Re(a){return a.W().ba(T,this.ry(a)[kd](J))};F.Cd=Ee();F.ji=function $Te(a){return a[ed]==Cd};F.Pb=function $Ue(a,c){c.id&&a.qh(c.id);var d=this.Qb(),f=k,g=zg(c);g&&Ff(g,function(j){if(j==d)f=h;else j&&this.qxb(a,j,d)},this);f||K(c,d);this.rKa(a,c);return c};var Ika="-JV",qo="horizontal",Jka="-BvBYQ";F.qxb=function $Ve(a,c,d){if(c==d+dja)a.Ac(k);else if(c==d+Ika)a.lCa(qo);else c==d+Jka&&a.lCa(In)};\r
17565 F.rKa=function $We(a,c){if(c)for(var d=c[Tb],f;d&&d[A]==c;){f=d[fc];if(d[nb]==1){var g=this.IMa(d);if(g){g.wa=d;a.Mc()||g.Ac(k);a.ha(g);g.Pb(d)}}else if(!d[md]||Pf(d[md])==I)c[Nc](d);d=f}};F.IMa=function $Xe(a){return pja(a)};F.mP=function $Ye(a){a=a.b();an(a,h,Fh);if(L)kk(a,h);var c=this.WG();c&&fn(a,c)};F.Lk=function $Ze(a){return a.b()};F.Qb=E("J-Jw");F.ry=function $0e(a){var c=this.Qb(),d=[c,a.Rs==qo?c+Ika:c+Jka];a.Mc()||d[p](c+dja);return d};H(Jn,nn);F=Jn[w];F.xQa=i;F.sc=i;F.Kc=i;F.Rs=i;F.yg=h;F.Lf=h;F.mv=h;F.Km=-1;F.wu=i;F.gV=k;F.bGb=k;F.vY=i;F.Lk=function $1e(){return this.xQa||this.Kc.Lk(this)};F.Hga=function $2e(){return this.sc||(this.sc=new hn(this.Lk()))};F.li=D(ko);F.PW=function $4e(a){if(this.b())e(Error(An));this.Kc=a};F.ba=function $5e(){this.wa=this.Kc.ba(this)};F.Cd=function $6e(){return this.Kc.Cd(this.b())};F.ji=function $7e(a){return this.Kc.ji(a)};\r
17566 F.Ff=function $8e(a){this.wa=this.Kc.Pb(this,a);if(a[x][nl]==xd)this.yg=k};F.ma=function $9e(){Jn.C.ma[z](this);sn(this,function(c){c.Cc()&&yja(this,c)},this);var a=this.b();this.Kc.mP(this);this.ra(this.yg,h);this.H().w(this,yka,this.Nua).w(this,on,this.nfb).w(this,Via,this.cgb).w(this,pn,this.EJc).w(this,qn,this.OHc).w(a,fj,this.Ey).w(Eg(a),gj,this.kIc).w(a,[fj,gj,Xi,Yi],this.KHc);this.yC()&&xja(this,h)};F.Ba=function $$e(){this.dp(-1);this.wu&&this.wu.Hi(k);this.gV=k;Jn.C.Ba[z](this)};\r
17567 F.L=function $af(){Jn.C.L[z](this);if(this.sc){this.sc.D();this.sc=i}this.Kc=this.wu=this.vY=i};F.Nua=E(h);var ro="activedescendant";F.nfb=function $cf(a){var c=tn(this,a[y]);if(c>-1&&c!=this.Km){var d=Kn(this);d&&d.Rk(k);this.Km=c;d=Kn(this);this.gV&&d[Lk](h);if(this.wu&&d!=this.wu)d.ht&64?d.Hi(h):this.wu.Hi(k)}gn(this.b(),ro,a[y].b().id)};F.cgb=function $df(a){if(a[y]==Kn(this))this.Km=-1;gn(this.b(),ro,I)};\r
17568 F.EJc=function $ef(a){if((a=a[y])&&a!=this.wu&&a.ac()==this){this.wu&&this.wu.Hi(k);this.wu=a}};F.OHc=function $ff(a){if(a[y]==this.wu)this.wu=i};F.Ey=function $gf(a){this.Lf&&Dja(this,h);var c=this.Lk(),d;a:{if(c)if((d=c.getAttributeNode(Wha))&&d.specified){d=c[lha];d=mm(d)&&d>=0;break a}d=k}d?c[Ek]():a[zb]()};F.kIc=function $hf(){this.gV=k};\r
17569 F.KHc=function $if(a){var c;a:{c=a[y];if(this.vY)for(var d=this.b();c&&c[A]&&c!=d;){var f=c.id;if(f in this.vY){c=this.vY[f];break a}c=c[A]}c=i}if(c)switch(a[Zb]){case fj:c.Ey(a);break;case gj:c.X6(a);break;case Xi:c.qA(a);break;case Yi:c.q_(a);break}};F.aU=B();F.oC=function $kf(){this.dp(-1);this.gV=k;this.wu&&this.wu.Hi(k)};F.Qo=function $lf(a){if(this.Mc()&&rn(this)!=0&&this.bU(a)){a[zb]();a[Ec]();return h}return k};\r
17570 F.bU=function $mf(a){var c=Kn(this);if(c&&typeof c.Qo==Se&&c.Qo(a))return h;if(this.wu&&this.wu!=c&&typeof this.wu.Qo==Se&&this.wu.Qo(a))return h;switch(a[Sb]){case 27:if(this.yC())this.Lk()[yk]();else return k;break;case 36:Ln(this);break;case 35:Aja(this);break;case 38:if(this.Rs==In)Cja(this);else return k;break;case 37:if(this.Rs==qo)this.wP()?Bja(this):Cja(this);else return k;break;case 40:if(this.Rs==In)Bja(this);else return k;break;case 39:if(this.Rs==qo)this.wP()?Cja(this):Bja(this);else return k;\r
17571 break;default:return k}return h};F.ha=function $nf(a,c){Jn.C.ha[z](this,a,c)};F.Jf=function $of(a,c,d){Dn(a,2,h);Dn(a,64,h);if(this.yC()||!this.bGb)Bn(a,32,k);qja(a,k);Jn.C.Jf[z](this,a,c,d);d&&this.Cc()&&yja(this,a);c<=this.Km&&this.Km++};lk(F,function $pf(a,c){var d=tn(this,a);if(d!=-1)if(d==this.Km)a.Rk(k);else d<this.Km&&this.Km--;(d=a.b())&&d.id&&dia(this.vY,d.id);a=Jn.C[Nc][z](this,a,c);qja(a,h);return a});F.lCa=function $qf(a){if(this.b())e(Error(An));this.Rs=a};F.Ib=D("yg");var Kka="aftershow";\r
17572 F.ra=function $sf(a,c){if(c||this.yg!=a&&this[r](a?mo:no)){this.yg=a;var d=this.b();if(d){Wm(d,a);this.yC()&&wja(this.Kc,this.Lk(),this.Lf&&this.yg);this.yg&&!c&&this[r](Kka)}return h}return k};var so="Lf";F.Mc=D(so);F.Ac=function $uf(a){if(this.Lf!=a&&this[r](a?Uia:Tia)){if(a){this.Lf=h;sn(this,function(c){if(c.hkc)delete c.hkc;else c.Ac(h)})}else{sn(this,function(c){if(c.Mc())c.Ac(k);else c.hkc=h});this.gV=this.Lf=k}this.yC()&&wja(this.Kc,this.Lk(),a&&this.yg)}};var to="mv";F.yC=D(to);\r
17573 F.Xm=function $wf(a){a!=this.mv&&this.Cc()&&xja(this,a);this.mv=a;this.Lf&&this.yg&&wja(this.Kc,this.Lk(),a)};F.fH=D("Km");F.dp=function $yf(a){if(a=this.rb(a))a.Rk(h);else this.Km>-1&&Kn(this).Rk(k)};F.Rk=function $zf(a){this.dp(tn(this,a))};F.j5a=function $Af(a){return a.Ib()&&a.Mc()&&!!(a.ht&2)};F.Mwb=function $Bf(a){this.dp(a)};_B_prog(13)}catch(e){_B_err(e)}\r
17574 \r
17575 try{H(Mn,un);Ne(Mn);F=Mn[w];var Lka="menuitem";F.WG=E(Lka);F.ba=function $Df(a){var c=a.W().ba(T,this.ry(a)[kd](J),Gja(this,a.Ee(),a.W()));Ija(this,a,c,!!(a.ht&8)||!!(a.ht&16));return c};F.Cd=function $Ef(a){return a&&a[Tb]};F.Pb=function $Ff(a,c){var d=Wg(c),f=On(this,2);d&&d[uc][Db](f)!=-1||c[o](Gja(this,c[cc],a.W()));if(Bg(c,Pn)){a.Maa(h);this.Maa(a,c,h)}return Mn.C.Pb[z](this,a,c)};\r
17576 F.xb=function $Gf(a,c){var d=this.Cd(a),f=Hja(this,a)?d[Tb]:i;Mn.C.xb[z](this,a,c);if(f&&!Hja(this,a))d[Bb](f,d[Tb]||i)};var Mka="menuitemradio";F.Uaa=function $Hf(a,c,d){if(c){fn(c,d?Mka:this.WG());Ija(this,a,c,d)}};var Nka="menuitemcheckbox";F.Maa=function $If(a,c,d){if(c){fn(c,d?Nka:this.WG());Ija(this,a,c,d)}};var Oka="J-Ks-KO";F.nta=function $Jf(a){switch(a){case 2:return On(this,0);case 16:case 8:return Oka;default:return Mn.C.nta[z](this,a)}};\r
17577 F.geb=function $Kf(a){var c=On(this,0);switch(a){case Oka:return 16;case c:return 2;default:return Mn.C.geb[z](this,a)}};var uo="J-N";F.Qb=E(uo);H(Qn,xn);Qn[w].Ca=function $Mf(){var a=this.kb;return a!=i?a:this.un()};var wo="kb";Qn[w].Fa=Ge(wo);Qn[w].Uaa=function $Of(a){Bn(this,8,a);this.LH()&&!a&&yn(this,k);var c=this.b();c&&this.Kc.Uaa(this,c,a)};Qn[w].Maa=function $Pf(a){Bn(this,16,a);var c=this.b();c&&this.Kc.Maa(this,c,a)};wn(uo,function(){return new Qn(i)});H(Rn,vja);Ne(Rn);F=Rn[w];var Pka="menu";F.WG=E(Pka);F.ji=function $Rf(a){return a[ed]==Dd||Rn.C.ji[z](this,a)};F.IMa=function $Sf(a){return a[ed]==Bd?new Hn:Rn.C.IMa[z](this,a)};F.CJ=function $Tf(a,c){return Zg(a.b(),c)};var xo="J-M";F.Qb=E(xo);var yo="haspopup";F.mP=function $Vf(a){Rn.C.mP[z](this,a);a=a.b();gn(a,yo,jg)};wn(po,function(){return new Hn});H(Sn,Jn);F=Sn[w];F.zt=h;F.bY=k;F.Qb=function $Wf(){return this.li().Qb()};F.CJ=function $Xf(a){if(this.li().CJ(this,a))return h;for(var c=0,d=rn(this);c<d;c++){var f=this.rb(c);if(typeof f.CJ==Se&&f.CJ(a))return h}return k};F.Bk=function $Yf(a){this.ha(a,h)};F.r3=function $Zf(a,c){this.Jf(a,c,h)};mk(F,function $_f(a){(a=this[Nc](a,h))&&a.D()});F.caa=function $0f(a){(a=this.Vp(a,h))&&a.D()};F.Hw=function $1f(a){return this.rb(a)};F.Dp=function $2f(){return rn(this)};\r
17578 F.vy=function $3f(){return this.bf||[]};F.Kj=function $4f(a,c){var d=this.Ib();d||Wm(this.b(),h);Qm(this.b(),a,c);d||Wm(this.b(),k)};F.Qk=function $5f(a){(this.zt=a)&&this.Xm(h)};F.ra=function $6f(a,c){(c=Sn.C.ra[z](this,a,c))&&a&&this.Cc()&&this.zt&&this.Lk()[Ek]();return c};F.Nua=function $7f(a){this.zt&&this.Lk()[Ek]();return Sn.C.Nua[z](this,a)};F.j5a=function $8f(a){return(this.bY||a.Mc())&&a.Ib()&&!!(a.ht&2)};H(Tn,vn);Ne(Tn);F=Tn[w];var zo="J-J5-Ji ";F.ba=function $9f(a){var c={"class":zo+this.ry(a)[kd](J),title:a.wK()||I};return a.W().ba(T,c,this.Cqa(a.Ee(),a.W()))};F.Cd=function $$f(a){return a&&a[Tb][Tb]};var Qka="-Kv-H",Rka="-J6-H";F.Cqa=function $ag(a,c){return c.ba(T,zo+(this.Qb()+Qka),c.ba(T,zo+(this.Qb()+Rka),a))};F.ji=function $bg(a){return a[ed]==Cd};F.cVb=function $cg(a,c){if((c=a.W().Bp(c))&&c[uc][Db](this.Qb()+Qka)!=-1)if((a=a.W().Bp(c))&&a[uc][Db](this.Qb()+Rka)!=-1)return h;return k};\r
17579 var Ao="J-J5-Ji";F.Pb=function $dg(a,c){Jja(c,h);Jja(c,k);this.cVb(a,c)||c[o](this.Cqa(c[cc],a.W()));K(c,Ao,this.Qb());return Tn.C.Pb[z](this,a,c)};F.Qb=E("J-C7uZwb-I");H(Un,Tn);Ne(Un);if(Fh)Un[w].xb=function $fg(a,c){var d=Un.C.Cd[z](this,a&&a[Tb]);d&&Ug(this[gha](c,Cg(a)),d)};F=Un[w];F.Cd=function $gg(a){a=Un.C.Cd[z](this,a&&a[Tb]);if(Fh&&a&&a.__goog_wrapper_div)a=a[Tb];return a};F.Pb=function $hg(a,c){var d=Gg(Hg,xo,c)[0];if(d){Wm(d,k);Eg(d)[Lc][o](d);var f=new Sn;f.Pb(d);a.Zs(f)}return Un.C.Pb[z](this,a,c)};F.Cqa=function $ig(a,c){return Un.C.Cqa[z](this,[this[gha](a,c),this.gea(c)],c)};var Ska="-Jm";\r
17580 F.createCaption=function $jg(a,c){return c.ba(T,zo+(this.Qb()+Ska),a)};var Tka="-JG";F.gea=function $kg(a){return a.ba(T,zo+(this.Qb()+Tka),Ed)};var Uka="J-M-I";F.Qb=E(Uka);H(Vn,Fn);F=Vn[w];F.Qoa=h;F.Bvb=k;F.D7=k;F.ma=function $mg(){Vn.C.ma[z](this);this.Ia&&Kja(this,this.Ia,h);gn(this.b(),yo,jg)};F.Ba=function $ng(){Vn.C.Ba[z](this);if(this.Ia){this.Hi(k);this.Ia.Ba();Kja(this,this.Ia,k);var a=this.Ia.b();a&&Sg(a)}};F.L=function $og(){Vn.C.L[z](this);if(this.Ia){this.Ia.D();delete this.Ia}this.ab.D()};F.Ey=function $pg(a){Vn.C.Ey[z](this,a);if(this.Eb()){this.Hi(!this.vj());this.Ia&&Dja(this.Ia,this.vj())}};\r
17581 F.X6=function $qg(a){Vn.C.X6[z](this,a);this.Ia&&!this.Eb()&&Dja(this.Ia,k)};F.ox=function $rg(){this[Lk](k);return h};F.jIc=function $sg(a){this.Ia&&this.Ia.Ib()&&!this.CJ(a[y])&&this.Hi(k)};F.CJ=function $tg(a){return a&&Zg(this.b(),a)||this.Ia&&this.Ia.CJ(a)||k};F.bU=function $ug(a){if(a[Zb]!=(a[Sb]==32?jj:jn))return k;if(this.Ia&&this.Ia.Ib()){var c=this.Ia.Qo(a);if(a[Sb]==27){this.Hi(k);return h}return c}if(a[Sb]==40||a[Sb]==38||a[Sb]==32){this.Hi(h);return h}return k};F.Afb=function $vg(){this.Hi(k)};\r
17582 F.qJc=function $wg(){this.Eb()||this.Hi(k)};F.oC=function $xg(a){this.D7||this.Hi(k);Vn.C.oC[z](this,a)};F.fe=function $yg(){this.Ia||this.Zs(new Sn(this.W()));return this.Ia||i};F.Zs=function $zg(a){var c=this.Ia;if(a!=c){if(c){this.Hi(k);this.Cc()&&Kja(this,c,k);delete this.Ia}if(a){this.Ia=a;a.Ig(this);a.ra(k);a.Qk(this.D7);this.Cc()&&Kja(this,a,h)}}return c};F.Bk=function $Ag(a){this.fe().ha(a,h)};F.r3=function $Bg(a,c){this.fe().Jf(a,c,h)};mk(F,function $Cg(a){(a=this.fe()[Nc](a,h))&&a.D()});\r
17583 F.caa=function $Dg(a){(a=this.fe().Vp(a,h))&&a.D()};F.Hw=function $Eg(a){return this.Ia?this.Ia.rb(a):i};F.Dp=function $Fg(){return this.Ia?rn(this.Ia):0};F.ra=function $Gg(a,c){(a=Vn.C.ra[z](this,a,c))&&!this.Ib()&&this.Hi(k);return a};F.Ac=function $Hg(a){Vn.C.Ac[z](this,a);this.Mc()||this.Hi(k)};F.pB=function $Ig(){this.Hi(h)};\r
17584 F.Hi=function $Jg(a){Vn.C.Hi[z](this,a);if(this.Ia&&this.VE(64)==a){if(a){this.Ia.Cc()||this.Ia.eb();this.F0a=Mm(this.b());this.UHa=Um(this.b());this.oAa();this.Ia.dp(-1)}else{this[Lk](k);this.Ia.gV=k;if(Ue(this.oUa)){this.oUa=undefined;var c=this.Ia.b();c&&Rm(c,I,I)}}this.Ia.ra(a);c=this.H();var d=a?c.w:c.hb;d[z](c,this.W().cb(),fj,this.jIc,h);this.D7&&d[z](c,this.Ia,kj,this.qJc);d[z](c,this.ab,yj,this.cQ);a?this.ab[Rc]():this.ab[qc]()}};\r
17585 F.oAa=function $Kg(){var a=this.Qoa?5:7;a=new Pia(this.b(),a,!this.Bvb,this.Bvb);var c=this.Ia.b();if(!this.Ia.Ib()){Fa(c[x],yd);Wm(c,h)}if(!this.oUa&&this.Bvb)this.oUa=Tm(c);a.If(c,this.Qoa?4:6,i,this.oUa);if(!this.Ia.Ib()){Wm(c,k);Fa(c[x],ud)}};F.cQ=function $Lg(){var a=Um(this.b()),c=Mm(this.b());if(!jia(this.UHa,a)||!hia(this.F0a,c)){this.UHa=a;this.F0a=c;this.oAa()}};F.nfb=function $Mg(a){gn(this.b(),ro,a[y].b().id)};F.cgb=function $Ng(){Kn(this.Ia)||gn(this.b(),ro,I)};wn(Uka,function(){return new Vn(i)});_B_prog(14)}catch(e){_B_err(e)}\r
17586 \r
17587 try{Xn[w].vc=function $Og(){return new Xn(this[Rc],this.Oc)};var Oja=/#(.)(.)(.)/,Nja=/^#(?:[0-9a-f]{3}){1,2}$/i;H(Yn,un);Ne(Yn);var Vka=0;F=Yn[w];F.ba=function $Pg(a){var c=this.ry(a);return a.W().ba(T,c?c[kd](J):i,Qja(this,a.Ee(),a.Ke(),a.W()))};var Bo="table",Wka="-KW",Co="tbody",Xka="-Jj",Yka="grid";F.Pqa=function $Qg(a,c){a=c.ba(Bo,this.Qb()+Wka,c.ba(Co,this.Qb()+Xka,a));eha(a,0);gk(a,0);fn(a,Yka);return a};var Do="td",Zka="-Jn",ala="gridcell";F.AJa=function $Rg(a,c){a=c.ba(Do,{"class":this.Qb()+Zka,id:this.Qb()+Zka+Vka++},a);fn(a,ala);return a};F.ji=E(k);F.Pb=E(i);\r
17588 F.xb=function $Ug(a,c){if(a){var d=Gg(Co,this.Qb()+Xka,a)[0];if(d){var f=0;Ff(d[kl],function(v){Ff(v[cl],function(C){Pg(C);if(c){var M=c[f++];M&&Og(C,M)}})});if(f<c[u]){for(var g=[],j=Cg(a),n=d[kl][0][cl][u];f<c[u];){var s=c[f++];g[p](this.AJa(s,j));if(g[u]==n){s=j.ba(Zn,this.Qb()+Pja,g);d[o](s);Ia(g,0)}}if(g[u]>0){for(;g[u]<n;)g[p](this.AJa(I,j));s=j.ba(Zn,this.Qb()+Pja,g);d[o](s)}}}an(a,h,Fh)}};\r
17589 F.pta=function $Vg(a,c){for(a=a.b();c&&c[nb]==1&&c!=a;){if(c[ed]==Fd&&Bg(c,this.Qb()+Zka))return c[Tb];c=c[A]}return i};F.Qb=E("J-Kw");H(Wja,uh);F=Wja[w];F.NQ=i;F.JF=i;F.Dp=function $Xg(){return this.qi[u]};F.Hta=function $Yg(){return this.qi[this.qi[u]-1]};F.Hw=function $Zg(a){return this.qi[a]||i};F.dGa=function $_g(a){if(a){Ff(a,function(c){this.Ila(c,k)},this);of(this.qi,a)}};F.Bk=function $0g(a){this.r3(a,this.Dp())};F.r3=function $1g(a,c){if(a){this.Ila(a,k);km(this.qi,a,c)}};mk(F,function $2g(a){if(a&&jf(this.qi,a))if(a==this.NQ){this.NQ=i;this[r](nj)}});F.caa=function $3g(a){this[Yk](this.Hw(a))};var bla="NQ";F.rH=D(bla);\r
17590 F.fp=function $5g(a){if(a!=this.NQ){this.Ila(this.NQ,k);this.NQ=a;this.Ila(a,h)}this[r](nj)};F.Xt=function $6g(){return this.NQ?ff(this.qi,this.NQ):-1};F.Pl=function $7g(a){this.fp(this.Hw(a))};Aa(F,function $8g(){gf(this.qi);this.NQ=i});F.L=function $9g(){Wja.C.L[z](this);delete this.qi;this.NQ=i};F.Ila=function $$g(a,c){if(a)if(typeof this.JF==Se)this.JF(a,c);else typeof a.zm==Se&&a.zm(c)};H(ao,xn);F=ao[w];F.We=i;F.Km=-1;F.Sg=i;F.L=function $ah(){ao.C.L[z](this);if(this.Sg){this.Sg.D();this.Sg=i}this.We=i};F.bma=function $bh(a){ao.C.bma[z](this,a);Zja(this);if(this.Sg){this.Sg[bc]();this.Sg.dGa(a)}else{this.Sg=new Wja(a);this.Sg.JF=G(this.Ila,this);this.H().w(this.Sg,nj,this.tha)}this.Km=-1};F.un=E(i);F.lM=B();F.qA=function $eh(a){ao.C.qA[z](this,a);var c=this.li().pta(this,a[y]);c&&a[eb]&&Zg(c,a[eb])||c!=Xja(this)&&Yja(this,c)};\r
17591 F.q_=function $fh(a){ao.C.q_[z](this,a);var c=this.li().pta(this,a[y]);c&&a[eb]&&Zg(c,a[eb])||c==Xja(this)&&Tja(this.li(),this,c,k)};F.Ey=function $gh(a){ao.C.Ey[z](this,a);if(this.Eb()){a=this.li().pta(this,a[y]);a!=Xja(this)&&Yja(this,a)}};F.ox=function $hh(){var a=Xja(this);if(a){this.fp(a);return this[r](Wn)}return k};\r
17592 F.Qo=function $ih(a){var c=this.Ee();c=c?c[u]:0;var d=this.We[ib];if(c==0||!this.Mc())return k;if(a[Sb]==13||a[Sb]==32)return this.ox(a);if(a[Sb]==36){this.dp(0);return h}else if(a[Sb]==35){this.dp(c-1);return h}var f=this.Km<0?this.Xt():this.Km;switch(a[Sb]){case 37:if(f==-1)f=c;if(f>0){this.dp(f-1);a[zb]();return h}break;case 39:if(f<c-1){this.dp(f+1);a[zb]();return h}break;case 38:if(f==-1)f=c+d-1;if(f>=d){this.dp(f-d);a[zb]();return h}break;case 40:if(f==-1)f=-d;if(f<c-d){this.dp(f+d);a[zb]();\r
17593 return h}break}return k};F.tha=B();var Eo="We";F.Ke=D(Eo);F.jg=function $lh(a,c){if(this.b())e(Error(An));this.We=mm(a)?new yg(a,c):a;Zja(this)};F.fH=D("Km");F.dp=function $nh(a){if(a!=this.Km){this.l7(this.Km,k);this.Km=a;this.l7(a,h)}};F.Xt=function $oh(){return this.Sg?this.Sg.Xt():-1};F.rH=function $ph(){return this.Sg?this.Sg.rH():i};F.Pl=function $qh(a){this.Sg&&this.Sg.Pl(a)};F.fp=function $rh(a){this.Sg&&this.Sg.fp(a)};\r
17594 F.l7=function $sh(a,c){if(this.b()){var d=this.Ee();d&&a>=0&&a<d[u]&&Tja(this.li(),this,d[a],c)}};F.Ila=function $th(a,c){this.b()&&Vja(this.li(),this,a,c)};H(aka,Hia);aka[w].If=function $uh(a,c,d,f){var g=Lm(a);bn(g,0,a,c,new xg(this.GJ.x+g[dl],this.GJ.y+g[Nk]),d,i,f)};H(bka,aka);bka[w].If=function $vh(a,c,d,f){var g=Lm(a);g=Mm(g);var j;j=Cg(a);j=Pha(j.ki);j=new xg(this.GJ.x+j[dl],this.GJ.y+j[Nk]);var n=c,s=cn(j,a,n,d,g,10,f);if((s&496)!=0){if(s&16||s&32)n^=2;if(s&64||s&128)n^=1;s=cn(j,a,n,d,g,10,f);(s&496)!=0&&cn(j,a,c,d,g,undefined,f)}};H(bo,uh);F=bo[w];F.wa=i;F.eHb=h;F.S3a=i;F.Nm=k;F.njd=k;F.Jkb=-1;F.Akb=-1;F.FVb=k;F.RNb=h;var cla="toggle_display";F.Xd=cla;F.Ga=D(Gd);F.pma=Ge(Gd);F.b=D(eo);F.mM=function $zh(a){cka(this);this.wa=a};F.Hu=function $Ah(a){cka(this);this.eHb=a};F.Laa=Ge("S3a");var dla="Nm";F.Ib=D(dla);F.Bv=function $Dh(){return this.Nm||Zf()-this.Akb<150};F.ra=function $Eh(a){a?this.Ym():this.dP()};F.If=Me;var ela="move_offscreen";\r
17595 F.Ym=function $Fh(){if(!this.Nm)if(this.fob()){if(!this.wa)e(Error(".42"));this.If();var a=Eg(this.wa);this.FVb&&this.na.w(a,ij,this.j0c,h);if(this.eHb){this.na.w(a,fj,this.mka,h);if(L){for(var c=a[rk];c&&c[Gb]==Hd;){try{var d=om(c)}catch(f){break}a=d;c=a[rk]}this.na.w(a,fj,this.mka,h);this.na.w(a,Wea,this.i4b)}else this.na.w(a,kj,this.i4b)}if(this.Xd==cla)this.Wec();else this.Xd==ela&&this.If();this.Nm=h;this.hx()}};\r
17596 F.dP=function $Gh(a){if(!this.Nm||!this.dob(a))return k;this.na&&this.na.wb();if(this.Xd==cla)this.njd?Dh(this.GVb,0,this):this.GVb();else this.Xd==ela&&eka(this);this.Nm=k;this.yV(a);return h};F.Wec=function $Hh(){Fa(this.wa[x],ud);Wm(this.wa,h)};F.GVb=function $Ih(){Fa(this.wa[x],yd);Wm(this.wa,k)};var Fo="beforeshow";F.fob=function $Jh(){return this[r](Fo)};F.hx=function $Kh(){this.Jkb=Zf();this.Akb=-1;this[r](mo)};var Go="beforehide";F.dob=function $Lh(a){return this[r]({type:Go,target:a})};\r
17597 F.yV=function $Mh(a){this.Akb=Zf();this[r]({type:no,target:a})};F.mka=function $Nh(a){a=a[y];if(!Zg(this.wa,a)&&(!this.S3a||Zg(this.S3a,a))&&!(Zf()-this.Jkb<150))this.dP(a)};F.j0c=function $Oh(a){if(a[Sb]==27)if(this.dP(a[y])){a[zb]();a[Ec]()}};F.i4b=function $Ph(a){if(this.RNb){var c=Eg(this.wa);if(L||Ng){if((a=c[rk])&&Zg(this.wa,a))return}else if(a[y]!=c)return;Zf()-this.Jkb<150||this.dP()}};F.L=function $Qh(){bo.C.L[z](this);this.na.D();delete this.wa;delete this.na};_B_prog(15)}catch(e){_B_err(e)}\r
17598 \r
17599 try{H(co,Sn);F=co[w];F.kD=k;F.nZb=0;F.HS=i;F.Ff=function $Rh(a){co.C.Ff[z](this,a);(a=a[Uc](ica)||a.htmlFor)&&this.Pe(this.W().b(a),1)};F.ma=function $Sh(){co.C.ma[z](this);Ef(this.kt,this.HGb,this);var a=this.H();a.w(this,Wn,this.lh);a.w(this.W().cb(),fj,this.h4b,h);Jg&&a.w(this.W().cb(),pj,this.h4b,h)};F.Pe=function $Th(a,c,d,f,g){if(!(a?this.kt.Xb(bf(a)):k)){if(a){c={wa:a,UZa:c,sja:d,Aab:f?pj:fj,jja:g};this.kt.set(bf(a),c);a=c}else a=i;this.Cc()&&this.HGb(a)}};\r
17600 F.HGb=function $Uh(a){this.H().w(a.wa,a.Aab,this.D6b)};ek(F,function $Vh(a){if(!(a?this.kt.Xb(bf(a)):k))e(Error(".43"));a=bf(a);this.Cc()&&fka(this,this.kt.J(a));this.kt[Pb](a)});F.Nn=Ge("kD");F.pB=function $Xh(a,c,d){var f=this.Ib();if((f||Zf()-this.nZb<150)&&this.kD)this.Yb();else if(this[r](Fo)){c=Ke(a.UZa)?new en(a.wa,a.UZa):new bka(c,d);d=Ke(a.sja)?a.sja:4;if(!f)Fa(this.b()[x],yd);Wm(this.b(),h);c.If(this.b(),d,a.jja);if(!f)Fa(this.b()[x],ud);this.HS=a.wa;this.dp(-1);this.ra(h)}};\r
17601 F.DYa=function $Yh(a,c,d){this.pB({sja:d},a,c)};F.MF=function $Zh(a,c,d){this.pB({sja:d,wa:a,UZa:c},0,0)};F.Yb=function $_h(){this.ra(k);if(!this.Ib()){this.nZb=Zf();this.HS=i}};F.lh=function $0h(){this.Yb()};F.D6b=function $1h(a){for(var c=this.kt.Sb(),d=0;d<c[u];d++){var f=this.kt.J(c[d]);if(f.wa==a[Hb]){this.pB(f,a[kc],a[lc]);a[zb]();a[Ec]();return}}};F.h4b=function $2h(a){this.Ib()&&!this.CJ(a[y])&&this.Yb()};F.oC=function $3h(a){co.C.oC[z](this,a);this.Yb()};\r
17602 F.L=function $4h(){co.C.L[z](this);if(this.kt){this.kt[bc]();delete this.kt}};var fla={"":1,n:l.pow(1024,-3),u:l.pow(1024,-2),m:1/1024,k:1024,K:1024,M:l.pow(1024,2),G:l.pow(1024,3),T:l.pow(1024,4),P:l.pow(1024,5)},gla="<wbr>",hla=Jg?"<wbr></wbr>":Ng?"&shy;":gla;var ila=new RegExp("[\u0591-\u07ff\ufb1d-\ufdff\ufe70-\ufefc]"),jla=new RegExp("[A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff]"),kla=new RegExp("^[^A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff]*[\u0591-\u07ff\ufb1d-\ufdff\ufe70-\ufefc]");U[w].set=function $5h(a){this[bc]();this[R](a)};if(bj){U[w].J4a=0;U[w].append=function $6h(a,c){if(c==i)this.pp[this.J4a++]=a;else{this.pp[p][cd](this.pp,arguments);this.J4a=this.pp[u]}return this}}else U[w].append=function $6h(a,c){this.pp+=a;if(c!=i)for(var d=1;d<arguments[u];d++)this.pp+=arguments[d];return this};Aa(U[w],function $7h(){if(bj){Ia(this.pp,0);this.J4a=0}else this.pp=I});U[w].Lga=function $8h(){return this[t]()[u]};\r
17603 Ha(U[w],function $9h(){if(bj){var a=this.pp[kd](I);this[bc]();a&&this[R](a);return a}else return this.pp});O.S().gb(Ph);Ci(O.S(),Ph);Bi(O.S(),"sy110");O.S().gb("sy110");Ci(O.S(),"sy110");var lla="GearsFactory",mla="Gears.Factory",nla="ie_mobile",Ho="beta.localserver";function Io(){if(Jo!=undefined)return Jo;var b=Le("google.gears.factory");if(b)return Jo=b;try{return Jo=new (Le(lla))}catch(a){}try{b=new ActiveXObject(mla);b.getBuildInfo()[Db](nla)!=-1&&b.privateSetGlobalObject(Je);return Jo=b}catch(c){}return Jo=ola()}var pla="gears-factory";\r
17604 function ola(){var b=Le(pg);if(b&&b[gd][vb]["application/x-googlegears"])try{var a=b[yc],c=a[ub](pla);if(!c){c=a[Qb](Oe);Ua(c[x],xd);ka(c,Ah);Wa(c,Ah);za(c,"application/x-googlegears");c.id=pla;a[mc][o](c)}if(typeof c[tc]!="undefined")return c}catch(d){}return i}var qla="navigator.mimeTypes";\r
17605 function rla(){if(Ko!=undefined)return Ko;var b=Le("google.gears.factory");if(b||Le(lla))return Ko=h;if(typeof ActiveXObject!="undefined")try{new ActiveXObject(mla);return Ko=h}catch(a){return Ko=k}if((b=Le(qla))&&b["application/x-googlegears"])if(b=ola()){Jo=b;return Ko=h}return Ko=k}\r
17606 function sla(b){if(!b)e(Error(".44"));b=String(b);var a=b[mb](/[^a-zA-Z0-9\.\-@_]/g,I);if(!a)e(Error(".45`"+b));if(a[u]<=64)return a;for(var c=0,d=0;d<b[u];++d){c=31*c+b[Xc](d);c%=4294967296}b=c;return a[Zc](0,54)+String(b)}Bi(O.S(),"sy16");var tla,ula,vla,wla,xla,yla;yla=xla=wla=vla=ula=tla=k;var Lo=ug();if(Lo)if(Lo[Db]("Firefox")!=-1)tla=h;else if(Lo[Db]("Camino")!=-1)ula=h;else if(Lo[Db]("iPhone")!=-1||Lo[Db]("iPod")!=-1)vla=h;else if(Lo[Db]("Android")!=-1)wla=h;else if(Lo[Db](Faa)!=-1)xla=h;else if(Lo[Db]("Safari")!=-1)yla=h;var zla=L,Ala=tla,Bla=ula,Cla=vla,Dla=wla,Mo=xla,No=yla;var Jo=undefined,Ko=undefined;O.S().gb("sy16");Ci(O.S(),"sy16");function Ela(b,a){return b.coords=a}var Oo="coords";function Fla(b){return 1-l.pow(1-b,3)}function Po(b,a,c,d){if(!Ve(b)||!Ve(a))e(Error(".46"));if(b[u]!=a[u])e(Error(".47"));this.Xma=b;this.UCc=a;this.qw=c;this.WEb=d;Ela(this,[])}function Gla(){Ch[gb](Qo);var b=Zf();for(var a in Ro)Hla(Ro[a],b);Qo=yf(Ro)?i:Ch[xc](Gla,20)}function Ila(b){b=bf(b);delete Ro[b];if(Qo&&yf(Ro)){Ch[gb](Qo);Qo=i}}\r
17607 function Hla(b,a){b.wF=(a-b.cq)/(b.eOb-b.cq);if(b.wF>=1)b.wF=1;b.XPb=1E3/(a-b.ykb);b.ykb=a;Ze(b.WEb)?Jla(b,b.WEb(b.wF)):Jla(b,b.wF);if(b.wF==1){b.qa=0;Ila(b);b.Uob();b.oka()}else b.qa==1&&b.Qya()}function Jla(b,a){Ela(b,new Array(b.Xma[u]));for(var c=0;c<b.Xma[u];c++)b[Oo][c]=(b.UCc[c]-b.Xma[c])*a+b.Xma[c]}var Kla="resume";function Lla(b){So(b,Kla)}function So(b,a){b[r](new Mla(a,b))}\r
17608 function Mla(b,a){N[z](this,b);Ela(this,a[Oo]);this.x=a[Oo][0];this.y=a[Oo][1];this.iFa=a[Oo][2];this.qw=a.qw;this.wF=a.wF;this.JBd=a.XPb;this.rh=a.qa;this.sAd=a}function To(b,a,c){this.Mk=b;this.Ly=a||0;this.na=c;this.Li=G(this.UN,this)}Bi(O.S(),"sy40");H(Po,uh);var Ro={},Qo=i;F=Po[w];F.qa=0;F.XPb=0;F.wF=0;F.cq=i;F.eOb=i;F.ykb=i;var Nla="play";F.Iv=function $$h(a){if(a||this.qa==0){this.wF=0;Ela(this,this.Xma)}else if(this.qa==1)return k;Ila(this);this.cq=Zf();if(this.qa==-1)this.cq-=this.qw*this.wF;this.eOb=this.cq+this.qw;this.ykb=this.cq;this.wF||this.wV();So(this,Nla);this.qa==-1&&Lla(this);this.qa=1;a=bf(this);a in Ro||(Ro[a]=this);Qo||(Qo=Ch[xc](Gla,20));Hla(this,this.cq);return h};\r
17609 Ga(F,function $ai(a){Ila(this);this.qa=0;if(a)this.wF=1;Jla(this,this.wF);So(this,Id);this.oka()});var Ola="pause";F.pause=function $bi(){if(this.qa==1){Ila(this);this.qa=-1;So(this,Ola)}};var Pla="destroy";F.L=function $ci(){this.qa!=0&&this[qc](k);So(this,Pla);Po.C.L[z](this)};var Qla="animate";F.Qya=function $di(){So(this,Qla)};F.wV=function $ei(){So(this,Gaa)};F.oka=function $fi(){So(this,Jd)};var Rla="finish";F.Uob=function $gi(){So(this,Rla)};H(Mla,N);H(To,Jf);F=To[w];F.Xa=0;F.L=function $hi(){To.C.L[z](this);this[qc]();delete this.Mk;delete this.na};Qa(F,function $ii(a){this[qc]();this.Xa=Dh(this.Li,Ke(a)?a:this.Ly)});Ga(F,function $ji(){this.Eb()&&Eh(this.Xa);this.Xa=0});F.Pfa=function $ki(){this[qc]();this.UN()};F.Eb=function $li(){return this.Xa!=0};F.UN=function $mi(){this.Xa=0;this.Mk&&this.Mk[z](this.na)};O.S().gb("sy40");Ci(O.S(),"sy40");Bi(O.S(),"sy19");function Uo(b){b=b.Ga();return b=="buzz"||b=="updates_search"||b=="updates_query_search"};O.S().gb("sy19");Ci(O.S(),"sy19");var Sla="hasPermission";function Vo(){if(Wo!=i)return Wo;var b=Io();if(!b||!b[Sla])Wo=k;else if(Tla)Wo=b[tc](Ho).canServeLocally(Tla);else return k;return!!Wo}Bi(O.S(),"sy15");_B_prog(16)}catch(e){_B_err(e)}\r
17610 \r
17611 try{var Wo,Tla=i;O.S().gb("sy15");Ci(O.S(),"sy15");function Xo(b,a){this.Js=b;this.jf=a}function Yo(b){this.MA=[];b&&Ula(this,b)}function Vla(b,a,c){var d=b.MA;d[p](new Xo(a,c));b.Imb(d[u]-1)}function Ula(b,a){var c,d;if(a instanceof Yo){c=a.Sb();d=a.Oa();if(a.Nb()<=0){b=b.MA;for(a=0;a<c[u];a++)b[p](new Xo(c[a],d[a]));return}}else{c=xf(a);d=wf(a)}for(a=0;a<c[u];a++)Vla(b,c[a],d[a])}Bi(O.S(),"sy24");Xo[w].Dg=D("Js");Xo[w].Ca=D(Ad);Xo[w].vc=function $pi(){return new Xo(this.Js,this.jf)};F=Yo[w];wa(F,function $qi(){var a=this.MA,c=a[u],d=a[0];if(!(c<=0)){if(c==1)gf(a);else{a[0]=a.pop();this.Emb(0)}return d.Ca()}});F.hQ=function $ri(){var a=this.MA;if(a[u]!=0)return a[0].Ca()};F.Emb=function $si(a){for(var c=this.MA,d=c[u],f=c[a];a<l[rb](d/2);){var g=a*2+1,j=a*2+2;g=j<d&&c[j].Dg()<c[g].Dg()?j:g;if(c[g].Dg()>f.Dg())break;c[a]=c[g];a=g}c[a]=f};F.Imb=function $ti(a){for(var c=this.MA,d=c[a];a>0;){var f=l[rb]((a-1)/2);if(c[f].Dg()>d.Dg()){c[a]=c[f];a=f}else break}c[a]=d};\r
17612 F.Oa=function $ui(){for(var a=this.MA,c=[],d=a[u],f=0;f<d;f++)c[p](a[f].Ca());return c};F.Sb=function $vi(){for(var a=this.MA,c=[],d=a[u],f=0;f<d;f++)c[p](a[f].Dg());return c};F.BS=function $wi(a){return Mi(this.MA,function(c){return c.Ca()==a})};F.Xb=function $xi(a){return Mi(this.MA,function(c){return c.Dg()==a})};F.vc=function $yi(){return new Yo(this)};F.Nb=function $zi(){return this.MA[u]};F.nd=function $Ai(){return this.MA[u]==0};Aa(F,function $Bi(){gf(this.MA)});O.S().gb("sy24");Ci(O.S(),"sy24");var Wla=JS_MODE,Zo=alert,ap=screen,bp=navigator;function cp(b,a){return b.onload=a}function Xla(b,a){return b.error=a}function dp(b,a){return b.version=a}function ep(b,a){return b.selection=a}function fp(b,a){return b.navigate=a}function gp(b,a){return b.fontFamily=a}function hp(b,a){return b.selected=a}function ip(b,a){return b.getData=a}function jp(b,a){return b.getDate=a}function Yla(b,a){return b.registerService=a}function kp(b,a){return b.color=a}function lp(b,a){return b.marginLeft=a}\r
17613 function mp(b,a){return b.domain=a}function np(b,a){return b.status=a}function op(b,a){return b.focus=a}function pp(b,a){return b.backgroundPosition=a}function Zla(b,a){return b.marginTop=a}function ama(b,a){return b.padding=a}function bma(b,a){return b.moveTo=a}function cma(b,a){return b.getContext=a}function dma(b,a){return b.paddingLeft=a}function qp(b,a){return b.scrollIntoView=a}function rp(b,a){return b.overflow=a}function ema(b,a){return b.whiteSpace=a}\r
17614 function fma(b,a){return b.getTime=a}function gma(b,a){return b.borderColor=a}function sp(b,a){return b.fontWeight=a}function hma(b,a){return b.setDate=a}function tp(b,a){return b.setData=a}function up(b,a){return b.scrollTop=a}function vp(b,a){return b.hasFocus=a}function wp(b,a){return b.cursor=a}function xp(b,a){return b.selectedIndex=a}function ima(b,a){return b.complete=a}function jma(b,a){return b.size=a}function yp(b,a){return b.index=a}function zp(b,a){return b.checked=a}\r
17615 function Ap(b,a){return b.prompt=a}function kma(b,a){return b.onprogress=a}function Bp(b,a){return b.reload=a}function Cp(b,a){return b.fontSize=a}function Dp(b,a){return b.lineHeight=a}function Ep(b,a){return b.textAlign=a}function lma(b,a){return b.style=a}function Fp(b,a){return b.close=a}function mma(b,a){return b.fontStyle=a}function Gp(b,a){return b.view=a}function Hp(b,a){return b.parent=a}function Ip(b,a){return b.search=a}function nma(b,a){return b.sendMessage=a}\r
17616 function Jp(b,a){return b.call=a}function Kp(b,a){return b.colSpan=a}function Lp(b,a){return b.lastIndex=a}function Mp(b,a){return b.href=a}function Np(b,a){return b.marginRight=a}function oma(b,a){return b.onabort=a}function pma(b,a){return b.backgroundImage=a}function Op(b,a){return b.action=a}function qma(b,a){return b.minWidth=a}function Pp(b,a){return b.reset=a}function Qp(b,a){return b.update=a}function Rp(b,a){return b.label=a}function Sp(b,a){return b.description=a}\r
17617 function rma(b,a){return b.transform=a}\r
17618 var Up="filename",Vp="getItem",sma="valueOf",Wp="alert",Xp="page",Yp="expand",Zp="confirm",aq="field",bq="navigate",cq="reverse",tma="toFixed",uma="onLine",dq="data",eq="content",fq="queryCommandValue",vma="tBodies",gq="selected",hq="getData",iq="getDate",jq="bgColor",kq="registerService",lq="color",wma="marginLeft",mq="domain",nq="write",oq="insertRow",xma="MAX_VALUE",pq="getName",qq="setMonth",rq="fromCharCode",yma="self",sq="setFullYear",tq="moveTo",uq="getContext",zma="translate",Ama="setMinutes",\r
17619 vq="source",wq="scrollIntoView",Bma="enabledPlugin",xq="getHours",yq="insertCell",Cma="host",zq="setDate",Aq="setData",Dma="fill",Bq="hasFeature",Cq="getMonth",Dq="caption",Eq="plugins",Fq="hasFocus",Gq="getDay",Hq="selectedIndex",Iq="complete",Jq="sizeToContent",Kq="size",Lq="index",Mq="checked",Nq="prompt",Oq="getSeconds",Ema="getUTCDate",Fma="handle",Pq="scope",Qq="save",Rq="closed",Sq="reload",Tq="message",Gma="hostname",Hma="sender",Uq="PercentLoaded",Vq="separator",Wq="view",Ima="selectionStart",\r
17620 Xq="sendMessage",Yq="total",Jma="setSeconds",Zq="anchor",ar="getYear",Kma="checkForUpdate",br="options",cr="link",dr="info",Lma="setProperty",er="protocol",fr="getFullYear",Mma="lastIndex",Nma="marginRight",gr="setTime",Oma="clearInterval",hr="scale",ir="console",jr="action",Pma="setHours",kr="reset",lr="empty",Qma="getUTCHours",Rma="normalize",mr="update",nr="getMinutes",or="fileName",pr="label",qr="description",rr="transform",sr="getTimezoneOffset",tr="xa",Sma="Failed to enable Offline Gmail",ur=\r
17621 "cob-matches",Tma="Web Search",Uma="tasksuiloaded",vr="tasks",Vma="Classic",Wma="Friends",wr="^if",Xma="^friends",xr="la",yr="tc",Yma="; ",zr="Sa",Zma="lsmv",Ar="msg",Br="md",ana="mic",bna="yh",cna="Label",dna="Name",Cr="command",Dr="index",ena="HEAD",fna="res",Er=";",gna="lsci",Fr="disconnected",hna="cn",ina=" ou",Gr="mi",Hr="Fd",jna="gl",kna="Go to Label",Ir='" name="',lna="Sent at ",Jr="  ",mna="xd",Lr="xf",nna="kR",ona="JA-Kn-Jr-Kw-Jt",pna="JA-Kn-Jr-Kw-Jn-KO",qna="Remove color",Mr='"></div><div id="',\r
17622 Nr="ts",rna=" = ",Or="Reply to all",sna="Recover from Trash",Pr="Ignore",tna="Report phishing",una="Send",vna="Create a new label",wna="Create a filter",xna="Share",yna="Expand all",zna="transliterationConfig",Qr="^act",Ana="Public",Rr="lcv",Sr="plcv",Bna="yH",Cna="dn",Tr="frs",Dna="-iframe",Ur="-1",Vr="visibility",Wr="gwt.hosted",Xr="service",Ena="popupOpensProfiles",Fna="SOURCES",Yr="exp",Zr="alpha",Gna="GB",as="gb",Hna="Ud",bs="Home",cs="Work",ds="Other",Ina="Bt",Jna="Ax",Kna="tx",Lna="ignoreesc",\r
17623 Mna="l1",Nna="Af",es="Bj",Ona="sD",Pna="sit",fs="sii",Qna="sim",Rna="fvi",Sna="Za",Tna="Ya",gs="ab",Una="PICK",Vna="EDIT",Wna="disp",Xna="userId",Yna="hide-media",hs="db",Zna="edit",aoa="sources",boa="new_group",coa="26ac",is='" value="',doa='"></span></div>',js="uk",ks="link",eoa="Set status here",foa="uf",goa="Loading&hellip;",hoa="Sign into chat",ioa="Try to connect",ls="Offline",joa='" action="',koa="</table></div>",ms='"><tr class="',ns='</span><span id="',os='" style="display:',loa='">&nbsp; ',\r
17624 moa="Invited",ps="<td>",qs="c3",rs="vm",ss="in",ts="1px",noa="vp",ooa="Ae",poa="Ag",qoa="bt",us="sr",roa="Invisible",soa="1m",vs="mp",toa="Available",uoa="Custom Message...",voa="Busy",ws="iv",woa="Sign out of chat",xs="so",xoa="Clear custom messages",ys="de",yoa='"><td>',zs='</td><td id="',zoa="Hide",As='</span><span class="',Aoa="Waiting for ",Boa="stm",Coa="Ok",Doa="csl",Bs='"><img src="images/cleardot.gif" class="',Cs='"/><div class="',Eoa="iOeLLc",Ds='" />',Foa="Hm",Es="Ha",Fs="bottom",Goa="dh",\r
17625 Gs="mm",Hs="po",Hoa="Hc",Ioa="Hb",Joa="Hs",Koa="11",Noa="h9",Ooa="results",Poa="Bi",Qoa="ih",Is="drop",Js="dragend",Ks="dragover",Roa="data",Ls="mD",Ms=' <span class="',Soa="mG",Toa="Reply by chat to ",Ns='" idlink>',Uoa=" is not available to chat",Voa="mF",Os='"><img class="',Ps='" src="',Qs="max",Rs="line",Woa="Hebrew",Xoa="Arabic",Yoa="Urdu",Zoa="Persian",apa="\u000c",bpa="English",Ss="</td></tr></table>",cpa=' value="',Ts="</label>",Us="rc",Vs='<select id="',Ws="sA",Xs='</div><div id="',dpa='"><tr><td><div class="',\r
17626 Ys='" alt="',Zs="</td></tr></table></div>",at='">(',epa="main",fpa="fwdandpop",bt="general",ct='" target=_blank>',dt="sn",gpa="f0",hpa="nY",et="Saving...",ipa="debug",jpa="cpl",kpa="pm",ft="vs",lpa="en-GB",gt="es",ht="fr",it="hr",mpa="lv",jt="nl",npa="pt-BR",opa="pt-PT",kt="ro",lt="sk",mt="vi",nt="el",ot="iw",ppa="zh-TW",qpa="zh-CN",rpa="ko",pt="+bold",qt="+italic",spa="13px",tpa="18px",upa="32px",rt="+fontName",st="+fontSize",tt="+foreColor",ut="+removeFormat",vt='"><b>',wt="</option>",xt='<input type="checkbox" id="',\r
17627 yt='<option value="',vpa=' selected="selected"',wpa="x-small",zt="+underline",At="+backColor",Bt="+link",Ct="+insertOrderedList",Dt="+insertUnorderedList",Et="+outdent",Ft="+indent",Gt="+BLOCKQUOTE",Ht="+justifyLeft",It="+justifyCenter",Jt="+justifyRight",Kt="ei",xpa="imageInserted",ypa="r2",Lt='" title="',zpa="r3",Apa="accounts",Bpa="sx",Mt='"><label for="',Cpa='" disabled>',Dpa="fil",Epa="zh",Fpa='"><input class="',Gpa='" type="text" id="',Nt="vb",Ot="vc",Pt="vd",Hpa="iI",Ipa="cvm",Qt='</span></td><td class="',\r
17628 Jpa='<h3 class="',Kpa=" </span>",Lpa="></div>",Rt='<a target=_blank href="',Mpa="</a>.",St="<div ",Tt='"><tr><td>',Npa="Invite ",Opa="io",Ppa='<button class="',Qpa='" type="button">',Vt="</div></div></div>",Wt="</span></td></tr>",Xt="from",Yt="Ca",Zt="</a></span>",Rpa='</span>&nbsp;<span class="',Spa="ho",au='"></span>',Tpa="nw",bu="ap",Upa="://",Vpa="c0",cu="pb",du="qb",eu="lbl",Wpa="rb",fu="mc",gu="oc",Xpa="hO",Ypa="hN",Zpa="hX",hu="hV",iu="hU",aqa="Search Results",ju="zb",ku="ht",bqa="zip",lu=\r
17629 "mb",mu="mC",nu="ij",ou="href",cqa="</body></html>",dqa="Try again",pu="</span></span>",eqa="kt",fqa='"><table class="',gqa='" class= "',hqa="b7",iqa="margin-top",jqa="O6",kqa="WcILW",qu="&nbsp;-&nbsp;",ru='<img src="',su="url",lqa="nocache",tu="flickr",uu="unknown",mqa="owner",vu="picasa",wu="Ga",xu="paste",yu="Email",nqa='"></div></td><td class="',oqa="and",pqa='"><a href="',zu="OR",qqa="Iq",Au="Edit",Bu='</div></div><div class="',rqa='<param name="wmode" value="%s"/>',sqa="wmode=%s",tqa="loaded",\r
17630 Cu="delete",uqa="Hf",vqa="hS",wqa="cZ",xqa="526",Du="Bb",yqa="Fb",Eu="center",zqa="opaque",Aqa="comment",Bqa="qp",Fu="dY",Cqa="bb",Gu="Gb",Dqa="remote_iframe_",Eqa="Kb",Hu="picker",Iu="Link",Fqa="Retry",Ju='</span></div><div class="',Ku="GC",Gqa="Pb",Hqa="</span></span></div>",Lu='"/>',Iqa='<iframe id="',Jqa="gadgets",Mu="nav",Kqa="rpctoken",Nu=" at ",Lqa=" not found",Mqa="yO",Nqa="zE",Oqa="An unknown error occurred",Ou="er",Pqa="places",Qqa="fetchdone",Rqa="LAUNCH_CHESS",Sqa="import",Tqa="^ii",Uqa=\r
17631 "^ib1",Vqa="bK",Wqa='" style="display:none;"><div class="',Xqa="clear",Yqa="</a></div></div>",Zqa="websearch",ara="score",bra="bookmarks",cra="label:",dra='{}()"',era="masthead_selection_event",fra=":me",gra="has attachment images pictures photos jpg",hra="filename:(jpg OR jpeg OR png)",ira="has documents attachment",jra="has videos attachment youtube",kra="filename:(avi OR mov OR mpg OR mpeg OR mp4) OR youtube.com/watch",lra="has calendar event attachment",mra="has calendar event",nra="before date",\r
17632 ora="before:yyyy/mm/dd",pra="after date",qra="after:yyyy/mm/dd",Pu="<3",rra='to:me AND ("love you" OR "miss you")',sra="(^| )",Qu='<a id="',tra='" target="_top" class="',ura="ji",vra='<h1 class="',wra="<span class=",xra="bA",Ru=' class="',yra='"><nobr>',Su=" | ",zra="Older version",Ara="</nobr></div>",Bra="Help",Cra='"><a class="',Tu="jt",Dra="ju",Uu="old",Era="?ui=1",Vu="aL",Wu="sg",Xu="toxOdd",Fra="</span></td></tr></table>",Gra="aif",Yu="ac",Zu="Chat",Hra="CX",Ira='">Learn more</a>',Jra="older version",\r
17633 Kra="basic HTML",av="mo",bv="oa",cv="ov",Lra="DE",Mra="invite",Nra="p3",Ora="&ov=1",Pra="Search Mail",dv="url(",Qra="no-repeat",Rra="lr",Sra="ftclick",Tra="hideshowchat",Ura="Your attached file was not restored. You will have to reattach it.",Vra="Your attached files were not restored. You will have to reattach them.",Wra="undo",Xra="vsm",Yra="rvs",Zra="channel/",asa="Sponsored Link",bsa='" index="',csa="eq",dsa="Options",ev="</label></div>",fv='"><input id="',gv='"><div>',esa="fss",fsa="skins",gsa=\r
17634 "] ",hv="notes",hsa="P2",isa='</div></div></div><div class="',jsa="Wc",ksa="ln",lsa="middle",msa="normal",nsa="canvas",iv="black",osa="0 0",psa=";height:",qsa="src",rsa="e ou",ssa="o8",jv="pe",tsa='<a target="_blank" href="',kv="<br/>",usa=" account.",vsa="Submit",wsa="jsmode",xsa="ah EmPo8b",ysa="cM",zsa="gh",Asa="IL",Bsa="ke",Csa="PS",Dsa="sms",Esa="Send SMS",Fsa="Sign in",Gsa='&nbsp;<span id="',lv="red",mv="white",Hsa="a5",Isa="atc",Jsa="bp",Ksa="dtb",nv=".png",Lsa="hY",ov="hM",pv="hT",qv="hW",\r
17635 Msa='"></td></tr><tr class="',Nsa="; color: #",rv="Ad",Osa="Dismiss",Psa="$b",Qsa="-moz-grab",Rsa="ye",Ssa='"><tr><td><div id="',Tsa="yt",Usa="From",Vsa='"></span></div><div id="',Wsa='"></div></div></td></tr></table></div>',sv='" style="display:none">',Xsa="qr",Ysa="Did you mean:",Zsa="iCO6De",ata="This message has been verified as coming from the sender.",tv="gmailgadgets",uv="eb",bta="st=",vv=") ",wv="</select>",cta='"><button id="',xv='</button><button id="',yv="</button></div>",dta="Bd",eta=\r
17636 " conversations",zv="scr",fta="standard",Av='" target="_blank" class="',gta="Terms of Service",hta="</a> ",ita="fo",Bv="https:",Cv=").",jta=" &nbsp; ",Dv="Details",kta=" or ",lta="lh",mta="Background Color",nta="Text Color",ota='"></div></td></tr></table>',Ev="cursor",pta="out",qta="tok",rta="op",Fv="sf",sta="&&&START&&&",tta="&&&END&&&",Gv="bc",uta="\"'",Hv="color",Iv="xE",vta="Invite to chat",wta="Call",xta='"></td><td id="',yta="tu",zta="tW",Ata="tG",Bta="tC",Cta="t5",Dta="tB",Eta="tM",Fta="tT",\r
17637 Jv="J-N-JE",Gta="Show in chat list:",Hta="Auto",Ita="Always show",Jta="Never show",Kta="tF",Lta="tq",Mta="tO",Kv="Start video chat",Nta="J-N-Kr",Ota="PU",Lv="rhs",Mv="cg",Pta="hc",Qta="v8",Nv="fc",Ov="jc",Pv="kc",Qv="y9",Rta="Remove ",Sta="retry",Rv="$root/gmailgadgets/...",Sv="maximize",Tta='"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="',Uta='"><span>',Tv='"><img src="',Vta="Px",Uv='</label></div><div class="',Vv=\r
17638 "ff",Wta="pre",Xta="vid",Yta='"><li>',Zta="</li><li>",aua="You have blocked ",Wv="Block ",bua="Unblock ",cua="Checking...",Xv="<p>",Yv="</p>",dua="dragdrop",eua="nextSibling",fua="previousSibling",gua="ne",hua="kM",iua=" to ",Zv="lk",jua="toolbar=no,location=no,menubar=no,scrollbars=no,resizable=yes,status=no,width=",kua=",left=",lua="ui/ContactPicker",mua="inputId",nua="tempTitle",oua="_picker",pua="fd",qua="UserData",aw="<i>",rua="mailto",sua="Ld",tua="jP",uua="Small",vua="Large",bw="-10000px",\r
17639 cw="swf",wua="ShockwaveFlash.ShockwaveFlash.",xua="ContactManager",yua="DISABLE_WINDOW",zua="ENABLE_WINDOW",Aua="_manager",Bua="&nbsp;&nbsp;&nbsp;",Cua="lg",Dua="lf",Eua="childdeactivated",dw="je",Fua=">&nbsp;",ew="me",Gua="apo",Hua="</tr></table>",Iua="View recent conversations",Jua='</div></div><div id="',fw="offline",gw='px">',Kua="stylesheet",hw="mas",Lua="z-index",iw="done",jw="lp",kw="nt",lw="SET",mw="DELETE",nw="SUGGEST",Mua='<ul class="',Nua="tk",Oua=' <select id="',Pua='</span> <span class="',\r
17640 ow="_GM_mwm",Qua="bs",Rua="Messages";function Sua(b,a,c){if(b[u]!=a[u])return i;this.jdd=b;for(var d=1;d<b[u];d++)if(b[d]==i)b[d]=b[d-1]+1;else if(c)b[d]+=b[d-1];this.pD=a}function Tua(b){return b[u]==1?Ah+b:b}function pw(b,a,c,d){if(/^\d+px?$/[cb](a))return da(a,10);else{var f=b[x][c],g=b.runtimeStyle[c];b.runtimeStyle[c]=b[il][c];b[x][c]=a;a=b[x][d];b[x][c]=f;b.runtimeStyle[c]=g;return a}}\r
17641 function Uua(b){if(44032<=b&&b<=55203){if(b%28==16)return 8;return 9}else{Vua||(Vua=new Sua([0,10,1,2,1,18,95,33,13,1,594,112,275,7,263,45,1,1,1,2,1,2,1,1,56,4,12,11,48,20,17,1,101,7,1,7,2,2,1,4,33,1,1,1,30,27,91,11,58,9,269,2,1,56,1,1,3,8,4,1,3,4,13,2,29,1,2,56,1,1,1,2,6,6,1,9,1,10,2,29,2,1,56,2,3,17,30,2,3,14,1,56,1,1,3,8,4,1,20,2,29,1,2,56,1,1,2,1,6,6,11,10,2,30,1,59,1,1,1,12,1,9,1,41,3,58,3,5,17,11,2,30,2,56,1,1,1,1,2,1,3,1,5,11,11,2,30,2,58,1,2,5,7,11,10,2,30,2,70,6,2,6,7,19,2,60,11,5,5,1,1,\r
17642 8,97,13,3,5,3,6,74,2,27,1,1,1,1,1,4,2,49,14,1,5,1,2,8,45,9,1,100,2,4,1,6,1,2,2,2,23,2,2,4,3,1,3,2,7,3,4,13,1,2,2,6,1,1,1,112,96,72,82,357,1,946,3,29,3,29,2,30,2,64,2,1,7,8,1,2,11,9,1,45,3,155,1,118,3,4,2,9,1,6,3,116,17,7,2,77,2,3,228,4,1,47,1,1,5,1,1,5,1,2,38,9,12,2,1,30,1,4,2,2,1,121,8,8,2,2,392,64,523,1,2,2,24,7,49,16,96,33,3311,32,554,6,105,2,30164,4,9,2,388,1,3,1,4,1,23,2,2,1,88,2,50,16,1,97,8,25,11,2,213,6,2,2,2,2,12,1,8,1,1,434,11172,1116,1024,6942,1,737,16,16,7,216,1,158,2,89,3,513,1,2051,\r
17643 15,40,8,50981,1,1,3,3,1,5,8,8,2,7,30,4,148,3,798140,255],[1,11,1,10,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,2,0,2,0,2,1,2,0,2,0,2,0,1,0,2,0,2,0,2,0,2,0,2,4,0,2,0,4,2,4,2,0,2,0,2,0,2,4,0,2,0,2,4,2,4,2,0,2,0,2,0,2,4,0,2,4,2,0,2,0,2,4,0,2,0,4,2,4,2,0,2,0,2,4,0,2,0,2,4,2,4,2,0,2,0,2,0,2,4,2,4,2,0,2,0,4,0,2,4,2,0,2,0,4,0,2,0,4,2,4,2,4,2,4,2,0,2,0,4,0,2,4,2,4,2,0,2,0,4,0,2,4,2,4,2,4,0,2,0,3,2,0,2,0,2,0,3,0,2,0,2,0,2,0,2,0,2,0,4,0,2,4,2,0,2,0,2,0,2,0,4,2,4,2,4,2,4,2,0,4,2,0,2,0,4,0,4,0,2,0,2,4,2,\r
17644 4,2,0,4,0,5,6,7,0,2,0,2,0,2,0,2,0,2,0,1,4,2,4,2,4,2,0,2,0,2,0,2,0,2,4,2,4,2,4,2,0,4,0,4,0,2,4,0,2,4,0,2,4,2,4,2,4,2,4,0,2,0,2,4,0,4,2,4,2,4,0,4,2,4,2,0,2,0,1,2,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,2,4,0,4,0,4,2,0,2,0,2,4,0,2,4,2,4,2,0,2,0,2,4,0,9,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,4,2,0,4,2,1,2,0,2,0,2,0,2,0,1,2],h));for(var a=Vua.jdd,c=0,d=a[u];d-c>8;){var f=d+c>>1;if(a[f]<=b)c=f;else d=f}for(;c<d;++c)if(b<a[c])break;b=c-1;b=b<0?i:Vua.pD[b];return b}}\r
17645 function Wua(b,a){if(b==10&&a==11)return k;if(b==1||b==10||b==11)return h;if(a==1||a==10||a==11)return h;if(b==5&&(a==5||a==6||a==8||a==9))return k;if((b==8||b==6)&&(a==6||a==7))return k;if((b==9||b==7)&&a==7)return k;if(a==2)return k;return h}var qw="`";function rw(b){var a=b[0],c=b[1];b=b[2];a=Number(a);c=Number(c);b=Number(b);if(ia(a)||a<0||a>255||ia(c)||c<0||c>255||ia(b)||b<0||b>255)e(Error(".40`"+a+qw+c+qw+b));a=Tua(a[t](16));c=Tua(c[t](16));b=Tua(b[t](16));return Lj+a+c+b}\r
17646 var sw="left",Xua="pixelLeft";function Yua(b,a){return pw(b,Fm(b,a),sw,Xua)}function Zua(b,a,c){b=Uua(b);a=Uua(a);return Wua(b,a)&&!(c&&(b==3||a==4))}var ava="hex",bva="rgb",cva="named";\r
17647 function tw(b){var a={};b=String(b);var c=b[xb](0)==Lj?b:Lj+b;if(Nja[cb](c)){a.rA=Mja(c);za(a,ava);return a}else{a:{var d=b[Kb](dva);if(d){c=Number(d[1]);var f=Number(d[2]);d=Number(d[3]);if(c>=0&&c<=255&&f>=0&&f<=255&&d>=0&&d<=255){c=[c,f,d];break a}}c=[]}if(c[u]){a.rA=rw(c);za(a,bva);return a}else if(eva)if(c=eva[b[od]()]){a.rA=c;za(a,cva);return a}}e(Error(".38`"+b))}var fva="Style",gva="Width";\r
17648 function hva(b,a){if(Fm(b,a+fva)==xd)return 0;a=Fm(b,a+gva);if(a in iva)return iva[a];return pw(b,a,sw,Xua)}var jva="Left",kva="Right",lva="Top",mva="Bottom";function nva(b,a){if(L){var c=Yua(b,a+jva),d=Yua(b,a+kva),f=Yua(b,a+lva);b=Yua(b,a+mva);return new Bm(f,d,b,c)}else{c=Em(b,a+jva);d=Em(b,a+kva);f=Em(b,a+lva);b=Em(b,a+mva);return new Bm(ak(f),ak(d),ak(b),ak(c))}}function ova(b){if(!b.Cea)b.Cea=Yh(b[t]());return b.Cea}var pva="amp",uw="lt",vw="gt",qva="quot";\r
17649 function rva(b){return b[mb](/&([^;]+);/g,function(a,c){switch(c){case pva:return Sf;case uw:return Tf;case vw:return Uf;case qva:return Vf;default:if(c[xb](0)==Lj){c=Number(Ah+c[nc](1));if(!ia(c))return String[rq](c)}return a}})}function sva(b){var a=Je[yc][Qb](Kd);Q(a,b);a[Rma]&&a[Rma]();b=a[Tb][md];Q(a,I);return b}function V(b){return Wf(String(b))}function ww(b,a){return a?b[mb](tva,J):b}\r
17650 function xw(b,a){a=a||10;if(a>b[u])b=b;else{for(var c=[],d=0,f=0,g=0,j=0,n=0;n<b[u];n++){var s=j;j=b[Xc](n);s=j>=768&&!Zua(s,j,h);if(d>=a&&j>32&&!s){c[p](b[Zc](g,n),hla);g=n;d=0}if(f)if(j==62&&f==60)f=0;else{if(j==59&&f==38){f=0;d++}}else if(j==60||j==38)f=j;else if(j<=32)d=0;else d++}c[p](b[nc](g));b=c[kd](I)}return b}function uva(b){if(b)try{return tw(b).rA}catch(a){}return i}\r
17651 function vva(b,a,c){var d=0,f=0,g=0;if(a==0)g=f=d=c;else{var j=l[rb](b/60),n=b/60-j;b=c*(1-a);var s=c*(1-a*n);a=c*(1-a*(1-n));switch(j){case 1:d=s;f=c;g=b;break;case 2:d=b;f=c;g=a;break;case 3:d=b;f=s;g=c;break;case 4:d=a;f=b;g=c;break;case 5:d=c;f=b;g=s;break;case 6:case 0:d=c;f=a;g=b;break}}return[l[rb](d),l[rb](f),l[rb](g)]}function yw(b){b=Mja(b);return[da(b[nc](1,2),16),da(b[nc](3,2),16),da(b[nc](5,2),16)]}function wva(b){return(b=b[Kb](xva))&&b[0]||i}\r
17652 var yva="borderLeft",zva="borderRight",Ava="borderTop",Bva="borderBottom",Cva="borderBottomWidth";function Dva(b){if(L){var a=hva(b,yva),c=hva(b,zva),d=hva(b,Ava);b=hva(b,Bva);return new Bm(d,c,b,a)}else{a=Em(b,ria);c=Em(b,sia);d=Em(b,tia);b=Em(b,Cva);return new Bm(ak(d),ak(c),ak(b),ak(a))}}function Eva(b){return nva(b,Ld)}function zw(b,a){return b[x][lia(a)]}function Fva(b,a){for(var c=a[u],d=0;d<c;d++){var f=c==1?a:a[xb](d);if(b[xb](0)==f&&b[xb](b[u]-1)==f)return b[Zc](1,b[u]-1)}return b}\r
17653 function Gva(b,a){var c=b.x-a.x;b=b.y-a.y;return l[jha](c*c+b*b)}function Aw(){return pca(ea,arguments)}function Hva(b,a,c){fi(b);hi(b);a=gi(b,a);if(b.Xb(a)){var d=b.km.J(a);if(Ve(d))b.Cf-=d[u];else b.Cf--}if(c[u]>0){b.km.set(a,c);b.Cf+=c[u]}}function Bw(b,a){return b instanceof Sh?b.vc():new Sh(b,a)}var Iva="..",Jva="./",Kva="/.";\r
17654 function Cw(b,a){var c=b.vc(),d=!!a.ul;if(d)c.Pr(a.ul);else d=!!a.DX;if(d)wda(c,a.DX);else d=a.u_();if(d)c.iB(a.Jk());else d=a.UA!=i;var f=a.Vf;if(d)Th(c,a.UA);else if(d=!!a.Vf){if(f[xb](0)!=Md)if(b.u_()&&!b.Vf)f=Md+f;else{b=c.Vf[Sc](Md);if(b!=-1)f=c.Vf[nc](0,b+1)+f}b=f;if(b==Iva||b==He)f=I;else if(!Xf(b,Jva)&&!Xf(b,Kva))f=b;else{f=Mf(b,Md);b=b[Cc](Md);for(var g=[],j=0;j<b[u];){var n=b[j++];if(n==He)f&&j==b[u]&&g[p](I);else if(n==Iva){if(g[u]>1||g[u]==1&&g[0]!=I)g.pop();f&&j==b[u]&&g[p](I)}else{g[p](n);\r
17655 f=h}}f=g[kd](Md)}}if(d)c.Or(f);else d=a.Vs[t]()!==I;if(d)c.uo(ova(a.Vs));else d=!!a.N5;d&&Uh(c,a.td());return c}function Lva(b,a){var c=b[Qb](T);Q(c,a);if(c[cc][u]==1)return c[Tb];else{for(b=b.createDocumentFragment();c[Tb];)b[o](c[Tb]);return b}}function Mva(b,a){if(a>=b.lY[u])e(Error(".8"));if(b.lY[u]<b.Elb)return a;return(b.wya+Number(a))%b.Elb}function Nva(b,a){var c=b.Nb(),d=[];for(a=b.Nb()-a;a<c;a++)d[a]=b.J(a);return d}function Ova(b){return b==i?I:String(b)}\r
17656 function Dw(b,a){return(new Array(a+1))[kd](b)}var Pva="document";function Ew(b){if(Xf(b,Sf))return Pva in Je&&!Xf(b,Tf)?sva(b):rva(b);return b}var Fw="<br />";function Gw(b,a){return b[mb](/(\r\n|\r|\n)/g,a?Fw:sl)}function Hw(b,a){lf[el][z](b,a||fm)}function Qva(b){for(var a=[],c=0,d=0;d<b[u];d++){for(var f=b[Xc](d);f>255;){a[c++]=f&255;f>>=8}a[c++]=f}return a}function Iw(b){this.Db=b}function Jw(b,a){return xw(String(b),a)}\r
17657 function Kw(b,a){function c(){}maa(c,b);b=new c;for(var d in a)b[d]=a[d];return b}var Rva="\u200f",Sva="\u200e",Tva="$&";function Uva(b,a){a=(a===undefined?ila[cb](ww(b,void 0)):a)?Rva:Sva;return b[mb](Vva,a+Tva+a)}function Lw(b,a,c){this.xS=b||[];ao[z](this,i,a||Yn.S(),c);this.Q1(this.xS)}\r
17658 function Wva(b,a,c,d){c=c||function(C,M){return C==M};d=d||function(C){return b[C]};for(var f=b[u],g=a[u],j=[],n=0;n<f+1;n++){j[n]=[];j[n][0]=0}for(var s=0;s<g+1;s++)j[0][s]=0;for(n=1;n<=f;n++)for(s=1;s<=f;s++)j[n][s]=c(b[n-1],a[s-1])?j[n-1][s-1]+1:l.max(j[n-1][s],j[n][s-1]);var v=[];n=f;for(s=g;n>0&&s>0;)if(c(b[n-1],a[s-1])){v[ld](d(n-1,s-1));n--;s--}else if(j[n-1][s]>j[n][s-1])n--;else s--;return v}function Mw(b,a,c){return l.min(l.max(b,a),c)}function Xva(b){return l[rb](l[Tc]()*b)}\r
17659 function Nw(b){Hn[z](this,Gn.S(),b)}function Yva(b,a){if(b.mv){var c=b.Lk(),d=b.Cc();b.xQa=a;var f=b.Lk();if(d){b.xQa=c;xja(b,k);b.xQa=a;b.Hga().Pe(f);xja(b,h)}}else e(Error(".37"))}function Zva(b,a){b=new b;b.Qb=function $Ci(){return a};return b}function awa(b,a){b.kb=a}function Ow(b,a,c,d,f,g){c.hb(a,d,f,g||b.na,b);return b}function Pw(b,a,c,d,f,g){c.w(a,d,f,g||b.na,b);return b}\r
17660 function Qw(b){if(b[rc]&&!b[Bc]||b[Eb]||b[Sb]>=112&&b[Sb]<=123)return k;switch(b[Sb]){case 18:case 16:case 17:case 19:case 20:case 27:case 33:case 34:case 36:case 35:case 37:case 39:case 38:case 40:case 45:case 144:case 93:case 44:return k;default:return h}}function bwa(b,a){gn(b,ro,a?a.id:I)}function Rw(b){return b[x][nl]!=xd}function cwa(b,a){b=Pm(b);a=Pm(a);return new xg(b.x-a.x,b.y-a.y)}function Sw(b){return Nm(b).y}function Tw(b){return new xg(b[Vk],b[ol])}\r
17661 function Uw(b,a,c){b.vea&&b.bk[b.vea].kW(b.bk[b.vea].G9a,a,c)}function Vw(b,a,c,d,f,g,j){var n=b.bk[a];if(n.hc()){c=new Wda(c,d);j?c[hd](b.Zxa):ba[xc](G(c[hd],c),0)}else if(ef(b.eF,a)||ef(b.rI,a)){c=n.Lr(c,d);if(g){b.U2[p](a);Ai(b)}}else{c=n.Lr(c,d);if(!f){g&&b.U2[p](a);aea(b,a)}}return c}function Ww(b,a,c){var d=new ui;ba[xc](G(b.xSc,b,a,d),c||0);return d}function Xw(b,a){return b.bk[a]}function dwa(b){return b.HC}function Yw(b,a,c){return vi(b,i,a,c)}function Zw(b,a,c){return vi(b,a,i,c)}\r
17662 function ewa(b,a){var c=b.eE[u];b.eE[c]=a;b.dna[c]=[];for(var d=0;d<b.pDa[u];d++){var f=Vj(b.pDa[d],a);b.dna[c][d]=f}}function ax(b,a,c){li(b,a,c,pi)}function bx(){var b=Mj.Vf;return fwa[cb](b)||gwa[cb](b)||hwa[cb](b)||iwa[cb](b)}var cx="/a/",jwa="/../c/",kwa="/c/",lwa="../c/",dx="c",mwa="/contacts/",nwa="../",owa="/contacts";\r
17663 function pwa(b,a,c,d,f,g,j){a=a&&Mf(b.Vf,cx);b=b.Vf;if(d)if(g||f)c=b[mb](/\/(?=b\/[^/]+)/,a?jwa+c+Md:kwa);else{c=a?lwa+c:dx;if(j)c=b+(Nf(b,Md)?I:Md)+c}else if(g||f){c=b;c=a?c[mb](/\/(?=b\/[^/]+)/,mwa):c+(Nf(c,Md)?I:Md)+Nd}else{c=a?nwa+c+owa:Nd;if(j)c=b+(Nf(b,Md)?I:Md)+c}if(Nf(c,Md))c=c[Zc](0,c[u]-1);return new Sh(c)}var qwa="photos/",rwa="sml",swa="=1",ex="rp",twa="pld";function uwa(b,a,c,d,f){b=[qwa,Qf(b),Kj,f?Hj:Yf()];a&&b[p](Sf,rwa,swa);c&&b[p](Sf,ex,swa);d&&b[p](Sf,twa,swa);return b[kd](I)}\r
17664 function vwa(b,a){b=b[Kb](Vh);a=a[Kb](Vh);return b[3]==a[3]&&b[4]==a[4]}function fx(b,a){b instanceof Sh||(b=Bw(b));a instanceof Sh||(a=Bw(a));return Cw(b,a)}function gx(b,a,c){Xh(b);delete b.DG;Ve(c)||(c=[String(c)]);Hva(b.Vs,a,c);return b}function wwa(b){return b.Vf}var xwa="$1";function ywa(b,a){for(var c=b[Pc](gka),d=0,f,g=[];(f=Qha(b,d,a,c))>=0;){g[p](b[Zc](d,f));d=l.min(b[Db](Sf,f)+1||c,c)}g[p](b[nc](d));return g[kd](I)[mb](zwa,xwa)}\r
17665 function hx(b,a,c){b=[b,Sf,a,ei,Qf(c)];if(b[1]){a=b[0];c=a[Db](Lj);if(c>=0){b[p](a[nc](c));b[0]=a=a[nc](0,c)}c=a[Db](Kj);if(c<0)b[1]=Kj;else if(c==a[u]-1)b[1]=undefined}return b[kd](I)}function Awa(b){var a=b[Db](Lj);return a<0?b:b[nc](0,a)}function Bwa(b){var a=b[Db](Lj);return a<0?i:b[nc](a+1)}function Cwa(){for(;oda[u];)oda.pop().D()}\r
17666 var Dwa="No Error",Ewa="Access denied to content document",Fwa="File not found",Gwa="Firefox silently errored",Hwa="Application custom error",Iwa="An exception occurred",Jwa="Http response at 400 or 500 level",Kwa="Request was aborted",Lwa="Request timed out",Mwa="The resource is not available offline",Nwa="Unrecognized error code";\r
17667 function Owa(b){switch(b){case 0:return Dwa;case 1:return Ewa;case 2:return Fwa;case 3:return Gwa;case 4:return Hwa;case 5:return Iwa;case 6:return Jwa;case 7:return Kwa;case 8:return Lwa;case 9:return Mwa;default:return Nwa}}function ix(b){return eval(gg+b+xh)}function jx(b,a,c,d){var f=jh;if(a in f){f=f[a];if(c in f)return rh(f[c],b,a,c,d)}return h}\r
17668 function Pwa(b,a,c){b=bf(b);var d=lh[b];if(d){var f=Ke(a),g=Ke(c);if(f&&g){d=jh[a];return!!d&&!!d[c]&&b in d[c]}else return f||g?Mi(d,function(j){return f&&j[Zb]==a||g&&j[Fb]==c}):h}return k}function kx(b,a){return Lva(b.ki,a)}function lx(b){return ea[Qb](b)}function Qwa(b){return gm(Cg((b||Je||ba)[yc]))}function mx(b,a){m(b,a)}function Rwa(b,a){if(b==a)return h;if(!b||!a)return k;return b.x==a.x&&b.y==a.y}function Swa(b){this.Elb=b||100;this.lY=[]}\r
17669 function nx(b,a,c){b=Ke(c)?b[tma](c):String(b);c=b[Db](He);if(c==-1)c=b[u];return Dw(Ah,l.max(0,a-c))+b}var Twa="\\$1",Uwa="\\x08";function ox(b){return String(b)[mb](/([-()\[\]{}+?*.$\^|,:#<!\\])/g,Twa)[mb](/\x08/g,Uwa)}function px(b,a,c){if(c)b=Ew(b);if(b[u]>a)b=b[Zc](0,a-3)+lg;if(c)b=Wf(b);return b}var Vwa=" &#160;";function qx(b,a){return Gw(b[mb](/  /g,Vwa),a)}function rx(b,a){b=String(b)[od]();a=String(a)[od]();return b<a?-1:b==a?0:1}function sx(b){return im(Ova(b))}\r
17670 function tx(b){return b[mb](/[\s\xa0]+/g,J)[mb](/^\s+|\s+$/g,I)}var Wwa="$$$$";function ux(b){for(var a=1;a<arguments[u];a++){var c=String(arguments[a])[mb](/\$/g,Wwa);b=b[mb](/\%s/,c)}return b}function Xwa(b,a,c){if(typeof b[Aaa]==Se)return b[Aaa](a,c);if(We(b)||Ye(b))return Mi(b,a,c);for(var d=Df(b),f=Cf(b),g=f[u],j=0;j<g;j++)if(a[z](c,f[j],d&&d[j],b))return h;return k}\r
17671 function Ywa(b,a,c){if(typeof b[Ya]==Se)return b[Ya](a,c);if(We(b)||Ye(b))return Di(b,a,c);var d,f=Df(b),g=Cf(b),j=g[u];if(f){d={};for(var n=0;n<j;n++)if(a[z](c,g[n],f[n],b))d[f[n]]=g[n]}else{d=[];for(n=0;n<j;n++)a[z](c,g[n],undefined,b)&&d[p](g[n])}return d}function Zwa(b){var a={};for(var c in b)a[c]=b[c];return a}function axa(b,a,c){b=em(b);try{for(;;)if(a[z](c,b[Rk](),undefined,b))return h}catch(d){if(d!==Ni)e(d)}return k}function vx(b){if(Ve(b))return mf(b);return nf(b)}\r
17672 function bxa(b,a,c){a=lm(b,a,c);if(a>=0){kf(b,a);return h}return k}function cxa(b,a,c){var d;arguments[u]==2||(d=ff(b,c))<0?b[p](a):km(b,a,d)}function dxa(b,a,c,d){if(b.reduce)return d?b.reduce(G(a,d),c):b.reduce(a,c);var f=c;Ff(b,function(g,j){f=a[z](d,f,g,j,b)});return f}function exa(b){return typeof b==ig}function wx(b){return b===i}function xx(){}function yx(b,a){b.C||H(b,xx);a.Fea=b;b.lBd=a}\r
17673 function zx(b,a,c){b.C||H(b,a);c=c||0;b.rMb=c;if(a.UD){a=a.UD;for(var d=0,f=a[u]-1;d<=f;){var g=d+f>>1;if(c>a[g].rMb)f=g-1;else d=g+1}d<a[u]&&a[d].rMb==c&&++d;a[jd](d,0,b)}else a.UD=[b]}function Ax(b,a,c){b.OAc=h;zx(b,a,c)}function fxa(b){for(var a=b[Sk];a&&!a.Fea;)a=a.C&&a.C[Sk];if(!a.Fea.sMb)a.Fea.sMb=gxa(a);return new a.Fea.sMb(b)}\r
17674 function gxa(b){function a(n){arguments[Hc].C[Sk][z](this,n);var s=this.UD[u];this.SJ=[];for(var v=0;v<s;++v)this.UD[v].OAc||(this.SJ[v]=new this.UD[v](n))}var c=b.Fea;H(a,c);for(var d=[];b;){if(c=b.Fea){c.UD&&of(d,c.UD);c=c[w];for(var f in c)if(c[Kc](f)&&Ze(c[f])&&c[f]!==b){var g=!!c[f].Vd,j=hxa(f,c,d,g);if(g=ixa(f,c,j,g))a[w][f]=g}}b=b.C&&b.C[Sk]}a[w].UD=d;return a}function hxa(b,a,c,d){for(var f=[],g=0;g<c[u];++g)if(c[g][w][b]!==a[b]){f[p](g);if(d)break}return f}\r
17675 function ixa(b,a,c,d){return c[u]?d?function(){var f=this.SJ[c[0]];return f?f[b][cd](this.SJ[c[0]],arguments):this.UD[c[0]][w][b][cd](this,arguments)}:a[b].ic?function(){var f;a:{f=Array[w][lb][z](arguments,0);for(var g=0;g<c[u];++g){var j=this.SJ[c[g]];if(j=j?j[b][cd](j,f):this.UD[c[g]][w][b][cd](this,f)){f=j;break a}}f=k}return f}:a[b].Rn?function(){var f;a:for(var g=Array[w][lb][z](arguments,0),j=0;j<c[u];++j){var n=this.SJ[c[j]];n=n?n[b][cd](n,g):this.UD[c[j]][w][b][cd](this,g);if(Ue(n)){f=n;\r
17676 break a}}return f}:a[b].Ka?function(){for(var f,g=Array[w][lb][z](arguments,0),j=0;j<c[u];++j){var n=this.SJ[c[j]];n?n[b][cd](n,g):this.UD[c[j]][w][b][cd](this,g)}return f}:function(){for(var f=Array[w][lb][z](arguments,0),g=[],j=0;j<c[u];++j){var n=this.SJ[c[j]];g[p](n?n[b][cd](n,f):this.UD[c[j]][w][b][cd](this,f))}return g}:!d&&!a[b].ic&&!a[b].Rn&&!a[b].Ka?jxa:i}function jxa(){return[]}function Bx(b){if(!b.aa){b.aa=fxa(b);if(!b.tn)b.tn=kxa}}function kxa(b){return this.aa.tn(b)}\r
17677 function lxa(b,a){this.V=b;this.Aa=a||i}function Cx(b){return b.J(ag)}function Dx(b){return b.Aa}function mxa(b){this.O=b;this.O[2]=this.O[2]||[];this.O[21]=this.O[21]||[]}var nxa="data_b:",oxa="data:";function Ex(b,a,c,d){N[z](this,(d?nxa:oxa)+a);this.QLb=a;this.Pg=b;ma(this,c)}function Fx(b){return oxa+b}function Gx(b){return nxa+b}function Hx(b,a){this.Jb=b;if(this.tQc){this.KG=Od+this.Jb;this.mb=this}else this.mb=a}function Ix(b){if(b.Pc)e(Error(".51`"+b.KG))}\r
17678 function Jx(b){Hf[z](this);this.Um=b}function pxa(b,a){for(var c=b.Sb(),d=0;d<c[u];d++)qxa(b,c[d]);Jx.C[bc][z](b);if(a){a=b.Um.mb;a.Qf();try{for(d=0;d<c[u];d++)b.FKa(c[d])}finally{a.Mf()}}}function qxa(b,a){if(b.msa){var c=b.msa.J(a);if(c){oh(c);b.msa[Pb](a)}}}function Kx(b,a){Hx[z](this,b,a);this.lI=new Jx(this)}var Lx="domainInfo",rxa="adc";function sxa(b,a){Kx[z](this,Lx,b);this.Kk().w(a,Gx(rxa),this.k0c)}function txa(){this.MI=[];this.CM={}}function uxa(){this.Yka=new txa;this.yu=new Hf}\r
17679 function Mx(){vxa||(vxa=new uxa);return vxa}function Nx(b,a,c,d){var f=b.yu.J(a);d=d||0;c={Tfa:c,KL:d};if(f)if(d<wm(f).KL)f[p](c);else for(b=0;b<f[u];b++){if(d>=f[b].KL){f[jd](b,0,c);break}}else{f=[c];b.yu.set(a,f)}}function wxa(b){this.O=b;this.O[1]=this.O[1]||[];this.yr=[];for(b=0;b<this.O[1][u];b++)this.yr[b]=new xxa(this.O[1][b])}function yxa(b){this.O=b}function zxa(b){this.O=b;if(this.O[1])this.jld=new yxa(this.O[1])}\r
17680 function xxa(b){this.O=b;this.O[1]=this.O[1]||[];this.iv=[];for(b=0;b<this.O[1][u];b++)this.iv[b]=new zxa(this.O[1][b])}var Ox="'",Px="\\";function Qx(b){for(var a=I,c=I,d=0;d<b[u];){var f=Axa(b,d);if(f[xb](0)==Tf&&f[Db](Uf)!=-1){c=f[Db](Uf);c=f[Zc](1,c)}else if(c==I)a+=f;d+=f[u]}if(c==I&&a[Db](vh)!=-1){c=a;a=I}a=tx(a);a=Fva(a,Ox);a=Fva(a,Vf);a=a[mb](/\\\"/g,Vf);a=a[mb](/\\\\/g,Px);c=tx(c);return[a,c]}\r
17681 function Bxa(b){for(var a=[],c=I,d,f=0;f<b[u];){d=Axa(b,f);if(d==wj){im(c)||a[p](Qx(c));c=I;f++}else{c+=d;f+=d[u]}}im(c)||a[p](Qx(c));return a}var Cxa="\u202a",Dxa="\u202c";function Exa(b){return Li(b,function(a){a=Qx(a);return a[0]+J+Uva(Cxa+a[1]+Dxa)})}function Fxa(b,a){if(b[xb](a)!=Vf)return k;var c=0;for(a=a-1;a>=0&&b[xb](a)==Px;a--)c++;return c%2!=0}\r
17682 function Axa(b,a){var c=b[xb](a),d='"<(['[Db](c);if(d==-1)return c;if(Fxa(b,a))return c;d='">)]'[xb](d);for(var f=b[Db](d,a+1);f>=0&&Fxa(b,f);)f=b[Db](d,f+1);return f>=0?b[Zc](a,f+1):c}function Rx(b,a,c){Xla(this,b);mp(this,a);this.XI=c}var Gxa='"=" is not allowed.',Hxa="Spaces are not allowed.",Ixa="Address is malformed.",Jxa='Only one "@" is allowed.',Kxa="No username specified.",Lxa="Invalid domain specified.";\r
17683 function Sx(b){if(b[Db](ei)!=-1)return new Rx(Gxa);else if(b[Db](J)!=-1)return new Rx(Hxa);else if(b[Db](vh)==-1||b[Db](He)==-1||b[Sc](He)<b[Db](vh))return new Rx(Ixa);else{b=b[Cc](vh);if(b[u]!=2)return new Rx(Jxa);else if(b[0][u]==0)return new Rx(Kxa);for(var a=b[1][Cc](He),c=k,d=0;d<a[u];d++)if(a[d][u]==0){c=h;break}if(b[1][u]<4||a[u]<2||c)return new Rx(Lxa)}return new Rx(i,b[1],b[0])}\r
17684 function Mxa(b,a,c){if(!b&&!a)return h;else if(!b||!a)return k;var d=Tx(b[od](),vh);b=d[0][od]();var f=d[1][od]();d=Tx(a[od](),vh);a=d[0];d=d[1];if(!(f==d||Nxa(f)&&Nxa(d)))return k;b=Tx(b,tl)[0];if(c)b=b[mb](Oxa,I);a=Tx(a,tl)[0];if(c)a=a[mb](Oxa,I);return b==a}function Tx(b,a){a=b[Db](a);return a>=0?[b[Zc](0,a),b[Zc](a+1)]:[b,I]}var Ux="gmail.com";function Nxa(b){if(!b)return k;b=b[od]();return b==Ux||b=="googlemail.com"}var Pxa="@(?!",Qxa="$)";\r
17685 function Vx(b){var a=h;b=Bxa(b);for(var c=0;c<b[u];c++)a=a&&!(Rxa||(Rxa=new RegExp(Pxa+Tx(Hi,vh)[1]+Qxa,ii)))[cb](b[c][1]);return a}function Sxa(b){this.O=b;this.O[1]=this.O[1]||[];this.HHb=[];for(b=0;b<this.O[1][u];b++)this.HHb[b]=new Txa(this.O[1][b])}function Txa(b){this.O=b}function Uxa(b,a){switch(a){case 1:return b%4==0&&(b%100!=0||b%400==0)?29:28;case 5:case 8:case 10:case 3:return 30}return 31}function Vxa(b,a){a=a||new Date;return b[iq]()==a[iq]()&&Wxa(b,a)}\r
17686 function Wxa(b,a){a=a||new Date;return b[Cq]()==a[Cq]()&&Xxa(b,a)}function Xxa(b,a){a=a||new Date;return b[fr]()==a[fr]()}var Wx="y",Xx="m",Yx="h",Zx="n";function ay(b,a,c,d,f,g){if(Ye(b)){this.cJ=b==Wx?a:0;this.RH=b==Xx?a:0;this.hs=b==Pd?a:0;this.zs=b==Yx?a:0;this.Zw=b==Zx?a:0;this.zx=b==ki?a:0}else{this.cJ=b||0;this.RH=a||0;this.hs=c||0;this.zs=d||0;this.Zw=f||0;this.zx=g||0}}\r
17687 function by(b,a,c){if(mm(b)){this.Od=new Date(b,a||0,c||1);Yxa(this,c||1)}else if(af(b)){this.Od=new Date(b[fr](),b[Cq](),b[iq]());Yxa(this,b[iq]())}else{this.Od=new Date;this.Od[Pma](0);this.Od[Ama](0);this.Od[Jma](0);this.Od.setMilliseconds(0)}}var cy="Z";function Zxa(b){b=b[sr]();if(b==0)b=cy;else{var a=l.abs(b)/60,c=l[rb](a);a=(a-c)*60;b=(b>0?Qd:tl)+nx(c,2)+xj+nx(a,2)}return b}function Yxa(b,a){if(b[iq]()!=a){a=b[iq]()<a?1:-1;b.Od.setUTCHours(b.Od[Qma]()+a)}}\r
17688 function dy(b,a,c,d,f,g,j){this.Od=mm(b)?new Date(b,a||0,c||1,d||0,f||0,g||0,j||0):new Date(b?b[hc]():Zf())}function aya(b,a,c){this.ud=b;this.eQ=a;this.s8a=c}var ey="z";function fy(b){return b.J(ey)}function gy(b){return fy(b)}function bya(b){this.O=b}function cya(b){this.O=b}var dya="user";function eya(b){Kx[z](this,dya,b)}var fya="ugn",gya="udc";function hya(b,a){eya[z](this,b);b=this.Kk();b.w(a,Gx(Oj),this.b9c);b.w(a,Gx(fya),this.E1c);b.w(a,Fx(gya),this.f_c)}\r
17689 function iya(b){b=b[nc](1);return b[Cc](Md)}function hy(b,a,c){Hx[z](this,b,a?a.mb:i);a&&a.ha(this);if(this.dQa=Boolean(c)){b=this.mb.g1;b.ela.set(this.Je(),this);this.Hkb=b.CLb}}function iy(b,a){Ix(b);return b.bf?b.bf.J(a):i}function jy(b,a,c){Ix(b);Ve(a)||(a=a[Cc](Md));if(a[u]==0)return i;b=b;for(var d=0;d<a[u];d++){b=b.za(a[d],c);if(b==i)return i}return b}var ky="LOADED",ly="VALID";function my(b){Ix(b);if(!(b.Dv==ky&&b.Lz==ly&&!b.Vwa)){b.Dv=ky;b.Lz=ly;b.Vwa=k;ny(b)}}var oy="p";\r
17690 function jya(b,a){if(b.QN)if(Ze(b.QN.Raa))b.QN.Raa(i);else{var c=b.Q;c&&c.hb(b.QN,oy,b.bva)}b.QN=a;if(b.QN)Ze(b.QN.Raa)?b.QN.Raa(b):b.Kk().w(b.QN,oy,b.bva)}function kya(b,a,c){b.QN==a&&ny(b,c)}function lya(b){if(b.Lz!=ly){b.Lz=ly;b.mb.O5b(b)}}function mya(b,a){Ix(b);jya(b,i);b.Vwa=h;if(a)b.Lz=ly;ny(b)}function ny(b,a){Ix(b);b.mb.a9a(b,a)}function py(b,a,c,d){hy[z](this,b,a,c);this.qBc=!!d}function nya(b){lya(b)}var oya="True";\r
17691 function qy(b,a){this.Jb=b;this.jf=a;b=b[xb](0);if(b==Ph)this.jf=typeof this.jf==Xe?this.jf==jg||this.jf==oya||this.jf==Hj:!!Number(this.jf);else if(b==ii)this.jf=Number(a)}function ry(b,a){hy[z](this,b,a)}function pya(b){this.sAa=b}var qya="prefs";function rya(b){hy[z](this,qya,b);Bx(this);this.RZb={}}function sya(b,a,c){Ix(b);a=a[Cc](Md);for(var d=0;d<a[u];d++)a[d]=Qf(a[d]);return jy(b,a,c)}\r
17692 function sy(b){this.Xa=tya(b,0);this.ae=tya(b,1);this.mO=b[2];this.V_b=ty(b[3]);this.Ifc=ty(b[4]);this.Me=tya(b,5);this.wGb=ty(b[6]);this.cic=ty(b[7]);this.Rj=tya(b,8);this.qCc=ty(b[9]);this.j2b=ty(b[10]);this.Lsc=ty(b[11]);Mx().Kh(190,this,b);b=uya.Oa();for(var a=0;a<b[u];a++){var c=b[a];this.mO[c]=ty(this.mO[c])}}function tya(b,a){b=b[a];return b==i?I:String(b)}function ty(b){return b==Hj||b==jg||b==1||b===h}function uy(b,a){hy[z](this,b,a);this.dbb=[]}var vya="uiprefs/";\r
17693 function wya(b){this.sAa=b;this.hVa=vya}var vy="fi",xya="cp",yya="cmp";function wy(b){var a=Dx(Cx(b)),c=a.za(qya),d=a.za(dya);this.Aa=a;this.rl=c;this.ojc=d;this.Mk=new kn(this);this.Trb=[];b=fy(b).ud;ih(b,Gx(oy),this.oza,k,this);ih(b,Gx(vy),this.oza,k,this);ih(b,Gx(xya),this.oza,k,this);ih(b,Gx(yya),this.oza,k,this);ih(b,Gx(wo),this.oza,k,this)}var xy="ha";function yy(b){return b.J(xy)}var zya=":udc";\r
17694 function Aya(b){if(!b.nOc){if(b.ojc.Ca(gya))b.J9=h;else{b.Mk.w(b.Aa.Ya(),b.ojc.Je()+zya,b.Xqb);b.J9=k}b.nOc=h}var a=new ui;b.J9?a.ad(b.rl):b.Trb[p](a);return a}function Bya(b){for(var a=[],c=Cya.Oa(),d=0;d<c[u];d++){var f=c[d];a[p]([f,b.db(f)])}return a}var Dya="filters/";function Eya(b,a,c){zy(b,b.rl);return jy(b.rl,Dya+a,c)}function Ay(b,a){zy(b,b.rl);b=Fya(b,a);var c;if(b&&(c=b.J()))return c.Ca();return i}var Gya="clips";function Fya(b,a){zy(b,b.rl);return b.rl.za(Gya+a)}var By="cm2",Hya="uiprefs";\r
17695 function Cy(b,a){return(kba(Iya,a)?By:Hya)+Md+a}function zy(b,a){if(a.Pc)e(Error(".51`"+a.Je()))}function Dy(b){return function(){return b}}function Ey(b){return b}function Jya(){var b=arguments,a=b[u];return function(){var c;if(a)c=b[a-1][cd](this,arguments);for(var d=a-2;d>=0;d--)c=b[d][z](this,c);return c}}function Kya(){this.Pd={}}function Lya(b){return b?Qf(b)[mb](/%20/g,tl):I}function Mya(b){return Ywa(b,function(a){return!!a})}\r
17696 function Nya(b,a){for(var c=[],d=a.Sb(),f=0;f<d[u];f++){var g=d[f],j=a.J(g);(j=b.J(j))&&c[p](g+ei+Lya(j))}return c[kd](Sf)}function Oya(b,a){var c=b[Cc](Sf);b=new Hf;for(var d={},f=0;f<c[u];f++){var g=c[f][Cc](ei);b.set(g[0],Rf(String(g[1])))}c=b.Sb();for(f=0;f<c[u];f++){g=c[f];var j=a.J(g);if(b.Xb(g))d[j]=b.J(g)}return d}var Fy="search";\r
17697 function Gy(b,a){this.Xd=b;a=a?Mya(a):i;this.Fn=new Hf;a&&this.Fn.Vl(a);this.Fn.set(Fy,b);a=this.Fn;var c=[];c[p](Fy);c[p](b);if(a){b=a.Sb()[el]();for(var d=0;d<b[u];d++){var f=b[d];if(f!=Fy){c[p](Qf(f[od]()));c[p](Qf(a.J(f)))}}}this.Js=c[kd](vh);Hy.Aqb(this)}function Iy(b,a){Xh(a);Pya(b,a.Of());return a}function Pya(b,a){for(var c=b.Fn.Sb(),d=0;d<c[u];d++){var f=c[d];a.set(f,b.Fn.J(f))}return a}function Qya(b,a){return!!(!b&&!a||b&&a&&b.Dg()==a.Dg())}var Jy="query",Ky="q";\r
17698 function Rya(b){Gy[z](this,Jy,b);this.ae=this.Rc(Ky)}function Ly(b){var a={};a.q=b;return new Rya(a)}var Oy="adv";function Sya(b){Gy[z](this,Oy,b)}var Tya="as_subset";function Uya(b){return b.Rc(Tya)}var Py="cat";function Vya(b){Gy[z](this,Py,b);this.nn=this.Rc(Py)}function Wya(b){var a={};a.cat=b;return new Vya(a)}var Xya="ct_id";function Yya(b){Gy[z](this,Nd,b);this.CN=this.Rc(Xya)}function Qy(b){Gy[z](this,ul,b)}var Zya="str";\r
17699 function aza(b,a){var c=a.J(Fy);if(c in b.QCa)return b.QCa[c];else switch(c){case Jy:b=a.J(Ky);a=a.J(Zya);c={};c.q=b;if(a)c.str=a;return new Rya(c);case Py:a=a.J(Py);return Wya(a);case Nd:a=a.J(Xya);b={};b.ct_id=a;return new Yya(b);case Oy:b=new Hf;c=bza.Sb();for(var d=0;d<c[u];d++){var f=cza[c[d]],g=a.J(f);Ke(g)&&b.set(f,g)}return new Sya(b);case ul:b=new Hf;c=dza.Sb();for(d=0;d<c[u];d++){f=eza[c[d]];b.set(f,a.J(f))}return new Qy(b)}return i}function Ry(b,a){Sy.Ezb[b]=a}var Ty="^";\r
17700 function Uy(b){return Mf(b,Ty)?Sy.Ezb[b]:Wya(b)}function Vy(b){var a=Mf(b,Ty)?Sy.Ezb[b]:i;return a?a.Iga():b}function Wy(b){Sy.QCa[b.Ga()]=b}function Xy(b){if(b&&b.Dd)return b.Dd();return i}var Yy="spam",Zy="trash";function fza(b){b=b.Ga();return b==Yy||b==Zy}var az="apps";function gza(b){b=b.Ga();return b==Oy||b==ul||b==Jy||b==az||b==Nd}function hza(b,a){b=new b[Sk](a);return b=Hy.f_(b.Dg())}function bz(b,a){Gy[z](this,b,a)}var cz="all";function dz(b){Gy[z](this,cz,b)}var ez="archive";\r
17701 function iza(b){Gy[z](this,ez,b)}var fz="chats";function gz(b){Gy[z](this,fz,b)}var jza="delivered";function hz(b){Gy[z](this,jza,b)}var iz="drafts";function jz(b){Gy[z](this,iz,b)}var kz="inbox";function lz(b){Gy[z](this,kz,b)}var kza="muted";function mz(b){Gy[z](this,kza,b)}var nz="outbox";function oz(b){Gy[z](this,nz,b)}var pz="sent";function qz(b){Gy[z](this,pz,b)}function rz(b){Gy[z](this,Yy,b)}var sz="starred";function tz(b){Gy[z](this,sz,b)}function uz(b){Gy[z](this,Zy,b)}\r
17702 function lza(b){this.trc=Bf(b)}function mza(b){this.yZ=new lza(b)}function nza(b){this.O=b}function oza(b){this.O=b}function pza(b){this.O=b}function qza(b){this.O=b}function rza(b){this.O=b}var sza="appInfo",tza="uiv",vz="ft",wz="st",uza="pod",vza="og",xz="ll";function wza(b,a){Kx[z](this,sza,b);b=this.Kk();b.w(a,Gx(to),this.B3c);b.w(a,Gx(tza),this.d9c);b.w(a,Gx(vz),this.v1c);b.w(a,Gx(wz),this.Q6c);b.w(a,Gx(uza),this.g5c);b.w(a,Gx(wo),this.s2c);b.w(a,Fx(vza),this.B4c);b.w(a,Gx(xz),this.E2c)}\r
17703 var yz=" <";function xza(b,a,c,d,f){Ba(this,b);this.og=a;this.CU=c;this.rBa=d;this.vfc=f;this.Uea=b?b+yz+a+Uf:a;b=Wf(this.Uea);this.WS=xw(b,30)}function yza(b){this.O=b;this.O[1]=this.O[1]||[];this.Ajc=[];for(b=0;b<this.O[1][u];b++)this.Ajc[b]=new zza(this.O[1][b]);this.O[2]=this.O[2]||[];this.zic=[];for(b=0;b<this.O[2][u];b++)this.zic[b]=new zza(this.O[2][b])}function zza(b){this.O=b}var Aza="customFrom",Bza="cfs";function Cza(b,a){Kx[z](this,Aza,b);this.Kk().w(a,Gx(Bza),this.H_c)}\r
17704 function Dza(b,a){b=[];for(var c=0;c<a[u];c++){var d=a[c];d=new xza(d[pq](),d.Sj(),d.wga(),d.PT(),d.O[4]);b[p](d)}return b}var Eza="emoji",zz="em";function Fza(b,a){Kx[z](this,Eza,b);this.Kk().w(a,Fx(zz),this.y0c)}var Az="forwardingAddresses",Bz="v",Cz="u",Gza="fwd";function Hza(b,a){Kx[z](this,Az,b);this.Fa(Bz,[]);this.Fa(Cz,[]);this.Fa(Kd,[]);this.Fa(Rd,k);this.Kk().w(a,Gx(Gza),this.y1c)}function Iza(b){this.Xj(b)}var Jza="mailFetch",Kza="ama";\r
17705 function Lza(b,a){Kx[z](this,Jza,b);this.Kk().w(a,Fx(Kza),this.e5c)}function Mza(b){this.O=b}var Nza="productInfo",Dz="pi";function Oza(b,a){Kx[z](this,Nza,b);this.Kk().w(a,Gx(Dz),this.r5c)}function Pza(b){this.O=b}var Qza="quota",Rza="qu";function Sza(b,a){Kx[z](this,Qza,b);this.Kk().w(a,Fx(Rza),this.e9c)}function Tza(b){this.O=b;this.O[1]=this.O[1]||[];this.O[2]=this.O[2]||[];this.O[3]=this.O[3]||[]}\r
17706 function Ez(b,a){this.LP=b||0;this.Pd=!!a;this.yd=new Hf;this.ni=new Uza(I,undefined);Ma(this.ni,this.ni.SC=this.ni)}function Vza(b,a,c){return(b=b.yd.J(a))?b[q]:c}function Wza(b,a){if(b.Pd){Ma(a,b.ni[Rk]);a.SC=b.ni;Ma(b.ni,a);a[Rk].SC=a}else{a.SC=b.ni.SC;Ma(a,b.ni);b.ni.SC=a;Ma(a.SC,a)}if(b.LP)for(a=b.yd.Nb();a>b.LP;a--){var c=b.Pd?b.ni.SC:b.ni[Rk];c[Pb]();b.yd[Pb](c.key)}}function Xza(b,a){if(b.ni!=a){a[Pb]();b.yd[Pb](a.key)}return a[q]}function Uza(b,a){this.key=b;pa(this,a)}\r
17707 var Yza="translatableLanguages",Fz="tp";function Zza(b,a){Kx[z](this,Yza,b);this.Kk().w(a,Gx(Fz),this.C8c)}function aAa(b){this.O=b}var bAa="updatableStrings",cAa="us";function dAa(b,a){Kx[z](this,bAa,b);this.Hn=a;this.Kk().w(a,Gx(cAa),this.P8c);this.Kk().w(a,Gx(Bz),this.arb)}function Gz(b){this.Z=b}var Hz="l";\r
17708 function Iz(b){Bx(this);this.Na={};this.yDc=new cg(pea);this.V=b;this.qyc=b.J(Hz).Dq();var a=Dx(Cx(b));this.Hn=b=fy(b).ud;this.Aa=a;var c=new hya(a,b);a.ha(c);var d=new sxa(a,b);a.ha(d);var f=new Sza(a,b);a.ha(f);var g=new Fza(a,b);a.ha(g);var j=new Oza(a,b);a.ha(j);var n=new dAa(a,b);a.ha(n);var s=new Cza(a,b);a.ha(s);var v=new Hza(a,b);a.ha(v);v=new Lza(a,b);a.ha(v);var C=new Zza(a,b);a.ha(C);var M=new wza(a,b);a.ha(M);this.FAa=[c,d,f,g,j,n,s,v,C,M];for(c=0;c<this.FAa[u];c++){d=this.FAa[c];ih(a.Ya(),\r
17709 d.Je(),this.v5c,k,this)}this.aa.mib(a,b)}function Jz(b,a){return b.yDc[bd](a)}var eAa="user:";function fAa(b,a){N[z](this,eAa+b,this);this.QLb=b;ma(this,a)}var Kz="cfs:v";function gAa(b,a){if(b=b[hq](Kz))for(var c=0;c<b[u];c++)if(b[c].og==a)return h;return k}var hAa="dots";function iAa(b){b=b.Aa.za(Lx).Ca(hAa);return b==undefined?h:!!b}var jAa="em:em",kAa="ui:n",Lz="ui:e",Mz="ui:ia",Nz="ui:ic",Oz="cfs:u",Pz="ai:kb",lAa="adc:be",mAa="adc:cu",nAa="ui:evw";\r
17710 function oAa(b){var a=b[hq](jAa);return[b[hq](kAa),b[hq](Lz),b[hq](Mz),b[hq](Nz),b[hq](Kz),b[hq](Oz),b[hq](Pz),a?a.kc():undefined,b[hq](lAa),b[hq](mAa),b[hq](nAa)]}var pAa="ui:gn",qAa="sx_dn";function rAa(b,a,c){a.w(b,b.Cq(pAa),c);var d=yy(b.V);a.w(b.Aa.Ya(),d.Yn(qAa),c)}var Qz="va";function Rz(b){return b.J(Qz)}function sAa(b){this.Aa=Dx(Cx(b));this.Pd={};this.lNb=this.Aa.za(Lx)}var Sz="X";function Tz(b){return b.J(Sz)}var Uz="cu",tAa="{{num}}",uAa="{{hl}}",Vz="en";\r
17711 function vAa(b,a){b=b.lNb.Ca(Uz);if(Ue(b))if(b=b.helpall){b=b[mb](tAa,a)[mb](uAa,Vz);return new Sh(b)}return i}var Wz="http",wAa="/support/bin/answer.py",xAa="ctx",Xz="mail",yAa="answer";function Yz(b,a,c){var d=b.Pd[a];if(!d){a:{d=b.lNb.Ca(Uz);if(Ue(d))if(d=d[a]){d=(new Sh(d)).ka(Sd,Vz);break a}d=i}d||(d=vAa(b,a));if(!d)if(c||(Ue(Vz)?!ef(zAa,Vz):h))d=(new Sh).Pr(Wz).iB("mail.google.com").Or(wAa).ka(Sd,Vz).ka(xAa,Xz).ka(yAa,a);b.Pd[a]=d}return d}\r
17712 function Zz(b,a,c,d,f){this.KUc=b;this.U4=c||6E4;this.Xd=a||0;this.wpd=d||I;this.drd=f||-1}function aA(b,a,c){Bh[z](this,a,c);this.w6a=b}function bA(b,a,c,d){if(!(Ze(a)||a&&typeof a[Xb]==Se))e(Error(".9"));b=G(AAa,i,b,a,d);return Ch[xc](b,c||0)}function AAa(b,a,c){if(Ze(a)){a[z](c);c&&G(a,c)}else a&&typeof a[Xb]==Se&&a[Xb][z](a)}function cA(b){Ch[gb](b)}function dA(b,a,c,d){BAa||(BAa=new Hf);b=new aA(b,c);c=bf(b);BAa.set(c,b);ih(b,yj,a,k,d);b[Rc]();return c}\r
17713 function eA(b){var a=BAa.J(b);BAa[Pb](b);a.D()}var CAa="position:absolute;width:9em;height:9em;top:-99em";function fA(b){b=b||Cg();this.ZQ=b.ba(L?T:Td,{style:CAa});b=b.cb()[Lc];b[Bb](this.ZQ,b[Tb]);b=this.Lac=L?this.ZQ:this.ZQ[gc]||om(this.ZQ)[ac]||om(this.ZQ)[dc];if(Fh){fk(this.ZQ,-1);var a=b[yc];a[bb]();a[Xk]()}ih(b,sj,this.a7,k,this);this.LZb=this.ZQ[xk]}function gA(b){this.Ys={};this.Pia={};this.lwb={};this.Fh=b||new uh;this.mjd=!b}function hA(b){for(b=b;b.RA;)b=b.RA;return b}\r
17714 function iA(b){return b.aI||i}function jA(b,a){for(var c=b;c;c=c.RA)if(c.Ys[a])return c.Ys[a][0];if(c=DAa(b,a)){c=c(b);b[kq](a,c);return c}return i}function kA(b,a){var c=EAa(b),d=new ui,f=jA(b,a);if(f)d.ad(f);else if(f=FAa(b,a)){Zw(d,G(c[pb],c,f));Yw(d,G(b.jGc,b,a,f));Zw(d,G(b.D3c,b,a,f));d.ad(i)}else d.mE(new GAa(a));return d}function FAa(b,a){return a in b.Pia?b.Pia[a]:b.RA?FAa(b.RA,a):i}\r
17715 function lA(b,a,c){if(b.Ys[a])e(Error(".58`"+a));else if(b.Pia[a])e(Error(".59`"+a+qw+b.Pia[a]));b.Pia[a]=c}function mA(b,a,c){if(b.RA)mA(b.RA,a,c);else if(b.Ys[a])e(Error(".57`"+a));else if(b.lwb[a])e(Error(".60`"+a));else b.lwb[a]=c}function DAa(b,a){return b.RA?DAa(b.RA,a):b.lwb[a]}function EAa(b){return b.nmb?b.nmb:b.RA?EAa(b.RA):i}var HAa='Service for "',IAa='" is not registered';function GAa(b){Rh[z](this);this.id=b;Oa(this,HAa+b+IAa)}\r
17716 var JAa='Module "',KAa='" failed to load when requesting the service "',LAa='" [cause: ';function MAa(b,a,c){Rh[z](this);this.gid=b;this.hVc=a;this.oJ=c;Oa(this,JAa+a+KAa+b+LAa+c+wh)}var NAa='Configuration error when loading the module "',OAa='" for the service "',PAa='": ';function QAa(b,a,c){Rh[z](this);this.gid=b;this.hVc=a;Oa(this,NAa+a+OAa+b+PAa+c)}function nA(b,a){this.YOa={};Lf[z](this,b,a)}var oA="j";function pA(b){this.Kf=b;this.ya=b.J(oA).W();this.Sab=new kn(this)}\r
17717 function qA(b,a){var c;if(a instanceof Hf){c=a.Sb();a=a.Oa()}else{c=xf(a);a=wf(a)}for(var d={},f=0;f<c[u];f++)d[c[f]]=b.X(a[f]);return d}function rA(b){if(b.Pc)e(Error(".62"));b.wa||b.Vh()}function RAa(b,a,c){if(!a.ac())if(!(c<0||c>b.qj())){b.bf=b.bf||[];b.JP=b.JP||[];km(b.bf,a,c);b.JP[p](a);a.Ig(b);b.pia&&a.ma()}}function sA(b,a){for(var c=b.qj(),d=0;d<c;d++)if(b.rb(d)==a)return tA(b,d);return k}\r
17718 function tA(b,a){if(a<0||a>=b.qj())return k;var c=b.bf[a];kf(b.bf,a);jf(b.JP,c);c.mh=i;c.pia&&c.Ba();b.bf=b.bf[u]?b.bf:i;b.JP=b.JP[u]?b.JP:i;return h}function SAa(){Lf[z](this,400,400)}function uA(b){pA[z](this,b)}var vA="x";function TAa(b,a){if(!a&&!b.LR&&!b.MR||a==vA&&!b.LR||a==Wx&&!b.MR)return k;if(a)switch(a){case vA:b.LR=k;break;case Wx:b.MR=k;break;default:e(Error(".67"))}else b.LR=b.MR=k;return h}var wA="sizechange",UAa="fontsizechange";\r
17719 function xA(b,a,c){pA[z](this,b);this.aR=a;this.FZ=c;this.Bbb=[];ih(this.aR,wA,this.M5a,k,this);VAa.set(this.ea(),this);ih(this.FZ,UAa,this.XNa,k,this)}function WAa(b){if(b.xv()&&!(b.Sia>0)&&b.qj()>0&&b.Cc()&&!(yA>0)){yA++;try{b.Yj()}finally{zA()}}}function XAa(b,a,c){b=b.za();AA[p](b);YAa(a,c,AA);Ia(AA,0);c=BA[a][b.ea()];b.ip(a,c,k)}function zA(){if(yA>0){yA--;if(!(yA>0))for(var b=VAa.Oa(),a=0;a<b[u];a++)WAa(b[a])}}\r
17720 function CA(b,a,c,d){d=d||ZAa();c=c||ea[Lc];b=new xA(b,a,d);c[o](b.b());b.ma();return b}function ZAa(){DA||(DA=new fA(Cg(top[yc])));return DA}function aBa(){}function EA(b,a){this.dg=b;this.Sra=this.dg[yc][mc];this.Mub=new kn(this);this.Mub.w(this.dg,sj,this.a7);if(a)for(b=0;b<a[u];b++)this.Mub.w(a[b],sj,this.a7);this.vjb()&&this.x8b()}function bBa(){}\r
17721 function cBa(b){var a=b.wa[Mc][dc][Wk](b.wa,I);b.C7b=da(a.borderLeftWidth,10)+da(a.borderRightWidth,10)+da(a.paddingLeft,10)+da(a.paddingRight,10);b.S_b=da(a[wma],10)+da(a[Nma],10);b.D7b=da(a.borderTopWidth,10)+da(a.borderBottomWidth,10)+da(a.paddingTop,10)+da(a.paddingBottom,10);b.T_b=da(a.marginTop,10)+da(a.marginBottom,10)}\r
17722 function dBa(b,a){b.C7b=eBa(a.borderLeftWidth,a.borderLeftStyle)+eBa(a.borderRightWidth,a.borderRightStyle)+FA(a.paddingLeft,Ld)+FA(a.paddingRight,Ld);b.S_b=fBa(a[wma])+fBa(a[Nma]);b.D7b=eBa(a.borderTopWidth,a.borderTopStyle)+eBa(a.borderBottomWidth,a.borderBottomStyle)+FA(a.paddingTop,Ld)+FA(a.paddingBottom,Ld);b.T_b=fBa(a.marginTop)+fBa(a.marginBottom)}function eBa(b,a){return a==xd?0:FA(b,Ud)}var GA="auto";function fBa(b){return b==GA?0:FA(b,Haa)}var HA="0px";\r
17723 function FA(b){return b==HA?0:wva(b)==Jm?da(b,10):0}function IA(b){pA[z](this,b)}function JA(b,a){return b.Twa(a)&&b.KT(a)==0&&b.WZ(a)==Infinity}function KA(b){if(!b.cLa)b.cLa=b.b()[x];return b.cLa}function gBa(b,a,c){switch(a){case vA:a=b.Fl();b.Kg=c;b.Hf=a;break;case Wx:a=b.Yh();b.Kg=a;b.Hf=c;break;default:e(Error(".83"))}}function hBa(b){var a=IA.C.Ui[z](b);if(a){b.Y4a=i;b.X4a=i;b.Yjb=k;b.a5a=i;b.Z4a=i;b.Zjb=k}var c=b.ac();if(c&&(a||b.Fj()))c.Ui();return h}\r
17724 function iBa(b,a,c){switch(a){case vA:b.Y4a=c;break;case Wx:b.a5a=c;break;default:e(Error(".84"))}}function LA(b,a){if(!b.Fj())return 0;var c;a:switch(a){case vA:c=b.Y4a;break a;case Wx:c=b.a5a;break a;default:e(Error(".74"))}if(c)return c;if(jBa(b,a)){kBa(b,a);c=b.b();c=a==vA?c[xk]:c[ql];c+=a==vA?b.Epa:b.Fpa;iBa(b,a,c);return c}lBa(b,a);c=b.oF(a);c+=a==vA?b.Epa:b.Fpa;iBa(b,a,c);return c}\r
17725 function jBa(b,a){if(!b.Fj())return h;var c;a:switch(a){case vA:c=b.X4a;break a;case Wx:c=b.Z4a;break a;default:e(Error(".75"))}if(c)return h;else{c=b.Q3(a);switch(a){case vA:b.X4a=c;break;case Wx:b.Z4a=c;break;default:e(Error(".85"))}return c}}function kBa(b,a){if(!jBa(b,a))e(Error(".87"));var c;a:switch(a){case vA:c=b.Yjb;break a;case Wx:c=b.Zjb;break a;default:e(Error(".76"))}if(!c){lBa(b,a);b.Fj()&&b.VV(a);switch(a){case vA:b.Yjb=h;break;case Wx:b.Zjb=h;break;default:e(Error(".86"))}}}\r
17726 function mBa(b,a){switch(a){case vA:return b.W4a==-1;case Wx:return b.O3==-1;default:e(Error(".86"))}}function lBa(b,a){b.NXa(b.Fj())&&a==vA&&b.Ui(Wx)}function MA(b,a,c){if(a==vA){if(b.W4a!=c){b.W4a=c;ka(KA(b),NA(c));return h}}else if(b.O3!=c){b.O3=c;Wa(KA(b),NA(c));return h}return k}\r
17727 function nBa(b){if(b.Fj()){var a=b.b();OA.mM(a);if(Jg){var c=OA.wa;a={};var d=c[Mc][dc].getMatchedCSSRules(c,I),f=[];f[p](oBa);if(d)for(g=0;g<d[u];g++)f[p](d[g][x]);f[p](c[x]);for(var g=0;g<f[u];g++){c=f[g];for(d=0;d<pBa[u];d++){var j=pBa[d],n=c[j];if(n)a[j]=n}}dBa(OA,a)}else L?dBa(OA,OA.wa[il]):cBa(OA);a=OA.C7b;f=OA.S_b;if(a!=b.U4a||f!=b.Epa){b.Ui(vA);b.Epa=f;b.U4a=a}a=OA.D7b;f=OA.T_b;if(a!=b.V4a||f!=b.Fpa){b.Ui(Wx);b.Fpa=f;b.V4a=a}b=b.Uc();for(a=0;a<b[u];a++){f=b[a];f instanceof IA&&nBa(f)}}}\r
17728 function NA(b){return b<0?I:qBa?b+Jm:b}function rBa(b,a,c,d){d?sBa(b,a,c):YAa(b,a,c)}\r
17729 function YAa(b,a,c){for(var d=BA[b],f=c[u],g=0,j=0;j<f;j++){var n=i,s=c[j];n=s.KT(b);s.WZ(b);var v=s.rK(b),C=JA(s,b);switch(v){case 0:n=n;break;case -1:if(C)n=-1;else{v=LA(s,b);n=s.Sda(b,v);n=n==v?-1:n}break;default:if(a==-1){g++;n=n}else n=s.Sda(b,a);break}d[s.ea()]=n}if(g){for(j=a=0;j<f;j++){s=c[j];n=d[s.ea()];if(n==-1)n=LA(s,b);a=l.max(a,n)}for(j=0;j<f&&g>0;j++){s=c[j];if(s.rK(b)>0){g--;d[s.ea()]=s.Sda(b,a)}}}}\r
17730 function sBa(b,a,c){var d=BA[b];Ia(PA,Ia(tBa,Ia(QA,Ia(uBa,0))));for(var f=c[u],g=0;g<f;g++){var j=0;j=c[g];if(j.Fj()){tBa[g]=j.rK(b);QA[g]=j.KT(b);uBa[g]=j.WZ(b)}else{QA[g]=0;uBa[g]=0}PA[g]=0}var n=k;for(g=0;g<f;g++){j=c[g];if(j.Fj())if(JA(j,b))PA[g]=-1;else if(j.Twa(b)){var s=LA(j,b);j=j.Sda(b,s);PA[g]=j==s?-1:j}else if(j.rK(b)==0)PA[g]=QA[g];else{if(!n){n=h;Ia(RA,0)}RA[p](g)}}if(n)if(a==-1)for(g=0;g<RA[u];g++){b=RA[g];PA[b]=QA[b]}else{for(g=n=0;g<f;g++){s=PA[g];if(s<0)s=LA(c[g],b);n+=s}for(g=j=\r
17731 s=0;g<RA[u];g++){b=RA[g];s+=tBa[b];j+=QA[b]}a=l.max(a-n,j);vBa(RA,QA,uBa,tBa,a,s,PA);for(g=n=0;g<RA[u];g++){b=RA[g];n+=PA[b]}n-=a;for(g=0;g<RA[u]&&n>0;g++){b=RA[g];a=PA[b];s=QA[b];if(a>s){a=l.min(n,a-s);PA[b]-=a;n-=a}}if(n>0)e(Error(".89`"+n))}for(g=0;g<f;g++){j=c[g];d[j.ea()]=PA[g]}}\r
17732 function vBa(b,a,c,d,f,g,j){for(b=nf(b);;){for(var n=f/g,s=i,v=i,C=0,M=0,Y=b[u],ha=0;ha<Y;ha++){var tb=b[ha],zc=l[ob](d[tb]*n);if(zc<a[tb]){s||(s={});s[tb]=1;C+=a[tb]-zc}else if(zc>c[tb]){v||(v={});v[tb]=1;M+=zc-c[tb]}j[tb]=zc}if(!s&&!v)break;var qb=0,nd=0;n=function $Di(Pe){j[Pe]=l.min(l.max(j[Pe],a[Pe]),c[Pe]);qb+=j[Pe];nd+=d[Pe];jf(b,Pe)};if(M==C){v&&Ef(v,n);s&&Ef(s,n);break}else{M>C?Ef(v,n):Ef(s,n);f-=qb;g-=nd}}}\r
17733 function wBa(b){if(!b.pia)return k;var a=b.Yj;for(b=b;b&&b!=a;){if(!b.ZHa)return k;b=b.mh}return h}function SA(b){pA[z](this,b);this.sIa=i}function TA(b,a){SA[z](this,b);this.Wu=a}function xBa(b,a){if(b.VFa)if(a==vA){if(b.XHa!=-1){b.XHa=-1;ka(b.Kca,I)}}else if(b.WHa!=-1){b.WHa=-1;Wa(b.Kca,I)}}\r
17734 var UA='<table class="',yBa="ve",zBa='" cellspacing="0" cellpadding="0" role="alert">',ABa='<tr><td class="vj"></td><td class="vi"></td><td class="vk"></td></tr><tr><td class="vi"></td><td class="vh"></td><td class="vi"></td></tr><tr><td class="vf"></td><td class="vi"></td><td class="vg"></td></tr>',VA="</table>";function BBa(b,a){b=a||new U;b[R](UA,ul,J,yBa,zBa,ABa,VA);if(!a)return b[t]()}function WA(b,a){pA[z](this,b);this.Jc(a)}function CBa(b){if(!b.FDa)b.FDa=b.b()[Tb][Tb];return b.FDa}\r
17735 function XA(b){if(!b.hy)b.hy=CBa(b)[cc][1][cc][1];return b.hy}function YA(b,a){if(!b.MZb&&!a)b.MZb=new TA(b[uq](),b);return b.MZb}function DBa(b,a){var c=b.b();if(b.b8a)b.b8a!=a&&qm(c,b.b8a,a);else K(c,a);b.b8a=a}function EBa(){}var FBa="b8";function ZA(b,a){WA[z](this,b,FBa);this.Djd=a?a:0;this.Ym(k);Pw(this.H(),this.b(),aB,this.lh)}function GBa(b,a,c,d){b=a[ic](c);for(c=0;a=b[c];c++)K(a,d)}var bB="link_";\r
17736 function cB(b,a){la(this,b);if(Ye(a)){this.id=a;if(!Mf(this.id,bB))this.id=bB+this.id}else this.uri=a}var dB="Undo",eB="Learn more",HBa="link_undo";function IBa(b,a,c){var d;if(c===h)d=dB;else if(c)d=c;c=[];a&&c[p](new cB(eB,a));d&&c[p](new cB(d,HBa));return fB(b,c)}var JBa='&nbsp;&nbsp;<span class="ag" id="',KBa='" tabindex="0" role="link" idlink>',gB="</span>",LBa='&nbsp;&nbsp;<a class=ad target=_blank href="',W='">',hB="</a>";\r
17737 function fB(b,a){a={ke:b,VZb:a};b=new U;b[R](a.ke);if(a.VZb){a=a.VZb;for(var c=a[u],d=0;d<c;d++){var f=a[d];b[R](f.id?JBa+V(f.id)+KBa+f[jb]+gB:LBa+f.uri+W+f[jb]+hB)}}b=b[t]();return b}var iB="Loading...",MBa="Still working...";function jB(){this.f1=0;this.Sm=iB;this.Iaa=MBa;this.nCb=[]}function NBa(b){for(var a=4,c=0;c<b[u];c++)a=l.min(a,b[c].ts());return a}function kB(b,a){a<b.f1||lB(b,a)}\r
17738 function lB(b,a){if(a!=b.f1){if(a<b.f1)e(Error(".90`"+b.f1+qw+a));if(a>4)e(Error(".91"));for(var c=b.f1+1;c<=a;c++){b.f1=c;b.d9a()}if(a==4){Ff(b.nCb,function(d){d.ad(this)});Ia(b.nCb,0)}}}function OBa(b){this.sAc=b}function PBa(b){return b.J(Yx)}function QBa(b){return b.sAc}var mB="FAIL";function nB(b,a,c,d){this.Lc=b;this.oT=a;this.vW=!!b&&b.o5!=mB&&!c;this.C0=d}function oB(b,a){jB[z](this);this.V=b;this.iaa=a;b=fy(b);this.Hn=b.ud;this.nKa=b.s8a}var RBa="CREATED";\r
17739 function SBa(b){if(b.qa!=RBa)e(Error(".92`"+b.qa))}function TBa(b,a){a=new N(a,b);b.Sma&&b.Sma[r](a);b[r](a)}function UBa(b,a){b.MDc=h;b.jDc=a;b.h2a=k}var VBa="PROCESSED",WBa=";0";function XBa(b){var a=b.nKa;a.w_b();try{b.qa=VBa;try{QBa(PBa(b.V)).WH(b);b.rza();b.Wm&&b.Wm.AH&&b.Wm.AH(b);TBa(b,Cz)}catch(c){rg(tg,WBa,c)}a.WH(b)}finally{a.vic()}}var YBa="COMPLETED",ZBa=";1";\r
17740 function aCa(b){var a=b.nKa;a.w_b();try{b.Eg()&&XBa(b);b.qa=YBa;try{QBa(PBa(b.V)).tqb(b);b.vL();b.Wm&&b.Wm.wh&&b.Wm.wh(b);TBa(b,Bz);lB(b,4)}catch(c){rg(tg,ZBa,c)}b.Lc=i;a.tqb(b)}finally{a.vic()}}function pB(b,a,c){oB[z](this,b,Wn);this.mg=a;this.Lb=Tz(b);this.aX=c;this.UR=qB[a];if(!this.UR)e(Error(".94`"+a));this.HPa=k}function bCa(b){return b.YQ&&!!!b.bh&&!!b.Wd()}function rB(b){return b.Kv[mb](cCa,I)}function sB(b,a,c,d){var f=i;if(c)f=Yz(b.Lb,c);return IBa(a,f,d)}\r
17741 function tB(b,a,c){pB[z](this,b,a,c);this.BV=[];this.RDa=[]}function uB(b,a,c){if(b.hia)e(Error(".95"));hf(b.BV,a);hf(b.RDa,c)}function dCa(b,a){if(b.BV[u])e(Error(".96"));b.hia=h;b.FVc=a}function vB(b,a,c){tB[z](this,b,c||3,a);Bx(this);this.uj=h}function eCa(b){this.Lc=b}var wB="top",fCa="target",gCa="noreferrer",hCa='<META HTTP-EQUIV="refresh" content="0; url=';\r
17742 function iCa(b,a,c){a||(a={});var d=c||ba;c=typeof b[Yc]!="undefined"?b[Yc]:String(b);b=a[y]||b[y];var f=[];for(var g in a)switch(g){case Vi:case Ui:case wB:case sw:f[p](g+ei+a[g]);break;case fCa:case gCa:break;default:f[p](g+ei+(a[g]?1:0))}g=f[kd](wj);if(a.noreferrer){if(a=d[bb](I,b,g)){a[yc][nq](hCa+Wf(c)+W);a[yc][Xk]()}}else a=d[bb](c,b,g);return a}function jCa(b){Bx(this);this.V=b}function xB(b){return b.J(fo)}function yB(b,a,c){return kCa(b,a,c,h)}var lCa="nocheckbrowser";\r
17743 function zB(b,a,c){Mj.Of().Xb(lCa)&&a.ka(lCa,I);return yB(b,a,c)}var AB="_blank";function kCa(b,a,c,d){c=c||{};c[y]||Pa(c,AB);if(c[ib]){c.resizable=h;c.scrollbars=h}return b.Q0(a,c,d)}function mCa(b){this.tkc=b}function nCa(b){tB[z](this,b,42,2)}function oCa(b){this.Jb=b;pCa[b]=this}function BB(b,a){this.S1b=b;this.Xd=a;if(!this[Sk].i3a)this[Sk].i3a={};this[Sk].i3a[this[t]()]=this}function qCa(b){if(!b)return b;return b.lC()}function CB(b,a){BB[z](this,b,a)}function DB(b){return new CB(EB,b)}\r
17744 var FB="w";function rCa(b){N[z](this,FB);this.FV=b}function sCa(){jB[z](this);this.Ic=0}function GB(b,a){if(a!=b.Ic){if(a>3)e(Error(".97"));b.Ic=a;a!=0&&lB(b,4)}}function HB(){}var IB="t";function JB(b){return b.J(IB)}function tCa(b,a){tB[z](this,b,64,a);this.jb=JB(b);this.uj=k}function uCa(b,a){tB[z](this,b,21,a);this.uj=h}function KB(b,a){tB[z](this,b,1,a);this.uj=h}function vCa(b,a){tB[z](this,b,2,a);this.uj=h}function wCa(b,a){tB[z](this,b,8,a);this.uj=h}\r
17745 function xCa(b,a){tB[z](this,b,18,a);this.uj=h}function LB(b,a,c,d){tB[z](this,b,a,d);this.iR=c}function MB(b,a,c){LB[z](this,b,13,a,c);this.uj=h}function yCa(b,a,c){tB[z](this,b,c||4,a);this.uj=h}function zCa(b,a,c){tB[z](this,b,9,c);this.uj=h;this.iNb=a}function ACa(b,a){tB[z](this,b,10,a);this.uj=h}function NB(b){this.o2a=b}function BCa(b,a){BB[z](this,b,a)}function OB(b){return new BCa(EB,b)}function PB(b){this.V=b;this.Z=Rz(b);Bx(this)}function QB(b){b=CCa[b];return b!=undefined?RB[b]:i}\r
17746 function SB(b,a,c,d,f,g,j){if(QB(b)!=i)return i;DCa[b]=a;a=new ECa;Op(a,b);a.NEa=g;a.eqd=c;a.PX=d;a.a2=f;if(j){b=CCa[j];for(km(RB,a,b);b<RB[u];)CCa[RB[b][jr]]=b++}else{CCa[b]=RB[u];RB[p](a)}return a}function FCa(b,a,c,d,f,g,j,n){b=SB(b,a,c,d,f,j,n);if(b!=i)b.PYb=g;return b}function GCa(b,a,c,d,f,g,j){b=SB(b,a,c,d,f,g,j);if(b!=i)b.N_a=h;return b}function HCa(b,a,c,d,f,g,j){b=SB(b,a,c,d,f,g,j);if(b!=i)b.BWa=h;return b}\r
17747 function ICa(b,a,c,d){var f=a.dMb;Ia(f,0);for(var g=0;g<RB[u];g++){var j=RB[g][jr];if(JCa(b,j,c)){TB(a,j,d[j]);f[p](j)}else TB(a,j,k)}}function JCa(b,a,c){a=QB(a);if(!a)return k;if(!c)return h;a=a.NEa;return Ve(a)?ef(a,c):Ze(a)?a(b.V):h}function ECa(){}function KCa(){}function UB(b){pA[z](this,b);this.V=b}function VB(b){UB[z](this,b);this.ge=new Hf}function TB(b,a,c){if(b.Fs(a)&&b.ge.J(a)!=c){b.ge.set(a,c);b.Cl=h}}var WB="actionitem";function XB(b,a){N[z](this,WB);Op(this,b);la(this,a)}\r
17748 function LCa(){this.iAa={}}var X='<div class="',YB="ar",ZB="at",aC='" style="background-color: #',MCa="; border-color: #",NCa=';"><div class="',bC="au",OCa='" style="border-color:#',PCa="av",QCa='searchType="',RCa='label="',SCa='style="color: #',TCa="</div></div></div></div>";function UCa(b,a){var c=a||new U;c[R](X,YB,J,vl,wl,ZB,aC,b[lq][jq],MCa,b[lq][jq],NCa,bC,OCa,b[lq][jq],wl,PCa,Vf,b.Dvb?QCa+b.Dvb+Vf:I,b[pr]?RCa+b[pr]+Vf:I,SCa,b[lq].tg,W,b[ec],TCa);if(!a)return c[t]()}\r
17749 function VCa(b){this.dg=b}var cC="F";function WCa(b,a){a=new VCa(a);b[kq](cC,a);return a}function dC(b){return b.J(cC)}function eC(b){return b.dg.Ec()}function fC(){this.ee=[]}function gC(b){var a;if(b)if(Ve(b)){a=[];for(var c=0;c<b[u];c++)a[p](b[c].cb())}else a=[b.cb()];else a=[Cg().cb()];this.eE=a;this.xkb=Zf();this.Q=b=new kn(this);for(c=0;c<this.eE[u];c++){b.w(this.eE[c],XCa,this.XO,h);b.w(this.eE[c][Lc],YCa,this.XO,h)}}var ZCa="activity";\r
17750 function aDa(b,a,c){b.xkb=a;b.fZb=c;if(a>b.R0b){b[r](ZCa);b.R0b=a+3E3}}function hC(b,a){a=a||bDa(this);this.qhb=b;this.Dz=a;this.Uuc=G(this.UXc,this);cDa(this)}function bDa(b){dDa.add(b);if(iC==i)iC=new gC;return iC}function cDa(b){var a=b.qhb+1-(Zf()-b.Dz.xkb);if(a>0)b.Oya=Dh(b.Uuc,a);else{b.rP=h;ih(b.Dz,ZCa,b.t3b,k,b);b.mgb=h;b[r](zi)}}function eDa(b){if(b.mgb){nh(b.Dz,ZCa,b.t3b,k,b);b.mgb=k}}function jC(b){this.qhb=b;this.UGa=new fC;this.i1=new Hf}var kC="A";function lC(b){return b.J(kC)}\r
17751 var fDa=":2";function mC(b,a,c){b.UGa.MG([a,c]);if(!b.ab)b.ab=bA(fDa,b.wYc,0,b)}function gDa(b,a){if(a.Cu)e(Error(".102"));a.Cu=b;var c=Zf();a.AKa=c+a.zMb;hDa(a,c);b.i1.set(String(a.id),a)}function iDa(b,a){b.i1[Pb](String(a.id));if(!a.Cu)e(Error(".103"));if(a.ab){cA(a.ab);a.ab=i}a.Cu=i}function nC(b,a,c,d,f){this.id=String(jDa++);this.fy=b;this.C5=a;this.zMb=c;this.Mk=d;this.na=f||i}function hDa(b,a,c){c=c||0;if(b.ab){cA(b.ab);b.ab=i}a=l.max(b.AKa+c-a,0);b.ab=bA(b.fy,b.ix,a,b)}var kDa=";3";\r
17752 function lDa(b,a){var c=h,d=b.C5;if(d&1)if(b.Cu.qia())c=k;var f=b.Cu.Hh;if(d&2)if(f&&f.My())c=k;if(d&4)if(f&&!f.My())c=k;if(c){b.xKa=k;if(b.AKa-a<=25){try{b.Mk[z](b.na)}catch(g){rg(tg,kDa,g)}a=Zf();b.AKa=a+b.zMb;hDa(b,a)}else hDa(b,a,b.AKa-a)}else b.xKa=h}function mDa(b,a){b.uWb=a;if(!b.uWb){a=b.i1.Oa();for(var c=0;c<a[u];c++){var d=a[c];if(d.C5&1&&d.xKa){mC(b,b.kvb,b);break}}}}function nDa(b,a){b.Hh=new hC(b.qhb,a);ih(b.Hh,yi,b.R8,k,b);ih(b.Hh,zi,b.S8,k,b)}\r
17753 function oC(b){this.dg=b||ba;this.OU=ih(this.dg,sj,this.a7,k,this);this.We=Mg(this.dg);if(this.vjb())this.R0a=ba[Dc](G(this.lJb,this),500)}function pC(b,a){this.V=b;a&&oDa(this,a)}function qC(b){return b.J(oA)}function pDa(b,a){a=new pC(b,a);b[kq](oA,a)}function oDa(b,a){if(b.wrb)e(Error(".104"));b.wrb=a;b.Y=Cg(a);b.eoa=new oC(pm(a));b.eoa.dk(b.V.Ya())}function qDa(b){this.V=b;this.Q=new kn(this);this.Yca=k}var rC="B";function sC(b){return b.J(rC)}\r
17754 function rDa(b){var a=new qDa(b);b[kq](rC,a);return a}var sDa="1.8.1",tC="SPAN";function tDa(b,a){var c=pm(a),d=Jg?a[Lc]:a[mc],f=a;if(L)f=c;else if(Fh&&!vg(sDa))f=a[mc];a=f;b.Nr=d;b.KQ=a;b.kgd=Cg(b.Nr);b.HF=d[Nk];b.Q.w(a,tj,b.Xfd);if(L&&!vg(Ij)){b.vrd=new cg([Cd,tC,Vd,Fd,vd,Wd,Iaa,Xd]);b.Q.w(b.kgd.cb(),Zi,b.mgd)}}function uC(b){if(L&&b.Ppa){var a=b.Ppa.cb()[Lc][Dk]();a[tk]();a[Fk]();b.lf()}}function uDa(b){return b.Nr[Nk]}var vDa="1.9a";\r
17755 function vC(b,a){var c=b.Nr;if(b.HF!=a)if(!(Fh&&!vg(vDa)&&c[vc]==0&&c[Wc]==0)){b.HF=a;up(c,a)}}var wDa="border: 0; vertical-align: bottom",xDa='javascript:""';function yDa(b){return b.ba(Td,{frameborder:0,style:wDa,src:xDa})}function wC(b,a,c){Pa(this,b);this.handle=a||b;this.txa=c||new Cm(NaN,NaN,NaN,NaN);this.ki=Eg(b);this.Q=new kn(this);ih(this[Fma],fj,this.sM,k,this)}function zDa(b){b[zb]()}var xC="start";function ADa(b,a){if(b[r](new BDa(xC,b,a[kc],a[lc],a))!==k)b.mZ=h}\r
17756 function CDa(b,a,c){var d=gm(Cg(b.ki));a+=d.x-b.Oza.x;c+=d.y-b.Oza.y;b.Oza=d;b.Hea+=a;b.Iea+=c;a=DDa(b,b.Hea);b=EDa(b,b.Iea);return new xg(a,b)}function DDa(b,a){var c=b.txa;b=!ia(c[Ck])?c[Ck]:i;c=!ia(c[ib])?c[ib]:0;return l.min(b!=i?b+c:Infinity,l.max(b!=i?b:-Infinity,a))}function EDa(b,a){var c=b.txa;b=!ia(c.top)?c.top:i;c=!ia(c[id])?c[id]:0;return l.min(b!=i?b+c:Infinity,l.max(b!=i?b:-Infinity,a))}\r
17757 function BDa(b,a,c,d,f,g,j,n){N[z](this,b);Da(this,c);Ea(this,d);this.AAd=f;ck(this,Ke(g)?g:a.Hea);this.top=Ke(j)?j:a.Iea;this.VBc=a;this.SBc=!!n}var FDa="Kj-JD";function yC(b,a,c){nn[z](this,c);this.Al=b||FDa;this.LBb=!!a;this.Yf=GDa;this.xq=new xm(this.W().cb())}function HDa(b){b.Cc()||b.eb();return b.y2}function zC(b){b.Cc()||b.eb();return b.b()}function IDa(b){b.Cc()||b.eb();return b.Em}\r
17758 function AC(b,a){b.Yxa=a;JDa(b);var c=b.W();if(b.Cc()&&a&&b.Ib()){b.jq&&c.yA(b.jq,b.b());b.Em&&c.yA(b.Em,b.b());b.DWa()}}var KDa="-K7-GIHV4";function LDa(b,a){b.dfa=a;if(b.dfa&&!b.ih&&b.b())b.ih=MDa(b);else if(!b.dfa&&b.ih){b.b()&&Ag(b.iD,b.Al+KDa);b.ih.D();b.ih=i}}function MDa(b){var a=new wC(b.b(),b.iD);K(b.iD,b.Al+KDa);return a}var NDa="-Jh";\r
17759 function JDa(b){if(b.LBb&&b.Yxa&&!b.jq){b.jq=yDa(b.W());m(b.jq,b.Al+NDa);Wm(b.jq,k);Vm(b.jq,0)}else if((!b.LBb||!b.Yxa)&&b.jq){Sg(b.jq);b.jq=i}if(b.Yxa&&!b.Em){b.Em=b.W().ba(T,b.Al+NDa);Vm(b.Em,b.Z3a);Wm(b.Em,k)}else if(!b.Yxa&&b.Em){Sg(b.Em);b.Em=i}}function ODa(b,a){b.jq&&a[o](b.jq);b.Em&&a[o](b.Em)}var BC="dialogselect";function CC(b,a){za(this,BC);this.key=b;this.caption=a}function DC(b){this.ya=b||Cg();Hf[z](this)}function PDa(b,a){b.wa=a;b.eb()}\r
17760 function EC(b){yC[z](this,undefined,undefined,qC(b).W());this.M4=h;this.eb()}var QDa="Error";function FC(b,a){b=new EC(b);b.Fc(QDa);b.xb(a);b.oh(GC);b.ra(h);return b}var RDa="xy",SDa="xx";function HC(b,a,c,d,f){EC[z](this,f);this.V=f;this.Cb=sC(f);this.IAc=a;this.n2a=d;d=this.Cd();f=f.J(oA).W();this.P9=f[Qb](T);m(this.P9,RDa);Q(this.P9,b);d[o](this.P9);this.xF=f[Qb](zm);m(this.xF,SDa);pa(this.xF,a);d[o](this.xF);this.Fc(c);this.oh(GDa);this.H().w(this,BC,this.MC)}\r
17761 function IC(b,a,c,d){EC[z](this,a);this.Cb=sC(a);this.n2a=b;this.Fc(c);d!=undefined&&this.xb(d);this.oh(GDa);this.H().w(this,BC,this.MC)}function TDa(b){return String[rq](b[Xc](0)-65248)}\r
17762 function UDa(b){var a=b[Xc](0);return b[u]==1?"\u3002\u300c\u300d\u3001\u30fb\u30f2\u30a1\u30a3\u30a5\u30a7\u30a9\u30e3\u30e5\u30e7\u30c3\u30fc\u30a2\u30a4\u30a6\u30a8\u30aa\u30ab\u30ad\u30af\u30b1\u30b3\u30b5\u30b7\u30b9\u30bb\u30bd\u30bf\u30c1\u30c4\u30c6\u30c8\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d2\u30d5\u30d8\u30db\u30de\u30df\u30e0\u30e1\u30e2\u30e4\u30e6\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ef\u30f3\u309b\u309c"[xb](a-65377):b[Xc](1)==65438?"\u30f4__\u30ac\u30ae\u30b0\u30b2\u30b4\u30b6\u30b8\u30ba\u30bc\u30be\u30c0\u30c2\u30c5\u30c7\u30c9_____\u30d0\u30d3\u30d6\u30d9\u30dc"[xb](a-\r
17763 65395):"\u30d1\u30d4\u30d7\u30da\u30dd"[xb](a-65418)}function VDa(b,a,c){for(var d,f=i,g=0;(d=a[hb](b))!=i;){if(f==i)f=[];g<d[Lq]&&f[p](b[Zc](g,d[Lq]));f[p](c(d[0]));g=a[Mma]}if(f==i)return b;g<b[u]&&f[p](b[Zc](g));return f[kd](I)}function JC(b,a){b=b[mb](/\uFF3E/g,Qd);b=VDa(b,WDa,TDa);b=VDa(b,XDa,UDa);return(a?b:Pf(b[mb](/\s+/g,J)))[mb](YDa,Qd)[od]()}function ZDa(){}function aEa(b){Rp(this,b)}\r
17764 function bEa(b,a,c){this.rt=b[1];this.lD=b[2];this.mqa=b[3];this.EU=b[4];this.Bwa=b[5];this.wra=b[6];this.Yna=b[7]||I;this.CDa=b[8];this.SA=b[9]||0;this.Nx=a;this.V=c;this.Jb=b[0];this.Sm=Vy(this.Jb);this.ufa=Wf(this.Sm);this.esb=i;Bx(this)}function cEa(b,a){if(b.rt!=a){b.rt=a;b.xj(2)}}function dEa(b,a){if(b.Yna!=a){b.Yna=a;b.xj(256)}}function eEa(b){this.V=b;this.kr=new ZDa}function KC(b){return b.J(cy)}var LC="labels",fEa="_GM_getLabelDataNode";\r
17765 function MC(b){if(!b.qn){var a=Dx(Cx(b.V));b.qn=a.za(LC)}if(!b.qn){a=eC(dC(b.V));b.qn=Pda(fEa,a)}return b.qn}function NC(b,a){return(b=a?gEa(MC(b),a,h):k)?b.J():i}function hEa(b,a,c){a=JC(a);if(a[u]>40||a==I)return k;if(!iEa[cb](a))return k;if(ff(jEa,a)!=-1)return k;if(c){if(ff(c,a)!=-1)return k}else{b=OC(MC(b),h);for(var d=0;c=b[d];d++)if(JC(c)==a)return k}return h}\r
17766 var kEa="The name is too long.",lEa="No name specified.",mEa="The ^ character is not allowed.",nEa="Sorry, you can't create a label named \"",oEa="\" (it's a reserved system label).",pEa="The label name you have chosen already exists.";function PC(b,a,c){a=JC(a);if(a[u]>40)return kEa;if(a==I)return lEa;if(!iEa[cb](a))return mEa;if(ff(jEa,a)!=-1)return nEa+(a+oEa);b=OC(MC(b),h);for(var d,f=0;d=b[f];f++)if(d!=c&&JC(d)==a)return pEa;return i}\r
17767 function QC(b,a,c,d,f,g){a=new HC(a,c,d,f,g);b=G(b.wqd,b);a.Wna=b;a.ra(h)}function qEa(b,a){var c=NC(b,a);if(c){a=c.esb;if(!a){a=UCa({name:c.ufa,color:b.kr.X5(c)});c.esb=a}}else{a=Vy(a);a=UCa({name:Wf(a),color:b.kr.PO(0)})}return a}function rEa(){this.Q=new kn(this);this.poa=[];this.Dh=[]}function RC(b){return b.J(Kd)}function sEa(b){var a=new rEa(b);b[kq](Kd,a);return a}var SC="I";function tEa(b,a){Ff(b.Dh,function(c){c(a)});b.poa[p](a);b.Q.w(a,SC,b.uha)}\r
17768 function uEa(b,a){Ff(b.poa,a);b.Dh[p](a)}var TC="D";function vEa(b,a){b.iL=a;b[r](TC)}function UC(b){return b.iL}function wEa(b,a,c){return hx(ywa(Awa(b),ai),ai,c)+a}function Kga(b,a,c){a=a||top;b=b?Lj+b:a[Ic][raa];if(Ke(c)?c:Jg)Na(a,wEa(a[Ic][Yc],b,Yf()));else{a[Ic].hash=b;a[Ic][Sq](h)}}function xEa(){this.yu=new cg}function VC(b){return b.J(Ph)}function WC(b){b[r](cC)}var XC="G";function yEa(b){N[z](this,XC);this.ZH=b}function zEa(){this.Q=new kn(this)}var AEa="beforeunload";\r
17769 function YC(b,a){this.sC=b;this.Gk=new kn(this);this.V=a;this.dRa=[];this.OIa=k;this.Gk.w(this.sC,uj,this.uha);this.Gk.w(this.sC,AEa,this.Teb);tEa(RC(a),this)}function ZC(b,a){b.dRa[p](a)}var aD="H";function BEa(b,a){N[z](this,aD,b);this.hj=a;this.PPb=k}function CEa(b,a){this.Pf=b;this.Jb=(this.UPa=!!a&&a.Ca(Rd)==b)?a.Ca(Zx):I}function DEa(b){this.V=b}function EEa(b,a){b=Dx(Cx(b.V)).za(dya);return new CEa(a,b)}function bD(){this.Kab=[]}var cD="k";function dD(b){return b.J(cD)}\r
17770 function FEa(b){this.V=b;this.Rjc={};this.VEa={};this.PVb={}}var eD="E";function fD(b){return b.J(eD)}function gD(b,a,c){if(b.VEa[a])e(Error(".107`"+a));b.VEa[a]=c}function hD(b,a,c){b.mW(a,b.Rjc,c)}function iD(b,a,c){b.mW(a,b.PVb,c)}var jD="K",kD="f";\r
17771 function lD(b){gA[z](this,b?b.Ya():new uh);var a=b?b.Ev:this;this.Ev=a;if(this.Ev==this){this.Snd=Zf();this.nmb=O.S();sEa(this);this[kq](ag,new lxa(this,void 0));this[kq](eD,new FEa(this));this[kq](Ph,new xEa(this));this[kq](cD,new bD);this[kq](jD,new LCa(this));this[kq](Zx,new zEa(this));this[kq](kD,new DEa(this));this[kq](cy,new eEa(this));this.Q=new kn(this);ln(this.Q,RC(this),TC,this.Gpb)}else{if(a.Wpa)a.Wpa[p](this);else a.Wpa=[this];b&&this.kma(b);this.nmb=EAa(a)}Bx(this)}\r
17772 function _ForceReloadStyles(){}function mD(b){return new lD(b)}function GEa(b){if(b.Ev==b)if(!b.Pc&&b.va&&!b.E5a){b.G5a.i6a();b.va[qc]()}}function nD(b){return b.Ev.tod}function oD(b){return b.Ev.va}function HEa(b){if(b.E5a)b.Ev.va=i}function pD(b){return b.Ev.G5a}var qD="ce";function IEa(b){b=Dx(Cx(b.Ev)).za(Lx).Ca(qD);return(Ue(b)?!!b:h)&&!bx()}function JEa(b){return!!(gga&&IEa(b))}var KEa="_GM_EmoticonHandler",LEa="_GM_chatEngine",MEa="_GM_chatController";\r
17773 function NEa(b){var a=eC(dC(b)),c=rD(b);sD(c)._GM_EmoticonHandler=si(KEa,a);if(!oD(b)){c=si(LEa,a);a=si(MEa,a);if(c&&a){b.Ev.va=c;b.Ev.G5a=a;b.Ev.E5a=h}}}var OEa="_GM_bcService";function PEa(b){if(!jA(b,dx)){var a=eC(dC(b));(a=si(OEa,a))&&b[kq](dx,a,h)}}var tD="ui:fru";function uD(b){return new Sh(Rz(b)[hq](tD))}function vD(b){if(!b.cEa)if(typeof QEa!="undefined")b.cEa=new QEa(iA(b));return b.cEa}\r
17774 function wD(b){var a=rD(iA(b));a=sD(a);var c=a[yc][ub](pha);if(c)Ua(c[x],xd);(c=a.loadTimeout)&&a[gb](c);hA(b).hL=k}function REa(b){this.Db=b}function SEa(b){this.O=b;this.O[1]=this.O[1]||[];this.aS=[];for(b=0;b<this.O[1][u];b++)this.aS[b]=new xD(this.O[1][b]);if(this.O[4])this.v9b=new TEa(this.O[4])}function xD(b){this.O=b}function TEa(b){this.O=b;this.O[1]=this.O[1]||[]}function UEa(b){this.O=b}\r
17775 function VEa(b){this.O=b;this.O[1]=this.O[1]||[];this.aS=[];for(b=0;b<this.O[1][u];b++)this.aS[b]=new xD(this.O[1][b])}function WEa(b){this.O=b;this.O[2]=this.O[2]||[]}function XEa(b){this.O=b;if(this.O[1])this.jQb=new YEa(this.O[1]);this.O[2]=this.O[2]||[];this.lkc=[];for(b=0;b<this.O[2][u];b++)this.lkc[b]=new ZEa(this.O[2][b])}function ZEa(b){this.O=b}function YEa(b){this.O=b;this.aS=new xD(this.O[2])}function aFa(b){this.O=b}\r
17776 function bFa(b){if(b){this.ycc=b.Wga()||-1;this.Ccc=b.aeb()||I;this.FXa=b.lua()||I;this.qHb=b.O[4]||-1}else{this.ycc=-1;this.FXa=this.Ccc=I;this.qHb=-1}}function cFa(b,a){this.Hn=b;a&&this.oM(a);this.YAd=Zf();this.Ayb=k;this.Bf=this.oib()}function yD(b){if(b.uba)e(Error(".109"))}function dFa(b,a){eFa(b,a,h)}function eFa(b,a,c){if(a instanceof Wh){var d=a.Sb();rf(d);for(var f=0;f<d[u];f++){var g=d[f],j=a.Oa(g);c?b.Be(g,j):b.Ua(g,j)}}else Ef(a,function(n,s){c?this.Be(s,n):this.Ua(s,n)},b)}\r
17777 function fFa(b,a){BB[z](this,b,a)}function zD(b,a){if(b instanceof lD)b=fy(b).ud;cFa[z](this,b,a)}function AD(b){var a=b[uq]();pA[z](this,a);this.ia=b}function BD(b,a){AD[z](this,a);this.V=b}function CD(){var b=gFa;return!!b&&b.yYa()}function DD(){var b=gFa;return!!b&&b.oi()}function hFa(b,a){this.xe=b;this.YKc=!!a;this.UK=iFa(this);if(!this.UK){b=L&&!vg(Ij)?Lh:rj;this.P0=ih(this.xe,b,this.Rua,k,this);this.jwa=ba[Dc](G(this.Rua,this),100)}}function jFa(b){if(b.jwa){ba[Oma](b.jwa);b.jwa=i}}\r
17778 function iFa(b){var a=k;try{a=L?b.xe[Nb]==Hh:!!om(b.xe)[Lc]&&(!b.YKc||!!om(b.xe)[Lc][Tb])}catch(c){}return a}var kFa="ifload";function lFa(b,a,c){this.JV=[];this.Li=a;for(a=0;a<b[u];a++){var d=new hFa(b[a],c);if(d.hc())d.D();else{this.JV[p](d);ih(d,kFa,this)}}this.JV[u]||this.Li()}function mFa(b,a){this.MOa=b;this.Li=a}function nFa(b,a){for(var c=0;c<b.MOa[u];c++){var d=om(b.MOa[c])[Lc];if(d)Q(d,I)}Ia(b.MOa,0);b.Li(a)}var oFa=":5";\r
17779 function pFa(b,a,c,d){for(var f=[],g=0;g<a[u];g++){var j=b[ub](a[g]);if(j)f[p](j);else{bA(oFa,df(pFa,b,a,c),20);return}}(new mFa(f,c))[Rc](d)}function qFa(b){this.Zf=b;this.PIb=Eg(this.Zf)}function rFa(b,a){a=new qFa(a);b[kq](Pd,a);return a}function rD(b){return b.J(Pd)}function sD(b){return pm(b.PIb)}var ED="Aa";function sFa(b){Bx(this);this.V=b;this.lb=yy(this.V);this.Cb=sC(b);this.Z=Rz(b);jA(b,ED)||hA(b)[kq](ED,new tFa);_GM_ftcb||(_GM_ftcb=G(this.ODc,this))}\r
17780 function tFa(){this.sya=1;this.lna={};this.ROb=[]}function uFa(b,a,c,d,f,g){var j={IX:a,x1b:c,rhb:new ui,cq:f,wc:d};a=new ui;c&&Zw(a,function(){return c});Zw(a,function(){return j.rhb});Zw(a,d,g);b.ROb[p](j);a.ad(j);return j}function vFa(b,a){b=b.ROb;for(var c=0;c<b[u];++c){if(b[c].IX==a)return b[c];if(b[c].IX[Rq]){b[jd](c,1);--c}}return i}function FD(b){return b.V.J(ED)}var HD="xc";function wFa(b,a,c,d){var f=FD(b).sya++,g=[];g[p](HD);xFa(b,g);g[p](a);g[p](c);FD(b).lna[f]=zh(g);yFa(b,f,d)}\r
17781 var zFa="uri";function AFa(b,a,c){var d=FD(b).sya++,f=[c?zFa:Yd];xFa(b,f);FD(b).lna[d]=zh(f);return yFa(b,d,a,c)}function xFa(b,a){a[p](oAa(b.Z));a[p](Bya(b.lb))}var BFa="btop";function ID(){return(new Sh(aga)).ka(pd,BFa).ka(rd,tea)}var JD="cm",KD="fs",LD="am";function CFa(){return(new Sh(Rj)).ka(pd,JD).ka(KD,Hj).ka(Nj,Hj).ka(rd,ti).ka(LD,Fi)}var DFa="cmid";\r
17782 function yFa(b,a,c,d){var f=new Wh;if(d)for(var g,j=EFa.Sb(),n=0;n<j[u];n++){var s=j[n];if(g=d.J(s))f.set(EFa.J(s),g)}f.set(DFa,a);b.aa.LGa(f);if(MD(b)){a=Uh(ID(b),Qf(f));d=xB(b.V);c=zB(d,a,c?i:FFa(b));ND(b,c,JD,b.VNc)}else{a=Uh(CFa(),Qf(f[t]()));d=xB(b.V);return zB(d,a,c?i:FFa(b))}}var OD="cv",PD="th",QD="qt";\r
17783 function GFa(b,a,c,d,f){var g=new Wh;f=MD(b)&&!f?ID(b):(new Sh(Rj)).ka(pd,OD).ka(KD,Hj).ka(Nj,Hj).ka(rd,ti).ka(LD,Fi);if(!b.aa.B2a(a,c,d,g)){Pya(a,f.Of());f.ka(PD,c);d&&d[u]!=0&&f.ka(QD,HFa(d))}b.aa.LGa(g);Uh(f,Qf(g[t]()));return f}function IFa(b,a,c,d,f,g){a=GFa(b,a,c,d);c=xB(b.V);f=zB(c,a,f?i:FFa(b,g));MD(b)&&ND(b,f,OD,b.XNc)}var RD="cw";function JFa(){return(new Sh(Rj)).ka(pd,RD).ka(KD,Hj).ka(Nj,Hj).ka(rd,ti).ka(LD,Fi)}\r
17784 function FFa(b,a){var c;b=a?a:top;try{c=Mg(b)}catch(d){c=Mg()}b=l[rb](c[id]*0.8);return{width:l.min(c[ib],b),height:b}}function HFa(b){for(var a=[],c=0;c<b[u];c++){var d=b[c];a[p](d[0]);a[p](d[1]?1:I)}return a[kd](He)}function KFa(b){b=rD(b.V);return String(sD(b)[Ic])}function MD(b){return Jz(b.Z,988)&&Sfa.J()&&!L}function ND(b,a,c,d){if(a){var f=Zf();c=c?O.S()[pb](c,h):i;uFa(FD(b),a,c,d,f,b)}}var SD="pa";function LFa(b){var a=new sFa(b);b[kq](SD,a)}function TD(b){return b.J(SD)}\r
17785 function UD(b){this.Jmd=b}function MFa(){}var NFa="UTC";function OFa(b){if(typeof b==Qe){var a=new MFa;a.pZa=b;a.rhc=PFa(b);b=b;if(b==0)b=NFa;else{var c=[NFa,b<0?tl:Qd];b=l.abs(b);c[p](l[rb](b/60)%100);b%=60;b!=0&&c[p](xj,b);b=c[kd](I)}a.SAb=[b,b];a.D_a=[];return a}a=new MFa;a.rhc=b.id;a.pZa=-b.std_offset;a.SAb=b.names;a.D_a=b.transitions;return a}var QFa="GMT";function RFa(b){var a=[QFa];a[p](b<=0?tl:Qd);b=l.abs(b);a[p](nx(l[rb](b/60)%100,2),xj,nx(b%60,2));return a[kd](I)}var SFa="Etc/GMT";\r
17786 function PFa(b){if(b==0)return SFa;var a=[SFa,b<0?Qd:tl];b=l.abs(b);a[p](l[rb](b/60)%100);b%=60;b!=0&&a[p](xj,nx(b,2));return a[kd](I)}function TFa(b,a){a=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a[Ema](),a[Qma](),a.getUTCMinutes())/36E5;for(var c=0;c<b.D_a[u]&&a>=b.D_a[c];)c+=2;return c==0?0:b.D_a[c-1]}function UFa(b,a){b=-(b.pZa-TFa(b,a));a=[b<0?Qd:tl];b=l.abs(b);a[p](nx(l[rb](b/60)%100,2),nx(b%60,2));return a[kd](I)}function VD(b){this.ap=[];typeof b==Qe?this.RGa(b):this.bpa(b)}\r
17787 function WD(b,a,c){var d=c?(a[sr]()-(c.pZa-TFa(c,a)))*6E4:0,f=d?new Date(a[hc]()+d):a,g=f;if(c&&f[sr]()!=a[sr]()){d+=d>0?-86400000:864E5;g=new Date(a[hc]()+d)}d=[];for(var j=0;j<b.ap[u];++j){var n=b.ap[j][jb];1==b.ap[j][Zb]?d[p](VFa(b,n,a,f,g,c)):d[p](n)}return d[kd](I)}var XD="M",YD="S",ZD="L",aE="Q";\r
17788 function VFa(b,a,c,d,f,g){var j=a[u];switch(a[xb](0)){case XC:c=d[fr]()>0?1:0;return j>=4?bE.Lmc[c]:bE.xDb[c];case Wx:c=d[fr]();if(c<0)c=-c;return j==2?nx(c%100,2):String(c);case XD:a:{c=d[Cq]();switch(j){case 5:j=bE.ooc[c];break a;case 4:j=bE.xca[c];break a;case 3:j=bE.wEb[c];break a;default:j=nx(c+1,j);break a}}return j;case cD:return nx(f[xq]()||24,j);case YD:return(f[hc]()%1E3/1E3)[tma](l.min(3,j))[nc](2)+(j>3?nx(0,j-3):I);case eD:return b.Hbb(j,d);case Kd:j=f[xq]();return bE.MCb[j>=12&&j<24?\r
17789 1:0];case Yx:return nx(f[xq]()%12||12,j);case jD:return nx(f[xq]()%12,j);case aD:return nx(f[xq](),j);case dx:a:{c=d[Gq]();switch(j){case 5:j=bE.Tpc[c];break a;case 4:j=bE.Wpc[c];break a;case 3:j=bE.Vpc[c];break a;default:j=nx(c,1);break a}}return j;case ZD:a:{c=d[Cq]();switch(j){case 5:j=bE.Spc[c];break a;case 4:j=bE.Rpc[c];break a;case 3:j=bE.Upc[c];break a;default:j=nx(c+1,j);break a}}return j;case aE:c=l[rb](d[Cq]()/3);return j<4?bE.xEb[c]:bE.dEb[c];case Pd:return nx(d[iq](),j);case Xx:return nx(f[nr](),\r
17790 j);case ki:return nx(f[Oq](),j);case Bz:j=(j=g)||OFa(c[sr]());return j.rhc;case ey:b=(b=g)||OFa(c[sr]());return j<4?b.wNa(c):b.Nga(c);case cy:b=(b=g)||OFa(c[sr]());return j<4?UFa(b,c):RFa(b.pZa-TFa(b,c));default:return I}}function cE(b,a){return Vxa(b,a)||a[hc]()-b[hc]()<432E5?WD(WFa,b)[od]():Xxa(b,a)?WD(XFa,b):WD(YFa,b)}function dE(b){return b.J(dg)}function eE(b){SA[z](this,b);this.n4=ZFa}function ZFa(b){var a=b.wa;b=KA(b);var c=b[yaa],d=b[ib];Ja(b,sd);ka(b,I);a=a[xk];Ja(b,c);ka(b,d);return a}\r
17791 function aGa(b){bGa||(bGa=new VD(7));return WD(bGa,b)}function cGa(b){dGa||(dGa=new VD(0));return WD(dGa,b)}function eGa(b){var a=Zf();if(a<b)b=a;b=b;a=Zf();var c=l[rb]((a-b)/6E4),d=k;if(c<0){d=h;c*=-1}if(c<60)b=fGa(c,d,0);else{c=l[rb](c/60);if(c<24)b=fGa(c,d,1);else{c=(new Date)[sr]()*6E4;c=l[rb]((a+c)/864E5)-l[rb]((b+c)/864E5);if(d)c*=-1;b=c<14?fGa(c,d,2):I}}return b}function gGa(b,a,c){var d=b[hc](),f=eGa(d);if(f)f=xl+f+xh;return l[rb]((Zf()-d)/6E4)<1440?(a||aGa(b))+f:(c||cGa(b))+f}\r
17792 var hGa=" minute ago",iGa=" minutes ago",fE="in ",jGa=" minute",kGa=" minutes",lGa=" hour ago",mGa=" hours ago",nGa=" hour",oGa=" hours",pGa=" day ago",qGa=" days ago",rGa=" day",sGa=" days";\r
17793 function fGa(b,a,c){if(!a&&c==0){a=b+hGa;c=b+iGa;return b==1?a:c}else if(a&&c==0){a=fE+(b+jGa);c=fE+(b+kGa);return b==1?a:c}else if(!a&&c==1){a=b+lGa;c=b+mGa;return b==1?a:c}else if(a&&c==1){a=fE+(b+nGa);c=fE+(b+oGa);return b==1?a:c}else if(!a&&c==2){a=b+pGa;c=b+qGa;return b==1?a:c}else if(a&&c==2){a=fE+(b+rGa);c=fE+(b+sGa);return b==1?a:c}else return I}var tGa="<span ",gE='id="',hE='title="',uGa="idlink ",iE='class="',jE='" tabindex="0" role="link">';\r
17794 function kE(b,a){var c=a||new U;c[R](tGa,b.id?gE+b.id+Zd:I,b[Pk]?hE+b[Pk]+Zd:I,b.tA?uGa:I,iE,b[uc]?b[uc]:Rd,jE,b.Ab,gB);if(!a)return c[t]()}var vGa="mA",lE="ms",wGa='">&gt;</div><div id="',xGa='">&lt;</div></div><div id="',yGa="mB",mE='"></div>',nE='<div id="',zGa='" class="mv"></div>';function AGa(b,a){var c=a||new U;c[R](X,vGa,yl,b.IMc,S,lE,wGa,b.PMc,S,lE,xGa,b.phb,S,yGa,mE,nE+b.pMc+zGa);if(!a)return c[t]()}\r
17795 var BGa='<span class="my">',oE="</span> - ",CGa='<a class="e" href="',pE="<span>",DGa=' - <span class="mx">',EGa=' - <a class="',FGa="mz",qE='" href="',GGa="related articles",HGa="&nbsp;&raquo;</a>";function IGa(b,a){var c=a||new U;c[R](b[vq]?BGa+b[vq]+oE:I,b.PH?CGa+b.PH+W+b[Pk]+hB:b[Pk]?pE+b[Pk]+gB:I,b[qr]?pE+b[qr]+gB:I,b.Ob?DGa+b.Ob+gB:I);b.Utb&&c[R](EGa,FGa,qE,b.Utb,W,GGa,HGa);if(!a)return c[t]()}function JGa(b,a){var c=a||new U;kE({id:b.id,Ab:b.ke},c);if(!a)return c[t]()}var rE="fb";\r
17796 function sE(b){BD[z](this,b,new eE(b));this.Lh=TD(b);this.Z=Rz(b);this.jb=JB(b);this.xf=fy(b);this.xl=tE(b);this.Jc();this.H().w(this.xf.ud,Fx(rE),this.C1c)}var uE="mt";function KGa(b,a,c){var d=b.wN[u]-1;if(a>d)b.xec=h;else{var f=b.wN[a];if(!f)e(Error(".115"));if(f.yo){f.TDa=Zf();LGa(f.yo,kD,f.TDa,f.Ara?0:1);MGa(f.yo,kD,f.Ara?1:0)}if(f.Ara){(new Image).src=f.Ara;f.Ara=i}if(a>0!=(b.MJ!=0))m(b.bsa,a>0?lE:uE);Q(b.M9a,f.Bg);Q(b.Y4,f.QAb);b.MJ=a;b.xec=k;NGa(b)}if(c&&d-a<1)DD()?vE(b.B()):OGa(b)}\r
17797 var PGa="Loading clips";function OGa(b){var a=new zD(b.xf.ud,i);a.Ua(pd,rE);if(b.QFa&&(b.QFa.md()==wE||b.QFa.md()==xE))a.Ii(b.QFa.Bb());a.Se(PGa);if(!a.Na)a.Na={};a.Na.fn=h;b=QGa;if(!a.Na)a.Na={};a.Na.fv=b;a[Mb]()}var RGa="paddingLeft",SGa="paddingRight",yE="right",TGa="pixelRight";function NGa(b){if(L&&!vg(Ij)){var a=pw(b.Y4,Fm(b.Y4,RGa),sw,Xua),c=pw(b.Y4,Fm(b.Y4,SGa),yE,TGa);ka(b.M9a[x],b.Y4[Vk]-a-c)}}\r
17798 function UGa(b,a){if(a<=0)return i;b=Zf();if(l[rb]((b-a)/864E5)<7){var c=eGa(a);if(c)return c}return cE(new Date(a),new Date(b))}function VGa(b,a,c,d,f,g){this.mic=b;this.QAb=a;this.Bg=c;this.iBd=d;this.Ara=f;this.yo=g}function WGa(b){this.ee={};if(b)for(var a=0;a<b[u];a++)this.ee[XGa(this,b[a])]=i}function XGa(b,a){return a in YGa||String(a)[Xc](0)==32?J+a:a}function ZGa(b){this.O=b}var aHa="adsconfig",bHa="acfg";\r
17799 function cHa(b){Kx[z](this,aHa,Dx(Cx(b)));b=fy(b);this.Kk().w(b.ud,Fx(bHa),this.eYc)}function zE(b,a){BB[z](this,b,a)}function dHa(b){this.V=b;this.vv=dE(b)}var eHa="ad-";function AE(b){return new zE(EB,eHa+b,h,k)}function fHa(b){b.fjb=k}function BE(b,a,c,d,f){b.vv.jj(a,c+(d?Qd+d:I)+(f?Qd+f:I))}function CE(b){this.hsc=b}function gHa(b,a,c){this.Xv=b;this.id=a;this.ER=c;this.HJb={};this.yra={};this.vnb={};gHa[w].uA=0}var hHa="cv_n",iHa="cv_p",DE="tl",jHa="tl_i",kHa="tl_l",EE="sm",FE="rm";\r
17800 function GE(b){return b.ER==OD?b.Z2a?hHa:iHa:b.ER==DE?b.Xv.fjb?jHa:kHa:b.ER==EE?EE:FE}function lHa(b,a){if(b.uA!=1)e(Error(".117`"+b.uA));b.uA=2;BE(b.Xv,a?mHa:nHa,GE(b))}function oHa(b,a,c,d){var f=GE(b);c>0&&BE(b.Xv,pHa,f,a,c);d>0&&BE(b.Xv,qHa,f,a,d)}function LGa(b,a,c,d){var f=b.uA;if(!Ke(b.vnb[a])){if(f<3)e(Error(".119`"+b.uA));b.vnb[a]=d;b.uA=4;var g=GE(b);f!=4&&BE(b.Xv,rHa,g,i,c-b.qhc);d>0&&BE(b.Xv,sHa,g,a,d);b.yra[a]&&b.yra[a]>0&&BE(b.Xv,tHa,g,a,b.yra[a])}}\r
17801 function MGa(b,a,c){var d=b.uA;if(!Ke(b.yra[a])){if(d<3)e(Error(".120`"+d));b.yra[a]=c;Ke(b.vnb[a])&&c>0&&BE(b.Xv,tHa,GE(b),a,c)}}function uHa(b,a,c,d,f){c=a+Qd+c;if(!b.HJb[c]){if(b.uA!=4)e(Error(".121`"+b.uA));b.HJb[c]=h;if(d==IB)d=vHa;else if(d==Cz)d=wHa;else e(Error(".122"));BE(b.Xv,d,GE(b),a,f)}}function xHa(b,a,c){switch(b){case OD:return b+Qd+a+Qd+c;case DE:return b+Qd+c;default:return b}}var yHa="ak";\r
17802 function HE(b,a){this.na=void 0;Bx(this);this.ob=a||new Gh;this.ob.X1(1E4);this.TFa=new Array(1);this.Jca=-1;this.w2a=new Hf;this.UFa=[];this.Xv=new dHa(b);this.Y2a=new cHa(b);Dx(Cx(b)).ha(this.Y2a);this.xf=fy(b);this.KHb=new WGa;this.w(this.xf.ud,Fx(yHa),this.gYc);this.aa.tb(b)}function zHa(b){b=AHa(b);return b!=i&&b.ER==EE}function AHa(b){return b.TFa[b.Jca]}var IE="ad",BHa="aav";\r
17803 function CHa(b,a,c,d){var f=new Sh(Qj);a.uri=f;f.ka(pd,IE);f.ka(BHa,2);if(a.Z2a)f.ka(yHa,a.Z2a);else if(c&&d){f.ka(PD,c);Iy(d,f)}else return;b.aa.e4a(a);if(a.uA!=0)e(Error(".116`"+a.uA));a.uA=1;BE(a.Xv,DHa,GE(a));b.ob.Eb()?EHa(b,a):b.scc(a)}function EHa(b,a){b.UFa[p](a.id)}function JE(b,a){a=b.w2a.J(a);return Ke(a)?b.TFa[a]:i}var FHa="!";\r
17804 function GHa(b,a,c){b.Jca=(b.Jca+1)%1;var d=b.TFa[b.Jca];if(d&&!Mf(d.id,FHa)){d.X0a&&b.ob[wc]();b.w2a[Pb](d.id);jf(b.UFa,d.id)}if(d=JE(b,a)){d.id=FHa+d.id;jf(b.UFa,a)}c=new gHa(b.Xv,a,c);b.TFa[b.Jca]=c;b.w2a.set(a,b.Jca);return c}function tE(b){return b.J(aD)}function HHa(){this.Lya=this.mxa=0;this.ob=new Gh;this.Q=new kn(this)}var IHa="exception",JHa="ex-name",KHa="ex-message",LHa="ex-",MHa="*** ",NHa=" ***";\r
17805 function OHa(b,a,c){var d={},f=Ye(a);b.Wva(d,IHa,b.tRb(a),c);if(f){d[JHa]=Xe;d[KHa]=a}else for(c=0;c<PHa[u];c++){f=PHa[c];if(f in a){var g=LHa+f;try{d[g]=a[f]}catch(j){d[g]=MHa+j+NHa}}}b.X0b(d);return d}function QHa(){this.eO=[];this.hDa=[]}function RHa(b,a,c){za(this,b);this.sR=a;Sp(this,c||b)}function KE(b,a,c){c=c||Zf();var d=SHa[a];a=new RHa(a.lC(),c,d);THa(b,a,b.eO);THa(b,a,b.hDa)}function UHa(b,a,c,d){c=Ke(c)?c:Zf();THa(b,new RHa(a,c,d),b.eO)}\r
17806 function THa(b,a,c){for(b=c[u]-1;b>=0;b--)if(a.sR>=c[b].sR)break;km(c,a,b+1)}function LE(b,a,c,d){this.xqa=b;this.C3a=a;this.V=c;this.mg=d;this.fFb=[];this.TR=new QHa}var VHa=".123`";function WHa(b,a,c){if(a[u]>c){ME.yI(Error(VHa+a));return k}return h}var NE="sv",XHa="ev",YHa="lo",OE="pf",PE="pn",QE="ps",RE="r",SE="rf",TE="ra",UE="rn",VE="rs",ZHa="mn",WE="mg",aIa="/S:";\r
17807 function bIa(b){if(!b.bod)return i;var a;var c=b.hDa;a=b.Mu;if(c[u]){for(var d=[],f=0;f<c[u];f++){var g=c[f];d[p](g[Zb]);d[p](ei);d[p](g.sR-a);d[p](wj)}d.pop();a=d[kd](I)}else a=i;d=nea&&nea!=I&&b.IPc?[nea,b.Mu][kd](Md):i;f=b.jDa;g=b.kDa;c=new Hf;c.set(Bz,2);c.set(Kd,b.mg.lC());c.set(NE,qCa(b.Gld));c.set(XHa,qCa(b.WCc));c.set(IB,b.BAb);c.set(Rd,a);c.set(YHa,d);c.set(oy,f.Xyb[u]);c.set(OE,f.xfa);c.set(SD,f.PG);c.set(PE,f.JA);c.set(QE,f.jz);c.set(RE,g.Xyb[u]);c.set(SE,g.xfa);c.set(TE,g.PG);c.set(UE,\r
17808 g.JA);c.set(VE,g.jz);c.set(ZHa,cIa(b,b.Uxa));c.set(WE,cIa(b,b.amb));b=[aIa];a=c.Sb();for(d=0;d<a[u];d++){f=a[d];if(g=c.J(f)){b[p](f);b[p](ei);b[p](Qf(g));b[p](Sf)}}b.pop();return b[kd](I)}function cIa(b,a){if(!a||a.Nb()==0)return i;b=[];for(var c=a.Sb(),d=0;d<c[u];d++){var f=c[d],g=a.J(f);b[p](f);b[p](xj);b[p](Qf(g));b[p](wj)}b.pop();return b[kd](I)}\r
17809 function dIa(b,a){var c=b.vgb();this.eDd=b.C0-(c?0:1);if(c){this.rh=0;this.PG=b.Mda-b.Esa}else{this.rh=b.jm()?1:2;c=b.NQa;this.PG=c-b.Esa;c=b.Gsa-c;var d=b.vNa();d=d==-1?0:d;if(d>c)d=c;this.jz=d;this.JA=c-this.jz}a=this.A2b=l.max(a-b.Esa,0);if(a>0){c=l.min(a,this.PG);this.PG-=c;a-=c;c=l.min(a,this.JA);this.JA-=c;a-=c;c=l.min(a,this.jz);this.jz-=c;a-=c;if(a>0)this.A2b-=a}this.xEd=this.PG+this.JA+this.jz;this.qHa=b.zcb().qHb}function eIa(){this.Xyb=[]}\r
17810 function fIa(b,a,c){this.Li=b;this.na=a;if(!c){c=new Sh("//www.google.com/images/cleardot.gif");bi(c)}this.Bf=c}var gIa="onLine";function hIa(b){b.J3a++;if(gIa in bp&&!bp[uma])Dh(G(b.tza,b,k),0);else{b.zr=new Image;cp(b.zr,G(b.zTa,b));oa(b.zr,G(b.XP,b));oma(b.zr,G(b.d2c,b));b.QI=Dh(b.e2c,b.Mba,b);b.zr.src=String(b.Bf)}}function iIa(b){if(b.zr){cp(b.zr,i);oa(b.zr,i);oma(b.zr,i);b.zr=i}if(b.QI){Eh(b.QI);b.QI=i}if(b.U0){Eh(b.U0);b.U0=i}}\r
17811 function jIa(){this.Fv=new fIa(this.Wpb,this);this.Kwc=l[kb](51E3)+l[kb](18E3*l[Tc]())}var XE="images/cleardot.gif";function kIa(b,a){if((a?a:Zf())-b.zZb>b.Kwc){if(!b.Fv.Rwa()){a=new Sh(XE);bi(a);b.Fv.sYa(a);b.Fv[Rc]()}return h}return k}function YE(){this.zu=new fC;this.MAa=[];lIa(this,1E3);this.Loa=new Hf;this.pEa=[];this.Q=new kn}\r
17812 function mIa(b,a){var c={};c.Uba=G(b.Hod,b);c.bQ=G(b.OTa,b);c.WH=G(b.WH,b);c.UIc=G(b.qfb,b);c.cfb=G(b.cIc,b);c.osc=G(b.ZFb,b);c.QBd=G(b.qGc,b);c.RBd=G(b.rGc,b);c.Acd=G(b.uVa,b);c.uFb=G(b.D2a,b);a.oM(c);b.pEa[p](a)}function lIa(b,a,c){if(c)b.yya=a;else{if(a<1E3)a=1E3;else if(a>3E5)a=3E5;b.yya=l[kb](0.85*a)+l[kb](0.3*a*l[Tc]())}}function nIa(b){var a=b.zu.Nb();b.ld&&a++;return a}function oIa(b,a,c){b.Loa.set(a,c)}var ZE="ACTIVE";\r
17813 function pIa(b){b.ld.uc();b.N8=0;b.QSa=-1;var a=b.ld,c=Zf();if(a.Esa==-1)a.Esa=c;a.NQa=c;a.C0++;try{b.EG(ZE);b.GAb()}catch(d){e(d)}}var qIa=";4";function rIa(b){try{b.ld.Gsa=Zf()}catch(a){rg(tg,qIa,a);b.Vka=a}}var sIa=";5";function tIa(b,a){try{b.ld.wWa=new bFa(new aFa(a))}catch(c){rg(tg,sIa,c);b.Vka=c}}function uIa(b,a){b.xOb=a}var vIa="RETRY_TIMER";function wIa(b){if(b.qa==vIa){if(b.Lv){cA(b.Lv);b.Lv=0}pIa(b)}}function xIa(b){if(b.Mw){cA(b.Mw);b.Mw=i}}function yIa(b){b.NCc=h}var zIa="nrt",AIa="rhma";\r
17814 function BIa(b){var a=b.ld;a.Ua(zIa,a.C0);b=b.YR.wRb();b!=i&&a.Be(AIa,b)}function CIa(b,a){N[z](this,b);this.f0a=a}function DIa(b){this.V=b;this.rPb=k;this.Q=new kn(this);this.OUa=[];this.xf=fy(b);this.Q.w(this.xf.ud,XD,this.VJc);this.Q.w(VC(b),cC,this.gqb)}function aF(b){return b.J(ii)}function EIa(b){if(b.Csa){cA(b.Csa);b.Csa=i}}function FIa(b){var a=b.xf.ud.P5();if(a&&b.qia()&&b.ukb!=a){b.ukb=a;b.Bdd(a)}}var GIa="7.0";\r
17815 function HIa(b){if(b.OUa[u]!=0){var a=mi(Uj,I);a=a;for(var c=b.OUa,d=c[u],f=3950-a[u],g=0;g<d&&f>=c[g][u];){f-=c[g][u];g++}a+=pf(c,0,g)[kd](I);a=a;ax(Uj,a,86400);if(L&&bg(wg,GIa)<0){for(c=[];!mi(Uj,void 0);){d=a[u]<100?0:a[Sc](aIa,a[u]-100);if(d<1)break;c[p](a[Zc](d));a=a[Zc](0,d);ax(Uj,a,86400)}df(pf,b.OUa,0,0)[cd](i,c)}}}function IIa(){this.zCa=new Hf;this.Hxb={}}function JIa(b,a,c){this.jna=b;this.key=a;this.Ied=c||k}function bF(b){this.Q=new kn(this);this.JU=[];this.eBa=b.J(Ky)}\r
17816 function KIa(b){this.na=new kn(this);b&&LIa(this,b)}function LIa(b,a){b.na.w(a,ae,b.Y8c);b.na.w(a,Xd,b.X8c)}function cF(b){pA[z](this,b)}function dF(b){pA[z](this,b)}function eF(b,a){b.Lca(a,b.qj())}function fF(b,a){pA[z](this,b);this.yjc=a}function gF(b,a){fF[z](this,b,Wx);this.Igc=!!a}function MIa(b,a,c,d,f){this.id=b;this.caption=a;this.iMb=c;this.foa=d;this.Fbc=f}function NIa(b){this.jAa={};this.n8b={};this.V=b;this.m8b={}}function hF(b){return b.J(Wx)}var OIa="R";\r
17817 function PIa(b,a){b.jAa[a.id]=a;for(var c=0;c<a.foa[u];c++)b.n8b[a.foa[c]]=a;b[r](OIa)}function QIa(b,a){return b.jAa[a]}var RIa="lz",SIa="<span>Build label: ",TIa="</span> &nbsp; ",UIa="<span>Compile Mode: ",iF="</span></div>";function VIa(b,a){var c=a||new U;c[R](X,RIa,W,b.dIb?SIa+b.dIb+(b.bIb>0?gg+b.bIb+xh:I)+TIa:I,UIa,b.UQc,iF);if(!a)return c[t]()}function WIa(){this.Q=new kn(this)}function XIa(b,a){N[z](this,b);this.Pg=a}function jF(b){return b.J(eo)}\r
17818 function kF(b,a){uf(YIa,function(c){this.Q.w(a,c,this.lka)},b)}function ZIa(b,a){uf(YIa,function(c){this.Q.hb(a,c,this.lka)},b)}function lF(b){pB[z](this,b,36,20);this.Z=Rz(b);this.XA=new Hf}function mF(b){this.Db=b;this.Mb=jF(b);this.dX=Xj;this.pQ=this.dX.x4;this.xf=fy(b)}function aJa(b){var a=Mx().Gn(48,b);b[kq](Yj,a);return a}function nF(b){return b.J(Yj)}function bJa(b){b.dX[pb](cJa(b,b.pQ),G(b.N7c,b))}var oF="ss";function cJa(b,a){return(new Sh(aga)).ka(pd,oF).ka(rd,a).ka(LD,Fi)}\r
17819 function pF(b,a,c){this.dE=b?b.cb():ea;this.ey=a||I;this.kzb=c}var dJa="nowrap";function qF(b){if(!b.wg){b.wg=b.dE[Qb](T);m(b.wg,b.ey);ema(b.wg[x],dJa);rp(b.wg[x],GA);if(b.kzb)for(var a in b.kzb)b.wg[x][a]=b.kzb[a];Fa(b.wg[x],yd);ka(b.wg[x],HA);Ua(b.wg[x],I);b.dE[Lc][o](b.wg)}return b.wg}\r
17820 function eJa(b,a,c,d,f,g){if(b&&a){var j=a;a=new pF(c,f,g);var n=qF(a);ka(n[x],j);j=n[vc]||n[xk];a.D();a=j;j=b=Ew(b);n=b[u];c=new pF(c,f,g);f=qF(c);c.gp(j);for(g=f[bl]||f[vc];g>a&&n>0;){j=b[nc](0,--n)+(d?lg:I);c.gp(j);g=f[bl]||f[vc]}c.D();return Wf(j)}else return b}function fJa(b,a,c,d){a=new pF(a,c,d);a.gp(b);b=qF(a);b=b[bl]||b[vc];a.D();return b}function rF(b,a){fF[z](this,b,vA);this.lmd=!!a}function sF(b){gF[z](this,b)}function gJa(b,a,c){Ta(this,b);ama(this,a);this.yn=c}\r
17821 function hJa(b){if(!b.Ohc)b.Ohc=b.b()[Tb];return b.Ohc}function iJa(b){if(!b.zAb)b.zAb=hJa(b)[x];return b.zAb}function jJa(b){if(!b.wAb)b.wAb=hJa(b)[Tb];return b.wAb}function kJa(b){if(!b.vAb)b.vAb=jJa(b)[x];return b.vAb}function lJa(b){if(!b.yAb)b.yAb=hJa(b)[cc][1];return b.yAb}function mJa(b){if(!b.xAb)b.xAb=lJa(b)[x];return b.xAb}function nJa(b){if(!b.uAb)b.uAb=hJa(b)[cc][2];return b.uAb}function oJa(b){if(!b.Nhc)b.Nhc=nJa(b)[x];return b.Nhc}\r
17822 function pJa(b){if(!b.Okb)b.Okb=b.b()[cc][1];return b.Okb}function qJa(b){if(!b.bvb)b.bvb=pJa(b)[Tb];return b.bvb}function rJa(b){if(!b.U6a)b.U6a=qJa(b)[Tb];return b.U6a}function sJa(b){if(!b.R6a)b.R6a=rJa(b)[Tb];return b.R6a}function tJa(b){if(!b.QHb)b.QHb=b.b()[cc][3];return b.QHb}function uJa(b){if(!b.C4a)b.C4a=tJa(b)[x];return b.C4a}function vJa(b){if(!b.y4a)b.y4a=tJa(b)[Tb];return b.y4a}function wJa(b){if(!b.x4a)b.x4a=vJa(b)[x];return b.x4a}\r
17823 function xJa(b){if(!b.B4a)b.B4a=tJa(b)[cc][1];return b.B4a}function yJa(b){if(!b.A4a)b.A4a=xJa(b)[x];return b.A4a}function zJa(b){if(!b.w4a)b.w4a=tJa(b)[cc][2];return b.w4a}function AJa(b){if(!b.OHb)b.OHb=zJa(b)[x];return b.OHb}\r
17824 var BJa="padding:",tF="px ",CJa="px;margin:",DJa="px 0px",EJa='" style="height:',FJa=";display:",GJa='dir="ltr"',uF='><div class="',HJa="ph p",vF='" style="width:',wF='"></div><div class="',IJa="ph q",JJa="l o",xF='"></div></div><div class="',KJa="l m",LJa="l n",MJa='" style="margin-left:',yF='" style="',NJa="diLZtc",OJa='"></div></div></div></div><div class="',zF="dJ",PJa="ph i",QJa="ph j",RJa="l h",AF='"></div></div>';\r
17825 function SJa(b,a,c,d,f,g,j,n){f=[BJa,l.max(0,f),tF,l.max(0,g),tF,l.max(0,j),tF,l.max(0,n),CJa,l.min(0,f),tF,a+l.min(0,g),tF,l.min(0,j),DJa][kd](I);b={gYb:k,borderTop:NA(b),borderBottom:NA(c),borderLeft:NA(d),borderRight:NA(a),zBc:b==0?xd:I,uBc:c==0?xd:I,Oyc:f,yad:d+l.min(0,n)+Jm};a=new U;a[R](X,Dz,EJa,b.borderTop,FJa,b.zBc,Vf,b.gYb?GJa:I,uF,HJa,vF,b.borderLeft,wF,IJa,vF,b.borderRight,wF,JJa,xF,KJa,wl,LJa,MJa,b.yad,wl,cD,yF,b.Oyc,wl,NJa,OJa,zF,wF,Dz,EJa,b.borderBottom,FJa,b.uBc,Vf,b.gYb?GJa:I,uF,PJa,\r
17826 vF,b.borderLeft,wF,QJa,vF,b.borderRight,wF,RJa,AF);b=a[t]();return b}function TJa(b,a,c,d,f){if(!(b.AG==a&&b.Zu==d&&b.zG==c&&b.yG==f))if(b.wa){yA++;try{if(b.zG!=c||b.yG!=f)b.Ui(vA);if(b.AG!=a||b.Zu!=d)b.Ui(Wx);b.AG=a;b.zG=c;b.Zu=d;b.yG=f;b.JHa=h}finally{zA()}}else{b.AG=a;b.zG=c;b.Zu=d;b.yG=f}}\r
17827 function UJa(b,a,c,d,f){if(!(b.CL==a&&b.AL==d&&b.paddingRight==c&&b.BL==f))if(b.wa){yA++;try{if(b.gQ!=c||b.BL!=f)b.Ui(vA);if(b.CL!=a||b.AL!=d)b.Ui(Wx);b.CL=a;b.gQ=c;b.AL=d;b.BL=f;b.JHa=h}finally{zA()}}else{b.CL=a;b.gQ=c;b.AL=d;b.BL=f}}\r
17828 function VJa(b){if(b.JHa){var a=b.W8b,c=b.V8b,d=b.T8b,f=b.U8b,g=b.e9b,j=b.d9b,n=b.b9b,s=b.c9b,v=!Ke(a),C=b.W8b=b.AG,M=b.V8b=b.zG,Y=b.T8b=b.Zu,ha=b.U8b=b.yG,tb=b.e9b=b.CL,zc=b.d9b=b.gQ,qb=b.b9b=b.AL,nd=b.c9b=b.BL;if(v||C!=a){if(a==0)Ua(iJa(b),I);if(C==0)Ua(iJa(b),xd);else Wa(iJa(b),NA(C))}if(v||Y!=d){if(d==0)Ua(uJa(b),I);if(Y==0)Ua(uJa(b),xd);else Wa(uJa(b),NA(Y))}if(v||M!=c){a=NA(M);ka(mJa(b),a);ka(yJa(b),a)}if(v||ha!=f){a=NA(ha);ka(kJa(b),a);ka(wJa(b),a)}if(!b.T6a)b.T6a=rJa(b)[x];a=b.T6a;if(v||tb!=\r
17829 g&&(tb>0||g>0))a.paddingTop=l.max(0,tb)+Jm;if(v||zc!=j&&(zc>0||j>0))a.paddingRight=l.max(0,zc)+Jm;if(v||qb!=n&&(qb>0||n>0))a.paddingBottom=l.max(0,qb)+Jm;if(v||nd!=s&&(nd>0||s>0))dma(a,l.max(0,nd)+Jm);if(v||tb!=g&&(tb<0||g<0))Zla(a,l.min(0,tb)+Jm);if(v||M+l.min(0,zc)!=c+l.min(0,j))Np(a,M+l.min(0,zc)+Jm);if(v||qb!=n&&(qb<0||n<0))a.marginBottom=l.min(0,qb)+Jm;if(v||ha+l.min(0,nd)!=f+l.min(0,s)){if(!b.avb)b.avb=qJa(b)[x];lp(b.avb,ha+l.min(0,nd)+Jm)}if(L&&!vg(Ij)){if(v&&ha<3||ha!=f&&(ha<3||f<3))Np(kJa(b),\r
17830 Np(wJa(b),l.max(-ha,-3)+Jm));if(v&&M<3||M!=c&&(M<3||c<3))lp(mJa(b),lp(yJa(b),l.max(-M,-3)+Jm));if(v||ha!=f&&(ha>0&&ha<=3||f>0&&f<=3))lp(oJa(b),lp(AJa(b),(ha>3?0:ha)+Jm));if(v||M!=c&&(M>0&&M<=3||c>0&&c<=3))Np(oJa(b),Np(AJa(b),(M>3?0:M)+Jm))}b.JHa=k}}function BF(b,a){AD[z](this,new sF(b));this.ia.JXa(CF);this.yJa=Ke(a)?a:15}function DF(b,a,c){var d;if(c==0)d=h;else{d=a[Ck]==a[rl]||!(c&1||c&4)||!(c&2||c&8);d=(a.top==a[fl]||!(c&1||c&2)||!(c&4||c&8))&&d}if(d){b.ia.JXa(a);b.yJa=c}}\r
17831 function WJa(){this.Zma=new Swa(5)}function XJa(b){var a=0,c=b.Zma.Nb();if(c){for(var d=0;d<c;d++)a+=b.Zma.J(d);return a/c}return 0}function YJa(b){this.V=b;this.J3=new WJa;this.Fv=new jIa}var ZJa="Oops... the system encountered a problem (#999) - Retrying in 999s...";function aKa(b,a){b=a||new U;b[R](ZJa);if(!a)return b[t]()}var bKa="Retry Now.  Learn more.";function cKa(b,a){b=a||new U;b[R](bKa);if(!a)return b[t]()}\r
17832 var dKa="vZ",eKa="v5",fKa="v4",EF='"><span class="',gKa="v1",hKa="Oops&hellip; the system encountered a problem (#",iKa="Oops&hellip; the system encountered a problem",jKa="Retrying in ",kKa="&hellip;",lKa="Retrying now&hellip;",Z="</div>";function mKa(b,a){var c=a||new U;c[R](X,dKa,J,eKa,J,fKa,EF,gKa,W);b.NG?c[R](hKa+(b.NG+xh)):c[R](iKa);c[R](oE);b.xla?c[R](jKa+(b.xla+kKa)):c[R](lKa);c[R](Z);if(!a)return c[t]()}var nKa="Unable to reach ",oKa=". Please check your internet connection. Connecting in 999s...";\r
17833 function pKa(b,a){b=a||new U;b[R](nKa+(Ji+oKa));if(!a)return b[t]()}var qKa="Try Now.";function rKa(b,a){b=a||new U;b[R](qKa);if(!a)return b[t]()}var sKa='<span class="v1">',tKa=".</span> ",uKa="Please check your internet connection.",vKa="Connecting in ",wKa="Trying to reconnect now&hellip;";function xKa(b,a){var c=a||new U;c[R](X,dKa,J,eKa,J,fKa,W,sKa+(nKa+(Ji+tKa)),uKa,J);b.xla?c[R](vKa+(b.xla+kKa)):c[R](wKa);c[R](Z);if(!a)return c[t]()}var yKa="v0",zKa="v2 e",AKa="Retry now",BKa='  <a target="_blank" href="';\r
17834 function CKa(b,a){var c=a||new U;c[R](X,yKa,W);b.xla&&kE({id:b.hic,className:zKa,Ab:AKa},c);b.io&&c[R](BKa,b.io,W,eB,hB);c[R](Z);if(!a)return c[t]()}var DKa="Try now";function EKa(b,a){var c=a||new U;b.xla&&kE({id:b.hic,className:zKa,Ab:DKa},c);if(!a)return c[t]()}var FKa="v3";function GKa(b,a){var c=a||new U;c[R](X,dKa,J,FKa,EF,gKa,W,b.ke,iF);if(!a)return c[t]()}var HKa="vX";\r
17835 function IKa(b,a){BD[z](this,b,new BF(b,12));this.mQc=a;this.Y=qC(b).W();this.Lb=Tz(b);this.cnb=b.J(Cz);this.fc=dC(b);K(this.ia.b(),HKa);a=new rF(b);a.Qr(-1);this.ia.so(a);var c=G(this.nUc,this);this.EP=new eE(b);this.EP.Qr(-1);this.EP.n4=c;this.EP.qe();this.v1=new eE(b);this.v1.Qr(-1);this.v1.n4=c;this.v1.qe();eF(a,[this.EP,this.v1]);this.H().w(a.b(),P,this.He);(this.Fv=this.cnb.Fv)&&this.H().w(this.Fv,ZD,this.Wpb);this.Ck=VC(b);this.H().w(this.Ck,cC,this.gqb);this.qc(k);this.xf=fy(b)}\r
17836 function JKa(b){b.Pa()}var KKa=":9";function LKa(b,a,c){if(b.hca){if(c+a<b.FSa){cA(b.hca);b.hca=bA(KKa,b.R6b,a,b);b.FSa=c+a}}else{b.hca=bA(KKa,b.R6b,a,b);b.FSa=c+a}}var FF="OK",MKa="SLOW";function NKa(b,a){var c=b.xf.ud.jNa(),d;if(c[u]==0)d=FF;else{d=6E4;var f=15E3;if(b.qa==MKa){d/=2;f/=2}for(var g=FF,j=0;j<c[u];j++){var n=c[j];if(a-n.Mu>=(n.gia?d:f))g=MKa}d=g}b.EG(d,a);c[u]&&LKa(b,1E4,a);return d!=FF}\r
17837 function OKa(b){for(var a=i,c=b.Ck.sK(),d=0;d<c[u];d++)if(c[d].ts()<4){var f=c[d],g;if(f.B)g=jA(f.B(),cC);else{var j=f.rv();if(j&&j.B)g=jA(j.B(),cC)}if(!g&&b.mQc||b.fc==g){a=f;break}}return a}var PKa="LOADING";function QKa(b,a){var c=OKa(b);if(c==i)return k;b.Iaa=c.kua();b.p_b=c.Nf();if(b.p_b){b.EG(PKa,a);return h}return k}function RKa(b){var a={ke:b.p_b};Q(b.EP.b(),GKa(a));Q(b.v1.b(),I)}function SKa(b){var a={ke:b.Iaa};Q(b.EP.b(),GKa(a));Q(b.v1.b(),I)}var TKa=":10";\r
17838 function UKa(b){this.na=void 0;this.AAa=I;this.Sh=[];this.fc=dC(b);this.ab=new aA(TKa,2E3);this.w(this.ab,yj,this.MWc)}function VKa(b,a){this.id=b;this.ke=a}function WKa(b,a){ik(eC(b.fc)[yc],a)}var GF="sa";function XKa(b){return b.J(GF)}function HF(b){this.Bc=b}var IF="C",YKa="vY",ZKa="Error ",JF="V",KF="ba",aLa="beforeaction",LF="ga",MF="lc";\r
17839 function NF(b){Bx(this);BD[z](this,b,new gF(b));b[kq](IF,this,h);this.XF=XKa(b);this.Aa=Dx(Cx(b));this.xB=sC(b);this.jNb=qC(b);this.xl=tE(b);this.Aad=qC(iA(b));this.xf=fy(b);this.Bd=rD(b);this.qUa=rD(iA(b));this.dda=VC(b);this.H().w(jF(b),Cz,this.Bob);this.H().w(this.dda,cC,this.fqb);this.Xdc=k;this.mw=aF(this.B());this.C_a=new KIa(this.mw);this.xB.lf();var a=this.xf.ud,c=iA(this.B()),d=qC(c).W().ba(T,{className:YKa});this.zcc=d;this.qUa.Zf[o](d);var f=this.Aad.Fp();f=new xA(c,new EA(pm(f)),ZAa());\r
17840 f.B_a=ZKa;d[o](f.b());f.ma();ZC(dC(c).Ec(),f);var g=dC(this.B()).Ec()==UC(RC(this.B()));this.did=d=new IKa(c,g);d.Qr(-1);g&&uIa(a,d);a=new rF(c);a.ha(new cF(c));a.ha(d);a.ha(new cF(c));f.so(a);this.H().w(d,JF,this.Pic);this.Pic();this.JD();this.H().w(this,KF,this.uka);this.H().w(this,aLa,this.JYc);this.H().w(b.Ya(),jD,this.qTa);this.H().w(this.xf.ud,Gx(wo),this.Wdc);Fh&&this.H().w(this,LF,this.s0c);this.H().w(this.xf.ud,Fx(MF),this.Epb);O.S().Lr(Kh,G(this.FTa,this));c=hF(b);a={mail:100,contacts:90};\r
17841 for(var j in a)c.m8b[j]=a[j];j=new bF(b);b[kq](oy,j);try{yA++;Mx().Kh(5,this)}finally{zA()}}function bLa(b,a){if(!b.w8a){b.w8a=new gF(b.B());b.ia.ha(b.w8a)}b.w8a.ha(a)}function cLa(b){b=new eE(b.B());Q(b.b(),VIa({dIb:Ei,bIb:gea,UQc:Wla}));return b}function dLa(b){var a=OF.J();a=tm(a);b=Rz(b)[hq](Pz);for(var c=0;c<b[u];c++)a[b[c][1]]=b[c][0];return a}function PF(b){for(;b;){if(b instanceof NF)return b;b=b.rv()}return i}function QF(b,a,c){(b=PF(b))&&b.Ox(a,c)}function eLa(b){aF(b.B()).s5a()}\r
17842 var RF="W";function SF(b,a){N[z](this,RF,b);Gp(this,a)}function TF(b,a,c,d){N[z](this,a,b);this.q9=Ke(c)?c:i;this.Qza=Ke(d)?d:i}var UF="ca";function fLa(b,a,c,d,f,g,j){N[z](this,UF,b);jaa(this,a);this.vb=c;ok(this,d);this.czc=f;this.jCd=!!g;this.HPb=!!j}function gLa(b){var a=[];hLa(b,a,iLa);return a[kd](Sf)}var jLa="fieldset",VF="file",kLa="select-multiple",WF="image",lLa=".x",mLa=".y";\r
17843 function hLa(b,a,c){for(var d=b.elements,f,g=0;f=d[g];g++)if(!(f[Uk]||f[ed][od]()==jLa)){var j=f[ec];switch(f[Zb][od]()){case VF:case oj:case Gka:case jo:break;case kLa:f=nLa(f);if(f!=i)for(var n,s=0;n=f[s];s++)c(a,j,n);break;default:n=nLa(f);n!=i&&c(a,j,n)}}d=b[ic](zm);for(g=0;f=d[g];g++)if(f[sk]==b&&f[Zb][od]()==WF){j=f[ec];c(a,j,f[q]);c(a,j+lLa,Ah);c(a,j+mLa,Ah)}}function iLa(b,a,c){b[p](aa(a)+ei+aa(c))}\r
17844 function oLa(b){b=b.elements;for(var a,c=0;a=b[c];c++)if(!a[Uk]&&a[Zb]&&a[Zb][od]()==VF)return h;return k}var XF="checkbox",pLa="radio",qLa="select-one";function nLa(b){var a=b[Zb];if(!Ke(a))return i;switch(a[od]()){case XF:case pLa:return b[Mq]?b[q]:i;case qLa:a=b[Hq];return a>=0?b[br][a][q]:i;case kLa:a=[];for(var c,d=0;c=b[br][d];d++)c[gq]&&a[p](c[q]);return a[u]?a:i;default:return Ke(b[q])?b[q]:i}}function YF(){}\r
17845 function rLa(b,a,c){switch(b){case 1:case 3:return 8;case 4:return a;case 7:return 100;case 6:return c||0;case 8:return 101;case 5:return 9;default:return 102}}function ZF(){this.ob=new Gh;ih(this.ob,Hh,this.cva,k,this);ih(this.ob,Ih,this.YUb,k,this)}function sLa(b,a){if(b=a.RC){var c=new U;Ef(b,function(d,f){c[R](Qf(f),ei,Qf(d),Sf)});return c[t]()}else if(a.QC)return gLa(a.QC);return I}function tLa(b){this.V=b;this.iQ=new fC;this.wVa=new fC}var uLa="STARTED",vLa="drqchanged";\r
17846 function wLa(b){if(!b.iQ.nd())if(!b.tWb)if(!b.uRa){if(b.xt){var a=b.xt.xc();if(a==YBa)b.xt=i;else if(a==VBa&&!b.xt.Eg())b.xt=i;else return}b.tWb=h;try{for(;!b.xt&&!b.iQ.nd();){var c=b.iQ.ly();if(c.h2a){b.xt=c;c.Eg()||XBa(c);UBa(c,new nB(i,100));aCa(c)}else{c.qa=uLa;QBa(PBa(c.V)).a6c(c);TBa(c,IB);lB(c,1);var d=new zD(c.Hn);c.Ja(d);b.xt=c;d[Mb]();var f=b.xt;f.Lc=d;f.Eg()||XBa(f)}}}finally{b.tWb=k}b[r](vLa)}}function aG(b){this.Cu=b;this.ela=new Hf}function xLa(b,a){b.ela[Pb](a.Je())}var yLa="INVALID";\r
17847 function zLa(b,a){for(var c=Zf(),d=b.ela.Sb(),f=0;f<d[u];f++){var g=d[f],j=b.ela.J(g),n=k,s=c-j.Hkb;if(a)n=h;else if(j.zMa()==yLa&&s>=ALa)n=h;else if(s>=BLa)n=h;if(n){b.ela[Pb](g);j.Pc||j.D()}}}function bG(){this.HD=0;this.GEa=new Hf;this.bFa={}}function CLa(b,a,c){for(var d=0;a!=i;){if(!(a.hC()&32)){d==0&&DLa(b,a.Je(),c);d==1&&DLa(b,a.pua(),c);d>0&&DLa(b,a.SQb(),c)}a=a.ac();d++}}function DLa(b,a,c){if(b.HD>0)Pwa(b,a,k)&&ELa(b,a,c);else jx(b,a,k,new FLa(a,[c],b.bFa))}\r
17848 function ELa(b,a,c){var d=b.GEa.J(a);d?hf(d,c):b.GEa.set(a,[c])}function FLa(b,a,c){za(this,b);this.dG=a;this.aJ=c||i}function KLa(b,a){hy[z](this,b,i);this.g1=a;this.Fh=new bG;this.YY=[]}function LLa(b){this.V=b;this.jb=JB(b);this.E9=hF(b);this.Na={}}function MLa(){}var cG="Ba";function NLa(b,a,c){N[z](this,cG,b);this.NCd=b;this.lDd=a;this.knb=c}function dG(b){return b.J(vA)}function OLa(b,a){var c=b.Na[a.id];if(!c){c=new MLa;b.Na[a.id]=c}return c}function PLa(b){this.Xp=b}\r
17849 function eG(){YE[z](this);Bx(this)}function QLa(b,a){b.Nhd=a}var fG="act";function RLa(b){b=b.jNa();for(var a=0;a<b[u];a++){var c=b[a];if(c.Rc(fG)){var d=c.H();if(d&&d.f5a){if(d.f5a())continue}else if(d&&c.xG.H().f5a())continue;return h}}return k}function _A(){return arguments[u]==1&&mm(arguments[0])?[arguments[0]]:top.Array[cd](i,arguments)}function SLa(b,a){this.vv=dE(b);this.xDc=a}var TLa="closure_frame";function gG(){this.Jb=TLa+ULa++;this.Kva=[];VLa[this.Jb]=this}var WLa="_inner";\r
17850 function XLa(b,a){b=Nf(b[ec],WLa)?b[Oc][ec]:b[ec];var c=VLa[b[Zc](0,b[Sc](mg))];c&&b==c.A_&&c.qfb(a)}function YLa(b,a){Ef(a,function(c,d){c=Aw(zm,{type:yd,name:d,value:c});b[o](c)})}function ZLa(b,a,c,d){if(b.ng)e(Error(".136"));c=new Sh(c||a[jr]);d&&bi(c);b.c8=c;b.Nh=a;Op(b.Nh,c[t]());aMa(b)}var hG="10px",bMa="-10px",cMa="<body><iframe id=",dMa=" name=",eMa="></iframe>",iG="textarea";\r
17851 function aMa(b){b.ng=h;b.gy=k;b.eo=0;b.A_=b.Jb+mg+(b.IWc++)[t](36);var a={name:b.A_,id:b.A_};if(L&&wg<7)a.src=xDa;b.xe=Aw(Td,a);a=b.xe[x];Fa(a,yd);ka(a,Wa(a,hG));if(Jg)Zla(a,lp(a,bMa));else{Ja(a,sd);a.top=ck(a,bMa)}if(L){Pa(b.Nh,b.A_||I);ea[Lc][o](b.xe);ih(b.xe,Lh,b.kpb,k,b);try{b.wab=k;b.Nh.submit()}catch(c){nh(b.xe,Lh,b.kpb,k,b);b.Po(1)}}else{ea[Lc][o](b.xe);a=b.A_+WLa;var d=om(b.xe),f=cMa+a+dMa+a+eMa;if(Ng)Q(d[mc],f);else d[nq](f);ih(d[ub](a),rj,b.hza,k,b);var g=b.Nh[ic](iG);f=0;for(var j=g[u];f<\r
17852 j;f++)dh(g[f])!=g[f][q]&&ah(g[f],g[f][q]);g=d.importNode(b.Nh,h);Pa(g,a);d[Lc][o](g);var n=b.Nh[ic](nj),s=g[ic](nj);f=0;for(j=n[u];f<j;f++)xp(s[f],n[f][Hq]);n=b.Nh[ic](zm);s=g[ic](zm);f=0;for(j=n[u];f<j;f++)if(n[f][Zb]==VF)if(n[f][q]!=s[f][q]){Pa(b.Nh,a);g=b.Nh;break}try{b.wab=k;g.submit();d[Xk]();if(Fh)b.nPb=Dh(b.ehc,250,b)}catch(v){nh(d[ub](a),rj,b.hza,k,b);d[Xk]();b.Po(2)}}}function fMa(b){var a=b.xe;gMa(b);hMa(b);bda(Nh,a);try{b[r](Ih)}finally{cda(Nh)}}\r
17853 function gMa(b){var a=b.xe;if(a){ja(a,i);cp(a,i);oa(a,i);b.Kva[p](a)}if(b.y_){Eh(b.y_);b.y_=i}if(Fh||Ng)b.y_=Dh(b.l9a,2E3,b);else b.l9a();b.xe=i;b.A_=i}function hMa(b){b.Nh&&b.Nh==jG&&Pg(b.Nh);b.Nh=i}function iMa(b){if(b.xe)return om(jMa(b));return i}function jMa(b){if(b.xe)return L?b.xe:om(b.xe)[ub](b.A_+WLa);return i}var kMa="incrementaldata";function lMa(b){N[z](this,kMa);ma(this,b)}\r
17854 function mMa(){this.tv=new gG;this.tv.rab=nMa;ih(this.tv,Hh,this.mUb,k,this);ih(this.tv,Ih,this.oUb,k,this);ih(this.tv,kMa,this.nUb,k,this)}function nMa(b){b=pm(b);var a=i;if(Ke(b.gmail_error))a=700+b.gmail_error;else if(Ke(b.rc))a=Tj+b.rc;return a}function kG(b){return bg(oMa,b)>=0}function pMa(){this.NUa=[];this.u9=new Hf}function qMa(b,a){if(rMa(b,a)){var c=b.u9.J(a);b.u9.set(a,c?c+1:1)}}function rMa(b,a){if(!a||a[Db](Md)>=0)return k;return h}var lG="GMAIL_IMP",sMa="%2F";\r
17855 function tMa(b){var a=!b.u9.nd();if(b.NUa[u]>0||a){var c=[];of(c,b.NUa);a&&of(c,uMa(b));(a=mi(lG,void 0))&&a!=I&&c[p](Rf(a));c=Qf(c[kd](Md));if(c[u]>3950){c=c[Zc](0,c[Sc](sMa,3950));Rf(c)}ax(lG,c,86400);if(L&&bg(wg,GIa)<0){for(;!mi(lG,void 0);){if(c[u]<100){c=I;break}c=c[Zc](0,c[Sc](sMa,c[u]-100));ax(lG,c,86400)}Rf(c)}b[bc]()}}function uMa(b){for(var a=[],c=b.u9.Sb(),d=0;d<c[u];d++){var f=c[d];a[p](f+Qd+b.u9.J(f))}return a}\r
17856 function vMa(b){b.pb(mG?wMa:xMa);var a=Mg(),c=new U(a[ib]);c[R](Qd);c[R](a[id]);b.jj(yMa,c[t]())}function nG(b){return new zE(EB,b,k,k)}function oG(b){return new zE(EB,b,h,k)}function pG(b){return new zE(EB,b,k,h)}function zMa(){this.Q=new kn(this)}function AMa(){BMa=this}function CMa(b,a,c,d,f){var g=new eG;g.J3=a;g.Fv=c;g.Fv&&g.Q.w(g.Fv,ZD,g.CIa);a=new ZF;mIa(g,a);if(d&&!mga){d=new mMa;top[f]=XLa;top[f]=og(zga,top[f]);mIa(g,d)}b.Y0b(g);return g}var DMa="legacycontacts";\r
17857 function qG(b){return jA(b,DMa)}var EMa="pcab";function rG(b){return(b=jA(b,DMa))&&b.dcb(EMa)}function sG(b,a,c){this.uE=b;this.Jb=a;this.BKb=new cg(c)}function FMa(b){if(!b.aPb)b.aPb=new cg(b.uE);return b.aPb}var GMa="hilite",HMa="canceldismiss",tG="dismiss";function uG(b,a,c){this.wj=b;this.JF=c;this.Kc=a;ih(a,[GMa,nj,HMa,tG],this);this.pz=i;this.Rg=[];this.Hy=-1;this.aC=0;this.ZD=this.zf=i}\r
17858 function IMa(b){if(b.Hy>=b.aC&&b.Hy<b.aC+b.Rg[u]-1){b.mU(b.Hy+1);return h}else if(b.Hy==-1){b.mU(b.aC);return h}return k}function JMa(b){if(b.Hy>b.aC){b.mU(b.Hy-1);return h}else b.GGa&&b.Hy==b.aC&&b.mU(-1);return k}function KMa(b){if(!b.ZD)b.ZD=ba[xc](G(b.nw,b),100)}function LMa(b){ba[xc](G(function(){if(this.ZD){ba[gb](this.ZD);this.ZD=i}},b),10)}function vG(b,a){a=a-b.aC;if(a<0||a>=b.Rg[u])return-1;return a}\r
17859 function wG(b,a){if(xG(b))b.selectionStart=a;else if(L){var c=MMa(b),d=c[0];if(d[vk](c[1])){a=NMa(b,a);d[tk](h);d[Ak](zl,a);d[Fk]()}}}function yG(b){return OMa(b,h)[0]}var PMa="EndToStart",QMa="StartToEnd",RMa="\r\n";\r
17860 function OMa(b,a){var c=0,d=0;if(xG(b)){c=b[Ima];d=a?-1:b.selectionEnd}else if(L){var f=MMa(b),g=f[0];f=f[1];if(g[vk](f)){g[Hk](PMa,f);if(b[Zb]==iG){b=f[Mk]();var j=g[jb];c=j;f=d=b[jb];for(var n=k;!n;)if(g[gl](QMa,g)==0)n=h;else{g[al](zl,-1);if(g[jb]==j)c+=RMa;else n=h}if(a)a=[c[u],-1];else{for(a=k;!a;)if(b[gl](QMa,b)==0)a=h;else{b[al](zl,-1);if(b[jb]==d)f+=RMa;else a=h}a=[c[u],c[u]+f[u]]}return a}c=g[jb][u];d=a?-1:g[jb][u]+f[jb][u]}}return[c,d]}\r
17861 function zG(b,a){if(xG(b))b.selectionEnd=a;else if(L){var c=MMa(b),d=c[1];if(c[0][vk](d)){a=NMa(b,a);b=NMa(b,yG(b));d[tk](h);d[al](zl,a-b);d[Fk]()}}}function SMa(b){return OMa(b,k)[1]}function AG(b,a){if(xG(b)){b.selectionStart=a;b.selectionEnd=a}else if(L){a=NMa(b,a);b=b[Dk]();b[tk](h);b[Ak](zl,a);b[Fk]()}}\r
17862 function TMa(b,a){if(xG(b)){var c=b[q],d=b[Ima];pa(b,c[nc](0,d)+a+c[nc](b.selectionEnd));b.selectionStart=d;b.selectionEnd=d+a[u]}else if(L){c=MMa(b);b=c[1];if(c[0][vk](b)){c=b[Mk]();la(b,a);b[Hk](Al,c);b[Fk]()}}else e(Error(".137"))}function MMa(b){var a=b[Mc]||b[yc],c=a[uk][Bk]();if(b[Zb]==iG){a=a[Lc][Dk]();a[Tk](b)}else a=b[Dk]();return[a,c]}function NMa(b,a){if(b[Zb]==iG)a=b[q][Zc](0,a)[mb](/(\r\n|\r|\n)/g,ch)[u];return a}function xG(b){try{return typeof b[Ima]==Qe}catch(a){return k}}\r
17863 var UMa=",;",VMa="[\\s",WMa="]+",XMa="[\\s]+",YMa="\\s*[",ZMa="]$";function BG(b,a,c,d){d=d||150;this.XBa=Ue(b)?b:UMa;this.HAc=this.XBa[Zc](0,1);b=this.Jja?VMa+this.XBa+WMa:XMa;this.gic=new RegExp(Ty+b+Bl+b+Od,ag);this.bid=new RegExp(YMa+this.XBa+ZMa);this.g_b=a||I;this.jcd=this.Jja=c!=i?c:h;this.ab=d>0?new Bh(d):i;this.tw=new kn(this);this.Aoa=new kn(this);this.sc=new hn;this.Kia=-1}\r
17864 function aNa(b,a){var c=b.Jja&&a[Ob]&&b.XBa[Db](String[rq](a[Ob]))!=-1;b.xcc&&c&&b[mr]();if(b.gwb&&c)if(b.kd.vI()){a[zb]();return h}return k}function bNa(b){if(b.b3){b.b3=k;b.tw.hb(b.Ul,Zi,b.ql);b.tw.hb(b.Ul,jj,b.qka)}}function cNa(b,a,c){b=dNa(b,a);if(c==a[u])return b[u]-1;for(var d=a=0,f=0;d<b[u]&&f<c;d++){f+=b[d][u];a=d}return a}\r
17865 function dNa(b,a){if(!b.Jja)return[a];a=String(a)[Cc](I);for(var c=[],d=[],f=0,g=k;f<a[u];f++)if(b.g_b&&b.g_b[Db](a[f])!=-1){if(b.Zbb&&!g){c[p](d[kd](I));Ia(d,0)}d[p](a[f]);g=!g}else if(!g&&b.XBa[Db](a[f])!=-1){d[p](a[f]);c[p](d[kd](I));Ia(d,0)}else d[p](a[f]);c[p](d[kd](I));return c}var eNa="Jd-SUR3Rd",fNa="Jd-oKdM2c",gNa="Je",hNa="Jd-Je",iNa="Jd-JU";\r
17866 function CG(b,a,c,d){this.mh=b||ea[Lc];this.ya=Cg(this.mh);this.XL=!b;this.wa=i;this.pz=I;this.Rg=[];this.uZa=this.KK=-1;this.yg=k;m(this,eNa);this.yBa=fNa;this.PZb=gNa;this.JFa=hNa;this.SLc=iNa;this.xea=a||i;this.cqd=d!=i?d:h;this.Hfd=c!=i?c:k;this.ekb=i;this.v_a=k}var DG="display:none",jNa="listbox",kNa="combobox",lNa="autocomplete",mNa="list";\r
17867 function nNa(b){if(!b.wa){var a=b.ya.ba(T,{style:DG});b.wa=a;b.gdc(a);fn(a,jNa);a.id="goog-acr-"+oNa++;if(b.zf){fn(b.zf,kNa);gn(b.zf,lNa,mNa);gn(b.zf,yo,h)}b.ya[o](b.mh,a);ih(a,P,b.sj,k,b);ih(a,fj,b.CH,k,b);ih(b.ya.cb(),P,b.fUb,k,b);ih(a,Xi,b.BK,k,b)}}var pNa="(.*?)(^|\\W+)(",qNa="gi";\r
17868 function rNa(b,a,c){if(a[nb]==3){var d,f=i;if(Ve(c)){d=c[u]>0?c[0]:I;if(c[u]>1)f=qf(c,1)}else d=c;if(d[u]!=0){var g=a[md];d=ox(d);d=new RegExp(pNa+d+xh,qNa);c=[];for(var j=0,n=d[hb](g);n;){c[p](n[1]);c[p](n[2]);c[p](n[3]);j=d[Mma];n=d[hb](g)}c[p](g[Zc](j));if(c[u]>1){pk(a,c[0]+c[1]);f=b.ya[Qb](Ph);m(f,b.SLc);b.ya[o](f,b.ya[yb](c[2]));f=a[A][Bb](f,a[fc]);for(g=c[u]-1;g>=3;g--)a[A][Bb](b.ya[yb](c[g]),f[fc])}else f&&rNa(b,a,f)}}else for(a=a[Tb];a;){f=a[fc];rNa(b,a,c);a=f}}\r
17869 function sNa(b,a){for(;a&&a!=b.wa&&!Bg(a,b.yBa);)a=a[A];return a?ff(b.xx,a):-1}function tNa(b){this.Ud=b}function EG(b,a,c,d){this.V=b;this.Bd=rD(b);uG[z](this,this,this.PJa(),this.Iqa());this.Ve=this.JF;this.Ve.kd=this;this.l4=a||qG(this.V);this.XX=c;this.Nfa=d;Bx(this)}function uNa(){if(this.Ib()){var b=this.zf,a=Um(b);b=Mm(b);if(!jia(this.UHa,a)||!hia(this.F0a,b)){this.UHa=a;this.F0a=b;this.If()}Dh(uNa,1E3,this)}}var FG="za";function vNa(b){var a=new EG(b);b[kq](FG,a);return a}\r
17870 function GG(b){return b.J(FG)}function wNa(b,a){BB[z](this,b,a)}function HG(b){return new wNa(EB,b)}var xNa=":16",yNa=";8";function zNa(b,a){var c=ri(Fga);if(a){_B_log(ANa,c?1:0);if(!c){oi(Fga);bA(xNa,function(){b[Ic][Sq](h)},2E3);return}}_B_record();Mda(Fga);try{main()}catch(d){rg(tg,yNa,d)}}function BNa(b,a,c){this.Ea=b;this.Rf=a;this.eka=c||40}function IG(b,a){var c=lx(T);Q(c,b);return(new CNa(c,a?DNa:ENa)).jh()}\r
17871 function CNa(b,a){this.Skd=a;this.CRa=k;this.ngc=[];this.Asb=this.ntb=0;this.O8=2;this.CXa=1;this.nqa=[];for(JG(this,1,b);this.nqa[u]!=0;){b=this.nqa.pop();a=this.nqa.pop();switch(b){case 1:FNa(this,a);break;case 2:this.ntb+=a;break;case 3:this.Asb+=a;break;case 4:GNa(this,a);break}}}function HNa(b,a){if(a[u]!=0){switch(b.CXa){case 2:b.O8==0&&INa(b,J);break;case 3:for(;b.O8<1;)JNa(b);break;case 4:for(;b.O8<2;)JNa(b);break}b.CXa=1;b.O8>0&&INa(b,KNa(b,h));INa(b,a);b.O8=0}}\r
17872 function INa(b,a){b.ngc[p](a)}function JNa(b){b.O8>0?INa(b,KNa(b,k)+ch):INa(b,ch);b.O8++}function KNa(b,a){b=Dw(Uf,b.ntb);if(a&&b[u]>0)b+=J;return b}function GNa(b,a){if(b.CXa<a)b.CXa=a}function JG(b,a,c){b.nqa[p](c);b.nqa[p](a)}var LNa="#text",KG="SELECT",MNa="________________________________",NNa="XMP",ONa="gmail_quote";\r
17873 function FNa(b,a){a[fc]!=i&&JG(b,1,a[fc]);var c=a[uc];if(!(c&&ef(b.Skd,c))){if(PNa[cb](a[Gb]))QNa(b,4);else RNa[cb](a[Gb])&&QNa(b,3);switch(a[Gb]){case LNa:a=a[md][mb](SNa,I)[mb](TNa,ch)[mb](UNa,ch);if(b.Asb==0){if(a[u]!=0){c=" \t\u000c\r\n\u200b"[Db](a[xb](0))!=-1;var d=" \t\u000c\r\n\u200b"[Db](a[xb](a[u]-1))!=-1;a=a[mb](VNa,J)[mb](WNa,I);c&&GNa(b,2);HNa(b,a);d&&GNa(b,2)}}else{a=a[Cc](ch);HNa(b,a[0]);for(c=1;c<a[u];c++){JNa(b);HNa(b,a[c])}}return;case Cl:JNa(b);return;case qha:case Dl:case KG:return;\r
17874 case Bd:b.CRa=h;HNa(b,MNa);return;case Iaa:case NNa:b.Asb++;JG(b,3,-1);break;case be:b.CRa=h;if(Bg(a,ONa)){b.ntb++;JG(b,2,-1)}break;default:b.CRa=h;break}a[Tb]!=i&&JG(b,1,a[Tb])}}function QNa(b,a){GNa(b,a);JG(b,4,a)}function LG(b,a){this.mAa=4;this.Jv=a||undefined;bo[z](this,b)}function MG(b,a,c,d,f){b.jja=a==i||a instanceof Bm?a:new Bm(a,c,d,f);b.Ib()&&b.If()}\r
17875 var XNa="wc",YNa='" role="alert" tabindex="-1"><table cellpadding="0" class="',ZNa="wf",aOa="wk",bOa="Dp",cOa="Keyboard shortcuts",NG='</td><td class="',dOa="wj",eOa='"><a id="',fOa='" target="keyboard_shortcuts_help_window" href="',gOa="wi",hOa="Open in a new window",iOa='</a> | <span id="',OG="Close",jOa='</span></td></tr></table><table cellpadding="0" class="',PG="wd",kOa='"><tr>',QG='<td class="',lOa="Dn",RG='"><table cellpadding="0" class="',mOa='"><tbody>',nOa='<tr><th class="',oOa="Do",pOa=\r
17876 '" /><th class="',qOa="</th></tr>",SG='<tr><td class="',rOa="wg",sOa=':</td><td class="',tOa="we",TG="</td></tr>",uOa="</tbody></table></td>",vOa="</tr></table></div>";\r
17877 function wOa(b,a){var c=a||new U;c[R](X,XNa,YNa,ul,J,ZNa,El,aOa,J,bOa,W,cOa,NG,dOa,J,bOa,eOa,b.Imd,fOa,b.ijd,S,gOa,W,hOa,iOa,b.p6a,S,gOa,W,OG,jOa,ul,J,PG,kOa);b=b.uq;for(var d=b[u],f=0;f<d;f++){var g=b[f];c[R](QG,lOa,RG,ul,mOa);for(var j=g[u],n=0;n<j;n++){var s=g[n];c[R](nOa,oOa,pOa,oOa,W,V(s[Pk]),qOa);s=s.bq;for(var v=s[u],C=0;C<v;C++){var M=s[C];c[R](SG,rOa,J,lOa,W,M.key,sOa,tOa,J,lOa,W,V(M[qr]),TG)}}c[R](uOa)}c[R](vOa);if(!a)return c[t]()}\r
17878 function UG(b){nn[z](this);this.V=b;this.Y=qC(b).W();this.Lb=Tz(b);this.Cb=sC(b);this.na=new kn(this);var a=this.Y.ba(T);K(a,eo);rD(b).Zf[o](a);this.Ha=new LG(a);this.Ha.Hu(k)}var xOa="<Shift>",yOa="<Esc>",zOa="<Ctrl>";function AOa(b,a){return a[od]()!=a?[xOa,tl,a[od]()]:a==String[rq](27)?yOa:a==String[rq](17)?zOa:a}var BOa="\t",VG="or",COa="then";\r
17879 function DOa(b,a){var c=[];if(a[u]>1){a=a[Cc](BOa);for(var d=0;d<a[u];d++){var f=a[d];d>0&&c[p](VG);for(var g=0;g<f[u];g++){of(c,AOa(b,f[xb](g)));g!=f[u]-1&&!ef(EOa,c[c[u]-1])&&c[p](COa)}}}else of(c,AOa(b,a));return c}var FOa="SAVE_DRAFT",GOa="<Enter>",HOa="tab",IOa="<Tab>",WG='<span class="',JOa="wb",KOa="wh",XG="</span> ";\r
17880 function LOa(b){var a=new Hf(dLa(b.V));a.set(FOa,MOa);for(var c=[],d=0;d<NOa[u];d++){for(var f=[],g=NOa[d],j=0;j<g[u];j++){for(var n=g[j],s=n.bq,v=[],C=0;C<s[u];C++){var M=s[C],Y;if(Ve(M)){Y=M[0];M=M[1]}else{Y=M;M=YG[M]}var ha=[];if(a.Xb(Y))ha=DOa(b,a.J(Y));else{Y=Y[Cc](/\b/);for(var tb=0;tb<Y[u];tb++){var zc=Y[tb];if(zc==Bl)ha[p](VG);else if(zc==Md)ha[p](Md);else if(zc==Uf)ha[p](COa);else if(zc[od]()==yka)ha[p](GOa);else if(zc[od]()==HOa)ha[p](IOa);else a.Xb(zc)?of(ha,DOa(b,a.J(zc))):ha[p](zc)}}Y=\r
17881 {Grd:ha};ha=new U;Y=Y.Grd;tb=Y[u];for(zc=0;zc<tb;zc++)ha[R](WG,zc%2?JOa:KOa,W,V(Y[zc]),XG);ha=ha[t]();v[p]({key:ha,description:M})}f[p]({title:n[Pk],bq:v})}c[p](f)}return c}function OOa(b){if(b==undefined)b=[];this.CQc=POa(b[0]);this.wQc=POa(b[1]);this.kPc=POa(b[2]);this.lPc=POa(b[3]);this.jPc=POa(b[4])}function POa(b){if(b!=undefined)return b!=0}function QOa(b){if(b!=undefined)return b?1:0}\r
17882 var ROa="In addition to marking this message as spam, ",SOa=" can attempt to automatically unsubscribe you from ",ZG="<b>",TOa="</b>, by sending an unsubscribe request on your behalf.",aH="<div>",bH=' <a href="',cH='" target="_blank">',UOa="Learn more.",dH="</a></div>";function VOa(b,a){var c=a||new U,d=ROa+(Ji+(SOa+(ZG+(V(b[ec])+TOa))));c[R](aH,d,bH,b.tc,cH,UOa,dH);if(!a)return c[t]()}\r
17883 var WOa="In addition to marking these messages as spam, ",XOa=" can attempt to automatically unsubscribe you from these senders, by sending an unsubscribe request on your behalf.",YOa="</a><br><br>",ZOa="<div><b>",aPa="</b></div>";function bPa(b,a){var c=a||new U;c[R](aH,WOa+(Ji+XOa),bH,b.tc,cH,UOa,YOa);b=b.YX;for(var d=b[u],f=0;f<d;f++)c[R](ZOa,V(b[f]),aPa);c[R](Z);if(!a)return c[t]()}function cPa(b,a){EC[z](this,b);this.Lb=Tz(b);this.qGa=a;this.V=b;this.Jc()}function dPa(b){this.sAa=b}\r
17884 function fH(b){if(!Ue(b.IJb))b.IJb=ePa;return b.IJb}var fPa='".*?"';function gH(b,a){N[z](this,b);this.Pm=a;var c;try{var d=a[Kb](fPa)[0];c=d[Zc](1,d[u]-1)}catch(f){c=I}this.ck=c}function hH(b){if(!b.M7b)b.M7b=b.Pm?yh(b.Pm):i;return b.M7b}function iH(b,a,c,d){this.ya=c||Cg();this.Zva=0;this.Zv=b;this.gz=a;this.Vxa=d||{};this.G6a=[]}var gPa="log-connect";function hPa(b){N[z](this,gPa);this.hj=b}var jH="f-msg",kH="mf";function iPa(b){b[r](new gH(jH,zh([kH,I,I])))}\r
17885 function lH(b,a,c){this.Q=new kn(this);this.Zv=b;this.gz=a;this.Vxa=c||{}}function jPa(b){N[z](this,"flutestate");this.W1b=b}function kPa(b){N[z](this,kH);this.Pm=b}var mH="fe";function lPa(b){N[z](this,mH);this.nOb=b}function mPa(b,a){if(b=a==undefined?b.lA():a)if(b=b[4].renderer)return b;return 0}var nPa="nf0";function oPa(b){var a=b.lA();b.CZ=a&&a[1]!=nPa?1:b.CZ==1?3:2;b[r](new kPa(a))}var pPa="other",qPa="windows",rPa="Intel",sPa="mac",tPa="mac-ppc";\r
17886 function uPa(){var b=pPa;if(Ri)b=qPa;else if(Qi)b=Ti[Db](rPa)!=-1?sPa:tPa;return b}function vPa(b){return{os:uPa(b),clientver:1}}function wPa(b){if(!b.iDa)return 0;switch(b.iDa.pr){case ii:return 2;case Kd:return 1;default:return 0}}function nH(){var b=Ti[Db](rPa)!=-1;return Ri||Qi&&b}function oH(b,a){oB[z](this,b,pd);this.Wqd=a}function xPa(b){this.sg=b}function yPa(){Bx(this);this.s0=new Hf}function pH(b,a){return b.s0.J(a?a:b.F8a)}\r
17887 function zPa(b,a){for(var c=b.s0.Sb(),d=0;d<c[u];d++){var f=b.s0.J(c[d]);if(f.wH(a))return f}return i}function APa(b,a){for(var c,d=b.s0.Sb(),f=0;f<d[u];f++){c=b.s0.J(d[f]);c=qH(c,a);if(c!=i)return c}return c}var rH="da";function sH(b){return b.J(rH)}function BPa(){this.Vrb=[]}function tH(b){return b.J(Bz)}var CPa=":17";\r
17888 function DPa(b,a){var c=a?b.jMb:b.gr;b.IB();EPa(b);if(c){b.Xda&&b.Xda.Ad(c);b.qa=b.gr?2:0;if(!a&&c.U4!=-1)b.v_=bA(CPa,b.IK,c.U4,b);if(!a&&c.QE()>=0)b.xBb=bA(CPa,b.Mna,c.QE(),b)}else{b.Xda&&b.Xda.IK();b.qa=0}}function EPa(b){b.xBb&&cA(b.xBb);b.xBb=i}var FPa="^igs";function uH(b){var a=new Hf;a.set(ce,b);Gy[z](this,ce,a);this.yr=b;b=FPa+b;GPa[b]=h;Ry(b,this)}function vH(b){AD[z](this,b);this.Cb=sC(this[uq]())}function wH(b){pA[z](this,b)}\r
17889 function HPa(b,a){if(jfa.J()){if(b.Wx)Ua(b.Wx.b()[x],xd);b.Wx=a;Ua(b.Wx.b()[x],I)}else if(a!=b.Wx){if(a&&a.ac()!=b)e(Error(".139"));yA++;try{b.Wx&&b.Wx.qc(k);b.Wx=a;b.Wx&&b.Wx.qc(h);b.Ui()}finally{zA()}}}var IPa="history_state",JPa='<input type="text" name="%s" id="%s" style="display:none" />',xH="https",KPa="https:///",LPa="history_iframe",MPa='src="',NPa='<iframe id="%s" style="display:none" %s></iframe>';\r
17890 function yH(b,a,c,d){if(b&&!a)e(Error(".140"));var f;if(c)f=c;else{f=IPa+OPa;ea[nq](ux(JPa,f,f));f=Fg(f)}this.tva=f;this.dg=c?pm(Eg(c)):ba;this.GD=this.dg[Ic][Yc][Cc](Lj)[0]+Lj;this.LOa=a;if(L&&!a)this.LOa=ba[Ic][er]==xH?KPa:xDa;this.ab=new Bh(150);this.lca=!b;this.Q=new kn(this);if(b||L&&!zH){if(d)b=d;else{b=LPa+OPa;a=this.LOa?MPa+Wf(this.LOa)+Vf:I;ea[nq](ux(NPa,b,a));b=Fg(b)}this.xe=b;this.xic=h}if(L&&!zH){this.Q.w(this.dg,rj,this.j4b);this.dec=this.KKa=k}this.lca?this.gma(AH(this),h):BH(this,this.tva[q]);\r
17891 OPa++}function AH(b){return b.dja!==i?b.dja:b.lca?b.Mga(b.dg):PPa(b)||I}function QPa(b,a,c,d){if(AH(b)!=a)if(b.lca){b.gma(a,c);zH||L&&BH(b,a,c,d);b.Lf&&b.rJ()}else{BH(b,a,c);b.dja=b.Ry=pa(b.tva,a);b[r](new RPa(a))}}var SPa="text/html",TPa="replace",UPa="<title>%s</title><body>%s</body>";\r
17892 function BH(b,a,c,d){if(b.xic||a!=PPa(b)){b.xic=k;a=Qf(a);if(L){var f=om(b.xe);f[bb](SPa,c?TPa:undefined);f[nq](ux(UPa,Wf(d||b.dg[yc][Pk]),a));f[Xk]()}else{a=b.LOa+Lj+a;if(b=b.xe[gc])if(c)b[Ic][mb](a);else Mp(b[Ic],a)}}}function PPa(b){if(L){b=om(b.xe);return b[Lc]?Rf(b[Lc][wk]):i}else{var a=b.xe[gc];if(a){var c;try{c=Rf(b.Mga(a))}catch(d){b.BRa||b.WXa(h);return i}b.BRa&&b.WXa(k);return c||i}else return i}}var VPa="navigate";function RPa(b){N[z](this,VPa);this.ce=b}\r
17893 function WPa(b){this.V=b;this.rca=fD(this.V);this.Pd={};this.aIa=[];this.eP=b.J(Xx);if(!this.eP)e(Error(".141"));this.eP.Ac(h);this.eP.dk(this);ih(this.eP,VPa,this.dpb,k,this)}function XPa(b,a,c){b.Ry=b.Haa(a);b.eP.Zaa(b.Ry,c);b.Pd[b.Ry]=a}function YPa(b,a,c){delete b.Pd[b.Ry];b.Ry=b.Haa(a);QPa(b.eP,b.Ry,h,c);b.Pd[b.Ry]=a}function ZPa(b,a,c){a=a||AH(b.eP);b.Ry=a;return c?aQa(b,a):bQa(b,a)}\r
17894 function bQa(b,a){for(b.Pd[a]&&jf(b.aIa,a);b.aIa[u]>=40;)delete b.Pd[b.aIa[db]()];b.aIa[p](a);return b.Pd[a]?b.Pd[a]:(b.Pd[a]=aQa(b,a))}function aQa(b,a){a=a[Cc](Md);var c=a[db]();return(b=b.rca.PVb[c])?b.aca(c,a):i}function cQa(b,a,c,d){N[z](this,b);this.FV=a;this.iAc=c;this.rnb=d}function CH(b,a,c,d,f){this.kFc=b;this.NY=a||I;this.LWa=c||dQa;this.v4a=d||eQa;this.Fad=f||fQa}\r
17895 function DH(b){AD[z](this,new wH(b));this.V=b;this.rca=fD(b);this.nU=new WPa(b);this.H().w(this.nU,VPa,this.dpb);this.mw=b.J(ii);this.ut=b.J(IF);this.cGb=k;this.vz=[];this.Z2=new cg;this.y1b=new Hf;this.Ck=VC(b);this.Ck.yu.add(this);this.jb=JB(b);this.Jc()}function EH(b){return jA(b,TC)}function FH(b){return b.J(TC)}function GH(b){return b.Z2.Oa()}function gQa(b,a){if(!b.Z2[bd](a)){b.Z2.add(a);b.vz[jd](1,0,a);b.ia.ha(a);hQa(b,iQa)}}\r
17896 function jQa(b,a,c){if(!b.Z2[bd](a))return k;b.Z2[Pb](a);if(a==b.zc())b.vz[u]>1?kQa(b,b.vz[1]):kQa(b,i);jf(b.vz,a);if(a==b.gL){lQa(b);WC(b.Ck)}c||b.ia[Nc](a);return h}function mQa(b,a){(b=b.ut.ZG())&&UHa(b.TR,a)}function nQa(b,a){(b=b.ut.ZG())&&KE(b.TR,a)}function hQa(b,a){a=a||0;for(var c=b.vz[u],d=c-1;d>=1&&c>a;){var f=b.vz[d];if(f.EIb()){b.oWa(f);f.D();c--}d--}}function oQa(b){if(b.lya){b.lya.D();b.lya=i}}var pQa=":18",qQa="View Changed";\r
17897 function kQa(b,a){var c=b.zc();if(c&&c.gY())return k;c&&c.Df();yA++;try{if(a){if(!b.Z2[bd](a))e(Error(".143"));HPa(b.ia,a);jf(b.vz,a);b.vz[ld](a);b.kYb=h;a.Wb();b.f2b=h;b.Ui(vA)}else{HPa(b.ia,i);b.kYb=k}b[r](new cQa(kC,b.Cxa,c,a));if(c&&!c.Jpa()){jQa(b,c,h);L?b.X9b(c):bA(pQa,G(b.X9b,b,c),600)}}finally{mQa(b,qQa);zA()}if(a)XPa(b.nU,b.Cxa||{view:a.md()},rQa(b,a.TO()));b[r](new cQa(Wx,b.Cxa,c,a));WC(b.Ck);b.Cxa=i;return h}\r
17898 function lQa(b){if(b.xra){b.xra.tf();b.xra=i}if(b.Zia){GB(b.Zia,2);b.Zia=i}if(b.gL){var a=b.gL;b.gL=i;a.Bo(k)}}function sQa(b){if(b.gL){var a=[];b.gL.ej(a);if(!(NBa(a)<3)){a=b.gL;b.gL=i;a=kQa(b,a);if(b.Zia){GB(b.Zia,a?1:2);b.Zia=i}}}}function tQa(b){var a=b.zc();if(!a||!a.Bo(k)&&!a.gY()){a&&a.Df();return h}else{b.mw.s5a();return k}}function rQa(b,a){return b.yhc?b.yhc[z](i,a):a}function uQa(b,a){this.Rg=b;this.bqd=!a}var vQa="(^|\\W+)";\r
17899 function wQa(b,a,c){var d=[];if(a!=I){a=ox(a);var f=new RegExp(vQa+a,ii);axa(b.Rg,function(g){String(g)[Kb](f)&&d[p](g);return d[u]>=c})}return d}\r
17900 function xQa(b,a,c){var d=[];um(b.Rg,function(g,j){var n=a[od](),s=String(g)[od](),v=0;if(s[Db](n)!=-1)v=da((s[Db](n)/4)[t](),10);else for(var C=n[Cc](I),M=-1,Y=10,ha=0,tb;tb=C[ha];ha++){tb=s[Db](tb);if(tb>M){M=tb-M-1;if(M>Y-5)M=Y-5;v+=M;M=tb}else{v+=Y;Y+=5}}v<n[u]*6&&d[p]({Rld:g,IBa:v,index:j})});d[el](function(g,j){var n=g.IBa-j.IBa;if(n!=0)return n;return g[Lq]-j[Lq]});b=[];for(var f=0;f<c&&f<d[u];f++)b[p](d[f].Rld);return b}function yQa(b,a){zQa[b.id]||ih(b,lj,AQa);zQa[b.id]=a}\r
17901 function BQa(b){if(b){nh(b,lj,AQa);delete zQa[b.id]}}function AQa(b){K(b[y],zQa[b[y].id]);ih(b[y],kj,CQa)}function CQa(b){Ag(b[y],zQa[b[y].id]);nh(b[y],kj,CQa)}var DQa=":19";function HH(b){this.V=b;this.ee=new Hf;this.wYa={};this.gMa={};this.ab=new aA(DQa,3E4);ih(this.ab,yj,G(this.Pa,this))}var IH="ja";function EQa(b){return b.J(IH)}function FQa(b,a){b=b.WVb||I;if(a)a[R](b);else return b}var JH="ix_bi",KH="J";function GQa(b){var a=yy(b).db(JH)>0?KH:aE;return kA(b,a)}var HQa="1.8",IQa="6.0",JQa="520";\r
17902 function LH(){return Fh&&vg(HQa)||L&&vg(IQa)||Jg&&vg(JQa)||Ng&&vg(lca)}var MH="&nbsp;",KQa="</div><div>";function NH(b){b=Wf(b);b=b[mb](/  /g,Vwa);b=b[mb](LQa,ch);b=b[mb](MQa,ch);b=b;if(L){b=b[Cc](ch);for(var a=0;a<b[u];a++)if(Of(b[a]))b[a]=MH;b=aH+b[kd](KQa)+Z}else b=Gw(b);return b}\r
17903 var NQa=' cellspacing="0" style="border-collapse:separate"',OQa='><tr><td class="',PQa="lU",QQa='"></td><td rowspan="3" class="',RQa="lT",SQa="lN",TQa="lK",OH='"></td><td class="',UQa="lJ",VQa="lM",WQa="lL",XQa="lV",YQa='"></td></tr><tr><td rowspan="2" class="',ZQa="lR",aRa="lW",bRa='">&nbsp;</div></td><td class="',cRa='</td><td rowspan="2" class="',dRa="lS",eRa='">&nbsp;</div></td></tr><tr><td class="',fRa="lI",gRa='"></td></tr><tr><td colspan="2" class="',hRa="lP",iRa="lO",jRa='"></td><td colspan="2" class="',\r
17904 kRa="lQ",lRa='"></td></tr></table>';function PH(b,a){var c=a||new U;c[R](Fl,ul,Vf,b.OQc?NQa:I,OQa,PQa,QQa,RQa,J,SQa,J,TQa,OH,RQa,J,UQa,J,VQa,QQa,RQa,J,SQa,J,WQa,OH,XQa,YQa,ZQa,wl,aRa,bRa,V(b.EN),W,b[eq],cRa,dRa,wl,aRa,eRa,UQa,J,fRa,gRa,hRa,OH,iRa,jRa,kRa,lRa);if(!a)return c[t]()}var mRa="cm1";function nRa(b){this.Db=b;oRa=Jz(Rz(b),832)?mRa:Nd}function QH(b,a,c,d,f,g){this.Nsc=f;this.sja=g;Vn[z](this,b,a,c,d)}function RH(){}function SH(b,a,c){hy[z](this,b,a,c);this.jw=[]}\r
17905 function pRa(b,a){Ix(b);for(var c=0;c<b.jw[u];c++){var d=b.jw[c];if(!a||a!=d)d.rg()}}function qRa(b){wp(this,b)}\r
17906 function TH(b,a){this.gPb=b;this.Sq=a[0];this.gk=a[1];this.Qy=a[2];this.Jl=!(a[3]&&h);this.kl=a[5];this.Zba=a[6];this.M1=this.cwb=a[7];this.f8b=a[8];this.rB=a[9];this.SCa=a[10];this.eQc=!!a[11];this.dJb=a[12];this.gda=a[13];this.A4=a[14];this.Mhc=a[15];this.dL=a[16];this.XGa=a[17];this.Jt=a[18];this.DQc=!!a[20];this.apd=a[21];this.nS=a[23];this.HY=a[24];this.TCa=a[25]||this.Qy;Bx(this)}var rRa='class="zF"',sRa='class="yP"';\r
17907 function tRa(b){switch(b.utb){case 2:b.M1=b.cwb[mb](uRa,rRa);break;case 1:b.M1=b.cwb[mb](vRa,sRa);break}}function wRa(b,a){b=b.TCa;a=a.TCa;return b<a?-1:b>a?1:0}function xRa(b){this.Uk=b}function yRa(b){this.Mr=b}function UH(b,a){oH[z](this,b.B(),4);Bx(this);this.Z=Rz(b.B());this.Xi=b;this.Kd=a;this.xl=tE(this.B())}function zRa(){}function ARa(){}\r
17908 function VH(b){bG[z](this);this.qn=b;this.ON=[];this.HD=[];this.PN=new Hf;this.Ved=new ARa;this.na=new kn(this);this.na.w(this.qn.mb.Ya(),FG,this.u7c);this.na.w(this.qn.mb.Ya(),ED,this.F0c)}function WH(b,a,c){za(this,b);yp(this,a);this.Ih=c}function BRa(b,a,c){this.PBc=b;this.Kcd=a;this.Xbd=c}var XH="Fa";function CRa(b,a){N[z](this,XH,b);this.dG=a}function DRa(b){if(b.oc){b.oc[wc]();b.oc=i}}function ERa(b){if(b.oc)return l.max(b.Eo,b.oc.Ay()+b.oc.MT());return b.Eo}\r
17909 function FRa(b,a,c){c=a+c;return a>=b.Uz&&c<=b.Eo}function GRa(b,a,c,d){if(b.oc==a){if(!b.Vha)e(Error(".145"));if(c!=b.L8)e(Error(".144`"+c+qw+b.L8));if(c!=b.Eo)e(Error(".144`"+c+qw+b.Eo));b.ON[c]=d;b.PN.set(d.Je(),d);d.Iz();b.L8++;b.Eo++;if(!b.lVb){YH(b,new WH(1));b.lVb=h}}}function HRa(b){for(var a=b.Uz,c=b.Eo;c>=a;c--)if(b.J(c)!=i)return c+1;return a}function IRa(b){b=b.J(HRa(b)-1);if(!b)return i;return(b=b.J())?b.HY:i}function ZH(b){YH(b,new WH(7))}\r
17910 function JRa(b){if(!b.Vha)e(Error(".145"));for(var a=b.Eo,c=b.Uz;c<a;c++){var d=b.ON[c];d&&nya(d)}}function YH(b,a){if(b.Vha)b.HD[p](a);else{a=new CRa(b,[a]);var c=[];for(b=b;b;b=b.rv())c[p](b);for(b=0;b<c[u];b++){sa(a,c[b]);jx(c[b],a[Zb],k,a)}}}function KRa(){}function aI(b){VH[z](this,b);Bx(this);this.Yla(wRa)}\r
17911 function LRa(b){this.ug=b[1];this.nj=b[2];this.wna=Boolean(b[3]);this.y_a=b[4];this.ae=b[5];this.ZZa=b[6];this.Kmb=b[7];this.hEa=b[8];this.oO=b[9];this.dAb=b[10];this.j4a=b[11];this.Cgc=b[12];this.r9b=b[13]}function MRa(b,a){if(a!=b.nj){b.nj=a;b[r](oy)}}function NRa(b){this.Um=b}function ORa(b,a){Bx(this);SH[z](this,Qf(b.Dg()),a);this.Ea=b;this.gPb=Xy(this.Ea)}function PRa(b,a){if(!b.Pc){var c=a.Hc(),d=b.za(c,h);d||(d=new py(c,b,h,h));d.set(a);return d}}\r
17912 function QRa(b,a){b=b.Uc().Oa();for(var c=0;c<b[u];c++){var d=b[c].za(a);if(d&&d.Fi())return d.J().vf()}}function bI(b,a){b=b.Uc().Oa();for(var c=0;c<b[u];c++){var d=b[c],f=d.za(a);f&&f.Fi()&&d.rg()}}function RRa(b,a,c){Ix(b);b=b.Uc().Oa();for(var d=0;d<b[u];d++){var f=b[d].za(a);f&&f.hc()&&!f.Ds()&&c(f.J())}}function cI(b,a){(b=b.za(Qf(a.Dg()),k))&&b.Fi()&&b.rg()}function SRa(b){b=b.Uc().Oa();for(var a=0;a<b[u];a++){var c=b[a],d=c.Bb();c.hc()&&gza(d)&&c.rg()}}\r
17913 function TRa(b){b=b.Uc().Oa();for(var a=0;a<b[u];a++){var c=b[a];c.hc()&&c.rg()}}function URa(b,a){b=b.Uc().Oa();for(var c=0;c<b[u];c++){var d=b[c];d.za(a,h)&&d.rg()}}function dI(b){return new BCa(eI,b)}function VRa(){this.dHb={};this.Cf=0}\r
17914 function WRa(b,a){this.Ea=b;this.Sq=a[1];this.gk=a[2];this.wf=a[8];this.u9a=a[9];this.w9a={};var c=a[10];for(b=0;b<c[u];b++){var d=c[b];this.w9a[d[0]]=d[1]}this.dL=a[6];this.Qy=a[7];this.GQa={};if(a[11]){c=a[11];for(b=0;b<c[u];b++){d=c[b];this.GQa[d[0]]=d[1]}}this.a1=a[12];this.UHb=a[13]}function XRa(b){var a=nf(b.wf);of(a,b.u9a);return a}\r
17915 function YRa(b,a){var c=a.gf;if(ef(b.wf,c))b.v0&&jf(b.v0,c);else if(!ef(b.u9a,c))if(b.v0&&b.v0[u])if(b.v0[0]==c){b.wf[p](c);b.gk=c;b.v0[db]();b.K8[0]==c&&b.K8[db]();b[r](oy);ZRa(a,4)}}var aSa="draft",bSa="new";function cSa(b,a,c,d,f){if(!b.K8){b.K8=[];b.v0=[];if(!b.TQa)b.TQa=b.gk}if(b.TQa==a){b.TQa=c;if(!ef(b.wf,c)){f!=aSa&&b.v0[p](c);if(f==bSa){b.K8[p](c);b.CRc=d;b[r](oy)}}}}function fI(b){this.Um=b}function gI(b,a){oH[z](this,b.B(),a);this.IY=b}function dSa(b){this.Mr=b}\r
17916 function hI(b){gI[z](this,b.ac(),1);Bx(this);this.Yda=b}function eSa(b,a){b.kX=a}\r
17917 function fSa(b,a,c,d){this.Ea=b;this.Sq=a;this.gf=d[1];this.VVa=d[2]==I?i:d[2];this.eZ=d[3];this.fQb=d[4];this.dga=d[5];this.Nt=d[6];this.Od=new Date(d[7]);this.hZa=String(d[8]);this.vQ=d[9]||[];this.iOa=Boolean(d[10]);this.QXb=d[11];this.zba=d[12];this.lHa=c;this.vub=d[14];this.Tib=d[15];this.Gxb=d[16];this.Qbb=d[17];this.Zwa=Boolean(d[18]);this.rB=d[19];this.XGa=d[20];this.gda=d[21];this.hxa=d[22];this.LPb=d[23];this.llb=d[24];this.wXa=d[25];this.Zhd=!im(d[26])?d[26]:i;this.ewb=!im(d[27])?d[27]:\r
17918 i;this.dwb=!im(d[28])?d[28]:i;this.mYb=d[29];this.JOb=d[30];this.yic=d[31];Bx(this);this.aa.wU(d[lb](26))}function gSa(b){return b.JOb||b.Nt}var hSa="^u";function iI(b){return b.Zh(hSa)}function iSa(b,a){a?b.TL(hSa):b.bS(hSa)}function ZRa(b,a){if(b.eZ!=a){b.eZ=a;b[r](oy)}}function jSa(b){this.wja=b}function kSa(b,a){this.yL=b;this.Vy=a}function lSa(b,a){b.hG=a;b.aY=b.hG==0||b.hG==1||b.hG==3||b.hG==4;b.QNa=b.hG==1||b.hG==2}var mSa="image/";\r
17919 function nSa(b,a,c){this.P_b={};this.Fkc=I;for(var d=c[0],f=[],g=[],j=0;j<d[u];j++){var n=new kSa(b,a);n.fca(d[j]);this.P_b[n.z8]=n;if(Mf(n.lL,mSa))f[f[u]]=n;else g[g[u]]=n}c[u]>1&&oSa(this,c[1]);if(c[u]>2)this.Fkc=c[2];this.Sq=b;this.gf=a;this.mXc=f[u];this.sh=mf(f,g);this.odd=c}function oSa(b,a){b.vQc=a[0];b.znb=a[1];b.Gnb=a[2];b.T2b=a[3];b.U2b=a[4]}\r
17920 function pSa(b,a,c){this.Ea=b;this.Sq=a;this.gf=c[0];this.p_a=c[1];this.rIa=c[2];this.wHa=c[3];this.tWa=c[4];this.zba=c[5];this.DB=c[6];this.sh=new nSa(this.Sq,this.gf,c[7]||[]);this.tac=Boolean(c[8]);this.QVa=c[9];this.pIb=c[11];this.UYa=c[12];this.fkc=c[13];this.Dec=Boolean(c[14]);this.Zdc=Boolean(c[15]);this.NHb=Boolean(c[16]);this.I_b=c[17];this.pfc=c[18];this.awa=c[19];this.uub=c[20];this.tub=c[21];this.FRa=c[22];if(c[23])Xw(O.S(),UF).hc()?this.Jcc(c[23]):Vw(O.S(),UF,G(this.Jcc,this,c[23]));\r
17921 if(c[24][0]){this.Zwa=Boolean(c[24][0]);this.bkc=c[24][1];this.ckc=c[24][2];this.dkc=c[24][3];this.Zjc=c[24][4];this.akc=c[24][5]}this.rB=c[25];this.hxa=c[26];this.Rlb=c[27];this.Sec=Boolean(c[28]);if(c[29]&&c[29][0]){this.Rjb=Boolean(c[29][0]);this.xMb=Boolean(c[29][1]);this.Q2b=c[29][2];this.L2b=c[29][3];this.dZb=c[29][4]}else this.Rjb=k;this.ahb=Number(c[30]);this.Jt=c[31];this.xvb=c[32];this.k8b=c[33];this.Vkd=new OOa(c[34]);this.mec=Boolean(c[35]);this.sXb=Boolean(c[36]);this.Jvc=Boolean(c[37])}\r
17922 function jI(b,a){if(a){if(!b.o4a)b.o4a=Exa(b.p_a);return b.o4a}else return b.p_a}function kI(b,a){if(a){if(!b.m4a)b.m4a=Exa(b.rIa);return b.m4a}else return b.rIa}function qSa(b,a){if(a){if(!b.l4a)b.l4a=Exa(b.wHa);return b.l4a}else return b.wHa}function rSa(b){return b.xvb&&b.xvb[u]>0?b.xvb[0]:I}function lI(b,a,c,d,f){hy[z](this,b,a);this.Ea=c;this.Sq=d;this.lHa=f;new py(eg,this,k,k);Bx(this)}function sSa(b,a){b.mb.Qf();try{var c=b.za(eg);mya(c,a);mya(b,a)}finally{b.mb.Mf()}}function tSa(){}\r
17923 function uSa(b,a,c){hy[z](this,a,c,h);this.Ea=b;this.Utc=new VRa;Bx(this)}function mI(b,a,c){Ix(b);if(!b.hc())e(Error(".148"));for(var d=0;d<a[u];d++){var f=a[d];if(!b.za(f))e(Error(".149`"+f))}d=new hI(b);b=b.J().vf();d.kX=b;d.wf=a;d.q_b=void 0;d.Tjd=!!c;d[Mb]();return d}function vSa(b,a){var c=b.Bb();b.aGb=k;b.k0={};c=new WRa(c,a);b.set(c);a=new Hf;var d=XRa(c);for(c=0;c<d[u];c++)a.set(d[c],1);b=b.Uc();d=b.Sb();for(c=0;c<d[u];c++){var f=d[c],g=b.J(f);a.J(f)||sSa(g,h)}}\r
17924 \r
17925 function wSa(b,a){var c=a[1],d=b.J();if(d){var f=a[9];if(f)d.GQa[c]=f;else{f=d.GQa[c];a[9]=f}}f=b.za(c);if(!f){f=a[6];f=new lI(c,b,b.Ea,b.Hc(),b.Utc.cta(f))}f.nM(a);if(b.k0)b.k0[c]=h;d&&YRa(d,f.J())}function xSa(b){b.aGb=h}var nI="csd";function ySa(b,a,c){if(a==nI){b.mb.Qf();try{var d=c[2];Ix(b);if(b.hc()){b.mb.Qf();try{var f=b.J(),g=d[1];if(ef(f.wf,g))e(Error(".147"));f.wf[p](g);f.TQa=g;f[r](oy);wSa(b,d)}finally{b.mb.Mf()}}}finally{b.mb.Mf()}}}\r
17926 function zSa(b){if(!b.hc())e(Error(".150"));return b.GT()[bd](hSa)}var oI="^t";function ASa(b){if(b.hc())if(b.aGb){var a=b.J().wf;if(a[u]!=0){var c=pI(b);b.Txc(c);var d=b.Ea.Ga();if(BSa[bd](d))for(d=0;d<c[u];d++){var f=c[d];(f.Ea.Ga()==sz?f.Zh(oI):f.QXb)&&ZRa(f,4)}else zSa(b)?CSa(b,c,hSa):CSa(b,c,oI);d=b.J();for(f=0;f<c[u];f++){var g=c[f];d.w9a[g.gf]&&ZRa(g,4)}b=b.za(a[a[u]-1]).J();ZRa(b,4)}}}function CSa(b,a,c){for(b=0;b<a[u];b++){var d=a[b];d.Zh(c)&&ZRa(d,4)}}\r
17927 function pI(b){var a=[],c=b.J();c=XRa(c);for(var d=i,f=0;f<c[u];f++){var g=b.za(c[f]);if(g&&g.hc()&&!g.Ds())a[p](g.J());else{d=d||[];d[p](c[f])}}return a}function DSa(b,a){b.Whd=a}function ESa(b,a,c){gI[z](this,b,3);this.gk=a;this.Obd=c}function FSa(b,a){gI[z](this,b,2);this.BV=a;this.AOb=new Hf;b=gy(b.B()).eQ;SBa(this);this.Hn=b}function GSa(b,a){hy[z](this,Qf(b.Dg()),a);this.Ea=b}function HSa(b,a){b=new FSa(b,a);b[Mb]();return b}function ISa(b,a,c){(b=b.za(a,h))&&b.Fi()&&b.J().dL<c&&b.rg()}\r
17928 var qI="conversations";function JSa(b){hy[z](this,qI,b);b=gy(this.B());ih(b.ud,Fx(nI),this.P6c,k,this)}function rI(b,a,c){Ix(b);return b.za(Qf(a.Dg()),c)}function sI(b,a,c){b.mb.Qf();try{for(var d=b.Uc().Oa(),f=0;f<d[u];f++){var g=d[f].za(a,h);g&&c(g)}}finally{b.mb.Mf()}}function KSa(b,a){Ix(b);b.mb.Qf();try{for(var c=b.Uc().Oa(),d=0;d<c[u];d++)for(var f=c[d].Uc().Oa(),g=0;g<f[u];g++){var j=f[g];j&&j.Fi()&&a(j)&&j.rg()}}finally{b.mb.Mf()}}function LSa(b){KSa(b,E(h))}\r
17929 function tI(b,a){sI(b,a,function(c){c.Fi()&&c.rg()})}function MSa(b,a){KSa(b,function(c){a:{c=c.Uc().Oa();for(var d=0;d<c[u];d++){var f=c[d].J();if(f&&gSa(f)[od]()==a[od]()){c=h;break a}}c=k}return c})}function NSa(b,a,c){Ix(b);var d=k;b=Xwa(b.Uc(),function(f){if((f=f.za(a,h))&&f.Fi()&&f.J().vf()==c){d=h;return Xwa(pI(f),function(g){return g.Uf()})}return k});return d?b:i}var OSa='<div class="J-J5-Ji ',uI='<img class="',vI=' id="',PSa=' title="',QSa='alt="',wI='" >';\r
17930 function xI(b,a){var c=a||new U;c[R](b.Xe?OSa+b.Xe+W:I,uI,b.Hb,Vf,b.As?vI+b.As+Vf:I,MPa,b.je?b.je:XE,Vf,b[Pk]?PSa+b[Pk]+Vf:I,QSa,b.alt||b.alt==I?b.alt:b[Pk]?b[Pk]:I,wI,b.Xe?Z:I);if(!a)return c[t]()}var yI="J-K-I",RSa="L3",zI='" act="',SSa='tabindex="',TSa="J-K-I-Kv-H",USa="J-K-I-J6-H",VSa="J-K-I-KC",WSa="J-K-I-K9-KP",XSa='">&nbsp;</div><div class="',YSa="J-K-I-Jz",ZSa=' style="width: ',aTa='ex"',bTa="</div></div></div></div></div>";\r
17931 function AI(b,a){var c=a||new U;c[R](nE,b.id,S,yI,J,Ao,J,b[uc]?b[uc]+J:I,RSa,zI,b[jr],Zd,b[Pk]?hE+V(b[Pk])+Vf:I,SSa,b.Ugc?b.Ugc:Ah,wl,Ao,J,TSa,wl,Ao,J,USa,wl,VSa,wl,WSa,XSa,YSa,Vf,b[ib]?ZSa+b[ib]+aTa:I,Uf,b.xh,bTa);if(!a)return c[t]()}function BI(b,a,c){Fn[z](this,b,a||Tn.S(),c)}function CI(){}var DI="Ia";function cTa(b,a){N[z](this,DI,b);this.Ti=a}function dTa(b,a){tB[z](this,b,17,a)}function EI(b,a,c){this.Mk=b;this.Ly=a;this.na=c;this.Li=G(this.ix,this)}\r
17932 function eTa(b,a,c){hy[z](this,b,c);this.qr=c;this.nM(a)}function fTa(b){return b!=-1}function gTa(b,a,c){b=a;if(c)b=Di(a,fTa);b=b;c=[];for(var d=0;d<b[u];d++){for(var f={value:b[d]},g=c[u];g>0&&c[g-1][q]>f[q];)g--;f.aDd=c[g];c[g]=f;f.hcd=c[g-1]}b=[];for(c=wm(c);c;){b[p](c[q]);c=c.hcd}b[cq]();for(d=c=0;c<a[u];c++)if(a[c]!=b[d])a[c]=-1;else d++}\r
17933 function hTa(b,a){var c=Qf(a);if(!b.za(c)){b.mb.Qf();try{for(var d=FI(b),f=d[u];f>0;){var g=d[f-1].J()[pq]();if(rx(a,g)>0)break;f--}var j,n=d[f-1],s=d[f];j=n&&s?(n.J().Nx+s.J().Nx)/2:n?n.J().Nx+1:s?s.J().Nx/2:1;var v=new py(c,b),C=nf(iTa);C[0]=a;var M=new bEa(C,j,b.B());v.set(M);my(b)}finally{b.mb.Mf()}}}function jTa(b,a){if(!b.hc())return i;if(a){a=FI(b);a=kTa(b,a)}else{a=[];b=b.Uc().Oa();for(var c=0;c<b[u];c++){var d=b[c];d.Ds()||a[p](d.J()[pq]())}}return a}\r
17934 function FI(b){if(!b.hc())return i;var a=[];b=b.Uc().Oa();for(var c=0;c<b[u];c++){var d=b[c];d.Ds()||a[p](d)}a[el](lTa);return a}function kTa(b,a){b=[];for(var c=0;c<a[u];c++)b[p](a[c].J()[pq]());return b}function lTa(b,a){if(b&&a){b=b.J().Nx;a=a.J().Nx;if(b<a)return-1;if(b>a)return 1}return 0}function mTa(b,a){this.exa=b;this.KYb=a;this.MYb=[];this.Q=new kn(this);this.Q.w(this.exa.mb.Ya(),this.exa.pua(),this.upb)}var nTa='<span tabindex="0" ';\r
17935 function oTa(b,a){var c=a||new U;c[R](nTa,b[Pk]?hE+b[Pk]+Zd:I,b.id?gE+b.id+Zd:I,iE,b[uc],W,b.yU,gB);if(!a)return c[t]()}var pTa="nX",qTa="<tr class=",rTa="Alfa2e",sTa=" id=",tTa="><td class=",uTa="nL",GI="</td><td>",vTa="</tbody></table>";function wTa(b,a){var c=a||new U;c[R](Fl,ul,J,pTa,mOa);b=b.Ti;for(var d=b[u],f=0;f<d;f++){var g=b[f];c[R](qTa,rTa,sTa,g.id,tTa,uTa,Uf);g.tXb&&xTa(g,c);c[R](GI);yTa(g,c);c[R](TG)}c[R](vTa);if(!a)return c[t]()}\r
17936 var zTa="pM",ATa='" style="color: #',BTa='" tabindex="0" role="button" aria-haspopup="true"><div class="',CTa="p6",DTa=' style="background-color: #',ETa="p8",FTa='" style="visibility:hidden">&#x25bc;</div></div></div>';function xTa(b,a){var c=a||new U;c[R](X,zTa,ATa,b.tg,MCa,b[jq],BTa,CTa,Zd,b.bjb?GJa:I,DTa,b[jq],wl,ETa,FTa);if(!a)return c[t]()}var GTa="n2",HTa='"><div class=',ITa="nU",JTa="n0",HI='<a href="',KTa='" target="_top" ',II="</div></div>";\r
17937 function yTa(b,a){var c=a||new U;c[R](X,GTa,J,b.ZKc,HTa,ITa,Uf);var d={className:JTa,title:b.dRc,href:b[Yc],yU:b.kkb},f=c||new U;f[R](HI,d[Yc],KTa,d[Pk]?hE+d[Pk]+Zd:I,d.id?gE+d.id+Zd:I,iE,d[uc],W,d.yU,hB);c||f[t]();b.YVb&&xI({Hb:b.YVb},c);c[R](II);if(!a)return c[t]()}function JI(b,a,c,d){this.DQa=b;this.VSc=a;this.AQa=c||i;this.Wlb=d||i;this.ejc=h;b.Ltb(this.fJc,this)}var LTa="n1";\r
17938 function MTa(b,a,c){var d=c.Dp()!=I&&b.ejc?LTa:I;a.id=NTa(b,c.ea());a.kkb=OTa(b,c,h);a.dRc=OTa(b,c,h);a.ZKc=d;a.YVb=c.Fga();Mp(a,b.VSc+Lj+Wf(c.CSb()));a.bjb=k;a.tXb=c.P3();if(a.tXb){a.tg=c.PO();a.bgColor=c.lK()}}function OTa(b,a,c){var d=b.Nec?a.Dp():I;c=c?Wf(a.Gf()):a.Gf();d=d!=I?[c,xl,d,xh][kd](I):c;if(b.wzb){c=d[Sc](Md);return PTa(b,a)>0?d[nc](c+1):d}else return d}function NTa(b,a){return b.EJ.X(Hz+a)}function KI(b,a){return b.EJ.b(Hz+a)}function QTa(b,a){return b.hd.ie(T,GTa,a)[0]}\r
17939 function PTa(b,a){var c=a.Gf();if(c[nc](c[u]-1)==Md)c=c[nc](0,c[u]-1);var d=c[Sc](Md);if(d==-1)return 0;a=jm(b.hp,a,b.DQa.sga());if(!a)return 0;b=b.hp[a-1].Gf();if(Mf(b,c[nc](0,d)))return c[Cc](Md)[u]-1;return 0}function LI(b,a,c,d){this.Qm=new mTa(c,d);var f=JB(b);JI[z](this,this.Qm,a,function(g){QF(this.Fh,RTa);f[bq]({view:wE,search:g.Bb(),style:g.wra})});this.Db=b;this.Z=Rz(b);this.Nec=!Jz(this.Z,539)}function MI(b,a,c,d){LI[z](this,b,a,c,d)}function STa(b){return!b.Rw()&&b.bo()}\r
17940 function TTa(b){return!b.Rw()&&!b.bo()}function NI(b){this.AP=b}function UTa(b){this.AP=b}var VTa="qk",OI='"><span id="',WTa='" idlink ',XTa='tabindex="0" role="link"',YTa='<sup class="ql">',ZTa="</sup>";function aUa(b,a){var c=a||new U;c[R](X,VTa,OI,b.dwc,S,b[uc],WTa,b[uc]?XTa:I,Uf,b[eq],gB,b.CVa?YTa+b.CVa+ZTa:I,Z);if(!a)return c[t]()}\r
17941 function PI(b,a,c,d,f,g){AD[z](this,bUa(this,b));this.oIa=d||i;b=cUa;b.content=a;b.dwc=this.X(dx);m(b,f||I);b.CVa=g||I;Q(this.ia.za().b(),aUa(b));c&&mx(this.b(),c)}var dUa="pX",eUa="pk";function fUa(b){var a=b.b(),c=b.YK?dUa:eUa;b=b.YK?eUa:dUa;var d=zg(a);if(Ye(c))jf(d,c);else Ve(c)&&dca(d,c);if(Ye(b)&&!ef(d,b))d[p](b);else Ve(b)&&cca(d,b);m(a,d[kd](J))}function bUa(b,a){b=new BF(a,b.yJa||5);b.U1(new Bm(2-b.gta().top,0,2-b.gta()[fl],0));b.so(new eE(a));return b}function QI(b){return b.b(dx)}\r
17942 function RI(b){this.X_=b}function gUa(b){this.X_=b}var hUa=" pk";function iUa(b,a,c,d){b=a[Qb](T);Q(b,c);m(b,d+hUa);c=Gg(T,NJa,b)[0];return{element:b,Myc:c}}function SI(b,a,c,d,f){LI[z](this,b,a,c,d);this.rWb=!!f;Bx(this)}var TI="^i";function jUa(b){return b.ea()==TI||b.Rw()&&b.bo()}function kUa(b){return b.ea()!=TI&&b.Rw()&&!b.bo()}\r
17943 var lUa="<div id=",UI=" class=",mUa="oo",nUa="><div class=",oUa="nM",pUa=' role="navigation"><div id=',qUa="n3",rUa="></div></div><div class=",sUa="n6",tUa="n8",uUa=">&nbsp;</div>",vUa="n4 toxOdd",wUa='<span class="CJ">',xUa='</span><span class="n5" ',yUa=">&#x25bc;</span>",zUa="</div></div><div id=",AUa="CI",BUa=' style="display: none;"><div class=',CUa="nW",DUa="nN",EUa="><div id=",FUa="></div></div></div></div>";\r
17944 function GUa(b,a){var c=a||new U;c[R](lUa,b.FTc,UI,mUa,nUa,oUa,pUa,b.ETc,UI,qUa,rUa,sUa,nUa,tUa,uUa);oTa({id:b.rVc,className:vUa,yU:wUa+V(b.sVc)+xUa+(b.bjb?GJa:I)+yUa},c);c[R](zUa,b.Vlb,UI,AUa,BUa,CUa,nUa,DUa,EUa,b.xUc,UI,qUa,FUa);if(!a)return c[t]()}function VI(b,a){AD[z](this,new eE(b));this.bL=[[],[]];this.vHb=a;this.I8=JB(b);this.Cb=sC(this[uq]())}function HUa(b,a,c){var d=b.YT;c.YIb=b?G(d,b):d;b.Gz(a,c);b.Cc()&&a==1&&IUa(b)}var JUa="CK",KUa="CL";\r
17945 function LUa(b,a,c,d,f,g){d=d?b.vHb+Lj+d:I;var j=b.W();c=j.ba(T,i,j.ba(Kd,{href:d,"class":JUa},c));m(c,KUa);b.Gz(a,new MUa(c,f,g))}function NUa(b,a){var c=0;b.cC(function(d){if(d instanceof JI)c+=d.hp?d.hp[u]:0},a);return c}function OUa(b,a,c){for(var d=0;d<b.bL[u];d++)if(d!=1||b.nm&&b.nm.Bv())for(var f,g=0;f=b.bL[d][g];g++)if(f.b()&&Zg(f.b(),a)){c(f);break}}function PUa(b,a){a&&!b.nm&&b.s7a();b.nm&&b.nm.ra(a)}var QUa="n7";function RUa(b,a){hm(b.b(Hz),QUa,a)}var SUa=" more",TUa="More";\r
17946 function UUa(b){b=NUa(b,1);if(b>0)return b+SUa;return TUa}function IUa(b){var a=b.b(Hz),c=b.bL[1][u]>0;Wm(a,c);if(c){ah(a[Tb],UUa(b));if(!b.D1b){b.H().w(a,[Zi,fj],b.N3c);b.D1b=h}}}var VUa="CM";function WUa(b){for(var a,c,d,f=0;f<b.bL[u];f++){a=k,c=i;for(var g,j=0;g=b.bL[f][j];j++)if(g.b()[uc]==VUa){if(c)Ua(c[x],a&&d?I:xd);c=g.b();d=a;a=k}else a||(a=g instanceof JI?(g.hp?g.hp[u]:0)>0:h);if(c)Ua(c[x],a&&d?I:xd)}}function XUa(b,a){b.Rwb(b.G1,k);b.Rwb(a,h);b.G1=a}\r
17947 function MUa(b,a,c){this.wa=b;this.na=a||i;this.Ela=c||i}function YUa(b,a,c){MUa[z](this,b,a,c)}function ZUa(b,a,c,d){dn[z](this,b,a);this.lFc=c;this.Ela=d||i}function WI(){}function aVa(b){oH[z](this,b.B(),5);this.W_=b}var XI="ld";function YI(b){hy[z](this,LC,b);b=gy(this.B());ih(b.ud,Gx(XI),this.x2c,k,this);Bx(this);this.Kka=new Hf}var ZI="custom";function bVa(b,a){(b=b.za(ZI))&&hTa(b,a)}var cVa="system/",dVa="custom/";\r
17948 function gEa(b,a,c){var d=Qf(a);return Mf(a,Ty)?jy(b,cVa+d,c):jy(b,dVa+d,c)}function OC(b,a,c){if(!b.hc()||c&&!b.Fi())return i;return jTa(b.za(ZI),a)}function eVa(b,a){var c=a.J().SA;c!=0&&b.Kka.set(c,a)}var fVa="/labels",aJ="ml";\r
17949 function bJ(b){VI[z](this,b,nD(b));Bx(this);this.Lh=TD(b);this.Aa=Dx(Cx(b));this.co=this.Aa.za(LC);this.Bd=rD(b);this.V_=new kn(this);if(this.co.Fi())this.p5b();else{b=this.Aa;this.V_.w(b.Ya(),b.Je()+fVa,this.p5b)}Vw(O.S(),aJ,this.Hpb,this,h);Vw(O.S(),XI,this.H2c,this,h)}var gVa="nV";function hVa(b){if(!(!b.Cc()||b.gVb))if(!(typeof PH=="undefined"||L&&!vg(Ij))){var a=b.W()[Qb](T);Q(a,PH({EN:gVa,content:I}));var c=b.b(Xx);c[o](a[Tb]);Gg(Do,gVa,c[Qc])[0][o](c[Tb][Tb]);c[Nc](c[Tb]);b.gVb=h}}\r
17950 var cJ="system",iVa="Manage labels",jVa="settings/labels",kVa="Create new label";\r
17951 function lVa(b,a){var c=b.co.za(cJ),d=b.co.za(ZI),f=b.aa.ceb()||STa,g=b.aa.Qcb()||TTa;mVa=b.aa.fQa();HUa(b,0,new SI(b.B(),a,c,jUa,h));b.rG(0);f=new MI(b.B(),a,d,f);f.wzb=b.aa.Vxb();HUa(b,0,f);HUa(b,1,new SI(b.B(),a,c,kUa));b.rG(1);HUa(b,1,new MI(b.B(),a,d,g));b.rG(1);b.zP&&b.cC(function(j){j.XXa&&j.XXa(this.zP)});LUa(b,1,iVa,jVa,function(){this.I8[bq]({view:dJ,fk:LC})},b);LUa(b,1,kVa,I,function(){this.Ks&&this.Ks.Pjd()},b)}var eJ="ta";function nVa(b){b.B().Ya()[r](new N(eJ,b))}\r
17952 function oVa(b){this.d2b=b}function pVa(b){eaa(this,b)}var fJ="<div class=",qVa="py",rVa=' idlink tabindex="0" role="link">',sVa="&nbsp;<h2 class=",tVa="pw",uVa='></h2><div class="',vVa="qn";function wVa(b,a){var c=a||new U;c[R](fJ,qVa,rVa);xI(Kw(b,{Hb:de}),c);c[R](sVa,tVa,uVa,vVa,AF);if(!a)return c[t]()}function xVa(b,a){var c=a||new U;xI(b,c);if(!a)return c[t]()}var yVa="qm";\r
17953 function zVa(b,a,c){pA[z](this,b);Bx(this);b=this.b();this.H().w(b,P,this.TZc);ik(this.b(),a);K(b,yVa);a={Hb:c,alt:a};this.aa.Nk(a);Q(b,xVa(a))}function gJ(b){AD[z](this,new gF(b));this.hea()}function AVa(b,a){b.lV=a}var hJ="Ja";function iJ(b,a,c){AD[z](this,new gF(a));Ba(this,b);this.Wq=c;this.Wq.lV||AVa(this.Wq,this);this.H().w(this.Wq,hJ,this.yka);this.ia.ha(this.Wq)}function BVa(){}function CVa(){DVa||(DVa=new BVa);return DVa}function jJ(b){Bx(this);gJ[z](this,b)}\r
17954 function kJ(b,a,c){c=c||Mx().Gn(14,a,h);iJ[z](this,b,a,c);this.lb=yy(a);this.Wq.jB(EVa(this))}var FVa="bx_navbs_";function EVa(b){b=b.lb.db(FVa+b[ec]);return b!=i?!!Number(b):h}var lJ="labelslppnav";function GVa(b,a){kJ[z](this,lJ,b,a);this.cg=KC(b);this.LU=new bJ(b);this.ha(this.LU)}function HVa(){}function IVa(b){AD[z](this,new gF(b));this.Aj=[]}function JVa(b){return function(a,c){var d=b?a.aZ:a.a1,f=b?c.aZ:c.a1;return d<f?1:d>f?-1:a.DXa>c.DXa?1:-1}}function KVa(b,a,c){LVa(b,a,a[pq](),c)}\r
17955 function LVa(b,a,c,d){var f=b.sRb(c);b.hGa(new MVa(a,c,mm(f)?f:d,f,b.DXa++))}function qH(b,a){for(var c,d=0;c=b.Aj[d];d++)if(c.q7==a)return d;return i}function MVa(b,a,c,d,f){this.Ra=b;this.q7=a;this.aZ=c;this.a1=c>100?c:d||c;this.DXa=f}function mJ(b){IVa[z](this,b);this.Aa=Dx(Cx(b));var a=fy(b).ud;this.lb=yy(b);a.Xsb?this.rKb():ln(this.H(),a,Fx(oy),this.rKb);Mx().Kh(1,this)}\r
17956 function NVa(b,a,c){if(a!=c)if(!(b.Aj[a].aZ>=100))if(!(c<a&&b.Aj[c].aZ>=100)){var d=b.Aj[a];kf(b.Aj,a);km(b.Aj,d,c);yA++;d=b.ia;var f=d.rb(a);d.Vp(a);d.Jf(f,c);zA();OVa(b)}}function PVa(b,a){return b.q7==a.q7}function QVa(b,a){return a}\r
17957 function RVa(b){var a=nf(b.Aj);a[el](JVa(h));a=Wva(a,b.Aj,PVa,QVa);for(var c=b.iVa.vc(),d=0;d<b.Aj[u];d++)c[Pb](b.Aj[d].q7);for(d=0;d<a[u];d++){var f=b.Aj[a[d]];f.lma(f.aZ)}var g=0,j;for(d=0;d<=a[u];d++){j=d<a[u]?a[d]:b.Aj[u];if(j>g){var n=j-g,s=NaN,v=NaN;if(d>0){var C=a[d-1];s=b.Aj[C].aZ}if(d<a[u])v=b.Aj[j].aZ;f=NaN;if(v==s){for(var M=C-1;M>=0;M--)if(b.Aj[M].B6()>s){f=M;break}if(ia(f)){s=NaN;f=-1}else s=b.Aj[f].B6();n++}s=ia(s)?100:l.min(s,100);s=SVa(v,s,n);if(!ia(f)){v=s.pop();for(M=f+1;M<=C;M++){f=\r
17958 b.Aj[M];c.set(f.q7,v);f.lma(v)}n--}for(v=0;v<n;v++){M=s.pop();f=b.Aj[g+v];c.set(f.q7,M);f.lma(M)}}g=j+1}b.iVa=c;return Li(c.Sb()[el](),function(Y){return Y+xj+c.J(Y)})[kd](Bl)}var nJ="sx_no",oJ="bx_lq",pJ="chat";function OVa(b){var a=RVa(b),c=b[uq](),d=b.lb.db(nJ);if(a!=d){c=new lF(c);b.lb.Yc(nJ,a);c.Yc(nJ,a);b[uq]();a=b.lb.db(oJ);d=qH(b,pJ);d=qH(b,ZI)<d;if(a!=d){b.lb.Yc(oJ,d);c.Yc(oJ,d)}c.bh=h;c[Mb]()}}\r
17959 function SVa(b,a,c){var d,f=0;if(ia(c))e(Error(".154`"+c));if(ia(b)&&ia(a))d=0;else if(ia(b))d=l[ob](a)-c-1;else if(ia(a))d=l[rb](b);else{if(b>=a)e(Error(".155"));var g=b>=0?1:-1,j=a>=0?1:-1;b=l.abs(b);a=l.abs(a);var n=l.max(String(l[rb](b))[u],String(l[rb](a))[u]);b=nx(b,n)[mb](/\./,I);var s=nx(a,n)[mb](/\./,I);for(var v=a=0;;){var C=a>=b[u]?0:Number(b[xb](a))*g;v=10*v+((a>=s[u]?0:Number(s[xb](a))*j)-C);a++;if(v>c){f=n-a;j=b[Zc](0,a);d=Number(j)*g;g=a-j[u];if(g>0)d*=l.pow(10,g);break}}}g=[];j=l.pow(10,\r
17960 l.abs(f));for(n=1;n<=c;n++){b=d+n;if(f>0)b*=j;else if(f<0)b/=j;g[p](b)}return g}var TVa="pz pp Dv",UVa="p9";function qJ(b){Bx(this);PI[z](this,b,this.aa.un(),TVa,G(this.rSa,this),this.jmb(UVa));this.jb=JB(b)}function rJ(){}var sJ="tools";function VVa(b,a){Bx(this);kJ[z](this,sJ,b,a);this.c2b=new Hf;this.hea()}function WVa(b,a){return b.c2b.J(a)}function tJ(b,a){pB[z](this,b,a,2);this.wf=[];this.uj=h}function uJ(b,a){hf(b.wf,a)}function vJ(b){tJ[z](this,b,5);Bx(this)}function XVa(b){this.Lc=b}\r
17961 function YVa(){}function wJ(b){return b.J(Rd)}function ZVa(b){var a=new YVa(b);b[kq](Rd,a);return a}function xJ(b,a){vH[z](this,a);this.V=b;this.EB=wJ(b);this.EB.zC==kD&&this.sf(1)}function yJ(){}function aWa(){var b=vA+bWa[t](16);bWa++;return b}function cWa(b){this.Jb=b}function dWa(b,a,c,d,f){this.zYb=b;this.YK=a;this.bF=c;this.H_a=d||0;this.XY=f||0}function zJ(b,a){this.Jb=XF;this.Iua=b;this.Ada=a}function eWa(){this.Wra=0}function AJ(b,a){AD[z](this,a);this.xa=b}\r
17962 function BJ(b,a,c,d){tB[z](this,b,77,d);this.pkb=a;this.okb=c;this.uj=h}function CJ(b,a){b=[];for(var c,d=0;c=a[d];d++)b[p](Vf+(c+Vf));return Wf(b[kd](hg))}function fWa(b){tB[z](this,b,16,1)}function gWa(b,a){tB[z](this,b,46,a)}function hWa(b,a){tB[z](this,b,98,a);this.uj=h}function iWa(b,a){tB[z](this,b,45,a)}function jWa(b,a){var c=a||new U;c[R](aH);b=b.Zgd;for(var d=b[u],f=0;f<d;f++)c[R](b[f]);c[R](Z);if(!a)return c[t]()}var kWa='"><div act="',lWa="AP",mWa='" tabindex="0">',nWa="Refresh";\r
17963 function oWa(b,a){var c=a||new U;c[R](X,Ao,kWa,V(b.Odd),S,lWa,mWa,nWa,II);if(!a)return c[t]()}function DJ(b){this.Bn=b}var pWa="Delete forever",qWa="<b>Archive</b>",rWa="Move to Inbox",sWa="Discard drafts",tWa="Not spam",uWa="Remove star",vWa="Report spam",EJ="Delete";\r
17964 function FJ(b){VB[z](this,b);this.Cb=sC(b);this.om=Mx().Gn(19,b);this.Xk(this.om);Bx(this);this.Yf={};Bx(this);if(!GJ){b=GJ=new Hf;b.set(17,HJ(pWa,17));b.set(7,HJ(qWa,7));b.set(8,HJ(rWa,8));b.set(16,HJ(sWa,16));b.set(18,HJ(tWa,18));b.set(4,HJ(uWa,4));b.set(9,HJ(vWa,9));b.set(10,HJ(EJ,10));this.aa.Oca(GJ)}}function wWa(b){var a=Mx().Gn(16,b.B());a.b2=b.b2;a.gp(b.On);a.T1(b.Me);for(var c=b.ge.Sb(),d=0;d<c[u];d++){var f=c[d];a.ge.set(f,b.ge.J(f))}return a}var xWa="mam",yWa="Pl",IJ="%%",zWa='More actions<div class="AZ J-J5-Ji">&nbsp;</div>';\r
17965 function AWa(){JJ.id=xWa;m(JJ,yI);var b;b=new U;b[R](X,yWa,J,Ao,W);AI({id:IJ+V(JJ.id)+IJ,xh:zWa},b);b[R](Z);b=b[t]();return b}var BWa="move",CWa="tag",DWa="J-K-I-Js-KK",EWa='Move to<div class="AZ J-J5-Ji">&nbsp;</div>',FWa="J-K-I-Js-Kc",GWa='Labels<div class="AZ J-J5-Ji">&nbsp;</div>';\r
17966 function HWa(b){JJ.zVc=BWa;JJ.Cmd=CWa;m(JJ,yI);JJ.Rec=IWa(b);JJ.BVc=GJ.J(8);b=new U;b[R](X,yWa,J,Ao,W);JJ.Rec?AI({id:IJ+V(JJ.zVc)+IJ,className:V(DWa),xh:EWa},b):b[R](JJ.BVc);AI({id:IJ+V(JJ.Cmd)+IJ,className:JJ.Rec?V(FWa):I,xh:GWa},b);b[R](Z);b=b[t]();return b}function JWa(b){JJ.Odd=20;var a=new U;a[R](oWa(JJ));b=b.aa.XRb();Ff(b,function(c){a[R](c)});return a[t]()}var KWa="J-K-I-KE";\r
17967 function LWa(b){KJ[0]=b.Ar(13)?MWa(b):I;for(var a=KJ[0]?0:1,c=1,d=GJ.Sb(),f=0;f<d[u];f++){var g=d[f];if(b.Ar(g))KJ[c++]=GJ.J(g)}for(b=c-1;c<KJ[u];)KJ[c++]=I;for(c=a;c<=b;c++)KJ[c]=KJ[c][mb](RSa,[c>a?FWa:I,c<b?DWa:I,c==a?KWa:I][kd](J));JJ.oS=KJ;a=new U;a[R](X,yWa,J,Ao,W);c=JJ.oS;b=c[u];for(d=0;d<b;d++)a[R](c[d]);a[R](Z);a=a[t]();return a}var NWa='Remove label "';function MWa(b){b=NWa+(Wf(b.Me)+Vf);return HJ(b,13)}\r
17968 function OWa(b,a){b.Jy=a;b.Owa=h;Q(b.b(),a[mb](/%%([A-z0-9_]+)%%/g,function(c,d){return b.X(d)}));b.Cc()&&b.b2&&PWa(b)}function PWa(b){b.H().w(b.b(),[Xi,fj],b.p8,h,b)}function QWa(b,a){if(b.gvc!=a){b.p8();for(var c=[9,18,98],d,f=0;d=c[f];f++){b.Yf[d]&&b.Yf[d].Ac(!a);b.ge.set(d,!a)}b.gvc=a}}function IWa(b){if(!b.Ea)return k;switch(b.Ea.Ga()){case cz:case pz:case Jy:case az:case Oy:case ul:case nz:case iz:case sz:case fz:case jza:return k}return h}\r
17969 function HJ(b,a,c){JJ.id=I;JJ.xh=b;Op(JJ,a);ik(JJ,c);return AI(JJ)}function LJ(){}function RWa(){this.Zpa=[]}function MJ(b,a,c,d){Qn[z](this,b,a,c,d||new RWa)}function SWa(b,a){b.Onb=a;NJ(b)}function NJ(b,a){if(b.Onb)b.Onb(b,a||I)}function OJ(b,a){Sn[z](this,a,b)}function TWa(b){b.Xm(h);Yva(b,b.gm);Fh&&b.gm[Wb](lNa,Gj);if(b.e0b)b.gm.maxLength=b.e0b}function UWa(b){if(b.Ve){nh(b.Ve,zm,b.kUb,k,b);nh(b.gm[A],P,b.H4b,k,b);b.Ve.D();b.Ve=undefined;b.nLa=undefined}}var VWa="(^|[- ,_/.:])",PJ="span";\r
17970 function WWa(b,a){if(b.gEc!=a){if(b.cxa)Fa(b.cxa[x],a==I?ud:yd);if(b.HGa&&b.nLa){var c=a[Kb](/^(.+),[ ]*([^,]*)$/),d=c&&c[1]?c[1][Cc](wj):[];if(a[nc](a[u]-1,1)==wj||d[u]!=b.nLa[u]){var f=d[d[u]-1]||I;if(Kn(b)&&f!=I){var g=Kn(b).un();if(g[od]()[Db](f[od]())==0){d[d[u]-1]=g;pa(b.gm,d[kd](wj)+wj)}}b.nLa=d;b[r](mj);b.dp(-1)}if(c)a=c[u]>2?Pf(c[2]):I}c=new RegExp(VWa+ox(a),ii);for(f=b.eEc;d=b.bf[f];f++)if(d instanceof MJ)NJ(d,a);else if(!(b.z9&&b.z9[d.ea()]))if(g=d.un()){var j=g[Kb](c);if(a==I||j){d.ra(h);\r
17971 (j=g[Db](j[0]))&&j++;a==I?d.xb(g):d.xb(b.W().ba(PJ,i,g[nc](0,j),b.W().ba(Ph,i,g[nc](j,a[u])),g[nc](j+a[u],g[u]-a[u]-j)))}else d.ra(k)}else d.ra(a==I);b.gEc=a}}function XWa(b,a){for(a=a;a;){var c=Yg(a),d=b.li().IMa(a);if(d){d.wa=a;b.ha(d);d.Pb(a)}a=c}}var YWa="AX",ZWa="AW",aXa="AR";\r
17972 function QJ(b,a,c,d,f){var g=typeof PH!="undefined"&&!(L&&!vg(Ij));b=qC(b).W();b=f?new OJ(undefined,b):new Sn(b,g?LJ.S():undefined);b.ra(k);b.bY=k;b.Qk(f||k);if(g)d=PH({EN:YWa,content:d});Q(c,d);b.Pb(c);a.Zs(b);K(b.b(),g?ZWa:aXa);this.Ls=b}function bXa(b,a,c){ih(b.Ls,no,a,k,c)}var cXa="filterchange";function dXa(b,a,c,d,f,g){QJ[z](this,a,c,d,f,g);this.Qm=b;ih(this.Ls,cXa,this.l3c,k,this);ih(this.Ls.b(),ij,this.o3c,k,this)}function eXa(b,a,c){b.FFb=c?G(a,c):a}function fXa(b,a,c){b.aLb=c?G(a,c):a}\r
17973 function gXa(b,a,c){b.M_b=c?G(a,c):a;SWa(b.Ls.rb(rn(b.Ls)-1),function(d,f){d.ra(f==I)})}function hXa(b,a,c){a=c?G(a,c):a;SWa(b.Ls.rb(rn(b.Ls)-2),a)}function iXa(b,a,c,d,f,g){dXa[z](this,b,a,c,d,f,g);this.Qm=b;this.Cb=sC(a);this.lq=c;ih(this.Ls,Wn,this.Vm,k,this);ih(this.Ls,mj,this.j3c,k,this);this.tGb=this.Ls.rb(rn(this.Ls)-3);this.tGb.ra(k)}\r
17974 function jXa(b,a,c){for(var d,f=0;d=b.Ls.rb(f);f++)if(d instanceof RJ){var g=d.un();if(d.Dda!=(b.Qm.HT(g)||0))switch(d.Dda){case 0:c[p](g);break;case 2:a[p](g);break}}return a[u]+c[u]>0}function kXa(b,a){var c=rn(b.Ls),d=b.Ls.rb(c-2);c=b.Ls.rb(c-1);if(a){d.ra(k);c.ra(k)}else{var f=b.Ls.GE();NJ(d,f);NJ(c,f)}b.tGb.ra(a)}function SJ(){this.Zpa=[]}function RJ(b,a,c,d){Qn[z](this,b,a,c,d||new SJ);this.Maa(h)}function lXa(b,a){mXa(b,a);b.k3a=a==1}var nXa="-Ky-Jp",oXa="-JR-Jp";\r
17975 function mXa(b,a){if(b[r](a!=0?Yia:Zia)){b.Oe(16,a!=0);b.Dda=a;a=b.li();a.kT(b,a.Qb()+nXa,b.Dda==1);a.kT(b,a.Qb()+oXa,b.Dda==2)}}function pXa(b){this.j0=b}var qXa="J-M-JJ",rXa='"><div></div><input type="text" maxlength="40" ignoreesc="true" /><div class="',sXa="A0",tXa="J-M-Jz",TJ='</div><div class="';\r
17976 function uXa(b,a){var c=a||new U;c[R](X,qXa,rXa,sXa,xF,tXa,W);for(var d=b.Ti,f=d[u],g=0;g<f;g++)c[R](X,uo,zI,76,W,V(d[g]),Z);c[R](TJ,po,mE);d=b.Bz;f=d[u];for(g=0;g<f;g++){var j=d[g];c[R](X,uo,zI,j,W,vXa[j],Z)}c[R](X,po,mE);wXa(b,c);if(!a)return c[t]()}var xXa="J-LC",yXa="J-LC-Jz",zXa="J-LC-Jo",AXa="<hr>",UJ="J-JK",BXa='" style="display: none;">',CXa="Apply";\r
17977 function DXa(b,a){var c=a||new U;c[R](X,qXa,rXa,sXa,xF,tXa,W);for(var d=b.Ti,f=d[u],g=0;g<f;g++)c[R](X,xXa,wl,yXa,wl,zXa,J,Ao,mE,V(d[g]),II);c[R](Z,b.rG?AXa:I,X,UJ,BXa,CXa,Z);wXa(b,c);if(!a)return c[t]()}function EXa(b,a){var c=a||new U;b=b.Bz;for(var d=b[u],f=0;f<d;f++)c[R](X,uo,W,DCa[b[f]],Z);if(!a)return c[t]()}var FXa="Create new";function wXa(b,a){b=a||new U;b[R](X,UJ,zI,14,W,FXa,TJ,UJ,zI,78,W,iVa,Z);if(!a)return b[t]()}\r
17978 function GXa(b,a){this.V=b;this.kl=[];this.Jia={};if(a)for(b=0;b<a[u];b++){var c=new bEa([a[b]],b,this.V);this.Jia[c.ea()]=c;this.kl[p](c)}this.I1={}}var HXa="/custom/*";\r
17979 function VJ(b){VB[z](this,b);Bx(this);this.Aa=Dx(Cx(b));this.Cb=sC(b);this.ge.set(76,h);this.ge.set(77,h);this.ge.set(14,h);var a=this.Aa,c=a.za(LC);if(c){this.H().w(a.Ya(),c.Je()+HXa,this.B2c);this.K2()}else this.Qm=new GXa(this.B(),[]);this.dMb=[];this.jb=JB(b);this.cg=KC(b);b=QB(8);b.NEa[p](fz,cz,Zy);b=QB(9);b.NEa[p](kz,sz,Py,ez);b=QB(10);b.NEa[p](kz,Py,ez);b=QB(4);b.NEa[p](sz);TB(this,78,h)}\r
17980 function IXa(){for(var b=xf(vXa),a=[],c=0;c<RB[u];c++)a[p](RB[c][jr]);for(c=0;c<b[u];c++)jf(a,da(b[c],10));return a}function JXa(b,a,c,d,f,g){var j=new QH(i,i,CI.S(),b.W());j.CXb=Jz(Rz(b.B()),1033);j.Pb(a);j.OZb=c;j.Jfd=d;j.D7=g||k;Dn(j,64,h);ih(j,pn,f,k,b);return j}function KXa(b,a){if(a.vj())a.Hi(k);else{b=[b.U_,b.XM,b.hV,b.aa.Uga()];for(var c=0;c<b[u];c++){var d=b[c];d&&d.Hi(d==a)}}}function LXa(b,a){if(L)for(b=b;b;b=b[A])if(b[ed]&&mia(b)==ee)Ca(b[x],a||I)}\r
17981 function MXa(b,a){if(CD())switch(a){case 64:case 42:case 95:return k}return h}var WJ="Please enter a new label name:",NXa="New Label";function OXa(b,a){QC(b.cg,WJ,I,NXa,G(b.s3,b,a),iA(b.B()))}\r
17982 function PXa(b){if(b.iV){b.hV.Zs(i);b.iV.fe().D()}var a=[],c=b.Dd();Ff(b.Qm.Jo(),function(s){s=s.ea();s!=c&&a[p](s)});var d={Ti:a,Bz:xf(vXa)};b.iV=new QJ(b.B(),b.hV,b.Hmb,uXa(d),h);bXa(b.iV,b.aQ,b);hXa(b.iV,b.vSa,b);d=b.iV.fe();for(var f=0,g,j=0;g=d.rb(j);j++){var n=g.b();Number(n[Uc](fG)||n.act)==76&&awa(g,a[f++])}ih(b.iV.fe(),Wn,b.V3c,k,b)}\r
17983 function QXa(b){if(b.DA){ph(b.DA.fe().b());b.U_.Zs(i);b.DA.fe().D()}b.zLa=[];for(var a=Li(b.Qm.Jo(),function(j){return j.ea()}),c=0;c<a[u];c++)b.zLa[p](JC(a[c]));c={Ti:a,rG:a[u]>0};b.DA=new iXa(b.Qm,b.B(),b.U_,b.jkb,DXa(c),h);bXa(b.DA,b.aQ,b);hXa(b.DA,b.vSa,b);eXa(b.DA,b.t3,b);fXa(b.DA,b.fUc,b);gXa(b.DA,b.j7b,b);var d=b.DA.fe(),f=0,g;for(c=0;g=d.rb(c);c++)g instanceof RJ&&awa(g,a[f++]);ih(b.DA.fe(),Wn,b.t2c,k,b)}\r
17984 function RXa(b){var a=IXa(b),c={Bz:a};b.hn=new QJ(b.B(),b.XM,b.p2a,EXa(c));bXa(b.hn,b.aQ,b);var d;for(c=0;d=a[c];c++)b.hn.fe().rb(c).kb=d}function SXa(b,a,c){Ff(b.Qm.Jo(),function(d){d=d.ea();if(!Mf(d,Ty)){var f=a[d]==c?2:a[d]>0?1:0;this.Qm.HT(d)!=f&&this.Qm.hCa(d,f)}},b);b.Y6a=c;b.CGa=k}function TXa(b){b.CGa||Ff(b.Qm.Jo(),function(a){a=a.ea();Mf(a,Ty)||this.Qm.hCa(a,a==this.Me?2:1)},b);b.Y6a=0;b.CGa=h}\r
17985 function UXa(b){return Xwa(b.ge,function(a,c){switch(Number(c)){case 12:case 13:case 14:case 76:case 77:case 78:return k;default:return a}})}function VXa(b){b.hn||RXa(b);return b.hn.fe()}var XJ='<tr class="',WXa="zfUHAf",YJ='"><td class="',ZJ="MZZu1b",XXa='"><input type="checkbox" style="visibility:hidden">&nbsp;</td><td class="',YXa='"></td></tr>';function ZXa(b,a){b=a||new U;b[R](XJ,WXa,YJ,ZJ,XXa,ZJ,OH,ZJ,YXa);if(!a)return b[t]()}\r
17986 function aYa(b,a){b=a||new U;b[R](XJ,WXa,YJ,ZJ,OH,ZJ,OH,ZJ,YXa);if(!a)return b[t]()}var bYa='" colspan=3 style="text-align:center">';function cYa(b,a){var c=a||new U;c[R](XJ,WXa,YJ,ZJ,bYa,b.ke,TG);if(!a)return c[t]()}function dYa(b,a){b=a||new U;b[R](vTa);if(!a)return b[t]()}function eYa(){}function fYa(){}function gYa(){this.Cx={}}function hYa(b,a){for(var c=[],d=0;d<a[u];d++){var f=a[d];if(b.Vo(f)){delete b.Cx[f];c[p](f)}}b[r](new iYa(c))}function jYa(b){hYa(b,xf(b.Cx))}\r
17987 function kYa(b,a){if(b.Cx[a])delete b.Cx[a];else b.Cx[a]=h;b[r](new iYa([a]))}var lYa="selection";function iYa(b){N[z](this,lYa);this.kh=b}function mYa(){this.Ovb=new Hf;this.gIb=Zx}function aK(b,a,c){Ba(this,b);this.ke=a;this.thd=c}\r
17988 function bK(b,a,c){AD[z](this,new gF(b));this.Ll=a;this.Aa=this.Ll.mb;this.Og=c.Jw();this.E_=c.E_;this.az=c.Ut();this.LBa=c.LBa;this.cXa=c.cXa;this.Rf=this.az*this.Og;this.Fia=new Hf;this.qi=new Hf;this.Om=[];this.vl=c.a_b||new gYa;this.ynb=c.T2a;this.n8=c.n8;this.Gka=[];this.GUa={};this.PD=c.PD||nYa;this.fkb=c.fkb;this.na=new eYa;this.jU=[];this.Fbb=[]}function oYa(b){return b.Ll.J().xK()}function pYa(b,a,c){qYa(b,a,c);cK(b);rYa(b)}\r
17989 function qYa(b,a,c){if(b.NS)return k;var d=!sYa(b);b.Bh&&a!=b.elb&&a==kD&&d&&b.vda();if(b.Bh)b=k;else if(d){b.Kd.rg();b.elb=a;d=b.na.UKb()||new zRa;d[Ok](b.Rf);d.Cf=b.Og+b.ynb;d.zja=b.Og-b.n8;d.lma(a);c&&d.axb(c);b.Bh=b.Kd[pb](d);a==Ph&&b.Bh.Se(I);b.Bh.Ie(b);b.Bh.lB(b);b.na.a7b(b.Bh);b.qca();b=h}else{a=b.Ll.J().xK();if(b.az>0&&a<=b.Rf){a=l.max(0,l[rb]((a-1)/b.Og));b.mha(a)}b=k}return b}\r
17990 function tYa(b,a){a=a||new zRa;var c=IRa(b.Kd);if(c){a.wwb(c);c=b.Kd;var d=HRa(c);c.Eo=d;c.L8=d;a[Ok](d);a.Cf=b.Og;a.lma(kD);b.Bh=b.Kd[pb](a);b.Bh.Ie(b);b.Bh.lB(b);b.qca()}}function sYa(b,a){a=a?b.Og+a:b.Og;a-=b.n8;return FRa(b.Kd,b.Rf,a)&&b.Kd.Es()}function cK(b){if(b.Lj&&b.Ll.Fi()&&b.Kd.Es()){b.na.qpa();var a=b.E_?1E3:b.Og;if(!b.nR||b.EF<a)uYa(b)}}var vYa="1.9b",wYa="Ma";\r
17991 function uYa(b){var a=b.Kd.J(b.Rf);a=a&&a.hc();var c=FRa(b.Kd,b.Rf,b.Og);if(a||c){xYa(b);yYa(b);if(b.EF==0){b.na.xHa();Ff(b.jU,function(n){n.xHa()})}b.Lj.AHa();c=0;for(var d=b.E_?1E3:b.Og,f=b.EF;f<d;f++)if((a=b.Kd.J(b.Rf+f))&&a.hc()){var g=a.J(),j=g.ea();b.Lj.QGa(g);b.Fia.set(j,a);a.Iz();b.qi.set(j,g);b.Om[p](g);c++}else break;if(c){b.Lj.PLa();b.EF+=c;rYa(b)}if(FRa(b.Kd,b.Rf,b.Og)){b.EGa=h;Ff(b.Fbb,B());b.sGa();rYa(b);if(b.elb==kD&&b.cXa)b.JQ();else b.Tl&&kfa.J()&&Fh&&!vg(vYa)&&b.Lj.MPb();b.NS=b.fkb}b.na.dN();\r
17992 b[r](wYa)}}function rYa(b){if(b.nR||b.NS)if(b.EF&&b.ft==2){b.Mn(0);b.ft=1}else if(b.EGa&&b.ft==3){b.Mn(b.EF-1);b.ft=1}else if(b.EGa&&b.ft==4){b.Mn(zYa(b,b.Lfc,b.Om));b.ft=1;b.Lfc=i}else if(b.ft>=100)if(b.na.Rcc())b.ft=1}function zYa(b,a,c){var d=c[u];if(d==0)return-1;var f,g;for(f=0;f<d;f++){g=b.PD(a,c[f]);if(g<=0)break}if(g==0||f==0)return f;if(f>=d)return d-1;if(f==0)return d;return f}\r
17993 function AYa(b){var a=b.Bh;b.Bh=i;var c=k;if(a.Vj())b.na.XTa(a);else if(a.h1()){c=qYa(b,b.elb);if(!c){b.na.b7b(a);cK(b);rYa(b)}}else b.na.XTa(a);b.qca();b.na.Z6b(a)}var BYa="Co";\r
17994 function xYa(b){if(!b.nR){Ff(b.jU,function(d){d[kr]()});Ff(b.Fbb,function(d){d[kr]()});b.na.i6b();var a=b.kda.b();Q(a,I);b.p4a=0;L&&K(a,BYa);if(b.ft==1&&b.Th>=0&&b.Th<b.Om[u]){b.ft=4;b.Lfc=b.Om[b.Th]}b.Lj.Lub();b.EF=0;b.EGa=k;b.qi[bc]();a=b.Fia.Oa();for(var c=0;c<a[u];c++)a[c].bB();b.Fia[bc]();Ia(b.Om,0);b.Th=-1;Ia(b.Gka,0);b.GUa={};b.nR=h;b.eKa=k}}var dK="sb";function CYa(b){var a=b.vl.XG();if(a==GF)b.hPa=2;else if(a==dK)b.hPa=1}\r
17995 function yYa(b){if(b.hPa==1){b.Qz(Zx);jYa(b.vl)}else b.hPa==2?b.Qz(Zx):b.Qz(b.vl.XG());b.hPa=0}function eK(b){b.Tl&&b.Lj.hB(b.Th)}function nYa(b,a){b=b.ea();a=a.ea();var c=b[u]-a[u];return c?c:b<a?-1:b>a?1:0}function DYa(b,a,c,d){this.V=b;this.Qdd=a;this.Mvc=c;this.na=d?d:i;this.Dz=this.V.J(XC);this.Hh=new hC(1E4,this.Dz)}function EYa(b){var a=Zf();b.DRc=a;b.xya=a+FYa(b,b.Dz.TZ(a));GYa(b,a)}function FYa(b,a){for(b=0;b<HYa[u];b+=2)if(a<HYa[b]||HYa[b]==-1)return HYa[b+1];return 12E4}var IYa=":23";\r
17996 function GYa(b,a){if(b.ab){cA(b.ab);b.ab=i}if(b.Hh)if(a>=b.xya)if(b.Hh.My()&&b.Mvc[z](b.na))b.bWa();else b.ab=bA(IYa,b.ix,1E4,b);else b.ab=bA(IYa,b.ix,b.xya-a,b)}function JYa(b,a,c){this.vl=b;this.xa=a;this.Ea=c}function KYa(b,a){b=a||new U;b[R](vTa);if(!a)return b[t]()}function LYa(b,a){var c=a||new U;c[R](XJ,b.oaa,Gl,b.cM,W);if(!a)return c[t]()}var fK="</tr>";function MYa(b,a){b=a||new U;b[R](fK);if(!a)return b[t]()}\r
17997 function gK(b,a){var c=new eE(b[uq]());AJ[z](this,b,c);this.hg=c;this.vl=b[Qk]();this.zC=a.zC;this.TD=a.TD;this.TD.Ig(this);this.ZJb=a.SZa;this.GDa=a.GDa;this.Cb=sC(this[uq]())}function NYa(b,a,c){b.GB=-1;b.FIa=i;var d=hK(b,a);if(d){var f=iK(b,d),g=b.xa[Vp](f);if(c){b.GB=a;b.FIa=f}a=jK(b,g,2,i);b.TD.uz(d,a)}}function OYa(b,a,c){var d=b.xa[Vp](iK(b,c));d=jK(b,d);b.TD.o2c(a,c,d)}function PYa(b,a){for(var c=b.hg.b();a&&a!=c;){var d;if(a.id&&(d=b.td(a.id))&&Mf(d,RE))return a;a=a[A]}return i}\r
17998 function iK(b,a){if(a==i)return I;return b.td(a.id)[Zc](1)}function hK(b,a){b=b.hg.b();for(b=Wg(b);b&&a>=0;){var c=Wg(b);if(a>=c[kl][u])a-=c[kl][u];else return c[kl][Ab](a);b=Yg(b)}return i}function jK(b,a,c,d){var f=b.vl.Vo(a.g_());b=a.ea()==b.FIa;return new dWa(a,f,b,c,d)}function QYa(){}function RYa(){this.yJ=[]}function kK(b,a){this.Jb=b;this.ey=a}function lK(b){this.Jb=b}var mK="date";function nK(){this.Jb=mK}function oK(b){this.uB=b}var SYa="icons";function pK(){this.Jb=SYa;Bx(this)}\r
17999 function qK(b){this.DOa=b}var rK="personal";function sK(b){this.Jb=rK;this.fu=b}var TYa="yW";function UYa(b,a){var c=a||new U;c[R](nE,b.Uhd,S,TYa,W,b.zuc,b.Vhd,Z);if(!a)return c[t]()}var VYa="senders";function tK(){Bx(this);this.Jb=VYa}function WYa(b,a){var c=new U;a.ppa&&Ff(a.ppa,function(d){c[R](d(a))});a.zuc=c[t]()}function XYa(b){this.vcc=b}var YYa="star";function ZYa(){this.Jb=YYa;Bx(this)}function aZa(b){this.qZa=b}function uK(b){this.mkb=b}function bZa(b,a){Bx(this);this.Ea=b;this.cg=a}\r
18000 function cZa(b,a,c){a[p](qEa(b.cg,c))}var dZa="xS",eZa="xT",fZa='<div class="y6"><span id="',gZa='&lrm;<span class="y2">&nbsp;-&nbsp;';function hZa(b,a){var c=a||new U;c[R](X,dZa,wl,eZa,W);iZa(b,c);FQa({WVb:fZa+b.qgc+W+b.m2+gB+(b.xfc?gZa+b.xfc+gB:I)+Z},c);c[R](II);if(!a)return c[t]()}var jZa="yi";function iZa(b,a){var c=a||new U;if(b.dxa){c[R](X,jZa,Gl,b.nkb,W);kZa(b,c);c[R](Z)}if(!a)return c[t]()}var lZa='">&nbsp;</div>';function kZa(b,a){var c=a||new U;c[R](b.dxa,X,vl,lZa);if(!a)return c[t]()}\r
18001 var vK="subject";function wK(b,a){this.Jb=vK;this.mkb=new bZa(b,a)}function mZa(b,a){b=I;if(a.GPa()&&a.dJb)b=J+a.dJb;return a.sH()+b}function nZa(){this.oq=[]}function xK(b,a){a.Ig(b);b.oq[p](a)}function oZa(b,a){for(var c=0;c<b.oq[u];c++)if(b.oq[c][pq]()==a)return b.oq[c];return i}function pZa(b,a,c,d){var f=a[Zb];if(f==P||f==ej)b.V8(a,c,d);else if(f==ij)b.BTa(a,c,d);else if(f==fj)nm(a,2)?b.h5b(a,c,d):b.g5b(a,c,d);else f==pj&&b.ATa(a,c,d)}var qZa="<table>";\r
18002 function rZa(b,a,c){var d=new U;if(L){d[R](qZa);yK.oaa=b.e_(c);yK.cM=sZa(b,c);LYa(yK,d);tZa(b,c,d);MYa(i,d);d[R](VA);b=b.W()[Qb](T);Q(b,d);d=Wg(b)[kl](0);for(b=0;b<d[cl][u];b++){m(a[cl][b],d[cl][b][uc]);a[cl][b].id=d[cl][b].id;Q(a[cl][b],d[cl][b][wk])}}else{tZa(b,c,d);m(a,b.e_(c));Q(a,d)}}function tZa(b,a,c){for(var d=0;d<b.oq[u];d++)b.oq[d].sW(a,c)}function sZa(b,a){return a[Vp]()?b.Zj(RE,a.ea()):I}function zK(b){this.oq=[];this.ub=b[Wq];Bx(this);this.aa.wc()}function uZa(b){this.paa=b}\r
18003 function AK(b){this.ub=b}function BK(b,a){this.ub=a[Wq];this.vl=a[uk];this.Ea=a[Pc];this.V=b;this.Ixb=h;Bx(this);gK[z](this,a.ZZb,vZa(this,a))}var wZa="nA",CK="xY",xZa=" zt";function vZa(b,a){for(var c=new QYa,d=b.iLb(a),f=b.aa.Acb(a)||[new zJ(wZa,CK),new ZYa,new tK,new sK(a.Gma),new wK(a[Pc],KC(b.V)),new pK,new nK],g=0,j;j=f[g];g++)xK(d,j);c.TD=d;d=b.i7a(a);c.SZa=d;c.GDa+=xZa;b.aa.Y_a(c,a);return c}function yZa(b,a,c,d){this.xa=a;this.pA=c;this.Ea=d}function zZa(b,a){this.xa=b;this.pA=a}\r
18004 function AZa(b,a){this.jb=JB(b);this.Ea=a}function DK(b,a,c){bK[z](this,b,a,c);this.Xi=a}function EK(b){this.hg=b}function BZa(b,a,c,d,f,g){AD[z](this,new eE(b));Bx(this);this.Ea=a;this.eFb=d;this.xa=f;this.Du=g;this.jb=JB(b);this.Lb=Tz(b);Pw(this.H(),this.b(),aB,this.M1c)}function FK(b){if(b.xa.xwa()){var a;a=b.Du.XG();a=a==GF?CZa(b):a==dK?DZa(b):EZa(b);if(a==I){Q(b.ia.b(),I);b.qc(k)}else{Q(b.ia.b(),a);b.ia.qe(Wx);b.qc(h)}}else b.qc(k)}\r
18005 var FZa="yb",GZa="All ",GK="</b>",HZa=" conversations on this page are selected.",HK='<span id="',IZa='" class="x8">Select all conversations that match this search</span>',JZa='" class="x8">',KZa="Select all ",LZa=" conversations in ";\r
18006 function CZa(b){var a=b.xMa();switch(b.Ea.Ga()){case Jy:case Nd:case Oy:case ul:b=new U;b[R](X,fo,J,FZa,W,pE+(GZa+(ZG+(a.ag+(GK+(HZa+(gB+(J+(HK+a.Ij+IZa)))))))),Z);a=b[t]();return a;default:b=new U;a=pE+(GZa+(ZG+(a.NKb+(GK+(HZa+(gB+(J+(HK+a.Ij+JZa+(KZa+(ZG+(a.ZF+(GK+(LZa+(V(a.LQ)+gB))))))))))))));b[R](X,fo,J,FZa,W,a,Z);a=b[t]();return a}}var MZa="yc",NZa="All conversations in this search are selected.",OZa='" class="x8">Clear selection</span>',PZa=" are selected.";\r
18007 function DZa(b){var a=b.xMa();switch(b.Ea.Ga()){case Jy:case Nd:case Oy:case ul:b=new U;b[R](X,fo,J,MZa,W,pE+(NZa+(gB+(J+(HK+a.Ij+OZa)))),Z);a=b[t]();return a;default:b=new U;a=pE+(GZa+(ZG+(a.ZF+(GK+(LZa+(V(a.LQ)+(PZa+(gB+(J+(HK+a.Ij+OZa))))))))));b[R](X,fo,J,MZa,W,a,Z);a=b[t]();return a}}\r
18008 var QZa="You can change your chat history options in ",RZa='<span class="e" id="',IK="Settings",SZa="&nbsp; ",TZa='" target="_blank">Learn more</a>',UZa="<span id=",VZa=' class="x2">Delete all spam messages now</span> (messages that have been in Spam more than 30 days will be automatically deleted)',WZa="(messages that have been in Spam more than 30 days will be automatically deleted)",XZa=' class="x2">Empty Trash now</span> (messages that have been in Trash more than 30 days will be automatically deleted)',\r
18009 YZa="(messages that have been in Trash more than 30 days will be automatically deleted)",ZZa="yd",a_a="Tip:",b_a=" Archive rather than delete in order to find old emails using search.",c_a='<a class="x9" target=_blank href="',JK="&nbsp;&nbsp;",d_a='" class="x8">Return to normal search</span>';\r
18010 function EZa(b){var a=oYa(b.xa),c=b.Ea.Ga(),d=b.aa.Tdb(c);if(d)return d;switch(c){case fz:if(!bx()){a={};a.Z1=b.X(KK.kFa);a.tc=Yz(b.Lb,29290);b=new U;b[R](X,fo,W,QZa+(RZa+a.Z1+jE+(IK+(gB+(SZa+(CGa+a.tc+TZa))))),Z);b=b[t]();return b}break;case Yy:b={PAc:b.X(KK.nDb),xR:a};a=new U;a[R](X,fo,W);b.xR>0?a[R](UZa+b.PAc+VZa):a[R](WZa);a[R](Z);b=a[t]();return b;case Zy:b={GCc:b.X(KK.u1a),xR:a};a=new U;a[R](X,fo,W);b.xR>0?a[R](UZa+b.GCc+XZa):a[R](YZa);a[R](Z);b=a[t]();return b;case Jy:case Oy:if(b.Ea.Rc(Zya)){b=\r
18011 {Fy:Yz(b.Lb,6576),UWc:b.X(KK.oEb)};a=new U;a[R](X,fo,J,ZZa,W,pE+(ZG+(a_a+(GK+(b_a+(gB+(J+(c_a+b.Fy+W+(eB+(hB+(JK+(HK+b.UWc+d_a))))))))))),Z);b=a[t]();return b}break}return I}function e_a(){}function LK(b){fF[z](this,b,vA)}function f_a(b,a){var c=a||new U;c[R](tGa,b.id?gE+b.id+Zd:I,b[Pk]?hE+b[Pk]+Zd:I,b.tA?uGa:I,iE,b[uc]?b[uc]:Rd,b.Xrc?J+b.Xrc:I,jE,b.Ab,gB);if(!a)return c[t]()}var g_a="Di";function h_a(b,a){b=a||new U;b[R](X,g_a,lZa);if(!a)return b[t]()}var MK="Dj",NK=" - ",i_a="</b> of <b>millions</b>";\r
18012 function j_a(b,a){var c=a||new U;c[R](WG,MK,W,ZG+(b.Mt+(GK+(NK+(ZG+(b.Cv+i_a))))),gB);if(!a)return c[t]()}var k_a="</b> of <b>hundreds of thousands</b>";function l_a(b,a){var c=a||new U;c[R](WG,MK,W,ZG+(b.Mt+(GK+(NK+(ZG+(b.Cv+k_a))))),gB);if(!a)return c[t]()}var m_a="</b> of <b>tens of thousands</b>";function n_a(b,a){var c=a||new U;c[R](WG,MK,W,ZG+(b.Mt+(GK+(NK+(ZG+(b.Cv+m_a))))),gB);if(!a)return c[t]()}var o_a="</b> of <b>thousands</b>";\r
18013 function p_a(b,a){var c=a||new U;c[R](WG,MK,W,ZG+(b.Mt+(GK+(NK+(ZG+(b.Cv+o_a))))),gB);if(!a)return c[t]()}var q_a="</b> of <b>hundreds</b>";function r_a(b,a){var c=a||new U;c[R](WG,MK,W,ZG+(b.Mt+(GK+(NK+(ZG+(b.Cv+q_a))))),gB);if(!a)return c[t]()}var s_a=" of about ";function t_a(b,a){var c=a||new U;c[R](WG,MK,W,ZG+(b.Mt+(GK+(NK+(ZG+(b.Cv+(GK+(s_a+(ZG+(b[Yq]+GK))))))))),gB);if(!a)return c[t]()}var OK=" of ";\r
18014 function u_a(b,a){var c=a||new U;c[R](WG,MK,W,ZG+(b.Mt+(GK+(NK+(ZG+(b.Cv+(GK+(OK+(ZG+(b[Yq]+GK))))))))),gB);if(!a)return c[t]()}var v_a="</b> offline";function w_a(b,a){var c=a||new U;c[R](WG,MK,W,ZG+(b.Mt+(GK+(NK+(ZG+(b.Cv+(GK+(OK+(ZG+(b[Yq]+v_a))))))))),gB);if(!a)return c[t]()}function PK(b,a){AD[z](this,new eE(b));this.xa=a;this.Ll=a.Ll;this.zrb=this.ia.b()}function x_a(b,a){b.Xkb=a}\r
18015 function y_a(b){var a=b.zrb,c=b.Ll,d=k;if(c.hc()){var f=c.J();c=f.xK();f=f.fN()?f.I_()?2:1:f.I_()&&f.uua()>f.xK()?2:0;var g=b.xa.Jw(),j=b.xa.Ut(),n=l[ob](c/g)-1;g=g*j;var s=b.xa.Dp();if(s>0){d={};d.jkd=j>=2;d.myb=j!=0;d.nyb=f==1||j!=n;d.nkd=f!=1&&n-j>=2;d.iRa=b.Xkb;d.HMc=b.X(ki);d.mhb=b.X(oy);d.nhb=b.X(Zx);d.KMc=b.X(Rd);d.Amd=b.keb(g,s,c,f);Q(a,b.Ybb(d));d=h}else Q(a,h_a());b.VFb(d)}else Q(a,h_a())}function z_a(b,a,c){var d={};d.Mt=b+1;d.Cv=b+a;d.total=c;return d}\r
18016 function A_a(b,a){return b==2?w_a(a):b==1?a[Yq]>=2E6?j_a(a):a[Yq]>=2E5?l_a(a):a[Yq]>=2E4?n_a(a):a[Yq]>=2E3?p_a(a):a[Yq]>=200?r_a(a):t_a(a):u_a(a)}function QK(b,a,c){PK[z](this,b,c);this.pA=a}var B_a='<h2 class="',C_a="Conversations",D_a='</h2><div class="',E_a="yV",F_a='" role="navigation">',G_a="Select",H_a=': <span class="',I_a="yU",J_a='<span selector="',K_a='" role="link" tabindex="0">';\r
18017 function L_a(b,a){var c=a||new U;c[R](B_a,qD,W,C_a,D_a,E_a,F_a,G_a,H_a,I_a,W);for(var d=b.pXa,f=d[u],g=0;g<f;g++){var j=d[g];c[R](J_a,j[ec],K_a,j.ke,gB,g!=f-1?b[Vq]+J:I)}c[R](II);if(!a)return c[t]()}function M_a(b){this.vl=b}function RK(b,a){Bx(this);BD[z](this,b,new eE(b));this.xa=a;this.JD()}var N_a="Fn",O_a='<span sort="',P_a='class="Fp"',Q_a='class="Fo"';\r
18018 function R_a(b,a){var c=a||new U;c[R](X,N_a,W);for(var d=b.Gsc,f=d[u],g=0;g<f;g++){var j=d[g];j={Ku:j.Ga(),message:j.Yg(),rrc:j.Ga()==b.fAc};var n=c||new U;n[R](O_a,V(j.Ku),Vf,j.rrc?P_a:Q_a,Uf,V(j[Tq]),gB);c||n[t]();c[R](J)}c[R](Z);if(!a)return c[t]()}function S_a(b,a){this.Xd=b;this.SB=a}function T_a(){}function U_a(b){Bx(this);this.V=b}var SK="ka";function V_a(b){return b.J(SK)}function W_a(b,a){var c=[X_a];b=b.aa.feb(a);for(a=0;a<b[u];a++)b[a]&&c[p](b[a]);return c}var Y_a="sx_sds";\r
18019 function Z_a(b,a){var c=yy(b.V).Oo(Y_a);b=W_a(b,a);for(a=0;a<b[u];a++)if(c==b[a].Ga())return c;return mK}var TK="sort";function a0a(b,a){BD[z](this,b,new eE(b));this.Ea=a;this.iZa=this.Ea.Rc(TK);if(!this.iZa)this.iZa=mK;this.jb=JB(b);this.Gbc=V_a(b);this.JD()}var b0a="D E";\r
18020 function c0a(b,a,c,d,f,g,j){gF[z](this,b);this.gj=c;this.zoa=d;this.Lla=f;this.ald=j?new a0a(b,a):i;m(this.b(),[g,b0a][kd](J));d=new LK(b);b=new TA(b,c);b[Jq](vA);d.ha(b);if(this.zoa){!a.Rc(TK)||x_a(this.zoa,2);this.zoa[Jq](vA);d.ha(this.zoa)}if(j){this.ha(d);this.Lla&&this.ha(this.Lla);this.ha(this.ald)}else{this.Lla&&this.ha(this.Lla);this.ha(d)}}\r
18021 function UK(b,a){this.V=b;this.Z=Rz(b);this.Ea=a[Pc];this.vl=a[uk];this.RYa=a.Gma;this.D0a=a.gCb;this.az=a.rUa;this.Og=a.o9;this.Aa=Dx(Cx(this.V));this.ynb=this.mdb()}function d0a(b,a,c){var d=new e_a;Gp(d,a);ep(d,b.vl);Ip(d,b.Ea);d.Gma=b.RYa;d.gCb=b.D0a;d.ZZb=c;return d}\r
18022 function VK(b,a,c,d,f,g){this.V=b;this.Aa=Dx(Cx(this.V));this.Mb=jF(b);this.cnb=b.J(Cz);this.Z=Rz(b);this.Ea=a;this.phc=d;this.w2=c;this.Lvc=f;this.zvc=g?g:i;this.bTc=new Hf;this.rAa=[];this.Q=new kn(this);this.fzb=this.qa=0;if(Jz(this.Z,852))this.fzb=1;this.Hh=new hC(6E4,b.J(XC));this.Q.w(this.Hh,yi,this.R8)}var e0a="us:p",f0a=":24";\r
18023 function g0a(b){if(!ega)return k;if(b.ab){cA(b.ab);b.ab=i}if(b.Pc)return k;var a=b.Z[hq](e0a);if(a){if(a!=b.Xzc){b.Xzc=a;a=a[Cc](xj);if(a[u]>0)b.Q8=Number(a[0]);if(a[u]>1){Ia(b.rAa,0);for(var c=a[1][Cc](wj),d=0;d<c[u];d+=2)b.rAa[p]([Number(c[d]),Number(c[d+1])])}if(a[u]>2)b.I8a=Number(a[2])}}else{b.qa=1;return h}if(b.Q8<=0||b.rAa[u]==0){b.qa=2;return h}c=Zf();if(h0a)if(c-h0a<3E5){b.qa=12;return h}b.nlb();if(b.Ska)return k;if(!b.Lvc[z](b.zvc)){b.qa=8;return h}if(!b.tD&&!b.Tl){b.qa=9;return h}a=b.Aa.za(qI);\r
18024 if(a==i){b.qa=4;b.ab=bA(f0a,b.YU,2E3,b);return h}d=b.AZb+b.I8a;if(b.I8a>0&&b.AZb>0&&c<d){b.qa=13;b.ab=bA(f0a,b.YU,d-c,b);return h}if(b.Hh.My()){b.qa=3;return h}d=b.cnb.J3;var f=0;if(d)f=XJa(d);for(var g=c=0;g<b.rAa[u];g++){var j=b.rAa[g];if(f>j[0]){c=j[1];break}}if(!d||d.Zma.Nb()==0)c=5;if(0==c){b.qa=10;return h}if(fga){b.qa=11;return h}a=rI(a,b.Ea);c=c;f=i;if(b.tD)f=b.tD.Hc();for(g=d=0;g<b.w2[u];g++){j=b.w2[g].Hc();a.za(j).Fi()&&d++}if(d>=b.Q8){b.qa=5;c=[]}else{j=[];if(b.fzb==1){d=d;f=f;g=[];for(j=\r
18025 1;j<=3;j++)for(var n=0;n<b.w2[u]&&g[u]<c&&d<b.Q8;n++){var s=b.w2[n];i0a(b,s)==j&&j0a(b,n,a,g,f,h,k)&&d++}for(n=0;n<b.w2[u]&&g[u]<c&&d<b.Q8;n++){s=b.w2[n];if(!s.Jl||i0a(b,s)>3)j0a(b,n,a,g,f,k,k)&&d++}j=g}else for(g=0;g<b.w2[u]&&j[u]<c&&d<b.Q8;g++)j0a(b,g,a,j,f)&&d++;c=j}if(b.qa==5)return h;if(c[u]){if(b.qa==0||b.qa==4)dE(b.V).cma(k0a,Zf()-b.V.Ev.Snd);b.qa=6;b.Ska=HSa(a,c);kF(b.Mb,b.Ska);b.Ska.Ie(b)}else b.qa=7;return h}\r
18026 function j0a(b,a,c,d,f,g,j){a=b.w2[a];var n=a.Hc();if(!c.za(n).Fi()&&n!=f&&!(b.pna&&b.pna.Xb(n))&&(!j||!a.Jl)&&(!g||a.Jl)){d[p](n);return h}return k}function i0a(b,a){b=a.Jo();a=5;for(var c=0;c<b[u];c++)if(b[c][Kb](l0a)){var d=Number(b[c][Zc](3));if(d<a)a=d}return a}function m0a(){n0a||(n0a=new gYa);return n0a}\r
18027 var o0a="xI",p0a="xG",q0a='">  &nbsp;</td><td class="',r0a="zz",s0a="A deleted message matches your search. ",t0a='" class="xH">',u0a="View it",v0a=" or go to ",w0a='" class="xH">Trash</span> to delete forever.',x0a="Deleted messages match your search. ",y0a="View them";\r
18028 function z0a(b,a){var c=a||new U;c[R](XJ,o0a,YJ,p0a,q0a,p0a,W);xI(Kw(b,{Hb:r0a}),c);c[R](NG,p0a,W);b.yod==1?c[R](s0a+(HK+b.Ojc+t0a+(u0a+(gB+(v0a+(HK+b.bic+w0a)))))):c[R](x0a+(HK+b.Ojc+t0a+(y0a+(gB+(v0a+(HK+b.bic+w0a))))));c[R](TG);if(!a)return c[t]()}var A0a="No messages matched your search. You can ",B0a='" class="x0">broaden your search</span> to look in "Mail & Spam & Trash".';function C0a(b,a){var c=a||new U;c[R](A0a+(HK+b.Ij+B0a));if(!a)return c[t]()}\r
18029 var D0a="yS",E0a="Search results for:",F0a='<span class="yT">';function G0a(b,a){var c=a||new U;c[R](X,D0a,W,E0a+(F0a+(b.Zgb+gB)),Z);if(!a)return c[t]()}var H0a="yR",I0a="Searched ",J0a=". Still searching...</span>";function K0a(b,a){var c=a||new U;c[R](X,H0a,W,pE+(I0a+(b.Rnd+J0a)),Z);if(!a)return c[t]()}var L0a="<span>Search interrupted.  To get all results, refresh the list.</span>";function M0a(b,a){b=a||new U;b[R](X,H0a,W,L0a,Z);if(!a)return b[t]()}var N0a="<span>Search complete.</span>";\r
18030 function O0a(b,a){b=a||new U;b[R](X,H0a,W,N0a,Z);if(!a)return b[t]()}var WK="threadlists";function P0a(b,a,c,d){this.V=b;this.Sr=a;this.xa=c;this.Ea=d;this.Z=Rz(b);this.Aa=Dx(Cx(b));this.Xi=this.Aa.za(WK).Zn(d);this.jb=JB(b);this.Lh=TD(b);this.mw=aF(b)}var Q0a="tfu",R0a="tur",S0a="tfc",T0a="pfs",U0a="pfy";\r
18031 function V0a(b,a,c){if(!(b.xa.Th<0)){var d=b.Sr.xa.Zsa(),f=d.Hc(),g=d.vf(),j;j=b.xa;j=j.Th<0?-1:j.Rf+j.Th;var n=b.Xi.J(),s=n.nj,v=n.fN(),C=n.I_(),M=n.uua(),Y=n.ZZa;if(a){IFa(b.Lh,b.Ea,f,Y,c);if(d.Jl&&!MD(b.Lh)){d.LRa();b.Cg=b.Aa.za(qI);b.Cg&&b.Cg.Yaa(f,d.vf(),h)}}else{QF(b.Sr,W0a);Y=XK(b.Sr);a=b.xa.Th;c=b.Sr.zdb();for(var ha=-1,tb=0,zc=k,qb=0;qb<Y[u];qb++){if(ha==-1&&Y[qb].Jl){ha=qb;zc=h}if(zc&&Y[qb].Jl)tb++;else Y[qb].Jl||(zc=k)}if(Jz(b.Z,717)){if(X0a){X0a=k;b.mw.Hz(Q0a,ha);b.mw.Hz(R0a,tb);b.mw.Hz(S0a,\r
18032 a)}b.mw.Hz(T0a,c)}Jz(b.Z,697)&&b.mw.Hz(U0a,b.Sr.Bdb());a=[];c=[];for(ha=0;ha<Y[u];ha++){a[p](Y[ha].Hc());c[p](Y[ha].vf())}if(Y=b.Aa.za(qI)){Y=rI(Y,b.Ea);ha=d.Hc();(Y=Y.za(ha,h))&&Y.Fi()&&Y.J().dL>d.dL&&b.Xi.rg()}if(d.Jl){Y=d.Hc();ha=b.Aa.za(qI);(Y=(ha=rI(ha,b.Ea,h))&&ha.za(Y,h))&&DSa(Y,d.M1)}b.Sr.opa();b.jb[bq]({view:YK,search:b.Sr.YRb(),Zo:f,Am:g,zSa:a,ASa:c,zz:j,urc:b.xa.Th,xR:s,x_a:v,cga:C,A_a:M,Iba:n.ZZa,Lja:b.xa.mV})}}}function Y0a(b){this.Db=b}\r
18033 var Z0a="advanced-search",a1a="create-filter",ZK="m_inbox",aL="vftt_inbox";function b1a(b,a){var c=i;switch(b){case Hl:case Py:c=Wya(c1a(a[db]()));break;case Fy:case Jy:c=Ly(c1a(a[db]()));break;case Z0a:case Oy:b=c1a(a[db]());c=new Sya(Oya(b,d1a));break;case a1a:case ul:b=c1a(a[db]());c=new Qy(Oya(b,e1a));break;case ce:b=c1a(a[db]());b=Oya(b,f1a);c=new uH(b.group);break;case kz:case sz:case cz:case iz:case fz:case pz:case jza:case Yy:case Zy:case ez:case ZK:case aL:c=Sy.QCa[b];break}return c}\r
18034 function c1a(b){return b?Rf(b):I}var g1a="ix_nt";function h1a(b,a){return gza(a)?20:yy(b).Ep(g1a)}function i1a(b,a,c){b=h1a(b,a);return l[rb](c/b)}var bL="bx_sc",cL="bx_ns";\r
18035 function dL(b,a,c,d,f){Bx(this);xJ[z](this,b,this.aa.vMa(b,a));f.tb(this);this.Aa=Dx(Cx(b));this.Mb=jF(b);this.xB=sC(b);this.EB=wJ(b);this.Z=Rz(b);this.lb=yy(b);this.xl=tE(b);this.fc=dC(b);this.Xi=this.Aa.za(WK).Zn(a);this.Ea=a;this.D0a=d;this.Og=this.Jw();this.az=c;this.Rf=this.az*this.Og;this.RYa=this.lb.nf(bL);this.z2b=this.lb.nf(cL);this.H3=new DYa(b,this.rZa,this.Dvc,this);ep(this,f.tNa()[Qk]());this.Nda=f;this.co=this.Aa.za(LC);this.jb=JB(b);this.Rh=tH(b);this.xa=this.Nda.xa;this.Du=this.Nda.tNa();\r
18036 this.Dz=this.B().J(XC);this.Hh=new hC(12E5,this.Dz);this.Uq=new VK(b,a,XK(this),eL(this),this.DIb,this);this.Uq.dk(this);this.vya=f.vya;this.eUa=f.rdb();this.pA=f.Ocb();this.Jc();this.EB.zC==kD&&this.sf(1);this.eJ=new PB(b)}function eL(b){return b.xa.vy()}function XK(b){return b.xa.Om}function j1a(b){var a=b.Jw();if(b.Og!=a){b.Og=a;b.xa.Saa(a);return h}return k}function k1a(b){var a=b.lb.nf(cL);if(b.z2b!=a){b.z2b=a;return h}return k}\r
18037 function l1a(b){var a=b.lb.nf(bL);if(b.RYa!=a){b.xa.qCa(a);b.RYa=a;return h}return k}var m1a="Invalid search query - returning all mail.";function n1a(b){b.Bb().nd()&&b.Rh.Ad(new Zz(m1a))}function o1a(b,a){b=[];for(var c=0;c<a[u];c++){var d=a[c];if(d)for(var f=0;f<d[u];f++)b[p](d[f])}return b}function p1a(b,a,c){b.Du.Kib(a.mg)?dCa(a,b.xa.hdb()):fL(b,function(d){if(this[uk].Vo(d.vf()))uB(a,d.Hc(),c?d.Qy:d.vf())});return h}function q1a(b){if(b.Ml){var a=b.Ml;b.Ml=i;a[wc]()}}\r
18038 var r1a="This action will affect all conversations in this search. Are you sure you want to continue?",s1a="This action will affect the one conversation in ",t1a=". Are you sure you want to continue?",u1a="This action will affect both conversations in ",v1a="This action will affect all ";\r
18039 function w1a(b,a){a=b.xMa(a);switch(b.Ea.Ga()){case Jy:case Nd:case Oy:case ul:b=new U;b[R](r1a);b=b[t]();return b;default:b=new U;if(a.ZF==1)b[R](s1a+(a.LQ+t1a));else a.ZF==2?b[R](u1a+(a.LQ+t1a)):b[R](v1a+(a.ZF+(LZa+(a.LQ+t1a))));b=b[t]();return b}}function x1a(b){b.aa.h4a();b[Sq]()}function gL(b,a){b=b.xa.FO(a);return b!=i?b.Hc():i}function y1a(b,a){b=b.xa.FO(a);return b!=i?b.vf():i}function z1a(b){b.xa.ola();b.skb=b.Ml;b.Ml=i;b.qca()}\r
18040 function A1a(b,a,c,d){var f=a[c].Jl;if(f==a[d].Jl)return b.xa.mV==oy?c:d;return f?c:d}function B1a(b,a,c){return(b=a[u]-c[u])?b:a<c?-1:a>c?1:0}function fL(b,a){for(var c=eL(b).Oa(),d=0;d<c[u];d++)a[z](b,c[d])}function C1a(b,a,c,d){b.xa.Mn(a);b.xB.lf();V0a(b.eUa,c,d)}function D1a(){}function hL(){}var E1a="XMLHTTP TEXT (",F1a="): ";function iL(b,a,c,d){b[dr](E1a+a+F1a+G1a(b,c)+(d?J+d:I))}var H1a="Exception";function jL(b,a,c){b.TW((c||H1a)+a)}var I1a="y2f%",J1a="Exception parsing expected JS array - probably was not JS";\r
18041 function G1a(b,a){if(!a||a==I1a)return a;try{for(var c=ix(a),d=0;d<c[u];d++)Ve(c[d])&&K1a(b,c[d]);return zh(c)}catch(f){b.Ef(J1a);return a}}var L1a="noop";function K1a(b,a){if(!(a[u]<2)){b=a[1];if(Ve(b))if(!(b[u]<1)){a=b[0];if(a!=dx&&a!=L1a&&a!=Id)for(a=1;a<b[u];a++)b[a]=I}}}var M1a="=redacted&";function N1a(b,a){if(!a)return i;b=I;a=a[Cc](Sf);for(var c=0;c<a[u];c++){var d=a[c][Cc](ei);if(d[u]>1){var f=d[0];d=d[1];var g=f[Cc](mg);b+=g[u]>=2&&g[1]==Wi?f+ei+d+Sf:f+M1a}}return b}var O1a="TestLoadImageWithRetries: ";\r
18042 function P1a(b,a,c,d,f){(new hL).Ef(O1a+f);if(d==0)c(k);else{var g=f||0;d--;Q1a(b,a,function(j){j?c(h):Je[xc](function(){P1a(b,a,c,d,g)},g)})}}var R1a="TestLoadImage: loading ",S1a="TestLoadImage: loaded",T1a="TestLoadImage: error",U1a="TestLoadImage: abort",V1a="TestLoadImage: timeout";\r
18043 function Q1a(b,a,c){var d=new hL;d.Ef(R1a+b);var f=new Image;cp(f,function $Ei(){try{d.Ef(S1a);W1a(f);c(h)}catch(j){jL(d,j)}});oa(f,function $Fi(){try{d.Ef(T1a);W1a(f);c(k)}catch(j){jL(d,j)}});oma(f,function $Gi(){try{d.Ef(U1a);W1a(f);c(k)}catch(j){jL(d,j)}});f.krb=function $Hi(){try{d.Ef(V1a);W1a(f);c(k)}catch(j){jL(d,j)}};Je[xc](function(){f.krb&&f.krb()},a);f.src=b}function W1a(b){cp(b,i);oa(b,i);oma(b,i);b.krb=i}\r
18044 function kL(b,a,c,d,f){this.ec=b;this.cd=a;this.Lx=c;this.tI=d;this.uBa=f||1;this.wo=45E3;this.Q=new kn(this);this.XUa=new Bh;this.XUa[Dc](250)}var X1a="Non-200 return code (",Y1a="XMLHTTP failure (no data)",Z1a="HttpConnection timeout",a2a="Unknown error";function b2a(b,a){switch(b){case 0:return X1a+a+xh;case 1:return Y1a;case 2:return Z1a;default:return a2a}}function c2a(b,a,c,d){b.Xd=1;b.Qn=bi(a.vc());b.JL=i;b.A8a=c;if(d)b.fcc=k;d2a(b)}\r
18045 var e2a="application/x-www-form-urlencoded",f2a="XMLHTTP REQ (",g2a=") [attempt ",h2a="]: ";function d2a(b){b.BF=b.Qn.vc();gx(b.BF,IB,b.uBa);b.hFa=0;b.Tx=new Gh;ih(b.Tx,Lh,b.Bkc,k,b);var a=b.rE?Zwa(b.rE):{};if(b.JL){b.Xna=Aj;a[Bj]=e2a;b.Tx[Mb](b.BF,b.Xna,b.JL,a)}else{b.Xna=zj;if(b.fcc&&!Jg)a.Connection=qn;b.Tx[Mb](b.BF,b.Xna,i,a)}b.AWa=Zf();a=b.cd;a[dr](f2a+b.tI+g2a+b.uBa+h2a+b.Xna+ch+b.BF+ch+N1a(a,b.JL));lL(b)}\r
18046 var i2a="420+",j2a="No response text for uri ",k2a=" status ",l2a="XMLHTTP RESP (",m2a=") [ attempt ",n2a="Unknown SID";\r
18047 function o2a(b){var a=b.Tx.ts();if(L||Jg&&!vg(i2a)){if(a<4)return}else if(a<3||a==3&&!Ng&&!b.Tx.dj())return;p2a(b);var c=b.Tx.hf();b.Tw=c;var d=b.Tx.dj();d||b.cd.Ef(j2a+b.BF+k2a+c);b.hR=c==200;b.cd[dr](l2a+b.tI+m2a+b.uBa+h2a+b.Xna+ch+b.BF+ch+a+J+c);if(b.hR){a==4&&b.tJ();if(b.A8a){q2a(b,a,d);Ng&&a==3&&r2a(b)}else{iL(b.cd,b.tI,d,i);s2a(b,d)}if(b.hR)if(!b.xda)if(a==4)b.ec.uL(b);else{b.hR=k;lL(b)}}else{if(c==400&&d[Db](n2a)>0){b.wk=3;mL(13)}else{b.wk=0;mL(14)}iL(b.cd,b.tI,d);b.tJ();t2a(b)}}\r
18048 var u2a="[Incomplete Response]",v2a="[Invalid Chunk]",w2a="[Invalid Chunked Response]";function q2a(b,a,c){for(var d=h;!b.xda&&b.hFa<c[u];){var f=x2a(b,c);if(f==y2a){if(a==4){b.wk=4;mL(15);d=k}iL(b.cd,b.tI,i,u2a);break}else if(f==z2a){b.wk=4;mL(16);iL(b.cd,b.tI,c,v2a);d=k;break}else{iL(b.cd,b.tI,f,i);s2a(b,f)}}if(a==4&&c[u]==0){b.wk=1;mL(17);d=k}b.hR=b.hR&&d;if(!d){iL(b.cd,b.tI,c,w2a);b.tJ();t2a(b)}}function r2a(b){b.Q.w(b.XUa,yj,b.Dbd);b.XUa[Rc]()}\r
18049 function x2a(b,a){var c=b.hFa,d=a[Db](ch,c);if(d==-1)return y2a;c=Number(a[Zc](c,d));if(ia(c))return z2a;d=d+1;if(d+c>a[u])return y2a;a=a[nc](d,c);b.hFa=d+c;return a}var A2a="htmlfile",B2a="<html>",C2a='<script>document.domain="',D2a='"<\/script>',E2a="</html>",F2a="DOMAIN",G2a='<iframe src="',H2a='"></iframe>',I2a="TRIDENT REQ (",J2a="]: GET\n";\r
18050 function K2a(b,a,c){b.Xd=3;b.Qn=bi(a.vc());b.EM=new ActiveXObject(A2a);a=I;var d=B2a;if(c){a=ba[Ic][Gma];d+=C2a+a+D2a}d+=E2a;b.EM[bb]();b.EM[nq](d);b.EM[Xk]();b.EM[ac].m=G(b.G8c,b);b.EM[ac].d=G(b.L6b,b,h);b.EM[ac].rpcClose=G(b.L6b,b,k);c=b.EM[Qb](T);b.EM[o](c);b.BF=b.Qn.vc();b.BF.ka(F2a,a);b.BF.ka(IB,b.uBa);Q(c,G2a+b.BF+H2a);b.AWa=Zf();b.cd[dr](I2a+b.tI+m2a+b.uBa+J2a+b.BF);lL(b)}function lL(b){b.qCb=Zf()+b.wo;L2a(b,b.wo)}function L2a(b,a){if(b.koa!=i)e(Error(".163"));b.koa=nL(G(b.F9c,b),a)}\r
18051 function p2a(b){if(b.koa){Je[gb](b.koa);b.koa=i}}function t2a(b){b.ec.G_()||b.xda||b.ec.uL(b)}var M2a="Error in httprequest callback";function s2a(b,a){try{b.ec.h6b(b,a)}catch(c){jL(b.cd,c,M2a)}}function N2a(b,a){this.ec=b;this.cd=a}var O2a="TestConnection: starting stage 2",P2a="TYPE",oL="html",Q2a="xmlhttp";\r
18052 function R2a(b){b.cd.Ef(O2a);b.Lc=new kL(b,b.cd,void 0,void 0,void 0);b.Lc.R1(b.rE);var a=S2a(b.ec,b.o7,b.Vf);mL(5);if(L){gx(a,P2a,oL);K2a(b.Lc,a,Boolean(b.o7))}else{gx(a,P2a,Q2a);c2a(b.Lc,a,k)}}function T2a(b){this.vS=b;this.qa=1;this.fQ=[];this.Hka=[];this.cd=new hL}var U2a="statevent";function V2a(b,a){N[z](this,U2a,b);this.gDa=a}var W2a="timingevent";function X2a(b,a,c,d){N[z](this,W2a,b);jma(this,a);this.BBa=c;this.QDd=d}\r
18053 function Y2a(b){if(b.j4){b.j4[wc]();b.j4=i}if(b.FD){b.FD.tf();b.FD=i}if(b.fY){Je[gb](b.fY);b.fY=i}if(b.Bw){b.Bw.tf();b.Bw=i}if(b.jK){Je[gb](b.jK);b.jK=i}}function Z2a(b){var a=0;b.FD&&a++;b.Bw&&a++;return a}function a3a(b){if(!b.Bw)if(!b.jK){b.jK=nL(G(b.v6b,b),0);b.K5=0}}var b3a="SID",c3a="RID",d3a="AID";\r
18054 function e3a(b,a){var c,d;if(a){c=a.tI;d=a.JL}else{c=b.CSa++;d=f3a(b)}a=b.cMa.vc();a.ka(b3a,b.Lx);a.ka(c3a,c);a.ka(d3a,b.MQa);g3a(b,a);c=new kL(b,b.cd,b.Lx,c,b.K5+1);c.R1(b.rE);c[xc](l[kb](1E4)+l[kb](1E4*l[Tc]()));b.Bw=c;b=d;c.Xd=1;c.Qn=bi(a.vc());c.JL=b;c.A8a=h;d2a(c)}function g3a(b,a){if(b.na)(b=b.na.uQb(b))&&Ef(b,function(c,d){a.ka(d,c)})}var h3a="count=",i3a="req";\r
18055 function f3a(b){for(var a=l.min(b.fQ[u],1E3),c=[h3a+a],d=0;d<a;d++){var f=b.fQ[d];Ef(f,function(g,j){c[p](i3a+d+mg+j+ei+aa(g))});b.Hka[p](f)}b.fQ[jd](0,a);return c[kd](Sf)}function j3a(b){if(!b.FD)if(!b.fY){b.kHb=1;b.fY=nL(G(b.u6b,b),0);b.pHa=0}}var k3a="Test Connection Finished",l3a="connectChannel_()";function m3a(b,a,c){b.cd.Ef(k3a);b.cjc=b.Dsc&&c;b.Tw=a.hH();b.cd.Ef(l3a);b.XCc(1,0);b.cMa=n3a(b,b.Vf);a3a(b)}var o3a="Test Connection Failed";function p3a(b,a){b.cd.Ef(o3a);b.Tw=a.hH();pL(b,2)}\r
18056 var q3a="Error code ";function pL(b,a){b.cd[dr](q3a+a);if(a==2||a==9){var c=i;if(b.na)c=b.na.MRb(b);var d=G(b.Xmd,b);c=c;if(!c){c=new Sh("http://www.google.com/url");bi(c);gx(c,Ky,"http://www.google.com/images/cleardot.gif")}Q1a(c[t](),1E4,d)}else mL(2);b.J0(a)}var r3a="GetForwardChannelUri: ";function n3a(b,a){a=s3a(b,i,a);b.cd.Ef(r3a+a);return a}var t3a="GetBackChannelUri: ";function S2a(b,a,c){a=s3a(b,L?a:i,c);b.cd.Ef(t3a+a);return a}var u3a="VER";\r
18057 function s3a(b,a,c,d){var f=ba[Ic],g=ci(f[er],i,a?a+He+f[Gma]:f[Gma],d||f.port,c);b.ssa&&Ef(b.ssa,function(j,n){g.ka(n,j)});g.ka(u3a,6);g3a(b,g);return g}function nL(b,a){if(!Ze(b))e(Error(".166"));return Je[xc](function(){b()},a)}function mL(b){qL[r](new V2a(qL,b))}function v3a(){}var w3a=":25";\r
18058 function x3a(b,a,c,d,f){this.Ze=b;this.lS=a;this.qKb=d||i;this.Xza=new fC;this.NAa=new fC;this.XHb=f||i;this.cd=i;this.vS=c;this.qa=-1;this.wk=0;this.ec=this.cea(this.vS);this.Mw=new aA(w3a,1E3);ih(this.Mw,yj,this.aNb,h,this);this.Mw[Rc]();this.yla=5E3+l[Tc]()*2E4}var y3a="Qa";function z3a(b,a){if(b.qa!=a){var c=b.qa;b.qa=a;switch(b.qa){case 5:A3a(b);break;case 4:b.wk=0;b.usa=k;b.Hg(i);b.Ze[r](y3a);break}b.usa||b.Ze[r](new B3a(c,a,b.wk))}}function C3a(b){if(Ue(b.BSa)){cA(b.BSa);b.BSa=i}}\r
18059 function D3a(b){if(Ue(b.Prb)){cA(b.Prb);b.Prb=i}}var E3a=":27";function A3a(b){if(!(b.wk==1||b.wk==4)){if(!b.UOa&&b.yla*2<24E4)b.yla*=2;if(b.UOa)b.yla=500;b.Sja=Zf()+b.yla;C3a(b);b.BSa=bA(E3a,b.Tac,b.yla,b)}}function F3a(b,a){var c=Zf(),d=b.OQa>0&&c-b.OQa>3E4;if(a)b.OQa=c;return d}function G3a(b,a,c,d){this.rDa=new Hf;this.av=new x3a(this,b,a,c,d)}function H3a(b,a){this.Xd=a;this.Ze=b}var rL="Oa";function I3a(b){N[z](this,rL);this.aM=b}var sL="Pa";\r
18060 function B3a(b,a,c){N[z](this,sL);this.ika=b;this.tm=a;Xla(this,c)}var J3a="Ra";function K3a(b,a){N[z](this,J3a);this.HUa=b;this.J_a=a}function tL(b){return b.J(dx)}function L3a(b){var a=b.xc();(a==1||a==5||a==6)&&b.av.Tac()}function uL(b){this.ik=b}var vL="ub",wL="ua";function xL(b){this.na=void 0;this.V=b;this.lb=yy(b);this.Aa=Dx(Cx(this.V));this.Hn=fy(b).ud;this.UQa={};this.pUa=[];this.wKa=new Hf;Bx(this);b=Gx(vL);this.w(this.Hn,b,this.O_c);b=Fx(wL);this.w(this.Hn,b,this.N_c)}\r
18061 function M3a(b){if(!b.Jg)b.Jg=b.Aa.za(WK,k);if(!b.Cg)b.Cg=b.Aa.za(qI,k);if(!b.co)b.co=b.Aa.za(LC,k)}function N3a(b,a,c,d,f,g,j){for(var n=0;n<d[u];n++){var s=d[n],v=s[0];s=s[1];yL(b,a,c,v,s,f,g);b.STa(v,s,j)}}function yL(b,a,c,d,f,g,j,n){if(g[u]&&b.co)for(var s=0;s<g[u];s++){var v=g[s];v[xb](0)!=Ty&&bVa(b.co,v)}a=b.lJ(a,c,d);g[u]&&b.SX(d,f,g,n);j[u]&&b.m1(d,f,j,n);a&&O3a(a)}function zL(b,a){for(var c=0;c<b.pUa[u];c++)b.pUa[c].AOb.set(a,1)}\r
18062 function P3a(b,a,c,d,f){if(!f){if(b.Jg){cI(b.Jg,Q3a);cI(b.Jg,R3a);SRa(b.Jg);b.fXb();c&&URa(b.Jg,c)}if(b.Cg&&c){tI(b.Cg,c);zL(b,c)}}}var AL="^s",BL="^k",CL="^r";function S3a(b,a,c,d){this.ik=b;this.aX=a;this.Ea=c;this.Sq=d;this.on=this.Uk=i;b=this.ik.co;if(b.hc()){a=OC(b);a[p](TI);a[p](AL);a[p](BL);a[p](CL);b.AFb(a);b.aa.Hoa(a);b=a}else b=i;this.kl=b;this.aBb=T3a(this);this.AAb=T3a(this);this.NYb=h;Bx(this)}function T3a(b){for(var a={},c=0;c<b.kl[u];c++)a[b.kl[c]]=0;return a}\r
18063 function O3a(b){b.K2(1);if(b.NYb)for(var a=0;a<b.kl[u];a++){var c=b.kl[a],d=b.aBb[c],f=b.AAb[c];if(d||f)U3a(b,c,d,f)}else b.ik.co.rg()}function V3a(b,a,c,d){for(b=0;b<c[u];b++)a[c[b]]+=d}function U3a(b,a,c,d){var f=gEa(b.ik.co,a,h);if(f&&f.hc()){f=f.J();if(f.rt>=0){var g=f.rt;if(!b.aa.xwb(g,c,f)){cEa(f,g+c);dEa(f,I)}}if(f.lD>=0){g=f.lD+d;if(f.lD!=g){f.lD=g;f.xj(4)}}}b.aa.z5a(a,c,d)}var W3a="prf",X3a="msgs",Y3a="lnm";\r
18064 function Z3a(b,a){b=a.Rc(W3a);var c=a.Rc(X3a);a=a.Rc(Y3a);return!!(b==Hj||c&&!a)}function a4a(b,a){if(a){b=UC(RC(b.V));if(b=EH(b.B())){b=b.vz;a=new Hf(a,1);for(var c=0;c<b[u];c++){var d=b[c];if(d.md()==wE||d.md()==xE)d.Bb().lba(a)&&d.xa.xwa()&&d.xa.eXb()}}}}function b4a(b){b.Jg&&TRa(b.Jg);b.Cg&&LSa(b.Cg)}function DL(b){this.c5a=b}function c4a(b){this.Db=b}function d4a(b){this.Db=b}function e4a(b){this.jb=b}\r
18065 function EL(b,a,c){YC[z](this,b,a);this.V=a;this.Jz=RC(a);this.xf=fy(a);this.Ma=yy(a);this.QOb=!!c;this.Ttb();this.QOb||vEa(this.Jz,this)}var FL="be";function f4a(b){lA(b.V,aE,Rd);lA(b.V,KH,FL)}function GL(b,a){if(a)loadTimes=[a,a,a,a,a,Zf()]}function HL(){}function IL(b){Bx(this);this.V=b;this.Jz=RC(b);this.Q=new kn(this);this.Q.w(this.Jz,eD,this.tYc);this.Q.w(this.Jz,TC,this.Gpb)}function g4a(b,a,c){(new IL(b)).tb();b=new EL(top,b);b.OK(a,c);return b}var h4a="DOMMouseScroll",i4a="mousewheel";\r
18066 function j4a(b){this.wa=b;this.lRa=ih(this.wa,Fh?h4a:i4a,this)}function k4a(b,a,c,d){a&&this.wc(a,void 0);za(this,i4a);this.detail=b;this.Hea=c;this.Iea=d}\r
18067 var Vua=i,dva=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i,JL="#000000",l4a="#008000",m4a="#ffffff",eva={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:JL,blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",\r
18068 cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",\r
18069 firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:l4a,greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",\r
18070 lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",\r
18071 mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",\r
18072 rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:m4a,whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},iva={thin:2,\r
18073 medium:4,thick:6},tva=/<[^>]*>|&[^;]+;/g,xva=/[^\d]+$/,Vva=/(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g,iwa=/\/a\/[^\/]+\/b\/[^\/]+\/u\/[^\/]+/,n4a=/\/b\/[^\/]+(?:\/u\/[^\/]+)?\/?/,hwa=/\/mail\/b\/[^\/]+\/u\/[^\/]+/,gwa=/\/a\/[^\/]+\/d\/[^\/]+/,fwa=/\/mail\/d\/[^\/]+/,zwa=/[?&]($|#)/;H(Iw,Jf);Iw[w].tb=B();H(Lw,ao);F=Lw[w];F.HSa=i;F.ota=D(dZa);F.Q1=function $Ki(a){this.xS=a;this.HSa=i;this.xb(this.h7a())};var KL="background-color";F.qH=function $Li(){var a=this.rH();if(a){a=zw(a,KL);return uva(a)}else return i};\r
18074 F.RW=function $Mi(a){a=uva(a);if(!this.HSa)this.HSa=Li(this.xS,function(c){return uva(c)});this.Pl(a?ff(this.HSa,a):-1)};var o4a="-Jt",p4a="background-color:",q4a="RGB (";F.h7a=function $Ni(){return Li(this.xS,function(a){var c=this.W().ba(T,{"class":this.li().Qb()+o4a,style:p4a+a});ik(c,a[xb](0)==Lj?q4a+yw(a)[kd](hg)+xh:a);return c},this)};H(Nw,Hn);F=Swa[w];F.wya=0;F.add=function $Oi(a){this.lY[this.wya]=a;this.wya=(this.wya+1)%this.Elb};F.J=function $Pi(a){a=Mva(this,a);return this.lY[a]};\r
18075 F.set=function $Qi(a,c){a=Mva(this,a);this.lY[a]=c};F.Nb=function $Ri(){return this.lY[u]};F.nd=function $Si(){return this.lY[u]==0};Aa(F,function $Ti(){Ia(this.lY,0);this.wya=0});F.Oa=function $Ui(){return Nva(this,this.Nb())};F.Sb=function $Vi(){for(var a=[],c=this.Nb(),d=0;d<c;d++)a[d]=d;return a};F.Xb=function $Wi(a){return a<this.Nb()};F.BS=function $Xi(a){for(var c=this.Nb(),d=0;d<c;d++)if(this.J(d)==a)return h;return k};\r
18076 F.Hta=function $Yi(){if(this.Nb()==0)return i;return this.J(this.Nb()-1)};var r4a=i;Bi(O.S(),Kd);_B_prog(44)}catch(e){_B_err(e)}\r
18077 \r
18078 try{xx[w].tn=function $Zi(a){if(this.SJ)for(var c=0;c<this.SJ[u];++c)if(this.SJ[c]instanceof a)return this.SJ[c];return i};H(lxa,Jf);lxa[w].L=function $_i(){if(this.Aa){this.Aa.D();this.Aa=i}};Ha(mxa[w],function $0i(){return this.O[t]()});mxa[w].kc=D(ae);H(Ex,N);H(Hx,Jf);F=Hx[w];F.DL=i;F.L=function $2i(){if(this.Q){this.Q.D();this.Q=i}};F.Kk=function $3i(){Ix(this);if(!this.Q)this.Q=new kn(this);return this.Q};var LL="Jb";F.vn=D(LL);F.Je=D("KG");F.ac=D(Jaa);F.Ig=function $7i(a){if(this.DL!=i&&a!=i)e(Error(".49"));if(a&&a.mb!=this.mb)e(Error(".50"));this.t9a=this.Jyb=i;if(a!=i){Ix(this);this.KG=a.Je()+Md+this.Jb}else this.KG=i;this.DL=a};F.pua=function $8i(){if(!this.Jyb)this.Jyb=this.KG+Kaa;return this.Jyb};\r
18079 F.SQb=function $9i(){if(!this.t9a)this.t9a=this.KG+Laa;return this.t9a};F.WRb=function $$i(a){return this.Je()+xj+a};F.hC=E(4);H(Jx,Hf);F=Jx[w];Aa(F,function $bj(){pxa(this,h)});F.D=function $cj(){pxa(this,k)};wa(F,function $dj(a){qxa(this,a);var c=Jx.C[Pb][z](this,a);c&&this.FKa(a);return c});F.set=function $ej(a,c){if(this.J(a)!==c){qxa(this,a);Jx.C.set[z](this,a,c);if(c&&c instanceof uh){c=ih(c,oy,G(this.FKa,this,a));if(!this.msa)this.msa=new Hf;this.msa.set(a,c)}this.FKa(a)}};F.Vl=function $fj(a){var c=this.Um.mb;c.Qf();try{Jx.C.Vl[z](this,a)}finally{c.Mf()}};F.FKa=function $gj(a){this.Um.mb.c9a(this.Um,a)};H(Kx,Hx);F=Kx[w];F.J=D(fRa);F.L=function $ij(){Kx.C.L[z](this);this.lI.D()};F.hC=function $jj(){var a=hy.C.hC[z](this);a|=16;return a};F.Ca=function $kj(a){return this.lI.J(a)};F.Fa=function $lj(a,c){this.lI.set(a,c)};H(sxa,Kx);var s4a="hg",ML="ia",NL="al",OL="cs",PL="af",QL="pd",RL="it",t4a="chh",u4a="cfh",v4a="chu",w4a="chih",x4a="cfu",y4a="sbu",SL="ow",TL="sl",UL="hb",z4a="hv",A4a="hh",VL="vl",WL="pl",B4a="bl",XL="lu",YL="ip",C4a="rh",D4a="cad",ZL="asd",E4a="aid",F4a="ihru",G4a="edw",H4a="spg",I4a="ulm",J4a="tlt",K4a="ppl",L4a="bjl",M4a="tal";\r
18080 sxa[w].k0c=function $mj(a){a=new mxa(a[dq]);this.mb.Qf();try{this.Fa(s4a,a.O[1]);this.Fa(ML,a.O[3]);this.Fa(NL,a.O[4]);this.Fa(OL,a.O[5]);this.Fa(PL,a.O[6]);this.Fa(QL,a.O[7]);this.Fa(RL,a.O[8]);this.Fa(t4a,a.O[9]);this.Fa(u4a,a.O[10]);this.Fa(v4a,a.O[25]);this.Fa(w4a,a.O[29]);this.Fa(x4a,a.O[26]);this.Fa(y4a,a.O[27]);this.Fa(RD,a.O[11]);this.Fa(qD,a.O[24]);this.Fa(SL,a.O[12]);this.Fa(TL,a.O[13]);this.Fa(UL,a.O[14]);this.Fa(z4a,a.O[15]);this.Fa(A4a,a.O[16]);this.Fa(DE,a.O[17]);this.Fa(VL,a.O[18]);\r
18081 this.Fa(WL,a.O[19]);this.Fa(EE,a.O[20]);this.Fa(PG,a.O[28]);for(var c=[],d=a.O[21],f=0;f<d[u];f++)c[p](new RegExp(d[f],ii));this.Fa(mH,c);this.Fa(FL,a.O[22]);this.Fa(B4a,a.O[23]);d={};var g=a.O[2];for(f=0;f<g[u];f+=2)d[g[f]]=g[f+1];this.Fa(Uz,d);this.Fa(XL,a.O[31]);this.Fa(YL,a.O[32]);this.Fa(C4a,a.O[33]);this.Fa(D4a,a.O[34]);this.Fa(ZL,a.O[35]);this.Fa(E4a,a.O[36]);this.Fa(F4a,a.O[37]);this.Fa(fe,a.O[38]);this.Fa(hAa,a.O[39]);this.Fa(G4a,a.O[40]);this.Fa(H4a,a.O[41]);this.Fa(I4a,a.O[42]);this.Fa(J4a,\r
18082 a.O[43]);this.Fa(K4a,a.O[44]);this.Fa(L4a,a.O[45]);this.Fa(M4a,a.O[46])}finally{this.mb.Mf()}};H(txa,Jf);F=txa[w];F.Js=1;F.FVa=0;F.Ug=function $nj(a,c,d){var f=this.CM[a];f||(f=this.CM[a]=[]);var g=this.Js;this.MI[g]=a;this.MI[g+1]=c;this.MI[g+2]=d;this.Js=g+3;f[p](g);return g};F.oz=function $oj(a,c,d){var f=this.Ug(a,function(){c[cd](d,arguments);this.O_a(f)},this);return f};F.vX=function $pj(a,c,d){if(a=this.CM[a]){var f=this.MI;if(a=vm(a,function(g){return f[g+1]==c&&f[g+2]==d}))return this.O_a(a)}return k};\r
18083 F.O_a=function $qj(a){if(this.FVa!=0){if(!this.Zza)this.Zza=[];this.Zza[p](a);return k}var c=this.MI[a];if(c){var d=this.CM[c];d&&jf(d,a);delete this.MI[a];delete this.MI[a+1];delete this.MI[a+2]}return!!c};F.Kh=function $rj(a){var c=this.CM[a];if(c){this.FVa++;for(var d=qf(arguments,1),f=0,g=c[u];f<g;f++){var j=c[f];this.MI[j+1][cd](this.MI[j+2],d)}this.FVa--;if(this.Zza&&this.FVa==0)for(;c=this.Zza.pop();)this.O_a(c);return f!=0}return k};\r
18084 Aa(F,function $sj(a){if(a){var c=this.CM[a];if(c){Ff(c,this.O_a,this);delete this.CM[a]}}else{Ia(this.MI,0);this.CM={}}});F.Nb=function $tj(a){if(a){var c=this.CM[a];return c?c[u]:0}a=0;for(c in this.CM)a+=this.Nb(c);return a};F.L=function $uj(){txa.C.L[z](this);delete this.MI;delete this.CM;delete this.Zza};var vxa;H(uxa,Jf);F=uxa[w];F.Ug=function $vj(a,c){this.Yka.Ug(String(a),c)};F.oz=function $wj(a,c){this.Yka.oz(String(a),c)};F.vX=function $xj(a,c){return this.Yka.vX(String(a),c)};F.Kh=function $yj(a){var c=qf(arguments,1);c[ld](String(a));return this.Yka.Kh[cd](this.Yka,c)};F.D=function $zj(){if(!this.Pc){uxa.C.D[z](this);this.Yka.D();this.yu[bc]();vxa=this.yu=i}};F.Gn=function $Aj(a){for(var c=qf(arguments,1),d=this.yu.J(a),f=0;d&&f<d[u];f++){var g=d[f].Tfa[cd](i,c);if(Ue(g))return g}return i};\r
18085 F.Ued=function $Bj(a){for(var c=qf(arguments,1),d=this.yu.J(a),f=[],g=0;d&&g<d[u];g++){var j=d[g].Tfa[cd](i,c);if(Ue(j))f[f[u]]=j}return f};Ha(wxa[w],function $Cj(){return this.O[t]()});wxa[w].kc=D(ae);F=yxa[w];F.ea=function $Ej(){return this.O[0]};F.Yh=function $Fj(){return this.O[1]};F.Fl=function $Gj(){return this.O[2]};F.yua=function $Hj(){return this.O[3]};F.zua=function $Ij(){return this.O[4]};Ha(F,function $Jj(){return this.O[t]()});F.kc=D(ae);zxa[w].ea=function $Lj(){return this.O[0]};Ha(zxa[w],function $Mj(){return this.O[t]()});zxa[w].kc=D(ae);xxa[w].ea=function $Oj(){return this.O[0]};Ha(xxa[w],function $Pj(){return this.O[t]()});\r
18086 xxa[w].kc=D(ae);var Rxa,Oxa=/\./g;Ha(Sxa[w],function $Rj(){return this.O[t]()});Sxa[w].kc=D(ae);Txa[w].ea=function $Tj(){return this.O[1]};Ha(Txa[w],function $Uj(){return this.O[t]()});Txa[w].kc=D(ae);var N4a="PT0S",aM="Y",bM="T";\r
18087 ay[w].bEa=function $Wj(a){var c=l.min(this.cJ,this.RH,this.hs,this.zs,this.Zw,this.zx),d=l.max(this.cJ,this.RH,this.hs,this.zs,this.Zw,this.zx);if(c<0&&d>0)return i;if(!a&&c==0&&d==0)return N4a;d=[];c<0&&d[p](Qd);d[p](Xd);if(this.cJ||a)d[p](l.abs(this.cJ)+aM);if(this.RH||a)d[p](l.abs(this.RH)+XD);if(this.hs||a)d[p](l.abs(this.hs)+TC);if(this.zs||this.Zw||this.zx||a){d[p](bM);if(this.zs||a)d[p](l.abs(this.zs)+aD);if(this.Zw||a)d[p](l.abs(this.Zw)+XD);if(this.zx||a)d[p](l.abs(this.zx)+YD)}return d[kd](I)};\r
18088 ay[w].Qc=function $Xj(a){return a.cJ==this.cJ&&a.RH==this.RH&&a.hs==this.hs&&a.zs==this.zs&&a.Zw==this.Zw&&a.zx==this.zx};ay[w].vc=function $Yj(){return new ay(this.cJ,this.RH,this.hs,this.zs,this.Zw,this.zx)};ay[w].add=function $Zj(a){this.cJ+=a.cJ;this.RH+=a.RH;this.hs+=a.hs;this.zs+=a.zs;this.Zw+=a.Zw;this.zx+=a.zx};F=by[w];F.SG=0;F.Sfa=3;F.vc=function $_j(){var a=new by(this.Od);a.SG=this.SG;a.Sfa=this.Sfa;return a};F.getFullYear=function $0j(){return this.Od[fr]()};F.getYear=function $1j(){return this[fr]()};\r
18089 kaa(F,function $2j(){return this.Od[Cq]()});jp(F,function $3j(){return this.Od[iq]()});fma(F,function $4j(){return this.Od[hc]()});F.getDay=function $5j(){return this.Od[Gq]()};F.getUTCFullYear=function $6j(){return this.Od.getUTCFullYear()};F.getUTCMonth=function $7j(){return this.Od.getUTCMonth()};F.getUTCDate=function $8j(){return this.Od[Ema]()};F.getUTCHours=function $9j(){return this.Od[Qma]()};F.getUTCMinutes=function $$j(){return this.Od.getUTCMinutes()};F.getTimezoneOffset=function $ak(){return this.Od[sr]()};\r
18090 F.set=function $bk(a){this.Od=new Date(a[fr](),a[Cq](),a[iq]())};F.setFullYear=function $ck(a){this.Od[sq](a)};F.setYear=function $dk(a){this[sq](a)};F.setMonth=function $ek(a){this.Od[qq](a)};hma(F,function $fk(a){this.Od[zq](a)});F.setTime=function $gk(a){this.Od[gr](a)};F.setUTCFullYear=function $hk(a){this.Od.setUTCFullYear(a)};F.setUTCMonth=function $ik(a){this.Od.setUTCMonth(a)};F.setUTCDate=function $jk(a){this.Od.setUTCDate(a)};\r
18091 F.add=function $kk(a){if(a.cJ||a.RH){var c=this[Cq]()+a.RH+a.cJ*12,d=this[ar]()+l[rb](c/12);c%=12;if(c<0)c+=12;var f=l.min(Uxa(d,c),this[iq]());this[zq](1);this[sq](d);this[qq](c);this[zq](f)}if(a.hs){c=new Date(this[ar](),this[Cq](),this[iq](),12);a=new Date(c[hc]()+a.hs*864E5);this[zq](1);this[sq](a[fr]());this[qq](a[Cq]());this[zq](a[iq]());Yxa(this,a[iq]())}};F.bEa=function $lk(a,c){return[this[fr](),nx(this[Cq]()+1,2),nx(this[iq](),2)][kd](a?Qd:I)+(c?Zxa(this):I)};\r
18092 F.Qc=function $mk(a){return this[ar]()==a[ar]()&&this[Cq]()==a[Cq]()&&this[iq]()==a[iq]()};Ha(F,function $nk(){return this.bEa()});F.valueOf=function $ok(){return this.Od[sma]()};H(dy,by);F=dy[w];F.getHours=function $pk(){return this.Od[xq]()};F.getMinutes=function $qk(){return this.Od[nr]()};F.getSeconds=function $rk(){return this.Od[Oq]()};F.getMilliseconds=function $sk(){return this.Od.getMilliseconds()};F.getUTCHours=function $tk(){return this.Od[Qma]()};F.getUTCMinutes=function $uk(){return this.Od.getUTCMinutes()};\r
18093 F.setHours=function $vk(a){this.Od[Pma](a)};F.setMinutes=function $wk(a){this.Od[Ama](a)};F.setSeconds=function $xk(a){this.Od[Jma](a)};F.setMilliseconds=function $yk(a){this.Od.setMilliseconds(a)};F.setUTCHours=function $zk(a){this.Od.setUTCHours(a)};F.add=function $Ak(a){by[w].add[z](this,a);a.zs&&this[Pma](this.Od[xq]()+a.zs);a.Zw&&this[Ama](this.Od[nr]()+a.Zw);a.zx&&this[Jma](this.Od[Oq]()+a.zx)};\r
18094 F.bEa=function $Bk(a,c){var d=by[w].bEa[z](this,a);if(a)return d+J+nx(this[xq](),2)+xj+nx(this[nr](),2)+xj+nx(this[Oq](),2)+(c?Zxa(this):I);return d+bM+nx(this[xq](),2)+nx(this[nr](),2)+nx(this[Oq](),2)+(c?Zxa(this):I)};F.Qc=function $Ck(a){return this[hc]()==a[hc]()};Ha(F,function $Dk(){return this.bEa()});F.vc=function $Ek(){var a=new dy(this.Od);a.SG=this.SG;a.Sfa=this.Sfa;return a};_B_prog(45)}catch(e){_B_err(e)}\r
18095 \r
18096 try{var cM={};cM.bx_show0=h;cM.bx_show1=h;cM.bx_show2=h;cM.ix_nt=iea;cM.bx_hs=k;cM.bx_sc=k;cM.bx_ns=k;var dM="\n\r";cM.sx_dn=dM;cM.sx_rt=dM;cM.sx_sg=dM;cM.sx_sf="http://www.brainyquote.com/link/quotefu.rss";cM.bx_ve=k;cM.sx_vs=dM;cM.sx_vm=dM;cM.bx_vc=k;cM.lx_vst=(new by)[hc]();cM.lx_vend=dM;cM.bx_cm=h;cM.bx_en=k;cM.sx_dl=Vz;cM.bx_rf=k;cM.ix_ca=k;cM.ix_dotr=k;cM.bx_asd=h;cM.ix_at=k;cM.ix_ql=10;cM.bx_lq=k;cM.bx_sn=h;cM.sx_em=dM;cM.sx_at=I;cM.bx_pe=k;cM.ix_pd=k;cM.bx_ie=k;cM.sx_pu=dM;cM.ix_pp=k;\r
18097 cM.bx_pd=k;cM.bx_sp=k;cM.bx_qlfo=h;cM.ix_llsp=60;var O4a="classic";cM.sx_eisp=O4a;cM.bx_eie=h;cM.sx_emsk=dM;cM.bx_emao=k;cM.bx_dsp=h;cM.bx_vesp=h;cM.sx_clcp=I;cM.ix_clcip=-2;cM.sx_ltl="is:starred is:drafts";cM.sx_ltt=I;cM.sx_ltp=wB;cM.ix_ltps=9;cM.bx_sme=k;cM.bx_tm=h;cM.ix_gdc=0;cM.ix_lsas=104857600;cM.bx_too=h;cM.ix_scp=10;cM.bx_aec=1;cM.sx_dtsp=I;cM.sx_skcs=dM;cM.sx_sd=dM;cM.sx_sklctn=dM;cM.ix_lscd=0;cM.bx_iae=h;cM.ix_ieb=0;cM.ix_uwptl=5;cM.ix_usptl=2;cM.bx_ud=k;cM.bx_usf=h;cM.bx_ibcop=h;\r
18098 cM.bx_ibcac=h;cM.bx_ibcar=h;cM.sx_sds=I;cM.bx_ioof=h;var P4a="COMPOSE",Q4a="SEARCH",eM="BACK",fM="PREV",gM="NEXT",hM="STAR",R4a="REMOVE",iM="IGNORE",jM="SPAM",kM="TRASH",lM="OPEN",S4a="PREVMSG",T4a="NEXTMSG",mM="REPLY",nM="REPLY_NEW_WINDOW",oM="REPLYALL",pM="REPLYALL_NEW_WINDOW",qM="FORWARD",rM="FORWARD_NEW_WINDOW",U4a="QUICKCONTACTS",V4a="GO_INBOX",W4a="GO_STARRED",X4a="GO_SENT",Y4a="GO_DRAFTS",Z4a="GO_ALL",a5a="GO_CONTACTS",b5a="SELECT_ALL",c5a="SELECT_NONE",d5a="SELECT_READ",e5a="SELECT_UNREAD",f5a="SELECT_STARRED",g5a="SELECT_UNSTARRED",h5a="LAST_IM_MOLE",\r
18099 i5a="UPDATE_CONVERSATION",j5a="REMOVE_LABEL_AND_PREV",k5a="REMOVE_LABEL_AND_NEXT",sM="UNDO",tM="MORE_ACTIONS",l5a="MARK_AS_READ",m5a="MARK_AS_UNREAD",n5a="SHORTCUT_HELP",o5a="ARCHIVE",p5a="MOVE_TO",q5a="LABEL_AS",r5a={Zsd:P4a,qEb:Q4a,osd:eM,Cwd:fM,Lwd:gM,tpc:KG,Nyd:hM,Bxd:R4a,unc:iM,Oxd:jM,mwd:kM,OPEN:lM,fxd:S4a,Hwd:T4a,Fxd:mM,Lxd:nM,Gxd:oM,Hxd:pM,pud:qM,tud:rM,oxd:U4a,Bud:V4a,Dud:W4a,Cud:X4a,Aud:Y4a,yud:Z4a,zud:a5a,fyd:b5a,gyd:c5a,hyd:d5a,jyd:e5a,iyd:f5a,kyd:g5a,Ivd:h5a,Jzd:i5a,Dxd:j5a,Cxd:k5a,xqc:sM,\r
18100 ewd:tM,Svd:l5a,Tvd:m5a,ryd:n5a,gsd:o5a,lwd:p5a,Dvd:q5a},s5a,YG={};YG.COMPOSE="Compose";var uM="Search";YG.SEARCH=uM;var t5a="Back to threadlist";YG.BACK=t5a;YG.PREV="Newer conversation";YG.NEXT="Older conversation";YG.SELECT="Select conversation";YG.STAR="Star conversation";var u5a="Remove label";YG.REMOVE=u5a;YG.IGNORE="Ignore conversation";YG.SPAM="Report as spam";YG.TRASH="Move to trash";var v5a="Open conversation";YG.OPEN=v5a;YG.PREVMSG="Previous message";YG.NEXTMSG="Next message";var vM="Reply";\r
18101 YG.REPLY=vM;YG.REPLY_NEW_WINDOW="Reply in a new window";YG.REPLYALL="Reply all";YG.REPLYALL_NEW_WINDOW="Reply all in a new window";var w5a="Forward";YG.FORWARD=w5a;YG.FORWARD_NEW_WINDOW="Forward in a new window";YG.QUICKCONTACTS="Focus chat contact search";YG.GO_INBOX="Go to Inbox";YG.GO_STARRED="Go to Starred conversations";YG.GO_SENT="Go to Sent messages";YG.GO_DRAFTS="Go to Drafts";YG.GO_ALL="Go to All mail";YG.GO_CONTACTS="Go to Contacts";YG.SELECT_ALL="Select all conversations";\r
18102 YG.SELECT_NONE="Deselect all conversations";YG.SELECT_READ="Select read conversations";YG.SELECT_UNREAD="Select unread conversations";YG.SELECT_STARRED="Select starred conversations";YG.SELECT_UNSTARRED="Select unstarred conversations";YG.LAST_IM_MOLE="Focus last chat mole";YG.UPDATE_CONVERSATION="Update conversation";YG.REMOVE_LABEL_AND_PREV="Remove label and go to previous conversation";YG.REMOVE_LABEL_AND_NEXT="Remove label and go To next conversation";YG.UNDO="Undo last action";\r
18103 YG.MORE_ACTIONS="Open more actions menu";var wM="Mark as read";YG.MARK_AS_READ=wM;var x5a="Mark as unread";YG.MARK_AS_UNREAD=x5a;YG.SHORTCUT_HELP="Open shortcut help";var y5a="Archive";YG.ARCHIVE=y5a;YG.MOVE_TO="Open move to menu";YG.LABEL_AS="Open label as menu";var OF=new uh;\r
18104 OF.ri={c:P4a,"/":Q4a,u:eM,k:fM,j:gM,x:KG,s:hM,y:R4a,m:iM,"!":jM,"#":kM,o:lM,p:S4a,n:T4a,r:mM,R:nM,a:oM,A:pM,f:qM,F:rM,q:U4a,gi:V4a,gs:W4a,gt:X4a,gd:Y4a,ga:Z4a,gc:a5a,"*a":b5a,"*n":c5a,"*r":d5a,"*u":e5a,"*s":f5a,"*t":g5a,"\u001b":h5a,N:i5a,"]":j5a,"[":k5a,z:sM,".":tM,I:l5a,U:m5a,"?":n5a,e:o5a,v:p5a,l:q5a};OF.Gi=function $Fk(a,c,d){for(var f=a;f[u]>0;f=f[lb](0,-1))if(OF.ri[f])e(Error(".52`"+a+qw+f));OF.ri[a]=c;YG[c]=d;OF[r](Ky)};OF.J=function $Gk(){return OF.ri};_B_prog(46)}catch(e){_B_err(e)}\r
18105 \r
18106 try{H(aya,Jf);aya[w].L=function $Hk(){Kf(this.ud);Kf(this.eQ);Kf(this.s8a)};Ha(bya[w],function $Ik(){return this.O[t]()});bya[w].kc=D(ae);F=cya[w];F.zO=function $Kk(){return this.O[1]};va(F,function $Lk(){return this.O[2]});F.qta=function $Mk(){return this.O[8]};Ha(F,function $Nk(){return this.O[t]()});F.kc=D(ae);H(eya,Kx);H(hya,eya);var xM="ic",z5a="cru",A5a="fru",B5a="evw",C5a="oid";hya[w].b9c=function $Pk(a){a=new cya(a[dq]);this.mb.Qf();try{this.Fa(Rd,a.zO());this.Fa(Zx,a[pq]());this.Fa(Pd,a.O[3]);this.Fa(ML,a.O[4]);this.Fa(xM,a.O[5]);this.Fa(z5a,a.O[6]);this.Fa(LF,a.O[7]);this.Fa(dx,a.qta());this.Fa(A5a,a.O[9]);this.Fa(ge,a.O[11]);this.Fa(B5a,a.O[12]);this.Fa(C5a,a.O[13])}finally{this.mb.Mf()}};var yM="gn";hya[w].E1c=function $Qk(a){this.Fa(yM,(new bya(a[dq])).O[1])};hya[w].f_c=function $Rk(){this.Fa(gya,h)};var D5a="ix_cps",Iya={bxd:By,Lvd:D5a};H(hy,Hx);var E5a=new Hf;F=hy[w];var F5a="NOT LOADED";F.Dv=F5a;F.Lz=ly;F.YAa=0;F.Hkb=0;F.hC=function $Sk(){var a=hy.C.hC[z](this);a|=26;if(this.dQa)a|=1;return a};F.J=function $Tk(){Ix(this);return this.QN};F.Uc=function $Uk(){Ix(this);return this.bf?this.bf:E5a};F.qj=function $Vk(){Ix(this);return this.bf?this.bf.Nb():0};F.za=function $Wk(a){return iy(this,a)};F.cNa=function $Xk(){Ix(this);return this.Dv};F.zMa=function $Yk(){Ix(this);return this.Lz};F.Ds=function $Zk(){Ix(this);return!!this.Vwa};\r
18107 F.hc=function $_k(){Ix(this);return this.cNa()==ky};F.Es=function $0k(){Ix(this);return this.zMa()==ly};F.Fi=function $1k(){Ix(this);return this.cNa()==ky&&this.zMa()==ly};F.B=function $2k(){return this.mb.B()};F.L=function $3k(){hy.C.L[z](this);if(this.bf){for(var a=this.bf.Oa(),c=0;c<a[u];c++)a[c].D();this.bf[bc]()}a=this.ac();c=this.mb;xLa(c.g1,this);jya(this,i);a&&a[Nc](this);c&&c.M5b(this,a)};\r
18108 F.ha=function $4k(a){var c=a.vn();if(!this.bf)this.bf=new Hf;if(this.bf.Xb(c))e(Error(".53`"+this.Je()+qw+c));if(a.ac())e(Error(".54`"+a.Je()));a.Ig(this);this.bf.set(c,a)};lk(F,function $5k(a){var c=a.vn();if(!this.bf||!this.bf.Xb(c))e(Error(".55`"+this.Je()+qw+c));a.Ig(i);this.bf[Pb](c)});F.set=function $6k(a){Ix(this);this.Dv=ky;this.Lz=ly;this.Vwa=k;jya(this,a);ny(this)};F.DJb=function $7k(){Ix(this);this.Dv=F5a;this.Lz=ly;this.Vwa=k;jya(this,i);ny(this)};F.QK=function $8k(){this.Lz=yLa;this.mb.N5b(this)};\r
18109 F.bva=function $9k(a){ny(this,a.aJ)};F.Iz=function $$k(){if(this.dQa){var a=this.mb.g1;this.YAa==0&&xLa(a,this);this.YAa++;this.mb.Ypb(this)}};F.bB=function $al(){if(this.dQa)if(this.YAa!=0){this.YAa--;this.mb.Ypb(this);var a=this.mb.g1;if(this.YAa==0){this.Hkb=a.CLb;a.ela.set(this.Je(),this)}}};H(py,hy);py[w].PK=function $bl(){this.QK()};py[w].hC=function $cl(){var a=py.C.hC[z](this);if(this.qBc)a|=32;return a};H(qy,uh);va(qy[w],D(LL));qy[w].Ca=D(Ad);Ha(qy[w],function $fl(){return String(this.jf)});H(ry,hy);ry[w].nM=function $gl(a){this.mb.Qf();try{var c;if(a[u]==1||a[1][u]==0)c=[];c=Ve(a[1][0])?a[1]:qf(a,1);for(a=0;a<c[u];a++){var d=c[a][0],f=c[a][1],g=this.za(Qf(d));g||(g=new py(Qf(d),this));g.set(new qy(d,f))}my(this)}finally{this.mb.Mf()}};ry[w].za=function $hl(a,c){Ix(this);var d=iy(this,a);if(d||c)return d;return new py(a,this)};H(pya,xx);F=pya[w];F.CJa=B();F.CJa.Rn=h;F.KMa=B();F.KMa.Rn=h;F.Hwa=B();F.Hwa.ic=h;H(rya,hy);yx(pya,rya);F=rya[w];F.za=function $ll(a,c){Ix(this);var d=iy(this,a);if(d||c)return d;return(a=this.aa.CJa(a))?a:i};F.rg=function $ml(){Ix(this);if(this.Fi()){this.mb.Qf();try{this.QK();for(var a=this.Uc().Oa(),c=0;c<a[u];c++)a[c].PK()}finally{this.mb.Mf()}}};F.db=function $nl(a){Ix(this);if(this.aa.Hwa(a)){Ix(this);return this.RZb[a]}var c=sya(this,a).J();if(c==i){c=this.aa.KMa(a);if(c!=i){this.Yc(a,c);return c}else return i}return c.Ca()};\r
18110 F.Yc=function $ol(a,c){Ix(this);if(this.aa.Hwa(a)){Ix(this);this.RZb[a]=typeof c==ig?c?Hj:Ah:typeof c==Qe?String(c):c}else{var d=sya(this,a);a=a[Cc](Md);c=new qy(a.pop(),c);d.set(c)}};F.Oo=function $pl(a){return String(this.db(a))};F.nf=function $ql(a){return!!Number(this.db(a))};F.Ep=function $rl(a){return Number(this.db(a))};F.Yn=function $sl(a){return sya(this,a).Je()};H(sy,uh);var zM="Xa";sy[w].ea=D(zM);sy[w].Qe=D(ge);var AM="Me";sy[w].Dd=D(AM);sy[w].Vc=D("Rj");var uya=new cg;uya.Vl([5,6,7,8,9,11,13,14]);H(uy,hy);uy[w].nM=function $xl(a){for(var c=new Hf,d=1;d<a[u];d++)c.set(Qf(a[d][0]),a[d]);this.mb.Qf();try{var f=this.Uc(),g=f.Sb();for(d=0;d<g[u];d++){var j=g[d],n=f.J(j),s=c.J(j);if(s){var v=new sy(s);n.set(v);c[Pb](j)}else mya(n,h)}f=this;var C=c.Sb();for(d=0;d<C[u];d++){j=C[d];var M=c.J(j),Y=new py(Qf(j),f),ha=new sy(M);Y.set(ha)}this.dbb=[];for(d=1;d<a[u];d++)this.dbb[p](this.za(Qf(a[d][0])).J());my(this)}finally{this.mb.Mf()}};\r
18111 uy[w].za=function $yl(a,c){Ix(this);var d=iy(this,a);if(d||c)return d;return new py(a,this)};uy[w].DT=D("dbb");zx(wya,pya);var BM="filters";wya[w].CJa=function $Al(a){switch(a){case Hya:return new ry(Hya,this.sAa);case BM:return new uy(BM,this.sAa)}return i};wya[w].KMa=function $Bl(a){return(a=Mf(a,this.hVa)?a[lb](this.hVa[u]):i)?cM[a]:i};var CM="sx_cks_";wya[w].Hwa=function $Cl(a){return(Mf(a,this.hVa)?a[lb](this.hVa[u]):i)==CM};H(wy,Jf);var G5a={},DM="enabled";G5a[0]=DM;G5a[1]="customize";var H5a="popular";G5a[2]=H5a;wy[w].L=function $Dl(){wy.C.L[z](this);this.Mk.D()};wy[w].Xqb=function $El(){this.J9=h;Ff(this.Trb,function(a){a.ad(this.rl)},this);Ia(this.Trb,0)};\r
18112 var EM="bx_hs",I5a="bx_cm",J5a="bx_pd",K5a="ix_fv",L5a="bx_tkup",M5a="bx_tksp",N5a="bx_tkmn",O5a="sx_tkli",P5a="ix_tklv",FM="sx_dl",GM="sx_trl",HM="bx_tm",Q5a="sx_trh",R5a="sx_trlo",S5a="sx_rt",T5a="bx_en",U5a="bx_rf",IM="sx_em",JM="sx_at",KM="bx_ve",LM="sx_vs",MM="sx_vm",V5a="bx_vc",W5a="lx_vst",NM="lx_vend",OM="ix_ss",PM="sx_sg",QM="bx_se",X5a="sx_sa",Y5a="sx_sf",Z5a="bx_lis",a6a="bx_xs",RM="sx_xs",b6a="ix_ca",c6a="ix_dotr",SM="ix_ql",d6a="bx_aa",TM="bx_sn",UM="bx_pe",e6a="ix_pd",VM="bx_ie",f6a=\r
18113 "bx_yjsc",g6a="bx_yjotr",WM="sx_yjpls",h6a="sx_yjgps",i6a="bx_yjgpc",j6a="sx_pu",k6a="ix_pp",XM="bx_qlfo",l6a="sx_yjcaps",m6a="bx_yjcapc",n6a="sx_yjaps",o6a="bx_yjapc",p6a="bx_yjabs",q6a="ix_as",r6a="sx_eisp",YM="bx_eie",s6a="sx_emsk",ZM="bx_emao",t6a="sx_bkmk_",aN="sx_bkmk_c",bN="ix_udf",cN="ix_utf",u6a="sx_ussl",v6a="sx_mgp",w6a="sx_clcp",x6a="ix_clcip",y6a="sx_wsh",dN="bx_bau",z6a="bx_dsp",A6a="bx_vesp",B6a="bx_vctn",C6a="sx_ts",eN="sx_tl",fN="bx_te",D6a="bx_ta",E6a="sx_st",F6a="sx_oshs",gN="sx_skcs",\r
18114 G6a="sx_sd",hN="sx_sklctn",iN="bx_iae",jN="ix_ieb",kN="ix_ifm",H6a="sx_dtsp",I6a="sx_ltl",J6a="sx_ltt",lN="sx_ltp",mN="ix_ltps",nN="bx_sme",K6a="ix_scp",L6a="sx_ugp",oN="bx_asd",M6a="ix_gdc",pN="ix_lsas",N6a="sx_yjvps",O6a="bx_yjvpc",qN="bx_too",P6a="sx_finb",Q6a="bx_aec",R6a="lppn_ldt",rN="ix_lscd",S6a="ix_uwptl",T6a="ix_usptl",U6a="bx_upd",sN="bx_ud",V6a="bx_usf",W6a="bx_ibcop",X6a="bx_ibcac",Y6a="bx_ibcar",tN="sx_iods",Z6a="ix_iothe",a7a="bx_iopd",b7a="sx_iogps",c7a="sx_iogpp",d7a="bx_ioao",e7a=\r
18115 "bx_ioof",f7a="sx_iocs",g7a="bx_smsp",Cya=new Hf({wvd:EM,uyd:"bx_show0",tyd:"bx_show1",vyd:"bx_show2",yyd:"bx_show3",Mud:"bx_hidetp",Pud:I5a,Rwd:J5a,Uyd:"bx_sv",Ssd:K5a,Jwd:g1a,syd:bL,YDb:cL,Psd:"sx_ca",bzd:L5a,czd:M5a,azd:N5a,Yyd:O5a,Zyd:P5a,ztd:FM,vmc:qAa,jzd:GM,hzd:HM,izd:Q5a,kzd:R5a,Mxd:S5a,Vtd:T5a,Kxd:U5a,sud:IM,rud:JM,Szd:KM,Wzd:LM,Uzd:MM,Rzd:V5a,Vzd:W5a,Tzd:NM,qxd:OM,Gpc:PM,Ayd:QM,zyd:X5a,AEb:Y5a,Mvd:Z5a,Qzd:a6a,Xtd:RM,Jyd:"bx_sp",dwd:"ix_mm",cwd:"sx_si",awd:"ix_rc",bwd:"sx_rw",csd:"ix_at",\r
18116 Qsd:b6a,std:c6a,Ixd:"ix_yjrbc",nxd:SM,Cvd:oJ,vwd:nJ,jsd:d6a,Gyd:TM,Xwd:UM,Wwd:e6a,Rud:VM,kxd:"sx_pf",Rsd:"bx_disableyj",Kud:f6a,Jud:g6a,Xxd:WM,pvd:h6a,ovd:i6a,Koc:j6a,Swd:k6a,Jvd:"sx_tz",mxd:XM,isd:l6a,hsd:m6a,bsd:n6a,asd:o6a,Zrd:p6a,gAd:g6a,ptd:"sx_dbglp",Fvd:"ix_llsp",esd:q6a,Ttd:r6a,Std:YM,Qtd:s6a,Ptd:ZM,wwd:FVa,ktd:CM,Nsd:t6a,Msd:aN,Kzd:bN,Pzd:cN,Ozd:u6a,Rvd:v6a,itd:w6a,jtd:x6a,eAd:y6a,QCb:dN,bAd:"bx_yjvsc",ytd:z6a,Yzd:A6a,Isd:JH,Xzd:B6a,nzd:C6a,ozd:eN,lzd:fN,mzd:D6a,pzd:E6a,Mwd:F6a,Xsd:gN,Cyd:G6a,\r
18117 Byd:hN,Qud:iN,Sud:jN,Tud:kN,ttd:H6a,Yud:I6a,Zud:J6a,Xud:lN,Wud:mN,Lzd:nN,lyd:K6a,Bzd:L6a,ksd:oN,xud:M6a,Pvd:pN,aAd:N6a,Zzd:O6a,Xyd:qN,uud:P6a,dsd:Q6a,Ovd:R6a,Qvd:rN,Izd:S6a,Hzd:T6a,Fzd:U6a,Azd:sN,Gzd:V6a,Ezd:W6a,Dzd:X6a,Czd:Y6a,evd:tN,kvd:Z6a,jvd:a7a,fvd:b7a,gvd:c7a,cvd:d7a,hvd:e7a,dvd:f7a,ayd:Y_a,Eyd:g7a});F=wy[w];F.DT=function $Fl(){zy(this,this.rl);return this.rl.za(BM).DT()};F.GE=function $Gl(a){zy(this,this.rl);return(a=Eya(this,a,h))?a.J():i};F.Fi=function $Hl(){return this.rl.Fi()};F.rg=function $Il(){this.rl.rg()};\r
18118 F.db=function $Jl(a){return this.rl.db(Cy(this,a))};F.Yc=function $Kl(a,c){this.rl.Yc(Cy(this,a),c)};F.Oo=function $Ll(a){return this.rl.Oo(Cy(this,a))};F.nf=function $Ml(a){return this.rl.nf(Cy(this,a))};F.Ep=function $Nl(a){return this.rl.Ep(Cy(this,a))};F.Yn=function $Ol(a){return this.rl.Yn(Cy(this,a))};F.oza=function $Pl(a){if(!a.Pg||a.Pg.H()!=this)this.rk(a.Pg,a.QLb,a[dq])};\r
18119 F.rk=function $Ql(a,c,d){if(!this.Pc)switch(c){case oy:(a=this.rl.za(Hya))||(a=new ry(Hya,this.rl));a.nM(d);break;case vy:(a=this.rl.za(BM))||(a=new uy(BM,this.rl));a.nM(d);break;case xya:d=Ve(d[1])?d[1]:qf(d,1);for(a=0;a<d[u];a++){var f=Gya+G5a[a];(c=this.rl.za(f))||(c=new py(f,this.rl));c.set(new qy(f,!!Number(d[a])))}break;case yya:(a=this.rl.za(By))||(a=new ry(By,this.rl));a.nM(d);break;case wo:for(f in r5a){a=CM+r5a[f];this.Yc(a[od](),dM)}d=(new Sxa(d)).HHb;for(f=0;f<d[u];f++){c=d[f];a=CM+c.ea();\r
18120 this.Yc(a[od](),c.O[0])}break}};_B_prog(47)}catch(e){_B_err(e)}\r
18121 \r
18122 try{var uN=Dy(k),vN=Dy(h);var Hy={};Kya[w].Aqb=function $Rl(a){var c=a.Dg();this.Pd[c]||(this.Pd[c]=a)};Kya[w].f_=function $Sl(a){return this.Pd[a]};Hy.rfc=new Kya;Hy.Aqb=function $Tl(a){Hy.rfc.Aqb(a)};Hy.f_=function $Ul(a){return Hy.rfc.f_(a)};var _GM_getMailSearch=Hy;F=Gy[w];F.Ga=D(Gd);F.Qc=function $Wl(a){return!!(a&&this.Dg()==a.Dg())};F.Dg=D("Js");F.Xs=function $Yl(){e(Error(".56`"+this.Xd))};F.Rc=function $Zl(a){return this.Fn.J(a)};F.ZZ=D(N_a);F.nd=E(k);Ha(F,function $1l(){return this.Dg()});F.lba=uN;H(Rya,Gy);F=Rya[w];F.Qe=D(ge);var h7a="search/";F.Xs=function $3l(){return h7a+Lya(this.ae)};F.nd=function $4l(){return!this.ae};F.FL=E(h);F.Qb=E(rC);var i7a="Search results";va(F,E(i7a));H(Sya,Gy);var j7a="as_from",k7a="as_to",l7a="as_subj",m7a="as_has",n7a="as_hasnot",o7a="as_attach",p7a="as_within",q7a="as_date",cza={WM:j7a,RR:k7a,QR:l7a,Ryd:Tya,mnc:m7a,nnc:n7a,clc:o7a,fAd:p7a,p1a:q7a,xyd:Zya},d1a=new Hf({from:j7a,to:k7a,subject:l7a,subset:Tya,has:m7a,hasnot:n7a,attach:o7a,within:p7a,date:q7a}),bza=new Hf(cza);F=Sya[w];var r7a="advanced-search/";F.Xs=function $8l(){return r7a+Nya(this.ZZ(),d1a)};\r
18123 F.nd=function $9l(){var a=this.ZZ();return!(a.J(j7a)||a.J(k7a)||a.J(l7a)||a.J(Tya)!=cz||a.J(m7a)||a.J(n7a)||a.J(o7a)||a.J(q7a))};F.FL=E(h);F.Qb=E(rC);va(F,E(i7a));F.uy=function $cm(){return this.Rc(j7a)||I};F.kC=function $dm(){return this.Rc(k7a)||I};F.mi=function $em(){return this.Rc(l7a)||I};F.Bta=function $fm(){return this.Rc(m7a)||I};F.Dta=function $gm(){return this.Rc(n7a)||I};F.Cta=function $hm(){return!!this.Rc(o7a)};jp(F,function $im(){return this.Rc(q7a)||I});H(Vya,Gy);F=Vya[w];var s7a="nn";F.Pt=D(s7a);var t7a="%2E",u7a="label/";F.Xs=function $km(){var a=Lya(this.nn);if(a==He)a=t7a;return u7a+a};F.FL=E(h);F.Qb=E(rC);va(F,function $nm(){return Vf+this.Pt()+Vf});F.Dd=function $om(){return this.Pt()};F.Iga=function $pm(){return this.Pt()};F.pv=E(1);F.lba=function $rm(a){return a.Xb(this.Dd())};H(Yya,Gy);var v7a="CN";Yya[w].tga=D(v7a);Yya[w].FL=E(k);var wN="Contacts";va(Yya[w],E(wN));H(Qy,Gy);var xN="cf1_from",yN="cf1_to",zN="cf1_subj",AN="cf1_has",BN="cf1_hasnot",CN="cf1_attach",eza={WM:xN,RR:yN,QR:zN,mnc:AN,nnc:BN,clc:CN},e1a=new Hf({from:xN,to:yN,subject:zN,has:AN,hasnot:BN,attach:CN}),dza=new Hf(eza);F=Qy[w];var w7a="create-filter/";F.Xs=function $vm(){return w7a+Nya(this.ZZ(),e1a)};F.FL=E(k);F.Qb=E(kC);va(F,E(i7a));F.uy=function $zm(){return this.Rc(xN)||I};F.kC=function $Am(){return this.Rc(yN)||I};F.mi=function $Bm(){return this.Rc(zN)||I};\r
18124 F.Bta=function $Cm(){return this.Rc(AN)||I};F.Dta=function $Dm(){return this.Rc(BN)||I};F.Cta=function $Em(){return!!this.Rc(CN)};var Sy=new function(){this.Ezb={};this.QCa={}},BSa=new cg([sz,pz,Jy,az,iz,Oy,ul]);H(bz,Gy);F=bz[w];F.Xs=function $Fm(){return this.Ga()};F.FL=E(h);F.Qb=E(ey);F.lba=function $Im(a){return a.Xb(this.Dd())};F.Iga=function $Jm(){return this[pq]()};H(dz,bz);var x7a="All Mail";va(dz[w],E(x7a));var DN="^all";dz[w].Dd=E(DN);dz[w].pv=E(0);Ne(dz);Ry(DN,dz.S());Wy(dz.S());H(iza,Gy);va(iza[w],E(I));Ne(iza);Wy(iza.S());H(gz,bz);var y7a="Chats";va(gz[w],E(y7a));var EN="^b";gz[w].Dd=E(EN);gz[w].pv=E(0);Ne(gz);Ry(EN,gz.S());Wy(gz.S());H(hz,bz);var z7a="Delivered";va(hz[w],E(z7a));var A7a="^d";hz[w].Dd=E(A7a);hz[w].pv=E(0);Ne(hz);Ry(A7a,hz.S());Wy(hz.S());H(jz,bz);var B7a="Drafts";va(jz[w],E(B7a));jz[w].Dd=E(CL);jz[w].pv=E(2);Ne(jz);Ry(CL,jz.S());Wy(jz.S());H(lz,bz);var FN="Inbox";va(lz[w],E(FN));lz[w].Dd=E(TI);lz[w].pv=E(1);Ne(lz);Ry(TI,lz.S());Wy(lz.S());H(mz,bz);var C7a="Muted";va(mz[w],E(C7a));var GN="^g";mz[w].Dd=E(GN);mz[w].pv=E(0);Ne(mz);Ry(GN,mz.S());Wy(mz.S());H(oz,bz);var D7a="Outbox";va(oz[w],E(D7a));var HN="^ob";oz[w].Dd=E(HN);oz[w].pv=E(2);Ne(oz);Ry(HN,oz.S());Wy(oz.S());H(qz,bz);var E7a="Sent Mail";va(qz[w],E(E7a));var IN="^f";qz[w].Dd=E(IN);qz[w].pv=E(0);Ne(qz);Ry(IN,qz.S());Wy(qz.S());H(rz,bz);var JN="Spam";va(rz[w],E(JN));rz[w].Dd=E(AL);rz[w].pv=E(1);rz[w].Qb=E(IF);Ne(rz);Ry(AL,rz.S());Wy(rz.S());H(tz,bz);var KN="Starred";va(tz[w],E(KN));tz[w].Dd=E(oI);tz[w].pv=E(0);Ne(tz);Ry(oI,tz.S());Wy(tz.S());H(uz,bz);var LN="Trash";va(uz[w],E(LN));uz[w].Dd=E(BL);uz[w].pv=E(0);uz[w].Qb=E(IF);Ne(uz);Ry(BL,uz.S());Wy(uz.S());var F7a=dz.S();iza.S();gz.S();hz.S();var R3a=jz.S(),G7a=lz.S();mz.S();var H7a=oz.S(),Q3a=qz.S();rz.S();var I7a=tz.S(),J7a=uz.S();_B_prog(48)}catch(e){_B_err(e)}\r
18125 \r
18126 try{lza[w].Eb=function $in(a){return!!this.trc[a]};mza[w].Dq=D("yZ");Ha(nza[w],function $kn(){return this.O[t]()});nza[w].kc=D(ae);oza[w].Cp=function $mn(){return this.O[2]};Ha(oza[w],function $nn(){return this.O[t]()});oza[w].kc=D(ae);jp(pza[w],function $pn(){return this.O[1]});Ha(pza[w],function $qn(){return this.O[t]()});pza[w].kc=D(ae);Ha(qza[w],function $sn(){return this.O[t]()});qza[w].kc=D(ae);Ha(rza[w],function $un(){return this.O[t]()});rza[w].kc=D(ae);H(wza,Kx);F=wza[w];var MN="np";F.B3c=function $wn(a){a=a[dq];for(var c=1;c<a[u];++c){var d=a[c];if(Ve(d))switch(d[0]){case 0:this.Fa(ex,d[1]);break;case 1:this.Fa(MN,d[1]);break;default:}}};F.d9c=function $xn(a){this.Fa(ii,(new rza(a[dq])).O[1])};F.v1c=function $yn(a){this.Fa(IB,(new nza(a[dq])).O[1])};F.Q6c=function $zn(a){a=new qza(a[dq]);this.Fa(ki,Zf()/1E3-a.O[1])};F.g5c=function $An(a){this.Fa(Pd,(new pza(a[dq]))[iq]())};F.s2c=function $Bn(a){this.Fa(wo,a[dq][1])};\r
18127 F.B4c=function $Cn(a){this.Fa(vza,new oza(a[dq]))};F.E2c=function $Dn(a){this.Fa(xz,a[dq][1])};Ha(yza[w],function $En(){return this.O[t]()});yza[w].kc=D(ae);F=zza[w];va(F,function $Gn(){return this.O[0]});F.Sj=function $Hn(){return this.O[1]};F.wga=function $In(){return this.O[2]};F.PT=function $Jn(){return this.O[3]};Ha(F,function $Kn(){return this.O[t]()});F.kc=D(ae);H(Cza,Kx);Cza[w].H_c=function $Mn(a){a=new yza(a[dq]);this.mb.Qf();try{this.Fa(Bz,Dza(this,a.Ajc));this.Fa(Cz,Dza(this,a.zic))}finally{this.mb.Mf()}};H(Fza,Kx);var NN="dc";Fza[w].y0c=function $Nn(a){a=new wxa(a[dq]);this.mb.Qf();try{this.Fa(zz,a);this.Fa(NN,h)}finally{this.mb.Mf()}};H(Hza,Kx);Hza[w].y1c=function $On(a){this.mb.Qf();try{this.Fa(Bz,vx(a[dq][1]));this.Fa(Cz,vx(a[dq][2]));a[dq][u]>3&&this.Fa(Kd,vx(a[dq][3]));a[dq][u]>4&&this.Fa(Rd,Boolean(a[dq][4]))}finally{this.mb.Mf()}};var K7a=new Hf({"197":772,"743":744,"745":746,"764":765,"766":767,"804":805,"806":807,"947":948,"983":984,"991":992,"1041":1042,"1170":1171,"714":715,"455":733,"942":943,"496":497,"427":480,"431":491,"428":481,"424":477,"453":492,"434":483,"425":478,"435":484,"747":748,"437":486,"436":485,"429":482,"534":535,"387":476,"438":487,"439":488,"539":540,"553":554,"551":555,"548":549,"574":575,"590":591,"586":587,"577":578,"580":581,"582":583,"599":600,"619":620,"874":875,"621":622,"631":632,"654":655,"645":646,\r
18128 "513":556,"678":679,"693":694,"648":695,"1136":1137,"719":720,"721":722,"724":725,"734":735,"739":740,"628":751,"784":785,"799":800,"790":791,"794":795,"1093":1094,"801":802,"1002":1003,"692":825,"771":831,"815":816,"898":899,"248":904,"1031":1032,"872":935,"812":813,"945":946,"1011":1012,"1027":1028,"1063":1064,"981":1081,"1090":1091,"1168":1169,"1096":1097,"1117":1118,"1005":1120,"1132":1133,"1134":1135,"1138":1139,"1157":1158,"1152":1153,"593":594,"595":596,"700":701,"1045":1046,"1154":1155,"633":634});Iza[w].Xj=function $Pn(a){var c=a[2];this.id=a[0];this.og=a[1];this.ZYb=c[1];this.fka=c[3];this.wPc=!!c[6];this.fLc=!!c[8];this.Yib=!!c[7];this.Knb=c[5]-this.fka;this.JI=c[0];this.CZb=c[2];this.Cec=this.JI!=0&&this.JI!=1&&this.JI!=11};H(Lza,Kx);var L7a="ri",ON="ma";Lza[w].e5c=function $Qn(a){a=a[dq];this.mb.Qf();try{this.Fa(L7a,a[1]*1E3);this.Fa(ON,a[2]);for(var c=3,d=[];a[c];){d[p](new Iza(a[c]));c++}this.Fa(Kd,d)}finally{this.mb.Mf()}};Ha(Mza[w],function $Rn(){return this.O[t]()});Mza[w].kc=D(ae);H(Oza,Kx);var M7a="psu",N7a="msu",O7a="tou",PN="gm",P7a="bppu";Oza[w].r5c=function $Tn(a){a=new Mza(a[dq]);this.mb.Qf();try{this.Fa(Zx,a.O[1]);this.Fa(RE,a.O[2]);this.Fa(ii,a.O[3]);this.Fa(Yx,a.O[4]);this.Fa(Hz,a.O[5]);this.Fa(Kd,a.O[6]);this.Fa(dx,a.O[7]);this.Fa(Rd,a.O[8]);this.Fa(Pd,a.O[9]);this.Fa(oy,a.O[10]);this.Fa(M7a,a.O[11]);this.Fa(N7a,a.O[12]);this.Fa(O7a,a.O[13]);this.Fa(PN,a.O[14]);this.Fa(GF,a.O[15]);this.Fa(P7a,a.O[16])}finally{this.mb.Mf()}};Pza[w].Aq=function $Un(){return this.O[4]};Ha(Pza[w],function $Vn(){return this.O[t]()});Pza[w].kc=D(ae);H(Sza,Kx);var QN="up",RN="ug",Q7a="tg",R7a="nq",S7a="aq",T7a="um";Sza[w].e9c=function $Xn(a){a=new Pza(a[dq]);this.mb.Qf();try{this.Fa(QN,a.O[3]);this.Fa(IB,a.O[2]);this.Fa(dx,a.Aq());this.Fa(RN,a.O[8]);this.Fa(Q7a,a.O[9]);this.Fa(QE,a.O[7]);this.Fa(R7a,a.O[5]);this.Fa(S7a,a.O[6]);this.Fa(T7a,a.O[1])}finally{this.mb.Mf()}};Ha(Tza[w],function $Yn(){return this.O[t]()});Tza[w].kc=D(ae);F=Ez[w];F.J=function $_n(a,c){if(a=this.yd.J(a)){if(this.Pd){a[Pb]();Wza(this,a)}return a[q]}return c};F.set=function $0n(a,c){var d=this.yd.J(a);if(d){pa(d,c);if(this.Pd){d[Pb]();Wza(this,d)}}else{d=new Uza(a,c);this.yd.set(a,d);Wza(this,d)}};F.hQ=function $1n(){return this.ni[Rk][q]};F.shift=function $2n(){return Xza(this,this.ni[Rk])};F.pop=function $3n(){return Xza(this,this.ni.SC)};wa(F,function $4n(a){var c=this.yd.J(a);if(c){c[Pb]();this.yd[Pb](a);return h}return k});F.Nb=function $5n(){return this.yd.Nb()};\r
18129 F.nd=function $6n(){return this.yd.nd()};F.Sb=function $7n(){return this.map(function(a,c){return c})};F.Oa=function $8n(){return this.map(Ee())};Sa(F,function $9n(a){return this[Aaa](function(c){return c==a})});F.Xb=function $$n(a){return this.yd.Xb(a)};Aa(F,function $ao(){this.yd[bc]();Ma(this.ni,this.ni.SC=this.ni)});F.forEach=function $bo(a,c){for(var d=this.ni[Rk];d!=this.ni;d=d[Rk])a[z](c,d[q],d.key,this)};\r
18130 F.map=function $co(a,c){for(var d=[],f=this.ni[Rk];f!=this.ni;f=f[Rk])d[p](a[z](c,f[q],f.key,this));return d};F.some=function $do(a,c){for(var d=this.ni[Rk];d!=this.ni;d=d[Rk])if(a[z](c,d[q],d.key,this))return h;return k};F.every=function $eo(a,c){for(var d=this.ni[Rk];d!=this.ni;d=d[Rk])if(!a[z](c,d[q],d.key,this))return k;return h};wa(Uza[w],function $fo(){Ma(this.SC,this[Rk]);this[Rk].SC=this.SC;this.SC=Ma(this,i)});H(Zza,Kx);Zza[w].C8c=function $go(a){this.mb.Qf();try{var c=new Tza(a[dq]),d=new cg(c.O[1]),f=new cg(c.O[2]);this.Fa(ki,d);this.Fa(IB,f);var g=new Ez,j=c.O[3];for(a=0;a<j[u];a+=2)g.set(j[a+1],j[a]);this.Fa(Pd,g)}finally{this.mb.Mf()}};Ha(aAa[w],function $ho(){return this.O[t]()});aAa[w].kc=D(ae);H(dAa,Kx);dAa[w].P8c=function $jo(a){a=a[dq];this.mb.Qf();try{this.Fa(rd,a[1]);var c=a[2];for(a=0;a<c[u];a++){var d=c[a];this.Fa(d[0],d[1])}}finally{this.mb.Mf()}};var U7a="usus";dAa[w].arb=function $ko(a){(new aAa(a[dq])).O[3]!=this.Ca(rd)&&oIa(this.Hn,U7a,Hj)};H(Gz,xx);Gz[w].mib=B();Gz[w].mib.Ka=h;Gz[w].bH=B();Gz[w].bH.Rn=h;H(Iz,uh);yx(Gz,Iz);\r
18131 var V7a="us:n",W7a="us:m",X7a="us:u",Y7a="us:h",Z7a="us:at",SN="ui:d",a8a="ui:c",b8a="ui:cru",c8a="ui:ga",d8a="ui:sk",e8a="ui:ae",f8a="pi:n",g8a="pi:i",h8a="pi:l",i8a="pi:a",TN="pi:e",j8a="pi:p",k8a="pi:tou",l8a="pi:gm",m8a="pi:sa",n8a="qu:um",o8a="qu:up",p8a="qu:t",q8a="qu:ug",r8a="qu:tg",s8a="qu:c",t8a="qu:ps",u8a="qu:nq",v8a="qu:aq",w8a="pi:psu",x8a="pi:msu",y8a="pi:bppu",z8a="adc:hg",A8a="adc:al",B8a="adc:af",C8a="adc:pd",D8a="adc:id",E8a="adc:chh",F8a="adc:chu",G8a="adc:chih",H8a="adc:sbu",I8a=\r
18132 "adc:sl",J8a="adc:hb",K8a="adc:sm",L8a="adc:fe",M8a="adc:wd",N8a="adc:lu",O8a="adc:rh",P8a="adc:cad",Q8a="adc:aid",R8a="adc:ihru",S8a="em:dc",T8a="ama:ri",UN="ama:a",U8a="tl:d",V8a="tl:s",W8a="tl:t",X8a="ai:rp",Y8a="ai:np",VN="ai:i",Z8a="ai:t",WN="ui:udc",a9a="ai:d",b9a="ai:s",c9a="ai:og",d9a="ai:ll",XN="ui:oid",e9a=["us:ver","us:l",V7a,W7a,X7a,e0a,Y7a,Z7a,Lz,kAa,SN,a8a,Mz,Nz,b8a,tD,c8a,d8a,e8a,pAa,f8a,"pi:r",g8a,"pi:h",h8a,i8a,"pi:c",TN,"pi:d",j8a,k8a,l8a,m8a,n8a,o8a,p8a,q8a,r8a,s8a,t8a,u8a,v8a,\r
18133 w8a,x8a,y8a,z8a,mAa,"adc:ia",A8a,"adc:cs",B8a,C8a,D8a,"adc:it",E8a,"adc:cfh",F8a,G8a,"adc:cfu",H8a,"adc:cw","adc:ce","adc:ow",I8a,J8a,"adc:hv","adc:hh","adc:tl","adc:vl","adc:pl",K8a,L8a,lAa,"adc:bl",M8a,N8a,"adc:ip",O8a,P8a,"adc:asd",Q8a,R8a,jAa,"em:ds",S8a,Kz,Oz,T8a,"ama:ma",UN,U8a,V8a,W8a,X8a,Y8a,VN,Z8a,WN,Pz,a9a,b9a,c9a,d9a,nAa,XN],YN={};YN["$root/user"]=Oj;YN["$root/domainInfo"]=rxa;YN["$root/quota"]=Rza;YN["$root/emoji"]=zz;YN["$root/productInfo"]=Dz;YN["$root/updatableStrings"]=cAa;\r
18134 YN["$root/customFrom"]=Bza;var f9a="$root/mailFetch";YN[f9a]=Kza;YN["$root/translatableLanguages"]=DE;var ZN="ai";YN["$root/appInfo"]=ZN;var aO={};aO.ui=0;aO.adc=1;aO.qu=2;aO.em=3;aO.pi=4;aO.us=5;aO.cfs=6;aO.ama=7;aO.tl=8;aO.ai=9;var g9a={},bO={};bO.ui={};bO.adc={};bO.qu={};bO.em={};bO.pi={};bO.us={};bO.cfs={};bO.ama={};bO.tl={};bO.ai={};\r
18135 for(var h9a=0;h9a<e9a[u];h9a++){var i9a=e9a[h9a],j9a=i9a[Cc](xj);if(j9a[u]==2){var k9a=j9a[0],l9a=j9a[1],m9a=aO[k9a];if(Ke(m9a)){g9a[i9a]=[m9a,l9a];bO[k9a][l9a]=i9a}}}F=Iz[w];F.v5c=function $no(a){for(var c=0;c<a.dG[u];c++){var d=a.dG[c][Cc](xj);if(d[u]==2){var f=d[1],g=YN[d[0]];if(g){d=bO[g][f];f=this.FAa[aO[g]].Ca(f);this[r](new fAa(d,f))}}}};F.B=D(JF);ip(F,function $po(a){var c=g9a[a];return c?this.FAa[c[0]].Ca(c[1]):this.Na[a]});F.Cq=function $qo(a){return eAa+a};F.hasFeature=function $ro(a){return this.qyc.Eb(a)};\r
18136 F.TSa=function $so(){for(var a=0,c=K7a.Sb(),d=0;d<c[u];d++)Jz(this,Number(c[d]))&&a++;return a};H(fAa,N);Iz[w].Sj=function $to(){return Hi};Iz[w].DK=function $uo(a){return rx(a,Hi)==0||gAa(this,a)};Iz[w].Gf=function $vo(){var a=yy(this.V);a=Pf(a.Oo(qAa));return im(a)||a==cM.sx_dn?this[hq](pAa):a};Iz[w].bH=function $wo(){var a=this.aa.bH();if(a!=undefined)return a;return G7a};_B_prog(49)}catch(e){_B_err(e)}\r
18137 \r
18138 try{var cO="bn",dO="eu",eO="gu",fO="hi",gO="is",hO="kn",iO="mr",jO="te",kO="ur",zAa=[cO,dO,eO,fO,gO,hO,aJ,iO,lE,VG,eJ,jO,DE,kO];H(Zz,uh);F=Zz[w];F.MVb=h;F.Wd=D("KUc");F.vH=D("wpd");F.QE=D("drd");F.Ga=D(Gd);F.qk=B();var n9a=L;var BAa;H(aA,Bh);aA[w].e9a=function $Co(){aA.C.e9a[z](this)};H(fA,uh);fA[w].L=function $Do(){fA.C.L[z](this);nh(this.Lac,sj,this.a7,k,this);this.Lac=i;if(!Fh||vg(Im))Sg(this.ZQ);delete this.ZQ};fA[w].a7=function $Eo(){var a=this.ZQ[xk];if(this.LZb!=a){this.LZb=a;this[r](UAa)}};H(gA,Jf);F=gA[w];F.kma=Ge("RA");F.J=function $Go(a){var c=jA(this,a);if(!c&&!this.nBd)e(new GAa(a));return c};F.D3c=function $Ho(a,c){var d=jA(this,a);if(!d)e(new QAa(a,c,"Module loaded but service or factory not registered with app contexts."));return d};F.jGc=function $Io(a,c,d){return d instanceof wi?d:new MAa(a,c,d)};Yla(F,function $Jo(a,c,d){if(this.Ys[a])e(Error(".57`"+a));this.Ys[a]=[c,!d];delete this.Pia[a]});\r
18139 F.L=function $Ko(){for(var a in this.Ys){var c=this.Ys[a];c[1]&&typeof c[0].D!="undefined"&&c[0].D()}this.Ys=i;this.mjd&&this.Fh.D();this.Fh=i;Kf(this.aI);this.aI=i};var lO="Fh";F.Ya=D(lO);H(GAa,Rh);H(MAa,Rh);H(QAa,Rh);H(nA,Lf);F=nA[w];F.jhb=nka;laa(F,function $Mo(){return this.jhb.jH()});F.Iw=function $No(){var a=nA.C.Iw[z](this);this.YOa[a]=h;return a};F.ez=function $Oo(a){if(!this.YOa[a])e(Error(".61"));nA.C.ez[z](this,a);delete this.YOa[a]};F.ZS=B();F.D=function $Qo(){nA.C.D[z](this);this.YOa=i};var o9a=new nA(1E3,2800);H(pA,uh);F=pA[w];cma(F,D("Kf"));F.ea=function $So(){if(!this.Xa)this.Xa=o9a.Iw();return this.Xa};F.W=D(fo);F.X=function $Uo(a){if(this.Pc)e(Error(".62"));if(!this.MK){this.MK=p9a.Iw();this.Qsa=p9a.Iw()}a=String(a);var c=this.Qsa.J(a);if(!c){c=o9a.Iw();this.Qsa.set(a,c);this.MK.set(c,a)}return c};F.td=function $Vo(a){return this.MK?this.MK.J(a):i};F.ve=function $Wo(a){return this.MK?this.ya.b(this.X(a)):i};F.Ga=function $Xo(){return fg(this[Sk])};Ha(F,function $Yo(){return this.Ga()});F.zcb=E(I);\r
18140 F.ac=D(oka);F.rv=function $0o(){return this.ac()};F.dk=function $1o(){e(Error(".63"))};F.qj=function $2o(){return this.bf?this.bf[u]:0};F.rb=function $3o(a){return this.bf?this.bf[a]:i};F.Uc=function $4o(){return this.bf?this.bf:[]};F.JQb=function $5o(a){if(!a||this.Xa==a)return this;for(var c=this.qj(),d=0;d<c;d++){var f=this.rb(d).JQb(a);if(f)return f}return i};F.b=function $6o(a){rA(this);return a?this.ve(String(a)):this.wa};F.Cc=D("pia");F.Vh=function $8o(){this.wa=this.ya[Qb](T)};\r
18141 F.Ig=function $9o(a){if(this.mh)e(Error(".64"));this.mh=a};F.Xk=function $$o(a){RAa(this,a,this.qj())};F.DJb=function $ap(){for(;tA(this,0););};F.ma=function $bp(){this.pia=h;if(this.JP)for(var a=this.JP,c=a[u],d=0;d<c;d++)a[d].ma()};F.Ba=function $cp(){this.pia=k;if(this.JP)for(var a=this.JP,c=a[u],d=0;d<c;d++)a[d].Ba()};\r
18142 F.L=function $dp(){if(this.pia){this.Ba();Sg(this.wa)}this.wa=i;for(var a=nf(this.Uc()),c=0;c<a[u];c++)a[c].D();this.Xa&&o9a.ez(this.Xa);if(this.MK){a=this.MK.Sb();for(c=0;c<a[u];c++){var d=a[c],f=this.MK.J(d);this.MK[Pb](d);this.Qsa[Pb](f);o9a.ez(d)}p9a.ez(this.MK);p9a.ez(this.Qsa);this.Qsa=this.MK=i}this.Sab.D();this.Sab=i;pA.C.L[z](this)};F.H=D("Sab");H(SAa,Lf);laa(SAa[w],function $fp(){return new Hf});var p9a=new SAa;H(uA,pA);uA[w].LR=h;uA[w].MR=h;uA[w].xv=function $gp(a){if(!a)return this.LR||this.MR;switch(a){case vA:return this.LR;case Wx:return this.MR;default:e(Error(".65"))}};uA[w].Ui=function $hp(a){if(!a&&this.LR&&this.MR||a==vA&&this.LR||a==Wx&&this.MR)return k;if(a)switch(a){case vA:this.LR=h;break;case Wx:this.MR=h;break;default:e(Error(".66"))}else this.LR=this.MR=h;return h};H(xA,uA);F=xA[w];F.Sia=0;F.B_a=I;F.Cbb=i;F.za=function $ip(){return this.rb(0)};F.so=function $jp(a){if(!this.za()){yA++;try{this.W()[o](this.b(),a.b());a.RQ(this);this.Xk(a);this.Ui()}finally{zA()}}};lk(F,function $kp(){var a=this.za(),c=tA(this,0);if(c){a.RQ(i);this.W()[ad](a.b());this.Ui()}return c});F.L=function $lp(){VAa[Pb](this.ea());nh(this.FZ,UAa,this.XNa,k,this);if(VAa.nd()&&DA){DA.D();DA=i}nh(this.aR,wA,this.M5a,k,this);this.aR.D();this.aR=i;xA.C.L[z](this)};\r
18143 F.M5a=function $mp(){this.bIa=i;this.Ui()};F.Ui=function $np(a){if(this.Sia==3&&(a==2||!a))e(Error(".68"));a=xA.C.Ui[z](this,a);WAa(this);return a};var q9a="lp_start",mO="lp_end";F.Yj=function $op(){if(!jfa.J()){this.Sia=1;this[r](q9a);if(!this.bIa)this.bIa=this.aR.Ke(this);this.za();lfa.J()&&nBa(this.za());this.Sia=2;this.xv(vA)&&XAa(this,vA,this.bIa[ib]);TAa(this,vA);this.Sia=3;this.xv(Wx)&&XAa(this,Wx,this.bIa[id]);TAa(this,Wx);this.Sia=0;this[r](mO)}};var r9a=":0";\r
18144 F.XNa=function $pp(){if(!this.Cbb)this.Cbb=bA(r9a,this.MIc,50,this)};F.MIc=function $qp(){yA++;for(var a=this.Bbb,c=0;c<a[u];c++)a[c]();this.M5a();zA();this.Cbb=i};var DA=i,yA=0,VAa=new Hf;H(aBa,uh);aBa[w].Ke=function $rp(){return new yg(0,0)};H(EA,aBa);F=EA[w];var s9a=":1";F.x8b=function $sp(){var a=new yg(this.Sra[vc],this.Sra[Wc]);if(!this.xCb||a[ib]!=this.xCb[ib]||a[id]!=this.xCb[id]){this.hgb();this.xCb=a}this.v8b=bA(s9a,this.x8b,500,this)};F.We=i;F.hOa=i;\r
18145 F.vjb=function $tp(){return Jg&&Ri||Ng&&this.dg[yma]!=this.dg.top};F.Ke=function $up(){if(!this.We)this.We=new yg(this.Sra[vc],this.Sra[Wc]);return this.We};F.a7=function $vp(){if(L){this.hOa&&cA(this.hOa);this.hOa=bA(r9a,this.hgb,500,this)}else this.hgb()};F.hgb=function $wp(){this.We=this.hOa=i;this[r](wA)};F.L=function $xp(){this.Mub.D();this.Sra=this.dg=i;this.v8b&&cA(this.v8b);EA.C.L[z](this)};_B_prog(50)}catch(e){_B_err(e)}\r
18146 \r
18147 try{bBa[w].mM=Ge(eo);\r
18148 var t9a="paddingTop",u9a="paddingBottom",v9a="marginLeft",w9a="marginRight",x9a="marginTop",y9a="marginBottom",pBa=[ria,sia,tia,Cva,"borderLeftStyle","borderRightStyle","borderTopStyle","borderBottomStyle",RGa,SGa,t9a,u9a,v9a,w9a,x9a,y9a],oBa={borderLeftWidth:HA,borderRightWidth:HA,borderTopWidth:HA,borderBottomWidth:HA,borderLeftStyle:xd,borderRightStyle:xd,borderTopStyle:xd,borderBottomStyle:xd,paddingLeft:HA,paddingRight:HA,paddingTop:HA,paddingBottom:HA,marginLeft:HA,marginRight:HA,marginTop:HA,\r
18149 marginBottom:HA};H(IA,uA);var qBa=!(L&&!vg(aj)),OA=new bBa;F=IA[w];F.v8=0;F.GC=0;F.o8=Infinity;F.TU=Infinity;F.tCb=1;F.Hgb=-1;F.L4=h;F.Kg=0;F.Hf=0;F.ZHa=h;F.W4a=-1;F.O3=-1;F.Epa=0;F.Fpa=0;F.U4a=0;F.V4a=0;F.KT=function $zp(a){switch(a){case vA:return this.v8;case Wx:return this.GC;default:e(Error(".69"))}};F.hGc=function $Ap(){return this.KT(vA)};F.gGc=function $Bp(){return this.KT(Wx)};F.WZ=function $Cp(a){switch(a){case vA:return this.o8;case Wx:return this.TU;default:e(Error(".70"))}};F.edb=function $Dp(){return this.WZ(Wx)};\r
18150 F.Sda=function $Ep(a,c){switch(a){case vA:return l.min(l.max(c,this.v8),this.o8);case Wx:return l.min(l.max(c,this.GC),this.TU);default:e(Error(".71"))}};F.rK=function $Fp(a){switch(a){case vA:return this.tCb;case Wx:return this.Hgb;default:e(Error(".72"))}};F.Twa=function $Gp(a){return this.rK(a)==-1};var z9a="L4";F.Fj=D(z9a);F.ps=D("ZHa");F.Ke=function $Jp(a){switch(a){case vA:return this.ps()?this.Kg:0;case Wx:return this.ps()?this.Hf:0;default:e(Error(".73"))}};F.Yh=function $Kp(){return this.Ke(vA)};\r
18151 F.Fl=function $Lp(){return this.Ke(Wx)};F.L=function $Mp(){IA.C.L[z](this);var a=this.ea(),c=BA;delete c.x[a];delete c.y[a]};var A9a="nH";F.Vh=function $Np(){IA.C.Vh[z](this);K(this.wa,A9a)};F.RQ=Ge("Yj");F.ARb=D("Yj");F.jCa=function $Qp(a){this.AI(a,undefined,undefined,undefined)};F.Hx=function $Rp(a){this.AI(undefined,a,undefined,undefined)};F.idc=function $Sp(a,c){switch(a){case vA:this.AI(c,undefined,undefined,undefined);break;case Wx:this.AI(undefined,c,undefined,undefined);break;default:e(Error(".77"))}};\r
18152 F.fdc=function $Tp(a){this.AI(undefined,undefined,a,undefined)};F.SQ=function $Up(a){this.AI(undefined,undefined,undefined,a)};F.Gid=function $Vp(a,c){switch(a){case vA:this.AI(undefined,undefined,c,undefined);break;case Wx:this.AI(undefined,undefined,undefined,c);break;default:e(Error(".78"))}};\r
18153 F.AI=function $Wp(a,c,d,f){var g=this.v8,j=this.GC,n=this.o8,s=this.TU;a=Ke(a)?a:g;c=Ke(c)?c:j;d=Ke(d)?d:n;f=Ke(f)?f:s;if(!(a==g&&c==j&&d==n&&f==s)){var v=h;if(a<0)v=k;if(c<0)v=k;if(a>d)v=k;if(c>f)v=k;if(!v)e(Error(".79"));this.v8=a;this.GC=c;this.o8=d;this.TU=f;if(a==g&&d==n)this.Ui(Wx);else c==j&&f==s?this.Ui(vA):this.Ui()}};F.Qr=function $Xp(a){this.S1(a,undefined)};F.sf=function $Yp(a){this.S1(undefined,a)};\r
18154 F.zid=function $Zp(a,c){switch(a){case vA:this.S1(c,undefined);break;case Wx:this.S1(undefined,c);break;default:e(Error(".80"))}};F.S1=function $_p(a,c){var d=this.tCb,f=this.Hgb;a=Ke(a)?a:d;c=Ke(c)?c:f;if(!(a==d&&c==f)){var g=h;if(a<0&&a!=-1)g=k;if(c<0&&c!=-1)g=k;if(!g)e(Error(".81"));this.tCb=a;this.Hgb=c;if(a==d)this.Ui(Wx);else c==f?this.Ui(vA):this.Ui()}};\r
18155 F.sizeToContent=function $0p(a){switch(a){case vA:this.S1(-1,undefined);this.AI(0,undefined,Infinity,undefined);break;case Wx:this.S1(undefined,-1);this.AI(undefined,0,undefined,Infinity);break;default:e(Error(".82"))}};F.Ql=function $1p(a){this.zdc(vA,a)};F.Kx=function $2p(a){this.zdc(Wx,a)};F.zdc=function $3p(a,c){yA++;this.idc(a,0);this.Gid(a,c);this.idc(a,c);this.zid(a,0);zA()};F.qc=function $4p(a){if(a!=this.L4){this.L4=a;hBa(this)}};\r
18156 F.Ui=function $5p(a){if(!IA.C.Ui[z](this,a))return k;if(!a||a==vA){this.X4a=this.Y4a=i;this.Yjb=k}if(!a||a==Wx){this.Z4a=this.a5a=i;this.Zjb=k}var c=this.ac();c&&this.Fj()&&c.Ui(a);return h};F.oF=E(0);F.Q3=E(k);F.VV=function $8p(a){MA(this,a,-1)};F.Yb=function $9p(){this.NXa(k)};F.NXa=function $$p(a){if(this.ZHa!=a){this.ZHa=a;Ua(KA(this),a?I:xd);return h}return k};\r
18157 F.ip=function $aq(a,c,d){this.i4a(a);this.b();var f=this.Fj();d=!!d;lBa(this,a);if(f)if(!(!this.xv()&&c==this.Ke(a)&&d==mBa(this,a))){if(this.rK(a)!=-1&&c==-1)e(Error(".88"));f=0;if(c!=-1)switch(a){case vA:f=this.Epa+this.U4a;break;case Wx:f=this.Fpa+this.V4a;break}this.di(a,c-f,d)}TAa(this,a);this.yGa(a)};F.i4a=B();F.yGa=B();F.di=function $dq(a,c,d){this.b();gBa(this,a,c);c=c==-1||d?-1:c;MA(this,a,c)};var BA={};BA.x={};BA.y={};var AA=[],PA=[],tBa=[],QA=[],uBa=[],RA=[];H(SA,IA);SA[w].qe=function $eq(a){if(a)this.Twa(a)&&this.Ui(a);else{a=this.Twa(vA);var c=this.Twa(Wx);if(a&&c)this.Ui();else if(a)this.Ui(vA);else c&&this.Ui(Wx)}};SA[w].ma=function $fq(){SA.C.ma[z](this);if(this.Yj){this.sIa=G(this.XNa,this);this.Yj.Bbb[p](this.sIa)}};SA[w].Ba=function $gq(){SA.C.Ba[z](this);if(this.Yj){jf(this.Yj.Bbb,this.sIa);this.sIa=i}};SA[w].XNa=function $hq(){this.qe()};H(TA,SA);F=TA[w];F.n4=function $iq(a){a=a.Wu;if(!a)return 0;var c=a.b();a=c[x];var d=a[yaa],f=a[ib];Ja(a,sd);ka(a,I);c=c[xk];Ja(a,d);a.mDd=f;return c};F.Vh=function $jq(){TA.C.Vh[z](this);var a=this.Wu;rA(a);var c=a.b();this.VFa=c;this.Kca=c[x];this.W()[o](this.wa,c);this.Xk(a)};F.L=function $kq(){!this.wa&&this.Wu&&this.Wu.D();this.Kca=this.VFa=this.Wu=this.n4=i;TA.C.L[z](this)};ek(F,function $lq(){if(this.Wu){tA(this,0);this.WHa=this.XHa=this.Kca=this.VFa=this.Wu=i;this.qe();return h}return k});\r
18158 F.Q3=function $mq(a){return a==Wx};F.VV=function $nq(a){MA(this,a,-1);xBa(this,a)};F.oF=function $oq(a){var c=this.b();if(!c)return 0;if(a==vA)return this.n4(this);else{xBa(this,a);return c[Wc]}};F.di=function $pq(a,c,d){if(a==vA){c==-1&&!d?TA.C.di[z](this,a,LA(this,a),k):TA.C.di[z](this,a,c,d);this.qe(Wx)}else TA.C.di[z](this,a,-1,d);if(this.VFa)if(a==vA){if(this.XHa!=-1){this.XHa=-1;ka(this.Kca,NA(-1))}}else{a=c==-1?-1:c;if(this.WHa!=a){this.WHa=a;Wa(this.Kca,NA(a))}}};H(WA,pA);WA[w].Jc=function $qq(a){var c=this.b();DBa(this,a);Q(c,BBa())};var aB=new EBa,B9a=[P,Zi];EBa[w].w=function $rq(a,c,d,f,g){function j(n){if(n[Zb]==P&&nm(n,0)||n[Zb]==Zi&&(n[Sb]==13||n[Sb]==3))c[z](f,n)}j.Mk=c;j.Ela=f;g?g.w(a,B9a,j):ih(a,B9a,j)};EBa[w].hb=function $sq(a,c,d,f,g){for(var j=0;d=B9a[j];j++)for(var n=Ica(a,d,k)||[],s,v=0;s=n[v];v++)if(s.GA.Mk==c&&s.GA.Ela==f){g?g.hb(a,d,s.GA):nh(a,d,s.GA);break}};H(ZA,WA);F=ZA[w];F.Ym=function $tq(a){if(this.Djd==0)Ua(this.b()[x],a?I:xd);else Fa(this.b()[x],a?I:yd);var c=YA(this,h);c&&c.qe();this.yg=a};var C9a="param";F.lh=function $uq(a){a=a[y];for(var c=this.b();a&&a!=c;){var d=a.id;if(Mf(d,bB)){c=d[nc](5);this.gr&&this.gr.qk&&this.gr.qk(c,a[Uc](C9a));this.gr&&this.gr.MVb&&this.IK();break}a=a[A]}};var nO="cb",D9a="b9";\r
18159 F.Ad=function $vq(a,c){c=c||a.Wd();var d=XA(this);Q(d,c);switch(a.Ga()){case 0:DBa(this,FBa);break;case 1:DBa(this,he);break;case 2:DBa(this,Yd);break}GBa(this,d,Bo,nO);GBa(this,d,PJ,UF);GBa(this,d,Kd,D9a);this.gr=a;this.Ym(h)};F.IK=function $wq(){this.Ym(k);Q(XA(this),I);this.gr=undefined};F.ZK=D("yg");_B_prog(51)}catch(e){_B_err(e)}\r
18160 \r
18161 try{H(jB,uh);F=jB[w];var E9a="f1";F.ts=D(E9a);F.d9a=function $zq(){this[r](ki)};F.zn=function $Aq(){return this.f1==4};F.Ig=function $Bq(a){this.mh=a;this.dk(a)};F.Nf=D("Sm");F.Se=Ge("Sm");F.kua=D("Iaa");F.D=function $Fq(){jB.C.D[z](this);this.mh=i};H(OBa,Jf);var oO="oT";nB[w].hm=D(oO);Ha(nB[w],function $Hq(){return String(this.oT)});H(oB,jB);var YIa={Rxd:IB,Qxd:Cz,Pxd:Bz};F=oB[w];F.s9b=0;F.qa=RBa;F.B=D(JF);var F9a="Lc";F.P5=D(F9a);F.xc=D(Yj);var G9a="QUEUED";ua(F,function $Lq(){if(this.qa!=RBa)e(Error(".93"));this.s9b=Zf();this.qa=G9a;this.nKa[Mb](this)});La(F,function $Mq(){this.nKa[wc](this)});F.Vj=function $Nq(){return!!this.MDc};F.zga=D("jDc");F.Ie=Ge("Wm");F.Ja=function $Qq(a){a.oM(this);a.EOc(this.s9b)};F.Eg=E(h);F.lB=Ge("Sma");F.d9a=function $Tq(){oB.C.d9a[z](this);this.Sma&&this.Sma[r](ki)};\r
18162 F.Z6=function $Uq(a){if(!this.zn())if(a==this.Lc){a.oha()&&UBa(this,a.zga());aCa(this)}};F.rza=B();F.vL=B();var qB={},pO="rd";qB[1]=pO;qB[2]=kO;qB[3]=wz;qB[4]="xst";qB[5]=wz;qB[6]="xst";var qO="sp";qB[9]=qO;qB[120]="unsub";qB[10]=Zn;var H9a="dm";qB[11]=H9a;var rO="dr";qB[15]=rO;var sO="dd";qB[16]=sO;var tO="dl";qB[17]=tO;qB[45]=tO;qB[46]=tO;qB[18]=cAa;var I9a="uq";qB[98]=I9a;qB[30]=ex;qB[31]=MN;qB[12]="ac_";qB[13]="rc_";var uO="ib";qB[8]=uO;var vO="ig";qB[21]=vO;qB[22]=EE;var wO="sd";qB[23]=wO;qB[27]=ul;var xO="ii";qB[35]=xO;qB[36]=qya;qB[37]="ivd";qB[29]="astc";qB[38]="urt";qB[39]="rap";qB[40]="mcf_";\r
18163 qB[41]="dcf_";qB[42]="cce";qB[43]="cma_";qB[44]="dma_";var yO="dt";qB[47]=yO;qB[48]="rtr";qB[49]="aser";qB[50]="her";var J9a="ere";qB[51]=J9a;qB[52]="cc_";qB[53]="dc_";qB[54]="nc_";var zO="df";qB[56]=zO;qB[57]=SE;qB[58]="crte";var K9a="ae_";qB[62]=K9a;var L9a="de_";qB[63]=L9a;qB[61]="co_";qB[64]="cffm";qB[65]="ch_";qB[66]=PL;var AO="fl";qB[67]=AO;qB[69]="tua";qB[95]="tae";qB[117]="tha";var M9a="sh";qB[70]=M9a;var N9a="uu";qB[85]=N9a;qB[121]=XL;var BO="rr";qB[135]=BO;var CO="mu";qB[167]=CO;\r
18164 var O9a="umu";qB[168]=O9a;qB[163]="spa";var DO="su";qB[133]=DO;var P9a="du";qB[71]=P9a;var EO="pc";qB[72]=EO;var FO="uc";qB[107]=FO;qB[96]=NN;var GO="hu";qB[115]=GO;var HO="ru";qB[106]=HO;qB[124]="upq";qB[76]=uE;qB[77]="arl";qB[82]="gaa";qB[83]="gar";qB[84]="gas";var IO="crs";qB[86]=IO;var Q9a="crd";qB[87]=Q9a;qB[89]="ihl_";var R9a="miv";qB[90]=R9a;var S9a="mis";qB[91]=S9a;qB[92]=ie;var T9a="mib";qB[93]=T9a;qB[97]=kO;var JO="mtd";qB[101]=JO;qB[102]=OL;qB[103]="mddel_";qB[104]="mdsig_";var U9a="lpd";\r
18165 qB[105]=U9a;qB[108]="lnd";var V9a="sfl";qB[109]=V9a;qB[110]=lE;qB[111]=KD;qB[112]="sstl";qB[113]="mai";qB[114]="mani";var KO="fa";qB[116]=KO;qB[118]="bpoo";qB[119]="bpoi";qB[123]="par";qB[125]="mfas";qB[126]="muc";qB[128]="afw";qB[129]="vfw";qB[130]="rfw";qB[131]="sfw";qB[132]="cts";qB[162]=TE;var LO="tot";qB[165]=LO;qB[173]="fsu";H(pB,oB);pB[w].YQ=h;var cCa=/style=color:#\w+\ /;F=pB[w];F.pQb=D(WE);F.ws=D("aX");F.f5a=function $Zq(){return!!this.g5a};var W9a="o5";F.Ne=Ge(W9a);var MO="GMAIL_AT";F.Ja=function $0q(a){pB.C.Ja[z](this,a);a.Ua(ZB,mi(MO,I));a.Ua(pd,QN);a.Ua(fG,this.UR);a.Se(this.Zg());a.wl(!!this.uj);this.o5&&a.Ne(this.o5)};F.Zg=E("Server action");F.Eg=E(k);F.Wd=E(i);F.QE=E(-1);F.vH=E(I);F.rk=function $6q(a,c,d){if(c==Kd){this.NVa=h;this.eg=d[1];this.Kv=d[2];this.gq=d[3];this.gFb&&this.gFb(this)}};\r
18166 F.tf=function $7q(){this.HPa=h};H(tB,pB);F=tB[w];var NO="Ea";F.Bb=D(NO);F.Ii=Ge(NO);F.peb=function $$q(){return this.hia?Infinity:this.BV[u]};F.Mg=function $ar(){for(var a=[],c=0;c<this.BV[u];c++)a[p]([this.BV[c],this.RDa[c]]);return a};F.Lp=function $br(){return!!this.hia};F.Cr=function $cr(){return this.BV[u]==1};F.Eg=E(k);F.Wd=function $er(){return this.Eg()?this.Kv:this.yp()};F.yp=E(I);var X9a="msq";F.Ja=function $gr(a){tB.C.Ja[z](this,a);if(this.hia){a.Be(KF,1);a.Be(X9a,this.FVc)}else a.Be(IB,this.RDa);a.Ii(this.Ea)};H(vB,tB);var Y9a="All conversations have been starred.",Z9a="The conversation has been starred.",aab=" conversations have been starred.";vB[w].yp=function $hr(){var a,c=this.peb();(a=this.aa.gcb(c))||(a=c==Infinity?Y9a:c==1?Z9a:c+aab);return sB(this,a,5904)};vB[w].Ja=function $ir(a){vB.C.Ja[z](this,a);this.aa.Ja(a)};yx(eCa,vB);eCa[w].Ja=B();eCa[w].gcb=B();eCa[w].gcb.ic=h;jCa[w].B=D(JF);var bab="Grrr! A popup blocker may be preventing ",cab=" from opening the page. If you have a popup blocker, try disabling it to open the window.";jCa[w].Q0=function $mr(a,c,d){if(this.aa.Tka(a))return i;var f=bab+(Ii+cab),g=dC(this.V);g=eC(g);var j=g.top[oc];a=iCa(a,c,g.js&&g.js._GM_main||!j||j[Rq]?g.top:j);if((!a||a[Rq]||!a[Ek])&&d)g[Wp](f);return a};jCa[w].Yo=function $nr(a,c,d){c=c||{};c.noreferrer=h;if(a=kCa(this,a,c,d))a.opener=i;return a};yx(mCa,jCa);mCa[w].Tka=B();\r
18167 mCa[w].Tka.ic=h;H(nCa,tB);nCa[w].Eg=E(h);nCa[w].vL=function $qr(){if(this.eg){var a=this.gq;if(this.p2b)try{this.p2b[yc][Ic][mb](a[0]);return}catch(c){}var d=xB(this.B());yB(d,a[0],{width:800,height:600})}};var pCa,OO;pCa={};OO=i;oCa[w].Nga=D(LL);oCa[w].lC=function $sr(a){var c;c=this.Jb;OO||(OO={});var d=OO[c];if(Ke(d))c=d;else c=OO[c]=c;if(!c)return a;return c+xj+a};var dab=new oCa("lib");var EB=new oCa(Xz);BB[w].Xs=function $tr(){return this[t]()};BB[w].lC=function $ur(){if(!this.vkc)this.vkc=this.S1b.lC(this.Xd);return this.vkc};Ha(BB[w],function $vr(){if(!this.Ghc)this.Ghc=this.S1b.Nga()+xj+this.Xd;return this.Ghc});H(CB,BB);var wE=DB(DE),YK=DB(OD),PO="co",QO=DB(PO),RO="ct",SO=DB(RO),eab=DB(ki),TO="pu",dJ=DB(TO),UO=DB(je),fab=DB(IB),VO="chs",gab=DB(VO);H(rCa,N);H(sCa,jB);var WO="Ic";sCa[w].Tga=D(WO);H(HB,uh);fp(HB[w],function $xr(a){this[r](new rCa(a));if(this.na)return this.na[bq](a);else{a=new sCa;GB(a,3);return a}});HB[w].SH=function $yr(a){return this.na?this.na.SH(a):k};HB[w].gH=function $zr(a){if(this.na)return this.na.gH(a);else e(Error(".98"))};HB[w].zc=function $Ar(){if(this.na)return this.na.zc();else e(Error(".99"))};H(tCa,tB);tCa[w].Ja=function $Br(a){tCa.C.Ja[z](this,a);a.Be(IB,this.BV);a.Ii(this.Ea)};tCa[w].vL=function $Cr(){if(this.eg){var a=this.gq,c=a[0],d=a[2],f=a[3],g={};g.cf1_from=a[1];g.cf1_to=c;g.cf1_subj=f;g.cf1_has=d;g.cfl_origin=this.jb.gH();QF(this.zf,XO);this.jb[bq]({view:wE,search:new Qy(g)})}};H(uCa,tB);var hab="All conversations have been muted.",iab="The conversation has been muted.",jab=" conversations have been muted.";uCa[w].yp=function $Dr(){var a;a=this.Lp()?hab:this.Cr()?iab:this.Mg()[u]+jab;return sB(this,a,i,h)};H(KB,tB);KB[w].Ujc=k;var kab="vrd";KB[w].Ja=function $Er(a){KB.C.Ja[z](this,a);this.Ujc&&a.Ua(kab,Hj)};var lab="All conversations have been marked as read.",mab="The conversation has been marked as read.",nab=" conversations have been marked as read.";KB[w].yp=function $Fr(){var a;a=this.Lp()?lab:this.Cr()?mab:this.Mg()[u]+nab;return sB(this,a,i,h)};H(vCa,tB);var oab="All conversations have been marked as unread.",pab="The conversation has been marked as unread.",qab=" conversations have been marked as unread.";vCa[w].yp=function $Gr(){var a;a=this.Lp()?oab:this.Cr()?pab:this.Mg()[u]+qab;return sB(this,a,i,h)};_B_prog(52)}catch(e){_B_err(e)}\r
18168 \r
18169 try{H(wCa,tB);var rab="All conversations have been moved to the Inbox.",sab="The conversation has been moved to the Inbox.",tab=" conversations have been moved to the Inbox.";wCa[w].yp=function $Hr(){var a;a=this.Lp()?rab:this.Cr()?sab:this.Mg()[u]+tab;return sB(this,a,18522,h)};H(xCa,tB);var uab="All conversations have been unmarked as spam and moved to the Inbox.",vab="The conversation has been unmarked as spam and moved to the Inbox.",wab=" conversations have been unmarked as spam and moved to the Inbox.";xCa[w].yp=function $Ir(){var a;a=this.Lp()?uab:this.Cr()?vab:this.Mg()[u]+wab;return sB(this,a,6602,h)};H(LB,tB);LB[w].Ja=function $Jr(a){LB.C.Ja[z](this,a);a.Ua(fG,this.UR+this.iR)};H(MB,LB);var xab="All conversations have been archived.",yab="The conversation has been archived.",zab=" conversations have been archived.",YO='The label "',Aab='" has been removed from all conversations.',Bab='" has been removed from the conversation.',Cab='" has been removed from ',Dab=" conversations.";\r
18170 MB[w].yp=function $Kr(){var a,c;if(this.Dd()==TI){c=6576;a=this.Lp()?xab:this.Cr()?yab:this.Mg()[u]+zab}else if(this.Lp())a=YO+(Wf(this.Dd())+Aab);else if(this.Cr()){c=6560;a=YO+(Wf(this.Dd())+Bab)}else a=YO+(Wf(this.Dd())+(Cab+(this.Mg()[u]+Dab)));return sB(this,a,c,h)};var Eab="iR";MB[w].Dd=D(Eab);H(yCa,tB);var Fab="All conversations have been unstarred.",Gab="The conversation has been unstarred.",Hab=" conversations have been unstarred.";yCa[w].yp=function $Mr(){var a;a=this.Lp()?Fab:this.Cr()?Gab:this.Mg()[u]+Hab;return sB(this,a,5904)};H(zCa,tB);var Iab="The conversation has been marked as spam. We'll attempt to unsubscribe you from these emails.",Jab=" conversations have been marked as spam. We'll attempt to unsubscribe you from these emails.",Kab="The conversation has been marked as spam.",Lab=" conversations have been marked as spam.";zCa[w].yp=function $Nr(){var a,c;if(this.iNb){c=80405;a=this.Cr()?Iab:this.Mg()[u]+Jab}else{c=6602;a=this.Cr()?Kab:this.Mg()[u]+Lab}return sB(this,a,c,h)};var Mab="dun";\r
18171 zCa[w].Ja=function $Or(a){zCa.C.Ja[z](this,a);this.iNb&&a.Ua(Mab,Hj)};H(ACa,tB);var Nab="All conversations have been moved to the Trash..",Oab="The conversation has been moved to the Trash.",Pab=" conversations have been moved to the Trash.";ACa[w].yp=function $Pr(){var a;a=this.Lp()?Nab:this.Cr()?Oab:this.Mg()[u]+Pab;return sB(this,a,7401,h)};H(NB,xx);F=NB[w];F.eca=B();F.eca.Ka=h;F.dca=B();F.dca.Ka=h;F.D=B();F.D.Ka=h;H(BCa,BB);var Qab=OB(ii),Rab=OB(IB),ZO=OB(dx),Sab=OB("cpt"),Tab=OB(RE),Uab=OB("rpt"),Vab=OB(Kd),Wab=OB("apt"),Xab=OB(kD),Yab=OB("fpt"),Zab=OB(vz),abb=OB("ftpt"),bbb=OB(Zn),cbb=OB(eJ),dbb=OB(Nj),ebb=OB(FE),fbb=OB("astc"),gbb=OB(oA),hbb=OB(cD),ibb=OB(Cz),jbb=OB(vA),kbb=OB("mar"),lbb=OB("mau"),mbb=OB(ZB),nbb=OB("tml"),obb=OB("tsl"),pbb=OB(vl),qbb=OB(VE),rbb=OB(Xx),sbb=OB(YB),tbb=OB("mti"),ubb=OB(NL),vbb=OB(Wx),wbb=OB(aJ),xbb=OB("arl"),ybb=OB(FHa),aP="ns",zbb=OB(aP),Abb=OB(ex),Bbb=OB(UE),Cbb=OB(Lj),bP="tm",Dbb=\r
18172 OB(bP),Ebb=OB(zO),Fbb=OB("anl"),Gbb=OB(qD),Hbb=OB(EO),cP="re",Ibb=OB(cP),Jbb=OB("dad"),Kbb=OB(MN),dP="pp",Lbb=OB(dP),RTa=OB(MF),W0a=OB(dg),eP="se",XO=OB(eP),Mbb=OB(wO),Nbb=OB(NE),fP="un",Obb=OB(fP),gP="et",Pbb=OB(gP),Qbb=OB("das"),Rbb=OB("dtm"),Sbb=OB(ke),hP="rl",Tbb=OB(hP),Ubb=OB("rcl"),Vbb=OB(tO),Wbb=OB(AO),Xbb=OB(KO),Ybb=OB("ihl"),Zbb=OB(ul),iP="ef",acb=OB(iP),bcb=OB("dfi"),ccb=OB(PO),dcb=OB(PL),ecb=OB(SE),fcb=OB(RO),jP=OB(ki),gcb=OB(oF),hcb=OB("mxg");OB("mng");\r
18173 var icb=OB(YHa),jcb="uh",kcb=OB(jcb),lcb=OB(M9a),mcb=OB("trm");OB(IO);OB(Q9a);var kP="ws",ncb=OB(kP),ocb=OB(R9a),pcb=OB(S9a),qcb=OB(ie),rcb=OB(T9a),scb=OB(JO),tcb=OB(TO),ucb=OB("puc"),vcb=OB(dO),wcb=OB(XL),xcb=OB(P9a),ycb=OB("duc"),zcb=OB("muc");OB(GO);var Acb=OB("hus"),lP="ec",Bcb=OB(lP),mP="ou",Ccb=OB(mP),Dcb=OB("lmu"),Ecb=OB(DO),Fcb=OB("ump"),Gcb=OB(vy),nP="ea",Hcb=OB(nP),oP="ex",Icb=OB(oP),Jcb=OB("sadi"),Kcb=OB("sstl"),Lcb=OB("mai"),Mcb=OB("mani"),Ncb=OB("unsub"),Ocb=OB(I9a),Pcb=OB("mufh");OB(HO);\r
18174 var Qcb=OB(BO),Rcb=OB(CO),Scb=OB(TE),Tcb=OB(SL),Ucb=OB("spa"),Vcb=OB("iosg"),Wcb=OB(LO);H(PB,Jf);yx(NB,PB);var RB=[],CCa={},DCa={};PB[w].eca=function $Tr(a,c,d){var f=d.i_a,g={};if(d.Lp){g[1]=h;g[2]=h;g[3]=h;g[4]=h;g[7]=h;g[8]=h;g[10]=h}else for(var j=0;j<f[u];j++){var n=f[j];g[n.Jl?1:2]=h;g[n.Uf()?4:3]=h;g[n.Zh(TI)?7:8]=h;g[n.Oy()?18:9]=h;g[64]=h;g[10]||(g[10]=!n.Zh(BL));g[21]||n.Zh(GN)||(g[21]=h)}this.aa.eca(g,d);ICa(this,a,c,g)};\r
18175 PB[w].dca=function $Ur(a,c,d){var f=d.Ti,g=d.zPc,j={};j[1]=k;j[2]=h;j[10]=h;j[42]=this.Z[hq](Nz);var n=f[bd](TI);j[7]=n;j[8]=!n;n=f[bd](AL);j[18]=n;j[9]=!n;n=f[bd](oI);j[4]=n&&!g;j[3]=!n&&!g;j[64]=c!=ul&&c!=fz;j[21]=!f[bd](GN);this.aa.dca(j,d);ICa(this,a,c,j)};PB[w].nk=function $Vr(a,c,d,f){var g=new KCa;a=QB(a);QF(c,a.eqd);if(exa(a.a2))g.a2=a.a2;else if(Ze(a.a2))g.a2=a.a2[z](a,f);if(a.N_a){g.N_a=h;g.PX=a.PX;return g}g.BWa=a.BWa;Op(g,a.PYb?new a.PX(this.V,a.PYb,d):new a.PX(this.V,d));return g};\r
18176 PB[w].D=function $Wr(){PB.C.D[z](this);this.aa.D()};var Xcb="Add star",pP="f_inbox",Ycb="Move to inbox",Zcb="Create event",adb="Filter messages like these",bdb="Mute";\r
18177 (function(){SB(1,wM,kbb,KB,h);SB(2,x5a,lbb,vCa,h);HCa(3,Xcb,pbb,vB,k,[Oy,cz,az,ez,Py,fz,Nd,ul,iz,kz,ZK,pP,aL,ce,Jy,pz,Yy]);HCa(4,uWa,qbb,yCa,function(b){return b==sz},[Oy,cz,az,ez,Py,fz,Nd,ul,iz,kz,ZK,pP,aL,ce,Jy,pz,Yy]);FCa(7,y5a,sbb,MB,function(b){return b==kz||b==ZK||b==aL||b==ce},TI,[Oy,cz,az,Py,fz,Nd,ul,Jy,sz]);SB(8,Ycb,tbb,wCa,function(b){return b==Zy},[Oy,az,Py,Nd,ul,iz,Jy,pz,sz]);GCa(9,vWa,ybb,zCa,h,[Oy,az,Nd,ul,Jy,Zy]);SB(18,tWa,zbb,xCa,h,[Oy,az,ul,Jy]);SB(10,EJ,Cbb,ACa,h,[fz,Nd,ul,pz,sz]);\r
18178 SB(42,Zcb,Gbb,nCa,k);SB(64,adb,Zbb,tCa,k,[Oy,cz,az,ez,Py,Nd,iz,kz,ZK,pP,aL,ce,Jy,pz,Yy,sz,Zy]);SB(21,bdb,rbb,uCa,h,[Oy,az,ez,Nd,ul,kz,ZK,pP,aL,ce,Jy,pz,sz])})();H(UB,pA);UB[w].B=D(JF);H(VB,UB);VB[w].Ar=function $Yr(a){return!!this.ge.J(a)};VB[w].Fs=E(h);VB[w].rO=function $_r(){return this.ge.Sb()};Qp(VB[w],function $0r(){this.Cl=k});H(XB,N);H(LCa,uh);LCa[w].Zta=D("iAa");var cdb="dg";VCa[w].Ec=D(cdb);VCa[w].alert=function $3r(a){this.dg.Ec()[Wp](a)};VCa[w].confirm=function $4r(a){return this.dg.Ec()[Zp](a)};Ap(VCa[w],function $5r(a,c){return this.dg.Ec()[Nq](a,c)});F=fC[w];F.ni=0;F.r2=0;F.MG=function $6r(a){this.ee[this.r2++]=a};F.ly=function $7r(){if(this.ni!=this.r2){var a=this.ee[this.ni];delete this.ee[this.ni];this.ni++;return a}};F.hQ=function $8r(){if(this.ni!=this.r2)return this.ee[this.ni]};F.Nb=function $9r(){return this.r2-this.ni};F.nd=function $$r(){return this.r2-this.ni==0};Aa(F,function $as(){Ia(this.ee,0);this.r2=this.ni=0});Sa(F,function $bs(a){return ef(this.ee,a)});\r
18179 wa(F,function $cs(a){a=ff(this.ee,a);if(a<0)return k;if(a==this.ni)this.ly();else{kf(this.ee,a);this.r2--}return h});F.Oa=function $ds(){return this.ee[lb](this.ni,this.r2)};H(gC,uh);gC[w].fZb=I;gC[w].R0b=0;var YCa=[P,ej,fj,gj,hj],XCa=[ij,jj];gC[w].L=function $es(){gC.C.L[z](this);this.Q.D();this.Q=i;delete this.eE};gC[w].XO=function $fs(a){var c=k;switch(a[Zb]){case hj:if(typeof this.wZb==Qe&&this.wZb!=a[kc]||typeof this.xZb==Qe&&this.xZb!=a[lc])c=h;this.wZb=a[kc];this.xZb=a[lc];break;default:c=h}c&&aDa(this,Zf(),a[Zb])};gC[w].TZ=function $gs(a){return(a||Zf())-this.xkb};_B_prog(53)}catch(e){_B_err(e)}\r
18180 \r
18181 try{H(hC,uh);hC[w].mgb=k;hC[w].Oya=i;hC[w].rP=k;var iC=i,dDa=new cg;hC[w].UXc=function $hs(){this.Oya=i;cDa(this)};hC[w].t3b=function $is(){this.rP=k;eDa(this);this[r](yi);cDa(this)};hC[w].L=function $js(){eDa(this);if(this.Oya!=i){Je[gb](this.Oya);this.Oya=i}dDa[Pb](this);if(iC!=i&&dDa.nd()){iC.D();iC=i}hC.C.L[z](this)};var qP="rP";hC[w].My=D(qP);H(jC,Jf);jC[w].ab=i;jC[w].D=function $ls(){jC.C.D[z](this);if(this.ab){cA(this.ab);this.ab=i}this.UGa[bc]();for(var a=this.i1.Oa(),c=0;c<a[u];c++)a[c].D();this.i1[bc]();if(this.Hh){this.Hh.D();this.Hh=i}};var ddb=";2";jC[w].wYc=function $ms(){for(this.ab=i;!this.UGa.nd();)try{var a=this.UGa.ly();a[0][z](a[1])}catch(c){rg(tg,ddb,c)}};H(nC,Jf);var jDa=1;nC[w].D=function $ns(){nC.C.D[z](this);this.Cu&&iDa(this.Cu,this)};nC[w].ix=function $os(){this.ab=i;lDa(this,Zf())};jC[w].qia=D("uWb");\r
18182 jC[w].kvb=function $qs(){for(var a=Zf(),c=this.i1.Oa(),d=0;d<c[u];d++)lDa(c[d],a)};jC[w].R8=function $rs(){for(var a=this.i1.Oa(),c=0;c<a[u];c++){var d=a[c];if(d.C5&2&&d.xKa){mC(this,this.kvb,this);break}}};jC[w].S8=function $ss(){for(var a=this.i1.Oa(),c=0;c<a[u];c++){var d=a[c];if(d.C5&4&&d.xKa){mC(this,this.kvb,this);break}}};H(oC,uh);F=oC[w];F.OU=i;F.dg=i;F.We=i;F.R0a=i;F.vjb=function $ts(){return Jg&&Ri||Ng&&this.dg[yma]!=this.dg.top};F.Ke=function $us(){return this.We?this.We.vc():i};F.L=function $vs(){oC.C.L[z](this);if(this.OU){oh(this.OU);this.OU=i}if(this.R0a){ba[Oma](this.R0a);this.R0a=i}this.We=this.dg=i};F.a7=function $ws(){this.lJb()};F.lJb=function $xs(){var a=Mg(this.dg);if(!Yha(a,this.We)){this.We=a;this[r](sj)}};H(pC,Jf);pC[w].Fp=D("wrb");pC[w].W=D(aM);pC[w].UO=function $As(){return this.eoa.Ke()};pC[w].L=function $Bs(){this.Y=this.wrb=i;if(this.eoa){this.eoa.D();this.eoa=i}};H(qDa,uh);F=qDa[w];F.HF=0;F.L=function $Cs(){qDa.C.L[z](this);this.KQ=this.Nr=i;this.Q.D();this.Q=i};var edb="-50px";F.lf=function $Ds(){this[r](rC);try{var a=this.Jsa.cb()[Lc];if(L)a[Ek]();else if(Jg||Fh&&vg(vYa)||Ng){if(!this.sKa){var c=this.Jsa[Qb](zm),d=c[x];Ja(d,sd);Wa(d,ka(d,hG));ck(d,edb);a[o](c);this.sKa=c}this.sKa[x].top=uDa(this)+Jm;this.sKa[Ek]();this.sKa[yk]();Ng&&a[Mc][dc][Ek]()}else Ze(a[yk])&&a[yk]()}catch(f){}};\r
18183 qp(F,function $Es(a,c,d,f){var g=this.HF,j=this.Nr[ql],n=g+j,s=Sw(a);a=s+a[ql];f=f||0;if(d||s<g||a>n){d=0;d+=c==0?a-j+5:c==1?(s+a-j)/2:s-5;c=l.max(0,d-f)}else c=-1;j=this.Nr;if(c>=0)if(!(Fh&&!vg(vDa)&&j[vc]==0&&j[Wc]==0)){up(j,c);this.HF=c}});F.Xfd=function $Fs(a){if(a[y]==this.KQ||L&&!a[y])this.HF=this.Nr[Nk]};F.mgd=function $Gs(a){var c=a[y];if(a[Sb]==32&&(!c||this.vrd[bd](c[ed]))){c=this.Nr;var d=this.HF,f=c[ql]*0.9;if(a[dd]){if(a[dd]&&d>0)up(c,d-f)}else if(d+f<c[Rb])up(c,d+f)}};H(wC,uh);var fdb=L||Fh&&vg("1.9.3");F=wC[w];faa(F,0);gaa(F,0);F.Tfc=0;F.Ufc=0;F.Hea=0;F.Iea=0;F.Lf=h;F.mZ=k;F.bhb=0;F.vVc=0;F.dWb=k;F.H=D(aE);F.oCa=Ge("KQ");F.Ac=Ge(so);F.L=function $Ks(){wC.C.L[z](this);nh(this[Fma],fj,this.sM,k,this);this.Q.D();delete this[y];delete this[Fma];delete this.Q};\r
18184 F.sM=function $Ls(a){if(this.Lf&&!this.mZ&&(a[Zb]!=fj||nm(a,0))){if(this.bhb==0){ADa(this,a);if(this.mZ)a[zb]();else return}else a[zb]();this.Exb();faa(this,this.Tfc=a[Ib]);gaa(this,this.Ufc=a[Jb]);this.Hea=this[y][Vk];this.Iea=this[y][ol];this.Oza=gm(Cg(this.ki));this.vVc=Zf()}};\r
18185 F.Exb=function $Ms(){var a=this.ki,c=a[mc],d=!fdb;this.Q.w(a,hj,this.F1b,d);this.Q.w(a,gj,this.ww,d);if(fdb){c.setCapture(k);this.Q.w(c,Yea,this.ww)}else this.Q.w(pm(a),kj,this.ww);L&&this.dWb&&this.Q.w(a,qj,zDa);this.KQ&&this.Q.w(this.KQ,tj,this.y6c,d)};F.ww=function $Ns(a,c){this.Q.wb();fdb&&this.ki.releaseCapture();if(this.mZ){this.mZ=k;var d=DDa(this,this.Hea),f=EDa(this,this.Iea);this[r](new BDa(Jd,this,a[kc],a[lc],a,d,f,c))}};F.cOb=function $Os(a){this.ww(a,h)};var gdb="beforedrag";\r
18186 F.F1b=function $Ps(a){if(this.Lf){var c=a[Ib]-this[Ib],d=a[Jb]-this[Jb];faa(this,a[Ib]);gaa(this,a[Jb]);if(!this.mZ){var f=this.Tfc-this[Ib],g=this.Ufc-this[Jb];if(f*f+g*g>this.bhb){ADa(this,a);if(!this.mZ){this.ww(a);return}}}d=CDa(this,c,d);c=d.x;d=d.y;if(this.mZ)if(this[r](new BDa(gdb,this,a[kc],a[lc],a,c,d))!==k){this.GKa(a,c,d,k);a[zb]()}}};F.y6c=function $Qs(a){var c=CDa(this,0,0);Da(a,this.Oza.x-this[Ib]);Ea(a,this.Oza.x-this[Jb]);this.GKa(a,c.x,c.y,h)};var rP="drag";\r
18187 F.GKa=function $Rs(a,c,d){ck(this[y][x],c+Jm);this[y][x].top=d+Jm;this[r](new BDa(rP,this,a[kc],a[lc],a,c,d))};H(BDa,N);H(yC,nn);F=yC[w];F.LBb=k;F.Yxa=h;F.dfa=h;F.Z3a=0.3;F.ug=I;F.Bg=I;F.Yf=i;F.ih=i;F.yg=k;F.M4=k;F.Em=i;F.jq=i;F.iD=i;F.uR=i;F.iAb=i;F.y2=i;F.QD=i;F.bw=i;F.Fc=function $Ss(a){this.ug=a;this.uR&&ah(this.uR,a)};F.Le=D(RN);F.xb=function $Us(a){this.Bg=a;if(this.QD)Q(this.QD,a)};F.Ee=D(lo);F.Cd=function $Ws(){this.QD||this.eb();return this.QD};F.uH=function $Xs(){this.Cc()||this.eb();return this.iD};F.Ot=function $Ys(){this.Cc()||this.eb();return this.bw};F.TQb=D("dfa");\r
18188 var hdb="-K7",idb="-K7-K0",jdb="-K7-Jq",kdb="-Jl",ldb="dialog",mdb="labelledby";\r
18189 F.ba=function $_s(){JDa(this);var a=this.W();this.wa=a.ba(T,{className:this.Al,tabIndex:0},this.iD=a.ba(T,{className:this.Al+hdb,id:this.ea()},this.uR=a.ba(PJ,this.Al+idb,this.ug),this.y2=a.ba(PJ,this.Al+jdb)),this.QD=a.ba(T,this.Al+Nn),this.bw=a.ba(T,this.Al+kdb),this.Sgc=a.ba(PJ,{tabIndex:0}));this.iAb=this.iD.id;fn(this.b(),ldb);gn(this.b(),mdb,this.iAb||I);if(this.Bg)Q(this.QD,this.Bg);Wm(this.b(),k);this.Yf&&PDa(this.Yf,this.bw)};\r
18190 F.eb=function $0s(a){if(this.Cc())e(Error(An));this.b()||this.ba();a=a||this.W().cb()[Lc];ODa(this,a);yC.C.eb[z](this,a)};F.ji=function $1s(a){return a&&a[ed]&&a[ed]==Cd&&yC.C.ji[z](this,a)};\r
18191 F.Ff=function $2s(a){yC.C.Ff[z](this,a);K(this.b(),this.Al);a=this.Al+Nn;if(this.QD=Gg(i,a,this.b())[0])this.Bg=this.QD[wk];else{this.QD=this.W().ba(T,a);if(this.Bg)Q(this.QD,this.Bg);this.b()[o](this.QD)}a=this.Al+hdb;var c=this.Al+idb,d=this.Al+jdb;if(this.iD=Gg(i,a,this.b())[0]){this.uR=Gg(i,c,this.iD)[0];this.y2=Gg(i,d,this.iD)[0]}else{this.iD=this.W().ba(T,a);this.b()[Bb](this.iD,this.QD)}if(this.uR)this.ug=dh(this.uR);else{this.uR=this.W().ba(PJ,c,this.ug);this.iD[o](this.uR)}gn(this.b(),mdb,\r
18192 this.iAb||I);if(!this.y2){this.y2=this.W().ba(PJ,d);this.iD[o](this.y2)}a=this.Al+kdb;if(this.bw=Gg(i,a,this.b())[0]){this.Yf=new DC(this.W());this.Yf.Pb(this.bw)}else{this.bw=this.W().ba(T,a);this.b()[o](this.bw);this.Yf&&PDa(this.Yf,this.bw)}JDa(this);ODa(this,Eg(this.b())[Lc]);Wm(this.b(),k)};F.ma=function $3s(){yC.C.ma[z](this);if(this.dfa&&!this.ih)this.ih=MDa(this);this.H().w(this.y2,P,this.v8c).w(this.xq,cj,this.dx);fn(this.b(),ldb);this.uR.id!==I&&gn(this.b(),mdb,this.uR.id)};\r
18193 F.Ba=function $4s(){this.Ib()&&this.ra(k);if(this.ih){this.ih.D();this.ih=i}yC.C.Ba[z](this)};var ndb="position:fixed;width:0;height:0",sP="afterhide";\r
18194 F.ra=function $5s(a){if(a!=this.yg){var c=this.W().cb(),d=pm(c)||ba;this.Cc()||this.eb(c[Lc]);if(a){this.DWa();this.If();this.H().w(this.b(),ij,this.yk,h).w(d,sj,this.XH,h)}else this.H().hb(this.b(),ij,this.yk,h).hb(d,sj,this.XH,h);this.jq&&Wm(this.jq,a);this.Em&&Wm(this.Em,a);Wm(this.b(),a);if(a){Fh&&this.b()[Ek]();if(this.jA())if(d=this.jA().wga())for(var f=this.bw[ic](jo),g=0,j;j=f[g];g++)if(j[ec]==d){try{if(Jg||Ng){var n=c[Qb](zm);iaa(n[x],ndb);this.b()[o](n);n[Ek]();this.b()[Nc](n)}j[Ek]()}catch(s){}break}}if(this.yg=\r
18195 a)this.H().w(this.bw,P,this.L3b);else{this.H().hb(this.bw,P,this.L3b);this[r](sP);this.M4&&this.D()}}};F.Ib=D("yg");F.DWa=function $7s(){this.jq&&Wm(this.jq,k);this.Em&&Wm(this.Em,k);var a=this.W().cb(),c=Mg(pm(a)||ba),d=a[Lc][bl];a=l.max(a[Lc][Rb],c[id]);if(this.jq){Wm(this.jq,h);Rm(this.jq,d,a)}if(this.Em){Wm(this.Em,h);Rm(this.Em,d,a)}if(this.dfa){c=Tm(this.b());this.ih.txa=new Cm(0,0,d-c[ib],a-c[id])}};\r
18196 F.If=function $8s(){var a=this.W().cb(),c=pm(a)||ba;if(mia(this.b())==oia)var d=a=0;else{d=gm(this.W());a=d.x;d=d.y}var f=Tm(this.b());c=Mg(c);a=l.max(a+c[ib]/2-f[ib]/2,0);d=l.max(d+c[id]/2-f[id]/2,0);f=this.b();if(this.wP()){qk(f[x],l[kb](a)+Jm);f[x].top=l[kb](d)+Jm}else Km(f,a,d)};F.v8c=function $9s(){var a=this.jA(),c=a&&a.o5a;if(c){a=a.J(c);this[r](new CC(c,a))&&this.ra(k)}else this.ra(k)};\r
18197 F.L=function $$s(){yC.C.L[z](this);if(this.xq){this.xq.D();this.xq=i}if(this.Em){Sg(this.Em);this.Em=i}if(this.jq){Sg(this.jq);this.jq=i}this.Sgc=this.bw=this.y2=i};F.oh=function $at(a){this.Yf=a;if(this.bw)if(this.Yf)PDa(this.Yf,this.bw);else Q(this.bw,I)};F.jA=D("Yf");F.L3b=function $ct(a){a:{for(a=a[y];a!=i&&a!=this.bw;){if(a[ed]==Fka){a=a;break a}a=a[A]}a=i}if(a&&!a[Uk]){a=a[ec];var c=this.jA().J(a);this[r](new CC(a,c))&&this.ra(k)}};\r
18198 F.yk=function $dt(a){var c=k,d=k,f=this.jA(),g=a[y];if(a[Sb]==27){var j=f&&f.o5a;g=g[ed]==KG&&!g[Uk];if(j&&!g){d=h;c=f.J(j);c=this[r](new CC(j,c))}else g||(c=h)}else if(a[Sb]==13){if(g[ed]==Fka)j=g[ec];else if(f){var n=f.wga(),s=n&&f.yMa(n);g=(g[ed]==ym||g[ed]==KG)&&!g[Uk];if(s&&!s[Uk]&&!g)j=n}if(j){d=h;c=this[r](new CC(j,String(f.J(j))))}}else if(a[Sb]==9&&a[dd]&&g==this.b())d=h;if(c||d){a[Ec]();a[zb]()}c&&this.ra(k)};F.XH=function $et(){this.DWa()};\r
18199 F.dx=function $ft(a){this.Sgc==a[y]&&Dh(this.zEc,0,this)};F.zEc=function $gt(){L&&this.W().cb()[Lc][Ek]();this.b()[Ek]()};H(CC,N);var GDa,GC,odb;H(DC,Hf);F=DC[w];F.Al="J-ldDVFe";F.D8a=i;F.wa=i;F.o5a=i;F.set=function $ht(a,c,d,f){Hf[w].set[z](this,a,c);if(d)this.D8a=a;if(f)this.o5a=a;return this};var pdb="-zTETae";F.eb=function $it(){if(this.wa){Q(this.wa,I);var a=Cg(this.wa);Ef(this,function(c,d){c=a.ba(jo,{name:d},c);if(d==this.D8a)m(c,this.Al+pdb);this.wa[o](c)},this)}};var tP="cancel";\r
18200 F.Pb=function $jt(a){if(!(!a||a[nb]!=1)){this.wa=a;a=this.wa[ic](jo);for(var c=0,d,f,g;d=a[c];c++){f=d[ec]||d.id;g=dh(d)||d[q];if(f){var j=c==0;this.set(f,g,j,d[ec]==tP);j&&K(d,this.Al+pdb)}}}};F.wga=D("D8a");F.yMa=function $lt(a){for(var c=this.wa[ic](Fka),d=0,f;f=c[d];d++)if(f[ec]==a||f.id==a)return f;return i};var uP="ok";GC=(new DC).set(uP,FF,h,h);var vP="Cancel";GDa=(new DC).set(uP,FF,h).set(tP,vP,k,h);var wP="yes",xP="Yes",yP="no",zP="No";odb=(new DC).set(wP,xP,h).set(yP,zP,k,h);\r
18201 (new DC).set(wP,xP).set(yP,zP,h).set(tP,vP,k,h);var AP="continue",qdb="Continue",BP="save",CP="Save";(new DC).set(AP,qdb).set(BP,CP).set(tP,vP,h,h);_B_prog(54)}catch(e){_B_err(e)}\r
18202 \r
18203 try{H(EC,yC);EC[w].DVa=k;EC[w].ra=function $mt(a){if(this.Ib()!=a&&!this.DVa){var c=this.b(),d=IDa(this),f=[ij,Zi];if(a){ih(c,f,this.PA,k,this);ih(d,P,this.G3b,k,this)}else{nh(c,f,this.PA,k,this);nh(d,P,this.G3b,k,this)}}EC.C.ra[z](this,a)};EC[w].G3b=function $nt(){this.b()[Ek]()};EC[w].PA=function $ot(a){this.DVa||a[Ec]()};H(HC,EC);HC[w].MC=function $pt(a){if(a.key!=uP)this.ra(k);else{var c=Pf(this.xF[q]),d=this.Wna?this.Wna(c,this.IAc):i;if(d){a[zb]();Q(this.P9,d);this.xF[Ek]()}else{this.n2a(c);this.ra(k)}}};HC[w].ra=function $qt(a){HC.C.ra[z](this,a);a?this.xF[Ek]():this.Cb.lf()};H(IC,EC);IC[w].MC=function $rt(a){a.key==uP&&this.n2a()};IC[w].ra=function $st(a){IC.C.ra[z](this,a);a||this.Cb.lf()};var WDa=/[\uFF01-\uFF5E]/g,XDa=/([\uFF73\uFF76-\uFF84\uFF8A-\uFF8E]\uFF9E)|([\uFF8A-\uFF8E]\uFF9F)|([\uFF61-\uFF9F])/g;var YDa=/[ \/(){}&|\"\000]/g;var rdb="#cc0000",DP=[{bgColor:"#f1f5ec",tg:"#006633"},{bgColor:"#dee5f2",tg:"#5a6986"},{bgColor:"#e0ecff",tg:"#206cff"},{bgColor:"#dfe2ff",tg:"#0000cc"},{bgColor:"#e0d5f9",tg:"#5229a3"},{bgColor:"#fde9f4",tg:"#854f61"},{bgColor:"#ffe3e3",tg:rdb},{bgColor:"#fff0e1",tg:"#ec7000"},{bgColor:"#fadcb3",tg:"#b36d00"},{bgColor:"#f3e7b3",tg:"#ab8b00"},{bgColor:"#ffffd4",tg:"#636330"},{bgColor:"#f9ffef",tg:"#64992c"},{bgColor:"#f1f5ec",tg:"#006633"},{bgColor:"#5a6986",tg:"#dee5f2"},{bgColor:"#206cff",tg:"#e0ecff"},\r
18204 {bgColor:"#0000cc",tg:"#dfe2ff"},{bgColor:"#5229a3",tg:"#e0d5f9"},{bgColor:"#854f61",tg:"#fde9f4"},{bgColor:rdb,tg:"#ffe3e3"},{bgColor:"#ec7000",tg:"#fff0e1"},{bgColor:"#b36d00",tg:"#fadcb3"},{bgColor:"#ab8b00",tg:"#f3e7b3"},{bgColor:"#636330",tg:"#ffffd4"},{bgColor:"#64992c",tg:"#f9ffef"},{bgColor:"#006633",tg:"#f1f5ec"}];F=ZDa[w];var sdb="#222222";F.PO=function $tt(a){if(a<0)return sdb;else if(a>=DP[u])return DP[0].tg;return DP[a].tg};var EP="#eeeeee";\r
18205 F.lK=function $ut(a){if(a<0)return EP;else if(a>=DP[u])return DP[0][jq];return DP[a][jq]};F.X5=function $vt(a){var c=I,d=I;d=a.rga();if(a.Rw()||d<0){c=EP;d=sdb}else if(d>=DP[u]){c=DP[0][jq];d=DP[0].tg}else{c=DP[d][jq];d=DP[d].tg}return{tg:d[Zc](1),bgColor:c[Zc](1)}};F.qcb=function $wt(){return DP};F.icb=function $xt(){return Li(DP,function(a){return a[jq]})};F.JMa=function $yt(){var a=DP[0];return{tg:a.tg[Zc](1),bgColor:a[jq][Zc](1)}};H(aEa,xx);aEa[w].Fga=B();aEa[w].Fga.ic=h;yx(aEa,bEa);F=bEa[w];F.fca=function $At(a,c){var d=0;if(this.rt!=a[1]){this.rt=a[1];d|=2}if(this.lD!=a[2]){this.lD=a[2];d|=4}if(this.mqa!=a[3]){this.mqa=a[3];d|=8;this.esb=i}if(this.EU!=a[4]){this.EU=a[4];d|=16}if(this.Bwa!=a[5]){this.Bwa=a[5];d|=64}if(this.wra!=a[6]){this.wra=a[6];d|=128}var f=a[7]||I;if(this.Yna!=f){this.Yna=f;d|=256}if(this.CDa!=a[8]){this.CDa=a[8];d|=512}a=a[9]||0;if(this.SA!=a){this.SA=a;d|=1024}if(this.Nx!=c){this.Nx=c;d|=32}d&&this.xj(d);return d!=0};va(F,D(LL));F.ea=function $Ct(){return this[pq]()};\r
18206 F.Gf=D("Sm");var FP="EU";F.bo=D(FP);F.cjb=D("Bwa");F.Dp=function $Gt(){var a=this.Yna?this.Yna:this.peb();return typeof a==Qe?a>0?String(a):I:a||I};F.CSb=function $Ht(){return this.Bb().Xs()};F.P3=function $It(){return!this.Rw()};F.PO=function $Jt(){return KC(this.V).kr.PO(this.mqa)[Zc](1)};F.lK=function $Kt(){return KC(this.V).kr.lK(this.mqa)[Zc](1)};F.peb=function $Lt(){var a=this.Bb();switch(a&&a.pv?a.pv():0){case 1:return l.max(0,this.rt);case 2:return l.max(0,this.lD);case 0:default:return i}};\r
18207 F.rga=D("mqa");F.Nf=D("Sm");var tdb="pV",udb="pW";F.Fga=function $Ot(){switch(this.Bb().Ga()){case fz:return tdb;case sz:return udb;default:return this.aa.Fga(this.Bb().Ga())||i}};F.Bb=function $Pt(){return Uy(this.Jb)};var vdb=" total=",wdb=" unread=";Ha(F,function $Qt(){var a=[this.Nf()];this.lD>=0&&a[p](vdb+this.lD);this.rt>=0&&a[p](wdb+this.rt);return a[kd](I)});F.Rw=function $Rt(){return Mf(this.Jb,Ty)};F.Raa=function $St(a){this.bI=a;this.xj(1)};\r
18208 F.xj=function $Tt(a){this.bI&&kya(this.bI,this,a)};H(eEa,uh);var jEa="inbox, star, starred, chat, chats, draft, drafts, sent, sentmail, sent-mail, sent mail, all, allmail, all-mail, all mail, anywhere, archive, spam, bin, read, unread, voicemail, voicemails, mute, muted, important, outbox, buzz"[Cc](/\s*[,\u3001]\s*/),iEa=/^[^^]+$/;eEa[w].Rw=function $Ut(a){return Mf(a,Ty)};var xdb=" Please try another name:";eEa[w].wqd=function $Vt(a,c){return(a=PC(this,a,c))?a+xdb:i};_B_prog(55)}catch(e){_B_err(e)}\r
18209 \r
18210 try{H(rEa,uh);F=rEa[w];F.qa=0;F.L=function $Wt(){rEa.C.L[z](this);this.Dh=i;this.Q.D();this.poa=this.Q=i};F.xc=D(Yj);F.Oe=Ge(Yj);F.uha=function $Zt(a){a=a[y];jf(this.poa,a);this.Q.hb(a,SC,this.uha);if(a==this.iL&&!(this.qa==1||this.qa==2)){this.qa=1;this[r](eD);this.qa=2;this.iL=i}};H(xEa,uh);xEa[w].sK=function $_t(){var a=[],c=this.yu.Oa();Ff(c,function(d){of(a,d.sK())});return a};H(yEa,N);H(zEa,Jf);zEa[w].L=function $0t(){this.Q.D()};var GP="cut",ydb="copy";zEa[w].XFa=function $1t(a){if(L){this.Q.w(a,GP,this.lUb);this.Q.w(a,ydb,this.lUb)}};var HP="Text";zEa[w].lUb=function $2t(a){var c=Eg(a[y]),d=pm(c);if((c=c[uk]?c[uk][Bk]():i)&&d.clipboardData[Aq](HP,c[jb])){a[zb]();if(a[Zb]==GP)la(c,I)}};H(YC,uh);F=YC[w];F.uha=function $3t(){this.Gk.wb();Ff(this.dRa,function(a){a.D()});Ia(this.dRa,0);this[r](SC);this.D()};F.Teb=function $4t(a){if(!this.OIa){var c=[],d=new BEa(this,c);try{this[r](d)}catch(f){}if(!d.PPb&&c[u])paa(a.pj,c[kd](ch));else!L&&!(Fh&&vg(Im))&&this.uha();if(Jg)if(c[u])return c[kd](ch)}};F.o6a=function $5t(){this.OIa=h;this.uha();this.sC[Xk]()};var zdb="sC";F.Ec=D(zdb);F.B=D(JF);F.L=function $8t(){YC.C.L[z](this);Kf(this.Gk);this.Gk=i};H(BEa,N);F=CEa[w];F.ea=Dy(I);F.Rb=D("Pf");F.Vc=D("Pf");va(F,function $au(){return this.Gf()});F.wi=Ge(LL);F.Gf=D(LL);F.Uo=D("UPa");F.pP=uN;F.SK=uN;F.Jjb=uN;F.I7=uN;F.Lec=Dy(0);F.WPa=uN;F.iXb=uN;F.PRb=Dy(I);F.UMa=Dy(I);F.N_=uN;F.l5a=uN;F.m5a=uN;F.ijc=uN;F.udb=Dy(0);F.JO=Dy(0);F.mXb=uN;F.rSb=Dy(I);F.tSb=Dy(0);F.Kcb=Dy(I);F.HO=Dy([]);F.Yta=E(I);F.tdb=function $fu(){return this.Yta(h)};F.f6=E(i);F=DEa[w];F.Rrb=[];F.tH=function $hu(a){return this.na?this.na.tH(a):EEa(this,a)};F.pBa=function $iu(a,c){if(!this.na)e(Error(".106"));this.na.pBa(a,c)};F.KE=function $ju(a){return this.na.KE(a)};F.Hv=function $ku(a){this.TI.Hv(a)};H(bD,Jf);bD[w].L=function $lu(){bD.C.L[z](this);Ff(this.Kab,function(a){a.D()})};bD[w].tb=function $mu(){if(!this.TWb){Ff(this.Kab,function(a){a.tb(this)},this);this.TWb=h}};bD[w].qo=function $nu(a){this.TWb&&a.tb(this);this.Kab[p](a)};FEa[w].mW=function $ou(a,c,d){Ff(d,function(f){if(c[f])e(Error(".108`"+f));else c[f]=a})};H(lD,gA);F=lD[w];F.hL=h;F.Gpb=function $pu(){this.Q.w(UC(RC(this)),aD,this.Teb)};var Adb="There is currently a request to the server pending. You may lose recent changes by navigating away.",Bdb="There are requests to the server pending. You may lose recent changes by navigating away.";F.Teb=function $qu(a){if(this.OEc)a.PPb=h;else{var c=fy(this).ud;a=a.hj;c.Cuc=h;var d=nIa(c);if(d)if(RLa(c))a[p](d==1?Adb:Bdb)}};\r
18211 F.D=function $ru(){if(!this.Pc){var a=this.Ev==this,c=this.Ya();c[r](KH);if(a){c.D();this.va&&!this.E5a&&this.va.D();if(a=this.Wpa)for(;a[u];)a[0].D();Mx().D()}else{a=this.Ev.Wpa;for(c=0;c<a[u];c++)if(a[c]==this){a[jd](c,1);break}}if(this.cEa){this.cEa.D();this.cEa=i}if(this.Q){this.Q.D();this.Q=i}lD.C.D[z](this)}};F.wT=function $su(a){return this.aa.wT(a)};F.eN=function $tu(){return yy(this).nf(EM)};F.NH=function $uu(){return hA(this).hL};yx(REa,lD);\r
18212 REa[w].wT=function $vu(a){var c=Ii;im(a)||(c+=NK+a+NK+Rz(this.Db).Sj());return c};REa[w].wT.Vd=h;Ha(SEa[w],function $wu(){return this.O[t]()});SEa[w].kc=D(ae);xD[w].Le=function $yu(){return this.O[0]};xD[w].dha=function $zu(){return this.O[5]};Ha(xD[w],function $Au(){return this.O[t]()});xD[w].kc=D(ae);Ha(TEa[w],function $Cu(){return this.O[t]()});TEa[w].kc=D(ae);UEa[w].l_=function $Eu(){return this.O[2]};UEa[w].vf=function $Fu(){return this.O[4]};Ha(UEa[w],function $Gu(){return this.O[t]()});UEa[w].kc=D(ae);Ha(VEa[w],function $Iu(){return this.O[t]()});VEa[w].kc=D(ae);WEa[w].vf=function $Ku(){return this.O[1]};Ha(WEa[w],function $Lu(){return this.O[t]()});WEa[w].kc=D(ae);Ha(XEa[w],function $Nu(){return this.O[t]()});XEa[w].kc=D(ae);F=ZEa[w];F.Aeb=function $Pu(){return this.O[0]};F.Dd=function $Qu(){return this.O[1]};F.Le=function $Ru(){return this.O[3]};F.Yg=function $Su(){return this.O[5]};fma(F,function $Tu(){return this.O[6]});F.dha=function $Uu(){return this.O[8]};Ha(F,function $Vu(){return this.O[t]()});F.kc=D(ae);F=YEa[w];F.EQb=function $Xu(){return this.O[0]};F.Dd=function $Yu(){return this.O[1]};var IP="aS";F.nMa=D(IP);Ha(F,function $_u(){return this.O[t]()});\r
18213 F.kc=D(ae);F=aFa[w];F.Wga=function $1u(){return this.O[1]};F.aeb=function $2u(){return this.O[2]};F.lua=function $3u(){return this.O[3]};Ha(F,function $4u(){return this.O[t]()});F.kc=D(ae);var Cdb=new bFa;bFa[w].vNa=D("ycc");bFa[w].aeb=D("Ccc");bFa[w].lua=D("FXa");F=cFa[w];F.gia=h;F.Sm=I;var JP="RETRY";F.o5=JP;F.Mba=-1;F.Mu=-1;F.Esa=-1;F.NQa=-1;F.wWa=Cdb;F.Gsa=-1;F.Mda=-1;F.C0=0;F.Ne=function $9u(a){yD(this);this.o5=a};F.OW=function $$u(a){yD(this);this.K8b=a};F.wl=function $av(a){yD(this);if(a&&this.QC)e(Error(".110"));this.gia=a};F.bD=function $bv(a){yD(this);this.Lib=a};F.sCa=function $cv(a){yD(this);this.Mba=a};F.c9=function $dv(){this.o5=mB;this.Hn[wc](this,101)};F.vNa=function $ev(){return this.wWa.vNa()};F.Se=function $fv(a){yD(this);this.Sm=a};\r
18214 F.Nf=D("Sm");var Ddb=":3";ua(F,function $hv(){if(this.uba)e(Error(".111"));this.Mu=Zf();this.Hn[Mb](this);this.uba=h;if(this.Mba>=0)this.QI=bA(Ddb,this.c9,this.Mba,this)});La(F,function $iv(){if(!this.uba)e(Error(".112"));if(!this[Iq]){this.o5=mB;this.Hn[wc](this)}});F.Aia=function $jv(){return!!this.uba};F.jm=function $kv(){return!!this[Iq]};F.oha=function $lv(){return!!this.uOb};F.zga=D("tOb");var KP="na";F.oM=Ge(KP);F.H=D(KP);ip(F,function $pv(a){return this.Na?this.Na[a]:i});\r
18215 F.vPa=function $qv(a,c){this.na&&this.na.rk&&this.na.rk(this,a,c)};F.wPa=function $rv(a){this.na&&this.na.r_&&this.na.r_(this,a)};F.hwa=function $sv(a){this.uOb=h;this.tOb=a;this.Y8()};F.xPa=function $tv(){this.uOb=k;this.tOb=i;this.Mba=-1;this.jHb=k;this.Y8()};F.Y8=function $uv(){ima(this,h);this.Mda=Zf();if(this.QI){cA(this.QI);this.QI=i}this.na&&this.na.Z6&&this.na.Z6(this)};F.oib=function $vv(){return new Sh};F.hYa=function $wv(a){yD(this);if(this.gia)e(Error(".113"));this.QC=a};\r
18216 F.QO=function $xv(){var a=this.Bf.vc();this.Ea&&Iy(this.Ea,a);return a};F.uc=function $yv(){return String(this.QO())};F.Ua=function $zv(a,c){gx(this.Bf,a,c)};F.Rc=function $Av(a){return Zh(this.Bf,a)};F.gYa=function $Bv(a){eFa(this,a,k)};F.Be=function $Cv(a,c){if(!this.RC)this.RC=new Wh;Ve(c)||(c=[String(c)]);Hva(this.RC,a,c)};H(fFa,BB);H(zD,cFa);var Edb=new fFa(EB,"CsRequest");F=zD[w];F.rwa=h;F.oib=function $Dv(){return new Sh(Rj)};F.EOc=Ge("rAc");F.Ga=function $Fv(){return Edb};F.zcb=D("wWa");F.vgb=function $Hv(){return this.oha()};F.Ii=function $Iv(a){yD(this);this.Ea=a};F.Bb=D(NO);F.O1=Ge("rwa");F.yIb=function $Lv(){return this.rwa&&!this.xG&&!this.yHb&&!this.QC&&this.Rc(pd)==QN};F.BIb=function $Mv(a){var c=this.Rc(pd);return this.rwa&&!this.xG&&!this.yHb&&!!c&&c!=QN&&Qya(this.Bb(),a.Bb())};\r
18217 F.rid=function $Nv(a){if(!a.yIb()||!this.BIb(a))e(Error(".114"));var c=a.Bf.Of();c[Pb](pd);for(var d=c.Sb(),f=0;f<d[u];f++){var g=d[f];this.Ua(g,c.Oa(g))}if(c=a.RC){d=c.Sb();for(f=0;f<d[u];f++){g=d[f];this.Be(g,c.Oa(g))}}this.xG=a;a.yHb=this};F.vPa=function $Ov(a,c){zD.C.vPa[z](this,a,c);this.xG&&this.xG.vPa(a,c)};F.wPa=function $Pv(a){zD.C.wPa[z](this,a);this.xG&&this.xG.wPa(a)};F.hwa=function $Qv(a){zD.C.hwa[z](this,a);this.xG&&this.xG.hwa(a)};F.xPa=function $Rv(){zD.C.xPa[z](this);this.xG&&this.xG.xPa()};_B_prog(56)}catch(e){_B_err(e)}\r
18218 \r
18219 try{H(AD,IA);F=AD[w];F.rK=function $Sv(a){return this.ia.rK(a)};F.KT=function $Tv(a){return this.ia.KT(a)};F.WZ=function $Uv(a){return this.ia.WZ(a)};F.Sda=function $Vv(a,c){return this.ia.Sda(a,c)};F.Vh=function $Wv(){AD.C.Vh[z](this);var a=this.ia;rA(a);this.W()[o](this.b(),a.b());this.Xk(a)};F.L=function $Xv(){this.wa||this.ia.D();AD.C.L[z](this)};F.RQ=function $Yv(a){AD.C.RQ[z](this,a);this.ia.RQ(a)};F.AI=function $Zv(a,c,d,f){this.ia.AI(a,c,d,f)};F.S1=function $_v(a,c){this.ia.S1(a,c)};\r
18220 F.oF=function $0v(a){return LA(this.ia,a)};F.Q3=function $1v(a){return jBa(this.ia,a)};F.VV=function $2v(a){AD.C.VV[z](this,a);kBa(this.ia,a)};F.di=function $3v(a,c,d){var f=!!d,g=this.ia;if(a==vA)if(c==-1&&!d){d=LA(g,a);AD.C.di[z](this,a,d,k)}else{AD.C.di[z](this,a,c,d);f=h}else AD.C.di[z](this,a,-1,d);g.ip(a,c,f)};H(BD,AD);BD[w].B=D(JF);var gFa=i;H(hFa,uh);F=hFa[w];F.P0=i;F.hc=D("UK");F.Gw=D(le);F.L=function $7v(){delete this.xe;jFa(this);oh(this.P0);hFa.C.L[z](this)};F.Rua=function $8v(){if(iFa(this)){jFa(this);oh(this.P0);this.P0=i;this.UK=h;this[r](kFa)}};ya(lFa[w],function $9v(a){a=a[y];for(var c=0;c<this.JV[u];c++)if(this.JV[c]==a){this.JV[jd](c,1);break}a.D();this.JV[u]||this.Li()});var Fdb=":4";Qa(mFa[w],function $$v(a){if(a)this.hD=bA(Fdb,this.wo,a,this);this.PVc=new lFa(this.MOa,G(this.YMc,this),h)});mFa[w].YMc=function $aw(){this.hD&&cA(this.hD);nFa(this,k)};mFa[w].wo=function $bw(){for(var a=this.PVc,c=0;c<a.JV[u];c++)a.JV[c].D();Ia(a.JV,0);nFa(this,h)};var LP="to",MP="bcc",EFa=new Hf({to:LP,cc:Yd,bcc:MP,subject:DO,body:Ym});F=sFa[w];F.fcb=function $cw(a){var c=FD(this).lna[a];delete FD(this).lna[a];return c};F.VNc=function $dw(a){var c=a.IX;ik(c[yc],Ii);var d=mD(hA(this.V));(new Gdb(c,d,h)).tb(a.cq)};F.UNc=function $ew(a){var c=a.IX;ik(c[yc],Ii);var d=mD(hA(this.V));(new Hdb(c,d,h)).tb(a.cq)};F.XNc=function $fw(a){var c=a.IX;ik(c[yc],Ii);var d=mD(hA(this.V));(new Idb(c,d,h)).tb(a.cq)};\r
18221 F.Hv=function $gw(a){var c;c=MD(this)?ID(this):JFa(this);Uh(c,a);a=xB(this.V);c=zB(a,c,{width:425,height:480});MD(this)&&ND(this,c,i,this.UNc);return c};F.cUa=function $hw(a,c){if(MD(this))a=ID(this);var d=xB(this.V);a=zB(d,a,{width:430,height:395});MD(this)&&ND(this,a,kP,c);return a};var NP="mailto:",Jdb="$1//$2";\r
18222 F.WP=function $iw(a){var c=a[y][Yc];if(a[y][ed]==kC&&c){c=Pf(c);var d=k;if(Mf(c,NP)){c=c[mb](/^(mailto:)([^\/])/,Jdb);c=new Sh(c);var f=c.Of();if(c.DX&&c.u_()){var g=f.Oa(LP);g[ld](c.DX+vh+c.Jk());f.set(LP,g[kd](wj))}AFa(this,k,f)}else{f=KFa(this);if(Awa(c)==f){c=(c=Bwa(c))&&ga(c)||I;(c=qC(this.V).Fp().getElementsByName(c)[Ab](0))&&this.Cb[wq](c,2)}else{f=c;g=KFa(this);if(Bwa(f)&&vwa(f,g)){c=Bwa(c)||I;JB(this.V).SH(c)}else if(Fh&&(a[Bc]||a[dd]))d=h;else xB(this.V).Yo(c,{target:AB},h)}}if(!d){a[zb]();\r
18223 a[Ec]()}}};var Kdb="canvas_frame";F.ODc=function $jw(a){var c=vFa(FD(this),a),d=this;pFa(a[yc],[Kdb],function(){if(c.rhb.wE>=0){if(!c.x1b||c.x1b.wE>=0)c.wc[z](d,c)}else c.rhb.ad(c)})};yx(UD,sFa);UD[w].LGa=B();UD[w].LGa.Ka=h;UD[w].B2a=E(k);UD[w].B2a.ic=h;var _GM_ftcb;var Ldb="AD",OP="N",Mdb="February",Ndb="September",Odb="November",Pdb="December",Qdb="Wednesday",Rdb="Thursday",Sdb="Saturday",Tdb="PM",bE={xDb:["BC",Ldb],Lmc:["Before Christ","Anno Domini"],ooc:[KH,cC,XD,kC,XD,KH,KH,kC,YD,ae,OP,TC],Spc:[KH,cC,XD,kC,XD,KH,KH,kC,YD,ae,OP,TC],xca:["January",Mdb,"March","April","May","June","July","August",Ndb,"October",Odb,Pdb],Rpc:["January",Mdb,"March","April","May","June","July","August",Ndb,"October",Odb,Pdb],wEb:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug",\r
18224 "Sep","Oct","Nov","Dec"],Upc:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],c2a:["Sunday","Monday","Tuesday",Qdb,Rdb,"Friday",Sdb],Wpc:["Sunday","Monday","Tuesday",Qdb,Rdb,"Friday",Sdb],U1a:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Vpc:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],poc:[YD,XD,bM,RF,bM,cC,YD],Tpc:[YD,XD,bM,RF,bM,cC,YD],xEb:["Q1","Q2","Q3","Q4"],dEb:["1st quarter","2nd quarter","3rd quarter","4th quarter"],MCb:["AM",Tdb],soa:["EEEE, MMMM d, y","MMMM d, y",\r
18225 "MMM d, y","M/d/yy"],CFa:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],PCb:{Md:"M/d",MMMMd:"MMMM d",MMMd:"MMM d"},Xmc:6,REb:[5,6],Ymc:2};MFa[w].Nga=function $mw(a){return this.SAb[TFa(this,a)>0?3:1]};MFa[w].wNa=function $nw(a){return this.SAb[TFa(this,a)>0?2:0]};var Udb=[/^\'(?:[^\']|\'\')*\'/,/^(?:G+|y+|M+|k+|S+|E+|a+|h+|K+|H+|c+|L+|Q+|d+|m+|s+|v+|z+|Z+)/,/^[^\'GyMkSEahKHcLQdmsvzZ]+/],Vdb="''";VD[w].bpa=function $ow(a){for(;a;)for(var c=0;c<Udb[u];++c){var d=a[Kb](Udb[c]);if(d){d=d[0];a=a[Zc](d[u]);if(c==0)if(d==Vdb)d=Ox;else{d=d[Zc](1,d[u]-1);d=d[mb](/\'\'/,Ox)}this.ap[p]({text:d,type:c});break}}};VD[w].RGa=function $pw(a){if(a<4)a=bE.soa[a];else if(a<8)a=bE.CFa[a-4];else if(a<12)a=bE.soa[a-8]+J+bE.CFa[a-8];else{this.RGa(10);return}this.bpa(a)};\r
18226 VD[w].Hbb=function $qw(a,c){c=c[Gq]();return a>=4?bE.c2a[c]:bE.U1a[c]};var WFa=new VD(7),YFa=new VD(3);new VD(2);var Wdb=new VD(1);new VD(9);new VD(0);var Xdb="EEEE",Ydb=new VD(Xdb),XFa=new VD("MMM d"),Zdb=new VD("EEE, MMM d, yyyy 'at' h:mm a");var PP="ud",xE=new CB(EB,PP);H(eE,SA);F=eE[w];F.L=function $rw(){this.n4=i;eE.C.L[z](this)};F.Q3=function $sw(a){return a==Wx};F.VV=function $tw(a){MA(this,a,-1)};F.oF=function $uw(a){if(a==vA)return this.n4(this);MA(this,a,-1);return this.b()[ql]};F.di=function $vw(a,c,d){if(a==vA){c==-1&&!d?eE.C.di[z](this,a,LA(this,a),k):eE.C.di[z](this,a,c,d);this.qe(Wx)}else eE.C.di[z](this,a,c,d)};F.xb=function $ww(a){this[bc]();Q(this.b(),a);this.qe()};F.ha=function $xw(a){this.Xk(a)};F.Jf=function $yw(a,c){RAa(this,a,c)};\r
18227 lk(F,function $zw(a){return sA(this,a)});F.Vp=function $Aw(a){return tA(this,a)};Aa(F,function $Bw(){this.DJb()});var dGa,bGa;H(sE,BD);sE[w].wN=[];sE[w].MJ=-1;sE[w].Nm=h;var QGa=0,aeb=/<span cliptip=1>(.*)<\/span>/i;F=sE[w];var beb="mq";F.Jc=function $Cw(){var a=this.ia;K(a.b(),beb);var c={pMc:this.X(Kd),phb:this.X(Ph),PMc:this.X(dx),IMc:this.X(Pd)};Q(a.b(),AGa(c));a.qe(Wx)};\r
18228 F.ma=function $Dw(){sE.C.ma[z](this);this.M9a=this.b(Kd);this.Y4=this.b(Ph);this.bsa=this.b(dx);this.aLa=this.b(Pd);this.H().w(this.bsa,Xi,this.aOa);this.H().w(this.aLa,Xi,this.aOa);this.H().w(this.bsa,Yi,this.aOa);this.H().w(this.aLa,Yi,this.aOa);this.H().w(this.b(),P,this.He)};F.Ba=function $Ew(){sE.C.Ba[z](this);this.H().wb()};F.D=function $Fw(){this.aLa=this.bsa=this.Y4=this.M9a=i;sE.C.D[z](this)};F.wL=function $Gw(a){this.QFa=a;QGa++};\r
18229 var ceb="fn",QP='<a class="',deb="About these ads",eeb='</a>&nbsp;<span class="',feb="B9kNyc",geb="updated",RP=' dir="',heb=' <span dir="',SP="ltr",ieb='">- <a dir="ltr" class="mr" href="',jeb="</a> -</span> ",keb="<span",leb=" &bull; ";\r
18230 F.C1c=function $Hw(a){var c=a.Pg&&a.Pg[hq](ceb),d=k,f=this.xl.Y2a;Ia(this.wN,this.MJ+1);a=new XEa(a[dq]);var g=a.jQb;if(g){d=AHa(this.xl);var j=g.Dd();if(f.pMa()){j={url:f.pMa()};f=new U;f[R](QP,Rd,qE,j.url,W,deb,eeb,feb,W,geb,gB);j=f[t]()}g=g.nMa();if(f=g.O[6])var n=!!(f&1),s=!!(f&2),v=!!(f&4);n={title:g.Le(),FA:g.O[1],Vw:g.O[2],WAa:g.O[3],sca:g.O[4],ZDa:n,a0:s,b0:v};s=new U;s[R](QP,Rd,qE,n.WAa,Vf,n.ZDa?RP+V(Zm)+Zd:I,Uf,n[Pk],hB,n.sca?heb+V(SP)+ieb+n.WAa+W+n.sca+jeb:I,n.FA?keb+(n.a0?RP+V(Zm)+Vf:\r
18231 I)+Uf+n.FA+gB+(n.Vw?(n.a0!=n.b0?leb:MH)+keb+(n.b0?RP+V(Zm)+Vf:I)+Uf+n.Vw+gB:I):I);n=s[t]();d=new VGa(IE,j,n,i,g.dha(),d);this.wN[p](d);d=h}a=a.lkc;for(s=0;s<a[u];s++){d=a[s];v=d.Aeb();n=IGa({source:d.O[2],title:d.Le(),PH:d.O[4],description:d.Yg(),Ob:d[hc]()?UGa(this,d[hc]()):I,Utb:d.O[7]});if(v==Fz)if(n[Kb](aeb))n=n[mb](aeb,JGa({id:this.X(Rd),ke:xwa}));d=new VGa(v,d.Dd(),n,i,i,i);this.wN[p](d);d=h}if(this.wN[u]>50){a=this.wN[u]-50;this.wN[jd](0,a);this.MJ-=a}if(c&&this.xec){c=this.MJ+(d?1:0);KGa(this,\r
18232 c)}else if(!c){c=this.MJ+1;KGa(this,c);dE(this.B()).jj(meb,this.wN[c].mic)}};F.di=function $Iw(a,c,d){sE.C.di[z](this,a,c,d);a==vA&&this.MJ>=0&&NGa(this)};F.aOa=function $Jw(a){var c=a[y];if(!Bg(c,uE))switch(a[Zb]){case Xi:m(c,CO);break;case Yi:m(c,lE);break}};var neb="webclips";\r
18233 F.He=function $Kw(a){if(a[y].id==this.X(Rd)){dE(this.B()).pb(oeb);this.jb[bq]({view:dJ,fk:neb})}else if(a[y]==this.bsa){this.MJ>0&&KGa(this,this.MJ-1);dE(this.B()).pb(peb)}else if(a[y]==this.aLa){KGa(this,this.MJ+1,h);dE(this.B()).pb(qeb)}else if(a[y][Yc]){var c=this.wN[this.MJ];dE(this.B()).jj(reb,c.mic);this.Lh.WP(a);if(c.yo){a=zg(a[y]);var d;if(a[u]>0)if(a[0]==Rd)d=IB;else if(a[0]==iO)d=Cz;uHa(c.yo,kD,0,d,Zf()-c.TDa)}}};_B_prog(57)}catch(e){_B_err(e)}\r
18234 \r
18235 try{var YGa={};F=WGa[w];F.Bea=function $Lw(a){return a[Xc](0)==32?a[nc](1):a};F.add=function $Mw(a){this.ee[XGa(this,a)]=i};Aa(F,function $Nw(){this.ee={}});F.vc=function $Ow(){var a=new WGa;for(var c in this.ee)if(this.ee[Kc](c))a.ee[c]=i;return a};Sa(F,function $Pw(a){return this.ee[Kc](XGa(this,a))});F.Qc=function $Qw(a){return this.mQa(a)&&a.mQa(this)};F.forEach=function $Rw(a,c){for(var d in this.ee)this.ee[Kc](d)&&a[z](c,this.Bea(d),undefined,this)};\r
18236 F.Nb=function $Sw(){var a=0;for(var c in this.ee)this.ee[Kc](c)&&a++;return a};F.Oa=function $Tw(){var a=[];for(var c in this.ee)this.ee[Kc](c)&&a[p](this.Bea(c));return a};F.nd=function $Uw(){for(var a in this.ee)if(this.ee[Kc](a))return k;return h};F.mQa=function $Vw(a){for(var c in this.ee)if(!a.ee[Kc](c)&&this.ee[Kc](c))return k;return h};wa(F,function $Ww(a){a=XGa(this,a);if(this.ee[Kc](a)){delete this.ee[a];return h}return k});F.mG=function $Xw(){return em(this.Oa())};F=ZGa[w];F.Odb=function $Yw(){return this.O[1]};F.Ndb=function $Zw(){return this.O[2]};F.Pdb=function $_w(){return this.O[3]};F.pMa=function $0w(){return this.O[4]};Ha(F,function $1w(){return this.O[t]()});F.kc=D(ae);H(cHa,Kx);F=cHa[w];var seb="rtis",teb="rtes",ueb="rus",veb="alpl";F.eYc=function $3w(a){a=new ZGa(a[dq]);this.Fa(seb,a.Odb());this.Fa(teb,a.Ndb());this.Fa(ueb,a.Pdb());this.Fa(veb,a.pMa())};F.Odb=function $4w(){return this.Ca(seb)};F.Ndb=function $5w(){return this.Ca(teb)};F.Pdb=function $6w(){return this.Ca(ueb)};F.pMa=function $7w(){return this.Ca(veb)};H(zE,BB);dHa[w].fjb=h;var web=AE(oy),DHa=AE(Hz),nHa=AE(kD),mHa=AE(IB),xeb=AE(UE),yeb=AE(TE),rHa=AE(Bz),TP="nr",pHa=AE(TP),sHa=AE(aP),qHa=AE(rO),UP="ds",tHa=AE(UP),vHa=AE(RO),wHa=AE(Uz);H(CE,xx);CE[w].tb=B();CE[w].tb.Ka=h;CE[w].e4a=B();CE[w].e4a.Ka=h;H(HE,kn);yx(CE,HE);HE[w].gYc=function $$w(a){a=new UEa(a[dq]);var c=i,d=a.l_(),f=a.O[3],g=a.vf();f=xHa(d,g,f);if(d==OD)c=JE(this,f);if(c==i||c.mKa!=i)c=GHa(this,f,d);c.Z2a=a.O[1];c.qhc=Zf();CHa(this,c)};HE[w].scc=function $ax(a){a.X0a=G(this.igb,this,a);this.w(this.ob,Hh,a.X0a);this.ob[Mb](String(a.uri),zj)};\r
18237 var zeb="Parsed response empty",Aeb="Xhr parse error(",Beb="):",Ceb="ads",Deb="ati",Eeb="aor",VP="ch",WP="ci",XP="rv",Feb="ats",Geb="XHR response was not an array",Heb="Xhr connection error:",Ieb=":6";\r
18238 HE[w].igb=function $bx(a){this.hb(this.ob,Hh,a.X0a);a.X0a=i;if(this.ob.ye()){var c=this.ob.dj(),d;if(sx(c))a.ZX=zeb;else{var f=c[Zc](c[Db](ch));try{d=ix(f)}catch(g){a.ZX=Aeb+g+Beb+c}}if(d)if(Ve(d)){c=d[0];for(var j,n,s=0;s<c[u];s++){d=c[s];f=d[0];if(f==rE)j=new XEa(d);else if(f==Ceb)n=new SEa(d)}var v=0,C=0;d=f=0;if(j)if(j=j.jQb)if(j.nMa().dha())C++;else v++;if(n){n=n.aS;for(s=0;s<n[u];s++)if(n[s].dha())d++;else f++}n=v;j=C;f=f;d=d;if(a.uA!=1)e(Error(".118`"+a.uA));a.uA=3;BE(a.Xv,n+j+f+d>0?yeb:xeb,\r
18239 GE(a));oHa(a,kD,n,j);oHa(a,RE,f,d);for(n=0;n<c[u];n++){j=c[n];d=j[0];f=i;if(d==Deb){a.Nzb=new WEa(j);if(a.ER==DE||a.ER==EE)a.Am=a.Nzb.vf()}else if(d==rE){a.jFc=new XEa(j);f=new Ex(i,d,j)}else if(d==Eeb){a.rac=new VEa(j);f=new Ex(i,d,j)}else if(d==VP)f=new Ex(i,d,j);else if(d==Ceb)a.vGa=new SEa(j);else if(d==WP){a.QJb=j;f=new Ex(i,d,j)}else if(d==JD){a.Nxc=j;f=new Ex(i,d,j)}else if(d==XP)f=new Ex(i,d,j);else if(d==Feb)f=new Ex(i,d,j);f&&this.xf.ud[r](f)}}else{a.ZX=Geb;lHa(a,this.ob.eo==8)}else lHa(a,\r
18240 this.ob.eo==8)}else{a.ZX=Heb+this.ob.Kga();lHa(a,this.ob.eo==8)}if(!this.ob.Eb()){a.p8a&&a.mKa==i&&this.TTb(a);(a=JE(this,this.UFa.pop()))&&bA(Ieb,G(this.scc,this,a),0)}};HE[w].TTb=function $cx(a){a.p8a(a);a.mKa=h};H(HHa,Jf);var YP="name",PHa=["description","fileName","lineNumber",eg,YP,"stack"],Jeb=Qj+"&view=jr&type=p&jsid="+Ufa;F=HHa[w];F.pwb=Ge(JF);F.tRb=function $ex(){return ti};var Keb="log-message";F.Wva=function $fx(a,c,d,f){a.r=c;a.email=Hi;a.ua=bp[Fc];a.build=Ei;a.jsver=d;a.jsm=Wla;a.t=String(new Date);if(f)a[Keb]=f};F.X0b=B();F.yI=function $hx(a,c){if(a!=this.ERc){this.Ihd(OHa(this,a,c));this.ERc=a}};\r
18241 F.Ihd=function $ix(a){try{if(this.Lya>0)a.unsent=this.Lya;var c=Zf();if(c-this.mxa<6E4||this.ob.Eb()?h:k){this.Lya++;return k}this.mxa=c;if(a.jsver==ti)oaa(a,Gba(arguments[Hc][Jc]));var d=new U;Ef(a,function(j,n){try{d[R](Qf(n),ei,Qf(j),Sf)}catch(s){}});var f=d[t]();this.s1b()&&this.q1b(f);if(!bp[uma])return this.lmb();this.ob[Mb](Jeb,Aj,f);this.Lya=0;return h}catch(g){return k}};F.ZRa=B();F.s1b=E(k);F.q1b=B();F.lmb=E(k);F.L=function $nx(){HHa.C.L[z](this);if(this.Q){this.Q.D();this.Q=i}};\r
18242 var ME=new HHa;tg.Qla=ME;(function(b){if(b.Dla){Ff(b.Dla,function(a){this.Qla.yI(a[1],a[0])},b);b.Dla=i}})(tg);var SHa={};Pp(QHa[w],function $ox(){Ia(this.eO,0);Ia(this.hDa,0)});LE[w].pjc=0;var Leb={};F=LE[w];F.pQb=D(WE);F.Ujb=function $qx(){return this.xqa.Ujb(this,NBa(this.C3a.sK()))};F.Yg=function $rx(){return Leb[this.mg]||this.mg.lC()};F.Sid=Ge("Gld");Qa(F,function $tx(){var a=this.xqa.qQb();a&&this.Sid(a)});F.wid=Ge("WCc");F.NFc=D("pDc");F.MGc=D("gAb");F.VX=function $xx(a){this.pjc+=a};F.lua=D("FXa");F.Hz=function $zx(a,c){if(WHa(this,a,8)){if(!this.Uxa)this.Uxa=new Hf;this.Uxa.set(a,c)}};\r
18243 F.ZOa=function $Ax(a,c){if(this.Uxa){var d=this.Uxa.J(a)||0;this.Hz(a,d+c)}else this.Hz(a,c)};F.Foa=function $Bx(a,c){if(WHa(this,a,8))if(WHa(this,c,30)){if(!this.amb)this.amb=new Hf;this.amb.set(a,c)}};dIa[w].PG=0;dIa[w].JA=0;dIa[w].jz=0;F=eIa[w];F.xfa=0;F.PG=0;F.JA=0;F.jz=0;F.qHa=0;F.add=function $Cx(a){this.Xyb[p](a);this.xfa+=a.rh==0;this.PG+=a.PG;this.JA+=a.JA;this.jz+=a.jz;if(a.qHa>0)this.qHa+=a.qHa};F=fIa[w];F.Mba=1E4;F.yx=k;F.vfd=0;F.J3a=0;F.T7b=0;F.QI=i;F.U0=i;naa(F,Ge("Mba"));var ZP="Bf";F.QO=D(ZP);F.sYa=Ge(ZP);var Meb="yx";F.Rwa=D(Meb);Qa(F,function $Hx(){if(this.yx)e(Error(".124"));this.yx=h;this.J3a=0;hIa(this)});Ga(F,function $Ix(){iIa(this);this.yx=k});F.zTa=function $Jx(){this.tza(h)};F.XP=function $Kx(){this.tza(k)};F.d2c=function $Lx(){this.tza(k)};F.e2c=function $Mx(){this.tza(k)};\r
18244 F.tza=function $Nx(a){iIa(this);if(a){this.yx=k;this.Li[z](this.na,h)}else if(this.J3a<=this.vfd)if(this.T7b)this.U0=Dh(this.Q4c,this.T7b,this);else hIa(this);else{this.yx=k;this.Li[z](this.na,k)}};F.Q4c=function $Ox(){this.U0=i;hIa(this)};_B_prog(58)}catch(e){_B_err(e)}\r
18245 \r
18246 try{H(jIa,uh);jIa[w].zZb=0;jIa[w].u0=h;jIa[w].Wpb=function $Px(a){this.zZb=Zf();this.u0=a;this[r](ZD)};H(YE,uh);YE[w].Ggb=3E4;YE[w].Gwc=6E4;YE[w].Mw=i;YE[w].qG=0;var Neb=/var gmail_error\s*=\s*(\d+)/m,Oeb=/var rc\s*=\s*(\d+)/m;F=YE[w];F.QSa=-1;F.N8=0;var Peb="READY";F.qa=Peb;F.Sja=0;F.yya=0;F.D=function $Qx(){if(!this.Pc){YE.C.D[z](this);this.zu[bc]();xIa(this)}for(var a=0;a<this.pEa[u];a++)this.pEa[a].D();this.Q.D()};ua(F,function $Rx(a){this.zu.MG(a);this.Plb(h)});F.xc=D(Yj);F.P5=D(XI);F.w6=D("Sja");F.f2a=function $Vx(){this.YR&&this.YR[wc](this.qG)};La(F,function $Wx(a,c){this.i3(a,c)});\r
18247 F.i3=function $Xx(a,c){a.uc();c=Ke(c)?c:100;if(a==this.ld){this.qG=c;this.f2a()}else this.zu[Pb](a)&&a.hwa(new nB(a,c))};F.jNa=function $Yx(){var a=this.zu.Oa();this.ld&&a[ld](this.ld);return a};F.MUb=E(h);F.NRb=Ee();F.D2a=function $0x(){if(!this.Loa.nd())for(var a=this.Loa.Sb(),c=0;c<a[u];c++){var d=a[c],f=this.Loa.J(d);this.ld.Ua(d,f);this.Loa[Pb](d)}};var Qeb=":7";\r
18248 F.GAb=function $1x(){try{this.ld.uc();this.qG=0;for(var a,c=0,d=i,f=0;f<this.pEa[u];f++){var g=this.pEa[f],j=g.wma(this.ld);if(j>=c){c=j;d=g}}a=d;if(!a)e(Error(".125`"+this.ld));this.YR=a;this.Vka=i;this.YR.yna(this.ld);if(!this.Mw)this.Mw=bA(Qeb,this.V4b,this.Ggb,this)}catch(n){e(n)}};var Reb="WAITING_FOR_READY",Seb="WAITING_FOR_RETRY";\r
18249 F.EG=function $2x(a){switch(a){case Peb:case Reb:if(this.ld)e(Error(".126`"+a));break;case ZE:case Seb:case vIa:if(!this.ld)e(Error(".127`"+a));break}if(a!=this.qa){this.qa=a;this[r](XD);this.xOb&&JKa(this.xOb)}};F.Plb=function $3x(a){if(this.qa==Peb){var c=this.zu.hQ();if(c)if(this.MUb(a,c)){this.zu.ly();this.ld=this.NRb(c);pIa(this)}}};var aQ="di";\r
18250 F.cIc=function $4x(a){for(var c=0;c<a[u];c++){var d=a[c];this.N8++;var f=d[0];if(!this.kmb(f,d)){this.MAa[p](d);this.N8==1&&rIa(this,d);if(f==aQ)tIa(this,d);else if(f==Rd){this.UNa(d);this.uVa()}}}};F.qfb=function $5x(a){this.N8++;var c=a[0];if(this.ala){cA(this.ala);this.ala=0}if(!this.kmb(c,a)){this.MAa[p](a);this.N8==1&&rIa(this,a);if(c==aQ)tIa(this,a);else if(c==Rd){this.UNa(a);this.uVa()}else this.ala=bA(Qeb,this.uVa,50,this)}};F.kmb=E(k);F.UNa=function $7x(a){this.QSa=a[1]};\r
18251 F.uVa=function $8x(){if(this.ala){cA(this.ala);this.ala=0}if(this.MAa[u]){var a=this.ld,c=this.MAa;this.MAa=[];this.b1(a,c)}};var Teb=";6";F.b1=function $9x(a,c){if(!this.Vka)try{for(var d=0;d<c[u];d++){var f=c[d],g=f[0];this[r](new Ex(a,g,f,h))}a&&a.wPa(c);for(d=0;d<c[u];d++){f=c[d];g=f[0];a&&a.vPa(g,f);this[r](new Ex(a,g,f))}}catch(j){rg(tg,Teb,j);this.Vka=j}};F.ZFb=function $$x(){return this.N8==this.QSa};var Ueb="N8";F.rGc=D(Ueb);F.qGc=D("QSa");\r
18252 F.WH=function $cy(){if(this.Vka||!this.ZFb()){var a;if(this.Vka)a=new nB(this.ld,12,h);else{var c=this.ld;a=new nB(c,103,k,c.C0);c.Ua(ava,1);this.NCc&&BIa(this)}this.OTa(a);return k}if(this.qa!=ZE)e(Error(".128"));this.ld.uc();this.ld.xPa();this.KS=this.ld=i;lIa(this,1E3);this.EG(Reb);return h};F.eec=function $dy(a){return!a.vW};\r
18253 F.OTa=function $ey(a){a.hm();if(this.qa!=ZE)e(Error(".129"));this.ld.uc();var c=this.ld;c.Gsa=-1;c.wWa=Cdb;if(this.eec(a)){c=this.ld;this.ld=this.KS=i;c.hwa(a);a=Reb}else{this.KS=a;a=Seb}this.EG(a)};F.Hod=function $fy(){xIa(this);switch(this.qa){case Reb:this.EG(Peb);this.Plb(k);break;case Seb:this.Sja=Zf()+this.yya;this.EG(vIa);this.Lv=bA(Qeb,this.xqb,this.yya,this);lIa(this,2*this.yya);break;default:e(Error(".130`"+this.qa))}};F.xqb=function $gy(){this.Lv=0;this.qa==vIa&&pIa(this)};\r
18254 F.V4b=function $hy(){this.Mw=bA(Qeb,this.V4b,this.Ggb,this);this.CIa()};F.CIa=function $iy(){if(!(!this.ld||this.ld.Ayb))if(this.Fv){var a=Zf(),c=this.ld.NQa;if(c>-1&&a-c>this.Gwc)kIa(this.Fv)||this.Fv.u0||this.i3(this.ld,1)}};H(CIa,N);H(DIa,uh);F=DIa[w];F.D=function $jy(){DIa.C.D[z](this);this.Q.D();EIa(this)};F.Ox=function $ky(a,c,d,f,g){var j=this.Tn;EIa(this);mDa(lC(d),h);Mea[Rc]();j=this.Tn=new LE(a,c,d,f);this.hFb=i;UHa(j.TR,xC,g);FIa(this);j[Rc]();a.b3a(j);this[r](new CIa(OP,j));return j};F.s5a=function $ly(){var a=this.Tn;if(a){UHa(this.Tn.TR,tP);Mea[qc]();this.ukb=this.hFb=this.Tn=undefined;EIa(this);this[r](new CIa(Xd,a))}};var Veb=":8";F.pEc=function $my(){if(!this.Csa)this.Csa=bA(Veb,this.m1c,20,this)};var Web="FAILED";\r
18255 F.m1c=function $ny(){this.Csa=i;var a=this.Tn;if(a){a.xqa.BHb(a);if(!this.rPb){this.rPb=h;a.IPc=h}var c=a.xqa.qQb();c&&a.wid(c);UHa(a.TR,Jd);Mea[qc]();c=a.TR.eO;if(c[u]<2)c=k;else{var d=a.TR.hDa;a.gAb=i;a.hDa=d;a.Mu=c[0].sR;a.d5=c[c[u]-1].sR;a.BAb=a.d5-a.Mu-a.pjc;c=a.fFb;d=a.eid=[];for(var f=a.FXa=[],g=a.jDa=new eIa,j=a.kDa=new eIa,n=0;n<c[u];n++){var s=c[n];if(s.Gsa!=-1?s.Gsa>a.Mu&&s.Mda<=a.d5:s.Mda!=-1&&s.Mda>a.Mu&&s.Mda<=a.d5){var v=new dIa(s,a.Mu);s.rAc<a.Mu?g.add(v):j.add(v);if(s.vgb()){d[p](Web);\r
18256 f[p](Web)}else{s=s.zcb();d[p](s.aeb()||me);f[p](s.lua()||me)}}}a.xod=g.PG+g.JA+g.jz+j.PG+j.JA+j.jz;c=a.bod=h}c&&this.OUa[p](bIa(a));this.CP=a;this.ukb=this.hFb=this.Tn=undefined;mDa(lC(this.V),k);Mx().Kh(151,a);this[r](new CIa(ae,a))}};F.gqb=function $oy(){this.Tn&&this.Tn.Ujb()&&this.pEc()};F.qia=function $py(){return!!this.Tn};F.Hz=function $qy(a,c){this.Tn&&this.Tn.Hz(a,c)};F.ZOa=function $ry(a,c){this.Tn&&this.Tn.ZOa(a,c)};F.Foa=function $sy(a,c){this.Tn&&this.Tn.Foa(a,c)};\r
18257 F.VX=function $ty(a){this.Tn&&this.Tn.VX(a)};F.VJc=function $uy(){FIa(this)};F.Bdd=function $vy(a){if(this.Tn){this.Tn.fFb[p](a);return h}return k};H(IIa,Jf);IIa[w].L=function $wy(){this.zCa[bc]()};H(bF,uh);var Xeb={3:13,8:10,13:13,27:27,46:127};bF[w].pZb=0;bF[w].L=function $xy(){this.Q.D();Ff(this.JU,function(a){a.D()})};bF[w].XFa=function $yy(a){a=new hn(a);this.Q.w(a,jn,this.KC);this.JU[p](a)};\r
18258 bF[w].KC=function $zy(a){var c;a:{var d=a[Sb];if(a[Bc]||a[Eb]||a[rc]&&!a[dd]||d==16||d==18)c=k;else{try{for(var f=a[y];f;f=f[A]){var g;var j=f,n=j[Gb],s=d==13||Jg&&d==3,v=s?Bf(zg(j)):undefined;g=d==27?k:s&&(n==kC||v[yI]||v[xo]||v.toxOdd)||n==oo&&(j[Zb]!=XF||d==32)||n==ym||n==Fka||n==KG;if(g){c=k;break a}}}catch(C){}c=h}}if(c){Fh&&this.eBa.Hxb[String[rq](a[Ob])]&&a[zb]();c=Zf();if(c-this.pZb>1E3)this.cL=I;this.pZb=c;if(c=a[Ob]>0?a[Ob]:Xeb[a[Sb]]){c=String[rq](c);this.cL+=a[dd]?c[pl]():c[od]();for(d=\r
18259 0;d<this.cL[u];d++){f=this.cL[nc](d);(c=this.eBa.zCa.J(f)||i)||(c=this.eBa.zCa.J(f[od]())||i);if(c&&(!a.repeat||c.Ied)){d=new N(aE,this);d.jna=c.jna;d.ZH=a;this[r](d);a[zb]();this.cL=I;break}}}}};H(KIa,Jf);F=KIa[w];F.Y8c=function $Ay(a){a=a.f0a;if(a==this.Tn){this.CP=a;this.Tn=i}};F.X8c=function $By(a){if(a.f0a==this.Tn)this.Tn=i};F.ZG=D("Tn");var Yeb="CP";F.Ita=D(Yeb);F.L=function $Ey(){this.na.D()};H(cF,IA);H(dF,IA);F=dF[w];F.RQ=function $Fy(a){dF.C.RQ[z](this,a);for(var c=this.Uc(),d=0;d<c[u];d++)c[d].RQ(a)};F.ha=function $Gy(a){this.Jf(a,this.qj())};F.Jf=function $Hy(a,c){this.Lca([a],c)};F.Lca=function $Iy(a,c){var d=this.qj();if(a[u]&&c>=0&&c<=d){rA(this);yA++;try{var f=wBa(this);for(d=0;d<a[u];d++){var g=c+d,j=a[d];rA(j);(f||!j.Fj())&&j.Yb();this.bia(j,g);j.RQ(this.Yj);RAa(this,j,g)}j.Fj()&&this.Ui()}finally{zA()}}};\r
18260 F.bia=function $Jy(a,c){if(c==this.qj())this.W()[o](this.b(),a.b());else{var d=this.b();d[Bb](a.b(),d[cc][c])}};F.Vp=function $Ky(a){var c=this.rb(a),d=tA(this,a);if(d){var f=c.Fj();c.RQ(i);this.jBa(c,a);f&&this.Ui()}return d};lk(F,function $Ly(a){if(!this.bf)return k;yA++;try{return this.Vp(ff(this.bf,a))}finally{zA()}});Aa(F,function $My(){yA++;try{for(;this.Vp(0););}finally{zA()}});F.jBa=function $Ny(a){Sg(a.b())};_B_prog(59)}catch(e){_B_err(e)}\r
18261 \r
18262 try{H(fF,dF);F=fF[w];F.oF=function $Oy(a){for(var c=this.qj(),d=0,f=0;f<c;f++){var g=this.rb(f),j=g.KT(a),n=g.WZ(a),s=g.rK(a),v=JA(g,a);switch(s){case 0:d+=j;break;case -1:g=LA(g,a);if(!v){g=l.max(g,j);g=l.min(g,n)}d+=g;break;default:d+=j;break}}return d};F.Q3=function $Py(a){if(a==vA)return k;else{for(var c=this.qj(),d=0;d<c;d++){var f=this.rb(d);if(!JA(f,a)||!jBa(f,a))return k}return h}};F.VV=function $Qy(a){for(var c=this.qj(),d=0;d<c;d++)kBa(this.rb(d),a);MA(this,a,-1)};\r
18263 F.di=function $Ry(a,c,d){this.wX(a,c,d);this.Hpa(a,c);this.J2(a,c,BA[a])};F.wX=function $Sy(a,c,d){a==vA&&c==-1?fF.C.di[z](this,a,LA(this,a),k):fF.C.di[z](this,a,c,d)};F.Hpa=function $Ty(a,c){this.qj()&&rBa(a,c,this.Uc(),a==this.yjc)};F.J2=function $Uy(a,c,d){var f=this.qj();if(f)for(var g=0;g<f;g++){var j=this.rb(g),n=d[j.ea()];j.ip(a,n,this.hjc(a,c,j,n))}};F.hjc=function $Vy(a,c,d,f){return this.yjc==Wx&&a==vA&&f==c};H(gF,fF);F=gF[w];F.LEa=wB;F.jAc=wB;F.Vh=function $Wy(){gF.C.Vh[z](this);var a=this.wa;if(this.Igc){this.rq=this.W()[Qb](T);m(this.rq,Ldb);this.vN=this.rq[x];this.W()[o](a,this.rq)}else{this.rq=a;this.vN=this.cLa}};F.L=function $Xy(){this.vN=this.rq=i;gF.C.L[z](this)};F.wX=function $Yy(a,c,d){gF.C.wX[z](this,a,c,d);if(this.jAc!=this.LEa){Ja(this.cLa,this.LEa==wB?I:ee);Ja(this.vN,this.LEa==wB?I:sd)}};var Zeb="I8";\r
18264 F.bia=function $Zy(a,c){var d=a.b();if(mfa.J()){d=this.W()[Qb](T);m(d,Zeb);Q(d,MH);if(c==this.qj()){this.rq[o](d);this.rq[o](a.b())}else{c=this.rq[cc][c*2];this.rq[Bb](d,c);this.rq[Bb](a.b(),c)}}else c==this.qj()?this.rq[o](d):this.rq[Bb](d,this.rq[cc][c])};F.jBa=function $_y(a){mfa.J()&&Sg(a.b()[pc]);Sg(a.b())};H(NIa,uh);H(WIa,uh);H(XIa,N);WIa[w].lka=function $0y(a){a[Zb]==Bz&&ZIa(this,a[y]);this[r](new XIa(a[Zb],a[y]))};WIa[w].L=function $1y(){Kf(this.Q);this.Q=i};H(lF,pB);F=lF[w];F.Zg=E("Save settings");F.Eg=E(h);F.Yc=function $4y(a,c){this.XA.set(a,c)};F.Wd=D("Kv");var afb="p_",bfb="dp";F.Ja=function $6y(a){for(var c=new Hf,d=this.XA.Sb(),f=[],g=0;g<d[u];g++){var j=d[g],n=this.XA.J(j);n==dM&&Ye(n)?f[p](j):c.set(afb+j,n);j==gN&&this.Z[hq](d8a)&&a.Ua(LD,Fi)}f[u]>0&&c.set(bfb,f);lF.C.Ja[z](this,a);dFa(a,c);a.Ne(mB);a.wl(!!this.bh)};H(mF,uh);Nx(Mx(),48,function(b){return new mF(b)},0);F=mF[w];F.rR=i;var cfb="reload";F.YLa=function $7y(){this.pQ=cfb;bJa(this)};F.N7c=function $8y(){this[r](YD);this.pQ=this.dX.x4};F.il=function $9y(){return this.dX.il()};F.Xld=function $$y(a){a=a[dq][1];nh(this.xf.ud,Gx(NE),i,k,this);if(a!=this.pQ){this.pQ=a;bJa(this)}};F.wh=B();F.txb=Ge("QDa");F.D=function $cz(){this.dX.D();if(this.rR){this.rR[Rq]||this.rR[Xk]();this.rR=i}mF.C.D[z](this)};H(pF,Jf);pF[w].L=function $dz(){this.wg&&Sg(this.wg);this.dE=this.wg=i};pF[w].gp=function $ez(a){var c=qF(this);if(uca in c)c.textContent=a;else{for(;c[nha]();)c[Nc](c[Tb]);c[o](this.dE[yb](a))}};H(rF,fF);rF[w].PNa=sw;rF[w].nIb=-1;rF[w].mIb=I;var dfb=L||Fh&&!vg(vDa);F=rF[w];F.Vh=function $fz(){rF.C.Vh[z](this);var a=this.wa;this.rq=this.W().ba(T,{className:yP});this.vN=this.rq[x];this.D5=this.W()[Qb](T);m(this.D5,zF);this.W()[o](a,this.rq);this.W()[o](a,this.D5)};F.L=function $gz(){this.D5=this.vN=this.rq=i;rF.C.L[z](this)};F.wX=function $hz(a,c,d){rF.C.wX[z](this,a,c,d&&(!dfb||this.PNa==sw));a=this.PNa==sw?I:yE;if(this.mIb!=a){this.mIb=a;if(L)this.vN.styleFloat=a;else this.vN.cssFloat=a}};\r
18265 F.J2=function $iz(a,c,d){var f=this.qj();if(f){if(a==vA){for(var g=0,j=0;j<f;j++)g+=d[this.rb(j).ea()];f=g<=c?-1:g;if(this.nIb!=f){this.nIb=f;ka(this.vN,NA(f))}}rF.C.J2[z](this,a,c,d)}};F.bia=function $jz(a,c){var d=a.b();K(d,s7a);c==this.qj()?this.rq[o](a.b()):this.rq[Bb](d,this.rq[cc][c])};F.jBa=function $kz(a){a=a.b();Ag(a,s7a);this.W()[ad](a)};H(sF,gF);F=sF[w];F.AG=0;F.zG=0;F.Zu=0;F.yG=0;F.CL=0;F.gQ=0;F.AL=0;F.BL=0;F.YHa=-1;F.gta=function $lz(){return new Bm(this.AG,this.zG,this.Zu,this.yG)};F.mK=function $mz(a){return a==vA?this.yG+this.zG+this.BL+this.gQ:this.AG+this.Zu+this.CL+this.AL};\r
18266 F.Vh=function $nz(){sF.C.Vh[z](this);Q(this.wa,this.qAa?this.qAa:SJa(this.AG,this.zG,this.Zu,this.yG,this.CL,this.gQ,this.AL,this.BL));this.W8b=this.AG;this.V8b=this.zG;this.T8b=this.Zu;this.U8b=this.yG;this.e9b=this.CL;this.d9b=this.gQ;this.b9b=this.AL;this.c9b=this.BL;this.JHa=k};\r
18267 F.Mcc=function $oz(a){var c=a[Daa],d=a.padding;this.qAa=i;var f=c||new Bm(this.AG,this.zG,this.Zu,this.yG);if(f.top<0||f[rl]<0||f[fl]<0||f[Ck]<0)e(Error(".133`"+f.top+qw+f[Ck]+qw+f[rl]+qw+f[fl]));var g=d||new Bm(this.CL,this.gQ,this.AL,this.BL);if(f.top+g.top<0||f[rl]+g[rl]<0||f[fl]+g[fl]<0||f[Ck]+g[Ck]<0)e(Error(".134"));if(c)TJa(this,c.top||0,c[rl]||0,c[fl]||0,c[Ck]||0);if(d)UJa(this,d.top||0,d[rl]||0,d[fl]||0,d[Ck]||0);if(!this.wa)this.qAa=a.yn};\r
18268 F.JXa=function $pz(a,c,d,f){this.qAa=i;var g=this.AG,j=this.zG,n=this.Zu,s=this.yG;if(Ke(a)&&!mm(a)){g=Ke(a.top)?a.top:g;j=Ke(a[rl])?a[rl]:j;n=Ke(a[fl])?a[fl]:n;s=Ke(a[Ck])?a[Ck]:s}else{g=Ke(a)?a:g;j=Ke(c)?c:j;n=Ke(d)?d:n;s=Ke(f)?f:s}if(g<0||j<0||n<0||s<0)e(Error(".133`"+g+qw+s+qw+j+qw+n));if(g+this.CL<0||j+this.gQ<0||n+this.AL<0||s+this.BL<0)e(Error(".134"));TJa(this,g,j,n,s)};\r
18269 F.U1=function $qz(a,c,d,f){this.qAa=i;var g=this.CL,j=this.gQ,n=this.AL,s=this.BL;if(Ke(a)&&!mm(a)){g=Ke(a.top)?a.top:g;j=Ke(a[rl])?a[rl]:j;n=Ke(a[fl])?a[fl]:n;s=Ke(a[Ck])?a[Ck]:s}else{g=Ke(a)?a:g;j=Ke(c)?c:j;n=Ke(d)?d:n;s=Ke(f)?f:s}if(g+this.AG<0||j+this.zG<0||n+this.Zu<0||s+this.yG<0)e(Error(".134"));UJa(this,g,j,n,s)};\r
18270 F.L=function $rz(){this.Q6a=this.T6a=this.avb=this.C4a=this.zAb=this.x4a=this.A4a=this.vAb=this.xAb=this.R6a=this.U6a=this.Okb=this.w4a=this.bvb=this.uAb=this.y4a=this.B4a=this.wAb=this.yAb=i;sF.C.L[z](this)};F.oF=function $sz(a){return this.mK(a)+sF.C.oF[z](this,a)};F.VV=function $tz(a){sF.C.VV[z](this,a);VJa(this)};F.bia=function $uz(a,c){if(c==this.qj())this.W()[o](sJa(this),a.b());else{var d=sJa(this);d[Bb](a.b(),d[cc][c])}};\r
18271 F.di=function $vz(a,c,d){VJa(this);sF.C.di[z](this,a,c,d);if(a==Wx){a=this.mK(a);c=c==-1?-1:l.max(c-a,0);if(this.YHa!=c){this.YHa=c;if(!this.Q6a)this.Q6a=sJa(this)[x];Wa(this.Q6a,NA(c))}}};F.wX=function $wz(a,c,d){if(a==vA||c==-1||c<this.mK(Wx))sF.C.wX[z](this,a,c,d);else{gBa(this,Wx,c);if(this.O3!=-1){this.O3=-1;Wa(KA(this),NA(-1))}}};F.Hpa=function $xz(a,c){if(c!=-1)c=l.max(c-this.mK(a),0);sF.C.Hpa[z](this,a,c)};F.J2=function $yz(a,c,d){if(c!=-1)c=l.max(c-this.mK(a),0);sF.C.J2[z](this,a,c,d)};_B_prog(60)}catch(e){_B_err(e)}\r
18272 \r
18273 try{H(BF,AD);var CF=new Bm(4,4,4,4);F=BF[w];F.za=function $zz(){return this.ia.rb(0)};F.LXa=function $Az(a){DF(this,this.gta(),a)};F.gta=function $Bz(){return this.ia.gta()};F.JXa=function $Cz(a){DF(this,a,this.yJa)};F.U1=function $Dz(a){this.ia.U1(a)};F.so=function $Ez(a){var c=this.ia;yA++;try{this[Nc]();c.ha(a)}finally{zA()}};lk(F,function $Fz(){return this.ia.Vp(0)});H(IKa,BD);var efb={103:106836};F=IKa[w];F.qa=FF;F.FSa=0;F.hca=i;F.u0=h;F.Iaa=i;F.xc=D(Yj);F.gqb=function $Hz(){var a=OKa(this)==i?0:500;LKa(this,a,Zf())};F.R6b=function $Iz(){this.hca=i;this.FSa=0;this.Pa()};var ffb="ERROR";F.Pa=function $Jz(){var a=Zf(),c;if(c=this.xf.ud.KS){this.Fv&&kIa(this.Fv,a)||!(c.hm()==103&&c.C0&&c.C0==1)&&this.EG(ffb,a);c=h}else c=k;c||NKa(this,a)||QKa(this,a)||this.EG(FF,a)};var bQ="tn";\r
18274 F.EG=function $Kz(a){var c=this.qa!=a;this.qa=a;a=this.qa!=FF;switch(this.qa){case ffb:var d=this.xf.ud,f=d.KS,g=d.xc();f=f.hm();var j=-1;if(g==vIa)j=d.w6();var n;if(j>0){d=Zf();n=this.a7a(j-d);LKa(this,1E3,d)}d=efb[f];n={NG:nx(f,3),xla:n,hic:this.X(bQ),io:d?Yz(this.Lb,d):i};f=this.u0?mKa(n):xKa(n);Q(this.EP.b(),f);n=this.u0?CKa(n):EKa(n);Q(this.v1.b(),n);break;case MKa:c&&SKa(this);break;case PKa:c&&RKa(this);break;case FF:default:break}this.qc(a);if(c&&a){this.EP.qe();this.v1.qe()}};\r
18275 F.NXa=function $Lz(a){IKa.C.NXa[z](this,a)&&this[r](JF)};F.nUc=function $Mz(a){if(this.qa==ffb){a=(this.u0?a==this.EP?aKa:cKa:a==this.EP?pKa:rKa)();a=fJa(a,this.Y,HKa);a+=20;return a}else return ZFa(a)};F.Wpb=function $Nz(){this.u0=this.Fv.u0;this.Pa()};var gfb="1s";F.a7a=function $Oz(a){a=l[rb](a/1E3);if(a<=1)return gfb;else if(a<90)return a+ki;else{var c=l[rb](a/60);a%=60;return c+(xj+nx(a,2))}};F.He=function $Pz(a){OKa(this)[r](new yEa(a));a[y].id==this.X(bQ)&&wIa(this.xf.ud)};\r
18276 F.D=function $Qz(){this.hca&&cA(this.hca);IKa.C.D[z](this)};H(UKa,kn);F=UKa[w];F.Rva=-1;F.z0=0;F.Fc=function $Rz(a){this.AAa=a;this.Rva==-1&&WKa(this,a)};F.ZM=function $Sz(a){var c=this.z0++;this.Sh[p](new VKa(c,a));this.ab[Rc]();return c};F.rW=function $Tz(a){for(var c=0;c<this.Sh[u];c++)if(this.Sh[c].id==a){kf(this.Sh,c);if(this.Rva==c){WKa(this,this.AAa);this.Rva=-1}return h}return k};F.MWc=function $Uz(){var a=this.Rva+1;if(a>=this.Sh[u])a=-1;if(a==-1){WKa(this,this.AAa);this.Sh[u]==0&&this.ab[qc]()}else WKa(this,this.Sh[a].ke);this.Rva=a};H(HF,xx);HF[w].wT=function $Vz(a){var c=Ii,d=Rz(this.Bc.B());im(a)||(c+=NK+a+NK+d.Sj());return c};HF[w].wT.Vd=h;H(NF,BD);yx(HF,NF);var hfb=[];F=NF[w];F.L=function $Wz(){NF.C.L[z](this);this.C_a.D();this.zcc=i};F.JD=function $Xz(){yA++;try{this.i7();var a=this.ia;lea&&a.ha(cLa(this))}finally{zA()}};F.Pic=function $Yz(){hm(this.zcc,R7a,!this.did.ps())};F.i7=B();F.ma=function $_z(){NF.C.ma[z](this);if(qga&&L&&!vg(Ij)){var a=this.Yj;this.H().w(a,mO,this.egd)}};F.egd=function $0z(){if(!this.pVb)if(!(!L||vg(Ij))){var a=lC(this.B());mC(a,this.UMc,this);this.pVb=h}};\r
18277 F.UMc=function $1z(){var a=this.ia.b();m(a,a[uc]);this.pVb=k};F.UH=function $2z(){wD(this.B());this.atc=h;var a=this.B();this.Wdc();if(this.B().eN()){a=a.J(oy);a.XFa(this.jNb.Fp());this.H().w(a,aE,this.spb)}a=this.H();this.B();if(L){var c=this.jNb.Fp();a.w(c,Tea,this.Vob);a.w(c,Uea,this.gob)}else{c=sD(this.Bd);a.w(c,lj,this.Vob,h);a.w(c,kj,this.gob,h);c=sD(this.qUa);a.w(c,lj,this.Vob,h);a.w(c,kj,this.gob,h)}a=bi(fx(Je[Ic][Yc],"//www.google.com/setgmail"));(new Image).src=a[t]();this.B().Ya()[r](GF)};\r
18278 F.Wdc=function $3z(){if(!this.Xdc){this.Xdc=h;this.H().w(OF,Ky,this.bXb)}this.bXb()};var ifb="\r";F.bXb=function $4z(){var a;a=this.B().J(Ky);var c=dLa(this.B());for(var d in c)for(var f=c[d][Cc](BOa),g=0;g<f[u];g++){var j=f[g];a.zCa.set(j,new JIa(d,j,h));a.Hxb[j[nc](0,1)]=1}a.zCa.set(ifb,new JIa(lM,ifb,void 0));a.Hxb["\r"[nc](0,1)]=1};F.spb=B();F.Vob=function $6z(){var a=this.xB;if(h!=a.Yca){a.Yca=h;a[r](IF)}};F.gob=function $7z(){var a=this.xB;if(k!=a.Yca){a.Yca=k;a[r](IF)}};F.zc=E(i);\r
18279 F.qQb=function $9z(){var a=this.zc();return a?a.md():i};F.Ox=function $$z(a,c){a=this.mw.Ox(this,this.wQb(),this.B(),a,c);return this.C_a.Tn=a};F.ZG=function $aA(){return this.C_a.ZG()};F.Ita=function $bA(){return this.C_a.Ita()};F.b3a=function $cA(){this.zc()&&fHa(this.xl.Xv)};F.BHb=B();F.fqb=B();F.Ujb=function $fA(a,c){a=this.Xta();return c==4||this.Zha&&a&&a.md()==YK&&c==3};F.Bob=function $gA(a){a=a.Pg;a.iaa==Wn&&this.Qs(a)};F.CP=i;F.Qs=Ge(Yeb);F.Epb=B();F.FTa=B();\r
18280 F.uka=function $kA(a){CD()||QBa(PBa(this.B())).tka(a.yL,a.m3b,a.o2b,a.dQb,a.F2b);this.i1b(a)};F.i1b=B();F.qTa=function $mA(){oD(this.B()).dk(this);pD(this.B()).dk(this)};F.JYc=function $nA(){this.xB.lf()};var jfb="manual";F.s0c=function $oA(){var a=this.B().J(XC);aDa(a,Zf(),jfb)};F.fcb=function $pA(a){return TD(this.B()).fcb(a)};F.YFc=function $qA(){return this.Aa.za(LC)};F.iZ=B();F.oRb=function $sA(){return Qab};\r
18281 F.Via=function $tA(a){var c=this.B();vMa(dE(c));a=this.Ox(this.oRb(),a||fea).TR;KE(a,kfb,loadTimes[0]);KE(a,lfb,loadTimes[1]);KE(a,mfb,loadTimes[2]);KE(a,nfb,loadTimes[3]);KE(a,ofb,loadTimes[4]);KE(a,pfb,loadTimes[5]);var d=0;delete hfb;var f=hA(c);if(hfb){var g=G(function(){if(d==hfb[u]){this.iZ();Mx().Kh(6)}else hfb[d++](f,g)},this);g()}else{this.iZ();Mx().Kh(6)}};H(SF,N);H(TF,N);H(fLa,N);H(function(b,a){N[z](this,nP,b);la(this,a)},N);H(YF,Jf);F=YF[w];F.H=D(KP);F.oM=Ge(KP);F.wma=E(0);F.yna=function $xA(a){this.FAb(a)};F.FAb=function $yA(a){this.na.uFb();this.ld=a};F.P5=D(XI);La(F,function $AA(){e(Error(".0"))});F.gec=function $BA(){return!!this.ld};F.wRb=E(i);H(ZF,YF);ZF[w].D=function $DA(){nh(this.ob,Hh,this.cva,k,this);nh(this.ob,Ih,this.YUb,k,this);this.ob.D();this.ob=i;ZF.C.D[z](this)};YF[w].wma=function $wA(a){var c=a.QC;if(c)if(oLa(c))return 0;if(a.gia&&!a.K8b)return 0.9;return 0.5};F=ZF[w];var cQ="rt";F.yna=function $EA(a){this.FAb(a);a.Ua(cQ,oA);this.lec(a)?this.ob[Mb](a.uc()):this.ob[Mb](a.uc(),Aj,sLa(this,a))};La(F,function $FA(a){this.qG=a;this.ob[wc](7)});\r
18282 F.cva=function $GA(a){var c=a[y];if(c.ye()){if(c.dj()[u]>0){a:{a=c.dj();a=a[Zc](a[Db](ch));var d;try{d=ix(a)}catch(f){d=new nB(this.P5(),10);this.H().bQ(d);break a}Ve(d)&&this.H().cfb(d[0]);this.H().WH()}return}this.qG=104}var g=this.qG;this.qG=0;d=c.hf();a=c.eo;var j;if(g)j=g;else if(a==6){j=c.dj();if(c=j[Kb](Neb))j=700+da(c[1],10);else j=(c=j[Kb](Oeb))?Tj+c[1]:i}j||(j=rLa(a,NaN,d));d=new nB(this.P5(),j);this.H().bQ(d)};F.YUb=function $HA(){this.H().Uba()};F.lec=function $IA(a){return a.Lib&&!a.RC};H(tLa,uh);F=tLa[w];F.uRa=0;F.dcd=function $JA(a){var c=this.xt;try{this.xt=a;a.Lc=i;a.Eg()||XBa(a);aCa(a)}finally{this.xt=c}};ua(F,function $KA(a){this.iQ.MG(a);this[r](vLa);wLa(this)});F.WH=function $LA(a){if(a==this.xt)if(!this.xt.Eg()){this.wVa.MG(this.xt);this.xt=i;this[r](vLa)}};F.tqb=function $MA(a){if(a.Eg()){if(a==this.xt){this.xt=i;this[r](vLa)}}else for(a=this.wVa.hQ();a&&a.xc()==YBa;){this.wVa.ly();a=this.wVa.hQ()}};\r
18283 La(F,function $NA(a){if(a==this.xt){a=this.xt.P5();a.xG||a[wc]()}else a.h2a=h});F.w_b=function $OA(){this.uRa++};F.vic=function $PA(){this.uRa--;this.uRa==0&&wLa(this)};F.Ya=function $QA(){return this};H(aG,Jf);var BLa=ifa.J()?3E4:12E4,ALa=ifa.J()?1E4:2E4;aG[w].L=function $RA(){if(this.MVa){this.MVa.D();this.MVa=i}if(this.Mw){this.Mw.D();this.Mw=i}aG.C.L[z](this)};aG[w].U4b=function $SA(){this.CLb=Zf()};aG[w].E5c=function $TA(){zLa(this,k)};_B_prog(61)}catch(e){_B_err(e)}\r
18284 \r
18285 try{H(bG,uh);bG[w].a9a=function $UA(a,c){var d=a.Je();this.bFa[d]|=Ke(c)?c:65535;CLa(this,a,d);this.HD<=0&&delete this.bFa[d]};bG[w].c9a=function $VA(a,c){c=a.Je()+xj+c;DLa(this,c,c);CLa(this,a,c)};bG[w].Qf=function $WA(){this.HD++;this.HD==1&&bG.C[r][z](this,FG)};var qfb=";7";\r
18286 bG[w].Mf=function $XA(){this.HD--;if(this.HD==0){for(var a=this.GEa.Sb(),c=0;c<a[u];c++){var d=a[c],f=this.GEa.J(d);f=new FLa(d,f,this.bFa);this.GEa[Pb](d);try{jx(this,d,k,f)}catch(g){rg(tg,qfb,g)}}this.bFa={};bG.C[r][z](this,ED)}else if(this.HD==-1){this.HD=0;e(Error(".135"))}};H(FLa,N);H(KLa,hy);F=KLa[w];F.L=function $YA(){this.Fh.D();KLa.C.L[z](this);if(this.g1){this.g1.D();this.g1=i}};F.tQc=h;F.cj=function $ZA(a,c){Ve(a)||(a=iya(a));if(a[u]==0||a[0]!=this.vn())return i;if(a[u]==1)return this;return jy(this,a[lb](1),c)};F.Ya=D(lO);F.Qf=function $0A(){this.Fh.Qf()};F.Mf=function $1A(){this.Fh.Mf()};F.rg=function $2A(){for(var a=this.Uc().Oa(),c=i;c=a.pop();){c.QK&&c.QK();if(c.hC()&8){c=c.Uc().Oa();for(var d=0;d<c[u];d++)a[p](c[d])}}};F.B=D(JF);F.pwb=Ge(JF);\r
18287 F.a9a=function $5A(a,c){this.Fh.a9a(a,c)};F.c9a=function $6A(a,c){this.Fh.c9a(a,c)};F.M5b=function $7A(a,c){for(var d=0;d<this.YY[u];d++)try{this.YY[d].M5b(a,c)}catch(f){}};F.N5b=function $8A(a){for(var c=0;c<this.YY[u];c++)try{this.YY[c].N5b(a)}catch(d){}};F.O5b=function $9A(a){for(var c=0;c<this.YY[u];c++)try{this.YY[c].O5b(a)}catch(d){}};F.Ypb=function $$A(a){for(var c=0;c<this.YY[u];c++)try{this.YY[c].Ypb(a)}catch(d){}};H(LLa,uh);hk(LLa[w],function $aB(a){a=typeof a==Xe?this.E9.jAa[a]:a;a!=this.XR?this.jb[bq](OLa(this,a).ARc||a.iMb):this.jb[bq](a.iMb)});LLa[w].BEa=function $bB(a){var c=this.E9.n8b[a[Wq]];if(c&&c!=this.XR){var d=this.XR;if(this.XR){var f=OLa(this,this.XR).EJ;f&&this.H8&&this.H8.daa(f)}this.XR=c;(f=OLa(this,c).EJ)&&this.H8&&KVa(this.H8,f,99);this[r](new NLa(this,d,c))}if(c)OLa(this,c).ARc=a};\r
18288 LLa[w].cCa=function $cB(a,c){var d=OLa(this,a),f=d.EJ;d.EJ=c;if(a==this.XR&&this.H8){f&&this.H8.daa(f);c&&KVa(this.H8,c,99)}};H(PLa,xx);F=PLa[w];F.D=B();F.D.Ka=h;F.ojb=B();F.ojb.ic=h;F.bQ=B();F.bQ.ic=h;F.vqb=B();F.vqb.ic=h;F.e2a=B();F.e2a.ic=h;F.J5a=B();F.J5a.ic=h;F.iX=B();F.iX.ic=h;F.dBa=B();F.dBa.ic=h;F.Eoa=B();F.Eoa.ic=h;F.bfb=B();F.bfb.ic=h;H(eG,YE);yx(PLa,eG);F=eG[w];F.ywa=h;F.D=function $nB(){if(!this.Pc){eG.C.D[z](this);this.aa.D();this.mw=i}};F.f2a=function $oB(){this.aa.e2a()||eG.C.f2a[z](this)};F.kmb=function $pB(a,c){return this.aa.bfb(a,c)};var rfb="nsc",sfb="seid";F.D2a=function $qB(){eG.C.D2a[z](this);this.aQa&&this.mw?HIa(this.mw):this.ld.Ua(rfb,1);this.vv&&tMa(this.vv);this.aQa&&this.Nhd&&!this.ld.Lib&&this.ld.Ua(sfb,Vfa)};F.zfd=function $rB(){pIa(this)};var tfb=":13",dQ="init";\r
18289 F.GAb=function $sB(){if(this.aa.ojb())bA(tfb,this.zfd,200,this);else{this.ywa&&this.ld.Rc(pd)&&this.ld.rwa&&this.ld.Rc(dQ)!=Hj&&this.aQa&&!this.Xsb&&this.ld.Ua(dQ,Hj);eG.C.GAb[z](this);this.Cuc=k}};F.WH=function $tB(){if(this.qa!=ZE)e(Error(".128"));var a=this.ld,c=eG.C.WH[z](this);if(c){if(this.ywa&&a.Rc(pd)&&a.rwa)this.ywa=k;this.aa.vqb()}return c};var eQ="err";\r
18290 F.OTa=function $uB(a){this.mw&&this.mw.Hz(eQ+a.hm(),this.ld.C0);if(this.qa!=ZE)e(Error(".129"));this.ywa&&this.ld.Rc(dQ)==Hj&&this.ld.Ua(dQ,Ah);this.aa.bQ(a)||eG.C.OTa[z](this,a)};F.NRb=function $vB(a){if(!a.yIb())return a;var c=this.zu.hQ();if(!c||!c.BIb(a))return a;if(c.Rc(W3a)||c.Rc(GA))return a;c=this.zu.ly();c.rid(a);return c};F.MUb=function $wB(a,c){if(a&&c.Rc(pd)==QN&&c.Rc(fG)!=EE){bA(tfb,G(this.Plb,this,k),50);return k}return h};\r
18291 F.UNa=function $xB(a){eG.C.UNa[z](this,a);if(this.YR.gec()&&this.ld&&this.J3){a=a[4];var c=Zf()-this.ld.NQa-this.ld.vNa();this.J3.Zma.add(a/c*8E3)}};F.b1=function $yB(a,c){eG.C.b1[z](this,a,c)};F.eec=function $zB(a){return!a.vW||DD()};F.CIa=function $AB(){if(this.ld)this.aa.J5a()||eG.C.CIa[z](this)};F.iX=function $BB(){this.aa.iX()};F.Eoa=function $CB(a){this.aa.Eoa(a)};F.dBa=function $DB(a){this.aa.dBa(a)};top._A=_A;H(SLa,YF);F=SLa[w];F.vOb=k;F.wma=function $EB(a){if(this.Shc||this.vOb)return 0;else if(this.xDc!=a.Rc(pd)){this.vOb=h;return 0}return 1};var ufb=":14";F.yna=function $FB(a){SLa.C.yna[z](this,a);this.Shc=Zf();this.nna=dA(ufb,this.Wmd,20,this)};La(F,function $GB(){this.ld=i});F.gec=E(k);\r
18292 F.Wmd=function $IB(){var a,c=k;if(top.VIEW_DATA){this.na.cfb(top.VIEW_DATA);this.ld=i;this.na.WH();this.na.Uba();top.VIEW_DATA=i;a=vfb;c=h}else if(top.VIEW_DATA_SE!=undefined&&top.VIEW_DATA_SE!=i){this.na.bQ(new nB(this.ld,700+top.VIEW_DATA_SE));this.ld=i;this.na.Uba();top.VIEW_DATA_SE=i;a=wfb;c=h}else if(Zf()-this.Shc>6E4){this.na.bQ(new nB(this.ld,101));this.ld=i;this.na.Uba();a=xfb;c=h}if(c){a&&this.vv.pb(a);if(this.nna){eA(this.nna);this.nna=i}}};\r
18293 F.D=function $JB(){if(this.nna){eA(this.nna);this.nna=i}SLa.C.D[z](this)};var jG;H(gG,uh);var VLa={},ULa=0;F=gG[w];F.Nh=i;F.xe=i;F.A_=i;F.IWc=0;F.ng=k;F.gy=k;F.Nv=k;F.c8=i;F.QQa=i;F.eo=0;F.lX=0;F.hD=i;F.nPb=i;F.y_=i;var yfb="form",zfb="utf-8";ua(F,function $KB(a,c,d,f){if(this.ng)e(Error(".136"));this.c8=a=new Sh(a);c=c?c[pl]():zj;d&&bi(a);if(!jG){jG=Aw(yfb);jG.acceptCharset=zfb;d=jG[x];Ja(d,sd);Fa(d,yd);d.top=ck(d,bMa);ka(d,Wa(d,hG));rp(d,yd);ea[Lc][o](jG)}this.Nh=jG;c==zj&&YLa(this.Nh,a.Of());f&&YLa(this.Nh,f);Op(this.Nh,a[t]());this.Nh.method=c;aMa(this)});\r
18294 La(F,function $LB(a){if(this.ng){ph(jMa(this));this.Nv=this.ng=this.gy=k;this.eo=a||7;this[r](Dj);fMa(this)}});F.L=function $MB(){this.ng&&this[wc]();gG.C.L[z](this);this.xe&&gMa(this);hMa(this);delete this.rab;this.c8=this.cZb=this.QQa=this.aZb=this.Nh=i;this.eo=0;delete VLa[this.Jb]};F.jm=D("gy");var Afb="Nv";F.ye=D(Afb);F.Eb=D(Ej);F.dj=D("QQa");F.Mdb=function $RB(){return yh(this.QQa)};var Bfb="c8";F.zRb=D(Bfb);F.Kga=function $TB(){return Owa(this.eo)};F.X1=function $UB(a){this.lX=l.max(0,a)};\r
18295 ra(F,function $VB(a){this.xe&&bda(Nh,this.xe);try{gG.C[r][z](this,a)}finally{this.xe&&cda(Nh)}});var Cfb="about:blank";F.kpb=function $WB(){if(this.xe[Nb]==Hh){nh(this.xe,Lh,this.kpb,k,this);var a;try{a=om(this.xe);if(L&&a[Ic]==Cfb&&!bp[uma]){this.Po(9);return}}catch(c){this.Po(1);return}this.Rua(a)}};F.hza=function $XB(){if(!(Ng&&iMa(this)[Ic]==Cfb)){nh(jMa(this),rj,this.hza,k,this);this.Rua(iMa(this))}};\r
18296 F.Rua=function $YB(a){this.gy=h;this.ng=k;var c;try{var d=a[Lc];this.QQa=d.textContent||d[waa];this.aZb=d[wk]}catch(f){c=1}var g;if(!c&&typeof this.rab==Se)if(g=this.rab(a))c=4;if(c)this.Po(c,g);else{this.Nv=h;this.eo=0;this[r](Hh);this[r](Mh);fMa(this)}};F.Po=function $ZB(a,c){if(!this.wab){this.ng=this.Nv=k;this.gy=h;this.eo=a;if(a==4)this.cZb=c;this[r](Hh);this[r](Kh);fMa(this);this.wab=h}};F.qfb=function $_B(a){this[r](new lMa(a))};\r
18297 F.l9a=function $0B(){if(this.y_){Eh(this.y_);this.y_=i}for(var a=0;a<this.Kva[u];){var c=this.Kva[a];if(Nh.Lf?!Nh.GY[Ye(c)?c:af(c)?bf(c):I]:h){kf(this.Kva,a);Sg(c)}else a++}if(this.Kva[u]!=0)this.y_=Dh(this.l9a,2E3,this)};F.ehc=function $1B(){if(this.ng){iMa(this);this.nPb=Dh(this.ehc,250,this)}};H(lMa,N);H(mMa,YF);F=mMa[w];F.D=function $2B(){nh(this.tv,Hh,this.mUb,k,this);nh(this.tv,Ih,this.oUb,k,this);nh(this.tv,kMa,this.nUb,k,this);this.tv.D();this.tv=i;mMa.C.D[z](this)};F.wma=function $3B(a){if(a.jHb)return 0.1;if(!a.gia)return 0.9;return 0.5};F.Zua=function $4B(){this.ld.jHb=h;this[wc](101)};F.fqa=function $5B(){if(this.QI){cA(this.QI);this.QI=i}};var Dfb=":15";\r
18298 F.yna=function $6B(a){mMa.C.yna[z](this,a);a.Ua(cQ,Yx);var c=a.Rc(fG);if(c!=wO&&c!=EE)this.QI=bA(Dfb,this.Zua,6E4,this);if(a.QC!=i)ZLa(this.tv,a.QC,a.uc(),h);else if(a.RC==i&&!a.Rc(fG))this.tv[Mb](a.uc(),zj,a.Lib);else{c=i;if(a.RC)c=a.RC;this.tv[Mb](a.uc(),Aj,h,c)}};La(F,function $7B(a){this.fqa();this.qG=a;this.tv[wc](7)});F.mUb=B();\r
18299 F.oUb=function $9B(){this.fqa();this.na.Acd();var a=this.na.osc();a&&!this.tv.ye();if(a||this.tv.ye())this.na.WH();else{if(this.qG){a=this.qG;this.qG=0}else a=rLa(this.tv.eo,this.tv.cZb,undefined);this.na.bQ(new nB(this.ld,a))}this.na.Uba()};F.nUb=function $$B(a){this.na.UIc(a[dq])};F.wRb=function $aC(){return this.tv.aZb};_B_prog(62)}catch(e){_B_err(e)}\r
18300 \r
18301 try{var mG,oMa,Efb="Shockwave Flash",Ffb="Shockwave Flash 2.0",Gfb="2.0.0.11",Hfb="application/x-shockwave-flash",Ifb="ShockwaveFlash.ShockwaveFlash.7",Jfb="$version",Kfb="ShockwaveFlash.ShockwaveFlash.6",Lfb="6.0.21",Mfb="ShockwaveFlash.ShockwaveFlash";\r
18302 (function(){function b(n){n=n[Kb](/[\d]+/g);Ia(n,3);return n[kd](He)}var a=k,c=I;if(bp[Eq]&&bp[Eq][u]){var d=bp[Eq][Efb];if(d){a=h;if(d[qr])c=b(d[qr])}if(bp[Eq][Ffb]){a=h;c=Gfb}}else if(bp[vb]&&bp[vb][u]){if(a=(d=bp[vb][Hfb])&&d[Bma])c=b(d[Bma][qr])}else try{d=new ActiveXObject(Ifb);a=h;c=b(d.GetVariable(Jfb))}catch(f){try{d=new ActiveXObject(Kfb);a=h;c=Lfb}catch(g){try{d=new ActiveXObject(Mfb);a=h;c=b(d.GetVariable(Jfb))}catch(j){}}}mG=a;oMa=c})();F=pMa[w];F.pb=function $bC(a){this.hW(a.lC())};F.jj=function $cC(a,c){this.hW(a.lC()+Qd+c)};F.zF=function $dC(a,c){this.hW(a.lC()+Qd+c)};F.hW=function $eC(a){rMa(this,a)&&this.NUa[p](a)};F.u7=function $fC(a){qMa(this,a.lC())};F.ENc=function $gC(a,c){qMa(this,a.lC()+c)};F.cma=function $hC(a,c){a=a.lC();rMa(this,a)&&this.u9.set(a,c)};Aa(F,function $iC(){Ia(this.NUa,0);this.u9[bc]()});\r
18303 var yMa=oG(Pd),wMa=nG("bf-i"),xMa=nG("bf-n"),Nfb=nG("tl-v"),Ofb=nG("tl-r"),Pfb=oG("tl-s"),Qfb=nG("tl-f"),Rfb=oG("tl-si"),Sfb=nG("cv-v"),Tfb=nG("cv-p"),Ufb=oG("cv-pfn"),Vfb=nG("cv-b"),Wfb=nG("cv-t"),Xfb=nG("cv-pa");nG("cv-fa");nG("cv-ac");\r
18304 var Yfb=oG("cd-da"),Zfb=nG("cd-ei"),agb=nG("cd-i"),bgb=nG("cd-ia"),cgb=pG("cd-tm"),dgb=nG("cd-r"),egb=nG("cd-ra"),fgb=nG("cd-f"),ggb=nG("cd-rbc"),hgb=nG("cd-ic"),igb=nG("cd-c"),jgb=nG("cd-e"),kgb=nG("co-rt"),lgb=nG("co-o"),mgb=nG("co-ra"),ngb=nG("co-f"),ogb=nG("co-p"),pgb=nG("co-d"),qgb=nG("co-so");nG("co-tm");var rgb=nG("co-mu"),k0a=pG("pf-s"),sgb=oG("pf-np"),tgb=oG("pf-nup"),ugb=oG("pf-cl"),vgb=nG("pf-r"),wgb=nG("pf-u"),xgb=nG("ma-tl-o");oG("ma-tl-s");var ygb=nG("ma-cv-o");oG("ma-cv-s");\r
18305 var zgb=nG("mt-tl-o"),Agb=nG("mt-tl-s-"),Bgb=nG("mt-cv-o"),Cgb=nG("mt-cv-s-"),Dgb=nG("la-tl-o"),Egb=nG("la-tl-s-"),Fgb=nG("la-cv-o"),Ggb=nG("la-cv-s-"),Hgb=new zE(EB,"dd-tl",h,h),Igb=pG("dd-t"),Jgb=pG("dd-c"),Kgb=nG("k-tl-en"),Lgb=nG("k-y"),Mgb=nG("k-yn"),Ngb=nG("k-yp"),Ogb=nG("k-t"),Pgb=nG("k-e"),Qgb=nG("k-cv-u"),Rgb=nG("k-tl-o"),Sgb=nG("k-c"),Tgb=nG("k-rs"),Ugb=nG("k-de"),Vgb=nG("k-cv-j"),Wgb=nG("k-cv-k"),Xgb=nG("k-cv-r"),Ygb=nG("k-cv-r-n"),Zgb=nG("k-cv-ra"),ahb=nG("k-cv-ra-n"),bhb=nG("k-cv-f"),\r
18306 chb=nG("k-cv-f-n"),dhb=nG("mh-s"),ehb=nG("mh-sw"),fhb=nG("mh-swl"),ghb=nG("mh-as"),hhb=nG("mh-cf"),ihb=nG("cm-d"),jhb=nG("cm-ud"),khb=nG("cm-cc"),lhb=nG("cm-bcc"),mhb=nG("cm-att"),nhb=nG("cm-ev"),ohb=nG("cm-ratt"),phb=nG("cm-rev"),qhb=nG("cm-ioa");nG("cm-rec");var rhb=oG("cm-fafp"),shb=nG("cm-dat"),thb=nG("mc-ht"),uhb=nG("mc-pt"),vhb=nG("mc-sw-pt"),whb=nG("mc-sw-ht");pG("bc-u-q");pG("bc-u-s");pG("bc-u-r");\r
18307 var xhb=pG("bc-c"),yhb=pG("bc-ce"),zhb=pG("bc-ne"),Ahb=pG("bc-oe"),Bhb=pG("bc-ee"),Chb=oG("bc-se"),Dhb=oG("bc-sce"),Ehb=oG("bc-pm"),Fhb=oG("bc-um"),Ghb=pG("y-me"),Hhb=pG("y-mr"),Ihb=pG("y-ms"),Jhb=nG("qc-e"),Khb=nG("qc-c"),Lhb=oG(ex),Mhb=nG("cm-ipc"),Nhb=nG("cr-ch"),Ohb=nG("cr-ml"),Phb=nG("cr-ss"),Qhb=oG("cr-sz"),Rhb=oG("cr-scl"),Shb=nG("cr-sc");nG("cr-vs");\r
18308 var Thb=nG("cml-mi"),Uhb=nG("cml-ma"),Vhb=nG("cml-pi"),Whb=nG("cml-po"),Xhb=nG("cml-off"),Yhb=nG("cml-noff"),Zhb=nG("cml-ivc"),aib=nG("cml-svc"),bib=nG("cml-sac"),cib=nG("cml-nvc"),dib=oG("cml-im"),eib=nG("cml-vrv"),fib=nG("cml-vrc"),gib=nG("cml-vnav"),hib=nG("cml-vnac"),iib=nG("cml-vuls"),jib=nG("cml-vulc"),kib=nG("cml-vulf"),lib=nG("cml-verf"),mib=nG("cml-lncc"),nib=nG("cml-lnvc"),oib=nG("cml-lsc"),pib=nG("cml-lsvc"),qib=nG("vml-lip"),rib=nG("cml-qrv"),sib=nG("cml-qrc"),tib=nG("cml-qrf"),uib=nG("cml-qsv"),\r
18309 vib=nG("cml-qsc"),wib=nG("cml-qsf"),xib=nG("cml-epc"),yib=oG("cml-esc"),zib=nG("ctb-svt"),Aib=nG("ctb-sat"),Bib=nG("ctb-ivt"),Cib=nG("ctb-ev"),Dib=nG("ctb-ea"),Eib=nG("ctb-eic"),Fib=nG("ctb-emu"),Gib=nG("ctb-eof"),Hib=nG("ctb-eun"),Iib=nG("ctb-ip");nG("crd-sv");var Jib=nG("cl-irl"),Kib=pG("cl-rld"),Lib=pG("cml-o"),Mib=pG("cml-c");nG("ce-rf");nG("ce-rfd");\r
18310 var Nib=nG("cds-vw"),Oib=nG("cds-ce"),Pib=nG("cds-econ"),Qib=nG("cds-ecof"),Rib=nG("cds-vy"),Sib=nG("cds-pysd"),Tib=nG("cds-tt"),Uib=nG("cds-invo"),Vib=nG("cds-se"),Wib=nG("cds-cl"),Xib=nG("cbp-bd"),Yib=nG("cbp-ok"),Zib=oG("cbp-e0"),ajb=oG("cbp-e1"),bjb=oG("cbp-e2"),ejb=oG("cbp-e3"),fjb=oG("cbp-e4"),gjb=oG("cbp-to");nG("l-eb");nG("l-cb");\r
18311 var hjb=oG("l-nv"),reb=oG("fn-cl"),oeb=nG("fn-c"),qeb=nG("fn-n"),peb=nG("fn-p"),meb=oG("fn-v"),ijb=nG("pc-ca"),jjb=nG("pc-c"),kjb=nG("pc-i"),ljb=nG("pc-m"),mjb=nG("pc-cn"),njb=nG("pc-cp"),ojb=nG("pc-mm"),pjb=nG("pc-r"),qjb=nG("pc-ss"),rjb=nG("pc-vp"),sjb=nG("pc-vh"),tjb=nG("pc-vb"),ujb=nG("pc-va"),vjb=nG("pc-sv"),wjb=nG("pc-nv"),xjb=nG("pc-iv"),yjb=oG("pc-im"),zjb=nG("pc-vrv"),Ajb=nG("pc-vrc"),Bjb=nG("pc-vnav"),Cjb=nG("pc-vnac"),Djb=oG("gd-r"),Ejb=oG("gd-i"),Fjb=oG("gd-d"),Gjb=oG("gd-t"),Hjb=oG("gd-s"),\r
18312 ANa=nG("ifto");nG("jsle");var Ijb=nG("qs-ns"),Jjb=nG("qs-tc"),Kjb=oG("qs-bc"),Ljb=oG("qs-b"),Mjb=nG("qs-t"),Njb=nG("qr-ns"),Ojb=nG("qr-bc"),Pjb=nG("qr-bs"),Qjb=oG("ws-as"),Rjb=oG("ws-rs"),Sjb=nG("ws-m"),Tjb=oG(kP),Ujb=nG("ws-tbe"),Vjb=nG("ws-tb"),Wjb=nG("gb-ov");oG(lP);\r
18313 var Xjb=nG("cca"),Yjb=nG("ccf"),Zjb=nG("ccbp"),akb=oG("cccf"),bkb=nG("sol-ncc"),ckb=oG("sol-ss"),dkb=nG("jsc"),ekb=nG("jsnc"),fkb=oG("r-cs"),gkb=oG("BME"),hkb=oG("BMD"),ikb=oG("BMC"),jkb=oG("BMO"),kkb=nG("rv-d"),lkb=nG("rv-c"),mkb=nG("rv-to"),nkb=nG("rv-f-r"),okb=nG("rv-f-n"),pkb=nG("rv-f-i"),qkb=nG("md-s"),rkb=nG("s-lt"),skb=oG("ed-s"),vfb=nG("ed-su"),wfb=nG("ed-e"),xfb=nG("ed-t"),tkb=nG("ed-ex"),ukb=nG("ed-ne"),vkb=nG("up-oum"),wkb=nG("up-oop"),xkb=nG("up-oapd"),ykb=nG("up-ofd"),zkb=oG("aqf-s"),\r
18314 Akb=oG("aqf-m"),Bkb=oG("aqf-n"),Ckb=oG("aqf-o"),Dkb=oG("aqf-b");H(zMa,Jf);F=zMa[w];var Ekb="jsm",fQ="script",Fkb="text/javascript";F.ySc=function $jC(a,c,d,f,g,j){c=!!j;d=(new Sh).ka(Oj,Pj).ka(pd,Ekb).ka(YP,a[kd](wj)).ka(rd,ti).ka(LD,Fi);c&&d.ka(ai,Yf());c=d[t]();if(kga){a=lx(fQ);a.src=c;za(a,Fkb);ea[Lc][o](a)}else{d=new Gh;this.Q.w(d,Mh,G(this.zka,this,d,a,f),k,i);this.Q.w(d,Kh,G(this.J0,this,d,a,f),k,i);this.Q.w(d,Cj,G(this.c9,this,a,g),k,i);this.Q.w(d,Ih,d.D,k,d);d.X1(3E4);d[Mb](c)}};var Gkb="JavaScript",Hkb="var _et_ = 1;";\r
18315 F.zka=function $kC(a,c,d){a=a.dj();if(Nf(a,"Google Inc.\n"))try{if(Je[Eaa])Je[Eaa](a,Gkb);else if(Je.eval){if(r4a==i){Je.eval(Hkb);if(typeof Je._et_!="undefined"){delete Je._et_;r4a=h}else r4a=k}if(r4a)Je.eval(a);else{var f=Je[yc],g=f[Qb](fQ);za(g,Fkb);g.defer=k;g[o](f[yb](a));f[Lc][o](g);f[Lc][Nc](g)}}else e(Error(".1"))}catch(j){d(8001)}else d(8001)};F.J0=function $lC(a,c,d){d(a.hf())};F.c9=function $mC(a,c){c()};F.D=function $nC(){zMa.C.D[z](this);this.Q.D()};_B_prog(63)}catch(e){_B_err(e)}\r
18316 \r
18317 try{var BMa,gQ;H(AMa,xi);Xw(O.S(),Kd).ym(AMa);var Ikb="GG_iframeFn",Jkb="root",Kkb=":11",Lkb=":12";\r
18318 AMa[w].tb=function $oC(){var a=new lD;gQ=this.V=a;O.S().Zxa=a;var c=O.S();c.uHa=h;this.jVc=new zMa;c.Bxa=this.jVc;a[kq](Wx,new NIa(a));c=new IIa(a);a[kq](Ky,c);c=new YJa(a);a[kq](Cz,c);var d=c.J3;c=CMa(this,d,c.Fv,h,Ikb);c.aQa=h;d=CMa(this,d,i,k);a[kq](ey,new aya(c,d,new tLa(a)));d=Uh(new Sh(Mj),I)[t]();a.Ev.tod=d;d=new jC(2E4);a[kq](kC,d);d=new aG(d);var f=new KLa(Jkb,d),g=Cx(a);if(g.Aa)e(Error(".48"));g.Aa=f;f.pwb(a);new rya(f);f=this.V;g=new mza(sea);f[kq](Hz,g);f=new Iz(a);a[kq](Qz,f);g=new wy(a);\r
18319 a[kq](xy,g);Jz(f,866)&&yIa(c);Jz(f,718)&&QLa(c,h);f=new pMa;a[kq](dg,f);g=new sAa(a);a[kq](Sz,g);if(!d.MVa){g=new nC(Kkb,1,6E4,d.E5c,d);gDa(d.Cu,g);d.MVa=g;d.Mw=new aA(Lkb,2E4);ih(d.Mw,yj,d.U4b,k,d);d.Mw[Rc]();d.U4b()}c.vv=f;ME.pwb(a)};AMa[w].Y0b=B();var hQ="12",Mkb=new sG([Tj,hQ],Hj),Nkb="1d",iQ="4",Okb=new sG([Pj,Nkb,Tj,"1c",hQ,"16","13","14"],iQ,[Mkb]),jQ="3";new sG([Tj,hQ,"16","17","18","1a"],jQ,[Mkb]);var Pkb=new sG([Pj,iQ,Tj,Ph,"1c",hQ,"13","14","16","17","19",Pd,"1e","1b"],Pj,[Mkb,Okb]);Ha(sG[w],function $qC(){return this.Jb?ag+this.Jb:this.uE[kd](wj)});\r
18320 Sa(sG[w],function $rC(a){if(this.BKb[bd](a))return h;if(!this.s9a)this.s9a=new cg;if(this.s9a[bd](a))return k;var c=FMa(this),d=FMa(a);if(oba(d,c[bd],c)){this.BKb.add(a);return h}else{this.s9a.add(a);return k}});H(uG,uh);F=uG[w];F.oja=10;F.mHa=h;F.GGa=k;F.Iod=k;F.li=D(ko);ya(F,function $tC(a){if(a[y]==this.Kc)switch(a[Zb]){case GMa:this.mU(a.Kn);break;case nj:this.vI();break;case HMa:LMa(this);break;case tG:KMa(this);break}});F.Zaa=function $uC(a,c){if(this.pz!=a){this.pz=a;this.wj.ula(this.pz,this.oja,G(this.zlb,this),c);LMa(this)}};F.vj=function $vC(){return this.Kc.Ib()};F.mU=function $wC(a){this.Hy=a;this.Kc.mU(a);return vG(this,a)!=-1};var kQ="update";\r
18321 F.vI=function $xC(){var a=vG(this,this.Hy);if(a!=-1){a=this.Rg[a];var c=this.JF.yaa(a);this.nw();if(!c){this[r]({type:kQ,Kn:a});this.Iod&&this.JF[mr](h)}return h}else{this.nw();this[r]({type:kQ,Kn:i});return k}};F.nw=function $yC(){this.Hy=-1;this.pz=i;this.aC+=this.Rg[u];this.Rg=[];ba[gb](this.ZD);this.ZD=i;this.Kc.nw()};F.L=function $zC(){uG.C.L[z](this);this.Kc.D();this.JF.D();this.wj=i};\r
18322 F.zlb=function $AC(a,c,d){if(this.pz==a){a=d?vG(this,this.Hy):i;this.aC+=this.Rg[u];this.Rg=c;d=[];for(var f=0;f<c[u];++f)d[p]({id:this.aC+f,data:c[f]});this.Kc.kub(d,this.pz,this.zf);if(this.mHa&&d[u]!=0)this.mU(a!=i?this.aC+a:this.aC);else this.Hy=-1}};F.Wr=function $BC(){var a=this.JF;a.Wr[cd](a,arguments)};F.lw=function $CC(){var a=this.JF;a.lw[cd](a,arguments)};H(BG,Jf);F=BG[w];F.L0a=h;F.Zbb=h;F.Uic=k;F.xcc=h;F.gwb=h;F.Ul=i;F.eL=I;F.b3=k;F.MWa=k;F.mpd=h;var Qkb="kd";F.zT=D(Qkb);F.Ca=function $EC(){return this.Ul[q]};F.Fa=function $FC(a){pa(this.Ul,a)};F.QZ=function $GC(){return yG(this.Ul)};F.Iu=function $HC(a){wG(this.Ul,a);zG(this.Ul,a)};F.Wr=function $IC(){for(var a=0;a<arguments[u];a++){var c=arguments[a];gn(c,yo,h);this.tw.w(c,lj,this.dx);this.tw.w(c,kj,this.Xo);this.Ul||this.Aoa.w(c,ij,this.k5b)}};\r
18323 F.lw=function $JC(){for(var a=0;a<arguments[u];a++){var c=arguments[a];c==this.Ul&&this.Xo();this.tw.hb(c,lj,this.dx);this.tw.hb(c,kj,this.Xo);this.Ul||this.Aoa.hb(c,ij,this.k5b)}};\r
18324 F.yaa=function $KC(a,c){if(Ke(c)?c:this.Jja){c=cNa(this,this.Ca(),this.QZ());var d=dNa(this,this.Ca());a=a[t]();this.bid[cb](a)||(a=aia(a)+this.HAc);if(this.L0a){if(c!=0&&!im(d[c-1]))a=J+a;if(c<d[u]&&!im(d[c+1]))a+=J}if(a!=d[c]){d[c]=a;this.Fa(d[kd](I));for(var f=a=0;f<=c;f++)a+=d[f][u];this.Ul[Ek]();this.Iu(a)}}else this.Fa(a[t]());this.MWa=h;return k};F.L=function $LC(){BG.C.L[z](this);this.tw.D();delete this.tw;this.Aoa.D();this.Aoa=i};\r
18325 F.Qo=function $MC(a){switch(a[Sb]){case 40:if(this.kd.vj()){this.Emb();a[zb]();return h}else if(!this.Jja){this[mr](h);a[zb]();return h}break;case 38:if(this.kd.vj()){this.Imb();a[zb]();return h}break;case 9:this[mr]();if(this.kd.vI()&&this.jcd){a[zb]();return h}break;case 13:this[mr]();if(this.kd.vI()){a[zb]();return h}break;case 27:if(this.kd.vj()){this.kd.nw();return h}break;case 229:if(!this.b3){if(!this.b3){this.tw.w(this.Ul,jj,this.qka);this.tw.w(this.Ul,Zi,this.ql);this.b3=h}return h}break;\r
18326 default:if(this.ab&&!this.mpd){this.ab[qc]();this.ab[Rc]()}}return aNa(this,a)};F.wfb=E(k);F.dx=function $OC(a){this.Aoa.wb();this.kd&&LMa(this.kd);if(a[y]!=this.Ul){this.Ul=a[y]||i;if(this.ab){this.ab[Rc]();this.tw.w(this.ab,yj,this.cQ)}this.eL=this.Ca();this.sc.Pe(this.Ul);this.tw.w(this.sc,jn,this.KC);L&&this.tw.w(this.Ul,Zi,this.b5b)}};\r
18327 F.Xo=function $PC(){if(this.Ul){this.tw.hb(this.sc,jn,this.KC);this.sc[Ik]();this.tw.hb(this.Ul,jj,this.wfb);L&&this.tw.hb(this.Ul,Zi,this.b5b);this.b3&&bNa(this);this.Ul=i;if(this.ab){this.ab[qc]();this.tw.hb(this.ab,yj,this.cQ)}this.kd&&KMa(this.kd)}};F.cQ=function $QC(){this[mr]()};F.k5b=function $RC(a){this.dx(a)};F.KC=function $SC(a){this.Kia=a[Sb];this.kd&&this.Qo(a)};F.ql=function $TC(){this.b3&&this.Kia!=229&&bNa(this)};F.qka=function $UC(a){if(this.b3&&(a[Sb]==13||a[Sb]==77&&a[Bc]))bNa(this)};\r
18328 F.b5b=function $VC(a){aNa(this,a)};Qp(F,function $WC(a){if(a||this.Ul&&this.Ca()!=this.eL){if(a||!this.MWa){a=this.L7b();if(this.kd){this.kd.zf=this.Ul;this.kd.Zaa(a,this.Ca())}}this.eL=this.Ca()}this.MWa=k});F.L7b=function $XC(){var a=this.QZ(),c=this.Ca();a=dNa(this,c)[cNa(this,c,a)];return this.gic?String(a)[mb](this.gic,I):a};F.Imb=function $YC(){return this.Uic?IMa(this.kd):JMa(this.kd)};F.Emb=function $ZC(){return this.Uic?JMa(this.kd):IMa(this.kd)};H(CG,uh);var oNa=0;F=CG[w];F.b=D(eo);F.kub=function $0C(a,c,d){this.pz=c;this.Rg=a;this.KK=0;this.uZa=Zf();this.zf=d;this.xx=[];this.cp()};F.nw=function $1C(){this.zf&&bwa(this.zf,i);if(this.yg){this.yg=k;Wm(this.wa,k)}};F.Nc=function $2C(){if(!this.yg){this.yg=h;Wm(this.wa,h)}};F.Ib=D("yg");\r
18329 F.Sgb=function $4C(a){this.KK>=0&&Ag(this.xx[this.KK],this.JFa,this.PZb);this.KK=a;if(a>=0&&a<this.wa[cc][u]){a=this.xx[a];K(a,this.JFa,this.PZb);this.zf&&bwa(this.zf,a);var c=this.wa,d=Nm(a),f=Nm(c),g=Dva(c),j=d.x-f.x-g[Ck];d=d.y-f.y-g.top;f=c[Wc]-a[ql];c.scrollLeft+=l.min(j,l.max(j-(c[vc]-a[xk]),0));c.scrollTop+=l.min(d,l.max(d-f,0))}};F.mU=function $5C(a){if(a==-1)this.Sgb(-1);else for(var c=0;c<this.Rg[u];c++)if(this.Rg[c].id==a){this.Sgb(c);return}};F.gdc=function $6C(a){K(a,this[uc])};\r
18330 var lQ="option";\r
18331 F.cp=function $7C(){nNa(this);if(this.v_a)Fa(this.wa[x],yd);Ia(this.xx,0);this.ya.ZA(this.wa);if(this.xea&&this.xea.eb)this.xea.eb(this,this.wa,this.Rg,this.pz);else{var a=i;um(this.Rg,function(c){c=c;var d=this.pz,f=this.ya.ba(T,{className:this.yBa,id:"goog-acri-"+oNa++});fn(f,lQ);this.xea&&this.xea.WL?this.xea.WL(c,d,f):this.qWa(c,d,f);d&&this.cqd&&rNa(this,f,d);K(f,this.yBa);this.xx[p](f);c=f;this.v_a?this.wa[Bb](c,a):this.ya[o](this.wa,c);a=c},this)}if(this.Rg[u]==0)this.nw();else{this.Nc();this.S8b(this.wa);\r
18332 this.If();an(this.wa,h)}};var Rkb="LEFT",Skb="RIGHT";F.If=function $8C(){if(this.zf&&this.XL){var a=Nm(this.zf),c=Tm(this.zf),d=Tm(Lm(this.zf)),f=Tm(this.wa);a.y=this.v_a?a.y-f[id]:a.y+c[id];if((this.Hfd||a.x+f[ib]>d[ib])&&this.ekb!=Rkb){a.x=a.x+c[ib]-f[ib];this.ekb=Skb}else this.ekb=Rkb;Qm(this.wa,a);if(this.v_a)Fa(this.wa[x],ud)}};\r
18333 F.L=function $9C(){CG.C.L[z](this);if(this.wa){nh(this.wa,P,this.sj,k,this);nh(this.wa,fj,this.CH,k,this);nh(this.ya.cb(),P,this.fUb,k,this);nh(this.wa,Xi,this.BK,k,this);this.ya[ad](this.wa);this.wa=i;this.yg=k}delete this.mh};F.S8b=function $$C(a){if(Fh&&Qi){ka(a[x],I);rp(a[x],ud);ka(a[x],a[xk]);rp(a[x],GA)}};F.qWa=function $aD(a,c,d){Q(d,Wf(a[dq][t]()))};F.sj=function $bD(a){var c=sNa(this,a[y]);c>=0&&this[r]({type:nj,Kn:this.Rg[c].id});a[Ec]()};F.CH=function $cD(a){this[r](HMa);a[Ec]();a[zb]()};\r
18334 F.fUb=function $dD(){this[r](tG)};F.BK=function $eD(a){a=sNa(this,a[y]);if(a>=0)Zf()-this.uZa<300||this[r]({type:GMa,Kn:this.Rg[a].id})};_B_prog(64)}catch(e){_B_err(e)}\r
18335 \r
18336 try{H(tNa,xx);tNa[w].Ofb=B();tNa[w].Ofb.Ka=h;H(EG,uG);yx(tNa,EG);EG[w].oja=15;var mQ="email",Tkb=[mQ];F=EG[w];F.ula=function $gD(a,c,d){this.zWa({ce:a,pm:c,uC:h,YE:h,Alb:1,ZOb:Tkb,fS:this.XX,filter:this.Nfa,eia:h},G(this.Reb,this,d))};F.Reb=function $hD(a,c,d,f,g){a(g.ce,c)};F.zWa=function $iD(a,c){if(!this.l4){this.l4=qG(this.V);if(!this.l4){c(nQ,oQ,i,a,4);return}}if(this.PB){this.PB.tf();this.PB=i}this.PB=this.l4.Lq(a,c)};var pQ="ah";\r
18337 F.PJa=function $kD(){var a=new CG(this.Bd.Zf,this);a.XL=h;m(a,pQ);a.Nc=function $jD(){CG[w].Nc[z](a);uNa[z](a)};return a};F.Iqa=function $lD(){return new BG(UMa,Vf)};F.Wr=function $mD(){this.Ve.Wr[cd](this.Ve,arguments)};F.lw=function $nD(){this.Ve.lw[cd](this.Ve,arguments)};var Ukb="an",Vkb=" ap",Wkb='<div class="ai"><div class="aj"></div></div>',qQ="ao";\r
18338 F.WL=function $oD(a,c,d){c=oD(this.V);var f=a[dq][jb],g=!!(a[dq].vPb&1),j=I;if(c){a=a[dq].Rb();j=I;var n=k;if(a){j=c.KE(a);n=c.sa.SK(a)}c={F_:n,Kja:n?Ukb:LD,Hb:j,Te:f,qya:g};f=new U;f[R](X,S7a,c.qya?Vkb:I,W,c.F_?Wkb:I,X,NL,wl,yHa,J,c.Hb,xF,c.Kja,W,V(c.Te),II);j=f[t]()}else{c={Te:f,qya:g};f=new U;f[R](X,qQ,c.qya?Vkb:I,W,V(c.Te),Z);j=f[t]()}Q(d,j)};F.vI=function $pD(){var a=vG(this,this.Hy);if(a!=-1){this.aa.Ofb(a,this.Rg);a=this.Rg[a];if(a.Uma){a.Uma();return h}}return EG.C.vI[z](this)};H(wNa,BB);var kfb=HG(Xx),lfb=HG(RE),mfb=HG(oA),nfb=HG("jl"),ofb=HG(ki),pfb=HG(ii);var Xkb="hist_frame",Ykb="sound_frame";Ie("_B_init",function(b){b=df(pFa,b[yc],[Xkb,Ykb,Kdb],df(zNa,b),1E4);if(Xj.ob)Xj.qS=b;else b()},void 0);F=BNa[w];F.Bb=D(NO);F.Ay=D("Rf");F.MT=D("eka");var Zkb="HY";F.wwb=Ge(Zkb);var alb="num",blb="cont";F.Ja=function $uD(a){a.Ii(this.Ea);a.Ua(xC,this.Rf);a.Ua(alb,this.eka);this.HY&&a.Ua(blb,this.HY)};var clb=" start=",dlb=" num=";Ha(F,function $vD(){return this.Ea[t]()+clb+this.Rf+dlb+this.eka});var elb="h4",ENa=[elb,ON,"vem",TP,"gmail_nodisplay"],flb="h5",glb="im",DNa=mf(ENa,flb,glb),RNa=/^(DIV|TR|LI|FORM|HR)$/,PNa=/^(P|UL|OL|BLOCKQUOTE|H\d|PRE|XMP)$/,VNa=/[ \t\f\r\n\u200B]+/g,WNa=/^[ \t\f\r\n\u200B]+|[ \t\f\r\n\u200B]+$/gm,SNa=/\u200B+/g,TNa=/\r\n/g,UNa=/\r+/g;CNa[w].jh=function $wD(){return this.ngc[kd](I)};H(LG,bo);LG[w].dD=function $xD(a){this.mAa=a;this.Ib()&&this.If()};LG[w].Kj=function $yD(a){this.Jv=a||undefined;this.Ib()&&this.If()};LG[w].If=function $zD(){if(this.Jv){var a=!this.Ib()&&this.Ga()!=ela,c=this.b();if(a){Fa(c[x],yd);Wm(c,h)}this.Jv.If(c,this.mAa,this.jja);a&&Wm(c,k)}};H(UG,nn);var EOa=[zOa,tl];F=UG[w];F.D=function $AD(){if(!this.Pc){UG.C.D[z](this);this.na.D();this.na=i;this.Ha.D();this.Ha=i}};F.Nc=function $BD(){var a=this.Y,c=this.X(Kd),d=this.X(Ph);Q(this.Ha.b(),wOa({ijd:Yz(this.Lb,6594),Imd:c,p6a:d,uq:LOa(this)}));var f=a.cb();this.na.w(f,ij,this.i5c,h);this.na.w(f,fj,this.mka);this.na.w(a.b(c),P,this.Yb);this.na.w(a.b(d),P,this.Yb);this.Ha.ra(h);this.Ha.b()[Ek]()};F.Yb=function $CD(){this.na.wb();this.Cb.lf();this.Ha.ra(k)};F.i5c=function $DD(){this.Yb()};\r
18339 F.mka=function $ED(a){Zg(this.Ha.b(),a[y])||this.Yb()};\r
18340 var MOa=String[rq](17)+"+s",hlb={title:"Jumping",bq:[V4a,W4a,X4a,Y4a,Z4a,a5a]},ilb={title:"Navigation",bq:[eM,["PREV/NEXT","Newer/older conversation"],["OPEN|Enter","Open conversation; collapse/expand conversation"],["PREVMSG/NEXTMSG","Read previous/next message"]]},jlb={title:"Application",bq:[P4a,Q4a,U4a,n5a]},klb="Actions",rQ={title:klb,bq:[KG,hM,R4a,o5a,iM,jM,kM,mM,nM,oM,pM,qM,rM,i5a,["Tab>Enter","Send mail"],h5a,["REMOVE_LABEL_AND_PREV/REMOVE_LABEL_AND_NEXT","Remove conversation from current view and go previous/next"],\r
18341 sM,tM,l5a,m5a,[FOa,"Save draft"]]},NOa=[[hlb,{title:"Threadlist selection",bq:[b5a,c5a,d5a,e5a,f5a,g5a]},ilb,jlb],[rQ]];OOa[w].kc=function $FD(){var a=[];a[p](QOa(this.CQc));a[p](QOa(this.wQc));a[p](QOa(this.kPc));a[p](QOa(this.lPc));a[p](QOa(this.jPc));return a};var llb='px;" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>',mlb='<embed id="%s" src="%s" style="position:absolute;top:'+(Si?Hj:Ah)+"px;left:"+(Si?Hj:Ah)+"px;height:"+(Si?Hj:"100")+"px;width:"+(Si?Hj:"100")+llb;H(cPa,EC);var nlb="Unsubscribe and report spam",olb="Unsubscribe from ",plb="Unsubscribe from these lists?";cPa[w].Jc=function $GD(){this.oh((new DC).set(Cz,nlb,h).set(VE,vWa).set(dx,vP,k,h));var a=Yz(this.Lb,80405);if(this.qGa[u]==1){this.Fc(olb+(this.qGa[0]+Kj));this.xb(VOa({name:this.qGa[0],tc:a}))}else{this.Fc(plb);this.xb(bPa({YX:this.qGa,tc:a}))}};var qlb={};qlb.ix_cps=250;zx(dPa,pya);dPa[w].CJa=function $HD(a){if(a==By)return new ry(By,this.sAa);return i};var rlb="cm2/";dPa[w].KMa=function $ID(a){return(a=Mf(a,rlb)?a[lb](4):i)?qlb[a]:i};dPa[w].Hwa=E(k);var ePa=i;gH.vC(N);H(iH,uh);iH[w].ah=k;iH[w].nI=k;iH[w].kec=k;H(hPa,N);F=iH[w];var slb="onunload",tlb="embed",ulb="plugin";F.tb=function $KD(){if(L)try{ba[vaa](slb,G(this.Mra,this));this.ec=new ActiveXObject("GoogleTalk.Plugin")}catch(a){this.ec=i}else if(Je[gd])if(bp[vb]["application/googletalk"]){var c=this.ya.cb()[Qb](tlb);c.id=ulb;Ba(c,ulb);ka(c,1);Wa(c,1);za(c,"application/googletalk");this.ya.cb()[mc][o](c);this.ec=c}else this.ec=i;else this.ec=i;this.ec&&this.Bsa();return!!this.ec};\r
18342 F.Bsa=function $LD(){if(!this.ah)if(this.Zva<2E4){Dh(this.Bsa,2E3,this);this.Zva+=2E3;try{this.ec.onmessage=G(this.bIc,this)}catch(a){}}else iPa(this)};var vlb="of-msg";ua(F,function $MD(a){if(this.ah){try{this.ec[Mb](a)}catch(c){return}this[r](new gH(vlb,a))}});var wlb="f-connect",xlb="f-ready",ylb="f-dead",zlb="jmidata";\r
18343 F.bIc=function $ND(a){if(!this.ah)this.ah=h;a=new gH(jH,a);if(a.ck==wlb){if(!this.F6a)this.F6a=Dh(this.gcc,1E4,this);this.G6a[p](hH(a).pop())}else{if(a.ck==xlb){this.nI=h;Eh(this.F6a);this.F6a=i;this.G6a[p]({iDd:h});this.gcc();zf(this.Vxa,{jid:this.Zv,domain:ea[mq],useragent:ug(),pluginversion:this.ec[Za],renderer:this.gz.U5()});var c=fH(this.gz);Ue(c)&&c.GU()&&zf(this.Vxa,{o3dVersion:c.Cy()});this[Mb](zh([kH,2,this.Vxa]))}else if(a.ck==ylb){this.nI=k;iPa(this)}else if(!this.kec&&a.ck==zlb)return;\r
18344 this[r](a)}};F.hsa=Ge("kec");F.Kl=D(pQ);F.Mra=function $QD(){this.ec=i};F.D=function $RD(){if(!this.xga()){this.Mra();iH.C.D[z](this)}};F.gcc=function $SD(){this[r](new hPa(this.G6a))};_B_prog(65)}catch(e){_B_err(e)}\r
18345 \r
18346 try{H(lH,uh);H(jPa,N);lH[w].CZ=0;kPa.vC(N);lPa.vC(N);F=lH[w];F.tb=function $TD(){if(!this.z7){this.HL=new iH(this.Zv,this.gz,i,this.Vxa);this.CZ=0;if(this.HL.tb()){Dh(this.Dwc,25E3,this);if(!this.z7){this.HL.dk(this);this.Q.w(this.HL,jH,this.Sua);this.z7=h}}else{this.Mra();oPa(this)}}};F.Mra=function $UD(){if(this.HL){this.HL.D();this.HL=i}};F.Dwc=function $VD(){this.CZ==0&&oPa(this)};F.vk=function $WD(){return this.z7&&this.CZ==1};F.GU=function $XD(){return!!this.HL};\r
18347 F.c7=function $YD(){var a=this.lA();a=a?a[4]:vPa(this);if(a.caps)return!!(a.caps&8);return k};F.qY=function $ZD(){return!!(mPa(this)&2)};F.Mpa=function $_D(){return!!(mPa(this)&1)};var sQ="nf",Alb="termall";\r
18348 F.Sua=function $0D(a){if(a.ck==kH){a=hH(a);if(!a[1]||a[1][Db](sQ)<0){this.ZI=a;this.ZI[4]||(this.ZI[4]=vPa(this));this.ZI[4].clientver=1;Ke(this.ZI[4].renderer)||(this.ZI[4].renderer=1);this.ZI[4].browserRenderer=this.gz.U5();if(mG)this.ZI[4].flashVersion=oMa;if(Ue(fH(this.gz)))this.ZI[4].o3dVersion=fH(this.gz).Cy()}oPa(this)}else if(a.ck==mH)this[r](new lPa(hH(a)));else if(a.ck==Alb)this[r](Jd);else if(a.ck==ylb)this.iDa=this.ZI=i;else if(a.ck==KD){this.iDa=hH(a)[1];this[r](new jPa(wPa(this)))}};\r
18349 var Blb="0.0.0";F.lA=function $1D(a){var c;if(!this.ZI||this.ZI[1]==I)c=[kH,nPa,Blb,1,vPa(this)];else{c=this.ZI[lb]();if(!(this.gz.U5()&mPa(this,c))){c[1]=nPa;c[2]=Blb;c[4].os=uPa(this)}}return a?zh(c):c};F.wy=function $2D(){if(!this.iDa)return 0;switch(this.iDa.callType){case Bz:return 3;case Kd:return 1;default:return 0}};F.hsa=function $3D(a){this.HL&&this.HL.hsa(a)};F.D=function $4D(){if(!this.xga()){this.Q.D();this.Q=i;this.HL&&this.Mra();lH.C.D[z](this)}};H(oH,oB);oH[w].HNa=D("Wqd");H(xPa,xx);F=xPa[w];F.Vr=B();F.Vr.ic=h;F.Rca=B();F.Rca.ic=h;F.D=B();F.D.Ka=h;H(yPa,Jf);yx(xPa,yPa);F=yPa[w];F.Vr=function $9D(a,c,d){this.aa.Vr(a,c,d)||KVa(pH(this,d),a,c)};F.Rca=function $$D(a,c,d,f){this.aa.Rca(a,c,d,f)||LVa(pH(this,f),a,c,d)};F.BQ=function $aE(a,c){pH(this,c).daa(a)};F.Hp=function $bE(a){var c=zPa(this,a);return c?c.wH(a):i};F.L=function $cE(){this.s0=i;this.aa.D()};H(BPa,uh);F=BPa[w];F.cCa=Ge("Xda");F.Ad=function $eE(a){if(a.Wd()){this.gr&&this.gr.D();this.gr=a;DPa(this)}else this.IK()};F.IK=function $fE(){if(this.gr){this.IB();EPa(this);this.gr&&this.gr.D();this.gr=i}DPa(this,h)};F.Mna=function $gE(){var a=this.gr;a&&this.Xda&&this.Xda.Ad(a,a.vH());EPa(this)};F.ZK=function $hE(){return!!this.v_};F.Ox=function $iE(){if(this.qa==2)this.qa=3};F.Nxa=function $jE(){if(this.qa==1)this.Ad(this.Vrb[jd](0,1)[0]);else this.qa==3&&this.IK()};\r
18350 F.IB=function $kE(){this.v_&&cA(this.v_);this.v_=i};F.L=function $lE(){BPa.C.L[z](this);this.IB();EPa(this);this.gr&&this.gr.D()};H(uH,Gy);var GPa={},f1a=new Hf({group:ce});va(uH[w],E("Group"));var Clb="/group=";uH[w].Xs=function $nE(){return this.Ga()+Clb+this.yr};uH[w].FL=vN;uH[w].Qb=E(ey);H(vH,AD);F=vH[w];F.md=Me;F.TO=Me;F.ej=Me;F.sK=function $pE(){var a=[];this.ej(a);return a};F.Bo=E(k);F.ln=E(k);F.gY=E(k);F.Df=Me;F.Wb=Me;F.X_a=function $tE(){vC(this.Cb,0)};F.EIb=E(h);F.Jpa=E(h);F.Qh=Me;Bp(F,Me);var Dlb=" type:";Ha(F,function $wE(){return vj+fg(this[Sk])+Dlb+this.md()+wh});H(wH,dF);F=wH[w];F.Lca=function $xE(a,c){for(var d=0;d<a[u];d++)a[d].qc(k);wH.C.Lca[z](this,a,c)};F.Vp=function $yE(a){var c=this.rb(a);yA++;try{var d=wH.C.Vp[z](this,a);if(d&&c==this.Wx)this.Wx=i}finally{zA()}return d};F.Q3=function $zE(a){if(a==vA)return k;var c=this.Wx;if(c)if(!JA(c,a)||!jBa(c,a))return k;return h};F.oF=function $AE(a){var c=this.Wx;if(!c)return 0;var d=c.KT(a),f=c.WZ(a),g=c.rK(a);if(JA(c,a))return LA(c,a);if(g==-1)return l.min(l.max(LA(c,a),d),f);return d};\r
18351 F.VV=function $BE(a){var c=this.Wx;c&&kBa(c,a);MA(this,a,-1)};F.di=function $CE(a,c,d){wH.C.di[z](this,a,c,d);d=this.Wx;var f=this.qj();if(d){AA[p](d);YAa(a,c,AA);Ia(AA,0);var g=BA[a][d.ea()];d.ip(a,g,a==vA&&c!=-1&&g==c)}for(c=0;c<f;c++){g=this.rb(c);g!=d&&g.ip(a,0,h)}};H(yH,uh);yH[w].Lf=k;yH[w].BRa=k;yH[w].Ry=i;var zH=L&&ea.documentMode>=8||Fh&&vg("1.9.2")||Jg&&vg("532.1");F=yH[w];F.dja=i;F.L=function $DE(){yH.C.L[z](this);this.Q.D();this.Ac(k)};var Elb="pageshow";\r
18352 F.Ac=function $EE(a){if(a!=this.Lf)if(L&&!zH&&!this.KKa)this.dec=a;else if(a){if(Ng)this.Q.w(this.dg[yc],Flb,this.W9c);else Fh&&this.Q.w(this.dg,Elb,this.hx);if(zH&&this.lca){this.Q.w(this.dg,Xea,this.L1c);this.Lf=h;this[r](new RPa(AH(this)))}else if(!L||this.KKa){this.Q.w(this.ab,yj,this.rJ);this.Lf=h;if(!L)this.Ry=AH(this);this.ab[Rc]();this[r](new RPa(AH(this)))}}else{this.Lf=k;this.Q.wb();this.ab[qc]()}};F.j4b=function $FE(){this.KKa=h;this.tva[q]&&BH(this,this.tva[q],h);this.Ac(this.dec)};\r
18353 F.hx=function $GE(a){if(a.pj.persisted){this.Ac(k);this.Ac(h)}};F.L1c=function $HE(){var a=this.Mga(this.dg);a!=this.Ry&&this.Pa(a)};F.Zaa=function $IE(a,c){QPa(this,a,k,c)};F.Mga=function $JE(a){a=a[Ic][Yc];var c=a[Db](Lj);return c<0?I:a[Zc](c+1)};F.gma=function $KE(a,c){a=this.GD+(a||I);var d=this.dg[Ic];if(a!=d[Yc])if(c)d[mb](a);else Mp(d,a)};\r
18354 F.rJ=function $LE(){if(this.lca){var a=this.Mga(this.dg);a!=this.Ry&&this.Pa(a)}if(!this.lca||L&&!zH){a=PPa(this)||I;if(this.dja==i||a==this.dja){this.dja=i;a!=this.Ry&&this.Pa(a)}}};F.Pa=function $ME(a){this.Ry=pa(this.tva,a);if(this.lca){L&&!zH&&BH(this,a);this.gma(a)}else BH(this,a);this[r](new RPa(AH(this)))};F.WXa=function $NE(a){if(this.BRa!=a)this.ab[Dc](a?1E4:150);this.BRa=a};F.W9c=function $OE(){this.ab[qc]();this.ab[Rc]()};var Flb=[fj,ij,hj],OPa=0;H(RPa,N);H(WPa,uh);F=WPa[w];F.Ry=I;F.D=function $PE(){if(!this.Pc){WPa.C.D[z](this);this.eP.D();this.eP=i}};F.gH=function $QE(a){return a?this.Haa(a):AH(this.eP)};F.dpb=function $RE(a){if((a.ce||I)==this.Ry)a[Ec]()};F.Haa=function $SE(a){return this.rca.Rjc[a[Wq]].Gaa(a)[kd](Md)[mb](/\/$/,I)};var Glb=new wNa(dab,Pd),Hlb=new wNa(dab,dx),Ilb=new wNa(dab,kD);H(cQa,N);var dQa=15,eQa=new Bm(4,4,4,4),fQa=new Bm(0,0,0,0);CH[w].jCa=function $TE(a){qma(this,a);return this};H(DH,AD);var iQa=ifa.J()?3:4;F=DH[w];F.e2b=k;F.D=function $UE(){DH.C.D[z](this);this.Ck.yu[Pb](this);this.nU.D()};F.zc=function $VE(){return this.kYb?this.vz[0]:i};F.oWa=function $WE(a){return jQa(this,a)};var Jlb="Starting navigate";\r
18355 fp(F,function $XE(a){mQa(this,Jlb);lQa(this);var c=a[Wq],d=this.V,f=this.rca.VEa[c]||i;if(f){c=this.Zia=new sCa;var g=jA(d,f);if(g)this.nV(a,c,g);else{nQa(this,Glb);this.glb=f;this.y1b.set(f,a);this.GW=new jB;this.GW.Se(iB);WC(this.Ck);d=this.xra=kA(d,f);Zw(d,G(this.R6c,this,a,c));Yw(d,G(this.FTa,this,a,c));Yw(d,sg)}return c}else e(new Rh("ERROR : No view service registered for "+c))});F.SH=function $YE(a){var c=k;if(a=ZPa(this.nU,a)){this.jb[bq](a);c=h}return c};F.gH=function $ZE(a){return this.nU.gH(a)};\r
18356 Bp(F,function $_E(){var a=this.zc();if(a){a[Sq]();this[r](vA)}});var tQ="Da";F.Jc=function $0E(){this.H().w(this,[ki,NO],this.A5c);this.H().w(this,tQ,this.iob)};F.R6c=function $1E(a,c,d){nQa(this,Hlb);var f=this.GW;this.GW.D();this.xra=this.GW=i;this.nV(a,c,d);if(f){lB(f,4);f.D();WC(this.Ck)}};var Klb="View Created";\r
18357 F.nV=function $2E(a,c,d){this.lya=new jB;var f=this.zc();if(f)a.Ica=f;var g=d.pga(this.V,this,a);if(g&&g==f){yA++;try{this.zc()[Sq]();GB(c,1);this[r](vA)}finally{zA()}oQa(this);WC(this.Ck);XPa(this.nU,a||{view:g.md()})}else if(f&&f.Bo(h)){this.mw.s5a();GB(c,2);oQa(this)}else{if(!g){g=d.JJ(this.V,this,a);gQa(this,g)}mQa(this,Klb);yA++;try{c=g;if(!this.Z2[bd](c))e(Error(".143"));if(c.ln(a)){oQa(this);this.oWa(c);c.D()}else{this.gL=c;this.Cxa=a;oQa(this);sQa(this)}WC(this.Ck)}catch(j){e(j)}finally{zA()}this[r](new cQa(ey,\r
18358 this.Cxa,f,g))}};F.dpb=function $3E(){this.cGb&&this.SH()};F.X9b=function $4E(a){if(this.Z2[bd](a))e(Error(".142"));this.ia[Nc](a);a.D()};F.di=function $5E(a,c,d){DH.C.di[z](this,a,c,d);if(this.f2b){this.f2b=k;(a=this.zc())&&a.X_a()}};F.yGa=function $6E(a){DH.C.yGa[z](this,a);if(this.e2b&&!this.xv()){this.b()[ql];this.e2b=k}};var Llb="gL";F.cGc=D(Llb);F.Xta=function $8E(){return this.gL||this.zc()};\r
18359 F.sK=function $9E(){var a=this.Xta(),c=[];a&&a.ej(c);this.GW&&c[p](this.GW);this.lya&&c[p](this.lya);return c};F.Ina=B();F.A5c=function $aF(a){a:{for(a=a[y];a&&a!=this;){if(a instanceof vH){a=a;break a}a=a.rv()}a=i}if(a==this.gL||a==this.zc()){sQa(this);WC(this.Ck)}};F.iob=function $bF(a){this.Ina(a[y])};F.Qh=function $cF(a,c){var d=this.zc();d&&d.Qh(a,c)};\r
18360 F.FTa=function $dF(a,c,d){if(d instanceof wi)return i;a=this.rca.VEa[a[Wq]]||i;if(this.glb&&this.glb==a){nQa(this,Ilb);GB(c,3);oQa(this);if(this.GW){this.GW.D();this.GW=i}this.xra=this.glb=i;WC(this.Ck)}return d};_B_prog(66)}catch(e){_B_err(e)}\r
18361 \r
18362 try{uQa[w].ula=function $eF(a,c,d){var f=wQa(this,a,c);if(f[u]==0&&this.bqd)f=xQa(this,a,c);d(a,f)};var zQa={};var eI=new oCa(K4a);H(HH,uh);HH[w].Gi=function $fF(a,c,d,f){this.ab[Vc]||this.ab[Rc]();this.ee.set(c,a);this.wYa[c]=d;this.gMa[c]=f};HH[w].cG=function $gF(a){this.ee[Pb](a);delete this.wYa[a];delete this.gMa[a];this.ee.nd()&&this.ab[qc]()};HH[w].Pa=function $hF(){for(var a=qC(this.V).W(),c=this.ee.Sb(),d=0;d<c[u];d++){var f=c[d],g=gGa(this.ee.J(f),this.wYa[f],this.gMa[f]),j=a.b(f);if(j)Q(j,g);else this.cG(f)}};HH[w].D=function $iF(){if(!this.Pc){this.gMa=this.wYa=this.ee=i;this.ab[qc]();this.ab.D();this.ab=i;HH.C.D[z](this)}};var LQa=/\r\n/g,MQa=/\r/g;var oRa;H(nRa,Iw);nRa[w].tb=function $jF(){var a=fD(this.Db);hD(a,this,[SO]);iD(a,this,[oRa]);gD(a,SO,XD);lA(this.Db,XD,RO)};nRa[w].Gaa=function $kF(){return[oRa]};nRa[w].aca=function $lF(){return{view:SO}};H(QH,Vn);QH[w].Hi=function $mF(a){this.FXb=h;QH.C.Hi[z](this,a)};var Mlb="200px",Nlb=":20";\r
18363 QH[w].oAa=function $nF(){var a=this.fe(),c=a.b(),d=a.Cd();qma(c[x],I);Wa(d[x],I);if(!a.Ib()){c[x].brd=yd;if(Ng)dha(c[x],Ah);Wm(c,h)}if(this.FXb){var f=Nm(this.OZb||this.b()),g=Um(this.Jfd||this.b());a instanceof OJ&&a.gCa(I);f=g[Ck]+g[ib]-f.x-8;if(L&&!vg(aj)&&a instanceof OJ){ka(d[x],l.max((a.gm||i)[xk]+4,f)+Jm);if(!vg(Ij)){Wa(d[x],d[Rb]>200?Mlb:GA);bA(Nlb,this.hdc,100,this)}}else qma(d[x],f+Jm);this.FXb=k;up(d,0)}f=this.Nsc||(this.Qoa?5:7);d=this.sja||(this.Qoa?4:6);f=new en(this.OZb||this.b(),f,\r
18364 !L);g=new Bm(Fh&&!this.CXb?0:-2,0,0,0);if(d==6)qk(g,-3);else if(d==4)ck(g,-4);f.If(c,d,g);if(!a.Ib()){Wm(c,k);c[x].brd=ud;if(Ng)dha(c[x],I)}};QH[w].hdc=function $oF(){if(this.fe().Ib()){var a=this.fe().Cd();Wa(a[x],a[Rb]>200?Mlb:GA);bA(Nlb,this.hdc,100,this)}};RH[w].JJ=E(i);RH[w].TJa=E(i);RH[w].pga=E(i);H(SH,hy);SH[w].wr=function $sF(){Ix(this);var a=this.jea();this.jw[p](a);return a};H(qRa,xx);qRa[w].K2a=B();qRa[w].K2a.Ka=h;F=TH[w];F.utb=0;F.ea=D("Sq");F.Hc=D("Sq");var uQ="gk";F.g_=D(uQ);F.vf=D(uQ);F.Uf=function $yF(){return this.Zh(oI)};F.GPa=function $zF(){return this.Zh(EN)};var Olb="^vm";F.Gs=function $AF(){return this.Zh(Olb)};F.Dd=function $BF(a){return this.kl[a]};F.Zh=function $CF(a){return this.kl?ef(this.kl,a):k};var Plb="kl";F.Jo=D(Plb);F.wua=function $EF(){return this.Oy()?this.Jl?[AL]:[]:this.Mm()?this.Jl?[BL]:[]:this.Zba};F.Oy=function $FF(){return this.Zh(AL)};F.Mm=function $GF(){return this.Zh(BL)};\r
18365 var Qlb="rB";F.sH=D(Qlb);F.qjb=D("eQc");var Rlb=/_/;TH[w].Ojb=D("DQc");TH[w].LRa=function $KF(){if(this.Jl){this.Jl=k;this.Zba=[];this.utb=1;this.A4=this.hWa(this.A4);this.rB=this.hWa(this.rB);tRa(this);this.bI&&kya(this.bI,this,2)}};TH[w].hWa=function $LF(a){return a[mb](/<b>/gi,I)[mb](/<\/b>/gi,I)};var vRa=new RegExp(rRa,ag),uRa=new RegExp(sRa,ag);F=TH[w];F.mB=function $MF(a){this.bI.mb.Qf();try{a.Uf?this.bS(oI,1):this.TL(oI,1);this.aa.mB(a)}finally{this.bI.mb.Mf()}};\r
18366 F.bS=function $NF(a,c){return this.dV(a,i,c)};F.TL=function $OF(a,c){return this.dV(i,a,c)};F.dV=function $PF(a,c,d){var f=k,g,j;if(Ye(c)){if(jf(this.kl,c)){jf(this.Zba,c);f=h}}else if(Ve(c))for(g=0;g<c[u];++g){j=c[g];if(jf(this.kl,j)){jf(this.Zba,j);f=h}}if(Ye(a)){if(!ef(this.kl,a)){this.kl[p](a);this.Jl&&this.Zba[p](a);f=h}}else if(Ve(a))for(g=0;g<a[u];++g){j=a[g];if(!ef(this.kl,j)){this.kl[p](j);this.Jl&&this.Zba[p](j);f=h}}if(f)this.bI&&kya(this.bI,this,d||4);return f};var Slb=" unread",Tlb=" labels=";\r
18367 Ha(F,function $QF(){var a=[];a[p](this.gk);this.Jl&&a[p](Slb);a[p](Tlb+this.kl[kd](wj));this.rB&&a[p](J+this.rB);this.gda&&a[p](J+this.gda);return a[kd](I)});var Ulb="bI";F.Raa=Ge(Ulb);yx(xRa,TH);xRa[w].mB=B();H(yRa,xx);F=yRa[w];F.Lua=B();F.Lua.ic=h;F.h1=B();F.h1.ic=h;F.p3=B();F.p3.Ka=h;H(UH,oH);yx(yRa,UH);F=UH[w];F.Rja=-1;F.evb=0;F.Ay=function $WF(){return this.Ixa.Ay()};F.MT=function $XF(){return this.Ixa.MT()};F.axb=Ge("Rja");F.Fwb=Ge("Cab");var Vlb="Loading threadlist",Wlb="ari";F.Ja=function $_F(a){UH.C.Ja[z](this,a);a.Se(Vlb);a.Ua(pd,DE);this.Ixa.Ja(a);this.aa.p3(a);if(this.Gib){a.wl(h);a.Ne(mB);a.OW(k);a.Ua(GA,Hj);a.Ua(rd,ti);a.Ua(LD,Fi);this.Rja!=-1&&a.Ua(Wlb,this.Rja);a.sCa(3E4)}else{if(this.xl&&zHa(this.xl)||this.Cab)a.Ua(vl,Ah);a.wl(k);a.Ne(JP);a.OW(h)}};\r
18368 var Xlb="ti",vQ="tb",Ylb="tlm",Zlb="tsp",amb="iu",bmb="tnt";\r
18369 F.r_=function $0F(a,c){for(a=0;a<c[u];){var d=c[a],f=d[0];switch(f){case Xlb:f=this.Kd;f.oc==this&&f.YL(this.Ay(),this.MT());this.Kd.RU();f=this.Xi;f.Pc||f.set(new LRa(d));kB(this,2);a++;break;case vQ:a=this.Xfb(c,a);break;case Ylb:this.Kd.RU();ZH(this.Kd);this.Xi.RU();a++;break;case Zlb:this.QPc=h;f=d[1];this.Kd.PTa(f[0],f[1],f[2]);f=this.Xi;if(!f.Pc){f=f.J();MRa(f,d[2]);var g=d[3];if(g!=f.wna){f.wna=g;f[r](oy)}g=d[4];if(g!=f.y_a){f.y_a=g;f[r](oy)}d=d[5];if(d!=f.hEa){f.hEa=d;f[r](oy)}}kB(this,3);\r
18370 a++;break;case jO:this.gla=h;this.Kd.uL(this);a++;break;case amb:this.Kd.RU();this.Xi.RU();this.pUb(d);a++;break;default:this.aa.Lua(f,d);a++;break}}if(this.aa.h1())this.gla=h;if(this.evb){kB(this,3);Jz(this.Z,793)&&aF(this.B()).Hz(bmb,this.evb)}};F.rza=function $1F(){this.gla||this.Kd.uL(this)};F.h1=D("gla");\r
18371 F.Xfb=function $3F(a,c){var d=this.Xi.mb,f=d.za(qI),g;if(f)g=rI(f,this.Xi.Bb(),h);d.Qf();try{this.Xi.J();for(var j=c;j<a[u];){var n=a[j];if(n[0]!=vQ)break;var s=n[1],v=n[2];for(c=0;c<v;c++){var C;var M=this.Xi;if(M.Pc)C=void 0;else{var Y=new TH(M.gPb,n[c+3]);C=PRa(M,Y)}if(g){var ha=C.J();ISa(g,ha.Hc(),ha.dL)}GRa(this.Kd,this,s+c,C);this.evb++}j++}}finally{d.Mf()}return j};var wQ="Kd";F.wr=D(wQ);F.Zn=D("Xi");F.pUb=B();_B_prog(67)}catch(e){_B_err(e)}\r
18372 \r
18373 try{F=zRa[w];F.Rf=0;F.Cf=50;F.zja=50;F.a1=kD;F.Ay=D("Rf");F.setStart=Ge("Rf");F.Nb=D(uea);F.wwb=Ge(Zkb);var cmb="a1";F.B6=D(cmb);F.lma=Ge(cmb);F.axb=Ge("Rja");ARa[w].Ola=function $dG(a){a[Mb]()};H(VH,bG);F=VH[w];F.Og=70;F.Lz=yLa;F.Uz=-1;F.Eo=-1;F.L8=-1;F.D=function $eG(){VH.C.D[z](this);this.L8=this.Eo=this.Uz=-1;Ia(this.ON,0);for(var a=this.PN.Oa(),c=0;c<a[u];c++)a[c].bB();this.PN[bc]();this.na.D();jf(this.qn.jw,this)};var dmb="PD";F.Yla=Ge(dmb);BRa[w].kia=D("PBc");H(CRa,N);F=VH[w];var xQ="Og";F.Jw=D(xQ);F.NO=function $iG(){if(this.oc)return l.min(this.Uz,this.oc.Ay());return this.Uz};F.jNa=function $jG(){return this.oc?[this.oc]:[]};F.hc=function $kG(a){return a>=this.Uz&&a<this.Eo};\r
18374 F.J=function $lG(a){if(this.hc(a))return(a=this.ON[a])?a:i};na(F,function $mG(a){DRa(this);pRa(this.qn,this);this.oc=this.x7a(a);this.Ved.Ola(this.oc);return this.oc});F.uL=function $nG(a){if(this.oc==a){if(a.h1())this.Eo=a.Ay()+a.MT();this.oc=i}};qaa(F,function $oG(a){for(var c=this.Eo,d=this.Uz;d<c;d++)if(this.ON[d]==a){kf(this.ON,d);this.Eo--;YH(this,new WH(3,d));break}if(this.PN.J(a.Je())){a.bB();this.PN[Pb](a.Je())}});\r
18375 cha(F,function $pG(a){var c=a.J();if(!(this.Uz>=this.Eo)){this.PN.J(a.Je())&&this[ad](a);var d=this.Uz,f=this.Eo,g=HRa(this),j=-1,n=this.ON[d];if(n)if(this.PD(n.J(),c)>0||d==0)for(d=d;d<f;d++){n=this.ON[d];if(!n)break;if(this.PD(n.J(),c)<1){j=d;break}}else return;if(j<0&&g!=f)j=g;if(j>=0){km(this.ON,a,j);this.PN.set(a.Je(),a);a.Iz();this.Eo++;this.L8++;YH(this,new WH(2,j,a))}}});F.PTa=function $qG(a,c,d){var f=new WH(6);f.Hcd=new BRa(a,c,d);YH(this,f)};\r
18376 F.yib=function $rG(a){if(this.oc==a){DRa(this);this.Eo=a.Ay()+a.MT()}};var emb="Lz";F.zMa=D(emb);F.Es=function $tG(){return this.Lz==ly};F.RU=function $uG(){this.Lz=ly};F.rg=function $vG(){this.Lz=yLa;YH(this,new WH(5))};F.containsNode=function $wG(a){return this.PN.Xb(a.Je())};F.YL=function $xG(a,c){this.Lz=yLa;this.L8=this.Eo=this.Uz=a;this.Og=c;Ia(this.ON,0);a=this.PN.Oa();for(c=0;c<a[u];c++)a[c].bB();this.PN[bc]()};F.u7c=function $yG(){if(!this.Vha)this.Vha=h};\r
18377 F.F0c=function $zG(){if(this.Vha){this.lVb=this.Vha=k;if(this.HD[u]){var a=new CRa(this,this.HD);this.HD=[];for(var c=[],d=this;d;d=d.rv())c[p](d);for(d=0;d<c[u];d++){sa(a,c[d]);jx(c[d],a[Zb],k,a)}}}};H(KRa,zRa);KRa[w].Fwb=Ge("Cab");H(aI,VH);yx(qRa,aI);aI[w].kPa=function $BG(a,c){var d=new BNa(this.qn.Bb(),c.Ay(),c.Nb());d.wwb(c.HY);a.Ixa=d;this.aa.K2a(a,c);d=c.B6();if(d==kD)a.Gib=k;else if(d==Ph)a.Gib=h;else e(Error(".146"));if(c.Rja)(d=c.Rja)&&a.axb(d);a.Fwb(!!c.Cab)};aI[w].x7a=function $CG(a){var c=new UH(this.qn,this);this.kPa(c,a);return c};H(LRa,uh);F=LRa[w];\r
18378 F.fca=function $DG(a){var c=k;if(a[1]!=this.ug){this.ug=a[1];c=h}if(a[2]!=this.nj){this.nj=a[2];c=h}if(a[3]!=this.y_a){this.y_a=a[3];c=h}if(Boolean(a[3])!=this.wna){this.wna=Boolean(a[3]);c=h}if(a[5]!=this.ae){this.ae=a[5];c=h}if(a[6]!=this.ZZa){this.ZZa=a[6];c=h}if(a[7]!=this.Kmb){this.Kmb=a[7];c=h}if(a[8]!=this.hEa){this.hEa=a[8];c=h}if(a[9]!=this.oO){this.oO=a[9];c=h}if(a[10]!=this.dAb){this.dAb=a[10];c=h}if(a[11]!=this.j4a)this.j4a=a[11];if(a[5]!=this.ae){this.Cgc=a[12];this.r9b=a[13];c=h}c&&\r
18379 this[r](oy)};F.Le=D(RN);var fmb="nj";F.xK=D(fmb);F.fN=D("wna");F.Qe=D(ge);F.xeb=D("hEa");var gmb="oO";F.I_=D(gmb);F.uua=D("dAb");F.DPa=D("j4a");F.Fc=function $MG(a){if(a!=this.ug){this.ug=a;this[r](oy)}};F.hdb=D("Kmb");var hmb=" total_threads=",imb=" estimates",jmb=" query=";Ha(F,function $OG(){var a=[];a[p](this.ug);a[p](hmb+this.nj);this.wna&&a[p](imb);a[p](jmb+this.ae);return a[kd](I)});H(NRa,xx);NRa[w].jea=B();NRa[w].jea.Rn=h;H(ORa,SH);yx(NRa,ORa);F=ORa[w];F.Bb=D(NO);F.rg=function $RG(){Ix(this);this.QK()};F.QK=function $SG(){ORa.C.QK[z](this);pRa(this);this.mb.Qf();try{for(var a=this.Uc().Oa(),c=0;c<a[u];c++)a[c].PK()}finally{this.mb.Mf()}};F.RU=function $TG(){Ix(this);lya(this)};F.jea=function $UG(){var a=this.aa.jea();a||(a=new aI(this));return a};var kmb=dI(MF),lmb=dI(EO),mmb=dI(oA),yQ="sc",nmb=dI(yQ),omb=dI(Ph),pmb=dI(ki),qmb=dI(QL),rmb="asc",smb=dI(rmb),tmb=dI(WE),zQ="nc",umb=dI(zQ),vmb=dI(Ej);var wmb=["#00681c","#790619","#5b1094","#c88900","#cc0060","#008391","#009486","#b90038","#846600","#330099"];VRa[w].cta=function $VG(a){var c=this.dHb[a];if(!c){c=wmb[this.Cf%wmb[u]];this.dHb[a]=c;this.Cf++}return c};H(WRa,uh);F=WRa[w];F.Hc=D("Sq");F.vf=D(uQ);F.Bb=D(NO);F.GT=function $ZG(){for(var a=new cg,c=XRa(this),d=0;d<c[u];d++){var f=this.GQa[c[d]];f&&a.Vl(f)}return a};F.Jo=function $_G(){return this.GT().Oa()};var xmb="threadid=",ymb=" msgids=";Ha(F,function $0G(){return xmb+this.gk+ymb+this.wf[kd](wj)});H(fI,xx);fI[w].nB=B();fI[w].nB.ic=h;fI[w].D=B();fI[w].D.Ka=h;H(gI,oH);F=gI[w];F.nj=-1;F.Jv=-1;F.Bya=k;var zmb="qX";F.fN=D(zmb);F.Ja=function $4G(a){gI.C.Ja[z](this,a);a.Ua(pd,OD);a.Ii(this.IY.Bb())};H(dSa,xx);dSa[w].p3=B();dSa[w].p3.ic=h;H(hI,gI);yx(dSa,hI);hI[w].tYa=Ge("IKb");var Amb="ser",Bmb="Loading message data",Cmb="Loading conversation";hI[w].Ja=function $7G(a){hI.C.Ja[z](this,a);a.bD(k);a.wl(k);a.Ua(PD,this.kX||this.Yda.vn());this.IKb&&a.Ua(RD,this.IKb);if(this.wf){a.Ne(JP);a.OW(k);a.Ua(X3a,this.wf[kd](wj));this.Tjd&&a.Ua(Amb,Hj);this.q_b&&a.Ua(Y3a,Hj);a.Se(Bmb)}else{a.Ne(JP);a.OW(h);a.Se(Cmb)}this.aa.p3(a)};var Dmb="cnf";\r
18380 hI[w].r_=function $8G(a,c){a=k;this.Yda.mb.Qf();try{for(var d=0;d<c[u];d++){var f=c[d];switch(f[0]){case OL:vSa(this.Yda,f);kB(this,2);break;case lE:wSa(this.Yda,f);a=h;break;case Dmb:this.Bya=h;break;case qD:xSa(this.Yda);break}}}finally{this.Yda.mb.Mf()}if(a){kB(this,3);this.Wm&&this.Wm.rha&&this.Wm.rha()}};H(fSa,uh);F=fSa[w];F.Us=function $9G(){var a=[this.Ea.Dg(),this.Sq,this.lHa,lE,this.gf,this.VVa,this.eZ,this.fQb,this.dga,this.Nt,this.Od[hc](),this.hZa,this.vQ,this.iOa,this.QXb,this.zba,i,this.vub,this.Tib,this.Gxb,this.Qbb,this.Zwa,this.rB,this.XGa,this.gda,this.hxa,this.LPb,this.llb,this.wXa,this.Zhd,this.ewb,this.dwb,this.mYb,this.JOb,this.yic];this.aa.Us(a);return a};F.Bb=D(NO);F.Hc=D("Sq");F.OPa=D("Tib");F.ps=D("eZ");F.uy=D("fQb");var Emb="Od";jp(F,D(Emb));F.mi=D("zba");\r
18381 F.sH=function $gH(){return this.rB?this.rB:this.zba};F.Zh=function $hH(a){return ef(this.vQ,a)};F.wua=function $iH(){return this.Oy()?iI(this)?[AL]:[]:this.Mm()?iI(this)?[BL]:[]:iI(this)?this.vQ:[]};F.Uf=function $jH(){return this.Zh(oI)};var Fmb="^bc";F.Mp=function $kH(){return this.Zh(Fmb)};F.Oy=function $lH(){return this.Zh(AL)};F.Mm=function $mH(){return this.Zh(BL)};var Gmb="^p";F.L7=function $nH(){return this.Zh(Gmb)};F.Ny=function $oH(){return this.eZ==1};F.wha=D("iOa");\r
18382 F.Jga=function $qH(){return this.hxa||[]};F.Gs=D("Zwa");F.cta=D("lHa");F.H6=function $tH(){return this.aa.H6()};F.Vga=function $uH(){return this.aa.Vga()};F.Ijb=D("mYb");var Hmb="search=",Imb=" origthreadid=",Jmb=" msgid=",Kmb=" draft",Lmb=" snippet=";Ha(F,function $wH(){return Hmb+this.Ea+Imb+this.Sq+Jmb+this.gf+(this.Tib?Kmb:I)+Lmb+this.hZa+Tlb+this.hZa});F.bS=function $xH(a){return this.dV(a,i)};F.TL=function $yH(a){return this.dV(i,a)};\r
18383 F.dV=function $zH(a,c){var d=k,f,g;if(Ye(c)){if(jf(this.vQ,c))d=h}else if(Ve(c))for(f=0;f<c[u];++f){g=c[f];if(jf(this.vQ,g))d=h}if(Ye(a)){if(!this.Zh(a)){this.vQ[p](a);d=h}}else if(Ve(a))for(f=0;f<a[u];++f){g=a[f];if(!this.Zh(g)){this.vQ[p](g);d=h}}d&&this[r](oy);return d};F.mB=function $AH(a){var c=[],d=[];this.aa.mB(a,c,d);a.Uf?c[ld](oI):d[ld](oI);this.dV(c,d)};bk(F,function $BH(){if(this.eZ!=2&&this.eZ!=1){this.eZ=3;this[r](oy)}});yx(jSa,fSa);F=jSa[w];F.Us=B();F.Us.Ka=h;F.wU=B();F.wU.Ka=h;\r
18384 F.mB=B();F.mB.Ka=h;F.H6=B();F.H6.Ka=k;F.H6.Vd=h;F.Vga=B();F.Vga.Ka=k;F.Vga.Vd=h;_B_prog(68)}catch(e){_B_err(e)}\r
18385 \r
18386 try{F=kSa[w];F.oGb=Qj;var Mmb="&view=att&th=",Nmb="&attid=",Omb="&disp=attd";F.fca=function $HH(a){this.z8=a[0];this.fileName=a[1];this.lL=a[2];this.wsa=a[3];this.QG=l[rb]((this.wsa+1023)/1024);lSa(this,a[4]);this.iJ=a[5];this.Ro=a[6];this.Lab=a[7];this.yM=a[8];this.cT=a[9];this.TM=a[10];this.QEa=a[11];this.REa=a[12];this.Fza=a[13];this.Gza=a[14];this.Pka=a[15];this.PEa=a[16];this.d9=a[17];this.X2=a[18];this.Kfa=a[19];this.Dwa=Boolean(a[20]);this.GBa=a[21];this.eda=Qj+Mmb+this.Vy+Nmb+this.z8+Omb};\r
18387 F.Us=function $IH(){return[this.yL,this.Vy,this.z8,this[or],this.lL,this.wsa,this.hG,this.iJ,this.Ro,this.Lab,this.yM,this.cT,this.TM,this.QEa,this.REa,this.Fza,this.Gza,this.Pka,this.PEa,this.d9,this.X2,this.Kfa,this.Dwa,this.GBa]};\r
18388 F.vc=function $JH(){var a=new kSa(this.yL,this.Vy);a.z8=this.z8;a.fileName=this[or];a.lL=this.lL;a.wsa=this.wsa;a.QG=this.QG;a.hG=this.hG;a.iJ=this.iJ;a.Ro=this.Ro;a.Lab=this.Lab;a.yM=this.yM;a.cT=this.cT;a.TM=this.TM;a.QEa=this.QEa;a.REa=this.REa;a.Fza=this.Fza;a.Gza=this.Gza;a.d9=this.d9;a.Pka=this.Pka;a.aY=this.aY;a.QNa=this.QNa;a.eda=this.eda;a.PEa=this.PEa;a.d9=this.d9;a.X2=this.X2;a.Kfa=this.Kfa;a.Dwa=this.Dwa;a.GBa=this.GBa;return a};\r
18389 F.ET=function $KH(){return this.yL+mg+this.Vy+mg+this.z8+mg+this.hG};F=nSa[w];F.znb=0;F.Gnb=0;F.T2b=0;F.U2b=0;F.Hc=D("Sq");F.Nb=function $MH(){return this.sh[u]};F.XK=function $NH(){return!!this.vQc};H(pSa,uh);F=pSa[w];F.Jcc=function $OH(a){this.oIb=Ve(a)?Pmb(a):a};F.lAb=i;F.w5a=i;F.d4a=i;F.yub=i;F.o4a=i;F.m4a=i;F.l4a=i;F.n4a=i;\r
18390 F.Us=function $PH(){return[this.Ea.Dg(),this.Sq,this.gf,this.p_a,this.rIa,this.wHa,this.tWa,this.zba,this.DB,this.sh.odd,this.tac,this.QVa,,this.pIb,this.UYa,this.fkc,this.Dec,this.Zdc,this.NHb,this.I_b,this.pfc,this.awa,this.uub,this.tub,this.FRa,this.oIb,[this.Zwa,this.bkc,this.ckc,this.dkc,this.Zjc,this.akc],this.rB,this.hxa,this.Rlb,this.Sec,[this.Rjb,this.xMb,this.Q2b,this.L2b,this.dZb],this.ahb,this.Jt,[rSa(this)],this.k8b,this.Vkd.kc(),this.mec,this.sXb,this.lIa]};F.Bb=D(NO);F.Hc=D("Sq");\r
18391 F.PT=function $SH(a){if(a){if(!this.n4a)this.n4a=Exa(this.tWa);return this.n4a}else return this.tWa};F.mi=D("zba");F.sH=function $UH(){return this.rB?this.rB:this.zba};var Qmb="DB";F.Ew=D(Qmb);F.JYa=D("Dec");F.Kxb=D("Zdc");F.QYa=D("Sec");F.Wwa=D("Rjb");F.zKa=D("xMb");F.Hnb=D("Q2b");F.Zja=D("L2b");F.RQa=D("dZb");F.Idb=function $3H(){return this.QVa[1]};F.Gs=D("Zwa");F.Jga=D("hxa");F.Dia=function $6H(){return!!this.Jt&&this.Jt[0]==QN};F.Rxb=D("mec");F.lIa=D("Jvc");\r
18392 F.kIa=function $9H(){if(typeof this.CIb=="undefined")this.CIb=!(Fh&&this.ahb>160||Ng&&this.ahb>460);return this.CIb};var Rmb="msgid=",Smb=" subject=";Ha(F,function $$H(){return Rmb+this.gf+Smb+this.sH()});H(lI,hy);lI[w].nM=function $aI(a){var c=new fSa(this.Ea,this.Sq,this.lHa,a);if(a[13][u]){a=new pSa(this.Ea,this.Sq,a[13]);this.za(eg).set(a)}this.set(c)};lI[w].PK=function $bI(){if(this.Fi()){this.mb.Qf();try{this.za(eg).PK();this.QK()}finally{this.mb.Mf()}}};lI[w].L=function $cI(){this.aa.D();lI.C.L[z](this)};yx(tSa,lI);tSa[w].D=B();tSa[w].D.Ka=h;H(uSa,hy);yx(fI,uSa);F=uSa[w];F.bVb=k;F.Bb=D(NO);F.Hc=function $fI(){return this.vn()};na(F,function $gI(a,c){Ix(this);var d=new hI(this);c&&d.tYa(c);a&&eSa(d,a);d[Mb]();return d});F.dlb=function $hI(){Ix(this);if(!this.hc())e(Error(".148"));for(var a=this.J().v0,c=[],d=0;d<a[u];d++)c[p](a[d]);a=new hI(this);d=this.J().vf();a.kX=d;a.wf=c;a.q_b=h;a[Mb]();return a};F.rg=function $iI(){Ix(this);if(this.Fi()){this.mb.Qf();try{for(var a=this.Uc().Oa(),c=0;c<a[u];c++)a[c].PK();this.QK()}finally{this.mb.Mf()}}};\r
18393 F.GT=function $jI(){if(!this.hc())e(Error(".150"));return this.J().GT()};F.Jo=function $kI(){return this.GT().Oa()};F.wua=function $lI(){if(!this.hc())e(Error(".150"));for(var a=new cg,c=pI(this),d=0;d<c[u];d++){var f=c[d].wua();a.Vl(f)}return a.Oa()};F.nB=function $mI(a,c){if(this.hc()){Ix(this);for(var d=pI(this),f=0;f<d[u];f++){var g=d[f],j=g.gf;if(!this.aa.nB(g,j,a,c))if(c.Uf)j==a&&g.mB(c);else j<=a&&g.mB(c)}ASa(this)}};\r
18394 F.YXa=function $nI(a,c){if(this.hc()){Ix(this);(a=this.za(a))&&a.hc()&&!a.Ds()&&a.J().mB(c);ASa(this)}};F.Yaa=function $oI(a,c){if(this.hc()){Ix(this);for(var d=pI(this),f=0;f<d[u];f++){var g=d[f];g.gf<=a&&iSa(g,c)}ASa(this)}};F.Xwb=function $pI(a,c){if(this.hc()){Ix(this);for(var d=0;d<a[u];d++){var f=this.za(a[d]);if(f&&f.hc()&&!f.Ds()){f=f.J();iSa(f,c)}}ASa(this)}};F.Wwb=function $qI(a){if(this.hc()){Ix(this);(a=this.za(a))&&a.hc()&&!a.Ds()&&a.J().TL(BL);ASa(this)}};\r
18395 F.EFb=function $rI(a,c,d,f){if(this.hc()){Ix(this);a=!Ke(f);for(var g=pI(this),j=0;j<g[u];j++){var n=g[j];if(a||n.gf==f)for(var s=0;s<d[u];s++){var v=d[s];c?n.bS(v):n.TL(v)}}}};F.E4=function $sI(a,c){if(this.hc()){Ix(this);for(var d=pI(this),f=0;f<d[u];f++){var g=d[f],j=g.TL(a);c&&j&&g.bS(c)}}};F.Txc=function $tI(a){for(var c=0;c<a[u];c++){var d=a[c];d.OPa()||d[tk]()}};F.tka=function $uI(a,c,d,f){var g=this.J();ef(g.wf,c)||cSa(g,a,c,d,f)};F.Ydb=D("Whd");F.L=function $wI(){this.aa.D();uSa.C.L[z](this)};H(ESa,gI);var Tmb="cnp";ESa[w].r_=function $xI(a,c){a=k;this.IY.mb.Qf();try{for(var d=0;d<c[u];d++){var f=c[d];switch(f[0]){case Tmb:this.Fmd=f[1];this.KWc=f[2];this.nj=f[3];this.qX=f[4];this.Jv=f[5];this.LA=f[6];this.Wm&&this.Wm.zUb&&this.Wm.zUb();break;case OL:var g=this.IY.za(f[1]);vSa(g,f);this.on=g;kB(this,2);break;case lE:if(this.on){wSa(this.on,f);a=h}break;case Dmb:this.Bya=h;break;case qD:this.on&&xSa(this.on);break}}}finally{this.IY.mb.Mf()}if(a){kB(this,3);this.Wm&&this.Wm.rha&&this.Wm.rha()}};\r
18396 var Umb="prev",AQ="next",Vmb="nextprev";ESa[w].Ja=function $yI(a){ESa.C.Ja[z](this,a);a.bD(k);a.wl(k);a.Ne(JP);a.OW(h);a.Ua(PD,this.gk);var c=this.Obd;if(c==oy)a.Ua(Umb,1);else if(c==Zx)a.Ua(AQ,1);else if(c==ki)a.Ua(Vmb,1);else e(Error(".151"))};H(FSa,gI);F=FSa[w];F.R2b=0;F.S2b=0;F.Eg=E(k);F.r_=function $AI(a,c){this.IY.mb.Qf();try{for(a=0;a<c[u];a++){var d=c[a];switch(d[0]){case OL:var f=d[1];if(!this.AOb.Xb(f)){var g=this.IY.za(f);vSa(g,d);this.mea=g}break;case lE:this.mea&&wSa(this.mea,d);break;case qD:if(this.mea){xSa(this.mea);this.R2b++;zSa(this.mea)&&this.S2b++;this.mea=i}break;case QL:this.Zbd=h;break;case Dmb:this.Wm&&this.Wm.bUb&&this.Wm.bUb(this,d[1]);break}}}finally{this.IY.mb.Mf()}};\r
18397 F.Ja=function $BI(a){FSa.C.Ja[z](this,a);a.bD(k);a.wl(h);a.Ne(mB);a.OW(k);a.sCa(1E4);a.Ii(this.IY.Bb());a.Ua(pd,OD);a.Ua(PD,this.BV);a.Ua(W3a,Hj)};H(GSa,hy);GSa[w].Bb=D(NO);GSa[w].za=function $DI(a,c){Ix(this);var d=iy(this,a);if(d||c)return d;return new uSa(this.Ea,a,this)};GSa[w].rg=function $EI(){Ix(this);this.mb.Qf();try{for(var a=this.Uc().Oa(),c=0;c<a[u];c++)a[c].rg()}finally{this.mb.Mf()}};H(JSa,hy);F=JSa[w];F.P6c=function $FI(a){var c=a[dq],d=a.Pg.Bb();if(d!=i){a=c[0];(d=this.zp(d,c[1],k))&&ySa(d,a,c)}};F.za=function $GI(a,c){Ix(this);var d=iy(this,a);if(d||c)return d;if(a=Hy.f_(Rf(a)))return new GSa(a,this)};F.zp=function $HI(a,c,d){Ix(this);a=Qf(a.Dg())+Md+c;return jy(this,a,d)};F.nB=function $II(a,c,d){sI(this,a,function(f){f.nB(c,d)})};F.YXa=function $JI(a,c,d){sI(this,a,function(f){f.YXa(c,d)})};F.Yaa=function $KI(a,c,d){sI(this,a,function(f){f.Yaa(c,d)})};\r
18398 F.Xwb=function $LI(a,c,d){sI(this,a,function(f){f.Xwb(c,d)})};F.Wwb=function $MI(a,c,d){sI(this,a,function(f){f.Wwb(c,d)})};F.SX=function $NI(a,c,d,f){this.t3(a,c,h,d,f)};F.m1=function $OI(a,c,d,f){this.t3(a,c,k,d,f)};F.t3=function $PI(a,c,d,f,g){sI(this,a,function(j){j.EFb(c,d,f,g)})};F.E4=function $QI(a,c){this.mb.Qf();try{for(var d=this.Uc().Oa(),f=0;f<d[u];f++)for(var g=d[f].Uc().Oa(),j=0;j<g[u];j++){var n=g[j];n&&n.E4(a,c)}}finally{this.mb.Mf()}};\r
18399 F.tka=function $RI(a,c,d,f,g){Ix(this);this.mb.Qf();try{for(var j=this.Uc().Oa(),n=0;n<j[u];n++){var s=j[n].za(a);s&&s.hc()&&s.tka(c,d,f,g)}}finally{this.mb.Mf()}};F.Ydb=function $SI(a){for(var c=this.Uc().Oa(),d=0;d<c[u];d++){var f=c[d].za(a,h);if(f&&f.hc())if(f=f.Ydb())return f}return i};_B_prog(69)}catch(e){_B_err(e)}\r
18400 \r
18401 try{Uw(O.S(),function(b){b=Dx(Cx(b));new JSa(b)});H(BI,Fn);wn("J-C7uZwb-I",function(){return new BI(i)});H(CI,Tn);Ne(CI);F=CI[w];F.ba=CI.C.ba;F.Cd=function $TI(a){return a&&a[Tb]&&a[Tb][Tb]&&a[Tb][Tb][Tb][Qc]};var Wmb="-KC",Xmb="-K9-KP";F.Cqa=function $UI(a,c){var d=this.Qb();return c.ba(T,zo+(d+Qka),c.ba(T,zo+(d+Rka),c.ba(T,d+Wmb,c.ba(T,d+Xmb,Ed),c.ba(T,d+Nn,a))))};\r
18402 F.cVb=function $VI(a,c){if((c=a.W().Bp(c))&&c[uc][Db](this.Qb()+Qka)!=-1)if((c=a.W().Bp(c))&&c[uc][Db](this.Qb()+Rka)!=-1)if((c=a.W().Bp(c))&&c[uc][Db](this.Qb()+Wmb)!=-1)if((c=a.W().Bp(c))&&c[uc][Db](this.Qb()+Xmb)!=-1)if((a=a.W().LT(c))&&a[uc][Db](this.Qb()+Nn)!=-1)return h;return k};F.Qb=E(yI);wn(yI,function(){return new Fn(i,CI.S())});wn("J-K-ornU0b-I",function(){var b=new Fn(i,CI.S());Bn(b,16,h);return b});H(cTa,N);H(dTa,tB);var Ymb="The conversation has been deleted.",Zmb=" conversations have been deleted.";dTa[w].yp=function $XI(){var a;a=this.Cr()?Ymb:this.Mg()[u]+Zmb;return sB(this,a,7401)};H(EI,Jf);F=EI[w];F.vma=k;F.Tza=0;F.ab=i;F.Pfa=function $YI(){if(!this.ab&&!this.Tza)this.UN();else this.vma=h};Ga(F,function $ZI(){if(this.ab){Eh(this.ab);this.ab=i;this.vma=k}});F.pause=function $_I(){this.Tza++};F.sI=function $0I(){this.Tza--;if(!this.Tza&&this.vma&&!this.ab){this.vma=k;this.UN()}};F.L=function $1I(){EI.C.L[z](this);this[qc]()};F.ix=function $2I(){this.ab=i;if(this.vma&&!this.Tza){this.vma=k;this.UN()}};F.UN=function $3I(){this.ab=Dh(this.Li,this.Ly);this.Mk[z](this.na)};H(eTa,hy);var iTa=[I,0,0,0,h,k];\r
18403 eTa[w].nM=function $4I(a){this.mb.Qf();try{for(var c=[],d=0;d<a[u];d++)c[d]=Qf(a[d][0]);var f;if(this.qj()==0){f=[];for(d=0;d<a[u];d++)f[d]=d+1}else{for(var g={},j=0;j<c[u];j++)g[c[j]]=h;var n=this.Uc(),s=n.Sb();for(j=0;j<s[u];j++){var v=s[j];if(!g[v]){var C=n.J(v);if(!C.Ds()){this.qr.Kka[Pb](C.J().SA);mya(C,h)}}}g=[];var M=this.Uc();n=j=k;s=-1;for(v=0;v<c[u];v++){var Y=M.J(c[v]);if(!Y||Y.Ds()){g[p](-1);n=h}else{var ha=Y.J().Nx;j=j||ha<s;s=ha;g[p](ha)}}j&&gTa(this,g,n);if(n||j){M=0;Y=1;for(j=ha=0;ha<\r
18404 g[u];ha++){var tb=g[ha];if(tb==-1){if(j<=ha){for(j=ha+1;j<g[u];j++)if(g[j]!=-1)break;Y=((g[j]||M+j-ha+1)-M)/(j-ha+1)}tb=M+Y;g[ha]=tb}M=tb}}f=g}var zc=this.Uc();for(d=0;d<a[u];d++){var qb=a[d],nd=c[d],Fe=zc.J(nd),Pe=f[d];if(!Fe||Fe.Ds()){Fe||(Fe=new py(nd,this));var qg=new bEa(qb,Pe,this.B());Fe.set(qg);eVa(this.qr,Fe)}else{var te=Fe.J(),Zk=te.SA;if(te.fca(qb,Pe))if(te.SA!=Zk){this.qr.Kka[Pb](Zk);eVa(this.qr,Fe)}lya(Fe)}}my(this)}finally{this.mb.Mf()}};\r
18405 eTa[w].PK=function $5I(){if(this.Fi()){this.mb.Qf();try{this.QK();for(var a=this.Uc().Oa(),c=0;c<a[u];c++)a[c].PK()}finally{this.mb.Mf()}}};F=mTa[w];F.Jo=function $6I(){for(var a=[],c=FI(this.exa),d=0;d<c[u];d++){var f=c[d].J();this.KYb(f)&&a[p](f)}return a};F.q6=function $7I(a){return(a=(a=this.exa.za(Qf(a)))&&a.J())&&this.KYb(a)?a:i};F.sga=function $8I(){return function(a,c){a=a.Nx;c=c.Nx;return a<c?-1:a>c?1:0}};F.Ltb=function $9I(a,c){this.MYb[p]({Tfa:a,scope:c})};F.D=function $$I(){this.Q.D()};\r
18406 F.upb=function $aJ(a){for(var c=[],d=this.exa.mb,f=0,g;g=a.dG[f];f++)if((g=d.cj(g))&&g.hc()){g=Rf(g.vn());c[p](g)}a=new cTa(this,c);for(f=0;c=this.MYb[f];f++)c.Tfa[z](c[Pq],a)};var mVa=h,BQ={Ti:[]};F=JI[w];F.Nec=h;F.wzb=k;var anb="gGMWSc",bnb="margin-left";F.eb=function $bJ(a,c){this.hd=Cg(c);this.EJ=a;ok(this,this.hd[Qb](T));c[o](this[ll]);this.hp=nf(this.DQa.Jo());Q(this[ll],wTa(this.A7a()));if(this.wzb){var d;for(a=0;d=this.hp[a];a++){c=KI(this,d.ea());d=PTa(this,d);if(d>0){d=d*0.75;var f=QTa(this,c);K(c,anb);Dm(f,bnb,String(d)+zz)}}}};F.Cc=function $cJ(){return!!this.EJ};F.b=function $dJ(){return this[ll]||i};F.XXa=Ge("Wlb");\r
18407 F.qA=function $fJ(a){for(var c,d=0;c=this.hp[d];d++){var f=KI(this,c.ea());if(f&&Zg(f,a[y])){if(c.P3())Fa(this.hd.ie(T,ETa,f)[0][x],I);K(f,bla);break}}};F.q_=function $gJ(a){for(var c,d=0;c=this.hp[d];d++){var f=KI(this,c.ea());if(!a[eb]||!Zg(f,a[eb])){if(c.P3())Fa(this.hd.ie(T,ETa,f)[0][x],yd);Ag(f,bla)}}};\r
18408 F.qk=function $hJ(a){if(this.AQa)for(var c,d=0;c=this.hp[d];d++){var f=KI(this,c.ea());if(Zg(f,a[y])){var g=c.P3()&&this.Wlb?this.hd.ie(T,zTa,f)[0]:i;if(g&&Zg(g,a[y])){this.Wlb.pB(c,g);return k}f=QTa(this,f)[Tb][Tb];if(mVa||Zg(f,a[y])){this.AQa[z](this,c);return h}}}return k};F.D=B();F.UZ=function $jJ(a){if(this.hp)for(var c,d=0;c=this.hp[d];d++){c=c.ea();var f=KI(this,c);f&&a[p]({label:c,element:f})}return a};\r
18409 F.EMa=function $kJ(a){if(this.hp)for(var c,d=0;c=this.hp[d];d++){c=c.ea();var f=KI(this,c);if(f){f=QTa(this,f);a[p]({label:c,anchor:f[Tb][Tb]})}}return a};var cnb="nZ";F.QQ=function $lJ(a,c){(a=this.Zh(a.ea())?KI(this,a.ea()):i)&&hm(a,cnb,c)};F.A7a=function $mJ(){var a=this.hp[u];Ia(BQ.Ti,a);for(var c=0;c<a;c++){BQ.Ti[c]=BQ.Ti[c]||{};MTa(this,BQ.Ti[c],this.hp[c])}return BQ};\r
18410 F.fJc=function $nJ(a){if(this.Cc()){for(var c=k,d,f=0;d=a.Ti[f];f++){var g=this.Zh(d),j=this.DQa.q6(d);if(g&&!j){c=d;for(d=0;d<this.hp[u];d++)if(c==this.hp[d].ea()){c=d;d=this[ll][Tb][vma][0];d[nha]()&&d[Nc](d[cc][c]);kf(this.hp,c);break}c=h}else if(!g&&j){this.eGa(j);c=h}else j&&this.S_a(j)}this.YIb&&this.YIb(c)}};\r
18411 F.eGa=function $oJ(a){var c=this[ll][Tb][vma][0],d=-(jm(this.hp,a,this.DQa.sga())+1),f=BQ.Ti[0]=BQ.Ti[0]||{};MTa(this,f,a);var g=this.hd[Qb](Zn);g.id=f.id;m(g,rTa);var j=this.hd[Qb](Do);m(j,uTa);if(a.P3())Q(j,xTa(f));g[o](j);j=this.hd[Qb](Do);Q(j,yTa(f));g[o](j);!c[nha]()||d==this.hp[u]?c[o](g):c[Bb](g,c[cc][d]);km(this.hp,a,d)};\r
18412 F.S_a=function $pJ(a){var c=KI(this,a.ea()),d=QTa(this,c),f=a.Dp()!=I;hm(d,LTa,f);d=d[Tb][Tb];f=OTa(this,a);ah(d,f);ik(d,f);if(a.P3()){c=this.hd.ie(T,zTa,c)[0];d=Lj+a.lK();kp(c[x],Lj+a.PO());gma(c[x],d);ta(c[Tb][x],d)}};F.Zh=function $qJ(a){if(this.hp)for(var c,d=0;c=this.hp[d];d++)if(a==c.ea())return h;return k};H(LI,JI);LI[w].eb=function $rJ(a,c){LI.C.eb[z](this,a,c);this.Fh=a};LI[w].D=function $sJ(){LI.C.D[z](this);this.Qm.D()};H(MI,LI);var dnb="zw";MI[w].eb=function $tJ(a,c){MI.C.eb[z](this,a,c);K(this[ll],dnb)};H(NI,xx);F=NI[w];F.Ykb=B();F.Ykb.Ka=h;F.W5=B();F.W5.Vd=h;F.ceb=B();F.ceb.Rn=h;F.Qcb=B();F.Qcb.Rn=h;F.fQa=B();F.fQa.Rn=h;F.Vxb=B();F.Vxb.ic=h;_B_prog(70)}catch(e){_B_err(e)}\r
18413 \r
18414 try{Ax(UTa,NI,0);UTa[w].W5=E("G9");UTa[w].fQa=E(k);H(PI,AD);var cUa={};F=PI[w];F.YK=k;F.ma=function $CJ(){PI.C.ma[z](this);fUa(this);this.oIa&&Pw(this.H(),QI(this),aB,this.oIa)};F.Ba=function $DJ(){this.oIa&&Ow(this.H(),QI(this),aB,this.oIa);PI.C.Ba[z](this)};F.zm=function $EJ(a){if(a!=this.YK){this.YK=a;fUa(this)}};F.LXa=Ge("yJa");F.Vo=D("YK");H(RI,xx);RI[w].zHa=B();RI[w].zHa.ic=h;RI[w].QQ=B();RI[w].QQ.Rn=h;zx(gUa,RI,0);var enb="qj",fnb="qi";gUa[w].zHa=function $JJ(a,c){if(this.X_.rWb){var d=CF,f=new Bm(2-d.top,0,2-d[fl],0);a=d.top;var g=d[rl],j=d[fl];d=d[Ck];var n=f.top,s=f[rl],v=f[fl];f=f[Ck];var C=SJa(a,g,j,d,n,s,v,f);a=(new gJa(new Bm(a,g,j,d),new Bm(n,s,v,f),C)).yn;g=Cg(c);this.lMb=iUa(this,g,a,enb);this.Cfc=iUa(this,g,a,fnb);c[o](this.lMb[ll]);c[o](this.Cfc[ll])}return h};var gnb="ol";\r
18415 gUa[w].QQ=function $KJ(a,c){var d=KI(this.X_,a.ea());if(d){var f=fza(a.Bb());if(this.X_.rWb){var g=f?this.Cfc:this.lMb;if(c){bn(d,4,g[ll],4,new xg(-4,0));Wa(g.Myc[x],d[ql]-4+Jm)}Fa(g[ll][x],c?ud:yd)}if(this.X_.Zh(a.ea())){a=f?gnb:cnb;hm(d,a,c)}}return h};H(SI,LI);yx(RI,SI);var hnb="LrBjie";SI[w].eb=function $LJ(a,c){this.aa.zHa(a,c);SI.C.eb[z](this,a,c);K(this[ll],hnb)};SI[w].QQ=function $MJ(a,c){this.aa.QQ(a,c)||SI.C.QQ[z](this,a,c)};H(VI,AD);F=VI[w];var inb="z0";F.hq=function $NJ(a,c,d,f){var g=this.W()[Qb](T);Q(g,AI({id:I,xh:c}));m(g,inb);this.Gz(a,new YUa(g,d,f))};F.rG=function $OJ(a){var c=this.W()[Qb](T);m(c,VUa);this.Gz(a,new MUa(c))};F.Gz=function $PJ(a,c){this.bL[a][p](c);if(this.Cc()){c.eb(this,this.xKb[a]);WUa(this)}};F.cC=function $QJ(a,c){for(var d=0;d<this.bL[u];d++)if(c==undefined||d==c)for(var f,g=0;f=this.bL[d][g];g++)a(f,d)};F.W5=E(i);F.L=function $SJ(){VI.C.L[z](this);this.cC(function(a){a.D()})};\r
18416 F.A7a=function $TJ(){return{FTc:this.X(RE),ETc:this.X(Kd),Vlb:this.X(Xx),xUc:this.X(Rd),rVc:this.X(Hz),sVc:UUa(this),bjb:k,tRa:this.vHb}};F.Vh=function $UJ(){VI.C.Vh[z](this);var a=this.ia.b();Q(a,GUa(this.A7a()));var c=this.W5();c&&K(a,c);an(a,h,h)};F.ma=function $VJ(){VI.C.ma[z](this);var a=this.xKb=[this.b(Kd),this.b(Rd)],c=this;this.cC(function(f,g){f.eb(c,a[g])});var d=this.b();Pw(this.H().w(d,[Xi,Yi],this.Spb),d,aB,this.mTa);IUa(this);WUa(this)};\r
18417 F.Ba=function $WJ(){if(!this.Pc){Pg(this.b(Kd));Pg(this.b(Rd))}if(this.nm){this.nm.D();this.nm=undefined}this.D1b=k;this.H().wb();VI.C.Ba[z](this)};F.L=function $SJ(){this.cC(function(a){a.D()});VI.C.L[z](this)};F.Spb=function $XJ(a){OUa(this,a[y],function(c){a[Zb]==Xi?c.qA(a):c.q_(a)})};F.mTa=function $YJ(a){this.Cb.lf();var c;OUa(this,a[y],function(d){if(!(a[Zb]==P&&(a[Bc]||a[dd]))){c=d.qk(a);a[zb]();a[Ec]()}});c&&PUa(this,k)};\r
18418 F.N3c=function $ZJ(a){if(a[Zb]==fj&&nm(a,0)||a[Zb]==Zi&&a[Sb]==13)PUa(this,!!!(this.nm&&this.nm.Bv()))};F.s7a=function $_J(){var a=new ZUa(this.b(),5,this.ifd,this),c=this.b(Xx);a=this.nm=new LG(c,a);cka(a);a.FVb=h;MG(this.nm,0,0,0,-5);a=G(this.H().w,this.H(),this.nm);a(mo,this.zpb);a(no,this.ypb);a(Go,this.xpb)};F.ifd=function $0J(a){var c=this.wdb();a=a[xk];var d=c[xk],f=this.b()[xk];if(a<f)ka(c[x],f-(a-d)+Jm)};F.zpb=function $1J(){RUa(this,h)};F.xpb=B();\r
18419 F.ypb=function $3J(){ka(this.wdb()[x],I);RUa(this,k)};F.wdb=function $4J(){return this.nm.b()};F.YT=function $5J(a){if(a){IUa(this);WUa(this);this.nm&&this.nm.Ib()&&this.nm.If()}};F.Rwb=function $6J(a,c){if(a){var d=a.ea();this.cC(function(f){f.Zh&&f.Zh(d)&&f.QQ(a,c)})}};F=MUa[w];F.eb=function $7J(a,c){c[o](this.wa)};F.Cc=function $8J(){return this.wa[A]!=i};F.b=D(eo);F.UZ=Ee();F.qA=B();F.q_=B();F.qk=function $cK(){if(this.na){this.na[z](this.Ela);return h}return k};F.D=B();H(YUa,MUa);\r
18420 YUa[w].eb=function $eK(a,c){this.lq=new BI(i,CI.S());this.lq.Pb(this.wa[Tb]);this.na&&ih(this.lq,Wn,this.na,k,this.Ela);c[o](this.wa)};YUa[w].qk=B();YUa[w].D=function $gK(){if(this.lq){this.lq.D();this.lq=i}};H(ZUa,dn);ZUa[w].If=function $hK(a,c,d){this.lFc[z](this.Ela,a);ZUa.C.If[z](this,a,c,d)};H(WI,xx);WI[w].Hoa=B();WI[w].Hoa.Ka=h;WI[w].iGa=B();WI[w].iGa.Ka=h;H(aVa,oH);var jnb="Loading labels";aVa[w].Ja=function $kK(a){aVa.C.Ja[z](this,a);a.Ua(pd,MN);a.Se(jnb)};H(YI,hy);yx(WI,YI);F=YI[w];F.L=function $lK(){this.Kka=i;YI.C.L[z](this)};na(F,function $mK(){Ix(this);if(this.oc)return this.oc;this.oc=new aVa(this);this.oc.Ie(this);this.oc[Mb]();return this.oc});F.rg=function $nK(){Ix(this);if(this.Fi()){this.mb.Qf();try{this.QK();for(var a=this.Uc().Oa(),c=0;c<a[u];c++)a[c].PK()}finally{this.mb.Mf()}}};\r
18421 F.x2c=function $oK(a){a=a[dq];this.mb.Qf();try{var c=a[1],d=a[2];this.CFb(c);var f=this.za(cJ);if(f)f.nM(c);else new eTa(cJ,c,this);var g=this.za(ZI);if(g)g.nM(d);else new eTa(ZI,d,this);my(this)}finally{this.mb.Mf()}};F.wh=function $pK(a){if(this.oc==a)this.oc=i};F.CFb=B();F.BFb=B();F.AFb=B();H(bJ,VI);yx(NI,bJ);F=bJ[w];F.W5=function $tK(){return this.aa.W5()};F.ma=function $uK(){bJ.C.ma[z](this);hVa(this)};F.L=function $vK(){bJ.C.L[z](this);this.V_&&this.V_.D();this.zP&&this.zP.D();this.nm&&this.nm.D()};F.UZ=function $wK(a,c,d){this.cC(function(f){c==f instanceof SI&&f.UZ(a)},d);return a};F.EMa=function $xK(a,c,d){this.cC(function(f){c==f instanceof SI&&f.EMa(a)},d);return a};var knb="Compose Mail";\r
18422 F.p5b=function $yK(){if(this.co.Fi()){this.V_.wb();Jz(Rz(this.B()),1033)&&this.hq(0,knb,this.i_c,this);lVa(this,nD(this.B()));nVa(this)}};F.i_c=function $zK(a){a[dd]||a[Bc]?AFa(this.Lh,a[Bc]):this.Zmb()};F.Zmb=function $AK(){QF(this,ZO);this.I8[bq]({view:QO})};F.Hpb=function $BK(){this.Ks=new lnb(this.B(),this,16);var a=this.zP=new CQ(this.B(),this.b(),this.Ks);this.cC(function(c){c.XXa&&c.XXa(a)})};F.H2c=function $CK(){hVa(this)};F.wdb=function $DK(){return Gg(T,DUa,this.nm.b())[0]||this.nm.b()};\r
18423 F.s7a=function $EK(){bJ.C.s7a[z](this);this.nm.Laa(this.Bd.Zf);this.nm.RNb=k;this.aa.Ykb(this.H(),this.nm)};F.zpb=function $FK(a){bJ.C.zpb[z](this,a);nVa(this)};F.xpb=function $GK(a){bJ.C.xpb[z](this,a);var c=a[y];c&&this.zP&&this.zP.yUc(c)&&a[zb]()};F.ypb=function $HK(a){bJ.C.ypb[z](this,a);nVa(this)};F.dRb=function $IK(){return this.bL[0][2]};F.Spb=function $JK(a){if(!this.sNb||a[Zb]==Yi)bJ.C.Spb[z](this,a)};F.YT=function $KK(a){bJ.C.YT[z](this,a);XUa(this,this.G1);a&&nVa(this)};\r
18424 F.Rwb=function $LK(a,c){if(a){var d=a.ea();this.cC(function(f){f.QQ&&f.QQ(a,c&&f.Zh(d))})}};F.B=function $MK(){return this[uq]()};H(oVa,xx);oVa[w].Nk=B();oVa[w].Nk.Ka=h;H(pVa,xx);pVa[w].Nk=B();pVa[w].Nk.Ka=h;H(zVa,pA);yx(pVa,zVa);zVa[w].TZc=function $PK(a){this[r](P);a[Ec]()};H(gJ,AD);F=gJ[w];F.ey=I;F.ug=I;F.lV=i;F.ha=function $QK(a){this.ia.ha(a)};F.Jf=function $RK(a,c){this.ia.Jf(a,c)};lk(F,function $SK(a){this.ia[Nc](a)});F.hq=B();F.Uc=function $UK(){return this.ia.Uc()};F.Fc=Ge(RN);F.Le=D(RN);F.aha=E(i);F.jB=B();F.AA=E(h);F.P1=function $_K(a){if(this.ey!=I){var c=this.ey[Cc](J);for(var d in c)Ag(this.b(),c[d])}a!=I&&K(this.b(),a);this.ey=a};F.hea=B();var DVa;H(iJ,AD);F=BVa[w];F.iod=3;F.hod=new Bm(CF.top,CF[rl],0,CF[Ck]);F.jod=new Bm(-2,0,0,0);F.Lyc=0;F.Kyc=new Bm(0,1,1,1);F.Nyc=new Bm(0,0,0,0);F=iJ[w];F.L=function $1K(){iJ.C.L[z](this);this.Wq.D();this.lV=i};F.ha=function $2K(a){this.Wq.ha(a)};F.Jf=function $3K(a,c){this.Wq.Jf(a,c)};lk(F,function $4K(a){this.Wq[Nc](a)});F.hq=function $5K(a){this.Wq.hq(a)};F.Uc=function $6K(){return this.Wq.Uc()};va(F,D(YP));F.P1=function $8K(a){this.Wq.P1(a)};F.Fc=function $9K(a){this.Wq.Fc(a)};F.Le=function $$K(){return this.Wq.Le()};\r
18425 F.aha=function $aL(){return this.Wq.aha()};F.jB=function $bL(a){this.Wq.jB(a)};F.AA=function $cL(){return this.Wq.AA()};F.TE=function $dL(a){for(var c=this.Uc(),d=0;d<c[u];d++){var f=c[d];f.TE&&f.TE(a)}};var mnb="Ka";F.qc=function $eL(a){iJ.C.qc[z](this,a);this[r](mnb)};F.li=D("Wq");F.yka=B();_B_prog(71)}catch(e){_B_err(e)}\r
18426 \r
18427 try{H(jJ,gJ);yx(oVa,jJ);F=jJ[w];F.zhc=k;F.ha=function $hL(a){this.hy.ha(a)};F.Jf=function $iL(a,c){this.hy.Jf(a,c)};lk(F,function $jL(a){this.hy[Nc](a)});F.hq=function $kL(a){this.W().ie(T,vVa,this.eq.b())[0][o](a.b());if(!this.Yf)this.Yf=[];this.Yf[p](a)};F.Uc=function $lL(){return this.hy.Uc()};F.Fc=function $mL(a){jJ.C.Fc[z](this,a);this.xo()};F.Cdc=function $nL(a){this.zhc=a;this.xo()};var DQ="pr",EQ="pv",nnb="alt",onb="Collapse",pnb="Expand";\r
18428 F.jB=function $oL(a){if(this.FOb!=a){this.FOb=a;var c=this.eq.b(),d=this.W().ie(ne,de,c)[0];if(a){qm(c,DQ,EQ);d[Wb](nnb,onb)}else{qm(c,EQ,DQ);d[Wb](nnb,pnb)}this.hy.qc(a)}};F.AA=function $pL(){return!!this.FOb};var qnb="pS";F.hea=function $qL(){var a=this.ia;a.ha(this.lLb());a.ha(this.TKb());this.P1(qnb)};F.ma=function $rL(){jJ.C.ma[z](this);this.xo();this.H().w(this.eq.b(),[P,ij],this.Ynb);K(this.lV.b(),QE)};\r
18429 F.Ba=function $sL(){jJ.C.Ba[z](this);this.H().wb();if(this.Yf){for(;this.Yf[u]>0;)this.Yf.pop().D();this.Yf=i}};F.lLb=function $tL(){if(this.XF)e(Error(".152"));var a=this[uq]();this.eq=new eE(a);var c={alt:onb};this.aa.Nk(c);this.eq.xb(wVa(c));c=this.W().ie(ne,de,this.eq.b())[0];fn(c,jo);K(this.eq.b(),EQ);this.XF=new BF(a);this.XF.so(this.eq);a=CVa();this.XF.U1(a.jod);DF(this.XF,a.hod,a.iod);a=this.XF.b();K(a,RE);return this.XF};F.aha=D("XF");\r
18430 F.TKb=function $vL(){if(this.hy)e(Error(".153"));var a=this[uq]();this.hy=new gF(a);this.cw=new BF(a);this.cw.so(this.hy);K(this.cw.b(),TO);K(this.hy.b(),oe);a=CVa();this.cw.U1(a.Nyc);DF(this.cw,a.Kyc,a.Lyc);return this.cw};var rnb="h2",snb=" &raquo;";F.xo=function $wL(){if(this.Cc()){var a=Gg(rnb,tVa,this.eq.b())[0],c=this.Le();if(this.zhc){K(a,Jm);c+=snb}else Ag(a,Jm);Q(a,c);this.eq.qe()}};var FQ="La";\r
18431 F.Ynb=function $xL(a){if(!(a[Zb]==ij&&(a[Ob]||a[Sb])!=13)){if(Bg(a[y],Jm))this[r](FQ);else{this.jB(!this.AA());this[r](hJ)}a[Ec]()}};H(kJ,iJ);kJ[w].Qh=function $yL(a,c){for(var d=this.Uc(),f=0;f<d[u];f++){var g=d[f];g.Qh&&g.Qh(a,c)}};kJ[w].TE=function $zL(a){kJ.C.TE[z](this,a);this.Wq.jB(EVa(this))};kJ[w].yka=function $AL(){var a=this.Wq.AA();if(a!=EVa(this)){var c=this[uq](),d=FVa+this[ec];a=a?1:0;this.lb.Yc(d,a);c=new lF(c);c.Yc(d,a);c.bh=h;c[Mb]()}};kJ[w].B=function $BL(){return this[uq]()};Nx(Mx(),14,function(b,a){return a?new jJ(b):new gJ(b)});H(GVa,kJ);Mx().Ug(2,function(b){b=b.B();var a=new GVa(b,Mx().Gn(14,b,k)),c=QIa(hF(b),Xz);dG(b).cCa(c,a)});GVa[w].GO=D("LU");GVa[w].TE=function $DL(a){var c=a.md();a=c==wE||c==YK||c==xE?a.Bb():i;a=Xy(a);XUa(this.LU,NC(this.cg,a))};H(HVa,xx);HVa[w].un=E(wN);HVa[w].un.Vd=h;H(IVa,AD);var tnb=155;F=IVa[w];F.DXa=0;F.Yh=function $FL(){return tnb};F.hGa=function $GL(a){var c;c=jm(this.Aj,a,JVa(k));c=c<0?-(c+1):c;km(this.Aj,a,c);K(a.Ra.b(),dP);this.ia.Jf(a.Ra,c)};F.sRb=E(i);F.daa=function $IL(a){for(var c=this.ia,d=c.Uc(),f=d[u]-1;f>=0;f--)if(d[f]==a){c.Vp(f);for(f=0;f<this.Aj[u];f++)if(this.Aj[f].Ra==a){this.Aj[jd](f,1);return h}break}return k};F.wH=function $JL(a){return(a=this.Aj[qH(this,a)])?a.Ra:i};F.FO=function $KL(a){return this.Aj[a]};\r
18432 F.TE=function $LL(a){for(var c=0;c<this.Aj[u];c++){var d=this.Aj[c].Ra;d.TE&&d.TE(a)}};MVa[w].Hp=D(J3a);MVa[w].B6=D(cmb);MVa[w].lma=Ge(cmb);H(mJ,IVa);F=mJ[w];F.rKb=function $PL(){this[uq]();var a=this.lb.db(nJ),c=new Hf;if(Ue(a)){a=a[Cc](Bl);for(var d=0;d<a[u];d++){var f=a[d][Cc](xj);f!=I&&c.set(f[0],Number(f[1]))}}else{a=this.lb.nf(oJ);c.set(pJ,a?75:85)}this.iVa=c;this.iJa=h;yA++;try{this.ia.Ql(this.Yh());var g=this.Aj;if(g[u]>0){this.Aj=[];c=0;for(var j=g[u];c<j;c++)this.hGa(g[c])}}finally{zA()}this[uq]();this.H().w(this.Aa.Ya(),this.lb.Yn(oJ),this.Bic);this.Bic();Mx().Kh(240)};F.iJa=k;F.Yh=function $QL(){return sga||mJ.C.Yh[z](this)};\r
18433 F.daa=function $RL(a){if(mJ.C.daa[z](this,a)){OVa(this);return h}return k};F.sRb=function $SL(a){if(!this.iJa)return i;return this.iVa.J(a)};F.Qh=function $TL(a,c){for(var d=0;d<this.Aj[u];d++){var f=this.Aj[d].Ra;f.Qh&&f.Qh(a,c)}};F.hGa=function $UL(a){this.iJa?mJ.C.hGa[z](this,a):this.Aj[p](a)};F.daa=function $RL(a){if(!this.iJa)return jf(this.Aj,a);mJ.C.daa[z](this,a)};\r
18434 F.Bic=function $VL(){this[uq]();var a=qH(this,pJ),c=qH(this,ZI),d=this.lb.nf(oJ);if(a==i||c==i)this.lb.db(nJ)||this.iVa.set(pJ,d?75:85);else d!=c<a&&NVa(this,a,c)};H(qJ,PI);yx(HVa,qJ);qJ[w].TE=function $WL(a){this.zm(a.md()==SO)};qJ[w].rSa=function $XL(){if(DD())vE(this[uq]());else{QF(this,fcb);this.jb[bq]({view:SO})}};qJ[w].jmb=Ee();H(rJ,xx);rJ[w].AYa=B();rJ[w].AYa.ic=h;rJ[w].Pca=B();H(VVa,kJ);yx(rJ,VVa);Mx().Ug(2,function(b){b=b.B();var a=new VVa(b,Mx().Gn(14,b,k));a.aa.AYa()?sH(b).Rca(a,sJ,95):a.D()});VVa[w].hea=function $0L(){var a=this.B();if(!bx()||Rz(a)[Bq](5058))this.aa.Pca(this,a)};VVa[w].Pca=function $1L(a,c){this.c2b.set(a,c);this.ha(c)};H(tJ,pB);F=tJ[w];F.Bb=D(NO);F.Ii=Ge(NO);F.Hc=D("Sq");F.cD=Ge("Sq");F.Cr=function $6L(){return this.wf[u]==1};F.Ja=function $7L(a){tJ.C.Ja[z](this,a);a.Be(Xx,this.wf);a.Ii(this.Ea)};H(vJ,tJ);vJ[w].Wd=E(i);vJ[w].Zg=E("Starring message");vJ[w].Ja=function $$L(a){vJ.C.Ja[z](this,a);this.aa.Ja(a)};yx(XVa,vJ);XVa[w].Ja=B();YVa[w].zC=ki;YVa[w].UXa=Ge("zC");H(xJ,vH);xJ[w].D=function $cM(){xJ.C.D[z](this)};xJ[w].yK=Me;xJ[w].Bb=Me;xJ[w].B=D(JF);var bWa=1,unb="parent";yJ[w].Ig=Ge(unb);yJ[w].Zj=function $fM(a,c){return this[Oc].Zj(a,c)};yJ[w].vs=function $gM(a,c){return this[Oc].vs(a,c)};yJ[w].W=function $hM(){return this[Oc].W()};H(cWa,yJ);F=cWa[w];va(F,D(LL));F.I2=Me;F.fZc=function $jM(a,c,d){var f=a[Zb];return f==P||f==ej?this.Vya(a,c,d):f==ij?this.mob(a,c,d):f==Xi?this.R3b(a,c,d):f==fj?nm(a,2)?void 0:this.Wya(a,c,d):f==pj?void 0:k};F.R3b=Me;F.Vya=Me;F.mob=Me;F.Wya=Me;dWa[w].ea=function $kM(){return this.zYb.ea()};dWa[w].getItem=D("zYb");dWa[w].Vo=D("YK");var vnb="bF";dWa[w].Eb=D(vnb);H(zJ,cWa);var wnb=aWa(),xnb=aWa(),GQ={};F=zJ[w];F.Wla=Ge("Ada");var HQ='<td id="',ynb="-x3",znb="-jd",IQ='<input id="',Anb="-jc",Bnb='" type="checkbox" aria-labelledby="',JQ=' checked="true"',Cnb=" /></td>";\r
18435 F.sW=function $pM(a,c){var d=a[Vp]().ea();GQ.Mwc=this.Zj(xnb,d);GQ.qq=this.Zj(wnb,d);GQ.fRc=this.eRc?this.Zj(this.eRc,d):I;GQ.LH=a.Vo();lma(GQ,I);GQ.Oeb=this.Iua;GQ.jwc=this.Ada?J+this.Ada:I;a=c||new U;a[R](HQ,GQ.Mwc,S,GQ.Oeb+ynb,GQ.jwc,yF,V(GQ[x]),W);xI({Hb:GQ.Oeb+znb},a);a[R](IQ,GQ.qq,S,GQ.Oeb+Anb,Bnb,GQ.fRc,Vf,GQ.LH?JQ:I,Cnb);c||a[t]()};\r
18436 F.I2=function $qM(a,c){var d=c.ea(),f=c.H_a;if(f&2){var g=this.vs(xnb,d);if(g){var j=c.Eb();g=Wg(g);if(L)if(j){a=Sw(a);j=Sw(g[mha]);g[x].top=a-j+5+Jm}else g[x].top=I;else Fa(g[x],j?ud:I)}}if(f&1)if(d=this.vs(wnb,d))zp(d,c.Vo())};F.Wya=function $rM(a,c,d){c=d[Vp]();c=this.Zj(xnb,c.ea());a[y].id==c&&a[zb]();return h};F.Vya=function $sM(a){a.gNb=h;a[y][Ek]();return h};F.mob=function $tM(a){return a[Sb]==13};_B_prog(72)}catch(e){_B_err(e)}\r
18437 \r
18438 try{eWa[w].sM=function $uM(){this.Wra++};eWa[w].ww=function $vM(){this.Wra!=0&&this.Wra--};H(AJ,AD);F=AJ[w];F.uz=Me;F.cub=Me;F.insertRow=Me;F.hB=Me;F.Oic=Me;F.AHa=Me;F.PLa=Me;F.QGa=Me;F.eM=Me;F.Rdb=Me;F.eua=Me;F.Lub=Me;F.MPb=Me;H(BJ,tB);var Dnb="All conversations have been added to ",Enb="All conversations have been removed from ",Fnb=" and added to ",Gnb="The conversation has been added to ",Hnb="The conversation has been removed from ",Inb=" conversations have been added to ",Jnb=" conversations have been removed from ";\r
18439 BJ[w].yp=function $wM(){var a;a=this.okb;var c=this.pkb;a=this.Lp()?c[u]==0?Dnb+(CJ(this,a)+He):a[u]==0?Enb+(CJ(this,c)+He):Enb+(CJ(this,c)+(Fnb+(CJ(this,a)+He))):this.Cr()?c[u]==0?Gnb+(CJ(this,a)+He):a[u]==0?Hnb+(CJ(this,c)+He):Hnb+(CJ(this,c)+(Fnb+(CJ(this,a)+He))):c[u]==0?this.Mg()[u]+(Inb+(CJ(this,a)+He)):a[u]==0?this.Mg()[u]+(Jnb+(CJ(this,c)+He)):this.Mg()[u]+(Jnb+(CJ(this,c)+(Fnb+(CJ(this,a)+He))));return sB(this,a,6560,h)};var Knb="acn",Lnb="rcn";\r
18440 BJ[w].Ja=function $xM(a){BJ.C.Ja[z](this,a);a.Ua(fG,this.UR);a.Ua(Knb,this.okb);a.Ua(Lnb,this.pkb)};H(fWa,tB);var Mnb="Drafts have been deleted from all conversations.",Nnb="Drafts have been deleted from the conversation.",Onb="Drafts have been deleted from ";fWa[w].yp=function $yM(){var a;a=this.Lp()?Mnb:this.Cr()?Nnb:Onb+(this.Mg()[u]+Dab);return sB(this,a,i,k)};H(gWa,tB);gWa[w].Ja=function $zM(a){if(!this.hia)e(Error(".156"));if(this.Ea.Ga()!=Yy)e(Error(".157"));gWa.C.Ja[z](this,a)};var Pnb="All messages marked spam have been deleted forever.";gWa[w].yp=function $AM(){return sB(this,Pnb,i,k)};H(hWa,tB);var Qnb="All conversations have been delivered.",Rnb="The conversation has been delivered.",Snb=" conversations have been delivered.";hWa[w].yp=function $BM(){var a;a=this.Lp()?Qnb:this.Cr()?Rnb:this.Mg()[u]+Snb;return sB(this,a,6602,k)};H(iWa,tB);iWa[w].Ja=function $CM(a){if(!this.hia)e(Error(".158"));if(this.Ea.Ga()!=Zy)e(Error(".159"));iWa.C.Ja[z](this,a)};var Tnb="All messages in the Trash have been deleted forever.";iWa[w].yp=function $DM(){return sB(this,Tnb,i,k)};H(DJ,xx);F=DJ[w];F.Oca=B();F.Oca.Ka=h;F.Fs=B();F.Fs.ic=h;F.KW=B();F.KW.Ka=h;F.XRb=B();F.qqb=B();F.qqb.Ka=h;F.D=B();F.D.Ka=h;F.qja=B();F.qja.Vd=h;F.Udb=E(I);F.Udb.Vd=h;var GJ;H(FJ,VB);yx(DJ,FJ);Nx(Mx(),16,function(b){return new FJ(b)});var JJ={},KJ=[];F=FJ[w];F.Me=I;F.b2=h;F.oyb=h;F.Jy=I;F.On=I;F.oga=D("Yf");F.T1=function $NM(a){this.om.T1(a);this.Me=a};var KQ="On";F.gp=Ge(KQ);F.jh=D(KQ);F.vc=function $QM(){var a=wWa(this);OWa(a,this.Jy);return a};var Unb='<div act="',Vnb='" class="AO" tabindex="0">',Wnb='<div class="AQ">';\r
18441 F.wc=function $RM(){if(this.Owa)e(Error(".160"));la(JJ,this.jh());JJ.EYa=this.Ar(19);JJ.iuc=19;var a;a=new U;a[R](JJ.EYa?Unb+JJ.iuc+Vnb+JJ[jb]+Z:JJ[jb]?Wnb+JJ[jb]+Z:I);a=a[t]();this.Hvb=[a,this.oyb?this.aa.Udb():I,LWa(this),this.b2?HWa(this):I,this.b2?AWa(this):I];this.Ar(20)&&km(this.Hvb,JWa(this),this.Hvb[u]);Mx().Kh(90,this);JJ.Zgd=this.Hvb;OWa(this,jWa(JJ))};F.D=function $SM(){FJ.C.D[z](this);this.aa.D()};F.ma=function $TM(){FJ.C.ma[z](this);this.Owa&&this.b2&&PWa(this)};\r
18442 F.D=function $SM(){ph(this.b());FJ.C.D[z](this);this.om.D();for(var a in this.Yf){ph(this.Yf[a]);this.Yf[a].D()}this.Yf=i};F.qja=function $UM(a){this.oyb&&this.aa.qja(a)};\r
18443 F.p8=function $VM(){if(!this.Wyc){ph(this.b());var a=this.b(BWa),c=this.b(CWa);if(a){this.om.ZLb(a,c);this.om.B8a(c,a)}else this.om.B8a(c,c);a=this.X(xWa);var d;c=this.b()[ic](T);for(var f,g=0;f=c[g];g++){d=i;var j=Number(f[Uc](fG)||f.act);if(f.id==a){d=this.om;f=f;d.XM=JXa(d,f,f,f,d.RXc);d.p2a=d.W().ba(T,{"class":xo,style:DG});f[A][A][o](d.p2a);d=d.XM}else if(j==19||j==20)this.H().w(f,[fj,P,ij],this.M0c);else if(j&&f[uc][Db](yI)!=-1){d=new BI(i,CI.S());d.Pb(f);d.kb=j;this.Yf[j]=d}d&&ih(d,Wn,this.lh,\r
18444 k,this)}this.Wyc=h}};F.lh=function $WM(a){a[y].b();var c=a[y].kb;uC(this.Cb);if(!ia(c)&&c>0){var d=c==13?this.Me:a[y].un();this[r](new XB(c,d));a[Ec]();this.Cb.lf()}};F.r_a=function $XM(){this.p8();this.om.r_a()};F.s_a=function $YM(){this.p8();this.om.s_a()};F.q_a=function $ZM(){this.p8();this.om.q_a()};F.Fs=function $_M(a){switch(a){case 13:case 7:case 9:case 10:case 8:case 4:case 17:case 15:case 16:case 18:case 20:case 19:return h}return this.aa.Fs(a)};var Xnb=":21";\r
18445 F.M0c=function $0M(a){var c=a[Zb],d=a[y],f=k,g=d[A],j=I;g=Number(d[Uc](fG)||d.act||g&&d[A][Uc](fG));if(ia(g)||!this.Ar(g))g=0;if(c==fj&&a[Cb]==(L?1:0)&&g==19){f=this.nMb=h;uC(this.Cb);if(L)bA(Xnb,this.Cb.lf,0,this.Cb);else{this.Cb.lf();a[zb]()}}else if(c==P&&g==19&&this.nMb)this.nMb=k;else if(g&&(c==P||c==ij&&(a[Sb]==13||Jg&&a[Sb]==3))){f=h;uC(this.Cb);this.Cb.lf();g==20&&this.aa.qqb();a[Ec]()}if(f&&g>0){j=g==13?this.Me:d[Tb][md];this[r](new XB(g,j))}};\r
18446 F.KW=function $1M(a,c){switch(a.Ga()){case iz:c==wE&&TB(this,16,h);break;case Yy:TB(this,17,h);TB(this,18,h);break;case Zy:TB(this,17,h);TB(this,9,h);break;case Py:TB(this,13,h);TB(this,9,h);TB(this,10,h);break;default:TB(this,7,h);TB(this,9,h);TB(this,10,h)}a.Ga()==Py&&this.T1(a.Pt());this.oyb=c!=YK;this.aa.KW(a,c);this.Ea=a};H(LJ,Rn);Ne(LJ);LJ[w].Pb=function $2M(a,c){c=LJ.C.Pb[z](this,a,c);this.rKa(a,Gg(Do,YWa,c)[0]);return c};H(RWa,Mn);Ne(RWa);RWa[w].Qb=E(UJ);H(MJ,Qn);MJ[w].Onb=i;MJ[w].ma=function $4M(){MJ.C.ma[z](this);NJ(this)};wn(UJ,function(){return new MJ(i)});H(OJ,Sn);F=OJ[w];F.e0b=0;F.Me=I;F.HGa=k;F.eEc=0;var Ynb="-JJ";F.ba=function $5M(){OJ.C.ba[z](this);var a=this.W(),c=a.ba(T,this.li().Qb()+Ynb,this.cxa=a.ba(T,i,this.Me),this.gm=a.ba(zm,{type:Il})),d=this.b();a[o](d,c);this.vqa=a.ba(T,this.li().Qb()+Nn);a[o](d,this.vqa);TWa(this)};\r
18447 F.ra=function $6M(a,c){if((c=OJ.C.ra[z](this,a,c))&&a&&this.Cc()){this.gCa(I);if(!this.Ve&&this.gm){this.Ve=new Am(this.gm);an(this.gm,k);ih(this.Ve,zm,this.kUb,k,this);ih(this.gm[A],P,this.H4b,k,this);if(this.HGa)this.nLa=[]}}else c&&!a&&UWa(this);return c};F.L=function $7M(){UWa(this);this.cxa=this.gm=undefined;OJ.C.L[z](this)};F.gCa=function $8M(a){if(this.gm){pa(this.gm,a);WWa(this,a)}};F.GE=function $9M(){return this.gm&&Ye(this.gm[q])?this.gm[q]:I};\r
18448 F.kUb=function $$M(){WWa(this,this.gm[q]);var a=Kn(this);if(!a||!a.Ib())Ln(this);this[r](cXa)};F.Qo=function $aN(a){if(a[dd]||a[Bc]||a[rc]||a[Sb]==36||a[Sb]==35)return k;if(a[Sb]==27){this[r](kj);return h}return OJ.C.Qo[z](this,a)};F.dp=function $bN(a){OJ.C.dp[z](this,a);a=this.Cd();var c=Kn(this)?Kn(this).b():i;if(c&&Zg(a,c)){var d=L?0:a[ol],f=c[ol]+c[ql]-d-(a[Wc]+a[Nk]);a.scrollTop+=l.max(f,0);f=a[Nk]-(c[ol]-d);a.scrollTop-=l.max(f,0)}};F.H4b=function $cN(){this.gm[Ek]()};\r
18449 F.Cd=function $dN(){return this.vqa||this.b()};F.Ff=function $eN(a){this.wa=a;a=this.W().ie(T,this.li().Qb()+Ynb,a)[0];this.cxa=Wg(a);this.gm=Yg(this.cxa);(this.vqa=(a=Yg(a))&&Bg(a,this.li().Qb()+Nn)?a:i)&&XWa(this,Wg(this.vqa));XWa(this,Yg(a));TWa(this)};H(QJ,Jf);QJ[w].fe=D("Ls");QJ[w].L=function $gN(){QJ.C.L[z](this);this.Ls.D();this.Ls=i};H(dXa,QJ);dXa[w].l3c=function $hN(a){a=a[y];if(Kn(a)){var c=Kn(a).b();Number(c[Uc](fG)||c.act)==14&&a.dp(-1)}};dXa[w].o3c=function $iN(a){if(a[Sb]==9){this.lq.vj()&&kXa(this,h);a[zb]()}};_B_prog(73)}catch(e){_B_err(e)}\r
18450 \r
18451 try{H(iXa,dXa);iXa[w].j3c=function $jN(a){if(a[y]instanceof RJ){a=[];kXa(this,jXa(this,a,a))}};iXa[w].Vm=function $kN(a){a=a[y].b();a=Number(a[Uc](fG)||a.act);this.lq.Hi(k);uC(this.Cb);if(a==78)this.M_b&&this.M_b();else if(a==14){a=this.Ls.GE();this.aLb&&this.aLb(a)}else{a=[];var c=[];jXa(this,a,c)&&this.FFb&&this.FFb(a,c)}};H(SJ,Mn);Ne(SJ);SJ[w].Pb=function $lN(a,c){c=SJ.C.Pb[z](this,a,c);this.Uaa(a,c,h);if(Bg(c,this.Qb()+oXa))lXa(a,2);else Bg(c,this.Qb()+nXa)?lXa(a,1):lXa(a,0);return c};SJ[w].Qb=E(xXa);H(RJ,Qn);RJ[w].Dda=0;RJ[w].k3a=k;RJ[w].ox=function $nN(a){switch(this.Dda){case 0:mXa(this,this.k3a?1:2);break;case 1:mXa(this,2);break;case 2:mXa(this,0);break}var c=this.li().Qb()+Fja;return this[r](a[y]&&Bg(a[y],c)||this.k3a?mj:Wn)};wn(xXa,function(){return new RJ(i)});H(pXa,xx);F=pXa[w];F.tra=E(i);F.tra.Vd=h;F.pCa=B();F.pCa.Vd=h;F.Uga=E(i);F.Uga.Vd=h;F=GXa[w];F.Jo=D(Plb);F.q6=function $sN(a){return this.Jia[a]};F.sga=function $tN(){var a=this;return function(c,d){var f=a.HT(c.kb),g=a.HT(d.kb);return g>f?1:g<f?-1:fm(a.q6(c.kb).Nx,a.q6(d.kb).Nx)}};F.Ltb=B();F.D=B();F.HT=function $wN(a){return this.I1[a]||0};F.hCa=function $xN(a,c){this.I1[a]=c};F.AJb=function $yN(){this.I1={}};H(VJ,VB);yx(pXa,VJ);Nx(Mx(),19,function(b){return new VJ(b)},1);VJ[w].Me=I;VJ[w].Fmb=h;VJ[w].ikb=h;VJ[w].B2c=function $zN(){this.K2()};var vXa={},Znb=vXa;Znb[8]=FN;Znb[9]=JN;Znb[10]=LN;F=VJ[w];F.T1=Ge(AM);F.Dd=D(AM);F.ZLb=function $CN(a,c){this.hV=JXa(this,a,a,c,this.W3c,h);this.Hmb=this.W().ba(T,{"class":xo,style:DG});a[A][A][o](this.Hmb);return this.hV};F.B8a=function $DN(a,c){this.U_=JXa(this,a,c,a,this.u2c,h);this.jkb=this.W().ba(T,{"class":xo,style:DG});a[A][A][o](this.jkb);return this.U_};\r
18452 F.tra=function $EN(a){return this.aa.tra(a)};F.pCa=function $FN(a){this.aa.pCa(a)};F.s_a=function $GN(){this.hV&&KXa(this,this.hV)};F.q_a=function $HN(){KXa(this,this.U_)};F.r_a=function $IN(){KXa(this,this.XM)};F.Yb=function $JN(){for(var a=[this.U_,this.XM,this.hV,this.aa.Uga()],c=0;c<a[u];c++){var d=a[c];d&&d.Hi(k)}};F.aQ=function $KN(a){if(a[y]instanceof Sn||a[y]instanceof OJ){this.Cb.lf();LXa(a[y].b())}};var LQ="mam_before_show",aob=":22";\r
18453 F.W3c=function $LN(){this[r](LQ);if(this.Fmb){PXa(this);this.Fmb=k;if(Jg||L)bA(aob,G(this.APb,this,this.iV.fe()),100)}for(var a=this.iV.fe(),c,d,f=0;d=a.rb(f);f++){var g=d.b();g=Number(g[Uc](fG)||g.act);if(g==76)d.ra(d.kb!=this.Dd());else if(g){d.ra(this.Ar(g));g=d;var j=!d.Ib();if(!a.z9)a.z9={};a.z9[g.ea()]=j;if(d.Ib())c=d}else if(d instanceof Hn){d.ra(!(c instanceof Hn));c=d;g=!d.Ib();if(!a.z9)a.z9={};a.z9[c.ea()]=g;c=d}}dE(this.B()).pb(this.kp==wE?zgb:Bgb);NJ(a.rb(rn(a)-2));LXa(this.Hmb,10)};\r
18454 F.u2c=function $MN(){this[r](LQ);if(this.ikb){QXa(this);this.ikb=k;if(Jg||L)bA(aob,G(this.APb,this,this.DA.fe()),100)}for(var a=this.DA.fe(),c=[],d,f=0;d=a.rb(f);f++)if(d instanceof RJ){lXa(d,this.Qm.HT(d.kb)||0);c[p](d)}c[el](this.Qm.sga());a.Cd();for(f=0;d=c[f];f++)a.Jf(d,f);dE(this.B()).pb(this.kp==wE?Dgb:Fgb);LXa(this.jkb,10);kXa(this.DA,k)};\r
18455 F.RXc=function $NN(){this[r](LQ);this.hn||RXa(this);var a=this.hn.fe(),c=IXa(this),d,f,g=this.ac().oga();if(UXa(this))for(d=0;f=c[d];d++){a.rb(d).ra(!g[f]&&this.Ar(f));a.rb(d).Ac(MXa(this,f))}else for(d=0;f=c[d];d++){a.rb(d).ra(!g[f]&&ef(this.dMb,f));a.rb(d).Ac(k)}this.XM.b()[Ek]();dE(this.B()).pb(this.kp==wE?xgb:ygb);LXa(this.p2a,10)};F.APb=function $ON(a){if(a.gm){pa(a.gm||i,I);(a.gm||i)[Ek]()}};\r
18456 F.V3c=function $PN(a){var c=a[y].b();c=Number(c[Uc](fG)||c.act);uC(this.Cb);if(!ia(c)&&c>0)if(c==78)this.j7b();else if(c==14)(a=Pf(this.iV.fe().GE()))&&hEa(this.cg,a,this.zLa)?this.s3(76,a):OXa(this,76);else this[r](new XB(c,a[y].kb));dE(this.B()).pb(this.kp==wE?Agb:Cgb)};F.t2c=function $QN(){dE(this.B()).pb(this.kp==wE?Egb:Ggb)};F.fUc=function $RN(a){a&&hEa(this.cg,a,this.zLa)?this.s3(14,a):OXa(this,14)};F.t3=function $SN(a,c){this[r](new XB(77,[c,a]))};\r
18457 F.DWa=function $TN(){Wm(VJ.Em,k);var a=this.W().cb(),c=Mg(pm(a)||ba);Rm(VJ.Em,a[Lc][bl],l.max(this.Cb.Nr[Rb],c[id]));Wm(VJ.Em,h)};F.j7b=function $UN(){this.jb[bq]({view:dJ,fk:LC})};F.s3=function $VN(a,c){this[r](new XB(a,c))};var bob='" (create new)';F.vSa=function $WN(a,c){if(!this.Y6a&&!this.CGa)a.ra(k);else{c=Pf(c);if(c==I){a.ra(h);a.lM(FXa)}else{var d=hEa(this.cg,c,this.zLa);a.ra(d);var f=this.W();d&&a.xb(f.ba(PJ,i,Vf,f.ba(Ph,i,c),bob))}}};\r
18458 F.K2=function $XN(){var a=OC(this.Aa.za(LC),h);this.Qm=new GXa(this.B(),a);this.Fmb=this.ikb=h};F.Fs=function $YN(a){switch(a){case 76:case 77:case 78:return h}return VJ.C.Fs[z](this,a)};F.L=function $ZN(){VJ.C.L[z](this);this.hV&&this.hV.D();this.DA&&ph(this.DA.fe().b());this.U_&&this.U_.D();this.XM&&this.XM.D();this.aa.Uga()&&this.aa.Uga().D();this.d1b()};F.ZRa=B();F.d1b=B();F=eYa[w];F.qpa=Me;F.xHa=Me;F.dN=Me;F.Rcc=uN;F.eta=E(-1);F.m6b=Me;F.J3b=Me;F.PTa=Me;F.i6b=Me;F.brb=Me;F.b7b=Me;F.XTa=Me;F.Z6b=Me;F.a7b=Me;F.TFb=Me;F.mC=Me;F.UKb=Dy(i);F.idb=Dy(0);F.gub=Dy(I);F.kac=Dy(I);F=fYa[w];F.Og=20;F.Nza=0;F.T2a=0;F.n8=0;F.LBa=h;F.cXa=h;F.E_=k;F.Jw=D(xQ);F.Saa=Ge(xQ);F.Ut=D("Nza");F.nxb=Ge("LBa");F.Yla=Ge(dmb);H(gYa,uh);F=gYa[w];F.hIb=Zx;F.zm=function $7N(a){for(var c=[],d=a.Sb(),f=0;f<d[u];f++){var g=d[f],j=a.J(g);if(j!=this.Vo(g)){if(j)this.Cx[g]=h;else delete this.Cx[g];c[p](g)}}this[r](new iYa(c))};F.E6=function $8N(){return new Hf(this.Cx)};F.Vo=function $9N(a){return!!this.Cx[a]};F.XG=D("hIb");H(iYa,N);dk(aK[w],function $aO(a){return this.thd(a)});var MQ="All",NQ=new aK(cz,MQ,E(h)),OQ="None",cob=new aK(xd,OQ,E(k));H(bK,AD);F=bK[w];F.nR=h;F.EF=0;F.Th=-1;F.ft=2;F.mV=Zx;F.p4a=0;F.wc=function $bO(){var a=this.ia;Ff(this.jU,function(c){a.ha(c)});a.ha(this.Lj);this.kda=new eE(this[uq]());a.ha(this.kda);Ff(this.Fbb,function(c){a.ha(c)});this.H().w(this.vl,lYa,this.YJc);this.Uva()};F.cdc=Ge(KP);F.oma=Ge(vz);F.wr=D(wQ);F.Ut=D("az");F.Jw=D(xQ);F.Saa=Ge(xQ);F.nxb=Ge("LBa");F.vy=D(fnb);F.getItem=function $kO(a){return this.qi.J(a)};F.Dp=function $lO(){return this.Om[u]};\r
18459 F.FO=function $mO(a){if(a<0||a>=this.Om[u])return i;return this.Om[a]};F.Zsa=function $nO(){return this.Om[this.Th]};F.Mn=function $oO(a){this.Th=a;eK(this)};var dob="mV";F.ndc=Ge(dob);F.getSelection=D(VL);F.xwa=function $rO(){return this.Ll.hc()};F.eXb=function $sO(){this.Ll.rg()};F.Ydd=function $tO(a,c){a.w(this.Aa.Ya(),this.Ll.Je(),c)};var eob="NS";F.cja=Ge(eob);F.hSb=function $vO(){for(var a=0,c=this.Om,d=0;d<c[u];d++)this.vl.Vo(c[d].g_())&&a++;return a};\r
18460 F.Wb=function $wO(){this.Tl=h;CYa(this);yYa(this)};F.Df=function $xO(){this.Tl=k;eK(this)};F.Wvc=function $yO(){this.vda()};F.ola=function $zO(){pYa(this,kD)};Bp(F,function $AO(){this.vda();this.NS=k;this.Ll.rg();pYa(this,kD);CYa(this)});F.ZVa=function $BO(a){pYa(this,a)};F.luc=function $CO(a){var c=this.NS;this.cja(k);this.Ll.rg();pYa(this,Ph,a);!this.Bh&&c&&this.cja(h)};F.cp=function $DO(){this.nR=k;cK(this)};F.uW=function $EO(){this.ft=2;this.Th=-1;eK(this);this.SWa=i;this.NS=k};\r
18461 F.JQ=function $FO(){this.Tl&&this.LBa&&this.Lj.eM(this.Th)};F.cC=function $GO(a){for(var c=this.qi.Oa(),d=0;d<c[u];d++)a[z](this,c[d])};F.hB=function $HO(){return eK(this)};F.Uva=function $IO(){this.H().w(this.Aa.Ya(),this.Ll.Je(),this.efb);this.H().w(this.Aa.Ya(),this.Ll.pua(),this.dIc);this.Kd=this.Ll.wr();this.Kd.Yla(this.PD);this.H().w(this.Kd,XH,this.aIc)};F.vda=function $JO(){if(this.Bh){var a=this.Bh;this.Bh=i;a[wc]()}};F.CFc=function $KO(){return this.kda?this.kda.b():i};\r
18462 var fob="HmCP1d",gob='" role="main"><col class="',hob="Cm",PQ='"><col class="',iob="oj0HKf",job='"><col><tbody>';F.sGa=function $LO(){var a=this.Dp(),c=this.na.idb(),d=l.max(0,c-a),f=this.na.kac();if(!(d==this.p4a&&!f)){var g;g=new U;g[R](Fl,ul,J,fob,gob,hob,PQ,iob,job);g=g[t]();g=[g];g[p](f);Jg&&d==1&&a==0&&g[p](aYa(i));var j=-1;a||(j=l[rb](c/2));for(a=0;a<d;a++)a==j?g[p](cYa({ke:this.na.gub()})):g[p](ZXa(i));this.p4a=d;g[p](dYa(i));a=this.kda.b();Q(a,g[kd](I));if(L)if(d||f)Ag(a,BYa);this.kda.qe(Wx)}};\r
18463 F.uz=function $MO(a,c){var d=k,f;a:{for(f=0;f<this.Om[u];f++)if(this.Om[f].ea()==a){f=f;break a}f=-1}if(f!=-1){var g=this.Ll.za(a);if(g.hc()&&!g.Ds()){d=g.J();this.qi.set(a,d);this.Om[f]=d;this.Lj.uz(f,d,c);d=h}}return d};\r
18464 F.oBa=function $NO(a){var c=-1;if(a==this.Th){c=this.na.eta(a);if(c<0||c>=this.EF)c=a}else c=this.Th;this.EF--;var d=this.Lj.cub(a);this.qi[Pb](d);var f=this.Fia.J(d);if(f){f.bB();this.Fia[Pb](d)}c>=0&&a<c&&c--;kf(this.Om,a);if(c<0)this.Mn(-1);else this.Th>=this.EF?this.Mn(this.EF-1):this.Mn(c)};F.efb=function $OO(){this.Ll.hc()};\r
18465 F.dIc=function $PO(a){if(!this.nR&&this.Bh)this.eKa=h;else{for(var c=a.dG,d=c[u],f=0;f<d;f++){var g=c[f],j=this.Aa.cj(g);if(j.ac()==this.Ll){j=j.vn();if(this.qi.Xb(j)){this.Gka[p](j);this.GUa[j]|=a.aJ[g]}}}this.Gka[u]&&this.Ui(vA)}};\r
18466 F.aIc=function $QO(a){yA++;try{for(var c=k,d=0;d<a.dG[u];d++){var f=a.dG[d];if(f[Zb]==1)c=h;else if(f[Zb]==2){if(c){cK(this);c=k}if(this.nR){var g=f[Lq]-this.Rf;if(g>=0&&(g<this.Og||this.E_)){var j=g,n=f.Ih,s=n.J();this.Fia.set(s.ea(),n);this.qi.set(s.ea(),s);n.Iz();this.Om[u]==this.Og&&!this.E_&&this.oBa(this.Og-1);km(this.Om,s,j);this.Th>=j&&this.Th<this.Og-1&&this.Th++;this.EF++;this.Lj[oq](j,s);eK(this)}}else this.eKa=h}else if(f[Zb]==3){if(c){cK(this);c=k}if(this.nR){g=f[Lq]-this.Rf;if(g>=0&&\r
18467 (g<this.Og||this.E_))this.oBa(g)}else this.eKa=h}else if(f[Zb]==5)c=this.nR=k;else if(f[Zb]==7){if(this.eKa){cK(this);c=k}this.nR=h}else if(f[Zb]==6){xYa(this);this.na.PTa(f.Hcd)}}c&&cK(this)}finally{zA()}this.na.TFb()};F.AH=function $RO(a){a==this.Bh&&AYa(this)};F.wh=B();F.uPc=function $TO(){return this.Kd.Es()};F.yib=function $UO(a){this.Kd.yib(a)};F.Ya=function $VO(){return this};F.mha=function $WO(a){this.na.mC(a)};F.qca=function $XO(){this.na.brb()};\r
18468 F.di=function $YO(a,c,d){bK.C.di[z](this,a,c,d);if(this.Gka[u]){a=this.Gka;c=this.GUa;d=k;for(var f=0;f<a[u];f++){var g=a[f];d|=this.uz(g,c[g])}d&&eK(this);Ia(this.Gka,0);this.GUa={}}};var QQ="Na";F.YJc=function $ZO(a){var c={};this.cC(function(g){c[g.g_()]=g});for(var d=0;d<a.kh[u];d++){var f=c[a.kh[d]];f&&this.qi.Xb(f.ea())&&this.Lj.Oic(f)}this[r](QQ)};\r
18469 F.zD=function $_O(a){var c=this.Ll.J().xK();a==NQ&&c>this.Og?this.Qz(GF):this.Qz(Zx);var d=new Hf;this.cC(function(f){var g=f.g_();d.set(g,a[Fk](f))});this.vl.zm(d);this.na.m6b(a)};F.Qz=function $0O(a){if(this.vl.XG()!=a){this.vl.hIb=a;this.na.J3b(a)}};F.uNa=function $1O(){var a=new mYa;a.Ovb=this.vl.E6();a.gIb=this.vl.XG();return a};F.DI=function $2O(a){var c=a.Ovb;a=a.gIb;jYa(this.vl);this.vl.zm(c);this.Qz(a)};F.nnb=function $3O(){if(this.Th<this.EF-1){this.mV=Zx;this.Mn(this.Th+1);this.JQ();return h}return k};\r
18470 F.Q8b=function $4O(){if(this.Th>0){this.mV=oy;this.Mn(this.Th-1);this.JQ()}return k};_B_prog(74)}catch(e){_B_err(e)}\r
18471 \r
18472 try{var HYa=[3E5,12E4,6E5,18E4,36E5,3E5,-1,6E5];F=DYa[w];F.DRc=0;F.xya=0;F.D=function $5O(){if(this.ab){cA(this.ab);this.ab=i}if(this.Hh){this.Hh.D();this.Hh=i}};F.ix=function $6O(){this.ab=i;GYa(this,Zf())};F.bWa=function $7O(){this.Qdd[z](this.na)};F=JYa[w];F.getSelection=D(VL);F.zD=function $9O(a){this.xa.zD(a)};F.Jib=function $$O(){return this.vl.XG()==dK};F.Kib=function $aP(a){return this.Jib()||a==45||a==46};F.hua=function $bP(a){return this.Kib(a)?oYa(this.xa):this.xa.hSb()};F.XG=function $cP(){return this.vl.XG()};F.Qz=function $dP(a){this.xa.Qz(a)};H(gK,AJ);gK[w].GB=-1;var kob=[Xi,fj,P,ij,pj];L&&kob[p](ej);F=gK[w];var lob="Cp";F.wc=function $eP(){this.zC==kD&&this.hg.sf(1);L&&K(this.hg.b(),BYa);var a=this.hg.b();K(a,lob);this.H().w(a,kob,this.W7c);this.HDa=new xm(a);this.H().w(this.HDa,cj,this.X7c);this.H().w(this.HDa,dj,this.Y7c)};F.L=function $fP(){gK.C.L[z](this);if(this.HDa){this.HDa.D();this.HDa=i}};\r
18473 F.insertRow=function $gP(a,c){this.GB>=a&&this.GB<this.xa.Jw()-1&&this.GB++;var d=this.hg.b()[ic](Wd)[0];if(d){a=d[oq](a);c=jK(this,c);this.TD.zWc(a,c)}else{this.AHa();this.QGa(c);this.PLa()}};F.uz=function $hP(a,c,d){a==this.Rdb()&&this.Cb.lf();a=hK(this,a);c=jK(this,c,i,d);this.TD.uz(a,c)};\r
18474 F.cub=function $iP(a){var c=this.hg.b(),d=Wg(c);for(c=a;d;){var f=Wg(d);if(c>=f[kl][u])c-=f[kl][u];else{d=f[kl][Ab](c);var g=iK(this,d);d==this.Izb&&this.Cb.lf();f.deleteRow(c);this.hg.qe(Wx);if(a<this.GB)this.GB--;else if(a==this.GB){this.GB=-1;this.FIa=i}return g}d=Yg(d)}return i};F.hB=function $jP(a){var c=this.eN();if(!c&&this.GB>=0)NYa(this,this.GB,k);else{this.GB>=0&&NYa(this,this.GB,k);c&&a>=0&&NYa(this,a,h)}};F.Oic=function $kP(a){var c=this.b(RE+a.ea());a=jK(this,a,1,i);this.TD.uz(c,a)};\r
18475 var mob='<table cellpadding="0" id="',nob="<tbody>";F.AHa=function $lP(){this.Fba=new U;var a={Hzb:this.X(J4a),zmd:this.GDa};var c=this.Fba,d=c||new U;d[R](mob,a.Hzb,S,a.zmd,W);c||d[t]();this.ZJb&&this.ZJb.xed(this.Fba);c=(a=this.Fba)||new U;c[R](nob);a||c[t]()};F.PLa=function $mP(){this.Fba[R](KYa());var a=this.W()[Qb](T);Q(a,this.Fba[t]());this.hg.b()[o](a);this.Fba[bc]();L&&Ag(this.hg.b(),BYa);this.hg.qe(Wx)};F.QGa=function $nP(a){this.TD.WL(jK(this,a),this.Fba)};\r
18476 F.eM=function $oP(a){(a=hK(this,a))&&this.Cb[wq](a,1)};F.Lub=function $pP(){var a=this.hg.b();Q(a,I);L&&K(a,BYa);this.GB=-1;this.FIa=i;this.Rdb()!=-1&&this.Cb.lf()};F.MPb=function $qP(){this.hg.b()[ql]};F.Rdb=function $rP(){return this.eua(this.Izb)};F.eN=E(h);\r
18477 F.W7c=function $tP(a){var c=a[Zb];if(!(c==fj&&!nm(a,0)&&!nm(a,2)))if(!((c==P||c==ej)&&!nm(a,0))){a.gNb=k;var d=PYa(this,a[y]);if(d)if(c==P||c==ej)this.V8(a,d);else if(c==ij)this.BTa(a,d);else if(c==Xi)OYa(this,a,d);else if(c==fj)OYa(this,a,d);else c==pj&&this.ATa(a,d);else c==fj&&a[zb]();if(a.gNb){c=this.xa[Vp](iK(this,d));var f=a[dd];this.xa.Qz(Zx);a=c.g_();if(f&&this.FZb){a:{c=this.FZb;f=this.xa.Om;for(var g=0;g<f[u];g++)if(f[g].g_()==c){c=g;break a}c=-1}f=this.eua(d);if(c==-1)c=f;d=l.min(c,f);\r
18478 c=l.max(c,f);f=!this.vl.Vo(a);g=new Hf;var j=this.xa.Om;for(d=d;d<=c;d++)g.set(j[d].g_(),f);this.vl.zm(g)}else kYa(this.vl,a);this.FZb=a}}};F.BTa=function $uP(a,c){OYa(this,a,c)};F.V8=function $vP(a,c){OYa(this,a,c)};F.ATa=function $wP(a,c){OYa(this,a,c)};F.X7c=function $xP(a){this.Izb=PYa(this,a[y])};F.Y7c=function $yP(){this.Izb=i};F.eua=function $zP(a){var c=this.hg.b();c=Wg(c);for(var d=0;c;){for(var f=Wg(c)[kl],g=f[u],j=0;j<g;j++){if(f[Ab](j)==a)return d;d++}c=Yg(c)}return-1};\r
18479 F.Zj=function $AP(a,c){return this.X(a+c)};F.vs=function $BP(a,c){return this.b(a+c)};QYa[w].zC=ki;QYa[w].GDa="F cf";QYa[w].UXa=function $CP(a){return this.zC=a};var oob='<COL class="';RYa[w].xed=function $DP(a){for(var c=0;c<this.yJ[u];c++){var d=this.yJ[c];a[R](oob);a[R](d.ey);a[R](W)}};H(lK,cWa);lK[w].ao=function $EP(){return this[Oc][Oc].ao()};lK[w].B=function $FP(){return this[Oc].B()};H(nK,lK);var pob={},qob="xW",rob='"><span title="',sob="</span></td>";nK[w].sW=function $GP(a,c){this.hI(a,pob);a=c||new U;a[R](QG,qob,J,CK,rob,pob.sod,Gl,pob.wAc,W,pob.Hnd,sob);c||a[t]()};nK[w].hI=function $HP(a,c){a=a[Vp]();var d=a.ea();c.Hnd=a.A4;c.sod=a.Mhc[mb](Rlb,J);c.wAc=this.Zj(UP,d)};nK[w].I2=function $IP(a,c){if(c.XY&2){a=c[Vp]();if(c=this.vs(UP,a.ea())){Q(c,a.A4);ik(c,a.Mhc[mb](Rlb,J))}}};_B_prog(75)}catch(e){_B_err(e)}\r
18480 \r
18481 try{H(oK,xx);F=oK[w];F.Y_a=B();F.Y_a.ic=h;F.qeb=Me;F.qeb.Vd=h;F.Acb=B();F.Acb.Vd=h;H(pK,lK);var RQ={},tob="yf",uob="Ab",vob="Voicemail",wob="xL",xob="Calendar event",yob="yE",zob="Attachment",Aob="xM",Bob="Chat log",SQ="</td>";\r
18482 pK[w].sW=function $LP(a,c){this.hI(a,RQ);RQ.tMb=this.aa.pWa(RQ);a=c||new U;a[R](QG,tob,J,CK,W);if(RQ.tMb)a[R](RQ.tMb);else if(RQ.Gs)xI({Hb:uob,title:vob,je:RQ.kCb,Xe:RQ.lCb},a);else if(RQ.fda)RQ.Jtc==0?xI({Hb:wob,title:RQ.fda,alt:xob,je:RQ.rIb,Xe:RQ.d5a},a):xI({Hb:yob,title:RQ.fda,alt:zob,je:RQ.Brb,Xe:RQ.Crb},a);else RQ.GPa?xI({Hb:Aob,alt:Bob,je:RQ.S3,Xe:RQ.U3},a):a[R](MH);a[R](SQ);c||a[t]()};pK[w].hI=function $MP(a,c){var d=a[Vp]();c.GPa=d.GPa();c.fda=d.gda;c.Gs=d.Gs();c.Jtc=d.XGa;this.aa.Jj(a,c)};\r
18483 yx(qK,pK);qK[w].Jj=B();qK[w].Jj.Ka=h;qK[w].pWa=B();qK[w].pWa.Rn=h;H(sK,lK);var TQ="fu";sK[w].Mc=D(TQ);sK[w].Ac=Ge(TQ);var Cob={};sK[w].sW=function $RP(a,c){this.hI(a,Cob);a=c||new U;a[R](QG,CK,W,Cob.Zad,SQ);c||a[t]()};sK[w].hI=function $SP(a,c){a=a[Vp]();c.Zad=this.fu?a.f8b:I};H(tK,lK);var UQ={ppa:[]},Dob="yX";tK[w].sW=function $TP(a,c){this.hI(a,UQ);WYa(this,UQ);a=c||new U;a[R](QG,Dob,J,CK,W);UYa(UQ,a);a[R](SQ);c||a[t]()};tK[w].I2=function $UP(a,c){if(c.XY&2)if(this.vs(wO,c.ea())){this.hI(c,UQ);WYa(this,UQ);Q(a,UYa(UQ))}};tK[w].hI=function $VP(a,c){a=a[Vp]();var d=a.ea();c.Vhd=a.M1;c.Uhd=this.Zj(wO,d);Ia(c.ppa,0);this.aa.Jj(c,a)};yx(XYa,tK);XYa[w].Jj=B();XYa[w].Jj.Ka=h;H(ZYa,lK);var VQ={};F=ZYa[w];var Eob="zy",Fob="y4";F.sW=function $XP(a,c){this.hI(a,VQ);a=c||new U;if(VQ.Mm){a[R](QG,Eob,J,CK,W);xI(Kw(VQ,{Hb:r0a,alt:LN}),a)}else{a[R](QG,Fob,J,CK,W);xI(Kw(VQ,{Hb:VQ.nld,As:VQ.old}),a)}a[R](SQ);c||a[t]()};var WQ="si";F.hI=function $YP(a,c){var d=a[Vp](),f=d.ea();c.old=this.Zj(WQ,f);c.Mm=d.Mm();c.nld=this.aa.rqa(d);c.alt=this.aa.eKb(d);this.aa.O2a(a,c)};F.I2=function $ZP(a,c){if(c.XY&1){a=c[Vp]();if(c=this.vs(WQ,a.ea()))m(c,this.aa.rqa(a))}};\r
18484 F.Wya=function $_P(a,c,d){this.ao().aP(d.ea());sC(this.B()).lf();a[zb]();return h};F.Vya=E(h);F.mob=function $1P(a){return a[Sb]==13};yx(aZa,ZYa);F=aZa[w];var Gob="y3",Hob="zG";F.rqa=function $2P(a){return a.Uf()?Gob:Hob};F.rqa.Vd=h;F.eKb=function $3P(a){return a.Uf()?KN:I};F.eKb.Vd=h;F.O2a=B();F.O2a.Ka=h;H(uK,xx);uK[w].zYa=E(k);uK[w].zYa.ic=h;yx(uK,bZa);var Iob=[],Job=[],Kob=[],Lob=[TI,AL,BL,GN],XQ=[TI,oI,DN,IN,AL,BL,EN,CL];bZa[w].Wsa=function $6P(a){var c=a.Jo();Ia(Iob,0);Ia(Job,0);for(a=0;a<c[u];a++){var d=c[a];Mf(d,Ty)?Iob[p](d):Job[p](d)}Ia(Kob,0);(c=Xy(this.Ea))&&!ef(XQ,c)&&cZa(this,Kob,c);for(a=0;a<Iob[u];a++){d=Iob[a];ef(Lob,d)&&d!=c&&!this.aa.zYa(d,this.Ea)&&cZa(this,Kob,d)}for(a=0;a<Job[u];a++){d=Job[a];d!=c&&cZa(this,Kob,d)}return Kob[kd](J)};H(wK,lK);var Mob={},Nob='" tabindex="0" role="link" class="';wK[w].sW=function $7P(a,c){this.hI(a,Mob);a=c||new U;a[R](HQ,Mob.iRc,Nob,CK,W);hZa(Mob,a);a[R](SQ);c||a[t]()};var Oob="lssc";wK[w].hI=function $8P(a,c){a=a[Vp]();var d=a.ea();c.dxa=this.mkb.Wsa(a);c.m2=mZa(this,a);c.xfc=a.SCa;c.qjb=a.qjb();c.iRc=this.Zj(Oob,d);c.nkb=this.Zj(qd,d);c.qgc=this.Zj(oF,d)};\r
18485 wK[w].I2=function $9P(a,c){a=c[Vp]();var d=a.ea();c=c.XY;if(c&4){var f=this.mkb.Wsa(a),g=this.vs(qd,d);if(g)if(f)Q(g,kZa({dxa:f}));else Sg(g);else if(f){var j;if(j=(j=this.vs(oF,d))&&j[A]){f=iZa({dxa:f,nkb:this.Zj(qd,d)});g=kx(this.W(),f);Qg(g,j)}}}if(c&2)if(d=this.vs(oF,d))Q(d,mZa(this,a))};H(nZa,yJ);F=nZa[w];F.hUa=5;F.GAc=I;F.hC=D("hUa");F.insertCell=function $aQ(a,c){a.Ig(this);for(var d=0;d<this.oq[u];d++)if(this.oq[d][pq]()==c){km(this.oq,a,d);return}this.oq[p](a)};F.WL=function $bQ(a,c){yK.oaa=this.e_(a);yK.cM=sZa(this,a);LYa(yK,c);tZa(this,a,c);MYa(i,c)};var Pob="zoom",YQ="1.0";F.zWc=function $cQ(a,c){var d=this.e_(c);m(a,d);a.id=sZa(this,c);if(L){d=this.oq[u];for(var f=0;f<d;f++)a[yq](f);Dm(a,Pob,YQ)}rZa(this,a,c)};\r
18486 F.uz=function $dQ(a,c){this.Fac(c)&&mx(a,this.e_(c));var d=this.Dac(c);if(d==1)for(d=0;d<this.oq[u];d++)this.oq[d].I2(a[cl][d],c);else d==2&&rZa(this,a,c)};F.Fac=function $eQ(a){var c=a.H_a;a=a.XY;var d=k;if(c){d|=this.hUa&1&&c&1;d|=this.hUa&2&&c&2}if(a)d|=this.hUa&4&&a;return d};F.Dac=E(1);\r
18487 F.o2c=function $gQ(a,c,d){var f;a:{for(f=a[y];f!=i&&f!=c;){if(f[ed]==Fd){f=f;break a}f=f[A]}f=i}var g=k;if(f){var j;a:{for(j=0;j<this.oq[u];j++)if(c[cl][j]==f){j=this.oq[j];break a}j=i}if(j)g=j.fZc(a,f,d)}g||pZa(this,a,c,d)};F.V8=Me;F.BTa=Me;F.g5b=function $hQ(a){a[zb]()};F.h5b=function $iQ(a){a[zb]()};F.ATa=Me;var yK={};nZa[w].e_=D("GAc");H(zK,nZa);F=zK[w];F.B=function $kQ(){return this.ub.B()};F.ao=D(vL);F.uz=function $mQ(a,c){this.aa.uz(a,c)||zK.C.uz[z](this,a,c)};F.WL=function $nQ(a,c){this.aa.WL(a,c)||zK.C.WL[z](this,a,c)};F.e_=function $oQ(a){var c=a[Vp]();a=(c.Jl?2:0)|(a.Vo()?1:0)|(c.qjb()?4:0);return Qob[a]};F.Fac=function $pQ(a){var c=a.XY;if(c&2)return h;if(c==65535)return h;if(a.H_a&1)return h};F.Dac=function $qQ(a){var c=a.H_a;a=a.XY;if(a==65535)return 2;else if(a||c)return 1};\r
18488 F.g5b=function $rQ(a,c,d){if(!this.aa.wpb(a,c,d)){d=this[Oc];var f=a[dd]||a[Bc],g=a[Bc];C1a(d.ub,d.eua(c),f,g);a[zb]()}};F.h5b=function $sQ(a,c,d){this.aa.yqb(a,c,d)||a[zb]()};F.V8=function $tQ(a,c,d){this.aa.TH(a,c,d)};F.BTa=function $uQ(a,c){if(a[Sb]==13){a[Ec]();a[zb]();var d=this.xa;a=a[dd];C1a(d.ub,d.eua(c),a,void 0)}};F.ATa=function $vQ(a,c,d){this.aa.vob(a,c,d)};var Qob=["zA yO","zA yO x7","zA zE","zA zE x7","zA yO zB","zA yO x7 zB","zA zE zB","zA zE x7 zB"];yx(uZa,zK);F=uZa[w];F.wc=B();\r
18489 F.wc.Ka=h;F.uz=B();F.uz.ic=h;F.WL=B();F.WL.ic=h;F.wpb=B();F.wpb.ic=h;F.yqb=B();F.yqb.ic=h;F.TH=B();F.TH.ic=h;F.vob=B();F.vob.ic=h;H(AK,xx);F=AK[w];F.vMa=function $DQ(a){return new gF(a)};F.vMa.Vd=h;F.A5a=B();F.A5a.Ka=h;F.Wb=B();F.Wb.Ka=h;F.Df=B();F.Df.Ka=h;F.C0a=B();F.C0a.Ka=h;F.uW=B();F.uW.Ka=h;F.h4a=B();F.h4a.Ka=h;Bp(F,B());F[Sq].Ka=h;F.opa=B();F.opa.Ka=h;F.qma=B();F.qma.Ka=h;F.aP=B();F.aP.Vd=h;F.Qh=B();F.Qh.ic=h;F.Qqa=B();F.Qqa.ic=h;F.YNa=B();F.YNa.Ka=h;F.CKc=B();F.CKc.Ka=h;F.agb=B();F.agb.Ka=h;F.pQa=B();F.pQa.ic=h;F.Pjb=B();F.Pjb.ic=h;F.D=B();F.D.Ka=h;F.zD=B();F.Osb=B();F.Osb.ic=h;F.jdb=B();F.jdb.Rn=h;F.dNa=B();\r
18490 F.dNa.Rn=h;F.DO=B();F.i6=B();F.Wmb=B();F.Wmb.Ka=h;F.Qvb=B();F.Qvb.Vd=h;F.MY=function $3Q(a,c,d,f){return a.MY(c,d,f)};F.MY.Vd=h;H(BK,gK);yx(oK,BK);var Rob=new kK(XF,hob),Sob=new kK(YYa,"y5"),Tob=new kK(VYa,"yY"),Uob=new kK(rK,"yF"),Vob=new kK(vK,i),Wob=new kK(SYa,"yg"),Xob=new kK(mK,"xX");F=BK[w];F.i7a=function $4Q(){for(var a=new RYa,c=this.aa.qeb()||[Rob,Sob,Tob,Uob,Vob,Wob,Xob],d=0,f;f=c[d];d++)a.yJ[p](f);return a};F.iLb=function $5Q(a){return new zK(a)};F.B=D(JF);F.ao=D(vL);F.qCa=function $8Q(a){oZa(this.TD,rK).Ac(a)};F.eN=function $9Q(){return this.V.eN()&&this.Ixb};_B_prog(76)}catch(e){_B_err(e)}\r
18491 \r
18492 try{yZa[w].ZIc=function $$Q(a){a=a.Mg()[u];var c=this.xa;sYa(c,a)||c.Kd.rg();var d=c.Ll.J().xK()-a;if(c.az>0&&d<=c.Rf){d=l.max(0,l[rb]((d-1)/c.Og));c.mha(d)}c=this.xa.Jw();d=this.xa.Ut();var f=d*c;a=this.xa.Ll.J().nj-a;d>0&&a<=f&&this.pA.mC(l.max(0,l[rb]((a-1)/c)),2)};yZa[w].WPc=function $aR(a){return Uy(a).Qc(this.Ea)};zZa[w].Tja=function $bR(a){if(this.xa.Th<this.xa.Dp()-1)this.xa.nnb();else{var c=oYa(this.xa);c=l[ob](c/this.xa.Jw())-1;if(this.xa.Ut()<c&&!this.xa.Bh){a&&QF(this.xa,Kbb);this.pA.mC(this.xa.Ut()+1,2)}else this.xa.JQ()}};zZa[w].yAa=function $cR(a){if(this.xa.Th>0)this.xa.Q8b();else if(this.xa.Ut()>0&&!this.xa.Bh){a&&QF(this.xa,Lbb);this.pA.mC(this.xa.Ut()-1,3)}else this.xa.JQ()};hk(AZa[w],Ge(Ej));AZa[w].mC=function $eR(a,c){if(this.ng)this.jb[bq]({view:wE,search:this.Ea,tZa:c||2,page:a})};H(DK,bK);DK[w].qCa=function $fR(a){var c=this.Lj;c.qCa&&c.qCa(a)};DK[w].PGc=function $gR(){return this.Xi.J().Qe()};DK[w].hdb=function $hR(){return this.Xi.J().hdb()};DK[w].xeb=function $iR(){return this.Xi.J().xeb()};H(EK,xx);EK[w].Tdb=B();EK[w].Tdb.Rn=h;EK[w].cpb=B();EK[w].cpb.ic=h;H(BZa,AD);yx(EK,BZa);BZa[w].xMa=function $lR(){return{ag:this.xa.Jw(),NKb:this.xa.Om[u],ZF:oYa(this.xa),LQ:this.Ea[pq](),Ij:this.X(KK.jFa)}};\r
18493 BZa[w].M1c=function $mR(a){var c=a[y],d=c.id;c=c[A]?c[A].id:I;var f=KK;if(!this.aa.cpb(a)){a=this.X(f.jFa);if(d==a||c==a){d=this.Du.XG();if(d==GF)this.Du.Qz(dK);else if(d==dK){this.Du.Qz(Zx);this.Du.zD(Yob)}}else if(d==this.X(f.u1a))this.eFb.nk(45,i);else if(d==this.X(f.nDb))this.eFb.nk(46,i);else if(d==this.X(f.oEb)){d=new Sh;Iy(this.Ea,d);d.ka(Zya,0);d=aza(Sy,d.Of());this.jb[bq]({view:wE,search:d})}else d==this.X(f.kFa)&&this.jb[bq]({view:dJ,fk:pJ})}};H(LK,fF);LK[w].Vh=function $nR(){LK.C.Vh[z](this);this.D5=this.W()[Qb](T);m(this.D5,zF);this.W()[o](this.wa,this.D5)};var Zob="Cq",apb="Cr";LK[w].bia=function $oR(a,c){if(this.qj()>1||c>1)e(Error(".161"));var d=this.D5;if(this.qj()==1&&c==0){d=this.rb(0).b();Ag(d,Zob);K(d,apb);d=d}a=a.b();c==0?K(a,Zob):K(a,apb);this.W().yA(a,d)};LK[w].jBa=function $pR(a,c){a=a.b();c==0?Ag(a,Zob):Ag(a,apb);this.W()[ad](a);if(c==0&&this.qj()==1){c=this.rb(0).b();Ag(c,apb);K(c,Zob)}};\r
18494 LK[w].hjc=function $qR(a,c,d,f){return a==vA&&f==-1};H(PK,AD);F=PK[w];F.rQa=0;F.Xkb=1;F.ma=function $rR(){PK.C.ma[z](this);this.H().w(this.Ll.mb.Ya(),this.Ll.Je(),this.lka);this.H().w(this.xa,wYa,this.Znb);Pw(this.H(),this.zrb,aB,this.N4c);this.H().w(this.zrb,P,this.M4c);y_a(this)};F.Ba=function $sR(){PK.C.Ba[z](this);this.H().wb()};F.VFb=Me;var bpb="&laquo; ",cpb="First",dpb="Newest",epb="&lsaquo; ",fpb="Prev",gpb="Newer",hpb="Next",ipb="Older",jpb=" &rsaquo;",kpb="Last",lpb="Oldest";\r
18495 F.Ybb=function $tR(a){var c=new U;c[R](WG,g_a,W);if(a.jkd){var d=new U(bpb);a.iRa==2?d[R](cpb):d[R](dpb);f_a({id:a.HMc,Ab:d[t]()},c);c[R](JK)}if(a.myb){d=new U(epb);a.iRa==2?d[R](fpb):d[R](gpb);f_a({id:a.mhb,Ab:d[t]()},c)}c[R](MH,a.Amd,MH);if(a.nyb){d=new U;a.iRa==2?d[R](hpb):d[R](ipb);d[R](jpb);f_a({id:a.nhb,Ab:d[t]()},c)}if(a.nkd){c[R](JK);d=new U;a.iRa==2?d[R](kpb):d[R](lpb);d[R](snb);f_a({id:a.KMc,Ab:d[t]()},c)}c[R](gB);a=c[t]();return a};\r
18496 F.keb=function $uR(a,c,d,f){a=z_a(a,c,d);return A_a(f,a)};F.lka=function $vR(){this.Ll.hc()&&y_a(this)};F.Znb=function $wR(){var a=this.xa.Dp();if(a!=this.rQa){this.rQa=a;y_a(this)}};F.N4c=function $xR(a){var c=this.xa.Ut(),d=-1;a=a[y].id;switch(a?this.td(a):i){case ki:d=0;break;case oy:d=c-1;break;case Zx:d=c+1;break;case Rd:c=this.Ll.J().xK();d=this.xa.Jw();d=l[ob](c/d)-1;break;case Xx:tYa(this.xa);return}d>=0&&this.LTa(d)};F.M4c=function $yR(a){a[zb]()};F.LTa=B();H(QK,PK);QK[w].LTa=function $AR(a){QF(this,Hbb);this.pA.mC(a)};QK[w].Ybb=function $BR(a){return QK.C.Ybb[z](this,a)};H(M_a,xx);M_a[w].Xid=B();M_a[w].Xid.Ka=h;var Yob=cob,mpb=new aK("read","Read",function(b){return!b.Jl}),npb="unread",opb=new aK(npb,"Unread",function(b){return b.Jl}),ppb=new aK(sz,KN,function(b){return b.Uf()}),qpb="Unstarred",rpb=new aK("unstarred",qpb,function(b){return!b.Uf()}),ZQ=[NQ,Yob,mpb,opb,ppb,rpb];H(RK,BD);yx(M_a,RK);RK[w].JD=function $DR(){var a={pXa:ZQ,separator:wj};Q(this.ia.b(),L_a(a));Pw(this.H(),this.b(),aB,this.lh);this.ia.qe(Wx)};var spb="selector";RK[w].lh=function $ER(a){a=a[y][Uc](spb);for(var c=0;c<ZQ[u];c++){var d=ZQ[c];if(a==d[ec]){this.xa.zD(d);dE(this.B()).jj(Pfb,d[ec]);break}}};S_a[w].Ga=D(Gd);S_a[w].Yg=D("SB");H(T_a,xx);T_a[w].feb=B();H(U_a,Jf);yx(T_a,U_a);var X_a=new S_a(mK,"Sort by date");H(a0a,BD);a0a[w].JD=function $IR(){var a;if(this.Gbc)a=W_a(this.Gbc,this.Ea.Ga());var c=this.ia.b();if(!a||a[u]<2)Wm(c,k);else{Q(c,R_a({fAc:this.iZa,Gsc:a}));Pw(this.H(),this.b(),aB,this.lh);this.ia.qe(Wx)}};a0a[w].lh=function $JR(a){if((a=a[y][Uc](TK))&&a!=this.iZa){var c=this.Ea,d=new Hf(c.ZZ());!a||a==mK?d[Pb](TK):d.set(TK,a);a=hza(c,d);this.jb[bq]({view:wE,search:a})}};H(c0a,gF);Qp(c0a[w],function $KR(a,c){if(!this.tW){if(c!=I)switch(a.Ga()){case Jy:case az:case ul:case Oy:this.gj.gp(G0a({Zgb:xw(Wf(c))}))}this.gj.wc();this.tW=h}});F=UK[w];F.tb=function $LR(a){var c=this.Aa.za(WK).Zn(this.Ea),d=this.Jta();c=new DK(this.V,c,d);d=this.Qqa(d0a(this,a,c));d.wc();c.Lj=d;c.wc();this.xa=c;this.pA=new AZa(this.V,this.Ea);this.vya=new zZa(this.xa,this.pA);this.eUa=new P0a(this.V,a,this.xa,this.Ea);this.LOc=new yZa(this.V,this.xa,this.pA,this.Ea);this.Du=new JYa(this.vl,this.xa,this.Ea)};F.B=D(JF);\r
18497 F.Jta=function $NR(){var a=new fYa;a.Saa(this.Og);a.Nza=this.az;a.T2a=this.ynb;a.n8=5;a.a_b=this.vl;a.Yla(wRa);var c=gza(this.Ea);a.fkb=c;return a};F.MY=function $OR(a,c,d,f){var g=new QK(this.V,this.pA,this.xa);f=f===k?i:new RK(this.V,this.xa);return new c0a(this.V,this.Ea,a,g,f,c,d)};F.Ocb=D("pA");F.rdb=D("eUa");F.Qqa=function $RR(a){return new BK(this.V,a)};var tpb="Du";F.tNa=D(tpb);F.p7a=function $TR(a,c){return new BZa(this.V,this.Ea,a,c,this.xa,this.Du)};var aR="default";\r
18498 F.mdb=function $UR(){var a=this.Ea,c=this.Z[hq](Z7a),d=a.Ga(),f=k,g;if(c){c=c[Cc](wj);for(var j=0;j+1<c[u];j+=2){var n=c[j],s=Number(c[j+1]);if(n==d||n==aR&&!f){g=s;f=h}}}f||(g=gza(a)?5:20);return g};F.Wcb=D("LOc");H(VK,uh);var h0a=0;VK[w].Q8=0;VK[w].I8a=0;var l0a=new RegExp(Ty+"^ib"[mb](Ty,"\\^"));F=VK[w];F.D=function $WR(){VK.C.D[z](this);this.Q.D();this.Hh.D();this.nlb()};hk(F,function $XR(a){(this.Tl=a)||bA(f0a,this.nlb,0,this)});F.R8=function $YR(){this.YU()};F.YU=function $ZR(){g0a(this)&&this[r](TE)};F.bUb=function $_R(a,c){if(this.Ska==a){if(!this.pna)this.pna=new Hf;this.pna.set(c,1)}};\r
18499 F.wh=function $0R(a){if(this.Ska==a){if(Jz(this.Z,717)){dE(this.V).zF(sgb,a.R2b);dE(this.V).zF(tgb,a.S2b)}this.AZb=Zf();this.Ska=i;var c=k;if(!a.Vj())if(a.Zbd)h0a=Zf();else c=h;this.qa=0;c&&this.YU();this[r](TE)}};F.nlb=function $1R(){for(var a=this.Pc||!this.tD&&!this.Tl,c=this.bTc,d=c.Sb(),f=0;f<d[u];f++){var g=d[f],j=c.J(g);if(a||!this.phc.Xb(g)){c[Pb](g);j.bB()}}if(!a)if(d=this.Aa.za(qI)){a=rI(d,this.Ea);d=this.phc.Sb();for(f=0;f<d[u];f++){g=d[f];if(!c.Xb(g)){j=a.za(g);j.Iz();c.set(g,j)}}}};\r
18500 F.Adb=function $2R(){return[this.Q8,this.qa]};F.zdb=D(Yj);F.Bdb=D("fzb");_B_prog(77)}catch(e){_B_err(e)}\r
18501 \r
18502 try{var n0a;var X0a=h;H(Y0a,Iw);var bR="compose",upb="Mail";Y0a[w].tb=function $5R(){jA(this.Db,TE)||lA(this.Db,TE,IB);jA(this.Db,OP)||lA(this.Db,OP,OD);jA(this.Db,ZD)||lA(this.Db,ZD,JD);var a=fD(this.Db);gD(a,wE,TE);gD(a,YK,OP);gD(a,QO,ZD);hD(a,this,[wE,YK,QO]);iD(a,this,[Hl,Py,Fy,Jy,Z0a,Oy,a1a,ul,bR,ce,kz,sz,cz,iz,fz,pz,jza,Yy,Zy,ez,ZK,aL]);a=hF(this.Db);PIa(a,new MIa(Xz,upb,{view:wE,search:G7a},[wE,YK,QO,SO,eab,dJ,xE],i))};\r
18503 Y0a[w].Gaa=function $6R(a){var c=[];switch(a[Wq]){case wE:c[p](a[Pc].Xs());a[Xp]>0&&c[p](oy+(a[Xp]+1));break;case YK:var d=a.Zo;c[p](a[Pc].Xs());c[p](d);break;case QO:c[p](bR);break}return c};Y0a[w].aca=function $7R(a,c){var d={};if(a==bR){Gp(d,QO);return d}Ip(d,b1a(a,c));if(d[Pc]==i)return i;if(c[u]==0)Gp(d,wE);else{a=c[db]();if(a[xb](0)==oy){Gp(d,wE);bha(d,da(a[nc](1),10)-1)}else{Gp(d,YK);d.Zo=a}}return d};H(dL,xJ);yx(AK,dL);F=dL[w];F.Toa=h;F.L=function $8R(){dL.C.L[z](this);q1a(this);this.H3.D();this.Hh.D();this.Uq.D();this.aa.D();this.eJ.D()};F.Bb=D(NO);F.Ut=D("az");F.Jw=D(xQ);F.Zn=D("Xi");F.Jw=function $aS(){return h1a(this.B(),this.Ea)};\r
18504 F.Jc=function $cS(){this.wC();this.xa.Ydd(this.H(),this.wKc);var a=new eYa;a.qpa=G(this.qpa,this);a.xHa=G(this.f4a,this);a.idb=G(this.dNa,this);a.gub=G(this.ldb,this);a.kac=G(this.Ded,this);a.dN=G(this.dN,this);a.Rcc=G(this.vid,this);a.eta=G(this.eta,this);a.m6b=G(this.M6c,this);a.J3b=G(this.TYc,this);a.PTa=G(this.E6c,this);a.i6b=G(this.c6c,this);a.brb=G(this.crb,this);a.b7b=G(this.y9c,this);a.XTa=G(this.drb,this);a.Z6b=G(this.w9c,this);a.a7b=G(this.x9c,this);a.TFb=G(this.isc,this);a.mC=G(this.mC,\r
18505 this);a.UKb=G(this.ozc,this);this.xa.cdc(a);this.Z0b();(a=this.xa.CFc())&&Pw(this.H(),a,aB,this.I3b);var c=Xy(this.Ea);a=this.Aa;if(c){var d=Mf(c,Ty)?cJ:ZI;c=this.co.Je()+Md+d+Md+Qf(c);this.H().w(a.Ya(),c,this.tpb)}c=this.co.Je()+HXa;this.H().w(a.Ya(),c,this.I_c);this.Kk().w(FH(this.B()),ey,this.jYc)};F.Z0b=B();F.I_c=function $eS(a){for(var c=0;c<a.dG[u];c++){var d=a.dG[c];if(a.aJ[d]&8){var f=(d=this.Aa.cj(d))?d.J():i;f&&fL(this,function(g){g.Zh(f[pq]())&&this.xa.uz(g.Hc(),4)})}}};\r
18506 F.Bo=function $fS(){this.xa.Wvc();q1a(this)};F.ln=function $gS(a){var c=dE(this.B()),d=Xy(this.Ea);d?c.jj(hjb,d[mb](/\//g,Qd)):c.pb(Nfb);c=Rz(this.B());if(Jz(c,1105)){if(a=a?a.Ica:i)this.eCb=a;a&&a.md()==QO||this.xa.ola()}else this.xa.ola();this.xa.Bh||dE(this.B()).pb(Qfb)};\r
18507 F.Wb=function $hS(){this.Tl=h;this.pA[Lk](h);var a=k,c=k;c|=l1a(this);a|=j1a(this);a|=k1a(this);var d=Rz(this.B());if(a)x1a(this);else if(c)this.xa.cp();else Jz(d,1105)&&this.eCb&&this.eCb.md()==QO||this.xa.ola();this.xa.Wb();this.Uq[Lk](h);this.Uq.YU();n1a(this);this.eCb=i;this.aa.Wb()};F.jYc=function $iS(a){var c=Rz(this.B());Jz(c,1105)&&a.rnb==this&&Je[xc](G(this.xa.ZVa,this.xa,Ph),0)};F.X_a=function $jS(){if(this.SWa){vC(this.xB,this.SWa);this.SWa=i}else vC(this.xB,0);this.xa.hB()};\r
18508 F.Df=function $kS(){this.Tl=k;this.pA[Lk](k);this.SWa=uDa(this.xB);this.xa.Df();this.Uq[Lk](k);this.Ch&&this.Ch.gj.om.Yb();this.Co&&this.Co.gj.om.Yb();this.aa.Df()};F.uW=function $lS(){this.xa.uW();this.aa.uW()};\r
18509 F.wC=function $mS(){var a=this.B(),c=[];this.IRa(a);this.Ch&&c[p](this.Ch);this.k1b(c,a);this.Eha=this.Nda.p7a(this,this);this.Eha.qc(k);c[p](this.Eha);for(var d=this.DO(),f=0;f<d[u];f++)c[p](d[f]);this.B1=new eE(a);this.B1.qc(k);c[p](this.B1);c[p](this.xa);d=this.i6();for(f=0;f<d[u];f++)c[p](d[f]);this.tlb(a);this.Co&&c[p](this.Co);this.H().w(this,LQ,this.eob);this.aa.A5a(a,this.Ea,c);eF(this.ia,c)};F.DO=function $nS(){return o1a(this,this.aa.DO())};F.i6=function $oS(){return o1a(this,this.aa.i6())};\r
18510 var vpb="A1";F.IRa=function $pS(a){this.Ch=this.aa.MY(this.Nda,this.HRa(),vpb,h);this.Ch.gj.om.kp=wE;this.aa.agb(a,this.Ch)};var wpb="AY";F.tlb=function $qS(){this.Co=this.aa.MY(this.Nda,this.HRa(),wpb,k);this.Co.gj.om.kp=wE};F.Kk=function $rS(){return this.H()};F.k1b=B();F.Dvc=function $tS(){if(!this.Tl&&!this.tD)return k;if(this.xa.Bh)return k;if(this.xa.NS&&this.Dz.TZ(Zf())<6E4)return k;if(this.aa.Pjb())return k;return h};F.rZa=function $uS(){this.xa.luc(FYa(this.H3,this.H3.Dz.TZ(Zf()+2E3))/1E3)};\r
18511 F.HRa=function $vS(){var a=Mx().Gn(16,this.B()),c=this.Ea;if(c.Ga()==ul)a.b2=k;else{a.KW(c,wE);TB(a,20,h)}this.aa.YNa(a);this.H().w(a,WB,this.Vm);return a};F.eob=function $wS(a){this.qBb(a[y])};\r
18512 F.qBb=function $xS(a){if(!((!this.Ch||a!=this.Ch.gj.om)&&(!this.Co||a!=this.Co.gj.om))){var c=this.Du.Jib(),d=[];fL(this,function(n){this[uk].Vo(n.vf())&&d[p](n)});var f=new D1a;f.i_a=d;f.Lp=c;this.eJ.eca(a,this.Ea.Ga(),f);if(c)TXa(a);else{var g={},j=0;fL(this,function(n){if(this[uk].Vo(n.vf())){n=n.Jo();for(var s=0;s<n[u];s++)g[n[s]]=(g[n[s]]||0)+1;j++}});SXa(a,g,j)}QWa(a.ac(),c)}};F.DRb=function $yS(){var a=[];this.Ch&&a[p](this.Ch.gj);this.Co&&a[p](this.Co.gj);return a};F.ASb=D("Ch");\r
18513 F.Vm=function $AS(a){this.nk(a[jr],a[jb])};\r
18514 var xpb="No conversations selected.",ypb="^unsub",zpb="Only the first 25 conversations of your ",Apb=" selected conversations will be used in filter creation.  Would you like to continue?",Bpb="You are about to move the entire conversation to the Trash. Are you sure you want to trash the entire conversation containing your sent message?",Cpb="You are about to move ",Dpb=" entire conversations to the trash. Are you sure you want to trash the entire conversations containing your sent messages?",Epb=\r
18515 "Moving conversations from All Mail to the Trash will remove them from all views, including labels and search results. This is because in ",Fpb=", a conversation can be displayed in a variety of views, but there is only one copy. Are you sure you want to move the only copy to the Trash?";\r
18516 F.nk=function $BS(a,c){q1a(this);if(a==134)this.aa.Qvb(c);else{var d=this.Du.hua(a);if(a!=20&&a!=122&&d==0)this.Rh.Ad(new Zz(xpb));else{var f=this.B(),g,j=k,n;if(JCa(this.eJ,a)){n=this.eJ.nk(a,this,1,this.Ea.Ga());g=n[jr];if(n.N_a){var s=k,v=[];if(Jz(this.Z,811)){fL(this,function(M){if(this[uk].Vo(M.vf()))if(M.Zh(ypb)){of(v,M.apd||[]);s=h}});rf(v)}if(s){a=new cPa(this.B(),v);this.H().w(a,BC,G(this.Sqb,this,a,Zf(),n));a.ra(h);return}else g=new n.PX(f,k,1)}a==95&&fL(this,function(M){g.Bdc(M.sH(),M.vf())})}else switch(a){case 98:QF(this,\r
18517 Ocb);g=new hWa(f,1);break;case 12:QF(this,ubb);g=new cR(f,c,1);break;case 13:QF(this,vbb);g=new MB(f,c,1);break;case 20:QF(this,Ibb);this.xa.cja(k);j=h;this.xa.eXb();dE(f).pb(Ofb);break;case 122:this.rZa();break;case 16:QF(this,Jbb);g=new fWa(f);break;case 17:QF(this,Ebb);g=new dTa(f,1);break;case 45:QF(this,Pbb);g=new iWa(f,1);break;case 46:QF(this,Qbb);g=new gWa(f,1);break;case 14:var C=KC(f);if(c&&!PC(C,c)){c=Pf(c);QF(this,Fbb);g=new cR(f,c,1)}else QC(C,WJ,I,NXa,G(this.s3,this),iA(this.B()));break;\r
18518 case 76:QF(this,wbb);g=(C=Xy(this.Bb()))?new dR(f,C,c,1):new cR(f,c,1);break;case 77:QF(this,xbb);g=new BJ(f,c[0],c[1],1);break;default:g=this.aa.jdb(f,a,c)}if(g&&a==64&&d>25)this.TJ(zpb+(d+Apb))||(g=i);else{c=this.Du.Kib(a);if(g&&c)this.TJ(w1a(this,a))||(g=i)}if(g&&a==10){if(this.Ea.Ga()==pz&&!this.TJ(d==1?Bpb:Cpb+(d+Dpb)))g=i;if(this.Ea.Ga()==cz&&!this.TJ(Epb+(Ii+Fpb)))g=i}this.OLa(g,j,n)}}};\r
18519 F.OLa=function $CS(a,c,d){var f=this.xa.NS;this.xa.cja(k);d=d&&d.BWa;if(a){a.Ii(this.Ea);a.lB(this);p1a(this,a,d);a:if(a.Lp())a.IFa=h;else{var g=a.mg,j=this.Ea.Ga();d=this.Nda.Wcb();if(g==13){g=a.Dd();if(!d.WPc(g))break a}else if(!(g==4&&j==sz))if(!(g==8&&j==Zy))if(g!=9&&g!=18&&g!=98&&g!=10&&g!=21&&g!=17&&g!=76&&g!=77&&g!=110&&g!=111)break a;d.ZIc(a)}a.Ie(this);a.lB(this);this.Ml=a;kF(this.Mb,a);a[Mb]()}c&&this.xa.ZVa(kD);!this.xa.NS&&f&&this.xa.cja(h);this.qca()};\r
18520 F.Sqb=function $DS(a,c,d,f){this.H().hb(a,BC);aF(this.B()).VX(Zf()-c);if(f.key==dx)(d=PF(this))&&eLa(d);else{a=f.key==Cz;this.OLa(new d.PX(this.B(),a,1),k,d)}};F.hua=function $ES(a){return this.Du.hua(a)};F.xMa=function $FS(a){return{ag:this.Og,NKb:XK(this)[u],ZF:this.Du.hua(a),LQ:this.Ea[pq](),Ij:this.X(KK.jFa)}};F.qpa=function $GS(){var a=this.xa.PGc();this.Ch&&this.Ch[mr](this.Ea,a);this.Co&&this.Co[mr](this.Ea,I)};\r
18521 F.f4a=function $HS(){l1a(this);k1a(this);if(this.Xi.J()){var a=this.Xi.J().nj,c=dE(this.B()),d=this.Ea.Ga();c.jj(Rfb,d+Qd+a)}};F.dN=function $IS(){this.Uq.YU()};F.vid=function $JS(){if(!this.xa.EGa)return k;var a=this.xa.ft;if(a==101){this.xa.Mn(this.CNa(this.vZa,h));return h}else if(a==102){(a=this.xa.vy().J(this.Ald))?this.xa.Mn(ff(this.xa.Om,a)):this.xa.Mn(this.CNa(this.vZa,h));return h}return k};F.eta=function $KS(a){return this.CNa(XK(this)[a].TCa,k)};F.M6c=function $LS(a){this.aa.zD(a)};\r
18522 F.TYc=function $MS(){FK(this.Eha);for(var a=this.Du.Jib(),c=this.DRb(),d=0;d<c[u];d++)QWa(c[d],a)};F.E6c=function $NS(a){Q(this.B1.b(),a.Xbd?M0a():a.kia()?O0a():K0a({Rnd:a.Kcd}));this.B1.qc(h);this.B1.qe(Wx);this.oEd=h};F.y9c=function $OS(a){EYa(this.H3);this.aa.C0a(a)};F.drb=function $PS(){var a=this.H3,c=Zf();a.xya=c+FYa(a,a.Dz.TZ(c));GYa(a,c)};F.w9c=function $QS(){this.Uq.YU();this.Ch&&this.Ch.gj.qja(this.xa.Ya());this.Co&&this.Co.gj.qja(this.xa.Ya())};\r
18523 F.x9c=function $RS(a){var c=this.xl.Xv;if(Ay(this.lb,DM)&&!fza(this.Ea)&&!a.Gib)BE(c,web,c.fjb?jHa:kHa)};F.isc=function $SS(){this[r](TE);this.Uq.YU()};F.ozc=function $TS(){var a=new KRa;if(Jz(this.Z,1130)||Jz(this.Z,1037))a.Fwb(!!this.tD);return a};F.crb=function $US(){this.qca()};F.c6c=function $VS(){var a=this.xa.Th;if(this.xa.ft==1&&a>=0&&a<XK(this)[u]){this.xa.oma(101);this.vZa=this.xa.Zsa().TCa}a=this.Uq;a.pna&&a.pna[bc]();this.LAb=k;this.B1.qc(k)};F.dNa=E(9);\r
18524 F.Ded=function $XS(){var a=this.xa.xeb(),c=a>0,d=this.o1b();if((this.LAb||!c)&&!d)return I;var f=[];if(c&&!this.LAb){a={yod:a,Ojc:this.X(KK.QEb),bic:this.X(KK.CDb)};this.aa.Wmb(a);f[p](z0a(a));this.LAb=h}d&&this.W0b(f);return f[kd](I)};F.o1b=E(k);F.W0b=B();\r
18525 var Gpb="No new mail! There's always ",Hpb="No starred messages. Stars let you give messages a special status to make them easier to find. To star a message, click on the light blue star beside any message or conversation.",Ipb="No chat messages.",Jpb="Your chat history will appear here if you choose to save your chats. You can change this in ",Kpb='" class="x0">Settings</span>.',Lpb="No sent messages! ",Mpb='" class="x0">Send</span> one now!',Npb="You don't have any saved drafts.<br>Saving a draft allows you to keep a message you aren't ready to send yet.",\r
18526 Opb="You don't have any mail! Our servers are feeling unloved.",Ppb="Hooray, no spam here!",Qpb="No conversations in the Trash. Who needs to delete when you have over 7000 MB of storage?!",Rpb="There are no conversations with this label.",Spb="in:anywhere",Tpb="No messages matched your search. Try using ",Upb='" class="x0">search options</span> to define a new query.',Vpb="ast",Wpb="No messages matched your search.",Xpb="No existing messages match your criteria.";\r
18527 F.ldb=function $_S(){var a=this.p1b();if(a)return a;switch(this.Ea.Ga()){case kz:case ZK:case aL:if(this.Z[hq](z8a))return I;a=this.Z[hq](TN);a={tkd:a==Vz,gF:a};var c=new U;a.tkd?c[R]('No new mail! Want to read updates from your favorite sites? Try <a class="xZ" target="_blank" href="http://www.google.com/reader/?source=gmailnonewmail">Google Reader</a>'):c[R](Gpb+('<a class="xZ" target="_blank" href="http://news.google.com/?hl='+a.gF+"\">Google News</a> if you're looking for something to read."));\r
18528 a=c[t]();return a;case sz:a=new U;a[R](Hpb);a=a[t]();return a;case fz:a={Ij:this.X(KK.kFa),aQc:bx()};a=a;c=new U;a.aQc?c[R](Ipb):c[R](Jpb+(HK+a.Ij+Kpb));a=c[t]();return a;case pz:a={Ij:this.X(KK.sEb)};a=a;c=new U;c[R](Lpb+(HK+a.Ij+Mpb));a=c[t]();return a;case iz:a=new U;a[R](Npb);a=a[t]();return a;case cz:a=new U;a[R](Opb);a=a[t]();return a;case Yy:a=new U;a[R](Ppb);a=a[t]();return a;case Zy:a=new U;a[R](Qpb);a=a[t]();return a;case Py:a=new U;a[R](Rpb);a=a[t]();return a;case Jy:a=this.Ea.Qe();if(Xf(a,\r
18529 Spb)){a={Ij:this.X(KK.rEb)};a=a;c=new U;c[R](Tpb+(HK+a.Ij+Upb));a=c[t]();return a}else{a={Ij:this.X(KK.j1a)};return C0a(a)}case Oy:if(Uya(this.Ea)!=Vpb){a={Ij:this.X(KK.j1a)};return C0a(a)}else{a=new U;a[R](Wpb);a=a[t]();return a}case ul:a=new U;a[R](Xpb);a=a[t]();return a;default:return I}};F.p1b=E(i);F.md=function $1S(){return wE};F.ej=function $2S(a){if(this.Ml)a[p](this.Ml);else this.xa.Bh&&a[p](this.xa.Bh)};\r
18530 F.qca=function $3S(){this[r](NO);if(this.skb&&!(this.Ml||this.xa.Bh)){var a=this.skb;this.skb=i;if(a.Lp())jYa(this[uk]);else{a=a.RDa;for(var c={},d=0;d<a[u];d++)c[a[d]]=1;fL(this,function(f){delete c[f.vf()]});a=xf(c);hYa(this[uk],a)}this.Qz(Zx)}};F.TO=function $4S(){var a=this.Ea[pq](),c=Xy(this.Ea);if(c){var d=KC(this.B());if((c=NC(d,c))&&c.rt>0)a+=xl+c.rt+xh}return a};F.yK=function $5S(){var a=this.Ea;return new CH(a.FL(),a.Qb())};F.tpb=function $6S(){this[r](new TF(this,tQ,this))};F.EIb=function $7S(){return!this.tD};\r
18531 Bp(F,function $8S(){q1a(this);this.xa[Sq]();n1a(this);this.aa[Sq]()});\r
18532 F.Qh=function $9S(a,c){if(!(!this.B().eN()||this.aa.Qh(a,c)||this.aa.pQa())){var d=i,f=i,g,j=i;switch(a){case R4a:f=this.Ea.Ga();if(f==kz){f=13;g=TI}else if(f==sz)f=4;else if(f==Py){f=13;g=this.Ea.Pt()}else f=7;j=Lgb;break;case o5a:f=7;j=Pgb;break;case s5a:f=95;j=Ogb;break;case hM:(a=gL(this,this.xa.Th))&&this.aP(a);break;case fM:this.yAa(h);break;case gM:this.Tja(h);break;case KG:this.Qz(Zx);a=y1a(this,this.xa.Th);kYa(this[uk],a);break;case lM:V0a(this.eUa,c[dd],void 0);j=c[Sb]==13?Kgb:Rgb;break;\r
18533 case iM:if(this.Du.XG()!=dK&&JCa(this.eJ,21,this.Ea.Ga()))f=21;break;case jM:f=9;j=Tgb;break;case kM:f=10;j=Ugb;break;case eM:f=20;break;case b5a:d=NQ;break;case c5a:d=Yob;break;case d5a:d=mpb;break;case e5a:d=opb;break;case f5a:d=ppb;break;case g5a:d=rpb;break;case p5a:this.Ch&&this.Ch.gj.s_a();break;case q5a:this.Ch&&this.Ch.gj.q_a();break;case tM:this.Ch&&this.Ch.gj.r_a();break;case l5a:f=1;break;case m5a:f=2;break}f&&this.nk(f,g);d&&this.Du.zD(d);j&&dE(this.B()).pb(j)}};\r
18534 F.mC=function $$S(a,c){this.pA.mC(a,c)};F.lPa=function $aT(a,c,d,f){if(a)this.xa.oma(a);else if(c){this.xa.oma(102);this.Ald=c;this.vZa=d;f&&this.xa.ndc(f)}else if(d){this.xa.oma(101);this.vZa=d;f&&this.xa.ndc(f)}else this.xa.oma(2)};F.qma=function $bT(a){this.aa.qma(a)};F.kJ=function $cT(){this.jb[bq]({view:wE,search:this.Ea,gkb:h,page:this.Ut()})};F.Tja=function $dT(a){this.vya.Tja(a)};F.yAa=function $eT(a){this.vya.yAa(a)};F.wKc=function $fT(){if(this.xa.xwa()){this.t1b();FK(this.Eha)}};\r
18535 F.t1b=B();F.AH=function $hT(a){a==this.Ml&&z1a(this)};F.CNa=function $iT(a,c){var d=this.xa.Om,f=d[u];if(f==0)return-1;if(!Ue(a))return 0;var g,j;for(g=0;g<f;g++){j=B1a(this,d[g].TCa,a);if(j<=0)break}if(j==0&&c||g==0)return g;if(g>=f)return f-1;return A1a(this,d,g-1,g)};\r
18536 F.I3b=function $jT(a){a=a[y].id;var c=KK;if(a==this.X(c.j1a))this[r](new TF(this,cy));else if(a==this.X(c.rEb))this[r](new TF(this,Od));else if(a==this.X(c.kFa))this.jb[bq]({view:dJ,fk:pJ});else if(a==this.X(c.sEb))this.jb[bq]({view:QO});else if(a==this.X(c.QEb)){a=new Sh;Iy(this.Ea,a);a.ka(Zya,1);a=aza(Sy,a.Of());this.jb[bq]({view:wE,search:a})}else a==this.X(c.CDb)&&this.jb[bq]({view:wE,search:J7a})};F.s3=function $kT(a){this.nk(14,a)};\r
18537 F.aP=function $lT(a){var c=eL(this).J(a);if(!c)e(Error(".162`"+a));if(!c.Mm())if(!this.aa.aP(a,c)){var d=this.B();if(c.Uf()){d=new yCa(d,1);c=c.vf()}else{d=new vB(d,1);c=c.Qy}d.Ii(this.Ea);uB(d,a,c);d.bh=h;d[Mb]()}};F.opa=function $mT(){this.aa.opa();var a=this.xa.Bh;if(a&&a.QPc){this.xa.yib(a);Q(this.B1.b(),M0a())}};F.YRb=D(NO);F.DIb=function $oT(){if(this.xa.Bh)return k;if(this.Ml)return k;if(this.aa.Osb())return k;return h};\r
18538 F.Adb=function $pT(){var a=this.Aa.za(qI),c=0;if(a){a=rI(a,this.Ea);for(var d=eL(this).Sb(),f=0;f<d[u];f++)a.za(d[f]).Fi()&&c++}var g=f=d=a=0;if(this.xa instanceof bK){g=this.xa.wr();a=g.Uz;d=g.Eo;f=g.NO();g=ERa(g)}var j=this.Uq.Adb();return{eBd:a,dBd:d,f2:f,zBd:g,hXc:c,QCd:j[0],DDd:j[1]}};F.zdb=function $qT(){return this.Uq.zdb()};F.Bdb=function $rT(){return this.Uq.Bdb()};F.zD=function $sT(a){this.xa.zD(a)};F.Qz=function $tT(a){this.Du.Qz(a)};F.uNa=function $uT(){return this.xa.uNa()};F.DI=function $vT(a){this.xa.DI(a)};\r
18539 F.TJ=function $wT(a){var c=Zf();a=this.fc[Zp](a);aF(this.B()).VX(Zf()-c);return a};var KK={ezd:J4a,jFa:B4a,u1a:"etl",nDb:"ets",j1a:"bsl",fEb:"qst",eEb:"qsb-",rEb:"sol",kFa:"csetl",sEb:"sendl",QEb:"vttl",CDb:DE,oEb:"rtnsl",Tsd:"chv"};_B_prog(79)}catch(e){_B_err(e)}\r
18540 \r
18541 try{hL[w].Ef=function $xT(a){this[dr](a)};hL[w].info=B();hL[w].K0a=B();hL[w].TW=B();F=kL[w];F.rE=i;F.hR=k;F.koa=i;F.qCb=i;F.AWa=i;F.Xd=i;F.Qn=i;F.BF=i;F.JL=i;F.Tx=i;F.hFa=0;F.EM=i;F.Xna=i;F.wk=i;F.Tw=-1;F.fcc=h;F.xda=k;var z2a={},y2a={};F=kL[w];F.R1=Ge("rE");naa(F,Ge("wo"));var Ypb="Called back with an unexpected xmlhttp",Zpb="Failed call to OnXmlHttpReadyStateChanged_",aqb="ResponseText: ",bqb="No response text";F.Bkc=function $DT(a){a=a[y];try{a==this.Tx?o2a(this):this.cd.K0a(Ypb)}catch(c){this.cd.Ef(Zpb);this.Tx&&this.Tx.dj()?jL(this.cd,c,aqb+this.Tx.dj()):jL(this.cd,c,bqb)}finally{}};\r
18542 F.Dbd=function $ET(){var a=this.Tx.ts(),c=this.Tx.dj();if(this.hFa<c[u]){p2a(this);q2a(this,a,c);this.hR&&a!=4&&lL(this)}};F.czb=function $FT(){this.XUa[qc]();this.Q.wb()};F.G8c=function $GT(a){nL(G(this.F8c,this,a),0)};var cqb="TRIDENT TEXT (";F.F8c=function $HT(a){if(!this.xda){var c=this.cd;c[dr](cqb+this.tI+F1a+G1a(c,a));p2a(this);s2a(this,a);lL(this)}};F.L6b=function $IT(a){nL(G(this.E8c,this,a),0)};var dqb="failure";\r
18543 F.E8c=function $JT(a){if(!this.xda){this.cd[dr](cqb+this.tI+F1a+a?Mh:dqb);p2a(this);this.tJ();this.hR=a;this.ec.uL(this)}};F.tf=function $KT(){this.xda=h;p2a(this);this.tJ()};var eqb="WatchDog timer called too early";F.F9c=function $LT(){this.koa=i;var a=Zf();if(a-this.qCb>=0)this.Zua();else{this.cd.K0a(eqb);L2a(this,this.qCb-a)}};var fqb="Received watchdog timeout even though request loaded successfully",gqb="TIMEOUT: ";\r
18544 F.Zua=function $MT(){this.hR&&this.cd.TW(fqb);this.cd[dr](gqb+this.BF);this.tJ();this.wk=2;mL(18);t2a(this)};F.tJ=function $NT(){this.czb();if(this.Tx){var a=this.Tx;this.Tx=i;nh(a,Lh,this.Bkc,k,this);a[wc]()}if(this.EM)this.EM=i};var hqb="hR";F.rua=D(hqb);F.Kga=D(aOa);F.hH=D("Tw");F.Kw=D("Lx");F=N2a[w];F.rE=i;F.Lc=i;F.OVa=k;F.pbb=i;F.Mia=i;F.Vf=i;F.qa=i;F.Tw=-1;F.o7=i;F.r4a=i;F.R1=Ge("rE");var iqb="MODE";F.bs=function $TT(a){this.Vf=a;a=n3a(this.ec,this.Vf);mL(3);gx(a,iqb,dQ);this.Lc=new kL(this,this.cd,void 0,void 0,void 0);this.Lc.R1(this.rE);c2a(this.Lc,a,k,h);this.qa=0};var jqb="Test Connection Blocked";F.Cwc=function $UT(a){if(a){this.qa=2;R2a(this)}else{mL(4);a=this.ec;a.cd.Ef(jqb);a.Tw=a.j4.hH();pL(a,9)}};La(F,function $VT(){if(this.Lc){this.Lc.tf();this.Lc=i}this.Tw=-1});F.G_=E(k);\r
18545 var kqb="TestConnection: Got data for stage 1",lqb="TestConnection: Null responseText",mqb="11111";F.h6b=function $XT(a,c){this.Tw=a.hH();if(this.qa==0){this.cd.Ef(kqb);if(c){try{var d=ix(c)}catch(f){jL(this.cd,f);p3a(this.ec,this,4);return}this.o7=this.ec.dGb?d[0]:i;this.r4a=d[1]}else{this.cd.Ef(lqb);p3a(this.ec,this,4)}}else if(this.qa==2)if(this.OVa){mL(7);this.Mia=Zf()}else if(c==mqb){mL(6);this.OVa=h;this.pbb=Zf()}else{mL(8);this.pbb=this.Mia=Zf();this.OVa=k}};\r
18546 var nqb="TestConnection: request complete for initial check",oqb="/mail/images/cleardot.gif",pqb="TestConnection: request complete for stage 2",qqb="Test connection succeeded; using streaming connection",rqb="Test connection failed; not using streaming",sqb="TestConnection: request failed, in state ";\r
18547 F.uL=function $YT(){this.Tw=this.Lc.hH();if(this.Lc.rua())if(this.qa==0){this.cd.Ef(nqb);if(this.r4a){this.qa=1;var a=s3a(this.ec,this.r4a,oqb);bi(a);P1a(a[t](),5E3,G(this.Cwc,this),3,2E3)}else{this.qa=2;R2a(this)}}else{if(this.qa==2){this.cd.Ef(pqb);a=k;if(a=L?this.Mia-this.pbb<200?k:h:this.OVa){this.cd.Ef(qqb);mL(12);m3a(this.ec,this,h)}else{this.cd.Ef(rqb);mL(11);m3a(this.ec,this,k)}}}else{this.cd.Ef(sqb+this.qa);if(this.qa==0)mL(9);else this.qa==2&&mL(10);p3a(this.ec,this,this.Lc.Kga())}};\r
18548 F.hH=D("Tw");F.Eb=function $_T(){return this.ec.Eb()};F=T2a[w];F.rE=i;F.ssa=i;F.Bw=i;F.FD=i;F.Vf=i;F.cMa=i;F.lHb=i;F.o7=i;F.dGb=h;F.CSa=0;F.ELa=k;F.na=i;F.jK=i;F.fY=i;F.j4=i;F.cjc=i;F.Dsc=h;F.MQa=-1;F.Tw=-1;var qL=new uh;H(V2a,N);H(X2a,N);F=T2a[w];F.PQ=Ge(he);var tqb="connect()",uqb="connectTest_()";F.bs=function $1T(a,c,d,f,g){this.cd.Ef(tqb);mL(0);this.Vf=c;this.ssa=d||{};if(f&&Ke(g)){this.ssa.OSID=f;this.ssa.OAID=g}this.cd.Ef(uqb);this.j4=new N2a(this,this.cd);this.j4.R1(this.rE);this.j4.bs(a)};var vqb="disconnect()",wqb="terminate";\r
18549 F.Qea=function $2T(){this.cd.Ef(vqb);Y2a(this);if(this.qa==3){var a=this.CSa++,c=this.cMa.vc();c.ka(b3a,this.Lx);c.ka(c3a,a);c.ka(P2a,wqb);g3a(this,c);a=new kL(this,this.cd,this.Lx,a,void 0);a.Xd=2;a.Qn=bi(c.vc());(new Image).src=a.Qn;a.AWa=Zf();lL(a);this.sTa()}};F.Kw=D("Lx");F.R1=Ge("rE");F.H=D(KP);F.oM=Ge(KP);var xqb="Already have 1000 queued maps upon queueing ";F.Hg=function $7T(a){if(this.qa==0)e(Error(".164"));this.fQ[u]==1E3&&this.cd.TW(xqb+zh(a));this.fQ[p](a);if(this.qa==2||this.qa==3)a3a(this)};\r
18550 var yqb="setFailFast: ",zqb="Retry count ",Aqb=" > new maxRetries ",Bqb=". Fail immediately!";F.Gwb=function $8T(a){this.ELa=a;this.cd[dr](yqb+a);if((this.Bw||this.jK)&&this.K5>(this.ELa?0:2)){this.cd[dr](zqb+this.K5+Aqb+(this.ELa?0:2)+Bqb);if(this.Bw){this.Bw.tf();this.uL(this.Bw)}else{Je[gb](this.jK);this.jK=i;pL(this,2)}}};F.G_=function $9T(){return this.qa==0};F.xc=D(Yj);F.hH=D("Tw");\r
18551 var Cqb="startForwardChannel_",Dqb="Not supposed to retry the open",Eqb="startForwardChannel_ returned: nothing to send",Fqb="startForwardChannel_ returned: connection already in progress",Gqb="startForwardChannel_ finished, sent request";F.v6b=function $bU(a){this.jK=i;this.cd.Ef(Cqb);if(this.qa==1)if(a)this.cd.TW(Dqb);else{this.R0();this.qa=2}else if(this.qa==3)if(a)e3a(this,a);else if(this.fQ[u]==0)this.cd.Ef(Eqb);else if(this.Bw)this.cd.Ef(Fqb);else{e3a(this);this.cd.Ef(Gqb)}};\r
18552 var Hqb="open_()",Iqb="CVER";F.R0=function $cU(){this.cd.Ef(Hqb);this.CSa=l[rb](l[Tc]()*1E5);var a=this.CSa++,c=new kL(this,this.cd,I,a,void 0);c.R1(this.rE);var d=f3a(this),f=this.cMa.vc();f.ka(c3a,a);this.vS&&f.ka(Iqb,this.vS);g3a(this,f);c.Xd=1;c.Qn=bi(f.vc());c.JL=d;c.A8a=h;d2a(c);this.Bw=c};var Jqb="Creating new HttpRequest",Kqb="rpc",Lqb="New Request created";\r
18553 F.u6b=function $dU(){this.fY=i;this.cd.Ef(Jqb);this.FD=new kL(this,this.cd,this.Lx,Kqb,this.kHb);this.FD.R1(this.rE);var a=this.lHb.vc();a.ka(c3a,Kqb);a.ka(b3a,this.Lx);a.ka(AUa,this.cjc?Ah:Hj);a.ka(d3a,this.MQa);g3a(this,a);if(L){a.ka(P2a,oL);K2a(this.FD,a,Boolean(this.o7))}else{a.ka(P2a,Q2a);c2a(this.FD,a,h)}this.cd.Ef(Lqb)};\r
18554 F.h6b=function $eU(a,c){if(!(this.qa==0||this.FD!=a&&this.Bw!=a)){this.Tw=a.hH();if(this.Bw==a&&this.qa==3){if(c!=I1a){this.cd.Ef("Bad data returned - missing/invald magic cookie");pL(this,11)}}else im(c)||this.mpb(ix(c))}};var Mqb="Request complete",Nqb="Not retrying due to error type",Oqb="Maybe retrying, last error: ",Pqb="Request already in progress",Qqb="Going to retry POST",Rqb="Going to retry GET",Sqb="Exceeded max number of retries",Tqb="Error: HTTP request failed";\r
18555 F.uL=function $fU(a){this.cd.Ef(Mqb);var c;if(this.FD==a){this.FD=i;c=2}else if(this.Bw==a){this.Bw=i;c=1}else return;this.Tw=a.hH();if(this.qa!=0)if(a.rua())if(c==1){var d=Zf()-a.AWa;qL[r](new X2a(qL,a.JL?a.JL[u]:0,d,this.K5));a3a(this);Ia(this.Hka,0)}else j3a(this);else{d=a.Kga();if(d==3||d==0&&this.Tw>0)this.cd.Ef(Nqb);else{this.cd.Ef(Oqb+b2a(d,this.Tw));if(c==1){if(this.Bw||this.jK){this.cd.TW(Pqb);a=k}else if(this.qa==1||this.K5>=(this.ELa?0:2))a=k;else{this.cd.Ef(Qqb);this.jK=nL(G(this.v6b,\r
18556 this,a),this.rNa(this.K5));this.K5++;a=h}if(a)return}if(c==2){if(this.FD||this.fY){this.cd.TW(Pqb);a=k}else if(this.pHa>=3)a=k;else{this.cd.Ef(Rqb);this.kHb++;this.fY=nL(G(this.u6b,this),this.rNa(this.pHa));this.pHa++;a=h}if(a)return}this.cd.Ef(Sqb)}this.cd.Ef(Tqb);switch(d){case 1:pL(this,5);break;case 4:pL(this,10);break;case 3:pL(this,6);break;default:pL(this,2);break}}};var Uqb="Inactive channel";F.rNa=function $gU(a){var c=5E3+l[rb](l[Tc]()*1E4);if(!this.Eb()){this.cd.Ef(Uqb);c*=2}c*=a;return c};\r
18557 F.mpb=function $hU(a){for(var c=this.na&&this.na.uIa?[]:i,d=0;d<a[u];d++){var f=a[d];this.MQa=f[0];f=f[1];if(this.qa==2)if(f[0]==dx){this.Lx=f[1];this.o7=this.dGb?f[2]:i;this.qa=3;this.na&&this.na.bJb(this);this.lHb=S2a(this,this.o7,this.Vf);j3a(this)}else f[0]==Id&&pL(this,7);else if(this.qa==3){if(f[0]==Id){if(c&&c[u]){this.na.uIa(this,c);Ia(c,0)}pL(this,7)}else f[0]!=L1a&&c&&c[p](f);this.pHa=0}}c&&c[u]&&this.na.uIa(this,c)};F.XCc=function $iU(){if(!ef(arguments,this.qa))e(Error(".165`"+this.qa))};\r
18558 F.Xmd=function $jU(a){if(a){this.cd[dr]("Successfully pinged google.com");mL(2)}else{this.cd[dr]("Failed to ping google.com");mL(1)}};var Vqb="HttpChannel: error - ";F.J0=function $kU(a){this.cd.Ef(Vqb+a);this.qa=0;this.na&&this.na.C5a(this,a);this.sTa();Y2a(this)};var Wqb="Number of undelivered maps, pending: ",Xqb=", outgoing: ";\r
18559 F.sTa=function $lU(){this.qa=0;this.Tw=-1;if(this.na)if(this.Hka[u]==0&&this.fQ[u]==0)this.na.B5a(this);else{this.cd.Ef(Wqb+this.Hka[u]+Xqb+this.fQ[u]);var a=nf(this.Hka),c=nf(this.fQ);Ia(this.Hka,0);Ia(this.fQ,0);this.na.B5a(this,a,c)}};F.Eb=function $mU(){return this.na.Eb(this)};F=v3a[w];F.uIa=i;F.bJb=B();F.C5a=B();F.B5a=B();F.uQb=function $qU(){return{}};F.MRb=E(i);F.Eb=E(h);_B_prog(80)}catch(e){_B_err(e)}\r
18560 \r
18561 try{H(x3a,v3a);F=x3a[w];F.Sja=i;F.OQa=0;F.UOa=k;F.vUa=[];F.D=function $tU(){nh(this.Mw,yj,this.aNb,h,this);this.qa!=-1&&this.ec.Qea();this.qa=1;this.Xza[bc]();C3a(this);D3a(this);this.Mw.D()};F.xc=function $uU(){if(this.usa)return 4;return this.qa};F.Xn=D(aOa);F.w6=D("Sja");F.uIa=function $xU(a,c){if(a==this.ec){for(a=0;a<c[u];a++)this.Xza.MG(c[a]);this.b1()}};var Yqb=":26";\r
18562 F.b1=function $yU(){D3a(this);for(var a=Zf(),c=[];!this.Xza.nd();){var d=this.Xza.ly(),f=Zf(),g=d[0];if(!(d[u]<=0))if(this.qa==3&&d[0]==Ph)z3a(this,4);else if(this.qa==4)try{var j=this.Ze.rDa.J(d[0]);if(j&&Ve(d[1])){var n=d[1];j[r](new I3a(n));g+=Qd+n[0]}}catch(s){}d=g;g=Zf();c[p]([d+xj+(g-f)]);if(g-a>500)break}if(!this.Xza.nd())this.Prb=bA(Yqb,this.b1,0,this)};F.bJb=function $zU(a){if(a==this.ec){this.yla=5E3+l[Tc]()*2E4;z3a(this,3)}};\r
18563 F.C5a=function $AU(a,c){if(a==this.ec){this.usa=k;if(c==4)this.wk=1;else if(c==2)this.wk=2;else if(c==6){if(this.qa==4)if(!F3a(this,h))this.usa=h;this.wk=0;this.UOa=h}else if(c==8)this.wk=3;else if(c==7)this.wk=2;else if(c==9)this.wk=4;F3a(this,h);z3a(this,5)}};F.B5a=function $BU(a,c,d){if(a==this.ec)if(this.qa!=5&&this.qa!=6){this.usa=k;z3a(this,1);if(c||d)this.Ze[r](new K3a(c||i,d||i))}};F.uQb=function $CU(a){if(a!=this.ec)return{};a={};for(var c=0;c<this.vUa[u];c++)a=this.vUa[c].YFa(a);return a};\r
18564 F.MRb=function $DU(a){if(a!=this.ec)return i;if(this.qKb){a=new Sh(this.qKb);bi(a);return a}return i};F.Eb=E(h);var Zqb="test",arb="bind";F.fJa=function $FU(){C3a(this);if(!this.lS)e(Error(".167"));var a=this.lS+Zqb,c=this.lS+arb;if(this.qa!=-1){this.ec.xc()==3||Z2a(this.ec)!=0;var d=this.ec.Kw(),f=this.ec.MQa;this.ec=this.cea(this.vS);this.ec.bs(a,c,{},d,f)}else this.ec.bs(a,c,{});z3a(this,2)};F.mq=function $GU(){switch(this.xc()){case -1:case 2:case 3:case 4:return h;default:return Ue(this.BSa)}};\r
18565 F.Hg=function $HU(a,c){if(!this.mq())e(Error(".168`"+a[Zb]));c=c||1;if(Ue(a)){this.NAa.MG(a);this.NAa.Nb()>=5E3&&this.NAa.ly()}if(this.qa==4&&c==1)for(;!this.NAa.nd();)this.ec.Hg(this.NAa.ly())};F.cea=function $IU(a){a=this.XHb?this.XHb(a):new T2a(a);this.cd&&this.PQ(this.cd);a.oM(this);return a};F.Tac=function $JU(){this.Sja=i;if(this.qa==1||this.qa==5||this.qa==6){this.UOa=k;this.ec&&Z2a(this.ec)==0?this.fJa():A3a(this)}};F.aNb=function $KU(){if(!F3a(this,k))this.OQa=Zf()};\r
18566 F.mGa=function $LU(a){hf(this.vUa,a)};F.lWa=function $MU(a){jf(this.vUa,a)};F.PQ=function $NU(a){this.cd=a;if(this.ec)a?this.ec.PQ(a):this.ec.PQ(new hL)};H(G3a,uh);H(H3a,uh);H(I3a,N);H3a[w].Ga=D(Gd);H3a[w].mq=function $PU(){return this.Ze.mq()};H3a[w].Hg=function $QU(a,c){this.Ze.Hg(this,a,c)};H(B3a,N);H(K3a,N);F=G3a[w];F.L=function $RU(){G3a.C.L[z](this);this.av.D();for(var a=this.rDa.Oa(),c=0;c<a[u];c++)a[c].D();this.rDa[bc]()};F.By=function $SU(a){var c=this.rDa.J(a);if(!c){c=new H3a(this,a);this.rDa.set(a,c)}return c};F.mGa=function $TU(a){this.av.mGa(a)};F.lWa=function $UU(a){this.av.lWa(a)};F.bs=function $VU(){this.xc()==-1&&this.av.fJa()};\r
18567 F.Qea=function $WU(){this.av.ec.Qea()};F.Kw=function $XU(){return this.av.ec.Kw()};F.mq=function $YU(){return this.av.mq()};var brb="_sc";F.Hg=function $ZU(a,c,d){if(brb in c)e(Error(".169"));c._sc=a.Ga();this.av.Hg(c,d)};F.xc=function $_U(){return this.av.xc()};F.Xn=function $0U(){return this.av.Xn()};F.w6=function $1U(){return this.av.w6()};F.PQ=function $2U(a){this.av.PQ(a)};F.Gwb=function $3U(a){this.av.ec.Gwb(a)};F.hH=function $4U(){return this.av.ec.hH()};var crb=new CB(eI,PO),eR=new CB(eI,ke),fR=new CB(eI,he),gR=new CB(eI,glb);H(uL,xx);F=uL[w];F.Qs=E(k);F.Qs.ic=h;F.Tsb=B();F.Tsb.Ka=h;F.lJ=B();F.lJ.Ka=h;H(xL,kn);yx(uL,xL);F=xL[w];F.hZb=0;F.B=D(JF);F.a6c=function $9U(a){a.iaa==Wn&&a.IFa&&this.Aa.rg()};var hR="^iim",iR="^ig";\r
18568 F.WH=function $$U(a){if(!this.Pc)if(a.iaa==Wn){M3a(this);yA++;try{this.Aa.Qf();try{if(!this.aa.Qs(a)&&!a.IFa){var c=a.ws(),d=a.Bb?a.Bb():i;switch(a.mg){case 1:case 2:for(var f=0,g=a.Mg();f<g[u];f++){var j=g[f][0],n=g[f][1],s=a.mg==1,v=this.lJ(c,d,j);this.Jg&&this.Jg.Yaa(j,n,s);if(this.Cg){this.Cg.Yaa(j,n,s);zL(this,j)}v&&O3a(v)}break;case 97:var C=a.Hc(),M=a.wf,Y=this.lJ(a.ws(),a.Bb(),C),ha=this.Cg,tb;if(ha){ha.Xwb(C,M,k);zL(this,C);tb=ha.Ydb(C)}var zc=this.Jg;if(zc)tb?zc.Yaa(C,C,k,tb):bI(zc,C);Y&&\r
18569 O3a(Y);break;case 3:case 4:var qb=a.mg!=4;f=0;for(g=a.Mg();f<g[u];f++)this.STa(g[f][0],g[f][1],qb);break;case 110:var nd=d?Xy(d):i,Fe=[],Pe=nd?[nd]:[];qb=h;N3a(this,c,d,a.Mg(),Fe,Pe,qb);break;case 111:Fe=(nd=a.Dd())?[nd]:[];Pe=[];qb=k;N3a(this,c,d,a.Mg(),Fe,Pe,qb);break;case 5:case 6:qb=a.mg!=6;var qg=a.Hc();f=0;for(g=a.wf;f<g[u];f++)this.Iqb(qg,g[f],qb);break;case 11:qg=a.Hc();f=0;for(g=a.wf;f<g[u];f++){var te=qg;if(this.Cg){tI(this.Cg,te);zL(this,te)}this.Jg&&TRa(this.Jg)}break;case 48:qg=a.Hc();\r
18570 f=0;for(g=a.wf;f<g[u];f++){te=qg;if(this.Cg){this.Cg.Wwb(te,g[f],k);zL(this,te)}this.Jg&&TRa(this.Jg)}break;case 12:case 13:case 76:case 77:Pe=[];Fe=[];switch(a.mg){case 12:Fe=[a.Dd()];break;case 13:Pe=[a.Dd()];break;case 76:Pe=[a.IXc];Fe=[a.Dd()];break;case 77:Pe=a.pkb;Fe=a.okb;break}this.aa.lJ(a,Fe,Pe);te=a.Mg();for(f=0;f<te[u];f++){g=te[f];qg=g[0];var Zk=g[1];yL(this,c,d,qg,Zk,Fe,Pe)}break;case 53:f=nd=a.Dd();this.Jg&&this.Jg.E4(f,void 0);this.Cg&&this.Cg.E4(f,void 0);break;case 54:var My=a.KU,\r
18571 Ny=a.sWc;this.Jg&&this.Jg.E4(My,Ny);this.Cg&&this.Cg.E4(My,Ny);break;case 67:case 116:a.wac();break;case 8:te=a.Mg();for(f=0;f<te[u];f++){g=te[f];qg=g[0];Zk=g[1];var Ut=qg;yL(this,c,d,Ut,Zk,[TI],[AL,BL,GN]);if(this.Cg){tI(this.Cg,Ut);zL(this,Ut)}}break;case 16:te=a.Mg();for(f=0;f<te[u];f++)this.Aa.rg();break;case 10:te=a.Mg();for(f=0;f<te[u];f++){g=te[f];qg=g[0];Zk=g[1];Ut=qg;var Kr=Zk,Tp=[BL];a=[AL,TI,GN];this.aa.lJ(i,Tp,a);yL(this,c,d,Ut,Kr,Tp,a)}break;case 9:te=a.Mg();for(f=0;f<te[u];f++){g=te[f];\r
18572 qg=g[0];Zk=g[1];yL(this,c,d,qg,Zk,[AL],[TI,BL,GN,hR,iR])}break;case 18:te=a.Mg();for(f=0;f<te[u];f++){g=te[f];qg=g[0];Zk=g[1];yL(this,c,d,qg,Zk,[TI],[AL,BL,GN])}break;case 98:te=a.Mg();for(f=0;f<te[u];f++){g=te[f];qg=g[0];Zk=g[1];yL(this,c,d,qg,Zk,[A7a],[AL,BL,GN])}break;case 30:var GD=a.Hc(),vo=a.wf[0],b9=this.lJ(c,d,GD);this.SX(GD,i,[Gmb],vo);this.SX(GD,i,[AL]);this.m1(GD,i,[TI,BL,GN]);b9&&O3a(b9);break;case 31:var Loa=a.Hc();yL(this,c,d,Loa,i,[],[Gmb],a.wf[0]);break;case 17:te=a.Mg();for(f=0;f<\r
18573 te[u];f++){g=te[f];qg=g[0];Zk=g[1];a=qg;j=Zk;Kr=this.co;if(Kr.hc()){Tp=OC(Kr);Tp[p](TI);Tp[p](AL);Tp[p](BL);Tp[p](CL);Tp[p](oI);Tp[p](EN);Tp[p](DN);Kr.BFb(Tp);Kr.aa.iGa(Tp);Ut=Tp}else Ut=i;yL(this,c,d,a,j,[],Ut)}break;case 47:te=a.Mg();for(f=0;f<te[u];f++){g=te[f];c=qg=g[0];if(this.Jg){SRa(this.Jg);cI(this.Jg,J7a)}if(this.Cg){tI(this.Cg,c);zL(this,c)}}break;case 21:Fe=[GN];Pe=[AL,BL,TI];this.aa.lJ(a,Fe,Pe);te=a.Mg();for(f=0;f<te[u];f++){g=te[f];qg=g[0];Zk=g[1];yL(this,c,d,qg,Zk,Fe,Pe)}break;case 22:var eH=\r
18574 a.Hc(),c9=a.c_();if(a.eg||!a.Eg()){a.WQ&&!a.Eg()&&this.m1(eH,eH,[TI]);P3a(this,d,eH,c9,a.OM())}else P3a(this,d,eH,c9);break;case 23:eH=a.Hc();c9=a.c_();P3a(this,d,eH,c9);break;case 15:qg=a.Hc();var cjb=a.wf;for(f=0;f<cjb[u];f++)P3a(this,d,qg,i);break;case 49:case 50:this.Cg&&MSa(this.Cg,a.Qla);break;case 58:var GLa=a.uGc();if(this.Cg){tI(this.Cg,GLa);zL(this,GLa)}break;case 36:var HLa=a.XA,ILa=HLa.Sb();for(f=0;f<ILa[u];f++){var JLa=ILa[f];this.lb.Yc(JLa,HLa.J(JLa))}break;case 61:var Moa=this.lb,djb=\r
18575 a.NQc();zy(Moa,Moa.rl);Fya(Moa,DM).set(new qy(DM,djb));break;case 27:case 57:a.FPc()&&b4a(this);break;default:this.aa.Tsb(a)}}}finally{this.Aa.Mf()}}finally{zA()}}else a.iaa==pd&&a.HNa()==2&&this.pUa[p](a)};F.tqb=function $aV(a){!this.Pc&&a.iaa==pd&&a.HNa()==2&&jf(this.pUa,a)};F.STa=function $bV(a,c,d){d={Uf:d};this.Jg&&this.Jg.nB(a,c,d);if(this.Cg){this.Cg.nB(a,c,d);zL(this,a)}};\r
18576 F.Iqb=function $cV(a,c,d){d={Uf:d};if(this.Cg){this.Cg.YXa(a,c,d);zL(this,a)}if(this.Jg)if(c=QRa(this.Jg,a))if(d.Uf)this.Jg.nB(a,c,d);else{var f=NSa(this.Cg,a,c);if(wx(f)){bI(this.Jg,a);cI(this.Jg,I7a)}else f||this.Jg.nB(a,c,d)}else cI(this.Jg,I7a)};F.lJ=function $dV(a,c,d){var f;if(this.co){a=f=new S3a(this,a,c,d);if(a.aX==2&&a.ik.Cg){if((c=a.ik.Cg.zp(a.Ea,a.Sq,h))&&c.hc())a.on=c}else if(a.aX==1&&a.ik.Jg)if(c=(c=a.ik.Jg.Zga(a.Ea,a.Sq))&&c.hc()?c.J():i)a.Uk=c;a.K2(-1)}return f};\r
18577 F.SX=function $eV(a,c,d,f){this.Jg&&this.Jg.SX(a,c,d);if(this.Cg){this.Cg.SX(a,c,d,f);zL(this,a)}};F.m1=function $fV(a,c,d,f){this.Jg&&this.Jg.m1(a,c,d);if(this.Cg){this.Cg.m1(a,c,d,f);zL(this,a)}};F.fXb=B();S3a[w].K2=function $hV(a){if(this.on){var c=this.on.wua(),d=this.on.Jo();V3a(this,this.aBb,c,a);V3a(this,this.AAb,d,a)}else if(this.Uk){c=this.Uk.wua();d=this.Uk.Jo();V3a(this,this.aBb,c,a);V3a(this,this.AAb,d,a)}else this.NYb=k};\r
18578 xL[w].O_c=function $iV(a){M3a(this);var c=a[dq],d=c[1];a=a.Pg;var f=a.Rc(pd);a=f==QN?a.Rc(fG)==qB[22]?k:h:f==OD&&Z3a(this,a);if(!a&&this.wKa.Nb()){var g=this.wKa.Sb();for(f=0;f<g[u];f++){var j=g[f];a4a(this,j)}this.wKa[bc]()}for(f=0;f<d[u];f++){g=d[f];j=g[0];if(this.UQa[j]!=g[1])a?this.wKa.set(j,1):a4a(this,j)}if(c[u]>2)if(this.hZb!=c[2]){this.lb.rg();this.co&&this.co.rg()}};\r
18579 xL[w].N_c=function $jV(a){M3a(this);var c=a[dq],d=c[1];a=a.Pg.Rc(fG)==qB[22]?h:k;var f=this.UQa;this.UQa={};for(var g=0;g<d[u];g++){var j=d[g],n=j[0];j=j[1];var s=f[n];this.UQa[n]=j;a&&s!=j&&a4a(this,n)}if(c[u]>2)this.hZb=c[2]};xL[w].tka=function $kV(a,c,d,f,g){M3a(this);this.Cg&&this.Cg.tka(a,c,d,f,g)};yx(DL,S3a);DL[w].z5a=B();DL[w].z5a.Ka=h;DL[w].xwb=B();DL[w].xwb.ic=h;_B_prog(81)}catch(e){_B_err(e)}\r
18580 \r
18581 try{H(c4a,Iw);var drb="gv",erb="U",jR="gp";c4a[w].tb=function $nV(){var a=fD(this.Db);hD(a,this,[UO]);iD(a,this,[je]);gD(a,UO,RF);lA(this.Db,RF,drb);lA(this.Db,erb,jR);a=RC(this.Db);uEa(a,function(c){c=c.B();lA(c,JF,LF);lA(c,bM,yM)})};c4a[w].Gaa=function $oV(a){return[je,a.ega]};c4a[w].aca=function $pV(a,c){a={};if(c[0]){Gp(a,UO);a.ega=c[0]}return a};H(d4a,Iw);var frb="settings";d4a[w].tb=function $qV(){var a=fD(this.Db);iD(a,this,[frb]);hD(a,this,[dJ]);gD(a,dJ,ML);lA(this.Db,ML,ki)};d4a[w].Gaa=function $rV(a){var c=[frb];a.fk&&c[p](a.fk);return c};d4a[w].aca=function $sV(a,c){a={view:dJ};if(c[0])a.fk=c[0];return a};e4a[w].e9=function $tV(a){this.jb[bq]({view:QO,nt:a})};H(EL,YC);F=EL[w];F.Ttb=function $uV(){var a=this.V;pDa(a);rDa(a);WCa(a,this);var c=new HB(a);a[kq](IB,c);var d=new LLa(a);a[kq](vA,d);a[kq](Bz,new BPa(a));a[kq](eo,new WIa(a));d=new HH(a);a[kq](IH,d);d=new jCa(a);a[kq](fo,d);d=new UKa(a);a[kq](GF,d);a[kq](RE,new e4a(c))};F.B=D(JF);var grb="cO",hrb="cQ",irb="cP";\r
18582 F.OK=function $wV(a,c){if(jA(this.V,Pd))e(Error(".170"));var d=this.sC[yc];ewa(Wj,d);var f=d[ub](Kdb);if(a){Sg(f);a=d}else{a=om(f);ewa(Wj,a);if(Jg){d=Cg(a);var g=d.ba(T);Ja(g[x],oia);Wa(g[x],Ah);ka(g[x],Ah);d[o](a[Lc],g)}K(f,grb);K(a[mc],hrb);K(a[Lc],irb);a=a;this.Gk.w(f[gc],uj,this.SIc)}c=c&&L?this.sC[yc][ub](c):this.sC[yc][Lc];this.Thb(a,c);L&&this.V.J(Zx).XFa(a[Lc]);ZVa(this.V).UXa(ki)};\r
18583 F.Thb=function $xV(a,c){var d=this.V;oDa(qC(d),a);rFa(d,a[Lc]);var f=sC(d);tDa(f,a);if(f.Ppa)e(Error(".105"));f.Ppa=Cg(this.sC[yc]);if(f.Jsa)e(Error(".105"));f.Jsa=Cg(a);this.Gk.w(f,rC,this.EHc);a=Cg(this.sC);f=mD(d);pDa(f);oDa(qC(f),Eg(c));d.aI=f;rFa(f,c);c=qC(d).W();c=new gC([c,a]);if(jA(hA(d),XC))d[kq](XC,c);else{hA(d)[kq](XC,c);nDa(lC(d),c)}};F.EHc=function $yV(){var a=iA(this.V);if(Ng&&a){a=qC(a).Fp()[rk];a[ed]==ym&&a[yk]()}};\r
18584 F.SIc=function $zV(){if(!Ng&&!(Fh&&vg(Im)))this.Jz.qa==1||this.Jz.qa==2||top[Ic][Sq](h)};F.L=function $AV(){if(this.QOb){iA(this.V).D();this.V.D()}EL.C.L[z](this)};H(HL,xx);HL[w].qo=B();HL[w].qo.Ka=h;H(IL,Jf);yx(HL,IL);F=IL[w];var kR="aa",lR="lb",jrb="GMAIL_LOGIN";F.tb=function $CV(){var a=this.V,c=dD(a);c.qo(new Y0a(a));c.qo(new nRa(a));c.qo(new d4a(a));c.qo(new c4a(a));this.aa.qo(a,c);c.tb();c=this.V;var d=new DIa(c);c[kq](ii,d);fy(this.V).ud.mw=d;c=new xL(a);a[kq](Yx,new OBa(c));OO=Af(EB.Nga(),I,dab.Nga(),kD,eI.Nga(),oy);lA(this.V,OIa,JD);lA(this.V,kR,lR);a=this.V;c=new U_a(a);a[kq](SK,c);ni(jrb,Md,".google.com");a=this.V;c=new HE(a,void 0);a[kq](aD,c)};F.L=function $DV(){IL.C.L[z](this);this.Q.D()};\r
18585 F.Gpb=function $EV(){this.Q.w(this.Jz.iL,aD,this.LYc)};var krb="All windows that have been popped out will be closed.";F.LYc=function $FV(a){this.Jz.poa[u]>1&&a.hj[p](krb)};F.tYc=function $GV(){try{var a=this.V,c=this.Jz.iL,d=nf(this.Jz.poa);Ff(d,function(n){n!=c&&n.o6a()});var f=jA(a,Xx);f&&f.Ac(k);GEa(a);a.D();ME.D();this.Y9a&&this.Y9a.D();var g=O.S();g.Bxa.D();Cwa();this.Q.D();g.D();this.p9a()}catch(j){}finally{}this.D()};F.p9a=function $HV(){vf(kh)&&ph()};H(j4a,uh);var lrb="532.0";ya(j4a[w],function $IV(a){var c=0,d=0,f=0;a=a.pj;if(a[Zb]==i4a){d=1;if(L||Jg&&(Ri||vg(lrb)))d=40;f=-a.wheelDelta/d;if(Ke(a.wheelDeltaX)){c=-a.wheelDeltaX/d;d=-a.wheelDeltaY/d}else d=f}else{f=a.detail;if(f>100)f=3;else if(f<-100)f=-3;if(Ke(a.axis)&&a.axis===a.HORIZONTAL_AXIS)c=f;else d=f}c=new k4a(f,a,c,d);try{this[r](c)}finally{c.D()}});j4a[w].L=function $JV(){j4a.C.L[z](this);oh(this.lRa);delete this.lRa};H(k4a,hh);function yrb(b){this.V=b;this.Ma=yy(b);this.cg=KC(b);this.Dea=new ZDa}function zrb(b){b.kw=new Hf;var a=b.Ma.db(w6a);a=a||cM.sx_clcp;if(!sx(a)){for(var c=new cg,d=OC(MC(b.cg)),f=0;f<d[u];f++){var g=NC(b.cg,d[f]).rga();g<-1&&c.add(g)}d=[];a=a[Cc](wj);var j=k;for(f=0;f<a[u];f++){var n=a[f][Cc](xj);g=da(n[0],10);if(c[bd](g)){b.kw.set(g,{tg:n[1],bgColor:n[2]});d[p](n[kd](xj))}else j=h}if(j){b=new lF(b.V);b.bh=h;b.Yc(w6a,d[kd](wj));b[Mb]()}}}function nR(b){b.kw||zrb(b);return b.kw};F=yrb[w];F.PO=function $ZV(a){if(a<-1)return(a=nR(this).J(a))?a.tg:sdb;return this.Dea.PO(a)};F.lK=function $_V(a){if(a<-1)return(a=nR(this).J(a))?a[jq]:EP;return this.Dea.lK(a)};F.X5=function $0V(a){var c=a.rga();if(c<-1){c=(a=nR(this).J(c))?a[jq]:EP;return{tg:(a?a.tg:sdb)[Zc](1),bgColor:c[Zc](1)}}return this.Dea.X5(a)};F.qcb=function $1V(){return this.Dea.qcb()};F.icb=function $2V(){return this.Dea.icb()};F.JMa=function $3V(){return this.Dea.JMa()};\r
18586 F.rga=function $4V(a,c){for(var d=nR(this).Sb(),f=nR(this).Oa(),g=0;g<f[u];g++)if(a==f[g].tg&&c==f[g][jq])return da(d[g],10);d=(d=this.Ma.db(x6a))?da(d,10):cM.ix_clcip;f=(f=this.Ma.db(w6a))?f:cM.sx_clcp;f+=(f!=I?wj:I)+d+xj+a+xj+c;if(f[u]>2E3)return i;g=new lF(this.V);g.bh=h;g.Yc(x6a,d-1);g[Mb]();g=new lF(this.V);g.bh=h;g.Yc(w6a,f);g[Mb]();nR(this).set(d,{tg:a,bgColor:c});return d};_B_prog(82)}catch(e){_B_err(e)}\r
18587 \r
18588 try{Xw(O.S(),Kd).Lr(function(b){var a=new yrb(b);KC(b).kr=a});var Brb="0.3.6";function oR(b,a,c){this.fF=c||Io()[tc](Ho,YQ);this.Jb=sla(b);this.Gub=a?String(a):i;this.xzb=bg(Io()[Za],Brb)>=0}var Crb="progress";function Drb(b,a,c){if(b.HLa!=a||b.BZ!=c){b.HLa=a;b.BZ=c;b[r](Crb)}}function pR(b){if(!b.qy())e(Error(".171"))}function Erb(b){if(!b.xzb&&b.RI!=i){b.ab[Oma](b.RI);b.RI=i;b.ab=i}}function Frb(b,a){N[z](this,b);if(a)this.sLa=a}function qR(b){this.tab=new Hf;this.Qwa=b}function Grb(b,a){b=500*l.pow(2,a);return b+b*l[Tc]()/2}\r
18589 function rR(){qR[z](this,h);this.ZL=[];this.na=new kn(this)}function sR(b){qR[z](this,h);this.Dc=b;this.na=new kn(this);this.na.w(b,Mh,this);this.na.w(b,Kh,this);this.na.w(b,Crb,this)}H(oR,uh);F=oR[w];F.RI=i;F.ab=i;F.ng=k;F.HLa=0;F.BZ=0;F.Eb=D(Ej);F.jm=function $7V(){return this.HLa==this.BZ};F.ye=function $8V(){return this.hf()==0};F.Kga=function $9V(){return this.Wn?this.Wn.lastErrorMessage:I};F.qy=function $$V(){if(!this.Wn)this.Wn=this.fF.openManagedStore(this.Jb,this.Gub);return!!this.Wn};\r
18590 Ka(F,function $aW(a){if(!this.qy()){this.Wn=this.fF.createManagedStore(this.Jb,this.Gub);pR(this)}if(a)this.Wn.manifestUrl=String(a)});var Hrb="beta.timer";Qp(F,function $bW(){if(!this.ng){pR(this);if(this.xzb){kma(this.Wn,G(this.NJc,this));this.Wn.oncomplete=G(this.ZT,this);oa(this.Wn,G(this.Po,this))}else{this.ab=Io()[tc](Hrb,YQ);this.RI=this.ab[Dc](G(this.Lwc,this),500);Drb(this,0,1)}this.Wn[Kma]();this.ng=h}});F.BRb=function $cW(){pR(this);return this.Wn.manifestUrl};\r
18591 F.iCa=function $dW(a){pR(this);this.Wn.manifestUrl=String(a)};F.Cy=function $eW(){return this.qy()?this.Wn.currentVersion:i};F.hf=function $fW(){pR(this);return this.Wn.updateStatus};F.Mc=function $gW(){pR(this);return this.Wn[Vc]};F.Ac=function $hW(a){pR(this);Ra(this.Wn,!!a)};wa(F,function $iW(){pR(this);this.fF.removeManagedStore(this.Jb,this.Gub);this.Wn=i;if(this.qy())e(Error(".172"))});\r
18592 F.Lwc=function $jW(){var a;if(this.Wn.updateStatus==3){a=new Frb(Kh,this.Wn.lastErrorMessage);Drb(this,0,1)}else if(this.Wn.updateStatus==0){a=new Frb(Mh);Drb(this,1,1)}if(a){Erb(this);this[r](a);this[r](Hh);this.ng=k}};F.NJc=function $kW(a){Drb(this,a.filesComplete,a.filesTotal)};F.ZT=function $lW(){this[r](Mh);this[r](Hh);this.ng=k};F.Po=function $mW(a){this[r](new Frb(Kh,a[Tq]));this[r](Hh);this.ng=k};\r
18593 F.L=function $nW(){oR.C.L[z](this);if(this.xzb&&this.Wn){kma(this.Wn,i);this.Wn.oncomplete=i;oa(this.Wn,i)}Erb(this);this.Wn=this.fF=i};H(Frb,N);Frb[w].sLa=i;H(qR,uh);F=qR[w];F.Lv=i;var Irb=":28";F.TRa=function $oW(a){var c=this.tab.J(a)||0;this.tab.set(a,++c);if(c>5||this.tab.Nb()>50)return k;if(!this.Lv)this.Lv=bA(Irb,this.vW,Grb(this,c),this);return h};F.vW=function $pW(){if(!this.Eb())e(Error(".173"));this.eqa();this.Wma()};F.eqa=function $qW(){if(this.Lv){cA(this.Lv);this.Lv=i}};F.L=function $rW(){qR.C.L[z](this);this.eqa()};H(rR,qR);F=rR[w];F.XIa=k;F.H=D(KP);F.j_=function $tW(){return dxa(this.ZL,function(a,c){return a+c.j_()},0)};F.Z5=function $uW(){return dxa(this.ZL,function(a,c){return a+c.Z5()},0)};F.Eb=function $vW(){return Mi(this.ZL,function(a){return a.Eb()})};F.jm=function $wW(){return!this.ye()||Gf(this.ZL,function(a){return a.jm()||!a.Qwa})};F.ye=function $xW(){return Gf(this.ZL,function(a){return a.ye()||!a.Qwa})};\r
18594 F.Xn=function $yW(){var a=Li(Di(this.ZL,function(c){return!c.ye()}),function(c){return c.Xn()});return a[u]>0?a[kd](ch):i};Qa(F,function $zW(){if(!this.Eb()){this.XIa=k;Ff(this.ZL,function(a){a[Rc]()})}});F.add=function $AW(a){if(this.Eb())e(Error(".174"));this.ZL[p](a);this.na.w(a,tr,this);this.na.w(a,fo,this)};ya(F,function $BW(a){switch(a[Zb]){case tr:this.XIa||this[r](tr);break;case fo:if(!this.XIa&&this.jm()){this.XIa=h;this[r](fo)}break}});\r
18595 F.L=function $CW(){rR.C.L[z](this);this.na.D();this.na=i;for(var a=0;a<this.ZL[u];a++)this.ZL[a].D();this.ZL=i};H(sR,qR);F=sR[w];F.ng=k;F.gy=k;F.Nv=h;F.wq=i;F.j_=function $DW(){return this.BZ=this.BZ||this.Dc.BZ};F.Z5=function $EW(){return this.Dc.HLa+this.j_()-this.Dc.BZ};F.Eb=D(Ej);F.jm=D("gy");F.ye=D(Afb);F.Xn=D("wq");Qa(F,function $JW(){if(this.ng)e(Error(".175"));this.Dc.qy()||this.Dc[tc]();this.Wma()});F.Wma=function $KW(){this.Nv=this.ng=h;this.gy=k;this.wq=i;this.Dc[mr]()};var Jrb="Error capturing resource";\r
18596 ya(F,function $LW(a){if(a[Zb]==Crb)this[r](tr);else{this.Nv=a[Zb]==Mh;if(!this.Nv){this.wq=a.sLa||I;if(!DD()){a=Jrb+(this.Dc.qy()?xl+this.Dc.BRb()+xh:I)+xj+a.sLa;ME.yI(Error(a),Sma)}if(this.TRa(this.wq))return}this.ng=k;this.gy=h;this.Nv&&this.eqa();this[r](fo)}});F.L=function $MW(){sR.C.L[z](this);this.na.D();this.Dc=this.na=i};_B_prog(83)}catch(e){_B_err(e)}\r
18597 \r
18598 try{var Mrb="$root/cob-matches/thread/",Nrb="$root/earlydata";function Orb(b){this.on=this.Um=b;this.xJ=i;b.mb.za(ur)?this.Ioa():ih(b.mb.Ya(),Mrb+b.Hc(),this.F0,k,this)}var Prb="$root/cob-matches/message/";function Qrb(b){this.IZa=b;this.xJ=i;b.mb.za(ur)?this.Ioa():ih(b.mb.Ya(),Prb+b.vn(),this.F0,k,this)}if(172>tnb)tnb=172;zx(Orb,fI);Orb[w].F0=function $RW(){this.nBa();this.Ioa()};Orb[w].Ioa=function $SW(){this.xJ=this.on.mb.za(ur).Zga().za(this.on.Hc());this.xJ.Iz()};Orb[w].nBa=function $TW(){nh(this.on.mb.Ya(),Mrb+this.on.Hc(),this.F0,k,this)};Orb[w].D=function $UW(){this.nBa();if(this.xJ){this.xJ.bB();this.xJ=i}};zx(Qrb,tSa);Qrb[w].F0=function $VW(){this.nBa();this.Ioa()};Qrb[w].Ioa=function $WW(){this.xJ=this.IZa.mb.za(ur).PP.za(this.IZa.vn());this.xJ.Iz()};Qrb[w].nBa=function $XW(){nh(this.IZa.mb.Ya(),Prb+this.IZa.vn(),this.F0,k,this)};Qrb[w].D=function $YW(){this.nBa();if(this.xJ){this.xJ.bB();this.xJ=i}};function Urb(b,a){tB[z](this,b,95,a);this.uj=h;this.nhc={};this.Q=new kn(this);this.sg=sH(b)}var Vrb="Waiting for task list to load.";function Wrb(b,a){b.Jra(Vrb,5E3);mh(a.Vi,Uma,G(b.C2a,b))}function Xrb(b,a){b.Q.w(a,pn,b.k0b);WVa(b.sg.Hp(sJ),vr).dUa(k)}function Yrb(b){this.o2a=b};H(Urb,tB);F=Urb[w];F.Ja=function $2W(a){Urb.C.Ja[z](this,a);this.C2a()};F.C2a=function $3W(){var a=kA(this.B(),UF);Zw(a,this.Crc,this)};var Zrb="tasks:default",asb="Your conversation has been added to the task list",bsb="Your conversations have been added to the task list";F.Crc=function $4W(a){var c=a.Dq();(a=c.Gl(Zrb))&&this.Q.hb(c,pn,this.k0b);if(a&&a.uta()){a.nF();c=this.RDa;a.Urc(c,this.nhc);this.Jra(c[u]==1?asb:bsb,6E4)}else a?Wrb(this,a):Xrb(this,c)};var csb="Opening Tasks...";\r
18599 F.k0b=function $5W(a){if(a.bya==vr){this.C2a();this.Jra(csb,3E3)}};F.Bdc=function $6W(a,c){this.nhc[c]=a};F.Jra=function $7W(a,c){a=new Zz(a,undefined,c);tH(this.B()).Ad(a)};F.L=function $8W(){Urb.C.L[z](this);this.Q.D()};Ax(Yrb,NB);Yrb[w].eca=function $9W(a,c){if(c.Lp||c.i_a[u]!=0)a[95]=h};Yrb[w].dca=function $$W(a){a[95]=h};Mx().Ug(170,function(b,a){a.ka(Wfa,Hj)});function psb(b){this.O=b}var qsb="lastActivity";function rsb(b,a){Kx[z](this,qsb,b);this.Kk().w(a,Fx(xr),this.G2c)}function ssb(b){this.Db=b;this.Aa=Dx(Cx(b));this.xf=fy(b)}psb[w].Fq=function $xX(){return this.O[8]};psb[w].Kdb=function $yX(){return this.O[10]};Ha(psb[w],function $zX(){return this.O[t]()});psb[w].kc=D(ae);H(rsb,Kx);rsb[w].UYb=0;rsb[w].G2c=function $BX(a){a=new psb(a[dq]);var c=a.Fq();if(!(c<=this.UYb)){this.tPc=h;this.mb.Qf();try{this.Fa(Pd,a.O[1]);this.Fa(xr,a.O[5]);this.Fa(YHa,a.O[7]);this.Fa(uw,a.O[9]);this.Fa(Hz,a.O[3]);this.Fa(KP,a.O[4]);this.Fa(yP,a.O[6]);this.Fa(yr,a.O[2]);this.Fa(IB,c);this.Fa(Kd,a.Kdb());this.UYb=c}finally{this.mb.Mf()}}};H(ssb,Iw);ssb[w].tb=function $CX(){var a=this.Aa,c=new rsb(a,this.xf.ud);a.ha(c)};Xw(O.S(),Kd).Lr(function(b){dD(b).qo(new ssb(b))});var usb="UeNMbe",vsb="ZCbBHb",wsb="</div><div class=",xsb="></div></div>";function ysb(b,a){var c=a||new U;c[R](fJ,usb,nUa,vsb,Uf,b.ke,wsb,VUa,xsb);if(!a)return c[t]()}function zsb(b){this.AP=b;this.lb=yy(b.B())};zx(zsb,NI);F=zsb[w];F.yyb=0;var Asb='Tip: Drag labels in and out of this menu or customize which labels show under <a href="',Bsb='#settings/labels">Settings</a>.';F.Ykb=function $DX(a,c){if(!(this.yyb>0)){this.Ecc=this.lb.Ep(R6a);if(this.Ecc!=0){var d=Asb+(nD(this.AP.B())+Bsb),f=this.AP.W()[Qb](T);Q(f,ysb({ke:d}));this.rna=f;d=this.AP.b(Rd);Qg(this.rna,d);this.Q=a;this.d_b=c;a.w(c,mo,this.Mic,k,this);a.w(c,no,this.w0b,k,this);c=this.rna[ic](kC)[0];Pw(a,c,aB,this.lh)}}};\r
18600 F.Mic=function $EX(){var a=new lF(this.AP.B());a.bh=h;a.Yc(R6a,this.Ecc-1);a[Mb]();this.Q.hb(this.d_b,mo,this.Mic,k,this)};F.lh=function $FX(a){JB(this.AP.B())[bq]({view:dJ,fk:LC});a[zb]();a[Ec]()};F.w0b=function $GX(){this.yyb++;if(this.rna&&this.yyb>=4){var a=this.rna[ic](kC)[0];this.Q.hb(this.d_b,no,this.w0b,k,this);Ow(this.Q,a,aB,this.lh);Sg(this.rna);this.rna=i}};function wR(b,a){return b.isCaptured=a}var xR="isValidRow",Csb="createWorkerFromUrl",yR="abortCapture",zR="isCaptured",Dsb="EXPIRED",Esb="Disable ",AR="stable",BR="uphill",Fsb="-b",Gsb="History",Hsb="PendingHistory";function Isb(b){li(b,Dsb,0,pi)}var Jsb="exp/197/html/en/help.html";function Ksb(){return Jsb}function Lsb(b){this.tkc=b}function Msb(b,a){tB[z](this,b,101,a);this.uj=h}function Nsb(b){this.o2a=b}function CR(b){if(b=jA(b,KF))return b.QGc();return i}function vE(b){CR(b).HCa()}var Osb="Offline Mail";\r
18601 function DR(){return Osb}var Psb="525.17";function Qsb(){return L&&vg(Tj)||Fh&&vg(HQa)||Jg&&vg(Psb)&&Qi&&No&&!Rsb()||rla()}var Ssb="10.6.0";function Rsb(){if(Qi&&No){var b=/Mac OS X ([0-9_]+);/[hb](ug());if(b&&b[u]==2)if(b=b[1]){b=b[Cc](mg)[kd](He);if(bg(b,Ssb)>=0)return h}}return k}function Tsb(){}function Usb(b){this.Jmd=b}function Vsb(b,a){this.JR=b;a!=i&&this.wc(a)}function Wsb(b,a){N[z](this,b);Oa(this,a[Lc]);this.Pm=this[Tq];this.O0b=a}\r
18602 function Xsb(){this.fFa={};var b=Le("google.gears.workerPool");this.JR=b?b:this.SFc();this.JR.onmessage=G(this.Sua,this)}function Ysb(b,a,c){N[z](this,b);this.eEd=a;Oa(this,c[Lc]);this.O0b=c}function Zsb(b,a){qR[z](this,a);this.eFa=String(b);this.jda=new Sh;this.jda.Pr(b.ul);this.jda.iB(b.Jk());Th(this.jda,b.UA);this.na=new kn(this)}function atb(b){this.kf=b}var btb="INSERT OR REPLACE INTO StoreVersionInfo (StoreName, Version) VALUES(?,?)";function ctb(b,a){b.kf[hd](btb,b[ec],a)}\r
18603 var dtb="CREATE TRIGGER ",etb=" ON ",ftb=" WHEN ",gtb=" BEGIN ",htb="; END";function ER(b,a,c,d){return dtb+d+c[ec]+J+a+etb+c.TZa+(c.trd?ftb+c.trd:I)+gtb+c.Bz[kd](Yma)+htb}var itb="IF NOT EXISTS ",jtb="CREATE TABLE ",ktb=" (\n",ltb=",\n  ",mtb="CREATE VIRTUAL TABLE ",ntb=" USING FTS2 (\n",otb="CREATE",ptb=" UNIQUE",qtb=" INDEX ",rtb="BEFORE INSERT",stb="AFTER INSERT",ttb="BEFORE UPDATE",utb="AFTER UPDATE",vtb="BEFORE DELETE",wtb="AFTER DELETE";\r
18604 function xtb(b,a,c){c=c?itb:I;switch(a[Zb]){case 1:return jtb+c+a[ec]+ktb+a.uq[kd](ltb)+xh;case 2:return mtb+c+a[ec]+ntb+a.uq[kd](ltb)+xh;case 3:return otb+(a.Tjb?ptb:I)+qtb+c+a[ec]+etb+a.TZa+ktb+a.uq[kd](ltb)+xh;case 4:return ER(b,rtb,a,c);case 5:return ER(b,stb,a,c);case 6:return ER(b,ttb,a,c);case 7:return ER(b,utb,a,c);case 8:return ER(b,vtb,a,c);case 9:return ER(b,wtb,a,c)}return I}var ytb="DROP TABLE IF EXISTS ",ztb="DROP INDEX IF EXISTS ",Atb="DROP TRIGGER IF EXISTS ";\r
18605 function Btb(b,a){switch(a[Zb]){case 1:case 2:return ytb+a[ec];case 3:return ztb+a[ec];case 4:case 5:case 6:case 7:case 8:case 9:return Atb+a[ec]}return I}var Ctb="SELECT 1 FROM SQLITE_MASTER WHERE TYPE=? AND NAME=?";function Dtb(b,a,c){return b.kf.Kr(Ctb,a,c)!=i}var Etb="beta.database";function FR(b,a){var c=Io();try{this.kf=c[tc](Etb,YQ)}catch(d){e(Error(".183`"+d[Tq]))}if(this.kf!=i){this.hbc=b=sla(b+Qd+a);this.kf[bb](b)}else e(Error(".184"))}function Ftb(b){N[z](this,b)}\r
18606 function Gtb(b){var a=[];if(b)for(var c=b.fieldCount();b[xR]();){for(var d=new Array(c),f=0;f<c;f++)d[f]=b[aq](f);a[p](d);b[Rk]()}return a}function Htb(b){var a=[];if(b)for(;b[xR]();){a[p](b[aq](0));b[Rk]()}return a}function Itb(b){return b&&b[xR]()?b[aq](0):i}function Jtb(b){if(b&&b[xR]()){for(var a={},c=b.fieldCount(),d=0;d<c;d++)a[b.fieldName(d)]=b[aq](d);return a}else return i}\r
18607 function Ktb(b,a,c,d){if(c[u]==0||d>=c[u])return b[hd](a);else{if(Ve(c[d]))return b[hd](a,c[d]);c=Array[w][lb][z](c,d);return b[hd](a,c)}}function Ltb(b,a,c,d,f){b=Ktb(b,a,d,f);try{return c(b)}finally{b&&b[Xk]()}}var Mtb="ROLLBACK",Ntb="COMMIT",Otb="beforerollback",Ptb="beforecommit",Qtb="rollback",Rtb="commit";function Stb(b,a){var c,d;c=a?Mtb:Ntb;d=a?Otb:Ptb;var f=b[r](new Ftb(d));if(f){b.kf[hd](c);b.xL=0;d=a?Qtb:Rtb;b[r](new Ftb(d))}return f}\r
18608 function GR(b){if(b.QBb){if(b.xL<=0)e(Error(".187"));if(b.xL==1){var a=Stb(b,b.pya);return!b.pya&&a}else b.xL--}return k}function HR(b,a){FR[z](this,b,a);this.Dc=new atb(this);this.na=new kn(this);this.na.w(this,Gaa,this.Rbd);this.na.w(this,Qtb,this.Wbd);this.na.w(this,Rtb,this.Tbd);this.pqa=[];this.wBa=[]}var Ttb="-u";function Utb(b,a){return new HR(b,a+Ttb)}function IR(b,a){this.yb=b;this.SF=a}function JR(b){IR[z](this,b,this)}\r
18609 function KR(b,a,c){b.yb.mn();try{b.yb[hd](btb,a,c);GR(b.yb)}catch(d){b.yb.xm(d);e(d)}}var Vtb="WebCache-";function Wtb(b,a,c,d,f,g,j){this.id=d;dp(this,f);wR(this,g);this.fF=b;a=sla(Vtb+d+Qd+a+Qd+c);this.Tr=new cg;this.NM=new cg;this.Dc=b.openStore(a);if(!this.Dc)this.Dc=b.createStore(a);for(b=0;b<j[u];b++){a=j[b];this.Tr.add(a);!this[zR]&&!this.Dc[zR](a)&&this.NM.add(a)}wR(this,this.NM.nd());this.T2=this.NM.Oa()}\r
18610 function Xtb(b,a,c,d,f){IR[z](this,d,f);this.fF=b;this.AR=a;this.nGb=c;this.zK=[];this.Fh=new uh}function Ytb(b){Ia(b.zK,0);b.YSa=0;b.ZSa=0;b.Cgb=k;b.VSa=0;for(var a=b.RE.Oa(),c=0;c<a[u];c++){var d=a[c];d[kr]();d[zR]||b.zK[p](d);b.YSa+=d.T2[u];b.ZSa+=d.Tr.Nb()}}var Ztb="SELECT GroupId, Version, Captured, UrlProtoStr FROM UrlGroups";function aub(b){b.RE=new Hf;b.yb.MEc(Ztb,b.nzc,b)}var bub="Ta";\r
18611 function cub(b){if(b.zK[u]){var a=b.zK[0];b=G(b.jbb,b);a.pIa=b;a.R3=a.T2[0];a.sN=a.Dc[Fb]([a.R3],G(a.jbb,a));a.eCd=k;a.hD=Dh(a.fMc,1E4,a)}else{b.yx=k;b.Fh[r](bub)}}function dub(b,a){qR[z](this,h);this.Hn=b;this.Dc=a;this.na=new kn(this);this.na.w(a.Ya(),zr,this);this.na.w(a.Ya(),bub,this)}var eub="=;NONE;",fub="lsm",gub="lslm",hub="lsrm";\r
18612 function LR(b,a,c,d,f,g,j,n,s,v){rR[z](this);this.kla=s;s=MR(g,j,Mj.Vf);var C=g+eub;g=g+ei+j;this.iF=new oR(c,s,a);this.jF=new oR(d,C,a);if(this.kla)this.hF=new oR(f,g,a);d=this.IBb=Utb(j,v);f=new JR(d);f.cA();this.eG=new Xtb(a,j,c,d,f);if(!this.iF.qy()){this.iF[tc]();this.iTc=this.iF.Cy()}if(!this.jF.qy()){this.jF[tc]();this.kTc=this.jF.Cy()}if(this.kla&&!this.hF.qy()){this.hF[tc]();this.jTc=this.hF.Cy()}this.eG.cA();this.iF.iCa(iub(fub,this.iF.Cy()||I,Gi));this.jF.iCa(iub(gub,this.jF.Cy()||I,Gi));\r
18613 if(this.kla)this.hF.iCa(iub(hub,this.hF.Cy()||I,Gi));for(a=0;a<n[u];a++){c=new Sh(n[a].eFa);L&&c.ul==xH&&c.Jk()[Db](Ux)!=-1||this.add(new Zsb(c,n[a].Qwa))}this.add(new sR(this.iF));this.add(new sR(this.jF));this.kla&&this.add(new sR(this.hF));this.add(new dub(b,this.eG))}function iub(b,a,c,d){return(new Sh(d)).ka(pd,b).ka(Zma,a).ka(Yfa,c)[t]()}function MR(b,a,c){if(!c[Kb](jub))return b+ei+a;return i}function kub(){this.Jsc=[];this.pE=[];Tla=this.K3;Wo=i}function lub(b){b=b.Yt();return!!b&&b.Lf}\r
18614 function mub(b){this.Xp=b}function NR(){this.Ana=++nub;this.uac=new cg}function oub(b,a){switch(a.Rc(pd)){case DE:case OD:return a.Bb().Ga()==nz}return k}function pub(b,a){b=/^0000.*/;var c=a.Rc(PD)||(a.RC?a.RC.J(PD):i);a=a.Rc(Ar)||(a.RC?a.RC.J(Ar):i);return!!c&&b[cb](c)||!!a&&b[cb](a)}\r
18615 function qub(b,a){var c=a.Rc(pd);if(oub(b,a))return h;a:{switch(a.Rc(pd)){case DE:case OD:b=a.Bb().Ga()==ul;break a}b=k}if(b)return k;a:switch(a.Rc(pd)){case DE:b=Uo(a.Bb());break a;default:b=k;break a}if(b)return k;switch(c){case bC:case OD:case Br:case MN:case DE:case TO:case ana:case zz:return h;case QN:a:{a=a.Rc(fG);if(!OR[a]){c=a[Db](mg);if(c==-1||!OR[a[nc](0,c+1)]){a=k;break a}}a=h}if(a)return h}return k}function rub(b,a){a=a.Rc(pd);b.uac[bd](a)||b.uac.add(a)}\r
18616 function sub(b,a){if(a.Rc(pd)==QN){b=a.Rc(fG);return b==EE||b==wO}return k}var tub,uub;_B_prog(84)}catch(e){_B_err(e)}\r
18617 \r
18618 try{Ax(Lsb,mCa);Lsb[w].Tka=function $HX(a){var c=CR(this.tkc.B());return!!c&&c.Tka(a)};H(Msb,tB);var vub="All conversations have been moved to Drafts.",wub="The conversation has been moved to Drafts.",xub=" conversations have been moved to Drafts.";Msb[w].yp=function $IX(){var a;a=this.Lp()?vub:this.Cr()?wub:this.Mg()[u]+xub;return sB(this,a,i,k)};Ax(Nsb,NB);Nsb[w].eca=function $JX(a,c){c=c.i_a;for(var d=0;d<c[u];d++)if(c[d].fQc()){a[101]=h;return}};Nsb[w].dca=function $KX(a,c){if(c.Ti[bd](HN))a[101]=h};SB(101,"Move to drafts",scb,Msb,function(b){return b==nz},function(){return Vo()});zD[w].Mod=k;Tsb[w].yYa=function $LX(){var a=uub;if(a&&a.Yt())return a.Yt().Lf;return k};Tsb[w].oi=function $MX(){var a=uub;if(a)return!a.vk();return k};gFa=new Tsb;Ax(Usb,UD);var yub="lsst",zub="lssecwin";Usb[w].LGa=function $NX(a){if(Vo()){a.set(yub,lub(PR)?1:0);a.set(zub,1)}};Usb[w].B2a=function $OX(a,c,d,f){if(Vo()){Pya(a,f);f.set(PD,c);d&&d[u]!=0&&f.set(QD,HFa(d));return h}else return k};var Aub={};F=HHa[w];F.ZRa=function $jx(){this.Q.w(this.ob,Hh,this.cVc,k,this)};F.q1b=Ge("cKa");F.Twb=Ge(bna);F.yeb=function $QX(){if(!this.mD){var a=this.yh||i;if(!a)return i;this.mD=a.yeb()}return this.mD};F.cVc=function $RX(){if(this.ob.ye())this.cKa=i;else this.lmb()};F.lmb=function $mx(){var a=this.yh||i;if((a=a&&a.Yt())&&this.cKa){a.Yvb(this.cKa);this.cKa=i;return h}return k};F.s1b=E(h);\r
18619 var Bub="TraceId",Cub="EndId",Dub="ParentId",Eub="Command",Fub="MessageId",Gub="OrigConversationId",Hub="ContactId",Iub="ChangeId",Jub="StartTime",Kub="TotalTime",Lub="TotalDbTime",Mub="Complete",Nub="AuxData",Oub="ConversationCount",Pub="MessageCount",Qub="ChangeCount",Rub="Value",Sub="---\n",Tub="ls-info";\r
18620 F.X0b=function $gx(a){if(this.yeb()){for(var c=[[Bub,Cub,Dub,Eub,Fub,Gub,Hub,Iub,cna,Jub,Kub,Lub,Mub,Nub],[Bub,Oub,Pub,Qub],[Bub,dna,Rub]],d=this.mD.OGc(50),f=new U,g=0;g<3;g++){var j=d[g];if(j[u]>0){f[R](c[g][kd](wj)+ch);for(var n=0;n<j[u];n++)f[R](j[n][kd](wj)+ch);f[R](Sub)}}a[Tub]=f[t]()}};F.tRb=function $ex(a){if(!Ye(a)&&a.Hrd){a=a.Hrd;if(a in Aub)return Aub[a]}return ti};NF[w].i1b=function $lA(a){if(!this.wd){var c=jA(this.B(),Od);if(c)this.wd=c.OO();if(!this.wd)return}CD()?this.wd.otc(a.yL,a.m3b,a.o2b,a.dQb,a.F2b):this.wd.BDa()};var Uub=Ki[1],QR=Ki[2],Vub=Ki[3],RR=Ki[4],Wub=Ki[5],Xub=Ki[6],Yub=Ki[9],Zub=Ki[10],avb=Ki[11],bvb=Ki[12],cvb=Ki[13],dvb=Ki[14],SR=Ki[15];H(Vsb,uh);F=Vsb[w];F.p_=function $SX(a){this[r](new Wsb(eg,a))&&Ve(a[Lc])&&a[Lc][u]==2&&mm(a[Lc][0])&&this[r](new Wsb(Cr,a))};F.Xa=i;F.wc=function $TX(a){if(this.Xa!=i)e(Error(".176"));this.Xa=a;this.JR.fFa[this.ea()]=this};nma(F,function $UX(a){this.JR[Xq](a,this)});F.ea=function $VX(){if(this.Xa==i)e(Error(".177"));return this.Xa};F.L=function $WX(){Vsb.C.L[z](this);delete this.JR.fFa[this.ea()];this.JR=i};H(Wsb,N);H(Xsb,uh);F=Xsb[w];F.JR=i;var evb="beta.workerpool";F.SFc=function $XX(){return Io()[tc](evb)};F.createWorkerFromUrl=function $YX(a){a=this.JR[Csb](a);a=new Vsb(this,a);return this.fFa[a.ea()]=a};nma(F,function $ZX(a,c){this.JR[Xq](a,c.ea())});var fvb="uknown_worker";F.Sua=function $_X(a,c,d){if(!this.Pc){a=this.fFa;a[c]||this[r](new Ysb(fvb,c,d));(c=a[c])&&c.p_(d)}};F.L=function $0X(){Xsb.C.L[z](this);this.JR=i;delete this.fFa};H(Ysb,N);H(Zsb,qR);F=Zsb[w];F.ng=k;F.gy=k;F.Nv=h;F.wq=i;F.j_=E(1);F.Z5=function $2X(){return Number(this.jm())};F.Eb=D(Ej);F.jm=D("gy");F.ye=D(Afb);F.Xn=D("wq");Qa(F,function $7X(){if(this.ng)e(Error(".175"));this.Wma()});var gvb="iscaptured";F.Wma=function $8X(){if(!this.KR){this.KR=(new Xsb)[Csb](this.eFa);this.na.w(this.KR,eg,this)}this.ng=h;this.gy=k;this.Nv=h;this.wq=i;this.KR[Xq](gvb)};var hvb=":443",ivb="iscaptured-no",jvb="capture",kvb="capture-fail-",lvb="iscaptured-yes",mvb="capture-ok",nvb=".179`";\r
18621 ya(F,function $9X(a){var c=a.O0b||{},d=a[Tq];a[zb]();a=c.origin;if(a!=this.jda)if(!(/^https\:/[cb](a)&&!/\:\d+$/[cb](a)&&a+hvb==this.jda))e(Error(".178`"+a+qw+this.jda));if(d==ivb)this.KR[Xq](jvb);else{a=Mf(d,kvb);if(d==lvb||d==mvb||a){if(this.wq=(this.Nv=!a)?i:d[nc](13)){ME.yI(Error(nvb+this.eFa+qw+this.wq),Sma);if(this.TRa(this.wq))return}this.ng=k;this.gy=h;this.Nv&&this.eqa();this[r](tr);this[r](fo)}}});\r
18622 F.L=function $$X(){Zsb.C.L[z](this);this.na.D();this.na=i;if(this.KR){this.KR.D();this.KR=i}};_B_prog(85)}catch(e){_B_err(e)}\r
18623 \r
18624 try{H(atb,Jf);F=atb[w];Ba(F,"Base");dp(F,1);F.GF=[];F.R2=B();F.HP=B();F.kta=B();F.dPa=B();var ovb="unknown exception",pvb="StoreVersionInfo",qvb="StoreName TEXT NOT NULL PRIMARY KEY",rvb="Version INTEGER NOT NULL";\r
18625 F.cA=function $eY(){var a=this.ANa();if(a){if(a!=this[Za]){this.kf.mn();try{this.R2(a);ctb(this,this[Za]);GR(this.kf)}catch(c){this.kf.xm(c);e(Error(".180`"+this[ec]+qw+a+qw+this[Za]+qw+(c[Tq]||ovb)))}}}else{this.kf.mn();try{this.Xra(this.GF);this.Oqa(this.GF);this.Oqa([{type:1,name:pvb,uq:[qvb,rvb]}],h);this.HP();ctb(this,this[Za]);GR(this.kf)}catch(d){this.kf.xm(d);e(Error(".181`"+this[ec]+qw+(d[Tq]||ovb)))}}this.kta();this.dPa()};\r
18626 F.removeStore=function $fY(){this.kf.mn();try{this.nWa();this.Xra(this.GF);GR(this.kf)}catch(a){this.kf.xm(a);e(Error(".182`"+this[ec]+qw+(a[Tq]||ovb)))}};va(F,D(YP));var svb="SELECT Version FROM StoreVersionInfo WHERE StoreName=?";F.ANa=function $hY(){try{return this.kf.Kr(svb,this[ec])||0}catch(a){return 0}};var tvb="DELETE FROM StoreVersionInfo WHERE StoreName=?";F.nWa=function $iY(){try{this.kf[hd](tvb,this[ec])}catch(a){}};\r
18627 F.Oqa=function $jY(a,c){this.kf.mn();try{for(var d=0;d<a[u];++d)this.kf[hd](xtb(this,a[d],c));GR(this.kf)}catch(f){this.kf.xm(f)}};F.Xra=function $kY(a){this.kf.mn();try{for(var c=a[u]-1;c>=0;--c)this.kf[hd](Btb(this,a[c]));GR(this.kf)}catch(d){this.kf.xm(d)}};F.ova=function $lY(a){return Dtb(this,Bo,a)};F.xha=function $mY(a){return Dtb(this,Dr,a)};F.L=function $nY(){atb.C.L[z](this);this.kf=i};H(FR,uh);H(Ftb,N);FR[w].QBb=h;FR[w].xL=0;FR[w].pya=k;FR[w].BAc="IMMEDIATE";var uvb={DEFERRED:0,IMMEDIATE:1,EXCLUSIVE:2};F=FR[w];F.uLb=uvb.DEFERRED;Va(F,function $oY(a){a=String(a);var c;try{if(arguments[u]==1)return this.kf[hd](a);c=arguments[u]==2&&Ve(arguments[1])?arguments[1]:qf(arguments,1);return this.kf[hd](a,c)}catch(d){if(c)a+=Jl+zh(c);e(Fba(d,a))}});F.KAa=function $pY(a){return Ltb(this,a,Gtb,arguments,1)};F.Zka=function $qY(a){return Ltb(this,a,Htb,arguments,1)};\r
18628 F.Kr=function $rY(a){return Ltb(this,a,Itb,arguments,1)};F.Xcd=function $sY(a){return Ltb(this,a,Jtb,arguments,1)};F.MEc=function $tY(a,c,d){var f=Ktb(this,a,arguments,3);try{for(var g=0,j=f.fieldCount(),n=[],s=0;s<j;s++)n[p](f.fieldName(s));for(var v;f[xR]();){v=[];for(s=0;s<j;s++)v[p](f[aq](s));if(!c[z](d,v,g,n))break;f[Rk]();g++}}finally{f[Xk]()}};var vvb="beforebegin",wvb="BEGIN ";\r
18629 F.mn=function $uY(){var a;a:{a=this.BAc;if(this.QBb)if(this.xL==0){this.pya=k;this[r](new Ftb(vvb));this.kf[hd](wvb+a);this.uLb=uvb[a];this.xL=1;try{this[r](new Ftb(Gaa))}catch(c){this.kf[hd](Mtb);this.xL=0;e(c)}a=h;break a}else if(this.pya)e(Error(".185"));else if(uvb[a]>this.uLb)e(Error(".186"));else this.xL++;a=k}return a};F.xm=function $vY(a){var c=h;if(this.QBb){if(this.xL<=0)e(Error(".187"));if(this.xL==1)c=Stb(this,h);else{this.xL--;this.pya=h;if(a)e(a);return k}}return c};\r
18630 F.open=function $wY(){if(this.kf&&this.hbc)this.kf[bb](this.hbc);else e(Error(".188"))};Fp(F,function $xY(){this.kf&&this.kf[Xk]()});F.L=function $yY(){FR.C.L[z](this);this.kf=i};wa(F,function $zY(){this.kf[Pb]()});H(HR,FR);var TR={Ux:1,dAd:2,C1a:3,Gsd:4,Xrd:5,Hsd:6,Yrd:7,Fsd:8,Wrd:9};F=HR[w];F.Wbd=function $AY(){if(this.mD&&this.wk){this.mD.Qed(this.wk);this.wk=i}for(var a=0;a<this.wBa[u];a++)this.wBa[a]();Ia(this.wBa,0);Ia(this.pqa,0)};F.Tbd=function $BY(){for(var a=0;a<this.pqa[u];a++)this.pqa[a]();Ia(this.wBa,0);Ia(this.pqa,0)};F.ova=function $CY(a){return this.Dc.ova(a)};F.xha=function $DY(a){return this.Dc.xha(a)};F.Oqa=function $EY(a,c){this.Dc.Oqa(a,c)};F.Xra=function $FY(a){this.Dc.Xra(a)};F.wk=i;\r
18631 F.Rbd=function $GY(){this.mD&&this.mD.Add()};F.xm=function $HY(a){this.wk=a||i;return HR.C.xm[z](this,a)};F.L=function $IY(){HR.C.L[z](this);Ia(this.wBa,0);Ia(this.pqa,0);this.na.D();this.na=i;this.Dc.D();this.mD=this.Dc=i};H(IR,Jf);F=IR[w];Ba(F,"Base");dp(F,Hj);F.GF=[];F.ycb=D(FZa);F.R2=B();F.HP=B();F.kta=B();F.dPa=B();F.cA=function $OY(){var a=this.SF.ANa(this[ec]);if(a){if(bg(a,this[Za])!=0){this.yb.mn();try{this.R2(a);GR(this.yb)}catch(c){this.yb.xm(c)}}}else{this.yb.mn();try{this.yb.Oqa(this.GF);this.HP();var d=this.SF.ycb();d.mn();try{KR(this.SF,this[ec],this[Za]);GR(d)}catch(f){d.xm(f);e(f)}GR(this.yb)}catch(g){this.yb.xm();e(Error(".189`"+this[ec]+qw+g[Tq]))}}this.kta();this.dPa()};\r
18632 F.removeStore=function $PY(){this.yb.mn();try{this.SF.nWa(this[ec]);this.yb.Xra(this.GF);GR(this.yb)}catch(a){this.yb.xm(a);e(Error(".190`"+this[ec]))}};F.L=function $QY(){IR.C.L[z](this);this.SF=this.yb=i};H(JR,IR);F=JR[w];Ba(F,"StateStore");var xvb="2.2";dp(F,xvb);F.GF=[{type:TR.Ux,name:"StateInfo",uq:["ClientId INTEGER NOT NULL","MappedIdCounter INTEGER NOT NULL","FirstLoad INTEGER DEFAULT 1","ServerMode TEXT"]},{type:TR.Ux,name:pvb,uq:[qvb,"Version TEXT NOT NULL"]}];var yvb="2.1",zvb="ALTER TABLE StateInfo ADD COLUMN FirstLoad INTEGER DEFAULT 1",Avb="ALTER TABLE StateInfo ADD COLUMN ServerMode TEXT",Bvb="UPDATE StateInfo SET ServerMode=?",Cvb="SELECT ServerMode FROM StateInfo LIMIT 1";\r
18633 F.R2=function $RY(a){if(bg(a,yvb)<0){this.yb.mn();try{this.yb[hd](zvb);KR(this,this[ec],yvb);GR(this.yb)}catch(c){this.yb.xm(c);e(Error(".191`"+this[ec]))}}if(bg(a,xvb)<0){this.yb.mn();try{this.yb[hd](Avb);this.yb[hd](Bvb,GA);KR(this,this[ec],xvb);GR(this.yb)}catch(d){try{this.yb.Kr(Cvb);this.yb[hd](Bvb,GA);KR(this,this[ec],xvb);GR(this.yb)}catch(f){this.yb.xm(d);e(Error(".192`"+this[ec]))}}}};var Dvb="INSERT INTO StateInfo (ClientId,MappedIdCounter,FirstLoad,ServerMode) VALUES(0,0,1,?)",Evb="INSERT INTO StoreVersionInfo (StoreName, Version) VALUES(?,?)";\r
18634 F.HP=function $SY(){this.yb[hd](Dvb,GA);this.yb[hd](Evb,this[ec],this[Za])};var Fvb="SELECT FirstLoad FROM StateInfo";F.EXb=function $TY(){return!!this.yb.Kr(Fvb)};F.ANa=function $UY(a){try{return this.yb.Kr(svb,a)||i}catch(c){return i}};F.nWa=function $VY(a){try{this.yb[hd](tvb,a)}catch(c){}};var Gvb="SELECT ClientId FROM StateInfo";F.vO=function $WY(){return this.yb.Kr(Gvb)};_B_prog(86)}catch(e){_B_err(e)}\r
18635 \r
18636 try{H(Wtb,Jf);F=Wtb[w];F.sN=-1;F.L=function $XY(){Wtb.C.L[z](this);this.ob&&nh(this.ob,Hh,this.cva,k,this);this.sN!=-1&&this.Dc[yR](this.sN)};Qp(F,function $YY(a,c){Ia(this.T2,0);for(var d=this.Tr.vc(),f=0;f<c[u];f++){var g=c[f];if(this.Tr[bd](g))d[Pb](g);else{this.Tr.add(g);this.NM.add(g)}}c=d.Oa();for(f=0;f<c[u];f++){g=c[f];this.Dc[Pb](g);this.Tr[Pb](g);this.NM[Pb](g);this.R3==g&&this.Dc[yR](this.sN)}dp(this,a);wR(this,this.NM.Nb()==0);this.T2=this.NM.Oa()});Pp(F,function $ZY(){this.T2=this.NM.Oa()});\r
18637 F.jbb=function $_Y(a,c){Eh(this.hD);this.hD=0;this.sN=-1;if(c){this.R3=i;this.T2[jd](0,1);this.NM[Pb](a);wR(this,this.NM.Nb()==0);this.pIa&&this.pIa(this,h,h)}else{if(!this.ob){this.ob=new Gh;ih(this.ob,Hh,this.cva,k,this)}this.ob[Mb](this.R3,ena)}};F.fMc=function $0Y(){this.Dc[yR](this.sN);this.sN=-1;this.Po(h)};F.Po=function $1Y(a){this.R3=i;a||this.T2[jd](0,1);this.pIa&&this.pIa(this,k,!a)};\r
18638 F.cva=function $2Y(a){a=a[y];if(a.ye())this.Po(k);else{var c=a.hf();if(a.eo!=Dj)this.Po(c!=404&&(c<=300||c>=400))}};wa(F,function $3Y(){this[yR]();this.fF.removeStore(this.Dc[ec])});F.abortCapture=function $4Y(){if(this.sN!=-1){this.Dc[yR](this.sN);this.sN=-1}else this.R3&&this.ob[wc]();this.R3=i};H(Xtb,IR);F=Xtb[w];Ba(F,"UrlStore");dp(F,YQ);F.ZSa=0;F.YSa=0;F.VSa=0;F.yx=k;F.Cgb=k;F.rLa=k;F.L=function $5Y(){if(this.RE){for(var a=this.RE.Oa(),c=0;c<a[u];c++)a[c].D();this.RE=i}this.Fh.D();Xtb.C.L[z](this)};F.GF=[{type:TR.Ux,name:"UrlGroups",uq:["GroupId TEXT PRIMARY KEY NOT NULL","Version  TEXT NOT NULL","Captured INTEGER DEFAULT 0 CHECK (Captured IN (0, 1))","UrlProtoStr TEXT NOT NULL"]}];F.Ya=D(lO);F.kta=function $7Y(){aub(this);Ytb(this)};var Hvb="UPDATE UrlGroups SET Captured=? WHERE GroupId=?";\r
18639 F.nzc=function $8Y(a){var c=a[0],d=a[1],f=a[2];a=eval(a[3]);d=new Wtb(this.fF,this.AR,this.nGb,c,d,f,a);f!=d[zR]&&this.yb[hd](Hvb,Number(d[zR]),c);d[zR]||this.zK[p](d);this.RE.set(c,d);return h};Qa(F,function $9Y(){if(!this.yx){Ytb(this);this.Cgb=this.yx=h;cub(this)}});Ga(F,function $$Y(){this.yx&&this.zK[u]&&this.zK[0][yR]();this.yx=k});var Ivb="DELETE FROM UrlGroups";wa(F,function $aZ(){this[qc]();aub(this);for(var a=this.RE.Oa(),c=0;c<a[u];c++){var d=a[c];d[Pb]();d.D()}this.RE[bc]();this.yb[hd](Ivb)});\r
18640 var Jvb="UPDATE UrlGroups SET Captured=1 WHERE GroupId=?";F.jbb=function $bZ(a,c,d){if(d){this.YSa--;c||this.VSa++;if(this.zK[0].T2[u]==0){a[zR]&&this.yb[hd](Jvb,a.id);this.zK[jd](0,1)}this.Fh[r](zr);cub(this)}else{this.yx=k;this.rLa=h;this.Fh[r](bub)}};F.j_=D("ZSa");F.Z5=function $dZ(){return this.ZSa-this.YSa};F.jm=function $eZ(){return this.Cgb&&!this.yx};F.Eb=D(Meb);F.ye=function $gZ(){return this.VSa==0&&!this.rLa};\r
18641 var Kvb="Could not successfully contact the server",Lvb="Could not fetch the following urls:",Mvb="\n    ";F.Xn=function $hZ(){if(this.rLa)return Kvb;else if(this.VSa>0){for(var a=[Lvb],c=this.RE.Oa(),d=0;d<c[u];d++)of(a,c[d].NM.Oa());return a[kd](Mvb)}else return i};H(dub,qR);F=dub[w];F.tla=i;F.ld=i;F.yac=k;F.yWa=k;F.ng=k;F.j_=function $iZ(){return this.Dc.j_()};F.Z5=function $jZ(){return this.Dc.Z5()};F.jm=function $kZ(){return this.yWa||this.Dc.jm()};F.ye=function $lZ(){return!this.yWa&&!this.Dc.rLa};F.Xn=function $mZ(){return this.tla||this.Dc.Xn()};Qa(F,function $nZ(){this.ng=h;this.yWa=k;this.Wma()});var Nvb="startInternal after complete success";\r
18642 F.Wma=function $oZ(){if(!(this.ld||this.Dc.Eb()))if(!this.yac||this.tla)this.Ex();else!this.Dc.jm()||!this.Dc.ye()?this.Dc[Rc]():ME.yI(Fba(Nvb))};F.Eb=D(Ej);var Ovb="Sending UrlStore request";F.Ex=function $qZ(){var a=new zD(this.Hn,this);a.bD(k);a.wl(h);a.Ne(mB);a.Ua(pd,fna);a.Ua(ZB,mi(MO,I));for(var c=[],d=[],f=this.Dc.RE.Oa(),g=0;g<f[u];g++){var j=f[g],n=[];n[1]=j.id;n[2]=j[Za];n[3]=[];c[p](n)}d[1]=c;a.Be(RE,zh(d));a.Se(Ovb);this.ld=a;this.tla=i;a[Mb]()};\r
18643 var Pvb="UPDATE UrlGroups SET Version=?, Captured=?, UrlProtoStr=? WHERE GroupId=?",Qvb="INSERT INTO UrlGroups (GroupId, Version, Captured, UrlProtoStr) VALUES (?, ?, ?, ?)",Rvb="DELETE FROM UrlGroups WHERE GroupId=?";\r
18644 F.rk=function $rZ(a,c,d){if(c==fna){a=this.Dc;d=d[1];a.yx&&a.zK[0][yR]();var f=d[1],g=a.RE.vc();if(f&&f[u]!=0)for(d=0;d<f[u];d++){var j=f[d];c=j[1];var n=j[3],s=j[2];if(j=a.RE.J(c)){g[Pb](c);if(s!=j[Za]){j[mr](s,n);a.yb[hd](Pvb,j[Za],Number(j[zR]),zh(n),c)}}else{j=new Wtb(a.fF,a.AR,a.nGb,c,s,n[u]==0,n);a.RE.set(c,j);a.yb[hd](Qvb,c,j[Za],Number(j[zR]),zh(n))}j[zR]||a.zK[p](j)}f=g.Oa();for(d=0;d<f[u];d++){j=f[d];c=j.id;j[Pb]();j.D();a.RE[Pb](c);a.yb[hd](Rvb,c)}Ytb(a);a.yx&&cub(a);this.Dc[Rc]()}};\r
18645 var Svb="UrlStore request error: ";F.Z6=function $sZ(a){this.ld=i;if(a.oha()){this.tla=Svb+a.zga();ME.yI(Error(this.tla));if(!this.TRa(this.tla)){this.yWa=h;this.gy()}}};var Tvb="Failed to capture URLs";ya(F,function $tZ(a){if(a[Zb]==zr)this[r](tr);else if(a[Zb]==bub){if(!this.Dc.ye()){a=this.Dc.Xn()||I;ME.yI(Error(a),Tvb);if(this.TRa(a))return}this.gy()}});F.gy=function $uZ(){this.yac=this.ng=k;this.eqa();this[r](fo)};F.L=function $vZ(){dub.C.L[z](this);this.na.D();this.Dc=this.na=i};H(LR,rR);LR[w].iTc=i;LR[w].kTc=i;LR[w].jTc=i;var jub=/\/b\/[^/]+/;LR[w].L=function $wZ(){LR.C.L[z](this);if(this.iF){this.iF.D();this.iF=i}if(this.jF){this.jF.D();this.jF=i}if(this.hF){this.hF.D();this.hF=i}if(this.eG){this.eG.D();this.eG=i}if(this.IBb){this.IBb.D();this.IBb=i}};LR[w].Ac=function $xZ(a){this.iF.qy()||this.iF[tc]();this.iF.Ac(a);if(this.kla){this.hF.qy()||this.hF[tc]();this.hF.Ac(a)}if(a){this.jF.qy()||this.jF[tc]();this.jF.Ac(a)}};\r
18646 wa(LR[w],function $yZ(){this.iF[Pb]();this.jF[Pb]();this.kla&&this.hF[Pb]();this.eG[Pb]()});H(kub,Jf);F=kub[w];F.K3=Mj[t]()[Kb](/[^\?#]+/)[0];F.kWc=i;F.rFa=QR;F.LX=Hi;F.VDb=SR;F.woa=RR;F.Db=i;F.U4=-1;var Uvb="lsDur",Vvb="lsIn",Wvb="lsDurEx";\r
18647 F.wc=function $zZ(a,c){this.Db=a;a=new Sh(Mj);var d=a.td();if(d){d=new Wh(Rf(d));var f=d.J(Uvb),g;if(f&&!ia(g=Number(f))){this.U4=g;this.Jsc=d.Oa(Vvb);this.pE=d.Oa(Wvb)}}g=[];if(Xub){d=Xub[Cc](Er);for(var j=0;j<d[u];j++)if(!(d[j][u]<1)){f=d[j][Cc](wj,2);f[u]==2&&g[p]([f[0],f[1]])}}this.kWc=g;g=O.S();g.bk.lu.Lr(this.lJc,this);if(Vo()){g.uHa=k;this[pb](c)}else{a.td()==gna&&Mx().oz(6,G(PR.Syc,this));c()}};F.Syc=function $AZ(){var a=RC(this.Db);a=kA(a.iL.B(),KF);Zw(a,function(c){c.gLa()})};\r
18648 na(F,function $BZ(a){Vw(O.S(),XL,G(this.TNc,this,a))});F.lJc=function $CZ(){O.S().bk.lu.HC.jC().iVc()};F.TNc=function $DZ(a){O.S().bk.lu.HC.jC().wc(a)};F.Yt=function $EZ(){var a=jA(this.Db,Od);return a&&a.Yt()||i};var PR=new kub;hfb[p](G(PR.wc,PR));_B_prog(87)}catch(e){_B_err(e)}\r
18649 \r
18650 try{zx(mub,PLa);F=mub[w];F.E_b=10;F.Y8a=k;F.Oxa=function $FZ(){var a=this.NP();if(a=a&&a.Yt())this.Xp.Ggb=2E4;return a};F.NP=function $GZ(){if(!this.yh){var a=PR.Db;this.yh=a&&jA(a,Od)}return this.yh};F.ojb=function $HZ(){if(!Vo())return k;var a=this.NP()?this.yh.B0b():h,c=this.Oxa(),d=this.fDa&&this.fDa.Rwa();return a&&!c&&this.E_b-- >0||!!d};var UR="connected";F.vqb=function $IZ(){if(this.Dxa!=this.Xp.YR){this.NP()&&this.yh.bCa(UR);return h}};\r
18651 F.bQ=function $JZ(a){if(!Vo())return k;if(a.hm()==100&&this.Xp.qG!=11)return k;if(this.Xp.YR==this.Dxa)return k;if(!qub(this.Dxa,this.Xp.ld))return k;this.Y8a=h;this.NP()&&this.yh.bCa(Fr);this.Y8a=k;if((a=this.Oxa())&&a.Lf){lIa(this.Xp,2,h);this.Xp.KS=i;this.Xp.EG(Seb);return h}if(--this.E_b>0){lIa(this.Xp,mub.Sxd,h);this.Xp.KS=i;this.Xp.EG(Seb);return h}return k};F.D=function $KZ(){if(this.qlb){nh(this.qlb,SK,this.Pgc,k,this);this.qlb=i}};\r
18652 F.iX=function $LZ(){this.fDa=new fIa(this.w7c,this);var a=new Sh(XE);bi(a);this.fDa.sYa(a);this.fDa[xc](4E3);this.fDa[Rc]();return h};F.ncc=function $MZ(){this.NP().Hid(this.lWc)};F.w7c=function $NZ(a){this.lWc=a;this.NP()?this.ncc():Mx().oz(100,G(this.ncc,this))};F.Eoa=function $OZ(a){ih(a,SK,this.Pgc,k,this);this.qlb=a};F.Pgc=function $PZ(){this.NP()&&!this.yh.vk()&&this.Xp.xc()==ZE&&this.Xp.YR!=this.Dxa&&!this.Y8a&&this.Xp[wc](this.Xp.ld,11)};F.e2a=function $QZ(){return this.Xp.YR==this.Dxa};\r
18653 F.J5a=function $RZ(){if(this.Oxa()){if(this.Xp.ld.Ayb)return k;this.Xp.i3(this.Xp.ld,1);return h}return k};F.dBa=function $SZ(a){mIa(this.Xp,a);this.Dxa=a};F.bfb=function $TZ(a,c){if(Vo()&&(a==vL||a==oy)){this.Xp.b1(this.Xp.ld,[c]);return h}return k};nG("oc_d");nG("oc_h");var Xvb=nG("oc_ea"),Yvb=nG("oc_es"),Zvb=nG("oc_sn"),awb=nG("oc_ln"),bwb=nG("oc_cn"),cwb=nG("oc_os"),dwb=nG("oc_ps"),ewb=nG("oc_rs"),fwb=nG("oc_do"),gwb=nG("oc_rn");H(NR,YF);NR[w].bF=k;var nub=0;NR[w].Ana=0;var hwb="response";NR[w].D=function $UZ(){NR.C.D[z](this);if(this.Xw){nh(this.Xw,hwb+this.Ana,this.M0,k,this);nh(this.Xw,Kh+this.Ana,this.J0,k,this);this.Xw=i}};NR[w].NP=function $VZ(){if(!this.yh){var a=gQ;this.yh=a&&jA(a,Od)}return this.yh};NR[w].Oxa=function $WZ(){if(!this.Xw){var a=this.NP();if(this.Xw=a&&a.Yt()){ih(this.Xw,hwb+this.Ana,this.M0,k,this);ih(this.Xw,Kh+this.Ana,this.J0,k,this)}}return this.Xw};var OR={};OR.rd=h;OR.ur=h;OR.arl=h;OR.st=h;\r
18654 OR.xst=h;OR.sp=h;OR.tr=h;OR.dm=h;OR.dr=h;OR.dd=h;OR.dl=h;OR.dl=h;OR.dl=h;OR.us=h;OR.rp=k;OR.np=k;OR.ac_=h;OR.rc_=h;OR.ib=h;OR.mt=h;OR.ig=h;OR.sm=h;OR.sd=h;OR.cf=k;OR.ii=k;OR.prefs=h;OR.ivd=k;OR.astc=k;OR.urt=h;OR.rap=k;OR.mcf_=k;OR.dcf_=k;OR.cce=k;OR.cma_=k;OR.dma_=k;OR.dt=h;OR.rtr=h;OR.aser=k;OR.her=k;OR.ere=k;OR.cc_=h;OR.dc_=h;OR.nc_=h;OR.df=k;OR.rf=k;OR.crte=k;OR.ae_=k;OR.de_=k;OR.co_=k;OR.cffm=k;OR.ch_=h;OR.fl=h;OR.mtd=h;OR.ms=h;OR.fs=h;OR.cs=h;F=NR[w];var iwb="lss",jwb="aup";\r
18655 F.wma=function $XZ(a){if(!Vo())return 0;var c=this.Oxa(),d=Rz(gQ);if(c&&(oub(this,a)||a.Rc(pd)==QN&&a.Rc(fG)==JO||a.Rc(pd)==QN&&a.Rc(fG)==AO&&a.Rc(hna)==HN||pub(this,a)))return 1;if(c&&Jz(d,850)&&(sub(this,a)||a.Rc(pd)==QN&&a.Rc(fG)==rO||a.Rc(pd)==QN&&a.Rc(fG)==OL))return 1;if(!c||!c.Lf)return 0;if(a.Rc(pd)==iwb||a.Rc(pd)==jwb||a.Rc(Amb)==Hj&&a.Rc(pd)==OD)return 0;c=this.NP();if(qub(this,a)||!a.Mod&&!c.vk())return 0.9;rub(this,a);return 0};\r
18656 F.Po=function $YZ(a,c){a=new nB(this.P5(),a,c);c=this.H();c.bQ(a);c.Uba();this.bF=k;this.FRc=h};F.NEc=function $ZZ(){this.Po(13,k)};F.FAb=function $_Z(a){this.ld=a;if(qub(this,a)){this.H().uFb();var c=mi(lG,void 0);c&&this.Xw.Ghd(c);(c=Uj&&mi(Uj,void 0))&&this.Xw.Ohd(c);this.Xw.Ola(a,this.Ana);this.bF=h;this.FRc=k}else{rub(this,a);Dh(this.NEc,1,this)}};F.M0=function $0Z(a){var c=this.H();c.cfb(a[dq]);Isb(lG);Uj&&Isb(Uj);c.WH();c.Uba();this.bF=k};F.J0=function $1Z(a){this.Po(14,!!a[dq][0])};La(F,function $2Z(){e(Error(".0"))});AMa[w].Y0b=function $pC(a){this.LSc=new NR;a.dBa(this.LSc)};YI[w].BFb=function $rK(a){Vo()&&cxa(a,HN,AL)};YI[w].AFb=function $sK(a){Vo()&&a[p](HN)};YI[w].CFb=function $qK(a){if(Vo()){var c=jA(this.B(),Od);c=c&&c.OO();for(var d,f=0;f<a[u];f++)switch(a[f][0]){case HN:c&&c.sdc(a[f]);return;case CL:d=f;break}var g;if(c)g=c.y7b;if(!g||g[u]==0){if(!tub){g=nf(iTa);g[0]=HN;tub=g}g=tub}km(a,g,d)}};qJ[w].jmb=function $YL(a){return a+ina};var uwb="New messages will be forwarded as they arrive.";function vwb(b){this.O=b;this.O[1]=this.O[1]||[];this.u8=[];for(b=0;b<this.O[1][u];b++)this.u8[b]=new VR(this.O[1][b])}function wwb(b){this.O=b}function VR(b){this.O=b;this.O[2]=this.O[2]||[];this.O[3]=this.O[3]||[];this.Cac=[];for(b=0;b<this.O[3][u];b++)this.Cac[b]=new wwb(this.O[3][b])}\r
18657 function WR(b){if(b){this.Rj=b.O[0];this.Fd=b.EQb();var a=b.O[2];this.yw=[];for(var c=0;c<a[u];c++)this.yw[a[c]]=h;a=b.Cac;this.q1=[];for(c=0;c<a[u];c++)this.q1[a[c].Ga()]=a[c].Ca();this.Me=b.Dd()}}var xwb="migData";function ywb(b,a){Kx[z](this,xwb,b);this.Kk().w(a,Gx(Gr),this.A3c)}function zwb(b){this.Z=b}Ha(vwb[w],function $b_(){return this.O[t]()});vwb[w].kc=D(ae);wwb[w].Ga=function $d_(){return this.O[0]};wwb[w].Ca=function $e_(){return this.O[1]};Ha(wwb[w],function $f_(){return this.O[t]()});\r
18658 wwb[w].kc=D(ae);VR[w].EQb=function $h_(){return this.O[1]};VR[w].Dd=function $i_(){return this.O[4]};Ha(VR[w],function $j_(){return this.O[t]()});VR[w].kc=D(ae);F=WR[w];F.Vc=D("Rj");F.fCa=Ge("Rj");F.hf=D(Hr);F.hasFeature=function $o_(a){return!!this.yw[a]};F.Dd=D(AM);H(ywb,Kx);ywb[w].A3c=function $q_(a){var c=[];a=(new vwb(a[dq])).u8;for(var d=0;d<a[u];d++){var f=new WR(a[d]);c[p](f)}this.Fa(Gr,c)};zx(zwb,Gz);zwb[w].mib=function $r_(a,c){c=new ywb(a,c);a.ha(c)};function Iwb(b){this.Db=b}H(Iwb,Iw);var Jwb="OMNIBOX_LABEL_NAV_SHORTCUT_TASK";Iwb[w].tb=function $A_(){OF.Gi(jna,Jwb,kna);hlb.bq[p](Jwb)};Xw(O.S(),Kd).Lr(function(b){dD(b).qo(new Iwb(b))});function lxb(b){mF[z](this,b);this.Q=new kn(this);this.Hh=new hC(3E5,this.Db.J(XC));this.Q.w(this.Hh,zi,this.S8);this.Q.w(this.Hh,yi,this.R8)}var mxb=":29";function nxb(b){if(b.ab){cA(b.ab);b.ab=0}if(b.dX.x4!=b.pQ&&!CD()){bJa(b);b[r](bM)}b.ab=bA(mxb,b.ix,3E5,b)}H(lxb,mF);Nx(Mx(),48,function(b){return new lxb(b)},10);F=lxb[w];F.ab=0;F.S8=function $U_(){nxb(this)};F.R8=function $V_(){cA(this.ab);this.ab=0};F.ix=function $W_(){nxb(this)};\r
18659 F.D=function $X_(){if(this.Hh){this.Hh.D();this.Hh=undefined}if(this.ab){cA(this.ab);this.ab=0}lxb.C.D[z](this)};function Txb(b){this.na=void 0;this.cAb=new cg;this.ZWa=new Yo;this.gEa=[];this.w_a=[];this.w(fy(b).ud,Fx(Feb),this.n8c)}function Uxb(b){this.hsc=b}function Vxb(b,a){var c=b.bAb.gEa[u],d=l.min(c,5);if(c>0){c=qf(b.bAb.gEa,0,d);b=qf(b.bAb.w_a,0,d);d={};d.tart=c[kd](wj);d.tars=b[kd](wj);if(a instanceof Sh)for(var f in d)a.ka(f,d[f]);else a.gYa(d)}}function Wxb(b){this.Mr=b;this.xl=tE(b.B())}H(Txb,kn);\r
18660 Txb[w].n8c=function $40(a){a=a[dq];for(var c=1;c<a[u];c++){var d=a[c][0],f=a[c][1];if(!this.cAb[bd](d)){this.cAb.add(d);Vla(this.ZWa,f,d);this.ZWa.Nb()>20&&this.cAb[Pb](this.ZWa[Pb]())}}this.gEa=[];this.w_a=[];for(a=this.ZWa.vc();a.Nb()>0;){this.gEa[p](a.hQ());this.w_a[p](a.MA[0]&&a.MA[0].Dg());a[Pb]()}this.gEa[cq]();this.w_a[cq]()};_B_prog(88)}catch(e){_B_err(e)}\r
18661 \r
18662 try{zx(Uxb,CE);Uxb[w].tb=function $50(a){this.bAb=new Txb(a)};Uxb[w].e4a=function $60(a){a.ER==OD&&a.Am&&Vxb(this,a.uri)};zx(Wxb,dSa);Wxb[w].p3=function $70(a){if(!this.Mr.wf){var c=this.xl.tn(Uxb);Vxb(c,a)}};function nyb(b){var a=Dx(Cx(b));Kx[z](this,zna,a);b=fy(b).ud;this.Kk().w(b,Fx(DE),this.L_c)}function oyb(b){this.Db=b;this.Aa=Dx(Cx(b))}cM.sx_tl=fO;cM.bx_te=k;cM.bx_ta=h;H(nyb,Kx);nyb[w].L_c=function $b1(a){this.Fa(Hz,qf(a[dq],1))};nyb[w].tMa=function $c1(){return this.Ca(Hz)||"ar,bn,gu,hi,kn,ml,mr,ne,pa,ta,te,ur,fa"[Cc](wj)};H(oyb,Iw);oyb[w].tb=function $d1(){this.Aa.ha(new nyb(this.Db))};Uw(O.S(),function(b){dD(b).qo(new oyb(b))});function fS(b,a){this.yH=b;this.Fua=a}var pyb="Chat contacts",qyb="Family",ryb="Coworkers";function syb(b){Kx[z](this,"updates",b);this.Fa(Ah,new fS(Ah,Ana));this.Fa(Pj,new fS(Pj,pyb));this.Fa(Pd,new fS(Pd,Wma));this.Fa(Rd,new fS(Rd,qyb));this.Fa(kD,new fS(kD,ryb));this.IW(Rr,0);this.IW(Sr,0)}function tyb(b,a){for(var c in uyb)jf(a,uyb[c])}var vyb="act_oid";function gS(b){Gy[z](this,"updates_search",b);this.bTa=this.Rc(vyb)||I}function hS(b,a){this.Y=b;this.N0a=a}\r
18663 function wyb(b,a){b=a[Qb](PJ);fk(b,0);return b}function xyb(b,a){var c=om(a),d=wyb(b,Cg(c));function f(){Dh(function(){L&&c[Lc][Ek]();c[Lc][Bb](d,c[Lc][cc][0]);d[Ek]()},0)}b.bSa=new xm(b.Y.cb());ih(b.bSa,cj,f);f()}function yyb(b){var a;a=gm(b.Y);var c=b.Y.UO();a=new zyb(a.x,a.y,c[ib],c[id]);Km(b.LJ,a[Ck],a.top);Rm(b.LJ,a[ib],a[id])}function Ayb(b){var a=b.Y.cb()[Lc][A];b.urb=h;b.k3b=zw(a,td);Dm(a,td,yd)}function iS(b,a,c){c&&b.ka(a,c)}\r
18664 function zyb(b,a,c,d){ck(this,b);this.top=a;ka(this,c);Wa(this,d)}H(fS,uh);F=fS[w];F.Ieb=0;F.ea=D(Bna);va(F,D("Fua"));F.wi=function $j1(a){if(a!=this.Fua){this.Fua=a;this[r](oy)}};F.Ke=D("Ieb");F.jg=function $l1(a){if(a!=this.Ieb){this.Ieb=a;this[r](oy)}};H(syb,Kx);var uyb={Hvd:Rr,exd:Sr,ixd:TO,vmc:Cna,Koc:GO};F=syb[w];F.Rt=function $m1(a,c){var d=this.Ca(a);if(d)c&&d.wi(c);else{d=new fS(a,c||I);this.Fa(a,d)}return d};F.FT=function $n1(a){return this.Ca(a)?this.Rt(a).Ke():I};F.nNa=function $o1(){return this.Ca(TO)||"http://www.google.com/profiles/me"};F.Ddb=function $p1(){var a=this.J().Sb();tyb(this,a);jf(a,OL);jf(a,Tr);jf(a,Ah);jf(a,hQ);jf(a,Pj);return Li(a,G(function(c){return this.Rt(c)},this))};F.IW=function $q1(a,c){this.Fa(a,c)};\r
18665 F.V_a=function $r1(){this.IW(Sr,this.ncb(Rr))};F.ncb=function $s1(a){return this.Ca(a)};F.Naa=function $t1(a){this.Fa(Cna,a)};F.Gf=function $u1(){return this.Ca(Cna)};F.udc=function $v1(a){this.Fa(GO,a)};F.Vt=function $w1(){return this.Ca(GO)};H(gS,Gy);new Hf({obfuscatedId:vyb});new Hf({Kwd:vyb});F=gS[w];F.Xs=function $x1(){return"buzz/"+this.Rc(vyb)||I};va(F,E("Buzz"));F.XZ=D("bTa");F.iQa=function $A1(a){if(Ke(this.Uvb))return this.Uvb;return this.Uvb=this.bTa==Rz(a)[hq](XN)};F.FL=E(h);F.Qb=E(ey);var Byb={};hS[w].urb=k;var Cyb="-container-div",Dyb="position: absolute; z-index: 10",Eyb="-done-",Fyb="-bg",Gyb="position: absolute; background-color: #666;filter:alpha(opacity=50); opacity:0.5;width: 100%; height: 100%;",Hyb="display: none; position: absolute; border: 0;width: 100%; height: 100%;",Iyb="doneFunc",Jyb="posx",Kyb="posy",Lyb="posw",Myb="posh",Nyb="&gwt.hosted=";\r
18666 hS[w].fo=function $D1(a,c,d){var f=this.N0a+Cyb;if(this.Y.Qa(f))return k;this.LJ=this.Y.ba(T,{id:f,style:Dyb});this.Y.cb()[Lc][o](this.LJ);this.S7a=this.N0a+Eyb+Yf();this.Y.Ec()[this.S7a]=G(this.yrd,this,d);Ayb(this);this.LJ[o](this.Y.ba(T,{id:this.N0a+Fyb,style:Gyb}));this.LJ[o](wyb(this,this.Y));this.ZJa=new oC(this.Y.Ec());ih(this.ZJa,sj,G(this.KKc,this));var g=this.Y.ba(Td,{id:this.N0a+Dna,style:Hyb,scrolling:yP,tabIndex:Ur,allowTransparency:jg});this.LJ[o](g);this.LJ[o](wyb(this,this.Y));var j=\r
18667 L&&!vg(Ij);j||Dm(g,Vr,yd);mh(g,rj,G(function(){j||Dm(g,Vr,ud);xyb(this,g)},this));Dm(g,wd,pe);yyb(this);d=new Sh(a);d.ka(Iyb,this.S7a);if(c){iS(d,Jyb,c[Ck]);iS(d,Kyb,c.top);iS(d,Lyb,c[ib]);iS(d,Myb,c[id])}if(a=Zh(a,Wr)){d.bub(Wr);a=d[t]()+Nyb+a}else a=d[t]();g.src=a;return h};hS[w].KKc=function $E1(){Ua(this.LJ[x],xd);yyb(this);Ua(this.LJ[x],pe)};\r
18668 hS[w].yrd=function $F1(a,c){if(this.ZJa){this.ZJa.D();this.ZJa=i}if(this.bSa){this.bSa.D();this.bSa=i}this.Y[ad](this.LJ);this.LJ=i;if(this.urb){var d=this.Y.cb()[Lc][A];Dm(d,td,this.k3b)}this.urb=k;this.k3b=I;this.Y.Ec()[this.S7a]=i;this.ECd=k;a&&a(c)};Ie("goog.DialogWidgetLauncher.PseudoRect",zyb,void 0);O.S().gb(Kd);Ci(O.S(),Kd);var uLb="Tasks";function vLb(b,a,c,d){this.Ck=VC(b);this.Ck.yu.add(this);b=JB(b).zc();QF(b,a);this.Zb=new jB;this.CEd=i;mh(c,d,G(this.jEc,this))}function wLb(b){this.ap=[];typeof b==Qe?this.RGa(b):this.bpa(b)}\r
18669 function xLb(b,a,c,d,f){for(var g=new yLb,j=[d],n=-1,s=0,v=0,C=0;C<b.ap[u];C++)if(b.ap[C].ag>0){if(n<0&&b.ap[C].Aca){n=C;s=d;v=0}if(n>=0){var M=b.ap[C].ag;if(C==n){M-=v;v++;if(M==0)return 0}if(!zLb(b,a,j,b.ap[C],M,g)){C=n-1;j[0]=s}}else{n=-1;if(!zLb(b,a,j,b.ap[C],0,g))return 0}}else{n=-1;if(b.ap[C][jb][xb](0)==J){M=j[0];ALb(b,a,j);if(j[0]>M)continue}else if(a[Db](b.ap[C][jb],j[0])==j[0]){j[0]+=b.ap[C][jb][u];continue}return 0}a:{if(g.lOb!=undefined&&g.pe!=undefined&&g.lOb==0&&g.pe>0)g.pe=-(g.pe-1);\r
18670 g.pe!=undefined&&c[sq](g.pe);b=c[iq]();c[zq](1);g.Ge!=undefined&&c[qq](g.Ge);g.zea!=undefined?c[zq](g.zea):c[zq](b);if(g.zs==undefined)g.zs=c[xq]();if(g.iGb!=undefined&&g.iGb>0)if(g.zs<12)g.zs+=12;c[Pma](g.zs);g.Zw!=undefined&&c[Ama](g.Zw);g.zx!=undefined&&c[Jma](g.zx);g.fmb!=undefined&&c.setMilliseconds(g.fmb);if(f&&(g.pe!=undefined&&g.pe!=c[fr]()||g.Ge!=undefined&&g.Ge!=c[Cq]()||g.zea!=undefined&&g.zea!=c[iq]()||g.zs>=24||g.Zw>=60||g.zx>=60||g.fmb>=1E3))c=k;else{if(g.TAb!=undefined){f=c[sr]();c[gr](c[hc]()+\r
18671 (g.TAb-f)*60*1E3)}if(g.Msc){f=new Date;f[sq](f[fr]()-80);c[hc]()<f[hc]()&&c[sq](f[fr]()+100)}if(g.Aea!=undefined)if(g.zea==undefined){g=(7+g.Aea-c[Gq]())%7;if(g>3)g-=7;f=c[Cq]();c[zq](c[iq]()+g);if(c[Cq]()!=f)c[zq](c[iq]()+(g>0?-7:7))}else if(g.Aea!=c[Gq]()){c=k;break a}c=h}}return c?j[0]-d:0}function BLb(b,a){if(a.ag<=0)return k;b="MydhHmsSDkK"[Db](a[jb][xb](0));return b>0||b==0&&a.ag<3}function ALb(b,a,c){if(b=a[Zc](c[0])[Kb](/^\s+/))c[0]+=b[0][u]}\r
18672 function zLb(b,a,c,d,f,g){ALb(b,a,c);var j=c[0],n=d[jb][xb](0),s=-1;if(BLb(b,d))if(f>0){if(j+f>a[u])return k;s=CLb(b,a[Zc](0,j+f),c)}else s=CLb(b,a,c);switch(n){case XC:g.lOb=bV(b,a,c,bE.xDb);return h;case XD:a:{d=s;if(d<0){d=bV(b,a,c,bE.xca);if(d<0)d=bV(b,a,c,bE.wEb);if(d<0){g=k;break a}g.Ge=d}else g.Ge=d-1;g=h}return g;case eD:d=bV(b,a,c,bE.c2a);if(d<0)d=bV(b,a,c,bE.U1a);if(d<0)g=k;else{g.Aea=d;g=h}return g;case Kd:g.iGb=bV(b,a,c,bE.MCb);return h;case Wx:a:{s=s;var v;if(s<0){v=a[xb](c[0]);if(v!=\r
18673 tl&&v!=Qd){g=k;break a}c[0]++;s=CLb(b,a,c);if(s<0){g=k;break a}if(v==Qd)s=-s}if(!v&&c[0]-j==2&&d.ag==2){b=s;a=(new Date)[fr]()-80;c=a%100;g.Msc=b==c;b+=l[rb](a/100)*100+(b<c?100:0);g.pe=b}else g.pe=s;g=h}return g;case aE:d=s;if(d<0){d=bV(b,a,c,bE.dEb);if(d<0)d=bV(b,a,c,bE.xEb);if(d<0)g=k;else{g.Ge=d*3;g.zea=1;g=h}}else g=k;return g;case Pd:g.zea=s;return h;case YD:b=c[0]-j;g.fmb=b<3?s*l.pow(10,3-b):l[kb](s/l.pow(10,b-3));return h;case Yx:if(s==12)s=0;case jD:case aD:case cD:g.zs=s;return h;case Xx:g.Zw=\r
18674 s;return h;case ki:g.zx=s;return h;case ey:case cy:case Bz:if(a[Db](QFa,c[0])==c[0])c[0]+=3;b:if(c[0]>=a[u]){g.TAb=0;g=h}else{d=1;switch(a[xb](c[0])){case Qd:d=-1;case tl:c[0]++}j=c[0];s=CLb(b,a,c);if(s==0&&c[0]==j)g=k;else{if(c[0]<a[u]&&a[xb](c[0])==xj){v=s*60;c[0]++;j=c[0];s=CLb(b,a,c);if(s==0&&c[0]==j){g=k;break b}v+=s}else{v=s;if(v<24&&c[0]-j<=2)v*=60;else v=v%100+v/100*60}v*=d;g.TAb=-v;g=h}}return g;default:return k}}\r
18675 function CLb(b,a,c){b=a[Zc](c[0])[Kb](/^\d+/);if(!b)return-1;c[0]+=b[0][u];return da(b[0],10)}function bV(b,a,c,d){b=0;var f=-1;a=a[Zc](c[0])[od]();for(var g=0;g<d[u];g++){var j=d[g][u];if(j>b&&a[Db](d[g][od]())==0){f=g;b=j}}if(f>=0)c[0]+=b;return f}function yLb(){}Bi(O.S(),"sy151");_B_prog(89)}catch(e){_B_err(e)}\r
18676 \r
18677 try{vLb[w].sK=function $Kla(){if(this.Zb)return[this.Zb];return[]};vLb[w].jEc=function $Lla(){this.Zb=i;WC(this.Ck);this.Ck.yu[Pb](this)};wLb[w].bpa=function $Mla(a){for(var c=k,d=I,f=0;f<a[u];f++){var g=a[xb](f);if(g==J){if(d[u]>0){this.ap[p]({text:d,ag:0,Aca:k});d=I}for(this.ap[p]({text:J,ag:0,Aca:k});f<a[u]-1&&a[xb](f+1)==J;)f++}else if(c)if(g==Ox)if(f+1<a[u]&&a[xb](f+1)==Ox){d+=Ox;f++}else c=k;else d+=g;else if("GyMdkHmsSEDahKzZvQ"[Db](g)>=0){if(d[u]>0){this.ap[p]({text:d,ag:0,Aca:k});d=I}var j;j=a[xb](f);for(var n=f+1;n<a[u]&&a[xb](n)==j;)n++;j=n-f;this.ap[p]({text:g,ag:j,Aca:k});f+=j-1}else if(g==Ox)if(f+1<a[u]&&a[xb](f+1)==Ox){d+=\r
18678 Ox;f++}else c=h;else d+=g}d[u]>0&&this.ap[p]({text:d,ag:0,Aca:k});a=k;for(c=0;c<this.ap[u];c++)if(BLb(this,this.ap[c])){if(!a&&c+1<this.ap[u]&&BLb(this,this.ap[c+1])){a=h;this.ap[c].Aca=h}}else a=k};wLb[w].RGa=function $Nla(a){if(a>11)a=10;this.bpa(a<4?bE.soa[a]:a<8?bE.CFa[a-4]:bE.soa[a-8]+J+bE.CFa[a-8])};wLb[w].parse=function $Ola(a,c,d){return xLb(this,a,c,d||0,k)};O.S().gb("sy151");Ci(O.S(),"sy151");Bi(O.S(),"sy150");function pY(b){this.Qzb=b}H(pY,xx);F=pY[w];F.QRa=B();F.QRa.Vd=h;F.PRa=B();F.PRa.Vd=h;F.BJa=B();F.BJa.Vd=h;O.S().gb("sy150");Ci(O.S(),"sy150");var OAc='" type="text" autocomplete="off" ignoreesc="true" title="',PAc='" label="';function kY(b,a){nn[z](this,a);this.Me=b||I}function QAc(b){if(!b.QEc&&b.Q&&b.b()[sk]){b.Q.w(b.b()[sk],oj,b.NIc);b.QEc=h}}function lY(b){return b.b()[q]!=I&&b.b()[q]!=b.Me}function RAc(b){if(b[xb](0)==tl)return b;b=b[mb](/\D/g,I);b=b[xb](0)==Hj?tl+b:Iha+b;if(b[u]==12)return b;return i}Bi(O.S(),"sy148");H(kY,nn);F=kY[w];F.hO=i;F.ba=function $qNa(){this.wa=this.W().ba(zm,{type:Il})};F.Ff=function $rNa(a){kY.C.Ff[z](this,a);if(!this.Me)this.Me=a[Uc](Hl)||I};F.ma=function $sNa(){kY.C.ma[z](this);this.E3a();this.rJ();this.b().jl=this};F.Ba=function $tNa(){kY.C.Ba[z](this);this.Fra();this.b().jl=i};F.E3a=function $uNa(){var a=new kn(this);a.w(this.b(),lj,this.WNa);a.w(this.b(),kj,this.o_);Fh&&a.w(this.b(),[Zi,ij,jj],this.DIc);var c=Eg(this.b());a.w(pm(c),rj,this.MKc);this.Q=a;QAc(this)};\r
18679 F.Fra=function $vNa(){if(this.Q){this.Q.D();this.Q=i}};F.L=function $wNa(){kY.C.L[z](this);this.Fra()};F.voa="label-input-label";F.WNa=function $yNa(){this.ef=h;Ag(this.b(),this.voa);if(!lY(this)&&!this.tNc){var a=this,c=function $xNa(){pa(a.b(),I)};L?Dh(c,10):c()}};F.o_=function $zNa(){this.hO=i;this.ef=k;this.rJ()};F.DIc=function $ANa(a){if(a[Sb]==27){if(a[Zb]==ij)this.hO=this.b()[q];else if(a[Zb]==Zi)pa(this.b(),this.hO);else if(a[Zb]==jj)this.hO=i;a[zb]()}};\r
18680 F.NIc=function $BNa(){if(!lY(this)){pa(this.b(),I);Dh(this.zHc,10,this)}};F.zHc=function $CNa(){if(!lY(this))pa(this.b(),this.Me)};F.MKc=function $DNa(){this.rJ()};Aa(F,function $ENa(){pa(this.b(),I);if(this.hO!=i)this.hO=I});F.Fa=function $FNa(a){if(this.hO!=i)this.hO=a;pa(this.b(),a);this.rJ()};F.Ca=function $GNa(){if(this.hO!=i)return this.hO;return lY(this)?this.b()[q]:I};\r
18681 F.rJ=function $HNa(){QAc(this);if(lY(this))Ag(this.b(),this.voa);else{!this.tNc&&!this.ef&&K(this.b(),this.voa);Dh(this.mfd,10,this)}};F.mfd=function $INa(){if(this.b()&&!lY(this)&&!this.ef)pa(this.b(),this.Me)};var fBc="Your attachment(s) were not restored.  You can only attach items while online.";function gBc(b){this.ik=b}zx(gBc,uL);gBc[w].Qs=function $VNa(a){if(a.mg==101){var c=a.ws(),d=a.Bb(),f=this.ik,g=f.Cg;a=a.Mg();for(var j=0;j<a[u];j++){var n=a[j],s=n[0];n=n[1];var v=f.lJ(c,d,s);f.SX(s,n,[CL]);f.m1(s,n,[HN]);v&&O3a(v);if(g){tI(g,s);zL(f,s)}}return h}return k};xL[w].fXb=function $gV(){this.Jg.KOc()};O.S().gb("sy148");Ci(O.S(),"sy148");Bi(O.S(),"sy157");O.S().gb("sy157");Ci(O.S(),"sy157");Bi(O.S(),"sy159");function nCc(b,a){var c=a||new U;c[R](b[ec],b.xM?xl+b.xM+xh:I);if(!a)return c[t]()};O.S().gb("sy159");Ci(O.S(),"sy159");Bi(O.S(),"sy160");function oCc(b,a,c,d){this.x1=b;this.hvb=a;this.ABa=c;this.dbc=d}function pCc(b,a,c,d,f,g){d=Ke(d)?d:b[0];if(c){g||(b[0]=Qd+b[0]);d=Qd+d}return new oCc(b,d,a,f)}var qCc="^(?:";function rCc(b,a){this.tKb=b;this.Dyc=new RegExp(qCc+a[kd](Bl)+Beb)}function sCc(b){this.fUa=b}function tCc(b){this.O=b;this.O[1]=this.O[1]||[];this.QYb=[];for(b=0;b<this.O[1][u];b++)this.QYb[b]=new uCc(this.O[1][b])}function uCc(b){this.O=b}function vCc(b,a){oH[z](this,b,33);this.wj=a}\r
18682 function wCc(b){this.V=b;this.cg=KC(b);this.sg=sH(b);this.Hza=new sCc(xCc);Mx().oz(11,G(this.wSc,this))}var yCc="quick link";\r
18683 function zCc(b,a,c){var d=[],f=MC(b.cg),g=jTa(f.za(cJ));of(g,OC(f));b.FQa&&Hw(g,function(v,C){v=b.FQa[v];C=b.FQa[C];return v>C?-1:v<C?1:0});for(f=0;d[u]<c&&f<g[u];f++){var j=g[f],n=b.cg.Rw(j)?Vy(j):undefined;if((n||j)[Kb](a))d[p](ACc(b,j,n))}if(g=b.sg.Hp(bra)){g=g.XA;var s;for(f=0;d[u]<c&&(s=g[f]);f++){n=s[Cc](Md);j=Rf(String(n[0]));n=Rf(String(n[1]));if(n[Kb](a)||j[Kb](a))d[p](b.HJ([j,yCc],Ph,I,n,h))}}return d}\r
18684 function ACc(b,a,c){var d=NC(b.cg,a);d=nCc({name:c||a,xM:d.rt>0?d.rt:0});var f=JC(a);return b.HJ([d,Hl],b.AU?ki:Hz,cra+(c||f),a,h)}function BCc(b,a,c,d){BG[z](this,b,a,c,d)}var CCc='<span class="HxZ6qc">&nbsp;-&nbsp;';function DCc(b,a){var c=a||new U;c[R](I,pE,V(b.ce),gB,b.n7b?CCc+V(b.n7b)+gB:I,I);if(!a)return c[t]()}function ECc(b,a,c,d){CG[z](this,b,a,c,d)}var FCc="ah j3STDe";\r
18685 function GCc(b,a,c,d){b=new ECc(c,i,k,h);m(b,FCc);b.yBa=S7a;b.XL=h;c=new BCc(J,dra,h,150);c.L0a=k;c.Zbb=k;c.kd=this;c.Wr(a);c.gwb=k;uG[z](this,d,b,c);this.oja=7;this.GGa=this.mHa=h;this.zf=a}function HCc(b){N[z](this,era);this.IRc=b}Ha(oCc[w],D("hvb"));rCc[w].Vta=function $nOa(a,c,d,f){if(!a[Kb](this.Dyc))return[];var g=a[Cc](xj),j=[];j[u]<d&&String(g[0]+fra)[Kb](c)&&j[p](pCc([g[0]+fra],dx,f));c=this.tKb.Oga(g[1],d,h);for(var n=0;n<c[u]&&j[u]<d;n++)j[p](this.Z6a(c[n],f,g[0]));j[0]&&j[0].x1[0]!=a&&j[ld](pCc([a],dx,f));return j};rCc[w].Ko=function $oOa(a,c,d,f){c=[];a=this.tKb.Oga(a,d);for(var g=0;g<a[u]&&c[u]<d;g++)c[p](this.Z6a(a[g],f));return c};\r
18686 rCc[w].Z6a=function $pOa(a,c,d){var f=Pf(a[pq]());a=Pf(a.Vc());var g=d?d+xj:I,j=[I];if(f&&a)j=[g+f,a];else if(f)j=[g+f];else if(a)j=[g+a];return pCc(j,dx,c,(d?d+xj:I)+a)};sCc[w].Vta=function $qOa(a,c,d,f){d=[];for(var g=this.fUa,j=0;j<g[u];j++){var n=g[j][0];if(a[Kb](Ty+n+xj)){g=g[j][1];for(j=0;j<g[u];j++){var s=n+xj+g[j];s[Kb](c)&&d[p](this.HJ(s,f))}d[0]&&d[0].x1[0]!=a&&d[ld](this.HJ(a,f));return d}}return[]};var ICc="operator";sCc[w].Ko=function $rOa(a,c,d,f){a=[];for(d=0;d<this.fUa[u];d++)this.fUa[d][0][Kb](c)&&a[p](this.HJ(this.fUa[d][0]+xj,f,ICc));return a};sCc[w].HJ=function $sOa(a,c,d){return pCc(Ke(d)?[a,d]:[a],dg,c)};_B_prog(90)}catch(e){_B_err(e)}\r
18687 \r
18688 try{Ha(tCc[w],function $tOa(){return this.O[t]()});tCc[w].kc=D(ae);uCc[w].Iga=function $vOa(){return this.O[0]};Ha(uCc[w],function $wOa(){return this.O[t]()});uCc[w].kc=D(ae);H(vCc,oH);var JCc="omni";vCc[w].Ja=function $yOa(a){vCc.C.Ja[z](this,a);a.Ua(pd,JCc);a.Ne(mB)};vCc[w].rk=function $zOa(a,c,d){if(c==JCc){a=this.wj;d=(new tCc(d)).QYb;a.FQa={};c=0;for(var f;f=d[c];c++)a.FQa[f.Iga()]=f.O[1]}};wCc[w].AU=k;var xCc=[[gO,[sz,"read",npb,kza,pJ]],["has",["attachment"]],["filename",["jpg","pdf","doc","ppt","xls"]],[ss,[kz,Zy,Yy,"anywhere"]],[Hl,[]],[vK,[]],[mNa,[]]],KCc=[Xt,LP,Yd,MP,"deliveredto"],LCc=[["and &&","AND","AND"],["or ||",zu,zu],[gra,"has photos",hra],[ira,"has documents","filename:(pdf OR doc OR xls OR ppt) OR docs.google.com OR spreadsheets.google.com"],[jra,"has videos",kra],[lra,mra,"filename:ics"],[nra,nra,ora],[pra,pra,qra],[Pu,Pu,rra]];F=wCc[w];\r
18689 F.wSc=function $AOa(){(new vCc(this.V,this))[Mb]()};F.ula=function $BOa(a,c,d,f){var g;if(!this.AJ&&(g=rG(this.V)))this.AJ=new rCc(g,KCc);c=this.t6(a,c,f);d(a,c,k)};var MCc="^label:",NCc="search mail";\r
18690 F.t6=function $COa(a,c,d){this.AU=a[xb](0)==Qd;var f=Pf(a[mb](/[\(\)\{\}\"\']|(?:^-)/g,I));if(f==I)return[];var g=f[od]();f=new RegExp(sra+ox(f),ii);if(this.AJ){var j=this.AJ.Vta(g,f,c,this.AU);if(j[u]>0)return j}if(g[Kb](MCc)){j=g[Cc](xj,2)[1];j=new RegExp(vQa+ox(j),ii);j=zCc(this,j,c)}else j=[];if(j[u]>0)return j;j=this.Hza.Vta(g,f,c,this.AU);if(j[u]>0)return j;j=this.Hza.Ko(g,f,c,this.AU);var n=this.pzb(f,c),s=zCc(this,f,c),v=s[u]+j[u]+n[u];v=v>=c-3-1?3:c-1-v;g=this.AJ?this.AJ.Ko(g,f,v,this.AU):\r
18691 [];a=this.AU?a[nc](1):a;d=[this.HJ([d?d:a,NCc],ki,a,undefined,!!d)];of(d,g,s,j,n);return d[lb](0,c)};F.pzb=function $DOa(a,c){for(var d=[],f=0;f<LCc[u]&&d[u]<c;f++)LCc[f][0][Kb](a)&&d[p](this.HJ([LCc[f][1]],RE,LCc[f][2]));return d};F.Z6a=function $EOa(a,c){var d=Pf(a[pq]());a=Pf(a.Vc());var f=c?c+xj:I,g=[I];if(d&&a)g=[f+d,a];else if(d)g=[f+d];else if(a)g=[f+a];return this.HJ(g,dx,(c?c+xj:I)+a)};\r
18692 F.HJ=function $FOa(a,c,d,f,g){d=Ke(d)?d:a[0];if(this.AU){g||(a[0]=Qd+a[0]);d=Qd+d}return new oCc(a,d,c,f)};H(BCc,BG);BCc[w].Qo=function $GOa(a){BCc.C.Qo[z](this,a);switch(a[Sb]){case 13:this.kd.Dsa();this.kd.nw();break;case 39:this.kd.vI()&&a[zb]()}};H(ECc,CG);ECc[w].qWa=function $HOa(a,c,d){a=a[dq];Q(d,DCc({ce:a.x1[0],n7b:a.x1[1]}))};H(GCc,uG);GCc[w].vI=function $IOa(){var a=vG(this,this.Hy);if(a!=-1){var c=Ke(this.Rg[a].iQb);this.JRc=a=this.Rg[a];if(c)a+=J;this.JF.yaa(a,!c);this.nw();this[r](kQ);return h}return k};GCc[w].Dsa=function $JOa(){sh(this,new HCc(this.JRc))};H(HCc,N);O.S().gb("sy160");Ci(O.S(),"sy160");Bi(O.S(),"sy161");O.S().gb("sy161");Ci(O.S(),"sy161");var RCc='" token="',SCc="token",TCc="Report ",UCc=" bug",VCc="New!",WCc="Take our survey",XCc="xu",YCc="z4",ZCc=' <a class="',aDc="xr",bDc="Pn",cDc="60:ls",dDc="/b/",eDc="You can ",fDc="wl",gDc="<option ",hDc="mon";function iDc(b){var a=Zf();b.xya=a;GYa(b,a)}function jDc(b,a){b.bmd=a;b.Li[z](b.na)}function kDc(b,a,c){var d=b[a.id]||0;b=b[c.id]||0;return d>b?-1:d<b?1:a[Dq]>c[Dq]?1:-1}\r
18693 function lDc(b,a){b.tD=a;b.tD&&!b.xa.uPc()&&b.xa.ZVa(Ph);if(!b.Tl)if(b.tD){b.tD.vLc&&b.xa.cja(k);b.xa.ZVa(Ph)}var c=b.Uq;c.tD=a;if(a!=i)c.ACd=a.Hc();b.Uq.YU()}function mDc(b){b.Hh.My()||iDc(b.H3)}function qY(b,a){b.jMb=a;b.gr||DPa(b,h)}function nDc(b,a){this.Li=b;this.na=a;b=new Sh;b.ka(pd,UF);b.ka(VF,Pj);this.Wic=String(b);b.ka(VF,Hj);this.Vic=String(bi(b))}function oDc(b,a){b.pQ=a}function pDc(b){return Cf(b.jAa)[el](df(kDc,b.m8b))}\r
18694 function qDc(b){if(!b.ul)b.ul=(new Sh(b.PIb[Ic][Yc])).ul;return b.ul==xH}function rDc(b){b.OEc=h}function sDc(b,a){var c=a||new U;c[R](Qu,b.id,qE,b[Yc],tra,Rd,W,b.yU,hB);if(!a)return c[t]()}function tDc(b){var a=(new Sh(kea)).ka(Sd,Vz);Mx().Kh(170,b,a);return a}var uDc="?logout&hl=en";function vDc(b){var a=I;if(b[hq](Mz)){b=new Sh(Mj);if(b.Jk()=="mail.google.com"){b.Of()[bc]();b.Pr(xH);Uh(b,I);a=b[t]()}}return a+uDc}var wDc="mail/whatsnew.html",xDc="about_whatsnew.html";\r
18695 function yDc(b){var a;if((a=b[hq](V7a))&&da(a,10)){a=b[hq](X7a);if(!(new Sh(a)).Jk()){if(b[hq](Mz)){b=b[hq](i8a);a=a||wDc}else{b=b[hq](h8a);a=a||xDc}a=Ue(b)?b+a:a}}else a=i;return a}function zDc(b){var a=i,c=b[hq](V7a);if(c&&da(c,10)){a=b[hq](W7a);a=Ke(a)?String(a):i}return a}function rY(b,a){yH[z](this,k,undefined,b,a);this.OXb=k}function ADc(b){b.OXb=h;b.gma(b.ZLc,b.Jed);L&&!zH&&!b.KKa&&b.j4b()}function BDc(){return Xw(O.S(),PN).hc()}\r
18696 var CDc="[gmonkey.get] Invalid version number: ",DDc='[gmonkey.get] Version "',EDc='" not loaded, use:\ngmonkey.load("',FDc='", function(api) { ... })';function GDc(b){if(BDc(b))switch(Number(b)){case 1:return HDc;default:Zo(CDc+b)}else Zo(DDc+b+EDc+b+FDc);return i}function IDc(){top.gmonkey=self.gmonkey;nh(top,rj,IDc)}function JDc(b){this.O=b}function KDc(b,a){pB[z](this,b,37,6);this.quc=a}function LDc(b){pB[z](this,b,38,7)}function sY(b){this.Rd=b}function MDc(b){this.link=b;this.Hm=[1]}\r
18697 function NDc(b,a){b.Hm[jd](b.Hm[u]-1,0,a)}function tY(b,a,c){this.yn=b;this.KL=a;za(this,c?c:1)}function ODc(b){this.O=b}var PDc="jobsetinfo";function QDc(b,a){Kx[z](this,PDc,b);this.Kk().w(a,Fx(ura),this.p2c)}function RDc(b){this.Db=b;this.Aa=Dx(Cx(b));this.xf=fy(b)}var SDc='" role="banner">',TDc=' Logo</h1><div id="',UDc="a9",VDc='" idlink role="link" title="';function WDc(b,a){var c=a||new U;c[R](vra,qD,SDc,b.si,TDc,b.id,S,UDc,VDc,b.si+" by Google",mE);if(!a)return c[t]()}\r
18698 var XDc='<b><a target=_blank class="bE" href="',YDc="</a></b> | ";function ZDc(b,a){var c=a||new U;c[R](b.fnb&&b.enb?XDc+b.enb+W+b.fnb+YDc:I);if(!a)return c[t]()}var aEc="&nbsp;| ",bEc="><span id=",cEc="><a class=",dEc="bB",eEc=' href="#"><u>',fEc="Report issues",gEc="</u> <small>&#9660;</small></a></span><div id=",hEc=" for=",iEc="</div></span> | ";\r
18699 function jEc(b,a){var c=a||new U;if(b.vWa[u]==1)c[R](b.vWa[0].yn,aEc);else if(b.vWa[u]>1){c[R](wra,xra,bEc,b.vac,cEc,dEc,eEc,fEc,gEc,b.Red,hEc,b.vac,Ru,xo,W);b=b.vWa;for(var d=b[u],f=0;f<d;f++)c[R](X,uo,W,b[f].yn,Z);c[R](iEc)}if(!a)return c[t]()}var kEc="a8",lEc="<span class=bA><span id=",mEc='><a class=bB href="#"><u><b>',nEc="</b></u> <small>&#9660;</small></a></span><div id=",oEc=' class="J-M"></div></span> | ',pEc="</b> | ",qEc="  | ";\r
18700 function rEc(b,a){var c=a||new U;c[R](nE,b.rHc,S,kEc,yra);b.BYb&&sEc(b,c);b.IXb&&jEc(b,c);var d=c||new U;d[R](b.tjd?lEc+b.aFb+mEc+V(b.kjc)+nEc+b.crc+hEc+b.aFb+oEc:ZG+V(b.kjc)+pEc);c||d[t]();c[R](UZa,b.ptc,Uf);b.fpa&&tEc(b,c);c[R](ns,b.oWc,W);ZDc(b,c);c[R](ns,b.DXc,au);d=c||new U;for(var f=b.gVc,g=f[u],j=0;j<g;j++)d[R](f[j],aEc);c||d[t]();uEc(b,c);c[R](Su);if(b.njb&&b.mkd){d=c||new U;sDc({id:b.ebb,href:b.fbb,yU:zra},d);c||d[t]();c[R](Su)}vEc(b,c);c[R](qEc);b.IXb||jEc(b,c);wEc(b,c);c[R](Ara);if(!a)return c[t]()}\r
18701 var xEc="a7",yEc='" target="_blank" href="',zEc="Manage this domain";function AEc(b,a){var c=a||new U;b.fpa&&c[R](QP,Rd,J,xEc,yEc,b.fpa,W,zEc,hB);if(!a)return c[t]()}function tEc(b,a){var c=a||new U;AEc(b,c);c[R](Su);if(!a)return c[t]()}var BEc="#settings";function uEc(b,a){var c=a||new U;sDc({id:b.Z1,href:b.tRa+BEc,yU:IK},c);if(!a)return c[t]()}var CEc='<span><a target=_blank class="';function vEc(b,a){var c=a||new U;c[R](CEc,Rd,J,xEc,qE,b.zVb,Gl,b.yVb,W,Bra,Zt);if(!a)return c[t]()}var DEc='" target="_top">';\r
18702 function wEc(b,a){var c=a||new U;c[R](QP,Rd,J,xEc,J,mP,Gl,b.lfc,qE,b.B_b,DEc,b.mfc,hB);if(!a)return c[t]()}var EEc="aH",FEc="bU",GEc="End now",HEc='</a>&nbsp;&nbsp;&nbsp;<a class="',IEc="Vacation Settings",JEc='</a></div><span id="',KEc="&nbsp;</span></div>";function LEc(b,a){var c=a||new U;c[R](X,EEc,Gl,V(b.mqd),wl,FEc,Cra,Rd,J,xEc,Gl,V(b.TCc),W,GEc,HEc,Rd,J,xEc,Gl,V(b.Z1),W,IEc,JEc,V(b.oqd),W,V(b.nqd),KEc);if(!a)return c[t]()}var MEc='" scrolling="no" ></iframe>';\r
18703 function NEc(b,a){var c=a||new U;c[R](Iqa,b.id,Ps,b.j8a,S,VP,MEc);if(!a)return c[t]()}var OEc="Devel jobset: ",PEc="Ozk3xc",QEc="</a> | ";function sEc(b,a){var c=a||new U,d=OEc+V(b.BYb);c[R](QP,PEc,yEc,b.TQc,W,d,QEc);if(!a)return c[t]()}function uY(b){UB[z](this,b);Bx(this);this.Z=Rz(b);this.Lb=Tz(b);this.H().w(fy(b).ud,Fx(WN),this.a9c);this.jb=JB(b);this.Aa=Dx(Cx(b))}function REc(b,a){return Li(a,function(c){return c.yn})}\r
18704 function SEc(b,a){b=TEc(b,b.aa.HE());if(a)b=Di(b,function(c){return(c[Zb]&a)!=0});return b}function TEc(b,a){return Di(sf(a),function(c){return c!=i})}var UEc="guser",VEc="Sign out",WEc="aml";\r
18705 function XEc(b,a,c){var d=b.B(),f=REc(b,a[1]),g;g=b.Aa.za(PDc);g={vM:g.Ca(Tu),url:g.Ca(Dra)};var j=!Jz(b.Z,1067)&&!Jz(b.Z,1164);return{rHc:UEc,kjc:Hi,Z1:b.X(ki),tRa:nD(d),lfc:b.X(xs),zVb:tDc(b.Lb),ebb:b.X(Uu),fbb:Era,oWc:b.X(sQ),enb:yDc(b.Z),fnb:zDc(b.Z),yVb:b.X(GO),B_b:vDc(b.Z),mfc:VEc,gVc:f,ptc:b.X(NL),fpa:b.Z[hq](A8a),vWa:a[3],Red:b.X(FE),vac:b.X(hP),tjd:c,crc:b.X(LD),aFb:b.X(WEc),IXb:Jz(b.Z,55),njb:!bx(),mkd:j,DXc:b.X(SL),BYb:g.vM,TQc:g.url}}function vY(b){this.bi=b}\r
18706 function wY(b,a){BD[z](this,b,new eE(b));this.Z=Rz(b);this.iga=a;this.Bd=rD(b)}var YEc="qq",ZEc="navigation";function aFc(b,a){var c=b.ia,d=c.b();if(a.O[1]){var f=sD(b.Bd);ba.GBAR_doc=f[yc];Q(d,a.Cp());Li(d[ic](Kd),function(g){K(g,YEc)});K(d,Bqa);fn(d,ZEc);f.eval&&a.O[3]&&f.eval(a.O[3]);Vj(a.O[4],d)}else Q(d,I);d[o](b.iga.b());c.Xk(b.iga);d[o](b.W().ba(T,{className:Vu}))}function xY(b){this.kj=b}function bFc(b,a,c,d){this.id=b;Sp(this,a);this.Si=c;this.scope=d||Je;Ra(this,h)}var cFc="stlp";\r
18707 function dFc(b){bFc[z](this,cFc,I,this.XJc,this);this.ci=b;this.Ud=this.fM=this.VUa=this.waa=i}function eFc(b){this.kj=b}\r
18708 function yY(b){eE[z](this,b.B());this.xk=b;this.Cb=sC(b.B());this.CW=[];this.jb=JB(b.B());this.ctb={};this.Ud=i;Mx().Ug(110,G(this.Cza,this));b=dG(b.B());this.H().w(b,cG,this.iqb);Bx(this);b=this.aa.sNa();b[p](new bFc(EE,this.koc,this.D6c,this));b[p](new bFc(Wu,this.loc,this.G6c,this));this.ura=i;for(var a=0;a<b[u];a++){var c=b[a];if(c){this.CW[p](c);this.ctb[c.id]=c;if(!this.ura&&c[Vc])this.ura=c.id}}}\r
18709 function zY(b,a,c){if(a=b.ctb[a]){Ra(a,c);a.Dna.ra(a[Vc]);b.ura=i;for(c=0;c<b.CW[u];c++){a=b.CW[c];if(a[Vc]){b.ura=a.id;break}}}}function fFc(b,a,c){var d=a.id==Xz,f=b.aa.jjb();f=d&&!f;zY(b,EE,f);f=f?I:xd;Ua(b.b(xs)[x],f);Ua(b.b(kD)[x],f);d&&gFc(b,b.aa.zT(a,c))}function gFc(b,a){var c=b.ny;b.Ud&&b.Ud.lw(c);a&&a.Wr(c);b.Ud=a}\r
18710 var hFc='" role="search"><tr><td class=',iFc="bN",jFc="><input type=text id=",kFc=' onsubmit="return false" class="',lFc="bQ",mFc='" maxlength=2048 size=40 tabindex=0></td><td class="',nFc="bM",oFc="bR",pFc='"><span id=',qFc=' tabindex=0 role=link class="',rFc="</span><br><span id=";\r
18711 function sFc(b,a){b=new U;b[R](Fl,ul,J,Pd,hFc,iFc,jFc,a.fXa,kFc,lFc,J,TP,mFc,iFc,J,nFc,W);for(var c=a.oS,d=c[u],f=0;f<d;f++){var g=c[f];AI({id:g.id,xh:g[jb]},b)}b[R](NG,iFc,J,oFc,pFc,a.Kgd,qFc,Xu,W,a.Lgd,rFc,a.rzc,qFc,Xu,W,a.szc,Fra);a=b[t]();return a}function tFc(b){for(var a=[],c=0;c<b.CW[u];c++){var d=b.CW[c];a[p]({id:b.X(d.id),text:d[qr]})}return{fXa:b.X(Bpa),Kgd:b.X(xs),rzc:b.X(kD),oS:a,Lgd:b.moc,szc:b.Ync}}function uFc(b){(b=b.ctb[b.ura])&&b.Si[z](b[Pq])}\r
18712 function vFc(b,a,c,d){if(a=b.b(a)){var f=new BI(i,CI.S());f.Pb(a);b.H().w(f,Wn,c,k,d);return f}else return i}var wFc="aC";\r
18713 function AY(b,a){BD[z](this,b,new gF(b));Bx(this);this.Y=qC(b).W();this.Aa=Dx(Cx(b));this.Z=Rz(b);this.Lb=Tz(b);this.kg=nF(b);this.Ma=yy(b);this.Mb=jF(b);this.Jc(a);a=this.H();a.w(this.Z,this.Z.Cq(WN),this.p0b);a.w(this.Z,this.Z.Cq(WN),this.q0b);a.w(this.Aa.Ya(),this.Ma.Yn(KM),this.OP);a.w(this.Aa.Ya(),this.Ma.Yn(W5a),this.OP);a.w(this.Aa.Ya(),this.Ma.Yn(NM),this.OP);a.w(this.Aa.Ya(),this.Ma.Yn(LM),this.OP);this.aa.Goa(b);this.jb=JB(b);this.Ck=VC(b);this.Ck.yu.add(this);this.Cb=sC(b);m(this.b(),wFc)}\r
18714 function xFc(b){yA++;try{yFc(b,k);b.EX[Jq](Wx);b.EX.Hx(0);b.EX.SQ(Infinity);b.ci.qc(h);b.Oq&&b.Oq.Yb()}finally{zA()}}function zFc(b){yA++;try{yFc(b,h);b.EX.Kx(70);b.Oq.Nc();b.ci.qc(k)}finally{zA()}}function yFc(b,a){var c=YA(b.Xja);if(a){b.EX[Nc](c);b.ia.ha(c)}else{b.ia[Nc](c);b.EX.ha(c)}}var AFc="Mail Settings",BFc="Mail Help";\r
18715 function CFc(b,a){yA++;try{var c=b.Z[hq](F8a),d=b.Z[hq](E8a);if(c){var f=new eE(a);Q(f.b(),NEc({id:b.X(Gra),j8a:c}));b.ada.ha(f);Wa(b.b(Gra),b.Z[hq](G8a));b.KLb=Zf();var g=fy(a);b.H().w(g.ud,Fx(VP),b.kUc)}if(d){f=new eE(a);Q(f.b(),DFc(b,d,b.Z));b.ada.ha(f)}if(b.ada.qj()>0){b.jyb=b.Z[hq](I8a);b.jyb||EFc(b);var j=new cF(a);j.Kx(9);b.ada.ha(j);b.ada.qc(h);b.gTa.qc(!d);var n=b.b(eP);n&&b.H().w(n,P,b.V6c)}if(b.Cc())if(b.Z[hq](K8a)){var s=b.b(eP),v=b.b(GO);if(s&&v){Q(s,AFc);Q(v,BFc)}}}finally{zA()}}\r
18716 function EFc(b){b=b.b(Hz);var a=b[x];if(zia in a)aha(a,I);else pma(a,xd);wp(b[x],aR)}var FFc="ven",GFc="vsub";function HFc(b){b.B();return{mqd:b.X(Nt),nqd:b.Ma.db(LM),TCc:b.X(FFc),Z1:b.X(ft),oqd:b.X(GFc)}}function IFc(b,a){var c={};c.q=a;b.JM(a,c);b[Pc](new Rya(c));b.Cb.lf();dE(b.B()).pb(dhb)}\r
18717 function JFc(b,a){if(b.Oq)a();else{b.U8a=new jB;WC(b.Ck);var c=O.S();Vw(c,Br,function(){b.U8a=i;WC(b.Ck);if(!b.Oq){b.Oq=new KFc(b.B(),b);b.EX.ha(b.Oq.NGc());b.H().w(b.Oq,Yu,b.b3c);var d=b.IH.ac(),f=ff(d.Uc(),b.IH);d.Jf(b.Oq,f+1)}a()})}}\r
18718 function DFc(b,a){var c={Z1:b.X(eP),lfc:b.X(xs),zVb:tDc(b.Lb),yVb:b.X(GO),B_b:vDc(b.Z),mfc:VEc,tRa:nD(b.B())};b=AEc({fpa:b.Z[hq](A8a)});return a[mb](/\{\{userEmail\}\}/g,Hi)[mb](/\{\{manageDomainLink\}\}/g,b)[mb](/\{\{settingsLink\}\}/g,uEc(c))[mb](/\{\{helpLink\}\}/g,vEc(c))[mb](/\{\{signOutLink\}\}/g,wEc(c))}function LFc(b,a){return Di(sf(a),function(c){return c!=i})}var MFc="pz pA";\r
18719 function NFc(b){PI[z](this,b,knb,MFc,G(this.lh,this),UVa);this.Lh=TD(b);this.jb=JB(b);if(this.slb=QIa(hF(b),Xz)){b=dG(b);this.qc(b.XR==this.slb);this.H().w(b,cG,this.iqb,k,this)}}function OFc(b){kJ[z](this,pJ,b);this.Fc(Zu);this.P1(ki)}function PFc(b){this.V=b;this.zi=FH(b);this.rca=fD(b);ih(this.zi,kC,this.F3b,k,this)}function QFc(b,a,c){b=b.zi.vz;for(var d=[],f=0;f<b[u];f++){var g=b[f];if(g.md()==wE)if((!a||Qya(a,g.Bb()))&&(!Ke(c)||c==g.Ut()))d[p](g)}return d}\r
18720 function RFc(b,a){var c=b.rca.VEa[a[Wq]]||i;if(c)if(c=jA(b.V,c)){(a=c.JJ(b.V,b,a))&&gQa(b.zi,a);return a}return i}function SFc(b){this.HTc=b}var TFc=" q0CeU";\r
18721 function BY(b){Bx(this);BD[z](this,b,(this.Agb=this.aa.NBb())?new BF(b):new sF(b));this.Ma=yy(b);var a=new gF(b);if(this.Agb){this.ia.so(a);this.ia.U1(new Bm(-2,-2,-2,-2))}else{this.ia.ha(a);this.ia.JXa(5,0,5,5)}this.Aqd=a;this.Rbb=new sE(b);a=new DH(b);b[kq](TC,a);this.zi=a;this.zi.yhc=b.wT.GHb(b);this.CTc=new PFc(b);this.dOc=this.ia.b()[uc]+TFc;this.W7a=new CH(h);ih(this.zi,kC,this.Cza,k,this);eF(this.Aqd,[this.Rbb,this.zi])}var UFc="z9",VFc="toxOdd Aa";\r
18722 function WFc(b,a){var c=a||new U;b=b.tbd;for(var d=b[u],f=0;f<d;f++){var g=b[f];c[R](X,UFc,Gl,g.id,W);oTa({className:VFc,yU:V(g[Dq])},c);c[R](Z)}if(!a)return c[t]()}function XFc(b){AD[z](this,new eE(b));this.E9=hF(b);this.D9=dG(b);this.Cb=sC(b);K(this.b(),Hra);YFc(this);this.O2();Pw(this.H().w(this.E9,OIa,this.iZc).w(this.D9,cG,this.gZc),this.b(),aB,this.mTa)}function YFc(b){for(var a=b.b(),c=[],d=pDc(b.E9),f,g=0;f=d[g];g++)c[p]({id:b.X(f.id),caption:f[Dq]});Q(a,WFc({tbd:c}));b.qc(d[u]>1)}\r
18723 var ZFc="Firebug is known to make ",aGc=" slow unless it is configured correctly.&nbsp;",bGc='">Fix this</a>&nbsp;&nbsp;&nbsp;<span id="link_firebug_hide" idlink tabindex="0" role="link">Hide</span>';function cGc(b,a){var c=a||new U;c[R](ZFc+(Ji+(aGc+(Rt+b.Fy+bGc))));if(!a)return c[t]()}var dGc="Certain GreaseMonkey scripts may interfere with ",eGc=". &nbsp;",fGc='">Fix this</a>&nbsp;&nbsp;&nbsp;<span id="link_bg_hide" idlink tabindex="0" role="link">Hide</span>';\r
18724 function gGc(b,a){var c=a||new U;c[R](dGc+(Ji+(eGc+(Rt+b.Fy+fGc))));if(!a)return c[t]()}var hGc=" is temporarily unable to access your Contacts. You may experience issues while this persists. &nbsp;";function iGc(b,a){var c=a||new U;c[R](Ji+(hGc+(Rt+b.Fy+Ira)));if(!a)return c[t]()}var jGc='">I want it, tell me more!</a>&nbsp;&nbsp;&nbsp;<span id="link_ie_hide" idlink tabindex="0" role="link">Dismiss</span>';\r
18725 function kGc(b,a){var c=a||new U;c[R](Ji+(" runs faster in Google Chrome. &nbsp;"+(Rt+b.Fy+jGc)));if(!a)return c[t]()}function lGc(b,a){b=a||new U;b[R]('Google Mail is now Gmail in the UK. &nbsp;<span id="link_gm_change" idlink tabindex="0" role="link">Change your address to @gmail.com.</span>&nbsp;&nbsp;&nbsp;<span id="link_gm_hide" idlink tabindex="0" role="link">Hide</span>');if(!a)return b[t]()}\r
18726 var mGc=" If this problem persists, try  ",nGc='<a target=_top href="',oGc="reloading",pGc=" the page, ",qGc='<span style="display:',rGc="using  ",sGc="using the  ",tGc=", or using ",uGc=" mode. ",vGc='">Learn More</a>.';function wGc(b,a){var c=a||new U;b=b.FOc+(mGc+(nGc+b.qbd+W+(oGc+(hB+(pGc+(qGc+V(b.xkd)+W+(rGc+(nGc+b.bhd+W+(xH+(hB+(hg+(gB+(sGc+(nGc+b.hEc+W+(Jra+(hB+(tGc+(nGc+b.dMc+W+(Kra+(hB+(uGc+(Rt+b.HK+vGc))))))))))))))))))))));c[R](b);if(!a)return c[t]()}function CY(b){this.Bc=this.Bc=b}\r
18727 function xGc(b){this.Ye=b}function yGc(b){var a=this.B(),c=oD(a);if(c&&!this.AA()){c=c.sa.Ed[1];b=b[y];a=ZCb(a,b);this[r](new fLa(this,0,c,b,a))}}function zGc(){this.AA()||this[r](new TF(this,rH))}function DY(b){kJ[z](this,pJ,b);this.Z=Rz(b);this.Fc(Zu);this.P1(ki);this.VIa=[];Bx(this);this.aa.iib()}function AGc(b,a){var c=ef(b.VIa,b.S9);a=a==3||a==4;b.S9.qc((b.AA()||!c)&&a)}\r
18728 function BGc(b,a){b.li().hy.qc(h);for(var c=0;c<b.VIa[u];c++)b.VIa[c].qc(a);if(b.LI){c=tL(b.B());b.LI.jB(a);AGc(b,c.xc())}}\r
18729 function EY(b){Bx(this);this.Lh=TD(b);this.Aa=Dx(Cx(b));var a=new yPa;b[kq](rH,a);this.sg=a;this.Bd=rD(b);aDb=this.aa.bdb();CGc=this.aa.Qdb();NF[z](this,b);this.Ma=yy(b);this.S4a=ri(Ega);this.mPb=ri(Cga);this.FHb=ri(Dga);this.eWb=ri(Hga);this.OTb=ri(Jga);this.aa.iX();this.Z=Rz(b);this.H().w(this.Z,this.Z.Cq(WN),this.Qxa);this.Lb=Tz(b);this.Jz=RC(b);this.uWc=new EI(this.p4c,15E3,this);this.inb=new Hf;this.Rh=tH(b);this.fc=dC(b);this.fc.Ec();this.kg=nF(b);this.Mb=jF(b);top.js=ba;_GM_getComponent=G(this.JQb,\r
18730 this);_GM_getAndRemoveTearoffData=G(this.fcb,this);_GM_getLabelDataNode=G(this.YFc,this);_GM_handleNavigateEvent=G(this.g4c,this);_GM_invitesDone=G(this.UOc,this);_GM_validateLabelName=G(this.tqd,this);_GM_refreshActivityFooter=G(this.Pdd,this);_GM_openInviteWindow=DGc;_GM_getSSUrl=G(this.IFc,this);_GM_loadSSVer=G(this.BSc,this);a=Number(top.jpgt);var c=Number(qea);if(c>0&&a>0)c>a?dE(b).pb(dkb):dE(b).pb(ekb);Jz(this.Z,915)&&this.sg.Rca(new XFc(b),Pqa,105);lA(b,UF,av);lA(b,bv,vw);lA(b,tr,kP);lA(b,\r
18731 nP,cv);lA(b,FB,dP);try{yA++;Mx().Kh(2,this);this.aa.ZP()}finally{zA()}}var EGc="idlink";function FGc(b,a){if(a[Uc]&&a[Uc](EGc)!=i)return h;return(a=a[A])&&FGc(b,a)}function GGc(b){if(!(b.Y7b<3)){b.Rh.Nxa();var a=Ke(ba.gCurrentContextMenuHandler);if(a!=b.ngb){b.ngb=a;FY(b)}b.ngb||HGc(b)}}function IGc(b,a){b.aa.z2a(a,b.sg)||b.sg.Vr(a,75)}function JGc(b,a){b.jb[bq]({view:wE,search:a})}var KGc="GMAIL_AR",LGc=":44";\r
18732 function MGc(b,a){if(!(b.Jz.qa==1||b.Jz.qa==2)&&tQa(b.zi)){rDc(b.B());ax(KGc,NGc(b),300);b=b.zi.nU.gH(a);Kga(b)}else bA(LGc,function(){MGc(this,a)},6E4,b)}function NGc(b){b=b.Z[hq](b9a);return l[kb](Zf()/1E3-b)}var OGc=":45";function PGc(b){b.cwc=h;if(!b.rY)b.rY=bA(OGc,b.cZc,30,b)}function QGc(b){if(b.rY){cA(b.rY);b.rY=i}if(b.cwc){var a=b.zi.zc(),c=a?a.TO():I;b.XF.Fc(b.aa.wT(c||I));b.aa.Tqb(a)}}function HGc(b){var a=Boolean(ba[ir]&&ba[ir].firebug);if(a!=b.hVb){b.hVb=a;FY(b)}}\r
18733 function RGc(b,a){return vm(b.zi.vz,function(c){var d=c.md();return(d==wE||d==xE)&&c.Toa&&c!=a})}var SGc="Trident",TGc="/p/mail.html";\r
18734 function FY(b){var a=b.aa.Ccb(),c=b.Ma.Oo(FM),d=b.Z[hq](a8a);if(a){c=G(b.Il,b);a.qk=c;qY(b.Rh,a)}else if(b.xVb&1){a={Fy:Yz(b.Lb,106432)};a=new Zz(iGc(a),1,-1);c=G(b.Il,b);a.qk=c;qY(b.Rh,a)}else if(b.hVb&&!b.mPb){a={Fy:Yz(b.Lb,77355)};a=new Zz(cGc(a),1,-1);c=G(b.Il,b);a.qk=c;qY(b.Rh,a)}else if(b.ngb&&!b.FHb){a={Fy:Yz(b.Lb,80253)};a=new Zz(gGc(a),1,-1);c=G(b.Il,b);a.qk=c;qY(b.Rh,a)}else{a=ug()[Db](SGc)!=-1;if(Jz(b.Z,418)&&!b.eWb&&L&&(wg==6||wg==7)&&!a&&!b.Z[hq](z8a)&&UGc(b,c,d)&&!(VGc()||WGc())&&(wg!=\r
18735 6||XGc())){a={Fy:new Sh("http://www.google.com/chrome/intl/"+c+TGc)};a=new Zz(kGc(a),2,-1);c=G(b.Il,b);a.qk=c;qY(b.Rh,a)}else if(Jz(b.Z,1089)&&!b.OTb&&d==Gna&&Mf(c,Vz)&&b.Z[hq](SN)=="googlemail.com"){a=new Zz(lGc(),2,-1);c=G(b.Il,b);a.qk=c;qY(b.Rh,a)}else qY(b.Rh,i)}}var YGc="es-419";\r
18736 function UGc(b,a,c){b=[Gna,Lra];var d=[lpa,ys];return ef([Vz,lpa,YB,Zj,UF,ppa,qpa,it,OL,rH,jt,gP,Dpa,vy,ht,ys,nt,ot,fO,GO,fe,RL,IH,rpa,mpa,uw,yP,WL,npa,opa,kt,HO,us,lt,TL,gt,YGc,NE,PD,Zn,js,mt,DE],a)&&(!ef(b,c)||ef(d,a))}var ZGc="Windows NT 5.0",aHc="Windows 2000";function WGc(){if(Ri){var b=bp[Fc];return Xf(b,ZGc)||Xf(b,aHc)}return k}var bHc="Windows 98";function VGc(){if(Ri)return Xf(bp[Fc],bHc);return k}var cHc="Windows NT 5.1",dHc="Windows XP",eHc="SV1";\r
18737 function XGc(){if(Ri){var b=bp[Fc];return!(Xf(b,cHc)||Xf(b,dHc))||Xf(b,eHc)}return h}var fHc="ivit",gHc="ivem";function DGc(b,a,c){var d=hHc[a];if(d&&!d[Rq])d[Ek]();else{d=new Sh(Rj);d.ka(pd,Mra);d.ka(fHc,a);c&&d.ka(gHc,c);b=xB(b);d=yB(b,d,{width:600,height:640});hHc[a]=d}}function _GM_getComponent(){}function _GM_getAndRemoveTearoffData(){}function _GM_getLabelDataNode(){}function _GM_handleNavigateEvent(){}function _GM_invitesDone(){}function _GM_validateLabelName(){}\r
18738 function _GM_refreshActivityFooter(){}function _GM_getSSUrl(){}function _GM_loadSSVer(){}function iHc(){}function jHc(){}function kHc(b,a){this.Rj=a;pB[z](this,b,35,4)}var lHc="p2",mHc="p4",nHc="Give ",oHc=" to:",pHc='</div><div><input type=text id="',qHc="p0",rHc='"></input></div><table cellpadding="0" class="',sHc='"><tr><td><button id="',tHc="Send Invite",uHc='</button> <span id="',vHc='</span></td></tr></table></div><div id="',wHc="pU",xHc="Preview Invite";\r
18739 function yHc(b,a){var c=a||new U;c[R](X,lHc,wl,mHc,W,nHc+(b.si+oHc),pHc,b.Pw,S,qHc,rHc,ul,sHc,b.nJ,S,tha,W,tHc,uHc,b.dzc,S,Nra,W,V(b.VOc),vHc,b.Ij,S,wHc,jE,xHc,II);if(!a)return c[t]()}var zHc="invites";function AHc(b){kJ[z](this,zHc,b);this.Z=Rz(b);this.Mb=jF(b);this.fc=dC(b);this.Jc();this.H().w(this.Z,this.Z.Cq(VN),this.Tic)}nDc[w].qJ=function $KOa(){Jh(this.Vic,G(this.PKc,this))};\r
18740 nDc[w].PKc=function $LOa(a){a=a[y];if(a.ye()){this.sEc=a.dj();Jh(this.Vic,G(this.QKc,this))}else if(a.hf()==400){this.Bpa=k;this.lvc=h;Jh(this.Wic,G(this.ZUb,this))}else jDc(this,k)};nDc[w].QKc=function $MOa(a){a=a[y];if(a.ye()){this.Bpa=this.sEc!=a.dj();Jh(this.Wic,G(this.ZUb,this))}else jDc(this,k)};nDc[w].ZUb=function $NOa(a){a=a[y];if(a.ye()){this.Ucd=Hi!=Pf(a.dj());jDc(this,h)}else jDc(this,k)};var BHc=/\/b\/[^\/]+/;Bi(O.S(),Xx);_B_prog(93)}catch(e){_B_err(e)}\r
18741 \r
18742 try{H(rY,yH);rY[w].Mga=function $OOa(a){try{return rY.C.Mga[z](this,a)}catch(c){e(c)}};rY[w].WXa=function $POa(a){rY.C.WXa[z](this,a)};rY[w].gma=function $QOa(a,c){if(this.OXb)rY.C.gma[z](this,a,c);else{this.ZLc=a;this.Jed=!!c}};var Uzc,GY=gQ;Ie("gmonkey.info",E('The "gmonkey" module is not officially supported and is subject to change, we will support previous versions for at least 1-month.  Use gmonkey.load(v, callback) to load in the full API where v is the version number of the API you want passed to calback.  Latest set of the bindings is "1.0".  kthxbye  +/\'\\'),void 0);Ie("gmonkey.isLoaded",BDc,void 0);Ie("gmonkey.load",function(b,a){Vw(O.S(),PN,function(){a(GDc(b))})},void 0);Ie("gmonkey.get",GDc,void 0);\r
18743 ih(top,rj,IDc);JDc[w].hf=function $ROa(){return this.O[1]};Ha(JDc[w],function $SOa(){return this.O[t]()});JDc[w].kc=D(ae);H(KDc,pB);KDc[w].Wd=D("quc");H(LDc,pB);LDc[w].Zg=E("Undo relabel");H(sY,xx);F=sY[w];F.HE=B();F.Eua=B();F.Eua.Ka=h;F.Qta=B();F.bNa=B();F.ma=B();F.ma.Ka=h;F.Ba=B();F.Ba.Ka=h;F.D=B();F.D.Ka=h;ODc[w].BNa=function $2Oa(){return this.O[1]};Ha(ODc[w],function $3Oa(){return this.O[t]()});ODc[w].kc=D(ae);H(QDc,Kx);QDc[w].p2c=function $5Oa(a){a=new ODc(a[dq]);this.Fa(Tu,a.BNa());this.Fa(Dra,a.O[2])};H(RDc,Iw);RDc[w].tb=function $6Oa(){var a=this.Aa,c=new QDc(a,this.xf.ud);a.ha(c)};Uw(O.S(),function(b){dD(b).qo(new RDc(b))});H(uY,UB);yx(sY,uY);F=uY[w];F.a9c=function $7Oa(){Q(this.b(sQ),ZDc({enb:yDc(this.Z),fnb:zDc(this.Z)}));var a=this.Z;if(a[hq](Mz)&&a[hq](A8a))Q(this.b(NL),tEc({fpa:a[hq](A8a)}))};\r
18744 F.ma=function $8Oa(){uY.C.ma[z](this);for(var a=SEc(this),c=[],d=0;d<a[u];d++)c[d]=new MDc(a[d]);this.aa.Eua(c);a={};a[1]=[];a[2]=[];a[3]=[];for(d=0;d<c[u];d++)a[c[d].Hm[0]][p](c[d][cr]);c=TEc(this,this.aa.Qta(4));d=c[u]>0;Q(this.b(),rEc(XEc(this,a,d)));this.H().w(this.b(ki),P,this.U6c);var f=this.b(Uu);f&&this.H().w(f,P,this.Zpb);this.aa.ma();if(a[3][u]+a[2][u]>1){this.p1=new co(this.W());this.p1.Pb(this.b(FE));this.p1.Nn(h);this.p1.ma()}if(d){this.rD=new co(this.W());this.rD.Pb(this.b(LD));this.rD.Nn(h);\r
18745 for(a=0;a<c[u];a++)this.rD.ha(c[a],h);this.rD.ma();c=TEc(this,this.aa.bNa(LD));for(a=0;a<c[u];a++)this.H().w(this.rD,Wn,c[a])}};F.D=function $9Oa(){this.aa.D();if(this.p1){this.p1.D();this.p1=i}if(this.rD){this.rD.D();this.rD=i}uY.C.D[z](this)};F.Ba=function $$Oa(){this.aa.Ba();this.p1&&this.p1.Ba();this.rD&&this.rD.Ba();uY.C.Ba[z](this)};F.U6c=function $aPa(a){if(!a[dd]&&!a[Bc]&&!a[Eb]){QF(this,jP);this.jb[bq]({view:dJ});a[zb]()}};F.Zpb=function $bPa(a){if(Jz(this.Z,931))a[y].href+=Ora;dE(this.B()).pb(Wjb)};H(vY,xx);F=vY[w];F.D=B();F.D.Ka=h;F.Kzc=B();F.Kzc.Ka=h;F.ma=B();F.ma.Ka=h;F.edc=B();F.edc.ic=h;F.Goa=B();F.Goa.Ka=h;F.y2a=B();F.JM=B();F.JM.Ka=h;F.cOa=B();F.cOa.ic=h;F.Txb=B();F.Txb.ic=h;H(wY,BD);wY[w].ma=function $lPa(){wY.C.ma[z](this);var a=this.Z[hq](c9a);a?aFc(this,a):this.H().w(this.Z,this.Z.Cq(c9a),this.cUb)};wY[w].cUb=function $mPa(a){this.H().hb(this.Z,this.Z.Cq(c9a),this.cUb);aFc(this,a[dq])};wY[w].D=function $nPa(){sA(this,this.iga);this.iga.D();wY.C.D[z](this)};H(xY,xx);F=xY[w];F.sNa=B();F.D=B();F.D.Ka=h;F.wva=B();F.wva.Ka=h;F.zT=B();F.zT.Rn=h;F.N2=B();F.N2.Ka=h;F.vza=B();F.vza.ic=h;F.jjb=B();F.jjb.ic=h;H(dFc,bFc);var CHc=[wu,Es];F=dFc[w];F.D=function $vPa(){this.YL()};F.YL=function $wPa(){if(this.waa){nh(this.waa,CHc,this.QUb,k,this);Kf(this.Ud);this.waa=this.Ud=this.fM=i}this.VUa=i};\r
18746 F.BEa=function $xPa(a){if(a!=this.VUa){this.YL();this.VUa=a;zY(this.ci,this.id,k);if(a.Fbc){var c=kA(this.ci.B(),a.Fbc);Zw(c,function(d){if(this.VUa==a){this.waa=d;if(this.fM=d.dSb()){Sp(this,this.fM[pr]);this.Dna.lM(this[qr]);zY(this.ci,this.id,h)}(this.Ud=d.zT())&&gFc(this.ci,this.Ud);ih(this.waa,CHc,this.QUb,k,this)}},this)}}};\r
18747 F.QUb=function $yPa(a){if(a[Zb]==wu){a=!this.fM;if(this.fM=this.waa.dSb()){Sp(this,this.fM[pr]);this.Dna.lM(this[qr])}else a=!a;a&&zY(this.ci,this.id,!!this.fM)}else if(a[Zb]==Es){a=this.Ud;this.Ud=this.waa.zT();gFc(this.ci,this.Ud);Kf(a)}};F.XJc=function $zPa(){var a=this.ci.Qe();this.fM&&this.fM[Pc](a)};zx(eFc,xY);eFc[w].sNa=function $APa(){return this.o9b=new dFc(this.kj)};eFc[w].D=function $BPa(){Kf(this.o9b)};eFc[w].N2=function $CPa(a){this.o9b.BEa(a)};H(yY,eE);yx(xY,yY);F=yY[w];F.wva=function $DPa(){zY(this,Wu,k);this.aa.wva()};F.Vh=function $EPa(){this.wa=this.W()[Qb](T);Q(this.wa,sFc(this,tFc(this)))};F.iqb=function $FPa(a){var c=this.jb.zc();fFc(this,a.knb,c);this.aa.N2(a.knb,c)};F.Cza=function $GPa(a){var c;c=dG(this.xk.B()).XR;fFc(this,c,a);this.aa.N2(c,a)};F.B=function $HPa(){return this.xk.B()};F.CRb=D("xk");var DHc="ny";F.IGc=D(DHc);\r
18748 F.ma=function $KPa(){this.ny=this.b(Bpa);this.xk.B().eN()&&Fh&&vg(vYa)&&this.Cb.lf();var a=this.b(xs),c=this.b(kD);Pw(Pw(this.H(),a,aB,this.SZc),c,aB,this.EZc).w(this.ny,Zi,this.Bqb);for(a=0;a<this.CW[u];a++){c=this.CW[a];c.Dna=vFc(this,c.id,c.Si,c[Pq])}L&&yQa(this.ny,Mna)};F.Ba=function $LPa(){yY.C.Ba[z](this);this.ny&&BQa(this.ny)};F.L=function $MPa(){yY.C.L[z](this);this.xk=this.ny=i;for(var a=0;a<this.CW[u];a++){var c=this.CW[a];if(c.Dna){Kf(c.Dna);c.Dna=i}}this.aa.D()};F.SZc=function $NPa(){this.xk.iba()};\r
18749 F.EZc=function $OPa(){DD()?vE(this.B()):this.xk.Ama()};F.uo=function $PPa(a){pa(this.ny,a)};F.Qe=function $QPa(){return Pf(this.ny[q])};F.Ksa=function $RPa(){var a=this.ny;a[Ek]();a[Fk]()};F.Bqb=function $SPa(a){if(!this.aa.vza(a))if(a[Sb]==13||Jg&&a[Sb]==3){uFc(this);a[Ec]();a[zb]()}};F.D6c=function $TPa(){var a=this.Qe();IFc(this.xk,a)};F.G6c=function $UPa(){var a=this.Qe(),c=this.xk;a="http://www.google.com/search?client=gmail&rls=gm&q="+Qf(a);xB(c.B()).Yo(a,{target:AB},h);dE(c.B()).pb(ehb)};\r
18750 F.koc=Pra;F.loc="Search the Web";F.moc="Show search options";F.Ync=wna;H(AY,BD);yx(vY,AY);Nx(Mx(),10,function(b,a){return new AY(b.B(),a)});F=AY[w];F.jyb=h;\r
18751 F.Jc=function $VPa(a){var c=new gF(this.B());c.qc(k);this.sHa=c;c=new gF(this.B());c.qc(k);this.ada=c;c=this.B();var d=new uY(c);this.gTa=new wY(c,d);this.hBd=i;c=new eE(this.B());Q(c.b(),WDc({id:this.X(Hz),si:Ji}));c.Ql(158);c.Kx(70);this.oTc=c;this.ci=new yY(this);this.Xja=new ZA(this.B(),1);c=this.B();tH(c).cCa(this.Xja);this.EX=new gF(c);this.IH=new rF(c);d=this.B();eF(this.IH,[this.oTc,this.EX]);this.EX.ha(this.ci);c=this.ia;eF(c,[this.ada,this.gTa]);var f=[this.sHa,this.IH];if(a>0){d=new gF(d);\r
18752 eF(d,f);var g=this.B();f=new cF(g);f.Ql(a);var j=new cF(g);j.Ql(a);a=new rF(g);eF(a,[f,d,j]);c.ha(a)}else eF(c,f);c.ha(YA(this.Xja))};F.wh=function $WPa(a){a.eg&&top[Ic][mb](top[Ic][Yc][Cc](Lj)[0])};var EHc='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="',FHc='", sizingMethod="crop")',GHc="top left",HHc="Z4b7Xb",IHc="GHl1cf",JHc="Rgky9";\r
18753 F.URa=function $XPa(){if(this.Cc()&&this.jyb)if(!this.aa.edc()){var a;a=this.B();var c=this.Z[hq](l8a);if(c===undefined){mh(this.Z,this.Z.Cq(l8a),this.URa,k,this);a=I}else{var d=this.Z[hq](N8a);d===undefined&&mh(this.Z,this.Z.Cq(N8a),this.URa,k,this);var f=this.kg.il();if(f)a=d||f[c?1:0];else{dE(a).pb(bkb);dE(a).zF(ckb,Xj.xc());a=I}}if(a&&a!=this.dAc){c=this.b(Hz);d=a;f=c[x];if(L&&!vg(aj))aha(f,EHc+d+FHc);else{pma(f,dv+d+xh);pp(f,GHc);f.backgroundRepeat=Qra}this.dAc=a;m(c,UDc);if(this.Z[hq](N8a))K(c,\r
18754 HHc);else this.Z[hq](l8a)?K(c,IHc):K(c,JHc)}}};F.p0b=function $YPa(){this.Cc()&&this.Z[hq](J8a)&&this.ci.wva()};\r
18755 F.OP=function $ZPa(){if(this.Cc()){yA++;try{for(var a=this.sHa;a.qj()>0;){var c=a.rb(0);a[Nc](c);c.D();this.rjc=i}this.B();var d=LFc(this,this.aa.y2a(this.Z));Ff(d,this.pFb,this);var f;var g=this.aa.Txb();f=g===undefined?this.Ma.nf(KM):g;if(f&&!this.rjc){var j=this.Y[Qb](T);Q(j,LEc(HFc(this)));this.pFb(j);this.rjc=j;var n=this.b(FFc),s=this.b(ft);this.H().w(n,P,this.l9c);this.H().w(s,P,this.m9c)}a.qc(a.qj()>0)}finally{zA()}}};\r
18756 F.q0b=function $_Pa(){if(this.Cc()){var a=this.B();this.Z[hq](WN)&&this.Z[hq](Mz)&&CFc(this,a)}};F.kUc=function $0Pa(){var a=Zf();if(!(a-this.KLb<=3E4)){var c=this.b(Gra),d=this.Z[hq](F8a);if(c&&d){d=new Sh(d);c.src=bi(d)[t]();this.KLb=a}}};F.pFb=function $1Pa(a){var c=this.B(),d=new cF(c);d.Kx(5);this.sHa.ha(d);c=new eE(c);c.b()[o](a);this.sHa.ha(c)};F.l9c=function $2Pa(){var a=new lF(this.B());a.Yc(KM,0);kF(this.Mb,a);a[Mb]()};F.m9c=function $3Pa(a){this.jb[bq]({view:dJ});a[zb]()};\r
18757 F.ma=function $4Pa(){AY.C.ma[z](this);this.H().w(this.kg,YD,this.URa);this.q0b();this.URa();this.p0b();this.OP();var a=this.b(Hz);a&&this.H().w(a,P,this.T2c);xFc(this);this.aa.ma()};F.T2c=function $5Pa(){QF(this,icb);this.jb[bq]({view:wE,search:this.Z.bH()})};F.JM=function $6Pa(a,c){this.aa.JM(a,c)};F.Qh=function $7Pa(a){switch(a){case Q4a:this.ci.Ksa();break}};F.Ksa=function $8Pa(){this.ci.Ksa()};F.sK=function $9Pa(){if(this.U8a)return[this.U8a];return[]};F.b3c=function $$Pa(){xFc(this)};\r
18758 F.iba=function $aQa(a){var c=this;JFc(this,function(){c.Oq.iba(a);zFc(c)})};F.Ama=function $bQa(a,c,d,f,g,j,n,s,v){var C=this;JFc(this,function(){C.Oq.Ama(a,c,d,f,g,j,n,s,v);zFc(C)})};F.sA=function $cQa(){if(this.Oq){this.Oq.sA();xFc(this)}};var KHc="in:anywhere ";F.pda=function $dQa(){if(!(this.Oq&&this.Oq.pda())){var a=KHc+this.ci.Qe();IFc(this,a)}};Ip(F,function $eQa(a,c,d){QF(this,XO);a=this.jb[bq]({view:wE,search:a});if(c&&d)a.zn()?c[z](d,a.Tga()):this.H().w(a,ki,G(this.k4c,this,c,d))});\r
18759 F.k4c=function $fQa(a,c,d){if(d[y].zn()){a[z](c,d[y].Tga());this.H().hb(d[y],ki)}};F.tGc=D("gTa");F.D=function $hQa(){AY.C.D[z](this);this.aa.D();this.Ck.yu[Pb](this);this.DCd=this.CDd=this.wEd=this.ICd=this.Oq=this.ci=this.Xja=i;ba[Oma](this.Ly)};var LHc="in:trash",MHc="in:spam",NHc="cfl_origin";\r
18760 F.wL=function $iQa(a){if(!this.aa.cOa(a)){var c=a.md();if(c==wE||c==YK||c==xE){var d;if(a.Bb)d=a.Bb();c=this.Oq&&this.Oq.uD;switch(d.Ga()){case Py:this.ci.uo(cra+JC(d.Pt()));this.sA();break;case az:case Jy:this.ci.uo(d.Qe());this.sA();break;case Zy:this.ci.uo(LHc);this.sA();break;case Yy:this.ci.uo(MHc);this.sA();break;case Oy:case ul:this.ci.uo(I);c&&c.Bb()&&c.Bb().Ga()!=d.Ga()&&this.sA();if(!c)if(d.Ga()==Oy)this.iba();else{c=d;this.Ama(k,undefined,d.Bta(),d.uy(),d.kC(),d.mi(),d.Dta(),d.Cta(),c.Rc(NHc)||\r
18761 I)}c=this.Oq.uD;c.Iic(d);if(a.Zn){var f=a.Zn().J();c.H6b(f,a)}break;default:this.ci.uo(I);this.sA()}if(!c)if(d.Ga()==Oy)this.iba(d);else if(d.Ga()==ul){c=d;this.Ama(k,undefined,d.Rc(AN),d.Rc(xN),d.Rc(yN),d.Rc(zN),d.Rc(BN),!!d.Rc(CN),c.Rc(NHc)||I)}}else{this.ci.uo(I);this.sA()}}};F.V6c=function $jQa(a){QF(this,jP);this.jb[bq]({view:dJ});a[zb]()};_B_prog(94)}catch(e){_B_err(e)}\r
18762 \r
18763 try{H(NFc,PI);Mx().Ug(2,function(b){b=b.B();Jz(Rz(b),1033)||sH(b).Rca(new NFc(b),bR,102)});F=NFc[w];F.iqb=function $kQa(a){this.qc(a.knb==this.slb)};F.TE=function $lQa(a){this.zm(a.md()==QO)};F.lh=function $mQa(a){a[dd]||a[Bc]?AFa(this.Lh,a[Bc]):this.Zmb()};F.Zmb=function $nQa(){QF(this,ZO);this.jb[bq]({view:QO})};F.B=function $oQa(){return this[uq]()};H(OFc,kJ);H(PFc,Jf);PFc[w].L=function $pQa(){PFc.C.L[z](this);nh(this.zi,kC,this.F3b,k,this)};PFc[w].F3b=function $qQa(a){var c=a.iAc;a=a.rnb;if(c&&c.md()==YK){var d=c.Bb();c=QFc(this);for(d=0;d<c[u];d++){var f=c[d];f.tD=i;f.Uq.tD=i}}if(a&&a.md()==YK){d=a.Bb();f=i1a(this.V,d,a.nG);c=QFc(this,d,f);(c=c[u]>0?c[0]:RFc(this,{view:wE,search:d,page:f}))&&lDc(c,a)}};H(SFc,xx);SFc[w].NBb=E(h);SFc[w].NBb.Vd=h;H(BY,BD);yx(SFc,BY);var OHc=new CH(k,"j7diG");BY[w].L=function $sQa(){BY.C.L[z](this);this.CTc.D()};BY[w].i4a=function $tQa(a){if(this.g2b){var c=this.W7a,d=this.Rbb,f=c.kFc&&!!Ay(this.Ma,DM);if(f!=d.Nm){d.Nm=f;Ua(d.ia.b()[x],f?I:xd)}d=this.ia;f=d.b();if(!this.Y7||c.NY!=this.Y7.NY){m(f,this.dOc+J+c.NY);this.Agb&&d.LXa(c.LWa)}if(this.Agb){d.U1(c.Fad);if(!this.Y7||c.v4a!=this.Y7.v4a||c.LWa!=this.Y7.LWa)DF(d,c.v4a,c.LWa)}this.g2b=k;this.Y7=this.W7a}BY.C.i4a[z](this,a)};\r
18764 BY[w].Cza=function $uQa(a){if(a=a.rnb){var c=a.yK?a.yK():OHc;this.W7a=c;if(!this.Y7||this.Y7.minWidth!=c.minWidth){var d=this.ia;d.jCa(c.minWidth||0);d.Ui(vA)}this.g2b=h;this.Rbb.wL(a)}};H(XFc,AD);XFc[w].mTa=function $vQa(a){for(var c=pDc(this.E9),d,f=0;d=c[f];f++)if(Zg(this.b(d.id),a[y])){this.D9[Lk](d);break}this.Cb.lf()};XFc[w].iZc=function $wQa(){YFc(this)};XFc[w].gZc=function $xQa(){this.O2()};var PHc="z8";XFc[w].O2=function $yQa(){for(var a=this.D9.XR,c=pDc(this.E9),d,f=0;d=c[f];f++){var g=this.b(d.id);g&&hm(g,PHc,d==a)}};H(CY,HF);F=CY[w];F.ska=B();F.ska.Ka=h;F.gua=function $AQa(){return Q3a};F.gua.Vd=h;F.Qs=E(k);F.Qs.ic=h;F.Il=E(k);F.Il.ic=h;F.Ccb=E(i);F.Ccb.ic=h;F.rz=E(k);F.rz.ic=h;F.bdb=E(9);F.bdb.Vd=h;F.Qdb=E(9);F.Qdb.Vd=h;F.q7a=E(i);F.q7a.ic=h;F.ZP=B();F.ZP.Ka=h;F.a3c=B();F.a3c.Ka=h;F.LCa=B();F.LCa.ic=h;F.D=B();F.D.Ka=h;F.iX=B();F.iX.Ka=h;F.dOa=B();F.dOa.ic=h;F.dgb=B();F.dgb.ic=h;F.s4=B();F.s4.Rn=h;F.Tqb=B();F.Tqb.Ka=h;F.z2a=B();F.z2a.ic=h;F.Umb=B();F.Umb.Ka=h;H(xGc,xx);xGc[w].iib=function $TQa(){var a=this.Ye.aha().b();this.Ye.H().w(a,Xi,yGc);this.Ye.H().w(a,Yi,zGc)};xGc[w].iib.Vd=h;H(DY,kJ);yx(xGc,DY);F=DY[w];F.ikd=h;F.dua=D(nFc);F.yGc=D(Hpa);F.BGc=D("S9");F.DGc=D("itb");F.CGc=D(xe);\r
18765 F.fvc=function $ZQa(){var a=this.B();yA++;this.itb=new HY(a);this.ha(new TA(a,this.itb));this.iI=new NS(a);this.ha(this.iI);this.LI=new IY(a);this.ha(this.LI);this.bM=Mx().Gn(12,a,this.iI);this.ha(this.bM);this.S9=new JY(a);this.ha(this.S9);this.VIa[p](this.iI,this.bM,this.S9);Mx().Kh(30,this);a=oD(a);this.H().w(a.sa,ii,this.xo);a=tL(this.B());this.H().w(a,sL,this.vZc);rAa(this.Z,this.H(),G(this.xo,this));this.xo();BGc(this,this.AA());zA()};\r
18766 F.yka=function $_Qa(a){yA++;DY.C.yka[z](this,a);this.xo();BGc(this,this.AA());zA();dE(this.B()).pb(this.AA()?Jhb:Khb)};F.vZc=function $0Qa(a){this.xo();AGc(this,a.tm)};F.xo=function $1Qa(){var a=this.B();a=oD(a);this.AA()||!this.ikd||!a?this.Fc(Zu):this.Fc(a.sa.wGc())};F.Qh=function $2Qa(a){a==U4a&&this.itb[Ek]()};var aDb,CGc;H(EY,NF);yx(CY,EY);var hHc=[],QHc=L;F=EY[w];F.Y7b=4;F.CRb=D("xk");F.iZ=function $4Qa(){var a=new Sh(top[Ic]);a.Of()[Pb](KD);if(!this.jb.SH())switch(Zh(a,pd)){case JD:this.jb[bq]({view:QO,uri:a});break;case TO:a=Zh(a,wz);var c={view:dJ};if(a)c.fk=a;this.jb[bq](c);break;default:(a=aza(Sy,a.Of()))||(a=this.Z.bH());JGc(this,a)}};\r
18767 F.L=function $5Qa(){this.aa.D();if(this.bp){this.bp.D();this.bp=i}try{yA++;Mx().Kh(3,this)}finally{zA()}EY.C.L[z](this);if(this.rY){cA(this.rY);this.rY=i}if(this.tma){this.tma.D();this.tma=i}if(this.Usa){this.Usa.D();this.Usa=i}if(this.hrb){this.hrb.D();this.hrb=i}if(this.qxa){this.qxa.D();this.qxa=i}};var RHc="qk qa",SHc="Inbox (8888)",THc="Starred (XXXX)",UHc="Chats (XXXX)",VHc="Drafts (8888)",WHc="Spam (8888)";\r
18768 F.i7=function $6Qa(){EY.C.i7[z](this);var a=this.B(),c=this.ia,d=this.B();d=new BY(d);this.zi=d.zi;this.jb=JB(a);this.jb.na=this;this.D9=dG(a);this.H().w(this,LF,this.KC);this.H().w(this,RF,this.bza);this.H().w(this,Wx,this.X6b);this.H().w(this,vA,this.X6b);this.H().w(this,Sz,this.Gqb);this.H().w(this,cy,this.SYc);this.H().w(this,Od,this.m7c);this.H().w(this,kR,this.g7c);this.H().w(this,tQ,this.iob);this.xf=fy(a);var f=this.xf.ud;this.H().w(f,Fx(Bz),this.arb);this.H().w(f,Fx(Rra),this.U2c);this.H().w(f,\r
18769 Fx(Yx),this.N1c);this.H().w(UC(RC(a)),aD,this.NYc);c.jCa(780);f=c.b();L?this.H().w(f,Vea,this.K6c):this.H().w(f,fj,this.LC);this.xk=Mx().Gn(10,this,CGc);c.ha(this.xk);this.IH=this.aa.q7a(a)||new rF(a);c.ha(this.IH);if(aDb>0){c=new cF(a);c.Ql(aDb);this.IH.ha(c)}c=qC(iA(this.B())).W();f=c.ba(PJ,RHc);c.cb()[Lc][o](f);for(var g=[knb,knb,SHc,THc,UHc,E7a,VHc,x7a,WHc,LN,wN],j=[],n=0;n<g[u];n++)j[p](g[n]);Q(f,j[kd](sl));g=f[xk]+Eva(f)[Ck]-13;c[ad](f);c=g+18;if(c>tnb)tnb=c;c=new mJ(a);f=this.sg;f.s0.set(sw,\r
18770 c);f.F8a=sw;this.IH.ha(c);this.D9.H8=c;this.Zub=new gF(a);this.IH.ha(this.Zub);if(CGc>0){c=new cF(a);c.Ql(CGc);this.IH.ha(c)}this.Zub.ha(d);Vw(O.S(),aJ,this.Hpb,this,h);Vw(O.S(),EO,this.Zsb,this,h);QHc&&bA(LGc,this.Nmd,5E3,this)};F.Zsb=function $7Qa(){var a=this.B(),c=this.aa.s4(a);c||(c=new KY(a));c.dk(this);this.bp=c;this.H().w(this,UF,c.h7c,k,c);this.H().w(this,rH,c.Q1c,k,c)};\r
18771 F.Hpb=function $8Qa(){var a=this.V;this.I5=new LY(a);this.Zub.ha(this.I5);this.H().w(this,Sra,this.Nqb);this.H().w(this,Tra,this.yTa);this.Usa=new XHc(a);this.hrb=new YHc(a.J(XC),dE(a));this.aa.LCa();try{yA++;Mx().Kh(11,this.B())}finally{zA()}};F.zc=function $9Qa(){return this.zi?this.zi.zc():i};F.wQb=D("zi");F.Xta=function $aRa(){return this.zi.Xta()};F.b3a=function $bRa(a){EY.C.b3a[z](this,a);this.Rh.Ox()};F.BHb=function $cRa(){QGc(this)};\r
18772 F.sEa=function $dRa(a){QF(this,Obb);var c=0;if(this.CP)c=this.CP.mg;if(!this.aa.rz(c,a)){a=this.zi.zc();if(c==15){c=this.CP.VAb;if(c.X9){a=this.zi.zc();a.md()==YK&&a.Ena(c)}else this.jb[bq](c);if(c.cx==1&&!this.aa.dgb())this.fc[Wp](Ura);else c.cx>1&&this.fc[Wp](Vra)}else{c=new LDc(this.B());c.IFa=h;kF(this.Mb,c);c[Mb]();a.md()==YK&&a.sOa()?a.Sod():this.zi[Sq]()}}};var ZHc="CLEAR_VIEW_CACHE";\r
18773 F.spb=function $eRa(a){var c=a.jna,d=i;switch(c){case P4a:if(a.ZH[dd])AFa(this.Lh);else{QF(this,ZO);this.jb[bq]({view:QO})}dE(this.B()).pb(Sgb);break;case V4a:d=G7a;break;case W4a:d=I7a;break;case X4a:d=Q3a;break;case Y4a:d=R3a;break;case Z4a:d=F7a;break;case h5a:var f=a.ZH[y];if(f&&f[Uc]&&f[Uc](Lna)){a.ZH[zb]();return}this.xB.lf();pD(this.B())&&pD(this.B()).wbb();break;case a5a:if(DD())vE(this.B());else if(Jz(Rz(this.B()),832))this.D9[Lk](hF(this.B()).jAa.contacts);else{QF(this,fcb);this.jb[bq]({view:SO})}break;\r
18774 case sM:(f=this.W().b(HBa))&&this.sEa(f[Uc](C9a));break;case n5a:if(!(L&&wg<7&&this.zi.zc().md()==eab)){if(!this.tma)this.tma=new UG(this.B());this.tma.Nc()}break}if(c==ZHc){hQa(this.zi);zLa(this.Aa.g1,h);f=h}else f=k;if(!f)if(!Mx().Gn(4,this.zi.zc(),c,a.ZH)){if(d!=i){QF(this,RTa);JGc(this,d)}this.zi.Qh(c,a.ZH);this.xk.Qh(c,a.ZH);pH(this.sg).Qh(c,a.ZH);this.bp&&this.bp.Yb()}};F.g4c=function $fRa(a){a=yh(a);var c=a[Pc];if(c)Ip(a,Hy.f_(c));if(c=a[Wq])Gp(a,CB.i3a[c]);this[bq](a)};F.SH=function $gRa(a){return this.zi.SH(a)};\r
18775 F.gH=function $hRa(a){return this.zi.gH(a)};fp(F,function $iRa(a){this.aa.Umb(a);this.I5&&this.I5.ska();if(this.bp){this.bp.Yb();this.bp.Jac()}var c=this.zi[bq](a);this.aa.ska(a);return c});F.KC=function $jRa(){this.bp&&this.bp.Yb()};F.K6c=function $kRa(a){a[dd]&&FGc(this,a[y])&&a[zb]()};F.LC=function $lRa(a){if(a[dd]&&FGc(this,a[y])){a[zb]();this.xB.lf()}};F.bza=function $mRa(a){(a=RGc(this,a[Wq]))?a.kJ():JGc(this,this.Z.bH())};F.fqb=function $nRa(){this.Y7b=NBa(this.zi.sK());GGc(this);this.Qxa()};\r
18776 F.Qxa=function $oRa(){if(!this.Zha&&this.zi.zc()){this.Zha=h;this.UH();WC(this.dda)}};\r
18777 F.UH=function $pRa(){EY.C.UH[z](this);var a=this.B(),c=O.S(),d=a.J(Xx);ADc(d);this.zi.cGb=h;Ww(c,aJ);Ww(c,OL);Ww(c,OD);if(JEa(a))if(Jz(this.Z,1074)){IGc(this,new OFc(a));d=Ww(c,fP);Zw(d,function(){(new aIc(this.B())).wc()},this)}else{IGc(this,new DY(a));d=Ww(c,VP);Zw(d,function(){(new bIc(this.B())).wc()},this)}if(jga){d=Ww(c,JD);Zw(d,function(){LH()&&GQa(a)})}this.Z[Bq](5007)&&!this.Ma.db(sN)&&Ww(c,QN);Mx().Kh(4,a)};\r
18778 var cIc="You have been signed out of this account.\n\nThis may have happened automatically because another user signed in from the same browser. To continue using this account, you will need to sign in again. This is done to protect your account and to ensure the privacy of your information.",dIc='You have been signed out of this account.\n\nThis may have happened automatically because another user signed in from the same browser. To continue using this account, you will need to sign in again.\n\nIf you were composing a message, you can copy and paste the text of the message into another application, such as a text editor. When you\'re done, click "Sign out" and then sign in again to finish composing your message.';\r
18779 F.Epb=function $qRa(){var a=this.zi.zc();if(!a||!a.Bo(k)&&!a.gY()){a&&a.Df();this.fc[Wp](cIc);Na(top,vDc(this.Z))}else this.fc[Wp](dIc)};F.Qs=function $rRa(a){EY.C.Qs[z](this,a);if(!this.aa.Qs(a))if(bCa(a)){var c=a.SU?1:0;a=new Zz(a.Wd(),c,i,a.vH(),a.QE());c=G(this.Il,this);a.qk=c;c=this.Rh;c.Vrb[p](a);c.qa=1;GGc(this)}};var eIc="Some ",fIc=" features have failed to load.",gIc=" features have failed to load due to an Internet connectivity problem.",hIc="?ui=html";\r
18780 F.FTa=function $sRa(a,c,d){var f;switch(d){case 0:this.Epb(i);return;case 3:f=this.zi.y1b.J(c);this.aa.dOa()||MGc(this,f);return;case 1:f=eIc+(Ji+fIc);break;case 2:f=eIc+(Ji+gIc);break}a=Uh(new Sh(Mj),I);c=xH==a.ul?xd:I;d=(new Sh(a)).Pr(xH);f={FOc:f,qbd:a[t](),xkd:c,bhd:d[t](),hEc:Era,dMc:hIc,HK:Yz(this.Lb,99541)};if(!this.qxa||!this.qxa.Ib())this.qxa=FC(iA(this.B()),wGc(f))};F.NYc=function $tRa(){for(var a=0;a<hHc[u];a++){var c=hHc[a];c&&!c[Rq]&&c[Xk]()}};F.SYc=function $uRa(){this.xk.pda()};\r
18781 F.m7c=function $vRa(){this.xk.iba()};F.g7c=function $wRa(a){this.xk.Ama(a[wq],a.fEc,a.sLc,a.O5,a.nt,a.dq)};F.yTa=function $xRa(a){var c=this.B();if(c=oD(c)){a.wec?c.sa.mba():c.sa.nba();c=this.sg.Hp(pJ);c.Wq.jB(a.wec);c.Wq[r](hJ)}};F.Nqb=function $yRa(a){switch(a[jr]){case 0:this.xk.iba();break;case 1:this.xk.Ksa();break}};\r
18782 F.arb=function $zRa(a){var c=new aAa(a[dq]);a=c.O[1];if(c.O[2]!=hea)this.aa.dOa()||MGc(this,void 0);else if(a!=ti)(c=c.O[5])&&this.Usa&&this.Usa.Eid(a,c);else c.O[4]&&this.kg&&oDc(this.kg,c.O[4])};F.U2c=function $ARa(a){var c=a[dq][1];if(tQa(this.zi)){rDc(this.B());bA(LGc,function(){Na(top,c)},0)}};F.sqb=B();F.X6b=function $CRa(a){PGc(this);var c=this.zi.zc();this.xk.wL(c);this.I5&&this.I5.wL();a.FV&&this.D9.BEa(a.FV);pH(this.sg).TE(c);this.Qxa();Mx().Kh(110,c)};F.cZc=function $DRa(){this.rY=i;QGc(this)};\r
18783 F.iob=function $ERa(a){a.q9==this.zi.zc()&&PGc(this)};F.uka=function $FRa(a){EY.C.uka[z](this,a);for(var c=0;c<a.Ti[u];c++)this.inb.set(a.Ti[c],1);this.uWc.Pfa()};F.p4c=function $GRa(){for(var a=this.zi.vz,c=[],d=0;d<a[u];d++){var f=a[d];if((f.md()==wE||f.md()==xE)&&f.Toa)c[p](f)}for(a=0;a<c[u];a++){d=c[a];d.Bb().lba(this.inb)&&mDc(d)}this.inb[bc]()};var iIc="cache_hide",jIc="firebug_hide",kIc="bg_hide",lIc="ie_hide",mIc="gm_change",nIc="gm_hide";\r
18784 F.Il=function $HRa(a,c){if(!this.aa.Il(a))if(a==Wra)this.sEa(c);else if(a==Mra){dE(this.B()).pb(Mhb);DGc(this.B(),0,[c])}else if(a==Xra){QF(this,W0a);this.jb[bq]({view:YK,search:this.aa.gua(),BXa:c,zz:0,Iba:[]})}else if(a==Yra){a=this.zi.zc();var d=a.md();if(d==YK)a.oI(c);else d==QO&&a.oI()}else if(a==iIc){this.S4a=h;oi(Ega);FY(this)}else if(a==jIc){this.mPb=h;oi(Cga);FY(this)}else if(a==kIc){this.FHb=h;oi(Dga);FY(this)}else if(a==lIc){this.eWb=h;oi(Hga);FY(this)}else if(a==mIc){c=dC(this.B());Na(eC(c).top,\r
18785 "http://mail.google.com/mail/googlemail/rebrand")}else if(a==nIc){this.OTb=h;oi(Jga);FY(this)}else a==frb&&this.jb[bq]({view:dJ,fk:c})};F.tqd=function $IRa(a){return PC(KC(this.B()),a)};F.IFc=function $JRa(){return cJa(this.kg,this.kg.dX.x4)};F.BSc=function $KRa(a){this.kg.pQ=a;a=this.kg;a.dX.x4!=a.pQ&&bJa(a)};var oIc="Refreshing last activity footer";F.Pdd=function $LRa(){var a=new zD(this.xf.ud);a.bD(k);a.wl(h);a.Ne(mB);a.OW(k);a.Ua(pd,Br);a.Se(oIc);a[Mb]()};\r
18786 F.UOc=function $MRa(a,c,d){hHc[d][Xk]();hHc[d]=i;a=new KDc(this.B(),a);kF(this.Mb,a);a[Mb]()};F.Gqb=function $NRa(a){DGc(this.B(),a.q9,a.Qza)};F.Nmd=function $ORa(){if(this.testingEnabled)FY(this);else{this.uda=new nDc(this.Mmd,this);this.uda.qJ()}};F.Mmd=function $PRa(){var a=dE(this[uq]());if(this.Bpa=this.uda.Bpa)a.jj(akb,qDc(this.Bd)?Hj:Ah);this.uda.lvc&&a.pb(Xjb);this.uda.bmd||a.pb(Yjb);this.uda.Ucd&&a.pb(Zjb);if(!this.Bpa&&this.S4a){Mda(Ega);this.S4a=k}this.uda=i;FY(this)};\r
18787 F.N1c=function $QRa(a){a=new JDc(a[dq]);if(a.hf()!=this.xVb){this.xVb=a.hf();FY(this)}};var _GM_main=h,_GM_labelNamePrompt=WJ,_GM_labelNameRetry="Please try another name:",_GM_openInviteWindow=i,_GM_chatEngine=i,_GM_chatController=i,_GM_mwm=i,_GM_bcService=i,_GM_JSVersion=ti;_B_prog(96)}catch(e){_B_err(e)}\r
18788 \r
18789 try{H(iHc,xi);Xw(O.S(),Xx).ym(iHc);iHc[w].tb=function $RRa(a){a=a;a=Dx(Cx(a));new YI(a)};Ax(jHc,rJ,1);jHc[w].AYa=E(h);jHc[w].Pca=function $TRa(a,c){Jz(Rz(c),832)||a.Pca(Nd,new qJ(c))};H(kHc,pB);kHc[w].Ja=function $URa(a){kHc.C.Ja[z](this,a);a.wl(h);a.Ua(zz,this.Rj)};kHc[w].Zg=E("Sending invitation");H(AHc,kJ);Mx().Ug(2,function(b){b=b.B();sH(b).Vr(new AHc(b),2)});F=AHc[w];F.Tic=function $WRa(){var a=this.Z[hq](VN)>0;a&&this.cp();this.qc(a)};var pIc="ivbtn",qIc="ivcs",rIc="ivi",sIc="ivpl",tIc=" left";F.nr=function $XRa(){return{si:Ji,fDd:this.Z[hq](VN),nJ:this.X(pIc),dzc:this.X(qIc),Pw:this.X(rIc),Ij:this.X(sIc),VOc:this.Z[hq](VN)+tIc}};var uIc="Invite a friend",vIc="pY",wIc="p1";\r
18790 F.Jc=function $YRa(){yA++;try{var a=this.B();this.Fc(uIc);this.P1(vIc);this.hXb=new eE(a);this.hXb.xb(yHc(this.nr()));this.ha(this.hXb);this.qV=new ZA(a);K(this.qV.b(),wIc);this.ha(YA(this.qV))}finally{zA()}};F.cp=function $ZRa(){var a=this.b(qIc);if(a)Q(a,this.Z[hq](VN)+tIc)};F.ma=function $_Ra(){AHc.C.ma[z](this);this.H().w(this.b(pIc),P,this.Pla);this.H().w(this.b(sIc),P,this.mqb);var a=this.b(rIc);this.H().w(a,Zi,this.ql);GG(this.B()).Wr(a);this.Tic()};\r
18791 F.Ba=function $0Ra(){AHc.C.Ba[z](this);this.H().wb();GG(this.B()).lw(this.b(rIc))};var xIc="Please specify who you wish to invite.";F.Pla=function $1Ra(){var a=this.b(rIc);if(im(a[q]))this.fc[Wp](xIc);else{var c=new kHc(this.B(),a[q]);c.Ie(this);kF(this.Mb,c);c[Mb]();pa(a,I)}};var yIc="Oops, we weren't able to send your invite. Please try again later.";F.wh=function $2Ra(a){if(a.eg){a=new Zz(rB(a));var c=PF(this);c=G(c.Il,c);a.qk=c;this.qV.Ad(a)}else this.fc[Wp](yIc)};\r
18792 F.mqb=function $3Ra(){var a=this.b(rIc)[q];this[r](new TF(this,Sz,0,a))};F.ql=function $4Ra(a){if(a[Sb]==13){a[zb]();GG(this.B()).vj()||this.Pla(a)}};function dKc(b){CY[z](this,b)}function eKc(b){b=kA(b.Bc.B(),bM);Zw(b,function(a){a.tb()});Yw(b,sg)}function fKc(b){b=kA(b.Bc.B(),erb);Zw(b,function(a){a.tb()});Yw(b,sg)}zx(dKc,CY);dKc[w].ZP=function $1Sa(){Nfa.J()&&Mx().oz(4,G(this.UH,this))};dKc[w].UH=function $2Sa(){eKc(this);fKc(this)};function XKc(b){this.Qzb=b}var YKc="GOTO_TASKS",ZKc="Go to Tasks",aLc="ADD_TO_TASKS",bLc="Add conversation to Tasks",cLc="Add to Tasks";\r
18793 function dLc(b){this.Z=Rz(b);var a=Jz(this.Z,998),c=Jz(this.Z,375);a=a&&!c?VCc:undefined;Bx(this);PI[z](this,b,uLb,undefined,G(this.dUa,this,h,k,undefined),this.aa.BJa(UVa),a);OF.Gi(uQ,YKc,ZKc);hlb.bq[p](YKc);s5a=aLc;OF.Gi(bM,s5a,bLc);rQ.bq[p](s5a);SB(95,cLc,mbb,Urb,k,[Oy,cz,az,ez,Py,fz,Nd,ul,iz,pP,kz,ZK,Jy,pz,Yy,sz,aL,ce],3);this.Ma=yy(b);b=Aya(this.Ma);Zw(b,G(this.K8c,this))}function eLc(){}H(XKc,pY);Ax(XKc,pY,0);XKc[w].QRa=function $dTa(a,c){a=kA(a,UF);Zw(a,c)};XKc[w].PRa=E(k);XKc[w].BJa=Ee();H(dLc,PI);yx(pY,dLc);F=dLc[w];F.K8c=function $gTa(){this.Ma.db(L5a)&&this.aa.QRa(this[uq](),G(this.T9c,this))};var fLc="tasks_mole_loaded",gLc="gtasks.TasksNavigationTab performAction MOLE_LOAD";F.dUa=function $hTa(a,c){if(!this.aa.PRa()){this.C3a=new vLb(this[uq](),nbb,this,fLc,gLc);var d=kA(this[uq](),bv);Zw(d,function(f){f.YH(a,!!c)})}};F.T9c=function $iTa(){this.dUa(k,this.Ma.nf(N5a))};F.dXc=function $jTa(){this[r](fLc)};F.Qh=function $kTa(a){a==YKc&&this.dUa(h)};Ax(eLc,rJ,0);eLc[w].AYa=E(h);eLc[w].Pca=function $mTa(a,c){a.Pca(vr,new dLc(c))};Mx().Ug(11,function(b){(new ALc(b)).wc()});var BLc="1 Labs feature is enabled",CLc=" Labs features are enabled",DLc='<img src="pimages/2/labs/labs_bar_icon.png" width="11" height="11" alt="" class="nG"/>';function ELc(b,a){var c=a||new U,d=new U;b.TSa==1?d[R](BLc):d[R](b.TSa+CLc);kE({id:b.jRc,title:d[t](),Ab:DLc},c);if(!a)return c[t]()}function FLc(b){this.Rd=b;this.Z=Rz(b.B());this.Bnb=this.Z.TSa();this.ll=i;this.jb=JB(b.B())};zx(FLc,sY,80);var GLc="80:la";FLc[w].HE=function $zTa(){return this.Bnb>0?new tY(ELc({jRc:this.Rd.X(GLc),TSa:this.Bnb}),80):[]};FLc[w].ma=function $ATa(){if(this.Bnb>0)this.ll=ih(this.Rd.b(GLc),P,this.He,k,this)};FLc[w].Ba=function $BTa(){this.ll&&oh(this.ll)};FLc[w].He=function $CTa(a){if(!a[dd]&&!a[Bc]&&!a[Eb]){QF(this.Rd,jP);this.jb[bq]({view:dJ,fk:Wfa});a[zb]()}};function HLc(b){this.O=b;if(this.O[1])this.Wc=new ILc(this.O[1])}function ILc(b){this.O=b}function JLc(b){oH[z](this,b,26)}function KLc(b){this.bi=b;this.Mb=jF(b.B())}HLc[w].Mo=D(jsa);Ha(HLc[w],function $ETa(){return this.O[t]()});HLc[w].kc=D(ae);ILc[w].Ga=function $GTa(){return this.O[0]};ILc[w].Nf=function $HTa(){return this.O[1]};Ha(ILc[w],function $ITa(){return this.O[t]()});ILc[w].kc=D(ae);_B_prog(97)}catch(e){_B_err(e)}\r
18794 \r
18795 try{H(JLc,oH);var LLc="lno",MLc="Loading login notification.";JLc[w].Ja=function $KTa(a){JLc.C.Ja[z](this,a);a.Ua(pd,LLc);a.Ne(mB);a.Se(MLc)};JLc[w].rk=function $LTa(a,c,d){if(c==LLc)this.Wc=(new HLc(d)).Mo()};zx(KLc,vY);F=KLc[w];F.Goa=function $MTa(){Mx().oz(4,G(this.UWa,this))};var NLc=":48";F.UWa=function $NTa(){bA(NLc,G(this.Ex,this),5E3)};F.Ex=function $OTa(){var a=new JLc(this.bi.B());a.Ie(this);kF(this.Mb,a);a[Mb]()};F.wh=function $PTa(a){if(a instanceof JLc)(a=a.Wc)&&Vw(O.S(),ksa,G(this.Jra,this,a),this,k,h,h)};F.Jra=function $QTa(a){var c=a.Ga();(this.Eya=OLc().H(c,this.bi.B()))&&this.Eya.DJc(a)};F.D=function $RTa(){if(this.Eya){this.Eya.D();this.Eya=i}};function PLc(b,a,c,d,f){a.w(b,c,d,f)}function QLc(b,a){var c=a||new U;c[R](UZa,b.yZa,Uf);RLc(b,c);c[R](gB);if(!a)return c[t]()}var SLc="0.4",TLc="0.3",ULc="0.2";function RLc(b,a){var c=a||new U;c[R](WG,Rd,jE,ls,As,Rd,J,bDc,W);if(b.PTb)c[R](VCc);else if(b.B6a&&b.G3a)c[R](SLc);else b.B6a||b.G3a?c[R](TLc):c[R](ULc);c[R](gB);if(!a)return c[t]()}function VLc(b){this.Rd=b;this.Z=Rz(b.B());this.K7=Jz(this.Z,1044);this.Lb=Tz(b.B())}function WLc(b){(b=b.Rd.b(cDc))&&ph(b)}\r
18796 function XLc(b){if(b.LI){b.LI.D();b.LI=i}}function YLc(b){this.bi=b;ih(b.B().Ya(),Yj,this.x5b,k,this)}function ZLc(b){CY[z](this,b)}function aMc(b){this.Qzb=b};zx(VLc,sY,60);F=VLc[w];F.HE=function $STa(){if(bx()||!Qsb()||this.K7)return i;return new tY(QLc({yZa:this.Rd.X(cDc),B6a:Jz(this.Z,896),G3a:Jz(this.Z,850),PTb:this.K7}),60)};F.ma=function $TTa(){if(Qsb()){var a=Mx();if(jA(this.Rd.B(),Od))this.DWb();else{if(!this.K7){var c=this.Rd.b(cDc);c&&PLc(c,aB,this.Q5b,k,this)}a.Ug(102,G(this.eLb,this));a.Ug(100,G(this.DWb,this))}a.Ug(101,G(this.kJc,this))}};F.Ba=function $UTa(){WLc(this)};\r
18797 F.DWb=function $VTa(){var a=jA(this.Rd.B(),Od);a&&a.o3(this.Xeb,this);var c=this.Rd.b(Uu);c&&K(c,mP);this.LI||this.eLb(a.jC())};F.kJc=function $WTa(){var a;if(this.K7){a=this.Rd.b(SL);Pg(a)}else{a=this.Rd.b(cDc);Q(a,RLc({B6a:Jz(this.Z,896),G3a:Jz(this.Z,850),PTb:this.K7}));aB.w(a,this.Q5b,k,this)}XLc(this)};F.eLb=function $XTa(a){this.LI=new OY(this.Rd.B(),a);this.LI.Ig(this.Rd);a=this.K7?this.Rd.b(SL):this.Rd.b(cDc);WLc(this);Pg(a);this.LI.eb(a);this.K7&&a[o](this.Rd.W()[yb](Su))};\r
18798 F.Q5b=function $YTa(){PR[pb](G(this.hyb,this))};F.hyb=function $ZTa(){var a=kA(this.Rd.B(),KF);Zw(a,function(c){c.gLa()})};F.D=function $_Ta(){XLc(this)};F.Xeb=function $0Ta(){var a=this.Rd.b(GO),c;if(a){c=DD()?Ksb(this.Lb):tDc(this.Lb);Mp(a,c)}};zx(YLc,vY);YLc[w].D=function $1Ta(){nh(this.bi.B().Ya(),Yj,this.x5b,k,this)};YLc[w].x5b=function $2Ta(){var a=jA(this.bi.B(),Od);a&&a.o3(this.Xeb,this)};YLc[w].Xeb=function $3Ta(){var a=this.bi.ci.b(Wu);if(a)jk(a,DD())};zx(ZLc,CY);F=ZLc[w];F.ZP=function $4Ta(){lA(this.Bc.B(),KF,XL)};F.Il=function $5Ta(a){if(this.rHa&&this.rHa.Il(a)){FY(this.Bc);return h}return k};F.Ccb=function $6Ta(){if(!this.rHa){if(!this.ouc){var a=kA(this.Bc.B(),kR);this.ouc=h;Zw(a,this.nuc,this);Yw(a,sg)}return i}return this.rHa.Mo()};F.nuc=function $7Ta(){this.rHa=this.Bc.B().J(kR);var a=this.Bc;a.Rh.jMb||FY(a)};F.iX=function $8Ta(){Vo()&&gy(this.Bc.B()).ud.iX()};F.dOa=function $9Ta(){if(Vo()){this.IT().Yma();return h}else return k};\r
18799 F.IT=function $$Ta(){return jA(this.Bc.B(),Od)};F.dgb=function $aUa(){if(CD()){dC(this.Bc.B())[Wp](fBc);return h}return k};H(aMc,pY);zx(aMc,pY,1);aMc[w].QRa=function $bUa(a,c){if(Vo()){if(!this.Q)this.Q=new kn(this);jA(a,Od)?this.Qtb(a,c):ln(this.Q,a.Ya(),Yj,G(this.Qtb,this,a,c))}else this.Qtb(a,c)};aMc[w].Qtb=function $cUa(a,c){if(!DD()){a=kA(a,UF);Zw(a,c)}};aMc[w].PRa=function $dUa(){if(DD()){vE(this.Qzb[uq]());return h}return k};aMc[w].BJa=function $eUa(a){return a+ina};var hMc="Import complete!",iMc="bD",jMc="Your contacts and messages from ",kMc="</b> have finished importing.",lMc="Your messages from ",mMc="Your contacts from ",nMc="Visit the ",oMc=" label to see your messages.";\r
18800 function pMc(b,a){var c=a||new U;c[R](X,EEc,Gl,b.puc,wl,FEc,W);kE({id:b.rBc,Ab:zoa},c);c[R](Z,hMc);b=b.emb;for(var d=b[u],f=0;f<d;f++){var g=b[f];c[R](X,iMc,W);if(g.Mva&&g.Chb){var j=jMc+(ZG+(V(g.Zc)+kMc));c[R](j)}else if(g.Mva){j=lMc+(ZG+(V(g.Zc)+kMc));c[R](j)}else{j=mMc+(ZG+(V(g.Zc)+kMc));c[R](j)}g.Lbb&&c[R](J,uwb);if(g.Zh){g={className:I,title:V(g.EQa),href:V(g[Yc]),yU:V(g.EQa)};j=new U;j[R](HI,g[Yc],Lt,g[Pk],tra,g[uc],W,g.yU,hB);g=j[t]();c[R](J,nMc+(g+oMc))}c[R](Z)}c[R](Z);if(!a)return c[t]()}\r
18801 function qMc(b,a,c){pB[z](this,b,93,a);this.Rj=c}function rMc(b){this.O=b;this.O[1]=this.O[1]||[];this.u8=[];for(b=0;b<this.O[1][u];b++)this.u8[b]=new VR(this.O[1][b])}function sMc(b){oH[z](this,b,18);this.Wxa=[]}function tMc(b){this.bi=b;this.Y=qC(b.B()).W();this.Mb=jF(b.B());this.BY=[]}var uMc=":49";function vMc(b,a){if(!b.Dub){b.Dub=h;bA(uMc,G(b.Chd,b),a)}}\r
18802 function wMc(b){for(var a=b.bi,c=[],d=0;d<b.BY[u];d++){var f=b.BY[d],g=f.Dd(),j=nD(a.B())+Lj+Uy(g).Xs();c[p]({Zc:f.Vc(),Zh:!im(g),href:j,EQa:g,Chb:f[Bq](4),Mva:f[Bq](2),Lbb:f.hf()==9})}return{rBc:a.X(ie),puc:a.X(T9a),emb:c}};H(qMc,pB);qMc[w].Zg=E("Dismiss migration banner");qMc[w].Ja=function $kUa(a){qMc.C.Ja[z](this,a);a.Be(mQ,this.Rj)};qMc[w].Eg=E(k);Ha(rMc[w],function $mUa(){return this.O[t]()});rMc[w].kc=D(ae);H(sMc,oH);var xMc="Loading completed migrations.";sMc[w].Ja=function $oUa(a){sMc.C.Ja[z](this,a);a.Ua(pd,ana);a.Se(xMc)};sMc[w].rk=function $pUa(a,c,d){if(c==ana)this.Wxa=(new rMc(d)).u8};zx(tMc,vY);F=tMc[w];F.Dub=k;F.Goa=function $qUa(){Mx().oz(4,G(this.jOc,this))};F.y2a=function $rUa(){if(this.BY[u]>0){var a=this.Y[Qb](T);Q(a,pMc(wMc(this)));this.AQ();this.Z8a=ih(a,P,this.IYc,k,this);return a}return i};F.jOc=function $sUa(){vMc(this,3E3)};F.Chd=function $tUa(){var a=new sMc(this.bi.B());a.Ie(this);kF(this.Mb,a);a[Mb]()};\r
18803 F.wh=function $uUa(a){if(a instanceof sMc){this.Dub=k;for(var c=[],d=0;d<a.Wxa[u];d++){var f=new WR(a.Wxa[d]),g=f.hf();if(g==5||g==9)c[p](f)}this.BY=c;this.BY[u]>0&&this.bi.OP();vMc(this,432E5)}else e(Error(".247"))};F.IYc=function $vUa(a){var c=this.bi;if(a[y].id==c.X(ie)){for(a=0;a<this.BY[u];a++)(new qMc(c.B(),7,this.BY[a].Vc()))[Mb]();this.BY=[];this.AQ();if(c=c.b(T9a))Ua(c[x],xd)}};F.AQ=function $wUa(){if(this.Z8a){oh(this.Z8a);this.Z8a=i}};F.D=function $xUa(){this.AQ()};function OOc(b){this.kj=b;this.Q=new kn(this);this.Bd=rD(b.B());this.jb=JB(b.B());this.bF=k;b=Mx();Nx(b,4,G(this.Qfb,this))}zx(OOc,xY);F=OOc[w];F.N2=function $KWa(a,c){this.bF=!!a&&a.id==Xz&&c.md()!=xE};F.vza=D(vnb);F.D=function $MWa(){OOc.C.D[z](this);Kf(this.Q);Kf(this.Ud)};F.a9=function $NWa(a){var c=this.kj.Qe();if((a=a.IRc)&&c==a[t]()){c=a.ABa;if(c==Hz){c=Uy(a.dbc);this.jb[bq]({view:wE,search:c});this.kj.ny[yk]();return}else if(c==Ph){this.jb.SH(a.dbc);this.kj.ny[yk]();return}}uFc(this.kj)};\r
18804 F.Qfb=function $OWa(a,c){if(c==Jwb&&a.md()!=xE){this.kj.Ksa();this.kj.uo(cra);this.Ud.Zaa(cra);JMa(this.Ud);return h}return i};F.zT=function $PWa(a,c){if(a&&a.id==Xz&&c.md()!=xE){this.Ud||this.Bqa();return this.Ud}else return i};F.Bqa=function $QWa(){var a=this.kj.B();this.Ud=new GCc(a,this.kj.ny,this.Bd.Zf,new wCc(a));this.Q.w(this.Ud,era,this.a9)};_B_prog(98)}catch(e){_B_err(e)}\r
18805 \r
18806 try{function POc(b){this.bi=b;this.Y=qC(b.B()).W()};zx(POc,vY);POc[w].Goa=function $RWa(a){a=Rz(a);var c=this.bi,d=this.bi.H();d.w(a,a.Cq(v8a),c.OP,k,c);d.w(a,a.Cq(u8a),c.OP,k,c)};\r
18807 var QOc="You have run out of space for your ",ROc=" account. You will not be able to send or receive any emails until you delete some items.",SOc='<a target="_blank" href=',TOc="view our tips on reducing your email storage",UOc=" or  ",VOc='">purchase additional storage</a>.',WOc="aF",XOc='" width="100%"><tr><td class="',YOc="bV",ZOc="bW",aPc="You are almost out of space for your ",bPc="aG";\r
18808 POc[w].y2a=function $SWa(a){var c={si:a[hq](f8a),F9b:a[hq](x8a),q9b:a[hq](w8a)},d;if(a[hq](v8a)){d=new U;a=QOc+(V(c.si)+ROc);c=eDc+(SOc+V(c.F9b)+Uf+(TOc+(hB+(UOc+(tsa+V(c.q9b)+VOc)))));d[R](X,WOc,RG,ul,XOc,YOc,W);xI({Hb:ZOc},d);d[R](GI,a,kv,c,Zs);d=d[t]()}else if(a[hq](u8a)){d=new U;a=aPc+(V(c.si)+usa);c=eDc+(SOc+V(c.F9b)+Uf+(TOc+(hB+(UOc+(tsa+V(c.q9b)+VOc)))));d[R](X,bPc,W,a,kv,c,Z);d=d[t]()}if(d){c=this.Y[Qb](T);Q(c,d);return c}return i};function fQc(){}function gQc(){hQc||(hQc=new fQc);return hQc}var hQc;fQc[w].m_b=k;fQc[w].Y1b=k;var iQc="wn",jQc=[fDc,"wq","wp","wo",iQc];F=fQc[w];F.Nqd=Af(wE,"cS",xE,"cS",YK,"cN",QO,"cL",SO,ysa,eab,"cR",UO,"HmByof",fab,"PjD5hf");F.Pe=function $zXa(a){if(this.vt)e(Error(".256"));this.vt=a;this.Kf=a.B();this.Y=qC(this.Kf).W();this.sg=sH(this.Kf);this.kg=nF(this.Kf)};var kQc="wm",lQc="vI8oZc";\r
18809 F.wc=function $AXa(){if(this.Y1b&&this.m_b){L&&jQc[ld](kQc);for(var a=this.Y.ba(T,{"class":lQc}),c=0;c<jQc[u];c++){var d=this.Y.ba(T,{"class":jQc[c]});this.Y[o](a,d)}this.uqa=a;if((a=this.vt.Yj.b())&&a[Tb]){Dm(a,Hm,ee);this.Y.yA(this.uqa,a[Tb])}(a=this.vt.ia.b())&&Dm(a,Hm,ee);this.wBb();ih(this.kg,YD,this.wBb,k,this)}};F.D=function $BXa(){nh(this.kg,YD,this.wBb,k,this);hQc=this.Y=this.vt=i};var mQc="backgroundPosition",nQc="px bottom",oQc="backgroundImage",pQc="backgroundPositionX",qQc="backgroundPositionY";\r
18810 F.wBb=function $CXa(){var a=this.Y.ie(T,iQc,this.uqa)[0],c=this.kg.il()[3];if(a){if(c!=0)this.kZb!=c&&Dm(a,mQc,pH(this.sg).Yh()-da(c,10)+nQc);else if(zw(a,mQc)!=I)if(L&&vg(Ij)){if(Fm(a,oQc)!=xd){var d=this.Y.ba(T,{"class":iQc});this.uqa[o](d);a[x].backgroundPositionX=Fm(d,pQc);a[x].backgroundPositionY=Fm(d,qQc);this.uqa[Nc](d)}}else this.kZb!=c&&Dm(a,mQc,I);this.kZb=c}a=this.kg.il()[2];a=da(a,10);if(this.BRc!=a){yA++;c=pH(this.sg);c.ia.Ql(c.Yh()+a);zA();this.BRc=a}};\r
18811 Mx().Ug(6,function(){var b=gQc();b.m_b=h;b.wc()});Mx().Ug(240,function(){var b=gQc();b.Y1b=h;b.wc()});Mx().Ug(2,function(b){gQc().Pe(b)});Mx().Ug(3,function(){var b=gQc();b&&b.D()});var rQc="vI8oZc ";Mx().Ug(110,function(b){var a=gQc(),c;if(b.yK)c=b.yK().Rzc;c=c||a.Nqd[b.md()];m(a.uqa,rQc+c)});function wUc(b){this.bi=b}zx(wUc,vY);var xUc=":51",yUc=":52";wUc[w].Txb=function $jZa(){var a=this.bi.B(),c=yy(a);if(!c.nf(KM))return k;this.TBb&&cA(this.TBb);a=(new Date)[hc]();var d=c.Ep(W5a);if(d&&d>a){this.TBb=bA(xUc,this.bi.OP,d-a,this);return k}if(c=c.Ep(NM)){if(c<a)return k;this.TBb=bA(yUc,this.bi.OP,c-a,this)}return h};O.S().gb(Xx);Ci(O.S(),Xx);var zUc="hP",AUc="</span></h1>";function GZb(b,a){var c=a||new U;c[R](vra,xy,OI,b.fb.g3,S,zUc,W,b.m2,ns,b.fb.ODb,W);W4b(b,c);c[R](AUc);if(!a)return c[t]()}\r
18812 function W4b(b,a){var c=a||new U;b=b.Ti;for(var d=b[u],f=0;f<d;f++){var g=b[f],j=c||new U;j[R](Fl,ul,J,Zpa,ms,Lsa,J,ov,YJ,pv,J,ov,OH,iu,J,ov,aC,V(g[lq][jq]),OH,vqa,J,ov,aC,V(g[lq][jq]),OH,hu,J,ov,aC,V(g[lq][jq]),OH,qv,J,ov,Msa,hqb,YJ,pv,J,iu,J,ov,aC,V(g[lq][jq]),OH,iu,J,ov,aC,V(g[lq][jq]),Nsa,V(g[lq].tg),EF,Ypa,Ir,V(g[ec]),Lt,V(g.Ibc),Ys,V(g.Ibc),W,V(g.ke),Qt,vqa,J,ov,aC,V(g[lq].tg),OH,hu,J,ov,aC,V(g[lq][jq]),Nsa,V(g[lq].tg),EF,Xpa,Ir,V(g[ec]),Lt,V(g.eac),Ys,V(g.eac),W,Sz,Qt,qv,J,hu,J,ov,aC,V(g[lq][jq]),\r
18813 Msa,Lsa,J,ov,YJ,pv,J,ov,OH,iu,J,ov,aC,V(g[lq][jq]),OH,vqa,J,ov,aC,V(g[lq][jq]),OH,hu,J,ov,aC,V(g[lq][jq]),OH,qv,J,ov,lRa);c||j[t]()}if(!a)return c[t]()}var BUc="New Message from ",CUc=" New Messages",DUc='</span>&nbsp;&nbsp;<span id="',EUc="Update Conversation";function V4b(b,a){var c=a||new U;c[R](pE);if(b.N2b==1){var d=BUc+V(b[Hma]);c[R](d)}else c[R](b.N2b+CUc);c[R](DUc,b.xEa,S,rv,W,EUc,DUc,b.aNc,S,rv,W,Pr,gB);if(!a)return c[t]()}Bi(O.S(),"sy165");O.S().gb("sy165");Ci(O.S(),"sy165");Bi(O.S(),"sy166");var FUc="Sponsored mail with enhanced content";function q6b(b,a){var c=a||new U;c[R](FUc,bH,V(b.io),cH,eB,hB);if(!a)return c[t]()};O.S().gb("sy166");Ci(O.S(),"sy166");Bi(O.S(),"sy170");var NUc=" 7 5";function OUc(b,a,c,d){if(Fh&&!Ri)return b;b=Xaa+a+Yaa;if(Jg)b+=NUc;b+=hg+c;if(!Fh&&d)b+=" !important";return b};O.S().gb("sy170");Ci(O.S(),"sy170");var PUc='" selector="',QUc="C1";function RUc(b,a){Ix(b);if(a=b.za(a)){for(var c=b.jw,d=0;d<c[u];d++)c[d][ad](a);mya(a,void 0)}b=b.J();MRa(b,b.nj-1)}function SUc(b,a){b.M1=a}function TUc(b,a){for(var c=a[pq](),d=0;d<b.oq[u];d++)if(b.oq[d][pq]()==c){b.oq[d].Ig(i);a.Ig(b);b.oq[d]=a;return}}function UUc(b,a){for(var c=0;c<b.yJ[u];c++)if(b.yJ[c].Jb==a.Jb){b.yJ[c]=a;return}}function VUc(b){hy[z](this,WK,b)}function WUc(b){this.Bra=b}function XUc(){}function YUc(b){this.ohc=b}function ZUc(){Bx(this)}\r
18814 function aVc(b,a,c,d,f){var g=new XUc;ep(g,m0a());g.gCb=f;Ip(g,c);g.rUa=d;g.o9=h1a(a,c);var j=yy(a);g.Gma=j.nf(bL);b=b.aa.RJa(a,c,d,f,g);if(!b){g=new UK(a,g);b=new dL(a,c,d,f,g)}return b}function bVc(){Bx(this)}function cVc(){return new ZUc}H(VUc,hy);F=VUc[w];F.za=function $lZa(a,c){Ix(this);var d=iy(this,a);if(d||c)return d;if(a=Hy.f_(Rf(a)))return new ORa(a,this)};F.Zn=function $mZa(a,c){Ix(this);return this.za(Qf(a.Dg()),c)};\r
18815 F.Zga=function $nZa(a,c,d){Ix(this);var f=i;if(a=this.za(Qf(a.Dg()),d))f=a.za(c,d);return f};F.nB=function $oZa(a,c,d){Ix(this);RRa(this,a,function(f){f.mB(d)});cI(this,I7a);SRa(this)};F.Yaa=function $pZa(a,c,d,f){Ix(this);RRa(this,a,function(g){if(d)g.vf()<=c&&g.LRa();else{g.Jl=h;if(!g.Oy()&&!g.Mm())g.Zba=nf(g.kl);g.utb=2;g.A4=ZG+g.A4+GK;g.rB=ZG+g.rB+GK;f?SUc(g,f):tRa(g);g.bI&&kya(g.bI,g,2)}});SRa(this)};F.SX=function $qZa(a,c,d){this.t3(a,c,h,d)};F.m1=function $rZa(a,c,d){this.t3(a,c,k,d)};\r
18816 F.t3=function $sZa(a,c,d,f){var g=k,j=k;RRa(this,a,function(C){for(var M=0;M<f[u];M++){var Y=f[M],ha;ha=d?C.bS(Y):C.TL(Y);if(Y==AL)g=ha;else if(Y==BL)j=ha}});for(c=0;c<f[u];c++){var n=Uy(f[c]);if(n){var s=this.Zn(n,h);if(s)if(d)s.rg();else s.hc()&&RUc(s,a)}}if(g||j){var v=this.Uc().Oa();for(c=0;c<v[u];c++){s=v[c];n=s.Bb();if(s.hc()){n=n.Ga();if(n==Py||n==cz||n==sz||n==pz||n==fz)d?RUc(s,a):s.rg()}}}SRa(this)};\r
18817 F.E4=function $tZa(a,c){Ix(this);var d=this.Uc().Oa();this.mb.Qf();try{for(var f=0;f<d[u];f++){var g=d[f];if(g.hc()){var j=g.Bb(),n=j.Ga();if(n==Oy||n==az||n==Jy||n==Py&&(j.Pt()==a||j.Pt()==c))g.rg();else for(var s=g.Uc().Oa(),v=0;v<s[u];v++){var C=s[v];if(C.hc()&&!C.Ds()){var M=C.J(),Y=M.TL(a);c&&Y&&M.bS(c)}}}}}finally{this.mb.Mf()}};Bi(O.S(),IB);_B_prog(99)}catch(e){_B_err(e)}\r
18818 \r
18819 try{H(WUc,xx);WUc[w].tb=B();WUc[w].tb.Ka=h;H(YUc,xx);YUc[w].RJa=B();YUc[w].RJa.ic=h;H(ZUc,RH);yx(YUc,ZUc);F=ZUc[w];F.JJ=function $wZa(a,c,d){a=a;this.U_a(a,d);c=Ke(d.zz)?i1a(a,d[Pc],d.zz):d[Xp]||0;a=aVc(this,a,d[Pc],c,d[x]);a.qc(k);this.xU(a,d);return a};F.TJa=function $xZa(a,c){a=a;var d=c.td();d=d?new Wh(Rf(d)):c.Of();c={uri:c};a=aVc(this,a,aza(Sy,d),1,Hz);this.xU(a,c);return a};\r
18820 F.pga=function $yZa(a,c,d){a=a;this.U_a(a,d);a=Ke(d.zz)?i1a(a,d[Pc],d.zz):d[Xp]||0;var f=d[Pc],g=i;c=GH(c);for(var j=0;j<c[u]&&!g;j++)if(c[j]instanceof dL&&f.Qc(c[j].Bb())&&d[x]==c[j].D0a&&a==c[j].Ut()){g=c[j];d.gkb||g.uW();this.xU(g,d)}return g};F.xU=function $zZa(a,c){bha(c,a.Ut());a.lPa(c.tZa,c.Zo,c.Am,c.Lja);a.qma(c)};F.U_a=function $AZa(a,c){if(!c[x]){a=KC(a);var d=Xy(c[Pc]);a=NC(a,d);lma(c,a?a.wra:Hz)}};H(bVc,xi);yx(WUc,bVc);Xw(O.S(),IB).ym(bVc);bVc[w].tb=function $BZa(a){a=a;mA(a,TE,cVc);var c=Dx(Cx(a));new VUc(c);this.aa.tb(a)};var dVc="tBhihb",eVc='" style="width:16px; height:16px" onerror="this.parentNode.removeChild(this);">';function fVc(b,a){var c=a||new U;c[R](uI,dVc,Ps,b.Zuc,eVc);if(!a)return c[t]()}function gVc(b){this.Uk=b}function hVc(b){this.vcc=b}function iVc(b){this.ub=b}function jVc(b){if(b.G4a)b.G4a.Uk=b.ub.xa.Zsa();else b.G4a=new gVc(b.ub.xa.Zsa());return b.G4a}var kVc="-ot";function lVc(b,a){dE(b.ub.B()).jj(a,jVc(b).NT()+kVc)}gVc[w].NT=function $CZa(){return this.Uk.nS[0]};gVc[w].Cwa=function $DZa(){return!!this.Uk.nS[1]};\r
18821 gVc[w].twa=function $EZa(){return!!this.Uk.nS[2]};zx(hVc,XYa);hVc[w].Jj=function $FZa(a,c){c=new gVc(c);if((CD()?k:!!c.Uk.nS&&c.NT()&&!c.Cwa()&&c.twa()&&!!!c.Uk.nS[3])&&c.Uk.nS[4]){a.Zuc=c.Uk.nS[4];a.ppa[p](fVc)}};zx(iVc,AK);iVc[w].opa=function $GZa(){if(jVc(this).Uk.nS&&jVc(this).NT())if(jVc(this).Cwa())lVc(this,ikb);else if(jVc(this).twa())jVc(this).Uk.nS[3]?lVc(this,jkb):lVc(this,gkb);else lVc(this,hkb)};function GVc(){this.yGb=[]}function HVc(b,a){b.yGb[p](a)}var IVc="earlydata";function JVc(b){this.V=b;this.Aa=Dx(Cx(this.V));this.Q=new kn(this);(new py(IVc,this.Aa)).set(new GVc);this.Q.w(fy(b).eQ,Fx(JD),this.Zya)}function KVc(b){this.Bra=b}H(GVc,uh);H(JVc,Jf);JVc[w].Zya=function $2Za(a){a=a[dq];if(a[0]==JD){var c=this.Aa.cj(Nrb,h);c&&c.J()?HVc(c.J(),a):this.AQ()}};JVc[w].L=function $3Za(){this.AQ()};JVc[w].AQ=function $4Za(){if(this.Q){this.Q.hb(fy(this.V).eQ,Fx(JD),this.Zya);this.Q.D();this.Q=i}};zx(KVc,WUc);KVc[w].tb=function $5Za(a){this.vBd=new JVc(a)};function LVc(b){this.Bn=b}Ax(LVc,DJ);LVc[w].qqb=function $6Za(){if(Xw(O.S(),vw).hc()){var a=kZ;a&&a.nsb()}};function VXc(b,a,c,d){N[z](this,Psa,b);this.wVc=a;ok(this,c);this.Gnd=d}var WXc="oZ";function XXc(){zJ[z](this,WXc,CK)}function YXc(b){this.uB=b}H(VXc,N);H(XXc,zJ);var ZXc=OUc(Qsa,"images/2/openhand.cur",aR,h)+Er;XXc[w].R3b=function $Y_a(a,c){wp(c[x],ZXc);return k};XXc[w].Wya=function $Z_a(a,c,d){var f=this[Oc][Oc].ao(),g=this[Oc].B(),j=d[Vp]();g.Ya()[r](new VXc(f,a,c,j));return XXc.C.Wya[z](this,a,c,d)};zx(YXc,oK);var aYc=[I,EN,IN,CL,DN],bYc=[8,3,9,10,16],cYc=new kK(XF,"Ci");F=YXc[w];F.Y_a=function $__a(a){UUc(a.SZa,cYc);TUc(a.TD,new XXc)};F.WKc=function $0_a(){return this.uB.ao()[uk].XG()==dK};F.wcb=function $1_a(){var a=this.uB.ao().Bb();return(a?Xy(a):I)||I};F.y0b=function $2_a(a){var c=this.uB.ao();if(!c[uk].Vo(a)){this.kTa=c[uk].E6();this.kTa.set(a,k);jYa(c[uk]);kYa(c[uk],a)}};F.x0b=function $3_a(){if(this.kTa){this.uB.ao()[uk].zm(this.kTa);delete this.kTa}};\r
18822 F.AVc=function $4_a(a){var c=this.wcb();if(!a||c==a)c=i;else{var d=76;if(KC(this.uB.B()).Rw(a))switch(a){case TI:d=8;break;case oI:if(ef(aYc,c))d=3;break;case AL:d=9;break;case BL:d=10;if(c==CL)d=16;break}else if(ef(aYc,c))d=12;c=d}if(c){a=ef(bYc,c)?i:a;this.uB.ao().nk(c,a)}};F.Krc=function $5_a(a,c){if(!this.uB.ao().aa.pQa()){this.y0b(this.uB.xa[Vp](iK(this.uB,c)).vf());this.uB.ao().nk(12,a);this.x0b()}};F.TQb=function $6_a(){return this.uB.b()[ic](Zn)};function EYc(b){this.Bn=b}var FYc="xF",GYc="Additional messages could be available in regular online mode. You can leave Flaky Connection Mode and try your search again.",HYc="Additional messages may be found when you are online.";function IYc(b,a){var c=a||new U;c[R](SG,FYc,Kl,FYc,Kl,FYc,W);b.bDa?c[R](GYc):c[R](HYc);c[R](TG);if(!a)return c[t]()}function JYc(b,a){switch(a){case cz:case fz:case iz:case kz:case sz:case pz:case Yy:case Zy:case Py:return h}return k}TH[w].fQc=function $A0a(){return this.Zh(HN)};VUc[w].KOc=function $B0a(){Vo()&&cI(this,H7a)};zx(EYc,DJ);var KYc="Move to Drafts";EYc[w].Oca=function $C0a(a){var c=HJ(KYc,101,void 0);a.set(101,c)};EYc[w].Fs=function $D0a(a){return a==101};EYc[w].KW=function $E0a(a){if(a.Ga()==nz){TB(this.Bn,101,h);TB(this.Bn,9,k)}else TB(this.Bn,101,k)};var LYc="b4";VJ[w].a1b=function $F0a(){if(CD())for(var a=this.b()[cc],c=0;c<a[u];c++)if(a[c][Uc](fG)==String(64))m(a[c],LYc)};VJ[w].ZRa=function $_N(){var a=jA(this.B(),Od);a&&a.M2a(this.a1b,this)};VJ[w].d1b=function $0N(){var a=jA(this.B(),Od);a&&a.dub(this.a1b,this)};Lob[p](HN);KK.Wtd="ls_esm";F=dL[w];var MYc="No messages waiting to be sent.",NYc="There are no conversations with this label. You can leave Flaky Connection Mode to see all conversations.",OYc="There are no conversations with this label. Additional conversations are only available online.";\r
18823 F.p1b=function $0S(){var a=this.Ea.Ga();if(a==nz){a=new U;a[R](MYc);a=a[t]();return a}var c=this.Xi.J();if(c.I_()&&(c.fN()||c.DPa())){a=jA(this.B(),Od);a={bDa:a&&a.Gm()==AR};a=a;c=new U;a.bDa?c[R](GYc):c[R](HYc);a=c[t]();return a}if(c.I_()&&c.uua()&&JYc(this,a)){a=jA(this.B(),Od);a={yyc:a&&a.vk()};a=a;c=new U;a.yyc?c[R](NYc):c[R](OYc);a=c[t]();return a}return i};F.k1b=function $sS(a,c){this.IP=new eE(c);this.IP.qc(k);a[p](this.IP)};F.Z0b=function $dS(){Pw(this.H(),this.IP.b(),aB,this.V2c)};\r
18824 F.V2c=B();var PYc="Better search results could be available in regular online mode. You can leave Flaky Connection Mode and try your search again.",QYc="Better search results may be found when you are online.";\r
18825 F.t1b=function $gT(){if(!this.IP.Pc)if(this.Xi.hc()){var a=this.Ea.Ga(),c=this.Xi.J(),d;if(a!=nz&&c.I_()){a=jA(this.B(),Od);if(c.nj>0&&c.DPa()){c={bDa:a&&a.Gm()==AR};d=new U;d[R](X,fo,W);c.bDa?d[R](PYc):d[R](QYc);d[R](Z);d=d[t]()}else if(a&&a.ev==BR&&a.Gm()!=AR){c=new U;c[R](X,fo,W,"Showing only messages located on this computer until your offline changes have been synchronized.",Z);d=c[t]()}}if(d){Q(this.IP.b(),d);this.IP.qe(Wx);this.IP.qc(h)}else{Q(this.IP.b(),I);this.IP.qc(k)}}else this.IP.qc(k)};\r
18826 F.o1b=function $YS(){var a=this.Xi.J(),c=a.nj;return a.I_()&&c>0&&!a.DPa()&&this.Rf+XK(this)[u]==c&&(a.fN()||c<a.uua())};F.W0b=function $ZS(a){if(this.Ea.Ga()!=nz){var c=jA(this.B(),Od);c={bDa:c&&c.Gm()==AR};a[p](IYc(c))}};O.S().gb(IB);Ci(O.S(),IB);_B_prog(100)}catch(e){_B_err(e)}\r
18827 \r
18828 try{function zIc(b,a){EL[z](this,b,a);f4a(this);a[kq](Xd,new eWa);LFa(a)}H(zIc,EL);var AIc="Main ",BIc="hist_state";\r
18829 zIc[w].tb=function $5Ra(){this.OK(k,Xl);var a=this.B(),c=dE(this.V);c.pb(mea?tkb:ukb);if(mea){var d=this.xf.ud,f=Mj.td(),g=Zh(Mj,pd),j=Rz(this.V).bH();if(!f||f==j.Ga()&&!g){this.Y9a=new SLa(this.V,g||DE);mIa(d,this.Y9a)}else{f=f[Cc](Md)[0];c.jj(skb,j.Ga()+Qd+f+Qd+(g?g:xd))}if(!(d.Xsb||!d.ywa||!d.aQa)){d.Xsb=h;d.b1(i,mea)}}c=rD(a);d=rD(iA(a));d=new EA(sD(c),[sD(d)]);c=CA(a,d,c.Zf);c.B_a=AIc;ZC(this,c);d=Cg(top);a[kq](Xx,new rY(d.b(BIc),d.b(Xkb)));vNa(a);d=aJa(a);_ForceReloadStyles=G(d.YLa,d);a=new EY(a);\r
18830 c.so(a);a.Via();Uzc=a};main=function $6Ra(){ik(ea,Ii);var a=gQ,c=new IL(a),d=c.V,f=wwa(fx(Mj,Zra));f=new G3a(f,aj,XE,void 0);d[kq](dx,f);_GM_bcService=f;c.tb();c=a;if(Sfa.J())c=mD(a);(new zIc(top,c)).tb()};}catch(e){_B_err(e)}\r
18831 \r
18832 _B_record();_B_init(top)\r
18833 \r
18834 top._jsl=true\r
18835 \r
18836 window._GM_writeInnerHtml=function(element,html){element.innerHTML=html};\r
18837 window._GM_writeInnerHtmlLoaded();\r
18838 </script>\r
18839 \r
18840 \r
18841 <script id="gravity" type="x">\r
18842   var _gaq = _gaq || [];\r
18843   _gaq.push(['_setAccount', 'UA-86951-7']);\r
18844   _gaq.push(['_trackPageview']);\r
18845 \r
18846   (function() {\r
18847     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\r
18848     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r
18849     (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);\r
18850   })();\r
18851 \r
18852 \r
18853 \r
18854 (function(){var aa="_gat",ba="_gaq",r=true,v=false,w=undefined,ca="4.6.5",x="length",y="cookie",A="location",B="&",C="=",D="__utma=",E="__utmb=",G="__utmc=",da="__utmk=",H="__utmv=",J="__utmz=",K="__utmx=",L="GASO=";var N=function(i){return w==i||"-"==i||""==i},ea=function(i){return i[x]>0&&" \n\r\t".indexOf(i)>-1},P=function(i,l,g){var t="-",k;if(!N(i)&&!N(l)&&!N(g)){k=i.indexOf(l);if(k>-1){g=i.indexOf(g,k);if(g<0)g=i[x];t=O(i,k+l.indexOf(C)+1,g)}}return t},Q=function(i){var l=v,g=0,t,k;if(!N(i)){l=r;for(t=0;t<i[x];t++){k=i.charAt(t);g+="."==k?1:0;l=l&&g<=1&&(0==t&&"-"==k||".0123456789".indexOf(k)>-1)}}return l},S=function(i,l){var g=encodeURIComponent;return g instanceof Function?l?encodeURI(i):g(i):escape(i)},\r
18855 T=function(i,l){var g=decodeURIComponent,t;i=i.split("+").join(" ");if(g instanceof Function)try{t=l?decodeURI(i):g(i)}catch(k){t=unescape(i)}else t=unescape(i);return t},U=function(i,l){return i.indexOf(l)>-1},V=function(i,l){i[i[x]]=l},W=function(i){return i.toLowerCase()},X=function(i,l){return i.split(l)},fa=function(i,l){return i.indexOf(l)},O=function(i,l,g){g=w==g?i[x]:g;return i.substring(l,g)},ga=function(i,l){return i.join(l)},ia=function(i){var l=1,g=0,t;if(!N(i)){l=0;for(t=i[x]-1;t>=0;t--){g=\r
18856 i.charCodeAt(t);l=(l<<6&268435455)+g+(g<<14);g=l&266338304;l=g!=0?l^g>>21:l}}return l},ja=function(){var i=window,l=w;if(i&&i.gaGlobal&&i.gaGlobal.hid)l=i.gaGlobal.hid;else{l=Y();i.gaGlobal=i.gaGlobal?i.gaGlobal:{};i.gaGlobal.hid=l}return l},Y=function(){return Math.round(Math.random()*2147483647)},Z={Ha:function(i,l){this.bb=i;this.nb=l},ib:v,_gasoDomain:w,_gasoCPath:w};Z.Gb=function(){function i(k){return new t(k[0],k[1])}function l(k){var p=[];k=k.split(",");var f;for(f=0;f<k.length;++f)p.push(i(k[f].split(":")));return p}var g=this,t=Z.Ha;g.Ia="utm_campaign";g.Ja="utm_content";g.Ka="utm_id";g.La="utm_medium";g.Ma="utm_nooverride";g.Na="utm_source";g.Oa="utm_term";g.Pa="gclid";g.ba=0;g.z=0;g.Ta=15768E6;g.sb=18E5;g.v=63072E6;g.ta=[];g.va=[];g.nc="cse";g.oc="q";g.ob=5;g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");\r
18857 g.t=w;g.lb=v;g.h="/";g.U=100;g.oa="/__utm.gif";g.ga=1;g.ha=1;g.u="|";g.fa=1;g.da=1;g.Ra=1;g.b="auto";g.I=1;g.ra=1E3;g.Jc=10;g.Pb=10;g.Kc=0.2;g.o=w;g.a=document;g.e=window};Z.Hb=function(i){function l(d,a,j,c){var n="",s=0;n=P(d,"2"+a,";");if(!N(n)){d=n.indexOf("^"+j+".");if(d<0)return["",0];n=O(n,d+j[x]+2);if(n.indexOf("^")>0)n=n.split("^")[0];j=n.split(":");n=j[1];s=parseInt(j[0],10);if(!c&&s<p.r)n=""}if(N(n))n="";return[n,s]}function g(d,a){return"^"+ga([[a,d[1]].join("."),d[0]],":")}function t(d,a){f.a[y]=d+"; path="+f.h+"; "+a+p.fb()}function k(d){var a=new Date;d=new Date(a.getTime()+d);return"expires="+d.toGMTString()+"; "}var p=this,f=i;p.r=(new Date).getTime();\r
18858 var h=[D,E,G,J,H,K,L];p.k=function(){var d=f.a[y];return f.o?p.Wb(d,f.o):d};p.Wb=function(d,a){var j=[],c,n;for(c=0;c<h[x];c++){n=l(d,h[c],a)[0];N(n)||(j[j[x]]=h[c]+n+";")}return j.join("")};p.l=function(d,a,j){var c=j>0?k(j):"";if(f.o){a=p.kc(f.a[y],d,f.o,a,j);d="2"+d;c=j>0?k(f.v):""}t(d+a,c)};p.kc=function(d,a,j,c,n){var s="";n=n||f.v;c=g([c,p.r+n*1],j);s=P(d,"2"+a,";");if(!N(s)){d=g(l(d,a,j,r),j);s=ga(s.split(d),"");return s=c+s}return c};p.fb=function(){return N(f.b)?"":"domain="+f.b+";"}};Z.$=function(i){function l(b){b=b instanceof Array?b.join("."):"";return N(b)?"-":b}function g(b,e){var o=[];if(!N(b)){o=b.split(".");if(e)for(b=0;b<o[x];b++)Q(o[b])||(o[b]="-")}return o}function t(b,e,o){var m=c.M,q,u;for(q=0;q<m[x];q++){u=m[q][0];u+=N(e)?e:e+m[q][4];m[q][2](P(b,u,o))}}var k,p,f,h,d,a,j,c=this,n,s=i;c.j=new Z.Hb(i);c.kb=function(){return w==n||n==c.P()};c.k=function(){return c.j.k()};c.ma=function(){return d?d:"-"};c.vb=function(b){d=b};c.za=function(b){n=Q(b)?b*1:"-"};c.la=function(){return l(a)};\r
18859 c.Aa=function(b){a=g(b)};c.Vb=function(){c.j.l(H,"",-1)};c.lc=function(){return n?n:"-"};c.fb=function(){return N(s.b)?"":"domain="+s.b+";"};c.ja=function(){return l(k)};c.tb=function(b){k=g(b,1)};c.C=function(){return l(p)};c.ya=function(b){p=g(b,1)};c.ka=function(){return l(f)};c.ub=function(b){f=g(b,1)};c.na=function(){return l(h)};c.wb=function(b){h=g(b);for(b=0;b<h[x];b++)if(b<4&&!Q(h[b]))h[b]="-"};c.fc=function(){return j};c.Dc=function(b){j=b};c.Sb=function(){k=[];p=[];f=[];h=[];d=w;a=[];n=\r
18860 w};c.P=function(){var b="",e;for(e=0;e<c.M[x];e++)b+=c.M[e][1]();return ia(b)};c.ua=function(b){var e=c.k(),o=v;if(e){t(e,b,";");c.za(c.P());o=r}return o};c.zc=function(b){t(b,"",B);c.za(P(b,da,B))};c.Hc=function(){var b=c.M,e=[],o;for(o=0;o<b[x];o++)V(e,b[o][0]+b[o][1]());V(e,da+c.P());return e.join(B)};c.Nc=function(b,e){var o=c.M,m=s.h;c.ua(b);s.h=e;for(b=0;b<o[x];b++)N(o[b][1]())||o[b][3]();s.h=m};c.Cb=function(){c.j.l(D,c.ja(),s.v)};c.Ea=function(){c.j.l(E,c.C(),s.sb)};c.Db=function(){c.j.l(G,\r
18861 c.ka(),0)};c.Ga=function(){c.j.l(J,c.na(),s.Ta)};c.Eb=function(){c.j.l(K,c.ma(),s.v)};c.Fa=function(){c.j.l(H,c.la(),s.v)};c.Oc=function(){c.j.l(L,c.fc(),0)};c.M=[[D,c.ja,c.tb,c.Cb,"."],[E,c.C,c.ya,c.Ea,""],[G,c.ka,c.ub,c.Db,""],[K,c.ma,c.vb,c.Eb,""],[J,c.na,c.wb,c.Ga,"."],[H,c.la,c.Aa,c.Fa,"."]]};Z.Kb=function(i){var l=this,g=i,t=new Z.$(g),k=function(){},p=function(f){var h=(new Date).getTime(),d;d=(h-f[3])*(g.Kc/1E3);if(d>=1){f[2]=Math.min(Math.floor(f[2]*1+d),g.Pb);f[3]=h}return f};l.H=function(f,h,d,a,j,c){var n,s=g.I,b=g.a[A];t.ua(d);n=X(t.C(),".");if(n[1]<500||a){if(j)n=p(n);if(a||!j||n[2]>=1){if(!a&&j)n[2]=n[2]*1-1;n[1]=n[1]*1+1;f="?utmwv="+ca+"&utmn="+Y()+(N(b.hostname)?"":"&utmhn="+S(b.hostname))+(g.U==100?"":"&utmsp="+S(g.U))+f;if(0==s||2==s){a=2==s?k:c||k;l.$a(g.oa+f,a)}if(1==s||\r
18862 2==s){f=("https:"==b.protocol?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif")+f+"&utmac="+h+"&utmcc="+l.ac(d);if(ka)f+="&gaq=1";l.$a(f,c)}}}t.ya(n.join("."));t.Ea()};l.$a=function(f,h){var d=new Image(1,1);d.src=f;d.onload=function(){d.onload=null;(h||k)()}};l.ac=function(f){var h=[],d=[D,J,H,K],a,j=t.k(),c;for(a=0;a<d[x];a++){c=P(j,d[a]+f,";");if(!N(c)){if(d[a]==H){c=X(c.split(f+".")[1],"|")[0];if(N(c))continue;c=f+"."+c}V(h,d[a]+c+";")}}return S(h.join("+"))}};Z.n=function(){var i=this;i.Y=[];i.hb=function(l){var g,t=i.Y,k;for(k=0;k<t.length;k++)g=l==t[k].q?t[k]:g;return g};i.Ob=function(l,g,t,k,p,f,h,d){var a=i.hb(l);if(w==a){a=new Z.n.Mb(l,g,t,k,p,f,h,d);V(i.Y,a)}else{a.Qa=g;a.Ab=t;a.zb=k;a.xb=p;a.Xa=f;a.yb=h;a.Za=d}return a}};Z.n.Lb=function(i,l,g,t,k,p){var f=this;f.Bb=i;f.Ba=l;f.D=g;f.Va=t;f.pb=k;f.qb=p;f.Ca=function(){return"&"+["utmt=item","tid="+S(f.Bb),"ipc="+S(f.Ba),"ipn="+S(f.D),"iva="+S(f.Va),"ipr="+S(f.pb),"iqt="+S(f.qb)].join("&utm")}};\r
18863 Z.n.Mb=function(i,l,g,t,k,p,f,h){var d=this;d.q=i;d.Qa=l;d.Ab=g;d.zb=t;d.xb=k;d.Xa=p;d.yb=f;d.Za=h;d.R=[];d.Nb=function(a,j,c,n,s){var b=d.gc(a),e=d.q;if(w==b)V(d.R,new Z.n.Lb(e,a,j,c,n,s));else{b.Bb=e;b.Ba=a;b.D=j;b.Va=c;b.pb=n;b.qb=s}};d.gc=function(a){var j,c=d.R,n;for(n=0;n<c.length;n++)j=a==c[n].Ba?c[n]:j;return j};d.Ca=function(){return"&"+["utmt=tran","id="+S(d.q),"st="+S(d.Qa),"to="+S(d.Ab),"tx="+S(d.zb),"sp="+S(d.xb),"ci="+S(d.Xa),"rg="+S(d.yb),"co="+S(d.Za)].join("&utmt")}};Z.Fb=function(i){function l(){var f,h,d;h="ShockwaveFlash";var a="$version",j=k.d?k.d.plugins:w;if(j&&j[x]>0)for(f=0;f<j[x]&&!d;f++){h=j[f];if(U(h.name,"Shockwave Flash"))d=h.description.split("Shockwave Flash ")[1]}else{h=h+"."+h;try{f=new ActiveXObject(h+".7");d=f.GetVariable(a)}catch(c){}if(!d)try{f=new ActiveXObject(h+".6");d="WIN 6,0,21,0";f.AllowScriptAccess="always";d=f.GetVariable(a)}catch(n){}if(!d)try{f=new ActiveXObject(h);d=f.GetVariable(a)}catch(s){}if(d){d=X(d.split(" ")[1],",");d=d[0]+\r
18864 "."+d[1]+" r"+d[2]}}return d?d:p}var g=i,t=g.e,k=this,p="-";k.V=t.screen;k.Sa=!k.V&&t.java?java.awt.Toolkit.getDefaultToolkit():w;k.d=t.navigator;k.W=p;k.xa=p;k.Wa=p;k.qa=p;k.pa=1;k.eb=p;k.bc=function(){var f;if(t.screen){k.W=k.V.width+"x"+k.V.height;k.xa=k.V.colorDepth+"-bit"}else if(k.Sa)try{f=k.Sa.getScreenSize();k.W=f.width+"x"+f.height}catch(h){}k.qa=W(k.d&&k.d.language?k.d.language:k.d&&k.d.browserLanguage?k.d.browserLanguage:p);k.pa=k.d&&k.d.javaEnabled()?1:0;k.eb=g.ha?l():p;k.Wa=S(g.a.characterSet?\r
18865 g.a.characterSet:g.a.charset?g.a.charset:p)};k.Ic=function(){return B+"utm"+["cs="+S(k.Wa),"sr="+k.W,"sc="+k.xa,"ul="+k.qa,"je="+k.pa,"fl="+S(k.eb)].join("&utm")};k.$b=function(){var f=g.a,h=t.history[x];f=k.d.appName+k.d.version+k.qa+k.d.platform+k.d.userAgent+k.pa+k.W+k.xa+(f[y]?f[y]:"")+(f.referrer?f.referrer:"");for(var d=f[x];h>0;)f+=h--^d++;return ia(f)}};Z.m=function(i,l,g,t){function k(d){var a="";d=W(d.split("://")[1]);if(U(d,"/")){d=d.split("/")[1];if(U(d,"?"))a=d.split("?")[0]}return a}function p(d){var a="";a=W(d.split("://")[1]);if(U(a,"/"))a=a.split("/")[0];return a}var f=t,h=this;h.c=i;h.rb=l;h.r=g;h.ic=function(d){var a=h.gb();return new Z.m.w(P(d,f.Ka+C,B),P(d,f.Na+C,B),P(d,f.Pa+C,B),h.Q(d,f.Ia,"(not set)"),h.Q(d,f.La,"(not set)"),h.Q(d,f.Oa,a&&!N(a.K)?T(a.K):w),h.Q(d,f.Ja,w))};h.jb=function(d){var a=p(d),j=k(d);if(U(a,"google")){d=d.split("?").join(B);\r
18866 if(U(d,B+f.oc+C))if(j==f.nc)return r}return v};h.gb=function(){var d,a=h.rb,j,c,n=f.T;if(!(N(a)||"0"==a||!U(a,"://")||h.jb(a))){d=p(a);for(j=0;j<n[x];j++){c=n[j];if(U(d,W(c.bb))){a=a.split("?").join(B);if(U(a,B+c.nb+C)){d=a.split(B+c.nb+C)[1];if(U(d,B))d=d.split(B)[0];return new Z.m.w(w,c.bb,w,"(organic)","organic",d,w)}}}}};h.Q=function(d,a,j){d=P(d,a+C,B);return j=!N(d)?T(d):!N(j)?j:"-"};h.uc=function(d){var a=f.ta,j=v,c;if(d&&"organic"==d.S){d=W(T(d.K));for(c=0;c<a[x];c++)j=j||W(a[c])==d}return j};\r
18867 h.hc=function(){var d="",a="";d=h.rb;if(!(N(d)||"0"==d||!U(d,"://")||h.jb(d))){d=d.split("://")[1];if(U(d,"/")){a=O(d,d.indexOf("/"));a=a.split("?")[0];d=W(d.split("/")[0])}if(0==d.indexOf("www."))d=O(d,4);return new Z.m.w(w,d,w,"(referral)","referral",w,a)}};h.Xb=function(d){var a="";if(f.ba){a=d&&d.hash?d.href.substring(d.href.indexOf("#")):"";a=""!=a?a+B:a}a+=d.search;return a};h.dc=function(){return new Z.m.w(w,"(direct)",w,"(direct)","(none)",w,w)};h.vc=function(d){var a=v,j,c=f.va;if(d&&"referral"==\r
18868 d.S){d=W(S(d.X));for(j=0;j<c[x];j++)a=a||U(d,W(c[j]))}return a};h.L=function(d){return w!=d&&d.mb()};h.cc=function(d,a){var j="",c="-",n,s=0,b,e,o=h.c;if(!d)return"";e=d.k();j=h.Xb(f.a[A]);if(f.z&&d.kb()){c=d.na();if(!N(c)&&!U(c,";")){d.Ga();return""}}c=P(e,J+o+".",";");n=h.ic(j);if(h.L(n)){j=P(j,f.Ma+C,B);if("1"==j&&!N(c))return""}if(!h.L(n)){n=h.gb();if(!N(c)&&h.uc(n))return""}if(!h.L(n)&&a){n=h.hc();if(!N(c)&&h.vc(n))return""}if(!h.L(n))if(N(c)&&a)n=h.dc();if(!h.L(n))return"";if(!N(c)){s=c.split(".");\r
18869 b=new Z.m.w;b.Zb(s.slice(4).join("."));b=W(b.Da())==W(n.Da());s=s[3]*1}if(!b||a){a=P(e,D+o+".",";");e=a.lastIndexOf(".");a=e>9?O(a,e+1)*1:0;s++;a=0==a?1:a;d.wb([o,h.r,a,s,n.Da()].join("."));d.Ga();return B+"utmcn=1"}else return B+"utmcr=1"}};\r
18870 Z.m.w=function(i,l,g,t,k,p,f){var h=this;h.q=i;h.X=l;h.ea=g;h.D=t;h.S=k;h.K=p;h.Ya=f;h.Da=function(){var d=[],a=[["cid",h.q],["csr",h.X],["gclid",h.ea],["ccn",h.D],["cmd",h.S],["ctr",h.K],["cct",h.Ya]],j,c;if(h.mb())for(j=0;j<a[x];j++)if(!N(a[j][1])){c=a[j][1].split("+").join("%20");c=c.split(" ").join("%20");V(d,"utm"+a[j][0]+C+c)}return d.join("|")};h.mb=function(){return!(N(h.q)&&N(h.X)&&N(h.ea))};h.Zb=function(d){var a=function(j){return T(P(d,"utm"+j+C,"|"))};h.q=a("cid");h.X=a("csr");h.ea=a("gclid");\r
18871 h.D=a("ccn");h.S=a("cmd");h.K=a("ctr");h.Ya=a("cct")}};Z.Ib=function(i,l,g,t){function k(j,c,n){var s;if(!N(n)){n=n.split(",");for(var b=0;b<n[x];b++){s=n[b];if(!N(s)){s=s.split(h);if(s[x]==4)c[s[0]]=[s[1],s[2],j]}}}}var p=this,f=l,h=C,d=i,a=t;p.O=g;p.sa="";p.p={};p.tc=function(){var j;j=X(P(p.O.k(),H+f+".",";"),f+".")[1];if(!N(j)){j=j.split("|");k(1,p.p,j[1]);p.sa=j[0];p.Z()}};p.Z=function(){p.Qb();var j=p.sa,c,n,s="";for(c in p.p)if((n=p.p[c])&&1===n[2])s+=c+h+n[0]+h+n[1]+h+1+",";N(s)||(j+="|"+s);if(N(j))p.O.Vb();else{p.O.Aa(f+"."+j);p.O.Fa()}};p.Ec=\r
18872 function(j){p.sa=j;p.Z()};p.Cc=function(j,c,n,s){if(1!=s&&2!=s&&3!=s)s=3;var b=v;if(c&&n&&j>0&&j<=d.ob){c=S(c);n=S(n);if(c[x]+n[x]<=64){p.p[j]=[c,n,s];p.Z();b=r}}return b};p.mc=function(j){if((j=p.p[j])&&1===j[2])return j[1]};p.Ub=function(j){var c=p.p;if(c[j]){delete c[j];p.Z()}};p.Qb=function(){a._clearKey(8);a._clearKey(9);a._clearKey(11);var j=p.p,c,n;for(n in j)if(c=j[n]){a._setKey(8,n,c[0]);a._setKey(9,n,c[1]);(c=c[2])&&3!=c&&a._setKey(11,n,""+c)}}};Z.N=function(){function i(m,q,u,z){if(w==f[m])f[m]={};if(w==f[m][q])f[m][q]=[];f[m][q][u]=z}function l(m,q){if(w!=f[m]&&w!=f[m][q]){f[m][q]=w;q=r;var u;for(u=0;u<a[x];u++)if(w!=f[m][a[u]]){q=v;break}if(q)f[m]=w}}function g(m){var q="",u=v,z,M;for(z=0;z<a[x];z++){M=m[a[z]];if(w!=M){if(u)q+=a[z];q+=t(M);u=v}else u=r}return q}function t(m){var q=[],u,z;for(z=0;z<m[x];z++)if(w!=m[z]){u="";if(z!=o&&w==m[z-1])u+=z.toString()+s;u+=k(m[z]);V(q,u)}return j+q.join(n)+c}function k(m){var q="",u,z,M;for(u=0;u<\r
18873 m[x];u++){z=m.charAt(u);M=e[z];q+=w!=M?M:z}return q}var p=this,f={},h="k",d="v",a=[h,d],j="(",c=")",n="*",s="!",b="'",e={};e[b]="'0";e[c]="'1";e[n]="'2";e[s]="'3";var o=1;p.qc=function(m){return w!=f[m]};p.G=function(){var m="",q;for(q in f)if(w!=f[q])m+=q.toString()+g(f[q]);return m};p.Ac=function(m){if(m==w)return p.G();var q=m.G(),u;for(u in f)if(w!=f[u]&&!m.qc(u))q+=u.toString()+g(f[u]);return q};p._setKey=function(m,q,u){if(typeof u!="string")return v;i(m,h,q,u);return r};p._setValue=function(m,\r
18874 q,u){if(typeof u!="number"&&(w==Number||!(u instanceof Number))||Math.round(u)!=u||u==NaN||u==Infinity)return v;i(m,d,q,u.toString());return r};p._getKey=function(m,q){return w!=f[m]&&w!=f[m][h]?f[m][h][q]:w};p._getValue=function(m,q){return w!=f[m]&&w!=f[m][d]?f[m][d][q]:w};p._clearKey=function(m){l(m,h)};p._clearValue=function(m){l(m,d)}};Z.Jb=function(i,l){var g=this;g.Qc=l;g.xc=i;g._trackEvent=function(t,k,p){return l._trackEvent(g.xc,t,k,p)}};Z.aa=function(i,l){function g(){if("auto"==c.b){var b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.b=b}c.b=W(c.b)}function t(){var b=c.b,e=b.indexOf("www.google.")*b.indexOf(".google.")*b.indexOf("google.");return e||"/"!=c.h||b.indexOf("google.org")>-1}function k(b,e,o){if(N(b)||N(e)||N(o))return"-";b=P(b,D+a.c+".",e);if(!N(b)){b=b.split(".");b[5]=b[5]?b[5]*1+1:1;b[3]=b[4];b[4]=o;b=b.join(".")}return b}function p(){return"file:"!=c.a[A].protocol&&t()}function f(b){if(!b||""==b)return"";for(;ea(b.charAt(0));)b=\r
18875 O(b,1);for(;ea(b.charAt(b[x]-1));)b=O(b,0,b[x]-1);return b}function h(b,e,o,m){if(!N(b())){e(m?T(b()):b());U(b(),";")||o()}}function d(b){var e,o=""!=b&&c.a[A].host!=b;if(o)for(e=0;e<c.t[x];e++)o=o&&fa(W(b),W(c.t[e]))==-1;return o}var a=this,j=w,c=new Z.Gb,n=v,s=w;a.e=window;a.r=Math.round((new Date).getTime()/1E3);a.s=i||"UA-XXXXX-X";a.ab=c.a.referrer;a.ia=w;a.f=w;a.B=w;a.F=v;a.A=w;a.Ua="";a.g=w;a.cb=w;a.c=w;a.i=w;c.o=l?S(l):w;a.wc=function(){var b=v;if(a.B)b=a.B.match(/^[0-9a-z-_.]{10,1200}$/i);\r
18876 return b};a.jc=function(){return Y()^a.A.$b()&2147483647};a.ec=function(){if(!c.b||""==c.b||"none"==c.b){c.b="";return 1}g();return c.Ra?ia(c.b):1};a.Yb=function(b,e){if(N(b))b="-";else{e+=c.h&&"/"!=c.h?c.h:"";e=b.indexOf(e);b=e>=0&&e<=8?"0":"["==b.charAt(0)&&"]"==b.charAt(b[x]-1)?"-":b}return b};a.wa=function(b){var e="",o=c.a;e+=c.fa?a.A.Ic():"";e+=c.da?a.Ua:"";e+=c.ga&&!N(o.title)?"&utmdt="+S(o.title):"";e+="&utmhid="+ja()+"&utmr="+S(a.ia)+"&utmp="+S(a.Bc(b));return e};a.Bc=function(b){var e=c.a[A];\r
18877 return b=w!=b&&""!=b?S(b,r):S(e.pathname+e.search,r)};a.Lc=function(b){if(a.J()){var e="";if(a.g!=w&&a.g.G()[x]>0)e+="&utme="+S(a.g.G());e+=a.wa(b);j.H(e,a.s,a.c)}};a.Tb=function(){var b=new Z.$(c);return b.ua(a.c)?b.Hc():w};a._getLinkerUrl=function(b,e){var o=b.split("#"),m=b,q=a.Tb();if(q)if(e&&1>=o[x])m+="#"+q;else if(!e||1>=o[x])if(1>=o[x])m+=(U(b,"?")?B:"?")+q;else m=o[0]+(U(b,"?")?B:"?")+q+"#"+o[1];return m};a.Fc=function(){var b;if(a.wc()){a.i.Dc(a.B);a.i.Oc();Z._gasoDomain=c.b;Z._gasoCPath=\r
18878 c.h;b=c.a.createElement("script");b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.B+B+Y();c.a.getElementsByTagName("head")[0].appendChild(b)}};a.pc=function(){var b=a.r,e=a.i,o=e.k(),m=a.c+"",q=c.e,u=q?q.gaGlobal:w,z,M=U(o,D+m+"."),la=U(o,E+m),ma=U(o,G+m),F,I=[],R="",ha=v;o=N(o)?"":o;if(c.z){z=c.a[A]&&c.a[A].hash?c.a[A].href.substring(c.a[A].href.indexOf("#")):"";if(c.ba&&!N(z))R=z+B;R+=c.a[A].search;if(!N(R)&&U(R,D)){e.zc(R);e.kb()||e.Sb();\r
18879 F=e.ja()}h(e.ma,e.vb,e.Eb,true);h(e.la,e.Aa,e.Fa)}if(N(F))if(M)if(!la||!ma){F=k(o,";",b);a.F=r}else{F=P(o,D+m+".",";");I=X(P(o,E+m,";"),".")}else{F=ga([m,a.jc(),b,b,b,1],".");ha=a.F=r}else if(N(e.C())||N(e.ka())){F=k(R,B,b);a.F=r}else{I=X(e.C(),".");m=I[0]}F=F.split(".");if(q&&u&&u.dh==m&&!c.o){F[4]=u.sid?u.sid:F[4];if(ha){F[3]=u.sid?u.sid:F[4];if(u.vid){b=u.vid.split(".");F[1]=b[0];F[2]=b[1]}}}e.tb(F.join("."));I[0]=m;I[1]=I[1]?I[1]:0;I[2]=w!=I[2]?I[2]:c.Jc;I[3]=I[3]?I[3]:F[4];e.ya(I.join("."));\r
18880 e.ub(m);N(e.lc())||e.za(e.P());e.Cb();e.Ea();e.Db()};a.rc=function(){j=new Z.Kb(c)};a._initData=function(){var b;if(!n){if(!a.A){a.A=new Z.Fb(c);a.A.bc()}a.c=a.ec();a.i=new Z.$(c);a.g=new Z.N;s=new Z.Ib(c,a.c,a.i,a.g);a.rc()}if(p()){a.pc();s.tc()}if(!n){if(p()){a.ia=a.Yb(a.ab,c.a.domain);if(c.da){b=new Z.m(a.c,a.ia,a.r,c);a.Ua=b.cc(a.i,a.F)}}a.cb=new Z.N;n=r}Z.ib||a.sc()};a._visitCode=function(){a._initData();var b=P(a.i.k(),D+a.c+".",";");b=b.split(".");return b[x]<4?"":b[1]};a._cookiePathCopy=function(b){a._initData();\r
18881 a.i&&a.i.Nc(a.c,b)};a.sc=function(){var b=c.a[A].hash;if(b&&1==b.indexOf("gaso="))b=P(b,"gaso=",B);else b=(b=c.e.name)&&0<=b.indexOf("gaso=")?P(b,"gaso=",B):P(a.i.k(),L,";");if(b[x]>=10){a.B=b;a.Fc()}Z.ib=r};a.J=function(){return a._visitCode()%1E4<c.U*100};a.Gc=function(){var b,e,o=c.a.links;if(!c.lb){b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.t.push("."+b)}for(b=0;b<o[x]&&(c.ra==-1||b<c.ra);b++){e=o[b];if(d(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.yc;e.onclick=function(m){var q=\r
18882 !this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";q=q&&!a.Rb(m);a.Mc(m,this,q);return q?v:this.gatcOnclick?this.gatcOnclick(m):r}}}};a.yc=function(){};a._trackPageview=function(b){if(p()){a._initData();c.t&&a.Gc();a.Lc(b);a.F=v}};a._trackTrans=function(){var b=a.c,e=[],o,m,q;a._initData();if(a.f&&a.J()){for(o=0;o<a.f.Y[x];o++){m=a.f.Y[o];V(e,m.Ca());for(q=0;q<m.R[x];q++)V(e,m.R[q].Ca())}for(o=0;o<e[x];o++)j.H(e[o],a.s,b,r)}};a._setTrans=function(){var b=c.a,e,o,m;b=b.getElementById?\r
18883 b.getElementById("utmtrans"):b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:w;a._initData();if(b&&b.value){a.f=new Z.n;m=b.value.split("UTM:");c.u=!c.u||""==c.u?"|":c.u;for(b=0;b<m[x];b++){m[b]=f(m[b]);e=m[b].split(c.u);for(o=0;o<e[x];o++)e[o]=f(e[o]);if("T"==e[0])a._addTrans(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]);else"I"==e[0]&&a._addItem(e[1],e[2],e[3],e[4],e[5],e[6])}}};a._addTrans=function(b,e,o,m,q,u,z,M){a.f=a.f?a.f:new Z.n;return a.f.Ob(b,e,o,m,q,u,z,M)};a._addItem=function(b,e,o,m,q,u){var z;\r
18884 a.f=a.f?a.f:new Z.n;(z=a.f.hb(b))||(z=a._addTrans(b,"","","","","","",""));z.Nb(e,o,m,q,u)};a._setVar=function(b){if(b&&""!=b&&t()){a._initData();s.Ec(S(b));a.J()&&j.H("&utmt=var",a.s,a.c)}};a._setCustomVar=function(b,e,o,m){a._initData();return s.Cc(b,e,o,m)};a._deleteCustomVar=function(b){a._initData();s.Ub(b)};a._getVisitorCustomVar=function(b){a._initData();return s.mc(b)};a._setMaxCustomVariables=function(b){c.ob=b};a._link=function(b,e){if(c.z&&b){a._initData();c.a[A].href=a._getLinkerUrl(b,\r
18885 e)}};a._linkByPost=function(b,e){if(c.z&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,o){a.g._setKey(b,e,o)};a._setXValue=function(b,e,o){a.g._setValue(b,e,o)};a._getXKey=function(b,e){return a.g._getKey(b,e)};a._getXValue=function(b,e){return a.g.getValue(b,e)};a._clearXKey=function(b){a.g._clearKey(b)};a._clearXValue=function(b){a.g._clearValue(b)};a._createXObj=function(){a._initData();return new Z.N};a._sendXEvent=function(b){var e="";a._initData();\r
18886 if(a.J()){e+="&utmt=event&utme="+S(a.g.Ac(b))+a.wa();j.H(e,a.s,a.c,v,r)}};a._createEventTracker=function(b){a._initData();return new Z.Jb(b,a)};a._trackEvent=function(b,e,o,m){var q=a.cb;if(w!=b&&w!=e&&""!=b&&""!=e){q._clearKey(5);q._clearValue(5);(b=q._setKey(5,1,b)&&q._setKey(5,2,e)&&(w==o||q._setKey(5,3,o))&&(w==m||q._setValue(5,1,m)))&&a._sendXEvent(q)}else b=v;return b};a.Mc=function(b,e,o){a._initData();if(a.J()){var m=new Z.N;m._setKey(6,1,e.href);var q=o?function(){a.db(b,e)}:w;j.H("&utmt=event&utme="+\r
18887 S(m.G())+a.wa(),a.s,a.c,v,r,q);if(o){var u=this;c.e.setTimeout(function(){u.db(b,e)},500)}}};a.db=function(b,e){if(!b)b=c.e.event;var o=r;if(e.gatcOnclick)o=e.gatcOnclick(b);if(o||typeof o=="undefined")if(!e.target||e.target=="_self")c.e[A]=e.href;else if(e.target=="_top")c.e.top.document[A]=e.href;else if(e.target=="_parent")c.e.parent.document[A]=e.href};a.Rb=function(b){if(!b)b=c.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&c.e.Event)e=b.modifiers&c.e.Event.CONTROL_MASK||\r
18888 b.modifiers&c.e.Event.SHIFT_MASK||b.modifiers&c.e.Event.ALT_MASK;return e};a.Pc=function(){return c};a._setDomainName=function(b){c.b=b};a._addOrganic=function(b,e,o){c.T.splice(o?0:c.T.length,0,new Z.Ha(b,e))};a._clearOrganic=function(){c.T=[]};a._addIgnoredOrganic=function(b){V(c.ta,b)};a._clearIgnoredOrganic=function(){c.ta=[]};a._addIgnoredRef=function(b){V(c.va,b)};a._clearIgnoredRef=function(){c.va=[]};a._setAllowHash=function(b){c.Ra=b?1:0};a._setCampaignTrack=function(b){c.da=b?1:0};a._setClientInfo=\r
18889 function(b){c.fa=b?1:0};a._getClientInfo=function(){return c.fa};a._setCookiePath=function(b){c.h=b};a._setTransactionDelim=function(b){c.u=b};a._setCookieTimeout=function(b){a._setCampaignCookieTimeout(b*1E3)};a._setCampaignCookieTimeout=function(b){c.Ta=b};a._setDetectFlash=function(b){c.ha=b?1:0};a._getDetectFlash=function(){return c.ha};a._setDetectTitle=function(b){c.ga=b?1:0};a._getDetectTitle=function(){return c.ga};a._setLocalGifPath=function(b){c.oa=b};a._getLocalGifPath=function(){return c.oa};\r
18890 a._setLocalServerMode=function(){c.I=0};a._setRemoteServerMode=function(){c.I=1};a._setLocalRemoteServerMode=function(){c.I=2};a._getServiceMode=function(){return c.I};a._setSampleRate=function(b){c.U=b};a._setSessionTimeout=function(b){a._setSessionCookieTimeout(b*1E3)};a._setSessionCookieTimeout=function(b){c.sb=b};a._setAllowLinker=function(b){c.z=b?1:0};a._setAllowAnchor=function(b){c.ba=b?1:0};a._setCampNameKey=function(b){c.Ia=b};a._setCampContentKey=function(b){c.Ja=b};a._setCampIdKey=function(b){c.Ka=\r
18891 b};a._setCampMediumKey=function(b){c.La=b};a._setCampNOKey=function(b){c.Ma=b};a._setCampSourceKey=function(b){c.Na=b};a._setCampTermKey=function(b){c.Oa=b};a._setCampCIdKey=function(b){c.Pa=b};a._getAccount=function(){return a.s};a._setAccount=function(b){a.s=b};a._setNamespace=function(b){c.o=b?S(b):w};a._getVersion=function(){return ca};a._setAutoTrackOutbound=function(b){c.t=[];if(b)c.t=b};a._setTrackOutboundSubdomains=function(b){c.lb=b};a._setHrefExamineLimit=function(b){c.ra=b};a._setReferrerOverride=\r
18892 function(b){a.ab=b};a._setCookiePersistence=function(b){a._setVisitorCookieTimeout(b)};a._setVisitorCookieTimeout=function(b){c.v=b}};Z._getTracker=function(i,l){return new Z.aa(i,l)};var ka=v,$={ca:{},_createAsyncTracker:function(i,l){l=l||"";i=new Z.aa(i);$.ca[l]=i;ka=r;return i},_getAsyncTracker:function(i){i=i||"";var l=$.ca[i];if(!l){l=new Z.aa;$.ca[i]=l;ka=r}return l},push:function(){for(var i=arguments,l=0,g=0;g<i[x];g++)try{if(typeof i[g]==="function")i[g]();else{var t="",k=i[g][0],p=k.lastIndexOf(".");if(p>0){t=O(k,0,p);k=O(k,p+1)}var f=$._getAsyncTracker(t);f[k].apply(f,i[g].slice(1))}}catch(h){l++}return l}};window[aa]=Z;function na(){var i=window[ba],l=v;if(i&&typeof i.push=="function"){l=i.constructor==Array;if(!l)return}window[ba]=$;l&&$.push.apply($,i)}na();})()\r
18893 \r
18894 \r
18895 \r
18896 /* Based on Alex Arnell's inheritance implementation. */\r
18897 var Class = {\r
18898   create: function() {\r
18899     var parent = null, properties = $A(arguments);\r
18900     if (Object.isFunction(properties[0]))\r
18901       parent = properties.shift();\r
18902 \r
18903     function klass() {\r
18904       this.initialize.apply(this, arguments);\r
18905     }\r
18906 \r
18907     Object.extend(klass, Class.Methods);\r
18908     klass.superclass = parent;\r
18909     klass.subclasses = [];\r
18910 \r
18911     if (parent) {\r
18912       var subclass = function() { };\r
18913       subclass.prototype = parent.prototype;\r
18914       klass.prototype = new subclass;\r
18915       parent.subclasses.push(klass);\r
18916     }\r
18917 \r
18918     for (var i = 0; i < properties.length; i++)\r
18919       klass.addMethods(properties[i]);\r
18920 \r
18921     if (!klass.prototype.initialize)\r
18922       klass.prototype.initialize = this.emptyFunction;\r
18923 \r
18924     klass.prototype.constructor = klass;\r
18925 \r
18926     return klass;\r
18927   },\r
18928   emptyFunction:function () {},\r
18929 \r
18930 };\r
18931 \r
18932 Class.Methods = {\r
18933   addMethods: function(source) {\r
18934     var ancestor   = this.superclass && this.superclass.prototype;\r
18935     var properties = Object.keys(source);\r
18936 \r
18937     if (!Object.keys({ toString: true }).length)\r
18938       properties.push("toString", "valueOf");\r
18939 \r
18940     for (var i = 0, length = properties.length; i < length; i++) {\r
18941       var property = properties[i], value = source[property];\r
18942       if (ancestor && Object.isFunction(value) &&\r
18943           value.argumentNames().first() == "$super") {\r
18944         var method = value, value = Object.extend((function(m) {\r
18945           return function() { return ancestor[m].apply(this, arguments) };\r
18946         })(property).wrap(method), {\r
18947           valueOf:  function() { return method },\r
18948           toString: function() { return method.toString() }\r
18949         });\r
18950       }\r
18951       this.prototype[property] = value;\r
18952     }\r
18953 \r
18954     return this;\r
18955   }\r
18956 };\r
18957 \r
18958 Object.extend = function(destination, source) {\r
18959   for (var property in source)\r
18960     destination[property] = source[property];\r
18961   return destination;\r
18962 };\r
18963 \r
18964 Object.extend(Object, {\r
18965   inspect: function(object) {\r
18966     try {\r
18967       if (Object.isUndefined(object)) return 'undefined';\r
18968       if (object === null) return 'null';\r
18969       return object.inspect ? object.inspect() : String(object);\r
18970     } catch (e) {\r
18971       if (e instanceof RangeError) return '...';\r
18972       throw e;\r
18973     }\r
18974   },\r
18975 \r
18976   toJSON: function(object) {\r
18977     var type = typeof object;\r
18978     switch (type) {\r
18979       case 'undefined':\r
18980       case 'function':\r
18981       case 'unknown': return;\r
18982       case 'boolean': return object.toString();\r
18983     }\r
18984 \r
18985     if (object === null) return 'null';\r
18986     if (object.toJSON) return object.toJSON();\r
18987     if (Object.isElement(object)) return;\r
18988 \r
18989     var results = [];\r
18990     for (var property in object) {\r
18991       var value = Object.toJSON(object[property]);\r
18992       if (!Object.isUndefined(value))\r
18993         results.push(property.toJSON() + ': ' + value);\r
18994     }\r
18995 \r
18996     return '{' + results.join(', ') + '}';\r
18997   },\r
18998 \r
18999   toQueryString: function(object) {\r
19000     return $H(object).toQueryString();\r
19001   },\r
19002 \r
19003   toHTML: function(object) {\r
19004     return object && object.toHTML ? object.toHTML() : String.interpret(object);\r
19005   },\r
19006 \r
19007   keys: function(object) {\r
19008     var keys = [];\r
19009     for (var property in object)\r
19010       keys.push(property);\r
19011     return keys;\r
19012   },\r
19013 \r
19014   values: function(object) {\r
19015     var values = [];\r
19016     for (var property in object)\r
19017       values.push(object[property]);\r
19018     return values;\r
19019   },\r
19020 \r
19021   clone: function(object) {\r
19022     return Object.extend({ }, object);\r
19023   },\r
19024 \r
19025   isElement: function(object) {\r
19026     return object && object.nodeType == 1;\r
19027   },\r
19028 \r
19029   isArray: function(object) {\r
19030     return object != null && typeof object == "object" &&\r
19031       'splice' in object && 'join' in object;\r
19032   },\r
19033 \r
19034   isHash: function(object) {\r
19035     return object instanceof Hash;\r
19036   },\r
19037 \r
19038   isFunction: function(object) {\r
19039     return typeof object == "function";\r
19040   },\r
19041 \r
19042   isString: function(object) {\r
19043     return typeof object == "string";\r
19044   },\r
19045 \r
19046   isNumber: function(object) {\r
19047     return typeof object == "number";\r
19048   },\r
19049 \r
19050   isUndefined: function(object) {\r
19051     return typeof object == "undefined";\r
19052   }\r
19053 });\r
19054 \r
19055 function $A(iterable) {\r
19056   if (!iterable) return [];\r
19057   if (iterable.toArray) return iterable.toArray();\r
19058   var length = iterable.length || 0, results = new Array(length);\r
19059   while (length--) results[length] = iterable[length];\r
19060   return results;\r
19061 }\r
19062 \r
19063 if (WebKit = navigator.userAgent.indexOf('AppleWebKit/') > -1) {\r
19064   $A = function(iterable) {\r
19065     if (!iterable) return [];\r
19066     if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&\r
19067         iterable.toArray) return iterable.toArray();\r
19068     var length = iterable.length || 0, results = new Array(length);\r
19069     while (length--) results[length] = iterable[length];\r
19070     return results;\r
19071   };\r
19072 }\r
19073 \r
19074 \r
19075 \r
19076 /* \r
19077  * Box2Djs (port of Box2DFlash 1.4.3.1) - http://box2d-js.sourceforge.net/\r
19078  * Single-filed and jsmined ( http://code.google.com/p/jsmin-php/ ) by Mr.doob\r
19079  */\r
19080 var b2Settings=Class.create();b2Settings.prototype={initialize:function(){}}\r
19081 b2Settings.USHRT_MAX=0x0000ffff;b2Settings.b2_pi=Math.PI;b2Settings.b2_massUnitsPerKilogram=1.0;b2Settings.b2_timeUnitsPerSecond=1.0;b2Settings.b2_lengthUnitsPerMeter=30.0;b2Settings.b2_maxManifoldPoints=2;b2Settings.b2_maxShapesPerBody=64;b2Settings.b2_maxPolyVertices=8;b2Settings.b2_maxProxies=1024;b2Settings.b2_maxPairs=8*b2Settings.b2_maxProxies;b2Settings.b2_linearSlop=0.005*b2Settings.b2_lengthUnitsPerMeter;b2Settings.b2_angularSlop=2.0/180.0*b2Settings.b2_pi;b2Settings.b2_velocityThreshold=1.0*b2Settings.b2_lengthUnitsPerMeter/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_maxLinearCorrection=0.2*b2Settings.b2_lengthUnitsPerMeter;b2Settings.b2_maxAngularCorrection=8.0/180.0*b2Settings.b2_pi;b2Settings.b2_contactBaumgarte=0.2;b2Settings.b2_timeToSleep=0.5*b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_linearSleepTolerance=0.01*b2Settings.b2_lengthUnitsPerMeter/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2_angularSleepTolerance=2.0/180.0/b2Settings.b2_timeUnitsPerSecond;b2Settings.b2Assert=function(a)\r
19082 {if(!a){var nullVec;nullVec.x++;}};\r
19083 var b2Vec2=Class.create();b2Vec2.prototype={initialize:function(x_,y_){this.x=x_;this.y=y_;},SetZero:function(){this.x=0.0;this.y=0.0;},Set:function(x_,y_){this.x=x_;this.y=y_;},SetV:function(v){this.x=v.x;this.y=v.y;},Negative:function(){return new b2Vec2(-this.x,-this.y);},Copy:function(){return new b2Vec2(this.x,this.y);},Add:function(v)\r
19084 {this.x+=v.x;this.y+=v.y;},Subtract:function(v)\r
19085 {this.x-=v.x;this.y-=v.y;},Multiply:function(a)\r
19086 {this.x*=a;this.y*=a;},MulM:function(A)\r
19087 {var tX=this.x;this.x=A.col1.x*tX+A.col2.x*this.y;this.y=A.col1.y*tX+A.col2.y*this.y;},MulTM:function(A)\r
19088 {var tX=b2Math.b2Dot(this,A.col1);this.y=b2Math.b2Dot(this,A.col2);this.x=tX;},CrossVF:function(s)\r
19089 {var tX=this.x;this.x=s*this.y;this.y=-s*tX;},CrossFV:function(s)\r
19090 {var tX=this.x;this.x=-s*this.y;this.y=s*tX;},MinV:function(b)\r
19091 {this.x=this.x<b.x?this.x:b.x;this.y=this.y<b.y?this.y:b.y;},MaxV:function(b)\r
19092 {this.x=this.x>b.x?this.x:b.x;this.y=this.y>b.y?this.y:b.y;},Abs:function()\r
19093 {this.x=Math.abs(this.x);this.y=Math.abs(this.y);},Length:function()\r
19094 {return Math.sqrt(this.x*this.x+this.y*this.y);},Normalize:function()\r
19095 {var length=this.Length();if(length<Number.MIN_VALUE)\r
19096 {return 0.0;}\r
19097 var invLength=1.0/length;this.x*=invLength;this.y*=invLength;return length;},IsValid:function()\r
19098 {return b2Math.b2IsValid(this.x)&&b2Math.b2IsValid(this.y);},x:null,y:null};b2Vec2.Make=function(x_,y_)\r
19099 {return new b2Vec2(x_,y_);};\r
19100 var b2Mat22=Class.create();b2Mat22.prototype={initialize:function(angle,c1,c2)\r
19101 {if(angle==null)angle=0;this.col1=new b2Vec2();this.col2=new b2Vec2();if(c1!=null&&c2!=null){this.col1.SetV(c1);this.col2.SetV(c2);}\r
19102 else{var c=Math.cos(angle);var s=Math.sin(angle);this.col1.x=c;this.col2.x=-s;this.col1.y=s;this.col2.y=c;}},Set:function(angle)\r
19103 {var c=Math.cos(angle);var s=Math.sin(angle);this.col1.x=c;this.col2.x=-s;this.col1.y=s;this.col2.y=c;},SetVV:function(c1,c2)\r
19104 {this.col1.SetV(c1);this.col2.SetV(c2);},Copy:function(){return new b2Mat22(0,this.col1,this.col2);},SetM:function(m)\r
19105 {this.col1.SetV(m.col1);this.col2.SetV(m.col2);},AddM:function(m)\r
19106 {this.col1.x+=m.col1.x;this.col1.y+=m.col1.y;this.col2.x+=m.col2.x;this.col2.y+=m.col2.y;},SetIdentity:function()\r
19107 {this.col1.x=1.0;this.col2.x=0.0;this.col1.y=0.0;this.col2.y=1.0;},SetZero:function()\r
19108 {this.col1.x=0.0;this.col2.x=0.0;this.col1.y=0.0;this.col2.y=0.0;},Invert:function(out)\r
19109 {var a=this.col1.x;var b=this.col2.x;var c=this.col1.y;var d=this.col2.y;var det=a*d-b*c;det=1.0/det;out.col1.x=det*d;out.col2.x=-det*b;out.col1.y=-det*c;out.col2.y=det*a;return out;},Solve:function(out,bX,bY)\r
19110 {var a11=this.col1.x;var a12=this.col2.x;var a21=this.col1.y;var a22=this.col2.y;var det=a11*a22-a12*a21;det=1.0/det;out.x=det*(a22*bX-a12*bY);out.y=det*(a11*bY-a21*bX);return out;},Abs:function()\r
19111 {this.col1.Abs();this.col2.Abs();},col1:new b2Vec2(),col2:new b2Vec2()};\r
19112 var b2Math=Class.create();b2Math.prototype={initialize:function(){}}\r
19113 b2Math.b2IsValid=function(x)\r
19114 {return isFinite(x);};b2Math.b2Dot=function(a,b)\r
19115 {return a.x*b.x+a.y*b.y;};b2Math.b2CrossVV=function(a,b)\r
19116 {return a.x*b.y-a.y*b.x;};b2Math.b2CrossVF=function(a,s)\r
19117 {var v=new b2Vec2(s*a.y,-s*a.x);return v;};b2Math.b2CrossFV=function(s,a)\r
19118 {var v=new b2Vec2(-s*a.y,s*a.x);return v;};b2Math.b2MulMV=function(A,v)\r
19119 {var u=new b2Vec2(A.col1.x*v.x+A.col2.x*v.y,A.col1.y*v.x+A.col2.y*v.y);return u;};b2Math.b2MulTMV=function(A,v)\r
19120 {var u=new b2Vec2(b2Math.b2Dot(v,A.col1),b2Math.b2Dot(v,A.col2));return u;};b2Math.AddVV=function(a,b)\r
19121 {var v=new b2Vec2(a.x+b.x,a.y+b.y);return v;};b2Math.SubtractVV=function(a,b)\r
19122 {var v=new b2Vec2(a.x-b.x,a.y-b.y);return v;};b2Math.MulFV=function(s,a)\r
19123 {var v=new b2Vec2(s*a.x,s*a.y);return v;};b2Math.AddMM=function(A,B)\r
19124 {var C=new b2Mat22(0,b2Math.AddVV(A.col1,B.col1),b2Math.AddVV(A.col2,B.col2));return C;};b2Math.b2MulMM=function(A,B)\r
19125 {var C=new b2Mat22(0,b2Math.b2MulMV(A,B.col1),b2Math.b2MulMV(A,B.col2));return C;};b2Math.b2MulTMM=function(A,B)\r
19126 {var c1=new b2Vec2(b2Math.b2Dot(A.col1,B.col1),b2Math.b2Dot(A.col2,B.col1));var c2=new b2Vec2(b2Math.b2Dot(A.col1,B.col2),b2Math.b2Dot(A.col2,B.col2));var C=new b2Mat22(0,c1,c2);return C;};b2Math.b2Abs=function(a)\r
19127 {return a>0.0?a:-a;};b2Math.b2AbsV=function(a)\r
19128 {var b=new b2Vec2(b2Math.b2Abs(a.x),b2Math.b2Abs(a.y));return b;};b2Math.b2AbsM=function(A)\r
19129 {var B=new b2Mat22(0,b2Math.b2AbsV(A.col1),b2Math.b2AbsV(A.col2));return B;};b2Math.b2Min=function(a,b)\r
19130 {return a<b?a:b;};b2Math.b2MinV=function(a,b)\r
19131 {var c=new b2Vec2(b2Math.b2Min(a.x,b.x),b2Math.b2Min(a.y,b.y));return c;};b2Math.b2Max=function(a,b)\r
19132 {return a>b?a:b;};b2Math.b2MaxV=function(a,b)\r
19133 {var c=new b2Vec2(b2Math.b2Max(a.x,b.x),b2Math.b2Max(a.y,b.y));return c;};b2Math.b2Clamp=function(a,low,high)\r
19134 {return b2Math.b2Max(low,b2Math.b2Min(a,high));};b2Math.b2ClampV=function(a,low,high)\r
19135 {return b2Math.b2MaxV(low,b2Math.b2MinV(a,high));};b2Math.b2Swap=function(a,b)\r
19136 {var tmp=a[0];a[0]=b[0];b[0]=tmp;};b2Math.b2Random=function()\r
19137 {return Math.random()*2-1;};b2Math.b2NextPowerOfTwo=function(x)\r
19138 {x|=(x>>1)&0x7FFFFFFF;x|=(x>>2)&0x3FFFFFFF;x|=(x>>4)&0x0FFFFFFF;x|=(x>>8)&0x00FFFFFF;x|=(x>>16)&0x0000FFFF;return x+1;};b2Math.b2IsPowerOfTwo=function(x)\r
19139 {var result=x>0&&(x&(x-1))==0;return result;};b2Math.tempVec2=new b2Vec2();b2Math.tempVec3=new b2Vec2();b2Math.tempVec4=new b2Vec2();b2Math.tempVec5=new b2Vec2();b2Math.tempMat=new b2Mat22();\r
19140 var b2AABB=Class.create();b2AABB.prototype={IsValid:function(){var dX=this.maxVertex.x;var dY=this.maxVertex.y;dX=this.maxVertex.x;dY=this.maxVertex.y;dX-=this.minVertex.x;dY-=this.minVertex.y;var valid=dX>=0.0&&dY>=0.0;valid=valid&&this.minVertex.IsValid()&&this.maxVertex.IsValid();return valid;},minVertex:new b2Vec2(),maxVertex:new b2Vec2(),initialize:function(){this.minVertex=new b2Vec2();this.maxVertex=new b2Vec2();}};\r
19141 var b2Bound=Class.create();b2Bound.prototype={IsLower:function(){return(this.value&1)==0;},IsUpper:function(){return(this.value&1)==1;},Swap:function(b){var tempValue=this.value;var tempProxyId=this.proxyId;var tempStabbingCount=this.stabbingCount;this.value=b.value;this.proxyId=b.proxyId;this.stabbingCount=b.stabbingCount;b.value=tempValue;b.proxyId=tempProxyId;b.stabbingCount=tempStabbingCount;},value:0,proxyId:0,stabbingCount:0,initialize:function(){}}\r
19142 \r
19143 var b2BoundValues=Class.create();b2BoundValues.prototype={lowerValues:[0,0],upperValues:[0,0],initialize:function(){this.lowerValues=[0,0];this.upperValues=[0,0];}}\r
19144 \r
19145 var b2Pair=Class.create();b2Pair.prototype={SetBuffered:function(){this.status|=b2Pair.e_pairBuffered;},ClearBuffered:function(){this.status&=~b2Pair.e_pairBuffered;},IsBuffered:function(){return(this.status&b2Pair.e_pairBuffered)==b2Pair.e_pairBuffered;},SetRemoved:function(){this.status|=b2Pair.e_pairRemoved;},ClearRemoved:function(){this.status&=~b2Pair.e_pairRemoved;},IsRemoved:function(){return(this.status&b2Pair.e_pairRemoved)==b2Pair.e_pairRemoved;},SetFinal:function(){this.status|=b2Pair.e_pairFinal;},IsFinal:function(){return(this.status&b2Pair.e_pairFinal)==b2Pair.e_pairFinal;},userData:null,proxyId1:0,proxyId2:0,next:0,status:0,initialize:function(){}};b2Pair.b2_nullPair=b2Settings.USHRT_MAX;b2Pair.b2_nullProxy=b2Settings.USHRT_MAX;b2Pair.b2_tableCapacity=b2Settings.b2_maxPairs;b2Pair.b2_tableMask=b2Pair.b2_tableCapacity-1;b2Pair.e_pairBuffered=0x0001;b2Pair.e_pairRemoved=0x0002;b2Pair.e_pairFinal=0x0004;\r
19146 var b2PairCallback=Class.create();b2PairCallback.prototype={PairAdded:function(proxyUserData1,proxyUserData2){return null},PairRemoved:function(proxyUserData1,proxyUserData2,pairUserData){},initialize:function(){}};\r
19147 var b2BufferedPair=Class.create();b2BufferedPair.prototype={proxyId1:0,proxyId2:0,initialize:function(){}}\r
19148 \r
19149 var b2PairManager=Class.create();b2PairManager.prototype={initialize:function(){var i=0;this.m_hashTable=new Array(b2Pair.b2_tableCapacity);for(i=0;i<b2Pair.b2_tableCapacity;++i)\r
19150 {this.m_hashTable[i]=b2Pair.b2_nullPair;}\r
19151 this.m_pairs=new Array(b2Settings.b2_maxPairs);for(i=0;i<b2Settings.b2_maxPairs;++i)\r
19152 {this.m_pairs[i]=new b2Pair();}\r
19153 this.m_pairBuffer=new Array(b2Settings.b2_maxPairs);for(i=0;i<b2Settings.b2_maxPairs;++i)\r
19154 {this.m_pairBuffer[i]=new b2BufferedPair();}\r
19155 for(i=0;i<b2Settings.b2_maxPairs;++i)\r
19156 {this.m_pairs[i].proxyId1=b2Pair.b2_nullProxy;this.m_pairs[i].proxyId2=b2Pair.b2_nullProxy;this.m_pairs[i].userData=null;this.m_pairs[i].status=0;this.m_pairs[i].next=(i+1);}\r
19157 this.m_pairs[b2Settings.b2_maxPairs-1].next=b2Pair.b2_nullPair;this.m_pairCount=0;},Initialize:function(broadPhase,callback){this.m_broadPhase=broadPhase;this.m_callback=callback;},AddBufferedPair:function(proxyId1,proxyId2){var pair=this.AddPair(proxyId1,proxyId2);if(pair.IsBuffered()==false)\r
19158 {pair.SetBuffered();this.m_pairBuffer[this.m_pairBufferCount].proxyId1=pair.proxyId1;this.m_pairBuffer[this.m_pairBufferCount].proxyId2=pair.proxyId2;++this.m_pairBufferCount;}\r
19159 pair.ClearRemoved();if(b2BroadPhase.s_validate)\r
19160 {this.ValidateBuffer();}},RemoveBufferedPair:function(proxyId1,proxyId2){var pair=this.Find(proxyId1,proxyId2);if(pair==null)\r
19161 {return;}\r
19162 if(pair.IsBuffered()==false)\r
19163 {pair.SetBuffered();this.m_pairBuffer[this.m_pairBufferCount].proxyId1=pair.proxyId1;this.m_pairBuffer[this.m_pairBufferCount].proxyId2=pair.proxyId2;++this.m_pairBufferCount;}\r
19164 pair.SetRemoved();if(b2BroadPhase.s_validate)\r
19165 {this.ValidateBuffer();}},Commit:function(){var i=0;var removeCount=0;var proxies=this.m_broadPhase.m_proxyPool;for(i=0;i<this.m_pairBufferCount;++i)\r
19166 {var pair=this.Find(this.m_pairBuffer[i].proxyId1,this.m_pairBuffer[i].proxyId2);pair.ClearBuffered();var proxy1=proxies[pair.proxyId1];var proxy2=proxies[pair.proxyId2];if(pair.IsRemoved())\r
19167 {if(pair.IsFinal()==true)\r
19168 {this.m_callback.PairRemoved(proxy1.userData,proxy2.userData,pair.userData);}\r
19169 this.m_pairBuffer[removeCount].proxyId1=pair.proxyId1;this.m_pairBuffer[removeCount].proxyId2=pair.proxyId2;++removeCount;}\r
19170 else\r
19171 {if(pair.IsFinal()==false)\r
19172 {pair.userData=this.m_callback.PairAdded(proxy1.userData,proxy2.userData);pair.SetFinal();}}}\r
19173 for(i=0;i<removeCount;++i)\r
19174 {this.RemovePair(this.m_pairBuffer[i].proxyId1,this.m_pairBuffer[i].proxyId2);}\r
19175 this.m_pairBufferCount=0;if(b2BroadPhase.s_validate)\r
19176 {this.ValidateTable();}},AddPair:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}\r
19177 var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;var pair=pair=this.FindHash(proxyId1,proxyId2,hash);if(pair!=null)\r
19178 {return pair;}\r
19179 var pIndex=this.m_freePair;pair=this.m_pairs[pIndex];this.m_freePair=pair.next;pair.proxyId1=proxyId1;pair.proxyId2=proxyId2;pair.status=0;pair.userData=null;pair.next=this.m_hashTable[hash];this.m_hashTable[hash]=pIndex;++this.m_pairCount;return pair;},RemovePair:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}\r
19180 var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;var node=this.m_hashTable[hash];var pNode=null;while(node!=b2Pair.b2_nullPair)\r
19181 {if(b2PairManager.Equals(this.m_pairs[node],proxyId1,proxyId2))\r
19182 {var index=node;if(pNode){pNode.next=this.m_pairs[node].next;}\r
19183 else{this.m_hashTable[hash]=this.m_pairs[node].next;}\r
19184 var pair=this.m_pairs[index];var userData=pair.userData;pair.next=this.m_freePair;pair.proxyId1=b2Pair.b2_nullProxy;pair.proxyId2=b2Pair.b2_nullProxy;pair.userData=null;pair.status=0;this.m_freePair=index;--this.m_pairCount;return userData;}\r
19185 else\r
19186 {pNode=this.m_pairs[node];node=pNode.next;}}\r
19187 return null;},Find:function(proxyId1,proxyId2){if(proxyId1>proxyId2){var temp=proxyId1;proxyId1=proxyId2;proxyId2=temp;}\r
19188 var hash=b2PairManager.Hash(proxyId1,proxyId2)&b2Pair.b2_tableMask;return this.FindHash(proxyId1,proxyId2,hash);},FindHash:function(proxyId1,proxyId2,hash){var index=this.m_hashTable[hash];while(index!=b2Pair.b2_nullPair&&b2PairManager.Equals(this.m_pairs[index],proxyId1,proxyId2)==false)\r
19189 {index=this.m_pairs[index].next;}\r
19190 if(index==b2Pair.b2_nullPair)\r
19191 {return null;}\r
19192 return this.m_pairs[index];},ValidateBuffer:function(){},ValidateTable:function(){},m_broadPhase:null,m_callback:null,m_pairs:null,m_freePair:0,m_pairCount:0,m_pairBuffer:null,m_pairBufferCount:0,m_hashTable:null};b2PairManager.Hash=function(proxyId1,proxyId2)\r
19193 {var key=((proxyId2<<16)&0xffff0000)|proxyId1;key=~key+((key<<15)&0xFFFF8000);key=key^((key>>12)&0x000fffff);key=key+((key<<2)&0xFFFFFFFC);key=key^((key>>4)&0x0fffffff);key=key*2057;key=key^((key>>16)&0x0000ffff);return key;};b2PairManager.Equals=function(pair,proxyId1,proxyId2)\r
19194 {return(pair.proxyId1==proxyId1&&pair.proxyId2==proxyId2);};b2PairManager.EqualsPair=function(pair1,pair2)\r
19195 {return pair1.proxyId1==pair2.proxyId1&&pair1.proxyId2==pair2.proxyId2;};\r
19196 var b2BroadPhase=Class.create();b2BroadPhase.prototype={initialize:function(worldAABB,callback){this.m_pairManager=new b2PairManager();this.m_proxyPool=new Array(b2Settings.b2_maxPairs);this.m_bounds=new Array(2*b2Settings.b2_maxProxies);this.m_queryResults=new Array(b2Settings.b2_maxProxies);this.m_quantizationFactor=new b2Vec2();var i=0;this.m_pairManager.Initialize(this,callback);this.m_worldAABB=worldAABB;this.m_proxyCount=0;for(i=0;i<b2Settings.b2_maxProxies;i++){this.m_queryResults[i]=0;}\r
19197 this.m_bounds=new Array(2);for(i=0;i<2;i++){this.m_bounds[i]=new Array(2*b2Settings.b2_maxProxies);for(var j=0;j<2*b2Settings.b2_maxProxies;j++){this.m_bounds[i][j]=new b2Bound();}}\r
19198 var dX=worldAABB.maxVertex.x;var dY=worldAABB.maxVertex.y;dX-=worldAABB.minVertex.x;dY-=worldAABB.minVertex.y;this.m_quantizationFactor.x=b2Settings.USHRT_MAX/dX;this.m_quantizationFactor.y=b2Settings.USHRT_MAX/dY;var tProxy;for(i=0;i<b2Settings.b2_maxProxies-1;++i)\r
19199 {tProxy=new b2Proxy();this.m_proxyPool[i]=tProxy;tProxy.SetNext(i+1);tProxy.timeStamp=0;tProxy.overlapCount=b2BroadPhase.b2_invalid;tProxy.userData=null;}\r
19200 tProxy=new b2Proxy();this.m_proxyPool[b2Settings.b2_maxProxies-1]=tProxy;tProxy.SetNext(b2Pair.b2_nullProxy);tProxy.timeStamp=0;tProxy.overlapCount=b2BroadPhase.b2_invalid;tProxy.userData=null;this.m_freeProxy=0;this.m_timeStamp=1;this.m_queryResultCount=0;},InRange:function(aabb){var dX;var dY;var d2X;var d2Y;dX=aabb.minVertex.x;dY=aabb.minVertex.y;dX-=this.m_worldAABB.maxVertex.x;dY-=this.m_worldAABB.maxVertex.y;d2X=this.m_worldAABB.minVertex.x;d2Y=this.m_worldAABB.minVertex.y;d2X-=aabb.maxVertex.x;d2Y-=aabb.maxVertex.y;dX=b2Math.b2Max(dX,d2X);dY=b2Math.b2Max(dY,d2Y);return b2Math.b2Max(dX,dY)<0.0;},GetProxy:function(proxyId){if(proxyId==b2Pair.b2_nullProxy||this.m_proxyPool[proxyId].IsValid()==false)\r
19201 {return null;}\r
19202 return this.m_proxyPool[proxyId];},CreateProxy:function(aabb,userData){var index=0;var proxy;var proxyId=this.m_freeProxy;proxy=this.m_proxyPool[proxyId];this.m_freeProxy=proxy.GetNext();proxy.overlapCount=0;proxy.userData=userData;var boundCount=2*this.m_proxyCount;var lowerValues=new Array();var upperValues=new Array();this.ComputeBounds(lowerValues,upperValues,aabb);for(var axis=0;axis<2;++axis)\r
19203 {var bounds=this.m_bounds[axis];var lowerIndex=0;var upperIndex=0;var lowerIndexOut=[lowerIndex];var upperIndexOut=[upperIndex];this.Query(lowerIndexOut,upperIndexOut,lowerValues[axis],upperValues[axis],bounds,boundCount,axis);lowerIndex=lowerIndexOut[0];upperIndex=upperIndexOut[0];var tArr=new Array();var j=0;var tEnd=boundCount-upperIndex\r
19204 var tBound1;var tBound2;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[upperIndex+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
19205 tEnd=tArr.length;var tIndex=upperIndex+2;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]\r
19206 tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
19207 tArr=new Array();tEnd=upperIndex-lowerIndex;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[lowerIndex+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
19208 tEnd=tArr.length;tIndex=lowerIndex+1;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]\r
19209 tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
19210 ++upperIndex;bounds[lowerIndex].value=lowerValues[axis];bounds[lowerIndex].proxyId=proxyId;bounds[upperIndex].value=upperValues[axis];bounds[upperIndex].proxyId=proxyId;bounds[lowerIndex].stabbingCount=lowerIndex==0?0:bounds[lowerIndex-1].stabbingCount;bounds[upperIndex].stabbingCount=bounds[upperIndex-1].stabbingCount;for(index=lowerIndex;index<upperIndex;++index)\r
19211 {bounds[index].stabbingCount++;}\r
19212 for(index=lowerIndex;index<boundCount+2;++index)\r
19213 {var proxy2=this.m_proxyPool[bounds[index].proxyId];if(bounds[index].IsLower())\r
19214 {proxy2.lowerBounds[axis]=index;}\r
19215 else\r
19216 {proxy2.upperBounds[axis]=index;}}}\r
19217 ++this.m_proxyCount;for(var i=0;i<this.m_queryResultCount;++i)\r
19218 {this.m_pairManager.AddBufferedPair(proxyId,this.m_queryResults[i]);}\r
19219 this.m_pairManager.Commit();this.m_queryResultCount=0;this.IncrementTimeStamp();return proxyId;},DestroyProxy:function(proxyId){var proxy=this.m_proxyPool[proxyId];var boundCount=2*this.m_proxyCount;for(var axis=0;axis<2;++axis)\r
19220 {var bounds=this.m_bounds[axis];var lowerIndex=proxy.lowerBounds[axis];var upperIndex=proxy.upperBounds[axis];var lowerValue=bounds[lowerIndex].value;var upperValue=bounds[upperIndex].value;var tArr=new Array();var j=0;var tEnd=upperIndex-lowerIndex-1;var tBound1;var tBound2;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[lowerIndex+1+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
19221 tEnd=tArr.length;var tIndex=lowerIndex;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]\r
19222 tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
19223 tArr=new Array();tEnd=boundCount-upperIndex-1;for(j=0;j<tEnd;j++){tArr[j]=new b2Bound();tBound1=tArr[j];tBound2=bounds[upperIndex+1+j];tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
19224 tEnd=tArr.length;tIndex=upperIndex-1;for(j=0;j<tEnd;j++){tBound2=tArr[j];tBound1=bounds[tIndex+j]\r
19225 tBound1.value=tBound2.value;tBound1.proxyId=tBound2.proxyId;tBound1.stabbingCount=tBound2.stabbingCount;}\r
19226 tEnd=boundCount-2;for(var index=lowerIndex;index<tEnd;++index)\r
19227 {var proxy2=this.m_proxyPool[bounds[index].proxyId];if(bounds[index].IsLower())\r
19228 {proxy2.lowerBounds[axis]=index;}\r
19229 else\r
19230 {proxy2.upperBounds[axis]=index;}}\r
19231 tEnd=upperIndex-1;for(var index2=lowerIndex;index2<tEnd;++index2)\r
19232 {bounds[index2].stabbingCount--;}\r
19233 this.Query([0],[0],lowerValue,upperValue,bounds,boundCount-2,axis);}\r
19234 for(var i=0;i<this.m_queryResultCount;++i)\r
19235 {this.m_pairManager.RemoveBufferedPair(proxyId,this.m_queryResults[i]);}\r
19236 this.m_pairManager.Commit();this.m_queryResultCount=0;this.IncrementTimeStamp();proxy.userData=null;proxy.overlapCount=b2BroadPhase.b2_invalid;proxy.lowerBounds[0]=b2BroadPhase.b2_invalid;proxy.lowerBounds[1]=b2BroadPhase.b2_invalid;proxy.upperBounds[0]=b2BroadPhase.b2_invalid;proxy.upperBounds[1]=b2BroadPhase.b2_invalid;proxy.SetNext(this.m_freeProxy);this.m_freeProxy=proxyId;--this.m_proxyCount;},MoveProxy:function(proxyId,aabb){var axis=0;var index=0;var bound;var prevBound\r
19237 var nextBound\r
19238 var nextProxyId=0;var nextProxy;if(proxyId==b2Pair.b2_nullProxy||b2Settings.b2_maxProxies<=proxyId)\r
19239 {return;}\r
19240 if(aabb.IsValid()==false)\r
19241 {return;}\r
19242 var boundCount=2*this.m_proxyCount;var proxy=this.m_proxyPool[proxyId];var newValues=new b2BoundValues();this.ComputeBounds(newValues.lowerValues,newValues.upperValues,aabb);var oldValues=new b2BoundValues();for(axis=0;axis<2;++axis)\r
19243 {oldValues.lowerValues[axis]=this.m_bounds[axis][proxy.lowerBounds[axis]].value;oldValues.upperValues[axis]=this.m_bounds[axis][proxy.upperBounds[axis]].value;}\r
19244 for(axis=0;axis<2;++axis)\r
19245 {var bounds=this.m_bounds[axis];var lowerIndex=proxy.lowerBounds[axis];var upperIndex=proxy.upperBounds[axis];var lowerValue=newValues.lowerValues[axis];var upperValue=newValues.upperValues[axis];var deltaLower=lowerValue-bounds[lowerIndex].value;var deltaUpper=upperValue-bounds[upperIndex].value;bounds[lowerIndex].value=lowerValue;bounds[upperIndex].value=upperValue;if(deltaLower<0)\r
19246 {index=lowerIndex;while(index>0&&lowerValue<bounds[index-1].value)\r
19247 {bound=bounds[index];prevBound=bounds[index-1];var prevProxyId=prevBound.proxyId;var prevProxy=this.m_proxyPool[prevBound.proxyId];prevBound.stabbingCount++;if(prevBound.IsUpper()==true)\r
19248 {if(this.TestOverlap(newValues,prevProxy))\r
19249 {this.m_pairManager.AddBufferedPair(proxyId,prevProxyId);}\r
19250 prevProxy.upperBounds[axis]++;bound.stabbingCount++;}\r
19251 else\r
19252 {prevProxy.lowerBounds[axis]++;bound.stabbingCount--;}\r
19253 proxy.lowerBounds[axis]--;bound.Swap(prevBound);--index;}}\r
19254 if(deltaUpper>0)\r
19255 {index=upperIndex;while(index<boundCount-1&&bounds[index+1].value<=upperValue)\r
19256 {bound=bounds[index];nextBound=bounds[index+1];nextProxyId=nextBound.proxyId;nextProxy=this.m_proxyPool[nextProxyId];nextBound.stabbingCount++;if(nextBound.IsLower()==true)\r
19257 {if(this.TestOverlap(newValues,nextProxy))\r
19258 {this.m_pairManager.AddBufferedPair(proxyId,nextProxyId);}\r
19259 nextProxy.lowerBounds[axis]--;bound.stabbingCount++;}\r
19260 else\r
19261 {nextProxy.upperBounds[axis]--;bound.stabbingCount--;}\r
19262 proxy.upperBounds[axis]++;bound.Swap(nextBound);index++;}}\r
19263 if(deltaLower>0)\r
19264 {index=lowerIndex;while(index<boundCount-1&&bounds[index+1].value<=lowerValue)\r
19265 {bound=bounds[index];nextBound=bounds[index+1];nextProxyId=nextBound.proxyId;nextProxy=this.m_proxyPool[nextProxyId];nextBound.stabbingCount--;if(nextBound.IsUpper())\r
19266 {if(this.TestOverlap(oldValues,nextProxy))\r
19267 {this.m_pairManager.RemoveBufferedPair(proxyId,nextProxyId);}\r
19268 nextProxy.upperBounds[axis]--;bound.stabbingCount--;}\r
19269 else\r
19270 {nextProxy.lowerBounds[axis]--;bound.stabbingCount++;}\r
19271 proxy.lowerBounds[axis]++;bound.Swap(nextBound);index++;}}\r
19272 if(deltaUpper<0)\r
19273 {index=upperIndex;while(index>0&&upperValue<bounds[index-1].value)\r
19274 {bound=bounds[index];prevBound=bounds[index-1];prevProxyId=prevBound.proxyId;prevProxy=this.m_proxyPool[prevProxyId];prevBound.stabbingCount--;if(prevBound.IsLower()==true)\r
19275 {if(this.TestOverlap(oldValues,prevProxy))\r
19276 {this.m_pairManager.RemoveBufferedPair(proxyId,prevProxyId);}\r
19277 prevProxy.lowerBounds[axis]++;bound.stabbingCount--;}\r
19278 else\r
19279 {prevProxy.upperBounds[axis]++;bound.stabbingCount++;}\r
19280 proxy.upperBounds[axis]--;bound.Swap(prevBound);index--;}}}},Commit:function(){this.m_pairManager.Commit();},QueryAABB:function(aabb,userData,maxCount){var lowerValues=new Array();var upperValues=new Array();this.ComputeBounds(lowerValues,upperValues,aabb);var lowerIndex=0;var upperIndex=0;var lowerIndexOut=[lowerIndex];var upperIndexOut=[upperIndex];this.Query(lowerIndexOut,upperIndexOut,lowerValues[0],upperValues[0],this.m_bounds[0],2*this.m_proxyCount,0);this.Query(lowerIndexOut,upperIndexOut,lowerValues[1],upperValues[1],this.m_bounds[1],2*this.m_proxyCount,1);var count=0;for(var i=0;i<this.m_queryResultCount&&count<maxCount;++i,++count)\r
19281 {var proxy=this.m_proxyPool[this.m_queryResults[i]];userData[i]=proxy.userData;}\r
19282 this.m_queryResultCount=0;this.IncrementTimeStamp();return count;},Validate:function(){var pair;var proxy1;var proxy2;var overlap;for(var axis=0;axis<2;++axis)\r
19283 {var bounds=this.m_bounds[axis];var boundCount=2*this.m_proxyCount;var stabbingCount=0;for(var i=0;i<boundCount;++i)\r
19284 {var bound=bounds[i];if(bound.IsLower()==true)\r
19285 {stabbingCount++;}\r
19286 else\r
19287 {stabbingCount--;}}}},ComputeBounds:function(lowerValues,upperValues,aabb)\r
19288 {var minVertexX=aabb.minVertex.x;var minVertexY=aabb.minVertex.y;minVertexX=b2Math.b2Min(minVertexX,this.m_worldAABB.maxVertex.x);minVertexY=b2Math.b2Min(minVertexY,this.m_worldAABB.maxVertex.y);minVertexX=b2Math.b2Max(minVertexX,this.m_worldAABB.minVertex.x);minVertexY=b2Math.b2Max(minVertexY,this.m_worldAABB.minVertex.y);var maxVertexX=aabb.maxVertex.x;var maxVertexY=aabb.maxVertex.y;maxVertexX=b2Math.b2Min(maxVertexX,this.m_worldAABB.maxVertex.x);maxVertexY=b2Math.b2Min(maxVertexY,this.m_worldAABB.maxVertex.y);maxVertexX=b2Math.b2Max(maxVertexX,this.m_worldAABB.minVertex.x);maxVertexY=b2Math.b2Max(maxVertexY,this.m_worldAABB.minVertex.y);lowerValues[0]=(this.m_quantizationFactor.x*(minVertexX-this.m_worldAABB.minVertex.x))&(b2Settings.USHRT_MAX-1);upperValues[0]=((this.m_quantizationFactor.x*(maxVertexX-this.m_worldAABB.minVertex.x))&0x0000ffff)|1;lowerValues[1]=(this.m_quantizationFactor.y*(minVertexY-this.m_worldAABB.minVertex.y))&(b2Settings.USHRT_MAX-1);upperValues[1]=((this.m_quantizationFactor.y*(maxVertexY-this.m_worldAABB.minVertex.y))&0x0000ffff)|1;},TestOverlapValidate:function(p1,p2){for(var axis=0;axis<2;++axis)\r
19289 {var bounds=this.m_bounds[axis];if(bounds[p1.lowerBounds[axis]].value>bounds[p2.upperBounds[axis]].value)\r
19290 return false;if(bounds[p1.upperBounds[axis]].value<bounds[p2.lowerBounds[axis]].value)\r
19291 return false;}\r
19292 return true;},TestOverlap:function(b,p)\r
19293 {for(var axis=0;axis<2;++axis)\r
19294 {var bounds=this.m_bounds[axis];if(b.lowerValues[axis]>bounds[p.upperBounds[axis]].value)\r
19295 return false;if(b.upperValues[axis]<bounds[p.lowerBounds[axis]].value)\r
19296 return false;}\r
19297 return true;},Query:function(lowerQueryOut,upperQueryOut,lowerValue,upperValue,bounds,boundCount,axis){var lowerQuery=b2BroadPhase.BinarySearch(bounds,boundCount,lowerValue);var upperQuery=b2BroadPhase.BinarySearch(bounds,boundCount,upperValue);for(var j=lowerQuery;j<upperQuery;++j)\r
19298 {if(bounds[j].IsLower())\r
19299 {this.IncrementOverlapCount(bounds[j].proxyId);}}\r
19300 if(lowerQuery>0)\r
19301 {var i=lowerQuery-1;var s=bounds[i].stabbingCount;while(s)\r
19302 {if(bounds[i].IsLower())\r
19303 {var proxy=this.m_proxyPool[bounds[i].proxyId];if(lowerQuery<=proxy.upperBounds[axis])\r
19304 {this.IncrementOverlapCount(bounds[i].proxyId);--s;}}\r
19305 --i;}}\r
19306 lowerQueryOut[0]=lowerQuery;upperQueryOut[0]=upperQuery;},IncrementOverlapCount:function(proxyId){var proxy=this.m_proxyPool[proxyId];if(proxy.timeStamp<this.m_timeStamp)\r
19307 {proxy.timeStamp=this.m_timeStamp;proxy.overlapCount=1;}\r
19308 else\r
19309 {proxy.overlapCount=2;this.m_queryResults[this.m_queryResultCount]=proxyId;++this.m_queryResultCount;}},IncrementTimeStamp:function(){if(this.m_timeStamp==b2Settings.USHRT_MAX)\r
19310 {for(var i=0;i<b2Settings.b2_maxProxies;++i)\r
19311 {this.m_proxyPool[i].timeStamp=0;}\r
19312 this.m_timeStamp=1;}\r
19313 else\r
19314 {++this.m_timeStamp;}},m_pairManager:new b2PairManager(),m_proxyPool:new Array(b2Settings.b2_maxPairs),m_freeProxy:0,m_bounds:new Array(2*b2Settings.b2_maxProxies),m_queryResults:new Array(b2Settings.b2_maxProxies),m_queryResultCount:0,m_worldAABB:null,m_quantizationFactor:new b2Vec2(),m_proxyCount:0,m_timeStamp:0};b2BroadPhase.s_validate=false;b2BroadPhase.b2_invalid=b2Settings.USHRT_MAX;b2BroadPhase.b2_nullEdge=b2Settings.USHRT_MAX;b2BroadPhase.BinarySearch=function(bounds,count,value)\r
19315 {var low=0;var high=count-1;while(low<=high)\r
19316 {var mid=Math.floor((low+high)/2);if(bounds[mid].value>value)\r
19317 {high=mid-1;}\r
19318 else if(bounds[mid].value<value)\r
19319 {low=mid+1;}\r
19320 else\r
19321 {return(mid);}}\r
19322 return(low);};\r
19323 var b2Collision=Class.create();b2Collision.prototype={initialize:function(){}}\r
19324 b2Collision.b2_nullFeature=0x000000ff;b2Collision.ClipSegmentToLine=function(vOut,vIn,normal,offset)\r
19325 {var numOut=0;var vIn0=vIn[0].v;var vIn1=vIn[1].v;var distance0=b2Math.b2Dot(normal,vIn[0].v)-offset;var distance1=b2Math.b2Dot(normal,vIn[1].v)-offset;if(distance0<=0.0)vOut[numOut++]=vIn[0];if(distance1<=0.0)vOut[numOut++]=vIn[1];if(distance0*distance1<0.0)\r
19326 {var interp=distance0/(distance0-distance1);var tVec=vOut[numOut].v;tVec.x=vIn0.x+interp*(vIn1.x-vIn0.x);tVec.y=vIn0.y+interp*(vIn1.y-vIn0.y);if(distance0>0.0)\r
19327 {vOut[numOut].id=vIn[0].id;}\r
19328 else\r
19329 {vOut[numOut].id=vIn[1].id;}\r
19330 ++numOut;}\r
19331 return numOut;};b2Collision.EdgeSeparation=function(poly1,edge1,poly2)\r
19332 {var vert1s=poly1.m_vertices;var count2=poly2.m_vertexCount;var vert2s=poly2.m_vertices;var normalX=poly1.m_normals[edge1].x;var normalY=poly1.m_normals[edge1].y;var tX=normalX;var tMat=poly1.m_R;normalX=tMat.col1.x*tX+tMat.col2.x*normalY;normalY=tMat.col1.y*tX+tMat.col2.y*normalY;var normalLocal2X=normalX;var normalLocal2Y=normalY;tMat=poly2.m_R;tX=normalLocal2X*tMat.col1.x+normalLocal2Y*tMat.col1.y;normalLocal2Y=normalLocal2X*tMat.col2.x+normalLocal2Y*tMat.col2.y;normalLocal2X=tX;var vertexIndex2=0;var minDot=Number.MAX_VALUE;for(var i=0;i<count2;++i)\r
19333 {var tVec=vert2s[i];var dot=tVec.x*normalLocal2X+tVec.y*normalLocal2Y;if(dot<minDot)\r
19334 {minDot=dot;vertexIndex2=i;}}\r
19335 tMat=poly1.m_R;var v1X=poly1.m_position.x+(tMat.col1.x*vert1s[edge1].x+tMat.col2.x*vert1s[edge1].y)\r
19336 var v1Y=poly1.m_position.y+(tMat.col1.y*vert1s[edge1].x+tMat.col2.y*vert1s[edge1].y)\r
19337 tMat=poly2.m_R;var v2X=poly2.m_position.x+(tMat.col1.x*vert2s[vertexIndex2].x+tMat.col2.x*vert2s[vertexIndex2].y)\r
19338 var v2Y=poly2.m_position.y+(tMat.col1.y*vert2s[vertexIndex2].x+tMat.col2.y*vert2s[vertexIndex2].y)\r
19339 v2X-=v1X;v2Y-=v1Y;var separation=v2X*normalX+v2Y*normalY;return separation;};b2Collision.FindMaxSeparation=function(edgeIndex,poly1,poly2,conservative)\r
19340 {var count1=poly1.m_vertexCount;var dX=poly2.m_position.x-poly1.m_position.x;var dY=poly2.m_position.y-poly1.m_position.y;var dLocal1X=(dX*poly1.m_R.col1.x+dY*poly1.m_R.col1.y);var dLocal1Y=(dX*poly1.m_R.col2.x+dY*poly1.m_R.col2.y);var edge=0;var maxDot=-Number.MAX_VALUE;for(var i=0;i<count1;++i)\r
19341 {var dot=(poly1.m_normals[i].x*dLocal1X+poly1.m_normals[i].y*dLocal1Y);if(dot>maxDot)\r
19342 {maxDot=dot;edge=i;}}\r
19343 var s=b2Collision.EdgeSeparation(poly1,edge,poly2);if(s>0.0&&conservative==false)\r
19344 {return s;}\r
19345 var prevEdge=edge-1>=0?edge-1:count1-1;var sPrev=b2Collision.EdgeSeparation(poly1,prevEdge,poly2);if(sPrev>0.0&&conservative==false)\r
19346 {return sPrev;}\r
19347 var nextEdge=edge+1<count1?edge+1:0;var sNext=b2Collision.EdgeSeparation(poly1,nextEdge,poly2);if(sNext>0.0&&conservative==false)\r
19348 {return sNext;}\r
19349 var bestEdge=0;var bestSeparation;var increment=0;if(sPrev>s&&sPrev>sNext)\r
19350 {increment=-1;bestEdge=prevEdge;bestSeparation=sPrev;}\r
19351 else if(sNext>s)\r
19352 {increment=1;bestEdge=nextEdge;bestSeparation=sNext;}\r
19353 else\r
19354 {edgeIndex[0]=edge;return s;}\r
19355 while(true)\r
19356 {if(increment==-1)\r
19357 edge=bestEdge-1>=0?bestEdge-1:count1-1;else\r
19358 edge=bestEdge+1<count1?bestEdge+1:0;s=b2Collision.EdgeSeparation(poly1,edge,poly2);if(s>0.0&&conservative==false)\r
19359 {return s;}\r
19360 if(s>bestSeparation)\r
19361 {bestEdge=edge;bestSeparation=s;}\r
19362 else\r
19363 {break;}}\r
19364 edgeIndex[0]=bestEdge;return bestSeparation;};b2Collision.FindIncidentEdge=function(c,poly1,edge1,poly2)\r
19365 {var count1=poly1.m_vertexCount;var vert1s=poly1.m_vertices;var count2=poly2.m_vertexCount;var vert2s=poly2.m_vertices;var vertex11=edge1;var vertex12=edge1+1==count1?0:edge1+1;var tVec=vert1s[vertex12];var normal1Local1X=tVec.x;var normal1Local1Y=tVec.y;tVec=vert1s[vertex11];normal1Local1X-=tVec.x;normal1Local1Y-=tVec.y;var tX=normal1Local1X;normal1Local1X=normal1Local1Y;normal1Local1Y=-tX;var invLength=1.0/Math.sqrt(normal1Local1X*normal1Local1X+normal1Local1Y*normal1Local1Y);normal1Local1X*=invLength;normal1Local1Y*=invLength;var normal1X=normal1Local1X;var normal1Y=normal1Local1Y;tX=normal1X;var tMat=poly1.m_R;normal1X=tMat.col1.x*tX+tMat.col2.x*normal1Y;normal1Y=tMat.col1.y*tX+tMat.col2.y*normal1Y;var normal1Local2X=normal1X;var normal1Local2Y=normal1Y;tMat=poly2.m_R;tX=normal1Local2X*tMat.col1.x+normal1Local2Y*tMat.col1.y;normal1Local2Y=normal1Local2X*tMat.col2.x+normal1Local2Y*tMat.col2.y;normal1Local2X=tX;var vertex21=0;var vertex22=0;var minDot=Number.MAX_VALUE;for(var i=0;i<count2;++i)\r
19366 {var i1=i;var i2=i+1<count2?i+1:0;tVec=vert2s[i2];var normal2Local2X=tVec.x;var normal2Local2Y=tVec.y;tVec=vert2s[i1];normal2Local2X-=tVec.x;normal2Local2Y-=tVec.y;tX=normal2Local2X;normal2Local2X=normal2Local2Y;normal2Local2Y=-tX;invLength=1.0/Math.sqrt(normal2Local2X*normal2Local2X+normal2Local2Y*normal2Local2Y);normal2Local2X*=invLength;normal2Local2Y*=invLength;var dot=normal2Local2X*normal1Local2X+normal2Local2Y*normal1Local2Y;if(dot<minDot)\r
19367 {minDot=dot;vertex21=i1;vertex22=i2;}}\r
19368 var tClip;tClip=c[0];tVec=tClip.v;tVec.SetV(vert2s[vertex21]);tVec.MulM(poly2.m_R);tVec.Add(poly2.m_position);tClip.id.features.referenceFace=edge1;tClip.id.features.incidentEdge=vertex21;tClip.id.features.incidentVertex=vertex21;tClip=c[1];tVec=tClip.v;tVec.SetV(vert2s[vertex22]);tVec.MulM(poly2.m_R);tVec.Add(poly2.m_position);tClip.id.features.referenceFace=edge1;tClip.id.features.incidentEdge=vertex21;tClip.id.features.incidentVertex=vertex22;};b2Collision.b2CollidePolyTempVec=new b2Vec2();b2Collision.b2CollidePoly=function(manifold,polyA,polyB,conservative)\r
19369 {manifold.pointCount=0;var edgeA=0;var edgeAOut=[edgeA];var separationA=b2Collision.FindMaxSeparation(edgeAOut,polyA,polyB,conservative);edgeA=edgeAOut[0];if(separationA>0.0&&conservative==false)\r
19370 return;var edgeB=0;var edgeBOut=[edgeB];var separationB=b2Collision.FindMaxSeparation(edgeBOut,polyB,polyA,conservative);edgeB=edgeBOut[0];if(separationB>0.0&&conservative==false)\r
19371 return;var poly1;var poly2;var edge1=0;var flip=0;var k_relativeTol=0.98;var k_absoluteTol=0.001;if(separationB>k_relativeTol*separationA+k_absoluteTol)\r
19372 {poly1=polyB;poly2=polyA;edge1=edgeB;flip=1;}\r
19373 else\r
19374 {poly1=polyA;poly2=polyB;edge1=edgeA;flip=0;}\r
19375 var incidentEdge=[new ClipVertex(),new ClipVertex()];b2Collision.FindIncidentEdge(incidentEdge,poly1,edge1,poly2);var count1=poly1.m_vertexCount;var vert1s=poly1.m_vertices;var v11=vert1s[edge1];var v12=edge1+1<count1?vert1s[edge1+1]:vert1s[0];var dvX=v12.x-v11.x;var dvY=v12.y-v11.y;var sideNormalX=v12.x-v11.x;var sideNormalY=v12.y-v11.y;var tX=sideNormalX;var tMat=poly1.m_R;sideNormalX=tMat.col1.x*tX+tMat.col2.x*sideNormalY;sideNormalY=tMat.col1.y*tX+tMat.col2.y*sideNormalY;var invLength=1.0/Math.sqrt(sideNormalX*sideNormalX+sideNormalY*sideNormalY);sideNormalX*=invLength;sideNormalY*=invLength;var frontNormalX=sideNormalX;var frontNormalY=sideNormalY;tX=frontNormalX;frontNormalX=frontNormalY;frontNormalY=-tX;var v11X=v11.x;var v11Y=v11.y;tX=v11X;tMat=poly1.m_R;v11X=tMat.col1.x*tX+tMat.col2.x*v11Y;v11Y=tMat.col1.y*tX+tMat.col2.y*v11Y;v11X+=poly1.m_position.x;v11Y+=poly1.m_position.y;var v12X=v12.x;var v12Y=v12.y;tX=v12X;tMat=poly1.m_R;v12X=tMat.col1.x*tX+tMat.col2.x*v12Y;v12Y=tMat.col1.y*tX+tMat.col2.y*v12Y;v12X+=poly1.m_position.x;v12Y+=poly1.m_position.y;var frontOffset=frontNormalX*v11X+frontNormalY*v11Y;var sideOffset1=-(sideNormalX*v11X+sideNormalY*v11Y);var sideOffset2=sideNormalX*v12X+sideNormalY*v12Y;var clipPoints1=[new ClipVertex(),new ClipVertex()];var clipPoints2=[new ClipVertex(),new ClipVertex()];var np=0;b2Collision.b2CollidePolyTempVec.Set(-sideNormalX,-sideNormalY);np=b2Collision.ClipSegmentToLine(clipPoints1,incidentEdge,b2Collision.b2CollidePolyTempVec,sideOffset1);if(np<2)\r
19376 return;b2Collision.b2CollidePolyTempVec.Set(sideNormalX,sideNormalY);np=b2Collision.ClipSegmentToLine(clipPoints2,clipPoints1,b2Collision.b2CollidePolyTempVec,sideOffset2);if(np<2)\r
19377 return;if(flip){manifold.normal.Set(-frontNormalX,-frontNormalY);}\r
19378 else{manifold.normal.Set(frontNormalX,frontNormalY);}\r
19379 var pointCount=0;for(var i=0;i<b2Settings.b2_maxManifoldPoints;++i)\r
19380 {var tVec=clipPoints2[i].v;var separation=(frontNormalX*tVec.x+frontNormalY*tVec.y)-frontOffset;if(separation<=0.0||conservative==true)\r
19381 {var cp=manifold.points[pointCount];cp.separation=separation;cp.position.SetV(clipPoints2[i].v);cp.id.Set(clipPoints2[i].id);cp.id.features.flip=flip;++pointCount;}}\r
19382 manifold.pointCount=pointCount;};b2Collision.b2CollideCircle=function(manifold,circle1,circle2,conservative)\r
19383 {manifold.pointCount=0;var dX=circle2.m_position.x-circle1.m_position.x;var dY=circle2.m_position.y-circle1.m_position.y;var distSqr=dX*dX+dY*dY;var radiusSum=circle1.m_radius+circle2.m_radius;if(distSqr>radiusSum*radiusSum&&conservative==false)\r
19384 {return;}\r
19385 var separation;if(distSqr<Number.MIN_VALUE)\r
19386 {separation=-radiusSum;manifold.normal.Set(0.0,1.0);}\r
19387 else\r
19388 {var dist=Math.sqrt(distSqr);separation=dist-radiusSum;var a=1.0/dist;manifold.normal.x=a*dX;manifold.normal.y=a*dY;}\r
19389 manifold.pointCount=1;var tPoint=manifold.points[0];tPoint.id.set_key(0);tPoint.separation=separation;tPoint.position.x=circle2.m_position.x-(circle2.m_radius*manifold.normal.x);tPoint.position.y=circle2.m_position.y-(circle2.m_radius*manifold.normal.y);};b2Collision.b2CollidePolyAndCircle=function(manifold,poly,circle,conservative)\r
19390 {manifold.pointCount=0;var tPoint;var dX;var dY;var xLocalX=circle.m_position.x-poly.m_position.x;var xLocalY=circle.m_position.y-poly.m_position.y;var tMat=poly.m_R;var tX=xLocalX*tMat.col1.x+xLocalY*tMat.col1.y;xLocalY=xLocalX*tMat.col2.x+xLocalY*tMat.col2.y;xLocalX=tX;var dist;var normalIndex=0;var separation=-Number.MAX_VALUE;var radius=circle.m_radius;for(var i=0;i<poly.m_vertexCount;++i)\r
19391 {var s=poly.m_normals[i].x*(xLocalX-poly.m_vertices[i].x)+poly.m_normals[i].y*(xLocalY-poly.m_vertices[i].y);if(s>radius)\r
19392 {return;}\r
19393 if(s>separation)\r
19394 {separation=s;normalIndex=i;}}\r
19395 if(separation<Number.MIN_VALUE)\r
19396 {manifold.pointCount=1;var tVec=poly.m_normals[normalIndex];manifold.normal.x=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;manifold.normal.y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tPoint=manifold.points[0];tPoint.id.features.incidentEdge=normalIndex;tPoint.id.features.incidentVertex=b2Collision.b2_nullFeature;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=separation-radius;return;}\r
19397 var vertIndex1=normalIndex;var vertIndex2=vertIndex1+1<poly.m_vertexCount?vertIndex1+1:0;var eX=poly.m_vertices[vertIndex2].x-poly.m_vertices[vertIndex1].x;var eY=poly.m_vertices[vertIndex2].y-poly.m_vertices[vertIndex1].y;var length=Math.sqrt(eX*eX+eY*eY);eX/=length;eY/=length;if(length<Number.MIN_VALUE)\r
19398 {dX=xLocalX-poly.m_vertices[vertIndex1].x;dY=xLocalY-poly.m_vertices[vertIndex1].y;dist=Math.sqrt(dX*dX+dY*dY);dX/=dist;dY/=dist;if(dist>radius)\r
19399 {return;}\r
19400 manifold.pointCount=1;manifold.normal.Set(tMat.col1.x*dX+tMat.col2.x*dY,tMat.col1.y*dX+tMat.col2.y*dY);tPoint=manifold.points[0];tPoint.id.features.incidentEdge=b2Collision.b2_nullFeature;tPoint.id.features.incidentVertex=vertIndex1;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=dist-radius;return;}\r
19401 var u=(xLocalX-poly.m_vertices[vertIndex1].x)*eX+(xLocalY-poly.m_vertices[vertIndex1].y)*eY;tPoint=manifold.points[0];tPoint.id.features.incidentEdge=b2Collision.b2_nullFeature;tPoint.id.features.incidentVertex=b2Collision.b2_nullFeature;tPoint.id.features.referenceFace=b2Collision.b2_nullFeature;tPoint.id.features.flip=0;var pX,pY;if(u<=0.0)\r
19402 {pX=poly.m_vertices[vertIndex1].x;pY=poly.m_vertices[vertIndex1].y;tPoint.id.features.incidentVertex=vertIndex1;}\r
19403 else if(u>=length)\r
19404 {pX=poly.m_vertices[vertIndex2].x;pY=poly.m_vertices[vertIndex2].y;tPoint.id.features.incidentVertex=vertIndex2;}\r
19405 else\r
19406 {pX=eX*u+poly.m_vertices[vertIndex1].x;pY=eY*u+poly.m_vertices[vertIndex1].y;tPoint.id.features.incidentEdge=vertIndex1;}\r
19407 dX=xLocalX-pX;dY=xLocalY-pY;dist=Math.sqrt(dX*dX+dY*dY);dX/=dist;dY/=dist;if(dist>radius)\r
19408 {return;}\r
19409 manifold.pointCount=1;manifold.normal.Set(tMat.col1.x*dX+tMat.col2.x*dY,tMat.col1.y*dX+tMat.col2.y*dY);tPoint.position.x=circle.m_position.x-radius*manifold.normal.x;tPoint.position.y=circle.m_position.y-radius*manifold.normal.y;tPoint.separation=dist-radius;};b2Collision.b2TestOverlap=function(a,b)\r
19410 {var t1=b.minVertex;var t2=a.maxVertex;var d1X=t1.x-t2.x;var d1Y=t1.y-t2.y;t1=a.minVertex;t2=b.maxVertex;var d2X=t1.x-t2.x;var d2Y=t1.y-t2.y;if(d1X>0.0||d1Y>0.0)\r
19411 return false;if(d2X>0.0||d2Y>0.0)\r
19412 return false;return true;};\r
19413 var Features=Class.create();Features.prototype={set_referenceFace:function(value){this._referenceFace=value;this._m_id._key=(this._m_id._key&0xffffff00)|(this._referenceFace&0x000000ff)},get_referenceFace:function(){return this._referenceFace;},_referenceFace:0,set_incidentEdge:function(value){this._incidentEdge=value;this._m_id._key=(this._m_id._key&0xffff00ff)|((this._incidentEdge<<8)&0x0000ff00)},get_incidentEdge:function(){return this._incidentEdge;},_incidentEdge:0,set_incidentVertex:function(value){this._incidentVertex=value;this._m_id._key=(this._m_id._key&0xff00ffff)|((this._incidentVertex<<16)&0x00ff0000)},get_incidentVertex:function(){return this._incidentVertex;},_incidentVertex:0,set_flip:function(value){this._flip=value;this._m_id._key=(this._m_id._key&0x00ffffff)|((this._flip<<24)&0xff000000)},get_flip:function(){return this._flip;},_flip:0,_m_id:null,initialize:function(){}};\r
19414 var b2ContactID=Class.create();b2ContactID.prototype={initialize:function(){this.features=new Features();this.features._m_id=this;},Set:function(id){this.set_key(id._key);},Copy:function(){var id=new b2ContactID();id.set_key(this._key);return id;},get_key:function(){return this._key;},set_key:function(value){this._key=value;this.features._referenceFace=this._key&0x000000ff;this.features._incidentEdge=((this._key&0x0000ff00)>>8)&0x000000ff;this.features._incidentVertex=((this._key&0x00ff0000)>>16)&0x000000ff;this.features._flip=((this._key&0xff000000)>>24)&0x000000ff;},features:new Features(),_key:0};\r
19415 var b2ContactPoint=Class.create();b2ContactPoint.prototype={position:new b2Vec2(),separation:null,normalImpulse:null,tangentImpulse:null,id:new b2ContactID(),initialize:function(){this.position=new b2Vec2();this.id=new b2ContactID();}};var b2Distance=Class.create();b2Distance.prototype={initialize:function(){}};b2Distance.ProcessTwo=function(p1Out,p2Out,p1s,p2s,points)\r
19416 {var rX=-points[1].x;var rY=-points[1].y;var dX=points[0].x-points[1].x;var dY=points[0].y-points[1].y;var length=Math.sqrt(dX*dX+dY*dY);dX/=length;dY/=length;var lambda=rX*dX+rY*dY;if(lambda<=0.0||length<Number.MIN_VALUE)\r
19417 {p1Out.SetV(p1s[1]);p2Out.SetV(p2s[1]);p1s[0].SetV(p1s[1]);p2s[0].SetV(p2s[1]);points[0].SetV(points[1]);return 1;}\r
19418 lambda/=length;p1Out.x=p1s[1].x+lambda*(p1s[0].x-p1s[1].x);p1Out.y=p1s[1].y+lambda*(p1s[0].y-p1s[1].y);p2Out.x=p2s[1].x+lambda*(p2s[0].x-p2s[1].x);p2Out.y=p2s[1].y+lambda*(p2s[0].y-p2s[1].y);return 2;};b2Distance.ProcessThree=function(p1Out,p2Out,p1s,p2s,points)\r
19419 {var aX=points[0].x;var aY=points[0].y;var bX=points[1].x;var bY=points[1].y;var cX=points[2].x;var cY=points[2].y;var abX=bX-aX;var abY=bY-aY;var acX=cX-aX;var acY=cY-aY;var bcX=cX-bX;var bcY=cY-bY;var sn=-(aX*abX+aY*abY);var sd=(bX*abX+bY*abY);var tn=-(aX*acX+aY*acY);var td=(cX*acX+cY*acY);var un=-(bX*bcX+bY*bcY);var ud=(cX*bcX+cY*bcY);if(td<=0.0&&ud<=0.0)\r
19420 {p1Out.SetV(p1s[2]);p2Out.SetV(p2s[2]);p1s[0].SetV(p1s[2]);p2s[0].SetV(p2s[2]);points[0].SetV(points[2]);return 1;}\r
19421 var n=abX*acY-abY*acX;var vc=n*(aX*bY-aY*bX);var va=n*(bX*cY-bY*cX);if(va<=0.0&&un>=0.0&&ud>=0.0)\r
19422 {var lambda=un/(un+ud);p1Out.x=p1s[1].x+lambda*(p1s[2].x-p1s[1].x);p1Out.y=p1s[1].y+lambda*(p1s[2].y-p1s[1].y);p2Out.x=p2s[1].x+lambda*(p2s[2].x-p2s[1].x);p2Out.y=p2s[1].y+lambda*(p2s[2].y-p2s[1].y);p1s[0].SetV(p1s[2]);p2s[0].SetV(p2s[2]);points[0].SetV(points[2]);return 2;}\r
19423 var vb=n*(cX*aY-cY*aX);if(vb<=0.0&&tn>=0.0&&td>=0.0)\r
19424 {var lambda=tn/(tn+td);p1Out.x=p1s[0].x+lambda*(p1s[2].x-p1s[0].x);p1Out.y=p1s[0].y+lambda*(p1s[2].y-p1s[0].y);p2Out.x=p2s[0].x+lambda*(p2s[2].x-p2s[0].x);p2Out.y=p2s[0].y+lambda*(p2s[2].y-p2s[0].y);p1s[1].SetV(p1s[2]);p2s[1].SetV(p2s[2]);points[1].SetV(points[2]);return 2;}\r
19425 var denom=va+vb+vc;denom=1.0/denom;var u=va*denom;var v=vb*denom;var w=1.0-u-v;p1Out.x=u*p1s[0].x+v*p1s[1].x+w*p1s[2].x;p1Out.y=u*p1s[0].y+v*p1s[1].y+w*p1s[2].y;p2Out.x=u*p2s[0].x+v*p2s[1].x+w*p2s[2].x;p2Out.y=u*p2s[0].y+v*p2s[1].y+w*p2s[2].y;return 3;};b2Distance.InPoinsts=function(w,points,pointCount)\r
19426 {for(var i=0;i<pointCount;++i)\r
19427 {if(w.x==points[i].x&&w.y==points[i].y)\r
19428 {return true;}}\r
19429 return false;};b2Distance.Distance=function(p1Out,p2Out,shape1,shape2)\r
19430 {var p1s=new Array(3);var p2s=new Array(3);var points=new Array(3);var pointCount=0;p1Out.SetV(shape1.m_position);p2Out.SetV(shape2.m_position);var vSqr=0.0;var maxIterations=20;for(var iter=0;iter<maxIterations;++iter)\r
19431 {var vX=p2Out.x-p1Out.x;var vY=p2Out.y-p1Out.y;var w1=shape1.Support(vX,vY);var w2=shape2.Support(-vX,-vY);vSqr=(vX*vX+vY*vY);var wX=w2.x-w1.x;var wY=w2.y-w1.y;var vw=(vX*wX+vY*wY);if(vSqr-b2Dot(vX*wX+vY*wY)<=0.01*vSqr)\r
19432 {if(pointCount==0)\r
19433 {p1Out.SetV(w1);p2Out.SetV(w2);}\r
19434 b2Distance.g_GJK_Iterations=iter;return Math.sqrt(vSqr);}\r
19435 switch(pointCount)\r
19436 {case 0:p1s[0].SetV(w1);p2s[0].SetV(w2);points[0]=w;p1Out.SetV(p1s[0]);p2Out.SetV(p2s[0]);++pointCount;break;case 1:p1s[1].SetV(w1);p2s[1].SetV(w2);points[1].x=wX;points[1].y=wY;pointCount=b2Distance.ProcessTwo(p1Out,p2Out,p1s,p2s,points);break;case 2:p1s[2].SetV(w1);p2s[2].SetV(w2);points[2].x=wX;points[2].y=wY;pointCount=b2Distance.ProcessThree(p1Out,p2Out,p1s,p2s,points);break;}\r
19437 if(pointCount==3)\r
19438 {b2Distance.g_GJK_Iterations=iter;return 0.0;}\r
19439 var maxSqr=-Number.MAX_VALUE;for(var i=0;i<pointCount;++i)\r
19440 {maxSqr=b2Math.b2Max(maxSqr,(points[i].x*points[i].x+points[i].y*points[i].y));}\r
19441 if(pointCount==3||vSqr<=100.0*Number.MIN_VALUE*maxSqr)\r
19442 {b2Distance.g_GJK_Iterations=iter;return Math.sqrt(vSqr);}}\r
19443 b2Distance.g_GJK_Iterations=maxIterations;return Math.sqrt(vSqr);};b2Distance.g_GJK_Iterations=0;\r
19444 var b2Manifold=Class.create();b2Manifold.prototype={initialize:function(){this.points=new Array(b2Settings.b2_maxManifoldPoints);for(var i=0;i<b2Settings.b2_maxManifoldPoints;i++){this.points[i]=new b2ContactPoint();}\r
19445 this.normal=new b2Vec2();},points:null,normal:null,pointCount:0};\r
19446 var b2OBB=Class.create();b2OBB.prototype={R:new b2Mat22(),center:new b2Vec2(),extents:new b2Vec2(),initialize:function(){this.R=new b2Mat22();this.center=new b2Vec2();this.extents=new b2Vec2();}};\r
19447 var b2Proxy=Class.create();b2Proxy.prototype={GetNext:function(){return this.lowerBounds[0];},SetNext:function(next){this.lowerBounds[0]=next;},IsValid:function(){return this.overlapCount!=b2BroadPhase.b2_invalid;},lowerBounds:[(0),(0)],upperBounds:[(0),(0)],overlapCount:0,timeStamp:0,userData:null,initialize:function(){this.lowerBounds=[(0),(0)];this.upperBounds=[(0),(0)];}}\r
19448 \r
19449 var ClipVertex=Class.create();ClipVertex.prototype={v:new b2Vec2(),id:new b2ContactID(),initialize:function(){this.v=new b2Vec2();this.id=new b2ContactID();}};var b2Shape=Class.create();b2Shape.prototype={TestPoint:function(p){return false},GetUserData:function(){return this.m_userData;},GetType:function(){return this.m_type;},GetBody:function(){return this.m_body;},GetPosition:function(){return this.m_position;},GetRotationMatrix:function(){return this.m_R;},ResetProxy:function(broadPhase){},GetNext:function(){return this.m_next;},initialize:function(def,body){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;},DestroyProxy:function()\r
19450 {if(this.m_proxyId!=b2Pair.b2_nullProxy)\r
19451 {this.m_body.m_world.m_broadPhase.DestroyProxy(this.m_proxyId);this.m_proxyId=b2Pair.b2_nullProxy;}},Synchronize:function(position1,R1,position2,R2){},QuickSync:function(position,R){},Support:function(dX,dY,out){},GetMaxRadius:function(){return this.m_maxRadius;},m_next:null,m_R:new b2Mat22(),m_position:new b2Vec2(),m_type:0,m_userData:null,m_body:null,m_friction:null,m_restitution:null,m_maxRadius:null,m_proxyId:0,m_categoryBits:0,m_maskBits:0,m_groupIndex:0};b2Shape.Create=function(def,body,center){switch(def.type)\r
19452 {case b2Shape.e_circleShape:{return new b2CircleShape(def,body,center);}\r
19453 case b2Shape.e_boxShape:case b2Shape.e_polyShape:{return new b2PolyShape(def,body,center);}}\r
19454 return null;};b2Shape.Destroy=function(shape)\r
19455 {if(shape.m_proxyId!=b2Pair.b2_nullProxy)\r
19456 shape.m_body.m_world.m_broadPhase.DestroyProxy(shape.m_proxyId);};b2Shape.e_unknownShape=-1;b2Shape.e_circleShape=0;b2Shape.e_boxShape=1;b2Shape.e_polyShape=2;b2Shape.e_meshShape=3;b2Shape.e_shapeTypeCount=4;b2Shape.PolyMass=function(massData,vs,count,rho)\r
19457 {var center=new b2Vec2();center.SetZero();var area=0.0;var I=0.0;var pRef=new b2Vec2(0.0,0.0);var inv3=1.0/3.0;for(var i=0;i<count;++i)\r
19458 {var p1=pRef;var p2=vs[i];var p3=i+1<count?vs[i+1]:vs[0];var e1=b2Math.SubtractVV(p2,p1);var e2=b2Math.SubtractVV(p3,p1);var D=b2Math.b2CrossVV(e1,e2);var triangleArea=0.5*D;area+=triangleArea;var tVec=new b2Vec2();tVec.SetV(p1);tVec.Add(p2);tVec.Add(p3);tVec.Multiply(inv3*triangleArea);center.Add(tVec);var px=p1.x;var py=p1.y;var ex1=e1.x;var ey1=e1.y;var ex2=e2.x;var ey2=e2.y;var intx2=inv3*(0.25*(ex1*ex1+ex2*ex1+ex2*ex2)+(px*ex1+px*ex2))+0.5*px*px;var inty2=inv3*(0.25*(ey1*ey1+ey2*ey1+ey2*ey2)+(py*ey1+py*ey2))+0.5*py*py;I+=D*(intx2+inty2);}\r
19459 massData.mass=rho*area;center.Multiply(1.0/area);massData.center=center;I=rho*(I-area*b2Math.b2Dot(center,center));massData.I=I;};b2Shape.PolyCentroid=function(vs,count,out)\r
19460 {var cX=0.0;var cY=0.0;var area=0.0;var pRefX=0.0;var pRefY=0.0;var inv3=1.0/3.0;for(var i=0;i<count;++i)\r
19461 {var p1X=pRefX;var p1Y=pRefY;var p2X=vs[i].x;var p2Y=vs[i].y;var p3X=i+1<count?vs[i+1].x:vs[0].x;var p3Y=i+1<count?vs[i+1].y:vs[0].y;var e1X=p2X-p1X;var e1Y=p2Y-p1Y;var e2X=p3X-p1X;var e2Y=p3Y-p1Y;var D=(e1X*e2Y-e1Y*e2X);var triangleArea=0.5*D;area+=triangleArea;cX+=triangleArea*inv3*(p1X+p2X+p3X);cY+=triangleArea*inv3*(p1Y+p2Y+p3Y);}\r
19462 cX*=1.0/area;cY*=1.0/area;out.Set(cX,cY);};\r
19463 var b2ShapeDef=Class.create();b2ShapeDef.prototype={initialize:function()\r
19464 {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;},ComputeMass:function(massData)\r
19465 {massData.center=new b2Vec2(0.0,0.0)\r
19466 if(this.density==0.0)\r
19467 {massData.mass=0.0;massData.center.Set(0.0,0.0);massData.I=0.0;};switch(this.type)\r
19468 {case b2Shape.e_circleShape:{var circle=this;massData.mass=this.density*b2Settings.b2_pi*circle.radius*circle.radius;massData.center.Set(0.0,0.0);massData.I=0.5*(massData.mass)*circle.radius*circle.radius;}\r
19469 break;case b2Shape.e_boxShape:{var box=this;massData.mass=4.0*this.density*box.extents.x*box.extents.y;massData.center.Set(0.0,0.0);massData.I=massData.mass/3.0*b2Math.b2Dot(box.extents,box.extents);}\r
19470 break;case b2Shape.e_polyShape:{var poly=this;b2Shape.PolyMass(massData,poly.vertices,poly.vertexCount,this.density);}\r
19471 break;default:massData.mass=0.0;massData.center.Set(0.0,0.0);massData.I=0.0;break;}},type:0,userData:null,localPosition:null,localRotation:null,friction:null,restitution:null,density:null,categoryBits:0,maskBits:0,groupIndex:0};\r
19472 var b2BoxDef=Class.create();Object.extend(b2BoxDef.prototype,b2ShapeDef.prototype);Object.extend(b2BoxDef.prototype,{initialize:function()\r
19473 {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.type=b2Shape.e_boxShape;this.extents=new b2Vec2(1.0,1.0);},extents:null});\r
19474 var b2CircleDef=Class.create();Object.extend(b2CircleDef.prototype,b2ShapeDef.prototype);Object.extend(b2CircleDef.prototype,{initialize:function()\r
19475 {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.type=b2Shape.e_circleShape;this.radius=1.0;},radius:null});var b2CircleShape=Class.create();Object.extend(b2CircleShape.prototype,b2Shape.prototype);Object.extend(b2CircleShape.prototype,{TestPoint:function(p){var d=new b2Vec2();d.SetV(p);d.Subtract(this.m_position);return b2Math.b2Dot(d,d)<=this.m_radius*this.m_radius;},initialize:function(def,body,localCenter){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;this.m_localPosition=new b2Vec2();var circle=def;this.m_localPosition.Set(def.localPosition.x-localCenter.x,def.localPosition.y-localCenter.y);this.m_type=b2Shape.e_circleShape;this.m_radius=circle.radius;this.m_R.SetM(this.m_body.m_R);var rX=this.m_R.col1.x*this.m_localPosition.x+this.m_R.col2.x*this.m_localPosition.y;var rY=this.m_R.col1.y*this.m_localPosition.x+this.m_R.col2.y*this.m_localPosition.y;this.m_position.x=this.m_body.m_position.x+rX;this.m_position.y=this.m_body.m_position.y+rY;this.m_maxRadius=Math.sqrt(rX*rX+rY*rY)+this.m_radius;var aabb=new b2AABB();aabb.minVertex.Set(this.m_position.x-this.m_radius,this.m_position.y-this.m_radius);aabb.maxVertex.Set(this.m_position.x+this.m_radius,this.m_position.y+this.m_radius);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))\r
19476 {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}\r
19477 else\r
19478 {this.m_proxyId=b2Pair.b2_nullProxy;}\r
19479 if(this.m_proxyId==b2Pair.b2_nullProxy)\r
19480 {this.m_body.Freeze();}},Synchronize:function(position1,R1,position2,R2){this.m_R.SetM(R2);this.m_position.x=(R2.col1.x*this.m_localPosition.x+R2.col2.x*this.m_localPosition.y)+position2.x;this.m_position.y=(R2.col1.y*this.m_localPosition.x+R2.col2.y*this.m_localPosition.y)+position2.y;if(this.m_proxyId==b2Pair.b2_nullProxy)\r
19481 {return;}\r
19482 var p1X=position1.x+(R1.col1.x*this.m_localPosition.x+R1.col2.x*this.m_localPosition.y);var p1Y=position1.y+(R1.col1.y*this.m_localPosition.x+R1.col2.y*this.m_localPosition.y);var lowerX=Math.min(p1X,this.m_position.x);var lowerY=Math.min(p1Y,this.m_position.y);var upperX=Math.max(p1X,this.m_position.x);var upperY=Math.max(p1Y,this.m_position.y);var aabb=new b2AABB();aabb.minVertex.Set(lowerX-this.m_radius,lowerY-this.m_radius);aabb.maxVertex.Set(upperX+this.m_radius,upperY+this.m_radius);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))\r
19483 {broadPhase.MoveProxy(this.m_proxyId,aabb);}\r
19484 else\r
19485 {this.m_body.Freeze();}},QuickSync:function(position,R){this.m_R.SetM(R);this.m_position.x=(R.col1.x*this.m_localPosition.x+R.col2.x*this.m_localPosition.y)+position.x;this.m_position.y=(R.col1.y*this.m_localPosition.x+R.col2.y*this.m_localPosition.y)+position.y;},ResetProxy:function(broadPhase)\r
19486 {if(this.m_proxyId==b2Pair.b2_nullProxy)\r
19487 {return;}\r
19488 var proxy=broadPhase.GetProxy(this.m_proxyId);broadPhase.DestroyProxy(this.m_proxyId);proxy=null;var aabb=new b2AABB();aabb.minVertex.Set(this.m_position.x-this.m_radius,this.m_position.y-this.m_radius);aabb.maxVertex.Set(this.m_position.x+this.m_radius,this.m_position.y+this.m_radius);if(broadPhase.InRange(aabb))\r
19489 {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}\r
19490 else\r
19491 {this.m_proxyId=b2Pair.b2_nullProxy;}\r
19492 if(this.m_proxyId==b2Pair.b2_nullProxy)\r
19493 {this.m_body.Freeze();}},Support:function(dX,dY,out)\r
19494 {var len=Math.sqrt(dX*dX+dY*dY);dX/=len;dY/=len;out.Set(this.m_position.x+this.m_radius*dX,this.m_position.y+this.m_radius*dY);},m_localPosition:new b2Vec2(),m_radius:null});\r
19495 var b2MassData=Class.create();b2MassData.prototype={mass:0.0,center:new b2Vec2(0,0),I:0.0,initialize:function(){this.center=new b2Vec2(0,0);}}\r
19496 \r
19497 var b2PolyDef=Class.create();Object.extend(b2PolyDef.prototype,b2ShapeDef.prototype);Object.extend(b2PolyDef.prototype,{initialize:function()\r
19498 {this.type=b2Shape.e_unknownShape;this.userData=null;this.localPosition=new b2Vec2(0.0,0.0);this.localRotation=0.0;this.friction=0.2;this.restitution=0.0;this.density=0.0;this.categoryBits=0x0001;this.maskBits=0xFFFF;this.groupIndex=0;this.vertices=new Array(b2Settings.b2_maxPolyVertices);this.type=b2Shape.e_polyShape;this.vertexCount=0;for(var i=0;i<b2Settings.b2_maxPolyVertices;i++){this.vertices[i]=new b2Vec2();}},vertices:new Array(b2Settings.b2_maxPolyVertices),vertexCount:0});var b2PolyShape=Class.create();Object.extend(b2PolyShape.prototype,b2Shape.prototype);Object.extend(b2PolyShape.prototype,{TestPoint:function(p){var pLocal=new b2Vec2();pLocal.SetV(p);pLocal.Subtract(this.m_position);pLocal.MulTM(this.m_R);for(var i=0;i<this.m_vertexCount;++i)\r
19499 {var tVec=new b2Vec2();tVec.SetV(pLocal);tVec.Subtract(this.m_vertices[i]);var dot=b2Math.b2Dot(this.m_normals[i],tVec);if(dot>0.0)\r
19500 {return false;}}\r
19501 return true;},initialize:function(def,body,newOrigin){this.m_R=new b2Mat22();this.m_position=new b2Vec2();this.m_userData=def.userData;this.m_friction=def.friction;this.m_restitution=def.restitution;this.m_body=body;this.m_proxyId=b2Pair.b2_nullProxy;this.m_maxRadius=0.0;this.m_categoryBits=def.categoryBits;this.m_maskBits=def.maskBits;this.m_groupIndex=def.groupIndex;this.syncAABB=new b2AABB();this.syncMat=new b2Mat22();this.m_localCentroid=new b2Vec2();this.m_localOBB=new b2OBB();var i=0;var hX;var hY;var tVec;var aabb=new b2AABB();this.m_vertices=new Array(b2Settings.b2_maxPolyVertices);this.m_coreVertices=new Array(b2Settings.b2_maxPolyVertices);this.m_normals=new Array(b2Settings.b2_maxPolyVertices);this.m_type=b2Shape.e_polyShape;var localR=new b2Mat22(def.localRotation);if(def.type==b2Shape.e_boxShape)\r
19502 {this.m_localCentroid.x=def.localPosition.x-newOrigin.x;this.m_localCentroid.y=def.localPosition.y-newOrigin.y;var box=def;this.m_vertexCount=4;hX=box.extents.x;hY=box.extents.y;var hcX=Math.max(0.0,hX-2.0*b2Settings.b2_linearSlop);var hcY=Math.max(0.0,hY-2.0*b2Settings.b2_linearSlop);tVec=this.m_vertices[0]=new b2Vec2();tVec.x=localR.col1.x*hX+localR.col2.x*hY;tVec.y=localR.col1.y*hX+localR.col2.y*hY;tVec=this.m_vertices[1]=new b2Vec2();tVec.x=localR.col1.x*-hX+localR.col2.x*hY;tVec.y=localR.col1.y*-hX+localR.col2.y*hY;tVec=this.m_vertices[2]=new b2Vec2();tVec.x=localR.col1.x*-hX+localR.col2.x*-hY;tVec.y=localR.col1.y*-hX+localR.col2.y*-hY;tVec=this.m_vertices[3]=new b2Vec2();tVec.x=localR.col1.x*hX+localR.col2.x*-hY;tVec.y=localR.col1.y*hX+localR.col2.y*-hY;tVec=this.m_coreVertices[0]=new b2Vec2();tVec.x=localR.col1.x*hcX+localR.col2.x*hcY;tVec.y=localR.col1.y*hcX+localR.col2.y*hcY;tVec=this.m_coreVertices[1]=new b2Vec2();tVec.x=localR.col1.x*-hcX+localR.col2.x*hcY;tVec.y=localR.col1.y*-hcX+localR.col2.y*hcY;tVec=this.m_coreVertices[2]=new b2Vec2();tVec.x=localR.col1.x*-hcX+localR.col2.x*-hcY;tVec.y=localR.col1.y*-hcX+localR.col2.y*-hcY;tVec=this.m_coreVertices[3]=new b2Vec2();tVec.x=localR.col1.x*hcX+localR.col2.x*-hcY;tVec.y=localR.col1.y*hcX+localR.col2.y*-hcY;}\r
19503 else\r
19504 {var poly=def;this.m_vertexCount=poly.vertexCount;b2Shape.PolyCentroid(poly.vertices,poly.vertexCount,b2PolyShape.tempVec);var centroidX=b2PolyShape.tempVec.x;var centroidY=b2PolyShape.tempVec.y;this.m_localCentroid.x=def.localPosition.x+(localR.col1.x*centroidX+localR.col2.x*centroidY)-newOrigin.x;this.m_localCentroid.y=def.localPosition.y+(localR.col1.y*centroidX+localR.col2.y*centroidY)-newOrigin.y;for(i=0;i<this.m_vertexCount;++i)\r
19505 {this.m_vertices[i]=new b2Vec2();this.m_coreVertices[i]=new b2Vec2();hX=poly.vertices[i].x-centroidX;hY=poly.vertices[i].y-centroidY;this.m_vertices[i].x=localR.col1.x*hX+localR.col2.x*hY;this.m_vertices[i].y=localR.col1.y*hX+localR.col2.y*hY;var uX=this.m_vertices[i].x;var uY=this.m_vertices[i].y;var length=Math.sqrt(uX*uX+uY*uY);if(length>Number.MIN_VALUE)\r
19506 {uX*=1.0/length;uY*=1.0/length;}\r
19507 this.m_coreVertices[i].x=this.m_vertices[i].x-2.0*b2Settings.b2_linearSlop*uX;this.m_coreVertices[i].y=this.m_vertices[i].y-2.0*b2Settings.b2_linearSlop*uY;}}\r
19508 var minVertexX=Number.MAX_VALUE;var minVertexY=Number.MAX_VALUE;var maxVertexX=-Number.MAX_VALUE;var maxVertexY=-Number.MAX_VALUE;this.m_maxRadius=0.0;for(i=0;i<this.m_vertexCount;++i)\r
19509 {var v=this.m_vertices[i];minVertexX=Math.min(minVertexX,v.x);minVertexY=Math.min(minVertexY,v.y);maxVertexX=Math.max(maxVertexX,v.x);maxVertexY=Math.max(maxVertexY,v.y);this.m_maxRadius=Math.max(this.m_maxRadius,v.Length());}\r
19510 this.m_localOBB.R.SetIdentity();this.m_localOBB.center.Set((minVertexX+maxVertexX)*0.5,(minVertexY+maxVertexY)*0.5);this.m_localOBB.extents.Set((maxVertexX-minVertexX)*0.5,(maxVertexY-minVertexY)*0.5);var i1=0;var i2=0;for(i=0;i<this.m_vertexCount;++i)\r
19511 {this.m_normals[i]=new b2Vec2();i1=i;i2=i+1<this.m_vertexCount?i+1:0;this.m_normals[i].x=this.m_vertices[i2].y-this.m_vertices[i1].y;this.m_normals[i].y=-(this.m_vertices[i2].x-this.m_vertices[i1].x);this.m_normals[i].Normalize();}\r
19512 for(i=0;i<this.m_vertexCount;++i)\r
19513 {i1=i;i2=i+1<this.m_vertexCount?i+1:0;}\r
19514 this.m_R.SetM(this.m_body.m_R);this.m_position.x=this.m_body.m_position.x+(this.m_R.col1.x*this.m_localCentroid.x+this.m_R.col2.x*this.m_localCentroid.y);this.m_position.y=this.m_body.m_position.y+(this.m_R.col1.y*this.m_localCentroid.x+this.m_R.col2.y*this.m_localCentroid.y);b2PolyShape.tAbsR.col1.x=this.m_R.col1.x*this.m_localOBB.R.col1.x+this.m_R.col2.x*this.m_localOBB.R.col1.y;b2PolyShape.tAbsR.col1.y=this.m_R.col1.y*this.m_localOBB.R.col1.x+this.m_R.col2.y*this.m_localOBB.R.col1.y;b2PolyShape.tAbsR.col2.x=this.m_R.col1.x*this.m_localOBB.R.col2.x+this.m_R.col2.x*this.m_localOBB.R.col2.y;b2PolyShape.tAbsR.col2.y=this.m_R.col1.y*this.m_localOBB.R.col2.x+this.m_R.col2.y*this.m_localOBB.R.col2.y;b2PolyShape.tAbsR.Abs()\r
19515 hX=b2PolyShape.tAbsR.col1.x*this.m_localOBB.extents.x+b2PolyShape.tAbsR.col2.x*this.m_localOBB.extents.y;hY=b2PolyShape.tAbsR.col1.y*this.m_localOBB.extents.x+b2PolyShape.tAbsR.col2.y*this.m_localOBB.extents.y;var positionX=this.m_position.x+(this.m_R.col1.x*this.m_localOBB.center.x+this.m_R.col2.x*this.m_localOBB.center.y);var positionY=this.m_position.y+(this.m_R.col1.y*this.m_localOBB.center.x+this.m_R.col2.y*this.m_localOBB.center.y);aabb.minVertex.x=positionX-hX;aabb.minVertex.y=positionY-hY;aabb.maxVertex.x=positionX+hX;aabb.maxVertex.y=positionY+hY;var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(aabb))\r
19516 {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}\r
19517 else\r
19518 {this.m_proxyId=b2Pair.b2_nullProxy;}\r
19519 if(this.m_proxyId==b2Pair.b2_nullProxy)\r
19520 {this.m_body.Freeze();}},syncAABB:new b2AABB(),syncMat:new b2Mat22(),Synchronize:function(position1,R1,position2,R2){this.m_R.SetM(R2);this.m_position.x=this.m_body.m_position.x+(R2.col1.x*this.m_localCentroid.x+R2.col2.x*this.m_localCentroid.y);this.m_position.y=this.m_body.m_position.y+(R2.col1.y*this.m_localCentroid.x+R2.col2.y*this.m_localCentroid.y);if(this.m_proxyId==b2Pair.b2_nullProxy)\r
19521 {return;}\r
19522 var hX;var hY;var v1=R1.col1;var v2=R1.col2;var v3=this.m_localOBB.R.col1;var v4=this.m_localOBB.R.col2;this.syncMat.col1.x=v1.x*v3.x+v2.x*v3.y;this.syncMat.col1.y=v1.y*v3.x+v2.y*v3.y;this.syncMat.col2.x=v1.x*v4.x+v2.x*v4.y;this.syncMat.col2.y=v1.y*v4.x+v2.y*v4.y;this.syncMat.Abs();hX=this.m_localCentroid.x+this.m_localOBB.center.x;hY=this.m_localCentroid.y+this.m_localOBB.center.y;var centerX=position1.x+(R1.col1.x*hX+R1.col2.x*hY);var centerY=position1.y+(R1.col1.y*hX+R1.col2.y*hY);hX=this.syncMat.col1.x*this.m_localOBB.extents.x+this.syncMat.col2.x*this.m_localOBB.extents.y;hY=this.syncMat.col1.y*this.m_localOBB.extents.x+this.syncMat.col2.y*this.m_localOBB.extents.y;this.syncAABB.minVertex.x=centerX-hX;this.syncAABB.minVertex.y=centerY-hY;this.syncAABB.maxVertex.x=centerX+hX;this.syncAABB.maxVertex.y=centerY+hY;v1=R2.col1;v2=R2.col2;v3=this.m_localOBB.R.col1;v4=this.m_localOBB.R.col2;this.syncMat.col1.x=v1.x*v3.x+v2.x*v3.y;this.syncMat.col1.y=v1.y*v3.x+v2.y*v3.y;this.syncMat.col2.x=v1.x*v4.x+v2.x*v4.y;this.syncMat.col2.y=v1.y*v4.x+v2.y*v4.y;this.syncMat.Abs();hX=this.m_localCentroid.x+this.m_localOBB.center.x;hY=this.m_localCentroid.y+this.m_localOBB.center.y;centerX=position2.x+(R2.col1.x*hX+R2.col2.x*hY);centerY=position2.y+(R2.col1.y*hX+R2.col2.y*hY);hX=this.syncMat.col1.x*this.m_localOBB.extents.x+this.syncMat.col2.x*this.m_localOBB.extents.y;hY=this.syncMat.col1.y*this.m_localOBB.extents.x+this.syncMat.col2.y*this.m_localOBB.extents.y;this.syncAABB.minVertex.x=Math.min(this.syncAABB.minVertex.x,centerX-hX);this.syncAABB.minVertex.y=Math.min(this.syncAABB.minVertex.y,centerY-hY);this.syncAABB.maxVertex.x=Math.max(this.syncAABB.maxVertex.x,centerX+hX);this.syncAABB.maxVertex.y=Math.max(this.syncAABB.maxVertex.y,centerY+hY);var broadPhase=this.m_body.m_world.m_broadPhase;if(broadPhase.InRange(this.syncAABB))\r
19523 {broadPhase.MoveProxy(this.m_proxyId,this.syncAABB);}\r
19524 else\r
19525 {this.m_body.Freeze();}},QuickSync:function(position,R){this.m_R.SetM(R);this.m_position.x=position.x+(R.col1.x*this.m_localCentroid.x+R.col2.x*this.m_localCentroid.y);this.m_position.y=position.y+(R.col1.y*this.m_localCentroid.x+R.col2.y*this.m_localCentroid.y);},ResetProxy:function(broadPhase){if(this.m_proxyId==b2Pair.b2_nullProxy)\r
19526 {return;}\r
19527 var proxy=broadPhase.GetProxy(this.m_proxyId);broadPhase.DestroyProxy(this.m_proxyId);proxy=null;var R=b2Math.b2MulMM(this.m_R,this.m_localOBB.R);var absR=b2Math.b2AbsM(R);var h=b2Math.b2MulMV(absR,this.m_localOBB.extents);var position=b2Math.b2MulMV(this.m_R,this.m_localOBB.center);position.Add(this.m_position);var aabb=new b2AABB();aabb.minVertex.SetV(position);aabb.minVertex.Subtract(h);aabb.maxVertex.SetV(position);aabb.maxVertex.Add(h);if(broadPhase.InRange(aabb))\r
19528 {this.m_proxyId=broadPhase.CreateProxy(aabb,this);}\r
19529 else\r
19530 {this.m_proxyId=b2Pair.b2_nullProxy;}\r
19531 if(this.m_proxyId==b2Pair.b2_nullProxy)\r
19532 {this.m_body.Freeze();}},Support:function(dX,dY,out)\r
19533 {var dLocalX=(dX*this.m_R.col1.x+dY*this.m_R.col1.y);var dLocalY=(dX*this.m_R.col2.x+dY*this.m_R.col2.y);var bestIndex=0;var bestValue=(this.m_coreVertices[0].x*dLocalX+this.m_coreVertices[0].y*dLocalY);for(var i=1;i<this.m_vertexCount;++i)\r
19534 {var value=(this.m_coreVertices[i].x*dLocalX+this.m_coreVertices[i].y*dLocalY);if(value>bestValue)\r
19535 {bestIndex=i;bestValue=value;}}\r
19536 out.Set(this.m_position.x+(this.m_R.col1.x*this.m_coreVertices[bestIndex].x+this.m_R.col2.x*this.m_coreVertices[bestIndex].y),this.m_position.y+(this.m_R.col1.y*this.m_coreVertices[bestIndex].x+this.m_R.col2.y*this.m_coreVertices[bestIndex].y));},m_localCentroid:new b2Vec2(),m_localOBB:new b2OBB(),m_vertices:null,m_coreVertices:null,m_vertexCount:0,m_normals:null});b2PolyShape.tempVec=new b2Vec2();b2PolyShape.tAbsR=new b2Mat22();\r
19537 var b2Body=Class.create();b2Body.prototype={SetOriginPosition:function(position,rotation){if(this.IsFrozen())\r
19538 {return;}\r
19539 this.m_rotation=rotation;this.m_R.Set(this.m_rotation);this.m_position=b2Math.AddVV(position,b2Math.b2MulMV(this.m_R,this.m_center));this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
19540 {s.Synchronize(this.m_position,this.m_R,this.m_position,this.m_R);}\r
19541 this.m_world.m_broadPhase.Commit();},GetOriginPosition:function(){return b2Math.SubtractVV(this.m_position,b2Math.b2MulMV(this.m_R,this.m_center));},SetCenterPosition:function(position,rotation){if(this.IsFrozen())\r
19542 {return;}\r
19543 this.m_rotation=rotation;this.m_R.Set(this.m_rotation);this.m_position.SetV(position);this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
19544 {s.Synchronize(this.m_position,this.m_R,this.m_position,this.m_R);}\r
19545 this.m_world.m_broadPhase.Commit();},GetCenterPosition:function(){return this.m_position;},GetRotation:function(){return this.m_rotation;},GetRotationMatrix:function(){return this.m_R;},SetLinearVelocity:function(v){this.m_linearVelocity.SetV(v);},GetLinearVelocity:function(){return this.m_linearVelocity;},SetAngularVelocity:function(w){this.m_angularVelocity=w;},GetAngularVelocity:function(){return this.m_angularVelocity;},ApplyForce:function(force,point)\r
19546 {if(this.IsSleeping()==false)\r
19547 {this.m_force.Add(force);this.m_torque+=b2Math.b2CrossVV(b2Math.SubtractVV(point,this.m_position),force);}},ApplyTorque:function(torque)\r
19548 {if(this.IsSleeping()==false)\r
19549 {this.m_torque+=torque;}},ApplyImpulse:function(impulse,point)\r
19550 {if(this.IsSleeping()==false)\r
19551 {this.m_linearVelocity.Add(b2Math.MulFV(this.m_invMass,impulse));this.m_angularVelocity+=(this.m_invI*b2Math.b2CrossVV(b2Math.SubtractVV(point,this.m_position),impulse));}},GetMass:function(){return this.m_mass;},GetInertia:function(){return this.m_I;},GetWorldPoint:function(localPoint){return b2Math.AddVV(this.m_position,b2Math.b2MulMV(this.m_R,localPoint));},GetWorldVector:function(localVector){return b2Math.b2MulMV(this.m_R,localVector);},GetLocalPoint:function(worldPoint){return b2Math.b2MulTMV(this.m_R,b2Math.SubtractVV(worldPoint,this.m_position));},GetLocalVector:function(worldVector){return b2Math.b2MulTMV(this.m_R,worldVector);},IsStatic:function(){return(this.m_flags&b2Body.e_staticFlag)==b2Body.e_staticFlag;},IsFrozen:function()\r
19552 {return(this.m_flags&b2Body.e_frozenFlag)==b2Body.e_frozenFlag;},IsSleeping:function(){return(this.m_flags&b2Body.e_sleepFlag)==b2Body.e_sleepFlag;},AllowSleeping:function(flag)\r
19553 {if(flag)\r
19554 {this.m_flags|=b2Body.e_allowSleepFlag;}\r
19555 else\r
19556 {this.m_flags&=~b2Body.e_allowSleepFlag;this.WakeUp();}},WakeUp:function(){this.m_flags&=~b2Body.e_sleepFlag;this.m_sleepTime=0.0;},GetShapeList:function(){return this.m_shapeList;},GetContactList:function()\r
19557 {return this.m_contactList;},GetJointList:function()\r
19558 {return this.m_jointList;},GetNext:function(){return this.m_next;},GetUserData:function(){return this.m_userData;},initialize:function(bd,world){this.sMat0=new b2Mat22();this.m_position=new b2Vec2();this.m_R=new b2Mat22(0);this.m_position0=new b2Vec2();var i=0;var sd;var massData;this.m_flags=0;this.m_position.SetV(bd.position);this.m_rotation=bd.rotation;this.m_R.Set(this.m_rotation);this.m_position0.SetV(this.m_position);this.m_rotation0=this.m_rotation;this.m_world=world;this.m_linearDamping=b2Math.b2Clamp(1.0-bd.linearDamping,0.0,1.0);this.m_angularDamping=b2Math.b2Clamp(1.0-bd.angularDamping,0.0,1.0);this.m_force=new b2Vec2(0.0,0.0);this.m_torque=0.0;this.m_mass=0.0;var massDatas=new Array(b2Settings.b2_maxShapesPerBody);for(i=0;i<b2Settings.b2_maxShapesPerBody;i++){massDatas[i]=new b2MassData();}\r
19559 this.m_shapeCount=0;this.m_center=new b2Vec2(0.0,0.0);for(i=0;i<b2Settings.b2_maxShapesPerBody;++i)\r
19560 {sd=bd.shapes[i];if(sd==null)break;massData=massDatas[i];sd.ComputeMass(massData);this.m_mass+=massData.mass;this.m_center.x+=massData.mass*(sd.localPosition.x+massData.center.x);this.m_center.y+=massData.mass*(sd.localPosition.y+massData.center.y);++this.m_shapeCount;}\r
19561 if(this.m_mass>0.0)\r
19562 {this.m_center.Multiply(1.0/this.m_mass);this.m_position.Add(b2Math.b2MulMV(this.m_R,this.m_center));}\r
19563 else\r
19564 {this.m_flags|=b2Body.e_staticFlag;}\r
19565 this.m_I=0.0;for(i=0;i<this.m_shapeCount;++i)\r
19566 {sd=bd.shapes[i];massData=massDatas[i];this.m_I+=massData.I;var r=b2Math.SubtractVV(b2Math.AddVV(sd.localPosition,massData.center),this.m_center);this.m_I+=massData.mass*b2Math.b2Dot(r,r);}\r
19567 if(this.m_mass>0.0)\r
19568 {this.m_invMass=1.0/this.m_mass;}\r
19569 else\r
19570 {this.m_invMass=0.0;}\r
19571 if(this.m_I>0.0&&bd.preventRotation==false)\r
19572 {this.m_invI=1.0/this.m_I;}\r
19573 else\r
19574 {this.m_I=0.0;this.m_invI=0.0;}\r
19575 this.m_linearVelocity=b2Math.AddVV(bd.linearVelocity,b2Math.b2CrossFV(bd.angularVelocity,this.m_center));this.m_angularVelocity=bd.angularVelocity;this.m_jointList=null;this.m_contactList=null;this.m_prev=null;this.m_next=null;this.m_shapeList=null;for(i=0;i<this.m_shapeCount;++i)\r
19576 {sd=bd.shapes[i];var shape=b2Shape.Create(sd,this,this.m_center);shape.m_next=this.m_shapeList;this.m_shapeList=shape;}\r
19577 this.m_sleepTime=0.0;if(bd.allowSleep)\r
19578 {this.m_flags|=b2Body.e_allowSleepFlag;}\r
19579 if(bd.isSleeping)\r
19580 {this.m_flags|=b2Body.e_sleepFlag;}\r
19581 if((this.m_flags&b2Body.e_sleepFlag)||this.m_invMass==0.0)\r
19582 {this.m_linearVelocity.Set(0.0,0.0);this.m_angularVelocity=0.0;}\r
19583 this.m_userData=bd.userData;},Destroy:function(){var s=this.m_shapeList;while(s)\r
19584 {var s0=s;s=s.m_next;b2Shape.Destroy(s0);}},sMat0:new b2Mat22(),SynchronizeShapes:function(){this.sMat0.Set(this.m_rotation0);for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
19585 {s.Synchronize(this.m_position0,this.sMat0,this.m_position,this.m_R);}},QuickSyncShapes:function(){for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
19586 {s.QuickSync(this.m_position,this.m_R);}},IsConnected:function(other){for(var jn=this.m_jointList;jn!=null;jn=jn.next)\r
19587 {if(jn.other==other)\r
19588 return jn.joint.m_collideConnected==false;}\r
19589 return false;},Freeze:function(){this.m_flags|=b2Body.e_frozenFlag;this.m_linearVelocity.SetZero();this.m_angularVelocity=0.0;for(var s=this.m_shapeList;s!=null;s=s.m_next)\r
19590 {s.DestroyProxy();}},m_flags:0,m_position:new b2Vec2(),m_rotation:null,m_R:new b2Mat22(0),m_position0:new b2Vec2(),m_rotation0:null,m_linearVelocity:null,m_angularVelocity:null,m_force:null,m_torque:null,m_center:null,m_world:null,m_prev:null,m_next:null,m_shapeList:null,m_shapeCount:0,m_jointList:null,m_contactList:null,m_mass:null,m_invMass:null,m_I:null,m_invI:null,m_linearDamping:null,m_angularDamping:null,m_sleepTime:null,m_userData:null};b2Body.e_staticFlag=0x0001;b2Body.e_frozenFlag=0x0002;b2Body.e_islandFlag=0x0004;b2Body.e_sleepFlag=0x0008;b2Body.e_allowSleepFlag=0x0010;b2Body.e_destroyFlag=0x0020;\r
19591 var b2BodyDef=Class.create();b2BodyDef.prototype={initialize:function()\r
19592 {this.shapes=new Array();this.userData=null;for(var i=0;i<b2Settings.b2_maxShapesPerBody;i++){this.shapes[i]=null;}\r
19593 this.position=new b2Vec2(0.0,0.0);this.rotation=0.0;this.linearVelocity=new b2Vec2(0.0,0.0);this.angularVelocity=0.0;this.linearDamping=0.0;this.angularDamping=0.0;this.allowSleep=true;this.isSleeping=false;this.preventRotation=false;},userData:null,shapes:new Array(),position:null,rotation:null,linearVelocity:null,angularVelocity:null,linearDamping:null,angularDamping:null,allowSleep:null,isSleeping:null,preventRotation:null,AddShape:function(shape)\r
19594 {for(var i=0;i<b2Settings.b2_maxShapesPerBody;++i)\r
19595 {if(this.shapes[i]==null)\r
19596 {this.shapes[i]=shape;break;}}}};\r
19597 var b2CollisionFilter=Class.create();b2CollisionFilter.prototype={ShouldCollide:function(shape1,shape2){if(shape1.m_groupIndex==shape2.m_groupIndex&&shape1.m_groupIndex!=0)\r
19598 {return shape1.m_groupIndex>0;}\r
19599 var collide=(shape1.m_maskBits&shape2.m_categoryBits)!=0&&(shape1.m_categoryBits&shape2.m_maskBits)!=0;return collide;},initialize:function(){}};b2CollisionFilter.b2_defaultFilter=new b2CollisionFilter;\r
19600 var b2Island=Class.create();b2Island.prototype={initialize:function(bodyCapacity,contactCapacity,jointCapacity,allocator)\r
19601 {var i=0;this.m_bodyCapacity=bodyCapacity;this.m_contactCapacity=contactCapacity;this.m_jointCapacity=jointCapacity;this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;this.m_bodies=new Array(bodyCapacity);for(i=0;i<bodyCapacity;i++)\r
19602 this.m_bodies[i]=null;this.m_contacts=new Array(contactCapacity);for(i=0;i<contactCapacity;i++)\r
19603 this.m_contacts[i]=null;this.m_joints=new Array(jointCapacity);for(i=0;i<jointCapacity;i++)\r
19604 this.m_joints[i]=null;this.m_allocator=allocator;},Clear:function()\r
19605 {this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;},Solve:function(step,gravity)\r
19606 {var i=0;var b;for(i=0;i<this.m_bodyCount;++i)\r
19607 {b=this.m_bodies[i];if(b.m_invMass==0.0)\r
19608 continue;b.m_linearVelocity.Add(b2Math.MulFV(step.dt,b2Math.AddVV(gravity,b2Math.MulFV(b.m_invMass,b.m_force))));b.m_angularVelocity+=step.dt*b.m_invI*b.m_torque;b.m_linearVelocity.Multiply(b.m_linearDamping);b.m_angularVelocity*=b.m_angularDamping;b.m_position0.SetV(b.m_position);b.m_rotation0=b.m_rotation;}\r
19609 var contactSolver=new b2ContactSolver(this.m_contacts,this.m_contactCount,this.m_allocator);contactSolver.PreSolve();for(i=0;i<this.m_jointCount;++i)\r
19610 {this.m_joints[i].PrepareVelocitySolver();}\r
19611 for(i=0;i<step.iterations;++i)\r
19612 {contactSolver.SolveVelocityConstraints();for(var j=0;j<this.m_jointCount;++j)\r
19613 {this.m_joints[j].SolveVelocityConstraints(step);}}\r
19614 for(i=0;i<this.m_bodyCount;++i)\r
19615 {b=this.m_bodies[i];if(b.m_invMass==0.0)\r
19616 continue;b.m_position.x+=step.dt*b.m_linearVelocity.x;b.m_position.y+=step.dt*b.m_linearVelocity.y;b.m_rotation+=step.dt*b.m_angularVelocity;b.m_R.Set(b.m_rotation);}\r
19617 for(i=0;i<this.m_jointCount;++i)\r
19618 {this.m_joints[i].PreparePositionSolver();}\r
19619 if(b2World.s_enablePositionCorrection)\r
19620 {for(b2Island.m_positionIterationCount=0;b2Island.m_positionIterationCount<step.iterations;++b2Island.m_positionIterationCount)\r
19621 {var contactsOkay=contactSolver.SolvePositionConstraints(b2Settings.b2_contactBaumgarte);var jointsOkay=true;for(i=0;i<this.m_jointCount;++i)\r
19622 {var jointOkay=this.m_joints[i].SolvePositionConstraints();jointsOkay=jointsOkay&&jointOkay;}\r
19623 if(contactsOkay&&jointsOkay)\r
19624 {break;}}}\r
19625 contactSolver.PostSolve();for(i=0;i<this.m_bodyCount;++i)\r
19626 {b=this.m_bodies[i];if(b.m_invMass==0.0)\r
19627 continue;b.m_R.Set(b.m_rotation);b.SynchronizeShapes();b.m_force.Set(0.0,0.0);b.m_torque=0.0;}},UpdateSleep:function(dt)\r
19628 {var i=0;var b;var minSleepTime=Number.MAX_VALUE;var linTolSqr=b2Settings.b2_linearSleepTolerance*b2Settings.b2_linearSleepTolerance;var angTolSqr=b2Settings.b2_angularSleepTolerance*b2Settings.b2_angularSleepTolerance;for(i=0;i<this.m_bodyCount;++i)\r
19629 {b=this.m_bodies[i];if(b.m_invMass==0.0)\r
19630 {continue;}\r
19631 if((b.m_flags&b2Body.e_allowSleepFlag)==0)\r
19632 {b.m_sleepTime=0.0;minSleepTime=0.0;}\r
19633 if((b.m_flags&b2Body.e_allowSleepFlag)==0||b.m_angularVelocity*b.m_angularVelocity>angTolSqr||b2Math.b2Dot(b.m_linearVelocity,b.m_linearVelocity)>linTolSqr)\r
19634 {b.m_sleepTime=0.0;minSleepTime=0.0;}\r
19635 else\r
19636 {b.m_sleepTime+=dt;minSleepTime=b2Math.b2Min(minSleepTime,b.m_sleepTime);}}\r
19637 if(minSleepTime>=b2Settings.b2_timeToSleep)\r
19638 {for(i=0;i<this.m_bodyCount;++i)\r
19639 {b=this.m_bodies[i];b.m_flags|=b2Body.e_sleepFlag;}}},AddBody:function(body)\r
19640 {this.m_bodies[this.m_bodyCount++]=body;},AddContact:function(contact)\r
19641 {this.m_contacts[this.m_contactCount++]=contact;},AddJoint:function(joint)\r
19642 {this.m_joints[this.m_jointCount++]=joint;},m_allocator:null,m_bodies:null,m_contacts:null,m_joints:null,m_bodyCount:0,m_jointCount:0,m_contactCount:0,m_bodyCapacity:0,m_contactCapacity:0,m_jointCapacity:0,m_positionError:null};b2Island.m_positionIterationCount=0;\r
19643 var b2TimeStep=Class.create();b2TimeStep.prototype={dt:null,inv_dt:null,iterations:0,initialize:function(){}};\r
19644 var b2ContactNode=Class.create();b2ContactNode.prototype={other:null,contact:null,prev:null,next:null,initialize:function(){}};\r
19645 var b2Contact=Class.create();b2Contact.prototype={GetManifolds:function(){return null},GetManifoldCount:function()\r
19646 {return this.m_manifoldCount;},GetNext:function(){return this.m_next;},GetShape1:function(){return this.m_shape1;},GetShape2:function(){return this.m_shape2;},initialize:function(s1,s2)\r
19647 {this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
19648 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;},Evaluate:function(){},m_flags:0,m_prev:null,m_next:null,m_node1:new b2ContactNode(),m_node2:new b2ContactNode(),m_shape1:null,m_shape2:null,m_manifoldCount:0,m_friction:null,m_restitution:null};b2Contact.e_islandFlag=0x0001;b2Contact.e_destroyFlag=0x0002;b2Contact.AddType=function(createFcn,destroyFcn,type1,type2)\r
19649 {b2Contact.s_registers[type1][type2].createFcn=createFcn;b2Contact.s_registers[type1][type2].destroyFcn=destroyFcn;b2Contact.s_registers[type1][type2].primary=true;if(type1!=type2)\r
19650 {b2Contact.s_registers[type2][type1].createFcn=createFcn;b2Contact.s_registers[type2][type1].destroyFcn=destroyFcn;b2Contact.s_registers[type2][type1].primary=false;}};b2Contact.InitializeRegisters=function(){b2Contact.s_registers=new Array(b2Shape.e_shapeTypeCount);for(var i=0;i<b2Shape.e_shapeTypeCount;i++){b2Contact.s_registers[i]=new Array(b2Shape.e_shapeTypeCount);for(var j=0;j<b2Shape.e_shapeTypeCount;j++){b2Contact.s_registers[i][j]=new b2ContactRegister();}}\r
19651 b2Contact.AddType(b2CircleContact.Create,b2CircleContact.Destroy,b2Shape.e_circleShape,b2Shape.e_circleShape);b2Contact.AddType(b2PolyAndCircleContact.Create,b2PolyAndCircleContact.Destroy,b2Shape.e_polyShape,b2Shape.e_circleShape);b2Contact.AddType(b2PolyContact.Create,b2PolyContact.Destroy,b2Shape.e_polyShape,b2Shape.e_polyShape);};b2Contact.Create=function(shape1,shape2,allocator){if(b2Contact.s_initialized==false)\r
19652 {b2Contact.InitializeRegisters();b2Contact.s_initialized=true;}\r
19653 var type1=shape1.m_type;var type2=shape2.m_type;var createFcn=b2Contact.s_registers[type1][type2].createFcn;if(createFcn)\r
19654 {if(b2Contact.s_registers[type1][type2].primary)\r
19655 {return createFcn(shape1,shape2,allocator);}\r
19656 else\r
19657 {var c=createFcn(shape2,shape1,allocator);for(var i=0;i<c.GetManifoldCount();++i)\r
19658 {var m=c.GetManifolds()[i];m.normal=m.normal.Negative();}\r
19659 return c;}}\r
19660 else\r
19661 {return null;}};b2Contact.Destroy=function(contact,allocator){if(contact.GetManifoldCount()>0)\r
19662 {contact.m_shape1.m_body.WakeUp();contact.m_shape2.m_body.WakeUp();}\r
19663 var type1=contact.m_shape1.m_type;var type2=contact.m_shape2.m_type;var destroyFcn=b2Contact.s_registers[type1][type2].destroyFcn;destroyFcn(contact,allocator);};b2Contact.s_registers=null;b2Contact.s_initialized=false;\r
19664 var b2ContactConstraint=Class.create();b2ContactConstraint.prototype={initialize:function(){this.normal=new b2Vec2();this.points=new Array(b2Settings.b2_maxManifoldPoints);for(var i=0;i<b2Settings.b2_maxManifoldPoints;i++){this.points[i]=new b2ContactConstraintPoint();}},points:null,normal:new b2Vec2(),manifold:null,body1:null,body2:null,friction:null,restitution:null,pointCount:0};\r
19665 var b2ContactConstraintPoint=Class.create();b2ContactConstraintPoint.prototype={localAnchor1:new b2Vec2(),localAnchor2:new b2Vec2(),normalImpulse:null,tangentImpulse:null,positionImpulse:null,normalMass:null,tangentMass:null,separation:null,velocityBias:null,initialize:function(){this.localAnchor1=new b2Vec2();this.localAnchor2=new b2Vec2();}};\r
19666 var b2ContactRegister=Class.create();b2ContactRegister.prototype={createFcn:null,destroyFcn:null,primary:null,initialize:function(){}};\r
19667 var b2ContactSolver=Class.create();b2ContactSolver.prototype={initialize:function(contacts,contactCount,allocator){this.m_constraints=new Array();this.m_allocator=allocator;var i=0;var tVec;var tMat;this.m_constraintCount=0;for(i=0;i<contactCount;++i)\r
19668 {this.m_constraintCount+=contacts[i].GetManifoldCount();}\r
19669 for(i=0;i<this.m_constraintCount;i++){this.m_constraints[i]=new b2ContactConstraint();}\r
19670 var count=0;for(i=0;i<contactCount;++i)\r
19671 {var contact=contacts[i];var b1=contact.m_shape1.m_body;var b2=contact.m_shape2.m_body;var manifoldCount=contact.GetManifoldCount();var manifolds=contact.GetManifolds();var friction=contact.m_friction;var restitution=contact.m_restitution;var v1X=b1.m_linearVelocity.x;var v1Y=b1.m_linearVelocity.y;var v2X=b2.m_linearVelocity.x;var v2Y=b2.m_linearVelocity.y;var w1=b1.m_angularVelocity;var w2=b2.m_angularVelocity;for(var j=0;j<manifoldCount;++j)\r
19672 {var manifold=manifolds[j];var normalX=manifold.normal.x;var normalY=manifold.normal.y;var c=this.m_constraints[count];c.body1=b1;c.body2=b2;c.manifold=manifold;c.normal.x=normalX;c.normal.y=normalY;c.pointCount=manifold.pointCount;c.friction=friction;c.restitution=restitution;for(var k=0;k<c.pointCount;++k)\r
19673 {var cp=manifold.points[k];var ccp=c.points[k];ccp.normalImpulse=cp.normalImpulse;ccp.tangentImpulse=cp.tangentImpulse;ccp.separation=cp.separation;var r1X=cp.position.x-b1.m_position.x;var r1Y=cp.position.y-b1.m_position.y;var r2X=cp.position.x-b2.m_position.x;var r2Y=cp.position.y-b2.m_position.y;tVec=ccp.localAnchor1;tMat=b1.m_R;tVec.x=r1X*tMat.col1.x+r1Y*tMat.col1.y;tVec.y=r1X*tMat.col2.x+r1Y*tMat.col2.y;tVec=ccp.localAnchor2;tMat=b2.m_R;tVec.x=r2X*tMat.col1.x+r2Y*tMat.col1.y;tVec.y=r2X*tMat.col2.x+r2Y*tMat.col2.y;var r1Sqr=r1X*r1X+r1Y*r1Y;var r2Sqr=r2X*r2X+r2Y*r2Y;var rn1=r1X*normalX+r1Y*normalY;var rn2=r2X*normalX+r2Y*normalY;var kNormal=b1.m_invMass+b2.m_invMass;kNormal+=b1.m_invI*(r1Sqr-rn1*rn1)+b2.m_invI*(r2Sqr-rn2*rn2);ccp.normalMass=1.0/kNormal;var tangentX=normalY\r
19674 var tangentY=-normalX;var rt1=r1X*tangentX+r1Y*tangentY;var rt2=r2X*tangentX+r2Y*tangentY;var kTangent=b1.m_invMass+b2.m_invMass;kTangent+=b1.m_invI*(r1Sqr-rt1*rt1)+b2.m_invI*(r2Sqr-rt2*rt2);ccp.tangentMass=1.0/kTangent;ccp.velocityBias=0.0;if(ccp.separation>0.0)\r
19675 {ccp.velocityBias=-60.0*ccp.separation;}\r
19676 var tX=v2X+(-w2*r2Y)-v1X-(-w1*r1Y);var tY=v2Y+(w2*r2X)-v1Y-(w1*r1X);var vRel=c.normal.x*tX+c.normal.y*tY;if(vRel<-b2Settings.b2_velocityThreshold)\r
19677 {ccp.velocityBias+=-c.restitution*vRel;}}\r
19678 ++count;}}},PreSolve:function(){var tVec;var tVec2;var tMat;for(var i=0;i<this.m_constraintCount;++i)\r
19679 {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var j=0;var tCount=0;if(b2World.s_enableWarmStarting)\r
19680 {tCount=c.pointCount;for(j=0;j<tCount;++j)\r
19681 {var ccp=c.points[j];var PX=ccp.normalImpulse*normalX+ccp.tangentImpulse*tangentX;var PY=ccp.normalImpulse*normalY+ccp.tangentImpulse*tangentY;tMat=b1.m_R;tVec=ccp.localAnchor1;var r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;var r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b2.m_R;tVec=ccp.localAnchor2;var r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;var r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;b1.m_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b1.m_linearVelocity.x-=invMass1*PX;b1.m_linearVelocity.y-=invMass1*PY;b2.m_angularVelocity+=invI2*(r2X*PY-r2Y*PX);b2.m_linearVelocity.x+=invMass2*PX;b2.m_linearVelocity.y+=invMass2*PY;ccp.positionImpulse=0.0;}}\r
19682 else{tCount=c.pointCount;for(j=0;j<tCount;++j)\r
19683 {var ccp2=c.points[j];ccp2.normalImpulse=0.0;ccp2.tangentImpulse=0.0;ccp2.positionImpulse=0.0;}}}},SolveVelocityConstraints:function(){var j=0;var ccp;var r1X;var r1Y;var r2X;var r2Y;var dvX;var dvY;var lambda;var newImpulse;var PX;var PY;var tMat;var tVec;for(var i=0;i<this.m_constraintCount;++i)\r
19684 {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var b1_angularVelocity=b1.m_angularVelocity;var b1_linearVelocity=b1.m_linearVelocity;var b2_angularVelocity=b2.m_angularVelocity;var b2_linearVelocity=b2.m_linearVelocity;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var tCount=c.pointCount;for(j=0;j<tCount;++j)\r
19685 {ccp=c.points[j];tMat=b1.m_R;tVec=ccp.localAnchor1;r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y\r
19686 r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y\r
19687 tMat=b2.m_R;tVec=ccp.localAnchor2;r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y\r
19688 r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y\r
19689 dvX=b2_linearVelocity.x+(-b2_angularVelocity*r2Y)-b1_linearVelocity.x-(-b1_angularVelocity*r1Y);dvY=b2_linearVelocity.y+(b2_angularVelocity*r2X)-b1_linearVelocity.y-(b1_angularVelocity*r1X);var vn=dvX*normalX+dvY*normalY;lambda=-ccp.normalMass*(vn-ccp.velocityBias);newImpulse=b2Math.b2Max(ccp.normalImpulse+lambda,0.0);lambda=newImpulse-ccp.normalImpulse;PX=lambda*normalX;PY=lambda*normalY;b1_linearVelocity.x-=invMass1*PX;b1_linearVelocity.y-=invMass1*PY;b1_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b2_linearVelocity.x+=invMass2*PX;b2_linearVelocity.y+=invMass2*PY;b2_angularVelocity+=invI2*(r2X*PY-r2Y*PX);ccp.normalImpulse=newImpulse;dvX=b2_linearVelocity.x+(-b2_angularVelocity*r2Y)-b1_linearVelocity.x-(-b1_angularVelocity*r1Y);dvY=b2_linearVelocity.y+(b2_angularVelocity*r2X)-b1_linearVelocity.y-(b1_angularVelocity*r1X);var vt=dvX*tangentX+dvY*tangentY;lambda=ccp.tangentMass*(-vt);var maxFriction=c.friction*ccp.normalImpulse;newImpulse=b2Math.b2Clamp(ccp.tangentImpulse+lambda,-maxFriction,maxFriction);lambda=newImpulse-ccp.tangentImpulse;PX=lambda*tangentX;PY=lambda*tangentY;b1_linearVelocity.x-=invMass1*PX;b1_linearVelocity.y-=invMass1*PY;b1_angularVelocity-=invI1*(r1X*PY-r1Y*PX);b2_linearVelocity.x+=invMass2*PX;b2_linearVelocity.y+=invMass2*PY;b2_angularVelocity+=invI2*(r2X*PY-r2Y*PX);ccp.tangentImpulse=newImpulse;}\r
19690 b1.m_angularVelocity=b1_angularVelocity;b2.m_angularVelocity=b2_angularVelocity;}},SolvePositionConstraints:function(beta){var minSeparation=0.0;var tMat;var tVec;for(var i=0;i<this.m_constraintCount;++i)\r
19691 {var c=this.m_constraints[i];var b1=c.body1;var b2=c.body2;var b1_position=b1.m_position;var b1_rotation=b1.m_rotation;var b2_position=b2.m_position;var b2_rotation=b2.m_rotation;var invMass1=b1.m_invMass;var invI1=b1.m_invI;var invMass2=b2.m_invMass;var invI2=b2.m_invI;var normalX=c.normal.x;var normalY=c.normal.y;var tangentX=normalY;var tangentY=-normalX;var tCount=c.pointCount;for(var j=0;j<tCount;++j)\r
19692 {var ccp=c.points[j];tMat=b1.m_R;tVec=ccp.localAnchor1;var r1X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y\r
19693 var r1Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y\r
19694 tMat=b2.m_R;tVec=ccp.localAnchor2;var r2X=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y\r
19695 var r2Y=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y\r
19696 var p1X=b1_position.x+r1X;var p1Y=b1_position.y+r1Y;var p2X=b2_position.x+r2X;var p2Y=b2_position.y+r2Y;var dpX=p2X-p1X;var dpY=p2Y-p1Y;var separation=(dpX*normalX+dpY*normalY)+ccp.separation;minSeparation=b2Math.b2Min(minSeparation,separation);var C=beta*b2Math.b2Clamp(separation+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);var dImpulse=-ccp.normalMass*C;var impulse0=ccp.positionImpulse;ccp.positionImpulse=b2Math.b2Max(impulse0+dImpulse,0.0);dImpulse=ccp.positionImpulse-impulse0;var impulseX=dImpulse*normalX;var impulseY=dImpulse*normalY;b1_position.x-=invMass1*impulseX;b1_position.y-=invMass1*impulseY;b1_rotation-=invI1*(r1X*impulseY-r1Y*impulseX);b1.m_R.Set(b1_rotation);b2_position.x+=invMass2*impulseX;b2_position.y+=invMass2*impulseY;b2_rotation+=invI2*(r2X*impulseY-r2Y*impulseX);b2.m_R.Set(b2_rotation);}\r
19697 b1.m_rotation=b1_rotation;b2.m_rotation=b2_rotation;}\r
19698 return minSeparation>=-b2Settings.b2_linearSlop;},PostSolve:function(){for(var i=0;i<this.m_constraintCount;++i)\r
19699 {var c=this.m_constraints[i];var m=c.manifold;for(var j=0;j<c.pointCount;++j)\r
19700 {var mPoint=m.points[j];var cPoint=c.points[j];mPoint.normalImpulse=cPoint.normalImpulse;mPoint.tangentImpulse=cPoint.tangentImpulse;}}},m_allocator:null,m_constraints:new Array(),m_constraintCount:0};\r
19701 var b2CircleContact=Class.create();Object.extend(b2CircleContact.prototype,b2Contact.prototype);Object.extend(b2CircleContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
19702 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m_manifold=[new b2Manifold()];this.m_manifold[0].pointCount=0;this.m_manifold[0].points[0].normalImpulse=0.0;this.m_manifold[0].points[0].tangentImpulse=0.0;},Evaluate:function(){b2Collision.b2CollideCircle(this.m_manifold[0],this.m_shape1,this.m_shape2,false);if(this.m_manifold[0].pointCount>0)\r
19703 {this.m_manifoldCount=1;}\r
19704 else\r
19705 {this.m_manifoldCount=0;}},GetManifolds:function()\r
19706 {return this.m_manifold;},m_manifold:[new b2Manifold()]});b2CircleContact.Create=function(shape1,shape2,allocator){return new b2CircleContact(shape1,shape2);};b2CircleContact.Destroy=function(contact,allocator){};\r
19707 var b2Conservative=Class.create();b2Conservative.prototype={initialize:function(){}}\r
19708 b2Conservative.R1=new b2Mat22();b2Conservative.R2=new b2Mat22();b2Conservative.x1=new b2Vec2();b2Conservative.x2=new b2Vec2();b2Conservative.Conservative=function(shape1,shape2){var body1=shape1.GetBody();var body2=shape2.GetBody();var v1X=body1.m_position.x-body1.m_position0.x;var v1Y=body1.m_position.y-body1.m_position0.y;var omega1=body1.m_rotation-body1.m_rotation0;var v2X=body2.m_position.x-body2.m_position0.x;var v2Y=body2.m_position.y-body2.m_position0.y;var omega2=body2.m_rotation-body2.m_rotation0;var r1=shape1.GetMaxRadius();var r2=shape2.GetMaxRadius();var p1StartX=body1.m_position0.x;var p1StartY=body1.m_position0.y;var a1Start=body1.m_rotation0;var p2StartX=body2.m_position0.x;var p2StartY=body2.m_position0.y;var a2Start=body2.m_rotation0;var p1X=p1StartX;var p1Y=p1StartY;var a1=a1Start;var p2X=p2StartX;var p2Y=p2StartY;var a2=a2Start;b2Conservative.R1.Set(a1);b2Conservative.R2.Set(a2);shape1.QuickSync(p1,b2Conservative.R1);shape2.QuickSync(p2,b2Conservative.R2);var s1=0.0;var maxIterations=10;var dX;var dY;var invRelativeVelocity=0.0;var hit=true;for(var iter=0;iter<maxIterations;++iter)\r
19709 {var distance=b2Distance.Distance(b2Conservative.x1,b2Conservative.x2,shape1,shape2);if(distance<b2Settings.b2_linearSlop)\r
19710 {if(iter==0)\r
19711 {hit=false;}\r
19712 else\r
19713 {hit=true;}\r
19714 break;}\r
19715 if(iter==0)\r
19716 {dX=b2Conservative.x2.x-b2Conservative.x1.x;dY=b2Conservative.x2.y-b2Conservative.x1.y;var dLen=Math.sqrt(dX*dX+dY*dY);var relativeVelocity=(dX*(v1X-v2X)+dY*(v1Y-v2Y))+Math.abs(omega1)*r1+Math.abs(omega2)*r2;if(Math.abs(relativeVelocity)<Number.MIN_VALUE)\r
19717 {hit=false;break;}\r
19718 invRelativeVelocity=1.0/relativeVelocity;}\r
19719 var ds=distance*invRelativeVelocity;var s2=s1+ds;if(s2<0.0||1.0<s2)\r
19720 {hit=false;break;}\r
19721 if(s2<(1.0+100.0*Number.MIN_VALUE)*s1)\r
19722 {hit=true;break;}\r
19723 s1=s2;p1X=p1StartX+s1*v1.x;p1Y=p1StartY+s1*v1.y;a1=a1Start+s1*omega1;p2X=p2StartX+s1*v2.x;p2Y=p2StartY+s1*v2.y;a2=a2Start+s1*omega2;b2Conservative.R1.Set(a1);b2Conservative.R2.Set(a2);shape1.QuickSync(p1,b2Conservative.R1);shape2.QuickSync(p2,b2Conservative.R2);}\r
19724 if(hit)\r
19725 {dX=b2Conservative.x2.x-b2Conservative.x1.x;dY=b2Conservative.x2.y-b2Conservative.x1.y;var length=Math.sqrt(dX*dX+dY*dY);if(length>FLT_EPSILON)\r
19726 {d*=b2_linearSlop/length;}\r
19727 if(body1.IsStatic())\r
19728 {body1.m_position.x=p1X;body1.m_position.y=p1Y;}\r
19729 else\r
19730 {body1.m_position.x=p1X-dX;body1.m_position.y=p1Y-dY;}\r
19731 body1.m_rotation=a1;body1.m_R.Set(a1);body1.QuickSyncShapes();if(body2.IsStatic())\r
19732 {body2.m_position.x=p2X;body2.m_position.y=p2Y;}\r
19733 else\r
19734 {body2.m_position.x=p2X+dX;body2.m_position.y=p2Y+dY;}\r
19735 body2.m_position.x=p2X+dX;body2.m_position.y=p2Y+dY;body2.m_rotation=a2;body2.m_R.Set(a2);body2.QuickSyncShapes();return true;}\r
19736 shape1.QuickSync(body1.m_position,body1.m_R);shape2.QuickSync(body2.m_position,body2.m_R);return false;};\r
19737 var b2NullContact=Class.create();Object.extend(b2NullContact.prototype,b2Contact.prototype);Object.extend(b2NullContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
19738 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;},Evaluate:function(){},GetManifolds:function(){return null;}});\r
19739 var b2PolyAndCircleContact=Class.create();Object.extend(b2PolyAndCircleContact.prototype,b2Contact.prototype);Object.extend(b2PolyAndCircleContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
19740 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m_manifold=[new b2Manifold()];b2Settings.b2Assert(this.m_shape1.m_type==b2Shape.e_polyShape);b2Settings.b2Assert(this.m_shape2.m_type==b2Shape.e_circleShape);this.m_manifold[0].pointCount=0;this.m_manifold[0].points[0].normalImpulse=0.0;this.m_manifold[0].points[0].tangentImpulse=0.0;},Evaluate:function(){b2Collision.b2CollidePolyAndCircle(this.m_manifold[0],this.m_shape1,this.m_shape2,false);if(this.m_manifold[0].pointCount>0)\r
19741 {this.m_manifoldCount=1;}\r
19742 else\r
19743 {this.m_manifoldCount=0;}},GetManifolds:function()\r
19744 {return this.m_manifold;},m_manifold:[new b2Manifold()]})\r
19745 b2PolyAndCircleContact.Create=function(shape1,shape2,allocator){return new b2PolyAndCircleContact(shape1,shape2);};b2PolyAndCircleContact.Destroy=function(contact,allocator){};\r
19746 var b2PolyContact=Class.create();Object.extend(b2PolyContact.prototype,b2Contact.prototype);Object.extend(b2PolyContact.prototype,{initialize:function(s1,s2){this.m_node1=new b2ContactNode();this.m_node2=new b2ContactNode();this.m_flags=0;if(!s1||!s2){this.m_shape1=null;this.m_shape2=null;return;}\r
19747 this.m_shape1=s1;this.m_shape2=s2;this.m_manifoldCount=0;this.m_friction=Math.sqrt(this.m_shape1.m_friction*this.m_shape2.m_friction);this.m_restitution=b2Math.b2Max(this.m_shape1.m_restitution,this.m_shape2.m_restitution);this.m_prev=null;this.m_next=null;this.m_node1.contact=null;this.m_node1.prev=null;this.m_node1.next=null;this.m_node1.other=null;this.m_node2.contact=null;this.m_node2.prev=null;this.m_node2.next=null;this.m_node2.other=null;this.m0=new b2Manifold();this.m_manifold=[new b2Manifold()];this.m_manifold[0].pointCount=0;},m0:new b2Manifold(),Evaluate:function(){var tMani=this.m_manifold[0];var tPoints=this.m0.points;for(var k=0;k<tMani.pointCount;k++){var tPoint=tPoints[k];var tPoint0=tMani.points[k];tPoint.normalImpulse=tPoint0.normalImpulse;tPoint.tangentImpulse=tPoint0.tangentImpulse;tPoint.id=tPoint0.id.Copy();}\r
19748 this.m0.pointCount=tMani.pointCount;b2Collision.b2CollidePoly(tMani,this.m_shape1,this.m_shape2,false);if(tMani.pointCount>0)\r
19749 {var match=[false,false];for(var i=0;i<tMani.pointCount;++i)\r
19750 {var cp=tMani.points[i];cp.normalImpulse=0.0;cp.tangentImpulse=0.0;var idKey=cp.id.key;for(var j=0;j<this.m0.pointCount;++j)\r
19751 {if(match[j]==true)\r
19752 continue;var cp0=this.m0.points[j];var id0=cp0.id;if(id0.key==idKey)\r
19753 {match[j]=true;cp.normalImpulse=cp0.normalImpulse;cp.tangentImpulse=cp0.tangentImpulse;break;}}}\r
19754 this.m_manifoldCount=1;}\r
19755 else\r
19756 {this.m_manifoldCount=0;}},GetManifolds:function()\r
19757 {return this.m_manifold;},m_manifold:[new b2Manifold()]});b2PolyContact.Create=function(shape1,shape2,allocator){return new b2PolyContact(shape1,shape2);};b2PolyContact.Destroy=function(contact,allocator){};\r
19758 var b2ContactManager=Class.create();Object.extend(b2ContactManager.prototype,b2PairCallback.prototype);Object.extend(b2ContactManager.prototype,{initialize:function(){this.m_nullContact=new b2NullContact();this.m_world=null;this.m_destroyImmediate=false;},PairAdded:function(proxyUserData1,proxyUserData2){var shape1=proxyUserData1;var shape2=proxyUserData2;var body1=shape1.m_body;var body2=shape2.m_body;if(body1.IsStatic()&&body2.IsStatic())\r
19759 {return this.m_nullContact;}\r
19760 if(shape1.m_body==shape2.m_body)\r
19761 {return this.m_nullContact;}\r
19762 if(body2.IsConnected(body1))\r
19763 {return this.m_nullContact;}\r
19764 if(this.m_world.m_filter!=null&&this.m_world.m_filter.ShouldCollide(shape1,shape2)==false)\r
19765 {return this.m_nullContact;}\r
19766 if(body2.m_invMass==0.0)\r
19767 {var tempShape=shape1;shape1=shape2;shape2=tempShape;var tempBody=body1;body1=body2;body2=tempBody;}\r
19768 var contact=b2Contact.Create(shape1,shape2,this.m_world.m_blockAllocator);if(contact==null)\r
19769 {return this.m_nullContact;}\r
19770 else\r
19771 {contact.m_prev=null;contact.m_next=this.m_world.m_contactList;if(this.m_world.m_contactList!=null)\r
19772 {this.m_world.m_contactList.m_prev=contact;}\r
19773 this.m_world.m_contactList=contact;this.m_world.m_contactCount++;}\r
19774 return contact;},PairRemoved:function(proxyUserData1,proxyUserData2,pairUserData){if(pairUserData==null)\r
19775 {return;}\r
19776 var c=pairUserData;if(c!=this.m_nullContact)\r
19777 {if(this.m_destroyImmediate==true)\r
19778 {this.DestroyContact(c);c=null;}\r
19779 else\r
19780 {c.m_flags|=b2Contact.e_destroyFlag;}}},DestroyContact:function(c)\r
19781 {if(c.m_prev)\r
19782 {c.m_prev.m_next=c.m_next;}\r
19783 if(c.m_next)\r
19784 {c.m_next.m_prev=c.m_prev;}\r
19785 if(c==this.m_world.m_contactList)\r
19786 {this.m_world.m_contactList=c.m_next;}\r
19787 if(c.GetManifoldCount()>0)\r
19788 {var body1=c.m_shape1.m_body;var body2=c.m_shape2.m_body;var node1=c.m_node1;var node2=c.m_node2;body1.WakeUp();body2.WakeUp();if(node1.prev)\r
19789 {node1.prev.next=node1.next;}\r
19790 if(node1.next)\r
19791 {node1.next.prev=node1.prev;}\r
19792 if(node1==body1.m_contactList)\r
19793 {body1.m_contactList=node1.next;}\r
19794 node1.prev=null;node1.next=null;if(node2.prev)\r
19795 {node2.prev.next=node2.next;}\r
19796 if(node2.next)\r
19797 {node2.next.prev=node2.prev;}\r
19798 if(node2==body2.m_contactList)\r
19799 {body2.m_contactList=node2.next;}\r
19800 node2.prev=null;node2.next=null;}\r
19801 b2Contact.Destroy(c,this.m_world.m_blockAllocator);--this.m_world.m_contactCount;},CleanContactList:function()\r
19802 {var c=this.m_world.m_contactList;while(c!=null)\r
19803 {var c0=c;c=c.m_next;if(c0.m_flags&b2Contact.e_destroyFlag)\r
19804 {this.DestroyContact(c0);c0=null;}}},Collide:function()\r
19805 {var body1;var body2;var node1;var node2;for(var c=this.m_world.m_contactList;c!=null;c=c.m_next)\r
19806 {if(c.m_shape1.m_body.IsSleeping()&&c.m_shape2.m_body.IsSleeping())\r
19807 {continue;}\r
19808 var oldCount=c.GetManifoldCount();c.Evaluate();var newCount=c.GetManifoldCount();if(oldCount==0&&newCount>0)\r
19809 {body1=c.m_shape1.m_body;body2=c.m_shape2.m_body;node1=c.m_node1;node2=c.m_node2;node1.contact=c;node1.other=body2;node1.prev=null;node1.next=body1.m_contactList;if(node1.next!=null)\r
19810 {node1.next.prev=c.m_node1;}\r
19811 body1.m_contactList=c.m_node1;node2.contact=c;node2.other=body1;node2.prev=null;node2.next=body2.m_contactList;if(node2.next!=null)\r
19812 {node2.next.prev=node2;}\r
19813 body2.m_contactList=node2;}\r
19814 else if(oldCount>0&&newCount==0)\r
19815 {body1=c.m_shape1.m_body;body2=c.m_shape2.m_body;node1=c.m_node1;node2=c.m_node2;if(node1.prev)\r
19816 {node1.prev.next=node1.next;}\r
19817 if(node1.next)\r
19818 {node1.next.prev=node1.prev;}\r
19819 if(node1==body1.m_contactList)\r
19820 {body1.m_contactList=node1.next;}\r
19821 node1.prev=null;node1.next=null;if(node2.prev)\r
19822 {node2.prev.next=node2.next;}\r
19823 if(node2.next)\r
19824 {node2.next.prev=node2.prev;}\r
19825 if(node2==body2.m_contactList)\r
19826 {body2.m_contactList=node2.next;}\r
19827 node2.prev=null;node2.next=null;}}},m_world:null,m_nullContact:new b2NullContact(),m_destroyImmediate:null});\r
19828 var b2World=Class.create();b2World.prototype={initialize:function(worldAABB,gravity,doSleep){this.step=new b2TimeStep();this.m_contactManager=new b2ContactManager();this.m_listener=null;this.m_filter=b2CollisionFilter.b2_defaultFilter;this.m_bodyList=null;this.m_contactList=null;this.m_jointList=null;this.m_bodyCount=0;this.m_contactCount=0;this.m_jointCount=0;this.m_bodyDestroyList=null;this.m_allowSleep=doSleep;this.m_gravity=gravity;this.m_contactManager.m_world=this;this.m_broadPhase=new b2BroadPhase(worldAABB,this.m_contactManager);var bd=new b2BodyDef();this.m_groundBody=this.CreateBody(bd);},SetListener:function(listener){this.m_listener=listener;},SetFilter:function(filter){this.m_filter=filter;},CreateBody:function(def){var b=new b2Body(def,this);b.m_prev=null;b.m_next=this.m_bodyList;if(this.m_bodyList)\r
19829 {this.m_bodyList.m_prev=b;}\r
19830 this.m_bodyList=b;++this.m_bodyCount;return b;},DestroyBody:function(b)\r
19831 {if(b.m_flags&b2Body.e_destroyFlag)\r
19832 {return;}\r
19833 if(b.m_prev)\r
19834 {b.m_prev.m_next=b.m_next;}\r
19835 if(b.m_next)\r
19836 {b.m_next.m_prev=b.m_prev;}\r
19837 if(b==this.m_bodyList)\r
19838 {this.m_bodyList=b.m_next;}\r
19839 b.m_flags|=b2Body.e_destroyFlag;--this.m_bodyCount;b.m_prev=null;b.m_next=this.m_bodyDestroyList;this.m_bodyDestroyList=b;},CleanBodyList:function()\r
19840 {this.m_contactManager.m_destroyImmediate=true;var b=this.m_bodyDestroyList;while(b)\r
19841 {var b0=b;b=b.m_next;var jn=b0.m_jointList;while(jn)\r
19842 {var jn0=jn;jn=jn.next;if(this.m_listener)\r
19843 {this.m_listener.NotifyJointDestroyed(jn0.joint);}\r
19844 this.DestroyJoint(jn0.joint);}\r
19845 b0.Destroy();}\r
19846 this.m_bodyDestroyList=null;this.m_contactManager.m_destroyImmediate=false;},CreateJoint:function(def){var j=b2Joint.Create(def,this.m_blockAllocator);j.m_prev=null;j.m_next=this.m_jointList;if(this.m_jointList)\r
19847 {this.m_jointList.m_prev=j;}\r
19848 this.m_jointList=j;++this.m_jointCount;j.m_node1.joint=j;j.m_node1.other=j.m_body2;j.m_node1.prev=null;j.m_node1.next=j.m_body1.m_jointList;if(j.m_body1.m_jointList)j.m_body1.m_jointList.prev=j.m_node1;j.m_body1.m_jointList=j.m_node1;j.m_node2.joint=j;j.m_node2.other=j.m_body1;j.m_node2.prev=null;j.m_node2.next=j.m_body2.m_jointList;if(j.m_body2.m_jointList)j.m_body2.m_jointList.prev=j.m_node2;j.m_body2.m_jointList=j.m_node2;if(def.collideConnected==false)\r
19849 {var b=def.body1.m_shapeCount<def.body2.m_shapeCount?def.body1:def.body2;for(var s=b.m_shapeList;s;s=s.m_next)\r
19850 {s.ResetProxy(this.m_broadPhase);}}\r
19851 return j;},DestroyJoint:function(j)\r
19852 {var collideConnected=j.m_collideConnected;if(j.m_prev)\r
19853 {j.m_prev.m_next=j.m_next;}\r
19854 if(j.m_next)\r
19855 {j.m_next.m_prev=j.m_prev;}\r
19856 if(j==this.m_jointList)\r
19857 {this.m_jointList=j.m_next;}\r
19858 var body1=j.m_body1;var body2=j.m_body2;body1.WakeUp();body2.WakeUp();if(j.m_node1.prev)\r
19859 {j.m_node1.prev.next=j.m_node1.next;}\r
19860 if(j.m_node1.next)\r
19861 {j.m_node1.next.prev=j.m_node1.prev;}\r
19862 if(j.m_node1==body1.m_jointList)\r
19863 {body1.m_jointList=j.m_node1.next;}\r
19864 j.m_node1.prev=null;j.m_node1.next=null;if(j.m_node2.prev)\r
19865 {j.m_node2.prev.next=j.m_node2.next;}\r
19866 if(j.m_node2.next)\r
19867 {j.m_node2.next.prev=j.m_node2.prev;}\r
19868 if(j.m_node2==body2.m_jointList)\r
19869 {body2.m_jointList=j.m_node2.next;}\r
19870 j.m_node2.prev=null;j.m_node2.next=null;b2Joint.Destroy(j,this.m_blockAllocator);--this.m_jointCount;if(collideConnected==false)\r
19871 {var b=body1.m_shapeCount<body2.m_shapeCount?body1:body2;for(var s=b.m_shapeList;s;s=s.m_next)\r
19872 {s.ResetProxy(this.m_broadPhase);}}},GetGroundBody:function(){return this.m_groundBody;},step:new b2TimeStep(),Step:function(dt,iterations){var b;var other;this.step.dt=dt;this.step.iterations=iterations;if(dt>0.0)\r
19873 {this.step.inv_dt=1.0/dt;}\r
19874 else\r
19875 {this.step.inv_dt=0.0;}\r
19876 this.m_positionIterationCount=0;this.m_contactManager.CleanContactList();this.CleanBodyList();this.m_contactManager.Collide();var island=new b2Island(this.m_bodyCount,this.m_contactCount,this.m_jointCount,this.m_stackAllocator);for(b=this.m_bodyList;b!=null;b=b.m_next)\r
19877 {b.m_flags&=~b2Body.e_islandFlag;}\r
19878 for(var c=this.m_contactList;c!=null;c=c.m_next)\r
19879 {c.m_flags&=~b2Contact.e_islandFlag;}\r
19880 for(var j=this.m_jointList;j!=null;j=j.m_next)\r
19881 {j.m_islandFlag=false;}\r
19882 var stackSize=this.m_bodyCount;var stack=new Array(this.m_bodyCount);for(var k=0;k<this.m_bodyCount;k++)\r
19883 stack[k]=null;for(var seed=this.m_bodyList;seed!=null;seed=seed.m_next)\r
19884 {if(seed.m_flags&(b2Body.e_staticFlag|b2Body.e_islandFlag|b2Body.e_sleepFlag|b2Body.e_frozenFlag))\r
19885 {continue;}\r
19886 island.Clear();var stackCount=0;stack[stackCount++]=seed;seed.m_flags|=b2Body.e_islandFlag;;while(stackCount>0)\r
19887 {b=stack[--stackCount];island.AddBody(b);b.m_flags&=~b2Body.e_sleepFlag;if(b.m_flags&b2Body.e_staticFlag)\r
19888 {continue;}\r
19889 for(var cn=b.m_contactList;cn!=null;cn=cn.next)\r
19890 {if(cn.contact.m_flags&b2Contact.e_islandFlag)\r
19891 {continue;}\r
19892 island.AddContact(cn.contact);cn.contact.m_flags|=b2Contact.e_islandFlag;other=cn.other;if(other.m_flags&b2Body.e_islandFlag)\r
19893 {continue;}\r
19894 stack[stackCount++]=other;other.m_flags|=b2Body.e_islandFlag;}\r
19895 for(var jn=b.m_jointList;jn!=null;jn=jn.next)\r
19896 {if(jn.joint.m_islandFlag==true)\r
19897 {continue;}\r
19898 island.AddJoint(jn.joint);jn.joint.m_islandFlag=true;other=jn.other;if(other.m_flags&b2Body.e_islandFlag)\r
19899 {continue;}\r
19900 stack[stackCount++]=other;other.m_flags|=b2Body.e_islandFlag;}}\r
19901 island.Solve(this.step,this.m_gravity);this.m_positionIterationCount=b2Math.b2Max(this.m_positionIterationCount,b2Island.m_positionIterationCount);if(this.m_allowSleep)\r
19902 {island.UpdateSleep(dt);}\r
19903 for(var i=0;i<island.m_bodyCount;++i)\r
19904 {b=island.m_bodies[i];if(b.m_flags&b2Body.e_staticFlag)\r
19905 {b.m_flags&=~b2Body.e_islandFlag;}\r
19906 if(b.IsFrozen()&&this.m_listener)\r
19907 {var response=this.m_listener.NotifyBoundaryViolated(b);if(response==b2WorldListener.b2_destroyBody)\r
19908 {this.DestroyBody(b);b=null;island.m_bodies[i]=null;}}}}\r
19909 this.m_broadPhase.Commit();},Query:function(aabb,shapes,maxCount){var results=new Array();var count=this.m_broadPhase.QueryAABB(aabb,results,maxCount);for(var i=0;i<count;++i)\r
19910 {shapes[i]=results[i];}\r
19911 return count;},GetBodyList:function(){return this.m_bodyList;},GetJointList:function(){return this.m_jointList;},GetContactList:function(){return this.m_contactList;},m_blockAllocator:null,m_stackAllocator:null,m_broadPhase:null,m_contactManager:new b2ContactManager(),m_bodyList:null,m_contactList:null,m_jointList:null,m_bodyCount:0,m_contactCount:0,m_jointCount:0,m_bodyDestroyList:null,m_gravity:null,m_allowSleep:null,m_groundBody:null,m_listener:null,m_filter:null,m_positionIterationCount:0};b2World.s_enablePositionCorrection=1;b2World.s_enableWarmStarting=1;\r
19912 var b2WorldListener=Class.create();b2WorldListener.prototype={NotifyJointDestroyed:function(joint){},NotifyBoundaryViolated:function(body)\r
19913 {return b2WorldListener.b2_freezeBody;},initialize:function(){}};b2WorldListener.b2_freezeBody=0;b2WorldListener.b2_destroyBody=1;\r
19914 var b2JointNode=Class.create();b2JointNode.prototype={other:null,joint:null,prev:null,next:null,initialize:function(){}}\r
19915 \r
19916 var b2Joint=Class.create();b2Joint.prototype={GetType:function(){return this.m_type;},GetAnchor1:function(){return null},GetAnchor2:function(){return null},GetReactionForce:function(invTimeStep){return null},GetReactionTorque:function(invTimeStep){return 0.0},GetBody1:function()\r
19917 {return this.m_body1;},GetBody2:function()\r
19918 {return this.m_body2;},GetNext:function(){return this.m_next;},GetUserData:function(){return this.m_userData;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;},PrepareVelocitySolver:function(){},SolveVelocityConstraints:function(step){},PreparePositionSolver:function(){},SolvePositionConstraints:function(){return false},m_type:0,m_prev:null,m_next:null,m_node1:new b2JointNode(),m_node2:new b2JointNode(),m_body1:null,m_body2:null,m_islandFlag:null,m_collideConnected:null,m_userData:null};b2Joint.Create=function(def,allocator){var joint=null;switch(def.type)\r
19919 {case b2Joint.e_distanceJoint:{joint=new b2DistanceJoint(def);}\r
19920 break;case b2Joint.e_mouseJoint:{joint=new b2MouseJoint(def);}\r
19921 break;case b2Joint.e_prismaticJoint:{joint=new b2PrismaticJoint(def);}\r
19922 break;case b2Joint.e_revoluteJoint:{joint=new b2RevoluteJoint(def);}\r
19923 break;case b2Joint.e_pulleyJoint:{joint=new b2PulleyJoint(def);}\r
19924 break;case b2Joint.e_gearJoint:{joint=new b2GearJoint(def);}\r
19925 break;default:break;}\r
19926 return joint;};b2Joint.Destroy=function(joint,allocator){};b2Joint.e_unknownJoint=0;b2Joint.e_revoluteJoint=1;b2Joint.e_prismaticJoint=2;b2Joint.e_distanceJoint=3;b2Joint.e_pulleyJoint=4;b2Joint.e_mouseJoint=5;b2Joint.e_gearJoint=6;b2Joint.e_inactiveLimit=0;b2Joint.e_atLowerLimit=1;b2Joint.e_atUpperLimit=2;b2Joint.e_equalLimits=3;\r
19927 var b2JointDef=Class.create();b2JointDef.prototype={initialize:function()\r
19928 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;},type:0,userData:null,body1:null,body2:null,collideConnected:null}\r
19929 \r
19930 var b2DistanceJoint=Class.create();Object.extend(b2DistanceJoint.prototype,b2Joint.prototype);Object.extend(b2DistanceJoint.prototype,{initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_u=new b2Vec2();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=def.anchorPoint1.x-this.m_body1.m_position.x;tY=def.anchorPoint1.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint2.x-this.m_body2.m_position.x;tY=def.anchorPoint2.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.y;tX=def.anchorPoint2.x-def.anchorPoint1.x;tY=def.anchorPoint2.y-def.anchorPoint1.y;this.m_length=Math.sqrt(tX*tX+tY*tY);this.m_impulse=0.0;},PrepareVelocitySolver:function(){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;this.m_u.x=this.m_body2.m_position.x+r2X-this.m_body1.m_position.x-r1X;this.m_u.y=this.m_body2.m_position.y+r2Y-this.m_body1.m_position.y-r1Y;var length=Math.sqrt(this.m_u.x*this.m_u.x+this.m_u.y*this.m_u.y);if(length>b2Settings.b2_linearSlop)\r
19931 {this.m_u.Multiply(1.0/length);}\r
19932 else\r
19933 {this.m_u.SetZero();}\r
19934 var cr1u=(r1X*this.m_u.y-r1Y*this.m_u.x);var cr2u=(r2X*this.m_u.y-r2Y*this.m_u.x);this.m_mass=this.m_body1.m_invMass+this.m_body1.m_invI*cr1u*cr1u+this.m_body2.m_invMass+this.m_body2.m_invI*cr2u*cr2u;this.m_mass=1.0/this.m_mass;if(b2World.s_enableWarmStarting)\r
19935 {var PX=this.m_impulse*this.m_u.x;var PY=this.m_impulse*this.m_u.y;this.m_body1.m_linearVelocity.x-=this.m_body1.m_invMass*PX;this.m_body1.m_linearVelocity.y-=this.m_body1.m_invMass*PY;this.m_body1.m_angularVelocity-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_linearVelocity.x+=this.m_body2.m_invMass*PX;this.m_body2.m_linearVelocity.y+=this.m_body2.m_invMass*PY;this.m_body2.m_angularVelocity+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);}\r
19936 else\r
19937 {this.m_impulse=0.0;}},SolveVelocityConstraints:function(step){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var v1X=this.m_body1.m_linearVelocity.x+(-this.m_body1.m_angularVelocity*r1Y);var v1Y=this.m_body1.m_linearVelocity.y+(this.m_body1.m_angularVelocity*r1X);var v2X=this.m_body2.m_linearVelocity.x+(-this.m_body2.m_angularVelocity*r2Y);var v2Y=this.m_body2.m_linearVelocity.y+(this.m_body2.m_angularVelocity*r2X);var Cdot=(this.m_u.x*(v2X-v1X)+this.m_u.y*(v2Y-v1Y));var impulse=-this.m_mass*Cdot;this.m_impulse+=impulse;var PX=impulse*this.m_u.x;var PY=impulse*this.m_u.y;this.m_body1.m_linearVelocity.x-=this.m_body1.m_invMass*PX;this.m_body1.m_linearVelocity.y-=this.m_body1.m_invMass*PY;this.m_body1.m_angularVelocity-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_linearVelocity.x+=this.m_body2.m_invMass*PX;this.m_body2.m_linearVelocity.y+=this.m_body2.m_invMass*PY;this.m_body2.m_angularVelocity+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);},SolvePositionConstraints:function(){var tMat;tMat=this.m_body1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=this.m_body2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var dX=this.m_body2.m_position.x+r2X-this.m_body1.m_position.x-r1X;var dY=this.m_body2.m_position.y+r2Y-this.m_body1.m_position.y-r1Y;var length=Math.sqrt(dX*dX+dY*dY);dX/=length;dY/=length;var C=length-this.m_length;C=b2Math.b2Clamp(C,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);var impulse=-this.m_mass*C;this.m_u.Set(dX,dY);var PX=impulse*this.m_u.x;var PY=impulse*this.m_u.y;this.m_body1.m_position.x-=this.m_body1.m_invMass*PX;this.m_body1.m_position.y-=this.m_body1.m_invMass*PY;this.m_body1.m_rotation-=this.m_body1.m_invI*(r1X*PY-r1Y*PX);this.m_body2.m_position.x+=this.m_body2.m_invMass*PX;this.m_body2.m_position.y+=this.m_body2.m_invMass*PY;this.m_body2.m_rotation+=this.m_body2.m_invI*(r2X*PY-r2Y*PX);this.m_body1.m_R.Set(this.m_body1.m_rotation);this.m_body2.m_R.Set(this.m_body2.m_rotation);return b2Math.b2Abs(C)<b2Settings.b2_linearSlop;},GetAnchor1:function(){return b2Math.AddVV(this.m_body1.m_position,b2Math.b2MulMV(this.m_body1.m_R,this.m_localAnchor1));},GetAnchor2:function(){return b2Math.AddVV(this.m_body2.m_position,b2Math.b2MulMV(this.m_body2.m_R,this.m_localAnchor2));},GetReactionForce:function(invTimeStep)\r
19938 {var F=new b2Vec2();F.SetV(this.m_u);F.Multiply(this.m_impulse*invTimeStep);return F;},GetReactionTorque:function(invTimeStep)\r
19939 {return 0.0;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_u:new b2Vec2(),m_impulse:null,m_mass:null,m_length:null});\r
19940 var b2DistanceJointDef=Class.create();Object.extend(b2DistanceJointDef.prototype,b2JointDef.prototype);Object.extend(b2DistanceJointDef.prototype,{initialize:function()\r
19941 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.anchorPoint1=new b2Vec2();this.anchorPoint2=new b2Vec2();this.type=b2Joint.e_distanceJoint;},anchorPoint1:new b2Vec2(),anchorPoint2:new b2Vec2()});\r
19942 var b2Jacobian=Class.create();b2Jacobian.prototype={linear1:new b2Vec2(),angular1:null,linear2:new b2Vec2(),angular2:null,SetZero:function(){this.linear1.SetZero();this.angular1=0.0;this.linear2.SetZero();this.angular2=0.0;},Set:function(x1,a1,x2,a2){this.linear1.SetV(x1);this.angular1=a1;this.linear2.SetV(x2);this.angular2=a2;},Compute:function(x1,a1,x2,a2){return(this.linear1.x*x1.x+this.linear1.y*x1.y)+this.angular1*a1+(this.linear2.x*x2.x+this.linear2.y*x2.y)+this.angular2*a2;},initialize:function(){this.linear1=new b2Vec2();this.linear2=new b2Vec2();}};\r
19943 var b2GearJoint=Class.create();Object.extend(b2GearJoint.prototype,b2Joint.prototype);Object.extend(b2GearJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetReactionForce:function(invTimeStep){return new b2Vec2();},GetReactionTorque:function(invTimeStep){return 0.0;},GetRatio:function(){return this.m_ratio;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_groundAnchor1=new b2Vec2();this.m_groundAnchor2=new b2Vec2();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_J=new b2Jacobian();this.m_revolute1=null;this.m_prismatic1=null;this.m_revolute2=null;this.m_prismatic2=null;var coordinate1;var coordinate2;this.m_ground1=def.joint1.m_body1;this.m_body1=def.joint1.m_body2;if(def.joint1.m_type==b2Joint.e_revoluteJoint)\r
19944 {this.m_revolute1=def.joint1;this.m_groundAnchor1.SetV(this.m_revolute1.m_localAnchor1);this.m_localAnchor1.SetV(this.m_revolute1.m_localAnchor2);coordinate1=this.m_revolute1.GetJointAngle();}\r
19945 else\r
19946 {this.m_prismatic1=def.joint1;this.m_groundAnchor1.SetV(this.m_prismatic1.m_localAnchor1);this.m_localAnchor1.SetV(this.m_prismatic1.m_localAnchor2);coordinate1=this.m_prismatic1.GetJointTranslation();}\r
19947 this.m_ground2=def.joint2.m_body1;this.m_body2=def.joint2.m_body2;if(def.joint2.m_type==b2Joint.e_revoluteJoint)\r
19948 {this.m_revolute2=def.joint2;this.m_groundAnchor2.SetV(this.m_revolute2.m_localAnchor1);this.m_localAnchor2.SetV(this.m_revolute2.m_localAnchor2);coordinate2=this.m_revolute2.GetJointAngle();}\r
19949 else\r
19950 {this.m_prismatic2=def.joint2;this.m_groundAnchor2.SetV(this.m_prismatic2.m_localAnchor1);this.m_localAnchor2.SetV(this.m_prismatic2.m_localAnchor2);coordinate2=this.m_prismatic2.GetJointTranslation();}\r
19951 this.m_ratio=def.ratio;this.m_constant=coordinate1+this.m_ratio*coordinate2;this.m_impulse=0.0;},PrepareVelocitySolver:function(){var g1=this.m_ground1;var g2=this.m_ground2;var b1=this.m_body1;var b2=this.m_body2;var ugX;var ugY;var rX;var rY;var tMat;var tVec;var crug;var K=0.0;this.m_J.SetZero();if(this.m_revolute1)\r
19952 {this.m_J.angular1=-1.0;K+=b1.m_invI;}\r
19953 else\r
19954 {tMat=g1.m_R;tVec=this.m_prismatic1.m_localXAxis1;ugX=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;ugY=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b1.m_R;rX=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;rY=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;crug=rX*ugY-rY*ugX;this.m_J.linear1.Set(-ugX,-ugY);this.m_J.angular1=-crug;K+=b1.m_invMass+b1.m_invI*crug*crug;}\r
19955 if(this.m_revolute2)\r
19956 {this.m_J.angular2=-this.m_ratio;K+=this.m_ratio*this.m_ratio*b2.m_invI;}\r
19957 else\r
19958 {tMat=g2.m_R;tVec=this.m_prismatic2.m_localXAxis1;ugX=tMat.col1.x*tVec.x+tMat.col2.x*tVec.y;ugY=tMat.col1.y*tVec.x+tMat.col2.y*tVec.y;tMat=b2.m_R;rX=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;rY=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;crug=rX*ugY-rY*ugX;this.m_J.linear2.Set(-this.m_ratio*ugX,-this.m_ratio*ugY);this.m_J.angular2=-this.m_ratio*crug;K+=this.m_ratio*this.m_ratio*(b2.m_invMass+b2.m_invI*crug*crug);}\r
19959 this.m_mass=1.0/K;b1.m_linearVelocity.x+=b1.m_invMass*this.m_impulse*this.m_J.linear1.x;b1.m_linearVelocity.y+=b1.m_invMass*this.m_impulse*this.m_J.linear1.y;b1.m_angularVelocity+=b1.m_invI*this.m_impulse*this.m_J.angular1;b2.m_linearVelocity.x+=b2.m_invMass*this.m_impulse*this.m_J.linear2.x;b2.m_linearVelocity.y+=b2.m_invMass*this.m_impulse*this.m_J.linear2.y;b2.m_angularVelocity+=b2.m_invI*this.m_impulse*this.m_J.angular2;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var Cdot=this.m_J.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var impulse=-this.m_mass*Cdot;this.m_impulse+=impulse;b1.m_linearVelocity.x+=b1.m_invMass*impulse*this.m_J.linear1.x;b1.m_linearVelocity.y+=b1.m_invMass*impulse*this.m_J.linear1.y;b1.m_angularVelocity+=b1.m_invI*impulse*this.m_J.angular1;b2.m_linearVelocity.x+=b2.m_invMass*impulse*this.m_J.linear2.x;b2.m_linearVelocity.y+=b2.m_invMass*impulse*this.m_J.linear2.y;b2.m_angularVelocity+=b2.m_invI*impulse*this.m_J.angular2;},SolvePositionConstraints:function(){var linearError=0.0;var b1=this.m_body1;var b2=this.m_body2;var coordinate1;var coordinate2;if(this.m_revolute1)\r
19960 {coordinate1=this.m_revolute1.GetJointAngle();}\r
19961 else\r
19962 {coordinate1=this.m_prismatic1.GetJointTranslation();}\r
19963 if(this.m_revolute2)\r
19964 {coordinate2=this.m_revolute2.GetJointAngle();}\r
19965 else\r
19966 {coordinate2=this.m_prismatic2.GetJointTranslation();}\r
19967 var C=this.m_constant-(coordinate1+this.m_ratio*coordinate2);var impulse=-this.m_mass*C;b1.m_position.x+=b1.m_invMass*impulse*this.m_J.linear1.x;b1.m_position.y+=b1.m_invMass*impulse*this.m_J.linear1.y;b1.m_rotation+=b1.m_invI*impulse*this.m_J.angular1;b2.m_position.x+=b2.m_invMass*impulse*this.m_J.linear2.x;b2.m_position.y+=b2.m_invMass*impulse*this.m_J.linear2.y;b2.m_rotation+=b2.m_invI*impulse*this.m_J.angular2;b1.m_R.Set(b1.m_rotation);b2.m_R.Set(b2.m_rotation);return linearError<b2Settings.b2_linearSlop;},m_ground1:null,m_ground2:null,m_revolute1:null,m_prismatic1:null,m_revolute2:null,m_prismatic2:null,m_groundAnchor1:new b2Vec2(),m_groundAnchor2:new b2Vec2(),m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_J:new b2Jacobian(),m_constant:null,m_ratio:null,m_mass:null,m_impulse:null});\r
19968 var b2GearJointDef=Class.create();Object.extend(b2GearJointDef.prototype,b2JointDef.prototype);Object.extend(b2GearJointDef.prototype,{initialize:function()\r
19969 {this.type=b2Joint.e_gearJoint;this.joint1=null;this.joint2=null;this.ratio=1.0;},joint1:null,joint2:null,ratio:null});\r
19970 var b2MouseJoint=Class.create();Object.extend(b2MouseJoint.prototype,b2Joint.prototype);Object.extend(b2MouseJoint.prototype,{GetAnchor1:function(){return this.m_target;},GetAnchor2:function(){var tVec=b2Math.b2MulMV(this.m_body2.m_R,this.m_localAnchor);tVec.Add(this.m_body2.m_position);return tVec;},GetReactionForce:function(invTimeStep)\r
19971 {var F=new b2Vec2();F.SetV(this.m_impulse);F.Multiply(invTimeStep);return F;},GetReactionTorque:function(invTimeStep)\r
19972 {return 0.0;},SetTarget:function(target){this.m_body2.WakeUp();this.m_target=target;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.K=new b2Mat22();this.K1=new b2Mat22();this.K2=new b2Mat22();this.m_localAnchor=new b2Vec2();this.m_target=new b2Vec2();this.m_impulse=new b2Vec2();this.m_ptpMass=new b2Mat22();this.m_C=new b2Vec2();this.m_target.SetV(def.target);var tX=this.m_target.x-this.m_body2.m_position.x;var tY=this.m_target.y-this.m_body2.m_position.y;this.m_localAnchor.x=(tX*this.m_body2.m_R.col1.x+tY*this.m_body2.m_R.col1.y);this.m_localAnchor.y=(tX*this.m_body2.m_R.col2.x+tY*this.m_body2.m_R.col2.y);this.m_maxForce=def.maxForce;this.m_impulse.SetZero();var mass=this.m_body2.m_mass;var omega=2.0*b2Settings.b2_pi*def.frequencyHz;var d=2.0*mass*def.dampingRatio*omega;var k=mass*omega*omega;this.m_gamma=1.0/(d+def.timeStep*k);this.m_beta=def.timeStep*k/(d+def.timeStep*k);},K:new b2Mat22(),K1:new b2Mat22(),K2:new b2Mat22(),PrepareVelocitySolver:function(){var b=this.m_body2;var tMat;tMat=b.m_R;var rX=tMat.col1.x*this.m_localAnchor.x+tMat.col2.x*this.m_localAnchor.y;var rY=tMat.col1.y*this.m_localAnchor.x+tMat.col2.y*this.m_localAnchor.y;var invMass=b.m_invMass;var invI=b.m_invI;this.K1.col1.x=invMass;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass;this.K2.col1.x=invI*rY*rY;this.K2.col2.x=-invI*rX*rY;this.K2.col1.y=-invI*rX*rY;this.K2.col2.y=invI*rX*rX;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.col1.x+=this.m_gamma;this.K.col2.y+=this.m_gamma;this.K.Invert(this.m_ptpMass);this.m_C.x=b.m_position.x+rX-this.m_target.x;this.m_C.y=b.m_position.y+rY-this.m_target.y;b.m_angularVelocity*=0.98;var PX=this.m_impulse.x;var PY=this.m_impulse.y;b.m_linearVelocity.x+=invMass*PX;b.m_linearVelocity.y+=invMass*PY;b.m_angularVelocity+=invI*(rX*PY-rY*PX);},SolveVelocityConstraints:function(step){var body=this.m_body2;var tMat;tMat=body.m_R;var rX=tMat.col1.x*this.m_localAnchor.x+tMat.col2.x*this.m_localAnchor.y;var rY=tMat.col1.y*this.m_localAnchor.x+tMat.col2.y*this.m_localAnchor.y;var CdotX=body.m_linearVelocity.x+(-body.m_angularVelocity*rY);var CdotY=body.m_linearVelocity.y+(body.m_angularVelocity*rX);tMat=this.m_ptpMass;var tX=CdotX+(this.m_beta*step.inv_dt)*this.m_C.x+this.m_gamma*this.m_impulse.x;var tY=CdotY+(this.m_beta*step.inv_dt)*this.m_C.y+this.m_gamma*this.m_impulse.y;var impulseX=-(tMat.col1.x*tX+tMat.col2.x*tY);var impulseY=-(tMat.col1.y*tX+tMat.col2.y*tY);var oldImpulseX=this.m_impulse.x;var oldImpulseY=this.m_impulse.y;this.m_impulse.x+=impulseX;this.m_impulse.y+=impulseY;var length=this.m_impulse.Length();if(length>step.dt*this.m_maxForce)\r
19973 {this.m_impulse.Multiply(step.dt*this.m_maxForce/length);}\r
19974 impulseX=this.m_impulse.x-oldImpulseX;impulseY=this.m_impulse.y-oldImpulseY;body.m_linearVelocity.x+=body.m_invMass*impulseX;body.m_linearVelocity.y+=body.m_invMass*impulseY;body.m_angularVelocity+=body.m_invI*(rX*impulseY-rY*impulseX);},SolvePositionConstraints:function(){return true;},m_localAnchor:new b2Vec2(),m_target:new b2Vec2(),m_impulse:new b2Vec2(),m_ptpMass:new b2Mat22(),m_C:new b2Vec2(),m_maxForce:null,m_beta:null,m_gamma:null});\r
19975 var b2MouseJointDef=Class.create();Object.extend(b2MouseJointDef.prototype,b2JointDef.prototype);Object.extend(b2MouseJointDef.prototype,{initialize:function()\r
19976 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.target=new b2Vec2();this.type=b2Joint.e_mouseJoint;this.maxForce=0.0;this.frequencyHz=5.0;this.dampingRatio=0.7;this.timeStep=1.0/60.0;},target:new b2Vec2(),maxForce:null,frequencyHz:null,dampingRatio:null,timeStep:null});\r
19977 var b2PrismaticJoint=Class.create();Object.extend(b2PrismaticJoint.prototype,b2Joint.prototype);Object.extend(b2PrismaticJoint.prototype,{GetAnchor1:function(){var b1=this.m_body1;var tVec=new b2Vec2();tVec.SetV(this.m_localAnchor1);tVec.MulM(b1.m_R);tVec.Add(b1.m_position);return tVec;},GetAnchor2:function(){var b2=this.m_body2;var tVec=new b2Vec2();tVec.SetV(this.m_localAnchor2);tVec.MulM(b2.m_R);tVec.Add(b2.m_position);return tVec;},GetJointTranslation:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var translation=ax1X*dX+ax1Y*dY;return translation;},GetJointSpeed:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var v1=b1.m_linearVelocity;var v2=b2.m_linearVelocity;var w1=b1.m_angularVelocity;var w2=b2.m_angularVelocity;var speed=(dX*(-w1*ax1Y)+dY*(w1*ax1X))+(ax1X*(((v2.x+(-w2*r2Y))-v1.x)-(-w1*r1Y))+ax1Y*(((v2.y+(w2*r2X))-v1.y)-(w1*r1X)));return speed;},GetMotorForce:function(invTimeStep){return invTimeStep*this.m_motorImpulse;},SetMotorSpeed:function(speed)\r
19978 {this.m_motorSpeed=speed;},SetMotorForce:function(force)\r
19979 {this.m_maxMotorForce=force;},GetReactionForce:function(invTimeStep)\r
19980 {var tImp=invTimeStep*this.m_limitImpulse;var tMat;tMat=this.m_body1.m_R;var ax1X=tImp*(tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y);var ax1Y=tImp*(tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y);var ay1X=tImp*(tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y);var ay1Y=tImp*(tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y);return new b2Vec2(ax1X+ay1X,ax1Y+ay1Y);},GetReactionTorque:function(invTimeStep)\r
19981 {return invTimeStep*this.m_angularImpulse;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_localXAxis1=new b2Vec2();this.m_localYAxis1=new b2Vec2();this.m_linearJacobian=new b2Jacobian();this.m_motorJacobian=new b2Jacobian();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=(def.anchorPoint.x-this.m_body1.m_position.x);tY=(def.anchorPoint.y-this.m_body1.m_position.y);this.m_localAnchor1.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));tMat=this.m_body2.m_R;tX=(def.anchorPoint.x-this.m_body2.m_position.x);tY=(def.anchorPoint.y-this.m_body2.m_position.y);this.m_localAnchor2.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));tMat=this.m_body1.m_R;tX=def.axis.x;tY=def.axis.y;this.m_localXAxis1.Set((tX*tMat.col1.x+tY*tMat.col1.y),(tX*tMat.col2.x+tY*tMat.col2.y));this.m_localYAxis1.x=-this.m_localXAxis1.y;this.m_localYAxis1.y=this.m_localXAxis1.x;this.m_initialAngle=this.m_body2.m_rotation-this.m_body1.m_rotation;this.m_linearJacobian.SetZero();this.m_linearMass=0.0;this.m_linearImpulse=0.0;this.m_angularMass=0.0;this.m_angularImpulse=0.0;this.m_motorJacobian.SetZero();this.m_motorMass=0.0;this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;this.m_limitPositionImpulse=0.0;this.m_lowerTranslation=def.lowerTranslation;this.m_upperTranslation=def.upperTranslation;this.m_maxMotorForce=def.motorForce;this.m_motorSpeed=def.motorSpeed;this.m_enableLimit=def.enableLimit;this.m_enableMotor=def.enableMotor;},PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;tMat=b1.m_R;var ay1X=tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y;var ay1Y=tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y;var eX=b2.m_position.x+r2X-b1.m_position.x;var eY=b2.m_position.y+r2Y-b1.m_position.y;this.m_linearJacobian.linear1.x=-ay1X;this.m_linearJacobian.linear1.y=-ay1Y;this.m_linearJacobian.linear2.x=ay1X;this.m_linearJacobian.linear2.y=ay1Y;this.m_linearJacobian.angular1=-(eX*ay1Y-eY*ay1X);this.m_linearJacobian.angular2=r2X*ay1Y-r2Y*ay1X;this.m_linearMass=invMass1+invI1*this.m_linearJacobian.angular1*this.m_linearJacobian.angular1+\r
19982 invMass2+invI2*this.m_linearJacobian.angular2*this.m_linearJacobian.angular2;this.m_linearMass=1.0/this.m_linearMass;this.m_angularMass=1.0/(invI1+invI2);if(this.m_enableLimit||this.m_enableMotor)\r
19983 {tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;this.m_motorJacobian.linear1.x=-ax1X;this.m_motorJacobian.linear1.y=-ax1Y;this.m_motorJacobian.linear2.x=ax1X;this.m_motorJacobian.linear2.y=ax1Y;this.m_motorJacobian.angular1=-(eX*ax1Y-eY*ax1X);this.m_motorJacobian.angular2=r2X*ax1Y-r2Y*ax1X;this.m_motorMass=invMass1+invI1*this.m_motorJacobian.angular1*this.m_motorJacobian.angular1+\r
19984 invMass2+invI2*this.m_motorJacobian.angular2*this.m_motorJacobian.angular2;this.m_motorMass=1.0/this.m_motorMass;if(this.m_enableLimit)\r
19985 {var dX=eX-r1X;var dY=eY-r1Y;var jointTranslation=ax1X*dX+ax1Y*dY;if(b2Math.b2Abs(this.m_upperTranslation-this.m_lowerTranslation)<2.0*b2Settings.b2_linearSlop)\r
19986 {this.m_limitState=b2Joint.e_equalLimits;}\r
19987 else if(jointTranslation<=this.m_lowerTranslation)\r
19988 {if(this.m_limitState!=b2Joint.e_atLowerLimit)\r
19989 {this.m_limitImpulse=0.0;}\r
19990 this.m_limitState=b2Joint.e_atLowerLimit;}\r
19991 else if(jointTranslation>=this.m_upperTranslation)\r
19992 {if(this.m_limitState!=b2Joint.e_atUpperLimit)\r
19993 {this.m_limitImpulse=0.0;}\r
19994 this.m_limitState=b2Joint.e_atUpperLimit;}\r
19995 else\r
19996 {this.m_limitState=b2Joint.e_inactiveLimit;this.m_limitImpulse=0.0;}}}\r
19997 if(this.m_enableMotor==false)\r
19998 {this.m_motorImpulse=0.0;}\r
19999 if(this.m_enableLimit==false)\r
20000 {this.m_limitImpulse=0.0;}\r
20001 if(b2World.s_enableWarmStarting)\r
20002 {var P1X=this.m_linearImpulse*this.m_linearJacobian.linear1.x+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear1.x;var P1Y=this.m_linearImpulse*this.m_linearJacobian.linear1.y+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear1.y;var P2X=this.m_linearImpulse*this.m_linearJacobian.linear2.x+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear2.x;var P2Y=this.m_linearImpulse*this.m_linearJacobian.linear2.y+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.linear2.y;var L1=this.m_linearImpulse*this.m_linearJacobian.angular1-this.m_angularImpulse+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.angular1;var L2=this.m_linearImpulse*this.m_linearJacobian.angular2+this.m_angularImpulse+(this.m_motorImpulse+this.m_limitImpulse)*this.m_motorJacobian.angular2;b1.m_linearVelocity.x+=invMass1*P1X;b1.m_linearVelocity.y+=invMass1*P1Y;b1.m_angularVelocity+=invI1*L1;b2.m_linearVelocity.x+=invMass2*P2X;b2.m_linearVelocity.y+=invMass2*P2Y;b2.m_angularVelocity+=invI2*L2;}\r
20003 else\r
20004 {this.m_linearImpulse=0.0;this.m_angularImpulse=0.0;this.m_limitImpulse=0.0;this.m_motorImpulse=0.0;}\r
20005 this.m_limitPositionImpulse=0.0;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;var oldLimitImpulse;var linearCdot=this.m_linearJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var linearImpulse=-this.m_linearMass*linearCdot;this.m_linearImpulse+=linearImpulse;b1.m_linearVelocity.x+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.y;b1.m_angularVelocity+=invI1*linearImpulse*this.m_linearJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.y;b2.m_angularVelocity+=invI2*linearImpulse*this.m_linearJacobian.angular2;var angularCdot=b2.m_angularVelocity-b1.m_angularVelocity;var angularImpulse=-this.m_angularMass*angularCdot;this.m_angularImpulse+=angularImpulse;b1.m_angularVelocity-=invI1*angularImpulse;b2.m_angularVelocity+=invI2*angularImpulse;if(this.m_enableMotor&&this.m_limitState!=b2Joint.e_equalLimits)\r
20006 {var motorCdot=this.m_motorJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity)-this.m_motorSpeed;var motorImpulse=-this.m_motorMass*motorCdot;var oldMotorImpulse=this.m_motorImpulse;this.m_motorImpulse=b2Math.b2Clamp(this.m_motorImpulse+motorImpulse,-step.dt*this.m_maxMotorForce,step.dt*this.m_maxMotorForce);motorImpulse=this.m_motorImpulse-oldMotorImpulse;b1.m_linearVelocity.x+=(invMass1*motorImpulse)*this.m_motorJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*motorImpulse)*this.m_motorJacobian.linear1.y;b1.m_angularVelocity+=invI1*motorImpulse*this.m_motorJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*motorImpulse)*this.m_motorJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*motorImpulse)*this.m_motorJacobian.linear2.y;b2.m_angularVelocity+=invI2*motorImpulse*this.m_motorJacobian.angular2;}\r
20007 if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)\r
20008 {var limitCdot=this.m_motorJacobian.Compute(b1.m_linearVelocity,b1.m_angularVelocity,b2.m_linearVelocity,b2.m_angularVelocity);var limitImpulse=-this.m_motorMass*limitCdot;if(this.m_limitState==b2Joint.e_equalLimits)\r
20009 {this.m_limitImpulse+=limitImpulse;}\r
20010 else if(this.m_limitState==b2Joint.e_atLowerLimit)\r
20011 {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Max(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}\r
20012 else if(this.m_limitState==b2Joint.e_atUpperLimit)\r
20013 {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Min(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}\r
20014 b1.m_linearVelocity.x+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.x;b1.m_linearVelocity.y+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.y;b1.m_angularVelocity+=invI1*limitImpulse*this.m_motorJacobian.angular1;b2.m_linearVelocity.x+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.x;b2.m_linearVelocity.y+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.y;b2.m_angularVelocity+=invI2*limitImpulse*this.m_motorJacobian.angular2;}},SolvePositionConstraints:function(){var limitC;var oldLimitImpulse;var b1=this.m_body1;var b2=this.m_body2;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var dX=p2X-p1X;var dY=p2Y-p1Y;tMat=b1.m_R;var ay1X=tMat.col1.x*this.m_localYAxis1.x+tMat.col2.x*this.m_localYAxis1.y;var ay1Y=tMat.col1.y*this.m_localYAxis1.x+tMat.col2.y*this.m_localYAxis1.y;var linearC=ay1X*dX+ay1Y*dY;linearC=b2Math.b2Clamp(linearC,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);var linearImpulse=-this.m_linearMass*linearC;b1.m_position.x+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.x;b1.m_position.y+=(invMass1*linearImpulse)*this.m_linearJacobian.linear1.y;b1.m_rotation+=invI1*linearImpulse*this.m_linearJacobian.angular1;b2.m_position.x+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.x;b2.m_position.y+=(invMass2*linearImpulse)*this.m_linearJacobian.linear2.y;b2.m_rotation+=invI2*linearImpulse*this.m_linearJacobian.angular2;var positionError=b2Math.b2Abs(linearC);var angularC=b2.m_rotation-b1.m_rotation-this.m_initialAngle;angularC=b2Math.b2Clamp(angularC,-b2Settings.b2_maxAngularCorrection,b2Settings.b2_maxAngularCorrection);var angularImpulse=-this.m_angularMass*angularC;b1.m_rotation-=b1.m_invI*angularImpulse;b1.m_R.Set(b1.m_rotation);b2.m_rotation+=b2.m_invI*angularImpulse;b2.m_R.Set(b2.m_rotation);var angularError=b2Math.b2Abs(angularC);if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)\r
20015 {tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;dX=p2X-p1X;dY=p2Y-p1Y;tMat=b1.m_R;var ax1X=tMat.col1.x*this.m_localXAxis1.x+tMat.col2.x*this.m_localXAxis1.y;var ax1Y=tMat.col1.y*this.m_localXAxis1.x+tMat.col2.y*this.m_localXAxis1.y;var translation=(ax1X*dX+ax1Y*dY);var limitImpulse=0.0;if(this.m_limitState==b2Joint.e_equalLimits)\r
20016 {limitC=b2Math.b2Clamp(translation,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);limitImpulse=-this.m_motorMass*limitC;positionError=b2Math.b2Max(positionError,b2Math.b2Abs(angularC));}\r
20017 else if(this.m_limitState==b2Joint.e_atLowerLimit)\r
20018 {limitC=translation-this.m_lowerTranslation;positionError=b2Math.b2Max(positionError,-limitC);limitC=b2Math.b2Clamp(limitC+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Max(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}\r
20019 else if(this.m_limitState==b2Joint.e_atUpperLimit)\r
20020 {limitC=translation-this.m_upperTranslation;positionError=b2Math.b2Max(positionError,limitC);limitC=b2Math.b2Clamp(limitC-b2Settings.b2_linearSlop,0.0,b2Settings.b2_maxLinearCorrection);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Min(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}\r
20021 b1.m_position.x+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.x;b1.m_position.y+=(invMass1*limitImpulse)*this.m_motorJacobian.linear1.y;b1.m_rotation+=invI1*limitImpulse*this.m_motorJacobian.angular1;b1.m_R.Set(b1.m_rotation);b2.m_position.x+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.x;b2.m_position.y+=(invMass2*limitImpulse)*this.m_motorJacobian.linear2.y;b2.m_rotation+=invI2*limitImpulse*this.m_motorJacobian.angular2;b2.m_R.Set(b2.m_rotation);}\r
20022 return positionError<=b2Settings.b2_linearSlop&&angularError<=b2Settings.b2_angularSlop;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_localXAxis1:new b2Vec2(),m_localYAxis1:new b2Vec2(),m_initialAngle:null,m_linearJacobian:new b2Jacobian(),m_linearMass:null,m_linearImpulse:null,m_angularMass:null,m_angularImpulse:null,m_motorJacobian:new b2Jacobian(),m_motorMass:null,m_motorImpulse:null,m_limitImpulse:null,m_limitPositionImpulse:null,m_lowerTranslation:null,m_upperTranslation:null,m_maxMotorForce:null,m_motorSpeed:null,m_enableLimit:null,m_enableMotor:null,m_limitState:0});\r
20023 var b2PrismaticJointDef=Class.create();Object.extend(b2PrismaticJointDef.prototype,b2JointDef.prototype);Object.extend(b2PrismaticJointDef.prototype,{initialize:function()\r
20024 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.type=b2Joint.e_prismaticJoint;this.anchorPoint=new b2Vec2(0.0,0.0);this.axis=new b2Vec2(0.0,0.0);this.lowerTranslation=0.0;this.upperTranslation=0.0;this.motorForce=0.0;this.motorSpeed=0.0;this.enableLimit=false;this.enableMotor=false;},anchorPoint:null,axis:null,lowerTranslation:null,upperTranslation:null,motorForce:null,motorSpeed:null,enableLimit:null,enableMotor:null});\r
20025 var b2PulleyJoint=Class.create();Object.extend(b2PulleyJoint.prototype,b2Joint.prototype);Object.extend(b2PulleyJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetGroundPoint1:function(){return new b2Vec2(this.m_ground.m_position.x+this.m_groundAnchor1.x,this.m_ground.m_position.y+this.m_groundAnchor1.y);},GetGroundPoint2:function(){return new b2Vec2(this.m_ground.m_position.x+this.m_groundAnchor2.x,this.m_ground.m_position.y+this.m_groundAnchor2.y);},GetReactionForce:function(invTimeStep){return new b2Vec2();},GetReactionTorque:function(invTimeStep){return 0.0;},GetLength1:function(){var tMat;tMat=this.m_body1.m_R;var pX=this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y);var pY=this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y);var dX=pX-(this.m_ground.m_position.x+this.m_groundAnchor1.x);var dY=pY-(this.m_ground.m_position.y+this.m_groundAnchor1.y);return Math.sqrt(dX*dX+dY*dY);},GetLength2:function(){var tMat;tMat=this.m_body2.m_R;var pX=this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y);var pY=this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y);var dX=pX-(this.m_ground.m_position.x+this.m_groundAnchor2.x);var dY=pY-(this.m_ground.m_position.y+this.m_groundAnchor2.y);return Math.sqrt(dX*dX+dY*dY);},GetRatio:function(){return this.m_ratio;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.m_groundAnchor1=new b2Vec2();this.m_groundAnchor2=new b2Vec2();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_u1=new b2Vec2();this.m_u2=new b2Vec2();var tMat;var tX;var tY;this.m_ground=this.m_body1.m_world.m_groundBody;this.m_groundAnchor1.x=def.groundPoint1.x-this.m_ground.m_position.x;this.m_groundAnchor1.y=def.groundPoint1.y-this.m_ground.m_position.y;this.m_groundAnchor2.x=def.groundPoint2.x-this.m_ground.m_position.x;this.m_groundAnchor2.y=def.groundPoint2.y-this.m_ground.m_position.y;tMat=this.m_body1.m_R;tX=def.anchorPoint1.x-this.m_body1.m_position.x;tY=def.anchorPoint1.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint2.x-this.m_body2.m_position.x;tY=def.anchorPoint2.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.y;this.m_ratio=def.ratio;tX=def.groundPoint1.x-def.anchorPoint1.x;tY=def.groundPoint1.y-def.anchorPoint1.y;var d1Len=Math.sqrt(tX*tX+tY*tY);tX=def.groundPoint2.x-def.anchorPoint2.x;tY=def.groundPoint2.y-def.anchorPoint2.y;var d2Len=Math.sqrt(tX*tX+tY*tY);var length1=b2Math.b2Max(0.5*b2PulleyJoint.b2_minPulleyLength,d1Len);var length2=b2Math.b2Max(0.5*b2PulleyJoint.b2_minPulleyLength,d2Len);this.m_constant=length1+this.m_ratio*length2;this.m_maxLength1=b2Math.b2Clamp(def.maxLength1,length1,this.m_constant-this.m_ratio*b2PulleyJoint.b2_minPulleyLength);this.m_maxLength2=b2Math.b2Clamp(def.maxLength2,length2,(this.m_constant-b2PulleyJoint.b2_minPulleyLength)/this.m_ratio);this.m_pulleyImpulse=0.0;this.m_limitImpulse1=0.0;this.m_limitImpulse2=0.0;},PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var s1X=this.m_ground.m_position.x+this.m_groundAnchor1.x;var s1Y=this.m_ground.m_position.y+this.m_groundAnchor1.y;var s2X=this.m_ground.m_position.x+this.m_groundAnchor2.x;var s2Y=this.m_ground.m_position.y+this.m_groundAnchor2.y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);this.m_u2.Set(p2X-s2X,p2Y-s2Y);var length1=this.m_u1.Length();var length2=this.m_u2.Length();if(length1>b2Settings.b2_linearSlop)\r
20026 {this.m_u1.Multiply(1.0/length1);}\r
20027 else\r
20028 {this.m_u1.SetZero();}\r
20029 if(length2>b2Settings.b2_linearSlop)\r
20030 {this.m_u2.Multiply(1.0/length2);}\r
20031 else\r
20032 {this.m_u2.SetZero();}\r
20033 if(length1<this.m_maxLength1)\r
20034 {this.m_limitState1=b2Joint.e_inactiveLimit;this.m_limitImpulse1=0.0;}\r
20035 else\r
20036 {this.m_limitState1=b2Joint.e_atUpperLimit;this.m_limitPositionImpulse1=0.0;}\r
20037 if(length2<this.m_maxLength2)\r
20038 {this.m_limitState2=b2Joint.e_inactiveLimit;this.m_limitImpulse2=0.0;}\r
20039 else\r
20040 {this.m_limitState2=b2Joint.e_atUpperLimit;this.m_limitPositionImpulse2=0.0;}\r
20041 var cr1u1=r1X*this.m_u1.y-r1Y*this.m_u1.x;var cr2u2=r2X*this.m_u2.y-r2Y*this.m_u2.x;this.m_limitMass1=b1.m_invMass+b1.m_invI*cr1u1*cr1u1;this.m_limitMass2=b2.m_invMass+b2.m_invI*cr2u2*cr2u2;this.m_pulleyMass=this.m_limitMass1+this.m_ratio*this.m_ratio*this.m_limitMass2;this.m_limitMass1=1.0/this.m_limitMass1;this.m_limitMass2=1.0/this.m_limitMass2;this.m_pulleyMass=1.0/this.m_pulleyMass;var P1X=(-this.m_pulleyImpulse-this.m_limitImpulse1)*this.m_u1.x;var P1Y=(-this.m_pulleyImpulse-this.m_limitImpulse1)*this.m_u1.y;var P2X=(-this.m_ratio*this.m_pulleyImpulse-this.m_limitImpulse2)*this.m_u2.x;var P2Y=(-this.m_ratio*this.m_pulleyImpulse-this.m_limitImpulse2)*this.m_u2.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var v1X;var v1Y;var v2X;var v2Y;var P1X;var P1Y;var P2X;var P2Y;var Cdot;var impulse;var oldLimitImpulse;v1X=b1.m_linearVelocity.x+(-b1.m_angularVelocity*r1Y);v1Y=b1.m_linearVelocity.y+(b1.m_angularVelocity*r1X);v2X=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y);v2Y=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X);Cdot=-(this.m_u1.x*v1X+this.m_u1.y*v1Y)-this.m_ratio*(this.m_u2.x*v2X+this.m_u2.y*v2Y);impulse=-this.m_pulleyMass*Cdot;this.m_pulleyImpulse+=impulse;P1X=-impulse*this.m_u1.x;P1Y=-impulse*this.m_u1.y;P2X=-this.m_ratio*impulse*this.m_u2.x;P2Y=-this.m_ratio*impulse*this.m_u2.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);if(this.m_limitState1==b2Joint.e_atUpperLimit)\r
20042 {v1X=b1.m_linearVelocity.x+(-b1.m_angularVelocity*r1Y);v1Y=b1.m_linearVelocity.y+(b1.m_angularVelocity*r1X);Cdot=-(this.m_u1.x*v1X+this.m_u1.y*v1Y);impulse=-this.m_limitMass1*Cdot;oldLimitImpulse=this.m_limitImpulse1;this.m_limitImpulse1=b2Math.b2Max(0.0,this.m_limitImpulse1+impulse);impulse=this.m_limitImpulse1-oldLimitImpulse;P1X=-impulse*this.m_u1.x;P1Y=-impulse*this.m_u1.y;b1.m_linearVelocity.x+=b1.m_invMass*P1X;b1.m_linearVelocity.y+=b1.m_invMass*P1Y;b1.m_angularVelocity+=b1.m_invI*(r1X*P1Y-r1Y*P1X);}\r
20043 if(this.m_limitState2==b2Joint.e_atUpperLimit)\r
20044 {v2X=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y);v2Y=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X);Cdot=-(this.m_u2.x*v2X+this.m_u2.y*v2Y);impulse=-this.m_limitMass2*Cdot;oldLimitImpulse=this.m_limitImpulse2;this.m_limitImpulse2=b2Math.b2Max(0.0,this.m_limitImpulse2+impulse);impulse=this.m_limitImpulse2-oldLimitImpulse;P2X=-impulse*this.m_u2.x;P2Y=-impulse*this.m_u2.y;b2.m_linearVelocity.x+=b2.m_invMass*P2X;b2.m_linearVelocity.y+=b2.m_invMass*P2Y;b2.m_angularVelocity+=b2.m_invI*(r2X*P2Y-r2Y*P2X);}},SolvePositionConstraints:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;var s1X=this.m_ground.m_position.x+this.m_groundAnchor1.x;var s1Y=this.m_ground.m_position.y+this.m_groundAnchor1.y;var s2X=this.m_ground.m_position.x+this.m_groundAnchor2.x;var s2Y=this.m_ground.m_position.y+this.m_groundAnchor2.y;var r1X;var r1Y;var r2X;var r2Y;var p1X;var p1Y;var p2X;var p2Y;var length1;var length2;var C;var impulse;var oldLimitPositionImpulse;var linearError=0.0;{tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);this.m_u2.Set(p2X-s2X,p2Y-s2Y);length1=this.m_u1.Length();length2=this.m_u2.Length();if(length1>b2Settings.b2_linearSlop)\r
20045 {this.m_u1.Multiply(1.0/length1);}\r
20046 else\r
20047 {this.m_u1.SetZero();}\r
20048 if(length2>b2Settings.b2_linearSlop)\r
20049 {this.m_u2.Multiply(1.0/length2);}\r
20050 else\r
20051 {this.m_u2.SetZero();}\r
20052 C=this.m_constant-length1-this.m_ratio*length2;linearError=b2Math.b2Max(linearError,Math.abs(C));C=b2Math.b2Clamp(C,-b2Settings.b2_maxLinearCorrection,b2Settings.b2_maxLinearCorrection);impulse=-this.m_pulleyMass*C;p1X=-impulse*this.m_u1.x;p1Y=-impulse*this.m_u1.y;p2X=-this.m_ratio*impulse*this.m_u2.x;p2Y=-this.m_ratio*impulse*this.m_u2.y;b1.m_position.x+=b1.m_invMass*p1X;b1.m_position.y+=b1.m_invMass*p1Y;b1.m_rotation+=b1.m_invI*(r1X*p1Y-r1Y*p1X);b2.m_position.x+=b2.m_invMass*p2X;b2.m_position.y+=b2.m_invMass*p2Y;b2.m_rotation+=b2.m_invI*(r2X*p2Y-r2Y*p2X);b1.m_R.Set(b1.m_rotation);b2.m_R.Set(b2.m_rotation);}\r
20053 if(this.m_limitState1==b2Joint.e_atUpperLimit)\r
20054 {tMat=b1.m_R;r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;p1X=b1.m_position.x+r1X;p1Y=b1.m_position.y+r1Y;this.m_u1.Set(p1X-s1X,p1Y-s1Y);length1=this.m_u1.Length();if(length1>b2Settings.b2_linearSlop)\r
20055 {this.m_u1.x*=1.0/length1;this.m_u1.y*=1.0/length1;}\r
20056 else\r
20057 {this.m_u1.SetZero();}\r
20058 C=this.m_maxLength1-length1;linearError=b2Math.b2Max(linearError,-C);C=b2Math.b2Clamp(C+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);impulse=-this.m_limitMass1*C;oldLimitPositionImpulse=this.m_limitPositionImpulse1;this.m_limitPositionImpulse1=b2Math.b2Max(0.0,this.m_limitPositionImpulse1+impulse);impulse=this.m_limitPositionImpulse1-oldLimitPositionImpulse;p1X=-impulse*this.m_u1.x;p1Y=-impulse*this.m_u1.y;b1.m_position.x+=b1.m_invMass*p1X;b1.m_position.y+=b1.m_invMass*p1Y;b1.m_rotation+=b1.m_invI*(r1X*p1Y-r1Y*p1X);b1.m_R.Set(b1.m_rotation);}\r
20059 if(this.m_limitState2==b2Joint.e_atUpperLimit)\r
20060 {tMat=b2.m_R;r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;p2X=b2.m_position.x+r2X;p2Y=b2.m_position.y+r2Y;this.m_u2.Set(p2X-s2X,p2Y-s2Y);length2=this.m_u2.Length();if(length2>b2Settings.b2_linearSlop)\r
20061 {this.m_u2.x*=1.0/length2;this.m_u2.y*=1.0/length2;}\r
20062 else\r
20063 {this.m_u2.SetZero();}\r
20064 C=this.m_maxLength2-length2;linearError=b2Math.b2Max(linearError,-C);C=b2Math.b2Clamp(C+b2Settings.b2_linearSlop,-b2Settings.b2_maxLinearCorrection,0.0);impulse=-this.m_limitMass2*C;oldLimitPositionImpulse=this.m_limitPositionImpulse2;this.m_limitPositionImpulse2=b2Math.b2Max(0.0,this.m_limitPositionImpulse2+impulse);impulse=this.m_limitPositionImpulse2-oldLimitPositionImpulse;p2X=-impulse*this.m_u2.x;p2Y=-impulse*this.m_u2.y;b2.m_position.x+=b2.m_invMass*p2X;b2.m_position.y+=b2.m_invMass*p2Y;b2.m_rotation+=b2.m_invI*(r2X*p2Y-r2Y*p2X);b2.m_R.Set(b2.m_rotation);}\r
20065 return linearError<b2Settings.b2_linearSlop;},m_ground:null,m_groundAnchor1:new b2Vec2(),m_groundAnchor2:new b2Vec2(),m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_u1:new b2Vec2(),m_u2:new b2Vec2(),m_constant:null,m_ratio:null,m_maxLength1:null,m_maxLength2:null,m_pulleyMass:null,m_limitMass1:null,m_limitMass2:null,m_pulleyImpulse:null,m_limitImpulse1:null,m_limitImpulse2:null,m_limitPositionImpulse1:null,m_limitPositionImpulse2:null,m_limitState1:0,m_limitState2:0});b2PulleyJoint.b2_minPulleyLength=b2Settings.b2_lengthUnitsPerMeter;\r
20066 var b2PulleyJointDef=Class.create();Object.extend(b2PulleyJointDef.prototype,b2JointDef.prototype);Object.extend(b2PulleyJointDef.prototype,{initialize:function()\r
20067 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.groundPoint1=new b2Vec2();this.groundPoint2=new b2Vec2();this.anchorPoint1=new b2Vec2();this.anchorPoint2=new b2Vec2();this.type=b2Joint.e_pulleyJoint;this.groundPoint1.Set(-1.0,1.0);this.groundPoint2.Set(1.0,1.0);this.anchorPoint1.Set(-1.0,0.0);this.anchorPoint2.Set(1.0,0.0);this.maxLength1=0.5*b2PulleyJoint.b2_minPulleyLength;this.maxLength2=0.5*b2PulleyJoint.b2_minPulleyLength;this.ratio=1.0;this.collideConnected=true;},groundPoint1:new b2Vec2(),groundPoint2:new b2Vec2(),anchorPoint1:new b2Vec2(),anchorPoint2:new b2Vec2(),maxLength1:null,maxLength2:null,ratio:null});\r
20068 var b2RevoluteJoint=Class.create();Object.extend(b2RevoluteJoint.prototype,b2Joint.prototype);Object.extend(b2RevoluteJoint.prototype,{GetAnchor1:function(){var tMat=this.m_body1.m_R;return new b2Vec2(this.m_body1.m_position.x+(tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y),this.m_body1.m_position.y+(tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y));},GetAnchor2:function(){var tMat=this.m_body2.m_R;return new b2Vec2(this.m_body2.m_position.x+(tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y),this.m_body2.m_position.y+(tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y));},GetJointAngle:function(){return this.m_body2.m_rotation-this.m_body1.m_rotation;},GetJointSpeed:function(){return this.m_body2.m_angularVelocity-this.m_body1.m_angularVelocity;},GetMotorTorque:function(invTimeStep){return invTimeStep*this.m_motorImpulse;},SetMotorSpeed:function(speed)\r
20069 {this.m_motorSpeed=speed;},SetMotorTorque:function(torque)\r
20070 {this.m_maxMotorTorque=torque;},GetReactionForce:function(invTimeStep)\r
20071 {var tVec=this.m_ptpImpulse.Copy();tVec.Multiply(invTimeStep);return tVec;},GetReactionTorque:function(invTimeStep)\r
20072 {return invTimeStep*this.m_limitImpulse;},initialize:function(def){this.m_node1=new b2JointNode();this.m_node2=new b2JointNode();this.m_type=def.type;this.m_prev=null;this.m_next=null;this.m_body1=def.body1;this.m_body2=def.body2;this.m_collideConnected=def.collideConnected;this.m_islandFlag=false;this.m_userData=def.userData;this.K=new b2Mat22();this.K1=new b2Mat22();this.K2=new b2Mat22();this.K3=new b2Mat22();this.m_localAnchor1=new b2Vec2();this.m_localAnchor2=new b2Vec2();this.m_ptpImpulse=new b2Vec2();this.m_ptpMass=new b2Mat22();var tMat;var tX;var tY;tMat=this.m_body1.m_R;tX=def.anchorPoint.x-this.m_body1.m_position.x;tY=def.anchorPoint.y-this.m_body1.m_position.y;this.m_localAnchor1.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor1.y=tX*tMat.col2.x+tY*tMat.col2.y;tMat=this.m_body2.m_R;tX=def.anchorPoint.x-this.m_body2.m_position.x;tY=def.anchorPoint.y-this.m_body2.m_position.y;this.m_localAnchor2.x=tX*tMat.col1.x+tY*tMat.col1.y;this.m_localAnchor2.y=tX*tMat.col2.x+tY*tMat.col2.y;this.m_intialAngle=this.m_body2.m_rotation-this.m_body1.m_rotation;this.m_ptpImpulse.Set(0.0,0.0);this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;this.m_limitPositionImpulse=0.0;this.m_lowerAngle=def.lowerAngle;this.m_upperAngle=def.upperAngle;this.m_maxMotorTorque=def.motorTorque;this.m_motorSpeed=def.motorSpeed;this.m_enableLimit=def.enableLimit;this.m_enableMotor=def.enableMotor;},K:new b2Mat22(),K1:new b2Mat22(),K2:new b2Mat22(),K3:new b2Mat22(),PrepareVelocitySolver:function(){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;this.K1.col1.x=invMass1+invMass2;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass1+invMass2;this.K2.col1.x=invI1*r1Y*r1Y;this.K2.col2.x=-invI1*r1X*r1Y;this.K2.col1.y=-invI1*r1X*r1Y;this.K2.col2.y=invI1*r1X*r1X;this.K3.col1.x=invI2*r2Y*r2Y;this.K3.col2.x=-invI2*r2X*r2Y;this.K3.col1.y=-invI2*r2X*r2Y;this.K3.col2.y=invI2*r2X*r2X;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.AddM(this.K3);this.K.Invert(this.m_ptpMass);this.m_motorMass=1.0/(invI1+invI2);if(this.m_enableMotor==false)\r
20073 {this.m_motorImpulse=0.0;}\r
20074 if(this.m_enableLimit)\r
20075 {var jointAngle=b2.m_rotation-b1.m_rotation-this.m_intialAngle;if(b2Math.b2Abs(this.m_upperAngle-this.m_lowerAngle)<2.0*b2Settings.b2_angularSlop)\r
20076 {this.m_limitState=b2Joint.e_equalLimits;}\r
20077 else if(jointAngle<=this.m_lowerAngle)\r
20078 {if(this.m_limitState!=b2Joint.e_atLowerLimit)\r
20079 {this.m_limitImpulse=0.0;}\r
20080 this.m_limitState=b2Joint.e_atLowerLimit;}\r
20081 else if(jointAngle>=this.m_upperAngle)\r
20082 {if(this.m_limitState!=b2Joint.e_atUpperLimit)\r
20083 {this.m_limitImpulse=0.0;}\r
20084 this.m_limitState=b2Joint.e_atUpperLimit;}\r
20085 else\r
20086 {this.m_limitState=b2Joint.e_inactiveLimit;this.m_limitImpulse=0.0;}}\r
20087 else\r
20088 {this.m_limitImpulse=0.0;}\r
20089 if(b2World.s_enableWarmStarting)\r
20090 {b1.m_linearVelocity.x-=invMass1*this.m_ptpImpulse.x;b1.m_linearVelocity.y-=invMass1*this.m_ptpImpulse.y;b1.m_angularVelocity-=invI1*((r1X*this.m_ptpImpulse.y-r1Y*this.m_ptpImpulse.x)+this.m_motorImpulse+this.m_limitImpulse);b2.m_linearVelocity.x+=invMass2*this.m_ptpImpulse.x;b2.m_linearVelocity.y+=invMass2*this.m_ptpImpulse.y;b2.m_angularVelocity+=invI2*((r2X*this.m_ptpImpulse.y-r2Y*this.m_ptpImpulse.x)+this.m_motorImpulse+this.m_limitImpulse);}\r
20091 else{this.m_ptpImpulse.SetZero();this.m_motorImpulse=0.0;this.m_limitImpulse=0.0;}\r
20092 this.m_limitPositionImpulse=0.0;},SolveVelocityConstraints:function(step){var b1=this.m_body1;var b2=this.m_body2;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var oldLimitImpulse;var ptpCdotX=b2.m_linearVelocity.x+(-b2.m_angularVelocity*r2Y)-b1.m_linearVelocity.x-(-b1.m_angularVelocity*r1Y);var ptpCdotY=b2.m_linearVelocity.y+(b2.m_angularVelocity*r2X)-b1.m_linearVelocity.y-(b1.m_angularVelocity*r1X);var ptpImpulseX=-(this.m_ptpMass.col1.x*ptpCdotX+this.m_ptpMass.col2.x*ptpCdotY);var ptpImpulseY=-(this.m_ptpMass.col1.y*ptpCdotX+this.m_ptpMass.col2.y*ptpCdotY);this.m_ptpImpulse.x+=ptpImpulseX;this.m_ptpImpulse.y+=ptpImpulseY;b1.m_linearVelocity.x-=b1.m_invMass*ptpImpulseX;b1.m_linearVelocity.y-=b1.m_invMass*ptpImpulseY;b1.m_angularVelocity-=b1.m_invI*(r1X*ptpImpulseY-r1Y*ptpImpulseX);b2.m_linearVelocity.x+=b2.m_invMass*ptpImpulseX;b2.m_linearVelocity.y+=b2.m_invMass*ptpImpulseY;b2.m_angularVelocity+=b2.m_invI*(r2X*ptpImpulseY-r2Y*ptpImpulseX);if(this.m_enableMotor&&this.m_limitState!=b2Joint.e_equalLimits)\r
20093 {var motorCdot=b2.m_angularVelocity-b1.m_angularVelocity-this.m_motorSpeed;var motorImpulse=-this.m_motorMass*motorCdot;var oldMotorImpulse=this.m_motorImpulse;this.m_motorImpulse=b2Math.b2Clamp(this.m_motorImpulse+motorImpulse,-step.dt*this.m_maxMotorTorque,step.dt*this.m_maxMotorTorque);motorImpulse=this.m_motorImpulse-oldMotorImpulse;b1.m_angularVelocity-=b1.m_invI*motorImpulse;b2.m_angularVelocity+=b2.m_invI*motorImpulse;}\r
20094 if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)\r
20095 {var limitCdot=b2.m_angularVelocity-b1.m_angularVelocity;var limitImpulse=-this.m_motorMass*limitCdot;if(this.m_limitState==b2Joint.e_equalLimits)\r
20096 {this.m_limitImpulse+=limitImpulse;}\r
20097 else if(this.m_limitState==b2Joint.e_atLowerLimit)\r
20098 {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Max(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}\r
20099 else if(this.m_limitState==b2Joint.e_atUpperLimit)\r
20100 {oldLimitImpulse=this.m_limitImpulse;this.m_limitImpulse=b2Math.b2Min(this.m_limitImpulse+limitImpulse,0.0);limitImpulse=this.m_limitImpulse-oldLimitImpulse;}\r
20101 b1.m_angularVelocity-=b1.m_invI*limitImpulse;b2.m_angularVelocity+=b2.m_invI*limitImpulse;}},SolvePositionConstraints:function(){var oldLimitImpulse;var limitC;var b1=this.m_body1;var b2=this.m_body2;var positionError=0.0;var tMat;tMat=b1.m_R;var r1X=tMat.col1.x*this.m_localAnchor1.x+tMat.col2.x*this.m_localAnchor1.y;var r1Y=tMat.col1.y*this.m_localAnchor1.x+tMat.col2.y*this.m_localAnchor1.y;tMat=b2.m_R;var r2X=tMat.col1.x*this.m_localAnchor2.x+tMat.col2.x*this.m_localAnchor2.y;var r2Y=tMat.col1.y*this.m_localAnchor2.x+tMat.col2.y*this.m_localAnchor2.y;var p1X=b1.m_position.x+r1X;var p1Y=b1.m_position.y+r1Y;var p2X=b2.m_position.x+r2X;var p2Y=b2.m_position.y+r2Y;var ptpCX=p2X-p1X;var ptpCY=p2Y-p1Y;positionError=Math.sqrt(ptpCX*ptpCX+ptpCY*ptpCY);var invMass1=b1.m_invMass;var invMass2=b2.m_invMass;var invI1=b1.m_invI;var invI2=b2.m_invI;this.K1.col1.x=invMass1+invMass2;this.K1.col2.x=0.0;this.K1.col1.y=0.0;this.K1.col2.y=invMass1+invMass2;this.K2.col1.x=invI1*r1Y*r1Y;this.K2.col2.x=-invI1*r1X*r1Y;this.K2.col1.y=-invI1*r1X*r1Y;this.K2.col2.y=invI1*r1X*r1X;this.K3.col1.x=invI2*r2Y*r2Y;this.K3.col2.x=-invI2*r2X*r2Y;this.K3.col1.y=-invI2*r2X*r2Y;this.K3.col2.y=invI2*r2X*r2X;this.K.SetM(this.K1);this.K.AddM(this.K2);this.K.AddM(this.K3);this.K.Solve(b2RevoluteJoint.tImpulse,-ptpCX,-ptpCY);var impulseX=b2RevoluteJoint.tImpulse.x;var impulseY=b2RevoluteJoint.tImpulse.y;b1.m_position.x-=b1.m_invMass*impulseX;b1.m_position.y-=b1.m_invMass*impulseY;b1.m_rotation-=b1.m_invI*(r1X*impulseY-r1Y*impulseX);b1.m_R.Set(b1.m_rotation);b2.m_position.x+=b2.m_invMass*impulseX;b2.m_position.y+=b2.m_invMass*impulseY;b2.m_rotation+=b2.m_invI*(r2X*impulseY-r2Y*impulseX);b2.m_R.Set(b2.m_rotation);var angularError=0.0;if(this.m_enableLimit&&this.m_limitState!=b2Joint.e_inactiveLimit)\r
20102 {var angle=b2.m_rotation-b1.m_rotation-this.m_intialAngle;var limitImpulse=0.0;if(this.m_limitState==b2Joint.e_equalLimits)\r
20103 {limitC=b2Math.b2Clamp(angle,-b2Settings.b2_maxAngularCorrection,b2Settings.b2_maxAngularCorrection);limitImpulse=-this.m_motorMass*limitC;angularError=b2Math.b2Abs(limitC);}\r
20104 else if(this.m_limitState==b2Joint.e_atLowerLimit)\r
20105 {limitC=angle-this.m_lowerAngle;angularError=b2Math.b2Max(0.0,-limitC);limitC=b2Math.b2Clamp(limitC+b2Settings.b2_angularSlop,-b2Settings.b2_maxAngularCorrection,0.0);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Max(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}\r
20106 else if(this.m_limitState==b2Joint.e_atUpperLimit)\r
20107 {limitC=angle-this.m_upperAngle;angularError=b2Math.b2Max(0.0,limitC);limitC=b2Math.b2Clamp(limitC-b2Settings.b2_angularSlop,0.0,b2Settings.b2_maxAngularCorrection);limitImpulse=-this.m_motorMass*limitC;oldLimitImpulse=this.m_limitPositionImpulse;this.m_limitPositionImpulse=b2Math.b2Min(this.m_limitPositionImpulse+limitImpulse,0.0);limitImpulse=this.m_limitPositionImpulse-oldLimitImpulse;}\r
20108 b1.m_rotation-=b1.m_invI*limitImpulse;b1.m_R.Set(b1.m_rotation);b2.m_rotation+=b2.m_invI*limitImpulse;b2.m_R.Set(b2.m_rotation);}\r
20109 return positionError<=b2Settings.b2_linearSlop&&angularError<=b2Settings.b2_angularSlop;},m_localAnchor1:new b2Vec2(),m_localAnchor2:new b2Vec2(),m_ptpImpulse:new b2Vec2(),m_motorImpulse:null,m_limitImpulse:null,m_limitPositionImpulse:null,m_ptpMass:new b2Mat22(),m_motorMass:null,m_intialAngle:null,m_lowerAngle:null,m_upperAngle:null,m_maxMotorTorque:null,m_motorSpeed:null,m_enableLimit:null,m_enableMotor:null,m_limitState:0});b2RevoluteJoint.tImpulse=new b2Vec2();\r
20110 var b2RevoluteJointDef=Class.create();Object.extend(b2RevoluteJointDef.prototype,b2JointDef.prototype);Object.extend(b2RevoluteJointDef.prototype,{initialize:function()\r
20111 {this.type=b2Joint.e_unknownJoint;this.userData=null;this.body1=null;this.body2=null;this.collideConnected=false;this.type=b2Joint.e_revoluteJoint;this.anchorPoint=new b2Vec2(0.0,0.0);this.lowerAngle=0.0;this.upperAngle=0.0;this.motorTorque=0.0;this.motorSpeed=0.0;this.enableLimit=false;this.enableMotor=false;},anchorPoint:null,lowerAngle:null,upperAngle:null,motorTorque:null,motorSpeed:null,enableLimit:null,enableMotor:null});\r
20112 \r
20113 \r
20114 \r
20115 if (!window['google']) {\r
20116 window['google'] = {};\r
20117 }\r
20118 if (!window['google']['loader']) {\r
20119 window['google']['loader'] = {};\r
20120 google.loader.ServiceBase = 'http://www.google.com/uds';\r
20121 google.loader.GoogleApisBase = 'http://ajax.googleapis.com/ajax';\r
20122 google.loader.ApiKey = 'notsupplied';\r
20123 google.loader.KeyVerified = true;\r
20124 google.loader.LoadFailure = false;\r
20125 google.loader.Secure = false;\r
20126 google.loader.GoogleLocale = 'www.google.com';\r
20127 google.loader.ClientLocation = {"latitude":37.454,"longitude":-122.203,"address":{"city":"Atherton","region":"CA","country":"USA","country_code":"US"}};\r
20128 google.loader.AdditionalParams = '';\r
20129 google.loader.OriginalAppPath = 'http://mrdoob.com/projects/chromeexperiments/google_gravity/';\r
20130 (function() {var d=true,e=null,g=false,h=encodeURIComponent,j=window,k=google,m=undefined,n=document;function p(a,b){return a.load=b}var q="push",s="replace",t="charAt",u="ServiceBase",v="name",w="getTime",x="length",y="prototype",z="setTimeout",A="loader",B="substring",C="join",D="toLowerCase";function E(a){if(a in F)return F[a];return F[a]=navigator.userAgent[D]().indexOf(a)!=-1}var F={};function G(a,b){var c=function(){};c.prototype=b[y];a.S=b[y];a.prototype=new c}\r
20131 function H(a,b){var c=a.G||[];c=c.concat(Array[y].slice.call(arguments,2));if(typeof a.t!="undefined")b=a.t;if(typeof a.s!="undefined")a=a.s;var f=function(){var i=c.concat(Array[y].slice.call(arguments));return a.apply(b,i)};f.G=c;f.t=b;f.s=a;return f}function I(a){a=new Error(a);a.toString=function(){return this.message};return a}function J(a,b){a=a.split(/\./);for(var c=j,f=0;f<a[x]-1;f++){c[a[f]]||(c[a[f]]={});c=c[a[f]]}c[a[a[x]-1]]=b}function K(a,b,c){a[b]=c}if(!L)var L=J;if(!M)var M=K;k[A].u={};L("google.loader.callbacks",k[A].u);var N={},O={};k[A].eval={};L("google.loader.eval",k[A].eval);\r
20132 p(k,function(a,b,c){function f(r){var o=r.split(".");if(o[x]>2)throw I("Module: '"+r+"' not found!");else if(typeof o[1]!="undefined"){i=o[0];c.packages=c.packages||[];c.packages[q](o[1])}}var i=a;c=c||{};if(a instanceof Array||a&&typeof a=="object"&&typeof a[C]=="function"&&typeof a.reverse=="function")for(var l=0;l<a[x];l++)f(a[l]);else f(a);if(a=N[":"+i]){if(c&&!c.language&&c.locale)c.language=c.locale;if(c&&typeof c.callback=="string"){l=c.callback;if(l.match(/^[[\]A-Za-z0-9._]+$/)){l=j.eval(l);\r
20133 c.callback=l}}if((l=c&&c.callback!=e)&&!a.r(b))throw I("Module: '"+i+"' must be loaded before DOM onLoad!");else if(l)a.l(b,c)?j[z](c.callback,0):a.load(b,c);else a.l(b,c)||a.load(b,c)}else throw I("Module: '"+i+"' not found!");});L("google.load",k.load);k.R=function(a,b){b?aa(a):P(j,"load",a)};L("google.setOnLoadCallback",k.R);function P(a,b,c){if(a.addEventListener)a.addEventListener(b,c,g);else if(a.attachEvent)a.attachEvent("on"+b,c);else{var f=a["on"+b];a["on"+b]=f!=e?ba([c,f]):c}}\r
20134 function ba(a){return function(){for(var b=0;b<a[x];b++)a[b]()}}var Q=[];function aa(a){if(Q[x]==0){P(j,"load",R);if(!E("msie")&&!(E("safari")||E("konqueror"))&&E("mozilla")||j.opera)j.addEventListener("DOMContentLoaded",R,g);else if(E("msie"))n.write("<script defer onreadystatechange='google.loader.domReady()' src=//:><\/script>");else(E("safari")||E("konqueror"))&&j[z](ca,10)}Q[q](a)}\r
20135 k[A].M=function(){var a=j.event.srcElement;if(a.readyState=="complete"){a.onreadystatechange=e;a.parentNode.removeChild(a);R()}};L("google.loader.domReady",k[A].M);var da={loaded:d,complete:d};function ca(){if(da[n.readyState])R();else Q[x]>0&&j[z](ca,10)}function R(){for(var a=0;a<Q[x];a++)Q[a]();Q.length=0}\r
20136 k[A].e=function(a,b,c){if(c){var f;if(a=="script"){f=n.createElement("script");f.type="text/javascript";f.src=b}else if(a=="css"){f=n.createElement("link");f.type="text/css";f.href=b;f.rel="stylesheet"}(a=n.getElementsByTagName("head")[0])||(a=n.body.parentNode.appendChild(n.createElement("head")));a.appendChild(f)}else if(a=="script")n.write('<script src="'+b+'" type="text/javascript"><\/script>');else a=="css"&&n.write('<link href="'+b+'" type="text/css" rel="stylesheet"></link>')};\r
20137 L("google.loader.writeLoadTag",k[A].e);k[A].O=function(a){O=a};L("google.loader.rfm",k[A].O);k[A].Q=function(a){for(var b in a)if(typeof b=="string"&&b&&b[t](0)==":"&&!N[b])N[b]=new T(b[B](1),a[b])};L("google.loader.rpl",k[A].Q);k[A].P=function(a){if((a=a.specs)&&a[x])for(var b=0;b<a[x];++b){var c=a[b];if(typeof c=="string")N[":"+c]=new U(c);else{c=new V(c[v],c.baseSpec,c.customSpecs);N[":"+c[v]]=c}}};L("google.loader.rm",k[A].P);k[A].loaded=function(a){N[":"+a.module].j(a)};\r
20138 L("google.loader.loaded",k[A].loaded);k[A].L=function(){var a=(new Date)[w](),b=Math.floor(Math.random()*1E7);return"qid="+(a.toString(16)+b.toString(16))};L("google.loader.createGuidArg_",k[A].L);J("google_exportSymbol",J);J("google_exportProperty",K);k[A].b={};L("google.loader.themes",k[A].b);k[A].b.A="http://www.google.com/cse/style/look/bubblegum.css";M(k[A].b,"BUBBLEGUM",k[A].b.A);k[A].b.C="http://www.google.com/cse/style/look/greensky.css";M(k[A].b,"GREENSKY",k[A].b.C);k[A].b.B="http://www.google.com/cse/style/look/espresso.css";\r
20139 M(k[A].b,"ESPRESSO",k[A].b.B);k[A].b.F="http://www.google.com/cse/style/look/shiny.css";M(k[A].b,"SHINY",k[A].b.F);k[A].b.D="http://www.google.com/cse/style/look/minimalist.css";M(k[A].b,"MINIMALIST",k[A].b.D);function U(a){this.a=a;this.p=[];this.o={};this.c={};this.k=d;this.d=-1}\r
20140 U[y].g=function(a,b){var c="";if(b!=m){if(b.language!=m)c+="&hl="+h(b.language);if(b.nocss!=m)c+="&output="+h("nocss="+b.nocss);if(b.nooldnames!=m)c+="&nooldnames="+h(b.nooldnames);if(b.packages!=m)c+="&packages="+h(b.packages);if(b.callback!=e)c+="&async=2";if(b.style!=m)c+="&style="+h(b.style);if(b.other_params!=m)c+="&"+b.other_params}if(!this.k){if(k[this.a]&&k[this.a].JSHash)c+="&sig="+h(k[this.a].JSHash);b=[];for(var f in this.o)f[t](0)==":"&&b[q](f[B](1));for(f in this.c)f[t](0)==":"&&b[q](f[B](1));\r
20141 c+="&have="+h(b[C](","))}return k[A][u]+"/?file="+this.a+"&v="+a+k[A].AdditionalParams+c};U[y].w=function(a){var b=e;if(a)b=a.packages;var c=e;if(b)if(typeof b=="string")c=[a.packages];else if(b[x]){c=[];for(a=0;a<b[x];a++)typeof b[a]=="string"&&c[q](b[a][s](/^\s*|\s*$/,"")[D]())}c||(c=["default"]);b=[];for(a=0;a<c[x];a++)this.o[":"+c[a]]||b[q](c[a]);return b};\r
20142 p(U[y],function(a,b){var c=this.w(b),f=b&&b.callback!=e;if(f)var i=new W(b.callback);for(var l=[],r=c[x]-1;r>=0;r--){var o=c[r];f&&i.H(o);if(this.c[":"+o]){c.splice(r,1);f&&this.c[":"+o][q](i)}else l[q](o)}if(c[x]){if(b&&b.packages)b.packages=c.sort()[C](",");if(!b&&O[":"+this.a]!=e&&O[":"+this.a].versions[":"+a]!=e&&!k[A].AdditionalParams&&this.k){a=O[":"+this.a];k[this.a]=k[this.a]||{};for(var S in a.properties)if(S&&S[t](0)==":")k[this.a][S[B](1)]=a.properties[S];k[A].e("script",k[A][u]+a.path+\r
20143 a.js,f);a.css&&k[A].e("css",k[A][u]+a.path+a.css,f)}else if(!b||!b.autoloaded)k[A].e("script",this.g(a,b),f);if(this.k){this.k=g;this.d=(new Date)[w]();if(this.d%100!=1)this.d=-1}for(r=0;r<l[x];r++){o=l[r];this.c[":"+o]=[];f&&this.c[":"+o][q](i)}}});\r
20144 U[y].j=function(a){if(this.d!=-1){X("al_"+this.a,"jl."+((new Date)[w]()-this.d),d);this.d=-1}this.p=this.p.concat(a.components);k[A][this.a]||(k[A][this.a]={});k[A][this.a].packages=this.p.slice(0);for(var b=0;b<a.components[x];b++){this.o[":"+a.components[b]]=d;var c=this.c[":"+a.components[b]];if(c){for(var f=0;f<c[x];f++)c[f].K(a.components[b]);delete this.c[":"+a.components[b]]}}X("hl",this.a)};U[y].l=function(a,b){return this.w(b)[x]==0};U[y].r=function(){return d};\r
20145 function W(a){this.J=a;this.m={};this.q=0}W[y].H=function(a){this.q++;this.m[":"+a]=d};W[y].K=function(a){if(this.m[":"+a]){this.m[":"+a]=g;this.q--;this.q==0&&j[z](this.J,0)}};function V(a,b,c){this.name=a;this.I=b;this.n=c;this.v=this.h=g;this.i=[];k[A].u[this[v]]=H(this.j,this)}G(V,U);p(V[y],function(a,b){var c=b&&b.callback!=e;if(c){this.i[q](b.callback);b.callback="google.loader.callbacks."+this[v]}else this.h=d;if(!b||!b.autoloaded)k[A].e("script",this.g(a,b),c);X("el",this[v])});V[y].l=function(a,b){return b&&b.callback!=e?this.v:this.h};V[y].j=function(){this.v=d;for(var a=0;a<this.i[x];a++)j[z](this.i[a],0);this.i=[]};\r
20146 var Y=function(a,b){return a.string?h(a.string)+"="+h(b):a.regex?b[s](/(^.*$)/,a.regex):""};V[y].g=function(a,b){return this.N(this.z(a),a,b)};\r
20147 V[y].N=function(a,b,c){var f="";if(a.key)f+="&"+Y(a.key,k[A].ApiKey);if(a.version)f+="&"+Y(a.version,b);b=k[A].Secure&&a.ssl?a.ssl:a.uri;if(c!=e)for(var i in c)if(a.params[i])f+="&"+Y(a.params[i],c[i]);else if(i=="other_params")f+="&"+c[i];else if(i=="base_domain")b="http://"+c[i]+a.uri[B](a.uri.indexOf("/",7));k[this[v]]={};if(b.indexOf("?")==-1&&f)f="?"+f[B](1);return b+f};V[y].r=function(a){return this.z(a).deferred};V[y].z=function(a){if(this.n)for(var b=0;b<this.n[x];++b){var c=this.n[b];if((new RegExp(c.pattern)).test(a))return c}return this.I};function T(a,b){this.a=a;this.f=b;this.h=g}G(T,U);p(T[y],function(a,b){this.h=d;k[A].e("script",this.g(a,b),g)});T[y].l=function(){return this.h};T[y].j=function(){};T[y].g=function(a,b){if(!this.f.versions[":"+a]){if(this.f.aliases){var c=this.f.aliases[":"+a];if(c)a=c}if(!this.f.versions[":"+a])throw I("Module: '"+this.a+"' with version '"+a+"' not found!");}a=k[A].GoogleApisBase+"/libs/"+this.a+"/"+a+"/"+this.f.versions[":"+a][b&&b.uncompressed?"uncompressed":"compressed"];X("el",this.a);return a};\r
20148 T[y].r=function(){return g};var ea=g,Z=[],fa=(new Date)[w](),X=function(a,b,c){if(!ea){P(j,"unload",ga);ea=d}if(c){if(!k[A].Secure&&(!k[A].Options||k[A].Options.csi===g)){a=a[D]()[s](/[^a-z0-9_.]+/g,"_");b=b[D]()[s](/[^a-z0-9_.]+/g,"_");j[z](H($,e,"http://csi.gstatic.com/csi?s=uds&v=2&action="+h(a)+"&it="+h(b)),1E4)}}else{Z[q]("r"+Z[x]+"="+h(a+(b?"|"+b:"")));j[z](ga,Z[x]>5?0:15E3)}},ga=function(){if(Z[x]){$(k[A][u]+"/stats?"+Z[C]("&")+"&nc="+(new Date)[w]()+"_"+((new Date)[w]()-fa));Z.length=0}},$=function(a){var b=new Image,\r
20149 c=ha++;ia[c]=b;b.onload=b.onerror=function(){delete ia[c]};b.src=a;b=e},ia={},ha=0;J("google.loader.recordStat",X);J("google.loader.createImageForLogging",$);\r
20150 \r
20151 }) ();google.loader.rm({"specs":[{"name":"books","baseSpec":{"uri":"http://books.google.com/books/api.js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"deferred":true,"params":{"callback":{"string":"callback"},"language":{"string":"hl"}}}},"feeds",{"name":"friendconnect","baseSpec":{"uri":"http://www.google.com/friendconnect/script/friendconnect.js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"deferred":false,"params":{}}},"spreadsheets","gdata","visualization",{"name":"sharing","baseSpec":{"uri":"http://www.google.com/s2/sharing/js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"deferred":false,"params":{"language":{"string":"hl"}}}},"search",{"name":"maps","baseSpec":{"uri":"http://maps.google.com/maps?file\u003dgoogleapi","ssl":"https://maps-api-ssl.google.com/maps?file\u003dgoogleapi","key":{"string":"key"},"version":{"string":"v"},"deferred":true,"params":{"callback":{"regex":"callback\u003d$1\u0026async\u003d2"},"language":{"string":"hl"}}},"customSpecs":[{"uri":"http://maps.google.com/maps/api/js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"deferred":true,"params":{"callback":{"string":"callback"},"language":{"string":"hl"}},"pattern":"^(3|3..*)$"}]},"annotations_v2","orkut","language","earth",{"name":"annotations","baseSpec":{"uri":"http://www.google.com/reviews/scripts/annotations_bootstrap.js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"deferred":true,"params":{"callback":{"string":"callback"},"language":{"string":"hl"},"country":{"string":"gl"}}}},"ads","elements"]});\r
20152 google.loader.rfm({":feeds":{"versions":{":1":"1",":1.0":"1"},"path":"/api/feeds/1.0/e291a634414cb5ef1c9f3b5424b8ac4b/","js":"default+en.I.js","css":"default.css","properties":{":JSHash":"e291a634414cb5ef1c9f3b5424b8ac4b",":Version":"1.0"}},":search":{"versions":{":1":"1",":1.0":"1"},"path":"/api/search/1.0/457a1b12dfe20ca00fd65f9ad5d52ccd/","js":"default+en.I.js","css":"default.css","properties":{":JSHash":"457a1b12dfe20ca00fd65f9ad5d52ccd",":NoOldNames":false,":Version":"1.0"}},":language":{"versions":{":1":"1",":1.0":"1"},"path":"/api/language/1.0/cd6e6992328d3619ee31352c39a90b10/","js":"default+en.I.js","properties":{":JSHash":"cd6e6992328d3619ee31352c39a90b10",":Version":"1.0"}},":spreadsheets":{"versions":{":0":"1",":0.3":"1"},"path":"/api/spreadsheets/0.3/8331b0bbcc74776270648505340e9200/","js":"default.I.js","properties":{":JSHash":"8331b0bbcc74776270648505340e9200",":Version":"0.3"}},":earth":{"versions":{":1":"1",":1.0":"1"},"path":"/api/earth/1.0/36b9e8d98246edaa2aac0e8ecc4dcec7/","js":"default.I.js","properties":{":JSHash":"36b9e8d98246edaa2aac0e8ecc4dcec7",":Version":"1.0"}},":annotations":{"versions":{":1":"1",":1.0":"1"},"path":"/api/annotations/1.0/95e76f84c9532973f104478d1e810796/","js":"default+en.I.js","properties":{":JSHash":"95e76f84c9532973f104478d1e810796",":Version":"1.0"}}});\r
20153 google.loader.rpl({":scriptaculous":{"versions":{":1.8.3":{"uncompressed":"scriptaculous.js","compressed":"scriptaculous.js"},":1.8.2":{"uncompressed":"scriptaculous.js","compressed":"scriptaculous.js"},":1.8.1":{"uncompressed":"scriptaculous.js","compressed":"scriptaculous.js"}},"aliases":{":1.8":"1.8.3",":1":"1.8.3"}},":yui":{"versions":{":2.6.0":{"uncompressed":"build/yuiloader/yuiloader.js","compressed":"build/yuiloader/yuiloader-min.js"},":2.7.0":{"uncompressed":"build/yuiloader/yuiloader.js","compressed":"build/yuiloader/yuiloader-min.js"},":2.8.0r4":{"uncompressed":"build/yuiloader/yuiloader.js","compressed":"build/yuiloader/yuiloader-min.js"}},"aliases":{":2":"2.8.0r4",":2.7":"2.7.0",":2.6":"2.6.0",":2.8":"2.8.0r4",":2.8.0":"2.8.0r4"}},":swfobject":{"versions":{":2.1":{"uncompressed":"swfobject_src.js","compressed":"swfobject.js"},":2.2":{"uncompressed":"swfobject_src.js","compressed":"swfobject.js"}},"aliases":{":2":"2.2"}},":ext-core":{"versions":{":3.1.0":{"uncompressed":"ext-core-debug.js","compressed":"ext-core.js"},":3.0.0":{"uncompressed":"ext-core-debug.js","compressed":"ext-core.js"}},"aliases":{":3":"3.1.0",":3.0":"3.0.0",":3.1":"3.1.0"}},":mootools":{"versions":{":1.2.3":{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"},":1.1.1":{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"},":1.2.4":{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"},":1.2.1":{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"},":1.2.2":{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"},":1.1.2":{"uncompressed":"mootools.js","compressed":"mootools-yui-compressed.js"}},"aliases":{":1":"1.1.2",":1.11":"1.1.1",":1.2":"1.2.4",":1.1":"1.1.2"}},":jqueryui":{"versions":{":1.7.2":{"uncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.6.0":{"uncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.7.0":{"uncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.7.1":{"uncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.5.3":{"uncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.5.2":{"uncompressed":"jquery-ui.js","compressed":"jquery-ui.min.js"}},"aliases":{":1.7":"1.7.2",":1":"1.7.2",":1.6":"1.6.0",":1.5":"1.5.3"}},":chrome-frame":{"versions":{":1.0.2":{"uncompressed":"CFInstall.js","compressed":"CFInstall.min.js"},":1.0.1":{"uncompressed":"CFInstall.js","compressed":"CFInstall.min.js"},":1.0.0":{"uncompressed":"CFInstall.js","compressed":"CFInstall.min.js"}},"aliases":{":1":"1.0.2",":1.0":"1.0.2"}},":prototype":{"versions":{":1.6.0.2":{"uncompressed":"prototype.js","compressed":"prototype.js"},":1.6.1.0":{"uncompressed":"prototype.js","compressed":"prototype.js"},":1.6.0.3":{"uncompressed":"prototype.js","compressed":"prototype.js"}},"aliases":{":1.6.1":"1.6.1.0",":1":"1.6.1.0",":1.6":"1.6.1.0",":1.6.0":"1.6.0.3"}},":jquery":{"versions":{":1.2.3":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.3.1":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.3.0":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.3.2":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.2.6":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.4.0":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.4.1":{"uncompressed":"jquery.js","compressed":"jquery.min.js"},":1.4.2":{"uncompressed":"jquery.js","compressed":"jquery.min.js"}},"aliases":{":1":"1.4.2",":1.4":"1.4.2",":1.3":"1.3.2",":1.2":"1.2.6"}},":dojo":{"versions":{":1.2.3":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.3.1":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.1.1":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.3.0":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.3.2":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.2.0":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.4.0":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.4.1":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"}},"aliases":{":1":"1.4.1",":1.4":"1.4.1",":1.3":"1.3.2",":1.2":"1.2.3",":1.1":"1.1.1"}}});\r
20154 }\r
20155 if (window['google'] != undefined && window['google']['loader'] != undefined) {\r
20156 if (!window['google']['search']) {\r
20157 window['google']['search'] = {};\r
20158 google.search.Version = '1.0';\r
20159 google.search.NoOldNames = false;\r
20160 google.search.JSHash = '457a1b12dfe20ca00fd65f9ad5d52ccd';\r
20161 google.search.LoadArgs = 'file\75uds.js\46v\0750.1';\r
20162 google.loader.ApiKey = 'notsupplied';\r
20163 google.loader.KeyVerified = true;\r
20164 google.loader.LoadFailure = false;\r
20165 }\r
20166 google.loader.writeLoadTag("script", google.loader.ServiceBase + "/api/search/1.0/457a1b12dfe20ca00fd65f9ad5d52ccd/default+en.I.js", false);\r
20167 }\r
20168 \r
20169 \r
20170 \r
20171 (function() {\r
20172 var _UDS_CONST_LOCALE = 'en';\r
20173 var _UDS_CONST_SHORT_DATE_PATTERN = 'MDY'; \r
20174 var _UDS_MSG_SEARCHER_IMAGE = ('Image'); \r
20175 var _UDS_MSG_SEARCHER_WEB = ('Web'); \r
20176 var _UDS_MSG_SEARCHER_BLOG = ('Blog'); \r
20177 var _UDS_MSG_SEARCHER_VIDEO = ('Video'); \r
20178 var _UDS_MSG_SEARCHER_LOCAL = ('Local'); \r
20179 var _UDS_MSG_SEARCHCONTROL_SAVE = ('save'); \r
20180 var _UDS_MSG_SEARCHCONTROL_KEEP = ('keep'); \r
20181 var _UDS_MSG_SEARCHCONTROL_INCLUDE = ('include'); \r
20182 var _UDS_MSG_SEARCHCONTROL_COPY = ('copy'); \r
20183 var _UDS_MSG_SEARCHCONTROL_CLOSE = ('close'); \r
20184 var _UDS_MSG_SEARCHCONTROL_SPONSORED_LINKS = ('Sponsored Links'); \r
20185 var _UDS_MSG_SEARCHCONTROL_SEE_MORE = ('see more...'); \r
20186 var _UDS_MSG_SEARCHCONTROL_WATERMARK = ('clipped from Google'); \r
20187 var _UDS_MSG_SEARCHER_CONFIG_SET_LOCATION = ('Search location'); \r
20188 var _UDS_MSG_SEARCHER_CONFIG_DISABLE_ADDRESS_LOOKUP = ('Disable address lookup'); \r
20189 var _UDS_MSG_SEARCHER_NEWS = ('News'); \r
20190 function _UDS_MSG_MINUTES_AGO(AGE_MINUTES_AGO) {return ('' + AGE_MINUTES_AGO + ' minutes ago');} \r
20191 var _UDS_MSG_ONE_HOUR_AGO = ('1 hour ago'); \r
20192 function _UDS_MSG_HOURS_AGO(AGE_HOURS_AGO) {return ('' + AGE_HOURS_AGO + ' hours ago');} \r
20193 function _UDS_MSG_NEWS_ALL_N_RELATED(NUMBER) {return ('all ' + NUMBER + ' related');} \r
20194 var _UDS_MSG_NEWS_RELATED = ('Related Articles'); \r
20195 var _UDS_MSG_BRANDING_STRING = ('powered by Google'); \r
20196 var _UDS_MSG_SORT_BY_DATE = ('Sort by date'); \r
20197 var _UDS_MSG_MONTH_ABBR_JAN = ('Jan'); \r
20198 var _UDS_MSG_MONTH_ABBR_FEB = ('Feb'); \r
20199 var _UDS_MSG_MONTH_ABBR_MAR = ('Mar'); \r
20200 var _UDS_MSG_MONTH_ABBR_APR = ('Apr'); \r
20201 var _UDS_MSG_MONTH_ABBR_MAY = ('May'); \r
20202 var _UDS_MSG_MONTH_ABBR_JUN = ('Jun'); \r
20203 var _UDS_MSG_MONTH_ABBR_JUL = ('Jul'); \r
20204 var _UDS_MSG_MONTH_ABBR_AUG = ('Aug'); \r
20205 var _UDS_MSG_MONTH_ABBR_SEP = ('Sep'); \r
20206 var _UDS_MSG_MONTH_ABBR_OCT = ('Oct'); \r
20207 var _UDS_MSG_MONTH_ABBR_NOV = ('Nov'); \r
20208 var _UDS_MSG_MONTH_ABBR_DEC = ('Dec'); \r
20209 var _UDS_MSG_DIRECTIONS = ('directions'); \r
20210 var _UDS_MSG_CLEAR_RESULTS = ('clear results'); \r
20211 var _UDS_MSG_SHOW_ONE_RESULT = ('show one result'); \r
20212 var _UDS_MSG_SHOW_MORE_RESULTS = ('show more results'); \r
20213 var _UDS_MSG_SHOW_ALL_RESULTS = ('show all results'); \r
20214 var _UDS_MSG_SETTINGS = ('settings'); \r
20215 var _UDS_MSG_SEARCH = ('search'); \r
20216 var _UDS_MSG_SEARCH_UC = ('Search'); \r
20217 var _UDS_MSG_POWERED_BY = ('powered by'); \r
20218 function _UDS_MSG_LOCAL_ATTRIBUTION(LOCAL_RESULTS_PROVIDER) {return ('Business listings provided by ' + LOCAL_RESULTS_PROVIDER + '');} \r
20219 var _UDS_MSG_SEARCHER_BOOK = ('Book'); \r
20220 function _UDS_MSG_FOUND_ON_PAGE(FOUND_ON_PAGE) {return ('Page ' + FOUND_ON_PAGE + '');} \r
20221 function _UDS_MSG_TOTAL_PAGE_COUNT(PAGE_COUNT) {return ('' + PAGE_COUNT + ' pages');} \r
20222 var _UDS_MSG_SEARCHER_BY = ('by'); \r
20223 var _UDS_MSG_SEARCHER_CODE = ('Code'); \r
20224 var _UDS_MSG_UNKNOWN_LICENSE = ('Unknown License'); \r
20225 var _UDS_MSG_SEARCHER_GSA = ('Search Appliance'); \r
20226 var _UDS_MSG_SEARCHCONTROL_MORERESULTS = ('More results'); \r
20227 var _UDS_MSG_SEARCHCONTROL_PREVIOUS = ('Previous'); \r
20228 var _UDS_MSG_SEARCHCONTROL_NEXT = ('Next'); \r
20229 var _UDS_MSG_GET_DIRECTIONS = ('Get directions'); \r
20230 var _UDS_MSG_GET_DIRECTIONS_TO_HERE = ('To here'); \r
20231 var _UDS_MSG_GET_DIRECTIONS_FROM_HERE = ('From here'); \r
20232 var _UDS_MSG_CLEAR_RESULTS_UC = ('Clear results'); \r
20233 var _UDS_MSG_SEARCH_THE_MAP = ('search the map'); \r
20234 var _UDS_MSG_SCROLL_THROUGH_RESULTS = ('scroll through results'); \r
20235 var _UDS_MSG_EDIT_TAGS = ('edit tags'); \r
20236 var _UDS_MSG_TAG_THIS_SEARCH = ('tag this search'); \r
20237 var _UDS_MSG_SEARCH_STRING = ('search string'); \r
20238 var _UDS_MSG_OPTIONAL_LABEL = ('optional label'); \r
20239 var _UDS_MSG_DELETE = ('delete'); \r
20240 var _UDS_MSG_DELETED = ('deleted'); \r
20241 var _UDS_MSG_CANCEL = ('cancel'); \r
20242 var _UDS_MSG_UPLOAD_YOUR_VIDEOS = ('upload your own video'); \r
20243 var _UDS_MSG_IM_DONE_WATCHING = ('i\047m done watching this'); \r
20244 var _UDS_MSG_CLOSE_VIDEO_PLAYER = ('close video player'); \r
20245 var _UDS_MSG_NO_RESULTS = ('No Results'); \r
20246 var _UDS_MSG_LINKEDCSE_ERROR_RESULTS = ('This Custom Search Engine is loading. Try again in a few seconds.'); \r
20247 var _UDS_MSG_COUPONS = ('Coupons'); \r
20248 var _UDS_MSG_BACK = ('back'); \r
20249 var _UDS_MSG_SUBSCRIBE = ('Subscribe'); \r
20250 var _UDS_MSG_SEARCHER_PATENT = ('Patent'); \r
20251 var _UDS_MSG_USPAT = ('US Pat.'); \r
20252 var _UDS_MSG_USPAT_APP = ('US Pat. App'); \r
20253 var _UDS_MSG_PATENT_FILED = ('Filed'); \r
20254 var _UDS_MSG_ADS_BY_GOOGLE = ('Ads by Google'); \r
20255 var _UDS_MSG_SET_DEFAULT_LOCATION = ('Set default location'); \r
20256 var _UDS_MSG_NEWSCAT_TOPSTORIES = ('Top Stories'); \r
20257 var _UDS_MSG_NEWSCAT_WORLD = ('World'); \r
20258 var _UDS_MSG_NEWSCAT_NATION = ('Nation'); \r
20259 var _UDS_MSG_NEWSCAT_BUSINESS = ('Business'); \r
20260 var _UDS_MSG_NEWSCAT_SCITECH = ('Sci/Tech'); \r
20261 var _UDS_MSG_NEWSCAT_ENTERTAINMENT = ('Entertainment'); \r
20262 var _UDS_MSG_NEWSCAT_HEALTH = ('Health'); \r
20263 var _UDS_MSG_NEWSCAT_SPORTS = ('Sports'); \r
20264 var _UDS_MSG_NEWSCAT_POLITICS = ('Politics');\r
20265 var b=true,c=null,g=false,i=encodeURIComponent,j=google_exportSymbol,aa=_UDS_CONST_SHORT_DATE_PATTERN,k=window,m=google,ba=navigator,o=undefined,ca=parseInt,da=parseFloat,ea=_UDS_CONST_LOCALE,p=document,fa=decodeURIComponent,q=Math;function ga(a,d){return a.onload=d}function ha(a,d){return a.onreadystatechange=d}function ia(a,d){return a.input=d}function ja(a,d){return a.width=d}function r(a,d){return a.innerHTML=d}function ka(a,d){return a.value=d}function la(a,d){return a.type=d}\r
20266 function ma(a,d){return a.visibility=d}function s(a,d){return a.title=d}function t(a,d){return a.className=d}function na(a,d){return a.checked=d}function oa(a,d){return a.onclick=d}function pa(a,d){return a.display=d}function qa(a,d){return a.execute=d}function u(a,d){return a.height=d}\r
20267 var v="appendChild",ra="push",sa="clearTimeout",w="input",x="width",ta="round",z="replace",ua="floor",va="content",xa="value",ya="indexOf",za="match",Aa="readyState",Ba="focus",A="createElement",C="setAttribute",Ca="cloneNode",Da="type",Ea="recordStat",Fa="ServiceBase",Ga="getTime",D="length",Ha="title",E="prototype",F="cursor",Ia="className",Ja="Version",Ka="checked",La="setTimeout",Ma="document",Na="split",Oa="userAgent",Pa="location",Qa="getComputedStyle",G="style",Ra="close",H="search",I="call",\r
20268 J="loader",Sa="currentStyle",Ta="console",Ua="action",Va="apply",Wa="navigator",K="CurrentLocale",L="execute",Xa="height",Ya="toLowerCase",Za="event",M;if(!m[H].NoOldNames){j("UDS_ServiceBase",m[J][Fa]);j("UDS_OriginalAppPath",m[J].OriginalAppPath);j("UDS_ApiKey",m[J].ApiKey);j("UDS_KeyVerified",m[J].KeyVerified);j("UDS_LoadFailure",m[J].LoadFailure);j("UDS_CurrentLocale",ea);j("UDS_ShortDatePattern",aa);j("UDS_Version",m[H][Ja]);j("UDS_JSHash",m[H].JSHash)}if(!N)var N=j;if(!O)var O=google_exportProperty;var P={};P.blank="&nbsp;";P.image=_UDS_MSG_SEARCHER_IMAGE;P.web=_UDS_MSG_SEARCHER_WEB;P.blog=_UDS_MSG_SEARCHER_BLOG;P.video=_UDS_MSG_SEARCHER_VIDEO;P.local=_UDS_MSG_SEARCHER_LOCAL;P.news=_UDS_MSG_SEARCHER_NEWS;P.book=_UDS_MSG_SEARCHER_BOOK;P.patent="Patent";P["ads-by-google"]=_UDS_MSG_ADS_BY_GOOGLE;P.cse="Custom Search Control";P.save=_UDS_MSG_SEARCHCONTROL_SAVE;P.keep=_UDS_MSG_SEARCHCONTROL_KEEP;P.include=_UDS_MSG_SEARCHCONTROL_INCLUDE;P.copy=_UDS_MSG_SEARCHCONTROL_COPY;P.close=_UDS_MSG_SEARCHCONTROL_CLOSE;\r
20269 P["sponsored-links"]=_UDS_MSG_SEARCHCONTROL_SPONSORED_LINKS;P["see-more"]=_UDS_MSG_SEARCHCONTROL_SEE_MORE;P.watermark=_UDS_MSG_SEARCHCONTROL_WATERMARK;P["search-location"]=_UDS_MSG_SEARCHER_CONFIG_SET_LOCATION;P["disable-address-lookup"]=_UDS_MSG_SEARCHER_CONFIG_DISABLE_ADDRESS_LOOKUP;P["sort-by-date"]=_UDS_MSG_SORT_BY_DATE;P.pbg=_UDS_MSG_BRANDING_STRING;P["n-minutes-ago"]=_UDS_MSG_MINUTES_AGO;P["n-hours-ago"]=_UDS_MSG_HOURS_AGO;P["one-hour-ago"]=_UDS_MSG_ONE_HOUR_AGO;P["all-n-related"]=_UDS_MSG_NEWS_ALL_N_RELATED;\r
20270 P["related-articles"]=_UDS_MSG_NEWS_RELATED;P["page-count"]=_UDS_MSG_TOTAL_PAGE_COUNT;var Q=[];Q[0]=_UDS_MSG_MONTH_ABBR_JAN;Q[1]=_UDS_MSG_MONTH_ABBR_FEB;Q[2]=_UDS_MSG_MONTH_ABBR_MAR;Q[3]=_UDS_MSG_MONTH_ABBR_APR;Q[4]=_UDS_MSG_MONTH_ABBR_MAY;Q[5]=_UDS_MSG_MONTH_ABBR_JUN;Q[6]=_UDS_MSG_MONTH_ABBR_JUL;Q[7]=_UDS_MSG_MONTH_ABBR_AUG;Q[8]=_UDS_MSG_MONTH_ABBR_SEP;Q[9]=_UDS_MSG_MONTH_ABBR_OCT;Q[10]=_UDS_MSG_MONTH_ABBR_NOV;Q[11]=_UDS_MSG_MONTH_ABBR_DEC;P["month-abbr"]=Q;P.directions=_UDS_MSG_DIRECTIONS;\r
20271 P["clear-results"]=_UDS_MSG_CLEAR_RESULTS;P["show-one-result"]=_UDS_MSG_SHOW_ONE_RESULT;P["show-more-results"]=_UDS_MSG_SHOW_MORE_RESULTS;P["show-all-results"]=_UDS_MSG_SHOW_ALL_RESULTS;P.settings=_UDS_MSG_SETTINGS;P.search=_UDS_MSG_SEARCH;P["search-uc"]=_UDS_MSG_SEARCH_UC;P["powered-by"]=_UDS_MSG_POWERED_BY;P.sa=_UDS_MSG_SEARCHER_GSA;P.by=_UDS_MSG_SEARCHER_BY;P.code=_UDS_MSG_SEARCHER_CODE;P["unknown-license"]=_UDS_MSG_UNKNOWN_LICENSE;P["more-results"]=_UDS_MSG_SEARCHCONTROL_MORERESULTS;\r
20272 P.previous=_UDS_MSG_SEARCHCONTROL_PREVIOUS;P.next=_UDS_MSG_SEARCHCONTROL_NEXT;P["get-directions"]=_UDS_MSG_GET_DIRECTIONS;P["to-here"]=_UDS_MSG_GET_DIRECTIONS_TO_HERE;P["from-here"]=_UDS_MSG_GET_DIRECTIONS_FROM_HERE;P["clear-results-uc"]=_UDS_MSG_CLEAR_RESULTS_UC;P["search-the-map"]=_UDS_MSG_SEARCH_THE_MAP;P["scroll-results"]=_UDS_MSG_SCROLL_THROUGH_RESULTS;P["edit-tags"]=_UDS_MSG_EDIT_TAGS;P["tag-search"]=_UDS_MSG_TAG_THIS_SEARCH;P["search-string"]=_UDS_MSG_SEARCH_STRING;P["optional-label"]=_UDS_MSG_OPTIONAL_LABEL;\r
20273 P["delete"]=_UDS_MSG_DELETE;P.deleted=_UDS_MSG_DELETED;P.cancel=_UDS_MSG_CANCEL;P["upload-video"]=_UDS_MSG_UPLOAD_YOUR_VIDEOS;P["im-done"]=_UDS_MSG_IM_DONE_WATCHING;P["close-player"]=_UDS_MSG_CLOSE_VIDEO_PLAYER;P["no-results"]=_UDS_MSG_NO_RESULTS;P["linked-cse-error-results"]=_UDS_MSG_LINKEDCSE_ERROR_RESULTS;P.back=_UDS_MSG_BACK;P.subscribe=_UDS_MSG_SUBSCRIBE;P["us-pat"]="US Pat.";P["us-pat-app"]="US Pat. App";P["us-pat-filed"]="Filed";function $a(a,d){var e=function(){};e.prototype=d[E];a.prototype=new e;a[E].Mg=function(f){var h=Array[E].splice[Va](arguments,[1,arguments[D]]);return f[Va](a,h)}}var _json_cache_defeater_=(new Date)[Ga](),_json_request_require_prep=b;function ab(a,d){bb("msie")&&cb("msie 6.0")?k[La](R(this,db,[a,d]),0):db(a,d)}function eb(a){_json_request_require_prep=g;ab(a,c);_json_request_require_prep=b}\r
20274 function db(a,d){var e=p.getElementsByTagName("head")[0];e||(e=p.body.parentNode[v](p[A]("head")));var f=p[A]("script");la(f,"text/javascript");f.charset="utf-8";a=_json_request_require_prep?a+"&key="+m[J].ApiKey+"&v="+d:a;if(fb()||gb())a=a+"&nocache="+_json_cache_defeater_++;f.src=a;var h=function(){ga(f,c);f.parentNode.removeChild(f);delete f};a=function(l){l=(l?l:k[Za]).target?(l?l:k[Za]).target:(l?l:k[Za]).srcElement;if(l[Aa]=="loaded"||l[Aa]=="complete"){ha(l,c);h()}};if(ba.product=="Gecko")ga(f,\r
20275 h);else ha(f,a);e[v](f)}function hb(a,d){return function(){return d[Va](a,arguments)}}function R(a,d,e){return function(){return d[Va](a,e)}}function ib(a){for(;a.firstChild;)a.removeChild(a.firstChild)}function jb(a,d){if(a)try{ib(a);a[v](d)}catch(e){}return d}function T(a,d){try{a[v](d)}catch(e){}return d}function kb(a){return p.createTextNode(a?a:"")}function U(a,d){var e=p[A]("div");if(a)r(e,a);if(d)t(e,d);return e}function lb(a,d){var e=p[A]("div");a&&T(e,kb(a));if(d)t(e,d);return e}\r
20276 function V(a){var d=p[A]("div");if(a)t(d,a);return d}function mb(a,d){var e=p[A]("span");a&&T(e,kb(a));if(d)t(e,d);return e}function nb(a,d,e){var f=p[A]("table");f[C]("cellSpacing",a?a:0);f[C]("cellPadding",d?d:0);if(e)t(f,e);return f}function ob(a,d,e){(a=a.insertRow(-1))||alert(a);for(var f=0;f<d;f++)X(a,e);return a}function X(a,d){a=a.insertCell(-1);if(d)t(a,d);return a}function pb(a){var d=p[A]("td");if(a)t(d,a);return d}\r
20277 function qb(a,d,e,f){var h=p[A]("img");h.src=a;if(d)ja(h,d);if(e)u(h,e);if(f)t(h,f);return h}function rb(a,d,e,f,h){var l=p[A]("a");l.href=a;if(d)f?T(l,mb(d,f)):T(l,kb(d));if(e)l.target=e;if(h)s(l,h);return l}function Y(a,d,e,f,h){var l=U(c,f),n=p[A]("a");n.href=a;r(n,d);if(f)t(n,f);if(e)n.target=e;if(h)s(n,h);l[v](n);return l}function sb(a,d,e,f,h){var l=U(c,f),n=p[A]("a");n.href=a;d&&T(n,kb(d));if(f)t(n,f);if(e)n.target=e;if(h)s(n,h);l[v](n);return l}\r
20278 function tb(a){var d=p[A]("form");if(a)t(d,a);return d}function ub(a,d){var e=p[A]("input");la(e,"submit");ka(e,a);if(d)t(e,d);return e}function vb(a,d,e){var f=p[A]("input");f[C]("autoComplete","off");la(f,"text");if(a==-1)Z(f,"util-css-expand");else f.size=a>0?a:10;d&&wb(f,d);if(e)ka(f,e);return f}function xb(a,d,e,f){var h=p[A]("input");la(h,"checkbox");h.name=a;ka(h,d);if(f)t(h,f);if(e)na(h,e);return h}function yb(a,d){t(a,d)}function wb(a,d){Z(a,d)}function zb(a,d){$(a,d)}\r
20279 function Z(a,d){var e;a:{if(!(a==c||a[Ia]==c)){e=a[Ia][Na](" ");for(var f=0;f<e[D];f++)if(e[f]==d){e=b;break a}}e=g}e||(a.className+=" "+d)}function $(a,d){if(a[Ia]!=c){for(var e=a[Ia][Na](" "),f=[],h=g,l=0;l<e[D];l++)if(e[l]!=d)e[l]&&f[ra](e[l]);else h=b;if(h)t(a,f.join(" "))}}function Ab(a){if(Bb!="")return Bb;var d=a[Ya]()[Na](".");if(d[D]<2)Bb=".com";a=d.pop();d=d.pop();return Bb=a[D]==2?Cb[d]&&Cb[d][a]==1?"."+d+"."+a:"."+a:".com"}\r
20280 var Bb="",Cb={pf:{Vg:1,Zg:1,hh:1,id:1,ih:1,"in":1,kh:1,mh:1,nh:1,oh:1,rh:1,Ah:1,Ph:1,Th:1,Uh:1,Yh:1,Zh:1,bi:1},Wg:{Ng:1,Pg:1,Rg:1,Sg:1,Tg:1,Ug:1,pf:1,$g:1,"do":1,ah:1,bh:1,dh:1,eh:1,fh:1,gh:1,lh:1,sh:1,th:1,uh:1,vh:1,wh:1,xh:1,yh:1,zh:1,Ch:1,Dh:1,Eh:1,Fh:1,Gh:1,Hh:1,Kh:1,Mh:1,Oh:1,Qh:1,Rh:1,Sh:1,Wh:1,Xh:1,ai:1},Bh:{Og:1}};function bb(a){if(a in Db)return Db[a];return Db[a]=ba[Oa][Ya]()[ya](a)!=-1}function cb(a){if(a in Eb)return Eb[a];return Eb[a]=ba.appVersion[Ya]()[ya](a)!=-1}var Db={},Eb={};\r
20281 function fb(){return bb("msie")}function gb(){return bb("safari")||bb("konqueror")}var Fb,Gb;if(k.Lg){Fb=b;if(k.XMLHttpRequest)Gb=b}function Hb(a){this.bc=a+"branding";this.Sb=a+"branding-vertical";this.jh=a+"branding-img";this.Vh=a+"branding-user-defined";this.qe=a+"branding-img-noclear";this.of=a+"branding-clickable";this.text=a+"branding-text"};m[H].a=function(){this.fa=this.Xg=c;this.Fc=this.Gg=0;this.ke=b;this.M={width:100,height:75};this.Fa=m[H].a.db;this.we=1;this.S(m[H].a.X);this.$d();this.gwsUrl=this.u=this.H=this.Lh=this.w=this.Kb=this.Cb=this.bb=this.tc=this.Pb=this.ic=this.gc=c;this.pa=[];this.me=typeof k==="object"&&k[Pa]&&k[Pa].hostname&&k[Pa].hostname!=""?Ab(k[Pa].hostname):".com";this.rb=this.lb=c};N("google.search.Search",m[H].a);m[H].a.Jc=m[J][Fa];O(m[H].a,"BASE",m[H].a.Jc);m[H].a.la="large";O(m[H].a,"LARGE_RESULTSET",m[H].a.la);\r
20282 m[H].a.X="small";O(m[H].a,"SMALL_RESULTSET",m[H].a.X);m[H].a.Ma="filtered_cse";O(m[H].a,"FILTERED_CSE_RESULTSET",m[H].a.Ma);m[H].a.Te=8;O(m[H].a,"LARGE_RESULTS",m[H].a.Te);m[H].a.cf=4;O(m[H].a,"SMALL_RESULTS",m[H].a.cf);m[H].a.Ne=10;O(m[H].a,"FILTERED_CSE_RESULTS",m[H].a.Ne);m[H].a.od=5E3;O(m[H].a,"KEEP_SWEEPER_DELAY",m[H].a.od);m[H].a.We="_top";O(m[H].a,"LINK_TARGET_TOP",m[H].a.We);m[H].a.Ve="_self";O(m[H].a,"LINK_TARGET_SELF",m[H].a.Ve);m[H].a.Ue="_parent";O(m[H].a,"LINK_TARGET_PARENT",m[H].a.Ue);\r
20283 m[H].a.db="_blank";O(m[H].a,"LINK_TARGET_BLANK",m[H].a.db);m[H].a.eb="order-by-relevance";O(m[H].a,"ORDER_BY_RELEVANCE",m[H].a.eb);m[H].a.ma="order-by-date";O(m[H].a,"ORDER_BY_DATE",m[H].a.ma);m[H].a.rd="order-by-ascending-date";O(m[H].a,"ORDER_BY_ASCENDING_DATE",m[H].a.rd);m[H].a.Db="restrict-type";O(m[H].a,"RESTRICT_TYPE",m[H].a.Db);m[H].a.Ub="restrict-safesearch";O(m[H].a,"RESTRICT_SAFESEARCH",m[H].a.Ub);m[H].a.Wb="active";O(m[H].a,"SAFESEARCH_STRICT",m[H].a.Wb);m[H].a.Vb="off";\r
20284 O(m[H].a,"SAFESEARCH_OFF",m[H].a.Vb);m[H].a.Ad="moderate";O(m[H].a,"SAFESEARCH_MODERATE",m[H].a.Ad);m[H].a.Na="restrict-extended";O(m[H].a,"RESTRICT_EXTENDED_ARGS",m[H].a.Na);m[H].a.Ag=P;O(m[H].a,"strings",m[H].a.Ag);m[H].a[E].dg=function(){var a=this.na+"?hl="+m[H][K]+"&source=uds";a+=this.u?this.u:"&q=";return this.wa&&this.wa!=""?this.wa:a};m[H].a[E].sg=function(a){this.H=a==c||a==""?c:a};O(m[H].a[E],"setQueryAddition",m[H].a[E].sg);\r
20285 m[H].a[E].ya=function(a,d,e){a=m[H].a.Jc+this.Ba+"?callback="+a+"&context="+d+"&lstkp="+this.nf()+"&rsz="+this.za+"&hl="+m[H][K];if(this.wb)a+="&source="+i(this.wb);if(this.me)a+="&gss="+this.me;if(m[H].JSHash)a+="&sig="+m[H].JSHash;if(e)a+="&start="+e;return a};m[H].a[E].wg=function(a){this.wb=a};O(m[H].a[E],"setSearcherSrc",m[H].a[E].wg);m[H].a[E].xb=function(a){this.Fa=a};O(m[H].a[E],"setLinkTarget",m[H].a[E].xb);M=m[H].a[E];M.s=function(){return this.Fa&&this.Fa!=""?this.Fa:c};\r
20286 M.Lf=function(){this.Gg++;this.Fc++;this.Kb&&k[sa](this.Kb);this.Kb=k[La](R(this,this[L],[c]),m[H].a.od)};M.nf=function(){k[sa](this.Kb);var a=this.Fc;this.Fc=0;return a};M.nc=function(){if(this.gc==c)this.gc="gsc-"+this.w+"Result";return this.gc};M.ia=function(){if(this.ic==c)this.ic="gs-"+this.w+"Result";return this.ic};M.Hf=function(){if(this.Pb==c)this.Pb=P[this.w];return this.bb?this.bb:this.Pb};M.Ff=function(){if(this.tc==c)this.tc=P[this.w];return this.bb?this.bb:this.tc};M.Gf=function(){return this.za};\r
20287 O(m[H].a[E],"getResultSetSize",m[H].a[E].Gf);m[H].a[E].S=function(a){switch(a){case m[H].a.la:this.za=m[H].a.la;break;default:case m[H].a.X:this.za=m[H].a.X;break}};O(m[H].a[E],"setResultSetSize",m[H].a[E].S);qa(m[H].a[E],function(a){var d=(new Date)[Ga]();this.Ec=d%100==1?d:-1;d=this.ha(a,c,c);d+=this.Wa?"&"+this.Wa:"";if(k._googleudsextrastuff)d+=k._googleudsextrastuff;this.cursor=c;this.Rf=a;ab(d,m[H][Ja]);if(this.pa&&this.pa[D]>0)for(d=0;d<this.pa[D];d++)this.pa[d][L](a)});\r
20288 O(m[H].a[E],"execute",m[H].a[E][L]);m[H].a[E].ne=function(a){if(this[F]&&a<this[F].pages[D]){a=this.ha(this.Rf,c,c,this[F].pages[a].start);this.cursor=c;ab(a,m[H][Ja])}};O(m[H].a[E],"gotoPage",m[H].a[E].ne);m[H].a[E].ef=function(a){this.pa&&this.pa[ra](a)};O(m[H].a[E],"addRelatedSearcher",m[H].a[E].ef);m[H].a[E].Ef=function(a,d,e){return this.ha(a,d,e)+"&key="+m[J].ApiKey+"&v="+m[H][Ja]};O(m[H].a[E],"getExecuteUrl",m[H].a[E].Ef);\r
20289 m[H].a[E].ta=function(a){var d=Y("http://code.google.com/apis/ajaxsearch/faq.html",P.watermark+" - "+this.qf(),"_blank","gs-watermark");T(a,d)};m[H].a[E].qf=function(){var a=new Date;return a.getMonth()+1+"/"+a.getFullYear()};\r
20290 m[H].a[E].Va=function(a){var d;d=a.getFullYear();var e=a.getMonth(),f=P["month-abbr"][e];a=a.getDate();if(a<10)a="0"+a;switch(m[H].ShortDatePattern){case "MDY":d=f+" "+a+", "+d;break;case "YMD":if(m[H][K]=="zh-CN"||m[H][K]=="zh-TW"||m[H][K]=="ja"||m[H][K]=="ko"){f=Ib[m[H][K]];d=d+f.year+(e+1)+f.month+a+f.day}else d=d+" "+f+" "+a;break;default:case "DMY":d=a+" "+f+" "+d;break}return d};O(m[H].a[E],"formatToShortDate",m[H].a[E].Va);\r
20291 var Ib={"zh-CN":{month:" \u6708 ",year:" \u5e74 ",day:" \u65e5 "},"zh-TW":{month:" \u6708 ",year:" \u5e74 ",day:" \u65e5 "},ja:{month:"\u6708",year:"\u5e74",day:"\u65e5"},ko:{month:" \uc6d4 ",year:" \ub144 ",day:" \uc77c "}};m[H].a.pd=36E5;m[H].a.bf=6E4;m[H].a.af=864E5;\r
20292 m[H].a[E].mc=function(a){var d=(new Date)[Ga](),e=a[Ga]();if(d<e)return P["n-minutes-ago"](2);d=d-e;if(d<m[H].a.pd){a=q[ua](d/m[H].a.bf);a=a<=1?2:a;return P["n-minutes-ago"](a)}if(d<m[H].a.af){a=q[ua](d/m[H].a.pd);if(a<=1)return P["one-hour-ago"];else{a=a;return P["n-hours-ago"](a)}}return this.Va(a)};O(m[H].a[E],"formatToRelativeDate",m[H].a[E].mc);m[H].a[E].$d=function(){this.Ih=this.gwsUrl=c;this.results=[]};O(m[H].a[E],"clearResults",m[H].a[E].$d);\r
20293 m[H].a[E].zf=function(){this.ae&&this.ae();if(this.Ec!=-1){m[J][Ea]("asa_"+this.w,"req."+((new Date)[Ga]()-this.Ec),b);this.Ec=-1}};\r
20294 m[H].a[E].W=function(a,d,e,f){if(!(a==c&&d==204)){this.gwsUrl=c;if(this.results&&this.results[D]>0)for(var h=0;h<this.results[D];h++)this.results[h].html&&Jb(this.results[h].html);if(a&&a.results&&a.results[D]>0){this.results=a.results;if(a[F]&&a[F].moreResultsUrl)this.gwsUrl=this.wa&&this.wa!=""?this.wa:a[F].moreResultsUrl;else if(this.u&&this.na)this.gwsUrl=this.dg()}else this.results=[];this.completionStatus=d;this.hashStatus=f;this.Yg=e;this.ze=a&&a.resultAttribution&&a.resultAttribution!=c&&\r
20295 a.resultAttribution!=""?a.resultAttribution:c;if(a&&a[F]&&a[F].pages&&a[F].pages[D]>0)this.cursor=a[F];else typeof this[F]!="undefined"&&delete this[F];if(a&&a.context)this.context=a.context;else typeof this.context!="undefined"&&delete this.context;if(a&&a.promotions)this.promotions=a.promotions;else typeof this.promotions!="undefined"&&delete this.promotions;if(a&&a.omittedResults)this.omittedResults=a.omittedResults;else typeof this.omittedResults!="undefined"&&delete this.omittedResults;this.ke&&\r
20296 this.hf();this.zf()}};O(m[H].a[E],"onSearchComplete",m[H].a[E].W);m[H].a[E].le=function(){var a=c;if(this.ze)a=U(this.ze,"gs-results-attribution");return a};O(m[H].a[E],"getAttribution",m[H].a[E].le);m[H].a[E].hf=function(){var a,d;for(a=0;a<this.results[D];a++){d=this.results[a];this.C(d)}};m[H].a[E].zb=function(a,d,e){e||(e=[c]);this.ae=R(a,d,e)};O(m[H].a[E],"setSearchCompleteCallback",m[H].a[E].zb);\r
20297 m[H].a.ka=function(a,d){var e=g,f;if(a[D])for(var h=0;h<a[D];h++)if(a[h]==c){a[h]=d;f=h;e=b;break}if(!e){f=a[D];a[ra](d)}return f};O(m[H].a,"AllocateCompletionMapContext",m[H].a.ka);m[H].a[E].Bb=function(a){this.bb=a};O(m[H].a[E],"setUserDefinedLabel",m[H].a[E].Bb);m[H].a[E].yg=function(a){this.Cb=a};O(m[H].a[E],"setUserDefinedClassSuffix",m[H].a[E].yg);m[H].a[E].qg=function(){this.ke=g};O(m[H].a[E],"setNoHtmlGeneration",m[H].a[E].qg);\r
20298 m[H].a.$a=function(a,d,e,f,h){var l=q.min(q.min(e[x]/a,e[Xa]/d),1),n={};ja(n,q[ta](a*l));u(n,q[ta](d*l));if(f){ja(f,n[x]);u(f,n[Xa]);if(h)f[G].left=(e[x]-n[x])/2+"px"}return n};O(m[H].a,"scaleImage",m[H].a.$a);m[H].a.Qd=1;O(m[H].a,"VERTICAL_BRANDING",m[H].a.Qd);m[H].a.Oe=2;O(m[H].a,"HORIZONTAL_BRANDING",m[H].a.Oe);\r
20299 m[H].a.Cf=function(a,d,e){var f=d&&d==m[H].a.Qd,h=new Hb("gsc-");d=V(h.bc);var l=nb(c,c,h.bc);T(d,l);f=!f;if(!f){Z(d,h.Sb);Z(l,h.Sb)}var n=ob(l,0),y,B;if(f)B=y=n;else{y=n;B=ob(l,0)}var W="/css/small-logo.png",S=51;n=15;if(e)if(typeof e=="string")if(e[za](/^http:\/\/www\.youtube\.com/)){W="/css/youtube-logo-55x24.png";S=55;n=24;Z(d,h.bc+"-youtube");if(!f){Z(d,h.Sb+"-youtube");Z(l,h.Sb+"-youtube")}}f=X(y,h.text);l=X(B,h.qe);y=U(P["powered-by"],h.text);W=m[J][Fa]+W;S=S;n=n;B=h.qe;if(Fb&&!Gb){B=V(B);\r
20300 B[G].filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+W+'")';ja(B[G],S+"px");u(B[G],n+"px")}else B=qb(W,c,c,B);n=B;T(f,y);if(e){f="http://www.google.com";if(typeof e=="string"&&(e[za](/^http:\/\/[a-z]*\.google\.com/)||e[za](/^http:\/\/www\.youtube\.com/)))f=e;e=rb(f,c,"_BLANK");t(e,h.of);T(e,n);T(l,e)}else T(l,n);if(a){a=typeof a=="string"?p.getElementById(a):a;ib(a);T(a,d)}return d};O(m[H].a,"getBranding",m[H].a.Cf);m[H].a.setOnLoadCallback=function(a,d){m.setOnLoadCallback(a,d)};\r
20301 O(m[H].a,"setOnLoadCallback",m[H].a.setOnLoadCallback);var Kb;function Jb(a){Kb||(Kb=p[A]("DIV"));Kb[v](a);r(Kb,"")}m[H].a[E].Af=function(a){var d=this.lb;if(a)d=a;a={};var e=V(this.ia());Z(e,"gs-result");Z(e,"gs-error-result");d=U(d,"gs-snippet");T(e,d);a.html=e;return a};m[H].a[E].Bf=function(a){var d=this.rb;if(a)d=a;a={};var e=V(this.ia());Z(e,"gs-result");Z(e,"gs-no-results-result");d=U(d,"gs-snippet");T(e,d);a.html=e;return a};j("google.search.CurrentLocale",ea);\r
20302 j("google.search.ShortDatePattern",aa);m[H].q=function(){m[H].a[I](this);this.w="blog";this.Ba="/GblogSearch";this.na="http://blogsearch.google.com/blogsearch";this.l=c;this.N=g;this.Ta=b;this.fa=hb(this,m[H].q[E].oa);this.Sa="gsc-blogConfig";this.o=c};N("google.search.BlogSearch",m[H].q);$a(m[H].q,m[H].a);m[H].q.B="GblogSearch";O(m[H].q,"RESULT_CLASS",m[H].q.B);m[H].q.n=[];m[H].q.I=function(a,d,e,f,h){var l=0;if(a)l=ca(a,10);a=m[H].q.n[l];m[H].q.n[l]=c;a.W(d,e,f,h)};O(m[H].q,"RawCompletion",m[H].q.I);\r
20303 m[H].q[E].ha=function(a,d,e,f){e=e==c?m[H].a.ka(m[H].q.n,this):e;d=this.ya(d==c?"google.search.BlogSearch.RawCompletion":d,e,f);if(a){a=a;if(this.H)a=a+" "+this.H;if(this.l)a=a+" blogurl:"+this.l;a="&q="+i(a);if(this.N)a+="&scoring=d";d+=a;this.u=a}return d};\r
20304 m[H].q[E].C=function(a){a.html&&delete a.html;var d=V(this.ia());Z(d,"gs-result");var e;e=Y(a.postUrl,a[Ha],this.s(),"gs-title");T(d,e);e=new Date(a.publishedDate);e=U(this.Va(e),"gs-publishedDate");T(d,e);e=new Date(a.publishedDate);e=U(this.mc(e),"gs-relativePublishedDate");T(d,e);e=U(a[va],"gs-snippet");T(d,e);e=Y(a.blogUrl,a.blogUrl,this.s(),"gs-visibleUrl");T(d,e);a.html=d;this.ta(a.html)};O(m[H].q[E],"createResultHtml",m[H].q[E].C);m[H].q[E].qa=function(a){this.l=a==c||a==""?c:a};\r
20305 O(m[H].q[E],"setSiteRestriction",m[H].q[E].qa);m[H].q[E].K=function(a){this.N=a==m[H].a.ma?b:g};O(m[H].q[E],"setResultOrder",m[H].q[E].K);\r
20306 m[H].q[E].oa=function(a,d){if(d){if(this.o==c){d=V("gsc-configSetting");this.o=xb(c,"0",this.N,"gsc-configSettingCheckbox");T(d,this.o);T(d,U(P["sort-by-date"],"gsc-configSettingCheckboxLabel"));var e=V("gsc-configSettingSubmit");T(e,ub(P[Ra],"gsc-configSettingSubmit"));T(d,e);T(a,d)}else na(this.o,this.N);this.o[Ba]()}else if(this.o)this.o[Ka]?this.K(m[H].a.ma):this.K(m[H].a.eb)};m[H].k=function(){m[H].a[I](this);this.w="book";this.Ba="/GbookSearch";this.na="http://books.google.com/books";this.Jb=g;this.Gc=c};N("google.search.BookSearch",m[H].k);$a(m[H].k,m[H].a);m[H].k.B="GbookSearch";O(m[H].k,"RESULT_CLASS",m[H].k.B);m[H].k.Pd="user-list";O(m[H].k,"USER_LIST",m[H].k.Pd);m[H].k.Hd=1;O(m[H].k,"TYPE_ALL_BOOKS",m[H].k.Hd);m[H].k.Ld=2;O(m[H].k,"TYPE_FULL_VIEW_BOOKS",m[H].k.Ld);m[H].k.n=[];\r
20307 m[H].k.I=function(a,d,e,f,h){var l=0;if(a)l=ca(a,10);a=m[H].k.n[l];m[H].k.n[l]=c;a.W(d,e,f,h)};O(m[H].k,"RawCompletion",m[H].k.I);m[H].k[E].ha=function(a,d,e,f){e=e==c?m[H].a.ka(m[H].k.n,this):e;d=this.ya(d==c?"google.search.BookSearch.RawCompletion":d,e,f);if(a){a=a;if(this.H)a=a+" "+this.H;a="&q="+i(a);if(this.Jb)a+="&as_brr=1";if(this.Gc)a=a+"&as_list="+this.Gc;d+=a;this.u=a}return d};\r
20308 m[H].k[E].C=function(a){a.html&&delete a.html;a.thumbnailHtml=this.hc(a);var d=V(this.ia());Z(d,"gs-result");var e=V("gs-text-box"),f=nb(),h=ob(f,0),l=X(h,"gs-image-box");h=X(h,"gs-text-box");T(l,a.thumbnailHtml[Ca](b));T(h,e);T(d,f);f=Y(a.unescapedUrl,a[Ha],this.s(),"gs-title");T(e,f);f=U(P.by+"&nbsp;"+a.authors,"gs-author");T(e,f);f=V("gs-spacer");T(e,f);if(a.publishedYear){f=U(a.publishedYear,"gs-publishedDate");T(e,f)}if(ca(a.pageCount,10)>0){f=U("-&nbsp;"+P["page-count"](a.pageCount),"gs-pageCount");\r
20309 T(e,f)}f=Y("http://books.google.com","books.google.com",this.s(),"gs-visibleUrl");T(e,f);a.html=d;this.ta(a.html)};O(m[H].k[E],"createResultHtml",m[H].k[E].C);\r
20310 m[H].k[E].hc=function(a){var d=V("gs-image-box gs-book-image-box"),e=V("gs-row-1"),f=qb("http://books.google.com/googlebooks/pages-trans.gif",c,c,"gs-pages");T(e,f);f=qb("http://books.google.com/googlebooks/p_edge-trans.gif",c,c,"gs-page-edge");T(e,f);T(d,e);e=V("gs-row-2");f=m[H].a.$a(a.tbWidth,a.tbHeight,this.M);f=qb(a.tbUrl,f[x],f[Xa],"gs-image");a=rb(a.unescapedUrl,c,this.s(),"gs-image");t(a,"gs-image");T(a,f);T(e,a);T(d,e);return d};\r
20311 m[H].k[E].R=function(a,d){if(a==m[H].a.Db)if(d)if(d==m[H].k.Hd)this.Jb=g;else if(d==m[H].k.Ld)this.Jb=b;else this.R(a,c);else this.Jb=g;else if(a==m[H].k.Pd)this.Gc=d&&d[za](/^[a-zA-Z0-9\-_]*$/)?d:c};O(m[H].k[E],"setRestriction",m[H].k[E].R);m[H].c=function(){m[H].a[I](this);this.we=2;this.w="image";this.Ba="/GimageSearch";this.na="http://images.google.com/images";this.l=this.yc=this.lc=this.rc=this.pc=this.oc=this.qc=this.Ha=c;this.M={width:112,height:84}};N("google.search.ImageSearch",m[H].c);$a(m[H].c,m[H].a);m[H].c.B="GimageSearch";O(m[H].c,"RESULT_CLASS",m[H].c.B);m[H].c.yd="restrict-imagesize";O(m[H].c,"RESTRICT_IMAGESIZE",m[H].c.yd);m[H].c.Se=["icon"];O(m[H].c,"IMAGESIZE_SMALL",m[H].c.Se);m[H].c.Re=["small","medium","large","xlarge"];\r
20312 O(m[H].c,"IMAGESIZE_MEDIUM",m[H].c.Re);m[H].c.Qe=["xxlarge"];O(m[H].c,"IMAGESIZE_LARGE",m[H].c.Qe);m[H].c.Pe=["huge"];O(m[H].c,"IMAGESIZE_EXTRA_LARGE",m[H].c.Pe);m[H].c.vd="restrict-coloration";O(m[H].c,"RESTRICT_COLORIZATION",m[H].c.vd);m[H].c.Kc="mono";O(m[H].c,"COLORIZATION_BLACK_AND_WHITE",m[H].c.Kc);m[H].c.Mc="gray";O(m[H].c,"COLORIZATION_GRAYSCALE",m[H].c.Mc);m[H].c.Lc="color";O(m[H].c,"COLORIZATION_COLOR",m[H].c.Lc);m[H].c.ud="restrict-colorfilter";O(m[H].c,"RESTRICT_COLORFILTER",m[H].c.ud);\r
20313 m[H].c.Vc="red";O(m[H].c,"COLOR_RED",m[H].c.Vc);m[H].c.Sc="orange";O(m[H].c,"COLOR_ORANGE",m[H].c.Sc);m[H].c.Yc="yellow";O(m[H].c,"COLOR_YELLOW",m[H].c.Yc);m[H].c.Rc="green";O(m[H].c,"COLOR_GREEN",m[H].c.Rc);m[H].c.Wc="teal";O(m[H].c,"COLOR_TEAL",m[H].c.Wc);m[H].c.Oc="blue";O(m[H].c,"COLOR_BLUE",m[H].c.Oc);m[H].c.Uc="purple";O(m[H].c,"COLOR_PURPLE",m[H].c.Uc);m[H].c.Tc="pink";O(m[H].c,"COLOR_PINK",m[H].c.Tc);m[H].c.Xc="white";O(m[H].c,"COLOR_WHITE",m[H].c.Xc);m[H].c.Qc="gray";\r
20314 O(m[H].c,"COLOR_GRAY",m[H].c.Qc);m[H].c.Nc="black";O(m[H].c,"COLOR_BLACK",m[H].c.Nc);m[H].c.Pc="brown";O(m[H].c,"COLOR_BROWN",m[H].c.Pc);m[H].c.xd="restrict-filetype";O(m[H].c,"RESTRICT_FILETYPE",m[H].c.xd);m[H].c.bd="jpg";O(m[H].c,"FILETYPE_JPG",m[H].c.bd);m[H].c.cd="png";O(m[H].c,"FILETYPE_PNG",m[H].c.cd);m[H].c.ad="gif";O(m[H].c,"FILETYPE_GIF",m[H].c.ad);m[H].c.$c="bmp";O(m[H].c,"FILETYPE_BMP",m[H].c.$c);m[H].c.zd="restrict-imagetype";O(m[H].c,"RESTRICT_IMAGETYPE",m[H].c.zd);m[H].c.ed="face";\r
20315 O(m[H].c,"IMAGETYPE_FACES",m[H].c.ed);m[H].c.dd="clipart";O(m[H].c,"IMAGETYPE_CLIPART",m[H].c.dd);m[H].c.fd="lineart";O(m[H].c,"IMAGETYPE_LINEART",m[H].c.fd);m[H].c.gd="news";O(m[H].c,"IMAGETYPE_NEWS",m[H].c.gd);m[H].c.hd="photo";O(m[H].c,"IMAGETYPE_PHOTO",m[H].c.hd);m[H].c.td="restrict";O(m[H].c,"RESTRICT",m[H].c.td);m[H].c.wd="cc_attribute";O(m[H].c,"RESTRICT_CREATIVE_COMMONS",m[H].c.wd);m[H].c.n=[];m[H].c.I=function(a,d,e,f,h){var l=0;if(a)l=ca(a,10);a=m[H].c.n[l];m[H].c.n[l]=c;a.W(d,e,f,h)};\r
20316 O(m[H].c,"RawCompletion",m[H].c.I);\r
20317 m[H].c[E].ha=function(a,d,e,f){e=e==c?m[H].a.ka(m[H].c.n,this):e;d=this.ya(d==c?"google.search.ImageSearch.RawCompletion":d,e,f);if(a){a=a;if(this.H)a=a+" "+this.H;a="&q="+i(a);if(this.Ha)a=a+"&safe="+this.Ha;if(this.qc)a=a+"&imgsz="+i(this.qc);if(this.oc)a=a+"&imgc="+i(this.oc);if(this.pc)a=a+"&imgcolor="+i(this.pc);if(this.rc)a=a+"&imgtype="+i(this.rc);if(this.lc)a=a+"&as_filetype="+i(this.lc);if(this.yc)a=a+"&restrict="+i(this.yc);if(this.l)a=a+"&as_sitesearch="+i(this.l);d+=a;this.u=a;if(f&&f!=\r
20318 0)this.u=this.u+"&start="+f}return d};\r
20319 m[H].c[E].C=function(a){a.html&&delete a.html;var d=V(this.ia());Z(d,"gs-result");var e=V("gs-image-box"),f=m[H].a.$a(a.tbWidth,a.tbHeight,this.M),h=qb(a.tbUrl,f[x],f[Xa],"gs-image");h[G].left=(this.M[x]-f[x])/2+"px";s(h,a.titleNoFormatting+" ("+a.visibleUrl+")");f=rb(a.unescapedUrl,c,this.s(),"gs-image");t(f,"gs-image");T(f,h);T(e,f);T(d,e);e=V("gs-text-box");h=U(a[va],"gs-snippet");s(h,a.contentNoFormatting);T(e,h);h=U(a[x]+" x "+a[Xa],"gs-size");T(e,h);h=Y(a.originalContextUrl,a.visibleUrl,this.s(),\r
20320 "gs-visibleUrl");s(h,a.visibleUrl);T(e,h);T(d,e);a.html=d;this.ta(a.html)};O(m[H].c[E],"createResultHtml",m[H].c[E].C);m[H].c[E].qa=function(a){this.l=a};O(m[H].c[E],"setSiteRestriction",m[H].c[E].qa);\r
20321 m[H].c[E].R=function(a,d){if(a==m[H].a.Ub)this.Ha=d?d==m[H].a.Wb||d==m[H].a.Vb?d:c:c;else if(a==m[H].c.yd)this.qc=d?d.join("|"):c;else if(a==m[H].c.vd)this.oc=d?d==m[H].c.Kc||d==m[H].c.Mc||d==m[H].c.Lc?d:c:c;else if(a==m[H].c.ud)this.pc=d?d==m[H].c.Vc||d==m[H].c.Sc||d==m[H].c.Yc||d==m[H].c.Rc||d==m[H].c.Wc||d==m[H].c.Oc||d==m[H].c.Uc||d==m[H].c.Tc||d==m[H].c.Xc||d==m[H].c.Qc||d==m[H].c.Nc||d==m[H].c.Pc?d:c:c;else if(a==m[H].c.xd)this.lc=d?d==m[H].c.bd||d==m[H].c.cd||d==m[H].c.ad||d==m[H].c.$c?d:c:\r
20322 c;else if(a==m[H].c.zd)this.rc=d?d==m[H].c.ed||d==m[H].c.dd||d==m[H].c.fd||d==m[H].c.gd||d==m[H].c.hd?d:c:c;else if(a==m[H].c.td)this.yc=d?d==m[H].c.wd?d:c:c};O(m[H].c[E],"setRestriction",m[H].c[E].R);m[H].e=function(){m[H].a[I](this);this.ba=c;this.aa="San Francisco, CA";this.ea={y:37.77916,x:-122.42009};this.Ra=c;this.qb=b;this.fb=g;this.Za=c;this.Ta=b;this.fa=hb(this,this.oa);this.Sa="gsc-locationConfig";this.w="local";this.Ba="/GlocalSearch";this.na="http://www.google.com/local";this.Pa=this.G=c};N("google.search.LocalSearch",m[H].e);$a(m[H].e,m[H].a);m[H].e.B="GlocalSearch";O(m[H].e,"RESULT_CLASS",m[H].e.B);m[H].e.Kd="blended";O(m[H].e,"TYPE_BLENDED_RESULTS",m[H].e.Kd);m[H].e.Nd="kmlonly";\r
20323 O(m[H].e,"TYPE_KMLONLY_RESULTS",m[H].e.Nd);m[H].e.Od="localonly";O(m[H].e,"TYPE_LOCALONLY_RESULTS",m[H].e.Od);m[H].e.Hc="disabled";O(m[H].e,"ADDRESS_LOOKUP_DISABLED",m[H].e.Hc);m[H].e.Ic="enabled";O(m[H].e,"ADDRESS_LOOKUP_ENABLED",m[H].e.Ic);m[H].e.Ed=17;O(m[H].e,"STATIC_MAP_ZOOM_FARTHEST",m[H].e.Ed);m[H].e.df=4;O(m[H].e,"STATIC_MAP_ZOOM_DEFAULT",m[H].e.df);m[H].e.Dd=0;O(m[H].e,"STATIC_MAP_ZOOM_CLOSEST",m[H].e.Dd);m[H].e.$b=8;O(m[H].e,"STATIC_MAP_MAX_POINTS",m[H].e.$b);m[H].e.cg=3.141592653589;\r
20324 m[H].e.yf=6367E3;m[H].e.Eg=16093;m[H].e.n=[];m[H].e.I=function(a,d,e,f,h){var l=0;if(a)l=ca(a,10);a=m[H].e.n[l];m[H].e.n[l]=c;a.resultViewport=d&&d.viewport?d.viewport:c;a.W(d,e,f,h)};O(m[H].e,"RawCompletion",m[H].e.I);\r
20325 m[H].e[E].ha=function(a,d,e,f){e=e==c?m[H].a.ka(m[H].e.n,this):e;d=this.ya(d==c?"google.search.LocalSearch.RawCompletion":d,e,f);f="";if(a){f="&q="+i(a);d+=f}this.$h=c;if(this.ba){var h;if(this.qb){e=this.ba.getCenterLatLng();h=this.ba.getSpanLatLng();a="&sll="+e.y+","+e.x;a+="&sspn="+h[Xa]+","+h[x]}else{e=this.ba.getCenter();h=this.ba.getBounds().toSpan().toUrlValue();a="&sll="+e.y+","+e.x;a+="&sspn="+h}a+=m[H].e.cc(e.y,e.x);d+=a;f+=a}else if(this.ea){a="&sll="+this.ea.y+","+this.ea.x;if(this.Ra)a=\r
20326 a+"&sspn="+this.Ra.lat+","+this.Ra.lng;a+=m[H].e.cc(this.ea.y,this.ea.x);d+=a;f+=a}else if(this.aa){a="&near="+i(this.aa);d+=a;f+=a}if(this.fb){d+="&nogeocode=t";f+="&nogeocode=t"}if(this.Za){d+="&mrt="+i(this.Za);f+="&mrt="+i(this.Za)}if(f)this.u=f;return d};m[H].e.cc=function(a,d){var e=2*m[H].e.Eg/m[H].e.yf*2*m[H].e.cg,f=d-e,h=a+e;d=d+e;return"&gll="+q[ua]((a-e)*1E6)+","+q[ua](f*1E6)+","+q[ua](h*1E6)+","+q[ua](d*1E6)+"&llsep=500,500"};O(m[H].e,"centerToGll",m[H].e.cc);\r
20327 m[H].e[E].C=function(a){a.html&&delete a.html;var d=V(this.ia());Z(d,"gs-result");var e;e=Y(a.url,a[Ha],this.s(),"gs-title");T(d,e);if(a.listingType=="kml"&&a[va]&&a[va]!=""){e=U(a[va],"gs-snippet");T(d,e)}var f=V("gs-address");if(a.addressLines&&a.addressLines[D]>0)for(var h=0;h<a.addressLines[D];h++){e=a.addressLines[h];var l="gs-addressLine";if(h==0)l="gs-street gs-addressLine";else if(h==1)l="gs-city gs-addressLine";e=U(e,l);T(f,e)}else{e=U(a.streetAddress,"gs-street");T(f,e);h="";if(a.city!=\r
20328 ""){h=a.city;if(a.region!="")h+=", "}e=U(h,"gs-city");T(f,e);e=U(a.region,"gs-region");T(f,e)}e=U(a.country,"gs-country");T(f,e);T(d,f);if(a.phoneNumbers&&a.phoneNumbers[D]){h=f=c;e=a.phoneNumbers[0];for(var n=0;n<a.phoneNumbers[D];n++){l=a.phoneNumbers[n];if(l[Da]=="main"){f=l;break}if(l[Da]==""||l[Da]=="mobile"&&h==c)h=l}l=f?f:h?h:e;e=U(l.number,"gs-phone");T(d,e)}if(a.ddUrl&&a.ddUrl!=""){e=Y(a.ddUrl,P.directions,this.s(),"gs-directions");T(d,e)}if(a.ddUrlToHere&&a.ddUrlToHere!=""&&a.ddUrlFromHere&&\r
20329 a.ddUrlFromHere!=""){e=V("gs-directions-to-from");f=U(P["get-directions"]+":","gs-label");e[v](f);f=Y(a.ddUrlToHere,P["to-here"],this.s(),"gs-secondary-link");e[v](f);f=U("-","gs-spacer");e[v](f);f=Y(a.ddUrlFromHere,P["from-here"],this.s(),"gs-secondary-link");e[v](f);T(d,e)}a.html=d;this.ta(a.html)};O(m[H].e[E],"createResultHtml",m[H].e[E].C);\r
20330 m[H].e[E].Ce=function(a){if(a.centerAndZoom){this.qb=b;this.ba=a;this.ea=c;this.aa="";if(this.G)this.G=c}else if(a.setCenter){this.qb=g;this.ba=a;this.Ra=this.ea=c;this.aa="";if(this.G)this.G=c}else if(a.x&&a.y){this.qb=b;this.ea=a;this.ba=this.Ra=c;this.aa="";if(this.G)this.G=c}else if(a!=c&&a!=""){this.qb=b;this.ba=c;this.aa=a;this.ea=c;if(this.G)this.G=c;var d=new m[H].e;d.zb(this,this.gf,[d,a]);d[L](a)}};O(m[H].e[E],"setCenterPoint",m[H].e[E].Ce);\r
20331 m[H].e[E].gf=function(a,d){if(a.results&&a.results[D]){var e={};e.y=da(a.results[0].lat);e.x=da(a.results[0].lng);this.ea=e;this.aa=d;this.Ta=b;this.ba=c;if(a.resultViewport){d={};d.ph=da(a.resultViewport.span.lat)/2;d.qh=da(a.resultViewport.span.lng)/2;this.Ra=d}}};\r
20332 m[H].e[E].oa=function(a,d){if(d){if(this.G==c){d=c;if(this.ba==c){var e=V("gsc-configSetting");this.G=vb(c,"gsc-configSettingInput",this.aa==""?c:this.aa);T(e,U(P["search-location"],"gsc-configSettingInputLabel"));T(e,this.G);T(a,e);d=this.G}e=V("gsc-configSetting");this.Pa=xb(c,"0",this.fb,"gsc-configSettingCheckbox");T(e,this.Pa);T(e,U(P["disable-address-lookup"],"gsc-configSettingCheckboxLabel"));if(d==c)d=this.Pa;var f=U(c,"gsc-configSettingSubmit");T(f,ub(P[Ra],"gsc-configSettingSubmit"));T(e,\r
20333 f);T(a,e);d[Ba]()}}else{if(this.G){if(this.G[xa]){this.aa=this.G[xa];this.Ce(this.aa)}this.G=c}if(this.Pa){this.fb=this.Pa[Ka];this.Pa=c}ib(a)}};m[H].e[E].lg=function(a){if(a==m[H].e.Hc)this.fb=b;else if(a==m[H].e.Ic)this.fb=g};O(m[H].e[E],"setAddressLookupMode",m[H].e[E].lg);m[H].e.ye=function(a,d,e,f){var h=a.staticMapUrl;h=h[z](/&h=\d*/,"&h="+d);h=h[z](/&w=\d*/,"&w="+e);if(f&&f>=m[H].e.Dd&&f<=m[H].e.Ed)h=h[z](/&zl=\d*/,"&zl="+f);return a.staticMapUrl=h};O(m[H].e,"resizeStaticMapUrl",m[H].e.ye);\r
20334 m[H].e.rf=function(a,d,e,f){var h="",l="http://mt.google.com/mapdata?cc=us&tstyp=5&zl=4&w=150&h=100",n={};n.staticMapUrl=l;l=m[H].e.ye(n,d,e,f);if(f==c)l=l[z](/&zl=\d*/,"");d=a[D];if(d>m[H].e.$b)d=m[H].e.$b;for(e=0;e<d;e++){n=a[e];if(n.lat&&n.lng)if(typeof n.lat=="string"){f=da(n.lat);n=da(n.lng)}else{f=n.lat;n=n.lng}else if(n.x&&n.y){f=n.y;n=n.x}else return c;n=n*1E6;f="&Point=b&Point.latitude_e6=__LAT__&Point.longitude_e6=__LNG__&Point.iconid=__ICONID__&Point=e"[z](/__LAT__/,q[ua](f*1E6));f=f[z](/__LNG__/,\r
20335 q[ua](n));n=51+e;if(d==1)n=15;f=f[z](/__ICONID__/,n);h+=f}return l+h};O(m[H].e,"computeStaticMapUrl",m[H].e.rf);m[H].e[E].R=function(a,d){if(a==m[H].a.Db)if(d){this.Za=c;this.Za=d==m[H].e.Kd||d==m[H].e.Nd||d==m[H].e.Od?d:c}else this.Za=c};O(m[H].e[E],"setRestriction",m[H].e[E].R);m[H].m=function(){m[H].a[I](this);this.w="news";this.Ba="/GnewsSearch";this.na="http://news.google.com/nwshp";this.Nh=c;this.ab="site:";this.N=g;this.Ta=b;this.fa=hb(this,this.oa);this.Sa="gsc-newsConfig";this.F=this.o=c};N("google.search.NewsSearch",m[H].m);$a(m[H].m,m[H].a);m[H].m.B="GnewsSearch";O(m[H].m,"RESULT_CLASS",m[H].m.B);m[H].m.sd="GnewsSearch.quote";O(m[H].m,"QUOTE_RESULT_CLASS",m[H].m.sd);m[H].m.n=[];\r
20336 m[H].m.I=function(a,d,e,f,h){var l=0;if(a)l=ca(a,10);a=m[H].m.n[l];m[H].m.n[l]=c;a.W(d,e,f,h)};O(m[H].m,"RawCompletion",m[H].m.I);\r
20337 m[H].m[E].ha=function(a,d,e,f){e=e==c?m[H].a.ka(m[H].m.n,this):e;d=this.ya(d==c?"google.search.NewsSearch.RawCompletion":d,e,f);if(a||!a&&this.F){e=c;if(a)e=a;if(this.H)e=e==c?this.H:e+" "+this.H;if(this.l)e=e==c?this.ab+this.l:e+" "+this.ab+this.l;a=e?"&q="+i(e):"";if(this.N)a+="&scoring=d";if(this.F){e="";for(var h in this.F)if(h.charAt(0)==":")e+="&"+this.F[h];a+=e}if(this.l&&this.ab=="source:")d=d[z](/&hl=.*&/,"&hl=en&");d+=a;this.u=a;if(f&&f!=0)this.u=this.u+"&start="+f}return d};\r
20338 m[H].m[E].C=function(a){a.html&&delete a.html;if(a.GsearchResultClass!=m[H].m.sd){var d=V(this.ia());Z(d,"gs-result");var e;e=Y(a.unescapedUrl,a[Ha],this.s(),"gs-title");T(d,e);e=U(a.publisher,"gs-publisher");T(d,e);e=a[Pa][Na](",");if(e[D]>1){e=U(", "+e[e[D]-1],"gs-location");T(d,e)}e=new Date(a.publishedDate);e=U(" - "+this.Va(e),"gs-publishedDate");T(d,e);e=new Date(a.publishedDate);e=U(" - "+this.mc(e),"gs-relativePublishedDate");T(d,e);e=U(a[va],"gs-snippet");T(d,e);if(a.clusterUrl&&a.clusterUrl!=\r
20339 ""){e=Y(a.clusterUrl,P["related-articles"]+"&nbsp;&raquo;",this.s(),"gs-clusterUrl");T(d,e)}a.html=d;this.ta(a.html)}};O(m[H].m[E],"createResultHtml",m[H].m[E].C);m[H].m[E].qa=function(a){if(a==c||a==""){this.l=c;this.ab="site:"}else if(a[za]("[./:]")){this.ab="site:";this.l=a}else{this.ab="source:";this.l=a[z](/\s/g,"_")}};O(m[H].m[E],"setSiteRestriction",m[H].m[E].qa);m[H].m[E].K=function(a){this.N=a==m[H].a.ma?b:g};O(m[H].m[E],"setResultOrder",m[H].m[E].K);\r
20340 m[H].m[E].oa=function(a,d){if(d){if(this.o==c){d=V("gsc-configSetting");this.o=xb(c,"0",this.N,"gsc-configSettingCheckbox");T(d,this.o);T(d,U(P["sort-by-date"],"gsc-configSettingCheckboxLabel"));var e=V("gsc-configSettingSubmit");T(e,ub(P[Ra],"gsc-configSettingSubmit"));T(d,e);T(a,d)}else na(this.o,this.N);this.o[Ba]()}else if(this.o)this.o[Ka]?this.K(m[H].a.ma):this.K(m[H].a.eb)};m[H].m[E].jf={geo:b,qsid:b,quotesearch:b,topic:b,ned:b,scoring:b,as_mind:b,as_minm:b,as_miny:b,as_maxd:b,as_maxm:b,as_maxy:b};\r
20341 m[H].m[E].R=function(a,d){if(a==m[H].a.Na)if(d)for(var e in d){a=d[e];if(typeof this.jf[e]!="undefined"){this.F=this.F||{};this.F[":"+e]=e+"="+i(a)}}else this.F=c};O(m[H].m[E],"setRestriction",m[H].m[E].R);m[H].h=function(){m[H].a[I](this);this.w="patent";this.Ba="/GpatentSearch";this.na="http://www.google.com/patents";this.Je="";this.tb=c;this.Ta=b;this.fa=hb(this,this.oa);this.Sa="gsc-patentConfig";this.o=c};N("google.search.PatentSearch",m[H].h);$a(m[H].h,m[H].a);m[H].h.B="GpatentSearch";O(m[H].h,"RESULT_CLASS",m[H].h.B);m[H].h.Id=1;O(m[H].h,"TYPE_ANY_STATUS",m[H].h.Id);m[H].h.Md=2;O(m[H].h,"TYPE_ISSUED_PATENTS",m[H].h.Md);m[H].h.Jd=3;O(m[H].h,"TYPE_APPLICATIONS",m[H].h.Jd);m[H].h.n=[];\r
20342 m[H].h.I=function(a,d,e,f,h){var l=0;if(a)l=ca(a,10);a=m[H].h.n[l];m[H].h.n[l]=c;a.W(d,e,f,h)};O(m[H].h,"RawCompletion",m[H].h.I);m[H].h[E].ha=function(a,d,e,f){e=e==c?m[H].a.ka(m[H].h.n,this):e;d=this.ya(d==c?"google.search.PatentSearch.RawCompletion":d,e,f);if(a){a=a;if(this.H)a=a+" "+this.H;a="&q="+i(a)+this.Je;if(this.tb)a+=this.tb;d+=a;this.u=a}return d};\r
20343 m[H].h[E].C=function(a){a.html&&delete a.html;a.thumbnailHtml=this.hc(a);var d=V(this.ia());Z(d,"gs-result");var e=V("gs-text-box"),f=nb(),h=ob(f,0),l=X(h,"gs-image-box");h=X(h,"gs-text-box");T(l,a.thumbnailHtml[Ca](b));T(h,e);T(d,f);l=Y(a.unescapedUrl,a[Ha],this.s(),"gs-title");T(e,l);f=V("gs-patent-info gs-metadata");T(e,f);l=c;l=a.patentNumber?a.patentStatus=="issued"?P["us-pat"]+"&nbsp;"+a.patentNumber:P["us-pat-app"]+"&nbsp;"+a.patentNumber:P["us-pat-app"]+"&nbsp; N/A";l=U(l,"gs-patent-number");\r
20344 T(f,l);if(a.applicationDate){l=U(" - "+this.Va(new Date(a.applicationDate)),"gs-publishedDate");T(f,l)}if(a.assignee){l=U(" - "+a.assignee,"gs-author");T(f,l)}l=U(a[va],"gs-snippet");T(e,l);T(e,l);a.html=d;this.ta(a.html)};O(m[H].h[E],"createResultHtml",m[H].h[E].C);m[H].h[E].hc=function(a){var d=V("gs-patent-image"),e=qb(a.tbUrl,75,100,"gs-image");a=rb(a.unescapedUrl,c,this.s(),"gs-image");t(a,"gs-image");T(a,e);T(d,a);return d};\r
20345 m[H].h[E].K=function(a){this.tb=a==m[H].a.ma?"&scoring=d":a==m[H].a.rd?"&scoring=ad":c};O(m[H].h[E],"setResultOrder",m[H].h[E].K);m[H].h[E].R=function(a,d){if(a==m[H].a.Db)this.Je=d?d==m[H].h.Id?"":d==m[H].h.Md?"&as_psrg=1":d==m[H].h.Jd?"&as_psra=1":"":""};O(m[H].h[E],"setRestriction",m[H].h[E].R);\r
20346 m[H].h[E].oa=function(a,d){if(d){var e=g;if(this.tb&&this.tb=="&scoring=d")e=b;if(this.o==c){d=V("gsc-configSetting");this.o=xb(c,"0",e,"gsc-configSettingCheckbox");T(d,this.o);T(d,U(P["sort-by-date"],"gsc-configSettingCheckboxLabel"));e=V("gsc-configSettingSubmit");T(e,ub(P[Ra],"gsc-configSettingSubmit"));T(d,e);T(a,d)}else na(this.o,e);this.o[Ba]()}else if(this.o)this.o[Ka]?this.K(m[H].a.ma):this.K(m[H].a.eb)};m[H].A=function(){this.xe=this.$=m[H].b.Da;this.i=c;this.M={width:112,height:84};this.Tb={width:100,height:75};this.rb=c};N("google.search.SearcherOptions",m[H].A);m[H].A[E].Ee=function(a){switch(a){case m[H].b.Zc:case m[H].b.La:case m[H].b.Da:this.$=a;break;default:this.$=m[H].b.Da;break}this.xe=this.$};O(m[H].A[E],"setExpandMode",m[H].A[E].Ee);m[H].A[E].tg=function(a){ib(a);this.i=a};O(m[H].A[E],"setRoot",m[H].A[E].tg);m[H].A[E].yb=function(a){this.rb=a};O(m[H].A[E],"setNoResultsString",m[H].A[E].yb);\r
20347 m[H].A[E].ng=function(a){if(a>100)a=100;u(this.M,a);ja(this.M,q[ta](a*1.33))};O(m[H].A[E],"setImageResultsTbHeight",m[H].A[E].ng);m[H].A[E].zg=function(a){if(a>100)a=100;u(this.Tb,a);ja(this.Tb,q[ta](a*1.33))};O(m[H].A[E],"setVideoResultsTbHeight",m[H].A[E].zg);m[H].T=function(){ia(this,c);this.Ie=c;this.Z=m[H].b.ra};N("google.search.DrawOptions",m[H].T);m[H].T[E].og=function(a){ia(this,a)};O(m[H].T[E],"setInput",m[H].T[E].og);\r
20348 m[H].T[E].ug=function(a){if(a&&typeof a=="string")a=p.getElementById(a);this.Ie=a};O(m[H].T[E],"setSearchFormRoot",m[H].T[E].ug);m[H].T[E].De=function(a){this.Z=a==m[H].b.ra||a==m[H].b.Ka?a:m[H].b.ra};O(m[H].T[E],"setDrawMode",m[H].T[E].De);\r
20349 m[H].z=function(a,d,e){this.t=e;this.fc=this.kc=g;this.f=a;this.v=c;this.hg=R(d,m[H].b[E].bg,[this]);this.kg=R(d,m[H].b[E].wc,[this,m[H].z.Zb]);this.jg=R(d,m[H].b[E].wc,[this,m[H].z.Yb]);this.ig=R(d,m[H].b[E].wc,[this,m[H].z.Cd]);this.gg=R(d,m[H].b[E].ag,[this]);this.fg=R(d,m[H].b[E].Xf,[this]);this.f.zb(d,m[H].b[E].W,[this]);this.f.S(d.Mb);this.f.xb(d.Fa);this.Q=this.Ua=this.va=this.zc=this.nb=this.Rb=this.i=c;this.pb=b};m[H].z.Xb=0;m[H].z.Zb=1;m[H].z.Yb=2;m[H].z.Cd=3;\r
20350 m[H].z[E].Dc=function(a){var d="gsc-results-selector ";d+=a==m[H].z.Xb?this.t.$==m[H].b.Da?"gsc-one-result-active":this.f.za==m[H].a.X?"gsc-more-results-active":"gsc-all-results-active":a==m[H].z.Zb?"gsc-one-result-active":a==m[H].z.Yb?"gsc-more-results-active":"gsc-all-results-active";t(this.zc,d)};\r
20351 m[H].b=function(a){if(!m[J].KeyVerified)if(m[H].b.ue())m[J].KeyVerified=b;else return;this.Vd=this.Mb=m[H].a.X;this.Z=m[H].b.ra;this.Nb=this.i=c;ia(this,c);this.Qb=m[H].b.Eb;this.Of=R(this,m[H].b[E].Yf,[c]);this.Pf=R(this,m[H].b[E].Zf,[c]);this.Xa=this.ub=this.Bc=this.Lb=c;this.gb=this.Uf=g;this.Fa=m[H].a.db;this.sc=P.copy;this.d=[];this.Qg=[];var d;if(a)for(var e=0;e<a[D];e++){d=new m[H].z(a[e],this,g);this.d[ra](d)}};N("google.search.SearchControl",m[H].b);m[H].b.qd=P["no-results"];\r
20352 O(m[H].b,"NO_RESULTS_DEFAULT_STRING",m[H].b.qd);m[H].b.Gd=350;O(m[H].b,"TIMEOUT_SHORT",m[H].b.Gd);m[H].b.Eb=500;O(m[H].b,"TIMEOUT_MEDIUM",m[H].b.Eb);m[H].b.Fd=700;O(m[H].b,"TIMEOUT_LONG",m[H].b.Fd);m[H].b.Zc=1;O(m[H].b,"EXPAND_MODE_CLOSED",m[H].b.Zc);m[H].b.La=2;O(m[H].b,"EXPAND_MODE_OPEN",m[H].b.La);m[H].b.Da=3;O(m[H].b,"EXPAND_MODE_PARTIAL",m[H].b.Da);m[H].b.ra=1;O(m[H].b,"DRAW_MODE_LINEAR",m[H].b.ra);m[H].b.Ka=2;O(m[H].b,"DRAW_MODE_TABBED",m[H].b.Ka);m[H].b.nd="save";\r
20353 O(m[H].b,"KEEP_LABEL_SAVE",m[H].b.nd);m[H].b.md="keep";O(m[H].b,"KEEP_LABEL_KEEP",m[H].b.md);m[H].b.ld="include";O(m[H].b,"KEEP_LABEL_INCLUDE",m[H].b.ld);m[H].b.kd="copy";O(m[H].b,"KEEP_LABEL_COPY",m[H].b.kd);m[H].b.jd="blank";O(m[H].b,"KEEP_LABEL_BLANK",m[H].b.jd);try{m[H].b.appPath=k[Pa].href}catch(Lb){m[H].b.appPath=c}\r
20354 m[H].b.ue=function(){var a=b,d;d=k[Pa].host[Ya]()[Na](".");if(d[D]<2)d=g;else{var e=d.pop(),f=d.pop();if((f=="igoogle"||f=="gmodules"||f=="googlesyndication")&&e=="com")d=b;else{if(e[D]==2&&d[D]>0)if(Cb[f]&&Cb[f][e]==1)f=d.pop();d=f=="google"}}if(d)return b;if(m[J].LoadFailure)if(m[J].OriginalAppPath&&m[H].b.appPath){m[J].LoadFailure=g;a=b}m[J].KeyVerified=b;m[J].LoadFailure=g;return a};O(m[H].b,"keyCheck",m[H].b.ue);\r
20355 m[H].b[E].jb=function(a,d){this.ua=b;this.Qa=a;if(d){if(d.includeVerticalAds!=o)this.Ca=d.includeVerticalAds;if(d.includeSideAds!=o)this.Ca=d.includeSideAds;if(d.iframes!=o)this.mb=d.iframes;if(d.useNarrowTopAd!=o)if(this.mb)this.Ig=d.useNarrowTopAd;if(d.channel)this.Sd=d.channel;if(d.clientIP)this.Td=d.clientIP;if(d.safe)this.Ud=d.safe;if(d[Oa])this.Wd=d[Oa];if(a=d.adtest||d.debug)this.ac=a;if(d.numTopAds!=o){this.Ga=d.numTopAds;this.Ga=q.max(0,q.min(4,this.Ga))}if(d.numSideAds!=o){this.xa=d.numSideAds;\r
20356 this.Ca=(this.xa=q.max(0,q.min(8,this.xa)))?b:g}this.Be=d.enableSearchCompleteCallback?b:g}m[J][Ea]("hl","afs_ads")};O(m[H].b[E],"enableAds",m[H].b[E].jb);m[H].b[E].Oa=function(a,d){d||(d=new m[H].A);a.pa=c;this.d[ra](new m[H].z(a,this,d));if(this.vb(a))this.Jf=b;a.wb="gsc"};O(m[H].b[E],"addSearcher",m[H].b[E].Oa);\r
20357 m[H].b[E].ce=function(a){if(this.d[a].t.i){this.d[a].pb=g;this.d[a].i=this.d[a].t.i;Z(this.d[a].i,"gsc-resultsRoot");$(this.d[a].i,"gsc-resultsbox-visible");Z(this.d[a].i,"gsc-resultsbox-invisible")}else this.d[a].i=V("gsc-resultsRoot");this.d[a].f.Cb&&wb(this.d[a].i,"gsc-resultsRoot-"+this.d[a].f.Cb);if(this.Z==m[H].b.Ka)this.p[a].ga=this.d[a].i;var d=nb(c,c,"gsc-resultsHeader"),e=ob(d,0);this.d[a].Ja=X(e,"gsc-twiddleRegionCell");e=X(e,"gsc-configLabelCell");this.d[a].Rb=U("","gsc-twiddle");T(this.d[a].Ja,\r
20358 this.d[a].Rb);var f=lb(this.d[a].f.Ff(),"gsc-title");T(this.d[a].Rb,f);this.d[a].nb=U("","gsc-stats");T(this.d[a].Ja,this.d[a].nb);f=U();var h=U(P.blank,"gsc-result-selector gsc-one-result"),l=U(P.blank,"gsc-result-selector gsc-more-results"),n=U(P.blank,"gsc-result-selector gsc-all-results");s(h,P["show-one-result"]);s(l,P["show-more-results"]);s(n,P["show-all-results"]);T(f,h);T(f,l);T(f,n);oa(h,this.d[a].kg);oa(l,this.d[a].jg);oa(n,this.d[a].ig);this.d[a].zc=f;this.d[a].Dc(m[H].z.Xb);T(this.d[a].Ja,\r
20359 this.d[a].zc);oa(this.d[a].Rb,this.d[a].hg);if(this.d[a].f.fa){this.d[a].P=mb("","gsc-configLabel");r(this.d[a].P,P.blank);Z(this.d[a].P,"gsc-twiddle-closed");T(e,this.d[a].P);oa(this.d[a].P,this.d[a].gg);s(this.d[a].P,P.settings);this.d[a].va=V("gsc-config");Z(this.d[a].va,this.d[a].f.Sa);this.d[a].Ua=tb("gsc-config");Z(this.d[a].Ua,this.d[a].f.Sa);this.d[a].Ua.onsubmit=this.d[a].fg;T(this.d[a].va,this.d[a].Ua);pa(this.d[a].va[G],"none")}this.d[a].Q=V("gsc-results");e=this.d[a].f.nc();Z(this.d[a].Q,\r
20360 e);this.d[a].t.i==c&&T(this.Aa,this.d[a].i);T(this.d[a].i,d);this.d[a].va&&T(this.d[a].i,this.d[a].va);T(this.d[a].i,this.d[a].Q)};m[H].b[E].de=function(a){var d=this.d[a],e={},f=d.f.Hf();e.V=lb(f);e.ga=c;e.Cc=d.f;e.w=d.f.w;oa(e.V,R(this,this.Dg,[a]));this.p[a]=e;T(this.ca,e.V);a="gs-spacer";if(bb("opera"))a+=" gs-spacer-opera";a=mb(" ",a);T(this.ca,a);d.t.Ee(m[H].b.La)};\r
20361 m[H].b[E].Ib=function(a,d){var e=c,f=c;if(d)if(d.Z){this.Z=d.Z;e=d[w];f=d.Ie}else this.Z=m[H].b.ra;else this.Z=m[H].b.ra;this.i=V("gsc-control");if(e!=c){ia(this,e);this[w].onkeyup=this.Of;this[w].onpaste=this.Pf}else{if(f==c)f=this.i;d=new m[H].L(b,f);d.Ge(this,this.submit);d.Fe(this,this.dc);ia(this,d[w]);this.kb&&d.Kf()}this.Aa=V("gsc-resultsbox-invisible");if(this.Z==m[H].b.Ka){this.ca=V("gsc-tabsAreaInvisible");T(this.i,this.ca);this.p=[];for(d=this.J=0;d<this.d[D];d++)this.de(d)}this.da=this.i;\r
20362 if(this.ua){this.da=V("gsc-wrapper");this.O=V("gsc-adBlockInvisible");this.U=V("gsc-adBlockInvisible");T(this.da,this.O);T(this.i,this.U);T(this.i,this.da);this.ac&&wb(this.i,"gsc-ad-preview")}T(this.da,this.Aa);for(d=0;d<this.d[D];d++){this.ce(d);if(this.Z==m[H].b.Ka){Z(this.p[d].V,"gsc-tabHeader");Z(this.p[d].ga,"gsc-tabData");if(d==this.J){Z(this.p[d].V,"gsc-tabhActive");Z(this.p[d].ga,"gsc-tabdActive")}else{Z(this.p[d].V,"gsc-tabhInactive");Z(this.p[d].ga,"gsc-tabdInactive")}}}if(a&&typeof a==\r
20363 "string")a=p.getElementById(a);if(a){jb(a,this.i);if((a=this.Df())&&a<300){this.Uf=b;Z(this.i,"gsc-narrow")}}};O(m[H].b[E],"draw",m[H].b[E].Ib);m[H].b[E].xg=function(a){switch(a){case m[H].b.Gd:case m[H].b.Eb:case m[H].b.Fd:this.Qb=a;break;default:this.Qb=m[H].b.Eb;break}};O(m[H].b[E],"setTimeoutInterval",m[H].b[E].xg);m[H].b[E].rg=function(a,d,e){if(e)switch(e){case m[H].b.nd:case m[H].b.md:case m[H].b.ld:case m[H].b.kd:case m[H].b.jd:this.sc=P[e];break;default:this.sc=e;break}this.Lb=hb(a,d)};\r
20364 O(m[H].b[E],"setOnKeepCallback",m[H].b[E].rg);M=m[H].b[E];M.vb=function(a){var d=a.w;if(this.kb){if(d=="web"&&a.D!=m[H].g.Y)return g;return b}else return d=="blog"||d=="image"?b:g};\r
20365 M.Dg=function(a){if(this.J!=a){$(this.p[this.J].V,"gsc-tabhActive");$(this.p[this.J].ga,"gsc-tabdActive");Z(this.p[this.J].V,"gsc-tabhInactive");Z(this.p[this.J].ga,"gsc-tabdInactive");this.J=a;Z(this.p[this.J].V,"gsc-tabhActive");Z(this.p[this.J].ga,"gsc-tabdActive");$(this.p[this.J].V,"gsc-tabhInactive");$(this.p[this.J].ga,"gsc-tabdInactive");if(this.ua)this.vb(this.p[this.J].Cc)?this.ob():this.fe()}};\r
20366 M.ob=function(){if(this.ua){t(this.O,"gsc-adBlockInvisible");t(this.U,"gsc-adBlockInvisible");this.Ca&&zb(this.da,"gsc-thinWrapper")}};M.fe=function(){if(this.ua){this.vc>0?yb(this.O,"gsc-adBlock"):yb(this.O,"gsc-adBlockInvisible");if(this.Ca)if(this.uc>0){t(this.U,"gsc-adBlockVertical");Z(this.da,"gsc-thinWrapper")}else{t(this.U,"gsc-adBlockInvisible");$(this.da,"gsc-thinWrapper")}}};M.submit=function(){this[w][xa][D]?this[L]():this.dc();return g};O(m[H].b[E],"submit",m[H].b[E].submit);M=m[H].b[E];\r
20367 M.Hb=function(){if(this.ca&&!this.Cg&&(!this.kb||this.Rd))t(this.ca,"gsc-tabsArea")};M.Mf=function(a,d,e){d[v](a);(new Mb(e,"parent",a)).sf()};M.Nf=function(a,d,e){var f=k;(f.postMessage?f:f[Ma].postMessage?f[Ma]:c)?this.lf(a,e):this.kf(a,e);d[v](a)};M.re=function(a,d,e){t(e,"gsc-adBlockNoHeight");d=this.Fb.Jg(this.tf(a,d,e));var f;if(f=k[Wa]?k[Wa][Oa]:c){f=Nb(f);var h=k[Wa]?k[Wa][Oa]:c;f=(h?h[ya]("Opera")!=0&&h[ya]("MSIE")!=-1:g)&&(f==6||f==7)}else f=g;f&&!Ob()?this.Mf(a,e,d):this.Nf(a,e,d)};\r
20368 qa(M,function(a){if(a){a=a;this[w].onfocus&&this[w].onfocus();ka(this[w],a)}else a=this[w][xa];this.Fb=c;if(a[D]){this.gb=g;t(this.Aa,"gsc-resultsbox-visible");this.Hb();this.Wa=m[J].createGuidArg_();var d=this.ua;if(d&&this.Jf&&this.Z==m[H].b.ra)d=g;var e=this.Qf();if(e==o&&!this.Qa&&!this.mb)d=g;if(d){this.mg();d="w"+this.Ga;if(this.Ca)d=d+"n"+this.xa;if(this.mb){d="w"+this.Ga;d=m[J][Fa]+"/GafsAds?q="+i(a)+"&hl="+i(m[H][K])+"&ad="+i(d)+"&source="+this.d[0].f.wb+"&"+this.Wa}else d="http://www.google.com/"+\r
20369 (e?"cse":"search")+"?output=js&num=0&ie=utf8&oe=utf8&q="+i(a)+"&hl="+i(m[H][K])+"&ad="+i(d)+"&js=uds&"+this.Wa;if(e)d+="&cx="+e;if(this.Qa)d+="&client="+i(this.Qa);if(this.Sd)d+="&channel="+i(this.Sd);if(this.ac)d+="&adtest=on";if(this.Td)d+="&ip="+i(this.Td);if(this.Ud)d+="&adsafe="+i(this.Ud);if(this.Wd)d+="&useragent="+i(this.Wd);if(this.mb){ma(this.Aa[G],"hidden");this.Fb=new m[H].cb;this.ob();r(this.O,"");r(this.U,"");if(fb()||gb())d+="&nocache="+_json_cache_defeater_++;d+="&referer="+k[Pa].host;\r
20370 if(this.Ga>0){if(this.Ig)d=d[z](/&ad=[^&]*/,"&ad=n1w0");var f=this.je();e=d.substring(0,2E3);e=e[z](/%\w?$/,"");f.src=e;this.re(f,g,this.O)}if(this.Ca&&this.xa>0){e=d[z](/&ad=[^&]*/,"&ad="+("n"+this.xa));d=this.je();e=e.substring(0,2E3);e=e[z](/%\w?$/,"");d.src=e;this.re(d,b,this.U)}}else{var h=this;k.google_afs_request_done=function(l){h.Wf(l)};eb(d)}}for(e=0;e<this.d[D];e++){if(!this.d[e].pb){$(this.d[e].i,"gsc-resultsbox-invisible");Z(this.d[e].i,"gsc-resultsbox-visible")}this.Bc&&this.Bc(this,\r
20371 this.d[e].f,a);if(this.d[e].f.pa)this.d[e].f.pa=c;this.d[e].f.Wa=this.Wa;this.d[e].f[L](a)}this.Fb&&this.Fb.start(2E3)}});O(m[H].b[E],"execute",m[H].b[E][L]);M=m[H].b[E];M.tf=function(a,d,e){var f=this;return function(h){m[J][Ea]("afsq","1");var l=h&&h>40;if(d)f.uc=l?1:0;else f.vc=l?1:0;f.Sf(a,h,l);if(f.ca)if(f.vb(f.p[f.J].Cc))l=g;l?f.fe():yb(e,"gsc-adBlockInvisible")}};\r
20372 M.kf=function(a,d){var e=function(){var f=0;try{var h=a.contentWindow;if(h.frames&&h.frames[D])f=h.frames[0].name}catch(l){}d(f)};if(fb())ha(a,function(){if(a[Aa]=="loaded"||a[Aa]=="complete"){ha(a,c);e()}});else ga(a,function(){ga(a,c);e()})};\r
20373 M.lf=function(a,d){var e=function(f){f=f?f:k[Za];if(f.source==a.contentWindow){if(k.detachEvent)k.detachEvent("onmessage",e);else k.removeEventListener&&k.removeEventListener("message",e,g);d(f.data)}};if(k.attachEvent)k.attachEvent("onmessage",e);else k.addEventListener&&k.addEventListener("message",e,g)};\r
20374 M.je=function(){var a=p[A]("iframe");a.name="google_afs_ads_frame";u(a,0);a.frameBorder=0;a.marginWidth=0;a.marginHeight=0;a.vspace=0;a.hspace=0;a[C]("allowTransparency",b);a.scrolling="no";ma(a[G],"hidden");return a};M.Sf=function(a,d,e){ja(a,"100%");if(e){u(a[G],d+"px");ma(a[G],"visible")}else{u(a[G],"0px");ma(a[G],"hidden")}};M.Qf=function(){for(var a=0;a<this.d[D];a++){var d=this.d[a].f;if(d.w=="web")if(d.D!=m[H].g.Y)if(d.D==m[H].g.ib)return d.l}return c};\r
20375 M.Wf=function(a){k.google_afs_request_done=c;if(this.O){m[J][Ea]("afsq","1");r(this.O,"");r(this.U,"");this.vc=this.uc=0;if(!a||a[D]<1)this.ob();else{if(!this.ca)for(var d=0;d<this.d[D];d++){var e=this.d[d].f;if(this.vb(e)){this.ob();return}}t(this.O,"gsc-adBlock");e=g;var f=p[A]("h2");d="";if(this.ac)d="*DEBUG* ";d+=P["ads-by-google"];r(f,d);T(this.O,f);var h=a[D];for(d=0;d<h;d++){var l=a[d];if(l[Da]=="text/wide"){this.vc++;var n=V("gsc-ad"),y=Y(l.url,l.line1,m[H].a.db);T(n,y);y=p[A]("cite");r(y,\r
20376 l.visible_url);T(n,y);y=mb();r(y,l.line2);T(n,y);T(this.O,n)}else if(this.Ca){this.uc++;if(!e){e=b;Z(this.da,"gsc-thinWrapper");T(this.U,f[Ca](b));t(this.U,"gsc-adBlockVertical")}n=V("gsc-ad");y=Y(l.url,l.line1,m[H].a.db);T(n,y);y=mb();r(y,l.line2+"<br/>"+l.line3);T(n,y);y=p[A]("cite");r(y,l.visible_url);T(n,y);T(this.U,n)}}this.Ca&&!e&&zb(this.da,"gsc-thinWrapper");if(this.ca){e=this.p[this.J].Cc;this.vb(e)&&this.ob()}this.ub&&this.Be&&this.ub(this,"ads")}}};\r
20377 M.Yf=function(){var a=this[w][xa];if(a&&a!=""){this.Xa&&k[sa](this.Xa);this.Xa=k[La](R(this,m[H].b[E][L],[c]),this.Qb)}};M.Zf=function(){this.Xa&&k[sa](this.Xa);this.Xa=k[La](R(this,m[H].b[E][L],[c]),this.Qb)};M.mg=function(){var a,d;switch(this.Vd){case m[H].a.Ma:a=3;d=5;break;case m[H].a.la:a=2;d=4;break;case m[H].a.X:default:a=1;d=2;break}if(this.Ga==o)this.Ga=a;if(this.xa==o)this.xa=d};\r
20378 M.S=function(a){switch(a){case m[H].a.la:case m[H].a.Ma:this.Mb=m[H].a.la;break;default:case m[H].a.X:this.Mb=m[H].a.X;break}for(var d=0;d<this.d[D];d++)this.d[d].f.S(a);this.Vd=a};O(m[H].b[E],"setResultSetSize",m[H].b[E].S);m[H].b[E].xb=function(a){this.Fa=a;for(var d=0;d<this.d[D];d++)this.d[d].f.xb(a)};O(m[H].b[E],"setLinkTarget",m[H].b[E].xb);m[H].b[E].yb=function(a){for(var d=0;d<this.d[D];d++)this.d[d].t.yb(a)};O(m[H].b[E],"setNoResultsString",m[H].b[E].yb);M=m[H].b[E];\r
20379 M.bg=function(a){a.kc?this.Ia(a,g):this.Ia(a,b)};M.Ia=function(a,d,e){if(d){$(a.Ja,"gsc-twiddle-closed");Z(a.Ja,"gsc-twiddle-opened");a.kc=b;pa(a.Q[G],"block")}else{$(a.Ja,"gsc-twiddle-opened");Z(a.Ja,"gsc-twiddle-closed");a.kc=g;pa(a.Q[G],"none");r(a.nb,e?"(0)":"("+a.f.results[D]+")")}};M.Xf=function(a){this.Ab(a,g,b);return g};M.ag=function(a){if(a.f.Ta)a.fc?this.Ab(a,g,b):this.Ab(a,b,b)};\r
20380 M.Ab=function(a,d,e){if(d){if(a.P&&a.f.fa){Z(a.P,"gsc-twiddle-opened");$(a.P,"gsc-twiddle-closed");r(a.P,P[Ra]);a.fc=b;pa(a.va[G],"block");a.f.fa(a.Ua,b)}}else if(a.P&&a.f.fa){$(a.P,"gsc-twiddle-opened");Z(a.P,"gsc-twiddle-closed");r(a.P,P.blank);a.fc=g;a.f.fa(a.Ua,g);pa(a.va[G],"none");e&&this[L]()}};M.$f=function(a,d){if(this.Lb){d.f.Lf();this.Lb(a)}};M.mf=function(){this.gb=b};O(m[H].b[E],"cancelSearch",m[H].b[E].mf);\r
20381 m[H].b[E].dc=function(){ka(this[w],"");this[w].onblur&&this[w].onblur();t(this.Aa,"gsc-resultsbox-invisible");this.ca&&yb(this.ca,"gsc-tabsAreaInvisible");this.O&&yb(this.O,"gsc-adBlockInvisible");if(this.U){t(this.U,"gsc-adBlockInvisible");$(this.da,"gsc-thinWrapper")}for(var a=0;a<this.d[D];a++){if(!this.d[a].pb){$(this.d[a].i,"gsc-resultsbox-visible");Z(this.d[a].i,"gsc-resultsbox-invisible")}var d=this.d[a];ib(d.Q);d.v=c;this.Ia(d,g,b);this.Ab(d,g,g)}};O(m[H].b[E],"clearAllResults",m[H].b[E].dc);\r
20382 m[H].b[E].W=function(a){if(this.mb&&a==this.d[this.J])ma(this.Aa[G],"visible");var d,e,f=g,h;if(!this.gb){ib(a.Q);a.v=c;this.Ia(a,g,b);this.Ab(a,g,g);a.Dc(m[H].z.Xb);var l=a.f.context,n=this.ca&&l;if(this.kb&&!this.Rd){if(n){h=l[Ha];for(e=0;e<this.p[D];e++){d=this.p[e];if(d.w==a.f.w){var y=a.f;h&&!a.f.bb&&jb(d.V,kb(h));break}}}this.Rd=b;this.Hb()}if((d=a.f.promotions)&&d[D]>0)for(e=0;e<d[D];e++){var B=d[e];B.html||a.f.be(B);if(B.html){h=V(a.f.nc());Z(h,"gsc-result");var W=B.html[Ca](b);T(h,W);T(a.Q,\r
20383 h)}}B=a.f.results;if(a.f.lb&&a.f.completionStatus>=400){B=[];B[ra](a.f.Af())}else if(B[D]==0&&a.t.rb&&a.f.completionStatus==200){B=[];B[ra](a.f.Bf(a.t.rb))}for(e=0;e<B[D];e++){d=B[e];d.html||a.f.C(d);if(d.html){f=b;h=V(a.f.nc());Z(h,"gsc-result");a.f.Cb&&wb(h,"gsc-result-"+a.f.Cb);W=d.html[Ca](b);if(d.GsearchResultClass==m[H].c.B){if(a.t.M)if(a.t.M[x]!=a.f.M[x]||a.t.M[Xa]!=a.f.M[Xa])for(var S=W.getElementsByTagName("img"),wa=0;wa<S[D];wa++)m[H].a.$a(d.tbWidth,d.tbHeight,a.t.M,S[wa],b)}else if(d.GsearchResultClass==\r
20384 m[H].r.B)if(a.t.Tb){S=W.getElementsByTagName("img");for(wa=0;wa<S[D];wa++)m[H].a.$a(d.tbWidth,d.tbHeight,a.t.Tb,S[wa])}T(h,W);if(this.Lb){W=this.sc;S=U("","gsc-keeper");r(S,W);T(h,S);oa(S,R(this,m[H].b[E].$f,[d,a]))}if(e>=a.f.we){if(!a.v){a.v=V("gsc-expansionArea");T(a.Q,a.v);if(a.t.$==m[H].b.Da)pa(a.v[G],"none")}T(a.v,h)}else T(a.Q,h)}}if(!a.v&&a.f[F]){a.v=V("gsc-expansionArea");T(a.Q,a.v)}if(a.v&&a.f.u&&a.f.gwsUrl){h=Y(a.f.gwsUrl,P["more-results"]+"&nbsp;&raquo;",a.f.s(),"gsc-trailing-more-results");\r
20385 if(a.f[F]){e=V("gsc-cursor-box");d=this.vf(a);e[v](d);a.f[F].currentPageIndex==a.f[F].pages[D]-1&&e[v](h);T(a.v,e)}else T(a.v,h)}if(f){r(a.nb,"("+a.f.results[D]+")");a.t.$==m[H].b.Da||a.t.$==m[H].b.La?this.Ia(a,b):this.Ia(a,g);(e=a.f.le())&&T(a.Q,e)}else{r(a.nb,"(0)");r(a.Q,"");this.Ia(a,g)}a.t.$=a.t.xe;this.ub&&this.ub(this,a.f);if(this.kb&&n&&!this.ff&&l.facets){a=this[w][xa];l=l.facets;for(e=0;e<l[D];e++){n=l[e];f=new m[H].g;y&&y.l&&f.qa(y.l,n.label);f.Bb(n.anchor);this.Oa(f);f.S(y.za);f[L](a)}for(e=\r
20386 0;e<this.d[D];e++)if(!this.p[e]){this.de(e);this.ce(e);Z(this.p[e].V,"gsc-tabHeader");Z(this.p[e].ga,"gsc-tabData");Z(this.p[e].V,"gsc-tabhInactive");Z(this.p[e].ga,"gsc-tabdInactive")}this.ff=b}}};O(m[H].b[E],"onSearchComplete",m[H].b[E].W);m[H].b[E].vf=function(a){for(var d=V("gsc-cursor"),e=a.f[F],f=0;f<e.pages[D];f++){var h="gsc-cursor-page";if(f==e.currentPageIndex)h+=" gsc-cursor-current-page";h=U(e.pages[f].label,h);oa(h,R(this,m[H].b[E].eg,[a,f]));d[v](h)}return d};\r
20387 m[H].b.Bd={border:"border",borderColor:"border-color",borderStyle:"border-style",borderWidth:"border-width",borderTop:"border-top",borderTopColor:"border-top-color",borderTopStyle:"border-top-style",borderTopWidth:"border-top-width",borderRight:"border-right",borderRightColor:"border-right-color",borderRightStyle:"border-right-style",borderRightWidth:"border-right-width",borderBottom:"border-bottom",borderBottomColor:"border-bottom-color",borderBottomStyle:"border-bottom-style",borderBottomWidth:"border-bottom-width",\r
20388 borderLeft:"border-left",borderLeftColor:"border-left-color",borderLeftStyle:"border-left-style",borderLeftWidth:"border-left-width",color:"color",cssFloat:"float",styleFloat:"float",clear:"clear",cursor:"cursor",display:"display",font:"font",fontFamily:"font-family",fontSize:"font-size",fontStyle:"font-style",fontWeight:"font-weight",height:"height",margin:"margin",marginTop:"margin-top",marginRight:"margin-right",marginBottom:"margin-bottom",marginLeft:"margin-left",overflow:"overflow",padding:"padding",\r
20389 paddingTop:"padding-top",paddingRight:"padding-right",paddingBottom:"padding-bottom",paddingLeft:"padding-left",textAlign:"text-align",textDecoration:"text-decoration",textTransform:"text-transform",verticalAlign:"vertical-align",visibility:"visibility",width:"width"};\r
20390 m[H].b.se=function(a,d){if(gb())alert("google.search.SearchControl.inlineCurrentStyle is not supported on Safari");else{var e=b;if(d)e=d;if(e)for(d=0;d<a.childNodes[D];d++)m[H].b.se(a.childNodes[d],b);if(a.nodeType==1){var f,h;d=e=g;if(k[Qa]){f=k[Qa](a,c);e=h=b}else if(a[Sa]){f=a[Sa];h=g;e=b}if(e){for(var l in f)if(m[H].b.Bd[l]){e=m[H].b.Bd[l];var n=f[l];if(l=="display"&&n=="none"){r(a,"");d=b}if(f[l]!="")h?a[G].setProperty(e,n):a[G][C](e,n)}if(d)if(!h)a.outerHTML='<div style="display:none"/>'}}}};\r
20391 O(m[H].b,"inlineCurrentStyle",m[H].b.se);m[H].b[E].Df=function(a){a=a?a:this.i;var d=c;if(k[Qa])d=k[Qa](a,c);else if(a[Sa])d=a[Sa];else if(p.defaultView[Qa])d=p.defaultView[Qa](a,c);return d?ca(d[x],10):300};m[H].b[E].zb=function(a,d){this.ub=hb(a,d)};O(m[H].b[E],"setSearchCompleteCallback",m[H].b[E].zb);m[H].b[E].vg=function(a,d){this.Bc=hb(a,d)};O(m[H].b[E],"setSearchStartingCallback",m[H].b[E].vg);\r
20392 m[H].b[E].wc=function(a,d){a.Dc(d);var e=g;switch(d){default:case m[H].z.Zb:if(a.v)pa(a.v[G],"none");break;case m[H].z.Yb:if(a.v)pa(a.v[G],"block");if(a.f.za!=m[H].a.X)e=b;a.f.S(m[H].a.X);break;case m[H].z.Cd:if(a.v)pa(a.v[G],"block");if(a.f.za!=m[H].a.la)e=b;a.f.S(m[H].a.la);break}if(e){d=this[w][xa];if(d[D]){this.gb=g;t(this.Aa,"gsc-resultsbox-visible");this.Hb();if(!a.pb){$(a.i,"gsc-resultsbox-invisible");Z(a.i,"gsc-resultsbox-visible")}a.t.$=m[H].b.La;a.f[L](d)}}};\r
20393 m[H].b[E].eg=function(a,d){this.gb=g;t(this.Aa,"gsc-resultsbox-visible");this.Hb();if(!a.pb){$(a.i,"gsc-resultsbox-invisible");Z(a.i,"gsc-resultsbox-visible")}a.t.$=m[H].b.La;a.f.ne(d)};\r
20394 m[H].L=function(a,d,e){var f=tb("gsc-search-box");f.acceptCharset="utf-8";var h=c,l=P["search-uc"],n=P[H];if(e){if(e.buttonText)n=l=e.buttonText;if(e.clickableBrandingUrl){h="http://www.google.com";if(typeof e.clickableBrandingUrl=="string"&&e.clickableBrandingUrl[za](/^http:\/\/[a-z]*\.google\.com/))h=e.clickableBrandingUrl;h=rb(h,c,"_BLANK");t(h,"gsc-branding-clickable")}}this.Nb=ub(l,"gsc-search-button");s(this.Nb,n);if(a){e="gsc-branding-img";this.ec=U(P.blank,"gsc-clear-button");s(this.ec,P["clear-results"])}else e=\r
20395 "gsc-branding-img-noclear";ia(this,vb(c,"gsc-input",c));this[w].name="search";s(this[w],n);n=nb(c,c,"gsc-search-box");T(f,n);n=ob(n,0);this.te=X(n,"gsc-input");l=X(n,"gsc-search-button");if(a){a=X(n,"gsc-clear-button");T(a,this.ec)}T(this.te,this[w]);T(l,this.Nb);a=nb(c,c,"gsc-branding");T(f,a);n=ob(a,0);this.userDefinedCell=X(n,"gsc-branding-user-defined");a=X(n,"gsc-branding-text");n=X(n,e);l=U(P["powered-by"],"gsc-branding-text");var y=m[J][Fa]+"/css/small-logo.png";e=e;if(fb()){e=V(e);e[G].filter=\r
20396 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+y+'")';ja(e[G],"51px");u(e[G],"15px")}else e=qb(y,c,c,e);e=e;T(a,l);if(h){T(h,e);T(n,h)}else T(n,e);this.Ae=f;ib(d);T(d,this.Ae)};N("google.search.SearchForm",m[H].L);m[H].L[E].Ge=function(a,d){this.Ke=R(this,this.Bg,[this]);this.Ob=R(a,d,[this]);this.Ae.onsubmit=this.Ke;oa(this.Nb,this.Ke)};O(m[H].L[E],"setOnSubmitCallback",m[H].L[E].Ge);m[H].L[E].Fe=function(a,d){oa(this.ec,R(a,d,[this]))};O(m[H].L[E],"setOnClearCallback",m[H].L[E].Fe);\r
20397 m[H].L[E].Bg=function(){var a=this.te.offsetWidth,d=this[w][xa];this.Ob&&this.Ob();if(fb()){var e=this,f;f=d[D]*8>=a?a-6:"99%";k[La](function(){ja(e[w][G],f)},1)}return g};qa(m[H].L[E],function(a){if(a)ka(this[w],a);this.Ob&&this.Ob()});O(m[H].L[E],"execute",m[H].L[E][L]);\r
20398 m[H].L[E].Kf=function(){var a=this[w],d=function(){if(a[xa]=="")a[G].background="#FFFFFF url(http://www.google.com/coop/intl/"+m[H][K]+"/images/google_custom_search_watermark.gif) left no-repeat"};a.onblur=d;a.onfocus=function(){a[G].background="#FFFFFF"};d()};m[H].cb=function(){this.xc=0;this.ie=g;this.sb=[]};m[H].cb[E].Jg=function(a){this.xc++;var d=this;return function(){for(var e=[],f=0;f<arguments[D];++f)e[ra](arguments[f]);if(d.ie)this.ge(a,e);else{d.sb[ra]([a,e]);d.xc--;d.xc==0&&d.he()}}};\r
20399 m[H].cb[E].he=function(){for(var a=0;a<this.sb[D];a++)this.ge(this.sb[a][0],this.sb[a][1]);this.sb=[];this.ie=b};m[H].cb[E].ge=function(a,d){k[La](function(){a[Va](c,d)},0)};m[H].cb[E].start=function(a){k[La](R(this,this.he,[]),a)};m[H].j=function(a,d){m[H].b[I](this);this.kb=b;this.S(m[H].a.la);this.jb("",{iframes:b});this.hb=new m[H].g;if(a==o){a={crefUrl:"http://www.google.com/coop/tools/autocse?referer="+k[Pa]};this.Kg=b}this.hb.qa(a);this.hb.Pb=P.cse;d&&d[m[H].a.Na]&&this.hb.R(m[H].a.Na,d[m[H].a.Na]);this.Oa(this.hb);this.yb(m[H].b.qd);this.Fg=(new Date)[Ga]()};N("google.search.CustomSearchControl",m[H].j);$a(m[H].j,m[H].b);\r
20400 m[H].j[E].Ib=function(a,d){(d=d)||(d=new m[H].T);d.De(m[H].b.Ka);if(this.Kg&&this.d[D]==1)this.Cg=b;m[H].b[E].Ib[I](this,a,d);t(this.i,"gsc-control-cse")};O(m[H].j[E],"draw",m[H].j[E].Ib);\r
20401 qa(m[H].j[E],function(a){var d=this.i.offsetWidth;$(this.da,"gsc-thinWrapper");if(d<m[H].j.Xe)this.ua=g;else if(d<m[H].j.Ze)this.jb(this.Qa,{useNarrowTopAd:b,includeVerticalAds:g});else{d={useNarrowTopAd:g,includeVerticalAds:d>m[H].j.Ye};if(this.ve)d.numTopAds=m[H].j.$e;this.jb(this.Qa,d)}if((new Date)[Ga]()-this.Fg<m[H].j.Le&&this.ua){d=fa(k[Pa].href)[z](/\+/g," ");var e=fa(a)[z](/\+/g," ");this.ua=d[ya](e)!=-1}m[H].b[E][L][I](this,a)});O(m[H].j[E],"execute",m[H].j[E][L]);m[H].j[E].Bb=function(a){this.hb.Bb(a)};\r
20402 O(m[H].j[E],"setUserDefinedLabel",m[H].j[E].Bb);m[H].j[E].Oa=function(a,d){m[H].b[E].Oa[I](this,a,d);a.wb="gcsc"};O(m[H].j[E],"addSearcher",m[H].j[E].Oa);m[H].j[E].xf=function(){m[H].b[E].jb("",{numTopAds:0,numSideAds:0});this.Qa=c;this.Be=g};O(m[H].j[E],"disableAds",m[H].j[E].xf);m[H].j[E].pg=function(){this.ve=b};O(m[H].j[E],"setMoreAds",m[H].j[E].pg);m[H].j.Me="";O(m[H].j,"AUTO_PUBID",m[H].j.Me);m[H].j.Xe=250;m[H].j.Ze=500;m[H].j.Ye=800;m[H].j.Le=500;m[H].j[E].ve=g;m[H].j.$e=4;m[H].r=function(){m[H].a[I](this);this.w="video";this.Ba="/GvideoSearch";this.na="http://video.google.com/videosearch";this.N=g;this.Ta=b;this.fa=hb(this,this.oa);this.Sa="gsc-videoConfig";this.o=c};N("google.search.VideoSearch",m[H].r);$a(m[H].r,m[H].a);m[H].r.B="GvideoSearch";O(m[H].r,"RESULT_CLASS",m[H].r.B);m[H].r.n=[];m[H].r.I=function(a,d,e,f,h){var l=0;if(a)l=ca(a,10);a=m[H].r.n[l];m[H].r.n[l]=c;a.W(d,e,f,h)};O(m[H].r,"RawCompletion",m[H].r.I);\r
20403 m[H].r[E].ha=function(a,d,e,f){e=e==c?m[H].a.ka(m[H].r.n,this):e;d=this.ya(d==c?"google.search.VideoSearch.RawCompletion":d,e,f);if(a){a=a;if(this.H)a=a+" "+this.H;a="&q="+i(a);if(this.N)a+="&scoring=d";d+=a;this.u=a;if(f&&f!=0)this.u=this.u+"&start="+f}return d};\r
20404 m[H].r[E].C=function(a){a.html&&delete a.html;var d=V(this.ia());Z(d,"gs-result");var e=V("gs-image-box"),f=V("gs-text-box"),h=nb(),l=ob(h,0),n=X(l,"gs-image-box");l=X(l,"gs-text-box");T(n,e);T(l,f);T(d,h);h=m[H].a.$a(a.tbWidth,a.tbHeight,this.M);h=qb(a.tbUrl,h[x],h[Xa],"gs-image");n=rb(a.url,c,this.s(),"gs-image");t(n,"gs-image");T(n,h);T(e,n);e=Y(a.url,a[Ha],this.s(),"gs-title");T(f,e);e=U(a[va],"gs-snippet");if(fb())u(e[G],"2.6em");T(f,e);e=U(this.Va(new Date(a.published)),"gs-publishedDate");\r
20405 T(f,e);e=Y("http://"+a.publisher,a.publisher,this.s(),"gs-publisher");T(f,e);a.html=d;this.ta(a.html)};O(m[H].r[E],"createResultHtml",m[H].r[E].C);\r
20406 m[H].r.wf=function(a,d){var e=c;if(a.playUrl&&a.playUrl!=""){e=a.playUrl;var f="gsc-video-player";if(d)f=d;if(bb("opera")){var h=p[A]("object");t(h,f);h[C]("type","application/x-shockwave-flash");h[C]("data",e)}else{h=p[A]("embed");t(h,f);h[C]("type","application/x-shockwave-flash");h[C]("src",e);if(a.videoType)a.videoType=="Google"?h[C]("bgcolor","#000000"):h[C]("wmode","transparent");else h[C]("bgcolor","#000000")}e=V(d);e[v](h)}return e};O(m[H].r,"createPlayer",m[H].r.wf);\r
20407 m[H].r[E].K=function(a){this.N=a==m[H].a.ma?b:g};O(m[H].r[E],"setResultOrder",m[H].r[E].K);m[H].r[E].oa=function(a,d){if(d){if(this.o==c){d=V("gsc-configSetting");this.o=xb(c,"0",this.N,"gsc-configSettingCheckbox");T(d,this.o);T(d,U(P["sort-by-date"],"gsc-configSettingCheckboxLabel"));var e=V("gsc-configSettingSubmit");T(e,ub(P[Ra],"gsc-configSettingSubmit"));T(d,e);T(a,d)}else na(this.o,this.N);this.o[Ba]()}else if(this.o)this.o[Ka]?this.K(m[H].a.ma):this.K(m[H].a.eb)};m[H].g=function(){m[H].a[I](this);this.w="web";this.Ba="/GwebSearch";this.na="http://www.google.com/search";this.l=c;this.D=m[H].g.Y;this.F=this.Ha=this.wa=this.jc=this.Ea=c};N("google.search.WebSearch",m[H].g);$a(m[H].g,m[H].a);m[H].g.B="GwebSearch";O(m[H].g,"RESULT_CLASS",m[H].g.B);m[H].g.ib="cx";O(m[H].g,"cxRestriction_CX",m[H].g.ib);m[H].g.Gb="cref";O(m[H].g,"cxRestriction_CREF",m[H].g.Gb);m[H].g.Y="none";O(m[H].g,"cxRestriction_NONE",m[H].g.Y);m[H].g.n=[];\r
20408 m[H].g.I=function(a,d,e,f,h){var l=0;if(a)l=ca(a,10);a=m[H].g.n[l];m[H].g.n[l]=c;a.W(d,e,f,h)};O(m[H].g,"RawCompletion",m[H].g.I);m[H].g[E].Hg=function(a){return a[z](/\s+$/,"")[z](/^\s+/,"")};m[H].g[E].Vf=function(a){a=this.Hg(a);return a[z](/\s+/g,"_")[Ya]()};\r
20409 m[H].g[E].ha=function(a,d,e,f){e=e==c?m[H].a.ka(m[H].g.n,this):e;if(this.D==m[H].g.Y&&this.Jh==m[H].a.Ma)throw createException("The resultset size google.search.Search.FILTERED_CSE_RESULTSET can  only be used for querying filtered Custom Search Engines.");d=this.ya(d==c?"google.search.WebSearch.RawCompletion":d,e,f);if(a){a=a;if(this.H)a=a+" "+this.H;if(this.l&&this.D!=m[H].g.Y&&this.jc){e=this.jc;var h=a;if(this.Ea!=c)h=a+" more:"+this.Ea;e=e[z](/__HL__/,m[H][K]);this.wa=e=e[z](/__QUERY__/,i(h))}if(this.l&&\r
20410 this.D==m[H].g.Y)a=a+" site:"+this.l;e="";if(this.l&&this.D!=m[H].g.Y){if(this.D==m[H].g.ib)e=e+"&cx="+this.l;else if(this.D==m[H].g.Gb)e=e+"&cref="+i(this.l);if(this.Ea!=c)a=a+" more:"+this.Ea}e=e+"&q="+i(a);if(this.Ha)e=e+"&safe="+this.Ha;if(this.F)e+=this.F;d+=e;this.u=e;if(f&&f!=0)this.u=this.u+"&start="+f}if(k.google[J].GoogleLocale)d+="&gl="+i(k.google[J].GoogleLocale);return d};\r
20411 m[H].g[E].be=function(a){a.html&&delete a.html;var d=V("gs-promotion");Z(d,"gs-result");var e=sb(a.url,a[Ha],this.s(),"gs-title");T(d,e);e=nb(0,0);var f=ob(e,0),h;T(d,e);if(a.image){e=a.image;e=qb(e.url,e[x],e[Xa],"gs-promotion-image");h=pb("gs-promotion-image-td");T(h,e);T(f,h)}if(a.bodyLines){h=pb();var l=V();T(f,h);T(h,l);f=a.bodyLines;for(h=0;h<f[D];h++){e=f[h];var n=e[Ha],y=e.url,B=e.visibleUrl;e=V("gs-snippet");if(y&&B){y=rb(y,B,this.s(),"gs-title");T(e,y)}n&&T(e,kb(n));T(l,e)}}e=lb(a.visibleUrl,\r
20412 "gs-visibleUrl");T(l,e);Z(e,"gs-visibleUrl-short");a.html=d};O(m[H].g[E],"createPromotionHtml",m[H].g[E].be);m[H].g[E].ee=function(a,d,e,f){var h=V("gs-image-box gs-web-image-box");if(e==o)e=100;a=qb(a,e,f,"gs-image");d=rb(d,c,this.s());t(d,"gs-image");T(d,a);T(h,d);return h};m[H].g[E].Xd=function(a,d){if(d.url){var e=sb(d.url,d.label,this.s(),"gs-action");d["class"]&&wb(e,d["class"]);a.actionHtml||(a.actionHtml=V("gs-actions"));T(a.actionHtml,e)}};\r
20413 m[H].g[E].C=function(a){a.html&&delete a.html;a.thumbnailHtml&&delete a.thumbnailHtml;a.actionHtml&&delete a.actionHtml;var d=V(this.ia());Z(d,"gs-result");if(a.richSnippet){var e=a.richSnippet;if(e.thumbnail&&e.thumbnail.src)a.thumbnailHtml=this.ee(e.thumbnail.src,a.unescapedUrl,e.thumbnail[x],e.thumbnail[Xa]);else if(e[Ma]&&e[Ma].thumbnailUrl)a.thumbnailHtml=this.ee(e[Ma].thumbnailUrl,a.unescapedUrl);if(e[Ua])if(e[Ua][D]&&e[Ua][0])for(var f=0;f<e[Ua][D];f++)this.Xd(a,e[Ua][f]);else this.Xd(a,e[Ua]);\r
20414 a.thumbnailHtml&&T(d,a.thumbnailHtml[Ca](b))}e=Y(a.unescapedUrl,a[Ha],this.s(),"gs-title");T(d,e);e=U(a[va],"gs-snippet");T(d,e);e=U(a.visibleUrl,"gs-visibleUrl");T(d,e);Z(e,"gs-visibleUrl-short");e=a.unescapedUrl[ya](a.visibleUrl);f=a.visibleUrl;if(e!=-1&&e!=0)f=a.unescapedUrl.substring(e);e=U(f,"gs-visibleUrl");Z(e,"gs-visibleUrl-long");T(d,e);a.actionHtml&&T(d,a.actionHtml[Ca](b));a.html=d;this.ta(a.html)};O(m[H].g[E],"createResultHtml",m[H].g[E].C);\r
20415 m[H].g[E].qa=function(a,d,e){this.lb=this.wa=c;var f=g;if(a==c||typeof a=="string"&&a==""){f=g;this.l=c;this.D=m[H].g.Y;this.lb=this.Ea=c}else if(typeof a=="string")if(f=a[za](/(^partner-pub-\d*:.*)|(^\d{21}:.*)/)){this.l=a;this.D=m[H].g.ib}else{this.l=a;this.D=m[H].g.Y}else if(a.siteUrl){f=g;this.l=a.siteUrl}else if(a.cseId){f=b;this.l=a.cseId;this.D=m[H].g.ib}else if(a.crefUrl){f=b;this.l=a.crefUrl;this.D=m[H].g.Gb;this.lb=P["linked-cse-error-results"]}else{f=g;this.l=c;this.D=m[H].g.Y;this.Ea=\r
20416 c}if(f){if(d)this.Ea=this.Vf(d);if(e)if(e[za](/__HL__/)&&e[za](/__QUERY__/))this.jc=e;if(this.D==m[H].g.Gb)if(!this.l[za](/^http:\/\/www\.google\.com\/coop\/tools\/autocse\?referer=/))(new Image).src="http://www.google.com/cse/tools/ping?cref="+i(this.l)+"&nocache="+Number(new Date)}};O(m[H].g[E],"setSiteRestriction",m[H].g[E].qa);\r
20417 m[H].g[E].R=function(a,d){if(a==m[H].a.Ub)this.Ha=d?d==m[H].a.Wb||d==m[H].a.Vb||d==m[H].a.Ad?d:c:c;if(a==m[H].a.Na)if(d)for(var e in d){a=d[e];if(e=="lr"||e=="usg"||e=="filter"||e=="gl"||e=="richsnippet"){if(this.F==c)this.F="&";else this.F+="&";this.F+=e+"="+i(a)}}else this.F=c};O(m[H].g[E],"setRestriction",m[H].g[E].R);m[H].g[E].S=function(a){if(m[H].a.Ma==a)this.za=m[H].a.Ma;else m[H].a[E].S[I](this,a)};O(m[H].g[E],"setResultSetSize",m[H].g[E].S);if(!m[H].NoOldNames){j("GwebSearch",m[H].g);j("GbookSearch",m[H].k);j("GblogSearch",m[H].q);j("GvideoSearch",m[H].r);j("GnewsSearch",m[H].m);j("GlocalSearch",m[H].e);j("GimageSearch",m[H].c);j("GpatentSearch",m[H].h);j("GSearch",m[H].a);j("GSearchControl",m[H].b);j("GSearchForm",m[H].L);j("GsearcherOptions",m[H].A);j("GdrawOptions",m[H].T)};var Mb=function(a,d,e){this.Tf=a;this.Ac=d;this.Ya=g;this.pe=e||c;this.console=k[Ta]||{log:function(){}};if(!this.pe&&this.Ac=="parent")this[Ta].log("You forgot to pass an iframe.");else{if(!k.UDS_IEXDC_SETUP_COMPLETE)try{k.execScript("Class UDS_GCXPC____NIXVBS_wrapper\n Private UDS_M_TRANSPORT\nPublic Sub UDS_SET_TRANSPORT(transport)\nIf isEmpty(UDS_M_TRANSPORT) Then\nSet UDS_M_TRANSPORT = transport\nEnd If\nEnd Sub\nPublic Sub UDS_SEND_MESSAGE_(payload)\n Call UDS_M_TRANSPORT.UDS_GCXPC____NIXJS_handle_message(payload)\nEnd Sub\nPublic Sub UDS_CREATE_CHANNEL(channel)\n Call UDS_M_TRANSPORT.UDS_GCXPC____NIXJS_create_channel(channel)\nEnd Sub\nPublic Sub UDS_GCXPC____NIXVBS_container()\n End Sub\nEnd Class\n Function UDS_GCXPC____NIXVBS_get_wrapper(transport)\nDim wrap\nSet wrap = New UDS_GCXPC____NIXVBS_wrapper\nwrap.UDS_SET_TRANSPORT transport\nSet UDS_GCXPC____NIXVBS_get_wrapper = wrap\nEnd Function",\r
20418 "vbscript");k.UDS_IEXDC_SETUP_COMPLETE=b}catch(f){}this.UDS_GCXPC____NIXJS_handle_message=this.If;this.UDS_GCXPC____NIXJS_create_channel=this.uf}},Ob=function(){var a=k[Wa]?k[Wa][Oa]:c;if(a)return/trident\/\d/i.test(a)&&Nb(a)==7;return g},Pb=/MSIE\s+([^\);]+)(\)|;)/,Nb=function(a){return(a=Pb.exec(a))?a[1]:""};M=Mb[E];M.If=function(a){this.Ac=="parent"&&a=="connected"?this.He():this.Tf(a)};M.uf=function(a){this.oe=a};\r
20419 M.Zd=function(a){return function(){if(!a.Ya){var d=a.pe;try{d.contentWindow.opener=k.UDS_GCXPC____NIXVBS_get_wrapper(a);a.Ya=b}catch(e){this[Ta].log("Exception caught while attempting Google IE XDC: "+e.message)}a.Ya||k[La](a.Zd(a),100)}}};M.Yd=function(a){return function(){if(!a.Ya){try{var d=k.opener;if(d&&"UDS_GCXPC____NIXVBS_container"in d){a.oe=d;a.oe.UDS_CREATE_CHANNEL(k.UDS_GCXPC____NIXVBS_get_wrapper(a));a.Ya=b;a.send("connected");a.He()}}catch(e){return}a.Ya||k[La](a.Yd(a),100)}}};\r
20420 M.send=function(){this[Ta].log("Cross-domain channel has been modified.")};M.sf=function(a){this.He=a||function(){};this.Ac=="parent"?this.Zd(this)():this.Yd(this)()};\r
20421 google.loader.loaded({"module":"search","version":"1.0","components":["default"]});\r
20422 google.loader.eval.search = function() {eval(arguments[0]);};if (google.loader.eval.scripts && google.loader.eval.scripts['search']) {(function() {var scripts = google.loader.eval.scripts['search'];for (var i = 0; i < scripts.length; i++) {google.loader.eval.search(scripts[i]);}})();google.loader.eval.scripts['search'] = null;}})();\r
20423 \r
20424 \r
20425 \r
20426 var canvas;\r
20427 \r
20428 var delta = [0,0];\r
20429 var stage = [window.screenX,window.screenY,window.innerWidth,window.innerHeight];\r
20430 getBrowserDimensions();\r
20431 \r
20432 var isPlaying = false;\r
20433 var isMouseDown = false;\r
20434 \r
20435 var worldAABB;\r
20436 var world;\r
20437 var iterations = 1;\r
20438 var timeStep = 1/25;\r
20439 \r
20440 var walls = new Array();\r
20441 var wall_thickness = 200;\r
20442 var wallsSetted = false;\r
20443 \r
20444 var mouseJoint;\r
20445 var mouseX = 0;\r
20446 var mouseY = 0;\r
20447 \r
20448 var mouseOnClick = new Array();\r
20449 \r
20450 var timer = 0;\r
20451 //var stats = new Stats();\r
20452 var elements = new Array();\r
20453 var bodies = new Array();\r
20454 var properties = new Array();\r
20455 \r
20456 var gWebSearch;\r
20457 var imFeelingLuckyMode = false;\r
20458 var resultBodies = new Array();\r
20459 \r
20460 init();\r
20461 \r
20462 // GOOGLE API\r
20463 \r
20464 function onLoad()\r
20465 {\r
20466         gWebSearch = new GwebSearch();\r
20467         gWebSearch.setResultSetSize(GSearch.SMALL_RESULTSET);\r
20468         gWebSearch.setSearchCompleteCallback(null, onWebSearch);\r
20469 }\r
20470 \r
20471 function onWebSearch()\r
20472 {\r
20473         if(imFeelingLuckyMode)\r
20474         {\r
20475                 location.href = gWebSearch.results[0].unescapedUrl;\r
20476                 return;\r
20477         }\r
20478         \r
20479         for (var i = 0; i < gWebSearch.results.length; i++)\r
20480                 addResult(gWebSearch.results[i]);\r
20481 }\r
20482 \r
20483 //\r
20484 \r
20485 function init()\r
20486 {\r
20487         canvas = document.getElementById('canvas');\r
20488         \r
20489         document.onmousedown = onDocumentMouseDown;\r
20490         document.onmouseup = onDocumentMouseUp;\r
20491         document.onmousemove = onDocumentMouseMove;\r
20492         document.ondblclick = onDocumentDoubleClick;\r
20493         \r
20494         document.onkeypress = onDocumentKeyPress;\r
20495 \r
20496         // init box2d\r
20497         \r
20498         worldAABB = new b2AABB();\r
20499         worldAABB.minVertex.Set(-200, -200);\r
20500         worldAABB.maxVertex.Set( screen.width + 200, screen.height + 200);\r
20501 \r
20502         world = new b2World(worldAABB, new b2Vec2(0, 0), true);\r
20503         \r
20504         // walls        \r
20505         setWalls();\r
20506 \r
20507         // Get box2d elements\r
20508         \r
20509         elements = getElementsByClass("box2d");\r
20510                 \r
20511         for (i = 0; i < elements.length; i++)\r
20512         {\r
20513                 var element = elements[i];\r
20514                 properties[i] = findPos(element);\r
20515                 properties[i][2] = element.offsetWidth;\r
20516                 properties[i][3] = element.offsetHeight;\r
20517         }\r
20518         \r
20519         for (i = 0; i < elements.length; i++)\r
20520         {\r
20521                 var element = elements[i];\r
20522                 element.style['position'] = 'absolute';\r
20523                 element.style['left'] = properties[i][0] + 'px';\r
20524                 element.style['top'] = properties[i][1] + 'px';\r
20525                 //element.style['backgroundColor'] = '#ffff00';\r
20526                 element.onmousedown = onElementMouseDown;\r
20527                 element.onmouseup = onElementMouseUp;\r
20528                 element.onclick = onElementClick;\r
20529                 \r
20530                 bodies[i] = createBox(world, properties[i][0] + (properties[i][2] >> 1), properties[i][1] + (properties[i][3] >> 1), properties[i][2] / 2, properties[i][3] / 2, false);                \r
20531         }\r
20532 }\r
20533 \r
20534 function play()\r
20535 {\r
20536         setInterval(loop, 25);  \r
20537 }\r
20538 \r
20539 // .. ACTIONS\r
20540 \r
20541 function onDocumentMouseDown()\r
20542 {\r
20543         isMouseDown = true;\r
20544         return false;\r
20545 }\r
20546 \r
20547 function onDocumentMouseUp()\r
20548 {\r
20549         isMouseDown = false;\r
20550         return false;\r
20551 }\r
20552 \r
20553 function onDocumentMouseMove()\r
20554 {\r
20555         if (!isPlaying)\r
20556         {\r
20557                 isPlaying = true;\r
20558                 play();\r
20559         }\r
20560         \r
20561         mouseX = window.event.clientX;\r
20562         mouseY = window.event.clientY;\r
20563 }\r
20564 \r
20565 function onDocumentDoubleClick()\r
20566 {\r
20567         for (i = 0; i < resultBodies.length; i++)\r
20568         {\r
20569                 var body = resultBodies[i]\r
20570                 canvas.removeChild( body.GetUserData().element );\r
20571                 world.DestroyBody(body);\r
20572                 body = null;\r
20573         }\r
20574         \r
20575         resultBodies = new Array();\r
20576 }\r
20577 \r
20578 function onDocumentKeyPress(e)\r
20579 {\r
20580         if (e.charCode == 13)\r
20581                 search();\r
20582 }\r
20583 \r
20584 function onElementMouseDown()\r
20585 {\r
20586         mouseOnClick[0] = window.event.clientX;\r
20587         mouseOnClick[1] = window.event.clientY; \r
20588         return false;\r
20589 }\r
20590 \r
20591 function onElementMouseUp()\r
20592 {\r
20593         return false;\r
20594 }\r
20595 \r
20596 function onElementClick()\r
20597 {\r
20598         var range = 5;\r
20599         \r
20600         if (mouseOnClick[0] > window.event.clientX + range || mouseOnClick[0] < window.event.clientX - range && mouseOnClick[1] > window.event.clientY + range || mouseOnClick[1] < window.event.clientY - range)\r
20601                 return false;\r
20602         \r
20603         if (this == document.getElementById('btnG')) search();\r
20604         if (this == document.getElementById('btnI')) imFeelingLucky();\r
20605         if (this == document.getElementById('q')) document.f.q.focus();\r
20606 }\r
20607 \r
20608 // API STUFF\r
20609 \r
20610 function search()\r
20611 {\r
20612         if (!isPlaying)\r
20613         {\r
20614                 isPlaying = true;\r
20615                 play();\r
20616         }\r
20617         \r
20618         onDocumentDoubleClick(); // clean\r
20619         gWebSearch.execute(document.getElementById('q').value);\r
20620         return false;\r
20621 }\r
20622 \r
20623 function imFeelingLucky()\r
20624 {\r
20625         imFeelingLuckyMode = true;\r
20626         gWebSearch.execute(document.getElementById('q').value);\r
20627         return false;   \r
20628 }\r
20629 \r
20630 function addResult(data)\r
20631 {\r
20632         var element = document.createElement("div");\r
20633         element.innerHTML = '<div><h3 class=r><a href="' + data.unescapedUrl + '" class=l onmousedown="return clk(this.href,\'\',\'\',\'res\',\'1\',\'&amp;sig2=3Ti89FTuSYfE6a-5k1jjKQ\')">' + data.title + '</a></h3><span style=display:inline-block><button class=w10 title="Promote"></button><button class=w20 title="Remove"></button></span><div class="s">' + data.content + '<br><cite>' + data.visibleUrl + '</cite></div>';\r
20634         \r
20635         canvas.appendChild( element );\r
20636         properties.push([Math.random() * (window.innerWidth / 2),-200,600,element.offsetHeight]);\r
20637         \r
20638         var i = properties.length - 1;\r
20639 \r
20640         element.style['position'] = 'absolute';\r
20641         element.style['left'] = 0 + 'px';\r
20642         element.style['top'] = -100 + 'px';\r
20643         element.style['backgroundColor'] = '#ffffff';\r
20644         element.onmousedown = onElementMouseDown;\r
20645         element.onmouseup = onElementMouseUp;\r
20646         element.onclick = onElementClick;\r
20647 \r
20648         elements[i] = element;\r
20649 \r
20650         resultBodies.push( bodies[i] = createBox(world, properties[i][0] + (properties[i][2] >> 1), properties[i][1] + (properties[i][3] >> 1), properties[i][2] / 2, properties[i][3] / 2, false, element) );\r
20651         \r
20652 }\r
20653 \r
20654 //\r
20655 \r
20656 function loop()\r
20657 {\r
20658         if (getBrowserDimensions())\r
20659                 setWalls();\r
20660 \r
20661         delta[0] += (0 - delta[0]) * .5;\r
20662         delta[1] += (0 - delta[1]) * .5;\r
20663         \r
20664         world.m_gravity.x = 0 + delta[0];\r
20665         world.m_gravity.y = 350 + delta[1];\r
20666 \r
20667         mouseDrag();\r
20668         world.Step(timeStep, iterations);       \r
20669         \r
20670         for (i = 0; i < elements.length; i++)\r
20671         {\r
20672                 var element = elements[i];\r
20673                 \r
20674                 element.style['left'] = (bodies[i].m_position0.x - (properties[i][2] >> 1)) + 'px';\r
20675                 element.style['top'] = (bodies[i].m_position0.y - (properties[i][3] >> 1)) + 'px';\r
20676                 \r
20677                 // webkit\r
20678                 element.style['-webkit-transform'] = 'rotate(' + (bodies[i].m_rotation0 * 57.2957795) + 'deg)';\r
20679                 \r
20680                 // gecko\r
20681                 element.style['MozTransform'] = 'rotate(' + (bodies[i].m_rotation0 * 57.2957795) + 'deg)';\r
20682 \r
20683                 // opera\r
20684                 element.style['OTransform'] = 'rotate(' + (bodies[i].m_rotation0 * 57.2957795) + 'deg)';\r
20685         }\r
20686 }\r
20687 \r
20688 \r
20689 // .. BOX2D UTILS\r
20690 \r
20691 function createBox(world, x, y, width, height, fixed, element)\r
20692 {\r
20693         if (typeof(fixed) == 'undefined') fixed = true;\r
20694         var boxSd = new b2BoxDef();\r
20695         if (!fixed) boxSd.density = 1.0;\r
20696         boxSd.extents.Set(width, height);\r
20697         var boxBd = new b2BodyDef();\r
20698         boxBd.AddShape(boxSd);\r
20699         boxBd.position.Set(x,y);\r
20700         boxBd.userData = {element: element};\r
20701         return world.CreateBody(boxBd)\r
20702 }\r
20703 \r
20704 function mouseDrag()\r
20705 {\r
20706         // mouse press\r
20707         if (isMouseDown && !mouseJoint)\r
20708         {\r
20709                 var body = getBodyAtMouse();\r
20710                 \r
20711                 if (body)\r
20712                 {\r
20713                         var md = new b2MouseJointDef();\r
20714                         md.body1 = world.m_groundBody;\r
20715                         md.body2 = body;\r
20716                         md.target.Set(mouseX, mouseY);\r
20717                         md.maxForce = 30000.0 * body.m_mass;\r
20718                         md.timeStep = timeStep;\r
20719                         mouseJoint = world.CreateJoint(md);\r
20720                         body.WakeUp();\r
20721                 }\r
20722         }\r
20723         \r
20724         // mouse release\r
20725         if (!isMouseDown)\r
20726         {\r
20727                 if (mouseJoint)\r
20728                 {\r
20729                         world.DestroyJoint(mouseJoint);\r
20730                         mouseJoint = null;\r
20731                 }\r
20732         }\r
20733         \r
20734         // mouse move\r
20735         if (mouseJoint)\r
20736         {\r
20737                 var p2 = new b2Vec2(mouseX, mouseY);\r
20738                 mouseJoint.SetTarget(p2);\r
20739         }\r
20740 }\r
20741 \r
20742 function getBodyAtMouse()\r
20743 {\r
20744         // Make a small box.\r
20745         var mousePVec = new b2Vec2();\r
20746         mousePVec.Set(mouseX, mouseY);\r
20747         \r
20748         var aabb = new b2AABB();\r
20749         aabb.minVertex.Set(mouseX - 1, mouseY - 1);\r
20750         aabb.maxVertex.Set(mouseX + 1, mouseY + 1);\r
20751 \r
20752         // Query the world for overlapping shapes.\r
20753         var k_maxCount = 10;\r
20754         var shapes = new Array();\r
20755         var count = world.Query(aabb, shapes, k_maxCount);\r
20756         var body = null;\r
20757         \r
20758         for (var i = 0; i < count; ++i)\r
20759         {\r
20760                 if (shapes[i].m_body.IsStatic() == false)\r
20761                 {\r
20762                         if ( shapes[i].TestPoint(mousePVec) )\r
20763                         {\r
20764                                 body = shapes[i].m_body;\r
20765                                 break;\r
20766                         }\r
20767                 }\r
20768         }\r
20769         return body;\r
20770 }\r
20771 \r
20772 function setWalls()\r
20773 {\r
20774         if (wallsSetted)\r
20775         {\r
20776                 world.DestroyBody(walls[0]);\r
20777                 world.DestroyBody(walls[1]);\r
20778                 world.DestroyBody(walls[2]);\r
20779                 world.DestroyBody(walls[3]);\r
20780                 \r
20781                 walls[0] = null; \r
20782                 walls[1] = null;\r
20783                 walls[2] = null;\r
20784                 walls[3] = null;\r
20785         }\r
20786         \r
20787         walls[0] = createBox(world, stage[2] / 2, - wall_thickness, stage[2], wall_thickness);\r
20788         walls[1] = createBox(world, stage[2] / 2, stage[3] + wall_thickness, stage[2], wall_thickness);\r
20789         walls[2] = createBox(world, - wall_thickness, stage[3] / 2, wall_thickness, stage[3]);\r
20790         walls[3] = createBox(world, stage[2] + wall_thickness, stage[3] / 2, wall_thickness, stage[3]); \r
20791         \r
20792         wallsSetted = true;\r
20793 }\r
20794 \r
20795 // .. UTILS\r
20796 \r
20797 function getElementsByClass( searchClass )\r
20798 {\r
20799         var classElements = new Array();\r
20800         var els = document.getElementsByTagName('*');\r
20801         var elsLen = els.length\r
20802         for (i = 0, j = 0; i < elsLen; i++)\r
20803         {\r
20804                 var classes = els[i].className.split(' ');\r
20805                 for (k = 0; k < classes.length; k++)\r
20806                         if ( classes[k] == searchClass )\r
20807                                 classElements[j++] = els[i];\r
20808         }\r
20809         return classElements;\r
20810 }\r
20811 \r
20812 function findPos(obj)\r
20813 {\r
20814         var curleft = curtop = 0;\r
20815         if (obj.offsetParent)\r
20816         {\r
20817                 do\r
20818                 {\r
20819                         curleft += obj.offsetLeft;\r
20820                         curtop += obj.offsetTop;\r
20821                 }\r
20822                 while (obj = obj.offsetParent);\r
20823         }\r
20824         return [curleft,curtop];\r
20825 }\r
20826 \r
20827 function getBrowserDimensions()\r
20828 {\r
20829         var changed = false;\r
20830                 \r
20831         if (stage[0] != window.screenX)\r
20832         {\r
20833                 delta[0] = (window.screenX - stage[0]) * 50;\r
20834                 stage[0] = window.screenX;\r
20835                 changed = true;\r
20836         }\r
20837         \r
20838         if (stage[1] != window.screenY)\r
20839         {\r
20840                 delta[1] = (window.screenY - stage[1]) * 50;\r
20841                 stage[1] = window.screenY;\r
20842                 changed = true;\r
20843         }\r
20844         \r
20845         if (stage[2] != window.innerWidth)\r
20846         {\r
20847                 stage[2] = window.innerWidth;\r
20848                 changed = true;\r
20849         }\r
20850         \r
20851         if (stage[3] != window.innerHeight)\r
20852         {\r
20853                 stage[3] = window.innerHeight;\r
20854                 changed = true;\r
20855         }\r
20856         \r
20857         return changed;\r
20858 }       \r
20859 \r
20860 </script>\r
20861 \r
20862 \r
20863 <script id='jquery' id="x">\r
20864 /*\r
20865  * jQuery JavaScript Library v1.3\r
20866  * http://jquery.com/\r
20867  *\r
20868  * Copyright (c) 2009 John Resig\r
20869  * Dual licensed under the MIT and GPL licenses.\r
20870  * http://docs.jquery.com/License\r
20871  *\r
20872  * Date: 2009-01-13 12:50:31 -0500 (Tue, 13 Jan 2009)\r
20873  * Revision: 6104\r
20874  */\r
20875 (function(){var l=this,g,x=l.jQuery,o=l.$,n=l.jQuery=l.$=function(D,E){return new n.fn.init(D,E)},C=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;n.fn=n.prototype={init:function(D,G){D=D||document;if(D.nodeType){this[0]=D;this.length=1;this.context=D;return this}if(typeof D==="string"){var F=C.exec(D);if(F&&(F[1]||!G)){if(F[1]){D=n.clean([F[1]],G)}else{var H=document.getElementById(F[3]);if(H){if(H.id!=F[3]){return n().find(D)}var E=n(H);E.context=document;E.selector=D;return E}D=[]}}else{return n(G).find(D)}}else{if(n.isFunction(D)){return n(document).ready(D)}}if(D.selector&&D.context){this.selector=D.selector;this.context=D.context}return this.setArray(n.makeArray(D))},selector:"",jquery:"1.3",size:function(){return this.length},get:function(D){return D===g?n.makeArray(this):this[D]},pushStack:function(E,G,D){var F=n(E);F.prevObject=this;F.context=this.context;if(G==="find"){F.selector=this.selector+(this.selector?" ":"")+D}else{if(G){F.selector=this.selector+"."+G+"("+D+")"}}return F},setArray:function(D){this.length=0;Array.prototype.push.apply(this,D);return this},each:function(E,D){return n.each(this,E,D)},index:function(D){return n.inArray(D&&D.jquery?D[0]:D,this)},attr:function(E,G,F){var D=E;if(typeof E==="string"){if(G===g){return this[0]&&n[F||"attr"](this[0],E)}else{D={};D[E]=G}}return this.each(function(H){for(E in D){n.attr(F?this.style:this,E,n.prop(this,D[E],F,H,E))}})},css:function(D,E){if((D=="width"||D=="height")&&parseFloat(E)<0){E=g}return this.attr(D,E,"curCSS")},text:function(E){if(typeof E!=="object"&&E!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(E))}var D="";n.each(E||this,function(){n.each(this.childNodes,function(){if(this.nodeType!=8){D+=this.nodeType!=1?this.nodeValue:n.fn.text([this])}})});return D},wrapAll:function(D){if(this[0]){var E=n(D,this[0].ownerDocument).clone();if(this[0].parentNode){E.insertBefore(this[0])}E.map(function(){var F=this;while(F.firstChild){F=F.firstChild}return F}).append(this)}return this},wrapInner:function(D){return this.each(function(){n(this).contents().wrapAll(D)})},wrap:function(D){return this.each(function(){n(this).wrapAll(D)})},append:function(){return this.domManip(arguments,true,function(D){if(this.nodeType==1){this.appendChild(D)}})},prepend:function(){return this.domManip(arguments,true,function(D){if(this.nodeType==1){this.insertBefore(D,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(D){this.parentNode.insertBefore(D,this)})},after:function(){return this.domManip(arguments,false,function(D){this.parentNode.insertBefore(D,this.nextSibling)})},end:function(){return this.prevObject||n([])},push:[].push,find:function(D){if(this.length===1&&!/,/.test(D)){var F=this.pushStack([],"find",D);F.length=0;n.find(D,this[0],F);return F}else{var E=n.map(this,function(G){return n.find(D,G)});return this.pushStack(/[^+>] [^+>]/.test(D)?n.unique(E):E,"find",D)}},clone:function(E){var D=this.map(function(){if(!n.support.noCloneEvent&&!n.isXMLDoc(this)){var H=this.cloneNode(true),G=document.createElement("div");G.appendChild(H);return n.clean([G.innerHTML])[0]}else{return this.cloneNode(true)}});var F=D.find("*").andSelf().each(function(){if(this[h]!==g){this[h]=null}});if(E===true){this.find("*").andSelf().each(function(H){if(this.nodeType==3){return}var G=n.data(this,"events");for(var J in G){for(var I in G[J]){n.event.add(F[H],J,G[J][I],G[J][I].data)}}})}return D},filter:function(D){return this.pushStack(n.isFunction(D)&&n.grep(this,function(F,E){return D.call(F,E)})||n.multiFilter(D,n.grep(this,function(E){return E.nodeType===1})),"filter",D)},closest:function(D){var E=n.expr.match.POS.test(D)?n(D):null;return this.map(function(){var F=this;while(F&&F.ownerDocument){if(E?E.index(F)>-1:n(F).is(D)){return F}F=F.parentNode}})},not:function(D){if(typeof D==="string"){if(f.test(D)){return this.pushStack(n.multiFilter(D,this,true),"not",D)}else{D=n.multiFilter(D,this)}}var E=D.length&&D[D.length-1]!==g&&!D.nodeType;return this.filter(function(){return E?n.inArray(this,D)<0:this!=D})},add:function(D){return this.pushStack(n.unique(n.merge(this.get(),typeof D==="string"?n(D):n.makeArray(D))))},is:function(D){return !!D&&n.multiFilter(D,this).length>0},hasClass:function(D){return !!D&&this.is("."+D)},val:function(J){if(J===g){var D=this[0];if(D){if(n.nodeName(D,"option")){return(D.attributes.value||{}).specified?D.value:D.text}if(n.nodeName(D,"select")){var H=D.selectedIndex,K=[],L=D.options,G=D.type=="select-one";if(H<0){return null}for(var E=G?H:0,I=G?H+1:L.length;E<I;E++){var F=L[E];if(F.selected){J=n(F).val();if(G){return J}K.push(J)}}return K}return(D.value||"").replace(/\r/g,"")}return g}if(typeof J==="number"){J+=""}return this.each(function(){if(this.nodeType!=1){return}if(n.isArray(J)&&/radio|checkbox/.test(this.type)){this.checked=(n.inArray(this.value,J)>=0||n.inArray(this.name,J)>=0)}else{if(n.nodeName(this,"select")){var M=n.makeArray(J);n("option",this).each(function(){this.selected=(n.inArray(this.value,M)>=0||n.inArray(this.text,M)>=0)});if(!M.length){this.selectedIndex=-1}}else{this.value=J}}})},html:function(D){return D===g?(this[0]?this[0].innerHTML:null):this.empty().append(D)},replaceWith:function(D){return this.after(D).remove()},eq:function(D){return this.slice(D,+D+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(D){return this.pushStack(n.map(this,function(F,E){return D.call(F,E,F)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=n.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild,D=this.length>1?I.cloneNode(true):I;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),G>0?D.cloneNode(true):I)}}if(F){n.each(F,y)}}return this;function K(N,O){return M&&n.nodeName(N,"table")&&n.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};n.fn.init.prototype=n.fn;function y(D,E){if(E.src){n.ajax({url:E.src,async:false,dataType:"script"})}else{n.globalEval(E.text||E.textContent||E.innerHTML||"")}if(E.parentNode){E.parentNode.removeChild(E)}}function e(){return +new Date}n.extend=n.fn.extend=function(){var I=arguments[0]||{},G=1,H=arguments.length,D=false,F;if(typeof I==="boolean"){D=I;I=arguments[1]||{};G=2}if(typeof I!=="object"&&!n.isFunction(I)){I={}}if(H==G){I=this;--G}for(;G<H;G++){if((F=arguments[G])!=null){for(var E in F){var J=I[E],K=F[E];if(I===K){continue}if(D&&K&&typeof K==="object"&&!K.nodeType){I[E]=n.extend(D,J||(K.length!=null?[]:{}),K)}else{if(K!==g){I[E]=K}}}}}return I};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,p=document.defaultView||{},r=Object.prototype.toString;n.extend({noConflict:function(D){l.$=o;if(D){l.jQuery=x}return n},isFunction:function(D){return r.call(D)==="[object Function]"},isArray:function(D){return r.call(D)==="[object Array]"},isXMLDoc:function(D){return D.documentElement&&!D.body||D.tagName&&D.ownerDocument&&!D.ownerDocument.body},globalEval:function(F){F=n.trim(F);if(F){var E=document.getElementsByTagName("head")[0]||document.documentElement,D=document.createElement("script");D.type="text/javascript";if(n.support.scriptEval){D.appendChild(document.createTextNode(F))}else{D.text=F}E.insertBefore(D,E.firstChild);E.removeChild(D)}},nodeName:function(E,D){return E.nodeName&&E.nodeName.toUpperCase()==D.toUpperCase()},each:function(F,J,E){var D,G=0,H=F.length;if(E){if(H===g){for(D in F){if(J.apply(F[D],E)===false){break}}}else{for(;G<H;){if(J.apply(F[G++],E)===false){break}}}}else{if(H===g){for(D in F){if(J.call(F[D],D,F[D])===false){break}}}else{for(var I=F[0];G<H&&J.call(I,G,I)!==false;I=F[++G]){}}}return F},prop:function(G,H,F,E,D){if(n.isFunction(H)){H=H.call(G,E)}return typeof H==="number"&&F=="curCSS"&&!b.test(D)?H+"px":H},className:{add:function(D,E){n.each((E||"").split(/\s+/),function(F,G){if(D.nodeType==1&&!n.className.has(D.className,G)){D.className+=(D.className?" ":"")+G}})},remove:function(D,E){if(D.nodeType==1){D.className=E!==g?n.grep(D.className.split(/\s+/),function(F){return !n.className.has(E,F)}).join(" "):""}},has:function(E,D){return n.inArray(D,(E.className||E).toString().split(/\s+/))>-1}},swap:function(G,F,H){var D={};for(var E in F){D[E]=G.style[E];G.style[E]=F[E]}H.call(G);for(var E in F){G.style[E]=D[E]}},css:function(F,D,H){if(D=="width"||D=="height"){var J,E={position:"absolute",visibility:"hidden",display:"block"},I=D=="width"?["Left","Right"]:["Top","Bottom"];function G(){J=D=="width"?F.offsetWidth:F.offsetHeight;var L=0,K=0;n.each(I,function(){L+=parseFloat(n.curCSS(F,"padding"+this,true))||0;K+=parseFloat(n.curCSS(F,"border"+this+"Width",true))||0});J-=Math.round(L+K)}if(n(F).is(":visible")){G()}else{n.swap(F,E,G)}return Math.max(0,J)}return n.curCSS(F,D,H)},curCSS:function(H,E,F){var K,D=H.style;if(E=="opacity"&&!n.support.opacity){K=n.attr(D,"opacity");return K==""?"1":K}if(E.match(/float/i)){E=v}if(!F&&D&&D[E]){K=D[E]}else{if(p.getComputedStyle){if(E.match(/float/i)){E="float"}E=E.replace(/([A-Z])/g,"-$1").toLowerCase();var L=p.getComputedStyle(H,null);if(L){K=L.getPropertyValue(E)}if(E=="opacity"&&K==""){K="1"}}else{if(H.currentStyle){var I=E.replace(/\-(\w)/g,function(M,N){return N.toUpperCase()});K=H.currentStyle[E]||H.currentStyle[I];if(!/^\d+(px)?$/i.test(K)&&/^\d/.test(K)){var G=D.left,J=H.runtimeStyle.left;H.runtimeStyle.left=H.currentStyle.left;D.left=K||0;K=D.pixelLeft+"px";D.left=G;H.runtimeStyle.left=J}}}}return K},clean:function(E,J,H){J=J||document;if(typeof J.createElement==="undefined"){J=J.ownerDocument||J[0]&&J[0].ownerDocument||document}if(!H&&E.length===1&&typeof E[0]==="string"){var G=/^<(\w+)\s*\/?>$/.exec(E[0]);if(G){return[J.createElement(G[1])]}}var F=[],D=[],K=J.createElement("div");n.each(E,function(O,Q){if(typeof Q==="number"){Q+=""}if(!Q){return}if(typeof Q==="string"){Q=Q.replace(/(<(\w+)[^>]*?)\/>/g,function(S,T,R){return R.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?S:T+"></"+R+">"});var N=n.trim(Q).toLowerCase();var P=!N.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!N.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||N.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!N.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!N.indexOf("<td")||!N.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!N.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!n.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];K.innerHTML=P[1]+Q+P[2];while(P[0]--){K=K.lastChild}if(!n.support.tbody){var M=!N.indexOf("<table")&&N.indexOf("<tbody")<0?K.firstChild&&K.firstChild.childNodes:P[1]=="<table>"&&N.indexOf("<tbody")<0?K.childNodes:[];for(var L=M.length-1;L>=0;--L){if(n.nodeName(M[L],"tbody")&&!M[L].childNodes.length){M[L].parentNode.removeChild(M[L])}}}if(!n.support.leadingWhitespace&&/^\s/.test(Q)){K.insertBefore(J.createTextNode(Q.match(/^\s*/)[0]),K.firstChild)}Q=n.makeArray(K.childNodes)}if(Q.nodeType){F.push(Q)}else{F=n.merge(F,Q)}});if(H){for(var I=0;F[I];I++){if(n.nodeName(F[I],"script")&&(!F[I].type||F[I].type.toLowerCase()==="text/javascript")){D.push(F[I].parentNode?F[I].parentNode.removeChild(F[I]):F[I])}else{if(F[I].nodeType===1){F.splice.apply(F,[I+1,0].concat(n.makeArray(F[I].getElementsByTagName("script"))))}H.appendChild(F[I])}}return D}return F},attr:function(I,F,J){if(!I||I.nodeType==3||I.nodeType==8){return g}var G=!n.isXMLDoc(I),K=J!==g;F=G&&n.props[F]||F;if(I.tagName){var E=/href|src|style/.test(F);if(F=="selected"&&I.parentNode){I.parentNode.selectedIndex}if(F in I&&G&&!E){if(K){if(F=="type"&&n.nodeName(I,"input")&&I.parentNode){throw"type property can't be changed"}I[F]=J}if(n.nodeName(I,"form")&&I.getAttributeNode(F)){return I.getAttributeNode(F).nodeValue}if(F=="tabIndex"){var H=I.getAttributeNode("tabIndex");return H&&H.specified?H.value:I.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i)?0:g}return I[F]}if(!n.support.style&&G&&F=="style"){return n.attr(I.style,"cssText",J)}if(K){I.setAttribute(F,""+J)}var D=!n.support.hrefNormalized&&G&&E?I.getAttribute(F,2):I.getAttribute(F);return D===null?g:D}if(!n.support.opacity&&F=="opacity"){if(K){I.zoom=1;I.filter=(I.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(J)+""=="NaN"?"":"alpha(opacity="+J*100+")")}return I.filter&&I.filter.indexOf("opacity=")>=0?(parseFloat(I.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}F=F.replace(/-([a-z])/ig,function(L,M){return M.toUpperCase()});if(K){I[F]=J}return I[F]},trim:function(D){return(D||"").replace(/^\s+|\s+$/g,"")},makeArray:function(F){var D=[];if(F!=null){var E=F.length;if(E==null||typeof F==="string"||n.isFunction(F)||F.setInterval){D[0]=F}else{while(E){D[--E]=F[E]}}}return D},inArray:function(F,G){for(var D=0,E=G.length;D<E;D++){if(G[D]===F){return D}}return -1},merge:function(G,D){var E=0,F,H=G.length;if(!n.support.getAll){while((F=D[E++])!=null){if(F.nodeType!=8){G[H++]=F}}}else{while((F=D[E++])!=null){G[H++]=F}}return G},unique:function(J){var E=[],D={};try{for(var F=0,G=J.length;F<G;F++){var I=n.data(J[F]);if(!D[I]){D[I]=true;E.push(J[F])}}}catch(H){E=J}return E},grep:function(E,I,D){var F=[];for(var G=0,H=E.length;G<H;G++){if(!D!=!I(E[G],G)){F.push(E[G])}}return F},map:function(D,I){var E=[];for(var F=0,G=D.length;F<G;F++){var H=I(D[F],F);if(H!=null){E[E.length]=H}}return E.concat.apply([],E)}});var B=navigator.userAgent.toLowerCase();n.browser={version:(B.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(B),opera:/opera/.test(B),msie:/msie/.test(B)&&!/opera/.test(B),mozilla:/mozilla/.test(B)&&!/(compatible|webkit)/.test(B)};n.each({parent:function(D){return D.parentNode},parents:function(D){return n.dir(D,"parentNode")},next:function(D){return n.nth(D,2,"nextSibling")},prev:function(D){return n.nth(D,2,"previousSibling")},nextAll:function(D){return n.dir(D,"nextSibling")},prevAll:function(D){return n.dir(D,"previousSibling")},siblings:function(D){return n.sibling(D.parentNode.firstChild,D)},children:function(D){return n.sibling(D.firstChild)},contents:function(D){return n.nodeName(D,"iframe")?D.contentDocument||D.contentWindow.document:n.makeArray(D.childNodes)}},function(D,E){n.fn[D]=function(F){var G=n.map(this,E);if(F&&typeof F=="string"){G=n.multiFilter(F,G)}return this.pushStack(n.unique(G),D,F)}});n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(D,E){n.fn[D]=function(){var F=arguments;return this.each(function(){for(var G=0,H=F.length;G<H;G++){n(F[G])[E](this)}})}});n.each({removeAttr:function(D){n.attr(this,D,"");if(this.nodeType==1){this.removeAttribute(D)}},addClass:function(D){n.className.add(this,D)},removeClass:function(D){n.className.remove(this,D)},toggleClass:function(E,D){if(typeof D!=="boolean"){D=!n.className.has(this,E)}n.className[D?"add":"remove"](this,E)},remove:function(D){if(!D||n.filter(D,[this]).length){n("*",this).add([this]).each(function(){n.event.remove(this);n.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){n(">*",this).remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(D,E){n.fn[D]=function(){return this.each(E,arguments)}});function j(D,E){return D[0]&&parseInt(n.curCSS(D[0],E,true),10)||0}var h="jQuery"+e(),u=0,z={};n.extend({cache:{},data:function(E,D,F){E=E==l?z:E;var G=E[h];if(!G){G=E[h]=++u}if(D&&!n.cache[G]){n.cache[G]={}}if(F!==g){n.cache[G][D]=F}return D?n.cache[G][D]:G},removeData:function(E,D){E=E==l?z:E;var G=E[h];if(D){if(n.cache[G]){delete n.cache[G][D];D="";for(D in n.cache[G]){break}if(!D){n.removeData(E)}}}else{try{delete E[h]}catch(F){if(E.removeAttribute){E.removeAttribute(h)}}delete n.cache[G]}},queue:function(E,D,G){if(E){D=(D||"fx")+"queue";var F=n.data(E,D);if(!F||n.isArray(G)){F=n.data(E,D,n.makeArray(G))}else{if(G){F.push(G)}}}return F},dequeue:function(G,F){var D=n.queue(G,F),E=D.shift();if(!F||F==="fx"){E=D[0]}if(E!==g){E.call(G)}}});n.fn.extend({data:function(D,F){var G=D.split(".");G[1]=G[1]?"."+G[1]:"";if(F===g){var E=this.triggerHandler("getData"+G[1]+"!",[G[0]]);if(E===g&&this.length){E=n.data(this[0],D)}return E===g&&G[1]?this.data(G[0]):E}else{return this.trigger("setData"+G[1]+"!",[G[0],F]).each(function(){n.data(this,D,F)})}},removeData:function(D){return this.each(function(){n.removeData(this,D)})},queue:function(D,E){if(typeof D!=="string"){E=D;D="fx"}if(E===g){return n.queue(this[0],D)}return this.each(function(){var F=n.queue(this,D,E);if(D=="fx"&&F.length==1){F[0].call(this)}})},dequeue:function(D){return this.each(function(){n.dequeue(this,D)})}});\r
20876 /*\r
20877  * Sizzle CSS Selector Engine - v0.9.1\r
20878  *  Copyright 2009, The Dojo Foundation\r
20879  *  Released under the MIT, BSD, and GPL Licenses.\r
20880  *  More information: http://sizzlejs.com/\r
20881  */\r
20882 (function(){var N=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|[^[\]]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,I=0,F=Object.prototype.toString;var E=function(ae,S,aa,V){aa=aa||[];S=S||document;if(S.nodeType!==1&&S.nodeType!==9){return[]}if(!ae||typeof ae!=="string"){return aa}var ab=[],ac,Y,ah,ag,Z,R,Q=true;N.lastIndex=0;while((ac=N.exec(ae))!==null){ab.push(ac[1]);if(ac[2]){R=RegExp.rightContext;break}}if(ab.length>1&&G.match.POS.exec(ae)){if(ab.length===2&&G.relative[ab[0]]){var U="",X;while((X=G.match.POS.exec(ae))){U+=X[0];ae=ae.replace(G.match.POS,"")}Y=E.filter(U,E(/\s$/.test(ae)?ae+"*":ae,S))}else{Y=G.relative[ab[0]]?[S]:E(ab.shift(),S);while(ab.length){var P=[];ae=ab.shift();if(G.relative[ae]){ae+=ab.shift()}for(var af=0,ad=Y.length;af<ad;af++){E(ae,Y[af],P)}Y=P}}}else{var ai=V?{expr:ab.pop(),set:D(V)}:E.find(ab.pop(),ab.length===1&&S.parentNode?S.parentNode:S);Y=E.filter(ai.expr,ai.set);if(ab.length>0){ah=D(Y)}else{Q=false}while(ab.length){var T=ab.pop(),W=T;if(!G.relative[T]){T=""}else{W=ab.pop()}if(W==null){W=S}G.relative[T](ah,W,M(S))}}if(!ah){ah=Y}if(!ah){throw"Syntax error, unrecognized expression: "+(T||ae)}if(F.call(ah)==="[object Array]"){if(!Q){aa.push.apply(aa,ah)}else{if(S.nodeType===1){for(var af=0;ah[af]!=null;af++){if(ah[af]&&(ah[af]===true||ah[af].nodeType===1&&H(S,ah[af]))){aa.push(Y[af])}}}else{for(var af=0;ah[af]!=null;af++){if(ah[af]&&ah[af].nodeType===1){aa.push(Y[af])}}}}}else{D(ah,aa)}if(R){E(R,S,aa,V)}return aa};E.matches=function(P,Q){return E(P,null,null,Q)};E.find=function(V,S){var W,Q;if(!V){return[]}for(var R=0,P=G.order.length;R<P;R++){var T=G.order[R],Q;if((Q=G.match[T].exec(V))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){Q[1]=(Q[1]||"").replace(/\\/g,"");W=G.find[T](Q,S);if(W!=null){V=V.replace(G.match[T],"");break}}}}if(!W){W=S.getElementsByTagName("*")}return{set:W,expr:V}};E.filter=function(S,ac,ad,T){var Q=S,Y=[],ah=ac,V,ab;while(S&&ac.length){for(var U in G.filter){if((V=G.match[U].exec(S))!=null){var Z=G.filter[U],R=null,X=0,aa,ag;ab=false;if(ah==Y){Y=[]}if(G.preFilter[U]){V=G.preFilter[U](V,ah,ad,Y,T);if(!V){ab=aa=true}else{if(V===true){continue}else{if(V[0]===true){R=[];var W=null,af;for(var ae=0;(af=ah[ae])!==g;ae++){if(af&&W!==af){R.push(af);W=af}}}}}}if(V){for(var ae=0;(ag=ah[ae])!==g;ae++){if(ag){if(R&&ag!=R[X]){X++}aa=Z(ag,V,X,R);var P=T^!!aa;if(ad&&aa!=null){if(P){ab=true}else{ah[ae]=false}}else{if(P){Y.push(ag);ab=true}}}}}if(aa!==g){if(!ad){ah=Y}S=S.replace(G.match[U],"");if(!ab){return[]}break}}}S=S.replace(/\s*,\s*/,"");if(S==Q){if(ab==null){throw"Syntax error, unrecognized expression: "+S}else{break}}Q=S}return ah};var G=E.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(P){return P.getAttribute("href")}},relative:{"+":function(T,Q){for(var R=0,P=T.length;R<P;R++){var S=T[R];if(S){var U=S.previousSibling;while(U&&U.nodeType!==1){U=U.previousSibling}T[R]=typeof Q==="string"?U||false:U===Q}}if(typeof Q==="string"){E.filter(Q,T,true)}},">":function(U,Q,V){if(typeof Q==="string"&&!/\W/.test(Q)){Q=V?Q:Q.toUpperCase();for(var R=0,P=U.length;R<P;R++){var T=U[R];if(T){var S=T.parentNode;U[R]=S.nodeName===Q?S:false}}}else{for(var R=0,P=U.length;R<P;R++){var T=U[R];if(T){U[R]=typeof Q==="string"?T.parentNode:T.parentNode===Q}}if(typeof Q==="string"){E.filter(Q,U,true)}}},"":function(S,Q,U){var R="done"+(I++),P=O;if(!Q.match(/\W/)){var T=Q=U?Q:Q.toUpperCase();P=L}P("parentNode",Q,R,S,T,U)},"~":function(S,Q,U){var R="done"+(I++),P=O;if(typeof Q==="string"&&!Q.match(/\W/)){var T=Q=U?Q:Q.toUpperCase();P=L}P("previousSibling",Q,R,S,T,U)}},find:{ID:function(Q,R){if(R.getElementById){var P=R.getElementById(Q[1]);return P?[P]:[]}},NAME:function(P,Q){return Q.getElementsByName?Q.getElementsByName(P[1]):null},TAG:function(P,Q){return Q.getElementsByTagName(P[1])}},preFilter:{CLASS:function(S,Q,R,P,U){S=" "+S[1].replace(/\\/g,"")+" ";for(var T=0;Q[T];T++){if(U^(" "+Q[T].className+" ").indexOf(S)>=0){if(!R){P.push(Q[T])}}else{if(R){Q[T]=false}}}return false},ID:function(P){return P[1].replace(/\\/g,"")},TAG:function(Q,P){for(var R=0;!P[R];R++){}return M(P[R])?Q[1]:Q[1].toUpperCase()},CHILD:function(P){if(P[1]=="nth"){var Q=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(P[2]=="even"&&"2n"||P[2]=="odd"&&"2n+1"||!/\D/.test(P[2])&&"0n+"+P[2]||P[2]);P[2]=(Q[1]+(Q[2]||1))-0;P[3]=Q[3]-0}P[0]="done"+(I++);return P},ATTR:function(Q){var P=Q[1];if(G.attrMap[P]){Q[1]=G.attrMap[P]}if(Q[2]==="~="){Q[4]=" "+Q[4]+" "}return Q},PSEUDO:function(T,Q,R,P,U){if(T[1]==="not"){if(T[3].match(N).length>1){T[3]=E(T[3],null,null,Q)}else{var S=E.filter(T[3],Q,R,true^U);if(!R){P.push.apply(P,S)}return false}}else{if(G.match.POS.test(T[0])){return true}}return T},POS:function(P){P.unshift(true);return P}},filters:{enabled:function(P){return P.disabled===false&&P.type!=="hidden"},disabled:function(P){return P.disabled===true},checked:function(P){return P.checked===true},selected:function(P){P.parentNode.selectedIndex;return P.selected===true},parent:function(P){return !!P.firstChild},empty:function(P){return !P.firstChild},has:function(R,Q,P){return !!E(P[3],R).length},header:function(P){return/h\d/i.test(P.nodeName)},text:function(P){return"text"===P.type},radio:function(P){return"radio"===P.type},checkbox:function(P){return"checkbox"===P.type},file:function(P){return"file"===P.type},password:function(P){return"password"===P.type},submit:function(P){return"submit"===P.type},image:function(P){return"image"===P.type},reset:function(P){return"reset"===P.type},button:function(P){return"button"===P.type||P.nodeName.toUpperCase()==="BUTTON"},input:function(P){return/input|select|textarea|button/i.test(P.nodeName)}},setFilters:{first:function(Q,P){return P===0},last:function(R,Q,P,S){return Q===S.length-1},even:function(Q,P){return P%2===0},odd:function(Q,P){return P%2===1},lt:function(R,Q,P){return Q<P[3]-0},gt:function(R,Q,P){return Q>P[3]-0},nth:function(R,Q,P){return P[3]-0==Q},eq:function(R,Q,P){return P[3]-0==Q}},filter:{CHILD:function(P,S){var V=S[1],W=P.parentNode;var U="child"+W.childNodes.length;if(W&&(!W[U]||!P.nodeIndex)){var T=1;for(var Q=W.firstChild;Q;Q=Q.nextSibling){if(Q.nodeType==1){Q.nodeIndex=T++}}W[U]=T-1}if(V=="first"){return P.nodeIndex==1}else{if(V=="last"){return P.nodeIndex==W[U]}else{if(V=="only"){return W[U]==1}else{if(V=="nth"){var Y=false,R=S[2],X=S[3];if(R==1&&X==0){return true}if(R==0){if(P.nodeIndex==X){Y=true}}else{if((P.nodeIndex-X)%R==0&&(P.nodeIndex-X)/R>=0){Y=true}}return Y}}}}},PSEUDO:function(V,R,S,W){var Q=R[1],T=G.filters[Q];if(T){return T(V,S,R,W)}else{if(Q==="contains"){return(V.textContent||V.innerText||"").indexOf(R[3])>=0}else{if(Q==="not"){var U=R[3];for(var S=0,P=U.length;S<P;S++){if(U[S]===V){return false}}return true}}}},ID:function(Q,P){return Q.nodeType===1&&Q.getAttribute("id")===P},TAG:function(Q,P){return(P==="*"&&Q.nodeType===1)||Q.nodeName===P},CLASS:function(Q,P){return P.test(Q.className)},ATTR:function(T,R){var P=G.attrHandle[R[1]]?G.attrHandle[R[1]](T):T[R[1]]||T.getAttribute(R[1]),U=P+"",S=R[2],Q=R[4];return P==null?false:S==="="?U===Q:S==="*="?U.indexOf(Q)>=0:S==="~="?(" "+U+" ").indexOf(Q)>=0:!R[4]?P:S==="!="?U!=Q:S==="^="?U.indexOf(Q)===0:S==="$="?U.substr(U.length-Q.length)===Q:S==="|="?U===Q||U.substr(0,Q.length+1)===Q+"-":false},POS:function(T,Q,R,U){var P=Q[2],S=G.setFilters[P];if(S){return S(T,R,Q,U)}}}};for(var K in G.match){G.match[K]=RegExp(G.match[K].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var D=function(Q,P){Q=Array.prototype.slice.call(Q);if(P){P.push.apply(P,Q);return P}return Q};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(J){D=function(T,S){var Q=S||[];if(F.call(T)==="[object Array]"){Array.prototype.push.apply(Q,T)}else{if(typeof T.length==="number"){for(var R=0,P=T.length;R<P;R++){Q.push(T[R])}}else{for(var R=0;T[R];R++){Q.push(T[R])}}}return Q}}(function(){var Q=document.createElement("form"),R="script"+(new Date).getTime();Q.innerHTML="<input name='"+R+"'/>";var P=document.documentElement;P.insertBefore(Q,P.firstChild);if(!!document.getElementById(R)){G.find.ID=function(T,U){if(U.getElementById){var S=U.getElementById(T[1]);return S?S.id===T[1]||S.getAttributeNode&&S.getAttributeNode("id").nodeValue===T[1]?[S]:g:[]}};G.filter.ID=function(U,S){var T=U.getAttributeNode&&U.getAttributeNode("id");return U.nodeType===1&&T&&T.nodeValue===S}}P.removeChild(Q)})();(function(){var P=document.createElement("div");P.appendChild(document.createComment(""));if(P.getElementsByTagName("*").length>0){G.find.TAG=function(Q,U){var T=U.getElementsByTagName(Q[1]);if(Q[1]==="*"){var S=[];for(var R=0;T[R];R++){if(T[R].nodeType===1){S.push(T[R])}}T=S}return T}}P.innerHTML="<a href='#'></a>";if(P.firstChild.getAttribute("href")!=="#"){G.attrHandle.href=function(Q){return Q.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var P=E;E=function(T,S,Q,R){S=S||document;if(!R&&S.nodeType===9){try{return D(S.querySelectorAll(T),Q)}catch(U){}}return P(T,S,Q,R)};E.find=P.find;E.filter=P.filter;E.selectors=P.selectors;E.matches=P.matches})()}if(document.documentElement.getElementsByClassName){G.order.splice(1,0,"CLASS");G.find.CLASS=function(P,Q){return Q.getElementsByClassName(P[1])}}function L(Q,W,V,Z,X,Y){for(var T=0,R=Z.length;T<R;T++){var P=Z[T];if(P){P=P[Q];var U=false;while(P&&P.nodeType){var S=P[V];if(S){U=Z[S];break}if(P.nodeType===1&&!Y){P[V]=T}if(P.nodeName===W){U=P;break}P=P[Q]}Z[T]=U}}}function O(Q,V,U,Y,W,X){for(var S=0,R=Y.length;S<R;S++){var P=Y[S];if(P){P=P[Q];var T=false;while(P&&P.nodeType){if(P[U]){T=Y[P[U]];break}if(P.nodeType===1){if(!X){P[U]=S}if(typeof V!=="string"){if(P===V){T=true;break}}else{if(E.filter(V,[P]).length>0){T=P;break}}}P=P[Q]}Y[S]=T}}}var H=document.compareDocumentPosition?function(Q,P){return Q.compareDocumentPosition(P)&16}:function(Q,P){return Q!==P&&(Q.contains?Q.contains(P):true)};var M=function(P){return P.documentElement&&!P.body||P.tagName&&P.ownerDocument&&!P.ownerDocument.body};n.find=E;n.filter=E.filter;n.expr=E.selectors;n.expr[":"]=n.expr.filters;E.selectors.filters.hidden=function(P){return"hidden"===P.type||n.css(P,"display")==="none"||n.css(P,"visibility")==="hidden"};E.selectors.filters.visible=function(P){return"hidden"!==P.type&&n.css(P,"display")!=="none"&&n.css(P,"visibility")!=="hidden"};E.selectors.filters.animated=function(P){return n.grep(n.timers,function(Q){return P===Q.elem}).length};n.multiFilter=function(R,P,Q){if(Q){R=":not("+R+")"}return E.matches(R,P)};n.dir=function(R,Q){var P=[],S=R[Q];while(S&&S!=document){if(S.nodeType==1){P.push(S)}S=S[Q]}return P};n.nth=function(T,P,R,S){P=P||1;var Q=0;for(;T;T=T[R]){if(T.nodeType==1&&++Q==P){break}}return T};n.sibling=function(R,Q){var P=[];for(;R;R=R.nextSibling){if(R.nodeType==1&&R!=Q){P.push(R)}}return P};return;l.Sizzle=E})();n.event={add:function(H,E,G,J){if(H.nodeType==3||H.nodeType==8){return}if(H.setInterval&&H!=l){H=l}if(!G.guid){G.guid=this.guid++}if(J!==g){var F=G;G=this.proxy(F);G.data=J}var D=n.data(H,"events")||n.data(H,"events",{}),I=n.data(H,"handle")||n.data(H,"handle",function(){return typeof n!=="undefined"&&!n.event.triggered?n.event.handle.apply(arguments.callee.elem,arguments):g});I.elem=H;n.each(E.split(/\s+/),function(L,M){var N=M.split(".");M=N.shift();G.type=N.slice().sort().join(".");var K=D[M];if(n.event.specialAll[M]){n.event.specialAll[M].setup.call(H,J,N)}if(!K){K=D[M]={};if(!n.event.special[M]||n.event.special[M].setup.call(H,J,N)===false){if(H.addEventListener){H.addEventListener(M,I,false)}else{if(H.attachEvent){H.attachEvent("on"+M,I)}}}}K[G.guid]=G;n.event.global[M]=true});H=null},guid:1,global:{},remove:function(J,G,I){if(J.nodeType==3||J.nodeType==8){return}var F=n.data(J,"events"),E,D;if(F){if(G===g||(typeof G==="string"&&G.charAt(0)==".")){for(var H in F){this.remove(J,H+(G||""))}}else{if(G.type){I=G.handler;G=G.type}n.each(G.split(/\s+/),function(L,N){var P=N.split(".");N=P.shift();var M=RegExp("(^|\\.)"+P.slice().sort().join(".*\\.")+"(\\.|$)");if(F[N]){if(I){delete F[N][I.guid]}else{for(var O in F[N]){if(M.test(F[N][O].type)){delete F[N][O]}}}if(n.event.specialAll[N]){n.event.specialAll[N].teardown.call(J,P)}for(E in F[N]){break}if(!E){if(!n.event.special[N]||n.event.special[N].teardown.call(J,P)===false){if(J.removeEventListener){J.removeEventListener(N,n.data(J,"handle"),false)}else{if(J.detachEvent){J.detachEvent("on"+N,n.data(J,"handle"))}}}E=null;delete F[N]}}})}for(E in F){break}if(!E){var K=n.data(J,"handle");if(K){K.elem=null}n.removeData(J,"events");n.removeData(J,"handle")}}},trigger:function(H,J,G,D){var F=H.type||H;if(!D){H=typeof H==="object"?H[h]?H:n.extend(n.Event(F),H):n.Event(F);if(F.indexOf("!")>=0){H.type=F=F.slice(0,-1);H.exclusive=true}if(!G){H.stopPropagation();if(this.global[F]){n.each(n.cache,function(){if(this.events&&this.events[F]){n.event.trigger(H,J,this.handle.elem)}})}}if(!G||G.nodeType==3||G.nodeType==8){return g}H.result=g;H.target=G;J=n.makeArray(J);J.unshift(H)}H.currentTarget=G;var I=n.data(G,"handle");if(I){I.apply(G,J)}if((!G[F]||(n.nodeName(G,"a")&&F=="click"))&&G["on"+F]&&G["on"+F].apply(G,J)===false){H.result=false}if(!D&&G[F]&&!H.isDefaultPrevented()&&!(n.nodeName(G,"a")&&F=="click")){this.triggered=true;try{G[F]()}catch(K){}}this.triggered=false;if(!H.isPropagationStopped()){var E=G.parentNode||G.ownerDocument;if(E){n.event.trigger(H,J,E,true)}}},handle:function(J){var I,D;J=arguments[0]=n.event.fix(J||l.event);var K=J.type.split(".");J.type=K.shift();I=!K.length&&!J.exclusive;var H=RegExp("(^|\\.)"+K.slice().sort().join(".*\\.")+"(\\.|$)");D=(n.data(this,"events")||{})[J.type];for(var F in D){var G=D[F];if(I||H.test(G.type)){J.handler=G;J.data=G.data;var E=G.apply(this,arguments);if(E!==g){J.result=E;if(E===false){J.preventDefault();J.stopPropagation()}}if(J.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(G){if(G[h]){return G}var E=G;G=n.Event(E);for(var F=this.props.length,I;F;){I=this.props[--F];G[I]=E[I]}if(!G.target){G.target=G.srcElement||document}if(G.target.nodeType==3){G.target=G.target.parentNode}if(!G.relatedTarget&&G.fromElement){G.relatedTarget=G.fromElement==G.target?G.toElement:G.fromElement}if(G.pageX==null&&G.clientX!=null){var H=document.documentElement,D=document.body;G.pageX=G.clientX+(H&&H.scrollLeft||D&&D.scrollLeft||0)-(H.clientLeft||0);G.pageY=G.clientY+(H&&H.scrollTop||D&&D.scrollTop||0)-(H.clientTop||0)}if(!G.which&&((G.charCode||G.charCode===0)?G.charCode:G.keyCode)){G.which=G.charCode||G.keyCode}if(!G.metaKey&&G.ctrlKey){G.metaKey=G.ctrlKey}if(!G.which&&G.button){G.which=(G.button&1?1:(G.button&2?3:(G.button&4?2:0)))}return G},proxy:function(E,D){D=D||function(){return E.apply(this,arguments)};D.guid=E.guid=E.guid||D.guid||this.guid++;return D},special:{ready:{setup:A,teardown:function(){}}},specialAll:{live:{setup:function(D,E){n.event.add(this,E[0],c)},teardown:function(F){if(F.length){var D=0,E=RegExp("(^|\\.)"+F[0]+"(\\.|$)");n.each((n.data(this,"events").live||{}),function(){if(E.test(this.type)){D++}});if(D<1){n.event.remove(this,F[0],c)}}}}}};n.Event=function(D){if(!this.preventDefault){return new n.Event(D)}if(D&&D.type){this.originalEvent=D;this.type=D.type;this.timeStamp=D.timeStamp}else{this.type=D}if(!this.timeStamp){this.timeStamp=e()}this[h]=true};function k(){return false}function t(){return true}n.Event.prototype={preventDefault:function(){this.isDefaultPrevented=t;var D=this.originalEvent;if(!D){return}if(D.preventDefault){D.preventDefault()}D.returnValue=false},stopPropagation:function(){this.isPropagationStopped=t;var D=this.originalEvent;if(!D){return}if(D.stopPropagation){D.stopPropagation()}D.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=t;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(E){var D=E.relatedTarget;while(D&&D!=this){try{D=D.parentNode}catch(F){D=this}}if(D!=this){E.type=E.data;n.event.handle.apply(this,arguments)}};n.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(E,D){n.event.special[D]={setup:function(){n.event.add(this,E,a,D)},teardown:function(){n.event.remove(this,E,a)}}});n.fn.extend({bind:function(E,F,D){return E=="unload"?this.one(E,F,D):this.each(function(){n.event.add(this,E,D||F,D&&F)})},one:function(F,G,E){var D=n.event.proxy(E||G,function(H){n(this).unbind(H,D);return(E||G).apply(this,arguments)});return this.each(function(){n.event.add(this,F,D,E&&G)})},unbind:function(E,D){return this.each(function(){n.event.remove(this,E,D)})},trigger:function(D,E){return this.each(function(){n.event.trigger(D,E,this)})},triggerHandler:function(D,F){if(this[0]){var E=n.Event(D);E.preventDefault();E.stopPropagation();n.event.trigger(E,F,this[0]);return E.result}},toggle:function(F){var D=arguments,E=1;while(E<D.length){n.event.proxy(F,D[E++])}return this.click(n.event.proxy(F,function(G){this.lastToggle=(this.lastToggle||0)%E;G.preventDefault();return D[this.lastToggle++].apply(this,arguments)||false}))},hover:function(D,E){return this.mouseenter(D).mouseleave(E)},ready:function(D){A();if(n.isReady){D.call(document,n)}else{n.readyList.push(D)}return this},live:function(F,E){var D=n.event.proxy(E);D.guid+=this.selector+F;n(document).bind(i(F,this.selector),this.selector,D);return this},die:function(E,D){n(document).unbind(i(E,this.selector),D?{guid:D.guid+this.selector+E}:null);return this}});function c(G){var D=RegExp("(^|\\.)"+G.type+"(\\.|$)"),F=true,E=[];n.each(n.data(this,"events").live||[],function(H,I){if(D.test(I.type)){var J=n(G.target).closest(I.data)[0];if(J){E.push({elem:J,fn:I})}}});n.each(E,function(){if(!G.isImmediatePropagationStopped()&&this.fn.call(this.elem,G,this.fn.data)===false){F=false}});return F}function i(E,D){return["live",E,D.replace(/\./g,"`").replace(/ /g,"|")].join(".")}n.extend({isReady:false,readyList:[],ready:function(){if(!n.isReady){n.isReady=true;if(n.readyList){n.each(n.readyList,function(){this.call(document,n)});n.readyList=null}n(document).triggerHandler("ready")}}});var w=false;function A(){if(w){return}w=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);n.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);n.ready()}});if(document.documentElement.doScroll&&!l.frameElement){(function(){if(n.isReady){return}try{document.documentElement.doScroll("left")}catch(D){setTimeout(arguments.callee,0);return}n.ready()})()}}}n.event.add(l,"load",n.ready)}n.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(E,D){n.fn[D]=function(F){return F?this.bind(D,F):this.trigger(D)}});n(l).bind("unload",function(){for(var D in n.cache){if(D!=1&&n.cache[D].handle){n.event.remove(n.cache[D].handle.elem)}}});(function(){n.support={};var E=document.documentElement,F=document.createElement("script"),J=document.createElement("div"),I="script"+(new Date).getTime();J.style.display="none";J.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var G=J.getElementsByTagName("*"),D=J.getElementsByTagName("a")[0];if(!G||!G.length||!D){return}n.support={leadingWhitespace:J.firstChild.nodeType==3,tbody:!J.getElementsByTagName("tbody").length,objectAll:!!J.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!J.getElementsByTagName("link").length,style:/red/.test(D.getAttribute("style")),hrefNormalized:D.getAttribute("href")==="/a",opacity:D.style.opacity==="0.5",cssFloat:!!D.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};F.type="text/javascript";try{F.appendChild(document.createTextNode("window."+I+"=1;"))}catch(H){}E.insertBefore(F,E.firstChild);if(l[I]){n.support.scriptEval=true;delete l[I]}E.removeChild(F);if(J.attachEvent&&J.fireEvent){J.attachEvent("onclick",function(){n.support.noCloneEvent=false;J.detachEvent("onclick",arguments.callee)});J.cloneNode(true).fireEvent("onclick")}n(function(){var K=document.createElement("div");K.style.width="1px";K.style.paddingLeft="1px";document.body.appendChild(K);n.boxModel=n.support.boxModel=K.offsetWidth===2;document.body.removeChild(K)})})();var v=n.support.cssFloat?"cssFloat":"styleFloat";n.props={"for":"htmlFor","class":"className","float":v,cssFloat:v,styleFloat:v,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};n.fn.extend({_load:n.fn.load,load:function(F,I,J){if(typeof F!=="string"){return this._load(F)}var H=F.indexOf(" ");if(H>=0){var D=F.slice(H,F.length);F=F.slice(0,H)}var G="GET";if(I){if(n.isFunction(I)){J=I;I=null}else{if(typeof I==="object"){I=n.param(I);G="POST"}}}var E=this;n.ajax({url:F,type:G,dataType:"html",data:I,complete:function(L,K){if(K=="success"||K=="notmodified"){E.html(D?n("<div/>").append(L.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(D):L.responseText)}if(J){E.each(J,[L.responseText,K,L])}}});return this},serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?n.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type))}).map(function(D,E){var F=n(this).val();return F==null?null:n.isArray(F)?n.map(F,function(H,G){return{name:E.name,value:H}}):{name:E.name,value:F}}).get()}});n.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(D,E){n.fn[E]=function(F){return this.bind(E,F)}});var q=e();n.extend({get:function(D,F,G,E){if(n.isFunction(F)){G=F;F=null}return n.ajax({type:"GET",url:D,data:F,success:G,dataType:E})},getScript:function(D,E){return n.get(D,null,E,"script")},getJSON:function(D,E,F){return n.get(D,E,F,"json")},post:function(D,F,G,E){if(n.isFunction(F)){G=F;F={}}return n.ajax({type:"POST",url:D,data:F,success:G,dataType:E})},ajaxSetup:function(D){n.extend(n.ajaxSettings,D)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(L){L=n.extend(true,L,n.extend(true,{},n.ajaxSettings,L));var V,E=/=\?(&|$)/g,Q,U,F=L.type.toUpperCase();if(L.data&&L.processData&&typeof L.data!=="string"){L.data=n.param(L.data)}if(L.dataType=="jsonp"){if(F=="GET"){if(!L.url.match(E)){L.url+=(L.url.match(/\?/)?"&":"?")+(L.jsonp||"callback")+"=?"}}else{if(!L.data||!L.data.match(E)){L.data=(L.data?L.data+"&":"")+(L.jsonp||"callback")+"=?"}}L.dataType="json"}if(L.dataType=="json"&&(L.data&&L.data.match(E)||L.url.match(E))){V="jsonp"+q++;if(L.data){L.data=(L.data+"").replace(E,"="+V+"$1")}L.url=L.url.replace(E,"="+V+"$1");L.dataType="script";l[V]=function(W){U=W;H();K();l[V]=g;try{delete l[V]}catch(X){}if(G){G.removeChild(S)}}}if(L.dataType=="script"&&L.cache==null){L.cache=false}if(L.cache===false&&F=="GET"){var D=e();var T=L.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+D+"$2");L.url=T+((T==L.url)?(L.url.match(/\?/)?"&":"?")+"_="+D:"")}if(L.data&&F=="GET"){L.url+=(L.url.match(/\?/)?"&":"?")+L.data;L.data=null}if(L.global&&!n.active++){n.event.trigger("ajaxStart")}var P=/^(\w+:)?\/\/([^\/?#]+)/.exec(L.url);if(L.dataType=="script"&&F=="GET"&&P&&(P[1]&&P[1]!=location.protocol||P[2]!=location.host)){var G=document.getElementsByTagName("head")[0];var S=document.createElement("script");S.src=L.url;if(L.scriptCharset){S.charset=L.scriptCharset}if(!V){var N=false;S.onload=S.onreadystatechange=function(){if(!N&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){N=true;H();K();G.removeChild(S)}}}G.appendChild(S);return g}var J=false;var I=L.xhr();if(L.username){I.open(F,L.url,L.async,L.username,L.password)}else{I.open(F,L.url,L.async)}try{if(L.data){I.setRequestHeader("Content-Type",L.contentType)}if(L.ifModified){I.setRequestHeader("If-Modified-Since",n.lastModified[L.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}I.setRequestHeader("X-Requested-With","XMLHttpRequest");I.setRequestHeader("Accept",L.dataType&&L.accepts[L.dataType]?L.accepts[L.dataType]+", */*":L.accepts._default)}catch(R){}if(L.beforeSend&&L.beforeSend(I,L)===false){if(L.global&&!--n.active){n.event.trigger("ajaxStop")}I.abort();return false}if(L.global){n.event.trigger("ajaxSend",[I,L])}var M=function(W){if(I.readyState==0){if(O){clearInterval(O);O=null;if(L.global&&!--n.active){n.event.trigger("ajaxStop")}}}else{if(!J&&I&&(I.readyState==4||W=="timeout")){J=true;if(O){clearInterval(O);O=null}Q=W=="timeout"?"timeout":!n.httpSuccess(I)?"error":L.ifModified&&n.httpNotModified(I,L.url)?"notmodified":"success";if(Q=="success"){try{U=n.httpData(I,L.dataType,L)}catch(Y){Q="parsererror"}}if(Q=="success"){var X;try{X=I.getResponseHeader("Last-Modified")}catch(Y){}if(L.ifModified&&X){n.lastModified[L.url]=X}if(!V){H()}}else{n.handleError(L,I,Q)}K();if(L.async){I=null}}}};if(L.async){var O=setInterval(M,13);if(L.timeout>0){setTimeout(function(){if(I){if(!J){M("timeout")}if(I){I.abort()}}},L.timeout)}}try{I.send(L.data)}catch(R){n.handleError(L,I,null,R)}if(!L.async){M()}function H(){if(L.success){L.success(U,Q)}if(L.global){n.event.trigger("ajaxSuccess",[I,L])}}function K(){if(L.complete){L.complete(I,Q)}if(L.global){n.event.trigger("ajaxComplete",[I,L])}if(L.global&&!--n.active){n.event.trigger("ajaxStop")}}return I},handleError:function(E,G,D,F){if(E.error){E.error(G,D,F)}if(E.global){n.event.trigger("ajaxError",[G,E,F])}},active:0,httpSuccess:function(E){try{return !E.status&&location.protocol=="file:"||(E.status>=200&&E.status<300)||E.status==304||E.status==1223}catch(D){}return false},httpNotModified:function(F,D){try{var G=F.getResponseHeader("Last-Modified");return F.status==304||G==n.lastModified[D]}catch(E){}return false},httpData:function(I,G,F){var E=I.getResponseHeader("content-type"),D=G=="xml"||!G&&E&&E.indexOf("xml")>=0,H=D?I.responseXML:I.responseText;if(D&&H.documentElement.tagName=="parsererror"){throw"parsererror"}if(F&&F.dataFilter){H=F.dataFilter(H,G)}if(typeof H==="string"){if(G=="script"){n.globalEval(H)}if(G=="json"){H=l["eval"]("("+H+")")}}return H},param:function(D){var F=[];function G(H,I){F[F.length]=encodeURIComponent(H)+"="+encodeURIComponent(I)}if(n.isArray(D)||D.jquery){n.each(D,function(){G(this.name,this.value)})}else{for(var E in D){if(n.isArray(D[E])){n.each(D[E],function(){G(E,this)})}else{G(E,n.isFunction(D[E])?D[E]():D[E])}}}return F.join("&").replace(/%20/g,"+")}});var m={},d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function s(E,D){var F={};n.each(d.concat.apply([],d.slice(0,D)),function(){F[this]=E});return F}n.fn.extend({show:function(I,K){if(I){return this.animate(s("show",3),I,K)}else{for(var G=0,E=this.length;G<E;G++){var D=n.data(this[G],"olddisplay");this[G].style.display=D||"";if(n.css(this[G],"display")==="none"){var F=this[G].tagName,J;if(m[F]){J=m[F]}else{var H=n("<"+F+" />").appendTo("body");J=H.css("display");if(J==="none"){J="block"}H.remove();m[F]=J}this[G].style.display=n.data(this[G],"olddisplay",J)}}return this}},hide:function(G,H){if(G){return this.animate(s("hide",3),G,H)}else{for(var F=0,E=this.length;F<E;F++){var D=n.data(this[F],"olddisplay");if(!D&&D!=="none"){n.data(this[F],"olddisplay",n.css(this[F],"display"))}this[F].style.display="none"}return this}},_toggle:n.fn.toggle,toggle:function(F,E){var D=typeof F==="boolean";return n.isFunction(F)&&n.isFunction(E)?this._toggle.apply(this,arguments):F==null||D?this.each(function(){var G=D?F:n(this).is(":hidden");n(this)[G?"show":"hide"]()}):this.animate(s("toggle",3),F,E)},fadeTo:function(D,F,E){return this.animate({opacity:F},D,E)},animate:function(H,E,G,F){var D=n.speed(E,G,F);return this[D.queue===false?"each":"queue"](function(){var J=n.extend({},D),L,K=this.nodeType==1&&n(this).is(":hidden"),I=this;for(L in H){if(H[L]=="hide"&&K||H[L]=="show"&&!K){return J.complete.call(this)}if((L=="height"||L=="width")&&this.style){J.display=n.css(this,"display");J.overflow=this.style.overflow}}if(J.overflow!=null){this.style.overflow="hidden"}J.curAnim=n.extend({},H);n.each(H,function(N,R){var Q=new n.fx(I,J,N);if(/toggle|show|hide/.test(R)){Q[R=="toggle"?K?"show":"hide":R](H)}else{var P=R.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),S=Q.cur(true)||0;if(P){var M=parseFloat(P[2]),O=P[3]||"px";if(O!="px"){I.style[N]=(M||1)+O;S=((M||1)/Q.cur(true))*S;I.style[N]=S+O}if(P[1]){M=((P[1]=="-="?-1:1)*M)+S}Q.custom(S,M,O)}else{Q.custom(S,R,"")}}});return true})},stop:function(E,D){var F=n.timers;if(E){this.queue([])}this.each(function(){for(var G=F.length-1;G>=0;G--){if(F[G].elem==this){if(D){F[G](true)}F.splice(G,1)}}});if(!D){this.dequeue()}return this}});n.each({slideDown:s("show",1),slideUp:s("hide",1),slideToggle:s("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(D,E){n.fn[D]=function(F,G){return this.animate(E,F,G)}});n.extend({speed:function(F,G,E){var D=typeof F==="object"?F:{complete:E||!E&&G||n.isFunction(F)&&F,duration:F,easing:E&&G||G&&!n.isFunction(G)&&G};D.duration=n.fx.off?0:typeof D.duration==="number"?D.duration:n.fx.speeds[D.duration]||n.fx.speeds._default;D.old=D.complete;D.complete=function(){if(D.queue!==false){n(this).dequeue()}if(n.isFunction(D.old)){D.old.call(this)}};return D},easing:{linear:function(F,G,D,E){return D+E*F},swing:function(F,G,D,E){return((-Math.cos(F*Math.PI)/2)+0.5)*E+D}},timers:[],timerId:null,fx:function(E,D,F){this.options=D;this.elem=E;this.prop=F;if(!D.orig){D.orig={}}}});n.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(n.fx.step[this.prop]||n.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(E){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var D=parseFloat(n.css(this.elem,this.prop,E));return D&&D>-10000?D:parseFloat(n.curCSS(this.elem,this.prop))||0},custom:function(H,G,F){this.startTime=e();this.start=H;this.end=G;this.unit=F||this.unit||"px";this.now=this.start;this.pos=this.state=0;var D=this;function E(I){return D.step(I)}E.elem=this.elem;n.timers.push(E);if(E()&&n.timerId==null){n.timerId=setInterval(function(){var J=n.timers;for(var I=0;I<J.length;I++){if(!J[I]()){J.splice(I--,1)}}if(!J.length){clearInterval(n.timerId);n.timerId=null}},13)}},show:function(){this.options.orig[this.prop]=n.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());n(this.elem).show()},hide:function(){this.options.orig[this.prop]=n.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(G){var F=e();if(G||F>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var D=true;for(var E in this.options.curAnim){if(this.options.curAnim[E]!==true){D=false}}if(D){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(n.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){n(this.elem).hide()}if(this.options.hide||this.options.show){for(var H in this.options.curAnim){n.attr(this.elem.style,H,this.options.orig[H])}}}if(D){this.options.complete.call(this.elem)}return false}else{var I=F-this.startTime;this.state=I/this.options.duration;this.pos=n.easing[this.options.easing||(n.easing.swing?"swing":"linear")](this.state,I,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};n.extend(n.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(D){n.attr(D.elem.style,"opacity",D.now)},_default:function(D){if(D.elem.style&&D.elem.style[D.prop]!=null){D.elem.style[D.prop]=D.now+D.unit}else{D.elem[D.prop]=D.now}}}});if(document.documentElement.getBoundingClientRect){n.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return n.offset.bodyOffset(this[0])}var F=this[0].getBoundingClientRect(),I=this[0].ownerDocument,E=I.body,D=I.documentElement,K=D.clientTop||E.clientTop||0,J=D.clientLeft||E.clientLeft||0,H=F.top+(self.pageYOffset||n.boxModel&&D.scrollTop||E.scrollTop)-K,G=F.left+(self.pageXOffset||n.boxModel&&D.scrollLeft||E.scrollLeft)-J;return{top:H,left:G}}}else{n.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return n.offset.bodyOffset(this[0])}n.offset.initialized||n.offset.initialize();var I=this[0],F=I.offsetParent,E=I,N=I.ownerDocument,L,G=N.documentElement,J=N.body,K=N.defaultView,D=K.getComputedStyle(I,null),M=I.offsetTop,H=I.offsetLeft;while((I=I.parentNode)&&I!==J&&I!==G){L=K.getComputedStyle(I,null);M-=I.scrollTop,H-=I.scrollLeft;if(I===F){M+=I.offsetTop,H+=I.offsetLeft;if(n.offset.doesNotAddBorder&&!(n.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(I.tagName))){M+=parseInt(L.borderTopWidth,10)||0,H+=parseInt(L.borderLeftWidth,10)||0}E=F,F=I.offsetParent}if(n.offset.subtractsBorderForOverflowNotVisible&&L.overflow!=="visible"){M+=parseInt(L.borderTopWidth,10)||0,H+=parseInt(L.borderLeftWidth,10)||0}D=L}if(D.position==="relative"||D.position==="static"){M+=J.offsetTop,H+=J.offsetLeft}if(D.position==="fixed"){M+=Math.max(G.scrollTop,J.scrollTop),H+=Math.max(G.scrollLeft,J.scrollLeft)}return{top:M,left:H}}}n.offset={initialize:function(){if(this.initialized){return}var K=document.body,E=document.createElement("div"),G,F,M,H,L,D,I=K.style.marginTop,J='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"cellpadding="0"cellspacing="0"><tr><td></td></tr></table>';L={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(D in L){E.style[D]=L[D]}E.innerHTML=J;K.insertBefore(E,K.firstChild);G=E.firstChild,F=G.firstChild,H=G.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(F.offsetTop!==5);this.doesAddBorderForTableAndCells=(H.offsetTop===5);G.style.overflow="hidden",G.style.position="relative";this.subtractsBorderForOverflowNotVisible=(F.offsetTop===-5);K.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(K.offsetTop===0);K.style.marginTop=I;K.removeChild(E);this.initialized=true},bodyOffset:function(D){n.offset.initialized||n.offset.initialize();var F=D.offsetTop,E=D.offsetLeft;if(n.offset.doesNotIncludeMarginInBodyOffset){F+=parseInt(n.curCSS(D,"marginTop",true),10)||0,E+=parseInt(n.curCSS(D,"marginLeft",true),10)||0}return{top:F,left:E}}};n.fn.extend({position:function(){var H=0,G=0,E;if(this[0]){var F=this.offsetParent(),I=this.offset(),D=/^body|html$/i.test(F[0].tagName)?{top:0,left:0}:F.offset();I.top-=j(this,"marginTop");I.left-=j(this,"marginLeft");D.top+=j(F,"borderTopWidth");D.left+=j(F,"borderLeftWidth");E={top:I.top-D.top,left:I.left-D.left}}return E},offsetParent:function(){var D=this[0].offsetParent||document.body;while(D&&(!/^body|html$/i.test(D.tagName)&&n.css(D,"position")=="static")){D=D.offsetParent}return n(D)}});n.each(["Left","Top"],function(E,D){var F="scroll"+D;n.fn[F]=function(G){if(!this[0]){return null}return G!==g?this.each(function(){this==l||this==document?l.scrollTo(!E?G:n(l).scrollLeft(),E?G:n(l).scrollTop()):this[F]=G}):this[0]==l||this[0]==document?self[E?"pageYOffset":"pageXOffset"]||n.boxModel&&document.documentElement[F]||document.body[F]:this[0][F]}});n.each(["Height","Width"],function(G,E){var D=G?"Left":"Top",F=G?"Right":"Bottom";n.fn["inner"+E]=function(){return this[E.toLowerCase()]()+j(this,"padding"+D)+j(this,"padding"+F)};n.fn["outer"+E]=function(I){return this["inner"+E]()+j(this,"border"+D+"Width")+j(this,"border"+F+"Width")+(I?j(this,"margin"+D)+j(this,"margin"+F):0)};var H=E.toLowerCase();n.fn[H]=function(I){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+E]||document.body["client"+E]:this[0]==document?Math.max(document.documentElement["client"+E],document.body["scroll"+E],document.documentElement["scroll"+E],document.body["offset"+E],document.documentElement["offset"+E]):I===g?(this.length?n.css(this[0],H):null):this.css(H,typeof I==="string"?I:I+"px")}})})();\r
20883 </script>\r
20884 \r
20885 \r
20886 <script id="jsgb" type="x">\r
20887 /* \r
20888  * jsgb.toolbox.js - This is part of JSGB, a JavaScript GameBoy Emulator\r
20889  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
20890  *\r
20891  * This program is free software; you can redistribute it and/or\r
20892  * modify it under the terms of the GNU General Public License\r
20893  * version 2 as published by the Free Software Foundation.\r
20894  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
20895  *\r
20896  * This program is distributed in the hope that it will be useful,\r
20897  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
20898  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
20899  * GNU General Public License for more details.\r
20900  *\r
20901  */\r
20902  \r
20903 var br='<br/'+'>\n';\r
20904 \r
20905 // Convert an 8 bit number into a JavaScript signed integer\r
20906 // Z80's negative numbers are in two's complement\r
20907 function sb(n){return (n>127)?((n&127)-128):n;}\r
20908 \r
20909 // Left zero fill until length of s = l\r
20910 function zf(s,l) {while (s.length<l)s='0'+s;return s;}\r
20911 \r
20912 // Convert decimal to hexadecimal\r
20913 function hex(n){return (n*1).toString(16).toUpperCase();}\r
20914 function hex2(n) {return zf(hex(n),2);};\r
20915 function hex4(n) {return zf(hex(n),4);};\r
20916 \r
20917 // Convert decimal to binary\r
20918 function bin(n){return (n*1).toString(2);}\r
20919 \r
20920 // Insert a space every "l" chars.\r
20921 // for example: sp('12345678',4) returns '1234 5678'\r
20922 function sp(s,l){\r
20923   var r=[],i=0;\r
20924   while (s.length>l) {\r
20925     r[i++]=s.substr(0,l);\r
20926     s=s.substr(l);\r
20927   }\r
20928   if (s.length>0) r[i]=s;\r
20929   return r.join('&nbsp;');\r
20930 }\r
20931 \r
20932 // Get element from id\r
20933 function $(id){return document.getElementById(id);}\r
20934 \r
20935 // Get milliseconds from the UNIX epoch\r
20936 function get_ms(){return new Date().getTime();}\r
20937 \r
20938 // Random number between a and b\r
20939 function rand2(a,b) { return a+Math.round(Math.random()*(b-a)); }\r
20940 \r
20941 // Get object properties\r
20942 function printObj(o) {\r
20943   var s = "" ;\r
20944   for (var p in o) s+=p+" = "+o[p]+"\n" ;\r
20945   return s ;\r
20946 }\r
20947 \r
20948 \r
20949 \r
20950 \r
20951 \r
20952 \r
20953 /* \r
20954  * scrollbar.js v0.1 - A simple scrollbar for JavaScript\r
20955  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
20956  *\r
20957  * This program is free software; you can redistribute it and/or\r
20958  * modify it under the terms of the GNU General Public License\r
20959  * version 2 as published by the Free Software Foundation.\r
20960  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
20961  *\r
20962  * This program is distributed in the hope that it will be useful,\r
20963  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
20964  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
20965  * GNU General Public License for more details.\r
20966  *\r
20967  * ____________________________________________________________________________\r
20968  *\r
20969  * Note: this doesn't works in MSIE.\r
20970  *\r
20971  * CSS Styles used by scrollBar Object:\r
20972  * .SCROLLBAR \r
20973  * .SCROLLBAR > .BACKGROUND\r
20974  * .SCROLLBAR > .BACKGROUND > .DRAG\r
20975  */\r
20976  \r
20977 function dragMachine(dragid,onchange) {\r
20978   var d=this;\r
20979 //d.startX=0;\r
20980   d.startY=0;\r
20981 //d.objX=0;\r
20982   d.objY=0;\r
20983 //d.oldX=0;\r
20984   d.oldY=0;\r
20985   d.obj=$(dragid);\r
20986   d.maxY=0;\r
20987   d.minY=0;\r
20988 //d.posX=0;  \r
20989   d.posY=0; // position (0~1)\r
20990   d.onchange=onchange;\r
20991 \r
20992   d.drag=function(event) {\r
20993   //d.startX=event.clientX+window.scrollX;\r
20994     d.startY=event.clientY+window.scrollY;\r
20995     document.addEventListener("mousemove", d.dragging, true);\r
20996     document.addEventListener("mouseup", d.drop, true);\r
20997     d.objX=parseInt(d.obj.style.left);\r
20998     d.objY=parseInt(d.obj.style.top );\r
20999   //obj.style.zIndex++;\r
21000     event.preventDefault();\r
21001   };\r
21002 \r
21003   d.dragging=function(event) {\r
21004     var nowX, nowY;\r
21005   //nowX=event.clientX+window.scrollX;\r
21006     nowY=event.clientY+window.scrollY;\r
21007   //var X=d.objX+nowX-d.startX;\r
21008     var Y=d.objY+nowY-d.startY;\r
21009   //if (X>d.maxX) X=d.maxX; if (X<d.minX) X=d.minX;\r
21010     if (Y>d.maxY) Y=d.maxY; if (Y<d.minY) Y=d.minY;\r
21011     d.posY=(Y/d.maxY);\r
21012   //d.obj.style.left=X+"px";\r
21013     d.obj.style.top=Y+"px";\r
21014     event.preventDefault();\r
21015     if ((d.oldY!=Y)/* ||(d.oldX!=X) */) {\r
21016       onchange();\r
21017       d.oldY=Y;\r
21018     //d.oldX=X;\r
21019     }  \r
21020   }\r
21021   \r
21022   d.setpos=function(x,y) {\r
21023   //d.posX=x;\r
21024     if (y>1.0) y=1.0; else if (y<0.0) y=0.0;\r
21025     d.posY=y;\r
21026   //d.obj.style.left=Math.round(d.posX*d.maxX)+'px';\r
21027     d.obj.style.top=Math.round(d.posY*d.maxY)+'px';\r
21028   }\r
21029 \r
21030   d.drop=function(event) {\r
21031     document.removeEventListener("mousemove", d.dragging, true);\r
21032     document.removeEventListener("mouseup", d.drop, true);\r
21033   };\r
21034   \r
21035 }\r
21036 \r
21037 function scrollBar(parent,onchange) {\r
21038   var scb=this;\r
21039   scb.parentid=parent;\r
21040   scb.startX=0,\r
21041   scb.startY=0\r
21042   scb.backid=parent+"_BG"; // background id\r
21043   scb.dragid=parent+"_DG"; // drag thing id\r
21044   scb.dragger = null;\r
21045   \r
21046   scb.update=function(){\r
21047     $(scb.backid).style.height=$(scb.parentid).clientHeight+'px';\r
21048     scb.dragger.maxY=$(scb.parentid).clientHeight-$(scb.dragid).clientHeight-4;\r
21049     $(scb.dragid).style.top=Math.round(scb.dragger.maxY*scb.dragger.posY)+'px';\r
21050   };    \r
21051 \r
21052   (scb.create=function(){\r
21053     $(scb.parentid).className='SCROLLBAR';\r
21054     $(scb.parentid).innerHTML=\r
21055       '<div id="'+scb.backid+'" class="BACKGROUND">'+\r
21056       '<div id="'+scb.dragid+'" class="DRAG"></div></div>';\r
21057     scb.dragger = new dragMachine(scb.dragid,onchange);\r
21058     $(scb.dragid).addEventListener("mousedown", scb.dragger.drag, true);\r
21059   })(); \r
21060 }\r
21061 \r
21062 \r
21063 \r
21064 \r
21065 /*\r
21066  * jsgb.cpu.js v0.021 - GB CPU Emulator for JSGB, a JavaScript GameBoy Emulator\r
21067  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
21068  *\r
21069  * This program is free software; you can redistribute it and/or\r
21070  * modify it under the terms of the GNU General Public License\r
21071  * version 2 as published by the Free Software Foundation.\r
21072  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
21073  *\r
21074  * This program is distributed in the hope that it will be useful,\r
21075  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
21076  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
21077  * GNU General Public License for more details.\r
21078  *\r
21079  */\r
21080 \r
21081 var gbEnableCallerStack = false;\r
21082 \r
21083 // CPU Registers\r
21084 var RA=0; // Accumulator\r
21085 var FZ=0, // bit 7 - Zero\r
21086     FN=0, // bit 6 - Sub\r
21087     FH=0, // bit 5 - Half Carry\r
21088     FC=0; // bit 4 - Carry\r
21089 var RB=0; // Register B\r
21090 var RC=0; // Register C\r
21091 var RD=0; // Register D\r
21092 var RE=0; // Register E\r
21093 var HL=0; // Registers H and L\r
21094 var SP=0; // Stack Pointer\r
21095 var PC=0; // Program Counter\r
21096 var T1=0; // Temp Register 1\r
21097 var T2=0; // Temp Register 2\r
21098 \r
21099 var gbHalt = false; \r
21100 var gbPause = true;  \r
21101 var gbIME = true;\r
21102 var gbCPUTicks = 0;  \r
21103 var gbDAATable = []; \r
21104 \r
21105 // OpCode Arrays\r
21106 var OP=[], OPCB=[]; // Opcode Array\r
21107 var MN=[], MNCB=[]; // Mnemonics\r
21108 \r
21109 for (var i=0;i<=0xFF;i++) {\r
21110   MN[i]=function() { return 'DB 0x'+hex2(MEMR(PC))+'; unknown'; };\r
21111   OPCB[i]=function() {};\r
21112   MNCB[i]=function() { return 'DW 0xCB'+hex2(MEMR(PC+1)); };\r
21113 }\r
21114 \r
21115 if (gbEnableCallerStack) {\r
21116   var gbCallerStack = [];\r
21117   var gb_Save_Caller = function() {\r
21118     gbCallerStack.unshift(PC-1);\r
21119     if (gbCallerStack.length>8) gbCallerStack.pop();\r
21120   }\r
21121   var gb_Dump_Caller_Stack = function() {\r
21122     var s='Caller Stack:\n';\r
21123     for (var i in gbCallerStack) s+='0x'+hex4(gbCallerStack[i])+'\n';\r
21124     return s;\r
21125   }\r
21126 }  \r
21127 else {\r
21128   var gb_Dump_Caller_Stack = function() { \r
21129     return 'Caller stack disabled.\n'+\r
21130            'To enable set gbEnableCallerStack=true in jsgb.cpu.js';\r
21131   }         \r
21132 }  \r
21133 function gb_CPU_UNK() {\r
21134   gb_Pause();\r
21135   alert(\r
21136     'Unknown opcode: '+\r
21137     'PC='+hex(PC)+' - '+\r
21138     'OP=0x'+hex(MEMR(PC))+'\n\n'+\r
21139     gb_Dump_Caller_Stack()\r
21140   );\r
21141 }\r
21142 function gb_CPU_RL(n) {\r
21143   T1=FC;\r
21144   FC=(n>>7)&1;\r
21145   n=((n<<1)&0xFF)|T1;\r
21146   FN=FH=0;\r
21147   FZ=(n==0);\r
21148   gbCPUTicks=8;\r
21149   return n;\r
21150 }\r
21151 function gb_CPU_RLC(n) {\r
21152   FC=(n>>7)&1;\r
21153   n=((n<<1)&0xFF)|FC;\r
21154   FN=FH=0;\r
21155   FZ=(n==0);\r
21156   gbCPUTicks=8;\r
21157   return n;\r
21158 }\r
21159 function gb_CPU_RR(n) {\r
21160   T1=FC;\r
21161   FC=n&1;\r
21162   n=(n>>1)|(T1<<7);\r
21163   FN=FH=0;\r
21164   FZ=(n==0);\r
21165   gbCPUTicks=8;\r
21166   return n;\r
21167 }\r
21168 function gb_CPU_RRC(n) {\r
21169   FC=n&1;\r
21170   n=(n>>1)|(FC<<7);\r
21171   FN=FH=0;\r
21172   FZ=(n==0);\r
21173   gbCPUTicks=8;\r
21174   return n;\r
21175 }\r
21176 function gb_CPU_SWAP(R) {\r
21177   if (R=='H') return ''+\r
21178     'HL=((HL&0x0F00)<<4) | ((HL&0xF000)>>4) | (HL&0x00FF);'+\r
21179     'gbCPUTicks=8;';\r
21180   else if (R=='L') return ''+\r
21181     'HL=((HL&0x000F)<<4) | ((HL&0x00F0)>>4) | (HL&0xFF00);'+\r
21182     'gbCPUTicks=8;';\r
21183   else if (R=='(HL)') return ''+\r
21184   'T1=MEMR(HL);'+\r
21185   'MEMW(HL, ((T1<<4)|(T1>>4))&0xFF);'+\r
21186   'gbCPUTicks=8;';\r
21187   else return ''+\r
21188   ''+R+'=(('+R+'<<4)|('+R+'>>4))&0xFF;'+\r
21189   'gbCPUTicks=8;';  \r
21190 }\r
21191 function gb_CPU_ADD_A(R,C) {\r
21192   return ''+\r
21193   'FH=((RA&0x0F)+('+R+'&0x0F))>0x0F;'+\r
21194   'FC=((RA&0xFF)+('+R+'&0xFF))>0xFF;'+\r
21195   'RA=(RA+'+R+')&0xFF;'+\r
21196   'FZ=(RA==0);'+\r
21197   'FN=0;'+\r
21198   'gbCPUTicks='+C+';';\r
21199 }\r
21200 function gb_CPU_ADC_A(R,C) {\r
21201   return ''+\r
21202   'T2=FC;'+\r
21203   'FH=((RA&0x0F)+('+R+'&0x0F)+T2)>0x0F;'+\r
21204   'FC=((RA&0xFF)+('+R+'&0xFF)+T2)>0xFF;'+\r
21205   'RA=(RA+'+R+'+T2)&0xFF;'+\r
21206   'FZ=(RA==0);'+\r
21207   'FN=0;'+\r
21208   'gbCPUTicks='+C+';';\r
21209 }\r
21210 function gb_CPU_SUB_A(R,C) { //!!!\r
21211   if (R=='RA') return ''+\r
21212   'FH=false;'+\r
21213   'FC=false;'+\r
21214   'RA=0;'+\r
21215   'FZ=true;'+\r
21216   'FN=1;'+\r
21217   'gbCPUTicks='+C+';';\r
21218   else return ''+\r
21219   'FH=(RA&0x0F)<('+R+'&0x0F);'+\r
21220   'FC=(RA&0xFF)<('+R+'&0xFF);'+\r
21221   'RA=(RA-'+R+')&0xFF;'+\r
21222   'FZ=(RA==0);'+\r
21223   'FN=1;'+\r
21224   'gbCPUTicks='+C+';';\r
21225 }\r
21226 function gb_CPU_SBC_A(R,C) {\r
21227   return ''+\r
21228   'T2=FC;'+\r
21229   'FH=((RA&0x0F)<(('+R+'&0x0F)+T2));'+\r
21230   'FC=((RA&0xFF)<(('+R+'&0xFF)+T2));'+\r
21231   'RA=(RA-'+R+'-T2)&0xFF;'+\r
21232   'FZ=(RA==0);'+\r
21233   'FN=1;'+\r
21234   'gbCPUTicks='+C+';';\r
21235 }\r
21236 function gb_CPU_AND_A(R,C) {\r
21237   return ''+\r
21238   ((R=='RA')?'':'RA&='+R+';')+\r
21239   'FZ=(RA==0);'+\r
21240   'FH=1;'+\r
21241   'FN=FC=0;'+\r
21242   'gbCPUTicks='+C+';'; \r
21243 }\r
21244 function gb_CPU_OR_A(R,C) {\r
21245   return ''+\r
21246   ((R=='RA')?'':'RA|='+R+';')+\r
21247   'FZ=(RA==0);'+\r
21248   'FN=FH=FC=0;'+\r
21249   'gbCPUTicks='+C+';';\r
21250 }\r
21251 function gb_CPU_XOR_A(R,C) {\r
21252   return ''+\r
21253   ((R=='RA')?'RA=0;':'RA^='+R+';')+\r
21254   ((R=='RA')?'FZ=1;':'FZ=(RA==0);')+\r
21255   'FN=FH=FC=0;'+\r
21256   'gbCPUTicks='+C+';';\r
21257 }\r
21258 function gb_CPU_CP_A(R,C) {\r
21259   return ''+\r
21260   'FZ=(RA=='+R+');'+\r
21261   'FN=1;'+\r
21262   'FC=RA<'+R+';'+\r
21263   'FH=(RA&0x0F)<('+R+'&0x0F);'+\r
21264   'gbCPUTicks='+C+';';\r
21265 }\r
21266 function gb_CPU_INC(R,C) { //!!!\r
21267   return ''+\r
21268   ''+R+'=(++'+R+')&0xFF;'+\r
21269   'FZ=('+R+'==0);'+\r
21270   'FN=0;'+\r
21271   'FH=('+R+'&0xF)==0;'+\r
21272   'gbCPUTicks='+C+';';\r
21273 }\r
21274 function gb_CPU_DEC(R,C) {\r
21275   return ''+\r
21276   ''+R+'=(--'+R+')&0xFF;'+\r
21277   'FZ=('+R+'==0);'+\r
21278   'FN=1;'+\r
21279   'FH=('+R+'&0xF)==0xF;'+\r
21280   'gbCPUTicks=4;';\r
21281 }\r
21282 function gb_CPU_ADD16(n1,n2) {\r
21283   FN=0;\r
21284   FH=((n1&0xFFF)+(n2&0xFFF))>0xFFF; // TODO test bit 11. Not sure on this\r
21285   n1+=n2;\r
21286   FC=n1>0xFFFF;\r
21287   n1&=0xFFFF;\r
21288   gbCPUTicks=8;\r
21289   return n1;\r
21290 }\r
21291 function gb_CPU_INC16(n) {\r
21292   gbCPUTicks=8;\r
21293   return (n+1)&0xFFFF;\r
21294 }\r
21295 function gb_CPU_JR(c) {\r
21296   if (c=='true') return ''+\r
21297   'PC+=sb(MEMR(PC))+1;'+\r
21298   'gbCPUTicks=12;';\r
21299   else return ''+\r
21300   'if ('+c+') {'+\r
21301   '  PC+=sb(MEMR(PC))+1; gbCPUTicks=12;'+\r
21302   '} else {'+\r
21303   '  PC++;'+\r
21304   '  gbCPUTicks=8;'+\r
21305   '}';\r
21306 }\r
21307 function gb_CPU_JP(c) {\r
21308   if (c=='true') return ''+\r
21309   'PC=(MEMR(PC+1)<<8)|MEMR(PC);'+\r
21310   'gbCPUTicks=12;';\r
21311   else return ''+\r
21312   'if ('+c+') PC=(MEMR(PC+1)<<8)|MEMR(PC);'+\r
21313   'else PC+=2;'+\r
21314   'gbCPUTicks=12;';\r
21315 }\r
21316 function gb_CPU_CALL(c) {\r
21317   if (c=='true') return ''+\r
21318   ((gbEnableCallerStack)?'gb_Save_Caller();':'')+\r
21319   'PC+=2;'+\r
21320   'MEMW(--SP,PC>>8);'+\r
21321   'MEMW(--SP,PC&0xFF);'+\r
21322   'PC=(MEMR(PC-1)<<8)|MEMR(PC-2);'+\r
21323   'gbCPUTicks=12;'; \r
21324   else return ''+\r
21325   ((gbEnableCallerStack)?'gb_Save_Caller();':'')+\r
21326   'PC+=2;'+\r
21327   'if ('+c+') {'+\r
21328   '  MEMW(--SP,PC>>8);'+\r
21329   '  MEMW(--SP,PC&0xFF);'+\r
21330   '  PC=(MEMR(PC-1)<<8)|MEMR(PC-2);'+\r
21331   '}'+\r
21332   'gbCPUTicks=12;'; \r
21333 }\r
21334 function gb_CPU_RST(a) {\r
21335   return ''+\r
21336   'MEMW(--SP,PC>>8);'+\r
21337   'MEMW(--SP,PC&0xFF);'+\r
21338   'PC='+a+';'+\r
21339   'gbCPUTicks=32;';\r
21340 }\r
21341 function gb_CPU_RET(c) { //!!!\r
21342   if (c=='true') return ''+\r
21343   'PC=(MEMR(SP+1)<<8)|MEMR(SP);'+\r
21344   'SP+=2;'+\r
21345   'gbCPUTicks=8;';\r
21346   else return ''+\r
21347   'if ('+c+') {'+\r
21348   '  PC=(MEMR(SP+1)<<8)|MEMR(SP);'+\r
21349   '  SP+=2;'+\r
21350   '}'+\r
21351   'gbCPUTicks=8;';\r
21352 }\r
21353 function gb_CPU_DDA() { //!!!\r
21354   return ''+\r
21355   'T1=RA;'+\r
21356   'if(FC)T1|=256;'+\r
21357   'if(FH)T1|=512;'+\r
21358   'if(FN)T1|=1024;'+\r
21359   'T1=gbDAATable[T1];'+\r
21360   'RA=T1>>8;'+\r
21361   'FZ=(T1>>7)&1;'+\r
21362   'FN=(T1>>6)&1;'+\r
21363   'FH=(T1>>5)&1;'+\r
21364   'FC=(T1>>4)&1;'+\r
21365   'gbCPUTicks=4;';\r
21366 }\r
21367 function gb_CPU_RLA() { //!!!\r
21368   return ''+\r
21369   'T1=FC;'+\r
21370   'FC=(RA>>7)&1;'+\r
21371   'RA=((RA<<1)&0xFF)|T1;'+\r
21372   'FN=FH=0;'+\r
21373   'FZ=(RA==0);'+ // TODO not sure. on z80 Z is not affected\r
21374   'gbCPUTicks=4;';\r
21375 }  \r
21376 function gb_CPU_HALT() {\r
21377   return ''+\r
21378   'if (gbIME) gbHalt=true;'+\r
21379   'else {'+\r
21380   '  gb_Pause();'+\r
21381   '  alert(\'HALT instruction with interrupts disabled.\');'+\r
21382   '}'+\r
21383   'gbCPUTicks=4;';\r
21384 }\r
21385 function gb_LD_MEM_R16(R,C) {\r
21386   return ''+\r
21387   'T1=(MEMR(PC+1)<<8)+MEMR(PC);'+\r
21388   'MEMW(T1++,'+R+'&0xFF);'+\r
21389   'MEMW(T1,'+R+'>>8);'+\r
21390   'PC+=2;'+\r
21391   'gbCPUTicks='+C+';';\r
21392 }\r
21393 function gb_CPU_SLA_R(R, C) {\r
21394   return ''+\r
21395   'FC=('+R+'>>7)&1;'+\r
21396   ''+R+'=('+R+'<<1)&0xFF;'+\r
21397   'FN=FH=0;'+\r
21398   'FZ=('+R+'==0);'+\r
21399   'gbCPUTicks='+C+';';\r
21400 }\r
21401 function gb_CPU_NOP() {\r
21402   gbCPUTicks=0;\r
21403 }\r
21404 \r
21405 OP[0x00]=gb_CPU_NOP; // NOP\r
21406 OP[0x01]=function(){ RC=MEMR(PC++); RB=MEMR(PC++); gbCPUTicks=12; }; // LD BC,u16\r
21407 OP[0x02]=function(){ MEMW((RB<<8)|RC,RA); gbCPUTicks=8; }; // LD (BC),A\r
21408 OP[0x03]=function(){ T1=gb_CPU_INC16((RB<<8)|RC); RB=T1>>8; RC=T1&0xFF; }; // INC BC\r
21409 OP[0x04]=new Function(gb_CPU_INC('RB',4)); // INC B\r
21410 OP[0x05]=new Function(gb_CPU_DEC('RB',4)); // DEC B\r
21411 OP[0x06]=function(){ RB=MEMR(PC++); gbCPUTicks=8; }; // LD B,u8\r
21412 OP[0x07]=function(){ FC=(RA>>7)&1; RA=((RA<<1)&0xFF)|FC; FN=FH=0; FZ=RA==0; gbCPUTicks=4; }; // RLCA\r
21413 OP[0x08]=new Function(gb_LD_MEM_R16('HL',20)); // LD (u16),SP\r
21414 OP[0x09]=function(){ HL=gb_CPU_ADD16(HL,(RB<<8)|RC); }; // ADD HL,BC\r
21415 OP[0x0A]=function(){ RA=MEMR(((RB&0x00FF)<<8)|RC); gbCPUTicks=8; }; // LD A,(BC)\r
21416 OP[0x0B]=function(){ var BC=((RB<<8)+RC-1)&0xFFFF; RB=BC>>8; RC=BC&0xFF; gbCPUTicks=8; }; // DEC BC\r
21417 OP[0x0C]=new Function(gb_CPU_INC('RC',4)); // INC C\r
21418 OP[0x0D]=new Function(gb_CPU_DEC('RC',4)); // DEC C\r
21419 OP[0x0E]=function(){ RC=MEMR(PC++); gbCPUTicks=8; }; // LD C,u8;\r
21420 OP[0x0F]=function(){ FC=RA&1; RA=(RA>>1)|(FC<<7); FN=0; FH=0; FZ=RA==0; gbCPUTicks=4; }; // RRCA\r
21421 OP[0x10]=function(){ gb_Pause();alert('STOP instruction\n'+gb_Dump_Caller_Stack()); gbCPUTicks=4; }; // STOP\r
21422 OP[0x11]=function(){ RE=MEMR(PC++); RD=MEMR(PC++); gbCPUTicks=12; }; // LD DE,u16\r
21423 OP[0x12]=function(){ MEMW((RD<<8)|RE,RA); gbCPUTicks=8; }; // LD (DE),A\r
21424 OP[0x13]=function(){ T1=gb_CPU_INC16((RD<<8)|RE); RD=T1>>8; RE=T1&0xFF; }; // INC DE\r
21425 OP[0x14]=new Function(gb_CPU_INC('RD',4)); // INC D\r
21426 OP[0x15]=new Function(gb_CPU_DEC('RD',4)); // DEC D\r
21427 OP[0x16]=function(){ RD=MEMR(PC++); gbCPUTicks=8; }; // LD D,u8\r
21428 OP[0x17]=new Function(gb_CPU_RLA()); // RLA\r
21429 OP[0x18]=new Function(gb_CPU_JR('true')); // JR s8\r
21430 OP[0x19]=function(){ HL=gb_CPU_ADD16(HL,(RD<<8)|RE); }; // ADD HL,DE\r
21431 OP[0x1A]=function(){ RA=MEMR(((RD&0x00FF)<<8)|RE); gbCPUTicks=8; }; // LD A,(DE)\r
21432 OP[0x1B]=function(){ var DE=((RD<<8)+RE-1)&0xFFFF; RD=DE>>8; RE=DE&0xFF; gbCPUTicks=8; }; // DEC DE\r
21433 OP[0x1C]=new Function(gb_CPU_INC('RE',4)); // INC E\r
21434 OP[0x1D]=new Function(gb_CPU_DEC('RE',4)); // DEC E\r
21435 OP[0x1E]=function(){ RE=MEMR(PC++); gbCPUTicks=8; }; // LD E,u8;\r
21436 OP[0x1F]=function(){ T1=FC; FC=RA&1; RA=(RA>>1)|(T1<<7); FN=0; FH=0; FZ=RA==0; gbCPUTicks=4; }; // RRA\r
21437 OP[0x20]=new Function(gb_CPU_JR('!FZ')); // JR NZ,s8\r
21438 OP[0x21]=function(){ HL=(MEMR(PC+1)<<8)|MEMR(PC); PC+=2; gbCPUTicks=12; }; // LD HL,u16;\r
21439 OP[0x22]=function(){ MEMW(HL,RA); HL=(++HL)&0xFFFF; gbCPUTicks=8; }; // LDI (HL),A\r
21440 OP[0x23]=function(){ HL=gb_CPU_INC16(HL); }; // INC HL\r
21441 OP[0x24]=new Function('T1=HL>>8;'+gb_CPU_INC('T1',4)+'HL=(HL&0x00FF)|(T1<<8);'); // INC H\r
21442 OP[0x25]=new Function('T1=HL>>8;'+gb_CPU_DEC('T1',4)+'HL=(HL&0x00FF)|(T1<<8);'); // DEC H\r
21443 OP[0x26]=function(){ HL&=0x00FF; HL|=MEMR(PC++)<<8; gbCPUTicks=8; }; // LD H,u8\r
21444 OP[0x27]=new Function(gb_CPU_DDA()); // DAA\r
21445 OP[0x28]=new Function(gb_CPU_JR('FZ')); // JR Z,s8\r
21446 OP[0x29]=function(){ HL=gb_CPU_ADD16(HL,HL); }; // ADD HL,HL\r
21447 OP[0x2A]=function(){ RA=MEMR(HL); HL=(HL+1)&0xFFFF; gbCPUTicks=8; }; // LDI A,(HL)\r
21448 OP[0x2B]=function(){ HL=(HL-1)&0xFFFF; gbCPUTicks=8; }; // DEC HL\r
21449 OP[0x2C]=new Function('T1=HL&0xFF;'+gb_CPU_INC('T1',4)+'HL=(HL&0xFF00)|T1;'); // INC L\r
21450 OP[0x2D]=new Function('T1=HL&0xFF;'+gb_CPU_DEC('T1',4)+'HL=(HL&0xFF00)|T1;'); // DEC L\r
21451 OP[0x2E]=function(){ HL&=0xFF00; HL|=MEMR(PC++); gbCPUTicks=8; }; // LD L,u8\r
21452 OP[0x2F]=function(){ RA^=0xFF; FN=1; FH=1; gbCPUTicks=4; }; // CPL\r
21453 OP[0x30]=new Function(gb_CPU_JR('!FC')); // JR NC,s8\r
21454 OP[0x31]=function(){ SP=(MEMR(PC+1)<<8)|MEMR(PC); PC+=2; gbCPUTicks=12; }; // LD SP,u16\r
21455 OP[0x32]=function(){ MEMW(HL,RA); HL=(HL-1)&0xFFFF; gbCPUTicks=8; }; // LDD (HL),A\r
21456 OP[0x33]=function(){ SP=gb_CPU_INC16(SP); }; // INC SP\r
21457 OP[0x34]=new Function('T1=MEMR(HL);'+gb_CPU_INC('T1',12)+'MEMW(HL,T1);'); // INC (HL)\r
21458 OP[0x35]=new Function('T1=MEMR(HL);'+gb_CPU_DEC('T1',12)+'MEMW(HL,T1);'); // DEC (HL)\r
21459 OP[0x36]=function(){ MEMW(HL,MEMR(PC++)); gbCPUTicks=12; }; // LD (HL),u8;\r
21460 OP[0x37]=function(){ FC=1; FN=0; FH=0; gbCPUTicks=4; }; // SCF\r
21461 OP[0x38]=new Function(gb_CPU_JR('FC')); // JR C,s8\r
21462 OP[0x39]=function(){ HL=gb_CPU_ADD16(HL,SP); }; // ADD HL,SP\r
21463 OP[0x3A]=function(){ RA=MEMR(HL); HL=(HL-1)&0xFFFF; gbCPUTicks=8; }; // LDD A,(HL)\r
21464 OP[0x3B]=function(){ SP=(SP-1)&0xFFFF; gbCPUTicks=8; }; // DEC SP\r
21465 OP[0x3C]=new Function(gb_CPU_INC('RA',4)); // INC A\r
21466 OP[0x3D]=new Function(gb_CPU_DEC('RA',4)); // DEC A\r
21467 OP[0x3E]=function(){ RA=MEMR(PC++); gbCPUTicks=8; }; // LD A,u8;\r
21468 OP[0x3F]=function(){ FC=(~FC)&1; FN=FH=0; gbCPUTicks=4; }; // CCF\r
21469 OP[0x40]=gb_CPU_NOP; // LD B,B\r
21470 OP[0x41]=function(){ RB=RC; gbCPUTicks=4; }; // LD B,C\r
21471 OP[0x42]=function(){ RB=RD; gbCPUTicks=4; }; // LD B,D\r
21472 OP[0x43]=function(){ RB=RE; gbCPUTicks=4; }; // LD B,E\r
21473 OP[0x44]=function(){ RB=HL>>8; gbCPUTicks=4; }; // LD B,H\r
21474 OP[0x45]=function(){ RB=HL&0xFF; gbCPUTicks=4; }; // LD B,L\r
21475 OP[0x46]=function(){ RB=MEMR(HL); gbCPUTicks=8; }; // LD B,(HL)\r
21476 OP[0x47]=function(){ RB=RA; gbCPUTicks=4; }; // LD B,A\r
21477 OP[0x48]=function(){ RC=RB; gbCPUTicks=4; }; // LD C,B\r
21478 OP[0x49]=gb_CPU_NOP; // LD C,C\r
21479 OP[0x4A]=function(){ RC=RD; gbCPUTicks=4; }; // LD C,D\r
21480 OP[0x4B]=function(){ RC=RE; gbCPUTicks=4; }; // LD C,E\r
21481 OP[0x4C]=function(){ RC=HL>>8; gbCPUTicks=4; }; // LD C,H\r
21482 OP[0x4D]=function(){ RC=HL&0xFF; gbCPUTicks=4; }; // LD C,L\r
21483 OP[0x4E]=function(){ RC=MEMR(HL); gbCPUTicks=8; }; // LD C,(HL)\r
21484 OP[0x4F]=function(){ RC=RA; gbCPUTicks=4; }; // LD C,A\r
21485 OP[0x50]=function(){ RD=RB; gbCPUTicks=4; }; // LD D,B\r
21486 OP[0x51]=function(){ RD=RC; gbCPUTicks=4; }; // LD D,C\r
21487 OP[0x52]=gb_CPU_NOP; // LD D,D\r
21488 OP[0x53]=function(){ RD=RE; gbCPUTicks=4; }; // LD D,E\r
21489 OP[0x54]=function(){ RD=HL>>8; gbCPUTicks=4; }; // LD D,H\r
21490 OP[0x55]=function(){ RD=HL&0xFF; gbCPUTicks=4; }; // LD D,L\r
21491 OP[0x56]=function(){ RD=MEMR(HL); gbCPUTicks=8; }; // LD D,(HL)\r
21492 OP[0x57]=function(){ RD=RA; gbCPUTicks=4; }; // LD D,A\r
21493 OP[0x58]=function(){ RE=RB; gbCPUTicks=4; }; // LD E,B\r
21494 OP[0x59]=function(){ RE=RC; gbCPUTicks=4; }; // LD E,C\r
21495 OP[0x5A]=function(){ RE=RD; gbCPUTicks=4; }; // LD E,D\r
21496 OP[0x5B]=gb_CPU_NOP; // LD E,E\r
21497 OP[0x5C]=function(){ RE=HL>>8; gbCPUTicks=4; }; // LD E,H\r
21498 OP[0x5D]=function(){ RE=HL&0xFF; gbCPUTicks=4; }; // LD E,L\r
21499 OP[0x5E]=function(){ RE=MEMR(HL); gbCPUTicks=8; }; // LD E,(HL)\r
21500 OP[0x5F]=function(){ RE=RA; gbCPUTicks=4; }; // LD E,A\r
21501 OP[0x60]=function(){ HL=(HL&0x00FF)|(RB<<8); gbCPUTicks=4; }; // LD H,B\r
21502 OP[0x61]=function(){ HL=(HL&0x00FF)|(RC<<8); gbCPUTicks=4; }; // LD H,C\r
21503 OP[0x62]=function(){ HL=(HL&0x00FF)|(RD<<8); gbCPUTicks=4; }; // LD H,D\r
21504 OP[0x63]=function(){ HL=(HL&0x00FF)|(RE<<8); gbCPUTicks=4; }; // LD H,E\r
21505 OP[0x64]=gb_CPU_NOP; // LD H,H\r
21506 OP[0x65]=function(){ HL=(HL&0x00FF)|((HL&0xFF)<<8); gbCPUTicks=4; }; // LD H,L\r
21507 OP[0x66]=function(){ HL=(HL&0x00FF)|(MEMR(HL)<<8); gbCPUTicks=8; }; // LD H,(HL)\r
21508 OP[0x67]=function(){ HL=(RA<<8)|(HL&0xFF); gbCPUTicks=4; }; // LD H,A\r
21509 OP[0x68]=function(){ HL=(HL&0xFF00)|RB; gbCPUTicks=4; }; // LD L,B\r
21510 OP[0x69]=function(){ HL=(HL&0xFF00)|RC; gbCPUTicks=4; }; // LD L,C\r
21511 OP[0x6A]=function(){ HL=(HL&0xFF00)|RD; gbCPUTicks=4; }; // LD L,D\r
21512 OP[0x6B]=function(){ HL=(HL&0xFF00)|RE; gbCPUTicks=4; }; // LD L,E\r
21513 OP[0x6C]=function(){ HL=(HL&0xFF00)|(HL>>8); gbCPUTicks=4; }; // LD L,H\r
21514 OP[0x6D]=gb_CPU_NOP; // LD L,L\r
21515 OP[0x6E]=function(){ HL=(HL&0xFF00)|(MEMR(HL)); gbCPUTicks=8; }; // LD L,(HL)\r
21516 OP[0x6F]=function(){ HL=RA|(HL&0xFF00); gbCPUTicks=4; }; // LD L,A\r
21517 OP[0x70]=function(){ MEMW(HL,RB); gbCPUTicks=8; }; // LD (HL),B\r
21518 OP[0x71]=function(){ MEMW(HL,RC); gbCPUTicks=8; }; // LD (HL),C\r
21519 OP[0x72]=function(){ MEMW(HL,RD); gbCPUTicks=8; }; // LD (HL),D\r
21520 OP[0x73]=function(){ MEMW(HL,RE); gbCPUTicks=8; }; // LD (HL),E\r
21521 OP[0x74]=function(){ MEMW(HL,HL>>8); gbCPUTicks=8; }; // LD (HL),H\r
21522 OP[0x75]=function(){ MEMW(HL,HL&0x00FF); gbCPUTicks=8; }; // LD (HL),L\r
21523 OP[0x76]=new Function(gb_CPU_HALT()); // HALT\r
21524 OP[0x77]=function(){ MEMW(HL,RA); gbCPUTicks=8; }; // LD (HL),A\r
21525 OP[0x78]=function(){ RA=RB; gbCPUTicks=4; }; // LD A,B\r
21526 OP[0x79]=function(){ RA=RC; gbCPUTicks=4; }; // LD A,C\r
21527 OP[0x7A]=function(){ RA=RD; gbCPUTicks=4; }; // LD A,D\r
21528 OP[0x7B]=function(){ RA=RE; gbCPUTicks=4; }; // LD A,E\r
21529 OP[0x7C]=function(){ RA=HL>>8; gbCPUTicks=4; }; // LD A,H\r
21530 OP[0x7D]=function(){ RA=HL&0xFF; gbCPUTicks=4; }; // LD A,L\r
21531 OP[0x7E]=function(){ RA=MEMR(HL); gbCPUTicks=8; }; // LD A,(HL)\r
21532 OP[0x7F]=gb_CPU_NOP; // LD A,A\r
21533 OP[0x80]=new Function(gb_CPU_ADD_A('RB',4)); // ADD A,B\r
21534 OP[0x81]=new Function(gb_CPU_ADD_A('RC',4)); // ADD A,C\r
21535 OP[0x82]=new Function(gb_CPU_ADD_A('RD',4)); // ADD A,D\r
21536 OP[0x83]=new Function(gb_CPU_ADD_A('RE',4)); // ADD A,E\r
21537 OP[0x84]=new Function('T1=HL>>8;'+gb_CPU_ADD_A('T1',4)); // ADD A,H\r
21538 OP[0x85]=new Function('T1=HL&0xFF;'+gb_CPU_ADD_A('T1',4)); // ADD A,L\r
21539 OP[0x86]=new Function('T1=MEMR(HL);'+gb_CPU_ADD_A('T1',8)); // ADD A,(HL)\r
21540 OP[0x87]=new Function(gb_CPU_ADD_A('RA',4)); // ADD A,A\r
21541 OP[0x88]=new Function(gb_CPU_ADC_A('RB',4)); // ADC A,B\r
21542 OP[0x89]=new Function(gb_CPU_ADC_A('RC',4)); // ADC A,C\r
21543 OP[0x8A]=new Function(gb_CPU_ADC_A('RD',4)); // ADC A,D\r
21544 OP[0x8B]=new Function(gb_CPU_ADC_A('RE',4)); // ADC A,E\r
21545 OP[0x8C]=new Function('T1=HL>>8;'+gb_CPU_ADC_A('T1',4)); // ADC A,H\r
21546 OP[0x8D]=new Function('T1=HL&0xFF;'+gb_CPU_ADC_A('T1',4)); // ADC A,L\r
21547 OP[0x8E]=new Function('T1=MEMR(HL);'+gb_CPU_ADC_A('T1',8)); // ADC A,(HL)\r
21548 OP[0x8F]=new Function(gb_CPU_ADC_A('RA',4)); // ADC A,A\r
21549 OP[0x90]=new Function(gb_CPU_SUB_A('RB',4)); // SUB B\r
21550 OP[0x91]=new Function(gb_CPU_SUB_A('RC',4)); // SUB C\r
21551 OP[0x92]=new Function(gb_CPU_SUB_A('RD',4)); // SUB D\r
21552 OP[0x93]=new Function(gb_CPU_SUB_A('RE',4)); // SUB E\r
21553 OP[0x94]=new Function('T1=HL>>8;'+gb_CPU_SUB_A('T1',4)); // SUB H\r
21554 OP[0x95]=new Function('T1=HL&0xFF;'+gb_CPU_SUB_A('T1',4)); // SUB L\r
21555 OP[0x96]=new Function('T1=MEMR(HL);'+gb_CPU_SUB_A('T1',8)); // SUB (HL)\r
21556 OP[0x97]=new Function(gb_CPU_SUB_A('RA',4)); // SUB A\r
21557 OP[0x98]=new Function(gb_CPU_SBC_A('RB',4)); // SBC A,B\r
21558 OP[0x99]=new Function(gb_CPU_SBC_A('RC',4)); // SBC A,C\r
21559 OP[0x9A]=new Function(gb_CPU_SBC_A('RD',4)); // SBC A,D\r
21560 OP[0x9B]=new Function(gb_CPU_SBC_A('RE',4)); // SBC A,E\r
21561 OP[0x9C]=new Function('T1=HL>>8;'+gb_CPU_SBC_A('T1',4)); // SBC A,H\r
21562 OP[0x9D]=new Function('T1=HL&0xFF;'+gb_CPU_SBC_A('T1',4)); // SBC A,L\r
21563 OP[0x9E]=new Function('T1=MEMR(HL);'+gb_CPU_SBC_A('T1',8)); // SBC A,(HL)\r
21564 OP[0x9F]=new Function(gb_CPU_SBC_A('RA',4)); // SBC A,A\r
21565 OP[0xA0]=new Function(gb_CPU_AND_A('RB',4)); // AND B\r
21566 OP[0xA1]=new Function(gb_CPU_AND_A('RC',4)); // AND C\r
21567 OP[0xA2]=new Function(gb_CPU_AND_A('RD',4)); // AND D\r
21568 OP[0xA3]=new Function(gb_CPU_AND_A('RE',4)); // AND E\r
21569 OP[0xA4]=new Function(gb_CPU_AND_A('HL>>8',4)); // AND H\r
21570 OP[0xA5]=new Function(gb_CPU_AND_A('HL&0xFF',4)); // AND L\r
21571 OP[0xA6]=new Function(gb_CPU_AND_A('MEMR(HL)',8)); // AND (HL)\r
21572 OP[0xA7]=new Function(gb_CPU_AND_A('RA',4)); // AND A\r
21573 OP[0xA8]=new Function(gb_CPU_XOR_A('RB',4)); // XOR B\r
21574 OP[0xA9]=new Function(gb_CPU_XOR_A('RC',4)); // XOR C\r
21575 OP[0xAA]=new Function(gb_CPU_XOR_A('RD',4)); // XOR D\r
21576 OP[0xAB]=new Function(gb_CPU_XOR_A('RE',4)); // XOR E\r
21577 OP[0xAC]=new Function(gb_CPU_XOR_A('HL>>8',4)); // XOR H\r
21578 OP[0xAD]=new Function(gb_CPU_XOR_A('HL&0xFF',4)); // XOR L\r
21579 OP[0xAE]=new Function(gb_CPU_XOR_A('MEMR(HL)',8)); // XOR (HL)\r
21580 OP[0xAF]=new Function(gb_CPU_XOR_A('RA',4)); // XOR A\r
21581 OP[0xB0]=new Function(gb_CPU_OR_A('RB',4)); // OR B\r
21582 OP[0xB1]=new Function(gb_CPU_OR_A('RC',4)); // OR C\r
21583 OP[0xB2]=new Function(gb_CPU_OR_A('RD',4)); // OR D\r
21584 OP[0xB3]=new Function(gb_CPU_OR_A('RE',4)); // OR E\r
21585 OP[0xB4]=new Function(gb_CPU_OR_A('HL>>8',4)); // OR H\r
21586 OP[0xB5]=new Function(gb_CPU_OR_A('HL&0xFF',4)); // OR L\r
21587 OP[0xB6]=new Function(gb_CPU_OR_A('MEMR(HL)',8)); // OR (HL)\r
21588 OP[0xB7]=new Function(gb_CPU_OR_A('RA',4)); // OR A\r
21589 OP[0xB8]=new Function(gb_CPU_CP_A('RB',4)); // CP B\r
21590 OP[0xB9]=new Function(gb_CPU_CP_A('RC',4)); // CP C\r
21591 OP[0xBA]=new Function(gb_CPU_CP_A('RD',4)); // CP D\r
21592 OP[0xBB]=new Function(gb_CPU_CP_A('RE',4)); // CP E\r
21593 OP[0xBC]=new Function('T1=HL>>8;'+gb_CPU_CP_A('T1',4)); // CP H\r
21594 OP[0xBD]=new Function('T1=HL&0xFF;'+gb_CPU_CP_A('T1',4)); // CP L\r
21595 OP[0xBE]=new Function('T1=MEMR(HL);'+gb_CPU_CP_A('T1',8)); // CP (HL)\r
21596 OP[0xBF]=new Function(gb_CPU_CP_A('RA',4)); // CP A\r
21597 OP[0xC0]=new Function(gb_CPU_RET('!FZ')); // RET NZ\r
21598 OP[0xC1]=function(){ RC=MEMR(SP++); RB=MEMR(SP++); gbCPUTicks=12; }; // POP BC\r
21599 OP[0xC2]=new Function(gb_CPU_JP('!FZ')); // JP NZ,u16\r
21600 OP[0xC3]=new Function(gb_CPU_JP('true')); // JP u16;\r
21601 OP[0xC4]=new Function(gb_CPU_CALL('!FZ')); // CALL NZ,u16\r
21602 OP[0xC5]=function(){ MEMW(--SP,RB); MEMW(--SP,RC); gbCPUTicks=16; }; // PUSH BC\r
21603 OP[0xC6]=new Function('T1=MEMR(PC++);'+gb_CPU_ADD_A('T1',8)); // ADD A,u8\r
21604 OP[0xC7]=new Function(gb_CPU_RST('0x00')); // RST 0x00\r
21605 OP[0xC8]=new Function(gb_CPU_RET('FZ')); // RET Z\r
21606 OP[0xC9]=new Function(gb_CPU_RET('true')); // RET\r
21607 OP[0xCA]=new Function(gb_CPU_JP('FZ')); // JP Z,u16;\r
21608 OP[0xCB]=function(){ OPCB[MEMR(PC++)](); };\r
21609 OP[0xCC]=new Function(gb_CPU_CALL('FZ')); // CALL Z,u16\r
21610 OP[0xCD]=new Function(gb_CPU_CALL('true')); // CALL u16\r
21611 OP[0xCE]=new Function('T1=MEMR(PC++);'+gb_CPU_ADC_A('T1',4)); // ADC A,u8;\r
21612 OP[0xCF]=new Function(gb_CPU_RST('0x08')); // RST 0x08\r
21613 OP[0xD0]=new Function(gb_CPU_RET('!FC')); // RET NC\r
21614 OP[0xD1]=function(){ RE=MEMR(SP++); RD=MEMR(SP++); gbCPUTicks=12; }; // POP DE\r
21615 OP[0xD2]=new Function(gb_CPU_JP('!FC')); // JP NC,u16\r
21616 OP[0xD3]=gb_CPU_UNK;\r
21617 OP[0xD4]=new Function(gb_CPU_CALL('!FC')); // CALL NC,u16\r
21618 OP[0xD5]=function(){ MEMW(--SP,RD); MEMW(--SP,RE); gbCPUTicks=16; }; // PUSH DE\r
21619 OP[0xD6]=new Function('T1=MEMR(PC++);'+gb_CPU_SUB_A('T1',8)); // SUB u8\r
21620 OP[0xD7]=new Function(gb_CPU_RST('0x10')); // RST 0x10\r
21621 OP[0xD8]=new Function(gb_CPU_RET('FC')); // RET C\r
21622 OP[0xD9]=new Function(gb_CPU_RET('true')+'gbIME=true;'); // RETI\r
21623 OP[0xDA]=new Function(gb_CPU_JP('FC')); // JP C,u16\r
21624 OP[0xDB]=gb_CPU_UNK;\r
21625 OP[0xDC]=new Function(gb_CPU_CALL('FC')); // CALL C,u16\r
21626 OP[0xDD]=gb_CPU_UNK;\r
21627 OP[0xDE]=new Function('T1=MEMR(PC++);'+gb_CPU_SBC_A('T1',8)); // SBC A,u8;\r
21628 OP[0xDF]=new Function(gb_CPU_RST('0x18')); // RST 0x18\r
21629 OP[0xE0]=function(){ MEMW(0xFF00+MEMR(PC++),RA); gbCPUTicks=12; }; // LD (0xFF00+u8),A\r
21630 OP[0xE1]=function(){ T1=MEMR(SP++); HL=(MEMR(SP++)<<8)|T1; gbCPUTicks=12; }; // POP HL\r
21631 OP[0xE2]=function(){ MEMW(0xFF00+RC,RA); gbCPUTicks=8; }; // LD (0xFF00+C),A\r
21632 OP[0xE3]=gb_CPU_UNK;\r
21633 OP[0xE4]=gb_CPU_UNK;\r
21634 OP[0xE5]=function(){ MEMW(--SP,HL>>8); MEMW(--SP,HL&0xFF); gbCPUTicks=16; }; // PUSH HL\r
21635 OP[0xE6]=new Function(gb_CPU_AND_A('MEMR(PC++)',8)); // AND u8\r
21636 OP[0xE7]=new Function(gb_CPU_RST('0x20')); // RST 0x20\r
21637 OP[0xE8]=function(){ SP=gb_CPU_ADD16(SP,sb(MEMR(PC++))); gbCPUTicks+=8; }; // ADD SP,u8\r
21638 OP[0xE9]=function(){ PC=HL; gbCPUTicks=4; }; // JP (HL)\r
21639 OP[0xEA]=function(){ MEMW((MEMR(PC+1)<<8)|MEMR(PC),RA); PC+=2; gbCPUTicks=16; }; // LD (u16),A\r
21640 OP[0xEB]=gb_CPU_UNK;\r
21641 OP[0xEC]=gb_CPU_UNK;\r
21642 OP[0xED]=gb_CPU_UNK;\r
21643 OP[0xEE]=new Function(gb_CPU_XOR_A('MEMR(PC++)',8)); // XOR u8\r
21644 OP[0xEF]=new Function(gb_CPU_RST('0x28')); // RST 0x28\r
21645 OP[0xF0]=function(){ RA=MEMR(0xFF00+MEMR(PC++)); gbCPUTicks=12; }; // LD A,(0xFF00+u8)\r
21646 OP[0xF1]=function(){ T1=MEMR(SP++); RA=MEMR(SP++); FZ=(T1>>7)&1; FN=(T1>>6)&1; FH=(T1>>5)&1; FC=(T1>>4)&1; gbCPUTicks=12; }; // POP AF\r
21647 OP[0xF2]=function(){ RA=MEMR(0xFF00+RC); gbCPUTicks=8; }; // LD A,(0xFF00+C)\r
21648 OP[0xF3]=function(){ gbIME=false; gbCPUTicks=4; }; // DI\r
21649 OP[0xF4]=gb_CPU_UNK;\r
21650 OP[0xF5]=function(){ MEMW(--SP,RA); MEMW(--SP,(FZ<<7)|(FN<<6)|(FH<<5)|(FC<<4)); gbCPUTicks=16; }; // PUSH AF\r
21651 OP[0xF6]=new Function(gb_CPU_OR_A('MEMR(PC++)',8)); // OR u8;\r
21652 OP[0xF7]=new Function(gb_CPU_RST('0x30')); // RST 0x30\r
21653 OP[0xF8]=function(){ var n=MEMR(PC++); HL=SP+sb(n); FZ=0; RN=0; FH=(((SP&0x0F)+(n&0x0F))>0x0F); FC=(((SP&0xFF)+(n&0xFF))>0xFF); gbCPUTicks=12; }; // LD HL,SP+u8;\r
21654 OP[0xF9]=function(){ SP=HL; gbCPUTicks=8; }; // LD SP,HL\r
21655 OP[0xFA]=function(){ RA=MEMR((MEMR(PC+1)<<8)|MEMR(PC)); PC+=2; gbCPUTicks=16; }; // LD A,(u16)\r
21656 OP[0xFB]=function(){ gbIME=true; gbCPUTicks=4; }; // EI\r
21657 OP[0xFC]=gb_CPU_UNK;\r
21658 OP[0xFD]=gb_CPU_UNK;\r
21659 OP[0xFE]=new Function('T1=MEMR(PC++);'+gb_CPU_CP_A('T1',8)); // CP u8\r
21660 OP[0xFF]=new Function(gb_CPU_RST('0x38')); // RST 0x38\r
21661 \r
21662 OPCB[0x00]=function(){ RB=gb_CPU_RLC(RB); };\r
21663 OPCB[0x01]=function(){ RC=gb_CPU_RLC(RC); };\r
21664 OPCB[0x02]=function(){ RD=gb_CPU_RLC(RD); };\r
21665 OPCB[0x03]=function(){ RE=gb_CPU_RLC(RE); };\r
21666 OPCB[0x04]=function(){ HL=(HL&0x00FF)|(gb_CPU_RLC(HL>>8)<<8); };\r
21667 OPCB[0x05]=function(){ HL=(HL&0xFF00)|gb_CPU_RLC(HL&0xFF); };\r
21668 OPCB[0x06]=function(){ MEMW(HL,gb_CPU_RLC(MEMR(HL))); gbCPUTicks+=8; };\r
21669 OPCB[0x07]=function(){ RA=gb_CPU_RLC(RA); };\r
21670 OPCB[0x08]=function(){ RB=gb_CPU_RRC(RB); };\r
21671 OPCB[0x09]=function(){ RC=gb_CPU_RRC(RC); };\r
21672 OPCB[0x0A]=function(){ RD=gb_CPU_RRC(RD); };\r
21673 OPCB[0x0B]=function(){ RE=gb_CPU_RRC(RE); };\r
21674 OPCB[0x0C]=function(){ HL=(HL&0x00FF)|(gb_CPU_RRC(HL>>8)<<8); };\r
21675 OPCB[0x0D]=function(){ HL=(HL&0xFF00)|gb_CPU_RRC(HL&0xFF); };\r
21676 OPCB[0x0E]=function(){ MEMW(HL,gb_CPU_RRC(MEMR(HL))); gbCPUTicks+=8; };\r
21677 OPCB[0x0F]=function(){ RA=gb_CPU_RRC(RA); };\r
21678 OPCB[0x10]=function(){ RB=gb_CPU_RL(RB); };\r
21679 OPCB[0x11]=function(){ RC=gb_CPU_RL(RC); };\r
21680 OPCB[0x12]=function(){ RD=gb_CPU_RL(RD); };\r
21681 OPCB[0x13]=function(){ RE=gb_CPU_RL(RE); };\r
21682 OPCB[0x14]=function(){ HL=(HL&0x00FF)|(gb_CPU_RL(HL>>8)<<8); };\r
21683 OPCB[0x15]=function(){ HL=(HL&0xFF00)|gb_CPU_RL(HL&0xFF); };\r
21684 OPCB[0x16]=function(){ MEMW(HL,gb_CPU_RL(MEMR(HL))); gbCPUTicks+=8; };\r
21685 OPCB[0x17]=function(){ RA=gb_CPU_RL(RA); };\r
21686 OPCB[0x18]=function(){ RB=gb_CPU_RR(RB); };\r
21687 OPCB[0x19]=function(){ RC=gb_CPU_RR(RC); };\r
21688 OPCB[0x1A]=function(){ RD=gb_CPU_RR(RD); };\r
21689 OPCB[0x1B]=function(){ RE=gb_CPU_RR(RE); };\r
21690 OPCB[0x1C]=function(){ HL=(HL&0x00FF)|(gb_CPU_RR(HL>>8)<<8); };\r
21691 OPCB[0x1D]=function(){ HL=(HL&0xFF00)|gb_CPU_RR(HL&0xFF); };\r
21692 OPCB[0x1E]=function(){ MEMW(HL,gb_CPU_RR(MEMR(HL))); gbCPUTicks+=8; };\r
21693 OPCB[0x1F]=function(){ RA=gb_CPU_RR(RA); };\r
21694 OPCB[0x20]=new Function(gb_CPU_SLA_R('RB',8)); // SLA B\r
21695 OPCB[0x21]=new Function(gb_CPU_SLA_R('RC',8)); // SLA C\r
21696 OPCB[0x22]=new Function(gb_CPU_SLA_R('RD',8)); // SLA D\r
21697 OPCB[0x23]=new Function(gb_CPU_SLA_R('RE',8)); // SLA E\r
21698 OPCB[0x24]=new Function('T1=HL>>8;'+gb_CPU_SLA_R('T1',8)+'HL=(T1<<8)|(HL&0x00FF);'); // SLA H\r
21699 OPCB[0x25]=new Function('T1=HL&0xFF;'+gb_CPU_SLA_R('T1',8)+'HL=(HL&0xFF00)|T1;'); // SLA L\r
21700 OPCB[0x26]=new Function('T1=MEMR(HL);'+gb_CPU_SLA_R('T1',16)+'MEMW(HL,T1);'); // SLA (HL)\r
21701 OPCB[0x27]=new Function(gb_CPU_SLA_R('RA',8)); // SLA A\r
21702 OPCB[0x28]=function(){ FC=RB&1; RB=(RB>>1)|(RB&0x80); FN=0;FH=0;FZ=RB==0; gbCPUTicks=8; }; // SRA n\r
21703 OPCB[0x29]=function(){ FC=RC&1; RC=(RC>>1)|(RC&0x80); FN=0;FH=0;FZ=RC==0; gbCPUTicks=8; }; // SRA n\r
21704 OPCB[0x2A]=function(){ FC=RD&1;RD=(RD>>1)|(RD&0x80); FN=0;FH=0;FZ=RD==0; gbCPUTicks=8; }; // SRA n\r
21705 OPCB[0x2B]=function(){ FC=RE&1;RE=(RE>>1)|(RE&0x80); FN=0;FH=0;FZ=RE==0; gbCPUTicks=8; }; // SRA n\r
21706 OPCB[0x2C]=function(){ var H=HL>>8; FC=H&1; H=(H>>1)|(H&0x80); FN=0;FH=0;FZ=H==0; HL=(H<<8)|(HL&0x00FF); gbCPUTicks=8; }; // SRA n\r
21707 OPCB[0x2D]=function(){ var L=HL&0xFF; FC=L&1; L=(L>>1)|(L&0x80); FN=0;FH=0;FZ=L==0; HL=(HL&0xFF00)|L; gbCPUTicks=8; }; // SRA n\r
21708 OPCB[0x2E]=function(){ var M=MEMR(HL); FC=M&1; M=(M>>1)|(M&0x80); FN=0;FH=0;FZ=M==0; MEMW(HL,M); gbCPUTicks=16; }; // SRA n\r
21709 OPCB[0x2F]=function(){ FC=RA&1; RA=(RA>>1)|(RA&0x80); FN=0;FH=0;FZ=RA==0; gbCPUTicks=8; }; // SRA n\r
21710 OPCB[0x30]=new Function(gb_CPU_SWAP('RB'));\r
21711 OPCB[0x31]=new Function(gb_CPU_SWAP('RC'));\r
21712 OPCB[0x32]=new Function(gb_CPU_SWAP('RD'));\r
21713 OPCB[0x33]=new Function(gb_CPU_SWAP('RE'));\r
21714 OPCB[0x34]=new Function(gb_CPU_SWAP('H'));\r
21715 OPCB[0x35]=new Function(gb_CPU_SWAP('L'));\r
21716 OPCB[0x36]=new Function(gb_CPU_SWAP('(HL)'));\r
21717 OPCB[0x37]=new Function(gb_CPU_SWAP('RA'));\r
21718 OPCB[0x38]=function(){ FC=RB&1; RB=RB>>1; FN=0;FH=0;FZ=RB==0; gbCPUTicks=8; }; // SRL n\r
21719 OPCB[0x39]=function(){ FC=RC&1; RC=RC>>1; FN=0;FH=0;FZ=RC==0; gbCPUTicks=8; }; // SRL n\r
21720 OPCB[0x3A]=function(){ FC=RD&1; RD=RD>>1; FN=0;FH=0;FZ=RD==0; gbCPUTicks=8; }; // SRL n\r
21721 OPCB[0x3B]=function(){ FC=RE&1; RE=RE>>1; FN=0;FH=0;FZ=RE==0; gbCPUTicks=8; }; // SRL n\r
21722 OPCB[0x3C]=function(){ var H=HL>>8; FC=H&1; H=H>>1; FN=0;FH=0;FZ=H==0; HL=(H<<8)|(HL&0x00FF); gbCPUTicks=8; }; // SRL n\r
21723 OPCB[0x3D]=function(){ var L=HL&0xFF; FC=L&1; L=L>>1; FN=0;FH=0;FZ=L==0; HL=(HL&0xFF00)|L; gbCPUTicks=8; }; // SRL n\r
21724 OPCB[0x3E]=function(){ var M=MEMR(HL); FC=M&1; M=M>>1; FN=0;FH=0;FZ=M==0; MEMW(HL,M); gbCPUTicks=16; }; // SRL n\r
21725 OPCB[0x3F]=function(){ FC=RA&1; RA=RA>>1; FN=0;FH=0;FZ=RA==0; gbCPUTicks=8; }; // SRL n\r
21726 \r
21727 for (var i=0;i<8;i++) {\r
21728   var o=(1<<6)|(i<<3);\r
21729   // BIT n,r - CB 01 xxx xxx - CB 01 bit reg\r
21730   OPCB[o|7]=new Function("FZ=!(RA&"+(1<<i)+");FN=0;FH=1; gbCPUTicks=8;");\r
21731   MNCB[o|7]=new Function("return 'BIT "+i+",A';");\r
21732   OPCB[o|0]=new Function("FZ=!(RB&"+(1<<i)+");FN=0;FH=1; gbCPUTicks=8;");\r
21733   MNCB[o|0]=new Function("return 'BIT "+i+",B';");\r
21734   OPCB[o|1]=new Function("FZ=!(RC&"+(1<<i)+");FN=0;FH=1; gbCPUTicks=8;");\r
21735   MNCB[o|1]=new Function("return 'BIT "+i+",C';");\r
21736   OPCB[o|2]=new Function("FZ=!(RD&"+(1<<i)+");FN=0;FH=1; gbCPUTicks=8;");\r
21737   MNCB[o|2]=new Function("return 'BIT "+i+",D';");\r
21738   OPCB[o|3]=new Function("FZ=!(RE&"+(1<<i)+");FN=0;FH=1; gbCPUTicks=8;");\r
21739   MNCB[o|3]=new Function("return 'BIT "+i+",E';");\r
21740   OPCB[o|4]=new Function("FZ=!(HL&"+(256<<i)+");FN=0;FH=1; gbCPUTicks=8;");\r
21741   MNCB[o|4]=new Function("return 'BIT "+i+",H';");\r
21742   OPCB[o|5]=new Function("FZ=!(HL&"+(1<<i)+");FN=0;FH=1; gbCPUTicks=8;");\r
21743   MNCB[o|5]=new Function("return 'BIT "+i+",L';");\r
21744   OPCB[o|6]=new Function("FZ=!(MEMR(HL)&"+(1<<i)+");FN=0;FH=1; gbCPUTicks=16;");\r
21745   MNCB[o|6]=new Function("return 'BIT "+i+",(HL)';");\r
21746   // RES n,r - CB 10 xxx xxx - CB 10 bit reg\r
21747   o=(2<<6)|(i<<3);\r
21748   OPCB[o|7]=new Function("RA&="+((~(1<<i))&0xFF)+"; gbCPUTicks=8;");\r
21749   MNCB[o|7]=new Function("return 'RES "+i+",A';");\r
21750   OPCB[o|0]=new Function("RB&="+((~(1<<i))&0xFF)+"; gbCPUTicks=8;");\r
21751   MNCB[o|0]=new Function("return 'RES "+i+",B';");\r
21752   OPCB[o|1]=new Function("RC&="+((~(1<<i))&0xFF)+"; gbCPUTicks=8;");\r
21753   MNCB[o|1]=new Function("return 'RES "+i+",C';");\r
21754   OPCB[o|2]=new Function("RD&="+((~(1<<i))&0xFF)+"; gbCPUTicks=8;");\r
21755   MNCB[o|2]=new Function("return 'RES "+i+",D';");\r
21756   OPCB[o|3]=new Function("RE&="+((~(1<<i))&0xFF)+"; gbCPUTicks=8;");\r
21757   MNCB[o|3]=new Function("return 'RES "+i+",E';");\r
21758   OPCB[o|4]=new Function("HL&="+((~(256<<i))&0xFFFF)+"; gbCPUTicks=8;");\r
21759   MNCB[o|4]=new Function("return 'RES "+i+",H';");\r
21760   OPCB[o|5]=new Function("HL&="+((~(1<<i))&0xFFFF)+"; gbCPUTicks=8;");\r
21761   MNCB[o|5]=new Function("return 'RES "+i+",L';");\r
21762   OPCB[o|6]=new Function("MEMW(HL,MEMR(HL)&"+((~(1<<i))&0xFF)+"); gbCPUTicks=16;");\r
21763   MNCB[o|6]=new Function("return 'RES "+i+",(HL)';");\r
21764   // SET n,r - CB 11 xxx xxx - CB 11 bit reg\r
21765   o=(3<<6)|(i<<3);\r
21766   OPCB[o|7]=new Function("RA|="+(1<<i)+"; gbCPUTicks=8;");\r
21767   MNCB[o|7]=new Function("return 'SET "+i+",A';");\r
21768   OPCB[o|0]=new Function("RB|="+(1<<i)+"; gbCPUTicks=8;");\r
21769   MNCB[o|0]=new Function("return 'SET "+i+",B';");\r
21770   OPCB[o|1]=new Function("RC|="+(1<<i)+"; gbCPUTicks=8;");\r
21771   MNCB[o|1]=new Function("return 'SET "+i+",C';");\r
21772   OPCB[o|2]=new Function("RD|="+(1<<i)+"; gbCPUTicks=8;");\r
21773   MNCB[o|2]=new Function("return 'SET "+i+",D';");\r
21774   OPCB[o|3]=new Function("RE|="+(1<<i)+"; gbCPUTicks=8;");\r
21775   MNCB[o|3]=new Function("return 'SET "+i+",E';");\r
21776   OPCB[o|4]=new Function("HL|="+(256<<i)+"; gbCPUTicks=8;");\r
21777   MNCB[o|4]=new Function("return 'SET "+i+",H';");\r
21778   OPCB[o|5]=new Function("HL|="+(1<<i)+"; gbCPUTicks=8;");\r
21779   MNCB[o|5]=new Function("return 'SET "+i+",L';");\r
21780   OPCB[o|6]=new Function("MEMW(HL,MEMR(HL)|"+(1<<i)+"); gbCPUTicks=16;");\r
21781   MNCB[o|6]=new Function("return 'SET "+i+",(HL)';");\r
21782 }\r
21783 \r
21784 MN[0x01]=function(){ return 'LD BC,0x'+hex4((MEMR(PC+2)<<8)+MEMR(PC+1)); };\r
21785 MN[0x00]=function(){ return 'NOP'; };\r
21786 MN[0x02]=function(){ return 'LD (BC),A'; };\r
21787 MN[0x03]=function(){ return 'INC BC'; };\r
21788 MN[0x04]=function(){ return 'INC B'; };\r
21789 MN[0x05]=function(){ return 'DEC B'; };\r
21790 MN[0x06]=function(){ return 'LD B,0x'+hex2(MEMR(PC+1)); };\r
21791 MN[0x07]=function(){ return 'RLCA'; };\r
21792 MN[0x08]=function(){ return 'LD(0x'+hex4((MEMR(PC+2)<<8)+MEMR(PC+1))+'),SP'; };\r
21793 MN[0x09]=function(){ return 'ADD HL,BC'; };\r
21794 MN[0x0A]=function(){ return 'LD A,(BC)'; };\r
21795 MN[0x0B]=function(){ return 'DEC BC'; };\r
21796 MN[0x0C]=function(){ return 'INC C'; };\r
21797 MN[0x0D]=function(){ return 'DEC C'; };\r
21798 MN[0x0E]=function(){ return 'LD C,0x'+hex2(MEMR(PC+1)); };\r
21799 MN[0x0F]=function(){ return 'RRCA'; };\r
21800 MN[0x10]=function(){ return 'STOP'; };\r
21801 MN[0x11]=function(){ return 'LD DE,0x'+hex4((MEMR(PC+2)<<8)+MEMR(PC+1)); };\r
21802 MN[0x12]=function(){ return 'LD (DE),A'; };\r
21803 MN[0x13]=function(){ return 'INC DE'; };\r
21804 MN[0x14]=function(){ return 'INC D'; };\r
21805 MN[0x15]=function(){ return 'DEC D'; };\r
21806 MN[0x16]=function(){ return 'LD D,0x'+hex2(MEMR(PC+1)); };\r
21807 MN[0x17]=function(){ return 'RLA'; };\r
21808 MN[0x18]=function(){ return 'JR '+sb(MEMR(PC+1))+'; 0x'+hex2(MEMR(PC+1)); };\r
21809 MN[0x19]=function(){ return 'ADD HL,DE'; };\r
21810 MN[0x1A]=function(){ return 'LD A,(DE)'; };\r
21811 MN[0x1B]=function(){ return 'DEC DE'; };\r
21812 MN[0x1C]=function(){ return 'INC E'; };\r
21813 MN[0x1D]=function(){ return 'DEC E'; };\r
21814 MN[0x1E]=function(){ return 'LD E,0x'+hex2(MEMR(PC+1)); };\r
21815 MN[0x1F]=function(){ return 'RRA'; };\r
21816 MN[0x20]=function(){ return 'JR NZ,'+sb(MEMR(PC+1))+'; 0x'+hex2(MEMR(PC+1)); };\r
21817 MN[0x21]=function(){ return 'LD HL,0x'+hex4((MEMR(PC+2)<<8)+MEMR(PC+1)); };\r
21818 MN[0x22]=function(){ return 'LDI (HL),A'; };\r
21819 MN[0x23]=function(){ return 'INC HL'; };\r
21820 MN[0x24]=function(){ return 'INC H'; };\r
21821 MN[0x25]=function(){ return 'DEC H'; };\r
21822 MN[0x26]=function(){ return 'LD H,0x'+hex2(MEMR(PC+1)); };\r
21823 MN[0x27]=function(){ return 'DAA'; };\r
21824 MN[0x28]=function(){ return 'JR Z,'+sb(MEMR(PC+1))+'; 0x'+hex2(MEMR(PC+1)); };\r
21825 MN[0x29]=function(){ return 'ADD HL,HL'; };\r
21826 MN[0x2A]=function(){ return 'LDI A,(HL)'; };\r
21827 MN[0x2B]=function(){ return 'DEC HL'; };\r
21828 MN[0x2C]=function(){ return 'INC L'; };\r
21829 MN[0x2D]=function(){ return 'DEC L'; };\r
21830 MN[0x2E]=function(){ return 'LD L,0x'+hex2(MEMR(PC+1)); };\r
21831 MN[0x2F]=function(){ return 'CPL'; };\r
21832 MN[0x30]=function(){ return 'JR NC,'+sb(MEMR(PC+1))+'; 0x'+hex2(MEMR(PC+1)); };\r
21833 MN[0x31]=function(){ return 'LD SP,0x'+hex4((MEMR(PC+2)<<8)+MEMR(PC+1)); };\r
21834 MN[0x32]=function(){ return 'LDD (HL),A'; };\r
21835 MN[0x33]=function(){ return 'INC SP'; };\r
21836 MN[0x34]=function(){ return 'INC (HL)'; };\r
21837 MN[0x35]=function(){ return 'DEC (HL)'; };\r
21838 MN[0x36]=function(){ return 'LD (HL),0x'+hex2(MEMR(PC+1)); };\r
21839 MN[0x37]=function(){ return 'SCF'; };\r
21840 MN[0x38]=function(){ return 'JR C,'+sb(MEMR(PC+1))+'; 0x'+hex2(MEMR(PC+1)); };\r
21841 MN[0x39]=function(){ return 'ADD HL,SP'; };\r
21842 MN[0x3A]=function(){ return 'LDD A,(HL)'; };\r
21843 MN[0x3B]=function(){ return 'DEC SP'; };\r
21844 MN[0x3C]=function(){ return 'INC A'; };\r
21845 MN[0x3D]=function(){ return 'DEC A'; };\r
21846 MN[0x3E]=function(){ return 'LD A,0x'+hex2(MEMR(PC+1)); }; // ???\r
21847 MN[0x3F]=function(){ return 'CCF'; };\r
21848 MN[0x40]=function(){ return 'LD B,B'; };\r
21849 MN[0x41]=function(){ return 'LD B,C'; };\r
21850 MN[0x42]=function(){ return 'LD B,D'; };\r
21851 MN[0x43]=function(){ return 'LD B,E'; };\r
21852 MN[0x44]=function(){ return 'LD B,H'; };\r
21853 MN[0x45]=function(){ return 'LD B,L'; };\r
21854 MN[0x46]=function(){ return 'LD B,(HL)'; };\r
21855 MN[0x47]=function(){ return 'LD B,A'; };\r
21856 MN[0x48]=function(){ return 'LD C,B'; };\r
21857 MN[0x49]=function(){ return 'LD C,C'; };\r
21858 MN[0x4A]=function(){ return 'LD C,D'; };\r
21859 MN[0x4B]=function(){ return 'LD C,E'; };\r
21860 MN[0x4C]=function(){ return 'LD C,H'; };\r
21861 MN[0x4D]=function(){ return 'LD C,L'; };\r
21862 MN[0x4E]=function(){ return 'LD C,(HL)'; };\r
21863 MN[0x4F]=function(){ return 'LD C,A'; };\r
21864 MN[0x50]=function(){ return 'LD D,B'; };\r
21865 MN[0x51]=function(){ return 'LD D,C'; };\r
21866 MN[0x52]=function(){ return 'LD D,D'; };\r
21867 MN[0x53]=function(){ return 'LD D,E'; };\r
21868 MN[0x54]=function(){ return 'LD D,H'; };\r
21869 MN[0x55]=function(){ return 'LD D,L'; };\r
21870 MN[0x56]=function(){ return 'LD D,(HL)'; };\r
21871 MN[0x57]=function(){ return 'LD D,A'; };\r
21872 MN[0x58]=function(){ return 'LD E,B'; };\r
21873 MN[0x59]=function(){ return 'LD E,C'; };\r
21874 MN[0x5A]=function(){ return 'LD E,D'; };\r
21875 MN[0x5B]=function(){ return 'LD E,E'; };\r
21876 MN[0x5C]=function(){ return 'LD E,H'; };\r
21877 MN[0x5D]=function(){ return 'LD E,L'; };\r
21878 MN[0x5E]=function(){ return 'LD E,(HL)'; };\r
21879 MN[0x5F]=function(){ return 'LD E,A'; };\r
21880 MN[0x60]=function(){ return 'LD H,B'; };\r
21881 MN[0x61]=function(){ return 'LD H,C'; };\r
21882 MN[0x62]=function(){ return 'LD H,D'; };\r
21883 MN[0x63]=function(){ return 'LD H,E'; };\r
21884 MN[0x64]=function(){ return 'LD H,H'; };\r
21885 MN[0x65]=function(){ return 'LD H,L'; };\r
21886 MN[0x66]=function(){ return 'LD H,(HL)'; };\r
21887 MN[0x67]=function(){ return 'LD H,A'; };\r
21888 MN[0x68]=function(){ return 'LD L,B'; };\r
21889 MN[0x69]=function(){ return 'LD L,C'; };\r
21890 MN[0x6A]=function(){ return 'LD L,D'; };\r
21891 MN[0x6B]=function(){ return 'LD L,E'; };\r
21892 MN[0x6C]=function(){ return 'LD L,H'; };\r
21893 MN[0x6D]=function(){ return 'LD L,L'; };\r
21894 MN[0x6E]=function(){ return 'LD L,(HL)'; };\r
21895 MN[0x6F]=function(){ return 'LD L,A'; };\r
21896 MN[0x70]=function(){ return 'LD (HL),B'; };\r
21897 MN[0x71]=function(){ return 'LD (HL),C'; };\r
21898 MN[0x72]=function(){ return 'LD (HL),D'; };\r
21899 MN[0x73]=function(){ return 'LD (HL),E'; };\r
21900 MN[0x74]=function(){ return 'LD (HL),H'; };\r
21901 MN[0x75]=function(){ return 'LD (HL),L'; };\r
21902 MN[0x76]=function(){ return 'HALT'; };\r
21903 MN[0x77]=function(){ return 'LD (HL),A'; };\r
21904 MN[0x78]=function(){ return 'LD A,B'; };\r
21905 MN[0x79]=function(){ return 'LD A,C'; };\r
21906 MN[0x7A]=function(){ return 'LD A,D'; };\r
21907 MN[0x7B]=function(){ return 'LD A,E'; };\r
21908 MN[0x7C]=function(){ return 'LD A,H'; };\r
21909 MN[0x7D]=function(){ return 'LD A,L'; };\r
21910 MN[0x7E]=function(){ return 'LD A,(HL)'; };\r
21911 MN[0x7F]=function(){ return 'LD A,A'; };\r
21912 MN[0x80]=function(){ return 'ADD A,B'; };\r
21913 MN[0x81]=function(){ return 'ADD A,C'; };\r
21914 MN[0x82]=function(){ return 'ADD A,D'; };\r
21915 MN[0x83]=function(){ return 'ADD A,E'; };\r
21916 MN[0x84]=function(){ return 'ADD A,H'; };\r
21917 MN[0x85]=function(){ return 'ADD A,L'; };\r
21918 MN[0x86]=function(){ return 'ADD A,(HL)'; };\r
21919 MN[0x87]=function(){ return 'ADD A,A'; };\r
21920 MN[0x88]=function(){ return 'ADC A,B'; };\r
21921 MN[0x89]=function(){ return 'ADC A,C'; };\r
21922 MN[0x8A]=function(){ return 'ADC A,D'; };\r
21923 MN[0x8B]=function(){ return 'ADC A,E'; };\r
21924 MN[0x8C]=function(){ return 'ADC A,H'; };\r
21925 MN[0x8D]=function(){ return 'ADC A,L'; };\r
21926 MN[0x8E]=function(){ return 'ADC A,(HL)'; };\r
21927 MN[0x8F]=function(){ return 'ADC A,A'; };\r
21928 MN[0x90]=function(){ return 'SUB B'; };\r
21929 MN[0x91]=function(){ return 'SUB C'; };\r
21930 MN[0x92]=function(){ return 'SUB D'; };\r
21931 MN[0x93]=function(){ return 'SUB E'; };\r
21932 MN[0x94]=function(){ return 'SUB H'; };\r
21933 MN[0x95]=function(){ return 'SUB L'; };\r
21934 MN[0x96]=function(){ return 'SUB (HL)'; };\r
21935 MN[0x97]=function(){ return 'SUB A'; };\r
21936 MN[0x98]=function(){ return 'SBC A,B'; };\r
21937 MN[0x99]=function(){ return 'SBC A,C'; };\r
21938 MN[0x9A]=function(){ return 'SBC A,D'; };\r
21939 MN[0x9B]=function(){ return 'SBC A,E'; };\r
21940 MN[0x9C]=function(){ return 'SBC A,H'; };\r
21941 MN[0x9D]=function(){ return 'SBC A,L'; };\r
21942 MN[0x9E]=function(){ return 'SBC A,(HL)'; };\r
21943 MN[0x9F]=function(){ return 'SBC A,A'; };\r
21944 MN[0xA0]=function(){ return 'AND B'; };\r
21945 MN[0xA1]=function(){ return 'AND C'; };\r
21946 MN[0xA2]=function(){ return 'AND D'; };\r
21947 MN[0xA3]=function(){ return 'AND E'; };\r
21948 MN[0xA4]=function(){ return 'AND H'; };\r
21949 MN[0xA5]=function(){ return 'AND L'; };\r
21950 MN[0xA6]=function(){ return 'AND (HL)'; };\r
21951 MN[0xA7]=function(){ return 'AND A'; };\r
21952 MN[0xA8]=function(){ return 'XOR B'; };\r
21953 MN[0xA9]=function(){ return 'XOR C'; };\r
21954 MN[0xAA]=function(){ return 'XOR D'; };\r
21955 MN[0xAB]=function(){ return 'XOR E'; };\r
21956 MN[0xAC]=function(){ return 'XOR H'; };\r
21957 MN[0xAD]=function(){ return 'XOR L'; };\r
21958 MN[0xAE]=function(){ return 'XOR (HL)'; };\r
21959 MN[0xAF]=function(){ return 'XOR A'; };\r
21960 MN[0xB0]=function(){ return 'OR B'; };\r
21961 MN[0xB1]=function(){ return 'OR C'; };\r
21962 MN[0xB2]=function(){ return 'OR D'; };\r
21963 MN[0xB3]=function(){ return 'OR E'; };\r
21964 MN[0xB4]=function(){ return 'OR H'; };\r
21965 MN[0xB5]=function(){ return 'OR L'; };\r
21966 MN[0xB6]=function(){ return 'OR (HL)'; };\r
21967 MN[0xB7]=function(){ return 'OR A'; };\r
21968 MN[0xB8]=function(){ return 'CP B'; };\r
21969 MN[0xB9]=function(){ return 'CP C'; };\r
21970 MN[0xBA]=function(){ return 'CP D'; };\r
21971 MN[0xBB]=function(){ return 'CP E'; };\r
21972 MN[0xBC]=function(){ return 'CP H'; };\r
21973 MN[0xBD]=function(){ return 'CP L'; };\r
21974 MN[0xBE]=function(){ return 'CP (HL)'; };\r
21975 MN[0xBF]=function(){ return 'CP A'; };\r
21976 MN[0xC0]=function(){ return 'RET NZ'; };\r
21977 MN[0xC1]=function(){ return 'POP BC'; };\r
21978 MN[0xC2]=function(){ return 'JP NZ,0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
21979 MN[0xC3]=function(){ return 'JP 0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
21980 MN[0xC4]=function(){ return 'CALL NZ,0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
21981 MN[0xC5]=function(){ return 'PUSH BC'; };\r
21982 MN[0xC6]=function(){ return 'ADD A,0x'+hex2(MEMR(PC+1)); };\r
21983 MN[0xC7]=function(){ return 'RST 0x00'; };\r
21984 MN[0xC8]=function(){ return 'RET Z'; };\r
21985 MN[0xC9]=function(){ return 'RET'; };\r
21986 MN[0xCA]=function(){ return 'JP Z,0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
21987 MN[0xCB]=function(){ return MNCB[MEMR(PC+1)](); };\r
21988 MN[0xCC]=function(){ return 'CALL Z,0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
21989 MN[0xCD]=function(){ return 'CALL 0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
21990 MN[0xCE]=function(){ return 'ADC A,0x'+hex2(MEMR(PC+1)); };\r
21991 MN[0xCF]=function(){ return 'RST 0x08'; };\r
21992 MN[0xD0]=function(){ return 'RET NC'; };\r
21993 MN[0xD1]=function(){ return 'POP DE'; };\r
21994 MN[0xD2]=function(){ return 'JP NC,0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
21995 MN[0xD4]=function(){ return 'CALL NC,0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
21996 MN[0xD5]=function(){ return 'PUSH DE'; };\r
21997 MN[0xD6]=function(){ return 'SUB 0x'+hex2(MEMR(PC+1)); };\r
21998 MN[0xD7]=function(){ return 'RST 0x10'; };\r
21999 MN[0xD8]=function(){ return 'RET C'; };\r
22000 MN[0xD9]=function(){ return 'RETI'; };\r
22001 MN[0xDA]=function(){ return 'JP C,0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
22002 MN[0xDC]=function(){ return 'CALL C,0x'+hex(MEMR(PC+1)|(MEMR(PC+2)<<8)); };\r
22003 MN[0xDE]=function(){ return 'SBC A,0x'+hex2(MEMR(PC+1)); };\r
22004 MN[0xDF]=function(){ return 'RST 0x18'; };\r
22005 MN[0xE0]=function(){ return 'LD (0xFF00+0x'+hex2(MEMR(PC+1))+'),A'; };\r
22006 MN[0xE1]=function(){ return 'POP HL'; };\r
22007 MN[0xE2]=function(){ return 'LD (0xFF00+C),A'; };\r
22008 MN[0xE5]=function(){ return 'PUSH HL'; };\r
22009 MN[0xE6]=function(){ return 'AND 0x'+hex2(MEMR(PC+1)); };\r
22010 MN[0xE7]=function(){ return 'RST 0x20'; };\r
22011 MN[0xE8]=function(){ return 'ADD SP,0x'+hex2(MEMR(PC+1)); };\r
22012 MN[0xE9]=function(){ return 'JP (HL)'; };\r
22013 MN[0xEA]=function(){ return 'LD (0x'+hex((MEMR(PC+2)<<8)|MEMR(PC+1),4)+'),A'; };\r
22014 MN[0xEE]=function(){ return 'XOR 0x'+hex2(MEMR(PC+1)); };\r
22015 MN[0xEF]=function(){ return 'RST 0x28'; };\r
22016 MN[0xF0]=function(){ return 'LD A,(0xFF00+0x'+hex2(MEMR(PC+1))+')'; };\r
22017 MN[0xF1]=function(){ return 'POP AF'; };\r
22018 MN[0xF2]=function(){ return 'LD A,(0xFF00+C)'; };\r
22019 MN[0xF3]=function(){ return 'DI'; };\r
22020 MN[0xF5]=function(){ return 'PUSH AF'; };\r
22021 MN[0xF6]=function(){ return 'OR 0x'+hex2(MEMR(PC+1)); };\r
22022 MN[0xF7]=function(){ return 'RST 0x30'; };\r
22023 MN[0xF8]=function(){ return 'LD HL,SP+0x'+hex2(MEMR(PC+1)); };\r
22024 MN[0xF9]=function(){ return 'LD SP,HL'; };\r
22025 MN[0xFA]=function(){ return 'LD A,(0x'+hex4((MEMR(PC+2)<<8)+MEMR(PC+1))+')'; };\r
22026 MN[0xFB]=function(){ return 'EI'; };\r
22027 MN[0xFE]=function(){ return 'CP '+MEMR(PC+1)+'; 0x'+hex2(MEMR(PC+1)); };\r
22028 MN[0xFF]=function(){ return 'RST 0x38'; };\r
22029 \r
22030 MNCB[0x00]=function(){ return 'RLC B'; };\r
22031 MNCB[0x01]=function(){ return 'RLC C'; };\r
22032 MNCB[0x02]=function(){ return 'RLC D'; };\r
22033 MNCB[0x03]=function(){ return 'RLC E'; };\r
22034 MNCB[0x04]=function(){ return 'RLC H'; };\r
22035 MNCB[0x05]=function(){ return 'RLC L'; };\r
22036 MNCB[0x06]=function(){ return 'RLC (HL)'; };\r
22037 MNCB[0x07]=function(){ return 'RLC A'; };\r
22038 MNCB[0x08]=function(){ return 'RRC B'; };\r
22039 MNCB[0x09]=function(){ return 'RRC C'; };\r
22040 MNCB[0x0A]=function(){ return 'RRC D'; };\r
22041 MNCB[0x0B]=function(){ return 'RRC E'; };\r
22042 MNCB[0x0C]=function(){ return 'RRC H'; };\r
22043 MNCB[0x0D]=function(){ return 'RRC L'; };\r
22044 MNCB[0x0E]=function(){ return 'RRC (HL)'; };\r
22045 MNCB[0x0F]=function(){ return 'RRC A'; };\r
22046 MNCB[0x10]=function(){ return 'RL B'; };\r
22047 MNCB[0x11]=function(){ return 'RL C'; };\r
22048 MNCB[0x12]=function(){ return 'RL D'; };\r
22049 MNCB[0x13]=function(){ return 'RL E'; };\r
22050 MNCB[0x14]=function(){ return 'RL H'; };\r
22051 MNCB[0x15]=function(){ return 'RL L'; };\r
22052 MNCB[0x16]=function(){ return 'RL (HL)'; };\r
22053 MNCB[0x17]=function(){ return 'RL A'; };\r
22054 MNCB[0x18]=function(){ return 'RR B'; };\r
22055 MNCB[0x19]=function(){ return 'RR C'; };\r
22056 MNCB[0x1A]=function(){ return 'RR D'; };\r
22057 MNCB[0x1B]=function(){ return 'RR E'; };\r
22058 MNCB[0x1C]=function(){ return 'RR H'; };\r
22059 MNCB[0x1D]=function(){ return 'RR L'; };\r
22060 MNCB[0x1E]=function(){ return 'RR (HL)'; };\r
22061 MNCB[0x1F]=function(){ return 'RR A'; };\r
22062 MNCB[0x20]=function(){ return 'SLA B'; };\r
22063 MNCB[0x21]=function(){ return 'SLA C'; };\r
22064 MNCB[0x22]=function(){ return 'SLA D'; };\r
22065 MNCB[0x23]=function(){ return 'SLA E'; };\r
22066 MNCB[0x24]=function(){ return 'SLA H'; };\r
22067 MNCB[0x25]=function(){ return 'SLA L'; };\r
22068 MNCB[0x26]=function(){ return 'SLA (HL)'; };\r
22069 MNCB[0x27]=function(){ return 'SLA A'; };\r
22070 MNCB[0x28]=function(){ return 'SRA B'; };\r
22071 MNCB[0x29]=function(){ return 'SRA C'; };\r
22072 MNCB[0x2A]=function(){ return 'SRA D'; };\r
22073 MNCB[0x2B]=function(){ return 'SRA E'; };\r
22074 MNCB[0x2C]=function(){ return 'SRA H'; };\r
22075 MNCB[0x2D]=function(){ return 'SRA L'; };\r
22076 MNCB[0x2E]=function(){ return 'SRA (HL)'; };\r
22077 MNCB[0x2F]=function(){ return 'SRA A'; };\r
22078 MNCB[0x30]=function(){ return 'SWAP B'; };\r
22079 MNCB[0x31]=function(){ return 'SWAP C'; };\r
22080 MNCB[0x32]=function(){ return 'SWAP D'; };\r
22081 MNCB[0x33]=function(){ return 'SWAP E'; };\r
22082 MNCB[0x34]=function(){ return 'SWAP H'; };\r
22083 MNCB[0x35]=function(){ return 'SWAP L'; };\r
22084 MNCB[0x36]=function(){ return 'SWAP (HL)'; };\r
22085 MNCB[0x37]=function(){ return 'SWAP A'; };\r
22086 MNCB[0x38]=function(){ return 'SRL B'; };\r
22087 MNCB[0x39]=function(){ return 'SRL C'; };\r
22088 MNCB[0x3A]=function(){ return 'SRL D'; };\r
22089 MNCB[0x3B]=function(){ return 'SRL E'; };\r
22090 MNCB[0x3C]=function(){ return 'SRL H'; };\r
22091 MNCB[0x3D]=function(){ return 'SRL L'; };\r
22092 MNCB[0x3E]=function(){ return 'SRL (HL)'; };\r
22093 MNCB[0x3F]=function(){ return 'SRL A'; };\r
22094 \r
22095 function gb_Init_CPU() {\r
22096   gbPause = true;\r
22097   RA=0x01; // 0x01->GB/SGB; 0xFF->GBP; 0x11->GBC\r
22098   FZ=0x01; // F=0xB0->Z1 N0 H1 C1\r
22099   FN=0x00;\r
22100   FH=0x01;\r
22101   FC=0x01;\r
22102   RB=0x00;\r
22103   RC=0x13;\r
22104   RD=0x00;\r
22105   RE=0xD8;\r
22106   PC=0x0100;\r
22107   SP=0xFFFE;\r
22108   HL=0x014D;\r
22109   gbCPUTicks=0;\r
22110 }\r
22111 \r
22112 var gbDAATable= [ // DDA code from VisualBoyAdvance\r
22113   0x0080,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700,\r
22114   0x0800,0x0900,0x1020,0x1120,0x1220,0x1320,0x1420,0x1520,\r
22115   0x1000,0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700,\r
22116   0x1800,0x1900,0x2020,0x2120,0x2220,0x2320,0x2420,0x2520,\r
22117   0x2000,0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700,\r
22118   0x2800,0x2900,0x3020,0x3120,0x3220,0x3320,0x3420,0x3520,\r
22119   0x3000,0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700,\r
22120   0x3800,0x3900,0x4020,0x4120,0x4220,0x4320,0x4420,0x4520,\r
22121   0x4000,0x4100,0x4200,0x4300,0x4400,0x4500,0x4600,0x4700,\r
22122   0x4800,0x4900,0x5020,0x5120,0x5220,0x5320,0x5420,0x5520,\r
22123   0x5000,0x5100,0x5200,0x5300,0x5400,0x5500,0x5600,0x5700,\r
22124   0x5800,0x5900,0x6020,0x6120,0x6220,0x6320,0x6420,0x6520,\r
22125   0x6000,0x6100,0x6200,0x6300,0x6400,0x6500,0x6600,0x6700,\r
22126   0x6800,0x6900,0x7020,0x7120,0x7220,0x7320,0x7420,0x7520,\r
22127   0x7000,0x7100,0x7200,0x7300,0x7400,0x7500,0x7600,0x7700,\r
22128   0x7800,0x7900,0x8020,0x8120,0x8220,0x8320,0x8420,0x8520,\r
22129   0x8000,0x8100,0x8200,0x8300,0x8400,0x8500,0x8600,0x8700,\r
22130   0x8800,0x8900,0x9020,0x9120,0x9220,0x9320,0x9420,0x9520,\r
22131   0x9000,0x9100,0x9200,0x9300,0x9400,0x9500,0x9600,0x9700,\r
22132   0x9800,0x9900,0x00B0,0x0130,0x0230,0x0330,0x0430,0x0530,\r
22133   0x0090,0x0110,0x0210,0x0310,0x0410,0x0510,0x0610,0x0710,\r
22134   0x0810,0x0910,0x1030,0x1130,0x1230,0x1330,0x1430,0x1530,\r
22135   0x1010,0x1110,0x1210,0x1310,0x1410,0x1510,0x1610,0x1710,\r
22136   0x1810,0x1910,0x2030,0x2130,0x2230,0x2330,0x2430,0x2530,\r
22137   0x2010,0x2110,0x2210,0x2310,0x2410,0x2510,0x2610,0x2710,\r
22138   0x2810,0x2910,0x3030,0x3130,0x3230,0x3330,0x3430,0x3530,\r
22139   0x3010,0x3110,0x3210,0x3310,0x3410,0x3510,0x3610,0x3710,\r
22140   0x3810,0x3910,0x4030,0x4130,0x4230,0x4330,0x4430,0x4530,\r
22141   0x4010,0x4110,0x4210,0x4310,0x4410,0x4510,0x4610,0x4710,\r
22142   0x4810,0x4910,0x5030,0x5130,0x5230,0x5330,0x5430,0x5530,\r
22143   0x5010,0x5110,0x5210,0x5310,0x5410,0x5510,0x5610,0x5710,\r
22144   0x5810,0x5910,0x6030,0x6130,0x6230,0x6330,0x6430,0x6530,\r
22145   0x6010,0x6110,0x6210,0x6310,0x6410,0x6510,0x6610,0x6710,\r
22146   0x6810,0x6910,0x7030,0x7130,0x7230,0x7330,0x7430,0x7530,\r
22147   0x7010,0x7110,0x7210,0x7310,0x7410,0x7510,0x7610,0x7710,\r
22148   0x7810,0x7910,0x8030,0x8130,0x8230,0x8330,0x8430,0x8530,\r
22149   0x8010,0x8110,0x8210,0x8310,0x8410,0x8510,0x8610,0x8710,\r
22150   0x8810,0x8910,0x9030,0x9130,0x9230,0x9330,0x9430,0x9530,\r
22151   0x9010,0x9110,0x9210,0x9310,0x9410,0x9510,0x9610,0x9710,\r
22152   0x9810,0x9910,0xA030,0xA130,0xA230,0xA330,0xA430,0xA530,\r
22153   0xA010,0xA110,0xA210,0xA310,0xA410,0xA510,0xA610,0xA710,\r
22154   0xA810,0xA910,0xB030,0xB130,0xB230,0xB330,0xB430,0xB530,\r
22155   0xB010,0xB110,0xB210,0xB310,0xB410,0xB510,0xB610,0xB710,\r
22156   0xB810,0xB910,0xC030,0xC130,0xC230,0xC330,0xC430,0xC530,\r
22157   0xC010,0xC110,0xC210,0xC310,0xC410,0xC510,0xC610,0xC710,\r
22158   0xC810,0xC910,0xD030,0xD130,0xD230,0xD330,0xD430,0xD530,\r
22159   0xD010,0xD110,0xD210,0xD310,0xD410,0xD510,0xD610,0xD710,\r
22160   0xD810,0xD910,0xE030,0xE130,0xE230,0xE330,0xE430,0xE530,\r
22161   0xE010,0xE110,0xE210,0xE310,0xE410,0xE510,0xE610,0xE710,\r
22162   0xE810,0xE910,0xF030,0xF130,0xF230,0xF330,0xF430,0xF530,\r
22163   0xF010,0xF110,0xF210,0xF310,0xF410,0xF510,0xF610,0xF710,\r
22164   0xF810,0xF910,0x00B0,0x0130,0x0230,0x0330,0x0430,0x0530,\r
22165   0x0090,0x0110,0x0210,0x0310,0x0410,0x0510,0x0610,0x0710,\r
22166   0x0810,0x0910,0x1030,0x1130,0x1230,0x1330,0x1430,0x1530,\r
22167   0x1010,0x1110,0x1210,0x1310,0x1410,0x1510,0x1610,0x1710,\r
22168   0x1810,0x1910,0x2030,0x2130,0x2230,0x2330,0x2430,0x2530,\r
22169   0x2010,0x2110,0x2210,0x2310,0x2410,0x2510,0x2610,0x2710,\r
22170   0x2810,0x2910,0x3030,0x3130,0x3230,0x3330,0x3430,0x3530,\r
22171   0x3010,0x3110,0x3210,0x3310,0x3410,0x3510,0x3610,0x3710,\r
22172   0x3810,0x3910,0x4030,0x4130,0x4230,0x4330,0x4430,0x4530,\r
22173   0x4010,0x4110,0x4210,0x4310,0x4410,0x4510,0x4610,0x4710,\r
22174   0x4810,0x4910,0x5030,0x5130,0x5230,0x5330,0x5430,0x5530,\r
22175   0x5010,0x5110,0x5210,0x5310,0x5410,0x5510,0x5610,0x5710,\r
22176   0x5810,0x5910,0x6030,0x6130,0x6230,0x6330,0x6430,0x6530,\r
22177   0x0600,0x0700,0x0800,0x0900,0x0A00,0x0B00,0x0C00,0x0D00,\r
22178   0x0E00,0x0F00,0x1020,0x1120,0x1220,0x1320,0x1420,0x1520,\r
22179   0x1600,0x1700,0x1800,0x1900,0x1A00,0x1B00,0x1C00,0x1D00,\r
22180   0x1E00,0x1F00,0x2020,0x2120,0x2220,0x2320,0x2420,0x2520,\r
22181   0x2600,0x2700,0x2800,0x2900,0x2A00,0x2B00,0x2C00,0x2D00,\r
22182   0x2E00,0x2F00,0x3020,0x3120,0x3220,0x3320,0x3420,0x3520,\r
22183   0x3600,0x3700,0x3800,0x3900,0x3A00,0x3B00,0x3C00,0x3D00,\r
22184   0x3E00,0x3F00,0x4020,0x4120,0x4220,0x4320,0x4420,0x4520,\r
22185   0x4600,0x4700,0x4800,0x4900,0x4A00,0x4B00,0x4C00,0x4D00,\r
22186   0x4E00,0x4F00,0x5020,0x5120,0x5220,0x5320,0x5420,0x5520,\r
22187   0x5600,0x5700,0x5800,0x5900,0x5A00,0x5B00,0x5C00,0x5D00,\r
22188   0x5E00,0x5F00,0x6020,0x6120,0x6220,0x6320,0x6420,0x6520,\r
22189   0x6600,0x6700,0x6800,0x6900,0x6A00,0x6B00,0x6C00,0x6D00,\r
22190   0x6E00,0x6F00,0x7020,0x7120,0x7220,0x7320,0x7420,0x7520,\r
22191   0x7600,0x7700,0x7800,0x7900,0x7A00,0x7B00,0x7C00,0x7D00,\r
22192   0x7E00,0x7F00,0x8020,0x8120,0x8220,0x8320,0x8420,0x8520,\r
22193   0x8600,0x8700,0x8800,0x8900,0x8A00,0x8B00,0x8C00,0x8D00,\r
22194   0x8E00,0x8F00,0x9020,0x9120,0x9220,0x9320,0x9420,0x9520,\r
22195   0x9600,0x9700,0x9800,0x9900,0x9A00,0x9B00,0x9C00,0x9D00,\r
22196   0x9E00,0x9F00,0x00B0,0x0130,0x0230,0x0330,0x0430,0x0530,\r
22197   0x0610,0x0710,0x0810,0x0910,0x0A10,0x0B10,0x0C10,0x0D10,\r
22198   0x0E10,0x0F10,0x1030,0x1130,0x1230,0x1330,0x1430,0x1530,\r
22199   0x1610,0x1710,0x1810,0x1910,0x1A10,0x1B10,0x1C10,0x1D10,\r
22200   0x1E10,0x1F10,0x2030,0x2130,0x2230,0x2330,0x2430,0x2530,\r
22201   0x2610,0x2710,0x2810,0x2910,0x2A10,0x2B10,0x2C10,0x2D10,\r
22202   0x2E10,0x2F10,0x3030,0x3130,0x3230,0x3330,0x3430,0x3530,\r
22203   0x3610,0x3710,0x3810,0x3910,0x3A10,0x3B10,0x3C10,0x3D10,\r
22204   0x3E10,0x3F10,0x4030,0x4130,0x4230,0x4330,0x4430,0x4530,\r
22205   0x4610,0x4710,0x4810,0x4910,0x4A10,0x4B10,0x4C10,0x4D10,\r
22206   0x4E10,0x4F10,0x5030,0x5130,0x5230,0x5330,0x5430,0x5530,\r
22207   0x5610,0x5710,0x5810,0x5910,0x5A10,0x5B10,0x5C10,0x5D10,\r
22208   0x5E10,0x5F10,0x6030,0x6130,0x6230,0x6330,0x6430,0x6530,\r
22209   0x6610,0x6710,0x6810,0x6910,0x6A10,0x6B10,0x6C10,0x6D10,\r
22210   0x6E10,0x6F10,0x7030,0x7130,0x7230,0x7330,0x7430,0x7530,\r
22211   0x7610,0x7710,0x7810,0x7910,0x7A10,0x7B10,0x7C10,0x7D10,\r
22212   0x7E10,0x7F10,0x8030,0x8130,0x8230,0x8330,0x8430,0x8530,\r
22213   0x8610,0x8710,0x8810,0x8910,0x8A10,0x8B10,0x8C10,0x8D10,\r
22214   0x8E10,0x8F10,0x9030,0x9130,0x9230,0x9330,0x9430,0x9530,\r
22215   0x9610,0x9710,0x9810,0x9910,0x9A10,0x9B10,0x9C10,0x9D10,\r
22216   0x9E10,0x9F10,0xA030,0xA130,0xA230,0xA330,0xA430,0xA530,\r
22217   0xA610,0xA710,0xA810,0xA910,0xAA10,0xAB10,0xAC10,0xAD10,\r
22218   0xAE10,0xAF10,0xB030,0xB130,0xB230,0xB330,0xB430,0xB530,\r
22219   0xB610,0xB710,0xB810,0xB910,0xBA10,0xBB10,0xBC10,0xBD10,\r
22220   0xBE10,0xBF10,0xC030,0xC130,0xC230,0xC330,0xC430,0xC530,\r
22221   0xC610,0xC710,0xC810,0xC910,0xCA10,0xCB10,0xCC10,0xCD10,\r
22222   0xCE10,0xCF10,0xD030,0xD130,0xD230,0xD330,0xD430,0xD530,\r
22223   0xD610,0xD710,0xD810,0xD910,0xDA10,0xDB10,0xDC10,0xDD10,\r
22224   0xDE10,0xDF10,0xE030,0xE130,0xE230,0xE330,0xE430,0xE530,\r
22225   0xE610,0xE710,0xE810,0xE910,0xEA10,0xEB10,0xEC10,0xED10,\r
22226   0xEE10,0xEF10,0xF030,0xF130,0xF230,0xF330,0xF430,0xF530,\r
22227   0xF610,0xF710,0xF810,0xF910,0xFA10,0xFB10,0xFC10,0xFD10,\r
22228   0xFE10,0xFF10,0x00B0,0x0130,0x0230,0x0330,0x0430,0x0530,\r
22229   0x0610,0x0710,0x0810,0x0910,0x0A10,0x0B10,0x0C10,0x0D10,\r
22230   0x0E10,0x0F10,0x1030,0x1130,0x1230,0x1330,0x1430,0x1530,\r
22231   0x1610,0x1710,0x1810,0x1910,0x1A10,0x1B10,0x1C10,0x1D10,\r
22232   0x1E10,0x1F10,0x2030,0x2130,0x2230,0x2330,0x2430,0x2530,\r
22233   0x2610,0x2710,0x2810,0x2910,0x2A10,0x2B10,0x2C10,0x2D10,\r
22234   0x2E10,0x2F10,0x3030,0x3130,0x3230,0x3330,0x3430,0x3530,\r
22235   0x3610,0x3710,0x3810,0x3910,0x3A10,0x3B10,0x3C10,0x3D10,\r
22236   0x3E10,0x3F10,0x4030,0x4130,0x4230,0x4330,0x4430,0x4530,\r
22237   0x4610,0x4710,0x4810,0x4910,0x4A10,0x4B10,0x4C10,0x4D10,\r
22238   0x4E10,0x4F10,0x5030,0x5130,0x5230,0x5330,0x5430,0x5530,\r
22239   0x5610,0x5710,0x5810,0x5910,0x5A10,0x5B10,0x5C10,0x5D10,\r
22240   0x5E10,0x5F10,0x6030,0x6130,0x6230,0x6330,0x6430,0x6530,\r
22241   0x00C0,0x0140,0x0240,0x0340,0x0440,0x0540,0x0640,0x0740,\r
22242   0x0840,0x0940,0x0440,0x0540,0x0640,0x0740,0x0840,0x0940,\r
22243   0x1040,0x1140,0x1240,0x1340,0x1440,0x1540,0x1640,0x1740,\r
22244   0x1840,0x1940,0x1440,0x1540,0x1640,0x1740,0x1840,0x1940,\r
22245   0x2040,0x2140,0x2240,0x2340,0x2440,0x2540,0x2640,0x2740,\r
22246   0x2840,0x2940,0x2440,0x2540,0x2640,0x2740,0x2840,0x2940,\r
22247   0x3040,0x3140,0x3240,0x3340,0x3440,0x3540,0x3640,0x3740,\r
22248   0x3840,0x3940,0x3440,0x3540,0x3640,0x3740,0x3840,0x3940,\r
22249   0x4040,0x4140,0x4240,0x4340,0x4440,0x4540,0x4640,0x4740,\r
22250   0x4840,0x4940,0x4440,0x4540,0x4640,0x4740,0x4840,0x4940,\r
22251   0x5040,0x5140,0x5240,0x5340,0x5440,0x5540,0x5640,0x5740,\r
22252   0x5840,0x5940,0x5440,0x5540,0x5640,0x5740,0x5840,0x5940,\r
22253   0x6040,0x6140,0x6240,0x6340,0x6440,0x6540,0x6640,0x6740,\r
22254   0x6840,0x6940,0x6440,0x6540,0x6640,0x6740,0x6840,0x6940,\r
22255   0x7040,0x7140,0x7240,0x7340,0x7440,0x7540,0x7640,0x7740,\r
22256   0x7840,0x7940,0x7440,0x7540,0x7640,0x7740,0x7840,0x7940,\r
22257   0x8040,0x8140,0x8240,0x8340,0x8440,0x8540,0x8640,0x8740,\r
22258   0x8840,0x8940,0x8440,0x8540,0x8640,0x8740,0x8840,0x8940,\r
22259   0x9040,0x9140,0x9240,0x9340,0x9440,0x9540,0x9640,0x9740,\r
22260   0x9840,0x9940,0x3450,0x3550,0x3650,0x3750,0x3850,0x3950,\r
22261   0x4050,0x4150,0x4250,0x4350,0x4450,0x4550,0x4650,0x4750,\r
22262   0x4850,0x4950,0x4450,0x4550,0x4650,0x4750,0x4850,0x4950,\r
22263   0x5050,0x5150,0x5250,0x5350,0x5450,0x5550,0x5650,0x5750,\r
22264   0x5850,0x5950,0x5450,0x5550,0x5650,0x5750,0x5850,0x5950,\r
22265   0x6050,0x6150,0x6250,0x6350,0x6450,0x6550,0x6650,0x6750,\r
22266   0x6850,0x6950,0x6450,0x6550,0x6650,0x6750,0x6850,0x6950,\r
22267   0x7050,0x7150,0x7250,0x7350,0x7450,0x7550,0x7650,0x7750,\r
22268   0x7850,0x7950,0x7450,0x7550,0x7650,0x7750,0x7850,0x7950,\r
22269   0x8050,0x8150,0x8250,0x8350,0x8450,0x8550,0x8650,0x8750,\r
22270   0x8850,0x8950,0x8450,0x8550,0x8650,0x8750,0x8850,0x8950,\r
22271   0x9050,0x9150,0x9250,0x9350,0x9450,0x9550,0x9650,0x9750,\r
22272   0x9850,0x9950,0x9450,0x9550,0x9650,0x9750,0x9850,0x9950,\r
22273   0xA050,0xA150,0xA250,0xA350,0xA450,0xA550,0xA650,0xA750,\r
22274   0xA850,0xA950,0xA450,0xA550,0xA650,0xA750,0xA850,0xA950,\r
22275   0xB050,0xB150,0xB250,0xB350,0xB450,0xB550,0xB650,0xB750,\r
22276   0xB850,0xB950,0xB450,0xB550,0xB650,0xB750,0xB850,0xB950,\r
22277   0xC050,0xC150,0xC250,0xC350,0xC450,0xC550,0xC650,0xC750,\r
22278   0xC850,0xC950,0xC450,0xC550,0xC650,0xC750,0xC850,0xC950,\r
22279   0xD050,0xD150,0xD250,0xD350,0xD450,0xD550,0xD650,0xD750,\r
22280   0xD850,0xD950,0xD450,0xD550,0xD650,0xD750,0xD850,0xD950,\r
22281   0xE050,0xE150,0xE250,0xE350,0xE450,0xE550,0xE650,0xE750,\r
22282   0xE850,0xE950,0xE450,0xE550,0xE650,0xE750,0xE850,0xE950,\r
22283   0xF050,0xF150,0xF250,0xF350,0xF450,0xF550,0xF650,0xF750,\r
22284   0xF850,0xF950,0xF450,0xF550,0xF650,0xF750,0xF850,0xF950,\r
22285   0x00D0,0x0150,0x0250,0x0350,0x0450,0x0550,0x0650,0x0750,\r
22286   0x0850,0x0950,0x0450,0x0550,0x0650,0x0750,0x0850,0x0950,\r
22287   0x1050,0x1150,0x1250,0x1350,0x1450,0x1550,0x1650,0x1750,\r
22288   0x1850,0x1950,0x1450,0x1550,0x1650,0x1750,0x1850,0x1950,\r
22289   0x2050,0x2150,0x2250,0x2350,0x2450,0x2550,0x2650,0x2750,\r
22290   0x2850,0x2950,0x2450,0x2550,0x2650,0x2750,0x2850,0x2950,\r
22291   0x3050,0x3150,0x3250,0x3350,0x3450,0x3550,0x3650,0x3750,\r
22292   0x3850,0x3950,0x3450,0x3550,0x3650,0x3750,0x3850,0x3950,\r
22293   0x4050,0x4150,0x4250,0x4350,0x4450,0x4550,0x4650,0x4750,\r
22294   0x4850,0x4950,0x4450,0x4550,0x4650,0x4750,0x4850,0x4950,\r
22295   0x5050,0x5150,0x5250,0x5350,0x5450,0x5550,0x5650,0x5750,\r
22296   0x5850,0x5950,0x5450,0x5550,0x5650,0x5750,0x5850,0x5950,\r
22297   0x6050,0x6150,0x6250,0x6350,0x6450,0x6550,0x6650,0x6750,\r
22298   0x6850,0x6950,0x6450,0x6550,0x6650,0x6750,0x6850,0x6950,\r
22299   0x7050,0x7150,0x7250,0x7350,0x7450,0x7550,0x7650,0x7750,\r
22300   0x7850,0x7950,0x7450,0x7550,0x7650,0x7750,0x7850,0x7950,\r
22301   0x8050,0x8150,0x8250,0x8350,0x8450,0x8550,0x8650,0x8750,\r
22302   0x8850,0x8950,0x8450,0x8550,0x8650,0x8750,0x8850,0x8950,\r
22303   0x9050,0x9150,0x9250,0x9350,0x9450,0x9550,0x9650,0x9750,\r
22304   0x9850,0x9950,0x9450,0x9550,0x9650,0x9750,0x9850,0x9950,\r
22305   0xFA60,0xFB60,0xFC60,0xFD60,0xFE60,0xFF60,0x00C0,0x0140,\r
22306   0x0240,0x0340,0x0440,0x0540,0x0640,0x0740,0x0840,0x0940,\r
22307   0x0A60,0x0B60,0x0C60,0x0D60,0x0E60,0x0F60,0x1040,0x1140,\r
22308   0x1240,0x1340,0x1440,0x1540,0x1640,0x1740,0x1840,0x1940,\r
22309   0x1A60,0x1B60,0x1C60,0x1D60,0x1E60,0x1F60,0x2040,0x2140,\r
22310   0x2240,0x2340,0x2440,0x2540,0x2640,0x2740,0x2840,0x2940,\r
22311   0x2A60,0x2B60,0x2C60,0x2D60,0x2E60,0x2F60,0x3040,0x3140,\r
22312   0x3240,0x3340,0x3440,0x3540,0x3640,0x3740,0x3840,0x3940,\r
22313   0x3A60,0x3B60,0x3C60,0x3D60,0x3E60,0x3F60,0x4040,0x4140,\r
22314   0x4240,0x4340,0x4440,0x4540,0x4640,0x4740,0x4840,0x4940,\r
22315   0x4A60,0x4B60,0x4C60,0x4D60,0x4E60,0x4F60,0x5040,0x5140,\r
22316   0x5240,0x5340,0x5440,0x5540,0x5640,0x5740,0x5840,0x5940,\r
22317   0x5A60,0x5B60,0x5C60,0x5D60,0x5E60,0x5F60,0x6040,0x6140,\r
22318   0x6240,0x6340,0x6440,0x6540,0x6640,0x6740,0x6840,0x6940,\r
22319   0x6A60,0x6B60,0x6C60,0x6D60,0x6E60,0x6F60,0x7040,0x7140,\r
22320   0x7240,0x7340,0x7440,0x7540,0x7640,0x7740,0x7840,0x7940,\r
22321   0x7A60,0x7B60,0x7C60,0x7D60,0x7E60,0x7F60,0x8040,0x8140,\r
22322   0x8240,0x8340,0x8440,0x8540,0x8640,0x8740,0x8840,0x8940,\r
22323   0x8A60,0x8B60,0x8C60,0x8D60,0x8E60,0x8F60,0x9040,0x9140,\r
22324   0x9240,0x9340,0x3450,0x3550,0x3650,0x3750,0x3850,0x3950,\r
22325   0x3A70,0x3B70,0x3C70,0x3D70,0x3E70,0x3F70,0x4050,0x4150,\r
22326   0x4250,0x4350,0x4450,0x4550,0x4650,0x4750,0x4850,0x4950,\r
22327   0x4A70,0x4B70,0x4C70,0x4D70,0x4E70,0x4F70,0x5050,0x5150,\r
22328   0x5250,0x5350,0x5450,0x5550,0x5650,0x5750,0x5850,0x5950,\r
22329   0x5A70,0x5B70,0x5C70,0x5D70,0x5E70,0x5F70,0x6050,0x6150,\r
22330   0x6250,0x6350,0x6450,0x6550,0x6650,0x6750,0x6850,0x6950,\r
22331   0x6A70,0x6B70,0x6C70,0x6D70,0x6E70,0x6F70,0x7050,0x7150,\r
22332   0x7250,0x7350,0x7450,0x7550,0x7650,0x7750,0x7850,0x7950,\r
22333   0x7A70,0x7B70,0x7C70,0x7D70,0x7E70,0x7F70,0x8050,0x8150,\r
22334   0x8250,0x8350,0x8450,0x8550,0x8650,0x8750,0x8850,0x8950,\r
22335   0x8A70,0x8B70,0x8C70,0x8D70,0x8E70,0x8F70,0x9050,0x9150,\r
22336   0x9250,0x9350,0x9450,0x9550,0x9650,0x9750,0x9850,0x9950,\r
22337   0x9A70,0x9B70,0x9C70,0x9D70,0x9E70,0x9F70,0xA050,0xA150,\r
22338   0xA250,0xA350,0xA450,0xA550,0xA650,0xA750,0xA850,0xA950,\r
22339   0xAA70,0xAB70,0xAC70,0xAD70,0xAE70,0xAF70,0xB050,0xB150,\r
22340   0xB250,0xB350,0xB450,0xB550,0xB650,0xB750,0xB850,0xB950,\r
22341   0xBA70,0xBB70,0xBC70,0xBD70,0xBE70,0xBF70,0xC050,0xC150,\r
22342   0xC250,0xC350,0xC450,0xC550,0xC650,0xC750,0xC850,0xC950,\r
22343   0xCA70,0xCB70,0xCC70,0xCD70,0xCE70,0xCF70,0xD050,0xD150,\r
22344   0xD250,0xD350,0xD450,0xD550,0xD650,0xD750,0xD850,0xD950,\r
22345   0xDA70,0xDB70,0xDC70,0xDD70,0xDE70,0xDF70,0xE050,0xE150,\r
22346   0xE250,0xE350,0xE450,0xE550,0xE650,0xE750,0xE850,0xE950,\r
22347   0xEA70,0xEB70,0xEC70,0xED70,0xEE70,0xEF70,0xF050,0xF150,\r
22348   0xF250,0xF350,0xF450,0xF550,0xF650,0xF750,0xF850,0xF950,\r
22349   0xFA70,0xFB70,0xFC70,0xFD70,0xFE70,0xFF70,0x00D0,0x0150,\r
22350   0x0250,0x0350,0x0450,0x0550,0x0650,0x0750,0x0850,0x0950,\r
22351   0x0A70,0x0B70,0x0C70,0x0D70,0x0E70,0x0F70,0x1050,0x1150,\r
22352   0x1250,0x1350,0x1450,0x1550,0x1650,0x1750,0x1850,0x1950,\r
22353   0x1A70,0x1B70,0x1C70,0x1D70,0x1E70,0x1F70,0x2050,0x2150,\r
22354   0x2250,0x2350,0x2450,0x2550,0x2650,0x2750,0x2850,0x2950,\r
22355   0x2A70,0x2B70,0x2C70,0x2D70,0x2E70,0x2F70,0x3050,0x3150,\r
22356   0x3250,0x3350,0x3450,0x3550,0x3650,0x3750,0x3850,0x3950,\r
22357   0x3A70,0x3B70,0x3C70,0x3D70,0x3E70,0x3F70,0x4050,0x4150,\r
22358   0x4250,0x4350,0x4450,0x4550,0x4650,0x4750,0x4850,0x4950,\r
22359   0x4A70,0x4B70,0x4C70,0x4D70,0x4E70,0x4F70,0x5050,0x5150,\r
22360   0x5250,0x5350,0x5450,0x5550,0x5650,0x5750,0x5850,0x5950,\r
22361   0x5A70,0x5B70,0x5C70,0x5D70,0x5E70,0x5F70,0x6050,0x6150,\r
22362   0x6250,0x6350,0x6450,0x6550,0x6650,0x6750,0x6850,0x6950,\r
22363   0x6A70,0x6B70,0x6C70,0x6D70,0x6E70,0x6F70,0x7050,0x7150,\r
22364   0x7250,0x7350,0x7450,0x7550,0x7650,0x7750,0x7850,0x7950,\r
22365   0x7A70,0x7B70,0x7C70,0x7D70,0x7E70,0x7F70,0x8050,0x8150,\r
22366   0x8250,0x8350,0x8450,0x8550,0x8650,0x8750,0x8850,0x8950,\r
22367   0x8A70,0x8B70,0x8C70,0x8D70,0x8E70,0x8F70,0x9050,0x9150,\r
22368   0x9250,0x9350,0x9450,0x9550,0x9650,0x9750,0x9850,0x9950];\r
22369 \r
22370 \r
22371 \r
22372 \r
22373 /* \r
22374  * jsgb.debugger.js v0.02 - Memory module for JSGB, a GameBoy Emulator\r
22375  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
22376  *\r
22377  * This program is free software; you can redistribute it and/or\r
22378  * modify it under the terms of the GNU General Public License\r
22379  * version 2 as published by the Free Software Foundation.\r
22380  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
22381  *\r
22382  * This program is distributed in the hope that it will be useful,\r
22383  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
22384  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
22385  * GNU General Public License for more details.\r
22386  *\r
22387  */\r
22388  \r
22389 var gbMemory = new Array(0x10000);\r
22390 \r
22391 // special register mirror values and bit states\r
22392 var gbRegLY = 0;\r
22393 var gbRegLYC = 0;\r
22394 var gbRegSCY = 0;\r
22395 var gbRegSCX = 0;\r
22396 var gbRegWY = 0;\r
22397 var gbRegWX = 0;\r
22398 var gbRegDIV = 0;\r
22399 var gbRegIF = 0;\r
22400 var gbRegIE = 0;\r
22401 var gbRegSTAT_Mode = 0;\r
22402 var gbRegSTAT_IntLYLYC = false;\r
22403 var gbRegSTAT_IntMode2 = false;\r
22404 var gbRegSTAT_IntMode1 = false;\r
22405 var gbRegSTAT_IntMode0 = false;\r
22406 \r
22407 var gbRegLCDC_DisplayOn = false;\r
22408 var gbRegLCDC_WindowYOffs = 0;\r
22409 var gbRegLCDC_WindowDisplay = false;\r
22410 var gbRegLCDC_SpriteDisplay = false;\r
22411 var gbRegLCDC_SpriteSize = false;\r
22412 var gbRegLCDC_BackgroundYOffs = 0;\r
22413 var gbRegLCDC_BackgroundXOffs = 0;\r
22414 var gbRegLCDC_BgAndWinDisplay = false;\r
22415 var gbRegTAC_TimerOn = false;\r
22416 \r
22417 // special register addresses\r
22418 var _P1_   = 0xFF00;\r
22419 var _SC_   = 0xFF02;\r
22420 var _DIV_  = 0xFF04;\r
22421 var _TIMA_ = 0xFF05;\r
22422 var _TMA_  = 0xFF06;\r
22423 var _TAC_  = 0xFF07;\r
22424 var _IF_   = 0xFF0F;\r
22425 var _LCDC_ = 0xFF40;\r
22426 var _STAT_ = 0xFF41;\r
22427 var _SCY_  = 0xFF42;\r
22428 var _SCX_  = 0xFF43;\r
22429 var _LY_   = 0xFF44;\r
22430 var _LYC_  = 0xFF45;\r
22431 var _DMA_  = 0xFF46;\r
22432 var _BGP_  = 0xFF47;\r
22433 var _OBP0_ = 0xFF48;\r
22434 var _OBP1_ = 0xFF49;\r
22435 var _WY_   = 0xFF4A;\r
22436 var _WX_   = 0xFF4B;\r
22437 var _IE_   = 0xFFFF;\r
22438 \r
22439 // start addresses\r
22440 var _ROM0_ = 0x0000;\r
22441 var _ROM1_ = 0x4000; \r
22442 var _VRAM_ = 0x8000; // video RAM\r
22443 var _BTD0_ = 0x8000; // backgroun tile data 0\r
22444 var _BTD1_ = 0x8800; // backgroun tile data 1\r
22445 var _BTM0_ = 0x9800; // background tile map 0\r
22446 var _BTM1_ = 0x9C00; // background tile map 1\r
22447 var _RAM1_ = 0xA000; // switchable RAM\r
22448 var _RAM0_ = 0xC000; // internal RAM\r
22449 var _ECHO_ = 0xE000; // echo of internal RAM\r
22450 var _OAM_  = 0xFE00; // object attribute\r
22451 \r
22452 function gb_Memory_Read_ROM_Only(a) {\r
22453   return gbMemory[a];\r
22454 }\r
22455 \r
22456 function gb_Memory_Read_MBC1_ROM(a) {\r
22457   switch (a>>12) {\r
22458     case 0:\r
22459     case 1:\r
22460     case 2:\r
22461     case 3: return gbMemory[a];\r
22462     case 4: \r
22463     case 5: \r
22464     case 6: \r
22465     case 7: return gbROM[gbROMBank1offs+a];\r
22466     default: return gbMemory[a];\r
22467   }  \r
22468 }\r
22469 \r
22470 var MEMR = gb_Memory_Read_ROM_Only;\r
22471 \r
22472 function MEMW(a,v) {\r
22473   // Special registers+HRAM\r
22474   if (a>=0xFF00) {\r
22475     switch(a&0xFF) {\r
22476     case 0x00: // FF00 P1 Joypad\r
22477       //if(v==3)gbMemory[a]=0xF0; else // Fx->GB/GBP; 3x->SGB\r
22478       gb_Read_Joypad(v);\r
22479       return;    \r
22480     case 0x02: // FF02 SC\r
22481       gbMemory[0xFF02]=0;\r
22482       return;\r
22483     case 0x04: // FF04 DIV  \r
22484       gbMemory[0xFF04]=0; // Writing any value sets it to 0.\r
22485       return;\r
22486     case 0x07: // FF07 TAC - TIMER CONTROL  \r
22487       gbMemory[0xFF07]=v;\r
22488       gbRegTAC_TimerOn=((v&4)!=0);\r
22489       gb_Set_Timer_Freq(v&3);\r
22490       return;    \r
22491     case 0x0F: // FF0F IF - Interrupt Flags\r
22492       gbMemory[0xFF0F]=gbRegIF=(v&31);\r
22493       return;    \r
22494     case 0x40: // FF40 LCDC      \r
22495       var i=((v>>7)!=0);\r
22496       if (i!=gbRegLCDC_DisplayOn) {\r
22497         // TODO not sure on this\r
22498         gbMemory[_LY_]=gbRegLY=gbLCDTicks=0;\r
22499         //if (!i) gb_Clear_Framebuffer();\r
22500       }  \r
22501       gbRegLCDC_DisplayOn=i;\r
22502       gbRegLCDC_WindowYOffs=(v&64)?256:0;\r
22503       gbRegLCDC_WindowDisplay=(v&32)?true:false;\r
22504       gbRegLCDC_BackgroundXOffs=(v&16)?0:256;\r
22505       gbRegLCDC_BackgroundYOffs=(v&8)?256:0;\r
22506       gbRegLCDC_SpriteSize=(v&4)?16:8;\r
22507       gbRegLCDC_SpriteDisplay=(v&2)?true:false;\r
22508       gbRegLCDC_BgAndWinDisplay=(v&1)?true:false;\r
22509       gbMemory[0xFF40]=v;      \r
22510       return;\r
22511     case 0x41: // FF41 STAT\r
22512       gbRegSTAT_Mode=v&3;\r
22513       gbRegSTAT_IntLYLYC=(v&64)?true:false;\r
22514       gbRegSTAT_IntMode2=(v&32)?true:false;\r
22515       gbRegSTAT_IntMode1=(v&16)?true:false;\r
22516       gbRegSTAT_IntMode0=(v&8)?true:false;\r
22517       gbMemory[0xFF41]=v;\r
22518       return;    \r
22519     case 0x42: // FF42 SCY\r
22520       gbMemory[0xFF42]=gbRegSCY=v;\r
22521       return;    \r
22522     case 0x43: // FF43 SCX\r
22523       gbMemory[0xFF43]=gbRegSCX=v;\r
22524       return;    \r
22525     case 0x44: // FF44 LY\r
22526       gbMemory[0xFF44]=gbRegLY=0; // Writing any value sets it to 0.\r
22527       return;\r
22528     case 0x45: // FF45 LYC\r
22529       gbMemory[0xFF45]=gbRegLYC=v;\r
22530       return;\r
22531     case 0x46: // FF46 DMA TRANSFER  \r
22532       v=v<<8; // start address of DMA\r
22533       a=0xFE00; // OAM addr\r
22534       while (a<0xFEA0) gbMemory[a++] = MEMR(v++);\r
22535       return;\r
22536     case 0x47: // FF47 BGP - Background Palette\r
22537       gbMemory[0xFF47]=v;\r
22538       gbBackPal[0]=v&3;\r
22539       gbBackPal[1]=(v>>2)&3;\r
22540       gbBackPal[2]=(v>>4)&3;\r
22541       gbBackPal[3]=(v>>6)&3;\r
22542       return;\r
22543     case 0x48: // FF48 OBP0 - Sprite Palette 0\r
22544       gbMemory[0xFF48]=v;\r
22545       gbSpritePal[0][0]=v&3;\r
22546       gbSpritePal[0][1]=(v>>2)&3;\r
22547       gbSpritePal[0][2]=(v>>4)&3;\r
22548       gbSpritePal[0][3]=(v>>6)&3;\r
22549       return;\r
22550     case 0x49: // FF49 OBP1 - Sprite Palette 1\r
22551       gbMemory[0xFF49]=v;\r
22552       gbSpritePal[1][0]=v&3;\r
22553       gbSpritePal[1][1]=(v>>2)&3;\r
22554       gbSpritePal[1][2]=(v>>4)&3;\r
22555       gbSpritePal[1][3]=(v>>6)&3;\r
22556       return;            \r
22557     case 0x4A: // FF4A WY\r
22558       gbMemory[0xFF4A]=gbRegWY=v;\r
22559       return;\r
22560     case 0x4B: // FF4B WX\r
22561       gbMemory[0xFF4B]=gbRegWX=v;\r
22562       return;\r
22563     case 0xFF: // FFFF IE - Interrupt Enable\r
22564       gbMemory[0xFFFF]=gbRegIE=(v&31);\r
22565       return;    \r
22566     default: // THE OTHERS\r
22567       gbMemory[a]=v;\r
22568       return;\r
22569     }  \r
22570   }\r
22571   // writing to ROM?\r
22572   else if (a<0x8000) {\r
22573 \r
22574     switch (gbCartridgeType) {\r
22575 \r
22576     case _ROM_ONLY_:\r
22577       return;\r
22578        \r
22579     case _ROM_MBC1_:\r
22580       switch (a>>12) {\r
22581       // write to 2000-3FFF: select ROM bank\r
22582       case 2:\r
22583       case 3: \r
22584         //$('STATUS').innerHTML='Select ROM Bank: '+(v&31);\r
22585         gbROMBankSwitch(v&31);\r
22586         return;\r
22587       // write to 6000-7FFF: select MBC1 mode\r
22588       case 6:\r
22589       case 7: \r
22590         gbMBC1Mode = v&1;\r
22591         return;\r
22592       // unhandled cases\r
22593       default:\r
22594         //$('STATUS').innerHTML='Unhandled MBC1 ROM write:\naddr: '+hex4(a)+' - val: '+hex2(v);\r
22595         return;\r
22596       }\r
22597     default:\r
22598       alert('Unknown Memory Bank Controller.\naddr: '+hex4(a)+' - val: '+hex2(v));\r
22599       gb_Pause();\r
22600       return;   \r
22601     }\r
22602   }\r
22603   // make changes if the new value is different\r
22604   else if (gbMemory[a]!=v) {\r
22605     // 8000-97FF: Tile data\r
22606     if (a<0x9800) {\r
22607       gbUpdateTiles=true;\r
22608       gbUpdateTilesList[(a-0x8000)>>4]=true;\r
22609       gbMemory[a]=v;\r
22610     }\r
22611     // 9800-9FFF: Tile maps\r
22612     else if (a<0xA000) {\r
22613       gbUpdateBackground=true;\r
22614       gbUpdateBackgroundTileList[a-0x9800]=true;\r
22615       gbMemory[a]=v;\r
22616     }\r
22617     // A000-BFFF: Switchable RAM\r
22618     else if (a<0xC000) {\r
22619       gbMemory[a]=v;\r
22620     }\r
22621     // C000-DFFF: Internal RAM\r
22622     else if (a<0xE000) {\r
22623       gbMemory[a]=v;\r
22624       // C000-DDFF: Writes to ECHO\r
22625       if (a<0xDE00) gbMemory[a+0x2000]=v;\r
22626     }\r
22627     // E000-FDFF: ECHO\r
22628     else if (a<0xFE00) {\r
22629       gbMemory[a]=v;\r
22630       gbMemory[a-0x2000]=v;\r
22631     }\r
22632     else gbMemory[a]=v;\r
22633   }  \r
22634 }\r
22635 \r
22636 function where_mem(a) { // TODO rewrite this\r
22637   if (a<0x4000) return 'ROM0'; else\r
22638   if (a<0x8000) return 'ROM1'; else\r
22639   if (a<0xA000) return 'VRAM'; else\r
22640   if (a<0xC000) return 'RAM1'; else\r
22641   if (a<0xE000) return 'RAM0'; else\r
22642   if (a<0xFE00) return 'ECHO'; else\r
22643   if (a<0xFEA0) return 'OAM&nbsp;'; else\r
22644   if (a<0xFF00) return 'I/O&nbsp;'; else\r
22645   if (a<0xFF4C) return 'I/O&nbsp;'; else\r
22646   if (a<0xFF80) return 'I/O&nbsp;'; else\r
22647   if (a<0xFFFF) return 'HRAM'; else\r
22648   if (a=0xFFFF) return 'IE&nbsp;&nbsp;'; else\r
22649   return '&nbsp;&nbsp;&nbsp;&nbsp;';\r
22650 }\r
22651 \r
22652 function gb_Init_Memory() {\r
22653   var i=0x100000;\r
22654   while (i) {\r
22655     gbMemory[--i] = 0;\r
22656     gbMemory[--i] = 0;\r
22657     gbMemory[--i] = 0;\r
22658     gbMemory[--i] = 0;\r
22659   }\r
22660   MEMW(0xFF00,0xFF); // P1\r
22661   MEMW(0xFF04,0xAF); // DIV\r
22662   MEMW(0xFF05,0x00); // TIMA\r
22663   MEMW(0xFF06,0x00); // TMA\r
22664   MEMW(0xFF07,0xF8); // TAC\r
22665   MEMW(0xFF0F,0x00); // IF \r
22666   MEMW(0xFF10,0x80); // NR10\r
22667   MEMW(0xFF11,0xBF); // NR11\r
22668   MEMW(0xFF12,0xF3); // NR12\r
22669   MEMW(0xFF14,0xBF); // NR14\r
22670   MEMW(0xFF16,0x3F); // NR21\r
22671   MEMW(0xFF17,0x00); // NR22\r
22672   MEMW(0xFF19,0xBF); // NR24\r
22673   MEMW(0xFF1A,0x7F); // NR30\r
22674   MEMW(0xFF1B,0xFF); // NR31\r
22675   MEMW(0xFF1C,0x9F); // NR32\r
22676   MEMW(0xFF1E,0xBF); // NR33\r
22677   MEMW(0xFF20,0xFF); // NR41\r
22678   MEMW(0xFF21,0x00); // NR42\r
22679   MEMW(0xFF22,0x00); // NR43\r
22680   MEMW(0xFF23,0xBF); // NR30\r
22681   MEMW(0xFF24,0x77); // NR50\r
22682   MEMW(0xFF25,0xF3); // NR51\r
22683   MEMW(0xFF26,0xF1); // NR52 0xF1->GB; 0xF0->SGB\r
22684   MEMW(0xFF40,0x91); // LCDC\r
22685   MEMW(0xFF42,0x00); // SCY\r
22686   MEMW(0xFF43,0x00); // SCX\r
22687   MEMW(0xFF44,0x00); // LY\r
22688   MEMW(0xFF45,0x00); // LYC\r
22689   MEMW(0xFF47,0xFC); // BGP\r
22690   MEMW(0xFF48,0xFF); // OBP0\r
22691   MEMW(0xFF49,0xFF); // OBP1\r
22692   MEMW(0xFF4A,0x00); // WY\r
22693   MEMW(0xFF4B,0x00); // WX\r
22694   MEMW(0xFFFF,0x00); // IE\r
22695 }  \r
22696 \r
22697 \r
22698 \r
22699 \r
22700 /* \r
22701  * jsgb.rom.js v0.01 - ROM loader for JSGB, a GameBoy Emulator\r
22702  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
22703  *\r
22704  * This program is free software; you can redistribute it and/or\r
22705  * modify it under the terms of the GNU General Public License\r
22706  * version 2 as published by the Free Software Foundation.\r
22707  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
22708  *\r
22709  * This program is distributed in the hope that it will be useful,\r
22710  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
22711  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
22712  * GNU General Public License for more details.\r
22713  *\r
22714  */\r
22715  \r
22716 var gbROM = [];\r
22717 var gbCartridgeType = 0;\r
22718 var gbBankSwitchCount = 0;\r
22719 \r
22720 var _ROM_ONLY_ = 0x00;\r
22721 var _ROM_MBC1_ = 0x01;\r
22722 \r
22723 var gbMBC1Mode = 0;\r
22724 \r
22725 var gbROMBank1offs = 0;\r
22726 \r
22727 var gbCartridgeType = 0;\r
22728 var gbCartridgeTypes = [];\r
22729 gbCartridgeTypes[0] = 'ROM only';\r
22730 gbCartridgeTypes[1] = 'ROM+MBC1';\r
22731 \r
22732 var gbROMBanks = []; // 1 Bank = 16 KBytes = 256 Kbits\r
22733 gbROMBanks[0x00] = 2;\r
22734 gbROMBanks[0x01] = 4;\r
22735 gbROMBanks[0x02] = 8;\r
22736 gbROMBanks[0x03] = 16;\r
22737 gbROMBanks[0x04] = 32;\r
22738 gbROMBanks[0x05] = 64;\r
22739 gbROMBanks[0x06] = 128;\r
22740 gbROMBanks[0x52] = 72;\r
22741 gbROMBanks[0x53] = 80;\r
22742 gbROMBanks[0x54] = 96;\r
22743 \r
22744 var gbRAMBanks = [];\r
22745 gbRAMBanks[0] = 0;\r
22746 gbRAMBanks[1] = 1;\r
22747 gbRAMBanks[2] = 2; // ? docs say 1\r
22748 gbRAMBanks[3] = 4;\r
22749 gbRAMBanks[4] = 16;\r
22750 \r
22751 var gbROMInfo = {};\r
22752 \r
22753 function gb_ROM_Load(fileName) {\r
22754   gbBankSwitchCount = 0;    \r
22755   gbROM = [];\r
22756   var i = 0;\r
22757   var req = new XMLHttpRequest();\r
22758   req.open('GET', fileName, false);\r
22759   req.overrideMimeType('text/plain; charset=x-user-defined');\r
22760   req.send(null);\r
22761   if ((req.readyState==4)/*&&(req.status==200)*/) {\r
22762     var s=req.responseText;\r
22763     i=s.length;\r
22764     while (i--) gbROM[i]=s.charCodeAt(i)&0xff;\r
22765     i=0x8000;\r
22766     while (i--) gbMemory[i]=gbROM[i]; // copy 2 banks into memory\r
22767   }\r
22768   else {\r
22769     alert('Error loading ROM: '+fileName);\r
22770   }\r
22771   // ROM and RAM banks\r
22772   gbROMInfo.ROMBanks = gbROMBanks[gbROM[0x148]];\r
22773   gbROMInfo.RAMBanks = gbRAMBanks[gbROM[0x149]];\r
22774   // ROM name\r
22775   var s = gbROM.slice(0x0134,0x0143);\r
22776   gbROMInfo.Name = '';\r
22777   for (var i=0; i<16; i++) {\r
22778     if (s[i]==0) break;\r
22779     gbROMInfo.Name+=String.fromCharCode(s[i]);\r
22780   }\r
22781   // Cartridge type\r
22782   gbROMInfo.CartridgeType = gbCartridgeType = gbROM[0x147];\r
22783   // Set MEMR function\r
22784   switch (gbROMInfo.CartridgeType) {\r
22785   case _ROM_ONLY_:\r
22786     MEMR = gb_Memory_Read_ROM_Only;\r
22787     break;\r
22788   case _ROM_MBC1_:\r
22789     MEMR = gb_Memory_Read_MBC1_ROM; \r
22790     gbMBC1Mode = 0;\r
22791     break;\r
22792   }\r
22793 \r
22794 }\r
22795 \r
22796 function gbROMBankSwitch(bank) {\r
22797   gbBankSwitchCount++;  \r
22798   gbROMBank1offs = (bank==0)?0:(--bank*0x4000); // new ROM Bank 1 address\r
22799   /*\r
22800   var i = (0x4000>>5)+1; // loops count\r
22801   var j = 0x4000-1; // write address\r
22802   var k = (bank==0)?((0x4000)-1):((bank*0x4000)-1); // read address\r
22803   while (--i) { \r
22804     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22805     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22806     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22807     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22808     //8\r
22809     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22810     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22811     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22812     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22813     //16\r
22814     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22815     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22816     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22817     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22818     //24\r
22819     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22820     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22821     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22822     gbMemory[++j]=gbROM[++k]; gbMemory[++j]=gbROM[++k];\r
22823     //32\r
22824   }\r
22825   */\r
22826 }\r
22827 \r
22828 \r
22829 /*\r
22830    MBC1 (Memory Bank Controller 1)\r
22831 \r
22832      MBC1 has two different maximum memory modes:\r
22833      16Mbit ROM/8KByte RAM\r
22834      4Mbit ROM/32KByte RAM.\r
22835 \r
22836      The MBC1 defaults to 16Mbit ROM/8KByte RAM mode\r
22837      on power up.\r
22838      \r
22839      Writing a value (XXXXXXXS - X = Don't\r
22840      care, S = Memory model select) into 6000-7FFF area\r
22841      will select the memory model to use. \r
22842      \r
22843      S = 0 selects 16/8 mode. -> default\r
22844      S = 1 selects 4/32 mode.\r
22845 \r
22846      Writing a value (XXXBBBBB - X = Don't cares, B =\r
22847      bank select bits) into 2000-3FFF area will select\r
22848      an appropriate ROM bank at 4000-7FFF. Values of 0\r
22849      and 1 do the same thing and point to ROM bank 1.\r
22850 \r
22851      Rom bank 0 is not accessible from 4000-7FFF and can\r
22852      only be read from 0000-3FFF.\r
22853 \r
22854       If memory model is set to 4/32: [1]\r
22855        Writing a value (XXXXXXBB - X = Don't care, B =\r
22856        bank select bits) into 4000-5FFF area will select\r
22857        an appropriate RAM bank at A000-C000. Before you\r
22858        can read or write to a RAM bank you have to enable\r
22859        it by writing a XXXX1010 into 0000-1FFF area*.\r
22860        \r
22861        To disable RAM bank operations write any value but\r
22862        XXXX1010 into 0000-1FFF area.\r
22863        Disabling a RAM bank probably protects that bank from false writes\r
22864        during power down of the GameBoy. (NOTE: Nintendo\r
22865        suggests values $0A to enable and $00 to disable\r
22866        RAM bank!!)\r
22867        \r
22868       If memory model is set to 16/8 mode: [0]\r
22869        Writing a value (XXXXXXBB - X = Don't care, B =\r
22870        bank select bits) into 4000-5FFF area will set the\r
22871        two most significant ROM address lines.\r
22872        \r
22873       * NOTE: The Super Smart Card doesn't require this\r
22874       operation because it's RAM bank is ALWAYS enabled.\r
22875       Include this operation anyway to allow your code\r
22876       to work with both.\r
22877 */\r
22878 \r
22879 \r
22880 \r
22881 /* \r
22882  * jsgb.interrupts.js v0.02 - Interrupt handling for JSGB, a GameBoy Emulator\r
22883  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
22884  *\r
22885  * This program is free software; you can redistribute it and/or\r
22886  * modify it under the terms of the GNU General Public License\r
22887  * version 2 as published by the Free Software Foundation.\r
22888  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
22889  *\r
22890  * This program is distributed in the hope that it will be useful,\r
22891  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
22892  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
22893  * GNU General Public License for more details.\r
22894  *\r
22895  */\r
22896 \r
22897 var gbInterrupts = [];\r
22898  \r
22899 function gb_Int_VBlank() { // IF/IE bit 0\r
22900   gbIME=gbHalt=false;\r
22901   MEMW(_IF_,gbRegIF&0xFE); // reset IF bit 0\r
22902   MEMW(--SP,PC>>8);\r
22903   MEMW(--SP,PC&0xFF);\r
22904   PC=0x0040;\r
22905   gbCPUTicks+=32;\r
22906 }\r
22907 \r
22908 function gb_Int_STAT() { // IF/IE bit 1\r
22909   gbIME=gbHalt=false;\r
22910   MEMW(_IF_,gbRegIF&0xFD); // reset IF bit 1\r
22911   MEMW(--SP,PC>>8);\r
22912   MEMW(--SP,PC&0xFF);\r
22913   PC=0x0048;\r
22914   gbCPUTicks+=32;\r
22915 }\r
22916 \r
22917 function gb_Int_Timer() { // IF/IE bit 2\r
22918   gbIME=gbHalt=false;\r
22919   MEMW(_IF_,gbRegIF&0xFB); // reset IF bit 2\r
22920   MEMW(--SP,PC>>8);\r
22921   MEMW(--SP,PC&0xFF);\r
22922   PC=0x0050;\r
22923   gbCPUTicks+=32;\r
22924 }\r
22925 \r
22926 function gb_Int_Serial() { // IF/IE bit 3\r
22927   gbIME=gbHalt=false;\r
22928   MEMW(_IF_,gbRegIF&0xF7); // reset IF bit 3\r
22929   MEMW(--SP,PC>>8);\r
22930   MEMW(--SP,PC&0xFF);\r
22931   PC=0x0058;\r
22932   gbCPUTicks+=32;\r
22933 }\r
22934 \r
22935 function gb_Int_Buttons() { // IF/IE bit 4\r
22936   gbIME=gbHalt=false;\r
22937   MEMW(_IF_,gbRegIF&0xEF); // reset IF bit 4\r
22938   MEMW(--SP,PC>>8);\r
22939   MEMW(--SP,PC&0xFF);\r
22940   PC=0x0060;\r
22941   gbCPUTicks+=32;\r
22942 }\r
22943 \r
22944 function gb_Init_Interrupts() {\r
22945   gbIME=gbHalt=false;\r
22946   for (var i=0; i<32; i++) {\r
22947     if (i&1) gbInterrupts[i] = gb_Int_VBlank; else    \r
22948     if (i&2) gbInterrupts[i] = gb_Int_STAT; else    \r
22949     if (i&4) gbInterrupts[i] = gb_Int_Timer; else    \r
22950     if (i&8) gbInterrupts[i] = gb_Int_Serial; else    \r
22951     if (i&16)gbInterrupts[i] = gb_Int_Buttons; else\r
22952     gbInterrupts[i] = function(){};   \r
22953   }\r
22954 }\r
22955 \r
22956 \r
22957 \r
22958 /* \r
22959  * jsgb.input.js v0.02 - buttons input module for JSGB, a JS GameBoy Emulator\r
22960  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
22961  *\r
22962  * This program is free software; you can redistribute it and/or\r
22963  * modify it under the terms of the GNU General Public License\r
22964  * version 2 as published by the Free Software Foundation.\r
22965  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
22966  *\r
22967  * This program is distributed in the hope that it will be useful,\r
22968  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
22969  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
22970  * GNU General Public License for more details.\r
22971  *\r
22972  */\r
22973  \r
22974 var gbPin14=0; // up down left right\r
22975 var gbPin15=0; // start select a b\r
22976 \r
22977 function gb_Read_Joypad(v) {\r
22978   switch ((v>>4)&3) {\r
22979     case 0: gbMemory[_P1_]=gbPin14 & gbPin15; return; // TODO not sure on this\r
22980     case 1: gbMemory[_P1_]=gbPin15; return;\r
22981     case 2: gbMemory[_P1_]=gbPin14; return;\r
22982     case 3: gbMemory[_P1_]=0xFF; return; // TODO not sure on this\r
22983   }\r
22984 }\r
22985     \r
22986 function gb_OnKeyDown_Event(e) {\r
22987   //$('DEBUG').innerHTML=document.title=e.which;  \r
22988   switch (e.which) {\r
22989     // down\r
22990     case 40: gbPin14&=0xF7; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
22991     // up\r
22992     case 38: gbPin14&=0xFB; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
22993     // left\r
22994     case 37: gbPin14&=0xFD; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
22995     // right\r
22996     case 39: gbPin14&=0xFE; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;    \r
22997     // start\r
22998     case 65: gbPin15&=0xF7; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
22999     // select\r
23000     case 83: gbPin15&=0xFB; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23001     // button B\r
23002     case 90: gbPin15&=0xFD; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23003     // button A\r
23004     case 88: gbPin15&=0xFE; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23005   }\r
23006 }\r
23007 \r
23008 function gb_OnKeyUp_Event(e) {\r
23009   switch (e.which) {\r
23010     // down\r
23011     case 40: gbPin14|=8; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23012     // up\r
23013     case 38: gbPin14|=4; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23014     // left\r
23015     case 37: gbPin14|=2; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23016     // right\r
23017     case 39: gbPin14|=1; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23018     // start\r
23019     case 65: gbPin15|=8; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23020     // select\r
23021     case 83: gbPin15|=4; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23022     // button B\r
23023     case 90: gbPin15|=2; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23024     // button A\r
23025     case 88: gbPin15|=1; MEMW(_IF_,gbRegIF|16); e.preventDefault(); return;\r
23026   }\r
23027 }\r
23028 \r
23029 function gb_Init_Input() {\r
23030   document.onkeydown = gb_OnKeyDown_Event;\r
23031   document.onkeyup = gb_OnKeyUp_Event;\r
23032   gbPin14=0xEF;\r
23033   gbPin15=0xDF;\r
23034 }  \r
23035 \r
23036 \r
23037 \r
23038 \r
23039 /* \r
23040  * jsgb.lcd.js v0.02 - LCD controller emulation for JSGB, a JS GameBoy Emulator\r
23041  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
23042  *\r
23043  * This program is free software; you can redistribute it and/or\r
23044  * modify it under the terms of the GNU General Public License\r
23045  * version 2 as published by the Free Software Foundation.\r
23046  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
23047  *\r
23048  * This program is distributed in the hope that it will be useful,\r
23049  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
23050  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
23051  * GNU General Public License for more details.\r
23052  *\r
23053  */\r
23054 \r
23055 var gbTileData = []; // tile data arrays\r
23056 var gbBackgroundData = [];\r
23057 var gbLCDObj; // LCD Object\r
23058 var gbLCDCtx; // LCD Context\r
23059 var gbFrameBuffer = [];\r
23060 var gbLCDImage; // LCD canvas image\r
23061 var gbLCDImageData; // LCD canvas image data\r
23062 //var gbLCDScanline; // LCD canvas scanline \r
23063 //var gbScanlineData = []; // Scanline data in GB memory\r
23064 var gbFPS = 0; // Frames per second counter\r
23065 var gbEndFrame = false;\r
23066 var gbCurrentWinLine=0;\r
23067 \r
23068 var gbUpdateTiles  = false;\r
23069 var gbUpdateTilesList = [];\r
23070 var gbUpdateBackground  = false \r
23071 var gbUpdateBackgroundTileList = [];\r
23072 var gbUpdateBackgroundDataList = [];\r
23073 \r
23074 var gbBackPal   = []; // BGP pallete - initialized in jsgb.memory.js\r
23075 var gbSpritePal = [[],[]]; // palettes OBP0 and OBP1 - for sprites\r
23076 var gbColors    = [[0xEF,0xFF,0xDE],[0xAD,0xD7,0x94],\r
23077                    [0x52,0x92,0x73],[0x18,0x34,0x42]];\r
23078 \r
23079 function gb_Update_Tile_Data() {\r
23080   var tda = 0;     // tile data addr\r
23081   var line = 0;    // line (2 bytes)\r
23082   var j = 0;\r
23083   // loop tiles and redraw if needed\r
23084   for (var i=0;i<384;i++) if (gbUpdateTilesList[i]) { \r
23085     tda=0x8000+i*16;\r
23086     for (j=0; j<8; j++) { // loop 8 lines    \r
23087       line = gbMemory[tda++];\r
23088       line|= gbMemory[tda++] << 8;\r
23089       gbTileData[i][j][0] = ((line & 0x8080) + 0x3FFF) >> 14;\r
23090       gbTileData[i][j][1] = ((line & 0x4040) + 0x1FFF) >> 13;\r
23091       gbTileData[i][j][2] = ((line & 0x2020) + 0x0FFF) >> 12;\r
23092       gbTileData[i][j][3] = ((line & 0x1010) + 0x07FF) >> 11;\r
23093       gbTileData[i][j][4] = ((line & 0x0808) + 0x03FF) >> 10;\r
23094       gbTileData[i][j][5] = ((line & 0x0404) + 0x01FF) >> 9;\r
23095       gbTileData[i][j][6] = ((line & 0x0202) + 0x00FF) >> 8;\r
23096       gbTileData[i][j][7] = ((line & 0x0101) + 0x007F) >> 7;   \r
23097     }\r
23098     // mark this tile for update in gb_Update_Background()\r
23099     gbUpdateBackgroundDataList[i] = gbUpdateBackground = true;\r
23100     gbUpdateTilesList[i] = false;\r
23101   }\r
23102   gbUpdateTiles=false;\r
23103 }\r
23104 \r
23105 function gb_Update_Background() {\r
23106 /*\r
23107   This function draws 4 background buffers in a single array,\r
23108   one for every combination of source tile maps and tile data addresses.\r
23109 \r
23110   A tile is painted only if tile map or tile data has changed. It knows that\r
23111   looking at arrays gbUpdateBackgroundDataList and gbUpdateBackgroundTileList.\r
23112   These arrays are updated when writing to VRAM:\r
23113   - 8000-97FF: Tile data\r
23114   - 9800-9FFF: Tile maps\r
23115   \r
23116   +----------+----------+\r
23117   |          |          |\r
23118   |   Map0   |   Map0   |\r
23119   |  Tile0   |  Tile1   |\r
23120   |          |          |\r
23121   +----------+----------+\r
23122   |          |          |\r
23123   |   Map1   |   Map1   |\r
23124   |  Tile0   |  Tile1   |\r
23125   |          |          |\r
23126   +----------+----------+\r
23127   \r
23128   Map and Tile addresses can be switched in LCDC register.\r
23129   \r
23130   Map0  = tile map starting at 0x9800\r
23131   Map1  = tile map starting at 0x9C00\r
23132   Tile0 = tile data index at 0x8000+i (i=unsigned byte) \r
23133   Tile1 = tile data index at 0x8800+i (i=signed byte)\r
23134 \r
23135   Tile0 and Tile1 share 128 indexes:\r
23136                  _______________________________\r
23137   Tile0 ->      [_______________________________]_______________\r
23138   Tile1 ->                      [_______________________________]\r
23139   Tile index -> 0···············128·············256·············384\r
23140              \r
23141   This way the GameBoy can access 384 different tiles using a byte index.             \r
23142 */\r
23143   var tile0 = 0; // tile index for tiledata at 8000+(unsigned byte)\r
23144   var tile1 = 0; // tile index for tiledata at 8800+(signed byte)\r
23145   var x  = 0;\r
23146   var y  = 0;\r
23147   var z  = 0;\r
23148   var dy = 0;\r
23149   var addr = 0x9800;\r
23150   var tileline;\r
23151   var backline;\r
23152   \r
23153   for (var i=0;i<2048;i++) {\r
23154     tile0 = gbMemory[addr++];\r
23155     tile1 = 256+sb(tile0);\r
23156     if (gbUpdateBackgroundTileList[i] || gbUpdateBackgroundDataList[tile0]) {\r
23157       dy = 8;\r
23158       while (dy--) { \r
23159         z = x;\r
23160         tileline=gbTileData[tile0][dy];\r
23161         backline=gbBackgroundData[y+dy];\r
23162         backline[z++] = tileline[0];\r
23163         backline[z++] = tileline[1];\r
23164         backline[z++] = tileline[2];\r
23165         backline[z++] = tileline[3];\r
23166         backline[z++] = tileline[4];\r
23167         backline[z++] = tileline[5];\r
23168         backline[z++] = tileline[6];\r
23169         backline[z++] = tileline[7];        \r
23170       }\r
23171     }\r
23172     if (gbUpdateBackgroundTileList[i] || gbUpdateBackgroundDataList[tile1]) {\r
23173       dy = 8;\r
23174       while (dy--) { \r
23175         z = 256+x;\r
23176         tileline = gbTileData[tile1][dy];\r
23177         backline = gbBackgroundData[y+dy];\r
23178         backline[z++] = tileline[0];\r
23179         backline[z++] = tileline[1];\r
23180         backline[z++] = tileline[2];\r
23181         backline[z++] = tileline[3];\r
23182         backline[z++] = tileline[4];\r
23183         backline[z++] = tileline[5];\r
23184         backline[z++] = tileline[6];\r
23185         backline[z++] = tileline[7];        \r
23186       }\r
23187     }\r
23188     gbUpdateBackgroundTileList[i] = false;\r
23189     if ((x+=8)>=256) { x=0; y+=8; }\r
23190   }\r
23191   for (i=0;i<384;i++) gbUpdateBackgroundDataList[i]=false;\r
23192   gbUpdateBackground = false;\r
23193 }\r
23194 \r
23195 function gb_Framebuffer_to_LCD() {\r
23196   var x = 92160; // 144*160*4\r
23197 \r
23198   var y = 0;\r
23199   var i = 23040; // 144*160\r
23200   while (i) {\r
23201     y = gbColors[gbFrameBuffer[--i]];\r
23202     gbLCDImageData[x-=2] = y[2]; // b\r
23203     gbLCDImageData[--x ] = y[1]; // g\r
23204     gbLCDImageData[--x ] = y[0]; // r\r
23205     y = gbColors[gbFrameBuffer[--i]];\r
23206     gbLCDImageData[x-=2] = y[2]; // b\r
23207     gbLCDImageData[--x ] = y[1]; // g\r
23208     gbLCDImageData[--x ] = y[0]; // r\r
23209     y = gbColors[gbFrameBuffer[--i]];\r
23210     gbLCDImageData[x-=2] = y[2]; // b\r
23211     gbLCDImageData[--x ] = y[1]; // g\r
23212     gbLCDImageData[--x ] = y[0]; // r\r
23213     y = gbColors[gbFrameBuffer[--i]];\r
23214     gbLCDImageData[x-=2] = y[2]; // b\r
23215     gbLCDImageData[--x ] = y[1]; // g\r
23216     gbLCDImageData[--x ] = y[0]; // r\r
23217   }\r
23218   gbLCDCtx.putImageData(gbLCDImage, 0,0);\r
23219 }\r
23220 \r
23221 function gb_Clear_Scanline() {\r
23222   var offset = gbRegLY*160; // framebuffer's offset\r
23223   var i = 160+offset;\r
23224   while (offset<i) {\r
23225     gbFrameBuffer[--i] = 0; gbFrameBuffer[--i] = 0;\r
23226     gbFrameBuffer[--i] = 0; gbFrameBuffer[--i] = 0;\r
23227     gbFrameBuffer[--i] = 0; gbFrameBuffer[--i] = 0;\r
23228     gbFrameBuffer[--i] = 0; gbFrameBuffer[--i] = 0;\r
23229   }\r
23230 }\r
23231 \r
23232 function gb_Clear_Framebuffer() {\r
23233   var i = 23040; // 144*160\r
23234   while (i) {\r
23235     gbFrameBuffer[--i] = 0; gbFrameBuffer[--i] = 0;\r
23236     gbFrameBuffer[--i] = 0; gbFrameBuffer[--i] = 0;\r
23237     gbFrameBuffer[--i] = 0; gbFrameBuffer[--i] = 0;\r
23238     gbFrameBuffer[--i] = 0; gbFrameBuffer[--i] = 0;\r
23239   }\r
23240 }\r
23241 \r
23242 function gb_Draw_Scanline() {\r
23243   var i = 0;\r
23244   var j = 0;\r
23245   var k = 0;\r
23246   var x = 0;\r
23247   var y = 0;\r
23248   var offset = gbRegLY*160; // framebuffer's offset\r
23249   var line;\r
23250 \r
23251   if (gbRegLY==0) {\r
23252     gbCurrentWinLine=0;\r
23253     if (gbUpdateTiles) gb_Update_Tile_Data();\r
23254     if (gbUpdateBackground) gb_Update_Background();\r
23255   }\r
23256   \r
23257   // Draw Background\r
23258   if (gbRegLCDC_BgAndWinDisplay) {\r
23259     // copy background line\r
23260     y = gbRegLCDC_BackgroundYOffs+((gbRegSCY+gbRegLY)%256);\r
23261     x = 160+offset;\r
23262     i = 160;\r
23263     line = gbBackgroundData[y];\r
23264     // copy background line to framebuffer\r
23265     while (x>offset) { // loop unrolling\r
23266       gbFrameBuffer[--x] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+((--i+gbRegSCX)%256)]];\r
23267       gbFrameBuffer[--x] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+((--i+gbRegSCX)%256)]];\r
23268       gbFrameBuffer[--x] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+((--i+gbRegSCX)%256)]];\r
23269       gbFrameBuffer[--x] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+((--i+gbRegSCX)%256)]];\r
23270       gbFrameBuffer[--x] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+((--i+gbRegSCX)%256)]];\r
23271       gbFrameBuffer[--x] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+((--i+gbRegSCX)%256)]];\r
23272       gbFrameBuffer[--x] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+((--i+gbRegSCX)%256)]];\r
23273       gbFrameBuffer[--x] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+((--i+gbRegSCX)%256)]];\r
23274     }\r
23275 \r
23276     // Draw Window - TODO this could be buggy\r
23277     if (gbRegLCDC_WindowDisplay) if ((gbRegWY<=gbRegLY) && (gbRegWX<167)) {\r
23278       y = gbRegLCDC_WindowYOffs+gbCurrentWinLine;\r
23279       i = gbRegWX-7+offset;\r
23280       j = (i<0)?-i:0;\r
23281       line = gbBackgroundData[y];\r
23282       // copy window line to framebuffer\r
23283       for (x=j; x<167-gbRegWX; x++) {\r
23284         gbFrameBuffer[x+i] = gbBackPal[line[gbRegLCDC_BackgroundXOffs+x]];\r
23285       }\r
23286       gbCurrentWinLine++;\r
23287     }\r
23288   }  \r
23289   \r
23290   // Draw Sprites\r
23291   if (gbRegLCDC_SpriteDisplay) {\r
23292     var addr  = _OAM_;\r
23293     var tile  = 0; \r
23294     var flags = 0; \r
23295     var count = 0; // max 10 sprites per scanline\r
23296     var pixel = 0;\r
23297     var flip  = 0;\r
23298     var hide  = 0; // sprite priority 1=behind background\r
23299     var pal;\r
23300     j=40;\r
23301     while (j--) { // loop 40 sprites (160 bytes)\r
23302       y=gbMemory[addr++]-16;\r
23303       // check Y pos\r
23304       if ((gbRegLY>=y) && (gbRegLY<(y+gbRegLCDC_SpriteSize))) {\r
23305         // TODO handle Y flipped sprites with size = 16\r
23306         x=gbMemory[addr++]-8;\r
23307         // check X pos\r
23308         if ((x>-8) && (x<160)) {\r
23309           count++;\r
23310           tile  = gbMemory[addr++];\r
23311           flags = gbMemory[addr++];\r
23312           hide  = (flags>>7)&1;\r
23313           flip  = (flags>>5)&3;\r
23314           pal   = gbSpritePal[(flags>>4)&1];\r
23315           if (gbRegLCDC_SpriteSize==16) {\r
23316             tile&=0xFE;\r
23317             if (gbRegLY>=(y+8)) { // if it's the 2nd half of the sprite\r
23318               y+=8;\r
23319               if (flip<2) tile++; // not flip Y\r
23320             }\r
23321             else if (flip>1) tile++; // flip Y\r
23322           }  \r
23323           i=8;\r
23324           k=x+offset;\r
23325           switch (flip) {\r
23326           case 0: // no flip\r
23327             line=gbTileData[tile][gbRegLY-y]; // sprite line            \r
23328             while (i--) {\r
23329               if (pixel=line[i]) { // if not transparent\r
23330                 if ((x+i)<0) break;\r
23331                 if (!(hide && gbFrameBuffer[k+i]))\r
23332                   gbFrameBuffer[k+i]=pal[pixel];\r
23333               }  \r
23334             } \r
23335             break;\r
23336           case 1: // flip X\r
23337             line=gbTileData[tile][gbRegLY-y]; // sprite line            \r
23338             while (i--) {\r
23339               if (pixel=line[7-i]) {\r
23340                 if ((x+i)<0) break;\r
23341                 if (!(hide && gbFrameBuffer[k+i]))\r
23342                   gbFrameBuffer[k+i]=pal[pixel];\r
23343               }  \r
23344             } \r
23345             break;\r
23346           case 2: // flip Y\r
23347             line=gbTileData[tile][7-(gbRegLY-y)]; // sprite line            \r
23348             while (i--) {\r
23349               if (pixel=line[i]) {\r
23350                 if ((x+i)<0) break;\r
23351                 if (!(hide && gbFrameBuffer[k+i]))\r
23352                   gbFrameBuffer[k+i]=pal[pixel];\r
23353               }  \r
23354             } \r
23355             break;\r
23356           case 3: // flip XY\r
23357             line=gbTileData[tile][7-(gbRegLY-y)]; // sprite line            \r
23358             while (i--) {\r
23359               if (pixel=line[7-i]) {\r
23360                 if ((x+i)<0) break;\r
23361                 if (!(hide && gbFrameBuffer[k+i]))\r
23362                   gbFrameBuffer[k+i]=pal[pixel];\r
23363               }  \r
23364             } \r
23365             break;\r
23366           }\r
23367         } else addr+=2; // x fail\r
23368       } else addr+=3; // y fail\r
23369       if (count>=10) break;\r
23370     }\r
23371   }\r
23372 }\r
23373 \r
23374 function gb_Init_LCD() {\r
23375   gbScanlineCycles = 0;\r
23376   // init LCD Screen variables\r
23377   gbLCDObj=$('LCD');\r
23378   gbLCDCtx=gbLCDObj.getContext('2d');\r
23379   gbLCDCtx.width=160;\r
23380   gbLCDCtx.height=144;\r
23381   gbLCDCtx.fillStyle='rgb('+gbColors[0][0]+','+gbColors[0][1]+','+gbColors[0][2]+')';\r
23382   gbLCDCtx.fillRect(0,0,160,144);\r
23383   // get LCD scanline canvas data\r
23384   gbLCDImage = gbLCDCtx.getImageData(0,0,160,144);\r
23385   gbLCDImageData = gbLCDImage.data;\r
23386   // update tiles info\r
23387   gbUpdateTiles = false;\r
23388   for (var i=0; i<384; i++) {\r
23389     gbUpdateTilesList[i]=false;   \r
23390     gbUpdateBackgroundDataList[i]=false;\r
23391   }  \r
23392   // update bg info\r
23393   gbUpdateBackground = false;\r
23394   for (var i=0; i<2048; i++) {\r
23395     gbUpdateBackgroundTileList[i] = false;\r
23396   }\r
23397   // create Background lines\r
23398   for (var j=0; j<512; j++) {\r
23399     gbBackgroundData[j] = [];\r
23400     for (var i=0; i<512; i++) gbBackgroundData[j][i] = 0;\r
23401   }  \r
23402   // create Tiles\r
23403   for (var i=0; i<384; i++) {\r
23404     gbTileData[i] = []; \r
23405     // create Tile lines\r
23406     for (var j=0; j<8; j++) {\r
23407       gbTileData[i][j] = [];\r
23408       for (var k=0; k<8; k++) gbTileData[i][j][k] = 0;\r
23409     }\r
23410   }\r
23411   // fill frame buffer\r
23412   gb_Clear_Framebuffer();\r
23413 }\r
23414 \r
23415 \r
23416 \r
23417 \r
23418 /* \r
23419  * jsgb.graphics.js v0.02 - Timers functions for JSGB, a GameBoy Emulator\r
23420  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
23421  *\r
23422  * This program is free software; you can redistribute it and/or\r
23423  * modify it under the terms of the GNU General Public License\r
23424  * version 2 as published by the Free Software Foundation.\r
23425  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
23426  *\r
23427  * This program is distributed in the hope that it will be useful,\r
23428  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
23429  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
23430  * GNU General Public License for more details.\r
23431  *\r
23432  */\r
23433  \r
23434 var gbDIVTicks = 0;         // DIV Ticks Count\r
23435 var gbLCDTicks = 0;         // ScanLine Counter\r
23436 var gbTimerTicks = 0;       // Timer Ticks Count\r
23437 var gbTimerOverflow = 1024; // Timer Max Ticks\r
23438 \r
23439 function gb_Set_Timer_Freq(f) {\r
23440   switch(f) {   // TAC bits 0 and 1\r
23441     case 0: gbTimerOverflow=1024; return; // 4.096 KHz\r
23442 \r
23443     case 1: gbTimerOverflow=16; return;   // 262.144 Khz\r
23444     case 2: gbTimerOverflow=64; return;   // 65.536 KHz\r
23445     case 3: gbTimerOverflow=256; return;  // 16.384 KHz\r
23446   }  \r
23447 }          \r
23448 \r
23449 function gb_Mode0() { // H-Blank \r
23450   if (gbRegSTAT_Mode!=0) {\r
23451     gbMemory[_STAT_]&=0xFC; // set STAT bits 1-0 to 0\r
23452     gbRegSTAT_Mode=0;\r
23453     if (gbRegSTAT_IntMode0) MEMW(_IF_,gbRegIF|2); // if STAT bit 3 -> set IF bit1\r
23454   }  \r
23455 }\r
23456 \r
23457 function gb_Mode2() { // OAM in use\r
23458   if (gbRegSTAT_Mode!=2) {\r
23459     gbRegSTAT_Mode=2;\r
23460     gbMemory[_STAT_]=(gbMemory[_STAT_]&0xFC)|2;// set STAT bits 1-0 to 2\r
23461     if (gbRegSTAT_IntMode2) MEMW(_IF_,gbRegIF|2);// set IF bit 1\r
23462   }  \r
23463 }\r
23464 \r
23465 function gb_Mode3() { // OAM+VRAM busy\r
23466   if (gbRegSTAT_Mode!=3) {\r
23467     gbRegSTAT_Mode=3;\r
23468     gbMemory[_STAT_]|=3; // set STAT bits 1-0 to 3\r
23469     if (gbRegLCDC_DisplayOn) gb_Draw_Scanline();\r
23470     else gb_Clear_Scanline();\r
23471   }\r
23472 }\r
23473 \r
23474 function gb_Mode1() { // V-Blank  \r
23475   gbRegSTAT_Mode=1;\r
23476   gbMemory[_STAT_]=(gbMemory[_STAT_]&0xFC)|1;\r
23477   if (gbRegSTAT_IntMode1) MEMW(_IF_,gbRegIF|2); // set IF flag 1\r
23478   MEMW(_IF_,gbRegIF|1); // set IF flag 0 \r
23479   if (gbRegLCDC_DisplayOn) gb_Framebuffer_to_LCD(); // Display frame\r
23480   else gbLCDCtx.fillRect(0,0,160,144);;\r
23481 }\r
23482 \r
23483 function gb_LY_LYC_compare() { // LY - LYC Compare\r
23484   if (gbRegLY==gbRegLYC) { // If LY==LCY\r
23485     gbMemory[_STAT_]|=0x04; // set STAT bit 2: LY-LYC coincidence flag\r
23486     if (gbRegSTAT_IntLYLYC) MEMW(_IF_,gbRegIF|2); // set IF bit 1\r
23487   }      \r
23488   else {\r
23489     gbMemory[_STAT_]&=0xFB; // reset STAT bit 2 (LY!=LYC)\r
23490   }  \r
23491 }\r
23492 \r
23493 function gb_TIMER_Control() {\r
23494 \r
23495   // DIV control\r
23496   if ((gbDIVTicks+=gbCPUTicks)>=256) {\r
23497     gbDIVTicks-=256;\r
23498     gbMemory[_DIV_]=(++gbMemory[_DIV_])&0xFF; // inc DIV\r
23499   }    \r
23500 \r
23501   // LCD Timing\r
23502   gbLCDTicks+=gbCPUTicks; // ScanLineCounter += InstructionCyclesCount\r
23503   if (gbLCDTicks>=456){ // when ScanLineCounter overflows -> new scanline        \r
23504     gbLCDTicks-=456;\r
23505     // I'm comparing LY and LYC before incrementing LY\r
23506     // that's because MarioLand and the dot under the coin\r
23507     gb_LY_LYC_compare(); \r
23508     if ((++gbRegLY)>=154) gbRegLY-=154; // inc LY (current scanline)\r
23509     gbMemory[_LY_]=gbRegLY;\r
23510     if (gbRegLY==144) gb_Mode1(); // mode1: 4560 cycles\r
23511     else if (gbRegLY==0) {\r
23512       gbEndFrame=true;\r
23513       gbFPS++;\r
23514     }   \r
23515   }\r
23516   if (gbRegLY<144) { // if not in V-Blank\r
23517     if (gbLCDTicks<=204) gb_Mode0(); // mode0: 204 cycles\r
23518     else if (gbLCDTicks<=284) gb_Mode2(); // mode2: 80 cycles\r
23519     else gb_Mode3(); // mode3: 172 cycles\r
23520   }\r
23521 \r
23522   // Internal Timer\r
23523   if (gbRegTAC_TimerOn) {\r
23524     if ((gbTimerTicks+=gbCPUTicks)>=gbTimerOverflow) {\r
23525       gbTimerTicks-=gbTimerOverflow;\r
23526       if ((++gbMemory[_TIMA_])>=256) {\r
23527         gbMemory[_TIMA_]=gbMemory[_TMA_];\r
23528         MEMW(_IF_,gbRegIF|4); // set IF bit 2\r
23529       }\r
23530     }\r
23531   }  \r
23532 }\r
23533 \r
23534 \r
23535 \r
23536 /* \r
23537  * jsgb.debugger.js v0.02 - Debugger for JSGB, a GameBoy Emulator\r
23538  * Copyright (C) 2009 Pedro Ladaria <Sonic1980 at Gmail dot com>\r
23539  *\r
23540  * This program is free software; you can redistribute it and/or\r
23541  * modify it under the terms of the GNU General Public License\r
23542  * version 2 as published by the Free Software Foundation.\r
23543  * The full license is available at http://www.gnu.org/licenses/gpl.html\r
23544  *\r
23545  * This program is distributed in the hope that it will be useful,\r
23546  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
23547  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
23548  * GNU General Public License for more details.\r
23549  *\r
23550  */\r
23551  \r
23552 var gbIsBreakpoint = false;\r
23553  \r
23554 function gb_Dump_All() {\r
23555   gb_Dump_CPU();\r
23556   gb_Dump_IORegs();\r
23557   //asmScroll.dragger.posY*(0xFFFF-dump_asm_h+1)\r
23558   asmScroll.dragger.setpos(0,((PC-10<0)?0:(PC-10))/(0xFFFF-dump_asm_h+1));\r
23559   gb_Dump_ASM();\r
23560   gb_Dump_Mem();\r
23561   memScroll.update();\r
23562   asmScroll.update();\r
23563   //gb_Dump_Background();\r
23564   //dump_sp();\r
23565   gb_Dump_Cartridge_info();\r
23566 }\r
23567 \r
23568 // CPU //\r
23569 \r
23570 function gb_Dump_CPU() {\r
23571   $('RA').innerHTML='A: '+zf(hex(RA),2)+br+sp(zf(bin(RA),8),4);\r
23572   $('RB').innerHTML='B: '+zf(hex(RB),2)+br+sp(zf(bin(RB),8),4);\r
23573   $('RC').innerHTML='C: '+zf(hex(RC),2)+br+sp(zf(bin(RC),8),4);\r
23574   $('RD').innerHTML='D: '+zf(hex(RD),2)+br+sp(zf(bin(RD),8),4);\r
23575   $('RE').innerHTML='E: '+zf(hex(RE),2)+br+sp(zf(bin(RE),8),4);\r
23576   $('HL').innerHTML='&nbsp;HL: '+zf(hex(HL),4)+br+sp(zf(bin(HL),16),4);\r
23577   $('SP').innerHTML='&nbsp;SP: '+zf(hex(SP),4)+br+sp(zf(bin(SP),16),4);\r
23578   $('PC').innerHTML='&nbsp;PC: '+zf(hex(PC),4)+br+sp(zf(bin(PC),16),4);\r
23579   $('RF').innerHTML='Z:'+(FZ*1)+' N:'+(FN*1)+'<br/'+'>H:'+(FH*1)+' C:'+(FC*1);\r
23580 }\r
23581 \r
23582 // SPECIAL REGISTERS //\r
23583 \r
23584 function gb_Dump_IORegs() {\r
23585   $('SPRDUMP').innerHTML=\r
23586     'FF00:P1&nbsp; &nbsp;'+sp(zf(bin(gbMemory[0xFF00]),8),4)+br+\r
23587     'FF04:DIV&nbsp; '     +gbMemory[0xFF04]+'=0x'+zf(hex(gbMemory[0xFF04]),2)+br+\r
23588     'FF05:TIMA '          +gbMemory[0xFF05]+'=0x'+zf(hex(gbMemory[0xFF05]),2)+br+\r
23589     'FF06:TMA &nbsp;'     +gbMemory[0xFF06]+'=0x'+zf(hex(gbMemory[0xFF06]),2)+br+\r
23590     'FF07:TAC&nbsp; '     +sp(zf(bin(gbMemory[0xFF07]),8),4)+br+\r
23591     'FF0F:IF&nbsp; &nbsp;'+sp(zf(bin(gbMemory[0xFF0F]),8),4)+br+\r
23592     'FF40:LCDC '          +sp(zf(bin(gbMemory[_LCDC_]),8),4)+br+\r
23593     'FF41:STAT '          +sp(zf(bin(gbMemory[0xFF41]),8),4)+br+\r
23594     'FF42:SCY&nbsp; '     +gbMemory[0xFF42]+br+\r
23595     'FF43:SCX&nbsp; '     +gbMemory[0xFF43]+br+\r
23596     'FF44:LY&nbsp; &nbsp;'+gbMemory[0xFF44]+br+\r
23597     'FF45:LYC &nbsp;'     +gbMemory[0xFF45]+br+\r
23598 \r
23599     'FF46:DMA &nbsp;'     +'0x'+zf(hex(gbMemory[0xFF46]),2)+br+\r
23600     'FF47:BGP &nbsp;'     +sp(zf(bin(gbMemory[0xFF47]),8),4)+br+\r
23601     'FF48:OBP0&nbsp;'     +sp(zf(bin(gbMemory[0xFF48]),8),4)+br+\r
23602     'FF49:OBP1&nbsp;'     +sp(zf(bin(gbMemory[0xFF49]),8),4)+br+\r
23603 \r
23604     'FF4A:WY&nbsp; &nbsp;'+gbMemory[0xFF4A]+br+\r
23605     'FF4B:WX&nbsp; &nbsp;'+gbMemory[0xFF4B]+br+\r
23606     'FFFF:IE&nbsp; &nbsp;'+sp(zf(bin(gbMemory[0xFFFF]),8),4)+br+\r
23607     '<hr>'+\r
23608     'Emulator vars'+br+\r
23609     'IME: '+gbIME+br+\r
23610     'CPU Ticks: '+gbCPUTicks+br+\r
23611     'DIV Ticks: '+gbDIVTicks+br+\r
23612     'LCD Ticks: '+gbLCDTicks+br+\r
23613     'Timer Ticks: '+gbTimerTicks+br+\r
23614     'Timer Max: '+gbTimerOverflow+br;\r
23615 }\r
23616 \r
23617 // MEMORY //\r
23618 \r
23619 var dump_mem_w=16;\r
23620 var dump_mem_h=40;\r
23621 var dump_mem_a=dump_mem_w*dump_mem_h;\r
23622 function gb_Dump_Mem() {\r
23623   var s='';\r
23624   var w=dump_mem_w;\r
23625   var h=dump_mem_h;\r
23626   var c=0;    // char\r
23627   var d='';   // display char\r
23628   var hx= ''; // hex values string\r
23629   var as= ''; // ascii values string\r
23630   var of= Math.round(memScroll.dragger.posY*(0xFFFF-(dump_mem_a-w)))&(0xFFFF-w+1);\r
23631   for (var j=0;j<h;j++) {\r
23632     s+=where_mem(of)+':';\r
23633     s+=zf(hex(of),4)+'&nbsp; ';\r
23634     hx='';\r
23635     as='';\r
23636     for (var i=0;i<w;i++) {\r
23637       c=MEMR(of+i);\r
23638       hx+=zf(hex(c),2)+' ';\r
23639       d=String.fromCharCode(c);\r
23640       if (c>126) d='.';\r
23641       else if (c<32) d='.';\r
23642       else if (c==60) d='&lt;';\r
23643       else if (c==62) d='&gt;';\r
23644       else if (c==32) d='&nbsp;';\r
23645       as+=d;\r
23646     }  \r
23647     s+=hx+' '+as+'&nbsp;';\r
23648     s+=br;\r
23649     of+=w;\r
23650   }\r
23651   $('MEMDUMP').innerHTML=s;\r
23652 }\r
23653 \r
23654 // DISASSEMBLER + BREAKPOINTS STUFF //\r
23655 \r
23656 function gb_GoTo_ASM(a) {\r
23657   a='0x'+a;\r
23658   asmScroll.dragger.setpos(0,((a-10<0)?0:(a-10))/(0xFFFF-dump_asm_h+1));\r
23659   gb_Dump_ASM();\r
23660 }\r
23661 \r
23662 function gb_Save_Breakpoints_Cookie(ba) {\r
23663   var date = new Date(); date.setTime(date.getTime()+(30*24*60*60*1000));\r
23664   var expires = "; expires="+date.toGMTString();\r
23665   ba=(ba.length>0)?ba.join(','):'';\r
23666   //document.title='COOKIE WRITE:'+ba;\r
23667   document.cookie = 'JSGB_gbBreakpointsP='+ba+expires+"; path=/";\r
23668 }\r
23669 \r
23670 function gb_Load_Breakpoints_Cookie() {\r
23671   var n='JSGB_gbBreakpointsP=';\r
23672   var ca = document.cookie.split(';');\r
23673   for(var i in ca) {\r
23674     var c = ca[i];\r
23675     while (c.charAt(0)==' ') c=c.substring(1,c.length);\r
23676     if (c.indexOf(n)==0) {\r
23677       var ba=c.substring(n.length,c.length);\r
23678       if(ba=='')return [];\r
23679       ba=ba.split(',');\r
23680       for(var j in ba) ba[j]*=1;\r
23681       gbIsBreakpoint = ba.length>0;\r
23682       return ba;\r
23683     }  \r
23684   }\r
23685   return [];\r
23686 }\r
23687 \r
23688 var gbBreakpointsList = gb_Load_Breakpoints_Cookie();\r
23689 \r
23690 function gb_Set_Breakpoint(addr) {\r
23691   addr*=1; // convert to integer\r
23692   if ((addr>0xFFFF) || (addr<0)) return;\r
23693   var i=gbBreakpointsList.indexOf(addr);  \r
23694   if (i<0) gbBreakpointsList.push(addr);// Set breakpoint\r
23695   else gbBreakpointsList.splice(i,1); // Remove breakpoint\r
23696   gb_Save_Breakpoints_Cookie(gbBreakpointsList);\r
23697   gbIsBreakpoint = gbBreakpointsList.length>0;\r
23698   gb_Dump_ASM();\r
23699 }\r
23700 \r
23701 function gb_Clear_All_Breakpoints() {\r
23702   gbBreakpointsList=[];\r
23703   gb_Save_Breakpoints_Cookie(gbBreakpointsList);\r
23704   gbIsBreakpoint = false;\r
23705   gb_Dump_ASM();\r
23706 }\r
23707 \r
23708 function gb_Show_Function(PC) {\r
23709   var s=(MEMR(PC)==0xCB)?OPCB[MEMR(PC+1)]:OP[MEMR(PC)];\r
23710   var ident = 0;\r
23711   s = s.toString().\r
23712         split('\n').join('').split('\t').join('').split(' ').join('').\r
23713         split('{').join(' {\n').split('}').join('}\n').split(';').join(';\n');\r
23714   s = s.split('\n');\r
23715   for (var i=0; i<s.length; i++) {\r
23716     if (s[i].indexOf('}')>=0) ident--;\r
23717     for (var j=0; j<ident; j++) s[i]='    '+s[i];\r
23718     if (s[i].indexOf('{')>=0) ident++;\r
23719   }\r
23720   s = s.join('\n');\r
23721   alert(s);      \r
23722 }\r
23723 \r
23724 var dump_asm_h = 40;\r
23725 function gb_Dump_ASM() {\r
23726   var s='';\r
23727   var oPC=PC;\r
23728   var of=0;\r
23729   var id='';\r
23730   var st='';\r
23731   PC=Math.round(asmScroll.dragger.posY*(0xFFFF-dump_asm_h+1));\r
23732   if (PC<=0) PC=0;\r
23733   for (var i=0;i<dump_asm_h;i++) {\r
23734     id='ASM_'+PC;\r
23735     st=(gbBreakpointsList.indexOf(PC)>=0)?' class="BK"':'';\r
23736     st+=(oPC==PC)?' style="background:#9F9;"':'';\r
23737     s+='<div id="'+id+'"'+st+'>';\r
23738     s+='<span onclick="gb_Show_Function('+PC+');" class="CP U CB80">fn</span> ';\r
23739     s+='<span onclick="gb_Set_Breakpoint('+PC+');" class="CP C800">';\r
23740     s+=zf(hex(PC),4)+': ';\r
23741     s+=zf(hex(MEMR(PC)),2)+' = ';\r
23742     s+=MN[MEMR(PC)]();    \r
23743     s+='</span></div>\n';\r
23744     PC++;\r
23745   }\r
23746 //else s+='<div>&nbsp;</div>\n';\r
23747   $('ASMDUMP').innerHTML=s;  \r
23748 \r
23749   PC=oPC;\r
23750 }\r
23751 \r
23752 // BACKGROUND //\r
23753 \r
23754 function gb_Dump_Background() {\r
23755   //gb_Draw_Background();\r
23756   $('BG_CANVAS').width=512;  \r
23757   $('BG_CANVAS').height=512;  \r
23758   var bgctx = $('BG_CANVAS').getContext('2d');\r
23759   var img = bgctx.getImageData(0,0,512,512);\r
23760 \r
23761   var k = 0;\r
23762   var c = 0;\r
23763   for (var j=0; j<512; j++) {\r
23764     for (var i=0; i<512; i++) {\r
23765       c = gbColors[gbBackgroundData[j][i]];\r
23766       img.data[k++]=c[0];\r
23767       img.data[k++]=c[1];\r
23768       img.data[k++]=c[2];\r
23769       img.data[k++]=255;\r
23770     }\r
23771   }\r
23772   bgctx.putImageData(img, 0,0);\r
23773 \r
23774   var b=0;\r
23775   var s='BG/Win info @ LCDC Reg'+br;\r
23776   b=(gbMemory[_LCDC_]>>5)&1;\r
23777   s+='bit5='+b+'; Window display = '+(b==0?'off':'on')+br;\r
23778 \r
23779   b=(gbMemory[_LCDC_]>>4)&1;\r
23780   s+='bit4='+b+'; Tile data = '+((b==0)?'0x8800-0x97FF':'0x8000-0x8FFF')+br;\r
23781 \r
23782   b=(gbMemory[_LCDC_]>>3)&1;\r
23783   s+='bit3='+b+'; Tile map = '+((b==0)?'0x9800-0x9BFF':'0x9C00-0x9FFF')+br;\r
23784 \r
23785   b=(gbMemory[_LCDC_]>>0)&1;\r
23786   s+='bit0='+b+'; Display = '+((b==0)?'off':'on')+br;\r
23787   \r
23788   $('BG_INFO').innerHTML=s;\r
23789     \r
23790 }\r
23791 \r
23792 // CARTRIDGE INFO\r
23793 \r
23794 function gb_Dump_Cartridge_info() {\r
23795   var s = '';\r
23796   s+= 'Game name:&nbsp;&nbsp;&nbsp;&nbsp;';\r
23797   s+= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+br;\r
23798   s+= gbROMInfo.Name+'<hr>';\r
23799   s+= 'Type: '+br+gbCartridgeTypes[gbROMInfo.CartridgeType]+'<hr>';\r
23800   \r
23801   s+= 'ROM Size: '+br+gbROMInfo.ROMBanks+' banks: ';\r
23802   s+= (gbROMInfo.ROMBanks*32)+' Kb'+'<hr>';\r
23803   \r
23804   s+= 'RAM Size: '+br+gbROMInfo.RAMBanks+' banks: ';\r
23805   s+= (gbROMInfo.RAMBanks*32)+' Kb';\r
23806   \r
23807   $('ROM_INFO').innerHTML = s;\r
23808 }\r
23809 \r
23810 // SPRITES //\r
23811 /*\r
23812 function dump_sp() {\r
23813   var b=0;\r
23814   var s='Sprite info @ LCDC Reg'+br;\r
23815 \r
23816   b=(gbMemory[_LCDC_]>>2)&1;\r
23817   s+='bit2='+b+'; OBJ size='+((b==0)?'8x8':'8x16')+br;\r
23818 \r
23819   b=(gbMemory[_LCDC_]>>1)&1;\r
23820   s+='bit1='+b+'; OBJ display='+((b==1)?'On':'Off')+br;\r
23821 \r
23822   $('SP_INFO').innerHTML=s;\r
23823 }\r
23824 */\r
23825 // COMMON //\r
23826 \r
23827 var memScroll;\r
23828 var asmScroll;\r
23829 var gbDebuggerInitiated = false;\r
23830 \r
23831 function gb_Init_Debugger() {\r
23832   if (!gbDebuggerInitiated) {\r
23833     $('DEBUGGER').innerHTML=gbDebuggerControls;\r
23834     memScroll = new scrollBar('MEMSCROLL',gb_Dump_Mem);\r
23835     asmScroll = new scrollBar('ASMSCROLL',gb_Dump_ASM);\r
23836     gbDebuggerInitiated = true;\r
23837   }  \r
23838 }\r
23839 \r
23840 var gbDebuggerControls =\r
23841 '<div class="FL MT MR MB">\\r
23842 <table>\\r
23843 <thead><tr><th colspan="2" style="min-width:270px;">Assembler</th></tr></thead>\\r
23844 <tbody><tr><td colspan="2">\\r
23845 <input class="BTN" type="button" onclick="gb_Clear_All_Breakpoints();" value="Clear all breakpoints"/>\\r
23846 <input class="BTN" type="button" onclick="gb_GoTo_ASM(prompt(\'Enter address (in hex)\'));" value="Goto..."/>\\r
23847 <input class="BTN" type="button" onclick="alert(gb_Dump_Caller_Stack());" value="Caller stack..."/>\\r
23848 </td></tr>\\r
23849 <tr>\\r
23850 <td id="ASMDUMP">data</td>\\r
23851 <td id="ASMSCROLL">s</td>\\r
23852 </tr>\\r
23853 </tbody>\\r
23854 </table>\\r
23855 </div>\\r
23856 \\r
23857 <div class="FL MT MR MB">\\r
23858 <table>\\r
23859 <thead><tr><th colspan="2">Memory dump</th></tr></thead>\\r
23860 <tbody>\\r
23861 <tr><td colspan="2">\\r
23862 <input value="ROM0" class="BTN" type="button" onclick="memScroll.dragger.setpos(0,0x0000/(0xFFFF-dump_mem_a));gb_gb_Dump_Mem();"/>\\r
23863 <input value="ROM1" class="BTN" type="button" onclick="memScroll.dragger.setpos(0,0x4000/(0xFFFF-dump_mem_a));gb_Dump_Mem();"/>\\r
23864 <input value="VRAM" class="BTN" type="button" onclick="memScroll.dragger.setpos(0,0x8000/(0xFFFF-dump_mem_a));gb_Dump_Mem();"/>\\r
23865 <input value="OAM" class="BTN" type="button" onclick="memScroll.dragger.setpos(0,0xFE00/(0xFFFF-dump_mem_a));gb_Dump_Mem();"/>\\r
23866 <input value="PC" class="BTN" type="button" onclick="memScroll.dragger.setpos(0,PC/(0xFFFF-dump_mem_a));gb_Dump_Mem();"/>\\r
23867 <input value="SP" class="BTN" type="button" onclick="memScroll.dragger.setpos(0,SP/(0xFFFF-dump_mem_a));gb_Dump_Mem();"/>\\r
23868 <input value="HL" class="BTN" type="button" onclick="memScroll.dragger.setpos(0,HL/(0xFFFF-dump_mem_a));gb_Dump_Mem();"/>\\r
23869 </td></tr>\\r
23870 <tr>\\r
23871 <td id="MEMDUMP">a</td>\\r
23872 <td id="MEMSCROLL">s</td>\\r
23873 </tr>\\r
23874 </tbody>\\r
23875 </table>\\r
23876 </div>\\r
23877 \\r
23878 <div class="FL">\\r
23879 <table class="FL MT MR MB C">\\r
23880 <thead><tr><th colspan="2">CPU Dump</th></tr></thead>\\r
23881 <tbody>\\r
23882 <tr><td id="RA">A</td><td id="RF">F</td></tr>\\r
23883 <tr><td id="RB">B</td><td id="RC">C</td></tr>\\r
23884 <tr><td id="RD">D</td><td id="RE">E</td></tr>\\r
23885 <tr><td colspan="2" id="HL">HL</td></tr>\\r
23886 <tr><td colspan="2" id="SP">SP</td></tr>\\r
23887 <tr><td colspan="2" id="PC">PC</td></tr>\\r
23888 </tbody>\\r
23889 </table>\\r
23890 \\r
23891 <table class="MT MR C CLR">\\r
23892 <thead><tr><th>Cartridge Info</th></tr></thead>\\r
23893 <tbody>\\r
23894 <tr><td class="L" id="ROM_INFO">info</td></tr>\\r
23895 </tbody>\\r
23896 </table>\\r
23897 </div>\\r
23898 \\r
23899 <div class="FL MT MR MB">\\r
23900 <table>\\r
23901 <thead><tr><th>Special regs</th></tr></thead>\\r
23902 <tbody><tr><td id="SPRDUMP">data</td></tr></tbody>\\r
23903 </table>\\r
23904 </div>\\r
23905 \\r
23906 <!--\\r
23907 <div class="FL MR CLR">\\r
23908 <table class="C FL MR">\\r
23909 <thead><tr><th>Tile images</th></tr></thead>\\r
23910 <tbody>\\r
23911 <tr><td id="TILES">tiles</td></tr>\\r
23912 </tbody>\\r
23913 </table>\\r
23914 \\r
23915 <table class="FL MR MB">\\r
23916 <thead><tr><th>Background buffer</th></tr></thead>\\r
23917 <tbody>\\r
23918 <tr><td>\\r
23919 <canvas id="BG_CANVAS" width="512" height="512"></canvas>\\r
23920 <hr/>\\r
23921 <span id="BG_INFO"></span>\\r
23922 <input type="button" value="update" onclick="gb_Dump_Background()"/>\\r
23923 </td></tr>\\r
23924 </tbody>\\r
23925 </table>\\r
23926 \\r
23927 \\r
23928 <table class="FL MR MB">\\r
23929 <thead><tr><th>Sprites</th></tr></thead>\\r
23930 <tbody>\\r
23931 <tr><td>\\r
23932 <canvas style="background:#C8FFD0;" id="SP_CANVAS" width="160" height="144"></canvas>\\r
23933 <hr/>\\r
23934 <span id="SP_INFO"></span>\\r
23935 </td></tr>\\r
23936 </tbody>\\r
23937 </table>\\r
23938 </div>\\r
23939 -->\\r
23940 ';\r
23941 \r
23942 \r
23943 \r
23944 var gbRunInterval;\r
23945 var gbFpsInterval;\r
23946 \r
23947 function gb_Frame() {\r
23948   gbEndFrame=false;\r
23949   while (!(gbEndFrame||gbPause)) {\r
23950     if (!gbHalt) OP[MEMR(PC++)](); else gbCPUTicks=4;\r
23951     if (gbIME) gbInterrupts[gbRegIE & gbRegIF]();\r
23952     gb_TIMER_Control();\r
23953     if (gbIsBreakpoint) if (gbBreakpointsList.indexOf(PC)>=0) {\r
23954       gb_Pause();\r
23955       gb_Toggle_Debugger(true);\r
23956     }  \r
23957   }\r
23958 }\r
23959 \r
23960 function gb_Step(){\r
23961   if (!gbHalt) OP[MEMR(PC++)](); else gbCPUTicks=4;\r
23962   if (gbIME) gbInterrupts[gbRegIE & gbRegIF]();\r
23963   gb_TIMER_Control();\r
23964   gb_Dump_All();\r
23965 }\r
23966 \r
23967 function gb_Run() {\r
23968   if (!gbPause) return;\r
23969   gbPause=false;\r
23970   $('BR').disabled=1;\r
23971   $('BP').disabled=0;\r
23972   $('BS').disabled=1;\r
23973   gbFpsInterval=setInterval(gb_Show_Fps,1000);\r
23974   gbRunInterval=setInterval(gb_Frame,16);\r
23975 }\r
23976 \r
23977 function gb_Pause() {\r
23978   if (gbPause) return;\r
23979   gbPause=true;\r
23980   $('BR').disabled=0;\r
23981   $('BP').disabled=1;\r
23982   $('BS').disabled=0;\r
23983   clearInterval(gbRunInterval);\r
23984   clearInterval(gbFpsInterval);\r
23985   $('STATUS').innerHTML='Pause';\r
23986   gb_Dump_All();        \r
23987 }\r
23988 \r
23989 function gb_Insert_Cartridge(fileName, Start) {\r
23990   gb_Pause();\r
23991   gbSeconds = 0;\r
23992   gbFrames  = 0;\r
23993   gb_Init_Debugger();\r
23994   gb_Init_Memory();\r
23995   gb_Init_LCD();\r
23996   gb_Init_Interrupts();\r
23997   gb_Init_CPU();\r
23998   gb_Init_Input();\r
23999   gb_ROM_Load('roms/'+fileName);\r
24000   gb_Dump_All();\r
24001   if (Start) $('BR').onclick();\r
24002   else $('BP').onclick();\r
24003 }\r
24004 \r
24005 \r
24006 \r
24007 \r
24008 \r
24009 var gbSeconds = 0;\r
24010 var gbFrames  = 0;\r
24011 \r
24012 function gb_Resize_LCD() {\r
24013   if ($('BX').value=='Size x2') {\r
24014     $('BX').value='Size x3';\r
24015     $('LCD').style.width='320px';\r
24016     $('LCD').style.height='288px';\r
24017   }\r
24018   else if ($('BX').value=='Size x3') {\r
24019     $('BX').value='Size x1';\r
24020     $('LCD').style.width='480px';\r
24021     $('LCD').style.height='432px';\r
24022   }\r
24023   else {\r
24024     $('BX').value='Size x2';\r
24025     $('LCD').style.width='160px';\r
24026     $('LCD').style.height='144px';\r
24027   }\r
24028 }\r
24029 \r
24030 function gb_Show_Fps() {\r
24031   gbFrames+=gbFPS;\r
24032   gbSeconds++;\r
24033   $('STATUS').innerHTML = \r
24034     'Running: '+gbFPS+' '+\r
24035     'fps - Average: '+(gbFrames/gbSeconds).toFixed(2)+' - '+\r
24036     'Bank switches/s: '+gbBankSwitchCount;\r
24037   gbFPS=0;\r
24038   gbBankSwitchCount=0;\r
24039 }\r
24040 \r
24041 function gb_Toggle_Debugger(show) {\r
24042   $('DEBUGGER').style.height=(show)?'auto':'0px';\r
24043 }\r
24044 \r
24045 window.onload = function() {\r
24046   gb_Insert_Cartridge($('CARTRIDGE').value, false);\r
24047   gb_Toggle_Debugger($('TOGGLE_DEBUGGER').checked);\r
24048 }\r
24049 \r
24050 \r
24051 \r
24052 \r
24053 <!--\r
24054 google_ad_client = "pub-7288014189644083";\r
24055 /* jsgb 468x60, creado 30/10/09 */\r
24056 google_ad_slot = "9211520759";\r
24057 google_ad_width = 468;\r
24058 google_ad_height = 60;\r
24059 //-->\r
24060 \r
24061 \r
24062 \r
24063 (function(){var g=true,h=null,j=false,aa=(new Date).getTime(),k=function(a){var b=(new Date).getTime()-aa;b="&dtd="+(b<1E3?b:"M");return a+b};var l=this,ba=function(a,b,c){a=a.split(".");c=c||l;!(a[0]in c)&&c.execScript&&c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)if(!a.length&&b!==undefined)c[d]=b;else c=c[d]?c[d]:(c[d]={})},m=function(a){var b=typeof a;if(b=="object")if(a){if(a instanceof Array||!(a instanceof Object)&&Object.prototype.toString.call(a)=="[object Array]"||typeof a.length=="number"&&typeof a.splice!="undefined"&&typeof a.propertyIsEnumerable!="undefined"&&!a.propertyIsEnumerable("splice"))return"array";\r
24064 if(!(a instanceof Object)&&(Object.prototype.toString.call(a)=="[object Function]"||typeof a.call!="undefined"&&typeof a.propertyIsEnumerable!="undefined"&&!a.propertyIsEnumerable("call")))return"function"}else return"null";else if(b=="function"&&typeof a.call=="undefined")return"object";return b},o=function(a){return m(a)=="array"},ca=function(a){var b=m(a);return b=="array"||b=="object"&&typeof a.length=="number"},p=function(a){return typeof a=="string"},da=function(a){a=m(a);return a=="object"||\r
24065 a=="array"||a=="function"},ea=function(a){var b=m(a);if(b=="object"||b=="array"){if(a.clone)return a.clone.call(a);b=b=="array"?[]:{};for(var c in a)b[c]=ea(a[c]);return b}return a},fa=function(a,b){var c=b||l;if(arguments.length>2){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(c,e)}}else return function(){return a.apply(c,arguments)}},ga=Date.now||function(){return+new Date},q=function(a,\r
24066 b,c){ba(a,b,c)};var r=function(a,b){a=parseFloat(a);return isNaN(a)||a>1||a<0?b:a},s=function(a,b){if(a=="true")return g;if(a=="false")return j;return b},ha=/^([\w-]+\.)*([\w-]{2,})(\:[0-9]+)?$/,t=function(a,b){if(!a)return b;return(a=a.match(ha))?a[0]:b};var ia=function(){return t("","googleads.g.doubleclick.net")},ja=function(){return t("","pagead2.googlesyndication.com")},u=function(){return t("","pagead2.googlesyndication.com")};var v=Array.prototype,ka=v.forEach?function(a,b,c){v.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=p(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)},la=function(){return v.concat.apply(v,arguments)},ma=function(a){if(o(a))return la(a);else{for(var b=[],c=0,d=a.length;c<d;c++)b[c]=a[c];return b}};var w=function(a,b){this.width=a;this.height=b};w.prototype.clone=function(){return new w(this.width,this.height)};w.prototype.toString=function(){return"("+this.width+" x "+this.height+")"};w.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};w.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};\r
24067 w.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};w.prototype.scale=function(a){this.width*=a;this.height*=a;return this};var na=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};var ta=function(a,b){if(b)return a.replace(oa,"&amp;").replace(pa,"&lt;").replace(qa,"&gt;").replace(ra,"&quot;");else{if(!sa.test(a))return a;if(a.indexOf("&")!=-1)a=a.replace(oa,"&amp;");if(a.indexOf("<")!=-1)a=a.replace(pa,"&lt;");if(a.indexOf(">")!=-1)a=a.replace(qa,"&gt;");if(a.indexOf('"')!=-1)a=a.replace(ra,"&quot;");return a}},oa=/&/g,pa=/</g,qa=/>/g,ra=/\"/g,sa=/[&<>\"]/,wa=function(a){if(a.indexOf("&")!=-1)return"document"in l&&a.indexOf("<")==-1?ua(a):va(a);return a},ua=function(a){var b=\r
24068 l.document.createElement("a");b.innerHTML=a;b.normalize&&b.normalize();a=b.firstChild.nodeValue;b.innerHTML="";return a},va=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if(c.charAt(0)=="#"){c=Number("0"+c.substr(1));if(!isNaN(c))return String.fromCharCode(c)}return b}})},xa=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=c==1?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,\r
24069 a.length-1)}return a},ya=function(a,b){var c=0;a=String(a).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split(".");b=String(b).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split(".");for(var d=Math.max(a.length,b.length),e=0;c==0&&e<d;e++){var f=a[e]||"",i=b[e]||"",n=new RegExp("(\\d*)(\\D*)","g"),y=new RegExp("(\\d*)(\\D*)","g");do{var F=n.exec(f)||["","",""],G=y.exec(i)||["","",""];if(F[0].length==0&&G[0].length==0)break;c=F[1].length==0?0:parseInt(F[1],10);var ob=G[1].length==0?0:parseInt(G[1],10);c=x(c,ob)||\r
24070 x(F[2].length==0,G[2].length==0)||x(F[2],G[2])}while(c==0)}return c},x=function(a,b){if(a<b)return-1;else if(a>b)return 1;return 0};ga();var z,A,B,C,D,za,Aa,Ba,Ca,Da=function(){return l.navigator?l.navigator.userAgent:h},E=function(){return l.navigator},Ea=function(){D=C=B=A=z=j;var a;if(a=Da()){var b=E();z=a.indexOf("Opera")==0;A=!z&&a.indexOf("MSIE")!=-1;C=(B=!z&&a.indexOf("WebKit")!=-1)&&a.indexOf("Mobile")!=-1;D=!z&&!B&&b.product=="Gecko"}};Ea();\r
24071 var H=z,I=A,Fa=D,Ga=B,Ha=C,Ia=function(){var a=E();return a&&a.platform||""},Ja=Ia(),Ka=function(){za=Ja.indexOf("Mac")!=-1;Aa=Ja.indexOf("Win")!=-1;Ba=Ja.indexOf("Linux")!=-1;Ca=!!E()&&(E().appVersion||"").indexOf("X11")!=-1};Ka();\r
24072 var La=za,Ma=Aa,Na=Ba,Oa=function(){var a="",b;if(H&&l.opera){a=l.opera.version;a=typeof a=="function"?a():a}else{if(Fa)b=/rv\:([^\);]+)(\)|;)/;else if(I)b=/MSIE\s+([^\);]+)(\)|;)/;else if(Ga)b=/WebKit\/(\S+)/;if(b)a=(a=b.exec(Da()))?a[1]:""}return a},Pa=Oa(),Qa={},J=function(a){return Qa[a]||(Qa[a]=ya(Pa,a)>=0)};var Ra=function(a){return p(a)?document.getElementById(a):a},Sa=Ra,Ua=function(a,b){na(b,function(c,d){if(d=="style")a.style.cssText=c;else if(d=="class")a.className=c;else if(d=="for")a.htmlFor=c;else if(d in Ta)a.setAttribute(Ta[d],c);else a[d]=c})},Ta={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"width",usemap:"useMap",frameborder:"frameBorder",type:"type"},Va=function(a){var b=a.document;if(Ga&&!J("500")&&!Ha){if(typeof a.innerHeight==\r
24073 "undefined")a=window;b=a.innerHeight;var c=a.document.documentElement.scrollHeight;if(a==a.top)if(c<b)b-=15;return new w(a.innerWidth,b)}a=b.compatMode=="CSS1Compat"&&(!H||H&&J("9.50"))?b.documentElement:b.body;return new w(a.clientWidth,a.clientHeight)},Xa=function(){return Wa(document,arguments)},Wa=function(a,b){var c=b[0],d=b[1];if(I&&d&&(d.name||d.type)){c=["<",c];d.name&&c.push(' name="',ta(d.name),'"');if(d.type){c.push(' type="',ta(d.type),'"');d=ea(d);delete d.type}c.push(">");c=c.join("")}var e=\r
24074 a.createElement(c);if(d)if(p(d))e.className=d;else Ua(e,d);if(b.length>2){d=function(i){if(i)e.appendChild(p(i)?a.createTextNode(i):i)};for(c=2;c<b.length;c++){var f=b[c];ca(f)&&!(da(f)&&f.nodeType>0)?ka(Ya(f)?ma(f):f,d):d(f)}}return e},Za=function(a,b){a.appendChild(b)},Ya=function(a){if(a&&typeof a.length=="number")if(da(a))return typeof a.item=="function"||typeof a.item=="string";else if(m(a)=="function")return typeof a.item=="function";return j};var $a=document,K=window;u();var L=function(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.call(h,a[c],c,a)},ab=function(a){if(arguments.length<2)return a.length;for(var b=1,c=arguments.length;b<c;++b)a.push(arguments[b]);return a.length};function M(a){return typeof encodeURIComponent=="function"?encodeURIComponent(a):escape(a)}\r
24075 function bb(a,b,c){var d=document.createElement("script");d.type="text/javascript";if(b)d.onload=b;if(c)d.id=c;d.src=a;var e=document.getElementsByTagName("head")[0];if(!e)return j;window.setTimeout(function(){e.appendChild(d)},0);return g}function cb(a,b){a.google_image_requests||(a.google_image_requests=[]);var c=new Image;c.src=b;a.google_image_requests.push(c)}function db(a){if(a in eb)return eb[a];return eb[a]=navigator.userAgent.toLowerCase().indexOf(a)!=-1}var eb={};\r
24076 function fb(){if(navigator.plugins&&navigator.mimeTypes.length){var a=navigator.plugins["Shockwave Flash"];if(a&&a.description)return a.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){a=3;for(var b=1;b;)try{b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+(a+1));a++}catch(c){b=h}return a.toString()}else if(db("msie")&&!window.opera){b=h;try{b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(d){a=\r
24077 0;try{b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");a=6;b.AllowScriptAccess="always"}catch(e){if(a==6)return a.toString()}try{b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(f){}}if(b){a=b.GetVariable("$version").split(" ")[1];return a.replace(/,/g,".")}}return"0"}function N(a){var b=a.google_ad_format;if(b)return b.indexOf("_0ads")>0;return a.google_ad_output!="html"&&a.google_num_radlinks>0}function O(a){return!!a&&a.indexOf("_sdo")!=-1}\r
24078 function P(a,b){if(!(Math.random()<1.0E-4)){var c=Math.random();if(c<b){b=Math.floor(c/b*a.length);return a[b]}}return""}\r
24079 var gb=function(a){a.u_tz=-(new Date).getTimezoneOffset();a.u_his=window.history.length;a.u_java=navigator.javaEnabled();if(window.screen){a.u_h=window.screen.height;a.u_w=window.screen.width;a.u_ah=window.screen.availHeight;a.u_aw=window.screen.availWidth;a.u_cd=window.screen.colorDepth}if(navigator.plugins)a.u_nplug=navigator.plugins.length;if(navigator.mimeTypes)a.u_nmime=navigator.mimeTypes.length},hb=function(a){var b=K;if(a&&b.top!=b)b=b.top;try{return b.document&&!b.document.body?new w(-1,\r
24080 -1):Va(b||window)}catch(c){return new w(-12245933,-12245933)}},ib=function(a,b){var c=a.length;if(c==0)return 0;b=b||305419896;for(var d=0;d<c;d++){var e=a.charCodeAt(d);b^=(b<<5)+(b>>2)+e&4294967295}return b},jb=function(a){if(a==a.top)return 0;var b=[];b.push(document.URL);a.name&&b.push(a.name);a=g;a=hb(!a);b.push(a.width.toString());b.push(a.height.toString());b=ib(b.join(""));return b>0?b:4294967296+b};var kb={google_ad_channel:"channel",google_ad_host:"host",google_ad_host_channel:"h_ch",google_ad_host_tier_id:"ht_id",google_ad_section:"region",google_ad_type:"ad_type",google_adtest:"adtest",google_allow_expandable_ads:"ea",google_alternate_ad_url:"alternate_ad_url",google_alternate_color:"alt_color",google_bid:"bid",google_city:"gcs",google_color_bg:"color_bg",google_color_border:"color_border",google_color_line:"color_line",google_color_link:"color_link",google_color_text:"color_text",google_color_url:"color_url",\r
24081 google_contents:"contents",google_country:"gl",google_cust_age:"cust_age",google_cust_ch:"cust_ch",google_cust_gender:"cust_gender",google_cust_id:"cust_id",google_cust_interests:"cust_interests",google_cust_job:"cust_job",google_cust_l:"cust_l",google_cust_lh:"cust_lh",google_cust_u_url:"cust_u_url",google_disable_video_autoplay:"disable_video_autoplay",google_ed:"ed",google_encoding:"oe",google_feedback:"feedback_link",google_flash_version:"flash",google_font_face:"f",google_font_size:"fs",google_hints:"hints",\r
24082 google_kw:"kw",google_kw_type:"kw_type",google_language:"hl",google_page_url:"url",google_region:"gr",google_reuse_colors:"reuse_colors",google_safe:"adsafe",google_tag_info:"gut",google_targeting:"targeting",google_ui_features:"ui",google_ui_version:"uiv",google_video_doc_id:"video_doc_id",google_video_product_type:"video_product_type"},lb={google_ad_client:"client",google_ad_format:"format",google_ad_output:"output",google_ad_callback:"callback",google_ad_height:"h",google_ad_override:"google_ad_override",\r
24083 google_ad_slot:"slotname",google_ad_width:"w",google_ctr_threshold:"ctr_t",google_image_size:"image_size",google_last_modified_time:"lmt",google_max_num_ads:"num_ads",google_max_radlink_len:"max_radlink_len",google_num_radlinks:"num_radlinks",google_num_radlinks_per_unit:"num_radlinks_per_unit",google_only_ads_with_video:"only_ads_with_video",google_rl_dest_url:"rl_dest_url",google_rl_filtering:"rl_filtering",google_rl_mode:"rl_mode",google_rt:"rt",google_skip:"skip"},mb={google_only_pyv_ads:"pyv",\r
24084 google_with_pyv_ads:"withpyv"};function nb(a,b){try{return a.top.document.URL==b.URL}catch(c){}return j}function pb(a,b,c,d){c=c||a.google_ad_width;d=d||a.google_ad_height;if(nb(a,b))return j;var e=b.documentElement;if(c&&d){var f=1,i=1;if(a.innerHeight){f=a.innerWidth;i=a.innerHeight}else if(e&&e.clientHeight){f=e.clientWidth;i=e.clientHeight}else if(b.body){f=b.body.clientWidth;i=b.body.clientHeight}if(i>2*d||f>2*c)return j}return g}function qb(a,b){L(b,function(c,d){a["google_"+d]=c})}\r
24085 function rb(a,b){if(!b)return a.URL;return a.referrer}function sb(a,b){if(!b&&a.google_referrer_url==h)return"0";else if(b&&a.google_referrer_url==h)return"1";else if(!b&&a.google_referrer_url!=h)return"2";else if(b&&a.google_referrer_url!=h)return"3";return"4"}function tb(a,b,c,d){a.page_url=rb(c,d);a.page_location=h}function ub(a,b,c,d){a.page_url=b.google_page_url;a.page_location=rb(c,d)||"EMPTY"}\r
24086 function vb(a,b){var c={},d=pb(a,b,a.google_ad_width,a.google_ad_height);c.iframing=sb(a,d);a.google_page_url?ub(c,a,b,d):tb(c,a,b,d);c.last_modified_time=b.URL==c.page_url?Date.parse(b.lastModified)/1E3:h;c.referrer_url=d?a.google_referrer_url:a.google_page_url&&a.google_referrer_url?a.google_referrer_url:b.referrer;return c}function wb(a){var b={},c=a.URL.substring(a.URL.lastIndexOf("http"));b.iframing=h;b.page_url=c;b.page_location=a.URL;b.last_modified_time=h;b.referrer_url=c;return b}\r
24087 function xb(a,b){b=yb(a,b);qb(a,b)}function yb(a,b){return a=a.google_page_url==h&&zb[b.domain]?wb(b):vb(a,b)}var zb={};zb["ad.yieldmanager.com"]=g;var Ab=r("0.0001",0),Bb=r("1",0.01),Cb=r("0.01",0),Db=r("0.01",0),Eb=r("0.008",0),Fb=r("0.01",0),Gb=r("0",0);var Hb=s("false",j),Ib=s("false",j),Jb=s("false",j);var Kb=function(a,b,c){b=fa(b,l,a);a=window.onerror;window.onerror=b;try{c()}catch(d){c=d.toString();var e="";if(d.fileName)e=d.fileName;var f=-1;if(d.lineNumber)f=d.lineNumber;b=b(c,e,f);if(!b)throw d;}window.onerror=a};q("google_protectAndRun",Kb);\r
24088 var Mb=function(a,b,c,d){if(Math.random()<0.01){var e=$a;a=["http://",ja(),"/pagead/gen_204","?id=jserror","&jscb=",Hb?1:0,"&jscd=",Ib?1:0,"&context=",M(a),"&msg=",M(b),"&file=",M(c),"&line=",M(d.toString()),"&url=",M(e.URL.substring(0,512)),"&ref=",M(e.referrer.substring(0,512))];a.push(Lb());cb(K,a.join(""))}return!Jb};q("google_handleError",Mb);\r
24089 var Ob=function(a){Nb|=a},Nb=0,Lb=function(){var a=["&client=",M(K.google_ad_client),"&format=",M(K.google_ad_format),"&slotname=",M(K.google_ad_slot),"&output=",M(K.google_ad_output),"&ad_type=",M(K.google_ad_type)];return a.join("")};var Q="",Rb=function(){if(window.google_ad_frameborder==h)window.google_ad_frameborder=0;if(window.google_ad_output==h)window.google_ad_output="html";if(O(window.google_ad_format)){var a=window.google_ad_format.match(/^(\d+)x(\d+)_.*/);if(a){window.google_ad_width=parseInt(a[1],10);window.google_ad_height=parseInt(a[2],10);window.google_ad_output="html"}}window.google_ad_format=Pb(window.google_ad_format,window.google_ad_output,window.google_ad_width,window.google_ad_height,window.google_ad_slot,\r
24090 !!window.google_override_format);Q=window.google_ad_client||"";window.google_ad_client=Qb(window.google_ad_format,window.google_ad_client);xb(window,document);if(window.google_num_slots_by_channel==h)window.google_num_slots_by_channel={};if(window.google_viewed_host_channels==h)window.google_viewed_host_channels={};if(window.google_num_slots_by_client==h)window.google_num_slots_by_client={};if(window.google_prev_ad_formats_by_region==h)window.google_prev_ad_formats_by_region={};if(window.google_prev_ad_slotnames_by_region==\r
24091 h)window.google_prev_ad_slotnames_by_region={};if(window.google_correlator==h)window.google_correlator=(new Date).getTime();if(window.google_adslot_loaded==h)window.google_adslot_loaded={};if(window.google_adContentsBySlot==h)window.google_adContentsBySlot={};if(window.google_flash_version==h)window.google_flash_version=fb();if(window.google_new_domain_checked==h)window.google_new_domain_checked=0;if(window.google_new_domain_enabled==h)window.google_new_domain_enabled=0;if(!window.google_num_ad_slots)window.google_num_ad_slots=\r
24092 0;if(!window.google_num_0ad_slots)window.google_num_0ad_slots=0;if(!window.google_num_sdo_slots)window.google_num_sdo_slots=0;window.google_ad_section=window.google_ad_section||window.google_ad_region||"";window.google_country=window.google_country||window.google_gl||"";a=(new Date).getTime();if(o(window.google_color_bg))window.google_color_bg=R(window.google_color_bg,a);if(o(window.google_color_text))window.google_color_text=R(window.google_color_text,a);if(o(window.google_color_link))window.google_color_link=\r
24093 R(window.google_color_link,a);if(o(window.google_color_url))window.google_color_url=R(window.google_color_url,a);if(o(window.google_color_border))window.google_color_border=R(window.google_color_border,a);if(o(window.google_color_line))window.google_color_line=R(window.google_color_line,a)},Sb=function(a){L(kb,function(b,c){a[c]=h});L(lb,function(b,c){a[c]=h});L(mb,function(b,c){a[c]=h});a.google_container_id=h;a.google_eids=h;a.google_page_location=h;a.google_referrer_url=h;a.google_ad_region=h;\r
24094 a.google_gl=h},R=function(a,b){Ob(2);return a[b%a.length]},Qb=function(a,b){if(!b)return"";b=b.toLowerCase();return b=O(a)?Tb(b):Ub(b)},Ub=function(a){if(a&&a.substring(0,3)!="ca-")a="ca-"+a;return a},Tb=function(a){if(a&&a.substring(0,7)!="ca-aff-")a="ca-aff-"+a;return a},Pb=function(a,b,c,d,e,f){if(!a&&b=="html")a=c+"x"+d;return a=Vb(a,e,f)?a.toLowerCase():""},Vb=function(a,b,c){if(!a)return j;if(!b)return g;return c};var S=document,T=navigator,U=window;\r
24095 function Wb(){var a=S.cookie,b=Math.round((new Date).getTime()/1E3),c=U.google_analytics_domain_name;c=typeof c=="undefined"?Xb("auto"):Xb(c);var d=a.indexOf("__utma="+c+".")>-1,e=a.indexOf("__utmb="+c)>-1,f=a.indexOf("__utmc="+c)>-1,i={},n=!!U&&!!U.gaGlobal;if(d){a=a.split("__utma="+c+".")[1].split(";")[0].split(".");i.sid=e&&f?a[3]+"":n&&U.gaGlobal.sid?U.gaGlobal.sid:b+"";i.vid=a[0]+"."+a[1];i.from_cookie=g}else{i.sid=n&&U.gaGlobal.sid?U.gaGlobal.sid:b+"";i.vid=n&&U.gaGlobal.vid?U.gaGlobal.vid:\r
24096 (Math.round(Math.random()*2147483647)^Yb()&2147483647)+"."+b;i.from_cookie=j}i.dh=c;i.hid=n&&U.gaGlobal.hid?U.gaGlobal.hid:Math.round(Math.random()*2147483647);return U.gaGlobal=i}\r
24097 function Yb(){var a=S.cookie?S.cookie:"",b=U.history.length,c,d=[T.appName,T.version,T.language?T.language:T.browserLanguage,T.platform,T.userAgent,T.javaEnabled()?1:0].join("");if(U.screen)d+=U.screen.width+"x"+U.screen.height+U.screen.colorDepth;else if(U.java){c=java.awt.Toolkit.getDefaultToolkit().getScreenSize();d+=c.screen.width+"x"+c.screen.height}d+=a;d+=S.referrer?S.referrer:"";for(a=d.length;b>0;)d+=b--^a++;return Zb(d)}\r
24098 function Zb(a){var b=1,c=0,d;if(!(a==undefined||a=="")){b=0;for(d=a.length-1;d>=0;d--){c=a.charCodeAt(d);b=(b<<6&268435455)+c+(c<<14);c=b&266338304;b=c!=0?b^c>>21:b}}return b}function Xb(a){if(!a||a==""||a=="none")return 1;if("auto"==a){a=S.domain;if("www."==a.substring(0,4))a=a.substring(4,a.length)}return Zb(a.toLowerCase())};var V=function(){this.defaultBucket=[];this.layers={};for(var a=0,b=arguments.length;a<b;++a)this.layers[arguments[a]]=""},$b=function(a){for(var b=new V,c=0,d=a.defaultBucket.length;c<d;++c)b.defaultBucket.push(a.defaultBucket[c]);L(a.layers,fa(V.prototype.f,b));return b},ac=function(a){if(!(a&&a.defaultBucket&&a.defaultBucket.push&&a.layers))return j;var b=g,c=function(d,e){if(!(e in a)||typeof d!=typeof a[e])b=j};L(V.prototype,c);return b};V.prototype.f=function(a,b){this.layers[b]=a};\r
24099 V.prototype.z=function(a,b){if(a=="")return"";if(!b){this.defaultBucket.push(a);return a}if(this.layers.hasOwnProperty(b))return this.layers[b]=a;return""};V.prototype.d=function(a,b,c){if(!(Math.random()<1.0E-4)&&this.p(c)){var d=Math.random();if(d<b){b=Math.floor(a.length*d/b);if(a=a[b])return this.z(a,c)}}return""};V.prototype.p=function(a){if(!a)return g;return this.layers.hasOwnProperty(a)&&this.layers[a]==""};V.prototype.a=function(a){if(this.layers.hasOwnProperty(a))return this.layers[a];return""};\r
24100 V.prototype.o=function(){var a=[],b=function(c){c!=""&&a.push(c)};L(this.layers,b);if(this.defaultBucket.length>0&&a.length>0)return this.defaultBucket.join(",")+","+a.join(",");return this.defaultBucket.join(",")+a.join(",")};var bc={google:1,googlegroups:1,gmail:1,googlemail:1,googleimages:1,googleprint:1};function cc(a){a=a.google_page_location||a.google_page_url;if(!a)return j;a=a.toString();if(a.indexOf("http://")==0)a=a.substring(7,a.length);else if(a.indexOf("https://")==0)a=a.substring(8,a.length);var b=a.indexOf("/");if(b==-1)b=a.length;a=a.substring(0,b);a=a.split(".");b=j;if(a.length>=3)b=a[a.length-3]in bc;if(a.length>=2)b=b||a[a.length-2]in bc;return b}\r
24101 function dc(a,b,c){if(cc(a)){a.google_new_domain_checked=1;return j}if(a.google_new_domain_checked==0){var d=Math.random();if(d<=c){c="http://"+ia()+"/pagead/test_domain.js";d="script";b.write("<"+d+' src="'+c+'"></'+d+">");a.google_new_domain_checked=1;return g}}return j}var ec=function(a,b){if(!b)return j;if(b.a("1")=="44901211")return 0==a%2;if(b.a("1")=="44901215")return 0==Math.floor(a/2)%2;if(b.a("1")=="44901216")return 1==Math.floor(a/2)%2;return j};\r
24102 function fc(a,b,c){if(!cc(a)&&a.google_new_domain_enabled==1)return ec(b,c)?"http://"+t("","googleads2.g.doubleclick.net"):"http://"+ia();return"http://"+ja()};var W=function(a){this.A=a;this.i=[];this.h=0;this.b=[];this.t=0;this.c=[];this.r=j;this.j=this.k="";this.q=j};W.prototype.v=function(a,b){var c=this.A[b],d=this.i;this.A[b]=function(e){if(e&&e.length>0){var f=e.length>1?e[1].url:h;d.push([a,wa(e[0].url),f])}c(e)}};W.prototype.u=function(){this.h++};W.prototype.w=function(a){this.b.push(a)};var gc="http://"+u()+"/pagead/osd.js";W.prototype.s=function(){if(!this.r){bb(gc);this.r=g}};\r
24103 W.prototype.l=function(a){if(this.h>0)for(var b=document.getElementsByTagName("iframe"),c=this.q?"google_ads_iframe_":"google_ads_frame",d=0;d<b.length;d++){var e=b.item(d);e.src&&e.name&&e.name.indexOf(c)==0&&a(e,e.src)}};\r
24104 W.prototype.m=function(a){var b=this.i;if(b.length>0)for(var c=document.getElementsByTagName("a"),d=0;d<c.length;d++)for(var e=0;e<b.length;e++)if(c.item(d).href==b[e][1]){var f=c.item(d).parentNode;if(b[e][2])for(var i=f,n=0;n<4;n++){if(i.innerHTML.indexOf(b[e][2])>0){f=i;break}i=i.parentNode}a(f,b[e][0]);b.splice(e,1);break}};W.prototype.n=function(a){for(var b=0;b<this.b.length;b++){var c=this.b[b],d=hc(c);if(d)(d=document.getElementById("google_ads_div_"+d))&&a(d,c)}};\r
24105 W.prototype.e=function(a){this.m(a);this.n(a);this.l(a)};W.prototype.setupOsd=function(a,b,c){this.t=a;this.k=b;this.j=c};W.prototype.getOsdMode=function(){return this.t};W.prototype.getEid=function(){return this.k};W.prototype.getCorrelator=function(){return this.j};W.prototype.g=function(){return this.i.length+this.h+this.b.length};W.prototype.setValidOutputTypes=function(a){this.c=a};\r
24106 W.prototype.registerAdBlockByType=function(a,b,c){if(this.c.length>0){for(var d=0;d<this.c.length;d++)if(this.c[d]==a){this.q=c;if(a=="js")this.v(b,"google_ad_request_done");else if(a=="html")this.u();else a=="json_html"&&this.w(b)}this.s()}};var hc=function(a){if((a=a.match(/[&\?](?:slotname)=([^&]+)/))&&a.length==2)return a[1];return""},ic=function(){window.__google_ad_urls||(window.__google_ad_urls=new W(window));return window.__google_ad_urls};q("Goog_AdSense_getAdAdapterInstance",ic);\r
24107 q("Goog_AdSense_OsdAdapter",W);q("Goog_AdSense_OsdAdapter.prototype.numBlocks",W.prototype.g);q("Goog_AdSense_OsdAdapter.prototype.findBlocks",W.prototype.e);q("Goog_AdSense_OsdAdapter.prototype.getOsdMode",W.prototype.getOsdMode);q("Goog_AdSense_OsdAdapter.prototype.getEid",W.prototype.getEid);q("Goog_AdSense_OsdAdapter.prototype.getCorrelator",W.prototype.getCorrelator);q("Goog_AdSense_OsdAdapter.prototype.setValidOutputTypes",W.prototype.setValidOutputTypes);\r
24108 q("Goog_AdSense_OsdAdapter.prototype.setupOsd",W.prototype.setupOsd);q("Goog_AdSense_OsdAdapter.prototype.registerAdBlockByType",W.prototype.registerAdBlockByType);var jc=function(a,b){var c=a.nodeType==9?a:a.ownerDocument||a.document;if(c.defaultView&&c.defaultView.getComputedStyle)if(a=c.defaultView.getComputedStyle(a,""))return a[b];return h},kc=function(a,b){return jc(a,b)||(a.currentStyle?a.currentStyle[b]:h)||a.style[b]},lc=function(a,b,c,d){if(/^\d+px?$/.test(b))return parseInt(b,10);else{var e=a.style[c],f=a.runtimeStyle[c];a.runtimeStyle[c]=a.currentStyle[c];a.style[c]=b;b=a.style[d];a.style[c]=e;a.runtimeStyle[c]=f;return b}},mc=function(a){var b=\r
24109 a.nodeType==9?a:a.ownerDocument||a.document,c="";if(b.createTextRange){c=b.body.createTextRange();c.moveToElementText(a);c=c.queryCommandValue("FontName")}if(!c){c=kc(a,"fontFamily");if(H&&Na)c=c.replace(/ \[[^\]]*\]/,"")}a=c.split(",");if(a.length>1)c=a[0];return xa(c,"\"'")},nc=/[^\d]+$/,oc=function(a){return(a=a.match(nc))&&a[0]||h},pc={cm:1,"in":1,mm:1,pc:1,pt:1},qc={em:1,ex:1},rc=function(a){var b=kc(a,"fontSize"),c=oc(b);if(b&&"px"==c)return parseInt(b,10);if(I)if(c in pc)return lc(a,b,"left",\r
24110 "pixelLeft");else if(a.parentNode&&a.parentNode.nodeType==1&&c in qc){a=a.parentNode;c=kc(a,"fontSize");return lc(a,b==c?"1em":b,"left","pixelLeft")}c=Xa("span",{style:"visibility:hidden;position:absolute;line-height:0;padding:0;margin:0;border:0;height:1em;"});Za(a,c);b=c.offsetHeight;c&&c.parentNode&&c.parentNode.removeChild(c);return b};var sc,X={};function tc(a){if(a==1)return g;return!X[a]}function uc(a,b){if(!(!a||a==""))if(b==1)if(X[b])X[b]+=","+a;else X[b]=a;else X[b]=a}function vc(){var a=[];L(X,function(b){a.push(b)});return a.join(",")}function wc(a,b){if(o(a))for(var c=0;c<a.length;c++)p(a[c])&&uc(a[c],b)}var Y=j;\r
24111 function xc(a,b){var c="script";Y=yc(a,b);if(!Y)a.google_allow_expandable_ads=j;var d=!zc();Y&&d&&b.write("<"+c+' src="http://'+u()+'/pagead/expansion_embed.js"></'+c+">");a=dc(a,b,Bb);(d=d||a)&&db("msie")&&!window.opera?b.write("<"+c+' src="http://'+u()+'/pagead/render_ads.js"></'+c+">"):b.write("<"+c+'>google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);</'+c+">")}function Z(a){return a!=h?'"'+a+'"':'""'}\r
24112 function Ac(a){var b="google_unique_id";if(a[b])++a[b];else a[b]=1;return a[b]}var Bc=function(a,b){var c=b.slice(-1),d=c=="?"||c=="#"?"":"&",e=[b];b=function(f,i){if(f||f===0||f===j){if(typeof f=="boolean")f=f?1:0;ab(e,d,i,"=",M(f));d="&"}};L(a,b);return e.join("")};function Cc(){var a=I&&J("6"),b=Fa&&J("1.8.1"),c=Ga&&J("525");if(Ma&&(a||b||c))return g;else if(La&&(c||b))return g;else if(Na&&b)return g;return j}\r
24113 function zc(){return(typeof ExpandableAdSlotFactory=="function"||typeof ExpandableAdSlotFactory=="object")&&typeof ExpandableAdSlotFactory.createIframe=="function"}function yc(a,b){if(a.google_allow_expandable_ads===j||!b.body||a.google_ad_output!="html"||pb(a,b)||!Dc(a)||isNaN(a.google_ad_height)||isNaN(a.google_ad_width)||!Cc())return j;return g}function Dc(a){var b=a.google_ad_format;if(O(b))return j;if(N(a)&&b!="468x15_0ads_al")return j;return g}\r
24114 function Ec(){var a;if(K.google_ad_output=="html"&&!(N(K)||O(K.google_ad_format))&&tc(0)){a=["6083035","6083034"];a=P(a,Gb);uc(a,0)}return a=="6083035"}function Fc(a,b){if((a.google_unique_id||0)!=0||O(a.google_ad_format))return"";var c="";a=N(a);if(b=="html"||a)c=P(["36815001","36815002"],Cb);if(c==""&&(b=="js"||a))c=P(["36815003","36815004"],Db);if(c==""&&(b=="html"||b=="js"))c=P(["36813005","36813006"],Eb);return c}\r
24115 function Gc(){var a=ic(),b=window.google_enable_osd,c;if(b===g){c="36813006";Hc(c,a)}else if(b!==j&&tc(0)){c=a.getEid();if(c=="")(c=Fc(window,window.google_ad_output))&&Hc(c,a);else if(c!="36815001"&&c!="36815002"&&c!="36815003"&&c!="36815004"&&c!="36813005"&&c!="36813006")c=""}if(c){uc(c,0);return c}return""}\r
24116 function Hc(a,b){var c=b.getOsdMode(),d=[];switch(a){case "36815004":c=1;d=["js"];break;case "36815002":c=1;d=["html"];break;case "36813006":c=0;d=["html","js"];break}d.length>0&&b.setValidOutputTypes(d);b.setupOsd(c,a,window.google_correlator)}\r
24117 function Ic(a,b,c,d){var e=Ac(a);c=Bc({ifi:e},c);c=c.substring(0,1992);c=c.replace(/%\w?$/,"");var f="script";if((a.google_ad_output=="js"||a.google_ad_output=="json_html")&&(a.google_ad_request_done||a.google_radlink_request_done))b.write("<"+f+' language="JavaScript1.1" src='+Z(k(c))+"></"+f+">");else if(a.google_ad_output=="html")if(Y&&zc()){b=a.google_container_id||d||h;a["google_expandable_ad_slot"+e]=ExpandableAdSlotFactory.createIframe("google_ads_frame"+e,k(c),a.google_ad_width,a.google_ad_height,\r
24118 b)}else{e='<iframe name="google_ads_frame" width='+Z(a.google_ad_width)+" height="+Z(a.google_ad_height)+" frameborder="+Z(a.google_ad_frameborder)+" src="+Z(k(c))+' marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no"></iframe>';a.google_container_id?Jc(a.google_container_id,b,e):b.write(e)}return c}function Kc(a){Sb(a)}\r
24119 function Lc(a){var b=Mc().a("ac1")=="44901217";if(!Nc(b))return j;b=Ec();var c=fc(window,window.google_unique_id||0,Mc());a=Oc(a);b=c+Pc(a.google_ad_format,b);window.google_ad_url=Bc(a,b);return g}\r
24120 var Sc=function(a){a.dt=aa;var b=window.google_prev_ad_formats_by_region,c=window.google_ad_section,d=window.google_ad_format,e=window.google_ad_slot;if(b[c])if(!O(d)){a.prev_fmts=b[c];if(window.google_num_slots_by_client.length>1)a.slot=window.google_num_slots_by_client[Q]}var f=window.google_prev_ad_slotnames_by_region;if(f[c])a.prev_slotnames=f[c].toLowerCase();if(d){if(!O(d))if(b[c])b[c]+=","+d;else b[c]=d}else if(e)if(f[c])f[c]+=","+e;else f[c]=e;a.correlator=window.google_correlator;if(window.google_new_domain_checked==\r
24121 1&&window.google_new_domain_enabled==0)a.dblk=1;if(window.google_ad_channel){b=window.google_num_slots_by_channel;c="";d=window.google_ad_channel.split(Qc);for(e=0;e<d.length;e++){f=d[e];if(b[f])c+=f+"+";else b[f]=1}a.pv_ch=c}if(window.google_ad_host_channel){b=Rc(window.google_ad_host_channel,window.google_viewed_host_channels);a.pv_h_ch=b}if(Hb)a.jscb=1;if(Ib)a.jscd=1;a.frm=window.google_iframing;b=Wb();a.ga_vid=b.vid;a.ga_sid=b.sid;a.ga_hid=b.hid;a.ga_fc=b.from_cookie;a.ga_wpids=window.google_analytics_uacct},\r
24122 Tc=function(a){var b=g;if(b=hb(b)){a.biw=b.width;a.bih=b.height}},Uc=function(a){var b=jb(window);if(b!=0)a.ifk=b.toString()};function Rc(a,b){var c=a.split("|");a=-1;for(var d=[],e=0;e<c.length;e++){var f=c[e].split(Qc);b[e]||(b[e]={});for(var i="",n=0;n<f.length;n++){var y=f[n];if(y!="")if(b[e][y])i+="+"+y;else b[e][y]=1}i=i.slice(1);d[e]=i;if(i!="")a=e}b="";if(a>-1){for(e=0;e<a;e++)b+=d[e]+"|";b+=d[a]}return b}\r
24123 var $=function(){if(window.google_exp_persistent&&ac(window.google_exp_persistent))return window.google_exp_persistent;return new V("1","ac1")};q("google_exp_persistent",$());var Mc=function(){sc||(sc=$b($()));return sc};function Vc(){var a=["44901211","44901215","44901216","44901212"];$().d(a,Ab,"1");a=["44901217","44901218"];$().d(a,Fb,"ac1")}\r
24124 function Wc(){0==(window.google_unique_id||0)&&Vc();var a=Gc(),b=Math.random()<0.01,c=h,d="";if(b){d="google_temp_span";c=Xc(d)}b=Lc(c);c&&c.id==d&&(c&&c.parentNode?c.parentNode.removeChild(c):h);if(b){c=Ic(window,document,window.google_ad_url);a&&ic().registerAdBlockByType(window.google_ad_output,c,j);Kc(window)}}\r
24125 var Yc=function(a){L(lb,function(b,c){a[b]=window[c]});L(kb,function(b,c){a[b]=window[c]});L(mb,function(b,c){a[b]=window[c]})},Zc=function(a){wc(window.google_eids,1);a.eid=vc();var b=Mc().o();if(a.eid.length>0&&b.length>0)a.eid+=",";a.eid+=b};function $c(a,b,c,d){a=Mb(a,b,c,d);xc(window,document);return a}function ad(){Rb()}\r
24126 function bd(a){var b={};a=a.split("?");a=a[a.length-1].split("&");for(var c=0;c<a.length;c++){var d=a[c].split("=");if(d[0])try{b[d[0].toLowerCase()]=d.length>1?window.decodeURIComponent?decodeURIComponent(d[1].replace(/\+/g," ")):unescape(d[1]):""}catch(e){}}return b}function cd(){var a=window,b=bd(document.URL);if(b.google_ad_override){a.google_ad_override=b.google_ad_override;a.google_adtest="on"}}\r
24127 function Jc(a,b,c){if(a)if((a=b.getElementById(a))&&c&&c.length!=""){a.style.visibility="visible";a.innerHTML=c}}\r
24128 var Pc=function(a,b){return a=O(a)?"/pagead/sdo?":b?"/pagead/render_iframe_ads.html#":"/pagead/ads?"},dd=function(a,b){b.dff=mc(a);b.dfs=rc(a)},ed=function(a){a.ref=window.google_referrer_url;a.loc=window.google_page_location},Nc=function(a){var b=window.google_prev_ad_formats_by_region,c=window.google_prev_ad_slotnames_by_region,d=window.google_ad_section;if(O(window.google_ad_format)){window.google_num_sdo_slots+=1;if(!a&&window.google_num_sdo_slots>4)return j}else if(N(window)){window.google_num_0ad_slots+=\r
24129 1;if(!a&&window.google_num_0ad_slots>3)return j}else{window.google_num_ad_slots+=1;if(window.google_num_slots_to_rotate){Ob(1);b[d]=h;c[d]=h;if(window.google_num_slot_to_show==h)window.google_num_slot_to_show=(new Date).getTime()%window.google_num_slots_to_rotate+1;if(window.google_num_slot_to_show!=window.google_num_ad_slots)return j}else if(!a&&window.google_num_ad_slots>6&&d=="")return j}a=window.google_num_slots_by_client;if(a[Q])a[Q]+=1;else{a[Q]=1;a.length+=1}return g},Oc=function(a){var b=\r
24130 {};Yc(b);Sc(b);gb(b);a&&dd(a,b);Tc(b);Uc(b);Zc(b);ed(b);b.fu=Nb;return b},Xc=function(a){var b=window.google_container_id&&Sa(window.google_container_id)||Sa(a);if(!b&&!window.google_container_id&&a){document.write("<span id="+a+"></span>");b=Sa(a)}return b},Qc=/[+, ]/;window.google_render_ad=Wc;function fd(){if(Jb&&typeof K.alternateShowAds=="function")K.alternateShowAds.call(h);else{cd();Kb("show_ads.google_init_globals",$c,ad);xc(window,document)}}Kb("show_ads.main",Mb,fd);})()\r
24131 </script>\r
24132 \r
24133 \r
24134 <script id="mochikit" type="x">\r
24135 /***\r
24136 \r
24137     MochiKit.MochiKit 1.4.2 : PACKED VERSION\r
24138 \r
24139     THIS FILE IS AUTOMATICALLY GENERATED.  If creating patches, please\r
24140     diff against the source tree, not this file.\r
24141 \r
24142     See <http://mochikit.com/> for documentation, downloads, license, etc.\r
24143 \r
24144     (c) 2005 Bob Ippolito.  All rights Reserved.\r
24145 \r
24146 ***/\r
24147 \r
24148 if(typeof (dojo)!="undefined"){\r
24149 dojo.provide("MochiKit.Base");\r
24150 }\r
24151 if(typeof (MochiKit)=="undefined"){\r
24152 MochiKit={};\r
24153 }\r
24154 if(typeof (MochiKit.Base)=="undefined"){\r
24155 MochiKit.Base={};\r
24156 }\r
24157 if(typeof (MochiKit.__export__)=="undefined"){\r
24158 MochiKit.__export__=(MochiKit.__compat__||(typeof (JSAN)=="undefined"&&typeof (dojo)=="undefined"));\r
24159 }\r
24160 MochiKit.Base.VERSION="1.4.2";\r
24161 MochiKit.Base.NAME="MochiKit.Base";\r
24162 MochiKit.Base.update=function(_1,_2){\r
24163 if(_1===null||_1===undefined){\r
24164 _1={};\r
24165 }\r
24166 for(var i=1;i<arguments.length;i++){\r
24167 var o=arguments[i];\r
24168 if(typeof (o)!="undefined"&&o!==null){\r
24169 for(var k in o){\r
24170 _1[k]=o[k];\r
24171 }\r
24172 }\r
24173 }\r
24174 return _1;\r
24175 };\r
24176 MochiKit.Base.update(MochiKit.Base,{__repr__:function(){\r
24177 return "["+this.NAME+" "+this.VERSION+"]";\r
24178 },toString:function(){\r
24179 return this.__repr__();\r
24180 },camelize:function(_6){\r
24181 var _7=_6.split("-");\r
24182 var cc=_7[0];\r
24183 for(var i=1;i<_7.length;i++){\r
24184 cc+=_7[i].charAt(0).toUpperCase()+_7[i].substring(1);\r
24185 }\r
24186 return cc;\r
24187 },counter:function(n){\r
24188 if(arguments.length===0){\r
24189 n=1;\r
24190 }\r
24191 return function(){\r
24192 return n++;\r
24193 };\r
24194 },clone:function(_b){\r
24195 var me=arguments.callee;\r
24196 if(arguments.length==1){\r
24197 me.prototype=_b;\r
24198 return new me();\r
24199 }\r
24200 },_deps:function(_d,_e){\r
24201 if(!(_d in MochiKit)){\r
24202 MochiKit[_d]={};\r
24203 }\r
24204 if(typeof (dojo)!="undefined"){\r
24205 dojo.provide("MochiKit."+_d);\r
24206 }\r
24207 for(var i=0;i<_e.length;i++){\r
24208 if(typeof (dojo)!="undefined"){\r
24209 dojo.require("MochiKit."+_e[i]);\r
24210 }\r
24211 if(typeof (JSAN)!="undefined"){\r
24212 JSAN.use("MochiKit."+_e[i],[]);\r
24213 }\r
24214 if(!(_e[i] in MochiKit)){\r
24215 throw "MochiKit."+_d+" depends on MochiKit."+_e[i]+"!";\r
24216 }\r
24217 }\r
24218 },_flattenArray:function(res,lst){\r
24219 for(var i=0;i<lst.length;i++){\r
24220 var o=lst[i];\r
24221 if(o instanceof Array){\r
24222 arguments.callee(res,o);\r
24223 }else{\r
24224 res.push(o);\r
24225 }\r
24226 }\r
24227 return res;\r
24228 },flattenArray:function(lst){\r
24229 return MochiKit.Base._flattenArray([],lst);\r
24230 },flattenArguments:function(lst){\r
24231 var res=[];\r
24232 var m=MochiKit.Base;\r
24233 var _18=m.extend(null,arguments);\r
24234 while(_18.length){\r
24235 var o=_18.shift();\r
24236 if(o&&typeof (o)=="object"&&typeof (o.length)=="number"){\r
24237 for(var i=o.length-1;i>=0;i--){\r
24238 _18.unshift(o[i]);\r
24239 }\r
24240 }else{\r
24241 res.push(o);\r
24242 }\r
24243 }\r
24244 return res;\r
24245 },extend:function(_1b,obj,_1d){\r
24246 if(!_1d){\r
24247 _1d=0;\r
24248 }\r
24249 if(obj){\r
24250 var l=obj.length;\r
24251 if(typeof (l)!="number"){\r
24252 if(typeof (MochiKit.Iter)!="undefined"){\r
24253 obj=MochiKit.Iter.list(obj);\r
24254 l=obj.length;\r
24255 }else{\r
24256 throw new TypeError("Argument not an array-like and MochiKit.Iter not present");\r
24257 }\r
24258 }\r
24259 if(!_1b){\r
24260 _1b=[];\r
24261 }\r
24262 for(var i=_1d;i<l;i++){\r
24263 _1b.push(obj[i]);\r
24264 }\r
24265 }\r
24266 return _1b;\r
24267 },updatetree:function(_20,obj){\r
24268 if(_20===null||_20===undefined){\r
24269 _20={};\r
24270 }\r
24271 for(var i=1;i<arguments.length;i++){\r
24272 var o=arguments[i];\r
24273 if(typeof (o)!="undefined"&&o!==null){\r
24274 for(var k in o){\r
24275 var v=o[k];\r
24276 if(typeof (_20[k])=="object"&&typeof (v)=="object"){\r
24277 arguments.callee(_20[k],v);\r
24278 }else{\r
24279 _20[k]=v;\r
24280 }\r
24281 }\r
24282 }\r
24283 }\r
24284 return _20;\r
24285 },setdefault:function(_26,obj){\r
24286 if(_26===null||_26===undefined){\r
24287 _26={};\r
24288 }\r
24289 for(var i=1;i<arguments.length;i++){\r
24290 var o=arguments[i];\r
24291 for(var k in o){\r
24292 if(!(k in _26)){\r
24293 _26[k]=o[k];\r
24294 }\r
24295 }\r
24296 }\r
24297 return _26;\r
24298 },keys:function(obj){\r
24299 var _2c=[];\r
24300 for(var _2d in obj){\r
24301 _2c.push(_2d);\r
24302 }\r
24303 return _2c;\r
24304 },values:function(obj){\r
24305 var _2f=[];\r
24306 for(var _30 in obj){\r
24307 _2f.push(obj[_30]);\r
24308 }\r
24309 return _2f;\r
24310 },items:function(obj){\r
24311 var _32=[];\r
24312 var e;\r
24313 for(var _34 in obj){\r
24314 var v;\r
24315 try{\r
24316 v=obj[_34];\r
24317 }\r
24318 catch(e){\r
24319 continue;\r
24320 }\r
24321 _32.push([_34,v]);\r
24322 }\r
24323 return _32;\r
24324 },_newNamedError:function(_36,_37,_38){\r
24325 _38.prototype=new MochiKit.Base.NamedError(_36.NAME+"."+_37);\r
24326 _36[_37]=_38;\r
24327 },operator:{truth:function(a){\r
24328 return !!a;\r
24329 },lognot:function(a){\r
24330 return !a;\r
24331 },identity:function(a){\r
24332 return a;\r
24333 },not:function(a){\r
24334 return ~a;\r
24335 },neg:function(a){\r
24336 return -a;\r
24337 },add:function(a,b){\r
24338 return a+b;\r
24339 },sub:function(a,b){\r
24340 return a-b;\r
24341 },div:function(a,b){\r
24342 return a/b;\r
24343 },mod:function(a,b){\r
24344 return a%b;\r
24345 },mul:function(a,b){\r
24346 return a*b;\r
24347 },and:function(a,b){\r
24348 return a&b;\r
24349 },or:function(a,b){\r
24350 return a|b;\r
24351 },xor:function(a,b){\r
24352 return a^b;\r
24353 },lshift:function(a,b){\r
24354 return a<<b;\r
24355 },rshift:function(a,b){\r
24356 return a>>b;\r
24357 },zrshift:function(a,b){\r
24358 return a>>>b;\r
24359 },eq:function(a,b){\r
24360 return a==b;\r
24361 },ne:function(a,b){\r
24362 return a!=b;\r
24363 },gt:function(a,b){\r
24364 return a>b;\r
24365 },ge:function(a,b){\r
24366 return a>=b;\r
24367 },lt:function(a,b){\r
24368 return a<b;\r
24369 },le:function(a,b){\r
24370 return a<=b;\r
24371 },seq:function(a,b){\r
24372 return a===b;\r
24373 },sne:function(a,b){\r
24374 return a!==b;\r
24375 },ceq:function(a,b){\r
24376 return MochiKit.Base.compare(a,b)===0;\r
24377 },cne:function(a,b){\r
24378 return MochiKit.Base.compare(a,b)!==0;\r
24379 },cgt:function(a,b){\r
24380 return MochiKit.Base.compare(a,b)==1;\r
24381 },cge:function(a,b){\r
24382 return MochiKit.Base.compare(a,b)!=-1;\r
24383 },clt:function(a,b){\r
24384 return MochiKit.Base.compare(a,b)==-1;\r
24385 },cle:function(a,b){\r
24386 return MochiKit.Base.compare(a,b)!=1;\r
24387 },logand:function(a,b){\r
24388 return a&&b;\r
24389 },logor:function(a,b){\r
24390 return a||b;\r
24391 },contains:function(a,b){\r
24392 return b in a;\r
24393 }},forwardCall:function(_76){\r
24394 return function(){\r
24395 return this[_76].apply(this,arguments);\r
24396 };\r
24397 },itemgetter:function(_77){\r
24398 return function(arg){\r
24399 return arg[_77];\r
24400 };\r
24401 },typeMatcher:function(){\r
24402 var _79={};\r
24403 for(var i=0;i<arguments.length;i++){\r
24404 var typ=arguments[i];\r
24405 _79[typ]=typ;\r
24406 }\r
24407 return function(){\r
24408 for(var i=0;i<arguments.length;i++){\r
24409 if(!(typeof (arguments[i]) in _79)){\r
24410 return false;\r
24411 }\r
24412 }\r
24413 return true;\r
24414 };\r
24415 },isNull:function(){\r
24416 for(var i=0;i<arguments.length;i++){\r
24417 if(arguments[i]!==null){\r
24418 return false;\r
24419 }\r
24420 }\r
24421 return true;\r
24422 },isUndefinedOrNull:function(){\r
24423 for(var i=0;i<arguments.length;i++){\r
24424 var o=arguments[i];\r
24425 if(!(typeof (o)=="undefined"||o===null)){\r
24426 return false;\r
24427 }\r
24428 }\r
24429 return true;\r
24430 },isEmpty:function(obj){\r
24431 return !MochiKit.Base.isNotEmpty.apply(this,arguments);\r
24432 },isNotEmpty:function(obj){\r
24433 for(var i=0;i<arguments.length;i++){\r
24434 var o=arguments[i];\r
24435 if(!(o&&o.length)){\r
24436 return false;\r
24437 }\r
24438 }\r
24439 return true;\r
24440 },isArrayLike:function(){\r
24441 for(var i=0;i<arguments.length;i++){\r
24442 var o=arguments[i];\r
24443 var typ=typeof (o);\r
24444 if((typ!="object"&&!(typ=="function"&&typeof (o.item)=="function"))||o===null||typeof (o.length)!="number"||o.nodeType===3||o.nodeType===4){\r
24445 return false;\r
24446 }\r
24447 }\r
24448 return true;\r
24449 },isDateLike:function(){\r
24450 for(var i=0;i<arguments.length;i++){\r
24451 var o=arguments[i];\r
24452 if(typeof (o)!="object"||o===null||typeof (o.getTime)!="function"){\r
24453 return false;\r
24454 }\r
24455 }\r
24456 return true;\r
24457 },xmap:function(fn){\r
24458 if(fn===null){\r
24459 return MochiKit.Base.extend(null,arguments,1);\r
24460 }\r
24461 var _8a=[];\r
24462 for(var i=1;i<arguments.length;i++){\r
24463 _8a.push(fn(arguments[i]));\r
24464 }\r
24465 return _8a;\r
24466 },map:function(fn,lst){\r
24467 var m=MochiKit.Base;\r
24468 var itr=MochiKit.Iter;\r
24469 var _90=m.isArrayLike;\r
24470 if(arguments.length<=2){\r
24471 if(!_90(lst)){\r
24472 if(itr){\r
24473 lst=itr.list(lst);\r
24474 if(fn===null){\r
24475 return lst;\r
24476 }\r
24477 }else{\r
24478 throw new TypeError("Argument not an array-like and MochiKit.Iter not present");\r
24479 }\r
24480 }\r
24481 if(fn===null){\r
24482 return m.extend(null,lst);\r
24483 }\r
24484 var _91=[];\r
24485 for(var i=0;i<lst.length;i++){\r
24486 _91.push(fn(lst[i]));\r
24487 }\r
24488 return _91;\r
24489 }else{\r
24490 if(fn===null){\r
24491 fn=Array;\r
24492 }\r
24493 var _93=null;\r
24494 for(i=1;i<arguments.length;i++){\r
24495 if(!_90(arguments[i])){\r
24496 if(itr){\r
24497 return itr.list(itr.imap.apply(null,arguments));\r
24498 }else{\r
24499 throw new TypeError("Argument not an array-like and MochiKit.Iter not present");\r
24500 }\r
24501 }\r
24502 var l=arguments[i].length;\r
24503 if(_93===null||_93>l){\r
24504 _93=l;\r
24505 }\r
24506 }\r
24507 _91=[];\r
24508 for(i=0;i<_93;i++){\r
24509 var _95=[];\r
24510 for(var j=1;j<arguments.length;j++){\r
24511 _95.push(arguments[j][i]);\r
24512 }\r
24513 _91.push(fn.apply(this,_95));\r
24514 }\r
24515 return _91;\r
24516 }\r
24517 },xfilter:function(fn){\r
24518 var _98=[];\r
24519 if(fn===null){\r
24520 fn=MochiKit.Base.operator.truth;\r
24521 }\r
24522 for(var i=1;i<arguments.length;i++){\r
24523 var o=arguments[i];\r
24524 if(fn(o)){\r
24525 _98.push(o);\r
24526 }\r
24527 }\r
24528 return _98;\r
24529 },filter:function(fn,lst,_9d){\r
24530 var _9e=[];\r
24531 var m=MochiKit.Base;\r
24532 if(!m.isArrayLike(lst)){\r
24533 if(MochiKit.Iter){\r
24534 lst=MochiKit.Iter.list(lst);\r
24535 }else{\r
24536 throw new TypeError("Argument not an array-like and MochiKit.Iter not present");\r
24537 }\r
24538 }\r
24539 if(fn===null){\r
24540 fn=m.operator.truth;\r
24541 }\r
24542 if(typeof (Array.prototype.filter)=="function"){\r
24543 return Array.prototype.filter.call(lst,fn,_9d);\r
24544 }else{\r
24545 if(typeof (_9d)=="undefined"||_9d===null){\r
24546 for(var i=0;i<lst.length;i++){\r
24547 var o=lst[i];\r
24548 if(fn(o)){\r
24549 _9e.push(o);\r
24550 }\r
24551 }\r
24552 }else{\r
24553 for(i=0;i<lst.length;i++){\r
24554 o=lst[i];\r
24555 if(fn.call(_9d,o)){\r
24556 _9e.push(o);\r
24557 }\r
24558 }\r
24559 }\r
24560 }\r
24561 return _9e;\r
24562 },_wrapDumbFunction:function(_a2){\r
24563 return function(){\r
24564 switch(arguments.length){\r
24565 case 0:\r
24566 return _a2();\r
24567 case 1:\r
24568 return _a2(arguments[0]);\r
24569 case 2:\r
24570 return _a2(arguments[0],arguments[1]);\r
24571 case 3:\r
24572 return _a2(arguments[0],arguments[1],arguments[2]);\r
24573 }\r
24574 var _a3=[];\r
24575 for(var i=0;i<arguments.length;i++){\r
24576 _a3.push("arguments["+i+"]");\r
24577 }\r
24578 return eval("(func("+_a3.join(",")+"))");\r
24579 };\r
24580 },methodcaller:function(_a5){\r
24581 var _a6=MochiKit.Base.extend(null,arguments,1);\r
24582 if(typeof (_a5)=="function"){\r
24583 return function(obj){\r
24584 return _a5.apply(obj,_a6);\r
24585 };\r
24586 }else{\r
24587 return function(obj){\r
24588 return obj[_a5].apply(obj,_a6);\r
24589 };\r
24590 }\r
24591 },method:function(_a9,_aa){\r
24592 var m=MochiKit.Base;\r
24593 return m.bind.apply(this,m.extend([_aa,_a9],arguments,2));\r
24594 },compose:function(f1,f2){\r
24595 var _ae=[];\r
24596 var m=MochiKit.Base;\r
24597 if(arguments.length===0){\r
24598 throw new TypeError("compose() requires at least one argument");\r
24599 }\r
24600 for(var i=0;i<arguments.length;i++){\r
24601 var fn=arguments[i];\r
24602 if(typeof (fn)!="function"){\r
24603 throw new TypeError(m.repr(fn)+" is not a function");\r
24604 }\r
24605 _ae.push(fn);\r
24606 }\r
24607 return function(){\r
24608 var _b2=arguments;\r
24609 for(var i=_ae.length-1;i>=0;i--){\r
24610 _b2=[_ae[i].apply(this,_b2)];\r
24611 }\r
24612 return _b2[0];\r
24613 };\r
24614 },bind:function(_b4,_b5){\r
24615 if(typeof (_b4)=="string"){\r
24616 _b4=_b5[_b4];\r
24617 }\r
24618 var _b6=_b4.im_func;\r
24619 var _b7=_b4.im_preargs;\r
24620 var _b8=_b4.im_self;\r
24621 var m=MochiKit.Base;\r
24622 if(typeof (_b4)=="function"&&typeof (_b4.apply)=="undefined"){\r
24623 _b4=m._wrapDumbFunction(_b4);\r
24624 }\r
24625 if(typeof (_b6)!="function"){\r
24626 _b6=_b4;\r
24627 }\r
24628 if(typeof (_b5)!="undefined"){\r
24629 _b8=_b5;\r
24630 }\r
24631 if(typeof (_b7)=="undefined"){\r
24632 _b7=[];\r
24633 }else{\r
24634 _b7=_b7.slice();\r
24635 }\r
24636 m.extend(_b7,arguments,2);\r
24637 var _ba=function(){\r
24638 var _bb=arguments;\r
24639 var me=arguments.callee;\r
24640 if(me.im_preargs.length>0){\r
24641 _bb=m.concat(me.im_preargs,_bb);\r
24642 }\r
24643 var _bd=me.im_self;\r
24644 if(!_bd){\r
24645 _bd=this;\r
24646 }\r
24647 return me.im_func.apply(_bd,_bb);\r
24648 };\r
24649 _ba.im_self=_b8;\r
24650 _ba.im_func=_b6;\r
24651 _ba.im_preargs=_b7;\r
24652 return _ba;\r
24653 },bindLate:function(_be,_bf){\r
24654 var m=MochiKit.Base;\r
24655 if(typeof (_be)!="string"){\r
24656 return m.bind.apply(this,arguments);\r
24657 }\r
24658 var _c1=m.extend([],arguments,2);\r
24659 var _c2=function(){\r
24660 var _c3=arguments;\r
24661 var me=arguments.callee;\r
24662 if(me.im_preargs.length>0){\r
24663 _c3=m.concat(me.im_preargs,_c3);\r
24664 }\r
24665 var _c5=me.im_self;\r
24666 if(!_c5){\r
24667 _c5=this;\r
24668 }\r
24669 return _c5[me.im_func].apply(_c5,_c3);\r
24670 };\r
24671 _c2.im_self=_bf;\r
24672 _c2.im_func=_be;\r
24673 _c2.im_preargs=_c1;\r
24674 return _c2;\r
24675 },bindMethods:function(_c6){\r
24676 var _c7=MochiKit.Base.bind;\r
24677 for(var k in _c6){\r
24678 var _c9=_c6[k];\r
24679 if(typeof (_c9)=="function"){\r
24680 _c6[k]=_c7(_c9,_c6);\r
24681 }\r
24682 }\r
24683 },registerComparator:function(_ca,_cb,_cc,_cd){\r
24684 MochiKit.Base.comparatorRegistry.register(_ca,_cb,_cc,_cd);\r
24685 },_primitives:{"boolean":true,"string":true,"number":true},compare:function(a,b){\r
24686 if(a==b){\r
24687 return 0;\r
24688 }\r
24689 var _d0=(typeof (a)=="undefined"||a===null);\r
24690 var _d1=(typeof (b)=="undefined"||b===null);\r
24691 if(_d0&&_d1){\r
24692 return 0;\r
24693 }else{\r
24694 if(_d0){\r
24695 return -1;\r
24696 }else{\r
24697 if(_d1){\r
24698 return 1;\r
24699 }\r
24700 }\r
24701 }\r
24702 var m=MochiKit.Base;\r
24703 var _d3=m._primitives;\r
24704 if(!(typeof (a) in _d3&&typeof (b) in _d3)){\r
24705 try{\r
24706 return m.comparatorRegistry.match(a,b);\r
24707 }\r
24708 catch(e){\r
24709 if(e!=m.NotFound){\r
24710 throw e;\r
24711 }\r
24712 }\r
24713 }\r
24714 if(a<b){\r
24715 return -1;\r
24716 }else{\r
24717 if(a>b){\r
24718 return 1;\r
24719 }\r
24720 }\r
24721 var _d4=m.repr;\r
24722 throw new TypeError(_d4(a)+" and "+_d4(b)+" can not be compared");\r
24723 },compareDateLike:function(a,b){\r
24724 return MochiKit.Base.compare(a.getTime(),b.getTime());\r
24725 },compareArrayLike:function(a,b){\r
24726 var _d9=MochiKit.Base.compare;\r
24727 var _da=a.length;\r
24728 var _db=0;\r
24729 if(_da>b.length){\r
24730 _db=1;\r
24731 _da=b.length;\r
24732 }else{\r
24733 if(_da<b.length){\r
24734 _db=-1;\r
24735 }\r
24736 }\r
24737 for(var i=0;i<_da;i++){\r
24738 var cmp=_d9(a[i],b[i]);\r
24739 if(cmp){\r
24740 return cmp;\r
24741 }\r
24742 }\r
24743 return _db;\r
24744 },registerRepr:function(_de,_df,_e0,_e1){\r
24745 MochiKit.Base.reprRegistry.register(_de,_df,_e0,_e1);\r
24746 },repr:function(o){\r
24747 if(typeof (o)=="undefined"){\r
24748 return "undefined";\r
24749 }else{\r
24750 if(o===null){\r
24751 return "null";\r
24752 }\r
24753 }\r
24754 try{\r
24755 if(typeof (o.__repr__)=="function"){\r
24756 return o.__repr__();\r
24757 }else{\r
24758 if(typeof (o.repr)=="function"&&o.repr!=arguments.callee){\r
24759 return o.repr();\r
24760 }\r
24761 }\r
24762 return MochiKit.Base.reprRegistry.match(o);\r
24763 }\r
24764 catch(e){\r
24765 if(typeof (o.NAME)=="string"&&(o.toString==Function.prototype.toString||o.toString==Object.prototype.toString)){\r
24766 return o.NAME;\r
24767 }\r
24768 }\r
24769 try{\r
24770 var _e3=(o+"");\r
24771 }\r
24772 catch(e){\r
24773 return "["+typeof (o)+"]";\r
24774 }\r
24775 if(typeof (o)=="function"){\r
24776 _e3=_e3.replace(/^\s+/,"").replace(/\s+/g," ");\r
24777 _e3=_e3.replace(/,(\S)/,", $1");\r
24778 var idx=_e3.indexOf("{");\r
24779 if(idx!=-1){\r
24780 _e3=_e3.substr(0,idx)+"{...}";\r
24781 }\r
24782 }\r
24783 return _e3;\r
24784 },reprArrayLike:function(o){\r
24785 var m=MochiKit.Base;\r
24786 return "["+m.map(m.repr,o).join(", ")+"]";\r
24787 },reprString:function(o){\r
24788 return ("\""+o.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\v]/g,"\\v").replace(/[\r]/g,"\\r");\r
24789 },reprNumber:function(o){\r
24790 return o+"";\r
24791 },registerJSON:function(_e9,_ea,_eb,_ec){\r
24792 MochiKit.Base.jsonRegistry.register(_e9,_ea,_eb,_ec);\r
24793 },evalJSON:function(){\r
24794 return eval("("+MochiKit.Base._filterJSON(arguments[0])+")");\r
24795 },_filterJSON:function(s){\r
24796 var m=s.match(/^\s*\/\*(.*)\*\/\s*$/);\r
24797 if(m){\r
24798 return m[1];\r
24799 }\r
24800 return s;\r
24801 },serializeJSON:function(o){\r
24802 var _f0=typeof (o);\r
24803 if(_f0=="number"||_f0=="boolean"){\r
24804 return o+"";\r
24805 }else{\r
24806 if(o===null){\r
24807 return "null";\r
24808 }else{\r
24809 if(_f0=="string"){\r
24810 var res="";\r
24811 for(var i=0;i<o.length;i++){\r
24812 var c=o.charAt(i);\r
24813 if(c=="\""){\r
24814 res+="\\\"";\r
24815 }else{\r
24816 if(c=="\\"){\r
24817 res+="\\\\";\r
24818 }else{\r
24819 if(c=="\b"){\r
24820 res+="\\b";\r
24821 }else{\r
24822 if(c=="\f"){\r
24823 res+="\\f";\r
24824 }else{\r
24825 if(c=="\n"){\r
24826 res+="\\n";\r
24827 }else{\r
24828 if(c=="\r"){\r
24829 res+="\\r";\r
24830 }else{\r
24831 if(c=="\t"){\r
24832 res+="\\t";\r
24833 }else{\r
24834 if(o.charCodeAt(i)<=31){\r
24835 var hex=o.charCodeAt(i).toString(16);\r
24836 if(hex.length<2){\r
24837 hex="0"+hex;\r
24838 }\r
24839 res+="\\u00"+hex.toUpperCase();\r
24840 }else{\r
24841 res+=c;\r
24842 }\r
24843 }\r
24844 }\r
24845 }\r
24846 }\r
24847 }\r
24848 }\r
24849 }\r
24850 }\r
24851 return "\""+res+"\"";\r
24852 }\r
24853 }\r
24854 }\r
24855 var me=arguments.callee;\r
24856 var _f6;\r
24857 if(typeof (o.__json__)=="function"){\r
24858 _f6=o.__json__();\r
24859 if(o!==_f6){\r
24860 return me(_f6);\r
24861 }\r
24862 }\r
24863 if(typeof (o.json)=="function"){\r
24864 _f6=o.json();\r
24865 if(o!==_f6){\r
24866 return me(_f6);\r
24867 }\r
24868 }\r
24869 if(_f0!="function"&&typeof (o.length)=="number"){\r
24870 var res=[];\r
24871 for(var i=0;i<o.length;i++){\r
24872 var val=me(o[i]);\r
24873 if(typeof (val)!="string"){\r
24874 continue;\r
24875 }\r
24876 res.push(val);\r
24877 }\r
24878 return "["+res.join(", ")+"]";\r
24879 }\r
24880 var m=MochiKit.Base;\r
24881 try{\r
24882 _f6=m.jsonRegistry.match(o);\r
24883 if(o!==_f6){\r
24884 return me(_f6);\r
24885 }\r
24886 }\r
24887 catch(e){\r
24888 if(e!=m.NotFound){\r
24889 throw e;\r
24890 }\r
24891 }\r
24892 if(_f0=="undefined"){\r
24893 throw new TypeError("undefined can not be serialized as JSON");\r
24894 }\r
24895 if(_f0=="function"){\r
24896 return null;\r
24897 }\r
24898 res=[];\r
24899 for(var k in o){\r
24900 var _fa;\r
24901 if(typeof (k)=="number"){\r
24902 _fa="\""+k+"\"";\r
24903 }else{\r
24904 if(typeof (k)=="string"){\r
24905 _fa=me(k);\r
24906 }else{\r
24907 continue;\r
24908 }\r
24909 }\r
24910 val=me(o[k]);\r
24911 if(typeof (val)!="string"){\r
24912 continue;\r
24913 }\r
24914 res.push(_fa+":"+val);\r
24915 }\r
24916 return "{"+res.join(", ")+"}";\r
24917 },objEqual:function(a,b){\r
24918 return (MochiKit.Base.compare(a,b)===0);\r
24919 },arrayEqual:function(_fd,arr){\r
24920 if(_fd.length!=arr.length){\r
24921 return false;\r
24922 }\r
24923 return (MochiKit.Base.compare(_fd,arr)===0);\r
24924 },concat:function(){\r
24925 var _ff=[];\r
24926 var _100=MochiKit.Base.extend;\r
24927 for(var i=0;i<arguments.length;i++){\r
24928 _100(_ff,arguments[i]);\r
24929 }\r
24930 return _ff;\r
24931 },keyComparator:function(key){\r
24932 var m=MochiKit.Base;\r
24933 var _104=m.compare;\r
24934 if(arguments.length==1){\r
24935 return function(a,b){\r
24936 return _104(a[key],b[key]);\r
24937 };\r
24938 }\r
24939 var _107=m.extend(null,arguments);\r
24940 return function(a,b){\r
24941 var rval=0;\r
24942 for(var i=0;(rval===0)&&(i<_107.length);i++){\r
24943 var key=_107[i];\r
24944 rval=_104(a[key],b[key]);\r
24945 }\r
24946 return rval;\r
24947 };\r
24948 },reverseKeyComparator:function(key){\r
24949 var _10e=MochiKit.Base.keyComparator.apply(this,arguments);\r
24950 return function(a,b){\r
24951 return _10e(b,a);\r
24952 };\r
24953 },partial:function(func){\r
24954 var m=MochiKit.Base;\r
24955 return m.bind.apply(this,m.extend([func,undefined],arguments,1));\r
24956 },listMinMax:function(_113,lst){\r
24957 if(lst.length===0){\r
24958 return null;\r
24959 }\r
24960 var cur=lst[0];\r
24961 var _116=MochiKit.Base.compare;\r
24962 for(var i=1;i<lst.length;i++){\r
24963 var o=lst[i];\r
24964 if(_116(o,cur)==_113){\r
24965 cur=o;\r
24966 }\r
24967 }\r
24968 return cur;\r
24969 },objMax:function(){\r
24970 return MochiKit.Base.listMinMax(1,arguments);\r
24971 },objMin:function(){\r
24972 return MochiKit.Base.listMinMax(-1,arguments);\r
24973 },findIdentical:function(lst,_11a,_11b,end){\r
24974 if(typeof (end)=="undefined"||end===null){\r
24975 end=lst.length;\r
24976 }\r
24977 if(typeof (_11b)=="undefined"||_11b===null){\r
24978 _11b=0;\r
24979 }\r
24980 for(var i=_11b;i<end;i++){\r
24981 if(lst[i]===_11a){\r
24982 return i;\r
24983 }\r
24984 }\r
24985 return -1;\r
24986 },mean:function(){\r
24987 var sum=0;\r
24988 var m=MochiKit.Base;\r
24989 var args=m.extend(null,arguments);\r
24990 var _121=args.length;\r
24991 while(args.length){\r
24992 var o=args.shift();\r
24993 if(o&&typeof (o)=="object"&&typeof (o.length)=="number"){\r
24994 _121+=o.length-1;\r
24995 for(var i=o.length-1;i>=0;i--){\r
24996 sum+=o[i];\r
24997 }\r
24998 }else{\r
24999 sum+=o;\r
25000 }\r
25001 }\r
25002 if(_121<=0){\r
25003 throw new TypeError("mean() requires at least one argument");\r
25004 }\r
25005 return sum/_121;\r
25006 },median:function(){\r
25007 var data=MochiKit.Base.flattenArguments(arguments);\r
25008 if(data.length===0){\r
25009 throw new TypeError("median() requires at least one argument");\r
25010 }\r
25011 data.sort(compare);\r
25012 if(data.length%2==0){\r
25013 var _125=data.length/2;\r
25014 return (data[_125]+data[_125-1])/2;\r
25015 }else{\r
25016 return data[(data.length-1)/2];\r
25017 }\r
25018 },findValue:function(lst,_127,_128,end){\r
25019 if(typeof (end)=="undefined"||end===null){\r
25020 end=lst.length;\r
25021 }\r
25022 if(typeof (_128)=="undefined"||_128===null){\r
25023 _128=0;\r
25024 }\r
25025 var cmp=MochiKit.Base.compare;\r
25026 for(var i=_128;i<end;i++){\r
25027 if(cmp(lst[i],_127)===0){\r
25028 return i;\r
25029 }\r
25030 }\r
25031 return -1;\r
25032 },nodeWalk:function(node,_12d){\r
25033 var _12e=[node];\r
25034 var _12f=MochiKit.Base.extend;\r
25035 while(_12e.length){\r
25036 var res=_12d(_12e.shift());\r
25037 if(res){\r
25038 _12f(_12e,res);\r
25039 }\r
25040 }\r
25041 },nameFunctions:function(_131){\r
25042 var base=_131.NAME;\r
25043 if(typeof (base)=="undefined"){\r
25044 base="";\r
25045 }else{\r
25046 base=base+".";\r
25047 }\r
25048 for(var name in _131){\r
25049 var o=_131[name];\r
25050 if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){\r
25051 try{\r
25052 o.NAME=base+name;\r
25053 }\r
25054 catch(e){\r
25055 }\r
25056 }\r
25057 }\r
25058 },queryString:function(_135,_136){\r
25059 if(typeof (MochiKit.DOM)!="undefined"&&arguments.length==1&&(typeof (_135)=="string"||(typeof (_135.nodeType)!="undefined"&&_135.nodeType>0))){\r
25060 var kv=MochiKit.DOM.formContents(_135);\r
25061 _135=kv[0];\r
25062 _136=kv[1];\r
25063 }else{\r
25064 if(arguments.length==1){\r
25065 if(typeof (_135.length)=="number"&&_135.length==2){\r
25066 return arguments.callee(_135[0],_135[1]);\r
25067 }\r
25068 var o=_135;\r
25069 _135=[];\r
25070 _136=[];\r
25071 for(var k in o){\r
25072 var v=o[k];\r
25073 if(typeof (v)=="function"){\r
25074 continue;\r
25075 }else{\r
25076 if(MochiKit.Base.isArrayLike(v)){\r
25077 for(var i=0;i<v.length;i++){\r
25078 _135.push(k);\r
25079 _136.push(v[i]);\r
25080 }\r
25081 }else{\r
25082 _135.push(k);\r
25083 _136.push(v);\r
25084 }\r
25085 }\r
25086 }\r
25087 }\r
25088 }\r
25089 var rval=[];\r
25090 var len=Math.min(_135.length,_136.length);\r
25091 var _13e=MochiKit.Base.urlEncode;\r
25092 for(var i=0;i<len;i++){\r
25093 v=_136[i];\r
25094 if(typeof (v)!="undefined"&&v!==null){\r
25095 rval.push(_13e(_135[i])+"="+_13e(v));\r
25096 }\r
25097 }\r
25098 return rval.join("&");\r
25099 },parseQueryString:function(_13f,_140){\r
25100 var qstr=(_13f.charAt(0)=="?")?_13f.substring(1):_13f;\r
25101 var _142=qstr.replace(/\+/g,"%20").split(/\&amp\;|\&\#38\;|\&#x26;|\&/);\r
25102 var o={};\r
25103 var _144;\r
25104 if(typeof (decodeURIComponent)!="undefined"){\r
25105 _144=decodeURIComponent;\r
25106 }else{\r
25107 _144=unescape;\r
25108 }\r
25109 if(_140){\r
25110 for(var i=0;i<_142.length;i++){\r
25111 var pair=_142[i].split("=");\r
25112 var name=_144(pair.shift());\r
25113 if(!name){\r
25114 continue;\r
25115 }\r
25116 var arr=o[name];\r
25117 if(!(arr instanceof Array)){\r
25118 arr=[];\r
25119 o[name]=arr;\r
25120 }\r
25121 arr.push(_144(pair.join("=")));\r
25122 }\r
25123 }else{\r
25124 for(i=0;i<_142.length;i++){\r
25125 pair=_142[i].split("=");\r
25126 var name=pair.shift();\r
25127 if(!name){\r
25128 continue;\r
25129 }\r
25130 o[_144(name)]=_144(pair.join("="));\r
25131 }\r
25132 }\r
25133 return o;\r
25134 }});\r
25135 MochiKit.Base.AdapterRegistry=function(){\r
25136 this.pairs=[];\r
25137 };\r
25138 MochiKit.Base.AdapterRegistry.prototype={register:function(name,_14a,wrap,_14c){\r
25139 if(_14c){\r
25140 this.pairs.unshift([name,_14a,wrap]);\r
25141 }else{\r
25142 this.pairs.push([name,_14a,wrap]);\r
25143 }\r
25144 },match:function(){\r
25145 for(var i=0;i<this.pairs.length;i++){\r
25146 var pair=this.pairs[i];\r
25147 if(pair[1].apply(this,arguments)){\r
25148 return pair[2].apply(this,arguments);\r
25149 }\r
25150 }\r
25151 throw MochiKit.Base.NotFound;\r
25152 },unregister:function(name){\r
25153 for(var i=0;i<this.pairs.length;i++){\r
25154 var pair=this.pairs[i];\r
25155 if(pair[0]==name){\r
25156 this.pairs.splice(i,1);\r
25157 return true;\r
25158 }\r
25159 }\r
25160 return false;\r
25161 }};\r
25162 MochiKit.Base.EXPORT=["flattenArray","noop","camelize","counter","clone","extend","update","updatetree","setdefault","keys","values","items","NamedError","operator","forwardCall","itemgetter","typeMatcher","isCallable","isUndefined","isUndefinedOrNull","isNull","isEmpty","isNotEmpty","isArrayLike","isDateLike","xmap","map","xfilter","filter","methodcaller","compose","bind","bindLate","bindMethods","NotFound","AdapterRegistry","registerComparator","compare","registerRepr","repr","objEqual","arrayEqual","concat","keyComparator","reverseKeyComparator","partial","merge","listMinMax","listMax","listMin","objMax","objMin","nodeWalk","zip","urlEncode","queryString","serializeJSON","registerJSON","evalJSON","parseQueryString","findValue","findIdentical","flattenArguments","method","average","mean","median"];\r
25163 MochiKit.Base.EXPORT_OK=["nameFunctions","comparatorRegistry","reprRegistry","jsonRegistry","compareDateLike","compareArrayLike","reprArrayLike","reprString","reprNumber"];\r
25164 MochiKit.Base._exportSymbols=function(_152,_153){\r
25165 if(!MochiKit.__export__){\r
25166 return;\r
25167 }\r
25168 var all=_153.EXPORT_TAGS[":all"];\r
25169 for(var i=0;i<all.length;i++){\r
25170 _152[all[i]]=_153[all[i]];\r
25171 }\r
25172 };\r
25173 MochiKit.Base.__new__=function(){\r
25174 var m=this;\r
25175 m.noop=m.operator.identity;\r
25176 m.forward=m.forwardCall;\r
25177 m.find=m.findValue;\r
25178 if(typeof (encodeURIComponent)!="undefined"){\r
25179 m.urlEncode=function(_157){\r
25180 return encodeURIComponent(_157).replace(/\'/g,"%27");\r
25181 };\r
25182 }else{\r
25183 m.urlEncode=function(_158){\r
25184 return escape(_158).replace(/\+/g,"%2B").replace(/\"/g,"%22").rval.replace(/\'/g,"%27");\r
25185 };\r
25186 }\r
25187 m.NamedError=function(name){\r
25188 this.message=name;\r
25189 this.name=name;\r
25190 };\r
25191 m.NamedError.prototype=new Error();\r
25192 m.update(m.NamedError.prototype,{repr:function(){\r
25193 if(this.message&&this.message!=this.name){\r
25194 return this.name+"("+m.repr(this.message)+")";\r
25195 }else{\r
25196 return this.name+"()";\r
25197 }\r
25198 },toString:m.forwardCall("repr")});\r
25199 m.NotFound=new m.NamedError("MochiKit.Base.NotFound");\r
25200 m.listMax=m.partial(m.listMinMax,1);\r
25201 m.listMin=m.partial(m.listMinMax,-1);\r
25202 m.isCallable=m.typeMatcher("function");\r
25203 m.isUndefined=m.typeMatcher("undefined");\r
25204 m.merge=m.partial(m.update,null);\r
25205 m.zip=m.partial(m.map,null);\r
25206 m.average=m.mean;\r
25207 m.comparatorRegistry=new m.AdapterRegistry();\r
25208 m.registerComparator("dateLike",m.isDateLike,m.compareDateLike);\r
25209 m.registerComparator("arrayLike",m.isArrayLike,m.compareArrayLike);\r
25210 m.reprRegistry=new m.AdapterRegistry();\r
25211 m.registerRepr("arrayLike",m.isArrayLike,m.reprArrayLike);\r
25212 m.registerRepr("string",m.typeMatcher("string"),m.reprString);\r
25213 m.registerRepr("numbers",m.typeMatcher("number","boolean"),m.reprNumber);\r
25214 m.jsonRegistry=new m.AdapterRegistry();\r
25215 var all=m.concat(m.EXPORT,m.EXPORT_OK);\r
25216 m.EXPORT_TAGS={":common":m.concat(m.EXPORT_OK),":all":all};\r
25217 m.nameFunctions(this);\r
25218 };\r
25219 MochiKit.Base.__new__();\r
25220 if(MochiKit.__export__){\r
25221 compare=MochiKit.Base.compare;\r
25222 compose=MochiKit.Base.compose;\r
25223 serializeJSON=MochiKit.Base.serializeJSON;\r
25224 mean=MochiKit.Base.mean;\r
25225 median=MochiKit.Base.median;\r
25226 }\r
25227 MochiKit.Base._exportSymbols(this,MochiKit.Base);\r
25228 MochiKit.Base._deps("Iter",["Base"]);\r
25229 MochiKit.Iter.NAME="MochiKit.Iter";\r
25230 MochiKit.Iter.VERSION="1.4.2";\r
25231 MochiKit.Base.update(MochiKit.Iter,{__repr__:function(){\r
25232 return "["+this.NAME+" "+this.VERSION+"]";\r
25233 },toString:function(){\r
25234 return this.__repr__();\r
25235 },registerIteratorFactory:function(name,_15c,_15d,_15e){\r
25236 MochiKit.Iter.iteratorRegistry.register(name,_15c,_15d,_15e);\r
25237 },isIterable:function(o){\r
25238 return o!=null&&(typeof (o.next)=="function"||typeof (o.iter)=="function");\r
25239 },iter:function(_160,_161){\r
25240 var self=MochiKit.Iter;\r
25241 if(arguments.length==2){\r
25242 return self.takewhile(function(a){\r
25243 return a!=_161;\r
25244 },_160);\r
25245 }\r
25246 if(typeof (_160.next)=="function"){\r
25247 return _160;\r
25248 }else{\r
25249 if(typeof (_160.iter)=="function"){\r
25250 return _160.iter();\r
25251 }\r
25252 }\r
25253 try{\r
25254 return self.iteratorRegistry.match(_160);\r
25255 }\r
25256 catch(e){\r
25257 var m=MochiKit.Base;\r
25258 if(e==m.NotFound){\r
25259 e=new TypeError(typeof (_160)+": "+m.repr(_160)+" is not iterable");\r
25260 }\r
25261 throw e;\r
25262 }\r
25263 },count:function(n){\r
25264 if(!n){\r
25265 n=0;\r
25266 }\r
25267 var m=MochiKit.Base;\r
25268 return {repr:function(){\r
25269 return "count("+n+")";\r
25270 },toString:m.forwardCall("repr"),next:m.counter(n)};\r
25271 },cycle:function(p){\r
25272 var self=MochiKit.Iter;\r
25273 var m=MochiKit.Base;\r
25274 var lst=[];\r
25275 var _16b=self.iter(p);\r
25276 return {repr:function(){\r
25277 return "cycle(...)";\r
25278 },toString:m.forwardCall("repr"),next:function(){\r
25279 try{\r
25280 var rval=_16b.next();\r
25281 lst.push(rval);\r
25282 return rval;\r
25283 }\r
25284 catch(e){\r
25285 if(e!=self.StopIteration){\r
25286 throw e;\r
25287 }\r
25288 if(lst.length===0){\r
25289 this.next=function(){\r
25290 throw self.StopIteration;\r
25291 };\r
25292 }else{\r
25293 var i=-1;\r
25294 this.next=function(){\r
25295 i=(i+1)%lst.length;\r
25296 return lst[i];\r
25297 };\r
25298 }\r
25299 return this.next();\r
25300 }\r
25301 }};\r
25302 },repeat:function(elem,n){\r
25303 var m=MochiKit.Base;\r
25304 if(typeof (n)=="undefined"){\r
25305 return {repr:function(){\r
25306 return "repeat("+m.repr(elem)+")";\r
25307 },toString:m.forwardCall("repr"),next:function(){\r
25308 return elem;\r
25309 }};\r
25310 }\r
25311 return {repr:function(){\r
25312 return "repeat("+m.repr(elem)+", "+n+")";\r
25313 },toString:m.forwardCall("repr"),next:function(){\r
25314 if(n<=0){\r
25315 throw MochiKit.Iter.StopIteration;\r
25316 }\r
25317 n-=1;\r
25318 return elem;\r
25319 }};\r
25320 },next:function(_171){\r
25321 return _171.next();\r
25322 },izip:function(p,q){\r
25323 var m=MochiKit.Base;\r
25324 var self=MochiKit.Iter;\r
25325 var next=self.next;\r
25326 var _177=m.map(self.iter,arguments);\r
25327 return {repr:function(){\r
25328 return "izip(...)";\r
25329 },toString:m.forwardCall("repr"),next:function(){\r
25330 return m.map(next,_177);\r
25331 }};\r
25332 },ifilter:function(pred,seq){\r
25333 var m=MochiKit.Base;\r
25334 seq=MochiKit.Iter.iter(seq);\r
25335 if(pred===null){\r
25336 pred=m.operator.truth;\r
25337 }\r
25338 return {repr:function(){\r
25339 return "ifilter(...)";\r
25340 },toString:m.forwardCall("repr"),next:function(){\r
25341 while(true){\r
25342 var rval=seq.next();\r
25343 if(pred(rval)){\r
25344 return rval;\r
25345 }\r
25346 }\r
25347 return undefined;\r
25348 }};\r
25349 },ifilterfalse:function(pred,seq){\r
25350 var m=MochiKit.Base;\r
25351 seq=MochiKit.Iter.iter(seq);\r
25352 if(pred===null){\r
25353 pred=m.operator.truth;\r
25354 }\r
25355 return {repr:function(){\r
25356 return "ifilterfalse(...)";\r
25357 },toString:m.forwardCall("repr"),next:function(){\r
25358 while(true){\r
25359 var rval=seq.next();\r
25360 if(!pred(rval)){\r
25361 return rval;\r
25362 }\r
25363 }\r
25364 return undefined;\r
25365 }};\r
25366 },islice:function(seq){\r
25367 var self=MochiKit.Iter;\r
25368 var m=MochiKit.Base;\r
25369 seq=self.iter(seq);\r
25370 var _183=0;\r
25371 var stop=0;\r
25372 var step=1;\r
25373 var i=-1;\r
25374 if(arguments.length==2){\r
25375 stop=arguments[1];\r
25376 }else{\r
25377 if(arguments.length==3){\r
25378 _183=arguments[1];\r
25379 stop=arguments[2];\r
25380 }else{\r
25381 _183=arguments[1];\r
25382 stop=arguments[2];\r
25383 step=arguments[3];\r
25384 }\r
25385 }\r
25386 return {repr:function(){\r
25387 return "islice("+["...",_183,stop,step].join(", ")+")";\r
25388 },toString:m.forwardCall("repr"),next:function(){\r
25389 var rval;\r
25390 while(i<_183){\r
25391 rval=seq.next();\r
25392 i++;\r
25393 }\r
25394 if(_183>=stop){\r
25395 throw self.StopIteration;\r
25396 }\r
25397 _183+=step;\r
25398 return rval;\r
25399 }};\r
25400 },imap:function(fun,p,q){\r
25401 var m=MochiKit.Base;\r
25402 var self=MochiKit.Iter;\r
25403 var _18d=m.map(self.iter,m.extend(null,arguments,1));\r
25404 var map=m.map;\r
25405 var next=self.next;\r
25406 return {repr:function(){\r
25407 return "imap(...)";\r
25408 },toString:m.forwardCall("repr"),next:function(){\r
25409 return fun.apply(this,map(next,_18d));\r
25410 }};\r
25411 },applymap:function(fun,seq,self){\r
25412 seq=MochiKit.Iter.iter(seq);\r
25413 var m=MochiKit.Base;\r
25414 return {repr:function(){\r
25415 return "applymap(...)";\r
25416 },toString:m.forwardCall("repr"),next:function(){\r
25417 return fun.apply(self,seq.next());\r
25418 }};\r
25419 },chain:function(p,q){\r
25420 var self=MochiKit.Iter;\r
25421 var m=MochiKit.Base;\r
25422 if(arguments.length==1){\r
25423 return self.iter(arguments[0]);\r
25424 }\r
25425 var _198=m.map(self.iter,arguments);\r
25426 return {repr:function(){\r
25427 return "chain(...)";\r
25428 },toString:m.forwardCall("repr"),next:function(){\r
25429 while(_198.length>1){\r
25430 try{\r
25431 var _199=_198[0].next();\r
25432 return _199;\r
25433 }\r
25434 catch(e){\r
25435 if(e!=self.StopIteration){\r
25436 throw e;\r
25437 }\r
25438 _198.shift();\r
25439 var _199=_198[0].next();\r
25440 return _199;\r
25441 }\r
25442 }\r
25443 if(_198.length==1){\r
25444 var arg=_198.shift();\r
25445 this.next=m.bind("next",arg);\r
25446 return this.next();\r
25447 }\r
25448 throw self.StopIteration;\r
25449 }};\r
25450 },takewhile:function(pred,seq){\r
25451 var self=MochiKit.Iter;\r
25452 seq=self.iter(seq);\r
25453 return {repr:function(){\r
25454 return "takewhile(...)";\r
25455 },toString:MochiKit.Base.forwardCall("repr"),next:function(){\r
25456 var rval=seq.next();\r
25457 if(!pred(rval)){\r
25458 this.next=function(){\r
25459 throw self.StopIteration;\r
25460 };\r
25461 this.next();\r
25462 }\r
25463 return rval;\r
25464 }};\r
25465 },dropwhile:function(pred,seq){\r
25466 seq=MochiKit.Iter.iter(seq);\r
25467 var m=MochiKit.Base;\r
25468 var bind=m.bind;\r
25469 return {"repr":function(){\r
25470 return "dropwhile(...)";\r
25471 },"toString":m.forwardCall("repr"),"next":function(){\r
25472 while(true){\r
25473 var rval=seq.next();\r
25474 if(!pred(rval)){\r
25475 break;\r
25476 }\r
25477 }\r
25478 this.next=bind("next",seq);\r
25479 return rval;\r
25480 }};\r
25481 },_tee:function(_1a4,sync,_1a6){\r
25482 sync.pos[_1a4]=-1;\r
25483 var m=MochiKit.Base;\r
25484 var _1a8=m.listMin;\r
25485 return {repr:function(){\r
25486 return "tee("+_1a4+", ...)";\r
25487 },toString:m.forwardCall("repr"),next:function(){\r
25488 var rval;\r
25489 var i=sync.pos[_1a4];\r
25490 if(i==sync.max){\r
25491 rval=_1a6.next();\r
25492 sync.deque.push(rval);\r
25493 sync.max+=1;\r
25494 sync.pos[_1a4]+=1;\r
25495 }else{\r
25496 rval=sync.deque[i-sync.min];\r
25497 sync.pos[_1a4]+=1;\r
25498 if(i==sync.min&&_1a8(sync.pos)!=sync.min){\r
25499 sync.min+=1;\r
25500 sync.deque.shift();\r
25501 }\r
25502 }\r
25503 return rval;\r
25504 }};\r
25505 },tee:function(_1ab,n){\r
25506 var rval=[];\r
25507 var sync={"pos":[],"deque":[],"max":-1,"min":-1};\r
25508 if(arguments.length==1||typeof (n)=="undefined"||n===null){\r
25509 n=2;\r
25510 }\r
25511 var self=MochiKit.Iter;\r
25512 _1ab=self.iter(_1ab);\r
25513 var _tee=self._tee;\r
25514 for(var i=0;i<n;i++){\r
25515 rval.push(_tee(i,sync,_1ab));\r
25516 }\r
25517 return rval;\r
25518 },list:function(_1b2){\r
25519 var rval;\r
25520 if(_1b2 instanceof Array){\r
25521 return _1b2.slice();\r
25522 }\r
25523 if(typeof (_1b2)=="function"&&!(_1b2 instanceof Function)&&typeof (_1b2.length)=="number"){\r
25524 rval=[];\r
25525 for(var i=0;i<_1b2.length;i++){\r
25526 rval.push(_1b2[i]);\r
25527 }\r
25528 return rval;\r
25529 }\r
25530 var self=MochiKit.Iter;\r
25531 _1b2=self.iter(_1b2);\r
25532 var rval=[];\r
25533 var _1b6;\r
25534 try{\r
25535 while(true){\r
25536 _1b6=_1b2.next();\r
25537 rval.push(_1b6);\r
25538 }\r
25539 }\r
25540 catch(e){\r
25541 if(e!=self.StopIteration){\r
25542 throw e;\r
25543 }\r
25544 return rval;\r
25545 }\r
25546 return undefined;\r
25547 },reduce:function(fn,_1b8,_1b9){\r
25548 var i=0;\r
25549 var x=_1b9;\r
25550 var self=MochiKit.Iter;\r
25551 _1b8=self.iter(_1b8);\r
25552 if(arguments.length<3){\r
25553 try{\r
25554 x=_1b8.next();\r
25555 }\r
25556 catch(e){\r
25557 if(e==self.StopIteration){\r
25558 e=new TypeError("reduce() of empty sequence with no initial value");\r
25559 }\r
25560 throw e;\r
25561 }\r
25562 i++;\r
25563 }\r
25564 try{\r
25565 while(true){\r
25566 x=fn(x,_1b8.next());\r
25567 }\r
25568 }\r
25569 catch(e){\r
25570 if(e!=self.StopIteration){\r
25571 throw e;\r
25572 }\r
25573 }\r
25574 return x;\r
25575 },range:function(){\r
25576 var _1bd=0;\r
25577 var stop=0;\r
25578 var step=1;\r
25579 if(arguments.length==1){\r
25580 stop=arguments[0];\r
25581 }else{\r
25582 if(arguments.length==2){\r
25583 _1bd=arguments[0];\r
25584 stop=arguments[1];\r
25585 }else{\r
25586 if(arguments.length==3){\r
25587 _1bd=arguments[0];\r
25588 stop=arguments[1];\r
25589 step=arguments[2];\r
25590 }else{\r
25591 throw new TypeError("range() takes 1, 2, or 3 arguments!");\r
25592 }\r
25593 }\r
25594 }\r
25595 if(step===0){\r
25596 throw new TypeError("range() step must not be 0");\r
25597 }\r
25598 return {next:function(){\r
25599 if((step>0&&_1bd>=stop)||(step<0&&_1bd<=stop)){\r
25600 throw MochiKit.Iter.StopIteration;\r
25601 }\r
25602 var rval=_1bd;\r
25603 _1bd+=step;\r
25604 return rval;\r
25605 },repr:function(){\r
25606 return "range("+[_1bd,stop,step].join(", ")+")";\r
25607 },toString:MochiKit.Base.forwardCall("repr")};\r
25608 },sum:function(_1c1,_1c2){\r
25609 if(typeof (_1c2)=="undefined"||_1c2===null){\r
25610 _1c2=0;\r
25611 }\r
25612 var x=_1c2;\r
25613 var self=MochiKit.Iter;\r
25614 _1c1=self.iter(_1c1);\r
25615 try{\r
25616 while(true){\r
25617 x+=_1c1.next();\r
25618 }\r
25619 }\r
25620 catch(e){\r
25621 if(e!=self.StopIteration){\r
25622 throw e;\r
25623 }\r
25624 }\r
25625 return x;\r
25626 },exhaust:function(_1c5){\r
25627 var self=MochiKit.Iter;\r
25628 _1c5=self.iter(_1c5);\r
25629 try{\r
25630 while(true){\r
25631 _1c5.next();\r
25632 }\r
25633 }\r
25634 catch(e){\r
25635 if(e!=self.StopIteration){\r
25636 throw e;\r
25637 }\r
25638 }\r
25639 },forEach:function(_1c7,func,obj){\r
25640 var m=MochiKit.Base;\r
25641 var self=MochiKit.Iter;\r
25642 if(arguments.length>2){\r
25643 func=m.bind(func,obj);\r
25644 }\r
25645 if(m.isArrayLike(_1c7)&&!self.isIterable(_1c7)){\r
25646 try{\r
25647 for(var i=0;i<_1c7.length;i++){\r
25648 func(_1c7[i]);\r
25649 }\r
25650 }\r
25651 catch(e){\r
25652 if(e!=self.StopIteration){\r
25653 throw e;\r
25654 }\r
25655 }\r
25656 }else{\r
25657 self.exhaust(self.imap(func,_1c7));\r
25658 }\r
25659 },every:function(_1cd,func){\r
25660 var self=MochiKit.Iter;\r
25661 try{\r
25662 self.ifilterfalse(func,_1cd).next();\r
25663 return false;\r
25664 }\r
25665 catch(e){\r
25666 if(e!=self.StopIteration){\r
25667 throw e;\r
25668 }\r
25669 return true;\r
25670 }\r
25671 },sorted:function(_1d0,cmp){\r
25672 var rval=MochiKit.Iter.list(_1d0);\r
25673 if(arguments.length==1){\r
25674 cmp=MochiKit.Base.compare;\r
25675 }\r
25676 rval.sort(cmp);\r
25677 return rval;\r
25678 },reversed:function(_1d3){\r
25679 var rval=MochiKit.Iter.list(_1d3);\r
25680 rval.reverse();\r
25681 return rval;\r
25682 },some:function(_1d5,func){\r
25683 var self=MochiKit.Iter;\r
25684 try{\r
25685 self.ifilter(func,_1d5).next();\r
25686 return true;\r
25687 }\r
25688 catch(e){\r
25689 if(e!=self.StopIteration){\r
25690 throw e;\r
25691 }\r
25692 return false;\r
25693 }\r
25694 },iextend:function(lst,_1d9){\r
25695 var m=MochiKit.Base;\r
25696 var self=MochiKit.Iter;\r
25697 if(m.isArrayLike(_1d9)&&!self.isIterable(_1d9)){\r
25698 for(var i=0;i<_1d9.length;i++){\r
25699 lst.push(_1d9[i]);\r
25700 }\r
25701 }else{\r
25702 _1d9=self.iter(_1d9);\r
25703 try{\r
25704 while(true){\r
25705 lst.push(_1d9.next());\r
25706 }\r
25707 }\r
25708 catch(e){\r
25709 if(e!=self.StopIteration){\r
25710 throw e;\r
25711 }\r
25712 }\r
25713 }\r
25714 return lst;\r
25715 },groupby:function(_1dd,_1de){\r
25716 var m=MochiKit.Base;\r
25717 var self=MochiKit.Iter;\r
25718 if(arguments.length<2){\r
25719 _1de=m.operator.identity;\r
25720 }\r
25721 _1dd=self.iter(_1dd);\r
25722 var pk=undefined;\r
25723 var k=undefined;\r
25724 var v;\r
25725 function fetch(){\r
25726 v=_1dd.next();\r
25727 k=_1de(v);\r
25728 }\r
25729 function eat(){\r
25730 var ret=v;\r
25731 v=undefined;\r
25732 return ret;\r
25733 }\r
25734 var _1e5=true;\r
25735 var _1e6=m.compare;\r
25736 return {repr:function(){\r
25737 return "groupby(...)";\r
25738 },next:function(){\r
25739 while(_1e6(k,pk)===0){\r
25740 fetch();\r
25741 if(_1e5){\r
25742 _1e5=false;\r
25743 break;\r
25744 }\r
25745 }\r
25746 pk=k;\r
25747 return [k,{next:function(){\r
25748 if(v==undefined){\r
25749 fetch();\r
25750 }\r
25751 if(_1e6(k,pk)!==0){\r
25752 throw self.StopIteration;\r
25753 }\r
25754 return eat();\r
25755 }}];\r
25756 }};\r
25757 },groupby_as_array:function(_1e7,_1e8){\r
25758 var m=MochiKit.Base;\r
25759 var self=MochiKit.Iter;\r
25760 if(arguments.length<2){\r
25761 _1e8=m.operator.identity;\r
25762 }\r
25763 _1e7=self.iter(_1e7);\r
25764 var _1eb=[];\r
25765 var _1ec=true;\r
25766 var _1ed;\r
25767 var _1ee=m.compare;\r
25768 while(true){\r
25769 try{\r
25770 var _1ef=_1e7.next();\r
25771 var key=_1e8(_1ef);\r
25772 }\r
25773 catch(e){\r
25774 if(e==self.StopIteration){\r
25775 break;\r
25776 }\r
25777 throw e;\r
25778 }\r
25779 if(_1ec||_1ee(key,_1ed)!==0){\r
25780 var _1f1=[];\r
25781 _1eb.push([key,_1f1]);\r
25782 }\r
25783 _1f1.push(_1ef);\r
25784 _1ec=false;\r
25785 _1ed=key;\r
25786 }\r
25787 return _1eb;\r
25788 },arrayLikeIter:function(_1f2){\r
25789 var i=0;\r
25790 return {repr:function(){\r
25791 return "arrayLikeIter(...)";\r
25792 },toString:MochiKit.Base.forwardCall("repr"),next:function(){\r
25793 if(i>=_1f2.length){\r
25794 throw MochiKit.Iter.StopIteration;\r
25795 }\r
25796 return _1f2[i++];\r
25797 }};\r
25798 },hasIterateNext:function(_1f4){\r
25799 return (_1f4&&typeof (_1f4.iterateNext)=="function");\r
25800 },iterateNextIter:function(_1f5){\r
25801 return {repr:function(){\r
25802 return "iterateNextIter(...)";\r
25803 },toString:MochiKit.Base.forwardCall("repr"),next:function(){\r
25804 var rval=_1f5.iterateNext();\r
25805 if(rval===null||rval===undefined){\r
25806 throw MochiKit.Iter.StopIteration;\r
25807 }\r
25808 return rval;\r
25809 }};\r
25810 }});\r
25811 MochiKit.Iter.EXPORT_OK=["iteratorRegistry","arrayLikeIter","hasIterateNext","iterateNextIter"];\r
25812 MochiKit.Iter.EXPORT=["StopIteration","registerIteratorFactory","iter","count","cycle","repeat","next","izip","ifilter","ifilterfalse","islice","imap","applymap","chain","takewhile","dropwhile","tee","list","reduce","range","sum","exhaust","forEach","every","sorted","reversed","some","iextend","groupby","groupby_as_array"];\r
25813 MochiKit.Iter.__new__=function(){\r
25814 var m=MochiKit.Base;\r
25815 if(typeof (StopIteration)!="undefined"){\r
25816 this.StopIteration=StopIteration;\r
25817 }else{\r
25818 this.StopIteration=new m.NamedError("StopIteration");\r
25819 }\r
25820 this.iteratorRegistry=new m.AdapterRegistry();\r
25821 this.registerIteratorFactory("arrayLike",m.isArrayLike,this.arrayLikeIter);\r
25822 this.registerIteratorFactory("iterateNext",this.hasIterateNext,this.iterateNextIter);\r
25823 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
25824 m.nameFunctions(this);\r
25825 };\r
25826 MochiKit.Iter.__new__();\r
25827 if(MochiKit.__export__){\r
25828 reduce=MochiKit.Iter.reduce;\r
25829 }\r
25830 MochiKit.Base._exportSymbols(this,MochiKit.Iter);\r
25831 MochiKit.Base._deps("Logging",["Base"]);\r
25832 MochiKit.Logging.NAME="MochiKit.Logging";\r
25833 MochiKit.Logging.VERSION="1.4.2";\r
25834 MochiKit.Logging.__repr__=function(){\r
25835 return "["+this.NAME+" "+this.VERSION+"]";\r
25836 };\r
25837 MochiKit.Logging.toString=function(){\r
25838 return this.__repr__();\r
25839 };\r
25840 MochiKit.Logging.EXPORT=["LogLevel","LogMessage","Logger","alertListener","logger","log","logError","logDebug","logFatal","logWarning"];\r
25841 MochiKit.Logging.EXPORT_OK=["logLevelAtLeast","isLogMessage","compareLogMessage"];\r
25842 MochiKit.Logging.LogMessage=function(num,_1f9,info){\r
25843 this.num=num;\r
25844 this.level=_1f9;\r
25845 this.info=info;\r
25846 this.timestamp=new Date();\r
25847 };\r
25848 MochiKit.Logging.LogMessage.prototype={repr:function(){\r
25849 var m=MochiKit.Base;\r
25850 return "LogMessage("+m.map(m.repr,[this.num,this.level,this.info]).join(", ")+")";\r
25851 },toString:MochiKit.Base.forwardCall("repr")};\r
25852 MochiKit.Base.update(MochiKit.Logging,{logLevelAtLeast:function(_1fc){\r
25853 var self=MochiKit.Logging;\r
25854 if(typeof (_1fc)=="string"){\r
25855 _1fc=self.LogLevel[_1fc];\r
25856 }\r
25857 return function(msg){\r
25858 var _1ff=msg.level;\r
25859 if(typeof (_1ff)=="string"){\r
25860 _1ff=self.LogLevel[_1ff];\r
25861 }\r
25862 return _1ff>=_1fc;\r
25863 };\r
25864 },isLogMessage:function(){\r
25865 var _200=MochiKit.Logging.LogMessage;\r
25866 for(var i=0;i<arguments.length;i++){\r
25867 if(!(arguments[i] instanceof _200)){\r
25868 return false;\r
25869 }\r
25870 }\r
25871 return true;\r
25872 },compareLogMessage:function(a,b){\r
25873 return MochiKit.Base.compare([a.level,a.info],[b.level,b.info]);\r
25874 },alertListener:function(msg){\r
25875 alert("num: "+msg.num+"\nlevel: "+msg.level+"\ninfo: "+msg.info.join(" "));\r
25876 }});\r
25877 MochiKit.Logging.Logger=function(_205){\r
25878 this.counter=0;\r
25879 if(typeof (_205)=="undefined"||_205===null){\r
25880 _205=-1;\r
25881 }\r
25882 this.maxSize=_205;\r
25883 this._messages=[];\r
25884 this.listeners={};\r
25885 this.useNativeConsole=false;\r
25886 };\r
25887 MochiKit.Logging.Logger.prototype={clear:function(){\r
25888 this._messages.splice(0,this._messages.length);\r
25889 },logToConsole:function(msg){\r
25890 if(typeof (window)!="undefined"&&window.console&&window.console.log){\r
25891 window.console.log(msg.replace(/%/g,"\uff05"));\r
25892 }else{\r
25893 if(typeof (opera)!="undefined"&&opera.postError){\r
25894 opera.postError(msg);\r
25895 }else{\r
25896 if(typeof (printfire)=="function"){\r
25897 printfire(msg);\r
25898 }else{\r
25899 if(typeof (Debug)!="undefined"&&Debug.writeln){\r
25900 Debug.writeln(msg);\r
25901 }else{\r
25902 if(typeof (debug)!="undefined"&&debug.trace){\r
25903 debug.trace(msg);\r
25904 }\r
25905 }\r
25906 }\r
25907 }\r
25908 }\r
25909 },dispatchListeners:function(msg){\r
25910 for(var k in this.listeners){\r
25911 var pair=this.listeners[k];\r
25912 if(pair.ident!=k||(pair[0]&&!pair[0](msg))){\r
25913 continue;\r
25914 }\r
25915 pair[1](msg);\r
25916 }\r
25917 },addListener:function(_20a,_20b,_20c){\r
25918 if(typeof (_20b)=="string"){\r
25919 _20b=MochiKit.Logging.logLevelAtLeast(_20b);\r
25920 }\r
25921 var _20d=[_20b,_20c];\r
25922 _20d.ident=_20a;\r
25923 this.listeners[_20a]=_20d;\r
25924 },removeListener:function(_20e){\r
25925 delete this.listeners[_20e];\r
25926 },baseLog:function(_20f,_210){\r
25927 if(typeof (_20f)=="number"){\r
25928 if(_20f>=MochiKit.Logging.LogLevel.FATAL){\r
25929 _20f="FATAL";\r
25930 }else{\r
25931 if(_20f>=MochiKit.Logging.LogLevel.ERROR){\r
25932 _20f="ERROR";\r
25933 }else{\r
25934 if(_20f>=MochiKit.Logging.LogLevel.WARNING){\r
25935 _20f="WARNING";\r
25936 }else{\r
25937 if(_20f>=MochiKit.Logging.LogLevel.INFO){\r
25938 _20f="INFO";\r
25939 }else{\r
25940 _20f="DEBUG";\r
25941 }\r
25942 }\r
25943 }\r
25944 }\r
25945 }\r
25946 var msg=new MochiKit.Logging.LogMessage(this.counter,_20f,MochiKit.Base.extend(null,arguments,1));\r
25947 this._messages.push(msg);\r
25948 this.dispatchListeners(msg);\r
25949 if(this.useNativeConsole){\r
25950 this.logToConsole(msg.level+": "+msg.info.join(" "));\r
25951 }\r
25952 this.counter+=1;\r
25953 while(this.maxSize>=0&&this._messages.length>this.maxSize){\r
25954 this._messages.shift();\r
25955 }\r
25956 },getMessages:function(_212){\r
25957 var _213=0;\r
25958 if(!(typeof (_212)=="undefined"||_212===null)){\r
25959 _213=Math.max(0,this._messages.length-_212);\r
25960 }\r
25961 return this._messages.slice(_213);\r
25962 },getMessageText:function(_214){\r
25963 if(typeof (_214)=="undefined"||_214===null){\r
25964 _214=30;\r
25965 }\r
25966 var _215=this.getMessages(_214);\r
25967 if(_215.length){\r
25968 var lst=map(function(m){\r
25969 return "\n  ["+m.num+"] "+m.level+": "+m.info.join(" ");\r
25970 },_215);\r
25971 lst.unshift("LAST "+_215.length+" MESSAGES:");\r
25972 return lst.join("");\r
25973 }\r
25974 return "";\r
25975 },debuggingBookmarklet:function(_218){\r
25976 if(typeof (MochiKit.LoggingPane)=="undefined"){\r
25977 alert(this.getMessageText());\r
25978 }else{\r
25979 MochiKit.LoggingPane.createLoggingPane(_218||false);\r
25980 }\r
25981 }};\r
25982 MochiKit.Logging.__new__=function(){\r
25983 this.LogLevel={ERROR:40,FATAL:50,WARNING:30,INFO:20,DEBUG:10};\r
25984 var m=MochiKit.Base;\r
25985 m.registerComparator("LogMessage",this.isLogMessage,this.compareLogMessage);\r
25986 var _21a=m.partial;\r
25987 var _21b=this.Logger;\r
25988 var _21c=_21b.prototype.baseLog;\r
25989 m.update(this.Logger.prototype,{debug:_21a(_21c,"DEBUG"),log:_21a(_21c,"INFO"),error:_21a(_21c,"ERROR"),fatal:_21a(_21c,"FATAL"),warning:_21a(_21c,"WARNING")});\r
25990 var self=this;\r
25991 var _21e=function(name){\r
25992 return function(){\r
25993 self.logger[name].apply(self.logger,arguments);\r
25994 };\r
25995 };\r
25996 this.log=_21e("log");\r
25997 this.logError=_21e("error");\r
25998 this.logDebug=_21e("debug");\r
25999 this.logFatal=_21e("fatal");\r
26000 this.logWarning=_21e("warning");\r
26001 this.logger=new _21b();\r
26002 this.logger.useNativeConsole=true;\r
26003 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
26004 m.nameFunctions(this);\r
26005 };\r
26006 if(typeof (printfire)=="undefined"&&typeof (document)!="undefined"&&document.createEvent&&typeof (dispatchEvent)!="undefined"){\r
26007 printfire=function(){\r
26008 printfire.args=arguments;\r
26009 var ev=document.createEvent("Events");\r
26010 ev.initEvent("printfire",false,true);\r
26011 dispatchEvent(ev);\r
26012 };\r
26013 }\r
26014 MochiKit.Logging.__new__();\r
26015 MochiKit.Base._exportSymbols(this,MochiKit.Logging);\r
26016 MochiKit.Base._deps("DateTime",["Base"]);\r
26017 MochiKit.DateTime.NAME="MochiKit.DateTime";\r
26018 MochiKit.DateTime.VERSION="1.4.2";\r
26019 MochiKit.DateTime.__repr__=function(){\r
26020 return "["+this.NAME+" "+this.VERSION+"]";\r
26021 };\r
26022 MochiKit.DateTime.toString=function(){\r
26023 return this.__repr__();\r
26024 };\r
26025 MochiKit.DateTime.isoDate=function(str){\r
26026 str=str+"";\r
26027 if(typeof (str)!="string"||str.length===0){\r
26028 return null;\r
26029 }\r
26030 var iso=str.split("-");\r
26031 if(iso.length===0){\r
26032 return null;\r
26033 }\r
26034 var date=new Date(iso[0],iso[1]-1,iso[2]);\r
26035 date.setFullYear(iso[0]);\r
26036 date.setMonth(iso[1]-1);\r
26037 date.setDate(iso[2]);\r
26038 return date;\r
26039 };\r
26040 MochiKit.DateTime._isoRegexp=/(\d{4,})(?:-(\d{1,2})(?:-(\d{1,2})(?:[T ](\d{1,2}):(\d{1,2})(?::(\d{1,2})(?:\.(\d+))?)?(?:(Z)|([+-])(\d{1,2})(?::(\d{1,2}))?)?)?)?)?/;\r
26041 MochiKit.DateTime.isoTimestamp=function(str){\r
26042 str=str+"";\r
26043 if(typeof (str)!="string"||str.length===0){\r
26044 return null;\r
26045 }\r
26046 var res=str.match(MochiKit.DateTime._isoRegexp);\r
26047 if(typeof (res)=="undefined"||res===null){\r
26048 return null;\r
26049 }\r
26050 var year,_227,day,hour,min,sec,msec;\r
26051 year=parseInt(res[1],10);\r
26052 if(typeof (res[2])=="undefined"||res[2]===""){\r
26053 return new Date(year);\r
26054 }\r
26055 _227=parseInt(res[2],10)-1;\r
26056 day=parseInt(res[3],10);\r
26057 if(typeof (res[4])=="undefined"||res[4]===""){\r
26058 return new Date(year,_227,day);\r
26059 }\r
26060 hour=parseInt(res[4],10);\r
26061 min=parseInt(res[5],10);\r
26062 sec=(typeof (res[6])!="undefined"&&res[6]!=="")?parseInt(res[6],10):0;\r
26063 if(typeof (res[7])!="undefined"&&res[7]!==""){\r
26064 msec=Math.round(1000*parseFloat("0."+res[7]));\r
26065 }else{\r
26066 msec=0;\r
26067 }\r
26068 if((typeof (res[8])=="undefined"||res[8]==="")&&(typeof (res[9])=="undefined"||res[9]==="")){\r
26069 return new Date(year,_227,day,hour,min,sec,msec);\r
26070 }\r
26071 var ofs;\r
26072 if(typeof (res[9])!="undefined"&&res[9]!==""){\r
26073 ofs=parseInt(res[10],10)*3600000;\r
26074 if(typeof (res[11])!="undefined"&&res[11]!==""){\r
26075 ofs+=parseInt(res[11],10)*60000;\r
26076 }\r
26077 if(res[9]=="-"){\r
26078 ofs=-ofs;\r
26079 }\r
26080 }else{\r
26081 ofs=0;\r
26082 }\r
26083 return new Date(Date.UTC(year,_227,day,hour,min,sec,msec)-ofs);\r
26084 };\r
26085 MochiKit.DateTime.toISOTime=function(date,_22f){\r
26086 if(typeof (date)=="undefined"||date===null){\r
26087 return null;\r
26088 }\r
26089 var hh=date.getHours();\r
26090 var mm=date.getMinutes();\r
26091 var ss=date.getSeconds();\r
26092 var lst=[((_22f&&(hh<10))?"0"+hh:hh),((mm<10)?"0"+mm:mm),((ss<10)?"0"+ss:ss)];\r
26093 return lst.join(":");\r
26094 };\r
26095 MochiKit.DateTime.toISOTimestamp=function(date,_235){\r
26096 if(typeof (date)=="undefined"||date===null){\r
26097 return null;\r
26098 }\r
26099 var sep=_235?"T":" ";\r
26100 var foot=_235?"Z":"";\r
26101 if(_235){\r
26102 date=new Date(date.getTime()+(date.getTimezoneOffset()*60000));\r
26103 }\r
26104 return MochiKit.DateTime.toISODate(date)+sep+MochiKit.DateTime.toISOTime(date,_235)+foot;\r
26105 };\r
26106 MochiKit.DateTime.toISODate=function(date){\r
26107 if(typeof (date)=="undefined"||date===null){\r
26108 return null;\r
26109 }\r
26110 var _239=MochiKit.DateTime._padTwo;\r
26111 var _23a=MochiKit.DateTime._padFour;\r
26112 return [_23a(date.getFullYear()),_239(date.getMonth()+1),_239(date.getDate())].join("-");\r
26113 };\r
26114 MochiKit.DateTime.americanDate=function(d){\r
26115 d=d+"";\r
26116 if(typeof (d)!="string"||d.length===0){\r
26117 return null;\r
26118 }\r
26119 var a=d.split("/");\r
26120 return new Date(a[2],a[0]-1,a[1]);\r
26121 };\r
26122 MochiKit.DateTime._padTwo=function(n){\r
26123 return (n>9)?n:"0"+n;\r
26124 };\r
26125 MochiKit.DateTime._padFour=function(n){\r
26126 switch(n.toString().length){\r
26127 case 1:\r
26128 return "000"+n;\r
26129 break;\r
26130 case 2:\r
26131 return "00"+n;\r
26132 break;\r
26133 case 3:\r
26134 return "0"+n;\r
26135 break;\r
26136 case 4:\r
26137 default:\r
26138 return n;\r
26139 }\r
26140 };\r
26141 MochiKit.DateTime.toPaddedAmericanDate=function(d){\r
26142 if(typeof (d)=="undefined"||d===null){\r
26143 return null;\r
26144 }\r
26145 var _240=MochiKit.DateTime._padTwo;\r
26146 return [_240(d.getMonth()+1),_240(d.getDate()),d.getFullYear()].join("/");\r
26147 };\r
26148 MochiKit.DateTime.toAmericanDate=function(d){\r
26149 if(typeof (d)=="undefined"||d===null){\r
26150 return null;\r
26151 }\r
26152 return [d.getMonth()+1,d.getDate(),d.getFullYear()].join("/");\r
26153 };\r
26154 MochiKit.DateTime.EXPORT=["isoDate","isoTimestamp","toISOTime","toISOTimestamp","toISODate","americanDate","toPaddedAmericanDate","toAmericanDate"];\r
26155 MochiKit.DateTime.EXPORT_OK=[];\r
26156 MochiKit.DateTime.EXPORT_TAGS={":common":MochiKit.DateTime.EXPORT,":all":MochiKit.DateTime.EXPORT};\r
26157 MochiKit.DateTime.__new__=function(){\r
26158 var base=this.NAME+".";\r
26159 for(var k in this){\r
26160 var o=this[k];\r
26161 if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){\r
26162 try{\r
26163 o.NAME=base+k;\r
26164 }\r
26165 catch(e){\r
26166 }\r
26167 }\r
26168 }\r
26169 };\r
26170 MochiKit.DateTime.__new__();\r
26171 if(typeof (MochiKit.Base)!="undefined"){\r
26172 MochiKit.Base._exportSymbols(this,MochiKit.DateTime);\r
26173 }else{\r
26174 (function(_245,_246){\r
26175 if((typeof (JSAN)=="undefined"&&typeof (dojo)=="undefined")||(MochiKit.__export__===false)){\r
26176 var all=_246.EXPORT_TAGS[":all"];\r
26177 for(var i=0;i<all.length;i++){\r
26178 _245[all[i]]=_246[all[i]];\r
26179 }\r
26180 }\r
26181 })(this,MochiKit.DateTime);\r
26182 }\r
26183 MochiKit.Base._deps("Format",["Base"]);\r
26184 MochiKit.Format.NAME="MochiKit.Format";\r
26185 MochiKit.Format.VERSION="1.4.2";\r
26186 MochiKit.Format.__repr__=function(){\r
26187 return "["+this.NAME+" "+this.VERSION+"]";\r
26188 };\r
26189 MochiKit.Format.toString=function(){\r
26190 return this.__repr__();\r
26191 };\r
26192 MochiKit.Format._numberFormatter=function(_249,_24a,_24b,_24c,_24d,_24e,_24f,_250,_251){\r
26193 return function(num){\r
26194 num=parseFloat(num);\r
26195 if(typeof (num)=="undefined"||num===null||isNaN(num)){\r
26196 return _249;\r
26197 }\r
26198 var _253=_24a;\r
26199 var _254=_24b;\r
26200 if(num<0){\r
26201 num=-num;\r
26202 }else{\r
26203 _253=_253.replace(/-/,"");\r
26204 }\r
26205 var me=arguments.callee;\r
26206 var fmt=MochiKit.Format.formatLocale(_24c);\r
26207 if(_24d){\r
26208 num=num*100;\r
26209 _254=fmt.percent+_254;\r
26210 }\r
26211 num=MochiKit.Format.roundToFixed(num,_24e);\r
26212 var _257=num.split(/\./);\r
26213 var _258=_257[0];\r
26214 var frac=(_257.length==1)?"":_257[1];\r
26215 var res="";\r
26216 while(_258.length<_24f){\r
26217 _258="0"+_258;\r
26218 }\r
26219 if(_250){\r
26220 while(_258.length>_250){\r
26221 var i=_258.length-_250;\r
26222 res=fmt.separator+_258.substring(i,_258.length)+res;\r
26223 _258=_258.substring(0,i);\r
26224 }\r
26225 }\r
26226 res=_258+res;\r
26227 if(_24e>0){\r
26228 while(frac.length<_251){\r
26229 frac=frac+"0";\r
26230 }\r
26231 res=res+fmt.decimal+frac;\r
26232 }\r
26233 return _253+res+_254;\r
26234 };\r
26235 };\r
26236 MochiKit.Format.numberFormatter=function(_25c,_25d,_25e){\r
26237 if(typeof (_25d)=="undefined"){\r
26238 _25d="";\r
26239 }\r
26240 var _25f=_25c.match(/((?:[0#]+,)?[0#]+)(?:\.([0#]+))?(%)?/);\r
26241 if(!_25f){\r
26242 throw TypeError("Invalid pattern");\r
26243 }\r
26244 var _260=_25c.substr(0,_25f.index);\r
26245 var _261=_25c.substr(_25f.index+_25f[0].length);\r
26246 if(_260.search(/-/)==-1){\r
26247 _260=_260+"-";\r
26248 }\r
26249 var _262=_25f[1];\r
26250 var frac=(typeof (_25f[2])=="string"&&_25f[2]!="")?_25f[2]:"";\r
26251 var _264=(typeof (_25f[3])=="string"&&_25f[3]!="");\r
26252 var tmp=_262.split(/,/);\r
26253 var _266;\r
26254 if(typeof (_25e)=="undefined"){\r
26255 _25e="default";\r
26256 }\r
26257 if(tmp.length==1){\r
26258 _266=null;\r
26259 }else{\r
26260 _266=tmp[1].length;\r
26261 }\r
26262 var _267=_262.length-_262.replace(/0/g,"").length;\r
26263 var _268=frac.length-frac.replace(/0/g,"").length;\r
26264 var _269=frac.length;\r
26265 var rval=MochiKit.Format._numberFormatter(_25d,_260,_261,_25e,_264,_269,_267,_266,_268);\r
26266 var m=MochiKit.Base;\r
26267 if(m){\r
26268 var fn=arguments.callee;\r
26269 var args=m.concat(arguments);\r
26270 rval.repr=function(){\r
26271 return [self.NAME,"(",map(m.repr,args).join(", "),")"].join("");\r
26272 };\r
26273 }\r
26274 return rval;\r
26275 };\r
26276 MochiKit.Format.formatLocale=function(_26e){\r
26277 if(typeof (_26e)=="undefined"||_26e===null){\r
26278 _26e="default";\r
26279 }\r
26280 if(typeof (_26e)=="string"){\r
26281 var rval=MochiKit.Format.LOCALE[_26e];\r
26282 if(typeof (rval)=="string"){\r
26283 rval=arguments.callee(rval);\r
26284 MochiKit.Format.LOCALE[_26e]=rval;\r
26285 }\r
26286 return rval;\r
26287 }else{\r
26288 return _26e;\r
26289 }\r
26290 };\r
26291 MochiKit.Format.twoDigitAverage=function(_270,_271){\r
26292 if(_271){\r
26293 var res=_270/_271;\r
26294 if(!isNaN(res)){\r
26295 return MochiKit.Format.twoDigitFloat(res);\r
26296 }\r
26297 }\r
26298 return "0";\r
26299 };\r
26300 MochiKit.Format.twoDigitFloat=function(_273){\r
26301 var res=roundToFixed(_273,2);\r
26302 if(res.indexOf(".00")>0){\r
26303 return res.substring(0,res.length-3);\r
26304 }else{\r
26305 if(res.charAt(res.length-1)=="0"){\r
26306 return res.substring(0,res.length-1);\r
26307 }else{\r
26308 return res;\r
26309 }\r
26310 }\r
26311 };\r
26312 MochiKit.Format.lstrip=function(str,_276){\r
26313 str=str+"";\r
26314 if(typeof (str)!="string"){\r
26315 return null;\r
26316 }\r
26317 if(!_276){\r
26318 return str.replace(/^\s+/,"");\r
26319 }else{\r
26320 return str.replace(new RegExp("^["+_276+"]+"),"");\r
26321 }\r
26322 };\r
26323 MochiKit.Format.rstrip=function(str,_278){\r
26324 str=str+"";\r
26325 if(typeof (str)!="string"){\r
26326 return null;\r
26327 }\r
26328 if(!_278){\r
26329 return str.replace(/\s+$/,"");\r
26330 }else{\r
26331 return str.replace(new RegExp("["+_278+"]+$"),"");\r
26332 }\r
26333 };\r
26334 MochiKit.Format.strip=function(str,_27a){\r
26335 var self=MochiKit.Format;\r
26336 return self.rstrip(self.lstrip(str,_27a),_27a);\r
26337 };\r
26338 MochiKit.Format.truncToFixed=function(_27c,_27d){\r
26339 var res=Math.floor(_27c).toFixed(0);\r
26340 if(_27c<0){\r
26341 res=Math.ceil(_27c).toFixed(0);\r
26342 if(res.charAt(0)!="-"&&_27d>0){\r
26343 res="-"+res;\r
26344 }\r
26345 }\r
26346 if(res.indexOf("e")<0&&_27d>0){\r
26347 var tail=_27c.toString();\r
26348 if(tail.indexOf("e")>0){\r
26349 tail=".";\r
26350 }else{\r
26351 if(tail.indexOf(".")<0){\r
26352 tail=".";\r
26353 }else{\r
26354 tail=tail.substring(tail.indexOf("."));\r
26355 }\r
26356 }\r
26357 if(tail.length-1>_27d){\r
26358 tail=tail.substring(0,_27d+1);\r
26359 }\r
26360 while(tail.length-1<_27d){\r
26361 tail+="0";\r
26362 }\r
26363 res+=tail;\r
26364 }\r
26365 return res;\r
26366 };\r
26367 MochiKit.Format.roundToFixed=function(_280,_281){\r
26368 var _282=Math.abs(_280)+0.5*Math.pow(10,-_281);\r
26369 var res=MochiKit.Format.truncToFixed(_282,_281);\r
26370 if(_280<0){\r
26371 res="-"+res;\r
26372 }\r
26373 return res;\r
26374 };\r
26375 MochiKit.Format.percentFormat=function(_284){\r
26376 return MochiKit.Format.twoDigitFloat(100*_284)+"%";\r
26377 };\r
26378 MochiKit.Format.EXPORT=["truncToFixed","roundToFixed","numberFormatter","formatLocale","twoDigitAverage","twoDigitFloat","percentFormat","lstrip","rstrip","strip"];\r
26379 MochiKit.Format.LOCALE={en_US:{separator:",",decimal:".",percent:"%"},de_DE:{separator:".",decimal:",",percent:"%"},pt_BR:{separator:".",decimal:",",percent:"%"},fr_FR:{separator:" ",decimal:",",percent:"%"},"default":"en_US"};\r
26380 MochiKit.Format.EXPORT_OK=[];\r
26381 MochiKit.Format.EXPORT_TAGS={":all":MochiKit.Format.EXPORT,":common":MochiKit.Format.EXPORT};\r
26382 MochiKit.Format.__new__=function(){\r
26383 var base=this.NAME+".";\r
26384 var k,v,o;\r
26385 for(k in this.LOCALE){\r
26386 o=this.LOCALE[k];\r
26387 if(typeof (o)=="object"){\r
26388 o.repr=function(){\r
26389 return this.NAME;\r
26390 };\r
26391 o.NAME=base+"LOCALE."+k;\r
26392 }\r
26393 }\r
26394 for(k in this){\r
26395 o=this[k];\r
26396 if(typeof (o)=="function"&&typeof (o.NAME)=="undefined"){\r
26397 try{\r
26398 o.NAME=base+k;\r
26399 }\r
26400 catch(e){\r
26401 }\r
26402 }\r
26403 }\r
26404 };\r
26405 MochiKit.Format.__new__();\r
26406 if(typeof (MochiKit.Base)!="undefined"){\r
26407 MochiKit.Base._exportSymbols(this,MochiKit.Format);\r
26408 }else{\r
26409 (function(_289,_28a){\r
26410 if((typeof (JSAN)=="undefined"&&typeof (dojo)=="undefined")||(MochiKit.__export__===false)){\r
26411 var all=_28a.EXPORT_TAGS[":all"];\r
26412 for(var i=0;i<all.length;i++){\r
26413 _289[all[i]]=_28a[all[i]];\r
26414 }\r
26415 }\r
26416 })(this,MochiKit.Format);\r
26417 }\r
26418 MochiKit.Base._deps("Async",["Base"]);\r
26419 MochiKit.Async.NAME="MochiKit.Async";\r
26420 MochiKit.Async.VERSION="1.4.2";\r
26421 MochiKit.Async.__repr__=function(){\r
26422 return "["+this.NAME+" "+this.VERSION+"]";\r
26423 };\r
26424 MochiKit.Async.toString=function(){\r
26425 return this.__repr__();\r
26426 };\r
26427 MochiKit.Async.Deferred=function(_28d){\r
26428 this.chain=[];\r
26429 this.id=this._nextId();\r
26430 this.fired=-1;\r
26431 this.paused=0;\r
26432 this.results=[null,null];\r
26433 this.canceller=_28d;\r
26434 this.silentlyCancelled=false;\r
26435 this.chained=false;\r
26436 };\r
26437 MochiKit.Async.Deferred.prototype={repr:function(){\r
26438 var _28e;\r
26439 if(this.fired==-1){\r
26440 _28e="unfired";\r
26441 }else{\r
26442 if(this.fired===0){\r
26443 _28e="success";\r
26444 }else{\r
26445 _28e="error";\r
26446 }\r
26447 }\r
26448 return "Deferred("+this.id+", "+_28e+")";\r
26449 },toString:MochiKit.Base.forwardCall("repr"),_nextId:MochiKit.Base.counter(),cancel:function(){\r
26450 var self=MochiKit.Async;\r
26451 if(this.fired==-1){\r
26452 if(this.canceller){\r
26453 this.canceller(this);\r
26454 }else{\r
26455 this.silentlyCancelled=true;\r
26456 }\r
26457 if(this.fired==-1){\r
26458 this.errback(new self.CancelledError(this));\r
26459 }\r
26460 }else{\r
26461 if((this.fired===0)&&(this.results[0] instanceof self.Deferred)){\r
26462 this.results[0].cancel();\r
26463 }\r
26464 }\r
26465 },_resback:function(res){\r
26466 this.fired=((res instanceof Error)?1:0);\r
26467 this.results[this.fired]=res;\r
26468 this._fire();\r
26469 },_check:function(){\r
26470 if(this.fired!=-1){\r
26471 if(!this.silentlyCancelled){\r
26472 throw new MochiKit.Async.AlreadyCalledError(this);\r
26473 }\r
26474 this.silentlyCancelled=false;\r
26475 return;\r
26476 }\r
26477 },callback:function(res){\r
26478 this._check();\r
26479 if(res instanceof MochiKit.Async.Deferred){\r
26480 throw new Error("Deferred instances can only be chained if they are the result of a callback");\r
26481 }\r
26482 this._resback(res);\r
26483 },errback:function(res){\r
26484 this._check();\r
26485 var self=MochiKit.Async;\r
26486 if(res instanceof self.Deferred){\r
26487 throw new Error("Deferred instances can only be chained if they are the result of a callback");\r
26488 }\r
26489 if(!(res instanceof Error)){\r
26490 res=new self.GenericError(res);\r
26491 }\r
26492 this._resback(res);\r
26493 },addBoth:function(fn){\r
26494 if(arguments.length>1){\r
26495 fn=MochiKit.Base.partial.apply(null,arguments);\r
26496 }\r
26497 return this.addCallbacks(fn,fn);\r
26498 },addCallback:function(fn){\r
26499 if(arguments.length>1){\r
26500 fn=MochiKit.Base.partial.apply(null,arguments);\r
26501 }\r
26502 return this.addCallbacks(fn,null);\r
26503 },addErrback:function(fn){\r
26504 if(arguments.length>1){\r
26505 fn=MochiKit.Base.partial.apply(null,arguments);\r
26506 }\r
26507 return this.addCallbacks(null,fn);\r
26508 },addCallbacks:function(cb,eb){\r
26509 if(this.chained){\r
26510 throw new Error("Chained Deferreds can not be re-used");\r
26511 }\r
26512 this.chain.push([cb,eb]);\r
26513 if(this.fired>=0){\r
26514 this._fire();\r
26515 }\r
26516 return this;\r
26517 },_fire:function(){\r
26518 var _299=this.chain;\r
26519 var _29a=this.fired;\r
26520 var res=this.results[_29a];\r
26521 var self=this;\r
26522 var cb=null;\r
26523 while(_299.length>0&&this.paused===0){\r
26524 var pair=_299.shift();\r
26525 var f=pair[_29a];\r
26526 if(f===null){\r
26527 continue;\r
26528 }\r
26529 try{\r
26530 res=f(res);\r
26531 _29a=((res instanceof Error)?1:0);\r
26532 if(res instanceof MochiKit.Async.Deferred){\r
26533 cb=function(res){\r
26534 self._resback(res);\r
26535 self.paused--;\r
26536 if((self.paused===0)&&(self.fired>=0)){\r
26537 self._fire();\r
26538 }\r
26539 };\r
26540 this.paused++;\r
26541 }\r
26542 }\r
26543 catch(err){\r
26544 _29a=1;\r
26545 if(!(err instanceof Error)){\r
26546 err=new MochiKit.Async.GenericError(err);\r
26547 }\r
26548 res=err;\r
26549 }\r
26550 }\r
26551 this.fired=_29a;\r
26552 this.results[_29a]=res;\r
26553 if(cb&&this.paused){\r
26554 res.addBoth(cb);\r
26555 res.chained=true;\r
26556 }\r
26557 }};\r
26558 MochiKit.Base.update(MochiKit.Async,{evalJSONRequest:function(req){\r
26559 return MochiKit.Base.evalJSON(req.responseText);\r
26560 },succeed:function(_2a2){\r
26561 var d=new MochiKit.Async.Deferred();\r
26562 d.callback.apply(d,arguments);\r
26563 return d;\r
26564 },fail:function(_2a4){\r
26565 var d=new MochiKit.Async.Deferred();\r
26566 d.errback.apply(d,arguments);\r
26567 return d;\r
26568 },getXMLHttpRequest:function(){\r
26569 var self=arguments.callee;\r
26570 if(!self.XMLHttpRequest){\r
26571 var _2a7=[function(){\r
26572 return new XMLHttpRequest();\r
26573 },function(){\r
26574 return new ActiveXObject("Msxml2.XMLHTTP");\r
26575 },function(){\r
26576 return new ActiveXObject("Microsoft.XMLHTTP");\r
26577 },function(){\r
26578 return new ActiveXObject("Msxml2.XMLHTTP.4.0");\r
26579 },function(){\r
26580 throw new MochiKit.Async.BrowserComplianceError("Browser does not support XMLHttpRequest");\r
26581 }];\r
26582 for(var i=0;i<_2a7.length;i++){\r
26583 var func=_2a7[i];\r
26584 try{\r
26585 self.XMLHttpRequest=func;\r
26586 return func();\r
26587 }\r
26588 catch(e){\r
26589 }\r
26590 }\r
26591 }\r
26592 return self.XMLHttpRequest();\r
26593 },_xhr_onreadystatechange:function(d){\r
26594 var m=MochiKit.Base;\r
26595 if(this.readyState==4){\r
26596 try{\r
26597 this.onreadystatechange=null;\r
26598 }\r
26599 catch(e){\r
26600 try{\r
26601 this.onreadystatechange=m.noop;\r
26602 }\r
26603 catch(e){\r
26604 }\r
26605 }\r
26606 var _2ac=null;\r
26607 try{\r
26608 _2ac=this.status;\r
26609 if(!_2ac&&m.isNotEmpty(this.responseText)){\r
26610 _2ac=304;\r
26611 }\r
26612 }\r
26613 catch(e){\r
26614 }\r
26615 if(_2ac==200||_2ac==201||_2ac==204||_2ac==304||_2ac==1223){\r
26616 d.callback(this);\r
26617 }else{\r
26618 var err=new MochiKit.Async.XMLHttpRequestError(this,"Request failed");\r
26619 if(err.number){\r
26620 d.errback(err);\r
26621 }else{\r
26622 d.errback(err);\r
26623 }\r
26624 }\r
26625 }\r
26626 },_xhr_canceller:function(req){\r
26627 try{\r
26628 req.onreadystatechange=null;\r
26629 }\r
26630 catch(e){\r
26631 try{\r
26632 req.onreadystatechange=MochiKit.Base.noop;\r
26633 }\r
26634 catch(e){\r
26635 }\r
26636 }\r
26637 req.abort();\r
26638 },sendXMLHttpRequest:function(req,_2b0){\r
26639 if(typeof (_2b0)=="undefined"||_2b0===null){\r
26640 _2b0="";\r
26641 }\r
26642 var m=MochiKit.Base;\r
26643 var self=MochiKit.Async;\r
26644 var d=new self.Deferred(m.partial(self._xhr_canceller,req));\r
26645 try{\r
26646 req.onreadystatechange=m.bind(self._xhr_onreadystatechange,req,d);\r
26647 req.send(_2b0);\r
26648 }\r
26649 catch(e){\r
26650 try{\r
26651 req.onreadystatechange=null;\r
26652 }\r
26653 catch(ignore){\r
26654 }\r
26655 d.errback(e);\r
26656 }\r
26657 return d;\r
26658 },doXHR:function(url,opts){\r
26659 var self=MochiKit.Async;\r
26660 return self.callLater(0,self._doXHR,url,opts);\r
26661 },_doXHR:function(url,opts){\r
26662 var m=MochiKit.Base;\r
26663 opts=m.update({method:"GET",sendContent:""},opts);\r
26664 var self=MochiKit.Async;\r
26665 var req=self.getXMLHttpRequest();\r
26666 if(opts.queryString){\r
26667 var qs=m.queryString(opts.queryString);\r
26668 if(qs){\r
26669 url+="?"+qs;\r
26670 }\r
26671 }\r
26672 if("username" in opts){\r
26673 req.open(opts.method,url,true,opts.username,opts.password);\r
26674 }else{\r
26675 req.open(opts.method,url,true);\r
26676 }\r
26677 if(req.overrideMimeType&&opts.mimeType){\r
26678 req.overrideMimeType(opts.mimeType);\r
26679 }\r
26680 req.setRequestHeader("X-Requested-With","XMLHttpRequest");\r
26681 if(opts.headers){\r
26682 var _2bd=opts.headers;\r
26683 if(!m.isArrayLike(_2bd)){\r
26684 _2bd=m.items(_2bd);\r
26685 }\r
26686 for(var i=0;i<_2bd.length;i++){\r
26687 var _2bf=_2bd[i];\r
26688 var name=_2bf[0];\r
26689 var _2c1=_2bf[1];\r
26690 req.setRequestHeader(name,_2c1);\r
26691 }\r
26692 }\r
26693 return self.sendXMLHttpRequest(req,opts.sendContent);\r
26694 },_buildURL:function(url){\r
26695 if(arguments.length>1){\r
26696 var m=MochiKit.Base;\r
26697 var qs=m.queryString.apply(null,m.extend(null,arguments,1));\r
26698 if(qs){\r
26699 return url+"?"+qs;\r
26700 }\r
26701 }\r
26702 return url;\r
26703 },doSimpleXMLHttpRequest:function(url){\r
26704 var self=MochiKit.Async;\r
26705 url=self._buildURL.apply(self,arguments);\r
26706 return self.doXHR(url);\r
26707 },loadJSONDoc:function(url){\r
26708 var self=MochiKit.Async;\r
26709 url=self._buildURL.apply(self,arguments);\r
26710 var d=self.doXHR(url,{"mimeType":"text/plain","headers":[["Accept","application/json"]]});\r
26711 d=d.addCallback(self.evalJSONRequest);\r
26712 return d;\r
26713 },wait:function(_2ca,_2cb){\r
26714 var d=new MochiKit.Async.Deferred();\r
26715 var m=MochiKit.Base;\r
26716 if(typeof (_2cb)!="undefined"){\r
26717 d.addCallback(function(){\r
26718 return _2cb;\r
26719 });\r
26720 }\r
26721 var _2ce=setTimeout(m.bind("callback",d),Math.floor(_2ca*1000));\r
26722 d.canceller=function(){\r
26723 try{\r
26724 clearTimeout(_2ce);\r
26725 }\r
26726 catch(e){\r
26727 }\r
26728 };\r
26729 return d;\r
26730 },callLater:function(_2cf,func){\r
26731 var m=MochiKit.Base;\r
26732 var _2d2=m.partial.apply(m,m.extend(null,arguments,1));\r
26733 return MochiKit.Async.wait(_2cf).addCallback(function(res){\r
26734 return _2d2();\r
26735 });\r
26736 }});\r
26737 MochiKit.Async.DeferredLock=function(){\r
26738 this.waiting=[];\r
26739 this.locked=false;\r
26740 this.id=this._nextId();\r
26741 };\r
26742 MochiKit.Async.DeferredLock.prototype={__class__:MochiKit.Async.DeferredLock,acquire:function(){\r
26743 var d=new MochiKit.Async.Deferred();\r
26744 if(this.locked){\r
26745 this.waiting.push(d);\r
26746 }else{\r
26747 this.locked=true;\r
26748 d.callback(this);\r
26749 }\r
26750 return d;\r
26751 },release:function(){\r
26752 if(!this.locked){\r
26753 throw TypeError("Tried to release an unlocked DeferredLock");\r
26754 }\r
26755 this.locked=false;\r
26756 if(this.waiting.length>0){\r
26757 this.locked=true;\r
26758 this.waiting.shift().callback(this);\r
26759 }\r
26760 },_nextId:MochiKit.Base.counter(),repr:function(){\r
26761 var _2d5;\r
26762 if(this.locked){\r
26763 _2d5="locked, "+this.waiting.length+" waiting";\r
26764 }else{\r
26765 _2d5="unlocked";\r
26766 }\r
26767 return "DeferredLock("+this.id+", "+_2d5+")";\r
26768 },toString:MochiKit.Base.forwardCall("repr")};\r
26769 MochiKit.Async.DeferredList=function(list,_2d7,_2d8,_2d9,_2da){\r
26770 MochiKit.Async.Deferred.apply(this,[_2da]);\r
26771 this.list=list;\r
26772 var _2db=[];\r
26773 this.resultList=_2db;\r
26774 this.finishedCount=0;\r
26775 this.fireOnOneCallback=_2d7;\r
26776 this.fireOnOneErrback=_2d8;\r
26777 this.consumeErrors=_2d9;\r
26778 var cb=MochiKit.Base.bind(this._cbDeferred,this);\r
26779 for(var i=0;i<list.length;i++){\r
26780 var d=list[i];\r
26781 _2db.push(undefined);\r
26782 d.addCallback(cb,i,true);\r
26783 d.addErrback(cb,i,false);\r
26784 }\r
26785 if(list.length===0&&!_2d7){\r
26786 this.callback(this.resultList);\r
26787 }\r
26788 };\r
26789 MochiKit.Async.DeferredList.prototype=new MochiKit.Async.Deferred();\r
26790 MochiKit.Async.DeferredList.prototype._cbDeferred=function(_2df,_2e0,_2e1){\r
26791 this.resultList[_2df]=[_2e0,_2e1];\r
26792 this.finishedCount+=1;\r
26793 if(this.fired==-1){\r
26794 if(_2e0&&this.fireOnOneCallback){\r
26795 this.callback([_2df,_2e1]);\r
26796 }else{\r
26797 if(!_2e0&&this.fireOnOneErrback){\r
26798 this.errback(_2e1);\r
26799 }else{\r
26800 if(this.finishedCount==this.list.length){\r
26801 this.callback(this.resultList);\r
26802 }\r
26803 }\r
26804 }\r
26805 }\r
26806 if(!_2e0&&this.consumeErrors){\r
26807 _2e1=null;\r
26808 }\r
26809 return _2e1;\r
26810 };\r
26811 MochiKit.Async.gatherResults=function(_2e2){\r
26812 var d=new MochiKit.Async.DeferredList(_2e2,false,true,false);\r
26813 d.addCallback(function(_2e4){\r
26814 var ret=[];\r
26815 for(var i=0;i<_2e4.length;i++){\r
26816 ret.push(_2e4[i][1]);\r
26817 }\r
26818 return ret;\r
26819 });\r
26820 return d;\r
26821 };\r
26822 MochiKit.Async.maybeDeferred=function(func){\r
26823 var self=MochiKit.Async;\r
26824 var _2e9;\r
26825 try{\r
26826 var r=func.apply(null,MochiKit.Base.extend([],arguments,1));\r
26827 if(r instanceof self.Deferred){\r
26828 _2e9=r;\r
26829 }else{\r
26830 if(r instanceof Error){\r
26831 _2e9=self.fail(r);\r
26832 }else{\r
26833 _2e9=self.succeed(r);\r
26834 }\r
26835 }\r
26836 }\r
26837 catch(e){\r
26838 _2e9=self.fail(e);\r
26839 }\r
26840 return _2e9;\r
26841 };\r
26842 MochiKit.Async.EXPORT=["AlreadyCalledError","CancelledError","BrowserComplianceError","GenericError","XMLHttpRequestError","Deferred","succeed","fail","getXMLHttpRequest","doSimpleXMLHttpRequest","loadJSONDoc","wait","callLater","sendXMLHttpRequest","DeferredLock","DeferredList","gatherResults","maybeDeferred","doXHR"];\r
26843 MochiKit.Async.EXPORT_OK=["evalJSONRequest"];\r
26844 MochiKit.Async.__new__=function(){\r
26845 var m=MochiKit.Base;\r
26846 var ne=m.partial(m._newNamedError,this);\r
26847 ne("AlreadyCalledError",function(_2ed){\r
26848 this.deferred=_2ed;\r
26849 });\r
26850 ne("CancelledError",function(_2ee){\r
26851 this.deferred=_2ee;\r
26852 });\r
26853 ne("BrowserComplianceError",function(msg){\r
26854 this.message=msg;\r
26855 });\r
26856 ne("GenericError",function(msg){\r
26857 this.message=msg;\r
26858 });\r
26859 ne("XMLHttpRequestError",function(req,msg){\r
26860 this.req=req;\r
26861 this.message=msg;\r
26862 try{\r
26863 this.number=req.status;\r
26864 }\r
26865 catch(e){\r
26866 }\r
26867 });\r
26868 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
26869 m.nameFunctions(this);\r
26870 };\r
26871 MochiKit.Async.__new__();\r
26872 MochiKit.Base._exportSymbols(this,MochiKit.Async);\r
26873 MochiKit.Base._deps("DOM",["Base"]);\r
26874 MochiKit.DOM.NAME="MochiKit.DOM";\r
26875 MochiKit.DOM.VERSION="1.4.2";\r
26876 MochiKit.DOM.__repr__=function(){\r
26877 return "["+this.NAME+" "+this.VERSION+"]";\r
26878 };\r
26879 MochiKit.DOM.toString=function(){\r
26880 return this.__repr__();\r
26881 };\r
26882 MochiKit.DOM.EXPORT=["removeEmptyTextNodes","formContents","currentWindow","currentDocument","withWindow","withDocument","registerDOMConverter","coerceToDOM","createDOM","createDOMFunc","isChildNode","getNodeAttribute","removeNodeAttribute","setNodeAttribute","updateNodeAttributes","appendChildNodes","insertSiblingNodesAfter","insertSiblingNodesBefore","replaceChildNodes","removeElement","swapDOM","BUTTON","TT","PRE","H1","H2","H3","H4","H5","H6","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","P","UL","OL","LI","DL","DT","DD","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG","getElement","$","getElementsByTagAndClassName","addToCallStack","addLoadEvent","focusOnLoad","setElementClass","toggleElementClass","addElementClass","removeElementClass","swapElementClass","hasElementClass","computedStyle","escapeHTML","toHTML","emitHTML","scrapeText","getFirstParentByTagAndClassName","getFirstElementByTagAndClassName"];\r
26883 MochiKit.DOM.EXPORT_OK=["domConverters"];\r
26884 MochiKit.DOM.DEPRECATED=[["computedStyle","MochiKit.Style.getStyle","1.4"],["elementDimensions","MochiKit.Style.getElementDimensions","1.4"],["elementPosition","MochiKit.Style.getElementPosition","1.4"],["getViewportDimensions","MochiKit.Style.getViewportDimensions","1.4"],["hideElement","MochiKit.Style.hideElement","1.4"],["makeClipping","MochiKit.Style.makeClipping","1.4.1"],["makePositioned","MochiKit.Style.makePositioned","1.4.1"],["setElementDimensions","MochiKit.Style.setElementDimensions","1.4"],["setElementPosition","MochiKit.Style.setElementPosition","1.4"],["setDisplayForElement","MochiKit.Style.setDisplayForElement","1.4"],["setOpacity","MochiKit.Style.setOpacity","1.4"],["showElement","MochiKit.Style.showElement","1.4"],["undoClipping","MochiKit.Style.undoClipping","1.4.1"],["undoPositioned","MochiKit.Style.undoPositioned","1.4.1"],["Coordinates","MochiKit.Style.Coordinates","1.4"],["Dimensions","MochiKit.Style.Dimensions","1.4"]];\r
26885 MochiKit.Base.update(MochiKit.DOM,{currentWindow:function(){\r
26886 return MochiKit.DOM._window;\r
26887 },currentDocument:function(){\r
26888 return MochiKit.DOM._document;\r
26889 },withWindow:function(win,func){\r
26890 var self=MochiKit.DOM;\r
26891 var _2f6=self._document;\r
26892 var _2f7=self._window;\r
26893 var rval;\r
26894 try{\r
26895 self._window=win;\r
26896 self._document=win.document;\r
26897 rval=func();\r
26898 }\r
26899 catch(e){\r
26900 self._window=_2f7;\r
26901 self._document=_2f6;\r
26902 throw e;\r
26903 }\r
26904 self._window=_2f7;\r
26905 self._document=_2f6;\r
26906 return rval;\r
26907 },formContents:function(elem){\r
26908 var _2fa=[];\r
26909 var _2fb=[];\r
26910 var m=MochiKit.Base;\r
26911 var self=MochiKit.DOM;\r
26912 if(typeof (elem)=="undefined"||elem===null){\r
26913 elem=self._document.body;\r
26914 }else{\r
26915 elem=self.getElement(elem);\r
26916 }\r
26917 m.nodeWalk(elem,function(elem){\r
26918 var name=elem.name;\r
26919 if(m.isNotEmpty(name)){\r
26920 var _300=elem.tagName.toUpperCase();\r
26921 if(_300==="INPUT"&&(elem.type=="radio"||elem.type=="checkbox")&&!elem.checked){\r
26922 return null;\r
26923 }\r
26924 if(_300==="SELECT"){\r
26925 if(elem.type=="select-one"){\r
26926 if(elem.selectedIndex>=0){\r
26927 var opt=elem.options[elem.selectedIndex];\r
26928 var v=opt.value;\r
26929 if(!v){\r
26930 var h=opt.outerHTML;\r
26931 if(h&&!h.match(/^[^>]+\svalue\s*=/i)){\r
26932 v=opt.text;\r
26933 }\r
26934 }\r
26935 _2fa.push(name);\r
26936 _2fb.push(v);\r
26937 return null;\r
26938 }\r
26939 _2fa.push(name);\r
26940 _2fb.push("");\r
26941 return null;\r
26942 }else{\r
26943 var opts=elem.options;\r
26944 if(!opts.length){\r
26945 _2fa.push(name);\r
26946 _2fb.push("");\r
26947 return null;\r
26948 }\r
26949 for(var i=0;i<opts.length;i++){\r
26950 var opt=opts[i];\r
26951 if(!opt.selected){\r
26952 continue;\r
26953 }\r
26954 var v=opt.value;\r
26955 if(!v){\r
26956 var h=opt.outerHTML;\r
26957 if(h&&!h.match(/^[^>]+\svalue\s*=/i)){\r
26958 v=opt.text;\r
26959 }\r
26960 }\r
26961 _2fa.push(name);\r
26962 _2fb.push(v);\r
26963 }\r
26964 return null;\r
26965 }\r
26966 }\r
26967 if(_300==="FORM"||_300==="P"||_300==="SPAN"||_300==="DIV"){\r
26968 return elem.childNodes;\r
26969 }\r
26970 _2fa.push(name);\r
26971 _2fb.push(elem.value||"");\r
26972 return null;\r
26973 }\r
26974 return elem.childNodes;\r
26975 });\r
26976 return [_2fa,_2fb];\r
26977 },withDocument:function(doc,func){\r
26978 var self=MochiKit.DOM;\r
26979 var _309=self._document;\r
26980 var rval;\r
26981 try{\r
26982 self._document=doc;\r
26983 rval=func();\r
26984 }\r
26985 catch(e){\r
26986 self._document=_309;\r
26987 throw e;\r
26988 }\r
26989 self._document=_309;\r
26990 return rval;\r
26991 },registerDOMConverter:function(name,_30c,wrap,_30e){\r
26992 MochiKit.DOM.domConverters.register(name,_30c,wrap,_30e);\r
26993 },coerceToDOM:function(node,ctx){\r
26994 var m=MochiKit.Base;\r
26995 var im=MochiKit.Iter;\r
26996 var self=MochiKit.DOM;\r
26997 if(im){\r
26998 var iter=im.iter;\r
26999 var _315=im.repeat;\r
27000 }\r
27001 var map=m.map;\r
27002 var _317=self.domConverters;\r
27003 var _318=arguments.callee;\r
27004 var _319=m.NotFound;\r
27005 while(true){\r
27006 if(typeof (node)=="undefined"||node===null){\r
27007 return null;\r
27008 }\r
27009 if(typeof (node)=="function"&&typeof (node.length)=="number"&&!(node instanceof Function)){\r
27010 node=im?im.list(node):m.extend(null,node);\r
27011 }\r
27012 if(typeof (node.nodeType)!="undefined"&&node.nodeType>0){\r
27013 return node;\r
27014 }\r
27015 if(typeof (node)=="number"||typeof (node)=="boolean"){\r
27016 node=node.toString();\r
27017 }\r
27018 if(typeof (node)=="string"){\r
27019 return self._document.createTextNode(node);\r
27020 }\r
27021 if(typeof (node.__dom__)=="function"){\r
27022 node=node.__dom__(ctx);\r
27023 continue;\r
27024 }\r
27025 if(typeof (node.dom)=="function"){\r
27026 node=node.dom(ctx);\r
27027 continue;\r
27028 }\r
27029 if(typeof (node)=="function"){\r
27030 node=node.apply(ctx,[ctx]);\r
27031 continue;\r
27032 }\r
27033 if(im){\r
27034 var _31a=null;\r
27035 try{\r
27036 _31a=iter(node);\r
27037 }\r
27038 catch(e){\r
27039 }\r
27040 if(_31a){\r
27041 return map(_318,_31a,_315(ctx));\r
27042 }\r
27043 }else{\r
27044 if(m.isArrayLike(node)){\r
27045 var func=function(n){\r
27046 return _318(n,ctx);\r
27047 };\r
27048 return map(func,node);\r
27049 }\r
27050 }\r
27051 try{\r
27052 node=_317.match(node,ctx);\r
27053 continue;\r
27054 }\r
27055 catch(e){\r
27056 if(e!=_319){\r
27057 throw e;\r
27058 }\r
27059 }\r
27060 return self._document.createTextNode(node.toString());\r
27061 }\r
27062 return undefined;\r
27063 },isChildNode:function(node,_31e){\r
27064 var self=MochiKit.DOM;\r
27065 if(typeof (node)=="string"){\r
27066 node=self.getElement(node);\r
27067 }\r
27068 if(typeof (_31e)=="string"){\r
27069 _31e=self.getElement(_31e);\r
27070 }\r
27071 if(typeof (node)=="undefined"||node===null){\r
27072 return false;\r
27073 }\r
27074 while(node!=null&&node!==self._document){\r
27075 if(node===_31e){\r
27076 return true;\r
27077 }\r
27078 node=node.parentNode;\r
27079 }\r
27080 return false;\r
27081 },setNodeAttribute:function(node,attr,_322){\r
27082 var o={};\r
27083 o[attr]=_322;\r
27084 try{\r
27085 return MochiKit.DOM.updateNodeAttributes(node,o);\r
27086 }\r
27087 catch(e){\r
27088 }\r
27089 return null;\r
27090 },getNodeAttribute:function(node,attr){\r
27091 var self=MochiKit.DOM;\r
27092 var _327=self.attributeArray.renames[attr];\r
27093 var _328=self.attributeArray.ignoreAttr[attr];\r
27094 node=self.getElement(node);\r
27095 try{\r
27096 if(_327){\r
27097 return node[_327];\r
27098 }\r
27099 var _329=node.getAttribute(attr);\r
27100 if(_329!=_328){\r
27101 return _329;\r
27102 }\r
27103 }\r
27104 catch(e){\r
27105 }\r
27106 return null;\r
27107 },removeNodeAttribute:function(node,attr){\r
27108 var self=MochiKit.DOM;\r
27109 var _32d=self.attributeArray.renames[attr];\r
27110 node=self.getElement(node);\r
27111 try{\r
27112 if(_32d){\r
27113 return node[_32d];\r
27114 }\r
27115 return node.removeAttribute(attr);\r
27116 }\r
27117 catch(e){\r
27118 }\r
27119 return null;\r
27120 },updateNodeAttributes:function(node,_32f){\r
27121 var elem=node;\r
27122 var self=MochiKit.DOM;\r
27123 if(typeof (node)=="string"){\r
27124 elem=self.getElement(node);\r
27125 }\r
27126 if(_32f){\r
27127 var _332=MochiKit.Base.updatetree;\r
27128 if(self.attributeArray.compliant){\r
27129 for(var k in _32f){\r
27130 var v=_32f[k];\r
27131 if(typeof (v)=="object"&&typeof (elem[k])=="object"){\r
27132 if(k=="style"&&MochiKit.Style){\r
27133 MochiKit.Style.setStyle(elem,v);\r
27134 }else{\r
27135 _332(elem[k],v);\r
27136 }\r
27137 }else{\r
27138 if(k.substring(0,2)=="on"){\r
27139 if(typeof (v)=="string"){\r
27140 v=new Function(v);\r
27141 }\r
27142 elem[k]=v;\r
27143 }else{\r
27144 elem.setAttribute(k,v);\r
27145 }\r
27146 }\r
27147 if(typeof (elem[k])=="string"&&elem[k]!=v){\r
27148 elem[k]=v;\r
27149 }\r
27150 }\r
27151 }else{\r
27152 var _335=self.attributeArray.renames;\r
27153 for(var k in _32f){\r
27154 v=_32f[k];\r
27155 var _336=_335[k];\r
27156 if(k=="style"&&typeof (v)=="string"){\r
27157 elem.style.cssText=v;\r
27158 }else{\r
27159 if(typeof (_336)=="string"){\r
27160 elem[_336]=v;\r
27161 }else{\r
27162 if(typeof (elem[k])=="object"&&typeof (v)=="object"){\r
27163 if(k=="style"&&MochiKit.Style){\r
27164 MochiKit.Style.setStyle(elem,v);\r
27165 }else{\r
27166 _332(elem[k],v);\r
27167 }\r
27168 }else{\r
27169 if(k.substring(0,2)=="on"){\r
27170 if(typeof (v)=="string"){\r
27171 v=new Function(v);\r
27172 }\r
27173 elem[k]=v;\r
27174 }else{\r
27175 elem.setAttribute(k,v);\r
27176 }\r
27177 }\r
27178 }\r
27179 }\r
27180 if(typeof (elem[k])=="string"&&elem[k]!=v){\r
27181 elem[k]=v;\r
27182 }\r
27183 }\r
27184 }\r
27185 }\r
27186 return elem;\r
27187 },appendChildNodes:function(node){\r
27188 var elem=node;\r
27189 var self=MochiKit.DOM;\r
27190 if(typeof (node)=="string"){\r
27191 elem=self.getElement(node);\r
27192 }\r
27193 var _33a=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];\r
27194 var _33b=MochiKit.Base.concat;\r
27195 while(_33a.length){\r
27196 var n=_33a.shift();\r
27197 if(typeof (n)=="undefined"||n===null){\r
27198 }else{\r
27199 if(typeof (n.nodeType)=="number"){\r
27200 elem.appendChild(n);\r
27201 }else{\r
27202 _33a=_33b(n,_33a);\r
27203 }\r
27204 }\r
27205 }\r
27206 return elem;\r
27207 },insertSiblingNodesBefore:function(node){\r
27208 var elem=node;\r
27209 var self=MochiKit.DOM;\r
27210 if(typeof (node)=="string"){\r
27211 elem=self.getElement(node);\r
27212 }\r
27213 var _340=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];\r
27214 var _341=elem.parentNode;\r
27215 var _342=MochiKit.Base.concat;\r
27216 while(_340.length){\r
27217 var n=_340.shift();\r
27218 if(typeof (n)=="undefined"||n===null){\r
27219 }else{\r
27220 if(typeof (n.nodeType)=="number"){\r
27221 _341.insertBefore(n,elem);\r
27222 }else{\r
27223 _340=_342(n,_340);\r
27224 }\r
27225 }\r
27226 }\r
27227 return _341;\r
27228 },insertSiblingNodesAfter:function(node){\r
27229 var elem=node;\r
27230 var self=MochiKit.DOM;\r
27231 if(typeof (node)=="string"){\r
27232 elem=self.getElement(node);\r
27233 }\r
27234 var _347=[self.coerceToDOM(MochiKit.Base.extend(null,arguments,1),elem)];\r
27235 if(elem.nextSibling){\r
27236 return self.insertSiblingNodesBefore(elem.nextSibling,_347);\r
27237 }else{\r
27238 return self.appendChildNodes(elem.parentNode,_347);\r
27239 }\r
27240 },replaceChildNodes:function(node){\r
27241 var elem=node;\r
27242 var self=MochiKit.DOM;\r
27243 if(typeof (node)=="string"){\r
27244 elem=self.getElement(node);\r
27245 arguments[0]=elem;\r
27246 }\r
27247 var _34b;\r
27248 while((_34b=elem.firstChild)){\r
27249 elem.removeChild(_34b);\r
27250 }\r
27251 if(arguments.length<2){\r
27252 return elem;\r
27253 }else{\r
27254 return self.appendChildNodes.apply(this,arguments);\r
27255 }\r
27256 },createDOM:function(name,_34d){\r
27257 var elem;\r
27258 var self=MochiKit.DOM;\r
27259 var m=MochiKit.Base;\r
27260 if(typeof (_34d)=="string"||typeof (_34d)=="number"){\r
27261 var args=m.extend([name,null],arguments,1);\r
27262 return arguments.callee.apply(this,args);\r
27263 }\r
27264 if(typeof (name)=="string"){\r
27265 var _352=self._xhtml;\r
27266 if(_34d&&!self.attributeArray.compliant){\r
27267 var _353="";\r
27268 if("name" in _34d){\r
27269 _353+=" name=\""+self.escapeHTML(_34d.name)+"\"";\r
27270 }\r
27271 if(name=="input"&&"type" in _34d){\r
27272 _353+=" type=\""+self.escapeHTML(_34d.type)+"\"";\r
27273 }\r
27274 if(_353){\r
27275 name="<"+name+_353+">";\r
27276 _352=false;\r
27277 }\r
27278 }\r
27279 var d=self._document;\r
27280 if(_352&&d===document){\r
27281 elem=d.createElementNS("http://www.w3.org/1999/xhtml",name);\r
27282 }else{\r
27283 elem=d.createElement(name);\r
27284 }\r
27285 }else{\r
27286 elem=name;\r
27287 }\r
27288 if(_34d){\r
27289 self.updateNodeAttributes(elem,_34d);\r
27290 }\r
27291 if(arguments.length<=2){\r
27292 return elem;\r
27293 }else{\r
27294 var args=m.extend([elem],arguments,2);\r
27295 return self.appendChildNodes.apply(this,args);\r
27296 }\r
27297 },createDOMFunc:function(){\r
27298 var m=MochiKit.Base;\r
27299 return m.partial.apply(this,m.extend([MochiKit.DOM.createDOM],arguments));\r
27300 },removeElement:function(elem){\r
27301 var self=MochiKit.DOM;\r
27302 var e=self.coerceToDOM(self.getElement(elem));\r
27303 e.parentNode.removeChild(e);\r
27304 return e;\r
27305 },swapDOM:function(dest,src){\r
27306 var self=MochiKit.DOM;\r
27307 dest=self.getElement(dest);\r
27308 var _35c=dest.parentNode;\r
27309 if(src){\r
27310 src=self.coerceToDOM(self.getElement(src),_35c);\r
27311 _35c.replaceChild(src,dest);\r
27312 }else{\r
27313 _35c.removeChild(dest);\r
27314 }\r
27315 return src;\r
27316 },getElement:function(id){\r
27317 var self=MochiKit.DOM;\r
27318 if(arguments.length==1){\r
27319 return ((typeof (id)=="string")?self._document.getElementById(id):id);\r
27320 }else{\r
27321 return MochiKit.Base.map(self.getElement,arguments);\r
27322 }\r
27323 },getElementsByTagAndClassName:function(_35f,_360,_361){\r
27324 var self=MochiKit.DOM;\r
27325 if(typeof (_35f)=="undefined"||_35f===null){\r
27326 _35f="*";\r
27327 }\r
27328 if(typeof (_361)=="undefined"||_361===null){\r
27329 _361=self._document;\r
27330 }\r
27331 _361=self.getElement(_361);\r
27332 if(_361==null){\r
27333 return [];\r
27334 }\r
27335 var _363=(_361.getElementsByTagName(_35f)||self._document.all);\r
27336 if(typeof (_360)=="undefined"||_360===null){\r
27337 return MochiKit.Base.extend(null,_363);\r
27338 }\r
27339 var _364=[];\r
27340 for(var i=0;i<_363.length;i++){\r
27341 var _366=_363[i];\r
27342 var cls=_366.className;\r
27343 if(typeof (cls)!="string"){\r
27344 cls=_366.getAttribute("class");\r
27345 }\r
27346 if(typeof (cls)=="string"){\r
27347 var _368=cls.split(" ");\r
27348 for(var j=0;j<_368.length;j++){\r
27349 if(_368[j]==_360){\r
27350 _364.push(_366);\r
27351 break;\r
27352 }\r
27353 }\r
27354 }\r
27355 }\r
27356 return _364;\r
27357 },_newCallStack:function(path,once){\r
27358 var rval=function(){\r
27359 var _36d=arguments.callee.callStack;\r
27360 for(var i=0;i<_36d.length;i++){\r
27361 if(_36d[i].apply(this,arguments)===false){\r
27362 break;\r
27363 }\r
27364 }\r
27365 if(once){\r
27366 try{\r
27367 this[path]=null;\r
27368 }\r
27369 catch(e){\r
27370 }\r
27371 }\r
27372 };\r
27373 rval.callStack=[];\r
27374 return rval;\r
27375 },addToCallStack:function(_36f,path,func,once){\r
27376 var self=MochiKit.DOM;\r
27377 var _374=_36f[path];\r
27378 var _375=_374;\r
27379 if(!(typeof (_374)=="function"&&typeof (_374.callStack)=="object"&&_374.callStack!==null)){\r
27380 _375=self._newCallStack(path,once);\r
27381 if(typeof (_374)=="function"){\r
27382 _375.callStack.push(_374);\r
27383 }\r
27384 _36f[path]=_375;\r
27385 }\r
27386 _375.callStack.push(func);\r
27387 },addLoadEvent:function(func){\r
27388 var self=MochiKit.DOM;\r
27389 self.addToCallStack(self._window,"onload",func,true);\r
27390 },focusOnLoad:function(_378){\r
27391 var self=MochiKit.DOM;\r
27392 self.addLoadEvent(function(){\r
27393 _378=self.getElement(_378);\r
27394 if(_378){\r
27395 _378.focus();\r
27396 }\r
27397 });\r
27398 },setElementClass:function(_37a,_37b){\r
27399 var self=MochiKit.DOM;\r
27400 var obj=self.getElement(_37a);\r
27401 if(self.attributeArray.compliant){\r
27402 obj.setAttribute("class",_37b);\r
27403 }else{\r
27404 obj.setAttribute("className",_37b);\r
27405 }\r
27406 },toggleElementClass:function(_37e){\r
27407 var self=MochiKit.DOM;\r
27408 for(var i=1;i<arguments.length;i++){\r
27409 var obj=self.getElement(arguments[i]);\r
27410 if(!self.addElementClass(obj,_37e)){\r
27411 self.removeElementClass(obj,_37e);\r
27412 }\r
27413 }\r
27414 },addElementClass:function(_382,_383){\r
27415 var self=MochiKit.DOM;\r
27416 var obj=self.getElement(_382);\r
27417 var cls=obj.className;\r
27418 if(typeof (cls)!="string"){\r
27419 cls=obj.getAttribute("class");\r
27420 }\r
27421 if(typeof (cls)!="string"||cls.length===0){\r
27422 self.setElementClass(obj,_383);\r
27423 return true;\r
27424 }\r
27425 if(cls==_383){\r
27426 return false;\r
27427 }\r
27428 var _387=cls.split(" ");\r
27429 for(var i=0;i<_387.length;i++){\r
27430 if(_387[i]==_383){\r
27431 return false;\r
27432 }\r
27433 }\r
27434 self.setElementClass(obj,cls+" "+_383);\r
27435 return true;\r
27436 },removeElementClass:function(_389,_38a){\r
27437 var self=MochiKit.DOM;\r
27438 var obj=self.getElement(_389);\r
27439 var cls=obj.className;\r
27440 if(typeof (cls)!="string"){\r
27441 cls=obj.getAttribute("class");\r
27442 }\r
27443 if(typeof (cls)!="string"||cls.length===0){\r
27444 return false;\r
27445 }\r
27446 if(cls==_38a){\r
27447 self.setElementClass(obj,"");\r
27448 return true;\r
27449 }\r
27450 var _38e=cls.split(" ");\r
27451 for(var i=0;i<_38e.length;i++){\r
27452 if(_38e[i]==_38a){\r
27453 _38e.splice(i,1);\r
27454 self.setElementClass(obj,_38e.join(" "));\r
27455 return true;\r
27456 }\r
27457 }\r
27458 return false;\r
27459 },swapElementClass:function(_390,_391,_392){\r
27460 var obj=MochiKit.DOM.getElement(_390);\r
27461 var res=MochiKit.DOM.removeElementClass(obj,_391);\r
27462 if(res){\r
27463 MochiKit.DOM.addElementClass(obj,_392);\r
27464 }\r
27465 return res;\r
27466 },hasElementClass:function(_395,_396){\r
27467 var obj=MochiKit.DOM.getElement(_395);\r
27468 if(obj==null){\r
27469 return false;\r
27470 }\r
27471 var cls=obj.className;\r
27472 if(typeof (cls)!="string"){\r
27473 cls=obj.getAttribute("class");\r
27474 }\r
27475 if(typeof (cls)!="string"){\r
27476 return false;\r
27477 }\r
27478 var _399=cls.split(" ");\r
27479 for(var i=1;i<arguments.length;i++){\r
27480 var good=false;\r
27481 for(var j=0;j<_399.length;j++){\r
27482 if(_399[j]==arguments[i]){\r
27483 good=true;\r
27484 break;\r
27485 }\r
27486 }\r
27487 if(!good){\r
27488 return false;\r
27489 }\r
27490 }\r
27491 return true;\r
27492 },escapeHTML:function(s){\r
27493 return s.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");\r
27494 },toHTML:function(dom){\r
27495 return MochiKit.DOM.emitHTML(dom).join("");\r
27496 },emitHTML:function(dom,lst){\r
27497 if(typeof (lst)=="undefined"||lst===null){\r
27498 lst=[];\r
27499 }\r
27500 var _3a1=[dom];\r
27501 var self=MochiKit.DOM;\r
27502 var _3a3=self.escapeHTML;\r
27503 var _3a4=self.attributeArray;\r
27504 while(_3a1.length){\r
27505 dom=_3a1.pop();\r
27506 if(typeof (dom)=="string"){\r
27507 lst.push(dom);\r
27508 }else{\r
27509 if(dom.nodeType==1){\r
27510 lst.push("<"+dom.tagName.toLowerCase());\r
27511 var _3a5=[];\r
27512 var _3a6=_3a4(dom);\r
27513 for(var i=0;i<_3a6.length;i++){\r
27514 var a=_3a6[i];\r
27515 _3a5.push([" ",a.name,"=\"",_3a3(a.value),"\""]);\r
27516 }\r
27517 _3a5.sort();\r
27518 for(i=0;i<_3a5.length;i++){\r
27519 var _3a9=_3a5[i];\r
27520 for(var j=0;j<_3a9.length;j++){\r
27521 lst.push(_3a9[j]);\r
27522 }\r
27523 }\r
27524 if(dom.hasChildNodes()){\r
27525 lst.push(">");\r
27526 _3a1.push("</"+dom.tagName.toLowerCase()+">");\r
27527 var _3ab=dom.childNodes;\r
27528 for(i=_3ab.length-1;i>=0;i--){\r
27529 _3a1.push(_3ab[i]);\r
27530 }\r
27531 }else{\r
27532 lst.push("/>");\r
27533 }\r
27534 }else{\r
27535 if(dom.nodeType==3){\r
27536 lst.push(_3a3(dom.nodeValue));\r
27537 }\r
27538 }\r
27539 }\r
27540 }\r
27541 return lst;\r
27542 },scrapeText:function(node,_3ad){\r
27543 var rval=[];\r
27544 (function(node){\r
27545 var cn=node.childNodes;\r
27546 if(cn){\r
27547 for(var i=0;i<cn.length;i++){\r
27548 arguments.callee.call(this,cn[i]);\r
27549 }\r
27550 }\r
27551 var _3b2=node.nodeValue;\r
27552 if(typeof (_3b2)=="string"){\r
27553 rval.push(_3b2);\r
27554 }\r
27555 })(MochiKit.DOM.getElement(node));\r
27556 if(_3ad){\r
27557 return rval;\r
27558 }else{\r
27559 return rval.join("");\r
27560 }\r
27561 },removeEmptyTextNodes:function(_3b3){\r
27562 _3b3=MochiKit.DOM.getElement(_3b3);\r
27563 for(var i=0;i<_3b3.childNodes.length;i++){\r
27564 var node=_3b3.childNodes[i];\r
27565 if(node.nodeType==3&&!/\S/.test(node.nodeValue)){\r
27566 node.parentNode.removeChild(node);\r
27567 }\r
27568 }\r
27569 },getFirstElementByTagAndClassName:function(_3b6,_3b7,_3b8){\r
27570 var self=MochiKit.DOM;\r
27571 if(typeof (_3b6)=="undefined"||_3b6===null){\r
27572 _3b6="*";\r
27573 }\r
27574 if(typeof (_3b8)=="undefined"||_3b8===null){\r
27575 _3b8=self._document;\r
27576 }\r
27577 _3b8=self.getElement(_3b8);\r
27578 if(_3b8==null){\r
27579 return null;\r
27580 }\r
27581 var _3ba=(_3b8.getElementsByTagName(_3b6)||self._document.all);\r
27582 if(_3ba.length<=0){\r
27583 return null;\r
27584 }else{\r
27585 if(typeof (_3b7)=="undefined"||_3b7===null){\r
27586 return _3ba[0];\r
27587 }\r
27588 }\r
27589 for(var i=0;i<_3ba.length;i++){\r
27590 var _3bc=_3ba[i];\r
27591 var cls=_3bc.className;\r
27592 if(typeof (cls)!="string"){\r
27593 cls=_3bc.getAttribute("class");\r
27594 }\r
27595 if(typeof (cls)=="string"){\r
27596 var _3be=cls.split(" ");\r
27597 for(var j=0;j<_3be.length;j++){\r
27598 if(_3be[j]==_3b7){\r
27599 return _3bc;\r
27600 }\r
27601 }\r
27602 }\r
27603 }\r
27604 return null;\r
27605 },getFirstParentByTagAndClassName:function(elem,_3c1,_3c2){\r
27606 var self=MochiKit.DOM;\r
27607 elem=self.getElement(elem);\r
27608 if(typeof (_3c1)=="undefined"||_3c1===null){\r
27609 _3c1="*";\r
27610 }else{\r
27611 _3c1=_3c1.toUpperCase();\r
27612 }\r
27613 if(typeof (_3c2)=="undefined"||_3c2===null){\r
27614 _3c2=null;\r
27615 }\r
27616 if(elem){\r
27617 elem=elem.parentNode;\r
27618 }\r
27619 while(elem&&elem.tagName){\r
27620 var _3c4=elem.tagName.toUpperCase();\r
27621 if((_3c1==="*"||_3c1==_3c4)&&(_3c2===null||self.hasElementClass(elem,_3c2))){\r
27622 return elem;\r
27623 }\r
27624 elem=elem.parentNode;\r
27625 }\r
27626 return null;\r
27627 },__new__:function(win){\r
27628 var m=MochiKit.Base;\r
27629 if(typeof (document)!="undefined"){\r
27630 this._document=document;\r
27631 var _3c7="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";\r
27632 this._xhtml=(document.documentElement&&document.createElementNS&&document.documentElement.namespaceURI===_3c7);\r
27633 }else{\r
27634 if(MochiKit.MockDOM){\r
27635 this._document=MochiKit.MockDOM.document;\r
27636 }\r
27637 }\r
27638 this._window=win;\r
27639 this.domConverters=new m.AdapterRegistry();\r
27640 var _3c8=this._document.createElement("span");\r
27641 var _3c9;\r
27642 if(_3c8&&_3c8.attributes&&_3c8.attributes.length>0){\r
27643 var _3ca=m.filter;\r
27644 _3c9=function(node){\r
27645 return _3ca(_3c9.ignoreAttrFilter,node.attributes);\r
27646 };\r
27647 _3c9.ignoreAttr={};\r
27648 var _3cc=_3c8.attributes;\r
27649 var _3cd=_3c9.ignoreAttr;\r
27650 for(var i=0;i<_3cc.length;i++){\r
27651 var a=_3cc[i];\r
27652 _3cd[a.name]=a.value;\r
27653 }\r
27654 _3c9.ignoreAttrFilter=function(a){\r
27655 return (_3c9.ignoreAttr[a.name]!=a.value);\r
27656 };\r
27657 _3c9.compliant=false;\r
27658 _3c9.renames={"class":"className","checked":"defaultChecked","usemap":"useMap","for":"htmlFor","readonly":"readOnly","colspan":"colSpan","bgcolor":"bgColor","cellspacing":"cellSpacing","cellpadding":"cellPadding"};\r
27659 }else{\r
27660 _3c9=function(node){\r
27661 return node.attributes;\r
27662 };\r
27663 _3c9.compliant=true;\r
27664 _3c9.ignoreAttr={};\r
27665 _3c9.renames={};\r
27666 }\r
27667 this.attributeArray=_3c9;\r
27668 var _3d2=function(_3d3,arr){\r
27669 var _3d5=arr[0];\r
27670 var _3d6=arr[1];\r
27671 var _3d7=_3d6.split(".")[1];\r
27672 var str="";\r
27673 str+="if (!MochiKit."+_3d7+") { throw new Error(\"";\r
27674 str+="This function has been deprecated and depends on MochiKit.";\r
27675 str+=_3d7+".\");}";\r
27676 str+="return "+_3d6+".apply(this, arguments);";\r
27677 MochiKit[_3d3][_3d5]=new Function(str);\r
27678 };\r
27679 for(var i=0;i<MochiKit.DOM.DEPRECATED.length;i++){\r
27680 _3d2("DOM",MochiKit.DOM.DEPRECATED[i]);\r
27681 }\r
27682 var _3d9=this.createDOMFunc;\r
27683 this.UL=_3d9("ul");\r
27684 this.OL=_3d9("ol");\r
27685 this.LI=_3d9("li");\r
27686 this.DL=_3d9("dl");\r
27687 this.DT=_3d9("dt");\r
27688 this.DD=_3d9("dd");\r
27689 this.TD=_3d9("td");\r
27690 this.TR=_3d9("tr");\r
27691 this.TBODY=_3d9("tbody");\r
27692 this.THEAD=_3d9("thead");\r
27693 this.TFOOT=_3d9("tfoot");\r
27694 this.TABLE=_3d9("table");\r
27695 this.TH=_3d9("th");\r
27696 this.INPUT=_3d9("input");\r
27697 this.SPAN=_3d9("span");\r
27698 this.A=_3d9("a");\r
27699 this.DIV=_3d9("div");\r
27700 this.IMG=_3d9("img");\r
27701 this.BUTTON=_3d9("button");\r
27702 this.TT=_3d9("tt");\r
27703 this.PRE=_3d9("pre");\r
27704 this.H1=_3d9("h1");\r
27705 this.H2=_3d9("h2");\r
27706 this.H3=_3d9("h3");\r
27707 this.H4=_3d9("h4");\r
27708 this.H5=_3d9("h5");\r
27709 this.H6=_3d9("h6");\r
27710 this.BR=_3d9("br");\r
27711 this.HR=_3d9("hr");\r
27712 this.LABEL=_3d9("label");\r
27713 this.TEXTAREA=_3d9("textarea");\r
27714 this.FORM=_3d9("form");\r
27715 this.P=_3d9("p");\r
27716 this.SELECT=_3d9("select");\r
27717 this.OPTION=_3d9("option");\r
27718 this.OPTGROUP=_3d9("optgroup");\r
27719 this.LEGEND=_3d9("legend");\r
27720 this.FIELDSET=_3d9("fieldset");\r
27721 this.STRONG=_3d9("strong");\r
27722 this.CANVAS=_3d9("canvas");\r
27723 this.$=this.getElement;\r
27724 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
27725 m.nameFunctions(this);\r
27726 }});\r
27727 MochiKit.DOM.__new__(((typeof (window)=="undefined")?this:window));\r
27728 if(MochiKit.__export__){\r
27729 withWindow=MochiKit.DOM.withWindow;\r
27730 withDocument=MochiKit.DOM.withDocument;\r
27731 }\r
27732 MochiKit.Base._exportSymbols(this,MochiKit.DOM);\r
27733 MochiKit.Base._deps("Selector",["Base","DOM","Iter"]);\r
27734 MochiKit.Selector.NAME="MochiKit.Selector";\r
27735 MochiKit.Selector.VERSION="1.4.2";\r
27736 MochiKit.Selector.__repr__=function(){\r
27737 return "["+this.NAME+" "+this.VERSION+"]";\r
27738 };\r
27739 MochiKit.Selector.toString=function(){\r
27740 return this.__repr__();\r
27741 };\r
27742 MochiKit.Selector.EXPORT=["Selector","findChildElements","findDocElements","$$"];\r
27743 MochiKit.Selector.EXPORT_OK=[];\r
27744 MochiKit.Selector.Selector=function(_3da){\r
27745 this.params={classNames:[],pseudoClassNames:[]};\r
27746 this.expression=_3da.toString().replace(/(^\s+|\s+$)/g,"");\r
27747 this.parseExpression();\r
27748 this.compileMatcher();\r
27749 };\r
27750 MochiKit.Selector.Selector.prototype={__class__:MochiKit.Selector.Selector,parseExpression:function(){\r
27751 function abort(_3db){\r
27752 throw "Parse error in selector: "+_3db;\r
27753 }\r
27754 if(this.expression==""){\r
27755 abort("empty expression");\r
27756 }\r
27757 var repr=MochiKit.Base.repr;\r
27758 var _3dd=this.params;\r
27759 var expr=this.expression;\r
27760 var _3df,_3e0,_3e1,rest;\r
27761 while(_3df=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!^$*]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){\r
27762 _3dd.attributes=_3dd.attributes||[];\r
27763 _3dd.attributes.push({name:_3df[2],operator:_3df[3],value:_3df[4]||_3df[5]||""});\r
27764 expr=_3df[1];\r
27765 }\r
27766 if(expr=="*"){\r
27767 return this.params.wildcard=true;\r
27768 }\r
27769 while(_3df=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+(?:\([^)]*\))?)(.*)/i)){\r
27770 _3e0=_3df[1];\r
27771 _3e1=_3df[2];\r
27772 rest=_3df[3];\r
27773 switch(_3e0){\r
27774 case "#":\r
27775 _3dd.id=_3e1;\r
27776 break;\r
27777 case ".":\r
27778 _3dd.classNames.push(_3e1);\r
27779 break;\r
27780 case ":":\r
27781 _3dd.pseudoClassNames.push(_3e1);\r
27782 break;\r
27783 case "":\r
27784 case undefined:\r
27785 _3dd.tagName=_3e1.toUpperCase();\r
27786 break;\r
27787 default:\r
27788 abort(repr(expr));\r
27789 }\r
27790 expr=rest;\r
27791 }\r
27792 if(expr.length>0){\r
27793 abort(repr(expr));\r
27794 }\r
27795 },buildMatchExpression:function(){\r
27796 var repr=MochiKit.Base.repr;\r
27797 var _3e4=this.params;\r
27798 var _3e5=[];\r
27799 var _3e6,i;\r
27800 function childElements(_3e8){\r
27801 return "MochiKit.Base.filter(function (node) { return node.nodeType == 1; }, "+_3e8+".childNodes)";\r
27802 }\r
27803 if(_3e4.wildcard){\r
27804 _3e5.push("true");\r
27805 }\r
27806 if(_3e6=_3e4.id){\r
27807 _3e5.push("element.id == "+repr(_3e6));\r
27808 }\r
27809 if(_3e6=_3e4.tagName){\r
27810 _3e5.push("element.tagName.toUpperCase() == "+repr(_3e6));\r
27811 }\r
27812 if((_3e6=_3e4.classNames).length>0){\r
27813 for(i=0;i<_3e6.length;i++){\r
27814 _3e5.push("MochiKit.DOM.hasElementClass(element, "+repr(_3e6[i])+")");\r
27815 }\r
27816 }\r
27817 if((_3e6=_3e4.pseudoClassNames).length>0){\r
27818 for(i=0;i<_3e6.length;i++){\r
27819 var _3e9=_3e6[i].match(/^([^(]+)(?:\((.*)\))?$/);\r
27820 var _3ea=_3e9[1];\r
27821 var _3eb=_3e9[2];\r
27822 switch(_3ea){\r
27823 case "root":\r
27824 _3e5.push("element.nodeType == 9 || element === element.ownerDocument.documentElement");\r
27825 break;\r
27826 case "nth-child":\r
27827 case "nth-last-child":\r
27828 case "nth-of-type":\r
27829 case "nth-last-of-type":\r
27830 _3e9=_3eb.match(/^((?:(\d+)n\+)?(\d+)|odd|even)$/);\r
27831 if(!_3e9){\r
27832 throw "Invalid argument to pseudo element nth-child: "+_3eb;\r
27833 }\r
27834 var a,b;\r
27835 if(_3e9[0]=="odd"){\r
27836 a=2;\r
27837 b=1;\r
27838 }else{\r
27839 if(_3e9[0]=="even"){\r
27840 a=2;\r
27841 b=0;\r
27842 }else{\r
27843 a=_3e9[2]&&parseInt(_3e9)||null;\r
27844 b=parseInt(_3e9[3]);\r
27845 }\r
27846 }\r
27847 _3e5.push("this.nthChild(element,"+a+","+b+","+!!_3ea.match("^nth-last")+","+!!_3ea.match("of-type$")+")");\r
27848 break;\r
27849 case "first-child":\r
27850 _3e5.push("this.nthChild(element, null, 1)");\r
27851 break;\r
27852 case "last-child":\r
27853 _3e5.push("this.nthChild(element, null, 1, true)");\r
27854 break;\r
27855 case "first-of-type":\r
27856 _3e5.push("this.nthChild(element, null, 1, false, true)");\r
27857 break;\r
27858 case "last-of-type":\r
27859 _3e5.push("this.nthChild(element, null, 1, true, true)");\r
27860 break;\r
27861 case "only-child":\r
27862 _3e5.push(childElements("element.parentNode")+".length == 1");\r
27863 break;\r
27864 case "only-of-type":\r
27865 _3e5.push("MochiKit.Base.filter(function (node) { return node.tagName == element.tagName; }, "+childElements("element.parentNode")+").length == 1");\r
27866 break;\r
27867 case "empty":\r
27868 _3e5.push("element.childNodes.length == 0");\r
27869 break;\r
27870 case "enabled":\r
27871 _3e5.push("(this.isUIElement(element) && element.disabled === false)");\r
27872 break;\r
27873 case "disabled":\r
27874 _3e5.push("(this.isUIElement(element) && element.disabled === true)");\r
27875 break;\r
27876 case "checked":\r
27877 _3e5.push("(this.isUIElement(element) && element.checked === true)");\r
27878 break;\r
27879 case "not":\r
27880 var _3ee=new MochiKit.Selector.Selector(_3eb);\r
27881 _3e5.push("!( "+_3ee.buildMatchExpression()+")");\r
27882 break;\r
27883 }\r
27884 }\r
27885 }\r
27886 if(_3e6=_3e4.attributes){\r
27887 MochiKit.Base.map(function(_3ef){\r
27888 var _3f0="MochiKit.DOM.getNodeAttribute(element, "+repr(_3ef.name)+")";\r
27889 var _3f1=function(_3f2){\r
27890 return _3f0+".split("+repr(_3f2)+")";\r
27891 };\r
27892 _3e5.push(_3f0+" != null");\r
27893 switch(_3ef.operator){\r
27894 case "=":\r
27895 _3e5.push(_3f0+" == "+repr(_3ef.value));\r
27896 break;\r
27897 case "~=":\r
27898 _3e5.push("MochiKit.Base.findValue("+_3f1(" ")+", "+repr(_3ef.value)+") > -1");\r
27899 break;\r
27900 case "^=":\r
27901 _3e5.push(_3f0+".substring(0, "+_3ef.value.length+") == "+repr(_3ef.value));\r
27902 break;\r
27903 case "$=":\r
27904 _3e5.push(_3f0+".substring("+_3f0+".length - "+_3ef.value.length+") == "+repr(_3ef.value));\r
27905 break;\r
27906 case "*=":\r
27907 _3e5.push(_3f0+".match("+repr(_3ef.value)+")");\r
27908 break;\r
27909 case "|=":\r
27910 _3e5.push(_3f1("-")+"[0].toUpperCase() == "+repr(_3ef.value.toUpperCase()));\r
27911 break;\r
27912 case "!=":\r
27913 _3e5.push(_3f0+" != "+repr(_3ef.value));\r
27914 break;\r
27915 case "":\r
27916 case undefined:\r
27917 break;\r
27918 default:\r
27919 throw "Unknown operator "+_3ef.operator+" in selector";\r
27920 }\r
27921 },_3e6);\r
27922 }\r
27923 return _3e5.join(" && ");\r
27924 },compileMatcher:function(){\r
27925 var code="return (!element.tagName) ? false : "+this.buildMatchExpression()+";";\r
27926 this.match=new Function("element",code);\r
27927 },nthChild:function(_3f4,a,b,_3f7,_3f8){\r
27928 var _3f9=MochiKit.Base.filter(function(node){\r
27929 return node.nodeType==1;\r
27930 },_3f4.parentNode.childNodes);\r
27931 if(_3f8){\r
27932 _3f9=MochiKit.Base.filter(function(node){\r
27933 return node.tagName==_3f4.tagName;\r
27934 },_3f9);\r
27935 }\r
27936 if(_3f7){\r
27937 _3f9=MochiKit.Iter.reversed(_3f9);\r
27938 }\r
27939 if(a){\r
27940 var _3fc=MochiKit.Base.findIdentical(_3f9,_3f4);\r
27941 return ((_3fc+1-b)/a)%1==0;\r
27942 }else{\r
27943 return b==MochiKit.Base.findIdentical(_3f9,_3f4)+1;\r
27944 }\r
27945 },isUIElement:function(_3fd){\r
27946 return MochiKit.Base.findValue(["input","button","select","option","textarea","object"],_3fd.tagName.toLowerCase())>-1;\r
27947 },findElements:function(_3fe,axis){\r
27948 var _400;\r
27949 if(axis==undefined){\r
27950 axis="";\r
27951 }\r
27952 function inScope(_401,_402){\r
27953 if(axis==""){\r
27954 return MochiKit.DOM.isChildNode(_401,_402);\r
27955 }else{\r
27956 if(axis==">"){\r
27957 return _401.parentNode===_402;\r
27958 }else{\r
27959 if(axis=="+"){\r
27960 return _401===nextSiblingElement(_402);\r
27961 }else{\r
27962 if(axis=="~"){\r
27963 var _403=_402;\r
27964 while(_403=nextSiblingElement(_403)){\r
27965 if(_401===_403){\r
27966 return true;\r
27967 }\r
27968 }\r
27969 return false;\r
27970 }else{\r
27971 throw "Invalid axis: "+axis;\r
27972 }\r
27973 }\r
27974 }\r
27975 }\r
27976 }\r
27977 if(_400=MochiKit.DOM.getElement(this.params.id)){\r
27978 if(this.match(_400)){\r
27979 if(!_3fe||inScope(_400,_3fe)){\r
27980 return [_400];\r
27981 }\r
27982 }\r
27983 }\r
27984 function nextSiblingElement(node){\r
27985 node=node.nextSibling;\r
27986 while(node&&node.nodeType!=1){\r
27987 node=node.nextSibling;\r
27988 }\r
27989 return node;\r
27990 }\r
27991 if(axis==""){\r
27992 _3fe=(_3fe||MochiKit.DOM.currentDocument()).getElementsByTagName(this.params.tagName||"*");\r
27993 }else{\r
27994 if(axis==">"){\r
27995 if(!_3fe){\r
27996 throw "> combinator not allowed without preceeding expression";\r
27997 }\r
27998 _3fe=MochiKit.Base.filter(function(node){\r
27999 return node.nodeType==1;\r
28000 },_3fe.childNodes);\r
28001 }else{\r
28002 if(axis=="+"){\r
28003 if(!_3fe){\r
28004 throw "+ combinator not allowed without preceeding expression";\r
28005 }\r
28006 _3fe=nextSiblingElement(_3fe)&&[nextSiblingElement(_3fe)];\r
28007 }else{\r
28008 if(axis=="~"){\r
28009 if(!_3fe){\r
28010 throw "~ combinator not allowed without preceeding expression";\r
28011 }\r
28012 var _406=[];\r
28013 while(nextSiblingElement(_3fe)){\r
28014 _3fe=nextSiblingElement(_3fe);\r
28015 _406.push(_3fe);\r
28016 }\r
28017 _3fe=_406;\r
28018 }\r
28019 }\r
28020 }\r
28021 }\r
28022 if(!_3fe){\r
28023 return [];\r
28024 }\r
28025 var _407=MochiKit.Base.filter(MochiKit.Base.bind(function(_408){\r
28026 return this.match(_408);\r
28027 },this),_3fe);\r
28028 return _407;\r
28029 },repr:function(){\r
28030 return "Selector("+this.expression+")";\r
28031 },toString:MochiKit.Base.forwardCall("repr")};\r
28032 MochiKit.Base.update(MochiKit.Selector,{findChildElements:function(_409,_40a){\r
28033 var uniq=function(arr){\r
28034 var res=[];\r
28035 for(var i=0;i<arr.length;i++){\r
28036 if(MochiKit.Base.findIdentical(res,arr[i])<0){\r
28037 res.push(arr[i]);\r
28038 }\r
28039 }\r
28040 return res;\r
28041 };\r
28042 return MochiKit.Base.flattenArray(MochiKit.Base.map(function(_40f){\r
28043 var _410="";\r
28044 var _411=function(_412,expr){\r
28045 if(match=expr.match(/^[>+~]$/)){\r
28046 _410=match[0];\r
28047 return _412;\r
28048 }else{\r
28049 var _414=new MochiKit.Selector.Selector(expr);\r
28050 var _415=MochiKit.Iter.reduce(function(_416,_417){\r
28051 return MochiKit.Base.extend(_416,_414.findElements(_417||_409,_410));\r
28052 },_412,[]);\r
28053 _410="";\r
28054 return _415;\r
28055 }\r
28056 };\r
28057 var _418=_40f.replace(/(^\s+|\s+$)/g,"").split(/\s+/);\r
28058 return uniq(MochiKit.Iter.reduce(_411,_418,[null]));\r
28059 },_40a));\r
28060 },findDocElements:function(){\r
28061 return MochiKit.Selector.findChildElements(MochiKit.DOM.currentDocument(),arguments);\r
28062 },__new__:function(){\r
28063 var m=MochiKit.Base;\r
28064 this.$$=this.findDocElements;\r
28065 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
28066 m.nameFunctions(this);\r
28067 }});\r
28068 MochiKit.Selector.__new__();\r
28069 MochiKit.Base._exportSymbols(this,MochiKit.Selector);\r
28070 MochiKit.Base._deps("Style",["Base","DOM"]);\r
28071 MochiKit.Style.NAME="MochiKit.Style";\r
28072 MochiKit.Style.VERSION="1.4.2";\r
28073 MochiKit.Style.__repr__=function(){\r
28074 return "["+this.NAME+" "+this.VERSION+"]";\r
28075 };\r
28076 MochiKit.Style.toString=function(){\r
28077 return this.__repr__();\r
28078 };\r
28079 MochiKit.Style.EXPORT_OK=[];\r
28080 MochiKit.Style.EXPORT=["setStyle","setOpacity","getStyle","getElementDimensions","elementDimensions","setElementDimensions","getElementPosition","elementPosition","setElementPosition","makePositioned","undoPositioned","makeClipping","undoClipping","setDisplayForElement","hideElement","showElement","getViewportDimensions","getViewportPosition","Dimensions","Coordinates"];\r
28081 MochiKit.Style.Dimensions=function(w,h){\r
28082 this.w=w;\r
28083 this.h=h;\r
28084 };\r
28085 MochiKit.Style.Dimensions.prototype.__repr__=function(){\r
28086 var repr=MochiKit.Base.repr;\r
28087 return "{w: "+repr(this.w)+", h: "+repr(this.h)+"}";\r
28088 };\r
28089 MochiKit.Style.Dimensions.prototype.toString=function(){\r
28090 return this.__repr__();\r
28091 };\r
28092 MochiKit.Style.Coordinates=function(x,y){\r
28093 this.x=x;\r
28094 this.y=y;\r
28095 };\r
28096 MochiKit.Style.Coordinates.prototype.__repr__=function(){\r
28097 var repr=MochiKit.Base.repr;\r
28098 return "{x: "+repr(this.x)+", y: "+repr(this.y)+"}";\r
28099 };\r
28100 MochiKit.Style.Coordinates.prototype.toString=function(){\r
28101 return this.__repr__();\r
28102 };\r
28103 MochiKit.Base.update(MochiKit.Style,{getStyle:function(elem,_421){\r
28104 var dom=MochiKit.DOM;\r
28105 var d=dom._document;\r
28106 elem=dom.getElement(elem);\r
28107 _421=MochiKit.Base.camelize(_421);\r
28108 if(!elem||elem==d){\r
28109 return undefined;\r
28110 }\r
28111 if(_421=="opacity"&&typeof (elem.filters)!="undefined"){\r
28112 var _424=(MochiKit.Style.getStyle(elem,"filter")||"").match(/alpha\(opacity=(.*)\)/);\r
28113 if(_424&&_424[1]){\r
28114 return parseFloat(_424[1])/100;\r
28115 }\r
28116 return 1;\r
28117 }\r
28118 if(_421=="float"||_421=="cssFloat"||_421=="styleFloat"){\r
28119 if(elem.style["float"]){\r
28120 return elem.style["float"];\r
28121 }else{\r
28122 if(elem.style.cssFloat){\r
28123 return elem.style.cssFloat;\r
28124 }else{\r
28125 if(elem.style.styleFloat){\r
28126 return elem.style.styleFloat;\r
28127 }else{\r
28128 return "none";\r
28129 }\r
28130 }\r
28131 }\r
28132 }\r
28133 var _425=elem.style?elem.style[_421]:null;\r
28134 if(!_425){\r
28135 if(d.defaultView&&d.defaultView.getComputedStyle){\r
28136 var css=d.defaultView.getComputedStyle(elem,null);\r
28137 _421=_421.replace(/([A-Z])/g,"-$1").toLowerCase();\r
28138 _425=css?css.getPropertyValue(_421):null;\r
28139 }else{\r
28140 if(elem.currentStyle){\r
28141 _425=elem.currentStyle[_421];\r
28142 if(/^\d/.test(_425)&&!/px$/.test(_425)&&_421!="fontWeight"){\r
28143 var left=elem.style.left;\r
28144 var _428=elem.runtimeStyle.left;\r
28145 elem.runtimeStyle.left=elem.currentStyle.left;\r
28146 elem.style.left=_425||0;\r
28147 _425=elem.style.pixelLeft+"px";\r
28148 elem.style.left=left;\r
28149 elem.runtimeStyle.left=_428;\r
28150 }\r
28151 }\r
28152 }\r
28153 }\r
28154 if(_421=="opacity"){\r
28155 _425=parseFloat(_425);\r
28156 }\r
28157 if(/Opera/.test(navigator.userAgent)&&(MochiKit.Base.findValue(["left","top","right","bottom"],_421)!=-1)){\r
28158 if(MochiKit.Style.getStyle(elem,"position")=="static"){\r
28159 _425="auto";\r
28160 }\r
28161 }\r
28162 return _425=="auto"?null:_425;\r
28163 },setStyle:function(elem,_42a){\r
28164 elem=MochiKit.DOM.getElement(elem);\r
28165 for(var name in _42a){\r
28166 switch(name){\r
28167 case "opacity":\r
28168 MochiKit.Style.setOpacity(elem,_42a[name]);\r
28169 break;\r
28170 case "float":\r
28171 case "cssFloat":\r
28172 case "styleFloat":\r
28173 if(typeof (elem.style["float"])!="undefined"){\r
28174 elem.style["float"]=_42a[name];\r
28175 }else{\r
28176 if(typeof (elem.style.cssFloat)!="undefined"){\r
28177 elem.style.cssFloat=_42a[name];\r
28178 }else{\r
28179 elem.style.styleFloat=_42a[name];\r
28180 }\r
28181 }\r
28182 break;\r
28183 default:\r
28184 elem.style[MochiKit.Base.camelize(name)]=_42a[name];\r
28185 }\r
28186 }\r
28187 },setOpacity:function(elem,o){\r
28188 elem=MochiKit.DOM.getElement(elem);\r
28189 var self=MochiKit.Style;\r
28190 if(o==1){\r
28191 var _42f=/Gecko/.test(navigator.userAgent)&&!(/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent));\r
28192 elem.style["opacity"]=_42f?0.999999:1;\r
28193 if(/MSIE/.test(navigator.userAgent)){\r
28194 elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,"");\r
28195 }\r
28196 }else{\r
28197 if(o<0.00001){\r
28198 o=0;\r
28199 }\r
28200 elem.style["opacity"]=o;\r
28201 if(/MSIE/.test(navigator.userAgent)){\r
28202 elem.style["filter"]=self.getStyle(elem,"filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+o*100+")";\r
28203 }\r
28204 }\r
28205 },getElementPosition:function(elem,_431){\r
28206 var self=MochiKit.Style;\r
28207 var dom=MochiKit.DOM;\r
28208 elem=dom.getElement(elem);\r
28209 if(!elem||(!(elem.x&&elem.y)&&(!elem.parentNode===null||self.getStyle(elem,"display")=="none"))){\r
28210 return undefined;\r
28211 }\r
28212 var c=new self.Coordinates(0,0);\r
28213 var box=null;\r
28214 var _436=null;\r
28215 var d=MochiKit.DOM._document;\r
28216 var de=d.documentElement;\r
28217 var b=d.body;\r
28218 if(!elem.parentNode&&elem.x&&elem.y){\r
28219 c.x+=elem.x||0;\r
28220 c.y+=elem.y||0;\r
28221 }else{\r
28222 if(elem.getBoundingClientRect){\r
28223 box=elem.getBoundingClientRect();\r
28224 c.x+=box.left+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);\r
28225 c.y+=box.top+(de.scrollTop||b.scrollTop)-(de.clientTop||0);\r
28226 }else{\r
28227 if(elem.offsetParent){\r
28228 c.x+=elem.offsetLeft;\r
28229 c.y+=elem.offsetTop;\r
28230 _436=elem.offsetParent;\r
28231 if(_436!=elem){\r
28232 while(_436){\r
28233 c.x+=parseInt(_436.style.borderLeftWidth)||0;\r
28234 c.y+=parseInt(_436.style.borderTopWidth)||0;\r
28235 c.x+=_436.offsetLeft;\r
28236 c.y+=_436.offsetTop;\r
28237 _436=_436.offsetParent;\r
28238 }\r
28239 }\r
28240 var ua=navigator.userAgent.toLowerCase();\r
28241 if((typeof (opera)!="undefined"&&parseFloat(opera.version())<9)||(ua.indexOf("AppleWebKit")!=-1&&self.getStyle(elem,"position")=="absolute")){\r
28242 c.x-=b.offsetLeft;\r
28243 c.y-=b.offsetTop;\r
28244 }\r
28245 if(elem.parentNode){\r
28246 _436=elem.parentNode;\r
28247 }else{\r
28248 _436=null;\r
28249 }\r
28250 while(_436){\r
28251 var _43b=_436.tagName.toUpperCase();\r
28252 if(_43b==="BODY"||_43b==="HTML"){\r
28253 break;\r
28254 }\r
28255 var disp=self.getStyle(_436,"display");\r
28256 if(disp.search(/^inline|table-row.*$/i)){\r
28257 c.x-=_436.scrollLeft;\r
28258 c.y-=_436.scrollTop;\r
28259 }\r
28260 if(_436.parentNode){\r
28261 _436=_436.parentNode;\r
28262 }else{\r
28263 _436=null;\r
28264 }\r
28265 }\r
28266 }\r
28267 }\r
28268 }\r
28269 if(typeof (_431)!="undefined"){\r
28270 _431=arguments.callee(_431);\r
28271 if(_431){\r
28272 c.x-=(_431.x||0);\r
28273 c.y-=(_431.y||0);\r
28274 }\r
28275 }\r
28276 return c;\r
28277 },setElementPosition:function(elem,_43e,_43f){\r
28278 elem=MochiKit.DOM.getElement(elem);\r
28279 if(typeof (_43f)=="undefined"){\r
28280 _43f="px";\r
28281 }\r
28282 var _440={};\r
28283 var _441=MochiKit.Base.isUndefinedOrNull;\r
28284 if(!_441(_43e.x)){\r
28285 _440["left"]=_43e.x+_43f;\r
28286 }\r
28287 if(!_441(_43e.y)){\r
28288 _440["top"]=_43e.y+_43f;\r
28289 }\r
28290 MochiKit.DOM.updateNodeAttributes(elem,{"style":_440});\r
28291 },makePositioned:function(_442){\r
28292 _442=MochiKit.DOM.getElement(_442);\r
28293 var pos=MochiKit.Style.getStyle(_442,"position");\r
28294 if(pos=="static"||!pos){\r
28295 _442.style.position="relative";\r
28296 if(/Opera/.test(navigator.userAgent)){\r
28297 _442.style.top=0;\r
28298 _442.style.left=0;\r
28299 }\r
28300 }\r
28301 },undoPositioned:function(_444){\r
28302 _444=MochiKit.DOM.getElement(_444);\r
28303 if(_444.style.position=="relative"){\r
28304 _444.style.position=_444.style.top=_444.style.left=_444.style.bottom=_444.style.right="";\r
28305 }\r
28306 },makeClipping:function(_445){\r
28307 _445=MochiKit.DOM.getElement(_445);\r
28308 var s=_445.style;\r
28309 var _447={"overflow":s.overflow,"overflow-x":s.overflowX,"overflow-y":s.overflowY};\r
28310 if((MochiKit.Style.getStyle(_445,"overflow")||"visible")!="hidden"){\r
28311 _445.style.overflow="hidden";\r
28312 _445.style.overflowX="hidden";\r
28313 _445.style.overflowY="hidden";\r
28314 }\r
28315 return _447;\r
28316 },undoClipping:function(_448,_449){\r
28317 _448=MochiKit.DOM.getElement(_448);\r
28318 if(typeof (_449)=="string"){\r
28319 _448.style.overflow=_449;\r
28320 }else{\r
28321 if(_449!=null){\r
28322 _448.style.overflow=_449["overflow"];\r
28323 _448.style.overflowX=_449["overflow-x"];\r
28324 _448.style.overflowY=_449["overflow-y"];\r
28325 }\r
28326 }\r
28327 },getElementDimensions:function(elem,_44b){\r
28328 var self=MochiKit.Style;\r
28329 var dom=MochiKit.DOM;\r
28330 if(typeof (elem.w)=="number"||typeof (elem.h)=="number"){\r
28331 return new self.Dimensions(elem.w||0,elem.h||0);\r
28332 }\r
28333 elem=dom.getElement(elem);\r
28334 if(!elem){\r
28335 return undefined;\r
28336 }\r
28337 var disp=self.getStyle(elem,"display");\r
28338 if(disp=="none"||disp==""||typeof (disp)=="undefined"){\r
28339 var s=elem.style;\r
28340 var _450=s.visibility;\r
28341 var _451=s.position;\r
28342 var _452=s.display;\r
28343 s.visibility="hidden";\r
28344 s.position="absolute";\r
28345 s.display=self._getDefaultDisplay(elem);\r
28346 var _453=elem.offsetWidth;\r
28347 var _454=elem.offsetHeight;\r
28348 s.display=_452;\r
28349 s.position=_451;\r
28350 s.visibility=_450;\r
28351 }else{\r
28352 _453=elem.offsetWidth||0;\r
28353 _454=elem.offsetHeight||0;\r
28354 }\r
28355 if(_44b){\r
28356 var _455="colSpan" in elem&&"rowSpan" in elem;\r
28357 var _456=(_455&&elem.parentNode&&self.getStyle(elem.parentNode,"borderCollapse")=="collapse");\r
28358 if(_456){\r
28359 if(/MSIE/.test(navigator.userAgent)){\r
28360 var _457=elem.previousSibling?0.5:1;\r
28361 var _458=elem.nextSibling?0.5:1;\r
28362 }else{\r
28363 var _457=0.5;\r
28364 var _458=0.5;\r
28365 }\r
28366 }else{\r
28367 var _457=1;\r
28368 var _458=1;\r
28369 }\r
28370 _453-=Math.round((parseFloat(self.getStyle(elem,"paddingLeft"))||0)+(parseFloat(self.getStyle(elem,"paddingRight"))||0)+_457*(parseFloat(self.getStyle(elem,"borderLeftWidth"))||0)+_458*(parseFloat(self.getStyle(elem,"borderRightWidth"))||0));\r
28371 if(_455){\r
28372 if(/Gecko|Opera/.test(navigator.userAgent)&&!/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent)){\r
28373 var _459=0;\r
28374 }else{\r
28375 if(/MSIE/.test(navigator.userAgent)){\r
28376 var _459=1;\r
28377 }else{\r
28378 var _459=_456?0.5:1;\r
28379 }\r
28380 }\r
28381 }else{\r
28382 var _459=1;\r
28383 }\r
28384 _454-=Math.round((parseFloat(self.getStyle(elem,"paddingTop"))||0)+(parseFloat(self.getStyle(elem,"paddingBottom"))||0)+_459*((parseFloat(self.getStyle(elem,"borderTopWidth"))||0)+(parseFloat(self.getStyle(elem,"borderBottomWidth"))||0)));\r
28385 }\r
28386 return new self.Dimensions(_453,_454);\r
28387 },setElementDimensions:function(elem,_45b,_45c){\r
28388 elem=MochiKit.DOM.getElement(elem);\r
28389 if(typeof (_45c)=="undefined"){\r
28390 _45c="px";\r
28391 }\r
28392 var _45d={};\r
28393 var _45e=MochiKit.Base.isUndefinedOrNull;\r
28394 if(!_45e(_45b.w)){\r
28395 _45d["width"]=_45b.w+_45c;\r
28396 }\r
28397 if(!_45e(_45b.h)){\r
28398 _45d["height"]=_45b.h+_45c;\r
28399 }\r
28400 MochiKit.DOM.updateNodeAttributes(elem,{"style":_45d});\r
28401 },_getDefaultDisplay:function(elem){\r
28402 var self=MochiKit.Style;\r
28403 var dom=MochiKit.DOM;\r
28404 elem=dom.getElement(elem);\r
28405 if(!elem){\r
28406 return undefined;\r
28407 }\r
28408 var _462=elem.tagName.toUpperCase();\r
28409 return self._defaultDisplay[_462]||"block";\r
28410 },setDisplayForElement:function(_463,_464){\r
28411 var _465=MochiKit.Base.extend(null,arguments,1);\r
28412 var _466=MochiKit.DOM.getElement;\r
28413 for(var i=0;i<_465.length;i++){\r
28414 _464=_466(_465[i]);\r
28415 if(_464){\r
28416 _464.style.display=_463;\r
28417 }\r
28418 }\r
28419 },getViewportDimensions:function(){\r
28420 var d=new MochiKit.Style.Dimensions();\r
28421 var w=MochiKit.DOM._window;\r
28422 var b=MochiKit.DOM._document.body;\r
28423 if(w.innerWidth){\r
28424 d.w=w.innerWidth;\r
28425 d.h=w.innerHeight;\r
28426 }else{\r
28427 if(b&&b.parentElement&&b.parentElement.clientWidth){\r
28428 d.w=b.parentElement.clientWidth;\r
28429 d.h=b.parentElement.clientHeight;\r
28430 }else{\r
28431 if(b&&b.clientWidth){\r
28432 d.w=b.clientWidth;\r
28433 d.h=b.clientHeight;\r
28434 }\r
28435 }\r
28436 }\r
28437 return d;\r
28438 },getViewportPosition:function(){\r
28439 var c=new MochiKit.Style.Coordinates(0,0);\r
28440 var d=MochiKit.DOM._document;\r
28441 var de=d.documentElement;\r
28442 var db=d.body;\r
28443 if(de&&(de.scrollTop||de.scrollLeft)){\r
28444 c.x=de.scrollLeft;\r
28445 c.y=de.scrollTop;\r
28446 }else{\r
28447 if(db){\r
28448 c.x=db.scrollLeft;\r
28449 c.y=db.scrollTop;\r
28450 }\r
28451 }\r
28452 return c;\r
28453 },__new__:function(){\r
28454 var m=MochiKit.Base;\r
28455 var _470=["A","ABBR","ACRONYM","B","BASEFONT","BDO","BIG","BR","CITE","CODE","DFN","EM","FONT","I","IMG","KBD","LABEL","Q","S","SAMP","SMALL","SPAN","STRIKE","STRONG","SUB","SUP","TEXTAREA","TT","U","VAR"];\r
28456 this._defaultDisplay={"TABLE":"table","THEAD":"table-header-group","TBODY":"table-row-group","TFOOT":"table-footer-group","COLGROUP":"table-column-group","COL":"table-column","TR":"table-row","TD":"table-cell","TH":"table-cell","CAPTION":"table-caption","LI":"list-item","INPUT":"inline-block","SELECT":"inline-block"};\r
28457 if(/MSIE/.test(navigator.userAgent)){\r
28458 for(var k in this._defaultDisplay){\r
28459 var v=this._defaultDisplay[k];\r
28460 if(v.indexOf("table")==0){\r
28461 this._defaultDisplay[k]="block";\r
28462 }\r
28463 }\r
28464 }\r
28465 for(var i=0;i<_470.length;i++){\r
28466 this._defaultDisplay[_470[i]]="inline";\r
28467 }\r
28468 this.elementPosition=this.getElementPosition;\r
28469 this.elementDimensions=this.getElementDimensions;\r
28470 this.hideElement=m.partial(this.setDisplayForElement,"none");\r
28471 this.showElement=m.partial(this.setDisplayForElement,"block");\r
28472 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
28473 m.nameFunctions(this);\r
28474 }});\r
28475 MochiKit.Style.__new__();\r
28476 MochiKit.Base._exportSymbols(this,MochiKit.Style);\r
28477 MochiKit.Base._deps("LoggingPane",["Base","Logging"]);\r
28478 MochiKit.LoggingPane.NAME="MochiKit.LoggingPane";\r
28479 MochiKit.LoggingPane.VERSION="1.4.2";\r
28480 MochiKit.LoggingPane.__repr__=function(){\r
28481 return "["+this.NAME+" "+this.VERSION+"]";\r
28482 };\r
28483 MochiKit.LoggingPane.toString=function(){\r
28484 return this.__repr__();\r
28485 };\r
28486 MochiKit.LoggingPane.createLoggingPane=function(_474){\r
28487 var m=MochiKit.LoggingPane;\r
28488 _474=!(!_474);\r
28489 if(m._loggingPane&&m._loggingPane.inline!=_474){\r
28490 m._loggingPane.closePane();\r
28491 m._loggingPane=null;\r
28492 }\r
28493 if(!m._loggingPane||m._loggingPane.closed){\r
28494 m._loggingPane=new m.LoggingPane(_474,MochiKit.Logging.logger);\r
28495 }\r
28496 return m._loggingPane;\r
28497 };\r
28498 MochiKit.LoggingPane.LoggingPane=function(_476,_477){\r
28499 if(typeof (_477)=="undefined"||_477===null){\r
28500 _477=MochiKit.Logging.logger;\r
28501 }\r
28502 this.logger=_477;\r
28503 var _478=MochiKit.Base.update;\r
28504 var _479=MochiKit.Base.updatetree;\r
28505 var bind=MochiKit.Base.bind;\r
28506 var _47b=MochiKit.Base.clone;\r
28507 var win=window;\r
28508 var uid="_MochiKit_LoggingPane";\r
28509 if(typeof (MochiKit.DOM)!="undefined"){\r
28510 win=MochiKit.DOM.currentWindow();\r
28511 }\r
28512 if(!_476){\r
28513 var url=win.location.href.split("?")[0].replace(/[#:\/.><&%-]/g,"_");\r
28514 var name=uid+"_"+url;\r
28515 var nwin=win.open("",name,"dependent,resizable,height=200");\r
28516 if(!nwin){\r
28517 alert("Not able to open debugging window due to pop-up blocking.");\r
28518 return undefined;\r
28519 }\r
28520 nwin.document.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" "+"\"http://www.w3.org/TR/html4/loose.dtd\">"+"<html><head><title>[MochiKit.LoggingPane]</title></head>"+"<body></body></html>");\r
28521 nwin.document.close();\r
28522 nwin.document.title+=" "+win.document.title;\r
28523 win=nwin;\r
28524 }\r
28525 var doc=win.document;\r
28526 this.doc=doc;\r
28527 var _482=doc.getElementById(uid);\r
28528 var _483=!!_482;\r
28529 if(_482&&typeof (_482.loggingPane)!="undefined"){\r
28530 _482.loggingPane.logger=this.logger;\r
28531 _482.loggingPane.buildAndApplyFilter();\r
28532 return _482.loggingPane;\r
28533 }\r
28534 if(_483){\r
28535 var _484;\r
28536 while((_484=_482.firstChild)){\r
28537 _482.removeChild(_484);\r
28538 }\r
28539 }else{\r
28540 _482=doc.createElement("div");\r
28541 _482.id=uid;\r
28542 }\r
28543 _482.loggingPane=this;\r
28544 var _485=doc.createElement("input");\r
28545 var _486=doc.createElement("input");\r
28546 var _487=doc.createElement("button");\r
28547 var _488=doc.createElement("button");\r
28548 var _489=doc.createElement("button");\r
28549 var _48a=doc.createElement("button");\r
28550 var _48b=doc.createElement("div");\r
28551 var _48c=doc.createElement("div");\r
28552 var _48d=uid+"_Listener";\r
28553 this.colorTable=_47b(this.colorTable);\r
28554 var _48e=[];\r
28555 var _48f=null;\r
28556 var _490=function(msg){\r
28557 var _492=msg.level;\r
28558 if(typeof (_492)=="number"){\r
28559 _492=MochiKit.Logging.LogLevel[_492];\r
28560 }\r
28561 return _492;\r
28562 };\r
28563 var _493=function(msg){\r
28564 return msg.info.join(" ");\r
28565 };\r
28566 var _495=bind(function(msg){\r
28567 var _497=_490(msg);\r
28568 var text=_493(msg);\r
28569 var c=this.colorTable[_497];\r
28570 var p=doc.createElement("span");\r
28571 p.className="MochiKit-LogMessage MochiKit-LogLevel-"+_497;\r
28572 p.style.cssText="margin: 0px; white-space: -moz-pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; white-space: pre-line; word-wrap: break-word; wrap-option: emergency; color: "+c;\r
28573 p.appendChild(doc.createTextNode(_497+": "+text));\r
28574 _48c.appendChild(p);\r
28575 _48c.appendChild(doc.createElement("br"));\r
28576 if(_48b.offsetHeight>_48b.scrollHeight){\r
28577 _48b.scrollTop=0;\r
28578 }else{\r
28579 _48b.scrollTop=_48b.scrollHeight;\r
28580 }\r
28581 },this);\r
28582 var _49b=function(msg){\r
28583 _48e[_48e.length]=msg;\r
28584 _495(msg);\r
28585 };\r
28586 var _49d=function(){\r
28587 var _49e,_49f;\r
28588 try{\r
28589 _49e=new RegExp(_485.value);\r
28590 _49f=new RegExp(_486.value);\r
28591 }\r
28592 catch(e){\r
28593 logDebug("Error in filter regex: "+e.message);\r
28594 return null;\r
28595 }\r
28596 return function(msg){\r
28597 return (_49e.test(_490(msg))&&_49f.test(_493(msg)));\r
28598 };\r
28599 };\r
28600 var _4a1=function(){\r
28601 while(_48c.firstChild){\r
28602 _48c.removeChild(_48c.firstChild);\r
28603 }\r
28604 };\r
28605 var _4a2=function(){\r
28606 _48e=[];\r
28607 _4a1();\r
28608 };\r
28609 var _4a3=bind(function(){\r
28610 if(this.closed){\r
28611 return;\r
28612 }\r
28613 this.closed=true;\r
28614 if(MochiKit.LoggingPane._loggingPane==this){\r
28615 MochiKit.LoggingPane._loggingPane=null;\r
28616 }\r
28617 this.logger.removeListener(_48d);\r
28618 try{\r
28619 try{\r
28620 _482.loggingPane=null;\r
28621 }\r
28622 catch(e){\r
28623 logFatal("Bookmarklet was closed incorrectly.");\r
28624 }\r
28625 if(_476){\r
28626 _482.parentNode.removeChild(_482);\r
28627 }else{\r
28628 this.win.close();\r
28629 }\r
28630 }\r
28631 catch(e){\r
28632 }\r
28633 },this);\r
28634 var _4a4=function(){\r
28635 _4a1();\r
28636 for(var i=0;i<_48e.length;i++){\r
28637 var msg=_48e[i];\r
28638 if(_48f===null||_48f(msg)){\r
28639 _495(msg);\r
28640 }\r
28641 }\r
28642 };\r
28643 this.buildAndApplyFilter=function(){\r
28644 _48f=_49d();\r
28645 _4a4();\r
28646 this.logger.removeListener(_48d);\r
28647 this.logger.addListener(_48d,_48f,_49b);\r
28648 };\r
28649 var _4a7=bind(function(){\r
28650 _48e=this.logger.getMessages();\r
28651 _4a4();\r
28652 },this);\r
28653 var _4a8=bind(function(_4a9){\r
28654 _4a9=_4a9||window.event;\r
28655 key=_4a9.which||_4a9.keyCode;\r
28656 if(key==13){\r
28657 this.buildAndApplyFilter();\r
28658 }\r
28659 },this);\r
28660 var _4aa="display: block; z-index: 1000; left: 0px; bottom: 0px; position: fixed; width: 100%; background-color: white; font: "+this.logFont;\r
28661 if(_476){\r
28662 _4aa+="; height: 10em; border-top: 2px solid black";\r
28663 }else{\r
28664 _4aa+="; height: 100%;";\r
28665 }\r
28666 _482.style.cssText=_4aa;\r
28667 if(!_483){\r
28668 doc.body.appendChild(_482);\r
28669 }\r
28670 _4aa={"cssText":"width: 33%; display: inline; font: "+this.logFont};\r
28671 _479(_485,{"value":"FATAL|ERROR|WARNING|INFO|DEBUG","onkeypress":_4a8,"style":_4aa});\r
28672 _482.appendChild(_485);\r
28673 _479(_486,{"value":".*","onkeypress":_4a8,"style":_4aa});\r
28674 _482.appendChild(_486);\r
28675 _4aa="width: 8%; display:inline; font: "+this.logFont;\r
28676 _487.appendChild(doc.createTextNode("Filter"));\r
28677 _487.onclick=bind("buildAndApplyFilter",this);\r
28678 _487.style.cssText=_4aa;\r
28679 _482.appendChild(_487);\r
28680 _488.appendChild(doc.createTextNode("Load"));\r
28681 _488.onclick=_4a7;\r
28682 _488.style.cssText=_4aa;\r
28683 _482.appendChild(_488);\r
28684 _489.appendChild(doc.createTextNode("Clear"));\r
28685 _489.onclick=_4a2;\r
28686 _489.style.cssText=_4aa;\r
28687 _482.appendChild(_489);\r
28688 _48a.appendChild(doc.createTextNode("Close"));\r
28689 _48a.onclick=_4a3;\r
28690 _48a.style.cssText=_4aa;\r
28691 _482.appendChild(_48a);\r
28692 _48b.style.cssText="overflow: auto; width: 100%";\r
28693 _48c.style.cssText="width: 100%; height: "+(_476?"8em":"100%");\r
28694 _48b.appendChild(_48c);\r
28695 _482.appendChild(_48b);\r
28696 this.buildAndApplyFilter();\r
28697 _4a7();\r
28698 if(_476){\r
28699 this.win=undefined;\r
28700 }else{\r
28701 this.win=win;\r
28702 }\r
28703 this.inline=_476;\r
28704 this.closePane=_4a3;\r
28705 this.closed=false;\r
28706 return this;\r
28707 };\r
28708 MochiKit.LoggingPane.LoggingPane.prototype={"logFont":"8pt Verdana,sans-serif","colorTable":{"ERROR":"red","FATAL":"darkred","WARNING":"blue","INFO":"black","DEBUG":"green"}};\r
28709 MochiKit.LoggingPane.EXPORT_OK=["LoggingPane"];\r
28710 MochiKit.LoggingPane.EXPORT=["createLoggingPane"];\r
28711 MochiKit.LoggingPane.__new__=function(){\r
28712 this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)};\r
28713 MochiKit.Base.nameFunctions(this);\r
28714 MochiKit.LoggingPane._loggingPane=null;\r
28715 };\r
28716 MochiKit.LoggingPane.__new__();\r
28717 MochiKit.Base._exportSymbols(this,MochiKit.LoggingPane);\r
28718 MochiKit.Base._deps("Color",["Base","DOM","Style"]);\r
28719 MochiKit.Color.NAME="MochiKit.Color";\r
28720 MochiKit.Color.VERSION="1.4.2";\r
28721 MochiKit.Color.__repr__=function(){\r
28722 return "["+this.NAME+" "+this.VERSION+"]";\r
28723 };\r
28724 MochiKit.Color.toString=function(){\r
28725 return this.__repr__();\r
28726 };\r
28727 MochiKit.Color.Color=function(red,_4ac,blue,_4ae){\r
28728 if(typeof (_4ae)=="undefined"||_4ae===null){\r
28729 _4ae=1;\r
28730 }\r
28731 this.rgb={r:red,g:_4ac,b:blue,a:_4ae};\r
28732 };\r
28733 MochiKit.Color.Color.prototype={__class__:MochiKit.Color.Color,colorWithAlpha:function(_4af){\r
28734 var rgb=this.rgb;\r
28735 var m=MochiKit.Color;\r
28736 return m.Color.fromRGB(rgb.r,rgb.g,rgb.b,_4af);\r
28737 },colorWithHue:function(hue){\r
28738 var hsl=this.asHSL();\r
28739 hsl.h=hue;\r
28740 var m=MochiKit.Color;\r
28741 return m.Color.fromHSL(hsl);\r
28742 },colorWithSaturation:function(_4b5){\r
28743 var hsl=this.asHSL();\r
28744 hsl.s=_4b5;\r
28745 var m=MochiKit.Color;\r
28746 return m.Color.fromHSL(hsl);\r
28747 },colorWithLightness:function(_4b8){\r
28748 var hsl=this.asHSL();\r
28749 hsl.l=_4b8;\r
28750 var m=MochiKit.Color;\r
28751 return m.Color.fromHSL(hsl);\r
28752 },darkerColorWithLevel:function(_4bb){\r
28753 var hsl=this.asHSL();\r
28754 hsl.l=Math.max(hsl.l-_4bb,0);\r
28755 var m=MochiKit.Color;\r
28756 return m.Color.fromHSL(hsl);\r
28757 },lighterColorWithLevel:function(_4be){\r
28758 var hsl=this.asHSL();\r
28759 hsl.l=Math.min(hsl.l+_4be,1);\r
28760 var m=MochiKit.Color;\r
28761 return m.Color.fromHSL(hsl);\r
28762 },blendedColor:function(_4c1,_4c2){\r
28763 if(typeof (_4c2)=="undefined"||_4c2===null){\r
28764 _4c2=0.5;\r
28765 }\r
28766 var sf=1-_4c2;\r
28767 var s=this.rgb;\r
28768 var d=_4c1.rgb;\r
28769 var df=_4c2;\r
28770 return MochiKit.Color.Color.fromRGB((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df));\r
28771 },compareRGB:function(_4c7){\r
28772 var a=this.asRGB();\r
28773 var b=_4c7.asRGB();\r
28774 return MochiKit.Base.compare([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a]);\r
28775 },isLight:function(){\r
28776 return this.asHSL().b>0.5;\r
28777 },isDark:function(){\r
28778 return (!this.isLight());\r
28779 },toHSLString:function(){\r
28780 var c=this.asHSL();\r
28781 var ccc=MochiKit.Color.clampColorComponent;\r
28782 var rval=this._hslString;\r
28783 if(!rval){\r
28784 var mid=(ccc(c.h,360).toFixed(0)+","+ccc(c.s,100).toPrecision(4)+"%"+","+ccc(c.l,100).toPrecision(4)+"%");\r
28785 var a=c.a;\r
28786 if(a>=1){\r
28787 a=1;\r
28788 rval="hsl("+mid+")";\r
28789 }else{\r
28790 if(a<=0){\r
28791 a=0;\r
28792 }\r
28793 rval="hsla("+mid+","+a+")";\r
28794 }\r
28795 this._hslString=rval;\r
28796 }\r
28797 return rval;\r
28798 },toRGBString:function(){\r
28799 var c=this.rgb;\r
28800 var ccc=MochiKit.Color.clampColorComponent;\r
28801 var rval=this._rgbString;\r
28802 if(!rval){\r
28803 var mid=(ccc(c.r,255).toFixed(0)+","+ccc(c.g,255).toFixed(0)+","+ccc(c.b,255).toFixed(0));\r
28804 if(c.a!=1){\r
28805 rval="rgba("+mid+","+c.a+")";\r
28806 }else{\r
28807 rval="rgb("+mid+")";\r
28808 }\r
28809 this._rgbString=rval;\r
28810 }\r
28811 return rval;\r
28812 },asRGB:function(){\r
28813 return MochiKit.Base.clone(this.rgb);\r
28814 },toHexString:function(){\r
28815 var m=MochiKit.Color;\r
28816 var c=this.rgb;\r
28817 var ccc=MochiKit.Color.clampColorComponent;\r
28818 var rval=this._hexString;\r
28819 if(!rval){\r
28820 rval=("#"+m.toColorPart(ccc(c.r,255))+m.toColorPart(ccc(c.g,255))+m.toColorPart(ccc(c.b,255)));\r
28821 this._hexString=rval;\r
28822 }\r
28823 return rval;\r
28824 },asHSV:function(){\r
28825 var hsv=this.hsv;\r
28826 var c=this.rgb;\r
28827 if(typeof (hsv)=="undefined"||hsv===null){\r
28828 hsv=MochiKit.Color.rgbToHSV(this.rgb);\r
28829 this.hsv=hsv;\r
28830 }\r
28831 return MochiKit.Base.clone(hsv);\r
28832 },asHSL:function(){\r
28833 var hsl=this.hsl;\r
28834 var c=this.rgb;\r
28835 if(typeof (hsl)=="undefined"||hsl===null){\r
28836 hsl=MochiKit.Color.rgbToHSL(this.rgb);\r
28837 this.hsl=hsl;\r
28838 }\r
28839 return MochiKit.Base.clone(hsl);\r
28840 },toString:function(){\r
28841 return this.toRGBString();\r
28842 },repr:function(){\r
28843 var c=this.rgb;\r
28844 var col=[c.r,c.g,c.b,c.a];\r
28845 return this.__class__.NAME+"("+col.join(", ")+")";\r
28846 }};\r
28847 MochiKit.Base.update(MochiKit.Color.Color,{fromRGB:function(red,_4de,blue,_4e0){\r
28848 var _4e1=MochiKit.Color.Color;\r
28849 if(arguments.length==1){\r
28850 var rgb=red;\r
28851 red=rgb.r;\r
28852 _4de=rgb.g;\r
28853 blue=rgb.b;\r
28854 if(typeof (rgb.a)=="undefined"){\r
28855 _4e0=undefined;\r
28856 }else{\r
28857 _4e0=rgb.a;\r
28858 }\r
28859 }\r
28860 return new _4e1(red,_4de,blue,_4e0);\r
28861 },fromHSL:function(hue,_4e4,_4e5,_4e6){\r
28862 var m=MochiKit.Color;\r
28863 return m.Color.fromRGB(m.hslToRGB.apply(m,arguments));\r
28864 },fromHSV:function(hue,_4e9,_4ea,_4eb){\r
28865 var m=MochiKit.Color;\r
28866 return m.Color.fromRGB(m.hsvToRGB.apply(m,arguments));\r
28867 },fromName:function(name){\r
28868 var _4ee=MochiKit.Color.Color;\r
28869 if(name.charAt(0)=="\""){\r
28870 name=name.substr(1,name.length-2);\r
28871 }\r
28872 var _4ef=_4ee._namedColors[name.toLowerCase()];\r
28873 if(typeof (_4ef)=="string"){\r
28874 return _4ee.fromHexString(_4ef);\r
28875 }else{\r
28876 if(name=="transparent"){\r
28877 return _4ee.transparentColor();\r
28878 }\r
28879 }\r
28880 return null;\r
28881 },fromString:function(_4f0){\r
28882 var self=MochiKit.Color.Color;\r
28883 var _4f2=_4f0.substr(0,3);\r
28884 if(_4f2=="rgb"){\r
28885 return self.fromRGBString(_4f0);\r
28886 }else{\r
28887 if(_4f2=="hsl"){\r
28888 return self.fromHSLString(_4f0);\r
28889 }else{\r
28890 if(_4f0.charAt(0)=="#"){\r
28891 return self.fromHexString(_4f0);\r
28892 }\r
28893 }\r
28894 }\r
28895 return self.fromName(_4f0);\r
28896 },fromHexString:function(_4f3){\r
28897 if(_4f3.charAt(0)=="#"){\r
28898 _4f3=_4f3.substring(1);\r
28899 }\r
28900 var _4f4=[];\r
28901 var i,hex;\r
28902 if(_4f3.length==3){\r
28903 for(i=0;i<3;i++){\r
28904 hex=_4f3.substr(i,1);\r
28905 _4f4.push(parseInt(hex+hex,16)/255);\r
28906 }\r
28907 }else{\r
28908 for(i=0;i<6;i+=2){\r
28909 hex=_4f3.substr(i,2);\r
28910 _4f4.push(parseInt(hex,16)/255);\r
28911 }\r
28912 }\r
28913 var _4f7=MochiKit.Color.Color;\r
28914 return _4f7.fromRGB.apply(_4f7,_4f4);\r
28915 },_fromColorString:function(pre,_4f9,_4fa,_4fb){\r
28916 if(_4fb.indexOf(pre)===0){\r
28917 _4fb=_4fb.substring(_4fb.indexOf("(",3)+1,_4fb.length-1);\r
28918 }\r
28919 var _4fc=_4fb.split(/\s*,\s*/);\r
28920 var _4fd=[];\r
28921 for(var i=0;i<_4fc.length;i++){\r
28922 var c=_4fc[i];\r
28923 var val;\r
28924 var _501=c.substring(c.length-3);\r
28925 if(c.charAt(c.length-1)=="%"){\r
28926 val=0.01*parseFloat(c.substring(0,c.length-1));\r
28927 }else{\r
28928 if(_501=="deg"){\r
28929 val=parseFloat(c)/360;\r
28930 }else{\r
28931 if(_501=="rad"){\r
28932 val=parseFloat(c)/(Math.PI*2);\r
28933 }else{\r
28934 val=_4fa[i]*parseFloat(c);\r
28935 }\r
28936 }\r
28937 }\r
28938 _4fd.push(val);\r
28939 }\r
28940 return this[_4f9].apply(this,_4fd);\r
28941 },fromComputedStyle:function(elem,_503){\r
28942 var d=MochiKit.DOM;\r
28943 var cls=MochiKit.Color.Color;\r
28944 for(elem=d.getElement(elem);elem;elem=elem.parentNode){\r
28945 var _506=MochiKit.Style.getStyle.apply(d,arguments);\r
28946 if(!_506){\r
28947 continue;\r
28948 }\r
28949 var _507=cls.fromString(_506);\r
28950 if(!_507){\r
28951 break;\r
28952 }\r
28953 if(_507.asRGB().a>0){\r
28954 return _507;\r
28955 }\r
28956 }\r
28957 return null;\r
28958 },fromBackground:function(elem){\r
28959 var cls=MochiKit.Color.Color;\r
28960 return cls.fromComputedStyle(elem,"backgroundColor","background-color")||cls.whiteColor();\r
28961 },fromText:function(elem){\r
28962 var cls=MochiKit.Color.Color;\r
28963 return cls.fromComputedStyle(elem,"color","color")||cls.blackColor();\r
28964 },namedColors:function(){\r
28965 return MochiKit.Base.clone(MochiKit.Color.Color._namedColors);\r
28966 }});\r
28967 MochiKit.Base.update(MochiKit.Color,{clampColorComponent:function(v,_50d){\r
28968 v*=_50d;\r
28969 if(v<0){\r
28970 return 0;\r
28971 }else{\r
28972 if(v>_50d){\r
28973 return _50d;\r
28974 }else{\r
28975 return v;\r
28976 }\r
28977 }\r
28978 },_hslValue:function(n1,n2,hue){\r
28979 if(hue>6){\r
28980 hue-=6;\r
28981 }else{\r
28982 if(hue<0){\r
28983 hue+=6;\r
28984 }\r
28985 }\r
28986 var val;\r
28987 if(hue<1){\r
28988 val=n1+(n2-n1)*hue;\r
28989 }else{\r
28990 if(hue<3){\r
28991 val=n2;\r
28992 }else{\r
28993 if(hue<4){\r
28994 val=n1+(n2-n1)*(4-hue);\r
28995 }else{\r
28996 val=n1;\r
28997 }\r
28998 }\r
28999 }\r
29000 return val;\r
29001 },hsvToRGB:function(hue,_513,_514,_515){\r
29002 if(arguments.length==1){\r
29003 var hsv=hue;\r
29004 hue=hsv.h;\r
29005 _513=hsv.s;\r
29006 _514=hsv.v;\r
29007 _515=hsv.a;\r
29008 }\r
29009 var red;\r
29010 var _518;\r
29011 var blue;\r
29012 if(_513===0){\r
29013 red=_514;\r
29014 _518=_514;\r
29015 blue=_514;\r
29016 }else{\r
29017 var i=Math.floor(hue*6);\r
29018 var f=(hue*6)-i;\r
29019 var p=_514*(1-_513);\r
29020 var q=_514*(1-(_513*f));\r
29021 var t=_514*(1-(_513*(1-f)));\r
29022 switch(i){\r
29023 case 1:\r
29024 red=q;\r
29025 _518=_514;\r
29026 blue=p;\r
29027 break;\r
29028 case 2:\r
29029 red=p;\r
29030 _518=_514;\r
29031 blue=t;\r
29032 break;\r
29033 case 3:\r
29034 red=p;\r
29035 _518=q;\r
29036 blue=_514;\r
29037 break;\r
29038 case 4:\r
29039 red=t;\r
29040 _518=p;\r
29041 blue=_514;\r
29042 break;\r
29043 case 5:\r
29044 red=_514;\r
29045 _518=p;\r
29046 blue=q;\r
29047 break;\r
29048 case 6:\r
29049 case 0:\r
29050 red=_514;\r
29051 _518=t;\r
29052 blue=p;\r
29053 break;\r
29054 }\r
29055 }\r
29056 return {r:red,g:_518,b:blue,a:_515};\r
29057 },hslToRGB:function(hue,_520,_521,_522){\r
29058 if(arguments.length==1){\r
29059 var hsl=hue;\r
29060 hue=hsl.h;\r
29061 _520=hsl.s;\r
29062 _521=hsl.l;\r
29063 _522=hsl.a;\r
29064 }\r
29065 var red;\r
29066 var _525;\r
29067 var blue;\r
29068 if(_520===0){\r
29069 red=_521;\r
29070 _525=_521;\r
29071 blue=_521;\r
29072 }else{\r
29073 var m2;\r
29074 if(_521<=0.5){\r
29075 m2=_521*(1+_520);\r
29076 }else{\r
29077 m2=_521+_520-(_521*_520);\r
29078 }\r
29079 var m1=(2*_521)-m2;\r
29080 var f=MochiKit.Color._hslValue;\r
29081 var h6=hue*6;\r
29082 red=f(m1,m2,h6+2);\r
29083 _525=f(m1,m2,h6);\r
29084 blue=f(m1,m2,h6-2);\r
29085 }\r
29086 return {r:red,g:_525,b:blue,a:_522};\r
29087 },rgbToHSV:function(red,_52c,blue,_52e){\r
29088 if(arguments.length==1){\r
29089 var rgb=red;\r
29090 red=rgb.r;\r
29091 _52c=rgb.g;\r
29092 blue=rgb.b;\r
29093 _52e=rgb.a;\r
29094 }\r
29095 var max=Math.max(Math.max(red,_52c),blue);\r
29096 var min=Math.min(Math.min(red,_52c),blue);\r
29097 var hue;\r
29098 var _533;\r
29099 var _534=max;\r
29100 if(min==max){\r
29101 hue=0;\r
29102 _533=0;\r
29103 }else{\r
29104 var _535=(max-min);\r
29105 _533=_535/max;\r
29106 if(red==max){\r
29107 hue=(_52c-blue)/_535;\r
29108 }else{\r
29109 if(_52c==max){\r
29110 hue=2+((blue-red)/_535);\r
29111 }else{\r
29112 hue=4+((red-_52c)/_535);\r
29113 }\r
29114 }\r
29115 hue/=6;\r
29116 if(hue<0){\r
29117 hue+=1;\r
29118 }\r
29119 if(hue>1){\r
29120 hue-=1;\r
29121 }\r
29122 }\r
29123 return {h:hue,s:_533,v:_534,a:_52e};\r
29124 },rgbToHSL:function(red,_537,blue,_539){\r
29125 if(arguments.length==1){\r
29126 var rgb=red;\r
29127 red=rgb.r;\r
29128 _537=rgb.g;\r
29129 blue=rgb.b;\r
29130 _539=rgb.a;\r
29131 }\r
29132 var max=Math.max(red,Math.max(_537,blue));\r
29133 var min=Math.min(red,Math.min(_537,blue));\r
29134 var hue;\r
29135 var _53e;\r
29136 var _53f=(max+min)/2;\r
29137 var _540=max-min;\r
29138 if(_540===0){\r
29139 hue=0;\r
29140 _53e=0;\r
29141 }else{\r
29142 if(_53f<=0.5){\r
29143 _53e=_540/(max+min);\r
29144 }else{\r
29145 _53e=_540/(2-max-min);\r
29146 }\r
29147 if(red==max){\r
29148 hue=(_537-blue)/_540;\r
29149 }else{\r
29150 if(_537==max){\r
29151 hue=2+((blue-red)/_540);\r
29152 }else{\r
29153 hue=4+((red-_537)/_540);\r
29154 }\r
29155 }\r
29156 hue/=6;\r
29157 if(hue<0){\r
29158 hue+=1;\r
29159 }\r
29160 if(hue>1){\r
29161 hue-=1;\r
29162 }\r
29163 }\r
29164 return {h:hue,s:_53e,l:_53f,a:_539};\r
29165 },toColorPart:function(num){\r
29166 num=Math.round(num);\r
29167 var _542=num.toString(16);\r
29168 if(num<16){\r
29169 return "0"+_542;\r
29170 }\r
29171 return _542;\r
29172 },__new__:function(){\r
29173 var m=MochiKit.Base;\r
29174 this.Color.fromRGBString=m.bind(this.Color._fromColorString,this.Color,"rgb","fromRGB",[1/255,1/255,1/255,1]);\r
29175 this.Color.fromHSLString=m.bind(this.Color._fromColorString,this.Color,"hsl","fromHSL",[1/360,0.01,0.01,1]);\r
29176 var _544=1/3;\r
29177 var _545={black:[0,0,0],blue:[0,0,1],brown:[0.6,0.4,0.2],cyan:[0,1,1],darkGray:[_544,_544,_544],gray:[0.5,0.5,0.5],green:[0,1,0],lightGray:[2*_544,2*_544,2*_544],magenta:[1,0,1],orange:[1,0.5,0],purple:[0.5,0,0.5],red:[1,0,0],transparent:[0,0,0,0],white:[1,1,1],yellow:[1,1,0]};\r
29178 var _546=function(name,r,g,b,a){\r
29179 var rval=this.fromRGB(r,g,b,a);\r
29180 this[name]=function(){\r
29181 return rval;\r
29182 };\r
29183 return rval;\r
29184 };\r
29185 for(var k in _545){\r
29186 var name=k+"Color";\r
29187 var _54f=m.concat([_546,this.Color,name],_545[k]);\r
29188 this.Color[name]=m.bind.apply(null,_54f);\r
29189 }\r
29190 var _550=function(){\r
29191 for(var i=0;i<arguments.length;i++){\r
29192 if(!(arguments[i] instanceof MochiKit.Color.Color)){\r
29193 return false;\r
29194 }\r
29195 }\r
29196 return true;\r
29197 };\r
29198 var _552=function(a,b){\r
29199 return a.compareRGB(b);\r
29200 };\r
29201 m.nameFunctions(this);\r
29202 m.registerComparator(this.Color.NAME,_550,_552);\r
29203 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
29204 }});\r
29205 MochiKit.Color.EXPORT=["Color"];\r
29206 MochiKit.Color.EXPORT_OK=["clampColorComponent","rgbToHSL","hslToRGB","rgbToHSV","hsvToRGB","toColorPart"];\r
29207 MochiKit.Color.__new__();\r
29208 MochiKit.Base._exportSymbols(this,MochiKit.Color);\r
29209 MochiKit.Color.Color._namedColors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};\r
29210 MochiKit.Base._deps("Signal",["Base","DOM","Style"]);\r
29211 MochiKit.Signal.NAME="MochiKit.Signal";\r
29212 MochiKit.Signal.VERSION="1.4.2";\r
29213 MochiKit.Signal._observers=[];\r
29214 MochiKit.Signal.Event=function(src,e){\r
29215 this._event=e||window.event;\r
29216 this._src=src;\r
29217 };\r
29218 MochiKit.Base.update(MochiKit.Signal.Event.prototype,{__repr__:function(){\r
29219 var repr=MochiKit.Base.repr;\r
29220 var str="{event(): "+repr(this.event())+", src(): "+repr(this.src())+", type(): "+repr(this.type())+", target(): "+repr(this.target());\r
29221 if(this.type()&&this.type().indexOf("key")===0||this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu"){\r
29222 str+=", modifier(): "+"{alt: "+repr(this.modifier().alt)+", ctrl: "+repr(this.modifier().ctrl)+", meta: "+repr(this.modifier().meta)+", shift: "+repr(this.modifier().shift)+", any: "+repr(this.modifier().any)+"}";\r
29223 }\r
29224 if(this.type()&&this.type().indexOf("key")===0){\r
29225 str+=", key(): {code: "+repr(this.key().code)+", string: "+repr(this.key().string)+"}";\r
29226 }\r
29227 if(this.type()&&(this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu")){\r
29228 str+=", mouse(): {page: "+repr(this.mouse().page)+", client: "+repr(this.mouse().client);\r
29229 if(this.type()!="mousemove"&&this.type()!="mousewheel"){\r
29230 str+=", button: {left: "+repr(this.mouse().button.left)+", middle: "+repr(this.mouse().button.middle)+", right: "+repr(this.mouse().button.right)+"}";\r
29231 }\r
29232 if(this.type()=="mousewheel"){\r
29233 str+=", wheel: "+repr(this.mouse().wheel);\r
29234 }\r
29235 str+="}";\r
29236 }\r
29237 if(this.type()=="mouseover"||this.type()=="mouseout"||this.type()=="mouseenter"||this.type()=="mouseleave"){\r
29238 str+=", relatedTarget(): "+repr(this.relatedTarget());\r
29239 }\r
29240 str+="}";\r
29241 return str;\r
29242 },toString:function(){\r
29243 return this.__repr__();\r
29244 },src:function(){\r
29245 return this._src;\r
29246 },event:function(){\r
29247 return this._event;\r
29248 },type:function(){\r
29249 if(this._event.type==="DOMMouseScroll"){\r
29250 return "mousewheel";\r
29251 }else{\r
29252 return this._event.type||undefined;\r
29253 }\r
29254 },target:function(){\r
29255 return this._event.target||this._event.srcElement;\r
29256 },_relatedTarget:null,relatedTarget:function(){\r
29257 if(this._relatedTarget!==null){\r
29258 return this._relatedTarget;\r
29259 }\r
29260 var elem=null;\r
29261 if(this.type()=="mouseover"||this.type()=="mouseenter"){\r
29262 elem=(this._event.relatedTarget||this._event.fromElement);\r
29263 }else{\r
29264 if(this.type()=="mouseout"||this.type()=="mouseleave"){\r
29265 elem=(this._event.relatedTarget||this._event.toElement);\r
29266 }\r
29267 }\r
29268 try{\r
29269 if(elem!==null&&elem.nodeType!==null){\r
29270 this._relatedTarget=elem;\r
29271 return elem;\r
29272 }\r
29273 }\r
29274 catch(ignore){\r
29275 }\r
29276 return undefined;\r
29277 },_modifier:null,modifier:function(){\r
29278 if(this._modifier!==null){\r
29279 return this._modifier;\r
29280 }\r
29281 var m={};\r
29282 m.alt=this._event.altKey;\r
29283 m.ctrl=this._event.ctrlKey;\r
29284 m.meta=this._event.metaKey||false;\r
29285 m.shift=this._event.shiftKey;\r
29286 m.any=m.alt||m.ctrl||m.shift||m.meta;\r
29287 this._modifier=m;\r
29288 return m;\r
29289 },_key:null,key:function(){\r
29290 if(this._key!==null){\r
29291 return this._key;\r
29292 }\r
29293 var k={};\r
29294 if(this.type()&&this.type().indexOf("key")===0){\r
29295 if(this.type()=="keydown"||this.type()=="keyup"){\r
29296 k.code=this._event.keyCode;\r
29297 k.string=(MochiKit.Signal._specialKeys[k.code]||"KEY_UNKNOWN");\r
29298 this._key=k;\r
29299 return k;\r
29300 }else{\r
29301 if(this.type()=="keypress"){\r
29302 k.code=0;\r
29303 k.string="";\r
29304 if(typeof (this._event.charCode)!="undefined"&&this._event.charCode!==0&&!MochiKit.Signal._specialMacKeys[this._event.charCode]){\r
29305 k.code=this._event.charCode;\r
29306 k.string=String.fromCharCode(k.code);\r
29307 }else{\r
29308 if(this._event.keyCode&&typeof (this._event.charCode)=="undefined"){\r
29309 k.code=this._event.keyCode;\r
29310 k.string=String.fromCharCode(k.code);\r
29311 }\r
29312 }\r
29313 this._key=k;\r
29314 return k;\r
29315 }\r
29316 }\r
29317 }\r
29318 return undefined;\r
29319 },_mouse:null,mouse:function(){\r
29320 if(this._mouse!==null){\r
29321 return this._mouse;\r
29322 }\r
29323 var m={};\r
29324 var e=this._event;\r
29325 if(this.type()&&(this.type().indexOf("mouse")===0||this.type().indexOf("click")!=-1||this.type()=="contextmenu")){\r
29326 m.client=new MochiKit.Style.Coordinates(0,0);\r
29327 if(e.clientX||e.clientY){\r
29328 m.client.x=(!e.clientX||e.clientX<0)?0:e.clientX;\r
29329 m.client.y=(!e.clientY||e.clientY<0)?0:e.clientY;\r
29330 }\r
29331 m.page=new MochiKit.Style.Coordinates(0,0);\r
29332 if(e.pageX||e.pageY){\r
29333 m.page.x=(!e.pageX||e.pageX<0)?0:e.pageX;\r
29334 m.page.y=(!e.pageY||e.pageY<0)?0:e.pageY;\r
29335 }else{\r
29336 var de=MochiKit.DOM._document.documentElement;\r
29337 var b=MochiKit.DOM._document.body;\r
29338 m.page.x=e.clientX+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);\r
29339 m.page.y=e.clientY+(de.scrollTop||b.scrollTop)-(de.clientTop||0);\r
29340 }\r
29341 if(this.type()!="mousemove"&&this.type()!="mousewheel"){\r
29342 m.button={};\r
29343 m.button.left=false;\r
29344 m.button.right=false;\r
29345 m.button.middle=false;\r
29346 if(e.which){\r
29347 m.button.left=(e.which==1);\r
29348 m.button.middle=(e.which==2);\r
29349 m.button.right=(e.which==3);\r
29350 }else{\r
29351 m.button.left=!!(e.button&1);\r
29352 m.button.right=!!(e.button&2);\r
29353 m.button.middle=!!(e.button&4);\r
29354 }\r
29355 }\r
29356 if(this.type()=="mousewheel"){\r
29357 m.wheel=new MochiKit.Style.Coordinates(0,0);\r
29358 if(e.wheelDeltaX||e.wheelDeltaY){\r
29359 m.wheel.x=e.wheelDeltaX/-40||0;\r
29360 m.wheel.y=e.wheelDeltaY/-40||0;\r
29361 }else{\r
29362 if(e.wheelDelta){\r
29363 m.wheel.y=e.wheelDelta/-40;\r
29364 }else{\r
29365 m.wheel.y=e.detail||0;\r
29366 }\r
29367 }\r
29368 }\r
29369 this._mouse=m;\r
29370 return m;\r
29371 }\r
29372 return undefined;\r
29373 },stop:function(){\r
29374 this.stopPropagation();\r
29375 this.preventDefault();\r
29376 },stopPropagation:function(){\r
29377 if(this._event.stopPropagation){\r
29378 this._event.stopPropagation();\r
29379 }else{\r
29380 this._event.cancelBubble=true;\r
29381 }\r
29382 },preventDefault:function(){\r
29383 if(this._event.preventDefault){\r
29384 this._event.preventDefault();\r
29385 }else{\r
29386 if(this._confirmUnload===null){\r
29387 this._event.returnValue=false;\r
29388 }\r
29389 }\r
29390 },_confirmUnload:null,confirmUnload:function(msg){\r
29391 if(this.type()=="beforeunload"){\r
29392 this._confirmUnload=msg;\r
29393 this._event.returnValue=msg;\r
29394 }\r
29395 }});\r
29396 MochiKit.Signal._specialMacKeys={3:"KEY_ENTER",63289:"KEY_NUM_PAD_CLEAR",63276:"KEY_PAGE_UP",63277:"KEY_PAGE_DOWN",63275:"KEY_END",63273:"KEY_HOME",63234:"KEY_ARROW_LEFT",63232:"KEY_ARROW_UP",63235:"KEY_ARROW_RIGHT",63233:"KEY_ARROW_DOWN",63302:"KEY_INSERT",63272:"KEY_DELETE"};\r
29397 (function(){\r
29398 var _561=MochiKit.Signal._specialMacKeys;\r
29399 for(i=63236;i<=63242;i++){\r
29400 _561[i]="KEY_F"+(i-63236+1);\r
29401 }\r
29402 })();\r
29403 MochiKit.Signal._specialKeys={8:"KEY_BACKSPACE",9:"KEY_TAB",12:"KEY_NUM_PAD_CLEAR",13:"KEY_ENTER",16:"KEY_SHIFT",17:"KEY_CTRL",18:"KEY_ALT",19:"KEY_PAUSE",20:"KEY_CAPS_LOCK",27:"KEY_ESCAPE",32:"KEY_SPACEBAR",33:"KEY_PAGE_UP",34:"KEY_PAGE_DOWN",35:"KEY_END",36:"KEY_HOME",37:"KEY_ARROW_LEFT",38:"KEY_ARROW_UP",39:"KEY_ARROW_RIGHT",40:"KEY_ARROW_DOWN",44:"KEY_PRINT_SCREEN",45:"KEY_INSERT",46:"KEY_DELETE",59:"KEY_SEMICOLON",91:"KEY_WINDOWS_LEFT",92:"KEY_WINDOWS_RIGHT",93:"KEY_SELECT",106:"KEY_NUM_PAD_ASTERISK",107:"KEY_NUM_PAD_PLUS_SIGN",109:"KEY_NUM_PAD_HYPHEN-MINUS",110:"KEY_NUM_PAD_FULL_STOP",111:"KEY_NUM_PAD_SOLIDUS",144:"KEY_NUM_LOCK",145:"KEY_SCROLL_LOCK",186:"KEY_SEMICOLON",187:"KEY_EQUALS_SIGN",188:"KEY_COMMA",189:"KEY_HYPHEN-MINUS",190:"KEY_FULL_STOP",191:"KEY_SOLIDUS",192:"KEY_GRAVE_ACCENT",219:"KEY_LEFT_SQUARE_BRACKET",220:"KEY_REVERSE_SOLIDUS",221:"KEY_RIGHT_SQUARE_BRACKET",222:"KEY_APOSTROPHE"};\r
29404 (function(){\r
29405 var _562=MochiKit.Signal._specialKeys;\r
29406 for(var i=48;i<=57;i++){\r
29407 _562[i]="KEY_"+(i-48);\r
29408 }\r
29409 for(i=65;i<=90;i++){\r
29410 _562[i]="KEY_"+String.fromCharCode(i);\r
29411 }\r
29412 for(i=96;i<=105;i++){\r
29413 _562[i]="KEY_NUM_PAD_"+(i-96);\r
29414 }\r
29415 for(i=112;i<=123;i++){\r
29416 _562[i]="KEY_F"+(i-112+1);\r
29417 }\r
29418 })();\r
29419 MochiKit.Signal.Ident=function(_564){\r
29420 this.source=_564.source;\r
29421 this.signal=_564.signal;\r
29422 this.listener=_564.listener;\r
29423 this.isDOM=_564.isDOM;\r
29424 this.objOrFunc=_564.objOrFunc;\r
29425 this.funcOrStr=_564.funcOrStr;\r
29426 this.connected=_564.connected;\r
29427 };\r
29428 MochiKit.Signal.Ident.prototype={};\r
29429 MochiKit.Base.update(MochiKit.Signal,{__repr__:function(){\r
29430 return "["+this.NAME+" "+this.VERSION+"]";\r
29431 },toString:function(){\r
29432 return this.__repr__();\r
29433 },_unloadCache:function(){\r
29434 var self=MochiKit.Signal;\r
29435 var _566=self._observers;\r
29436 for(var i=0;i<_566.length;i++){\r
29437 if(_566[i].signal!=="onload"&&_566[i].signal!=="onunload"){\r
29438 self._disconnect(_566[i]);\r
29439 }\r
29440 }\r
29441 },_listener:function(src,sig,func,obj,_56c){\r
29442 var self=MochiKit.Signal;\r
29443 var E=self.Event;\r
29444 if(!_56c){\r
29445 if(typeof (func.im_self)=="undefined"){\r
29446 return MochiKit.Base.bindLate(func,obj);\r
29447 }else{\r
29448 return func;\r
29449 }\r
29450 }\r
29451 obj=obj||src;\r
29452 if(typeof (func)=="string"){\r
29453 if(sig==="onload"||sig==="onunload"){\r
29454 return function(_56f){\r
29455 obj[func].apply(obj,[new E(src,_56f)]);\r
29456 var _570=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:obj,funcOrStr:func});\r
29457 MochiKit.Signal._disconnect(_570);\r
29458 };\r
29459 }else{\r
29460 return function(_571){\r
29461 obj[func].apply(obj,[new E(src,_571)]);\r
29462 };\r
29463 }\r
29464 }else{\r
29465 if(sig==="onload"||sig==="onunload"){\r
29466 return function(_572){\r
29467 func.apply(obj,[new E(src,_572)]);\r
29468 var _573=new MochiKit.Signal.Ident({source:src,signal:sig,objOrFunc:func});\r
29469 MochiKit.Signal._disconnect(_573);\r
29470 };\r
29471 }else{\r
29472 return function(_574){\r
29473 func.apply(obj,[new E(src,_574)]);\r
29474 };\r
29475 }\r
29476 }\r
29477 },_browserAlreadyHasMouseEnterAndLeave:function(){\r
29478 return /MSIE/.test(navigator.userAgent);\r
29479 },_browserLacksMouseWheelEvent:function(){\r
29480 return /Gecko\//.test(navigator.userAgent);\r
29481 },_mouseEnterListener:function(src,sig,func,obj){\r
29482 var E=MochiKit.Signal.Event;\r
29483 return function(_57a){\r
29484 var e=new E(src,_57a);\r
29485 try{\r
29486 e.relatedTarget().nodeName;\r
29487 }\r
29488 catch(err){\r
29489 return;\r
29490 }\r
29491 e.stop();\r
29492 if(MochiKit.DOM.isChildNode(e.relatedTarget(),src)){\r
29493 return;\r
29494 }\r
29495 e.type=function(){\r
29496 return sig;\r
29497 };\r
29498 if(typeof (func)=="string"){\r
29499 return obj[func].apply(obj,[e]);\r
29500 }else{\r
29501 return func.apply(obj,[e]);\r
29502 }\r
29503 };\r
29504 },_getDestPair:function(_57c,_57d){\r
29505 var obj=null;\r
29506 var func=null;\r
29507 if(typeof (_57d)!="undefined"){\r
29508 obj=_57c;\r
29509 func=_57d;\r
29510 if(typeof (_57d)=="string"){\r
29511 if(typeof (_57c[_57d])!="function"){\r
29512 throw new Error("'funcOrStr' must be a function on 'objOrFunc'");\r
29513 }\r
29514 }else{\r
29515 if(typeof (_57d)!="function"){\r
29516 throw new Error("'funcOrStr' must be a function or string");\r
29517 }\r
29518 }\r
29519 }else{\r
29520 if(typeof (_57c)!="function"){\r
29521 throw new Error("'objOrFunc' must be a function if 'funcOrStr' is not given");\r
29522 }else{\r
29523 func=_57c;\r
29524 }\r
29525 }\r
29526 return [obj,func];\r
29527 },connect:function(src,sig,_582,_583){\r
29528 src=MochiKit.DOM.getElement(src);\r
29529 var self=MochiKit.Signal;\r
29530 if(typeof (sig)!="string"){\r
29531 throw new Error("'sig' must be a string");\r
29532 }\r
29533 var _585=self._getDestPair(_582,_583);\r
29534 var obj=_585[0];\r
29535 var func=_585[1];\r
29536 if(typeof (obj)=="undefined"||obj===null){\r
29537 obj=src;\r
29538 }\r
29539 var _588=!!(src.addEventListener||src.attachEvent);\r
29540 if(_588&&(sig==="onmouseenter"||sig==="onmouseleave")&&!self._browserAlreadyHasMouseEnterAndLeave()){\r
29541 var _589=self._mouseEnterListener(src,sig.substr(2),func,obj);\r
29542 if(sig==="onmouseenter"){\r
29543 sig="onmouseover";\r
29544 }else{\r
29545 sig="onmouseout";\r
29546 }\r
29547 }else{\r
29548 if(_588&&sig=="onmousewheel"&&self._browserLacksMouseWheelEvent()){\r
29549 var _589=self._listener(src,sig,func,obj,_588);\r
29550 sig="onDOMMouseScroll";\r
29551 }else{\r
29552 var _589=self._listener(src,sig,func,obj,_588);\r
29553 }\r
29554 }\r
29555 if(src.addEventListener){\r
29556 src.addEventListener(sig.substr(2),_589,false);\r
29557 }else{\r
29558 if(src.attachEvent){\r
29559 src.attachEvent(sig,_589);\r
29560 }\r
29561 }\r
29562 var _58a=new MochiKit.Signal.Ident({source:src,signal:sig,listener:_589,isDOM:_588,objOrFunc:_582,funcOrStr:_583,connected:true});\r
29563 self._observers.push(_58a);\r
29564 if(!_588&&typeof (src.__connect__)=="function"){\r
29565 var args=MochiKit.Base.extend([_58a],arguments,1);\r
29566 src.__connect__.apply(src,args);\r
29567 }\r
29568 return _58a;\r
29569 },_disconnect:function(_58c){\r
29570 if(!_58c.connected){\r
29571 return;\r
29572 }\r
29573 _58c.connected=false;\r
29574 var src=_58c.source;\r
29575 var sig=_58c.signal;\r
29576 var _58f=_58c.listener;\r
29577 if(!_58c.isDOM){\r
29578 if(typeof (src.__disconnect__)=="function"){\r
29579 src.__disconnect__(_58c,sig,_58c.objOrFunc,_58c.funcOrStr);\r
29580 }\r
29581 return;\r
29582 }\r
29583 if(src.removeEventListener){\r
29584 src.removeEventListener(sig.substr(2),_58f,false);\r
29585 }else{\r
29586 if(src.detachEvent){\r
29587 src.detachEvent(sig,_58f);\r
29588 }else{\r
29589 throw new Error("'src' must be a DOM element");\r
29590 }\r
29591 }\r
29592 },disconnect:function(_590){\r
29593 var self=MochiKit.Signal;\r
29594 var _592=self._observers;\r
29595 var m=MochiKit.Base;\r
29596 if(arguments.length>1){\r
29597 var src=MochiKit.DOM.getElement(arguments[0]);\r
29598 var sig=arguments[1];\r
29599 var obj=arguments[2];\r
29600 var func=arguments[3];\r
29601 for(var i=_592.length-1;i>=0;i--){\r
29602 var o=_592[i];\r
29603 if(o.source===src&&o.signal===sig&&o.objOrFunc===obj&&o.funcOrStr===func){\r
29604 self._disconnect(o);\r
29605 if(!self._lock){\r
29606 _592.splice(i,1);\r
29607 }else{\r
29608 self._dirty=true;\r
29609 }\r
29610 return true;\r
29611 }\r
29612 }\r
29613 }else{\r
29614 var idx=m.findIdentical(_592,_590);\r
29615 if(idx>=0){\r
29616 self._disconnect(_590);\r
29617 if(!self._lock){\r
29618 _592.splice(idx,1);\r
29619 }else{\r
29620 self._dirty=true;\r
29621 }\r
29622 return true;\r
29623 }\r
29624 }\r
29625 return false;\r
29626 },disconnectAllTo:function(_59b,_59c){\r
29627 var self=MochiKit.Signal;\r
29628 var _59e=self._observers;\r
29629 var _59f=self._disconnect;\r
29630 var _5a0=self._lock;\r
29631 var _5a1=self._dirty;\r
29632 if(typeof (_59c)==="undefined"){\r
29633 _59c=null;\r
29634 }\r
29635 for(var i=_59e.length-1;i>=0;i--){\r
29636 var _5a3=_59e[i];\r
29637 if(_5a3.objOrFunc===_59b&&(_59c===null||_5a3.funcOrStr===_59c)){\r
29638 _59f(_5a3);\r
29639 if(_5a0){\r
29640 _5a1=true;\r
29641 }else{\r
29642 _59e.splice(i,1);\r
29643 }\r
29644 }\r
29645 }\r
29646 self._dirty=_5a1;\r
29647 },disconnectAll:function(src,sig){\r
29648 src=MochiKit.DOM.getElement(src);\r
29649 var m=MochiKit.Base;\r
29650 var _5a7=m.flattenArguments(m.extend(null,arguments,1));\r
29651 var self=MochiKit.Signal;\r
29652 var _5a9=self._disconnect;\r
29653 var _5aa=self._observers;\r
29654 var i,_5ac;\r
29655 var _5ad=self._lock;\r
29656 var _5ae=self._dirty;\r
29657 if(_5a7.length===0){\r
29658 for(i=_5aa.length-1;i>=0;i--){\r
29659 _5ac=_5aa[i];\r
29660 if(_5ac.source===src){\r
29661 _5a9(_5ac);\r
29662 if(!_5ad){\r
29663 _5aa.splice(i,1);\r
29664 }else{\r
29665 _5ae=true;\r
29666 }\r
29667 }\r
29668 }\r
29669 }else{\r
29670 var sigs={};\r
29671 for(i=0;i<_5a7.length;i++){\r
29672 sigs[_5a7[i]]=true;\r
29673 }\r
29674 for(i=_5aa.length-1;i>=0;i--){\r
29675 _5ac=_5aa[i];\r
29676 if(_5ac.source===src&&_5ac.signal in sigs){\r
29677 _5a9(_5ac);\r
29678 if(!_5ad){\r
29679 _5aa.splice(i,1);\r
29680 }else{\r
29681 _5ae=true;\r
29682 }\r
29683 }\r
29684 }\r
29685 }\r
29686 self._dirty=_5ae;\r
29687 },signal:function(src,sig){\r
29688 var self=MochiKit.Signal;\r
29689 var _5b3=self._observers;\r
29690 src=MochiKit.DOM.getElement(src);\r
29691 var args=MochiKit.Base.extend(null,arguments,2);\r
29692 var _5b5=[];\r
29693 self._lock=true;\r
29694 for(var i=0;i<_5b3.length;i++){\r
29695 var _5b7=_5b3[i];\r
29696 if(_5b7.source===src&&_5b7.signal===sig&&_5b7.connected){\r
29697 try{\r
29698 _5b7.listener.apply(src,args);\r
29699 }\r
29700 catch(e){\r
29701 _5b5.push(e);\r
29702 }\r
29703 }\r
29704 }\r
29705 self._lock=false;\r
29706 if(self._dirty){\r
29707 self._dirty=false;\r
29708 for(var i=_5b3.length-1;i>=0;i--){\r
29709 if(!_5b3[i].connected){\r
29710 _5b3.splice(i,1);\r
29711 }\r
29712 }\r
29713 }\r
29714 if(_5b5.length==1){\r
29715 throw _5b5[0];\r
29716 }else{\r
29717 if(_5b5.length>1){\r
29718 var e=new Error("Multiple errors thrown in handling 'sig', see errors property");\r
29719 e.errors=_5b5;\r
29720 throw e;\r
29721 }\r
29722 }\r
29723 }});\r
29724 MochiKit.Signal.EXPORT_OK=[];\r
29725 MochiKit.Signal.EXPORT=["connect","disconnect","signal","disconnectAll","disconnectAllTo"];\r
29726 MochiKit.Signal.__new__=function(win){\r
29727 var m=MochiKit.Base;\r
29728 this._document=document;\r
29729 this._window=win;\r
29730 this._lock=false;\r
29731 this._dirty=false;\r
29732 try{\r
29733 this.connect(window,"onunload",this._unloadCache);\r
29734 }\r
29735 catch(e){\r
29736 }\r
29737 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
29738 m.nameFunctions(this);\r
29739 };\r
29740 MochiKit.Signal.__new__(this);\r
29741 if(MochiKit.__export__){\r
29742 connect=MochiKit.Signal.connect;\r
29743 disconnect=MochiKit.Signal.disconnect;\r
29744 disconnectAll=MochiKit.Signal.disconnectAll;\r
29745 signal=MochiKit.Signal.signal;\r
29746 }\r
29747 MochiKit.Base._exportSymbols(this,MochiKit.Signal);\r
29748 MochiKit.Base._deps("Position",["Base","DOM","Style"]);\r
29749 MochiKit.Position.NAME="MochiKit.Position";\r
29750 MochiKit.Position.VERSION="1.4.2";\r
29751 MochiKit.Position.__repr__=function(){\r
29752 return "["+this.NAME+" "+this.VERSION+"]";\r
29753 };\r
29754 MochiKit.Position.toString=function(){\r
29755 return this.__repr__();\r
29756 };\r
29757 MochiKit.Position.EXPORT_OK=[];\r
29758 MochiKit.Position.EXPORT=[];\r
29759 MochiKit.Base.update(MochiKit.Position,{includeScrollOffsets:false,prepare:function(){\r
29760 var _5bb=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;\r
29761 var _5bc=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;\r
29762 this.windowOffset=new MochiKit.Style.Coordinates(_5bb,_5bc);\r
29763 },cumulativeOffset:function(_5bd){\r
29764 var _5be=0;\r
29765 var _5bf=0;\r
29766 do{\r
29767 _5be+=_5bd.offsetTop||0;\r
29768 _5bf+=_5bd.offsetLeft||0;\r
29769 _5bd=_5bd.offsetParent;\r
29770 }while(_5bd);\r
29771 return new MochiKit.Style.Coordinates(_5bf,_5be);\r
29772 },realOffset:function(_5c0){\r
29773 var _5c1=0;\r
29774 var _5c2=0;\r
29775 do{\r
29776 _5c1+=_5c0.scrollTop||0;\r
29777 _5c2+=_5c0.scrollLeft||0;\r
29778 _5c0=_5c0.parentNode;\r
29779 }while(_5c0);\r
29780 return new MochiKit.Style.Coordinates(_5c2,_5c1);\r
29781 },within:function(_5c3,x,y){\r
29782 if(this.includeScrollOffsets){\r
29783 return this.withinIncludingScrolloffsets(_5c3,x,y);\r
29784 }\r
29785 this.xcomp=x;\r
29786 this.ycomp=y;\r
29787 this.offset=this.cumulativeOffset(_5c3);\r
29788 if(_5c3.style.position=="fixed"){\r
29789 this.offset.x+=this.windowOffset.x;\r
29790 this.offset.y+=this.windowOffset.y;\r
29791 }\r
29792 return (y>=this.offset.y&&y<this.offset.y+_5c3.offsetHeight&&x>=this.offset.x&&x<this.offset.x+_5c3.offsetWidth);\r
29793 },withinIncludingScrolloffsets:function(_5c6,x,y){\r
29794 var _5c9=this.realOffset(_5c6);\r
29795 this.xcomp=x+_5c9.x-this.windowOffset.x;\r
29796 this.ycomp=y+_5c9.y-this.windowOffset.y;\r
29797 this.offset=this.cumulativeOffset(_5c6);\r
29798 return (this.ycomp>=this.offset.y&&this.ycomp<this.offset.y+_5c6.offsetHeight&&this.xcomp>=this.offset.x&&this.xcomp<this.offset.x+_5c6.offsetWidth);\r
29799 },overlap:function(mode,_5cb){\r
29800 if(!mode){\r
29801 return 0;\r
29802 }\r
29803 if(mode=="vertical"){\r
29804 return ((this.offset.y+_5cb.offsetHeight)-this.ycomp)/_5cb.offsetHeight;\r
29805 }\r
29806 if(mode=="horizontal"){\r
29807 return ((this.offset.x+_5cb.offsetWidth)-this.xcomp)/_5cb.offsetWidth;\r
29808 }\r
29809 },absolutize:function(_5cc){\r
29810 _5cc=MochiKit.DOM.getElement(_5cc);\r
29811 if(_5cc.style.position=="absolute"){\r
29812 return;\r
29813 }\r
29814 MochiKit.Position.prepare();\r
29815 var _5cd=MochiKit.Position.positionedOffset(_5cc);\r
29816 var _5ce=_5cc.clientWidth;\r
29817 var _5cf=_5cc.clientHeight;\r
29818 var _5d0={"position":_5cc.style.position,"left":_5cd.x-parseFloat(_5cc.style.left||0),"top":_5cd.y-parseFloat(_5cc.style.top||0),"width":_5cc.style.width,"height":_5cc.style.height};\r
29819 _5cc.style.position="absolute";\r
29820 _5cc.style.top=_5cd.y+"px";\r
29821 _5cc.style.left=_5cd.x+"px";\r
29822 _5cc.style.width=_5ce+"px";\r
29823 _5cc.style.height=_5cf+"px";\r
29824 return _5d0;\r
29825 },positionedOffset:function(_5d1){\r
29826 var _5d2=0,_5d3=0;\r
29827 do{\r
29828 _5d2+=_5d1.offsetTop||0;\r
29829 _5d3+=_5d1.offsetLeft||0;\r
29830 _5d1=_5d1.offsetParent;\r
29831 if(_5d1){\r
29832 p=MochiKit.Style.getStyle(_5d1,"position");\r
29833 if(p=="relative"||p=="absolute"){\r
29834 break;\r
29835 }\r
29836 }\r
29837 }while(_5d1);\r
29838 return new MochiKit.Style.Coordinates(_5d3,_5d2);\r
29839 },relativize:function(_5d4,_5d5){\r
29840 _5d4=MochiKit.DOM.getElement(_5d4);\r
29841 if(_5d4.style.position=="relative"){\r
29842 return;\r
29843 }\r
29844 MochiKit.Position.prepare();\r
29845 var top=parseFloat(_5d4.style.top||0)-(_5d5["top"]||0);\r
29846 var left=parseFloat(_5d4.style.left||0)-(_5d5["left"]||0);\r
29847 _5d4.style.position=_5d5["position"];\r
29848 _5d4.style.top=top+"px";\r
29849 _5d4.style.left=left+"px";\r
29850 _5d4.style.width=_5d5["width"];\r
29851 _5d4.style.height=_5d5["height"];\r
29852 },clone:function(_5d8,_5d9){\r
29853 _5d8=MochiKit.DOM.getElement(_5d8);\r
29854 _5d9=MochiKit.DOM.getElement(_5d9);\r
29855 _5d9.style.position="absolute";\r
29856 var _5da=this.cumulativeOffset(_5d8);\r
29857 _5d9.style.top=_5da.y+"px";\r
29858 _5d9.style.left=_5da.x+"px";\r
29859 _5d9.style.width=_5d8.offsetWidth+"px";\r
29860 _5d9.style.height=_5d8.offsetHeight+"px";\r
29861 },page:function(_5db){\r
29862 var _5dc=0;\r
29863 var _5dd=0;\r
29864 var _5de=_5db;\r
29865 do{\r
29866 _5dc+=_5de.offsetTop||0;\r
29867 _5dd+=_5de.offsetLeft||0;\r
29868 if(_5de.offsetParent==document.body&&MochiKit.Style.getStyle(_5de,"position")=="absolute"){\r
29869 break;\r
29870 }\r
29871 }while(_5de=_5de.offsetParent);\r
29872 _5de=_5db;\r
29873 do{\r
29874 _5dc-=_5de.scrollTop||0;\r
29875 _5dd-=_5de.scrollLeft||0;\r
29876 }while(_5de=_5de.parentNode);\r
29877 return new MochiKit.Style.Coordinates(_5dd,_5dc);\r
29878 }});\r
29879 MochiKit.Position.__new__=function(win){\r
29880 var m=MochiKit.Base;\r
29881 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
29882 m.nameFunctions(this);\r
29883 };\r
29884 MochiKit.Position.__new__(this);\r
29885 MochiKit.Base._exportSymbols(this,MochiKit.Position);\r
29886 MochiKit.Base._deps("Visual",["Base","DOM","Style","Color","Position"]);\r
29887 MochiKit.Visual.NAME="MochiKit.Visual";\r
29888 MochiKit.Visual.VERSION="1.4.2";\r
29889 MochiKit.Visual.__repr__=function(){\r
29890 return "["+this.NAME+" "+this.VERSION+"]";\r
29891 };\r
29892 MochiKit.Visual.toString=function(){\r
29893 return this.__repr__();\r
29894 };\r
29895 MochiKit.Visual._RoundCorners=function(e,_5e2){\r
29896 e=MochiKit.DOM.getElement(e);\r
29897 this._setOptions(_5e2);\r
29898 if(this.options.__unstable__wrapElement){\r
29899 e=this._doWrap(e);\r
29900 }\r
29901 var _5e3=this.options.color;\r
29902 var C=MochiKit.Color.Color;\r
29903 if(this.options.color==="fromElement"){\r
29904 _5e3=C.fromBackground(e);\r
29905 }else{\r
29906 if(!(_5e3 instanceof C)){\r
29907 _5e3=C.fromString(_5e3);\r
29908 }\r
29909 }\r
29910 this.isTransparent=(_5e3.asRGB().a<=0);\r
29911 var _5e5=this.options.bgColor;\r
29912 if(this.options.bgColor==="fromParent"){\r
29913 _5e5=C.fromBackground(e.offsetParent);\r
29914 }else{\r
29915 if(!(_5e5 instanceof C)){\r
29916 _5e5=C.fromString(_5e5);\r
29917 }\r
29918 }\r
29919 this._roundCornersImpl(e,_5e3,_5e5);\r
29920 };\r
29921 MochiKit.Visual._RoundCorners.prototype={_doWrap:function(e){\r
29922 var _5e7=e.parentNode;\r
29923 var doc=MochiKit.DOM.currentDocument();\r
29924 if(typeof (doc.defaultView)==="undefined"||doc.defaultView===null){\r
29925 return e;\r
29926 }\r
29927 var _5e9=doc.defaultView.getComputedStyle(e,null);\r
29928 if(typeof (_5e9)==="undefined"||_5e9===null){\r
29929 return e;\r
29930 }\r
29931 var _5ea=MochiKit.DOM.DIV({"style":{display:"block",marginTop:_5e9.getPropertyValue("padding-top"),marginRight:_5e9.getPropertyValue("padding-right"),marginBottom:_5e9.getPropertyValue("padding-bottom"),marginLeft:_5e9.getPropertyValue("padding-left"),padding:"0px"}});\r
29932 _5ea.innerHTML=e.innerHTML;\r
29933 e.innerHTML="";\r
29934 e.appendChild(_5ea);\r
29935 return e;\r
29936 },_roundCornersImpl:function(e,_5ec,_5ed){\r
29937 \r
29938 if(this.options.border){\r
29939 this._renderBorder(e,_5ed);\r
29940 }\r
29941 if(this._isTopRounded()){\r
29942 this._roundTopCorners(e,_5ec,_5ed);\r
29943 }\r
29944 if(this._isBottomRounded()){\r
29945 this._roundBottomCorners(e,_5ec,_5ed);\r
29946 }\r
29947 },_renderBorder:function(el,_5ef){\r
29948 var _5f0="1px solid "+this._borderColor(_5ef);\r
29949 var _5f1="border-left: "+_5f0;\r
29950 var _5f2="border-right: "+_5f0;\r
29951 var _5f3="style='"+_5f1+";"+_5f2+"'";\r
29952 el.innerHTML="<div "+_5f3+">"+el.innerHTML+"</div>";\r
29953 },_roundTopCorners:function(el,_5f5,_5f6){\r
29954 var _5f7=this._createCorner(_5f6);\r
29955 for(var i=0;i<this.options.numSlices;i++){\r
29956 _5f7.appendChild(this._createCornerSlice(_5f5,_5f6,i,"top"));\r
29957 }\r
29958 el.style.paddingTop=0;\r
29959 el.insertBefore(_5f7,el.firstChild);\r
29960 },_roundBottomCorners:function(el,_5fa,_5fb){\r
29961 var _5fc=this._createCorner(_5fb);\r
29962 for(var i=(this.options.numSlices-1);i>=0;i--){\r
29963 _5fc.appendChild(this._createCornerSlice(_5fa,_5fb,i,"bottom"));\r
29964 }\r
29965 el.style.paddingBottom=0;\r
29966 el.appendChild(_5fc);\r
29967 },_createCorner:function(_5fe){\r
29968 var dom=MochiKit.DOM;\r
29969 return dom.DIV({style:{backgroundColor:_5fe.toString()}});\r
29970 },_createCornerSlice:function(_600,_601,n,_603){\r
29971 var _604=MochiKit.DOM.SPAN();\r
29972 var _605=_604.style;\r
29973 _605.backgroundColor=_600.toString();\r
29974 _605.display="block";\r
29975 _605.height="1px";\r
29976 _605.overflow="hidden";\r
29977 _605.fontSize="1px";\r
29978 var _606=this._borderColor(_600,_601);\r
29979 if(this.options.border&&n===0){\r
29980 _605.borderTopStyle="solid";\r
29981 _605.borderTopWidth="1px";\r
29982 _605.borderLeftWidth="0px";\r
29983 _605.borderRightWidth="0px";\r
29984 _605.borderBottomWidth="0px";\r
29985 _605.height="0px";\r
29986 _605.borderColor=_606.toString();\r
29987 }else{\r
29988 if(_606){\r
29989 _605.borderColor=_606.toString();\r
29990 _605.borderStyle="solid";\r
29991 _605.borderWidth="0px 1px";\r
29992 }\r
29993 }\r
29994 if(!this.options.compact&&(n==(this.options.numSlices-1))){\r
29995 _605.height="2px";\r
29996 }\r
29997 this._setMargin(_604,n,_603);\r
29998 this._setBorder(_604,n,_603);\r
29999 return _604;\r
30000 },_setOptions:function(_607){\r
30001 this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false,__unstable__wrapElement:false};\r
30002 MochiKit.Base.update(this.options,_607);\r
30003 this.options.numSlices=(this.options.compact?2:4);\r
30004 },_whichSideTop:function(){\r
30005 var _608=this.options.corners;\r
30006 if(this._hasString(_608,"all","top")){\r
30007 return "";\r
30008 }\r
30009 var _609=(_608.indexOf("tl")!=-1);\r
30010 var _60a=(_608.indexOf("tr")!=-1);\r
30011 if(_609&&_60a){\r
30012 return "";\r
30013 }\r
30014 if(_609){\r
30015 return "left";\r
30016 }\r
30017 if(_60a){\r
30018 return "right";\r
30019 }\r
30020 return "";\r
30021 },_whichSideBottom:function(){\r
30022 var _60b=this.options.corners;\r
30023 if(this._hasString(_60b,"all","bottom")){\r
30024 return "";\r
30025 }\r
30026 var _60c=(_60b.indexOf("bl")!=-1);\r
30027 var _60d=(_60b.indexOf("br")!=-1);\r
30028 if(_60c&&_60d){\r
30029 return "";\r
30030 }\r
30031 if(_60c){\r
30032 return "left";\r
30033 }\r
30034 if(_60d){\r
30035 return "right";\r
30036 }\r
30037 return "";\r
30038 },_borderColor:function(_60e,_60f){\r
30039 if(_60e=="transparent"){\r
30040 return _60f;\r
30041 }else{\r
30042 if(this.options.border){\r
30043 return this.options.border;\r
30044 }else{\r
30045 if(this.options.blend){\r
30046 return _60f.blendedColor(_60e);\r
30047 }\r
30048 }\r
30049 }\r
30050 return "";\r
30051 },_setMargin:function(el,n,_612){\r
30052 var _613=this._marginSize(n)+"px";\r
30053 var _614=(_612=="top"?this._whichSideTop():this._whichSideBottom());\r
30054 var _615=el.style;\r
30055 if(_614=="left"){\r
30056 _615.marginLeft=_613;\r
30057 _615.marginRight="0px";\r
30058 }else{\r
30059 if(_614=="right"){\r
30060 _615.marginRight=_613;\r
30061 _615.marginLeft="0px";\r
30062 }else{\r
30063 _615.marginLeft=_613;\r
30064 _615.marginRight=_613;\r
30065 }\r
30066 }\r
30067 },_setBorder:function(el,n,_618){\r
30068 var _619=this._borderSize(n)+"px";\r
30069 var _61a=(_618=="top"?this._whichSideTop():this._whichSideBottom());\r
30070 var _61b=el.style;\r
30071 if(_61a=="left"){\r
30072 _61b.borderLeftWidth=_619;\r
30073 _61b.borderRightWidth="0px";\r
30074 }else{\r
30075 if(_61a=="right"){\r
30076 _61b.borderRightWidth=_619;\r
30077 _61b.borderLeftWidth="0px";\r
30078 }else{\r
30079 _61b.borderLeftWidth=_619;\r
30080 _61b.borderRightWidth=_619;\r
30081 }\r
30082 }\r
30083 },_marginSize:function(n){\r
30084 if(this.isTransparent){\r
30085 return 0;\r
30086 }\r
30087 var o=this.options;\r
30088 if(o.compact&&o.blend){\r
30089 var _61e=[1,0];\r
30090 return _61e[n];\r
30091 }else{\r
30092 if(o.compact){\r
30093 var _61f=[2,1];\r
30094 return _61f[n];\r
30095 }else{\r
30096 if(o.blend){\r
30097 var _620=[3,2,1,0];\r
30098 return _620[n];\r
30099 }else{\r
30100 var _621=[5,3,2,1];\r
30101 return _621[n];\r
30102 }\r
30103 }\r
30104 }\r
30105 },_borderSize:function(n){\r
30106 var o=this.options;\r
30107 var _624;\r
30108 if(o.compact&&(o.blend||this.isTransparent)){\r
30109 return 1;\r
30110 }else{\r
30111 if(o.compact){\r
30112 _624=[1,0];\r
30113 }else{\r
30114 if(o.blend){\r
30115 _624=[2,1,1,1];\r
30116 }else{\r
30117 if(o.border){\r
30118 _624=[0,2,0,0];\r
30119 }else{\r
30120 if(this.isTransparent){\r
30121 _624=[5,3,2,1];\r
30122 }else{\r
30123 return 0;\r
30124 }\r
30125 }\r
30126 }\r
30127 }\r
30128 }\r
30129 return _624[n];\r
30130 },_hasString:function(str){\r
30131 for(var i=1;i<arguments.length;i++){\r
30132 if(str.indexOf(arguments[i])!=-1){\r
30133 return true;\r
30134 }\r
30135 }\r
30136 return false;\r
30137 },_isTopRounded:function(){\r
30138 return this._hasString(this.options.corners,"all","top","tl","tr");\r
30139 },_isBottomRounded:function(){\r
30140 return this._hasString(this.options.corners,"all","bottom","bl","br");\r
30141 },_hasSingleTextChild:function(el){\r
30142 return (el.childNodes.length==1&&el.childNodes[0].nodeType==3);\r
30143 }};\r
30144 MochiKit.Visual.roundElement=function(e,_629){\r
30145 new MochiKit.Visual._RoundCorners(e,_629);\r
30146 };\r
30147 MochiKit.Visual.roundClass=function(_62a,_62b,_62c){\r
30148 var _62d=MochiKit.DOM.getElementsByTagAndClassName(_62a,_62b);\r
30149 for(var i=0;i<_62d.length;i++){\r
30150 MochiKit.Visual.roundElement(_62d[i],_62c);\r
30151 }\r
30152 };\r
30153 MochiKit.Visual.tagifyText=function(_62f,_630){\r
30154 _630=_630||"position:relative";\r
30155 if(/MSIE/.test(navigator.userAgent)){\r
30156 _630+=";zoom:1";\r
30157 }\r
30158 _62f=MochiKit.DOM.getElement(_62f);\r
30159 var ma=MochiKit.Base.map;\r
30160 ma(function(_632){\r
30161 if(_632.nodeType==3){\r
30162 ma(function(_633){\r
30163 _62f.insertBefore(MochiKit.DOM.SPAN({style:_630},_633==" "?String.fromCharCode(160):_633),_632);\r
30164 },_632.nodeValue.split(""));\r
30165 MochiKit.DOM.removeElement(_632);\r
30166 }\r
30167 },_62f.childNodes);\r
30168 };\r
30169 MochiKit.Visual.forceRerendering=function(_634){\r
30170 try{\r
30171 _634=MochiKit.DOM.getElement(_634);\r
30172 var n=document.createTextNode(" ");\r
30173 _634.appendChild(n);\r
30174 _634.removeChild(n);\r
30175 }\r
30176 catch(e){\r
30177 }\r
30178 };\r
30179 MochiKit.Visual.multiple=function(_636,_637,_638){\r
30180 _638=MochiKit.Base.update({speed:0.1,delay:0},_638);\r
30181 var _639=_638.delay;\r
30182 var _63a=0;\r
30183 MochiKit.Base.map(function(_63b){\r
30184 _638.delay=_63a*_638.speed+_639;\r
30185 new _637(_63b,_638);\r
30186 _63a+=1;\r
30187 },_636);\r
30188 };\r
30189 MochiKit.Visual.PAIRS={"slide":["slideDown","slideUp"],"blind":["blindDown","blindUp"],"appear":["appear","fade"],"size":["grow","shrink"]};\r
30190 MochiKit.Visual.toggle=function(_63c,_63d,_63e){\r
30191 _63c=MochiKit.DOM.getElement(_63c);\r
30192 _63d=(_63d||"appear").toLowerCase();\r
30193 _63e=MochiKit.Base.update({queue:{position:"end",scope:(_63c.id||"global"),limit:1}},_63e);\r
30194 var v=MochiKit.Visual;\r
30195 v[MochiKit.Style.getStyle(_63c,"display")!="none"?v.PAIRS[_63d][1]:v.PAIRS[_63d][0]](_63c,_63e);\r
30196 };\r
30197 MochiKit.Visual.Transitions={};\r
30198 MochiKit.Visual.Transitions.linear=function(pos){\r
30199 return pos;\r
30200 };\r
30201 MochiKit.Visual.Transitions.sinoidal=function(pos){\r
30202 return 0.5-Math.cos(pos*Math.PI)/2;\r
30203 };\r
30204 MochiKit.Visual.Transitions.reverse=function(pos){\r
30205 return 1-pos;\r
30206 };\r
30207 MochiKit.Visual.Transitions.flicker=function(pos){\r
30208 return 0.25-Math.cos(pos*Math.PI)/4+Math.random()/2;\r
30209 };\r
30210 MochiKit.Visual.Transitions.wobble=function(pos){\r
30211 return 0.5-Math.cos(9*pos*Math.PI)/2;\r
30212 };\r
30213 MochiKit.Visual.Transitions.pulse=function(pos,_646){\r
30214 if(_646){\r
30215 pos*=2*_646;\r
30216 }else{\r
30217 pos*=10;\r
30218 }\r
30219 var _647=pos-Math.floor(pos);\r
30220 return (Math.floor(pos)%2==0)?_647:1-_647;\r
30221 };\r
30222 MochiKit.Visual.Transitions.parabolic=function(pos){\r
30223 return pos*pos;\r
30224 };\r
30225 MochiKit.Visual.Transitions.none=function(pos){\r
30226 return 0;\r
30227 };\r
30228 MochiKit.Visual.Transitions.full=function(pos){\r
30229 return 1;\r
30230 };\r
30231 MochiKit.Visual.ScopedQueue=function(){\r
30232 var cls=arguments.callee;\r
30233 if(!(this instanceof cls)){\r
30234 return new cls();\r
30235 }\r
30236 this.__init__();\r
30237 };\r
30238 MochiKit.Base.update(MochiKit.Visual.ScopedQueue.prototype,{__init__:function(){\r
30239 this.effects=[];\r
30240 this.interval=null;\r
30241 },add:function(_64c){\r
30242 var _64d=new Date().getTime();\r
30243 var _64e=(typeof (_64c.options.queue)=="string")?_64c.options.queue:_64c.options.queue.position;\r
30244 var ma=MochiKit.Base.map;\r
30245 switch(_64e){\r
30246 case "front":\r
30247 ma(function(e){\r
30248 if(e.state=="idle"){\r
30249 e.startOn+=_64c.finishOn;\r
30250 e.finishOn+=_64c.finishOn;\r
30251 }\r
30252 },this.effects);\r
30253 break;\r
30254 case "end":\r
30255 var _651;\r
30256 ma(function(e){\r
30257 var i=e.finishOn;\r
30258 if(i>=(_651||i)){\r
30259 _651=i;\r
30260 }\r
30261 },this.effects);\r
30262 _64d=_651||_64d;\r
30263 break;\r
30264 case "break":\r
30265 ma(function(e){\r
30266 e.finalize();\r
30267 },this.effects);\r
30268 break;\r
30269 }\r
30270 _64c.startOn+=_64d;\r
30271 _64c.finishOn+=_64d;\r
30272 if(!_64c.options.queue.limit||this.effects.length<_64c.options.queue.limit){\r
30273 this.effects.push(_64c);\r
30274 }\r
30275 if(!this.interval){\r
30276 this.interval=this.startLoop(MochiKit.Base.bind(this.loop,this),40);\r
30277 }\r
30278 },startLoop:function(func,_656){\r
30279 return setInterval(func,_656);\r
30280 },remove:function(_657){\r
30281 this.effects=MochiKit.Base.filter(function(e){\r
30282 return e!=_657;\r
30283 },this.effects);\r
30284 if(!this.effects.length){\r
30285 this.stopLoop(this.interval);\r
30286 this.interval=null;\r
30287 }\r
30288 },stopLoop:function(_659){\r
30289 clearInterval(_659);\r
30290 },loop:function(){\r
30291 var _65a=new Date().getTime();\r
30292 MochiKit.Base.map(function(_65b){\r
30293 _65b.loop(_65a);\r
30294 },this.effects);\r
30295 }});\r
30296 MochiKit.Visual.Queues={instances:{},get:function(_65c){\r
30297 if(typeof (_65c)!="string"){\r
30298 return _65c;\r
30299 }\r
30300 if(!this.instances[_65c]){\r
30301 this.instances[_65c]=new MochiKit.Visual.ScopedQueue();\r
30302 }\r
30303 return this.instances[_65c];\r
30304 }};\r
30305 MochiKit.Visual.Queue=MochiKit.Visual.Queues.get("global");\r
30306 MochiKit.Visual.DefaultOptions={transition:MochiKit.Visual.Transitions.sinoidal,duration:1,fps:25,sync:false,from:0,to:1,delay:0,queue:"parallel"};\r
30307 MochiKit.Visual.Base=function(){\r
30308 };\r
30309 MochiKit.Visual.Base.prototype={__class__:MochiKit.Visual.Base,start:function(_65d){\r
30310 var v=MochiKit.Visual;\r
30311 this.options=MochiKit.Base.setdefault(_65d,v.DefaultOptions);\r
30312 this.currentFrame=0;\r
30313 this.state="idle";\r
30314 this.startOn=this.options.delay*1000;\r
30315 this.finishOn=this.startOn+(this.options.duration*1000);\r
30316 this.event("beforeStart");\r
30317 if(!this.options.sync){\r
30318 v.Queues.get(typeof (this.options.queue)=="string"?"global":this.options.queue.scope).add(this);\r
30319 }\r
30320 },loop:function(_65f){\r
30321 if(_65f>=this.startOn){\r
30322 if(_65f>=this.finishOn){\r
30323 return this.finalize();\r
30324 }\r
30325 var pos=(_65f-this.startOn)/(this.finishOn-this.startOn);\r
30326 var _661=Math.round(pos*this.options.fps*this.options.duration);\r
30327 if(_661>this.currentFrame){\r
30328 this.render(pos);\r
30329 this.currentFrame=_661;\r
30330 }\r
30331 }\r
30332 },render:function(pos){\r
30333 if(this.state=="idle"){\r
30334 this.state="running";\r
30335 this.event("beforeSetup");\r
30336 this.setup();\r
30337 this.event("afterSetup");\r
30338 }\r
30339 if(this.state=="running"){\r
30340 if(this.options.transition){\r
30341 pos=this.options.transition(pos);\r
30342 }\r
30343 pos*=(this.options.to-this.options.from);\r
30344 pos+=this.options.from;\r
30345 this.event("beforeUpdate");\r
30346 this.update(pos);\r
30347 this.event("afterUpdate");\r
30348 }\r
30349 },cancel:function(){\r
30350 if(!this.options.sync){\r
30351 MochiKit.Visual.Queues.get(typeof (this.options.queue)=="string"?"global":this.options.queue.scope).remove(this);\r
30352 }\r
30353 this.state="finished";\r
30354 },finalize:function(){\r
30355 this.render(1);\r
30356 this.cancel();\r
30357 this.event("beforeFinish");\r
30358 this.finish();\r
30359 this.event("afterFinish");\r
30360 },setup:function(){\r
30361 },finish:function(){\r
30362 },update:function(_663){\r
30363 },event:function(_664){\r
30364 if(this.options[_664+"Internal"]){\r
30365 this.options[_664+"Internal"](this);\r
30366 }\r
30367 if(this.options[_664]){\r
30368 this.options[_664](this);\r
30369 }\r
30370 },repr:function(){\r
30371 return "["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";\r
30372 }};\r
30373 MochiKit.Visual.Parallel=function(_665,_666){\r
30374 var cls=arguments.callee;\r
30375 if(!(this instanceof cls)){\r
30376 return new cls(_665,_666);\r
30377 }\r
30378 this.__init__(_665,_666);\r
30379 };\r
30380 MochiKit.Visual.Parallel.prototype=new MochiKit.Visual.Base();\r
30381 MochiKit.Base.update(MochiKit.Visual.Parallel.prototype,{__class__:MochiKit.Visual.Parallel,__init__:function(_668,_669){\r
30382 this.effects=_668||[];\r
30383 this.start(_669);\r
30384 },update:function(_66a){\r
30385 MochiKit.Base.map(function(_66b){\r
30386 _66b.render(_66a);\r
30387 },this.effects);\r
30388 },finish:function(){\r
30389 MochiKit.Base.map(function(_66c){\r
30390 _66c.finalize();\r
30391 },this.effects);\r
30392 }});\r
30393 MochiKit.Visual.Sequence=function(_66d,_66e){\r
30394 var cls=arguments.callee;\r
30395 if(!(this instanceof cls)){\r
30396 return new cls(_66d,_66e);\r
30397 }\r
30398 this.__init__(_66d,_66e);\r
30399 };\r
30400 MochiKit.Visual.Sequence.prototype=new MochiKit.Visual.Base();\r
30401 MochiKit.Base.update(MochiKit.Visual.Sequence.prototype,{__class__:MochiKit.Visual.Sequence,__init__:function(_670,_671){\r
30402 var defs={transition:MochiKit.Visual.Transitions.linear,duration:0};\r
30403 this.effects=_670||[];\r
30404 MochiKit.Base.map(function(_673){\r
30405 defs.duration+=_673.options.duration;\r
30406 },this.effects);\r
30407 MochiKit.Base.setdefault(_671,defs);\r
30408 this.start(_671);\r
30409 },update:function(_674){\r
30410 var time=_674*this.options.duration;\r
30411 for(var i=0;i<this.effects.length;i++){\r
30412 var _677=this.effects[i];\r
30413 if(time<=_677.options.duration){\r
30414 _677.render(time/_677.options.duration);\r
30415 break;\r
30416 }else{\r
30417 time-=_677.options.duration;\r
30418 }\r
30419 }\r
30420 },finish:function(){\r
30421 MochiKit.Base.map(function(_678){\r
30422 _678.finalize();\r
30423 },this.effects);\r
30424 }});\r
30425 MochiKit.Visual.Opacity=function(_679,_67a){\r
30426 var cls=arguments.callee;\r
30427 if(!(this instanceof cls)){\r
30428 return new cls(_679,_67a);\r
30429 }\r
30430 this.__init__(_679,_67a);\r
30431 };\r
30432 MochiKit.Visual.Opacity.prototype=new MochiKit.Visual.Base();\r
30433 MochiKit.Base.update(MochiKit.Visual.Opacity.prototype,{__class__:MochiKit.Visual.Opacity,__init__:function(_67c,_67d){\r
30434 var b=MochiKit.Base;\r
30435 var s=MochiKit.Style;\r
30436 this.element=MochiKit.DOM.getElement(_67c);\r
30437 if(this.element.currentStyle&&(!this.element.currentStyle.hasLayout)){\r
30438 s.setStyle(this.element,{zoom:1});\r
30439 }\r
30440 _67d=b.update({from:s.getStyle(this.element,"opacity")||0,to:1},_67d);\r
30441 this.start(_67d);\r
30442 },update:function(_680){\r
30443 MochiKit.Style.setStyle(this.element,{"opacity":_680});\r
30444 }});\r
30445 MochiKit.Visual.Move=function(_681,_682){\r
30446 var cls=arguments.callee;\r
30447 if(!(this instanceof cls)){\r
30448 return new cls(_681,_682);\r
30449 }\r
30450 this.__init__(_681,_682);\r
30451 };\r
30452 MochiKit.Visual.Move.prototype=new MochiKit.Visual.Base();\r
30453 MochiKit.Base.update(MochiKit.Visual.Move.prototype,{__class__:MochiKit.Visual.Move,__init__:function(_684,_685){\r
30454 this.element=MochiKit.DOM.getElement(_684);\r
30455 _685=MochiKit.Base.update({x:0,y:0,mode:"relative"},_685);\r
30456 this.start(_685);\r
30457 },setup:function(){\r
30458 MochiKit.Style.makePositioned(this.element);\r
30459 var s=this.element.style;\r
30460 var _687=s.visibility;\r
30461 var _688=s.display;\r
30462 if(_688=="none"){\r
30463 s.visibility="hidden";\r
30464 s.display="";\r
30465 }\r
30466 this.originalLeft=parseFloat(MochiKit.Style.getStyle(this.element,"left")||"0");\r
30467 this.originalTop=parseFloat(MochiKit.Style.getStyle(this.element,"top")||"0");\r
30468 if(this.options.mode=="absolute"){\r
30469 this.options.x-=this.originalLeft;\r
30470 this.options.y-=this.originalTop;\r
30471 }\r
30472 if(_688=="none"){\r
30473 s.visibility=_687;\r
30474 s.display=_688;\r
30475 }\r
30476 },update:function(_689){\r
30477 MochiKit.Style.setStyle(this.element,{left:Math.round(this.options.x*_689+this.originalLeft)+"px",top:Math.round(this.options.y*_689+this.originalTop)+"px"});\r
30478 }});\r
30479 MochiKit.Visual.Scale=function(_68a,_68b,_68c){\r
30480 var cls=arguments.callee;\r
30481 if(!(this instanceof cls)){\r
30482 return new cls(_68a,_68b,_68c);\r
30483 }\r
30484 this.__init__(_68a,_68b,_68c);\r
30485 };\r
30486 MochiKit.Visual.Scale.prototype=new MochiKit.Visual.Base();\r
30487 MochiKit.Base.update(MochiKit.Visual.Scale.prototype,{__class__:MochiKit.Visual.Scale,__init__:function(_68e,_68f,_690){\r
30488 this.element=MochiKit.DOM.getElement(_68e);\r
30489 _690=MochiKit.Base.update({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_68f},_690);\r
30490 this.start(_690);\r
30491 },setup:function(){\r
30492 this.restoreAfterFinish=this.options.restoreAfterFinish||false;\r
30493 this.elementPositioning=MochiKit.Style.getStyle(this.element,"position");\r
30494 var ma=MochiKit.Base.map;\r
30495 var b=MochiKit.Base.bind;\r
30496 this.originalStyle={};\r
30497 ma(b(function(k){\r
30498 this.originalStyle[k]=this.element.style[k];\r
30499 },this),["top","left","width","height","fontSize"]);\r
30500 this.originalTop=this.element.offsetTop;\r
30501 this.originalLeft=this.element.offsetLeft;\r
30502 var _694=MochiKit.Style.getStyle(this.element,"font-size")||"100%";\r
30503 ma(b(function(_695){\r
30504 if(_694.indexOf(_695)>0){\r
30505 this.fontSize=parseFloat(_694);\r
30506 this.fontSizeType=_695;\r
30507 }\r
30508 },this),["em","px","%"]);\r
30509 this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;\r
30510 if(/^content/.test(this.options.scaleMode)){\r
30511 this.dims=[this.element.scrollHeight,this.element.scrollWidth];\r
30512 }else{\r
30513 if(this.options.scaleMode=="box"){\r
30514 this.dims=[this.element.offsetHeight,this.element.offsetWidth];\r
30515 }else{\r
30516 this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];\r
30517 }\r
30518 }\r
30519 },update:function(_696){\r
30520 var _697=(this.options.scaleFrom/100)+(this.factor*_696);\r
30521 if(this.options.scaleContent&&this.fontSize){\r
30522 MochiKit.Style.setStyle(this.element,{fontSize:this.fontSize*_697+this.fontSizeType});\r
30523 }\r
30524 this.setDimensions(this.dims[0]*_697,this.dims[1]*_697);\r
30525 },finish:function(){\r
30526 if(this.restoreAfterFinish){\r
30527 MochiKit.Style.setStyle(this.element,this.originalStyle);\r
30528 }\r
30529 },setDimensions:function(_698,_699){\r
30530 var d={};\r
30531 var r=Math.round;\r
30532 if(/MSIE/.test(navigator.userAgent)){\r
30533 r=Math.ceil;\r
30534 }\r
30535 if(this.options.scaleX){\r
30536 d.width=r(_699)+"px";\r
30537 }\r
30538 if(this.options.scaleY){\r
30539 d.height=r(_698)+"px";\r
30540 }\r
30541 if(this.options.scaleFromCenter){\r
30542 var topd=(_698-this.dims[0])/2;\r
30543 var _69d=(_699-this.dims[1])/2;\r
30544 if(this.elementPositioning=="absolute"){\r
30545 if(this.options.scaleY){\r
30546 d.top=this.originalTop-topd+"px";\r
30547 }\r
30548 if(this.options.scaleX){\r
30549 d.left=this.originalLeft-_69d+"px";\r
30550 }\r
30551 }else{\r
30552 if(this.options.scaleY){\r
30553 d.top=-topd+"px";\r
30554 }\r
30555 if(this.options.scaleX){\r
30556 d.left=-_69d+"px";\r
30557 }\r
30558 }\r
30559 }\r
30560 MochiKit.Style.setStyle(this.element,d);\r
30561 }});\r
30562 MochiKit.Visual.Highlight=function(_69e,_69f){\r
30563 var cls=arguments.callee;\r
30564 if(!(this instanceof cls)){\r
30565 return new cls(_69e,_69f);\r
30566 }\r
30567 this.__init__(_69e,_69f);\r
30568 };\r
30569 MochiKit.Visual.Highlight.prototype=new MochiKit.Visual.Base();\r
30570 MochiKit.Base.update(MochiKit.Visual.Highlight.prototype,{__class__:MochiKit.Visual.Highlight,__init__:function(_6a1,_6a2){\r
30571 this.element=MochiKit.DOM.getElement(_6a1);\r
30572 _6a2=MochiKit.Base.update({startcolor:"#ffff99"},_6a2);\r
30573 this.start(_6a2);\r
30574 },setup:function(){\r
30575 var b=MochiKit.Base;\r
30576 var s=MochiKit.Style;\r
30577 if(s.getStyle(this.element,"display")=="none"){\r
30578 this.cancel();\r
30579 return;\r
30580 }\r
30581 this.oldStyle={backgroundImage:s.getStyle(this.element,"background-image")};\r
30582 s.setStyle(this.element,{backgroundImage:"none"});\r
30583 if(!this.options.endcolor){\r
30584 this.options.endcolor=MochiKit.Color.Color.fromBackground(this.element).toHexString();\r
30585 }\r
30586 if(b.isUndefinedOrNull(this.options.restorecolor)){\r
30587 this.options.restorecolor=s.getStyle(this.element,"background-color");\r
30588 }\r
30589 this._base=b.map(b.bind(function(i){\r
30590 return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);\r
30591 },this),[0,1,2]);\r
30592 this._delta=b.map(b.bind(function(i){\r
30593 return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i];\r
30594 },this),[0,1,2]);\r
30595 },update:function(_6a7){\r
30596 var m="#";\r
30597 MochiKit.Base.map(MochiKit.Base.bind(function(i){\r
30598 m+=MochiKit.Color.toColorPart(Math.round(this._base[i]+this._delta[i]*_6a7));\r
30599 },this),[0,1,2]);\r
30600 MochiKit.Style.setStyle(this.element,{backgroundColor:m});\r
30601 },finish:function(){\r
30602 MochiKit.Style.setStyle(this.element,MochiKit.Base.update(this.oldStyle,{backgroundColor:this.options.restorecolor}));\r
30603 }});\r
30604 MochiKit.Visual.ScrollTo=function(_6aa,_6ab){\r
30605 var cls=arguments.callee;\r
30606 if(!(this instanceof cls)){\r
30607 return new cls(_6aa,_6ab);\r
30608 }\r
30609 this.__init__(_6aa,_6ab);\r
30610 };\r
30611 MochiKit.Visual.ScrollTo.prototype=new MochiKit.Visual.Base();\r
30612 MochiKit.Base.update(MochiKit.Visual.ScrollTo.prototype,{__class__:MochiKit.Visual.ScrollTo,__init__:function(_6ad,_6ae){\r
30613 this.element=MochiKit.DOM.getElement(_6ad);\r
30614 this.start(_6ae);\r
30615 },setup:function(){\r
30616 var p=MochiKit.Position;\r
30617 p.prepare();\r
30618 var _6b0=p.cumulativeOffset(this.element);\r
30619 if(this.options.offset){\r
30620 _6b0.y+=this.options.offset;\r
30621 }\r
30622 var max;\r
30623 if(window.innerHeight){\r
30624 max=window.innerHeight-window.height;\r
30625 }else{\r
30626 if(document.documentElement&&document.documentElement.clientHeight){\r
30627 max=document.documentElement.clientHeight-document.body.scrollHeight;\r
30628 }else{\r
30629 if(document.body){\r
30630 max=document.body.clientHeight-document.body.scrollHeight;\r
30631 }\r
30632 }\r
30633 }\r
30634 this.scrollStart=p.windowOffset.y;\r
30635 this.delta=(_6b0.y>max?max:_6b0.y)-this.scrollStart;\r
30636 },update:function(_6b2){\r
30637 var p=MochiKit.Position;\r
30638 p.prepare();\r
30639 window.scrollTo(p.windowOffset.x,this.scrollStart+(_6b2*this.delta));\r
30640 }});\r
30641 MochiKit.Visual.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;\r
30642 MochiKit.Visual.Morph=function(_6b4,_6b5){\r
30643 var cls=arguments.callee;\r
30644 if(!(this instanceof cls)){\r
30645 return new cls(_6b4,_6b5);\r
30646 }\r
30647 this.__init__(_6b4,_6b5);\r
30648 };\r
30649 MochiKit.Visual.Morph.prototype=new MochiKit.Visual.Base();\r
30650 MochiKit.Base.update(MochiKit.Visual.Morph.prototype,{__class__:MochiKit.Visual.Morph,__init__:function(_6b7,_6b8){\r
30651 this.element=MochiKit.DOM.getElement(_6b7);\r
30652 this.start(_6b8);\r
30653 },setup:function(){\r
30654 var b=MochiKit.Base;\r
30655 var _6ba=this.options.style;\r
30656 this.styleStart={};\r
30657 this.styleEnd={};\r
30658 this.units={};\r
30659 var _6bb,unit;\r
30660 for(var s in _6ba){\r
30661 _6bb=_6ba[s];\r
30662 s=b.camelize(s);\r
30663 if(MochiKit.Visual.CSS_LENGTH.test(_6bb)){\r
30664 var _6be=_6bb.match(/^([\+\-]?[0-9\.]+)(.*)$/);\r
30665 _6bb=parseFloat(_6be[1]);\r
30666 unit=(_6be.length==3)?_6be[2]:null;\r
30667 this.styleEnd[s]=_6bb;\r
30668 this.units[s]=unit;\r
30669 _6bb=MochiKit.Style.getStyle(this.element,s);\r
30670 _6be=_6bb.match(/^([\+\-]?[0-9\.]+)(.*)$/);\r
30671 _6bb=parseFloat(_6be[1]);\r
30672 this.styleStart[s]=_6bb;\r
30673 }else{\r
30674 if(/[Cc]olor$/.test(s)){\r
30675 var c=MochiKit.Color.Color;\r
30676 _6bb=c.fromString(_6bb);\r
30677 if(_6bb){\r
30678 this.units[s]="color";\r
30679 this.styleEnd[s]=_6bb.toHexString();\r
30680 _6bb=MochiKit.Style.getStyle(this.element,s);\r
30681 this.styleStart[s]=c.fromString(_6bb).toHexString();\r
30682 this.styleStart[s]=b.map(b.bind(function(i){\r
30683 return parseInt(this.styleStart[s].slice(i*2+1,i*2+3),16);\r
30684 },this),[0,1,2]);\r
30685 this.styleEnd[s]=b.map(b.bind(function(i){\r
30686 return parseInt(this.styleEnd[s].slice(i*2+1,i*2+3),16);\r
30687 },this),[0,1,2]);\r
30688 }\r
30689 }else{\r
30690 this.element.style[s]=_6bb;\r
30691 }\r
30692 }\r
30693 }\r
30694 },update:function(_6c2){\r
30695 var _6c3;\r
30696 for(var s in this.styleStart){\r
30697 if(this.units[s]=="color"){\r
30698 var m="#";\r
30699 var _6c6=this.styleStart[s];\r
30700 var end=this.styleEnd[s];\r
30701 MochiKit.Base.map(MochiKit.Base.bind(function(i){\r
30702 m+=MochiKit.Color.toColorPart(Math.round(_6c6[i]+(end[i]-_6c6[i])*_6c2));\r
30703 },this),[0,1,2]);\r
30704 this.element.style[s]=m;\r
30705 }else{\r
30706 _6c3=this.styleStart[s]+Math.round((this.styleEnd[s]-this.styleStart[s])*_6c2*1000)/1000+this.units[s];\r
30707 this.element.style[s]=_6c3;\r
30708 }\r
30709 }\r
30710 }});\r
30711 MochiKit.Visual.fade=function(_6c9,_6ca){\r
30712 var s=MochiKit.Style;\r
30713 var _6cc=s.getStyle(_6c9,"opacity");\r
30714 _6ca=MochiKit.Base.update({from:s.getStyle(_6c9,"opacity")||1,to:0,afterFinishInternal:function(_6cd){\r
30715 if(_6cd.options.to!==0){\r
30716 return;\r
30717 }\r
30718 s.hideElement(_6cd.element);\r
30719 s.setStyle(_6cd.element,{"opacity":_6cc});\r
30720 }},_6ca);\r
30721 return new MochiKit.Visual.Opacity(_6c9,_6ca);\r
30722 };\r
30723 MochiKit.Visual.appear=function(_6ce,_6cf){\r
30724 var s=MochiKit.Style;\r
30725 var v=MochiKit.Visual;\r
30726 _6cf=MochiKit.Base.update({from:(s.getStyle(_6ce,"display")=="none"?0:s.getStyle(_6ce,"opacity")||0),to:1,afterFinishInternal:function(_6d2){\r
30727 v.forceRerendering(_6d2.element);\r
30728 },beforeSetupInternal:function(_6d3){\r
30729 s.setStyle(_6d3.element,{"opacity":_6d3.options.from});\r
30730 s.showElement(_6d3.element);\r
30731 }},_6cf);\r
30732 return new v.Opacity(_6ce,_6cf);\r
30733 };\r
30734 MochiKit.Visual.puff=function(_6d4,_6d5){\r
30735 var s=MochiKit.Style;\r
30736 var v=MochiKit.Visual;\r
30737 _6d4=MochiKit.DOM.getElement(_6d4);\r
30738 var _6d8=MochiKit.Style.getElementDimensions(_6d4,true);\r
30739 var _6d9={position:s.getStyle(_6d4,"position"),top:_6d4.style.top,left:_6d4.style.left,width:_6d4.style.width,height:_6d4.style.height,opacity:s.getStyle(_6d4,"opacity")};\r
30740 _6d5=MochiKit.Base.update({beforeSetupInternal:function(_6da){\r
30741 MochiKit.Position.absolutize(_6da.effects[0].element);\r
30742 },afterFinishInternal:function(_6db){\r
30743 s.hideElement(_6db.effects[0].element);\r
30744 s.setStyle(_6db.effects[0].element,_6d9);\r
30745 },scaleContent:true,scaleFromCenter:true},_6d5);\r
30746 return new v.Parallel([new v.Scale(_6d4,200,{sync:true,scaleFromCenter:_6d5.scaleFromCenter,scaleMode:{originalHeight:_6d8.h,originalWidth:_6d8.w},scaleContent:_6d5.scaleContent,restoreAfterFinish:true}),new v.Opacity(_6d4,{sync:true,to:0})],_6d5);\r
30747 };\r
30748 MochiKit.Visual.blindUp=function(_6dc,_6dd){\r
30749 var d=MochiKit.DOM;\r
30750 var s=MochiKit.Style;\r
30751 _6dc=d.getElement(_6dc);\r
30752 var _6e0=s.getElementDimensions(_6dc,true);\r
30753 var _6e1=s.makeClipping(_6dc);\r
30754 _6dd=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:_6e0.h,originalWidth:_6e0.w},restoreAfterFinish:true,afterFinishInternal:function(_6e2){\r
30755 s.hideElement(_6e2.element);\r
30756 s.undoClipping(_6e2.element,_6e1);\r
30757 }},_6dd);\r
30758 return new MochiKit.Visual.Scale(_6dc,0,_6dd);\r
30759 };\r
30760 MochiKit.Visual.blindDown=function(_6e3,_6e4){\r
30761 var d=MochiKit.DOM;\r
30762 var s=MochiKit.Style;\r
30763 _6e3=d.getElement(_6e3);\r
30764 var _6e7=s.getElementDimensions(_6e3,true);\r
30765 var _6e8;\r
30766 _6e4=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_6e7.h,originalWidth:_6e7.w},restoreAfterFinish:true,afterSetupInternal:function(_6e9){\r
30767 _6e8=s.makeClipping(_6e9.element);\r
30768 s.setStyle(_6e9.element,{height:"0px"});\r
30769 s.showElement(_6e9.element);\r
30770 },afterFinishInternal:function(_6ea){\r
30771 s.undoClipping(_6ea.element,_6e8);\r
30772 }},_6e4);\r
30773 return new MochiKit.Visual.Scale(_6e3,100,_6e4);\r
30774 };\r
30775 MochiKit.Visual.switchOff=function(_6eb,_6ec){\r
30776 var d=MochiKit.DOM;\r
30777 var s=MochiKit.Style;\r
30778 _6eb=d.getElement(_6eb);\r
30779 var _6ef=s.getElementDimensions(_6eb,true);\r
30780 var _6f0=s.getStyle(_6eb,"opacity");\r
30781 var _6f1;\r
30782 _6ec=MochiKit.Base.update({duration:0.7,restoreAfterFinish:true,beforeSetupInternal:function(_6f2){\r
30783 s.makePositioned(_6eb);\r
30784 _6f1=s.makeClipping(_6eb);\r
30785 },afterFinishInternal:function(_6f3){\r
30786 s.hideElement(_6eb);\r
30787 s.undoClipping(_6eb,_6f1);\r
30788 s.undoPositioned(_6eb);\r
30789 s.setStyle(_6eb,{"opacity":_6f0});\r
30790 }},_6ec);\r
30791 var v=MochiKit.Visual;\r
30792 return new v.Sequence([new v.appear(_6eb,{sync:true,duration:0.57*_6ec.duration,from:0,transition:v.Transitions.flicker}),new v.Scale(_6eb,1,{sync:true,duration:0.43*_6ec.duration,scaleFromCenter:true,scaleX:false,scaleMode:{originalHeight:_6ef.h,originalWidth:_6ef.w},scaleContent:false,restoreAfterFinish:true})],_6ec);\r
30793 };\r
30794 MochiKit.Visual.dropOut=function(_6f5,_6f6){\r
30795 var d=MochiKit.DOM;\r
30796 var s=MochiKit.Style;\r
30797 _6f5=d.getElement(_6f5);\r
30798 var _6f9={top:s.getStyle(_6f5,"top"),left:s.getStyle(_6f5,"left"),opacity:s.getStyle(_6f5,"opacity")};\r
30799 _6f6=MochiKit.Base.update({duration:0.5,distance:100,beforeSetupInternal:function(_6fa){\r
30800 s.makePositioned(_6fa.effects[0].element);\r
30801 },afterFinishInternal:function(_6fb){\r
30802 s.hideElement(_6fb.effects[0].element);\r
30803 s.undoPositioned(_6fb.effects[0].element);\r
30804 s.setStyle(_6fb.effects[0].element,_6f9);\r
30805 }},_6f6);\r
30806 var v=MochiKit.Visual;\r
30807 return new v.Parallel([new v.Move(_6f5,{x:0,y:_6f6.distance,sync:true}),new v.Opacity(_6f5,{sync:true,to:0})],_6f6);\r
30808 };\r
30809 MochiKit.Visual.shake=function(_6fd,_6fe){\r
30810 var d=MochiKit.DOM;\r
30811 var v=MochiKit.Visual;\r
30812 var s=MochiKit.Style;\r
30813 _6fd=d.getElement(_6fd);\r
30814 var _702={top:s.getStyle(_6fd,"top"),left:s.getStyle(_6fd,"left")};\r
30815 _6fe=MochiKit.Base.update({duration:0.5,afterFinishInternal:function(_703){\r
30816 s.undoPositioned(_6fd);\r
30817 s.setStyle(_6fd,_702);\r
30818 }},_6fe);\r
30819 return new v.Sequence([new v.Move(_6fd,{sync:true,duration:0.1*_6fe.duration,x:20,y:0}),new v.Move(_6fd,{sync:true,duration:0.2*_6fe.duration,x:-40,y:0}),new v.Move(_6fd,{sync:true,duration:0.2*_6fe.duration,x:40,y:0}),new v.Move(_6fd,{sync:true,duration:0.2*_6fe.duration,x:-40,y:0}),new v.Move(_6fd,{sync:true,duration:0.2*_6fe.duration,x:40,y:0}),new v.Move(_6fd,{sync:true,duration:0.1*_6fe.duration,x:-20,y:0})],_6fe);\r
30820 };\r
30821 MochiKit.Visual.slideDown=function(_704,_705){\r
30822 var d=MochiKit.DOM;\r
30823 var b=MochiKit.Base;\r
30824 var s=MochiKit.Style;\r
30825 _704=d.getElement(_704);\r
30826 if(!_704.firstChild){\r
30827 throw new Error("MochiKit.Visual.slideDown must be used on a element with a child");\r
30828 }\r
30829 d.removeEmptyTextNodes(_704);\r
30830 var _709=s.getStyle(_704.firstChild,"bottom")||0;\r
30831 var _70a=s.getElementDimensions(_704,true);\r
30832 var _70b;\r
30833 _705=b.update({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_70a.h,originalWidth:_70a.w},restoreAfterFinish:true,afterSetupInternal:function(_70c){\r
30834 s.makePositioned(_70c.element);\r
30835 s.makePositioned(_70c.element.firstChild);\r
30836 if(/Opera/.test(navigator.userAgent)){\r
30837 s.setStyle(_70c.element,{top:""});\r
30838 }\r
30839 _70b=s.makeClipping(_70c.element);\r
30840 s.setStyle(_70c.element,{height:"0px"});\r
30841 s.showElement(_70c.element);\r
30842 },afterUpdateInternal:function(_70d){\r
30843 var _70e=s.getElementDimensions(_70d.element,true);\r
30844 s.setStyle(_70d.element.firstChild,{bottom:(_70d.dims[0]-_70e.h)+"px"});\r
30845 },afterFinishInternal:function(_70f){\r
30846 s.undoClipping(_70f.element,_70b);\r
30847 if(/MSIE/.test(navigator.userAgent)){\r
30848 s.undoPositioned(_70f.element);\r
30849 s.undoPositioned(_70f.element.firstChild);\r
30850 }else{\r
30851 s.undoPositioned(_70f.element.firstChild);\r
30852 s.undoPositioned(_70f.element);\r
30853 }\r
30854 s.setStyle(_70f.element.firstChild,{bottom:_709});\r
30855 }},_705);\r
30856 return new MochiKit.Visual.Scale(_704,100,_705);\r
30857 };\r
30858 MochiKit.Visual.slideUp=function(_710,_711){\r
30859 var d=MochiKit.DOM;\r
30860 var b=MochiKit.Base;\r
30861 var s=MochiKit.Style;\r
30862 _710=d.getElement(_710);\r
30863 if(!_710.firstChild){\r
30864 throw new Error("MochiKit.Visual.slideUp must be used on a element with a child");\r
30865 }\r
30866 d.removeEmptyTextNodes(_710);\r
30867 var _715=s.getStyle(_710.firstChild,"bottom");\r
30868 var _716=s.getElementDimensions(_710,true);\r
30869 var _717;\r
30870 _711=b.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:_716.h,originalWidth:_716.w},scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_718){\r
30871 s.makePositioned(_718.element);\r
30872 s.makePositioned(_718.element.firstChild);\r
30873 if(/Opera/.test(navigator.userAgent)){\r
30874 s.setStyle(_718.element,{top:""});\r
30875 }\r
30876 _717=s.makeClipping(_718.element);\r
30877 s.showElement(_718.element);\r
30878 },afterUpdateInternal:function(_719){\r
30879 var _71a=s.getElementDimensions(_719.element,true);\r
30880 s.setStyle(_719.element.firstChild,{bottom:(_719.dims[0]-_71a.h)+"px"});\r
30881 },afterFinishInternal:function(_71b){\r
30882 s.hideElement(_71b.element);\r
30883 s.undoClipping(_71b.element,_717);\r
30884 s.undoPositioned(_71b.element.firstChild);\r
30885 s.undoPositioned(_71b.element);\r
30886 s.setStyle(_71b.element.firstChild,{bottom:_715});\r
30887 }},_711);\r
30888 return new MochiKit.Visual.Scale(_710,0,_711);\r
30889 };\r
30890 MochiKit.Visual.squish=function(_71c,_71d){\r
30891 var d=MochiKit.DOM;\r
30892 var b=MochiKit.Base;\r
30893 var s=MochiKit.Style;\r
30894 var _721=s.getElementDimensions(_71c,true);\r
30895 var _722;\r
30896 _71d=b.update({restoreAfterFinish:true,scaleMode:{originalHeight:_721.w,originalWidth:_721.h},beforeSetupInternal:function(_723){\r
30897 _722=s.makeClipping(_723.element);\r
30898 },afterFinishInternal:function(_724){\r
30899 s.hideElement(_724.element);\r
30900 s.undoClipping(_724.element,_722);\r
30901 }},_71d);\r
30902 return new MochiKit.Visual.Scale(_71c,/Opera/.test(navigator.userAgent)?1:0,_71d);\r
30903 };\r
30904 MochiKit.Visual.grow=function(_725,_726){\r
30905 var d=MochiKit.DOM;\r
30906 var v=MochiKit.Visual;\r
30907 var s=MochiKit.Style;\r
30908 _725=d.getElement(_725);\r
30909 _726=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.full,scaleContent:true,scaleFromCenter:false},_726);\r
30910 var _72a={top:_725.style.top,left:_725.style.left,height:_725.style.height,width:_725.style.width,opacity:s.getStyle(_725,"opacity")};\r
30911 var dims=s.getElementDimensions(_725,true);\r
30912 var _72c,_72d;\r
30913 var _72e,_72f;\r
30914 switch(_726.direction){\r
30915 case "top-left":\r
30916 _72c=_72d=_72e=_72f=0;\r
30917 break;\r
30918 case "top-right":\r
30919 _72c=dims.w;\r
30920 _72d=_72f=0;\r
30921 _72e=-dims.w;\r
30922 break;\r
30923 case "bottom-left":\r
30924 _72c=_72e=0;\r
30925 _72d=dims.h;\r
30926 _72f=-dims.h;\r
30927 break;\r
30928 case "bottom-right":\r
30929 _72c=dims.w;\r
30930 _72d=dims.h;\r
30931 _72e=-dims.w;\r
30932 _72f=-dims.h;\r
30933 break;\r
30934 case "center":\r
30935 _72c=dims.w/2;\r
30936 _72d=dims.h/2;\r
30937 _72e=-dims.w/2;\r
30938 _72f=-dims.h/2;\r
30939 break;\r
30940 }\r
30941 var _730=MochiKit.Base.update({beforeSetupInternal:function(_731){\r
30942 s.setStyle(_731.effects[0].element,{height:"0px"});\r
30943 s.showElement(_731.effects[0].element);\r
30944 },afterFinishInternal:function(_732){\r
30945 s.undoClipping(_732.effects[0].element);\r
30946 s.undoPositioned(_732.effects[0].element);\r
30947 s.setStyle(_732.effects[0].element,_72a);\r
30948 }},_726);\r
30949 return new v.Move(_725,{x:_72c,y:_72d,duration:0.01,beforeSetupInternal:function(_733){\r
30950 s.hideElement(_733.element);\r
30951 s.makeClipping(_733.element);\r
30952 s.makePositioned(_733.element);\r
30953 },afterFinishInternal:function(_734){\r
30954 new v.Parallel([new v.Opacity(_734.element,{sync:true,to:1,from:0,transition:_726.opacityTransition}),new v.Move(_734.element,{x:_72e,y:_72f,sync:true,transition:_726.moveTransition}),new v.Scale(_734.element,100,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,scaleFrom:/Opera/.test(navigator.userAgent)?1:0,transition:_726.scaleTransition,scaleContent:_726.scaleContent,scaleFromCenter:_726.scaleFromCenter,restoreAfterFinish:true})],_730);\r
30955 }});\r
30956 };\r
30957 MochiKit.Visual.shrink=function(_735,_736){\r
30958 var d=MochiKit.DOM;\r
30959 var v=MochiKit.Visual;\r
30960 var s=MochiKit.Style;\r
30961 _735=d.getElement(_735);\r
30962 _736=MochiKit.Base.update({direction:"center",moveTransition:v.Transitions.sinoidal,scaleTransition:v.Transitions.sinoidal,opacityTransition:v.Transitions.none,scaleContent:true,scaleFromCenter:false},_736);\r
30963 var _73a={top:_735.style.top,left:_735.style.left,height:_735.style.height,width:_735.style.width,opacity:s.getStyle(_735,"opacity")};\r
30964 var dims=s.getElementDimensions(_735,true);\r
30965 var _73c,_73d;\r
30966 switch(_736.direction){\r
30967 case "top-left":\r
30968 _73c=_73d=0;\r
30969 break;\r
30970 case "top-right":\r
30971 _73c=dims.w;\r
30972 _73d=0;\r
30973 break;\r
30974 case "bottom-left":\r
30975 _73c=0;\r
30976 _73d=dims.h;\r
30977 break;\r
30978 case "bottom-right":\r
30979 _73c=dims.w;\r
30980 _73d=dims.h;\r
30981 break;\r
30982 case "center":\r
30983 _73c=dims.w/2;\r
30984 _73d=dims.h/2;\r
30985 break;\r
30986 }\r
30987 var _73e;\r
30988 var _73f=MochiKit.Base.update({beforeStartInternal:function(_740){\r
30989 s.makePositioned(_740.effects[0].element);\r
30990 _73e=s.makeClipping(_740.effects[0].element);\r
30991 },afterFinishInternal:function(_741){\r
30992 s.hideElement(_741.effects[0].element);\r
30993 s.undoClipping(_741.effects[0].element,_73e);\r
30994 s.undoPositioned(_741.effects[0].element);\r
30995 s.setStyle(_741.effects[0].element,_73a);\r
30996 }},_736);\r
30997 return new v.Parallel([new v.Opacity(_735,{sync:true,to:0,from:1,transition:_736.opacityTransition}),new v.Scale(_735,/Opera/.test(navigator.userAgent)?1:0,{scaleMode:{originalHeight:dims.h,originalWidth:dims.w},sync:true,transition:_736.scaleTransition,scaleContent:_736.scaleContent,scaleFromCenter:_736.scaleFromCenter,restoreAfterFinish:true}),new v.Move(_735,{x:_73c,y:_73d,sync:true,transition:_736.moveTransition})],_73f);\r
30998 };\r
30999 MochiKit.Visual.pulsate=function(_742,_743){\r
31000 var d=MochiKit.DOM;\r
31001 var v=MochiKit.Visual;\r
31002 var b=MochiKit.Base;\r
31003 var _747=MochiKit.Style.getStyle(_742,"opacity");\r
31004 _743=b.update({duration:3,from:0,afterFinishInternal:function(_748){\r
31005 MochiKit.Style.setStyle(_748.element,{"opacity":_747});\r
31006 }},_743);\r
31007 var _749=_743.transition||v.Transitions.sinoidal;\r
31008 _743.transition=function(pos){\r
31009 return _749(1-v.Transitions.pulse(pos,_743.pulses));\r
31010 };\r
31011 return new v.Opacity(_742,_743);\r
31012 };\r
31013 MochiKit.Visual.fold=function(_74b,_74c){\r
31014 var d=MochiKit.DOM;\r
31015 var v=MochiKit.Visual;\r
31016 var s=MochiKit.Style;\r
31017 _74b=d.getElement(_74b);\r
31018 var _750=s.getElementDimensions(_74b,true);\r
31019 var _751={top:_74b.style.top,left:_74b.style.left,width:_74b.style.width,height:_74b.style.height};\r
31020 var _752=s.makeClipping(_74b);\r
31021 _74c=MochiKit.Base.update({scaleContent:false,scaleX:false,scaleMode:{originalHeight:_750.h,originalWidth:_750.w},afterFinishInternal:function(_753){\r
31022 new v.Scale(_74b,1,{scaleContent:false,scaleY:false,scaleMode:{originalHeight:_750.h,originalWidth:_750.w},afterFinishInternal:function(_754){\r
31023 s.hideElement(_754.element);\r
31024 s.undoClipping(_754.element,_752);\r
31025 s.setStyle(_754.element,_751);\r
31026 }});\r
31027 }},_74c);\r
31028 return new v.Scale(_74b,5,_74c);\r
31029 };\r
31030 MochiKit.Visual.Color=MochiKit.Color.Color;\r
31031 MochiKit.Visual.getElementsComputedStyle=MochiKit.DOM.computedStyle;\r
31032 MochiKit.Visual.__new__=function(){\r
31033 var m=MochiKit.Base;\r
31034 m.nameFunctions(this);\r
31035 this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};\r
31036 };\r
31037 MochiKit.Visual.EXPORT=["roundElement","roundClass","tagifyText","multiple","toggle","Parallel","Sequence","Opacity","Move","Scale","Highlight","ScrollTo","Morph","fade","appear","puff","blindUp","blindDown","switchOff","dropOut","shake","slideDown","slideUp","squish","grow","shrink","pulsate","fold"];\r
31038 MochiKit.Visual.EXPORT_OK=["Base","PAIRS"];\r
31039 MochiKit.Visual.__new__();\r
31040 MochiKit.Base._exportSymbols(this,MochiKit.Visual);\r
31041 MochiKit.Base._deps("DragAndDrop",["Base","Iter","DOM","Signal","Visual","Position"]);\r
31042 MochiKit.DragAndDrop.NAME="MochiKit.DragAndDrop";\r
31043 MochiKit.DragAndDrop.VERSION="1.4.2";\r
31044 MochiKit.DragAndDrop.__repr__=function(){\r
31045 return "["+this.NAME+" "+this.VERSION+"]";\r
31046 };\r
31047 MochiKit.DragAndDrop.toString=function(){\r
31048 return this.__repr__();\r
31049 };\r
31050 MochiKit.DragAndDrop.EXPORT=["Droppable","Draggable"];\r
31051 MochiKit.DragAndDrop.EXPORT_OK=["Droppables","Draggables"];\r
31052 MochiKit.DragAndDrop.Droppables={drops:[],remove:function(_756){\r
31053 this.drops=MochiKit.Base.filter(function(d){\r
31054 return d.element!=MochiKit.DOM.getElement(_756);\r
31055 },this.drops);\r
31056 },register:function(drop){\r
31057 this.drops.push(drop);\r
31058 },unregister:function(drop){\r
31059 this.drops=MochiKit.Base.filter(function(d){\r
31060 return d!=drop;\r
31061 },this.drops);\r
31062 },prepare:function(_75b){\r
31063 MochiKit.Base.map(function(drop){\r
31064 if(drop.isAccepted(_75b)){\r
31065 if(drop.options.activeclass){\r
31066 MochiKit.DOM.addElementClass(drop.element,drop.options.activeclass);\r
31067 }\r
31068 drop.options.onactive(drop.element,_75b);\r
31069 }\r
31070 },this.drops);\r
31071 },findDeepestChild:function(_75d){\r
31072 deepest=_75d[0];\r
31073 for(i=1;i<_75d.length;++i){\r
31074 if(MochiKit.DOM.isChildNode(_75d[i].element,deepest.element)){\r
31075 deepest=_75d[i];\r
31076 }\r
31077 }\r
31078 return deepest;\r
31079 },show:function(_75e,_75f){\r
31080 if(!this.drops.length){\r
31081 return;\r
31082 }\r
31083 var _760=[];\r
31084 if(this.last_active){\r
31085 this.last_active.deactivate();\r
31086 }\r
31087 MochiKit.Iter.forEach(this.drops,function(drop){\r
31088 if(drop.isAffected(_75e,_75f)){\r
31089 _760.push(drop);\r
31090 }\r
31091 });\r
31092 if(_760.length>0){\r
31093 drop=this.findDeepestChild(_760);\r
31094 MochiKit.Position.within(drop.element,_75e.page.x,_75e.page.y);\r
31095 drop.options.onhover(_75f,drop.element,MochiKit.Position.overlap(drop.options.overlap,drop.element));\r
31096 drop.activate();\r
31097 }\r
31098 },fire:function(_762,_763){\r
31099 if(!this.last_active){\r
31100 return;\r
31101 }\r
31102 MochiKit.Position.prepare();\r
31103 if(this.last_active.isAffected(_762.mouse(),_763)){\r
31104 this.last_active.options.ondrop(_763,this.last_active.element,_762);\r
31105 }\r
31106 },reset:function(_764){\r
31107 MochiKit.Base.map(function(drop){\r
31108 if(drop.options.activeclass){\r
31109 MochiKit.DOM.removeElementClass(drop.element,drop.options.activeclass);\r
31110 }\r
31111 drop.options.ondesactive(drop.element,_764);\r
31112 },this.drops);\r
31113 if(this.last_active){\r
31114 this.last_active.deactivate();\r
31115 }\r
31116 }};\r
31117 MochiKit.DragAndDrop.Droppable=function(_766,_767){\r
31118 var cls=arguments.callee;\r
31119 if(!(this instanceof cls)){\r
31120 return new cls(_766,_767);\r
31121 }\r
31122 this.__init__(_766,_767);\r
31123 };\r
31124 MochiKit.DragAndDrop.Droppable.prototype={__class__:MochiKit.DragAndDrop.Droppable,__init__:function(_769,_76a){\r
31125 var d=MochiKit.DOM;\r
31126 var b=MochiKit.Base;\r
31127 this.element=d.getElement(_769);\r
31128 this.options=b.update({greedy:true,hoverclass:null,activeclass:null,hoverfunc:b.noop,accept:null,onactive:b.noop,ondesactive:b.noop,onhover:b.noop,ondrop:b.noop,containment:[],tree:false},_76a);\r
31129 this.options._containers=[];\r
31130 b.map(MochiKit.Base.bind(function(c){\r
31131 this.options._containers.push(d.getElement(c));\r
31132 },this),this.options.containment);\r
31133 MochiKit.Style.makePositioned(this.element);\r
31134 MochiKit.DragAndDrop.Droppables.register(this);\r
31135 },isContained:function(_76e){\r
31136 if(this.options._containers.length){\r
31137 var _76f;\r
31138 if(this.options.tree){\r
31139 _76f=_76e.treeNode;\r
31140 }else{\r
31141 _76f=_76e.parentNode;\r
31142 }\r
31143 return MochiKit.Iter.some(this.options._containers,function(c){\r
31144 return _76f==c;\r
31145 });\r
31146 }else{\r
31147 return true;\r
31148 }\r
31149 },isAccepted:function(_771){\r
31150 return ((!this.options.accept)||MochiKit.Iter.some(this.options.accept,function(c){\r
31151 return MochiKit.DOM.hasElementClass(_771,c);\r
31152 }));\r
31153 },isAffected:function(_773,_774){\r
31154 return ((this.element!=_774)&&this.isContained(_774)&&this.isAccepted(_774)&&MochiKit.Position.within(this.element,_773.page.x,_773.page.y));\r
31155 },deactivate:function(){\r
31156 if(this.options.hoverclass){\r
31157 MochiKit.DOM.removeElementClass(this.element,this.options.hoverclass);\r
31158 }\r
31159 this.options.hoverfunc(this.element,false);\r
31160 MochiKit.DragAndDrop.Droppables.last_active=null;\r
31161 },activate:function(){\r
31162 if(this.options.hoverclass){\r
31163 MochiKit.DOM.addElementClass(this.element,this.options.hoverclass);\r
31164 }\r
31165 this.options.hoverfunc(this.element,true);\r
31166 MochiKit.DragAndDrop.Droppables.last_active=this;\r
31167 },destroy:function(){\r
31168 MochiKit.DragAndDrop.Droppables.unregister(this);\r
31169 },repr:function(){\r
31170 return "["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";\r
31171 }};\r
31172 MochiKit.DragAndDrop.Draggables={drags:[],register:function(_775){\r
31173 if(this.drags.length===0){\r
31174 var conn=MochiKit.Signal.connect;\r
31175 this.eventMouseUp=conn(document,"onmouseup",this,this.endDrag);\r
31176 this.eventMouseMove=conn(document,"onmousemove",this,this.updateDrag);\r
31177 this.eventKeypress=conn(document,"onkeypress",this,this.keyPress);\r
31178 }\r
31179 this.drags.push(_775);\r
31180 },unregister:function(_777){\r
31181 this.drags=MochiKit.Base.filter(function(d){\r
31182 return d!=_777;\r
31183 },this.drags);\r
31184 if(this.drags.length===0){\r
31185 var disc=MochiKit.Signal.disconnect;\r
31186 disc(this.eventMouseUp);\r
31187 disc(this.eventMouseMove);\r
31188 disc(this.eventKeypress);\r
31189 }\r
31190 },activate:function(_77a){\r
31191 window.focus();\r
31192 this.activeDraggable=_77a;\r
31193 },deactivate:function(){\r
31194 this.activeDraggable=null;\r
31195 },updateDrag:function(_77b){\r
31196 if(!this.activeDraggable){\r
31197 return;\r
31198 }\r
31199 var _77c=_77b.mouse();\r
31200 if(this._lastPointer&&(MochiKit.Base.repr(this._lastPointer.page)==MochiKit.Base.repr(_77c.page))){\r
31201 return;\r
31202 }\r
31203 this._lastPointer=_77c;\r
31204 this.activeDraggable.updateDrag(_77b,_77c);\r
31205 },endDrag:function(_77d){\r
31206 if(!this.activeDraggable){\r
31207 return;\r
31208 }\r
31209 this._lastPointer=null;\r
31210 this.activeDraggable.endDrag(_77d);\r
31211 this.activeDraggable=null;\r
31212 },keyPress:function(_77e){\r
31213 if(this.activeDraggable){\r
31214 this.activeDraggable.keyPress(_77e);\r
31215 }\r
31216 },notify:function(_77f,_780,_781){\r
31217 MochiKit.Signal.signal(this,_77f,_780,_781);\r
31218 }};\r
31219 MochiKit.DragAndDrop.Draggable=function(_782,_783){\r
31220 var cls=arguments.callee;\r
31221 if(!(this instanceof cls)){\r
31222 return new cls(_782,_783);\r
31223 }\r
31224 this.__init__(_782,_783);\r
31225 };\r
31226 MochiKit.DragAndDrop.Draggable.prototype={__class__:MochiKit.DragAndDrop.Draggable,__init__:function(_785,_786){\r
31227 var v=MochiKit.Visual;\r
31228 var b=MochiKit.Base;\r
31229 _786=b.update({handle:false,starteffect:function(_789){\r
31230 this._savedOpacity=MochiKit.Style.getStyle(_789,"opacity")||1;\r
31231 new v.Opacity(_789,{duration:0.2,from:this._savedOpacity,to:0.7});\r
31232 },reverteffect:function(_78a,_78b,_78c){\r
31233 var dur=Math.sqrt(Math.abs(_78b^2)+Math.abs(_78c^2))*0.02;\r
31234 return new v.Move(_78a,{x:-_78c,y:-_78b,duration:dur});\r
31235 },endeffect:function(_78e){\r
31236 new v.Opacity(_78e,{duration:0.2,from:0.7,to:this._savedOpacity});\r
31237 },onchange:b.noop,zindex:1000,revert:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false},_786);\r
31238 var d=MochiKit.DOM;\r
31239 this.element=d.getElement(_785);\r
31240 if(_786.handle&&(typeof (_786.handle)=="string")){\r
31241 this.handle=d.getFirstElementByTagAndClassName(null,_786.handle,this.element);\r
31242 }\r
31243 if(!this.handle){\r
31244 this.handle=d.getElement(_786.handle);\r
31245 }\r
31246 if(!this.handle){\r
31247 this.handle=this.element;\r
31248 }\r
31249 if(_786.scroll&&!_786.scroll.scrollTo&&!_786.scroll.outerHTML){\r
31250 _786.scroll=d.getElement(_786.scroll);\r
31251 this._isScrollChild=MochiKit.DOM.isChildNode(this.element,_786.scroll);\r
31252 }\r
31253 MochiKit.Style.makePositioned(this.element);\r
31254 this.delta=this.currentDelta();\r
31255 this.options=_786;\r
31256 this.dragging=false;\r
31257 this.eventMouseDown=MochiKit.Signal.connect(this.handle,"onmousedown",this,this.initDrag);\r
31258 MochiKit.DragAndDrop.Draggables.register(this);\r
31259 },destroy:function(){\r
31260 MochiKit.Signal.disconnect(this.eventMouseDown);\r
31261 MochiKit.DragAndDrop.Draggables.unregister(this);\r
31262 },currentDelta:function(){\r
31263 var s=MochiKit.Style.getStyle;\r
31264 return [parseInt(s(this.element,"left")||"0"),parseInt(s(this.element,"top")||"0")];\r
31265 },initDrag:function(_791){\r
31266 if(!_791.mouse().button.left){\r
31267 return;\r
31268 }\r
31269 var src=_791.target();\r
31270 var _793=(src.tagName||"").toUpperCase();\r
31271 if(_793==="INPUT"||_793==="SELECT"||_793==="OPTION"||_793==="BUTTON"||_793==="TEXTAREA"){\r
31272 return;\r
31273 }\r
31274 if(this._revert){\r
31275 this._revert.cancel();\r
31276 this._revert=null;\r
31277 }\r
31278 var _794=_791.mouse();\r
31279 var pos=MochiKit.Position.cumulativeOffset(this.element);\r
31280 this.offset=[_794.page.x-pos.x,_794.page.y-pos.y];\r
31281 MochiKit.DragAndDrop.Draggables.activate(this);\r
31282 _791.stop();\r
31283 },startDrag:function(_796){\r
31284 this.dragging=true;\r
31285 if(this.options.selectclass){\r
31286 MochiKit.DOM.addElementClass(this.element,this.options.selectclass);\r
31287 }\r
31288 if(this.options.zindex){\r
31289 this.originalZ=parseInt(MochiKit.Style.getStyle(this.element,"z-index")||"0");\r
31290 this.element.style.zIndex=this.options.zindex;\r
31291 }\r
31292 if(this.options.ghosting){\r
31293 this._clone=this.element.cloneNode(true);\r
31294 this.ghostPosition=MochiKit.Position.absolutize(this.element);\r
31295 this.element.parentNode.insertBefore(this._clone,this.element);\r
31296 }\r
31297 if(this.options.scroll){\r
31298 if(this.options.scroll==window){\r
31299 var _797=this._getWindowScroll(this.options.scroll);\r
31300 this.originalScrollLeft=_797.left;\r
31301 this.originalScrollTop=_797.top;\r
31302 }else{\r
31303 this.originalScrollLeft=this.options.scroll.scrollLeft;\r
31304 this.originalScrollTop=this.options.scroll.scrollTop;\r
31305 }\r
31306 }\r
31307 MochiKit.DragAndDrop.Droppables.prepare(this.element);\r
31308 MochiKit.DragAndDrop.Draggables.notify("start",this,_796);\r
31309 if(this.options.starteffect){\r
31310 this.options.starteffect(this.element);\r
31311 }\r
31312 },updateDrag:function(_798,_799){\r
31313 if(!this.dragging){\r
31314 this.startDrag(_798);\r
31315 }\r
31316 MochiKit.Position.prepare();\r
31317 MochiKit.DragAndDrop.Droppables.show(_799,this.element);\r
31318 MochiKit.DragAndDrop.Draggables.notify("drag",this,_798);\r
31319 this.draw(_799);\r
31320 this.options.onchange(this);\r
31321 if(this.options.scroll){\r
31322 this.stopScrolling();\r
31323 var p,q;\r
31324 if(this.options.scroll==window){\r
31325 var s=this._getWindowScroll(this.options.scroll);\r
31326 p=new MochiKit.Style.Coordinates(s.left,s.top);\r
31327 q=new MochiKit.Style.Coordinates(s.left+s.width,s.top+s.height);\r
31328 }else{\r
31329 p=MochiKit.Position.page(this.options.scroll);\r
31330 p.x+=this.options.scroll.scrollLeft;\r
31331 p.y+=this.options.scroll.scrollTop;\r
31332 p.x+=(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0);\r
31333 p.y+=(window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0);\r
31334 q=new MochiKit.Style.Coordinates(p.x+this.options.scroll.offsetWidth,p.y+this.options.scroll.offsetHeight);\r
31335 }\r
31336 var _79d=[0,0];\r
31337 if(_799.page.x>(q.x-this.options.scrollSensitivity)){\r
31338 _79d[0]=_799.page.x-(q.x-this.options.scrollSensitivity);\r
31339 }else{\r
31340 if(_799.page.x<(p.x+this.options.scrollSensitivity)){\r
31341 _79d[0]=_799.page.x-(p.x+this.options.scrollSensitivity);\r
31342 }\r
31343 }\r
31344 if(_799.page.y>(q.y-this.options.scrollSensitivity)){\r
31345 _79d[1]=_799.page.y-(q.y-this.options.scrollSensitivity);\r
31346 }else{\r
31347 if(_799.page.y<(p.y+this.options.scrollSensitivity)){\r
31348 _79d[1]=_799.page.y-(p.y+this.options.scrollSensitivity);\r
31349 }\r
31350 }\r
31351 this.startScrolling(_79d);\r
31352 }\r
31353 if(/AppleWebKit/.test(navigator.appVersion)){\r
31354 window.scrollBy(0,0);\r
31355 }\r
31356 _798.stop();\r
31357 },finishDrag:function(_79e,_79f){\r
31358 var dr=MochiKit.DragAndDrop;\r
31359 this.dragging=false;\r
31360 if(this.options.selectclass){\r
31361 MochiKit.DOM.removeElementClass(this.element,this.options.selectclass);\r
31362 }\r
31363 if(this.options.ghosting){\r
31364 MochiKit.Position.relativize(this.element,this.ghostPosition);\r
31365 MochiKit.DOM.removeElement(this._clone);\r
31366 this._clone=null;\r
31367 }\r
31368 if(_79f){\r
31369 dr.Droppables.fire(_79e,this.element);\r
31370 }\r
31371 dr.Draggables.notify("end",this,_79e);\r
31372 var _7a1=this.options.revert;\r
31373 if(_7a1&&typeof (_7a1)=="function"){\r
31374 _7a1=_7a1(this.element);\r
31375 }\r
31376 var d=this.currentDelta();\r
31377 if(_7a1&&this.options.reverteffect){\r
31378 this._revert=this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);\r
31379 }else{\r
31380 this.delta=d;\r
31381 }\r
31382 if(this.options.zindex){\r
31383 this.element.style.zIndex=this.originalZ;\r
31384 }\r
31385 if(this.options.endeffect){\r
31386 this.options.endeffect(this.element);\r
31387 }\r
31388 dr.Draggables.deactivate();\r
31389 dr.Droppables.reset(this.element);\r
31390 },keyPress:function(_7a3){\r
31391 if(_7a3.key().string!="KEY_ESCAPE"){\r
31392 return;\r
31393 }\r
31394 this.finishDrag(_7a3,false);\r
31395 _7a3.stop();\r
31396 },endDrag:function(_7a4){\r
31397 if(!this.dragging){\r
31398 return;\r
31399 }\r
31400 this.stopScrolling();\r
31401 this.finishDrag(_7a4,true);\r
31402 _7a4.stop();\r
31403 },draw:function(_7a5){\r
31404 var pos=MochiKit.Position.cumulativeOffset(this.element);\r
31405 var d=this.currentDelta();\r
31406 pos.x-=d[0];\r
31407 pos.y-=d[1];\r
31408 if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){\r
31409 pos.x-=this.options.scroll.scrollLeft-this.originalScrollLeft;\r
31410 pos.y-=this.options.scroll.scrollTop-this.originalScrollTop;\r
31411 }\r
31412 var p=[_7a5.page.x-pos.x-this.offset[0],_7a5.page.y-pos.y-this.offset[1]];\r
31413 if(this.options.snap){\r
31414 if(typeof (this.options.snap)=="function"){\r
31415 p=this.options.snap(p[0],p[1]);\r
31416 }else{\r
31417 if(this.options.snap instanceof Array){\r
31418 var i=-1;\r
31419 p=MochiKit.Base.map(MochiKit.Base.bind(function(v){\r
31420 i+=1;\r
31421 return Math.round(v/this.options.snap[i])*this.options.snap[i];\r
31422 },this),p);\r
31423 }else{\r
31424 p=MochiKit.Base.map(MochiKit.Base.bind(function(v){\r
31425 return Math.round(v/this.options.snap)*this.options.snap;\r
31426 },this),p);\r
31427 }\r
31428 }\r
31429 }\r
31430 var _7ac=this.element.style;\r
31431 if((!this.options.constraint)||(this.options.constraint=="horizontal")){\r
31432 _7ac.left=p[0]+"px";\r
31433 }\r
31434 if((!this.options.constraint)||(this.options.constraint=="vertical")){\r
31435 _7ac.top=p[1]+"px";\r
31436 }\r
31437 if(_7ac.visibility=="hidden"){\r
31438 _7ac.visibility="";\r
31439 }\r
31440 },stopScrolling:function(){\r
31441 if(this.scrollInterval){\r
31442 clearInterval(this.scrollInterval);\r
31443 this.scrollInterval=null;\r
31444 MochiKit.DragAndDrop.Draggables._lastScrollPointer=null;\r
31445 }\r
31446 },startScrolling:function(_7ad){\r
31447 if(!_7ad[0]&&!_7ad[1]){\r
31448 return;\r
31449 }\r
31450 this.scrollSpeed=[_7ad[0]*this.options.scrollSpeed,_7ad[1]*this.options.scrollSpeed];\r
31451 this.lastScrolled=new Date();\r
31452 this.scrollInterval=setInterval(MochiKit.Base.bind(this.scroll,this),10);\r
31453 },scroll:function(){\r
31454 var _7ae=new Date();\r
31455 var _7af=_7ae-this.lastScrolled;\r
31456 this.lastScrolled=_7ae;\r
31457 if(this.options.scroll==window){\r
31458 var s=this._getWindowScroll(this.options.scroll);\r
31459 if(this.scrollSpeed[0]||this.scrollSpeed[1]){\r
31460 var dm=_7af/1000;\r
31461 this.options.scroll.scrollTo(s.left+dm*this.scrollSpeed[0],s.top+dm*this.scrollSpeed[1]);\r
31462 }\r
31463 }else{\r
31464 this.options.scroll.scrollLeft+=this.scrollSpeed[0]*_7af/1000;\r
31465 this.options.scroll.scrollTop+=this.scrollSpeed[1]*_7af/1000;\r
31466 }\r
31467 var d=MochiKit.DragAndDrop;\r
31468 MochiKit.Position.prepare();\r
31469 d.Droppables.show(d.Draggables._lastPointer,this.element);\r
31470 d.Draggables.notify("drag",this);\r
31471 if(this._isScrollChild){\r
31472 d.Draggables._lastScrollPointer=d.Draggables._lastScrollPointer||d.Draggables._lastPointer;\r
31473 d.Draggables._lastScrollPointer.x+=this.scrollSpeed[0]*_7af/1000;\r
31474 d.Draggables._lastScrollPointer.y+=this.scrollSpeed[1]*_7af/1000;\r
31475 if(d.Draggables._lastScrollPointer.x<0){\r
31476 d.Draggables._lastScrollPointer.x=0;\r
31477 }\r
31478 if(d.Draggables._lastScrollPointer.y<0){\r
31479 d.Draggables._lastScrollPointer.y=0;\r
31480 }\r
31481 this.draw(d.Draggables._lastScrollPointer);\r
31482 }\r
31483 this.options.onchange(this);\r
31484 },_getWindowScroll:function(win){\r
31485 var vp,w,h;\r
31486 MochiKit.DOM.withWindow(win,function(){\r
31487 vp=MochiKit.Style.getViewportPosition(win.document);\r
31488 });\r
31489 if(win.innerWidth){\r
31490 w=win.innerWidth;\r
31491 h=win.innerHeight;\r
31492 }else{\r
31493 if(win.document.documentElement&&win.document.documentElement.clientWidth){\r
31494 w=win.document.documentElement.clientWidth;\r
31495 h=win.document.documentElement.clientHeight;\r
31496 }else{\r
31497 w=win.document.body.offsetWidth;\r
31498 h=win.document.body.offsetHeight;\r
31499 }\r
31500 }\r
31501 return {top:vp.y,left:vp.x,width:w,height:h};\r
31502 },repr:function(){\r
31503 return "["+this.__class__.NAME+", options:"+MochiKit.Base.repr(this.options)+"]";\r
31504 }};\r
31505 MochiKit.DragAndDrop.__new__=function(){\r
31506 MochiKit.Base.nameFunctions(this);\r
31507 this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)};\r
31508 };\r
31509 MochiKit.DragAndDrop.__new__();\r
31510 MochiKit.Base._exportSymbols(this,MochiKit.DragAndDrop);\r
31511 MochiKit.Base._deps("Sortable",["Base","Iter","DOM","Position","DragAndDrop"]);\r
31512 MochiKit.Sortable.NAME="MochiKit.Sortable";\r
31513 MochiKit.Sortable.VERSION="1.4.2";\r
31514 MochiKit.Sortable.__repr__=function(){\r
31515 return "["+this.NAME+" "+this.VERSION+"]";\r
31516 };\r
31517 MochiKit.Sortable.toString=function(){\r
31518 return this.__repr__();\r
31519 };\r
31520 MochiKit.Sortable.EXPORT=[];\r
31521 MochiKit.Sortable.EXPORT_OK=[];\r
31522 MochiKit.Base.update(MochiKit.Sortable,{sortables:{},_findRootElement:function(_7b7){\r
31523 while(_7b7.tagName.toUpperCase()!="BODY"){\r
31524 if(_7b7.id&&MochiKit.Sortable.sortables[_7b7.id]){\r
31525 return _7b7;\r
31526 }\r
31527 _7b7=_7b7.parentNode;\r
31528 }\r
31529 },_createElementId:function(_7b8){\r
31530 if(_7b8.id==null||_7b8.id==""){\r
31531 var d=MochiKit.DOM;\r
31532 var id;\r
31533 var _7bb=1;\r
31534 while(d.getElement(id="sortable"+_7bb)!=null){\r
31535 _7bb+=1;\r
31536 }\r
31537 d.setNodeAttribute(_7b8,"id",id);\r
31538 }\r
31539 },options:function(_7bc){\r
31540 _7bc=MochiKit.Sortable._findRootElement(MochiKit.DOM.getElement(_7bc));\r
31541 if(!_7bc){\r
31542 return;\r
31543 }\r
31544 return MochiKit.Sortable.sortables[_7bc.id];\r
31545 },destroy:function(_7bd){\r
31546 var s=MochiKit.Sortable.options(_7bd);\r
31547 var b=MochiKit.Base;\r
31548 var d=MochiKit.DragAndDrop;\r
31549 if(s){\r
31550 MochiKit.Signal.disconnect(s.startHandle);\r
31551 MochiKit.Signal.disconnect(s.endHandle);\r
31552 b.map(function(dr){\r
31553 d.Droppables.remove(dr);\r
31554 },s.droppables);\r
31555 b.map(function(dr){\r
31556 dr.destroy();\r
31557 },s.draggables);\r
31558 delete MochiKit.Sortable.sortables[s.element.id];\r
31559 }\r
31560 },create:function(_7c3,_7c4){\r
31561 _7c3=MochiKit.DOM.getElement(_7c3);\r
31562 var self=MochiKit.Sortable;\r
31563 self._createElementId(_7c3);\r
31564 _7c4=MochiKit.Base.update({element:_7c3,tag:"li",dropOnEmpty:false,tree:false,treeTag:"ul",overlap:"vertical",constraint:"vertical",containment:[_7c3],handle:false,only:false,hoverclass:null,ghosting:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:/^[^_]*_(.*)$/,onChange:MochiKit.Base.noop,onUpdate:MochiKit.Base.noop,accept:null},_7c4);\r
31565 self.destroy(_7c3);\r
31566 var _7c6={revert:true,ghosting:_7c4.ghosting,scroll:_7c4.scroll,scrollSensitivity:_7c4.scrollSensitivity,scrollSpeed:_7c4.scrollSpeed,constraint:_7c4.constraint,handle:_7c4.handle};\r
31567 if(_7c4.starteffect){\r
31568 _7c6.starteffect=_7c4.starteffect;\r
31569 }\r
31570 if(_7c4.reverteffect){\r
31571 _7c6.reverteffect=_7c4.reverteffect;\r
31572 }else{\r
31573 if(_7c4.ghosting){\r
31574 _7c6.reverteffect=function(_7c7){\r
31575 _7c7.style.top=0;\r
31576 _7c7.style.left=0;\r
31577 };\r
31578 }\r
31579 }\r
31580 if(_7c4.endeffect){\r
31581 _7c6.endeffect=_7c4.endeffect;\r
31582 }\r
31583 if(_7c4.zindex){\r
31584 _7c6.zindex=_7c4.zindex;\r
31585 }\r
31586 var _7c8={overlap:_7c4.overlap,containment:_7c4.containment,hoverclass:_7c4.hoverclass,onhover:self.onHover,tree:_7c4.tree,accept:_7c4.accept};\r
31587 var _7c9={onhover:self.onEmptyHover,overlap:_7c4.overlap,containment:_7c4.containment,hoverclass:_7c4.hoverclass,accept:_7c4.accept};\r
31588 MochiKit.DOM.removeEmptyTextNodes(_7c3);\r
31589 _7c4.draggables=[];\r
31590 _7c4.droppables=[];\r
31591 if(_7c4.dropOnEmpty||_7c4.tree){\r
31592 new MochiKit.DragAndDrop.Droppable(_7c3,_7c9);\r
31593 _7c4.droppables.push(_7c3);\r
31594 }\r
31595 MochiKit.Base.map(function(e){\r
31596 var _7cb=_7c4.handle?MochiKit.DOM.getFirstElementByTagAndClassName(null,_7c4.handle,e):e;\r
31597 _7c4.draggables.push(new MochiKit.DragAndDrop.Draggable(e,MochiKit.Base.update(_7c6,{handle:_7cb})));\r
31598 new MochiKit.DragAndDrop.Droppable(e,_7c8);\r
31599 if(_7c4.tree){\r
31600 e.treeNode=_7c3;\r
31601 }\r
31602 _7c4.droppables.push(e);\r
31603 },(self.findElements(_7c3,_7c4)||[]));\r
31604 if(_7c4.tree){\r
31605 MochiKit.Base.map(function(e){\r
31606 new MochiKit.DragAndDrop.Droppable(e,_7c9);\r
31607 e.treeNode=_7c3;\r
31608 _7c4.droppables.push(e);\r
31609 },(self.findTreeElements(_7c3,_7c4)||[]));\r
31610 }\r
31611 self.sortables[_7c3.id]=_7c4;\r
31612 _7c4.lastValue=self.serialize(_7c3);\r
31613 _7c4.startHandle=MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables,"start",MochiKit.Base.partial(self.onStart,_7c3));\r
31614 _7c4.endHandle=MochiKit.Signal.connect(MochiKit.DragAndDrop.Draggables,"end",MochiKit.Base.partial(self.onEnd,_7c3));\r
31615 },onStart:function(_7cd,_7ce){\r
31616 var self=MochiKit.Sortable;\r
31617 var _7d0=self.options(_7cd);\r
31618 _7d0.lastValue=self.serialize(_7d0.element);\r
31619 },onEnd:function(_7d1,_7d2){\r
31620 var self=MochiKit.Sortable;\r
31621 self.unmark();\r
31622 var _7d4=self.options(_7d1);\r
31623 if(_7d4.lastValue!=self.serialize(_7d4.element)){\r
31624 _7d4.onUpdate(_7d4.element);\r
31625 }\r
31626 },findElements:function(_7d5,_7d6){\r
31627 return MochiKit.Sortable.findChildren(_7d5,_7d6.only,_7d6.tree,_7d6.tag);\r
31628 },findTreeElements:function(_7d7,_7d8){\r
31629 return MochiKit.Sortable.findChildren(_7d7,_7d8.only,_7d8.tree?true:false,_7d8.treeTag);\r
31630 },findChildren:function(_7d9,only,_7db,_7dc){\r
31631 if(!_7d9.hasChildNodes()){\r
31632 return null;\r
31633 }\r
31634 _7dc=_7dc.toUpperCase();\r
31635 if(only){\r
31636 only=MochiKit.Base.flattenArray([only]);\r
31637 }\r
31638 var _7dd=[];\r
31639 MochiKit.Base.map(function(e){\r
31640 if(e.tagName&&e.tagName.toUpperCase()==_7dc&&(!only||MochiKit.Iter.some(only,function(c){\r
31641 return MochiKit.DOM.hasElementClass(e,c);\r
31642 }))){\r
31643 _7dd.push(e);\r
31644 }\r
31645 if(_7db){\r
31646 var _7e0=MochiKit.Sortable.findChildren(e,only,_7db,_7dc);\r
31647 if(_7e0&&_7e0.length>0){\r
31648 _7dd=_7dd.concat(_7e0);\r
31649 }\r
31650 }\r
31651 },_7d9.childNodes);\r
31652 return _7dd;\r
31653 },onHover:function(_7e1,_7e2,_7e3){\r
31654 if(MochiKit.DOM.isChildNode(_7e2,_7e1)){\r
31655 return;\r
31656 }\r
31657 var self=MochiKit.Sortable;\r
31658 if(_7e3>0.33&&_7e3<0.66&&self.options(_7e2).tree){\r
31659 return;\r
31660 }else{\r
31661 if(_7e3>0.5){\r
31662 self.mark(_7e2,"before");\r
31663 if(_7e2.previousSibling!=_7e1){\r
31664 var _7e5=_7e1.parentNode;\r
31665 _7e1.style.visibility="hidden";\r
31666 _7e2.parentNode.insertBefore(_7e1,_7e2);\r
31667 if(_7e2.parentNode!=_7e5){\r
31668 self.options(_7e5).onChange(_7e1);\r
31669 }\r
31670 self.options(_7e2.parentNode).onChange(_7e1);\r
31671 }\r
31672 }else{\r
31673 self.mark(_7e2,"after");\r
31674 var _7e6=_7e2.nextSibling||null;\r
31675 if(_7e6!=_7e1){\r
31676 var _7e5=_7e1.parentNode;\r
31677 _7e1.style.visibility="hidden";\r
31678 _7e2.parentNode.insertBefore(_7e1,_7e6);\r
31679 if(_7e2.parentNode!=_7e5){\r
31680 self.options(_7e5).onChange(_7e1);\r
31681 }\r
31682 self.options(_7e2.parentNode).onChange(_7e1);\r
31683 }\r
31684 }\r
31685 }\r
31686 },_offsetSize:function(_7e7,type){\r
31687 if(type=="vertical"||type=="height"){\r
31688 return _7e7.offsetHeight;\r
31689 }else{\r
31690 return _7e7.offsetWidth;\r
31691 }\r
31692 },onEmptyHover:function(_7e9,_7ea,_7eb){\r
31693 var _7ec=_7e9.parentNode;\r
31694 var self=MochiKit.Sortable;\r
31695 var _7ee=self.options(_7ea);\r
31696 if(!MochiKit.DOM.isChildNode(_7ea,_7e9)){\r
31697 var _7ef;\r
31698 var _7f0=self.findElements(_7ea,{tag:_7ee.tag,only:_7ee.only});\r
31699 var _7f1=null;\r
31700 if(_7f0){\r
31701 var _7f2=self._offsetSize(_7ea,_7ee.overlap)*(1-_7eb);\r
31702 for(_7ef=0;_7ef<_7f0.length;_7ef+=1){\r
31703 if(_7f2-self._offsetSize(_7f0[_7ef],_7ee.overlap)>=0){\r
31704 _7f2-=self._offsetSize(_7f0[_7ef],_7ee.overlap);\r
31705 }else{\r
31706 if(_7f2-(self._offsetSize(_7f0[_7ef],_7ee.overlap)/2)>=0){\r
31707 _7f1=_7ef+1<_7f0.length?_7f0[_7ef+1]:null;\r
31708 break;\r
31709 }else{\r
31710 _7f1=_7f0[_7ef];\r
31711 break;\r
31712 }\r
31713 }\r
31714 }\r
31715 }\r
31716 _7ea.insertBefore(_7e9,_7f1);\r
31717 self.options(_7ec).onChange(_7e9);\r
31718 _7ee.onChange(_7e9);\r
31719 }\r
31720 },unmark:function(){\r
31721 var m=MochiKit.Sortable._marker;\r
31722 if(m){\r
31723 MochiKit.Style.hideElement(m);\r
31724 }\r
31725 },mark:function(_7f4,_7f5){\r
31726 var d=MochiKit.DOM;\r
31727 var self=MochiKit.Sortable;\r
31728 var _7f8=self.options(_7f4.parentNode);\r
31729 if(_7f8&&!_7f8.ghosting){\r
31730 return;\r
31731 }\r
31732 if(!self._marker){\r
31733 self._marker=d.getElement("dropmarker")||document.createElement("DIV");\r
31734 MochiKit.Style.hideElement(self._marker);\r
31735 d.addElementClass(self._marker,"dropmarker");\r
31736 self._marker.style.position="absolute";\r
31737 document.getElementsByTagName("body").item(0).appendChild(self._marker);\r
31738 }\r
31739 var _7f9=MochiKit.Position.cumulativeOffset(_7f4);\r
31740 self._marker.style.left=_7f9.x+"px";\r
31741 self._marker.style.top=_7f9.y+"px";\r
31742 if(_7f5=="after"){\r
31743 if(_7f8.overlap=="horizontal"){\r
31744 self._marker.style.left=(_7f9.x+_7f4.clientWidth)+"px";\r
31745 }else{\r
31746 self._marker.style.top=(_7f9.y+_7f4.clientHeight)+"px";\r
31747 }\r
31748 }\r
31749 MochiKit.Style.showElement(self._marker);\r
31750 },_tree:function(_7fa,_7fb,_7fc){\r
31751 var self=MochiKit.Sortable;\r
31752 var _7fe=self.findElements(_7fa,_7fb)||[];\r
31753 for(var i=0;i<_7fe.length;++i){\r
31754 var _800=_7fe[i].id.match(_7fb.format);\r
31755 if(!_800){\r
31756 continue;\r
31757 }\r
31758 var _801={id:encodeURIComponent(_800?_800[1]:null),element:_7fa,parent:_7fc,children:[],position:_7fc.children.length,container:self._findChildrenElement(_7fe[i],_7fb.treeTag.toUpperCase())};\r
31759 if(_801.container){\r
31760 self._tree(_801.container,_7fb,_801);\r
31761 }\r
31762 _7fc.children.push(_801);\r
31763 }\r
31764 return _7fc;\r
31765 },_findChildrenElement:function(_802,_803){\r
31766 if(_802&&_802.hasChildNodes){\r
31767 _803=_803.toUpperCase();\r
31768 for(var i=0;i<_802.childNodes.length;++i){\r
31769 if(_802.childNodes[i].tagName.toUpperCase()==_803){\r
31770 return _802.childNodes[i];\r
31771 }\r
31772 }\r
31773 }\r
31774 return null;\r
31775 },tree:function(_805,_806){\r
31776 _805=MochiKit.DOM.getElement(_805);\r
31777 var _807=MochiKit.Sortable.options(_805);\r
31778 _806=MochiKit.Base.update({tag:_807.tag,treeTag:_807.treeTag,only:_807.only,name:_805.id,format:_807.format},_806||{});\r
31779 var root={id:null,parent:null,children:new Array,container:_805,position:0};\r
31780 return MochiKit.Sortable._tree(_805,_806,root);\r
31781 },setSequence:function(_809,_80a,_80b){\r
31782 var self=MochiKit.Sortable;\r
31783 var b=MochiKit.Base;\r
31784 _809=MochiKit.DOM.getElement(_809);\r
31785 _80b=b.update(self.options(_809),_80b||{});\r
31786 var _80e={};\r
31787 b.map(function(n){\r
31788 var m=n.id.match(_80b.format);\r
31789 if(m){\r
31790 _80e[m[1]]=[n,n.parentNode];\r
31791 }\r
31792 n.parentNode.removeChild(n);\r
31793 },self.findElements(_809,_80b));\r
31794 b.map(function(_811){\r
31795 var n=_80e[_811];\r
31796 if(n){\r
31797 n[1].appendChild(n[0]);\r
31798 delete _80e[_811];\r
31799 }\r
31800 },_80a);\r
31801 },_constructIndex:function(node){\r
31802 var _814="";\r
31803 do{\r
31804 if(node.id){\r
31805 _814="["+node.position+"]"+_814;\r
31806 }\r
31807 }while((node=node.parent)!=null);\r
31808 return _814;\r
31809 },sequence:function(_815,_816){\r
31810 _815=MochiKit.DOM.getElement(_815);\r
31811 var self=MochiKit.Sortable;\r
31812 var _816=MochiKit.Base.update(self.options(_815),_816||{});\r
31813 return MochiKit.Base.map(function(item){\r
31814 return item.id.match(_816.format)?item.id.match(_816.format)[1]:"";\r
31815 },MochiKit.DOM.getElement(self.findElements(_815,_816)||[]));\r
31816 },serialize:function(_819,_81a){\r
31817 _819=MochiKit.DOM.getElement(_819);\r
31818 var self=MochiKit.Sortable;\r
31819 _81a=MochiKit.Base.update(self.options(_819),_81a||{});\r
31820 var name=encodeURIComponent(_81a.name||_819.id);\r
31821 if(_81a.tree){\r
31822 return MochiKit.Base.flattenArray(MochiKit.Base.map(function(item){\r
31823 return [name+self._constructIndex(item)+"[id]="+encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));\r
31824 },self.tree(_819,_81a).children)).join("&");\r
31825 }else{\r
31826 return MochiKit.Base.map(function(item){\r
31827 return name+"[]="+encodeURIComponent(item);\r
31828 },self.sequence(_819,_81a)).join("&");\r
31829 }\r
31830 }});\r
31831 MochiKit.Sortable.Sortable=MochiKit.Sortable;\r
31832 MochiKit.Sortable.__new__=function(){\r
31833 MochiKit.Base.nameFunctions(this);\r
31834 this.EXPORT_TAGS={":common":this.EXPORT,":all":MochiKit.Base.concat(this.EXPORT,this.EXPORT_OK)};\r
31835 };\r
31836 MochiKit.Sortable.__new__();\r
31837 MochiKit.Base._exportSymbols(this,MochiKit.Sortable);\r
31838 if(typeof (MochiKit)=="undefined"){\r
31839 MochiKit={};\r
31840 }\r
31841 if(typeof (MochiKit.MochiKit)=="undefined"){\r
31842 MochiKit.MochiKit={};\r
31843 }\r
31844 MochiKit.MochiKit.NAME="MochiKit.MochiKit";\r
31845 MochiKit.MochiKit.VERSION="1.4.2";\r
31846 MochiKit.MochiKit.__repr__=function(){\r
31847 return "["+this.NAME+" "+this.VERSION+"]";\r
31848 };\r
31849 MochiKit.MochiKit.toString=function(){\r
31850 return this.__repr__();\r
31851 };\r
31852 MochiKit.MochiKit.SUBMODULES=["Base","Iter","Logging","DateTime","Format","Async","DOM","Selector","Style","LoggingPane","Color","Signal","Position","Visual","DragAndDrop","Sortable"];\r
31853 if(typeof (JSAN)!="undefined"||typeof (dojo)!="undefined"){\r
31854 if(typeof (dojo)!="undefined"){\r
31855 dojo.provide("MochiKit.MochiKit");\r
31856 (function(lst){\r
31857 for(var i=0;i<lst.length;i++){\r
31858 dojo.require("MochiKit."+lst[i]);\r
31859 }\r
31860 })(MochiKit.MochiKit.SUBMODULES);\r
31861 }\r
31862 if(typeof (JSAN)!="undefined"){\r
31863 (function(lst){\r
31864 for(var i=0;i<lst.length;i++){\r
31865 JSAN.use("MochiKit."+lst[i],[]);\r
31866 }\r
31867 })(MochiKit.MochiKit.SUBMODULES);\r
31868 }\r
31869 (function(){\r
31870 var _823=MochiKit.Base.extend;\r
31871 var self=MochiKit.MochiKit;\r
31872 var _825=self.SUBMODULES;\r
31873 var _826=[];\r
31874 var _827=[];\r
31875 var _828={};\r
31876 var i,k,m,all;\r
31877 for(i=0;i<_825.length;i++){\r
31878 m=MochiKit[_825[i]];\r
31879 _823(_826,m.EXPORT);\r
31880 _823(_827,m.EXPORT_OK);\r
31881 for(k in m.EXPORT_TAGS){\r
31882 _828[k]=_823(_828[k],m.EXPORT_TAGS[k]);\r
31883 }\r
31884 all=m.EXPORT_TAGS[":all"];\r
31885 if(!all){\r
31886 all=_823(null,m.EXPORT,m.EXPORT_OK);\r
31887 }\r
31888 var j;\r
31889 for(j=0;j<all.length;j++){\r
31890 k=all[j];\r
31891 self[k]=m[k];\r
31892 }\r
31893 }\r
31894 self.EXPORT=_826;\r
31895 self.EXPORT_OK=_827;\r
31896 self.EXPORT_TAGS=_828;\r
31897 }());\r
31898 }else{\r
31899 if(typeof (MochiKit.__compat__)=="undefined"){\r
31900 MochiKit.__compat__=true;\r
31901 }\r
31902 (function(){\r
31903 if(typeof (document)=="undefined"){\r
31904 return;\r
31905 }\r
31906 var _82e=document.getElementsByTagName("script");\r
31907 var _82f="http://www.w3.org/1999/xhtml";\r
31908 var _830="http://www.w3.org/2000/svg";\r
31909 var _831="http://www.w3.org/1999/xlink";\r
31910 var _832="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";\r
31911 var base=null;\r
31912 var _834=null;\r
31913 var _835={};\r
31914 var i;\r
31915 var src;\r
31916 for(i=0;i<_82e.length;i++){\r
31917 src=null;\r
31918 switch(_82e[i].namespaceURI){\r
31919 case _830:\r
31920 src=_82e[i].getAttributeNS(_831,"href");\r
31921 break;\r
31922 default:\r
31923 src=_82e[i].getAttribute("src");\r
31924 break;\r
31925 }\r
31926 if(!src){\r
31927 continue;\r
31928 }\r
31929 _835[src]=true;\r
31930 if(src.match(/MochiKit.js(\?.*)?$/)){\r
31931 base=src.substring(0,src.lastIndexOf("MochiKit.js"));\r
31932 _834=_82e[i];\r
31933 }\r
31934 }\r
31935 if(base===null){\r
31936 return;\r
31937 }\r
31938 var _838=MochiKit.MochiKit.SUBMODULES;\r
31939 for(var i=0;i<_838.length;i++){\r
31940 if(MochiKit[_838[i]]){\r
31941 continue;\r
31942 }\r
31943 var uri=base+_838[i]+".js";\r
31944 if(uri in _835){\r
31945 continue;\r
31946 }\r
31947 if(_834.namespaceURI==_830||_834.namespaceURI==_832){\r
31948 var s=document.createElementNS(_834.namespaceURI,"script");\r
31949 s.setAttribute("id","MochiKit_"+base+_838[i]);\r
31950 if(_834.namespaceURI==_830){\r
31951 s.setAttributeNS(_831,"href",uri);\r
31952 }else{\r
31953 s.setAttribute("src",uri);\r
31954 }\r
31955 s.setAttribute("type","application/x-javascript");\r
31956 _834.parentNode.appendChild(s);\r
31957 }else{\r
31958 document.write("<"+_834.nodeName+" src=\""+uri+"\" type=\"text/javascript\"><\/script>");\r
31959 }\r
31960 }\r
31961 })();\r
31962 }\r
31963 </script>\r
31964 \r
31965 \r
31966 <script id="pipio" type="x">\r
31967 var G_INCOMPAT = false;function GScript(src) {document.write('<' + 'script src="' + src + '"' +' type="text/javascript"><' + '/script>');}function GBrowserIsCompatible() {if (G_INCOMPAT) return false;return true;}function GApiInit() {if (GApiInit.called) return;GApiInit.called = true;window.GAddMessages && GAddMessages({160: '\x3cH1\x3eServer Error\x3c/H1\x3eThe server encountered a temporary error and could not complete your request.\x3cp\x3ePlease try again in a minute or so.\x3c/p\x3e',1415: '.',1416: ',',1547: 'mi',1616: 'km',4100: 'm',4101: 'ft',10018: 'Loading...',10021: 'Zoom In',10022: 'Zoom Out',10024: 'Drag to zoom',10029: 'Return to the last result',10049: 'Map',10050: 'Satellite',10093: 'Terms of Use',10111: 'Map',10112: 'Sat',10116: 'Hybrid',10117: 'Hyb',10120: 'We are sorry, but we don\x27t have maps at this zoom level for this region.\x3cp\x3eTry zooming out for a broader look.\x3c/p\x3e',10121: 'We are sorry, but we don\x27t have imagery at this zoom level for this region.\x3cp\x3eTry zooming out for a broader look.\x3c/p\x3e',10507: 'Pan left',10508: 'Pan right',10509: 'Pan up',10510: 'Pan down',10511: 'Show street map',10512: 'Show satellite imagery',10513: 'Show imagery with street names',10806: 'Click to see this area on Google Maps',10807: 'Traffic',10808: 'Show Traffic',10809: 'Hide Traffic',12150: '%1$s on %2$s',12151: '%1$s on %2$s at %3$s',12152: '%1$s on %2$s between %3$s and %4$s',10985: 'Zoom in',10986: 'Zoom out',11047: 'Center map here',11089: '\x3ca href\x3d\x22javascript:void(0);\x22\x3eZoom In\x3c/a\x3e to see traffic for this region',11259: 'Full-screen',11751: 'Show street map with terrain',11752: 'Style:',11757: 'Change map style',11758: 'Terrain',11759: 'Ter',11794: 'Show labels',11303: 'Street View Help',11274: 'To use street view, you need Adobe Flash Player version %1$d or newer.',11382: 'Get the latest Flash Player.',11314: 'We\x27re sorry, street view is currently unavailable due to high demand.\x3cbr\x3ePlease try again later!',1559: 'N',1560: 'S',1561: 'W',1562: 'E',1608: 'NW',1591: 'NE',1605: 'SW',1606: 'SE',11907: 'This image is no longer available',10041: 'Help',12471: 'Current Location',12492: 'Earth',12823: 'Google has disabled usage of the Maps API for this application. See the Terms of Service for more information: %1$s.',12822: 'http://code.google.com/apis/maps/terms.html',12915: 'Improve the map',12916: 'Google, Europa Technologies',13171: 'Hybrid 3D',0: ''});}var GLoad;(function() {var jslinker={version:"182",jsbinary:[{id:"maps2",url:"http://maps.gstatic.com/intl/en_us/mapfiles/193c/maps2/main.js"},{id:"maps2.api",url:"http://maps.gstatic.com/intl/en_us/mapfiles/193c/maps2.api/main.js"},{id:"gc",url:"http://maps.gstatic.com/intl/en_us/mapfiles/193c/gc.js"},{id:"suggest",url:"http://maps.gstatic.com/intl/en_us/mapfiles/193c/suggest/main.js"},{id:"pphov",url:"http://maps.gstatic.com/intl/en_us/mapfiles/193c/pphov.js"}]};GLoad = function(callback) {var callee = arguments.callee;var apiCallback = callback;GApiInit();var opts = {public_api:true,export_legacy_names:true,tile_override:[{maptype:0,min_zoom:7,max_zoom:7,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:366500000,lng_e7:1297000000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26"],mapprint_url:"http://www.gmaptiles.co.kr/mapprint"},{maptype:0,min_zoom:8,max_zoom:9,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1279600000}},{lo:{lat_e7:345000000,lng_e7:1279600000},hi:{lat_e7:386200000,lng_e7:1286700000}},{lo:{lat_e7:348900000,lng_e7:1286700000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:354690000,lng_e7:1293600000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26"],mapprint_url:"http://www.gmaptiles.co.kr/mapprint"},{maptype:0,min_zoom:10,max_zoom:19,rect:[{lo:{lat_e7:329890840,lng_e7:1246055600},hi:{lat_e7:386930130,lng_e7:1284960940}},{lo:{lat_e7:344646740,lng_e7:1284960940},hi:{lat_e7:386930130,lng_e7:1288476560}},{lo:{lat_e7:350277470,lng_e7:1288476560},hi:{lat_e7:386930130,lng_e7:1310531620}},{lo:{lat_e7:370277730,lng_e7:1310531620},hi:{lat_e7:386930130,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1.12\x26hl=en\x26src=api\x26"],mapprint_url:"http://www.gmaptiles.co.kr/mapprint"},{maptype:3,min_zoom:7,max_zoom:7,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:366500000,lng_e7:1297000000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26"]},{maptype:3,min_zoom:8,max_zoom:9,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1279600000}},{lo:{lat_e7:345000000,lng_e7:1279600000},hi:{lat_e7:386200000,lng_e7:1286700000}},{lo:{lat_e7:348900000,lng_e7:1286700000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:354690000,lng_e7:1293600000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26"]},{maptype:3,min_zoom:10,rect:[{lo:{lat_e7:329890840,lng_e7:1246055600},hi:{lat_e7:386930130,lng_e7:1284960940}},{lo:{lat_e7:344646740,lng_e7:1284960940},hi:{lat_e7:386930130,lng_e7:1288476560}},{lo:{lat_e7:350277470,lng_e7:1288476560},hi:{lat_e7:386930130,lng_e7:1310531620}},{lo:{lat_e7:370277730,lng_e7:1310531620},hi:{lat_e7:386930130,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1p.12\x26hl=en\x26src=api\x26"]}],jsmain:"http://maps.gstatic.com/intl/en_us/mapfiles/193c/maps2.api/main.js",sensor:"false",log_info_window_ratio:0.0099999997764825821,log_fragment_count:10,log_fragment_seed:1,obliques_urls:["http://khmdb0.google.com/kh?v=25\x26","http://khmdb1.google.com/kh?v=25\x26"],token:3404841739,jsmodule_base_url:"http://maps.gstatic.com/intl/en_us/mapfiles/193c/maps2.api",transit_allowed:false,generic_tile_urls:["http://mt0.google.com/vt?hl=en\x26src=api\x26","http://mt1.google.com/vt?hl=en\x26src=api\x26"]};var pageArgs = {};apiCallback(["http://mt0.google.com/vt/lyrs\x3dm@118\x26hl\x3den\x26src\x3dapi\x26","http://mt1.google.com/vt/lyrs\x3dm@118\x26hl\x3den\x26src\x3dapi\x26"], ["http://khm0.google.com/kh/v\x3d56\x26","http://khm1.google.com/kh/v\x3d56\x26"], ["http://mt0.google.com/vt/lyrs\x3dh@118\x26hl\x3den\x26src\x3dapi\x26","http://mt1.google.com/vt/lyrs\x3dh@118\x26hl\x3den\x26src\x3dapi\x26"],"ABQIAAAALwQiU3peqAXUIcejQciDOhQxPI_3sheoXqkznc--aWwZLihkTxQfCzOEVRK5IMcDZ5VBKRhkCfrTzg","","",true,"google.maps.",opts,["http://mt0.google.com/vt/v\x3dapp.118\x26hl\x3den\x26src\x3dapi\x26","http://mt1.google.com/vt/v\x3dapp.118\x26hl\x3den\x26src\x3dapi\x26"],jslinker,pageArgs);if (!callee.called) {callee.called = true;}}})();function GUnload() {if (window.GUnloadApi) {GUnloadApi();}}var _mIsRtl = false;var _mF = [ ,,false,,,20,4096,"bounds_cippppt.txt","cities_cippppt.txt","local/add/flagStreetView",true,,400,,,,,,,"/maps/c/ui/HovercardLauncher/dommanifest.js",,,,false,false,,,,,,true,,,,,,,,"http://maps.google.com/maps/stk/fetch",0,,true,,,,true,,,,"http://maps.google.com/maps/stk/style",,"107485602240773805043.00043dadc95ca3874f1fa",,,false,1000,,"http://cbk0.google.com",false,,"ar,iw",,,,,,,,,"http://pagead2.googlesyndication.com/pagead/imgad?id\x3dCMKp3NaV5_mE1AEQEBgQMgieroCd6vHEKA",,,false,false,,false,,,,,"SS","en,fr,ja",,,,,,,true,,,false,,,true,,,,,"","1",,false,false,,false,,,,"AU,BE,FR,NZ,US",,,false,true,500,"http://chart.apis.google.com/chart?cht\x3dqr\x26chs\x3d80x80\x26chld\x3d|0\x26chl\x3d",,,,true,,,,,false,,,false,false,true,,,true,,,,,,,,10,,true,true,,,false,30,"infowindow_v1","",false,true,22,'http://khm.google.com/vt/lbw/lyrs\x3dm\x26hl\x3den\x26','http://khm.google.com/vt/lbw/lyrs\x3ds\x26hl\x3den\x26','http://khm.google.com/vt/lbw/lyrs\x3dy\x26hl\x3den\x26','http://khm.google.com/vt/lbw/lyrs\x3dp\x26hl\x3den\x26',,,false,"US,AU,NZ,FR,DK,MX,BE,CA,DE,GB,IE,PR,PT,RU,SG,JM,HK,TW,MY,TH,AT,CZ,CN,IN,KR",,,"windows-ie,windows-firefox,windows-chrome,macos-safari,macos-firefox",true,false,20000,600,30,,,,,,false,false,,,"maps.google.com",,,true,true,"",true,,false,,true,"4:http://gt%1$d.google.com/mt?v\x3dgwm.fresh\x26","4:http://gt%1$d.google.com/mt?v\x3dgwh.fresh\x26",true,false,false,,0.25,,"107485602240773805043.0004561b22ebdc3750300",false,,,,false,,,true,,8,,,,,false,"https://cbks0.google.com",false,true,,,,,,false,,,,,,,,false,,,true,true,false,,,,true,"http://mt0.google.com/vt/ft",false,,"http://chart.apis.google.com/chart",true,,,,,,'0.25',false,true,,,,false,,2,160,,,false,true,false,,,true,false,,,45,true,,false,true,true,,,,false,false,false,,false,false,,false,,false,false,true,true,,,false,true,false,false,false,true,,"DE,CH,LI,AT,BE,PL,NL,HU,GR,HR,CZ,SK,TR,BR,EE,ES,AD,SE,NO,DK,FI,IT,VA,SM,IL,CL,MX,AR,BG,PT",false,,"25",true,25,"Home for sale",,false,false,true,false,false,false,"4:https://gt%1$d.google.com/mt?v\x3dgwm.fresh\x26","4:https://gt%1$d.google.com/mt?v\x3dgwh.fresh\x26",,,,true,"",true,true,false,true,true,,,false,"1.x",false,false,false,,true,5000,false,true,,"US",true,true,false,true,false,false,false,24,6,2,false,true,0,false,false,false,false,false,false,false,false,false,true,false,false,true,false,false,"/maps/c",false ];var _mHost = "http://maps.google.com";var _mUri = "/maps";var _mDomain = "google.com";var _mStaticPath = "http://maps.gstatic.com/intl/en_us/mapfiles/";var _mRelativeStaticPath = "/intl/en_us/mapfiles/";var _mJavascriptVersion = G_API_VERSION = "193c";var _mTermsUrl = "http://www.google.com/intl/en_us/help/terms_maps.html";var _mLocalSearchUrl = "http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js";var _mHL = "en";var _mGL = "us";var _mTrafficEnableApi = true;var _mTrafficTileServerUrls = ["http://mt0.google.com/mapstt","http://mt1.google.com/mapstt","http://mt2.google.com/mapstt","http://mt3.google.com/mapstt"];var _mTrafficCameraLayerIds = ["msid:103669521412303283270.000470c7965f9af525967","msid:111496436295867409379.00047329600bf6daab897"];var _mCityblockLatestFlashUrl = "http://maps.google.com/local_url?q=http://www.adobe.com/shockwave/download/download.cgi%3FP1_Prod_Version%3DShockwaveFlash&amp;dq=&amp;file=api&amp;v=2&amp;sensor=false&amp;key=ABQIAAAALwQiU3peqAXUIcejQciDOhQxPI_3sheoXqkznc--aWwZLihkTxQfCzOEVRK5IMcDZ5VBKRhkCfrTzg&amp;s=ANYYN7manSNIV_th6k0SFvGB4jz36is1Gg";var _mCityblockFrogLogUsage = false;var _mCityblockInfowindowLogUsage = false;var _mCityblockDrivingDirectionsLogUsage =false;var _mCityblockPrintwindowLogUsage =false;var _mCityblockPrintwindowImpressionLogUsage =false;var _mCityblockUseSsl = false;var _mAddressBookUrl = "/maps?file\x3dapi\x26v\x3d2\x26sensor\x3dfalse\x26key\x3dABQIAAAALwQiU3peqAXUIcejQciDOhQxPI_3sheoXqkznc--aWwZLihkTxQfCzOEVRK5IMcDZ5VBKRhkCfrTzg\x26ie\x3dUTF8\x26hl\x3den\x26sidr\x3d1\x26oi\x3dsl_menu_edit";var _mWizActions = {hyphenSep: 1,breakSep: 2,dir: 3,searchNear: 6,savePlace: 9};var _mIGoogleUseXSS = false;var _mIGoogleEt = "4b884af4qHpyQdiX";var _mIGoogleServerTrustedUrl = "";var _mMMEnablePanelTab = true;var _mIdcRouterPath = true;var _mIGoogleServerUntrustedUrl = "http://maps.gmodules.com";var _mMplGGeoXml = 100;var _mMplGPoly = 100;var _mMplMapViews = 100;var _mMplGeocoding = 100;var _mMplDirections = 100;var _mMplEnableGoogleLinks = true;var _mMMEnableAddContent = true;var _mMSEnablePublicView = true;var _mMSSurveyUrl = "";var _mMMLogPanelLoad = true;var _mSatelliteToken = "fzwq2qY6BqjPHQ5kJMl8N7UWue2Nynpzzfv1fw";var _mMapCopy = "Map data \x26#169;2010 ";var _mSatelliteCopy = "Imagery \x26#169;2010 ";var _mGoogleCopy = "\x26#169;2010 Google";var _mPreferMetric = false;var _mMapPrintUrl = 'http://www.google.com/mapprint';var _mSvgForced = true;var _mLogPanZoomClks = false;var _mSXBmwAssistUrl = '';var _mSXCarEnabled = true;var _mSXServices = {};var _mSXPhoneEnabled = true;var _mSXQRCodeEnabled = false;var _mLyrcItems = [{label:"12102",layer_id:"com.panoramio.all",featurelet:{feature_id:"layers.panoramio",feature_url:"http://maps.gstatic.com/mapfiles/ftr/layers/panoramio.3.js"}},{label:"12103",layer_id:"com.youtube.all",featurelet:{feature_id:"layers.youtube",feature_url:"http://maps.gstatic.com/mapfiles/ftr/layers/youtube.0.js"}},{label:"12210",layer_id:"org.wikipedia.en"},{label:"12953",layer_id:"com.google.webcams",featurelet:{feature_id:"layers.webcams",feature_url:"http://maps.gstatic.com/mapfiles/ftr/layers/webcams.0.js"}}];var _mAttrInpNumMap = {'hundred': 100,'thousand': 1000,'k': 1000,'million': 1000000,'m': 1000000,'billion': 1000000000,'b': 1000000000};var _mMSMarker = 'Placemark';var _mMSLine = 'Line';var _mMSPolygon = 'Shape';var _mMSImage = 'Image';var _mDirectionsDragging = true;var _mDirectionsEnableCityblock = true;var _mDirectionsEnableApi = true;var _mAdSenseForMapsEnable = "true";var _mAdSenseForMapsFeedUrl = "http://pagead2.googlesyndication.com/afmaps/ads";var _mReviewsWidgetUrl = "http://www.google.com/reviews/scripts/annotations_bootstrap.js?hl\x3den\x26amp;gl\x3dus";var _mLayersTileBaseUrls = ['http://mt0.google.com/mapslt','http://mt1.google.com/mapslt','http://mt2.google.com/mapslt','http://mt3.google.com/mapslt'];var _mLayersFeaturesBaseUrl = "http://mt0.google.com/mapslt/ft";var _mPerTileBase = "http://mt0.google.com/vt/pt";function GLoadMapsScript() {if (!GLoadMapsScript.called && GBrowserIsCompatible()) {GLoadMapsScript.called = true;GScript("http://maps.gstatic.com/intl/en_us/mapfiles/193c/maps2.api/main.js");}}(function() {if (!window.google) window.google = {};if (!window.google.maps) window.google.maps = {};var ns = window.google.maps;ns.BrowserIsCompatible = GBrowserIsCompatible;ns.Unload = GUnload;})();GLoadMapsScript();var _mObfuscatedGaiaId = "104607409716829822249";\r
31968 \r
31969 \r
31970 \r
31971 (function(){function aa(a){throw a;}\r
31972 var e=true,i=null,j=false,l,ba=Number.MAX_VALUE,ca="",da="*",ea=":",fa=",",ga=".";var ha="blur",ia="change",m="click",ja="contextmenu",ka="dblclick",la="focus",oa="gesturechange",pa="gestureend",qa="keyup",ra="load",sa="mousemove",ta="mousewheel",ua="DOMMouseScroll",wa="paste",xa="unload",ya="focusin",za="focusout",Aa="updatejson",Ba="construct",Ca="maptypechanged",Da="moveend",Ea="resize",Fa="zoom",Ga="zoomend",Ha="infowindowbeforeclose",Ia="infowindowprepareopen",Ja="infowindowclose",Ka="infowindowopen",La="tilesloaded",Na="visibletilesloaded",Oa="clearlisteners",Pa="softstateurlhook",\r
31973 Qa="visibilitychanged",Ra="logclick",Sa="moduleloaded";var Ta=1,Ua=2,Va=4,Wa=1,Xa=1,Za=2,$a=1,ab=2,cb=3,db=4,eb=5;var fb="mapsapi";var gb=_mF[38],hb=_mF[39],ib=_mF[57],jb=_mF[60],kb=_mF[69],lb=_mF[99],mb=_mF[100],nb=_mF[105],ob=_mF[119],pb=_mF[149],qb=_mF[150],rb=_mF[151],sb=_mF[152],tb=_mF[153],ub=_mF[154],vb=_mF[155],wb=_mF[156],xb=_mF[163],zb=_mF[166],Ab=_mF[167],Bb=_mF[168],Cb=_mF[174],Db=_mF[183],Eb=_mF[188],Fb=_mF[189],Gb=_mF[190],Hb=_mF[192],Ib=_mF[212],Jb=_mF[213],Kb=_mF[233],Lb=_mF[234],Mb=_mF[238],Nb=_mF[239],Ob=_mF[249],Pb=_mF[257],Qb=_mF[262],Rb=_mF[271],Sb=_mF[280],Ub=_mF[283],Vb=_mF[288],Wb=_mF[289],Xb=_mF[294],\r
31974 Yb=_mF[299],Zb=_mF[315],$b=_mF[316],ac=_mF[325];var bc=bc||{},cc=this,gc=function(a){if(a.hasOwnProperty&&a.hasOwnProperty(ec))return a[ec];a[ec]||(a[ec]=++fc);return a[ec]},\r
31975 ec="closure_hashCode_"+Math.floor(Math.random()*2147483648).toString(36),fc=0,n=function(a,b){var c=b||cc;if(arguments.length>2){var d=Array.prototype.slice.call(arguments,2);return function(){var f=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(f,d);return a.apply(c,f)}}else return function(){return a.apply(c,\r
31976 arguments)}},\r
31977 p=function(a,b){function c(){}\r
31978 c.prototype=b.prototype;a.sW=b.prototype;a.prototype=new c;a.prototype.constructor=a};var hc=i,ic=i,jc=i,kc=i;function lc(a,b){window[a]=b}\r
31979 function mc(a,b){for(var c=0;c<b.length;++c){var d=b[c],f=d[1];if(d[0]){var g=nc(a,d[0]);if(g.length==1)window[g[0]]=f;else{for(var h=window,k=0;k<g.length-1;++k){var o=g[k];h[o]||(h[o]={});h=h[o]}h[g[g.length-1]]=f}}if(g=d[2])for(k=0;k<g.length;++k)f.prototype[g[k][0]]=g[k][1];if(d=d[3])for(k=0;k<d.length;++k)f[d[k][0]]=d[k][1]}}\r
31980 function nc(a,b){if(b.charAt(0)=="_")return[b];return(/^[A-Z][A-Z0-9_]*$/.test(b)&&a&&a.indexOf(".")==-1?a+"_"+b:a+b).split(".")}\r
31981 function oc(a,b,c){a=nc(a,b);if(a.length==1)window[a[0]]=c;else{for(b=window;r(a)>1;){var d=a.shift();b[d]||(b[d]={});b=b[d]}b[a[0]]=c}}\r
31982 function pc(a){for(var b={},c=0,d=r(a);c<d;++c){var f=a[c];b[f[0]]=f[1]}return b}\r
31983 function sc(a,b,c,d,f,g,h,k){var o=pc(h),q=pc(d);tc(o,function(M,Y){Y=o[M];(M=q[M])&&oc(a,M,Y)});\r
31984 var s=pc(f),u=pc(b);tc(s,function(M,Y){(M=u[M])&&oc(a,M,Y)});\r
31985 b=pc(g);var H=pc(c),G={},I={};t(k,function(M){var Y=M[0];G[M[1]]=Y;t(M[2]||[],function(Ma){G[Ma]=Y});\r
31986 t(M[3]||[],function(Ma){I[Ma]=Y})});\r
31987 tc(b,function(M,Y){var Ma=H[M],O=j,va=G[M];if(!va){va=I[M];O=e}if(!va)aa(new Error("No class for method: id "+M+", name "+Ma));M=s[va];if(!M)aa(new Error("No constructor for class id: "+va));if(Ma)if(O)M[Ma]=Y;else if(O=M.prototype)O[Ma]=Y;else aa(new Error("No prototype for class id: "+va))})}\r
31988 ;function uc(a,b){this.PV=a;this.fW=b}\r
31989 ;var vc=[],wc,xc,yc=new Image,zc={};function Ac(a){if(typeof _mCityblockUseSsl=="undefined"||!_mCityblockUseSsl)yc.src=a}\r
31990 window.GVerify=Ac;var Bc=[],Cc=[],Dc,Ec,Fc,Gc,Hc=[0,90,180,270],Ic=["NORTH","EAST","SOUTH","WEST"],Jc="ab1",Kc="mt0",Lc="mt1",Mc="plt",Nc="vt1";function Oc(a,b,c,d,f,g,h,k,o,q,s,u){v(Pc,Ba,function(H){Cc.push(H)});\r
31991 if(typeof wc!="object"){o=o||{export_legacy_names:e,public_api:e};hc=d||i;ic=f||i;jc=g||i;kc=o.sensor||i;xc=!!h;Dc=o.bcp47_language_code;Ec=o.log_info_window_ratio||0;Fc=o.log_fragment_count||0;Gc=o.log_fragment_seed||0;new uc(1729,131071);Qc(Rc,i);k=k||"G";f=o.export_legacy_names;q=q||[];d=o.public_api;g=Sc(o);h=Tc(o);Uc(a,b,c,q,k,d,g,h,!!o.load_tileshift,f,o.obliques_urls||[]);vc.push(k);f&&vc.push("G");t(vc,function(H){Vc(H)});\r
31992 Wc(Xc(o.jsmain,o.module_override),Yc);(a=o.experiment_ids)&&Zc(a.join(","));if(d){$c(fb);ad(u?u.timers:undefined)}}}\r
31993 function bd(a){var b=a.getTick(Nc),c=a.getTick("jsd.drag");if(!b||!c)a.branch();if(b&&c){var d=a.getTick(Kc),f=a.getTick(Jc);a.tick(Mc,Math.max(b,c)-d+f);a.done()}}\r
31994 function ad(a){var b=new cd("apiboot");a&&b.adopt(a);b.tick(Jc);dd(b);var c=0;if(a)c=ed()-a.start;var d=v(Pc,Ba,function(f){w(d);d=i;var g=new cd("maptiles"),h={};h.start=ed()-c;g.adopt(h);if(b){h=f.O();b.Xg("ms",h.width+"x"+h.height);b.tick(Kc);g.tick(Kc);fd(f,La,function(){b.done(Lc);g.done(Lc);dd(i)});\r
31995 fd(f,Na,function(o){b.Xg("nvt",""+o);b.tick(Nc);g.tick(Nc);bd(b)});\r
31996 var k=v(x(gd),Sa,function(o){if(o=="drag"){w(k);k=i;bd(b)}})}else{g.tick(Kc);\r
31997 fd(f,La,function(){hd(g,f);g.done(Lc)});\r
31998 fd(f,Na,function(){g.tick(Nc)})}});\r
31999 setTimeout(function(){if(d){b.done();b=i;dd(i)}},\r
32000 10000)}\r
32001 function Sc(a){var b=[];if(a)if((a=a.zoom_override)&&a.length)for(var c=0;c<a.length;++c)for(var d=b[a[c].maptype]=[],f=a[c].override,g=0;g<f.length;++g){var h=f[g].rect;h=new id(new z(h.lo.lat_e7/10000000,h.lo.lng_e7/10000000),new z(h.hi.lat_e7/10000000,h.hi.lng_e7/10000000));d.push([h,f[g].max_zoom])}return b}\r
32002 function Tc(a){var b=[];if(a)if((a=a.tile_override)&&a.length)for(var c=0;c<a.length;++c){b[a[c].maptype]||(b[a[c].maptype]=[]);b[a[c].maptype].push({minZoom:a[c].min_zoom,maxZoom:a[c].max_zoom,rect:a[c].rect,uris:a[c].uris,mapprintUrl:a[c].mapprint_url})}return b}\r
32003 function jd(){for(var a=[],b=x(kd).Z,c=0,d=r(b);c<d;++c){var f=b[c],g=f.Wb;if(g&&!g.__tag__){g.__tag__=e;A(g,Oa);a.push(g)}f.remove()}for(c=0;c<r(a);++c){g=a[c];if(g.__tag__)try{delete g.__tag__;delete g.__e_}catch(h){g.__tag__=j;g.__e_=i}}x(kd).clear();ld(document.body)}\r
32004 function Uc(a,b,c,d,f,g,h,k,o,q,s){var u=new md(_mMapCopy),H=new md(_mSatelliteCopy),G=new md(_mMapCopy),I=new md;lc("GAddCopyright",nd(u,H,G));window.GAppFeatures=od;var M=[];wc=[];M.push(["DEFAULT_MAP_TYPES",wc]);var Y=new pd(B(30,30)+1),Ma=f=="G";function O(qc,ag,kf,rh){zc[kf]=qc;ag&&wc.push(qc);M.push([kf,qc]);rh&&Ma&&M.push([rh,qc])}\r
32005 D.initializeLowBandwidthMapLayers();var va,Ya,Tb;if(r(a)){va=qd(a,u,Y,h,k,g);O(va,e,"NORMAL_MAP","MAP_TYPE")}if(r(b)){var dc=[];ac&&t(Hc,function(qc){dc.push(new rd(30,qc))});\r
32006 a=new sd;Ya=td(b,H,Y,h,a);O(Ya,e,"SATELLITE_MAP","SATELLITE_TYPE");b=[];if(ac)b=ud(s,I,a,dc,M);if(o){var rc=Ya.getTileLayers()[0];vd("tlsf",Xa,function(qc){qc(rc)});\r
32007 lc("GTileShiftUpdateOffset",wd("tlsf",Za))}if(r(c)){o=new sd;Tb=xd(c,u,Y,h,k,Ya,g,o);ac&&yd(c,u,o,b,M);O(Tb,e,"HYBRID_MAP","HYBRID_TYPE")}}r(d)&&O(zd(d,G,Y,h,k),!g,"PHYSICAL_MAP");c=!g&&nb&&E.bC(xb);O(Ad(),c,"SATELLITE_3D_MAP");O(Bd(),c,"HYBRID_3D_MAP");if(g&&Eb&&va&&Ya&&Tb)M=M.concat(Cd(va,Ya,Tb,Y));mc(f,M);q&&mc("G",M)}\r
32008 function qd(a,b,c,d,f,g){var h={shortName:F(10111),urlArg:"m",errorMessage:F(10120),alt:F(10511),tileSize:256,lbw:D.mapTileLayer},k=i;k=Rb?new Dd(a,b,17):new Ed(a,b,17);k.ip(d[0]);k.fp(Fd(f[0],c,256,17));!g&&Wb&&Gd(k);return new Hd([k],c,F(10049),h)}\r
32009 function td(a,b,c,d,f){f={shortName:F(10112),urlArg:"k",textColor:"white",linkColor:"white",errorMessage:F(10121),alt:F(10512),lbw:D.satTileLayer,maxZoomEnabled:e,rmtc:f,isDefault:e};a=new Id(a,b,19,_mSatelliteToken,_mDomain);a.ip(d[1]);return new Hd([a],c,F(10050),f)}\r
32010 function ud(a,b,c,d,f){var g=[];t(Hc,function(h,k){var o=Jd(a,function(s){return s+"deg="+h+"&"});\r
32011 o=new Id(o,b,21,_mSatelliteToken,_mDomain);var q={shortName:"Aer",textColor:"white",linkColor:"white",errorMessage:F(10121),alt:F(10512),heading:h,rmtc:c};o=new Hd([o],d[k],"Aerial",q);g.push(o);f.push(["AERIAL_"+Ic[k]+"_MAP",o]);f.push(["OBLIQUE_SATELLITE_"+Ic[k]+"_MAP",o])});\r
32012 f.push(["AERIAL_MAP",g[0]]);return g}\r
32013 function xd(a,b,c,d,f,g,h,k){k={shortName:F(10117),urlArg:"h",textColor:"white",linkColor:"white",errorMessage:F(10121),alt:F(10513),tileSize:256,lbw:D.hybTileLayer,maxZoomEnabled:e,rmtc:k,isDefault:e};g=g.getTileLayers()[0];var o=i;o=Rb?new Dd(a,b,17,e):new Ed(a,b,17,e);o.ip(d[2]);o.fp(Fd(f[2],c,256,17));!h&&Wb&&Gd(o);return new Hd([g,o],c,F(10116),k)}\r
32014 function yd(a,b,c,d,f){var g=[];t(Hc,function(h,k){var o=d[k].getTileLayers()[0],q=Jd(a,function(H){return H+"opts=o&deg="+h+"&"}),\r
32015 s=i;s=Rb?new Dd(q,b,21,e):new Ed(q,b,21,e);q={shortName:"Aer Hyb",textColor:"white",linkColor:"white",errorMessage:F(10121),alt:F(10513),heading:h,rmtc:c};var u=d[k].getProjection();o=new Hd([o,s],u,"Aerial Hybrid",q);g.push(o);f.push(["AERIAL_HYBRID_"+Ic[k]+"_MAP",o]);f.push(["OBLIQUE_HYBRID_"+Ic[k]+"_MAP",o])});\r
32016 f.push(["AERIAL_HYBRID_MAP",g[0]]);return g}\r
32017 function zd(a,b,c,d,f){var g={shortName:F(11759),urlArg:"p",errorMessage:F(10120),alt:F(11751),tileSize:256,lbw:D.terTileLayer};a=new Ed(a,b,15,j);a.ip(d[3]);a.fp(Fd(f[3],c,256,15));return new Hd([a],c,F(11758),g)}\r
32018 function Fd(a,b,c,d){for(var f=[],g=0;g<r(a);++g){for(var h={minZoom:a[g].minZoom||1,maxZoom:a[g].maxZoom||d,uris:a[g].uris,rect:[]},k=0;k<r(a[g].rect);++k){h.rect[k]=[];for(var o=h.minZoom;o<=h.maxZoom;++o){var q=b.fromLatLngToPixel(new z(a[g].rect[k].lo.lat_e7/10000000,a[g].rect[k].lo.lng_e7/10000000),o),s=b.fromLatLngToPixel(new z(a[g].rect[k].hi.lat_e7/10000000,a[g].rect[k].hi.lng_e7/10000000),o);h.rect[k][o]={n:Kd(s.y/c),w:Kd(q.x/c),s:Kd(q.y/c),e:Kd(s.x/c)}}}f.push(h)}return f?new Ld(f):i}\r
32019 function Md(a,b,c){var d=B(30,30),f=new pd(d+1),g=new Hd([],f,a,{maxResolution:d,urlArg:b});t(wc,function(h){h.getUrlArg()==c&&g.YS(h)});\r
32020 return g}\r
32021 var Nd;function Ad(){return Nd=Md(F(12492),"e","k")}\r
32022 var Od;function Bd(){return Od=Md(F(13171),"f","h")}\r
32023 function nd(a,b,c){return function(d,f,g,h,k,o,q,s,u,H,G){var I=a;if(d=="k")I=b;else if(d=="p")I=c;d=new id(new z(g,h),new z(k,o));I.Oi(new Qd(f,d,q,s,u,H,G))}}\r
32024 function Vc(a){t(Bc,function(b){b(a)})}\r
32025 window.GUnloadApi=jd;function Rd(a){if(!a)return"";var b="";if(a.nodeType==3||a.nodeType==4||a.nodeType==2)b+=a.nodeValue;else if(a.nodeType==1||a.nodeType==9||a.nodeType==11)for(var c=0;c<r(a.childNodes);++c)b+=arguments.callee(a.childNodes[c]);return b}\r
32026 function Sd(a){if(typeof ActiveXObject!="undefined"&&typeof GetObject!="undefined"){var b=new ActiveXObject("Microsoft.XMLDOM");b.loadXML(a);return b}if(typeof DOMParser!="undefined")return(new DOMParser).parseFromString(a,"text/xml");return J("div",i)}\r
32027 function Td(a){return new Ud(a)}\r
32028 function Ud(a){this.qH=a}\r
32029 Ud.prototype.$U=function(a,b){if(E.type==1){Vd(b,a.transformNode(this.qH));return e}else if(XSLTProcessor&&XSLTProcessor.prototype.importStylesheet){var c=new XSLTProcessor;c.importStylesheet(this.qH);a=c.transformToFragment(a,window.document);Wd(b);b.appendChild(a);return e}else return j};function Xd(){return typeof Dc=="string"?Dc:"en"}\r
32030 ;var Yd={},Zd="__ticket__";function $d(a,b,c){this.AG=a;this.FU=b;this.zG=c}\r
32031 $d.prototype.toString=function(){return""+this.zG+"-"+this.AG};\r
32032 $d.prototype.sc=function(){return this.FU[this.zG]==this.AG};\r
32033 function ae(a){var b=arguments.callee;if(!b.Lq)b.Lq=1;var c=(a||"")+b.Lq;b.Lq++;return c}\r
32034 function be(a,b){var c;if(typeof a=="string"){c=Yd;a=a}else{c=a;a=(b||"")+Zd}c[a]||(c[a]=0);b=++c[a];return new $d(b,c,a)}\r
32035 function ce(a){if(typeof a=="string")Yd[a]&&Yd[a]++;else a[Zd]&&a[Zd]++}\r
32036 ;var de=window._mStaticPath,Rc=de+"transparent.png",ee=Math.PI,fe=Math.abs,ge=Math.asin,he=Math.atan,je=Math.atan2,ke=Math.ceil,le=Math.cos,Kd=Math.floor,B=Math.max,me=Math.min,ne=Math.pow,K=Math.round,oe=Math.sin,pe=Math.sqrt,qe=Math.tan,re="function";function r(a){return a?a.length:0}\r
32037 function se(a,b,c){if(b!=i)a=B(a,b);if(c!=i)a=me(a,c);return a}\r
32038 function te(a,b,c){if(a==Number.POSITIVE_INFINITY)return c;else if(a==Number.NEGATIVE_INFINITY)return b;for(;a>c;)a-=c-b;for(;a<b;)a+=c-b;return a}\r
32039 function ue(a){return typeof a!="undefined"}\r
32040 function ve(a){return typeof a=="number"}\r
32041 function we(a){return typeof a=="string"}\r
32042 function xe(a,b,c){for(var d=0,f=0;f<r(a);++f)if(a[f]===b||c&&a[f]==b){a.splice(f--,1);d++}return d}\r
32043 function ye(a,b,c){for(var d=0;d<r(a);++d)if(a[d]===b||c&&a[d]==b)return j;a.push(b);return e}\r
32044 function ze(a,b,c){for(var d=0;d<r(a);++d)if(c(a[d],b)){a.splice(d,0,b);return e}a.push(b);return e}\r
32045 function Ce(a,b){for(var c=0;c<a.length;++c)if(a[c]==b)return e;return j}\r
32046 function De(a,b,c){tc(b,function(d){a[d]=b[d]},\r
32047 c)}\r
32048 function Ee(a){for(var b in a)return j;return e}\r
32049 function Fe(a){for(var b in a)delete a[b]}\r
32050 function Ge(a,b,c){t(c,function(d){if(!b.hasOwnProperty||b.hasOwnProperty(d))a[d]=b[d]})}\r
32051 function t(a,b){if(a)for(var c=0,d=r(a);c<d;++c)b(a[c],c)}\r
32052 function tc(a,b,c){if(a)for(var d in a)if(c||!a.hasOwnProperty||a.hasOwnProperty(d))b(d,a[d])}\r
32053 function He(a,b){var c=0;tc(a,function(){++c},\r
32054 b);return c}\r
32055 function Ie(a,b){if(a.hasOwnProperty)return a.hasOwnProperty(b);else{for(var c in a)if(c==b)return e;return j}}\r
32056 function Je(a,b,c){for(var d,f=r(a),g=0;g<f;++g){var h=b.call(a[g]);d=g==0?h:c(d,h)}return d}\r
32057 function Jd(a,b){for(var c=[],d=r(a),f=0;f<d;++f)c.push(b(a[f],f));return c}\r
32058 function Ke(a,b,c,d){c=Le(c,0);var f=r(b);d=Le(d,f);for(c=c;c<d;++c)a.push(b[c])}\r
32059 function Me(a){return Array.prototype.slice.call(a,0)}\r
32060 function Ne(){return j}\r
32061 function Oe(){return e}\r
32062 function Pe(){return i}\r
32063 function Qe(a){return a*(ee/180)}\r
32064 function Re(a){return a/(ee/180)}\r
32065 function Se(a,b,c){return fe(a-b)<=(c||1.0E-9)}\r
32066 var Te="&amp;",Ue="&lt;",Ve="&gt;",We="&",Xe="<",Ye=">",Ze=/&/g,$e=/</g,af=/>/g;function cf(a){if(a.indexOf(We)!=-1)a=a.replace(Ze,Te);if(a.indexOf(Xe)!=-1)a=a.replace($e,Ue);if(a.indexOf(Ye)!=-1)a=a.replace(af,Ve);return a}\r
32067 function df(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")}\r
32068 function ef(a,b){var c=r(a),d=r(b);return d==0||d<=c&&a.lastIndexOf(b)==c-d}\r
32069 function ff(a){a.length=0}\r
32070 function gf(){return Function.prototype.call.apply(Array.prototype.slice,arguments)}\r
32071 function hf(a){return parseInt(a,10)}\r
32072 function jf(a){return parseInt(a,16)}\r
32073 function Le(a,b){return ue(a)&&a!=i?a:b}\r
32074 function L(a,b,c){return(c?c:de)+a+(b?".gif":".png")}\r
32075 function N(){}\r
32076 function lf(a,b){if(a)return function(){--a||b()};\r
32077 else{b();return N}}\r
32078 function mf(a){var b=[],c=i;return function(d){d=d||N;if(c)d.apply(this,c);else{b.push(d);r(b)==1&&a.call(this,function(){for(c=Me(arguments);r(b);)b.shift().apply(this,c)})}}}\r
32079 function nf(a){return!!a&&(a instanceof Array||Object.prototype.toString.call(a)=="[object Array]")}\r
32080 function x(a){if(!a.Wb)a.Wb=new a;return a.Wb}\r
32081 function of(a,b,c){var d=[];tc(a,function(f,g){d.push(f+b+g)});\r
32082 return d.join(c)}\r
32083 function pf(){var a=Me(arguments);a.unshift(i);return qf.apply(i,a)}\r
32084 function rf(a,b){var c=gf(arguments,2);return function(){var d=Me(arguments);if(r(d)<b)d.length=b;Array.prototype.splice.apply(d,Array.prototype.concat.apply([],[[b,0],c]));return a.apply(this,d)}}\r
32085 function qf(a,b){if(arguments.length>2){var c=gf(arguments,2);return function(){return b.apply(a||this,arguments.length>0?c.concat(Me(arguments)):c)}}else return function(){return b.apply(a||this,\r
32086 arguments)}}\r
32087 function sf(){return qf.apply(i,arguments)}\r
32088 function tf(){return qf.apply(i,arguments)}\r
32089 function uf(a,b){var c=gf(arguments,2);return function(){return b.apply(a,c)}}\r
32090 ;var vf=["opera","msie","chrome","applewebkit","firefox","camino","mozilla"],wf=["x11;","macintosh","windows"];\r
32091 function xf(a){this.agent=a;this.cpu=this.os=this.type=-1;this.revision=this.version=0;a=a.toLowerCase();for(var b=0;b<r(vf);b++){var c=vf[b];if(a.indexOf(c)!=-1){this.type=b;if((new RegExp(c+"[ /]?([0-9]+(.[0-9]+)?)")).exec(a))this.version=parseFloat(RegExp.$1);break}}if(this.type==6)if(/^Mozilla\/.*Gecko\/.*(Minefield|Shiretoko)[ \/]?([0-9]+(.[0-9]+)?)/.exec(this.agent)){this.type=4;this.version=parseFloat(RegExp.$2)}for(b=0;b<r(wf);b++){c=wf[b];if(a.indexOf(c)!=-1){this.os=b;break}}if(this.os==\r
32092 1&&a.indexOf("intel")!=-1)this.cpu=0;if(this.Na()&&/\brv:\s*(\d+\.\d+)/.exec(a))this.revision=parseFloat(RegExp.$1)}\r
32093 l=xf.prototype;l.Na=function(){return this.type==4||this.type==6||this.type==5};\r
32094 l.pb=function(){return this.type==2||this.type==3};\r
32095 l.Jn=function(){return this.type==1&&this.version<7};\r
32096 l.gO=function(){return this.type==4&&this.version>=3};\r
32097 l.ox=function(){return this.Jn()};\r
32098 l.px=function(){if(this.type==1)return e;if(this.pb())return j;if(this.Na())return!this.revision||this.revision<1.9;return e};\r
32099 l.aC=function(){return this.type==1?"CSS1Compat"!=this.qA():j};\r
32100 l.qA=function(){return Le(document.compatMode,"")};\r
32101 l.Dh=function(){return this.type==3&&(this.agent.indexOf("iPhone")!=-1||this.agent.indexOf("iPod")!=-1||this.agent.indexOf("Android")!=-1)};\r
32102 l.bC=function(a){var b=this.qM()+"-"+this.QM();return a.indexOf(b)!=-1};\r
32103 var yf={};yf[2]="windows";yf[1]="macos";yf[0]="unix";yf[-1]="other";var zf={};zf[1]="ie";zf[4]="firefox";zf[2]="chrome";zf[3]="safari";zf[0]="opera";zf[5]="camino";zf[6]="mozilla";zf[-1]="other";xf.prototype.qM=function(){return yf[this.os]};\r
32104 xf.prototype.QM=function(){return zf[this.type]};\r
32105 var E=new xf(navigator.userAgent);function J(a,b,c,d,f,g,h){var k;if(E.type==1&&g){a="<"+a+" ";for(k in g)a+=k+"='"+g[k]+"' ";a+=">";g=i}a=Af(b).createElement(a);if(g)for(k in g)a.setAttribute(k,g[k]);c&&Bf(a,c,h);d&&Cf(a,d);b&&!f&&Df(b,a);return a}\r
32106 function Ef(a,b){a=Af(b).createTextNode(a);b&&Df(b,a);return a}\r
32107 function Af(a){return a?a.nodeType==9?a:a.ownerDocument||document:document}\r
32108 function Q(a){return K(a)+"px"}\r
32109 function Ff(a){return a+"em"}\r
32110 function Bf(a,b,c){Gf(a);c?Hf(a,b.x):If(a,b.x);Jf(a,b.y)}\r
32111 function If(a,b){a.style.left=Q(b)}\r
32112 function Hf(a,b){a.style.right=Q(b)}\r
32113 function Jf(a,b){a.style.top=Q(b)}\r
32114 function Cf(a,b){a=a.style;a.width=b.getWidthString();a.height=b.getHeightString()}\r
32115 function Kf(a){return new R(a.offsetWidth,a.offsetHeight)}\r
32116 function Lf(a,b){a.style.width=Q(b)}\r
32117 function Mf(a,b){a.style.height=Q(b)}\r
32118 function Nf(a,b){return b&&Af(b)?Af(b).getElementById(a):document.getElementById(a)}\r
32119 function Of(a,b){a.style.display=b?"":"none"}\r
32120 function Pf(a,b){a.style.visibility=b?"":"hidden"}\r
32121 function Qf(a){Of(a,j)}\r
32122 function Rf(a){Of(a,e)}\r
32123 function Sf(a){return a.style.display=="none"}\r
32124 function Tf(a){Pf(a,j)}\r
32125 function Uf(a){Pf(a,e)}\r
32126 function Vf(a){a.style.visibility="visible"}\r
32127 function Wf(a){a.style.position="relative"}\r
32128 function Gf(a){a.style.position="absolute"}\r
32129 function Xf(a){Yf(a,"hidden")}\r
32130 function Zf(a){Yf(a,"auto")}\r
32131 function Yf(a,b){a.style.overflow=b}\r
32132 function $f(a,b){if(ue(b))try{a.style.cursor=b}catch(c){b=="pointer"&&$f(a,"hand")}}\r
32133 function bg(a){cg(a,"gmnoscreen");dg(a,"gmnoprint")}\r
32134 function eg(a){cg(a,"gmnoprint");dg(a,"gmnoscreen")}\r
32135 function fg(a,b){a.style.zIndex=b}\r
32136 function ed(){return(new Date).getTime()}\r
32137 function Df(a,b){a.appendChild(b)}\r
32138 function gg(a){if(E.Na())a.style.MozUserSelect="none";else if(E.pb())a.style.KhtmlUserSelect="none";else{a.unselectable="on";a.onselectstart=Ne}}\r
32139 function hg(a,b){if(E.type==1)a.style.filter="alpha(opacity="+K(b*100)+")";else a.style.opacity=b}\r
32140 function ig(a){var b=Af(a);if(a.currentStyle)return a.currentStyle;if(b.defaultView&&b.defaultView.getComputedStyle)return b.defaultView.getComputedStyle(a,"")||{};return a.style}\r
32141 function jg(a,b){var c=hf(b);if(!isNaN(c)){if(b==c||b==c+"px")return c;if(a){c=a.style;var d=c.width;c.width=b;a=a.clientWidth;c.width=d;return a}}return 0}\r
32142 function kg(a,b){b=ig(a)[b];return jg(a,b)}\r
32143 function lg(a){return a.replace(/%3A/gi,":").replace(/%20/g,"+").replace(/%2C/gi,",")}\r
32144 function mg(a,b){var c=[];tc(a,function(d,f){f!=i&&c.push(encodeURIComponent(d)+"="+lg(encodeURIComponent(f)))});\r
32145 a=c.join("&");return b?a?"?"+a:"":a}\r
32146 function ng(a){a=a.split("&");for(var b={},c=0;c<r(a);c++){var d=a[c].split("=");if(r(d)==2){var f=d[1].replace(/,/gi,"%2C").replace(/[+]/g,"%20").replace(/:/g,"%3A");try{b[decodeURIComponent(d[0])]=decodeURIComponent(f)}catch(g){}}}return b}\r
32147 function og(a){var b=a.indexOf("?");return b!=-1?a.substr(b+1):""}\r
32148 function pg(a){try{return eval("["+a+"][0]")}catch(b){return i}}\r
32149 function qg(a,b,c,d){rg(d);return window.setTimeout(function(){b.call(a);sg(d)},\r
32150 c)}\r
32151 ;function Qd(){Qd.g.apply(this,arguments)}\r
32152 function tg(){tg.g.apply(this,arguments)}\r
32153 function md(){md.g.apply(this,arguments)}\r
32154 ;Qd.g=function(a,b,c,d,f,g,h){this.id=a;this.minZoom=c;this.bounds=b;this.text=d;this.maxZoom=f;this.kJ=g;this.featureTriggers=h};\r
32155 md.g=function(a){this.Nw=[];this.fh={};this.qR=a||""};\r
32156 md.prototype.Oi=function(a){if(this.fh[a.id])return j;for(var b=this.Nw,c=a.minZoom;r(b)<=c;)b.push([]);b[c].push(a);this.fh[a.id]=1;A(this,"newcopyright",a);return e};\r
32157 md.prototype.as=function(a){for(var b=[],c=this.Nw,d=0;d<r(c);d++)for(var f=0;f<r(c[d]);f++){var g=c[d][f];g.bounds.contains(a)&&b.push(g)}return b};\r
32158 tg.g=function(a,b,c){this.prefix=a;this.copyrightTexts=b;this.featureTriggers=c};\r
32159 tg.prototype.toString=function(){return this.prefix+" "+this.copyrightTexts.join(", ")};\r
32160 md.prototype.kA=function(a,b){for(var c={},d={},f=[],g=[],h=this.Nw,k=i,o=me(b,r(h)-1);o>=0;o--){for(var q=h[o],s=j,u=j,H=0;H<r(q);H++){var G=q[H];if(!(typeof G.maxZoom=="number"&&G.maxZoom<b)){var I=G.bounds,M=G.text;if(I.intersects(a)){if(M&&!c[M]){f.push(M);c[M]=1}t(G.featureTriggers||[],function(Y){if(!d[Y[0]]&&(r(Y)<2||b>=Y[1])&&(r(Y)<3||b<=Y[2])){g.push(Y[0]);d[Y[0]]=1}});\r
32161 if(G.kJ)u=e;else if(k===i)k=new id(I.nb(),I.mb());else k.union(I);if(!u&&k.kc(a))s=e}}}if(s)break}return[f,g]};\r
32162 md.prototype.getCopyrights=function(a,b){return this.kA(a,b)[0]};\r
32163 md.prototype.$r=function(a,b){a=this.kA(a,b);if(r(a[0])>0||r(a[1])>0)return new tg(this.qR,a[0],a[1]);return i};var ug="Status",vg="code";function wg(){wg.g.apply(this,arguments)}\r
32164 ;var xg="_xdc_";wg.g=function(a,b,c){c=c||{};this.Mb=a;this.lj=b;this.LG=Le(c.timeout,10000);this.EI=Le(c.callback,"callback");this.FI=Le(c.suffix,"");this.rD=Le(c.neat,j);this.mT=Le(c.locale,j);this.DI=c.callbackNameGenerator||n(this.TJ,this)};\r
32165 var yg=0;\r
32166 wg.prototype.send=function(a,b,c,d,f){f=f||{};var g=this.lj.getElementsByTagName("head")[0];if(g){rg(d,"xdc0");var h=this.DI(a);window[xg]||(window[xg]={});var k=this.lj.createElement("script"),o=0;if(this.LG>0){o=zg(h,k,a,c,d);o=window.setTimeout(o,this.LG)}c="?";if(this.Mb&&this.Mb.indexOf("?")!=-1)c="&";a=this.Mb+c+Ag(a,this.rD);if(this.mT){a=a;c=this.rD;var q={};q.hl=window._mHL;q.country=window._mGL;a=a+"&"+Ag(q,c)}if(b){b=Bg(h,k,b,o,d);window[xg][h]=b;a+="&"+this.EI+"="+xg+"."+h}k.setAttribute("type","text/javascript");\r
32167 k.setAttribute("id",h);k.setAttribute("charset","UTF-8");k.setAttribute("src",a);g.appendChild(k);f.id=h;f.timeout=o;f.stats=d}else c&&c(a)};\r
32168 wg.prototype.cancel=function(a){var b=a.id,c=a.timeout;a=a.stats;c&&window.clearTimeout(c);if(b)if((c=this.lj.getElementById(b))&&c.tagName=="SCRIPT"&&typeof window[xg][b]=="function"){Cg(c);delete window[xg][b];sg(a,"xdcc")}};\r
32169 wg.prototype.TJ=function(){return"_"+(yg++).toString(36)+ed().toString(36)+this.FI};\r
32170 function zg(a,b,c,d,f){return function(){Dg(a,b);Eg(f,"xdce");d&&d(c);sg(f)}}\r
32171 function Bg(a,b,c,d,f){return function(g){window.clearTimeout(d);Dg(a,b);Eg(f,"xdc1");c(g);sg(f)}}\r
32172 function Dg(a,b){window.setTimeout(function(){Cg(b);window[xg][a]&&delete window[xg][a]},\r
32173 0)}\r
32174 function Ag(a,b){var c=[];tc(a,function(d,f){var g=[f];if(nf(f))g=f;t(g,function(h){if(h!=i){h=b?lg(encodeURIComponent(h)):encodeURIComponent(h);c.push(encodeURIComponent(d)+"="+h)}})});\r
32175 return c.join("&")}\r
32176 ;function Fg(){}\r
32177 ;function Gg(a,b,c){c=c&&c.dynamicCss;var d=J("style",i);d.setAttribute("type","text/css");if(d.styleSheet)d.styleSheet.cssText=b;else{b=document.createTextNode(b);d.appendChild(b)}a:{d.originalName=a;b=Hg();for(var f=b.getElementsByTagName(d.nodeName),g=0;g<r(f);g++){var h=f[g],k=h.originalName;if(!(!k||k<a)){if(k==a)c&&h.parentNode.replaceChild(d,h);else h.parentNode.insertBefore(d,h);break a}}b.appendChild(d)}}\r
32178 window.__gcssload__=Gg;function Ig(a,b){(new Jg(b)).run(a)}\r
32179 function Jg(a){this.Ge=a}\r
32180 Jg.prototype.run=function(a){for(this.Xc=[a];r(this.Xc);)this.BR(this.Xc.shift())};\r
32181 Jg.prototype.BR=function(a){this.Ge(a);for(a=a.firstChild;a;a=a.nextSibling)a.nodeType==1&&this.Xc.push(a)};\r
32182 function Kg(a,b,c){a.setAttribute(b,c)}\r
32183 function Lg(a,b){a.removeAttribute(b)}\r
32184 function dg(a,b){var c=a.className?String(a.className):"";if(c){c=c.split(/\s+/);for(var d=j,f=0;f<r(c);++f)if(c[f]==b){d=e;break}d||c.push(b);a.className=c.join(" ")}else a.className=b}\r
32185 function cg(a,b){var c=a.className?String(a.className):"";if(!(!c||c.indexOf(b)==-1)){c=c.split(/\s+/);for(var d=0;d<r(c);++d)c[d]==b&&c.splice(d--,1);a.className=c.join(" ")}}\r
32186 function Mg(a){return a.parentNode.removeChild(a)}\r
32187 function Hg(){if(!Ng){var a=document.getElementsByTagName("base")[0];if(!document.body&&a&&r(a.childNodes))return a;Ng=document.getElementsByTagName("head")[0]}return Ng}\r
32188 var Ng;function Og(){Og.g.apply(this,arguments)}\r
32189 ;function Cg(a){if(a.parentNode){a.parentNode.removeChild(a);Pg(a)}ld(a)}\r
32190 function ld(a){Ig(a,function(b){if(b.nodeType!=3){b.onselectstart=i;b.imageFetcherOpts=i}})}\r
32191 function Wd(a){for(var b;b=a.firstChild;){Pg(b);a.removeChild(b)}}\r
32192 function Vd(a,b){if(a.innerHTML!=b){Wd(a);a.innerHTML=b}}\r
32193 function Qg(a){if((a=a.srcElement||a.target)&&a.nodeType==3)a=a.parentNode;return a}\r
32194 function Pg(a,b){Ig(a,function(c){Rg(c,b)})}\r
32195 function Sg(a){a.type==m&&A(document,Ra,a);if(E.type==1){a.cancelBubble=e;a.returnValue=j}else{a.preventDefault();a.stopPropagation()}}\r
32196 function Tg(a){a.type==m&&A(document,Ra,a);if(E.type==1)a.cancelBubble=e;else a.stopPropagation()}\r
32197 function Ug(a){if(E.type==1)a.returnValue=j;else a.preventDefault()}\r
32198 ;var Vg="pixels";function S(a,b){this.x=a;this.y=b}\r
32199 var Xg=new S(0,0);S.prototype.toString=function(){return"("+this.x+", "+this.y+")"};\r
32200 S.prototype.equals=function(a){if(!a)return j;return a.x==this.x&&a.y==this.y};\r
32201 function R(a,b,c,d){this.width=a;this.height=b;this.CV=c||"px";this.uN=d||"px"}\r
32202 var Yg=new R(0,0);R.prototype.getWidthString=function(){return this.width+this.CV};\r
32203 R.prototype.getHeightString=function(){return this.height+this.uN};\r
32204 R.prototype.toString=function(){return"("+this.width+", "+this.height+")"};\r
32205 R.prototype.equals=function(a){if(!a)return j;return a.width==this.width&&a.height==this.height};\r
32206 function Zg(a){this.minX=this.minY=ba;this.maxX=this.maxY=-ba;var b=arguments;if(r(a))t(a,n(this.extend,this));else if(r(b)>=4){this.minX=b[0];this.minY=b[1];this.maxX=b[2];this.maxY=b[3]}}\r
32207 l=Zg.prototype;l.min=function(){return new S(this.minX,this.minY)};\r
32208 l.max=function(){return new S(this.maxX,this.maxY)};\r
32209 l.O=function(){return new R(this.maxX-this.minX,this.maxY-this.minY)};\r
32210 l.mid=function(){return new S((this.minX+this.maxX)/2,(this.minY+this.maxY)/2)};\r
32211 l.toString=function(){return"("+this.min()+", "+this.max()+")"};\r
32212 l.ma=function(){return this.minX>this.maxX||this.minY>this.maxY};\r
32213 l.kc=function(a){var b=this;return b.minX<=a.minX&&b.maxX>=a.maxX&&b.minY<=a.minY&&b.maxY>=a.maxY};\r
32214 l.Kf=function(a){var b=this;return b.minX<=a.x&&b.maxX>=a.x&&b.minY<=a.y&&b.maxY>=a.y};\r
32215 l.jJ=function(a){return this.maxX>=a.x&&this.minY<=a.y&&this.maxY>=a.y};\r
32216 l.extend=function(a){if(this.ma()){this.minX=this.maxX=a.x;this.minY=this.maxY=a.y}else{this.minX=me(this.minX,a.x);this.maxX=B(this.maxX,a.x);this.minY=me(this.minY,a.y);this.maxY=B(this.maxY,a.y)}};\r
32217 l.EK=function(a){if(!a.ma()){this.minX=me(this.minX,a.minX);this.maxX=B(this.maxX,a.maxX);this.minY=me(this.minY,a.minY);this.maxY=B(this.maxY,a.maxY)}};\r
32218 var $g=function(a,b){a=new Zg(B(a.minX,b.minX),B(a.minY,b.minY),me(a.maxX,b.maxX),me(a.maxY,b.maxY));if(a.ma())return new Zg;return a},\r
32219 ah=function(a,b){if(a.minX>b.maxX)return j;if(b.minX>a.maxX)return j;if(a.minY>b.maxY)return j;if(b.minY>a.maxY)return j;return e};\r
32220 Zg.prototype.equals=function(a){return this.minX==a.minX&&this.minY==a.minY&&this.maxX==a.maxX&&this.maxY==a.maxY};\r
32221 Zg.prototype.copy=function(){return new Zg(this.minX,this.minY,this.maxX,this.maxY)};\r
32222 function bh(a,b,c,d){this.point=new S(a,b);this.xunits=c||Vg;this.yunits=d||Vg}\r
32223 function ch(a,b,c,d){this.size=new R(a,b);this.xunits=c||Vg;this.yunits=d||Vg}\r
32224 ;var dh="iframeshim";var eh="BODY";\r
32225 function fh(a,b){var c=new S(0,0);if(a==b)return c;var d=Af(a);if(a.getBoundingClientRect){d=a.getBoundingClientRect();c.x+=d.left;c.y+=d.top;gh(c,ig(a));if(b){a=fh(b);c.x-=a.x;c.y-=a.y}return c}else if(d.getBoxObjectFor&&window.pageXOffset==0&&window.pageYOffset==0){if(b){var f=ig(b);c.x-=jg(i,f.borderLeftWidth);c.y-=jg(i,f.borderTopWidth)}else b=d.documentElement;f=d.getBoxObjectFor(a);b=d.getBoxObjectFor(b);c.x+=f.screenX-b.screenX;c.y+=f.screenY-b.screenY;gh(c,ig(a));return c}else return hh(a,b)}\r
32226 function hh(a,b){var c=new S(0,0),d=ig(a);a=a;var f=e;if(E.pb()||E.type==0&&E.version>=9){gh(c,d);f=j}for(;a&&a!=b;){c.x+=a.offsetLeft;c.y+=a.offsetTop;f&&gh(c,d);a.nodeName==eh&&ih(c,a,d);var g=a.offsetParent,h=i;if(g){h=ig(g);E.Na()&&E.revision>=1.8&&g.nodeName!=eh&&h.overflow!="visible"&&gh(c,h);c.x-=g.scrollLeft;c.y-=g.scrollTop;if(E.type!=1&&jh(a,d,h)){if(E.Na()){d=ig(g.parentNode);if(E.qA()!="BackCompat"||d.overflow!="visible"){c.x-=window.pageXOffset;c.y-=window.pageYOffset}gh(c,d)}break}}a=\r
32227 g;d=h}if(E.type==1&&document.documentElement){c.x+=document.documentElement.clientLeft;c.y+=document.documentElement.clientTop}if(b&&a==i){b=hh(b);c.x-=b.x;c.y-=b.y}return c}\r
32228 function jh(a,b,c){if(a.offsetParent.nodeName==eh&&c.position=="static"){a=b.position;return E.type==0?a!="static":a=="absolute"}return j}\r
32229 function ih(a,b,c){var d=b.parentNode,f=j;if(E.Na()){var g=ig(d);f=c.overflow!="visible"&&g.overflow!="visible";var h=c.position!="static";if(h||f){a.x+=jg(i,c.marginLeft);a.y+=jg(i,c.marginTop);gh(a,g)}if(h){a.x+=jg(i,c.left);a.y+=jg(i,c.top)}a.x-=b.offsetLeft;a.y-=b.offsetTop}if((E.Na()||E.type==1)&&document.compatMode!="BackCompat"||f)if(window.pageYOffset){a.x-=window.pageXOffset;a.y-=window.pageYOffset}else{a.x-=d.scrollLeft;a.y-=d.scrollTop}}\r
32230 function gh(a,b){a.x+=jg(i,b.borderLeftWidth);a.y+=jg(i,b.borderTopWidth)}\r
32231 function kh(a,b){if(ue(a.offsetX)&&!E.pb()&&!(E.type==1&&E.version>=8)){var c=Qg(a);a=new S(a.offsetX,a.offsetY);b=fh(c,b);return b=new S(b.x+a.x,b.y+a.y)}else if(ue(a.clientX)){c=E.pb()?new S(a.pageX-window.pageXOffset,a.pageY-window.pageYOffset):new S(a.clientX,a.clientY);b=fh(b);return b=new S(c.x-b.x,c.y-b.y)}else return Xg}\r
32232 ;var lh=e;function kd(){this.Z=[]}\r
32233 kd.prototype.Pk=function(a){var b=a.Fa;if(!(b<0)){var c=this.Z.pop();if(b<this.Z.length){this.Z[b]=c;c.Zo(b)}a.Zo(-1)}};\r
32234 kd.prototype.CR=function(a){this.Z.push(a);a.Zo(this.Z.length-1)};\r
32235 kd.prototype.clear=function(){for(var a=0;a<this.Z.length;++a)this.Z[a].Zo(-1);this.Z=[]};\r
32236 function v(a,b,c,d){return x(mh).make(a,b,c,0,d)}\r
32237 function nh(a,b){return r(oh(a,b,j))>0}\r
32238 function w(a){a.remove();x(kd).Pk(a)}\r
32239 function ph(a,b,c){A(a,Oa,b);t(qh(a,b),function(d){if(!c||d.RC(c)){d.remove();x(kd).Pk(d)}})}\r
32240 function Rg(a,b){A(a,Oa);t(qh(a),function(c){if(!b||c.RC(b)){c.remove();x(kd).Pk(c)}})}\r
32241 function qh(a,b){var c=[];if(a=a.__e_)if(b)a[b]&&Ke(c,a[b]);else tc(a,function(d,f){Ke(c,f)});\r
32242 return c}\r
32243 function oh(a,b,c){var d=i,f=a.__e_;if(f){d=f[b];if(!d){d=[];if(c)f[b]=d}}else{d=[];if(c){a.__e_={};a.__e_[b]=d}}return d}\r
32244 function A(a,b){var c=gf(arguments,2);t(qh(a,b),function(d){if(lh)d.bt(c);else try{d.bt(c)}catch(f){}})}\r
32245 function sh(a,b,c,d){if(a.addEventListener){var f=j;if(b==ya){b=la;f=e}else if(b==za){b=ha;f=e}var g=f?4:1;a.addEventListener(b,c,f);c=x(mh).make(a,b,c,g,d)}else if(a.attachEvent){c=x(mh).make(a,b,c,2,d);a.attachEvent("on"+b,c.zJ())}else{a["on"+b]=c;c=x(mh).make(a,b,c,3,d)}if(a!=window||b!=xa)x(kd).CR(c);return c}\r
32246 function T(a,b,c,d){c=th(c,d);return sh(a,b,c)}\r
32247 function uh(a,b,c,d,f){c=th(c,d);return sh(a,b,c,f)}\r
32248 function th(a,b){return function(c){return b.call(a,c,this)}}\r
32249 function vh(a,b,c){var d=[];d.push(T(a,m,b,c));E.type==1&&d.push(T(a,ka,b,c));return d}\r
32250 function U(a,b,c,d){return v(a,b,n(d,c),c)}\r
32251 function wh(a,b,c,d,f){return v(a,b,n(d,c),f)}\r
32252 function fd(a,b,c,d){rg(d);var f=v(a,b,function(){c.apply(a,arguments);w(f);sg(d)});\r
32253 return f}\r
32254 function xh(a,b,c,d,f){return fd(a,b,n(d,c),f)}\r
32255 function yh(a,b,c){return v(a,b,zh(b,c))}\r
32256 function zh(a,b){return function(){var c=[b,a];Ke(c,arguments);A.apply(this,c)}}\r
32257 function Ah(a,b){return function(c){A(b,a,c)}}\r
32258 function mh(){this.Ts=i}\r
32259 mh.prototype.gT=function(a){this.Ts=a};\r
32260 mh.prototype.make=function(a,b,c,d,f){return this.Ts?new this.Ts(a,b,c,d,f):i};\r
32261 Og.g=function(a,b,c,d,f){this.Wb=a;this.yj=b;this.xh=c;this.Gs=i;this.RR=d;this.Dd=f||i;this.Fa=-1;oh(a,b,e).push(this)};\r
32262 l=Og.prototype;l.zJ=function(){return this.Gs=n(function(a){if(!a)a=window.event;if(a&&!a.target)try{a.target=a.srcElement}catch(b){}var c=this.bt([a]);if(a&&m==a.type)if((a=a.srcElement)&&"A"==a.tagName&&"javascript:void(0)"==a.href)return j;return c},\r
32263 this)};\r
32264 l.remove=function(){if(this.Wb){switch(this.RR){case 1:this.Wb.removeEventListener(this.yj,this.xh,j);break;case 4:this.Wb.removeEventListener(this.yj,this.xh,e);break;case 2:this.Wb.detachEvent("on"+this.yj,this.Gs);break;case 3:this.Wb["on"+this.yj]=i;break}xe(oh(this.Wb,this.yj),this);this.Gs=this.xh=this.Wb=i}};\r
32265 l.Zo=function(a){this.Fa=a};\r
32266 l.RC=function(a){return this.Dd===a};\r
32267 l.bt=function(a){if(this.Wb)return this.xh.apply(this.Wb,a)};\r
32268 x(mh).gT(Og);function Bh(a,b){this.moduleUrlsFn=a;this.moduleDependencies=b}\r
32269 function Ch(){this.ac=[]}\r
32270 Ch.prototype.init=function(a,b){var c=this.Ra=new Bh(a,b);t(this.ac,function(d){d(c)});\r
32271 ff(this.ac)};\r
32272 Ch.prototype.iA=function(a){this.Ra?a(this.Ra):this.ac.push(a)};\r
32273 function gd(){this.NE={};this.Hu={};this.ac={};this.St={};this.Eq=new Ch;this.Ac={};this.dr=i}\r
32274 l=gd.prototype;l.init=function(a,b){this.Eq.init(a,b)};\r
32275 l.kM=function(a,b){var c=this.Ac;this.Eq.iA(function(d){(d=d.moduleUrlsFn(a))&&b(d,c[a])})};\r
32276 l.tS=function(a,b,c,d,f){A(this,"modulerequired",a,b);if(this.Hu[a])c(this.St[a]);else{this.ac[a]||(this.ac[a]=[]);this.ac[a].push(c);f||this.BC(a,b,d)}};\r
32277 l.BC=function(a,b,c){if(!this.Hu[a]){c&&this.Qz(a,c);if(!this.NE[a]){this.NE[a]=e;A(this,"moduleload",a,b);this.dr&&this.Qz(a,this.dr);this.Eq.iA(n(function(d){t(d.moduleDependencies[a],n(function(f){this.BC(f,undefined,c)},\r
32278 this));this.iw(a,"jss");this.kM(a,Dh)},\r
32279 this))}}};\r
32280 l.require=function(a,b,c,d,f){this.tS(a,b,function(g){c(g[b])},\r
32281 d,f)};\r
32282 l.provide=function(a,b,c){var d=this.St;d[a]||(d[a]={});if(typeof this.hw=="number"){this.iw(a,"jsl",this.hw);delete this.hw}if(ue(b))d[a][b]=c;else this.mN(a)};\r
32283 l.mN=function(a){this.Hu[a]=e;var b=this.St[a];t(this.ac[a],function(c){c(b)});\r
32284 delete this.ac[a];this.iw(a,"jsd");A(this,Sa,a)};\r
32285 l.XS=function(a){this.dr=a};\r
32286 l.Qz=function(a,b){var c=this.Ac;if(c[a]){for(var d=0;d<r(c[a]);++d)if(c[a][d]==b)return;c[a].push(b)}else c[a]=[b];b.branch()};\r
32287 l.iw=function(a,b,c){var d=this.Ac;if(!d[a]&&b=="jss")d[a]=[new cd("jsloader-"+a)];else{var f=d[a];if(f){for(var g=0;g<r(f);++g)f[g].tick(b+"."+a,c);if(b=="jsd"){for(g=0;g<r(f);++g)f[g].done();delete d[a]}}}};\r
32288 l.EU=function(){this.hw=ed()};\r
32289 function Eh(a){x(gd).EU();eval(a)}\r
32290 window.__gjsload_maps2_api__=Eh;function vd(a,b,c,d,f){x(gd).require(a,b,c,d,f)}\r
32291 function V(a,b,c){x(gd).provide(a,b,c)}\r
32292 function Wc(a,b){x(gd).init(a,b)}\r
32293 function wd(a,b,c){return function(){var d=arguments;vd(a,b,function(f){f.apply(i,d)},\r
32294 c)}}\r
32295 function dd(a){x(gd).XS(a)}\r
32296 ;function Fh(a,b){a.prototype&&Gh(a.prototype,Hh(b));Gh(a,b)}\r
32297 function Gh(a,b){tc(a,function(d,f){if(typeof f==re)var g=a[d]=function(){var h=arguments,k;b(n(function(o){if((o=(o||a)[d])&&o!=g)k=o.apply(this,h);else aa(new Error("No implementation for ."+d))},\r
32298 this),f.defer===e);c||(k=f.apply(this,h));return k}},\r
32299 j);var c=j;b(function(d){c=e;d!=a&&De(a,d,e)},\r
32300 e)}\r
32301 function Ih(a,b,c){function d(f,g){vd(b,c,f,undefined,g)}\r
32302 Fh(a,d)}\r
32303 function Jh(a){var b=function(){return a.apply(this,arguments)};\r
32304 p(b,a);b.defer=e;return b}\r
32305 function Hh(a){return function(b,c,d){a(function(f){f?b(f.prototype):b(undefined)},\r
32306 c,d)}}\r
32307 function Kh(a,b,c,d,f){function g(h,k,o){vd(b,c,h,o,k)}\r
32308 Lh(a.prototype,d,Hh(g));Lh(a,f||{},g)}\r
32309 function Lh(a,b,c){tc(b,function(d,f){a[d]=function(){var g=arguments,h=undefined;c(n(function(k){h=k[d].apply(this,g)},\r
32310 this),f);return h}})}\r
32311 ;function Mh(){Mh.g.apply(this,arguments)}\r
32312 function Nh(){Nh.g.apply(this,arguments)}\r
32313 p(Nh,Mh);Mh.g=function(a){if(a){this.left=a.offsetLeft;this.top=a.offsetTop}};\r
32314 var Oh=function(){},\r
32315 Ph=function(){};\r
32316 Mh.qe=Oh;Mh.Yk=Oh;Mh.Xf=N;Mh.Dj=N;l=Mh.prototype;l.qe=Oh;l.Yk=Oh;l.Xf=N;l.Dj=N;l.moveBy=Oh;l.uc=Ph;l.moveTo=Oh;l.Vt=Ph;l.disable=N;l.enable=N;l.enabled=N;l.dragging=N;l.gm=N;l.Fu=Oh;Ih(Mh,"drag",1);Kh(Nh,"drag",2,{},{g:j});function Qh(){}\r
32317 ;var Rh="hideWhileLoading",Sh="__src__",Th="isPending";function Uh(){this.ca={};this.zf=new Vh;this.zf.pT(20);this.zf.To(e);this.DB=i;Db&&vd("urir",Wa,n(function(a){this.DB=new a(Db)},\r
32318 this))}\r
32319 var Wh=function(){this.ob=new Image};\r
32320 Wh.prototype.SF=function(a){this.ob.src=a};\r
32321 Wh.prototype.KF=function(a){this.ob.onload=a};\r
32322 Wh.prototype.JF=function(a){this.ob.onerror=a};\r
32323 Wh.prototype.O=function(){return new R(this.ob.width,this.ob.height)};\r
32324 var Xh=function(a,b){this.Gn(a,b)};\r
32325 l=Xh.prototype;l.Gn=function(a,b){this.Da=a;this.Ef=[b];this.qp=0;this.Vd=new R(NaN,NaN)};\r
32326 l.We=function(){return this.qp};\r
32327 l.GH=function(a){this.Ef.push(a)};\r
32328 l.load=function(){this.qp=1;this.ob=new Wh;this.ob.KF(uf(this,this.ur,2));this.ob.JF(uf(this,this.ur,3));var a=be(this),b=n(function(){a.sc()&&this.ob.SF(this.Da)},\r
32329 this);x(Uh).zf.Cf(b)};\r
32330 l.ur=function(a){this.qp=a;if(this.complete())this.Vd=this.ob.O();delete this.ob;a=0;for(var b=r(this.Ef);a<b;++a)this.Ef[a](this);ff(this.Ef)};\r
32331 l.HI=function(){ce(this);this.ob.KF(i);this.ob.JF(i);this.ob.SF(Rc);this.ur(4)};\r
32332 l.complete=function(){return this.qp==2};\r
32333 Uh.prototype.fetch=function(a,b){var c=this.ca[a];if(c)switch(c.We()){case 0:case 1:c.GH(b);return;case 2:b(c,e);return}c=this.ca[a]=new Xh(a,b);c.load()};\r
32334 Uh.prototype.remove=function(a){this.rG(a);delete this.ca[a]};\r
32335 Uh.prototype.rG=function(a){var b=this.ca[a];if(b&&b.We()==1){b.HI();delete this.ca[a]}};\r
32336 Uh.prototype.nn=function(a){return!!this.ca[a]&&this.ca[a].complete()};\r
32337 var Zh=function(a,b,c){c=c||{};var d=x(Uh);if(a[Rh])if(a.tagName=="DIV")a.style.filter="";else a.src=Rc;a[Sh]=b;a[Th]=e;var f=be(a),g=function(k){d.fetch(k,function(o,q){Yh(f,a,o,k,q,c)})},\r
32338 h=d.DB;h!=i?h.renderUriAsync(b,g):g(b)},\r
32339 Yh=function(a,b,c,d,f,g){var h=function(){if(a.sc())a:{var k=g;k=k||{};b[Th]=j;b.preCached=f;switch(c.We()){case 3:k.onErrorCallback&&k.onErrorCallback(d,b);break a;case 4:break a;case 2:break;default:break a}var o=E.type==1&&ef(b.src,Rc);if(b.tagName=="DIV"){$h(b,d,k.scale);o=e}if(o)Cf(b,k.size||c.Vd);b.src=d;k.onLoadCallback&&k.onLoadCallback(d,b)}};\r
32340 E.Jn()?h():x(Uh).zf.Cf(h)};\r
32341 function ai(a,b,c){return function(d,f){a||x(Uh).remove(d);b&&b(d,f);sg(c)}}\r
32342 function Qc(a,b,c,d,f,g){f=f||{};var h=f.cache!==j;rg(g);var k=ai(h,f.onLoadCallback,g);h=ai(h,f.onErrorCallback,g);g=d&&f.scale;k={scale:g,size:d,onLoadCallback:k,onErrorCallback:h};if(f.alpha&&E.ox()){c=J("div",b,c,d,e);c.scaleMe=g;Xf(c)}else{c=J("img",b,c,d,e);c.src=Rc}if(f.hideWhileLoading)c[Rh]=e;c.imageFetcherOpts=k;Zh(c,a,k);f.printOnly&&eg(c);gg(c);if(E.type==1)c.galleryImg="no";if(f.styleClass)dg(c,f.styleClass);else{c.style.border="0px";c.style.padding="0px";c.style.margin="0px"}sh(c,ja,\r
32343 Ug);b&&Df(b,c);return c}\r
32344 function bi(a){return!!a[Sh]&&a[Sh]==a.src}\r
32345 function ci(a){x(Uh).rG(a[Sh]);a[Th]=j}\r
32346 function di(a){return we(a)&&ef(a.toLowerCase(),".png")}\r
32347 function ei(a){fi||(fi=new RegExp('"',"g"));return a.replace(fi,"\\000022")}\r
32348 var fi;function gi(a){var b=og(a);return a.replace(b,escape(b))}\r
32349 function $h(a,b,c){a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod="+(c?"scale":"crop")+',src="'+gi(ei(b))+'")'}\r
32350 function hi(a,b,c,d,f,g,h,k){b=J("div",b,f,d);Xf(b);if(c)c=new S(-c.x,-c.y);if(!h){h=new Qh;h.alpha=e}Qc(a,b,c,g,h,k).style["-khtml-user-drag"]="none";return b}\r
32351 function ii(a,b,c){Cf(a,b);Bf(a.firstChild,new S(0-c.x,0-c.y))}\r
32352 var ji=0,ki=new Qh;ki.alpha=e;ki.cache=e;function li(a,b,c){b=(b.charAt(0)==ga?b.substr(1):b).split(ga);a=a;for(var d=r(b),f=0,g=d-1;f<g;++f){var h=b[f];a[h]||(a[h]={});a=a[h]}a[b[d-1]]=c}\r
32353 ;function mi(){mi.g.apply(this,arguments)}\r
32354 Kh(mi,"kbrd",1,{},{g:j});function ni(a){var b={};tc(a,function(c,d){c=encodeURIComponent(c);d=encodeURIComponent(d);b[c]=d});\r
32355 return of(b,ea,fa)}\r
32356 ;function oi(){}\r
32357 ;l=oi.prototype;l.initialize=function(){aa("Required interface method not implemented: initialize")};\r
32358 l.remove=function(){aa("Required interface method not implemented: remove")};\r
32359 l.copy=function(){aa("Required interface method not implemented: copy")};\r
32360 l.redraw=function(){aa("Required interface method not implemented: redraw")};\r
32361 l.Ea=function(){return"Overlay"};\r
32362 function pi(a){return K(a*-100000)<<5}\r
32363 oi.prototype.show=function(){aa("Required interface method not implemented: show")};\r
32364 oi.prototype.hide=function(){aa("Required interface method not implemented: hide")};\r
32365 oi.prototype.I=function(){aa("Required interface method not implemented: isHidden")};\r
32366 oi.prototype.ya=function(){return j};\r
32367 oi.re=function(a,b){a.XQ=b};\r
32368 oi.rd=function(a){return a.XQ};function qi(){}\r
32369 l=qi.prototype;l.initialize=function(){aa("Required interface method not implemented")};\r
32370 l.ba=function(){aa("Required interface method not implemented")};\r
32371 l.ka=function(){aa("Required interface method not implemented")};\r
32372 l.Vf=function(){};\r
32373 l.Lj=function(){return j};\r
32374 l.oB=function(){return i};function ri(){this.hx={};this.uj=[];this.mW={};this.ak=i}\r
32375 ri.prototype.CC=function(a,b){if(b)for(var c=0;c<r(this.uj);++c){var d=this.uj[c];if(d.url==a){Ke(d.ui,b);break}}if(!this.hx[a]){this.hx[a]=e;c=[];b&&Ke(c,b);this.uj.push({url:a,ui:c});if(!this.ak)this.ak=qg(this,this.QO,0)}};\r
32376 ri.prototype.TO=function(a,b){for(var c=0;c<r(a);++c)this.CC(a[c],b)};\r
32377 ri.prototype.QO=function(){var a=this.iJ();this.ak&&clearTimeout(this.ak);this.ak=i;var b=Hg();b&&t(a,n(function(c){var d=c.url;si(c.ui);c=document.createElement("script");T(c,"error",this,function(){});\r
32378 c.setAttribute("type","text/javascript");c.setAttribute("charset","UTF-8");c.setAttribute("src",d);b.appendChild(c)},\r
32379 this))};\r
32380 var si=function(a){t(a,function(b){if(!b.WE){b.WE=e;for(var c=0;b.getTick("sf_"+c);)c++;b.tick("sf_"+c)}});\r
32381 t(a,function(b){delete b.WE})};\r
32382 ri.prototype.iJ=function(){var a=r("/cat_js")+6,b=[],c=[],d=[],f,g,h;t(this.uj,function(o){var q=o.url,s=o.ui,u=ti(q)[4];if(ui(u)){o=q.substr(0,q.indexOf(u));var H=u.substr(0,u.lastIndexOf(".")).split("/");if(r(c)){for(var G=0;r(H)>G&&g[G]==H[G];)++G;u=g.slice(0,G);var I=g.slice(G).join("/"),M=H.slice(G).join("/"),Y=h+1+r(M);if(I)Y+=(r(c)-1)*(r(I)+1);if(o==f&&r(c)<30&&G>1&&ui(u.join("/"),e)&&Y<=2048){if(I){q=0;for(o=r(c);q<o;++q)c[q]=I+"/"+c[q]}c.push(M);Ke(d,s);h=Y;g=u;return}else{u=vi(f,g,c,h);\r
32383 b.push({url:u,ui:d})}}c=[H.pop()];d=[];Ke(d,s);f=o;g=H;h=r(q)+a}else{if(r(c)){u=vi(f,g,c,h);b.push({url:u,ui:d});c=[];d=[]}b.push(o)}});\r
32384 if(r(c)){var k=vi(f,g,c,h);b.push({url:k,ui:d})}ff(this.uj);return b};\r
32385 var ui=function(a,b){if(!ob)return j;var c=ui;if(!c.VD){c.VD=/^(?:\/intl\/[^\/]+)?\/mapfiles(?:\/|$)/;c.GK=/.js$/}return c.VD.test(a)&&(b||c.GK.test(a))},\r
32386 vi=function(a,b,c,d){if(r(c)>1){a=a+"/cat_js"+b.join("/")+"/%7B"+c.join(",")+"%7D.js";d==r(a);return a}return a+b.join("/")+"/"+c[0]+".js"};\r
32387 function Dh(a,b){var c=x(ri);typeof a=="string"?c.CC(a,b):c.TO(a,b)}\r
32388 ;function Ai(){this.aF={};this.jD={}}\r
32389 l=Ai.prototype;l.fM=function(a,b,c){var d=[],f=lf(r(a),function(){b.apply(i,d)});\r
32390 t(a,n(function(g,h){this.get(g,function(k){d[h]=k;f()},\r
32391 c)},\r
32392 this))};\r
32393 l.set=function(a,b){this.WA(a).set(b)};\r
32394 l.get=function(a,b,c){a=this.WA(a);a.get(b,c);a.init(this)};\r
32395 l.AM=function(a,b){return this.sM(a,b)};\r
32396 l.sM=function(a,b){b=b||0;var c=a+"."+b,d=this.jD[c];if(!d){d=new Bi;d.rT(a,b);this.jD[c]=d}return d};\r
32397 l.WA=function(a){if(a instanceof Bi)return a;var b=this.aF[gc(a)];if(!b){b=new Bi;this.wT(a,b)}return b};\r
32398 l.wT=function(a,b){this.aF[gc(a)]=b};\r
32399 function Bi(){this.ov=i;this.wo=[];this.WD=[];this.Rt=i;this.ew=0;this.mH=j}\r
32400 l=Bi.prototype;l.set=function(a){this.ov=a;for(var b=0,c=r(this.wo);b<c;b++){this.wo[b](a);sg(this.WD[b])}this.wo=[]};\r
32401 l.get=function(a,b){if(this.ov)a(this.ov);else{this.wo.push(a);rg(b);this.WD.push(b)}};\r
32402 l.rT=function(a,b){this.Rt=a;this.ew=b};\r
32403 l.init=function(a){if(this.Rt&&!this.mH){this.mH=e;vd(this.Rt,this.ew,n(this.BQ,this,a))}};\r
32404 l.BQ=function(a,b){b&&b(a,this);this.ew==0&&a.set(this,{})};function Ci(a){this.ticks=a;this.tick=0}\r
32405 Ci.prototype.reset=function(){this.tick=0};\r
32406 Ci.prototype.next=function(){this.tick++;return(Math.sin(Math.PI*(this.tick/this.ticks-0.5))+1)/2};\r
32407 Ci.prototype.more=function(){return this.tick<this.ticks};\r
32408 Ci.prototype.extend=function(){if(this.tick>this.ticks/3)this.tick=K(this.ticks/3)};function Di(a){this.jl=ed();this.Dm=a;this.Tt=e}\r
32409 Di.prototype.reset=function(){this.jl=ed();this.Tt=e};\r
32410 Di.prototype.next=function(){var a=ed()-this.jl;if(a>=this.Dm){this.Tt=j;return 1}else return(Math.sin(Math.PI*(a/this.Dm-0.5))+1)/2};\r
32411 Di.prototype.more=function(){return this.Tt};\r
32412 Di.prototype.extend=function(){var a=ed();if(a-this.jl>this.Dm/3)this.jl=a-K(this.Dm/3)};function Ei(a){if(r(arguments)<1)return"";var b=/([^%]*)%(\d*)\$([#|-|0|+|\x20|\'|I]*|)(\d*|)(\.\d+|)(h|l|L|)(s|c|d|i|b|o|u|x|X|f)(.*)/,c;switch(F(1415)){case ".":c=/(\d)(\d\d\d\.|\d\d\d$)/;break;default:c=new RegExp("(\\d)(\\d\\d\\d"+F(1415)+"|\\d\\d\\d$)")}var d;switch(F(1416)){case ".":d=/(\d)(\d\d\d\.)/;break;default:d=new RegExp("(\\d)(\\d\\d\\d"+F(1416)+")")}for(var f="$1"+F(1416)+"$2",g="",h=a,k=b.exec(a);k;){h=k[3];var o=-1;if(k[5].length>1)o=Math.max(0,hf(k[5].substr(1)));var q=k[7],s="",\r
32413 u=hf(k[2]);if(u<r(arguments))s=arguments[u];u="";switch(q){case "s":u+=s;break;case "c":u+=String.fromCharCode(hf(s));break;case "d":case "i":u+=hf(s).toString();break;case "b":u+=hf(s).toString(2);break;case "o":u+=hf(s).toString(8).toLowerCase();break;case "u":u+=Math.abs(hf(s)).toString();break;case "x":u+=hf(s).toString(16).toLowerCase();break;case "X":u+=hf(s).toString(16).toUpperCase();break;case "f":u+=o>=0?Math.round(parseFloat(s)*Math.pow(10,o))/Math.pow(10,o):parseFloat(s);break;default:break}if(h.search(/I/)!=\r
32414 -1&&h.search(/\'/)!=-1&&(q=="i"||q=="d"||q=="u"||q=="f")){h=u=u.replace(/\./g,F(1415));u=h.replace(c,f);if(u!=h){do{h=u;u=h.replace(d,f)}while(h!=u)}}g+=k[1]+u;h=k[8];k=b.exec(h)}return g+h}\r
32415 ;function cd(){cd.g.apply(this,arguments)}\r
32416 ;var Fi=/[~.,?&]/g,Gi=j;cd.g=function(a,b){this.Uf=a.replace(Fi,"-");this.yi=[];this.BG={};this.cD=this.ue=b||ed();this.Jr=1;this.LE=0;this.Af={};this.Wi={};this.Bn={};this.hj="";this.WV={};this.Up=j};\r
32417 l=cd.prototype;l.CH=function(){this.Up=e};\r
32418 l.getTick=function(a){if(a=="start")return this.ue;return this.BG[a]};\r
32419 l.adopt=function(a){if(!(!a||typeof a.start=="undefined")){this.ue=a.start;this.oP(a)}};\r
32420 l.oP=function(a){a&&tc(a,n(function(b,c){b!="start"&&this.tick(b,c)},\r
32421 this))};\r
32422 l.tick=function(a,b){window.gErrorLogger&&window.gErrorLogger.tick&&window.gErrorLogger.tick(this.Uf,a);b=b||ed();if(b>this.cD)this.cD=b;for(var c=b-this.ue,d=r(this.yi);d>0&&this.yi[d-1][1]>c;)d--;this.yi.splice(d||0,0,[a,c]);this.BG[a]=b};\r
32423 l.done=function(a,b){a&&this.tick(a);this.Jr--;this.LE>0&&this.Uf.indexOf("-LATE")==-1&&this.bT(this.Uf+"-LATE");if(this.Jr<=0){this.LE++;if(this.hj)this.OJ(b||document);r(this.yi)>0&&this.oS();if(!Ee(this.Af)||!Ee(this.Bn))this.kS();this.Pr()}};\r
32424 l.Pr=function(){};\r
32425 l.branch=function(a){a&&this.tick(a);this.Jr++};\r
32426 l.timers=function(){return this.yi};\r
32427 l.oS=function(){if(!this.Up){A(this,"beforereport");A(cd,"report",this.Uf,this.yi,this.Wi)}};\r
32428 l.kS=function(){if(!this.Up){if(!Ee(this.Af)&&!Ee(this.Wi))this.Af.cad=ni(this.Wi);A(cd,"reportaction",this.Af,this.Bn);Fe(this.Af);Fe(this.Wi);Fe(this.Bn)}};\r
32429 l.bT=function(a){this.Uf=a.replace(Fi,"-")};\r
32430 l.action=function(a){var b=[],c=i,d=j;Hi(a,function(f){var g=Ii(f);if(g){b.unshift(g);c||(c=f.getAttribute("jsinstance"))}if(!d&&f.getAttribute("jstrack"))d=e});\r
32431 if(d){this.Af.ct=this.Uf;r(b)>0&&this.Xg("oi",b.join(ga));if(c){c=c.charAt(0)==da?hf(c.substr(1)):hf(c);this.Af.cd=c}}};\r
32432 l.Xg=function(a,b){this.Wi[a]=b};\r
32433 l.impression=function(a){this.tick("imp0");var b=[];a.parentNode&&Hi(a.parentNode,function(d){(d=Ii(d))&&b.unshift(d)});\r
32434 var c=this.Bn;Ji(a,function(d){if(d=Ii(d)){b.push(d);d=b.join(ga);c[d]||(c[d]=0);c[d]++;return e}return j},\r
32435 function(){b.pop()});\r
32436 this.tick("imp1")};\r
32437 l.OJ=function(a){if(this.hj){a.cookie="TR=; path=/; domain=.google.com; expires=01/01/1970 00:00:00";A(cd,"dapperreport",this.hj,this.ue,ed(),this.Uf)}Gi=j};\r
32438 var Hi=function(a,b){for(a=a;a&&a!=document.body;a=a.parentNode)b(a)},\r
32439 Ji=function(a,b,c){if(!(a.nodeType!=1||ig(a).display=="none"||ig(a).visibility=="hidden")){for(var d=b(a),f=a.firstChild;f;f=f.nextSibling)arguments.callee(f,b,c);d&&c()}},\r
32440 Ii=function(a){if(!a.__oi&&a.getAttribute)a.__oi=a.getAttribute("oi");return a.__oi},\r
32441 Eg=function(a,b,c){a&&a.tick(b,c)},\r
32442 rg=function(a,b){a&&a.branch(b)},\r
32443 sg=function(a,b,c){a&&a.done(b,c)};function Ki(){Ki.g.apply(this,arguments)}\r
32444 ;Ki.g=function(){this.Gd={}};\r
32445 l=Ki.prototype;l.set=function(a,b){this.Gd[a]=b;return this};\r
32446 l.sT=function(a){De(this.Gd,a)};\r
32447 l.remove=function(a){delete this.Gd[a]};\r
32448 l.get=function(a){return this.Gd[a]};\r
32449 l.Xe=function(a,b,c){if(c){this.set("hl",_mHL);_mGL&&this.set("gl",_mGL)}c=this.wM();b=b?b:_mUri;return c?(a?"":_mHost)+b+"?"+c:(a?"":_mHost)+b};\r
32450 l.wM=function(){return mg(this.Gd)};Ki.prototype.Cv=function(a){a.ha()&&Li(this.Gd,a,e,e,"m");hc!=i&&hc!=""&&this.set("key",hc);ic!=i&&ic!=""&&this.set("client",ic);jc!=i&&jc!=""&&this.set("channel",jc);kc!=i&&kc!=""&&this.set("sensor",kc);this.set("mapclient","jsapi")};\r
32451 Ki.prototype.Pv=function(a,b){this.set("ll",a);this.set("spn",b)};function Mi(a,b){this.f=a;this.Jp=b;b={};b.neat=e;this.Ha=new wg(_mHost+"/maps/vp",window.document,b);U(a,Da,this,this.Sh);var c=n(this.Sh,this);U(a,Ca,i,function(){window.setTimeout(c,0)});\r
32452 U(a,Ea,this,this.po)}\r
32453 l=Mi.prototype;l.Sh=function(){var a=this.f;if(this.Ul!=a.F()||this.o!=a.o){this.WJ();this.zg();this.Zg(0,0,e)}else{var b=a.T(),c=a.H().sb();a=K((b.lat()-this.qx.lat())/c.lat());b=K((b.lng()-this.qx.lng())/c.lng());this.Me="p";this.Zg(a,b,e)}};\r
32454 l.po=function(){this.zg();this.Zg(0,0,j)};\r
32455 l.zg=function(){var a=this.f;this.qx=a.T();this.o=a.o;this.Ul=a.F();this.j={}};\r
32456 l.WJ=function(){var a=this.f,b=a.F();if(this.Ul&&this.Ul!=b)this.Me=this.Ul<b?"zi":"zo";if(this.o){a=a.o.getUrlArg();b=this.o.getUrlArg();if(b!=a)this.Me=b+a}};\r
32457 l.Zg=function(a,b,c){if(!(this.f.allowUsageLogging&&!this.f.allowUsageLogging())){a=a+","+b;if(!this.j[a]){this.j[a]=1;if(c){var d=new Ki;d.Cv(this.f);d.set("vp",d.get("ll"));d.remove("ll");this.Jp!="m"&&d.set("mapt",this.Jp);if(this.Me){d.set("ev",this.Me);this.Me=""}this.f.Pf&&d.set("output","embed");c={};Ge(c,ng(og(document.location.href)),["host","e","expid","source_ip"]);A(this.f,"reportpointhook",c);tc(c,function(f,g){g!=i&&d.set(f,g)});\r
32458 this.Ha.send(d.Gd);A(this.f,"viewpointrequest")}}}};\r
32459 l.wE=function(){var a=new Ki;a.Cv(this.f);a.set("vp",a.get("ll"));a.remove("ll");this.Jp!="m"&&a.set("mapt",this.Jp);window._mUrlHostParameter&&a.set("host",window._mUrlHostParameter);this.f.Pf&&a.set("output","embed");a.set("ev","r");var b={};A(this.f,"refreshpointhook",b);tc(b,function(c,d){d!=i&&a.set(c,d)});\r
32460 this.Ha.send(a.Gd);A(this.f,"viewpointrequest")};function ti(a){Ni||(Ni=/^(?:([^:\/?#]+):)?(?:\/\/(?:([^\/?#]*)@)?([^\/?#:@]*)(?::([0-9]+))?)?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/);(a=a.match(Ni))&&a.shift();return a}\r
32461 var Ni;var Oi=new RegExp("[\u0591-\u07ff\ufb1d-\ufdff\ufe70-\ufefc]"),Pi=new RegExp("^[^A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff]*[\u0591-\u07ff\ufb1d-\ufdff\ufe70-\ufefc]"),Qi=new RegExp("^[\u0000- !-@[-`{-\u00bf\u00d7\u00f7\u02b9-\u02ff\u2000-\u2bff]*$|^http://");var Ri,Si,Ti=["q_d","l_d","l_near","d_d","d_daddr"],Ui,Vi=j;function Wi(){return typeof _mIsRtl=="boolean"?_mIsRtl:j}\r
32462 function Xi(a,b){if(!a)return Wi();if(b)return Oi.test(a);var c=b=0;a=a.split(" ");for(var d=0;d<a.length;d++)if(Pi.test(a[d])){b++;c++}else Qi.test(a[d])||c++;return(c==0?0:b/c)>0.4}\r
32463 function Yi(a,b){return Xi(a,b)?"rtl":"ltr"}\r
32464 function Zi(a,b){return Xi(a,b)?"right":"left"}\r
32465 function $i(a,b){return Xi(a,b)?"left":"right"}\r
32466 function aj(a){var b=a.target||a.srcElement;setTimeout(function(){if(Vi){var c=Yi(b.value),d=Zi(b.value);b.setAttribute("dir",c);b.style.textAlign=d}},\r
32467 0)}\r
32468 function bj(a){a=Nf(a);if(a!=i){sh(a,qa,aj);sh(a,wa,aj)}}\r
32469 function cj(a,b){return Xi(a,b)?"\u200f":"\u200e"}\r
32470 function dj(a,b){return'<span dir="'+Yi(a,b)+'">'+(b?a:cf(a))+"</span>"+cj()}\r
32471 function ej(a){if(!Ui)return a;return(Xi(a)?"\u202b":"\u202a")+a+"\u202c"+cj()}\r
32472 if(typeof jb=="string"&&typeof _mHL=="string"){var fj=jb.split(",");if(Ce(fj,_mHL)){t(Ti,bj);Vi=e}}Wi();var gj=Wi()?"Left":"Right";Ri=Wi()?"right":"left";Wi();Si="margin"+gj;Ui=E.os!=2||E.type==4||Wi();function hj(){try{if(typeof ActiveXObject!="undefined")return new ActiveXObject("Microsoft.XMLHTTP");else if(window.XMLHttpRequest)return new XMLHttpRequest}catch(a){}return i}\r
32473 function ij(a,b,c,d,f){var g=hj();if(!g)return j;if(b){rg(f);g.onreadystatechange=function(){if(g.readyState==4){var h;h=-1;var k=i;try{h=g.status;k=g.responseText}catch(o){}h={status:h,responseText:k};b(h.responseText,h.status);g.onreadystatechange=N;sg(f)}}}if(c){g.open("POST",\r
32474 a,e);(a=d)||(a="application/x-www-form-urlencoded");g.setRequestHeader("Content-Type",a);g.send(c)}else{g.open("GET",a,e);g.send(i)}return e}\r
32475 ;function Vh(){this.Xc=[];this.ol=i;this.iv=j;this.Pp=0;this.$C=100;this.hR=0;this.nx=j}\r
32476 l=Vh.prototype;l.pT=function(a){this.$C=a};\r
32477 l.To=function(a){this.nx=a};\r
32478 l.XP=function(a,b){aa(b)};\r
32479 l.Cf=function(a,b){this.Xc.push([a,b]);rg(b);this.VE();this.nx&&this.nE()};\r
32480 l.cancel=function(){this.nU();for(var a=0;a<this.Xc.length;++a)sg(this.Xc[a][1]);ff(this.Xc)};\r
32481 l.nU=function(){window.clearTimeout(this.ol);this.ol=i};\r
32482 l.nE=function(){if(!this.iv){this.iv=e;try{for(;r(this.Xc)&&this.Pp<this.$C;){var a=this.Xc.shift();this.IS(a[0]);sg(a[1])}}finally{this.iv=j;if(this.Pp||r(this.Xc))this.VE()}}};\r
32483 l.VE=function(){if(!this.ol)this.ol=qg(this,this.JQ,this.hR)};\r
32484 l.JQ=function(){this.ol=i;this.Pp=0;this.nE()};\r
32485 l.IS=function(a){var b=ed();try{a(this)}catch(c){this.XP(a,c)}this.Pp+=ed()-b};function z(){z.g.apply(this,arguments)}\r
32486 function id(){id.g.apply(this,arguments)}\r
32487 ;function jj(a,b){if(a==-ee&&b!=ee)a=ee;if(b==-ee&&a!=ee)b=ee;this.lo=a;this.hi=b}\r
32488 l=jj.prototype;l.Yd=function(){return this.lo>this.hi};\r
32489 l.ma=function(){return this.lo-this.hi==2*ee};\r
32490 l.ZB=function(){return this.hi-this.lo==2*ee};\r
32491 l.intersects=function(a){var b=this.lo,c=this.hi;if(this.ma()||a.ma())return j;if(this.Yd())return a.Yd()||a.lo<=this.hi||a.hi>=b;else{if(a.Yd())return a.lo<=c||a.hi>=b;return a.lo<=c&&a.hi>=b}};\r
32492 l.Hq=function(a){var b=this.lo,c=this.hi;if(this.Yd()){if(a.Yd())return a.lo>=b&&a.hi<=c;return(a.lo>=b||a.hi<=c)&&!this.ma()}else{if(a.Yd())return this.ZB()||a.ma();return a.lo>=b&&a.hi<=c}};\r
32493 l.contains=function(a){if(a==-ee)a=ee;var b=this.lo,c=this.hi;return this.Yd()?(a>=b||a<=c)&&!this.ma():a>=b&&a<=c};\r
32494 l.extend=function(a){if(!this.contains(a))if(this.ma())this.lo=this.hi=a;else if(this.distance(a,this.lo)<this.distance(this.hi,a))this.lo=a;else this.hi=a};\r
32495 l.equals=function(a){if(this.ma())return a.ma();return fe(a.lo-this.lo)%2*ee+fe(a.hi-this.hi)%2*ee<=1.0E-9};\r
32496 l.distance=function(a,b){var c=b-a;if(c>=0)return c;return b+ee-(a-ee)};\r
32497 l.span=function(){return this.ma()?0:this.Yd()?2*ee-(this.lo-this.hi):this.hi-this.lo};\r
32498 l.center=function(){var a=(this.lo+this.hi)/2;if(this.Yd()){a+=ee;a=te(a,-ee,ee)}return a};\r
32499 function kj(a,b){this.lo=a;this.hi=b}\r
32500 l=kj.prototype;l.ma=function(){return this.lo>this.hi};\r
32501 l.intersects=function(a){var b=this.lo,c=this.hi;return b<=a.lo?a.lo<=c&&a.lo<=a.hi:b<=a.hi&&b<=c};\r
32502 l.Hq=function(a){if(a.ma())return e;return a.lo>=this.lo&&a.hi<=this.hi};\r
32503 l.contains=function(a){return a>=this.lo&&a<=this.hi};\r
32504 l.extend=function(a){if(this.ma())this.hi=this.lo=a;else if(a<this.lo)this.lo=a;else if(a>this.hi)this.hi=a};\r
32505 l.equals=function(a){if(this.ma())return a.ma();return fe(a.lo-this.lo)+fe(this.hi-a.hi)<=1.0E-9};\r
32506 l.span=function(){return this.ma()?0:this.hi-this.lo};\r
32507 l.center=function(){return(this.hi+this.lo)/2};z.g=function(a,b,c){a-=0;b-=0;if(!c){a=se(a,-90,90);b=te(b,-180,180)}this.df=a;this.x=this.Ua=b;this.y=a};\r
32508 l=z.prototype;l.toString=function(){return"("+this.lat()+", "+this.lng()+")"};\r
32509 l.equals=function(a){if(!a)return j;return Se(this.lat(),a.lat())&&Se(this.lng(),a.lng())};\r
32510 l.copy=function(){return new z(this.lat(),this.lng())};\r
32511 l.Cp=function(a){return new z(this.df,this.Ua+a,e)};\r
32512 l.Zt=function(a){return this.Cp(K((a.Ua-this.Ua)/360)*360)};\r
32513 function lj(a,b){b=Math.pow(10,b);return Math.round(a*b)/b}\r
32514 l=z.prototype;l.Aa=function(a){a=ue(a)?a:6;return lj(this.lat(),a)+","+lj(this.lng(),a)};\r
32515 l.lat=function(){return this.df};\r
32516 l.lng=function(){return this.Ua};\r
32517 l.lT=function(a){a-=0;this.y=this.df=a};\r
32518 l.yF=function(a){a-=0;this.x=this.Ua=a};\r
32519 l.$d=function(){return Qe(this.df)};\r
32520 l.ff=function(){return Qe(this.Ua)};\r
32521 l.Pb=function(a,b){return this.rx(a)*(b||6378137)};\r
32522 l.rx=function(a){var b=this.$d(),c=a.$d(),d=b-c;a=this.ff()-a.ff();return 2*ge(pe(ne(oe(d/2),2)+le(b)*le(c)*ne(oe(a/2),2)))};\r
32523 z.fromUrlValue=function(a){a=a.split(",");return new z(parseFloat(a[0]),parseFloat(a[1]))};\r
32524 var mj=function(a,b,c){return new z(Re(a),Re(b),c)};\r
32525 z.prototype.MG=function(){return this.lng()+","+this.lat()};\r
32526 id.g=function(a,b){if(a&&!b)b=a;if(a){var c=se(a.$d(),-ee/2,ee/2),d=se(b.$d(),-ee/2,ee/2);this.Ia=new kj(c,d);a=a.ff();b=b.ff();if(b-a>=ee*2)this.Ja=new jj(-ee,ee);else{a=te(a,-ee,ee);b=te(b,-ee,ee);this.Ja=new jj(a,b)}}else{this.Ia=new kj(1,-1);this.Ja=new jj(ee,-ee)}};\r
32527 l=id.prototype;l.T=function(){return mj(this.Ia.center(),this.Ja.center())};\r
32528 l.toString=function(){return"("+this.nb()+", "+this.mb()+")"};\r
32529 l.Aa=function(a){var b=this.nb(),c=this.mb();return[b.Aa(a),c.Aa(a)].join(",")};\r
32530 l.equals=function(a){return this.Ia.equals(a.Ia)&&this.Ja.equals(a.Ja)};\r
32531 l.contains=function(a){return this.Ia.contains(a.$d())&&this.Ja.contains(a.ff())};\r
32532 l.intersects=function(a){return this.Ia.intersects(a.Ia)&&this.Ja.intersects(a.Ja)};\r
32533 l.kc=function(a){return this.Ia.Hq(a.Ia)&&this.Ja.Hq(a.Ja)};\r
32534 l.extend=function(a){this.Ia.extend(a.$d());this.Ja.extend(a.ff())};\r
32535 l.union=function(a){this.extend(a.nb());this.extend(a.mb())};\r
32536 l.Oc=function(){return Re(this.Ia.hi)};\r
32537 l.qc=function(){return Re(this.Ia.lo)};\r
32538 l.rc=function(){return Re(this.Ja.lo)};\r
32539 l.pc=function(){return Re(this.Ja.hi)};\r
32540 l.nb=function(){return mj(this.Ia.lo,this.Ja.lo)};\r
32541 l.XA=function(){return mj(this.Ia.lo,this.Ja.hi)};\r
32542 l.gs=function(){return mj(this.Ia.hi,this.Ja.lo)};\r
32543 l.mb=function(){return mj(this.Ia.hi,this.Ja.hi)};\r
32544 l.sb=function(){return mj(this.Ia.span(),this.Ja.span(),e)};\r
32545 l.iO=function(){return this.Ja.ZB()};\r
32546 l.hO=function(){return this.Ia.hi>=ee/2&&this.Ia.lo<=-ee/2};\r
32547 l.ma=function(){return this.Ia.ma()||this.Ja.ma()};\r
32548 l.lO=function(a){var b=this.sb();a=a.sb();return b.lat()>a.lat()&&b.lng()>a.lng()};\r
32549 function nj(){this.yf=Number.MAX_VALUE;this.Ke=-Number.MAX_VALUE;this.qf=90;this.hf=-90;for(var a=0,b=r(arguments);a<b;++a)this.extend(arguments[a])}\r
32550 l=nj.prototype;l.extend=function(a){if(a.Ua<this.yf)this.yf=a.Ua;if(a.Ua>this.Ke)this.Ke=a.Ua;if(a.df<this.qf)this.qf=a.df;if(a.df>this.hf)this.hf=a.df};\r
32551 l.nb=function(){return new z(this.qf,this.yf,e)};\r
32552 l.mb=function(){return new z(this.hf,this.Ke,e)};\r
32553 l.qc=function(){return this.qf};\r
32554 l.Oc=function(){return this.hf};\r
32555 l.pc=function(){return this.Ke};\r
32556 l.rc=function(){return this.yf};\r
32557 l.intersects=function(a){return a.pc()>this.yf&&a.rc()<this.Ke&&a.Oc()>this.qf&&a.qc()<this.hf};\r
32558 l.T=function(){return new z((this.qf+this.hf)/2,(this.yf+this.Ke)/2,e)};\r
32559 l.contains=function(a){var b=a.lat();a=a.lng();return b>=this.qf&&b<=this.hf&&a>=this.yf&&a<=this.Ke};\r
32560 l.kc=function(a){return a.rc()>=this.yf&&a.pc()<=this.Ke&&a.qc()>=this.qf&&a.Oc()<=this.hf};\r
32561 function oj(a,b){var c=a.$d();a=a.ff();var d=le(c);b[0]=le(a)*d;b[1]=oe(a)*d;b[2]=oe(c)}\r
32562 function pj(a,b){var c=je(a[2],pe(a[0]*a[0]+a[1]*a[1]));a=je(a[1],a[0]);b.lT(Re(c));b.yF(Re(a))}\r
32563 function qj(){var a=Me(arguments);a.push(a[0]);for(var b=[],c=0,d=0;d<3;++d){b[d]=a[d].rx(a[d+1]);c+=b[d]}c/=2;a=qe(0.5*c);for(d=0;d<3;++d)a*=qe(0.5*(c-b[d]));return 4*he(pe(B(0,a)))}\r
32564 function rj(){for(var a=Me(arguments),b=[[],[],[]],c=0;c<3;++c)oj(a[c],b[c]);a=0;a+=b[0][0]*b[1][1]*b[2][2];a+=b[1][0]*b[2][1]*b[0][2];a+=b[2][0]*b[0][1]*b[1][2];a-=b[0][0]*b[2][1]*b[1][2];a-=b[1][0]*b[0][1]*b[2][2];a-=b[2][0]*b[1][1]*b[0][2];b=Number.MIN_VALUE*10;return a>b?1:a<-b?-1:0}\r
32565 ;function sj(){}\r
32566 ;function tj(){aa("Required interface method not implemented")}\r
32567 l=sj.prototype;l.fromLatLngToPixel=tj;l.fromPixelToLatLng=tj;l.getNearestImage=function(a,b,c){b=this.getWrapWidth(b);c=K((c.x-a.x)/b);a.x+=b*c;return c};\r
32568 l.tileCheckRange=function(){return e};\r
32569 l.getWrapWidth=function(){return Infinity};function pd(a){this.yu=[];this.zu=[];this.wu=[];this.xu=[];for(var b=256,c=0;c<a;c++){var d=b/2;this.yu.push(b/360);this.zu.push(b/(2*ee));this.wu.push(new S(d,d));this.xu.push(b);b*=2}}\r
32570 pd.prototype=new sj;pd.prototype.fromLatLngToPixel=function(a,b){var c=this.wu[b],d=K(c.x+a.lng()*this.yu[b]);a=se(Math.sin(Qe(a.lat())),-0.9999,0.9999);b=K(c.y+0.5*Math.log((1+a)/(1-a))*-this.zu[b]);return new S(d,b)};\r
32571 pd.prototype.fromPixelToLatLng=function(a,b,c){var d=this.wu[b],f=(a.x-d.x)/this.yu[b];a=Re(2*Math.atan(Math.exp((a.y-d.y)/-this.zu[b]))-ee/2);return new z(a,f,c)};\r
32572 pd.prototype.tileCheckRange=function(a,b,c){b=this.xu[b];if(a.y<0||a.y*c>=b)return j;if(a.x<0||a.x*c>=b){c=Kd(b/c);a.x%=c;if(a.x<0)a.x+=c}return e};\r
32573 pd.prototype.getWrapWidth=function(a){return this.xu[a]};var uj=pe(2);function rd(a,b,c){this.Ot=c||new pd(a);this.ym=b%360;this.NU=new S(0,0)}\r
32574 p(rd,sj);l=rd.prototype;l.fromLatLngToPixel=function(a,b){a=this.Ot.fromLatLngToPixel(a,b);b=this.getWrapWidth(b);var c=b/2,d=a.x,f=a.y;switch(this.ym){case 0:break;case 90:a.x=f;a.y=b-d;break;case 180:a.x=b-d;a.y=b-f;break;case 270:a.x=b-f;a.y=d;break}a.y=(a.y-c)/uj+c;return a};\r
32575 l.getNearestImage=function(a,b,c){b=this.getWrapWidth(b);if(this.ym%180==90){c=K((c.y-a.y)/b);a.y+=b*c}else{c=K((c.x-a.x)/b);a.x+=b*c}return c};\r
32576 l.fromPixelToLatLng=function(a,b,c){var d=this.getWrapWidth(b),f=d/2,g=a.x;a=(a.y-f)*uj+f;f=this.NU;switch(this.ym){case 0:f.x=g;f.y=a;break;case 90:f.x=d-a;f.y=g;break;case 180:f.x=d-g;f.y=d-a;break;case 270:f.x=a;f.y=d-g;break}return this.Ot.fromPixelToLatLng(f,b,c)};\r
32577 l.tileCheckRange=function(a,b,c){b=this.getWrapWidth(b);if(this.ym%180==90){if(a.x<0||a.x*c>=b)return j;if(a.y<0||a.y*c>=b){c=Kd(b/c);a.y%=c;if(a.y<0)a.y+=c}}else{if(a.y<0||a.y*c>=b)return j;if(a.x<0||a.x*c>=b){c=Kd(b/c);a.x%=c;if(a.x<0)a.x+=c}}return e};\r
32578 l.getWrapWidth=function(a){return this.Ot.getWrapWidth(a)};var vj=vj||{},wj=function(a,b,c){var d=window.google;d&&d.test&&d.test.report&&d.test.report(a,i,b,c)},\r
32579 xj=function(a){var b=window.google;b&&b.test&&b.test.checkpoint&&b.test.checkpoint(a)};var yj={};yj.initialize=N;yj.redraw=N;yj.remove=N;yj.copy=function(){return this};\r
32580 yj.wa=j;yj.ya=Oe;yj.show=function(){this.wa=j};\r
32581 yj.hide=function(){this.wa=e};\r
32582 yj.I=function(){return this.wa};\r
32583 function zj(a,b,c){Aj(a.prototype,yj);Ih(a,b,c)}\r
32584 function Aj(a,b){tc(b,function(c){a.hasOwnProperty(c)||(a[c]=b[c])})}\r
32585 ;function Bj(){Bj.g.apply(this,arguments)}\r
32586 ;Bj.g=function(a){if(a){this.controls=a.width<400||a.height<150?{smallzoomcontrol3d:e,menumaptypecontrol:e}:{largemapcontrol3d:e,hierarchicalmaptypecontrol:e,scalecontrol:e};if(Sb&&a.width>=500&&a.height>=500)this.controls.googlebar=e;this.maptypes={normal:e,satellite:e,hybrid:e,physical:e};this.zoom={scrollwheel:e,doubleclick:e};this.keyboard=e}};function Cj(){Cj.g.apply(this,arguments)}\r
32587 ;function Hd(){Hd.g.apply(this,arguments)}\r
32588 ;Hd.g=function(a,b,c,d){d=d||{};this.Gb=d.heading||0;if(this.Gb<0||this.Gb>=360)aa("Heading out of bounds.");(this.fv=d.rmtc||i)&&this.fv.Pl(this,!!d.isDefault);this.hb=a||[];this.HP=c||"";this.of=b||new sj;this.MT=d.shortName||c||"";this.xV=d.urlArg||"c";this.nk=d.maxResolution||Je(this.hb,function(){return this.maxResolution()},\r
32589 Math.max)||0;this.vk=d.minResolution||Je(this.hb,function(){return this.minResolution()},\r
32590 Math.min)||0;this.DU=d.textColor||"black";this.JO=d.linkColor||"#7777cc";this.Jm=d.errorMessage||"";this.nl=d.tileSize||256;this.GR=d.radius||6378137;this.It=0;this.eI=d.alt||"";this.aP=d.lbw||i;this.iP=d.maxZoomEnabled||j;this.Ez=this;for(a=0;a<r(this.hb);++a)U(this.hb[a],"newcopyright",this,this.nu)};\r
32591 l=Hd.prototype;l.getName=function(a){return a?this.MT:this.HP};\r
32592 l.getAlt=function(){return this.eI};\r
32593 l.getProjection=function(){return this.of};\r
32594 l.getTileLayers=function(){return this.hb};\r
32595 l.getCopyrights=function(a,b){for(var c=this.hb,d=[],f=0;f<r(c);f++){var g=c[f].getCopyright(a,b);g&&d.push(g)}return d};\r
32596 l.getMinimumResolution=function(){return this.vk};\r
32597 l.getMaximumResolution=function(a){return a?this.es(a):this.nk};\r
32598 l.JM=function(a,b){b=this.getProjection().fromLatLngToPixel(a,b);a=Math.floor(b.x/this.getTileSize());b=Math.floor(b.y/this.getTileSize());return new S(a,b)};\r
32599 var Dj=function(a){var b=[];tc(a,function(c,d){d&&b.push(d)});\r
32600 return"cb"+b.join("_").replace(/\W/g,"$")};\r
32601 l=Hd.prototype;l.CJ=function(a,b){var c="";if(r(this.hb)){c=this.hb[0].getTileUrl(a,b);a=ti(c)[4];c=c.substr(0,c.lastIndexOf(a))}a={};a.callbackNameGenerator=Dj;this.eD=new wg(c+"/mz",document,a)};\r
32602 l.getMaxZoomAtLatLng=function(a,b,c){if(this.iP){var d=22;if(c!==undefined)if(c<1)d=1;else if(c<22)d=c;a=this.JM(a,d);c={};c.x=a.x;c.y=a.y;c.z=d;c.v=this.aB(0);var f=function(g){var h={};if(g.zoom){h.zoom=g.zoom;h.status=200}else h.status=500;b(h)};\r
32603 this.eD||this.CJ(a,d);this.eD.send(c,f,f)}else{d={};d.zoom=c==undefined?this.es(a):Math.min(this.es(a),c);d.estimated=e;d.status=200;b(d)}};\r
32604 l.getTextColor=function(){return this.DU};\r
32605 l.getLinkColor=function(){return this.JO};\r
32606 l.getErrorMessage=function(){return this.Jm};\r
32607 l.getUrlArg=function(){return this.xV};\r
32608 l.aB=function(a,b,c){var d=i;a=a||-1;if(a==-1)d=this.hb[this.hb.length-1];else if(a<r(this.hb))d=this.hb[a];else return"";b=b||new S(0,0);c=c||0;var f;if(r(this.hb))f=d.getTileUrl(b,c).match(/[&?\/](?:v|lyrs)=([^&]*)/);return f&&f[1]?f[1]:""};\r
32609 l.mC=function(a,b){if(r(this.hb)){var c=this.getTileSize();a=this.hb[this.hb.length-1].getTileUrl(new S(Kd(a.x/c),Kd(a.y/c)),b);return a.indexOf("/vt?")>=0||a.indexOf("/vt/")>=0}return j};\r
32610 l.getTileSize=function(){return this.nl};\r
32611 l.getSpanZoomLevel=function(a,b,c){var d=this.of,f=this.getMaximumResolution(a),g=this.vk,h=K(c.width/2),k=K(c.height/2);for(f=f;f>=g;--f){var o=d.fromLatLngToPixel(a,f);o=new S(o.x-h-3,o.y+k+3);var q=new S(o.x+c.width+3,o.y-c.height-3);o=(new id(d.fromPixelToLatLng(o,f),d.fromPixelToLatLng(q,f))).sb();if(o.lat()>=b.lat()&&o.lng()>=b.lng())return f}return 0};\r
32612 l.getBoundsZoomLevel=function(a,b){var c=this.of,d=this.getMaximumResolution(a.T()),f=this.vk,g=a.nb();for(a=a.mb();g.lng()>a.lng();)g.yF(g.lng()-360);for(d=d;d>=f;--d){var h=c.fromLatLngToPixel(g,d),k=c.fromLatLngToPixel(a,d);if(fe(k.x-h.x)<=b.width&&fe(k.y-h.y)<=b.height)return d}return 0};\r
32613 l.nu=function(){A(this,"newcopyright")};\r
32614 l.es=function(a){for(var b=this.hb,c=[0,j],d=0;d<r(b);d++)b[d].hP(a,c);return c[1]?c[0]:B(this.nk,B(this.It,c[0]))};\r
32615 l.BF=function(a){this.It=a};\r
32616 l.YS=function(a){this.Ez=a};\r
32617 l.getHeading=function(){return this.Gb};\r
32618 l.getRotatableMapTypeCollection=function(){return this.fv};function Ej(a){this.Zb=a||0;this.on={};this.Bh=[]}\r
32619 l=Ej.prototype;l.qi=function(a){this.Zb=a};\r
32620 l.gM=function(){return Jd(this.Bh,n(function(a){return this.on[a]},\r
32621 this))};\r
32622 l.Pl=function(a,b){if(b)this.Py=a;else{this.on[a.getHeading()]=a;this.Bh.push(a.getHeading())}};\r
32623 l.isImageryVisible=function(a,b,c){c(b>=this.Zb)};\r
32624 l.Tm=function(){if(!this.Py)aa("No default map type available.");return this.Py};\r
32625 l.rs=function(a){if(!r(this.Bh))aa("No rotated map types available.");return this.on[this.nM(a)]};\r
32626 l.nM=function(a){a%=360;if(this.on[a])return a;for(var b=this.Bh.concat(this.Bh[0]+360),c=0,d=r(b)-1;c<d-1;){var f=K((c+d)/2);if(a<this.Bh[f])d=f;else c=f}c=b[c];b=b[d];return a<(c+b)/2?c:b%360};function sd(){Ej.call(this,14)}\r
32627 p(sd,Ej);sd.prototype.isImageryVisible=function(a,b,c){if(b>=this.Zb)if(x(Fj).sN("ob"))x(Fj).Lm("ob",a,c,i,b);else var d=v(x(Fj),"appfeaturesdata",function(f){if(f=="ob"){w(d);x(Fj).Lm("ob",a,c,i,b)}});\r
32628 else c(j)};var Gj={};function Hj(a){for(var b in a)b in Gj||(Gj[b]=a[b])}\r
32629 function F(a){return ue(Gj[a])?Gj[a]:""}\r
32630 window.GAddMessages=Hj;function Ij(a,b){this.gw=a;this.cO=b||a;this.Gh=i;this.tm=[]}\r
32631 var Jj=[Na,La],Kj=["movestart","panbyuser","zoominbyuser","zoomoutbyuser","zoomto"];l=Ij.prototype;l.nw=function(a,b,c,d){this.Gh&&this.Gh.sc()&&this.TB();this.Gh=be(this);d?fd(this.gw,d,n(this.mG,this,a,b,c,this.Gh)):this.mG(a,b,c,this.Gh)};\r
32632 l.TB=function(){ce(this);if(this.Yq){this.Yq();this.Yq=i}this.Wx()};\r
32633 l.Wx=function(){t(this.tm,function(a){w(a)});\r
32634 this.tm=[]};\r
32635 l.mG=function(a,b,c,d){if(this.Gh.sc()){a();this.GT(b,c,d)}};\r
32636 l.GT=function(a,b,c){var d=this,f=this.gw,g=this.cO;t(Jj,n(function(h){this.tm.push(fd(f,h,n(function(k){if(c.sc()){ce(d);b(h,k);this.Wx()}},\r
32637 this)))},\r
32638 this));this.Yq=function(){a()};\r
32639 t(Kj,n(function(h){this.tm.push(fd(g,h,n(function(){c.sc()&&this.TB()},\r
32640 this)))},\r
32641 this))};function Ld(a){this.$Q=a}\r
32642 Ld.prototype.getTileUrl=function(a,b){var c=this.Yr(a,b);return c&&Lj(c,a,b)};\r
32643 Ld.prototype.Yr=function(a,b){var c=this.$Q;if(!c)return i;for(var d=0;d<c.length;++d)if(!(c[d].minZoom>b||c[d].maxZoom<b)){var f=r(c[d].rect);if(f==0)return c[d].uris;for(var g=0;g<f;++g){var h=c[d].rect[g][b];if(h.n<=a.y&&h.s>=a.y&&h.w<=a.x&&h.e>=a.x)return c[d].uris}}return i};Cj.g=function(a,b,c,d){this.fh=a||new md;this.vk=b||0;this.nk=c||0;U(this.fh,"newcopyright",this,this.nu);a=d||{};this.ng=Le(a.opacity,1);this.cg=Le(a.isPng,j);this.GG=a.tileUrlTemplate;this.DO=a.kmlUrl};\r
32644 l=Cj.prototype;l.minResolution=function(){return this.vk};\r
32645 l.maxResolution=function(){return this.nk};\r
32646 l.ip=function(a){this.Ow=a};\r
32647 l.hP=function(a,b){var c=j;if(this.Ow)for(var d=0;d<this.Ow.length;++d){var f=this.Ow[d];if(f[0].contains(a)){b[0]=B(b[0],f[1]);c=e}}if(!c){a=this.as(a);if(r(a)>0)for(d=0;d<r(a);d++){if(a[d].maxZoom)b[0]=B(b[0],a[d].maxZoom)}else b[0]=this.nk}b[1]=c};\r
32648 l.getTileUrl=function(a,b){return this.GG?this.GG.replace("{X}",a.x).replace("{Y}",a.y).replace("{Z}",b).replace("{V1_Z}",17-b):Rc};\r
32649 l.isPng=function(){return this.cg};\r
32650 l.getOpacity=function(){return this.ng};\r
32651 l.getCopyright=function(a,b){return this.fh.$r(a,b)};\r
32652 l.as=function(a){return this.fh.as(a)};\r
32653 l.nu=function(){A(this,"newcopyright")};\r
32654 l.zT=function(a){this.FG=a};\r
32655 l.ZQ=function(a,b,c,d,f){this.FG&&this.FG(a,b,c,d,f)};function Lj(a,b,c){var d=(b.x+2*b.y)%a.length,f="Galileo".substr(0,(b.x*3+b.y)%8),g="";if(b.y>=10000&&b.y<100000)g="&s=";return[a[d],"x=",b.x,g,"&y=",b.y,"&z=",c,"&s=",f].join("")}\r
32656 ;function Ed(a,b,c,d){var f={};f.isPng=d;Cj.call(this,b,0,c,f);this.Ec=a;this.Mg=i}\r
32657 p(Ed,Cj);Ed.prototype.getTileUrl=function(a,b){var c=this.Mg&&this.Mg.Yr(a,b)||this.Ec;return Lj(c,a,b)};\r
32658 Ed.prototype.fp=function(a){this.Mg=a};function Mj(a,b){if(!a)return e;try{b=b||document;Nj(a,"testcookie","1","","",b);if(b.cookie.indexOf("testcookie")!=-1){Nj(a,"testcookie","1","","Thu, 01-Jan-1970 00:00:01 GMT",b);return e}}catch(c){}return j}\r
32659 function Nj(a,b,c,d,f,g){(g||document).cookie=[b,"=",c,"; domain=.",a,d?"; path=/"+d:"",f?"; expires="+f:""].join("")}\r
32660 ;function Id(a,b,c,d,f){Ed.call(this,a,b,c);d&&this.vT(d,f)}\r
32661 p(Id,Ed);Id.prototype.vT=function(a,b){if(!(Math.round(Math.random()*100)<=hb)&&Mj(b)){Nj(b,"khcookie",a,"kh");if(rb){Nj(b,"khcookie",a,"maptilecompress");Nj(b,"khcookie",a,"vt/lbw")}}else for(b=0;b<r(this.Ec);++b)this.Ec[b]+="cookie="+a+"&"};function Gd(a){var b=n(a.getTileUrl,a);a.getTileUrl=function(c,d){var f=b(c,d);if(c=Oj(c,d))f+="&opts="+c;return f}}\r
32662 var Pj=new Zg(53324,34608,60737,41615);function Oj(a,b){if(b<16)return i;b=1<<b-16;a=new S(a.x/b,a.y/b);if(!Pj.Kf(a))return i;if(Wb){if(Vb)return"bs";return"b"}return i}\r
32663 ;function Qj(){this.Ha=i;this.Ap=[]}\r
32664 l=Qj.prototype;l.bO=j;l.jv=j;l.ot=0;l.vj=i;l.initialize=function(a,b){this.Ha=new wg(b,window.document);this.bO=e;this.jS=tf(this,this.PH);U(a,Da,this,this.fH);U(a,Ga,this,this.fH)};\r
32665 l.QG=function(a){Ce(this.Ap,a)||this.Ap.push(a)};\r
32666 l.fH=function(){if(!this.jv){var a=120000-(ed()-this.ot);if(a<=0){this.ot=ed();this.li()}else{this.jv=e;function b(){this.jv=j;this.ot=ed();this.li()}\r
32667 setTimeout(n(b,this),a)}}};\r
32668 l.li=function(){if(r(this.Ap)!=0){var a={};a.x=0;a.y=0;a.z=0;a.lyrs=this.Ap.join(",");this.Ha.send(a,this.jS)}};\r
32669 l.PH=function(a){if(a&&a.yW==0)if(!this.vj||this.vj<a.e){this.vj=a.e;A(this,"pt_update")}};\r
32670 l.tA=function(){return this.vj};\r
32671 l.vv=function(a){this.vj=a};function Dd(a,b,c,d){var f={};f.isPng=d;Cj.call(this,b,0,c,f);this.Ec=a;a=a[0].match(this.Dz);this.Xq=parseInt(a[2],10);this.Xb=a[1];x(Qj).vv(this.Xq,this.Xb,new S(0,0),0);x(Qj).QG(this.Xb);this.Mg=i}\r
32672 p(Dd,Cj);l=Dd.prototype;l.Dz=new RegExp(/(m|h|r)@(\d+)/);l.vv=function(a){this.Xq=a;a=this.eM();for(var b=0,c=r(this.Ec);b<c;++b)this.Ec[b]=this.Ec[b].replace(this.Dz,a)};\r
32673 l.getTileUrl=function(a,b){var c=this.Mg&&this.Mg.Yr(a,b)||this.Ec;return Lj(c,a,b)};\r
32674 l.eM=function(){return this.Xb+"@"+this.Xq};\r
32675 l.fp=function(a){this.Mg=a};function Pc(){Pc.g.apply(this,arguments)}\r
32676 ;var Rj="__mal_";\r
32677 Pc.g=function(a,b){b=b||new Sj;Eg(b.stats,"mctr0");this.So=b.nW||new Ai;b.gW||Wd(a);this.A=a;this.Ca=[];Ke(this.Ca,b.mapTypes||wc);Fg(r(this.Ca));this.o=b.jk?b.jk.mapType:this.Ca[0];this.rB=j;t(this.Ca,n(this.kD,this));U(x(Qj),"pt_update",this,this.jR);this.qU=b.vG;if(b.jk)this.Za=b.jk.zoom;if(b.size){this.ze=b.size;Cf(a,b.size)}else this.ze=Kf(a);ig(a).position!="absolute"&&Wf(a);a.style.backgroundColor=b.backgroundColor||"#e5e3df";var c=this.EJ(a,b.vW);this.Hn=c;Xf(c);c.style.width="100%";c.style.height=\r
32678 "100%";this.l=Tj(0,this.Hn);this.mP();Uj(a);this.nK={draggableCursor:b.draggableCursor,draggingCursor:b.draggingCursor};this.tD=b.noResize;this.ic=b.jk?b.jk.center:b.center||i;this.Kc=i;this.Vv=Hb;this.Ii=[];Eg(b.stats,"mczl0");for(a=0;a<2;++a)this.Ii.push(new Vj(this.l,this.ze,this));Eg(b.stats,"mczl1");this.fa=this.Ii[1];this.bc=this.Ii[0];this.EG=new Ij(this);U(this,"zoomto",this,this.ow);U(this,"zoominbyuser",this,this.ow);U(this,"zoomoutbyuser",this,this.ow);this.HT();this.Vh=[];this.lf=this.Cd=\r
32679 i;this.FT();this.HG=yh(this.fa,La,this);this.Dx=yh(this.fa,"beforetilesload",this);this.lH=yh(this.fa,Na,this);this.mj=e;this.Ay=this.bj=j;this.qm=mf(n(function(d){vd("zoom",1,n(function(f){this.Ay=e;d(new f(this))},\r
32680 this))},\r
32681 this));this.Zb=0;this.be=B(30,30);this.wr=e;this.Wc=[];this.fq=[];this.Uh=[];this.ro={};this.Uc=[];this.ON();this.$c=[];this.eh=[];this.Z=[];this.xa(window);this.Wq=i;this.gH=new Mi(this,b.hH);this.Ha=new wg(_mHost+"/maps/gen_204",window.document);this.Pf=b.eO||j;b.ml||this.JN(b);this.gB=b.googleBarOptions;this.xs=j;this.ZO=b.logoPassive;this.zz();this.sy=j;A(Pc,Ba,this);Eg(b.stats,"mctr1")};\r
32682 Pc.prototype.EJ=function(a,b){var c=i;if(b)c=Nf(b);if(c)Bf(c,Xg);else c=J("DIV",a,Xg);return c};\r
32683 Pc.prototype.ON=function(){for(var a=0;a<8;++a)this.Uc.push(Tj(100+a,this.l));Wj([this.Uc[4],this.Uc[6],this.Uc[7]]);$f(this.Uc[4],"default");$f(this.Uc[7],"default")};\r
32684 Pc.prototype.JN=function(a){var b=i;if(xc||a.eO)this.$p(a.logoPassive);else b=a.copyrightOptions?a.copyrightOptions:{googleCopyright:e,allowSetVisibility:!hc};a=this.Gc=new Xj(b);var c;if(b=Nf("overview-toggle"))c=new Yj(3,new R(3+b.offsetWidth,2));this.$a(a,c)};\r
32685 Pc.prototype.mP=function(){if(E.pb()&&Wi()){this.Hn.setAttribute("dir","ltr");this.l.setAttribute("dir","rtl")}};\r
32686 var Uj=function(a){var b=ig(a).dir||ig(a).direction;E.type==1&&!Wi()&&b=="rtl"&&Kg(a,"dir","ltr")};\r
32687 l=Pc.prototype;l.$p=function(a){this.$a(new Zj(a))};\r
32688 l.xJ=function(a,b){a=new Mh(a,b);b=[U(a,"dragstart",this,this.lg),U(a,"drag",this,this.jf),U(a,"move",this,this.uQ),U(a,"dragend",this,this.kg),U(a,m,this,this.RP),U(a,ka,this,this.fu)];Ke(this.Z,b);return a};\r
32689 l.xa=function(a,b){t(this.Z,w);ff(this.Z);if(b)if(ue(b.noResize))this.tD=b.noResize;this.G=this.xJ(this.l,this.nK);var c=[T(this.A,ja,this,this.GD),T(this.A,sa,this,this.mg),T(this.A,"mouseover",this,this.tQ),T(this.A,"mouseout",this,this.AD),U(this,Ca,this,this.nP),U(this,ka,this,this.QJ)];Ke(this.Z,c);this.UN();this.tD||this.Z.push(T(a,Ea,this,this.$i));t(this.eh,function(d){d.control.xa(a)});\r
32690 this.Ub().xa(a,b)};\r
32691 l.mi=function(a,b){if(b||!this.Eh())this.Kc=a};\r
32692 l.T=function(){return this.ic};\r
32693 l.Ga=function(a,b,c,d,f){Yb&&this.IF(Hb);this.He()&&this.qm(function(k){k.cancelContinuousZoom()});\r
32694 if(b){var g=c||this.o||this.Ca[0],h=se(b,0,B(30,30));g.BF(h)}d&&A(this,"panbyuser");this.aj(a,b,c,f)};\r
32695 l.fF=function(a){this.ic=a};\r
32696 l.aj=function(a,b,c,d){var f=!this.ha();b&&this.tn();this.am(d);var g=[],h=i,k=i;if(a){k=a;h=this.xb();this.ic=a}else{var o=this.bh();k=o.latLng;h=o.divPixel;this.ic=o.newCenter}if(c&&this.qU)c=c.Ez;var q=c||this.o||this.Ca[0];c=0;if(ue(b)&&ve(b))c=b;else if(this.Za)c=this.Za;var s=this.At(c,q,this.bh().latLng);if(s!=this.Za){g.push([this,Ga,this.Za,s,d]);this.Za=s}d&&this.YU(d,f);if(q!=this.o||f){this.o=q;Eg(d,"zlsmt0");t(this.Ii,function(H){H.Bb(q)});\r
32697 Eg(d,"zlsmt1");g.push([this,Ca,d])}c=this.fa;var u=this.zb();Eg(d,"pzcfg0");c.configure(k,h,s,u);Eg(d,"pzcfg1");c.show();t(this.$c,function(H){var G=H.La;G.configure(k,h,s,u);H.I()||G.show()});\r
32698 if(!this.ic)this.ic=this.X(this.xb());this.Ku(e);if(a||b!=i||f){g.push([this,"move"]);g.push([this,Da])}if(f){this.UE();g.push([this,ra]);this.sy=e}for(a=0;a<r(g);++a)A.apply(i,g[a])};\r
32699 l.nG=function(a,b,c){var d=function(){b.branch();c.oG==0&&b.tick("tlol0");c.oG++},\r
32700 f=function(){b.tick("tlolim");b.done()},\r
32701 g=n(function(){if(c.pl==1){b.tick("tlol1");this.lf=this.Cd=i}b.done();c.pl--},\r
32702 this);a.nw(d,f,g);delete d;delete f;delete g};\r
32703 l.XU=function(a){this.Cd={oG:0,pl:r(this.Vh)};this.lf=a;t(this.Vh,n(function(b){this.nG(b,a,this.Cd)},\r
32704 this))};\r
32705 l.YU=function(a){this.XU(a);var b=function(){a.tick("t0");a.branch()},\r
32706 c=function(){a.done("tim")},\r
32707 d=n(function(f,g){f==Na&&a.Xg("nvt",""+g);hd(a,this);a.tick("t1");a.done()},\r
32708 this);this.EG.nw(b,c,d);delete b;delete c;delete d};\r
32709 l.qb=function(a,b,c){var d=this.xb(),f=this.J(a),g=d.x-f.x;d=d.y-f.y;f=this.O();this.am(c);if(fe(g)==0&&fe(d)==0)this.ic=a;else if(fe(g)<=f.width&&fe(d)<f.height){this.to(new R(g,d),b,c);xj("panned-to")}else this.Ga(a,undefined,undefined,b,c)};\r
32710 l.F=function(){return K(this.Za)};\r
32711 l.te=function(a){this.aj(undefined,a)};\r
32712 l.$F=function(a){this.Za=a};\r
32713 l.Dc=function(a,b,c){A(this,"zoominbyuser");this.Sp(1,e,a,b,c)};\r
32714 l.bd=function(a,b){A(this,"zoomoutbyuser");this.Sp(-1,e,a,j,b)};\r
32715 l.NV=function(a,b,c){this.Sp(a,j,b,j,c)};\r
32716 l.tH=function(a,b,c){this.Sp(a,j,b,e,c)};\r
32717 l.Sp=function(a,b,c,d,f){this.He()&&f?this.qm(function(g){g.zoomContinuously(a,b,c,d)}):this.KV(a,\r
32718 b,c,d)};\r
32719 l.Lc=function(){var a=this.zb(),b=this.O();return new Zg([new S(a.x,a.y),new S(a.x+b.width,a.y+b.height)])};\r
32720 l.H=function(){var a=this.Lc(),b=new S(a.minX,a.maxY);a=new S(a.maxX,a.minY);return this.gL(b,a)};\r
32721 l.gL=function(a,b){var c=this.X(a,e),d=this.X(b,e),f=d.lat(),g=d.lng(),h=c.lat(),k=c.lng();if(d.lat()<c.lat()){f=c.lat();h=d.lat()}c=new id(new z(h,k),new z(f,g));a=this.X(new S((a.x+b.x)/2,(a.y+b.y)/2),e);c.contains(a)||(c=new id(new z(h,g),new z(f,k)));return c};\r
32722 l.RM=function(){var a=this.Lc(),b=new S(a.minX,a.maxY);a=new S(a.maxX,a.minY);return new nj(this.X(b,e),this.X(a,e))};\r
32723 l.O=function(){return this.ze};\r
32724 l.AL=function(){return this.o};\r
32725 l.hM=function(){return this.Ca};\r
32726 l.Bb=function(a,b){if(this.ha())this.Yf().Rk()?this.Yf().oT(a,b):this.aj(undefined,undefined,a,b);else this.o=a};\r
32727 l.Pl=function(a){if(this.oO(a))if(ye(this.Ca,a)){this.kD(a);A(this,"addmaptype",a)}};\r
32728 l.CE=function(a){if(!(r(this.Ca)<=1))if(xe(this.Ca,a)){this.o==a&&this.Bb(this.Ca[0]);this.II(a);A(this,"removemaptype",a)}};\r
32729 l.oO=function(a){return a==Nd||a==Od?E.bC(xb):e};\r
32730 l.Yf=function(){if(!this.SE)this.SE=new $j(this);return this.SE};\r
32731 l.em=function(a){this.Yf().em(a)};\r
32732 l.Wj=function(){return this.Yf().Wj()};\r
32733 l.Er=function(){this.Yf().Er()};\r
32734 l.or=function(){this.Yf().or()};\r
32735 l.Rk=function(){return this.Yf().Rk()};\r
32736 l.AE=function(a,b){var c=this.ro;t(a,function(d){c[d]=b});\r
32737 this.Uh.push(b);b.initialize(this)};\r
32738 l.Fj=function(a){return this.ro[a]};\r
32739 l.ba=function(a,b){var c=this.ro[a.Ea?a.Ea():""];this.fq.push(a);if(c)c.ba(a,b);else{if(a instanceof ak){b=0;for(c=r(this.$c);b<c&&this.$c[b].zPriority<=a.zPriority;)++b;this.$c.splice(b,0,a);a.initialize(this);for(b=0;b<=c;++b)this.$c[b].La.ri(b);b=this.bh();c=a.La;c.configure(b.latLng,b.divPixel,this.Za,this.zb());a.I()||c.show()}else{this.Wc.push(a);a.initialize(this,undefined,b);a.redraw(e)}this.Yw(a)}A(this,"addoverlay",a)};\r
32740 l.Yw=function(a){var b=v(a,m,n(function(c){A(this,m,a,undefined,c)},\r
32741 this));this.Ol(b,a);b=v(a,ja,n(function(c){this.GD(c,a);Tg(c)},\r
32742 this));this.Ol(b,a);b=v(a,Aa,n(function(c){A(this,"markerload",c,a.UD);if(!a.Pk)a.Pk=fd(a,"remove",n(function(){A(this,"markerunload",a)},\r
32743 this))},\r
32744 this));this.Ol(b,a)};\r
32745 function bk(a){if(a[Rj]){t(a[Rj],function(b){w(b)});\r
32746 a[Rj]=i}}\r
32747 l=Pc.prototype;l.ka=function(a,b){var c=this.ro[a.Ea?a.Ea():""];xe(this.fq,a);if(c){c.ka(a,b);A(this,"removeoverlay",a)}else if(xe(a instanceof ak?this.$c:this.Wc,a)){a.remove();bk(a);A(this,"removeoverlay",a)}};\r
32748 l.Vf=function(a){t(this.Wc,a);t(this.Uh,function(b){b.Vf(a)})};\r
32749 l.XI=function(a){var b=(a||{}).Dd,c=[],d=function(g){oi.rd(g)==b&&c.push(g)};\r
32750 t(this.Wc,d);t(this.$c,d);t(this.Uh,function(g){g.Vf(d)});\r
32751 a=0;for(var f=r(c);a<f;++a)this.ka(c[a])};\r
32752 l.Zx=function(a){var b=this.oa();b&&this.YQ(b.rd(),a)&&this.da();this.XI(a);this.KC=this.LC=i;this.mi(i);A(this,"clearoverlays")};\r
32753 l.$a=function(a,b){this.ge(a);var c=a.initialize(this);b=b||a.getDefaultPosition();a.printable()||bg(c);a.selectable()||gg(c);vh(c,i,Tg);if(!a.Jq||!a.Jq())sh(c,ja,Sg);c.style.zIndex==""&&fg(c,0);yh(a,"zoomto",this);b&&b.apply(c);this.Wq&&a.allowSetVisibility()&&this.Wq(c);ze(this.eh,{control:a,element:c,position:b},function(d,f){return d.position&&f.position&&d.position.anchor<f.position.anchor})};\r
32754 l.jA=function(){return Jd(this.eh,function(a){return a.control})};\r
32755 l.uL=function(a){return(a=this.Zr(a))&&a.element?a.element:i};\r
32756 l.ge=function(a,b){for(var c=this.eh,d=0;d<r(c);++d){var f=c[d];if(f.control==a){b||Cg(f.element);c.splice(d,1);a.Jk();a.clear();return}}};\r
32757 l.TS=function(a,b){(a=this.Zr(a))&&b.apply(a.element)};\r
32758 l.vL=function(a){return(a=this.Zr(a))&&a.position?a.position:i};\r
32759 l.Zr=function(a){for(var b=this.eh,c=0;c<r(b);++c)if(b[c].control==a)return b[c];return i};\r
32760 l.rn=function(){this.kF(Tf)};\r
32761 l.ti=function(){this.kF(Uf)};\r
32762 l.kF=function(a){var b=this.eh;this.Wq=a;for(var c=0;c<r(b);++c){var d=b[c];d.control.allowSetVisibility()&&a(d.element)}};\r
32763 l.$i=function(){var a=Kf(this.A);if(!a.equals(this.O())){this.ze=a;E.type==1&&Cf(this.Hn,a);if(this.ha()){this.ic=this.X(this.xb());t(this.Ii,function(c){c.ZF(a)});\r
32764 t(this.$c,function(c){c.La.ZF(a)});\r
32765 var b=this.getBoundsZoomLevel(this.vA());b<this.Nc()&&this.qi(B(0,b));A(this,Ea)}}};\r
32766 l.vA=function(){if(!this.Xz)this.Xz=new id(new z(-85,-180),new z(85,180));return this.Xz};\r
32767 l.getBoundsZoomLevel=function(a){return(this.o||this.Ca[0]).getBoundsZoomLevel(a,this.ze)};\r
32768 l.UE=function(){this.KS=this.T();this.LS=this.F()};\r
32769 l.QE=function(){var a=this.KS,b=this.LS;if(a)b==this.F()?this.qb(a,e):this.Ga(a,b,i,e)};\r
32770 l.ha=function(){return this.sy};\r
32771 l.nc=function(){this.G.disable()};\r
32772 l.Ic=function(){this.G.enable()};\r
32773 l.qj=function(){return this.G.enabled()};\r
32774 l.At=function(a,b,c){return se(a,this.Nc(b),this.Mc(b,c))};\r
32775 l.qi=function(a){a=se(a,0,B(30,30));if(a!=this.Zb)if(!(a>this.Mc())){var b=this.Nc();this.Zb=a;if(this.Zb>this.Za)this.te(this.Zb);else this.Zb!=b&&A(this,"zoomrangechange")}};\r
32776 l.Nc=function(a){a=(a||this.o||this.Ca[0]).getMinimumResolution();return B(a,this.Zb)};\r
32777 l.Ev=function(a){var b=se(a,0,B(30,30));if(a!=this.be)if(!(b<this.Nc())){a=this.Mc();this.be=b;if(this.be<this.Za)this.te(this.be);else this.be!=a&&A(this,"zoomrangechange")}};\r
32778 l.Mc=function(a,b){a=(a||this.o||this.Ca[0]).getMaximumResolution(b||this.ic);return me(a,this.be)};\r
32779 l.Ya=function(a){return this.Uc[a]};\r
32780 l.TD=function(a){return Sf(this.Uc[a])};\r
32781 l.R=function(){return this.A};\r
32782 l.rA=function(){return this.G};\r
32783 l.HT=function(){v(this,"beforetilesload",n(function(){this.xr&&this.Ov(new cd("pan_drag"))},\r
32784 this))};\r
32785 l.lg=function(){this.am();this.xr=e};\r
32786 l.jf=function(){if(this.xr)if(this.lh)A(this,"drag");else{A(this,"dragstart");A(this,"movestart");this.lh=e}};\r
32787 l.kg=function(a){if(this.lh){A(this,"dragend");A(this,Da);this.AD(a);var b={};a=kh(a,this.A);var c=this.oh(a),d=this.O();b.infoWindow=this.Sj();b.mll=this.T();b.cll=c;b.cp=a;b.ms=d;A(this,"panto","mdrag",b);this.xr=this.lh=j}};\r
32788 l.GD=function(a,b){if(!a.cancelContextMenu){var c=kh(a,this.A),d=this.oh(c);if(!b||b==this.R())b=this.Fj("Polygon").oB(d);if(this.mj)if(this.Sg){this.Sg=j;this.bd(i,e);clearTimeout(this.AS);A(this,"zoomto","drclk")}else{this.Sg=e;var f=Qg(a);this.AS=qg(this,n(function(){this.Sg=j;A(this,"singlerightclick",c,f,b)},\r
32789 this),250)}else A(this,"singlerightclick",c,Qg(a),b);Ug(a);if(E.type==4&&E.os==0)a.cancelBubble=e}};\r
32790 l.fu=function(a){a.button>1||this.qj()&&this.wr&&this.tl(a,ka)};\r
32791 l.Eh=function(){var a=j;this.He()&&this.qm(function(b){a=b.Eh()});\r
32792 return a};\r
32793 l.QJ=function(a,b){if(b)if(this.mj){if(!this.Eh()){this.Dc(b,e,e);A(this,"zoomto","dclk")}}else this.qb(b,e)};\r
32794 l.RP=function(a){var b=ed();if(!ue(this.rC)||b-this.rC>100)this.tl(a,m);this.rC=b};\r
32795 l.hh=i;l.tl=function(a,b,c){c=c||kh(a,this.A);var d;this.hh=d=this.ha()?ck(c,this):new z(0,0);for(var f=0,g=this.Uh.length;f<g;++f)if(this.Uh[f].Lj(a,b,c,d))return;b==m||b==ka?A(this,b,i,d):A(this,b,d)};\r
32796 l.mg=function(a){this.lh||this.tl(a,sa)};\r
32797 l.AD=function(a){if(!this.lh){var b=kh(a,this.A);if(!this.qO(b)){this.eC=j;this.tl(a,"mouseout",b)}}};\r
32798 l.qO=function(a){var b=this.O();return a.x>=2&&a.y>=2&&a.x<b.width-2&&a.y<b.height-2};\r
32799 l.tQ=function(a){if(!(this.lh||this.eC)){this.eC=e;this.tl(a,"mouseover")}};\r
32800 function ck(a,b){var c=b.zb();return b.X(new S(c.x+a.x,c.y+a.y))}\r
32801 l=Pc.prototype;l.uQ=function(){this.ic=this.X(this.xb());var a=this.zb();this.fa.RE(a);t(this.$c,function(b){b.La.RE(a)});\r
32802 this.Ku(j);A(this,"move")};\r
32803 l.Ku=function(a){function b(c){c&&c.redraw(a)}\r
32804 t(this.Wc,b);t(this.Uh,function(c){c.Vf(b)})};\r
32805 l.to=function(a,b,c){var d=Math.sqrt(a.width*a.width+a.height*a.height);d=B(5,K(d/20));this.Xh=new Ci(d);this.Xh.reset();this.bp(a);A(this,"movestart");b&&A(this,"panbyuser");this.ez(c)};\r
32806 l.bp=function(a){this.aR=new R(a.width,a.height);a=this.G;this.cR=new S(a.left,a.top)};\r
32807 l.FT=function(){v(this,"addoverlay",n(function(a){if(a instanceof ak){a=new Ij(a.La,this);this.Vh.push(a);if(this.Cd&&this.lf){this.Cd.pl++;this.nG(a,this.lf,this.Cd)}}},\r
32808 this));v(this,"removeoverlay",n(function(a){if(a instanceof ak)for(var b=0;b<r(this.Vh);++b)if(this.Vh[b].gw==a.La){this.Vh.splice(b,1);if(this.Cd&&this.lf){this.Cd.pl--;if(this.Cd.pl==0){this.lf.done("tlol1");this.Cd=this.lf=i}else this.lf.done()}break}},\r
32809 this))};\r
32810 l.Ov=function(a,b){var c=function(g){g.branch("t0");g.done()},\r
32811 d=function(g){g.CH()},\r
32812 f=function(g,h,k){h==Na&&g.Xg("nvt",""+k);g.done("t1")};\r
32813 this.EG.nw(pf(c,a),pf(d,a),pf(f,a),b);delete c;delete d;delete f};\r
32814 l.ow=function(){this.Ov(new cd("zoom"))};\r
32815 l.WU=function(){this.Ov(new cd("pan_ctrl"),"panbyuser")};\r
32816 l.db=function(a,b){this.WU();var c=this.O(),d=K(c.width*0.3);c=K(c.height*0.3);this.to(new R(a*d,b*c),e)};\r
32817 l.ez=function(a){!this.pg&&a&&a.branch();this.pg=a;this.NF(this.Xh.next());if(this.Xh.more())this.vo=setTimeout(n(this.ez,this,a),10);else{this.pg=this.vo=i;a&&a.done();A(this,Da)}};\r
32818 l.NF=function(a){var b=this.cR,c=this.aR;this.G.uc(b.x+c.width*a,b.y+c.height*a)};\r
32819 l.am=function(a){if(this.vo){clearTimeout(this.vo);this.vo=i;A(this,Da);if(this.pg&&this.pg!==a)this.pg.done();else this.pg&&setTimeout(function(){a.done()},\r
32820 0);this.pg=i}};\r
32821 l.fL=function(a){var b=this.zb();return this.fa.Nm(new S(a.x+b.x,a.y+b.y))};\r
32822 l.oh=function(a){return ck(a,this)};\r
32823 l.Tz=function(a){a=this.J(a);var b=this.zb();return new S(a.x-b.x,a.y-b.y)};\r
32824 l.X=function(a,b){return this.fa.X(a,b)};\r
32825 l.Sd=function(a){return this.fa.Sd(a)};\r
32826 l.J=function(a,b){var c=this.fa;b=b||this.xb();return c.J(a,undefined,b)};\r
32827 l.Uz=function(a){return this.fa.J(a)};\r
32828 l.vM=function(a,b,c){var d=this.o.getProjection();c=c==i?this.F():c;a=d.fromLatLngToPixel(a,c);b=d.fromLatLngToPixel(b,c);b=new S(b.x-a.x,b.y-a.y);return Math.sqrt(b.x*b.x+b.y*b.y)};\r
32829 l.ws=function(){return this.fa.ws()};\r
32830 l.zb=function(){return new S(-this.G.left,-this.G.top)};\r
32831 l.xb=function(){var a=this.zb(),b=this.O();a.x+=K(b.width/2);a.y+=K(b.height/2);return a};\r
32832 l.bh=function(){return this.Kc&&this.H().contains(this.Kc)?{latLng:this.Kc,divPixel:this.J(this.Kc),newCenter:i}:{latLng:this.ic,divPixel:this.xb(),newCenter:this.ic}};\r
32833 function Tj(a,b){b=J("div",b,Xg);fg(b,a);return b}\r
32834 l=Pc.prototype;l.KV=function(a,b,c,d){a=b?this.F()+a:a;if(this.At(a,this.o,this.T())==a)if(c&&d)this.Ga(c,a,this.o);else if(c){A(this,"zoomstart",a-this.F(),c,d);b=this.Kc;this.Kc=c;this.te(a);this.Kc=b}else this.te(a);else c&&d&&this.qb(c)};\r
32835 l.yN=function(){t(this.$c,function(a){a.La.hide()})};\r
32836 l.hJ=function(a){var b=this.bh(),c=this.F(),d=this.zb();t(this.$c,function(f){var g=f.La;g.configure(b.latLng,a,c,d);f.I()||g.show()})};\r
32837 l.De=function(a){return a};\r
32838 l.UN=function(){this.Z.push(T(document,m,this,this.NI))};\r
32839 l.NI=function(a){var b=this.oa();for(a=Qg(a);a;a=a.parentNode){if(a==this.A){this.XL();return}if(a==this.Uc[7]&&b&&b.bg())break}this.$O()};\r
32840 l.$O=function(){this.Is=j};\r
32841 l.XL=function(){this.Is=e};\r
32842 l.jT=function(a){this.Is=a};\r
32843 l.rN=function(){return this.Is||j};\r
32844 l.tT=function(a){this.fa=a;w(this.HG);w(this.Dx);w(this.lH);this.HG=yh(this.fa,La,this);this.Dx=yh(this.fa,"beforetilesload",this);this.lH=yh(this.fa,Na,this)};\r
32845 l.uT=function(a){this.bc=a};\r
32846 l.tn=function(){Qf(this.bc.l)};\r
32847 l.xK=function(){if(!this.bj){this.bj=e;this.qm(n(function(){this.ha()&&this.aj()},\r
32848 this))}};\r
32849 l.YJ=function(){this.bj=j};\r
32850 l.lJ=function(){return this.bj};\r
32851 l.He=function(){return this.Ay&&this.bj};\r
32852 l.uz=function(){this.mj=e};\r
32853 l.jr=function(){this.mj=j};\r
32854 l.jK=function(){return this.mj};\r
32855 l.yK=function(){this.wr=e};\r
32856 l.ZJ=function(){this.wr=j};\r
32857 l.xN=function(){t(this.Uc,Tf)};\r
32858 l.XT=function(){t(this.Uc,Uf)};\r
32859 l.qQ=function(a){this.rB=e;if(a==(this.mapType||this.Ca[0]))A(this,"zoomrangechange")};\r
32860 l.kD=function(a){this.Ol(U(a,"newcopyright",this,function(){this.qQ(a)}),\r
32861 a)};\r
32862 l.Ol=function(a,b){if(b[Rj])b[Rj].push(a);else b[Rj]=[a]};\r
32863 l.II=function(a){a[Rj]&&t(a[Rj],function(b){w(b)})};\r
32864 l.Bz=function(){if(!this.kv()){this.Ro=mf(n(function(a){vd("scrwh",1,n(function(b){a(new b(this))},\r
32865 this))},\r
32866 this));this.Ro(n(function(a){yh(a,"zoomto",this);this.magnifyingGlassControl=new dk;this.$a(this.magnifyingGlassControl)},\r
32867 this))}};\r
32868 l.Wy=function(){if(this.kv()){this.Ro(function(a){a.disable()});\r
32869 this.Ro=i;this.ge(this.bP);this.bP=i}};\r
32870 l.kv=function(){return!!this.Ro};\r
32871 l.zz=function(){if(E.Dh()&&!this.uu()){this.Wn=mf(n(function(a){vd("touch",5,n(function(b){a(new b(this))},\r
32872 this))},\r
32873 this));this.Wn(n(function(a){yh(a,oa,this.l);yh(a,pa,this.l)},\r
32874 this))}};\r
32875 l.aK=function(){if(this.uu()){this.Wn(n(function(a){a.disable();ph(a,oa);ph(a,pa)},\r
32876 this));this.Wn=i}};\r
32877 l.uu=function(){return!!this.Wn};\r
32878 l.nP=function(a){if(this.o==Nd||this.o==Od)this.ld||this.Fy(a)};\r
32879 l.Fy=function(a,b){vd("earth",1,n(function(c){if(!this.ld){this.ld=new c(this);this.ld.initialize(a)}b&&b(this.ld)},\r
32880 this),a)};\r
32881 l.PM=function(a){this.ld?this.ld.SA(a):this.Fy(i,function(b){b.SA(a)})};\r
32882 l.getEventContract=function(){if(!this.Ma)this.Ma=new ek;return this.Ma};\r
32883 l.DJ=function(a,b,c){c=c||{};var d=ve(c.zoomLevel)?c.zoomLevel:15,f=c.mapType||this.o,g=c.mapTypes||this.Ca,h=c.size||new R(217,200);Cf(a,h);var k=new Sj;k.mapTypes=g;k.size=h;k.ml=ue(c.ml)?c.ml:e;k.copyrightOptions=c.copyrightOptions;k.hH="p";k.noResize=c.noResize;k.vG=e;a=new Pc(a,k);if(c.staticMap)a.nc();else{a.$a(new fk);r(a.Ca)>1&&a.$a(new gk(e))}a.Ga(b,d,f);var o=c.overlays;if(!o){o=[];this.Vf(function(q){q instanceof hk||o.push(q)})}for(b=0;b<r(o);++b)if(o[b]!=this.oa())if(!(o[b].ya()&&o[b].I()))if(c=\r
32884 o[b].copy()){c instanceof ik&&c.nc();\r
32885 a.ba(c)}return a};\r
32886 l.Ub=function(){if(!this.ik){this.ik=new jk(this,this.So);for(var a=["maxtab","markerload",Ka,Ja,"infowindowupdate",Ha,Ia,"maximizedcontentadjusted","iwopenfrommarkerjsonapphook"],b=0,c=r(a);b<c;++b)yh(this.ik,a[b],this)}return this.ik};\r
32887 l.GN=function(){return this.TD(7)&&this.TD(5)?e:j};\r
32888 l.ja=function(a,b,c,d){this.Ub().ja(a,b,c,d)};\r
32889 l.Hp=function(a,b,c,d,f){this.Ub().Hp(a,b,c,d,f)};\r
32890 l.Gp=function(a,b,c){this.Ub().Gp(a,b,c)};\r
32891 l.cl=function(a){this.Ub().cl(a)};\r
32892 l.YQ=function(a,b){b=(b||{}).Dd;if(Ce(this.Wc,a))return oi.rd(a)==b;return e};\r
32893 l.da=function(){this.Ub().da()};\r
32894 l.Ej=function(){return this.Ub().Ej()};\r
32895 l.oa=function(){return this.Ub().oa()};\r
32896 l.Sj=function(){var a=this.oa();return!!a&&!a.I()};\r
32897 l.Kb=function(a,b){return this.Ub().Kb(a,b)};\r
32898 l.qu=function(a,b,c,d,f){this.Ub().qu(a,b,c,d,f)};\r
32899 l.jR=function(){t(this.Ca,function(a){t(a.getTileLayers(),function(b){if(b instanceof Dd){var c=x(Qj).tA(b.Xb,new S(0,0),0);b.vv(c)}})});\r
32900 t(this.Ii,function(a){a.refresh()})};\r
32901 l.it=function(){var a=this.o;return a==Nd||a==Od};\r
32902 l.IF=function(a){this.Vv=a};\r
32903 function Li(a,b,c,d,f){if(c){a.ll=b.T().Aa();a.spn=b.H().sb().Aa()}if(d){c=b.o.getUrlArg();if(c!=f)a.t=c;else delete a.t}a.z=b.F();A(b,Pa,a)}\r
32904 ;var $j=function(a){this.f=a;this.Sk=this.Kn=j;this.Gb=a.o.getHeading();this.Cs=e};\r
32905 l=$j.prototype;l.Wj=function(){return this.Kn};\r
32906 l.em=function(a){var b=this.f,c=this.f.o;if(this.Kn){var d=c.getRotatableMapTypeCollection(),f=this.Gb;if(d){c=d.rs(a);if(f!=c.getHeading()){this.Gb=c.getHeading();this.$o(c)}}else this.Gb=c.getHeading();f!=a&&A(b,"headingchanged")}};\r
32907 l.Sx=function(){if(this.Cs){var a=this.f.o;a.getRotatableMapTypeCollection()?this.AF(a.getRotatableMapTypeCollection().Tm()):this.Dp(a.getHeading(),j)}};\r
32908 l.oT=function(a,b){var c=a.getRotatableMapTypeCollection();if(c&&a==c.Tm())this.AF(a,b);else{this.$o(a,b);this.Dp(a.getHeading(),j)}};\r
32909 l.AF=function(a,b){var c=this.f,d=a.getRotatableMapTypeCollection();d.isImageryVisible(c.H(),c.F(),n(function(f){if(f)a=d.rs(c.o.getHeading());this.$o(a,b);this.Dp(c.o.getHeading(),f)},\r
32910 this))};\r
32911 l.$o=function(a,b){this.Cs=j;this.f.aj(undefined,undefined,a,b);this.Cs=e};\r
32912 l.Dp=function(a,b){if(this.Gb!=a){this.Gb=a;A(this.f,"headingchanged")}if(this.Kn!=b){this.Kn=b;A(this.f,"rotatabilitychanged")}};\r
32913 l.Er=function(){if(!this.Sk){this.Sk=e;this.FS=Jd([Ga,Ca],n(function(a){return U(this.f,a,this,this.Sx)},\r
32914 this));this.Sx()}};\r
32915 l.or=function(){if(this.Sk){this.Sk=j;t(this.FS,w);var a=this.f,b=a.o.getRotatableMapTypeCollection();b&&this.$o(b.Tm());this.Dp(a.o.getHeading(),j)}};\r
32916 l.Rk=function(){return this.Sk};function Sj(){}\r
32917 ;function Vj(a,b,c,d,f){this.A=a;this.f=c;this.kl=f;this.Ig=i;this.dt=j;this.l=J("div",this.A,Xg);this.no=0;sh(this.l,ja,Ug);Qf(this.l);this.wg=new R(0,0);this.Ka=[];this.tc=0;this.dc=i;if(this.f.He())this.Jl=i;this.fc=[];this.Ae=[];this.gk=[];this.Po=this.Jf=j;this.Ps=0;this.ze=b;this.Qo=0;this.o=i;this.kt=!!d;d||this.Bb(c.o);U(D,ia,this,this.QP)}\r
32918 l=Vj.prototype;l.yh=e;l.gf=0;l.Oh=0;l.configure=function(a,b,c,d){this.Qo=this.tc=c;if(this.f.He())this.Jl=a;a=this.Sd(a);this.wg=new R(a.x-b.x,a.y-b.y);this.dc=kk(d,this.wg,this.o.getTileSize());for(b=0;b<r(this.Ka);b++)Uf(this.Ka[b].pane);this.refresh();this.dt=e};\r
32919 l.ry=function(a,b,c,d){x(Uh).zf.To(j);this.configure(a,b,c,d);x(Uh).zf.To(e)};\r
32920 l.RE=function(a){this.gf=this.Oh=0;this.Mz();a=kk(a,this.wg,this.o.getTileSize());if(!a.equals(this.dc)){this.Jf=e;Ee(this.fc)&&A(this,"beforetilesload");for(var b=this.dc.topLeftTile,c=this.dc.gridTopLeft,d=a.topLeftTile,f=this.o.getTileSize(),g=b.x;g<d.x;++g){b.x++;c.x+=f;this.oc(this.DS)}for(g=b.x;g>d.x;--g){b.x--;c.x-=f;this.oc(this.CS)}for(g=b.y;g<d.y;++g){b.y++;c.y+=f;this.oc(this.BS)}for(g=b.y;g>d.y;--g){b.y--;c.y-=f;this.oc(this.ES)}a.equals(this.dc);this.Po=e;this.TG();this.Jf=j}};\r
32921 l.Mz=function(){if(this.f.Vv&&this.dc){this.f.IF(j);this.refresh()}};\r
32922 l.ZF=function(a){this.ze=a;this.oc(this.wt);this.Mz();a=i;if(!this.kt&&D.isInLowBandwidthMode())a=this.Yb;for(var b=0;b<r(this.Ka);b++){a&&this.Ka[b].Hv(a);a=this.Ka[b]}};\r
32923 l.Bb=function(a){if(a!=this.o){this.o=a;this.by();a=a.getTileLayers();r(a)<=100;for(var b=i,c=0;c<r(a);++c){this.TH(a[c],c,b);b=this.Ka[c]}this.Id=this.Ka[0];if(!this.kt&&D.isInLowBandwidthMode())this.aG();else this.Id=this.Ka[0]}};\r
32924 l.aG=function(){var a=this.o.aP;if(a){if(!this.Yb)this.Yb=new lk(this.l,a,-1);a=this.Id=this.Yb;this.wt(a,e);this.Ka[0].Hv(a);this.Rz(n(function(b){if(!b.isLowBandwidthTile)if(bi(b)&&!ef(b[Sh],Rc)){b.bandwidthAllowed=D.ALLOW_KEEP;Rf(b)}else this.hr(b)},\r
32925 this));this.dc&&this.refresh()}};\r
32926 l.hr=function(a){a.bandwidthAllowed=D.DENY;delete this.Ae[a[Sh]];delete this.fc[a[Sh]];ci(a);this.dl(a,Rc,j);Qf(a)};\r
32927 l.IO=function(){this.Ka[0].YI();this.Id=this.Ka[0];this.Rz(Rf);this.dc&&this.refresh();this.Yb&&this.Yb.Rr(n(function(a){this.dl(a,Rc,j)},\r
32928 this))};\r
32929 l.Rz=function(a){this.oc(function(b){b.Rr(a)})};\r
32930 l.remove=function(){this.by();Cg(this.l)};\r
32931 l.show=function(){Rf(this.l)};\r
32932 l.J=function(a,b,c){if(this.f.He()&&this.Jl){b=b||this.ln(this.Qo);var d=this.Vz(this.Jl),f=i;if(c)f=this.Nm(this.Sz(c,d,b));a=this.Sd(a,i,f);return this.Wz(this.Tr(a),d,b)}else{f=c?this.Nm(c):i;a=this.Sd(a,i,f);return this.Tr(a)}};\r
32933 l.ws=function(){return(this.f.He()?this.ln(this.Qo):1)*this.o.getProjection().getWrapWidth(this.tc)};\r
32934 l.X=function(a,b){if(this.f.He()&&this.Jl){var c=this.ln(this.Qo),d=this.Vz(this.Jl);a=this.Sz(a,d,c)}else a=a;a=this.Nm(a);return this.o.getProjection().fromPixelToLatLng(a,this.tc,b)};\r
32935 l.Sd=function(a,b,c){var d=this.o.getProjection();b=b||this.tc;a=d.fromLatLngToPixel(a,b);c&&d.getNearestImage(a,b,c);return a};\r
32936 l.Nm=function(a){return new S(a.x+this.wg.width,a.y+this.wg.height)};\r
32937 l.Tr=function(a){return new S(a.x-this.wg.width,a.y-this.wg.height)};\r
32938 l.Vz=function(a){return this.Tr(this.Sd(a))};\r
32939 l.oc=function(a){var b=this;t(this.Ka,function(c){a.call(b,c)});\r
32940 this.Yb&&D.isInLowBandwidthMode()&&a.call(this,this.Yb)};\r
32941 l.fJ=function(a){var b=a.tileLayer;a=this.lG(a);for(var c=this.no=0;c<r(a);++c){var d=a[c];this.If(d,b,new S(d.coordX,d.coordY))}};\r
32942 l.gU=function(){this.oc(this.lG);this.Po=j};\r
32943 l.lG=function(a){var b=this.f.bh().latLng;this.hU(a.images,b,a.sortedImages);return a.sortedImages};\r
32944 l.If=function(a,b,c){var d;if(a.errorTile){Cg(a.errorTile);a.errorTile=i;d=e}if(a.baseTileHasError){a.baseTileHasError=i;d=e}var f=this.o,g=this.f.O(),h=f.getTileSize(),k=this.dc.gridTopLeft;k=new S(k.x+c.x*h,k.y+c.y*h);var o=this.dc.topLeftTile;o=new S(o.x+c.x,o.y+c.y);b.ZQ(k,o,h,this.f.H(),this.tc);if(k.x!=a.offsetLeft||k.y!=a.offsetTop)Bf(a,k);Cf(a,new R(h,h));var q=this.tc;c=e;if(f.getProjection().tileCheckRange(o,q,h)){if(a.isLowBandwidthTile&&a.imageAbove&&bi(a.imageAbove)&&!ef(a.imageAbove[Sh],\r
32945 Rc))b=a.imageAbove[Sh];else{b=b.getTileUrl(o,q);if(b==i){b=Rc;c=j}}f=e;k=new S(k.x+kg(this.A,"left"),k.y+kg(this.A,"top"));if(!(new Zg(-h,-h,g.width,g.height)).Kf(k)){if(this.f.Vv)b=Rc;f=j}if(b!=a[Sh]){if(D.isInLowBandwidthMode()){if(this.Yb&&a.bandwidthAllowed==D.DENY){this.hr(a);return j}if(a.bandwidthAllowed==D.ALLOW_KEEP&&!Ee(this.fc)){this.hr(a);return j}else if(a.bandwidthAllowed==D.ALLOW_ONE)a.bandwidthAllowed=D.ALLOW_KEEP}this.dl(a,b,f)}}else{this.dl(a,Rc,j);c=j}if(Sf(a)&&(bi(a)||d))a.bandwidthWaitToShow&&\r
32946 D.isInLowBandwidthMode()||Rf(a);return c};\r
32947 l.refresh=function(){A(this,"beforetilesload");if(this.dc){this.Jf=e;this.Oh=this.gf=0;if(this.kl&&!this.Ig)this.Ig=new cd(this.kl);this.oc(this.fJ);this.Po=j;this.TG();this.Jf=j}};\r
32948 l.TG=function(){Ee(this.Ae)&&A(this,Na,this.Oh);Ee(this.fc)&&A(this,La,this.gf)};\r
32949 function mk(a,b){this.topLeftTile=a;this.gridTopLeft=b}\r
32950 mk.prototype.equals=function(a){if(!a)return j;return a.topLeftTile.equals(this.topLeftTile)&&a.gridTopLeft.equals(this.gridTopLeft)};\r
32951 function kk(a,b,c){var d=new S(a.x+b.width,a.y+b.height);a=Kd(d.x/c-Ob);d=Kd(d.y/c-Ob);var f=a*c-b.width;b=d*c-b.height;return new mk(new S(a,d),new S(f,b))}\r
32952 Vj.prototype.by=function(){this.oc(function(a){a.clear()});\r
32953 this.Ka.length=0;if(this.Yb){this.Yb.clear();this.Yb=i}this.Id=i};\r
32954 function lk(a,b,c){this.images=[];this.pane=Tj(c,a);this.tileLayer=b;this.sortedImages=[];this.index=c}\r
32955 lk.prototype.clear=function(){var a=this.images;if(a){for(var b=r(a),c=0;c<b;++c)for(var d=a.pop(),f=r(d),g=0;g<f;++g)nk(d.pop());delete this.tileLayer;delete this.images;delete this.sortedImages;Cg(this.pane)}};\r
32956 var nk=function(a){if(a.errorTile){Cg(a.errorTile);a.errorTile=i}Cg(a);if(a.imageAbove)a.imageAbove=i;if(a.imageBelow)a.imageBelow=i};\r
32957 lk.prototype.Hv=function(a){for(var b=this.images,c=r(b)-1;c>=0;c--)for(var d=r(b[c])-1;d>=0;d--){b[c][d].imageBelow=a.images[c][d];a.images[c][d].imageAbove=b[c][d]}};\r
32958 lk.prototype.Rr=function(a){t(this.images,function(b){t(b,function(c){a(c)})})};\r
32959 lk.prototype.YI=function(){this.Rr(function(a){var b=a.imageBelow;a.imageBelow=i;if(b)b.imageAbove=i})};\r
32960 l=Vj.prototype;l.TH=function(a,b,c){a=new lk(this.l,a,b);this.wt(a,e);c&&a.Hv(c);this.Ka.push(a)};\r
32961 l.pi=function(a){this.yh=a;a=0;for(var b=r(this.Ka);a<b;++a)for(var c=this.Ka[a],d=0,f=r(c.images);d<f;++d)for(var g=c.images[d],h=0,k=r(g);h<k;++h)g[h][Rh]=this.yh};\r
32962 l.GU=function(a,b,c){a==this.Id?this.nI(b,c):this.JV(b,c)};\r
32963 l.wt=function(a,b){var c=this.o.getTileSize(),d=new R(c,c),f=a.tileLayer,g=a.images,h=a.pane,k=sf(this,this.GU,a),o=new Qh;o.alpha=f.isPng();o.hideWhileLoading=e;o.onLoadCallback=sf(this,this.up);o.onErrorCallback=k;var q=this.ze,s=Ob*2+1;k=ke(q.width/c+s);c=ke(q.height/c+s);for(b=!b&&r(g)>0&&this.dt;r(g)>k;){s=g.pop();for(q=0;q<r(s);++q)nk(s[q])}for(q=r(g);q<k;++q)g.push([]);for(q=0;q<r(g);++q){for(;r(g[q])>c;)nk(g[q].pop());for(k=r(g[q]);k<c;++k){s=Qc(Rc,h,Xg,d,o);if(rb)if(a==this.Yb){s.bandwidthAllowed=\r
32964 D.ALLOW_ALL;s.isLowBandwidthTile=e}else s.bandwidthAllowed=D.DENY;b&&this.If(s,f,new S(q,k));var u=f.getOpacity();u<1&&hg(s,u);g[q].push(s)}}};\r
32965 l.hU=function(a,b,c){var d=this.o.getTileSize();b=this.Sd(b);b.x=b.x/d-0.5;b.y=b.y/d-0.5;d=this.dc.topLeftTile;for(var f=0,g=r(a),h=0;h<g;++h)for(var k=r(a[h]),o=0;o<k;++o){var q=a[h][o];q.coordX=h;q.coordY=o;var s=d.x+h-b.x,u=d.y+o-b.y;q.sqdist=s*s+u*u;c[f++]=q}c.length=f;c.sort(function(H,G){return H.sqdist-G.sqdist})};\r
32966 l.DS=function(a){var b=a.tileLayer,c=a.images;a=c.shift();c.push(a);c=r(c)-1;for(var d=0;d<r(a);++d)this.If(a[d],b,new S(c,d))};\r
32967 l.CS=function(a){var b=a.tileLayer,c=a.images;if(a=c.pop()){c.unshift(a);for(c=0;c<r(a);++c)this.If(a[c],b,new S(0,c))}};\r
32968 l.ES=function(a){var b=a.tileLayer;a=a.images;for(var c=0;c<r(a);++c){var d=a[c].pop();a[c].unshift(d);this.If(d,b,new S(c,0))}};\r
32969 l.BS=function(a){var b=a.tileLayer;a=a.images;for(var c=r(a[0])-1,d=0;d<r(a);++d){var f=a[d].shift();a[d].push(f);this.If(f,b,new S(d,c))}};\r
32970 l.mS=function(a){if("http://"+window.location.host==_mHost){var b=ng(og(a));b=Ei("x:%1$s,y:%2$s,zoom:%3$s",b.x,b.y,b.zoom);if(a.match("transparent.png"))b="transparent";ij("/maps/gen_204?ev=failed_tile&cad="+b)}};\r
32971 l.nI=function(a,b){if(a.indexOf("tretry")==-1&&this.o.getUrlArg()=="m"&&!ef(a,Rc)){var c=!!this.Ae[a];delete this.fc[a];delete this.Ae[a];delete this.gk[a];this.mS(a);a+="&tretry=1";this.dl(b,a,c)}else{this.up(a,b);var d,f;a=this.Id.images;for(d=0;d<r(a);++d){c=a[d];for(f=0;f<r(c);++f)if(c[f]==b)break;if(f<r(c))break}if(d!=r(a)){this.oc(function(g){if(g=g.images[d]&&g.images[d][f]){Qf(g);g.baseTileHasError=e}});\r
32972 !b.errorTile&&!b.isLowBandwidthTile&&this.yJ(b);this.f.tn()}}};\r
32973 l.dl=function(a,b,c){a[Sh]&&a[Th]&&this.up(a[Sh],a);if(!ef(b,Rc)){this.fc[b]=1;if(c)this.Ae[b]=1;if(a.isLowBandwidthTile)this.gk[b]=1;a.fetchBegin=ed()}Zh(a,b,a.imageFetcherOpts)};\r
32974 l.up=function(a,b){if(!(ef(a,Rc)||!this.fc[a])){if(b.fetchBegin){var c=ed()-b.fetchBegin;b.fetchBegin=i;b.isLowBandwidthTile||D.trackTileLoad(b,c);if(ok()){pk.push(c);qk.push("u");this.gf==0&&Eg(this.Ig,"first")}}if(b.bandwidthWaitToShow&&Sf(b)&&b.imageBelow&&b.bandwidthAllowed!=D.DENY)if(!Sf(b.imageBelow)||b.imageBelow.baseTileHasError)for(c=b;c;c=c.imageAbove){Rf(c);c.bandwidthWaitToShow=j}if(!Ee(this.Ae)){++this.Oh;delete this.Ae[a];Ee(this.Ae)&&!this.Jf&&A(this,Na,this.Oh)}++this.gf;delete this.fc[a];\r
32975 if(!this.kt&&D.isInLowBandwidthMode()){if(b.isLowBandwidthTile){b=He(this.gk);delete this.gk[a];b==1&&He(this.gk)==0&&!this.Jf&&this.UG()}this.Yb&&this.eu()&&this.AC()}else Ee(this.fc)&&!this.Jf&&this.UG()}};\r
32976 l.UG=function(){A(this,La,this.gf);if(this.Ig){this.Ig.tick("total_"+this.gf);this.Ig.done();this.Ig=i}};\r
32977 l.eu=function(){return He(this.fc)+this.Ps<Pb};\r
32978 l.QP=function(a){a?this.aG():this.IO()};\r
32979 l.AC=function(){setTimeout(n(this.NO,this),0);this.Ps++};\r
32980 l.NO=function(){this.Ps--;var a,b=Infinity,c;if(!this.eu())return j;this.Po&&this.gU();for(var d=r(this.Ka)-1;d>=0;--d)for(var f=this.Ka[d],g=f.sortedImages,h=0;h<r(g);++h){var k=g[h];if(k.bandwidthAllowed==D.DENY){if(h<b){b=h;a=k;c=f}break}}if(a){a.bandwidthAllowed=D.ALLOW_ONE;a.bandwidthWaitToShow=e;this.If(a,c.tileLayer,new S(a.coordX,a.coordY));this.eu()&&this.AC();return e}return j};\r
32981 l.JV=function(a,b){this.up(a,b);Zh(b,Rc,b.imageFetcherOpts)};\r
32982 l.yJ=function(a){var b=this.o.getTileSize();b=J("div",this.Ka[0].pane,Xg,new R(b,b));b.style.left=a.style.left;b.style.top=a.style.top;var c=J("div",b),d=c.style;d.fontFamily="Arial,sans-serif";d.fontSize="x-small";d.textAlign="center";d.padding=Ff(6);gg(c);Vd(c,this.o.getErrorMessage());a.errorTile=b};\r
32983 l.dz=function(a,b,c){var d=this.ln(a);a=K(this.o.getTileSize()*d);d=a/this.o.getTileSize();d=this.Wz(this.dc.gridTopLeft,b,d);b=K(d.x+c.x);c=K(d.y+c.y);d=this.Id.images;for(var f=r(d),g=r(d[0]),h,k,o,q=Q(a),s=0;s<f;++s){k=d[s];o=Q(b+a*s);for(var u=0;u<g;++u){h=k[u].style;h.left=o;h.top=Q(c+a*u);h.width=h.height=q}}};\r
32984 l.pn=function(){var a=this.Id;this.oc(function(b){b!=a&&Tf(b.pane)})};\r
32985 l.QT=function(){for(var a=0,b=r(this.Ka);a<b;++a)Uf(this.Ka[a].pane)};\r
32986 l.hide=function(){Qf(this.l);this.dt=j};\r
32987 l.ri=function(a){fg(this.l,a)};\r
32988 l.ln=function(a){var b=this.ze.width;if(b<1)return 1;b=Kd(Math.log(b)*Math.LOG2E-2);a=se(a-this.tc,-b,b);return Math.pow(2,a)};\r
32989 l.Sz=function(a,b,c){return new S(1/c*(a.x-b.x)+b.x,1/c*(a.y-b.y)+b.y)};\r
32990 l.Wz=function(a,b,c){return new S(c*(a.x-b.x)+b.x,c*(a.y-b.y)+b.y)};\r
32991 l.tG=function(){this.oc(function(a){a=a.images;for(var b=0;b<r(a);++b)for(var c=0;c<r(a[b]);++c){var d=a[b][c];this.fc[d[Sh]]&&this.no++;ci(d)}});\r
32992 this.fc=[];this.Ae=[];if(this.no){A(this,Na,this.Oh);A(this,La,this.gf)}};\r
32993 l.loaded=function(){return Ee(this.fc)};\r
32994 l.uG=function(){return this.no>r(this.Id.sortedImages)*0.66};function rk(){rk.g.apply(this,arguments)}\r
32995 ;rk.g=function(a,b){this.vR=a||j;this.PS=b||j};\r
32996 l=rk.prototype;l.printable=function(){return this.vR};\r
32997 l.selectable=function(){return this.PS};\r
32998 l.initialize=function(){return i};\r
32999 l.W=function(a,b){this.initialize(a,b)};\r
33000 l.Jk=N;l.getDefaultPosition=N;l.Jb=N;l.xa=N;l.Xk=function(a){a=a.style;a.color="black";a.fontFamily="Arial,sans-serif";a.fontSize="small"};\r
33001 l.allowSetVisibility=Oe;l.Jq=Ne;l.clear=function(){Rg(this)};\r
33002 var tk=function(a,b,c){if(c)sk(b);else{function d(){Of(b,!a.it())}\r
33003 d();v(a,Ca,d)}};\r
33004 function uk(a){(a=Nf(a))&&Qf(a)}\r
33005 ;function vk(){this.LR=new RegExp("[^:]+?:([^'\"\\/;]*('{1}(\\\\\\\\|\\\\'|\\\\?[^'\\\\])*'{1}|\"{1}(\\\\\\\\|\\\\\"|\\\\?[^\"\\\\])*\"{1}|\\/{1}(\\\\\\\\|\\\\\\/|\\\\?[^\\/\\\\])*\\/{1})*)+;?","g")}\r
33006 vk.prototype.match=function(a){return a.match(this.LR)};var wk="$this",xk="$context",yk="$top",zk=/;$/,Ak=/\s*;\s*/;function Bk(a,b){if(!this.ad)this.ad={};b?De(this.ad,b.ad):De(this.ad,Ck);this.ad[wk]=a;this.ad[xk]=this;this.k=Le(a,ca);if(!b)this.ad[yk]=this.k}\r
33007 var Ck={};Ck.$default=i;var Dk=[],Ek=function(a,b){if(r(Dk)>0){var c=Dk.pop();Bk.call(c,a,b);return c}else return new Bk(a,b)},\r
33008 Fk=function(a){for(var b in a.ad)delete a.ad[b];a.k=i;Dk.push(a)};\r
33009 Bk.prototype.jsexec=function(a,b){try{return a.call(b,this.ad,this.k)}catch(c){return Ck.$default}};\r
33010 Bk.prototype.clone=function(a,b,c){a=Ek(a,this);a.eb("$index",b);a.eb("$count",c);return a};\r
33011 Bk.prototype.eb=function(a,b){this.ad[a]=b};\r
33012 var Gk="a_",Hk="b_",Ik="with (a_) with (b_) return ",Jk={},Kk=new vk;function Lk(a){if(!Jk[a])try{Jk[a]=new Function(Gk,Hk,Ik+a)}catch(b){}return Jk[a]}\r
33013 function Mk(a){return a}\r
33014 function Nk(a){for(var b=[],c=Kk.match(a),d=-1,f=0,g=i,h=0,k=r(c);h<k;++h){g=c[h];f+=r(g);d=g.indexOf(ea);b.push(df(g.substring(0,d)));var o=g.match(zk)?r(g)-1:r(g);b.push(Lk(g.substring(d+1,o)))}f<r(a)&&0;return b}\r
33015 function Ok(a){var b=[];a=a.split(Ak);for(var c=0,d=r(a);c<d;++c)if(a[c]){var f=Lk(a[c]);b.push(f)}return b}\r
33016 ;var Pk="jsinstance",Qk="jsts",Rk="div",Sk="id";function Tk(a,b,c,d){c=new Uk(b,c,d);Vk(b);c.JS(uf(c,c.lt,a,b));c.wG()}\r
33017 function Uk(a,b,c){this.lW=a;this.Ge=b||N;this.lj=Af(a);this.su=1;this.SG=c||i}\r
33018 Uk.prototype.CU=function(){this.su++};\r
33019 Uk.prototype.wG=function(){this.su--;this.su==0&&this.Ge()};\r
33020 var Wk=0,Xk={};Xk[0]={};var Yk={},Zk={},$k=[],Vk=function(a){a.__jstcache||Ig(a,function(b){al(b)})},\r
33021 bl=[["jsselect",Lk],["jsdisplay",Lk],["jsvalues",Nk],["jsvars",Nk],["jseval",Ok],["transclude",Mk],["jscontent",Lk],["jsskip",Lk]],al=function(a){if(a.__jstcache)return a.__jstcache;var b=a.getAttribute("jstcache");if(b!=i)return a.__jstcache=Xk[b];b=$k.length=0;for(var c=r(bl);b<c;++b){var d=bl[b][0],f=a.getAttribute(d);Zk[d]=f;f!=i&&$k.push(d+"="+f)}if($k.length==0){a.setAttribute("jstcache","0");return a.__jstcache=Xk[0]}var g=$k.join("&");if(b=Yk[g]){a.setAttribute("jstcache",b);return a.__jstcache=\r
33022 Xk[b]}var h={};b=0;for(c=r(bl);b<c;++b){f=bl[b];d=f[0];var k=f[1];f=Zk[d];if(f!=i)h[d]=k(f)}b=ca+ ++Wk;a.setAttribute("jstcache",b);Xk[b]=h;Yk[g]=b;return a.__jstcache=h},\r
33023 cl={};l=Uk.prototype;l.JS=function(a){this.Lx=[];this.qE=[];this.hq=[];a();this.oE()};\r
33024 l.oE=function(){for(var a=this.Lx,b=this.qE,c,d,f,g;a.length;){c=a[a.length-1];d=b[b.length-1];if(d>=c.length){this.JR(a.pop());b.pop()}else{f=c[d++];g=c[d++];c=c[d++];b[b.length-1]=d;f.call(this,g,c)}}};\r
33025 l.Kk=function(a){this.Lx.push(a);this.qE.push(0)};\r
33026 l.dj=function(){return this.hq.length?this.hq.pop():[]};\r
33027 l.JR=function(a){ff(a);this.hq.push(a)};\r
33028 l.RG=function(a,b,c){if(a){c.parentNode.replaceChild(a,c);c=this.dj();c.push(this.lt,b,a);this.Kk(c)}else Mg(c)};\r
33029 l.lt=function(a,b){var c=this.oC(b),d=c.transclude;if(d){c=dl(d);!c&&this.SG?this.SG(b,n(function(){d=b.getAttribute("transclude");this.RG(dl(d),a,b);this.oE()},\r
33030 this)):this.RG(c,a,b)}else(c=c.jsselect)?this.yO(a,b,c):this.Xj(a,b)};\r
33031 l.Xj=function(a,b){var c=this.oC(b),d=c.jsdisplay;if(d){if(!a.jsexec(d,b)){Qf(b);return}Rf(b)}(d=c.jsvars)&&this.AO(a,b,d);(d=c.jsvalues)&&this.zO(a,b,d);if(d=c.jseval)for(var f=0,g=r(d);f<g;++f)a.jsexec(d[f],b);if(d=c.jsskip)if(a.jsexec(d,b))return;if(c=c.jscontent)this.xO(a,b,c);else{c=this.dj();for(b=b.firstChild;b;b=b.nextSibling)b.nodeType==1&&c.push(this.lt,a,b);c.length&&this.Kk(c)}};\r
33032 l.yO=function(a,b,c){c=a.jsexec(c,b);var d=b.getAttribute(Pk),f=j;if(d)if(d.charAt(0)==da){d=hf(d.substr(1));f=e}else d=hf(d);var g=nf(c),h=g?r(c):1,k=g&&h==0;if(g)if(k)if(d)Mg(b);else{b.setAttribute(Pk,"*0");Qf(b)}else{Rf(b);if(d===i||d===ca||f&&d<h-1){f=this.dj();for(d=d||0,g=h-1;d<g;++d){var o=b.cloneNode(e);b.parentNode.insertBefore(o,b);el(o,c,d);k=a.clone(c[d],d,h);f.push(this.Xj,k,o,Fk,k,i)}el(b,c,d);k=a.clone(c[d],d,h);f.push(this.Xj,k,b,Fk,k,i);this.Kk(f)}else if(d<h){f=c[d];el(b,c,d);k=\r
33033 a.clone(f,d,h);f=this.dj();f.push(this.Xj,k,b,Fk,k,i);this.Kk(f)}else Mg(b)}else if(c==i)Qf(b);else{Rf(b);k=a.clone(c,0,1);f=this.dj();f.push(this.Xj,k,b,Fk,k,i);this.Kk(f)}};\r
33034 l.AO=function(a,b,c){for(var d=0,f=r(c);d<f;d+=2){var g=c[d],h=a.jsexec(c[d+1],b);a.eb(g,h)}};\r
33035 l.zO=function(a,b,c){for(var d=0,f=r(c);d<f;d+=2){var g=c[d],h=a.jsexec(c[d+1],b),k=cl[b.tagName]&&cl[b.tagName][g];if(k){this.CU();k(b,g,h,n(this.wG,this))}else if(g.charAt(0)=="$")a.eb(g,h);else if(g.charAt(0)==ga)li(b,g,h);else if(g)if(typeof h=="boolean")h?Kg(b,g,g):Lg(b,g);else b.setAttribute(g,ca+h)}b.__jsvalues_parsed=e};\r
33036 l.xO=function(a,b,c){a=ca+a.jsexec(c,b);if(b.innerHTML!=a){for(;b.firstChild;)Mg(b.firstChild);a=this.lj.createTextNode(a);b.appendChild(a)}};\r
33037 l.oC=function(a){if(a.__jstcache)return a.__jstcache;var b=a.getAttribute("jstcache");if(b)return a.__jstcache=Xk[b];return al(a)};\r
33038 function dl(a,b){var c=document;if(a=b?fl(c,a,b):c.getElementById(a)){Vk(a);a=a.cloneNode(e);a.removeAttribute(Sk);return a}else return i}\r
33039 function fl(a,b,c,d){var f=a.getElementById(b);if(f)return f;c=c();d=d||Qk;if(f=a.getElementById(d))f=f;else{f=a.createElement(Rk);f.id=d;Qf(f);Gf(f);a.body.appendChild(f)}d=a.createElement(Rk);f.appendChild(d);d.innerHTML=c;return f=a.getElementById(b)}\r
33040 function el(a,b,c){c==r(b)-1?Kg(a,Pk,da+c):Kg(a,Pk,ca+c)}\r
33041 ;function ek(){ek.g.apply(this,arguments)}\r
33042 function gl(){gl.g.apply(this,arguments)}\r
33043 ;ek.g=function(){this.Wp={};this.SB=[];this.M=[];this.Rf={}};\r
33044 ek.prototype.DK=function(a){var b=this;return function(c){a:{for(var d=Qg(c);d&&d!=this;d=d.parentNode){var f;f=d;var g=f.__jsaction;if(!g){g=f.__jsaction={};var h=hl(f,"jsaction");if(h){h=h.split(Ak);for(var k=0,o=r(h);k<o;k++){var q=h[k];if(q){var s=q.indexOf(ea);if(s<0)g[m]=il(q,f,this);else{var u=df(q.substr(0,s));g[u]=il(df(q.substr(s+1)),f,this)}}}}}if(f=g[a]){g=d;if(!g.__jsvalues_parsed){if(h=hl(g,"jsvalues")){h=h.split(Ak);k=0;for(o=r(h);k<o;k++){s=h[k];u=s.indexOf(ea);if(!(u<0)){q=df(s.substr(0,\r
33045 u));if(q.charAt(0)==ga){s=df(s.substr(u+1));li(g,q,pg(s))}}}}g.__jsvalues_parsed=e}c=new jl(f,d,c,undefined);break a}}c=i}if(c)if(b.lB(c))c.done();else b.Gz||c.done()}};\r
33046 ek.prototype.lB=function(a,b){var c=this.Wp[a.bV];if(c){b&&a.tick("re");c(a);return e}return j};\r
33047 ek.prototype.KE=function(){this.Gz&&qg(this,function(){this.Gz.iI(n(this.iS,this))},\r
33048 0)};\r
33049 ek.prototype.iS=function(a){for(var b=a.node(),c=0;c<r(this.M);c++)if(this.M[c].containsNode(b))return this.lB(a,e);return j};\r
33050 function hl(a,b){var c=i;if(a.getAttribute)c=a.getAttribute(b);return c}\r
33051 function il(a,b,c){if(a.indexOf(ga)>=0)return a;for(b=b;b;b=b.parentNode){var d;d=b;var f=d.__jsnamespace;ue(f)||(f=d.__jsnamespace=hl(d,"jsnamespace"));if(d=f)return d+ga+a;if(b==c)break}return a}\r
33052 function kl(a,b){return function(c){return sh(c,a,b)}}\r
33053 l=ek.prototype;l.Yg=function(a){if(!Ie(this.Rf,a)){var b=this.DK(a),c=kl(a,b);this.Rf[a]=b;this.SB.push(c);t(this.M,function(d){d.RB(c)})}};\r
33054 l.Jd=function(a,b,c){tc(c,n(function(d,f){f=b?n(f,b):f;if(a)this.Wp[a+"."+d]=f;else this.Wp[d]=f},\r
33055 this));this.KE()};\r
33056 l.Bf=function(a){if(this.qN(a))return i;var b=new gl(a);t(this.SB,function(c){b.RB(c)});\r
33057 this.M.push(b);this.KE();return b};\r
33058 l.qN=function(a){for(var b=0;b<this.M.length;b++)if(this.M[b].containsNode(a))return e;return j};\r
33059 l.Nu=function(a){a.SI();xe(this.M,a)};\r
33060 gl.g=function(a){this.l=a;this.pB=[]};\r
33061 gl.prototype.containsNode=function(a){var b=this.l;for(a=a;b!=a&&a.parentNode;)a=a.parentNode;return b==a};\r
33062 gl.prototype.RB=function(a){this.pB.push(a.call(i,this.l))};\r
33063 gl.prototype.SI=function(){t(this.pB,w)};function ll(){}\r
33064 ll.prototype.iI=function(){};var Yc={};function ml(a){Yc[a]||(Yc[a]=[]);for(var b=1,c=arguments.length;b<c;b++)Yc[a].push(arguments[b])}\r
33065 ml("act_mm","act");ml("act_s","act");ml("act_d","act");ml("qopa","act","qop","act_s");ml("dropapin","act_dap");ml("act_dap","act","sha1");ml("mymaps","act_mm");ml("ms","info");ml("rv","act");ml("mplh","sha1","gdgt");ml("dir","qdt","act_d");ml("trtlr","qdt");ml("mspe","poly");ml("ftr","act");ml("labs","ftr","sdb");ml("act_br","act","browse");ml("re","act","qopa","act_s");ml("ab","ac");ml("sesame","ac");ml("sg","ac");function Xc(a,b){var c=a.replace("/main.js","");return function(d){if(a)return[c+"/mod_"+d+".js"];else if(b)for(var f=0;f<b.length;++f)if(b[f].name==d)return b[f].urls;return i}}\r
33066 ;function nl(){nl.g.apply(this,arguments)}\r
33067 Kh(nl,"dspmr",1,{rH:e,dS:e,Yp:j,BE:j},{g:e});var sk=function(a){x(nl).rH(a)};function Fj(){this.Ni={};this.UO={};var a={};a.locale=e;this.Kd=new wg(_mHost+"/maps/tldata",document,a);this.Rd={};this.xg={}}\r
33068 Fj.prototype.Zp=function(a,b){var c=this.Ni,d=this.UO;d[a]||(d[a]={});var f=j;b=b.bounds;for(var g=0;g<r(b);++g){var h=b[g],k=h.ix;if(k==-1||k==-2){this.jV(a,h);f=e}else if(!d[a][k]){d[a][k]=e;c[a]||(c[a]=[]);c[a].push(ol(h,e));f=e}}f&&A(this,"appfeaturesdata",a)};\r
33069 Fj.prototype.H=function(a){if(this.Ni[a])return this.Ni[a];return i};\r
33070 Fj.prototype.sN=function(a){return this.Rd[a]||this.xg[a]};\r
33071 var od=function(a){var b=x(Fj);tc(a,function(c,d){b.Zp(c,d)})},\r
33072 ol=function(a,b){var c=[a.s*1.0E-6,a.w*1.0E-6,a.n*1.0E-6,a.e*1.0E-6];if(b)c.push(a.minz||1);return c};\r
33073 Fj.prototype.jV=function(a,b){if(this.Rd[a])this.Rd[a].Tw(ol(b,j),b.ix==-2);else{this.xg[a]||(this.xg[a]=[]);this.xg[a].push(b)}};\r
33074 Fj.prototype.Lm=function(a,b,c,d,f){if(this.Rd[a])c(this.Rd[a].pE(b));else if(this.xg[a])vd("qdt",1,n(function(k){this.Rd[a]||(this.Rd[a]=a=="ob"?new k(i,i,18):new k);t(this.xg[a],n(function(o){this.Rd[a].Tw(ol(o,j),o.ix==-2)},\r
33075 this));delete this.xg[a];c(this.Rd[a].pE(b))},\r
33076 this),d);else if(this.Ni[a]){d=this.Ni[a];for(var g=0;g<r(d);g++)if(r(d[g])==5)if(!(f&&f<d[g][4])){var h=new id(new z(d[g][0],d[g][1]),new z(d[g][2],d[g][3]));if(b.intersects(h)){c(e);return}}c(j)}};Ck.bidiDir=Yi;Ck.bidiAlign=Zi;Ck.bidiAlignEnd=$i;Ck.bidiMark=cj;Ck.bidiSpan=dj;Ck.bidiEmbed=ej;Ck.isRtl=Wi;function pl(a,b,c,d){if(ef(a.src,Rc))a.src="";Zh(a,ca+c,{onLoadCallback:d,onErrorCallback:d})}\r
33077 cl.IMG||(cl.IMG={});cl.IMG.src=pl;var ql=ga+"src";cl.IMG||(cl.IMG={});cl.IMG[ql]=pl;function rl(a,b,c,d){wd("exdom",Ua)(a,b,c,d)}\r
33078 ;var D={};D.wH="delay";D.xH="forced";D.yH="ip";D.zH="nodelay";D.Rw="tiles";D.uH="lbm";D.vH="lbr";D.ALLOW_ALL=3;D.ALLOW_ONE=2;D.ALLOW_KEEP=1;D.DENY=0;D.Us=j;D.Ty=j;D.xp=[];D.mw=0;D.setupBandwidthHandler=function(a,b,c){if(!rb)return-1;if(Kb)if(Lb){D.setLowBandwidthMode(e,D.yH);return 0}var d=0;if(!c||Kb){c=ed();d=B(0,a-c+sb*1000)}if(d<=0)D.setLowBandwidthMode(e,D.zH);else{var f=setTimeout(function(){D.setLowBandwidthMode(e,D.wH)},\r
33079 d);fd(b,La,function(){clearTimeout(f)})}return d};\r
33080 D.YK=function(a){D.Ty=e;D.setLowBandwidthMode(a,D.xH)};\r
33081 D.setLowBandwidthMode=function(a,b){if(rb)if(D.Us!=a){D.Us=a;A(D,ia,a);var c={};c[D.uH]=a+0;if(b)c[D.vH]=b;sl(i,c)}};\r
33082 D.isInLowBandwidthMode=function(){return D.Us};\r
33083 D.initializeLowBandwidthMapLayers=function(){if(rb){D.mapTileLayer=new tl(tb,17);D.satTileLayer=new tl(ub,19);D.hybTileLayer=new tl(vb,17);D.terTileLayer=new tl(wb,15)}};\r
33084 D.trackTileLoad=function(a,b){if(!(!rb||D.Ty||!bi(a)||a.preCached)){D.xp.unshift(b);D.mw+=b;if(!(D.xp.length<Bb)){a=D.mw/D.xp.length;if(a>zb)D.setLowBandwidthMode(e,D.Rw);else a<Ab&&D.setLowBandwidthMode(j,D.Rw);D.mw-=D.xp.pop()}}};\r
33085 function tl(a,b){a=a.split(",");Id.call(this,a,i,b,_mSatelliteToken,_mDomain)}\r
33086 p(tl,Id);function ul(a){var b=[],c=a.split(":",1)[0],d=hf(c);if(d){a=a.substring(c.length+1);for(c=0;c<d;++c)b.push(Ei(a,c))}return b}\r
33087 function vl(a){if(_mGL=="in")for(var b=0;b<a.length;++b){var c=/[&?]$/.test(a[b])?"":/[?]/.test(a[b])?"&":"?";a[b]=[a[b],c,"gl=",_mGL,"&"].join("")}}\r
33088 function wl(a,b){md.call(this);this.lm=a||"#000";this.QC=b}\r
33089 p(wl,md);wl.prototype.vK=function(a,b){var c=new Ki;c.set("ll",a.T().Aa());c.set("spn",a.sb().Aa());c.set("z",b);this.QC&&c.set("t",this.QC);return'<a target="_blank" style="color:'+this.lm+'" href="'+c.Xe(e,"http://google.com/mapmaker")+'">'+F(12915)+"</a>"};\r
33090 wl.prototype.$r=function(a,b){a=_mMapCopy+" "+F(12916)+" - "+this.vK(a,b);return new tg("",[a])};\r
33091 function Cd(a,b,c,d){var f=[];if(Ib){f.push(["MAPMAKER_NORMAL_MAP",a]);f.push(["MAPMAKER_HYBRID_MAP",c]);f.push(["MAPMAKER_MAP_TYPES",[a,b,c]]);return f}var g=new wl(a.getLinkColor(),"m"),h=ul(_mCityblockUseSsl?Zb:Fb);vl(h);a={shortName:F(10111),errorMessage:F(10120),alt:F(10511),urlArg:"gm"};g=new Ed(h,g,17);a=new Hd([g],d,F(10049),a);f.push(["MAPMAKER_NORMAL_MAP",a]);h=ul(_mCityblockUseSsl?$b:Gb);vl(h);g=b.getTileLayers()[0];var k=new wl(c.getLinkColor(),"h");c={shortName:F(10117),urlArg:"gh",textColor:"white",\r
33092 linkColor:"white",errorMessage:F(10121),alt:F(10513)};h=new Ed(h,k,17,e);d=new Hd([g,h],d,F(10116),c);f.push(["MAPMAKER_HYBRID_MAP",d]);f.push(["MAPMAKER_MAP_TYPES",[a,b,d]]);return f}\r
33093 ;function xl(a){De(this,a,e)}\r
33094 function jl(){jl.g.apply(this,arguments)}\r
33095 p(jl,cd);jl.g=function(a,b,c,d){cd.call(this,a,d);this.bV=a;this.uD=b;this.Me=new xl(c);c.type==m&&this.action(b)};\r
33096 jl.prototype.Pr=function(){cd.prototype.Pr.call(this);this.Me=this.uD=i};\r
33097 jl.prototype.node=function(){return this.uD};\r
33098 jl.prototype.event=function(){return this.Me};\r
33099 jl.prototype.value=function(a){var b=this.node();return b?b[a]:undefined};function ok(){return typeof _stats!="undefined"}\r
33100 function yl(a,b,c){ok()&&vd("stats",$a,function(d){d(a,b,c)});\r
33101 wj(a,b,c)}\r
33102 v(cd,"report",yl);function sl(a,b){Cb&&vd("stats",ab,function(c){c(a,b)})}\r
33103 v(cd,"reportaction",sl);function zl(a,b,c,d){vd("stats",eb,function(f){f(a,b,c,d)})}\r
33104 v(cd,"dapperreport",zl);function Zc(a){ok()&&vd("stats",cb,function(b){b(a)})}\r
33105 function $c(a){ok()&&vd("stats",db,function(b){b(a)})}\r
33106 ;var pk=[],qk=[];function hd(a,b){a.Xg("mt",b.o.getUrlArg()+(D.isInLowBandwidthMode()?"l":"h"))}\r
33107 ;function Al(){}\r
33108 p(Al,oi);function Bl(){}\r
33109 ;function Cl(){Cl.g.apply(this,arguments)}\r
33110 var Dl,El;p(Cl,Al);var Fl=Ne,Gl=j;l=Cl.prototype;l.Wa=Bl;l.sh=Pe;l.Tj=Ne;l.Zh=Pe;l.redraw=function(){};\r
33111 l.remove=function(){this.Qa=e};\r
33112 l.Nz=Pe;l.Qq=N;zj(Cl,"poly",2);\r
33113 Cl.g=function(a,b,c,d,f){this.color=b||Hl;this.weight=Le(c,Il);this.opacity=Le(d,Jl);this.N=e;this.ea=i;this.mc=j;b=f||{};this.Yn=!!b.mapsdt;this.Pm=!!b.geodesic;this.mD=b.mouseOutTolerance||i;this.jc=e;if(f&&f.clickable!=i)this.jc=f.clickable;this.ia=i;this.hd={};this.Db={};this.Va=j;this.S=i;this.Oa=a&&r(a)||this.Va?4:0;this.ce=i;if(this.Va){this.ah=3;this.Ce=16}else{this.ah=1;this.Ce=32}this.Jw=0;this.j=[];this.jb=[];this.U=[];if(a){f=[];for(b=0;b<r(a);b++)if(c=a[b])c.lat&&c.lng?f.push(c):f.push(new z(c.y,\r
33114 c.x));this.j=f;this.Qq()}this.f=i;this.Qa=e;this.Vj={}};\r
33115 l=Cl.prototype;l.Ea=function(){return"Polyline"};\r
33116 l.initialize=function(a){this.f=a;this.Qa=j};\r
33117 l.copy=function(){var a=new Cl(i,this.color,this.weight,this.opacity);a.j=Me(this.j);a.Ce=this.Ce;a.S=this.S;a.Oa=this.Oa;a.ce=this.ce;a.ia=this.ia;return a};\r
33118 l.Vb=function(a){return new z(this.j[a].lat(),this.j[a].lng())};\r
33119 l.GM=function(){return{color:this.color,weight:this.weight,opacity:this.opacity}};\r
33120 l.Ud=function(){return r(this.j)};\r
33121 l.show=function(){this.Wa(e)};\r
33122 l.hide=function(){this.Wa(j)};\r
33123 l.I=function(){return!this.N};\r
33124 l.ya=function(){return!this.Yn};\r
33125 l.sL=function(){var a=this.Ud();if(a==0)return i;var b=this.Vb(Kd((a-1)/2));a=this.Vb(ke((a-1)/2));b=this.f.J(b);a=this.f.J(a);return this.f.X(new S((b.x+a.x)/2,(b.y+a.y)/2))};\r
33126 l.aM=function(a){var b=this.j,c=0;a=a||6378137;for(var d=0,f=r(b);d<f-1;++d)c+=b[d].Pb(b[d+1],a);return c};\r
33127 l.zv=function(a){this.ia=a};\r
33128 l.hE=function(){x(Vh).Cf(n(function(){this.H();this.Se()},\r
33129 this))};\r
33130 l.J=function(a){return this.f.J(a)};\r
33131 l.X=function(a){return this.f.X(a)};\r
33132 function Kl(a,b){b=new Cl(i,a.color,a.weight,a.opacity,b);b.LO(a);return b}\r
33133 l=Cl.prototype;\r
33134 l.LO=function(a){this.ia=a;Ge(this,a,["name","description","snippet"]);this.Ce=a.zoomFactor;if(this.Ce==16)this.ah=3;var b=r(a.levels||[]);if(b){for(var c=a.points,d=r(c),f=new Array(b),g=0,h=0,k=0,o=0;g<d;++o){var q=1,s=0,u;do{u=c.charCodeAt(g++)-63-1;q+=u<<s;s+=5}while(u>=31);h+=q&1?~(q>>1):q>>1;q=1;s=0;do{u=c.charCodeAt(g++)-63-1;q+=u<<s;s+=5}while(u>=31);k+=q&1?~(q>>1):q>>1;f[o]=new z(h*1.0E-5,k*1.0E-5,e)}this.j=f;c=a.levels;d=new Array(b);for(f=0;f<b;++f)d[f]=c.charCodeAt(f)-63;b=this.S=d;this.Oa=\r
33135 a.numLevels;this.ce=Ll(b,this.Oa)}else{this.j=[];this.S=[];this.Oa=0;this.ce=[]}this.K=i};\r
33136 l.H=function(a,b){if(this.K&&!a&&!b)return this.K;var c=r(this.j);if(c==0)return this.K=i;var d=a?a:0;c=b?b:c;var f=new id(this.j[d]);if(this.Pm)for(d=d+1;d<c;++d){var g=Ml([this.j[d-1],this.j[d]]);f.extend(g.nb());f.extend(g.mb())}else for(d=d+1;d<c;d++)f.extend(this.j[d]);if(!a&&!b)this.K=f;return f};\r
33137 l.cn=function(){return this.Oa};\r
33138 l.kw=function(){var a=[];t(this.j,function(b){a.push(b.MG())});\r
33139 return a.join(" ")};\r
33140 l.getKml=function(a){vd("kmlu",2,n(function(b){a(b(this))},\r
33141 this))};var Nl=2,Ol="#0055ff";function Pl(){Pl.g.apply(this,arguments)}\r
33142 p(Pl,Al);l=Pl.prototype;l.Wa=Bl;l.sh=Pe;l.aE=Pe;l.redraw=Bl;l.remove=function(){this.Qa=e;t(this.xj,w);this.xj.length=0};\r
33143 zj(Pl,"poly",3);Pl.g=function(a,b,c,d,f,g,h){h=h||{};this.D=[];var k=h.mouseOutTolerance;this.mD=k;if(a){this.D=[new Cl(a,b,c,d,{mouseOutTolerance:k})];this.D[0].Wo&&this.D[0].Wo(e);c=this.D[0].weight}this.fill=f||!ue(f);this.color=f||Ol;this.opacity=Le(g,0.25);this.outline=!!(a&&c&&c>0);this.N=e;this.ea=i;this.mc=j;this.Yn=!!h.mapsdt;this.jc=e;if(h.clickable!=i)this.jc=h.clickable;this.ia=i;this.hd={};this.Db={};this.sf=[];this.Qa=e;this.xj=[]};\r
33144 l=Pl.prototype;l.Ea=function(){return"Polygon"};\r
33145 l.initialize=function(a){this.f=a;this.Qa=j;for(var b=0;b<r(this.D);++b){this.D[b].initialize(a);this.xj.push(U(this.D[b],"lineupdated",this,this.qV))}};\r
33146 l.qV=function(){this.hd={};this.Db={};this.K=i;this.sf=[];A(this,"lineupdated")};\r
33147 l.copy=function(){var a=new Pl(i,i,i,i,i,i);a.ia=this.ia;Ge(a,this,["fill","color","opacity","outline","name","description","snippet"]);for(var b=0;b<r(this.D);++b)a.D.push(this.D[b].copy());return a};\r
33148 l.H=function(){if(!this.K){for(var a=i,b=0;b<r(this.D);b++){var c=this.D[b].H();if(c)if(a){a.extend(c.gs());a.extend(c.XA())}else a=c}this.K=a}return this.K};\r
33149 l.Vb=function(a){if(r(this.D)>0)return this.D[0].Vb(a);return i};\r
33150 l.Ud=function(){if(r(this.D)>0)return this.D[0].Ud()};\r
33151 l.show=function(){this.Wa(e)};\r
33152 l.hide=function(){this.Wa(j)};\r
33153 l.I=function(){return!this.N};\r
33154 l.ya=function(){return!this.Yn};\r
33155 l.lL=function(a){for(var b=0,c=this.D[0].j,d=c[0],f=1,g=r(c);f<g-1;++f)b+=qj(d,c[f],c[f+1])*rj(d,c[f],c[f+1]);a=a||6378137;return Math.abs(b)*a*a};\r
33156 l.zv=function(a){this.ia=a};\r
33157 l.hE=function(){x(Vh).Cf(n(function(){this.H();this.Se()},\r
33158 this))};\r
33159 function Ql(a,b){var c=new Pl(i,i,i,i,a.fill?a.color||Ol:i,a.opacity,b);c.ia=a;Ge(c,a,["name","description","snippet","outline"]);for(var d=Le(a.outline,e),f=0;f<r(a.polylines||[]);++f){a.polylines[f].weight=a.polylines[f].weight||Nl;if(!d)a.polylines[f].weight=0;c.D[f]=Kl(a.polylines[f],b);c.D[f].Wo(e)}return c}\r
33160 Pl.prototype.cn=function(){for(var a=0,b=0;b<r(this.D);++b)if(this.D[b].cn()>a)a=this.D[b].cn();return a};\r
33161 Pl.prototype.getKml=function(a){vd("kmlu",3,n(function(b){a(b(this))},\r
33162 this))};function Ml(a){var b;b=[];var c=[];oj(a[0],b);oj(a[1],c);var d=[];Rl(b,c,d);b=[];Rl(d,[0,0,1],b);c=new Sl;Rl(d,b,c.r3);if(c.r3[0]*c.r3[0]+c.r3[1]*c.r3[1]+c.r3[2]*c.r3[2]>1.0E-12)pj(c.r3,c.latlng);else c.latlng=new z(a[0].lat(),a[0].lng());b=c.latlng;c=new id;c.extend(a[0]);c.extend(a[1]);d=c.Ia;c=c.Ja;var f=Qe(b.lng());b=Qe(b.lat());c.contains(f)&&d.extend(b);if(c.contains(f+ee)||c.contains(f-ee))d.extend(-b);return new nj(new z(Re(d.lo),a[0].lng(),e),new z(Re(d.hi),a[1].lng(),e))}\r
33163 function Sl(a,b){this.latlng=a?a:new z(0,0);this.r3=b?b:[0,0,0]}\r
33164 Sl.prototype.toString=function(){var a=this.r3;return this.latlng+", ["+a[0]+", "+a[1]+", "+a[2]+"]"};var Hl="#0000ff",Il=5,Jl=0.45,Ll=function(a,b){for(var c=r(a),d=new Array(c),f=new Array(b),g=0;g<b;++g)f[g]=c;for(g=c-1;g>=0;--g){for(var h=a[g],k=c,o=h+1;o<b;++o)if(k>f[o])k=f[o];d[g]=k;f[h]=g}return d};Fl=function(){return Dl};\r
33165 Cl.prototype.lb=function(a){for(var b=0,c=1;c<r(this.j);++c)b+=this.j[c].Pb(this.j[c-1]);if(a)b+=a.Pb(this.j[r(this.j)-1]);return b*3.2808399};\r
33166 Cl.prototype.Xo=function(a,b){this.Qk=!!b;if(this.kb!=a){Gl=this.kb=a;if(this.f){this.f.Fj("Polyline").rv(!this.kb);A(this.f,"capture",this,m,a)}}};\r
33167 function Tl(a){return function(){var b=arguments;vd("mspe",a,n(function(c){c.apply(this,b)},\r
33168 this))}}\r
33169 l=Cl.prototype;l.zm=function(){var a=arguments;vd("mspe",1,n(function(b){b.apply(this,a)},\r
33170 this))};\r
33171 l.Ar=Tl(3);l.cq=Tl(4);l.Tj=function(){return this.kb};\r
33172 l.Br=function(){var a=arguments;vd("mspe",5,n(function(b){b.apply(this,a)},\r
33173 this))};\r
33174 l.bf=function(){if(!this.ok)return j;return this.Ud()>=this.ok};\r
33175 l.Wo=function(a){this.Hb=a};\r
33176 l.er=Tl(6);l.Lv=Tl(7);l=Pl.prototype;l.Ar=Tl(8);l.Lv=Tl(9);l.$S=Tl(18);l.er=Tl(10);l.Tj=function(){return this.D[0].kb};\r
33177 l.cq=Tl(11);l.Br=Tl(12);l.zm=Tl(13);Cl.prototype.aq=Tl(20);v(Pc,Ba,function(a){a.AE(["Polyline","Polygon"],new Ul)});\r
33178 function Ul(){Ul.g.apply(this,arguments)}\r
33179 p(Ul,qi);Ul.g=Jh(N);Ul.prototype.initialize=Jh(N);Ul.prototype.ba=N;Ul.prototype.ka=N;Ul.prototype.rv=N;Ih(Ul,"poly",4);function ak(){ak.g.apply(this,arguments)}\r
33180 p(ak,oi);function Vl(){Vl.g.apply(this,arguments)}\r
33181 ;function Wl(){Wl.g.apply(this,arguments)}\r
33182 ;function Yj(){Yj.g.apply(this,arguments)}\r
33183 ;ak.g=function(a,b){this.Cc=a;this.N=e;if(b){if(ve(b.zPriority))this.zPriority=b.zPriority;if(b.statsFlowType)this.kl=b.statsFlowType}};\r
33184 l=ak.prototype;l.constructor=ak;l.yh=e;l.zPriority=10;l.kl="";l.initialize=function(a){this.La=new Vj(a.Ya(1),a.O(),a,e,this.kl);this.La.pi(this.yh);a=a.o;var b={};b.tileSize=a.getTileSize();this.La.Bb(new Hd([this.Cc],a.getProjection(),"",b));yh(this.La,La,this)};\r
33185 l.remove=function(){ph(this.La,La);this.La.remove();this.La=i};\r
33186 l.pi=function(a){this.yh=a;this.La&&this.La.pi(a)};\r
33187 l.copy=function(){var a=new ak(this.Cc);a.pi(this.yh);return a};\r
33188 l.redraw=N;l.hide=function(){this.N=j;this.La.hide()};\r
33189 l.show=function(){this.N=e;this.La.show()};\r
33190 l.I=function(){return!this.N};\r
33191 l.ya=Oe;l.KM=function(){return this.Cc};\r
33192 l.refresh=function(){this.La&&this.La.refresh()};\r
33193 l.getKml=function(a){var b=this.Cc.DO;b?vd("kmlu",7,function(c){a(c(b))}):a(i)};var Xl=0,Yl=1,Zl=0,$l="iconAnchor",am="iconSize",bm="image",cm="imageMap",dm="infoWindowAnchor",em="transparent",fm,gm,hm,im;function jm(a,b,c,d){De(this,a||{});if(b)this.image=b;if(c)this.label=c;if(d)this.shadow=d}\r
33194 function km(a){var b=a.infoWindowAnchor;a=a.iconAnchor;return new R(b.x-a.x,b.y-a.y)}\r
33195 function lm(a,b,c){var d=0;if(b==i)b=Yl;switch(b){case Xl:d=a;break;case Zl:d=c-1-a;break;case Yl:default:d=(c-1)*a}return d}\r
33196 function mm(a,b){if(a.image){var c=r(a.image);c=a.image.substring(0,c-4);a.printImage=c+"ie.gif";a.mozPrintImage=c+"ff.gif";if(b){a.shadow=b.shadow;a.iconSize=new R(b.width,b.height);a.shadowSize=new R(b.shadow_width,b.shadow_height);var d,f;d=b.hotspot_x;f=b.hotspot_y;var g=b.hotspot_x_units,h=b.hotspot_y_units;d=d!=i?lm(d,g,a.iconSize.width):(a.iconSize.width-1)/2;f=f!=i?lm(f,h,a.iconSize.height):a.iconSize.height;a.iconAnchor=new S(d,f);a.infoWindowAnchor=new S(d,2);if(b.mask)a.transparent=c+"t.png";\r
33197 a.imageMap=[0,0,0,b.width,b.height,b.width,b.height,0]}}}\r
33198 fm=new jm;fm[bm]=L("marker");fm.shadow=L("shadow50");fm[am]=new R(20,34);fm.shadowSize=new R(37,34);fm[$l]=new S(9,34);fm.maxHeight=13;fm.dragCrossImage=L("drag_cross_67_16");fm.dragCrossSize=new R(16,16);fm.dragCrossAnchor=new S(7,9);fm[dm]=new S(9,2);fm[em]=L("markerTransparent");fm[cm]=[9,0,6,1,4,2,2,4,0,8,0,12,1,14,2,16,5,19,7,23,8,26,9,30,9,34,11,34,11,30,12,26,13,24,14,21,16,18,18,16,20,12,20,8,18,4,16,2,15,1,13,0];fm.printImage=L("markerie",e);fm.mozPrintImage=L("markerff",e);\r
33199 fm.printShadow=L("dithshadow",e);var nm=new jm;nm[bm]=L("circle");nm[em]=L("circleTransparent");nm[cm]=[10,10,10];nm.imageMapType="circle";nm.shadow=L("circle-shadow45");nm[am]=new R(20,34);nm.shadowSize=new R(37,34);nm[$l]=new S(9,34);nm.maxHeight=13;nm.dragCrossImage=L("drag_cross_67_16");nm.dragCrossSize=new R(16,16);nm.dragCrossAnchor=new S(7,9);nm[dm]=new S(9,2);nm.printImage=L("circleie",e);nm.mozPrintImage=L("circleff",e);gm=new jm(fm,L("dd-start"));gm.printImage=L("dd-startie",e);\r
33200 gm.mozPrintImage=L("dd-startff",e);hm=new jm(fm,L("dd-pause"));hm.printImage=L("dd-pauseie",e);hm.mozPrintImage=L("dd-pauseff",e);im=new jm(fm,L("dd-end"));im.printImage=L("dd-endie",e);im.mozPrintImage=L("dd-endff",e);function om(a){a=se(K(a),0,255);return Kd(a/16).toString(16)+(a%16).toString(16)}\r
33201 ;function pm(a){var b=[1518500249,1859775393,2400959708,3395469782];a+=String.fromCharCode(128);var c=r(a),d=ke(c/4)+2;d=ke(d/16);for(var f=new Array(d),g=0;g<d;g++){f[g]=new Array(16);for(var h=0;h<16;h++)f[g][h]=a.charCodeAt(g*64+h*4)<<24|a.charCodeAt(g*64+h*4+1)<<16|a.charCodeAt(g*64+h*4+2)<<8|a.charCodeAt(g*64+h*4+3)}f[d-1][14]=(c-1>>>30)*8;f[d-1][15]=(c-1)*8&4294967295;a=1732584193;c=4023233417;h=2562383102;var k=271733878,o=3285377520,q=new Array(80),s,u,H,G,I;for(g=0;g<d;g++){for(var M=0;M<\r
33202 16;M++)q[M]=f[g][M];for(M=16;M<80;M++)q[M]=(q[M-3]^q[M-8]^q[M-14]^q[M-16])<<1|(q[M-3]^q[M-8]^q[M-14]^q[M-16])>>>31;s=a;u=c;H=h;G=k;I=o;for(M=0;M<80;M++){var Y=Kd(M/20);Y=(s<<5|s>>>27)+qm(Y,u,H,G)+I+b[Y]+q[M]&4294967295;I=G;G=H;H=u<<30|u>>>2;u=s;s=Y}a=a+s&4294967295;c=c+u&4294967295;h=h+H&4294967295;k=k+G&4294967295;o=o+I&4294967295}return rm(a)+rm(c)+rm(h)+rm(k)+rm(o)}\r
33203 function qm(a,b,c,d){switch(a){case 0:return b&c^~b&d;case 1:return b^c^d;case 2:return b&c^b&d^c&d;case 3:return b^c^d}}\r
33204 function rm(a){for(var b="",c=7;c>=0;c--)b+=(a>>>c*4&15).toString(16);return b}\r
33205 ;function sm(a){this.Ha=new wg(_mHost+"/maps/gen_204",window.document);this.Da=a}\r
33206 sm.prototype.log=function(a){if(Fc!=0){var b;b="";var c,d,f,g,h,k,o=0;do{c=a.charCodeAt(o++);d=a.charCodeAt(o++);f=a.charCodeAt(o++);g=c>>2;c=(c&3)<<4|d>>4;h=(d&15)<<2|f>>6;k=f&63;if(isNaN(d))h=k=64;else if(isNaN(f))k=64;b=b+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-=".charAt(g)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-=".charAt(c)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-=".charAt(k)}while(o<\r
33207 a.length);b=b;a=pm(b).substr(0,10);d=[];f=Gc%Fc;for(g=r(b);f<g;){d.push(b[f]);f+=Fc}b=d.join("");this.Ha.send({ev:"frag",src:this.Da,fpr:a,fra:b,see:Gc})}};function ik(){ik.g.apply(this,arguments)}\r
33208 p(ik,oi);function tm(a,b,c,d,f){this.B=a;this.gb=b;this.jj=i;this.wb=c;this.jc=this.N=this.kd=e;this.ng=1;this.RV=d;this.xe={border:"1px solid "+d,backgroundColor:"white",fontSize:"1%"};f&&De(this.xe,f)}\r
33209 p(tm,ik);l=tm.prototype;l.initialize=Pe;l.Gg=Pe;l.$k=Pe;l.qv=Pe;l.LF=Pe;l.Jb=Pe;l.remove=Pe;l.Yl=Pe;l.Ic=Pe;l.nc=Pe;l.cc=Pe;l.redraw=Pe;l.cc=Pe;l.hide=Pe;l.show=Pe;Ih(tm,"mspe",17);tm.prototype.Ea=function(){return"ControlPoint"};\r
33210 tm.prototype.I=function(){return!this.N};\r
33211 tm.prototype.ya=Oe;tm.prototype.Hj=function(){return this.B};function um(a,b,c,d){this.B=a;this.ue=b;this.Fr=c;this.$=d||{};um.g.apply(this,arguments)}\r
33212 um.g=N;p(um,oi);um.prototype.copy=function(){return new um(this.B,this.ue,this.Fr,this.$)};\r
33213 zj(um,"arrow",1);function vm(){if(ue(El))return El;var a;a:{a=j;if(document.namespaces){for(var b=0;b<document.namespaces.length;b++){var c=document.namespaces(b);if(c.name=="v")if(c.urn=="urn:schemas-microsoft-com:vml")a=e;else{a=j;break a}}if(!a){a=e;document.namespaces.add("v","urn:schemas-microsoft-com:vml")}}a=a}if(!a)return El=j;a=J("div",document.body);Vd(a,'<v:shape id="vml_flag1" adj="1" />');b=a.firstChild;b.style.behavior="url(#default#VML)";El=b?typeof b.adj=="object":e;Cg(a);return El}\r
33214 function wm(){if(E.type==0&&E.version<10)return j;if(document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Shape","1.1"))return e;return j}\r
33215 function xm(){if(!E.pb())return j;return!!document.createElement("canvas").getContext}\r
33216 ;var Rl=function(a,b,c){c[0]=a[1]*b[2]-a[2]*b[1];c[1]=a[2]*b[0]-a[0]*b[2];c[2]=a[0]*b[1]-a[1]*b[0]};ik.g=function(a,b,c){if(!a.lat&&!a.lon)a=new z(a.y,a.x);this.B=a;this.jj=i;this.va=0;this.N=this.wb=j;this.Ir=[];this.V=[];this.qa=fm;this.zh=this.Rs=i;this.jc=e;this.ii=this.cg=j;this.f=i;if(b instanceof jm||b==i||c!=i){this.qa=b||fm;this.jc=!c;this.$={icon:this.qa,clickable:this.jc}}else{b=this.$=b||{};this.qa=b.icon||fm;this.xy&&this.xy(b);if(b.clickable!=i)this.jc=b.clickable;if(b.isPng)this.cg=e}b&&Ge(this,b,["id","icon_id","name","description","snippet","nodeData"]);this.gz=ym;if(b&&b.getDomId)this.gz=\r
33217 b.getDomId;A(ik,Ba,this)};\r
33218 l=ik.prototype;l.oD=i;l.Ea=function(){return"Marker"};\r
33219 l.NN=function(a,b,c,d){var f=this.qa;a=J("div",a,b.position,i,i,i,this.ii);a.appendChild(c);fg(c,0);c=new Qh;c.alpha=di(f.label.url)||this.cg;c.cache=e;c.onLoadCallback=d;c.onErrorCallback=d;d=Qc(f.label.url,a,f.label.anchor,f.label.size,c);fg(d,1);bg(d);this.V.push(a)};\r
33220 l.initialize=function(a){this.f=a;this.N=e;this.vJ();this.$.hide&&this.hide()};\r
33221 l.vJ=function(){var a=this.f,b=this.qa,c=this.V,d=a.Ya(4);if(this.$.ground)d=a.Ya(0);var f=a.Ya(2);a=a.Ya(6);if(this.$.zS)this.ii=e;var g=this.Hf(),h=3,k=sf(this,function(){--h==0&&A(this,"initialized")}),\r
33222 o=new Qh,q=b.sprite&&b.sprite.image?di(b.sprite.image):di(b.image);o.alpha=q||this.cg;o.scale=e;o.cache=e;o.styleClass=b.styleClass;o.onLoadCallback=k;o.onErrorCallback=k;q=zm(b.image,b.sprite,d,i,b.iconSize,o);if(b.label)this.NN(d,g,q,k);else{Bf(q,g.position,this.ii);d.appendChild(q);c.push(q);k("",i)}this.Rs=q;if(b.shadow&&!this.$.ground){o=new Qh;o.alpha=di(b.shadow)||this.cg;o.scale=e;o.cache=e;o.onLoadCallback=k;o.onErrorCallback=k;k=Qc(b.shadow,f,g.shadowPosition,b.shadowSize,o);bg(k);k.hC=\r
33223 e;c.push(k)}else k("",i);k=i;if(b.transparent){o=new Qh;o.alpha=di(b.transparent)||this.cg;o.scale=e;o.cache=e;o.styleClass=b.styleClass;k=Qc(b.transparent,a,g.position,b.iconSize,o);bg(k);c.push(k);k.sO=e}this.GJ(d,f,q,g);this.ri();this.sJ(a,q,k)};\r
33224 l.GJ=function(a,b,c,d){var f=this.qa,g=this.V,h=new Qh;h.scale=e;h.cache=e;h.printOnly=e;var k;if(E.px())k=E.Na()?f.mozPrintImage:f.printImage;if(k){bg(c);a=zm(k,f.sprite,a,d.position,f.iconSize,h);g.push(a)}if(f.printShadow&&!E.Na()){b=Qc(f.printShadow,b,d.position,f.shadowSize,h);b.hC=e;g.push(b)}};\r
33225 l.sJ=function(a,b,c){var d=this.qa;if(!this.jc&&!this.wb)this.vx(c||b);else{b=c||b;var f=E.Na();if(c&&d.imageMap&&f){b="gmimap"+ji++;a=this.zh=J("map",a);sh(a,ja,Ug);a.setAttribute("name",b);a.setAttribute("id",b);f=J("area",i);f.setAttribute("log","miw");var g=d.imageMap.join(",");f.setAttribute("coords",g);d=Le(d.imageMapType,"poly");f.setAttribute("shape",d);f.setAttribute("alt","");f.setAttribute("href","javascript:void(0)");a.appendChild(f);c.setAttribute("usemap","#"+b);b=f}else $f(b,"pointer");\r
33226 c=this.gz(this);b.setAttribute("id",c);b.nodeData=this.nodeData;this.oD=b;this.Yl(b)}};\r
33227 l.Tb=function(){return this.f};\r
33228 var zm=function(a,b,c,d,f,g){if(b){f=f||new R(b.width,b.height);return hi(b.image||a,c,new S(b.left?b.left:0,b.top),f,d,i,g)}else return Qc(a,c,d,f,g)};\r
33229 l=ik.prototype;l.Hf=function(){var a=this.qa.iconAnchor,b=this.jj=this.f.J(this.B),c=b.x-a.x;if(this.ii)c=-c;a=this.Ao=new S(c,b.y-a.y-this.va);c=new S(a.x+this.va/2,a.y+this.va/2);return{divPixel:b,position:a,shadowPosition:c}};\r
33230 l.fT=function(a){Zh(this.Rs,a,{scale:e,size:this.qa.iconSize})};\r
33231 l.VI=function(){t(this.V,Cg);ff(this.V);this.oD=this.Rs=i;if(this.zh){Cg(this.zh);this.zh=i}};\r
33232 l.remove=function(){this.VI();t(this.Ir,function(a){if(a[Am]==this)a[Am]=i});\r
33233 ff(this.Ir);this.da&&this.da();A(this,"remove");this.vd=i};\r
33234 l.copy=function(){this.$.id=this.id;this.$.icon_id=this.icon_id;return new ik(this.B,this.$)};\r
33235 l.hide=function(){this.Wa(j)};\r
33236 l.show=function(){this.Wa(e)};\r
33237 l.Wa=function(a,b){if(!(!b&&this.N==a)){this.N=a;t(this.V,a?Uf:Tf);this.zh&&Pf(this.zh,a);A(this,Qa,a)}};\r
33238 l.I=function(){return!this.N};\r
33239 l.ya=function(){return e};\r
33240 l.redraw=function(a){if(this.V.length){if(!a)if(this.f.J(this.B).equals(this.jj))return;a=this.V;for(var b=this.Hf(),c=0,d=r(a);c<d;++c)if(a[c].dO)this.oK(b,a[c]);else a[c].hC?Bf(a[c],b.shadowPosition,this.ii):Bf(a[c],b.position,this.ii)}};\r
33241 l.ri=function(){if(this.V&&this.V.length)for(var a=this.$.zIndexProcess?this.$.zIndexProcess(this):pi(this.B.lat()),b=this.V,c=0;c<r(b);++c)this.QV&&b[c].sO?fg(b[c],1000000000):fg(b[c],a)};\r
33242 l.xB=function(a){this.ZV=a;this.$.zIndexProcess&&this.ri()};\r
33243 l.Hj=function(){return this.B};\r
33244 l.H=function(){return new id(this.B)};\r
33245 l.cc=function(a){var b=this.B;this.B=a;this.ri();this.redraw(e);A(this,"changed",this,b,a);A(this,"kmlchanged")};\r
33246 l.pd=function(){return this.qa};\r
33247 l.bB=function(){return this.$.title};\r
33248 l.uh=function(){return this.qa.iconSize||new R(0,0)};\r
33249 l.zb=function(){return this.Ao};\r
33250 l.kq=function(a){a[Am]=this;this.Ir.push(a)};\r
33251 l.Yl=function(a){this.wb?this.lq(a):this.kq(a);this.vx(a)};\r
33252 l.vx=function(a){var b=this.$.title;b&&!this.$.hoverable?Kg(a,"title",b):Lg(a,"title")};\r
33253 l.zv=function(a){this.ia=a;A(this,Aa,a)};\r
33254 l.getKml=function(a){vd("kmlu",1,n(function(b){a(b(this))},\r
33255 this))};\r
33256 l.$u=function(a){vd("apiiw",7,n(function(b){if(!this.vd){this.vd=new b(this);xh(this,"remove",this,this.$R)}this.bm||a.call(this)},\r
33257 this))};\r
33258 l.$R=function(){if(this.vd){this.vd.remove();delete this.vd}};\r
33259 l.ja=function(a,b){this.bm=j;this.$u(function(){this.vd.ja(a,b)})};\r
33260 l.Zl=function(a,b){if(this.Ws){w(this.Ws);this.Ws=i}this.da();if(a)this.Ws=v(this,m,uf(this,this.ja,a,b))};\r
33261 l.AJ=function(a,b){if(a.infoWindow)this.infoWindow=n(this.QQ,this,a,b)};\r
33262 l.QQ=function(a,b,c,d){this.bm=j;rg(d);this.$u(function(){this.vd.PQ(a,b,c,d)})};\r
33263 l.da=function(){if(this.vd)this.vd.da();else this.bm=e};\r
33264 l.Kb=function(a,b){this.bm=j;this.$u(function(){this.vd.Kb(a,b)})};\r
33265 var Bm=0,ym=function(a){return a.id?"mtgt_"+a.id:"mtgt_unnamed_"+Bm++};var Am="__marker__",Cm=[[m,e,e,j],[ka,e,e,j],["mousedown",e,e,j],["mouseup",j,e,j],["mouseover",j,j,j],["mouseout",j,j,j],[ja,j,j,e]],Dm={};(function(){t(Cm,function(a){Dm[a[0]]={mU:a[1],bL:a[3]}})})();\r
33266 function Wj(a){t(a,function(b){for(var c=0;c<Cm.length;++c)sh(b,Cm[c][0],Em);Fm(b);v(b,Oa,Gm)})}\r
33267 function Fm(a){E.Dh()&&vd("touch",Va,function(b){new b(a)})}\r
33268 function Em(a){var b=Qg(a)[Am],c=a.type;if(b){Dm[c].mU&&Tg(a);Dm[c].bL?A(b,c,a):A(b,c,b.B)}}\r
33269 function Gm(){Ig(this,function(a){if(a[Am])try{delete a[Am]}catch(b){a[Am]=i}})}\r
33270 function Hm(a,b){t(Cm,function(c){c[2]&&v(a,c[0],function(){A(b,c[0],b.B)})})}\r
33271 ;function Im(){this.kk=[];this.yt=new sm("mk");this.Ml=Math.random()<Ec;v(ik,Ba,n(this.zD,this))}\r
33272 Im.prototype.zD=function(a){if(this.Ml){r(this.kk)||setTimeout(n(this.YO,this),1000);this.kk.push(a);v(a,"remove",n(function(){xe(this.kk,a)},\r
33273 this))}};\r
33274 Im.prototype.YO=function(){for(var a=[],b=this.kk,c=Math.min(r(b),200),d=0;d<c;++d){var f=b[d];if(!f.I()){var g=f.B;f=encodeURIComponent(f.bB());a.push([g.lat(),g.lng(),f].join(","))}}if(r(a)){a.sort();a.push(b[0].Tb().F());this.yt.log(a.join(","))}this.Ml=j;this.kk=[]};\r
33275 var Jm=i;fd(ik,Ba,function(a){Jm=new Im;Jm.zD(a)});var Km=Q(12);\r
33276 function Lm(a,b,c,d,f,g,h,k){if(Ub){this.l=k?k:dl("tb_jstemplate",Mm);a&&a.appendChild(this.l);this.Pj=i;this.wq=e;this.k={};this.k.width=String(d);this.k.right=String(f);this.k.fontSize=Km;this.k.title=c?c:"";this.k.whiteSpace="";this.k.textAlign="center";this.k.label=b;this.k.paddingLeft="";this.k.paddingRight="";this.k.visible=e;this.k.toggled=j;this.k.subtypes=h?h:[];this.k.showChildren=h?r(h):j;this.k.rightAlign=j;this.vg()}else{a=J("div",a);Gf(a);h=a.style;h.backgroundColor="white";h.border=\r
33277 "1px solid black";h.textAlign="center";h.width=String(d);h.right=String(f);$f(a,"pointer");c&&a.setAttribute("title",c);c=J("div",a);c.style.fontSize=Km;Ef(b,c);this.l=a;this.ub=c}this.kC=j;this.cW=e;this.o=g}\r
33278 l=Lm.prototype;l.Uw=function(a,b,c,d){if(Ub){var f={};f.label=a;f.mapType=b;f.alt=c;f.checked=d;this.k.subtypes.push(f);if(this.wq)this.k.showChildren=e;this.vg()}};\r
33279 l.Sv=function(){if(Ub){this.zq();this.wq=e;if(!this.k.showChildren){this.k.showChildren=e;this.vg()}}};\r
33280 l.qn=function(){if(Ub){this.zq();this.wq=j;if(this.k.showChildren){this.k.showChildren=j;this.vg()}}};\r
33281 l.qF=function(a){if(Ub){this.zq();this.Pj=qg(this.l,n(this.qn,this),a)}};\r
33282 l.zq=function(){Ub&&clearTimeout(this.Pj)};\r
33283 l.vg=function(){if(Ub){var a=Ek(this.k);Tk(a,this.l);this.ub=this.l.firstChild}};\r
33284 l.yb=function(){return this.o};\r
33285 l.RS=function(a){if(Ub){if(this.k.title!=a){this.k.title=a;this.vg()}}else this.l.setAttribute("title",a)};\r
33286 l.Gg=function(a){if(Ub){for(var b in a)this.k[b]=a[b];this.vg()}};\r
33287 l.se=function(a,b){if(b){if(this.k.toggled!=a){this.k.toggled=a;this.vg()}}else{b=this.ub.style;b.fontWeight=a?"bold":"";b.border=a?"1px solid #6C9DDF":"1px solid white";for(var c=a?["Top","Left"]:["Bottom","Right"],d=a?"1px solid #345684":"1px solid #b0b0b0",f=0;f<r(c);f++)b["border"+c[f]]=d}return this.kC=a};\r
33288 l.Ln=function(){return this.kC};function Mm(){Yi()=="rtl";return'<div id="tbo_jstemplate" jsskip="$this.skip"><div id="tb_jstemplate" style="background-color: white;text-align: center;border: 1px solid black;position: absolute;cursor: pointer;" jsdisplay="visible" jsvalues=".style.width:$this.width;.style.right:$this.right;.style.whiteSpace:$this.whiteSpace;.style.textAlign:$this.textAlign;.title:$this.title;"><div jscontent="$this.label" jsvalues=".style.fontSize:$this.fontSize;.style.paddingLeft:$this.paddingLeft;.style.paddingRight:$this.paddingRight;.style.fontWeight:$this.toggled ? \'bold\' : \'\';.style.borderTop:$this.toggled ? \'1px solid #345684\' : \'1px solid white\';.style.borderLeft:$this.toggled ? \'1px solid #345684\' : \'1px solid white\';.style.borderBottom:$this.toggled ? \'1px solid #6C9DDF\' : \'1px solid #b0b0b0\';.style.borderRight:$this.toggled ? \'1px solid #6C9DDF\' : \'1px solid #b0b0b0\';"></div><div style="white-space:nowrap;text-align:left;font-size:11px;width:83px;background-color:white;border:1px solid black;padding-left:2px;position:absolute;" jsdisplay="showChildren" jsvalues=".style.left:$this.rightAlign ? \'-21px\' : \'-1px\';"><div jsselect="subtypes" jsvalues=".title:$this.alt"><input type="checkbox" style="vertical-align:middle;" jsvalues=".checked:$this.checked;"></input><span jscontent="$this.label"></span></div></div></div></div><div id="mmtc_jstemplate" jsselect="buttons"><div transclude="tbo_jstemplate"></div></div>'}\r
33289 ;function Nm(a){return function(b){b?a(new z(Number(b.Location.lat),Number(b.Location.lng))):a(i)}}\r
33290 function Om(a){return function(){a(i)}}\r
33291 function Pm(a,b){return function(c){if(c){c[vg]=200;c.location=Qm(c.Location);c.copyright=c.Data&&c.Data.copyright;c.links=c.Links;t(c.links,Rm);b(c)}else b({query:a,code:600})}}\r
33292 function Sm(a,b){return function(){b({query:a,code:500})}}\r
33293 function Tm(a){this.pm=a||"api";this.Ha=new wg(_mHost+"/cbk",document)}\r
33294 Tm.prototype.Fq=function(){var a={};a.output="json";a.oe="utf-8";a.cb_client=this.pm;return a};\r
33295 Tm.prototype.MA=function(a,b){var c=this.Fq();c.ll=a.Aa();this.Ha.send(c,Pm(a.Aa(),b),Sm(a.Aa(),b))};\r
33296 Tm.prototype.oM=function(a,b){var c=this.Fq();c.ll=a.Aa();this.Ha.send(c,Nm(b),Om(b))};\r
33297 Tm.prototype.tM=function(a,b){var c=this.Fq();c.panoid=a;this.Ha.send(c,Pm(a,b),Sm(a,b))};function Um(){Cj.call(this,new md(""));this.RI=(_mCityblockUseSsl?Jb:ib)+"/cbk"}\r
33298 p(Um,Cj);Um.prototype.isPng=function(){return e};\r
33299 Um.prototype.getTileUrl=function(a,b){if(b>=0){var c=this.f.o.getName();a=this.RI+"?output="+(c==F(10116)||c==F(10050)?"hybrid":"overlay")+"&zoom="+b+"&x="+a.x+"&y="+a.y;a+="&cb_client=api";return a}else return Rc};\r
33300 Um.prototype.nT=function(a){this.f=a};\r
33301 Um.prototype.Tb=function(){return this.f};function Vm(){ak.call(this,new Um,{zPriority:4})}\r
33302 p(Vm,ak);Vm.prototype.initialize=function(a){this.f=a;ak.prototype.initialize.apply(this,[a]);this.Cc.nT(a);this.Tx=i;this.Z=[];this.Z.push(U(a,Ea,this,this.vq));this.Z.push(U(x(Fj),"appfeaturesdata",this,this.vq));this.vq()};\r
33303 Vm.prototype.vq=function(a){if(!a||a=="cb")x(Fj).Lm("cb",this.f.H(),n(function(b){if(this.Tx!=b){this.Tx=b;A(this,"changed",b)}},\r
33304 this))};\r
33305 Vm.prototype.remove=function(){t(this.Z,w);ff(this.Z);ak.prototype.remove.apply(this)};\r
33306 Vm.prototype.Ea=function(){return"CityblockLayerOverlay"};function Qm(a){a.latlng=new z(Number(a.lat),Number(a.lng));var b=a.pov={};b.yaw=a.yaw&&Number(a.yaw);b.pitch=a.pitch&&Number(a.pitch);b.zoom=a.zoom&&Number(a.zoom);return a}\r
33307 function Rm(a){a.yaw=a.yawDeg&&Number(a.yawDeg);return a}\r
33308 ;function Wm(){Wm.g.apply(this,arguments)}\r
33309 Wm.g=function(){this.wa=j};\r
33310 l=Wm.prototype;l.hide=function(){return this.wa=e};\r
33311 l.show=function(){this.wa=j};\r
33312 l.I=function(){return this.wa};\r
33313 l.en=function(){return{}};\r
33314 l.gn=function(){return i};\r
33315 l.retarget=N;l.hF=N;l.$i=N;l.remove=N;l.focus=N;l.blur=N;l.ap=N;l.bl=N;l.al=N;l.YF=N;l.qb=N;l.Mm=N;l.ga=function(){return i};\r
33316 l.Gj=function(){return""};\r
33317 Ih(Wm,"cb_api",2);function Xm(){}\r
33318 p(Xm,rk);function gk(){gk.g.apply(this,arguments)}\r
33319 p(gk,Xm);function Ym(){Ym.g.apply(this,arguments)}\r
33320 p(Ym,Xm);function Zm(){Zm.g.apply(this,arguments)}\r
33321 p(Zm,Xm);Yj.g=function(a,b){this.anchor=a;this.offset=b||Yg};\r
33322 Yj.prototype.apply=function(a){Gf(a);a.style[this.WM()]=this.offset.getWidthString();a.style[this.RL()]=this.offset.getHeightString()};\r
33323 Yj.prototype.WM=function(){switch(this.anchor){case 1:case 3:return"right";default:return"left"}};\r
33324 Yj.prototype.RL=function(){switch(this.anchor){case 2:case 3:return"bottom";default:return"top"}};function $m(a){var b=this.Sb&&this.Sb();b=J("div",a.R(),i,b);this.W(a,b);return b}\r
33325 function Zj(){Zj.g.apply(this,arguments)}\r
33326 Zj.g=N;p(Zj,rk);Zj.prototype.hp=N;Zj.prototype.W=N;Ih(Zj,"ctrapi",7);Zj.prototype.allowSetVisibility=Ne;Zj.prototype.initialize=$m;Zj.prototype.getDefaultPosition=function(){return new Yj(2,new R(2,2))};\r
33327 function Xj(){Xj.g.apply(this,arguments)}\r
33328 Xj.g=N;p(Xj,rk);l=Xj.prototype;l.allowSetVisibility=Ne;l.printable=Oe;l.wk=N;l.sq=N;l.xa=N;l.W=N;Ih(Xj,"ctrapi",2);Xj.prototype.initialize=$m;Xj.prototype.getDefaultPosition=function(){return new Yj(3,new R(3,2))};\r
33329 function dk(){}\r
33330 p(dk,rk);dk.prototype.W=N;Ih(dk,"ctrapi",8);dk.prototype.initialize=$m;dk.prototype.allowSetVisibility=Ne;dk.prototype.getDefaultPosition=Pe;dk.prototype.Sb=function(){return new R(60,40)};\r
33331 function an(){}\r
33332 p(an,rk);an.prototype.W=N;Ih(an,"ctrapi",13);an.prototype.initialize=$m;an.prototype.getDefaultPosition=function(){return new Yj(0,new R(7,7))};\r
33333 an.prototype.Sb=function(){return new R(37,94)};\r
33334 function bn(){bn.g.apply(this,arguments)}\r
33335 bn.g=N;p(bn,rk);bn.prototype.W=N;Ih(bn,"ctrapi",12);bn.prototype.initialize=$m;bn.prototype.getDefaultPosition=function(){return xc?new Yj(2,new R(68,5)):new Yj(2,new R(7,4))};\r
33336 bn.prototype.Sb=function(){return new R(0,26)};\r
33337 function cn(){cn.g.apply(this,arguments)}\r
33338 p(cn,rk);cn.prototype.getDefaultPosition=function(){return new Yj(0,new R(7,7))};\r
33339 cn.prototype.Sb=function(){return new R(59,354)};\r
33340 cn.prototype.initialize=$m;function dn(){dn.g.apply(this,arguments)}\r
33341 dn.g=N;p(dn,cn);dn.prototype.W=N;Ih(dn,"ctrapi",5);function en(){en.g.apply(this,arguments)}\r
33342 en.g=N;p(en,cn);en.prototype.W=N;Ih(en,"ctrapi",6);function fn(){fn.g.apply(this,arguments)}\r
33343 Kh(fn,"ctrapi",17,{},{g:j});function gn(){gn.g.apply(this,arguments)}\r
33344 p(gn,rk);gn.prototype.initialize=$m;function fk(){fk.g.apply(this,arguments)}\r
33345 fk.g=N;p(fk,gn);fk.prototype.W=N;Ih(fk,"ctrapi",14);fk.prototype.getDefaultPosition=function(){return new Yj(0,new R(7,7))};\r
33346 fk.prototype.Sb=function(){return new R(17,35)};\r
33347 function hn(){hn.g.apply(this,arguments)}\r
33348 hn.g=N;p(hn,gn);hn.prototype.W=N;Ih(hn,"ctrapi",15);hn.prototype.getDefaultPosition=function(){return new Yj(0,new R(10,10))};\r
33349 hn.prototype.Sb=function(){return new R(19,42)};\r
33350 Xm.prototype.Jb=N;Xm.prototype.W=N;Ih(Xm,"ctrapi",1);Xm.prototype.initialize=$m;Xm.prototype.getDefaultPosition=function(){return new Yj(1,new R(7,7))};\r
33351 Ym.g=N;Ym.prototype.W=N;Ih(Ym,"ctrapi",9);Zm.g=N;Zm.prototype.W=N;Zm.prototype.Jk=N;Ih(Zm,"ctrapi",10);function jn(){jn.g.apply(this,arguments)}\r
33352 jn.g=N;p(jn,Xm);jn.prototype.W=N;Ih(jn,"ctrapi",18);gk.g=N;gk.prototype.Sl=N;gk.prototype.FE=N;gk.prototype.$x=N;gk.prototype.W=N;Ih(gk,"ctrapi",4);gk.prototype.Sb=function(){var a=Nf("hmtctl_inline");return a?new R(a.offsetWidth,a.offsetHeight):new R(0,0)};function kn(){this.Ad=new ln(this);kn.g.apply(this,arguments);this.show();this.mq(this.Ad)}\r
33353 p(kn,rk);kn.g=N;kn.prototype.mq=N;kn.prototype.Bb=N;kn.prototype.W=N;Ih(kn,"ovrmpc",1);l=kn.prototype;l.show=function(a){this.Ad.show(a)};\r
33354 l.hide=function(a){this.Ad.hide(a)};\r
33355 l.initialize=$m;l.QA=Pe;l.getDefaultPosition=function(){return new Yj(3,Yg)};\r
33356 l.O=function(){return Yg};\r
33357 function mn(){mn.g.apply(this,arguments)}\r
33358 mn.g=N;mn.prototype=new rk(j,e);mn.prototype.W=N;Ih(mn,"ctrapi",3);mn.prototype.initialize=$m;mn.prototype.getDefaultPosition=function(){return new Yj(2,new R(2,2))};\r
33359 function nn(){nn.g.apply(this,arguments)}\r
33360 nn.g=N;nn.prototype=new rk(j,e);nn.prototype.W=N;Ih(nn,"ctrapi",16);nn.prototype.initialize=$m;nn.prototype.getDefaultPosition=function(){return new Yj(2,new R(3,5))};function ln(a){this.wa=e;this.mJ=a;a=Nf("overview-toggle");sk(a)}\r
33361 var pn=function(a){var b=new ln,c=b.IH(function(d,f){if(!b.I()){on(a,b,f);w(c)}});\r
33362 return b},\r
33363 on=function(a,b,c){vd("ovrmpc",1,function(d){d=new d(a,b,c,e);b.SS(d)},\r
33364 c)};\r
33365 l=ln.prototype;l.I=function(){return this.wa};\r
33366 l.TU=function(){this.IT(!this.wa)};\r
33367 l.IT=function(a){if(a!=this.wa)a?this.hide():this.show()};\r
33368 l.IH=function(a){return v(this,"changed",a)};\r
33369 l.SS=function(a){this.mJ=a};\r
33370 l.show=function(a,b){this.wa=j;A(this,"changed",a,b)};\r
33371 l.hide=function(a){this.wa=e;A(this,"changed",a)};function qn(){}\r
33372 p(qn,rk);l=qn.prototype;l.getDefaultPosition=function(){return new Yj(1,new R(7,7))};\r
33373 l.initialize=function(a){var b=this.Sb&&this.Sb();b=J("div",a.R(),i,b);b.setAttribute("id","nlcc");U(a,Da,this,this.vw);U(a,Ga,this,this.vw);this.W(a,b);return b};\r
33374 l.vw=function(){this.xl()};\r
33375 l.W=N;l.GF=N;l.xl=N;Ih(qn,"nl",1);l=ik.prototype;l.ho=function(a){var b={};if(E.pb()&&!a)b={left:0,top:0};else if(E.type==1&&E.version<7)b={draggingCursor:"hand"};a=new Nh(a,b);this.oI(a);return a};\r
33376 l.oI=function(a){v(a,"dragstart",uf(this,this.lg,a));v(a,"drag",uf(this,this.jf,a));U(a,"dragend",this,this.kg);Hm(a,this)};\r
33377 l.lq=function(a){this.G=this.ho(a);this.cf=this.ho(i);this.kd?this.vz():this.Uy();this.pI(a);this.XR=U(this,"remove",this,this.VR)};\r
33378 l.pI=function(a){T(a,"mouseover",this,this.iu);T(a,"mouseout",this,this.gu);sh(a,ja,Ah(ja,this))};\r
33379 l.Ic=function(){this.kd=e;this.vz()};\r
33380 l.vz=function(){if(this.G){this.G.enable();this.cf.enable();if(!this.lz&&this.mK){var a=this.qa,b=a.dragCrossImage||L("drag_cross_67_16");a=a.dragCrossSize||rn;var c=new Qh;c.alpha=e;b=this.lz=Qc(b,this.f.Ya(2),Xg,a,c);b.dO=e;this.V.push(b);bg(b);Qf(b)}}};\r
33381 l.nc=function(){this.kd=j;this.Uy()};\r
33382 l.Uy=function(){if(this.G){this.G.disable();this.cf.disable()}};\r
33383 l.dragging=function(){return!!(this.G&&this.G.dragging()||this.cf&&this.cf.dragging())};\r
33384 l.rA=function(){return this.G};\r
33385 l.lg=function(a){this.pj=new S(a.left,a.top);this.oj=this.f.J(this.B);A(this,"dragstart",this.B);a=be(this.Vp);this.LN();a=pf(this.gv,a,this.fK);qg(this,a,0)};\r
33386 l.LN=function(){this.DN()};\r
33387 l.DN=function(){this.Ci=ke(pe(2*this.Fx*(this.mk-this.va)))};\r
33388 l.fz=function(){this.Ci-=this.Fx;this.dT(this.va+this.Ci)};\r
33389 l.fK=function(){this.fz();return this.va!=this.mk};\r
33390 l.dT=function(a){a=B(0,me(this.mk,a));if(this.mz&&this.dragging()&&this.va!=a){var b=this.f.J(this.B);b.y+=a-this.va;this.cc(this.f.X(b))}this.va=a;this.ri()};\r
33391 l.gv=function(a,b,c){if(a.sc()){var d=b.call(this);this.redraw(e);if(d){a=pf(this.gv,a,b,c);qg(this,a,this.tI);return}}c&&c.call(this)};\r
33392 l.jf=function(a,b){if(!this.Ih){var c=new S(a.left-this.pj.x,a.top-this.pj.y),d=new S(this.oj.x+c.x,this.oj.y+c.y);if(this.kI){var f=this.f.Lc(),g=0,h=0,k=me((f.maxX-f.minX)*0.04,20),o=me((f.maxY-f.minY)*0.04,20);if(d.x-f.minX<20)g=k;else if(f.maxX-d.x<20)g=-k;if(d.y-f.minY-this.va-sn.y<20)h=o;else if(f.maxY-d.y+sn.y<20)h=-o;if(g||h){b||A(this.f,"movestart");this.f.G.Vt(g,h);a.left-=g;a.top-=h;d.x-=g;d.y-=h;this.Ih=setTimeout(n(function(){this.Ih=i;this.jf(a,e)},\r
33393 this),30)}}b&&!this.Ih&&A(this.f,Da);b=2*B(c.x,c.y);this.va=me(B(b,this.va),this.mk);if(this.mz)d.y+=this.va;this.cc(this.f.X(d));A(this,"drag",this.B)}};\r
33394 l.kg=function(){if(this.Ih){window.clearTimeout(this.Ih);this.Ih=i;A(this.f,Da)}A(this,"dragend",this.B);if(E.pb()&&this.Nn){var a=this.f.oa();a&&a.Ry();this.Ao.y+=this.va;this.Ao.y-=this.va}a=be(this.Vp);this.IN();a=pf(this.gv,a,this.dK,this.TK);qg(this,a,0)};\r
33395 l.IN=function(){this.Ci=0;this.nq=e;this.Gx=j};\r
33396 l.TK=function(){this.nq=j};\r
33397 l.dK=function(){this.fz();if(this.va!=0)return e;if(this.uI&&!this.Gx){this.Gx=e;this.Ci=ke(this.Ci*-0.5)+1;return e}return this.nq=j};\r
33398 l.qj=function(){return this.wb&&this.kd};\r
33399 l.draggable=function(){return this.wb};\r
33400 var sn={x:7,y:9},rn=new R(16,16);l=ik.prototype;l.xy=function(a){this.Vp=ae("marker");if(a)this.kI=(this.wb=!!a.draggable)&&a.autoPan!==j?e:!!a.autoPan;if(this.wb){this.uI=a.bouncy!=i?a.bouncy:e;this.Fx=a.bounceGravity||1;this.Ci=0;this.tI=a.bounceTimeout||30;this.kd=e;this.mK=a.dragCross!=j?e:j;this.mz=!!a.dragCrossMove;this.mk=13;a=this.qa;if(ve(a.maxHeight)&&a.maxHeight>=0)this.mk=a.maxHeight;this.oz=a.dragCrossAnchor||sn}};\r
33401 l.VR=function(){if(this.G){this.G.gm();Rg(this.G);this.G=i}if(this.cf){this.cf.gm();Rg(this.cf);this.cf=i}this.lz=i;ce(this.Vp);w(this.XR)};\r
33402 l.oK=function(a,b){if(this.dragging()||this.nq){Bf(b,new S(a.divPixel.x-this.oz.x,a.divPixel.y-this.oz.y));Rf(b)}else Qf(b)};\r
33403 l.iu=function(){this.dragging()||A(this,"mouseover",this.B)};\r
33404 l.gu=function(){this.dragging()||A(this,"mouseout",this.B)};Vl.g=function(a,b,c){this.name=a;if(typeof b=="string"){a=J("div",i);Vd(a,b);b=a}else if(b.nodeType==3){a=J("div",i);a.appendChild(b);b=a}this.contentElem=b;this.onclick=c};var tn=new R(690,786);Wl.g=N;l=Wl.prototype;l.OB=function(){};\r
33405 l.reset=function(a,b,c,d,f){this.B=a;this.Gf=c;if(f)this.Ed=f;this.wa=j};\r
33406 l.uh=function(){return new R(0,0)};\r
33407 l.ks=function(){return Yg};\r
33408 l.I=Oe;l.Ry=N;l.Oo=N;l.hide=N;l.hG=N;l.show=N;l.nr=N;l.Dr=N;l.xq=N;l.Wk=N;l.bg=N;l.gG=N;l.wB=N;l.vs=N;l.Rm=N;l.YA=N;l.av=N;l.Yx=N;l.zb=N;l.fA=N;l.Fp=N;l.Nl=N;l.mv=N;l.Dv=N;l.ps=N;l.EF=N;l.create=N;l.maximize=N;l.Mv=N;l.restore=N;l.CF=N;zj(Wl,"apiiw",1);l=Wl.prototype;l.M={};l.lc=[];l.B=new z(0,0);l.Dd=i;l.Zc=[];l.Ed=0;l.Yv=Yg;l.Gf=tn;l.wa=e;l.tL=function(){return this.lc};\r
33409 l.re=function(a){this.Dd=a};\r
33410 l.rd=function(){return this.Dd};\r
33411 l.Hj=function(){return this.B};\r
33412 l.ZA=function(){return this.Zc};\r
33413 l.zM=function(){return this.Ed};\r
33414 l.initialize=function(a){this.M=this.Hy(a.Ya(7),a.Ya(5));this.OB(a,this.M)};\r
33415 l.Hy=function(a,b){var c=new S(-10000,0);a=J("div",a,c);b=J("div",b,c);Qf(a);Qf(b);bg(a);bg(b);b={window:a,shadow:b};a=b.contents=J("div",a,Xg);Wf(a);bg(a);fg(a,10);return b};function jk(a,b){this.f=a;this.So=b;this.Rj=e;this.ww=j;this.Cu=[];this.HB=j;this.Z=[];this.jt=this.JB=j;this.Kh=i}\r
33416 l=jk.prototype;l.XF=function(){this.ww=e};\r
33417 l.bv=function(){this.ww=j;if(this.Cu.length>0){var a=this.Cu.shift();setTimeout(a,0)}};\r
33418 l.xa=function(){for(var a=0;a<r(this.Z);++a)w(this.Z[a]);this.Z=[];this.Z.push(U(this.f,m,this,this.kP))};\r
33419 l.ja=function(a,b,c,d){if(this.Rj){b=nf(b)?b:b?[new Vl(i,b)]:i;this.JD(a,b,c,d)}};\r
33420 l.ax=function(a){var b=this.oa();if(b){var c=this.Ze||{};if(c.limitSizeToMap&&!this.Xd()){var d={width:c.maxWidth||640,height:c.maxHeight||598},f=this.f.R(),g=f.offsetHeight-200;f=f.offsetWidth-50;if(d.height>g)d.height=B(40,g);if(d.width>f)d.width=B(199,f);b.Wk(!!c.autoScroll&&!this.Xd()&&(a.width>d.width||a.height>d.height));a.height=me(a.height,d.height);a.width=me(a.width,d.width)}else{b.Wk(!!c.autoScroll&&!this.Xd()&&(a.width>(c.maxWidth||640)||a.height>(c.maxHeight||598)));if(c.maxHeight)a.height=\r
33421 me(a.height,c.maxHeight)}}};\r
33422 l.Hp=function(a,b,c,d,f){var g=this.oa();if(g){this.JB=e;d=d&&!a?d:rl;var h=this.Ze?this.Ze.maxWidth:i,k=g.Zc,o=Jd(a||k,function(s){return s.contentElem});\r
33423 if(!a&&d==rl){var q=g.Ed;o[q]=o[q].cloneNode(e)}rg(f);d(o,n(function(s,u){if(g.Zc!=k)sg(f);else{this.ax(u);g.reset(g.B,a,u,g.ks(),g.Ed);a||g.Fp();b&&b();A(this,"infowindowupdate",Le(c,e),f);this.JB=j;sg(f);xj("iw-updated")}},\r
33424 this),h,f)}};\r
33425 l.Gp=function(a,b,c){var d=this.oa();if(d)if(this.ww)this.Cu.push(n(this.Gp,this,a,b));else{this.XF();a(d.Zc[d.Ed]);a=c||c==i;this.Hp(undefined,n(function(){b&&b();this.bv()},\r
33426 this),a)}};\r
33427 l.JD=function(a,b,c,d){var f=d||new cd("iw");f.tick("iwo0");var g=this.Ze=c||{};c=this.Ej();g.noCloseBeforeOpen||this.da();c.re(g.owner||i);this.XF();g.onPrepareOpenFn&&g.onPrepareOpenFn(b);A(this,Ia,b,a);c=i;if(b)c=Jd(b,function(k){return k.contentElem});\r
33428 if(b&&!g.contentSize){var h=be(this.IB);f.branch();rl(c,n(function(k,o){h.sc()&&this.Oz(a,b,o,g,f);this.bv();f.done()},\r
33429 this),g.maxWidth,f)}else{c=g.contentSize?g.contentSize:new R(200,100);this.Oz(a,b,c,g,f);this.bv()}d||f.done()};\r
33430 l.Oz=function(a,b,c,d,f){var g=this.oa();g.Dv(d.maxMode||0);d.buttons?g.Nl(d.buttons):g.Oo();this.ax(c);g.reset(a,b,c,d.pixelOffset,d.selectedTab);ue(d.maxUrl)||d.maxTitle||d.maxContent?this.Kh.WN(d.maxUrl,d):g.Yx();this.HB?this.gx(d,f):xh(this.oa(),"infowindowcontentset",this,pf(this.gx,d,f))};\r
33431 l.MN=function(){var a=this.oa();if(E.type==4){this.Z.push(U(this.f,Da,a,function(){this.gG()}));\r
33432 this.Z.push(U(this.f,"movestart",a,function(){this.wB()}))}};\r
33433 l.Xd=function(){var a=this.oa();return!!a&&a.bg()};\r
33434 l.cl=function(a){this.Kh&&this.Kh.cl(a)};\r
33435 l.kP=function(a){!a&&!(ue(this.Ze)&&this.Ze.noCloseOnClick)&&this.da()};\r
33436 l.gx=function(a,b){A(this,"infowindowupdate",e,b);this.jt=e;a.onOpenFn&&a.onOpenFn();A(this,Ka,b);this.GB=a.onCloseFn;this.FB=a.onBeforeCloseFn;this.f.mi(this.oa().B);b.tick("iwo1")};\r
33437 l.da=function(){var a=this.oa();if(a){be(this.IB);if(!a.I()||this.jt){this.jt=j;var b=this.FB;if(b){b();this.FB=i}a.hide();A(this,Ha);(this.Ze||{}).noClearOnClose||a.xq();if(b=this.GB){b();this.GB=i}A(this,Ja)}a.re(i)}};\r
33438 l.Ej=function(){if(!this.cb){this.cb=new Wl;this.TN(this.cb)}return this.cb};\r
33439 l.TN=function(a){oi.re(a,this);this.f.ba(a);xh(a,"infowindowcontentset",this,function(){this.HB=e});\r
33440 U(a,"closeclick",this,this.da);U(a,"animate",this.f,this.f.NF);this.ET();this.DT();T(a.M.contents,m,this,this.eQ);this.IB=ae("infowindowopen");this.MN()};\r
33441 l.ET=function(){vd("apiiw",3,n(function(a){this.Kh=new a(this.oa(),this.f);yh(this.Kh,"maximizedcontentadjusted",this);yh(this.Kh,"maxtab",this)},\r
33442 this))};\r
33443 l.DT=function(){vd("apiiw",6,n(function(a){var b=this.oa();a=new a(b,this.f,this);U(this,"infowindowupdate",a,a.jQ);U(this,Ja,a,a.fQ);U(b,"restoreclick",a,a.sR)},\r
33444 this))};\r
33445 l.oa=function(){return this.cb};\r
33446 l.eQ=function(){var a=this.oa();A(a,m,a.B)};\r
33447 l.Kb=function(a,b){if(!this.Rj)return i;var c=J("div",this.f.R());c.style.border="1px solid #979797";Tf(c);b=b||{};var d=this.f.DJ(c,a,{ml:e,mapType:b.mapType||this.KC,zoomLevel:b.zoomLevel||this.LC}),f=new Vl(i,c);this.JD(a,[f],b);Uf(c);U(d,Ga,this,function(){this.LC=d.F()});\r
33448 U(d,Ca,this,function(){this.KC=d.o});\r
33449 return d};\r
33450 l.sU=function(){return this.Ze&&this.Ze.suppressMapPan};\r
33451 var un=new jm;un.infoWindowAnchor=new S(0,0);un.iconAnchor=new S(0,0);jk.prototype.qu=function(a,b,c,d,f){for(var g=a.modules||[],h=[],k=0,o=r(g);k<o;k++)g[k]&&h.push(this.So.AM(g[k]));var q=be("loadMarkerModules");this.So.fM(h,n(function(){q.sc()&&this.SQ(a,b,c,d,f)},\r
33452 this),f)};\r
33453 jk.prototype.SQ=function(a,b,c,d,f){if(c)d=c;else{b=b||new z(a.latlng.lat,a.latlng.lng);c={};c.icon=un;c.id=a.id;if(d)c.pixelOffset=d;d=new ik(b,c)}d.zv(a);this.f.da();b={marker:d,features:{}};A(this,"iwopenfrommarkerjsonapphook",b);A(this,"markerload",a,d.UD);d.AJ(a,b.features);d.f=this.f;d.infoWindow(j,f)};function vn(){this.yt=new sm("iw");this.Ml=Math.random()<Ec}\r
33454 vn.prototype.hQ=function(a,b){if(this.Ml){var c=b.B;b=b.Zc[b.Ed].contentElem.innerHTML;a=a.F();c=[c.lat(),c.lng(),encodeURIComponent(b),a].join(",");c.length<2048*Fc&&this.yt.log(c)}};\r
33455 v(Pc,Ba,function(a){var b=new vn;v(a,Ka,function(){b.hQ(a,a.Ej())})});jk.prototype.Cr=function(){this.Rj=e};\r
33456 jk.prototype.lr=function(){this.da();this.Rj=j};\r
33457 jk.prototype.Vs=function(){return this.Rj};function wn(){this.reset()}\r
33458 l=wn.prototype;l.reset=function(){this.ca={}};\r
33459 l.get=function(a){return this.ca[this.toCanonical(a)]};\r
33460 l.isCachable=function(a){return!!(a&&a.name)};\r
33461 l.put=function(a,b){if(a&&this.isCachable(b))this.ca[this.toCanonical(a)]=b};\r
33462 l.toCanonical=function(a){return a.Aa?a.Aa():a.replace(/,/g," ").replace(/\s\s*/g," ").toLowerCase()};\r
33463 function xn(){this.reset()}\r
33464 p(xn,wn);xn.prototype.isCachable=function(a){if(!wn.prototype.isCachable.call(this,a))return j;var b=500;if(a[ug]&&a[ug][vg])b=a[ug][vg];return b==200||b>=600&&b!=620};function yn(){yn.g.apply(this,arguments)}\r
33465 yn.g=function(a){this.ca=a||new xn};\r
33466 l=yn.prototype;l.ga=N;l.$m=N;l.Wr=N;l.reset=N;l.gA=function(){return this.ca};\r
33467 l.eF=function(a){this.ca=a};\r
33468 l.Pv=function(a){this.hc=a};\r
33469 l.eB=function(){return this.hc};\r
33470 l.cF=function(a){this.$g=a};\r
33471 l.eA=function(){return this.$g};\r
33472 Ih(yn,"api_gc",1);function zn(){zn.g.apply(this,arguments)}\r
33473 ;zn.g=N;zn.prototype.enable=N;zn.prototype.disable=N;Ih(zn,"adsense",1);function An(){An.g.apply(this,arguments)}\r
33474 p(An,oi);function Bn(){Bn.g.apply(this,arguments)}\r
33475 p(Bn,oi);An.g=N;l=An.prototype;l.ya=Oe;l.$A=Pe;l.nn=Ne;l.DC=Ne;l.Um=function(){return i};\r
33476 l.Vm=function(){return i};\r
33477 l.bs=Pe;l.Ea=function(){return"GeoXml"};\r
33478 l.ys=N;l.getKml=N;zj(An,"kml_api",2);Bn.g=N;Bn.prototype.getKml=N;zj(Bn,"kml_api",1);function Cn(){Cn.g.apply(this,arguments)}\r
33479 Cn.g=N;p(Cn,oi);Cn.prototype.getKml=N;zj(Cn,"kml_api",4);var Dn={co:{ck:1,cr:1,hu:1,id:1,il:1,"in":1,je:1,jp:1,ke:1,kr:1,ls:1,nz:1,th:1,ug:1,uk:1,ve:1,vi:1,za:1},com:{ag:1,ar:1,au:1,bo:1,br:1,bz:1,co:1,cu:1,"do":1,ec:1,fj:1,gi:1,gr:1,gt:1,hk:1,jm:1,ly:1,mt:1,mx:1,my:1,na:1,nf:1,ni:1,np:1,pa:1,pe:1,ph:1,pk:1,pr:1,py:1,sa:1,sg:1,sv:1,tr:1,tw:1,ua:1,uy:1,vc:1,vn:1},off:{ai:1}};function En(a){return Fn(window.location,a)}\r
33480 function Fn(a,b){var c;c=a.host.toLowerCase().split(".");if(r(c)<2)c=j;else{var d=c.pop(),f=c.pop();if((f=="igoogle"||f=="gmodules"||f=="googlepages"||f=="googleusercontent"||f=="orkut"||f=="googlegroups")&&d=="com")c=e;else{if(r(d)==2&&r(c)>0)if(Dn[f]&&Dn[f][d]==1)f=c.pop();c=f=="google"}}if(c)return e;if(a.protocol=="file:")return e;if(a.hostname=="localhost")return e;d=a.protocol;var g=a.host;f=a.pathname;a=[];if(f){if(f.indexOf("/")!=0)f="/"+f}else f="/";if(g.charAt(g.length-1)==".")g=g.substr(0,\r
33481 g.length-1);c=[d];d=="https:"&&c.unshift("http:");g=g.toLowerCase();d=[g];g=g.split(".");g[0]!="www"&&d.push("www."+g.join("."));g.shift();for(var h=r(g);h>1;){if(h!=2||g[0]!="co"&&g[0]!="off"){d.push(g.join("."));g.shift()}h--}f=f.split("/");for(g=[];r(f)>1;){f.pop();g.push(f.join("/")+"/")}for(f=0;f<r(c);++f)for(h=0;h<r(d);++h)for(var k=0;k<r(g);++k){a.push(c[f]+"//"+d[h]+g[k]);var o=d[h].indexOf(":");o!=-1&&a.push(c[f]+"//"+d[h].substr(0,o)+g[k])}for(c=0;c<r(a);++c){d=pm(a[c]);if(b==d)return e}return j}\r
33482 window.GValidateKey=En;l=Pc.prototype;l.wz=function(){this.oF(e)};\r
33483 l.$J=function(){this.oF(j)};\r
33484 l.$p=function(a){a=this.xs?new nn(a,this.gB):new Zj(a);this.$a(a);this.ek=a};\r
33485 l.YR=function(){if(this.ek){this.ge(this.ek);this.ek.clear();delete this.ek}};\r
33486 l.oF=function(a){this.xs=a;this.YR();this.$p(this.ZO)};\r
33487 l.Cr=function(){this.Ub().Cr()};\r
33488 l.lr=function(){this.Ub().lr()};\r
33489 l.Vs=function(){return this.Ub().Vs()};\r
33490 l.mA=function(){return new Bj(this.O())};\r
33491 l.XO=function(a){a=a?"maps_api_set_default_ui":"maps_api_set_ui";var b=new Ki;b.set("imp",a);this.Ha.send(b.Gd)};\r
33492 l.WF=function(){var a=this.VF(this.mA(),e);if(this.cv){w(this.cv);delete this.cv}this.cv=v(this,Ea,n(function(){t(a,n(function(b){this.ge(b)},\r
33493 this));this.WF()},\r
33494 this))};\r
33495 l.VF=function(a,b){this.XO(!!b);t([["NORMAL_MAP","normal"],["SATELLITE_MAP","satellite"],["HYBRID_MAP","hybrid"],["PHYSICAL_MAP","physical"]],n(function(d){var f=zc[d[0]];if(f)a.maptypes[d[1]]?this.Pl(f):this.CE(f)},\r
33496 this));a.zoom.scrollwheel?this.Bz():this.Wy();a.zoom.doubleclick?this.uz():this.jr();a.keyboard&&new mi(this);b=[];if(a.controls.largemapcontrol3d){var c=new en;b.push(c);this.$a(c)}else if(a.controls.smallzoomcontrol3d){c=new hn;b.push(c);this.$a(c)}if(a.controls.maptypecontrol){c=new Ym;b.push(c);this.$a(c)}else if(a.controls.menumaptypecontrol){c=new Zm;b.push(c);this.$a(c)}else if(a.controls.hierarchicalmaptypecontrol){c=new gk;b.push(c);this.$a(c)}if(a.controls.scalecontrol){c=new bn;b.push(c);\r
33497 this.gB||this.xs?this.$a(c,new Yj(2,new R(92,5))):this.$a(c)}a.controls.overviewmapcontrol&&pn(this).show();if(a.controls.googlebar){this.wz();b.push(this.ek)}return b};function Gn(){var a=[];a=a.concat(Hn());a=a.concat(In());return a=a.concat(Jn())}\r
33498 function Hn(){var a=[{symbol:Kn,name:"visible",url:"http://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/clem_bw/",zoom_levels:9},{symbol:Ln,name:"elevation",url:"http://mw1.google.com/mw-planetary/lunar/lunarmaps_v1/terrain/",zoom_levels:7}],b=[],c=new pd(30),d=new md;d.Oi(new Qd("1",new id(new z(-180,-90),new z(180,90)),0,"NASA/USGS"));for(var f=[],g=0;g<a.length;g++){var h=a[g],k=new Mn(h.url,d,h.zoom_levels);k=new Hd([k],c,h.name,{radius:1738000,shortName:h.name,alt:"Show "+h.name+" map"});f.push(k);\r
33499 b.push([h.symbol,f[g]])}b.push([Nn,f]);return b}\r
33500 function Mn(a,b,c){Cj.call(this,b,0,c);this.Ui=a}\r
33501 p(Mn,Cj);Mn.prototype.getTileUrl=function(a,b){var c=Math.pow(2,b);return this.Ui+b+"/"+a.x+"/"+(c-a.y-1)+".jpg"};\r
33502 function In(){for(var a=[{symbol:On,name:"elevation",url:"http://mw1.google.com/mw-planetary/mars/elevation/",zoom_levels:8,credits:"NASA/JPL/GSFC"},{symbol:Pn,name:"visible",url:"http://mw1.google.com/mw-planetary/mars/visible/",zoom_levels:9,credits:"NASA/JPL/ASU/MSSS"},{symbol:Qn,name:"infrared",url:"http://mw1.google.com/mw-planetary/mars/infrared/",zoom_levels:12,credits:"NASA/JPL/ASU"}],b=[],c=new pd(30),d=[],f=0;f<a.length;f++){var g=a[f],h=new md;h.Oi(new Qd("2",new id(new z(-180,-90),new z(180,\r
33503 90)),0,g.credits));h=new Rn(g.url,h,g.zoom_levels);h=new Hd([h],c,g.name,{radius:3396200,shortName:g.name,alt:"Show "+g.name+" map"});d.push(h);b.push([g.symbol,d[f]])}b.push([Sn,d]);return b}\r
33504 function Rn(a,b,c){Cj.call(this,b,0,c);this.Ui=a}\r
33505 p(Rn,Cj);Rn.prototype.getTileUrl=function(a,b){var c=Math.pow(2,b),d=a.x;a=a.y;for(var f=["t"],g=0;g<b;g++){c/=2;if(a<c)if(d<c)f.push("q");else{f.push("r");d-=c}else{if(d<c)f.push("t");else{f.push("s");d-=c}a-=c}}return this.Ui+f.join("")+".jpg"};\r
33506 function Jn(){var a=[{symbol:Tn,name:"visible",url:"http://mw1.google.com/mw-planetary/sky/skytiles_v1/",zoom_levels:19}],b=[],c=new pd(30),d=new md;d.Oi(new Qd("1",new id(new z(-180,-90),new z(180,90)),0,"SDSS, DSS Consortium, NASA/ESA/STScI"));for(var f=[],g=0;g<a.length;g++){var h=a[g],k=new Un(h.url,d,h.zoom_levels);k=new Hd([k],c,h.name,{radius:57.2957763671875,shortName:h.name,alt:"Show "+h.name+" map"});f.push(k);b.push([h.symbol,f[g]])}b.push([Vn,f]);return b}\r
33507 function Un(a,b,c){Cj.call(this,b,0,c);this.Ui=a}\r
33508 p(Un,Cj);Un.prototype.getTileUrl=function(a,b){return this.Ui+a.x+"_"+a.y+"_"+b+".jpg"};function Wn(){Wn.g.apply(this,arguments)}\r
33509 Kh(Wn,"log",1,{write:j,oH:j,pH:j,KA:j},{g:e});function Xn(){Xn.g.apply(this,arguments)}\r
33510 Xn.g=N;Xn.prototype.Ww=N;Xn.prototype.aq=N;Xn.prototype.refresh=N;Xn.prototype.GA=function(){return 0};\r
33511 Ih(Xn,"mkrmr",1);function Yn(){Yn.g.apply(this,arguments)}\r
33512 Kh(Yn,"apidir",1,{load:j,zC:j,clear:j,We:j,H:j,qd:j,ab:j,bn:j,Xm:j,Sm:j,hn:j,lb:j,od:j,getPolyline:j,FA:j},{g:j,nA:j});function Zn(){Zn.g.apply(this,arguments)}\r
33513 Kh(Zn,"apidir",2,{clear:j,HE:j,Mo:j},{g:j});function $n(){$n.g.apply(this,arguments)}\r
33514 $n.g=N;p($n,oi);$n.prototype.Zd=Ne;zj($n,"tfcapi",1);function hk(){hk.g.apply(this,arguments)}\r
33515 hk.g=N;hk.addInitializer=function(){};\r
33516 l=hk.prototype;l.setParameter=function(){};\r
33517 l.OF=function(){};\r
33518 l.refresh=function(){};\r
33519 l.Tb=Pe;l.yv=N;l.Bk=function(){};\r
33520 l.og=function(){};\r
33521 l.getKml=N;zj(hk,"lyrs",1);hk.prototype.Ch=Ne;hk.prototype.I=yj.I;hk.prototype.Ea=function(){return"Layer"};function ao(a,b){this.zN=a;this.$=b||i}\r
33522 ao.prototype.gC=function(a){return!!a.id.match(this.zN)};\r
33523 ao.prototype.XD=function(a){this.$&&a.ux(this.$);a.yv()};function bo(){bo.g.apply(this,arguments)}\r
33524 p(bo,qi);bo.g=Jh(N);l=bo.prototype;l.f=i;l.initialize=Jh(function(a){this.f=a;this.fg={}});\r
33525 l.ba=N;l.ka=N;l.Ym=N;Ih(bo,"lyrs",2);bo.prototype.Td=function(a,b){var c=this.fg[a];c||(c=this.fg[a]=new hk(a,b,this));return c};v(Pc,Ba,function(a){var b=new bo(window._mLayersTileBaseUrls,window._mLayersFeaturesBaseUrl);a.AE(["Layer"],b)});var co;function X(a){return co+=a||1}\r
33526 co=0;\r
33527 var eo=X(),fo=X(),go=X(),ho=X(),io=X(),jo=X(),ko=X(),lo=X(),mo=X(),no=X(),oo=X(),po=X(),qo=X(),ro=X(),so=X(),to=X(),uo=X(),vo=X(),wo=X(),xo=X(),yo=X(),zo=X(),Ao=X(),Bo=X(),Co=X(),Do=X(),Eo=X(),Fo=X(),Go=X(),Ho=X(),Io=X(),Jo=X(),Ko=X(),Lo=X(),Mo=X(),No=X(),Oo=X(),Po=X(),Qo=X(),Ro=X(),So=X(),To=X(),Uo=X(),Vo=X(),Wo=X(),Xo=X(),Yo=X(),Zo=X(),$o=X(),ap=X(),bp=X(),cp=X(),dp=X(),ep=X(),fp=X(),gp=X(),hp=X(),ip=X(),jp=X(),kp=X(),lp=X(),mp=X(),np=X(),op=X(),pp=X(),qp=X(),rp=X(),sp=X(),tp=X(),up=X(),vp=X(),\r
33528 wp=X(),xp=X();co=0;var yp=X(),zp=X(),Ap=X(),Bp=X(),Cp=X(),Dp=X(),Ep=X(),Fp=X(),Gp=X(),Hp=X(),Ip=X(),Jp=X(),Kp=X(),Lp=X(),Mp=X(),Np=X(),Op=X(),Pp=X(),Qp=X(),Rp=X(),Sp=X(),Tp=X(),Up=X(),Vp=X(),Wp=X(),Xp=X(),Yp=X(),Zp=X(),$p=X(),aq=X(),bq=X(),cq=X(),dq=X(),eq=X(),fq=X(),gq=X(),hq=X(),iq=X(),jq=X(),kq=X(),lq=X(),mq=X(),nq=X(),Nn=X(),Kn=X(),Ln=X(),Sn=X(),On=X(),Pn=X(),Qn=X(),Vn=X(),Tn=X(),oq=X(),pq=X(),qq=X(),rq=X(),sq=X();co=0;\r
33529 var tq=X(),uq=X(),vq=X(),wq=X(),xq=X(),yq=X(),zq=X(),Aq=X(),Bq=X(),Cq=X(),Dq=X(),Eq=X(),Fq=X(),Gq=X(),Hq=X(),Iq=X(),Jq=X(),Kq=X(),Lq=X(),Mq=X(),Nq=X(),Oq=X(),Pq=X(),Qq=X(),Rq=X(),Sq=X(),Tq=X(),Uq=X(),Vq=X(),Wq=X(),Xq=X(),Yq=X(),Zq=X(),$q=X(),ar=X(),br=X(),cr=X(),dr=X(),er=X(),fr=X(),gr=X(),hr=X(),ir=X(),jr=X(),kr=X(),lr=X(),mr=X(),nr=X(),or=X(),pr=X(),qr=X(),rr=X(),sr=X(),tr=X(),ur=X(),vr=X(),wr=X(),xr=X(),yr=X(),zr=X(),Ar=X();co=100;\r
33530 var Br=X(),Cr=X(),Dr=X(),Er=X(),Fr=X(),Gr=X(),Hr=X(),Ir=X(),Jr=X(),Kr=X(),Lr=X(),Mr=X(),Nr=X(),Or=X(),Pr=X(),Qr=X();co=200;var Rr=X(),Sr=X(),Tr=X(),Ur=X(),Vr=X(),Wr=X(),Xr=X(),Yr=X(),Zr=X(),$r=X(),as=X(),bs=X(),cs=X(),ds=X(),es=X(),fs=X(),gs=X();co=300;var hs=X(),is=X(),js=X(),ks=X(),ls=X(),ms=X(),ns=X(),os=X(),ps=X(),qs=X(),rs=X(),ss=X(),ts=X(),us=X(),vs=X(),ws=X(),xs=X(),ys=X(),zs=X(),As=X(),Bs=X(),Cs=X(),Ds=X(),Es=X(),Fs=X(),Gs=X();co=400;\r
33531 var Hs=X(),Is=X(),Js=X(),Ks=X(),Ls=X(),Ms=X(),Ns=X(),Os=X(),Ps=X(),Qs=X(),Rs=X(),Ss=X(),Ts=X(),Us=X(),Vs=X(),Ws=X(),Xs=X(),Ys=X(),Zs=X(),$s=X(),at=X(),bt=X(),ct=X(),dt=X(),et=X(),ft=X(),gt=X(),ht=X(),it=X(),jt=X(),kt=X(),lt=X(),mt=X(),nt=X(),ot=X(),pt=X(),qt=X(),rt=X(),st=X(),tt=X(),ut=X(),vt=X(),wt=X(),zt=X(),At=X(),Bt=X(),Ct=X(),Dt=X();co=500;var Et=X(),Ft=X(),Gt=X(),Ht=X(),It=X(),Jt=X(),Kt=X(),Lt=X(),Mt=X(),Nt=X(),Ot=X(),Pt=X(),Qt=X(),Rt=X();co=600;\r
33532 var St=X(),Tt=X(),Ut=X(),Vt=X(),Wt=X(),Xt=X(),Yt=X(),Zt=X(),$t=X(),au=X(),bu=X(),cu=X(),du=X(),eu=X(),fu=X(),gu=X(),hu=X();co=700;var iu=X(),ju=X(),ku=X(),lu=X(),mu=X(),nu=X(),ou=X(),pu=X(),qu=X(),ru=X(),su=X(),tu=X(),uu=X(),vu=X(),wu=X(),xu=X(),yu=X(),zu=X(),Au=X(),Bu=X(),Cu=X(),Du=X(),Eu=X();co=800;var Fu=X(),Gu=X(),Hu=X(),Iu=X(),Ju=X(),Ku=X(),Lu=X(),Mu=X(),Nu=X(),Ou=X(),Pu=X(),Qu=X(),Ru=X(),Su=X();co=900;\r
33533 var Tu=X(),Uu=X(),Vu=X(),Wu=X(),Xu=X(),Yu=X(),Zu=X(),$u=X(),av=X(),bv=X(),cv=X(),dv=X(),ev=X(),fv=X(),gv=X(),hv=X(),iv=X(),jv=X(),kv=X(),lv=X(),mv=X(),nv=X(),ov=X(),pv=X(),qv=X(),rv=X();co=1000;var sv=X(),tv=X(),uv=X(),vv=X(),wv=X(),xv=X(),yv=X(),zv=X(),Av=X(),Bv=X(),Cv=X(),Dv=X(),Ev=X(),Fv=X(),Gv=X(),Hv=X(),Iv=X(),Jv=X(),Kv=X(),Lv=X(),Mv=X(),Nv=X(),Ov=X(),Pv=X(),Qv=X(),Rv=X();co=1100;\r
33534 var Sv=X(),Tv=X(),Uv=X(),Vv=X(),Wv=X(),Xv=X(),Yv=X(),Zv=X(),$v=X(),aw=X(),bw=X(),cw=X(),dw=X(),ew=X(),fw=X(),gw=X(),hw=X(),iw=X(),jw=X(),kw=X(),lw=X(),mw=X();co=1200;var nw=X(),ow=X(),pw=X(),qw=X(),rw=X(),sw=X(),tw=X(),uw=X(),vw=X(),ww=X(),xw=X(),yw=X(),zw=X(),Aw=X(),Bw=X(),Cw=X(),Dw=X(),Ew=X(),Fw=X();X();X();X();X();var Gw=X();co=1300;\r
33535 var Hw=X(),Iw=X(),Jw=X(),Kw=X(),Lw=X(),Mw=X(),Nw=X(),Ow=X(),Pw=X(),Qw=X(),Rw=X(),Sw=X(),Tw=X(),Uw=X(),Vw=X(),Ww=X(),Xw=X(),Yw=X(),Zw=X(),$w=X(),ax=X(),bx=X(),cx=X(),dx=X(),ex=X(),fx=X(),gx=X(),hx=X(),ix=X(),jx=X(),kx=X(),lx=X(),mx=X(),nx=X(),ox=X(),px=X(),qx=X(),rx=X(),sx=X(),tx=X(),ux=X(),vx=X(),wx=X(),xx=X(),yx=X(),zx=X(),Ax=X(),Bx=X(),Cx=X(),Dx=X(),Ex=X(),Fx=X(),Gx=X(),Hx=X(),Ix=X(),Jx=X(),Kx=X(),Lx=X(),Mx=X(),Nx=X(),Ox=X(),Px=X(),Qx=X(),Rx=X(),Sx=X(),Tx=X(),Ux=X(),Vx=X(),Wx=X(),Xx=X(),Yx=X(),\r
33536 Zx=X(),$x=X(),ay=X(),by=X(),cy=X(),dy=X(),ey=X(),fy=X(),gy=X(),hy=X(),iy=X(),jy=X(),ky=X(),ly=X();co=1400;var my=X(),ny=X(),oy=X(),py=X();X();var qy=X(),uy=X();X();var vy=X(),wy=X();co=1500;var xy=X(),yy=X(),zy=X(),Ay=X(),By=X(),Cy=X(),Dy=X(),Ey=X(),Fy=X(),Gy=X(),Hy=X(),Iy=X(),Jy=X(),Ky=X(),Ly=X(),My=X(),Ny=X(),Oy=X(),Py=X(),Qy=X(),Ry=X(),Sy=X(),Ty=X(),Uy=X();co=0;X(2);X(2);X(2);X(2);X(2);var Vy=[[Oo,cr,[tq,uq,vq,wq,xq,Br,yq,zq,Aq,Bq,Cr,Cq,Dq,Eq,Fq,Gq,Hq,Iq,Dr,Jq,Kq,Lq,Mq,Nq,Lq,Oq,Pq,Qq,Rq,Sq,Tq,Uq,Vq,Er,Wq,Xq,Yq,Zq,$q,ar,Fr,br,Gr,Hr,Ir,Jr,dr,er,fr,gr,hr,ir,jr,kr,lr,mr,nr,or,pr,qr,rr,sr,tr,Kr,Lr,Mr,ur,vr,Nr,Or,wr,xr,yr,zr,Ar,wy]],[Fo,Pr],[Eo,Qr],[Do,i,[Rr,Sr,Tr,Ur,Vr,Wr,Xr,Yr,Zr,$r,bs,cs,ds,es,as]],[Yo,fs,[],[gs]],[So,xs,[hs,is,js,ks,ls,ms,ns,os,ps,qs,rs,ss,ts,us,vs,ws,ys,zs,As,Bs,Cs,Ds,Es,Fs,Gs]],[bp,Hs,[Is,Js,Ks,Ls,Os,Ps,Ns,Ms,Qs,Rs,Ss,Ts,Us,Vs],[Ws]],[ap,Xs,[Ys,Zs,$s,at,bt,ct,dt,\r
33537 et,ft,gt,ht,it,jt,kt,lt],[mt]],[zo,nt,[ot,pt,qt,rt,st]],[hp,tt,[ut,vt,wt,zt,At]],[ip,Bt,[]],[jp,Ct,[]],[Co,Dt],[to,i,[],[Ht,Et,Ft,Gt,Kt,It,Jt,Lt,Mt,Nt,Ot,Pt,Qt]],[wp,i,[],[Rt]],[$o,St,[Tt,Ut],[Vt]],[kp,Wt,[Xt,Yt],[Zt]],[go,$t,[au,cu,bu,du,eu,fu,gu,hu]],[Jo,iu,[ju,ku,mu,nu,ou,pu,qu],[lu]],[Ko,ru,[su,tu,uu,vu,wu,xu,yu,zu,Au,Bu,Cu,Du,Eu]],[ko,Fu,[Iu,Gu,Hu,Ju,Ku,Lu,Mu,Nu,Ou,Pu,Qu]],[yo,Ru],[vo,Su],[no,Tu],[oo,Uu,[Vu,Wu,Xu]],[qp,Yu],[rp,Zu,[$u,av,bv,cv,dv,ev]],[xo,fv,[gv,hv,iv,jv,kv,lv,mv,nv,ov,pv,qv,\r
33538 rv]],[Po,sv,[tv,uv,vv]],[dp,wv,[xv,yv,zv,Av,Bv]],[so,Cv,[Dv,Ev,Jv,Kv],[Fv,Gv,Hv,Iv]],[To,Lv,[Mv,Nv,Ov,Pv]],[mo,Sv],[lo,Tv],[gp,Uv],[Ho,Vv],[Io,Wv],[lp,Xv],[mp,Yv],[np,Zv],[Qo,$v],[Uo,aw],[Ao,bw,[cw,dw,ew]],[Zo,fw,[gw,hw,iw,jw]],[Wo,kw,[lw]],[Ro,mw],[cp,nw],[Vo,ow],[Xo,pw],[Mo,i,[],[qw,rw,sw,tw]],[vp,i,[],[uw,vw]],[xp,ww,[xw],[yw]],[Lo,zw,[Aw,Bw,Cw,Dw,Ew]],[sp,Fw,[]],[fo,i,[],[Gw]],[po,Hw,[Iw,Jw,Kw,Lw,Mw,Nw,Ow,Pw,Qw,Rw,Sw,Tw,Uw,Vw,Ww],[Xw]],[ro,Yw,[Zw,$w,ax]],[eo,jy,[ky,ly]],[uo,qy,[uy]],[wo,i,[vy]],\r
33539 [Bo,i,[my,ny,oy,py]],[ho,xy,[yy,zy,Ay]],[io,By],[jo,Cy,[Dy,Ey,Fy,Gy,Hy,Iy,Jy,Ky,Ly,My,Ny,Oy,Py,Qy,Ry,Sy,Ty,Uy]],[Go,i,[],[Qv,Rv]]];var Wy=[[eo,"AdsManager"],[go,"Bounds"],[fo,"Bandwidth"],[ho,"StreetviewClient"],[io,"StreetviewOverlay"],[jo,"StreetviewPanorama"],[ko,"ClientGeocoder"],[lo,"Control"],[mo,"ControlPosition"],[no,"Copyright"],[oo,"CopyrightCollection"],[po,"Directions"],[ro,"DirectionsRenderer"],[so,"DraggableObject"],[to,"Event"],[uo,i],[vo,"FactualGeocodeCache"],[xo,"GeoXml"],[yo,"GeocodeCache"],[wo,i],[zo,"GroundOverlay"],[Bo,"_IDC"],[Co,"Icon"],[Do,i],[Do,i],[Eo,"InfoWindowTab"],[Fo,"KeyboardHandler"],[Ho,"LargeMapControl"],\r
33540 [Io,"LargeMapControl3D"],[Jo,"LatLng"],[Ko,"LatLngBounds"],[Lo,"Layer"],[Mo,"Log"],[No,"Map"],[Oo,"Map2"],[Po,"MapType"],[Qo,"MapTypeControl"],[Ro,"MapUIOptions"],[So,"Marker"],[To,"MarkerManager"],[Uo,"MenuMapTypeControl"],[Ao,"HierarchicalMapTypeControl"],[Vo,"MercatorProjection"],[Xo,"ObliqueMercator"],[Yo,"Overlay"],[Zo,"OverviewMapControl"],[$o,"Point"],[ap,"Polygon"],[bp,"Polyline"],[cp,"Projection"],[dp,"RotatableMapTypeCollection"],[gp,"ScaleControl"],[hp,"ScreenOverlay"],[ip,"ScreenPoint"],\r
33541 [jp,"ScreenSize"],[kp,"Size"],[lp,"SmallMapControl"],[mp,"SmallZoomControl"],[np,"SmallZoomControl3D"],[qp,"TileLayer"],[rp,"TileLayerOverlay"],[sp,"TrafficOverlay"],[vp,"Xml"],[wp,"XmlHttp"],[xp,"Xslt"],[Wo,"NavLabelControl"],[Go,"Language"]],Xy=[[tq,"addControl"],[uq,"addMapType"],[vq,"addOverlay"],[wq,"checkResize"],[xq,"clearOverlays"],[Br,"closeInfoWindow"],[yq,"continuousZoomEnabled"],[zq,"disableContinuousZoom"],[Aq,"disableDoubleClickZoom"],[Bq,"disableDragging"],[Cr,"disableInfoWindow"],\r
33542 [Cq,"disablePinchToZoom"],[Dq,"disableScrollWheelZoom"],[Eq,"doubleClickZoomEnabled"],[Fq,"draggingEnabled"],[Gq,"enableContinuousZoom"],[Hq,"enableDoubleClickZoom"],[Iq,"enableDragging"],[Dr,"enableInfoWindow"],[Jq,"enablePinchToZoom"],[Kq,"enableScrollWheelZoom"],[Lq,"fromContainerPixelToLatLng"],[Mq,"fromLatLngToContainerPixel"],[Nq,"fromDivPixelToLatLng"],[Oq,"fromLatLngToDivPixel"],[Pq,"getBounds"],[Qq,"getBoundsZoomLevel"],[Rq,"getCenter"],[Sq,"getContainer"],[Tq,"getCurrentMapType"],[Uq,"getDefaultUI"],\r
33543 [Vq,"getDragObject"],[Er,"getInfoWindow"],[Wq,"getMapTypes"],[Xq,"getPane"],[Yq,"getSize"],[$q,"getZoom"],[ar,"hideControls"],[Fr,"infoWindowEnabled"],[br,"isLoaded"],[Gr,"openInfoWindow"],[Hr,"openInfoWindowHtml"],[Ir,"openInfoWindowTabs"],[Jr,"openInfoWindowTabsHtml"],[dr,"panBy"],[er,"panDirection"],[fr,"panTo"],[gr,"pinchToZoomEnabled"],[hr,"removeControl"],[ir,"removeMapType"],[jr,"removeOverlay"],[kr,"returnToSavedPosition"],[lr,"savePosition"],[mr,"scrollWheelZoomEnabled"],[nr,"setCenter"],\r
33544 [or,"setFocus"],[pr,"setMapType"],[qr,"setUI"],[rr,"setUIToDefault"],[sr,"setZoom"],[tr,"showControls"],[Kr,"showMapBlowup"],[Lr,"updateCurrentTab"],[Mr,"updateInfoWindow"],[ur,"zoomIn"],[vr,"zoomOut"],[Nr,"enableGoogleBar"],[Or,"disableGoogleBar"],[wr,"changeHeading"],[xr,"disableRotation"],[yr,"enableRotation"],[zr,"isRotatable"],[Ar,"rotationEnabled"],[Rr,"disableMaximize"],[Sr,"enableMaximize"],[Tr,"getContentContainers"],[Ur,"getPixelOffset"],[Vr,"getPoint"],[Wr,"getSelectedTab"],[Xr,"getTabs"],\r
33545 [Yr,"hide"],[Zr,"isHidden"],[$r,"maximize"],[bs,"reset"],[cs,"restore"],[ds,"selectTab"],[es,"show"],[as,"supportsHide"],[gs,"getZIndex"],[hs,"bindInfoWindow"],[is,"bindInfoWindowHtml"],[js,"bindInfoWindowTabs"],[ks,"bindInfoWindowTabsHtml"],[ls,"closeInfoWindow"],[ms,"disableDragging"],[ns,"draggable"],[os,"dragging"],[ps,"draggingEnabled"],[qs,"enableDragging"],[rs,"getIcon"],[ss,"getPoint"],[ts,"getLatLng"],[us,"getTitle"],[vs,"hide"],[ws,"isHidden"],[ys,"openInfoWindow"],[zs,"openInfoWindowHtml"],\r
33546 [As,"openInfoWindowTabs"],[Bs,"openInfoWindowTabsHtml"],[Cs,"setImage"],[Ds,"setPoint"],[Es,"setLatLng"],[Fs,"show"],[Gs,"showMapBlowup"],[Is,"deleteVertex"],[Ks,"enableDrawing"],[Js,"disableEditing"],[Ls,"enableEditing"],[Ms,"getBounds"],[Ns,"getLength"],[Os,"getVertex"],[Ps,"getVertexCount"],[Qs,"hide"],[Rs,"insertVertex"],[Ss,"isHidden"],[Ts,"setStrokeStyle"],[Us,"show"],[Ws,"fromEncoded"],[Vs,"supportsHide"],[Ys,"deleteVertex"],[Zs,"disableEditing"],[$s,"enableDrawing"],[at,"enableEditing"],[bt,\r
33547 "getArea"],[ct,"getBounds"],[dt,"getVertex"],[et,"getVertexCount"],[ft,"hide"],[gt,"insertVertex"],[ht,"isHidden"],[it,"setFillStyle"],[jt,"setStrokeStyle"],[kt,"show"],[mt,"fromEncoded"],[lt,"supportsHide"],[Aw,"show"],[Bw,"hide"],[Cw,"isHidden"],[Dw,"isEnabled"],[Ew,"setParameter"],[Ht,"cancelEvent"],[Et,"addListener"],[Ft,"addDomListener"],[Gt,"removeListener"],[Kt,"clearAllListeners"],[It,"clearListeners"],[Jt,"clearInstanceListeners"],[Lt,"clearNode"],[Mt,"trigger"],[Nt,"bind"],[Ot,"bindDom"],\r
33548 [Pt,"callback"],[Qt,"callbackArgs"],[Rt,"create"],[Tt,"equals"],[Ut,"toString"],[Vt,"ORIGIN"],[Xt,"equals"],[Yt,"toString"],[Zt,"ZERO"],[au,"toString"],[cu,"equals"],[bu,"mid"],[du,"min"],[eu,"max"],[fu,"containsBounds"],[gu,"containsPoint"],[hu,"extend"],[ju,"equals"],[ku,"toUrlValue"],[lu,"fromUrlValue"],[mu,"lat"],[nu,"lng"],[ou,"latRadians"],[pu,"lngRadians"],[qu,"distanceFrom"],[su,"equals"],[tu,"contains"],[uu,"containsLatLng"],[vu,"intersects"],[wu,"containsBounds"],[xu,"extend"],[yu,"getSouthWest"],\r
33549 [zu,"getNorthEast"],[Au,"toSpan"],[Bu,"isFullLat"],[Cu,"isFullLng"],[Du,"isEmpty"],[Eu,"getCenter"],[Gu,"getLocations"],[Hu,"getLatLng"],[Iu,"getAddress"],[Ju,"getCache"],[Ku,"setCache"],[Lu,"reset"],[Mu,"setViewport"],[Nu,"getViewport"],[Ou,"setBaseCountryCode"],[Pu,"getBaseCountryCode"],[Qu,"getAddressInBounds"],[Vu,"addCopyright"],[Wu,"getCopyrights"],[Xu,"getCopyrightNotice"],[$u,"getTileLayer"],[av,"hide"],[bv,"isHidden"],[cv,"refresh"],[dv,"show"],[ev,"supportsHide"],[gv,"getDefaultBounds"],\r
33550 [hv,"getDefaultCenter"],[iv,"getDefaultSpan"],[jv,"getKml"],[kv,"getTileLayerOverlay"],[lv,"gotoDefaultViewport"],[mv,"hasLoaded"],[nv,"hide"],[ov,"isHidden"],[pv,"loadedCorrectly"],[qv,"show"],[rv,"supportsHide"],[ot,"getKml"],[pt,"hide"],[qt,"isHidden"],[rt,"show"],[st,"supportsHide"],[ut,"getKml"],[vt,"hide"],[wt,"isHidden"],[zt,"show"],[At,"supportsHide"],[tv,"getName"],[uv,"getBoundsZoomLevel"],[vv,"getSpanZoomLevel"],[xv,"getDefault"],[yv,"getMapTypeArray"],[zv,"getRotatedMapType"],[Av,"isImageryVisible"],\r
33551 [Bv,"setMinZoomLevel"],[Dv,"setDraggableCursor"],[Ev,"setDraggingCursor"],[Fv,"getDraggableCursor"],[Gv,"getDraggingCursor"],[Hv,"setDraggableCursor"],[Iv,"setDraggingCursor"],[Jv,"moveTo"],[Kv,"moveBy"],[cw,"addRelationship"],[dw,"removeRelationship"],[ew,"clearRelationships"],[Mv,"addMarkers"],[Nv,"addMarker"],[Ov,"getMarkerCount"],[Pv,"refresh"],[gw,"getOverviewMap"],[hw,"show"],[iw,"hide"],[jw,"setMapType"],[lw,"setMinAddressLinkLevel"],[qw,"write"],[rw,"writeUrl"],[sw,"writeHtml"],[tw,"getMessages"],\r
33552 [uw,"parse"],[vw,"value"],[xw,"transformToHtml"],[yw,"create"],[Gw,"forceLowBandwidthMode"],[Iw,"load"],[Jw,"loadFromWaypoints"],[Kw,"clear"],[Lw,"getStatus"],[Mw,"getBounds"],[Nw,"getNumRoutes"],[Ow,"getRoute"],[Pw,"getNumGeocodes"],[Qw,"getGeocode"],[Rw,"getCopyrightsHtml"],[Sw,"getSummaryHtml"],[Tw,"getDistance"],[Uw,"getDuration"],[Vw,"getPolyline"],[Ww,"getMarker"],[Xw,"getDirections"],[Zw,"clear"],[$w,"renderResult"],[ax,"renderTrip"],[ky,"enable"],[ly,"disable"],[uy,"destroy"],[vy,"setMessage"],\r
33553 [wy,"__internal_testHookRespond"],[my,"call_"],[ny,"registerService_"],[oy,"initialize_"],[py,"clear_"],[yy,"getNearestPanorama"],[zy,"getNearestPanoramaLatLng"],[Ay,"getPanoramaById"],[Dy,"hide"],[Ey,"show"],[Fy,"isHidden"],[Gy,"setContainer"],[Hy,"checkResize"],[Iy,"remove"],[Jy,"focus"],[Ky,"blur"],[Ly,"getPOV"],[My,"setPOV"],[Ny,"panTo"],[Oy,"followLink"],[Py,"setLocationAndPOVFromServerResponse"],[Qy,"setLocationAndPOV"],[Ry,"setUserPhoto"],[Sy,"getScreenPoint"],[Ty,"getLatLng"],[Uy,"getPanoId"],\r
33554 [Zq,"getEarthInstance"],[Qv,"isRtl"],[Rv,"getLanguageCode"]],Yy=[[aq,"DownloadUrl"],[oq,"Async"],[yp,"API_VERSION"],[zp,"MAP_MAP_PANE"],[Ap,"MAP_OVERLAY_LAYER_PANE"],[Bp,"MAP_MARKER_SHADOW_PANE"],[Cp,"MAP_MARKER_PANE"],[Dp,"MAP_FLOAT_SHADOW_PANE"],[Ep,"MAP_MARKER_MOUSE_TARGET_PANE"],[Fp,"MAP_FLOAT_PANE"],[Pp,"DEFAULT_ICON"],[Qp,"GEO_SUCCESS"],[Rp,"GEO_MISSING_ADDRESS"],[Sp,"GEO_UNKNOWN_ADDRESS"],[Tp,"GEO_UNAVAILABLE_ADDRESS"],[Up,"GEO_BAD_KEY"],[Vp,"GEO_TOO_MANY_QUERIES"],[Wp,"GEO_SERVER_ERROR"],\r
33555 [Gp,"GOOGLEBAR_TYPE_BLENDED_RESULTS"],[Hp,"GOOGLEBAR_TYPE_KMLONLY_RESULTS"],[Ip,"GOOGLEBAR_TYPE_LOCALONLY_RESULTS"],[Jp,"GOOGLEBAR_RESULT_LIST_SUPPRESS"],[Kp,"GOOGLEBAR_RESULT_LIST_INLINE"],[Lp,"GOOGLEBAR_LINK_TARGET_TOP"],[Mp,"GOOGLEBAR_LINK_TARGET_SELF"],[Np,"GOOGLEBAR_LINK_TARGET_PARENT"],[Op,"GOOGLEBAR_LINK_TARGET_BLANK"],[Xp,"ANCHOR_TOP_RIGHT"],[Yp,"ANCHOR_TOP_LEFT"],[Zp,"ANCHOR_BOTTOM_RIGHT"],[$p,"ANCHOR_BOTTOM_LEFT"],[bq,"START_ICON"],[cq,"PAUSE_ICON"],[dq,"END_ICON"],[eq,"GEO_MISSING_QUERY"],\r
33556 [fq,"GEO_UNKNOWN_DIRECTIONS"],[gq,"GEO_BAD_REQUEST"],[hq,"TRAVEL_MODE_DRIVING"],[iq,"TRAVEL_MODE_WALKING"],[jq,"TRAVEL_MODE_TRANSIT"],[kq,"MPL_GEOXML"],[lq,"MPL_POLY"],[mq,"MPL_MAPVIEW"],[nq,"MPL_GEOCODING"],[Nn,"MOON_MAP_TYPES"],[Kn,"MOON_VISIBLE_MAP"],[Ln,"MOON_ELEVATION_MAP"],[Sn,"MARS_MAP_TYPES"],[On,"MARS_ELEVATION_MAP"],[Pn,"MARS_VISIBLE_MAP"],[Qn,"MARS_INFRARED_MAP"],[Vn,"SKY_MAP_TYPES"],[Tn,"SKY_VISIBLE_MAP"],[pq,"LAYER_PARAM_COLOR"],[qq,"LAYER_PARAM_DENSITY_MODIFIER"],[rq,"ADSMANAGER_STYLE_ADUNIT"],\r
33557 [sq,"ADSMANAGER_STYLE_ICON"]];function Zy(a,b){b=b||{};return b.delayDrag?new Nh(a,b):new Mh(a,b)}\r
33558 Zy.prototype=Mh.prototype;function $y(a,b){b=b||{};var c=new Sj;c.mapTypes=b.mapTypes;c.size=b.size;c.draggingCursor=b.draggingCursor;c.draggableCursor=b.draggableCursor;c.logoPassive=b.logoPassive;c.googleBarOptions=b.googleBarOptions;c.backgroundColor=b.backgroundColor;Pc.call(this,a,c)}\r
33559 $y.prototype=Pc.prototype;\r
33560 var az={},bz=[[eo,zn],[go,Zg],[fo,D],[ko,yn],[lo,rk],[mo,Yj],[no,Qd],[oo,md],[so,Mh],[to,{}],[vo,xn],[xo,An],[yo,wn],[zo,Bn],[Ao,gk],[Co,jm],[Do,Wl],[Eo,Vl],[Fo,mi],[Go,{}],[Ho,dn],[Io,en],[Jo,z],[Ko,id],[Mo,{}],[No,Pc],[Oo,$y],[Po,Hd],[Qo,Ym],[Ro,Bj],[So,ik],[To,Xn],[Uo,Zm],[Vo,pd],[Wo,qn],[Yo,oi],[Zo,kn],[$o,S],[ap,Pl],[bp,Cl],[cp,sj],[gp,bn],[hp,Cn],[ip,bh],[jp,ch],[kp,R],[lp,an],[mp,fk],[np,hn],[qp,Cj],[rp,ak],[vp,{}],[wp,{}],[xp,Ud]],cz=[[yp,_mJavascriptVersion],[zp,0],[Ap,1],[Bp,2],[Cp,4],[Dp,\r
33561 5],[Ep,6],[Fp,7],[Pp,fm],[Gp,"blended"],[Hp,"kmlonly"],[Ip,"localonly"],[Jp,"suppress"],[Kp,"inline"],[Lp,"_top"],[Mp,"_self"],[Np,"_parent"],[Op,"_blank"],[Qp,200],[Rp,601],[Sp,602],[Tp,603],[Up,610],[Vp,620],[Wp,500],[Xp,1],[Yp,0],[Zp,3],[$p,2],[aq,ij],[rq,"adunit"],[sq,"icon"]];lh=e;\r
33562 var $=Pc.prototype,dz=Wl.prototype,ez=ik.prototype,fz=Cl.prototype,gz=Pl.prototype,hz=S.prototype,iz=R.prototype,jz=Zg.prototype,kz=z.prototype,lz=id.prototype,mz=kn.prototype,nz=qn.prototype,oz=Ud.prototype,pz=yn.prototype,qz=md.prototype,rz=ak.prototype,sz=Mh.prototype,tz=Xn.prototype,uz=An.prototype,vz=Bn.prototype,wz=Cn.prototype,xz=gk.prototype,yz=[[Rq,$.T],[nr,$.Ga],[or,$.mi],[Pq,$.H],[$q,$.F],[sr,$.te],[ur,$.Dc],[vr,$.bd],[Tq,$.AL],[Vq,$.rA],[Wq,$.hM],[pr,$.Bb],[uq,$.Pl],[ir,$.CE],[Yq,$.O],\r
33563 [dr,$.to],[er,$.db],[fr,$.qb],[vq,$.ba],[jr,$.ka],[xq,$.Zx],[Xq,$.Ya],[tq,$.$a],[hr,$.ge],[tr,$.ti],[ar,$.rn],[wq,$.$i],[Sq,$.R],[Qq,$.getBoundsZoomLevel],[lr,$.UE],[kr,$.QE],[br,$.ha],[Bq,$.nc],[Iq,$.Ic],[Fq,$.qj],[Lq,$.oh],[Mq,$.Tz],[Nq,$.X],[Oq,$.J],[Gq,$.xK],[zq,$.YJ],[yq,$.lJ],[Hq,$.uz],[Aq,$.jr],[Eq,$.jK],[Kq,$.Bz],[Dq,$.Wy],[mr,$.kv],[Jq,$.zz],[Cq,$.aK],[gr,$.uu],[qr,$.VF],[rr,$.WF],[Uq,$.mA],[Gr,$.ja],[Hr,$.ja],[Ir,$.ja],[Jr,$.ja],[Kr,$.Kb],[Er,$.Ej],[Mr,$.Hp],[Lr,$.Gp],[Br,$.da],[Dr,$.Cr],\r
33564 [Cr,$.lr],[Fr,$.Vs],[Rr,dz.nr],[Sr,dz.Dr],[$r,dz.maximize],[cs,dz.restore],[ds,dz.mv],[Yr,dz.hide],[es,dz.show],[Zr,dz.I],[as,dz.ya],[bs,dz.reset],[Vr,dz.Hj],[Ur,dz.ks],[Wr,dz.zM],[Xr,dz.ZA],[Tr,dz.tL],[gs,pi],[ys,ez.ja],[zs,ez.ja],[As,ez.ja],[Bs,ez.ja],[hs,ez.Zl],[is,ez.Zl],[js,ez.Zl],[ks,ez.Zl],[ls,ez.da],[Gs,ez.Kb],[rs,ez.pd],[ss,ez.Hj],[ts,ez.Hj],[us,ez.bB],[Ds,ez.cc],[Es,ez.cc],[qs,ez.Ic],[ms,ez.nc],[os,ez.dragging],[ns,ez.draggable],[ps,ez.qj],[Cs,ez.fT],[vs,ez.hide],[Fs,ez.show],[ws,ez.I],\r
33565 [Is,fz.er],[Js,fz.zm],[Ks,fz.Ar],[Ls,fz.Br],[Ms,fz.H],[Ns,fz.aM],[Os,fz.Vb],[Ps,fz.Ud],[Qs,fz.hide],[Rs,fz.cq],[Ss,fz.I],[Ts,fz.Lv],[Us,fz.show],[Vs,fz.ya],[Ws,Kl],[Ys,gz.er],[Zs,gz.zm],[$s,gz.Ar],[at,gz.Br],[dt,gz.Vb],[et,gz.Ud],[bt,gz.lL],[ct,gz.H],[ft,gz.hide],[gt,gz.cq],[ht,gz.I],[it,gz.$S],[jt,gz.Lv],[kt,gz.show],[lt,gz.ya],[mt,Ql],[Et,rf(v,3,az)],[Ft,rf(sh,3,az)],[Gt,w],[It,rf(ph,2,az)],[Jt,rf(Rg,1,az)],[Lt,rf(Pg,1,az)],[Mt,A],[Nt,rf(wh,4,az)],[Ot,rf(uh,4,az)],[Pt,qf],[Qt,uf],[Rt,hj],[Tt,hz.equals],\r
33566 [Ut,hz.toString],[Vt,Xg],[Xt,iz.equals],[Yt,iz.toString],[Zt,Yg],[au,jz.toString],[cu,jz.equals],[bu,jz.mid],[du,jz.min],[eu,jz.max],[fu,jz.kc],[gu,jz.Kf],[hu,jz.extend],[ju,kz.equals],[ku,kz.Aa],[lu,z.fromUrlValue],[mu,kz.lat],[nu,kz.lng],[ou,kz.$d],[pu,kz.ff],[qu,kz.Pb],[su,lz.equals],[tu,lz.contains],[uu,lz.contains],[vu,lz.intersects],[wu,lz.kc],[xu,lz.extend],[yu,lz.nb],[zu,lz.mb],[Au,lz.sb],[Bu,lz.hO],[Cu,lz.iO],[Du,lz.ma],[Eu,lz.T],[Gu,pz.$m],[Hu,pz.ga],[Iu,pz.getAddress],[Ju,pz.gA],[Ku,pz.eF],\r
33567 [Lu,pz.reset],[Mu,pz.Pv],[Nu,pz.eB],[Ou,pz.cF],[Pu,pz.eA],[Qu,pz.Wr],[Vu,qz.Oi],[Wu,qz.getCopyrights],[Xu,qz.$r],[av,rz.hide],[bv,rz.I],[cv,rz.refresh],[dv,rz.show],[ev,rz.ya],[$u,rz.KM],[gv,uz.bs],[hv,uz.Um],[iv,uz.Vm],[jv,uz.getKml],[kv,uz.$A],[lv,uz.ys],[mv,uz.nn],[nv,uz.hide],[ov,uz.I],[pv,uz.DC],[qv,uz.show],[rv,uz.ya],[ot,vz.getKml],[pt,vz.hide],[qt,vz.I],[rt,vz.show],[st,vz.ya],[ut,wz.getKml],[vt,wz.hide],[wt,wz.I],[zt,wz.show],[At,wz.ya],[Dv,sz.qe],[Ev,sz.Yk],[Fv,Mh.Xf],[Gv,Mh.Dj],[Hv,Mh.qe],\r
33568 [Iv,Mh.Yk],[Jv,sz.moveTo],[Kv,sz.moveBy],[Mv,tz.aq],[Nv,tz.Ww],[Ov,tz.GA],[Pv,tz.refresh],[gw,mz.QA],[hw,mz.show],[iw,mz.hide],[jw,mz.Bb],[lw,nz.GF],[cw,xz.Sl],[dw,xz.FE],[ew,xz.$x],[qw,n(Wn.prototype.write,x(Wn))],[rw,n(Wn.prototype.pH,x(Wn))],[sw,n(Wn.prototype.oH,x(Wn))],[tw,n(Wn.prototype.KA,x(Wn))],[uw,Sd],[vw,Rd],[xw,oz.$U],[yw,Td],[Gw,D.YK],[ky,zn.prototype.enable],[ly,zn.prototype.disable],[Qv,Wi],[Rv,Xd]];window._mTrafficEnableApi&&bz.push([sp,$n]);\r
33569 if(window._mDirectionsEnableApi){bz.push([po,Yn],[ro,Zn]);var zz=Yn.prototype,Az=Zn.prototype;yz.push([Iw,zz.load],[Jw,zz.zC],[Kw,zz.clear],[Lw,zz.We],[Mw,zz.H],[Nw,zz.qd],[Ow,zz.ab],[Pw,zz.bn],[Qw,zz.Xm],[Rw,zz.Sm],[Sw,zz.hn],[Tw,zz.lb],[Uw,zz.od],[Vw,zz.getPolyline],[Ww,zz.FA],[Xw,Yn.nA],[Zw,Az.clear],[$w,Az.HE],[ax,Az.Mo]);cz.push([bq,gm],[cq,hm],[dq,im],[eq,601],[fq,604],[gq,400],[hq,1],[iq,2],[jq,3])}\r
33570 if(ac){bz.push([Xo,rd],[dp,Ej]);var Bz=Ej.prototype;yz.push([wr,$.em],[xr,$.or],[yr,$.Er],[zr,$.Wj],[Ar,$.Rk],[xv,Bz.Tm],[yv,Bz.gM],[zv,Bz.rs],[Av,Bz.isImageryVisible],[Bv,Bz.qi])}var Cz=Tm.prototype,Dz=Wm.prototype;bz.push([ho,Tm],[io,Vm],[jo,Wm]);yz.push([yy,Cz.MA],[zy,Cz.oM],[Ay,Cz.tM],[Dy,Dz.hide],[Ey,Dz.show],[Fy,Dz.I],[Gy,Dz.hF],[Hy,Dz.$i],[Iy,Dz.remove],[Jy,Dz.focus],[Ky,Dz.blur],[Ly,Dz.en],[My,Dz.ap],[Ny,Dz.qb],[Oy,Dz.Mm],[Py,Dz.bl],[Qy,Dz.al],[Ry,Dz.YF],[Sy,Dz.gn],[Ty,Dz.ga],[Uy,Dz.Gj]);\r
33571 Tm.ReturnValues={SUCCESS:200,SERVER_ERROR:500,NO_NEARBY_PANO:600};Wm.ErrorValues={NO_NEARBY_PANO:600,NO_PHOTO:601,FLASH_UNAVAILABLE:603};yz.push([Nr,$.wz],[Or,$.$J]);yz.push([Zq,$.PM]);var Ez=hk.prototype;bz.push([Lo,hk]);yz.push([Aw,Ez.show],[Bw,Ez.hide],[Cw,Ez.I],[Dw,Ez.Ch],[Ew,Ez.setParameter]);cz.push([pq,"c"],[qq,"dm"]);Array.prototype.push.apply(cz,Gn());Bc.push(function(a){sc(a,Wy,Xy,Yy,bz,yz,cz,Vy)});function Fz(a,b){var c=new Sj;c.mapTypes=b||i;Pc.call(this,a,c);v(this,Ga,function(d,f){A(this,Fa,this.De(d),this.De(f))})}\r
33572 p(Fz,Pc);l=Fz.prototype;l.rL=function(){var a=this.T();return new S(a.lng(),a.lat())};\r
33573 l.nL=function(){var a=this.H();return new Zg([a.nb(),a.mb()])};\r
33574 l.DM=function(){var a=this.H().sb();return new R(a.lng(),a.lat())};\r
33575 l.wh=function(){return this.De(this.F())};\r
33576 l.Bb=function(a){if(this.ha())Pc.prototype.Bb.call(this,a);else this.gJ=a};\r
33577 l.JI=function(a,b){a=new z(a.y,a.x);if(this.ha()){b=this.De(b);this.Ga(a,b)}else{var c=this.gJ;b=this.De(b);this.Ga(a,b,c)}};\r
33578 l.KI=function(a){this.Ga(new z(a.y,a.x))};\r
33579 l.HR=function(a){this.qb(new z(a.y,a.x))};\r
33580 l.tH=function(a){this.te(this.De(a))};\r
33581 l.ja=function(a,b,c,d,f){var g={};g.pixelOffset=c;g.onOpenFn=d;g.onCloseFn=f;Pc.prototype.ja.call(this,new z(a.y,a.x),b,g)};\r
33582 l.TQ=Fz.prototype.ja;l.Kb=function(a,b,c,d,f,g){var h={};h.pixelOffset=d;h.onOpenFn=f;h.onCloseFn=g;h.mapType=c;h.zoomLevel=ue(b)?this.De(b):undefined;Pc.prototype.Kb.call(this,new z(a.y,a.x),h)};\r
33583 l.De=function(a){return typeof a=="number"?17-a:a};\r
33584 Bc.push(function(a){var b=Fz.prototype;b=[["Map",Fz,[["getCenterLatLng",b.rL],["getBoundsLatLng",b.nL],["getSpanLatLng",b.DM],["getZoomLevel",b.wh],["setMapType",b.Bb],["centerAtLatLng",b.KI],["recenterOrPanToLatLng",b.HR],["zoomTo",b.tH],["centerAndZoom",b.JI],["openInfoWindow",b.ja],["openInfoWindowHtml",b.TQ],["openInfoWindowXslt",N],["showMapBlowup",b.Kb]]],[i,ik,[["openInfoWindowXslt",N]]]];a=="G"&&mc(a,b)});Gg("api.css","@media print{.gmnoprint{display:none}}@media screen{.gmnoscreen{display:none}}");window.GLoad&&window.GLoad(Oc);})()\r
33585 \r
33586 \r
33587 \r
33588 /*      SWFObject v2.2 <http://code.google.com/p/swfobject/> \r
33589         is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> \r
33590 */\r
33591 var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();\r
33592 \r
33593 \r
33594 \r
33595 /*    HTTP Host:  static.ak.connect.facebook.com                               */\r
33596 /*    Generated:  February 26th 2010 1:51:38 PM PDT                            */\r
33597 /*      Machine:  10.27.115.117                                                */\r
33598 /*       Source:  Local/Global Cache                                           */\r
33599 /*     Location:  JIT Construction: v222481                                    */\r
33600 /*       Locale:  en_US                                                        */\r
33601 /*   Components:  js/connect/core/FB/monitorWrapper.js:r221967,js/connect/core/FB/prelude.js:r221967,js/connect/core/FB/log.js:r221967,js/connect/core/FB/class.js:r221967,js/connect/core/FB/Type.js:r221967,js/connect/core/FB/HiddenContainer.js:r221967,js/connect/core/FB/HiddenContainerLoad.js:r221967,js/connect/core/FB/Delegate.js:r221967,js/connect/core/FB/Loader.js:r221967,js/connect/core/FB/Bootstrap.js:r221967,js/api_lib/v0.4/XdCommReceiver.js:r221967 */\r
33602 \r
33603 if (!window.FB) {FB = {};} if(!FB.dynData) { FB.dynData = {"site_vars":{"canvas_client_compute_content_size_method":1,"use_postMessage":1,"use_xdProxy":0,"use_ui_server":1,"monitor_usage_regex":"somethingtoputhere.com|huffingtonpost.com|lala.com","monitor_usage_rate":0.05,"enable_custom_href":1},"resources":{"base_url_format":"http:\/\/{0}.connect.facebook.com\/","base_cdn_url":"http:\/\/static.ak.fbcdn.net\/","api_channel":210036,"api_server":210036,"www_channel":210036,"xd_proxy":205601,"xd_comm_swf_url":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z48NA\/hash\/6r2djk2l.swf","share_button":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z1NNP\/hash\/4273uaqa.png","login_img_dark_small_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zATAA\/hash\/a969rwcd.png","login_img_dark_medium_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zI08N\/hash\/156b4b3s.png","login_img_dark_medium_long":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zDFXV\/hash\/85b5jlja.png","login_img_dark_large_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zHW0N\/hash\/a22m3ibb.png","login_img_dark_large_long":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zC8F0\/hash\/8mzymam2.png","login_img_light_small_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z68PZ\/hash\/8t35mjql.png","login_img_light_medium_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zEV10\/hash\/6ad3z8m6.png","login_img_light_medium_long":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z7T3O\/hash\/4li2k73z.png","login_img_light_large_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zEYEC\/hash\/7e3mp7ee.png","login_img_light_large_long":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z1RA7\/hash\/8rc0izvz.png","login_img_white_small_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z79GY\/hash\/di0gkqrt.png","login_img_white_medium_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zDTB7\/hash\/cdozw38w.png","login_img_white_medium_long":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z6AST\/hash\/338d3m67.png","login_img_white_large_short":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z6FD4\/hash\/8yzn0wu3.png","login_img_white_large_long":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z5V8V\/hash\/5pwowlag.png","logout_img_small":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z68NS\/hash\/cxrz4k7j.png","logout_img_medium":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/zATSY\/hash\/4lsqsd7l.png","logout_img_large":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/z8P0T\/hash\/4515xk7j.png"}};} if (!FB.locale) {FB.locale = "en_US";} if (!FB.localeIsRTL) {FB.localeIsRTL = false;}\r
33604 \r
33605 \r
33606 if(!window.FB)FB={};if(!FB.Monitor)FB.Monitor={wrapObject:function(a,b,f){if(typeof(a)!="object")return a;if(!FB.Monitor.loggingEnabled())return a;if(b=='FB.Debug'||b=='FB.HiddenContainer'||b=='FB.XdComm.Server'||b.indexOf('FBIntern')==0)return a;for(var d in a){var c=a[d];if(!a.hasOwnProperty(d)||typeof(c)!='function'||c.wrapped)continue;var e={containerName:b,functionName:d};a[d]=FB.Monitor._monitorWrapper(c,a,f,e);a[d].wrapped=true;}return a;},disableLogging:function(){FB.Monitor.loggingEnabledCache=false;},loggingEnabled:function(){if(FB.Monitor.loggingEnabledCache===null){var c=FB.dynData&&FB.dynData.site_vars&&FB.dynData.site_vars.monitor_usage_regex;if(!c){FB.Monitor.loggingEnabledCache=false;}else{var a=new RegExp(c);var b=FB.dynData.site_vars.monitor_usage_rate;FB.Monitor.loggingEnabledCache=a.test(document.domain)?(Math.random()/b)<1:false;}}return FB.Monitor.loggingEnabledCache;},externalCallback:function(a){if(typeof(a)!='function')return a;return function(){var d=FB.Monitor.internalCallStackDepth;FB.Monitor.internalCallStackDepth=0;var b=Array.prototype.slice.call(arguments);var c=a.apply(this,b);FB.Monitor.internalCallStackDepth=d;return c;};},_monitorWrapper:function(b,a,d,c){return function(){var e=Array.prototype.slice.call(arguments);context=d?this:(a||window);c=c||{containerName:'unknown',functionName:'unknown'};if(FB.Monitor.internalCallStackDepth==0)if(c.functionName.substr(0,1)!='_')FB.Monitor.logFunction(c,e);++FB.Monitor.internalCallStackDepth;var f=b.apply(context,e);--FB.Monitor.internalCallStackDepth;return f;};},logFunction:function(e,c){var b=[];for(var d=0;d<c.length;d++){var a=c[d];b[d]=a?a.toString():a;}FB.Monitor.log("functions",e.containerName+"."+e.functionName,b);},logXFBML:function(c){var b={};for(var d=0;d<c.attributes.length;++d){var a=c.attributes[d];if(a.specified!==false&&a.nodeName&&a.nodeValue&&a.nodeName!="class")b[a.nodeName]=a.nodeValue.toString();}var e=c.nodeName.toLowerCase();FB.Monitor.log("tags",e,b);},log:function(b,d,a){var c={name:d,args:a};FB.Monitor.loggingQueue[b].push(c);if(!FB.Monitor.pendingTimer){setTimeout(FB.Monitor.send,FB.Monitor.TIMER_INTERVAL);FB.Monitor.pendingTimer=true;}},clearQueues:function(){var a=FB.Monitor.loggingQueue;FB.Monitor.pendingTimer=false;FB.Monitor.loggingQueue={tags:[],functions:[]};return a;},send:function(){if(FB.MonitorSender){FB.bind(FB.MonitorSender.send)();}else{FB.Monitor.TIMER_INTERVAL=FB.Monitor.TIMER_INTERVAL*1.5;setTimeout(FB.Monitor.send,FB.Monitor.TIMER_INTERVAL);}},TIMER_INTERVAL:6*1000,internalCallStackDepth:0,loggingQueue:{tags:[],functions:[]},pendingTimer:false,loggingEnabledCache:null};\r
33607 if(!window.FB)FB={};FB.forEach=function(c,a,f){if(Object.prototype.toString.apply(c)==='[object Array]'){if(c.forEach){c.forEach(a);}else for(var b=0,e=c.length;b<e;b++)a(c[b],b,c);}else for(var d in c)if(f||c.hasOwnProperty(d))a(c[d],d,c);};FB.copy=function(c,b,a){FB.forEach(b,function(e,d){if(a||typeof c[d]==='undefined')c[d]=e;});};FB.copy(FB,{$:function(a){return document.getElementById(a);},TypeLoader:{NOTIFY:{},LOADED_MODULES:{},LOADED_CLASSES:{},resolve:function(f,e,a){for(var b=0,c=e.length;b<c;b++){var d=e[b];if(d==='')continue;if(typeof f[d]==='undefined')if(a){f[d]={};}else return false;f=f[d];}return f;},provide:function(c,b,a){FB.Monitor.wrapObject(b,c,false);var d=this.resolve(window,c.split('.'),true);if(a||!this.LOADED_MODULES[c]){FB.copy(d,b,true);if(b._onLoad)d._onLoad();}this.LOADED_MODULES[c]=true;},subclass:function(e,a,i){if(this.LOADED_CLASSES[e])return;if(a!=='FB.Class'&&!this.LOADED_CLASSES[a]){FB.Log.debug('"'+e+'" needs to wait for "'+a+'"');var j=FB.redo(arguments,this);this.NOTIFY[a]?this.NOTIFY[a].push(j):this.NOTIFY[a]=[j];return;}var b=this.resolve(window,a.split('.')),f=b.extend(i),g=this.NOTIFY[e],h=e.split('.'),d=this.resolve(window,h,true),c=h.pop();FB.Monitor.wrapObject(f.prototype,e,true);FB.Monitor.wrapObject(f,e,false);FB.copy(f,d);this.resolve(window,h)[c]=f;this.LOADED_CLASSES[e]=true;if(g){FB.forEach(g,function(k){k();});delete this.NOTIFY[e];}}},bind:function(){var a=Array.prototype.slice.call(arguments),c=a.shift(),b=a.shift();var d=function(){++FB.Monitor.internalCallStackDepth;var e=c.apply(b,a.concat(Array.prototype.slice.call(arguments)));--FB.Monitor.internalCallStackDepth;return e;};d._targets=[b,c];return d;},redo:function(a,c){var b=Array.prototype.slice.call(a);b.unshift(c);b.unshift(a.callee);return FB.bind.apply(FB,b);}});FB.provide=FB.bind(FB.TypeLoader.provide,FB.TypeLoader);FB.subclass=FB.bind(FB.TypeLoader.subclass,FB.TypeLoader);\r
33608 FB.provide('FB.Log',{level:3,Level:{DEBUG:3,INFO:2,WARNING:1,ERROR:0},_helper:function(){var a=Array.prototype.slice.call(arguments),c=a.shift(),b=a.shift();if(this.level>=b&&window.console)(console[c]||console.log).apply(console,a);}});FB.provide('FB.Log',{debug:FB.bind(FB.Log._helper,FB.Log,'debug',FB.Log.Level.DEBUG),info:FB.bind(FB.Log._helper,FB.Log,'info',FB.Log.Level.INFO),warn:FB.bind(FB.Log._helper,FB.Log,'warn',FB.Log.Level.WARNING),error:FB.bind(FB.Log._helper,FB.Log,'error',FB.Log.Level.ERROR)},true);\r
33609 (function(){var b=false,a=/xyz/.test(function(){xyz;})?/\b_super\b/:/.*/;FB.Class=function(){};FB.Class.extend=function(e){var d=this.prototype;b=true;var f=new this();b=false;FB.forEach(e,function(h,g){f[g]=typeof h==="function"&&typeof d[g]==="function"&&a.test(h)?(function(j,i){return function(){var l=this._super;this._super=d[j];var k=i.apply(this,arguments);this._super=l;return k;};})(g,h):h;});var c=function(){if(!b){var g;if(this instanceof c){g=this;}else{b=true;g=new c();b=false;}if(g.init)g.init.apply(g,arguments);return g;}};c.prototype=f;c.constructor=c;c.extend=FB.Class.extend;return c;};})();\r
33610 if(!window.FB)FB={};if(!FB.Type){FB.Type={createNamespace:function(b){var d=window;var c=b.split('.');for(var a=0;a<c.length;a++){var f=c[a];var e=d[f];if(!e)d[f]=e={};d=e;}return d;},createEnum:function(e,c,d){if(this.getObj(e))return;var a=function(){};a.prototype=c;for(var b in c)a[b]=c[b];if(d)a.__flags=true;this.setObj(e,a);},createClass2:function(cls,baseType){if(baseType&&typeof(baseType)=="string")baseType=eval(baseType);cls.prototype.constructor=cls;this.extend(cls,FB.Type.Methods);cls.__baseType=baseType||Object;if(baseType)cls.__basePrototypePending=true;},setObj:function(fullName,value){var i=fullName.lastIndexOf('.');var objName;var scope=window;if(i>0){var ns=fullName.substring(0,i);this.createNamespace(ns);objName=fullName.substring(i+1);scope=eval(ns);}else objName=fullName;scope[objName]=value;},getObj:function(b){var d=window;var c=b.split('.');for(var a=0;a<c.length;a++){var e=c[a];d=d[e];if(!d)break;}return d;},createClass:function(a,b){if(this.getObj(a))return;if(arguments.length==1&&typeof(a)!="string"){return this._createClass(a);}else this.setObj(a,this._createClass(b));},_createClass:function(b){var a=b.ctor||function(){};if(b.static_ctor)this.addStaticInit(b.static_ctor);if(b.instance)a.prototype=b.instance;if(b['static'])this.extend(a,b['static']);this.createClass2(a,b.base);return a;},addStaticInit:function(a){if(!FB.Type._pendingInits)FB.Type._pendingInits=[];FB.Type._pendingInits[FB.Type._pendingInits.length]=a;window.setTimeout(FB.Type.runPendingInits,0);},runPendingInits:function(){if(FB.Type._pendingInits){var b=FB.Type._pendingInits;FB.Type._pendingInits=null;var a=b.length;for(var c=0;c<a;c++)b[c]();}},extend:function(a,c){for(var b in c)a[b]=c[b];return a;},getInstanceType:function(a){return a.constructor;}};FB.Type.Methods={setupBase:function(){if(this.__basePrototypePending){var a=this.__baseType;if(a.__basePrototypePending)a.setupBase();for(var b in a.prototype){var c=a.prototype[b];if(!this.prototype[b])this.prototype[b]=c;}delete this.__basePrototypePending;}},constructBase:function(b,a){if(this.__basePrototypePending)this.setupBase();if(!a){this.__baseType.apply(b);}else this.__baseType.apply(b,a);},callBase:function(c,d,a){var b=this.__baseType.prototype[d];if(!a){return b.apply(c);}else return b.apply(c,a);},get_baseType:function(){return this.__baseType||null;}};}\r
33611 FB.provide('FB.HiddenContainer',{_onLoad:function(){if(document.getElementById('FB_HiddenContainer')==null){var a;try{var b=window.navigator.userAgent.toLowerCase().indexOf('msie')>=0&&window.attachEvent;if((!b||document.readyState=='completed')&&document.body){a=document.createElement('div');a.id="FB_HiddenContainer";a.style.position="absolute";a.style.top="-10000px";a.style.width="0px";a.style.height="0px";document.body.appendChild(a);}}catch(e){a=null;}if(!a)document.write('<div id="FB_HiddenContainer" '+'style="position:absolute; top:-10000px; left:-10000px; width:0px; height:0px;" >'+'</div>');}},get:function(){return FB.$('FB_HiddenContainer');}});\r
33612 FB.provide('FB.HiddenContainerLoader',{_onLoad:function(){FB.HiddenContainer.get();}});\r
33613 FB.subclass('FB.Delegate','FB.Class',{});FB.provide('FB.Delegate',{Null:function(){},_create:function(b){var a=function(){if(b.length==2){return b[1].apply(b[0],arguments);}else{var d=b.slice();for(var c=0;c<d.length;c+=2)d[c+1].apply(d[c],arguments);return null;}};a._targets=b;return a;},create:function(b,a){if(!b)return a;return FB.Delegate._create([b,a]);},combine:function(a,b){if(!a){if(!b._targets)return FB.Delegate.create(null,b);return b;}if(!b){if(!a._targets)return FB.Delegate.create(null,a);return a;}var c=a._targets?a._targets:[null,a];var d=b._targets?b._targets:[null,b];return FB.Delegate._create(c.concat(d));},remove:function(a,b){if(!a||(a===b))return null;if(!b)return a;var f=a._targets;var e=null;var d;if(b._targets){e=b._targets[0];d=b._targets[1];}else d=b;for(var c=0;c<f.length;c+=2)if((f[c]===e)&&(f[c+1]===d)){if(f.length==2)return null;f.splice(c,2);return FB.Delegate._create(f);}return a;}});if(!window.Delegate)window.Delegate=FB.Delegate;\r
33614 if(!window.FB)FB={};if(!FB.Loader)FB.Loader={loaded:{},loading:{},loadedCss:{},loadedCallback:null,onScriptLoaded:function(b){var a=b.length;for(var c=0;c<a;c++){var d=b[c];FB.Loader.loaded[d]=true;}if(FB.Loader.loadedCallback)window.setTimeout(function(){FB.Loader.loadedCallback(b);},0);},loadCssComps:function(a){var b=FB.Loader.getStaticResourceUrl('connect.php/'+FB.locale+'/css/'+a.join('/'));if(!this.loadedCss[b]){var c=document.createElement('link');c.setAttribute('rel','stylesheet');c.setAttribute('type','text/css');c.setAttribute('href',b);document.getElementsByTagName('head')[0].appendChild(c);this.loadedCss[b]=true;}},getStaticResourceUrl:function(b){var a=FB.dynData.resources.base_url_format;var c=(a.indexOf('https')===0)?'ssl':'static.ak';return a.replace('{0}',c)+b;}};\r
33615 if(!FB.Bootstrap){FB.Bootstrap={requireFeatures:function(e,c){if(FB.Bootstrap.isXdChannel)return;var i={features:e,callback:FB.Monitor.externalCallback(c),completed:false};if(FB.Bootstrap._checkRequest(i))return;FB.Bootstrap._featureReqQueue.push(i);FB.Loader.loadedCallback=FB.Delegate.combine(FB.Loader.loadedCallback,FB.Bootstrap._onCompLoaded);FB.Bootstrap._transformFeatureList(e);var h={};var a=[];var f;var b=e.length;var g=0;for(f=0;f<b;f++){var d=e[f];if(!(FB.Loader.loaded[d]))if(!(FB.Loader.loaded[d]||FB.Loader.loading[d])){h[d]=true;a[a.length]=d;}}a.sort();var j=FB.Loader.getStaticResourceUrl('connect.php/'+FB.locale+'/js/'+a.join('/'));FB.Bootstrap.addScript(j);},_requireFeatures:function(b,a){this.requireFeatures(b,FB.bind(a));},_checkRequest:function(d){if(!d.completed){var b=0;var e=d.features.length;var c=0;for(b=0;b<e;b++){var a=d.features[b];if(FB.Loader.loaded[a])c++;}if(c==e){d.completed=true;if(d.callback)d.callback(true);}}return d.completed;},_transformFeatureList:function(b){var c={Api:true,CanvasUtil:true,Connect:true,XFBML:true};var a=b.length;var g=false;var f={};for(var d=0;d<a;d++){f[b[d]]=true;if(c[b[d]])g=true;}if(g)for(var e in c)if(!f[e])b[b.length]=e;},ensureInit:function(a){if(!a)throw ("FB.ensureInit called without a valid callback");a=FB.Monitor.externalCallback(a);if(FB.Facebook&&FB.Facebook.get_initialized&&FB.Facebook.get_initialized().get_isReady()&&FB.Facebook.get_initialized().result)return a();FB.Bootstrap._requireFeatures(FB.Bootstrap.features,function(){FB.Facebook.get_initialized().waitForValue(true,a);});},init:function(a,c,b){FB.Bootstrap._requireFeatures(FB.Bootstrap.features,function(){if(FB.Facebook)FB.Facebook.init(a,c,b);});},addScript:function(f){var d;var e=document.getElementsByTagName('script');if(e){var a=e.length;for(var b=0;b<a;b++){d=e[b];if(d.src==f)return;}}d=document.createElement("script");d.type="text/javascript";d.src=f;var c=document.getElementsByTagName('HEAD')[0]||document.body;c.appendChild(d);},setLocale:function(b,a){window.FB.locale=b;window.FB.localeIsRTL=a;},_initializeXdChannel:function(){FB.Bootstrap.isXdChannel=window.location.search.indexOf(FB.Bootstrap.fbc_channel_token)>=0;},_detectDocumentNamespaces:function(){if(document.namespaces&&!document.namespaces.item['fb'])document.namespaces.add('fb');},createDefaultXdChannelUrl:function(){var a=location.protocol+'//'+location.hostname+location.pathname+location.search;if(location.search||location.search.length>0){a+='&';}else a+='?';a+='fbc_channel=1';return a;},_onCompLoaded:function(){var b=0;var a=FB.Bootstrap._featureReqQueue.length;for(b=0;b<a;b++)FB.Bootstrap._checkRequest(FB.Bootstrap._featureReqQueue[b]);},_onLoad:function(){this._initializeXdChannel();this._detectDocumentNamespaces();},features:["XFBML","CanvasUtil"],fbc_channel_token:'fbc_channel=1',_featureReqQueue:[]};FB.Monitor.wrapObject(FB.Bootstrap,'FB.Bootstrap');window.FB_RequireFeatures=FB.Bootstrap.requireFeatures;window.FB.init=FB.Bootstrap.init;window.FB.ensureInit=FB.Bootstrap.ensureInit;FB.Bootstrap._onLoad();}\r
33616 if(!window.FBIntern)FBIntern={};if(!FBIntern.XdReceiver){FBIntern.XdReceiver={delay:100,timerId:-1,dispatchMessage:function(){var i=document.URL;var e=i.indexOf('#');var d;if(e>0){d=i.substring(e+1);}else{e=i.indexOf('fb_login&');if(e>0){d=i.substring(e+9);}else return;}var a='debug=1&';if(d.indexOf(a)==0)d=d.substring(a.length);var h;var c=null;try{var f=window.parent;if(d.indexOf('fname=')==0){var g=d.indexOf('&');var b=d.substr(6,g-6);if(b=="_opener"){f=f.opener;}else if(b=="_oparen"){f=f.opener.parent;}else if(b!="_parent")f=f.frames[b];h=d.substr(g+1);}else{f=f.parent;h=d;}c=f.FB.XdComm.Server.singleton.onReceiverLoaded;}catch(e){if(e.number==-2146828218)return;}if(c){f.FB.XdComm.Server.singleton.onReceiverLoaded(h);if(FBIntern.XdReceiver.timerId!=-1){window.clearInterval(FBIntern.XdReceiver.timerId);FBIntern.XdReceiver.timerId=-1;}}else if(FBIntern.XdReceiver.timerId==-1)try{FBIntern.XdReceiver.timerId=window.setInterval(FBIntern.XdReceiver.dispatchMessage,FBIntern.XdReceiver.delay);}catch(e){}}};if(!(window.FB&&FB.Bootstrap&&!FB.Bootstrap.isXdChannel))try{FBIntern.XdReceiver.dispatchMessage();}catch(e){}}(function(){var c=document.getElementsByTagName('script');var d=c[c.length-1];if(d!=undefined){var a=d.getAttribute('fb-api-key');var b=d.getAttribute('fb-xd-receiver');if(a!=null)window.setTimeout(function(){FB.init(a,b);},0);}})();\r
33617 \r
33618 if (FB && FB.Loader) { FB.Loader.onScriptLoaded(["FB.monitor-wrapper","FB.Prelude","FB.Log","FB.Class","FB.Type","FB.HiddenContainer","FB.HiddenContainerLoader","FB.Delegate","FB.Loader","FB.Bootstrap","XdCommReceiver"]); }\r
33619 \r
33620 \r
33621 \r
33622 var MooTools={"version":"1.2.4","build":"0d9113241a90b9cd5643b926795852a2026710d4"};var Native=function(options){options=options||{};var name=options.name;var legacy=options.legacy;var protect=options.protect;var methods=options.implement;var generics=options.generics;var initialize=options.initialize;var afterImplement=options.afterImplement||function(){};var object=initialize||legacy;generics=generics!==false;object.constructor=Native;object.$family={name:"native"};if(legacy&&initialize){object.prototype=legacy.prototype;}object.prototype.constructor=object;if(name){var family=name.toLowerCase();object.prototype.$family={name:family};Native.typize(object,family);}var add=function(obj,name,method,force){if(!protect||force||!obj.prototype[name]){obj.prototype[name]=method;}if(generics){Native.genericize(obj,name,protect);}afterImplement.call(obj,name,method);return obj;};object.alias=function(a1,a2,a3){if(typeof a1=="string"){var pa1=this.prototype[a1];if((a1=pa1)){return add(this,a2,a1,a3);}}for(var a in a1){this.alias(a,a1[a],a2);}return this;};object.implement=function(a1,a2,a3){if(typeof a1=="string"){return add(this,a1,a2,a3);}for(var p in a1){add(this,p,a1[p],a2);}return this;};if(methods){object.implement(methods);}return object;};Native.genericize=function(object,property,check){if((!check||!object[property])&&typeof object.prototype[property]=="function"){object[property]=function(){var args=Array.prototype.slice.call(arguments);return object.prototype[property].apply(args.shift(),args);};}};Native.implement=function(objects,properties){for(var i=0,l=objects.length;i<l;i++){objects[i].implement(properties);}};Native.typize=function(object,family){if(!object.type){object.type=function(item){return($type(item)===family);};}};(function(){var natives={"Array":Array,"Date":Date,"Function":Function,"Number":Number,"RegExp":RegExp,"String":String};for(var n in natives){new Native({name:n,initialize:natives[n],protect:true});}var types={"boolean":Boolean,"native":Native,"object":Object};for(var t in types){Native.typize(types[t],t);}var generics={"Array":["concat","indexOf","join","lastIndexOf","pop","push","reverse","shift","slice","sort","splice","toString","unshift","valueOf"],"String":["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","valueOf"]};for(var g in generics){for(var i=generics[g].length;i--;){Native.genericize(natives[g],generics[g][i],true);}}})();var Hash=new Native({name:"Hash",initialize:function(object){if($type(object)=="hash"){object=$unlink(object.getClean());}for(var key in object){this[key]=object[key];}return this;}});Hash.implement({forEach:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)){fn.call(bind,this[key],key,this);}}},getClean:function(){var clean={};for(var key in this){if(this.hasOwnProperty(key)){clean[key]=this[key];}}return clean;},getLength:function(){var length=0;for(var key in this){if(this.hasOwnProperty(key)){length++;}}return length;}});Hash.alias("forEach","each");Array.implement({forEach:function(fn,bind){for(var i=0,l=this.length;i<l;i++){fn.call(bind,this[i],i,this);}}});Array.alias("forEach","each");function $A(iterable){if(iterable.item){var l=iterable.length,array=new Array(l);while(l--){array[l]=iterable[l];}return array;}return Array.prototype.slice.call(iterable);}function $arguments(i){return function(){return arguments[i];};}function $chk(obj){return !!(obj||obj===0);}function $clear(timer){clearTimeout(timer);clearInterval(timer);return null;}function $defined(obj){return(obj!=undefined);}function $each(iterable,fn,bind){var type=$type(iterable);((type=="arguments"||type=="collection"||type=="array")?Array:Hash).each(iterable,fn,bind);}function $empty(){}function $extend(original,extended){for(var key in (extended||{})){original[key]=extended[key];}return original;}function $H(object){return new Hash(object);}function $lambda(value){return($type(value)=="function")?value:function(){return value;};}function $merge(){var args=Array.slice(arguments);args.unshift({});return $mixin.apply(null,args);}function $mixin(mix){for(var i=1,l=arguments.length;i<l;i++){var object=arguments[i];if($type(object)!="object"){continue;}for(var key in object){var op=object[key],mp=mix[key];mix[key]=(mp&&$type(op)=="object"&&$type(mp)=="object")?$mixin(mp,op):$unlink(op);}}return mix;}function $pick(){for(var i=0,l=arguments.length;i<l;i++){if(arguments[i]!=undefined){return arguments[i];}}return null;}function $random(min,max){return Math.floor(Math.random()*(max-min+1)+min);}function $splat(obj){var type=$type(obj);return(type)?((type!="array"&&type!="arguments")?[obj]:obj):[];}var $time=Date.now||function(){return +new Date;};function $try(){for(var i=0,l=arguments.length;i<l;i++){try{return arguments[i]();}catch(e){}}return null;}function $type(obj){if(obj==undefined){return false;}if(obj.$family){return(obj.$family.name=="number"&&!isFinite(obj))?false:obj.$family.name;}if(obj.nodeName){switch(obj.nodeType){case 1:return"element";case 3:return(/\S/).test(obj.nodeValue)?"textnode":"whitespace";}}else{if(typeof obj.length=="number"){if(obj.callee){return"arguments";}else{if(obj.item){return"collection";}}}}return typeof obj;}function $unlink(object){var unlinked;switch($type(object)){case"object":unlinked={};for(var p in object){unlinked[p]=$unlink(object[p]);}break;case"hash":unlinked=new Hash(object);break;case"array":unlinked=[];for(var i=0,l=object.length;i<l;i++){unlinked[i]=$unlink(object[i]);}break;default:return object;}return unlinked;}var Browser=$merge({Engine:{name:"unknown",version:0},Platform:{name:(window.orientation!=undefined)?"ipod":(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase()},Features:{xpath:!!(document.evaluate),air:!!(window.runtime),query:!!(document.querySelector)},Plugins:{},Engines:{presto:function(){return(!window.opera)?false:((arguments.callee.caller)?960:((document.getElementsByClassName)?950:925));},trident:function(){return(!window.ActiveXObject)?false:((window.XMLHttpRequest)?((document.querySelectorAll)?6:5):4);},webkit:function(){return(navigator.taintEnabled)?false:((Browser.Features.xpath)?((Browser.Features.query)?525:420):419);},gecko:function(){return(!document.getBoxObjectFor&&window.mozInnerScreenX==null)?false:((document.getElementsByClassName)?19:18);}}},Browser||{});Browser.Platform[Browser.Platform.name]=true;Browser.detect=function(){for(var engine in this.Engines){var version=this.Engines[engine]();if(version){this.Engine={name:engine,version:version};this.Engine[engine]=this.Engine[engine+version]=true;break;}}return{name:engine,version:version};};Browser.detect();Browser.Request=function(){return $try(function(){return new XMLHttpRequest();},function(){return new ActiveXObject("MSXML2.XMLHTTP");},function(){return new ActiveXObject("Microsoft.XMLHTTP");});};Browser.Features.xhr=!!(Browser.Request());Browser.Plugins.Flash=(function(){var version=($try(function(){return navigator.plugins["Shockwave Flash"].description;},function(){return new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version");})||"0 r0").match(/\d+/g);return{version:parseInt(version[0]||0+"."+version[1],10)||0,build:parseInt(version[2],10)||0};})();function $exec(text){if(!text){return text;}if(window.execScript){window.execScript(text);}else{var script=document.createElement("script");script.setAttribute("type","text/javascript");script[(Browser.Engine.webkit&&Browser.Engine.version<420)?"innerText":"text"]=text;document.head.appendChild(script);document.head.removeChild(script);}return text;}Native.UID=1;var $uid=(Browser.Engine.trident)?function(item){return(item.uid||(item.uid=[Native.UID++]))[0];}:function(item){return item.uid||(item.uid=Native.UID++);};var Window=new Native({name:"Window",legacy:(Browser.Engine.trident)?null:window.Window,initialize:function(win){$uid(win);if(!win.Element){win.Element=$empty;if(Browser.Engine.webkit){win.document.createElement("iframe");}win.Element.prototype=(Browser.Engine.webkit)?window["[[DOMElement.prototype]]"]:{};}win.document.window=win;return $extend(win,Window.Prototype);},afterImplement:function(property,value){window[property]=Window.Prototype[property]=value;}});Window.Prototype={$family:{name:"window"}};new Window(window);var Document=new Native({name:"Document",legacy:(Browser.Engine.trident)?null:window.Document,initialize:function(doc){$uid(doc);doc.head=doc.getElementsByTagName("head")[0];doc.html=doc.getElementsByTagName("html")[0];if(Browser.Engine.trident&&Browser.Engine.version<=4){$try(function(){doc.execCommand("BackgroundImageCache",false,true);});}if(Browser.Engine.trident){doc.window.attachEvent("onunload",function(){doc.window.detachEvent("onunload",arguments.callee);doc.head=doc.html=doc.window=null;});}return $extend(doc,Document.Prototype);},afterImplement:function(property,value){document[property]=Document.Prototype[property]=value;}});Document.Prototype={$family:{name:"document"}};new Document(document);Array.implement({every:function(fn,bind){for(var i=0,l=this.length;i<l;i++){if(!fn.call(bind,this[i],i,this)){return false;}}return true;},filter:function(fn,bind){var results=[];for(var i=0,l=this.length;i<l;i++){if(fn.call(bind,this[i],i,this)){results.push(this[i]);}}return results;},clean:function(){return this.filter($defined);},indexOf:function(item,from){var len=this.length;for(var i=(from<0)?Math.max(0,len+from):from||0;i<len;i++){if(this[i]===item){return i;}}return -1;},map:function(fn,bind){var results=[];for(var i=0,l=this.length;i<l;i++){results[i]=fn.call(bind,this[i],i,this);}return results;},some:function(fn,bind){for(var i=0,l=this.length;i<l;i++){if(fn.call(bind,this[i],i,this)){return true;}}return false;},associate:function(keys){var obj={},length=Math.min(this.length,keys.length);for(var i=0;i<length;i++){obj[keys[i]]=this[i];}return obj;},link:function(object){var result={};for(var i=0,l=this.length;i<l;i++){for(var key in object){if(object[key](this[i])){result[key]=this[i];delete object[key];break;}}}return result;},contains:function(item,from){return this.indexOf(item,from)!=-1;},extend:function(array){for(var i=0,j=array.length;i<j;i++){this.push(array[i]);}return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[$random(0,this.length-1)]:null;},include:function(item){if(!this.contains(item)){this.push(item);}return this;},combine:function(array){for(var i=0,l=array.length;i<l;i++){this.include(array[i]);}return this;},erase:function(item){for(var i=this.length;i--;i){if(this[i]===item){this.splice(i,1);}}return this;},empty:function(){this.length=0;return this;},flatten:function(){var array=[];for(var i=0,l=this.length;i<l;i++){var type=$type(this[i]);if(!type){continue;}array=array.concat((type=="array"||type=="collection"||type=="arguments")?Array.flatten(this[i]):this[i]);}return array;},hexToRgb:function(array){if(this.length!=3){return null;}var rgb=this.map(function(value){if(value.length==1){value+=value;}return value.toInt(16);});return(array)?rgb:"rgb("+rgb+")";},rgbToHex:function(array){if(this.length<3){return null;}if(this.length==4&&this[3]==0&&!array){return"transparent";}var hex=[];for(var i=0;i<3;i++){var bit=(this[i]-0).toString(16);hex.push((bit.length==1)?"0"+bit:bit);}return(array)?hex:"#"+hex.join("");}});Function.implement({extend:function(properties){for(var property in properties){this[property]=properties[property];}return this;},create:function(options){var self=this;options=options||{};return function(event){var args=options.arguments;args=(args!=undefined)?$splat(args):Array.slice(arguments,(options.event)?1:0);if(options.event){args=[event||window.event].extend(args);}var returns=function(){return self.apply(options.bind||null,args);};if(options.delay){return setTimeout(returns,options.delay);}if(options.periodical){return setInterval(returns,options.periodical);}if(options.attempt){return $try(returns);}return returns();};},run:function(args,bind){return this.apply(bind,$splat(args));},pass:function(args,bind){return this.create({bind:bind,arguments:args});},bind:function(bind,args){return this.create({bind:bind,arguments:args});},bindWithEvent:function(bind,args){return this.create({bind:bind,arguments:args,event:true});},attempt:function(args,bind){return this.create({bind:bind,arguments:args,attempt:true})();},delay:function(delay,bind,args){return this.create({bind:bind,arguments:args,delay:delay})();},periodical:function(periodical,bind,args){return this.create({bind:bind,arguments:args,periodical:periodical})();}});Number.implement({limit:function(min,max){return Math.min(max,Math.max(min,this));},round:function(precision){precision=Math.pow(10,precision||0);return Math.round(this*precision)/precision;},times:function(fn,bind){for(var i=0;i<this;i++){fn.call(bind,i,this);}},toFloat:function(){return parseFloat(this);},toInt:function(base){return parseInt(this,base||10);}});Number.alias("times","each");(function(math){var methods={};math.each(function(name){if(!Number[name]){methods[name]=function(){return Math[name].apply(null,[this].concat($A(arguments)));};}});Number.implement(methods);})(["abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","max","min","pow","sin","sqrt","tan"]);String.implement({test:function(regex,params){return((typeof regex=="string")?new RegExp(regex,params):regex).test(this);},contains:function(string,separator){return(separator)?(separator+this+separator).indexOf(separator+string+separator)>-1:this.indexOf(string)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim();},camelCase:function(){return this.replace(/-\D/g,function(match){return match.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(match){return("-"+match.charAt(0).toLowerCase());});},capitalize:function(){return this.replace(/\b[a-z]/g,function(match){return match.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1");},toInt:function(base){return parseInt(this,base||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(array){var hex=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(hex)?hex.slice(1).hexToRgb(array):null;},rgbToHex:function(array){var rgb=this.match(/\d{1,3}/g);return(rgb)?rgb.rgbToHex(array):null;},stripScripts:function(option){var scripts="";var text=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(){scripts+=arguments[1]+"\n";return"";});if(option===true){$exec(scripts);}else{if($type(option)=="function"){option(scripts,text);}}return text;},substitute:function(object,regexp){return this.replace(regexp||(/\\?\{([^{}]+)\}/g),function(match,name){if(match.charAt(0)=="\\"){return match.slice(1);}return(object[name]!=undefined)?object[name]:"";});}});Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(value){for(var key in this){if(this.hasOwnProperty(key)&&this[key]===value){return key;}}return null;},hasValue:function(value){return(Hash.keyOf(this,value)!==null);},extend:function(properties){Hash.each(properties||{},function(value,key){Hash.set(this,key,value);},this);return this;},combine:function(properties){Hash.each(properties||{},function(value,key){Hash.include(this,key,value);},this);return this;},erase:function(key){if(this.hasOwnProperty(key)){delete this[key];}return this;},get:function(key){return(this.hasOwnProperty(key))?this[key]:null;},set:function(key,value){if(!this[key]||this.hasOwnProperty(key)){this[key]=value;}return this;},empty:function(){Hash.each(this,function(value,key){delete this[key];},this);return this;},include:function(key,value){if(this[key]==undefined){this[key]=value;}return this;},map:function(fn,bind){var results=new Hash;Hash.each(this,function(value,key){results.set(key,fn.call(bind,value,key,this));},this);return results;},filter:function(fn,bind){var results=new Hash;Hash.each(this,function(value,key){if(fn.call(bind,value,key,this)){results.set(key,value);}},this);return results;},every:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)&&!fn.call(bind,this[key],key)){return false;}}return true;},some:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)&&fn.call(bind,this[key],key)){return true;}}return false;},getKeys:function(){var keys=[];Hash.each(this,function(value,key){keys.push(key);});return keys;},getValues:function(){var values=[];Hash.each(this,function(value){values.push(value);});return values;},toQueryString:function(base){var queryString=[];Hash.each(this,function(value,key){if(base){key=base+"["+key+"]";}var result;switch($type(value)){case"object":result=Hash.toQueryString(value,key);break;case"array":var qs={};value.each(function(val,i){qs[i]=val;});result=Hash.toQueryString(qs,key);break;default:result=key+"="+encodeURIComponent(value);}if(value!=undefined){queryString.push(result);}});return queryString.join("&");}});Hash.alias({keyOf:"indexOf",hasValue:"contains"});var Event=new Native({name:"Event",initialize:function(event,win){win=win||window;var doc=win.document;event=event||win.event;if(event.$extended){return event;}this.$extended=true;var type=event.type;var target=event.target||event.srcElement;while(target&&target.nodeType==3){target=target.parentNode;}if(type.test(/key/)){var code=event.which||event.keyCode;var key=Event.Keys.keyOf(code);if(type=="keydown"){var fKey=code-111;if(fKey>0&&fKey<13){key="f"+fKey;}}key=key||String.fromCharCode(code).toLowerCase();}else{if(type.match(/(click|mouse|menu)/i)){doc=(!doc.compatMode||doc.compatMode=="CSS1Compat")?doc.html:doc.body;var page={x:event.pageX||event.clientX+doc.scrollLeft,y:event.pageY||event.clientY+doc.scrollTop};var client={x:(event.pageX)?event.pageX-win.pageXOffset:event.clientX,y:(event.pageY)?event.pageY-win.pageYOffset:event.clientY};if(type.match(/DOMMouseScroll|mousewheel/)){var wheel=(event.wheelDelta)?event.wheelDelta/120:-(event.detail||0)/3;}var rightClick=(event.which==3)||(event.button==2);var related=null;if(type.match(/over|out/)){switch(type){case"mouseover":related=event.relatedTarget||event.fromElement;break;case"mouseout":related=event.relatedTarget||event.toElement;}if(!(function(){while(related&&related.nodeType==3){related=related.parentNode;}return true;}).create({attempt:Browser.Engine.gecko})()){related=false;}}}}return $extend(this,{event:event,type:type,page:page,client:client,rightClick:rightClick,wheel:wheel,relatedTarget:related,target:target,code:code,key:key,shift:event.shiftKey,control:event.ctrlKey,alt:event.altKey,meta:event.metaKey});}});Event.Keys=new Hash({"enter":13,"up":38,"down":40,"left":37,"right":39,"esc":27,"space":32,"backspace":8,"tab":9,"delete":46});Event.implement({stop:function(){return this.stopPropagation().preventDefault();},stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault();}else{this.event.returnValue=false;}return this;}});function Class(params){if(params instanceof Function){params={initialize:params};}var newClass=function(){Object.reset(this);if(newClass._prototyping){return this;}this._current=$empty;var value=(this.initialize)?this.initialize.apply(this,arguments):this;delete this._current;delete this.caller;return value;}.extend(this);newClass.implement(params);newClass.constructor=Class;newClass.prototype.constructor=newClass;return newClass;}Function.prototype.protect=function(){this._protected=true;return this;};Object.reset=function(object,key){if(key==null){for(var p in object){Object.reset(object,p);}return object;}delete object[key];switch($type(object[key])){case"object":var F=function(){};F.prototype=object[key];var i=new F;object[key]=Object.reset(i);break;case"array":object[key]=$unlink(object[key]);break;}return object;};new Native({name:"Class",initialize:Class}).extend({instantiate:function(F){F._prototyping=true;var proto=new F;delete F._prototyping;return proto;},wrap:function(self,key,method){if(method._origin){method=method._origin;}return function(){if(method._protected&&this._current==null){throw new Error('The method "'+key+'" cannot be called.');}var caller=this.caller,current=this._current;this.caller=current;this._current=arguments.callee;var result=method.apply(this,arguments);this._current=current;this.caller=caller;return result;}.extend({_owner:self,_origin:method,_name:key});}});Class.implement({implement:function(key,value){if($type(key)=="object"){for(var p in key){this.implement(p,key[p]);}return this;}var mutator=Class.Mutators[key];if(mutator){value=mutator.call(this,value);if(value==null){return this;}}var proto=this.prototype;switch($type(value)){case"function":if(value._hidden){return this;}proto[key]=Class.wrap(this,key,value);break;case"object":var previous=proto[key];if($type(previous)=="object"){$mixin(previous,value);}else{proto[key]=$unlink(value);}break;case"array":proto[key]=$unlink(value);break;default:proto[key]=value;}return this;}});Class.Mutators={Extends:function(parent){this.parent=parent;this.prototype=Class.instantiate(parent);this.implement("parent",function(){var name=this.caller._name,previous=this.caller._owner.parent.prototype[name];if(!previous){throw new Error('The method "'+name+'" has no parent.');}return previous.apply(this,arguments);}.protect());},Implements:function(items){$splat(items).each(function(item){if(item instanceof Function){item=Class.instantiate(item);}this.implement(item);},this);}};var Chain=new Class({$chain:[],chain:function(){this.$chain.extend(Array.flatten(arguments));return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty();return this;}});var Events=new Class({$events:{},addEvent:function(type,fn,internal){type=Events.removeOn(type);if(fn!=$empty){this.$events[type]=this.$events[type]||[];this.$events[type].include(fn);if(internal){fn.internal=true;}}return this;},addEvents:function(events){for(var type in events){this.addEvent(type,events[type]);}return this;},fireEvent:function(type,args,delay){type=Events.removeOn(type);if(!this.$events||!this.$events[type]){return this;}this.$events[type].each(function(fn){fn.create({"bind":this,"delay":delay,"arguments":args})();},this);return this;},removeEvent:function(type,fn){type=Events.removeOn(type);if(!this.$events[type]){return this;}if(!fn.internal){this.$events[type].erase(fn);}return this;},removeEvents:function(events){var type;if($type(events)=="object"){for(type in events){this.removeEvent(type,events[type]);}return this;}if(events){events=Events.removeOn(events);}for(type in this.$events){if(events&&events!=type){continue;}var fns=this.$events[type];for(var i=fns.length;i--;i){this.removeEvent(type,fns[i]);}}return this;}});Events.removeOn=function(string){return string.replace(/^on([A-Z])/,function(full,first){return first.toLowerCase();});};var Options=new Class({setOptions:function(){this.options=$merge.run([this.options].extend(arguments));if(!this.addEvent){return this;}for(var option in this.options){if($type(this.options[option])!="function"||!(/^on[A-Z]/).test(option)){continue;}this.addEvent(option,this.options[option]);delete this.options[option];}return this;}});var Element=new Native({name:"Element",legacy:window.Element,initialize:function(tag,props){var konstructor=Element.Constructors.get(tag);if(konstructor){return konstructor(props);}if(typeof tag=="string"){return document.newElement(tag,props);}return document.id(tag).set(props);},afterImplement:function(key,value){Element.Prototype[key]=value;if(Array[key]){return;}Elements.implement(key,function(){var items=[],elements=true;for(var i=0,j=this.length;i<j;i++){var returns=this[i][key].apply(this[i],arguments);items.push(returns);if(elements){elements=($type(returns)=="element");}}return(elements)?new Elements(items):items;});}});Element.Prototype={$family:{name:"element"}};Element.Constructors=new Hash;var IFrame=new Native({name:"IFrame",generics:false,initialize:function(){var params=Array.link(arguments,{properties:Object.type,iframe:$defined});var props=params.properties||{};var iframe=document.id(params.iframe);var onload=props.onload||$empty;delete props.onload;props.id=props.name=$pick(props.id,props.name,iframe?(iframe.id||iframe.name):"IFrame_"+$time());iframe=new Element(iframe||"iframe",props);var onFrameLoad=function(){var host=$try(function(){return iframe.contentWindow.location.host;});if(!host||host==window.location.host){var win=new Window(iframe.contentWindow);new Document(iframe.contentWindow.document);$extend(win.Element.prototype,Element.Prototype);}onload.call(iframe.contentWindow,iframe.contentWindow.document);};var contentWindow=$try(function(){return iframe.contentWindow;});((contentWindow&&contentWindow.document.body)||window.frames[props.id])?onFrameLoad():iframe.addListener("load",onFrameLoad);return iframe;}});var Elements=new Native({initialize:function(elements,options){options=$extend({ddup:true,cash:true},options);elements=elements||[];if(options.ddup||options.cash){var uniques={},returned=[];for(var i=0,l=elements.length;i<l;i++){var el=document.id(elements[i],!options.cash);if(options.ddup){if(uniques[el.uid]){continue;}uniques[el.uid]=true;}if(el){returned.push(el);}}elements=returned;}return(options.cash)?$extend(elements,this):elements;}});Elements.implement({filter:function(filter,bind){if(!filter){return this;}return new Elements(Array.filter(this,(typeof filter=="string")?function(item){return item.match(filter);}:filter,bind));}});Document.implement({newElement:function(tag,props){if(Browser.Engine.trident&&props){["name","type","checked"].each(function(attribute){if(!props[attribute]){return;}tag+=" "+attribute+'="'+props[attribute]+'"';if(attribute!="checked"){delete props[attribute];}});tag="<"+tag+">";}return document.id(this.createElement(tag)).set(props);},newTextNode:function(text){return this.createTextNode(text);},getDocument:function(){return this;},getWindow:function(){return this.window;},id:(function(){var types={string:function(id,nocash,doc){id=doc.getElementById(id);return(id)?types.element(id,nocash):null;},element:function(el,nocash){$uid(el);if(!nocash&&!el.$family&&!(/^object|embed$/i).test(el.tagName)){var proto=Element.Prototype;for(var p in proto){el[p]=proto[p];}}return el;},object:function(obj,nocash,doc){if(obj.toElement){return types.element(obj.toElement(doc),nocash);}return null;}};types.textnode=types.whitespace=types.window=types.document=$arguments(0);return function(el,nocash,doc){if(el&&el.$family&&el.uid){return el;}var type=$type(el);return(types[type])?types[type](el,nocash,doc||document):null;};})()});if(window.$==null){Window.implement({$:function(el,nc){return document.id(el,nc,this.document);}});}Window.implement({$$:function(selector){if(arguments.length==1&&typeof selector=="string"){return this.document.getElements(selector);}var elements=[];var args=Array.flatten(arguments);for(var i=0,l=args.length;i<l;i++){var item=args[i];switch($type(item)){case"element":elements.push(item);break;case"string":elements.extend(this.document.getElements(item,true));}}return new Elements(elements);},getDocument:function(){return this.document;},getWindow:function(){return this;}});Native.implement([Element,Document],{getElement:function(selector,nocash){return document.id(this.getElements(selector,true)[0]||null,nocash);},getElements:function(tags,nocash){tags=tags.split(",");var elements=[];var ddup=(tags.length>1);tags.each(function(tag){var partial=this.getElementsByTagName(tag.trim());(ddup)?elements.extend(partial):elements=partial;},this);return new Elements(elements,{ddup:ddup,cash:!nocash});}});(function(){var collected={},storage={};var props={input:"checked",option:"selected",textarea:(Browser.Engine.webkit&&Browser.Engine.version<420)?"innerHTML":"value"};var get=function(uid){return(storage[uid]||(storage[uid]={}));};var clean=function(item,retain){if(!item){return;}var uid=item.uid;if(Browser.Engine.trident){if(item.clearAttributes){var clone=retain&&item.cloneNode(false);item.clearAttributes();if(clone){item.mergeAttributes(clone);}}else{if(item.removeEvents){item.removeEvents();}}if((/object/i).test(item.tagName)){for(var p in item){if(typeof item[p]=="function"){item[p]=$empty;}}Element.dispose(item);}}if(!uid){return;}collected[uid]=storage[uid]=null;};var purge=function(){Hash.each(collected,clean);if(Browser.Engine.trident){$A(document.getElementsByTagName("object")).each(clean);}if(window.CollectGarbage){CollectGarbage();}collected=storage=null;};var walk=function(element,walk,start,match,all,nocash){var el=element[start||walk];var elements=[];while(el){if(el.nodeType==1&&(!match||Element.match(el,match))){if(!all){return document.id(el,nocash);}elements.push(el);}el=el[walk];}return(all)?new Elements(elements,{ddup:false,cash:!nocash}):null;};var attributes={"html":"innerHTML","class":"className","for":"htmlFor","defaultValue":"defaultValue","text":(Browser.Engine.trident||(Browser.Engine.webkit&&Browser.Engine.version<420))?"innerText":"textContent"};var bools=["compact","nowrap","ismap","declare","noshade","checked","disabled","readonly","multiple","selected","noresize","defer"];var camels=["value","type","defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"];bools=bools.associate(bools);Hash.extend(attributes,bools);Hash.extend(attributes,camels.associate(camels.map(String.toLowerCase)));var inserters={before:function(context,element){if(element.parentNode){element.parentNode.insertBefore(context,element);}},after:function(context,element){if(!element.parentNode){return;}var next=element.nextSibling;(next)?element.parentNode.insertBefore(context,next):element.parentNode.appendChild(context);},bottom:function(context,element){element.appendChild(context);},top:function(context,element){var first=element.firstChild;(first)?element.insertBefore(context,first):element.appendChild(context);}};inserters.inside=inserters.bottom;Hash.each(inserters,function(inserter,where){where=where.capitalize();Element.implement("inject"+where,function(el){inserter(this,document.id(el,true));return this;});Element.implement("grab"+where,function(el){inserter(document.id(el,true),this);return this;});});Element.implement({set:function(prop,value){switch($type(prop)){case"object":for(var p in prop){this.set(p,prop[p]);}break;case"string":var property=Element.Properties.get(prop);(property&&property.set)?property.set.apply(this,Array.slice(arguments,1)):this.setProperty(prop,value);}return this;},get:function(prop){var property=Element.Properties.get(prop);return(property&&property.get)?property.get.apply(this,Array.slice(arguments,1)):this.getProperty(prop);},erase:function(prop){var property=Element.Properties.get(prop);(property&&property.erase)?property.erase.apply(this):this.removeProperty(prop);return this;},setProperty:function(attribute,value){var key=attributes[attribute];if(value==undefined){return this.removeProperty(attribute);}if(key&&bools[attribute]){value=!!value;}(key)?this[key]=value:this.setAttribute(attribute,""+value);return this;},setProperties:function(attributes){for(var attribute in attributes){this.setProperty(attribute,attributes[attribute]);}return this;},getProperty:function(attribute){var key=attributes[attribute];var value=(key)?this[key]:this.getAttribute(attribute,2);return(bools[attribute])?!!value:(key)?value:value||null;},getProperties:function(){var args=$A(arguments);return args.map(this.getProperty,this).associate(args);},removeProperty:function(attribute){var key=attributes[attribute];(key)?this[key]=(key&&bools[attribute])?false:"":this.removeAttribute(attribute);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;},hasClass:function(className){return this.className.contains(className," ");},addClass:function(className){if(!this.hasClass(className)){this.className=(this.className+" "+className).clean();}return this;},removeClass:function(className){this.className=this.className.replace(new RegExp("(^|\\s)"+className+"(?:\\s|$)"),"$1");return this;},toggleClass:function(className){return this.hasClass(className)?this.removeClass(className):this.addClass(className);},adopt:function(){Array.flatten(arguments).each(function(element){element=document.id(element,true);if(element){this.appendChild(element);}},this);return this;},appendText:function(text,where){return this.grab(this.getDocument().newTextNode(text),where);},grab:function(el,where){inserters[where||"bottom"](document.id(el,true),this);return this;},inject:function(el,where){inserters[where||"bottom"](this,document.id(el,true));return this;},replaces:function(el){el=document.id(el,true);el.parentNode.replaceChild(this,el);return this;},wraps:function(el,where){el=document.id(el,true);return this.replaces(el).grab(el,where);},getPrevious:function(match,nocash){return walk(this,"previousSibling",null,match,false,nocash);},getAllPrevious:function(match,nocash){return walk(this,"previousSibling",null,match,true,nocash);},getNext:function(match,nocash){return walk(this,"nextSibling",null,match,false,nocash);},getAllNext:function(match,nocash){return walk(this,"nextSibling",null,match,true,nocash);},getFirst:function(match,nocash){return walk(this,"nextSibling","firstChild",match,false,nocash);},getLast:function(match,nocash){return walk(this,"previousSibling","lastChild",match,false,nocash);},getParent:function(match,nocash){return walk(this,"parentNode",null,match,false,nocash);},getParents:function(match,nocash){return walk(this,"parentNode",null,match,true,nocash);},getSiblings:function(match,nocash){return this.getParent().getChildren(match,nocash).erase(this);},getChildren:function(match,nocash){return walk(this,"nextSibling","firstChild",match,true,nocash);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;},getElementById:function(id,nocash){var el=this.ownerDocument.getElementById(id);if(!el){return null;}for(var parent=el.parentNode;parent!=this;parent=parent.parentNode){if(!parent){return null;}}return document.id(el,nocash);},getSelected:function(){return new Elements($A(this.options).filter(function(option){return option.selected;}));},getComputedStyle:function(property){if(this.currentStyle){return this.currentStyle[property.camelCase()];}var computed=this.getDocument().defaultView.getComputedStyle(this,null);return(computed)?computed.getPropertyValue([property.hyphenate()]):null;},toQueryString:function(){var queryString=[];this.getElements("input, select, textarea",true).each(function(el){if(!el.name||el.disabled||el.type=="submit"||el.type=="reset"||el.type=="file"){return;}var value=(el.tagName.toLowerCase()=="select")?Element.getSelected(el).map(function(opt){return opt.value;}):((el.type=="radio"||el.type=="checkbox")&&!el.checked)?null:el.value;$splat(value).each(function(val){if(typeof val!="undefined"){queryString.push(el.name+"="+encodeURIComponent(val));}});});return queryString.join("&");},clone:function(contents,keepid){contents=contents!==false;var clone=this.cloneNode(contents);var clean=function(node,element){if(!keepid){node.removeAttribute("id");}if(Browser.Engine.trident){node.clearAttributes();node.mergeAttributes(element);node.removeAttribute("uid");if(node.options){var no=node.options,eo=element.options;for(var j=no.length;j--;){no[j].selected=eo[j].selected;}}}var prop=props[element.tagName.toLowerCase()];if(prop&&element[prop]){node[prop]=element[prop];}};if(contents){var ce=clone.getElementsByTagName("*"),te=this.getElementsByTagName("*");for(var i=ce.length;i--;){clean(ce[i],te[i]);}}clean(clone,this);return document.id(clone);},destroy:function(){Element.empty(this);Element.dispose(this);clean(this,true);return null;},empty:function(){$A(this.childNodes).each(function(node){Element.destroy(node);});return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;},hasChild:function(el){el=document.id(el,true);if(!el){return false;}if(Browser.Engine.webkit&&Browser.Engine.version<420){return $A(this.getElementsByTagName(el.tagName)).contains(el);}return(this.contains)?(this!=el&&this.contains(el)):!!(this.compareDocumentPosition(el)&16);},match:function(tag){return(!tag||(tag==this)||(Element.get(this,"tag")==tag));}});Native.implement([Element,Window,Document],{addListener:function(type,fn){if(type=="unload"){var old=fn,self=this;fn=function(){self.removeListener("unload",fn);old();};}else{collected[this.uid]=this;}if(this.addEventListener){this.addEventListener(type,fn,false);}else{this.attachEvent("on"+type,fn);}return this;},removeListener:function(type,fn){if(this.removeEventListener){this.removeEventListener(type,fn,false);}else{this.detachEvent("on"+type,fn);}return this;},retrieve:function(property,dflt){var storage=get(this.uid),prop=storage[property];if(dflt!=undefined&&prop==undefined){prop=storage[property]=dflt;}return $pick(prop);},store:function(property,value){var storage=get(this.uid);storage[property]=value;return this;},eliminate:function(property){var storage=get(this.uid);delete storage[property];return this;}});window.addListener("unload",purge);})();Element.Properties=new Hash;Element.Properties.style={set:function(style){this.style.cssText=style;},get:function(){return this.style.cssText;},erase:function(){this.style.cssText="";}};Element.Properties.tag={get:function(){return this.tagName.toLowerCase();}};Element.Properties.html=(function(){var wrapper=document.createElement("div");var translations={table:[1,"<table>","</table>"],select:[1,"<select>","</select>"],tbody:[2,"<table><tbody>","</tbody></table>"],tr:[3,"<table><tbody><tr>","</tr></tbody></table>"]};translations.thead=translations.tfoot=translations.tbody;var html={set:function(){var html=Array.flatten(arguments).join("");var wrap=Browser.Engine.trident&&translations[this.get("tag")];if(wrap){var first=wrapper;first.innerHTML=wrap[1]+html+wrap[2];for(var i=wrap[0];i--;){first=first.firstChild;}this.empty().adopt(first.childNodes);}else{this.innerHTML=html;}}};html.erase=html.set;return html;})();if(Browser.Engine.webkit&&Browser.Engine.version<420){Element.Properties.text={get:function(){if(this.innerText){return this.innerText;}var temp=this.ownerDocument.newElement("div",{html:this.innerHTML}).inject(this.ownerDocument.body);var text=temp.innerText;temp.destroy();return text;}};}Element.Properties.events={set:function(events){this.addEvents(events);}};Native.implement([Element,Window,Document],{addEvent:function(type,fn){var events=this.retrieve("events",{});events[type]=events[type]||{"keys":[],"values":[]};if(events[type].keys.contains(fn)){return this;}events[type].keys.push(fn);var realType=type,custom=Element.Events.get(type),condition=fn,self=this;if(custom){if(custom.onAdd){custom.onAdd.call(this,fn);}if(custom.condition){condition=function(event){if(custom.condition.call(this,event)){return fn.call(this,event);}return true;};}realType=custom.base||realType;}var defn=function(){return fn.call(self);};var nativeEvent=Element.NativeEvents[realType];if(nativeEvent){if(nativeEvent==2){defn=function(event){event=new Event(event,self.getWindow());if(condition.call(self,event)===false){event.stop();}};}this.addListener(realType,defn);}events[type].values.push(defn);return this;},removeEvent:function(type,fn){var events=this.retrieve("events");if(!events||!events[type]){return this;}var pos=events[type].keys.indexOf(fn);if(pos==-1){return this;}events[type].keys.splice(pos,1);var value=events[type].values.splice(pos,1)[0];var custom=Element.Events.get(type);if(custom){if(custom.onRemove){custom.onRemove.call(this,fn);}type=custom.base||type;}return(Element.NativeEvents[type])?this.removeListener(type,value):this;},addEvents:function(events){for(var event in events){this.addEvent(event,events[event]);}return this;},removeEvents:function(events){var type;if($type(events)=="object"){for(type in events){this.removeEvent(type,events[type]);}return this;}var attached=this.retrieve("events");if(!attached){return this;}if(!events){for(type in attached){this.removeEvents(type);}this.eliminate("events");}else{if(attached[events]){while(attached[events].keys[0]){this.removeEvent(events,attached[events].keys[0]);}attached[events]=null;}}return this;},fireEvent:function(type,args,delay){var events=this.retrieve("events");if(!events||!events[type]){return this;}events[type].keys.each(function(fn){fn.create({"bind":this,"delay":delay,"arguments":args})();},this);return this;},cloneEvents:function(from,type){from=document.id(from);var fevents=from.retrieve("events");if(!fevents){return this;}if(!type){for(var evType in fevents){this.cloneEvents(from,evType);}}else{if(fevents[type]){fevents[type].keys.each(function(fn){this.addEvent(type,fn);},this);}}return this;}});Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:1,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1};(function(){var $check=function(event){var related=event.relatedTarget;if(related==undefined){return true;}if(related===false){return false;}return($type(this)!="document"&&related!=this&&related.prefix!="xul"&&!this.hasChild(related));};Element.Events=new Hash({mouseenter:{base:"mouseover",condition:$check},mouseleave:{base:"mouseout",condition:$check},mousewheel:{base:(Browser.Engine.gecko)?"DOMMouseScroll":"mousewheel"}});})();Element.Properties.styles={set:function(styles){this.setStyles(styles);}};Element.Properties.opacity={set:function(opacity,novisibility){if(!novisibility){if(opacity==0){if(this.style.visibility!="hidden"){this.style.visibility="hidden";}}else{if(this.style.visibility!="visible"){this.style.visibility="visible";}}}if(!this.currentStyle||!this.currentStyle.hasLayout){this.style.zoom=1;}if(Browser.Engine.trident){this.style.filter=(opacity==1)?"":"alpha(opacity="+opacity*100+")";}this.style.opacity=opacity;this.store("opacity",opacity);},get:function(){return this.retrieve("opacity",1);}};Element.implement({setOpacity:function(value){return this.set("opacity",value,true);},getOpacity:function(){return this.get("opacity");},setStyle:function(property,value){switch(property){case"opacity":return this.set("opacity",parseFloat(value));case"float":property=(Browser.Engine.trident)?"styleFloat":"cssFloat";}property=property.camelCase();if($type(value)!="string"){var map=(Element.Styles.get(property)||"@").split(" ");value=$splat(value).map(function(val,i){if(!map[i]){return"";}return($type(val)=="number")?map[i].replace("@",Math.round(val)):val;}).join(" ");}else{if(value==String(Number(value))){value=Math.round(value);}}this.style[property]=value;return this;},getStyle:function(property){switch(property){case"opacity":return this.get("opacity");case"float":property=(Browser.Engine.trident)?"styleFloat":"cssFloat";}property=property.camelCase();var result=this.style[property];if(!$chk(result)){result=[];for(var style in Element.ShortStyles){if(property!=style){continue;}for(var s in Element.ShortStyles[style]){result.push(this.getStyle(s));}return result.join(" ");}result=this.getComputedStyle(property);}if(result){result=String(result);var color=result.match(/rgba?\([\d\s,]+\)/);if(color){result=result.replace(color[0],color[0].rgbToHex());}}if(Browser.Engine.presto||(Browser.Engine.trident&&!$chk(parseInt(result,10)))){if(property.test(/^(height|width)$/)){var values=(property=="width")?["left","right"]:["top","bottom"],size=0;values.each(function(value){size+=this.getStyle("border-"+value+"-width").toInt()+this.getStyle("padding-"+value).toInt();},this);return this["offset"+property.capitalize()]-size+"px";}if((Browser.Engine.presto)&&String(result).test("px")){return result;}if(property.test(/(border(.+)Width|margin|padding)/)){return"0px";}}return result;},setStyles:function(styles){for(var style in styles){this.setStyle(style,styles[style]);}return this;},getStyles:function(){var result={};Array.flatten(arguments).each(function(key){result[key]=this.getStyle(key);},this);return result;}});Element.Styles=new Hash({left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@","zoom":"@",fontWeight:"@",textIndent:"@px",opacity:"@"});Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};["Top","Right","Bottom","Left"].each(function(direction){var Short=Element.ShortStyles;var All=Element.Styles;["margin","padding"].each(function(style){var sd=style+direction;Short[style][sd]=All[sd]="@px";});var bd="border"+direction;Short.border[bd]=All[bd]="@px @ rgb(@, @, @)";var bdw=bd+"Width",bds=bd+"Style",bdc=bd+"Color";Short[bd]={};Short.borderWidth[bdw]=Short[bd][bdw]=All[bdw]="@px";Short.borderStyle[bds]=Short[bd][bds]=All[bds]="@";Short.borderColor[bdc]=Short[bd][bdc]=All[bdc]="rgb(@, @, @)";});(function(){Element.implement({scrollTo:function(x,y){if(isBody(this)){this.getWindow().scrollTo(x,y);}else{this.scrollLeft=x;this.scrollTop=y;}return this;},getSize:function(){if(isBody(this)){return this.getWindow().getSize();}return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(isBody(this)){return this.getWindow().getScrollSize();}return{x:this.scrollWidth,y:this.scrollHeight};},getScroll:function(){if(isBody(this)){return this.getWindow().getScroll();}return{x:this.scrollLeft,y:this.scrollTop};},getScrolls:function(){var element=this,position={x:0,y:0};while(element&&!isBody(element)){position.x+=element.scrollLeft;position.y+=element.scrollTop;element=element.parentNode;}return position;},getOffsetParent:function(){var element=this;if(isBody(element)){return null;}if(!Browser.Engine.trident){return element.offsetParent;}while((element=element.parentNode)&&!isBody(element)){if(styleString(element,"position")!="static"){return element;}}return null;},getOffsets:function(){if(this.getBoundingClientRect){var bound=this.getBoundingClientRect(),html=document.id(this.getDocument().documentElement),htmlScroll=html.getScroll(),elemScrolls=this.getScrolls(),elemScroll=this.getScroll(),isFixed=(styleString(this,"position")=="fixed");return{x:bound.left.toInt()+elemScrolls.x-elemScroll.x+((isFixed)?0:htmlScroll.x)-html.clientLeft,y:bound.top.toInt()+elemScrolls.y-elemScroll.y+((isFixed)?0:htmlScroll.y)-html.clientTop};}var element=this,position={x:0,y:0};if(isBody(this)){return position;}while(element&&!isBody(element)){position.x+=element.offsetLeft;position.y+=element.offsetTop;if(Browser.Engine.gecko){if(!borderBox(element)){position.x+=leftBorder(element);position.y+=topBorder(element);}var parent=element.parentNode;if(parent&&styleString(parent,"overflow")!="visible"){position.x+=leftBorder(parent);position.y+=topBorder(parent);}}else{if(element!=this&&Browser.Engine.webkit){position.x+=leftBorder(element);position.y+=topBorder(element);}}element=element.offsetParent;}if(Browser.Engine.gecko&&!borderBox(this)){position.x-=leftBorder(this);position.y-=topBorder(this);}return position;},getPosition:function(relative){if(isBody(this)){return{x:0,y:0};}var offset=this.getOffsets(),scroll=this.getScrolls();var position={x:offset.x-scroll.x,y:offset.y-scroll.y};var relativePosition=(relative&&(relative=document.id(relative)))?relative.getPosition():{x:0,y:0};return{x:position.x-relativePosition.x,y:position.y-relativePosition.y};},getCoordinates:function(element){if(isBody(this)){return this.getWindow().getCoordinates();}var position=this.getPosition(element),size=this.getSize();var obj={left:position.x,top:position.y,width:size.x,height:size.y};obj.right=obj.left+obj.width;obj.bottom=obj.top+obj.height;return obj;},computePosition:function(obj){return{left:obj.x-styleNumber(this,"margin-left"),top:obj.y-styleNumber(this,"margin-top")};},setPosition:function(obj){return this.setStyles(this.computePosition(obj));}});Native.implement([Document,Window],{getSize:function(){if(Browser.Engine.presto||Browser.Engine.webkit){var win=this.getWindow();return{x:win.innerWidth,y:win.innerHeight};}var doc=getCompatElement(this);return{x:doc.clientWidth,y:doc.clientHeight};},getScroll:function(){var win=this.getWindow(),doc=getCompatElement(this);return{x:win.pageXOffset||doc.scrollLeft,y:win.pageYOffset||doc.scrollTop};},getScrollSize:function(){var doc=getCompatElement(this),min=this.getSize();return{x:Math.max(doc.scrollWidth,min.x),y:Math.max(doc.scrollHeight,min.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var size=this.getSize();return{top:0,left:0,bottom:size.y,right:size.x,height:size.y,width:size.x};}});var styleString=Element.getComputedStyle;function styleNumber(element,style){return styleString(element,style).toInt()||0;}function borderBox(element){return styleString(element,"-moz-box-sizing")=="border-box";}function topBorder(element){return styleNumber(element,"border-top-width");}function leftBorder(element){return styleNumber(element,"border-left-width");}function isBody(element){return(/^(?:body|html)$/i).test(element.tagName);}function getCompatElement(element){var doc=element.getDocument();return(!doc.compatMode||doc.compatMode=="CSS1Compat")?doc.html:doc.body;}})();Element.alias("setPosition","position");Native.implement([Window,Document,Element],{getHeight:function(){return this.getSize().y;},getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x;},getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y;},getLeft:function(){return this.getPosition().x;}});Native.implement([Document,Element],{getElements:function(expression,nocash){expression=expression.split(",");var items,local={};for(var i=0,l=expression.length;i<l;i++){var selector=expression[i],elements=Selectors.Utils.search(this,selector,local);if(i!=0&&elements.item){elements=$A(elements);}items=(i==0)?elements:(items.item)?$A(items).concat(elements):items.concat(elements);}return new Elements(items,{ddup:(expression.length>1),cash:!nocash});}});Element.implement({match:function(selector){if(!selector||(selector==this)){return true;}var tagid=Selectors.Utils.parseTagAndID(selector);var tag=tagid[0],id=tagid[1];if(!Selectors.Filters.byID(this,id)||!Selectors.Filters.byTag(this,tag)){return false;}var parsed=Selectors.Utils.parseSelector(selector);return(parsed)?Selectors.Utils.filter(this,parsed,{}):true;}});var Selectors={Cache:{nth:{},parsed:{}}};Selectors.RegExps={id:(/#([\w-]+)/),tag:(/^(\w+|\*)/),quick:(/^(\w+|\*)$/),splitter:(/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),combined:(/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)};Selectors.Utils={chk:function(item,uniques){if(!uniques){return true;}var uid=$uid(item);if(!uniques[uid]){return uniques[uid]=true;}return false;},parseNthArgument:function(argument){if(Selectors.Cache.nth[argument]){return Selectors.Cache.nth[argument];}var parsed=argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);if(!parsed){return false;}var inta=parseInt(parsed[1],10);var a=(inta||inta===0)?inta:1;var special=parsed[2]||false;var b=parseInt(parsed[3],10)||0;if(a!=0){b--;while(b<1){b+=a;}while(b>=a){b-=a;}}else{a=b;special="index";}switch(special){case"n":parsed={a:a,b:b,special:"n"};break;case"odd":parsed={a:2,b:0,special:"n"};break;case"even":parsed={a:2,b:1,special:"n"};break;case"first":parsed={a:0,special:"index"};break;case"last":parsed={special:"last-child"};break;case"only":parsed={special:"only-child"};break;default:parsed={a:(a-1),special:"index"};}return Selectors.Cache.nth[argument]=parsed;},parseSelector:function(selector){if(Selectors.Cache.parsed[selector]){return Selectors.Cache.parsed[selector];}var m,parsed={classes:[],pseudos:[],attributes:[]};while((m=Selectors.RegExps.combined.exec(selector))){var cn=m[1],an=m[2],ao=m[3],av=m[5],pn=m[6],pa=m[7];if(cn){parsed.classes.push(cn);}else{if(pn){var parser=Selectors.Pseudo.get(pn);if(parser){parsed.pseudos.push({parser:parser,argument:pa});}else{parsed.attributes.push({name:pn,operator:"=",value:pa});}}else{if(an){parsed.attributes.push({name:an,operator:ao,value:av});}}}}if(!parsed.classes.length){delete parsed.classes;}if(!parsed.attributes.length){delete parsed.attributes;}if(!parsed.pseudos.length){delete parsed.pseudos;}if(!parsed.classes&&!parsed.attributes&&!parsed.pseudos){parsed=null;}return Selectors.Cache.parsed[selector]=parsed;},parseTagAndID:function(selector){var tag=selector.match(Selectors.RegExps.tag);var id=selector.match(Selectors.RegExps.id);return[(tag)?tag[1]:"*",(id)?id[1]:false];},filter:function(item,parsed,local){var i;if(parsed.classes){for(i=parsed.classes.length;i--;i){var cn=parsed.classes[i];if(!Selectors.Filters.byClass(item,cn)){return false;}}}if(parsed.attributes){for(i=parsed.attributes.length;i--;i){var att=parsed.attributes[i];if(!Selectors.Filters.byAttribute(item,att.name,att.operator,att.value)){return false;}}}if(parsed.pseudos){for(i=parsed.pseudos.length;i--;i){var psd=parsed.pseudos[i];if(!Selectors.Filters.byPseudo(item,psd.parser,psd.argument,local)){return false;}}}return true;},getByTagAndID:function(ctx,tag,id){if(id){var item=(ctx.getElementById)?ctx.getElementById(id,true):Element.getElementById(ctx,id,true);return(item&&Selectors.Filters.byTag(item,tag))?[item]:[];}else{return ctx.getElementsByTagName(tag);}},search:function(self,expression,local){var splitters=[];var selectors=expression.trim().replace(Selectors.RegExps.splitter,function(m0,m1,m2){splitters.push(m1);return":)"+m2;}).split(":)");var items,filtered,item;for(var i=0,l=selectors.length;i<l;i++){var selector=selectors[i];if(i==0&&Selectors.RegExps.quick.test(selector)){items=self.getElementsByTagName(selector);continue;}var splitter=splitters[i-1];var tagid=Selectors.Utils.parseTagAndID(selector);var tag=tagid[0],id=tagid[1];if(i==0){items=Selectors.Utils.getByTagAndID(self,tag,id);}else{var uniques={},found=[];for(var j=0,k=items.length;j<k;j++){found=Selectors.Getters[splitter](found,items[j],tag,id,uniques);}items=found;}var parsed=Selectors.Utils.parseSelector(selector);if(parsed){filtered=[];for(var m=0,n=items.length;m<n;m++){item=items[m];if(Selectors.Utils.filter(item,parsed,local)){filtered.push(item);}}items=filtered;}}return items;}};Selectors.Getters={" ":function(found,self,tag,id,uniques){var items=Selectors.Utils.getByTagAndID(self,tag,id);for(var i=0,l=items.length;i<l;i++){var item=items[i];if(Selectors.Utils.chk(item,uniques)){found.push(item);}}return found;},">":function(found,self,tag,id,uniques){var children=Selectors.Utils.getByTagAndID(self,tag,id);for(var i=0,l=children.length;i<l;i++){var child=children[i];if(child.parentNode==self&&Selectors.Utils.chk(child,uniques)){found.push(child);}}return found;},"+":function(found,self,tag,id,uniques){while((self=self.nextSibling)){if(self.nodeType==1){if(Selectors.Utils.chk(self,uniques)&&Selectors.Filters.byTag(self,tag)&&Selectors.Filters.byID(self,id)){found.push(self);}break;}}return found;},"~":function(found,self,tag,id,uniques){while((self=self.nextSibling)){if(self.nodeType==1){if(!Selectors.Utils.chk(self,uniques)){break;}if(Selectors.Filters.byTag(self,tag)&&Selectors.Filters.byID(self,id)){found.push(self);}}}return found;}};Selectors.Filters={byTag:function(self,tag){return(tag=="*"||(self.tagName&&self.tagName.toLowerCase()==tag));},byID:function(self,id){return(!id||(self.id&&self.id==id));},byClass:function(self,klass){return(self.className&&self.className.contains&&self.className.contains(klass," "));},byPseudo:function(self,parser,argument,local){return parser.call(self,argument,local);},byAttribute:function(self,name,operator,value){var result=Element.prototype.getProperty.call(self,name);if(!result){return(operator=="!=");}if(!operator||value==undefined){return true;}switch(operator){case"=":return(result==value);case"*=":return(result.contains(value));case"^=":return(result.substr(0,value.length)==value);case"$=":return(result.substr(result.length-value.length)==value);case"!=":return(result!=value);case"~=":return result.contains(value," ");case"|=":return result.contains(value,"-");}return false;}};Selectors.Pseudo=new Hash({checked:function(){return this.checked;},empty:function(){return !(this.innerText||this.textContent||"").length;},not:function(selector){return !Element.match(this,selector);},contains:function(text){return(this.innerText||this.textContent||"").contains(text);},"first-child":function(){return Selectors.Pseudo.index.call(this,0);},"last-child":function(){var element=this;while((element=element.nextSibling)){if(element.nodeType==1){return false;}}return true;},"only-child":function(){var prev=this;while((prev=prev.previousSibling)){if(prev.nodeType==1){return false;}}var next=this;while((next=next.nextSibling)){if(next.nodeType==1){return false;}}return true;},"nth-child":function(argument,local){argument=(argument==undefined)?"n":argument;var parsed=Selectors.Utils.parseNthArgument(argument);if(parsed.special!="n"){return Selectors.Pseudo[parsed.special].call(this,parsed.a,local);}var count=0;local.positions=local.positions||{};var uid=$uid(this);if(!local.positions[uid]){var self=this;while((self=self.previousSibling)){if(self.nodeType!=1){continue;}count++;var position=local.positions[$uid(self)];if(position!=undefined){count=position+count;break;}}local.positions[uid]=count;}return(local.positions[uid]%parsed.a==parsed.b);},index:function(index){var element=this,count=0;while((element=element.previousSibling)){if(element.nodeType==1&&++count>index){return false;}}return(count==index);},even:function(argument,local){return Selectors.Pseudo["nth-child"].call(this,"2n+1",local);},odd:function(argument,local){return Selectors.Pseudo["nth-child"].call(this,"2n",local);},selected:function(){return this.selected;},enabled:function(){return(this.disabled===false);}});Element.Events.domready={onAdd:function(fn){if(Browser.loaded){fn.call(this);}}};(function(){var domready=function(){if(Browser.loaded){return;}Browser.loaded=true;window.fireEvent("domready");document.fireEvent("domready");};window.addEvent("load",domready);if(Browser.Engine.trident){var temp=document.createElement("div");(function(){($try(function(){temp.doScroll();return document.id(temp).inject(document.body).set("html","temp").dispose();}))?domready():arguments.callee.delay(50);})();}else{if(Browser.Engine.webkit&&Browser.Engine.version<525){(function(){(["loaded","complete"].contains(document.readyState))?domready():arguments.callee.delay(50);})();}else{document.addEvent("DOMContentLoaded",domready);}}})();var JSON=new Hash(this.JSON&&{stringify:JSON.stringify,parse:JSON.parse}).extend({$specialChars:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},$replaceChars:function(chr){return JSON.$specialChars[chr]||"\\u00"+Math.floor(chr.charCodeAt()/16).toString(16)+(chr.charCodeAt()%16).toString(16);},encode:function(obj){switch($type(obj)){case"string":return'"'+obj.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"';case"array":return"["+String(obj.map(JSON.encode).clean())+"]";case"object":case"hash":var string=[];Hash.each(obj,function(value,key){var json=JSON.encode(value);if(json){string.push(JSON.encode(key)+":"+json);}});return"{"+string+"}";case"number":case"boolean":return String(obj);case false:return"null";}return null;},decode:function(string,secure){if($type(string)!="string"||!string.length){return null;}if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""))){return null;}return eval("("+string+")");}});Native.implement([Hash,Array,String,Number],{toJSON:function(){return JSON.encode(this);}});var Cookie=new Class({Implements:Options,options:{path:false,domain:false,duration:false,secure:false,document:document},initialize:function(key,options){this.key=key;this.setOptions(options);},write:function(value){value=encodeURIComponent(value);if(this.options.domain){value+="; domain="+this.options.domain;}if(this.options.path){value+="; path="+this.options.path;}if(this.options.duration){var date=new Date();date.setTime(date.getTime()+this.options.duration*24*60*60*1000);value+="; expires="+date.toGMTString();}if(this.options.secure){value+="; secure";}this.options.document.cookie=this.key+"="+value;return this;},read:function(){var value=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)");return(value)?decodeURIComponent(value[1]):null;},dispose:function(){new Cookie(this.key,$merge(this.options,{duration:-1})).write("");return this;}});Cookie.write=function(key,value,options){return new Cookie(key,options).write(value);};Cookie.read=function(key){return new Cookie(key).read();};Cookie.dispose=function(key,options){return new Cookie(key,options).dispose();};var Swiff=new Class({Implements:[Options],options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"transparent",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object;},initialize:function(path,options){this.instance="Swiff_"+$time();this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance;var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks;var properties=$extend({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments);};})(callBacks[callBack]);vars[callBack]="Swiff.CallBacks."+this.instance+"."+callBack;}params.flashVars=Hash.toQueryString(vars);if(Browser.Engine.trident){properties.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";params.movie=path;}else{properties.type="application/x-shockwave-flash";properties.data=path;}var build='<object id="'+id+'"';for(var property in properties){build+=" "+property+'="'+properties[property]+'"';}build+=">";for(var param in params){if(params[param]){build+='<param name="'+param+'" value="'+params[param]+'" />';}}build+="</object>";this.object=((container)?container.empty():new Element("div")).set("html",build).firstChild;},replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this;},inject:function(element){document.id(element,true).appendChild(this.toElement());return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+"</invoke>");return eval(rs);};var Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:"ignore"},initialize:function(options){this.subject=this.subject||this;this.setOptions(options);this.options.duration=Fx.Durations[this.options.duration]||this.options.duration.toInt();var wait=this.options.wait;if(wait===false){this.options.link="cancel";}},getTransition:function(){return function(p){return -(Math.cos(Math.PI*p)-1)/2;};},step:function(){var time=$time();if(time<this.time+this.options.duration){var delta=this.transition((time-this.time)/this.options.duration);this.set(this.compute(this.from,this.to,delta));}else{this.set(this.compute(this.from,this.to,1));this.complete();}},set:function(now){return now;},compute:function(from,to,delta){return Fx.compute(from,to,delta);},check:function(){if(!this.timer){return true;}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.bind(this,arguments));return false;}return false;},start:function(from,to){if(!this.check(from,to)){return this;}this.from=from;this.to=to;this.time=0;this.transition=this.getTransition();this.startTimer();this.onStart();return this;},complete:function(){if(this.stopTimer()){this.onComplete();}return this;},cancel:function(){if(this.stopTimer()){this.onCancel();}return this;},onStart:function(){this.fireEvent("start",this.subject);},onComplete:function(){this.fireEvent("complete",this.subject);if(!this.callChain()){this.fireEvent("chainComplete",this.subject);}},onCancel:function(){this.fireEvent("cancel",this.subject).clearChain();},pause:function(){this.stopTimer();return this;},resume:function(){this.startTimer();return this;},stopTimer:function(){if(!this.timer){return false;}this.time=$time()-this.time;this.timer=$clear(this.timer);return true;},startTimer:function(){if(this.timer){return false;}this.time=$time()-this.time;this.timer=this.step.periodical(Math.round(1000/this.options.fps),this);return true;}});Fx.compute=function(from,to,delta){return(to-from)*delta+from;};Fx.Durations={"short":250,"normal":500,"long":1000};Fx.CSS=new Class({Extends:Fx,prepare:function(element,property,values){values=$splat(values);var values1=values[1];if(!$chk(values1)){values[1]=values[0];values[0]=element.getStyle(property);}var parsed=values.map(this.parse);return{from:parsed[0],to:parsed[1]};},parse:function(value){value=$lambda(value)();value=(typeof value=="string")?value.split(" "):$splat(value);return value.map(function(val){val=String(val);var found=false;Fx.CSS.Parsers.each(function(parser,key){if(found){return;}var parsed=parser.parse(val);if($chk(parsed)){found={value:parsed,parser:parser};}});found=found||{value:val,parser:Fx.CSS.Parsers.String};return found;});},compute:function(from,to,delta){var computed=[];(Math.min(from.length,to.length)).times(function(i){computed.push({value:from[i].parser.compute(from[i].value,to[i].value,delta),parser:from[i].parser});});computed.$family={name:"fx:css:value"};return computed;},serve:function(value,unit){if($type(value)!="fx:css:value"){value=this.parse(value);}var returned=[];value.each(function(bit){returned=returned.concat(bit.parser.serve(bit.value,unit));});return returned;},render:function(element,property,value,unit){element.setStyle(property,this.serve(value,unit));},search:function(selector){if(Fx.CSS.Cache[selector]){return Fx.CSS.Cache[selector];}var to={};Array.each(document.styleSheets,function(sheet,j){var href=sheet.href;if(href&&href.contains("://")&&!href.contains(document.domain)){return;}var rules=sheet.rules||sheet.cssRules;Array.each(rules,function(rule,i){if(!rule.style){return;}var selectorText=(rule.selectorText)?rule.selectorText.replace(/^\w+/,function(m){return m.toLowerCase();}):null;if(!selectorText||!selectorText.test("^"+selector+"$")){return;}Element.Styles.each(function(value,style){if(!rule.style[style]||Element.ShortStyles[style]){return;}value=String(rule.style[style]);to[style]=(value.test(/^rgb/))?value.rgbToHex():value;});});});return Fx.CSS.Cache[selector]=to;}});Fx.CSS.Cache={};Fx.CSS.Parsers=new Hash({Color:{parse:function(value){if(value.match(/^#[0-9a-f]{3,6}$/i)){return value.hexToRgb(true);}return((value=value.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[value[1],value[2],value[3]]:false;},compute:function(from,to,delta){return from.map(function(value,i){return Math.round(Fx.compute(from[i],to[i],delta));});},serve:function(value){return value.map(Number);}},Number:{parse:parseFloat,compute:Fx.compute,serve:function(value,unit){return(unit)?value+unit:value;}},String:{parse:$lambda(false),compute:$arguments(1),serve:$arguments(0)}});Fx.Tween=new Class({Extends:Fx.CSS,initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);},set:function(property,now){if(arguments.length==1){now=property;property=this.property||this.options.property;}this.render(this.element,property,now,this.options.unit);return this;},start:function(property,from,to){if(!this.check(property,from,to)){return this;}var args=Array.flatten(arguments);this.property=this.options.property||args.shift();var parsed=this.prepare(this.element,this.property,args);return this.parent(parsed.from,parsed.to);}});Element.Properties.tween={set:function(options){var tween=this.retrieve("tween");if(tween){tween.cancel();}return this.eliminate("tween").store("tween:options",$extend({link:"cancel"},options));},get:function(options){if(options||!this.retrieve("tween")){if(options||!this.retrieve("tween:options")){this.set("tween",options);}this.store("tween",new Fx.Tween(this,this.retrieve("tween:options")));}return this.retrieve("tween");}};Element.implement({tween:function(property,from,to){this.get("tween").start(arguments);return this;},fade:function(how){var fade=this.get("tween"),o="opacity",toggle;how=$pick(how,"toggle");switch(how){case"in":fade.start(o,1);break;case"out":fade.start(o,0);break;case"show":fade.set(o,1);break;case"hide":fade.set(o,0);break;case"toggle":var flag=this.retrieve("fade:flag",this.get("opacity")==1);fade.start(o,(flag)?0:1);this.store("fade:flag",!flag);toggle=true;break;default:fade.start(o,arguments);}if(!toggle){this.eliminate("fade:flag");}return this;},highlight:function(start,end){if(!end){end=this.retrieve("highlight:original",this.getStyle("background-color"));end=(end=="transparent")?"#fff":end;}var tween=this.get("tween");tween.start("background-color",start||"#ffff88",end).chain(function(){this.setStyle("background-color",this.retrieve("highlight:original"));tween.callChain();}.bind(this));return this;}});Fx.Morph=new Class({Extends:Fx.CSS,initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);},set:function(now){if(typeof now=="string"){now=this.search(now);}for(var p in now){this.render(this.element,p,now[p],this.options.unit);}return this;},compute:function(from,to,delta){var now={};for(var p in from){now[p]=this.parent(from[p],to[p],delta);}return now;},start:function(properties){if(!this.check(properties)){return this;}if(typeof properties=="string"){properties=this.search(properties);}var from={},to={};for(var p in properties){var parsed=this.prepare(this.element,p,properties[p]);from[p]=parsed.from;to[p]=parsed.to;}return this.parent(from,to);}});Element.Properties.morph={set:function(options){var morph=this.retrieve("morph");if(morph){morph.cancel();}return this.eliminate("morph").store("morph:options",$extend({link:"cancel"},options));},get:function(options){if(options||!this.retrieve("morph")){if(options||!this.retrieve("morph:options")){this.set("morph",options);}this.store("morph",new Fx.Morph(this,this.retrieve("morph:options")));}return this.retrieve("morph");}};Element.implement({morph:function(props){this.get("morph").start(props);return this;}});Fx.implement({getTransition:function(){var trans=this.options.transition||Fx.Transitions.Sine.easeInOut;if(typeof trans=="string"){var data=trans.split(":");trans=Fx.Transitions;trans=trans[data[0]]||trans[data[0].capitalize()];if(data[1]){trans=trans["ease"+data[1].capitalize()+(data[2]?data[2].capitalize():"")];}}return trans;}});Fx.Transition=function(transition,params){params=$splat(params);return $extend(transition,{easeIn:function(pos){return transition(pos,params);},easeOut:function(pos){return 1-transition(1-pos,params);},easeInOut:function(pos){return(pos<=0.5)?transition(2*pos,params)/2:(2-transition(2*(1-pos),params))/2;}});};Fx.Transitions=new Hash({linear:$arguments(0)});Fx.Transitions.extend=function(transitions){for(var transition in transitions){Fx.Transitions[transition]=new Fx.Transition(transitions[transition]);}};Fx.Transitions.extend({Pow:function(p,x){return Math.pow(p,x[0]||6);},Expo:function(p){return Math.pow(2,8*(p-1));},Circ:function(p){return 1-Math.sin(Math.acos(p));},Sine:function(p){return 1-Math.sin((1-p)*Math.PI/2);},Back:function(p,x){x=x[0]||1.618;return Math.pow(p,2)*((x+1)*p-x);},Bounce:function(p){var value;for(var a=0,b=1;1;a+=b,b/=2){if(p>=(7-4*a)/11){value=b*b-Math.pow((11-6*a-11*p)/4,2);break;}}return value;},Elastic:function(p,x){return Math.pow(2,10*--p)*Math.cos(20*p*Math.PI*(x[0]||1)/3);}});["Quad","Cubic","Quart","Quint"].each(function(transition,i){Fx.Transitions[transition]=new Fx.Transition(function(p){return Math.pow(p,[i+2]);});});var Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest","Accept":"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false,noCache:false},initialize:function(options){this.xhr=new Browser.Request();this.setOptions(options);this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.headers=new Hash(this.options.headers);},onStateChange:function(){if(this.xhr.readyState!=4||!this.running){return;}this.running=false;this.status=0;$try(function(){this.status=this.xhr.status;}.bind(this));this.xhr.onreadystatechange=$empty;if(this.options.isSuccess.call(this,this.status)){this.response={text:this.xhr.responseText,xml:this.xhr.responseXML};this.success(this.response.text,this.response.xml);}else{this.response={text:null,xml:null};this.failure();}},isSuccess:function(){return((this.status>=200)&&(this.status<300));},processScripts:function(text){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return $exec(text);}return text.stripScripts(this.options.evalScripts);},success:function(text,xml){this.onSuccess(this.processScripts(text),xml);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain();},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},setHeader:function(name,value){this.headers.set(name,value);return this;},getHeader:function(name){return $try(function(){return this.xhr.getResponseHeader(name);}.bind(this));},check:function(){if(!this.running){return true;}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.bind(this,arguments));return false;}return false;},send:function(options){if(!this.check(options)){return this;}this.running=true;var type=$type(options);if(type=="string"||type=="element"){options={data:options};}var old=this.options;options=$extend({data:old.data,url:old.url,method:old.method},options);var data=options.data,url=String(options.url),method=options.method.toLowerCase();switch($type(data)){case"element":data=document.id(data).toQueryString();break;case"object":case"hash":data=Hash.toQueryString(data);}if(this.options.format){var format="format="+this.options.format;data=(data)?format+"&"+data:format;}if(this.options.emulation&&!["get","post"].contains(method)){var _method="_method="+method;data=(data)?_method+"&"+data:_method;method="post";}if(this.options.urlEncoded&&method=="post"){var encoding=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers.set("Content-type","application/x-www-form-urlencoded"+encoding);}if(this.options.noCache){var noCache="noCache="+new Date().getTime();data=(data)?noCache+"&"+data:noCache;}var trimPosition=url.lastIndexOf("/");if(trimPosition>-1&&(trimPosition=url.indexOf("#"))>-1){url=url.substr(0,trimPosition);}if(data&&method=="get"){url=url+(url.contains("?")?"&":"?")+data;data=null;}this.xhr.open(method.toUpperCase(),url,this.options.async);this.xhr.onreadystatechange=this.onStateChange.bind(this);this.headers.each(function(value,key){try{this.xhr.setRequestHeader(key,value);}catch(e){this.fireEvent("exception",[key,value]);}},this);this.fireEvent("request");this.xhr.send(data);if(!this.options.async){this.onStateChange();}return this;},cancel:function(){if(!this.running){return this;}this.running=false;this.xhr.abort();this.xhr.onreadystatechange=$empty;this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});(function(){var methods={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(method){methods[method]=function(){var params=Array.link(arguments,{url:String.type,data:$defined});return this.send($extend(params,{method:method}));};});Request.implement(methods);})();Element.Properties.send={set:function(options){var send=this.retrieve("send");if(send){send.cancel();}return this.eliminate("send").store("send:options",$extend({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")},options));},get:function(options){if(options||!this.retrieve("send")){if(options||!this.retrieve("send:options")){this.set("send",options);}this.store("send",new Request(this.retrieve("send:options")));}return this.retrieve("send");}};Element.implement({send:function(url){var sender=this.get("send");sender.send({data:this,url:url||sender.options.url});return this;}});Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false},processHTML:function(text){var match=text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);text=(match)?match[1]:text;var container=new Element("div");return $try(function(){var root="<root>"+text+"</root>",doc;if(Browser.Engine.trident){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async=false;doc.loadXML(root);}else{doc=new DOMParser().parseFromString(root,"text/xml");}root=doc.getElementsByTagName("root")[0];if(!root){return null;}for(var i=0,k=root.childNodes.length;i<k;i++){var child=Element.clone(root.childNodes[i],true,true);if(child){container.grab(child);}}return container;})||container.set("html",text);},success:function(text){var options=this.options,response=this.response;response.html=text.stripScripts(function(script){response.javascript=script;});var temp=this.processHTML(response.html);response.tree=temp.childNodes;response.elements=temp.getElements("*");if(options.filter){response.tree=response.elements.filter(options.filter);}if(options.update){document.id(options.update).empty().set("html",response.html);}else{if(options.append){document.id(options.append).adopt(temp.getChildren());}}if(options.evalScripts){$exec(response.javascript);}this.onSuccess(response.tree,response.elements,response.html,response.javascript);}});Element.Properties.load={set:function(options){var load=this.retrieve("load");if(load){load.cancel();}return this.eliminate("load").store("load:options",$extend({data:this,link:"cancel",update:this,method:"get"},options));},get:function(options){if(options||!this.retrieve("load")){if(options||!this.retrieve("load:options")){this.set("load",options);}this.store("load",new Request.HTML(this.retrieve("load:options")));}return this.retrieve("load");}};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Object.type,url:String.type}));return this;}});Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(options){this.parent(options);this.headers.extend({"Accept":"application/json","X-Request":"JSON"});},success:function(text){this.response.json=JSON.decode(text,this.options.secure);this.onSuccess(this.response.json,text);}});MooTools.More={"version":"1.2.4.2","build":"bd5a93c0913cce25917c48cbdacde568e15e02ef"};(function(){var data={language:"en-US",languages:{"en-US":{}},cascades:["en-US"]};var cascaded;MooTools.lang=new Events();$extend(MooTools.lang,{setLanguage:function(lang){if(!data.languages[lang]){return this;}data.language=lang;this.load();this.fireEvent("langChange",lang);return this;},load:function(){var langs=this.cascade(this.getCurrentLanguage());cascaded={};$each(langs,function(set,setName){cascaded[setName]=this.lambda(set);},this);},getCurrentLanguage:function(){return data.language;},addLanguage:function(lang){data.languages[lang]=data.languages[lang]||{};return this;},cascade:function(lang){var cascades=(data.languages[lang]||{}).cascades||[];cascades.combine(data.cascades);cascades.erase(lang).push(lang);var langs=cascades.map(function(lng){return data.languages[lng];},this);return $merge.apply(this,langs);},lambda:function(set){(set||{}).get=function(key,args){return $lambda(set[key]).apply(this,$splat(args));};return set;},get:function(set,key,args){if(cascaded&&cascaded[set]){return(key?cascaded[set].get(key,args):cascaded[set]);}},set:function(lang,set,members){this.addLanguage(lang);langData=data.languages[lang];if(!langData[set]){langData[set]={};}$extend(langData[set],members);if(lang==this.getCurrentLanguage()){this.load();this.fireEvent("langChange",lang);}return this;},list:function(){return Hash.getKeys(data.languages);}});})();(function(){var global=this;var log=function(){if(global.console&&console.log){try{console.log.apply(console,arguments);}catch(e){console.log(Array.slice(arguments));}}else{Log.logged.push(arguments);}return this;};var disabled=function(){this.logged.push(arguments);return this;};this.Log=new Class({logged:[],log:disabled,resetLog:function(){this.logged.empty();return this;},enableLog:function(){this.log=log;this.logged.each(function(args){this.log.apply(this,args);},this);return this.resetLog();},disableLog:function(){this.log=disabled;return this;}});Log.extend(new Log).enableLog();Log.logger=function(){return this.log.apply(this,arguments);};})();Class.Mutators.Binds=function(binds){return binds;};Class.Mutators.initialize=function(initialize){return function(){$splat(this.Binds).each(function(name){var original=this[name];if(original){this[name]=original.bind(this);}},this);return initialize.apply(this,arguments);};};Class.Occlude=new Class({occlude:function(property,element){element=document.id(element||this.element);var instance=element.retrieve(property||this.property);if(instance&&!$defined(this.occluded)){return this.occluded=instance;}this.occluded=false;element.store(property||this.property,this);return this.occluded;}});(function(){var wait={wait:function(duration){return this.chain(function(){this.callChain.delay($pick(duration,500),this);}.bind(this));}};Chain.implement(wait);if(window.Fx){Fx.implement(wait);["Css","Tween","Elements"].each(function(cls){if(Fx[cls]){Fx[cls].implement(wait);}});}Element.implement({chains:function(effects){$splat($pick(effects,["tween","morph","reveal"])).each(function(effect){effect=this.get(effect);if(!effect){return;}effect.setOptions({link:"chain"});},this);return this;},pauseFx:function(duration,effect){this.chains(effect).get($pick(effect,"tween")).wait(duration);return this;}});})();(function(){var Date=this.Date;if(!Date.now){Date.now=$time;}Date.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds"].each(function(method){Date.Methods[method.toLowerCase()]=method;});var pad=function(what,length){return new Array(length-String(what).length+1).join("0")+what;};Date.implement({set:function(prop,value){switch($type(prop)){case"object":for(var p in prop){this.set(p,prop[p]);}break;case"string":prop=prop.toLowerCase();var m=Date.Methods;if(m[prop]){this["set"+m[prop]](value);}}return this;},get:function(prop){prop=prop.toLowerCase();var m=Date.Methods;if(m[prop]){return this["get"+m[prop]]();}return null;},clone:function(){return new Date(this.get("time"));},increment:function(interval,times){interval=interval||"day";times=$pick(times,1);switch(interval){case"year":return this.increment("month",times*12);case"month":var d=this.get("date");this.set("date",1).set("mo",this.get("mo")+times);return this.set("date",d.min(this.get("lastdayofmonth")));case"week":return this.increment("day",times*7);case"day":return this.set("date",this.get("date")+times);}if(!Date.units[interval]){throw new Error(interval+" is not a supported interval");}return this.set("time",this.get("time")+times*Date.units[interval]());},decrement:function(interval,times){return this.increment(interval,-1*$pick(times,1));},isLeapYear:function(){return Date.isLeapYear(this.get("year"));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});},diff:function(date,resolution){if($type(date)=="string"){date=Date.parse(date);}return((date-this)/Date.units[resolution||"day"](3,3)).toInt();},getLastDayOfMonth:function(){return Date.daysInMonth(this.get("mo"),this.get("year"));},getDayOfYear:function(){return(Date.UTC(this.get("year"),this.get("mo"),this.get("date")+1)-Date.UTC(this.get("year"),0,1))/Date.units.day();},getWeek:function(){return(this.get("dayofyear")/7).ceil();},getOrdinal:function(day){return Date.getMsg("ordinal",day||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");},getGMTOffset:function(){var off=this.get("timezoneOffset");return((off>0)?"-":"+")+pad((off.abs()/60).floor(),2)+pad(off%60,2);},setAMPM:function(ampm){ampm=ampm.toUpperCase();var hr=this.get("hr");if(hr>11&&ampm=="AM"){return this.decrement("hour",12);}else{if(hr<12&&ampm=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM";},parse:function(str){this.set("time",Date.parse(str));return this;},isValid:function(date){return !!(date||this).valueOf();},format:function(f){if(!this.isValid()){return"invalid date";}f=f||"%x %X";f=formats[f.toLowerCase()]||f;var d=this;return f.replace(/%([a-z%])/gi,function($0,$1){switch($1){case"a":return Date.getMsg("days")[d.get("day")].substr(0,3);case"A":return Date.getMsg("days")[d.get("day")];case"b":return Date.getMsg("months")[d.get("month")].substr(0,3);case"B":return Date.getMsg("months")[d.get("month")];case"c":return d.toString();case"d":return pad(d.get("date"),2);case"D":return d.get("date");case"H":return pad(d.get("hr"),2);case"I":return((d.get("hr")%12)||12);case"j":return pad(d.get("dayofyear"),3);case"m":return pad((d.get("mo")+1),2);case"M":return pad(d.get("min"),2);case"o":return d.get("ordinal");case"p":return Date.getMsg(d.get("ampm"));case"S":return pad(d.get("seconds"),2);case"U":return pad(d.get("week"),2);case"w":return d.get("day");case"x":return d.format(Date.getMsg("shortDate"));case"X":return d.format(Date.getMsg("shortTime"));case"y":return d.get("year").toString().substr(2);case"Y":return d.get("year");case"T":return d.get("GMTOffset");case"Z":return d.get("Timezone");}return $1;});},toISOString:function(){return this.format("iso8601");}});Date.alias("toISOString","toJSON");Date.alias("diff","compare");Date.alias("format","strftime");var formats={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",iso8601:"%Y-%m-%dT%H:%M:%S%T",rfc822:"%a, %d %b %Y %H:%M:%S %Z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"};var parsePatterns=[];var nativeParse=Date.parse;var parseWord=function(type,word,num){var ret=-1;var translated=Date.getMsg(type+"s");switch($type(word)){case"object":ret=translated[word.get(type)];break;case"number":ret=translated[month-1];if(!ret){throw new Error("Invalid "+type+" index: "+index);}break;case"string":var match=translated.filter(function(name){return this.test(name);},new RegExp("^"+word,"i"));if(!match.length){throw new Error("Invalid "+type+" string");}if(match.length>1){throw new Error("Ambiguous "+type);}ret=match[0];}return(num)?translated.indexOf(ret):ret;};Date.extend({getMsg:function(key,args){return MooTools.lang.get("Date",key,args);},units:{ms:$lambda(1),second:$lambda(1000),minute:$lambda(60000),hour:$lambda(3600000),day:$lambda(86400000),week:$lambda(608400000),month:function(month,year){var d=new Date;return Date.daysInMonth($pick(month,d.get("mo")),$pick(year,d.get("year")))*86400000;},year:function(year){year=year||new Date().get("year");return Date.isLeapYear(year)?31622400000:31536000000;}},daysInMonth:function(month,year){return[31,Date.isLeapYear(year)?29:28,31,30,31,30,31,31,30,31,30,31][month];},isLeapYear:function(year){return((year%4===0)&&(year%100!==0))||(year%400===0);},parse:function(from){var t=$type(from);if(t=="number"){return new Date(from);}if(t!="string"){return from;}from=from.clean();if(!from.length){return null;}var parsed;parsePatterns.some(function(pattern){var bits=pattern.re.exec(from);return(bits)?(parsed=pattern.handler(bits)):false;});return parsed||new Date(nativeParse(from));},parseDay:function(day,num){return parseWord("day",day,num);},parseMonth:function(month,num){return parseWord("month",month,num);},parseUTC:function(value){var localDate=new Date(value);var utcSeconds=Date.UTC(localDate.get("year"),localDate.get("mo"),localDate.get("date"),localDate.get("hr"),localDate.get("min"),localDate.get("sec"));return new Date(utcSeconds);},orderIndex:function(unit){return Date.getMsg("dateOrder").indexOf(unit)+1;},defineFormat:function(name,format){formats[name]=format;},defineFormats:function(formats){for(var name in formats){Date.defineFormat(name,formats[name]);}},parsePatterns:parsePatterns,defineParser:function(pattern){parsePatterns.push((pattern.re&&pattern.handler)?pattern:build(pattern));},defineParsers:function(){Array.flatten(arguments).each(Date.defineParser);},define2DigitYearStart:function(year){startYear=year%100;startCentury=year-startYear;}});var startCentury=1900;var startYear=70;var regexOf=function(type){return new RegExp("(?:"+Date.getMsg(type).map(function(name){return name.substr(0,3);}).join("|")+")[a-z]*");};var replacers=function(key){switch(key){case"x":return((Date.orderIndex("month")==1)?"%m[.-/]%d":"%d[.-/]%m")+"([.-/]%y)?";case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?";}return null;};var keys={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/};keys.m=keys.I;keys.S=keys.M;var currentLanguage;var recompile=function(language){currentLanguage=language;keys.a=keys.A=regexOf("days");keys.b=keys.B=regexOf("months");parsePatterns.each(function(pattern,i){if(pattern.format){parsePatterns[i]=build(pattern.format);}});};var build=function(format){if(!currentLanguage){return{format:format};}var parsed=[];var re=(format.source||format).replace(/%([a-z])/gi,function($0,$1){return replacers($1)||$0;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function($0,$1){var p=keys[$1];if(!p){return $1;}parsed.push($1);return"("+p.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff]");return{format:format,re:new RegExp("^"+re+"$","i"),handler:function(bits){bits=bits.slice(1).associate(parsed);var date=new Date().clearTime();if("d" in bits){handle.call(date,"d",1);}if("m" in bits){handle.call(date,"m",1);}for(var key in bits){handle.call(date,key,bits[key]);}return date;}};};var handle=function(key,value){if(!value){return this;}switch(key){case"a":case"A":return this.set("day",Date.parseDay(value,true));case"b":case"B":return this.set("mo",Date.parseMonth(value,true));case"d":return this.set("date",value);case"H":case"I":return this.set("hr",value);case"m":return this.set("mo",value-1);case"M":return this.set("min",value);case"p":return this.set("ampm",value.replace(/\./g,""));case"S":return this.set("sec",value);case"s":return this.set("ms",("0."+value)*1000);case"w":return this.set("day",value);case"Y":return this.set("year",value);case"y":value=+value;if(value<100){value+=startCentury+(value<startYear?100:0);}return this.set("year",value);case"T":if(value=="Z"){value="+00";}var offset=value.match(/([+-])(\d{2}):?(\d{2})?/);offset=(offset[1]+"1")*(offset[2]*60+(+offset[3]||0))+this.getTimezoneOffset();return this.set("time",this-offset*60000);}return this;};Date.defineParsers("%Y([-./]%m([-./]%d((T| )%X)?)?)?","%Y%m%d(T%H(%M%S?)?)?","%x( %X)?","%d%o( %b( %Y)?)?( %X)?","%b( %d%o)?( %Y)?( %X)?","%Y %b( %d%o( %X)?)?","%o %b %d %X %T %Y");MooTools.lang.addEvent("langChange",function(language){if(MooTools.lang.get("Date")){recompile(language);}}).fireEvent("langChange",MooTools.lang.getCurrentLanguage());})();Date.implement({timeDiffInWords:function(relative_to){return Date.distanceOfTimeInWords(this,relative_to||new Date);},timeDiff:function(to,joiner){if(to==null){to=new Date;}var delta=((to-this)/1000).toInt();if(!delta){return"0s";}var durations={s:60,m:60,h:24,d:365,y:0};var duration,vals=[];for(var step in durations){if(!delta){break;}if((duration=durations[step])){vals.unshift((delta%duration)+step);delta=(delta/duration).toInt();}else{vals.unshift(delta+step);}}return vals.join(joiner||":");}});Date.alias("timeDiffInWords","timeAgoInWords");Date.extend({distanceOfTimeInWords:function(from,to){return Date.getTimePhrase(((to-from)/1000).toInt());},getTimePhrase:function(delta){var suffix=(delta<0)?"Until":"Ago";if(delta<0){delta*=-1;}var units={minute:60,hour:60,day:24,week:7,month:52/12,year:12,eon:Infinity};var msg="lessThanMinute";for(var unit in units){var interval=units[unit];if(delta<1.5*interval){if(delta>0.75*interval){msg=unit;}break;}delta/=interval;msg=unit+"s";}return Date.getMsg(msg+suffix).substitute({delta:delta.round()});}});Date.defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(bits){var d=new Date().clearTime();switch(bits[0]){case"tom":return d.increment();case"yes":return d.decrement();default:return d;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(bits){var d=new Date().clearTime();var day=d.getDay();var newDay=Date.parseDay(bits[2],true);var addDays=newDay-day;if(newDay<=day){addDays+=7;}if(bits[1]=="last"){addDays-=7;}return d.set("date",d.getDate()+addDays);}});Hash.implement({getFromPath:function(notation){var source=this.getClean();notation.replace(/\[([^\]]+)\]|\.([^.[]+)|[^[.]+/g,function(match){if(!source){return null;}var prop=arguments[2]||arguments[1]||arguments[0];source=(prop in source)?source[prop]:null;return match;});return source;},cleanValues:function(method){method=method||$defined;this.each(function(v,k){if(!method(v)){this.erase(k);}},this);return this;},run:function(){var args=arguments;this.each(function(v,k){if($type(v)=="function"){v.run(args);}});}});Element.implement({tidy:function(){this.set("value",this.get("value").tidy());},getTextInRange:function(start,end){return this.get("value").substring(start,end);},getSelectedText:function(){if(this.setSelectionRange){return this.getTextInRange(this.getSelectionStart(),this.getSelectionEnd());}return document.selection.createRange().text;},getSelectedRange:function(){if($defined(this.selectionStart)){return{start:this.selectionStart,end:this.selectionEnd};}var pos={start:0,end:0};var range=this.getDocument().selection.createRange();if(!range||range.parentElement()!=this){return pos;}var dup=range.duplicate();if(this.type=="text"){pos.start=0-dup.moveStart("character",-100000);pos.end=pos.start+range.text.length;}else{var value=this.get("value");var offset=value.length;dup.moveToElementText(this);dup.setEndPoint("StartToEnd",range);if(dup.text.length){offset-=value.match(/[\n\r]*$/)[0].length;}pos.end=offset-dup.text.length;dup.setEndPoint("StartToStart",range);pos.start=offset-dup.text.length;}return pos;},getSelectionStart:function(){return this.getSelectedRange().start;},getSelectionEnd:function(){return this.getSelectedRange().end;},setCaretPosition:function(pos){if(pos=="end"){pos=this.get("value").length;}this.selectRange(pos,pos);return this;},getCaretPosition:function(){return this.getSelectedRange().start;},selectRange:function(start,end){if(this.setSelectionRange){this.focus();this.setSelectionRange(start,end);}else{var value=this.get("value");var diff=value.substr(start,end-start).replace(/\r/g,"").length;start=value.substr(0,start).replace(/\r/g,"").length;var range=this.createTextRange();range.collapse(true);range.moveEnd("character",start+diff);range.moveStart("character",start);range.select();}return this;},insertAtCursor:function(value,select){var pos=this.getSelectedRange();var text=this.get("value");this.set("value",text.substring(0,pos.start)+value+text.substring(pos.end,text.length));if($pick(select,true)){this.selectRange(pos.start,pos.start+value.length);}else{this.setCaretPosition(pos.start+value.length);}return this;},insertAroundCursor:function(options,select){options=$extend({before:"",defaultMiddle:"",after:""},options);var value=this.getSelectedText()||options.defaultMiddle;var pos=this.getSelectedRange();var text=this.get("value");if(pos.start==pos.end){this.set("value",text.substring(0,pos.start)+options.before+value+options.after+text.substring(pos.end,text.length));this.selectRange(pos.start+options.before.length,pos.end+options.before.length+value.length);}else{var current=text.substring(pos.start,pos.end);this.set("value",text.substring(0,pos.start)+options.before+current+options.after+text.substring(pos.end,text.length));var selStart=pos.start+options.before.length;if($pick(select,true)){this.selectRange(selStart,selStart+current.length);}else{this.setCaretPosition(selStart+text.length);}}return this;}});(function(){var match=/(.*?):relay\(([^)]+)\)$/,combinators=/[+>~\s]/,splitType=function(type){var bits=type.match(match);return !bits?{event:type}:{event:bits[1],selector:bits[2]};},check=function(e,selector){var t=e.target;if(combinators.test(selector=selector.trim())){var els=this.getElements(selector);for(var i=els.length;i--;){var el=els[i];if(t==el||el.hasChild(t)){return el;}}}else{for(;t&&t!=this;t=t.parentNode){if(Element.match(t,selector)){return document.id(t);}}}return null;};var oldAddEvent=Element.prototype.addEvent,oldRemoveEvent=Element.prototype.removeEvent;Element.implement({addEvent:function(type,fn){var splitted=splitType(type);if(splitted.selector){var monitors=this.retrieve("$moo:delegateMonitors",{});if(!monitors[type]){var monitor=function(e){var el=check.call(this,e,splitted.selector);if(el){this.fireEvent(type,[e,el],0,el);}}.bind(this);monitors[type]=monitor;oldAddEvent.call(this,splitted.event,monitor);}}return oldAddEvent.apply(this,arguments);},removeEvent:function(type,fn){var splitted=splitType(type);if(splitted.selector){var events=this.retrieve("events");if(!events||!events[type]||(fn&&!events[type].keys.contains(fn))){return this;}if(fn){oldRemoveEvent.apply(this,[type,fn]);}else{oldRemoveEvent.apply(this,type);}events=this.retrieve("events");if(events&&events[type]&&events[type].length==0){var monitors=this.retrieve("$moo:delegateMonitors",{});oldRemoveEvent.apply(this,[splitted.event,monitors[type]]);delete monitors[type];}return this;}return oldRemoveEvent.apply(this,arguments);},fireEvent:function(type,args,delay,bind){var events=this.retrieve("events");if(!events||!events[type]){return this;}events[type].keys.each(function(fn){fn.create({bind:bind||this,delay:delay,arguments:args})();},this);return this;}});})();Element.implement({measure:function(fn){var vis=function(el){return !!(!el||el.offsetHeight||el.offsetWidth);};if(vis(this)){return fn.apply(this);}var parent=this.getParent(),restorers=[],toMeasure=[];while(!vis(parent)&&parent!=document.body){toMeasure.push(parent.expose());parent=parent.getParent();}var restore=this.expose();var result=fn.apply(this);restore();toMeasure.each(function(restore){restore();});return result;},expose:function(){if(this.getStyle("display")!="none"){return $empty;}var before=this.style.cssText;this.setStyles({display:"block",position:"absolute",visibility:"hidden"});return function(){this.style.cssText=before;}.bind(this);},getDimensions:function(options){options=$merge({computeSize:false},options);var dim={};var getSize=function(el,options){return(options.computeSize)?el.getComputedSize(options):el.getSize();};var parent=this.getParent("body");if(parent&&this.getStyle("display")=="none"){dim=this.measure(function(){return getSize(this,options);});}else{if(parent){try{dim=getSize(this,options);}catch(e){}}else{dim={x:0,y:0};}}return $chk(dim.x)?$extend(dim,{width:dim.x,height:dim.y}):$extend(dim,{x:dim.width,y:dim.height});},getComputedSize:function(options){options=$merge({styles:["padding","border"],plains:{height:["top","bottom"],width:["left","right"]},mode:"both"},options);var size={width:0,height:0};switch(options.mode){case"vertical":delete size.width;delete options.plains.width;break;case"horizontal":delete size.height;delete options.plains.height;break;}var getStyles=[];$each(options.plains,function(plain,key){plain.each(function(edge){options.styles.each(function(style){getStyles.push((style=="border")?style+"-"+edge+"-"+"width":style+"-"+edge);});});});var styles={};getStyles.each(function(style){styles[style]=this.getComputedStyle(style);},this);var subtracted=[];$each(options.plains,function(plain,key){var capitalized=key.capitalize();size["total"+capitalized]=size["computed"+capitalized]=0;plain.each(function(edge){size["computed"+edge.capitalize()]=0;getStyles.each(function(style,i){if(style.test(edge)){styles[style]=styles[style].toInt()||0;size["total"+capitalized]=size["total"+capitalized]+styles[style];size["computed"+edge.capitalize()]=size["computed"+edge.capitalize()]+styles[style];}if(style.test(edge)&&key!=style&&(style.test("border")||style.test("padding"))&&!subtracted.contains(style)){subtracted.push(style);size["computed"+capitalized]=size["computed"+capitalized]-styles[style];}});});});["Width","Height"].each(function(value){var lower=value.toLowerCase();if(!$chk(size[lower])){return;}size[lower]=size[lower]+this["offset"+value]+size["computed"+value];size["total"+value]=size[lower]+size["total"+value];delete size["computed"+value];},this);return $extend(styles,size);}});(function(){var original=Element.prototype.position;Element.implement({position:function(options){if(options&&($defined(options.x)||$defined(options.y))){return original?original.apply(this,arguments):this;}$each(options||{},function(v,k){if(!$defined(v)){delete options[k];}});options=$merge({relativeTo:document.body,position:{x:"center",y:"center"},edge:false,offset:{x:0,y:0},returnPos:false,relFixedPosition:false,ignoreMargins:false,ignoreScroll:false,allowNegative:false},options);var parentOffset={x:0,y:0},parentPositioned=false;var offsetParent=this.measure(function(){return document.id(this.getOffsetParent());});if(offsetParent&&offsetParent!=this.getDocument().body){parentOffset=offsetParent.measure(function(){return this.getPosition();});parentPositioned=offsetParent!=document.id(options.relativeTo);options.offset.x=options.offset.x-parentOffset.x;options.offset.y=options.offset.y-parentOffset.y;}var fixValue=function(option){if($type(option)!="string"){return option;}option=option.toLowerCase();var val={};if(option.test("left")){val.x="left";}else{if(option.test("right")){val.x="right";}else{val.x="center";}}if(option.test("upper")||option.test("top")){val.y="top";}else{if(option.test("bottom")){val.y="bottom";}else{val.y="center";}}return val;};options.edge=fixValue(options.edge);options.position=fixValue(options.position);if(!options.edge){if(options.position.x=="center"&&options.position.y=="center"){options.edge={x:"center",y:"center"};}else{options.edge={x:"left",y:"top"};}}this.setStyle("position","absolute");var rel=document.id(options.relativeTo)||document.body,calc=rel==document.body?window.getScroll():rel.getPosition(),top=calc.y,left=calc.x;var scrolls=rel.getScrolls();top+=scrolls.y;left+=scrolls.x;var dim=this.getDimensions({computeSize:true,styles:["padding","border","margin"]});var pos={},prefY=options.offset.y,prefX=options.offset.x,winSize=window.getSize();switch(options.position.x){case"left":pos.x=left+prefX;break;case"right":pos.x=left+prefX+rel.offsetWidth;break;default:pos.x=left+((rel==document.body?winSize.x:rel.offsetWidth)/2)+prefX;break;}switch(options.position.y){case"top":pos.y=top+prefY;break;case"bottom":pos.y=top+prefY+rel.offsetHeight;break;default:pos.y=top+((rel==document.body?winSize.y:rel.offsetHeight)/2)+prefY;break;}if(options.edge){var edgeOffset={};switch(options.edge.x){case"left":edgeOffset.x=0;break;case"right":edgeOffset.x=-dim.x-dim.computedRight-dim.computedLeft;break;default:edgeOffset.x=-(dim.totalWidth/2);break;}switch(options.edge.y){case"top":edgeOffset.y=0;break;case"bottom":edgeOffset.y=-dim.y-dim.computedTop-dim.computedBottom;break;default:edgeOffset.y=-(dim.totalHeight/2);break;}pos.x+=edgeOffset.x;pos.y+=edgeOffset.y;}pos={left:((pos.x>=0||parentPositioned||options.allowNegative)?pos.x:0).toInt(),top:((pos.y>=0||parentPositioned||options.allowNegative)?pos.y:0).toInt()};var xy={left:"x",top:"y"};["minimum","maximum"].each(function(minmax){["left","top"].each(function(lr){var val=options[minmax]?options[minmax][xy[lr]]:null;if(val!=null&&pos[lr]<val){pos[lr]=val;}});});if(rel.getStyle("position")=="fixed"||options.relFixedPosition){var winScroll=window.getScroll();pos.top+=winScroll.y;pos.left+=winScroll.x;}if(options.ignoreScroll){var relScroll=rel.getScroll();pos.top-=relScroll.y;pos.left-=relScroll.x;}if(options.ignoreMargins){pos.left+=(options.edge.x=="right"?dim["margin-right"]:options.edge.x=="center"?-dim["margin-left"]+((dim["margin-right"]+dim["margin-left"])/2):-dim["margin-left"]);pos.top+=(options.edge.y=="bottom"?dim["margin-bottom"]:options.edge.y=="center"?-dim["margin-top"]+((dim["margin-bottom"]+dim["margin-top"])/2):-dim["margin-top"]);}pos.left=Math.ceil(pos.left);pos.top=Math.ceil(pos.top);if(options.returnPos){return pos;}else{this.setStyles(pos);}return this;}});})();Element.implement({isDisplayed:function(){return this.getStyle("display")!="none";},isVisible:function(){var w=this.offsetWidth,h=this.offsetHeight;return(w==0&&h==0)?false:(w>0&&h>0)?true:this.isDisplayed();},toggle:function(){return this[this.isDisplayed()?"hide":"show"]();},hide:function(){var d;try{if((d=this.getStyle("display"))=="none"){d=null;}}catch(e){}return this.store("originalDisplay",d||"block").setStyle("display","none");},show:function(display){return this.setStyle("display",display||this.retrieve("originalDisplay")||"block");},swapClass:function(remove,add){return this.removeClass(remove).addClass(add);}});Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(elements,options){this.elements=this.subject=$$(elements);this.parent(options);},compute:function(from,to,delta){var now={};for(var i in from){var iFrom=from[i],iTo=to[i],iNow=now[i]={};for(var p in iFrom){iNow[p]=this.parent(iFrom[p],iTo[p],delta);}}return now;},set:function(now){for(var i in now){var iNow=now[i];for(var p in iNow){this.render(this.elements[i],p,iNow[p],this.options.unit);}}return this;},start:function(obj){if(!this.check(obj)){return this;}var from={},to={};for(var i in obj){var iProps=obj[i],iFrom=from[i]={},iTo=to[i]={};for(var p in iProps){var parsed=this.prepare(this.elements[i],p,iProps[p]);iFrom[p]=parsed.from;iTo[p]=parsed.to;}}return this.parent(from,to);}});Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);var cancel=this.cancel.bind(this,false);if($type(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}var stopper=this.element;if(this.options.wheelStops){this.addEvent("start",function(){stopper.addEvent("mousewheel",cancel);},true);this.addEvent("complete",function(){stopper.removeEvent("mousewheel",cancel);},true);}},set:function(){var now=Array.flatten(arguments);if(Browser.Engine.gecko){now=[Math.round(now[0]),Math.round(now[1])];}this.element.scrollTo(now[0],now[1]);},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(x,y){if(!this.check(x,y)){return this;}var scrollSize=this.element.getScrollSize(),scroll=this.element.getScroll(),values={x:x,y:y};for(var z in values){var max=scrollSize[z];if($chk(values[z])){values[z]=($type(values[z])=="number")?values[z]:max;}else{values[z]=scroll[z];}values[z]+=this.options.offset[z];}return this.parent([scroll.x,scroll.y],[values.x,values.y]);},toTop:function(){return this.start(false,0);},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start("right",false);},toBottom:function(){return this.start(false,"bottom");},toElement:function(el){var position=document.id(el).getPosition(this.element);return this.start(position.x,position.y);},scrollIntoView:function(el,axes,offset){axes=axes?$splat(axes):["x","y"];var to={};el=document.id(el);var pos=el.getPosition(this.element);var size=el.getSize();var scroll=this.element.getScroll();var containerSize=this.element.getSize();var edge={x:pos.x+size.x,y:pos.y+size.y};["x","y"].each(function(axis){if(axes.contains(axis)){if(edge[axis]>scroll[axis]+containerSize[axis]){to[axis]=edge[axis]-containerSize[axis];}if(pos[axis]<scroll[axis]){to[axis]=pos[axis];}}if(to[axis]==null){to[axis]=scroll[axis];}if(offset&&offset[axis]){to[axis]=to[axis]+offset[axis];}},this);if(to.x!=scroll.x||to.y!=scroll.y){this.start(to.x,to.y);}return this;},scrollToCenter:function(el,axes,offset){axes=axes?$splat(axes):["x","y"];el=$(el);var to={},pos=el.getPosition(this.element),size=el.getSize(),scroll=this.element.getScroll(),containerSize=this.element.getSize(),edge={x:pos.x+size.x,y:pos.y+size.y};["x","y"].each(function(axis){if(axes.contains(axis)){to[axis]=pos[axis]-(containerSize[axis]-size[axis])/2;}if(to[axis]==null){to[axis]=scroll[axis];}if(offset&&offset[axis]){to[axis]=to[axis]+offset[axis];}},this);if(to.x!=scroll.x||to.y!=scroll.y){this.start(to.x,to.y);}return this;}});Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical",hideOverflow:true},initialize:function(element,options){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0);if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper);}},true);this.element=this.subject=document.id(element);this.parent(options);var wrapper=this.element.retrieve("wrapper");var styles=this.element.getStyles("margin","position","overflow");if(this.options.hideOverflow){styles=$extend(styles,{overflow:"hidden"});}this.wrapper=wrapper||new Element("div",{styles:styles}).wraps(this.element);this.element.store("wrapper",this.wrapper).setStyle("margin",0);this.now=[];this.open=true;},vertical:function(){this.margin="margin-top";this.layout="height";this.offset=this.element.offsetHeight;},horizontal:function(){this.margin="margin-left";this.layout="width";this.offset=this.element.offsetWidth;},set:function(now){this.element.setStyle(this.margin,now[0]);this.wrapper.setStyle(this.layout,now[1]);return this;},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(how,mode){if(!this.check(how,mode)){return this;}this[mode||this.options.mode]();var margin=this.element.getStyle(this.margin).toInt();var layout=this.wrapper.getStyle(this.layout).toInt();var caseIn=[[margin,layout],[0,this.offset]];var caseOut=[[margin,layout],[-this.offset,0]];var start;switch(how){case"in":start=caseIn;break;case"out":start=caseOut;break;case"toggle":start=(layout==0)?caseIn:caseOut;}return this.parent(start[0],start[1]);},slideIn:function(mode){return this.start("in",mode);},slideOut:function(mode){return this.start("out",mode);},hide:function(mode){this[mode||this.options.mode]();this.open=false;return this.set([-this.offset,0]);},show:function(mode){this[mode||this.options.mode]();this.open=true;return this.set([0,this.offset]);},toggle:function(mode){return this.start("toggle",mode);}});Element.Properties.slide={set:function(options){var slide=this.retrieve("slide");if(slide){slide.cancel();}return this.eliminate("slide").store("slide:options",$extend({link:"cancel"},options));},get:function(options){if(options||!this.retrieve("slide")){if(options||!this.retrieve("slide:options")){this.set("slide",options);}this.store("slide",new Fx.Slide(this,this.retrieve("slide:options")));}return this.retrieve("slide");}};Element.implement({slide:function(how,mode){how=how||"toggle";var slide=this.get("slide"),toggle;switch(how){case"hide":slide.hide(mode);break;case"show":slide.show(mode);break;case"toggle":var flag=this.retrieve("slide:flag",slide.open);slide[flag?"slideOut":"slideIn"](mode);this.store("slide:flag",!flag);toggle=true;break;default:slide.start(how,mode);}if(!toggle){this.eliminate("slide:flag");}return this;}});var SmoothScroll=Fx.SmoothScroll=new Class({Extends:Fx.Scroll,initialize:function(options,context){context=context||document;this.doc=context.getDocument();var win=context.getWindow();this.parent(this.doc,options);this.links=$$(this.options.links||this.doc.links);var location=win.location.href.match(/^[^#]*/)[0]+"#";this.links.each(function(link){if(link.href.indexOf(location)!=0){return;}var anchor=link.href.substr(location.length);if(anchor){this.useLink(link,anchor);}},this);if(!Browser.Engine.webkit419){this.addEvent("complete",function(){win.location.hash=this.anchor;},true);}},useLink:function(link,anchor){var el;link.addEvent("click",function(event){if(el!==false&&!el){el=document.id(anchor)||this.doc.getElement("a[name="+anchor+"]");}if(el){event.preventDefault();this.anchor=anchor;this.toElement(el).chain(function(){this.fireEvent("scrolledTo",[link,el]);}.bind(this));link.blur();}}.bind(this));}});Fx.Sort=new Class({Extends:Fx.Elements,options:{mode:"vertical"},initialize:function(elements,options){this.parent(elements,options);this.elements.each(function(el){if(el.getStyle("position")=="static"){el.setStyle("position","relative");}});this.setDefaultOrder();},setDefaultOrder:function(){this.currentOrder=this.elements.map(function(el,index){return index;});},sort:function(newOrder){if($type(newOrder)!="array"){return false;}var top=0,left=0,next={},zero={},vert=this.options.mode=="vertical";var current=this.elements.map(function(el,index){var size=el.getComputedSize({styles:["border","padding","margin"]});var val;if(vert){val={top:top,margin:size["margin-top"],height:size.totalHeight};top+=val.height-size["margin-top"];}else{val={left:left,margin:size["margin-left"],width:size.totalWidth};left+=val.width;}var plain=vert?"top":"left";zero[index]={};var start=el.getStyle(plain).toInt();zero[index][plain]=start||0;return val;},this);this.set(zero);newOrder=newOrder.map(function(i){return i.toInt();});if(newOrder.length!=this.elements.length){this.currentOrder.each(function(index){if(!newOrder.contains(index)){newOrder.push(index);}});if(newOrder.length>this.elements.length){newOrder.splice(this.elements.length-1,newOrder.length-this.elements.length);}}var margin=top=left=0;newOrder.each(function(item,index){var newPos={};if(vert){newPos.top=top-current[item].top-margin;top+=current[item].height;}else{newPos.left=left-current[item].left;left+=current[item].width;}margin=margin+current[item].margin;next[item]=newPos;},this);var mapped={};$A(newOrder).sort().each(function(index){mapped[index]=next[index];});this.start(mapped);this.currentOrder=newOrder;return this;},rearrangeDOM:function(newOrder){newOrder=newOrder||this.currentOrder;var parent=this.elements[0].getParent();var rearranged=[];this.elements.setStyle("opacity",0);newOrder.each(function(index){rearranged.push(this.elements[index].inject(parent).setStyles({top:0,left:0}));},this);this.elements.setStyle("opacity",1);this.elements=$$(rearranged);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(el,index){return index;});},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse());},reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(elements){return this.sort(elements.map(function(el){return this.elements.indexOf(el);},this));},swap:function(one,two){if($type(one)=="element"){one=this.elements.indexOf(one);}if($type(two)=="element"){two=this.elements.indexOf(two);}var newOrder=$A(this.currentOrder);newOrder[this.currentOrder.indexOf(one)]=two;newOrder[this.currentOrder.indexOf(two)]=one;return this.sort(newOrder);}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var params=Array.link(arguments,{"options":Object.type,"element":$defined});this.element=document.id(params.element);this.document=this.element.getDocument();this.setOptions(params.options||{});var htype=$type(this.options.handle);this.handles=((htype=="array"||htype=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;this.mouse={"now":{},"pos":{}};this.value={"start":{},"now":{}};this.selection=(Browser.Engine.trident)?"selectstart":"mousedown";this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);return this;},start:function(event){if(event.rightClick){return;}if(this.options.preventDefault){event.preventDefault();}if(this.options.stopPropagation){event.stopPropagation();}this.mouse.start=event.page;this.fireEvent("beforeStart",this.element);var limit=this.options.limit;this.limit={x:[],y:[]};for(var z in this.options.modifiers){if(!this.options.modifiers[z]){continue;}if(this.options.style){this.value.now[z]=this.element.getStyle(this.options.modifiers[z]).toInt();}else{this.value.now[z]=this.element[this.options.modifiers[z]];}if(this.options.invert){this.value.now[z]*=-1;}this.mouse.pos[z]=event.page[z]-this.value.now[z];if(limit&&limit[z]){for(var i=2;i--;i){if($chk(limit[z][i])){this.limit[z][i]=$lambda(limit[z][i])();}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop);},check:function(event){if(this.options.preventDefault){event.preventDefault();}var distance=Math.round(Math.sqrt(Math.pow(event.page.x-this.mouse.start.x,2)+Math.pow(event.page.y-this.mouse.start.y,2)));if(distance>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,event]).fireEvent("snap",this.element);}},drag:function(event){if(this.options.preventDefault){event.preventDefault();}this.mouse.now=event.page;for(var z in this.options.modifiers){if(!this.options.modifiers[z]){continue;}this.value.now[z]=this.mouse.now[z]-this.mouse.pos[z];if(this.options.invert){this.value.now[z]*=-1;}if(this.options.limit&&this.limit[z]){if($chk(this.limit[z][1])&&(this.value.now[z]>this.limit[z][1])){this.value.now[z]=this.limit[z][1];}else{if($chk(this.limit[z][0])&&(this.value.now[z]<this.limit[z][0])){this.value.now[z]=this.limit[z][0];}}}if(this.options.grid[z]){this.value.now[z]-=((this.value.now[z]-(this.limit[z][0]||0))%this.options.grid[z]);}if(this.options.style){this.element.setStyle(this.options.modifiers[z],this.value.now[z]+this.options.unit);}else{this.element[this.options.modifiers[z]]=this.value.now[z];}}this.fireEvent("drag",[this.element,event]);},cancel:function(event){this.document.removeEvent("mousemove",this.bound.check);this.document.removeEvent("mouseup",this.bound.cancel);if(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element);}},stop:function(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.document.removeEvent("mousemove",this.bound.drag);this.document.removeEvent("mouseup",this.bound.stop);if(event){this.fireEvent("complete",[this.element,event]);}}});Element.implement({makeResizable:function(options){var drag=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},options));this.store("resizer",drag);return drag.addEvent("drag",function(){this.fireEvent("resize",drag);}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(element,options){this.parent(element,options);element=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&$type(this.container)!="element"){this.container=document.id(this.container.getDocument().body);}var styles=element.getStyles("left","right","position");if(styles.left=="auto"||styles.top=="auto"){element.setPosition(element.getPosition(element.getOffsetParent()));}if(styles.position=="static"){element.setStyle("position","absolute");}this.addEvent("start",this.checkDroppables,true);this.overed=null;},start:function(event){if(this.container){this.options.limit=this.calculateLimit();}if(this.options.precalculate){this.positions=this.droppables.map(function(el){return el.getCoordinates();});}this.parent(event);},calculateLimit:function(){var offsetParent=this.element.getOffsetParent(),containerCoordinates=this.container.getCoordinates(offsetParent),containerBorder={},elementMargin={},elementBorder={},containerMargin={},offsetParentPadding={};["top","right","bottom","left"].each(function(pad){containerBorder[pad]=this.container.getStyle("border-"+pad).toInt();elementBorder[pad]=this.element.getStyle("border-"+pad).toInt();elementMargin[pad]=this.element.getStyle("margin-"+pad).toInt();containerMargin[pad]=this.container.getStyle("margin-"+pad).toInt();offsetParentPadding[pad]=offsetParent.getStyle("padding-"+pad).toInt();},this);var width=this.element.offsetWidth+elementMargin.left+elementMargin.right,height=this.element.offsetHeight+elementMargin.top+elementMargin.bottom,left=0,top=0,right=containerCoordinates.right-containerBorder.right-width,bottom=containerCoordinates.bottom-containerBorder.bottom-height;if(this.options.includeMargins){left+=elementMargin.left;top+=elementMargin.top;}else{right+=elementMargin.right;bottom+=elementMargin.bottom;}if(this.element.getStyle("position")=="relative"){var coords=this.element.getCoordinates(offsetParent);coords.left-=this.element.getStyle("left").toInt();coords.top-=this.element.getStyle("top").toInt();left+=containerBorder.left-coords.left;top+=containerBorder.top-coords.top;right+=elementMargin.left-coords.left;bottom+=elementMargin.top-coords.top;if(this.container!=offsetParent){left+=containerMargin.left+offsetParentPadding.left;top+=(Browser.Engine.trident4?0:containerMargin.top)+offsetParentPadding.top;}}else{left-=elementMargin.left;top-=elementMargin.top;if(this.container==offsetParent){right-=containerBorder.left;bottom-=containerBorder.top;}else{left+=containerCoordinates.left+containerBorder.left;top+=containerCoordinates.top+containerBorder.top;}}return{x:[left,right],y:[top,bottom]};},checkAgainst:function(el,i){el=(this.positions)?this.positions[i]:el.getCoordinates();var now=this.mouse.now;return(now.x>el.left&&now.x<el.right&&now.y<el.bottom&&now.y>el.top);},checkDroppables:function(){var overed=this.droppables.filter(this.checkAgainst,this).getLast();if(this.overed!=overed){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);}if(overed){this.fireEvent("enter",[this.element,overed]);}this.overed=overed;}},drag:function(event){this.parent(event);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables();}},stop:function(event){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,event]);this.overed=null;return this.parent(event);}});Element.implement({makeDraggable:function(options){var drag=new Drag.Move(this,options);this.store("dragger",drag);return drag;}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false},initialize:function(lists,options){this.setOptions(options);this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(lists)||lists));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,$merge({duration:250,link:"cancel"},this.options.revert));}},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(element){this.elements.push(element);var start=element.retrieve("sortables:start",this.start.bindWithEvent(this,element));(this.options.handle?element.getElement(this.options.handle)||element:element).addEvent("mousedown",start);},this);return this;},addLists:function(){Array.flatten(arguments).each(function(list){this.lists.push(list);this.addItems(list.getChildren());},this);return this;},removeItems:function(){return $$(Array.flatten(arguments).map(function(element){this.elements.erase(element);var start=element.retrieve("sortables:start");(this.options.handle?element.getElement(this.options.handle)||element:element).removeEvent("mousedown",start);return element;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(list){this.lists.erase(list);this.removeItems(list.getChildren());return list;},this));},getClone:function(event,element){if(!this.options.clone){return new Element("div").inject(document.body);}if($type(this.options.clone)=="function"){return this.options.clone.call(this,event,element,this.list);}return element.clone(true).setStyles({margin:"0px",position:"absolute",visibility:"hidden","width":element.getStyle("width")}).inject(this.list).setPosition(element.getPosition(element.getOffsetParent()));},getDroppables:function(){var droppables=this.list.getChildren();if(!this.options.constrain){droppables=this.lists.concat(droppables).erase(this.list);}return droppables.erase(this.clone).erase(this.element);},insert:function(dragging,element){var where="inside";if(this.lists.contains(element)){this.list=element;this.drag.droppables=this.getDroppables();}else{where=this.element.getAllPrevious().contains(element)?"before":"after";}this.element.inject(element,where);this.fireEvent("sort",[this.element,this.clone]);},start:function(event,element){if(!this.idle){return;}this.idle=false;this.element=element;this.opacity=element.get("opacity");this.list=element.getParent();this.clone=this.getClone(event,element);this.drag=new Drag.Move(this.clone,{snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){event.stop();this.clone.setStyle("visibility","visible");this.element.set("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)});this.clone.inject(this.element,"before");this.drag.start(event);},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var dim=this.element.getStyles("width","height");var pos=this.clone.computePosition(this.element.getPosition(this.clone.offsetParent));this.effect.element=this.clone;this.effect.start({top:pos.top,left:pos.left,width:dim.width,height:dim.height,opacity:0.25}).chain(this.reset.bind(this));}else{this.reset();}},reset:function(){this.idle=true;this.clone.destroy();this.fireEvent("complete",this.element);},serialize:function(){var params=Array.link(arguments,{modifier:Function.type,index:$defined});var serial=this.lists.map(function(list){return list.getChildren().map(params.modifier||function(element){return element.get("id");},this);},this);var index=params.index;if(this.lists.length==1){index=0;}return $chk(index)&&index>=0&&index<this.lists.length?serial[index]:serial;}});var Asset={javascript:function(source,properties){properties=$extend({onload:$empty,document:document,check:$lambda(true)},properties);var script=new Element("script",{src:source,type:"text/javascript"});var load=properties.onload.bind(script),check=properties.check,doc=properties.document;delete properties.onload;delete properties.check;delete properties.document;script.addEvents({load:load,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){load();}}}).set(properties);if(Browser.Engine.webkit419){var checker=(function(){if(!$try(check)){return;}$clear(checker);load();}).periodical(50);}return script.inject(doc.head);},css:function(source,properties){return new Element("link",$merge({rel:"stylesheet",media:"screen",type:"text/css",href:source},properties)).inject(document.head);},image:function(source,properties){properties=$merge({onload:$empty,onabort:$empty,onerror:$empty},properties);var image=new Image();var element=document.id(image)||new Element("img");["load","abort","error"].each(function(name){var type="on"+name;var event=properties[type];delete properties[type];image[type]=function(){if(!image){return;}if(!element.parentNode){element.width=image.width;element.height=image.height;}image=image.onload=image.onabort=image.onerror=null;event.delay(1,element,element);element.fireEvent(name,element,1);};});image.src=element.src=source;if(image&&image.complete){image.onload.delay(1);}return element.set(properties);},images:function(sources,options){options=$merge({onComplete:$empty,onProgress:$empty,onError:$empty,properties:{}},options);sources=$splat(sources);var images=[];var counter=0;return new Elements(sources.map(function(source){return Asset.image(source,$extend(options.properties,{onload:function(){options.onProgress.call(this,counter,sources.indexOf(source));counter++;if(counter==sources.length){options.onComplete();}},onerror:function(){options.onError.call(this,counter,sources.indexOf(source));counter++;if(counter==sources.length){options.onComplete();}}}));}));}};var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:"iframeShim",src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.Engine.trident4||(Browser.Engine.gecko&&!Browser.Engine.gecko19&&Browser.Platform.mac))},property:"IframeShim",initialize:function(element,options){this.element=document.id(element);if(this.occlude()){return this.occluded;}this.setOptions(options);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var zIndex=this.element.getStyle("zIndex").toInt();if(!zIndex){zIndex=1;var pos=this.element.getStyle("position");if(pos=="static"||!pos){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",zIndex);}zIndex=($chk(this.options.zIndex)&&zIndex>this.options.zIndex)?this.options.zIndex:zIndex-1;if(zIndex<0){zIndex=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:zIndex,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this);var inject=(function(){this.shim.inject(this.element,"after");this[this.options.display?"show":"hide"]();this.fireEvent("inject");}).bind(this);if(IframeShim.ready){window.addEvent("load",inject);}else{inject();}}else{this.position=this.hide=this.show=this.dispose=$lambda(this);}},position:function(){if(!IframeShim.ready||!this.shim){return this;}var size=this.element.measure(function(){return this.getSize();});if(this.options.margin!=undefined){size.x=size.x-(this.options.margin*2);size.y=size.y-(this.options.margin*2);this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}this.shim.set({width:size.x,height:size.y}).position({relativeTo:this.element,offset:this.options.offset});return this;},hide:function(){if(this.shim){this.shim.setStyle("display","none");}return this;},show:function(){if(this.shim){this.shim.setStyle("display","block");}return this.position();},dispose:function(){if(this.shim){this.shim.dispose();}return this;},destroy:function(){if(this.shim){this.shim.destroy();}return this;}});window.addEvent("load",function(){IframeShim.ready=true;});MooTools.lang.set("en-US","Date",{months:["January","February","March","April","May","June","July","August","September","October","November","December"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"AM",PM:"PM",ordinal:function(dayOfMonth){return(dayOfMonth>3&&dayOfMonth<21)?"th":["th","st","nd","rd","th"][Math.min(dayOfMonth%10,4)];},lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"});MooTools.lang.set("en-US","Form.Validator",{required:"This field is required.",minLength:"Please enter at least {minLength} characters (you entered {length} characters).",maxLength:"Please enter no more than {maxLength} characters (you entered {length} characters).",integer:"Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.",numeric:'Please enter only numeric values in this field (i.e. "1" or "1.1" or "-1" or "-1.1").',digits:"Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).",alpha:"Please use letters only (a-z) with in this field. No spaces or other characters are allowed.",alphanum:"Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.",dateSuchAs:"Please enter a valid date such as {date}",dateInFormatMDY:'Please enter a valid date such as MM/DD/YYYY (i.e. "12/31/1999")',email:'Please enter a valid email address. For example "fred@domain.com".',url:"Please enter a valid URL such as http://www.google.com.",currencyDollar:"Please enter a valid $ amount. For example $100.00 .",oneRequired:"Please enter something for at least one of these inputs.",errorPrefix:"Error: ",warningPrefix:"Warning: ",noSpace:"There can be no spaces in this input.",reqChkByNode:"No items are selected.",requiredChk:"This field is required.",reqChkByName:"Please select a {label}.",match:"This field needs to match the {matchName} field",startDate:"the start date",endDate:"the end date",currendDate:"the current date",afterDate:"The date should be the same or after {label}.",beforeDate:"The date should be the same or before {label}.",startMonth:"Please select a start month",sameMonth:"These two dates must be in the same month - you must change one or the other.",creditcard:"The credit card number entered is invalid. Please check the number and try again. {length} digits entered."});var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else{if(isNaN(chr3)){enc4=64;}}output=output+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4);}return output;},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}if(enc4!=64){output=output+String.fromCharCode(chr3);}}output=Base64._utf8_decode(output);return output;},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}else{if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}}return utftext;},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}else{if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}}return string;}};var CSS=new Class({local:{self:"CSS",limited:["dpi","border-radius"],_rule:""},options:{rules:{}},xhtml:{_style:null},initialize:function(options){this.local=$merge(this.local,this.options,options,this.xhtml);},destroy:function(){if(this.local._style){this.local._style.destroy();}},refresh:function(){var text="";Hash.each(this.local.rules,function(rule,selector){this.local._rule="";Hash.each(rule,this._glue,this);text+=(this.local._rule==""?"":selector+"\n{\n"+this.local._rule+"}\n");},this);this.destroy();this.local._style=new Element("style").set("type","text/css").inject(document.head);switch(Browser.Engine.name){case"trident":this.local._style.styleSheet.cssText=text;break;default:this.local._style.set("text",text);break;}return this;},_glue:function(value,property){if(this[Browser.Engine.name+"_"+property]){var pair;if(pair=this[Browser.Engine.name+"_"+property](value,property)){this.local._rule+="\t"+pair[0]+":"+pair[1]+";\n";}}else{if(!this.local.limited.contains(property)){this.local._rule+="\t"+property+":"+value+";\n";}}},add_prop:function(selector,property,value){var rules={};rules[selector]={};rules[selector][property]=value;return this.add_rules(rules);},add_rule:function(selector,properties){var rules={};rules[selector]=properties;return this.add_rules(rules);},add_rules:function(rules){this.local.rules=$merge(this.local.rules,rules);return this;},remove_prop:function(selector,property){delete this.local.rules[selector][property];return this;},remove_rule:function(selector){delete this.local.rules[selector];return this;},remove_rules:function(selectors){if(selectors){selectors.each(this.remove_rule,this);}else{this.local.rules={};}return this;},check_rule:function(selector){return $defined(this.local.rules[selector]);}});CSS.implement({"trident_opacity":function(value,property){return["filter","alpha(opacity="+(value*100)+")"];},"trident_dpi":function(value,property){if($defined(window.screen.deviceXDPI)){return["font-size",((96/window.screen.deviceXDPI)*value).round()+"%"];}else{return["font-size",value+"%"];}},"gecko_border-radius":function(value,property){return["-moz-"+property,value];},"webkit_border-radius":function(value,property){return["-webkit-"+property,value];}});var GeoHash={BITS:[16,8,4,2,1],BASE32:"0123456789bcdefghjkmnpqrstuvwxyz",NEIGHBORS:{right:{even:"bc01fg45238967deuvhjyznpkmstqrwx"},left:{even:"238967debc01fg45kmstqrwxuvhjyznp"},top:{even:"p0r21436x8zb9dcf5h7kjnmqesgutwvy"},bottom:{even:"14365h7k9dcfesgujnmqp0r2twvyx8zb"}},BORDERS:{right:{even:"bcfguvyz"},left:{even:"0145hjnp"},top:{even:"prxz"},bottom:{even:"028b"}},init:function(){GeoHash.NEIGHBORS.bottom.odd=GeoHash.NEIGHBORS.left.even,GeoHash.NEIGHBORS.top.odd=GeoHash.NEIGHBORS.right.even,GeoHash.NEIGHBORS.left.odd=GeoHash.NEIGHBORS.bottom.even,GeoHash.NEIGHBORS.right.odd=GeoHash.NEIGHBORS.top.even,GeoHash.BORDERS.bottom.odd=GeoHash.BORDERS.left.even;GeoHash.BORDERS.top.odd=GeoHash.BORDERS.right.even;GeoHash.BORDERS.left.odd=GeoHash.BORDERS.bottom.even;GeoHash.BORDERS.right.odd=GeoHash.BORDERS.top.even;},refine_interval:function(interval,cd,mask){if(cd&mask){interval[0]=(interval[0]+interval[1])/2;}else{interval[1]=(interval[0]+interval[1])/2;}},calculateAdjacent:function(srcHash,dir){srcHash=srcHash.toLowerCase();var lastChr=srcHash.charAt(srcHash.length-1);var type=(srcHash.length%2)?"odd":"even";var base=srcHash.substring(0,srcHash.length-1);if(GeoHash.BORDERS[dir][type].indexOf(lastChr)!=-1){base=GeoHash.calculateAdjacent(base,dir);}return base+GeoHash.BASE32[GeoHash.NEIGHBORS[dir][type].indexOf(lastChr)];},decodeGeoHash:function(geohash){var is_even=1;var lat=[];var lon=[];lat[0]=-90;lat[1]=90;lon[0]=-180;lon[1]=180;lat_err=90;lon_err=180;for(i=0;i<geohash.length;i++){c=geohash[i];cd=GeoHash.BASE32.indexOf(c);for(j=0;j<5;j++){mask=GeoHash.BITS[j];if(is_even){lon_err/=2;GeoHash.refine_interval(lon,cd,mask);}else{lat_err/=2;GeoHash.refine_interval(lat,cd,mask);}is_even=!is_even;}}lat[2]=(lat[0]+lat[1])/2;lon[2]=(lon[0]+lon[1])/2;return{lat:lat,lng:lon};},encodeGeoHash:function(latitude,longitude){var is_even=1;var i=0;var lat=[];var lon=[];var bit=0;var ch=0;var precision=12;geohash="";lat[0]=-90;lat[1]=90;lon[0]=-180;lon[1]=180;while(geohash.length<precision){if(is_even){mid=(lon[0]+lon[1])/2;if(longitude>mid){ch|=GeoHash.BITS[bit];lon[0]=mid;}else{lon[1]=mid;}}else{mid=(lat[0]+lat[1])/2;if(latitude>mid){ch|=GeoHash.BITS[bit];lat[0]=mid;}else{lat[1]=mid;}}is_even=!is_even;if(bit<4){bit++;}else{geohash+=GeoHash.BASE32[ch];bit=0;ch=0;}}return geohash;}};GeoHash.init();var HistoryManager=(function(){var HistoryManagerSingleton=new Class({initialize:function(){this._currentLocation=this._getHash();var historyManager=this;if(window.ie){this.addState=this._addStateIE;this._iframe=new Element("iframe",{src:"javascript:'<html></html>'",styles:{"position":"absolute","top":"-1000px"}}).inject(document.body).contentWindow;$justForIE=function(hash){historyManager._getHash=function(){return hash;};historyManager._monitorDefault.call(historyManager);location.hash=hash;};function waitForIframeLoad(){if(historyManager._iframe&&historyManager._iframe.document&&historyManager._iframe.document.body){if(!historyManager._iframe.document.body.innerHTML){historyManager.addState(historyManager._currentLocation,true);}}else{setTimeout(waitForIframeLoad,50);}}waitForIframeLoad();}else{if(window.webkit419){this._form=new Element("form",{method:"get"}).inject(document.body);this._historyCounter=history.length;this._stateHistory=[];this._stateHistory[history.length]=this._getHash();this.addState=this._addStateSafari;this._monitorSafari.periodical(250,this);}else{if(window.opera){this.addState=this._addStateDefault;$justForOpera=function(){historyManager._monitorDefault.call(historyManager);};new Element("img",{src:"javascript:location.href='javascript:$justForOpera();';",style:"position: absolute; top: -1000px;"}).inject(document.body);}else{this.addState=this._addStateDefault;this._monitorDefault.periodical(250,this);}}}},getCurrentLocation:function(){return this._currentLocation;},_getHash:function(){return location.href.split("#")[1]||"";},_addStateIE:function(hash,override){if(this._currentLocation==hash&&!override){return;}this._currentLocation=hash;this._iframe.document.write("<html><body onload=\"top.$justForIE('",hash,"');\">Loaded</body></html>");this._iframe.document.close();},_addStateSafari:function(hash){if(this._currentLocation==hash){return;}this._form.setProperty("action","#"+hash).submit();this._currentLocation=hash;this._stateHistory[history.length]=this._getHash();this._historyCounter=history.length;},_monitorSafari:function(){if(history.length!=this._historyCounter){this._historyCounter=history.length;this._currentLocation=this._stateHistory[history.length];this.fireEvent("onHistoryChange",[this._stateHistory[history.length]]);}},_addStateDefault:function(hash){if(this._currentLocation==hash){return;}location.hash="#"+hash;this._currentLocation=hash;},_monitorDefault:function(){var hash=this._getHash();if(hash!=this._currentLocation){this._currentLocation=hash;this.fireEvent("onHistoryChange",[hash]);}}});HistoryManagerSingleton.implement(new Events);var singleton;return function(){return singleton?singleton:singleton=new HistoryManagerSingleton();};})();var JSJAC_HAVEKEYS=true;var JSJAC_NKEYS=16;var JSJAC_INACTIVITY=300;var JSJAC_ERR_COUNT=10;var JSJAC_ALLOW_PLAIN=true;var JSJAC_CHECKQUEUEINTERVAL=500;var JSJAC_CHECKINQUEUEINTERVAL=500;var JSJACHBC_BOSH_VERSION="1.6";var JSJACHBC_USE_BOSH_VER=true;var JSJACHBC_MAX_HOLD=1;var JSJACHBC_MAX_WAIT=300;var JSJACHBC_MAXPAUSE=120;String.prototype.htmlEnc=function(){var str=this.replace(/&/g,"&amp;");str=str.replace(/</g,"&lt;");str=str.replace(/>/g,"&gt;");str=str.replace(/\"/g,"&quot;");str=str.replace(/\n/g,"<br />");return str;};Date.jab2date=function(ts){var date=new Date(Date.UTC(ts.substr(0,4),ts.substr(5,2)-1,ts.substr(8,2),ts.substr(11,2),ts.substr(14,2),ts.substr(17,2)));if(ts.substr(ts.length-6,1)!="Z"){var offset=new Date();offset.setTime(0);offset.setUTCHours(ts.substr(ts.length-5,2));offset.setUTCMinutes(ts.substr(ts.length-2,2));if(ts.substr(ts.length-6,1)=="+"){date.setTime(date.getTime()-offset.getTime());}else{if(ts.substr(ts.length-6,1)=="-"){date.setTime(date.getTime()+offset.getTime());}}}return date;};Date.hrTime=function(ts){return Date.jab2date(ts).toLocaleString();};Date.prototype.jabberDate=function(){var padZero=function(i){if(i<10){return"0"+i;}return i;};var jDate=this.getUTCFullYear()+"-";jDate+=padZero(this.getUTCMonth()+1)+"-";jDate+=padZero(this.getUTCDate())+"T";jDate+=padZero(this.getUTCHours())+":";jDate+=padZero(this.getUTCMinutes())+":";jDate+=padZero(this.getUTCSeconds())+"Z";return jDate;};Number.max=function(A,B){return(A>B)?A:B;};var hexcase=0;var b64pad="=";var chrsz=8;function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length*chrsz));}function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length*chrsz));}function hex_hmac_sha1(key,data){return binb2hex(core_hmac_sha1(key,data));}function b64_hmac_sha1(key,data){return binb2b64(core_hmac_sha1(key,data));}function str_hmac_sha1(key,data){return binb2str(core_hmac_sha1(key,data));}function sha1_vm_test(){return hex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d";}function core_sha1(x,len){x[len>>5]|=128<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;var olde=e;for(var j=0;j<80;j++){if(j<16){w[j]=x[i+j];}else{w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);}var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;}a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);}return Array(a,b,c,d,e);}function sha1_ft(t,b,c,d){if(t<20){return(b&c)|((~b)&d);}if(t<40){return b^c^d;}if(t<60){return(b&c)|(b&d)|(c&d);}return b^c^d;}function sha1_kt(t){return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;}function core_hmac_sha1(key,data){var bkey=str2binb(key);if(bkey.length>16){bkey=core_sha1(bkey,key.length*chrsz);}var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^909522486;opad[i]=bkey[i]^1549556828;}var hash=core_sha1(ipad.concat(str2binb(data)),512+data.length*chrsz);return core_sha1(opad.concat(hash),512+160);}function rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt));}function str2binb(str){var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz){bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(32-chrsz-i%32);}return bin;}function binb2str(bin){var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz){str+=String.fromCharCode((bin[i>>5]>>>(32-chrsz-i%32))&mask);}return str;}function binb2hex(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&15)+hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&15);}return str;}function binb2b64(binarray){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3){var triplet=(((binarray[i>>2]>>8*(3-i%4))&255)<<16)|(((binarray[i+1>>2]>>8*(3-(i+1)%4))&255)<<8)|((binarray[i+2>>2]>>8*(3-(i+2)%4))&255);for(var j=0;j<4;j++){if(i*8+j*6>binarray.length*32){str+=b64pad;}else{str+=tab.charAt((triplet>>6*(3-j))&63);}}}return str;}function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));}function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz));}function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz));}function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data));}function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data));}function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data));}function md5_vm_test(){return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";}function core_md5(x,len){x[len>>5]|=128<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}return Array(a,b,c,d);}function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}function md5_ff(a,b,c,d,x,s,t){return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}function md5_gg(a,b,c,d,x,s,t){return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t);}function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|(~d)),a,b,x,s,t);}function core_hmac_md5(key,data){var bkey=str2binl(key);if(bkey.length>16){bkey=core_md5(bkey,key.length*chrsz);}var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^909522486;opad[i]=bkey[i]^1549556828;}var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128);}function safe_add(x,y){var lsw=(x&65535)+(y&65535);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&65535);}function bit_rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt));}function str2binl(str){var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz){bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);}return bin;}function binl2str(bin){var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz){str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);}return str;}function binl2hex(binarray){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++){str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&15)+hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&15);}return str;}function binl2b64(binarray){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3){var triplet=(((binarray[i>>2]>>8*(i%4))&255)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&255)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&255);for(var j=0;j<4;j++){if(i*8+j*6>binarray.length*32){str+=b64pad;}else{str+=tab.charAt((triplet>>6*(3-j))&63);}}}return str;}function utf8t2d(t){t=t.replace(/\r\n/g,"\n");var d=new Array;var test=String.fromCharCode(237);if(test.charCodeAt(0)<0){for(var n=0;n<t.length;n++){var c=t.charCodeAt(n);if(c>0){d[d.length]=c;}else{d[d.length]=(((256+c)>>6)|192);d[d.length]=(((256+c)&63)|128);}}}else{for(var n=0;n<t.length;n++){var c=t.charCodeAt(n);if(c<128){d[d.length]=c;}else{if((c>127)&&(c<2048)){d[d.length]=((c>>6)|192);d[d.length]=((c&63)|128);}else{d[d.length]=((c>>12)|224);d[d.length]=(((c>>6)&63)|128);d[d.length]=((c&63)|128);}}}}return d;}function utf8d2t(d){var r=new Array;var i=0;while(i<d.length){if(d[i]<128){r[r.length]=String.fromCharCode(d[i]);i++;}else{if((d[i]>191)&&(d[i]<224)){r[r.length]=String.fromCharCode(((d[i]&31)<<6)|(d[i+1]&63));i+=2;}else{r[r.length]=String.fromCharCode(((d[i]&15)<<12)|((d[i+1]&63)<<6)|(d[i+2]&63));i+=3;}}}return r.join("");}function b64arrays(){var b64s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";b64=new Array();f64=new Array();for(var i=0;i<b64s.length;i++){b64[i]=b64s.charAt(i);f64[b64s.charAt(i)]=i;}}function b64d2t(d){var r=new Array;var i=0;var dl=d.length;if((dl%3)==1){d[d.length]=0;d[d.length]=0;}if((dl%3)==2){d[d.length]=0;}while(i<d.length){r[r.length]=b64[d[i]>>2];r[r.length]=b64[((d[i]&3)<<4)|(d[i+1]>>4)];r[r.length]=b64[((d[i+1]&15)<<2)|(d[i+2]>>6)];r[r.length]=b64[d[i+2]&63];i+=3;}if((dl%3)==1){r[r.length-1]=r[r.length-2]="=";}if((dl%3)==2){r[r.length-1]="=";}var t=r.join("");return t;}function b64t2d(t){var d=new Array;var i=0;t=t.replace(/\n|\r/g,"");t=t.replace(/=/g,"");while(i<t.length){d[d.length]=(f64[t.charAt(i)]<<2)|(f64[t.charAt(i+1)]>>4);d[d.length]=(((f64[t.charAt(i+1)]&15)<<4)|(f64[t.charAt(i+2)]>>2));d[d.length]=(((f64[t.charAt(i+2)]&3)<<6)|(f64[t.charAt(i+3)]));i+=4;}if(t.length%4==2){d=d.slice(0,d.length-2);}if(t.length%4==3){d=d.slice(0,d.length-1);}return d;}if(typeof(atob)=="undefined"||typeof(btoa)=="undefined"){b64arrays();}if(typeof(atob)=="undefined"){atob=function(s){return utf8d2t(b64t2d(s));};}if(typeof(btoa)=="undefined"){btoa=function(s){return b64d2t(utf8t2d(s));};}function cnonce(size){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";var cnonce="";for(var i=0;i<size;i++){cnonce+=tab.charAt(Math.round(Math.random(new Date().getTime())*(tab.length-1)));}return cnonce;}function JSJaCJSON(){}JSJaCJSON.toString=function(obj){var m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},s={array:function(x){var a=["["],b,f,i,l=x.length,v;for(i=0;i<l;i+=1){v=x[i];f=s[typeof v];if(f){v=f(v);if(typeof v=="string"){if(b){a[a.length]=",";}a[a.length]=v;b=true;}}}a[a.length]="]";return a.join("");},"boolean":function(x){return String(x);},"null":function(x){return"null";},number:function(x){return isFinite(x)?String(x):"null";},object:function(x){if(x){if(x instanceof Array){return s.array(x);}var a=["{"],b,f,i,v;for(i in x){if(x.hasOwnProperty(i)){v=x[i];f=s[typeof v];if(f){v=f(v);if(typeof v=="string"){if(b){a[a.length]=",";}a.push(s.string(i),":",v);b=true;}}}}a[a.length]="}";return a.join("");}return"null";},string:function(x){if(/["\\\x00-\x1f]/.test(x)){x=x.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'"'+x+'"';}};switch(typeof(obj)){case"object":return s.object(obj);case"array":return s.array(obj);}};JSJaCJSON.parse=function(str){try{return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(str.replace(/"(\\.|[^"\\])*"/g,"")))&&eval("("+str+")");}catch(e){return false;}};function XmlHttp(){}XmlHttp.create=function(){try{if(window.XMLHttpRequest){var req=new XMLHttpRequest();if(req.readyState==null){req.readyState=1;req.addEventListener("load",function(){req.readyState=4;if(typeof req.onreadystatechange=="function"){req.onreadystatechange();}},false);}return req;}if(window.ActiveXObject){return new ActiveXObject(XmlHttp.getPrefix()+".XmlHttp");}}catch(ex){}throw new Error("Your browser does not support XmlHttp objects");};XmlHttp.getPrefix=function(){if(XmlHttp.prefix){return XmlHttp.prefix;}var prefixes=["MSXML2","Microsoft","MSXML","MSXML3"];var o;for(var i=0;i<prefixes.length;i++){try{o=new ActiveXObject(prefixes[i]+".XmlHttp");return XmlHttp.prefix=prefixes[i];}catch(ex){}}throw new Error("Could not find an installed XML parser");};function XmlDocument(){}XmlDocument.create=function(name,ns){name=name||"foo";ns=ns||"";try{var doc;if(document.implementation&&document.implementation.createDocument){doc=document.implementation.createDocument(ns,name,null);if(doc.readyState==null){doc.readyState=1;doc.addEventListener("load",function(){doc.readyState=4;if(typeof doc.onreadystatechange=="function"){doc.onreadystatechange();}},false);}}else{if(window.ActiveXObject){doc=new ActiveXObject(XmlDocument.getPrefix()+".DomDocument");}}if(!doc.documentElement||doc.documentElement.tagName!=name||(doc.documentElement.namespaceURI&&doc.documentElement.namespaceURI!=ns)){try{if(ns!=""){doc.appendChild(doc.createElement(name)).setAttribute("xmlns",ns);}else{doc.appendChild(doc.createElement(name));}}catch(dex){doc=document.implementation.createDocument(ns,name,null);if(doc.documentElement==null){doc.appendChild(doc.createElement(name));}if(ns!=""&&doc.documentElement.getAttribute("xmlns")!=ns){doc.documentElement.setAttribute("xmlns",ns);}}}return doc;}catch(ex){alert(ex.name+": "+ex.message);}throw new Error("Your browser does not support XmlDocument objects");};XmlDocument.getPrefix=function(){if(XmlDocument.prefix){return XmlDocument.prefix;}var prefixes=["MSXML2","Microsoft","MSXML","MSXML3"];var o;for(var i=0;i<prefixes.length;i++){try{o=new ActiveXObject(prefixes[i]+".DomDocument");return XmlDocument.prefix=prefixes[i];}catch(ex){}}throw new Error("Could not find an installed XML parser");};if(typeof(Document)!="undefined"&&window.DOMParser){Document.prototype.loadXML=function(s){var doc2=(new DOMParser()).parseFromString(s,"text/xml");while(this.hasChildNodes()){this.removeChild(this.lastChild);}for(var i=0;i<doc2.childNodes.length;i++){this.appendChild(this.importNode(doc2.childNodes[i],true));}};}if(window.XMLSerializer&&window.Node&&Node.prototype&&Node.prototype.__defineGetter__){XMLDocument.prototype.__defineGetter__("xml",function(){return(new XMLSerializer()).serializeToString(this);});Document.prototype.__defineGetter__("xml",function(){return(new XMLSerializer()).serializeToString(this);});Node.prototype.__defineGetter__("xml",function(){return(new XMLSerializer()).serializeToString(this);});}var JSJaCBuilder={buildNode:function(doc,elementName){var element;if(arguments[2]){if(JSJaCBuilder._isStringOrNumber(arguments[2])||(arguments[2] instanceof Array)){element=doc.createElement(elementName);JSJaCBuilder._children(doc,element,arguments[2]);}else{if(arguments[2]["xmlns"]){try{element=doc.createElementNS(arguments[2]["xmlns"],elementName);}catch(e){element=doc.createElement(elementName);}}else{element=doc.createElement(elementName);}for(attr in arguments[2]){if(arguments[2].hasOwnProperty(attr)){if(attr=="xmlns"&&element.namespaceURI==attr){continue;}element.setAttribute(attr,arguments[2][attr]);}}}}else{element=doc.createElement(elementName);}if(arguments[3]){JSJaCBuilder._children(doc,element,arguments[3]);}return element;},_text:function(doc,text){return doc.createTextNode(text);},_children:function(doc,element,children){if(typeof children=="object"){for(var i in children){if(children.hasOwnProperty(i)){var e=children[i];if(typeof e=="object"){if(e instanceof Array){var node=JSJaCBuilder.buildNode(doc,e[0],e[1],e[2]);element.appendChild(node);}else{element.appendChild(e);}}else{if(JSJaCBuilder._isStringOrNumber(e)){element.appendChild(JSJaCBuilder._text(doc,e));}}}}}else{if(JSJaCBuilder._isStringOrNumber(children)){element.appendChild(JSJaCBuilder._text(doc,children));}}},_attributes:function(attributes){var attrs=[];for(attribute in attributes){if(attributes.hasOwnProperty(attribute)){attrs.push(attribute+'="'+attributes[attribute].toString().htmlEnc()+'"');}}return attrs.join(" ");},_isStringOrNumber:function(param){return(typeof param=="string"||typeof param=="number");}};var NS_DISCO_ITEMS="http://jabber.org/protocol/disco#items";var NS_DISCO_INFO="http://jabber.org/protocol/disco#info";var NS_VCARD="vcard-temp";var NS_AUTH="jabber:iq:auth";var NS_AUTH_ERROR="jabber:iq:auth:error";var NS_REGISTER="jabber:iq:register";var NS_SEARCH="jabber:iq:search";var NS_ROSTER="jabber:iq:roster";var NS_PRIVACY="jabber:iq:privacy";var NS_PRIVATE="jabber:iq:private";var NS_VERSION="jabber:iq:version";var NS_TIME="jabber:iq:time";var NS_LAST="jabber:iq:last";var NS_XDATA="jabber:x:data";var NS_IQDATA="jabber:iq:data";var NS_DELAY="jabber:x:delay";var NS_EXPIRE="jabber:x:expire";var NS_EVENT="jabber:x:event";var NS_XCONFERENCE="jabber:x:conference";var NS_STATS="http://jabber.org/protocol/stats";var NS_MUC="http://jabber.org/protocol/muc";var NS_MUC_USER="http://jabber.org/protocol/muc#user";var NS_MUC_ADMIN="http://jabber.org/protocol/muc#admin";var NS_MUC_OWNER="http://jabber.org/protocol/muc#owner";var NS_PUBSUB="http://jabber.org/protocol/pubsub";var NS_PUBSUB_EVENT="http://jabber.org/protocol/pubsub#event";var NS_PUBSUB_OWNER="http://jabber.org/protocol/pubsub#owner";var NS_PUBSUB_NMI="http://jabber.org/protocol/pubsub#node-meta-info";var NS_COMMANDS="http://jabber.org/protocol/commands";var NS_STREAM="http://etherx.jabber.org/streams";var NS_STANZAS="urn:ietf:params:xml:ns:xmpp-stanzas";var NS_STREAMS="urn:ietf:params:xml:ns:xmpp-streams";var NS_TLS="urn:ietf:params:xml:ns:xmpp-tls";var NS_SASL="urn:ietf:params:xml:ns:xmpp-sasl";var NS_SESSION="urn:ietf:params:xml:ns:xmpp-session";var NS_BIND="urn:ietf:params:xml:ns:xmpp-bind";var NS_FEATURE_IQAUTH="http://jabber.org/features/iq-auth";var NS_FEATURE_IQREGISTER="http://jabber.org/features/iq-register";var NS_FEATURE_COMPRESS="http://jabber.org/features/compress";var NS_COMPRESS="http://jabber.org/protocol/compress";function STANZA_ERROR(code,type,cond){if(window==this){return new STANZA_ERROR(code,type,cond);}this.code=code;this.type=type;this.cond=cond;}var ERR_BAD_REQUEST=STANZA_ERROR("400","modify","bad-request");var ERR_CONFLICT=STANZA_ERROR("409","cancel","conflict");var ERR_FEATURE_NOT_IMPLEMENTED=STANZA_ERROR("501","cancel","feature-not-implemented");var ERR_FORBIDDEN=STANZA_ERROR("403","auth","forbidden");var ERR_GONE=STANZA_ERROR("302","modify","gone");var ERR_INTERNAL_SERVER_ERROR=STANZA_ERROR("500","wait","internal-server-error");var ERR_ITEM_NOT_FOUND=STANZA_ERROR("404","cancel","item-not-found");var ERR_JID_MALFORMED=STANZA_ERROR("400","modify","jid-malformed");var ERR_NOT_ACCEPTABLE=STANZA_ERROR("406","modify","not-acceptable");var ERR_NOT_ALLOWED=STANZA_ERROR("405","cancel","not-allowed");var ERR_NOT_AUTHORIZED=STANZA_ERROR("401","auth","not-authorized");var ERR_PAYMENT_REQUIRED=STANZA_ERROR("402","auth","payment-required");var ERR_RECIPIENT_UNAVAILABLE=STANZA_ERROR("404","wait","recipient-unavailable");var ERR_REDIRECT=STANZA_ERROR("302","modify","redirect");var ERR_REGISTRATION_REQUIRED=STANZA_ERROR("407","auth","registration-required");var ERR_REMOTE_SERVER_NOT_FOUND=STANZA_ERROR("404","cancel","remote-server-not-found");var ERR_REMOTE_SERVER_TIMEOUT=STANZA_ERROR("504","wait","remote-server-timeout");var ERR_RESOURCE_CONSTRAINT=STANZA_ERROR("500","wait","resource-constraint");var ERR_SERVICE_UNAVAILABLE=STANZA_ERROR("503","cancel","service-unavailable");var ERR_SUBSCRIPTION_REQUIRED=STANZA_ERROR("407","auth","subscription-required");var ERR_UNEXPECTED_REQUEST=STANZA_ERROR("400","wait","unexpected-request");function JSJaCConnection(oArg){if(oArg&&oArg.oDbg&&oArg.oDbg.log){this.oDbg=oArg.oDbg;}else{this.oDbg=new Object();this.oDbg.log=function(){};}if(oArg&&oArg.httpbase){this._httpbase=oArg.httpbase;}if(oArg&&oArg.allow_plain){this.allow_plain=oArg.allow_plain;}else{this.allow_plain=JSJAC_ALLOW_PLAIN;}this._connected=false;this._events=new Array();this._keys=null;this._ID=0;this._inQ=new Array();this._pQueue=new Array();this._regIDs=new Array();this._req=new Array();this._status="intialized";this._errcnt=0;this._inactivity=JSJAC_INACTIVITY;this._sendRawCallbacks=new Array();if(oArg&&oArg.timerval){this.setPollInterval(oArg.timerval);}}JSJaCConnection.prototype.connect=function(oArg){this._setStatus("connecting");this.domain=oArg.domain||"localhost";this.username=oArg.username;this.resource=oArg.resource;this.pass=oArg.pass;this.register=oArg.register;this.authhost=oArg.authhost||this.domain;this.authtype=oArg.authtype||"sasl";if(oArg.xmllang&&oArg.xmllang!=""){this._xmllang=oArg.xmllang;}this.host=oArg.host||this.domain;this.port=oArg.port||5222;if(oArg.secure){this.secure="true";}else{this.secure="false";}if(oArg.wait){this._wait=oArg.wait;}this.jid=this.username+"@"+this.domain;this.fulljid=this.jid+"/"+this.resource;this._rid=Math.round(100000.5+(((900000.49999)-(100000.5))*Math.random()));var slot=this._getFreeSlot();this._req[slot]=this._setupRequest(true);var reqstr=this._getInitialRequestString();this.oDbg.log(reqstr,4);this._req[slot].r.onreadystatechange=JSJaC.bind(function(){if(this._req[slot].r.readyState==4){this.oDbg.log("async recv: "+this._req[slot].r.responseText,4);this._handleInitialResponse(slot);}},this);if(typeof(this._req[slot].r.onerror)!="undefined"){this._req[slot].r.onerror=JSJaC.bind(function(e){this.oDbg.log("XmlHttpRequest error",1);return false;},this);}this._req[slot].r.send(reqstr);};JSJaCConnection.prototype.connected=function(){return this._connected;};JSJaCConnection.prototype.disconnect=function(){this._setStatus("disconnecting");if(!this.connected()){return;}this._connected=false;clearInterval(this._interval);clearInterval(this._inQto);if(this._timeout){clearTimeout(this._timeout);}var slot=this._getFreeSlot();this._req[slot]=this._setupRequest(false);request=this._getRequestString(false,true);this.oDbg.log("Disconnecting: "+request,4);this._req[slot].r.send(request);try{JSJaCCookie.read("JSJaC_State").erase();}catch(e){}this.oDbg.log("Disconnected: "+this._req[slot].r.responseText,2);this._handleEvent("ondisconnect");};JSJaCConnection.prototype.getPollInterval=function(){return this._timerval;};JSJaCConnection.prototype.registerHandler=function(event){event=event.toLowerCase();var eArg={handler:arguments[arguments.length-1],childName:"*",childNS:"*",type:"*"};if(arguments.length>2){eArg.childName=arguments[1];}if(arguments.length>3){eArg.childNS=arguments[2];}if(arguments.length>4){eArg.type=arguments[3];}if(!this._events[event]){this._events[event]=new Array(eArg);}else{this._events[event]=this._events[event].concat(eArg);}this._events[event]=this._events[event].sort(function(a,b){var aRank=0;var bRank=0;with(a){if(type=="*"){aRank++;}if(childNS=="*"){aRank++;}if(childName=="*"){aRank++;}}with(b){if(type=="*"){bRank++;}if(childNS=="*"){bRank++;}if(childName=="*"){bRank++;}}if(aRank>bRank){return 1;}if(aRank<bRank){return -1;}return 0;});this.oDbg.log("registered handler for event '"+event+"'",2);};JSJaCConnection.prototype.unregisterHandler=function(event,handler){event=event.toLowerCase();if(!this._events[event]){return;}var arr=this._events[event],res=new Array();for(var i=0;i<arr.length;i++){if(arr[i].handler!=handler){res.push(arr[i]);}}if(arr.length!=res.length){this._events[event]=res;this.oDbg.log("unregistered handler for event '"+event+"'",2);}};JSJaCConnection.prototype.registerIQGet=function(childName,childNS,handler){this.registerHandler("iq",childName,childNS,"get",handler);};JSJaCConnection.prototype.registerIQSet=function(childName,childNS,handler){this.registerHandler("iq",childName,childNS,"set",handler);};JSJaCConnection.prototype.resume=function(){try{this._setStatus("resuming");var s=unescape(JSJaCCookie.read("JSJaC_State").getValue());this.oDbg.log("read cookie: "+s,2);var o=JSJaCJSON.parse(s);for(var i in o){if(o.hasOwnProperty(i)){this[i]=o[i];}}if(this._keys){this._keys2=new JSJaCKeys();var u=this._keys2._getSuspendVars();for(var i=0;i<u.length;i++){this._keys2[u[i]]=this._keys[u[i]];}this._keys=this._keys2;}try{JSJaCCookie.read("JSJaC_State").erase();}catch(e){}if(this._connected){this._handleEvent("onresume");setTimeout(JSJaC.bind(this._resume,this),this.getPollInterval());this._interval=setInterval(JSJaC.bind(this._checkQueue,this),JSJAC_CHECKQUEUEINTERVAL);this._inQto=setInterval(JSJaC.bind(this._checkInQ,this),JSJAC_CHECKINQUEUEINTERVAL);}return(this._connected===true);}catch(e){if(e.message){this.oDbg.log("Resume failed: "+e.message,1);}else{this.oDbg.log("Resume failed: "+e,1);}return false;}};JSJaCConnection.prototype.send=function(packet,cb,arg){if(!packet||!packet.pType){this.oDbg.log("no packet: "+packet,1);return false;}if(!this.connected()){return false;}if(cb){if(!packet.getID()){packet.setID("JSJaCID_"+this._ID++);}this._registerPID(packet.getID(),cb,arg);}try{this._handleEvent(packet.pType()+"_out",packet);this._handleEvent("packet_out",packet);this._pQueue=this._pQueue.concat(packet.xml());}catch(e){this.oDbg.log(e.toString(),1);return false;}return true;};JSJaCConnection.prototype.sendIQ=function(iq,handlers,arg){if(!iq||iq.pType()!="iq"){return false;}handlers=handlers||{};var error_handler=handlers.error_handler||function(aIq){this.oDbg.log(iq.xml(),1);};var result_handler=handlers.result_handler||function(aIq){this.oDbg.log(aIq.xml(),2);};var default_handler=handlers.default_handler||function(aIq){this.oDbg.log(aIq.xml(),2);};var iqHandler=function(aIq,arg){switch(aIq.getType()){case"error":error_handler(aIq);break;case"result":result_handler(aIq,arg);break;default:default_handler(aIq,arg);}};return this.send(iq,iqHandler,arg);};JSJaCConnection.prototype.setPollInterval=function(timerval){if(timerval&&!isNaN(timerval)){this._timerval=timerval;}return this._timerval;};JSJaCConnection.prototype.status=function(){return this._status;};JSJaCConnection.prototype.suspend=function(){clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._suspend();var u=("_connected,_keys,_ID,_inQ,_pQueue,_regIDs,_errcnt,_inactivity,domain,username,resource,jid,fulljid,_sid,_httpbase,_timerval,_is_polling").split(",");u=u.concat(this._getSuspendVars());var s=new Object();for(var i=0;i<u.length;i++){if(!this[u[i]]){continue;}if(this[u[i]]._getSuspendVars){var uo=this[u[i]]._getSuspendVars();var o=new Object();for(var j=0;j<uo.length;j++){o[uo[j]]=this[u[i]][uo[j]];}}else{var o=this[u[i]];}s[u[i]]=o;}var c=new JSJaCCookie("JSJaC_State",escape(JSJaCJSON.toString(s)),this._inactivity);this.oDbg.log("writing cookie: "+unescape(c.value)+"\n(length:"+unescape(c.value).length+")",2);c.write();try{var c2=JSJaCCookie.read("JSJaC_State");if(c.value!=c2.value){this.oDbg.log("Suspend failed writing cookie.\nRead: "+unescape(JSJaCCookie.read("JSJaC_State")),1);c.erase();}this._connected=false;this._setStatus("suspending");}catch(e){this.oDbg.log("Failed reading cookie 'JSJaC_State': "+e.message);}};JSJaCConnection.prototype._abort=function(){clearTimeout(this._timeout);clearInterval(this._inQto);clearInterval(this._interval);this._connected=false;this._setStatus("aborted");this.oDbg.log("Disconnected.",1);this._handleEvent("ondisconnect");this._handleEvent("onerror",JSJaCError("500","cancel","service-unavailable"));};JSJaCConnection.prototype._checkInQ=function(){for(var i=0;i<this._inQ.length&&i<10;i++){var item=this._inQ[0];this._inQ=this._inQ.slice(1,this._inQ.length);var packet=JSJaCPacket.wrapNode(item);if(!packet){return;}this._handleEvent("packet_in",packet);if(packet.pType&&!this._handlePID(packet)){this._handleEvent(packet.pType()+"_in",packet);this._handleEvent(packet.pType(),packet);}}};JSJaCConnection.prototype._checkQueue=function(){if(this._pQueue.length!=0){this._process();}return true;};JSJaCConnection.prototype._doAuth=function(){if(this.has_sasl&&this.authtype=="nonsasl"){this.oDbg.log("Warning: SASL present but not used",1);}if(!this._doSASLAuth()&&!this._doLegacyAuth()){this.oDbg.log("Auth failed for authtype "+this.authtype,1);this.disconnect();return false;}return true;};JSJaCConnection.prototype._doInBandReg=function(){if(this.authtype=="saslanon"||this.authtype=="anonymous"){return;}var iq=new JSJaCIQ();iq.setType("set");iq.setID("reg1");iq.appendNode("query",{xmlns:"jabber:iq:register"},[["username",this.username],["password",this.pass]]);this.send(iq,this._doInBandRegDone);};JSJaCConnection.prototype._doInBandRegDone=function(iq){if(iq&&iq.getType()=="error"){this.oDbg.log("registration failed for "+this.username,0);this._handleEvent("onerror",iq.getChild("error"));return;}this.oDbg.log(this.username+" registered succesfully",0);this._doAuth();};JSJaCConnection.prototype._doLegacyAuth=function(){if(this.authtype!="nonsasl"&&this.authtype!="anonymous"){return false;}var iq=new JSJaCIQ();iq.setIQ(this.server,"get","auth1");iq.appendNode("query",{xmlns:"jabber:iq:auth"},[["username",this.username]]);this.send(iq,this._doLegacyAuth2);return true;};JSJaCConnection.prototype._doLegacyAuth2=function(iq){if(!iq||iq.getType()!="result"){if(iq&&iq.getType()=="error"){this._handleEvent("onerror",iq.getChild("error"));}this.disconnect();return;}var use_digest=(iq.getChild("digest")!=null);var iq=new JSJaCIQ();iq.setIQ(this.server,"set","auth2");query=iq.appendNode("query",{xmlns:"jabber:iq:auth"},[["username",this.username],["resource",this.resource]]);if(use_digest){query.appendChild(iq.buildNode("digest",hex_sha1(this.streamid+this.pass)));}else{if(this.allow_plain){query.appendChild(iq.buildNode("password",this.pass));}else{this.oDbg.log("no valid login mechanism found",1);this.disconnect();return false;}}this.send(iq,this._doLegacyAuthDone);};JSJaCConnection.prototype._doLegacyAuthDone=function(iq){if(iq.getType()!="result"){if(iq.getType()=="error"){this._handleEvent("onerror",iq.getChild("error"));}this.disconnect();}else{this._handleEvent("onconnect");}};JSJaCConnection.prototype._doSASLAuth=function(){if(this.authtype=="nonsasl"||this.authtype=="anonymous"){return false;}if(this.authtype=="saslanon"){if(this.mechs["ANONYMOUS"]){this.oDbg.log("SASL using mechanism 'ANONYMOUS'",2);return this._sendRaw("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='ANONYMOUS'/>",this._doSASLAuthDone);}this.oDbg.log("SASL ANONYMOUS requested but not supported",1);}else{if(this.mechs["DIGEST-MD5"]){this.oDbg.log("SASL using mechanism 'DIGEST-MD5'",2);return this._sendRaw("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'/>",this._doSASLAuthDigestMd5S1);}else{if(this.allow_plain&&this.mechs["PLAIN"]){this.oDbg.log("SASL using mechanism 'PLAIN'",2);var authStr=this.username+"@"+this.domain+String.fromCharCode(0)+this.username+String.fromCharCode(0)+this.pass;this.oDbg.log("authenticating with '"+authStr+"'",2);authStr=btoa(authStr);return this._sendRaw("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>"+authStr+"</auth>",this._doSASLAuthDone);}}this.oDbg.log("No SASL mechanism applied",1);this.authtype="nonsasl";}return false;};JSJaCConnection.prototype._doSASLAuthDigestMd5S1=function(el){if(el.nodeName!="challenge"){this.oDbg.log("challenge missing",1);this._handleEvent("onerror",JSJaCError("401","auth","not-authorized"));this.disconnect();}else{var challenge=atob(el.firstChild.nodeValue);this.oDbg.log("got challenge: "+challenge,2);this._nonce=challenge.substring(challenge.indexOf("nonce=")+7);this._nonce=this._nonce.substring(0,this._nonce.indexOf('"'));this.oDbg.log("nonce: "+this._nonce,2);if(this._nonce==""||this._nonce.indexOf('"')!=-1){this.oDbg.log("nonce not valid, aborting",1);this.disconnect();return;}this._digest_uri="xmpp/";this._digest_uri+=this.domain;this._cnonce=cnonce(14);this._nc="00000001";var A1=str_md5(this.username+":"+this.domain+":"+this.pass)+":"+this._nonce+":"+this._cnonce;var A2="AUTHENTICATE:"+this._digest_uri;var response=hex_md5(hex_md5(A1)+":"+this._nonce+":"+this._nc+":"+this._cnonce+":auth:"+hex_md5(A2));var rPlain='username="'+this.username+'",realm="'+this.domain+'",nonce="'+this._nonce+'",cnonce="'+this._cnonce+'",nc="'+this._nc+'",qop=auth,digest-uri="'+this._digest_uri+'",response="'+response+'",charset=utf-8';this.oDbg.log("response: "+rPlain,2);this._sendRaw("<response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>"+binb2b64(str2binb(rPlain))+"</response>",this._doSASLAuthDigestMd5S2);}};JSJaCConnection.prototype._doSASLAuthDigestMd5S2=function(el){if(el.nodeName=="failure"){if(el.xml){this.oDbg.log("auth error: "+el.xml,1);}else{this.oDbg.log("auth error",1);}this._handleEvent("onerror",JSJaCError("401","auth","not-authorized"));this.disconnect();return;}var response=atob(el.firstChild.nodeValue);this.oDbg.log("response: "+response,2);var rspauth=response.substring(response.indexOf("rspauth=")+8);this.oDbg.log("rspauth: "+rspauth,2);var A1=str_md5(this.username+":"+this.domain+":"+this.pass)+":"+this._nonce+":"+this._cnonce;var A2=":"+this._digest_uri;var rsptest=hex_md5(hex_md5(A1)+":"+this._nonce+":"+this._nc+":"+this._cnonce+":auth:"+hex_md5(A2));this.oDbg.log("rsptest: "+rsptest,2);if(rsptest!=rspauth){this.oDbg.log("SASL Digest-MD5: server repsonse with wrong rspauth",1);this.disconnect();return;}if(el.nodeName=="success"){this._reInitStream(this.domain,this._doStreamBind);}else{this._sendRaw("<response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>",this._doSASLAuthDone);}};JSJaCConnection.prototype._doSASLAuthDone=function(el){if(el.nodeName!="success"){this.oDbg.log("auth failed",1);this._handleEvent("onerror",JSJaCError("401","auth","not-authorized"));this.disconnect();}else{this._reInitStream(this.domain,this._doStreamBind);}};JSJaCConnection.prototype._doStreamBind=function(){var iq=new JSJaCIQ();iq.setIQ(this.domain,"set","bind_1");iq.appendNode("bind",{xmlns:"urn:ietf:params:xml:ns:xmpp-bind"},[["resource",this.resource]]);this.oDbg.log(iq.xml());this.send(iq,this._doXMPPSess);};JSJaCConnection.prototype._doXMPPSess=function(iq){if(iq.getType()!="result"||iq.getType()=="error"){this.disconnect();if(iq.getType()=="error"){this._handleEvent("onerror",iq.getChild("error"));}return;}this.fulljid=iq.getChildVal("jid");this.jid=this.fulljid.substring(0,this.fulljid.lastIndexOf("/"));iq=new JSJaCIQ();iq.setIQ(this.domain,"set","sess_1");iq.appendNode("session",{xmlns:"urn:ietf:params:xml:ns:xmpp-session"},[]);this.oDbg.log(iq.xml());this.send(iq,this._doXMPPSessDone);};JSJaCConnection.prototype._doXMPPSessDone=function(iq){if(iq.getType()!="result"||iq.getType()=="error"){this.disconnect();if(iq.getType()=="error"){this._handleEvent("onerror",iq.getChild("error"));}return;}else{this._handleEvent("onconnect");}};JSJaCConnection.prototype._handleEvent=function(event,arg){event=event.toLowerCase();this.oDbg.log("incoming event '"+event+"'",3);if(!this._events[event]){return;}this.oDbg.log("handling event '"+event+"'",2);for(var i=0;i<this._events[event].length;i++){var aEvent=this._events[event][i];if(aEvent.handler){try{if(arg){if(arg.pType){if((!arg.getNode().hasChildNodes()&&aEvent.childName!="*")||(arg.getNode().hasChildNodes()&&!arg.getChild(aEvent.childName,aEvent.childNS))){continue;}if(aEvent.type!="*"&&arg.getType()!=aEvent.type){continue;}this.oDbg.log(aEvent.childName+"/"+aEvent.childNS+"/"+aEvent.type+" => match for handler "+aEvent.handler,3);}if(aEvent.handler.call(this,arg)){break;}}else{if(aEvent.handler.call(this)){break;}}}catch(e){this.oDbg.log(aEvent.handler+"\n>>>"+e.name+": "+e.message,1);}}}};JSJaCConnection.prototype._handlePID=function(aJSJaCPacket){if(!aJSJaCPacket.getID()){return false;}for(var i in this._regIDs){if(this._regIDs.hasOwnProperty(i)&&this._regIDs[i]&&i==aJSJaCPacket.getID()){var pID=aJSJaCPacket.getID();this.oDbg.log("handling "+pID,3);try{if(this._regIDs[i].cb.call(this,aJSJaCPacket,this._regIDs[i].arg)===false){return false;}else{this._unregisterPID(pID);return true;}}catch(e){this.oDbg.log(e.name+": "+e.message);this._unregisterPID(pID);return true;}}}return false;};JSJaCConnection.prototype._handleResponse=function(req){var rootEl=this._parseResponse(req);if(!rootEl){return;}for(var i=0;i<rootEl.childNodes.length;i++){if(this._sendRawCallbacks.length){var cb=this._sendRawCallbacks[0];this._sendRawCallbacks=this._sendRawCallbacks.slice(1,this._sendRawCallbacks.length);cb.fn.call(this,rootEl.childNodes.item(i),cb.arg);continue;}this._inQ=this._inQ.concat(rootEl.childNodes.item(i));}};JSJaCConnection.prototype._parseStreamFeatures=function(doc){if(!doc){this.oDbg.log("nothing to parse ... aborting",1);return false;}var errorTag;if(doc.getElementsByTagNameNS){errorTag=doc.getElementsByTagNameNS("http://etherx.jabber.org/streams","error").item(0);}else{var errors=doc.getElementsByTagName("error");for(var i=0;i<errors.length;i++){if(errors.item(i).namespaceURI=="http://etherx.jabber.org/streams"){errorTag=errors.item(i);break;}}}if(errorTag){this._setStatus("internal_server_error");clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._handleEvent("onerror",JSJaCError("503","cancel","session-terminate"));this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent("ondisconnect");return false;}this.mechs=new Object();var lMec1=doc.getElementsByTagName("mechanisms");this.has_sasl=false;for(var i=0;i<lMec1.length;i++){if(lMec1.item(i).getAttribute("xmlns")=="urn:ietf:params:xml:ns:xmpp-sasl"){this.has_sasl=true;var lMec2=lMec1.item(i).getElementsByTagName("mechanism");for(var j=0;j<lMec2.length;j++){this.mechs[lMec2.item(j).firstChild.nodeValue]=true;}break;}}if(this.has_sasl){this.oDbg.log("SASL detected",2);}else{this.authtype="nonsasl";this.oDbg.log("No support for SASL detected",2);}return true;};JSJaCConnection.prototype._process=function(timerval){if(!this.connected()){this.oDbg.log("Connection lost ...",1);if(this._interval){clearInterval(this._interval);}return;}this.setPollInterval(timerval);if(this._timeout){clearTimeout(this._timeout);}var slot=this._getFreeSlot();if(slot<0){return;}if(typeof(this._req[slot])!="undefined"&&typeof(this._req[slot].r)!="undefined"&&this._req[slot].r.readyState!=4){this.oDbg.log("Slot "+slot+" is not ready");return;}if(!this.isPolling()&&this._pQueue.length==0&&this._req[(slot+1)%2]&&this._req[(slot+1)%2].r.readyState!=4){this.oDbg.log("all slots busy, standby ...",2);return;}if(!this.isPolling()){this.oDbg.log("Found working slot at "+slot,2);}this._req[slot]=this._setupRequest(true);this._req[slot].r.onreadystatechange=JSJaC.bind(function(){if(!this.connected()){return;}if(this._req[slot].r.readyState==4){this._setStatus("processing");this.oDbg.log("async recv: "+this._req[slot].r.responseText,4);this._handleResponse(this._req[slot]);if(this._pQueue.length){this._timeout=setTimeout(JSJaC.bind(this._process,this),100);}else{this.oDbg.log("scheduling next poll in "+this.getPollInterval()+" msec",4);this._timeout=setTimeout(JSJaC.bind(this._process,this),this.getPollInterval());}}},this);try{this._req[slot].r.onerror=JSJaC.bind(function(){if(!this.connected()){return;}this._errcnt++;this.oDbg.log("XmlHttpRequest error ("+this._errcnt+")",1);if(this._errcnt>JSJAC_ERR_COUNT){this._abort();return false;}this._setStatus("onerror_fallback");setTimeout(JSJaC.bind(this._resume,this),this.getPollInterval());return false;},this);}catch(e){}var reqstr=this._getRequestString();if(typeof(this._rid)!="undefined"){this._req[slot].rid=this._rid;}this.oDbg.log("sending: "+reqstr,4);this._req[slot].r.send(reqstr);};JSJaCConnection.prototype._registerPID=function(pID,cb,arg){if(!pID||!cb){return false;}this._regIDs[pID]=new Object();this._regIDs[pID].cb=cb;if(arg){this._regIDs[pID].arg=arg;}this.oDbg.log("registered "+pID,3);return true;};JSJaCConnection.prototype._sendEmpty=function JSJaCSendEmpty(){var slot=this._getFreeSlot();this._req[slot]=this._setupRequest(true);this._req[slot].r.onreadystatechange=JSJaC.bind(function(){if(this._req[slot].r.readyState==4){this.oDbg.log("async recv: "+this._req[slot].r.responseText,4);this._getStreamID(slot);}},this);if(typeof(this._req[slot].r.onerror)!="undefined"){this._req[slot].r.onerror=JSJaC.bind(function(e){this.oDbg.log("XmlHttpRequest error",1);return false;},this);}var reqstr=this._getRequestString();this.oDbg.log("sending: "+reqstr,4);this._req[slot].r.send(reqstr);};JSJaCConnection.prototype._sendRaw=function(xml,cb,arg){if(cb){this._sendRawCallbacks.push({fn:cb,arg:arg});}this._pQueue.push(xml);this._process();return true;};JSJaCConnection.prototype._setStatus=function(status){if(!status||status==""){return;}if(status!=this._status){this._status=status;this._handleEvent("onstatuschanged",status);this._handleEvent("status_changed",status);}};JSJaCConnection.prototype._unregisterPID=function(pID){if(!this._regIDs[pID]){return false;}this._regIDs[pID]=null;this.oDbg.log("unregistered "+pID,3);return true;};function JSJaCConsoleLogger(level){this.level=level||4;this.start=function(){};this.log=function(msg,level){level=level||0;if(level>this.level){return;}if(typeof(console)=="undefined"){return;}try{switch(level){case 0:console.warn(msg);break;case 1:console.error(msg);break;case 2:console.info(msg);break;case 4:console.debug(msg);break;default:console.log(msg);break;}}catch(e){try{console.log(msg);}catch(e){}}};this.setLevel=function(level){this.level=level;return this;};this.getLevel=function(){return this.level;};}function JSJaCCookie(name,value,secs){if(window==this){return new JSJaCCookie(name,value,secs);}this.name=name;this.value=value;this.expires=secs;this.write=function(){if(this.secs){var date=new Date();date.setTime(date.getTime()+(this.secs*1000));var expires="; expires="+date.toGMTString();}else{var expires="";}document.cookie=this.getName()+"="+this.getValue()+expires+"; path=/";};this.erase=function(){var c=new JSJaCCookie(this.getName(),"",-1);c.write();};this.getName=function(){return this.name;};this.setName=function(name){this.name=name;return this;};this.getValue=function(){return this.value;};this.setValue=function(value){this.value=value;return this;};}JSJaCCookie.read=function(name){var nameEQ=name+"=";var ca=document.cookie.split(";");for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==" "){c=c.substring(1,c.length);}if(c.indexOf(nameEQ)==0){return new JSJaCCookie(name,c.substring(nameEQ.length,c.length));}}throw new JSJaCCookieException("Cookie not found");};JSJaCCookie.get=function(name){return JSJaCCookie.read(name).getValue();};JSJaCCookie.remove=function(name){JSJaCCookie.read(name).erase();};function JSJaCCookieException(msg){this.message=msg;this.name="CookieException";}function JSJaCError(code,type,condition){var xmldoc=XmlDocument.create("error","jsjac");xmldoc.documentElement.setAttribute("code",code);xmldoc.documentElement.setAttribute("type",type);xmldoc.documentElement.appendChild(xmldoc.createElement(condition)).setAttribute("xmlns","urn:ietf:params:xml:ns:xmpp-stanzas");return xmldoc.documentElement;}var JSJACJID_FORBIDDEN=['"'," ","&","'","/",":","<",">","@"];function JSJaCJID(jid){this._node="";this._domain="";this._resource="";if(typeof(jid)=="string"){if(jid.indexOf("@")!=-1){this.setNode(jid.substring(0,jid.indexOf("@")));jid=jid.substring(jid.indexOf("@")+1);}if(jid.indexOf("/")!=-1){this.setResource(jid.substring(jid.indexOf("/")+1));jid=jid.substring(0,jid.indexOf("/"));}this.setDomain(jid);}else{this.setNode(jid.node);this.setDomain(jid.domain);this.setResource(jid.resource);}}JSJaCJID.prototype.getNode=function(){return this._node;};JSJaCJID.prototype.getDomain=function(){return this._domain;};JSJaCJID.prototype.getResource=function(){return this._resource;};JSJaCJID.prototype.setNode=function(node){JSJaCJID._checkNodeName(node);this._node=node||"";return this;};JSJaCJID.prototype.setDomain=function(domain){if(!domain||domain==""){throw new JSJaCJIDInvalidException("domain name missing");}JSJaCJID._checkNodeName(domain);this._domain=domain;return this;};JSJaCJID.prototype.setResource=function(resource){this._resource=resource||"";return this;};JSJaCJID.prototype.toString=function(){var jid="";if(this.getNode()&&this.getNode()!=""){jid=this.getNode()+"@";}jid+=this.getDomain();if(this.getResource()&&this.getResource()!=""){jid+="/"+this.getResource();}return jid;};JSJaCJID.prototype.removeResource=function(){return this.setResource();};JSJaCJID.prototype.clone=function(){return new JSJaCJID(this.toString());};JSJaCJID.prototype.isEntity=function(jid){if(typeof jid=="string"){jid=(new JSJaCJID(jid));}jid.removeResource();return(this.clone().removeResource().toString()===jid.toString());};JSJaCJID._checkNodeName=function(nodeprep){if(!nodeprep||nodeprep==""){return;}for(var i=0;i<JSJACJID_FORBIDDEN.length;i++){if(nodeprep.indexOf(JSJACJID_FORBIDDEN[i])!=-1){throw new JSJaCJIDInvalidException("forbidden char in nodename: "+JSJACJID_FORBIDDEN[i]);}}};function JSJaCJIDInvalidException(message){this.message=message;this.name="JSJaCJIDInvalidException";}function JSJaCKeys(func,oDbg){var seed=Math.random();this._k=new Array();this._k[0]=seed.toString();if(oDbg){this.oDbg=oDbg;}else{this.oDbg={};this.oDbg.log=function(){};}if(func){for(var i=1;i<JSJAC_NKEYS;i++){this._k[i]=func(this._k[i-1]);oDbg.log(i+": "+this._k[i],4);}}this._indexAt=JSJAC_NKEYS-1;this.getKey=function(){return this._k[this._indexAt--];};this.lastKey=function(){return(this._indexAt==0);};this.size=function(){return this._k.length;};this._getSuspendVars=function(){return("_k,_indexAt").split(",");};}var JSJACPACKET_USE_XMLNS=true;function JSJaCPacket(name){this.name=name;if(typeof(JSJACPACKET_USE_XMLNS)!="undefined"&&JSJACPACKET_USE_XMLNS){this.doc=XmlDocument.create(name,"jabber:client");}else{this.doc=XmlDocument.create(name,"");}}JSJaCPacket.prototype.pType=function(){return this.name;};JSJaCPacket.prototype.getDoc=function(){return this.doc;};JSJaCPacket.prototype.getNode=function(){if(this.getDoc()&&this.getDoc().documentElement){return this.getDoc().documentElement;}else{return null;}};JSJaCPacket.prototype.setTo=function(to){if(!to||to==""){this.getNode().removeAttribute("to");}else{if(typeof(to)=="string"){this.getNode().setAttribute("to",to);}else{this.getNode().setAttribute("to",to.toString());}}return this;};JSJaCPacket.prototype.setFrom=function(from){if(!from||from==""){this.getNode().removeAttribute("from");}else{if(typeof(from)=="string"){this.getNode().setAttribute("from",from);}else{this.getNode().setAttribute("from",from.toString());}}return this;};JSJaCPacket.prototype.setID=function(id){if(!id||id==""){this.getNode().removeAttribute("id");}else{this.getNode().setAttribute("id",id);}return this;};JSJaCPacket.prototype.setType=function(type){if(!type||type==""){this.getNode().removeAttribute("type");}else{this.getNode().setAttribute("type",type);}return this;};JSJaCPacket.prototype.setXMLLang=function(xmllang){if(!xmllang||xmllang==""){this.getNode().removeAttribute("xml:lang");}else{this.getNode().setAttribute("xml:lang",xmllang);}return this;};JSJaCPacket.prototype.getTo=function(){return this.getNode().getAttribute("to");};JSJaCPacket.prototype.getFrom=function(){return this.getNode().getAttribute("from");};JSJaCPacket.prototype.getToJID=function(){return new JSJaCJID(this.getTo());};JSJaCPacket.prototype.getFromJID=function(){return new JSJaCJID(this.getFrom());};JSJaCPacket.prototype.getID=function(){return this.getNode().getAttribute("id");};JSJaCPacket.prototype.getType=function(){return this.getNode().getAttribute("type");};JSJaCPacket.prototype.getXMLLang=function(){return this.getNode().getAttribute("xml:lang");};JSJaCPacket.prototype.getXMLNS=function(){return this.getNode().namespaceURI;};JSJaCPacket.prototype.getChild=function(name,ns){if(!this.getNode()){return null;}name=name||"*";ns=ns||"*";if(this.getNode().getElementsByTagNameNS){return this.getNode().getElementsByTagNameNS(ns,name).item(0);}var nodes=this.getNode().getElementsByTagName(name);if(ns!="*"){for(var i=0;i<nodes.length;i++){if(nodes.item(i).namespaceURI==ns){return nodes.item(i);}}}else{return nodes.item(0);}return null;};JSJaCPacket.prototype.getChildVal=function(name,ns){var node=this.getChild(name,ns);if(node&&node.firstChild){return node.firstChild.nodeValue;}else{return"";}};JSJaCPacket.prototype.clone=function(){return JSJaCPacket.wrapNode(this.getNode());};JSJaCPacket.prototype.isError=function(){return(this.getType()=="error");};JSJaCPacket.prototype.errorReply=function(stanza_error){var rPacket=this.clone();rPacket.setTo(this.getFrom());rPacket.setFrom();rPacket.setType("error");rPacket.appendNode("error",{code:stanza_error.code,type:stanza_error.type},[[stanza_error.cond]]);return rPacket;};JSJaCPacket.prototype.xml=function(){if(this.getDoc().xml){return this.getDoc().xml;}var xml=(new XMLSerializer()).serializeToString(this.getNode());if(typeof(xml)!="undefined"){return xml;}return(new XMLSerializer()).serializeToString(this.doc);};JSJaCPacket.prototype._getAttribute=function(attr){return this.getNode().getAttribute(attr);};JSJaCPacket.prototype._replaceNode=function(aNode){for(var i=0;i<aNode.attributes.length;i++){if(aNode.attributes.item(i).nodeName!="xmlns"){this.getNode().setAttribute(aNode.attributes.item(i).nodeName,aNode.attributes.item(i).nodeValue);}}for(var i=0;i<aNode.childNodes.length;i++){if(this.getDoc().importNode){this.getNode().appendChild(this.getDoc().importNode(aNode.childNodes.item(i),true));}else{this.getNode().appendChild(aNode.childNodes.item(i).cloneNode(true));}}};JSJaCPacket.prototype._setChildNode=function(nodeName,nodeValue){var aNode=this.getChild(nodeName);var tNode=this.getDoc().createTextNode(nodeValue);if(aNode){try{aNode.replaceChild(tNode,aNode.firstChild);}catch(e){}}else{aNode=this.getNode().appendChild(this.getDoc().createElement(nodeName));aNode.appendChild(tNode);}return aNode;};JSJaCPacket.prototype.buildNode=function(elementName){return JSJaCBuilder.buildNode(this.getDoc(),elementName,arguments[1],arguments[2]);};JSJaCPacket.prototype.appendNode=function(element){if(typeof element=="object"){return this.getNode().appendChild(element);}else{return this.getNode().appendChild(this.buildNode(element,arguments[1],arguments[2]));}};function JSJaCPresence(){this.base=JSJaCPacket;this.base("presence");}JSJaCPresence.prototype=new JSJaCPacket;JSJaCPresence.prototype.setStatus=function(status){this._setChildNode("status",status);return this;};JSJaCPresence.prototype.setShow=function(show){if(show=="chat"||show=="away"||show=="xa"||show=="dnd"){this._setChildNode("show",show);}return this;};JSJaCPresence.prototype.setPriority=function(prio){this._setChildNode("priority",prio);return this;};JSJaCPresence.prototype.setPresence=function(show,status,prio){if(show){this.setShow(show);}if(status){this.setStatus(status);}if(prio){this.setPriority(prio);}return this;};JSJaCPresence.prototype.getStatus=function(){return this.getChildVal("status");};JSJaCPresence.prototype.getShow=function(){return this.getChildVal("show");};JSJaCPresence.prototype.getPriority=function(){return this.getChildVal("priority");};function JSJaCIQ(){this.base=JSJaCPacket;this.base("iq");}JSJaCIQ.prototype=new JSJaCPacket;JSJaCIQ.prototype.setIQ=function(to,type,id){if(to){this.setTo(to);}if(type){this.setType(type);}if(id){this.setID(id);}return this;};JSJaCIQ.prototype.setQuery=function(xmlns){var query;try{query=this.getDoc().createElementNS(xmlns,"query");}catch(e){query=this.getDoc().createElement("query");}if(query&&query.getAttribute("xmlns")!=xmlns){query.setAttribute("xmlns",xmlns);}this.getNode().appendChild(query);return query;};JSJaCIQ.prototype.getQuery=function(){return this.getNode().getElementsByTagName("query").item(0);};JSJaCIQ.prototype.getQueryXMLNS=function(){if(this.getQuery()){return this.getQuery().namespaceURI;}else{return null;}};JSJaCIQ.prototype.reply=function(payload){var rIQ=this.clone();rIQ.setTo(this.getFrom());rIQ.setType("result");if(payload){if(typeof payload=="string"){rIQ.getChild().appendChild(rIQ.getDoc().loadXML(payload));}else{if(payload.constructor==Array){var node=rIQ.getChild();for(var i=0;i<payload.length;i++){if(typeof payload[i]=="string"){node.appendChild(rIQ.getDoc().loadXML(payload[i]));}else{if(typeof payload[i]=="object"){node.appendChild(payload[i]);}}}}else{if(typeof payload=="object"){rIQ.getChild().appendChild(payload);}}}}return rIQ;};function JSJaCMessage(){this.base=JSJaCPacket;this.base("message");}JSJaCMessage.prototype=new JSJaCPacket;JSJaCMessage.prototype.setBody=function(body){this._setChildNode("body",body);return this;};JSJaCMessage.prototype.setSubject=function(subject){this._setChildNode("subject",subject);return this;};JSJaCMessage.prototype.setThread=function(thread){this._setChildNode("thread",thread);return this;};JSJaCMessage.prototype.getThread=function(){return this.getChildVal("thread");};JSJaCMessage.prototype.getBody=function(){return this.getChildVal("body");};JSJaCMessage.prototype.getSubject=function(){return this.getChildVal("subject");};JSJaCPacket.wrapNode=function(node){var aNode;switch(node.nodeName.toLowerCase()){case"presence":aNode=new JSJaCPresence();break;case"message":aNode=new JSJaCMessage();break;case"iq":aNode=new JSJaCIQ();break;default:return null;}aNode._replaceNode(node);return aNode;};function JSJaCHttpBindingConnection(oArg){this.base=JSJaCConnection;this.base(oArg);this._hold=JSJACHBC_MAX_HOLD;this._inactivity=0;this._last_requests=new Object();this._last_rid=0;this._min_polling=0;this._pause=0;this._wait=JSJACHBC_MAX_WAIT;}JSJaCHttpBindingConnection.prototype=new JSJaCConnection();JSJaCHttpBindingConnection.prototype.inherit=function(oArg){this.domain=oArg.domain||"localhost";this.username=oArg.username;this.resource=oArg.resource;this._sid=oArg.sid;this._rid=oArg.rid;this._min_polling=oArg.polling;this._inactivity=oArg.inactivity;this._setHold(oArg.requests-1);this.setPollInterval(this._timerval);if(oArg.wait){this._wait=oArg.wait;}this._connected=true;this._handleEvent("onconnect");this._interval=setInterval(JSJaC.bind(this._checkQueue,this),JSJAC_CHECKQUEUEINTERVAL);this._inQto=setInterval(JSJaC.bind(this._checkInQ,this),JSJAC_CHECKINQUEUEINTERVAL);this._timeout=setTimeout(JSJaC.bind(this._process,this),this.getPollInterval());};JSJaCHttpBindingConnection.prototype.setPollInterval=function(timerval){if(timerval&&!isNaN(timerval)){if(!this.isPolling()){this._timerval=100;}else{if(this._min_polling&&timerval<this._min_polling*1000){this._timerval=this._min_polling*1000;}else{if(this._inactivity&&timerval>this._inactivity*1000){this._timerval=this._inactivity*1000;}else{this._timerval=timerval;}}}}return this._timerval;};JSJaCHttpBindingConnection.prototype.isPolling=function(){return(this._hold==0);};JSJaCHttpBindingConnection.prototype._getFreeSlot=function(){for(var i=0;i<this._hold+1;i++){if(typeof(this._req[i])=="undefined"||typeof(this._req[i].r)=="undefined"||this._req[i].r.readyState==4){return i;}}return -1;};JSJaCHttpBindingConnection.prototype._getHold=function(){return this._hold;};JSJaCHttpBindingConnection.prototype._getRequestString=function(raw,last){raw=raw||"";var reqstr="";if(this._rid<=this._last_rid&&typeof(this._last_requests[this._rid])!="undefined"){reqstr=this._last_requests[this._rid].xml;}else{var xml="";while(this._pQueue.length){var curNode=this._pQueue[0];xml+=curNode;this._pQueue=this._pQueue.slice(1,this._pQueue.length);}reqstr="<body rid='"+this._rid+"' sid='"+this._sid+"' xmlns='http://jabber.org/protocol/httpbind' ";if(JSJAC_HAVEKEYS){reqstr+="key='"+this._keys.getKey()+"' ";if(this._keys.lastKey()){this._keys=new JSJaCKeys(hex_sha1,this.oDbg);reqstr+="newkey='"+this._keys.getKey()+"' ";}}if(last){reqstr+="type='terminate' ";}else{if(this._reinit){if(JSJACHBC_USE_BOSH_VER){reqstr+="xmpp:restart='true' ";}this._reinit=false;}}if(xml!=""||raw!=""){reqstr+=">"+raw+xml+"</body>";}else{reqstr+="/>";}this._last_requests[this._rid]=new Object();this._last_requests[this._rid].xml=reqstr;this._last_rid=this._rid;for(var i in this._last_requests){if(this._last_requests.hasOwnProperty(i)&&i<this._rid-this._hold){delete (this._last_requests[i]);}}}return reqstr;};JSJaCHttpBindingConnection.prototype._getInitialRequestString=function(){var reqstr="<body hold='"+this._hold+"' xmlns='http://jabber.org/protocol/httpbind' to='"+this.authhost+"' wait='"+this._wait+"' rid='"+this._rid+"'";if(this.host||this.port){reqstr+=" route='xmpp:"+this.host+":"+this.port+"'";}if(this.secure){reqstr+=" secure='"+this.secure+"'";}if(JSJAC_HAVEKEYS){this._keys=new JSJaCKeys(hex_sha1,this.oDbg);key=this._keys.getKey();reqstr+=" newkey='"+key+"'";}if(this._xmllang){reqstr+=" xml:lang='"+this._xmllang+"'";}if(JSJACHBC_USE_BOSH_VER){reqstr+=" ver='"+JSJACHBC_BOSH_VERSION+"'";reqstr+=" xmpp:xmlns='urn:xmpp:xbosh'";if(this.authtype=="sasl"||this.authtype=="saslanon"){reqstr+=" xmpp:version='1.0'";}}reqstr+="/>";return reqstr;};JSJaCHttpBindingConnection.prototype._getStreamID=function(slot){this.oDbg.log(this._req[slot].r.responseText,4);if(!this._req[slot].r.responseXML||!this._req[slot].r.responseXML.documentElement){this._handleEvent("onerror",JSJaCError("503","cancel","service-unavailable"));return;}var body=this._req[slot].r.responseXML.documentElement;if(body.getAttribute("authid")){this.streamid=body.getAttribute("authid");this.oDbg.log("got streamid: "+this.streamid,2);}else{this._timeout=setTimeout(JSJaC.bind(this._sendEmpty,this),this.getPollInterval());return;}this._timeout=setTimeout(JSJaC.bind(this._process,this),this.getPollInterval());if(!this._parseStreamFeatures(body)){return;}if(this.register){this._doInBandReg();}else{this._doAuth();}};JSJaCHttpBindingConnection.prototype._getSuspendVars=function(){return("host,port,secure,_rid,_last_rid,_wait,_min_polling,_inactivity,_hold,_last_requests,_pause").split(",");};JSJaCHttpBindingConnection.prototype._handleInitialResponse=function(slot){try{this.oDbg.log(this._req[slot].r.getAllResponseHeaders(),4);this.oDbg.log(this._req[slot].r.responseText,4);}catch(ex){this.oDbg.log("No response",4);}if(this._req[slot].r.status!=200||!this._req[slot].r.responseXML){this.oDbg.log("initial response broken (status: "+this._req[slot].r.status+")",1);this._handleEvent("onerror",JSJaCError("503","cancel","service-unavailable"));return;}var body=this._req[slot].r.responseXML.documentElement;if(!body||body.tagName!="body"||body.namespaceURI!="http://jabber.org/protocol/httpbind"){this.oDbg.log("no body element or incorrect body in initial response",1);this._handleEvent("onerror",JSJaCError("500","wait","internal-service-error"));return;}if(body.getAttribute("type")=="terminate"){this.oDbg.log("invalid response:\n"+this._req[slot].r.responseText,1);clearTimeout(this._timeout);this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent("ondisconnect");this._handleEvent("onerror",JSJaCError("503","cancel","service-unavailable"));return;}this._sid=body.getAttribute("sid");this.oDbg.log("got sid: "+this._sid,2);if(body.getAttribute("polling")){this._min_polling=body.getAttribute("polling");}if(body.getAttribute("inactivity")){this._inactivity=body.getAttribute("inactivity");}if(body.getAttribute("requests")){this._setHold(body.getAttribute("requests")-1);}this.oDbg.log("set hold to "+this._getHold(),2);if(body.getAttribute("ver")){this._bosh_version=body.getAttribute("ver");}if(body.getAttribute("maxpause")){this._pause=Number.max(body.getAttribute("maxpause"),JSJACHBC_MAXPAUSE);}this.setPollInterval(this._timerval);this._connected=true;this._inQto=setInterval(JSJaC.bind(this._checkInQ,this),JSJAC_CHECKINQUEUEINTERVAL);this._interval=setInterval(JSJaC.bind(this._checkQueue,this),JSJAC_CHECKQUEUEINTERVAL);this._getStreamID(slot);};JSJaCHttpBindingConnection.prototype._parseResponse=function(req){if(!this.connected()||!req){return null;}var r=req.r;try{if(r.status==404||r.status==403){this._abort();return null;}if(r.status!=200||!r.responseXML){this._errcnt++;var errmsg="invalid response ("+r.status+"):\n"+r.getAllResponseHeaders()+"\n"+r.responseText;if(!r.responseXML){errmsg+="\nResponse failed to parse!";}this.oDbg.log(errmsg,1);if(this._errcnt>JSJAC_ERR_COUNT){this._abort();return null;}this.oDbg.log("repeating ("+this._errcnt+")",1);this._setStatus("proto_error_fallback");setTimeout(JSJaC.bind(this._resume,this),this.getPollInterval());return null;}}catch(e){this.oDbg.log("XMLHttpRequest error: status not available",1);this._errcnt++;if(this._errcnt>JSJAC_ERR_COUNT){this._abort();}else{this.oDbg.log("repeating ("+this._errcnt+")",1);this._setStatus("proto_error_fallback");setTimeout(JSJaC.bind(this._resume,this),this.getPollInterval());}return null;}var body=r.responseXML.documentElement;if(!body||body.tagName!="body"||body.namespaceURI!="http://jabber.org/protocol/httpbind"){this.oDbg.log("invalid response:\n"+r.responseText,1);clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent("ondisconnect");this._setStatus("internal_server_error");this._handleEvent("onerror",JSJaCError("500","wait","internal-server-error"));return null;}if(typeof(req.rid)!="undefined"&&this._last_requests[req.rid]){if(this._last_requests[req.rid].handled){this.oDbg.log("already handled "+req.rid,2);return null;}else{this._last_requests[req.rid].handled=true;}}if(body.getAttribute("type")=="terminate"){this.oDbg.log("session terminated:\n"+r.responseText,1);clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);if(body.getAttribute("condition")=="remote-stream-error"){if(body.getElementsByTagName("conflict").length>0){this._setStatus("session-terminate-conflict");}}this._handleEvent("onerror",JSJaCError("503","cancel",body.getAttribute("condition")));this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent("ondisconnect");return null;}this._errcnt=0;return r.responseXML.documentElement;};JSJaCHttpBindingConnection.prototype._reInitStream=function(to,cb,arg){this._reinit=true;cb.call(this,arg);};JSJaCHttpBindingConnection.prototype._resume=function(){if(this._pause==0&&this._rid>=this._last_rid){this._rid=this._last_rid-1;}this._process();};JSJaCHttpBindingConnection.prototype._setHold=function(hold){if(!hold||isNaN(hold)||hold<0){hold=0;}else{if(hold>JSJACHBC_MAX_HOLD){hold=JSJACHBC_MAX_HOLD;}}this._hold=hold;return this._hold;};JSJaCHttpBindingConnection.prototype._setupRequest=function(async){var req=new Object();var r=XmlHttp.create();try{r.open("POST",this._httpbase,async);r.setRequestHeader("Content-Type","text/xml; charset=utf-8");}catch(e){this.oDbg.log(e,1);}req.r=r;this._rid++;req.rid=this._rid;return req;};JSJaCHttpBindingConnection.prototype._suspend=function(){if(this._pause==0){return;}var slot=this._getFreeSlot();this._req[slot]=this._setupRequest(false);var reqstr="<body pause='"+this._pause+"' xmlns='http://jabber.org/protocol/httpbind' sid='"+this._sid+"' rid='"+this._rid+"'";if(JSJAC_HAVEKEYS){reqstr+=" key='"+this._keys.getKey()+"'";if(this._keys.lastKey()){this._keys=new JSJaCKeys(hex_sha1,this.oDbg);reqstr+=" newkey='"+this._keys.getKey()+"'";}}reqstr+=">";while(this._pQueue.length){var curNode=this._pQueue[0];reqstr+=curNode;this._pQueue=this._pQueue.slice(1,this._pQueue.length);}reqstr+="</body>";this.oDbg.log("Disconnecting: "+reqstr,4);this._req[slot].r.send(reqstr);};function JSJaCHttpPollingConnection(oArg){this.base=JSJaCConnection;this.base(oArg);JSJACPACKET_USE_XMLNS=false;}JSJaCHttpPollingConnection.prototype=new JSJaCConnection();JSJaCHttpPollingConnection.prototype.isPolling=function(){return true;};JSJaCHttpPollingConnection.prototype._getFreeSlot=function(){if(typeof(this._req[0])=="undefined"||typeof(this._req[0].r)=="undefined"||this._req[0].r.readyState==4){return 0;}else{return -1;}};JSJaCHttpPollingConnection.prototype._getInitialRequestString=function(){var reqstr="0";if(JSJAC_HAVEKEYS){this._keys=new JSJaCKeys(b64_sha1,this.oDbg);key=this._keys.getKey();reqstr+=";"+key;}var streamto=this.domain;if(this.authhost){streamto=this.authhost;}reqstr+=",<stream:stream to='"+streamto+"' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'";if(this.authtype=="sasl"||this.authtype=="saslanon"){reqstr+=" version='1.0'";}reqstr+=">";return reqstr;};JSJaCHttpPollingConnection.prototype._getRequestString=function(raw,last){var reqstr=this._sid;if(JSJAC_HAVEKEYS){reqstr+=";"+this._keys.getKey();if(this._keys.lastKey()){this._keys=new JSJaCKeys(b64_sha1,this.oDbg);reqstr+=";"+this._keys.getKey();}}reqstr+=",";if(raw){reqstr+=raw;}while(this._pQueue.length){reqstr+=this._pQueue[0];this._pQueue=this._pQueue.slice(1,this._pQueue.length);}if(last){reqstr+="</stream:stream>";}return reqstr;};JSJaCHttpPollingConnection.prototype._getStreamID=function(){if(this._req[0].r.responseText==""){this.oDbg.log("waiting for stream id",2);this._timeout=setTimeout(JSJaC.bind(this._sendEmpty,this),1000);return;}this.oDbg.log(this._req[0].r.responseText,4);if(this._req[0].r.responseText.match(/id=[\'\"]([^\'\"]+)[\'\"]/)){this.streamid=RegExp.$1;}this.oDbg.log("got streamid: "+this.streamid,2);var doc;try{var response=this._req[0].r.responseText;if(!response.match(/<\/stream:stream>\s*$/)){response+="</stream:stream>";}doc=XmlDocument.create("doc");doc.loadXML(response);if(!this._parseStreamFeatures(doc)){return;}}catch(e){this.oDbg.log("loadXML: "+e.toString(),1);}this._connected=true;if(this.register){this._doInBandReg();}else{this._doAuth();}this._process(this._timerval);};JSJaCHttpPollingConnection.prototype._getSuspendVars=function(){return new Array();};JSJaCHttpPollingConnection.prototype._handleInitialResponse=function(){this.oDbg.log(this._req[0].r.getAllResponseHeaders(),4);var aPList=this._req[0].r.getResponseHeader("Set-Cookie");aPList=aPList.split(";");for(var i=0;i<aPList.length;i++){aArg=aPList[i].split("=");if(aArg[0]=="ID"){this._sid=aArg[1];}}this.oDbg.log("got sid: "+this._sid,2);this._connected=true;this._interval=setInterval(JSJaC.bind(this._checkQueue,this),JSJAC_CHECKQUEUEINTERVAL);this._inQto=setInterval(JSJaC.bind(this._checkInQ,this),JSJAC_CHECKINQUEUEINTERVAL);this._getStreamID();};JSJaCHttpPollingConnection.prototype._parseResponse=function(r){var req=r.r;if(!this.connected()){return null;}if(req.status!=200){this.oDbg.log("invalid response ("+req.status+"):"+req.responseText+"\n"+req.getAllResponseHeaders(),1);this._setStatus("internal_server_error");clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent("ondisconnect");this._handleEvent("onerror",JSJaCError("503","cancel","service-unavailable"));return null;}this.oDbg.log(req.getAllResponseHeaders(),4);var sid,aPList=req.getResponseHeader("Set-Cookie");if(aPList==null){sid="-1:0";}else{aPList=aPList.split(";");var sid;for(var i=0;i<aPList.length;i++){var aArg=aPList[i].split("=");if(aArg[0]=="ID"){sid=aArg[1];}}}if(typeof(sid)!="undefined"&&sid.indexOf(":0")!=-1){switch(sid.substring(0,sid.indexOf(":0"))){case"0":this.oDbg.log("invalid response:"+req.responseText,1);break;case"-1":this.oDbg.log("Internal Server Error",1);break;case"-2":this.oDbg.log("Bad Request",1);break;case"-3":this.oDbg.log("Key Sequence Error",1);break;}this._setStatus("internal_server_error");clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._handleEvent("onerror",JSJaCError("500","wait","internal-server-error"));this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent("ondisconnect");return null;}if(!req.responseText||req.responseText==""){return null;}try{var response=req.responseText.replace(/\<\?xml.+\?\>/,"");if(response.match(/<stream:stream/)){response+="</stream:stream>";}var doc=JSJaCHttpPollingConnection._parseTree("<body>"+response+"</body>");if(!doc||doc.tagName=="parsererror"){this.oDbg.log("parsererror",1);doc=JSJaCHttpPollingConnection._parseTree("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>"+req.responseText);if(doc&&doc.tagName!="parsererror"){this.oDbg.log("stream closed",1);if(doc.getElementsByTagName("conflict").length>0){this._setStatus("session-terminate-conflict");}clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._handleEvent("onerror",JSJaCError("503","cancel","session-terminate"));this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent("ondisconnect");}else{this.oDbg.log("parsererror:"+doc,1);}return doc;}return doc;}catch(e){this.oDbg.log("parse error:"+e.message,1);}return null;};JSJaCHttpPollingConnection.prototype._reInitStream=function(to,cb,arg){this._sendRaw("<stream:stream xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' to='"+to+"' version='1.0'>",cb,arg);};JSJaCHttpPollingConnection.prototype._resume=function(){this._process(this._timerval);};JSJaCHttpPollingConnection.prototype._setupRequest=function(async){var r=XmlHttp.create();try{r.open("POST",this._httpbase,async);if(r.overrideMimeType){r.overrideMimeType("text/plain; charset=utf-8");}r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}catch(e){this.oDbg.log(e,1);}var req=new Object();req.r=r;return req;};JSJaCHttpPollingConnection.prototype._suspend=function(){};JSJaCHttpPollingConnection._parseTree=function(s){try{var r=XmlDocument.create("body","foo");if(typeof(r.loadXML)!="undefined"){r.loadXML(s);return r.documentElement;}else{if(window.DOMParser){return(new DOMParser()).parseFromString(s,"text/xml").documentElement;}}}catch(e){}return null;};var JSJaC={Version:"1.3.1",require:function(libraryName){document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');},load:function(){var includes=["xmlextras","jsextras","crypt","JSJaCConfig","JSJaCConstants","JSJaCCookie","JSJaCJSON","JSJaCJID","JSJaCBuilder","JSJaCPacket","JSJaCError","JSJaCKeys","JSJaCConnection","JSJaCHttpPollingConnection","JSJaCHttpBindingConnection","JSJaCConsoleLogger"];var scripts=document.getElementsByTagName("script");var path="./";for(var i=0;i<scripts.length;i++){if(scripts.item(i).src&&scripts.item(i).src.match(/JSJaC\.js$/)){path=scripts.item(i).src.replace(/JSJaC.js$/,"");break;}}for(var i=0;i<includes.length;i++){this.require(path+includes[i]+".js");}},bind:function(fn,obj,arg){return function(){if(arg){fn.apply(obj,arg);}else{fn.apply(obj);}};}};if(typeof JSJaCConnection=="undefined"){JSJaC.load();}MooTools.More={"version":"1.2.4.3","build":"6c664838ffa145382c063893d35455a624c13a50"};(function(){var data={language:"en-US",languages:{"en-US":{}},cascades:["en-US"]};var cascaded;MooTools.lang=new Events();$extend(MooTools.lang,{setLanguage:function(lang){if(!data.languages[lang]){return this;}data.language=lang;this.load();this.fireEvent("langChange",lang);return this;},load:function(){var langs=this.cascade(this.getCurrentLanguage());cascaded={};$each(langs,function(set,setName){cascaded[setName]=this.lambda(set);},this);},getCurrentLanguage:function(){return data.language;},addLanguage:function(lang){data.languages[lang]=data.languages[lang]||{};return this;},cascade:function(lang){var cascades=(data.languages[lang]||{}).cascades||[];cascades.combine(data.cascades);cascades.erase(lang).push(lang);var langs=cascades.map(function(lng){return data.languages[lng];},this);return $merge.apply(this,langs);},lambda:function(set){(set||{}).get=function(key,args){return $lambda(set[key]).apply(this,$splat(args));};return set;},get:function(set,key,args){if(cascaded&&cascaded[set]){return(key?cascaded[set].get(key,args):cascaded[set]);}},set:function(lang,set,members){this.addLanguage(lang);langData=data.languages[lang];if(!langData[set]){langData[set]={};}$extend(langData[set],members);if(lang==this.getCurrentLanguage()){this.load();this.fireEvent("langChange",lang);}return this;},list:function(){return Hash.getKeys(data.languages);}});})();(function(){var global=this;var log=function(){if(global.console&&console.log){try{console.log.apply(console,arguments);}catch(e){console.log(Array.slice(arguments));}}else{Log.logged.push(arguments);}return this;};var disabled=function(){this.logged.push(arguments);return this;};this.Log=new Class({logged:[],log:disabled,resetLog:function(){this.logged.empty();return this;},enableLog:function(){this.log=log;this.logged.each(function(args){this.log.apply(this,args);},this);return this.resetLog();},disableLog:function(){this.log=disabled;return this;}});Log.extend(new Log).enableLog();Log.logger=function(){return this.log.apply(this,arguments);};})();Array.implement({min:function(){return Math.min.apply(null,this);},max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var result=0,l=this.length;if(l){do{result+=this[--l];}while(l);}return result;},unique:function(){return[].combine(this);},shuffle:function(){for(var i=this.length;i&&--i;){var temp=this[i],r=Math.floor(Math.random()*(i+1));this[i]=this[r];this[r]=temp;}return this;}});(function(){var Date=this.Date;if(!Date.now){Date.now=$time;}Date.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds"].each(function(method){Date.Methods[method.toLowerCase()]=method;});var pad=function(what,length){return new Array(length-String(what).length+1).join("0")+what;};Date.implement({set:function(prop,value){switch($type(prop)){case"object":for(var p in prop){this.set(p,prop[p]);}break;case"string":prop=prop.toLowerCase();var m=Date.Methods;if(m[prop]){this["set"+m[prop]](value);}}return this;},get:function(prop){prop=prop.toLowerCase();var m=Date.Methods;if(m[prop]){return this["get"+m[prop]]();}return null;},clone:function(){return new Date(this.get("time"));},increment:function(interval,times){interval=interval||"day";times=$pick(times,1);switch(interval){case"year":return this.increment("month",times*12);case"month":var d=this.get("date");this.set("date",1).set("mo",this.get("mo")+times);return this.set("date",d.min(this.get("lastdayofmonth")));case"week":return this.increment("day",times*7);case"day":return this.set("date",this.get("date")+times);}if(!Date.units[interval]){throw new Error(interval+" is not a supported interval");}return this.set("time",this.get("time")+times*Date.units[interval]());},decrement:function(interval,times){return this.increment(interval,-1*$pick(times,1));},isLeapYear:function(){return Date.isLeapYear(this.get("year"));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});},diff:function(date,resolution){if($type(date)=="string"){date=Date.parse(date);}return((date-this)/Date.units[resolution||"day"](3,3)).toInt();},getLastDayOfMonth:function(){return Date.daysInMonth(this.get("mo"),this.get("year"));},getDayOfYear:function(){return(Date.UTC(this.get("year"),this.get("mo"),this.get("date")+1)-Date.UTC(this.get("year"),0,1))/Date.units.day();},getWeek:function(){return(this.get("dayofyear")/7).ceil();},getOrdinal:function(day){return Date.getMsg("ordinal",day||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");},getGMTOffset:function(){var off=this.get("timezoneOffset");return((off>0)?"-":"+")+pad((off.abs()/60).floor(),2)+pad(off%60,2);},setAMPM:function(ampm){ampm=ampm.toUpperCase();var hr=this.get("hr");if(hr>11&&ampm=="AM"){return this.decrement("hour",12);}else{if(hr<12&&ampm=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM";},parse:function(str){this.set("time",Date.parse(str));return this;},isValid:function(date){return !!(date||this).valueOf();},format:function(f){if(!this.isValid()){return"invalid date";}f=f||"%x %X";f=formats[f.toLowerCase()]||f;var d=this;return f.replace(/%([a-z%])/gi,function($0,$1){switch($1){case"a":return Date.getMsg("days")[d.get("day")].substr(0,3);case"A":return Date.getMsg("days")[d.get("day")];case"b":return Date.getMsg("months")[d.get("month")].substr(0,3);case"B":return Date.getMsg("months")[d.get("month")];case"c":return d.toString();case"d":return pad(d.get("date"),2);case"D":return d.get("date");case"H":return pad(d.get("hr"),2);case"I":return((d.get("hr")%12)||12);case"j":return pad(d.get("dayofyear"),3);case"m":return pad((d.get("mo")+1),2);case"M":return pad(d.get("min"),2);case"o":return d.get("ordinal");case"p":return Date.getMsg(d.get("ampm"));case"S":return pad(d.get("seconds"),2);case"U":return pad(d.get("week"),2);case"w":return d.get("day");case"x":return d.format(Date.getMsg("shortDate"));case"X":return d.format(Date.getMsg("shortTime"));case"y":return d.get("year").toString().substr(2);case"Y":return d.get("year");case"T":return d.get("GMTOffset");case"Z":return d.get("Timezone");}return $1;});},toISOString:function(){return this.format("iso8601");}});Date.alias("toISOString","toJSON");Date.alias("diff","compare");Date.alias("format","strftime");var formats={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",iso8601:"%Y-%m-%dT%H:%M:%S%T",rfc822:"%a, %d %b %Y %H:%M:%S %Z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"};var parsePatterns=[];var nativeParse=Date.parse;var parseWord=function(type,word,num){var ret=-1;var translated=Date.getMsg(type+"s");switch($type(word)){case"object":ret=translated[word.get(type)];break;case"number":ret=translated[month-1];if(!ret){throw new Error("Invalid "+type+" index: "+index);}break;case"string":var match=translated.filter(function(name){return this.test(name);},new RegExp("^"+word,"i"));if(!match.length){throw new Error("Invalid "+type+" string");}if(match.length>1){throw new Error("Ambiguous "+type);}ret=match[0];}return(num)?translated.indexOf(ret):ret;};Date.extend({getMsg:function(key,args){return MooTools.lang.get("Date",key,args);},units:{ms:$lambda(1),second:$lambda(1000),minute:$lambda(60000),hour:$lambda(3600000),day:$lambda(86400000),week:$lambda(608400000),month:function(month,year){var d=new Date;return Date.daysInMonth($pick(month,d.get("mo")),$pick(year,d.get("year")))*86400000;},year:function(year){year=year||new Date().get("year");return Date.isLeapYear(year)?31622400000:31536000000;}},daysInMonth:function(month,year){return[31,Date.isLeapYear(year)?29:28,31,30,31,30,31,31,30,31,30,31][month];},isLeapYear:function(year){return((year%4===0)&&(year%100!==0))||(year%400===0);},parse:function(from){var t=$type(from);if(t=="number"){return new Date(from);}if(t!="string"){return from;}from=from.clean();if(!from.length){return null;}var parsed;parsePatterns.some(function(pattern){var bits=pattern.re.exec(from);return(bits)?(parsed=pattern.handler(bits)):false;});return parsed||new Date(nativeParse(from));},parseDay:function(day,num){return parseWord("day",day,num);},parseMonth:function(month,num){return parseWord("month",month,num);},parseUTC:function(value){var localDate=new Date(value);var utcSeconds=Date.UTC(localDate.get("year"),localDate.get("mo"),localDate.get("date"),localDate.get("hr"),localDate.get("min"),localDate.get("sec"));return new Date(utcSeconds);},orderIndex:function(unit){return Date.getMsg("dateOrder").indexOf(unit)+1;},defineFormat:function(name,format){formats[name]=format;},defineFormats:function(formats){for(var name in formats){Date.defineFormat(name,formats[name]);}},parsePatterns:parsePatterns,defineParser:function(pattern){parsePatterns.push((pattern.re&&pattern.handler)?pattern:build(pattern));},defineParsers:function(){Array.flatten(arguments).each(Date.defineParser);},define2DigitYearStart:function(year){startYear=year%100;startCentury=year-startYear;}});var startCentury=1900;var startYear=70;var regexOf=function(type){return new RegExp("(?:"+Date.getMsg(type).map(function(name){return name.substr(0,3);}).join("|")+")[a-z]*");};var replacers=function(key){switch(key){case"x":return((Date.orderIndex("month")==1)?"%m[.-/]%d":"%d[.-/]%m")+"([.-/]%y)?";case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?";}return null;};var keys={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/};keys.m=keys.I;keys.S=keys.M;var currentLanguage;var recompile=function(language){currentLanguage=language;keys.a=keys.A=regexOf("days");keys.b=keys.B=regexOf("months");parsePatterns.each(function(pattern,i){if(pattern.format){parsePatterns[i]=build(pattern.format);}});};var build=function(format){if(!currentLanguage){return{format:format};}var parsed=[];var re=(format.source||format).replace(/%([a-z])/gi,function($0,$1){return replacers($1)||$0;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function($0,$1){var p=keys[$1];if(!p){return $1;}parsed.push($1);return"("+p.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff]");return{format:format,re:new RegExp("^"+re+"$","i"),handler:function(bits){bits=bits.slice(1).associate(parsed);var date=new Date().clearTime();if("d" in bits){handle.call(date,"d",1);}if("m" in bits||"b" in bits||"B" in bits){handle.call(date,"m",1);}for(var key in bits){handle.call(date,key,bits[key]);}return date;}};};var handle=function(key,value){if(!value){return this;}switch(key){case"a":case"A":return this.set("day",Date.parseDay(value,true));case"b":case"B":return this.set("mo",Date.parseMonth(value,true));case"d":return this.set("date",value);case"H":case"I":return this.set("hr",value);case"m":return this.set("mo",value-1);case"M":return this.set("min",value);case"p":return this.set("ampm",value.replace(/\./g,""));case"S":return this.set("sec",value);case"s":return this.set("ms",("0."+value)*1000);case"w":return this.set("day",value);case"Y":return this.set("year",value);case"y":value=+value;if(value<100){value+=startCentury+(value<startYear?100:0);}return this.set("year",value);case"T":if(value=="Z"){value="+00";}var offset=value.match(/([+-])(\d{2}):?(\d{2})?/);offset=(offset[1]+"1")*(offset[2]*60+(+offset[3]||0))+this.getTimezoneOffset();return this.set("time",this-offset*60000);}return this;};Date.defineParsers("%Y([-./]%m([-./]%d((T| )%X)?)?)?","%Y%m%d(T%H(%M%S?)?)?","%x( %X)?","%d%o( %b( %Y)?)?( %X)?","%b( %d%o)?( %Y)?( %X)?","%Y %b( %d%o( %X)?)?","%o %b %d %X %T %Y");MooTools.lang.addEvent("langChange",function(language){if(MooTools.lang.get("Date")){recompile(language);}}).fireEvent("langChange",MooTools.lang.getCurrentLanguage());})();Date.implement({timeDiffInWords:function(relative_to){return Date.distanceOfTimeInWords(this,relative_to||new Date);},timeDiff:function(to,joiner){if(to==null){to=new Date;}var delta=((to-this)/1000).toInt();if(!delta){return"0s";}var durations={s:60,m:60,h:24,d:365,y:0};var duration,vals=[];for(var step in durations){if(!delta){break;}if((duration=durations[step])){vals.unshift((delta%duration)+step);delta=(delta/duration).toInt();}else{vals.unshift(delta+step);}}return vals.join(joiner||":");}});Date.alias("timeDiffInWords","timeAgoInWords");Date.extend({distanceOfTimeInWords:function(from,to){return Date.getTimePhrase(((to-from)/1000).toInt());},getTimePhrase:function(delta){var suffix=(delta<0)?"Until":"Ago";if(delta<0){delta*=-1;}var units={minute:60,hour:60,day:24,week:7,month:52/12,year:12,eon:Infinity};var msg="lessThanMinute";for(var unit in units){var interval=units[unit];if(delta<1.5*interval){if(delta>0.75*interval){msg=unit;}break;}delta/=interval;msg=unit+"s";}return Date.getMsg(msg+suffix).substitute({delta:delta.round()});}});Date.defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(bits){var d=new Date().clearTime();switch(bits[0]){case"tom":return d.increment();case"yes":return d.decrement();default:return d;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(bits){var d=new Date().clearTime();var day=d.getDay();var newDay=Date.parseDay(bits[2],true);var addDays=newDay-day;if(newDay<=day){addDays+=7;}if(bits[1]=="last"){addDays-=7;}return d.set("date",d.getDate()+addDays);}});Hash.implement({getFromPath:function(notation){var source=this.getClean();notation.replace(/\[([^\]]+)\]|\.([^.[]+)|[^[.]+/g,function(match){if(!source){return null;}var prop=arguments[2]||arguments[1]||arguments[0];source=(prop in source)?source[prop]:null;return match;});return source;},cleanValues:function(method){method=method||$defined;this.each(function(v,k){if(!method(v)){this.erase(k);}},this);return this;},run:function(){var args=arguments;this.each(function(v,k){if($type(v)=="function"){v.run(args);}});}});(function(){var special=["??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??","??"];var standard=["A","a","A","a","A","a","A","a","Ae","ae","A","a","A","a","A","a","C","c","C","c","C","c","D","d","D","d","E","e","E","e","E","e","E","e","E","e","E","e","G","g","I","i","I","i","I","i","I","i","L","l","L","l","L","l","N","n","N","n","N","n","O","o","O","o","O","o","O","o","Oe","oe","O","o","o","R","r","R","r","S","s","S","s","S","s","T","t","T","t","T","t","U","u","U","u","U","u","Ue","ue","U","u","Y","y","Y","y","Z","z","Z","z","Z","z","TH","th","DH","dh","ss","OE","oe","AE","ae","u"];var tidymap={"[\xa0\u2002\u2003\u2009]":" ","\xb7":"*","[\u2018\u2019]":"'","[\u201c\u201d]":'"',"\u2026":"...","\u2013":"-","\u2014":"--","\uFFFD":"&raquo;"};var getRegForTag=function(tag,contents){tag=tag||"";var regstr=contents?"<"+tag+"[^>]*>([\\s\\S]*?)</"+tag+">":"</?"+tag+"([^>]+)?>";reg=new RegExp(regstr,"gi");return reg;};String.implement({standardize:function(){var text=this;special.each(function(ch,i){text=text.replace(new RegExp(ch,"g"),standard[i]);});return text;},repeat:function(times){return new Array(times+1).join(this);},pad:function(length,str,dir){if(this.length>=length){return this;}var pad=(str==null?" ":""+str).repeat(length-this.length).substr(0,length-this.length);if(!dir||dir=="right"){return this+pad;}if(dir=="left"){return pad+this;}return pad.substr(0,(pad.length/2).floor())+this+pad.substr(0,(pad.length/2).ceil());},getTags:function(tag,contents){return this.match(getRegForTag(tag,contents))||[];},stripTags:function(tag,contents){return this.replace(getRegForTag(tag,contents),"");},tidy:function(){var txt=this.toString();$each(tidymap,function(value,key){txt=txt.replace(new RegExp(key,"g"),value);});return txt;}});})();(function(addEvent,removeEvent){var match=/(.*?):relay\(([^)]+)\)$/,combinators=/[+>~\s]/,splitType=function(type){var bits=type.match(match);return !bits?{event:type}:{event:bits[1],selector:bits[2]};},check=function(e,selector){var t=e.target;if(combinators.test(selector=selector.trim())){var els=this.getElements(selector);for(var i=els.length;i--;){var el=els[i];if(t==el||el.hasChild(t)){return el;}}}else{for(;t&&t!=this;t=t.parentNode){if(Element.match(t,selector)){return document.id(t);}}}return null;};Element.implement({addEvent:function(type,fn){var splitted=splitType(type);if(splitted.selector){var monitors=this.retrieve("$moo:delegateMonitors",{});if(!monitors[type]){var monitor=function(e){var el=check.call(this,e,splitted.selector);if(el){this.fireEvent(type,[e,el],0,el);}}.bind(this);monitors[type]=monitor;addEvent.call(this,splitted.event,monitor);}}return addEvent.apply(this,arguments);},removeEvent:function(type,fn){var splitted=splitType(type);if(splitted.selector){var events=this.retrieve("events");if(!events||!events[type]||(fn&&!events[type].keys.contains(fn))){return this;}if(fn){removeEvent.apply(this,[type,fn]);}else{removeEvent.apply(this,type);}events=this.retrieve("events");if(events&&events[type]&&events[type].keys.length==0){var monitors=this.retrieve("$moo:delegateMonitors",{});removeEvent.apply(this,[splitted.event,monitors[type]]);delete monitors[type];}return this;}return removeEvent.apply(this,arguments);},fireEvent:function(type,args,delay,bind){var events=this.retrieve("events");if(!events||!events[type]){return this;}events[type].keys.each(function(fn){fn.create({bind:bind||this,delay:delay,arguments:args})();},this);return this;}});})(Element.prototype.addEvent,Element.prototype.removeEvent);Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(elements,options){this.elements=this.subject=$$(elements);this.parent(options);},compute:function(from,to,delta){var now={};for(var i in from){var iFrom=from[i],iTo=to[i],iNow=now[i]={};for(var p in iFrom){iNow[p]=this.parent(iFrom[p],iTo[p],delta);}}return now;},set:function(now){for(var i in now){var iNow=now[i];for(var p in iNow){this.render(this.elements[i],p,iNow[p],this.options.unit);}}return this;},start:function(obj){if(!this.check(obj)){return this;}var from={},to={};for(var i in obj){var iProps=obj[i],iFrom=from[i]={},iTo=to[i]={};for(var p in iProps){var parsed=this.prepare(this.elements[i],p,iProps[p]);iFrom[p]=parsed.from;iTo[p]=parsed.to;}}return this.parent(from,to);}});Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);var cancel=this.cancel.bind(this,false);if($type(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}var stopper=this.element;if(this.options.wheelStops){this.addEvent("start",function(){stopper.addEvent("mousewheel",cancel);},true);this.addEvent("complete",function(){stopper.removeEvent("mousewheel",cancel);},true);}},set:function(){var now=Array.flatten(arguments);if(Browser.Engine.gecko){now=[Math.round(now[0]),Math.round(now[1])];}this.element.scrollTo(now[0],now[1]);},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(x,y){if(!this.check(x,y)){return this;}var scrollSize=this.element.getScrollSize(),scroll=this.element.getScroll(),values={x:x,y:y};for(var z in values){var max=scrollSize[z];if($chk(values[z])){values[z]=($type(values[z])=="number")?values[z]:max;}else{values[z]=scroll[z];}values[z]+=this.options.offset[z];}return this.parent([scroll.x,scroll.y],[values.x,values.y]);},toTop:function(){return this.start(false,0);},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start("right",false);},toBottom:function(){return this.start(false,"bottom");},toElement:function(el){var position=document.id(el).getPosition(this.element);return this.start(position.x,position.y);},scrollIntoView:function(el,axes,offset){axes=axes?$splat(axes):["x","y"];var to={};el=document.id(el);var pos=el.getPosition(this.element);var size=el.getSize();var scroll=this.element.getScroll();var containerSize=this.element.getSize();var edge={x:pos.x+size.x,y:pos.y+size.y};["x","y"].each(function(axis){if(axes.contains(axis)){if(edge[axis]>scroll[axis]+containerSize[axis]){to[axis]=edge[axis]-containerSize[axis];}if(pos[axis]<scroll[axis]){to[axis]=pos[axis];}}if(to[axis]==null){to[axis]=scroll[axis];}if(offset&&offset[axis]){to[axis]=to[axis]+offset[axis];}},this);if(to.x!=scroll.x||to.y!=scroll.y){this.start(to.x,to.y);}return this;},scrollToCenter:function(el,axes,offset){axes=axes?$splat(axes):["x","y"];el=$(el);var to={},pos=el.getPosition(this.element),size=el.getSize(),scroll=this.element.getScroll(),containerSize=this.element.getSize(),edge={x:pos.x+size.x,y:pos.y+size.y};["x","y"].each(function(axis){if(axes.contains(axis)){to[axis]=pos[axis]-(containerSize[axis]-size[axis])/2;}if(to[axis]==null){to[axis]=scroll[axis];}if(offset&&offset[axis]){to[axis]=to[axis]+offset[axis];}},this);if(to.x!=scroll.x||to.y!=scroll.y){this.start(to.x,to.y);}return this;}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var params=Array.link(arguments,{"options":Object.type,"element":$defined});this.element=document.id(params.element);this.document=this.element.getDocument();this.setOptions(params.options||{});var htype=$type(this.options.handle);this.handles=((htype=="array"||htype=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;this.mouse={"now":{},"pos":{}};this.value={"start":{},"now":{}};this.selection=(Browser.Engine.trident)?"selectstart":"mousedown";this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);return this;},start:function(event){if(event.rightClick){return;}if(this.options.preventDefault){event.preventDefault();}if(this.options.stopPropagation){event.stopPropagation();}this.mouse.start=event.page;this.fireEvent("beforeStart",this.element);var limit=this.options.limit;this.limit={x:[],y:[]};for(var z in this.options.modifiers){if(!this.options.modifiers[z]){continue;}if(this.options.style){this.value.now[z]=this.element.getStyle(this.options.modifiers[z]).toInt();}else{this.value.now[z]=this.element[this.options.modifiers[z]];}if(this.options.invert){this.value.now[z]*=-1;}this.mouse.pos[z]=event.page[z]-this.value.now[z];if(limit&&limit[z]){for(var i=2;i--;i){if($chk(limit[z][i])){this.limit[z][i]=$lambda(limit[z][i])();}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop);},check:function(event){if(this.options.preventDefault){event.preventDefault();}var distance=Math.round(Math.sqrt(Math.pow(event.page.x-this.mouse.start.x,2)+Math.pow(event.page.y-this.mouse.start.y,2)));if(distance>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,event]).fireEvent("snap",this.element);}},drag:function(event){if(this.options.preventDefault){event.preventDefault();}this.mouse.now=event.page;for(var z in this.options.modifiers){if(!this.options.modifiers[z]){continue;}this.value.now[z]=this.mouse.now[z]-this.mouse.pos[z];if(this.options.invert){this.value.now[z]*=-1;}if(this.options.limit&&this.limit[z]){if($chk(this.limit[z][1])&&(this.value.now[z]>this.limit[z][1])){this.value.now[z]=this.limit[z][1];}else{if($chk(this.limit[z][0])&&(this.value.now[z]<this.limit[z][0])){this.value.now[z]=this.limit[z][0];}}}if(this.options.grid[z]){this.value.now[z]-=((this.value.now[z]-(this.limit[z][0]||0))%this.options.grid[z]);}if(this.options.style){this.element.setStyle(this.options.modifiers[z],this.value.now[z]+this.options.unit);}else{this.element[this.options.modifiers[z]]=this.value.now[z];}}this.fireEvent("drag",[this.element,event]);},cancel:function(event){this.document.removeEvent("mousemove",this.bound.check);this.document.removeEvent("mouseup",this.bound.cancel);if(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element);}},stop:function(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.document.removeEvent("mousemove",this.bound.drag);this.document.removeEvent("mouseup",this.bound.stop);if(event){this.fireEvent("complete",[this.element,event]);}}});Element.implement({makeResizable:function(options){var drag=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},options));this.store("resizer",drag);return drag.addEvent("drag",function(){this.fireEvent("resize",drag);}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(element,options){this.parent(element,options);element=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&$type(this.container)!="element"){this.container=document.id(this.container.getDocument().body);}var styles=element.getStyles("left","top","position");if(styles.left=="auto"||styles.top=="auto"){element.setPosition(element.getPosition(element.getOffsetParent()));}if(styles.position=="static"){element.setStyle("position","absolute");}this.addEvent("start",this.checkDroppables,true);this.overed=null;},start:function(event){if(this.container){this.options.limit=this.calculateLimit();}if(this.options.precalculate){this.positions=this.droppables.map(function(el){return el.getCoordinates();});}this.parent(event);},calculateLimit:function(){var offsetParent=this.element.getOffsetParent(),containerCoordinates=this.container.getCoordinates(offsetParent),containerBorder={},elementMargin={},elementBorder={},containerMargin={},offsetParentPadding={};["top","right","bottom","left"].each(function(pad){containerBorder[pad]=this.container.getStyle("border-"+pad).toInt();elementBorder[pad]=this.element.getStyle("border-"+pad).toInt();elementMargin[pad]=this.element.getStyle("margin-"+pad).toInt();containerMargin[pad]=this.container.getStyle("margin-"+pad).toInt();offsetParentPadding[pad]=offsetParent.getStyle("padding-"+pad).toInt();},this);var width=this.element.offsetWidth+elementMargin.left+elementMargin.right,height=this.element.offsetHeight+elementMargin.top+elementMargin.bottom,left=0,top=0,right=containerCoordinates.right-containerBorder.right-width,bottom=containerCoordinates.bottom-containerBorder.bottom-height;if(this.options.includeMargins){left+=elementMargin.left;top+=elementMargin.top;}else{right+=elementMargin.right;bottom+=elementMargin.bottom;}if(this.element.getStyle("position")=="relative"){var coords=this.element.getCoordinates(offsetParent);coords.left-=this.element.getStyle("left").toInt();coords.top-=this.element.getStyle("top").toInt();left+=containerBorder.left-coords.left;top+=containerBorder.top-coords.top;right+=elementMargin.left-coords.left;bottom+=elementMargin.top-coords.top;if(this.container!=offsetParent){left+=containerMargin.left+offsetParentPadding.left;top+=(Browser.Engine.trident4?0:containerMargin.top)+offsetParentPadding.top;}}else{left-=elementMargin.left;top-=elementMargin.top;if(this.container==offsetParent){right-=containerBorder.left;bottom-=containerBorder.top;}else{left+=containerCoordinates.left+containerBorder.left;top+=containerCoordinates.top+containerBorder.top;}}return{x:[left,right],y:[top,bottom]};},checkAgainst:function(el,i){el=(this.positions)?this.positions[i]:el.getCoordinates();var now=this.mouse.now;return(now.x>el.left&&now.x<el.right&&now.y<el.bottom&&now.y>el.top);},checkDroppables:function(){var overed=this.droppables.filter(this.checkAgainst,this).getLast();if(this.overed!=overed){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);}if(overed){this.fireEvent("enter",[this.element,overed]);}this.overed=overed;}},drag:function(event){this.parent(event);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables();}},stop:function(event){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,event]);this.overed=null;return this.parent(event);}});Element.implement({makeDraggable:function(options){var drag=new Drag.Move(this,options);this.store("dragger",drag);return drag;}});Request.JSONP=new Class({Implements:[Chain,Events,Options,Log],options:{url:"",data:{},retries:0,timeout:0,link:"ignore",callbackKey:"callback",injectScript:document.head},initialize:function(options){this.setOptions(options);if(this.options.log){this.enableLog();}this.running=false;this.requests=0;this.triesRemaining=[];},check:function(){if(!this.running){return true;}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.bind(this,arguments));return false;}return false;},send:function(options){if(!$chk(arguments[1])&&!this.check(options)){return this;}var type=$type(options),old=this.options,index=$chk(arguments[1])?arguments[1]:this.requests++;if(type=="string"||type=="element"){options={data:options};}options=$extend({data:old.data,url:old.url},options);if(!$chk(this.triesRemaining[index])){this.triesRemaining[index]=this.options.retries;}var remaining=this.triesRemaining[index];(function(){var script=this.getScript(options);this.log("JSONP retrieving script with url: "+script.get("src"));this.fireEvent("request",script);this.running=true;(function(){if(remaining){this.triesRemaining[index]=remaining-1;if(script){script.destroy();this.send(options,index).fireEvent("retry",this.triesRemaining[index]);}}else{if(script&&this.options.timeout){script.destroy();this.cancel().fireEvent("failure");}}}).delay(this.options.timeout,this);}).delay(Browser.Engine.trident?50:0,this);return this;},cancel:function(){if(!this.running){return this;}this.running=false;this.fireEvent("cancel");return this;},getScript:function(options){var index=Request.JSONP.counter,data;Request.JSONP.counter++;switch($type(options.data)){case"element":data=document.id(options.data).toQueryString();break;case"object":case"hash":data=Hash.toQueryString(options.data);}var src=options.url+(options.url.test("\\?")?"&":"?")+(options.callbackKey||this.options.callbackKey)+"=Request.JSONP.request_map.request_"+index+(data?"&"+data:"");if(src.length>2083){this.log("JSONP "+src+" will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs");}var script=new Element("script",{type:"text/javascript",src:src});Request.JSONP.request_map["request_"+index]=function(){this.success(arguments,script);}.bind(this);return script.inject(this.options.injectScript);},success:function(args,script){if(script){script.destroy();}this.running=false;this.log("JSONP successfully retrieved: ",args);this.fireEvent("complete",args).fireEvent("success",args).callChain();}});Request.JSONP.counter=0;Request.JSONP.request_map={};var Asset={javascript:function(source,properties){properties=$extend({onload:$empty,document:document,check:$lambda(true)},properties);if(properties.onLoad){properties.onload=properties.onLoad;}var script=new Element("script",{src:source,type:"text/javascript"});var load=properties.onload.bind(script),check=properties.check,doc=properties.document;delete properties.onload;delete properties.check;delete properties.document;script.addEvents({load:load,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){load();}}}).set(properties);if(Browser.Engine.webkit419){var checker=(function(){if(!$try(check)){return;}$clear(checker);load();}).periodical(50);}return script.inject(doc.head);},css:function(source,properties){return new Element("link",$merge({rel:"stylesheet",media:"screen",type:"text/css",href:source},properties)).inject(document.head);},image:function(source,properties){properties=$merge({onload:$empty,onabort:$empty,onerror:$empty},properties);var image=new Image();var element=document.id(image)||new Element("img");["load","abort","error"].each(function(name){var type="on"+name;var cap=name.capitalize();if(properties["on"+cap]){properties[type]=properties["on"+cap];}var event=properties[type];delete properties[type];image[type]=function(){if(!image){return;}if(!element.parentNode){element.width=image.width;element.height=image.height;}image=image.onload=image.onabort=image.onerror=null;event.delay(1,element,element);element.fireEvent(name,element,1);};});image.src=element.src=source;if(image&&image.complete){image.onload.delay(1);}return element.set(properties);},images:function(sources,options){options=$merge({onComplete:$empty,onProgress:$empty,onError:$empty,properties:{}},options);sources=$splat(sources);var images=[];var counter=0;return new Elements(sources.map(function(source){return Asset.image(source,$extend(options.properties,{onload:function(){options.onProgress.call(this,counter,sources.indexOf(source));counter++;if(counter==sources.length){options.onComplete();}},onerror:function(){options.onError.call(this,counter,sources.indexOf(source));counter++;if(counter==sources.length){options.onComplete();}}}));}));}};(function(){var Keyboard=this.Keyboard=new Class({Extends:Events,Implements:[Options,Log],options:{defaultEventType:"keydown",active:false,events:{},nonParsedEvents:["activate","deactivate","onactivate","ondeactivate","changed","onchanged"]},initialize:function(options){this.setOptions(options);this.setup();},setup:function(){this.addEvents(this.options.events);if(Keyboard.manager&&!this.manager){Keyboard.manager.manage(this);}if(this.options.active){this.activate();}},handle:function(event,type){if(event.preventKeyboardPropagation){return;}var bubbles=!!this.manager;if(bubbles&&this.activeKB){this.activeKB.handle(event,type);if(event.preventKeyboardPropagation){return;}}this.fireEvent(type,event);if(!bubbles&&this.activeKB){this.activeKB.handle(event,type);}},addEvent:function(type,fn,internal){return this.parent(Keyboard.parse(type,this.options.defaultEventType,this.options.nonParsedEvents),fn,internal);},removeEvent:function(type,fn){return this.parent(Keyboard.parse(type,this.options.defaultEventType,this.options.nonParsedEvents),fn);},toggleActive:function(){return this[this.active?"deactivate":"activate"]();},activate:function(instance){if(instance){if(instance!=this.activeKB){this.previous=this.activeKB;}this.activeKB=instance.fireEvent("activate");Keyboard.manager.fireEvent("changed");}else{if(this.manager){this.manager.activate(this);}}return this;},deactivate:function(instance){if(instance){if(instance===this.activeKB){this.activeKB=null;instance.fireEvent("deactivate");Keyboard.manager.fireEvent("changed");}}else{if(this.manager){this.manager.deactivate(this);}}return this;},relenquish:function(){if(this.previous){this.activate(this.previous);}},manage:function(instance){if(instance.manager){instance.manager.drop(instance);}this.instances.push(instance);instance.manager=this;if(!this.activeKB){this.activate(instance);}else{this._disable(instance);}},_disable:function(instance){if(this.activeKB==instance){this.activeKB=null;}},drop:function(instance){this._disable(instance);this.instances.erase(instance);},instances:[],trace:function(){Keyboard.trace(this);},each:function(fn){Keyboard.each(this,fn);}});var parsed={};var modifiers=["shift","control","alt","meta"];var regex=/^(?:shift|control|ctrl|alt|meta)$/;Keyboard.parse=function(type,eventType,ignore){if(ignore&&ignore.contains(type.toLowerCase())){return type;}type=type.toLowerCase().replace(/^(keyup|keydown):/,function($0,$1){eventType=$1;return"";});if(!parsed[type]){var key,mods={};type.split("+").each(function(part){if(regex.test(part)){mods[part]=true;}else{key=part;}});mods.control=mods.control||mods.ctrl;var keys=[];modifiers.each(function(mod){if(mods[mod]){keys.push(mod);}});if(key){keys.push(key);}parsed[type]=keys.join("+");}return eventType+":"+parsed[type];};Keyboard.each=function(keyboard,fn){var current=keyboard||Keyboard.manager;while(current){fn.run(current);current=current.activeKB;}};Keyboard.stop=function(event){event.preventKeyboardPropagation=true;};Keyboard.manager=new Keyboard({active:true});Keyboard.trace=function(keyboard){keyboard=keyboard||Keyboard.manager;keyboard.enableLog();keyboard.log("the following items have focus: ");Keyboard.each(keyboard,function(current){keyboard.log(document.id(current.widget)||current.wiget||current);});};var handler=function(event){var keys=[];modifiers.each(function(mod){if(event[mod]){keys.push(mod);}});if(!regex.test(event.key)){keys.push(event.key);}Keyboard.manager.handle(event,event.type+":"+keys.join("+"));};document.addEvents({"keyup":handler,"keydown":handler});Event.Keys.extend({"shift":16,"control":17,"alt":18,"capslock":20,"pageup":33,"pagedown":34,"end":35,"home":36,"numlock":144,"scrolllock":145,";":186,"=":187,",":188,"-":Browser.Engine.Gecko?109:189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222});})();(function(){var read=function(option,element){return(option)?($type(option)=="function"?option(element):element.get(option)):"";};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block");},onHide:function(){this.tip.setStyle("display","none");},title:"title",text:function(element){return element.get("rel")||element.get("href");},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false},initialize:function(){var params=Array.link(arguments,{options:Object.type,elements:$defined});this.setOptions(params.options);if(params.elements){this.attach(params.elements);}},toElement:function(){if(this.tip){return this.tip;}this.container=new Element("div",{"class":"tip"});return this.tip=new Element("div",{"class":this.options.className,styles:{position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"})).inject(document.body);},attach:function(elements){$$(elements).each(function(element){var title=read(this.options.title,element),text=read(this.options.text,element);element.erase("title").store("tip:native",title).retrieve("tip:title",title);element.retrieve("tip:text",text);this.fireEvent("attach",[element]);var events=["enter","leave"];if(!this.options.fixed){events.push("move");}events.each(function(value){var event=element.retrieve("tip:"+value);if(!event){event=this["element"+value.capitalize()].bindWithEvent(this,element);}element.store("tip:"+value,event).addEvent("mouse"+value,event);},this);},this);return this;},detach:function(elements){$$(elements).each(function(element){["enter","leave","move"].each(function(value){element.removeEvent("mouse"+value,element.retrieve("tip:"+value)).eliminate("tip:"+value);});this.fireEvent("detach",[element]);if(this.options.title=="title"){var original=element.retrieve("tip:native");if(original){element.set("title",original);}}},this);return this;},elementEnter:function(event,element){this.container.empty();["title","text"].each(function(value){var content=element.retrieve("tip:"+value);if(content){this.fill(new Element("div",{"class":"tip-"+value}).inject(this.container),content);}},this);$clear(this.timer);this.timer=(function(){this.show(this,element);this.position((this.options.fixed)?{page:element.getPosition()}:event);}).delay(this.options.showDelay,this);},elementLeave:function(event,element){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this,element);this.fireForParent(event,element);},fireForParent:function(event,element){element=element.getParent();if(!element||element==document.body){return;}if(element.retrieve("tip:enter")){element.fireEvent("mouseenter",event);}else{this.fireForParent(event,element);}},elementMove:function(event,element){this.position(event);},position:function(event){if(!this.tip){document.id(this);}var size=window.getSize(),scroll=window.getScroll(),tip={x:this.tip.offsetWidth,y:this.tip.offsetHeight},props={x:"left",y:"top"},obj={};for(var z in props){obj[props[z]]=event.page[z]+this.options.offset[z];if((obj[props[z]]+tip[z]-scroll[z])>size[z]-this.options.windowPadding[z]){obj[props[z]]=event.page[z]-this.options.offset[z]-tip[z];}}this.tip.setStyles(obj);},fill:function(element,contents){if(typeof contents=="string"){element.set("html",contents);}else{element.adopt(contents);}},show:function(element){if(!this.tip){document.id(this);}this.fireEvent("show",[this.tip,element]);},hide:function(element){if(!this.tip){document.id(this);}this.fireEvent("hide",[this.tip,element]);}});})();MooTools.lang.set("en-US","Date",{months:["January","February","March","April","May","June","July","August","September","October","November","December"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"AM",PM:"PM",ordinal:function(dayOfMonth){return(dayOfMonth>3&&dayOfMonth<21)?"th":["th","st","nd","rd","th"][Math.min(dayOfMonth%10,4)];},lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"});\r
33623 \r
33624 \r
33625 \r
33626 var Base=new Class({initialize:function(){this.p=pipio;this.registerHandlers();if($defined(this.init)){var args=[];for(var i=0;i<arguments.length;i++){args.push(arguments[i]);}this.init.run(args,this);}},registerHandlers:function(){if($defined(this.EventHandlers)){for(var i=0;i<this.EventHandlers.length;i++){var event=this.EventHandlers[i];try{this.registerHandler(event,this[event].bind(this));}catch(e){Logger().log(event);}}}},registerHandler:function(eventName,func){this.p.registerHandler(eventName,func);},fireEvent:function(){var args=[];for(var i=0;i<arguments.length;i++){args.push(arguments[i]);}this.p.dispatchEvent.run(args,this.p);},call:function(app,name,params,callbackSuccess,callbackFail,form){this.p.call(app,name,params,callbackSuccess,callbackFail,form);},getPrivateUser:function(){return this.p.currentUser;},getCurrentLocation:function(){return this.p.currentLocation;},getLocation:function(username){return this.p.getLocation(username);},getLocations:function(){return this.p.locationsByUsername;},getProfile:function(username){return this.p.getProfile(username);},getSession:function(){return this.p.xmpp.clientName;},getGroups:function(){return this.p.groups;},getContacts:function(){return this.p.connsByUsername;},getContactRequests:function(){return this.p.requestsByUsername;},getContactsByGroup:function(group_id){return this.p.getContactsByGroup(group_id);},getContact:function(username){return this.p.getContact(username);},hasContact:function(username){return this.p.connsByUsername.has(username);},getRoom:function(username){return this.p.getRoom(username);},getRooms:function(){return this.p.roomsByUsername;},getGroup:function(group_id){return this.p.connections.getGroup(group_id);},getUser:function(username){if(username==this.p.currentUser.username){return this.p.currentUser;}else{return this.p.getUser(username);}},videoEnabled:function(){if(this.p.videoInUse){return false;}else{return this.p.videoEnabled;}},checkTimestamp:function(time){return this.p.checkTimestamp(time);},getAppById:function(appId){return this.p.getAppById(appId);},isLoggedIn:function(){return this.p.isLoggedIn();},getPageTitle:function(){return this.p.pageTitle;},getConnectionState:function(username){var state=0;if(this.p.connsByUsername.has(username)){state=1;}else{if(this.p.requestsByUsername.has(username)){state=2;}else{if(this.p.requestsOutByUsername.has(username)){state=3;}}}return state;}});var App=new Class({Extends:Base,initialize:function(app){this.parent();this.name=app.name;this.iconOptions=app.iconOptions;this.registerApis();this.displayName=app.displayName;this.appId=app.id;this.autoDock=app.autoDock||false;this.isStarted=false;this.isDocked=false;this.isExpanded=true;this.defaultMenu=undefined;this.defaultContent=undefined;this.menus=$H();this.contents=$H();this.navs=$H();},registerApis:function(){if($defined(this.requests)){this.requests.each(function(request){this.p.registerCall(this.name,request);},this);}},start:function(options){if(!this.isStarted){if($defined(this.parseOptions)&&$defined(options)){this.parseOptions(options);}this.createApp();this.onStart();this.isStarted=true;if(this.autoDock){this.dock();}}else{if(this.isStarted&&this.isDocked){this.switchDefault();}}if(!this.isLoggedIn()){this.dock();}this.switchDefault();},stop:function(){Logger().log("stopping app"+this.appId);if(this.isStarted){this.destroyApp();this.onStop();this.isStarted=false;this.isDocked=false;this.isExpanded=true;}},getDockIcon:function(){var icon=new Icon20(this.iconOptions);var el=new Element("div",{"class":"app_button has_submenu"}).adopt($(icon),$(this.alert));el.addEvent("click",this.switchDefault.bind(this));return el;},dock:function(){DomUtility.hide(this.navSection);this.undockSep=new Element("div",{"class":"nav_seperator"});this.undockNav=new Nav({displayName:"Undock",onClick:this.undock.bind(this),name:"undock"});this.undockSep.inject(this.navWrapper);$(this.undockNav).inject(this.navWrapper);this.dockButton=new Element("div",{"class":"app_button_wrapper"}).adopt(this.getDockIcon(),this.navWrapper);this.dockButton.inject("dock");this.isDocked=true;},undock:function(){if(!this.isLoggedIn()){this.switchDefault();return;}this.undockSep.destroy();$(this.undockNav).destroy();this.undockNav=null;this.navWrapper.inject(this.navSection);this.dockButton.destroy();DomUtility.show(this.navSection);this.isDocked=false;this.switchDefault();},switchDefault:function(){if($defined(this.defaultContent)){this.fireEvent("viewSwitch",this.appId,this.defaultContent,this.defaultMenu);}},menuAdd:function(menuName,menu){this.fireEvent("menuAdd",this.appId,menuName,menu);if(menu.isDefault){this.defaultMenu=menuName;}this.menus.set(menuName,menu);},menuClose:function(menuName){this.fireEvent("menuClose",this.appId,menuName);this.menus.erase(menuName);},contentAdd:function(contentName,content){this.fireEvent("contentAdd",this.appId,contentName,content);if(content.isDefault){this.defaultContent=contentName;}this.contents.set(contentName,content);},contentClose:function(contentName){this.fireEvent("contentClose",this.appId,contentName);this.contents.erase(contentName);},navAdd:function(nav){var navId=this.appId+"_"+nav.name;nav.navId=navId;if($defined(nav.parentName)){nav.parentId=this.appId+"_"+nav.parentName;}if(this.navs.has(navId)){Logger().log(navId+" nav exist, did not add");return;}if($defined(nav.parentId)){if(!this.navs.has(nav.parentId)){Logger().log(nav.parentId+" parent does not exist");return;}var parent=this.navs.get(nav.parentId);if(!parent.hasSubnavs){Logger().log(nav.parentId+" parent does not allow subnavs");return;}else{parent.addSubnav(nav);}}else{nav.parentId=this.appId;if(nav.bottom){$(nav).inject(this.bottomNav);}else{$(nav).inject(this.nav);}}this.navs.set(navId,nav);},navDelete:function(navName){var navId=this.appId+"_"+navName;if(!this.navs.has(navId)){return;}this.navs.get(navId).destroy();this.navs.erase(navId);},createAppAlert:function(){this.alert=new Alert();this.registerHandler("alertAdd",this.alertAdd.bind(this));this.registerHandler("alertClear",this.alertClear.bind(this));},alertAdd:function(navId){if(navId!=this.appId){return;}this.alert.increment();},alertClear:function(navId,count){if(navId!=this.appId){return;}if(!$defined(count)){var alerts=this.alert.clear();}else{this.alert.decrement(count);}},createApp:function(){this.navSection=new Element("div",{"class":"nav_section"});this.navHeader=new Element("div",{"class":"nav_header clip2"}).inject(this.navSection);this.navWrapper=new Element("div",{"class":"app_sub_menu sub_elements"}).inject(this.navSection);this.nav=new Element("div").inject(this.navWrapper);this.bottomNav=new Element("div").inject(this.navWrapper);this.navSection.inject("nav");this.icon=new Icon20(this.iconOptions);$(this.icon).inject(this.navHeader);this.headerName=new Element("div",{"class":"header_name text12 light","text":TextUtility.unescapeQuotes(this.displayName)}).inject(this.navHeader);this.closeButton=new Element("div",{"class":"button_nav right"}).adopt(new Element("div",{"class":"action close"})).inject(this.navHeader);this.closeButton.addEvent("click",this.stop.bind(this));this.dockButton=new Element("div",{"class":"button_nav right"}).adopt(new Element("div",{"class":"action dock"})).inject(this.navHeader);this.dockButton.addEvent("click",this.dock.bind(this));this.createAppAlert();if($defined(this.onCreate)){this.onCreate();}},destroyApp:function(){this.contents.each(function(content,contentName){this.contentClose(contentName);},this);this.contents.empty();this.menus.each(function(menu,menuName){this.menuClose(menuName);},this);this.menus.empty();this.navs.each(function(nav){nav.destroy();});this.navs.empty();this.navHeader.destroy();this.nav.destroy();this.navSection.destroy();if($defined(this.dockButton)){this.dockButton.destroy();}this.fireEvent("appClose",this.appId);if($defined(this.onDestroy)){this.onDestroy();}}});var AppInstance=new Class({Extends:Base,Implements:App,initialize:function(app,options){this.parent();this.appId=options.appId;this.parseOptions(options);this.name=app.name;this.registerApis();this.isStarted=false;this.isDocked=false;this.isExpanded=true;this.autoDock=app.autoDock||false;this.defaultMenu=undefined;this.defaultContent=undefined;this.menus=$H();this.contents=$H();this.navs=$H();},start:function(appId){this.appId=appId;if(!this.isStarted){this.appId=appId;this.createApp();this.onStart();this.isStarted=true;if(this.autoDock){this.dock();}}else{if(this.isStarted&&this.isDocked){this.switchDefault();}}if(!this.isLoggedIn()){this.dock();}this.switchDefault();}});var Content=new Class({Extends:Base,init:function(options){if(!$defined(options)){options={};}if($defined(this.onBeforeInit)){this.onBeforeInit(options);}this.className=$defined(options.className)?options.className:"";this.isDefault=options.isDefault||false;this.isOn=true;this.firstShow=true;this.bottomFuncCalled=false;this.atBottom=false;this.createContent();if($defined(this.onInit)){this.onInit();}},checkScroll:function(){var maxY=this.contentWrapper.getScrollSize().y;var bottomY=this.contentWrapper.getScroll().y+this.contentWrapper.getSize().y+300;Logger().log("checking scroll "+bottomY+"-"+maxY);if(bottomY>maxY&&!this.bottomFuncCalled&&!this.atBottom){this.bottomFuncCalled=true;this.bottomFunc();}},destroy:function(){if($defined(this.onDestroy)){this.onDestroy();}this.contentWrapper.destroy();},on:function(){this.isOn=true;DomUtility.show(this.contentWrapper);if($defined(this.scrollY)){this.scroll.set(0,this.scrollY);}if($defined(this.onShow)){if(this.firstShow){this.onShow(true);this.firstShow=false;}else{this.onShow(false);}}},off:function(){this.isOn=false;if($defined(this.onHide)){this.onHide();}if($defined(this.contentWrapper)){this.scrollY=this.contentWrapper.getScroll().y;}DomUtility.hide(this.contentWrapper);},createContent:function(){this.contentWrapper=new Element("div",{"class":"content_wrapper"});this.content=new Element("div",{"class":"content "+this.className}).inject(this.contentWrapper);if($defined(this.bottomFunc)){this.contentWrapper.addEvent("mousewheel",this.checkScroll.bind(this));}this.scroll=new Fx.Scroll(this.contentWrapper);},toElement:function(){return this.contentWrapper;}});var Album=new Class({initialize:function(options){this.className=options.className||"";this.id=options.id||"";this.displayName=options.displayName||"Album";this.albumPhotos=new $H();},addPhoto:function(id,thumb,src,caption){var photo=new Object();photo.id=id;photo.caption=caption;photo.thumb=thumb;photo.src=src;this.albumPhotos.set(id,photo);},getPhoto:function(id){return this.albumPhotos.get(id);},getAllPhotos:function(){return this.albumPhotos.getValues();},getSize:function(){return this.albumPhotos.getLength();},getNextPrevPhoto:function(id){var allIds=this.albumPhotos.getKeys();var index=allIds.indexOf(id);var photos=this.albumPhotos.getValues();var i=index;if(allIds.length<=index+1){i=-1;}var next=photos[i+1];i=index;if(index==0){i=allIds.length;}var prev=photos[i-1];return{prev:prev,next:next};},getIndex:function(id){var allIds=this.albumPhotos.getKeys();return allIds.indexOf(id);},nextPhoto:function(id){var allIds=this.albumPhotos.getKeys();var index=allIds.indexOf(id);var photos=this.albumPhotos.getValues();if(allIds.length<=index+1){index=-1;}return photos[index+1];},prevPhoto:function(id){var allIds=this.albumPhotos.getKeys();var index=allIds.indexOf(id);var photos=this.albumPhotos.getValues();if(index==0){index=allIds.length;}return photos[index-1];}});var Alert=new Class({initialize:function(){this.alerts=0;this.createAlert();},createAlert:function(){this.alert=new Element("div",{"class":"alert","text":"0","style":"display: none !important"});},hasAlerts:function(){return this.alerts>0;},update:function(){if(this.alerts<0){this.alerts=0;}this.alert.set("text",this.alerts);if(this.alerts==0){this.alert.setStyle("display","none !important");}else{this.alert.setStyle("display","");}},increment:function(x){if(!$defined(x)){this.alerts++;}else{this.alerts+=x;}this.update();},decrement:function(x){if(!$defined(x)){this.alerts--;}else{this.alerts-=x;}this.update();},clear:function(){var alerts=this.alerts;this.alerts=0;this.update();return alerts;},toElement:function(){return this.alert;},destroy:function(){this.alert.destroy();}});var ButtonMedium=new Class({initialize:function(options){this.displayName=options.displayName;this.className=options.className||"";this.action=options.action||undefined;this.disabled=options.disabled||false;this.createButton();},createButton:function(){this.button=new Element("div",{"class":"button_medium"});this.button.addClass(this.className);if($defined(this.action)){this.button.addClass("has_action");new Element("div",{"class":"action "+this.action}).inject(this.button);}this.button.appendText(TextUtility.unescapeQuotes(this.displayName));},showProgress:function(){this.button.addClass("progress");},hideProgress:function(){this.button.removeClass("progress");},toElement:function(){return this.button;}});var ButtonSmall=new Class({initialize:function(options){this.displayName=options.displayName;this.className=options.className||"";this.action=options.action||undefined;this.disabled=options.disabled||false;this.createButton();},createButton:function(){this.button=new Element("div",{"class":"button_small"});this.button.addClass(this.className);if($defined(this.action)){this.button.addClass("has_action");new Element("div",{"class":"action "+this.action}).inject(this.button);}this.button.appendText(TextUtility.unescapeQuotes(this.displayName));},showProgress:function(){this.button.addClass("progress");},hideProgress:function(){this.button.removeClass("progress");},toElement:function(){return this.button;}});var Icon=new Class({initialize:function(options){this.iconAction=options.iconAction||null;this.isUser=$defined(options.user);if(this.isUser){this.user=options.user;}else{this.iconName=options.iconName;if(this.iconName.contains("http://")){this.isClass=false;}else{this.isClass=true;}}this.createIcon();},createIcon:function(){this.icon=new Element("div",{"class":"icon_wrapper"});if(!this.isUser){if(this.isClass){this.icon.addClass("hasicon on "+this.iconName);this.icon.adopt(new Element("div",{"class":"icon"}));}else{this.icon.adopt(new Element("img",{"src":this.iconName,"style":"height: 16px; width: 16px;"}));}}else{this.icon.addClass("profile_pic_wrapper_16");this.icon.adopt(new Element("img",{"class":"profile_pic profile_pic_16_"+this.user.username,"src":this.user["profile_pic_16"]}),new Element("div",{"class":"online_status online_status_"+this.user.username}));}if($defined(this.iconAction)){this.addAction(this.iconAction);}},toElement:function(){return this.icon;},addAction:function(action){this.iconAction=action;if($defined(this.action)){this.action.destroy();}this.action=new Element("div",{"class":"icon_action "+this.iconAction}).inject(this.icon);}});var Icon20=new Class({initialize:function(options){this.iconAction=options.iconAction||null;this.isUser=$defined(options.user);if(this.isUser){this.user=options.user;}else{this.iconName=options.iconName;if(this.iconName.contains("http://")){this.isClass=false;}else{this.isClass=true;}}this.createIcon();},createIcon:function(){this.icon=new Element("div",{"class":"icon_wrapper"});if(!this.isUser){if(this.isClass){this.icon.addClass("hasicon on "+this.iconName);this.icon.adopt(new Element("div",{"class":"icon20"}));}else{this.icon.adopt(new Element("img",{"src":this.iconName,"style":"height: 20px; width: 20px;"}));}}else{this.icon.addClass("profile_pic_wrapper_16a");this.icon.adopt(new Element("img",{"class":"profile_pic profile_pic_16_"+this.user.username,"src":this.user["profile_pic_16"]}),new Element("div",{"class":"online_status online_status_"+this.user.username}));}if($defined(this.iconAction)){this.addAction(this.iconAction);}},toElement:function(){return this.icon;},addAction:function(action){this.iconAction=action;if($defined(this.action)){this.action.destroy();}this.action=new Element("div",{"class":"icon_action "+this.iconAction}).inject(this.icon);}});var InlineImage=new Class({initialize:function(attachment){this.attachment=attachment;this.imageWrapper=new Element("div",{"class":"thumbnail"});this.progress=new Element("div",{"class":"progress"}).inject(this.imageWrapper);this.image=new Asset.image(this.attachment.url,{title:this.attachment.filename,onload:this.photoLoaded.bind(this)});},photoLoaded:function(){this.progress.destroy();var imageW=this.image.width;var imageH=this.image.height;if(imageH>100){imageW=(100/imageH)*imageW;imageH=100;}this.image.setStyles({height:imageH+"px",width:imageW+"px"});this.imageWrapper.setStyle("width",imageW+"px");this.image.inject(this.imageWrapper);this.image.addEvent("click",pipio.dispatchEvent.bind(pipio,["showPhotoPopup",this.attachment]));},toElement:function(){return this.imageWrapper;}});var ItemLoader=new Class({initialize:function(options){this.items=$H();this.sortValues=$H();this.empty=true;this.highestId=0;this.lowestId=0;this.highestSortValue=0;this.lowestSortValue=0;this.idField=options.idField;this.sortField=options.sortField;this.sortAlpha=options.sortAlpha||false;this.sortAscending=$defined(options.sortAscending)?options.sortAscending:true;this.createElementFunc=options.createElementFunc;this.emptyEl=options.emptyEl||null;this.errorEl=options.errorEl||null;this.loadingEl=options.loadingEl||null;this.createLoader();},remove:function(id){if(!this.items.has(id)){return;}DomUtility.fadeOutDestroy(this.items.get(id));var sortKey=this.sortValues.keyOf(id);this.sortValues.erase(sortKey);this.items.erase(id);if(this.items.getLength()==0){this.empty=true;this.highestId=0;this.lowestId=0;this.highestSortValue=0;this.lowestSortValue=0;this.showEmpty();}},showEmpty:function(){if(!$defined(this.emptyEl)){return;}if(this.empty){DomUtility.show(this.emptyEl);}else{DomUtility.hide(this.emptyEl);}},showError:function(){if(!$defined(this.errorEl)){return;}if($defined(this.emptyEl)){DomUtility.hide(this.emptyEl);}if($defined(this.loadingEl)){DomUtility.hide(this.loadingEl);}DomUtility.show(this.errorEl);},hideError:function(){if($defined(this.errorEl)){DomUtility.hide(this.errorEl);}if(this.empty){this.showEmpty();}},showLoading:function(){if(!$defined(this.loadingEl)||!this.empty){return;}if($defined(this.emptyEl)){DomUtility.hide(this.emptyEl);}if($defined(this.errorEl)){DomUtility.hide(this.errorEl);}DomUtility.show(this.loadingEl);},hideLoading:function(){if($defined(this.loadingEl)){DomUtility.hide(this.loadingEl);}if(this.empty){this.showEmpty();}},process:function(data){var id=data[this.idField];var sortValue=data[this.sortField];if(this.items.has(id)){Logger().log("item "+id+" exists, do not insert");return;}var position=this.checkBoundary(sortValue,id);if(!position){position=this.findPosition(data);}if(typeof position=="object"){this.insertItem(data,"before",position);}else{this.insertItem(data,position);}},findPosition:function(data){var id=data[this.idField];var sortValue=data[this.sortField];if(this.empty){this.highestId=id;this.lowestId=id;this.highestSortValue=sortValue;this.lowestSortValue=sortValue;this.empty=false;return"top";}else{var sortValues=this.getSortValues();for(var i=0;i<sortValues.length;i++){if(this.sortAlpha){if(this.sortAscending){if(sortValue.toString()<sortValues[i].toString()){return this.items[this.sortValues[sortValues[i]]];}}else{if(sortValue.toString()>sortValues[i].toString()){return this.items[this.sortValues[sortValues[i]]];}}}else{if(this.sortAscending){if(parseInt(sortValue)<parseInt(sortValues[i])){return this.items[this.sortValues[sortValues[i]]];}}else{if(parseInt(sortValue)>parseInt(sortValues[i])){return this.items[this.sortValues[sortValues[i]]];}}}}}},getSortValues:function(){if(this.sortAlpha){if(this.sortAscending){return this.sortValues.getKeys().sort();}else{return this.sortValues.getKeys().sort().reverse();}}else{if(this.sortAscending){return this.sortValues.getKeys().sort(this.sortIntAsc);}else{return this.sortValues.getKeys().sort(this.sortIntDesc);}}},sortIntAsc:function(a,b){return a-b;},sortIntDesc:function(a,b){return b-a;},checkBoundary:function(sortValue,id){if(this.sortAlpha){if(this.empty){this.highestId=id;this.lowestId=id;this.highestSortValue=sortValue.toString();this.lowestSortValue=sortValue.toString();this.empty=false;return"top";}if(sortValue.toString()>this.highestSortValue.toString()){this.highestSortValue=sortValue.toString();this.highestId=id;return(this.sortAscending)?"bottom":"top";}else{if(sortValue.toString()<this.lowestSortValue.toString()){this.lowestSortValue=sortValue.toString();this.lowestId=id;return(this.sortAscending)?"top":"bottom";}else{return false;}}}else{if(this.empty){this.highestId=id;this.lowestId=id;this.highestSortValue=sortValue.toString();this.lowestSortValue=sortValue.toString();this.empty=false;return"top";}if(parseInt(sortValue)>parseInt(this.highestSortValue)){this.highestSortValue=parseInt(sortValue);this.highestId=id;return(this.sortAscending)?"bottom":"top";}else{if(parseInt(sortValue)<parseInt(this.lowestSortValue)){this.lowestSortValue=parseInt(sortValue);this.lowestId=id;return(this.sortAscending)?"top":"bottom";}else{return false;}}}},insertItem:function(data,position,beforeEl){var el=this.createElementFunc(data);var sortValue=data[this.sortField];var id=data[this.idField];this.items.set(id,el);this.sortValues.set(sortValue,id);if(position=="top"){el.inject(this.loader,"top");}else{if(position=="before"){el.inject(beforeEl,"before");}else{el.inject(this.loader,"bottom");}}this.empty=false;this.showEmpty();this.hideLoading();this.hideError();},createLoader:function(){this.loader=new Element("div",{});if($defined(this.emptyEl)){this.emptyEl.inject(this.loader);}if($defined(this.errorEl)){this.errorEl.inject(this.loader);DomUtility.hide(this.errorEl);}if($defined(this.loadingEl)){this.loadingEl.inject(this.loader);DomUtility.hide(this.loadingEl);}},count:function(){return this.items.getLength();},toElement:function(){return this.loader;}});function MarkerLight(latlng,opts){this.latlng=latlng;var size=26;var smallSize=20;if(!opts){opts={};}this.user_=opts.user;this.size_=opts.size||size;this.height_=opts.size||size;this.width_=opts.size||size;this.image_=UserUtility.getProfilePic(this.user_.user_hash,this.user_.user_id,this.size_);this.imageOver_=opts.imageOver;this.clicked_=0;this.divClass_="profile_pic_wrapper_"+this.size_;this.imgClass_="profile_pic profile_pic_"+this.size_+"_"+opts.user.username;this.divStyleClass_="online_status online_status_"+opts.user.username;}MarkerLight.prototype=new GOverlay();MarkerLight.prototype.initialize=function(map){var me=this;var div=document.createElement("div");div.className=me.divClass_;div.style.position="absolute";div.style.paddingLeft="0px";div.style.cursor="pointer";div.style.zIndex=1;var tip=new Element("div",{"class":"tooltip above_right","text":TextUtility.unescape(me.user_.fullname)}).adopt(new Element("div",{"class":"tip_corner"}));tip.inject(div);var img=document.createElement("img");img.src=me.image_;img.className=me.imgClass_;img.style.width=me.width_+"px";img.style.height=me.height_+"px";div.appendChild(img);var styleDiv=document.createElement("div");styleDiv.className=me.divStyleClass_;div.appendChild(styleDiv);GEvent.addDomListener(div,"click",function(event){me.clicked_=1;GEvent.trigger(me,"click");pipio.dispatchEvent("showUser",me.user_);});map.getPane(G_MAP_MARKER_PANE).appendChild(div);this.map_=map;this.div_=div;};MarkerLight.prototype.remove=function(){if($defined(this.div_.parentNode)){this.div_.parentNode.removeChild(this.div_);}};MarkerLight.prototype.copy=function(){var opts={};opts.color=this.color_;opts.height=this.height_;opts.width=this.width_;opts.image=this.image_;opts.imageOver=this.image_;return new MarkerLight(this.latlng,opts);};MarkerLight.prototype.redraw=function(force){if(!force){return;}var divPixel=this.map_.fromLatLngToDivPixel(this.latlng);this.div_.style.width=this.width_+"px";this.div_.style.left=(divPixel.x-Math.round(this.width_/2))+"px";this.div_.style.width=this.height_+"px";this.div_.style.top=(divPixel.y)-this.height_+"px";};MarkerLight.prototype.getZIndex=function(m){return GOverlay.getZIndex(marker.getPoint().lat())-m.clicked*10000;};MarkerLight.prototype.getPoint=function(){return this.latlng;};MarkerLight.prototype.setStyle=function(style){for(s in style){this.div_.style[s]=style[s];}};MarkerLight.prototype.setImage=function(image){this.div_.style.background='url("'+image+'")';};var Menu=new Class({Extends:Base,init:function(options){if($defined(this.onBeforeInit)){options=this.onBeforeInit(options);}this.displayName=options.displayName;this.className=$defined(options.className)?options.className:"";this.isDefault=options.isDefault||false;this.closeFunc=$defined(options.closeFunc)?options.closeFunc:null;this.firstShow=true;this.isOn=true;this.createMenu();if($defined(this.onInit)){this.onInit();}},on:function(){DomUtility.show(this.menu);if($defined(this.onShow)){if(this.firstShow){this.onShow(true);this.firstShow=false;}else{this.onShow(false);}}this.isOn=true;},off:function(){if($defined(this.onHide)){this.onHide();}DomUtility.hide(this.menu);this.isOn=false;},destroy:function(){if($defined(this.onDestroy)){this.onDestroy();}this.menu.destroy();},addSection:function(section){section.inject(this.menu);},createMenu:function(){this.title=new Element("div",{"class":"menu_text","text":TextUtility.unescapeQuotes(this.displayName)});this.menu=new Element("div",{"class":"menu "+this.className}).adopt(new Element("div",{"class":"menu_title text12 light"}).adopt(this.title));if($defined(this.closeFunc)){this.menu.addClass("closable");this.closeButton=new Element("div",{"class":"button_nav right"}).adopt(new Element("div",{"class":"action close"})).inject(this.title,"after");$(this.closeButton).addEvent("click",this.closeFunc);}},toElement:function(){return this.menu;}});var Nav=new Class({Extends:Base,EventHandlers:["contentSwitched","alertAdd","alertClear"],init:function(options){if($defined(this.onBeforeInit)){options=this.onBeforeInit(options);}this.name=options.name;this.iconOptions=$defined(options.iconOptions)?options.iconOptions:null;this.displayName=options.displayName;this.className=$defined(options.className)?options.className:"";this.parentName=options.parentName||undefined;if($defined(this.parentName)){this.className+=" sub1";}this.bottom=$defined(options.bottom)?options.bottom:false;this.hasSubnavs=$defined(options.hasSubnavs)?options.hasSubnavs:false;this.closable=$defined(options.closable)?options.closable:false;this.onClose=$defined(options.onClose)?options.onClose:undefined;this.defaultClosed=$defined(options.defaultClosed)?options.defaultClosed:false;this.onClick=$defined(options.onClick)?options.onClick:undefined;this.isExpanded=true;this.isOn=false;this.subnavEls=$H();this.createNav();if($defined(this.onInit)){this.onInit();}},alertAdd:function(navId){if(!$defined(this.navId)||!$defined(this.alert)){return;}if(navId!=this.navId){return;}if(this.isOn){return;}this.alert.increment();if($defined(this.parentId)){this.fireEvent("alertAdd",this.parentId);}},alertClear:function(navId,count){if(!$defined(this.navId)||!$defined(this.alert)){return;}if(navId!=this.navId){return;}if(!$defined(count)){var alerts=this.alert.clear();if($defined(this.parentId)){this.fireEvent("alertClear",this.parentId,alerts);}}else{this.alert.decrement(count);if($defined(this.parentId)){this.fireEvent("alertClear",this.parentId,count);}}},contentSwitched:function(navId){if(!$defined(this.navId)){return;}if(navId==this.navId){this.on();this.alertClear(this.navId);}else{if(navId!=this.navId&&this.isOn){this.off();}}},on:function(){this.nav.addClass("on");this.isOn=true;},off:function(){this.nav.removeClass("on");this.isOn=false;},click:function(){if($defined(this.onClick)){this.onClick();}},close:function(e){e.stopPropagation();if($defined(this.onClose)){this.onClose();}this.destroy();},toggleSubnav:function(e){e.stopPropagation();if(!this.isExpanded){this.expand();}else{this.collapse();}},expand:function(){if(!this.isExpanded&&this.hasSubnavs){DomUtility.expand(this.subnavs);this.pivot.removeClass("pivot_right");this.pivot.addClass("pivot_down");this.nav.removeClass("collapsed");this.isExpanded=true;if($defined(this.onExpand)){this.onExpand();}}},collapse:function(){if(this.isExpanded&&this.hasSubnavs){DomUtility.collapse(this.subnavs);this.pivot.removeClass("pivot_down");this.pivot.addClass("pivot_right");this.nav.addClass("collapsed");this.isExpanded=false;if($defined(this.onCollapse)){this.onCollapse();}}},toElement:function(){return this.navWrapper;},addSubnav:function(nav){if(nav.bottom){$(nav).inject(this.subnavBottomItems);}else{$(nav).inject(this.subnavItems);}this.subnavEls.set(nav.name,nav);},deleteSubnav:function(name){if(!this.subnavEls.has(name)){return;}this.subnavEls.get(name).destroy();this.subnavEls.erase(name);},hasSubnav:function(name){return this.subnavEls.has(name);},createNav:function(){this.navWrapper=new Element("div");this.nav=new Element("div",{"class":"nav"}).inject(this.navWrapper);this.nav.addEvent("click",this.click.bind(this));if(this.hasSubnavs){this.subnavItems=new Element("div");this.subnavBottomItems=new Element("div");this.subnavs=new Element("div",{"class":"sub_elements"}).adopt(this.subnavItems,this.subnavBottomItems).inject(this.navWrapper);this.nav.addClass("has_submenu");}this.nav.addClass(this.className);this.pivot=new Element("div",{"class":"action pivot_down"}).inject(this.nav);this.pivot.addEvent("click",this.toggleSubnav.bindWithEvent(this));if($defined(this.iconOptions)){this.icon=new Icon(this.iconOptions);$(this.icon).inject(this.nav);}else{this.nav.addClass("noicon");}this.alert=new Alert();$(this.alert).inject(this.nav);this.navName=new Element("div",{"class":"nav_name text12 light","text":TextUtility.unescapeQuotes(this.displayName)}).inject(this.nav);if(this.closable){this.closeButton=new Element("div",{"class":"action close"}).inject(this.nav);this.closeButton.addEvent("click",this.close.bindWithEvent(this));}if(this.defaultClosed){this.collapse();}},destroy:function(){if($defined(this.navWrapper)){this.navWrapper.destroy();}if($defined(this.alert)){this.alert.destroy();this.alert=null;}}});var ScrollBar=new Class({initialize:function(content,wrapper){this.content=$(content);this.wrapper=$(wrapper);this.disabled=false;this.createScrollbar();this.setupHandlers();},disable:function(){this.disabled=true;},enable:function(){this.disabled=false;},createScrollbar:function(){this.scrollbar=new Element("div",{"class":"scrollbar"});this.scrollbar.inject(this.wrapper);},dragOn:function(){this.wrapper.addClass("on");},dragOff:function(){this.wrapper.removeClass("on");},setupHandlers:function(){this.scrollHandleDrag=new Drag(this.scrollbar,{snap:0,limit:{"x":[0,0],"y":[0,this.getHandleYMax.bind(this)]},onStart:this.dragOn.bind(this),onDrag:this.handleDragHandler.bind(this),onComplete:this.dragOff.bind(this),onCancel:this.dragOff.bind(this)});this.contentScroller=new Fx.Scroll(this.content,{wheelStops:false});this.content.addEvent("mousewheel",this.scrollHandler.bindWithEvent(this));this.update.periodical(500,this,true);},update:function(){if(this.disabled){return;}var scrollH=this.content.getScrollSize().y;var h=this.content.getSize().y;if(scrollH>h){this.wrapper.addClass("scrolling");var contentScrollRatio=this.content.getScroll().y/this.getContentYMax();if(contentScrollRatio>1){contentScrollRatio=1;this.content.scrollTo(0,this.getContentYMax());}var handleY=this.getHandleYMax()*contentScrollRatio;this.scrollbar.setStyle("top",handleY);}else{this.wrapper.removeClass("scrolling");}},scrollHandler:function(e){if(this.disabled){return;}e=new Event(e);e.stopPropagation();if(e.wheel>0){this.scrollUp(name);}else{if(e.wheel<0){this.scrollDown(name);}}},scrollUp:function(){var scrollY=this.content.getScroll().y;if(scrollY==0){return;}scrollY-=30;if(scrollY<0){scrollY=0;}this.contentScroller.cancel();this.contentScroller.set(0,scrollY);this.update();},scrollDown:function(){var maxY=this.getContentYMax();if(maxY<0){maxY=0;}var scrollY=this.content.getScroll().y;if(scrollY>=maxY){return;}scrollY+=30;if(scrollY>maxY){scrollY=maxY;}this.contentScroller.cancel();this.contentScroller.set(0,scrollY);this.update();},handleDragHandler:function(){var handleY=this.scrollbar.getPosition(this.wrapper).y;var handleYMax=this.getHandleYMax();var contentY=this.getContentYMax()*(handleY/handleYMax);this.content.scrollTo(0,contentY);},getHandleYMax:function(){return this.wrapper.getSize().y-102;},getContentYMax:function(){return this.content.getScrollSize().y-this.content.getSize().y;}});var StreamLoader=new Class({initialize:function(options){this.items=$H();this.timestamps=$H();this.newestTimestamp=0;this.oldestTimestamp=0;this.newestId=0;this.oldestId=0;this.newestTimestampEl=null;this.empty=true;this.createElementFunc=options.createElementFunc;this.alertFunc=options.alertFunc;this.emptyEl=options.emptyEl||null;this.errorEl=options.errorEl||null;this.loadingEl=options.loadingEl||null;this.idField=options.idField||"item_id";this.dateField=options.dateField||"date_created";this.createLoader();},remove:function(id){if(!this.items.has(id)){return;}var el=this.items.get(id);var prev=el.getPrevious();var next=el.getNext();if(prev.hasClass("seperator")&&next.hasClass("seperator")){prev.destroy();}DomUtility.fadeOutDestroy(el);this.items.erase(id);if(this.items.getLength()==0){this.empty=true;this.showEmpty();}},process:function(data){var position=this.findPosition(data);if(!position){return;}this.insertItem(data,position);},showEmpty:function(){if(!$defined(this.emptyEl)){return;}if(this.empty){DomUtility.show(this.emptyEl);}else{DomUtility.hide(this.emptyEl);}},showError:function(){if(!$defined(this.errorEl)){return;}if($defined(this.emptyEl)){DomUtility.hide(this.emptyEl);}if($defined(this.loadingEl)){DomUtility.hide(this.loadingEl);}DomUtility.show(this.errorEl);},hideError:function(){if($defined(this.errorEl)){DomUtility.hide(this.errorEl);}if(this.empty){this.showEmpty();}},showLoading:function(){if(!$defined(this.loadingEl)||!this.empty){return;}if($defined(this.emptyEl)){DomUtility.hide(this.emptyEl);}if($defined(this.errorEl)){DomUtility.hide(this.errorEl);}DomUtility.show(this.loadingEl);},hideLoading:function(){if($defined(this.loadingEl)){DomUtility.hide(this.loadingEl);}if(this.empty){this.showEmpty();}},insertTimestamp:function(timestamp,position){var el=StreamItemUtility.createDateSeperatorItem(timestamp);el.inject(this.loader,position);if(position=="top"){this.newestTimestampEl=el;}},findPosition:function(data){var id=data[this.idField];var timestamp=this.getTimestamp(data[this.dateField]);if(this.empty){this.insertTimestamp(timestamp,"top");this.oldestTimestamp=timestamp;this.newestTimestamp=timestamp;this.newestId=id;this.oldestId=id;this.empty=false;return"top";}else{if(timestamp>=this.newestTimestamp&&id>this.newestId){if(!this.checkTimestampSameDay(this.newestTimestamp,timestamp)){this.insertTimestamp(timestamp,"top");}this.newestTimestamp=timestamp;this.newestId=id;return"top";}else{if(timestamp<=this.oldestTimestamp&&id<this.oldestId){if(!this.checkTimestampSameDay(this.oldestTimestamp,timestamp)){this.insertTimestamp(timestamp,"bottom");}this.oldestTimestamp=timestamp;this.oldestId=id;return"bottom";}else{return false;}}}},checkTimestampSameDay:function(ts1,ts2){var d1=DateUtility.convertFromTimestamp(ts1);var d2=DateUtility.convertFromTimestamp(ts2);return(d1.getDate()==d2.getDate()&&d1.getMonth()==d2.getMonth());},getTimestamp:function(dateValue){if(parseInt(dateValue)==dateValue){return dateValue;}return Date.parse(dateValue)/1000;},insertItem:function(data,position){var el=this.createElementFunc(data);var id=data[this.idField];var date=this.getTimestamp(data[this.dateField]);this.items.set(id,el);this.timestamps.set(id,date);if(position=="top"){el.inject(this.newestTimestampEl,"after");DomUtility.fadeIn(el,1000);}else{el.inject(this.loader,"bottom");}this.empty=false;this.showEmpty();this.hideLoading();this.hideError();if($defined(this.alertFunc)&&pipio.checkTimestamp(date)){this.alertFunc(data);}},createLoader:function(){this.loader=new Element("div",{});if($defined(this.emptyEl)){this.emptyEl.inject(this.loader);}if($defined(this.errorEl)){this.errorEl.inject(this.loader);DomUtility.hide(this.errorEl);}if($defined(this.loadingEl)){this.loadingEl.inject(this.loader);DomUtility.hide(this.loadingEl);}},toElement:function(){return this.loader;}});var Toggle=new Class({initialize:function(on){this.isOn=$defined(on)?on:false;this.toggle=new Element("div",{"class":"toggle"}).adopt(new Element("div",{"class":"handle"}),new Element("div",{"class":"toggle_text on","text":"on"}),new Element("div",{"class":"toggle_text off","text":"off"}));this.toggle.addEvent("click",this.switchToggle.bind(this));this.setOn();},switchToggle:function(){this.isOn=!this.isOn;this.setOn();},on:function(){this.isOn=true;this.setOn();},off:function(){this.isOn=false;this.setOn();},set:function(on){if(on){this.on();}else{this.off();}},setOn:function(){if(this.isOn){this.toggle.addClass("on");this.toggle.removeClass("off");}else{this.toggle.removeClass("on");this.toggle.addClass("off");}},toInt:function(){return(this.isOn)?1:0;},toElement:function(){return this.toggle;}});var Popup=new Class({Extends:Base,initialize:function(options){this.parent();var options=$defined(options)?options:{};this.navs=$H();this.contents=$H();this.contentSize=$defined(options.size)?options.size:{x:400,y:300};this.resizable=$defined(options.resizable)?options.resizable:true;this.dockable=$defined(options.dockable)?options.dockable:true;this.closable=$defined(options.closable)?options.closable:true;this.className=$defined(options.className)?options.className:undefined;this.noHide=$defined(options.noHide)?options.noHide:false;this.onClose=$defined(options.onClose)?options.onClose:undefined;this.hasTabs=false;this.isDocked=false;this.createPopup();},toElement:function(){return this.popup;},addContent:function(contentName,nav,content){if(this.contents.has(contentName)){return;}$(nav).inject(this.nav);$(content).inject(this.content);this.navs.set(contentName,nav);this.contents.set(contentName,content);nav.onClick=this.switchContent.bind(this,[contentName]);content.resizePopup=this.resizePopup.bind(this);if(nav.closable){nav.onClose=this.closeContent.bind(this,[contentName]);content.onClose=this.closeContent.bind(this,[contentName]);}this.checkTabs();this.switchContent(contentName);},closeContent:function(contentName){if(!this.contents.has(contentName)){return;}this.navs.get(contentName).destroy();this.contents.get(contentName).off();this.contents.get(contentName).close();this.navs.erase(contentName);this.contents.erase(contentName);if(this.contents.getLength()==0){this.close();return;}if(contentName==this.currentContent){this.currentContent=null;var last=this.contents.getKeys().pop();this.switchContent(last);}this.checkTabs();this.setTitle();},switchContent:function(contentName){if(!this.contents.has(contentName)){return;}if(this.isDocked){this.undock();}if(contentName==this.currentContent){return;}if($defined(this.currentContent)){this.navs.get(this.currentContent).off();this.contents.get(this.currentContent).off();}this.navs.get(contentName).on();this.contents.get(contentName).on();this.currentContent=contentName;this.setTitle();},setTitle:function(){var nav=this.navs.get(this.currentContent);var icon=new Icon20(nav.iconOptions);var titleText=new Element("div",{"class":"title_text","text":TextUtility.unescapeQuotes(nav.displayName)});this.titleIcon=$(icon).replaces(this.titleIcon);this.titleText=titleText.replaces(this.titleText);},getDockIcon:function(){var nav=this.navs.get(this.currentContent);var icon=new Icon20(nav.iconOptions);var el=new Element("div",{"class":"app_button has_submenu"}).adopt($(icon));el.addEvent("click",this.undock.bind(this));return el;},checkTabs:function(){if(this.contents.getLength()>1){this.popup.addClass("tabbed");this._checkBounds();this.hasTabs=true;}else{this.popup.removeClass("tabbed");this.hasTabs=false;}},resizePopup:function(x,y){var size={x:x,y:y+24};this.popup.setStyle("height",size.y+"px");this.popup.setStyle("width",size.x+"px");this._checkBounds();},reCenter:function(){var size={x:this.popup.getSize().x,y:this.popup.getSize().y};var pos={x:window.getSize().x/2-(size.x/2),y:window.getSize().y/2-(size.y/2)};if(pos.y<0){pos.y=0;}this.popup.setStyles({"top":pos.y+"px","left":pos.x+"px"});},createPopup:function(){this.size={x:this.contentSize.x,y:this.contentSize.y+24};var pos={x:window.getSize().x/2-(this.size.x/2),y:window.getSize().y/2-(this.size.y/2)};if(pos.y<0){pos.y=0;}this.popup=new Element("div",{"class":"popup","styles":{"height":this.size.y+"px","width":this.size.x+"px","top":pos.y+"px","left":pos.x+"px"}});if($defined(this.className)){this.popup.addClass(this.className);}this.title=new Element("div",{"class":"popup_title text12 light"}).inject(this.popup);this.nav=new Element("div",{"class":"app_sub_menu popup_tabs"}).inject(this.popup);this.content=new Element("div",{"class":"popup_content"}).inject(this.popup);this.dragBorder=new Element("div",{"class":"popup_drag","text":"Drag this window to move it"}).inject(this.popup);this.popup.inject("popups");DomUtility.fadeIn(this.popup);this.titleIcon=new Element("div").inject(this.title);this.titleText=new Element("div").inject(this.title);if(this.closable){this.closeButton=new Element("div",{"class":"button_nav right"}).adopt(new Element("div",{"class":"action close"})).inject(this.title);this.closeButton.addEvent("click",this.close.bind(this));}if(this.dockable){this.dockButton=new Element("div",{"class":"button_nav right"}).adopt(new Element("div",{"class":"action dock"})).inject(this.title);this.dockButton.addEvent("click",this.dock.bind(this));}this.drag=this.popup.makeDraggable({handle:this.title,onStart:this._startDrag.bind(this),onComplete:this._stopDrag.bind(this),onCancel:this._stopDrag.bind(this)});if(this.resizable){this.resizeHandle=new Element("div",{"class":"resize"}).inject(this.popup);this.popup.makeResizable({handle:this.resizeHandle,limit:{x:[400,800],y:[300,800]}});}this.popup.addEvent("mousedown",this._select.bind(this));this._select();this._checkBounds();if($defined(this.onCreate)){this.onCreate();}},close:function(){this.contents.each(function(content){content.close();});this.popup.destroy();if($defined(this.onClose)){this.onClose();}delete (this);},dock:function(){this.navs.get(this.currentContent).off();this.contents.get(this.currentContent).off();this.dockButton=new Element("div",{"class":"app_button_wrapper"}).adopt(this.getDockIcon(),this.nav);this.dockButton.inject("dock");DomUtility.fadeOut(this.popup);this.isDocked=true;},undock:function(){this.nav.inject(this.popup);this.dockButton.destroy();DomUtility.fadeIn(this.popup);this.navs.get(this.currentContent).on();this.contents.get(this.currentContent).on();this.isDocked=false;},_select:function(){this.popup.setStyle("z-index",DomUtility.getZ("popup"));},_startDrag:function(){if(this.noHide){return;}DomUtility.hide(this.nav);DomUtility.show(this.dragBorder);this.contents.get(this.currentContent).off();},_stopDrag:function(){if(!this.noHide){DomUtility.hide(this.dragBorder);DomUtility.show(this.nav);this.nav.set("style","");this.contents.get(this.currentContent).on();}this._checkBounds();},_checkBounds:function(){var pos=this.popup.getPosition();if(pos.x+this.popup.getSize().x>window.getSize().x){this.popup.setStyle("left",window.getSize().x-this.popup.getSize().x);}if(pos.y+this.popup.getSize().y>window.getSize().y){this.popup.setStyle("top",window.getSize().y-this.popup.getSize().y);}pos=this.popup.getPosition();if(pos.x<0){this.popup.setStyle("left",0);}if(pos.y<0){this.popup.setStyle("top",0);}}});var PopupContent=new Class({Extends:Base,init:function(options){if(!$defined(options)){options={};}if($defined(this.onBeforeInit)){options=this.onBeforeInit(options);}this.isOn=false;this.destroy=$defined(options.destroy)?options.destroy:true;this.createContent();if($defined(this.onInit)){this.onInit();}},on:function(){Logger().log("turning on content");DomUtility.show(this.content);if($defined(this.onShow)){this.onShow();}this.isOn=true;},off:function(){if($defined(this.onHide)){this.onHide();}DomUtility.hide(this.content);this.isOn=false;},close:function(destroy){if(this.destroy||destroy){this.content.destroy();}else{this.content.dispose();}},closeContent:function(){if($defined(this.onClose)){this.onClose();}},createContent:function(){this.content=new Element("div",{"class":this.className});this.off();},toElement:function(){return this.content;}});var AlertPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.alertMessage=options.alertMessage;return options;},onInit:function(){new Element("div",{"class":"text_section centered light","text":TextUtility.unescape(this.alertMessage)}).inject(this.content);this.actionButton=new ButtonMedium({displayName:"Close",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.closeContent.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton)).inject(this.content);}});var ConfirmPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.confirmMessage=options.confirmMessage;this.confirmFunc=options.confirmFunc;return options;},onInit:function(){new Element("div",{"class":"text_section centered light","text":TextUtility.unescape(this.confirmMessage)}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Confirm",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.confirmFunc);$(this.actionButton).addEvent("click",this.progressClose.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},progressClose:function(){this.actionButton.showProgress();this.closeContent.delay(1500,this);}});var RoomStatusBox=new Class({Extends:Base,EventHandlers:["roomMembershipUpdated","roomStatusUpdated","roomStatusCleared"],init:function(room){this.room=room;this.defaultStatus="has no current status";this.canPost=(this.room.status==1);this.createStatusBox();},createStatusBox:function(){this.box=ItemUtility.createPostBubble("post status_message haspic");ItemUtility.createProfilePic(this.room,32).inject(this.box);var buttonText="Write in "+this.room.room_name;this.writeButton=new Element("div",{"class":"button","text":TextUtility.unescape(buttonText)}).inject(this.box);this.writeButton.addEvent("click",this.fireEvent.bind(this,["roomShareBoxShow",this.room]));this.setPostButton();this.content=new Element("div",{"class":"post_content"}).inject(this.box);var header=new Element("div",{"class":"header"}).inject(this.content);StreamItemUtility.createStreamUserAction("status dark").inject(header);var creator=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(this.room.room_name)}).inject(header);creator.addEvent("click",this.fireEvent.bind(this,["showRoom",this.room]));this.statusText=new Element("span",{"class":"status"}).inject(header);this.editButton=new Element("span",{"class":"edit_link","text":"update"});this.editButton.addEvent("click",this.fireEvent.bind(this,["showRoomStatusUpdatePopup",this.room]));this.clearButton=new Element("span",{"class":"edit_link","text":"clear"});this.clearButton.addEvent("click",this.clearStatus.bind(this));this.editSection=new Element("span").adopt($(this.editButton),$(this.clearButton)).inject(header);this.setEditButton();this.footer=StreamItemUtility.createStatusBoxFooter(this.room.status_message).inject(this.content);this.updateStatus();},roomMembershipUpdated:function(data){if(!$defined(data.username)||data.username!=this.room.username){return;}this.room.status=data.status;this.canPost=(this.room.status==1);this.setPostButton();},setEditButton:function(){if(this.canPost){DomUtility.show(this.editSection,"inline");}else{DomUtility.hide(this.editSection);}},setPostButton:function(){if(this.canPost){DomUtility.show(this.writeButton);}else{DomUtility.hide(this.writeButton);}},updateStatus:function(){this.isEmpty=(!$defined(this.room.status_message)||this.room.status_message.status.trim()=="");if(this.isEmpty){this.statusText.addClass("empty");this.statusText.set("text"," "+TextUtility.unescape(this.defaultStatus));DomUtility.hide(this.clearButton);}else{this.statusText.removeClass("empty");this.statusText.set("text"," "+TextUtility.unescape(this.room.status_message.status.trim()));DomUtility.show(this.clearButton,"inline");}this.footer.destroy();this.footer=StreamItemUtility.createStatusBoxFooter(this.room.status_message).inject(this.content);},clearStatus:function(){var params={username:this.room.username,body:"",res:this.getSession()};this.call("pipio","publish_roomstatus",params);this.roomStatusCleared({username:this.room.username});},roomStatusUpdated:function(data){if(!$defined(data.username)||data.username!=this.room.username){return;}this.room=this.getRoom(data.username);this.updateStatus();},roomStatusCleared:function(data){if(!$defined(data.username)||data.username!=this.room.username){return;}this.room.status_message.status="";this.room.status_message.creator=undefined;this.room.status_message.date_created=undefined;this.room.status_message.location=undefined;this.updateStatus();},toElement:function(){return this.box;}});var StatusBox=new Class({Extends:Base,EventHandlers:["userStatusUpdated","userStatusCleared","contactAdded","contactDeleted"],init:function(user){this.user=user;this.isSelf=this.user.user_id==this.getPrivateUser().user_id;this.defaultStatus="has no current status";this.canPost=$defined(this.getContact(this.user.username))||this.isSelf;this.createStatusBox();},createStatusBox:function(){this.box=ItemUtility.createPostBubble("post status_message haspic");ItemUtility.createProfilePic(this.user,32).inject(this.box);var buttonText=this.isSelf?"Write in Your Stream":"Write in "+this.user.first_name+"'s Stream";this.writeButton=new Element("div",{"class":"button","text":TextUtility.unescape(buttonText)}).inject(this.box);this.writeButton.addEvent("click",this.fireEvent.bind(this,["shareBoxShow",this.user]));this.setPostButton();this.content=new Element("div",{"class":"post_content"}).inject(this.box);var header=new Element("div",{"class":"header"}).inject(this.content);StreamItemUtility.createStreamUserAction("status dark").inject(header);var creator=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(this.user.fullname)}).inject(header);creator.addEvent("click",this.fireEvent.bind(this,["showUser",this.user]));this.status=new Element("span",{"class":"status"}).inject(header);if(this.isSelf){this.editButton=new Element("span",{"class":"edit_link","text":"update"}).inject(header);this.editButton.addEvent("click",this.fireEvent.bind(this,["showStatusUpdatePopup"]));this.clearButton=new Element("span",{"class":"edit_link","text":"clear"}).inject(header);this.clearButton.addEvent("click",this.clearStatus.bind(this));}this.footer=StreamItemUtility.createStatusBoxFooter(this.user.status_message).inject(this.content);this.updateStatus();},contactAdded:function(user){if(this.user.username!=user.username){return;}this.canPost=true;this.setPostButton();},contactDeleted:function(username){if(this.user.username!=username){return;}this.canPost=false;this.setPostButton();},setPostButton:function(){if(this.canPost){DomUtility.show(this.writeButton);}else{DomUtility.hide(this.writeButton);}},updateStatus:function(){this.isEmpty=this.user.status_message.status.trim()=="";if(this.isEmpty){this.status.addClass("empty");this.status.set("text"," "+TextUtility.unescape(this.defaultStatus));if(this.isSelf){DomUtility.hide(this.clearButton);}}else{this.status.removeClass("empty");this.status.set("text"," "+TextUtility.unescape(this.user.status_message.status.trim()));if(this.isSelf){DomUtility.show(this.clearButton,"inline");}}this.footer.destroy();this.footer=StreamItemUtility.createStatusBoxFooter(this.user.status_message).inject(this.content);},clearStatus:function(){var params={body:"",res:this.getSession()};this.call("pipio","publish_status",params);this.userStatusCleared({username:this.user.username});},userStatusUpdated:function(data){if(!$defined(data.username)||data.username!=this.user.username){return;}this.user.status_message=data.status_message;this.updateStatus();},userStatusCleared:function(data){if(!$defined(data.username)||data.username!=this.user.username){return;}this.user.status_message.status="";this.user.status_message.date_created=undefined;this.user.status_message.location=undefined;this.updateStatus();},toElement:function(){return this.box;}});var AttachmentUtility={parseLinkAttachment:function(attachment){if($defined(attachment.processed)){return attachment;}attachment.processed=true;attachment.is_video=false;attachment.is_photo=false;if(attachment.url.contains("youtube.com")){var youtubeId=attachment.url.replace(/^[^v]+v.(.{11}).*/,"$1");if(youtubeId!=""){attachment.is_video=true;attachment.video_type="youtube";attachment.youtubeId=youtubeId;return attachment;}}else{if(attachment.url.contains("collegehumor.com/video:")){var vimeoId=attachment.url.split("collegehumor.com/video:")[1];if(vimeoId!=""){attachment.is_video=true;attachment.video_type="ch";attachment.vimeoId=vimeoId;return attachment;}}else{if(attachment.url.contains("vimeo.com/")){var vimeoId=attachment.url.split("vimeo.com/")[1];if(vimeoId!=""){attachment.is_video=true;attachment.video_type="vimeo";attachment.vimeoId=vimeoId;return attachment;}}else{if(attachment.url.contains("hulu.com")){attachment.is_video=true;attachment.video_type="hulu";return attachment;}else{if(attachment.url.contains("break.com")){attachment.is_video=true;attachment.video_type="break";return attachment;}else{if(DataUtility.validatePhotoFile(attachment.url)){attachment.is_photo=true;return attachment;}}}}}}return attachment;},parsePhotoAttachment:function(attachment){if($defined(attachment.processed)){return attachment;}attachment.processed=true;attachment.is_photo=true;return attachment;}};var DataUtility={photoExtensions:[".jpeg",".jpg",".gif",".png",".bmp"],validateUrl:function(url){var v=new RegExp();v.compile("^([A-Za-z]+://[A-Za-z0-9-_]+.[A-Za-z0-9-_%&?/.=,+~!:@()]+(#[A-Za-z0-9-_%&?/.=,+~!:@()]+)?)$");return v.test(url);},validatePhotoFile:function(filename){if(filename.substring(filename.length-5).toLowerCase()==".jpeg"){return true;}var ext=filename.substring(filename.length-4).toLowerCase();return DataUtility.photoExtensions.contains(ext);},getGeoString:function(location){if(!$defined(location)){return false;}var locationString=false;var locality=DataUtility.getGeoLocality(location);if(locality){locationString=locality;}var label=DataUtility.getGeoLabel(location);if(label){locationString=label+", "+locality;}return locationString;},getGeoLabel:function(location){if($defined(location.label)&&location.label!=""){return location.label;}else{return false;}},getGeoLocality:function(location){var local="";if(location.country_code=="US"){if($defined(location.region)&&$defined(location.city)&&location.region!=""&&location.city!=""){local=location.city+", "+location.region;}else{return false;}}else{if($defined(location.city)&&location.city!=""){local=location.city+", "+location.country;}else{if(location.city==""&&$defined(location.region)&&location.region!=""){local=location.region+", "+location.country;}else{if(!$defined(location.city)&&$defined(location.country)){local=location.country;}else{return false;}}}}return local;},getPipioUrl:function(url,hash){if($defined(hash)){return"/"+hash;}else{return url;}},getFacebookPhotoUrl:function(url){return url.replace("_s.jpg","_n.jpg");},sortUsers:function(a,b){return a.last_name.toLowerCase()<b.last_name.toLowerCase();},getCookie:function(c_name){if(document.cookie.length>0){c_start=document.cookie.indexOf(c_name+"=");if(c_start!=-1){c_start=c_start+c_name.length+1;c_end=document.cookie.indexOf(";",c_start);if(c_end==-1){c_end=document.cookie.length;}return unescape(document.cookie.substring(c_start,c_end));}}return undefined;},getFileUrl:function(hash,file_id,filename){var serverId=file_id%16;return"http://files"+serverId.toString(16)+".pip.io/"+hash.substring(0,2)+"/"+hash.substring(2,3)+"/"+hash.substring(3,5)+"/"+hash.substring(5,8)+"/"+file_id+"/"+filename;}};var DateUtility={convertFromGMT:function(date){var offsetMils=date.getTimezoneOffset()*60*1000;date.setTime(date.getTime()-offsetMils);return date;},getTimestamp:function(ts,format){if(!$defined(format)){format="%B %D, %I:%M%p";}if(new Date().getTime()-ts.getTime()>86400000){return ts.format(format);}else{return ts.timeAgoInWords();}},convertFromTimestamp:function(ts){var date=new Date();date.setTime(ts*1000);return date;}};var DomUtility={toggle:function(id){if($(id).getStyle("display")=="none"){DomUtility.show(id);}else{DomUtility.hide(id);}},hide:function(id){if($(id)!=null){$(id).setStyle("display","none");}},show:function(id,display){if(!$defined(display)){display="block";}if($(id)!=null){$(id).setStyle("display",display);}},expand:function(id){var el=$(id);el.get("tween",{duration:150}).start("height",el.getScrollSize().y).chain(function(){el.setStyle("height","auto");});},collapse:function(id){var el=$(id);el.setStyle("height",el.getSize().y);el.get("tween",{duration:150}).start("height",0);},setHeight:function(id,h){var el=$(id);el.get("tween",{duration:150}).start("height",h);},expandFade:function(id,h){var el=$(id);el.setStyle("opacity",0);el.get("tween",{duration:150}).start("height",h).chain(function(){el.get("tween",{duration:800}).start("opacity",1);});},collapseFade:function(id){var el=$(id);el.get("tween",{duration:800}).start("opacity",0).chain(function(){el.get("tween",{duration:150}).start("height",0);});},fadeOut:function(id,destroy){var el=$(id);el.setStyle("opacity",1);el.get("tween",{duration:500}).start("opacity",0).chain(function(){if(destroy){el.destroy();}});},fadeOutDestroy:function(id){DomUtility.fadeOut(id,true);},fadeIn:function(id,duration){var el=$(id);duration=duration||500;el.setStyle("opacity",0);el.get("tween",{duration:duration}).start("opacity",1);},getZ:function(name){var zName=name+"Z";if(!$defined(window[zName])){window[zName]=200;}window[zName]++;return window[zName];},textareaAutoSize:function(el,min){min=$defined(min)?min:16;el=$(el);if(el.value.trim().length<30&&el.getSize().y>min){el.setStyle("height",min);return true;}if(el.getScrollSize().y>min&&el.getScrollSize().y>el.getSize().y){el.setStyle("height",el.getScrollSize().y);return true;}return false;}};var ItemUtility={createProfilePic:function(user,size){var picSize=(size=="16a")?16:size;if($defined(user.fullname)){var el=new Element("div",{"class":"shadowed profile_pic_wrapper_"+size}).adopt(new Element("img",{"class":"profile_pic profile_pic_"+picSize+"_"+user.username,"src":user["profile_pic_"+picSize],"title":TextUtility.unescape(user.fullname)}),new Element("div",{"class":"online_status online_status_"+user.username,"title":TextUtility.unescape(user.fullname)}));return el;}else{if($defined(user.room_name)){var el=new Element("div",{"class":"shadowed profile_pic_wrapper_"+size}).adopt(new Element("img",{"class":"profile_pic profile_pic_"+picSize+"_"+user.username,"src":user["profile_pic_"+picSize],"title":TextUtility.unescape(user.room_name)}),new Element("div",{"class":"online_status online_status_"+user.username,"title":TextUtility.unescape(user.room_name)}));return el;}}},createItemPic:function(url,size){var picSize=$defined(size)?size:32;var el=new Element("div",{"class":"shadowed profile_pic_wrapper_"+picSize}).adopt(new Element("img",{"class":"profile_pic profile_pic_"+picSize,"src":url}),new Element("div",{"class":"online_status"}));return el;},createChatPostItem:function(msg,user){var el=ItemUtility.createPostBubble("post chat haspic");if(!msg.outbound){user=msg.target;}ItemUtility.createProfilePic(user,20).inject(el);new Element("div",{"class":"post_content"}).adopt(new Element("div",{"class":"header","html":TextUtility.replaceUrls(TextUtility.cleanText(msg.msg))})).inject(el);return el;},createChatPostHeading:function(user,date){var el=new Element("div",{"class":"post chat heading"});var ts=$defined(date)?new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D, %I:%M%p"),"ts":date,"ts_format":"%B %D, %I:%M%p"}):new Element("span");new Element("div",{"class":"post_content"}).adopt(new Element("div",{"class":"header"}).adopt(new Element("span",{"class":"user_name","text":TextUtility.unescapeQuotes(user.fullname)}),ts)).inject(el);return el;},createChatTypingHeading:function(user){var el=new Element("div",{"class":"post chat heading"});new Element("div",{"class":"post_content"}).adopt(new Element("div",{"class":"header"}).adopt(new Element("span",{"class":"user_name","text":TextUtility.unescapeQuotes(user.fullname)}),new Element("span",{"class":"status_text","text":"is typing"}))).inject(el);return el;},createPostBubble:function(className,nocorner){if(nocorner){var el=new Element("div",{"class":className}).adopt(new Element("div",{"class":"bubble"}).adopt(new Element("div",{"class":"bubble_inner"})));}else{var el=new Element("div",{"class":className}).adopt(new Element("div",{"class":"bubble"}).adopt(new Element("div",{"class":"bubble_inner"}),new Element("div",{"class":"corner"})));}return el;}};var Logger=(function(){var LoggerSingleton=new Class({initialize:function(){this._log=new Log();this._log.enableLog();},log:function(val){this._log.log(val);}});var singleton;return function(){return singleton?singleton:singleton=new LoggerSingleton();};})();var TextUtility={unescapeQuotes:function(val){if(!$defined(val)){return"";}val=val.toString();val=val.split("\\\\").join("\\");val=val.split("\\'").join("'");val=val.split('\\"').join('"');return val;},unescapeHtml:function(val){if(!$defined(val)){return"";}val=val.toString();val=val.split("&lt;").join("<");val=val.split("&gt;").join(">");val=val.split("&amp;").join("&");return val;},unescape:function(val){return TextUtility.unescapeQuotes(TextUtility.unescapeHtml(val));},escapeHtml:function(val){if(!$defined(val)){return"";}val=val.toString();val=val.split("<").join("&lt;");val=val.split(">").join("&gt;");return val;},stripHtml:function(val){if(!$defined(val)){return"";}val=val.toString();var re=/<\S[^><]*>/g;val.replace(re,"");return val;},cleanText:function(val){if(!$defined(val)){return"";}val=val.toString();val=TextUtility.unescapeQuotes(val);val=TextUtility.escapeHtml(val);return val;},pluralText:function(count,singular,plural){if(count==1){return count+" "+singular;}else{return count+" "+plural;}},replaceUrls:function(val){if(!$defined(val)){return"";}return val.replace(/([A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_%&\?\/.=,+~!:@()]+(#[A-Za-z0-9-_%&\?\/.=,+~!:@()]+)?)/g,'<a href="$1" target="_blank">$1</a>');},convertNewLine:function(val){if(!$defined(val)){return"";}val=val.toString();val=val.split("\n").join("<br/>");return val;}};String.format=function(text){if(arguments.length<=1){return text;}var tokenCount=arguments.length-2;for(var token=0;token<=tokenCount;token++){text=text.replace(new RegExp("\\{"+token+"\\}","gi"),arguments[token+1]);}return text;};var UserUtility={profilePicVersionSet:function(user_id,ver){if(!$defined(window.profilePicVer)){window.profilePicVer=new Hash();}window.profilePicVer.set(user_id,ver);},profilePicVersionGet:function(user_id){if(!$defined(window.profilePicVer)){return 0;}if(!window.profilePicVer.has(user_id)){return 0;}return window.profilePicVer.get(user_id);},getProfilePic:function(hash,user_id,size){if(!$defined(size)){size=26;}var serverId=user_id%16;var version=UserUtility.profilePicVersionGet(user_id);return"http://profilepics"+serverId.toString(16)+".pip.io/"+hash.substring(0,2)+"/"+hash.substring(2,3)+"/"+hash.substring(3,5)+"/"+user_id+"/"+size+".jpg?"+version;},processSource:function(source){if($defined(source.user_id)){return UserUtility.processUser(source);}else{if($defined(source.room_id)){return UserUtility.processRoom(source);}}},processRoom:function(room){var proom={};proom.username=room.username.toLowerCase();if($defined(room.about)){pipio.profileUpdated({username:room.username,about:room.about});}if($defined(pipio.getRoom(proom.username))){var existing=pipio.getRoom(proom.username);if($defined(room.about)){pipio.profileUpdated({username:proom.username,about:room.about});}if($defined(room.status_message)&&$defined(room.status_message.status)){if($defined(room.status_message.status)&&existing.status_message.status!=room.status_message.status){pipio.dispatchEvent("roomStatusUpdated",{username:room.username,status_message:room.status_message});existing.status_message=room.status_message;}}if($defined(room.is_public)){existing.is_public=parseInt(room.is_public);}if($defined(room.status)){existing.status=parseInt(room.status);}if($defined(room.subscribed)){existing.status=parseInt(room.subscribed);}return existing;}proom.status_message=$defined(room.status_message)?room.status_message:{status:""};proom.room_id=room.room_id;proom.room_name=room.room_name;proom.room_hash=room.room_hash;proom.date_created=room.date_created;proom.creator_id=$defined(room.creator_id)?room.creator_id:0;proom.creator=$defined(room.creator)?UserUtility.processUser(room.creator):null;proom.is_public=parseInt(room.is_public);proom.status=$defined(room.status)?parseInt(room.status):0;proom.subscribed=$defined(room.subscribed)?parseInt(room.subscribed):0;proom.about=$defined(room.about)?room.about:null;proom.profile_pic_16=UserUtility.getProfilePic(room.room_hash,room.room_id,16);proom.profile_pic_20=UserUtility.getProfilePic(room.room_hash,room.room_id,20);proom.profile_pic_26=UserUtility.getProfilePic(room.room_hash,room.room_id,26);proom.profile_pic_32=UserUtility.getProfilePic(room.room_hash,room.room_id,32);proom.profile_pic_42=UserUtility.getProfilePic(room.room_hash,room.room_id,42);proom.profile_pic_60=UserUtility.getProfilePic(room.room_hash,room.room_id,60);proom.profile_pic_100=UserUtility.getProfilePic(room.room_hash,room.room_id,100);proom.profile_pic_200=UserUtility.getProfilePic(room.room_hash,room.room_id,200);pipio.cacheRoom(proom);return proom;},processUser:function(user){var puser={};if(!$defined(user)||!$defined(user.username)){return;}puser.username=user.username.toLowerCase();if($defined(user.current_location)&&user.current_location!=""){pipio.locationUpdated({username:puser.username,location_enabled:$defined(user.location_enabled)?user.location_enabled:0,location:user.current_location});}if($defined(user.about)){pipio.profileUpdated({username:puser.username,about:user.about});}if($defined(pipio.getUser(puser.username))){var existing=pipio.getUser(puser.username);if($defined(user.status_message)&&$defined(user.status_message.status)){if($defined(user.status_message.status)&&existing.status_message.status!=user.status_message.status){pipio.dispatchEvent("userStatusUpdated",{username:user.username,status_message:user.status_message});existing.status_message=user.status_message;}}if($defined(user.location_enabled)){existing.location_enabled=user.location_enabled;}if($defined(user.is_public)){existing.is_public=user.is_public;}return existing;}puser.status_message=$defined(user.status_message)?user.status_message:{status:""};puser.first_name=user.first_name;puser.last_name=user.last_name;puser.fullname=user.first_name+" "+user.last_name;puser.user_hash=user.user_hash;puser.user_id=user.user_id;puser.group_id=$defined(user.group_id)?user.group_id:0;puser.about=$defined(user.about)?user.about:null;puser.is_public=user.is_public;puser.location_enabled=$defined(user.location_enabled)?user.location_enabled:0;puser.online=false;puser.show="";puser.video=false;puser.profile_pic_16=UserUtility.getProfilePic(user.user_hash,user.user_id,16);puser.profile_pic_20=UserUtility.getProfilePic(user.user_hash,user.user_id,20);puser.profile_pic_26=UserUtility.getProfilePic(user.user_hash,user.user_id,26);puser.profile_pic_32=UserUtility.getProfilePic(user.user_hash,user.user_id,32);puser.profile_pic_42=UserUtility.getProfilePic(user.user_hash,user.user_id,42);puser.profile_pic_60=UserUtility.getProfilePic(user.user_hash,user.user_id,60);puser.profile_pic_100=UserUtility.getProfilePic(user.user_hash,user.user_id,100);puser.profile_pic_200=UserUtility.getProfilePic(user.user_hash,user.user_id,200);pipio.cacheUser(puser);return puser;},updateStatusMessage:function(user,status_msg){var msgClass=".status_msg_"+user.username;$$(msgClass).each(function(el){el.set("text",TextUtility.unescapeQuotes(status_msg));});},getInstalledApps:function(){var apps=new Array();if($defined(user_data)){user_data.apps.each(function(app){apps[app.app_id]=app.external_user_id;},this);}return apps;}};var AlbumViewer=new Class({Extends:Base,EventHandlers:["userSwitched","viewAlbum"],init:function(){this.photos=$H();},userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){},userLoggedOut:function(){},viewAlbum:function(album,photo,aid){var thumbSize=75;var w=600;var h=450;w+=2;h+=thumbSize+34;var albumPopup=new Popup({size:{x:w,y:h},resizable:false,dockable:true,closable:true,className:"albumViewer"});var nav=new Nav({iconOptions:{iconName:"photo"},displayName:album.displayName,closable:true});var content=new AlbumPopupContent({album:album,photo:photo,aid:aid,width:w,height:h,thumbSize:thumbSize});albumPopup.addContent("album",nav,content);}});var AlbumPopupContent=new Class({Extends:PopupContent,EventHandlers:["albumPicView"],onBeforeInit:function(options){this.album=options.album;this.curPhoto=options.photo;this.aid=options.aid;this.width=options.width;this.height=options.height;this.thumbSize=options.thumbSize;this.imageEls=$H();return options;},onInit:function(){var img=new Asset.image(this.curPhoto.src,{title:this.curPhoto.caption,onload:(function(image){this.picLoaded(image,this.curPhoto);}).bind(this)});this.nextImage;this.nextId;},picLoaded:function(image,photo){this.curImage=this.photoResize(image);var imgArea=new Element("div",{"class":"albumImage"}).adopt(this.curImage);imgArea.inject(this.content);this.nextLayer=new Element("div",{"class":"nav_image next nextLayer"});this.prevLayer=new Element("div",{"class":"nav_image previous prevLayer"});this.nextLayer.inject(imgArea);this.prevLayer.inject(imgArea);var nextL=this.nextLayer;var prevL=this.prevLayer;imgArea.addEvent("mouseover",function(){DomUtility.show(nextL);},this);imgArea.addEvent("mouseover",function(){DomUtility.show(prevL);},this);imgArea.addEvent("mouseout",function(){DomUtility.hide(nextL);},this);imgArea.addEvent("mouseout",function(){DomUtility.hide(prevL);},this);this.addNextPrevEvents(photo.id,this.aid);this.captionBox=new Element("div",{"class":"photoCaption","text":photo.caption}).inject(this.content);if($defined(photo.caption)&&photo.caption!=""){DomUtility.show(this.captionBox);}else{DomUtility.hide(this.captionBox);}var imgBarWidth=(this.thumbSize+10)*this.album.getSize();this.imageBarOuter=new Element("div",{"class":"imageBarOuter","styles":{"width":this.w-2}});this.imageBarOuter.inject(this.content);var imageBar=new Element("div",{"class":"imageBar","styles":{"width":imgBarWidth}});imageBar.inject(this.imageBarOuter);var curIndex;var photos=this.album.getAllPhotos();var pic,img,imgContainer;for(var i=0;i<this.album.getSize();i++){pic=photos[i];img=new Element("img",{"src":pic.thumb,"alt":pic.caption,"title":pic.caption});imgContainer=new Element("div",{"class":"imageInBar"}).adopt(img);imgContainer.inject(imageBar);this.imageEls.set(pic.id,imgContainer);if(pic.id==photo.id){imgContainer.addClass("photoHightlight");this.oldPic=pic;}imgContainer.addEvent("click",pipio.dispatchEvent.bind(this,["albumPicView",pic.id,this.aid]));}this.scrollToPic(photo.id);this.loadNextPic(photo.pid);},photoResize:function(image){var w=parseInt(image.get("width"));var h=parseInt(image.get("height"));var ratio=1;if(h>w){if(h>450){ratio=450/h;h=450;w=ratio*w;}}else{if(w>600){ratio=600/w;w=600;h=ratio*h;}}image.setStyle("height",h);image.setStyle("width",w);return image;},addNextPrevEvents:function(id,aid){var photos=this.album.getNextPrevPhoto(id);$(this.nextLayer).addEvent("click",pipio.dispatchEvent.bind(this,["albumPicView",photos.next.id,aid]));$(this.prevLayer).addEvent("click",pipio.dispatchEvent.bind(this,["albumPicView",photos.prev.id,aid]));},scrollToPic:function(id){var width=600;var index=this.album.getIndex(id);var x=index*(this.thumbSize+10);x=x-(600/2)+(this.thumbSize/2)+4;if(x<0){x=0;}var meh=this.imageEls.get(id).scrollLeft;$(this.imageBarOuter).scrollTo(x,0);},loadNextPic:function(pid){var nextPhoto=this.album.nextPhoto(pid);this.nextId=nextPhoto.id;var img=new Asset.image(nextPhoto.src,{onload:(function(image){this.nextImage=image;}).bind(this)});},albumPicView:function(pid){if($defined(pid[1])&&pid[1]==this.aid){pid=pid[0];if(pid==this.nextId){this.albumPicViewLoaded(this.nextImage,pid,this.aid);}else{var photo=this.album.getPhoto(pid);var img=new Asset.image(photo.src,{onload:(function(image){this.albumPicViewLoaded(image,pid,this.aid);}).bind(this)});}}},albumPicViewLoaded:function(image,pid,aid){var photo=this.album.getPhoto(pid);image=this.photoResize(image);var im=image.replaces($(this.curImage));this.curImage=im;this.captionBox.set("text",photo.caption);if($defined(photo.caption)&&photo.caption!=""){DomUtility.show(this.captionBox);}else{DomUtility.hide(this.captionBox);}this.nextLayer.removeEvents("click");this.prevLayer.removeEvents("click");this.addNextPrevEvents(pid,aid);this.imageEls.get(this.oldPic.id).removeClass("photoHighlight");this.imageEls.get(pid).addClass("photoHighlight");this.scrollToPic(pid);this.loadNextPic(pid);}});var Background=new Class({Extends:Base,EventHandlers:["userLoggedIn","userLoggedOut"],init:function(){this.clouds=new Array();this.stars=new Array();this.container=$("background");this.getBounds();this.setupSky();this.sunrise=6;this.sunset=19;this.moonrise=21;this.moonset=4;this.maxStars=30;this.starsStart=19;this.starsEnd=4;for(var i=0;i<6;i++){var cloud=this.createCloud().inject(this.container);this.clouds.push(cloud);}this.run();},setupSky:function(){this.sky=new Element("div",{"class":"sky"}).inject(this.container);this.sun=new Element("div",{"class":"celestial sun"}).inject(this.container);this.dusk=new Element("div",{"class":"sky_dusk"}).inject(this.container);this.moon=new Element("div",{"class":"celestial moon"}).inject(this.container);this.moveSky();},run:function(){this.step();this.anim=this.step.periodical(20000,this);},stop:function(){$clear(this.anim);},step:function(){this.moveClouds();this.moveSky();},getBounds:function(){this.xMin=-100;this.xMax=this.container.getSize().x;this.yMin=0;this.yMax=this.container.getSize().y-100;},userLoggedIn:function(){},userLoggedOut:function(){},setStars:function(){var time=this.getTime();if((time>this.starsStart||time<this.starsEnd)&&this.stars.length<this.maxStars){var star=this.createStar();star.inject(this.container);star.setStyles({"top":$random(1,this.yMax),"left":$random(1,this.xMax)});this.stars.push(star);}else{if(((time>this.starsEnd&&time<this.starsStart)&&this.stars.length>0)||this.stars.length==this.maxStars){this.removeStar();}}},removeStar:function(){if(this.stars.length==0){return;}var i=$random(0,this.stars.length-1);this.stars[i].destroy();this.stars.splice(i,1);},moveClouds:function(){var containerSize=this.container.getSize();this.clouds.each(function(item){var pos=item.getPosition();var speed=$random(2,6);if(pos.x+speed>this.xMax){item.setStyle("left",this.xMin);}else{item.get("tween",{duration:1000}).start("left",pos.x+speed);}},this);},createStar:function(){var star=new Element("div",{"class":"celestial stars star"+$random(1,4)});return star;},createCloud:function(){var cloud=new Element("div",{"class":"cloud cloud"+$random(1,6)});cloud.setStyle("left",$random(this.xMin,this.xMax));cloud.setStyle("top",$random(this.yMin,this.yMax));return cloud;},moveSky:function(){this.sky.setStyle("top",this.getSkyPosition());this.dusk.setStyle("bottom",this.getDuskPosition());this.moveSun();this.moveMoon();this.setStars();},moveSun:function(){var pos=this.getSunPosition();this.sun.setStyles({"top":pos.y+"%","left":pos.x+"%"});},moveMoon:function(){var pos=this.getMoonPosition();this.moon.setStyles({"top":pos.y+"%","left":pos.x+"%"});},getSkyPosition:function(){var skyMax=3000-this.container.getSize().y;var time=this.getTime();if(time>=1){time+=23;}else{time-=1;}return -Math.sin(((time)/24)*Math.PI)*Math.sin(((time)/24)*Math.PI)*skyMax;},getGroundOpacity:function(){var opacityMax=80;var time=this.getTime();if(time>=1){time+=23;}else{time-=1;}var dark=(1-Math.sin(((time)/24)*Math.PI))*opacityMax;return dark;},getDuskPosition:function(){var time=this.getTime();if(time>this.sunset-1&&time<this.sunset+1){time=(time-(this.sunset-1))/2;return -183+Math.sin((time)*Math.PI)*183;}else{return -183;}},getSunPosition:function(){var pos={x:90,y:100};var time=this.getTime();if(time>this.sunrise&&time<this.sunset){time=(time-this.sunrise)/(this.sunset-this.sunrise);pos.y=100-Math.sin(time*Math.PI)*100;pos.x=90-time*100;}return pos;},getMoonPosition:function(){var pos={x:90,y:100};var time=this.getTime();if(time<this.moonset){time+=24;}if(time>this.moonrise&&time<this.moonset+24){time=Math.abs((time-this.moonrise)/((this.moonset+24)-this.moonrise));pos.y=100-Math.sin(time*Math.PI)*100;pos.x=90-time*100;}return pos;},getTime:function(){var date=new Date();return date.getHours()+date.getMinutes()/60;}});var Chat=new Class({Extends:Base,EventHandlers:["userSwitched","chatStart","chatMsgReceived","chatTypingReceived"],init:function(){this.contents=$H();this.lastMsg=$H();},userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){},userLoggedOut:function(){this.resetChatPopup();this.init();},chatStart:function(username,noSwitch){if(!$defined(this.popup)){this.createChatPopup();}var user=this.getContact(username);var content=this.addChatConvo(user);if(!$defined(noSwitch)){this.popup.switchContent(username);}return content;},chatTypingReceived:function(username){if(!this.contents.has(username)){return;}this.contents.get(username).showTyping();},chatMsgReceived:function(msg){var user=msg.target;var content=this.chatStart(user.username,true);if(!this.lastMsg.has(user.username)||this.lastMsg.get(user.username).outbound!=msg.outbound||new Date().getTime()-this.lastMsg.get(user.username).timestamp.getTime()>300000){var ts=msg.timestamp;if(this.lastMsg.has(user.username)&&msg.timestamp.getTime()-this.lastMsg.get(user.username).timestamp.getTime()<300000){ts=null;}var heading=(msg.outbound)?ItemUtility.createChatPostHeading(this.getPrivateUser(),ts):ItemUtility.createChatPostHeading(user,ts);content.insertChatItem(heading);}this.lastMsg.set(user.username,msg);var item=ItemUtility.createChatPostItem(msg,this.getPrivateUser());content.insertChatItem(item);},resetChatPopup:function(){if($defined(this.popup)){this.popup.close();}this.contents.each(function(content,key){content.close(true);this.contents.erase(key);},this);},createChatPopup:function(){this.popup=new ChatPopup({size:{x:400,y:350},resizable:false,className:"pipioChat",onClose:this.destroyChatPopup.bind(this)});},destroyChatPopup:function(){this.popup=null;this.isActive=false;},addChatConvo:function(user){if(this.contents.has(user.username)){var nav=new Nav({iconOptions:{user:user},displayName:user.fullname,closable:true});var content=this.contents.get(user.username);this.popup.addContent(user.username,nav,content);content.jumpToBottom();return content;}else{var nav=new Nav({iconOptions:{user:user},displayName:user.fullname,closable:true});var content=new ChatPopupContent({user:user});this.contents.set(user.username,content);this.popup.addContent(user.username,nav,content);return content;}}});Chat.implement({createChatPostItem:function(msg){var item=new Element("div",{"class":"post chat haspic"});}});var ChatPopup=new Class({Extends:Popup,setTitle:function(){if(this.hasTabs){var icon=new Icon20({iconName:"rooms"});var titleText=new Element("div",{"class":"title_text","text":this.contents.getLength()+" Chats"});}else{var nav=this.navs.get(this.currentContent);var icon=new Icon20(nav.iconOptions);var titleText=new Element("div",{"class":"title_text","text":"Chat with "+TextUtility.unescapeQuotes(nav.displayName)});}this.titleIcon=$(icon).replaces(this.titleIcon);this.titleText=titleText.replaces(this.titleText);}});var ChatPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){options.destroy=false;this.user=options.user;return options;},onInit:function(){this.lastOutbound=null;this.typingSent=false;this.chatContent=new Element("div",{"class":"chatContent"}).inject(this.content);this.chatInput=new Element("textarea",{"maxlength":2000});this.chatInput.addEvent("keyup",this.chatInputKeyUp.bindWithEvent(this));new Element("div",{"class":"chatInput"}).adopt(new Element("div",{"class":"textarea_wrapper"}).adopt(this.chatInput)).inject(this.content);this.scroll=new Fx.Scroll(this.chatContent);},jumpToBottom:function(){this.scroll.set(0,this.chatContent.getScrollSize().y);},onShow:function(){if($defined(this.scrollY)){this.scroll.set(0,this.scrollY);}this.focus();var msg=this.user.first_name+" says...";this.fireEvent("titleMessageDelete",msg);},onHide:function(){if($defined(this.chatContent)){this.scrollY=this.chatContent.getScroll().y;}},focus:function(){this.chatInput.focus.delay(500,this.chatInput);},clearInput:function(){this.chatInput.value="";},chatInputKeyUp:function(e){if(e.key=="enter"){var msg=e.target.value.trim();if(msg==""){return;}this.fireEvent("sendIM",this.user,msg);this.resetTypingSent();this.clearInput();this.focus();}else{this.sendTyping();}DomUtility.textareaAutoSize(e.target,16);},insertChatItem:function(el){this.hideTyping();el.inject(this.chatContent);this.scroll.toBottom();if(!this.isOn){var msg=this.user.first_name+" says...";this.fireEvent("titleMessageAdd",msg);}},showTyping:function(){if($defined(this.typingHeading)){return;}this.typingHeading=ItemUtility.createChatTypingHeading(this.user);this.typingHeading.inject(this.chatContent);this.scroll.toBottom();this.hideTyping.delay(9000,this);},hideTyping:function(){if($defined(this.typingHeading)){this.typingHeading.destroy();this.typingHeading=null;}},sendTyping:function(){if(this.typingSent||!this.user.online){return;}this.typingSent=true;this.fireEvent("sendTyping",this.user);this.resetTypingSent.delay(6000,this);},resetTypingSent:function(){this.typingSent=false;}});var Invite=new Class({Extends:Base,EventHandlers:["userSwitched","searchUserShow","searchEmailShow","inviteUserShow"],userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){},userLoggedOut:function(){},searchUserShow:function(){if($defined(this.searchUserPopup)){this.searchUserPopup._select();return;}this.createSearchUserPopup();},closeSearchUserPopup:function(){if($defined(this.searchUserPopup)){this.searchUserPopup.close();}},createSearchUserPopup:function(){this.searchUserPopup=new Popup({size:{x:350,y:110},resizable:false,dockable:false,className:"userSearch",onClose:this.destroySearchUserPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"search"},displayName:"Search for Users on Pip.io",closable:true});var content=new UserSearchPopupContent({});this.searchUserPopup.addContent("login",nav,content);},destroySearchUserPopup:function(){this.searchUserPopup=null;},searchEmailShow:function(){if($defined(this.searchEmailPopup)){this.searchEmailPopup._select();return;}this.createSearchEmailPopup();},closeSearchEmailPopup:function(){if($defined(this.searchEmailPopup)){this.searchEmailPopup.close();}},createSearchEmailPopup:function(){this.searchEmailPopup=new Popup({size:{x:350,y:140},resizable:false,dockable:false,className:"userSearch",onClose:this.destroySearchEmailPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"search"},displayName:"Search Contacts for Pip.io Users",closable:true});var content=new EmailSearchPopupContent({});this.searchEmailPopup.addContent("login",nav,content);},destroySearchEmailPopup:function(){this.searchEmailPopup=null;},inviteUserShow:function(email){if($defined(this.inviteUserPopup)){this.inviteUserPopup._select();return;}this.createInviteUserPopup(email);},closeInviteUserPopup:function(){if($defined(this.inviteUserPopup)){this.inviteUserPopup.close();}},createInviteUserPopup:function(email){this.inviteUserPopup=new Popup({size:{x:350,y:160},resizable:false,dockable:false,className:"userSearch",onClose:this.destroyInviteUserPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"users"},displayName:"Invite Friend to Join Pip.io",closable:true});var content=new UserInvitePopupContent({email:email});this.inviteUserPopup.addContent("login",nav,content);},destroyInviteUserPopup:function(){this.inviteUserPopup=null;}});var EmailSearchPopupContent=new Class({Extends:PopupContent,strings:{emailLabel:"Email:",passwordLabel:"Password:",userSearchMessage:"Search your email contacts for Pip.io users"},onInit:function(){new Element("div",{"class":"text_section centered light","text":this.strings.userSearchMessage}).inject(this.content);this.emailInput=new Element("input",{"type":"text","maxlength":"50"});this.emailInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section email"}).adopt(new Element("div",{"class":"label light","text":this.strings.emailLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.emailInput)).inject(this.content);this.passwordInput=new Element("input",{"type":"password","maxlength":"50"});this.passwordInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section email"}).adopt(new Element("div",{"class":"label light","text":this.strings.passwordLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.passwordInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Search",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.search.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.passwordInput.value.trim()!=""&&this.emailInput.value.trim()!=""){this.search();}}},search:function(){var email_address=this.emailInput.value.trim();var password=this.passwordInput.value.trim();var params={email_address:email_address,password:password};this.call("contacts","search_email",params,this.searchSuccess.bind(this),this.searchFail.bind(this));this.actionButton.showProgress();},searchSuccess:function(data){this.actionButton.hideProgress();if(!$defined(data.users)&&!$defined(data.contacts)){return;}if(data.users.length==0&&data.contacts.length==0){var name="search_user";var title="No Results";var message="Your search returned no results";this.fireEvent("showAlert",name,title,message);}else{this.showResultsPopup(data.users,data.contacts);}},searchFail:function(status){this.actionButton.hideProgress();var name="search_user";var title="Error";var message=status.message;this.fireEvent("showAlert",name,title,message);},showResultsPopup:function(users,contacts){if($defined(this.resultsPopup)){this.resultsPopup.close();}this.createResultsPopup(users,contacts);},closeResultsPopup:function(){if($defined(this.resultsPopup)){this.resultsPopup.close();}},createResultsPopup:function(users,contacts){this.resultsPopup=new Popup({size:{x:350,y:400},resizable:false,dockable:false,className:"userSearch",onClose:this.destroyResultsPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"search"},displayName:"Search Results",closable:true});var content=new UserSearchResultPopupContent({users:users,contacts:contacts});this.resultsPopup.addContent("results",nav,content);},destroyResultsPopup:function(){this.resultsPopup=null;},onShow:function(){this.focus();},focus:function(){this.emailInput.focus.delay(500,this.emailInput);},onClose:function(){this.closeResultsPopup();}});var UserInvitePopupContent=new Class({Extends:PopupContent,strings:{emailLabel:"Email:",messageLabel:"Message:",defaultMessage:"Connect with me on Pip.io!"},onBeforeInit:function(options){this.email=options.email;return options;},onInit:function(){this.emailInput=new Element("input",{"type":"text","maxlength":"50","value":this.email});new Element("div",{"class":"input_section email"}).adopt(new Element("div",{"class":"label light","text":this.strings.emailLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.emailInput)).inject(this.content);this.messageInput=new Element("textarea",{"value":TextUtility.unescape(this.strings.defaultMessage)});new Element("div",{"class":"input_section email message"}).adopt(new Element("div",{"class":"label light","text":this.strings.messageLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.messageInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Send Invite",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.sendInvite.bind(this));this.message=new Element("div",{"class":"message success"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},sendInvite:function(){var email=this.emailInput.value.trim();var message=this.messageInput.value.trim();if(email==""){var name="invite_user";var title="Error";var message="Please enter an email address";this.fireEvent("showAlert",name,title,message);return;}var params={email:email,message:message};this.call("contacts","invite_create",params,this.sendInviteSuccess.bind(this),this.sendInviteFail.bind(this));this.actionButton.showProgress();this.message.empty();},sendInviteSuccess:function(){this.actionButton.hideProgress();this.emailInput.value="";this.message.set("text","Invite sent");},sendInviteFail:function(status){this.actionButton.hideProgress();var name="invite_user";var title="Error";var message=status.message;this.fireEvent("showAlert",name,title,message);}});var UserSearchPopupContent=new Class({Extends:PopupContent,strings:{userSearchMessage:"You can enter a name or email to search",errorMessage:"There was an error creating this group"},onInit:function(){new Element("div",{"class":"text_section centered light","text":this.strings.userSearchMessage}).inject(this.content);this.searchInput=new Element("input",{"type":"text","maxlength":"50"});this.searchInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"textarea_wrapper"}).adopt(this.searchInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Search",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.search.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.searchInput.value.trim()!=""){this.search();}}},search:function(){var query=this.searchInput.value.trim();var params={query:query};this.call("contacts","search_user",params,this.searchSuccess.bind(this),this.searchFail.bind(this));this.actionButton.showProgress();},searchSuccess:function(data){this.actionButton.hideProgress();if(!$defined(data.users)&&!$defined(data.contacts)){return;}if(data.users.length==0&&data.contacts.length==0){var name="search_user";var title="No Results";var message="Your search returned no results";this.fireEvent("showAlert",name,title,message);}else{this.showResultsPopup(data.users,data.contacts);}},searchFail:function(status){this.actionButton.hideProgress();var name="search_user";var title="Error";var message=status.message;this.fireEvent("showAlert",name,title,message);},showResultsPopup:function(users,contacts){if($defined(this.resultsPopup)){this.resultsPopup.close();}this.createResultsPopup(users,contacts);},closeResultsPopup:function(){if($defined(this.resultsPopup)){this.resultsPopup.close();}},createResultsPopup:function(users,contacts){this.resultsPopup=new Popup({size:{x:350,y:400},resizable:false,dockable:false,className:"userSearch",onClose:this.destroyResultsPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"search"},displayName:"Search Results",closable:true});var content=new UserSearchResultPopupContent({users:users,contacts:contacts});this.resultsPopup.addContent("results",nav,content);},destroyResultsPopup:function(){this.resultsPopup=null;},onShow:function(){this.focus();},focus:function(){this.searchInput.focus.delay(500,this.searchInput);},onClose:function(){this.closeResultsPopup();}});var UserSearchResultPopupContent=new Class({Extends:PopupContent,strings:{searchResultMessage:"Search results"},onBeforeInit:function(options){this.users=options.users;this.contacts=options.contacts;return options;},onInit:function(){this.list=new Element("div",{"class":"itemList"}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.closeButton)).inject(this.content);if(this.users.length>0){this.insertUsers();this.insertSeperator();}this.insertContacts();},insertContacts:function(){$H(this.contacts).each(function(name,email){this.insertContact(name,email);},this);},insertContact:function(name,email){var el=UserSearchUtility.createEmailItem(name,email);var button=new ButtonSmall({displayName:"Send Invite",className:"dark",action:"check"});$(button).inject(el);$(button).addEvent("click",this.fireEvent.bind(this,["inviteUserShow",email]));el.inject(this.list);},insertUsers:function(){this.users.each(function(user){user=UserUtility.processUser(user);this.insertUser(user);},this);},insertUser:function(user){var el=UserSearchUtility.createUserItem(user);if(!this.hasContact(user.username)){var button=new ButtonSmall({displayName:"Add Contact",className:"dark",action:"check"});$(button).inject(el);$(button).addEvent("click",this.contactRequest.bindWithEvent(this,[user.username,el]));}else{el.addClass("connected");}el.addEvent("click",this.fireEvent.bind(this,["showUser",user]));el.inject(this.list);},insertSeperator:function(){new Element("div",{"class":"listItem seperator"}).inject(this.list);},contactRequest:function(e,username,el){e.stopPropagation();this.fireEvent("connectionRequestCreate",username);el.addClass("invited");}});var UserSearchUtility={createUserItem:function(user){var el=new Element("div",{"class":"listItem user"});ItemUtility.createProfilePic(user,32).inject(el);var name=new Element("div",{"class":"listText text12 light","text":TextUtility.cleanText(user.fullname+" ("+user.username+")")}).inject(el);if($defined(user.about)&&$defined(user.about.bio)){new Element("div",{"class":"about_text text11 light3","text":TextUtility.cleanText(user.about.bio)}).inject(el);}new Element("div",{"class":"invited_text text11 success","text":"Request Sent"}).inject(el);new Element("div",{"class":"connected_text text11 success","text":"Connected"}).inject(el);return el;},createEmailItem:function(name,email){var el=new Element("div",{"class":"listItem"});var icon=new Icon20({iconName:"users"});$(icon).inject(el);new Element("div",{"class":"listText text12 light","text":TextUtility.cleanText(email)}).inject(el);var button=new ButtonSmall({displayName:"Invite",className:"dark",action:"check"});$(button).inject(el);new Element("div",{"class":"invited_text text11 success","text":"Invited"}).inject(el);return el;}};var Location=new Class({Extends:Base,EventHandlers:["showLocationEditPopup","showUsersMapPopup"],init:function(){},reset:function(){},userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){},userLoggedOut:function(){this.closeLocationEditPopup();},showLocationEditPopup:function(){this.closeLocationEditPopup();this.createLocationEditPopup();},closeLocationEditPopup:function(){if($defined(this.locationEditPopup)){this.locationEditPopup.close();}},createLocationEditPopup:function(){this.locationEditPopup=new Popup({size:{x:350,y:110},resizable:false,dockable:false,closable:true,className:"locationSearch",onClose:(function(){this.locationEditPopup=null;}).bind(this)});var nav=new Nav({iconOptions:{iconName:"global"},displayName:"Edit Your Location",closable:true});var content=new UserLocationEditPopupContent({});content.resizePopup=this.locationEditPopup.resizePopup.bind(this.locationEditPopup);content.reCenter=this.locationEditPopup.reCenter.bind(this.locationEditPopup);this.locationEditPopup.addContent("edit_location",nav,content);},showUsersMapPopup:function(user){this.closeUsersMapPopup();this.createUsersMapPopup(user);},closeUsersMapPopup:function(){if($defined(this.usersMapPopup)){this.usersMapPopup.close();}},createUsersMapPopup:function(user){this.usersMapPopup=new Popup({size:{x:550,y:350},resizable:false,dockable:true,closable:true,className:"usersMap"});var nav=new Nav({iconOptions:{iconName:"location"},displayName:"Global Map",closable:true});var content=new UsersMapPopupContent({user:user,locations:this.getLocations()});this.usersMapPopup.addContent("users_maps",nav,content);}});var GlobalMapMenuSection=new Class({Extends:Base,EventHandlers:[],init:function(options){this.location=options.location;this.createMap();},createMap:function(){this.wrapper=new Element("div");this.updateMap();},updateMap:function(){this.wrapper.empty();if($defined(this.location)){this.mapWrapper=new Element("div",{"class":"gmap_content"});this.expandButton=new Element("div",{"class":"button_nav show"}).adopt(new Element("div",{"class":"action dock"}));var map=new Element("div",{"class":"map_section"}).adopt(new Element("div",{"class":"gmap"}).adopt(new Element("div",{"class":"gmap_border"}),this.mapWrapper));this.gmap=new GMap2(this.mapWrapper,{size:new GSize(156,156)});this.gmap.setCenter(new GLatLng(this.location.lat,this.location.lon),11);map.inject(this.wrapper);}this.updateLabel();},updateLabel:function(){if($defined(this.label)){this.label.destroy();}if($defined(this.location)){var locationLabel=DataUtility.getGeoLabel(this.location);var locationStr=DataUtility.getGeoLocality(this.location);if(locationLabel){locationStr=locationLabel+", "+locationStr;}this.label=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Location: "}),new Element("span",{"html":TextUtility.unescape(locationStr)})).inject(this.wrapper,"top");}},toElement:function(){return this.wrapper;}});var UserMapMenuSection=new Class({Extends:Base,EventHandlers:["userLocationUpdated"],init:function(options){this.user=options.user;this.isSelf=this.user.user_id==this.getPrivateUser().user_id;this.location=this.getLocation(this.user.username);this.createMap();},createMap:function(){this.wrapper=new Element("div");this.updateMap();},updateMap:function(){this.wrapper.empty();if($defined(this.location)){this.mapWrapper=new Element("div",{"class":"gmap_content"});this.expandButton=new Element("div",{"class":"button_nav show"}).adopt(new Element("div",{"class":"action dock"}));this.expandButton.addEvent("click",this.fireEvent.bind(this,["showUsersMapPopup",this.user]));var map=new Element("div",{"class":"map_section"}).adopt(new Element("div",{"class":"gmap"}).adopt(new Element("div",{"class":"gmap_border"}),this.mapWrapper),this.expandButton);this.gmap=new GMap2(this.mapWrapper,{size:new GSize(156,156)});this.gmap.setCenter(new GLatLng(this.location.lat,this.location.lon),11);this.profilePic=ItemUtility.createProfilePic(this.user,60);this.marker=new Element("div",{"class":"map_marker"}).adopt(new Element("div",{"class":"profile_pic_wrapper"}).adopt(this.profilePic),new Element("div",{"class":"point_down"}),new Element("div",{"class":"spot"})).inject(map);map.inject(this.wrapper);}else{ItemUtility.createProfilePic(this.user,100).inject(this.wrapper);}this.updateLabel();},userLocationUpdated:function(username,location,location_enabled){if(username!=this.user.username){return;}this.user.location_enabled=location_enabled;this.location=$defined(location)?location:null;this.updateMap();},updateLabel:function(){if($defined(this.label)){this.label.destroy();}if($defined(this.location)){var locationLabel=DataUtility.getGeoLabel(this.location);var locationStr=DataUtility.getGeoLocality(this.location);if(locationLabel){locationStr=locationLabel+", "+locationStr;}this.label=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Location: "}),new Element("span",{"html":TextUtility.unescape(locationStr)})).inject(this.wrapper,"top");}},toElement:function(){return this.wrapper;}});var LocationSearchResultPopupContent=new Class({Extends:PopupContent,strings:{searchResultMessage:"Search results"},onBeforeInit:function(options){this.locations=options.locations;this.locationSetFunc=options.locationSetFunc;return options;},onInit:function(){this.list=new Element("div",{"class":"itemList"}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.closeButton)).inject(this.content);this.insertLocations();},insertLocations:function(){this.locations.each(function(location){this.insertLocation(location);},this);},insertLocation:function(location){var el=LocationSearchUtility.createLocationItem(location);var button=new ButtonSmall({displayName:"Set Location",className:"dark",action:"check"});$(button).inject(el);$(button).addEvent("click",this.setLocation.bind(this,location));el.inject(this.list);},setLocation:function(location){this.locationSetFunc(location);this.closeContent();}});var UserLocationEditPopupContent=new Class({Extends:PopupContent,strings:{locationSearchMessage:"Enter any address, city, or zip code",locationLabelLabel:"Location Name:"},onInit:function(){this.geocoder=new GClientGeocoder();this.searchTitle=new Element("div",{"class":"text_section centered light","text":this.strings.locationSearchMessage}).inject(this.content);this.searchInput=new Element("input",{"type":"text","maxlength":"50"});this.searchInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));this.searchInputSection=new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"textarea_wrapper"}).adopt(this.searchInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Search",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.search.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.searchInput.value.trim()!=""){this.search();}}},search:function(){var query=this.searchInput.value.trim();this.geocoder.getLocations(query,this.searchSuccess.bind(this));this.actionButton.showProgress();},searchSuccess:function(data){this.actionButton.hideProgress();if(data.Status.code==200){this.places=[];data.Placemark.each(function(place){this.places.push(this.parseLocation(place));},this);this.createResultsPopup();}else{var name="search_location";var title="No Results";var message="Your search returned no results";this.fireEvent("showAlert",name,title,message);}},parseLocation:function(location){var place={};place.name=location.address;place.country_code=location.AddressDetails.Country.CountryNameCode;place.country=location.AddressDetails.Country.CountryName;place.region=$defined(location.AddressDetails.Country.AdministrativeArea)?location.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName:null;if($defined(location.AddressDetails.Country.AdministrativeArea)&&$defined(location.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea)&&$defined(location.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality)){place.city=location.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;}else{if($defined(location.AddressDetails.Country.AddressLine)&&$defined(location.AddressDetails.Country.AddressLine[0])){place.city=location.AddressDetails.Country.AddressLine[0];}}if($defined(location.AddressDetails.Country.AdministrativeArea)&&$defined(location.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea)&&$defined(location.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality)&&$defined(location.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare)){place.address=location.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;}place.lat=location.Point.coordinates[1];place.lon=location.Point.coordinates[0];place.geohash=GeoHash.encodeGeoHash(place.lat,place.lon);return place;},locationSelect:function(location){DomUtility.hide(this.searchTitle);DomUtility.hide(this.searchInputSection);DomUtility.hide(this.actions);this.searchTitle=new Element("div",{"class":"text_section centered light","text":TextUtility.unescape(location.name)}).inject(this.content);this.labelInput=new Element("input",{"type":"text","maxlength":"50"});if($defined(location.address)){this.labelInput.value=location.address;}new Element("div",{"class":"input_section label"}).adopt(new Element("div",{"class":"label light","text":this.strings.locationLabelLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.labelInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Save Location",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.locationSave.bind(this,[location]));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},locationSave:function(location){var label=this.labelInput.value.trim();var params={"label":label,"country_code":location.country_code,"country":location.country,"city":$defined(location.city)?location.city:"","region":$defined(location.region)?location.region:"","lat":location.lat,"lon":location.lon,"geohash":location.geohash};this.call("pipio","user_location_save",params,this.locationSaveSuccess.bind(this),this.locationSaveFail.bind(this));this.actionButton.showProgress();},locationSaveSuccess:function(data){this.closeContent();},locationSaveFail:function(status){this.actionButton.hideProgress();},searchFail:function(status){this.actionButton.hideProgress();var name="search_user";var title="Error";var message=status.message;this.fireEvent("showAlert",name,title,message);},showResultsPopup:function(users,contacts){if($defined(this.resultsPopup)){this.resultsPopup.close();}this.createResultsPopup(users,contacts);},closeResultsPopup:function(){if($defined(this.resultsPopup)){this.resultsPopup.close();}},createResultsPopup:function(){this.resultsPopup=new Popup({size:{x:350,y:400},resizable:false,dockable:false,className:"locationSearch",onClose:this.destroyResultsPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"global"},displayName:"Location Search Results",closable:true});var content=new LocationSearchResultPopupContent({locations:this.places,locationSetFunc:this.locationSelect.bind(this)});this.resultsPopup.addContent("results",nav,content);},destroyResultsPopup:function(){this.resultsPopup=null;},onShow:function(){this.focus();},focus:function(){this.searchInput.focus.delay(500,this.searchInput);},onClose:function(){this.closeResultsPopup();}});var UsersMapPopupContent=new Class({Extends:PopupContent,EventHandlers:["userLocationUpdated"],onBeforeInit:function(options){this.user=options.user;this.locations=options.locations;this.users=$H();return options;},onInit:function(){this.createMap();this.showUser(this.user.username);this.locations.each(function(location,username){this.showUser(username);},this);},createMap:function(){this.mapWrapper=new Element("div",{"class":"gmap_content"});var map=new Element("div",{"class":"map_section"}).adopt(new Element("div",{"class":"gmap"}).adopt(new Element("div",{"class":"gmap_border"}),this.mapWrapper));this.gmap=new GMap2(this.mapWrapper,{size:new GSize(526,326)});var location=this.getLocation(this.user.username);this.gmap.setCenter(new GLatLng(location.lat,location.lon),11);this.gmap.enableScrollWheelZoom();this.gmap.enableContinuousZoom();this.gmap.addControl(new GLargeMapControl());this.gmap.addControl(new GMapTypeControl());var mt=this.gmap.getMapTypes();for(var i=0;i<mt.length;i++){mt[i].getMinimumResolution=$lambda(3);mt[i].getMaximumResolution=$lambda(14);}map.inject(this.content);},userLocationUpdated:function(username,location,location_enabled){if($defined(location)){this.showUser(username);}else{this.removeUser(username);}},showUser:function(username){var user=this.getUser(username);var location=this.getLocation(username);if(!$defined(user)||!$defined(location)){return;}if(this.users.has(username)){this.gmap.removeOverlay(this.users.get(username));}var loc=new GLatLng(location.lat,location.lon);var marker=new MarkerLight(loc,{size:26,user:user});this.gmap.addOverlay(marker);this.users.set(username,marker);},removeUser:function(username){if(!this.users.has(username)){return;}this.gmap.removeOverlay(this.users.get(username));}});var LocationSearchUtility={createLocationItem:function(location){var el=new Element("div",{"class":"listItem"});var icon=new Icon20({iconName:"location"});$(icon).inject(el);var name=new Element("div",{"class":"listText text12 light","text":TextUtility.cleanText(location.name)}).inject(el);return el;}};var Login=new Class({Extends:Base,EventHandlers:["userSwitched","loginShow","signupShow","logoutShow","passwordResetRequestShow"],userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){this.closeLoginPopup();this.closePasswordResetRequestPopup();this.closePasswordResetPopup();this.closeSignupPopup();},userLoggedOut:function(){if(!this.checkCookie()){this.loginShow();}},checkCookie:function(){var destination=DataUtility.getCookie("destination");var token=DataUtility.getCookie("password_reset_token");var email=DataUtility.getCookie("password_reset_email");if(!$defined(destination)){return false;}if(destination=="password_reset"&&$defined(token)&&$defined(email)){this.passwordResetShow(token,email);return true;}else{if(destination=="signup"){var access_key=DataUtility.getCookie("invite_access_key");if(!$defined(access_key)){access_key="";}this.signupShow(access_key);return true;}else{if(destination=="email_block"){var token=DataUtility.getCookie("email_block_token");var email=DataUtility.getCookie("email_block_email");this.emailBlockShow(token,email);return true;}}}return false;},loginShow:function(){if($defined(this.loginPopup)){this.loginPopup._select();return;}this.createLoginPopup();},closeLoginPopup:function(){if($defined(this.loginPopup)){this.loginPopup.close();}},createLoginPopup:function(){this.loginPopup=new Popup({size:{x:350,y:226},resizable:false,dockable:false,className:"login",onClose:this.destroyLoginPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"power"},displayName:"Log In to Pip.io",closable:true});var content=new LoginPopupContent({});this.loginPopup.addContent("login",nav,content);},destroyLoginPopup:function(){this.loginPopup=null;},logoutShow:function(){if($defined(this.logoutPopup)){this.logoutPopup._select();return;}this.createLogoutPopup();},closeLogoutPopup:function(){if($defined(this.logoutPopup)){this.logoutPopup.close();}},createLogoutPopup:function(){this.logoutPopup=new Popup({size:{x:350,y:70},resizable:false,dockable:false,onClose:this.destroyLogoutPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"power"},displayName:"Log Out "+TextUtility.unescapeQuotes(this.getPrivateUser().fullname),closable:true});var content=new LogoutPopupContent({});this.logoutPopup.addContent("logout",nav,content);},destroyLogoutPopup:function(){this.logoutPopup=null;},passwordResetRequestShow:function(){if($defined(this.passwordResetRequestPopup)){this.passwordResetRequestPopup.close();}this.createPasswordResetRequestPopup();},closePasswordResetRequestPopup:function(){if($defined(this.passwordResetRequestPopup)){this.passwordResetRequestPopup.close();}},createPasswordResetRequestPopup:function(){this.passwordResetRequestPopup=new Popup({size:{x:350,y:112},resizable:false,dockable:false,className:"login",onClose:this.destroyPasswordResetRequestPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"pipio"},displayName:"Password Reset",closable:true});var content=new PasswordResetRequestPopupContent({});this.passwordResetRequestPopup.addContent("login",nav,content);},destroyPasswordResetRequestPopup:function(){this.passwordResetRequestPopup=null;},passwordResetShow:function(token,email){if($defined(this.passwordResetPopup)){this.passwordResetPopup.close();}this.createPasswordResetPopup(token,email);},closePasswordResetPopup:function(){if($defined(this.passwordResetPopup)){this.passwordResetPopup.close();}},createPasswordResetPopup:function(token,email){this.passwordResetPopup=new Popup({size:{x:350,y:142},resizable:false,dockable:false,className:"login",onClose:this.destroyPasswordResetPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"pipio"},displayName:"Password Reset",closable:true});var content=new PasswordResetPopupContent({token:token,email:email});this.passwordResetPopup.addContent("login",nav,content);},destroyPasswordResetPopup:function(){this.passwordResetPopup=null;},signupShow:function(access_key){if($defined(this.signupPopup)){this.signupPopup._select();return;}this.createSignupPopup(access_key);},closeSignupPopup:function(){if($defined(this.signupPopup)){this.signupPopup.close();}},createSignupPopup:function(access_key){this.signupPopup=new Popup({size:{x:350,y:366},resizable:false,dockable:false,className:"login",onClose:this.destroySignupPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"pipio"},displayName:"Sign Up for Pip.io",closable:true});if(!$defined(access_key)){access_key="";}var content=new SignupPopupContent({access_key:access_key});this.signupPopup.addContent("signup",nav,content);},destroySignupPopup:function(){this.signupPopup=null;},emailBlockShow:function(token,email){if($defined(this.emailBlockPopup)){this.emailBlockPopup.close();}this.createEmailBlockPopup(token,email);},closeEmailBlockPopup:function(){if($defined(this.signupPopup)){this.emailBlockPopup.close();}},createEmailBlockPopup:function(token,email){this.emailBlockPopup=new Popup({size:{x:350,y:110},resizable:false,dockable:false,className:"login",onClose:this.destroyEmailBlockPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"pipio"},displayName:"Email Settings",closable:true});var content=new EmailBlockPopupContent({token:token,email:email});this.emailBlockPopup.addContent("emailblock",nav,content);},destroyEmailBlockPopup:function(){this.emailBlockPopup=null;}});var EmailBlockPopupContent=new Class({Extends:PopupContent,strings:{emailBlockMessage:"Stop all Pip.io emails for:"},onBeforeInit:function(options){this.token=options.token;this.email=options.email;return options;},onInit:function(){new Element("div",{"class":"text_section centered light","text":TextUtility.unescape(this.strings.emailBlockMessage)}).inject(this.content);new Element("div",{"class":"text_section centered light","text":TextUtility.unescape(this.email)}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Confirm",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.blockEmail.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},blockEmail:function(){var params={"token":this.token,"email":this.email};this.call("pipio","email_block",params,this.resetRequestSuccess.bind(this),this.resetRequestFail.bind(this));this.actionButton.showProgress();},resetRequestSuccess:function(data){var name="email_block";var title="Email Block Successful";var message="You will no longer receive emails from Pip.io";this.fireEvent("showAlert",name,title,message);this.actionButton.hideProgress();this.closeContent();},resetRequestFail:function(){var name="email_block";var title="Email Block Failed";var message="There was an error processing your request.  Please contact support@pip.io";this.fireEvent("showAlert",name,title,message);this.actionButton.hideProgress();}});var LoginPopupContent=new Class({Extends:PopupContent,strings:{loginMessage:"Log in to Pip.io",signupMessage:"Don't have an account?   Sign up now!",usernameLabel:"Username or email:",passwordLabel:"Password:",rememberMeLabel:"Remember me:",errorMessage:"Incorrect login",forgotPasswordMessage:"Forgot your password?"},onInit:function(){new Element("div",{"class":"text_section centered light","text":this.strings.loginMessage}).inject(this.content);var signupMsg=new Element("div",{"class":"text_section centered short text11 light3 clickable","text":this.strings.signupMessage}).inject(this.content);signupMsg.addEvent("click",this.fireEvent.bind(this,["signupShow"]));this.usernameInput=new Element("input",{"type":"text","maxlength":"32"});this.usernameInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.usernameLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.usernameInput)).inject(this.content);this.passwordInput=new Element("input",{"type":"password","maxlength":"32"});this.passwordInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.passwordLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.passwordInput)).inject(this.content);this.rememberToggle=new Toggle(true);new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.rememberMeLabel}),$(this.rememberToggle)).inject(this.content);var forgotPasswordMsg=new Element("div",{"class":"text_section centered short text11 light3 clickable","text":this.strings.forgotPasswordMessage}).inject(this.content);forgotPasswordMsg.addEvent("click",this.fireEvent.bind(this,["passwordResetRequestShow"]));this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Log In",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.login.bind(this));this.message=new Element("div",{"class":"message error"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},login:function(){var username=this.usernameInput.value.trim();var password=this.passwordInput.value.trim();var remember_me=this.rememberToggle.toInt();var params={"username":username,"password":password,"remember_me":remember_me};this.call("pipio","user_login",params,this.loginSuccess.bind(this),this.loginFail.bind(this));this.actionButton.showProgress();this.message.empty();},loginSuccess:function(data){this.fireEvent("userDataInit",data);this.actionButton.hideProgress();this.closeContent();},loginFail:function(){this.actionButton.hideProgress();this.message.set("text",this.strings.errorMessage);},inputKeyUp:function(e){if(e.key=="enter"){if(this.usernameInput.value.trim()!=""&&this.passwordInput.value.trim()!=""){this.login();}}},onShow:function(){this.focus();},focus:function(){this.usernameInput.focus.delay(500,this.usernameInput);}});var LogoutPopupContent=new Class({Extends:PopupContent,strings:{logoutMessage:"Are you sure you want to log out?"},onInit:function(){new Element("div",{"class":"text_section centered light","text":this.strings.logoutMessage}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Log Out",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.logout.bind(this));this.message=new Element("div",{"class":"message"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},logout:function(){this.call("pipio","user_logout",null,this.logoutSuccess.bind(this),this.logoutFail.bind(this));this.actionButton.showProgress();},logoutSuccess:function(data){this.fireEvent("userDataInit",data);this.actionButton.hideProgress();this.closeContent();},logoutFail:function(){this.actionButton.hideProgress();this.closeContent();}});var PasswordResetPopupContent=new Class({Extends:PopupContent,strings:{passwordResetMessage:"Reset Pip.io password for {0}",passwordLabel:"New password:",verifyPasswordLabel:"Verify password"},onBeforeInit:function(options){this.token=options.token;this.email=options.email;return options;},onInit:function(){new Element("div",{"class":"text_section centered light","text":String.format(this.strings.passwordResetMessage,TextUtility.unescape(this.email))}).inject(this.content);this.passwordInput=new Element("input",{"type":"password","maxlength":"32"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.passwordLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.passwordInput)).inject(this.content);this.verifyPasswordInput=new Element("input",{"type":"password","maxlength":"32"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.verifyPasswordLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.verifyPasswordInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Set New Password",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.resetRequest.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},resetRequest:function(){var new_password=this.passwordInput.value.trim();var verify_password=this.verifyPasswordInput.value.trim();if(new_password==""||verify_password==""){var name="reset_request";var title="Password Reset Request Failed";var message="Please enter a new password";this.fireEvent("showAlert",name,title,message);return;}if(new_password!=verify_password){var name="reset_request";var title="Password Reset Request Failed";var message="The passwords you entered do not match";this.fireEvent("showAlert",name,title,message);return;}var params={"token":this.token,"email":this.email,"new_password":new_password,"verify_password":verify_password};this.call("pipio","user_password_reset",params,this.resetRequestSuccess.bind(this),this.resetRequestFail.bind(this));this.actionButton.showProgress();},resetRequestSuccess:function(data){var name="reset_request";var title="Password Reset Successful";var message="Your Pip.io password has been successfully reset";this.fireEvent("loginShow");this.fireEvent("showAlert",name,title,message);this.actionButton.hideProgress();this.closeContent();},resetRequestFail:function(){var name="reset_request";var title="Password Reset Failed";var message="There was an error resetting your password.  Please contact support@pip.io";this.fireEvent("showAlert",name,title,message);this.actionButton.hideProgress();},onShow:function(){this.focus();},focus:function(){this.passwordInput.focus.delay(500,this.passwordInput);}});var PasswordResetRequestPopupContent=new Class({Extends:PopupContent,strings:{passwordResetMessage:"Forgot your password to Pip.io?",usernameLabel:"Username or email:",forgotPasswordMessage:"Forgot your password?"},onInit:function(){new Element("div",{"class":"text_section centered light","text":this.strings.passwordResetMessage}).inject(this.content);this.usernameInput=new Element("input",{"type":"text","maxlength":"32"});this.usernameInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.usernameLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.usernameInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Request Reset",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.resetRequest.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},resetRequest:function(){var username=this.usernameInput.value.trim();if(username==""){var name="reset_request";var title="Password Reset Request Failed";var message="Please enter your username or email";this.fireEvent("showAlert",name,title,message);return;}var params={"username":username};this.call("pipio","user_password_resetrequest",params,this.resetRequestSuccess.bind(this),this.resetRequestFail.bind(this));this.actionButton.showProgress();},resetRequestSuccess:function(data){var name="reset_request";var title="Password Reset Request Sent";var message="Please check your email for directions to reset your password";this.fireEvent("showAlert",name,title,message);this.actionButton.hideProgress();this.closeContent();},resetRequestFail:function(){var name="reset_request";var title="Password Reset Request Failed";var message="We could not locate your account, please make sure the username or email you entered is correct";this.fireEvent("showAlert",name,title,message);this.actionButton.hideProgress();},inputKeyUp:function(e){if(e.key=="enter"){if(this.usernameInput.value.trim()!=""){this.resetRequest();}}},onShow:function(){this.focus();},focus:function(){this.usernameInput.focus.delay(500,this.usernameInput);}});var SignupPopupContent=new Class({Extends:PopupContent,strings:{signUpMessage:"Sign up for Pip.io",signUpDetailMessage:"It only takes a few seconds to create an account!",usernameLabel:"Username:",passwordLabel:"Password:",firstNameLabel:"First Name:",lastNameLabel:"Last Name:",emailLabel:"Email:",dobLabel:"Date of Birth:",inviteCodeLabel:"Invite Code:",inviteCodeMessage:"Leave this field blank if you do not have an invite code"},onBeforeInit:function(options){this.access_key=options.access_key;return options;},onInit:function(){new Element("div",{"class":"text_section centered light","text":this.strings.signUpMessage}).inject(this.content);new Element("div",{"class":"text_section centered light short text11 light3","text":this.strings.signUpDetailMessage}).inject(this.content);this.firstNameInput=new Element("input",{"type":"text","maxlength":"50"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.firstNameLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.firstNameInput)).inject(this.content);this.lastNameInput=new Element("input",{"type":"text","maxlength":"50"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.lastNameLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.lastNameInput)).inject(this.content);this.emailInput=new Element("input",{"type":"text","maxlength":"32"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.emailLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.emailInput)).inject(this.content);this.usernameInput=new Element("input",{"type":"text","maxlength":"32"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.usernameLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.usernameInput)).inject(this.content);this.passwordInput=new Element("input",{"type":"password","maxlength":"32"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.passwordLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.passwordInput)).inject(this.content);this.monthInput=new Element("input",{"type":"text","maxlength":"2","value":"MM"});this.dayInput=new Element("input",{"type":"text","maxlength":"2","value":"DD"});this.yearInput=new Element("input",{"type":"text","maxlength":"4","value":"YYYY"});this.monthInput.addEvent("click",this.clearField.bind(this,[this.monthInput,"MM"]));this.dayInput.addEvent("click",this.clearField.bind(this,[this.dayInput,"DD"]));this.yearInput.addEvent("click",this.clearField.bind(this,[this.yearInput,"YYYY"]));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.dobLabel}),new Element("div",{"class":"textarea_wrapper month"}).adopt(this.monthInput),new Element("div",{"class":"textarea_wrapper day"}).adopt(this.dayInput),new Element("div",{"class":"textarea_wrapper year"}).adopt(this.yearInput)).inject(this.content);this.inviteCodeInput=new Element("input",{"type":"text","maxlength":"10","value":this.access_key});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.inviteCodeLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.inviteCodeInput)).inject(this.content);new Element("div",{"class":"text_section centered light short text11 light3","text":this.strings.inviteCodeMessage}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Sign Up",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.signup.bind(this));this.message=new Element("div",{"class":"message success"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},clearField:function(el,def){if(el.value==def){el.value="";}},signup:function(){var first_name=this.firstNameInput.value.trim();var last_name=this.lastNameInput.value.trim();var username=this.usernameInput.value.trim();var password=this.passwordInput.value.trim();var email=this.emailInput.value.trim();var dob_month=this.monthInput.value.trim();var dob_day=this.dayInput.value.trim();var dob_year=this.yearInput.value.trim();var access_key=this.inviteCodeInput.value.trim();if(first_name==""||last_name==""){this.signupFail({message:"Please enter your name"});return;}if(email==""){this.signupFail({message:"Please enter your email"});return;}if(username==""){this.signupFail({message:"Please enter a username"});return;}if(password==""){this.signupFail({message:"Please enter a password"});return;}if(dob_month!=parseInt(dob_month)||dob_month<1||dob_month>12){this.signupFail({message:"Please enter a valid month"});return;}if(dob_day!=parseInt(dob_day)||dob_day<1||dob_day>31){this.signupFail({message:"Please enter a valid day"});return;}if(dob_year!=parseInt(dob_year)||dob_year<1900||dob_year>2010){this.signupFail({message:"Please enter a valid year"});return;}var params={"first_name":first_name,"last_name":last_name,"username":username,"password":password,"email":email,"dob_month":dob_month,"dob_day":dob_day,"dob_year":dob_year,"access_key":access_key};this.call("pipio","user_register",params,this.signupSuccess.bind(this),this.signupFail.bind(this));this.actionButton.showProgress();this.message.set("text","please wait...");},signupSuccess:function(data){this.fireEvent("userDataInit",data);this.actionButton.hideProgress();this.closeContent();this.message.set("success!");},signupFail:function(status){this.actionButton.hideProgress();var name="user_register";var title="Error";var message=status.message;this.message.empty();this.fireEvent("showAlert",name,title,message);},onShow:function(){this.focus();},focus:function(){this.firstNameInput.focus.delay(500,this.firstNameInput);}});var Notifications=new Class({Extends:Base,EventHandlers:["userSwitched","notificationAdd","titleMessageAdd","titleMessageDelete"],init:function(){this.notifications=$H();this.timers=$H();this.messages=[];this.messageTimer=0;this.createNotifications();},titleMessageAdd:function(message){if(this.messages.contains(message)){return;}this.messages.push(message);this.titleMessageCheck();},titleMessageDelete:function(message){if(this.messages.contains(message)){this.messages.erase(message);}this.titleMessageCheck();},titleMessageCheck:function(){if(this.messages.length>0&&this.messageTimer==0){this.messageTimer=this.titleMessageRotate.periodical(2000,this);}else{if(this.messages.length==0&&this.messageTimer!=0){$clear(this.messageTimer);document.title=this.getPageTitle();}}},titleMessageRotate:function(){if(this.messages.length==0){return;}if(!$defined(this.currentTitle)){this.currentTitle=this.getPageTitle();}if(this.getPageTitle()==this.currentTitle){var msg=this.messages.shift();this.messages.push(msg);document.title=msg;this.currentTitle=msg;}else{document.title=this.getPageTitle();this.currentTitle=this.getPageTitle();}},userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){this.notifications=$H();},userLoggedOut:function(){this.closeAll();this.notifications=$H();},closeAll:function(){this.notifications.getKeys().each(function(name){this.close(name);},this);},close:function(name){if(!this.notifications.has(name)){return;}var notif=this.notifications.get(name);DomUtility.fadeOutDestroy($(notif));this.notifications.erase(name);$clear(this.timers.get(name));this.timers.erase(name);delete (notif);this.checkShow();},notificationAdd:function(name,notif){if(this.notifications.has(name)){return;}$(notif).inject(this.menu);DomUtility.fadeIn($(notif),1000);this.notifications.set(name,notif);notif.onClose=this.close.bind(this,name);var timer=this.close.delay(notif.timeout,this,[name]);this.timers.set(name,timer);this.checkShow();},checkShow:function(){if(this.notifications.getLength()>0){DomUtility.show(this.menu);}else{DomUtility.hide(this.menu);}},createNotifications:function(){this.menu=new Element("div",{"class":"menu flattop"});this.menu.inject("notifications");this.checkShow();}});var Notification=new Class({Extends:Base,init:function(options){if($defined(this.onBeforeInit)){options=this.onBeforeInit(options);}this.iconOptions=options.iconOptions;this.timeout=options.timeout||5000;this.hasActions=options.hasActions||false;this.createNotification();if($defined(this.onInit)){this.onInit();}},createNotification:function(){this.notif=new Element("div",{"class":"notification"});this.icon=new Icon20(this.iconOptions);$(this.icon).inject(this.notif);this.closeButton=new Element("div",{"class":"button_nav show"}).adopt(new Element("div",{"class":"action close"})).inject(this.notif);this.closeButton.addEvent("click",this.closeNotification.bind(this));this.getText().inject(this.notif);if(this.hasActions){this.actions=new Element("div",{"class":"actions"}).inject(this.notif);}},getText:function(){return new Element("div",{"class":"notification_text text11 light1"});},closeNotification:function(){if($defined(this.onClose)){this.onClose();}},toElement:function(){return this.notif;}});var Settings=new Class({Extends:Base,EventHandlers:["userSwitched","showSettings"],userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){},userLoggedOut:function(){this.closeSettings();},showSettings:function(){this.closeSettings();this.settingsPopup=new Popup({size:{x:350,y:368},resizable:false,dockable:false,className:"settings",onClose:this.destroySettings.bind(this)});var nav=new Nav({iconOptions:{iconName:"settings"},displayName:"Pip.io Settings",closable:true});var content=new PipioSettingsPopupContent();this.settingsPopup.addContent("pipio_settings",nav,content);},closeSettings:function(){if($defined(this.settingsPopup)){this.settingsPopup.close();}},destroySettings:function(){this.settingsPopup=null;}});var EmailChangePopupContent=new Class({Extends:PopupContent,strings:{emailLabel:"Email:"},onInit:function(){this.emailInput=new Element("input",{"type":"text","maxlength":"200"});this.emailInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.emailLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.emailInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Update Email",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.changeEmail.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.emailInput.value.trim()!=""){this.changeEmail();}}},changeEmail:function(){var email=this.emailInput.value.trim();var params={email:email};this.call("pipio","user_email_change",params,this.changeEmailSuccess.bind(this),this.changeEmailFail.bind(this));this.actionButton.showProgress();},changeEmailSuccess:function(){this.actionButton.hideProgress();this.closeContent();},changeEmailFail:function(status){this.actionButton.hideProgress();var name="email_change";var title="Error Updating Email";var message=status.message;this.fireEvent("showAlert",name,title,message);},onShow:function(){this.focus();},focus:function(){this.emailInput.focus.delay(500,this.emailInput);}});var PasswordChangePopupContent=new Class({Extends:PopupContent,strings:{passwordLabel:"Current Password:",newPasswordLabel:"New Password:",verifyPasswordLabel:"Verify Password:"},onInit:function(){this.passwordInput=new Element("input",{"type":"password","maxlength":"50"});new Element("div",{"class":"input_section passwordChange"}).adopt(new Element("div",{"class":"label light","text":this.strings.passwordLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.passwordInput)).inject(this.content);this.newPasswordInput=new Element("input",{"type":"password","maxlength":"50"});new Element("div",{"class":"input_section passwordChange"}).adopt(new Element("div",{"class":"label light","text":this.strings.newPasswordLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.newPasswordInput)).inject(this.content);this.verifyPasswordInput=new Element("input",{"type":"password","maxlength":"50"});new Element("div",{"class":"input_section passwordChange"}).adopt(new Element("div",{"class":"label light","text":this.strings.verifyPasswordLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.verifyPasswordInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Change Password",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.changePassword.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},changePassword:function(){var password=this.passwordInput.value.trim();var newPassword=this.newPasswordInput.value.trim();var verifyPassword=this.verifyPasswordInput.value.trim();var params={password:password,new_password:newPassword,verify_password:verifyPassword};this.call("pipio","user_password_change",params,this.changePasswordSuccess.bind(this),this.changePasswordFail.bind(this));this.actionButton.showProgress();},changePasswordSuccess:function(){this.actionButton.hideProgress();var name="email_change";var title="Password Changed";var message="Your Pip.io password has been updated";this.fireEvent("showAlert",name,title,message);this.closeContent();},changePasswordFail:function(status){this.actionButton.hideProgress();var name="email_change";var title="Error Updating Email";var message=status.message;this.fireEvent("showAlert",name,title,message);},onShow:function(){this.focus();},focus:function(){this.passwordInput.focus.delay(500,this.passwordInput);}});var PipioSettingsPopupContent=new Class({Extends:PopupContent,EventHandlers:["emailBlockUpdated","userEmailUpdated"],strings:{settingsMessage:"Change your Pip.io settings",accountSectionLabel:"Account Settings",emailSectionLabel:"Email Settings",generalEmailLabel:"Pip.io service updates:",postReplyEmailLabel:"Reply notifications:",targetedPostEmailLabel:"Targeted post notifications:",contactRequestEmailLabel:"Contact request notifications:",roomInviteEmailLabel:"Room invite notifications:"},onInit:function(){new Element("div",{"class":"text_section centered light","text":this.strings.settingsMessage}).inject(this.content);new Element("div",{"class":"text_section light","text":this.strings.accountSectionLabel}).inject(this.content);var emailChangeButton=new ButtonSmall({displayName:"Update Email",className:"dark",action:"edit"});$(emailChangeButton).addEvent("click",this.showEmailChangePopup.bind(this));this.emailLabel=new Element("div",{"class":"label light2","text":this.getPrivateUser().email});new Element("div",{"class":"input_section"}).adopt(this.emailLabel,$(emailChangeButton)).inject(this.content);var passwordChangeButton=new ButtonSmall({displayName:"Change Password",className:"dark",action:"lock"});$(passwordChangeButton).addEvent("click",this.showPasswordChangePopup.bind(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light2","text":"**********"}),$(passwordChangeButton)).inject(this.content);new Element("div",{"class":"text_section light","text":this.strings.emailSectionLabel}).inject(this.content);this.generalEmailToggle=new Toggle(true);$(this.generalEmailToggle).addEvent("click",this.updateBlock.bind(this,[18,this.generalEmailToggle]));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light2","text":this.strings.generalEmailLabel}),$(this.generalEmailToggle)).inject(this.content);this.postReplyEmailToggle=new Toggle(true);$(this.postReplyEmailToggle).addEvent("click",this.updateBlock.bind(this,[9,this.postReplyEmailToggle]));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light2","text":this.strings.postReplyEmailLabel}),$(this.postReplyEmailToggle)).inject(this.content);this.targetedPostEmailToggle=new Toggle(true);$(this.targetedPostEmailToggle).addEvent("click",this.updateBlock.bind(this,[14,this.targetedPostEmailToggle]));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light2","text":this.strings.targetedPostEmailLabel}),$(this.targetedPostEmailToggle)).inject(this.content);this.contactRequestEmailToggle=new Toggle(true);$(this.contactRequestEmailToggle).addEvent("click",this.updateBlock.bind(this,[5,this.contactRequestEmailToggle]));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light2","text":this.strings.contactRequestEmailLabel}),$(this.contactRequestEmailToggle)).inject(this.content);this.roomInviteEmailToggle=new Toggle(true);$(this.roomInviteEmailToggle).addEvent("click",this.updateBlock.bind(this,[11,this.roomInviteEmailToggle]));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light2","text":this.strings.roomInviteEmailLabel}),$(this.roomInviteEmailToggle)).inject(this.content);this.actionButton=new ButtonMedium({displayName:"Done",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.closeContent.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton)).inject(this.content);this.loadBlocks();},userEmailUpdated:function(data){if(!$defined(data.email)){return;}this.emailLabel.set("text",data.email);},loadBlocks:function(){this.call("pipio","emailblock_load",null,this.loadBlocksSuccess.bind(this));},loadBlocksSuccess:function(data){if(!$defined(data.blocks)){return;}data.blocks.each(function(block){this.updateBlockToggle(block.email_type,block.blocked);},this);},emailBlockUpdated:function(data){if(!$defined(data.email_type)||!$defined(data.blocked)){return;}this.updateBlockToggle(data.email_type,data.blocked);},updateBlockToggle:function(email_type,blocked){switch(email_type){case 5:this.contactRequestEmailToggle.set(blocked==0);break;case 9:this.postReplyEmailToggle.set(blocked==0);break;case 11:this.roomInviteEmailToggle.set(blocked==0);break;case 14:this.targetedPostEmailToggle.set(blocked==0);break;case 18:this.generalEmailToggle.set(blocked==0);break;}},updateBlock:function(email_type,toggle){var enabled=toggle.toInt();var blocked=(enabled==1)?0:1;var params={email_type:email_type,blocked:blocked};this.call("pipio","emailblock_update",params);},onClose:function(){this.closeEmailChangePopup();},showEmailChangePopup:function(){this.closeEmailChangePopup();this.emailChangePopup=new Popup({size:{x:350,y:74},resizable:false,dockable:false,className:"settings",onClose:this.destroyEmailChangePopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"settings"},displayName:"Update Your Email",closable:true});var content=new EmailChangePopupContent();this.emailChangePopup.addContent("pipio_settings",nav,content);},closeEmailChangePopup:function(){if($defined(this.emailChangePopup)){this.emailChangePopup.close();}},destroyEmailChangePopup:function(){this.emailChangePopup=null;},showPasswordChangePopup:function(){this.closePasswordChangePopup();this.passwordChangePopup=new Popup({size:{x:350,y:142},resizable:false,dockable:false,className:"settings",onClose:this.destroyPasswordChangePopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"settings"},displayName:"Change Your Password",closable:true});var content=new PasswordChangePopupContent();this.passwordChangePopup.addContent("pipio_settings",nav,content);},closePasswordChangePopup:function(){if($defined(this.passwordChangePopup)){this.passwordChangePopup.close();}},destroyPasswordChangePopup:function(){this.passwordChangePopup=null;}});var ShareBox=new Class({Extends:Base,EventHandlers:["userSwitched","shareBoxShow","replyShareBoxShow","forwardShareBoxShow","roomShareBoxShow"],init:function(){this.shareboxes=$H();},userSwitched:function(){if(!this.isLoggedIn()){this.userLoggedOut();}},userLoggedOut:function(){this.shareboxes.each(function(sharebox,key){sharebox.close();this.shareboxes.erase(key);},this);this.shareboxes=$H();},forwardShareBoxShow:function(forward_id,username,forward_body){if($defined(this.sharebox)){this.sharebox.close();}this.createForwardShareBox(forward_id,username,forward_body);},createForwardShareBox:function(forward_id,username,forward_body){this.sharebox=new Popup({size:{x:500,y:160},resizable:false,dockable:false,className:"sharebox",onClose:this.destroyShareBox.bind(this)});var displayName="Forward a Post";var nav=new Nav({iconOptions:{user:this.getPrivateUser()},displayName:displayName,closable:true});var forward_user=this.getUser(username);if(!$defined(forward_user)){forward_user=this.getRoom(username);}var content=new ShareBoxPopupContent({user:this.getPrivateUser(),forward_id:forward_id,forward_user:forward_user,forward_body:forward_body});this.sharebox.addContent("sharebox",nav,content);},replyShareBoxShow:function(reply_id){if($defined(this.sharebox)){this.sharebox.close();}this.createReplyShareBox(reply_id);},createReplyShareBox:function(reply_id){this.sharebox=new Popup({size:{x:500,y:160},resizable:false,dockable:false,className:"sharebox",onClose:this.destroyShareBox.bind(this)});var displayName="Reply to a Post";var nav=new Nav({iconOptions:{user:this.getPrivateUser()},displayName:displayName,closable:true});var content=new ShareBoxPopupContent({user:this.getPrivateUser(),reply_id:reply_id});this.sharebox.addContent("sharebox",nav,content);},shareBoxShow:function(user){if($defined(this.sharebox)){this.sharebox.close();}this.createShareBox(user);},createShareBox:function(user){this.sharebox=new Popup({size:{x:500,y:160},resizable:false,dockable:false,className:"sharebox",onClose:this.destroyShareBox.bind(this)});var displayName=(user.user_id==this.getPrivateUser().user_id)?"Write in Your Stream":"Write in "+user.first_name+"'s Stream";var nav=new Nav({iconOptions:{user:user},displayName:displayName,closable:true});var content=new ShareBoxPopupContent({user:user});this.sharebox.addContent("sharebox",nav,content);},destroyShareBox:function(name){this.sharebox=null;},roomShareBoxShow:function(room){if($defined(this.sharebox)){this.sharebox.close();}this.createRoomShareBox(room);},createRoomShareBox:function(room){this.sharebox=new Popup({size:{x:500,y:160},resizable:false,dockable:false,className:"sharebox",onClose:this.destroyShareBox.bind(this)});var displayName="Write in "+room.room_name+"'s Stream";var nav=new Nav({iconOptions:{user:room},displayName:displayName,closable:true});var content=new ShareBoxPopupContent({room:room});this.sharebox.addContent("sharebox",nav,content);}});var AttachLinkPopupContent=new Class({Extends:PopupContent,defaultText:"Please enter the URL below",errorText:"The URL you entered is invalid",validText:"Click attach to add this link to your post",onBeforeInit:function(options){this.attachFunc=options.attachFunc;return options;},onInit:function(){this.valid=false;this.url="";this.text=new Element("div",{"class":"help_text light","text":this.defaultText}).inject(this.content);this.input=new Element("input",{"type":"text","value":"http://","maxlength":200});this.input.addEvent("change",this.validate.bind(this));this.input.addEvent("keyup",this.validate.bindWithEvent(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.input).inject(this.content);this.attachButton=new ButtonMedium({displayName:"Attach",className:"dark",action:"check"});$(this.attachButton).addEvent("click",this.attach.bind(this));$(this.attachButton).inject(this.content);},onShow:function(){this.focus();},focus:function(){this.input.focus.delay(500,this.input);},validate:function(e){if(e&&e.key=="enter"){this.attach();return;}this.url=this.input.value.trim();if(DataUtility.validateUrl(this.url)){this.text.removeClass("error");this.text.addClass("success");this.text.set("text",this.validText);this.valid=true;}else{this.text.removeClass("success");this.text.addClass("error");this.text.set("text",this.errorText);this.valid=false;}},attach:function(){if(!this.valid){return;}var attachment={type:AttachmentType.Link,text:this.url,url:this.url};this.attachFunc(attachment);this.closeContent();}});var AttachPhotoPopupContent=new Class({Extends:PopupContent,defaultText:"Please choose a photo",errorText:"The file you selected is not a photo",validText:"Click attach to add this photo to your post",onBeforeInit:function(options){this.attachFunc=options.attachFunc;return options;},onInit:function(){this.valid=false;this.url="";this.text=new Element("div",{"class":"help_text light","text":this.defaultText}).inject(this.content);this.input=new Element("input",{"type":"text","value":"click to choose a file"});this.fileInput=new Element("input",{"type":"file","name":"file"});this.form=new Element("form").adopt(this.fileInput);this.fileInput.addEvent("change",this.validate.bind(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.input,this.form).inject(this.content);this.attachButton=new ButtonMedium({displayName:"Attach",className:"dark",action:"check"});$(this.attachButton).addEvent("click",this.attach.bind(this));$(this.attachButton).inject(this.content);},validate:function(){Logger().log("validating file");if(DataUtility.validatePhotoFile(this.fileInput.value)){this.text.removeClass("error");this.text.addClass("success");this.text.set("text",this.validText);this.input.value=this.fileInput.value;this.valid=true;}else{this.text.removeClass("success");this.text.addClass("error");this.text.set("text",this.errorText);this.input.value="click to choose a file";this.valid=false;}},attach:function(){if(!this.valid){return;}this.form.inject("hidden");var attachment={type:AttachmentType.Photo,text:this.fileInput.value};this.attachFunc(attachment,this.form);this.closeContent();}});var AttachmentType={None:0,Photo:1,Link:2};var ShareBoxPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){if($defined(options.user)){this.user=options.user;this.isRoom=false;this.source_id=this.user.user_id;}else{this.user=options.room;this.isRoom=true;this.source_id=this.user.room_id;}this.reply_id=options.reply_id||0;this.source_type=(this.isRoom)?3:1;this.forward_id=options.forward_id||0;this.forward_user=options.forward_user;this.forward_body=options.forward_body;if(this.source_id!=this.getPrivateUser().user_id||!$defined(this.forward_user)){this.forward_id=0;}this.is_forward=this.forward_id!=0;this.is_reply=this.reply_id!=0;this.is_direct=this.source_id!=this.getPrivateUser().user_id;return options;},reset:function(){Logger().log("resetting");this.closeContactPickerPopup();this.closeAttachmentPopup();this.content.empty();this.onInit();},onInit:function(){this.targetContacts=$H();this.targetGroups=$H();this.targetContactEls=$H();this.targetGroupEls=$H();this.targetAllContacts=false;this.allContactsEl=null;this.formEl=null;this.isPublic=true;this.readyToPost=false;this.attachment={type:AttachmentType.None};this.channel_id=0;this.res=this.getSession();if(!this.is_direct&&!this.is_reply){this.privateButton=new ButtonSmall({displayName:"Private",className:"privacy red",action:"lock dark"});$(this.privateButton).addEvent("click",this.togglePrivacy.bind(this));$(this.privateButton).inject(this.content);this.publicButton=new ButtonSmall({displayName:"Public",className:"privacy green",action:"broadcast dark"});$(this.publicButton).addEvent("click",this.togglePrivacy.bind(this));$(this.publicButton).inject(this.content);this.addRecipientButton=new ButtonSmall({displayName:"Add Recipient",className:"dark",action:"status dark"});$(this.addRecipientButton).addEvent("click",this.showContactPickerPopup.bind(this));var selfRecip=new Element("div",{"class":"target self"});var icon=new Icon20({user:this.getPrivateUser()});$(icon).inject(selfRecip);selfRecip.adopt(new Element("div",{"class":"target_text text11 light","text":"Yourself"}));this.norecipients=new Element("div",{"class":"recipients","text":"Everyone can view this post"}).inject(this.content);this.recipients=new Element("div",{"class":"recipients"}).adopt(new Element("div",{"class":"target","text":"To: "}),selfRecip,$(this.addRecipientButton),new Element("div",{"style":"clear: both"})).inject(this.content);this.setPrivacyView();}else{if(this.is_direct){this.norecipients=new Element("div",{"class":"recipients","text":"Everyone can view this post"}).inject(this.content);}else{this.norecipients=new Element("div",{"class":"recipients","text":"All recipients of the original can view this post"}).inject(this.content);}}this.input=new Element("textarea",{"maxlength":2000});this.input.addEvent("keydown",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.input).inject(this.content);this.linkButton=new ButtonSmall({displayName:"Link",className:"dark",action:"link"});$(this.linkButton).addEvent("click",this.showAttachmentPopup.bind(this,["link"]));this.photoButton=new ButtonSmall({displayName:"Photo",className:"dark",action:"photo"});$(this.photoButton).addEvent("click",this.showAttachmentPopup.bind(this,["photo"]));this.fileButton=new ButtonSmall({displayName:"File",className:"dark",action:"file"});this.attachments=new Element("div",{"class":"attachments"}).inject(this.content);this.attachmentSelect=new Element("div").adopt(new Element("div",{"class":"attachment_text light","text":"Attach:"}),$(this.linkButton),$(this.photoButton)).inject(this.attachments);this.attachmentItems=new Element("div").inject(this.attachments);this.cancelButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});$(this.cancelButton).addEvent("click",this.closeContent.bind(this));this.updateButton=new ButtonMedium({displayName:"Post",className:"dark",action:"check"});$(this.updateButton).addEvent("click",this.post.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.updateButton),$(this.cancelButton)).inject(this.content);this.focus();if(this.forward_id!=0){this.attachForward();}},setPrivacyView:function(){if(this.isPublic){DomUtility.show(this.publicButton);DomUtility.hide(this.privateButton);DomUtility.show(this.norecipients);DomUtility.hide(this.recipients);}else{DomUtility.hide(this.publicButton);DomUtility.show(this.privateButton);DomUtility.hide(this.norecipients);DomUtility.show(this.recipients);}},togglePrivacy:function(){if(this.isPublic){this.showContactPickerPopup();}else{this.closeContactPickerPopup();}this.isPublic=!this.isPublic;this.setPrivacyView();},inputKeyUp:function(e){if(e.shift&&e.key=="enter"){e.preventDefault();this.post();}if(DomUtility.textareaAutoSize(e.target,40)){this.updateSize();}},updateSize:function(){var h=(this.isPublic)?this.norecipients.getSize().y:this.recipients.getSize().y;h+=this.input.getSize().y+10;h+=this.attachments.getSize().y+20;h+=this.actions.getSize().y+30;this.resizePopup(500,h);},parseTargets:function(){if(this.isPublic){return"";}var targets=[this.getPrivateUser().user_id];if(this.targetAllContacts){this.getContacts().each(function(user){targets.include(user.user_id);},this);return targets.join(",");}this.targetGroups.each(function(group){var contacts=this.getContactsByGroup(group.group_id);contacts.each(function(user){targets.include(user.user_id);},this);},this);this.targetContacts.each(function(user){targets.include(user.user_id);},this);return targets.join(",");},post:function(){var targets=this.parseTargets();var body=this.input.value.trim();var is_public=(this.isPublic)?1:0;Logger().log(targets);Logger().log(body);if(this.forward_id==0){if(body==""&&this.attachment.type==AttachmentType.None){this.fireEvent("showAlert","empty_post","Problem Posting","Please enter some content to post.");return;}var params={"body":body,"targets":targets,"source_id":this.source_id,"source_type":this.source_type,"reply_id":this.reply_id,"channel_id":this.channel_id,"is_public":is_public,"res":this.res,"attachment":JSON.encode(this.attachment)};this.call("home","publish",params,this.postSuccess.bind(this),this.postFail.bind(this),this.formEl);}else{var params={"body":body,"targets":targets,"source_id":this.source_id,"source_type":this.source_type,"forward_id":this.forward_id,"channel_id":this.channel_id,"is_public":is_public,"res":this.res};this.call("home","forward",params,this.postSuccess.bind(this),this.postFail.bind(this));}this.updateButton.showProgress();},postSuccess:function(){this.updateButton.hideProgress();this.closeContent();},postFail:function(){this.updateButton.hideProgress();},addAllContacts:function(){if(this.isPublic||$defined(this.allContactsEl)){return;}var el=ShareBoxUtility.createAllContactsItem();el.addEvent("click",this.removeAllContacts.bind(this));el.inject($(this.addRecipientButton),"before");this.allContactsEl=el;this.targetAllContacts=true;this.updateSize();},removeAllContacts:function(){if(!$defined(this.allContactsEl)){return;}this.allContactsEl.destroy();this.targetAllContacts=false;this.updateSize();},addTargetGroup:function(group){if(this.isPublic||this.targetGroupEls.has(group.group_id)){return;}var el=ShareBoxUtility.createGroupItem(group);el.addEvent("click",this.removeTargetGroup.bind(this,[group.group_id]));el.inject($(this.addRecipientButton),"before");this.targetGroupEls.set(group.group_id,el);this.targetGroups.set(group.group_id,group);this.updateSize();},removeTargetGroup:function(group_id){if(!this.targetGroupEls.has(group_id)){return;}this.targetGroupEls.get(group_id).destroy();this.targetGroupEls.erase(group_id);this.targetGroups.erase(group_id);this.updateSize();},addTargetContact:function(user){if(this.isPublic||this.targetContactEls.has(user.username)){return;}var el=ShareBoxUtility.createContactItem(user);el.addEvent("click",this.removeTargetContact.bind(this,[user.username]));el.inject($(this.addRecipientButton),"before");this.targetContactEls.set(user.username,el);this.targetContacts.set(user.username,user);this.updateSize();},removeTargetContact:function(username){if(!this.targetContactEls.has(username)){return;}this.targetContactEls.get(username).destroy();this.targetContactEls.erase(username);this.targetContacts.erase(username);this.updateSize();},showContactPickerPopup:function(){if($defined(this.contactPicker)){this.contactPicker._select();return;}this.createContactPickerPopup();},closeContactPickerPopup:function(){if($defined(this.contactPicker)){this.contactPicker.close();}},createContactPickerPopup:function(){this.contactPicker=new Popup({size:{x:200,y:350},resizable:false,dockable:false,className:"contactPicker",onClose:this.destroyContactPickerPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"users"},displayName:"Select Recipients",closable:true});var content=new ContactPickerPopupContent({groups:this.getGroups(),contacts:this.getContacts(),groupAddFunc:this.addTargetGroup.bind(this),contactAddFunc:this.addTargetContact.bind(this),allContactsAddFunc:this.addAllContacts.bind(this)});this.contactPicker.addContent("contactPicker",nav,content);},destroyContactPickerPopup:function(){this.contactPicker=null;},showAttachmentPopup:function(type){if($defined(this.attachmentPopup)){if(this.attachmentPopupType==type){this.attachmentPopup._select();return;}else{this.closeAttachmentPopup();}}this.createAttachmentPopup(type);},closeAttachmentPopup:function(){if($defined(this.attachmentPopup)){this.attachmentPopup.close();}},createAttachmentPopup:function(type){var popupClass;var typeName;switch(type){case"link":popupClass=AttachLinkPopupContent;typeName="Link";break;case"photo":popupClass=AttachPhotoPopupContent;typeName="Photo";break;}this.attachmentPopup=new Popup({size:{x:400,y:74},resizable:false,dockable:false,className:"attachments",onClose:this.destroyAttachmentPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:type},displayName:"Attach "+typeName,closable:true});var content=new popupClass({attachFunc:this.attachContent.bind(this)});this.attachmentPopupType=type;this.attachmentPopup.addContent("attachment",nav,content);},destroyAttachmentPopup:function(){this.attachmentPopup=null;this.attachmentPopupType=null;},attachForward:function(){DomUtility.show(this.attachmentItems);DomUtility.hide(this.attachmentSelect);var attachElement=ShareBoxUtility.createForwardAttachmentItem(this.forward_user,this.forward_body);attachElement.inject(this.attachmentItems);},attachContent:function(attachment,formEl){this.attachment=attachment;if($defined(formEl)){this.formEl=formEl;}Logger().log("attached "+this.formEl);DomUtility.show(this.attachmentItems);DomUtility.hide(this.attachmentSelect);var attachElement=ShareBoxUtility.createAttachmentItem(attachment);var removeButton=new ButtonSmall({displayName:"Remove",className:"dark",action:"cross"});$(removeButton).addEvent("click",this.removeAttachment.bind(this));$(removeButton).inject(attachElement);attachElement.inject(this.attachmentItems);},removeAttachment:function(){this.attachment=null;this.attachmentItems.empty();if($defined(this.formEl)){this.formEl.destroy();}this.formEl=null;DomUtility.hide(this.attachmentItems);DomUtility.show(this.attachmentSelect);this.forward_id=0;},onShow:function(){this.focus();},focus:function(){this.input.focus.delay(500,this.input);}});var ShareBoxUtility={createContactRoomInviteItem:function(user){var el=new Element("div",{"class":"listItem"});var icon=new Icon20({user:user});$(icon).inject(el);new Element("div",{"class":"listText text12 light","text":TextUtility.cleanText(user.fullname)}).inject(el);el.set("val1",user.fullname.toLowerCase());el.set("val2",user.last_name.toLowerCase());var button=new ButtonSmall({displayName:"Invite",className:"dark",action:"check"});$(button).inject(el);new Element("div",{"class":"invited_text text11 success","text":"Invited"}).inject(el);return el;},createContactPickerItem:function(user){var el=new Element("div",{"class":"listItem"});var icon=new Icon20({user:user});$(icon).inject(el);new Element("div",{"class":"listText text12 light","text":TextUtility.cleanText(user.fullname)}).inject(el);el.set("val1",user.fullname.toLowerCase());el.set("val2",user.last_name.toLowerCase());return el;},createGroupPickerItem:function(group){var el=new Element("div",{"class":"listItem"});var icon=new Icon20({iconName:"group"});$(icon).inject(el);new Element("div",{"class":"listText text12 light","text":TextUtility.cleanText(group.name)}).inject(el);el.set("val1",group.name.toLowerCase());return el;},createAllContactsPickerItem:function(){var el=new Element("div",{"class":"listItem"});var icon=new Icon20({iconName:"contacts"});$(icon).inject(el);new Element("div",{"class":"listText text12 light","text":"All Contacts"}).inject(el);el.set("val1","all contacts");return el;},createContactItem:function(user){var el=new Element("div",{"class":"target"});var icon=new Icon20({user:user});$(icon).inject(el);el.adopt(new Element("div",{"class":"target_text text11 light","text":TextUtility.cleanText(user.first_name)}),new Element("div",{"class":"action cross"}));return el;},createGroupItem:function(group){var el=new Element("div",{"class":"target"});var icon=new Icon20({iconName:"group"});$(icon).inject(el);el.adopt(new Element("div",{"class":"target_text text11 light","text":TextUtility.cleanText(group.name)}),new Element("div",{"class":"action cross"}));return el;},createAllContactsItem:function(){var el=new Element("div",{"class":"target"});var icon=new Icon20({iconName:"contacts"});$(icon).inject(el);el.adopt(new Element("div",{"class":"target_text text11 light","text":"All Contacts"}),new Element("div",{"class":"action cross"}));return el;},createForwardAttachmentItem:function(forward_user,forward_body){var el=new Element("div",{"class":"attachment"});var name=($defined(forward_user.user_id))?forward_user.fullname:forward_user.room_name;el.adopt(new Element("span",{"class":"indicator","html":"&raquo;"}),new Element("span",{"class":"attachment_title light2"}).adopt(new Element("span",{"text":"Forwarding: "}),new Element("span",{"class":"user_name","text":TextUtility.unescape(name)}),new Element("span",{"text":" "+TextUtility.unescape(forward_body)})));return el;},createAttachmentItem:function(attachment){var el=new Element("div",{"class":"attachment"});el.adopt(new Element("span",{"class":"indicator","html":"&raquo;"}),new Element("span",{"class":"attachment_title light2","text":attachment.text}));return el;}};var UI=new Class({Extends:Base,EventHandlers:["userSwitched","viewSwitch","menuAdd","contentAdd","menuClose","contentClose","appClose","showUser","showRoom","showConvo","showGlobal","showConfirmation","showAlert","showVideoPopup","showPhotoPopup","showPipioUpdatePopup","showSearchRoomPopup"],init:function(){this.historyManager=new HistoryManager();this.historyManager.addEvent("onHistoryChange",this.historyChanged.bind(this));this.history=$H();this.navScrollBar=new ScrollBar("nav","nav_wrapper");this.idleTimeout=10*60*1000;this.updateTimestamps.periodical(1000*90,this);this.menus=$H();this.contents=$H();this.confirms=$H();this.alerts=$H();this.reset();},reset:function(){this.currentMenu=null;this.currentContent=null;},userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){this.reset();this.setCurrentUser();this.toggleHeader(true);},userLoggedOut:function(){this.reset();this.resetCurrentUser();this.toggleHeader(false);},appClose:function(app){this.contents.each(function(content,key){var appId=key.split("_",1)[0];if(appId==app){this.contentCloseKey(key);}},this);this.menus.each(function(menu,key){var appId=key.split("_",1)[0];if(appId==app){this.menuCloseKey(key);}},this);},viewSwitch:function(appId,contentName,menuName){var menuKey=appId+"_"+menuName;var contentKey=appId+"_"+contentName;if(!this.contents.has(contentKey)){Logger().log("content "+contentName+" not found!");return false;}if($defined(menuName)&&!this.menus.has(menuKey)){Logger().log("menu "+menuName+" not found!");return false;}if($defined(menuName)){this.contentSwitch(contentKey);this.menuSwitch(menuKey);$("content").addClass("hasmenu");}else{this.contentSwitch(contentKey);$("content").removeClass("hasmenu");}this.historyChange(appId,contentName,menuName);return true;},historyChange:function(appId,contentName,menuName){if(parseInt(appId)==appId){var app=this.getAppById(appId);if(!app){return;}var hash=app.name+"/"+contentName;this.history.set(hash,{appId:appId,contentName:contentName,menuName:menuName});this.historyManager.addState(hash);}else{var appParts=appId.split("_");var appName=appParts[0];var appParam=appParts[1];var hash=appName+"/"+appParam+"/"+contentName;this.history.set(hash,{appId:appId,contentName:contentName,menuName:menuName});this.historyManager.addState(hash);}},historyChanged:function(hash){Logger().log("historyChanged - "+hash);if(this.history.has(hash)){var state=this.history.get(hash);var found=this.viewSwitch(state.appId,state.contentName,state.menuName);if(!found){window.history.back();}}},menuAdd:function(appId,menuName,menu){var menuKey=appId+"_"+menuName;Logger().log("adding menu "+menuKey);if(this.menus.has(menuKey)){return;}$(menu).inject("menu_wrapper");menu.off();this.menus.set(menuKey,menu);},menuClose:function(appId,menuName){var menuKey=appId+"_"+menuName;this.menuCloseKey(menuKey);},menuCloseKey:function(key){if(!this.menus.has(key)){return;}if(key==this.currentMenu){this.currentMenu=null;}var menu=this.menus.get(key);menu.destroy();this.menus.erase(key);delete (menu);},contentAdd:function(appId,contentName,content){var contentKey=appId+"_"+contentName;Logger().log("adding content "+contentKey);if(this.contents.has(contentKey)){return;}$(content).inject("content_wrapper");content.off();this.contents.set(contentKey,content);},contentClose:function(appId,contentName){var contentKey=appId+"_"+contentName;this.contentCloseKey(contentKey);if(!$defined(this.currentContent)){window.history.back();}},contentCloseKey:function(key){Logger().log(key);if(!this.contents.has(key)){return;}if(key==this.currentContent){this.currentContent=null;}var content=this.contents.get(key);content.destroy();this.contents.erase(key);delete (content);},menuSwitch:function(menuKey){if(!this.menus.has(menuKey)){return;}if(menuKey==this.currentMenu){return;}if($defined(this.currentMenu)){this.menus.get(this.currentMenu).off();}this.menus.get(menuKey).on();this.currentMenu=menuKey;},contentSwitch:function(contentKey){if(!this.contents.has(contentKey)){return;}if(contentKey==this.currentContent){return;}if($defined(this.currentContent)){this.contents.get(this.currentContent).off();}this.contents.get(contentKey).on();this.fireEvent("contentSwitched",contentKey);this.currentContent=contentKey;},toggleHeader:function(loggedIn){if(loggedIn){DomUtility.show("self");$("header").get("tween").start("left",201).chain(function(){$("self").setStyle("z-index",6);$("header_loggedOut").get("tween").start("top",-36).chain(function(){$("header_loggedIn").get("tween").start("top",0);});});$("nav_wrapper").get("tween").start("left",0);$("content").get("tween").start("left",201);$("dock").inject("dock_loggedIn");}else{$("self").setStyle("z-index",4);$("header").get("tween").start("left",0).chain(function(){DomUtility.hide("self");$("header_loggedIn").get("tween").start("top",-36).chain(function(){$("header_loggedOut").get("tween").start("top",0);});});$("nav_wrapper").get("tween").start("left",-210);$("content").get("tween").start("left",0);$("dock").inject("dock_loggedOut");}},setCurrentUser:function(){$("self_name").set("text",this.getPrivateUser().fullname);$("self_profile_pic_26").set("src",this.getPrivateUser().profile_pic_26);$("self_profile_pic_26").addClass("profile_pic_26_"+this.getPrivateUser().username);$("self_online_status").addClass("online_status_"+this.getPrivateUser().username);},resetCurrentUser:function(){$("self_name").set("text","");$("self_profile_pic_26").set("src","");$("self_profile_pic_26").set("class","profile_pic");$("self_online_status").set("class","online_status");},showUser:function(user){var options={user:user};this.fireEvent("startAppInstance","user",user.username,options);},showRoom:function(room){var options={room:room};this.fireEvent("startAppInstance","room",room.username,options);},showGlobal:function(location){var options={location:location};var geohash=location.geohash.substring(0,6);this.fireEvent("startAppInstance","global",geohash,options);},showConvo:function(){},showConfirmation:function(name,title,message,confirmFunc){if(this.confirms.has(name)){this.confirms.get(name)._select();return;}this.createConfirmation(name,title,message,confirmFunc);},createConfirmation:function(name,title,message,confirmFunc){var popup=new Popup({size:{x:350,y:100},resizable:false,dockable:false,className:"confirm",onClose:this.destroyConfirmation.bind(this,[name])});var nav=new Nav({iconOptions:{iconName:"info"},displayName:title,closable:true});var content=new ConfirmPopupContent({confirmMessage:message,confirmFunc:confirmFunc});popup.addContent("confirm",nav,content);this.confirms.set(name,popup);},destroyConfirmation:function(name){this.confirms.erase(name);},showAlert:function(name,title,message){if(this.alerts.has(name)){this.alerts.get(name)._select();return;}this.createAlert(name,title,message);},createAlert:function(name,title,message){var popup=new Popup({size:{x:350,y:100},resizable:false,dockable:false,className:"confirm",onClose:this.destroyAlert.bind(this,[name])});var nav=new Nav({iconOptions:{iconName:"info"},displayName:title,closable:true});var content=new AlertPopupContent({alertMessage:message});popup.addContent("confirm",nav,content);this.alerts.set(name,popup);},destroyAlert:function(name){this.alerts.erase(name);},updateTimestamps:function(){$$(".timestamp").each(function(el){if($defined(el.get("ts"))){var ts=new Date(el.get("ts"));var format=el.get("ts_format");var timeStr=DateUtility.getTimestamp(ts,format);el.set("text",timeStr);}});}});UI.implement({showVideoPopup:function(attachment){switch(attachment.video_type){case"youtube":this.createYoutubePopup(attachment);break;case"vimeo":this.createVimeoPopup(attachment);break;case"ch":this.createChPopup(attachment);break;case"hulu":this.createHuluPopup(attachment);break;case"break":this.createBreakPopup(attachment);break;}},showPhotoPopup:function(attachment){this.createPhotoPopup(attachment);},createPhotoPopup:function(attachment){var popup=new Popup({size:{x:300,y:100},resizable:false,dockable:false,closable:true,className:"photoViewer"});var displayName=attachment.filename;var nav=new Nav({iconOptions:{iconName:"photo"},displayName:displayName,closable:true});var content=new PhotoPopupContent({attachment:attachment});content.resizePopup=popup.resizePopup.bind(popup);content.reCenter=popup.reCenter.bind(popup);popup.addContent("photo",nav,content);},createYoutubePopup:function(attachment){var popup=new Popup({size:{x:425,y:350},resizable:false,dockable:false,noHide:true,closable:true,className:"videoPlayer"});var displayName="Youtube Video";var nav=new Nav({iconOptions:{iconName:"youtube"},displayName:displayName,closable:true});var content=new YoutubePopupContent({attachment:attachment});popup.addContent("video",nav,content);},createVimeoPopup:function(attachment){var popup=new Popup({size:{x:425,y:350},resizable:false,dockable:false,noHide:true,closable:true,className:"videoPlayer"});var displayName="Vimeo Video";var nav=new Nav({iconOptions:{iconName:"tv"},displayName:displayName,closable:true});var content=new VimeoPopupContent({attachment:attachment});popup.addContent("video",nav,content);},createChPopup:function(attachment){var popup=new Popup({size:{x:425,y:350},resizable:false,dockable:false,noHide:true,closable:true,className:"videoPlayer"});var displayName="College Humor Video";var nav=new Nav({iconOptions:{iconName:"tv"},displayName:displayName,closable:true});var content=new ChPopupContent({attachment:attachment});popup.addContent("video",nav,content);},createBreakPopup:function(attachment){var popup=new Popup({size:{x:425,y:350},resizable:false,dockable:false,noHide:true,closable:true,className:"videoPlayer"});var displayName="Break.com Video";var nav=new Nav({iconOptions:{iconName:"tv"},displayName:displayName,closable:true});var content=new BreakPopupContent({attachment:attachment});popup.addContent("video",nav,content);},createHuluPopup:function(attachment){var popup=new Popup({size:{x:512,y:296},resizable:false,dockable:false,noHide:true,closable:true,className:"videoPlayer"});var displayName="Hulu Video";var nav=new Nav({iconOptions:{iconName:"tv"},displayName:displayName,closable:true});var content=new HuluPopupContent({attachment:attachment});popup.addContent("video",nav,content);},showPipioUpdatePopup:function(version){if($defined(this.updatePopup)){return;}this.updatePopup=popup=new Popup({size:{x:350,y:70},resizable:false,dockable:false,closable:false,className:"login"});var nav=new Nav({iconOptions:{iconName:"pipio"},displayName:"Pip.io Updated",closable:true});var content=new PipioUpdatePopupContent({version:version});this.updatePopup.addContent("update",nav,content);},showSearchRoomPopup:function(){this.closeSearchRoomPopup();this.createSearchRoomPopup();},closeSearchRoomPopup:function(){if($defined(this.searchRoomPopup)){this.searchRoomPopup.close();}},createSearchRoomPopup:function(){this.searchRoomPopup=new Popup({size:{x:350,y:110},resizable:false,dockable:false,className:"roomSearch",onClose:this.destroySearchRoomPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"search"},displayName:"Search for Rooms on Pip.io",closable:true});var content=new RoomSearchPopupContent({});this.searchRoomPopup.addContent("roomSearch",nav,content);},destroySearchRoomPopup:function(){this.searchRoomPopup=null;}});var BreakPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.attachment=options.attachment;return options;},onInit:function(){this.call("home","parse_break_url",{url:this.attachment.url},this.parseSuccess.bind(this),this.parseFail.bind(this));},parseSuccess:function(data){var swf="http://embed.break.com/"+data.id;var vid=new Swiff(swf,{id:swf,width:425,height:350,params:{movie:swf,allowfullscreen:true}});vid.inject(this.content);},parseFail:function(){this.closeContent();}});var ChPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.attachment=options.attachment;return options;},onInit:function(){var swf="http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id="+this.attachment.vimeoId+"&autoplay=1&fullscreen=1";var vid=new Swiff(swf,{id:swf,width:425,height:350,params:{movie:swf,allowfullscreen:true}});vid.inject(this.content);}});var HuluPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.attachment=options.attachment;return options;},onInit:function(){this.call("home","parse_hulu_url",{url:this.attachment.url},this.parseSuccess.bind(this),this.parseFail.bind(this));},parseSuccess:function(data){var swf="http://www.hulu.com/embed/"+data.id;var vid=new Swiff(swf,{id:swf,width:512,height:296,params:{movie:swf,allowfullscreen:true}});vid.inject(this.content);},parseFail:function(){this.closeContent();}});var PhotoPopupContent=new Class({Extends:PopupContent,strings:{loadingMessage:"Photo loading..."},onBeforeInit:function(options){this.attachment=options.attachment;return options;},onInit:function(){this.loadingMsg=new Element("div",{"class":"loading_message"}).adopt(new Element("div",{"class":"loading_text light","text":this.strings.loadingMessage}),new Element("div",{"class":"progress"})).inject(this.content);Logger().log(this.attachment.url);this.image=new Asset.image(this.attachment.url,{title:this.attachment.filename,onload:this.photoLoaded.bind(this)});},photoLoaded:function(){var imageW=this.image.width;var imageH=this.image.height;if(imageW>=imageH&&imageW>1000){imageH=(1000/imageW)*imageH;imageW=1000;}else{if(imageW<imageH&&imageH>1000){imageW=(1000/imageH)*imageW;imageH=1000;}}var w=imageW+20;var h=imageH+20;DomUtility.hide(this.loadingMsg);this.image.inject(this.content);this.resizePopup(w,h);this.reCenter();}});var PipioUpdatePopupContent=new Class({Extends:PopupContent,strings:{updateMessage:"A new version of Pip.io (v{0}) is available"},onBeforeInit:function(options){this.version=options.version;return options;},onInit:function(){new Element("div",{"class":"text_section centered light","text":String.format(this.strings.updateMessage,this.version)}).inject(this.content);this.actionButton=new ButtonMedium({displayName:"Reload",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.reload.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton)).inject(this.content);},reload:function(){this.actionButton.showProgress();window.location="/";}});var VimeoPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.attachment=options.attachment;return options;},onInit:function(){var swf="http://vimeo.com/moogaloop.swf?clip_id="+this.attachment.vimeoId+"&autoplay=1&fullscreen=1";Logger().log(swf);var vid=new Swiff(swf,{id:swf,width:425,height:350,params:{movie:swf,allowfullscreen:true}});vid.inject(this.content);}});var YoutubePopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.attachment=options.attachment;return options;},onInit:function(){var swf="http://www.youtube.com/v/"+this.attachment.youtubeId+"&rel=1&autoplay=1";var vid=new Swiff(swf,{id:swf,width:425,height:350,params:{movie:swf,allowfullscreen:true}});vid.inject(this.content);}});var VideoChat=new Class({Extends:Base,EventHandlers:["userSwitched","videoChatStart","videoChatReset","videoChatEnd","videoChatRequestReceived","videoChatRequestAccepted","videoChatAccept"],init:function(){window.sim=new VideoChatInterface();this.callTimeout=0;this.createVideoChatPopup();},userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){window.sim.ChatReady();},userLoggedOut:function(){window.sim.ChatNotReady();},videoChatStart:function(user){if(!this.videoEnabled()){var name="video_chat";var title="Unable to Start Video Conference";var message="Your system does not support video conferencing";this.fireEvent("showAlert",name,title,message);return;}if(window.sim.SwfState==window.sim.SwfReady){this.fireEvent("sendVideoChatInvite",user);window.sim.CallInitiate(this.getPrivateUser().username,user.username);this.callTimeout=this.videoChatEnd.delay(20000,this);this.showVideoChatPopup(user);}},videoChatAccept:function(user,stratusId){this.showVideoChatPopup(user);window.sim.CallAccept(stratusId,this.getPrivateUser().username,user.username);this.fireEvent("sendVideoChatAccept",user);},videoChatReset:function(){Logger().log("reset video chat");this.popup.close();this.fireEvent("videoChatEnable",true);this.fireEvent("videoInUse",false);this.fireEvent("selfPresenceUpdate");$clear(this.callTimeout);},videoChatEnd:function(){Logger().log("reset video chat");window.sim.CallEnd();this.popup.close();this.fireEvent("videoChatEnable",true);this.fireEvent("videoInUse",false);this.fireEvent("selfPresenceUpdate");$clear(this.callTimeout);},videoChatRequestAccepted:function(username,stratusId){$clear(this.callTimeout);window.sim.CallAccepted(stratusId,username);},videoChatRequestReceived:function(username,stratusId){var user=this.getContact(username);var notif=new VideoChatNotification({user:user,stratusId:stratusId});this.fireEvent("notificationAdd","videoChat_request_"+username,notif);window.sim.CallReceived(username);},showVideoChatPopup:function(user){this.popup.show(user);},createVideoChatPopup:function(){this.popup=new VideoChatPopup({size:{x:400,y:340},resizable:false,dockable:false,noHide:true,closable:false,className:"pipioVideoChat"});var nav=new Nav({iconOptions:{iconName:"video_chat"},displayName:"Video Conference",closable:true});var content=new VideoChatPopupContent({});this.popup.addContent("video_chat",nav,content);}});var VideoChatInterface=new Class({Extends:Base,EventHandlers:[],init:function(){this.flexApp=null;this.SwfState=null;this.SwfError=-1;this.SwfNotLoaded=0;this.SwfLoaded=1;this.SwfNotReady=2;this.SwfReady=3;this.SwfCalling=4;this.SwfRinging=5;this.SwfConnecting=6;this.SwfConnected=7;this.SwfDisconnecting=8;},CallInitiate:function(nearUsername,farUsername){if(this.SwfState==this.SwfReady){this.flexApp.AttachOutgoingStream(nearUsername);this.SwfState=this.SwfCalling;}},CallReceived:function(farUsername){if(this.SwfState==this.SwfReady){this.SwfState=this.SwfRinging;}},CallAccept:function(farID,nearUsername,farUsername){if(this.SwfState==this.SwfRinging){this.SwfState=this.SwfConnecting;this.flexApp.AttachIncomingStream(farID,farUsername);this.flexApp.AttachOutgoingStream(nearUsername);this.SwfState=this.SwfConnected;}},CallReject:function(farUsername){if(this.SwfState==this.SwfRinging){this.SwfState=this.SwfDisconnecting;this.SwfState=this.SwfReady;}},CallAccepted:function(farID,farUsername){if(this.SwfState==this.SwfCalling){this.SwfState=this.SwfConnecting;this.flexApp.AttachIncomingStream(farID,farUsername);this.SwfState=this.SwfConnected;}},CallRejected:function(farID,farUsername){if(this.SwfState==this.SwfCalling){this.SwfState=this.SwfReady;}},CallEnd:function(farUsername){if((this.SwfState==this.SwfCalling)||(this.SwfState==this.SwfConnected)||(this.SwfState==this.SwfConnecting)){this.SwfState=this.SwfDisconnecting;this.flexApp.ClientReset();this.SwfState=this.SwfReady;}},ClientReset:function(){if(this.SwfState>=this.SwfReady){this.CallEnd();}this.flexApp.ClientReset();},GetLog:function(logging){if(this.SwfState>=this.SwfLoaded){if(logging==null){logging=true;}return this.flexApp.GetLog(logging);}},GetFarID:function(){id="";if(this.SwfState>=this.SwfLoaded){id=this.flexApp.GetFarID();}return id;},GetNearID:function(){id="";if(this.SwfState>=this.SwfLoaded){id=this.flexApp.GetNearID();}return id;},SetSpeakerVolume:function(volume){if(this.SwfState!=this.SwfError){if(volume<0){volume=0;}else{if(volume>1){volume=1;}}this.flexApp.SetSpeakerVolume(volume);}},SetMicGain:function(gain){if(this.SwfState!=this.SwfError){if(gain<0){gain=0;}else{if(gain>100){gain=100;}}this.flexApp.SetMicGain(gain);}},AudioMute:function(){if(this.SwfState==this.SwfConnected){this.flexApp.AudioMute();}},AudioStart:function(){if(this.SwfState==this.SwfConnected){this.flexApp.AudioStart();}},AudioToggle:function(){if(this.SwfState==this.SwfConnected){this.flexApp.AudioToggle();}},VideoPause:function(){if(this.SwfState==this.SwfConnected){this.flexApp.VideoPause();}},VideoStart:function(){if(this.SwfState==this.SwfConnected){this.flexApp.VideoStart();}},VideoToggle:function(){if(this.SwfState==this.SwfConnected){this.flexApp.VideoToggle();}},LoginError:function(){this.SwfState=this.SwfError;Logger().log("LoginError()");},LoginNotConnected:function(){this.SwfState=this.SwfNotReady;Logger().log("LoginNotConnected()");},LoginConnecting:function(){this.SwfState=this.SwfNotReady;Logger().log("LoginConnecting()");},LoginConnected:function(){this.SwfState=this.SwfReady;Logger().log("LoginConnected()");Logger().log("Got Stratus ID of "+this.GetNearID());},LoginDisconnecting:function(){this.SwfState=this.SwfNotReady;$("loginstate").fireEvent("burn","LoginDisconnecting()");},ChatError:function(){this.SwfState=this.SwfError;Logger().log("ChatError()");},ChatNotReady:function(){this.SwfState=this.SwfNotReady;Logger().log("ChatNotReady()");},ChatReady:function(){this.SwfState=this.SwfReady;Logger().log("ChatReady()");},ChatInitiated:function(){this.SwfState=this.SwfCalling;Logger().log("ChatInitiated()");},ChatEstablished:function(){this.SwfState=this.SwfConnected;Logger().log("ChatEstablished()");},AudioError:function(){this.SwfState=this.SwfError;Logger().log("AudioError()");},AudioNotReady:function(){this.SwfState=this.SwfNotReady;Logger().log("AudioNotReady()");},AudioReady:function(){Logger().log("AudioReady()");},AudioTransmitting:function(){Logger().log("AudioTransmitting()");},AudioPaused:function(){Logger().log("AudioPaused()");},VideoError:function(){this.SwfState=this.SwfError;Logger().log("VideoError()");},VideoNotReady:function(){this.SwfState=this.SwfNotReady;Logger().log("VideoNotReady()");},VideoReady:function(){Logger().log("VideoReady()");Logger().log("Camera found.");this.fireEvent("videoChatReset");},VideoTransmitting:function(){Logger().log("VideoTransmitting()");},VideoPaused:function(){Logger().log("VideoPaused()");},LogChanged:function(){},VideoChatLoaded:function(){this.SwfState=this.SwfLoaded;this.flexApp=$("videochat");},SpeakerVolumeChanged:function(){},MicGainChanged:function(){}});var VideoChatNotification=new Class({Extends:Notification,onBeforeInit:function(options){this.user=options.user;this.stratusId=options.stratusId;options.iconOptions={user:this.user};options.timeout=15000;options.hasActions=true;return options;},onInit:function(){this.acceptButton=new ButtonSmall({displayName:"Accept",className:"dark",action:"check"});this.ignoreButton=new ButtonSmall({displayName:"Ignore",className:"dark",action:"cross"});$(this.ignoreButton).addEvent("click",this.closeNotification.bind(this));$(this.acceptButton).addEvent("click",this.fireEvent.bind(this,["videoChatAccept",this.user,this.stratusId]));$(this.acceptButton).addEvent("click",this.closeNotification.bind(this));$(this.acceptButton).inject(this.actions);$(this.ignoreButton).inject(this.actions);},getText:function(){var el=new Element("div",{"class":"notification_text text11 light1"}).adopt(new Element("span",{"text":this.user.fullname})).appendText(" invited you to a video conference.");return el;}});var VideoChatPopup=new Class({Extends:Popup,onCreate:function(){this.shown=true;this.close();},close:function(){if(!this.shown){return;}this.left=this.popup.getStyle("left");this.popup.setStyle("left","-5000px");this.shown=false;},show:function(user){if(this.shown){return;}this.setTitleCustom(user);this.popup.setStyle("left",this.left);this.shown=true;this._select();},setTitleCustom:function(user){var nav=this.navs.get(this.currentContent);var icon=new Icon20({user:user});var titleText=new Element("div",{"class":"title_text","text":TextUtility.unescapeQuotes("Video Conference with "+user.fullname)});this.titleIcon=$(icon).replaces(this.titleIcon);this.titleText=titleText.replaces(this.titleText);},resetSwf:function(){this.contents.get(this.currentContent).resetSwf();}});var VideoChatPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){options.destroy=false;return options;},onInit:function(){this.videochatWrapper=new Element("div",{"id":"videochatWrapper"}).inject(this.content);this.actions=new Element("div",{"class":"actions"}).inject(this.content);this.endButton=new ButtonMedium({displayName:"End Conference",className:"dark",action:"cross"});$(this.endButton).inject(this.actions);$(this.endButton).addEvent("click",this.fireEvent.bind(this,["videoChatEnd"]));},onShow:function(){this.resetSwf();},resetSwf:function(){var flashvars={bridgeName:"videochat"};var params={menu:"false",allowscriptaccess:"always",play:"true",quality:"high",flashvars:"bridgeName=videochat",allowFullScreen:"true",wmode:"window"};var attributes={id:"videochat",name:"videochat"};swfobject.embedSWF("/swf/VideoChat.swf","videochatWrapper","400","300","10.0.0","expressInstall.swf",flashvars,params,attributes);},onHide:function(){}});var Appstore=new Class({Extends:App,onStart:function(){this.setupNav();},onStop:function(){},userLoggedIn:function(){},userLoggedOut:function(){this.stop();}});Appstore.implement({requests:[{name:"apps_get_all",url:"/api/apps/app/get_all"},{name:"app_create",params:["name","type","likes","state"],url:"/api/apps/app/create"},{name:"app_update",params:["app_id","name","type","likes","state"],url:"/api/apps/app/update"},{name:"app_likes_increment",params:["app_id"],url:"/api/apps/app/increment"},{name:"app_likes_decrement",params:["app_id"],url:"/api/apps/app/decrement"}]});Appstore.implement({setupNav:function(){this.navAdd(new Nav({iconOptions:{iconName:"updates"},displayName:"All Applications",name:"apps",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"apps","apps"])}));var menu=new AppstoreMenu({isDefault:true,closeFunc:this.stop.bind(this)});this.menuAdd("apps",menu);var content=new AppstoreContent({isDefault:true});this.contentAdd("apps",content);}});var AppstoreContent=new Class({Extends:Content,EventHandlers:["appInstalled","appUninstalled"],onBeforeInit:function(options){return options;},onInit:function(){this.loaded=false;this.loader=new ItemLoader({idField:"app_id",sortField:"name",sortAlpha:true,createElementFunc:AppstoreItemUtility.createAppstoreItem,emptyEl:new Element("div",{"class":"post empty","text":"There are no apps to install"}),loadingEl:new Element("div",{"class":"post empty","text":"Applications loading..."})});$(this.loader).inject(this.content);this.appsInstalled=UserUtility.getInstalledApps();},onShow:function(first){if(first){this.call("appstore","apps_get_all",null,this.loadAppsSuccess.bind(this),null);}this.loader.showLoading();},onHide:function(){},loadAppsSuccess:function(data){this.loader.hideLoading();if(!$defined(data.apps)||data.apps.length==0){}data.apps.each(function(app){if($defined(this.appsInstalled[app.app_id])){app.installed=true;}else{app.installed=false;}this.loader.process(app);},this);},appInstalled:function(data){if(!$defined(data.app_id)){return;}if($defined($("appstore_item_"+data.app_id))){$("appstore_item_"+data.app_id).addClass("installed");$("appstore_item_"+data.app_id).removeClass("uninstalled");}},appUninstalled:function(data){if(!$defined(data.app_id)){return;}if($defined($("appstore_item_"+data.app_id))){$("appstore_item_"+data.app_id).removeClass("installed");$("appstore_item_"+data.app_id).addClass("uninstalled");}}});var AppstoreMenu=new Class({Extends:Menu,EventHandlers:[],onBeforeInit:function(options){options.displayName="Pip.io App Store";return options;},onInit:function(){var appstoreText="You can install apps on your Pip.io account to add additional features.  More apps are coming very soon!";var appstoreText2="If you're a developer and interested in creating an app for the Pip.io platform, please contact developers@pip.io";new Element("div",{"class":"text_section light1","text":TextUtility.unescape(appstoreText)}).inject(this.menu);new Element("div",{"class":"text_section light1 text11","text":TextUtility.unescape(appstoreText2)}).inject(this.menu);}});var AppstoreItemUtility={createAppstoreItem:function(app){var el=ItemUtility.createPostBubble("post app",true);el.set("id","appstore_item_"+app.app_id);var installMethod=app.name+"Install";var uninstallMethod=app.name+"Uninstall";new Element("img",{"class":"app_icon","src":app.info.icon}).inject(el);new Element("div",{"class":"description","text":TextUtility.unescape(app.info.description)}).inject(el);var appname=new Element("div",{"class":"user_name clickable","text":TextUtility.unescape(app.display_name)}).inject(el);if(app.type==3){var installButton=new ButtonMedium({displayName:"Coming Soon!",action:"goto dark"});new Element("div",{"class":"actions"}).adopt($(installButton)).inject(el);}else{var uninstallButton=new ButtonMedium({className:"uninstall",displayName:"Uninstall Application",action:"goto dark"});$(uninstallButton).addEvent("click",pipio.dispatchEvent.bind(pipio,[uninstallMethod,app]));var installButton=new ButtonMedium({className:"install",displayName:"Install Application",action:"goto dark"});$(installButton).addEvent("click",pipio.dispatchEvent.bind(pipio,[installMethod,app]));if(app.installed){el.addClass("installed");}else{el.addClass("uninstalled");}new Element("div",{"class":"actions"}).adopt($(installButton),$(uninstallButton)).inject(el);}return el;}};var Contacts=new Class({Extends:App,EventHandlers:["userSwitched","userStatusUpdated","userStatusCleared","userOnline","userOffline","userPresenceReceived","selfPresenceReceived","selfPresenceUpdate","userVideoEnabled","showStatusUpdatePopup","userProfilePicUpdated","xmppConnected","xmppConnecting","xmppDisconnected","contactAdded","contactGroupAdded","contactDeleted","contactGroupDeleted","contactGroupMoved","contactRequestAdded","contactRequestDeleted","connectionRequestAccept","connectionRequestDelete","connectionRequestCreate","connectionDelete","userSubscribe","userUnsubscribe","showGroupPickerPopup","showCreateGroupPopup"],onStart:function(){this.setupNav();},onStop:function(){},userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){this.start();this.initBuddylist();},userLoggedOut:function(){this.stop();},onCreate:function(){this.minButtonAction=new Element("div",{"class":"action pivot_up"});this.minButton=new Element("div",{"class":"button_nav"}).adopt(this.minButtonAction).inject("self");this.minButton.addEvent("click",this.toggleNav.bind(this));this.navHeader.destroy();this.connecting=new Element("div",{"class":"connect_state"}).adopt(new Element("div",{"class":"connect_text light2","text":"Connecting to Pip.io..."}),new Element("div",{"class":"progress"})).inject("nav");DomUtility.hide(this.navSection);},onDestroy:function(){this.connecting.destroy();},toggleNav:function(){if(!this.isExpanded){this.expand();}else{this.collapse();}},expand:function(){if(!this.isExpanded){DomUtility.expand(this.navWrapper);this.minButtonAction.addClass("pivot_up");this.minButtonAction.removeClass("pivot_down");this.isExpanded=true;}},collapse:function(){if(this.isExpanded){DomUtility.collapse(this.navWrapper);this.minButtonAction.addClass("pivot_down");this.minButtonAction.removeClass("pivot_up");this.isExpanded=false;}},xmppConnected:function(){DomUtility.show(this.navSection);DomUtility.hide(this.connecting);},xmppDisconnected:function(){DomUtility.show(this.connecting);DomUtility.hide(this.navSection);},xmppConnecting:function(){DomUtility.show(this.connecting);DomUtility.hide(this.navSection);},connectionDelete:function(username){this.call("contacts","connection_delete",{username:username},null,null);},connectionRequestCreate:function(username){this.call("contacts","connection_request_create",{username:username},null,null);},connectionRequestAccept:function(username){this.call("contacts","connection_request_accept",{username:username},null,null);},connectionRequestDelete:function(username){this.call("contacts","connection_request_delete",{username:username},null,null);},userSubscribe:function(username){this.call("contacts","user_subscribe",{username:username},null,null);},userUnsubscribe:function(username){this.call("contacts","user_unsubscribe",{username:username},null,null);},userProfilePicUpdated:function(data){if(!$defined(data.username)){return;}var user=this.getUser(data.username);var user_id=user.user_id;var username=user.username;var version=UserUtility.profilePicVersionGet(user_id);version++;UserUtility.profilePicVersionSet(user_id,version);user.profile_pic_16=user.profile_pic_16.split("?")[0]+"?"+version;user.profile_pic_20=user.profile_pic_20.split("?")[0]+"?"+version;user.profile_pic_26=user.profile_pic_26.split("?")[0]+"?"+version;user.profile_pic_32=user.profile_pic_32.split("?")[0]+"?"+version;user.profile_pic_42=user.profile_pic_42.split("?")[0]+"?"+version;user.profile_pic_60=user.profile_pic_60.split("?")[0]+"?"+version;user.profile_pic_100=user.profile_pic_100.split("?")[0]+"?"+version;user.profile_pic_200=user.profile_pic_200.split("?")[0]+"?"+version;$$(".profile_pic_16_"+username).each(function(el){el.set("src",user.profile_pic_16);});$$(".profile_pic_20_"+username).each(function(el){el.set("src",user.profile_pic_20);});$$(".profile_pic_60_"+username).each(function(el){el.set("src",user.profile_pic_60);});$$(".profile_pic_26_"+username).each(function(el){el.set("src",user.profile_pic_26);});$$(".profile_pic_32_"+username).each(function(el){el.set("src",user.profile_pic_32);});$$(".profile_pic_42_"+username).each(function(el){el.set("src",user.profile_pic_42);});$$(".profile_pic_100_"+username).each(function(el){el.set("src",user.profile_pic_100);});$$(".profile_pic_200_"+username).each(function(el){el.set("src",user.profile_pic_200);});},destroyApp:function(){this.contents.each(function(content){content.destroy();});this.contents.empty();this.menus.each(function(menu){menu.destroy();});this.menus.empty();this.navs.each(function(nav){nav.destroy();});this.navs.empty();this.navHeader.destroy();this.nav.destroy();this.navSection.destroy();this.fireEvent("appClose",this.appId);if($defined(this.onDestroy)){this.onDestroy();}}});Contacts.implement({initBuddylist:function(){this.contacts=$H();this.contactRequests=$H();this.groups=$H();this.css=new CSS();this.getGroups().each(function(group){this.groupAdd(group);},this);this.getContacts().each(function(user){this.contactAdd(user);},this);this.getContactRequests().each(function(user){this.contactRequestAdd(user);},this);},contactAdded:function(user){if(this.contacts.has(user.username)){return;}this.contactAdd(user);},contactDeleted:function(username){this.contactDelete(username);},contactRequestAdded:function(user){if(this.contactRequests.has(user.username)){return;}this.contactRequestAdd(user);},contactRequestDeleted:function(username){if(!this.contactRequests.has(username)){return;}this.contactRequestDelete(username);},contactGroupAdded:function(group){if(this.groups.has(group.group_id)){return;}this.groupAdd(group);},contactGroupDeleted:function(group){if(!this.groups.has(group.group_id)){return;}this.groupDelete(group);},contactGroupMoved:function(user){this.contactDelete(user.username);Logger().log("contactGroupMoved "+user.username+" group_id "+user.group_id);this.contactAdd(user);},selfPresenceUpdate:function(show){if($defined(show)&&this.getPrivateUser().show==show){return;}if($defined(show)){this.getPrivateUser().show=show;}this.p.xmpp.updateSelfPresence(this.getPrivateUser().show,true);},userVideoEnabled:function(username,videoEnabled){if(this.contacts.has(username)){this.contacts.get(username).videoEnabled(videoEnabled);}},userStatusUpdated:function(data){if($defined(this.contacts)&&this.contacts.has(data.username)){this.contacts.get(data.username).statusMsgUpdated(data.status_message.status);}},userStatusCleared:function(data){if($defined(this.contacts)&&this.contacts.has(data.username)){this.contacts.get(data.username).statusMsgUpdated("");}},userOnline:function(username){if(this.contacts.has(username)){var user=this.getContact(username);if(user.status_message.status==""){this.contacts.get(username).online(false);}else{this.contacts.get(username).online(true);}if(!user.online){user.online=true;}}},userOffline:function(username){if(this.contacts.has(username)){this.contacts.get(username).offline();var user=this.getContact(username);if(user.online){user.online=false;}}},userPresenceReceived:function(username,show,online){if(online){this.userOnline(username);if(show==""){this.setUserOnlineClass(username);}else{if(show=="away"){this.setUserAwayClass(username);}else{if(show=="xa"){this.setUserIdleClass(username);}else{if(show=="dnd"){this.userOffline(username);this.setUserOfflineClass(username);}}}}}else{this.userOffline(username);this.setUserOfflineClass(username);}this.getContact(username).show=show;},selfPresenceReceived:function(show,online){if(online){if(show==""){this.setUserOnlineClass(this.getPrivateUser().username);}else{if(show=="away"){this.setUserAwayClass(this.getPrivateUser().username);}else{if(show=="xa"){this.setUserIdleClass(this.getPrivateUser().username);}else{if(show=="dnd"){this.setUserOfflineClass(this.getPrivateUser().username);}}}}}else{this.setUserOfflineClass(this.getPrivateUser().username);}},setUserOnlineClass:function(username){this.css.add_rule(".online_status_"+username,{"border-color":"#42a409 !important"}).refresh();},setUserIdleClass:function(username){this.css.add_rule(".online_status_"+username,{"border-color":"#cc8513 !important"}).refresh();},setUserAwayClass:function(username){this.css.add_rule(".online_status_"+username,{"border-color":"#b0191f !important"}).refresh();},setUserOfflineClass:function(username){this.css.remove_rule(".online_status_"+username);this.css.refresh();}});Contacts.implement({requests:[{name:"connection_group_create",params:["name"],url:"/api/user/connection/group/create"},{name:"connection_group_delete",params:["group_id"],url:"/api/user/connection/group/delete"},{name:"connection_group_move",params:["username","group_id"],url:"/api/user/connection/group/move"},{name:"connection_delete",params:["username"],url:"/api/user/connection/delete"},{name:"connection_request_create",params:["username"],url:"/api/user/connection/request/create"},{name:"connection_request_accept",params:["username"],url:"/api/user/connection/request/accept"},{name:"connection_request_delete",params:["username"],url:"/api/user/connection/request/delete"},{name:"user_subscribe",params:["username"],url:"/api/user/stream/subscribe"},{name:"user_unsubscribe",params:["username"],url:"/api/user/stream/unsubscribe"},{name:"search_user",params:["query"],url:"/api/user/search/user"},{name:"search_email",params:["email_address","password"],url:"/api/user/search/email"},{name:"invite_create",params:["email","message"],url:"/api/user/invite/create"}]});Contacts.implement({setupNav:function(){this.navAdd(new Nav({iconOptions:{iconName:"contacts",iconAction:"add"},hasSubnavs:true,onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"contact_requests","contact_requests"]),displayName:"Contact Requests",defaultClosed:true,name:"requests"}));var contactRequestsMenu=new ContactRequestsMenu({displayName:"Contact Requests"});this.menuAdd("contact_requests",contactRequestsMenu);var content=new ContactRequestsContent();this.contentAdd("contact_requests",content);this.navAdd(new Nav({iconOptions:{iconName:"search"},displayName:"Search Users...",onClick:this.fireEvent.bind(this,["searchUserShow"]),name:"search_user",bottom:true}));this.navAdd(new Nav({iconOptions:{iconName:"contacts",iconAction:"add"},displayName:"Create New Group...",onClick:this.fireEvent.bind(this,["showCreateGroupPopup"]),name:"new_group",bottom:true}));},groupAdd:function(group){var groupNav=new GroupNav({group:group,onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"group_"+group.group_id,"menu_"+group.group_id])});this.navAdd(groupNav);this.groups.set(group.group_id,groupNav);if(group.group_id!=0){var groupMenu=new GroupMenu({displayName:group.name,group:group});}else{var groupMenu=new GroupMenu({displayName:group.name,group:group,unsorted:true});}this.menuAdd("menu_"+group.group_id,groupMenu);var content=new GroupContent({group:group});this.contentAdd("group_"+group.group_id,content);},groupDelete:function(group){this.navDelete("group_"+group.group_id);this.menuClose("menu_"+group.group_id);this.contentClose("group_"+group.group_id);},contactAdd:function(user){var contactNav=new ContactNav({user:user});this.navAdd(contactNav);this.contacts.set(user.username,contactNav);},contactDelete:function(username){if(!this.contacts.has(username)){return;}this.contacts.get(username).destroy();this.navDelete("contact_"+username);this.contacts.erase(username);},contactRequestAdd:function(user){var contactNav=new ContactRequestNav({user:user});this.navAdd(contactNav);this.contactRequests.set(user.username,contactNav);this.fireEvent("alertAdd","1_requests");},contactRequestDelete:function(username){if(!this.contactRequests.has(username)){return;}Logger().log("deleting contact request nav "+username);this.contactRequests.get(username).destroy();this.contactRequests.erase(username);this.navDelete("contact_request_"+username);this.fireEvent("alertClear","1_requests",1);},showStatusUpdatePopup:function(){if($defined(this.statusUpdatePopup)){this.statusUpdatePopup.close();}this.createStatusUpdatePopup();},createStatusUpdatePopup:function(){this.statusUpdatePopup=new Popup({size:{x:350,y:100},resizable:false,dockable:false,className:"statusUpdate",onClose:this.destroyStatusUpdatePopup.bind(this)});var nav=new Nav({iconOptions:{user:this.getPrivateUser()},displayName:"Update Your Status",closable:true});var content=new StatusUpdatePopupContent({user:this.getPrivateUser()});this.statusUpdatePopup.addContent("status_update",nav,content);},destroyStatusUpdatePopup:function(){this.statusUpdatePopup=null;},showGroupPickerPopup:function(user){if($defined(this.groupPickerPopup)){this.groupPickerPopup.close();}this.createGroupPickerPopup(user);},createGroupPickerPopup:function(user){this.groupPickerPopup=new Popup({size:{x:200,y:250},resizable:false,dockable:false,className:"groupPicker",onClose:this.destroyGroupPickerPopup.bind(this)});var nav=new Nav({iconOptions:{user:user},displayName:"Edit "+TextUtility.unescape(user.fullname),closable:true});var content=new GroupPickerPopupContent({user:user});this.groupPickerPopup.addContent("group_picker",nav,content);},destroyGroupPickerPopup:function(){this.groupPickerPopup=null;},showCreateGroupPopup:function(){if($defined(this.createGroupPopup)){this.createGroupPopup.close();}this.createCreateGroupPopup();},createCreateGroupPopup:function(){this.createGroupPopup=new Popup({size:{x:350,y:74},resizable:false,dockable:false,className:"createGroup",onClose:this.destroyCreateGroupPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"contacts",iconAction:"add"},displayName:"Create New Group",closable:true});var content=new CreateGroupPopupContent({});this.createGroupPopup.addContent("create_group",nav,content);},destroyCreateGroupPopup:function(){this.createGroupPopup=null;}});var ContactRequestsContent=new Class({Extends:Content,EventHandlers:["contactRequestAdded","contactRequestDeleted"],onInit:function(){this.loaded=false;this.loader=new ItemLoader({idField:"username",sortField:"last_name",sortAlpha:true,createElementFunc:ContactItemUtility.createContactRequestItem,emptyEl:new Element("div",{"class":"post empty","text":"You do not have any contact requests"})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.populateContacts();}},onHide:function(){},populateContacts:function(){var contacts=this.getContactRequests();contacts.each(function(user){this.loader.process(user);},this);this.loaded=true;},contactRequestAdded:function(user){this.loader.process(user);},contactRequestDeleted:function(username){this.loader.remove(username);}});var GroupContent=new Class({Extends:Content,EventHandlers:["contactAdded","contactDeleted","contactGroupMoved"],onBeforeInit:function(options){this.group=options.group;return options;},onInit:function(){this.loaded=false;this.loader=new ItemLoader({idField:"user_id",sortField:"last_name",sortAlpha:true,createElementFunc:ContactItemUtility.createContactItem,emptyEl:new Element("div",{"class":"post empty","text":"There are no contacts in this group"})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.populateContacts();}},onHide:function(){},populateContacts:function(){var contacts=this.group.users;contacts.each(function(user){this.loader.process(user);},this);this.loaded=true;},contactAdded:function(user){if(!this.loaded||user.group_id!=this.group.group_id){return;}this.loader.process(user);},contactDeleted:function(username,group_id){if(!this.loaded||group_id!=this.group.group_id){return;}var user=this.getUser(username);this.loader.remove(user.user_id);},contactGroupMoved:function(user){if(user.group_id==this.group.group_id){this.loader.process(user);}else{this.loader.remove(user.user_id);}}});var ContactRequestsMenu=new Class({Extends:Menu,strings:{contactRequestsText:"These users requested to add you as their contact"},onInit:function(){new Element("div",{"class":"text_section light1","text":this.strings.contactRequestsText}).inject(this.menu);}});var GroupMenu=new Class({Extends:Menu,strings:{groupMenuText:'These are contacts in your group "{0}"',unsortedGroupMenuText:"These are contacts that have not been added to a group"},onBeforeInit:function(options){this.group=options.group;this.unsorted=options.unsorted||false;return options;},onInit:function(){if(this.unsorted){new Element("div",{"class":"text_section light1","text":String.format(this.strings.unsortedGroupMenuText)}).inject(this.menu);}else{new Element("div",{"class":"text_section light1","text":String.format(this.strings.groupMenuText,TextUtility.unescape(this.group.name))}).inject(this.menu);}if(!this.unsorted){this.deleteButton=new ButtonMedium({displayName:"Delete Group",className:"dark",action:"cross"});var name="groupDelete_"+this.group.group_id;var title="Delete "+this.group.name;var message="Are you sure you want to delete the group "+this.group.name+"?";var func=this.deleteGroup.bind(this);$(this.deleteButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showConfirmation",name,title,message,func]));new Element("div",{"class":"button_section"}).adopt($(this.deleteButton)).inject(this.menu);}},deleteGroup:function(){var params={group_id:this.group.group_id};this.call("contacts","connection_group_delete",params,this.deleteGroupSuccess.bind(this),this.deleteGroupFail.bind(this));this.deleteButton.showProgress();},deleteGroupSuccess:function(data){this.deleteButton.hideProgress();},deleteGroupFail:function(){this.deleteButton.hideProgress();}});var ContactNav=new Class({Extends:Nav,onBeforeInit:function(options){this.user=options.user;this.isOnline=false;options.name="contact_"+this.user.username;options.iconOptions={user:this.user};options.onClick=this.fireEvent.bind(this,["chatStart",this.user.username]);options.displayName=this.user.fullname;options.className="contact";options.parentName="group_"+this.user.group_id;return options;},onInit:function(){$(this.icon).destroy();this.icon=new Icon20(this.iconOptions);$(this.icon).inject(this.nav);$(this.icon).addEvent("click",this.openUser.bindWithEvent(this));this.videoChatIcon=new Icon({iconName:"video_chat"});$(this.videoChatIcon).inject(this.nav);$(this.videoChatIcon).addEvent("click",this.videoChatStart.bindWithEvent(this));var statusMsg=($defined(this.user.status_message)&&$defined(this.user.status_message.status))?this.user.status_message.status:"";this.statusMsg=new Element("div",{"class":"status_msg status_msg_"+this.user.username,"text":TextUtility.unescape(statusMsg)}).inject(this.nav);if(this.user.online){if(statusMsg==""){this.online(false);}else{this.online(true);}}},statusMsgUpdated:function(statusMsg){this.statusMsg.set("text",TextUtility.unescape(statusMsg));if(this.isOnline){if(statusMsg==""){DomUtility.setHeight(this.nav,22);}else{DomUtility.setHeight(this.nav,36);}}},online:function(hasStatus){if(hasStatus){DomUtility.expandFade(this.nav,36);}else{DomUtility.expandFade(this.nav,22);}this.navWrapper.addClass("online");this.isOnline=true;},offline:function(){DomUtility.collapseFade(this.nav);this.navWrapper.removeClass("online");this.isOnline=false;},videoEnabled:function(enabled){if(enabled){this.nav.addClass("videoEnabled");}else{this.nav.removeClass("videoEnabled");}},openUser:function(e){e.stopPropagation();this.fireEvent("showUser",this.user);},videoChatStart:function(e){e.stopPropagation();this.fireEvent("videoChatStart",this.user);}});var ContactRequestNav=new Class({Extends:Nav,onBeforeInit:function(options){this.user=options.user;options.name="contact_request_"+this.user.username;options.iconOptions={user:this.user};options.onClick=this.fireEvent.bind(this,["showUser",this.user]);options.displayName=this.user.fullname;options.className="contact request";options.parentName="requests";return options;},onInit:function(){$(this.icon).destroy();this.icon=new Icon20(this.iconOptions);$(this.icon).inject(this.nav);}});var GroupNav=new Class({Extends:Nav,onBeforeInit:function(options){this.group=options.group;options.name="group_"+this.group.group_id;options.iconOptions={iconName:"contacts"};options.displayName=this.group.name;options.className="group_nav";options.hasSubnavs=true;return options;},onInit:function(){this.onlineCount=new Element("div",{"class":"online_count text11 light2"}).inject(this.nav);DomUtility.hide(this.onlineCount);},onExpand:function(){this.hideOnlineCount();},onCollapse:function(){this.showOnlineCount();},showOnlineCount:function(){this.onlineCount.set("text",this.getOnlineCount());DomUtility.show(this.onlineCount);},hideOnlineCount:function(){DomUtility.hide(this.onlineCount);},getOnlineCount:function(){return this.subnavItems.getChildren(".online").length+"/"+this.subnavItems.getChildren().length;}});var SubscribersNav=new Class({Extends:Nav,onBeforeInit:function(options){this.users=$H();options.name="subscribers";options.iconOptions={iconName:"broadcast"};options.displayName="Subscribers";options.className="subscribers_nav";options.hasSubnavs=true;return options;},onInit:function(){this.clear=new Element("div",{"style":"clear: both"});this.list=new Element("div",{"class":"menu_list"}).adopt(this.clear).inject(this.subnavs);},addUsers:function(users){$splat(users).each(function(user){user=UserUtility.processUser(user);if(!this.users.has(user.username)){var pic=ItemUtility.createProfilePic(user,"16a");pic.addEvent("click",this.fireEvent.bind(this,["showUser",user]));pic.inject(this.clear,"before");this.users.set(user.username,pic);}},this);},removeUser:function(username){if(!this.users.has(username)){return;}this.users.get(username).destroy();this.users.erase(username);}});var SubscriptionsNav=new Class({Extends:Nav,onBeforeInit:function(options){this.users=$H();options.name="subscriptions";options.iconOptions={iconName:"broadcast"};options.displayName="Subscriptions";options.className="subscribers_nav";options.hasSubnavs=true;return options;},onInit:function(){this.clear=new Element("div",{"style":"clear: both"});this.list=new Element("div",{"class":"menu_list"}).adopt(this.clear).inject(this.subnavs);},addUsers:function(users){$splat(users).each(function(user){user=UserUtility.processSource(user);if(!this.users.has(user.username)){var pic=ItemUtility.createProfilePic(user,"16a");if($defined(user.user_id)){pic.addEvent("click",this.fireEvent.bind(this,["showUser",user]));}else{if($defined(user.room_id)){pic.addEvent("click",this.fireEvent.bind(this,["showRoom",user]));}}pic.inject(this.clear,"before");this.users.set(user.username,pic);}},this);},removeUser:function(username){if(!this.users.has(username)){return;}this.users.get(username).destroy();this.users.erase(username);}});var ContactPickerPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.contacts=options.contacts;this.contactAddFunc=options.contactAddFunc;this.hasGroups=options.hasGroups||true;if(this.hasGroups){this.groups=options.groups;this.groupAddFunc=options.groupAddFunc;}this.hasAllContacts=options.hasAllContacts||true;if(this.hasAllContacts){this.allContactsAddFunc=options.allContactsAddFunc;}return options;},onInit:function(){this.css=new CSS();this.input=new Element("input",{"type":"text","maxlength":50});this.input.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.input).inject(this.content);this.list=new Element("div",{"class":"itemList"}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});new Element("div",{"class":"actions"}).adopt($(this.closeButton)).inject(this.content);$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.insertContacts();this.scroll=new Fx.Scroll(this.list);},insertContacts:function(){if(this.hasAllContacts){var el=ShareBoxUtility.createAllContactsPickerItem();el.addEvent("click",this.addAllContacts.bind(this,[el]));el.inject(this.list);this.insertSeperator();}if(this.hasGroups){this.groups.each(function(group){var el=ShareBoxUtility.createGroupPickerItem(group);el.addEvent("click",this.addGroup.bind(this,[group,el]));el.inject(this.list);},this);this.insertSeperator();}this.contacts.getValues().sort(DataUtility.sortUsers).each(function(user){var el=ShareBoxUtility.createContactPickerItem(user);el.addEvent("click",this.addContact.bind(this,[user,el]));el.inject(this.list);},this);},insertSeperator:function(){new Element("div",{"class":"listItem seperator"}).inject(this.list);},addAllContacts:function(el){this.allContactsAddFunc();el.destroy();this.closeContent();},addContact:function(user,el){this.contactAddFunc(user);el.destroy();},addGroup:function(group,el){this.groupAddFunc(group);el.destroy();},inputKeyUp:function(e){if(e.key=="esc"){e.target.value="";}var val=e.target.value.trim().toLowerCase();if(val.length<2){this.list.removeClass("search");return;}this.list.addClass("search");if($defined(this.lastSelector)){this.css.remove_rule(this.lastSelector);}var selector=".listItem[val1^='"+val+"'], .listItem[val2^='"+val+"']";this.css.add_rule(selector,{"display":"block !important"}).refresh();this.lastSelector=selector;},focus:function(){this.input.focus.delay(500,this.input);},onClose:function(){if($defined(this.lastSelector)){this.css.remove_rule(this.lastSelector).refresh();}},onShow:function(){if($defined(this.scrollY)){this.scroll.set(0,this.scrollY);}this.focus();},onHide:function(){if($defined(this.list)){this.scrollY=this.list.getScroll().y;}}});var CreateGroupPopupContent=new Class({Extends:PopupContent,strings:{groupNameLabel:"Group Name:",errorMessage:"There was an error creating this group"},onInit:function(){this.groupNameInput=new Element("input",{"type":"text","maxlength":"32"});this.groupNameInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.groupNameLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.groupNameInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Create Group",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.createGroup.bind(this));this.message=new Element("div",{"class":"message error"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.groupNameInput.value.trim()!=""){this.createGroup();}}},createGroup:function(){var name=this.groupNameInput.value.trim();var params={name:name};this.call("contacts","connection_group_create",params,this.createGroupSuccess.bind(this),this.createGroupFail.bind(this));this.actionButton.showProgress();},createGroupSuccess:function(){this.actionButton.hideProgress();this.closeContent();},createGroupFail:function(){this.actionButton.hideProgress();this.closeContent();},onShow:function(){this.focus();},focus:function(){this.groupNameInput.focus.delay(500,this.groupNameInput);}});var GroupPickerPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.user=options.user;return options;},onInit:function(){this.list=new Element("div",{"class":"itemList"}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});new Element("div",{"class":"actions"}).adopt($(this.closeButton)).inject(this.content);$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.insertGroups();},insertGroups:function(){var groups=this.getGroups();groups.each(function(group){var el=ShareBoxUtility.createGroupPickerItem(group);if(this.user.group_id==group.group_id){el.addClass("on");this.selectedEl=el;}else{el.addEvent("click",this.groupMove.bind(this,[group,el]));}el.inject(this.list);},this);},groupMove:function(group,el){var params={username:this.user.username,group_id:group.group_id};this.call("contacts","connection_group_move",params,this.groupMoveSucess.bind(this),this.groupMoveFail.bind(this));this.selectedEl.removeClass("on");new Element("div",{"class":"progress"}).inject(el);},groupMoveSucess:function(data){this.closeContent();},groupMoveFail:function(){this.closeContent();}});var StatusUpdatePopupContent=new Class({Extends:PopupContent,onInit:function(){this.statusInput=new Element("textarea",{"maxlength":500});this.statusInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.statusInput).inject(this.content);this.cancelButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.cancelButton).addEvent("click",this.closeContent.bind(this));this.updateButton=new ButtonMedium({displayName:"Update Status",className:"dark",action:"check"});$(this.updateButton).addEvent("click",this.updateStatus.bind(this));new Element("div",{"class":"actions"}).adopt($(this.updateButton),$(this.cancelButton)).inject(this.content);},onShow:function(){this.focus();},focus:function(){this.statusInput.focus.delay(500,this.statusInput);},inputKeyUp:function(e){if(e.key=="enter"){var msg=e.target.value.trim();if(msg==""){return;}this.updateStatus();}},updateStatus:function(){var params={username:"",body:this.statusInput.value.trim(),res:this.getSession()};this.call("pipio","publish_status",params,this.updateStatusSuccess.bind(this),this.updateStatusFail.bind(this));this.updateButton.showProgress();},updateStatusSuccess:function(){this.closeContent();},updateStatusFail:function(){alert("There was an error updating your status!");}});var ContactItemUtility={createContactItem:function(user){var el=ItemUtility.createPostBubble("post contact",true);ItemUtility.createProfilePic(user,60).inject(el);var header=new Element("div",{"class":"heading"}).inject(el);var username=new Element("span",{"class":"user_name clickable","text":TextUtility.unescape(user.fullname)}).inject(header);username.addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var status=new Element("span",{"class":"status status_msg_"+user.username}).inject(header);if(user.status_message.status.trim()!=""){status.set("text"," "+TextUtility.unescape(user.status_message.status.trim()));}var viewButton=new ButtonMedium({displayName:"View Profile",action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var editButton=new ButtonMedium({displayName:"Edit Group",action:"status dark"});$(editButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showGroupPickerPopup",user]));var deleteButton=new ButtonMedium({displayName:"Delete Contact",action:"cross"});var name="contactDelete_"+user.username;var title="Delete "+user.fullname;var message="Are you sure you want to delete "+user.fullname+" from your contacts?";var func=pipio.dispatchEvent.bind(pipio,["connectionDelete",user.username]);$(deleteButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showConfirmation",name,title,message,func]));new Element("div",{"class":"actions"}).adopt($(viewButton),$(editButton),$(deleteButton)).inject(el);return el;},createContactRequestItem:function(user){var el=ItemUtility.createPostBubble("post contact",true);ItemUtility.createProfilePic(user,60).inject(el);var header=new Element("div",{"class":"heading"}).inject(el);var username=new Element("span",{"class":"user_name clickable","text":TextUtility.unescape(user.fullname)}).inject(header);username.addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var status=new Element("span",{"class":"status status_msg_"+user.username}).inject(header);if(user.status_message.status.trim()!=""){status.set("text"," "+TextUtility.unescape(user.status_message.status.trim()));}var viewButton=new ButtonMedium({displayName:"View Profile",action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var acceptButton=new ButtonMedium({displayName:"Accept Request",action:"check"});$(acceptButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["connectionRequestAccept",user.username]));var deleteButton=new ButtonMedium({displayName:"Delete Request",action:"cross"});$(deleteButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["connectionRequestDelete",user.username]));new Element("div",{"class":"actions"}).adopt($(viewButton),$(acceptButton),$(deleteButton)).inject(el);return el;},createRoomMemberItemFactory:function(room,isAdmin){return function(user){return ContactItemUtility.createRoomMemberItem.run([user,room,isAdmin]);};},createRoomMemberItem:function(user,room,isAdmin){var el=ItemUtility.createPostBubble("post contact",true);ItemUtility.createProfilePic(user,60).inject(el);var header=new Element("div",{"class":"heading"}).inject(el);var username=new Element("span",{"class":"user_name clickable","text":TextUtility.unescape(user.fullname)}).inject(header);username.addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var status=new Element("span",{"class":"status status_msg_"+user.username}).inject(header);if(user.status_message.status.trim()!=""){status.set("text"," "+TextUtility.unescape(user.status_message.status.trim()));}if(isAdmin&&user.user_id!=pipio.currentUser.user_id){var viewButton=new ButtonMedium({displayName:"View Profile",action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var removeButton=new ButtonMedium({displayName:"Remove Member",action:"cross"});$(removeButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["feedRoomKick",user.username,room.username]));new Element("div",{"class":"actions"}).adopt($(viewButton),$(removeButton)).inject(el);}else{var viewButton=new ButtonMedium({displayName:"View Profile",action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));new Element("div",{"class":"actions"}).adopt($(viewButton)).inject(el);}return el;},createRoomSubscriberItem:function(user){var el=ItemUtility.createPostBubble("post contact",true);ItemUtility.createProfilePic(user,60).inject(el);var header=new Element("div",{"class":"heading"}).inject(el);var username=new Element("span",{"class":"user_name clickable","text":TextUtility.unescape(user.fullname)}).inject(header);username.addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var status=new Element("span",{"class":"status status_msg_"+user.username}).inject(header);if(user.status_message.status.trim()!=""){status.set("text"," "+TextUtility.unescape(user.status_message.status.trim()));}var viewButton=new ButtonMedium({displayName:"View Profile",action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));new Element("div",{"class":"actions"}).adopt($(viewButton)).inject(el);return el;},createRoomRequestItemFactory:function(room){return function(user){return ContactItemUtility.createRoomRequestItem.run([user,room]);};},createRoomRequestItem:function(user,room){var el=ItemUtility.createPostBubble("post contact",true);ItemUtility.createProfilePic(user,60).inject(el);var header=new Element("div",{"class":"heading"}).inject(el);var username=new Element("span",{"class":"user_name clickable","text":TextUtility.unescape(user.fullname)}).inject(header);username.addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var status=new Element("span",{"class":"status status_msg_"+user.username}).inject(header);if(user.status_message.status.trim()!=""){status.set("text"," "+TextUtility.unescape(user.status_message.status.trim()));}var viewButton=new ButtonMedium({displayName:"View Profile",action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));var removeButton=new ButtonMedium({displayName:"Reject Member",action:"cross"});$(removeButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["feedRoomRequestDelete",user.username,room.username]));var acceptButton=new ButtonMedium({displayName:"Accept Member",action:"check"});$(acceptButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["feedRoomRequestAccept",user.username,room.username]));new Element("div",{"class":"actions"}).adopt($(viewButton),$(removeButton),$(acceptButton)).inject(el);return el;}};var Facebook=new Class({Extends:App,EventHandlers:["facebookInstall","facebookUninstall","facebookShowUserFeed","facebookShowUserAlbums","facebookTaggedPhotos","userSwitched"],parseOptions:function(options){this.settings=options.settings;},userSwitched:function(){if(!this.isLoggedIn()){this.userLoggedOut();}},userLoggedOut:function(){FB.Connect.logout();this.stop();},onStart:function(){this.appId=5;FB_RequireFeatures(["Connect"],function(){FB.Facebook.init("d29a9328a49d798da896066499c0d9d8","/xd_receiver.htm",{"forceBrowserPopupForLogin":true,"doNotUseCachedConnectState":true});});this.appsInstalled=UserUtility.getInstalledApps();if($defined(this.appsInstalled[this.appId])){this.external_user_id=this.appsInstalled[this.appId];}this.setupNav();this.albums=$H();},onStop:function(){},userLoggedIn:function(){},userLoggedOut:function(){this.stop();},facebookInstall:function(){this.facebookInstallPopup=new Popup({size:{x:350,y:80},resizable:false,dockable:false,className:"appInstall",onClose:this.destroyFacebookInstallPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"facebook"},displayName:"Install Facebook",closable:true});var content=new FacebookInstallPopupContent({});this.facebookInstallPopup.addContent("facebook_install",nav,content);},destroyFacebookInstallPopup:function(){this.facebookInstallPopup=null;},facebookUninstall:function(app){this.call("facebook","facebook_disable",null,this.facebookUninstallSuccess.bind(this),null);},facebookUninstallSuccess:function(data){this.stop();},facebookShowUserFeed:function(user){this.userAdd(user);},facebookShowUserAlbums:function(user){this.userAlbumsAdd(user);},facebookTaggedPhotos:function(uid){var newAlbum=new Album({id:uid});this.albums.set(uid,newAlbum);var params={user_id:uid,aid:""};this.call("facebook","facebook_photos",params,this.facebookTaggedPhotosSuccess.bind(this),this.facebookTaggedPhotosFail.bind(this));},facebookTaggedPhotosSuccess:function(data){if(!$defined(data.photos)){return;}var album=this.albums.get(data.uid);data.photos.each(function(photo){album.addPhoto(photo.pid,photo.src,photo.src_big,photo.caption);photo.auid=photo.uid;},this);var photo=album.getPhoto(data.photos[0].pid);this.fireEvent("viewAlbum",album,photo,data.uid);},facebookTaggedPhotosFail:function(data){}});Facebook.implement({requests:[{name:"facebook_enable",params:["sync_posts","session_key","uid"],url:"/api/app/facebook/account/enable"},{name:"facebook_disable",url:"/api/app/facebook/account/disable"},{name:"facebook_friends_info",params:["uid","limit","sort_field","number"],url:"/api/app/facebook/friends/info"},{name:"facebook_newsfeed_load",params:["start_time","end_time"],url:"/api/app/facebook/newsfeed/load"},{name:"facebook_user_show",params:["user_id"],url:"/api/app/facebook/user/profile_load"},{name:"facebook_user_feed",params:["user_id","start_time","end_time"],url:"/api/app/facebook/user/newsfeed_load"},{name:"facebook_settings_update",params:["key","value"],url:"/api/app/facebook/settings/update"},{name:"facebook_albums",params:["user_id","num_photos"],url:"/api/app/facebook/albums/get"},{name:"facebook_photos",params:["user_id","aid"],url:"/api/app/facebook/photos/get"},{name:"facebook_notification_send",params:["user_id","message"],url:"/api/app/facebook/notification/send"},{name:"facebook_post_text",params:["body","post_id","target_id"],url:"/api/app/facebook/text/item_create"},{name:"facebook_post_link",params:["body","url","post_id","target_id"],url:"/api/app/facebook/link/item_create"},{name:"facebook_post_photo",params:["body","photo","post_id","target_id"],url:"/api/app/facebook/photo/item_create",multipart:true},{name:"facebook_comments",params:["post_id"],url:"/api/app/facebook/comments/get"},{name:"facebook_feed_delete",params:["post_id","created_time"],url:"/api/app/facebook/item/delete"},{name:"facebook_settings_get",url:"/api/app/facebook/settings/get"},{name:"facebook_contacts_list",params:["uid","limit","sort_field","number"],url:"/api/app/facebook/friends/info"},{name:"facebook_post_like",params:["post_id","like_count"],url:"/api/app/facebook/like"},{name:"facebook_post_unlike",params:["post_id","like_count"],url:"/api/app/facebook/unlike"}]});Facebook.implement({setupNav:function(){this.users=$H();this.fb_albums=$H();this.navAdd(new Nav({iconOptions:{iconName:"updates"},displayName:"News Feed",name:"updates",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"updates","fb_self_menu"])}));this.navAdd(new Nav({iconOptions:{iconName:"profile_pic"},displayName:"My Wall",name:"wall",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"wall","fb_self_menu"])}));this.navAdd(new Nav({iconOptions:{iconName:"profile_pic"},displayName:"Friends",name:"friends",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"friends","fb_self_menu"])}));this.navAdd(new Nav({iconOptions:{iconName:"photo"},displayName:"My Albums",name:"albums",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"albums","fb_self_menu"])}));var user=this.getPrivateUser();var fbSelfMenu=new FacebookSelfMenu({user:user,isDefault:true,uid:this.settings.uid,closeFunc:this.stop.bind(this)});this.menuAdd("fb_self_menu",fbSelfMenu);var content=new FacebookFeedContent({isDefault:true});this.contentAdd("updates",content);var friendsContent=new FacebookFriendContent({user:user,uid:this.settings.uid});this.contentAdd("friends",friendsContent);var wallContent=new FacebookWallContent({user:user,uid:this.settings.uid});this.contentAdd("wall",wallContent);var albumsContent=new FacebookAlbumContent({uid:this.settings.uid});this.contentAdd("albums",albumsContent);},userClose:function(uid){if(!this.users.has(uid)){return;}this.users.get(uid).destroy();this.navDelete(uid);this.users.erase(uid);this.menuClose(uid);this.contentClose(uid);if(this.users.getLength()==0){this.navDelete("users");this.usersNav=null;}},userAdd:function(user){if(!$defined(this.usersNav)){this.usersNav=new Nav({iconOptions:{iconName:"users"},hasSubnavs:true,displayName:"Users",name:"users"});this.navAdd(this.usersNav);}var nav=new Nav({iconOptions:{iconName:user.pic},displayName:user.username,closable:true,name:user.uid,parentName:"users",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,user.uid,user.uid])});this.navAdd(nav);this.users.set(user.uid,nav);var userContent=new FacebookUserContent({uid:user.uid});this.contentAdd(user.uid,userContent);var fbUserMenu=new FacebookUserMenu({user:user,uid:user.uid,closeFunc:this.userClose.bind(this,[user.uid])});this.menuAdd(user.uid,fbUserMenu);this.fireEvent("viewSwitch",this.appId,user.uid,user.uid);},albumClose:function(uid){if(!this.fb_albums.has(uid)){return;}this.fb_albums.get(uid).destroy();this.navDelete(uid+"_albums");this.fb_albums.erase(uid);this.menuClose(uid+"_albums");this.contentClose(uid+"_albums");if(this.fb_albums.getLength()==0){this.navDelete("albums");this.userAlbumNav=null;}},userAlbumsAdd:function(user){if(!$defined(this.userAlbumNav)){this.usersAlbumNav=new Nav({iconOptions:{iconName:"photo"},hasSubnavs:true,displayName:"Albums",name:"fb_albums"});this.navAdd(this.usersAlbumNav);}var nav=new Nav({iconOptions:{iconName:user.pic_square},displayName:user.name,closable:true,name:user.uid+"_albums",parentName:"fb_albums",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,user.uid+"_albums",user.uid])});this.navAdd(nav);this.fb_albums.set(user.uid,nav);var userAlbumContent=new FacebookAlbumContent({uid:user.uid});this.contentAdd(user.uid+"_albums",userAlbumContent);var fbUserMenu=new FacebookUserMenu({user:user,uid:user.uid,closeFunc:this.albumClose.bind(this,[user.uid])});this.menuAdd(user.uid+"_albums",fbUserMenu);this.fireEvent("viewSwitch",this.appId,user.uid+"_albums",user.uid);}});var FacebookAlbumContent=new Class({Extends:Content,EventHandlers:["facebookAlbumView"],onBeforeInit:function(options){this.uid=options.uid;options.displayName="Facebook Albums";return options;},onInit:function(){this.albums=$H();this.albumsLoader=new ItemLoader({idField:"aid",sortField:"modified_major",createElementFunc:FacebookAlbumUtility.createFacebookAlbumItem,emptyEl:new Element("div",{"class":"post empty","text":"There are no albums here"}),errorEl:new Element("div",{"class":"post empty","text":"You are not able to view these albums"})});$(this.albumsLoader).inject(this.content);},onShow:function(first){if(first){this.getFacebookAlbums();}},onHide:function(){},getFacebookAlbums:function(){var params={user_id:this.uid};this.call("facebook","facebook_albums",params,this.facebookGetAlbumsSuccess.bind(this),this.facebookGetAlbumsFail.bind(this));},facebookGetAlbumsSuccess:function(data){if($defined(data.albums)){data.albums.albums.each(function(album){var pid=album.cover_pid;album.coverSrc=data.albums.sources[pid];this.albumsLoader.process(album);},this);}},facebookGetAlbumsFail:function(data){this.albumsLoader.showError();},facebookAlbumView:function(album){var newAlbum=new Album({id:album.aid});this.albums.set(album.aid,newAlbum);var params={user_id:"",aid:album.aid};this.call("facebook","facebook_photos",params,this.facebookAlbumViewSuccess.bind(this),null);},facebookAlbumViewSuccess:function(data){if(!$defined(data.photos)){return;}var album=this.albums.get(data.aid);data.photos.each(function(photo){album.addPhoto(photo.pid,photo.src,photo.src_big,photo.caption);photo.auid=photo.aid;},this);var photo=album.getPhoto(data.photos[0].pid);this.fireEvent("viewAlbum",album,photo,data.aid);}});var FacebookFeedContent=new Class({Extends:Content,EventHandlers:["facebookItemDelete","facebookItemLike","facebookCommentsShow","facebookSelfData","facebookCommentsUpdated","facebookFeed"],onInit:function(){this.loader=new ItemLoader({idField:"post_id",sortField:"created_time",sortAscending:false,createElementFunc:FacebookFeedItemUtility.createFacebookFeedItem,emptyEl:new Element("div",{"class":"post empty","text":"You have no updates"})});$(this.loader).inject(this.content);this.comments=new Hash();this.commentLoaders=new Hash();this.posts=new Hash();},onShow:function(first){if(first){this.startPoll();}},onHide:function(){},facebookSelfData:function(user){this.statusBox=new FacebookStatusBox(user,true);$(this.statusBox).inject(this.content,"top");},startPoll:function(){if(!$defined(this.pollTimer)){this.pollTimer=this.facebookFeed.periodical(55*1000,this);this.facebookFeed();}},facebookFeed:function(){var startTime=this.loader.lowestSortValue;var params={start_time:startTime,end_time:0};this.call("facebook","facebook_newsfeed_load",params,this.loadMoreSuccess.bind(this),null);},loadMore:function(){var endTime=this.loader.lowestSortValue;var startTime=parseInt(endTime)-259200;var params={start_time:startTime,end_time:endTime};this.call("facebook","facebook_newsfeed_load",params,this.loadMoreSuccess.bind(this),null);},loadMoreSuccess:function(data){if(!$defined(data)||data.length==0){this.atBottom=true;return;}data.each(function(item){this.loader.process(item);this.processComments(item);},this);this.bottomFuncCalled=false;},processComments:function(item){if(this.posts.has(item.post_id)){if(this.posts.get(item.post_id)!=item.comment_count){$$(".comments_"+item.post_id).each(function(el){var commentText=TextUtility.pluralText(item.comment_count,"Comment","Comments");el.set("comments",item.comment_count);el.empty();el.adopt(new Element("div",{"class":"action convo"}));el.appendText(commentText);});}var likePost=$$(".likes_"+item.post_id);if($defined(likePost[0])){var likesCount=parseInt(likePost[0].get("likes"));if(likesCount!=parseInt(item.like_count)){this.facebookItemLikeSuccess({post_id:item.post_id,liked:item.user_likes,like_count:item.like_count});}}}else{this.posts.set(item.post_id,item.comment_count);}},bottomFunc:function(){Logger().log("facebook content bottom");this.loadMore();},facebookItemDelete:function(post_id,created_time){var params={"post_id":post_id,"created_time":created_time};this.call("facebook","facebook_feed_delete",params,this.facebookItemDeleteSuccess.bind(this),null);},facebookItemDeleteSuccess:function(data){if(!$defined(data.post_id)){return;}this.loader.remove(data.post_id);},facebookItemLike:function(post_id,likeEl){var user_likes=parseInt(likeEl.get("is_liked"));var like_count=parseInt(likeEl.get("likes"));var params={"post_id":post_id,"like_count":like_count};if(parseInt(user_likes)==0){this.call("facebook","facebook_post_like",params,this.facebookItemLikeSuccess.bind(this),null);}else{this.call("facebook","facebook_post_unlike",params,this.facebookItemLikeSuccess.bind(this),null);}},facebookItemLikeSuccess:function(data){if(!$defined(data.post_id)){return;}$$(".likes_"+data.post_id).each(function(el){el.set("likes",data.like_count);if(data.liked!=-1){el.set("is_liked",data.liked);}el.empty();new Element("div",{"class":"text grey text11","text":data.like_count,"likes":data.like_count}).inject(el);if(data.like_count>0){el.addClass("other_liked");}else{el.removeClass("other_liked");}if(data.liked!=-1){if(data.liked==1){el.addClass("on");}else{el.removeClass("on");}}});},facebookCommentsShow:function(el,post_id){if(this.comments.has(post_id)){this.facebookCommentsHide(post_id);}else{this.comments.set(post_id,el);var commentsLoader=new ItemLoader({idField:"id",sortField:"time",sortAscending:true,createElementFunc:FacebookCommentItemUtility.createFacebookCommentItem});$(commentsLoader).inject(el,"after");this.commentLoaders.set(post_id,commentsLoader);var params={"post_id":post_id};this.call("facebook","facebook_comments",params,this.facebookCommentsSuccess.bind(this),null);}},facebookCommentsUpdated:function(post_id){var params={"post_id":post_id};this.call("facebook","facebook_comments",params,this.facebookCommentsSuccess.bind(this),null);},facebookCommentsHide:function(post_id){var loader=this.commentLoaders.get(post_id);loader.items.each(function(value,key){loader.remove(key);},this);this.commentLoaders.erase(post_id);this.comments.erase(post_id);},facebookCommentsSuccess:function(data){if(!$defined(data.post_id)){return;}var loader=this.commentLoaders.get(data.post_id);if(!$defined(data.comment_list)||data.comment_list.length==0){this.atBottom=true;return;}data.comment_list.each(function(item){loader.process(item);},this);this.bottomFuncCalled=false;}});var FacebookFriendContent=new Class({Extends:Content,EventHandlers:[],onBeforeInit:function(options){this.user=options.user;this.uid=options.uid;},onInit:function(){this.loader=new ItemLoader({idField:"uid",sortField:"last_name",createElementFunc:FacebookFriendItemUtility.createFacebookFriendItem,emptyEl:new Element("div",{"class":"post empty","text":"You have no friends!"})});$(this.loader).inject(this.content);},onShow:function(first){if(first){var params={"uid":this.uid,"limit":50,"sort_field":"last_name","number":""};this.call("facebook","facebook_friends_info",params,this.facebookFriendsSuccess.bind(this),null);}},onHide:function(){},facebookFriendsSuccess:function(data){if(!$defined(data)||data.length==0){return;}data.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){var curBatch=this.loader.count();var nextBatch=curBatch+50;var params={"uid":this.uid,"limit":curBatch+","+nextBatch,"sort_field":"last_name","number":""};this.call("facebook","facebook_friends_info",params,this.facebookFriendsSuccess.bind(this),null);}});var FacebookUserContent=new Class({Extends:Content,EventHandlers:["facebookUserData"],onBeforeInit:function(options){this.uid=options.uid;this.name=options.username;options.displayName=options.username;return options;},onInit:function(){this.loader=new ItemLoader({idField:"post_id",sortField:"created_time",sortAscending:false,createElementFunc:FacebookFeedItemUtility.createFacebookFeedItem,emptyEl:new Element("div",{"class":"post empty","text":"This user has no updates"})});$(this.loader).inject(this.content);if($defined(this.uid)){this.startPoll();}},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},startPoll:function(){if(!$defined(this.userPollTimer)){this.userPollTimer=this.fbUserFeed.periodical(55*1000,this);this.fbUserFeed();}},fbUserFeed:function(){var startTime=this.loader.lowestSortValue;var params={user_id:this.uid,start_time:startTime,end_time:0};this.call("facebook","facebook_user_feed",params,this.loadMoreSuccess.bind(this),null);},facebookUserData:function(user){if((user.uid!=this.uid)||($defined(this.statusBox))){return;}this.statusBox=new FacebookStatusBox(user,false);$(this.statusBox).inject(this.content,"top");},loadMore:function(){var endTime=this.loader.lowestSortValue;var startTime=parseInt(endTime)-259200;var params={user_id:this.uid,start_time:startTime,end_time:endTime};this.call("facebook","facebook_user_feed",params,this.loadMoreSuccess.bind(this),null);},loadMoreSuccess:function(data){if(!$defined(data.feed)||data.feed.length==0){this.atBottom=true;return;}data.feed.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){Logger().log("facebook content bottom");this.loadMore();}});var FacebookWallContent=new Class({Extends:Content,EventHandlers:["facebookSelfData"],onBeforeInit:function(options){this.uid=options.uid;options.displayName=options.username;return options;},onInit:function(){this.loader=new ItemLoader({idField:"post_id",sortField:"created_time",sortAscending:false,createElementFunc:FacebookFeedItemUtility.createFacebookFeedItem,emptyEl:new Element("div",{"class":"post empty","text":"You have no updates"})});$(this.loader).inject(this.content);if($defined(this.uid)){this.startPoll();}},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},startPoll:function(){if(!$defined(this.wallPollTimer)){this.wallPollTimer=this.fbUserFeed.periodical(55*1000,this);this.fbUserFeed();}},fbUserFeed:function(){var startTime=this.loader.lowestSortValue;var params={user_id:this.uid,start_time:startTime,end_time:0};this.call("facebook","facebook_user_feed",params,this.loadMoreSuccess.bind(this),null);},facebookSelfData:function(user){if($defined(this.statusBox)){return;}this.statusBox=new FacebookStatusBox(user,true);$(this.statusBox).inject(this.content,"top");},loadMore:function(){var endTime=this.loader.lowestSortValue;var startTime=parseInt(endTime)-259200;var params={user_id:this.uid,start_time:startTime,end_time:endTime};this.call("facebook","facebook_user_feed",params,this.loadMoreSuccess.bind(this),null);},loadMoreSuccess:function(data){if(!$defined(data.feed)||data.feed.length==0){this.atBottom=true;return;}data.feed.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){Logger().log("facebook content bottom");this.loadMore();}});var FacebookShareBox=new Class({Extends:Base,EventHandlers:["userSwitched","facebookShareBoxShow","facebookCommentBoxShow"],init:function(){this.shareboxes=$H();},userSwitched:function(){if(!this.isLoggedIn()){this.userLoggedOut();}},userLoggedOut:function(){this.shareboxes.each(function(sharebox,key){sharebox.close();this.shareboxes.erase(key);},this);this.shareboxes=$H();},facebookShareBoxShow:function(user,isSelf){if($defined(this.sharebox)){this.sharebox.close();}this.createShareBox(user,isSelf);},createShareBox:function(user,isSelf){this.sharebox=new Popup({size:{x:500,y:100},resizable:false,dockable:false,className:"facebook sharebox",onClose:this.destroyShareBox.bind(this)});var displayName=(isSelf)?"Write in Your Facebook Feed":"Write on "+user.first_name+"'s Wall";var nav=new Nav({iconOptions:{iconName:user.pic_square},displayName:displayName,closable:true});var content=new FacebookShareBoxPopupContent({user:user,is_self:isSelf});this.sharebox.addContent("sharebox",nav,content);},facebookCommentBoxShow:function(post_id){if($defined(this.commentbox)){this.commentbox.close();}this.createCommentBox(post_id);},createCommentBox:function(post_id){this.sharebox=new Popup({size:{x:500,y:100},resizable:false,dockable:false,className:"facebook sharebox",onClose:this.destroyShareBox.bind(this)});var displayName="Comment on a post";var nav=new Nav({iconOptions:{iconName:"updates"},displayName:displayName,closable:true});var content=new FacebookShareBoxPopupContent({post_id:post_id,is_self:true});this.sharebox.addContent("sharebox",nav,content);},destroyShareBox:function(name){this.sharebox=null;}});var FacebookShareBoxPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.user=options.user;this.post_id=options.post_id;if(!options.is_self){this.target_id=this.user.uid;}return options;},reset:function(){Logger().log("resetting");this.closeAttachmentPopup();this.content.empty();this.onInit();},onInit:function(){this.formEl=null;this.isPublic=true;this.readyToPost=false;this.input=new Element("textarea",{"maxlength":2000});this.input.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.input).inject(this.content);this.cancelButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});$(this.cancelButton).addEvent("click",this.closeContent.bind(this));this.updateButton=new ButtonMedium({displayName:"Post",className:"dark",action:"check"});$(this.updateButton).addEvent("click",this.post.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.updateButton),$(this.cancelButton)).inject(this.content);this.focus();},inputKeyUp:function(e){if(e.shift&&e.key=="enter"){e.preventDefault();this.post();}if(DomUtility.textareaAutoSize(e.target,40)){this.updateSize();}},updateSize:function(){var h=this.input.getSize().y+10;h+=this.actions.getSize().y+30;this.resizePopup(500,h);},post:function(){var body=this.input.value.trim();Logger().log(body);if(body==""&&this.attachment.type==AttachmentType.None){this.fireEvent("showAlert","empty_post","Problem Posting","Please enter some content to post.");return;}if(!$defined(this.post_id)){this.post_id="";}if(!$defined(this.target_id)){this.target_id=0;}var params={"body":body,"post_id":this.post_id,"target_id":this.target_id};this.call("facebook","facebook_post_text",params,this.postSuccess.bind(this),this.postFail.bind(this),this.formEl);this.updateButton.showProgress();},postSuccess:function(){this.updateButton.hideProgress();this.closeContent();if($defined(this.post_id)){this.fireEvent("facebookCommentsUpdated",this.post_id);}this.fireEvent("facebookFeed");},postFail:function(){this.updateButton.hideProgress();},onShow:function(){this.focus();},focus:function(){this.input.focus.delay(500,this.input);}});var FacebookStatusBox=new Class({Extends:Base,EventHandlers:[],init:function(user,isSelf){this.user=user;this.isSelf=isSelf;this.defaultStatus="has no current status";this.createStatusBox();},createStatusBox:function(){this.box=ItemUtility.createPostBubble("post status_message haspic");ItemUtility.createItemPic(this.user.pic_square).inject(this.box);var buttonText=this.isSelf?"Write in Your Feed":"Write on "+this.user.first_name+"'s Wall";this.writeButton=new Element("div",{"class":"button","text":TextUtility.unescape(buttonText)}).inject(this.box);this.writeButton.addEvent("click",this.fireEvent.bind(this,["facebookShareBoxShow",this.user,this.isSelf]));this.content=new Element("div",{"class":"post_content"}).inject(this.box);var header=new Element("div",{"class":"header"}).inject(this.content);var creator=new Element("span",{"class":"user_name","text":TextUtility.unescapeQuotes(this.user.name)}).inject(header);this.status=new Element("span",{"class":"status"}).inject(header);this.updateStatus();},updateStatus:function(){if($defined(this.user.status.message)&&this.user.status.message!=""){this.status.removeClass("empty");this.status.set("text"," "+TextUtility.unescape(this.user.status.message.trim()));}else{this.status.addClass("empty");this.status.set("text"," "+TextUtility.unescape(this.defaultStatus));}},toElement:function(){return this.box;}});var FacebookUserMenu=new Class({Extends:Menu,onBeforeInit:function(options){this.uid=options.user.uid;this.name=options.user.username;options.displayName=this.name;options.className="facebook";this.pic=options.user.pic;this.user=options.user;return options;},onInit:function(){this.aboutSection=new Element("div",{"class":"text_section light1"}).inject(this.menu);this.call("facebook","facebook_user_show",{user_id:this.uid},this.profileShowSuccess.bind(this),null);},profileShowSuccess:function(data){if(!$defined(data)||data==""){return;}this.user=data;if(data.pic_square==""){data.pic_square;}this.pic=new Element("div",{"class":"user_pic"}).inject(this.menu);ItemUtility.createItemPic(data.pic_square).inject(this.pic);var location="";if($defined(data.current_location.city)){location=data.current_location.city;if($defined(data.current_location.state)){location=location+", "+data.current_location.state;}}else{if($defined(data.current_location.state)){location=data.current_location.state;}else{if($defined(data.current_location.country)){location+=" "+data.current_location.country;}}}if(location!=""){this.locSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Location: "}),new Element("span",{"text":location})).inject(this.menu);}if($defined(data.affiliations)&&data.affiliations.length>0){var networks="";for(var i=0;i<data.affiliations.length-1;i++){networks+=data.affiliations[i].name+", ";}networks+=data.affiliations[i].name;this.networksSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Networks: "}),new Element("span",{"text":networks})).inject(this.menu);}if($defined(data.sex)&&data.sex!=""){this.genderSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Gender: "}),new Element("span",{"text":data.sex})).inject(this.menu);}if($defined(data.birthday)&&data.birthday!=""){this.genderSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Birthday: "}),new Element("span",{"text":data.birthday})).inject(this.menu);}if($defined(data.relationship_status)&&data.relationship_status!=""){this.relationSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Relationship Status: "}),new Element("span",{"text":data.relationship_status})).inject(this.menu);}this.fireEvent("facebookUserData",data);}});var FacebookSelfMenu=new Class({Extends:Menu,onBeforeInit:function(options){this.appId=5;this.user=options.user;options.displayName=this.user.fullname;options.className="facebook";this.fb_uid=options.uid;return options;},onInit:function(){this.aboutSection=new Element("div",{"class":"text_section light1"}).inject(this.menu);this.call("facebook","facebook_user_show",{user_id:this.fb_uid},this.profileShowSuccess.bind(this),null);},profileShowSuccess:function(data){if(!$defined(data)||data==""){return;}this.user=data;if(data.pic_square==""){data.pic_square;}this.pic=new Element("div",{"class":"user_pic"}).inject(this.menu);ItemUtility.createItemPic(data.pic_square).inject(this.pic);var location="";if($defined(data.current_location.city)){location=data.current_location.city;if($defined(data.current_location.state)){location=location+", "+data.current_location.state;}}else{if($defined(data.current_location.state)){location=data.current_location.state;}else{if($defined(data.current_location.country)){location+=" "+data.current_location.country;}}}if(location!=""){this.locSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Location: "}),new Element("span",{"text":location})).inject(this.menu);}if($defined(data.affiliations)&&data.affiliations.length>0){var networks="";for(var i=0;i<data.affiliations.length-1;i++){networks+=data.affiliations[i].name+", ";}networks+=data.affiliations[i].name;this.networksSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Networks: "}),new Element("span",{"text":networks})).inject(this.menu);}if($defined(data.sex)&&data.sex!=""){this.genderSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Gender: "}),new Element("span",{"text":data.sex})).inject(this.menu);}if($defined(data.birthday)&&data.birthday!=""){this.genderSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Birthday: "}),new Element("span",{"text":data.birthday})).inject(this.menu);}if($defined(data.relationship_status)&&data.relationship_status!=""){this.relationSection=new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Relationship Status: "}),new Element("span",{"text":data.relationship_status})).inject(this.menu);}this.call("facebook","facebook_settings_get",{},this.settingsGetSuccess.bind(this),null);this.fireEvent("facebookSelfData",data);},settingsGetSuccess:function(data){if(!$defined(data.settings.sync_posts)){return;}this.sync_posts=data.settings.sync_posts;new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.syncPosts=new Toggle(this.sync_posts==1);$(this.syncPosts).addEvent("click",this.syncToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Sync Posts:"}),$(this.syncPosts)).inject(this.menu);},syncToggle:function(){var params={key:"sync_posts",value:this.syncPosts.toInt()};this.call("facebook","facebook_settings_update",params);}});var FacebookInstallPopupContent=new Class({Extends:PopupContent,strings:{postSyncLabel:"Sync posts to Facebook:",errorMessage:"There was an error connecting to Facebook"},onInit:function(){this.appId=5;FB_RequireFeatures(["Connect"],function(){FB.Facebook.init("d29a9328a49d798da896066499c0d9d8","/xd_receiver.htm",{"forceBrowserPopupForLogin":true,"doNotUseCachedConnectState":true});});this.syncPostsToggle=new Toggle(true);new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.postSyncLabel}),$(this.syncPostsToggle)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Install Facebook",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.facebookConnect.bind(this));this.message=new Element("div",{"class":"message error"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},facebookConnect:function(){FB.Connect.requireSession(this.facebookGetPermission.bind(this),this.facebookConnectFail.bind(this));},facebookGetPermission:function(){FB.Connect.showPermissionDialog("offline_access,publish_stream,read_stream,status_update,email,xmpp_login",this.facebookEnable.bind(this));},facebookEnable:function(){this.fb_session=FB.Facebook.apiClient.get_session();var sync=this.syncPostsToggle.toInt();var params={sync_posts:this.syncPostsToggle.toInt(),session_key:this.fb_session.session_key,uid:this.fb_session.uid};this.call("facebook","facebook_enable",params,this.facebookEnableSuccess.bind(this),null);},facebookEnableSuccess:function(){this.closeContent();},facebookConnectFail:function(){var name="facebook_connect";var title="Error Connecting to Facebook";var message=this.strings.errorMessage;this.fireEvent("showAlert",name,title,message);}});var FacebookAlbumUtility={createFacebookAlbumItem:function(album){var el=ItemUtility.createPostBubble("post album",true);var thumb=new Element("div",{"class":"cover"}).adopt(new Element("img",{"src":album.coverSrc,"alt":album.description,"title":album.description})).inject(el);thumb.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookAlbumView",album]));var title=new Element("div",{"class":"user_name clickable","text":TextUtility.unescape(album.name)});var header=new Element("div",{"class":"heading"}).adopt(title).inject(el);title.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookAlbumView",album]));var size=new Element("span",{"class":"size","text":TextUtility.pluralText(album.size,"Photo","Photos")}).inject(header);var location=new Element("span",{"class":"location"}).inject(header);if(album.location.trim()!=""){location.set("text"," | "+TextUtility.unescape(album.location.trim()));}var description=new Element("div",{"class":"description"}).inject(el);if(album.description.trim()!=""){description.set("text"," "+TextUtility.unescape(album.description.trim()));}var viewButton=new ButtonMedium({displayName:"View Album",action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookAlbumView",album]));new Element("div",{"class":"actions"}).adopt($(viewButton)).inject(el);return el;}};var FacebookCommentItemUtility={createFacebookCommentItem:function(item){var el=ItemUtility.createPostBubble("post haspic fbComment");ItemUtility.createItemPic(item.profile_pic).inject(el);var content=new Element("div",{"class":"post_content"}).inject(el);FacebookCommentItemUtility.createFacebookItemHeader(item).inject(content);FacebookCommentItemUtility.createFacebookItemFooter(item).inject(content);return el;},createFacebookItemHeader:function(item){var el=new Element("div",{"class":"header"});var user={username:item.name,uid:item.fromid,pic:item.profile_pic};var creatorName=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(item.name)}).inject(el);creatorName.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookShowUserFeed",user]));if($defined(item.text)&&item.text!=""){new Element("span",{"html":" "+TextUtility.replaceUrls(TextUtility.stripHtml(TextUtility.unescape(item.text)))}).inject(el);}return el;},createFacebookItemFooter:function(item){var el=new Element("div",{"class":"footer"});if(!$defined(item.time)){return el;}var date=DateUtility.convertFromTimestamp(item.time);var ts=new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D at %I:%M%p"),"ts":date,"ts_format":"%B %D at %I:%M%p"}).inject(el);return el;}};var FacebookFeedItemUtility={createFacebookFeedItem:function(item){var el=ItemUtility.createPostBubble("post haspic");ItemUtility.createItemPic(item.profile_pic).inject(el);var content=new Element("div",{"class":"post_content facebook"}).inject(el);FacebookFeedItemUtility.createFacebookItemHeader(item).inject(content);FacebookFeedItemUtility.createFacebookItemBody(item).inject(content);FacebookFeedItemUtility.createFacebookItemFooter(item,el).inject(content);FacebookFeedItemUtility.createFacebookItemActions(item).inject(el);return el;},createFacebookItemHeader:function(item){var el=new Element("div",{"class":"header"});var user={username:item.name,uid:item.actor_id,pic:item.profile_pic};var target={username:item.target_name,uid:item.target_id,pic:""};var creatorName=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(item.name)}).inject(el);creatorName.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookShowUserFeed",user]));if(item.target_id>0){StreamItemUtility.createStreamUserAction("direct").inject(el);var targetName=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(item.target_name)}).inject(el);targetName.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookShowUserFeed",target]));}if($defined(item.message)&&item.message!=""){new Element("span",{"html":" "+TextUtility.replaceUrls(TextUtility.stripHtml(TextUtility.unescape(item.message)))}).inject(el);}return el;},createFacebookItemBody:function(item){var el=new Element("div",{"class":"body"});var fbUrl;if(item.attachment!=""&&$defined(item.attachment.media)&&$defined(item.attachment.media.length)){for(var i=0,n=item.attachment.media.length;i<n;i++){if(item.attachment.media[i].type=="photo"){fbUrl=DataUtility.getFacebookPhotoUrl(item.attachment.media[i].src);}else{fbUrl=item.attachment.media[i].src;}var image=new Element("img",{"src":item.attachment.media[i].src,"class":"fbPhoto"}).inject(el);var attachment={url:fbUrl,filename:"Facebook Photo"};image.addEvent("click",pipio.dispatchEvent.bind(pipio,["showPhotoPopup",attachment]));}new Element("br",{}).inject(el);}if($defined(item.attachment.name)){new Element("a",{"href":item.attachment.href,"target":"_blank","text":item.attachment.name}).inject(el);new Element("br",{}).inject(el);}new Element("span",{"text":item.attachment.description}).inject(el);return el;},createFacebookItemFooter:function(item,postElement){var el=new Element("div",{"class":"footer foot_"+item.post_id});if(!$defined(item.date_created)){return el;}var date=DateUtility.convertFromTimestamp(item.created_time);var ts=new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D at %I:%M%p"),"ts":date,"ts_format":"%B %D at %I:%M%p"}).inject(el);FacebookFeedItemUtility.createFacebookFooterActions(item,el,postElement);return el;},createFacebookFooterActions:function(item,el,postElement){var commentsAction=new Element("span",{"class":"footer_action has_action comments_"+item.post_id,"comments":item.comment_count}).adopt(new Element("div",{"class":"action convo"}));commentsAction.appendText(TextUtility.pluralText(item.comment_count,"Comment","Comments"));commentsAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookCommentsShow",postElement,item.post_id]));commentsAction.inject(el);var replyAction=FacebookFeedItemUtility.createFacebookFooterAction("reply","Comment",true);replyAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookCommentBoxShow",item.post_id]));replyAction.inject(el);},createFacebookItemActions:function(item){var el=new Element("div",{"class":"post_actions"});if(item.can_delete){var deleteAction=new Element("div",{"class":"post_action delete"}).inject(el);deleteAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookItemDelete",item.post_id,item.created_time]));}var likeAction=new Element("div",{"class":"post_action like likes_"+item.post_id,"is_liked":item.user_likes,"likes":item.like_count}).inject(el);likeAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookItemLike",item.post_id,likeAction]));new Element("div",{"class":"text grey text11","text":item.like_count,"likes":item.like_count}).inject(likeAction);if(item.like_count>0){likeAction.addClass("other_liked");}if(item.user_likes==1){likeAction.addClass("on");}return el;},createFacebookFooterAction:function(actionName,actionText,hide){var el=new Element("span",{"class":"footer_action has_action"}).adopt(new Element("div",{"class":"action "+actionName}));el.appendText(actionText);if(hide){el.addClass("hide");}return el;}};var FacebookFriendItemUtility={createFacebookFriendItem:function(user){var el=ItemUtility.createPostBubble("post contact",true);new Element("img",{"class":"profile_pic_wrapper_60 afb_profile_pic","src":user.pic}).inject(el);var username=new Element("div",{"class":"user_name clickable","text":TextUtility.unescape(user.username)});new Element("div",{"class":"heading"}).adopt(username).inject(el);username.addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookShowUserFeed",user]));var viewButton=new ButtonMedium({displayName:"View Wall",action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["facebookShowUserFeed",user]));new Element("div",{"class":"actions"}).adopt($(viewButton)).inject(el);return el;}};var Global=new Class({Extends:AppInstance,EventHandlers:["userSwitched"],parseOptions:function(options){this.location=options.location;this.displayName="global",this.appId="global_"+this.location.geohash;this.iconOptions={iconName:"location"};},userSwitched:function(){this.stop();},onStart:function(){this.setupNav();},onStop:function(){var params={geohashs:this.location.geohash,location:JSON.encode(this.location),zoom:4,subscribe:0};this.call("global","global_subscribe_delete",params);}});Global.implement({requests:[{name:"global_subscribe_add",params:["geohashs","location","zoom","subscribe"],url:"/api/pipio/global/subscribe/add"},{name:"global_subscribe_delete",params:["geohashs","location","zoom","subscribe"],url:"/api/pipio/global/subscribe/delete"}]});Global.implement({setupNav:function(){Logger().log("global setup");this.navAdd(new Nav({iconOptions:{iconName:"global"},displayName:"Updates",name:"updates",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"updates","global_menu"])}));var globalMenu=new GlobalMenu({location:this.location,isDefault:true,closeFunc:this.stop.bind(this)});this.menuAdd("global_menu",globalMenu);var content=new GlobalContent({isDefault:true,location:this.location});this.contentAdd("updates",content);}});var GlobalContent=new Class({Extends:Content,EventHandlers:["globalItemReceived"],onBeforeInit:function(options){this.location=options.location;},onInit:function(){this.loader=new StreamLoader({createElementFunc:StreamItemUtility.createUserStreamItem,emptyEl:new Element("div",{"class":"post empty","text":"This location has no updates"}),loadingEl:new Element("div",{"class":"post empty","text":"Updates loading..."})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},globalItemReceived:function(data){if(data.item.geohash.substring(0,4)==this.location.geohash.substring(0,4)){this.loader.process(data.item);}},loadMore:function(){var params={geohash:this.location.geohash.substring(0,4),date_created:this.loader.oldestTimestamp,item_id:this.loader.oldestId};this.call("home","stream_global_load",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(this.loader.empty){var params={geohashs:this.location.geohash,location:JSON.encode(this.location),zoom:4,subscribe:0};this.call("global","global_subscribe_add",params);}if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){this.loader.hideLoading();if(status.code==2002){this.loader.showError();}},bottomFunc:function(){this.loadMore();}});var GlobalMenu=new Class({Extends:Menu,EventHandlers:[],onBeforeInit:function(options){this.location=options.location;var locationLabel=DataUtility.getGeoLabel(this.location);var locationStr=DataUtility.getGeoLocality(this.location);if(locationLabel){locationStr=locationLabel+", "+locationStr;}options.displayName=locationStr;return options;},onInit:function(){this.map=new GlobalMapMenuSection({location:this.location});$(this.map).inject(this.menu);new Element("div",{"class":"text_section light1 text11","text":"You are viewing updates near this location"}).inject(this.menu);}});var Home=new Class({Extends:App,EventHandlers:["userSwitched","streamItemReplyCountUpdated","streamItemDelete","userStreamItemLiked","streamItemLike","roomProfilePicUpdated","feedRoomKick","feedRoomRequestAccept","feedRoomRequestDelete","feedRoomAdded","feedRoomDeleted","feedRoomDelete","showCreateRoomPopup","showRoomInvitePopup","showRoomStatusUpdatePopup","showEditProfilePopup","showEditRoomProfilePopup","showConvo"],onStart:function(){this.setupNav();this.initRooms();this.convos=$H();},onStop:function(){},userSwitched:function(){if(this.isLoggedIn()){this.start();}else{this.stop();}},onCreate:function(){this.closeButton.destroy();$("app_button_2").addEvent("click",this.switchDefault.bind(this));},dock:function(){DomUtility.hide(this.navSection);$(this.alert).inject("app_button_2");$("app_button_2").addClass("has_submenu");this.navWrapper.inject("app_button_2","after");$("app_button_2").removeEvents("click");$("app_button_2").addEvent("click",this.undock.bind(this));this.isDocked=true;},undock:function(){this.navWrapper.inject(this.navSection);$("app_button_2").removeClass("has_submenu");$("app_button_2").removeEvents("click");$("app_button_2").addEvent("click",this.switchDefault.bind(this));DomUtility.show(this.navSection);this.isDocked=false;if($defined(this.defaultContent)){this.fireEvent("viewSwitch",this.appId,this.defaultContent,this.defaultMenu);}},streamItemReplyCountUpdated:function(data){if(!$defined(data.item_id)||!$defined(data.count)){return;}StreamItemUtility.updateReplyCount(data.item_id,data.count);},userStreamItemLiked:function(data){if(!$defined(data.item)||!$defined(data.username)){return;}if(data.username==this.getPrivateUser().username){StreamItemUtility.updateItemLiked(data.item.item_id,data.likes,data.is_liked);}else{StreamItemUtility.updateItemLiked(data.item.item_id,data.likes,-1);}},streamItemLike:function(item_id,el){this.call("home","stream_item_like",{item_id:item_id},null,null);var is_liked=parseInt(el.get("is_liked"));var likes=parseInt(el.get("likes"));if(is_liked==1){StreamItemUtility.updateItemLiked(item_id,likes-1,0);}else{StreamItemUtility.updateItemLiked(item_id,likes+1,1);}},streamItemDelete:function(item_id){var name="stream_item_delete";var title="Delete Post";var message="Are you sure you want to delete this post?";var func=this.streamItemDeleteCall.bind(this,[item_id]);this.fireEvent("showConfirmation",name,title,message,func);},streamItemDeleteCall:function(item_id){var params={item_id:item_id};this.call("home","delete",params,null,null);},showRoom:function(room){if(this.rooms.has(room.username)){this.fireEvent("viewSwitch",this.appId,"room_"+room.username,"room_"+room.username);}else{var options={room:room};this.fireEvent("startAppInstance","room",room.username,options);}},roomProfilePicUpdated:function(data){if(!$defined(data.username)){return;}var room=this.getRoom(data.username);var room_id=room.room_id;var username=room.username;var version=UserUtility.profilePicVersionGet(room_id);version++;UserUtility.profilePicVersionSet(room_id,version);room.profile_pic_16=room.profile_pic_16.split("?")[0]+"?"+version;room.profile_pic_20=room.profile_pic_20.split("?")[0]+"?"+version;room.profile_pic_26=room.profile_pic_26.split("?")[0]+"?"+version;room.profile_pic_32=room.profile_pic_32.split("?")[0]+"?"+version;room.profile_pic_42=room.profile_pic_42.split("?")[0]+"?"+version;room.profile_pic_60=room.profile_pic_60.split("?")[0]+"?"+version;room.profile_pic_100=room.profile_pic_100.split("?")[0]+"?"+version;room.profile_pic_200=room.profile_pic_200.split("?")[0]+"?"+version;$$(".profile_pic_16_"+username).each(function(el){el.set("src",room.profile_pic_16);});$$(".profile_pic_20_"+username).each(function(el){el.set("src",room.profile_pic_20);});$$(".profile_pic_60_"+username).each(function(el){el.set("src",room.profile_pic_60);});$$(".profile_pic_26_"+username).each(function(el){el.set("src",room.profile_pic_26);});$$(".profile_pic_32_"+username).each(function(el){el.set("src",room.profile_pic_32);});$$(".profile_pic_42_"+username).each(function(el){el.set("src",room.profile_pic_42);});$$(".profile_pic_100_"+username).each(function(el){el.set("src",room.profile_pic_100);});$$(".profile_pic_200_"+username).each(function(el){el.set("src",room.profile_pic_200);});}});Home.implement({requests:[{name:"stream_in_load",params:["date_created","item_id"],url:"/api/pipio/stream/in/load"},{name:"stream_user_load",params:["username","date_created","item_id"],url:"/api/pipio/stream/user/load"},{name:"public_stream_user_load",params:["username","date_created","item_id"],url:"/api/public/stream/user/load"},{name:"stream_room_load",params:["username","date_created","item_id"],url:"/api/pipio/stream/room/load"},{name:"public_stream_room_load",params:["username","date_created","item_id"],url:"/api/public/stream/room/load"},{name:"stream_convo_load",params:["convo_id","date_created","item_id"],url:"/api/pipio/stream/convo/load"},{name:"stream_likes_load",params:["username","date_created","item_id"],url:"/api/pipio/stream/likes/load"},{name:"stream_global_load",params:["geohash","date_created","item_id"],url:"/api/pipio/stream/global/load"},{name:"stream_item_like",params:["item_id"],url:"/api/pipio/stream/like"},{name:"publish",url:"/api/pipio/stream/publish",params:["body","targets","source_id","source_type","reply_id","channel_id","is_public","res","attachment"]},{name:"forward",url:"/api/pipio/stream/forward",params:["body","targets","source_id","source_type","forward_id","channel_id","is_public","res"]},{name:"delete",url:"/api/pipio/stream/delete",params:["item_id"]},{name:"parse_hulu_url",url:"/api/pipio/link/parse/hulu",params:["url"]},{name:"parse_break_url",url:"/api/pipio/link/parse/break",params:["url"]},{name:"room_create",url:"/api/pipio/room/create",params:["username","room_name","room_description","is_public"]},{name:"room_delete",url:"/api/pipio/room/delete",params:["username"]},{name:"room_leave",url:"/api/pipio/room/leave",params:["username"]},{name:"room_kick",url:"/api/pipio/room/kick",params:["username","room_username"]},{name:"room_subscribe",url:"/api/pipio/room/subscribe",params:["username"]},{name:"room_unsubscribe",url:"/api/pipio/room/unsubscribe",params:["username"]},{name:"room_request_create",url:"/api/pipio/room/request/create",params:["username"]},{name:"room_request_delete",url:"/api/pipio/room/request/delete",params:["username","room_username"]},{name:"room_request_accept",url:"/api/pipio/room/request/accept",params:["username","room_username"]},{name:"room_invite_create",url:"/api/pipio/room/invite/create",params:["username","room_username"]},{name:"room_invite_accept",url:"/api/pipio/room/invite/accept",params:["username"]},{name:"room_invite_delete",url:"/api/pipio/room/invite/delete",params:["username","room_username"]},{name:"room_info_load",url:"/api/pipio/room/info/load",params:["username"]},{name:"public_room_info_load",url:"/api/public/room/info/load",params:["username"]},{name:"public_user_info_load",url:"/api/public/user/info/load",params:["username"]},{name:"room_privacy_set",url:"/api/pipio/room/privacy/set",params:["username","is_public"]},{name:"room_profile_update",url:"/api/pipio/room/profile/update",params:["username","bio","url"]},{name:"room_search",url:"/api/pipio/room/search",params:["query"]}]});Home.implement({initRooms:function(){this.rooms=$H();this.roomInvites=$H();this.getRooms().each(function(room){this.roomAdd(room);},this);},feedRoomAdded:function(room){if(!this.rooms.has(room.username)){this.roomAdd(room);}},feedRoomKick:function(username,room_username){this.call("home","room_kick",{username:username,room_username:room_username},null,null);},feedRoomRequestAccept:function(username,room_username){this.call("home","room_request_accept",{username:username,room_username:room_username},null,null);},feedRoomRequestDelete:function(username,room_username){this.call("home","room_request_delete",{username:username,room_username:room_username},null,null);},feedRoomDelete:function(username){this.call("home","room_delete",{username:username},null,null);},feedRoomDeleted:function(username){if(!this.rooms.has(username)){return;}this.roomDelete(username);},showCreateRoomPopup:function(){if($defined(this.createRoomPopup)){this.createRoomPopup.close();}this.createCreateRoomPopup();},createCreateRoomPopup:function(){this.createRoomPopup=new Popup({size:{x:350,y:176},resizable:false,dockable:false,className:"createRoom",onClose:this.destroyCreateRoomPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"rooms",iconAction:"add"},displayName:"Create New Room",closable:true});var content=new CreateRoomPopupContent({});this.createRoomPopup.addContent("create_room",nav,content);},destroyCreateRoomPopup:function(){this.createRoomPopup=null;}});Home.implement({setupNav:function(){Logger().log("home setup");var homeNav=new Nav({iconOptions:{iconName:"updates"},displayName:"Updates",name:"updates",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"updates","self_menu"])});this.navAdd(homeNav);this.navAdd(new Nav({iconOptions:{iconName:"star"},displayName:"Favorites",name:"likes",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"likes","likes_menu"])}));this.navAdd(new Nav({iconOptions:{iconName:"rooms"},hasSubnavs:true,displayName:"Rooms",name:"rooms"}));this.navAdd(new Nav({iconOptions:{iconName:"search"},displayName:"Search Rooms...",onClick:this.fireEvent.bind(this,["showSearchRoomPopup"]),name:"find_room",parentName:"rooms",bottom:true}));this.navAdd(new Nav({iconOptions:{iconName:"rooms",iconAction:"add"},displayName:"Create New Room...",onClick:this.fireEvent.bind(this,["showCreateRoomPopup"]),name:"new_room",parentName:"rooms",bottom:true}));var selfMenu=new SelfMenu({user:this.getPrivateUser(),isDefault:true});this.menuAdd("self_menu",selfMenu);var content=new HomeContent({isDefault:true,navId:homeNav.navId});this.contentAdd("updates",content);var likesMenu=new LikesMenu({user:this.getPrivateUser()});this.menuAdd("likes_menu",likesMenu);var likesContent=new LikesContent({user:this.getPrivateUser()});this.contentAdd("likes",likesContent);},roomAdd:function(room){var nav=new Nav({iconOptions:{user:room},displayName:room.room_name,name:"room_"+room.username,parentName:"rooms",onClick:this.fireEvent.bind(this,["showRoom",room])});this.navAdd(nav);this.rooms.set(room.username,nav);},roomDelete:function(username){if(!this.rooms.has(username)){return;}this.rooms.get(username).destroy();this.navDelete("room_"+username);this.rooms.erase(username);this.menuClose("room_"+username);this.contentClose("room_"+username);},showRoomInvitePopup:function(room){if($defined(this.roomInvitePopup)){this.roomInvitePopup.close();}this.createRoomInvitePopup(room);},createRoomInvitePopup:function(room){this.roomInvitePopup=new Popup({size:{x:250,y:350},resizable:false,dockable:false,className:"roomInvite",onClose:this.destroyCreateRoomPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"rooms",iconAction:"add"},displayName:"Invite Users to "+room.room_name,closable:true});var content=new RoomInvitePopupContent({contacts:this.getContacts(),room:room});this.roomInvitePopup.addContent("create_room",nav,content);},destroyRoomInvitePopup:function(){this.roomInvitePopup=null;},showRoomStatusUpdatePopup:function(room){if($defined(this.roomStatusUpdatePopup)){this.roomStatusUpdatePopup.close();}this.createRoomStatusUpdatePopup(room);},createRoomStatusUpdatePopup:function(room){this.roomStatusUpdatePopup=new Popup({size:{x:350,y:100},resizable:false,dockable:false,className:"statusUpdate",onClose:this.destroyRoomStatusUpdatePopup.bind(this)});var nav=new Nav({iconOptions:{user:room},displayName:"Update Status for "+room.room_name,closable:true});var content=new RoomStatusUpdatePopupContent({room:room});this.roomStatusUpdatePopup.addContent("status_update",nav,content);},destroyRoomStatusUpdatePopup:function(){this.roomStatusUpdatePopup=null;},showConvo:function(convo_id){if(this.convos.has(convo_id)){this.convos.get(convo_id)._select();return;}this.createConvoPopup(convo_id);},createConvoPopup:function(convo_id){var popup=new Popup({size:{x:500,y:400},resizable:false,dockable:true,className:"convoViewer",onClose:this.destroyConvoPopup.bind(this,[convo_id])});var nav=new Nav({iconOptions:{iconName:"convo"},displayName:"View Conversation",closable:true});var content=new ConvoPopupContent({convo_id:convo_id});popup.addContent("convo",nav,content);this.convos.set(convo_id,popup);},destroyConvoPopup:function(convo_id){this.convos.erase(convo_id);},showEditProfilePopup:function(){if($defined(this.editProfilePopup)){this.editProfilePopup.close();}this.createEditProfilePopup();},createEditProfilePopup:function(room){this.editProfilePopup=new Popup({size:{x:350,y:200},resizable:false,dockable:false,className:"editProfile",onClose:this.destroyEditProfilePopup.bind(this)});var nav=new Nav({iconOptions:{user:this.getPrivateUser()},displayName:"Edit Your Profile",closable:true});var content=new EditProfilePopupContent({user:this.getPrivateUser()});this.editProfilePopup.addContent("edit_profile",nav,content);},destroyEditProfilePopup:function(){this.editProfilePopup=null;},showEditRoomProfilePopup:function(room){if($defined(this.editRoomProfilePopup)){this.editRoomProfilePopup.close();}this.createEditRoomProfilePopup(room);},createEditRoomProfilePopup:function(room){this.editRoomProfilePopup=new Popup({size:{x:350,y:140},resizable:false,dockable:false,className:"editProfile",onClose:this.destroyEditRoomProfilePopup.bind(this)});var nav=new Nav({iconOptions:{user:room},displayName:"Edit Room Profile",closable:true});var content=new RoomEditProfilePopupContent({room:room});this.editRoomProfilePopup.addContent("edit_room_profile",nav,content);},destroyEditRoomProfilePopup:function(){this.editRoomProfilePopup=null;}});var HomeContent=new Class({Extends:Content,EventHandlers:["streamItemReceived","streamItemDeleted"],onBeforeInit:function(options){this.navId=options.navId;return options;},onInit:function(){this.statusBox=new StatusBox(this.getPrivateUser());$(this.statusBox).inject(this.content);this.loader=new StreamLoader({createElementFunc:StreamItemUtility.createInStreamItem,emptyEl:new Element("div",{"class":"post empty","text":"You have no updates"}),loadingEl:new Element("div",{"class":"post empty","text":"Your updates loading..."}),alertFunc:this.alertCheck.bind(this)});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},streamItemReceived:function(data){if($defined(data.item)){this.loader.process(data.item);}Logger().log(JSON.encode(data.item.item_id));if(data.item.source_id!=this.getPrivateUser().user_id&&data.item.source_type==3){data.username=data.item.source.username;this.fireEvent("roomStreamItemReceived",data);}},alertCheck:function(item){if(item.creator_id!=this.getPrivateUser().user_id){this.fireEvent("alertAdd",this.navId);}},streamItemDeleted:function(data){if(!$defined(data.item_id)){return;}this.loader.remove(data.item_id);if($defined(data.source_id)&&data.source_id!=this.getPrivateUser().user_id){if(data.source_type==1){this.fireEvent("userStreamItemDeleted",data);}else{if(data.source_type==3){this.fireEvent("roomStreamItemDeleted",data);}}}},loadMore:function(){var params={date_created:this.loader.oldestTimestamp,item_id:this.loader.oldestId};this.call("home","stream_in_load",params,this.loadMoreSuccess.bind(this),null);this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){Logger().log("home content bottom");this.loadMore();}});var LikesContent=new Class({Extends:Content,EventHandlers:["userStreamItemLiked","streamItemLike"],onBeforeInit:function(options){this.user=options.user;},onInit:function(){var createFunc=StreamItemUtility.createLikesStreamItem;if(this.user.user_id==this.getPrivateUser().user_id){createFunc=StreamItemUtility.createSelfLikesStreamItem;}this.loader=new ItemLoader({createElementFunc:createFunc,idField:"item_id",sortField:"date_created",sortAscending:false,emptyEl:new Element("div",{"class":"post empty","text":TextUtility.unescape(this.user.fullname)+" has no favorites"}),emptyEl:new Element("div",{"class":"post empty","text":TextUtility.unescape(this.user.fullname)+"'s favorites loading..."}),errorEl:new Element("div",{"class":"post empty","text":TextUtility.unescape(this.user.fullname)+"'s stream is private"})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},userStreamItemLiked:function(data){if($defined(data.item)&&data.username==this.user.username){if(data.is_liked==1){this.loader.process(data.item);}else{this.loader.remove(data.item.item_id);}}},streamItemLike:function(item_id,likes,is_liked){if(is_liked==1){this.loader.remove(item_id);}},loadMore:function(){var params={username:this.user.username,date_created:this.loader.oldestTimestamp,item_id:this.loader.oldestId};this.call("home","stream_likes_load",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){this.loader.hideLoading();if(status.code==2002){this.loader.showError();}},bottomFunc:function(){this.loadMore();}});var ConvoPopupContent=new Class({Extends:PopupContent,EventHandlers:[],onBeforeInit:function(options){this.convo_id=options.convo_id;return options;},onInit:function(){this.convoWrapper=new Element("div",{"class":"convoWrapper"}).inject(this.content);this.loader=new ItemLoader({idField:"item_id",sortField:"date_created",createElementFunc:StreamItemUtility.createConvoStreamItem,emptyEl:new Element("div",{"class":"post empty","text":"This conversation is empty"}),loadingEl:new Element("div",{"class":"post empty","text":"Conversation loading..."})});this.convoWrapper.addEvent("mousewheel",this.checkScroll.bind(this));$(this.loader).inject(this.convoWrapper);this.scroll=new Fx.Scroll(this.convoWrapper);this.loadMore();},onShow:function(){if($defined(this.scrollY)){this.scroll.set(0,this.scrollY);}},onHide:function(){if($defined(this.convoWrapper)){this.scrollY=this.convoWrapper.getScroll().y;}},loadMore:function(){var params={convo_id:this.convo_id,date_created:this.loader.highestSortValue,item_id:this.loader.highestId};this.call("home","stream_convo_load",params,this.loadMoreSuccess.bind(this),null);this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){Logger().log("home content bottom");this.loadMore();},checkScroll:function(){var maxY=this.convoWrapper.getScrollSize().y;var bottomY=this.convoWrapper.getScroll().y+this.convoWrapper.getSize().y+100;if(bottomY>maxY&&!this.bottomFuncCalled&&!this.atBottom){this.bottomFuncCalled=true;this.bottomFunc();}}});var CreateRoomPopupContent=new Class({Extends:PopupContent,strings:{roomUsernameLabel:"Nickname:",roomNameLabel:"Room Name:",roomDescriptionLabel:"Description:",publicLabel:"Public:",errorMessage:"There was an error creating this room"},onInit:function(){this.roomUsernameInput=new Element("input",{"type":"text","maxlength":"32"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.roomUsernameLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.roomUsernameInput)).inject(this.content);this.roomNameInput=new Element("input",{"type":"text","maxlength":"32"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.roomNameLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.roomNameInput)).inject(this.content);this.roomDescriptionInput=new Element("input",{"type":"text","maxlength":"32"});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.roomDescriptionLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.roomDescriptionInput)).inject(this.content);this.publicToggle=new Toggle(true);new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.publicLabel}),$(this.publicToggle)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Create Room",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.createRoom.bind(this));this.message=new Element("div",{"class":"message error"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},createRoom:function(){var username=this.roomUsernameInput.value.trim();var room_name=this.roomNameInput.value.trim();var room_description=this.roomDescriptionInput.value.trim();var is_public=this.publicToggle.toInt();var params={username:username,room_name:room_name,room_description:room_description,is_public:is_public};this.call("home","room_create",params,this.createRoomSuccess.bind(this),this.createRoomFail.bind(this));this.actionButton.showProgress();},createRoomSuccess:function(){this.actionButton.hideProgress();this.closeContent();},createRoomFail:function(status){this.actionButton.hideProgress();var name="create_room";var title="Error Creating Room";var message=status.message;this.fireEvent("showAlert",name,title,message);},onShow:function(){this.focus();},focus:function(){this.roomUsernameInput.focus.delay(500,this.roomUsernameInput);}});var EditProfilePopupContent=new Class({Extends:PopupContent,strings:{bioLabel:"Bio:",interestsLabel:"Interests:",urlLabel:"Website:"},onBeforeInit:function(options){this.user=options.user;return options;},onInit:function(){this.bioInput=new Element("textarea",{"maxlength":500});new Element("div",{"class":"input_section bio"}).adopt(new Element("div",{"class":"label light","text":this.strings.bioLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.bioInput)).inject(this.content);this.interestsInput=new Element("textarea",{"maxlength":500});new Element("div",{"class":"input_section bio"}).adopt(new Element("div",{"class":"label light","text":this.strings.interestsLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.interestsInput)).inject(this.content);this.urlInput=new Element("input",{"type":"text","maxlength":200});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.urlLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.urlInput)).inject(this.content);var about=this.getProfile(this.user.username);if($defined(about)){if($defined(about.bio)){this.bioInput.set("text",about.bio);}if($defined(about.interests)){this.interestsInput.set("text",about.interests);}if($defined(about.url)){this.urlInput.value=about.url;}}this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Update",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.updateProfile.bind(this));this.message=new Element("div",{"class":"message error"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},updateProfile:function(){var bio=this.bioInput.value.trim();var url=this.urlInput.value.trim();var interests=this.interestsInput.value.trim();var params={bio:bio,url:url,interests:interests};this.call("pipio","user_profile_update",params,this.updateProfileSuccess.bind(this),this.updateProfileFail.bind(this));this.actionButton.showProgress();this.message.empty();},updateProfileSuccess:function(data){this.actionButton.hideProgress();this.closeContent();},updateProfileFail:function(){this.actionButton.hideProgress();this.message.set("text",this.strings.errorMessage);},onShow:function(){this.focus();},focus:function(){this.bioInput.focus.delay(500,this.bioInput);}});var RoomInvitePopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.contacts=options.contacts;this.room=options.room;return options;},onInit:function(){this.css=new CSS();this.input=new Element("input",{"type":"text","maxlength":50});this.input.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.input).inject(this.content);this.list=new Element("div",{"class":"itemList"}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});new Element("div",{"class":"actions"}).adopt($(this.closeButton)).inject(this.content);$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.insertContacts();this.scroll=new Fx.Scroll(this.list);},insertContacts:function(){this.contacts.each(function(user){var el=ShareBoxUtility.createContactRoomInviteItem(user);el.addEvent("click",this.inviteUser.bind(this,[user,el]));el.inject(this.list);},this);},insertSeperator:function(){new Element("div",{"class":"listItem seperator"}).inject(this.list);},inviteUser:function(user,el){var params={username:user.username,room_username:this.room.username};this.call("home","room_invite_create",params,null,null);el.addClass("invited");},inputKeyUp:function(e){if(e.key=="esc"){e.target.value="";}var val=e.target.value.trim().toLowerCase();if(val.length<2){this.list.removeClass("search");return;}this.list.addClass("search");if($defined(this.lastSelector)){this.css.remove_rule(this.lastSelector);}var selector=".listItem[val1^='"+val+"'], .listItem[val2^='"+val+"']";this.css.add_rule(selector,{"display":"block !important"}).refresh();this.lastSelector=selector;},focus:function(){this.input.focus.delay(500,this.input);},onClose:function(){if($defined(this.lastSelector)){this.css.remove_rule(this.lastSelector).refresh();}},onShow:function(){if($defined(this.scrollY)){this.scroll.set(0,this.scrollY);}this.focus();},onHide:function(){if($defined(this.list)){this.scrollY=this.list.getScroll().y;}}});var RoomStatusUpdatePopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.room=options.room;return options;},onInit:function(){this.statusInput=new Element("textarea",{"maxlength":500});this.statusInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.statusInput).inject(this.content);this.cancelButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.cancelButton).addEvent("click",this.closeContent.bind(this));this.updateButton=new ButtonMedium({displayName:"Update Status",className:"dark",action:"check"});$(this.updateButton).addEvent("click",this.updateStatus.bind(this));new Element("div",{"class":"actions"}).adopt($(this.updateButton),$(this.cancelButton)).inject(this.content);},onShow:function(){this.focus();},focus:function(){this.statusInput.focus.delay(500,this.statusInput);},inputKeyUp:function(e){if(e.key=="enter"){var msg=e.target.value.trim();if(msg==""){return;}this.updateStatus();}},updateStatus:function(){var params={username:this.room.username,body:this.statusInput.value.trim(),res:this.getSession()};this.call("pipio","publish_roomstatus",params,this.updateStatusSuccess.bind(this),this.updateStatusFail.bind(this));this.updateButton.showProgress();},updateStatusSuccess:function(){this.closeContent();},updateStatusFail:function(){alert("There was an error updating your status!");}});var LikesMenu=new Class({Extends:Menu,EventHandlers:[],onBeforeInit:function(options){this.user=options.user;options.displayName=this.user.first_name+"'s Favorites";return options;},onInit:function(){this.aboutText=new Element("span");var likesText="These are posts "+this.user.first_name+" likes";this.aboutSection=new Element("div",{"class":"text_section light1","text":TextUtility.unescape(likesText)}).inject(this.menu);}});var SelfMenu=new Class({Extends:Menu,EventHandlers:["userLocationUpdated"],onBeforeInit:function(options){this.user=options.user;options.displayName=this.user.fullname;return options;},onInit:function(){this.map=new UserMapMenuSection({user:this.user});$(this.map).inject(this.menu);this.aboutSection=new UserProfileMenuSection({user:this.user});$(this.aboutSection).inject(this.menu);new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.locationEnabled=new Toggle(this.user.location_enabled==1);$(this.locationEnabled).addEvent("click",this.locationToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Location:"}),$(this.locationEnabled)).inject(this.menu);this.privacy=new Toggle(this.user.is_public==1);$(this.privacy).addEvent("click",this.privacyToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Public:"}),$(this.privacy)).inject(this.menu);this.profilePicUploadButton=new ButtonMedium({displayName:"Change Picture",className:"dark",action:"photo"});this.fileInput=new Element("input",{"type":"file","name":"file"});this.form=new Element("form").adopt(this.fileInput);this.fileInput.addEvent("change",this.profilePicUpload.bind(this));this.profilePicUploadSection=new Element("div",{"class":"button_section"}).adopt($(this.profilePicUploadButton).adopt(this.form)).inject(this.menu);var editProfileButton=new ButtonMedium({displayName:"Edit Profile",className:"dark",action:"edit"});$(editProfileButton).addEvent("click",this.fireEvent.bind(this,["showEditProfilePopup"]));new Element("div",{"class":"button_section"}).adopt($(editProfileButton)).inject(this.menu);var editLocationButton=new ButtonMedium({displayName:"Edit Location",className:"dark",action:"global"});$(editLocationButton).addEvent("click",this.fireEvent.bind(this,["showLocationEditPopup"]));this.editLocationSection=new Element("div",{"class":"button_section"}).adopt($(editLocationButton)).inject(this.menu);if(this.user.location_enabled==0){DomUtility.hide(this.editLocationSection);}var searchUserButton=new ButtonMedium({displayName:"Find Friends",className:"dark",action:"search"});$(searchUserButton).addEvent("click",this.fireEvent.bind(this,["searchUserShow"]));new Element("div",{"class":"button_section"}).adopt($(searchUserButton)).inject(this.menu);var inviteUserButton=new ButtonMedium({displayName:"Invite Friends",className:"dark",action:"forward"});$(inviteUserButton).addEvent("click",this.fireEvent.bind(this,["inviteUserShow"]));new Element("div",{"class":"button_section"}).adopt($(inviteUserButton)).inject(this.menu);var searchContactButton=new ButtonMedium({displayName:"Search Contacts",className:"dark",action:"status"});$(searchContactButton).addEvent("click",this.fireEvent.bind(this,["searchEmailShow"]));new Element("div",{"class":"button_section"}).adopt($(searchContactButton)).inject(this.menu);},privacyToggle:function(){this.call("pipio","user_privacy_set",{is_public:this.privacy.toInt()});},userLocationUpdated:function(username,location,location_enabled){if(username!=this.user.username){return;}if(location_enabled==1){DomUtility.show(this.editLocationSection);}else{DomUtility.hide(this.editLocationSection);}},locationToggle:function(){this.call("pipio","user_location_enabled",{location_enabled:this.locationEnabled.toInt()});},resetForm:function(){this.profilePicUploadSection.empty();this.profilePicUploadButton=new ButtonMedium({displayName:"Change Picture",className:"dark",action:"photo"});this.fileInput=new Element("input",{"type":"file","name":"file"});this.form=new Element("form").adopt(this.fileInput);this.fileInput.addEvent("change",this.profilePicUpload.bind(this));this.profilePicUploadSection.adopt($(this.profilePicUploadButton).adopt(this.form));},profilePicUpload:function(){if(DataUtility.validatePhotoFile(this.fileInput.value)){this.call("pipio","user_profilepic_upload",{},this.profilePicUploadSuccess.bind(this),this.profilePicUploadFail.bind(this),this.form);this.profilePicUploadButton.showProgress();}},profilePicUploadSuccess:function(){this.profilePicUploadButton.hideProgress();this.resetForm();},profilePicUploadFail:function(){this.profilePicUploadButton.hideProgress();this.resetForm();}});var MemberRequestsNav=new Class({Extends:Nav,EventHandlers:[],onBeforeInit:function(options){this.room=options.room;this.users=$H();options.name="member_requests_"+this.room.username;options.iconOptions={iconName:"contacts",iconAction:"add"};options.displayName="Member Requests";options.className="members_nav";options.hasSubnavs=true;return options;},onInit:function(){this.clear=new Element("div",{"style":"clear: both"});this.list=new Element("div",{"class":"menu_list"}).adopt(this.clear).inject(this.subnavs);},addUsers:function(users){$splat(users).each(function(user){user=UserUtility.processUser(user);if(!this.users.has(user.username)){var pic=ItemUtility.createProfilePic(user,"16a");pic.addEvent("click",this.fireEvent.bind(this,["showUser",user]));pic.inject(this.clear,"before");this.users.set(user.username,pic);}},this);},removeUser:function(username){if(!this.users.has(username)){return;}this.users.get(username).destroy();this.users.erase(username);}});var MembersNav=new Class({Extends:Nav,onBeforeInit:function(options){this.room=options.room;this.users=$H();options.name="members_"+this.room.username;options.iconOptions={iconName:"contacts"};options.displayName="Members";options.className="members_nav";options.hasSubnavs=true;return options;},onInit:function(){this.clear=new Element("div",{"style":"clear: both"});this.list=new Element("div",{"class":"menu_list"}).adopt(this.clear).inject(this.subnavs);},addUsers:function(users){$splat(users).each(function(user){user=UserUtility.processUser(user);if(!this.users.has(user.username)){var pic=ItemUtility.createProfilePic(user,"16a");pic.addEvent("click",this.fireEvent.bind(this,["showUser",user]));pic.inject(this.clear,"before");this.users.set(user.username,pic);}},this);},removeUser:function(username){if(!this.users.has(username)){return;}this.users.get(username).destroy();this.users.erase(username);}});var StreamItemUtility={createDateSeperatorItem:function(ts){var date=DateUtility.convertFromTimestamp(ts);var timetext=date.format("%B %D");var el=new Element("div",{"class":"post seperator","ts":ts}).adopt(new Element("div",{"class":"seperator_text","text":timetext}));return el;},createSeperatorItem:function(str){var el=new Element("div",{"class":"post seperator"}).adopt(new Element("div",{"class":"seperator_text","text":TextUtility.unescape(str)}));return el;},createInStreamItem:function(item){return StreamItemUtility.createStreamItem(item,true,false);},createUserStreamItem:function(item){return StreamItemUtility.createStreamItem(item,false,false);},createSelfLikesStreamItem:function(item){return StreamItemUtility.createStreamItem(item,true,true);},createLikesStreamItem:function(item){return StreamItemUtility.createStreamItem(item,false,true);},createStreamItem:function(item,inbound,likes_stream){var el=ItemUtility.createPostBubble("post haspic");item.creator=UserUtility.processSource(item.creator);item.source=UserUtility.processSource(item.source);if($defined(item.post.reply_user)){item.post.reply_user=UserUtility.processSource(item.post.reply_user);}if($defined(item.post.convo_user)){item.post.convo_user=UserUtility.processSource(item.post.convo_user);}if($defined(item.post.forward_user)){item.post.forward_user=UserUtility.processSource(item.post.forward_user);}item.can_delete=false;if(!$defined(item.private_replies)){item.private_replies=0;}var user_id=pipio.currentUser.user_id;if(inbound){item.can_delete=true;}else{if(item.creator_id==user_id){item.can_delete=true;}}if(likes_stream){item.can_delete=false;}if(inbound){item.can_like=true;}else{item.can_like=false;}ItemUtility.createProfilePic(item.creator,32).inject(el);if(item.reply_id!=item.item_id&&$defined(item.post.reply_user)){ItemUtility.createProfilePic(item.post.reply_user,20).inject(el);el.addClass("reply");}if(item.source_id!=item.creator_id){ItemUtility.createProfilePic(item.source,20).inject(el);}var content=new Element("div",{"class":"post_content"}).inject(el);StreamItemUtility.createStreamItemPostActions(item).inject(el);StreamItemUtility.createStreamItemHeader(item).inject(content);var attachments=StreamItemUtility.createStreamItemAttachments(item);if(attachments){attachments.inject(content);}StreamItemUtility.createStreamItemFooter(item).inject(content);return el;},createConvoStreamItem:function(item){var el=ItemUtility.createPostBubble("post haspic");item.creator=UserUtility.processSource(item.creator);item.source=UserUtility.processSource(item.source);if($defined(item.post.reply_user)){item.post.reply_user=UserUtility.processSource(item.post.reply_user);}if($defined(item.post.convo_user)){item.post.convo_user=UserUtility.processSource(item.post.convo_user);}if($defined(item.post.forward_user)){item.post.forward_user=UserUtility.processSource(item.post.forward_user);}item.can_delete=false;ItemUtility.createProfilePic(item.creator,32).inject(el);if(item.reply_id!=item.item_id&&$defined(item.post.reply_user)){ItemUtility.createProfilePic(item.post.reply_user,20).inject(el);el.addClass("reply");}if(item.source_id!=item.creator_id){ItemUtility.createProfilePic(item.source,20).inject(el);}var content=new Element("div",{"class":"post_content"}).inject(el);StreamItemUtility.createStreamItemPostActions(item).inject(el);StreamItemUtility.createStreamItemHeader(item).inject(content);var attachments=StreamItemUtility.createStreamItemAttachments(item);if(attachments){attachments.inject(content);}StreamItemUtility.createConvoStreamItemFooter(item).inject(content);return el;},createStreamMemberRoomItem:function(item){return StreamItemUtility.createStreamRoomItem(item,true);},createStreamPublicRoomItem:function(item){return StreamItemUtility.createStreamRoomItem(item,false);},createStreamRoomItem:function(item,is_member){var el=ItemUtility.createPostBubble("post haspic");item.creator=UserUtility.processSource(item.creator);item.source=UserUtility.processSource(item.source);if($defined(item.post.reply_user)){item.post.reply_user=UserUtility.processSource(item.post.reply_user);}if($defined(item.post.convo_user)){item.post.convo_user=UserUtility.processSource(item.post.convo_user);}if($defined(item.post.forward_user)){item.post.forward_user=UserUtility.processSource(item.post.forward_user);}item.can_delete=false;if(!$defined(item.private_replies)){item.private_replies=0;}var user_id=pipio.currentUser.user_id;if(item.creator_id==user_id){item.can_delete=true;}if(is_member&&item.source_id==item.creator_id){item.can_delete=true;}ItemUtility.createProfilePic(item.creator,32).inject(el);if(item.reply_id!=item.item_id&&$defined(item.post.reply_user)){ItemUtility.createProfilePic(item.post.reply_user,20).inject(el);el.addClass("reply");}var content=new Element("div",{"class":"post_content"}).inject(el);StreamItemUtility.createStreamItemPostActions(item).inject(el);StreamItemUtility.createStreamRoomItemHeader(item).inject(content);var attachments=StreamItemUtility.createStreamItemAttachments(item);if(attachments){attachments.inject(content);}StreamItemUtility.createStreamItemFooter(item).inject(content);return el;},createStreamItemPostActions:function(item){var el=new Element("div",{"class":"post_actions"});if(item.can_delete){var deleteAction=new Element("div",{"class":"post_action delete"}).inject(el);deleteAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["streamItemDelete",item.item_id]));}if(item.can_like){var likeAction=new Element("div",{"class":"post_action like likes_"+item.item_id,"is_liked":item.is_liked,"likes":item.likes}).inject(el);likeAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["streamItemLike",item.item_id,likeAction]));new Element("div",{"class":"text grey text11","text":item.likes,"likes":item.likes}).inject(likeAction);if(item.likes>0){likeAction.addClass("other_liked");}if(item.is_liked==1){likeAction.addClass("on");}}return el;},createStreamRoomItemHeader:function(item){var el=new Element("div",{"class":"header"});var is_question=false;var creator_action="broadcast dark";if(item.is_public==0){creator_action="lock dark";}else{if(item.post_type==4){creator_action="status dark";}else{if(item.post_type==5){creator_action="question dark";is_question=true;}}}StreamItemUtility.createStreamUserAction(creator_action).inject(el);StreamItemUtility.createUsernameElement(item.creator).inject(el);if(is_question){new Element("span",{"class":"grey2","text":" asks "}).inject(el);}if(item.post_type==3){StreamItemUtility.createStreamUserAction("forward").inject(el);StreamItemUtility.createUsernameElement(item.post.forward_user).inject(el);}if(item.reply_id!=item.item_id){StreamItemUtility.createStreamUserAction("reply").inject(el);StreamItemUtility.createUsernameElement(item.post.reply_user).inject(el);}var body=new Element("span",{"html":" "+TextUtility.replaceUrls(TextUtility.convertNewLine(TextUtility.unescapeQuotes(item.post.body)))}).inject(el);if($defined(item.post.forward_body)&&item.post.forward_body!=""){body.appendText(" - "+TextUtility.replaceUrls(TextUtility.convertNewLine(TextUtility.unescape(item.post.forward_body))));}return el;},createUsernameElement:function(user){if($defined(user.user_id)){var el=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(user.fullname)});el.addEvent("click",pipio.dispatchEvent.bind(pipio,["showUser",user]));return el;}else{if($defined(user.room_id)){var el=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(user.room_name)});el.addEvent("click",pipio.dispatchEvent.bind(pipio,["showRoom",user]));return el;}}},createStreamItemHeader:function(item){var el=new Element("div",{"class":"header"});var is_question=false;var creator_action="broadcast dark";if(item.is_public==0){creator_action="lock dark";}else{if(item.post_type==4){creator_action="status dark";}else{if(item.post_type==5){creator_action="question dark";is_question=true;}}}StreamItemUtility.createStreamUserAction(creator_action).inject(el);if($defined(item.source.room_id)){StreamItemUtility.createUsernameElement(item.source).inject(el);new Element("span",{"class":"dark","text":": "}).inject(el);}StreamItemUtility.createUsernameElement(item.creator).inject(el);if(is_question){new Element("span",{"class":"dark","text":" asks "}).inject(el);}if(item.post_type==3){StreamItemUtility.createStreamUserAction("forward").inject(el);StreamItemUtility.createUsernameElement(item.post.forward_user).inject(el);}if(item.reply_id!=item.item_id){StreamItemUtility.createStreamUserAction("reply").inject(el);StreamItemUtility.createUsernameElement(item.post.reply_user).inject(el);}else{if(item.creator_id!=item.source_id&&!$defined(item.source.room_id)){StreamItemUtility.createStreamUserAction("direct").inject(el);StreamItemUtility.createUsernameElement(item.source).inject(el);}}var body=new Element("span",{"html":" "+TextUtility.replaceUrls(TextUtility.convertNewLine(TextUtility.unescapeQuotes(item.post.body)))}).inject(el);if($defined(item.post.forward_body)&&item.post.forward_body!=""){body.appendText(" - "+TextUtility.replaceUrls(TextUtility.convertNewLine(TextUtility.unescape(item.post.forward_body))));}return el;},createStreamItemAttachments:function(item){if(item.attachment_type==0){return false;}var el=new Element("div",{"class":"attachment"}).adopt(new Element("span",{"class":"indicator","html":"&raquo;"}));switch(item.attachment_type){case 1:var pipioUrl=DataUtility.getPipioUrl(null,item.attachment[0].hash);item.attachment[0]=AttachmentUtility.parsePhotoAttachment(item.attachment[0]);item.attachment[0].url=pipioUrl;new Element("a",{"target":"_blank","href":pipioUrl,"text":TextUtility.unescape(item.attachment[0].filename)}).inject(el);if(item.attachment[0].is_photo){el.addClass("has_thumbnail");var playButton=new ButtonSmall({displayName:"View Photo",action:"photo"});$(playButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showPhotoPopup",item.attachment[0]]));$(playButton).inject(el);var thumb=new InlineImage(item.attachment[0]);$(thumb).inject(el);}break;case 2:var pipioUrl=DataUtility.getPipioUrl(item.attachment[0].url,item.attachment[0].hash);item.attachment[0]=AttachmentUtility.parseLinkAttachment(item.attachment[0]);new Element("a",{"target":"_blank","href":pipioUrl,"text":TextUtility.unescape(item.attachment[0].url)}).inject(el);if(item.attachment[0].is_video){var playButton=new ButtonSmall({displayName:"Play Video",action:"pivot_right dark"});$(playButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showVideoPopup",item.attachment[0]]));$(playButton).inject(el);}else{if(item.attachment[0].is_photo){el.addClass("has_thumbnail");var playButton=new ButtonSmall({displayName:"View Photo",action:"photo"});$(playButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showPhotoPopup",{filename:"Photo",url:item.attachment[0].url}]));$(playButton).inject(el);var thumb=new InlineImage({filename:"Photo",url:item.attachment[0].url});$(thumb).inject(el);}}break;}return new Element("div",{"class":"attachments"}).adopt(el);},createStreamItemFooter:function(item){var el=new Element("div",{"class":"footer"});if(!$defined(item.date_created)){return el;}var date=DateUtility.convertFromTimestamp(item.date_created);var ts=new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D at %I:%M%p"),"ts":date,"ts_format":"%B %D at %I:%M%p"}).inject(el);if($defined(item.location)&&$defined(item.geohash)&&item.geohash!=""){var loc=DataUtility.getGeoString(item.location);if(loc){el.appendText(" from ");var location=new Element("span",{"class":"clickable","text":TextUtility.unescape(loc)}).inject(el);location.addEvent("click",pipio.dispatchEvent.bind(pipio,["showGlobal",item.location]));}}StreamItemUtility.createFooterActions(item,el);return el;},createConvoStreamItemFooter:function(item){var el=new Element("div",{"class":"footer"});if(!$defined(item.date_created)){return el;}var date=DateUtility.convertFromTimestamp(item.date_created);var ts=new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D at %I:%M%p"),"ts":date,"ts_format":"%B %D at %I:%M%p"}).inject(el);if($defined(item.location)&&$defined(item.geohash)&&item.geohash!=""){var loc=DataUtility.getGeoString(item.location);if(loc){el.appendText(" from ");var location=new Element("span",{"class":"clickable","text":TextUtility.unescape(loc)}).inject(el);location.addEvent("click",pipio.dispatchEvent.bind(pipio,["showGlobal",item.location]));}}StreamItemUtility.createConvoFooterActions(item,el);return el;},createFooterActions:function(item,el){if(!pipio.isLoggedIn()){return;}if(item.convo_id!=item.item_id){var convoAction=StreamItemUtility.createFooterAction("convo","View Conversation",true);convoAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["showConvo",item.convo_id]));convoAction.inject(el);}else{var convoAction=StreamItemUtility.createRepliesAction(item);convoAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["showConvo",item.convo_id]));convoAction.inject(el);}var replyAction=StreamItemUtility.createFooterAction("reply","Reply",true);replyAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["replyShareBoxShow",item.item_id]));replyAction.inject(el);if(item.is_public==1){var forward_id=(item.post_type==3&&item.forward_id!=0)?item.forward_id:item.item_id;var forwardAction=StreamItemUtility.createFooterAction("forward","Forward",true).inject(el);forwardAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["forwardShareBoxShow",forward_id,item.creator.username,item.post.body]));}},createConvoFooterActions:function(item,el){var replyAction=StreamItemUtility.createFooterAction("reply","Reply",true);replyAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["replyShareBoxShow",item.item_id]));replyAction.inject(el);if(item.is_public==1){var forward_id=(item.forward_id!=0)?item.forward_id:item.item_id;var forwardAction=StreamItemUtility.createFooterAction("forward","Forward",true).inject(el);forwardAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["forwardShareBoxShow",forward_id,item.creator.username,item.post.body]));}},createRepliesAction:function(item){var repliesClass="replies_"+item.item_id;var replies=item.replies+item.private_replies;var el=new Element("span",{"class":"footer_action has_action "+repliesClass,"replies":replies}).adopt(new Element("div",{"class":"action convo"}));el.appendText(TextUtility.pluralText(replies,"Reply","Replies"));return el;},updateReplyCount:function(item_id,count){$$(".replies_"+item_id).each(function(el){var replies=parseInt(el.get("replies"))+count;el.set("replies",replies);el.empty();el.adopt(new Element("div",{"class":"action convo"}));el.appendText(TextUtility.pluralText(replies,"Reply","Replies"));});},updateItemLiked:function(item_id,likes,is_liked){Logger().log(item_id+"-"+likes+"-"+is_liked);$$(".likes_"+item_id).each(function(el){el.set("likes",likes);if(is_liked!=-1){el.set("is_liked",is_liked);}el.empty();new Element("div",{"class":"text grey text11","text":likes,"likes":likes}).inject(el);if(likes>0){el.addClass("other_liked");}else{el.removeClass("other_liked");}if(is_liked!=-1){if(is_liked==1){el.addClass("on");}else{el.removeClass("on");}}});},createFooterAction:function(actionName,actionText,hide){var el=new Element("span",{"class":"footer_action has_action"}).adopt(new Element("div",{"class":"action "+actionName}));el.appendText(actionText);if(hide){el.addClass("hide");}return el;},createStreamUserAction:function(user_action){var el=new Element("span",{"class":"user_action"}).adopt(new Element("div",{"class":"action "+user_action}));return el;},createStatusBoxFooter:function(status_message){var el=new Element("div",{"class":"footer"});if(!$defined(status_message)){return el;}if(!$defined(status_message.date_created)){return el;}var date=DateUtility.convertFromTimestamp(status_message.date_created);var ts=new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D at %I:%M%p"),"ts":date,"ts_format":"%B %D at %I:%M%p"}).inject(el);if($defined(status_message.location)&&$defined(status_message.location.geohash)&&status_message.location.geohash!=""){var loc=DataUtility.getGeoString(status_message.location);if(loc){el.appendText(" from ");new Element("span",{"text":TextUtility.unescape(loc)}).inject(el);}}return el;}};var Room=new Class({Extends:AppInstance,EventHandlers:["roomClosed","userSwitched"],parseOptions:function(options){this.room=options.room;this.displayName=this.room.room_name;this.appId="room_"+this.room.username;this.iconOptions={user:this.room};},userSwitched:function(){this.stop();},onStart:function(){this.setupNav();},onStop:function(){},roomClosed:function(data){if(!$defined(data.username)||data.username!=this.room.username){return;}this.stop();}});Room.implement({setupNav:function(){Logger().log("home setup");this.navAdd(new Nav({iconOptions:{iconName:"updates"},displayName:"Updates",name:"updates",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"updates","room_menu"])}));var roomMenu=new RoomMenu({displayName:this.room.room_name,room:this.room,appId:this.appId,isDefault:true,closeFunc:this.stop.bind(this)});this.menuAdd("room_menu",roomMenu);var content=new RoomContent({isDefault:true,room:this.room});this.contentAdd("updates",content);var membersContent=new RoomMembersContent({room:this.room});this.contentAdd("room_members",membersContent);var subscribersContent=new RoomSubscribersContent({room:this.room});this.contentAdd("room_subscribers",subscribersContent);var requestsContent=new RoomRequestsContent({room:this.room});this.contentAdd("room_requests",requestsContent);}});var RoomContent=new Class({Extends:Content,EventHandlers:["streamItemReceived","roomStreamItemDeleted"],onBeforeInit:function(options){this.room=options.room;},onInit:function(){this.statusBox=new RoomStatusBox(this.room);$(this.statusBox).inject(this.content);this.loader=new StreamLoader({createElementFunc:StreamItemUtility.createStreamMemberRoomItem,emptyEl:new Element("div",{"class":"post empty","text":"This room has no updates"}),loadingEl:new Element("div",{"class":"post empty","text":"Room updates loading..."}),errorEl:new Element("div",{"class":"post empty","text":"This room is private"})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},roomStreamItemReceived:function(data){if(!$defined(data.item)||!$defined(data.username)||data.username!=this.room.username){return;}Logger().log("roomItemRecevied, processing");this.loader.process(data.item);},streamItemReceived:function(data){if($defined(data.item)&&data.item.source.username==this.room.username){this.loader.process(data.item);}},roomStreamItemDeleted:function(data){if(!$defined(data.username)||data.username!=this.room.username){return;}this.loader.remove(data.item_id);},alertCheck:function(item){if(item.creator_id!=this.getPrivateUser().user_id){this.fireEvent("alertAdd","2_room_"+this.room.username);}},loadMore:function(){var params={username:this.room.username,date_created:this.loader.oldestTimestamp,item_id:this.loader.oldestId};if(this.isLoggedIn()){this.call("home","stream_room_load",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));}else{this.call("home","public_stream_room_load",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));}this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){if(status.code==2002){this.loader.showError();}},bottomFunc:function(){this.loadMore();}});var RoomMembersContent=new Class({Extends:Content,EventHandlers:["roomMemberAdded","roomMemberDeleted"],onBeforeInit:function(options){this.room=options.room;this.isCreator=this.room.creator_id==this.getPrivateUser().user_id;return options;},onInit:function(){this.statusBox=new RoomStatusBox(this.room);$(this.statusBox).inject(this.content);StreamItemUtility.createSeperatorItem("Members").inject(this.content);this.loader=new ItemLoader({idField:"user_id",sortField:"date_created",sortAscending:false,createElementFunc:ContactItemUtility.createRoomMemberItemFactory(this.room,this.isCreator),emptyEl:new Element("div",{"class":"post empty","text":"There are no members in this room"}),loadingEl:new Element("div",{"class":"post empty","text":"Room members loading..."})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},loadMore:function(){var params={username:this.room.username,date_created:this.loader.lowestSortValue};this.call("pipio","room_members",params,this.loadMoreSuccess.bind(this),null);this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.members)||data.members.length==0){this.atBottom=true;return;}data.members.each(function(user){var user_copy=UserUtility.processUser(user);user_copy.date_created=user.date_created;this.loader.process(user_copy);},this);this.bottomFuncCalled=false;},bottomFunc:function(){this.loadMore();},roomMemberAdded:function(data){if(!$defined(data.room_username)||!$defined(data.user)||data.room_username!=this.room.username){return;}var user=UserUtility.processUser(data.user);user.date_created=new Date().getTime()/1000;this.loader.process(user);},roomMemberDeleted:function(data){if(!$defined(data.username)||!$defined(data.room_username)||data.room_username!=this.room.username){return;}if(!$defined(this.getUser(data.username))){return;}var user=this.getUser(data.username);this.loader.remove(user.user_id);}});var RoomRequestsContent=new Class({Extends:Content,EventHandlers:["roomMemberRequestDeleted","roomMemberRequestAdded","roomMemberAdded"],onBeforeInit:function(options){this.room=options.room;return options;},onInit:function(){this.statusBox=new RoomStatusBox(this.room);$(this.statusBox).inject(this.content);StreamItemUtility.createSeperatorItem("Membership Requests").inject(this.content);this.loader=new ItemLoader({idField:"user_id",sortField:"date_created",sortAscending:false,createElementFunc:ContactItemUtility.createRoomRequestItemFactory(this.room),emptyEl:new Element("div",{"class":"post empty","text":"There are no membership requests to this room"}),loadingEl:new Element("div",{"class":"post empty","text":"Room member requests loading..."})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},loadMore:function(){var params={username:this.room.username,date_created:this.loader.lowestSortValue};this.call("pipio","room_requests",params,this.loadMoreSuccess.bind(this),null);this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.requests)||data.requests.length==0){this.atBottom=true;return;}data.requests.each(function(user){var user_copy=UserUtility.processUser(user);user_copy.date_created=user.date_created;this.loader.process(user_copy);},this);this.bottomFuncCalled=false;},bottomFunc:function(){this.loadMore();},roomMemberAdded:function(data){if(!$defined(data.room_username)||!$defined(data.user)||data.room_username!=this.room.username){return;}this.loader.remove(data.user.user_id);},roomMemberRequestDeleted:function(data){if(!$defined(data.room_username)||!$defined(data.username)||data.room_username!=this.room.username){return;}if(!$defined(this.getUser(data.username))){return;}var user=this.getUser(data.username);this.loader.remove(user.user_id);},roomMemberRequestAdded:function(data){if(!$defined(data.room_username)||!$defined(data.user)||data.room_username!=this.room.username){return;}var user=UserUtility.processUser(data.user);user.date_created=new Date().getTime()/1000;this.loader.process(user);}});var RoomSubscribersContent=new Class({Extends:Content,EventHandlers:["roomSubscriberAdded","roomSubscriberDeleted"],onBeforeInit:function(options){this.room=options.room;return options;},onInit:function(){this.statusBox=new RoomStatusBox(this.room);$(this.statusBox).inject(this.content);StreamItemUtility.createSeperatorItem("Subscribers").inject(this.content);this.loader=new ItemLoader({idField:"user_id",sortField:"date_created",sortAscending:false,createElementFunc:ContactItemUtility.createRoomSubscriberItem,emptyEl:new Element("div",{"class":"post empty","text":"There are no subscribers to this room"}),loadingEl:new Element("div",{"class":"post empty","text":"Room subscribers loading..."})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},roomSubscriberAdded:function(data){if(!$defined(data.username)||!$defined(data.user)||data.username!=this.room.username){return;}var user=UserUtility.processUser(data.user);user.date_created=new Date().getTime()/1000;this.loader.process(user);},roomSubscriberDeleted:function(data){if(!$defined(data.username)||!$defined(data.room_username)||data.room_username!=this.room.username){return;}if(!$defined(this.getUser(data.username))){return;}var user=this.getUser(data.username);this.loader.remove(user.user_id);},loadMore:function(){var params={username:this.room.username,date_created:this.loader.lowestSortValue};this.call("pipio","room_subscribers",params,this.loadMoreSuccess.bind(this),null);this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.subscribers)||data.subscribers.length==0){this.atBottom=true;return;}data.subscribers.each(function(user){var user_copy=UserUtility.processUser(user);user_copy.date_created=user.date_created;this.loader.process(user_copy);},this);this.bottomFuncCalled=false;},bottomFunc:function(){this.loadMore();}});var RoomEditProfilePopupContent=new Class({Extends:PopupContent,strings:{bioLabel:"About:",urlLabel:"Website:"},onBeforeInit:function(options){this.room=options.room;return options;},onInit:function(){this.bioInput=new Element("textarea",{"maxlength":500});new Element("div",{"class":"input_section bio"}).adopt(new Element("div",{"class":"label light","text":this.strings.bioLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.bioInput)).inject(this.content);this.urlInput=new Element("input",{"type":"text","maxlength":200});new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.urlLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.urlInput)).inject(this.content);var about=this.getProfile(this.room.username);if($defined(about)){if($defined(about.bio)){this.bioInput.set("text",about.bio);}if($defined(about.url)){this.urlInput.value=about.url;}}this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Update",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.updateProfile.bind(this));this.message=new Element("div",{"class":"message error"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},updateProfile:function(){var bio=this.bioInput.value.trim();var url=this.urlInput.value.trim();var params={username:this.room.username,bio:bio,url:url};this.call("home","room_profile_update",params,this.updateProfileSuccess.bind(this),this.updateProfileFail.bind(this));this.actionButton.showProgress();this.message.empty();},updateProfileSuccess:function(data){this.actionButton.hideProgress();this.closeContent();},updateProfileFail:function(){this.actionButton.hideProgress();this.message.set("text",this.strings.errorMessage);},onShow:function(){this.focus();},focus:function(){this.bioInput.focus.delay(500,this.bioInput);}});var RoomSearchPopupContent=new Class({Extends:PopupContent,strings:{roomSearchMessage:"Enter any terms to search for a room",errorMessage:"There was an error creating this group"},onInit:function(){new Element("div",{"class":"text_section centered light","text":this.strings.roomSearchMessage}).inject(this.content);this.searchInput=new Element("input",{"type":"text","maxlength":"50"});this.searchInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"textarea_wrapper"}).adopt(this.searchInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Search",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.search.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.searchInput.value.trim()!=""){this.search();}}},search:function(){var query=this.searchInput.value.trim();var params={query:query};this.call("home","room_search",params,this.searchSuccess.bind(this),this.searchFail.bind(this));this.actionButton.showProgress();},searchSuccess:function(data){this.actionButton.hideProgress();if(!$defined(data.rooms)){return;}if(data.rooms.length==0){var name="room_search";var title="No Results";var message="Your search returned no results";this.fireEvent("showAlert",name,title,message);}else{this.showResultsPopup(data.rooms);}},searchFail:function(status){this.actionButton.hideProgress();var name="search_user";var title="Error";var message=status.message;this.fireEvent("showAlert",name,title,message);},showResultsPopup:function(rooms){if($defined(this.resultsPopup)){this.resultsPopup.close();}this.createResultsPopup(rooms);},closeResultsPopup:function(){if($defined(this.resultsPopup)){this.resultsPopup.close();}},createResultsPopup:function(rooms){this.resultsPopup=new Popup({size:{x:350,y:400},resizable:false,dockable:false,className:"roomSearch",onClose:this.destroyResultsPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"search"},displayName:"Search Results",closable:true});var content=new RoomSearchResultPopupContent({rooms:rooms});this.resultsPopup.addContent("results",nav,content);},destroyResultsPopup:function(){this.resultsPopup=null;},onShow:function(){this.focus();},focus:function(){this.searchInput.focus.delay(500,this.searchInput);},onClose:function(){this.closeResultsPopup();}});var RoomSearchResultPopupContent=new Class({Extends:PopupContent,strings:{searchResultMessage:"Search results"},onBeforeInit:function(options){this.rooms=options.rooms;return options;},onInit:function(){this.list=new Element("div",{"class":"itemList"}).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.closeButton)).inject(this.content);this.insertRooms();},insertRooms:function(){this.rooms.each(function(room){room=UserUtility.processRoom(room);this.insertRoom(room);},this);},insertRoom:function(room){var el=RoomItemUtility.createRoomItem(room);el.addEvent("click",this.fireEvent.bind(this,["showRoom",room]));el.inject(this.list);}});var RoomItemUtility={createRoomItem:function(room){var el=new Element("div",{"class":"listItem"});ItemUtility.createProfilePic(room,32).inject(el);new Element("div",{"class":"listText text12 light","text":TextUtility.cleanText(room.room_name+" ("+room.username+")")}).inject(el);if($defined(room.about)&&$defined(room.about.bio)){new Element("div",{"class":"about_text text11 light3","text":TextUtility.cleanText(room.about.bio)}).inject(el);}return el;}};var RoomConnectionMenuSection=new Class({Extends:Base,EventHandlers:["roomStreamSubscriptionAdded","roomStreamSubscriptionDeleted","roomMembershipUpdated"],init:function(options){this.room=this.getRoom(options.room.username);this.subscribed=parseInt(this.room.subscribed)==1;this.isCreator=this.room.creator_id==this.getPrivateUser().user_id;this.createSection();},createSection:function(){this.wrapper=new Element("div");this.generateSection();},setRoom:function(room){this.room=room;this.generateSection();},generateSection:function(){this.wrapper.empty();this.generateSubscriptionSection();if(this.isCreator){this.generatePrivacySection();new Element("div",{"class":"text_section light centered text11","text":"You are the creator"}).inject(this.wrapper);this.button=new ButtonMedium({displayName:"Close Room",className:"dark",action:"cross"});var name="roomDelete_"+this.room.username;var title="Close "+this.room.room_name;var message="Are you sure you want to close the room "+this.room.room_name+"?";var func=pipio.dispatchEvent.bind(pipio,["feedRoomDelete",this.room.username]);$(this.button).addEvent("click",pipio.dispatchEvent.bind(pipio,["showConfirmation",name,title,message,func]));new Element("div",{"class":"button_section"}).adopt($(this.button)).inject(this.wrapper);}else{switch(parseInt(this.room.status)){case 1:this.createConnectedSection();break;case 2:this.createRequestSection();break;case 3:this.createRequestOutSection();break;default:this.createNotConnectedSection();break;}}},createNotConnectedSection:function(){this.button=new ButtonMedium({displayName:"Join Room",className:"dark",action:"check"});var name="roomRequest_"+this.room.username;var title="Join "+this.room.room_name;var message="Send membership request to "+this.room.room_name+"?";var func=this.roomRequestCreate.bind(this);$(this.button).addEvent("click",pipio.dispatchEvent.bind(pipio,["showConfirmation",name,title,message,func]));new Element("div",{"class":"button_section"}).adopt($(this.button)).inject(this.wrapper);},createConnectedSection:function(){new Element("div",{"class":"text_section light centered text11","text":"You are a member"}).inject(this.wrapper);this.button=new ButtonMedium({displayName:"Leave Room",className:"dark",action:"cross"});var name="roomLeave_"+this.room.username;var title="Leave "+this.room.room_name;var message="Are you sure you want to leave "+this.room.room_name+"?";var func=this.roomMembershipDelete.bind(this);$(this.button).addEvent("click",pipio.dispatchEvent.bind(pipio,["showConfirmation",name,title,message,func]));new Element("div",{"class":"button_section"}).adopt($(this.button)).inject(this.wrapper);},createRequestSection:function(){this.button=new ButtonMedium({displayName:"Accept Membership",className:"dark",action:"check"});$(this.button).addEvent("click",this.roomInviteAccept.bind(this));new Element("div",{"class":"button_section"}).adopt($(this.button)).inject(this.wrapper);this.button2=new ButtonMedium({displayName:"Reject Membership",className:"dark",action:"cross"});$(this.button2).addEvent("click",this.roomInviteDelete.bind(this));new Element("div",{"class":"button_section"}).adopt($(this.button2)).inject(this.wrapper);},roomInviteAccept:function(){this.call("home","room_invite_accept",{username:this.room.username},null,null);this.button.showProgress();},roomInviteDelete:function(){var params={username:this.getPrivateUser().username,room_username:this.room.username};this.call("home","room_invite_delete",params,null,null);this.button2.showProgress();},createRequestOutSection:function(){new Element("div",{"class":"text_section light centered text11","text":"Membership request pending"}).inject(this.wrapper);},roomRequestCreate:function(){this.call("home","room_request_create",{username:this.room.username},null,null);this.button.showProgress();},roomMembershipDelete:function(){this.call("home","room_leave",{username:this.room.username},null,null);this.button.showProgress();},generateSubscriptionSection:function(){this.subscription=new Toggle(this.subscribed);$(this.subscription).addEvent("click",this.subscriptionToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Subscribe:"}),$(this.subscription)).inject(this.wrapper);},generatePrivacySection:function(){this.privacy=new Toggle(this.room.is_public==1);$(this.privacy).addEvent("click",this.privacyToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Public:"}),$(this.privacy)).inject(this.wrapper);},privacyToggle:function(){this.call("home","room_privacy_set",{username:this.room.username,is_public:this.privacy.toInt()});},subscriptionToggle:function(){Logger().log(this.subscribed);if(this.subscribed){this.streamUnsubscribe();}else{this.streamSubscribe();}},streamUnsubscribe:function(){this.subscription.off();this.call("home","room_unsubscribe",{username:this.room.username});},streamSubscribe:function(){this.subscription.on();this.call("home","room_subscribe",{username:this.room.username},null,this.streamSubscribeFail.bind(this));},streamSubscribeFail:function(status){if(status.code==2002){this.subscription.off();var name="subscription";var title="Error";var message=status.message;this.fireEvent("showAlert",name,title,message);}},roomPrivacyUpdated:function(data){if(!$defined(data.username)||data.username!=this.room.username,!$defined(data.is_public)){return;}if(data.is_public==1){this.privacy.on();}else{this.privacy.off();}},roomStreamSubscriptionAdded:function(data){if(!$defined(data.room)||data.room.username!=this.room.username){return;}this.subscribed=true;this.generateSection();},roomStreamSubscriptionDeleted:function(data){if(!$defined(data.username)||data.username!=this.room.username){return;}this.subscribed=false;this.generateSection();},roomMembershipUpdated:function(data){if(!$defined(data.username)||data.username!=this.room.username){return;}this.room.status=parseInt(data.status);this.generateSection();},toElement:function(){return this.wrapper;}});var RoomMenu=new Class({Extends:Menu,EventHandlers:["roomMemberAdded","roomMemberDeleted","roomSubscriberAdded","roomSubscriberDeleted","roomMemberRequestDeleted","roomMemberRequestAdded"],strings:{groupMenuText:'These are contacts in your group "{0}"',unsortedGroupMenuText:"These are contacts that have not been added to a group"},onBeforeInit:function(options){this.room=options.room;this.appId=options.appId;this.isCreator=this.room.creator_id==this.getPrivateUser().user_id;return options;},onInit:function(){ItemUtility.createProfilePic(this.room,100).inject(this.menu);this.aboutSection=new RoomProfileMenuSection({room:this.room});$(this.aboutSection).inject(this.menu);if(this.isLoggedIn()){this.connect=new RoomConnectionMenuSection({room:this.room});$(this.connect).inject(this.menu);if(this.isCreator){this.profilePicUploadButton=new ButtonMedium({displayName:"Change Picture",className:"dark",action:"photo"});this.fileInput=new Element("input",{"type":"file","name":"file"});this.form=new Element("form").adopt(this.fileInput);this.fileInput.addEvent("change",this.profilePicUpload.bind(this));this.profilePicUploadSection=new Element("div",{"class":"button_section"}).adopt($(this.profilePicUploadButton).adopt(this.form)).inject(this.menu);var editProfileButton=new ButtonMedium({displayName:"Edit Profile",className:"dark",action:"edit"});$(editProfileButton).addEvent("click",this.fireEvent.bind(this,["showEditRoomProfilePopup",this.room]));new Element("div",{"class":"button_section"}).adopt($(editProfileButton)).inject(this.menu);this.inviteButton=new ButtonMedium({displayName:"Invite Members",className:"dark",action:"forward"});$(this.inviteButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showRoomInvitePopup",this.room]));new Element("div",{"class":"button_section"}).adopt($(this.inviteButton)).inject(this.menu);}}new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.members=new MembersNav({room:this.room,appId:this.appId,onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"room_members","room_menu"])});$(this.members).inject(this.menu);this.subscribers=new SubscribersNav({user:this.room,appId:this.appId,onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"room_subscribers","room_menu"])});$(this.subscribers).inject(this.menu);if(this.isCreator){this.requests=new MemberRequestsNav({room:this.room,appId:this.appId,onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"room_requests","room_menu"])});$(this.requests).inject(this.menu);}},onShow:function(first){if(first){this.roomInfoLoad();}},roomInfoLoad:function(){if(this.isLoggedIn()){this.call("home","room_info_load",{username:this.room.username},this.roomInfoLoadSuccess.bind(this),null);}else{this.call("home","public_room_info_load",{username:this.room.username},this.roomInfoLoadSuccess.bind(this),null);}},roomMemberAdded:function(data){if(!$defined(data.room_username)||!$defined(data.user)||data.room_username!=this.room.username){return;}this.members.addUsers(data.user);this.requests.removeUser(data.user.username);},roomMemberDeleted:function(data){if(!$defined(data.username)||!$defined(data.room_username)||data.room_username!=this.room.username){return;}this.members.removeUser(data.username);},roomSubscriberAdded:function(data){if(!$defined(data.username)||!$defined(data.user)||data.username!=this.room.username){return;}this.subscribers.addUsers(data.user);},roomSubscriberDeleted:function(data){if(!$defined(data.username)||!$defined(data.room_username)||data.room_username!=this.room.username){return;}this.subscribers.removeUser(data.username);},roomMemberRequestDeleted:function(data){if(!$defined(data.room_username)||!$defined(data.username)||data.room_username!=this.room.username){return;}this.requests.removeUser(data.username);},roomMemberRequestAdded:function(data){if(!$defined(data.room_username)||!$defined(data.user)||data.room_username!=this.room.username){return;}this.requests.addUsers(data.user);},roomInfoLoadSuccess:function(data){if(!$defined(data.room)){return;}var room=UserUtility.processRoom(data.room);this.subscribers.addUsers(data.subscribers);this.members.addUsers(data.members);if($defined(data.requests)&&$defined(this.requests)){this.requests.addUsers(data.requests);}},profilePicUpload:function(){if(DataUtility.validatePhotoFile(this.fileInput.value)){this.call("pipio","room_profilepic_upload",{username:this.room.username},this.profilePicUploadSuccess.bind(this),this.profilePicUploadFail.bind(this),this.form);this.profilePicUploadButton.showProgress();}},profilePicUploadSuccess:function(){this.profilePicUploadButton.hideProgress();this.resetForm();},profilePicUploadFail:function(){this.profilePicUploadButton.hideProgress();this.resetForm();},resetForm:function(){this.profilePicUploadSection.empty();this.profilePicUploadButton=new ButtonMedium({displayName:"Change Picture",className:"dark",action:"photo"});this.fileInput=new Element("input",{"type":"file","name":"file"});this.form=new Element("form").adopt(this.fileInput);this.fileInput.addEvent("change",this.profilePicUpload.bind(this));this.profilePicUploadSection.adopt($(this.profilePicUploadButton).adopt(this.form));}});var RoomProfileMenuSection=new Class({Extends:Base,EventHandlers:["roomProfileUpdated"],init:function(options){this.room=options.room;this.createSection();},createSection:function(){this.wrapper=new Element("div");this.bioText=new Element("span");this.bioSection=new Element("div",{"class":"text_section light1 text11 edit_option"}).adopt(new Element("span",{"class":"bold","text":"About: "}),this.bioText).inject(this.wrapper);this.urlText=new Element("a",{"target":"_blank"});this.urlSection=new Element("div",{"class":"text_section light1 text11 nowrap edit_option"}).adopt(new Element("span",{"class":"bold","text":"Web: "}),this.urlText).inject(this.wrapper);this.roomProfileUpdated(this.room.username,this.getProfile(this.room.username));},roomProfileUpdated:function(username,about){if(username!=this.room.username){return;}if(!$defined(about)){DomUtility.hide(this.bioSection);DomUtility.hide(this.urlSection);return;}if(!$defined(about.bio)||about.bio==""){DomUtility.hide(this.bioSection);}else{this.bioText.set("text",TextUtility.unescape(about.bio));DomUtility.show(this.bioSection);}if(!$defined(about.url)||about.url==""){DomUtility.hide(this.urlSection);}else{this.urlText.set("text",TextUtility.unescape(about.url));this.urlText.set("href",about.url);DomUtility.show(this.urlSection);}},toElement:function(){return this.wrapper;}});var Rss=new Class({Extends:App,EventHandlers:["userSwitched","rssInstall","rssUninstall","rssFeedSubscribed","rssFeedUnsubscribed","showAddRssFeedPopup"],onStart:function(){this.setupNav();this.feeds=$H();this.loadSubscriptions();},onStop:function(){},userSwitched:function(){if(!this.isLoggedIn()){this.stop();}},loadSubscriptions:function(){this.call("rss","rss_subscriptions",null,this.loadSubscriptionsSuccess.bind(this),null);},loadSubscriptionsSuccess:function(data){if(!$defined(data.subscriptions)){return;}data.subscriptions.each(function(subscription){this.rssFeedAdd(subscription);},this);},rssFeedSubscribed:function(data){if(!$defined(data.subscription)){return;}this.rssFeedAdd(data.subscription);},rssFeedUnsubscribed:function(data){if(!$defined(data.atom_id)){return;}this.rssFeedDelete(data.atom_id);},rssUninstall:function(){this.call("rss","rss_uninstall",null,this.rssUninstallSuccess.bind(this),null);},rssUninstallSuccess:function(){this.stop();},rssInstall:function(){this.call("rss","rss_install",null,this.rssInstallSuccess.bind(this),null);},rssInstallSuccess:function(){this.start();}});Rss.implement({requests:[{name:"rss_subscriptions",url:"/api/app/rss/subscriptions"},{name:"rss_subscriptions_add",params:["feed_url"],url:"/api/app/rss/subscriptions/add"},{name:"rss_subscriptions_delete",params:["subscription_id"],url:"/api/app/rss/subscriptions/delete"},{name:"rss_feed",params:["atom_id","item_id"],url:"/api/app/rss/feed"},{name:"rss_feed_all",url:"/api/app/rss/feed/all"},{name:"rss_feed_subscribers",params:["atom_id"],url:"/api/app/rss/feed/subscribers"},{name:"rss_install",params:[],url:"/api/app/rss/install"},{name:"rss_uninstall",params:[],url:"/api/app/rss/uninstall"}]});Rss.implement({setupNav:function(){var homeNav=new Nav({iconOptions:{iconName:"updates"},displayName:"All News Updates",name:"updates",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"updates","rss_menu"])});this.navAdd(homeNav);this.navAdd(new Nav({iconOptions:{iconName:"rss"},hasSubnavs:true,displayName:"Feeds",name:"feeds"}));this.navAdd(new Nav({iconOptions:{iconName:"broadcast",iconAction:"add"},displayName:"Add New Feed...",onClick:this.showAddRssFeedPopup.bind(this),name:"new_feed",parentName:"feeds",bottom:true}));var rssMenu=new RssMenu({isDefault:true,closeFunc:this.stop.bind(this),navId:homeNav.navId});this.menuAdd("rss_menu",rssMenu);var content=new RssContent({isDefault:true});this.contentAdd("updates",content);},rssFeedAdd:function(feed){if(this.feeds.has(feed.atom_id)){return;}var nav=new Nav({iconOptions:{"iconName":"rss"},displayName:feed.title,name:"rss_"+feed.atom_id,parentName:"feeds",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"rss_"+feed.atom_id,"rss_"+feed.atom_id])});this.navAdd(nav);this.feeds.set(feed.atom_id,nav);var feedMenu=new RssFeedMenu({displayName:feed.title,feed:feed});this.menuAdd("rss_"+feed.atom_id,feedMenu);var content=new RssFeedContent({feed:feed});this.contentAdd("rss_"+feed.atom_id,content);},rssFeedDelete:function(atom_id){if(!this.feeds.has(atom_id)){return;}this.feeds.get(atom_id).destroy();this.navDelete("rss_"+atom_id);this.feeds.erase(atom_id);this.menuClose("rss_"+atom_id);this.contentClose("rss_"+atom_id);},showAddRssFeedPopup:function(){if($defined(this.addFeedPopup)){this.addFeedPopup.close();}this.createAddRssFeedPopup();},createAddRssFeedPopup:function(){this.addFeedPopup=new Popup({size:{x:350,y:94},resizable:false,dockable:false,className:"addFeed",onClose:this.destroyAddRssFeedPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"rss",iconAction:"add"},displayName:"Subscribe to a Feed",closable:true});var content=new AddRssFeedPopupContent({});this.addFeedPopup.addContent("add_feed",nav,content);},destroyAddRssFeedPopup:function(){this.addFeedPopup=null;}});var RssContent=new Class({Extends:Content,EventHandlers:["rssItemReceived"],onBeforeInit:function(options){this.feed=options.feed;this.sessionTimestamp=(new Date().getTime())/1000;return options;},onInit:function(){this.loader=new ItemLoader({createElementFunc:RssItemUtility.createRssAllItem,idField:"atom_item_id",sortField:"date_created",sortAscending:false,emptyEl:new Element("div",{"class":"post empty","text":"This feed has no items"}),loadingEl:new Element("div",{"class":"post empty","text":"Feed loading..."}),alertFunc:this.alertCheck.bind(this)});$(this.loader).inject(this.content);},alertCheck:function(item){if(item.date_created>this.sessionTimestamp){this.fireEvent("alertAdd",this.navId);}},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},rssItemReceived:function(data){if($defined(data.item)){this.loader.process(data.item);}},loadMore:function(){var params={date_created:this.loader.lowestSortValue};this.call("rss","rss_feed_all",params,this.loadMoreSuccess.bind(this),null);this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){item.feed=this.feed;this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){this.loadMore();}});var RssFeedContent=new Class({Extends:Content,EventHandlers:["rssItemReceived"],onBeforeInit:function(options){this.feed=options.feed;return options;},onInit:function(){this.loader=new ItemLoader({createElementFunc:RssItemUtility.createRssFeedItem,idField:"atom_item_id",sortField:"date_created",sortAscending:false,emptyEl:new Element("div",{"class":"post empty","text":"This feed has no items"}),loadingEl:new Element("div",{"class":"post empty","text":"Feed loading..."})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},rssItemReceived:function(data){if($defined(data.item)&&data.item.atom_id==this.feed.atom_id){this.loader.process(data.item);}},loadMore:function(){var params={atom_id:this.feed.atom_id,date_created:this.loader.oldestTimestamp};this.call("rss","rss_feed",params,this.loadMoreSuccess.bind(this),null);this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){item.feed=this.feed;this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){Logger().log("rss content bottom");}});var RssFeedMenu=new Class({Extends:Menu,onBeforeInit:function(options){this.feed=options.feed;return options;},onInit:function(){this.urlText=new Element("a",{"target":"_blank","href":this.feed.link,"text":TextUtility.unescape(this.feed.link)});new Element("div",{"class":"text_section nowrap text11 light1"}).adopt(new Element("span",{"class":"bold","text":"Web: "}),this.urlText).inject(this.menu);new Element("div",{"class":"text_section light1","text":TextUtility.unescape(this.feed.description)}).inject(this.menu);this.deleteButton=new ButtonMedium({displayName:"Unsubscribe",className:"dark",action:"cross"});var name="rssFeedUnsubscribe_"+this.feed.atom_id;var title="Unsubscribe "+this.feed.title;var message="Are you sure you want to unsubscribe from the feed "+this.feed.title+"?";var func=this.rssUnsubscribe.bind(this);$(this.deleteButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showConfirmation",name,title,message,func]));new Element("div",{"class":"button_section"}).adopt($(this.deleteButton)).inject(this.menu);new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.subscribers=new SubscribersNav({user:this.feed});$(this.subscribers).inject(this.menu);},onShow:function(first){if(first){this.subscribersLoad();}},subscribersLoad:function(){this.call("rss","rss_feed_subscribers",{atom_id:this.feed.atom_id},this.subscribersLoadSuccess.bind(this),null);},subscribersLoadSuccess:function(data){if(!$defined(data.subscribers)){return;}this.subscribers.addUsers(data.subscribers);},rssUnsubscribe:function(){var params={subscription_id:this.feed.subscription_id};this.call("rss","rss_subscriptions_delete",params,this.rssUnsubscribeSuccess.bind(this),this.rssUnsubscribeFail.bind(this));this.deleteButton.showProgress();},rssUnsubscribeSuccess:function(data){this.deleteButton.hideProgress();},rssUnsubscribeFail:function(){this.deleteButton.hideProgress();}});var RssMenu=new Class({Extends:Menu,onBeforeInit:function(options){options.displayName="News Reader";return options;},onInit:function(){new Element("div",{"class":"text_section light1","text":TextUtility.unescape("All updates from your subscriptions will be visible here")}).inject(this.menu);}});var AddRssFeedPopupContent=new Class({Extends:PopupContent,strings:{feedUrlLabel:"Feed URL:",errorMessage:"There was an error subscribing to this feed"},onInit:function(){this.feedUrlInput=new Element("textarea",{"maxlength":200});this.feedUrlInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.feedUrlLabel}),new Element("div",{"class":"textarea_wrapper"}).adopt(this.feedUrlInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Subscribe",className:"dark",action:"check"});$(this.actionButton).addEvent("click",this.feedSubscribe.bind(this));this.message=new Element("div",{"class":"message success"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.feedUrlInput.value.trim()!=""){this.feedSubscribe();}}},feedSubscribe:function(){var url=this.feedUrlInput.value.trim();var params={feed_url:url};this.call("rss","rss_subscriptions_add",params,this.feedSubscribeSuccess.bind(this),this.feedSubscribeFail.bind(this));this.actionButton.showProgress();this.message.set("text","please wait...");},feedSubscribeSuccess:function(){this.actionButton.hideProgress();this.closeContent();},feedSubscribeFail:function(status){this.actionButton.hideProgress();var name="feed_subscribe";var title="Error Subscribing to Feed";var message=status.message;this.message.empty();this.fireEvent("showAlert",name,title,message);},onShow:function(){this.focus();},focus:function(){this.feedUrlInput.focus.delay(500,this.feedUrlInput);}});var RssItemUtility={createRssFeedItem:function(item){return RssItemUtility.createRssItem(item,false);},createRssAllItem:function(item){return RssItemUtility.createRssItem(item,true);},createRssItem:function(item,showFeed){var el=ItemUtility.createPostBubble("post haspic");ItemUtility.createItemPic("/images/v5/apps/rss/feed_icon.png").inject(el);var content=new Element("div",{"class":"post_content"}).inject(el);RssItemUtility.createRssItemHeader(item,showFeed).inject(content);RssItemUtility.createRssItemFooter(item,showFeed).inject(content);return el;},createRssItemHeader:function(item,showFeed){var el=new Element("div",{"class":"header"});new Element("span",{}).adopt(new Element("a",{"href":item.link,"class":"user_name clickable","text":TextUtility.unescape(item.title),"target":"_blank"})).inject(el);if($defined(item.summary)&&item.summary!=""){new Element("span",{"html":" "+TextUtility.replaceUrls(TextUtility.stripHtml(TextUtility.unescape(item.summary)))}).inject(el);}return el;},createRssItemFooter:function(item){var el=new Element("div",{"class":"footer"});if(!$defined(item.date_created)){return el;}var date=DateUtility.convertFromTimestamp(item.date_created);var ts=new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D at %I:%M%p"),"ts":date,"ts_format":"%B %D at %I:%M%p"}).inject(el);return el;}};var Twitter=new Class({Extends:App,EventHandlers:["userSwitched","twitterInstall","twitterUninstall","showTwitterUser","twitterShowFollowing","twitterShowFollowers","showTwitterList","twitterListSubscribed","twitterListUnsubscribed","twitterListsLoaded","showTwitterSearchPopup","twitterSearch","twitterRetweet","twitterDelete","twitterSavedSearchesLoaded","twitterSavedSearchAdd","twitterSavedSearchDelete"],parseOptions:function(options){this.settings=options.settings;},onStart:function(){this.setupNav();},onStop:function(){},userSwitched:function(){if(!this.isLoggedIn()){this.userLoggedOut();}},userLoggedOut:function(){this.stop();},twitterInstall:function(){this.installPopup=new Popup({size:{x:350,y:80},resizable:false,dockable:false,className:"appInstall",onClose:this.destroyTwitterInstallPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"twitter"},displayName:"Install Twitter",closable:true});var content=new TwitterInstallPopupContent({});this.installPopup.addContent("install",nav,content);},destroyTwitterInstallPopup:function(){this.installPopup=null;},twitterUninstall:function(){this.call("twitter","twitter_uninstall",null,this.twitterUninstallSuccess.bind(this));},twitterUninstallSuccess:function(){this.stop();},twitterRetweet:function(id){var name="twitterRetweet_"+id;var title="Retweet an Update";var message="Retweet this update?";var func=this.twitterRetweetCall.bind(this,[id]);this.fireEvent("showConfirmation",name,title,message,func);},twitterRetweetCall:function(id){this.call("twitter","twitter_retweet",{id:id},this.twitterRetweetSuccess.bind(this));},twitterRetweetSuccess:function(data){},twitterDelete:function(id){var name="twitterDelete_"+id;var title="Delete Update";var message="Delete this update?";var func=this.twitterDeleteCall.bind(this,[id]);this.fireEvent("showConfirmation",name,title,message,func);},twitterDeleteCall:function(id){this.call("twitter","twitter_item_delete",{id:id},this.twitterDeleteSuccess.bind(this));},twitterDeleteSuccess:function(data){if(!$defined(data.id)){return;}TwitterItemUtility.deleteTwitterItem(data.id);}});Twitter.implement({requests:[{name:"twitter_auth_request",url:"/api/app/twitter/auth/request"},{name:"twitter_install",params:["sync_posts"],url:"/api/app/twitter/install"},{name:"twitter_uninstall",url:"/api/app/twitter/uninstall"},{name:"twitter_user_show",params:["screen_name"],url:"/api/app/twitter/user/show"},{name:"twitter_list_show",params:["screen_name","slug"],url:"/api/app/twitter/list/show"},{name:"twitter_self_show",params:["screen_name"],url:"/api/app/twitter/self/show"},{name:"twitter_home_timeline",params:["since_id","max_id"],url:"/api/app/twitter/home/timeline"},{name:"twitter_user_timeline",params:["username","since_id","max_id"],url:"/api/app/twitter/user/timeline"},{name:"twitter_lists_timeline",params:["screen_name","list_id","since_id","max_id"],url:"/api/app/twitter/lists/timeline"},{name:"twitter_mentions",params:["since_id","max_id","count","page"],url:"/api/app/twitter/mentions"},{name:"twitter_settings_update",params:["key","value"],url:"/api/app/twitter/settings/update"},{name:"twitter_follow",params:["screen_name"],url:"/api/app/twitter/follow"},{name:"twitter_unfollow",params:["screen_name"],url:"/api/app/twitter/unfollow"},{name:"twitter_settings_set",params:["key","value"],url:"/api/app/twitter/settings/update"},{name:"twitter_friends",params:["username","page"],url:"/api/app/twitter/friends"},{name:"twitter_followers",params:["username","page"],url:"/api/app/twitter/followers"},{name:"twitter_block",params:["screen_name"],url:"/api/app/twitter/block"},{name:"twitter_post_text",params:["body","post_id"],url:"/api/app/twitter/text/item_create"},{name:"twitter_search",params:["q","page"],url:"/api/app/twitter/search"},{name:"twitter_searches_create",params:["query"],url:"/api/app/twitter/searches/create"},{name:"twitter_searches_delete",params:["id"],url:"/api/app/twitter/searches/delete"},{name:"twitter_retweet",params:["id"],url:"/api/app/twitter/retweet"},{name:"twitter_item_delete",params:["id"],url:"/api/app/twitter/item/delete"},{name:"twitter_dm_inbox",url:"/api/app/twitter/dm/inbox"},{name:"twitter_dm_all",url:"/api/app/twitter/dm/all"},{name:"twitter_dm_delete",params:["id"],url:"/api/app/twitter/dm/delete"},{name:"twitter_dm_send",params:["recipient","message"],url:"/api/app/twitter/dm/send"},{name:"twitter_searches_saved",url:"/api/app/twitter/searches/saved"},{name:"twitter_trends",url:"/api/app/twitter/trends"},{name:"twitter_favorites",url:"/api/app/twitter/favorites"},{name:"twitter_favorites_create",params:["id","element_id"],url:"/api/app/twitter/favorites/create"},{name:"twitter_favorites_delete",params:["id","element_id"],url:"/api/app/twitter/favorites/delete"},{name:"twitter_lists",params:["screen_name"],url:"/api/app/twitter/lists"},{name:"twitter_lists_members",url:"/api/app/twitter/lists/members"},{name:"twitter_lists_create",params:["name","mode","description"],url:"/api/app/twitter/lists/create"},{name:"twitter_lists_delete",params:["list_id"],url:"/api/app/twitter/lists/delete"},{name:"twitter_lists_statuses",params:["screen_name","list_id","cursor","page"],url:"/api/app/twitter/lists/statuses"},{name:"twitter_lists_add_user",params:["list_id","id"],url:"/api/app/twitter/lists/add_user"},{name:"twitter_lists_get_users",params:["screen_name","list_id"],url:"/api/app/twitter/lists/get_users"},{name:"twitter_lists_delete_user",params:["list_id","id"],url:"/api/app/twitter/lists/delete_user"},{name:"twitter_lists_subscribe",params:["screen_name","list_id"],url:"/api/app/twitter/lists/subscribe"},{name:"twitter_lists_subscribers",params:["screen_name","list_id"],url:"/api/app/twitter/lists/subscribers"},{name:"twitter_lists_unsubscribe",params:["screen_name","list_id"],url:"/api/app/twitter/lists/unsubscribe"},{name:"twitter_lists_subscriptions",params:["screen_name"],url:"/api/app/twitter/lists/subscriptions"},{name:"twitter_lists_memberships",params:["screen_name"],url:"/api/app/twitter/lists/memberships"},{name:"twitter_post_link",params:["body","url","post_id"],url:"/api/app/twitter/link/item_create"},{name:"twitter_post_photo",params:["body","photo","post_id"],url:"/api/app/twitter/photo/item_create",multipart:true},]});Twitter.implement({twitterSavedSearchesLoaded:function(searches){this.saved_searches=$H();searches.each(function(search){this.saved_searches.set(search.id,search);},this);},twitterSavedSearchAdd:function(search){this.saved_searches.set(search.id,search);},twitterSavedSearchDelete:function(id){this.saved_searches.erase(id);},twitterSearch:function(query,search_id){if(!$defined(search_id)){search_id=0;}var search={query:query,id:search_id};if(this.searches.has(query)){this.fireEvent("viewSwitch",this.appId,"search_"+query,"search_"+query);return;}this.searchAdd(search);},searchAdd:function(search){if(!$defined(this.searchNav)){this.searchNav=new Nav({iconOptions:{iconName:"search"},hasSubnavs:true,displayName:"Searches",name:"searches"});this.navAdd(this.searchNav);}var nav=new Nav({displayName:search.query,closable:true,name:"search_"+search.query,parentName:"searches",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"search_"+search.query,"search_"+search.query])});this.navAdd(nav);this.searches.set(search.query,search);var content=new TwitterSearchContent({search:search,navId:nav.navId});this.contentAdd("search_"+search.query,content);var menu=new TwitterSearchMenu({search:search,searches:this.saved_searches,closable:true,closeFunc:this.searchClose.bind(this,search)});this.menuAdd("search_"+search.query,menu);this.fireEvent("viewSwitch",this.appId,"search_"+search.query,"search_"+search.query);},searchClose:function(search){Logger().log("attempting to close "+search.query);if(!this.searches.has(search.query)){return;}this.navDelete("search_"+search.query);this.menuClose("search_"+search.query);this.contentClose("search_"+search.query);this.searches.erase(search.query);if(this.searches.getLength()==0){this.navDelete("searches");this.searchNav=null;}}});Twitter.implement({setupNav:function(){this.searches=$H();this.users=$H();this.lists=$H();this.listSubs=$H();var homeNav=new Nav({iconOptions:{iconName:"updates"},displayName:"Home",name:"updates",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"updates","self_menu"])});this.navAdd(homeNav);var mentionsNav=new Nav({iconOptions:{iconName:"at"},displayName:this.settings.screen_name,name:"mentions",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"mentions","self_menu"])});this.navAdd(mentionsNav);var selfMenu=new TwitterSelfMenu({settings:this.settings,isDefault:true,closeFunc:this.stop.bind(this)});this.menuAdd("self_menu",selfMenu);var content=new TwitterHomeContent({settings:this.settings,isDefault:true,navId:homeNav.navId});this.contentAdd("updates",content);var mentionsContent=new TwitterMentionsContent({settings:this.settings,navId:mentionsNav.navId});this.contentAdd("mentions",mentionsContent);},showTwitterUser:function(screen_name){if(this.users.has(screen_name)){this.fireEvent("viewSwitch",this.appId,screen_name,screen_name);}else{this.call("twitter","twitter_user_show",{screen_name:screen_name},this.userLoaded.bind(this),null);return;}},showTwitterList:function(list_id){if(this.lists.has(list_id)){this.fireEvent("viewSwitch",this.appId,list_id,list_id);}else{var parts=list_id.split("/");this.call("twitter","twitter_list_show",{screen_name:parts[0],slug:parts[1]},this.listLoaded.bind(this),null);return;}},listLoaded:function(data){if(!$defined(data.list)){return;}data.list.following=false;this.listAdd(data.list);},userLoaded:function(data){this.userAdd(data);},twitterListSubscribed:function(list){list.following=true;if(list.following){if(!$defined(this.listsNav)){this.listsNav=new Nav({iconOptions:{iconName:"contacts"},hasSubnavs:true,displayName:"Lists",name:"lists"});this.navAdd(this.listsNav);}var nav=new Nav({iconOptions:{iconName:list.user.profile_image_url},displayName:list.user.screen_name+"/"+list.slug,closable:true,name:list.id,parentName:"lists",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,list.id,list.id]),onClose:this.listClose.bind(this,[list.id])});this.navAdd(nav);this.lists.set(list.id,nav);this.listSubs.set(list.id,list);}},twitterListUnsubscribed:function(list){if(this.listSubs.has(list.id)){this.lists.get(list.id).destroy();this.navDelete(list.id);this.lists.erase(list.id);this.listSubs.erase(list.id);}},twitterListsLoaded:function(data){data.lists.lists.each(function(list){list.following=true;this.listAdd(list);},this);data.list_subscriptions.lists.each(function(list){list.following=true;this.listAdd(list);},this);},userClose:function(screen_name){if(!this.users.has(screen_name)){return;}this.users.get(screen_name).destroy();this.navDelete(screen_name);this.users.erase(screen_name);this.menuClose(screen_name);this.contentClose(screen_name);if(this.users.getLength()==0){this.navDelete("users");this.usersNav=null;}},userAdd:function(user){if(!$defined(this.usersNav)){this.usersNav=new Nav({iconOptions:{iconName:"users"},hasSubnavs:true,displayName:"Users",name:"users"});this.navAdd(this.usersNav);}var nav=new Nav({iconOptions:{iconName:user.profile_image_url},displayName:user.screen_name,closable:true,name:user.screen_name,parentName:"users",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,user.screen_name,user.screen_name]),onClose:this.userClose.bind(this,[user.screen_name])});this.navAdd(nav);this.users.set(user.screen_name,nav);var content=new TwitterUserContent({screen_name:user.screen_name,navId:nav.navId});this.contentAdd(user.screen_name,content);var menu=new TwitterUserMenu({user:user,closable:true,closeFunc:this.userClose.bind(this,user.screen_name)});this.menuAdd(user.screen_name,menu);this.fireEvent("viewSwitch",this.appId,user.screen_name,user.screen_name);},twitterShowFollowing:function(screen_name){var content=new TwitterFollowingContent({screen_name:screen_name});this.contentAdd(screen_name+"_following",content);if(screen_name==this.settings.screen_name){this.fireEvent("viewSwitch",this.appId,screen_name+"_following","self_menu");}else{this.fireEvent("viewSwitch",this.appId,screen_name+"_following",screen_name);}},twitterShowFollowers:function(screen_name){var content=new TwitterFollowersContent({screen_name:screen_name});this.contentAdd(screen_name+"_followers",content);if(screen_name==this.settings.screen_name){this.fireEvent("viewSwitch",this.appId,screen_name+"_followers","self_menu");}else{this.fireEvent("viewSwitch",this.appId,screen_name+"_followers",screen_name);}},listAdd:function(list){if(list.following){if(!$defined(this.listsNav)){this.listsNav=new Nav({iconOptions:{iconName:"contacts"},hasSubnavs:true,displayName:"Lists",name:"lists"});this.navAdd(this.listsNav);}var nav=new Nav({iconOptions:{iconName:list.user.profile_image_url},displayName:list.user.screen_name+"/"+list.slug,closable:true,name:list.id,parentName:"lists",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,list.id,list.id]),onClose:this.listClose.bind(this,[list.id])});this.navAdd(nav);this.lists.set(list.id,nav);this.listSubs.set(list.id,list);}var content=new TwitterListContent({list:list,navId:nav.navId});this.contentAdd(list.id,content);var menu=new TwitterListMenu({list:list,closable:true,closeFunc:this.listClose.bind(this,list.id)});this.menuAdd(list.id,menu);if(!list.following){this.fireEvent("viewSwitch",this.appId,list.id,list.id);}},listClose:function(list_id){if(!this.listSubs.has(list_id)){this.menuClose(list_id);this.contentClose(list_id);}else{this.switchDefault();}},showTwitterSearchPopup:function(){if($defined(this.twitterSearchPopup)){this.twitterSearchPopup.close();}this.createTwitterSearchPopup();},createTwitterSearchPopup:function(){this.twitterSearchPopup=new Popup({size:{x:350,y:74},resizable:false,dockable:false,className:"twitterSearch",onClose:this.destroyTwitterSearchPopup.bind(this)});var nav=new Nav({iconOptions:{iconName:"twitter"},displayName:"Search Twitter",closable:true});var content=new TwitterSearchPopupContent({});this.twitterSearchPopup.addContent("twitter_search",nav,content);},destroyTwitterSearchPopup:function(){this.twitterSearchPopup=null;}});var TwitterFollowersContent=new Class({Extends:Content,EventHandlers:["twitterFollow","twitterUnfollow","twitterBlock"],onBeforeInit:function(options){this.screen_name=options.screen_name;},onInit:function(){this.loader=new ItemLoader({idField:"id",sortField:"name",createElementFunc:TwitterFollowsItemUtility.createTwitterFollowItem,emptyEl:new Element("div",{"class":"post empty","text":this.screen_name+" has no followers"}),loadingEl:new Element("div",{"class":"post empty","text":this.screen_name+"'s followers loading..."})});$(this.loader).inject(this.content);},onShow:function(first){if(first){var params={"username":this.screen_name,"page":-1};this.call("twitter","twitter_followers",params,this.twitterFollowersSuccess.bind(this),null);this.loader.showLoading();}},onHide:function(){},twitterFollowersSuccess:function(data){this.loader.hideLoading();if(!$defined(data.users)||data.users.length==0){return;}this.nextCursor=data.next_cursor;data.users.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){var params={"username":this.screen_name,"page":this.nextCursor};this.call("twitter","twitter_followers",params,this.twitterFollowersSuccess.bind(this),null);},twitterFollow:function(screen_name){var params={screen_name:screen_name};this.call("twitter","twitter_follow",params,this.twitterFollowSuccess.bind(this),null);},twitterFollowSuccess:function(data){if(!$defined(data)){return;}},twitterUnfollow:function(screen_name){var params={screen_name:screen_name};this.call("twitter","twitter_unfollow",params,this.twitterUnfollowSuccess.bind(this),null);},twitterUnfollowSuccess:function(data){if(!$defined(data)){return;}this.loader.remove(data.id);},twitterBlock:function(screen_name){var answer=confirm("Blocking will prevent this user from following you. And you won't see their tweets in your timeline. Are you sure you want to block?");if(!answer){return;}var params={screen_name:screen_name};this.call("twitter","twitter_block",params,this.twitterBlockSuccess.bind(this),null);},twitterBlockSuccess:function(data){if(!$defined(data)){return;}this.loader.remove(data.id);}});var TwitterFollowingContent=new Class({Extends:Content,EventHandlers:["twitterFollow","twitterUnfollow","twitterBlock"],onBeforeInit:function(options){this.screen_name=options.screen_name;},onInit:function(){this.loader=new ItemLoader({idField:"id",sortField:"name",createElementFunc:TwitterFollowsItemUtility.createTwitterFollowItem,emptyEl:new Element("div",{"class":"post empty","text":this.screen_name+" has no friends"}),loadingEl:new Element("div",{"class":"post empty","text":this.screen_name+"'s friends loading..."})});$(this.loader).inject(this.content);},onShow:function(first){if(first){var params={"username":this.screen_name,"page":-1};this.call("twitter","twitter_friends",params,this.twitterFollowingSuccess.bind(this),null);this.loader.showLoading();}},onHide:function(){},twitterFollowingSuccess:function(data){this.loader.hideLoading();if(!$defined(data.users)||data.users.length==0){return;}this.nextCursor=data.next_cursor;data.users.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},bottomFunc:function(){var params={"username":this.screen_name,"page":this.nextCursor};this.call("twitter","twitter_friends",params,this.twitterFollowingSuccess.bind(this),null);},twitterUnfollow:function(screen_name){var params={screen_name:screen_name};this.call("twitter","twitter_unfollow",params,this.twitterUnfollowSuccess.bind(this),null);},twitterUnfollowSuccess:function(data){if(!$defined(data)){return;}this.loader.remove(data.id);},twitterBlock:function(screen_name){var answer=confirm("Blocking will prevent this user from following you. And you won't see their tweets in your timeline. Are you sure you want to block?");if(!answer){return;}var params={screen_name:screen_name};this.call("twitter","twitter_block",params,this.twitterBlockSuccess.bind(this),null);},twitterBlockSuccess:function(data){if(!$defined(data)){return;}this.loader.remove(data.id);}});var TwitterHomeContent=new Class({Extends:Content,EventHandlers:["twitterUserLoaded","twitterHomeReload"],onBeforeInit:function(options){this.settings=options.settings;this.navId=options.navId;this.sessionTimestamp=(new Date().getTime())/1000;this.screen_name=options.settings.screen_name;return options;},onInit:function(){this.slowTimerDuration=60*1000*3;this.fastTimerDuration=60*1000*1;this.loader=new StreamLoader({idField:"id",dateField:"created_at",createElementFunc:TwitterItemUtility.createTwitterItem,emptyEl:new Element("div",{"class":"post empty","text":"You have no updates"}),alertFunc:this.alertCheck.bind(this)});$(this.loader).inject(this.content);},alertCheck:function(item){var ts=Date.parse(item.created_at)/1000;if(ts>this.sessionTimestamp){this.fireEvent("alertAdd",this.navId);}},onShow:function(first){if(first){this.loadMore();}this.updatePoll();},onHide:function(){this.updatePoll();},onDestroy:function(){$clear(this.pollTimer);},twitterHomeReload:function(){this.loadNew();},twitterUserLoaded:function(user){if($defined(this.statusBox)){return;}this.statusBox=new TwitterStatusBox(user,true);$(this.statusBox).inject(this.content,"top");},updatePoll:function(){if($defined(this.pollTimer)){$clear(this.pollTimer);}if(this.isOn){this.pollTimer=this.loadNew.periodical(this.fastTimerDuration,this);Logger().log("home on fast timer");}else{this.pollTimer=this.loadNew.periodical(this.slowTimerDuration,this);Logger().log("home on slow timer");}},loadNew:function(){var params={since_id:this.loader.newestId};this.call("twitter","twitter_home_timeline",params,this.loadNewSuccess.bind(this),this.loadMoreFail.bind(this));},loadMore:function(){var params={since_id:""};if(this.loader.oldestId!=0){params.max_id=this.loader.oldestId;}this.call("twitter","twitter_home_timeline",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));},loadNewSuccess:function(data){if(!$defined(data.items)||data.items.length==0){return;}data.items.each(function(item){this.loader.process(item);},this);},loadMoreSuccess:function(data){if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.reverse().each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){},bottomFunc:function(){this.loadMore();}});var TwitterListContent=new Class({Extends:Content,EventHandlers:[],onBeforeInit:function(options){this.list=options.list;this.navId=options.navId;this.sessionTimestamp=(new Date().getTime())/1000;return options;},onInit:function(){this.slowTimerDuration=60*1000*5;this.fastTimerDuration=60*1000*2;this.loader=new StreamLoader({idField:"id",dateField:"created_at",createElementFunc:TwitterItemUtility.createTwitterItem,emptyEl:new Element("div",{"class":"post empty","text":"This list has no updates"}),loadingEl:new Element("div",{"class":"post empty","text":"Updates loading..."}),alertFunc:this.alertCheck.bind(this)});$(this.loader).inject(this.content);},alertCheck:function(item){var ts=Date.parse(item.created_at)/1000;if(ts>this.sessionTimestamp){this.fireEvent("alertAdd",this.navId);}},onShow:function(first){if(first){this.loadMore();}this.updatePoll();},onHide:function(){this.updatePoll();},onDestroy:function(){$clear(this.pollTimer);},updatePoll:function(){if($defined(this.pollTimer)){$clear(this.pollTimer);}if(this.isOn){this.pollTimer=this.loadNew.periodical(this.fastTimerDuration,this);}else{this.pollTimer=this.loadNew.periodical(this.slowTimerDuration,this);}},loadNew:function(){var params={screen_name:this.list.user.screen_name,list_id:this.list.id,since_id:this.loader.newestId};this.call("twitter","twitter_lists_timeline",params,this.loadNewSuccess.bind(this),this.loadMoreFail.bind(this));},loadMore:function(){var params={screen_name:this.list.user.screen_name,list_id:this.list.id,since_id:""};if(this.loader.oldestId!=0){params.max_id=this.loader.oldestId;}this.call("twitter","twitter_lists_timeline",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));this.loader.showLoading();},loadNewSuccess:function(data){if(!$defined(data.items)||data.items.length==0){return;}data.items.reverse().each(function(item){this.loader.process(item);},this);},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){this.loader.hideLoading();},bottomFunc:function(){this.loadMore();}});var TwitterMentionsContent=new Class({Extends:Content,EventHandlers:[],onBeforeInit:function(options){this.settings=options.settings;this.navId=options.navId;this.screen_name=options.screen_name;this.sessionTimestamp=(new Date().getTime())/1000;return options;},onInit:function(){this.slowTimerDuration=60*1000*5;this.fastTimerDuration=60*1000*2;this.loader=new StreamLoader({idField:"id",dateField:"created_at",createElementFunc:TwitterItemUtility.createTwitterItem,emptyEl:new Element("div",{"class":"post empty","text":"You have no mentions"}),loadingEl:new Element("div",{"class":"post empty","text":"Mentions loading..."}),alertFunc:this.alertCheck.bind(this)});$(this.loader).inject(this.content);},alertCheck:function(item){var ts=Date.parse(item.created_at)/1000;if(ts>this.sessionTimestamp){this.fireEvent("alertAdd",this.navId);}},onShow:function(first){if(first){this.loadMore();}this.updatePoll();},onHide:function(){this.updatePoll();},onDestroy:function(){$clear(this.pollTimer);},updatePoll:function(){if($defined(this.pollTimer)){$clear(this.pollTimer);}if(this.isOn){this.pollTimer=this.loadNew.periodical(this.fastTimerDuration,this);}else{this.pollTimer=this.loadNew.periodical(this.slowTimerDuration,this);}},loadNew:function(){var params={since_id:this.loader.newestId};this.call("twitter","twitter_mentions",params,this.loadNewSuccess.bind(this),this.loadMoreFail.bind(this));},loadMore:function(){var params={since_id:""};if(this.loader.oldestId!=0){params.max_id=this.loader.oldestId;}this.call("twitter","twitter_mentions",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));this.loader.showLoading();},loadNewSuccess:function(data){if(!$defined(data.items)||data.items.length==0){return;}data.items.each(function(item){this.loader.process(item);},this);},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.reverse().each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){this.loader.hideLoading();},bottomFunc:function(){this.loadMore();}});var TwitterSearchContent=new Class({Extends:Content,EventHandlers:[],onBeforeInit:function(options){this.search=options.search;this.navId=options.navId;this.sessionTimestamp=(new Date().getTime())/1000;return options;},onInit:function(){this.slowTimerDuration=60*1000*2;this.fastTimerDuration=30*1000;this.loader=new StreamLoader({idField:"id",dateField:"created_at",createElementFunc:TwitterItemUtility.createTwitterSearchItem,emptyEl:new Element("div",{"class":"post empty","text":"No search results"}),loadingEl:new Element("div",{"class":"post empty","text":"Search results loading..."}),alertFunc:this.alertCheck.bind(this)});$(this.loader).inject(this.content);this.page=1;},alertCheck:function(item){var ts=Date.parse(item.created_at)/1000;if(ts>this.sessionTimestamp){this.fireEvent("alertAdd",this.navId);}},onShow:function(first){if(first){this.loadMore();}this.updatePoll();},onHide:function(){this.updatePoll();},onDestroy:function(){$clear(this.pollTimer);},updatePoll:function(){if($defined(this.pollTimer)){$clear(this.pollTimer);}if(this.isOn){this.pollTimer=this.loadNew.periodical(this.fastTimerDuration,this);}else{this.pollTimer=this.loadNew.periodical(this.slowTimerDuration,this);}},loadNew:function(){var params={since_id:this.loader.newestId,q:this.search.query};this.call("twitter","twitter_search",params,this.loadNewSuccess.bind(this),this.loadMoreFail.bind(this));},loadMore:function(){var params={since_id:"",q:this.search.query};if(this.loader.oldestId!=0){params.page=this.page++;}this.call("twitter","twitter_search",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));this.loader.showLoading();},loadNewSuccess:function(data){if(!$defined(data.items)||data.items.length==0){return;}data.items.reverse().each(function(item){this.loader.process(item);},this);},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){this.loader.hideLoading();},bottomFunc:function(){this.loadMore();}});var TwitterUserContent=new Class({Extends:Content,EventHandlers:["twitterUserLoaded"],onBeforeInit:function(options){this.navId=options.navId;this.screen_name=options.screen_name;this.sessionTimestamp=(new Date().getTime())/1000;},onInit:function(){this.slowTimerDuration=60*1000*5;this.fastTimerDuration=60*1000*2;this.loader=new StreamLoader({idField:"id",dateField:"created_at",createElementFunc:TwitterItemUtility.createTwitterItem,emptyEl:new Element("div",{"class":"post empty","text":TextUtility.unescape(this.screen_name)+" has no updates"}),loadingEl:new Element("div",{"class":"post empty","text":TextUtility.unescape(this.screen_name)+"'s updates loading..."}),alertFunc:this.alertCheck.bind(this)});$(this.loader).inject(this.content);},alertCheck:function(item){var ts=Date.parse(item.created_at)/1000;if(ts>this.sessionTimestamp){this.fireEvent("alertAdd",this.navId);}},onShow:function(first){if(first){this.loadMore();}this.updatePoll();},onHide:function(){this.updatePoll();},onDestroy:function(){$clear(this.pollTimer);},twitterUserLoaded:function(user){if($defined(this.statusBox)){return;}this.statusBox=new TwitterStatusBox(user,false);$(this.statusBox).inject(this.content,"top");},updatePoll:function(){if($defined(this.pollTimer)){$clear(this.pollTimer);}if(this.isOn){this.pollTimer=this.loadNew.periodical(this.fastTimerDuration,this);}else{this.pollTimer=this.loadNew.periodical(this.slowTimerDuration,this);}},loadNew:function(){var params={username:this.screen_name,since_id:this.loader.newestId};this.call("twitter","twitter_user_timeline",params,this.loadNewSuccess.bind(this),this.loadMoreFail.bind(this));},loadMore:function(){var params={username:this.screen_name,since_id:""};if(this.loader.oldestId!=0){params.max_id=this.loader.oldestId;}this.call("twitter","twitter_user_timeline",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));this.loader.showLoading();},loadNewSuccess:function(data){if(!$defined(data.items)||data.items.length==0){return;}data.items.each(function(item){this.loader.process(item);},this);},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.reverse().each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){this.loader.hideLoading();},bottomFunc:function(){this.loadMore();}});var TwitterListMenu=new Class({Extends:Menu,EventHandlers:[],onBeforeInit:function(options){this.list=options.list;options.displayName=this.list.user.screen_name+"/"+this.list.slug;options.className="twitter";return options;},onInit:function(){this.userShowSuccess(this.list.user);},userShowSuccess:function(data){if(!$defined(data)){return;}this.profile=new Element("div",{"class":"user_profile"}).inject(this.menu);ItemUtility.createItemPic(data.profile_image_url).inject(this.profile);new Element("div",{"class":"screen_name text12 light","text":data.screen_name}).inject(this.profile);new Element("div",{"class":"tweets text11 light2","text":data.statuses_count+" tweets"}).inject(this.profile);new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Name: "}),new Element("span",{"text":TextUtility.unescape(data.name)})).inject(this.menu);if($defined(data.location)&&data.location!=""){new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Location: "}),new Element("span",{"text":TextUtility.unescape(data.location)})).inject(this.menu);}if($defined(data.url)&&data.url!=""){new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Web: "}),new Element("a",{"target":"_blank","href":data.url,"text":data.url})).inject(this.menu);}if($defined(data.description)&&data.description!=""){new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Bio: "}),new Element("span",{"text":TextUtility.unescape(data.description)})).inject(this.menu);}new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.follow=new Toggle(this.list.following);$(this.follow).addEvent("click",this.followToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Following list:"}),$(this.follow)).inject(this.menu);},followToggle:function(){if(this.follow.isOn){this.call("twitter","twitter_lists_subscribe",{screen_name:this.list.user.screen_name,list_id:this.list.id},this.subscribeSuccess.bind(this));}else{this.call("twitter","twitter_lists_unsubscribe",{screen_name:this.list.user.screen_name,list_id:this.list.id},this.unsubscribeSuccess.bind(this));}},subscribeSuccess:function(data){if(!$defined(data.list)){return;}this.fireEvent("twitterListSubscribed",this.list);},unsubscribeSuccess:function(data){if(!$defined(data.list)){return;}this.fireEvent("twitterListUnsubscribed",this.list);}});var TwitterSearchMenu=new Class({Extends:Menu,EventHandlers:["twitterSavedSearchAdd","twitterSavedSearchDelete"],onBeforeInit:function(options){this.search=options.search;this.searches=options.searches;options.displayName=this.search.query;options.className="twitter";return options;},onInit:function(){new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Query: "}),new Element("span",{"text":TextUtility.unescape(this.search.query)})).inject(this.menu);new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.saved=new Toggle(this.search.id!=0);$(this.saved).addEvent("click",this.saveToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Save Search:"}),$(this.saved)).inject(this.menu);this.searchButton=new ButtonMedium({displayName:"Search Twitter",className:"dark",action:"search"});$(this.searchButton).addEvent("click",this.fireEvent.bind(this,["showTwitterSearchPopup"]));this.searchSection=new Element("div",{"class":"button_section"}).adopt($(this.searchButton)).inject(this.menu);this.savedSearchesNav=new TwitterSavedSearchesNav({});$(this.savedSearchesNav).inject(this.menu);this.searches.each(function(search){this.twitterSavedSearchAdd(search);},this);},twitterSavedSearchAdd:function(search){this.savedSearchesNav.savedSearchAdd(search);},twitterSavedSearchDelete:function(id){this.savedSearchesNav.savedSearchDelete(id);},saveToggle:function(){if(this.saved.isOn){this.searchSave();}else{this.searchDelete();}},searchSave:function(){this.call("twitter","twitter_searches_create",{query:this.search.query},this.searchSaveSuccess.bind(this));},searchSaveSuccess:function(data){if(!$defined(data.id)){return;}var search={query:data.query,id:data.id};this.search.id=data.id;this.fireEvent("twitterSavedSearchAdd",search);},searchDelete:function(){this.call("twitter","twitter_searches_delete",{id:this.search.id},this.searchDeleteSuccess.bind(this));},searchDeleteSuccess:function(data){if(!$defined(data.id)){return;}this.search.id=0;this.fireEvent("twitterSavedSearchDelete",data.id);}});var TwitterSelfMenu=new Class({Extends:Menu,EventHandlers:["twitterSavedSearchAdd","twitterSavedSearchDelete"],onBeforeInit:function(options){this.settings=options.settings;this.screen_name=this.settings.screen_name;this.sync_posts=this.settings.sync_posts;options.displayName=this.settings.screen_name;options.className="twitter";return options;},onInit:function(){this.call("twitter","twitter_self_show",{screen_name:this.settings.screen_name},this.userShowSuccess.bind(this),null);},userShowSuccess:function(data){if(!$defined(data.user)){return;}var user=data.user;this.profile=new Element("div",{"class":"user_profile"}).inject(this.menu);ItemUtility.createItemPic(user.profile_image_url).inject(this.profile);new Element("div",{"class":"screen_name text12 light","text":user.screen_name}).inject(this.profile);new Element("div",{"class":"tweets text11 light2","text":user.statuses_count+" tweets"}).inject(this.profile);new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Name: "}),new Element("span",{"text":TextUtility.unescape(user.name)})).inject(this.menu);if($defined(user.location)&&user.location!=""){new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Location: "}),new Element("span",{"text":TextUtility.unescape(user.location)})).inject(this.menu);}if($defined(user.url)&&user.url!=""){new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Web: "}),new Element("a",{"target":"_blank","href":user.url,"text":user.url})).inject(this.menu);}if($defined(user.description)&&user.description!=""){new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Bio: "}),new Element("span",{"text":TextUtility.unescape(user.description)})).inject(this.menu);}var followers=new Element("span",{"class":"clickable","text":user.followers_count});followers.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterShowFollowers",user.screen_name]));new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Followers: "}),followers).inject(this.menu);var following=new Element("span",{"class":"clickable","text":user.friends_count});following.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterShowFollowing",user.screen_name]));new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Following: "}),following).inject(this.menu);new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.syncPosts=new Toggle(this.sync_posts==1);$(this.syncPosts).addEvent("click",this.syncToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Sync Posts:"}),$(this.syncPosts)).inject(this.menu);this.searchButton=new ButtonMedium({displayName:"Search Twitter",className:"dark",action:"search"});$(this.searchButton).addEvent("click",this.fireEvent.bind(this,["showTwitterSearchPopup"]));this.searchSection=new Element("div",{"class":"button_section"}).adopt($(this.searchButton)).inject(this.menu);this.savedSearchesNav=new TwitterSavedSearchesNav({});$(this.savedSearchesNav).inject(this.menu);this.fireEvent("twitterUserLoaded",data.user);this.fireEvent("twitterListsLoaded",data);this.fireEvent("twitterSavedSearchesLoaded",data.saved_searches);data.saved_searches.each(function(search){this.twitterSavedSearchAdd(search);},this);},syncToggle:function(){var params={key:"sync_posts",value:this.syncPosts.toInt()};this.call("twitter","twitter_settings_update",params);},twitterSavedSearchAdd:function(search){this.savedSearchesNav.savedSearchAdd(search);},twitterSavedSearchDelete:function(id){this.savedSearchesNav.savedSearchDelete(id);}});var TwitterUserMenu=new Class({Extends:Menu,EventHandlers:[],onBeforeInit:function(options){this.user=options.user;options.displayName=this.user.screen_name;options.className="twitter";return options;},onInit:function(){this.userShowSuccess(this.user);},userShowSuccess:function(data){if(!$defined(data)){return;}this.fireEvent("twitterUserLoaded",data);this.profile=new Element("div",{"class":"user_profile"}).inject(this.menu);ItemUtility.createItemPic(data.profile_image_url).inject(this.profile);new Element("div",{"class":"screen_name text12 light","text":data.screen_name}).inject(this.profile);new Element("div",{"class":"tweets text11 light2","text":data.statuses_count+" tweets"}).inject(this.profile);new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Name: "}),new Element("span",{"text":TextUtility.unescape(data.name)})).inject(this.menu);if($defined(data.location)&&data.location!=""){new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Location: "}),new Element("span",{"text":TextUtility.unescape(data.location)})).inject(this.menu);}if($defined(data.url)&&data.url!=""){new Element("div",{"class":"text_section light1 text11 nowrap"}).adopt(new Element("span",{"class":"bold","text":"Web: "}),new Element("a",{"target":"_blank","href":data.url,"text":data.url})).inject(this.menu);}if($defined(data.description)&&data.description!=""){new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Bio: "}),new Element("span",{"text":TextUtility.unescape(data.description)})).inject(this.menu);}var followers=new Element("span",{"class":"clickable","text":data.followers_count});followers.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterShowFollowers",data.screen_name]));new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Followers: "}),followers).inject(this.menu);var following=new Element("span",{"class":"clickable","text":data.friends_count});following.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterShowFollowing",data.screen_name]));new Element("div",{"class":"text_section light1 text11"}).adopt(new Element("span",{"class":"bold","text":"Following: "}),following).inject(this.menu);new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.follow=new Toggle(data.following);$(this.follow).addEvent("click",this.followToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Following:"}),$(this.follow)).inject(this.menu);},followToggle:function(){if(this.follow.isOn){this.call("twitter","twitter_follow",{screen_name:this.user.screen_name});}else{this.call("twitter","twitter_unfollow",{screen_name:this.user.screen_name});}}});var TwitterSavedSearchesNav=new Class({Extends:Nav,onBeforeInit:function(options){options.name="savedSearches";options.hasSubnavs=true;options.iconOptions={iconName:"search"};options.displayName="Saved Searches";return options;},onInit:function(){this.savedSearches=$H();this.updateNav();},savedSearchAdd:function(search){if(this.hasSubnav(search.query)){return;}var nav=new Nav({displayName:search.query,name:search.id,parentName:"savedSearches",onClick:this.fireEvent.bind(this,["twitterSearch",search.query,search.id])});this.addSubnav(nav);this.savedSearches.set(search.id,search);this.updateNav();},savedSearchDelete:function(id){this.deleteSubnav(id);this.savedSearches.erase(id);this.updateNav();},updateNav:function(){if(this.savedSearches.getLength()==0){DomUtility.hide(this.navWrapper);}else{DomUtility.show(this.navWrapper);}}});var TwitterInstallPopupContent=new Class({Extends:PopupContent,EventHandlers:["twitterOauthAccess"],strings:{postSyncLabel:"Sync posts to Twitter:",errorMessage:"There was an error connecting to Twitter"},onInit:function(){this.appId=5;this.syncPostsToggle=new Toggle(true);new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"label light","text":this.strings.postSyncLabel}),$(this.syncPostsToggle)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Install Twitter",className:"dark",action:"check"});this.message=new Element("div",{"class":"message error"});this.actions=new Element("div",{"class":"actions"}).adopt(this.message,$(this.actionButton),$(this.closeButton)).inject(this.content);this.authRequest();},authRequest:function(){this.call("twitter","twitter_auth_request",null,this.authRequestSuccess.bind(this));},authRequestSuccess:function(data){if(!$defined(data.authorize_url)){return;}new Element("a",{"href":data.authorize_url,"target":"_blank"}).wraps(this.actionButton);},twitterOauthAccess:function(data){if(data.oauth!="success"){return;}var params={sync_posts:this.syncPostsToggle.toInt()};this.call("twitter","twitter_install",params,this.twitterInstallSuccess.bind(this));},twitterInstallSuccess:function(){this.closeContent();}});var TwitterRetweetPopupContent=new Class({Extends:PopupContent,strings:{},EventHandlers:[],onBeforeInit:function(options){this.post_id=options.post_id;return options;},onInit:function(){this.searchInput=new Element("input",{"type":"text","maxlength":"50"});this.searchInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));this.searchInputSection=new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"textarea_wrapper"}).adopt(this.searchInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Search",className:"dark",action:"search"});$(this.actionButton).addEvent("click",this.search.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.searchInput.value.trim()!=""){this.search();}}},search:function(){var query=this.searchInput.value.trim();if(query!=""){this.fireEvent("twitterSearch",query);}this.closeContent();},onShow:function(){this.focus();},focus:function(){this.searchInput.focus.delay(500,this.searchInput);}});var TwitterSearchPopupContent=new Class({Extends:PopupContent,strings:{},EventHandlers:[],onInit:function(){this.searchInput=new Element("input",{"type":"text","maxlength":"50"});this.searchInput.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));this.searchInputSection=new Element("div",{"class":"input_section"}).adopt(new Element("div",{"class":"textarea_wrapper"}).adopt(this.searchInput)).inject(this.content);this.closeButton=new ButtonMedium({displayName:"Cancel",className:"dark",action:"cross"});$(this.closeButton).addEvent("click",this.closeContent.bind(this));this.actionButton=new ButtonMedium({displayName:"Search",className:"dark",action:"search"});$(this.actionButton).addEvent("click",this.search.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.actionButton),$(this.closeButton)).inject(this.content);},inputKeyUp:function(e){if(e.key=="enter"){if(this.searchInput.value.trim()!=""){this.search();}}},search:function(){var query=this.searchInput.value.trim();if(query!=""){this.fireEvent("twitterSearch",query);}this.closeContent();},onShow:function(){this.focus();},focus:function(){this.searchInput.focus.delay(500,this.searchInput);}});var TwitterShareBox=new Class({Extends:Base,EventHandlers:["userSwitched","twitterShareBoxShow"],init:function(){this.shareboxes=$H();},userSwitched:function(){if(!this.isLoggedIn()){this.userLoggedOut();}},userLoggedOut:function(){this.shareboxes.each(function(sharebox,key){sharebox.close();this.shareboxes.erase(key);},this);this.shareboxes=$H();},twitterShareBoxShow:function(user,isSelf,post_id){if($defined(this.sharebox)){this.sharebox.close();}this.createShareBox(user,isSelf,post_id);},createShareBox:function(user,isSelf,post_id){this.sharebox=new Popup({size:{x:500,y:100},resizable:false,dockable:false,className:"facebook sharebox",onClose:this.destroyShareBox.bind(this)});var displayName=(isSelf)?"Tweet":"Mention "+user.screen_name;if($defined(post_id)){displayName="Reply to "+user.screen_name;}var nav=new Nav({iconOptions:{iconName:user.profile_image_url},displayName:displayName,closable:true});var content=new TwitterShareBoxPopupContent({user:user,is_self:isSelf,post_id:post_id});this.sharebox.addContent("sharebox",nav,content);},destroyShareBox:function(name){this.sharebox=null;}});var TwitterShareBoxPopupContent=new Class({Extends:PopupContent,onBeforeInit:function(options){this.user=options.user;options.displayName=this.user.screen_name;this.post_id=($defined(options.post_id))?options.post_id:"";this.isSelf=options.is_self;return options;},reset:function(){Logger().log("resetting");this.closeAttachmentPopup();this.content.empty();this.onInit();},onInit:function(){this.formEl=null;this.isPublic=true;this.readyToPost=false;if(this.isSelf){this.input=new Element("textarea",{"maxlength":140});}else{this.input=new Element("textarea",{"maxlength":140,"value":"@"+this.user.screen_name+" "});}this.input.addEvent("keyup",this.inputKeyUp.bindWithEvent(this));new Element("div",{"class":"textarea_wrapper"}).adopt(this.input).inject(this.content);this.cancelButton=new ButtonMedium({displayName:"Close",className:"dark",action:"cross"});$(this.cancelButton).addEvent("click",this.closeContent.bind(this));this.updateButton=new ButtonMedium({displayName:"Post",className:"dark",action:"check"});$(this.updateButton).addEvent("click",this.post.bind(this));this.actions=new Element("div",{"class":"actions"}).adopt($(this.updateButton),$(this.cancelButton)).inject(this.content);this.focus();},inputKeyUp:function(e){if(e.shift&&e.key=="enter"){e.preventDefault();this.post();}if(DomUtility.textareaAutoSize(e.target,40)){this.updateSize();}},updateSize:function(){h+=this.input.getSize().y+10;h+=this.actions.getSize().y+30;this.resizePopup(500,h);},post:function(){var body=this.input.value.trim();if(body==""&&this.attachment.type==AttachmentType.None){this.fireEvent("showAlert","empty_post","Problem Posting","Please enter some content to post.");return;}var params={"body":body,"post_id":this.post_id};this.call("twitter","twitter_post_text",params,this.postSuccess.bind(this),this.postFail.bind(this),this.formEl);this.updateButton.showProgress();},postSuccess:function(){this.updateButton.hideProgress();this.fireEvent("twitterHomeReload");this.closeContent();},postFail:function(){this.updateButton.hideProgress();},onShow:function(){this.focus();},focus:function(){this.input.focus.delay(500,this.input);}});var TwitterStatusBox=new Class({Extends:Base,EventHandlers:[],init:function(user,isSelf){this.user=user;this.user.status.can_delete=1;this.isSelf=isSelf;this.defaultStatus="has no current status";this.createStatusBox();},createStatusBox:function(){this.box=ItemUtility.createPostBubble("post status_message haspic");ItemUtility.createItemPic(this.user.profile_image_url).inject(this.box);var buttonText=this.isSelf?"Tweet":"Mention "+this.user.screen_name;this.writeButton=new Element("div",{"class":"button","text":TextUtility.unescape(buttonText)}).inject(this.box);this.writeButton.addEvent("click",this.fireEvent.bind(this,["twitterShareBoxShow",this.user,this.isSelf]));this.content=new Element("div",{"class":"post_content"}).inject(this.box);var header=new Element("div",{"class":"header"}).inject(this.content);var creator=new Element("span",{"class":"user_name","text":TextUtility.unescapeQuotes(this.user.name)}).inject(header);this.status=new Element("span",{"class":"status"}).inject(header);TwitterItemUtility.createTwitterItemFooter(this.user.status).inject(this.content);this.updateStatus();},updateStatus:function(){if($defined(this.user.status.text)&&this.user.status.text!=""){this.status.removeClass("empty");this.status.set("html"," "+TwitterItemUtility.parseTwitterUsernames(TwitterItemUtility.parseTwitterLists(TextUtility.replaceUrls(TextUtility.convertNewLine(TextUtility.unescapeQuotes(this.user.status.text))))));}else{this.status.addClass("empty");this.status.set("text"," "+TextUtility.unescape(this.defaultStatus));}},toElement:function(){return this.box;}});var TwitterFollowsItemUtility={createTwitterFollowItem:function(user){var el=ItemUtility.createPostBubble("post contact",true);new Element("img",{"class":"profile_pic_wrapper_60 afb_profile_pic","src":user.profile_image_url}).inject(el);var username=new Element("div",{"class":"user_name clickable","text":TextUtility.unescape(user.screen_name)});new Element("div",{"class":"heading"}).adopt(username).inject(el);username.addEvent("click",pipio.dispatchEvent.bind(pipio,["showTwitterUser",user.screen_name]));var viewButton=new ButtonMedium({displayName:"View "+user.screen_name,action:"goto dark"});$(viewButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["showTwitterUser",user.screen_name]));if(user.following){var unfollowButton=new ButtonMedium({displayName:"Unfollow "+user.screen_name,action:"cross"});$(unfollowButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterUnfollow",user.screen_name]));}var blockButton=new ButtonMedium({displayName:"Block "+user.screen_name,action:"goto dark"});$(blockButton).addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterBlock",user.screen_name]));var buttons=new Element("div",{"class":"actions"}).adopt($(viewButton),$(blockButton)).inject(el);if($defined(unfollowButton)){buttons.adopt($(unfollowButton));}return el;}};var TwitterItemUtility={createTwitterSearchItem:function(item){var el=ItemUtility.createPostBubble("post haspic");ItemUtility.createItemPic(item.profile_image_url).inject(el);var content=new Element("div",{"class":"post_content"}).inject(el);TwitterItemUtility.createTwitterSearchItemHeader(item).inject(content);TwitterItemUtility.createTwitterSearchItemFooter(item).inject(content);TwitterItemUtility.createTwitterItemPostActions(item).inject(el);return el;},createTwitterSearchItemHeader:function(item){var el=new Element("div",{"class":"header"});TwitterItemUtility.createSearchUsernameElement(item.from_user).inject(el);var body=new Element("span",{"html":" "+TwitterItemUtility.parseTwitterUsernames(TwitterItemUtility.parseTwitterLists(TextUtility.replaceUrls(TextUtility.convertNewLine(TextUtility.unescapeQuotes(item.text)))))}).inject(el);return el;},createSearchUsernameElement:function(screen_name){var el=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(screen_name)});el.addEvent("click",pipio.dispatchEvent.bind(pipio,["showTwitterUser",screen_name]));return el;},createTwitterSearchItemFooter:function(item){var el=new Element("div",{"class":"footer"});var date=DateUtility.convertFromTimestamp(Date.parse(item.created_at)/1000);var ts=new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D at %I:%M%p"),"ts":date,"ts_format":"%B %D at %I:%M%p"}).inject(el);el.appendText(" from ");new Element("span",{"html":TwitterItemUtility.parseTwitterSource(TextUtility.unescapeHtml(item.source))}).inject(el);if($defined(item.to_user)){el.appendText(" in reply to ");var userEl=new Element("span",{"text":item.to_user});new Element("span").adopt(userEl).inject(el);userEl.addEvent("click",pipio.dispatchEvent.bind(pipio,["showTwitterUser",item.to_user]));}var reply=TwitterItemUtility.createFooterAction("reply","Reply",true).inject(el);var user={screen_name:item.from_user,profile_image_url:item.profile_image_url};reply.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterShareBoxShow",user,false,item.id]));var retweet=TwitterItemUtility.createFooterAction("forward","Retweet",true).inject(el);retweet.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterRetweet",item.id]));return el;},deleteTwitterItem:function(id){$$(".twitter_item_"+id).each(function(el){DomUtility.fadeOutDestroy(el);});},createTwitterItem:function(item){var el=ItemUtility.createPostBubble("post haspic twitter_item_"+item.id);ItemUtility.createItemPic(item.user.profile_image_url).inject(el);var content=new Element("div",{"class":"post_content"}).inject(el);TwitterItemUtility.createTwitterItemHeader(item).inject(content);TwitterItemUtility.createTwitterItemFooter(item).inject(content);TwitterItemUtility.createTwitterItemPostActions(item).inject(el);return el;},createTwitterItemPostActions:function(item){var el=new Element("div",{"class":"post_actions"});if($defined(item.can_delete)&&item.can_delete==1){var deleteAction=new Element("div",{"class":"post_action delete"}).inject(el);deleteAction.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterDelete",item.id]));}return el;},createTwitterItemHeader:function(item){var el=new Element("div",{"class":"header"});TwitterItemUtility.createUsernameElement(item.user).inject(el);var body=new Element("span",{"html":" "+TwitterItemUtility.parseTwitterUsernames(TwitterItemUtility.parseTwitterLists(TextUtility.replaceUrls(TextUtility.convertNewLine(TextUtility.unescapeQuotes(item.text)))))}).inject(el);return el;},createUsernameElement:function(user){var el=new Element("span",{"class":"user_name clickable","text":TextUtility.unescapeQuotes(user.screen_name)});el.addEvent("click",pipio.dispatchEvent.bind(pipio,["showTwitterUser",user.screen_name]));return el;},createTwitterItemFooter:function(item){var el=new Element("div",{"class":"footer"});var date=DateUtility.convertFromTimestamp(Date.parse(item.created_at)/1000);var ts=new Element("span",{"class":"timestamp","text":DateUtility.getTimestamp(date,"%B %D at %I:%M%p"),"ts":date,"ts_format":"%B %D at %I:%M%p"}).inject(el);el.appendText(" from ");new Element("span",{"html":TwitterItemUtility.parseTwitterSource(item.source)}).inject(el);if($defined(item.in_reply_to_status_id)){el.appendText(" in reply to ");new Element("span").adopt(new Element("a",{"target":"_blank","href":"http://twitter.com/"+item.in_reply_to_screen_name+"/status/"+item.in_reply_to_status_id,"text":item.in_reply_to_screen_name})).inject(el);}var is_self=$defined(item.can_delete)&&item.can_delete==1;if(!is_self){var reply=TwitterItemUtility.createFooterAction("reply","Reply",true).inject(el);reply.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterShareBoxShow",item.user,is_self,item.id]));var retweet=TwitterItemUtility.createFooterAction("forward","Retweet",true).inject(el);retweet.addEvent("click",pipio.dispatchEvent.bind(pipio,["twitterRetweet",item.id]));}return el;},createFooterAction:function(actionName,actionText,hide){var el=new Element("span",{"class":"footer_action has_action"}).adopt(new Element("div",{"class":"action "+actionName}));el.appendText(actionText);if(hide){el.addClass("hide");}return el;},parseTwitterLists:function(content){if(!$defined(content)){return"";}content=content.replace(/([^A-Za-z0-9'>\/_-])@([A-Za-z0-9_-]+\/[A-Za-z0-9_-]+)/gi,"$1<a href=\"#\" onclick=\"pipio.dispatchEvent('showTwitterList', '$2');return false;\">@$2</a>");content=content.replace(/^(@[A-Za-z0-9'>\/_-]+\/[A-Za-z0-9_-]+)\s/gi,"<a href=\"#\" onclick=\"pipio.dispatchEvent('showTwitterList', '$1');return false;\">@$1</a> ");return content;},parseTwitterUsernames:function(content){if(!$defined(content)){return"";}content=content.replace(/([^A-Za-z0-9'>\/_-])@([A-Za-z0-9_-]+)/gi,"$1<a href=\"#\" onclick=\"pipio.dispatchEvent('showTwitterUser', '$2');return false;\">@$2</a>");content=content.replace(/^@([A-Za-z0-9'>\/_-]+)\s/gi,"<a href=\"#\" onclick=\"pipio.dispatchEvent('showTwitterUser', '$1');return false;\">@$1</a> ");return content;},replaceTwitterHashes:function(content){if(!$defined(content)){return"";}content=content.replace(/([^A-Za-z0-9'>\/_-])(#[A-Za-z0-9_-]+)/gi,"$1<a href=\"#\" onclick=\"pipio.dispatchEvent('twitterSearchShow', '$2');\">$2</a>");content=content.replace(/^(#[A-Za-z0-9'>\/_-]+)\s/gi,"<a href=\"#\" onclick=\"pipio.dispatchEvent('twitterSearchShow', '$1');\">$1</a> ");return content;},parseTwitterSource:function(source){if(!$defined(source)){return"";}return source.replace(/<a href/g,'<a target="_blank" href');},replaceTwitterSearchSource:function(source){if(!$defined(source)){return"";}source=DomUtility.unescapeHtml(source);return source.replace(/<a href/g,'<a target="_blank" href');}};var User=new Class({Extends:AppInstance,EventHandlers:["userInfoLoaded","userSwitched"],parseOptions:function(options){this.user=options.user;this.displayName=this.user.fullname;this.appId="user_"+this.user.username;this.iconOptions={user:this.user};},userSwitched:function(){this.stop();},onStart:function(){this.setupNav();},onStop:function(){}});User.implement({requests:[{name:"info_load",params:["username"],url:"api/user/info/load"}]});User.implement({setupNav:function(){this.hasRooms=false;Logger().log("home setup");this.navAdd(new Nav({iconOptions:{iconName:"updates"},displayName:"Updates",name:"updates",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"updates","user_menu"])}));this.navAdd(new Nav({iconOptions:{iconName:"star"},displayName:"Favorites",name:"likes",onClick:this.fireEvent.bind(this,["viewSwitch",this.appId,"likes","likes_menu"])}));var userMenu=new UserMenu({user:this.user,isDefault:true,closeFunc:this.stop.bind(this)});this.menuAdd("user_menu",userMenu);var content=new UserContent({isDefault:true,user:this.user});this.contentAdd("updates",content);var likesMenu=new LikesMenu({user:this.user});this.menuAdd("likes_menu",likesMenu);var likesContent=new LikesContent({user:this.user});this.contentAdd("likes",likesContent);},roomAdd:function(room){if(!this.hasRooms){this.navAdd(new Nav({iconOptions:{iconName:"rooms"},hasSubnavs:true,displayName:"Rooms",name:"rooms"}));this.hasRooms=true;}var nav=new Nav({iconOptions:{iconName:"rooms"},displayName:room.room_name,name:"room_"+room.username,parentName:"rooms",onClick:this.fireEvent.bind(this,["showRoom",room])});this.navAdd(nav);},userInfoLoaded:function(data){if(!$defined(data.user)||data.user.username!=this.user.username){return;}data.rooms.each(function(room){room=UserUtility.processRoom(room);this.roomAdd(room);},this);}});var UserConnectionMenuSection=new Class({Extends:Base,EventHandlers:["contactAdded","contactDeleted","contactRequestAdded","contactRequestDeleted","contactRequestOutAdded","contactRequestOutDeleted","streamSubscriptionAdded","streamSubscriptionDeleted"],init:function(options){this.user=options.user;this.subscribed=false;this.isSelf=this.user.user_id==this.getPrivateUser().user_id;this.createSection();},createSection:function(){this.wrapper=new Element("div");this.generateSection();},contactAdded:function(user){if(this.user.username!=user.username){return;}this.generateSection();},contactDeleted:function(username){if(this.user.username!=username){return;}this.generateSection();},contactRequestAdded:function(user){if(this.user.username!=user.username){return;}this.generateSection();},contactRequestDeleted:function(username){if(this.user.username!=username){return;}this.generateSection();},contactRequestOutAdded:function(user){if(this.user.username!=user.username){return;}this.generateSection();},contactRequestOutDeleted:function(username){if(this.user.username!=username){return;}this.generateSection();},generateSection:function(){this.wrapper.empty();if(this.isSelf){new Element("div",{"class":"text_section light centered text11","text":"This is you"}).inject(this.wrapper);}else{this.generateSubscriptionSection();var connectionState=this.getConnectionState(this.user.username);switch(connectionState){case 0:this.createNotConnectedSection();break;case 1:this.createConnectedSection();break;case 2:this.createRequestSection();break;case 3:this.createRequestOutSection();break;}}},setSubscription:function(subscribed){this.subscribed=subscribed;this.generateSection();},generateSubscriptionSection:function(){this.subscription=new Toggle(this.subscribed);$(this.subscription).addEvent("click",this.subscriptionToggle.bind(this));new Element("div",{"class":"toggle_section"}).adopt(new Element("div",{"class":"text light","text":"Subscribe:"}),$(this.subscription)).inject(this.wrapper);},subscriptionToggle:function(){if(this.subscribed){this.streamUnsubscribe();}else{this.streamSubscribe();}},streamUnsubscribe:function(){this.subscription.off();this.fireEvent("userUnsubscribe",this.user.username);},streamSubscribe:function(){this.subscription.on();this.call("contacts","user_subscribe",{username:this.user.username},null,this.streamSubscribeFail.bind(this));},streamSubscribeFail:function(status){if(status.code==2002){this.subscription.off();var name="subscription";var title="Error";var message=status.message;this.fireEvent("showAlert",name,title,message);}},streamSubscriptionAdded:function(data){if(!$defined(data.user)||data.user.username!=this.user.username){return;}this.subscribed=true;this.generateSection();},streamSubscriptionDeleted:function(data){if(!$defined(data.username)||data.username!=this.user.username){return;}this.subscribed=false;this.generateSection();},createNotConnectedSection:function(){this.connectButton=new ButtonMedium({displayName:"Add Contact",className:"dark",action:"check"});$(this.connectButton).addEvent("click",this.sendContactRequest.bind(this));new Element("div",{"class":"button_section"}).adopt($(this.connectButton)).inject(this.wrapper);},createConnectedSection:function(){new Element("div",{"class":"text_section light centered text11","text":TextUtility.unescape(this.user.first_name)+" is your contact"}).inject(this.wrapper);},createRequestOutSection:function(){new Element("div",{"class":"text_section light centered text11","text":"Contact request pending"}).inject(this.wrapper);},createRequestSection:function(){var button=new ButtonMedium({displayName:"Accept Request",className:"dark",action:"check"});$(button).addEvent("click",this.fireEvent.bind(this,["connectionRequestAccept",this.user.username]));new Element("div",{"class":"button_section"}).adopt($(button)).inject(this.wrapper);},toElement:function(){return this.wrapper;},sendContactRequest:function(){this.fireEvent("connectionRequestCreate",this.user.username);this.connectButton.showProgress();}});var UserContent=new Class({Extends:Content,EventHandlers:["streamItemReceived","userStreamItemDeleted"],onBeforeInit:function(options){this.user=options.user;},onInit:function(){this.statusBox=new StatusBox(this.user);$(this.statusBox).inject(this.content);this.loader=new StreamLoader({createElementFunc:StreamItemUtility.createUserStreamItem,emptyEl:new Element("div",{"class":"post empty","text":TextUtility.unescape(this.user.fullname)+" has no updates"}),loadingEl:new Element("div",{"class":"post empty","text":TextUtility.unescape(this.user.fullname)+"'s updates loading..."}),errorEl:new Element("div",{"class":"post empty","text":TextUtility.unescape(this.user.fullname)+"'s stream is private"})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},streamItemReceived:function(data){if($defined(data.item)&&data.item.source.username==this.user.username&&data.item.is_public==1){this.loader.process(data.item);}},userStreamItemDeleted:function(data){if(!$defined(data.username)||data.username!=this.room.username){return;}this.loader.remove(data.item_id);},loadMore:function(){var params={username:this.user.username,date_created:this.loader.oldestTimestamp,item_id:this.loader.oldestId};if(this.isLoggedIn()){this.call("home","stream_user_load",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));}else{this.call("home","public_stream_user_load",params,this.loadMoreSuccess.bind(this),this.loadMoreFail.bind(this));}this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.items)||data.items.length==0){this.atBottom=true;return;}data.items.each(function(item){this.loader.process(item);},this);this.bottomFuncCalled=false;},loadMoreFail:function(status){if(status.code==2002){this.loader.showError();}},bottomFunc:function(){this.loadMore();}});var UserMenu=new Class({Extends:Menu,EventHandlers:["userSubscriberAdded","userSubscriberDeleted","userSubscriptionAdded","userSubscriptionDeleted"],onBeforeInit:function(options){this.user=options.user;options.displayName=this.user.fullname;return options;},onInit:function(){this.map=new UserMapMenuSection({user:this.user});$(this.map).inject(this.menu);this.aboutSection=new UserProfileMenuSection({user:this.user});$(this.aboutSection).inject(this.menu);if(this.isLoggedIn()){this.connect=new UserConnectionMenuSection({user:this.user});$(this.connect).inject(this.menu);}new Element("div",{"class":"nav_seperator"}).inject(this.menu);this.subscriptions=new SubscriptionsNav({user:this.user});$(this.subscriptions).inject(this.menu);this.subscribers=new SubscribersNav({user:this.user});$(this.subscribers).inject(this.menu);},onShow:function(first){if(first){this.userInfoLoad();}},userInfoLoad:function(){if(this.isLoggedIn()){this.call("user","info_load",{username:this.user.username},this.userInfoLoadSuccess.bind(this),null);}else{this.call("home","public_user_info_load",{username:this.user.username},this.userInfoLoadSuccess.bind(this),null);}},userInfoLoadSuccess:function(data){if(!$defined(data.user)){return;}this.fireEvent("userInfoLoaded",data);Logger().log("processing user");var user=UserUtility.processUser(data.user);this.subscribers.addUsers(data.subscribers);this.subscriptions.addUsers(data.subscriptions);var subscribed=(data.subscription_id!=0);this.connect.setSubscription(subscribed);},userSubscriberAdded:function(data){if(!$defined(data.source_username)||!$defined(data.user)||data.source_username!=this.user.username){return;}this.subscribers.addUsers(data.user);},userSubscriberDeleted:function(data){if(!$defined(data.source_username)||!$defined(data.username)||data.source_username!=this.user.username){return;}this.subscribers.removeUser(data.username);},userSubscriptionAdded:function(data){if(!$defined(data.subscriber)||!$defined(data.user)||data.subscriber!=this.user.username){return;}this.subscriptions.addUsers(data.user);},userSubscriptionDeleted:function(data){if(!$defined(data.subscriber)||!$defined(data.username)||data.subscriber!=this.user.username){return;}this.subscriptions.removeUser(data.username);}});var UserProfileMenuSection=new Class({Extends:Base,EventHandlers:["userProfileUpdated"],init:function(options){this.user=options.user;this.isSelf=this.user.user_id==this.getPrivateUser().user_id;this.createSection();},createSection:function(){this.wrapper=new Element("div");this.bioText=new Element("span");this.bioSection=new Element("div",{"class":"text_section light1 text11 edit_option"}).adopt(new Element("span",{"class":"bold","text":"Bio: "}),this.bioText).inject(this.wrapper);this.interestsText=new Element("span");this.interestsSection=new Element("div",{"class":"text_section light1 text11 edit_option"}).adopt(new Element("span",{"class":"bold","text":"Interests: "}),this.interestsText).inject(this.wrapper);this.urlText=new Element("a",{"target":"_blank"});this.urlSection=new Element("div",{"class":"text_section light1 text11 nowrap edit_option"}).adopt(new Element("span",{"class":"bold","text":"Web: "}),this.urlText).inject(this.wrapper);this.userProfileUpdated(this.user.username,this.getProfile(this.user.username));},userProfileUpdated:function(username,about){if(username!=this.user.username){return;}if(!$defined(about)){DomUtility.hide(this.bioSection);DomUtility.hide(this.urlSection);DomUtility.hide(this.interestsSection);return;}if(!$defined(about.bio)||about.bio==""){DomUtility.hide(this.bioSection);}else{this.bioText.set("text",TextUtility.unescape(about.bio));DomUtility.show(this.bioSection);}if(!$defined(about.interests)||about.interests==""){DomUtility.hide(this.interestsSection);}else{this.interestsText.set("text",TextUtility.unescape(about.interests));DomUtility.show(this.interestsSection);}if(!$defined(about.url)||about.url==""){DomUtility.hide(this.urlSection);}else{this.urlText.set("text",TextUtility.unescape(about.url));this.urlText.set("href",about.url);DomUtility.show(this.urlSection);}},toElement:function(){return this.wrapper;}});var UserSubscribersContent=new Class({Extends:Content,EventHandlers:["userSubscriberAdded","userSubscriberDeleted"],onBeforeInit:function(options){this.user=options.user;return options;},onInit:function(){this.statusBox=new StatusBox(this.user);$(this.statusBox).inject(this.content);StreamItemUtility.createSeperatorItem("Subscribers").inject(this.content);this.loader=new ItemLoader({idField:"user_id",sortField:"date_created",sortAscending:false,createElementFunc:ContactItemUtility.createRoomSubscriberItem,emptyEl:new Element("div",{"class":"post empty","text":"This user has no subscribers"}),loadingEl:new Element("div",{"class":"post empty","text":"User subscribers loading..."})});$(this.loader).inject(this.content);},onShow:function(first){if(first){this.loadMore();}},onHide:function(){},userSubscriberAdded:function(data){if(!$defined(data.source_username)||!$defined(data.user)||data.source_username!=this.user.username){return;}var user=UserUtility.processUser(data.user);user.date_created=new Date().getTime()/1000;this.loader.process(user);},userSubscriberDeleted:function(data){if(!$defined(data.source_username)||!$defined(data.username)||data.source_username!=this.user.username){return;}if(!$defined(this.getUser(data.username))){return;}var user=this.getUser(data.username);this.loader.remove(user.user_id);},loadMore:function(){var params={username:this.room.username,date_created:this.loader.lowestSortValue};this.call("pipio","room_subscribers",params,this.loadMoreSuccess.bind(this),null);this.loader.showLoading();},loadMoreSuccess:function(data){this.loader.hideLoading();if(!$defined(data.subscribers)||data.subscribers.length==0){this.atBottom=true;return;}data.subscribers.each(function(user){var user_copy=UserUtility.processUser(user);user_copy.date_created=user.date_created;this.loader.process(user_copy);},this);this.bottomFuncCalled=false;},bottomFunc:function(){this.loadMore();}});var Pipio=new Class({Implements:Events,initialize:function(){this.version=pipio_version;this.versionTimer=0;this.initApi();this.initVideo();this.registerApis();this.eventHandlers=new Hash();this.pageTitle="Pip.io";this.loggedIn=false;window.addEvent("domready",this.initCore.bind(this));this.registerHandler("userDataInit",this.userDataInit.bind(this));this.registerHandler("videoChatEnable",this.videoChatEnable.bind(this));this.registerHandler("videoInUse",this.videoChatInUse.bind(this));this.registerHandler("startApp",this.startApp.bind(this));this.registerHandler("startAppInstance",this.startAppInstance.bind(this));this.registerHandler("appInstalled",this.appInstalled.bind(this));this.registerHandler("appUninstalled",this.appUninstalled.bind(this));},initCore:function(){this.xmpp=new Xmpp();this.initProfiles();this.initConnections();this.initConnectionEventHandlers();this.initModules();this.initApps();this.setSessionTimestamp();this.userDataInit();this.checkCookie();},checkCookie:function(){var destination=DataUtility.getCookie("destination");if(destination!="room"&&destination!="user"){return;}var userval=DataUtility.getCookie("user");var user=JSON.decode(userval);if($defined(user)){if(destination=="user"){user=UserUtility.processUser(user);this.dispatchEvent("showUser",user);}else{user=UserUtility.processRoom(user);this.dispatchEvent("showRoom",user);}}},initModules:function(){this.modules=new Pipio.modules(this);},initApps:function(){this.apps=new Pipio.apps(this);},setSessionTimestamp:function(){this.sessionTimestamp=new Date();},checkTimestamp:function(time){return time>this.sessionTimestamp.getTime()/1000;},userDataInit:function(data){if($defined(data)){user_data=data;}if(user_data.logged_in==1){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){this.initInstalledApps(user_data.apps);this.initProfiles();this.initLoggedInConnections();this.currentUser=UserUtility.processUser(user_data.user);this.currentUser.email=$defined(user_data.user.email)?user_data.user.email:undefined;this.loggedIn=true;if(!$defined(this.versionTimer)||this.versionTimer==0){$clear(this.versionTimer);}this.versionTimer=this.ping.periodical(1000*60*2,this);this.dispatchEvent("userSwitched");},userLoggedOut:function(){this.initInstalledApps();this.initProfiles();this.initLoggedOutConnections();this.currentUser={user_id:0};this.currentLocation=null;this.loggedIn=false;$clear(this.versionTimer);this.dispatchEvent("userSwitched");},isConnected:function(username){return this.connections.connsByUsername.has(username);},isRequestPending:function(user_id){return this.connections.requestsById.has(user_id)||this.connections.requestsOutById.has(user_id);},isLoggedIn:function(){return this.loggedIn;},dispatchEvent:function(){var eventName=arguments[0];var args=[];for(var i=1;i<arguments.length;i++){args.push(arguments[i]);}Logger().log("fired event "+eventName+" - "+args.join(","));this.fireEvent(eventName,args);},registerHandler:function(eventName,func){if(this.eventHandlers.has(eventName)){this.eventHandlers.get(eventName).push(func);this.addEvent(eventName,func);}else{this.eventHandlers.set(eventName,[func]);this.addEvent(eventName,func);}},getSession:function(){return this.xmpp.clientName;},ping:function(){this.call("pipio","ping",{},this.pong.bind(this));},pong:function(data){if(!$defined(data.v)){return;}if(this.version!=data.v){this.dispatchEvent("showPipioUpdatePopup",data.v);}}});Pipio.implement({initApi:function(){this.apiMethods=new Hash();},registerCall:function(app,call){var apiKey=app+"_"+call.name;this.apiMethods.set(apiKey,call);},call:function(app,name,params,callbackSuccess,callbackFail,form){var apiKey=app+"_"+name;if(!this.apiMethods.has(apiKey)){Logger().log("api call not found!");return;}var call=this.apiMethods.get(apiKey);var paramList=$defined(call.params)?call.params:[];var url=call.url;var method=$defined(call.method)?call.method:"post";var multipart=$defined(form);Logger().log("multipart "+multipart);var parsedParams=new Hash();paramList.each(function(paramName){parsedParams.set(paramName,params[paramName]);});if(!multipart){var req=new Request({method:method,url:url,onFailure:function(){var res={status:{code:6000,message:"request failed"}};if($defined(callbackFail)){callbackFail(res.status);}},onSuccess:function(response){var res=response;if(res.status==null){try{res=JSON.decode(response);}catch(err){res={status:{code:6000,message:"request failed"}};if($defined(callbackFail)){callbackFail(res.status);}}}if($defined(res)&&$defined(res.status)&&res.status.code==0){if($defined(callbackSuccess)){if($defined(res.data)){callbackSuccess(res.data);}else{callbackSuccess();}}}else{if(!$defined(res)||!$defined(res.status)){res={status:{code:6000,message:"request failed"}};}if($defined(callbackFail)){callbackFail(res.status);}}}});if(method=="post"){req.send(parsedParams.toQueryString());}else{req.send();}}else{var iframeId="postIframe"+$random(10000,99999);form.set("target",iframeId);form.set("action",url);form.set("method","post");form.set("enctype","multipart/form-data");parsedParams.each(function(val,name){new Element("input",{"type":"hidden","name":name,"value":val}).inject(form);},this);var iframe=new IFrame({"id":iframeId,"events":{load:function(){var response=window.frames[iframeId].document.body.innerHTML;if(response==""){return;}Logger().log(response);var res=JSON.decode(response);if($defined(res)&&$defined(res.status)&&res.status.code==0){if($defined(callbackSuccess)){if($defined(res.data)){callbackSuccess(res.data);}else{callbackSuccess();}}}else{if(!$defined(res)||!$defined(res.status)){res={status:{code:6000,message:"request failed"}};}if($defined(callbackSuccess)){callbackFail(res.status);}}}}});iframe.inject("hidden");form.submit();}}});Pipio.implement({moduleList:[{name:"ui",classRef:UI},{name:"login",classRef:Login},{name:"background",classRef:Background},{name:"chat",classRef:Chat},{name:"videochat",classRef:VideoChat},{name:"notifications",classRef:Notifications},{name:"sharebox",classRef:ShareBox},{name:"invite",classRef:Invite},{name:"settings",classRef:Settings},{name:"albumViewer",classRef:AlbumViewer},{name:"facebookSharebox",classRef:FacebookShareBox},{name:"twitterSharebox",classRef:TwitterShareBox},{name:"location",classRef:Location}],initModules:function(){this.modules=new Hash();this.moduleList.each(function(module){this.initModule(module.name,module.classRef);},this);},initModule:function(name,classRef){var o=new classRef();this.modules.set(name,o);}});Pipio.implement({initProfiles:function(){this.locationsByUsername=$H();this.profilesByUsername=$H();},locationUpdated:function(data){Logger().log("location updated called for "+data.username);if(!$defined(data.username)||!$defined(data.location_enabled)){return;}if($defined(this.getUser(data.username))){this.getUser(data.username).location_enabled=data.location_enabled;}if($defined(data.location)){this.locationsByUsername.set(data.username,data.location);}this.dispatchEvent("userLocationUpdated",data.username,data.location,data.location_enabled);},locationCleared:function(data){if(!$defined(data.username)){return;}this.locationsByUsername.erase(data.username);this.dispatchEvent("userLocationUpdated",data.username,null,0);},getLocation:function(username){if(this.locationsByUsername.has(username)){return this.locationsByUsername.get(username);}else{return null;}},profileUpdated:function(data){if(!$defined(data.username)||!$defined(data.about)){return;}this.profilesByUsername.set(data.username,data.about);if($defined(this.getUser(data.username))){this.dispatchEvent("userProfileUpdated",data.username,data.about);}else{if($defined(this.getRoom(data.username))){this.dispatchEvent("roomProfileUpdated",data.username,data.about);}}},getProfile:function(username){if(this.profilesByUsername.has(username)){return this.profilesByUsername.get(username);}else{return null;}}});Pipio.implement({initVideo:function(){this.videoEnabled=false;this.videoInUse=false;},videoChatEnable:function(enabled){this.videoEnabled=enabled;},videoChatInUse:function(inUse){if(!this.videoEnabled){return;}this.videoInUse=inUse;}});var Xmpp=new Class({Extends:Base,EventHandlers:["userSwitched","sendIM","sendTyping","sendVideoChatInvite","sendVideoChatAccept"],init:function(){this.newSession();this.domain="pip.io";this.userPresences=new Hash();this.roomsDomain="rooms.pip.io";this.multicastDomain="multicast.pip.io";this.pubsubDomain="pubsub.pip.io";var connArgs={httpbase:"/pipio-tubes",timerval:60*20};this.conn=new JSJaCHttpBindingConnection(connArgs);this.setupListeners();this.isConnecting=false;},userSwitched:function(){if(this.isLoggedIn()){this.userLoggedIn();}else{this.userLoggedOut();}},userLoggedIn:function(){this.newSession();this.fireEvent("xmppConnecting");this.connect.delay(1000,this);},userLoggedOut:function(){this.disconnect();},newSession:function(){this.sessionId=$random(1000,9999);this.clientName="pipio"+this.sessionId;},connect:function(){if(this.isConnecting){return;}if($defined(this.connectTimer)){$clear(this.connectTimer);}this.isConnecting=true;this.call("pipio","token_get",{},this.tokenGetSuccess.bind(this),this.tokenGetFail.bind(this));},disconnect:function(){this.isConnecting=false;this.updateSelfPresence("",false);this.conn.disconnect();this.fireEvent("xmppDisconnected");},tokenGetSuccess:function(data){Logger().log("xmpp token success - "+data.token+", connecting...");this.username=this.getPrivateUser().username;this.password=data.token;this.isConnecting=false;var args={domain:this.domain,username:this.username,resource:this.clientName,pass:this.password,register:false};this.conn.connect(args);},tokenGetFail:function(){this.isConnecting=false;this.connectTimer=this.connect.delay(10*1000,this);},updateSelfPresence:function(show,online){var pres=new JSJaCPresence();pres.setShow(show);var video=this.videoEnabled();if(video){pres.setPriority(10);}else{pres.setPriority(5);}if(online){pres.setType("");}else{pres.setType("unavailable");}var videoEnabled=(video)?1:0;var pip=pres.getDoc().createElementNS("http://pip.io/videochat","pip");pip.setAttribute("video",videoEnabled);pres.appendNode(pip);this.conn.send(pres);},userPresenceReceived:function(username,show,online,session,video){Logger().log(username+" "+show+" - "+session);var trueOnline=online;if(online){if(!this.userPresences.has(username)){this.userPresences.set(username,new Hash());}this.userPresences.get(username).set(session,video);}else{if(this.userPresences.has(username)){this.userPresences.get(username).erase(session);}if(this.userPresences.get(username).getLength()==0){this.userPresences.erase(username);}}if(this.userPresences.has(username)){trueOnline=true;}else{trueOnline=false;}Logger().log("firing "+username+" online-"+trueOnline+" show -"+show);this.fireEvent("userPresenceReceived",username,show,trueOnline);if(trueOnline){var videoEnabled=false;this.userPresences.get(username).each(function(videoExists){if(videoExists){videoEnabled=true;}});this.fireEvent("userVideoEnabled",username,videoEnabled);}},selfPresenceReceived:function(show,online){this.fireEvent("selfPresenceReceived",show,online);},sendVideoChatInvite:function(user){if(!$defined(user)){return;}if(!this.videoEnabled()){return;}var stratusId=sim.GetNearID();var userJID=new JSJaCJID(this.getJID(user));var aMsg=new JSJaCMessage();aMsg.setTo(userJID);aMsg.setBody(stratusId);aMsg.setType("videoChat");var success=this.conn.send(aMsg);this.fireEvent("videoInUse",true);this.fireEvent("selfPresenceUpdate");},sendVideoChatAccept:function(user){if(!$defined(user)){return;}if(!this.videoEnabled()){return;}var stratusId=sim.GetNearID();var userJID=new JSJaCJID(this.getJID(user));var aMsg=new JSJaCMessage();aMsg.setTo(userJID);aMsg.setBody(stratusId);aMsg.setType("videoChatAccept");var success=this.conn.send(aMsg);this.fireEvent("videoInUse",true);this.fireEvent("selfPresenceUpdate");},sendIM:function(user,msg){if(!$defined(user)||!$defined(msg)){return;}var userJID=new JSJaCJID(this.getJID(user));var aMsg=new JSJaCMessage();aMsg.setTo(userJID);aMsg.setBody(msg);aMsg.setType("chat");var success=this.conn.send(aMsg);if(success){var msg=this.buildMessage(user,true,msg,new Date());this.fireEvent("chatMsgReceived",msg);}},sendTyping:function(user){if(!$defined(user)){return;}var userJID=new JSJaCJID(this.getJID(user));var aMsg=new JSJaCMessage();aMsg.setTo(userJID);aMsg.setType("typing");var success=this.conn.send(aMsg);},buildMessage:function(target,outbound,msg,date){return{target:target,outbound:outbound,msg:msg,timestamp:date};},getBody:function(packet){var bodyNode=packet.getChild("body");if(!bodyNode){return"";}if(typeof(bodyNode.textContent)!="undefined"){return bodyNode.textContent;}return bodyNode.firstChild.nodeValue;},getItem:function(packet){var itemNode=packet.getChild("item");if(!itemNode){return"";}if(typeof(itemNode.textContent)!="undefined"){return itemNode.textContent;}return itemNode.firstChild.nodeValue;},handleMessage:function(packet){if(packet.getType()=="chat"){var timestamp=new Date();var x=packet.getChild("x");if($defined(x)){timestamp=DateUtility.convertFromGMT(Date.parse(x.getAttribute("stamp")));}var username=packet.getFromJID().getNode();var user=this.getContact(username);var msg=this.buildMessage(user,false,packet.getBody(),timestamp);this.fireEvent("chatMsgReceived",msg);}else{if(packet.getType()=="videoChat"){var username=packet.getFromJID().getNode();var stratusId=packet.getBody();this.fireEvent("videoChatRequestReceived",username,stratusId);}else{if(packet.getType()=="videoChatAccept"){var username=packet.getFromJID().getNode();var stratusId=packet.getBody();this.fireEvent("videoChatRequestAccepted",username,stratusId);}else{if(packet.getType()=="typing"){var username=packet.getFromJID().getNode();this.fireEvent("chatTypingReceived",username);}else{if(packet.getType()=="event"&&packet.getFromJID().getNode()=="server"){var msg=this.getBody(packet);var item=JSON.decode(msg);Logger().log("unicast/multicast received");if($defined(item.eventName)&&$defined(item.data)){this.fireEvent(item.eventName,item.data);}else{Logger().log("unknown event captured");}}else{if(packet.getChild("event")!=null){Logger().log("broadcast received");var msg=this.getItem(packet);if(msg!=""){var item=JSON.decode(msg);if($defined(item.eventName)&&$defined(item.data)){this.fireEvent(item.eventName,item.data);}else{Logger().log("unknown event captured");}}}}}}}}},handlePresence:function(packet){var jid=packet.getFromJID();var username=jid.getNode();var session=jid.getResource();if(jid.getDomain()==this.domain){Logger().log(username+" presence received");if(!packet.getType()){if(username==this.getPrivateUser().username){var show=packet.getShow();this.selfPresenceReceived(show,true);return;}var show=packet.getShow();var video=false;var pip=packet.getChild("pip","*");if(pip){if(pip.getAttribute("video")==1){video=true;}}this.userPresenceReceived(username,show,true,session,video);}else{if(packet.getType()=="unavailable"){var username=jid.getNode();if(username==this.getPrivateUser().username){return;}var session=jid.getResource();this.userPresenceReceived(username,"",false,session,false);}}}},handleConnected:function(){Logger().log("connected");this.isConnecting=false;this.fireEvent("xmppConnected");this.updateSelfPresence("",true,false);window.onunload=this.disconnect.bind(this);},handleDisconnected:function(){Logger().log("disconnected");this.isConnecting=false;this.fireEvent("xmppDisconnected");this.connectTimer=this.connect.delay(3000,this);},handleError:function(e){this.reconnect();Logger().log(e.xml());},handleInPacket:function(aJSJaCPacket){Logger().log("in");Logger().log("packet:"+aJSJaCPacket.xml());},handleOutPacket:function(aJSJaCPacket){Logger().log("out");Logger().log("packet:"+aJSJaCPacket.xml());},setupListeners:function(){this.conn.registerHandler("message",this.handleMessage.bind(this));this.conn.registerHandler("presence",this.handlePresence.bind(this));this.conn.registerHandler("onconnect",this.handleConnected.bind(this));this.conn.registerHandler("onerror",this.handleError.bind(this));this.conn.registerHandler("ondisconnect",this.handleDisconnected.bind(this));},getJID:function(user){if($defined(user)){return user.username+"@"+this.domain;}else{return this.username+"@"+this.domain;}}});Pipio.implement({appList:[{id:1,name:"contacts",displayName:"Contacts",iconOptions:{iconName:"pipio"},classRef:Contacts},{id:2,name:"home",displayName:"Home",iconOptions:{iconName:"pipio"},classRef:Home},{id:3,name:"appstore",displayName:"Pip.io App Store",iconOptions:{iconName:"applications"},classRef:Appstore,autoDock:true},{id:4,name:"rss",displayName:"News Reader",iconOptions:{iconName:"rss"},classRef:Rss,autoDock:true},{id:5,name:"facebook",displayName:"Facebook",iconOptions:{iconName:"facebook"},classRef:Facebook,autoDock:true},{id:6,name:"twitter",displayName:"Twitter",iconOptions:{iconName:"twitter"},classRef:Twitter,autoDock:true}],instanceAppList:{user:{name:"user",classRef:User,autoDock:true},room:{name:"room",classRef:Room,autoDock:true},global:{name:"global",classRef:Global,autoDock:true}},initApps:function(){this.apps=new Hash();this.appsById=$H();this.appInstances=new Hash();this.appList.each(function(app){this.initApp(app);},this);},initInstalledApps:function(apps){this.installedApps=$H();if(!$defined(apps)){return;}apps.each(function(app){this.installedApps.set(app.app_id,{settings:app.settings});},this);this.updateAppsMenu();},appInstalled:function(data){if(!$defined(data.app_id)){return;}this.installedApps.set(data.app_id,data);this.updateAppsMenu();var app=this.getAppById(data.app_id);this.startApp(app.name,{settings:data.settings});},appUninstalled:function(data){if(!$defined(data.app_id)){return;}this.installedApps.erase(data.app_id);this.updateAppsMenu();},updateAppsMenu:function(){DomUtility.hide("app_menu_item_4");DomUtility.hide("app_menu_item_5");DomUtility.hide("app_menu_item_6");DomUtility.show("no_apps");if(this.installedApps.getLength()>0){DomUtility.hide("no_apps");this.installedApps.each(function(app,appId){DomUtility.show("app_menu_item_"+appId);},this);}},getAppById:function(appId){if(this.appsById.has(appId)){return this.appsById.get(appId);}else{return false;}},initApp:function(app){var o=new app.classRef(app);this.apps.set(app.name,o);this.appsById.set(app.id,app);},startApp:function(appName,options){if(!this.apps.has(appName)){return;}var appId=this.apps.get(appName).appId;if(this.installedApps.has(appId)){this.apps.get(appName).start(this.installedApps.get(appId));}else{this.apps.get(appName).start(options);}},startAppInstance:function(appName,instanceName,options){if(!$defined(this.instanceAppList[appName])){return;}var appId=appName+"_"+instanceName;if(this.appInstances.has(appId)){this.appInstances.get(appId).start(appId);return;}var app=this.instanceAppList[appName];var o=new app.classRef(app,options);this.appInstances.set(appId,o);o.start(appId);}});Pipio.implement({initConnectionEventHandlers:function(){this.registerHandler("connectionGroupAdded",this.connectionGroupAdded.bind(this));this.registerHandler("connectionGroupDeleted",this.connectionGroupDeleted.bind(this));this.registerHandler("connectionGroupMoved",this.connectionGroupMoved.bind(this));this.registerHandler("connectionAdded",this.connectionAdded.bind(this));this.registerHandler("connectionDeleted",this.connectionDeleted.bind(this));this.registerHandler("connectionRequestAdded",this.connectionRequestAdded.bind(this));this.registerHandler("connectionRequestDeleted",this.connectionRequestDeleted.bind(this));this.registerHandler("connectionRequestOutAdded",this.connectionRequestOutAdded.bind(this));this.registerHandler("connectionRequestOutDeleted",this.connectionRequestOutDeleted.bind(this));this.registerHandler("roomAdded",this.roomAdded.bind(this));this.registerHandler("roomDeleted",this.roomDeleted.bind(this));this.registerHandler("roomClosed",this.roomDeleted.bind(this));this.registerHandler("roomMembershipUpdated",this.roomMembershipUpdated.bind(this));this.registerHandler("roomStreamSubscriptionDeleted",this.roomStreamSubscriptionDeleted.bind(this));this.registerHandler("roomStreamSubscriptionAdded",this.roomStreamSubscriptionAdded.bind(this));this.registerHandler("profileUpdated",this.profileUpdated.bind(this));this.registerHandler("locationUpdated",this.locationUpdated.bind(this));this.registerHandler("locationCleared",this.locationCleared.bind(this));},initConnections:function(){this.connsByUsername=$H();this.userCache=$H();this.groups=$H();this.requestsByUsername=$H();this.requestsOutByUsername=$H();this.roomsByUsername=$H();this.roomCache=$H();},initLoggedInConnections:function(){this.initConnections();this.processConnections();},initLoggedOutConnections:function(){this.initConnections();},userAboutUpdated:function(data){if(!$defined(data.username)){return;}if(this.connsByUsername.has(data.username)){this.connsByUsername.get(data.username).about=data.about;}if(this.userCache.has(data.username)){this.userCache.get(data.username).about=data.about;}},processConnections:function(){Logger().log("processing user connections");user_data.groups.each(function(group){this.processGroup(group);},this);var unsorted={group_id:0,name:"Unsorted"};this.processGroup(unsorted);user_data.connections.each(function(user){this.processConnection(user);},this);user_data.connection_requests.each(function(user){this.processConnectionRequest(user);},this);user_data.connection_requests_out.each(function(user){this.processConnectionRequestOut(user);},this);user_data.rooms.each(function(room){this.processRoom(room);},this);},processGroup:function(group){group.users=new Hash();this.groups.set(parseInt(group.group_id),group);return group;},processRoom:function(room){room=UserUtility.processRoom(room);this.roomsByUsername.set(room.username,room);return room;},processConnection:function(user){user=UserUtility.processUser(user);this.connsByUsername.set(user.username,user);var group=this.getGroup(user.group_id);this.addUserToGroup(user,group);return user;},processConnectionRequest:function(user){user=UserUtility.processUser(user);this.requestsByUsername.set(user.username,user);return user;},processConnectionRequestOut:function(user){Logger().log("procesing out request "+user.username);user=UserUtility.processUser(user);this.requestsOutByUsername.set(user.username,user);return user;},roomAdded:function(data){if(!$defined(data.room)){return;}var room=this.processRoom(data.room);this.dispatchEvent("feedRoomAdded",room);},roomDeleted:function(data){if(!$defined(data.username)){return;}this.roomsByUsername.erase(data.username);this.roomCache.erase(data.username);this.dispatchEvent("feedRoomDeleted",data.username);},roomMembershipUpdated:function(data){if(!$defined(data.username)||!this.roomsByUsername.has(data.username)){return;}this.roomsByUsername.get(data.username).status=data.status;},roomStreamSubscriptionAdded:function(data){if(!$defined(data.room)||!this.roomsByUsername.has(data.room.username)){return;}this.roomsByUsername.get(data.room.username).subscribed=1;},roomStreamSubscriptionDeleted:function(data){if(!$defined(data.username)||!this.roomsByUsername.has(data.username)){return;}this.roomsByUsername.get(data.username).subscribed=0;},connectionAdded:function(data){if(!$defined(data.user)){return;}var user=this.processConnection(data.user);this.dispatchEvent("contactAdded",user);if(this.requestsByUsername.has(user.username)){this.requestsByUsername.erase(user.username);this.dispatchEvent("contactRequestDeleted",user.username);}if(this.requestsOutByUsername.has(user.username)){this.requestsOutByUsername.erase(user.username);}},connectionDeleted:function(data){if(!$defined(data.username)){return;}var group=this.getGroup(data.group_id);group.users.erase(data.username);this.connsByUsername.erase(data.username);this.dispatchEvent("contactDeleted",data.username,data.group_id);},connectionRequestAdded:function(data){if(!$defined(data.user)){return;}var user=this.processConnectionRequest(data.user);this.dispatchEvent("contactRequestAdded",user);},connectionRequestDeleted:function(data){if(!$defined(data.username)){return;}this.requestsByUsername.erase(data.username);this.dispatchEvent("contactRequestDeleted",data.username);},connectionRequestOutAdded:function(data){if(!$defined(data.user)){return;}var user=this.processConnectionRequestOut(data.user);this.dispatchEvent("contactRequestOutAdded",user);},connectionRequestOutDeleted:function(data){if(!$defined(data.username)){return;}this.requestsOutByUsername.erase(data.username);this.dispatchEvent("contactRequestOutDeleted",data.username);},connectionGroupAdded:function(data){if(!$defined(data.group)){return;}var group=this.processGroup(data.group);this.fireEvent("contactGroupAdded",group);},connectionGroupDeleted:function(data){if(!$defined(data.group_id)||!this.groups.has(data.group_id)){return;}var group=this.getGroup(data.group_id);group.users.each(function(user){this.connectionGroupMoved({username:user.username,group_id:0,old_group_id:data.group_id});group.users.erase(user.username);},this);this.groups.erase(data.group_id);this.fireEvent("contactGroupDeleted",group);},connectionGroupMoved:function(data){if(!$defined(data.group_id)||!$defined(data.username)||!$defined(data.old_group_id)){return;}var user=this.getContact(data.username);user.group_id=data.group_id;this.fireEvent("contactGroupMoved",user);},addUserToGroup:function(user,group){if(!group.users.has(user.username)){group.users.set(user.username,user);}},getGroup:function(group_id){return this.groups.get(parseInt(group_id));},getContact:function(username){return this.connsByUsername.get(username);},getRoom:function(username){if(this.roomsByUsername.has(username)){return this.roomsByUsername.get(username);}else{if(this.roomCache.has(username)){return this.roomCache.get(username);}else{return null;}}},getContactsByGroup:function(group_id){if(!this.groups.has(group_id)){return;}var group=this.getGroup(group_id);return group.users;},getUser:function(username){if(this.userCache.has(username)){return this.userCache.get(username);}else{return null;}},cacheUser:function(user){this.userCache.set(user.username,user);},cacheRoom:function(room){this.roomCache.set(room.username,room);}});Pipio.implement({registerApis:function(){this.requests.each(function(request){this.registerCall("pipio",request);},this);},requests:[{name:"user_login",params:["username","password","remember_me"],url:"/api/auth/user/login"},{name:"user_logout",url:"/api/auth/user/logout"},{name:"user_register",params:["username","password","first_name","last_name","email","dob_month","dob_year","dob_day","access_key"],url:"/api/auth/user/register"},{name:"user_password_resetrequest",params:["username"],url:"/api/auth/user/password/resetrequest"},{name:"user_password_reset",params:["token","new_password","verify_password","email"],url:"/api/auth/user/password/reset"},{name:"user_privacy_set",params:["is_public"],url:"/api/user/privacy/set"},{name:"user_password_change",params:["password","new_password","verify_password"],url:"/api/user/password/change"},{name:"user_email_change",params:["email"],url:"/api/user/email/change"},{name:"user_location_enabled",params:["location_enabled"],url:"/api/user/location/enabled"},{name:"user_location_save",params:["label","country_code","country","city","region","lat","lon","geohash"],url:"/api/user/location/save"},{name:"token_get",url:"/api/user/token/get"},{name:"publish_status",url:"/api/pipio/stream/publish/status",params:["body","res"]},{name:"publish_roomstatus",url:"/api/pipio/stream/publish/roomstatus",params:["username","body","res"]},{name:"user_profilepic_upload",url:"/api/user/profilepic/upload",params:[]},{name:"room_profilepic_upload",url:"/api/pipio/room/profilepic/upload",params:["username"]},{name:"room_members",url:"/api/pipio/room/members",params:["username","date_created"]},{name:"room_subscribers",url:"/api/pipio/room/subscribers",params:["username","date_created"]},{name:"room_requests",url:"/api/pipio/room/requests",params:["username","date_created"]},{name:"email_block",url:"/api/auth/email/block",params:["token","email"]},{name:"user_profile_update",url:"/api/user/profile/update",params:["bio","url","interests"]},{name:"ping",params:[],url:"/api/user/session/ping"},{name:"emailblock_load",url:"/api/user/emailblock/load"},{name:"emailblock_update",params:["email_type","blocked"],url:"/api/user/emailblock/update"}]});\r
33627 \r
33628 \r
33629 \r
33630                 \r
33631                 //initialize pipio core\r
33632                         \r
33633                 var pipio_version = '1.0.8';\r
33634                 var user_data = {"logged_in":0};\r
33635                 var user_content = "blah";\r
33636                 \r
33637                 //this outputs all templates\r
33638                 var templates = new Hash();\r
33639                 \r
33640                 var pipio = new Pipio();\r
33641                                         \r
33642                 \r
33643 \r
33644 \r
33645 \r
33646         var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");\r
33647         document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));\r
33648         \r
33649 \r
33650 \r
33651 \r
33652 (function(){var aa="_gat",ba="_gaq",r=true,v=false,w=undefined,ca="4.6.5",x="length",y="cookie",A="location",B="&",C="=",D="__utma=",E="__utmb=",G="__utmc=",da="__utmk=",H="__utmv=",J="__utmz=",K="__utmx=",L="GASO=";var N=function(i){return w==i||"-"==i||""==i},ea=function(i){return i[x]>0&&" \n\r\t".indexOf(i)>-1},P=function(i,l,g){var t="-",k;if(!N(i)&&!N(l)&&!N(g)){k=i.indexOf(l);if(k>-1){g=i.indexOf(g,k);if(g<0)g=i[x];t=O(i,k+l.indexOf(C)+1,g)}}return t},Q=function(i){var l=v,g=0,t,k;if(!N(i)){l=r;for(t=0;t<i[x];t++){k=i.charAt(t);g+="."==k?1:0;l=l&&g<=1&&(0==t&&"-"==k||".0123456789".indexOf(k)>-1)}}return l},S=function(i,l){var g=encodeURIComponent;return g instanceof Function?l?encodeURI(i):g(i):escape(i)},\r
33653 T=function(i,l){var g=decodeURIComponent,t;i=i.split("+").join(" ");if(g instanceof Function)try{t=l?decodeURI(i):g(i)}catch(k){t=unescape(i)}else t=unescape(i);return t},U=function(i,l){return i.indexOf(l)>-1},V=function(i,l){i[i[x]]=l},W=function(i){return i.toLowerCase()},X=function(i,l){return i.split(l)},fa=function(i,l){return i.indexOf(l)},O=function(i,l,g){g=w==g?i[x]:g;return i.substring(l,g)},ga=function(i,l){return i.join(l)},ia=function(i){var l=1,g=0,t;if(!N(i)){l=0;for(t=i[x]-1;t>=0;t--){g=\r
33654 i.charCodeAt(t);l=(l<<6&268435455)+g+(g<<14);g=l&266338304;l=g!=0?l^g>>21:l}}return l},ja=function(){var i=window,l=w;if(i&&i.gaGlobal&&i.gaGlobal.hid)l=i.gaGlobal.hid;else{l=Y();i.gaGlobal=i.gaGlobal?i.gaGlobal:{};i.gaGlobal.hid=l}return l},Y=function(){return Math.round(Math.random()*2147483647)},Z={Ha:function(i,l){this.bb=i;this.nb=l},ib:v,_gasoDomain:w,_gasoCPath:w};Z.Gb=function(){function i(k){return new t(k[0],k[1])}function l(k){var p=[];k=k.split(",");var f;for(f=0;f<k.length;++f)p.push(i(k[f].split(":")));return p}var g=this,t=Z.Ha;g.Ia="utm_campaign";g.Ja="utm_content";g.Ka="utm_id";g.La="utm_medium";g.Ma="utm_nooverride";g.Na="utm_source";g.Oa="utm_term";g.Pa="gclid";g.ba=0;g.z=0;g.Ta=15768E6;g.sb=18E5;g.v=63072E6;g.ta=[];g.va=[];g.nc="cse";g.oc="q";g.ob=5;g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");\r
33655 g.t=w;g.lb=v;g.h="/";g.U=100;g.oa="/__utm.gif";g.ga=1;g.ha=1;g.u="|";g.fa=1;g.da=1;g.Ra=1;g.b="auto";g.I=1;g.ra=1E3;g.Jc=10;g.Pb=10;g.Kc=0.2;g.o=w;g.a=document;g.e=window};Z.Hb=function(i){function l(d,a,j,c){var n="",s=0;n=P(d,"2"+a,";");if(!N(n)){d=n.indexOf("^"+j+".");if(d<0)return["",0];n=O(n,d+j[x]+2);if(n.indexOf("^")>0)n=n.split("^")[0];j=n.split(":");n=j[1];s=parseInt(j[0],10);if(!c&&s<p.r)n=""}if(N(n))n="";return[n,s]}function g(d,a){return"^"+ga([[a,d[1]].join("."),d[0]],":")}function t(d,a){f.a[y]=d+"; path="+f.h+"; "+a+p.fb()}function k(d){var a=new Date;d=new Date(a.getTime()+d);return"expires="+d.toGMTString()+"; "}var p=this,f=i;p.r=(new Date).getTime();\r
33656 var h=[D,E,G,J,H,K,L];p.k=function(){var d=f.a[y];return f.o?p.Wb(d,f.o):d};p.Wb=function(d,a){var j=[],c,n;for(c=0;c<h[x];c++){n=l(d,h[c],a)[0];N(n)||(j[j[x]]=h[c]+n+";")}return j.join("")};p.l=function(d,a,j){var c=j>0?k(j):"";if(f.o){a=p.kc(f.a[y],d,f.o,a,j);d="2"+d;c=j>0?k(f.v):""}t(d+a,c)};p.kc=function(d,a,j,c,n){var s="";n=n||f.v;c=g([c,p.r+n*1],j);s=P(d,"2"+a,";");if(!N(s)){d=g(l(d,a,j,r),j);s=ga(s.split(d),"");return s=c+s}return c};p.fb=function(){return N(f.b)?"":"domain="+f.b+";"}};Z.$=function(i){function l(b){b=b instanceof Array?b.join("."):"";return N(b)?"-":b}function g(b,e){var o=[];if(!N(b)){o=b.split(".");if(e)for(b=0;b<o[x];b++)Q(o[b])||(o[b]="-")}return o}function t(b,e,o){var m=c.M,q,u;for(q=0;q<m[x];q++){u=m[q][0];u+=N(e)?e:e+m[q][4];m[q][2](P(b,u,o))}}var k,p,f,h,d,a,j,c=this,n,s=i;c.j=new Z.Hb(i);c.kb=function(){return w==n||n==c.P()};c.k=function(){return c.j.k()};c.ma=function(){return d?d:"-"};c.vb=function(b){d=b};c.za=function(b){n=Q(b)?b*1:"-"};c.la=function(){return l(a)};\r
33657 c.Aa=function(b){a=g(b)};c.Vb=function(){c.j.l(H,"",-1)};c.lc=function(){return n?n:"-"};c.fb=function(){return N(s.b)?"":"domain="+s.b+";"};c.ja=function(){return l(k)};c.tb=function(b){k=g(b,1)};c.C=function(){return l(p)};c.ya=function(b){p=g(b,1)};c.ka=function(){return l(f)};c.ub=function(b){f=g(b,1)};c.na=function(){return l(h)};c.wb=function(b){h=g(b);for(b=0;b<h[x];b++)if(b<4&&!Q(h[b]))h[b]="-"};c.fc=function(){return j};c.Dc=function(b){j=b};c.Sb=function(){k=[];p=[];f=[];h=[];d=w;a=[];n=\r
33658 w};c.P=function(){var b="",e;for(e=0;e<c.M[x];e++)b+=c.M[e][1]();return ia(b)};c.ua=function(b){var e=c.k(),o=v;if(e){t(e,b,";");c.za(c.P());o=r}return o};c.zc=function(b){t(b,"",B);c.za(P(b,da,B))};c.Hc=function(){var b=c.M,e=[],o;for(o=0;o<b[x];o++)V(e,b[o][0]+b[o][1]());V(e,da+c.P());return e.join(B)};c.Nc=function(b,e){var o=c.M,m=s.h;c.ua(b);s.h=e;for(b=0;b<o[x];b++)N(o[b][1]())||o[b][3]();s.h=m};c.Cb=function(){c.j.l(D,c.ja(),s.v)};c.Ea=function(){c.j.l(E,c.C(),s.sb)};c.Db=function(){c.j.l(G,\r
33659 c.ka(),0)};c.Ga=function(){c.j.l(J,c.na(),s.Ta)};c.Eb=function(){c.j.l(K,c.ma(),s.v)};c.Fa=function(){c.j.l(H,c.la(),s.v)};c.Oc=function(){c.j.l(L,c.fc(),0)};c.M=[[D,c.ja,c.tb,c.Cb,"."],[E,c.C,c.ya,c.Ea,""],[G,c.ka,c.ub,c.Db,""],[K,c.ma,c.vb,c.Eb,""],[J,c.na,c.wb,c.Ga,"."],[H,c.la,c.Aa,c.Fa,"."]]};Z.Kb=function(i){var l=this,g=i,t=new Z.$(g),k=function(){},p=function(f){var h=(new Date).getTime(),d;d=(h-f[3])*(g.Kc/1E3);if(d>=1){f[2]=Math.min(Math.floor(f[2]*1+d),g.Pb);f[3]=h}return f};l.H=function(f,h,d,a,j,c){var n,s=g.I,b=g.a[A];t.ua(d);n=X(t.C(),".");if(n[1]<500||a){if(j)n=p(n);if(a||!j||n[2]>=1){if(!a&&j)n[2]=n[2]*1-1;n[1]=n[1]*1+1;f="?utmwv="+ca+"&utmn="+Y()+(N(b.hostname)?"":"&utmhn="+S(b.hostname))+(g.U==100?"":"&utmsp="+S(g.U))+f;if(0==s||2==s){a=2==s?k:c||k;l.$a(g.oa+f,a)}if(1==s||\r
33660 2==s){f=("https:"==b.protocol?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif")+f+"&utmac="+h+"&utmcc="+l.ac(d);if(ka)f+="&gaq=1";l.$a(f,c)}}}t.ya(n.join("."));t.Ea()};l.$a=function(f,h){var d=new Image(1,1);d.src=f;d.onload=function(){d.onload=null;(h||k)()}};l.ac=function(f){var h=[],d=[D,J,H,K],a,j=t.k(),c;for(a=0;a<d[x];a++){c=P(j,d[a]+f,";");if(!N(c)){if(d[a]==H){c=X(c.split(f+".")[1],"|")[0];if(N(c))continue;c=f+"."+c}V(h,d[a]+c+";")}}return S(h.join("+"))}};Z.n=function(){var i=this;i.Y=[];i.hb=function(l){var g,t=i.Y,k;for(k=0;k<t.length;k++)g=l==t[k].q?t[k]:g;return g};i.Ob=function(l,g,t,k,p,f,h,d){var a=i.hb(l);if(w==a){a=new Z.n.Mb(l,g,t,k,p,f,h,d);V(i.Y,a)}else{a.Qa=g;a.Ab=t;a.zb=k;a.xb=p;a.Xa=f;a.yb=h;a.Za=d}return a}};Z.n.Lb=function(i,l,g,t,k,p){var f=this;f.Bb=i;f.Ba=l;f.D=g;f.Va=t;f.pb=k;f.qb=p;f.Ca=function(){return"&"+["utmt=item","tid="+S(f.Bb),"ipc="+S(f.Ba),"ipn="+S(f.D),"iva="+S(f.Va),"ipr="+S(f.pb),"iqt="+S(f.qb)].join("&utm")}};\r
33661 Z.n.Mb=function(i,l,g,t,k,p,f,h){var d=this;d.q=i;d.Qa=l;d.Ab=g;d.zb=t;d.xb=k;d.Xa=p;d.yb=f;d.Za=h;d.R=[];d.Nb=function(a,j,c,n,s){var b=d.gc(a),e=d.q;if(w==b)V(d.R,new Z.n.Lb(e,a,j,c,n,s));else{b.Bb=e;b.Ba=a;b.D=j;b.Va=c;b.pb=n;b.qb=s}};d.gc=function(a){var j,c=d.R,n;for(n=0;n<c.length;n++)j=a==c[n].Ba?c[n]:j;return j};d.Ca=function(){return"&"+["utmt=tran","id="+S(d.q),"st="+S(d.Qa),"to="+S(d.Ab),"tx="+S(d.zb),"sp="+S(d.xb),"ci="+S(d.Xa),"rg="+S(d.yb),"co="+S(d.Za)].join("&utmt")}};Z.Fb=function(i){function l(){var f,h,d;h="ShockwaveFlash";var a="$version",j=k.d?k.d.plugins:w;if(j&&j[x]>0)for(f=0;f<j[x]&&!d;f++){h=j[f];if(U(h.name,"Shockwave Flash"))d=h.description.split("Shockwave Flash ")[1]}else{h=h+"."+h;try{f=new ActiveXObject(h+".7");d=f.GetVariable(a)}catch(c){}if(!d)try{f=new ActiveXObject(h+".6");d="WIN 6,0,21,0";f.AllowScriptAccess="always";d=f.GetVariable(a)}catch(n){}if(!d)try{f=new ActiveXObject(h);d=f.GetVariable(a)}catch(s){}if(d){d=X(d.split(" ")[1],",");d=d[0]+\r
33662 "."+d[1]+" r"+d[2]}}return d?d:p}var g=i,t=g.e,k=this,p="-";k.V=t.screen;k.Sa=!k.V&&t.java?java.awt.Toolkit.getDefaultToolkit():w;k.d=t.navigator;k.W=p;k.xa=p;k.Wa=p;k.qa=p;k.pa=1;k.eb=p;k.bc=function(){var f;if(t.screen){k.W=k.V.width+"x"+k.V.height;k.xa=k.V.colorDepth+"-bit"}else if(k.Sa)try{f=k.Sa.getScreenSize();k.W=f.width+"x"+f.height}catch(h){}k.qa=W(k.d&&k.d.language?k.d.language:k.d&&k.d.browserLanguage?k.d.browserLanguage:p);k.pa=k.d&&k.d.javaEnabled()?1:0;k.eb=g.ha?l():p;k.Wa=S(g.a.characterSet?\r
33663 g.a.characterSet:g.a.charset?g.a.charset:p)};k.Ic=function(){return B+"utm"+["cs="+S(k.Wa),"sr="+k.W,"sc="+k.xa,"ul="+k.qa,"je="+k.pa,"fl="+S(k.eb)].join("&utm")};k.$b=function(){var f=g.a,h=t.history[x];f=k.d.appName+k.d.version+k.qa+k.d.platform+k.d.userAgent+k.pa+k.W+k.xa+(f[y]?f[y]:"")+(f.referrer?f.referrer:"");for(var d=f[x];h>0;)f+=h--^d++;return ia(f)}};Z.m=function(i,l,g,t){function k(d){var a="";d=W(d.split("://")[1]);if(U(d,"/")){d=d.split("/")[1];if(U(d,"?"))a=d.split("?")[0]}return a}function p(d){var a="";a=W(d.split("://")[1]);if(U(a,"/"))a=a.split("/")[0];return a}var f=t,h=this;h.c=i;h.rb=l;h.r=g;h.ic=function(d){var a=h.gb();return new Z.m.w(P(d,f.Ka+C,B),P(d,f.Na+C,B),P(d,f.Pa+C,B),h.Q(d,f.Ia,"(not set)"),h.Q(d,f.La,"(not set)"),h.Q(d,f.Oa,a&&!N(a.K)?T(a.K):w),h.Q(d,f.Ja,w))};h.jb=function(d){var a=p(d),j=k(d);if(U(a,"google")){d=d.split("?").join(B);\r
33664 if(U(d,B+f.oc+C))if(j==f.nc)return r}return v};h.gb=function(){var d,a=h.rb,j,c,n=f.T;if(!(N(a)||"0"==a||!U(a,"://")||h.jb(a))){d=p(a);for(j=0;j<n[x];j++){c=n[j];if(U(d,W(c.bb))){a=a.split("?").join(B);if(U(a,B+c.nb+C)){d=a.split(B+c.nb+C)[1];if(U(d,B))d=d.split(B)[0];return new Z.m.w(w,c.bb,w,"(organic)","organic",d,w)}}}}};h.Q=function(d,a,j){d=P(d,a+C,B);return j=!N(d)?T(d):!N(j)?j:"-"};h.uc=function(d){var a=f.ta,j=v,c;if(d&&"organic"==d.S){d=W(T(d.K));for(c=0;c<a[x];c++)j=j||W(a[c])==d}return j};\r
33665 h.hc=function(){var d="",a="";d=h.rb;if(!(N(d)||"0"==d||!U(d,"://")||h.jb(d))){d=d.split("://")[1];if(U(d,"/")){a=O(d,d.indexOf("/"));a=a.split("?")[0];d=W(d.split("/")[0])}if(0==d.indexOf("www."))d=O(d,4);return new Z.m.w(w,d,w,"(referral)","referral",w,a)}};h.Xb=function(d){var a="";if(f.ba){a=d&&d.hash?d.href.substring(d.href.indexOf("#")):"";a=""!=a?a+B:a}a+=d.search;return a};h.dc=function(){return new Z.m.w(w,"(direct)",w,"(direct)","(none)",w,w)};h.vc=function(d){var a=v,j,c=f.va;if(d&&"referral"==\r
33666 d.S){d=W(S(d.X));for(j=0;j<c[x];j++)a=a||U(d,W(c[j]))}return a};h.L=function(d){return w!=d&&d.mb()};h.cc=function(d,a){var j="",c="-",n,s=0,b,e,o=h.c;if(!d)return"";e=d.k();j=h.Xb(f.a[A]);if(f.z&&d.kb()){c=d.na();if(!N(c)&&!U(c,";")){d.Ga();return""}}c=P(e,J+o+".",";");n=h.ic(j);if(h.L(n)){j=P(j,f.Ma+C,B);if("1"==j&&!N(c))return""}if(!h.L(n)){n=h.gb();if(!N(c)&&h.uc(n))return""}if(!h.L(n)&&a){n=h.hc();if(!N(c)&&h.vc(n))return""}if(!h.L(n))if(N(c)&&a)n=h.dc();if(!h.L(n))return"";if(!N(c)){s=c.split(".");\r
33667 b=new Z.m.w;b.Zb(s.slice(4).join("."));b=W(b.Da())==W(n.Da());s=s[3]*1}if(!b||a){a=P(e,D+o+".",";");e=a.lastIndexOf(".");a=e>9?O(a,e+1)*1:0;s++;a=0==a?1:a;d.wb([o,h.r,a,s,n.Da()].join("."));d.Ga();return B+"utmcn=1"}else return B+"utmcr=1"}};\r
33668 Z.m.w=function(i,l,g,t,k,p,f){var h=this;h.q=i;h.X=l;h.ea=g;h.D=t;h.S=k;h.K=p;h.Ya=f;h.Da=function(){var d=[],a=[["cid",h.q],["csr",h.X],["gclid",h.ea],["ccn",h.D],["cmd",h.S],["ctr",h.K],["cct",h.Ya]],j,c;if(h.mb())for(j=0;j<a[x];j++)if(!N(a[j][1])){c=a[j][1].split("+").join("%20");c=c.split(" ").join("%20");V(d,"utm"+a[j][0]+C+c)}return d.join("|")};h.mb=function(){return!(N(h.q)&&N(h.X)&&N(h.ea))};h.Zb=function(d){var a=function(j){return T(P(d,"utm"+j+C,"|"))};h.q=a("cid");h.X=a("csr");h.ea=a("gclid");\r
33669 h.D=a("ccn");h.S=a("cmd");h.K=a("ctr");h.Ya=a("cct")}};Z.Ib=function(i,l,g,t){function k(j,c,n){var s;if(!N(n)){n=n.split(",");for(var b=0;b<n[x];b++){s=n[b];if(!N(s)){s=s.split(h);if(s[x]==4)c[s[0]]=[s[1],s[2],j]}}}}var p=this,f=l,h=C,d=i,a=t;p.O=g;p.sa="";p.p={};p.tc=function(){var j;j=X(P(p.O.k(),H+f+".",";"),f+".")[1];if(!N(j)){j=j.split("|");k(1,p.p,j[1]);p.sa=j[0];p.Z()}};p.Z=function(){p.Qb();var j=p.sa,c,n,s="";for(c in p.p)if((n=p.p[c])&&1===n[2])s+=c+h+n[0]+h+n[1]+h+1+",";N(s)||(j+="|"+s);if(N(j))p.O.Vb();else{p.O.Aa(f+"."+j);p.O.Fa()}};p.Ec=\r
33670 function(j){p.sa=j;p.Z()};p.Cc=function(j,c,n,s){if(1!=s&&2!=s&&3!=s)s=3;var b=v;if(c&&n&&j>0&&j<=d.ob){c=S(c);n=S(n);if(c[x]+n[x]<=64){p.p[j]=[c,n,s];p.Z();b=r}}return b};p.mc=function(j){if((j=p.p[j])&&1===j[2])return j[1]};p.Ub=function(j){var c=p.p;if(c[j]){delete c[j];p.Z()}};p.Qb=function(){a._clearKey(8);a._clearKey(9);a._clearKey(11);var j=p.p,c,n;for(n in j)if(c=j[n]){a._setKey(8,n,c[0]);a._setKey(9,n,c[1]);(c=c[2])&&3!=c&&a._setKey(11,n,""+c)}}};Z.N=function(){function i(m,q,u,z){if(w==f[m])f[m]={};if(w==f[m][q])f[m][q]=[];f[m][q][u]=z}function l(m,q){if(w!=f[m]&&w!=f[m][q]){f[m][q]=w;q=r;var u;for(u=0;u<a[x];u++)if(w!=f[m][a[u]]){q=v;break}if(q)f[m]=w}}function g(m){var q="",u=v,z,M;for(z=0;z<a[x];z++){M=m[a[z]];if(w!=M){if(u)q+=a[z];q+=t(M);u=v}else u=r}return q}function t(m){var q=[],u,z;for(z=0;z<m[x];z++)if(w!=m[z]){u="";if(z!=o&&w==m[z-1])u+=z.toString()+s;u+=k(m[z]);V(q,u)}return j+q.join(n)+c}function k(m){var q="",u,z,M;for(u=0;u<\r
33671 m[x];u++){z=m.charAt(u);M=e[z];q+=w!=M?M:z}return q}var p=this,f={},h="k",d="v",a=[h,d],j="(",c=")",n="*",s="!",b="'",e={};e[b]="'0";e[c]="'1";e[n]="'2";e[s]="'3";var o=1;p.qc=function(m){return w!=f[m]};p.G=function(){var m="",q;for(q in f)if(w!=f[q])m+=q.toString()+g(f[q]);return m};p.Ac=function(m){if(m==w)return p.G();var q=m.G(),u;for(u in f)if(w!=f[u]&&!m.qc(u))q+=u.toString()+g(f[u]);return q};p._setKey=function(m,q,u){if(typeof u!="string")return v;i(m,h,q,u);return r};p._setValue=function(m,\r
33672 q,u){if(typeof u!="number"&&(w==Number||!(u instanceof Number))||Math.round(u)!=u||u==NaN||u==Infinity)return v;i(m,d,q,u.toString());return r};p._getKey=function(m,q){return w!=f[m]&&w!=f[m][h]?f[m][h][q]:w};p._getValue=function(m,q){return w!=f[m]&&w!=f[m][d]?f[m][d][q]:w};p._clearKey=function(m){l(m,h)};p._clearValue=function(m){l(m,d)}};Z.Jb=function(i,l){var g=this;g.Qc=l;g.xc=i;g._trackEvent=function(t,k,p){return l._trackEvent(g.xc,t,k,p)}};Z.aa=function(i,l){function g(){if("auto"==c.b){var b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.b=b}c.b=W(c.b)}function t(){var b=c.b,e=b.indexOf("www.google.")*b.indexOf(".google.")*b.indexOf("google.");return e||"/"!=c.h||b.indexOf("google.org")>-1}function k(b,e,o){if(N(b)||N(e)||N(o))return"-";b=P(b,D+a.c+".",e);if(!N(b)){b=b.split(".");b[5]=b[5]?b[5]*1+1:1;b[3]=b[4];b[4]=o;b=b.join(".")}return b}function p(){return"file:"!=c.a[A].protocol&&t()}function f(b){if(!b||""==b)return"";for(;ea(b.charAt(0));)b=\r
33673 O(b,1);for(;ea(b.charAt(b[x]-1));)b=O(b,0,b[x]-1);return b}function h(b,e,o,m){if(!N(b())){e(m?T(b()):b());U(b(),";")||o()}}function d(b){var e,o=""!=b&&c.a[A].host!=b;if(o)for(e=0;e<c.t[x];e++)o=o&&fa(W(b),W(c.t[e]))==-1;return o}var a=this,j=w,c=new Z.Gb,n=v,s=w;a.e=window;a.r=Math.round((new Date).getTime()/1E3);a.s=i||"UA-XXXXX-X";a.ab=c.a.referrer;a.ia=w;a.f=w;a.B=w;a.F=v;a.A=w;a.Ua="";a.g=w;a.cb=w;a.c=w;a.i=w;c.o=l?S(l):w;a.wc=function(){var b=v;if(a.B)b=a.B.match(/^[0-9a-z-_.]{10,1200}$/i);\r
33674 return b};a.jc=function(){return Y()^a.A.$b()&2147483647};a.ec=function(){if(!c.b||""==c.b||"none"==c.b){c.b="";return 1}g();return c.Ra?ia(c.b):1};a.Yb=function(b,e){if(N(b))b="-";else{e+=c.h&&"/"!=c.h?c.h:"";e=b.indexOf(e);b=e>=0&&e<=8?"0":"["==b.charAt(0)&&"]"==b.charAt(b[x]-1)?"-":b}return b};a.wa=function(b){var e="",o=c.a;e+=c.fa?a.A.Ic():"";e+=c.da?a.Ua:"";e+=c.ga&&!N(o.title)?"&utmdt="+S(o.title):"";e+="&utmhid="+ja()+"&utmr="+S(a.ia)+"&utmp="+S(a.Bc(b));return e};a.Bc=function(b){var e=c.a[A];\r
33675 return b=w!=b&&""!=b?S(b,r):S(e.pathname+e.search,r)};a.Lc=function(b){if(a.J()){var e="";if(a.g!=w&&a.g.G()[x]>0)e+="&utme="+S(a.g.G());e+=a.wa(b);j.H(e,a.s,a.c)}};a.Tb=function(){var b=new Z.$(c);return b.ua(a.c)?b.Hc():w};a._getLinkerUrl=function(b,e){var o=b.split("#"),m=b,q=a.Tb();if(q)if(e&&1>=o[x])m+="#"+q;else if(!e||1>=o[x])if(1>=o[x])m+=(U(b,"?")?B:"?")+q;else m=o[0]+(U(b,"?")?B:"?")+q+"#"+o[1];return m};a.Fc=function(){var b;if(a.wc()){a.i.Dc(a.B);a.i.Oc();Z._gasoDomain=c.b;Z._gasoCPath=\r
33676 c.h;b=c.a.createElement("script");b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.B+B+Y();c.a.getElementsByTagName("head")[0].appendChild(b)}};a.pc=function(){var b=a.r,e=a.i,o=e.k(),m=a.c+"",q=c.e,u=q?q.gaGlobal:w,z,M=U(o,D+m+"."),la=U(o,E+m),ma=U(o,G+m),F,I=[],R="",ha=v;o=N(o)?"":o;if(c.z){z=c.a[A]&&c.a[A].hash?c.a[A].href.substring(c.a[A].href.indexOf("#")):"";if(c.ba&&!N(z))R=z+B;R+=c.a[A].search;if(!N(R)&&U(R,D)){e.zc(R);e.kb()||e.Sb();\r
33677 F=e.ja()}h(e.ma,e.vb,e.Eb,true);h(e.la,e.Aa,e.Fa)}if(N(F))if(M)if(!la||!ma){F=k(o,";",b);a.F=r}else{F=P(o,D+m+".",";");I=X(P(o,E+m,";"),".")}else{F=ga([m,a.jc(),b,b,b,1],".");ha=a.F=r}else if(N(e.C())||N(e.ka())){F=k(R,B,b);a.F=r}else{I=X(e.C(),".");m=I[0]}F=F.split(".");if(q&&u&&u.dh==m&&!c.o){F[4]=u.sid?u.sid:F[4];if(ha){F[3]=u.sid?u.sid:F[4];if(u.vid){b=u.vid.split(".");F[1]=b[0];F[2]=b[1]}}}e.tb(F.join("."));I[0]=m;I[1]=I[1]?I[1]:0;I[2]=w!=I[2]?I[2]:c.Jc;I[3]=I[3]?I[3]:F[4];e.ya(I.join("."));\r
33678 e.ub(m);N(e.lc())||e.za(e.P());e.Cb();e.Ea();e.Db()};a.rc=function(){j=new Z.Kb(c)};a._initData=function(){var b;if(!n){if(!a.A){a.A=new Z.Fb(c);a.A.bc()}a.c=a.ec();a.i=new Z.$(c);a.g=new Z.N;s=new Z.Ib(c,a.c,a.i,a.g);a.rc()}if(p()){a.pc();s.tc()}if(!n){if(p()){a.ia=a.Yb(a.ab,c.a.domain);if(c.da){b=new Z.m(a.c,a.ia,a.r,c);a.Ua=b.cc(a.i,a.F)}}a.cb=new Z.N;n=r}Z.ib||a.sc()};a._visitCode=function(){a._initData();var b=P(a.i.k(),D+a.c+".",";");b=b.split(".");return b[x]<4?"":b[1]};a._cookiePathCopy=function(b){a._initData();\r
33679 a.i&&a.i.Nc(a.c,b)};a.sc=function(){var b=c.a[A].hash;if(b&&1==b.indexOf("gaso="))b=P(b,"gaso=",B);else b=(b=c.e.name)&&0<=b.indexOf("gaso=")?P(b,"gaso=",B):P(a.i.k(),L,";");if(b[x]>=10){a.B=b;a.Fc()}Z.ib=r};a.J=function(){return a._visitCode()%1E4<c.U*100};a.Gc=function(){var b,e,o=c.a.links;if(!c.lb){b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.t.push("."+b)}for(b=0;b<o[x]&&(c.ra==-1||b<c.ra);b++){e=o[b];if(d(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.yc;e.onclick=function(m){var q=\r
33680 !this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";q=q&&!a.Rb(m);a.Mc(m,this,q);return q?v:this.gatcOnclick?this.gatcOnclick(m):r}}}};a.yc=function(){};a._trackPageview=function(b){if(p()){a._initData();c.t&&a.Gc();a.Lc(b);a.F=v}};a._trackTrans=function(){var b=a.c,e=[],o,m,q;a._initData();if(a.f&&a.J()){for(o=0;o<a.f.Y[x];o++){m=a.f.Y[o];V(e,m.Ca());for(q=0;q<m.R[x];q++)V(e,m.R[q].Ca())}for(o=0;o<e[x];o++)j.H(e[o],a.s,b,r)}};a._setTrans=function(){var b=c.a,e,o,m;b=b.getElementById?\r
33681 b.getElementById("utmtrans"):b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:w;a._initData();if(b&&b.value){a.f=new Z.n;m=b.value.split("UTM:");c.u=!c.u||""==c.u?"|":c.u;for(b=0;b<m[x];b++){m[b]=f(m[b]);e=m[b].split(c.u);for(o=0;o<e[x];o++)e[o]=f(e[o]);if("T"==e[0])a._addTrans(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]);else"I"==e[0]&&a._addItem(e[1],e[2],e[3],e[4],e[5],e[6])}}};a._addTrans=function(b,e,o,m,q,u,z,M){a.f=a.f?a.f:new Z.n;return a.f.Ob(b,e,o,m,q,u,z,M)};a._addItem=function(b,e,o,m,q,u){var z;\r
33682 a.f=a.f?a.f:new Z.n;(z=a.f.hb(b))||(z=a._addTrans(b,"","","","","","",""));z.Nb(e,o,m,q,u)};a._setVar=function(b){if(b&&""!=b&&t()){a._initData();s.Ec(S(b));a.J()&&j.H("&utmt=var",a.s,a.c)}};a._setCustomVar=function(b,e,o,m){a._initData();return s.Cc(b,e,o,m)};a._deleteCustomVar=function(b){a._initData();s.Ub(b)};a._getVisitorCustomVar=function(b){a._initData();return s.mc(b)};a._setMaxCustomVariables=function(b){c.ob=b};a._link=function(b,e){if(c.z&&b){a._initData();c.a[A].href=a._getLinkerUrl(b,\r
33683 e)}};a._linkByPost=function(b,e){if(c.z&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,o){a.g._setKey(b,e,o)};a._setXValue=function(b,e,o){a.g._setValue(b,e,o)};a._getXKey=function(b,e){return a.g._getKey(b,e)};a._getXValue=function(b,e){return a.g.getValue(b,e)};a._clearXKey=function(b){a.g._clearKey(b)};a._clearXValue=function(b){a.g._clearValue(b)};a._createXObj=function(){a._initData();return new Z.N};a._sendXEvent=function(b){var e="";a._initData();\r
33684 if(a.J()){e+="&utmt=event&utme="+S(a.g.Ac(b))+a.wa();j.H(e,a.s,a.c,v,r)}};a._createEventTracker=function(b){a._initData();return new Z.Jb(b,a)};a._trackEvent=function(b,e,o,m){var q=a.cb;if(w!=b&&w!=e&&""!=b&&""!=e){q._clearKey(5);q._clearValue(5);(b=q._setKey(5,1,b)&&q._setKey(5,2,e)&&(w==o||q._setKey(5,3,o))&&(w==m||q._setValue(5,1,m)))&&a._sendXEvent(q)}else b=v;return b};a.Mc=function(b,e,o){a._initData();if(a.J()){var m=new Z.N;m._setKey(6,1,e.href);var q=o?function(){a.db(b,e)}:w;j.H("&utmt=event&utme="+\r
33685 S(m.G())+a.wa(),a.s,a.c,v,r,q);if(o){var u=this;c.e.setTimeout(function(){u.db(b,e)},500)}}};a.db=function(b,e){if(!b)b=c.e.event;var o=r;if(e.gatcOnclick)o=e.gatcOnclick(b);if(o||typeof o=="undefined")if(!e.target||e.target=="_self")c.e[A]=e.href;else if(e.target=="_top")c.e.top.document[A]=e.href;else if(e.target=="_parent")c.e.parent.document[A]=e.href};a.Rb=function(b){if(!b)b=c.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&c.e.Event)e=b.modifiers&c.e.Event.CONTROL_MASK||\r
33686 b.modifiers&c.e.Event.SHIFT_MASK||b.modifiers&c.e.Event.ALT_MASK;return e};a.Pc=function(){return c};a._setDomainName=function(b){c.b=b};a._addOrganic=function(b,e,o){c.T.splice(o?0:c.T.length,0,new Z.Ha(b,e))};a._clearOrganic=function(){c.T=[]};a._addIgnoredOrganic=function(b){V(c.ta,b)};a._clearIgnoredOrganic=function(){c.ta=[]};a._addIgnoredRef=function(b){V(c.va,b)};a._clearIgnoredRef=function(){c.va=[]};a._setAllowHash=function(b){c.Ra=b?1:0};a._setCampaignTrack=function(b){c.da=b?1:0};a._setClientInfo=\r
33687 function(b){c.fa=b?1:0};a._getClientInfo=function(){return c.fa};a._setCookiePath=function(b){c.h=b};a._setTransactionDelim=function(b){c.u=b};a._setCookieTimeout=function(b){a._setCampaignCookieTimeout(b*1E3)};a._setCampaignCookieTimeout=function(b){c.Ta=b};a._setDetectFlash=function(b){c.ha=b?1:0};a._getDetectFlash=function(){return c.ha};a._setDetectTitle=function(b){c.ga=b?1:0};a._getDetectTitle=function(){return c.ga};a._setLocalGifPath=function(b){c.oa=b};a._getLocalGifPath=function(){return c.oa};\r
33688 a._setLocalServerMode=function(){c.I=0};a._setRemoteServerMode=function(){c.I=1};a._setLocalRemoteServerMode=function(){c.I=2};a._getServiceMode=function(){return c.I};a._setSampleRate=function(b){c.U=b};a._setSessionTimeout=function(b){a._setSessionCookieTimeout(b*1E3)};a._setSessionCookieTimeout=function(b){c.sb=b};a._setAllowLinker=function(b){c.z=b?1:0};a._setAllowAnchor=function(b){c.ba=b?1:0};a._setCampNameKey=function(b){c.Ia=b};a._setCampContentKey=function(b){c.Ja=b};a._setCampIdKey=function(b){c.Ka=\r
33689 b};a._setCampMediumKey=function(b){c.La=b};a._setCampNOKey=function(b){c.Ma=b};a._setCampSourceKey=function(b){c.Na=b};a._setCampTermKey=function(b){c.Oa=b};a._setCampCIdKey=function(b){c.Pa=b};a._getAccount=function(){return a.s};a._setAccount=function(b){a.s=b};a._setNamespace=function(b){c.o=b?S(b):w};a._getVersion=function(){return ca};a._setAutoTrackOutbound=function(b){c.t=[];if(b)c.t=b};a._setTrackOutboundSubdomains=function(b){c.lb=b};a._setHrefExamineLimit=function(b){c.ra=b};a._setReferrerOverride=\r
33690 function(b){a.ab=b};a._setCookiePersistence=function(b){a._setVisitorCookieTimeout(b)};a._setVisitorCookieTimeout=function(b){c.v=b}};Z._getTracker=function(i,l){return new Z.aa(i,l)};var ka=v,$={ca:{},_createAsyncTracker:function(i,l){l=l||"";i=new Z.aa(i);$.ca[l]=i;ka=r;return i},_getAsyncTracker:function(i){i=i||"";var l=$.ca[i];if(!l){l=new Z.aa;$.ca[i]=l;ka=r}return l},push:function(){for(var i=arguments,l=0,g=0;g<i[x];g++)try{if(typeof i[g]==="function")i[g]();else{var t="",k=i[g][0],p=k.lastIndexOf(".");if(p>0){t=O(k,0,p);k=O(k,p+1)}var f=$._getAsyncTracker(t);f[k].apply(f,i[g].slice(1))}}catch(h){l++}return l}};window[aa]=Z;function na(){var i=window[ba],l=v;if(i&&typeof i.push=="function"){l=i.constructor==Array;if(!l)return}window[ba]=$;l&&$.push.apply($,i)}na();})()\r
33691 \r
33692 \r
33693 \r
33694         try {\r
33695         var pageTracker = _gat._getTracker("UA-8830181-1");\r
33696         pageTracker._trackPageview();\r
33697 } catch(err) {}\r
33698 </script>\r
33699 \r
33700 \r
33701 <script id="twitch" type="x">\r
33702 /*\r
33703 \r
33704  * Processing.js - John Resig (http://ejohn.org/)\r
33705 \r
33706  * MIT Licensed\r
33707 \r
33708  * http://ejohn.org/blog/processingjs/\r
33709 \r
33710  *\r
33711 \r
33712  * This is a port of the Processing Visualization Language.\r
33713 \r
33714  * More information: http://processing.org/\r
33715 \r
33716  */\r
33717 \r
33718 \r
33719 \r
33720 (function(){\r
33721 \r
33722 \r
33723 \r
33724 this.Processing = function Processing( aElement, aCode ) {\r
33725 \r
33726   if ( typeof aElement == "string" )\r
33727 \r
33728     aElement = document.getElementById( aElement );\r
33729 \r
33730 \r
33731 \r
33732   var p = buildProcessing( aElement );\r
33733 \r
33734 \r
33735 \r
33736   if ( aCode )\r
33737 \r
33738     p.init( aCode );\r
33739 \r
33740 \r
33741 \r
33742   return p;\r
33743 \r
33744 };\r
33745 \r
33746 \r
33747 \r
33748 function log() {\r
33749 \r
33750   try {\r
33751 \r
33752     console.log.apply( console, arguments );\r
33753 \r
33754   } catch(e) {\r
33755 \r
33756     try {\r
33757 \r
33758       opera.postError.apply( opera, arguments );\r
33759 \r
33760     } catch(e){}\r
33761 \r
33762   }\r
33763 \r
33764 }\r
33765 \r
33766 \r
33767 \r
33768 var parse = Processing.parse = function parse( aCode, p ) {\r
33769 \r
33770   // Angels weep at this parsing code :-(\r
33771 \r
33772 \r
33773 \r
33774   // Remove end-of-line comments\r
33775 \r
33776   aCode = aCode.replace(/\/\/ .*\n/g, "\n");\r
33777 \r
33778 \r
33779 \r
33780   // Weird parsing errors with %\r
33781 \r
33782   aCode = aCode.replace(/([^\s])%([^\s])/g, "$1 % $2");\r
33783 \r
33784  \r
33785 \r
33786   // Simple convert a function-like thing to function\r
33787 \r
33788   aCode = aCode.replace(/(?:static )?(\w+ )(\w+)\s*(\([^\)]*\)\s*{)/g, function(all, type, name, args) {\r
33789 \r
33790     if ( name == "if" || name == "for" || name == "while" ) {\r
33791 \r
33792       return all;\r
33793 \r
33794     } else {\r
33795 \r
33796       return "Processing." + name + " = function " + name + args;\r
33797 \r
33798     }\r
33799 \r
33800   });\r
33801 \r
33802 \r
33803 \r
33804   // Force .length() to be .length\r
33805 \r
33806   aCode = aCode.replace(/\.length\(\)/g, ".length");\r
33807 \r
33808 \r
33809 \r
33810   // foo( int foo, float bar )\r
33811 \r
33812   aCode = aCode.replace(/([\(,]\s*)(\w+)((?:\[\])+| )\s*(\w+\s*[\),])/g, "$1$4");\r
33813 \r
33814   aCode = aCode.replace(/([\(,]\s*)(\w+)((?:\[\])+| )\s*(\w+\s*[\),])/g, "$1$4");\r
33815 \r
33816 \r
33817 \r
33818   // float[] foo = new float[5];\r
33819 \r
33820   aCode = aCode.replace(/new (\w+)((?:\[([^\]]*)\])+)/g, function(all, name, args) {\r
33821 \r
33822     return "new ArrayList(" + args.slice(1,-1).split("][").join(", ") + ")";\r
33823 \r
33824   });\r
33825 \r
33826   \r
33827 \r
33828   aCode = aCode.replace(/(?:static )?\w+\[\]\s*(\w+)\[?\]?\s*=\s*{.*?};/g, function(all) {\r
33829 \r
33830     return all.replace(/{/g, "[").replace(/}/g, "]");\r
33831 \r
33832   });\r
33833 \r
33834 \r
33835 \r
33836   // int|float foo;\r
33837 \r
33838   var intFloat = /(\n\s*(?:int|float)(?:\[\])?(?:\s*|[^\(]*?,\s*))([a-z]\w*)(;|,)/i;\r
33839 \r
33840   while ( intFloat.test(aCode) ) {\r
33841 \r
33842     aCode = aCode.replace(new RegExp(intFloat), function(all, type, name, sep) {\r
33843 \r
33844       return type + " " + name + " = 0" + sep;\r
33845 \r
33846     });\r
33847 \r
33848   }\r
33849 \r
33850 \r
33851 \r
33852   // float foo = 5;\r
33853 \r
33854   aCode = aCode.replace(/(?:static )?(\w+)((?:\[\])+| ) *(\w+)\[?\]?(\s*[=,;])/g, function(all, type, arr, name, sep) {\r
33855 \r
33856     if ( type == "return" )\r
33857 \r
33858       return all;\r
33859 \r
33860     else\r
33861 \r
33862       return "var " + name + sep;\r
33863 \r
33864   });\r
33865 \r
33866 \r
33867 \r
33868   // Fix Array[] foo = {...} to [...]\r
33869 \r
33870   aCode = aCode.replace(/=\s*{((.|\s)*?)};/g, function(all,data) {\r
33871 \r
33872     return "= [" + data.replace(/{/g, "[").replace(/}/g, "]") + "]";\r
33873 \r
33874   });\r
33875 \r
33876   \r
33877 \r
33878   // static { ... } blocks\r
33879 \r
33880   aCode = aCode.replace(/static\s*{((.|\n)*?)}/g, function(all, init) {\r
33881 \r
33882     // Convert the static definitons to variable assignments\r
33883 \r
33884     //return init.replace(/\((.*?)\)/g, " = $1");\r
33885 \r
33886     return init;\r
33887 \r
33888   });\r
33889 \r
33890 \r
33891 \r
33892   // super() is a reserved word\r
33893 \r
33894   aCode = aCode.replace(/super\(/g, "superMethod(");\r
33895 \r
33896 \r
33897 \r
33898   var classes = ["int", "float", "boolean", "string"];\r
33899 \r
33900 \r
33901 \r
33902   function ClassReplace(all, name, extend, vars, last) {\r
33903 \r
33904     classes.push( name );\r
33905 \r
33906 \r
33907 \r
33908     var static = "";\r
33909 \r
33910 \r
33911 \r
33912     vars = vars.replace(/final\s+var\s+(\w+\s*=\s*.*?;)/g, function(all,set) {\r
33913 \r
33914       static += " " + name + "." + set;\r
33915 \r
33916       return "";\r
33917 \r
33918     });\r
33919 \r
33920 \r
33921 \r
33922     // Move arguments up from constructor and wrap contents with\r
33923 \r
33924     // a with(this), and unwrap constructor\r
33925 \r
33926     return "function " + name + "() {with(this){\n  " +\r
33927 \r
33928       (extend ? "var __self=this;function superMethod(){extendClass(__self,arguments," + extend + ");}\n" : "") +\r
33929 \r
33930       // Replace var foo = 0; with this.foo = 0;\r
33931 \r
33932       // and force var foo; to become this.foo = null;\r
33933 \r
33934       vars\r
33935 \r
33936         .replace(/,\s?/g, ";\n  this.")\r
33937 \r
33938         .replace(/\b(var |final |public )+\s*/g, "this.")\r
33939 \r
33940         .replace(/this.(\w+);/g, "this.$1 = null;") + \r
33941 \r
33942         (extend ? "extendClass(this, " + extend + ");\n" : "") +\r
33943 \r
33944         "<CLASS " + name + " " + static + ">" + (typeof last == "string" ? last : name + "(");\r
33945 \r
33946   }\r
33947 \r
33948 \r
33949 \r
33950   var matchClasses = /(?:public |abstract |static )*class (\w+)\s*(?:extends\s*(\w+)\s*)?{\s*((?:.|\n)*?)\b\1\s*\(/g;\r
33951 \r
33952   var matchNoCon = /(?:public |abstract |static )*class (\w+)\s*(?:extends\s*(\w+)\s*)?{\s*((?:.|\n)*?)(Processing)/g;\r
33953 \r
33954   \r
33955 \r
33956   aCode = aCode.replace(matchClasses, ClassReplace);\r
33957 \r
33958   aCode = aCode.replace(matchNoCon, ClassReplace);\r
33959 \r
33960 \r
33961 \r
33962   var matchClass = /<CLASS (\w+) (.*?)>/, m;\r
33963 \r
33964   \r
33965 \r
33966   while ( (m = aCode.match( matchClass )) ) {\r
33967 \r
33968     var left = RegExp.leftContext,\r
33969 \r
33970       allRest = RegExp.rightContext,\r
33971 \r
33972       rest = nextBrace(allRest),\r
33973 \r
33974       className = m[1],\r
33975 \r
33976       staticVars = m[2] || "";\r
33977 \r
33978       \r
33979 \r
33980     allRest = allRest.slice( rest.length + 1 );\r
33981 \r
33982 \r
33983 \r
33984     rest = rest.replace(new RegExp("\\b" + className + "\\(([^\\)]*?)\\)\\s*{", "g"), function(all, args) {\r
33985 \r
33986       args = args.split(/,\s*?/);\r
33987 \r
33988       \r
33989 \r
33990       if ( args[0].match(/^\s*$/) )\r
33991 \r
33992         args.shift();\r
33993 \r
33994       \r
33995 \r
33996       var fn = "if ( arguments.length == " + args.length + " ) {\n";\r
33997 \r
33998         \r
33999 \r
34000       for ( var i = 0; i < args.length; i++ ) {\r
34001 \r
34002         fn += "    var " + args[i] + " = arguments[" + i + "];\n";\r
34003 \r
34004       }\r
34005 \r
34006         \r
34007 \r
34008       return fn;\r
34009 \r
34010     });\r
34011 \r
34012     \r
34013 \r
34014     // Fix class method names\r
34015 \r
34016     // this.collide = function() { ... }\r
34017 \r
34018     // and add closing } for with(this) ...\r
34019 \r
34020     rest = rest.replace(/(?:public )?Processing.\w+ = function (\w+)\((.*?)\)/g, function(all, name, args) {\r
34021 \r
34022       return "ADDMETHOD(this, '" + name + "', function(" + args + ")";\r
34023 \r
34024     });\r
34025 \r
34026     \r
34027 \r
34028     var matchMethod = /ADDMETHOD([\s\S]*?{)/, mc;\r
34029 \r
34030     var methods = "";\r
34031 \r
34032     \r
34033 \r
34034     while ( (mc = rest.match( matchMethod )) ) {\r
34035 \r
34036       var prev = RegExp.leftContext,\r
34037 \r
34038         allNext = RegExp.rightContext,\r
34039 \r
34040         next = nextBrace(allNext);\r
34041 \r
34042 \r
34043 \r
34044       methods += "addMethod" + mc[1] + next + "});"\r
34045 \r
34046       \r
34047 \r
34048       rest = prev + allNext.slice( next.length + 1 );\r
34049 \r
34050     }\r
34051 \r
34052 \r
34053 \r
34054     rest = methods + rest;\r
34055 \r
34056     \r
34057 \r
34058     aCode = left + rest + "\n}}" + staticVars + allRest;\r
34059 \r
34060   }\r
34061 \r
34062 \r
34063 \r
34064   // Do some tidying up, where necessary\r
34065 \r
34066   aCode = aCode.replace(/Processing.\w+ = function addMethod/g, "addMethod");\r
34067 \r
34068   \r
34069 \r
34070   function nextBrace( right ) {\r
34071 \r
34072     var rest = right;\r
34073 \r
34074     var position = 0;\r
34075 \r
34076     var leftCount = 1, rightCount = 0;\r
34077 \r
34078     \r
34079 \r
34080     while ( leftCount != rightCount ) {\r
34081 \r
34082       var nextLeft = rest.indexOf("{");\r
34083 \r
34084       var nextRight = rest.indexOf("}");\r
34085 \r
34086       \r
34087 \r
34088       if ( nextLeft < nextRight && nextLeft != -1 ) {\r
34089 \r
34090         leftCount++;\r
34091 \r
34092         rest = rest.slice( nextLeft + 1 );\r
34093 \r
34094         position += nextLeft + 1;\r
34095 \r
34096       } else {\r
34097 \r
34098         rightCount++;\r
34099 \r
34100         rest = rest.slice( nextRight + 1 );\r
34101 \r
34102         position += nextRight + 1;\r
34103 \r
34104       }\r
34105 \r
34106     }\r
34107 \r
34108     \r
34109 \r
34110     return right.slice(0, position - 1);\r
34111 \r
34112   }\r
34113 \r
34114 \r
34115 \r
34116   // Handle (int) Casting\r
34117 \r
34118   aCode = aCode.replace(/\(int\)/g, "0|");\r
34119 \r
34120 \r
34121 \r
34122   // Remove Casting\r
34123 \r
34124   aCode = aCode.replace(new RegExp("\\((" + classes.join("|") + ")(\\[\\])?\\)", "g"), "");\r
34125 \r
34126   \r
34127 \r
34128   // Convert 3.0f to just 3.0\r
34129 \r
34130   aCode = aCode.replace(/(\d+)f/g, "$1");\r
34131 \r
34132 \r
34133 \r
34134   // Force numbers to exist\r
34135 \r
34136   //aCode = aCode.replace(/([^.])(\w+)\s*\+=/g, "$1$2 = ($2||0) +");\r
34137 \r
34138 \r
34139 \r
34140   // Force characters-as-bytes to work\r
34141 \r
34142   aCode = aCode.replace(/('[a-zA-Z0-9]')/g, "$1.charCodeAt(0)");\r
34143 \r
34144 \r
34145 \r
34146   // Convert #aaaaaa into color\r
34147 \r
34148   aCode = aCode.replace(/#([a-f0-9]{6})/ig, function(m, hex){\r
34149 \r
34150     var num = toNumbers(hex);\r
34151 \r
34152     return "color(" + num[0] + "," + num[1] + "," + num[2] + ")";\r
34153 \r
34154   });\r
34155 \r
34156 \r
34157 \r
34158   function toNumbers( str ){\r
34159 \r
34160     var ret = [];\r
34161 \r
34162      str.replace(/(..)/g, function(str){\r
34163 \r
34164       ret.push( parseInt( str, 16 ) );\r
34165 \r
34166     });\r
34167 \r
34168     return ret;\r
34169 \r
34170   }\r
34171 \r
34172 \r
34173 \r
34174 //log(aCode);\r
34175 \r
34176 \r
34177 \r
34178   return aCode;\r
34179 \r
34180 };\r
34181 \r
34182 \r
34183 \r
34184 function buildProcessing( curElement ){\r
34185 \r
34186 \r
34187 \r
34188   var p = {};\r
34189 \r
34190 \r
34191 \r
34192   // init\r
34193 \r
34194   p.PI = Math.PI;\r
34195 \r
34196   p.TWO_PI = 2 * p.PI;\r
34197 \r
34198   p.HALF_PI = p.PI / 2;\r
34199   p.QUARTER_PI = p.PI / 4;\r
34200 \r
34201   p.P3D = 3;\r
34202 \r
34203   p.CORNER = 0;\r
34204 \r
34205   p.RADIUS = 1;\r
34206 \r
34207   p.CENTER_RADIUS = 1;\r
34208 \r
34209   p.CENTER = 2;\r
34210 \r
34211   p.POLYGON = 2;\r
34212 \r
34213   p.QUADS = 5;\r
34214 \r
34215   p.TRIANGLES = 6;\r
34216 \r
34217   p.POINTS = 7;\r
34218 \r
34219   p.LINES = 8;\r
34220 \r
34221   p.TRIANGLE_STRIP = 9;\r
34222 \r
34223   p.TRIANGLE_FAN = 4;\r
34224 \r
34225   p.QUAD_STRIP = 3;\r
34226 \r
34227   p.CORNERS = 10;\r
34228 \r
34229   p.CLOSE = true;\r
34230 \r
34231   p.RGB = 1;\r
34232 \r
34233   p.HSB = 2;\r
34234 \r
34235 \r
34236 \r
34237   // mouseButton constants: values adjusted to come directly from e.which\r
34238 \r
34239   p.LEFT = 1;\r
34240 \r
34241   p.CENTER = 2;\r
34242 \r
34243   p.RIGHT = 3;\r
34244 \r
34245 \r
34246 \r
34247   // "Private" variables used to maintain state\r
34248 \r
34249   var curContext = curElement.getContext("2d");\r
34250 \r
34251   var doFill = true;\r
34252 \r
34253   var doStroke = true;\r
34254 \r
34255   var loopStarted = false;\r
34256 \r
34257   var hasBackground = false;\r
34258 \r
34259   var doLoop = true;\r
34260 \r
34261   var looping = 0;\r
34262 \r
34263   var curRectMode = p.CORNER;\r
34264 \r
34265   var curEllipseMode = p.CENTER;\r
34266 \r
34267   var inSetup = false;\r
34268 \r
34269   var inDraw = false;\r
34270 \r
34271   var curBackground = "rgba(204,204,204,1)";\r
34272 \r
34273   var curFrameRate = 1000;\r
34274 \r
34275   var curShape = p.POLYGON;\r
34276 \r
34277   var curShapeCount = 0;\r
34278 \r
34279   var curvePoints = [];\r
34280 \r
34281   var curTightness = 0;\r
34282 \r
34283   var opacityRange = 255;\r
34284 \r
34285   var redRange = 255;\r
34286 \r
34287   var greenRange = 255;\r
34288 \r
34289   var blueRange = 255;\r
34290 \r
34291   var pathOpen = false;\r
34292 \r
34293   var mousePressed = false;\r
34294 \r
34295   var keyPressed = false;\r
34296 \r
34297   var firstX, firstY, secondX, secondY, prevX, prevY;\r
34298 \r
34299   var curColorMode = p.RGB;\r
34300 \r
34301   var curTint = -1;\r
34302 \r
34303   var curTextSize = 12;\r
34304 \r
34305   var curTextFont = "Arial";\r
34306 \r
34307   var getLoaded = false;\r
34308 \r
34309   var start = (new Date).getTime();\r
34310 \r
34311 \r
34312 \r
34313   // Global vars for tracking mouse position\r
34314 \r
34315   p.pmouseX = 0;\r
34316 \r
34317   p.pmouseY = 0;\r
34318 \r
34319   p.mouseX = 0;\r
34320 \r
34321   p.mouseY = 0;\r
34322 \r
34323   p.mouseButton = 0;\r
34324 \r
34325 \r
34326 \r
34327   // Will be replaced by the user, most likely\r
34328 \r
34329   p.mouseDragged = undefined;\r
34330 \r
34331   p.mouseMoved = undefined;\r
34332 \r
34333   p.mousePressed = undefined;\r
34334 \r
34335   p.mouseReleased = undefined;\r
34336 \r
34337   p.keyPressed = undefined;\r
34338 \r
34339   p.keyReleased = undefined;\r
34340 \r
34341   p.draw = undefined;\r
34342 \r
34343   p.setup = undefined;\r
34344 \r
34345 \r
34346 \r
34347   // The height/width of the canvas\r
34348 \r
34349   p.width = curElement.width - 0;\r
34350 \r
34351   p.height = curElement.height - 0;\r
34352 \r
34353 \r
34354 \r
34355   // The current animation frame\r
34356 \r
34357   p.frameCount = 0;\r
34358 \r
34359   \r
34360 \r
34361   // In case I ever need to do HSV conversion:\r
34362 \r
34363   // http://srufaculty.sru.edu/david.dailey/javascript/js/5rml.js\r
34364 \r
34365   p.color = function color( aValue1, aValue2, aValue3, aValue4 ) {\r
34366 \r
34367     var aColor = "";\r
34368 \r
34369     \r
34370 \r
34371     if ( arguments.length == 3 ) {\r
34372 \r
34373       aColor = p.color( aValue1, aValue2, aValue3, opacityRange );\r
34374 \r
34375     } else if ( arguments.length == 4 ) {\r
34376 \r
34377       var a = aValue4 / opacityRange;\r
34378 \r
34379       a = isNaN(a) ? 1 : a;\r
34380 \r
34381 \r
34382 \r
34383       if ( curColorMode == p.HSB ) {\r
34384 \r
34385         var rgb = HSBtoRGB(aValue1, aValue2, aValue3);\r
34386 \r
34387         var r = rgb[0], g = rgb[1], b = rgb[2];\r
34388 \r
34389       } else {\r
34390 \r
34391         var r = getColor(aValue1, redRange);\r
34392 \r
34393         var g = getColor(aValue2, greenRange);\r
34394 \r
34395         var b = getColor(aValue3, blueRange);\r
34396 \r
34397       }\r
34398 \r
34399 \r
34400 \r
34401       aColor = "rgba(" + r + "," + g + "," + b + "," + a + ")";\r
34402 \r
34403     } else if ( typeof aValue1 == "string" ) {\r
34404 \r
34405       aColor = aValue1;\r
34406 \r
34407 \r
34408 \r
34409       if ( arguments.length == 2 ) {\r
34410 \r
34411         var c = aColor.split(",");\r
34412 \r
34413         c[3] = (aValue2 / opacityRange) + ")";\r
34414 \r
34415         aColor = c.join(",");\r
34416 \r
34417       }\r
34418 \r
34419     } else if ( arguments.length == 2 ) {\r
34420 \r
34421       aColor = p.color( aValue1, aValue1, aValue1, aValue2 );\r
34422 \r
34423     } else if ( typeof aValue1 == "number" ) {\r
34424 \r
34425       aColor = p.color( aValue1, aValue1, aValue1, opacityRange );\r
34426 \r
34427     } else {\r
34428 \r
34429       aColor = p.color( redRange, greenRange, blueRange, opacityRange );\r
34430 \r
34431     }\r
34432 \r
34433 \r
34434 \r
34435     // HSB conversion function from Mootools, MIT Licensed\r
34436 \r
34437     function HSBtoRGB(h, s, b) {\r
34438 \r
34439       h = (h / redRange) * 100;\r
34440 \r
34441       s = (s / greenRange) * 100;\r
34442 \r
34443       b = (b / blueRange) * 100;\r
34444 \r
34445       if (s == 0){\r
34446 \r
34447         return [b, b, b];\r
34448 \r
34449       } else {\r
34450 \r
34451         var hue = h % 360;\r
34452 \r
34453         var f = hue % 60;\r
34454 \r
34455         var br = Math.round(b / 100 * 255);\r
34456 \r
34457         var p = Math.round((b * (100 - s)) / 10000 * 255);\r
34458 \r
34459         var q = Math.round((b * (6000 - s * f)) / 600000 * 255);\r
34460 \r
34461         var t = Math.round((b * (6000 - s * (60 - f))) / 600000 * 255);\r
34462 \r
34463         switch (Math.floor(hue / 60)){\r
34464 \r
34465           case 0: return [br, t, p];\r
34466 \r
34467           case 1: return [q, br, p];\r
34468 \r
34469           case 2: return [p, br, t];\r
34470 \r
34471           case 3: return [p, q, br];\r
34472 \r
34473           case 4: return [t, p, br];\r
34474 \r
34475           case 5: return [br, p, q];\r
34476 \r
34477         }\r
34478 \r
34479       }\r
34480 \r
34481     }\r
34482 \r
34483 \r
34484 \r
34485     function getColor( aValue, range ) {\r
34486 \r
34487       return Math.round(255 * (aValue / range));\r
34488 \r
34489     }\r
34490 \r
34491     \r
34492 \r
34493     return aColor;\r
34494 \r
34495   }\r
34496 \r
34497 \r
34498 \r
34499   p.nf = function( num, pad ) {\r
34500 \r
34501     var str = "" + num;\r
34502 \r
34503     while ( pad - str.length )\r
34504 \r
34505       str = "0" + str;\r
34506 \r
34507     return str;\r
34508 \r
34509   };\r
34510 \r
34511 \r
34512 \r
34513   p.AniSprite = function( prefix, frames ) {\r
34514 \r
34515     this.images = [];\r
34516 \r
34517     this.pos = 0;\r
34518 \r
34519 \r
34520 \r
34521     for ( var i = 0; i < frames; i++ ) {\r
34522 \r
34523       this.images.push( prefix + p.nf( i, ("" + frames).length ) + ".gif" );\r
34524 \r
34525     }\r
34526 \r
34527 \r
34528 \r
34529     this.display = function( x, y ) {\r
34530 \r
34531       p.image( this.images[ this.pos ], x, y );\r
34532 \r
34533 \r
34534 \r
34535       if ( ++this.pos >= frames )\r
34536 \r
34537         this.pos = 0;\r
34538 \r
34539     };\r
34540 \r
34541 \r
34542 \r
34543     this.getWidth = function() {\r
34544 \r
34545       return getImage(this.images[0]).width;\r
34546 \r
34547     };\r
34548 \r
34549 \r
34550 \r
34551     this.getHeight = function() {\r
34552 \r
34553       return getImage(this.images[0]).height;\r
34554 \r
34555     };\r
34556 \r
34557   };\r
34558 \r
34559 \r
34560 \r
34561   function buildImageObject( obj ) {\r
34562 \r
34563     var pixels = obj.data;\r
34564 \r
34565     var data = p.createImage( obj.width, obj.height );\r
34566 \r
34567 \r
34568 \r
34569     if ( data.__defineGetter__ && data.__lookupGetter__ && !data.__lookupGetter__("pixels") ) {\r
34570 \r
34571       var pixelsDone;\r
34572 \r
34573       data.__defineGetter__("pixels", function() {\r
34574 \r
34575         if ( pixelsDone )\r
34576 \r
34577           return pixelsDone;\r
34578 \r
34579 \r
34580 \r
34581         pixelsDone = [];\r
34582 \r
34583 \r
34584 \r
34585         for ( var i = 0; i < pixels.length; i += 4 ) {\r
34586 \r
34587           pixelsDone.push( p.color(pixels[i], pixels[i+1], pixels[i+2], pixels[i+3]) );\r
34588 \r
34589         }\r
34590 \r
34591 \r
34592 \r
34593         return pixelsDone;\r
34594 \r
34595       });\r
34596 \r
34597     } else {\r
34598 \r
34599       data.pixels = [];\r
34600 \r
34601 \r
34602 \r
34603       for ( var i = 0; i < pixels.length; i += 4 ) {\r
34604 \r
34605         data.pixels.push( p.color(pixels[i], pixels[i+1], pixels[i+2], pixels[i+3]) );\r
34606 \r
34607       }\r
34608 \r
34609     }\r
34610 \r
34611 \r
34612 \r
34613     return data;\r
34614 \r
34615   }\r
34616 \r
34617 \r
34618 \r
34619   p.createImage = function createImage( w, h, mode ) {\r
34620 \r
34621     var data = {};\r
34622 \r
34623     data.width = w;\r
34624 \r
34625     data.height = h;\r
34626 \r
34627     data.data = [];\r
34628 \r
34629 \r
34630 \r
34631     if ( curContext.createImageData ) {\r
34632 \r
34633       data = curContext.createImageData( w, h );\r
34634 \r
34635     }\r
34636 \r
34637 \r
34638 \r
34639     data.pixels = new Array( w * h );\r
34640 \r
34641     data.get = function(x,y) {\r
34642 \r
34643       return this.pixels[w*y+x];\r
34644 \r
34645     };\r
34646 \r
34647     data._mask = null;\r
34648 \r
34649     data.mask = function(img) {\r
34650 \r
34651       this._mask = img;\r
34652 \r
34653     };\r
34654 \r
34655     data.loadPixels = function(){};\r
34656 \r
34657     data.updatePixels = function(){};\r
34658 \r
34659 \r
34660 \r
34661     return data;\r
34662 \r
34663   };\r
34664 \r
34665 \r
34666 \r
34667   p.createGraphics = function createGraphics( w, h ) {\r
34668 \r
34669     var canvas = document.createElement("canvas");\r
34670 \r
34671     var ret = buildProcessing( canvas );\r
34672 \r
34673     ret.size( w, h );\r
34674 \r
34675     ret.canvas = canvas;\r
34676 \r
34677     return ret;\r
34678 \r
34679   };\r
34680 \r
34681 \r
34682 \r
34683   p.beginDraw = function beginDraw(){};\r
34684 \r
34685 \r
34686 \r
34687   p.endDraw = function endDraw(){};\r
34688 \r
34689 \r
34690 \r
34691   p.tint = function tint( rgb, a ) {\r
34692 \r
34693     curTint = a;\r
34694 \r
34695   };\r
34696 \r
34697 \r
34698 \r
34699   function getImage( img ) {\r
34700 \r
34701     if ( typeof img == "string" ) {\r
34702 \r
34703       return document.getElementById(img);\r
34704 \r
34705     }\r
34706 \r
34707 \r
34708 \r
34709     if ( img.img || img.canvas ) {\r
34710 \r
34711       return img.img || img.canvas;\r
34712 \r
34713     }\r
34714 \r
34715 \r
34716 \r
34717     for ( var i = 0, l = img.pixels.length; i < l; i++ ) {\r
34718 \r
34719       var pos = i * 4;\r
34720 \r
34721       var c = (img.pixels[i] || "rgba(0,0,0,1)").slice(5,-1).split(",");\r
34722 \r
34723       img.data[pos] = parseInt(c[0]);\r
34724 \r
34725       img.data[pos+1] = parseInt(c[1]);\r
34726 \r
34727       img.data[pos+2] = parseInt(c[2]);\r
34728 \r
34729       img.data[pos+3] = parseFloat(c[3]) * 100;\r
34730 \r
34731     }\r
34732 \r
34733 \r
34734 \r
34735     var canvas = document.createElement("canvas")\r
34736 \r
34737     canvas.width = img.width;\r
34738 \r
34739     canvas.height = img.height;\r
34740 \r
34741     var context = canvas.getContext("2d");\r
34742 \r
34743     context.putImageData( img, 0, 0 );\r
34744 \r
34745 \r
34746 \r
34747     img.canvas = canvas;\r
34748 \r
34749 \r
34750 \r
34751     return canvas;\r
34752 \r
34753   }\r
34754 \r
34755 \r
34756 \r
34757   p.image = function image( img, x, y, w, h ) {\r
34758 \r
34759     x = x || 0;\r
34760 \r
34761     y = y || 0;\r
34762 \r
34763 \r
34764 \r
34765     var obj = getImage(img);\r
34766 \r
34767 \r
34768 \r
34769     if ( curTint >= 0 ) {\r
34770 \r
34771       var oldAlpha = curContext.globalAlpha;\r
34772 \r
34773       curContext.globalAlpha = curTint / opacityRange;\r
34774 \r
34775     }\r
34776 \r
34777 \r
34778 \r
34779     if ( arguments.length == 3 ) {\r
34780 \r
34781       curContext.drawImage( obj, x, y );\r
34782 \r
34783     } else {\r
34784 \r
34785       curContext.drawImage( obj, x, y, w, h );\r
34786 \r
34787     }\r
34788 \r
34789 \r
34790 \r
34791     if ( curTint >= 0 ) {\r
34792 \r
34793       curContext.globalAlpha = oldAlpha;\r
34794 \r
34795     }\r
34796 \r
34797 \r
34798 \r
34799     if ( img._mask ) {\r
34800 \r
34801       var oldComposite = curContext.globalCompositeOperation;\r
34802 \r
34803       curContext.globalCompositeOperation = "darker";\r
34804 \r
34805       p.image( img._mask, x, y );\r
34806 \r
34807       curContext.globalCompositeOperation = oldComposite;\r
34808 \r
34809     }\r
34810 \r
34811   };\r
34812 \r
34813 \r
34814 \r
34815   p.exit = function exit() {\r
34816 \r
34817     clearInterval(looping);\r
34818 \r
34819   };\r
34820 \r
34821 \r
34822 \r
34823   p.save = function save( file ){};\r
34824 \r
34825 \r
34826 \r
34827   p.loadImage = function loadImage( file ) {\r
34828 \r
34829     var img = document.getElementById(file);\r
34830 \r
34831     if ( !img )\r
34832 \r
34833       return;\r
34834 \r
34835 \r
34836 \r
34837     var h = img.height, w = img.width;\r
34838 \r
34839 \r
34840 \r
34841     var canvas = document.createElement("canvas");\r
34842 \r
34843     canvas.width = w;\r
34844 \r
34845     canvas.height = h;\r
34846 \r
34847     var context = canvas.getContext("2d");\r
34848 \r
34849 \r
34850 \r
34851     context.drawImage( img, 0, 0 );\r
34852 \r
34853     var data = buildImageObject( context.getImageData( 0, 0, w, h ) );\r
34854 \r
34855     data.img = img;\r
34856 \r
34857     return data;\r
34858 \r
34859   };\r
34860 \r
34861 \r
34862 \r
34863   p.loadFont = function loadFont( name ) {\r
34864 \r
34865     return {\r
34866 \r
34867       name: name,\r
34868 \r
34869       width: function( str ) {\r
34870 \r
34871         if ( curContext.mozMeasureText )\r
34872 \r
34873           return curContext.mozMeasureText( typeof str == "number" ?\r
34874 \r
34875             String.fromCharCode( str ) :\r
34876 \r
34877             str) / curTextSize;\r
34878 \r
34879         else\r
34880 \r
34881           return 0;\r
34882 \r
34883       }\r
34884 \r
34885     };\r
34886 \r
34887   };\r
34888 \r
34889 \r
34890 \r
34891   p.textFont = function textFont( name, size ) {\r
34892 \r
34893     curTextFont = name;\r
34894 \r
34895     p.textSize( size );\r
34896 \r
34897   };\r
34898 \r
34899 \r
34900 \r
34901   p.textSize = function textSize( size ) {\r
34902 \r
34903     if ( size ) {\r
34904 \r
34905       curTextSize = size;\r
34906 \r
34907     }\r
34908 \r
34909   };\r
34910 \r
34911 \r
34912 \r
34913   p.textAlign = function textAlign(){};\r
34914 \r
34915 \r
34916 \r
34917   p.text = function text( str, x, y ) {\r
34918 \r
34919     if ( str && curContext.mozDrawText ) {\r
34920 \r
34921       curContext.save();\r
34922 \r
34923       curContext.mozTextStyle = curTextSize + "px " + curTextFont.name;\r
34924 \r
34925       curContext.translate(x, y);\r
34926 \r
34927       curContext.mozDrawText( typeof str == "number" ?\r
34928 \r
34929         String.fromCharCode( str ) :\r
34930 \r
34931         str );\r
34932 \r
34933       curContext.restore();\r
34934 \r
34935     }\r
34936 \r
34937   };\r
34938 \r
34939 \r
34940 \r
34941   p.char = function char( key ) {\r
34942 \r
34943     return key;\r
34944 \r
34945   };\r
34946 \r
34947 \r
34948 \r
34949   p.println = function println(){};\r
34950 \r
34951 \r
34952 \r
34953   p.map = function map( value, istart, istop, ostart, ostop ) {\r
34954 \r
34955     return ostart + (ostop - ostart) * ((value - istart) / (istop - istart));\r
34956 \r
34957   };\r
34958 \r
34959 \r
34960 \r
34961   String.prototype.replaceAll = function(re, replace) {\r
34962 \r
34963     return this.replace(new RegExp(re, "g"), replace);\r
34964 \r
34965   };\r
34966 \r
34967 \r
34968 \r
34969   p.Point = function Point( x, y ) {\r
34970 \r
34971     this.x = x;\r
34972 \r
34973     this.y = y;\r
34974 \r
34975     this.copy = function() {\r
34976 \r
34977       return new Point( x, y );\r
34978 \r
34979     }\r
34980 \r
34981   };\r
34982 \r
34983 \r
34984 \r
34985   p.Random = function() {\r
34986 \r
34987     var haveNextNextGaussian = false;\r
34988 \r
34989     var nextNextGaussian;\r
34990 \r
34991 \r
34992 \r
34993     this.nextGaussian = function() {\r
34994 \r
34995       if (haveNextNextGaussian) {\r
34996 \r
34997         haveNextNextGaussian = false;\r
34998 \r
34999 \r
35000 \r
35001         return nextNextGaussian;\r
35002 \r
35003       } else {\r
35004 \r
35005         var v1, v2, s;\r
35006 \r
35007         do { \r
35008 \r
35009           v1 = 2 * p.random(1) - 1;   // between -1.0 and 1.0\r
35010 \r
35011           v2 = 2 * p.random(1) - 1;   // between -1.0 and 1.0\r
35012 \r
35013           s = v1 * v1 + v2 * v2;\r
35014 \r
35015         } while (s >= 1 || s == 0);\r
35016 \r
35017         var multiplier = Math.sqrt(-2 * Math.log(s)/s);\r
35018 \r
35019         nextNextGaussian = v2 * multiplier;\r
35020 \r
35021         haveNextNextGaussian = true;\r
35022 \r
35023 \r
35024 \r
35025         return v1 * multiplier;\r
35026 \r
35027       }\r
35028 \r
35029     };\r
35030 \r
35031   };\r
35032 \r
35033 \r
35034 \r
35035   p.ArrayList = function ArrayList( size, size2, size3 ) {\r
35036 \r
35037     var array = new Array( 0 | size );\r
35038 \r
35039     \r
35040 \r
35041     if ( size2 ) {\r
35042 \r
35043       for ( var i = 0; i < size; i++ ) {\r
35044 \r
35045         array[i] = [];\r
35046 \r
35047 \r
35048 \r
35049         for ( var j = 0; j < size2; j++ ) {\r
35050 \r
35051           var a = array[i][j] = size3 ? new Array( size3 ) : 0;\r
35052 \r
35053           for ( var k = 0; k < size3; k++ ) {\r
35054 \r
35055             a[k] = 0;\r
35056 \r
35057           }\r
35058 \r
35059         }\r
35060 \r
35061       }\r
35062 \r
35063     } else {\r
35064 \r
35065       for ( var i = 0; i < size; i++ ) {\r
35066 \r
35067         array[i] = 0;\r
35068 \r
35069       }\r
35070 \r
35071     }\r
35072 \r
35073     \r
35074 \r
35075     array.size = function() {\r
35076 \r
35077       return this.length;\r
35078 \r
35079     };\r
35080 \r
35081     array.get = function( i ) {\r
35082 \r
35083       return this[ i ];\r
35084 \r
35085     };\r
35086 \r
35087     array.remove = function( i ) {\r
35088 \r
35089       return this.splice( i, 1 );\r
35090 \r
35091     };\r
35092 \r
35093     array.add = function( item ) {\r
35094 \r
35095       return this.push( item );\r
35096 \r
35097     };\r
35098 \r
35099     array.clone = function() {\r
35100 \r
35101       var a = new ArrayList( size );\r
35102 \r
35103       for ( var i = 0; i < size; i++ ) {\r
35104 \r
35105         a[ i ] = this[ i ];\r
35106 \r
35107       }\r
35108 \r
35109       return a;\r
35110 \r
35111     };\r
35112 \r
35113     array.isEmpty = function() {\r
35114 \r
35115       return !this.length;\r
35116 \r
35117     };\r
35118 \r
35119     array.clear = function() {\r
35120 \r
35121       this.length = 0;\r
35122 \r
35123     };\r
35124 \r
35125     \r
35126 \r
35127     return array;\r
35128 \r
35129   };\r
35130 \r
35131   \r
35132 \r
35133   p.colorMode = function colorMode( mode, range1, range2, range3, range4 ) {\r
35134 \r
35135     curColorMode = mode;\r
35136 \r
35137 \r
35138 \r
35139     if ( arguments.length >= 4 ) {\r
35140 \r
35141       redRange = range1;\r
35142 \r
35143       greenRange = range2;\r
35144 \r
35145       blueRange = range3;\r
35146 \r
35147     }\r
35148 \r
35149 \r
35150 \r
35151     if ( arguments.length == 5 ) {\r
35152 \r
35153       opacityRange = range4;\r
35154 \r
35155     }\r
35156 \r
35157 \r
35158 \r
35159     if ( arguments.length == 2 ) {\r
35160 \r
35161       p.colorMode( mode, range1, range1, range1, range1 );\r
35162 \r
35163     }\r
35164 \r
35165   };\r
35166 \r
35167   \r
35168 \r
35169   p.beginShape = function beginShape( type ) {\r
35170 \r
35171     curShape = type;\r
35172 \r
35173     curShapeCount = 0; \r
35174 \r
35175     curvePoints = [];\r
35176 \r
35177   };\r
35178 \r
35179   \r
35180 \r
35181   p.endShape = function endShape( close ) {\r
35182 \r
35183     if ( curShapeCount != 0 ) {\r
35184 \r
35185       if ( close || doFill ) \r
35186 \r
35187       curContext.lineTo( firstX, firstY );\r
35188 \r
35189 \r
35190 \r
35191       if ( doFill )\r
35192 \r
35193         curContext.fill();\r
35194 \r
35195         \r
35196 \r
35197       if ( doStroke )\r
35198 \r
35199         curContext.stroke();\r
35200 \r
35201     \r
35202 \r
35203       curContext.closePath();\r
35204 \r
35205       curShapeCount = 0;\r
35206 \r
35207       pathOpen = false;\r
35208 \r
35209     }\r
35210 \r
35211 \r
35212 \r
35213     if ( pathOpen ) {\r
35214 \r
35215       if ( doFill )\r
35216 \r
35217         curContext.fill();\r
35218 \r
35219 \r
35220 \r
35221       if ( doStroke )\r
35222 \r
35223         curContext.stroke();\r
35224 \r
35225 \r
35226 \r
35227       curContext.closePath();\r
35228 \r
35229       curShapeCount = 0;\r
35230 \r
35231       pathOpen = false;\r
35232 \r
35233     }\r
35234 \r
35235   };\r
35236 \r
35237   \r
35238 \r
35239   p.vertex = function vertex( x, y, x2, y2, x3, y3 ) {\r
35240 \r
35241     if ( curShapeCount == 0 && curShape != p.POINTS ) {\r
35242 \r
35243       pathOpen = true;\r
35244 \r
35245       curContext.beginPath();\r
35246 \r
35247       curContext.moveTo( x, y );\r
35248 \r
35249       firstX = x;\r
35250 \r
35251       firstY = y;\r
35252 \r
35253     } else {\r
35254 \r
35255       if ( curShape == p.POINTS ) {\r
35256 \r
35257         p.point( x, y );\r
35258 \r
35259       } else if ( arguments.length == 2 ) {\r
35260 \r
35261         if ( curShape != p.QUAD_STRIP || curShapeCount != 2 )\r
35262 \r
35263           curContext.lineTo( x, y );\r
35264 \r
35265 \r
35266 \r
35267         if ( curShape == p.TRIANGLE_STRIP ) {\r
35268 \r
35269           if ( curShapeCount == 2 ) {\r
35270 \r
35271             // finish shape\r
35272 \r
35273             p.endShape(p.CLOSE);\r
35274 \r
35275             pathOpen = true;\r
35276 \r
35277             curContext.beginPath();\r
35278 \r
35279             \r
35280 \r
35281             // redraw last line to start next shape\r
35282 \r
35283             curContext.moveTo( prevX, prevY );\r
35284 \r
35285             curContext.lineTo( x, y );\r
35286 \r
35287             curShapeCount = 1;\r
35288 \r
35289           }\r
35290 \r
35291           firstX = prevX;\r
35292 \r
35293           firstY = prevY;\r
35294 \r
35295         }\r
35296 \r
35297 \r
35298 \r
35299         if ( curShape == p.TRIANGLE_FAN && curShapeCount == 2 ) {\r
35300 \r
35301           // finish shape\r
35302 \r
35303           p.endShape(p.CLOSE);\r
35304 \r
35305           pathOpen = true;\r
35306 \r
35307           curContext.beginPath();\r
35308 \r
35309       \r
35310 \r
35311           // redraw last line to start next shape\r
35312 \r
35313           curContext.moveTo( firstX, firstY );\r
35314 \r
35315           curContext.lineTo( x, y );\r
35316 \r
35317           curShapeCount = 1;\r
35318 \r
35319         }\r
35320 \r
35321     \r
35322 \r
35323         if ( curShape == p.QUAD_STRIP && curShapeCount == 3 ) {\r
35324 \r
35325           // finish shape\r
35326 \r
35327           curContext.lineTo( prevX, prevY );\r
35328 \r
35329           p.endShape(p.CLOSE);\r
35330 \r
35331           pathOpen = true;\r
35332 \r
35333           curContext.beginPath();\r
35334 \r
35335     \r
35336 \r
35337           // redraw lines to start next shape\r
35338 \r
35339           curContext.moveTo( prevX, prevY );\r
35340 \r
35341           curContext.lineTo( x, y );\r
35342 \r
35343           curShapeCount = 1;\r
35344 \r
35345         }\r
35346 \r
35347 \r
35348 \r
35349         if ( curShape == p.QUAD_STRIP) {\r
35350 \r
35351           firstX = secondX;\r
35352 \r
35353           firstY = secondY;\r
35354 \r
35355           secondX = prevX;\r
35356 \r
35357           secondY = prevY;\r
35358 \r
35359         }\r
35360 \r
35361       } else if ( arguments.length == 4 ) {\r
35362 \r
35363         if ( curShapeCount > 1 ) {\r
35364 \r
35365           curContext.moveTo( prevX, prevY );\r
35366 \r
35367           curContext.quadraticCurveTo( firstX, firstY, x, y );\r
35368 \r
35369           curShapeCount = 1;\r
35370 \r
35371         }\r
35372 \r
35373       } else if ( arguments.length == 6 ) {\r
35374 \r
35375         curContext.bezierCurveTo( x, y, x2, y2, x3, y3 );\r
35376 \r
35377         curShapeCount = -1;\r
35378 \r
35379       }\r
35380 \r
35381     }\r
35382 \r
35383 \r
35384 \r
35385     prevX = x;\r
35386 \r
35387     prevY = y;\r
35388 \r
35389     curShapeCount++;\r
35390 \r
35391     \r
35392 \r
35393     if ( curShape == p.LINES && curShapeCount == 2 ||\r
35394 \r
35395          (curShape == p.TRIANGLES) && curShapeCount == 3 ||\r
35396 \r
35397      (curShape == p.QUADS) && curShapeCount == 4 ) {\r
35398 \r
35399       p.endShape(p.CLOSE);\r
35400 \r
35401     }\r
35402 \r
35403   };\r
35404 \r
35405 \r
35406 \r
35407   p.curveVertex = function( x, y, x2, y2 ) {\r
35408 \r
35409     if ( curvePoints.length < 3 ) {\r
35410 \r
35411       curvePoints.push([x,y]);\r
35412 \r
35413     } else {\r
35414 \r
35415       var b = [], s = 1 - curTightness;\r
35416 \r
35417 \r
35418 \r
35419       /*\r
35420 \r
35421        * Matrix to convert from Catmull-Rom to cubic Bezier\r
35422 \r
35423        * where t = curTightness\r
35424 \r
35425        * |0         1          0         0       |\r
35426 \r
35427        * |(t-1)/6   1          (1-t)/6   0       |\r
35428 \r
35429        * |0         (1-t)/6    1         (t-1)/6 |\r
35430 \r
35431        * |0         0          0         0       |\r
35432 \r
35433        */\r
35434 \r
35435 \r
35436 \r
35437       curvePoints.push([x,y]);\r
35438 \r
35439 \r
35440 \r
35441       b[0] = [curvePoints[1][0],curvePoints[1][1]];\r
35442 \r
35443       b[1] = [curvePoints[1][0]+(s*curvePoints[2][0]-s*curvePoints[0][0])/6,curvePoints[1][1]+(s*curvePoints[2][1]-s*curvePoints[0][1])/6];\r
35444 \r
35445       b[2] = [curvePoints[2][0]+(s*curvePoints[1][0]-s*curvePoints[3][0])/6,curvePoints[2][1]+(s*curvePoints[1][1]-s*curvePoints[3][1])/6];\r
35446 \r
35447       b[3] = [curvePoints[2][0],curvePoints[2][1]];\r
35448 \r
35449 \r
35450 \r
35451       if ( !pathOpen ) {\r
35452 \r
35453         p.vertex( b[0][0], b[0][1] );\r
35454 \r
35455       } else {\r
35456 \r
35457         curShapeCount = 1;\r
35458 \r
35459       }\r
35460 \r
35461 \r
35462 \r
35463       p.vertex( b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1] );\r
35464 \r
35465       curvePoints.shift();\r
35466 \r
35467     }\r
35468 \r
35469   };\r
35470 \r
35471 \r
35472 \r
35473   p.curveTightness = function( tightness ) {\r
35474 \r
35475     curTightness = tightness;\r
35476 \r
35477   };\r
35478 \r
35479 \r
35480 \r
35481   p.bezierVertex = p.vertex;\r
35482 \r
35483   \r
35484 \r
35485   p.rectMode = function rectMode( aRectMode ) {\r
35486 \r
35487     curRectMode = aRectMode;\r
35488 \r
35489   };\r
35490 \r
35491 \r
35492 \r
35493   p.imageMode = function(){};\r
35494 \r
35495   \r
35496 \r
35497   p.ellipseMode = function ellipseMode( aEllipseMode ) {\r
35498 \r
35499     curEllipseMode = aEllipseMode;\r
35500 \r
35501   };\r
35502 \r
35503   \r
35504 \r
35505   p.dist = function dist( x1, y1, x2, y2 ) {\r
35506 \r
35507     return Math.sqrt( Math.pow( x2 - x1, 2 ) + Math.pow( y2 - y1, 2 ) );\r
35508 \r
35509   };\r
35510 \r
35511 \r
35512 \r
35513   p.year = function year() {\r
35514 \r
35515     return (new Date).getYear() + 1900;\r
35516 \r
35517   };\r
35518 \r
35519 \r
35520 \r
35521   p.month = function month() {\r
35522 \r
35523     return (new Date).getMonth();\r
35524 \r
35525   };\r
35526 \r
35527 \r
35528 \r
35529   p.day = function day() {\r
35530 \r
35531     return (new Date).getDay();\r
35532 \r
35533   };\r
35534 \r
35535 \r
35536 \r
35537   p.hour = function hour() {\r
35538 \r
35539     return (new Date).getHours();\r
35540 \r
35541   };\r
35542 \r
35543 \r
35544 \r
35545   p.minute = function minute() {\r
35546 \r
35547     return (new Date).getMinutes();\r
35548 \r
35549   };\r
35550 \r
35551 \r
35552 \r
35553   p.second = function second() {\r
35554 \r
35555     return (new Date).getSeconds();\r
35556 \r
35557   };\r
35558 \r
35559 \r
35560 \r
35561   p.millis = function millis() {\r
35562 \r
35563     return (new Date).getTime() - start;\r
35564 \r
35565   };\r
35566 \r
35567   \r
35568 \r
35569   p.ortho = function ortho(){};\r
35570 \r
35571   \r
35572 \r
35573   p.translate = function translate( x, y ) {\r
35574 \r
35575     curContext.translate( x, y );\r
35576 \r
35577   };\r
35578 \r
35579   \r
35580 \r
35581   p.scale = function scale( x, y ) {\r
35582 \r
35583     curContext.scale( x, y || x );\r
35584 \r
35585   };\r
35586 \r
35587   \r
35588 \r
35589   p.rotate = function rotate( aAngle ) {\r
35590 \r
35591     curContext.rotate( aAngle );\r
35592 \r
35593   };\r
35594 \r
35595   \r
35596 \r
35597   p.pushMatrix = function pushMatrix() {\r
35598 \r
35599     curContext.save();\r
35600 \r
35601   };\r
35602 \r
35603   \r
35604 \r
35605   p.popMatrix = function popMatrix() {\r
35606 \r
35607     curContext.restore();\r
35608 \r
35609   };\r
35610 \r
35611   \r
35612 \r
35613   p.redraw = function redraw() {\r
35614 \r
35615     if ( hasBackground ) {\r
35616 \r
35617       p.background();\r
35618 \r
35619     }\r
35620 \r
35621 \r
35622 \r
35623     p.frameCount++;\r
35624 \r
35625     \r
35626 \r
35627     inDraw = true;\r
35628 \r
35629     p.pushMatrix();\r
35630 \r
35631     p.draw();\r
35632 \r
35633     p.popMatrix();\r
35634 \r
35635     inDraw = false;\r
35636 \r
35637   };\r
35638 \r
35639   \r
35640 \r
35641   p.loop = function loop() {\r
35642 \r
35643     if ( loopStarted )\r
35644 \r
35645       return;\r
35646 \r
35647     \r
35648 \r
35649     looping = setInterval(function() {\r
35650 \r
35651       try {\r
35652 \r
35653         p.redraw();\r
35654 \r
35655       }\r
35656 \r
35657       catch(e) {\r
35658 \r
35659         clearInterval( looping );\r
35660 \r
35661         throw e;\r
35662 \r
35663       }\r
35664 \r
35665     }, 1000 / curFrameRate );\r
35666 \r
35667     \r
35668 \r
35669     loopStarted = true;\r
35670 \r
35671   };\r
35672 \r
35673   \r
35674 \r
35675   p.frameRate = function frameRate( aRate ) {\r
35676 \r
35677     curFrameRate = aRate;\r
35678 \r
35679   };\r
35680 \r
35681   \r
35682 \r
35683   p.background = function background( img ) {\r
35684 \r
35685     if ( arguments.length ) {\r
35686 \r
35687       if ( img && img.img ) {\r
35688 \r
35689         curBackground = img;\r
35690 \r
35691       } else {\r
35692 \r
35693         curBackground = p.color.apply( this, arguments );\r
35694 \r
35695       }\r
35696 \r
35697     }\r
35698 \r
35699     \r
35700 \r
35701 \r
35702 \r
35703     if ( curBackground.img ) {\r
35704 \r
35705       p.image( curBackground, 0, 0 );\r
35706 \r
35707     } else {\r
35708 \r
35709       var oldFill = curContext.fillStyle;\r
35710 \r
35711       curContext.fillStyle = curBackground + "";\r
35712 \r
35713       curContext.fillRect( 0, 0, p.width, p.height );\r
35714 \r
35715       curContext.fillStyle = oldFill;\r
35716 \r
35717     }\r
35718 \r
35719   };\r
35720 \r
35721 \r
35722 \r
35723   p.sq = function sq( aNumber ) {\r
35724 \r
35725     return aNumber * aNumber;\r
35726 \r
35727   };\r
35728 \r
35729 \r
35730 \r
35731   p.sqrt = function sqrt( aNumber ) {\r
35732 \r
35733     return Math.sqrt( aNumber );\r
35734 \r
35735   };\r
35736 \r
35737   \r
35738 \r
35739   p.int = function int( aNumber ) {\r
35740 \r
35741     return Math.floor( aNumber );\r
35742 \r
35743   };\r
35744 \r
35745 \r
35746 \r
35747   p.min = function min( aNumber, aNumber2 ) {\r
35748 \r
35749     return Math.min( aNumber, aNumber2 );\r
35750 \r
35751   };\r
35752 \r
35753 \r
35754 \r
35755   p.max = function max( aNumber, aNumber2 ) {\r
35756 \r
35757     return Math.max( aNumber, aNumber2 );\r
35758 \r
35759   };\r
35760 \r
35761 \r
35762 \r
35763   p.ceil = function ceil( aNumber ) {\r
35764 \r
35765     return Math.ceil( aNumber );\r
35766 \r
35767   };\r
35768 \r
35769 \r
35770 \r
35771   p.round = function round( aNumber ) {\r
35772 \r
35773     return Math.round( aNumber );\r
35774 \r
35775   };\r
35776 \r
35777 \r
35778 \r
35779   p.floor = function floor( aNumber ) {\r
35780 \r
35781     return Math.floor( aNumber );\r
35782 \r
35783   };\r
35784 \r
35785 \r
35786 \r
35787   p.float = function float( aNumber ) {\r
35788 \r
35789     return typeof aNumber == "string" ?\r
35790 \r
35791       p.float( aNumber.charCodeAt(0) ) :\r
35792 \r
35793       parseFloat( aNumber );\r
35794 \r
35795   };\r
35796 \r
35797 \r
35798 \r
35799   p.byte = function byte( aNumber ) {\r
35800 \r
35801     return aNumber || 0;\r
35802 \r
35803   };\r
35804 \r
35805   \r
35806 \r
35807   p.random = function random( aMin, aMax ) {\r
35808 \r
35809     return arguments.length == 2 ?\r
35810 \r
35811       aMin + (Math.random() * (aMax - aMin)) :\r
35812 \r
35813       Math.random() * aMin;\r
35814 \r
35815   };\r
35816 \r
35817 \r
35818 \r
35819   // From: http://freespace.virgin.net/hugo.elias/models/m_perlin.htm\r
35820 \r
35821   p.noise = function( x, y, z ) {\r
35822 \r
35823     return arguments.length >= 2 ?\r
35824 \r
35825       PerlinNoise_2D( x, y ) :\r
35826 \r
35827       PerlinNoise_2D( x, x );\r
35828 \r
35829   };\r
35830 \r
35831 \r
35832 \r
35833   function Noise(x, y) {\r
35834 \r
35835     var n = x + y * 57;\r
35836 \r
35837     n = (n<<13) ^ n;\r
35838 \r
35839     return Math.abs(1.0 - (((n * ((n * n * 15731) + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0));\r
35840 \r
35841   };\r
35842 \r
35843 \r
35844 \r
35845   function SmoothedNoise(x, y) {\r
35846 \r
35847     var corners = ( Noise(x-1, y-1)+Noise(x+1, y-1)+Noise(x-1, y+1)+Noise(x+1, y+1) ) / 16;\r
35848 \r
35849     var sides   = ( Noise(x-1, y)  +Noise(x+1, y)  +Noise(x, y-1)  +Noise(x, y+1) ) /  8;\r
35850 \r
35851     var center  =  Noise(x, y) / 4;\r
35852 \r
35853     return corners + sides + center;\r
35854 \r
35855   };\r
35856 \r
35857 \r
35858 \r
35859   function InterpolatedNoise(x, y) {\r
35860 \r
35861     var integer_X    = Math.floor(x);\r
35862 \r
35863     var fractional_X = x - integer_X;\r
35864 \r
35865 \r
35866 \r
35867     var integer_Y    = Math.floor(y);\r
35868 \r
35869     var fractional_Y = y - integer_Y;\r
35870 \r
35871 \r
35872 \r
35873     var v1 = SmoothedNoise(integer_X,     integer_Y);\r
35874 \r
35875     var v2 = SmoothedNoise(integer_X + 1, integer_Y);\r
35876 \r
35877     var v3 = SmoothedNoise(integer_X,     integer_Y + 1);\r
35878 \r
35879     var v4 = SmoothedNoise(integer_X + 1, integer_Y + 1);\r
35880 \r
35881 \r
35882 \r
35883     var i1 = Interpolate(v1 , v2 , fractional_X);\r
35884 \r
35885     var i2 = Interpolate(v3 , v4 , fractional_X);\r
35886 \r
35887 \r
35888 \r
35889     return Interpolate(i1 , i2 , fractional_Y);\r
35890 \r
35891   }\r
35892 \r
35893 \r
35894 \r
35895   function PerlinNoise_2D(x, y) {\r
35896 \r
35897       var total = 0;\r
35898 \r
35899       var p = 0.25;\r
35900 \r
35901       var n = 3;\r
35902 \r
35903 \r
35904 \r
35905       for ( var i = 0; i <= n; i++ ) {\r
35906 \r
35907           var frequency = Math.pow(2, i);\r
35908 \r
35909           var amplitude = Math.pow(p, i);\r
35910 \r
35911 \r
35912 \r
35913           total = total + InterpolatedNoise(x * frequency, y * frequency) * amplitude;\r
35914 \r
35915       }\r
35916 \r
35917 \r
35918 \r
35919       return total;\r
35920 \r
35921   }\r
35922 \r
35923 \r
35924 \r
35925   function Interpolate(a, b, x) {\r
35926 \r
35927     var ft = x * p.PI;\r
35928 \r
35929     var f = (1 - p.cos(ft)) * .5;\r
35930 \r
35931     return  a*(1-f) + b*f;\r
35932 \r
35933   }\r
35934 \r
35935 \r
35936 \r
35937   p.red = function( aColor ) {\r
35938 \r
35939     return parseInt(aColor.slice(5));\r
35940 \r
35941   };\r
35942 \r
35943 \r
35944 \r
35945   p.green = function( aColor ) {\r
35946 \r
35947     return parseInt(aColor.split(",")[1]);\r
35948 \r
35949   };\r
35950 \r
35951 \r
35952 \r
35953   p.blue = function( aColor ) {\r
35954 \r
35955     return parseInt(aColor.split(",")[2]);\r
35956 \r
35957   };\r
35958 \r
35959 \r
35960 \r
35961   p.alpha = function( aColor ) {\r
35962 \r
35963     return parseInt(aColor.split(",")[3]);\r
35964 \r
35965   };\r
35966 \r
35967 \r
35968 \r
35969   p.abs = function abs( aNumber ) {\r
35970 \r
35971     return Math.abs( aNumber );\r
35972 \r
35973   };\r
35974 \r
35975   \r
35976 \r
35977   p.cos = function cos( aNumber ) {\r
35978 \r
35979     return Math.cos( aNumber );\r
35980 \r
35981   };\r
35982 \r
35983   \r
35984 \r
35985   p.sin = function sin( aNumber ) {\r
35986 \r
35987     return Math.sin( aNumber );\r
35988 \r
35989   };\r
35990 \r
35991   \r
35992 \r
35993   p.pow = function pow( aNumber, aExponent ) {\r
35994 \r
35995     return Math.pow( aNumber, aExponent );\r
35996 \r
35997   };\r
35998 \r
35999   \r
36000 \r
36001   p.constrain = function constrain( aNumber, aMin, aMax ) {\r
36002 \r
36003     return Math.min( Math.max( aNumber, aMin ), aMax );\r
36004 \r
36005   };\r
36006 \r
36007   \r
36008 \r
36009   p.sqrt = function sqrt( aNumber ) {\r
36010 \r
36011     return Math.sqrt( aNumber );\r
36012 \r
36013   };\r
36014 \r
36015   \r
36016 \r
36017   p.atan2 = function atan2( aNumber, aNumber2 ) {\r
36018 \r
36019     return Math.atan2( aNumber, aNumber2 );\r
36020 \r
36021   };\r
36022 \r
36023   \r
36024 \r
36025   p.radians = function radians( aAngle ) {\r
36026 \r
36027     return ( aAngle / 180 ) * p.PI;\r
36028 \r
36029   };\r
36030 \r
36031   \r
36032 \r
36033   p.size = function size( aWidth, aHeight ) {\r
36034 \r
36035     var fillStyle = curContext.fillStyle;\r
36036 \r
36037     var strokeStyle = curContext.strokeStyle;\r
36038 \r
36039 \r
36040 \r
36041     curElement.width = p.width = aWidth;\r
36042 \r
36043     curElement.height = p.height = aHeight;\r
36044 \r
36045 \r
36046 \r
36047     curContext.fillStyle = fillStyle;\r
36048 \r
36049     curContext.strokeStyle = strokeStyle;\r
36050 \r
36051   };\r
36052 \r
36053   \r
36054 \r
36055   p.noStroke = function noStroke() {\r
36056 \r
36057     doStroke = false;\r
36058 \r
36059   };\r
36060 \r
36061   \r
36062 \r
36063   p.noFill = function noFill() {\r
36064 \r
36065     doFill = false;\r
36066 \r
36067   };\r
36068 \r
36069   \r
36070 \r
36071   p.smooth = function smooth(){};\r
36072 \r
36073   \r
36074 \r
36075   p.noLoop = function noLoop() {\r
36076 \r
36077     doLoop = false;\r
36078 \r
36079   };\r
36080 \r
36081   \r
36082 \r
36083   p.fill = function fill() {\r
36084 \r
36085     doFill = true;\r
36086 \r
36087     curContext.fillStyle = p.color.apply( this, arguments );\r
36088 \r
36089   };\r
36090 \r
36091   \r
36092 \r
36093   p.stroke = function stroke() {\r
36094 \r
36095     doStroke = true;\r
36096 \r
36097     curContext.strokeStyle = p.color.apply( this, arguments );\r
36098 \r
36099   };\r
36100 \r
36101 \r
36102 \r
36103   p.strokeWeight = function strokeWeight( w ) {\r
36104 \r
36105     curContext.lineWidth = w;\r
36106 \r
36107   };\r
36108 \r
36109   \r
36110 \r
36111   p.point = function point( x, y ) {\r
36112 \r
36113     var oldFill = curContext.fillStyle;\r
36114 \r
36115     curContext.fillStyle = curContext.strokeStyle;\r
36116 \r
36117     curContext.fillRect( Math.round( x ), Math.round( y ), 1, 1 );\r
36118 \r
36119     curContext.fillStyle = oldFill;\r
36120 \r
36121   };\r
36122 \r
36123 \r
36124 \r
36125   p.get = function get( x, y ) {\r
36126 \r
36127     if ( arguments.length == 0 ) {\r
36128 \r
36129       var c = p.createGraphics( p.width, p.height );\r
36130 \r
36131       c.image( curContext, 0, 0 );\r
36132 \r
36133       return c;\r
36134 \r
36135     }\r
36136 \r
36137 \r
36138 \r
36139     if ( !getLoaded ) {\r
36140 \r
36141       getLoaded = buildImageObject( curContext.getImageData(0, 0, p.width, p.height) );\r
36142 \r
36143     }\r
36144 \r
36145 \r
36146 \r
36147     return getLoaded.get( x, y );\r
36148 \r
36149   };\r
36150 \r
36151 \r
36152 \r
36153   p.set = function set( x, y, obj ) {\r
36154 \r
36155     if ( obj && obj.img ) {\r
36156 \r
36157       p.image( obj, x, y );\r
36158 \r
36159     } else {\r
36160 \r
36161       var oldFill = curContext.fillStyle;\r
36162 \r
36163       var color = obj;\r
36164 \r
36165       curContext.fillStyle = color;\r
36166 \r
36167       curContext.fillRect( Math.round( x ), Math.round( y ), 1, 1 );\r
36168 \r
36169       curContext.fillStyle = oldFill;\r
36170 \r
36171     }\r
36172 \r
36173   };\r
36174 \r
36175   \r
36176 \r
36177   p.arc = function arc( x, y, width, height, start, stop ) {\r
36178 \r
36179     if ( width <= 0 )\r
36180 \r
36181       return;\r
36182 \r
36183 \r
36184 \r
36185     if ( curEllipseMode == p.CORNER ) {\r
36186 \r
36187       x += width / 2;\r
36188 \r
36189       y += height / 2;\r
36190 \r
36191     }\r
36192 \r
36193 \r
36194 \r
36195     curContext.beginPath();\r
36196 \r
36197   \r
36198 \r
36199     //curContext.moveTo( x, y );\r
36200 \r
36201     curContext.arc( x, y, curEllipseMode == p.CENTER_RADIUS ? width : width/2, start, stop, false );\r
36202 \r
36203     \r
36204 \r
36205     if ( doFill )\r
36206 \r
36207       curContext.fill();\r
36208 \r
36209       \r
36210 \r
36211     if ( doStroke )\r
36212 \r
36213       curContext.stroke();\r
36214 \r
36215     \r
36216 \r
36217     curContext.closePath();\r
36218 \r
36219   };\r
36220 \r
36221   \r
36222 \r
36223   p.line = function line( x1, y1, x2, y2 ) {\r
36224 \r
36225     curContext.lineCap = "round";\r
36226 \r
36227     curContext.beginPath();\r
36228 \r
36229   \r
36230 \r
36231     curContext.moveTo( x1 || 0, y1 || 0 );\r
36232 \r
36233     curContext.lineTo( x2 || 0, y2 || 0 );\r
36234 \r
36235     \r
36236 \r
36237     curContext.stroke();\r
36238 \r
36239     \r
36240 \r
36241     curContext.closePath();\r
36242 \r
36243   };\r
36244 \r
36245 \r
36246 \r
36247   p.bezier = function bezier( x1, y1, x2, y2, x3, y3, x4, y4 ) {\r
36248 \r
36249     curContext.lineCap = "butt";\r
36250 \r
36251     curContext.beginPath();\r
36252 \r
36253   \r
36254 \r
36255     curContext.moveTo( x1, y1 );\r
36256 \r
36257     curContext.bezierCurveTo( x2, y2, x3, y3, x4, y4 );\r
36258 \r
36259     \r
36260 \r
36261     curContext.stroke();\r
36262 \r
36263     \r
36264 \r
36265     curContext.closePath();\r
36266 \r
36267   };\r
36268 \r
36269 \r
36270 \r
36271   p.triangle = function triangle( x1, y1, x2, y2, x3, y3 ) {\r
36272 \r
36273     p.beginShape();\r
36274 \r
36275     p.vertex( x1, y1 );\r
36276 \r
36277     p.vertex( x2, y2 );\r
36278 \r
36279     p.vertex( x3, y3 );\r
36280 \r
36281     p.endShape();\r
36282 \r
36283   };\r
36284 \r
36285 \r
36286 \r
36287   p.quad = function quad( x1, y1, x2, y2, x3, y3, x4, y4 ) {\r
36288 \r
36289     p.beginShape();\r
36290 \r
36291     p.vertex( x1, y1 );\r
36292 \r
36293     p.vertex( x2, y2 );\r
36294 \r
36295     p.vertex( x3, y3 );\r
36296 \r
36297     p.vertex( x4, y4 );\r
36298 \r
36299     p.endShape();\r
36300 \r
36301   };\r
36302 \r
36303   \r
36304 \r
36305   p.rect = function rect( x, y, width, height ) {\r
36306 \r
36307     if ( width == 0 && height == 0 )\r
36308 \r
36309       return;\r
36310 \r
36311 \r
36312 \r
36313     curContext.beginPath();\r
36314 \r
36315     \r
36316 \r
36317     var offsetStart = 0;\r
36318 \r
36319     var offsetEnd = 0;\r
36320 \r
36321 \r
36322 \r
36323     if ( curRectMode == p.CORNERS ) {\r
36324 \r
36325       width -= x;\r
36326 \r
36327       height -= y;\r
36328 \r
36329     }\r
36330 \r
36331     \r
36332 \r
36333     if ( curRectMode == p.RADIUS ) {\r
36334 \r
36335       width *= 2;\r
36336 \r
36337       height *= 2;\r
36338 \r
36339     }\r
36340 \r
36341     \r
36342 \r
36343     if ( curRectMode == p.CENTER || curRectMode == p.RADIUS ) {\r
36344 \r
36345       x -= width / 2;\r
36346 \r
36347       y -= height / 2;\r
36348 \r
36349     }\r
36350 \r
36351   \r
36352 \r
36353     curContext.rect(\r
36354 \r
36355       Math.round( x ) - offsetStart,\r
36356 \r
36357       Math.round( y ) - offsetStart,\r
36358 \r
36359       Math.round( width ) + offsetEnd,\r
36360 \r
36361       Math.round( height ) + offsetEnd\r
36362 \r
36363     );\r
36364 \r
36365       \r
36366 \r
36367     if ( doFill )\r
36368 \r
36369       curContext.fill();\r
36370 \r
36371       \r
36372 \r
36373     if ( doStroke )\r
36374 \r
36375       curContext.stroke();\r
36376 \r
36377     \r
36378 \r
36379     curContext.closePath();\r
36380 \r
36381   };\r
36382 \r
36383   \r
36384 \r
36385   p.ellipse = function ellipse( x, y, width, height ) {\r
36386 \r
36387     x = x || 0;\r
36388 \r
36389     y = y || 0;\r
36390 \r
36391 \r
36392 \r
36393     if ( width <= 0 && height <= 0 )\r
36394 \r
36395       return;\r
36396 \r
36397 \r
36398 \r
36399     curContext.beginPath();\r
36400 \r
36401     \r
36402 \r
36403     if ( curEllipseMode == p.RADIUS ) {\r
36404 \r
36405       width *= 2;\r
36406 \r
36407       height *= 2;\r
36408 \r
36409     }\r
36410 \r
36411     \r
36412 \r
36413     var offsetStart = 0;\r
36414 \r
36415     \r
36416 \r
36417     // Shortcut for drawing a circle\r
36418 \r
36419     if ( width == height )\r
36420 \r
36421       curContext.arc( x - offsetStart, y - offsetStart, width / 2, 0, Math.PI * 2, false );\r
36422 \r
36423   \r
36424 \r
36425     if ( doFill )\r
36426 \r
36427       curContext.fill();\r
36428 \r
36429       \r
36430 \r
36431     if ( doStroke )\r
36432 \r
36433       curContext.stroke();\r
36434 \r
36435     \r
36436 \r
36437     curContext.closePath();\r
36438 \r
36439   };\r
36440 \r
36441 \r
36442 \r
36443   p.link = function( href, target ) {\r
36444 \r
36445     window.location = href;\r
36446 \r
36447   };\r
36448 \r
36449 \r
36450 \r
36451   p.loadPixels = function() {\r
36452 \r
36453     p.pixels = buildImageObject( curContext.getImageData(0, 0, p.width, p.height) ).pixels;\r
36454 \r
36455   };\r
36456 \r
36457 \r
36458 \r
36459   p.updatePixels = function() {\r
36460 \r
36461     var colors = /(\d+),(\d+),(\d+),(\d+)/;\r
36462 \r
36463     var pixels = {};\r
36464 \r
36465     pixels.width = p.width;\r
36466 \r
36467     pixels.height = p.height;\r
36468 \r
36469     pixels.data = [];\r
36470 \r
36471 \r
36472 \r
36473     if ( curContext.createImageData ) {\r
36474 \r
36475       pixels = curContext.createImageData( p.width, p.height );\r
36476 \r
36477     }\r
36478 \r
36479 \r
36480 \r
36481     var data = pixels.data;\r
36482 \r
36483     var pos = 0;\r
36484 \r
36485 \r
36486 \r
36487     for ( var i = 0, l = p.pixels.length; i < l; i++ ) {\r
36488 \r
36489       var c = (p.pixels[i] || "rgba(0,0,0,1)").match(colors);\r
36490 \r
36491       data[pos] = parseInt(c[1]);\r
36492 \r
36493       data[pos+1] = parseInt(c[2]);\r
36494 \r
36495       data[pos+2] = parseInt(c[3]);\r
36496 \r
36497       data[pos+3] = parseFloat(c[4]) * 100;\r
36498 \r
36499       pos += 4;\r
36500 \r
36501     }\r
36502 \r
36503 \r
36504 \r
36505     curContext.putImageData(pixels, 0, 0);\r
36506 \r
36507   };\r
36508 \r
36509 \r
36510 \r
36511   p.extendClass = function extendClass( obj, args, fn ) {\r
36512 \r
36513     if ( arguments.length == 3 ) {\r
36514 \r
36515       fn.apply( obj, args );\r
36516 \r
36517     } else {\r
36518 \r
36519       args.call( obj );\r
36520 \r
36521     }\r
36522 \r
36523   };\r
36524 \r
36525 \r
36526 \r
36527   p.addMethod = function addMethod( object, name, fn ) {\r
36528 \r
36529     if ( object[ name ] ) {\r
36530 \r
36531       var args = fn.length;\r
36532 \r
36533       \r
36534 \r
36535       var oldfn = object[ name ];\r
36536 \r
36537       object[ name ] = function() {\r
36538 \r
36539         if ( arguments.length == args )\r
36540 \r
36541           return fn.apply( this, arguments );\r
36542 \r
36543         else\r
36544 \r
36545           return oldfn.apply( this, arguments );\r
36546 \r
36547       };\r
36548 \r
36549     } else {\r
36550 \r
36551       object[ name ] = fn;\r
36552 \r
36553     }\r
36554 \r
36555   };\r
36556 \r
36557 \r
36558 \r
36559   p.init = function init(code){\r
36560 \r
36561     p.stroke( 0 );\r
36562 \r
36563     p.fill( 255 );\r
36564 \r
36565   \r
36566 \r
36567     // Canvas has trouble rendering single pixel stuff on whole-pixel\r
36568 \r
36569     // counts, so we slightly offset it (this is super lame).\r
36570 \r
36571     curContext.translate( 0.5, 0.5 );\r
36572 \r
36573 \r
36574 \r
36575     if ( code ) {\r
36576 \r
36577       (function(Processing){with (p){\r
36578 \r
36579         eval(parse(code, p));\r
36580 \r
36581       }})(p);\r
36582 \r
36583     }\r
36584 \r
36585   \r
36586 \r
36587     if ( p.setup ) {\r
36588 \r
36589       inSetup = true;\r
36590 \r
36591       p.setup();\r
36592 \r
36593     }\r
36594 \r
36595     \r
36596 \r
36597     inSetup = false;\r
36598 \r
36599     \r
36600 \r
36601     if ( p.draw ) {\r
36602 \r
36603       if ( !doLoop ) {\r
36604 \r
36605         p.redraw();\r
36606 \r
36607       } else {\r
36608 \r
36609         p.loop();\r
36610 \r
36611       }\r
36612 \r
36613     }\r
36614 \r
36615     \r
36616 \r
36617     attach( curElement, "mousemove", function(e) {\r
36618 \r
36619       var scrollX = window.scrollX != null ? window.scrollX : window.pageXOffset;\r
36620 \r
36621       var scrollY = window.scrollY != null ? window.scrollY : window.pageYOffset;\r
36622 \r
36623       p.pmouseX = p.mouseX;\r
36624 \r
36625       p.pmouseY = p.mouseY;\r
36626 \r
36627       p.mouseX = e.clientX - curElement.offsetLeft + scrollX;\r
36628 \r
36629       p.mouseY = e.clientY - curElement.offsetTop + scrollY;\r
36630 \r
36631 \r
36632 \r
36633       if ( p.mouseMoved ) {\r
36634 \r
36635         p.mouseMoved();\r
36636 \r
36637       }      \r
36638 \r
36639 \r
36640 \r
36641       if ( mousePressed && p.mouseDragged ) {\r
36642 \r
36643         p.mouseDragged();\r
36644 \r
36645       }      \r
36646 \r
36647     });\r
36648 \r
36649     \r
36650 \r
36651     attach( curElement, "mousedown", function(e) {\r
36652 \r
36653       mousePressed = true;\r
36654 \r
36655       p.mouseButton = e.which;\r
36656 \r
36657 \r
36658 \r
36659       if ( typeof p.mousePressed == "function" ) {\r
36660 \r
36661         p.mousePressed();\r
36662 \r
36663       } else {\r
36664 \r
36665         p.mousePressed = true;\r
36666 \r
36667       }\r
36668 \r
36669     });\r
36670 \r
36671 \r
36672 \r
36673     attach( curElement, "contextmenu", function(e) {\r
36674 \r
36675       e.preventDefault();\r
36676 \r
36677       e.stopPropagation();\r
36678 \r
36679     });\r
36680 \r
36681 \r
36682 \r
36683     attach( curElement, "mouseup", function(e) {\r
36684 \r
36685       mousePressed = false;\r
36686 \r
36687 \r
36688 \r
36689       if ( typeof p.mousePressed != "function" ) {\r
36690 \r
36691         p.mousePressed = false;\r
36692 \r
36693       }\r
36694 \r
36695 \r
36696 \r
36697       if ( p.mouseReleased ) {\r
36698 \r
36699         p.mouseReleased();\r
36700 \r
36701       }\r
36702 \r
36703     });\r
36704 \r
36705 \r
36706 \r
36707     attach( document, "keydown", function(e) {\r
36708 \r
36709       keyPressed = true;\r
36710 \r
36711 \r
36712 \r
36713       p.key = e.keyCode + 32;\r
36714 \r
36715 \r
36716 \r
36717       if ( e.shiftKey ) {\r
36718 \r
36719         p.key = String.fromCharCode(p.key).toUpperCase().charCodeAt(0);\r
36720 \r
36721       }\r
36722 \r
36723 \r
36724 \r
36725       if ( typeof p.keyPressed == "function" ) {\r
36726 \r
36727         p.keyPressed();\r
36728 \r
36729       } else {\r
36730 \r
36731         p.keyPressed = true;\r
36732 \r
36733       }\r
36734 \r
36735     });\r
36736 \r
36737 \r
36738 \r
36739     attach( document, "keyup", function(e) {\r
36740 \r
36741       keyPressed = false;\r
36742 \r
36743 \r
36744 \r
36745       if ( typeof p.keyPressed != "function" ) {\r
36746 \r
36747         p.keyPressed = false;\r
36748 \r
36749       }\r
36750 \r
36751 \r
36752 \r
36753       if ( p.keyReleased ) {\r
36754 \r
36755         p.keyReleased();\r
36756 \r
36757       }\r
36758 \r
36759     });\r
36760 \r
36761 \r
36762 \r
36763     function attach(elem, type, fn) {\r
36764 \r
36765       if ( elem.addEventListener )\r
36766 \r
36767         elem.addEventListener( type, fn, false );\r
36768 \r
36769       else\r
36770 \r
36771         elem.attachEvent( "on" + type, fn );\r
36772 \r
36773     }\r
36774 \r
36775   };\r
36776 \r
36777 \r
36778 \r
36779   return p;\r
36780 \r
36781 }\r
36782 \r
36783 \r
36784 \r
36785 })();\r
36786 \r
36787 \r
36788 \r
36789 /*\r
36790 \r
36791  * This code searches for all the <script type="application/processing" target="canvasid">\r
36792 \r
36793  * in your page and loads each script in the target canvas with the proper id.\r
36794 \r
36795  * It is useful to smooth the process of adding Processing code in your page and starting\r
36796 \r
36797  * the Processing.js engine.\r
36798 \r
36799  */\r
36800 \r
36801 \r
36802 \r
36803 if ( window.addEventListener ) {\r
36804 \r
36805         window.addEventListener("load", function() {\r
36806 \r
36807                 var scripts = document.getElementsByTagName("script");\r
36808 \r
36809                 \r
36810 \r
36811                 for ( var i = 0; i < scripts.length; i++ ) {\r
36812 \r
36813                         if ( scripts[i].type == "application/processing" ) {\r
36814 \r
36815                                 var src = scripts[i].src, canvas = scripts[i].nextSibling;\r
36816 \r
36817         \r
36818 \r
36819                                 if ( src && src.indexOf("#") ) {\r
36820 \r
36821                                         canvas = document.getElementById( src.substr( src.indexOf("#") + 1 ) );\r
36822 \r
36823                                 } else {\r
36824 \r
36825                                         while ( canvas && canvas.nodeName.toUpperCase() != "CANVAS" )\r
36826 \r
36827                                                 canvas = canvas.nextSibling;\r
36828 \r
36829                                 }\r
36830 \r
36831 \r
36832 \r
36833                                 if ( canvas ) {\r
36834 \r
36835                                         Processing(canvas, scripts[i].textContent);\r
36836 \r
36837                                 }\r
36838 \r
36839                         }\r
36840 \r
36841                 }\r
36842 \r
36843         }, false);\r
36844 \r
36845 }\r
36846 </script>\r
36847 \r
36848 \r
36849 <script id="sunspider" type="x">\r
36850 // 3D Cube Rotation\r
36851 // http://www.speich.net/computer/moztesting/3d.htm\r
36852 // Created by Simon Speich\r
36853 \r
36854 var Q = new Array();\r
36855 var MTrans = new Array();  // transformation matrix\r
36856 var MQube = new Array();  // position information of qube\r
36857 var I = new Array();      // entity matrix\r
36858 var Origin = new Object();\r
36859 var Testing = new Object();\r
36860 var LoopTimer;\r
36861 \r
36862 var DisplArea = new Object();\r
36863 DisplArea.Width = 300;\r
36864 DisplArea.Height = 300;\r
36865 \r
36866 function DrawLine(From, To) {\r
36867   var x1 = From.V[0];\r
36868   var x2 = To.V[0];\r
36869   var y1 = From.V[1];\r
36870   var y2 = To.V[1];\r
36871   var dx = Math.abs(x2 - x1);\r
36872   var dy = Math.abs(y2 - y1);\r
36873   var x = x1;\r
36874   var y = y1;\r
36875   var IncX1, IncY1;\r
36876   var IncX2, IncY2;  \r
36877   var Den;\r
36878   var Num;\r
36879   var NumAdd;\r
36880   var NumPix;\r
36881 \r
36882   if (x2 >= x1) {  IncX1 = 1; IncX2 = 1;  }\r
36883   else { IncX1 = -1; IncX2 = -1; }\r
36884   if (y2 >= y1)  {  IncY1 = 1; IncY2 = 1; }\r
36885   else { IncY1 = -1; IncY2 = -1; }\r
36886   if (dx >= dy) {\r
36887     IncX1 = 0;\r
36888     IncY2 = 0;\r
36889     Den = dx;\r
36890     Num = dx / 2;\r
36891     NumAdd = dy;\r
36892     NumPix = dx;\r
36893   }\r
36894   else {\r
36895     IncX2 = 0;\r
36896     IncY1 = 0;\r
36897     Den = dy;\r
36898     Num = dy / 2;\r
36899     NumAdd = dx;\r
36900     NumPix = dy;\r
36901   }\r
36902 \r
36903   NumPix = Math.round(Q.LastPx + NumPix);\r
36904 \r
36905   var i = Q.LastPx;\r
36906   for (; i < NumPix; i++) {\r
36907     Num += NumAdd;\r
36908     if (Num >= Den) {\r
36909       Num -= Den;\r
36910       x += IncX1;\r
36911       y += IncY1;\r
36912     }\r
36913     x += IncX2;\r
36914     y += IncY2;\r
36915   }\r
36916   Q.LastPx = NumPix;\r
36917 }\r
36918 \r
36919 function CalcCross(V0, V1) {\r
36920   var Cross = new Array();\r
36921   Cross[0] = V0[1]*V1[2] - V0[2]*V1[1];\r
36922   Cross[1] = V0[2]*V1[0] - V0[0]*V1[2];\r
36923   Cross[2] = V0[0]*V1[1] - V0[1]*V1[0];\r
36924   return Cross;\r
36925 }\r
36926 \r
36927 function CalcNormal(V0, V1, V2) {\r
36928   var A = new Array();   var B = new Array(); \r
36929   for (var i = 0; i < 3; i++) {\r
36930     A[i] = V0[i] - V1[i];\r
36931     B[i] = V2[i] - V1[i];\r
36932   }\r
36933   A = CalcCross(A, B);\r
36934   var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]); \r
36935   for (var i = 0; i < 3; i++) A[i] = A[i] / Length;\r
36936   A[3] = 1;\r
36937   return A;\r
36938 }\r
36939 \r
36940 function CreateP(X,Y,Z) {\r
36941   this.V = [X,Y,Z,1];\r
36942 }\r
36943 \r
36944 // multiplies two matrices\r
36945 function MMulti(M1, M2) {\r
36946   var M = [[],[],[],[]];\r
36947   var i = 0;\r
36948   var j = 0;\r
36949   for (; i < 4; i++) {\r
36950     j = 0;\r
36951     for (; j < 4; j++) M[i][j] = M1[i][0] * M2[0][j] + M1[i][1] * M2[1][j] + M1[i][2] * M2[2][j] + M1[i][3] * M2[3][j];\r
36952   }\r
36953   return M;\r
36954 }\r
36955 \r
36956 //multiplies matrix with vector\r
36957 function VMulti(M, V) {\r
36958   var Vect = new Array();\r
36959   var i = 0;\r
36960   for (;i < 4; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2] + M[i][3] * V[3];\r
36961   return Vect;\r
36962 }\r
36963 \r
36964 function VMulti2(M, V) {\r
36965   var Vect = new Array();\r
36966   var i = 0;\r
36967   for (;i < 3; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2];\r
36968   return Vect;\r
36969 }\r
36970 \r
36971 // add to matrices\r
36972 function MAdd(M1, M2) {\r
36973   var M = [[],[],[],[]];\r
36974   var i = 0;\r
36975   var j = 0;\r
36976   for (; i < 4; i++) {\r
36977     j = 0;\r
36978     for (; j < 4; j++) M[i][j] = M1[i][j] + M2[i][j];\r
36979   }\r
36980   return M;\r
36981 }\r
36982 \r
36983 function Translate(M, Dx, Dy, Dz) {\r
36984   var T = [\r
36985   [1,0,0,Dx],\r
36986   [0,1,0,Dy],\r
36987   [0,0,1,Dz],\r
36988   [0,0,0,1]\r
36989   ];\r
36990   return MMulti(T, M);\r
36991 }\r
36992 \r
36993 function RotateX(M, Phi) {\r
36994   var a = Phi;\r
36995   a *= Math.PI / 180;\r
36996   var Cos = Math.cos(a);\r
36997   var Sin = Math.sin(a);\r
36998   var R = [\r
36999   [1,0,0,0],\r
37000   [0,Cos,-Sin,0],\r
37001   [0,Sin,Cos,0],\r
37002   [0,0,0,1]\r
37003   ];\r
37004   return MMulti(R, M);\r
37005 }\r
37006 \r
37007 function RotateY(M, Phi) {\r
37008   var a = Phi;\r
37009   a *= Math.PI / 180;\r
37010   var Cos = Math.cos(a);\r
37011   var Sin = Math.sin(a);\r
37012   var R = [\r
37013   [Cos,0,Sin,0],\r
37014   [0,1,0,0],\r
37015   [-Sin,0,Cos,0],\r
37016   [0,0,0,1]\r
37017   ];\r
37018   return MMulti(R, M);\r
37019 }\r
37020 \r
37021 function RotateZ(M, Phi) {\r
37022   var a = Phi;\r
37023   a *= Math.PI / 180;\r
37024   var Cos = Math.cos(a);\r
37025   var Sin = Math.sin(a);\r
37026   var R = [\r
37027   [Cos,-Sin,0,0],\r
37028   [Sin,Cos,0,0],\r
37029   [0,0,1,0],   \r
37030   [0,0,0,1]\r
37031   ];\r
37032   return MMulti(R, M);\r
37033 }\r
37034 \r
37035 function DrawQube() {\r
37036   // calc current normals\r
37037   var CurN = new Array();\r
37038   var i = 5;\r
37039   Q.LastPx = 0;\r
37040   for (; i > -1; i--) CurN[i] = VMulti2(MQube, Q.Normal[i]);\r
37041   if (CurN[0][2] < 0) {\r
37042     if (!Q.Line[0]) { DrawLine(Q[0], Q[1]); Q.Line[0] = true; };\r
37043     if (!Q.Line[1]) { DrawLine(Q[1], Q[2]); Q.Line[1] = true; };\r
37044     if (!Q.Line[2]) { DrawLine(Q[2], Q[3]); Q.Line[2] = true; };\r
37045     if (!Q.Line[3]) { DrawLine(Q[3], Q[0]); Q.Line[3] = true; };\r
37046   }\r
37047   if (CurN[1][2] < 0) {\r
37048     if (!Q.Line[2]) { DrawLine(Q[3], Q[2]); Q.Line[2] = true; };\r
37049     if (!Q.Line[9]) { DrawLine(Q[2], Q[6]); Q.Line[9] = true; };\r
37050     if (!Q.Line[6]) { DrawLine(Q[6], Q[7]); Q.Line[6] = true; };\r
37051     if (!Q.Line[10]) { DrawLine(Q[7], Q[3]); Q.Line[10] = true; };\r
37052   }\r
37053   if (CurN[2][2] < 0) {\r
37054     if (!Q.Line[4]) { DrawLine(Q[4], Q[5]); Q.Line[4] = true; };\r
37055     if (!Q.Line[5]) { DrawLine(Q[5], Q[6]); Q.Line[5] = true; };\r
37056     if (!Q.Line[6]) { DrawLine(Q[6], Q[7]); Q.Line[6] = true; };\r
37057     if (!Q.Line[7]) { DrawLine(Q[7], Q[4]); Q.Line[7] = true; };\r
37058   }\r
37059   if (CurN[3][2] < 0) {\r
37060     if (!Q.Line[4]) { DrawLine(Q[4], Q[5]); Q.Line[4] = true; };\r
37061     if (!Q.Line[8]) { DrawLine(Q[5], Q[1]); Q.Line[8] = true; };\r
37062     if (!Q.Line[0]) { DrawLine(Q[1], Q[0]); Q.Line[0] = true; };\r
37063     if (!Q.Line[11]) { DrawLine(Q[0], Q[4]); Q.Line[11] = true; };\r
37064   }\r
37065   if (CurN[4][2] < 0) {\r
37066     if (!Q.Line[11]) { DrawLine(Q[4], Q[0]); Q.Line[11] = true; };\r
37067     if (!Q.Line[3]) { DrawLine(Q[0], Q[3]); Q.Line[3] = true; };\r
37068     if (!Q.Line[10]) { DrawLine(Q[3], Q[7]); Q.Line[10] = true; };\r
37069     if (!Q.Line[7]) { DrawLine(Q[7], Q[4]); Q.Line[7] = true; };\r
37070   }\r
37071   if (CurN[5][2] < 0) {\r
37072     if (!Q.Line[8]) { DrawLine(Q[1], Q[5]); Q.Line[8] = true; };\r
37073     if (!Q.Line[5]) { DrawLine(Q[5], Q[6]); Q.Line[5] = true; };\r
37074     if (!Q.Line[9]) { DrawLine(Q[6], Q[2]); Q.Line[9] = true; };\r
37075     if (!Q.Line[1]) { DrawLine(Q[2], Q[1]); Q.Line[1] = true; };\r
37076   }\r
37077   Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];\r
37078   Q.LastPx = 0;\r
37079 }\r
37080 \r
37081 function Loop() {\r
37082   if (Testing.LoopCount > Testing.LoopMax) return;\r
37083   var TestingStr = String(Testing.LoopCount);\r
37084   while (TestingStr.length < 3) TestingStr = "0" + TestingStr;\r
37085   MTrans = Translate(I, -Q[8].V[0], -Q[8].V[1], -Q[8].V[2]);\r
37086   MTrans = RotateX(MTrans, 1);\r
37087   MTrans = RotateY(MTrans, 3);\r
37088   MTrans = RotateZ(MTrans, 5);\r
37089   MTrans = Translate(MTrans, Q[8].V[0], Q[8].V[1], Q[8].V[2]);\r
37090   MQube = MMulti(MTrans, MQube);\r
37091   var i = 8;\r
37092   for (; i > -1; i--) {\r
37093     Q[i].V = VMulti(MTrans, Q[i].V);\r
37094   }\r
37095   DrawQube();\r
37096   Testing.LoopCount++;\r
37097   Loop();\r
37098 }\r
37099 \r
37100 function Init(CubeSize) {\r
37101   // init/reset vars\r
37102   Origin.V = [150,150,20,1];\r
37103   Testing.LoopCount = 0;\r
37104   Testing.LoopMax = 50;\r
37105   Testing.TimeMax = 0;\r
37106   Testing.TimeAvg = 0;\r
37107   Testing.TimeMin = 0;\r
37108   Testing.TimeTemp = 0;\r
37109   Testing.TimeTotal = 0;\r
37110   Testing.Init = false;\r
37111 \r
37112   // transformation matrix\r
37113   MTrans = [\r
37114   [1,0,0,0],\r
37115   [0,1,0,0],\r
37116   [0,0,1,0],\r
37117   [0,0,0,1]\r
37118   ];\r
37119   \r
37120   // position information of qube\r
37121   MQube = [\r
37122   [1,0,0,0],\r
37123   [0,1,0,0],\r
37124   [0,0,1,0],\r
37125   [0,0,0,1]\r
37126   ];\r
37127   \r
37128   // entity matrix\r
37129   I = [\r
37130   [1,0,0,0],\r
37131   [0,1,0,0],\r
37132   [0,0,1,0],\r
37133   [0,0,0,1]\r
37134   ];\r
37135   \r
37136   // create qube\r
37137   Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);\r
37138   Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);\r
37139   Q[2] = new CreateP( CubeSize, CubeSize, CubeSize);\r
37140   Q[3] = new CreateP( CubeSize,-CubeSize, CubeSize);\r
37141   Q[4] = new CreateP(-CubeSize,-CubeSize,-CubeSize);\r
37142   Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);\r
37143   Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);\r
37144   Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);\r
37145   \r
37146   // center of gravity\r
37147   Q[8] = new CreateP(0, 0, 0);\r
37148   \r
37149   // anti-clockwise edge check\r
37150   Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];\r
37151   \r
37152   // calculate squad normals\r
37153   Q.Normal = new Array();\r
37154   for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);\r
37155   \r
37156   // line drawn ?\r
37157   Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];\r
37158   \r
37159   // create line pixels\r
37160   Q.NumPx = 9 * 2 * CubeSize;\r
37161   for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);\r
37162   \r
37163   MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);\r
37164   MQube = MMulti(MTrans, MQube);\r
37165 \r
37166   var i = 0;\r
37167   for (; i < 9; i++) {\r
37168     Q[i].V = VMulti(MTrans, Q[i].V);\r
37169   }\r
37170   DrawQube();\r
37171   Testing.Init = true;\r
37172   Loop();\r
37173 }\r
37174 \r
37175 for ( var i = 20; i <= 160; i *= 2 ) {\r
37176   Init(i);\r
37177 }\r
37178 \r
37179 Q = null;\r
37180 MTrans = null;\r
37181 MQube = null;\r
37182 I = null;\r
37183 Origin = null;\r
37184 Testing = null;\r
37185 LoopTime = null;\r
37186 DisplArea = null;\r
37187 /*\r
37188  * Copyright (C) 2007 Apple Inc.  All rights reserved.\r
37189  *\r
37190  * Redistribution and use in source and binary forms, with or without\r
37191  * modification, are permitted provided that the following conditions\r
37192  * are met:\r
37193  * 1. Redistributions of source code must retain the above copyright\r
37194  *    notice, this list of conditions and the following disclaimer.\r
37195  * 2. Redistributions in binary form must reproduce the above copyright\r
37196  *    notice, this list of conditions and the following disclaimer in the\r
37197  *    documentation and/or other materials provided with the distribution.\r
37198  *\r
37199  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY\r
37200  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
37201  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
37202  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR\r
37203  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
37204  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
37205  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\r
37206  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r
37207  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
37208  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
37209  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \r
37210  */\r
37211 \r
37212 var loops = 15\r
37213 var nx = 120\r
37214 var nz = 120\r
37215 \r
37216 function morph(a, f) {\r
37217     var PI2nx = Math.PI * 8/nx\r
37218     var sin = Math.sin\r
37219     var f30 = -(50 * sin(f*Math.PI*2))\r
37220     \r
37221     for (var i = 0; i < nz; ++i) {\r
37222         for (var j = 0; j < nx; ++j) {\r
37223             a[3*(i*nx+j)+1]    = sin((j-1) * PI2nx ) * -f30\r
37224         }\r
37225     }\r
37226 }\r
37227 \r
37228     \r
37229 var a = Array()\r
37230 for (var i=0; i < nx*nz*3; ++i) \r
37231     a[i] = 0\r
37232 \r
37233 for (var i = 0; i < loops; ++i) {\r
37234     morph(a, i/loops)\r
37235 }\r
37236 \r
37237 testOutput = 0;\r
37238 for (var i = 0; i < nx; i++)\r
37239     testOutput += a[3*(i*nx+i)+1];\r
37240 a = null;\r
37241 /*\r
37242  * Copyright (C) 2007 Apple Inc.  All rights reserved.\r
37243  *\r
37244  * Redistribution and use in source and binary forms, with or without\r
37245  * modification, are permitted provided that the following conditions\r
37246  * are met:\r
37247  * 1. Redistributions of source code must retain the above copyright\r
37248  *    notice, this list of conditions and the following disclaimer.\r
37249  * 2. Redistributions in binary form must reproduce the above copyright\r
37250  *    notice, this list of conditions and the following disclaimer in the\r
37251  *    documentation and/or other materials provided with the distribution.\r
37252  *\r
37253  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY\r
37254  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
37255  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
37256  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR\r
37257  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
37258  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
37259  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\r
37260  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r
37261  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
37262  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
37263  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \r
37264  */\r
37265 \r
37266 function createVector(x,y,z) {\r
37267     return new Array(x,y,z);\r
37268 }\r
37269 \r
37270 function sqrLengthVector(self) {\r
37271     return self[0] * self[0] + self[1] * self[1] + self[2] * self[2];\r
37272 }\r
37273 \r
37274 function lengthVector(self) {\r
37275     return Math.sqrt(self[0] * self[0] + self[1] * self[1] + self[2] * self[2]);\r
37276 }\r
37277 \r
37278 function addVector(self, v) {\r
37279     self[0] += v[0];\r
37280     self[1] += v[1];\r
37281     self[2] += v[2];\r
37282     return self;\r
37283 }\r
37284 \r
37285 function subVector(self, v) {\r
37286     self[0] -= v[0];\r
37287     self[1] -= v[1];\r
37288     self[2] -= v[2];\r
37289     return self;\r
37290 }\r
37291 \r
37292 function scaleVector(self, scale) {\r
37293     self[0] *= scale;\r
37294     self[1] *= scale;\r
37295     self[2] *= scale;\r
37296     return self;\r
37297 }\r
37298 \r
37299 function normaliseVector(self) {\r
37300     var len = Math.sqrt(self[0] * self[0] + self[1] * self[1] + self[2] * self[2]);\r
37301     self[0] /= len;\r
37302     self[1] /= len;\r
37303     self[2] /= len;\r
37304     return self;\r
37305 }\r
37306 \r
37307 function add(v1, v2) {\r
37308     return new Array(v1[0] + v2[0], v1[1] + v2[1], v1[2] + v2[2]);\r
37309 }\r
37310 \r
37311 function sub(v1, v2) {\r
37312     return new Array(v1[0] - v2[0], v1[1] - v2[1], v1[2] - v2[2]);\r
37313 }\r
37314 \r
37315 function scalev(v1, v2) {\r
37316     return new Array(v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]);\r
37317 }\r
37318 \r
37319 function dot(v1, v2) {\r
37320     return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];\r
37321 }\r
37322 \r
37323 function scale(v, scale) {\r
37324     return [v[0] * scale, v[1] * scale, v[2] * scale];\r
37325 }\r
37326 \r
37327 function cross(v1, v2) {\r
37328     return [v1[1] * v2[2] - v1[2] * v2[1], \r
37329             v1[2] * v2[0] - v1[0] * v2[2],\r
37330             v1[0] * v2[1] - v1[1] * v2[0]];\r
37331 \r
37332 }\r
37333 \r
37334 function normalise(v) {\r
37335     var len = lengthVector(v);\r
37336     return [v[0] / len, v[1] / len, v[2] / len];\r
37337 }\r
37338 \r
37339 function transformMatrix(self, v) {\r
37340     var vals = self;\r
37341     var x  = vals[0] * v[0] + vals[1] * v[1] + vals[2] * v[2] + vals[3];\r
37342     var y  = vals[4] * v[0] + vals[5] * v[1] + vals[6] * v[2] + vals[7];\r
37343     var z  = vals[8] * v[0] + vals[9] * v[1] + vals[10] * v[2] + vals[11];\r
37344     return [x, y, z];\r
37345 }\r
37346 \r
37347 function invertMatrix(self) {\r
37348     var temp = new Array(16);\r
37349     var tx = -self[3];\r
37350     var ty = -self[7];\r
37351     var tz = -self[11];\r
37352     for (h = 0; h < 3; h++) \r
37353         for (v = 0; v < 3; v++) \r
37354             temp[h + v * 4] = self[v + h * 4];\r
37355     for (i = 0; i < 11; i++)\r
37356         self[i] = temp[i];\r
37357     self[3] = tx * self[0] + ty * self[1] + tz * self[2];\r
37358     self[7] = tx * self[4] + ty * self[5] + tz * self[6];\r
37359     self[11] = tx * self[8] + ty * self[9] + tz * self[10];\r
37360     return self;\r
37361 }\r
37362 \r
37363 \r
37364 // Triangle intersection using barycentric coord method\r
37365 function Triangle(p1, p2, p3) {\r
37366     var edge1 = sub(p3, p1);\r
37367     var edge2 = sub(p2, p1);\r
37368     var normal = cross(edge1, edge2);\r
37369     if (Math.abs(normal[0]) > Math.abs(normal[1]))\r
37370         if (Math.abs(normal[0]) > Math.abs(normal[2]))\r
37371             this.axis = 0; \r
37372         else \r
37373             this.axis = 2;\r
37374     else\r
37375         if (Math.abs(normal[1]) > Math.abs(normal[2])) \r
37376             this.axis = 1;\r
37377         else \r
37378             this.axis = 2;\r
37379     var u = (this.axis + 1) % 3;\r
37380     var v = (this.axis + 2) % 3;\r
37381     var u1 = edge1[u];\r
37382     var v1 = edge1[v];\r
37383     \r
37384     var u2 = edge2[u];\r
37385     var v2 = edge2[v];\r
37386     this.normal = normalise(normal);\r
37387     this.nu = normal[u] / normal[this.axis];\r
37388     this.nv = normal[v] / normal[this.axis];\r
37389     this.nd = dot(normal, p1) / normal[this.axis];\r
37390     var det = u1 * v2 - v1 * u2;\r
37391     this.eu = p1[u];\r
37392     this.ev = p1[v]; \r
37393     this.nu1 = u1 / det;\r
37394     this.nv1 = -v1 / det;\r
37395     this.nu2 = v2 / det;\r
37396     this.nv2 = -u2 / det; \r
37397     this.material = [0.7, 0.7, 0.7];\r
37398 }\r
37399 \r
37400 Triangle.prototype.intersect = function(orig, dir, near, far) {\r
37401     var u = (this.axis + 1) % 3;\r
37402     var v = (this.axis + 2) % 3;\r
37403     var d = dir[this.axis] + this.nu * dir[u] + this.nv * dir[v];\r
37404     var t = (this.nd - orig[this.axis] - this.nu * orig[u] - this.nv * orig[v]) / d;\r
37405     if (t < near || t > far)\r
37406         return null;\r
37407     var Pu = orig[u] + t * dir[u] - this.eu;\r
37408     var Pv = orig[v] + t * dir[v] - this.ev;\r
37409     var a2 = Pv * this.nu1 + Pu * this.nv1;\r
37410     if (a2 < 0) \r
37411         return null;\r
37412     var a3 = Pu * this.nu2 + Pv * this.nv2;\r
37413     if (a3 < 0) \r
37414         return null;\r
37415 \r
37416     if ((a2 + a3) > 1) \r
37417         return null;\r
37418     return t;\r
37419 }\r
37420 \r
37421 function Scene(a_triangles) {\r
37422     this.triangles = a_triangles;\r
37423     this.lights = [];\r
37424     this.ambient = [0,0,0];\r
37425     this.background = [0.8,0.8,1];\r
37426 }\r
37427 var zero = new Array(0,0,0);\r
37428 \r
37429 Scene.prototype.intersect = function(origin, dir, near, far) {\r
37430     var closest = null;\r
37431     for (i = 0; i < this.triangles.length; i++) {\r
37432         var triangle = this.triangles[i];   \r
37433         var d = triangle.intersect(origin, dir, near, far);\r
37434         if (d == null || d > far || d < near)\r
37435             continue;\r
37436         far = d;\r
37437         closest = triangle;\r
37438     }\r
37439     \r
37440     if (!closest)\r
37441         return [this.background[0],this.background[1],this.background[2]];\r
37442         \r
37443     var normal = closest.normal;\r
37444     var hit = add(origin, scale(dir, far)); \r
37445     if (dot(dir, normal) > 0)\r
37446         normal = [-normal[0], -normal[1], -normal[2]];\r
37447     \r
37448     var colour = null;\r
37449     if (closest.shader) {\r
37450         colour = closest.shader(closest, hit, dir);\r
37451     } else {\r
37452         colour = closest.material;\r
37453     }\r
37454     \r
37455     // do reflection\r
37456     var reflected = null;\r
37457     if (colour.reflection > 0.001) {\r
37458         var reflection = addVector(scale(normal, -2*dot(dir, normal)), dir);\r
37459         reflected = this.intersect(hit, reflection, 0.0001, 1000000);\r
37460         if (colour.reflection >= 0.999999)\r
37461             return reflected;\r
37462     }\r
37463     \r
37464     var l = [this.ambient[0], this.ambient[1], this.ambient[2]];\r
37465     for (var i = 0; i < this.lights.length; i++) {\r
37466         var light = this.lights[i];\r
37467         var toLight = sub(light, hit);\r
37468         var distance = lengthVector(toLight);\r
37469         scaleVector(toLight, 1.0/distance);\r
37470         distance -= 0.0001;\r
37471         if (this.blocked(hit, toLight, distance))\r
37472             continue;\r
37473         var nl = dot(normal, toLight);\r
37474         if (nl > 0)\r
37475             addVector(l, scale(light.colour, nl));\r
37476     }\r
37477     l = scalev(l, colour);\r
37478     if (reflected) {\r
37479         l = addVector(scaleVector(l, 1 - colour.reflection), scaleVector(reflected, colour.reflection));\r
37480     }\r
37481     return l;\r
37482 }\r
37483 \r
37484 Scene.prototype.blocked = function(O, D, far) {\r
37485     var near = 0.0001;\r
37486     var closest = null;\r
37487     for (i = 0; i < this.triangles.length; i++) {\r
37488         var triangle = this.triangles[i];   \r
37489         var d = triangle.intersect(O, D, near, far);\r
37490         if (d == null || d > far || d < near)\r
37491             continue;\r
37492         return true;\r
37493     }\r
37494     \r
37495     return false;\r
37496 }\r
37497 \r
37498 \r
37499 // this camera code is from notes i made ages ago, it is from *somewhere* -- i cannot remember where\r
37500 // that somewhere is\r
37501 function Camera(origin, lookat, up) {\r
37502     var zaxis = normaliseVector(subVector(lookat, origin));\r
37503     var xaxis = normaliseVector(cross(up, zaxis));\r
37504     var yaxis = normaliseVector(cross(xaxis, subVector([0,0,0], zaxis)));\r
37505     var m = new Array(16);\r
37506     m[0] = xaxis[0]; m[1] = xaxis[1]; m[2] = xaxis[2];\r
37507     m[4] = yaxis[0]; m[5] = yaxis[1]; m[6] = yaxis[2];\r
37508     m[8] = zaxis[0]; m[9] = zaxis[1]; m[10] = zaxis[2];\r
37509     invertMatrix(m);\r
37510     m[3] = 0; m[7] = 0; m[11] = 0;\r
37511     this.origin = origin;\r
37512     this.directions = new Array(4);\r
37513     this.directions[0] = normalise([-0.7,  0.7, 1]);\r
37514     this.directions[1] = normalise([ 0.7,  0.7, 1]);\r
37515     this.directions[2] = normalise([ 0.7, -0.7, 1]);\r
37516     this.directions[3] = normalise([-0.7, -0.7, 1]);\r
37517     this.directions[0] = transformMatrix(m, this.directions[0]);\r
37518     this.directions[1] = transformMatrix(m, this.directions[1]);\r
37519     this.directions[2] = transformMatrix(m, this.directions[2]);\r
37520     this.directions[3] = transformMatrix(m, this.directions[3]);\r
37521 }\r
37522 \r
37523 Camera.prototype.generateRayPair = function(y) {\r
37524     rays = new Array(new Object(), new Object());\r
37525     rays[0].origin = this.origin;\r
37526     rays[1].origin = this.origin;\r
37527     rays[0].dir = addVector(scale(this.directions[0], y), scale(this.directions[3], 1 - y));\r
37528     rays[1].dir = addVector(scale(this.directions[1], y), scale(this.directions[2], 1 - y));\r
37529     return rays;\r
37530 }\r
37531 \r
37532 function renderRows(camera, scene, pixels, width, height, starty, stopy) {\r
37533     for (var y = starty; y < stopy; y++) {\r
37534         var rays = camera.generateRayPair(y / height);\r
37535         for (var x = 0; x < width; x++) {\r
37536             var xp = x / width;\r
37537             var origin = addVector(scale(rays[0].origin, xp), scale(rays[1].origin, 1 - xp));\r
37538             var dir = normaliseVector(addVector(scale(rays[0].dir, xp), scale(rays[1].dir, 1 - xp)));\r
37539             var l = scene.intersect(origin, dir);\r
37540             pixels[y][x] = l;\r
37541         }\r
37542     }\r
37543 }\r
37544 \r
37545 Camera.prototype.render = function(scene, pixels, width, height) {\r
37546     var cam = this;\r
37547     var row = 0;\r
37548     renderRows(cam, scene, pixels, width, height, 0, height);\r
37549 }\r
37550 \r
37551 \r
37552 \r
37553 function raytraceScene()\r
37554 {\r
37555     var startDate = new Date().getTime();\r
37556     var numTriangles = 2 * 6;\r
37557     var triangles = new Array();//numTriangles);\r
37558     var tfl = createVector(-10,  10, -10);\r
37559     var tfr = createVector( 10,  10, -10);\r
37560     var tbl = createVector(-10,  10,  10);\r
37561     var tbr = createVector( 10,  10,  10);\r
37562     var bfl = createVector(-10, -10, -10);\r
37563     var bfr = createVector( 10, -10, -10);\r
37564     var bbl = createVector(-10, -10,  10);\r
37565     var bbr = createVector( 10, -10,  10);\r
37566     \r
37567     // cube!!!\r
37568     // front\r
37569     var i = 0;\r
37570     \r
37571     triangles[i++] = new Triangle(tfl, tfr, bfr);\r
37572     triangles[i++] = new Triangle(tfl, bfr, bfl);\r
37573     // back\r
37574     triangles[i++] = new Triangle(tbl, tbr, bbr);\r
37575     triangles[i++] = new Triangle(tbl, bbr, bbl);\r
37576     //        triangles[i-1].material = [0.7,0.2,0.2];\r
37577     //            triangles[i-1].material.reflection = 0.8;\r
37578     // left\r
37579     triangles[i++] = new Triangle(tbl, tfl, bbl);\r
37580     //            triangles[i-1].reflection = 0.6;\r
37581     triangles[i++] = new Triangle(tfl, bfl, bbl);\r
37582     //            triangles[i-1].reflection = 0.6;\r
37583     // right\r
37584     triangles[i++] = new Triangle(tbr, tfr, bbr);\r
37585     triangles[i++] = new Triangle(tfr, bfr, bbr);\r
37586     // top\r
37587     triangles[i++] = new Triangle(tbl, tbr, tfr);\r
37588     triangles[i++] = new Triangle(tbl, tfr, tfl);\r
37589     // bottom\r
37590     triangles[i++] = new Triangle(bbl, bbr, bfr);\r
37591     triangles[i++] = new Triangle(bbl, bfr, bfl);\r
37592     \r
37593     //Floor!!!!\r
37594     var green = createVector(0.0, 0.4, 0.0);\r
37595     var grey = createVector(0.4, 0.4, 0.4);\r
37596     grey.reflection = 1.0;\r
37597     var floorShader = function(tri, pos, view) {\r
37598         var x = ((pos[0]/32) % 2 + 2) % 2;\r
37599         var z = ((pos[2]/32 + 0.3) % 2 + 2) % 2;\r
37600         if (x < 1 != z < 1) {\r
37601             //in the real world we use the fresnel term...\r
37602             //    var angle = 1-dot(view, tri.normal);\r
37603             //   angle *= angle;\r
37604             //  angle *= angle;\r
37605             // angle *= angle;\r
37606             //grey.reflection = angle;\r
37607             return grey;\r
37608         } else \r
37609             return green;\r
37610     }\r
37611     var ffl = createVector(-1000, -30, -1000);\r
37612     var ffr = createVector( 1000, -30, -1000);\r
37613     var fbl = createVector(-1000, -30,  1000);\r
37614     var fbr = createVector( 1000, -30,  1000);\r
37615     triangles[i++] = new Triangle(fbl, fbr, ffr);\r
37616     triangles[i-1].shader = floorShader;\r
37617     triangles[i++] = new Triangle(fbl, ffr, ffl);\r
37618     triangles[i-1].shader = floorShader;\r
37619     \r
37620     var _scene = new Scene(triangles);\r
37621     _scene.lights[0] = createVector(20, 38, -22);\r
37622     _scene.lights[0].colour = createVector(0.7, 0.3, 0.3);\r
37623     _scene.lights[1] = createVector(-23, 40, 17);\r
37624     _scene.lights[1].colour = createVector(0.7, 0.3, 0.3);\r
37625     _scene.lights[2] = createVector(23, 20, 17);\r
37626     _scene.lights[2].colour = createVector(0.7, 0.7, 0.7);\r
37627     _scene.ambient = createVector(0.1, 0.1, 0.1);\r
37628     //  _scene.background = createVector(0.7, 0.7, 1.0);\r
37629     \r
37630     var size = 30;\r
37631     var pixels = new Array();\r
37632     for (var y = 0; y < size; y++) {\r
37633         pixels[y] = new Array();\r
37634         for (var x = 0; x < size; x++) {\r
37635             pixels[y][x] = 0;\r
37636         }\r
37637     }\r
37638 \r
37639     var _camera = new Camera(createVector(-40, 40, 40), createVector(0, 0, 0), createVector(0, 1, 0));\r
37640     _camera.render(_scene, pixels, size, size);\r
37641 \r
37642     return pixels;\r
37643 }\r
37644 \r
37645 function arrayToCanvasCommands(pixels)\r
37646 {\r
37647     var s = '<canvas id="renderCanvas" width="30px" height="30px"></canvas><scr' + 'ipt>\nvar pixels = [';\r
37648     var size = 30;\r
37649     for (var y = 0; y < size; y++) {\r
37650         s += "[";\r
37651         for (var x = 0; x < size; x++) {\r
37652             s += "[" + pixels[y][x] + "],";\r
37653         }\r
37654         s+= "],";\r
37655     }\r
37656     s += '];\n    var canvas = document.getElementById("renderCanvas").getContext("2d");\n\\r
37657 \n\\r
37658 \n\\r
37659     var size = 30;\n\\r
37660     canvas.fillStyle = "red";\n\\r
37661     canvas.fillRect(0, 0, size, size);\n\\r
37662     canvas.scale(1, -1);\n\\r
37663     canvas.translate(0, -size);\n\\r
37664 \n\\r
37665     if (!canvas.setFillColor)\n\\r
37666         canvas.setFillColor = function(r, g, b, a) {\n\\r
37667             this.fillStyle = "rgb("+[Math.floor(r * 255), Math.floor(g * 255), Math.floor(b * 255)]+")";\n\\r
37668     }\n\\r
37669 \n\\r
37670 for (var y = 0; y < size; y++) {\n\\r
37671   for (var x = 0; x < size; x++) {\n\\r
37672     var l = pixels[y][x];\n\\r
37673     canvas.setFillColor(l[0], l[1], l[2], 1);\n\\r
37674     canvas.fillRect(x, y, 1, 1);\n\\r
37675   }\n\\r
37676 }</scr' + 'ipt>';\r
37677 \r
37678     return s;\r
37679 }\r
37680 \r
37681 testOutput = arrayToCanvasCommands(raytraceScene());\r
37682 /* The Great Computer Language Shootout\r
37683    http://shootout.alioth.debian.org/\r
37684    contributed by Isaac Gouy */\r
37685 \r
37686 function TreeNode(left,right,item){\r
37687    this.left = left;\r
37688    this.right = right;\r
37689    this.item = item;\r
37690 }\r
37691 \r
37692 TreeNode.prototype.itemCheck = function(){\r
37693    if (this.left==null) return this.item;\r
37694    else return this.item + this.left.itemCheck() - this.right.itemCheck();\r
37695 }\r
37696 \r
37697 function bottomUpTree(item,depth){\r
37698    if (depth>0){\r
37699       return new TreeNode(\r
37700           bottomUpTree(2*item-1, depth-1)\r
37701          ,bottomUpTree(2*item, depth-1)\r
37702          ,item\r
37703       );\r
37704    }\r
37705    else {\r
37706       return new TreeNode(null,null,item);\r
37707    }\r
37708 }\r
37709 \r
37710 var ret;\r
37711 \r
37712 for ( var n = 4; n <= 7; n += 1 ) {\r
37713     var minDepth = 4;\r
37714     var maxDepth = Math.max(minDepth + 2, n);\r
37715     var stretchDepth = maxDepth + 1;\r
37716     \r
37717     var check = bottomUpTree(0,stretchDepth).itemCheck();\r
37718     \r
37719     var longLivedTree = bottomUpTree(0,maxDepth);\r
37720     for (var depth=minDepth; depth<=maxDepth; depth+=2){\r
37721         var iterations = 1 << (maxDepth - depth + minDepth);\r
37722 \r
37723         check = 0;\r
37724         for (var i=1; i<=iterations; i++){\r
37725             check += bottomUpTree(i,depth).itemCheck();\r
37726             check += bottomUpTree(-i,depth).itemCheck();\r
37727         }\r
37728     }\r
37729 \r
37730     ret = longLivedTree.itemCheck();\r
37731 }\r
37732 /* The Great Computer Language Shootout\r
37733    http://shootout.alioth.debian.org/\r
37734    contributed by Isaac Gouy */\r
37735 \r
37736 function fannkuch(n) {\r
37737    var check = 0;\r
37738    var perm = Array(n);\r
37739    var perm1 = Array(n);\r
37740    var count = Array(n);\r
37741    var maxPerm = Array(n);\r
37742    var maxFlipsCount = 0;\r
37743    var m = n - 1;\r
37744 \r
37745    for (var i = 0; i < n; i++) perm1[i] = i;\r
37746    var r = n;\r
37747 \r
37748    while (true) {\r
37749       // write-out the first 30 permutations\r
37750       if (check < 30){\r
37751          var s = "";\r
37752          for(var i=0; i<n; i++) s += (perm1[i]+1).toString();\r
37753          check++;\r
37754       }\r
37755 \r
37756       while (r != 1) { count[r - 1] = r; r--; }\r
37757       if (!(perm1[0] == 0 || perm1[m] == m)) {\r
37758          for (var i = 0; i < n; i++) perm[i] = perm1[i];\r
37759 \r
37760          var flipsCount = 0;\r
37761          var k;\r
37762 \r
37763          while (!((k = perm[0]) == 0)) {\r
37764             var k2 = (k + 1) >> 1;\r
37765             for (var i = 0; i < k2; i++) {\r
37766                var temp = perm[i]; perm[i] = perm[k - i]; perm[k - i] = temp;\r
37767             }\r
37768             flipsCount++;\r
37769          }\r
37770 \r
37771          if (flipsCount > maxFlipsCount) {\r
37772             maxFlipsCount = flipsCount;\r
37773             for (var i = 0; i < n; i++) maxPerm[i] = perm1[i];\r
37774          }\r
37775       }\r
37776 \r
37777       while (true) {\r
37778          if (r == n) return maxFlipsCount;\r
37779          var perm0 = perm1[0];\r
37780          var i = 0;\r
37781          while (i < r) {\r
37782             var j = i + 1;\r
37783             perm1[i] = perm1[j];\r
37784             i = j;\r
37785          }\r
37786          perm1[r] = perm0;\r
37787 \r
37788          count[r] = count[r] - 1;\r
37789          if (count[r] > 0) break;\r
37790          r++;\r
37791       }\r
37792    }\r
37793 }\r
37794 \r
37795 var n = 8;\r
37796 var ret = fannkuch(n);\r
37797 \r
37798 /* The Great Computer Language Shootout\r
37799    http://shootout.alioth.debian.org/\r
37800    contributed by Isaac Gouy */\r
37801 \r
37802 var PI = 3.141592653589793;\r
37803 var SOLAR_MASS = 4 * PI * PI;\r
37804 var DAYS_PER_YEAR = 365.24;\r
37805 \r
37806 function Body(x,y,z,vx,vy,vz,mass){\r
37807    this.x = x;\r
37808    this.y = y;\r
37809    this.z = z;\r
37810    this.vx = vx;\r
37811    this.vy = vy;\r
37812    this.vz = vz;\r
37813    this.mass = mass;\r
37814 }\r
37815 \r
37816 Body.prototype.offsetMomentum = function(px,py,pz) {\r
37817    this.vx = -px / SOLAR_MASS;\r
37818    this.vy = -py / SOLAR_MASS;\r
37819    this.vz = -pz / SOLAR_MASS;\r
37820    return this;\r
37821 }\r
37822 \r
37823 function Jupiter(){\r
37824    return new Body(\r
37825       4.84143144246472090e+00,\r
37826       -1.16032004402742839e+00,\r
37827       -1.03622044471123109e-01,\r
37828       1.66007664274403694e-03 * DAYS_PER_YEAR,\r
37829       7.69901118419740425e-03 * DAYS_PER_YEAR,\r
37830       -6.90460016972063023e-05 * DAYS_PER_YEAR,\r
37831       9.54791938424326609e-04 * SOLAR_MASS\r
37832    );\r
37833 }\r
37834 \r
37835 function Saturn(){\r
37836    return new Body(\r
37837       8.34336671824457987e+00,\r
37838       4.12479856412430479e+00,\r
37839       -4.03523417114321381e-01,\r
37840       -2.76742510726862411e-03 * DAYS_PER_YEAR,\r
37841       4.99852801234917238e-03 * DAYS_PER_YEAR,\r
37842       2.30417297573763929e-05 * DAYS_PER_YEAR,\r
37843       2.85885980666130812e-04 * SOLAR_MASS\r
37844    );\r
37845 }\r
37846 \r
37847 function Uranus(){\r
37848    return new Body(\r
37849       1.28943695621391310e+01,\r
37850       -1.51111514016986312e+01,\r
37851       -2.23307578892655734e-01,\r
37852       2.96460137564761618e-03 * DAYS_PER_YEAR,\r
37853       2.37847173959480950e-03 * DAYS_PER_YEAR,\r
37854       -2.96589568540237556e-05 * DAYS_PER_YEAR,\r
37855       4.36624404335156298e-05 * SOLAR_MASS\r
37856    );\r
37857 }\r
37858 \r
37859 function Neptune(){\r
37860    return new Body(\r
37861       1.53796971148509165e+01,\r
37862       -2.59193146099879641e+01,\r
37863       1.79258772950371181e-01,\r
37864       2.68067772490389322e-03 * DAYS_PER_YEAR,\r
37865       1.62824170038242295e-03 * DAYS_PER_YEAR,\r
37866       -9.51592254519715870e-05 * DAYS_PER_YEAR,\r
37867       5.15138902046611451e-05 * SOLAR_MASS\r
37868    );\r
37869 }\r
37870 \r
37871 function Sun(){\r
37872    return new Body(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SOLAR_MASS);\r
37873 }\r
37874 \r
37875 \r
37876 function NBodySystem(bodies){\r
37877    this.bodies = bodies;\r
37878    var px = 0.0;\r
37879    var py = 0.0;\r
37880    var pz = 0.0;\r
37881    var size = this.bodies.length;\r
37882    for (var i=0; i<size; i++){\r
37883       var b = this.bodies[i];\r
37884       var m = b.mass;\r
37885       px += b.vx * m;\r
37886       py += b.vy * m;\r
37887       pz += b.vz * m;\r
37888    }\r
37889    this.bodies[0].offsetMomentum(px,py,pz);\r
37890 }\r
37891 \r
37892 NBodySystem.prototype.advance = function(dt){\r
37893    var dx, dy, dz, distance, mag;\r
37894    var size = this.bodies.length;\r
37895 \r
37896    for (var i=0; i<size; i++) {\r
37897       var bodyi = this.bodies[i];\r
37898       for (var j=i+1; j<size; j++) {\r
37899          var bodyj = this.bodies[j];\r
37900          dx = bodyi.x - bodyj.x;\r
37901          dy = bodyi.y - bodyj.y;\r
37902          dz = bodyi.z - bodyj.z;\r
37903 \r
37904          distance = Math.sqrt(dx*dx + dy*dy + dz*dz);\r
37905          mag = dt / (distance * distance * distance);\r
37906 \r
37907          bodyi.vx -= dx * bodyj.mass * mag;\r
37908          bodyi.vy -= dy * bodyj.mass * mag;\r
37909          bodyi.vz -= dz * bodyj.mass * mag;\r
37910 \r
37911          bodyj.vx += dx * bodyi.mass * mag;\r
37912          bodyj.vy += dy * bodyi.mass * mag;\r
37913          bodyj.vz += dz * bodyi.mass * mag;\r
37914       }\r
37915    }\r
37916 \r
37917    for (var i=0; i<size; i++) {\r
37918       var body = this.bodies[i];\r
37919       body.x += dt * body.vx;\r
37920       body.y += dt * body.vy;\r
37921       body.z += dt * body.vz;\r
37922    }\r
37923 }\r
37924 \r
37925 NBodySystem.prototype.energy = function(){\r
37926    var dx, dy, dz, distance;\r
37927    var e = 0.0;\r
37928    var size = this.bodies.length;\r
37929 \r
37930    for (var i=0; i<size; i++) {\r
37931       var bodyi = this.bodies[i];\r
37932 \r
37933       e += 0.5 * bodyi.mass *\r
37934          ( bodyi.vx * bodyi.vx\r
37935          + bodyi.vy * bodyi.vy\r
37936          + bodyi.vz * bodyi.vz );\r
37937 \r
37938       for (var j=i+1; j<size; j++) {\r
37939          var bodyj = this.bodies[j];\r
37940          dx = bodyi.x - bodyj.x;\r
37941          dy = bodyi.y - bodyj.y;\r
37942          dz = bodyi.z - bodyj.z;\r
37943 \r
37944          distance = Math.sqrt(dx*dx + dy*dy + dz*dz);\r
37945          e -= (bodyi.mass * bodyj.mass) / distance;\r
37946       }\r
37947    }\r
37948    return e;\r
37949 }\r
37950 \r
37951 var ret;\r
37952 \r
37953 for ( var n = 3; n <= 24; n *= 2 ) {\r
37954     (function(){\r
37955         var bodies = new NBodySystem( Array(\r
37956            Sun(),Jupiter(),Saturn(),Uranus(),Neptune()\r
37957         ));\r
37958         var max = n * 100;\r
37959         \r
37960         ret = bodies.energy();\r
37961         for (var i=0; i<max; i++){\r
37962             bodies.advance(0.01);\r
37963         }\r
37964         ret = bodies.energy();\r
37965     })();\r
37966 }\r
37967 // The Great Computer Language Shootout\r
37968 // http://shootout.alioth.debian.org/\r
37969 //\r
37970 // modified by Isaac Gouy\r
37971 \r
37972 function pad(number,width){\r
37973    var s = number.toString();\r
37974    var prefixWidth = width - s.length;\r
37975    if (prefixWidth>0){\r
37976       for (var i=1; i<=prefixWidth; i++) s = " " + s;\r
37977    }\r
37978    return s;\r
37979 }\r
37980 \r
37981 function nsieve(m, isPrime){\r
37982    var i, k, count;\r
37983 \r
37984    for (i=2; i<=m; i++) { isPrime[i] = true; }\r
37985    count = 0;\r
37986 \r
37987    for (i=2; i<=m; i++){\r
37988       if (isPrime[i]) {\r
37989          for (k=i+i; k<=m; k+=i) isPrime[k] = false;\r
37990          count++;\r
37991       }\r
37992    }\r
37993    return count;\r
37994 }\r
37995 \r
37996 function sieve() {\r
37997     for (var i = 1; i <= 3; i++ ) {\r
37998         var m = (1<<i)*10000;\r
37999         var flags = Array(m+1);\r
38000         nsieve(m, flags);\r
38001     }\r
38002 }\r
38003 \r
38004 sieve();\r
38005 // Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com\r
38006 \r
38007 // 1 op = 6 ANDs, 3 SHRs, 3 SHLs, 4 assigns, 2 ADDs\r
38008 // O(1)\r
38009 function fast3bitlookup(b) {\r
38010 var c, bi3b = 0xE994; // 0b1110 1001 1001 0100; // 3 2 2 1  2 1 1 0\r
38011 c  = 3 & (bi3b >> ((b << 1) & 14));\r
38012 c += 3 & (bi3b >> ((b >> 2) & 14));\r
38013 c += 3 & (bi3b >> ((b >> 5) & 6));\r
38014 return c;\r
38015 \r
38016 /*\r
38017 lir4,0xE994; 9 instructions, no memory access, minimal register dependence, 6 shifts, 2 adds, 1 inline assign\r
38018 rlwinmr5,r3,1,28,30\r
38019 rlwinmr6,r3,30,28,30\r
38020 rlwinmr7,r3,27,29,30\r
38021 rlwnmr8,r4,r5,30,31\r
38022 rlwnmr9,r4,r6,30,31\r
38023 rlwnmr10,r4,r7,30,31\r
38024 addr3,r8,r9\r
38025 addr3,r3,r10\r
38026 */\r
38027 }\r
38028 \r
38029 \r
38030 function TimeFunc(func) {\r
38031 var x, y, t;\r
38032 for(var x=0; x<500; x++)\r
38033 for(var y=0; y<256; y++) func(y);\r
38034 }\r
38035 \r
38036 TimeFunc(fast3bitlookup);\r
38037 // Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com)\r
38038 \r
38039 \r
38040 // 1 op = 2 assigns, 16 compare/branches, 8 ANDs, (0-8) ADDs, 8 SHLs\r
38041 // O(n)\r
38042 function bitsinbyte(b) {\r
38043 var m = 1, c = 0;\r
38044 while(m<0x100) {\r
38045 if(b & m) c++;\r
38046 m <<= 1;\r
38047 }\r
38048 return c;\r
38049 }\r
38050 \r
38051 function TimeFunc(func) {\r
38052 var x, y, t;\r
38053 for(var x=0; x<350; x++)\r
38054 for(var y=0; y<256; y++) func(y);\r
38055 }\r
38056 \r
38057 TimeFunc(bitsinbyte);\r
38058 /*\r
38059  * Copyright (C) 2007 Apple Inc.  All rights reserved.\r
38060  *\r
38061  * Redistribution and use in source and binary forms, with or without\r
38062  * modification, are permitted provided that the following conditions\r
38063  * are met:\r
38064  * 1. Redistributions of source code must retain the above copyright\r
38065  *    notice, this list of conditions and the following disclaimer.\r
38066  * 2. Redistributions in binary form must reproduce the above copyright\r
38067  *    notice, this list of conditions and the following disclaimer in the\r
38068  *    documentation and/or other materials provided with the distribution.\r
38069  *\r
38070  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY\r
38071  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
38072  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
38073  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR\r
38074  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
38075  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
38076  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\r
38077  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r
38078  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
38079  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
38080  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \r
38081  */\r
38082 \r
38083 bitwiseAndValue = 4294967296;\r
38084 for (var i = 0; i < 600000; i++)\r
38085     bitwiseAndValue = bitwiseAndValue & i;\r
38086 // The Great Computer Language Shootout\r
38087 //  http://shootout.alioth.debian.org\r
38088 //\r
38089 //  Contributed by Ian Osgood\r
38090 \r
38091 function pad(n,width) {\r
38092   var s = n.toString();\r
38093   while (s.length < width) s = ' ' + s;\r
38094   return s;\r
38095 }\r
38096 \r
38097 function primes(isPrime, n) {\r
38098   var i, count = 0, m = 10000<<n, size = m+31>>5;\r
38099 \r
38100   for (i=0; i<size; i++) isPrime[i] = 0xffffffff;\r
38101 \r
38102   for (i=2; i<m; i++)\r
38103     if (isPrime[i>>5] & 1<<(i&31)) {\r
38104       for (var j=i+i; j<m; j+=i)\r
38105         isPrime[j>>5] &= ~(1<<(j&31));\r
38106       count++;\r
38107     }\r
38108 }\r
38109 \r
38110 function sieve() {\r
38111     for (var i = 4; i <= 4; i++) {\r
38112         var isPrime = new Array((10000<<i)+31>>5);\r
38113         primes(isPrime, i);\r
38114     }\r
38115 }\r
38116 \r
38117 sieve();\r
38118 // The Computer Language Shootout\r
38119 // http://shootout.alioth.debian.org/\r
38120 // contributed by Isaac Gouy\r
38121 \r
38122 function ack(m,n){\r
38123    if (m==0) { return n+1; }\r
38124    if (n==0) { return ack(m-1,1); }\r
38125    return ack(m-1, ack(m,n-1) );\r
38126 }\r
38127 \r
38128 function fib(n) {\r
38129     if (n < 2){ return 1; }\r
38130     return fib(n-2) + fib(n-1);\r
38131 }\r
38132 \r
38133 function tak(x,y,z) {\r
38134     if (y >= x) return z;\r
38135     return tak(tak(x-1,y,z), tak(y-1,z,x), tak(z-1,x,y));\r
38136 }\r
38137 \r
38138 for ( var i = 3; i <= 5; i++ ) {\r
38139     ack(3,i);\r
38140     fib(17.0+i);\r
38141     tak(3*i+3,2*i+2,i+1);\r
38142 }\r
38143 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\r
38144 \r
38145 /*\r
38146  * AES Cipher function: encrypt 'input' with Rijndael algorithm\r
38147  *\r
38148  *   takes   byte-array 'input' (16 bytes)\r
38149  *           2D byte-array key schedule 'w' (Nr+1 x Nb bytes)\r
38150  *\r
38151  *   applies Nr rounds (10/12/14) using key schedule w for 'add round key' stage\r
38152  *\r
38153  *   returns byte-array encrypted value (16 bytes)\r
38154  */\r
38155 function Cipher(input, w) {    // main Cipher function [§5.1]\r
38156   var Nb = 4;               // block size (in words): no of columns in state (fixed at 4 for AES)\r
38157   var Nr = w.length/Nb - 1; // no of rounds: 10/12/14 for 128/192/256-bit keys\r
38158 \r
38159   var state = [[],[],[],[]];  // initialise 4xNb byte-array 'state' with input [§3.4]\r
38160   for (var i=0; i<4*Nb; i++) state[i%4][Math.floor(i/4)] = input[i];\r
38161 \r
38162   state = AddRoundKey(state, w, 0, Nb);\r
38163 \r
38164   for (var round=1; round<Nr; round++) {\r
38165     state = SubBytes(state, Nb);\r
38166     state = ShiftRows(state, Nb);\r
38167     state = MixColumns(state, Nb);\r
38168     state = AddRoundKey(state, w, round, Nb);\r
38169   }\r
38170 \r
38171   state = SubBytes(state, Nb);\r
38172   state = ShiftRows(state, Nb);\r
38173   state = AddRoundKey(state, w, Nr, Nb);\r
38174 \r
38175   var output = new Array(4*Nb);  // convert state to 1-d array before returning [§3.4]\r
38176   for (var i=0; i<4*Nb; i++) output[i] = state[i%4][Math.floor(i/4)];\r
38177   return output;\r
38178 }\r
38179 \r
38180 \r
38181 function SubBytes(s, Nb) {    // apply SBox to state S [§5.1.1]\r
38182   for (var r=0; r<4; r++) {\r
38183     for (var c=0; c<Nb; c++) s[r][c] = Sbox[s[r][c]];\r
38184   }\r
38185   return s;\r
38186 }\r
38187 \r
38188 \r
38189 function ShiftRows(s, Nb) {    // shift row r of state S left by r bytes [§5.1.2]\r
38190   var t = new Array(4);\r
38191   for (var r=1; r<4; r++) {\r
38192     for (var c=0; c<4; c++) t[c] = s[r][(c+r)%Nb];  // shift into temp copy\r
38193     for (var c=0; c<4; c++) s[r][c] = t[c];         // and copy back\r
38194   }          // note that this will work for Nb=4,5,6, but not 7,8 (always 4 for AES):\r
38195   return s;  // see fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.311.pdf \r
38196 }\r
38197 \r
38198 \r
38199 function MixColumns(s, Nb) {   // combine bytes of each col of state S [§5.1.3]\r
38200   for (var c=0; c<4; c++) {\r
38201     var a = new Array(4);  // 'a' is a copy of the current column from 's'\r
38202     var b = new Array(4);  // 'b' is a•{02} in GF(2^8)\r
38203     for (var i=0; i<4; i++) {\r
38204       a[i] = s[i][c];\r
38205       b[i] = s[i][c]&0x80 ? s[i][c]<<1 ^ 0x011b : s[i][c]<<1;\r
38206     }\r
38207     // a[n] ^ b[n] is a•{03} in GF(2^8)\r
38208     s[0][c] = b[0] ^ a[1] ^ b[1] ^ a[2] ^ a[3]; // 2*a0 + 3*a1 + a2 + a3\r
38209     s[1][c] = a[0] ^ b[1] ^ a[2] ^ b[2] ^ a[3]; // a0 * 2*a1 + 3*a2 + a3\r
38210     s[2][c] = a[0] ^ a[1] ^ b[2] ^ a[3] ^ b[3]; // a0 + a1 + 2*a2 + 3*a3\r
38211     s[3][c] = a[0] ^ b[0] ^ a[1] ^ a[2] ^ b[3]; // 3*a0 + a1 + a2 + 2*a3\r
38212   }\r
38213   return s;\r
38214 }\r
38215 \r
38216 \r
38217 function AddRoundKey(state, w, rnd, Nb) {  // xor Round Key into state S [§5.1.4]\r
38218   for (var r=0; r<4; r++) {\r
38219     for (var c=0; c<Nb; c++) state[r][c] ^= w[rnd*4+c][r];\r
38220   }\r
38221   return state;\r
38222 }\r
38223 \r
38224 \r
38225 function KeyExpansion(key) {  // generate Key Schedule (byte-array Nr+1 x Nb) from Key [§5.2]\r
38226   var Nb = 4;            // block size (in words): no of columns in state (fixed at 4 for AES)\r
38227   var Nk = key.length/4  // key length (in words): 4/6/8 for 128/192/256-bit keys\r
38228   var Nr = Nk + 6;       // no of rounds: 10/12/14 for 128/192/256-bit keys\r
38229 \r
38230   var w = new Array(Nb*(Nr+1));\r
38231   var temp = new Array(4);\r
38232 \r
38233   for (var i=0; i<Nk; i++) {\r
38234     var r = [key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]];\r
38235     w[i] = r;\r
38236   }\r
38237 \r
38238   for (var i=Nk; i<(Nb*(Nr+1)); i++) {\r
38239     w[i] = new Array(4);\r
38240     for (var t=0; t<4; t++) temp[t] = w[i-1][t];\r
38241     if (i % Nk == 0) {\r
38242       temp = SubWord(RotWord(temp));\r
38243       for (var t=0; t<4; t++) temp[t] ^= Rcon[i/Nk][t];\r
38244     } else if (Nk > 6 && i%Nk == 4) {\r
38245       temp = SubWord(temp);\r
38246     }\r
38247     for (var t=0; t<4; t++) w[i][t] = w[i-Nk][t] ^ temp[t];\r
38248   }\r
38249 \r
38250   return w;\r
38251 }\r
38252 \r
38253 function SubWord(w) {    // apply SBox to 4-byte word w\r
38254   for (var i=0; i<4; i++) w[i] = Sbox[w[i]];\r
38255   return w;\r
38256 }\r
38257 \r
38258 function RotWord(w) {    // rotate 4-byte word w left by one byte\r
38259   w[4] = w[0];\r
38260   for (var i=0; i<4; i++) w[i] = w[i+1];\r
38261   return w;\r
38262 }\r
38263 \r
38264 \r
38265 // Sbox is pre-computed multiplicative inverse in GF(2^8) used in SubBytes and KeyExpansion [§5.1.1]\r
38266 var Sbox =  [0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,\r
38267              0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,\r
38268              0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,\r
38269              0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,\r
38270              0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,\r
38271              0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,\r
38272              0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,\r
38273              0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,\r
38274              0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,\r
38275              0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,\r
38276              0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,\r
38277              0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,\r
38278              0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,\r
38279              0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,\r
38280              0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,\r
38281              0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16];\r
38282 \r
38283 // Rcon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [§5.2]\r
38284 var Rcon = [ [0x00, 0x00, 0x00, 0x00],\r
38285              [0x01, 0x00, 0x00, 0x00],\r
38286              [0x02, 0x00, 0x00, 0x00],\r
38287              [0x04, 0x00, 0x00, 0x00],\r
38288              [0x08, 0x00, 0x00, 0x00],\r
38289              [0x10, 0x00, 0x00, 0x00],\r
38290              [0x20, 0x00, 0x00, 0x00],\r
38291              [0x40, 0x00, 0x00, 0x00],\r
38292              [0x80, 0x00, 0x00, 0x00],\r
38293              [0x1b, 0x00, 0x00, 0x00],\r
38294              [0x36, 0x00, 0x00, 0x00] ]; \r
38295 \r
38296 \r
38297 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\r
38298 \r
38299 /* \r
38300  * Use AES to encrypt 'plaintext' with 'password' using 'nBits' key, in 'Counter' mode of operation\r
38301  *                           - see http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf\r
38302  *   for each block\r
38303  *   - outputblock = cipher(counter, key)\r
38304  *   - cipherblock = plaintext xor outputblock\r
38305  */\r
38306 function AESEncryptCtr(plaintext, password, nBits) {\r
38307   if (!(nBits==128 || nBits==192 || nBits==256)) return '';  // standard allows 128/192/256 bit keys\r
38308 \r
38309   // for this example script, generate the key by applying Cipher to 1st 16/24/32 chars of password; \r
38310   // for real-world applications, a more secure approach would be to hash the password e.g. with SHA-1\r
38311   var nBytes = nBits/8;  // no bytes in key\r
38312   var pwBytes = new Array(nBytes);\r
38313   for (var i=0; i<nBytes; i++) pwBytes[i] = password.charCodeAt(i) & 0xff;\r
38314   var key = Cipher(pwBytes, KeyExpansion(pwBytes));\r
38315   key = key.concat(key.slice(0, nBytes-16));  // key is now 16/24/32 bytes long\r
38316 \r
38317   // initialise counter block (NIST SP800-38A Â§B.2): millisecond time-stamp for nonce in 1st 8 bytes,\r
38318   // block counter in 2nd 8 bytes\r
38319   var blockSize = 16;  // block size fixed at 16 bytes / 128 bits (Nb=4) for AES\r
38320   var counterBlock = new Array(blockSize);  // block size fixed at 16 bytes / 128 bits (Nb=4) for AES\r
38321   var nonce = (new Date()).getTime();  // milliseconds since 1-Jan-1970\r
38322 \r
38323   // encode nonce in two stages to cater for JavaScript 32-bit limit on bitwise ops\r
38324   for (var i=0; i<4; i++) counterBlock[i] = (nonce >>> i*8) & 0xff;\r
38325   for (var i=0; i<4; i++) counterBlock[i+4] = (nonce/0x100000000 >>> i*8) & 0xff; \r
38326 \r
38327   // generate key schedule - an expansion of the key into distinct Key Rounds for each round\r
38328   var keySchedule = KeyExpansion(key);\r
38329 \r
38330   var blockCount = Math.ceil(plaintext.length/blockSize);\r
38331   var ciphertext = new Array(blockCount);  // ciphertext as array of strings\r
38332   \r
38333   for (var b=0; b<blockCount; b++) {\r
38334     // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)\r
38335     // again done in two stages for 32-bit ops\r
38336     for (var c=0; c<4; c++) counterBlock[15-c] = (b >>> c*8) & 0xff;\r
38337     for (var c=0; c<4; c++) counterBlock[15-c-4] = (b/0x100000000 >>> c*8)\r
38338 \r
38339     var cipherCntr = Cipher(counterBlock, keySchedule);  // -- encrypt counter block --\r
38340     \r
38341     // calculate length of final block:\r
38342     var blockLength = b<blockCount-1 ? blockSize : (plaintext.length-1)%blockSize+1;\r
38343 \r
38344     var ct = '';\r
38345     for (var i=0; i<blockLength; i++) {  // -- xor plaintext with ciphered counter byte-by-byte --\r
38346       var plaintextByte = plaintext.charCodeAt(b*blockSize+i);\r
38347       var cipherByte = plaintextByte ^ cipherCntr[i];\r
38348       ct += String.fromCharCode(cipherByte);\r
38349     }\r
38350     // ct is now ciphertext for this block\r
38351 \r
38352     ciphertext[b] = escCtrlChars(ct);  // escape troublesome characters in ciphertext\r
38353   }\r
38354 \r
38355   // convert the nonce to a string to go on the front of the ciphertext\r
38356   var ctrTxt = '';\r
38357   for (var i=0; i<8; i++) ctrTxt += String.fromCharCode(counterBlock[i]);\r
38358   ctrTxt = escCtrlChars(ctrTxt);\r
38359 \r
38360   // use '-' to separate blocks, use Array.join to concatenate arrays of strings for efficiency\r
38361   return ctrTxt + '-' + ciphertext.join('-');\r
38362 }\r
38363 \r
38364 \r
38365 /* \r
38366  * Use AES to decrypt 'ciphertext' with 'password' using 'nBits' key, in Counter mode of operation\r
38367  *\r
38368  *   for each block\r
38369  *   - outputblock = cipher(counter, key)\r
38370  *   - cipherblock = plaintext xor outputblock\r
38371  */\r
38372 function AESDecryptCtr(ciphertext, password, nBits) {\r
38373   if (!(nBits==128 || nBits==192 || nBits==256)) return '';  // standard allows 128/192/256 bit keys\r
38374 \r
38375   var nBytes = nBits/8;  // no bytes in key\r
38376   var pwBytes = new Array(nBytes);\r
38377   for (var i=0; i<nBytes; i++) pwBytes[i] = password.charCodeAt(i) & 0xff;\r
38378   var pwKeySchedule = KeyExpansion(pwBytes);\r
38379   var key = Cipher(pwBytes, pwKeySchedule);\r
38380   key = key.concat(key.slice(0, nBytes-16));  // key is now 16/24/32 bytes long\r
38381 \r
38382   var keySchedule = KeyExpansion(key);\r
38383 \r
38384   ciphertext = ciphertext.split('-');  // split ciphertext into array of block-length strings \r
38385 \r
38386   // recover nonce from 1st element of ciphertext\r
38387   var blockSize = 16;  // block size fixed at 16 bytes / 128 bits (Nb=4) for AES\r
38388   var counterBlock = new Array(blockSize);\r
38389   var ctrTxt = unescCtrlChars(ciphertext[0]);\r
38390   for (var i=0; i<8; i++) counterBlock[i] = ctrTxt.charCodeAt(i);\r
38391 \r
38392   var plaintext = new Array(ciphertext.length-1);\r
38393 \r
38394   for (var b=1; b<ciphertext.length; b++) {\r
38395     // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)\r
38396     for (var c=0; c<4; c++) counterBlock[15-c] = ((b-1) >>> c*8) & 0xff;\r
38397     for (var c=0; c<4; c++) counterBlock[15-c-4] = ((b/0x100000000-1) >>> c*8) & 0xff;\r
38398 \r
38399     var cipherCntr = Cipher(counterBlock, keySchedule);  // encrypt counter block\r
38400 \r
38401     ciphertext[b] = unescCtrlChars(ciphertext[b]);\r
38402 \r
38403     var pt = '';\r
38404     for (var i=0; i<ciphertext[b].length; i++) {\r
38405       // -- xor plaintext with ciphered counter byte-by-byte --\r
38406       var ciphertextByte = ciphertext[b].charCodeAt(i);\r
38407       var plaintextByte = ciphertextByte ^ cipherCntr[i];\r
38408       pt += String.fromCharCode(plaintextByte);\r
38409     }\r
38410     // pt is now plaintext for this block\r
38411 \r
38412     plaintext[b-1] = pt;  // b-1 'cos no initial nonce block in plaintext\r
38413   }\r
38414 \r
38415   return plaintext.join('');\r
38416 }\r
38417 \r
38418 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\r
38419 \r
38420 function escCtrlChars(str) {  // escape control chars which might cause problems handling ciphertext\r
38421   return str.replace(/[\0\t\n\v\f\r\xa0'"!-]/g, function(c) { return '!' + c.charCodeAt(0) + '!'; });\r
38422 }  // \xa0 to cater for bug in Firefox; include '-' to leave it free for use as a block marker\r
38423 \r
38424 function unescCtrlChars(str) {  // unescape potentially problematic control characters\r
38425   return str.replace(/!\d\d?\d?!/g, function(c) { return String.fromCharCode(c.slice(1,-1)); });\r
38426 }\r
38427 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\r
38428 \r
38429 /*\r
38430  * if escCtrlChars()/unescCtrlChars() still gives problems, use encodeBase64()/decodeBase64() instead\r
38431  */\r
38432 var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";\r
38433 \r
38434 function encodeBase64(str) {  // http://tools.ietf.org/html/rfc4648\r
38435    var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';\r
38436    \r
38437    str = encodeUTF8(str);  // encode multi-byte chars into UTF-8 for byte-array\r
38438 \r
38439    do {  // pack three octets into four hexets\r
38440       o1 = str.charCodeAt(i++);\r
38441       o2 = str.charCodeAt(i++);\r
38442       o3 = str.charCodeAt(i++);\r
38443       \r
38444       bits = o1<<16 | o2<<8 | o3;\r
38445       \r
38446       h1 = bits>>18 & 0x3f;\r
38447       h2 = bits>>12 & 0x3f;\r
38448       h3 = bits>>6 & 0x3f;\r
38449       h4 = bits & 0x3f;\r
38450       \r
38451       // end of string? index to '=' in b64\r
38452       if (isNaN(o3)) h4 = 64;\r
38453       if (isNaN(o2)) h3 = 64;\r
38454       \r
38455       // use hexets to index into b64, and append result to encoded string\r
38456       enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\r
38457    } while (i < str.length);\r
38458    \r
38459    return enc;\r
38460 }\r
38461 \r
38462 function decodeBase64(str) {\r
38463    var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';\r
38464 \r
38465    do {  // unpack four hexets into three octets using index points in b64\r
38466       h1 = b64.indexOf(str.charAt(i++));\r
38467       h2 = b64.indexOf(str.charAt(i++));\r
38468       h3 = b64.indexOf(str.charAt(i++));\r
38469       h4 = b64.indexOf(str.charAt(i++));\r
38470       \r
38471       bits = h1<<18 | h2<<12 | h3<<6 | h4;\r
38472       \r
38473       o1 = bits>>16 & 0xff;\r
38474       o2 = bits>>8 & 0xff;\r
38475       o3 = bits & 0xff;\r
38476       \r
38477       if (h3 == 64)      enc += String.fromCharCode(o1);\r
38478       else if (h4 == 64) enc += String.fromCharCode(o1, o2);\r
38479       else               enc += String.fromCharCode(o1, o2, o3);\r
38480    } while (i < str.length);\r
38481 \r
38482    return decodeUTF8(enc);  // decode UTF-8 byte-array back to Unicode\r
38483 }\r
38484 \r
38485 function encodeUTF8(str) {  // encode multi-byte string into utf-8 multiple single-byte characters \r
38486   str = str.replace(\r
38487       /[\u0080-\u07ff]/g,  // U+0080 - U+07FF = 2-byte chars\r
38488       function(c) { \r
38489         var cc = c.charCodeAt(0);\r
38490         return String.fromCharCode(0xc0 | cc>>6, 0x80 | cc&0x3f); }\r
38491     );\r
38492   str = str.replace(\r
38493       /[\u0800-\uffff]/g,  // U+0800 - U+FFFF = 3-byte chars\r
38494       function(c) { \r
38495         var cc = c.charCodeAt(0); \r
38496         return String.fromCharCode(0xe0 | cc>>12, 0x80 | cc>>6&0x3F, 0x80 | cc&0x3f); }\r
38497     );\r
38498   return str;\r
38499 }\r
38500 \r
38501 function decodeUTF8(str) {  // decode utf-8 encoded string back into multi-byte characters\r
38502   str = str.replace(\r
38503       /[\u00c0-\u00df][\u0080-\u00bf]/g,                 // 2-byte chars\r
38504       function(c) { \r
38505         var cc = (c.charCodeAt(0)&0x1f)<<6 | c.charCodeAt(1)&0x3f;\r
38506         return String.fromCharCode(cc); }\r
38507     );\r
38508   str = str.replace(\r
38509       /[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g,  // 3-byte chars\r
38510       function(c) { \r
38511         var cc = (c.charCodeAt(0)&0x0f)<<12 | (c.charCodeAt(1)&0x3f<<6) | c.charCodeAt(2)&0x3f; \r
38512         return String.fromCharCode(cc); }\r
38513     );\r
38514   return str;\r
38515 }\r
38516 \r
38517 \r
38518 function byteArrayToHexStr(b) {  // convert byte array to hex string for displaying test vectors\r
38519   var s = '';\r
38520   for (var i=0; i<b.length; i++) s += b[i].toString(16) + ' ';\r
38521   return s;\r
38522 }\r
38523 \r
38524 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\r
38525 \r
38526 \r
38527 var plainText = "ROMEO: But, soft! what light through yonder window breaks?\n\\r
38528 It is the east, and Juliet is the sun.\n\\r
38529 Arise, fair sun, and kill the envious moon,\n\\r
38530 Who is already sick and pale with grief,\n\\r
38531 That thou her maid art far more fair than she:\n\\r
38532 Be not her maid, since she is envious;\n\\r
38533 Her vestal livery is but sick and green\n\\r
38534 And none but fools do wear it; cast it off.\n\\r
38535 It is my lady, O, it is my love!\n\\r
38536 O, that she knew she were!\n\\r
38537 She speaks yet she says nothing: what of that?\n\\r
38538 Her eye discourses; I will answer it.\n\\r
38539 I am too bold, 'tis not to me she speaks:\n\\r
38540 Two of the fairest stars in all the heaven,\n\\r
38541 Having some business, do entreat her eyes\n\\r
38542 To twinkle in their spheres till they return.\n\\r
38543 What if her eyes were there, they in her head?\n\\r
38544 The brightness of her cheek would shame those stars,\n\\r
38545 As daylight doth a lamp; her eyes in heaven\n\\r
38546 Would through the airy region stream so bright\n\\r
38547 That birds would sing and think it were not night.\n\\r
38548 See, how she leans her cheek upon her hand!\n\\r
38549 O, that I were a glove upon that hand,\n\\r
38550 That I might touch that cheek!\n\\r
38551 JULIET: Ay me!\n\\r
38552 ROMEO: She speaks:\n\\r
38553 O, speak again, bright angel! for thou art\n\\r
38554 As glorious to this night, being o'er my head\n\\r
38555 As is a winged messenger of heaven\n\\r
38556 Unto the white-upturned wondering eyes\n\\r
38557 Of mortals that fall back to gaze on him\n\\r
38558 When he bestrides the lazy-pacing clouds\n\\r
38559 And sails upon the bosom of the air.";\r
38560 \r
38561 var password = "O Romeo, Romeo! wherefore art thou Romeo?";\r
38562 \r
38563 var cipherText = AESEncryptCtr(plainText, password, 256);\r
38564 var decryptedText = AESDecryptCtr(cipherText, password, 256);\r
38565 /*\r
38566  * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\r
38567  * Digest Algorithm, as defined in RFC 1321.\r
38568  * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.\r
38569  * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\r
38570  * Distributed under the BSD License\r
38571  * See http://pajhome.org.uk/crypt/md5 for more info.\r
38572  */\r
38573 \r
38574 /*\r
38575  * Configurable variables. You may need to tweak these to be compatible with\r
38576  * the server-side, but the defaults work in most cases.\r
38577  */\r
38578 var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */\r
38579 var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */\r
38580 var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */\r
38581 \r
38582 /*\r
38583  * These are the functions you'll usually want to call\r
38584  * They take string arguments and return either hex or base-64 encoded strings\r
38585  */\r
38586 function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}\r
38587 function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}\r
38588 function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}\r
38589 function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }\r
38590 function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }\r
38591 function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }\r
38592 \r
38593 /*\r
38594  * Perform a simple self-test to see if the VM is working\r
38595  */\r
38596 function md5_vm_test()\r
38597 {\r
38598   return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";\r
38599 }\r
38600 \r
38601 /*\r
38602  * Calculate the MD5 of an array of little-endian words, and a bit length\r
38603  */\r
38604 function core_md5(x, len)\r
38605 {\r
38606   /* append padding */\r
38607   x[len >> 5] |= 0x80 << ((len) % 32);\r
38608   x[(((len + 64) >>> 9) << 4) + 14] = len;\r
38609 \r
38610   var a =  1732584193;\r
38611   var b = -271733879;\r
38612   var c = -1732584194;\r
38613   var d =  271733878;\r
38614 \r
38615   for(var i = 0; i < x.length; i += 16)\r
38616   {\r
38617     var olda = a;\r
38618     var oldb = b;\r
38619     var oldc = c;\r
38620     var oldd = d;\r
38621 \r
38622     a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);\r
38623     d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);\r
38624     c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);\r
38625     b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);\r
38626     a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);\r
38627     d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);\r
38628     c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);\r
38629     b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);\r
38630     a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);\r
38631     d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);\r
38632     c = md5_ff(c, d, a, b, x[i+10], 17, -42063);\r
38633     b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);\r
38634     a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);\r
38635     d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);\r
38636     c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);\r
38637     b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);\r
38638 \r
38639     a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);\r
38640     d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);\r
38641     c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);\r
38642     b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);\r
38643     a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);\r
38644     d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);\r
38645     c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);\r
38646     b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);\r
38647     a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);\r
38648     d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);\r
38649     c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);\r
38650     b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);\r
38651     a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);\r
38652     d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);\r
38653     c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);\r
38654     b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);\r
38655 \r
38656     a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);\r
38657     d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);\r
38658     c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);\r
38659     b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);\r
38660     a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);\r
38661     d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);\r
38662     c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);\r
38663     b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);\r
38664     a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);\r
38665     d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);\r
38666     c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);\r
38667     b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);\r
38668     a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);\r
38669     d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);\r
38670     c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);\r
38671     b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);\r
38672 \r
38673     a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);\r
38674     d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);\r
38675     c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);\r
38676     b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);\r
38677     a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);\r
38678     d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);\r
38679     c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);\r
38680     b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);\r
38681     a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);\r
38682     d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);\r
38683     c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);\r
38684     b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);\r
38685     a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);\r
38686     d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);\r
38687     c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);\r
38688     b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);\r
38689 \r
38690     a = safe_add(a, olda);\r
38691     b = safe_add(b, oldb);\r
38692     c = safe_add(c, oldc);\r
38693     d = safe_add(d, oldd);\r
38694   }\r
38695   return Array(a, b, c, d);\r
38696 \r
38697 }\r
38698 \r
38699 /*\r
38700  * These functions implement the four basic operations the algorithm uses.\r
38701  */\r
38702 function md5_cmn(q, a, b, x, s, t)\r
38703 {\r
38704   return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);\r
38705 }\r
38706 function md5_ff(a, b, c, d, x, s, t)\r
38707 {\r
38708   return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);\r
38709 }\r
38710 function md5_gg(a, b, c, d, x, s, t)\r
38711 {\r
38712   return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);\r
38713 }\r
38714 function md5_hh(a, b, c, d, x, s, t)\r
38715 {\r
38716   return md5_cmn(b ^ c ^ d, a, b, x, s, t);\r
38717 }\r
38718 function md5_ii(a, b, c, d, x, s, t)\r
38719 {\r
38720   return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);\r
38721 }\r
38722 \r
38723 /*\r
38724  * Calculate the HMAC-MD5, of a key and some data\r
38725  */\r
38726 function core_hmac_md5(key, data)\r
38727 {\r
38728   var bkey = str2binl(key);\r
38729   if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);\r
38730 \r
38731   var ipad = Array(16), opad = Array(16);\r
38732   for(var i = 0; i < 16; i++)\r
38733   {\r
38734     ipad[i] = bkey[i] ^ 0x36363636;\r
38735     opad[i] = bkey[i] ^ 0x5C5C5C5C;\r
38736   }\r
38737 \r
38738   var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);\r
38739   return core_md5(opad.concat(hash), 512 + 128);\r
38740 }\r
38741 \r
38742 /*\r
38743  * Add integers, wrapping at 2^32. This uses 16-bit operations internally\r
38744  * to work around bugs in some JS interpreters.\r
38745  */\r
38746 function safe_add(x, y)\r
38747 {\r
38748   var lsw = (x & 0xFFFF) + (y & 0xFFFF);\r
38749   var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r
38750   return (msw << 16) | (lsw & 0xFFFF);\r
38751 }\r
38752 \r
38753 /*\r
38754  * Bitwise rotate a 32-bit number to the left.\r
38755  */\r
38756 function bit_rol(num, cnt)\r
38757 {\r
38758   return (num << cnt) | (num >>> (32 - cnt));\r
38759 }\r
38760 \r
38761 /*\r
38762  * Convert a string to an array of little-endian words\r
38763  * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.\r
38764  */\r
38765 function str2binl(str)\r
38766 {\r
38767   var bin = Array();\r
38768   var mask = (1 << chrsz) - 1;\r
38769   for(var i = 0; i < str.length * chrsz; i += chrsz)\r
38770     bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);\r
38771   return bin;\r
38772 }\r
38773 \r
38774 /*\r
38775  * Convert an array of little-endian words to a string\r
38776  */\r
38777 function binl2str(bin)\r
38778 {\r
38779   var str = "";\r
38780   var mask = (1 << chrsz) - 1;\r
38781   for(var i = 0; i < bin.length * 32; i += chrsz)\r
38782     str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);\r
38783   return str;\r
38784 }\r
38785 \r
38786 /*\r
38787  * Convert an array of little-endian words to a hex string.\r
38788  */\r
38789 function binl2hex(binarray)\r
38790 {\r
38791   var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";\r
38792   var str = "";\r
38793   for(var i = 0; i < binarray.length * 4; i++)\r
38794   {\r
38795     str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +\r
38796            hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);\r
38797   }\r
38798   return str;\r
38799 }\r
38800 \r
38801 /*\r
38802  * Convert an array of little-endian words to a base-64 string\r
38803  */\r
38804 function binl2b64(binarray)\r
38805 {\r
38806   var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";\r
38807   var str = "";\r
38808   for(var i = 0; i < binarray.length * 4; i += 3)\r
38809   {\r
38810     var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)\r
38811                 | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )\r
38812                 |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);\r
38813     for(var j = 0; j < 4; j++)\r
38814     {\r
38815       if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;\r
38816       else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);\r
38817     }\r
38818   }\r
38819   return str;\r
38820 }\r
38821 \r
38822 var plainText = "Rebellious subjects, enemies to peace,\n\\r
38823 Profaners of this neighbour-stained steel,--\n\\r
38824 Will they not hear? What, ho! you men, you beasts,\n\\r
38825 That quench the fire of your pernicious rage\n\\r
38826 With purple fountains issuing from your veins,\n\\r
38827 On pain of torture, from those bloody hands\n\\r
38828 Throw your mistemper'd weapons to the ground,\n\\r
38829 And hear the sentence of your moved prince.\n\\r
38830 Three civil brawls, bred of an airy word,\n\\r
38831 By thee, old Capulet, and Montague,\n\\r
38832 Have thrice disturb'd the quiet of our streets,\n\\r
38833 And made Verona's ancient citizens\n\\r
38834 Cast by their grave beseeming ornaments,\n\\r
38835 To wield old partisans, in hands as old,\n\\r
38836 Canker'd with peace, to part your canker'd hate:\n\\r
38837 If ever you disturb our streets again,\n\\r
38838 Your lives shall pay the forfeit of the peace.\n\\r
38839 For this time, all the rest depart away:\n\\r
38840 You Capulet; shall go along with me:\n\\r
38841 And, Montague, come you this afternoon,\n\\r
38842 To know our further pleasure in this case,\n\\r
38843 To old Free-town, our common judgment-place.\n\\r
38844 Once more, on pain of death, all men depart."\r
38845 \r
38846 for (var i = 0; i <4; i++) {\r
38847     plainText += plainText;\r
38848 }\r
38849 \r
38850 var md5Output = hex_md5(plainText);\r
38851 /*\r
38852  * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\r
38853  * in FIPS PUB 180-1\r
38854  * Version 2.1a Copyright Paul Johnston 2000 - 2002.\r
38855  * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\r
38856  * Distributed under the BSD License\r
38857  * See http://pajhome.org.uk/crypt/md5 for details.\r
38858  */\r
38859 \r
38860 /*\r
38861  * Configurable variables. You may need to tweak these to be compatible with\r
38862  * the server-side, but the defaults work in most cases.\r
38863  */\r
38864 var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */\r
38865 var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */\r
38866 var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */\r
38867 \r
38868 /*\r
38869  * These are the functions you'll usually want to call\r
38870  * They take string arguments and return either hex or base-64 encoded strings\r
38871  */\r
38872 function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}\r
38873 function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}\r
38874 function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}\r
38875 function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}\r
38876 function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}\r
38877 function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}\r
38878 \r
38879 /*\r
38880  * Perform a simple self-test to see if the VM is working\r
38881  */\r
38882 function sha1_vm_test()\r
38883 {\r
38884   return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";\r
38885 }\r
38886 \r
38887 /*\r
38888  * Calculate the SHA-1 of an array of big-endian words, and a bit length\r
38889  */\r
38890 function core_sha1(x, len)\r
38891 {\r
38892   /* append padding */\r
38893   x[len >> 5] |= 0x80 << (24 - len % 32);\r
38894   x[((len + 64 >> 9) << 4) + 15] = len;\r
38895 \r
38896   var w = Array(80);\r
38897   var a =  1732584193;\r
38898   var b = -271733879;\r
38899   var c = -1732584194;\r
38900   var d =  271733878;\r
38901   var e = -1009589776;\r
38902 \r
38903   for(var i = 0; i < x.length; i += 16)\r
38904   {\r
38905     var olda = a;\r
38906     var oldb = b;\r
38907     var oldc = c;\r
38908     var oldd = d;\r
38909     var olde = e;\r
38910 \r
38911     for(var j = 0; j < 80; j++)\r
38912     {\r
38913       if(j < 16) w[j] = x[i + j];\r
38914       else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);\r
38915       var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),\r
38916                        safe_add(safe_add(e, w[j]), sha1_kt(j)));\r
38917       e = d;\r
38918       d = c;\r
38919       c = rol(b, 30);\r
38920       b = a;\r
38921       a = t;\r
38922     }\r
38923 \r
38924     a = safe_add(a, olda);\r
38925     b = safe_add(b, oldb);\r
38926     c = safe_add(c, oldc);\r
38927     d = safe_add(d, oldd);\r
38928     e = safe_add(e, olde);\r
38929   }\r
38930   return Array(a, b, c, d, e);\r
38931 \r
38932 }\r
38933 \r
38934 /*\r
38935  * Perform the appropriate triplet combination function for the current\r
38936  * iteration\r
38937  */\r
38938 function sha1_ft(t, b, c, d)\r
38939 {\r
38940   if(t < 20) return (b & c) | ((~b) & d);\r
38941   if(t < 40) return b ^ c ^ d;\r
38942   if(t < 60) return (b & c) | (b & d) | (c & d);\r
38943   return b ^ c ^ d;\r
38944 }\r
38945 \r
38946 /*\r
38947  * Determine the appropriate additive constant for the current iteration\r
38948  */\r
38949 function sha1_kt(t)\r
38950 {\r
38951   return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :\r
38952          (t < 60) ? -1894007588 : -899497514;\r
38953 }\r
38954 \r
38955 /*\r
38956  * Calculate the HMAC-SHA1 of a key and some data\r
38957  */\r
38958 function core_hmac_sha1(key, data)\r
38959 {\r
38960   var bkey = str2binb(key);\r
38961   if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);\r
38962 \r
38963   var ipad = Array(16), opad = Array(16);\r
38964   for(var i = 0; i < 16; i++)\r
38965   {\r
38966     ipad[i] = bkey[i] ^ 0x36363636;\r
38967     opad[i] = bkey[i] ^ 0x5C5C5C5C;\r
38968   }\r
38969 \r
38970   var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);\r
38971   return core_sha1(opad.concat(hash), 512 + 160);\r
38972 }\r
38973 \r
38974 /*\r
38975  * Add integers, wrapping at 2^32. This uses 16-bit operations internally\r
38976  * to work around bugs in some JS interpreters.\r
38977  */\r
38978 function safe_add(x, y)\r
38979 {\r
38980   var lsw = (x & 0xFFFF) + (y & 0xFFFF);\r
38981   var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r
38982   return (msw << 16) | (lsw & 0xFFFF);\r
38983 }\r
38984 \r
38985 /*\r
38986  * Bitwise rotate a 32-bit number to the left.\r
38987  */\r
38988 function rol(num, cnt)\r
38989 {\r
38990   return (num << cnt) | (num >>> (32 - cnt));\r
38991 }\r
38992 \r
38993 /*\r
38994  * Convert an 8-bit or 16-bit string to an array of big-endian words\r
38995  * In 8-bit function, characters >255 have their hi-byte silently ignored.\r
38996  */\r
38997 function str2binb(str)\r
38998 {\r
38999   var bin = Array();\r
39000   var mask = (1 << chrsz) - 1;\r
39001   for(var i = 0; i < str.length * chrsz; i += chrsz)\r
39002     bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);\r
39003   return bin;\r
39004 }\r
39005 \r
39006 /*\r
39007  * Convert an array of big-endian words to a string\r
39008  */\r
39009 function binb2str(bin)\r
39010 {\r
39011   var str = "";\r
39012   var mask = (1 << chrsz) - 1;\r
39013   for(var i = 0; i < bin.length * 32; i += chrsz)\r
39014     str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);\r
39015   return str;\r
39016 }\r
39017 \r
39018 /*\r
39019  * Convert an array of big-endian words to a hex string.\r
39020  */\r
39021 function binb2hex(binarray)\r
39022 {\r
39023   var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";\r
39024   var str = "";\r
39025   for(var i = 0; i < binarray.length * 4; i++)\r
39026   {\r
39027     str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +\r
39028            hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8  )) & 0xF);\r
39029   }\r
39030   return str;\r
39031 }\r
39032 \r
39033 /*\r
39034  * Convert an array of big-endian words to a base-64 string\r
39035  */\r
39036 function binb2b64(binarray)\r
39037 {\r
39038   var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";\r
39039   var str = "";\r
39040   for(var i = 0; i < binarray.length * 4; i += 3)\r
39041   {\r
39042     var triplet = (((binarray[i   >> 2] >> 8 * (3 -  i   %4)) & 0xFF) << 16)\r
39043                 | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )\r
39044                 |  ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);\r
39045     for(var j = 0; j < 4; j++)\r
39046     {\r
39047       if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;\r
39048       else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);\r
39049     }\r
39050   }\r
39051   return str;\r
39052 }\r
39053 \r
39054 \r
39055 var plainText = "Two households, both alike in dignity,\n\\r
39056 In fair Verona, where we lay our scene,\n\\r
39057 From ancient grudge break to new mutiny,\n\\r
39058 Where civil blood makes civil hands unclean.\n\\r
39059 From forth the fatal loins of these two foes\n\\r
39060 A pair of star-cross'd lovers take their life;\n\\r
39061 Whole misadventured piteous overthrows\n\\r
39062 Do with their death bury their parents' strife.\n\\r
39063 The fearful passage of their death-mark'd love,\n\\r
39064 And the continuance of their parents' rage,\n\\r
39065 Which, but their children's end, nought could remove,\n\\r
39066 Is now the two hours' traffic of our stage;\n\\r
39067 The which if you with patient ears attend,\n\\r
39068 What here shall miss, our toil shall strive to mend.";\r
39069 \r
39070 for (var i = 0; i <4; i++) {\r
39071     plainText += plainText;\r
39072 }\r
39073 \r
39074 var sha1Output = hex_sha1(plainText);\r
39075 function arrayExists(array, x) {\r
39076     for (var i = 0; i < array.length; i++) {\r
39077         if (array[i] == x) return true;\r
39078     }\r
39079     return false;\r
39080 }\r
39081 \r
39082 Date.prototype.formatDate = function (input,time) {\r
39083     // formatDate :\r
39084     // a PHP date like function, for formatting date strings\r
39085     // See: http://www.php.net/date\r
39086     //\r
39087     // input : format string\r
39088     // time : epoch time (seconds, and optional)\r
39089     //\r
39090     // if time is not passed, formatting is based on \r
39091     // the current "this" date object's set time.\r
39092     //\r
39093     // supported:\r
39094     // a, A, B, d, D, F, g, G, h, H, i, j, l (lowercase L), L, \r
39095     // m, M, n, O, r, s, S, t, U, w, W, y, Y, z\r
39096     //\r
39097     // unsupported:\r
39098     // I (capital i), T, Z    \r
39099 \r
39100     var switches =    ["a", "A", "B", "d", "D", "F", "g", "G", "h", "H", \r
39101                        "i", "j", "l", "L", "m", "M", "n", "O", "r", "s", \r
39102                        "S", "t", "U", "w", "W", "y", "Y", "z"];\r
39103     var daysLong =    ["Sunday", "Monday", "Tuesday", "Wednesday", \r
39104                        "Thursday", "Friday", "Saturday"];\r
39105     var daysShort =   ["Sun", "Mon", "Tue", "Wed", \r
39106                        "Thu", "Fri", "Sat"];\r
39107     var monthsShort = ["Jan", "Feb", "Mar", "Apr",\r
39108                        "May", "Jun", "Jul", "Aug", "Sep",\r
39109                        "Oct", "Nov", "Dec"];\r
39110     var monthsLong =  ["January", "February", "March", "April",\r
39111                        "May", "June", "July", "August", "September",\r
39112                        "October", "November", "December"];\r
39113     var daysSuffix = ["st", "nd", "rd", "th", "th", "th", "th", // 1st - 7th\r
39114                       "th", "th", "th", "th", "th", "th", "th", // 8th - 14th\r
39115                       "th", "th", "th", "th", "th", "th", "st", // 15th - 21st\r
39116                       "nd", "rd", "th", "th", "th", "th", "th", // 22nd - 28th\r
39117                       "th", "th", "st"];                        // 29th - 31st\r
39118 \r
39119     function a() {\r
39120         // Lowercase Ante meridiem and Post meridiem\r
39121         return self.getHours() > 11? "pm" : "am";\r
39122     }\r
39123     function A() {\r
39124         // Uppercase Ante meridiem and Post meridiem\r
39125         return self.getHours() > 11? "PM" : "AM";\r
39126     }\r
39127 \r
39128     function B(){\r
39129         // Swatch internet time. code simply grabbed from ppk,\r
39130         // since I was feeling lazy:\r
39131         // http://www.xs4all.nl/~ppk/js/beat.html\r
39132         var off = (self.getTimezoneOffset() + 60)*60;\r
39133         var theSeconds = (self.getHours() * 3600) + \r
39134                          (self.getMinutes() * 60) + \r
39135                           self.getSeconds() + off;\r
39136         var beat = Math.floor(theSeconds/86.4);\r
39137         if (beat > 1000) beat -= 1000;\r
39138         if (beat < 0) beat += 1000;\r
39139         if ((""+beat).length == 1) beat = "00"+beat;\r
39140         if ((""+beat).length == 2) beat = "0"+beat;\r
39141         return beat;\r
39142     }\r
39143     \r
39144     function d() {\r
39145         // Day of the month, 2 digits with leading zeros\r
39146         return new String(self.getDate()).length == 1?\r
39147         "0"+self.getDate() : self.getDate();\r
39148     }\r
39149     function D() {\r
39150         // A textual representation of a day, three letters\r
39151         return daysShort[self.getDay()];\r
39152     }\r
39153     function F() {\r
39154         // A full textual representation of a month\r
39155         return monthsLong[self.getMonth()];\r
39156     }\r
39157     function g() {\r
39158         // 12-hour format of an hour without leading zeros\r
39159         return self.getHours() > 12? self.getHours()-12 : self.getHours();\r
39160     }\r
39161     function G() {\r
39162         // 24-hour format of an hour without leading zeros\r
39163         return self.getHours();\r
39164     }\r
39165     function h() {\r
39166         // 12-hour format of an hour with leading zeros\r
39167         if (self.getHours() > 12) {\r
39168           var s = new String(self.getHours()-12);\r
39169           return s.length == 1?\r
39170           "0"+ (self.getHours()-12) : self.getHours()-12;\r
39171         } else { \r
39172           var s = new String(self.getHours());\r
39173           return s.length == 1?\r
39174           "0"+self.getHours() : self.getHours();\r
39175         }  \r
39176     }\r
39177     function H() {\r
39178         // 24-hour format of an hour with leading zeros\r
39179         return new String(self.getHours()).length == 1?\r
39180         "0"+self.getHours() : self.getHours();\r
39181     }\r
39182     function i() {\r
39183         // Minutes with leading zeros\r
39184         return new String(self.getMinutes()).length == 1? \r
39185         "0"+self.getMinutes() : self.getMinutes(); \r
39186     }\r
39187     function j() {\r
39188         // Day of the month without leading zeros\r
39189         return self.getDate();\r
39190     }    \r
39191     function l() {\r
39192         // A full textual representation of the day of the week\r
39193         return daysLong[self.getDay()];\r
39194     }\r
39195     function L() {\r
39196         // leap year or not. 1 if leap year, 0 if not.\r
39197         // the logic should match iso's 8601 standard.\r
39198         var y_ = Y();\r
39199         if (         \r
39200             (y_ % 4 == 0 && y_ % 100 != 0) ||\r
39201             (y_ % 4 == 0 && y_ % 100 == 0 && y_ % 400 == 0)\r
39202             ) {\r
39203             return 1;\r
39204         } else {\r
39205             return 0;\r
39206         }\r
39207     }\r
39208     function m() {\r
39209         // Numeric representation of a month, with leading zeros\r
39210         return self.getMonth() < 9?\r
39211         "0"+(self.getMonth()+1) : \r
39212         self.getMonth()+1;\r
39213     }\r
39214     function M() {\r
39215         // A short textual representation of a month, three letters\r
39216         return monthsShort[self.getMonth()];\r
39217     }\r
39218     function n() {\r
39219         // Numeric representation of a month, without leading zeros\r
39220         return self.getMonth()+1;\r
39221     }\r
39222     function O() {\r
39223         // Difference to Greenwich time (GMT) in hours\r
39224         var os = Math.abs(self.getTimezoneOffset());\r
39225         var h = ""+Math.floor(os/60);\r
39226         var m = ""+(os%60);\r
39227         h.length == 1? h = "0"+h:1;\r
39228         m.length == 1? m = "0"+m:1;\r
39229         return self.getTimezoneOffset() < 0 ? "+"+h+m : "-"+h+m;\r
39230     }\r
39231     function r() {\r
39232         // RFC 822 formatted date\r
39233         var r; // result\r
39234         //  Thu    ,     21          Dec         2000\r
39235         r = D() + ", " + j() + " " + M() + " " + Y() +\r
39236         //        16     :    01     :    07          +0200\r
39237             " " + H() + ":" + i() + ":" + s() + " " + O();\r
39238         return r;\r
39239     }\r
39240     function S() {\r
39241         // English ordinal suffix for the day of the month, 2 characters\r
39242         return daysSuffix[self.getDate()-1];\r
39243     }\r
39244     function s() {\r
39245         // Seconds, with leading zeros\r
39246         return new String(self.getSeconds()).length == 1?\r
39247         "0"+self.getSeconds() : self.getSeconds();\r
39248     }\r
39249     function t() {\r
39250 \r
39251         // thanks to Matt Bannon for some much needed code-fixes here!\r
39252         var daysinmonths = [null,31,28,31,30,31,30,31,31,30,31,30,31];\r
39253         if (L()==1 && n()==2) return 29; // leap day\r
39254         return daysinmonths[n()];\r
39255     }\r
39256     function U() {\r
39257         // Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)\r
39258         return Math.round(self.getTime()/1000);\r
39259     }\r
39260     function W() {\r
39261         // Weeknumber, as per ISO specification:\r
39262         // http://www.cl.cam.ac.uk/~mgk25/iso-time.html\r
39263         \r
39264         // if the day is three days before newyears eve,\r
39265         // there's a chance it's "week 1" of next year.\r
39266         // here we check for that.\r
39267         var beforeNY = 364+L() - z();\r
39268         var afterNY  = z();\r
39269         var weekday = w()!=0?w()-1:6; // makes sunday (0), into 6.\r
39270         if (beforeNY <= 2 && weekday <= 2-beforeNY) {\r
39271             return 1;\r
39272         }\r
39273         // similarly, if the day is within threedays of newyears\r
39274         // there's a chance it belongs in the old year.\r
39275         var ny = new Date("January 1 " + Y() + " 00:00:00");\r
39276         var nyDay = ny.getDay()!=0?ny.getDay()-1:6;\r
39277         if (\r
39278             (afterNY <= 2) && \r
39279             (nyDay >=4)  && \r
39280             (afterNY >= (6-nyDay))\r
39281             ) {\r
39282             // Since I'm not sure we can just always return 53,\r
39283             // i call the function here again, using the last day\r
39284             // of the previous year, as the date, and then just\r
39285             // return that week.\r
39286             var prevNY = new Date("December 31 " + (Y()-1) + " 00:00:00");\r
39287             return prevNY.formatDate("W");\r
39288         }\r
39289         \r
39290         // week 1, is the week that has the first thursday in it.\r
39291         // note that this value is not zero index.\r
39292         if (nyDay <= 3) {\r
39293             // first day of the year fell on a thursday, or earlier.\r
39294             return 1 + Math.floor( ( z() + nyDay ) / 7 );\r
39295         } else {\r
39296             // first day of the year fell on a friday, or later.\r
39297             return 1 + Math.floor( ( z() - ( 7 - nyDay ) ) / 7 );\r
39298         }\r
39299     }\r
39300     function w() {\r
39301         // Numeric representation of the day of the week\r
39302         return self.getDay();\r
39303     }\r
39304     \r
39305     function Y() {\r
39306         // A full numeric representation of a year, 4 digits\r
39307 \r
39308         // we first check, if getFullYear is supported. if it\r
39309         // is, we just use that. ppks code is nice, but wont\r
39310         // work with dates outside 1900-2038, or something like that\r
39311         if (self.getFullYear) {\r
39312             var newDate = new Date("January 1 2001 00:00:00 +0000");\r
39313             var x = newDate .getFullYear();\r
39314             if (x == 2001) {              \r
39315                 // i trust the method now\r
39316                 return self.getFullYear();\r
39317             }\r
39318         }\r
39319         // else, do this:\r
39320         // codes thanks to ppk:\r
39321         // http://www.xs4all.nl/~ppk/js/introdate.html\r
39322         var x = self.getYear();\r
39323         var y = x % 100;\r
39324         y += (y < 38) ? 2000 : 1900;\r
39325         return y;\r
39326     }\r
39327     function y() {\r
39328         // A two-digit representation of a year\r
39329         var y = Y()+"";\r
39330         return y.substring(y.length-2,y.length);\r
39331     }\r
39332     function z() {\r
39333         // The day of the year, zero indexed! 0 through 366\r
39334         var t = new Date("January 1 " + Y() + " 00:00:00");\r
39335         var diff = self.getTime() - t.getTime();\r
39336         return Math.floor(diff/1000/60/60/24);\r
39337     }\r
39338         \r
39339     var self = this;\r
39340     if (time) {\r
39341         // save time\r
39342         var prevTime = self.getTime();\r
39343         self.setTime(time);\r
39344     }\r
39345     \r
39346     var ia = input.split("");\r
39347     var ij = 0;\r
39348     while (ia[ij]) {\r
39349         if (ia[ij] == "\\") {\r
39350             // this is our way of allowing users to escape stuff\r
39351             ia.splice(ij,1);\r
39352         } else {\r
39353             if (arrayExists(switches,ia[ij])) {\r
39354                 ia[ij] = eval(ia[ij] + "()");\r
39355             }\r
39356         }\r
39357         ij++;\r
39358     }\r
39359     // reset time, back to what it was\r
39360     if (prevTime) {\r
39361         self.setTime(prevTime);\r
39362     }\r
39363     return ia.join("");\r
39364 }\r
39365 \r
39366 var date = new Date("1/1/2007 1:11:11");\r
39367 \r
39368 for (i = 0; i < 500; ++i) {\r
39369     var shortFormat = date.formatDate("Y-m-d");\r
39370     var longFormat = date.formatDate("l, F d, Y g:i:s A");\r
39371     date.setTime(date.getTime() + 84266956);\r
39372 }\r
39373 \r
39374 /*\r
39375  * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>\r
39376  *\r
39377  * This program is free software; you can redistribute it and/or modify it\r
39378  * under the terms of the GNU Lesser General Public License as published by the\r
39379  * Free Software Foundation, version 2.1.\r
39380  *\r
39381  * This program is distributed in the hope that it will be useful, but WITHOUT\r
39382  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\r
39383  * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more\r
39384  * details.\r
39385  */\r
39386 \r
39387 Date.parseFunctions = {count:0};\r
39388 Date.parseRegexes = [];\r
39389 Date.formatFunctions = {count:0};\r
39390 \r
39391 Date.prototype.dateFormat = function(format) {\r
39392     if (Date.formatFunctions[format] == null) {\r
39393         Date.createNewFormat(format);\r
39394     }\r
39395     var func = Date.formatFunctions[format];\r
39396     return this[func]();\r
39397 }\r
39398 \r
39399 Date.createNewFormat = function(format) {\r
39400     var funcName = "format" + Date.formatFunctions.count++;\r
39401     Date.formatFunctions[format] = funcName;\r
39402     var code = "Date.prototype." + funcName + " = function(){return ";\r
39403     var special = false;\r
39404     var ch = '';\r
39405     for (var i = 0; i < format.length; ++i) {\r
39406         ch = format.charAt(i);\r
39407         if (!special && ch == "\\") {\r
39408             special = true;\r
39409         }\r
39410         else if (special) {\r
39411             special = false;\r
39412             code += "'" + String.escape(ch) + "' + ";\r
39413         }\r
39414         else {\r
39415             code += Date.getFormatCode(ch);\r
39416         }\r
39417     }\r
39418     eval(code.substring(0, code.length - 3) + ";}");\r
39419 }\r
39420 \r
39421 Date.getFormatCode = function(character) {\r
39422     switch (character) {\r
39423     case "d":\r
39424         return "String.leftPad(this.getDate(), 2, '0') + ";\r
39425     case "D":\r
39426         return "Date.dayNames[this.getDay()].substring(0, 3) + ";\r
39427     case "j":\r
39428         return "this.getDate() + ";\r
39429     case "l":\r
39430         return "Date.dayNames[this.getDay()] + ";\r
39431     case "S":\r
39432         return "this.getSuffix() + ";\r
39433     case "w":\r
39434         return "this.getDay() + ";\r
39435     case "z":\r
39436         return "this.getDayOfYear() + ";\r
39437     case "W":\r
39438         return "this.getWeekOfYear() + ";\r
39439     case "F":\r
39440         return "Date.monthNames[this.getMonth()] + ";\r
39441     case "m":\r
39442         return "String.leftPad(this.getMonth() + 1, 2, '0') + ";\r
39443     case "M":\r
39444         return "Date.monthNames[this.getMonth()].substring(0, 3) + ";\r
39445     case "n":\r
39446         return "(this.getMonth() + 1) + ";\r
39447     case "t":\r
39448         return "this.getDaysInMonth() + ";\r
39449     case "L":\r
39450         return "(this.isLeapYear() ? 1 : 0) + ";\r
39451     case "Y":\r
39452         return "this.getFullYear() + ";\r
39453     case "y":\r
39454         return "('' + this.getFullYear()).substring(2, 4) + ";\r
39455     case "a":\r
39456         return "(this.getHours() < 12 ? 'am' : 'pm') + ";\r
39457     case "A":\r
39458         return "(this.getHours() < 12 ? 'AM' : 'PM') + ";\r
39459     case "g":\r
39460         return "((this.getHours() %12) ? this.getHours() % 12 : 12) + ";\r
39461     case "G":\r
39462         return "this.getHours() + ";\r
39463     case "h":\r
39464         return "String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";\r
39465     case "H":\r
39466         return "String.leftPad(this.getHours(), 2, '0') + ";\r
39467     case "i":\r
39468         return "String.leftPad(this.getMinutes(), 2, '0') + ";\r
39469     case "s":\r
39470         return "String.leftPad(this.getSeconds(), 2, '0') + ";\r
39471     case "O":\r
39472         return "this.getGMTOffset() + ";\r
39473     case "T":\r
39474         return "this.getTimezone() + ";\r
39475     case "Z":\r
39476         return "(this.getTimezoneOffset() * -60) + ";\r
39477     default:\r
39478         return "'" + String.escape(character) + "' + ";\r
39479     }\r
39480 }\r
39481 \r
39482 Date.parseDate = function(input, format) {\r
39483     if (Date.parseFunctions[format] == null) {\r
39484         Date.createParser(format);\r
39485     }\r
39486     var func = Date.parseFunctions[format];\r
39487     return Date[func](input);\r
39488 }\r
39489 \r
39490 Date.createParser = function(format) {\r
39491     var funcName = "parse" + Date.parseFunctions.count++;\r
39492     var regexNum = Date.parseRegexes.length;\r
39493     var currentGroup = 1;\r
39494     Date.parseFunctions[format] = funcName;\r
39495 \r
39496     var code = "Date." + funcName + " = function(input){\n"\r
39497         + "var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\n"\r
39498         + "var d = new Date();\n"\r
39499         + "y = d.getFullYear();\n"\r
39500         + "m = d.getMonth();\n"\r
39501         + "d = d.getDate();\n"\r
39502         + "var results = input.match(Date.parseRegexes[" + regexNum + "]);\n"\r
39503         + "if (results && results.length > 0) {"\r
39504     var regex = "";\r
39505 \r
39506     var special = false;\r
39507     var ch = '';\r
39508     for (var i = 0; i < format.length; ++i) {\r
39509         ch = format.charAt(i);\r
39510         if (!special && ch == "\\") {\r
39511             special = true;\r
39512         }\r
39513         else if (special) {\r
39514             special = false;\r
39515             regex += String.escape(ch);\r
39516         }\r
39517         else {\r
39518             obj = Date.formatCodeToRegex(ch, currentGroup);\r
39519             currentGroup += obj.g;\r
39520             regex += obj.s;\r
39521             if (obj.g && obj.c) {\r
39522                 code += obj.c;\r
39523             }\r
39524         }\r
39525     }\r
39526 \r
39527     code += "if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"\r
39528         + "{return new Date(y, m, d, h, i, s);}\n"\r
39529         + "else if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"\r
39530         + "{return new Date(y, m, d, h, i);}\n"\r
39531         + "else if (y > 0 && m >= 0 && d > 0 && h >= 0)\n"\r
39532         + "{return new Date(y, m, d, h);}\n"\r
39533         + "else if (y > 0 && m >= 0 && d > 0)\n"\r
39534         + "{return new Date(y, m, d);}\n"\r
39535         + "else if (y > 0 && m >= 0)\n"\r
39536         + "{return new Date(y, m);}\n"\r
39537         + "else if (y > 0)\n"\r
39538         + "{return new Date(y);}\n"\r
39539         + "}return null;}";\r
39540 \r
39541     Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$");\r
39542     eval(code);\r
39543 }\r
39544 \r
39545 Date.formatCodeToRegex = function(character, currentGroup) {\r
39546     switch (character) {\r
39547     case "D":\r
39548         return {g:0,\r
39549         c:null,\r
39550         s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};\r
39551     case "j":\r
39552     case "d":\r
39553         return {g:1,\r
39554             c:"d = parseInt(results[" + currentGroup + "], 10);\n",\r
39555             s:"(\\d{1,2})"};\r
39556     case "l":\r
39557         return {g:0,\r
39558             c:null,\r
39559             s:"(?:" + Date.dayNames.join("|") + ")"};\r
39560     case "S":\r
39561         return {g:0,\r
39562             c:null,\r
39563             s:"(?:st|nd|rd|th)"};\r
39564     case "w":\r
39565         return {g:0,\r
39566             c:null,\r
39567             s:"\\d"};\r
39568     case "z":\r
39569         return {g:0,\r
39570             c:null,\r
39571             s:"(?:\\d{1,3})"};\r
39572     case "W":\r
39573         return {g:0,\r
39574             c:null,\r
39575             s:"(?:\\d{2})"};\r
39576     case "F":\r
39577         return {g:1,\r
39578             c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "].substring(0, 3)], 10);\n",\r
39579             s:"(" + Date.monthNames.join("|") + ")"};\r
39580     case "M":\r
39581         return {g:1,\r
39582             c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "]], 10);\n",\r
39583             s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};\r
39584     case "n":\r
39585     case "m":\r
39586         return {g:1,\r
39587             c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",\r
39588             s:"(\\d{1,2})"};\r
39589     case "t":\r
39590         return {g:0,\r
39591             c:null,\r
39592             s:"\\d{1,2}"};\r
39593     case "L":\r
39594         return {g:0,\r
39595             c:null,\r
39596             s:"(?:1|0)"};\r
39597     case "Y":\r
39598         return {g:1,\r
39599             c:"y = parseInt(results[" + currentGroup + "], 10);\n",\r
39600             s:"(\\d{4})"};\r
39601     case "y":\r
39602         return {g:1,\r
39603             c:"var ty = parseInt(results[" + currentGroup + "], 10);\n"\r
39604                 + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",\r
39605             s:"(\\d{1,2})"};\r
39606     case "a":\r
39607         return {g:1,\r
39608             c:"if (results[" + currentGroup + "] == 'am') {\n"\r
39609                 + "if (h == 12) { h = 0; }\n"\r
39610                 + "} else { if (h < 12) { h += 12; }}",\r
39611             s:"(am|pm)"};\r
39612     case "A":\r
39613         return {g:1,\r
39614             c:"if (results[" + currentGroup + "] == 'AM') {\n"\r
39615                 + "if (h == 12) { h = 0; }\n"\r
39616                 + "} else { if (h < 12) { h += 12; }}",\r
39617             s:"(AM|PM)"};\r
39618     case "g":\r
39619     case "G":\r
39620     case "h":\r
39621     case "H":\r
39622         return {g:1,\r
39623             c:"h = parseInt(results[" + currentGroup + "], 10);\n",\r
39624             s:"(\\d{1,2})"};\r
39625     case "i":\r
39626         return {g:1,\r
39627             c:"i = parseInt(results[" + currentGroup + "], 10);\n",\r
39628             s:"(\\d{2})"};\r
39629     case "s":\r
39630         return {g:1,\r
39631             c:"s = parseInt(results[" + currentGroup + "], 10);\n",\r
39632             s:"(\\d{2})"};\r
39633     case "O":\r
39634         return {g:0,\r
39635             c:null,\r
39636             s:"[+-]\\d{4}"};\r
39637     case "T":\r
39638         return {g:0,\r
39639             c:null,\r
39640             s:"[A-Z]{3}"};\r
39641     case "Z":\r
39642         return {g:0,\r
39643             c:null,\r
39644             s:"[+-]\\d{1,5}"};\r
39645     default:\r
39646         return {g:0,\r
39647             c:null,\r
39648             s:String.escape(character)};\r
39649     }\r
39650 }\r
39651 \r
39652 Date.prototype.getTimezone = function() {\r
39653     return this.toString().replace(\r
39654         /^.*? ([A-Z]{3}) [0-9]{4}.*$/, "$1").replace(\r
39655         /^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3");\r
39656 }\r
39657 \r
39658 Date.prototype.getGMTOffset = function() {\r
39659     return (this.getTimezoneOffset() > 0 ? "-" : "+")\r
39660         + String.leftPad(Math.floor(this.getTimezoneOffset() / 60), 2, "0")\r
39661         + String.leftPad(this.getTimezoneOffset() % 60, 2, "0");\r
39662 }\r
39663 \r
39664 Date.prototype.getDayOfYear = function() {\r
39665     var num = 0;\r
39666     Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;\r
39667     for (var i = 0; i < this.getMonth(); ++i) {\r
39668         num += Date.daysInMonth[i];\r
39669     }\r
39670     return num + this.getDate() - 1;\r
39671 }\r
39672 \r
39673 Date.prototype.getWeekOfYear = function() {\r
39674     // Skip to Thursday of this week\r
39675     var now = this.getDayOfYear() + (4 - this.getDay());\r
39676     // Find the first Thursday of the year\r
39677     var jan1 = new Date(this.getFullYear(), 0, 1);\r
39678     var then = (7 - jan1.getDay() + 4);\r
39679     document.write(then);\r
39680     return String.leftPad(((now - then) / 7) + 1, 2, "0");\r
39681 }\r
39682 \r
39683 Date.prototype.isLeapYear = function() {\r
39684     var year = this.getFullYear();\r
39685     return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));\r
39686 }\r
39687 \r
39688 Date.prototype.getFirstDayOfMonth = function() {\r
39689     var day = (this.getDay() - (this.getDate() - 1)) % 7;\r
39690     return (day < 0) ? (day + 7) : day;\r
39691 }\r
39692 \r
39693 Date.prototype.getLastDayOfMonth = function() {\r
39694     var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7;\r
39695     return (day < 0) ? (day + 7) : day;\r
39696 }\r
39697 \r
39698 Date.prototype.getDaysInMonth = function() {\r
39699     Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;\r
39700     return Date.daysInMonth[this.getMonth()];\r
39701 }\r
39702 \r
39703 Date.prototype.getSuffix = function() {\r
39704     switch (this.getDate()) {\r
39705         case 1:\r
39706         case 21:\r
39707         case 31:\r
39708             return "st";\r
39709         case 2:\r
39710         case 22:\r
39711             return "nd";\r
39712         case 3:\r
39713         case 23:\r
39714             return "rd";\r
39715         default:\r
39716             return "th";\r
39717     }\r
39718 }\r
39719 \r
39720 String.escape = function(string) {\r
39721     return string.replace(/('|\\)/g, "\\$1");\r
39722 }\r
39723 \r
39724 String.leftPad = function (val, size, ch) {\r
39725     var result = new String(val);\r
39726     if (ch == null) {\r
39727         ch = " ";\r
39728     }\r
39729     while (result.length < size) {\r
39730         result = ch + result;\r
39731     }\r
39732     return result;\r
39733 }\r
39734 \r
39735 Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];\r
39736 Date.monthNames =\r
39737    ["January",\r
39738     "February",\r
39739     "March",\r
39740     "April",\r
39741     "May",\r
39742     "June",\r
39743     "July",\r
39744     "August",\r
39745     "September",\r
39746     "October",\r
39747     "November",\r
39748     "December"];\r
39749 Date.dayNames =\r
39750    ["Sunday",\r
39751     "Monday",\r
39752     "Tuesday",\r
39753     "Wednesday",\r
39754     "Thursday",\r
39755     "Friday",\r
39756     "Saturday"];\r
39757 Date.y2kYear = 50;\r
39758 Date.monthNumbers = {\r
39759     Jan:0,\r
39760     Feb:1,\r
39761     Mar:2,\r
39762     Apr:3,\r
39763     May:4,\r
39764     Jun:5,\r
39765     Jul:6,\r
39766     Aug:7,\r
39767     Sep:8,\r
39768     Oct:9,\r
39769     Nov:10,\r
39770     Dec:11};\r
39771 Date.patterns = {\r
39772     ISO8601LongPattern:"Y-m-d H:i:s",\r
39773     ISO8601ShortPattern:"Y-m-d",\r
39774     ShortDatePattern: "n/j/Y",\r
39775     LongDatePattern: "l, F d, Y",\r
39776     FullDateTimePattern: "l, F d, Y g:i:s A",\r
39777     MonthDayPattern: "F d",\r
39778     ShortTimePattern: "g:i A",\r
39779     LongTimePattern: "g:i:s A",\r
39780     SortableDateTimePattern: "Y-m-d\\TH:i:s",\r
39781     UniversalSortableDateTimePattern: "Y-m-d H:i:sO",\r
39782     YearMonthPattern: "F, Y"};\r
39783 \r
39784 var date = new Date("1/1/2007 1:11:11");\r
39785 \r
39786 for (i = 0; i < 4000; ++i) {\r
39787     var shortFormat = date.dateFormat("Y-m-d");\r
39788     var longFormat = date.dateFormat("l, F d, Y g:i:s A");\r
39789     date.setTime(date.getTime() + 84266956);\r
39790 }\r
39791 /*\r
39792  * Copyright (C) Rich Moore.  All rights reserved.\r
39793  *\r
39794  * Redistribution and use in source and binary forms, with or without\r
39795  * modification, are permitted provided that the following conditions\r
39796  * are met:\r
39797  * 1. Redistributions of source code must retain the above copyright\r
39798  *    notice, this list of conditions and the following disclaimer.\r
39799  * 2. Redistributions in binary form must reproduce the above copyright\r
39800  *    notice, this list of conditions and the following disclaimer in the\r
39801  *    documentation and/or other materials provided with the distribution.\r
39802  *\r
39803  * THIS SOFTWARE IS PROVIDED BY CONTRIBUTORS ``AS IS'' AND ANY\r
39804  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
39805  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
39806  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR\r
39807  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
39808  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
39809  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\r
39810  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r
39811  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
39812  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
39813  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \r
39814  */\r
39815 \r
39816 /////. Start CORDIC\r
39817 \r
39818 var AG_CONST = 0.6072529350;\r
39819 \r
39820 function FIXED(X)\r
39821 {\r
39822   return X * 65536.0;\r
39823 }\r
39824 \r
39825 function FLOAT(X)\r
39826 {\r
39827   return X / 65536.0;\r
39828 }\r
39829 \r
39830 function DEG2RAD(X)\r
39831 {\r
39832   return 0.017453 * (X);\r
39833 }\r
39834 \r
39835 var Angles = [\r
39836   FIXED(45.0), FIXED(26.565), FIXED(14.0362), FIXED(7.12502),\r
39837   FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614),\r
39838   FIXED(0.223811), FIXED(0.111906), FIXED(0.055953),\r
39839   FIXED(0.027977) \r
39840               ];\r
39841 \r
39842 \r
39843 function cordicsincos() {\r
39844     var X;\r
39845     var Y;\r
39846     var TargetAngle;\r
39847     var CurrAngle;\r
39848     var Step;\r
39849  \r
39850     X = FIXED(AG_CONST);         /* AG_CONST * cos(0) */\r
39851     Y = 0;                       /* AG_CONST * sin(0) */\r
39852 \r
39853     TargetAngle = FIXED(28.027);\r
39854     CurrAngle = 0;\r
39855     for (Step = 0; Step < 12; Step++) {\r
39856         var NewX;\r
39857         if (TargetAngle > CurrAngle) {\r
39858             NewX = X - (Y >> Step);\r
39859             Y = (X >> Step) + Y;\r
39860             X = NewX;\r
39861             CurrAngle += Angles[Step];\r
39862         } else {\r
39863             NewX = X + (Y >> Step);\r
39864             Y = -(X >> Step) + Y;\r
39865             X = NewX;\r
39866             CurrAngle -= Angles[Step];\r
39867         }\r
39868     }\r
39869 }\r
39870 \r
39871 ///// End CORDIC\r
39872 \r
39873 function cordic( runs ) {\r
39874   var start = new Date();\r
39875 \r
39876   for ( var i = 0 ; i < runs ; i++ ) {\r
39877       cordicsincos();\r
39878   }\r
39879 \r
39880   var end = new Date();\r
39881 \r
39882   return end.getTime() - start.getTime();\r
39883 }\r
39884 \r
39885 cordic(25000);\r
39886 // The Computer Language Shootout\r
39887 // http://shootout.alioth.debian.org/\r
39888 // contributed by Isaac Gouy\r
39889 \r
39890 function partial(n){\r
39891     var a1 = a2 = a3 = a4 = a5 = a6 = a7 = a8 = a9 = 0.0;\r
39892     var twothirds = 2.0/3.0;\r
39893     var alt = -1.0;\r
39894     var k2 = k3 = sk = ck = 0.0;\r
39895     \r
39896     for (var k = 1; k <= n; k++){\r
39897         k2 = k*k;\r
39898         k3 = k2*k;\r
39899         sk = Math.sin(k);\r
39900         ck = Math.cos(k);\r
39901         alt = -alt;\r
39902         \r
39903         a1 += Math.pow(twothirds,k-1);\r
39904         a2 += Math.pow(k,-0.5);\r
39905         a3 += 1.0/(k*(k+1.0));\r
39906         a4 += 1.0/(k3 * sk*sk);\r
39907         a5 += 1.0/(k3 * ck*ck);\r
39908         a6 += 1.0/k;\r
39909         a7 += 1.0/k2;\r
39910         a8 += alt/k;\r
39911         a9 += alt/(2*k -1);\r
39912     }\r
39913 }\r
39914 \r
39915 for (var i = 1024; i <= 16384; i *= 2) {\r
39916     partial(i);\r
39917 }\r
39918 \r
39919 // The Great Computer Language Shootout\r
39920 // http://shootout.alioth.debian.org/\r
39921 //\r
39922 // contributed by Ian Osgood\r
39923 \r
39924 function A(i,j) {\r
39925   return 1/((i+j)*(i+j+1)/2+i+1);\r
39926 }\r
39927 \r
39928 function Au(u,v) {\r
39929   for (var i=0; i<u.length; ++i) {\r
39930     var t = 0;\r
39931     for (var j=0; j<u.length; ++j)\r
39932       t += A(i,j) * u[j];\r
39933     v[i] = t;\r
39934   }\r
39935 }\r
39936 \r
39937 function Atu(u,v) {\r
39938   for (var i=0; i<u.length; ++i) {\r
39939     var t = 0;\r
39940     for (var j=0; j<u.length; ++j)\r
39941       t += A(j,i) * u[j];\r
39942     v[i] = t;\r
39943   }\r
39944 }\r
39945 \r
39946 function AtAu(u,v,w) {\r
39947   Au(u,w);\r
39948   Atu(w,v);\r
39949 }\r
39950 \r
39951 function spectralnorm(n) {\r
39952   var i, u=[], v=[], w=[], vv=0, vBv=0;\r
39953   for (i=0; i<n; ++i) {\r
39954     u[i] = 1; v[i] = w[i] = 0;\r
39955   }\r
39956   for (i=0; i<10; ++i) {\r
39957     AtAu(u,v,w);\r
39958     AtAu(v,u,w);\r
39959   }\r
39960   for (i=0; i<n; ++i) {\r
39961     vBv += u[i]*v[i];\r
39962     vv  += v[i]*v[i];\r
39963   }\r
39964   return Math.sqrt(vBv/vv);\r
39965 }\r
39966 \r
39967 for (var i = 6; i <= 48; i *= 2) {\r
39968     spectralnorm(i);\r
39969 }\r
39970 // The Computer Language Shootout\r
39971 // http://shootout.alioth.debian.org/\r
39972 //\r
39973 // contributed by Jesse Millikan\r
39974 // Base on the Ruby version by jose fco. gonzalez\r
39975 \r
39976 var l;\r
39977 var dnaInput = ">ONE Homo sapiens alu\n\\r
39978 GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n\\r
39979 TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n\\r
39980 AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n\\r
39981 GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n\\r
39982 CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n\\r
39983 GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n\\r
39984 GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n\\r
39985 TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n\\r
39986 AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n\\r
39987 GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n\\r
39988 AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n\\r
39989 AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n\\r
39990 GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n\\r
39991 CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n\\r
39992 AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n\\r
39993 TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n\\r
39994 TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n\\r
39995 GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n\\r
39996 TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n\\r
39997 CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n\\r
39998 CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n\\r
39999 TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n\\r
40000 CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n\\r
40001 AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n\\r
40002 GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n\\r
40003 TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n\\r
40004 TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n\\r
40005 GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n\\r
40006 GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n\\r
40007 ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n\\r
40008 TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n\\r
40009 CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n\\r
40010 CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n\\r
40011 GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n\\r
40012 CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n\\r
40013 GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n\\r
40014 GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n\\r
40015 GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n\\r
40016 GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n\\r
40017 GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n\\r
40018 AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n\\r
40019 CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n\\r
40020 GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n\\r
40021 AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n\\r
40022 GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n\\r
40023 ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n\\r
40024 GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC\n\\r
40025 GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC\n\\r
40026 GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG\n\\r
40027 TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA\n\\r
40028 AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG\n\\r
40029 GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT\n\\r
40030 CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC\n\\r
40031 TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG\n\\r
40032 ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC\n\\r
40033 GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA\n\\r
40034 ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA\n\\r
40035 CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA\n\\r
40036 CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA\n\\r
40037 ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG\n\\r
40038 CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG\n\\r
40039 AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC\n\\r
40040 CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG\n\\r
40041 AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC\n\\r
40042 CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG\n\\r
40043 CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG\n\\r
40044 CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG\n\\r
40045 CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC\n\\r
40046 ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA\n\\r
40047 AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC\n\\r
40048 TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC\n\\r
40049 ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG\n\\r
40050 CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG\n\\r
40051 AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT\n\\r
40052 AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA\n\\r
40053 TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC\n\\r
40054 CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA\n\\r
40055 TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG\n\\r
40056 CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT\n\\r
40057 GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG\n\\r
40058 GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG\n\\r
40059 CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG\n\\r
40060 GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG\n\\r
40061 GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT\n\\r
40062 AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT\n\\r
40063 GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT\n\\r
40064 CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG\n\\r
40065 GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC\n\\r
40066 TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT\n\\r
40067 CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG\n\\r
40068 ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG\n\\r
40069 CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG\n\\r
40070 AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA\n\\r
40071 CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG\n\\r
40072 CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC\n\\r
40073 ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC\n\\r
40074 GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC\n\\r
40075 GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG\n\\r
40076 GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT\n\\r
40077 TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG\n\\r
40078 CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA\n\\r
40079 GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG\n\\r
40080 CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC\n\\r
40081 GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG\n\\r
40082 CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA\n\\r
40083 CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG\n\\r
40084 CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA\n\\r
40085 ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC\n\\r
40086 CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT\n\\r
40087 GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA\n\\r
40088 AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG\n\\r
40089 ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC\n\\r
40090 TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA\n\\r
40091 GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC\n\\r
40092 GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG\n\\r
40093 TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC\n\\r
40094 AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA\n\\r
40095 ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA\n\\r
40096 GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC\n\\r
40097 AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG\n\\r
40098 TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC\n\\r
40099 CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT\n\\r
40100 GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC\n\\r
40101 CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA\n\\r
40102 GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT\n\\r
40103 TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC\n\\r
40104 ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC\n\\r
40105 TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG\n\\r
40106 GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG\n\\r
40107 TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG\n\\r
40108 GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC\n\\r
40109 GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT\n\\r
40110 ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC\n\\r
40111 GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC\n\\r
40112 GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC\n\\r
40113 CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA\n\\r
40114 ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG\n\\r
40115 AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC\n\\r
40116 TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT\n\\r
40117 CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG\n\\r
40118 TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG\n\\r
40119 CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC\n\\r
40120 GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT\n\\r
40121 GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC\n\\r
40122 CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC\n\\r
40123 TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG\n\\r
40124 CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG\n\\r
40125 AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG\n\\r
40126 AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG\n\\r
40127 AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT\n\\r
40128 GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA\n\\r
40129 TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC\n\\r
40130 AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA\n\\r
40131 AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG\n\\r
40132 CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC\n\\r
40133 TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG\n\\r
40134 GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT\n\\r
40135 CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG\n\\r
40136 CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG\n\\r
40137 GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA\n\\r
40138 AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA\n\\r
40139 GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC\n\\r
40140 TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC\n\\r
40141 CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA\n\\r
40142 GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG\n\\r
40143 CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG\n\\r
40144 AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG\n\\r
40145 ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC\n\\r
40146 ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC\n\\r
40147 AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC\n\\r
40148 GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG\n\\r
40149 GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT\n\\r
40150 CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC\n\\r
40151 GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC\n\\r
40152 CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA\n\\r
40153 GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA\n\\r
40154 GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG\n\\r
40155 GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT\n\\r
40156 CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA\n\\r
40157 AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG\n\\r
40158 CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC\n\\r
40159 CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG\n\\r
40160 GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG\n\\r
40161 GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT\n\\r
40162 TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA\n\\r
40163 ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG\n\\r
40164 CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA\n\\r
40165 ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA\n\\r
40166 GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG\n\\r
40167 TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC\n\\r
40168 GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA\n\\r
40169 GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT\n\\r
40170 GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT\n\\r
40171 GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG\n\\r
40172 TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT\n\\r
40173 TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC\n\\r
40174 TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC\n\\r
40175 GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT\n\\r
40176 CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC\n\\r
40177 TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA\n\\r
40178 GATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGG\n\\r
40179 GCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCT\n\\r
40180 GAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT\n\\r
40181 ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAG\n\\r
40182 GCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTG\n\\r
40183 CACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCA\n\\r
40184 CGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTT\n\\r
40185 CGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCC\n\\r
40186 GGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGC\n\\r
40187 TTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGG\n\\r
40188 GCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCC\n\\r
40189 AGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTG\n\\r
40190 GCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCG\n\\r
40191 CGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAG\n\\r
40192 GCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAG\n\\r
40193 ACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAG\n\\r
40194 GCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGA\n\\r
40195 AACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATC\n\\r
40196 CCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAG\n\\r
40197 TGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAA\n\\r
40198 AAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCG\n\\r
40199 GATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTA\n\\r
40200 CTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGG\n\\r
40201 AGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCG\n\\r
40202 CGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCG\n\\r
40203 GTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGT\n\\r
40204 CAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAA\n\\r
40205 AATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGG\n\\r
40206 AGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTC\n\\r
40207 CAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCT\n\\r
40208 GTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA\n\\r
40209 CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCG\n\\r
40210 TGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAA\n\\r
40211 CCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGAC\n\\r
40212 AGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCAC\n\\r
40213 TTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAA\n\\r
40214 CATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGC\n\\r
40215 CTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGA\n\\r
40216 GGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCC\n\\r
40217 GTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGA\n\\r
40218 GGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCC\n\\r
40219 CGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGC\n\\r
40220 TACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGC\n\\r
40221 CGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGC\n\\r
40222 CGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCA\n\\r
40223 CCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAA\n\\r
40224 AATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCT\n\\r
40225 GAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCA\n\\r
40226 CTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGC\n\\r
40227 TCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGA\n\\r
40228 GTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTA\n\\r
40229 GCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAAT\n\\r
40230 CGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCC\n\\r
40231 TGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAAT\n\\r
40232 CCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGC\n\\r
40233 CTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTG\n\\r
40234 GCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGG\n\\r
40235 GAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGC\n\\r
40236 GAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG\n\\r
40237 GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGG\n\\r
40238 TGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTA\n\\r
40239 ATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTG\n\\r
40240 CAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTC\n\\r
40241 AAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGG\n\\r
40242 GCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCT\n\\r
40243 CTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTC\n\\r
40244 GGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGA\n\\r
40245 TCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGC\n\\r
40246 GCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGA\n\\r
40247 GGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATAC\n\\r
40248 AAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGC\n\\r
40249 AGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCA\n\\r
40250 CTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACG\n\\r
40251 CCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCG\n\\r
40252 AGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGG\n\\r
40253 GCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTT\n\\r
40254 GAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGC\n\\r
40255 GACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAG\n\\r
40256 CACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGC\n\\r
40257 CAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCG\n\\r
40258 CGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGC\n\\r
40259 GGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGAC\n\\r
40260 TCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGC\n\\r
40261 CGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAA\n\\r
40262 CCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCC\n\\r
40263 AGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTG\n\\r
40264 AGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA\n\\r
40265 GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n\\r
40266 TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n\\r
40267 AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n\\r
40268 GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n\\r
40269 CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n\\r
40270 GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n\\r
40271 GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n\\r
40272 TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n\\r
40273 AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n\\r
40274 GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n\\r
40275 AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n\\r
40276 AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n\\r
40277 GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n\\r
40278 CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n\\r
40279 AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n\\r
40280 TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n\\r
40281 TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n\\r
40282 GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n\\r
40283 TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n\\r
40284 CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n\\r
40285 \r
40286 CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n\\r
40287 TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n\\r
40288 CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n\\r
40289 AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n\\r
40290 GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n\\r
40291 TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n\\r
40292 TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n\\r
40293 GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n\\r
40294 GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n\\r
40295 ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n\\r
40296 TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n\\r
40297 CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n\\r
40298 CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n\\r
40299 GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n\\r
40300 CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n\\r
40301 GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n\\r
40302 GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n\\r
40303 GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n\\r
40304 GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n\\r
40305 GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n\\r
40306 AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n\\r
40307 CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n\\r
40308 GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n\\r
40309 AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n\\r
40310 GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n\\r
40311 ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n\\r
40312 GAGGCTGAGGCAGGAGAATC\n\\r
40313 >TWO IUB ambiguity codes\n\\r
40314 cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg\n\\r
40315 tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa\n\\r
40316 NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt\n\\r
40317 cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga\n\\r
40318 gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa\n\\r
40319 HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca\n\\r
40320 tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt\n\\r
40321 tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt\n\\r
40322 acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct\n\\r
40323 tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt\n\\r
40324 gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa\n\\r
40325 accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt\n\\r
40326 RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt\n\\r
40327 tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag\n\\r
40328 cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg\n\\r
40329 ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat\n\\r
40330 actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg\n\\r
40331 YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa\n\\r
40332 KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata\n\\r
40333 aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa\n\\r
40334 aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg\n\\r
40335 gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc\n\\r
40336 tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK\n\\r
40337 tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt\n\\r
40338 ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg\n\\r
40339 ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa\n\\r
40340 BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt\n\\r
40341 aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc\n\\r
40342 tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc\n\\r
40343 cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac\n\\r
40344 aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga\n\\r
40345 tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga\n\\r
40346 aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD\n\\r
40347 gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg\n\\r
40348 ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV\n\\r
40349 taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa\n\\r
40350 ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat\n\\r
40351 gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg\n\\r
40352 gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa\n\\r
40353 tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt\n\\r
40354 tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt\n\\r
40355 taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca\n\\r
40356 cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag\n\\r
40357 aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt\n\\r
40358 cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt\n\\r
40359 ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW\n\\r
40360 attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag\n\\r
40361 ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa\n\\r
40362 attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc\n\\r
40363 tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta\n\\r
40364 aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata\n\\r
40365 cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc\n\\r
40366 gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg\n\\r
40367 attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca\n\\r
40368 BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga\n\\r
40369 DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat\n\\r
40370 tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM\n\\r
40371 tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR\n\\r
40372 tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg\n\\r
40373 taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc\n\\r
40374 aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc\n\\r
40375 DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa\n\\r
40376 VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt\n\\r
40377 agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat\n\\r
40378 gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt\n\\r
40379 tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt\n\\r
40380 catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt\n\\r
40381 tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR\n\\r
40382 aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat\n\\r
40383 aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac\n\\r
40384 acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS\n\\r
40385 tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga\n\\r
40386 aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM\n\\r
40387 acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt\n\\r
40388 RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt\n\\r
40389 RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta\n\\r
40390 tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac\n\\r
40391 gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt\n\\r
40392 YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc\n\\r
40393 ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt\n\\r
40394 ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat\n\\r
40395 gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta\n\\r
40396 KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD\n\\r
40397 aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg\n\\r
40398 gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH\n\\r
40399 taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact\n\\r
40400 VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV\n\\r
40401 NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa\n\\r
40402 MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag\n\\r
40403 cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata\n\\r
40404 ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg\n\\r
40405 tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN\n\\r
40406 aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc\n\\r
40407 actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg\n\\r
40408 tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga\n\\r
40409 gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa\n\\r
40410 BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca\n\\r
40411 aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata\n\\r
40412 aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat\n\\r
40413 YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt\n\\r
40414 aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW\n\\r
40415 cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata\n\\r
40416 tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata\n\\r
40417 tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt\n\\r
40418 MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac\n\\r
40419 taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta\n\\r
40420 tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS\n\\r
40421 RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc\n\\r
40422 agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata\n\\r
40423 NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa\n\\r
40424 gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata\n\\r
40425 aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt\n\\r
40426 ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW\n\\r
40427 cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt\n\\r
40428 tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa\n\\r
40429 RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt\n\\r
40430 tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD\n\\r
40431 gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc\n\\r
40432 tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta\n\\r
40433 ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM\n\\r
40434 tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc\n\\r
40435 ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc\n\\r
40436 BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt\n\\r
40437 gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga\n\\r
40438 acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag\n\\r
40439 gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc\n\\r
40440 taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat\n\\r
40441 acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta\n\\r
40442 tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt\n\\r
40443 catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa\n\\r
40444 tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB\n\\r
40445 atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR\n\\r
40446 ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta\n\\r
40447 ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta\n\\r
40448 cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK\n\\r
40449 SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW\n\\r
40450 VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc\n\\r
40451 BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct\n\\r
40452 NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt\n\\r
40453 tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa\n\\r
40454 ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa\n\\r
40455 cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa\n\\r
40456 VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR\n\\r
40457 atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac\n\\r
40458 aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc\n\\r
40459 tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac\n\\r
40460 RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag\n\\r
40461 gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc\n\\r
40462 tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact\n\\r
40463 attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc\n\\r
40464 atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga\n\\r
40465 cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt\n\\r
40466 NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR\n\\r
40467 ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat\n\\r
40468 cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg\n\\r
40469 aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac\n\\r
40470 agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR\n\\r
40471 tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga\n\\r
40472 ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg\n\\r
40473 ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa\n\\r
40474 tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag\n\\r
40475 taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg\n\\r
40476 tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN\n\\r
40477 YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt\n\\r
40478 ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa\n\\r
40479 tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat\n\\r
40480 ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg\n\\r
40481 attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt\n\\r
40482 atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW\n\\r
40483 YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta\n\\r
40484 gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV\n\\r
40485 MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta\n\\r
40486 tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt\n\\r
40487 ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa\n\\r
40488 aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa\n\\r
40489 BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM\n\\r
40490 tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK\n\\r
40491 StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV\n\\r
40492 cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN\n\\r
40493 atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg\n\\r
40494 atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg\n\\r
40495 ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct\n\\r
40496 gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM\n\\r
40497 tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD\n\\r
40498 BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc\n\\r
40499 agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga\n\\r
40500 HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR\n\\r
40501 tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt\n\\r
40502 aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa\n\\r
40503 catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB\n\\r
40504 aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat\n\\r
40505 tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt\n\\r
40506 cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag\n\\r
40507 DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat\n\\r
40508 gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta\n\\r
40509 tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM\n\\r
40510 atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc\n\\r
40511 KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt\n\\r
40512 tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata\n\\r
40513 tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK\n\\r
40514 taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt\n\\r
40515 NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa\n\\r
40516 HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa\n\\r
40517 ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg\n\\r
40518 tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK\n\\r
40519 cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga\n\\r
40520 ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca\n\\r
40521 HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg\n\\r
40522 gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS\n\\r
40523 BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg\n\\r
40524 gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat\n\\r
40525 KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact\n\\r
40526 cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat\n\\r
40527 tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD\n\\r
40528 taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM\n\\r
40529 gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt\n\\r
40530 aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat\n\\r
40531 acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta\n\\r
40532 RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc\n\\r
40533 attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac\n\\r
40534 KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS\n\\r
40535 KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD\n\\r
40536 gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB\n\\r
40537 aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct\n\\r
40538 aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga\n\\r
40539 ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY\n\\r
40540 tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga\n\\r
40541 aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta\n\\r
40542 tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY\n\\r
40543 MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc\n\\r
40544 cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta\n\\r
40545 caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt\n\\r
40546 ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc\n\\r
40547 acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat\n\\r
40548 tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc\n\\r
40549 gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa\n\\r
40550 atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga\n\\r
40551 aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat\n\\r
40552 NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt\n\\r
40553 taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa\n\\r
40554 aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat\n\\r
40555 ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca\n\\r
40556 DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata\n\\r
40557 tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat\n\\r
40558 aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa\n\\r
40559 ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM\n\\r
40560 ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca\n\\r
40561 RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa\n\\r
40562 aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac\n\\r
40563 aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt\n\\r
40564 aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK\n\\r
40565 tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat\n\\r
40566 atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR\n\\r
40567 BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc\n\\r
40568 gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct\n\\r
40569 cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN\n\\r
40570 RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat\n\\r
40571 taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt\n\\r
40572 aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt\n\\r
40573 gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct\n\\r
40574 gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa\n\\r
40575 aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta\n\\r
40576 gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg\n\\r
40577 ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat\n\\r
40578 MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct\n\\r
40579 SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY\n\\r
40580 aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt\n\\r
40581 VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat\n\\r
40582 HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc\n\\r
40583 agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt\n\\r
40584 gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg\n\\r
40585 agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg\n\\r
40586 tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag\n\\r
40587 gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga\n\\r
40588 VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg\n\\r
40589 tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV\n\\r
40590 MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt\n\\r
40591 actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa\n\\r
40592 WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa\n\\r
40593 tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD\n\\r
40594 KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct\n\\r
40595 BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac\n\\r
40596 attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB\n\\r
40597 VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD\n\\r
40598 aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca\n\\r
40599 tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat\n\\r
40600 tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK\n\\r
40601 tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt\n\\r
40602 VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta\n\\r
40603 tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat\n\\r
40604 ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa\n\\r
40605 tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg\n\\r
40606 WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta\n\\r
40607 tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc\n\\r
40608 tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct\n\\r
40609 MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat\n\\r
40610 tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac\n\\r
40611 atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg\n\\r
40612 aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt\n\\r
40613 aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa\n\\r
40614 aatYggtaRtatNtHcaatcaHtagVtgtattataNggaMtcttHtNagctaaaggtaga\n\\r
40615 YctMattNaMVNtcKtactBKcaHHcBttaSagaKacataYgctaKaYgttYcgacWVtt\n\\r
40616 WtSagcaacatcccHaccKtcttaacgaKttcacKtNtacHtatatRtaaatacactaBt\n\\r
40617 ttgaHaRttggttWtatYagcatYDatcggagagcWBataagRtacctataRKgtBgatg\n\\r
40618 aDatataSttagBaHtaatNtaDWcWtgtaattacagKttcNtMagtattaNgtctcgtc\n\\r
40619 ctcttBaHaKcKccgtRcaaYagSattaagtKataDatatatagtcDtaacaWHcaKttD\n\\r
40620 gaaRcgtgYttgtcatatNtatttttatggccHtgDtYHtWgttatYaacaattcaWtat\n\\r
40621 NgctcaaaSttRgctaatcaaatNatcgtttaBtNNVtgttataagcaaagattBacgtD\n\\r
40622 atttNatttaaaDcBgtaSKgacgtagataatttcHMVNttgttBtDtgtaWKaaRMcKM\n\\r
40623 tHtaVtagataWctccNNaSWtVaHatctcMgggDgtNHtDaDttatatVWttgttattt\n\\r
40624 aacctttcacaaggaSaDcggttttttatatVtctgVtaacaStDVaKactaMtttaSNa\n\\r
40625 gtgaaattaNacttSKctattcctctaSagKcaVttaagNaVcttaVaaRNaHaaHttat\n\\r
40626 gtHttgtgatMccaggtaDcgaccgtWgtWMtttaHcRtattgScctatttKtaaccaag\n\\r
40627 tYagaHgtWcHaatgccKNRtttagtMYSgaDatctgtgaWDtccMNcgHgcaaacNDaa\n\\r
40628 aRaStDWtcaaaaHKtaNBctagBtgtattaactaattttVctagaatggcWSatMaccc\n\\r
40629 ttHttaSgSgtgMRcatRVKtatctgaaaccDNatYgaaVHNgatMgHRtacttaaaRta\n\\r
40630 tStRtDtatDttYatattHggaBcttHgcgattgaKcKtttcRataMtcgaVttWacatN\n\\r
40631 catacctRataDDatVaWNcggttgaHtgtMacVtttaBHtgagVttMaataattatgtt\n\\r
40632 cttagtttgtgcDtSatttgBtcaacHattaaBagVWcgcaSYttMgcttacYKtVtatc\n\\r
40633 aYaKctgBatgcgggcYcaaaaacgNtctagKBtattatctttKtaVttatagtaYtRag\n\\r
40634 NtaYataaVtgaatatcHgcaaRataHtacacatgtaNtgtcgYatWMatttgaactacR\n\\r
40635 ctaWtWtatacaatctBatatgYtaagtatgtgtatSttactVatcttYtaBcKgRaSgg\n\\r
40636 RaaaaatgcagtaaaWgtaRgcgataatcBaataccgtatttttccatcNHtatWYgatH\n\\r
40637 SaaaDHttgctgtccHtggggcctaataatttttctatattYWtcattBtgBRcVttaVM\n\\r
40638 RSgctaatMagtYtttaaaaatBRtcBttcaaVtaacagctccSaaSttKNtHtKYcagc\n\\r
40639 agaaaccccRtttttaaDcDtaStatccaagcgctHtatcttaDRYgatDHtWcaaaBcW\n\\r
40640 gKWHttHataagHacgMNKttMKHccaYcatMVaacgttaKgYcaVaaBtacgcaacttt\n\\r
40641 MctaaHaatgtBatgagaSatgtatgSRgHgWaVWgataaatatttccKagVgataattW\n\\r
40642 aHNcYggaaatgctHtKtaDtctaaagtMaatVDVactWtSaaWaaMtaHtaSKtcBRaN\n\\r
40643 cttStggtBttacNagcatagRgtKtgcgaacaacBcgKaatgataagatgaaaattgta\n\\r
40644 ctgcgggtccHHWHaaNacaBttNKtKtcaaBatatgctaHNgtKcDWgtttatNgVDHg\n\\r
40645 accaacWctKaaggHttgaRgYaatHcaBacaatgagcaaattactgtaVaaYaDtagat\n\\r
40646 tgagNKggtggtgKtWKaatacagDRtatRaMRtgattDggtcaaYRtatttNtagaDtc\n\\r
40647 acaaSDctDtataatcgtactaHttatacaatYaacaaHttHatHtgcgatRRttNgcat\n\\r
40648 SVtacWWgaaggagtatVMaVaaattScDDKNcaYBYaDatHgtctatBagcaacaagaa\n\\r
40649 tgagaaRcataaKNaRtBDatcaaacgcattttttaaBtcSgtacaRggatgtMNaattg\n\\r
40650 gatatWtgagtattaaaVctgcaYMtatgatttttYgaHtgtcttaagWBttHttgtctt\n\\r
40651 attDtcgtatWtataataSgctaHagcDVcNtaatcaagtaBDaWaDgtttagYctaNcc\n\\r
40652 DtaKtaHcttaataacccaRKtacaVaatNgcWRaMgaattatgaBaaagattVYaHMDc\n\\r
40653 aDHtcRcgYtcttaaaWaaaVKgatacRtttRRKYgaatacaWVacVcRtatMacaBtac\n\\r
40654 tggMataaattttHggNagSctacHgtBagcgtcgtgattNtttgatSaaggMttctttc\n\\r
40655 ttNtYNagBtaaacaaatttMgaccttacataattgYtcgacBtVMctgStgMDtagtaR\n\\r
40656 ctHtatgttcatatVRNWataDKatWcgaaaaagttaaaagcacgHNacgtaatctttMR\n\\r
40657 tgacttttDacctataaacgaaatatgattagaactccSYtaBctttaataacWgaaaYa\n\\r
40658 tagatgWttcatKtNgatttttcaagHtaYgaaRaDaagtaggagcttatVtagtctttc\n\\r
40659 attaaaatcgKtattaRttacagVaDatgcatVgattgggtctttHVtagKaaRBtaHta\n\\r
40660 aggccccaaaaKatggtttaMWgtBtaaacttcactttKHtcgatctccctaYaBacMgt\n\\r
40661 cttBaBaNgcgaaacaatctagtHccHtKttcRtRVttccVctttcatacYagMVtMcag\n\\r
40662 aMaaacaataBctgYtaatRaaagattaaccatVRatHtaRagcgcaBcgDttStttttc\n\\r
40663 VtttaDtKgcaaWaaaaatSccMcVatgtKgtaKgcgatatgtagtSaaaDttatacaaa\n\\r
40664 catYaRRcVRHctKtcgacKttaaVctaDaatgttMggRcWaacttttHaDaKaDaBctg\n\\r
40665 taggcgtttaHBccatccattcNHtDaYtaataMttacggctNVaacDattgatatttta\n\\r
40666 cVttSaattacaaRtataNDgacVtgaacataVRttttaDtcaaacataYDBtttaatBa\n\\r
40667 DtttYDaDaMccMttNBttatatgagaaMgaNtattHccNataattcaHagtgaaggDga\n\\r
40668 tgtatatatgYatgaStcataaBStWacgtcccataRMaaDattggttaaattcMKtctM\n\\r
40669 acaBSactcggaatDDgatDgcWctaacaccgggaVcacWKVacggtaNatatacctMta\n\\r
40670 tgatagtgcaKagggVaDtgtaacttggagtcKatatcgMcttRaMagcattaBRaStct\n\\r
40671 YSggaHYtacaactMBaagDcaBDRaaacMYacaHaattagcattaaaHgcgctaaggSc\n\\r
40672 cKtgaaKtNaBtatDDcKBSaVtgatVYaagVtctSgMctacgttaacWaaattctSgtD\n\\r
40673 actaaStaaattgcagBBRVctaatatacctNttMcRggctttMttagacRaHcaBaacV\n\\r
40674 KgaataHttttMgYgattcYaNRgttMgcVaaacaVVcDHaatttgKtMYgtatBtVVct\n\\r
40675 WgVtatHtacaaHttcacgatagcagtaaNattBatatatttcVgaDagcggttMaagtc\n\\r
40676 ScHagaaatgcYNggcgtttttMtStggtRatctacttaaatVVtBacttHNttttaRca\n\\r
40677 aatcacagHgagagtMgatcSWaNRacagDtatactaaDKaSRtgattctccatSaaRtt\n\\r
40678 aaYctacacNtaRtaactggatgaccYtacactttaattaattgattYgttcagDtNKtt\n\\r
40679 agDttaaaaaaaBtttaaNaYWKMBaaaacVcBMtatWtgBatatgaacVtattMtYatM\n\\r
40680 NYDKNcKgDttDaVtaaaatgggatttctgtaaatWtctcWgtVVagtcgRgacttcccc\n\\r
40681 taDcacagcRcagagtgtWSatgtacatgttaaSttgtaaHcgatgggMagtgaacttat\n\\r
40682 RtttaVcaccaWaMgtactaatSSaHtcMgaaYtatcgaaggYgggcgtgaNDtgttMNg\n\\r
40683 aNDMtaattcgVttttaacatgVatgtWVMatatcaKgaaattcaBcctccWcttgaaWH\n\\r
40684 tWgHtcgNWgaRgctcBgSgaattgcaaHtgattgtgNagtDttHHgBttaaWcaaWagc\n\\r
40685 aSaHHtaaaVctRaaMagtaDaatHtDMtcVaWMtagSagcttHSattaacaaagtRacM\n\\r
40686 tRtctgttagcMtcaBatVKtKtKacgagaSNatSactgtatatcBctgagVtYactgta\n\\r
40687 aattaaaggcYgDHgtaacatSRDatMMccHatKgttaacgactKtgKagtcttcaaHRV\n\\r
40688 tccttKgtSataatttacaactggatDNgaacttcaRtVaagDcaWatcBctctHYatHa\n\\r
40689 DaaatttagYatSatccaWtttagaaatVaacBatHcatcgtacaatatcgcNYRcaata\n\\r
40690 YaRaYtgattVttgaatgaVaactcRcaNStgtgtattMtgaggtNttBaDRcgaaaagc\n\\r
40691 tNgBcWaWgtSaDcVtgVaatMKBtttcgtttctaaHctaaagYactgMtatBDtcStga\n\\r
40692 ccgtSDattYaataHctgggaYYttcggttaWaatctggtRagWMaDagtaacBccacta\n\\r
40693 cgHWMKaatgatWatcctgHcaBaSctVtcMtgtDttacctaVgatYcWaDRaaaaRtag\n\\r
40694 atcgaMagtggaRaWctctgMgcWttaagKBRtaaDaaWtctgtaagYMttactaHtaat\n\\r
40695 cttcataacggcacBtSgcgttNHtgtHccatgttttaaagtatcgaKtMttVcataYBB\n\\r
40696 aKtaMVaVgtattNDSataHcagtWMtaggtaSaaKgttgBtVtttgttatcatKcgHac\n\\r
40697 acRtctHatNVagSBgatgHtgaRaSgttRcctaacaaattDNttgacctaaYtBgaaaa\n\\r
40698 tagttattactcttttgatgtNNtVtgtatMgtcttRttcatttgatgacacttcHSaaa\n\\r
40699 ccaWWDtWagtaRDDVNacVaRatgttBccttaatHtgtaaacStcVNtcacaSRttcYa\n\\r
40700 gacagaMMttttgMcNttBcgWBtactgVtaRttctccaaYHBtaaagaBattaYacgat\n\\r
40701 ttacatctgtaaMKaRYtttttactaaVatWgctBtttDVttctggcDaHaggDaagtcg\n\\r
40702 aWcaagtagtWttHtgKtVataStccaMcWcaagataagatcactctHatgtcYgaKcat\n\\r
40703 cagatactaagNSStHcctRRNtattgtccttagttagMVgtatagactaactctVcaat\n\\r
40704 MctgtttgtgttgccttatWgtaBVtttctggMcaaKgDWtcgtaaYStgSactatttHg\n\\r
40705 atctgKagtagBtVacRaagRtMctatgggcaaaKaaaatacttcHctaRtgtDcttDat\n\\r
40706 taggaaatttcYHaRaaBttaatggcacKtgctHVcaDcaaaVDaaaVcgMttgtNagcg\n\\r
40707 taDWgtcgttaatDgKgagcSatatcSHtagtagttggtgtHaWtaHKtatagctgtVga\n\\r
40708 ttaBVaatgaataagtaatVatSttaHctttKtttgtagttaccttaatcgtagtcctgB\n\\r
40709 cgactatttVcMacHaaaggaatgDatggKtaHtgStatattaaSagctWcctccRtata\n\\r
40710 BaDYcgttgcNaagaggatRaaaYtaWgNtSMcaatttactaacatttaaWttHtatBat\n\\r
40711 tgtcgacaatNgattgcNgtMaaaKaBDattHacttggtRtttaYaacgVactBtaBaKt\n\\r
40712 gBttatgVttgtVttcaatcWcNctDBaaBgaDHacBttattNtgtDtatttVSaaacag\n\\r
40713 gatgcRatSgtaSaNtgBatagttcHBgcBBaaattaHgtDattatDaKaatBaaYaaMa\n\\r
40714 ataaataKtttYtagtBgMatNcatgtttgaNagtgttgtgKaNaSagtttgaSMaYBca\n\\r
40715 aaacDStagttVacaaaaactaaWttBaagtctgtgcgtMgtaattctcctacctcaNtt\n\\r
40716 taaccaaaaVtBcacataacaccccBcWMtatVtggaatgaWtcaaWaaaaaaaaWtDta\n\\r
40717 atatRcctDWtcctaccMtVVatKttaWaaKaaatataaagScHBagaggBaSMtaWaVt\n\\r
40718 atattactSaaaKNaactatNatccttgaYctattcaaaVgatttYHcRagattttaSat\n\\r
40719 aggttattcVtaaagaKgtattattKtRttNcggcRgtgtgtWYtaacHgKatKgatYta\n\\r
40720 cYagDtWcHBDctctgRaYKaYagcactKcacSaRtBttttBHKcMtNtcBatttatttt\n\\r
40721 tgSatVgaaagaWtcDtagDatatgMacaacRgatatatgtttgtKtNRaatatNatgYc\n\\r
40722 aHtgHataacKtgagtagtaacYttaNccaaatHcacaacaVDtagtaYtccagcattNt\n\\r
40723 acKtBtactaaagaBatVtKaaHBctgStgtBgtatgaSNtgDataaccctgtagcaBgt\n\\r
40724 gatcttaDataStgaMaccaSBBgWagtacKcgattgaDgNNaaaacacagtSatBacKD\n\\r
40725 gcgtataBKcatacactaSaatYtYcDaactHttcatRtttaatcaattataRtttgtaa\n\\r
40726 gMcgNttcatcBtYBagtNWNMtSHcattcRctttttRWgaKacKttgggagBcgttcgc\n\\r
40727 MaWHtaatactgtctctatttataVgtttaBScttttaBMaNaatMacactYtBMggtHa\n\\r
40728 cMagtaRtctgcatttaHtcaaaatttgagKtgNtactBacaHtcgtatttctMaSRagc\n\\r
40729 agttaatgtNtaaattgagagWcKtaNttagVtacgatttgaatttcgRtgtWcVatcgt\n\\r
40730 taaDVctgtttBWgaccagaaagtcSgtVtatagaBccttttcctaaattgHtatcggRa\n\\r
40731 ttttcaaggcYSKaagWaWtRactaaaacccBatMtttBaatYtaagaactSttcgaaSc\n\\r
40732 aatagtattgaccaagtgttttctaacatgtttNVaatcaaagagaaaNattaaRtttta\n\\r
40733 VaaaccgcaggNMtatattVctcaagaggaacgBgtttaacaagttcKcYaatatactaa\n\\r
40734 ccBaaaSggttcNtattctagttRtBacgScVctcaatttaatYtaaaaaaatgSaatga\n\\r
40735 tagaMBRatgRcMcgttgaWHtcaVYgaatYtaatctttYttatRaWtctgBtDcgatNa\n\\r
40736 tcKaBaDgatgtaNatWKctccgatattaacattNaaacDatgBgttctgtDtaaaMggt\n\\r
40737 gaBaSHataacgccSctaBtttaRBtcNHcDatcDcctagagtcRtaBgWttDRVHagat\n\\r
40738 tYatgtatcWtaHtttYcattWtaaagtctNgtStggRNcgcggagSSaaagaaaatYcH\n\\r
40739 DtcgctttaatgYcKBVSgtattRaYBaDaaatBgtatgaHtaaRaRgcaSWNtagatHa\n\\r
40740 acttNctBtcaccatctMcatattccaSatttgcgaDagDgtatYtaaaVDtaagtttWV\n\\r
40741 aagtagYatRttaagDcNgacKBcScagHtattatcDaDactaaaaaYgHttBcgaDttg\n\\r
40742 gataaaKSRcBMaBcgaBSttcWtgNBatRaccgattcatttataacggHVtaattcaca\n\\r
40743 agagVttaaRaatVVRKcgWtVgacctgDgYaaHaWtctttcacMagggatVgactagMa\n\\r
40744 aataKaaNWagKatagNaaWtaaaatttgaattttatttgctaaVgaHatBatcaaBWcB\n\\r
40745 gttcMatcgBaaNgttcgSNaggSaRtttgHtRtattaNttcDcatSaVttttcgaaaaa\n\\r
40746 ttgHatctaRaggSaNatMDaaatDcacgattttagaHgHaWtYgattaatHNSttatMS\n\\r
40747 gggNtcKtYatRggtttgtMWVtttaYtagcagBagHaYagttatatggtBacYcattaR\n\\r
40748 SataBatMtttaaatctHcaaaSaaaagttNSaaWcWRccRtKaagtBWtcaaattSttM\n\\r
40749 tattggaaaccttaacgttBtWatttatatWcDaatagattcctScacctaagggRaaYt\n\\r
40750 aNaatgVtBcttaaBaacaMVaaattatStYgRcctgtactatcMcVKatttcgSgatRH\n\\r
40751 MaaaHtagtaaHtVgcaaataatatcgKKtgccaatBNgaaWcVttgagttaKatagttc\n\\r
40752 aggKDatDtattgaKaVcaKtaataDataataHSaHcattagttaatRVYcNaHtaRcaa\n\\r
40753 ggtNHcgtcaaccaBaaagYtHWaaaRcKgaYaaDttgcWYtataRgaatatgtYtgcKt\n\\r
40754 aNttWacatYHctRaDtYtattcBttttatcSataYaYgttWaRagcacHMgtttHtYtt\n\\r
40755 YaatcggtatStttcgtRSattaaDaKMaatatactaNBaWgctacacYtgaYVgtgHta\n\\r
40756 aaRaaRgHtagtWattataaaSDaaWtgMattatcgaaaagtaYRSaWtSgNtBgagcRY\n\\r
40757 aMDtactaacttaWgtatctagacaagNtattHggataatYttYatcataDcgHgttBtt\n\\r
40758 ctttVttgccgaaWtaaaacgKgtatctaaaaaNtccDtaDatBMaMggaatNKtatBaa\n\\r
40759 atVtccRaHtaSacataHattgtttKVYattcataVaattWtcgtgMttcttKtgtctaa\n\\r
40760 cVtatctatatBRataactcgKatStatattcatHHRttKtccaacgtgggtgRgtgaMt\n\\r
40761 attattggctatcgtgacMtRcBDtcttgtactaatRHttttaagatcgVMDStattatY\n\\r
40762 BtttDttgtBtNttgRcMtYtgBacHaWaBaatDKctaagtgaaactaatgRaaKgatcc\n\\r
40763 aagNaaaatattaggWNtaagtatacttttKcgtcggSYtcttgRctataYcttatataa\n\\r
40764 agtatattaatttataVaacacaDHatctatttttKYVatHRactttaBHccaWagtact\n\\r
40765 BtcacgaVgcgttRtttttttSVgtSagtBaaattctgaHgactcttgMcattttagVta\n\\r
40766 agaattHctHtcaDaaNtaacRggWatagttcgtSttgaDatcNgNagctagDgatcNtt\n\\r
40767 KgttgtaDtctttRaaYStRatDtgMggactSttaDtagSaVtBDttgtDgccatcacaM\n\\r
40768 attaaaMtNacaVcgSWcVaaDatcaHaatgaattaMtatccVtctBtaattgtWattat\n\\r
40769 BRcWcaatgNNtactWYtDaKttaaatcactcagtRaaRgatggtKgcgccaaHgaggat\n\\r
40770 StattYcaNMtcaBttacttatgagDaNtaMgaaWtgtttcttctaHtMNgttatctaWW\n\\r
40771 atMtBtaaatagDVatgtBYtatcggcttaagacMRtaHScgatatYgRDtcattatSDa\n\\r
40772 HggaaataNgaWSRRaaaBaatagBattaDctttgHWNttacaataaaaaaatacggttt\n\\r
40773 gHgVtaHtWMttNtBtctagtMcgKMgHgYtataHaNagWtcaacYattaataYRgtaWK\n\\r
40774 gaBctataaccgatttaHaNBRaRaMtccggtNgacMtctcatttgcaattcWgMactta\n\\r
40775 caaDaaNtactWatVtttagccttMaatcagVaagtctVaaDaBtattaattaYtNaYtg\n\\r
40776 gattaKtaKctYaMtattYgatattataatKtVgDcttatatNBtcgttgtStttttMag\n\\r
40777 aggttaHYSttcKgtcKtDNtataagttataagSgttatDtRttattgttttSNggRtca\n\\r
40778 aKMNatgaatattgtBWtaMacctgggYgaSgaagYataagattacgagaatBtggtRcV\n\\r
40779 HtgYggaDgaYaKagWagctatagacgaaHgtWaNgacttHRatVaWacKYtgRVNgVcS\n\\r
40780 gRWctacatcKSactctgWYtBggtataagcttNRttVtgRcaWaaatDMatYattaact\n\\r
40781 ttcgaagRatSctgccttgcRKaccHtttSNVagtagHagBagttagaccaRtataBcca\n\\r
40782 taatSHatRtcHagacBWatagcaMtacaRtgtgaaBatctKRtScttccaNaatcNgta\n\\r
40783 atatWtcaMgactctBtWtaaNactHaaaaRctcgcatggctMcaaNtcagaaaaacaca\n\\r
40784 gtggggWttRttagtaagaVctVMtcgaatcttcMaaaHcaHBttcgattatgtcaDagc\n\\r
40785 YRtBtYcgacMgtDcagcgaNgttaataatagcagKYYtcgtaBtYctMaRtaRtDagaa\n\\r
40786 aacacatgYaBttgattattcgaaNttBctSataaMataWRgaHtttccgtDgaYtatgg\n\\r
40787 tDgHKgMtatttVtMtVagttaRatMattRagataaccctKctMtSttgaHagtcStcta\n\\r
40788 tttccSagatgttccacgaggYNttHRacgattcDatatDcataaaatBBttatcgaHtN\n\\r
40789 HaaatatDNaggctgaNcaaggagttBttMgRagVatBcRtaWgatgBtSgaKtcgHttt\n\\r
40790 gaatcaaDaHttcSBgHcagtVaaSttDcagccgttNBtgttHagYtattctttRWaaVt\n\\r
40791 SttcatatKaaRaaaNacaVtVctMtSDtDtRHRcgtaatgctcttaaatSacacaatcg\n\\r
40792 HattcaWcttaaaatHaaatcNctWttaNMcMtaKctVtcctaagYgatgatcYaaaRac\n\\r
40793 tctaRDaYagtaacgtDgaggaaatctcaaacatcaScttcKttNtaccatNtaNataca\n\\r
40794 tttHaaDHgcaDatMWaaBttcRggctMaagctVYcacgatcaDttatYtaatcKatWat\n\\r
40795 caatVYtNagatttgattgaYttttYgacttVtcKaRagaaaHVgDtaMatKYagagttN\n\\r
40796 atWttaccNtYtcDWgSatgaRgtMatgKtcgacaagWtacttaagtcgKtgatccttNc\n\\r
40797 ttatagMatHVggtagcgHctatagccctYttggtaattKNaacgaaYatatVctaataM\n\\r
40798 aaaYtgVtcKaYtaataacagaatHcacVagatYWHttagaaSMaatWtYtgtaaagNaa\n\\r
40799 acaVgaWtcacNWgataNttcaSagctMDaRttgNactaccgataMaaatgtttattDtc\n\\r
40800 aagacgctDHYYatggttcaagccNctccttcMctttagacBtaaWtaWVHggaaaaNat\n\\r
40801 ttaDtDtgctaaHHtMtatNtMtagtcatttgcaaaRatacagRHtatDNtgtDgaatVg\n\\r
40802 tVNtcaaatYBMaaaagcaKgtgatgatMgWWMaHttttMgMagatDtataaattaacca\n\\r
40803 actMtacataaattgRataatacgBtKtaataattRgtatDagDtcRDacctatRcagag\n\\r
40804 cSHatNtcaScNtttggacNtaaggaccgtgKNttgttNcttgaaRgYgRtNtcagttBc\n\\r
40805 ttttcHtKtgcttYaaNgYagtaaatgaatggWaMattBHtatctatSgtcYtgcHtaat\n\\r
40806 tHgaaMtHcagaaSatggtatgccaHBtYtcNattWtgtNgctttaggtttgtWatNtgH\n\\r
40807 tgcDttactttttttgcNtactKtWRaVcttcatagtgSNKaNccgaataaBttataata\n\\r
40808 YtSagctttaaatSttggctaaKSaatRccgWHgagDttaaatcatgagMtcgagtVtaD\n\\r
40809 ggaBtatttgDacataaacgtagYRagBWtgDStKDgatgaagttcattatttaKWcata\n\\r
40810 aatWRgatataRgttRacaaNKttNtKagaaYaStaactScattattaacgatttaaatg\n\\r
40811 DtaattagatHgaYataaactatggggatVHtgccgtNgatNYcaStRtagaccacWcaM\n\\r
40812 tatRagHgVactYtWHtcttcatgatWgagaKggagtatgaWtDtVtNaNtcgYYgtaaa\n\\r
40813 ctttaDtBactagtaDctatagtaatatttatatataacgHaaaRagKattSagttYtSt\n\\r
40814 >THREE Homo sapiens frequency\n\\r
40815 agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct\n\\r
40816 cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt\n\\r
40817 tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat\n\\r
40818 tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc\n\\r
40819 gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc\n\\r
40820 tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg\n\\r
40821 tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat\n\\r
40822 atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag\n\\r
40823 cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa\n\\r
40824 ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt\n\\r
40825 ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat\n\\r
40826 atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc\n\\r
40827 gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact\n\\r
40828 tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag\n\\r
40829 gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg\n\\r
40830 atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag\n\\r
40831 tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac\n\\r
40832 ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag\n\\r
40833 tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta\n\\r
40834 aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt\n\\r
40835 gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa\n\\r
40836 ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc\n\\r
40837 agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt\n\\r
40838 agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat\n\\r
40839 acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc\n\\r
40840 cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct\n\\r
40841 cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct\n\\r
40842 cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa\n\\r
40843 aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt\n\\r
40844 tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt\n\\r
40845 atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct\n\\r
40846 cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga\n\\r
40847 tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat\n\\r
40848 catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc\n\\r
40849 tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg\n\\r
40850 caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc\n\\r
40851 tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc\n\\r
40852 aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag\n\\r
40853 aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat\n\\r
40854 ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac\n\\r
40855 gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag\n\\r
40856 ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt\n\\r
40857 cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta\n\\r
40858 gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca\n\\r
40859 ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt\n\\r
40860 cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg\n\\r
40861 taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg\n\\r
40862 gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc\n\\r
40863 taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt\n\\r
40864 ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt\n\\r
40865 aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt\n\\r
40866 gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta\n\\r
40867 acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct\n\\r
40868 ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta\n\\r
40869 tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt\n\\r
40870 tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg\n\\r
40871 tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa\n\\r
40872 ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac\n\\r
40873 aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga\n\\r
40874 tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca\n\\r
40875 gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt\n\\r
40876 gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc\n\\r
40877 cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg\n\\r
40878 actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa\n\\r
40879 tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg\n\\r
40880 ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt\n\\r
40881 ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta\n\\r
40882 agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc\n\\r
40883 gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa\n\\r
40884 tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt\n\\r
40885 atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca\n\\r
40886 cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa\n\\r
40887 tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca\n\\r
40888 gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg\n\\r
40889 gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat\n\\r
40890 aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg\n\\r
40891 gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat\n\\r
40892 cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa\n\\r
40893 taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg\n\\r
40894 tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt\n\\r
40895 ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac\n\\r
40896 aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc\n\\r
40897 gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag\n\\r
40898 aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc\n\\r
40899 tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa\n\\r
40900 tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata\n\\r
40901 aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta\n\\r
40902 ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc\n\\r
40903 ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc\n\\r
40904 caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct\n\\r
40905 gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg\n\\r
40906 cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc\n\\r
40907 ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta\n\\r
40908 tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg\n\\r
40909 atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc\n\\r
40910 ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc\n\\r
40911 acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc\n\\r
40912 taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga\n\\r
40913 ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga\n\\r
40914 aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat\n\\r
40915 cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc\n\\r
40916 tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact\n\\r
40917 gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa\n\\r
40918 aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag\n\\r
40919 cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc\n\\r
40920 cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa\n\\r
40921 gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg\n\\r
40922 cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg\n\\r
40923 gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca\n\\r
40924 agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac\n\\r
40925 aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt\n\\r
40926 aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg\n\\r
40927 cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt\n\\r
40928 agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg\n\\r
40929 cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa\n\\r
40930 agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga\n\\r
40931 gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta\n\\r
40932 aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata\n\\r
40933 agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc\n\\r
40934 cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc\n\\r
40935 agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca\n\\r
40936 ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga\n\\r
40937 tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag\n\\r
40938 gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat\n\\r
40939 gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt\n\\r
40940 ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg\n\\r
40941 gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc\n\\r
40942 atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc\n\\r
40943 tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata\n\\r
40944 ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg\n\\r
40945 tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag\n\\r
40946 cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg\n\\r
40947 ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat\n\\r
40948 aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg\n\\r
40949 gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat\n\\r
40950 ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag\n\\r
40951 atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac\n\\r
40952 aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct\n\\r
40953 gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga\n\\r
40954 atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt\n\\r
40955 aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt\n\\r
40956 tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg\n\\r
40957 ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta\n\\r
40958 gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac\n\\r
40959 cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct\n\\r
40960 ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga\n\\r
40961 ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg\n\\r
40962 ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat\n\\r
40963 cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga\n\\r
40964 tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt\n\\r
40965 tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc\n\\r
40966 cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt\n\\r
40967 gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct\n\\r
40968 ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt\n\\r
40969 ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa\n\\r
40970 tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc\n\\r
40971 agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta\n\\r
40972 ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc\n\\r
40973 cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct\n\\r
40974 agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc\n\\r
40975 tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc\n\\r
40976 gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga\n\\r
40977 ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa\n\\r
40978 ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca\n\\r
40979 agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata\n\\r
40980 attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact\n\\r
40981 ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat\n\\r
40982 agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat\n\\r
40983 aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata\n\\r
40984 gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta\n\\r
40985 gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg\n\\r
40986 ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac\n\\r
40987 gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata\n\\r
40988 ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat\n\\r
40989 taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta\n\\r
40990 aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata\n\\r
40991 tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata\n\\r
40992 ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga\n\\r
40993 agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt\n\\r
40994 ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt\n\\r
40995 agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg\n\\r
40996 gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa\n\\r
40997 tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg\n\\r
40998 gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct\n\\r
40999 cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc\n\\r
41000 ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta\n\\r
41001 cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt\n\\r
41002 gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc\n\\r
41003 gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc\n\\r
41004 tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt\n\\r
41005 cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca\n\\r
41006 aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac\n\\r
41007 ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac\n\\r
41008 gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag\n\\r
41009 aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga\n\\r
41010 gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct\n\\r
41011 aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta\n\\r
41012 gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat\n\\r
41013 agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat\n\\r
41014 caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta\n\\r
41015 gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta\n\\r
41016 aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt\n\\r
41017 tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt\n\\r
41018 tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc\n\\r
41019 ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg\n\\r
41020 ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg\n\\r
41021 gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa\n\\r
41022 ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa\n\\r
41023 aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa\n\\r
41024 tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat\n\\r
41025 acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac\n\\r
41026 atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga\n\\r
41027 gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac\n\\r
41028 tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc\n\\r
41029 cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa\n\\r
41030 gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg\n\\r
41031 acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga\n\\r
41032 acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga\n\\r
41033 attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg\n\\r
41034 tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt\n\\r
41035 cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag\n\\r
41036 aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac\n\\r
41037 ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac\n\\r
41038 tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat\n\\r
41039 gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga\n\\r
41040 gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc\n\\r
41041 acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta\n\\r
41042 gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac\n\\r
41043 gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc\n\\r
41044 ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt\n\\r
41045 taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg\n\\r
41046 agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa\n\\r
41047 gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag\n\\r
41048 ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc\n\\r
41049 accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag\n\\r
41050 tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact\n\\r
41051 taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga\n\\r
41052 catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat\n\\r
41053 tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga\n\\r
41054 ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg\n\\r
41055 aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa\n\\r
41056 atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa\n\\r
41057 tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt\n\\r
41058 ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact\n\\r
41059 tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt\n\\r
41060 aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat\n\\r
41061 agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc\n\\r
41062 acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc\n\\r
41063 aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct\n\\r
41064 ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat\n\\r
41065 gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat\n\\r
41066 taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata\n\\r
41067 taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga\n\\r
41068 tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat\n\\r
41069 gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg\n\\r
41070 ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa\n\\r
41071 atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat\n\\r
41072 tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat\n\\r
41073 cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt\n\\r
41074 aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac\n\\r
41075 taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag\n\\r
41076 caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata\n\\r
41077 ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct\n\\r
41078 tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac\n\\r
41079 tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg\n\\r
41080 gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta\n\\r
41081 gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat\n\\r
41082 gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg\n\\r
41083 ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa\n\\r
41084 tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa\n\\r
41085 taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac\n\\r
41086 gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt\n\\r
41087 ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga\n\\r
41088 gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca\n\\r
41089 tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc\n\\r
41090 ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt\n\\r
41091 tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc\n\\r
41092 cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat\n\\r
41093 ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg\n\\r
41094 caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg\n\\r
41095 cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat\n\\r
41096 gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat\n\\r
41097 cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg\n\\r
41098 taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat\n\\r
41099 tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata\n\\r
41100 taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc\n\\r
41101 tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac\n\\r
41102 tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt\n\\r
41103 tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt\n\\r
41104 ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt\n\\r
41105 aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg\n\\r
41106 atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga\n\\r
41107 actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta\n\\r
41108 gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga\n\\r
41109 ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga\n\\r
41110 gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct\n\\r
41111 tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc\n\\r
41112 aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta\n\\r
41113 atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt\n\\r
41114 catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc\n\\r
41115 taaagataactctagtaaggccaactcccttcaatgctgttgccagttataatccaagag\n\\r
41116 ctgtccttttctgaaccatagcggcttctgaagcgaactagaagcaaagttggttctagc\n\\r
41117 cagacagccacataccctgtacgggtgtattactaaaactggtccggtattagttcacca\n\\r
41118 agggaggaattaggcaaaggatctaggtatgcaagtcggagtattacatccctaccctga\n\\r
41119 atccatcaataggttcctctgtactggccttcgcaatgagtattcaaggttgtacagccg\n\\r
41120 tataataataagatagtgactatgaacgggaagtaacccgctcaccttccccaaaacatt\n\\r
41121 gttatatctaagtattaaagtctgccgtagtgttaatactcgaaaataaacaactggcaa\n\\r
41122 attacaccgcacttaagccgcttttgatttatatttttccaatgcgcttttaaaaataat\n\\r
41123 tcagtcctacatactaattaagacccttaaacggagatatcacaagttaagttttaacca\n\\r
41124 tctcgactaggtggaactatagatacccaactcaatttatcattacctgtaatgttccta\n\\r
41125 gaaggattgcatttcatgtcaagacggtggagtttcacagcgaaacttcagtgtgaacag\n\\r
41126 attctgagaaatcacctaaacctattagtcagagcacccggttagaaccagttgtcaaaa\n\\r
41127 aatagagcggttgcatgagacagaagtaacgatgagatccgttgtaacgttgagacatct\n\\r
41128 ggcctatcgtcaatacagtcctcccttaaaaatatttttaaatactaggcaaacccaaca\n\\r
41129 taggttagtcctatgtgatacgccacatggtatatcattttgtaacgttacctagggata\n\\r
41130 atcaggaagtggaattacgcaaaagtagacagtgaaatgcttagggttatagtctagtcc\n\\r
41131 aaagataaaggataaagcacgtcagagaactatattagccgaatgggaatcattgttagg\n\\r
41132 agactgtggatcatgtctaaaaagcaacgcagaaacagtcatcgaaaaaatctcgttttt\n\\r
41133 gtttgaatctaaaagagctttgatgaccgatagtacctgtatactagttactgtattacg\n\\r
41134 tgtctaatgatttcggattggggtccccagaatcagacgtcattgtagacgattcaagtt\n\\r
41135 taccaatttaatttcccagctctccttggagaactatcgccaataattgcagtcactttc\n\\r
41136 cttttctgaaacgataaagccgtcagagttctctgcaacgttggacttacctgaggttct\n\\r
41137 aacccactttcggttctaatagtagttaacgacacaacgaataacctttactgtggggct\n\\r
41138 ttcacgatattttttcgcttattattaatggttacgtcataagctggtgtccaaattaag\n\\r
41139 gttaccggcttcgcagagtagttgtatccaagtataacttccctaatcataagatcgagg\n\\r
41140 tagaaaattaatgctgtctctaaccgaacagatatgtcccactatgtggtatggacgttg\n\\r
41141 ctaattacttctgaagggaaattggtcattatggatacgtgtctaccatcaggtcggacg\n\\r
41142 cagatatggttctgtcttcagttgatccaccgttctttataggataataactgacgatta\n\\r
41143 aagattatggtaaatagattaagccaattctcttcttgtcagtgaagcatccttaactga\n\\r
41144 cttgctctgcagcccctcatacatttagctattcaaagtaccggctcgtttcaaactctc\n\\r
41145 ccacctttggaagaggttgtcaacttgataagtatatcatttacagcattttttcggacg\n\\r
41146 tacctctaatgtttcattgcagaaaattagttttttctatcgcacattttgcaagtaacg\n\\r
41147 ttagagacacaattatctgcgaatgaactgctagatctgacgaccgggagcctcgcaaat\n\\r
41148 atcaaaaaagactgacatatatcaaggagtcgttgacaagtgctggtaagtcaattggtt\n\\r
41149 tatctgtcccggcgtttcgatcttaagctgaccatgcacggcagagtaatgtcactctcg\n\\r
41150 ttcttacaagtctgtctccaagggtcggcaaaaaagacccctccattctcgagcccactc\n\\r
41151 acgatatgtagggacgacaacttgtgcggcttatgaattgtctggactgcgggcgagggt\n\\r
41152 ccatatctccgaagttagaagggacatacctttagatgataagatcaattcttattgacg\n\\r
41153 aaattcatccacaacggggaacaacttcaccctagacttacgtctgaaaagacacctagc\n\\r
41154 gtcttataaaaggtcagtgccccgtttcgtaaggctggaattacctacgcaaacttaaac\n\\r
41155 ctcgcgcccttccttacgtatcgacaagatagaggctatcgcgaatgtactacggaggca\n\\r
41156 tgaatcatatactagaaccaagtgcctgtgatattaacaagatgatccgacgcgagcacc\n\\r
41157 gtaattctaggcataaaactccagcaatttgggggccgaaaacaaatgacgttagctaat\n\\r
41158 taattatatgacatgatcaaaggaggtcaatcacgcatcgagttcgacgtatattcattg\n\\r
41159 aacttcgtgcgtttgaaagaaacttttatgaaggcaaaattgatcctgtctcctatttca\n\\r
41160 tgcgtacctcctagttgataattccccgagcagtggttaggacacttttgtcggtatcaa\n\\r
41161 gttccggtctcaaaacgtaaaattctgtaatctgtatggatggtctgtgaattagttaat\n\\r
41162 ttttatgaagtcgtcgagacgcagttcctattgatttattctaaacggagatgtgcttcg\n\\r
41163 tgggactcggaagtagatctgtgtttatgattattgctactttagatgctgactgttaac\n\\r
41164 tccgtgttgtttttcaaccgtatatcacaaccgaattggatagaacctatagtttcaagt\n\\r
41165 tctgccacaaggtatcatatttacagttagtgctggttgcttctttcaaacgtggtgagt\n\\r
41166 ttgtgctatcacgtcaacggtagagctcagtggaccgagtgcgcgttcaaccctgttcca\n\\r
41167 gagagggtgtgatagcacatataccacgctcgtcgaggcgttcatgatagtttgcaagag\n\\r
41168 ccggtgttaaacacatattattattgttatccaactaatcggacctatgcataaagcatt\n\\r
41169 gtctaaacagaataattgcctatatacggtagttttagtgatttatatcttagtatcagt\n\\r
41170 tagagcttcgaactcttcaggttcctcatatttaacgttcttcgaaagcgaaaacttcta\n\\r
41171 caaacgaatgtaagcggttttccaagtagtacctataaatcacagaaagatctgtctcag\n\\r
41172 tatagttgaaatggtattcagctagtgacgtgtaccaattatcatagttcactcaagcaa\n\\r
41173 gacgctcattaacgaatatagacaagacactatatcatataataaaaaagaacatggtgc\n\\r
41174 tcgaacatagttgaattcaccatattgaaggggaatgctgacatgtaattcgctactaga\n\\r
41175 cgatcaattccctacttgtcaaagttgaactggtacgttcttggaattaaatatgattgc\n\\r
41176 gctggaccaaattgcgacttcttgagtttcagggcaaacgattgagccggaggatgtccg\n\\r
41177 tctcttacctttcttgcttatgataaacgacggtccctgtacatcactgggaattctcag\n\\r
41178 caaaaataattgggtaaatcgagactcgatgtattcggccacaaaggtgttagacgttaa\n\\r
41179 agattattcaacggggcgataataggatcataaccggtatgcaagcgcattgaaagagcc\n\\r
41180 atgagatccttatccgataaacgctgcacggtatgtgcagccttattgtcgatcacgaat\n\\r
41181 ttataaatgtagtctgggctgtaagttgaagacctaagttataatgaagtgcaataccaa\n\\r
41182 atcgattcatagtggattatcagactcaagatatctcctgataaattacagttgttaaga\n\\r
41183 tacggataaaatgagatttaagattagcagcctctaatctgtttcaatcccgttggaatg\n\\r
41184 tggtatgcgatcaaggttaagttaaaatcaagcctgtcttcagtcttgattcttgttctg\n\\r
41185 ccatcgcatgcggtctacgtgagttaatatgtagcttacgttctagcttgtgctaatctg\n\\r
41186 agtatagattcgtagaggaatattatcaagcttccacgcctcaacgtacgtgtattggtc\n\\r
41187 acacaagacactaaaagtggaagtagcgtaaactatagtctagttgttaaatgctcagtt\n\\r
41188 cttgttatattcgatatactcttggctaatttatgtctgagtatataaaattaatgatat\n\\r
41189 taacttgcatttcacggatcccttagaaaaagattttgaccgagcgcattataaacggtt\n\\r
41190 acaccgaatcaatagaagcatacccaatagctttctttgaatttattgcctgcgcaactt\n\\r
41191 ggctgactctctagatccgaataattctatatggtcgtgacgaaactagttcattactgt\n\\r
41192 ttaaaatgccaacatgtcttttgggccgataatggctctttgcaaaattactcaatgata\n\\r
41193 cgattgatcaaagcggtagttgctagtggtagcatgtaagtctatcaaatgtctgattat\n\\r
41194 ccgaaaatcttccaaaagagtccacgtaccatatctatctcatagcgacgcgaggggaac\n\\r
41195 cttatctaactatcattccatttaccgggtgactctcgatgcaggatccgattgggataa\n\\r
41196 attgcccagaaatggctcattcctgactaagggtaaggccgttctcagcaagggaacccc\n\\r
41197 gcgaatctaggcttataccatctagattgttaactacttgcctgtagttctacagccata\n\\r
41198 ctggacagttgtttctaaatgatcgggattcatgctagcactcctctgaatgcaccgcgt\n\\r
41199 aagtttaactattacgtccgtgggcagataaggatggaggctgtatgtatcttaactgtt\n\\r
41200 acctaatatggctggtaattatcaaagtaaggaccttaatgccatagcgctagcaatcgc\n\\r
41201 tttgtatactgaccatgtgccaacctctcttaatctgtaaaatataatgtcttagctaac\n\\r
41202 tgtggacgatcatgtctctgcctagagcttcgctgtatcaattcctatagccagcgtact\n\\r
41203 agtgacacaacaacaccgtgtgagaaaagatattagtccttacgtctgtctctctacagc\n\\r
41204 ttattgatgaggattgaacatggacatatagctccccctcaaaagcagatgctacctctt\n\\r
41205 tattccattctcgaacatttgccgaacttaatttcgacaaacctgaggtcacgtcttaat\n\\r
41206 ttatcggtaacgtcacgtccctttgagactggataaatatattaccaggggccaacgagc\n\\r
41207 aattgttggaggcgcttctataatacaaggtgtcttgtcaaagaaagacggcgtgcgtct\n\\r
41208 cgtgcaactcacttaaccaatattaatgtgaaacccccctctctcacatcttatgcggtg\n\\r
41209 tactgccctggtacatttcctgtacaggactccaacagtgtagattcctaagatagctgt\n\\r
41210 tggagttgcctcacgccagatcgaaaaactgaataaactagtgagctgagctgcagaaat\n\\r
41211 accgcttaattacttatgactagttcaaagggacctacgtgatgtcagacattgcaagga\n\\r
41212 agaaattaggtttgtgcgtcattttggctggactagcactccttacttcccctactattc\n\\r
41213 aaatgtcgtaaacagcatgagacaggatcgtgctgacatttaaggtctattgggaacgag\n\\r
41214 gctacctttggtcgcgcgctcgcgttctccgaatgaccgaaatgcatgagcacagtatgc\n\\r
41215 aattgcttatagatctaaggtctggtcgttgaaaccaagcacgtaggcctgggaaatcag\n\\r
41216 ttcttcctcagcaactacacaaaagcgtccaagcattagtacttgtagtaaatgtccgaa\n\\r
41217 cctatgcgctcatttgaaagtcaaaaaatatttttaagcagtaggcacctaacccgattc\n\\r
41218 ctctacttagtagctttctttgattctcagaattgactgcaatatcactgcacaattctg\n\\r
41219 tgccattactagacttctctgtattaacgtctcatcttactaacactcgcctaggacaca\n\\r
41220 tctgagagtgaagtatttcaatacatttactgaaatcttcagttctaaaatccccgaata\n\\r
41221 aggctcttatcggtttggccaacacaagaaaaaaacttcttgcaccactcaccttcatac\n\\r
41222 gcaggagcctggggaacttagtaataactatttcggcagacaaagcttataacaagttgc\n\\r
41223 cggcgcgtataatatttaaaagaccccttgagctgctcaattaaaacgctcacctggtat\n\\r
41224 aggctattagatagtgccgtcttagtaaggggcgggaattatcggataaactgatatttt\n\\r
41225 gataaaataaccgacttgttcacgacataagtcactaaggagattttatctttctccaaa\n\\r
41226 gtatatcttccttggataatttcaaagcgctgcaatttaagttctgttactagtttatgc\n\\r
41227 tgctgggaggtgaccggaaggcgtagtaatctagaggcaaattataagaagttcatcata\n\\r
41228 tcattttcgactacaaaaacaaggtgttgtatgccggcgcattgtgtaaactggacgagt\n\\r
41229 accctagatggaaaattatacgttaagccaagatttcgatgtaatgataattacctacac\n\\r
41230 atttttgctatccataggaacaagagctgttctataggctcgtggcatacgaacatttgc\n\\r
41231 tgccgctatgaatattggaagctcttcaactacagactctattcttaattgccgtcgaaa\n\\r
41232 atgggccgaatcggctattattaatactcggtttttccgaggggattgttgtcgacagtc\n\\r
41233 gtaattattattaatattgatgttggtgaggtcatttaaatacaaccttgcagacaatga\n\\r
41234 ataagggatccaatctctcatactccttttacaattgctcatgcccctatgcaaacctta\n\\r
41235 tgccgccacacctccgcaactctctcttctgaactgtaagtagcttcattactggtttga\n\\r
41236 gactatactgaagctgatgacattctaaaatggctattttcgaatgtgattcataatgtt\n\\r
41237 tatcgtttgggatggcagaatcacgttatttttgatatagcccgggtattctattgtata\n\\r
41238 gaacgtatgctacaagtcattccccgaagaagactagaagtaaacaacatgcgaccatcg\n\\r
41239 ttaagccacgcaaggctgtagctttatttcccgataacctatcttccataaatagcggac\n\\r
41240 agcaggatactgacgctcaacatcagtggttatggtctaatttttaacttttaataaggt\n\\r
41241 aacttcagcaggcatacacagtaactctttaatttataatcaaattagaagtctgacact\n\\r
41242 tcttatatttttctatcatccaacgcgatcgcccattagcttattgtgttactaataacg\n\\r
41243 tatctaaaccaatccttttcaagctactgcctatattgtcaatatatacaaacaacagga\n\\r
41244 tagtaggctgcttaaaaaatattgtcaaccgtgtacgctttacaatacccggaaatcaca\n\\r
41245 aactttgtagacaacgagtgaaatttatacactacgaagggccagcgtacaagacccatg\n\\r
41246 aattaggcgatatgtttattctgacatattggtttatccttaatctgtcgctgtaaaatg\n\\r
41247 aagccgcccccatccctgcgaattttttttcgaagattcacgactgaaatataaatacgt\n\\r
41248 ttggctatatttatgttggagggaggcaatagcctttactgttaaccgaagatttagcca\n\\r
41249 gtgagtgtgacactaaaacactggaataaatgcaggcgttcttctgggtaaaaggtttag\n\\r
41250 tcaatctcgcctataagttcatatagctctggatataattatctggcccatgcatttatc\n\\r
41251 atggcgcttggtgccctgtgtgaagccggcctctcatattgaaggtccgaagtattccat\n\\r
41252 gtacattaagatcactctctcattcatgcatcttggcttaacaaatctggttgtccaagc\n\\r
41253 tttccaggcacgtatggtacaaattcggatcgaatacttataaaaatgatatgttaaact\n\\r
41254 gtctaaaacgctcatctacaaagtaaagtgcactaaccaatagagtctcaagaccgtgta\n\\r
41255 atgctggtgcactgaatgtgtaatacggttagaagggattagttatgttacaaatccatt\n\\r
41256 gaaaacttaagaagcattgcgtgctcggagggtgcatcttttatcaagagactaacatta\n\\r
41257 ttttcaacgacgtacatgctttacaatagggtacttatcaaacgccgagaaacgcgccta\n\\r
41258 tagtgatgttatgattatgacccgatatccattggaccgaattttatgtaggttcccagc\n\\r
41259 gtactcgcgtaatatctcggtattgccataatgtaatacttgtcggtctctcccagatga\n\\r
41260 aaaagcgttacagagtatttcaatgaaaaacagcgcgcaacgtcaatacctttaggggta\n\\r
41261 acggccgctgatttcatatagatatacgataagttggtatagctctactaggtggcatcc\n\\r
41262 acaatcgttgcatttactatagctggttacaatcataatctataccgttccttacatact\n\\r
41263 accatagcgggatagcgtttttttgccgttgattgggtttaagaggatgtcagtctcatt\n\\r
41264 atatccgattcggtgggagagccgttgttttcaaatcgcacactttgtgacataatgtac\n\\r
41265 aagataacaaaactgatataagatataaactgtcaatatcaccttgacacttgaatcaaa\n\\r
41266 gtaaattaactcgcaaatataatttgactaattgggtgcagatttctcaattaataaaaa\n\\r
41267 aatggcaccggatgggcttacaagccccttatcattcacttgtatcatgatttccaagaa\n\\r
41268 caatagaatttgctagcaagtatgaacagagattcgaattgcatccacagtacgccggag\n\\r
41269 cgtttattttaatgtggatatgacgatgtactgttggcggcatttgctagtaaccggtcc\n\\r
41270 ttatttacgtagcgcacacgtaagcatgtctgggagaaatatggtggtacaatctcagag\n\\r
41271 aaagattacagtttggtttaaataggacttatcgggtcggaagtggaacttaataagcag\n\\r
41272 tacacaattgggcaacagacgtcttgcctattacaataggattacaatgcgttagatttc\n\\r
41273 agacacgttcgtgtttggctattcgtcaattccctaaatagttagacgatcaactattat\n\\r
41274 caaagtgattctttgttcatcctccattcatgtaacagatggcacactacgcataacgcc\n\\r
41275 gaggaattttaacgagatttaagagagcagttcgggcacaacccacttgactttataaca\n\\r
41276 gctcggcagcataaacggtaatatgtgacaaatttccaaacgttataagaacgtatgtgt\n\\r
41277 acttagaaaactaagtggttcatgttcaacagatgtgacgcagcaagcctaacttatcta\n\\r
41278 ttggttttgctataaaagaacaaagttacacagaatcctaagggcttgtttcacacttat\n\\r
41279 gcctagtgcttcaccatcttaaaatagcgaaaccggcacgaatcaaaccttaaaacaatg\n\\r
41280 cgcagatattggtgatggtgactccgggtatgataatggtaactgttgaccagcgcccac\n\\r
41281 ctcatcgaagtatagaaagtggttaggataaggatgagaccgaacttatttccggccata\n\\r
41282 actttagattttctacctagtacacaacatcagggcggacacgaaaccgccatcacatca\n\\r
41283 tataccaggtttaatttgcttaatgggggaagtgtcaacgaaccttcgaactttagcagg\n\\r
41284 catatggccattatatatggccccagagcagaatgctacagcagacaaaatttggattta\n\\r
41285 tgtagtttaatacctatcaaacttggtgtgaccatacttgtctaacgacagtgcacaaag\n\\r
41286 tgtaagttacaattattactactcagcagcttctgcaatgataaaatcttatcatacacg\n\\r
41287 tcacatatgataatatctacttagggggaacgggctccacaacctacatagtactcaata\n\\r
41288 cttacactattcgacaggcacaccaaacctgtacagtcccaaaagattgagtcaactttg\n\\r
41289 cagtactgcagatcacagtaatagcttagttagcgagtcaaaattagttttctacgagac\n\\r
41290 tgcacgaccgtgcaaatttccgatgtgttggctacaaatagcaacgtatgaatttgtttg\n\\r
41291 aagccacgtaaactgtacaaccttagagataagtctcaggctactaaaaacacgttgtgg\n\\r
41292 cactaacaggatcatggttgattcttacttattcggctgaccggcccaataagtaacctt\n\\r
41293 caactagaacagaataatcgggagtagtttaattcagtcaaggtgcaggtctcattgtaa\n\\r
41294 ctaacaagctctgtgtaaccaagttaaaatcgttttcttagcggattccctacttatgga\n\\r
41295 tttgagctcgtccacaatattcgatacaagaagtttgtggtccgtaacaacgaaatttta\n\\r
41296 attacgctgtgcagcctcatccaaggaattaatagaaggttgatggtaggctccgaacgc\n\\r
41297 tccatgattataatcaagtggactgtgcagtaaacgaggaaggtatcctgacgtcgtggt\n\\r
41298 gttcgtttttgttatttgtgccctatacgagtagataaaccatgaacagcacagtgtgaa\n\\r
41299 cccatggttgattttaggctaccttatttttaatttccgttacacagaaacgaattccac\n\\r
41300 aactaacatgccattaatttttcgatatcttataaaagatggtcgaaattcattcattta\n\\r
41301 ttttttttcggttctcgaaagtcaactaagctgtcgcgttttgtttctctttagaggtaa\n\\r
41302 aagtggctttgatctcctacgtttggatactagtcaaccattactccatttgatccgtga\n\\r
41303 gtatcacctgtctaacatccagcattatgactcctcggcgaagaaaagacacacttctta\n\\r
41304 gagtcgatgtgtattagctagggacacagttgtttaatacgatagtgagcccagggaggg\n\\r
41305 cagtgcgtcccccagtagatttattcagctagtgtaagtataagatatctcacccacgag\n\\r
41306 gttcaagtgatatgcagtcttagaataatacttatcctgaatttcgatattatgggtact\n\\r
41307 tcaataatccgctagcgctactttatgtctcgttggacagcaggacacatggcagtctta\n\\r
41308 aacactaaagacatcacctgaatgaatgtaatgggattacaagaatcaatgaggtattat\n\\r
41309 atacgacgtaggaaactctggatatatacagtaatctagttacgccatcgcacttcattc\n\\r
41310 ctctggaaacttagaagacatcagctgtacgtggaggaaccagacccccgtatgtagcca\n\\r
41311 aatagaaccaaagttgcttatacaaacacacccaatgacaatggaccgctggagttcgta\n\\r
41312 aactcggaacgtagtactgcacaaacccagcatttagcaataggagctacgtatgcaact\n\\r
41313 cccacgtggtaataccttcaagctatcaatatataggtgcctagctaatcgcattcgcaa\n\\r
41314 gcagtattcaagcttgtaaaccagtataataattacagaggctctatgaaacccaacttt\n\\r
41315 ccagctaaaagtcccaattaaatggttatttcgtacttttaaagtcgcccgttctgttat\n\\r
41316 tacgcgaattgattctactccaaaattaaacacaaattatcaaccgtttcatttatattt\n\\r
41317 gtcaatgcagctgtttaaaataaggctctactaaattataattaagacacttattaccag\n\\r
41318 atttctctagttaagtttgaaccagctcgactaccgcgaaagatacattcccttctctat\n\\r
41319 ttttcagttcatctatgggtcagagaagcattgaatttattctattcaccctcgtcgttc\n\\r
41320 acagcgaatcgtcagtgtgatcagtgtatgagaaatatcctaaaccgtttagtcagacca\n\\r
41321 cacgcttagaacaagtggtctaaaaagactgccctggaaggagtaagaagtatacagctg\n\\r
41322 atccggtgtatccttcagtcatctgccctatactaattacacgacgcaaggaaaaatagg\n\\r
41323 tttattttctaggcaaacccttcataggtgactccgatgtgttacgaatcatgcttgaga\n\\r
41324 atgtgctatcgttaccgacggataataacgatctccaatgaaccaaatgtagaatgtcta\n\\r
41325 ttgattacccttttactattcgacttagagataggagatagaacctcagtgtactttttt\n\\r
41326 agccgaatgggaatctttgggaggtgaatggccataaggtcgtaaatccaaccctcttaa\n\\r
41327 agtcttccatattatatcgttgttcgtggaatcgataacagatttgttgacccatagtaa\n\\r
41328 atgtatactagtttatgttgtaagtgtagattgttttccgattgccgtccaaactttatg\n\\r
41329 tcgtaattgtagaccagtaaagttgaccaaggtaagtgcccagcgatcctgcgagatcga\n\\r
41330 tcgccaatttttccagtcactgtaagtgtaggtttagataaagccgtatgagttatatca\n\\r
41331 taagggcctcggaaagcagcttcgaaccaaagttcccttataatagtagtttaactataa\n\\r
41332 aagtatatactggtctgtcgccctttcacgatttgttttaccggtttatgaagcgttacg\n\\r
41333 tcattagagcggctccaatttaaggttaacggcttccatgtgtagttgtatacaaggata\n\\r
41334 acttaaagtatctgttcagcgagctagttaagttatcctcgatagaacacaactcagagg\n\\r
41335 tcccaagatcgggtttgcaacttgctaatttattctcaaggcaaattgggaattatcgat\n\\r
41336 acctgtataccataaggtcgctcgatgtgatgcttatgtcttctggtgatcctaccttag\n\\r
41337 ttagtgctgattaacggaacattaatgtttatcgttttgagatttagccaattctctgat\n\\r
41338 tctaactcaagatgccttatctgacgtgctatgcagcccctaagtattttacattgtaat\n\\r
41339 aggacacgctcctttaaaactcgccaaaaggtcgttgtggttctctactggttaactata\n\\r
41340 taatttacagctttgttgagctagttcctctttggtttaagtcctcaatattagttggtt\n\\r
41341 cgagcgataagttggctagttaccttagtcactatattagatccgaatgttatgcttcat\n\\r
41342 ctgaagaccgccaccctccaaaatttcttttaagactcacttattgcaaggtgtaggtga\n\\r
41343 attcggctcgtttctcaagtggtgtatctgtacacgagtttccatattttcatcaacagc\n\\r
41344 caccgcacacttatgtcactctaggtattaaaagtcgctctacaaggggacgcaattaag\n\\r
41345 aaacagacatgctagtcaaaaataaacatagcgaggcaccactaattcggccgcttatca\n\\r
41346 atgggatgctctgcgcgagacgcgccagagctcagtagttagttcggacatacatttact\n\\r
41347 tcagatgatcaattagttttctacaaatgcttactctaccccgaaaaaagtcaccagact\n\\r
41348 cttacgtctctttagtatccttccgtcttatataaggtcagtcccccgtttcggtaccct\n\\r
41349 ggaatttactaagaataatgaaacagcccccaaggacgtacgtttacaaatgatagacca\n\\r
41350 gatcgcctagcttattccgacgcatgttgcatagaattgaaccaacggaatgtgagagta\n\\r
41351 actagatgagccgaccacagcacccgtttgcgtcgcagaatacgcctgatagttcggcca\n\\r
41352 cgaaatcatatgtcctttgagtattaagtatttgtaatgatcaatcgagctcaagcaagc\n\\r
41353 ttacacttcctcggatattcagggaacttagtgcctttgaaagatacgttgatcaacgaa\n\\r
41354 aaattgataatggctcatatggaatgcctacctcatagtgctgaattaacacagcactgc\n\\r
41355 ggacctaacttttcgaggtttcaagttcacgtctcaaaacctaataggctggaatatgta\n\\r
41356 gggatcctcggtgaatttgtgattgggtttgttgtagtactgaccaagtgaatattcttt\n\\r
41357 ttttctaaaagcagatctgctgccgggcactacgaaggagatctctgtgtatcattattg\n\\r
41358 cttcttgacatgatgactcttaaatcactgtgggtgtgcaaaacgatagcacaacccaat\n\\r
41359 tcgatagtacatattgttgatacttcgcactaaaccgttcatatttaaaggttgtgctcc\n\\r
41360 ttccttcgttaaatactggtgacttggtcctatctactattagctagacctctggggaac\n\\r
41361 cacgcccccgtaaaacctgtgcaagagagggggtcatacatcttagacatcgcgcctcca\n\\r
41362 ccagggaagcattgggtgattgaccaggtgtgtaacaaatatgattattcttatactaat\n\\r
41363 attagcaaagatgcataatgatttgtattaaatgtataattgaattgataagggtctttt\n\\r
41364 agtcagtgatagagtagtataaggtagacattagaactcttaaccggacgcagatttttc\n\\r
41365 ggtcttagtaagccaattagtcgacaaaacaaggtaagagcggttactagtagtacctat\n\\r
41366 aatgcactgaatcttcggtcgaagtatagttctaatgctatgcagattgtgacggcgaca\n\\r
41367 aatgttcagacttatatcatgaaacaagctcttgtaagtattgacaaatgaaaagattga\n\\r
41368 atatttttaaatacaaaatgcgcctacttattaggggaattaaccagattgaaggccaat\n\\r
41369 cctcacatgtaatgagataatagacgataaatgaaattcttgtaatagttgaactgctac\n\\r
41370 gtgatgggtattatatatgattgagatcctccaattgccgacgtcttgtcttgatgccca\n\\r
41371 aaagattgtcaacgaggagctccctcgcgtacctgtcgtccgtatcataaacgacgcgac\n\\r
41372 atgtacagcactccgaagtataagcaataataatgcgggtaatccagactagatcttttc\n\\r
41373 ggactcaatgcggtttcacggtaaacatgattaataccggagagtagtcgagcttatcag\n\\r
41374 cgatgcaagcgaattcattgtgccaggagatacgttgcagataaaaccggcaacgtatgt\n\\r
41375 caacaagttttggcgatctcgttgtttgtattcgacgaggcgcgggaacttcaagaacta\n\\r
41376 tcgtatattcaagtccattaccttttagtttcagactggtggagctgactaaagttatat\n\\r
41377 catcattttgtacactggtttagttaacgataatttcagatttaacatgaccagacgata\n\\r
41378 atcgctgtatatccagttggaatgtggtttgccagaaaggttaacttataatcaagcctc\n\\r
41379 tcttcagtcttgattcgtcgtatcccatccattgcgctatacctcagtgtatttggagct\n\\r
41380 gtagttataccgtgtgctaagatcagtagacatgacgagagcaatattatctaccttaca\n\\r
41381 agcatcaacggacgtctagtcggaacaaaagactctaaaactcgaacttcaggttaatat\n\\r
41382 actatagttctgtattcagcagttattcttatattcgatattatcttgcctattggatgt\n\\r
41383 ctgactttagtatattaatcatagtatctgccatgtaaaggtgccagtactaaatctgtt\n\\r
41384 tcacagtgcgaattataaacggttacaaccattaaagacaacaagaccctatagctttat\n\\r
41385 ttgaattttgtcaatgcgcaacttggagctcgcgatacatcccaattagtctatagggtc\n\\r
41386 gggacgattctacggcatttctggttataatgacaacatggattgtggcccgagaatcgc\n\\r
41387 tctttcattaattaagcaatcattacagtcttataagcgctacttccgagtggtagcagg\n\\r
41388 taactcgatataaggtcgcatgagccgaatagcttaaaaaacaggccaccgaacattgat\n\\r
41389 agagaataccgaccacagcgcaacctttgattactttcattaaattgtacggctcactcg\n\\r
41390 acatcaagcttaagattgcgataatgtgaactcaaatggatcagtactgaagaaccgtaa\n\\r
41391 cccacttcgcagaaagcgtacccagagaagatacgctgttacaatatacagggtgaaatt\n\\r
41392 attgcctgttcttcgtaaccatttcgccaaacttggttagaaatgatagccattcatgat\n\\r
41393 agaaataagctgaatgataccagtatctttaactatgtagtcagggggaagataacgatg\n\\r
41394 gtccatgtatgtttctgatatgtgacagtattggccgcgtaatttgctaacgaagctact\n\\r
41395 taatgcctttgagcttcatatagatttctttaatcaaaatcggcaaaaagatagtatgag\n\\r
41396 ctataatatatgctagtagagaactctggaccatcatctatatgaatactgattcgagcg\n\\r
41397 tgcaattactttagcctgcgtactactgactctacaaaacactctgagataagtttgtag\n\\r
41398 tcagtaagtcgctctctataaaccttttggatgaccattgtacagccacttatagatccc\n\\r
41399 aataaatagcacaggagacagagtttttcaatgctcgatcatttgccgatagtattttcg\n\\r
41400 tctaacctcagggcacctattatttgatacctaacctaacggccctttcacaatggagaa\n\\r
41401 atatatgacatcgggacaaacacaaatggtgggtggccaggagatatgacatggtggcgt\n\\r
41402 ctctaagaaacacggactccctctaggcaaactcacgtaaccaattttaatgtcaaacaa\n\\r
41403 aacgctcgaaaagattttgccgtgtaatgacctggtacattgactggtcaggaatacatc\n\\r
41404 actgtagttgccgtagtgtcctgttggtgttccatcaagacacatcgtataacgcaattt\n\\r
41405 acgacggacatcagatcaagttatacagattatttaagtatcacgtgtgcattgggacat\n\\r
41406 aagggatctcacacatgccttggaacatttttgctttgtgccgctttttcgctgcactac\n\\r
41407 caatccttacttaccagtatattcaaaggtcgttaacagaatgagaaaggttagggctct\n\\r
41408 aagttatcgtcgattgggatagacgagacatttgcgagcgccctccacggatacgaatct\n\\r
41409 cccatatcaatgtgaactggatgctatgcagtttagttcttacgtctcctagtggtaaaa\n\\r
41410 atcaaagtagcactcgcatagcagttattcagaacctaatacacaaaaccgtcaaacatt\n\\r
41411 ttctaattctaggtatgggccgatcataggagctaaggtgaaactcataaatgttttgtt\n\\r
41412 agatctagcatcctaaaaagatgcatatactgagtagctggcgtgcattctctcaattgt\n\\r
41413 atcctttttaactgaactagtcggtcccatttcgtgactgagatctattaaccgataaga\n\\r
41414 ttaataacactcgcattcgtatcagctcagagtgaagtttttcaataatttgactgatat\n\\r
41415 attaacttctaaaataaccctttaagcctcggatccgtttcccaatcacatcaaaaattc\n\\r
41416 ttattccaactatctacggattaacaacgtgcatggggatcgtagtaagaacttgttccg\n\\r
41417 atcactttgagtatatcaagttgacggcccggttattattgaatagaaacattcacctgc\n\\r
41418 taaattaaataccgcacatcggatacccgatttcagagggccgtcttactaagggcaggc\n\\r
41419 tttgttcggtttaactgagatgttcattattttacagtatgcttcaactaatatgtaacg\n\\r
41420 aaggacagtggatctgtctccatagtagatcttcagtcgtgaatttcataccgctcctat\n\\r
41421 ttaagttcgcgttcgagttgttgatcatggcacgtgaaagcaacccctagtattctagac\n\\r
41422 gaaaattttttctagttcatctgataatttgccaattcaaaaacaaccgctggtttcccg\n\\r
41423 gcgcattctctaaaatggaagtcgaacctagagccattatttgtcggtaacccatgagtt\n\\r
41424 ccttcttttcagaagttaatacactgtggtcctatacagaggaaaaacagcggttatata\n\\r
41425 cgatcgtggcataacaacattggatcaagatagcaatttggctacctattctaattctca\n\\r
41426 ctagattcggtattccactacaatatcggcagattaggattggatgaataatcggtgttt\n\\r
41427 aagtccggttgcgtctccaatctcctaatttttattaatattgatcttggtgacctattg\n\\r
41428 taaataaaaacttcaagactttgaataacggtgaaaagatagaagactcatttgaaaatg\n\\r
41429 gatcatccacagatccaaacattagcaagacactaatccccaactagctattctgatcgc\n\\r
41430 gatcgtgctgcagtactcctgtcacaatagtctgttcatgatctaattctttttgggctt\n\\r
41431 tgttcgatggtgattcagaatctttatccggtcgcttccctgtagctactttgtggggat\n\\r
41432 attgcccggggattatagggttgagatcgtttcctaaaagtatttaaaccaagtagactt\n\\r
41433 caactaaactacatcagaacatcgtgaagacaccatacgcggtacctttatttaccgata\n\\r
41434 acatttcttcaagaaataccggtaagcagcataatgaccctaaacagctcggggtatcgt\n\\r
41435 cgtagttttaaattttatttaggttactgctcaaggaataaaaactaactatttaattta\n\\r
41436 taataatattacaaggctcacactgattagatttgtctataagacttcgcgatcccccat\n\\r
41437 taccggattgtcttaagaataaactagataaaccatgcattttctagataaggcctttag\n\\r
41438 tctaattagatacaaaaaacacgatagttgcatccttaatttattgtgtcaaacctggaa\n\\r
41439 ccttttaattacccgcaaatcactttatgtcgagactacctctgaaatttattatctacc\n\\r
41440 taccgcatgaggacttgaaccatcttgtaggagttatgtttattagctaagattcgttta\n\\r
41441 tcctgtagcggtccatgtatattcaacaagcaaaaagcactcagaattgtttttagttga\n\\r
41442 gtcaagactgatatataaataagtttccctagttttttcgtggtgggacgatattgaatt\n\\r
41443 gaatcttaaccgaagagtttcccactctgtcgcacaataatacacgccaatatttccagc\n\\r
41444 cctgcttatgccttaatcggttactcaatctcccattgaagttcattttgatctgcatag\n\\r
41445 aagtttcgggcccagccttttttctgccaccttcctccaagctctgtagacgcactctaa\n\\r
41446 gattgatgctcacatgtattaattctacattaacataaatatataagtcatgcatcttcg\n\\r
41447 agtaaaatatctggttctccaacatgtcctggcacgtatcgttataatgcccatacatgt\n\\r
41448 agtattaaaatgattgggttaactggatattaagatcatcgaaattgtaaagtcaaatta\n\\r
41449 acaatactgtctcaagaccgtgtattcctcgtgctcggaagggctattacgcttacttcc\n\\r
41450 gttttggtatcttaatatgactttcaaaaattaagttgcagtgagtcctacctgcgtgca\n\\r
41451 tcggttagcaagagtataaaagttgtttaaacgaactacttgctttacaataccggtcgt\n\\r
41452 atatatcgccgtgaatccagaagattgtcttctttggattatcaaccgagatcctgtgga\n\\r
41453 ccgatgttttgggaccttcacagaggactccaggtagagctcgcttttgcattaatctaa\n\\r
41454 gaattgtacctctctaaaagatctaaaacagtgaatgtgtatttcatggaaaaacacaga\n\\r
41455 gaaacgtaaattactttaggccgaaaggcacatgagttattatacatatacgagatggtg\n\\r
41456 gtatacatcgaattcggggcatacactatagttgcattgtatttagctgctttaaataat\n\\r
41457 atgatattaccttccttacataagacattaccggcataccctggttttcaacttgtgggg\n\\r
41458 ctttttgacgatcgcactctcatttgatccgagtagggcggtgacccctgcttttcaaat\n\\r
41459 acaaaaatttcgctatgaaggtaatagattacttttcgctgttatgatagaaacggtaaa\n\\r
41460 tttaaaattgaaacttctagaaaagtaaagtaacgagaaatgattttgtgaataatgcgg\n\\r
41461 tcatgattgcgcaagtaagaaaaaaaggcaaaaggatgcgcggaatagaaacttatcagt\n\\r
41462 cacgggtatcttgatttcattcttcttgtcaattgccgacataggatgaaatcagattcc\n\\r
41463 aatgcaatacacagtaacccccacccttgattgtaatgtcgatttgaagttgtacgcgtc\n\\r
41464 gacgaagtggatagtatacgggccttttgtacggtgcgatcaactatgaatctcggcgag\n\\r
41465 ttagatggtcgtacaatctcacacatagaggtcacttgcctgtaatgacgaattttcggc\n\\r
41466 taggtactcgaactttattagaagtaaaaatgtgggcaaaagaaggattccattttacaa\n\\r
41467 gacgattacaatgagttacatgtctctcaacgtagtctttccctagtagtctttgaacta\n\\r
41468 tttaggtactccagaaaattttagcaaagggtttctgtgtgaatccgccattcatgttta\n\\r
41469 tgatggaacaataagaataacgccctcgtatgttatcgacagtgaagtcagcagttcggc\n\\r
41470 caaaaacatattcaatttagtacagatccccagaagttaagctaagtgctctaaaatggc\n\\r
41471 ctaaacggttatcaaagtaggtctaattactatactaacgggtgcatcgtaataactgct\n\\r
41472 gtcgatgcaacactatatgatagtgtcgttttgctatatatgtacaatgtgacaaagaag\n\\r
41473 ccttagcgattcttgcaaacttaggacttcggattctcaatcttaaatgtccgaaaacgc\n\\r
41474 aaagattcaaaaatttaatctatgagcagatatgcctgatggtgactacgcgtatgttaa\n\\r
41475 ggctaaatgttgacaaccgcacacataatcgaactattgatagtcgggagcataaccagg\n\\r
41476 tgaacgtactttgttcacgacatttattgacatgttctaaatacgtctcaaaatcacggc\n\\r
41477 gcactagaaaacgcaatcaaatcattgtcctggtttaagggccgtaatgccggtagtgtc\n\\r
41478 aaacttcatgagaactttagctggcttttggccagtatttagggaccaagagcactagcc\n\\r
41479 ttaagctgaatattttgccatttatctactgttataactttaaaacttggtggcaccaga\n\\r
41480 cttgtcgatacacacgcatcaatctgtaacgtaaaaggtttactaagaacaagcgtagga\n\\r
41481 attgagtttatattatatttaaactaaaagatgatattagcttctgagggcgatagggct\n\\r
41482 ccaaatcataaagaggaatatattattacacgattagaaacccacaacatacctcgaatc\n\\r
41483 gcccaaaagtttgacgaaacttggcagtactccacatctcagtaatacagttgggagagt\n\\r
41484 ctcaaatgttgttttattactcaatgaaccaccctcataatttcactgctgttccattaa\n\\r
41485 atttgcaaacgatcatttgctttgaagaaacgtaaaatcgacaaaattacagataagtag\n\\r
41486 atgcataataaaaaaaactgctcgctataacacgatcatcgtgcattcttacttaggagc\n\\r
41487 atcacccgcacaataacgtaccttaaactacaacactattagaccgagtactgtaattca\n\\r
41488 cgaaagctcaagctcgcattgtaaagaacttgctctctcgtaaaatgtgataatagtttg\n\\r
41489 cggagaggattcaattattttccattgcacctactccactagattcgataaaagaaggtg\n\\r
41490 gtcctcccttaaaaagaaatgttaagtaacatcggaaccataagcaaagcatgtaagtga\n\\r
41491 accgtcatccttccctaagaaacataaaggtttttaataatgtcgactgtgaactataac\n\\r
41492 tgcatcctttcctgacctactccggttccttgttgttatttctgaacgagaccagtagat\n\\r
41493 aaacaatgtaaaccacagtgggtaccaatggtgcatgtgacgctaccgttgttttaagtg\n\\r
41494 cccgtacaaacataagaagtcataatcttacttgaaattaattttgccttttattttttt\n\\r
41495 tcaggctcgaaattaatgatttgttttttttgaccttctagttacgctaatatgcggtcg\n\\r
41496 cctgtggtttctattgagtcctataacgggatgggatctaatacgtttggttactagtaa\n\\r
41497 acaaggtataaatttgataccggagtatcaactgtataacatcaagctttatgactcata\n\\r
41498 cgcgaagtaatgacacaaggctttcaggagatcgcgagtacagagccactaaggggtgta\n\\r
41499 ttacgatagtgacaccaccgagcgcactcactccccaagtagatttatgatcctacgcta\n\\r
41500 agtattagatatataaccaaagaggttctagtcagtgcaactcttagaataataattagc\n\\r
41501 cggttttgcctttttaggcctaatgcaatattcagctagcccttatgtatctcgcgttcc\n\\r
41502 acagcaccactcatggcacgcgtttaaactaatcaaatataatctatgaatgttatgcca\n\\r
41503 gtacttgaataaatcaggttttttataagtccttgcatactctcgttatatactgttaga\n\\r
41504 gtcttaccccatagaaattctttcatctgcaaacttagaagaattctcagctacggggag\n\\r
41505 cataaagtccccaggatgttgacaaatacaacaaatgtggcttatacaaacactccatat\n\\r
41506 gaaaatcgaaccctcgtggtagttttagccgaaccttgtacggataaatccctccatttt\n\\r
41507 ccaatagcagatacctatcctactacctcgtggtattaaattaaagcttgaaatatagag\n\\r
41508 ctgcatagcttatccaattcccaagcacgagtctaccgtcgtaaccacgatttgatttac\n\\r
41509 agacgctagagcaaacccatctttaaacatataagtaaaaattaaagggtgagtgcgtac\n\\r
41510 gtgtttactagcaacttcgcttattaagacaattgtttataagccataattaaaaacata\n\\r
41511 tgttcaacaggttcattgatatttgtaattgcacaggtttttaataaggatctacgtaag\n\\r
41512 tataatgaacaaactttttaccagagttatattctgtactttgaaaatgctcctctaccg\n\\r
41513 ccttagagactttcaattagattttttgcagttaatctatgcgtaagtgaaccatgcaag\n\\r
41514 ggatgcgattcaaccgcctcgtgctaaccctatcgtctgtctcataactgtaggtctaat\n\\r
41515 ataattttcagttttcgaacacataaccctttgaaaatctgctatttaatgtctcacctg\n\\r
41516 catgcactatcttctatactgctcagaacggctatacgtcactatgctccaagtgacgat\n\\r
41517 ttaaacgaagcaaggaataataggtttattttagtgcaaaacaattaagtgcggactacg\n\\r
41518 tgctctttacaataagccttgtgattgggctataggttaagtcccatattaacgatctcc\n\\r
41519 aatgtacaaaatcgacaatcgctttgcattacccggttactagtcgaattacagatagct\n\\r
41520 gttagatactcactctaattttggacaacaatcccaatcttggggtcgtctatcgcctga\n\\r
41521 agctcgtaaatccttccatcttaaacgattacatattatagacttgttcggggtagagat\n\\r
41522 atcacagttgtgcaaacattgtaaatcgatactagtttatgttggtagtctagttgcttt\n\\r
41523 taccattccccgaaaaacttgatctactatttcgacaacagtaaacttgaactaggtaag\n\\r
41524 tgaaaacagagaatgcctcatagtgccactatttgtccactatatgtaagtgtagcttta\n\\r
41525 cataatccactatgactgagatcattacggcctaggaaagcagcgtagaaaaaaagggcc\n\\r
41526 cggatattacgactgtaactataaaactagttactggtagcgcgccatgtatagatttgt\n\\r
41527 tttaccggttgtggttgcgttaacgaatttcagccgcgaaaattgatccgttaaccagtc\n\\r
41528 catctcgacttctataaaacgataaagtaaagttgatgttcagcctccttcttatggttg\n\\r
41529 catcgagagtacactactcagtgggaaatagatcggggttcctacttcagattgtattat\n\\r
41530 ctaggcaattgccgattgtgccatacctggataaaataagctacctacatgtgatgctta\n\\r
41531 tctattatcgtcatactaccttagggtgtcctgttgaacgctacattaatctttagccgt\n\\r
41532 ttgagatgttccaatggataggagtctaacgcatgatgaagtttaggaaggcagagcatc\n\\r
41533 ccactaagtatgtgacagtgtatttcgaaacgagacgttataaatagaaaaaaggtcctt\n\\r
41534 ctggttctattctgctgaactattgaatggaaagattggttgacctacgtactatttgct\n\\r
41535 tgaagtcatcaatttgacggggtgagagacatatggtgcatactttacggactctatatt\n\\r
41536 ttagatcagaagcttagcagtcttctctacaccccctcacgacataattgcttttaagaa\n\\r
41537 tctatgtttgattcctctacgggaattcggatccgttcgcatgtgcggtttatctaaacc\n\\r
41538 aggggacatatgttcagctaaagcatacgaacactttgctaactagacgtatgtatagta\n\\r
41539 gctataaatcccgacgatatttacaaaaagaaatgagactcaaatatatacatagcgacc\n\\r
41540 ctacacttattcgcaccctgatctaggcgatcctagcacccacacccgaaagtgagcact\n\\r
41541 agtgtcttccgtattaaatttactgcagttgagattttagttgtctactaaggattactc\n\\r
41542 taacccgtaataaggatcaagactcggtactagctttactatcattccctatgtgttttc\n\\r
41543 ctaactcacaagggtacgtaccagcctatgtaattacaataatgataaagacacaaagga\n\\r
41544 agtaactttacaaatgagtctccagttacactagcttagtccctcccatcttgctttgaa\n\\r
41545 gtctaaatacgcaatctctgaggatatacagcagaagaacactcataacgttggagtcca\n\\r
41546 agaattagactcatagggcccccaacatttaatatgtactgtgagtttgaaggtgttcta\n\\r
41547 ttgttaattcctgctcttgatacatgacacgtactccgtgtttaaggcttcggactgact\n\\r
41548 ttctttcataagttgagcaacgaaaatttcagaatcgataagttggattcactaactaat\n\\r
41549 acggctgattgaaaactccactccggacctatatggtcgacctttatacgtaaccgatat\n\\r
41550 aaaacttataggctggtatatcgagccttcctagcgcaatttcggatggggtttcttcta\n\\r
41551 ctactcaacaacggaatagtctttgtttagtaaaccagagctcaggacgcccaatacgta\n\\r
41552 ggagagcgctgtggagcatgtgtcattatggactggagcactcttaaatcactctgcgtg\n\\r
41553 tgctaaacgatagatcataacatgtcctgagtaaattttcttgatacgtcgcaatatacc\n\\r
41554 gttattagttaaacgttctcatccgtcatgcgtgaaatacggctgtcgtgctcagatata\n\\r
41555 ctattagcgactcatctcgcctaacacgcacacgtataaactcggaatgactgccgctct\n\\r
41556 tacatattagaaatacagactacaccacggaagcattgggtcattctcaaccgctgtata\n\\r
41557 aaagatgattagtcttataataagattaccaaagaggcagaatcatgggtagtaaatcta\n\\r
41558 ttattcaagtgattaccgtcgtgtaggcagggagtgaggacgagatggtactcaggacaa\n\\r
41559 atattaaccggacgaagtggtttacgtcgtactttcactattagtagtaaatacaaggta\n\\r
41560 acaccggggaatagtactaaatataatgatatctatcttcgggagaacgagtcgtctatt\n\\r
41561 gctttgaacattctcaaggcgtaaaatgtgctgacttatagcatgatacaaccgattgtt\n\\r
41562 acttttgtctattcaaaagattgaatagttttttatacaaaagccgcatacttatgacgg\n\\r
41563 ctagtatacagtttcatcccctagcatcaatgctatggacagtattgaacttataggaaa\n\\r
41564 ttcttctaatagggcaaatccgtcgtgatgcctattttttttcagtcacatcctcaaatg\n\\r
41565 gcactagtattgtcgggatcccattaacaggctcaaccacgagctcacgcgaggacatgt\n\\r
41566 agtccgtatctttaacgaagcgacagcgacagaactcccatggataaccaattataaggc\n\\r
41567 ccgtaatcctctagacatcgtttaccaataaatccgctttctccgtaatcatgttgaata\n\\r
41568 ccccagagtagtccagatgataaccgatgaaacacaagtctttctcaatgcacttacggt\n\\r
41569 gaacttattaccgccaacgtagctcatcaaggttgcgacatctagttgtgtgtttgcgac\n\\r
41570 gagcccagcgaacttcatcaactttcgtatattcaacgccttgtaattttactttaagac\n\\r
41571 gcctggtgatgtagattcttagataatcagtttgttatcggctgtactttaccataattt\n\\r
41572 cacaggtttcaggtcaagaagattatagctgtatatacagttccatgctcggtgcacaga\n\\r
41573 aacgtgatcggataataatcaatcgcttatgtcgtctttaggcgtatccaatacatgccc\n\\r
41574 cgataccgcagtgtatttcgacatgtaggtataccgtcgcatttgagctcgagtcaggac\n\\r
41575 gtcagctagattagattccttaatagaatataccgacctctagtccgaactaaactatag\n\\r
41576 ataacgccaacttcaggttaattgtctagtcgtctgtttgcagatgggattcttagatga\n\\r
41577 gtgagtatcggccatattggttcgagcactttagtttttgatgcataggatatgcaatgt\n\\r
41578 atagctgaaagtactttatctgtttcaaactcacattgattaaaccggtaaacctttaaa\n\\r
41579 gactacaagaaaatattcagtgagggcaattttgtcaatcacaatcttccagctagagat\n\\r
41580 acttcacaatttgtcttgaggctacgcaacattagacggattttcgcgttttattgaaat\n\\r
41581 aatcgaggggcccaagagtatccatagttcattttgtaagatttctttacaggcttatta\n\\r
41582 cagcttcttcagactcctacatgcttacgagttatatgctagcatgtgaacaatagatta\n\\r
41583 atatacaggaaaacgtacattgagagagatgaccctacacagcgcaaccgttgagtactt\n\\r
41584 tcattaaagggtaacgctctcgagacagcatccttaagatggccttattgtcaaatcatt\n\\r
41585 tgcagaagtacgcaagatccctaaccaacgtagaagaatccctacaaacacatgagacgc\n\\r
41586 ggtgaaaatagacagggtgttagtattcaatcttcggagtatcaatttcgccaatcttgg\n\\r
41587 tgagaaagcataccctttcttcagagaaagaagatcaatcataacactatctttaacgag\n\\r
41588 gtacgcacgcgcatcattacctgcctccatggatctttaggatagcggaaagtattggca\n\\r
41589 gcgtattgtgatttcgttcctactttatcaatttcacattcatatacatgtcttttatca\n\\r
41590 aaatcgccaataagataggatgagctatattagatgctagtagagttcgcgccaacatca\n\\r
41591 tcgataggaatactcaggacagcgtgataggacttttcaatccctaatactctctataat\n\\r
41592 tataactctctcttaagtttggaggcagtaacgcgctctatataatcagtttgctgcacc\n\\r
41593 attcttcagcctctgatacatacaaataaattccacagcagtaagagggtttaattgaga\n\\r
41594 catcttgggaacttaggattttactctaacatcaccgaaacgattattggataccgtacc\n\\r
41595 taaacgaactttctcaaggcagtaatataggacatccgcaataacacaaatgctgcctcc\n\\r
41596 ccaggagttatgtcttcctggaggctatatcttacacccactcactataggcaaactaaa\n\\r
41597 gtttaaatgttgattgtctaaaaaaaagatagataagagttggccggcgtagcacatgcg\n\\r
41598 aaagtgaatcgtaagctataattctctggacttgaagttctgtcctgttcctctgcaaga\n\\r
41599 aacaaacttcctttaaagctatttacgacgcacatctcagcaagttataaacatgttgga\n\\r
41600 agtttctagtcggaattcccaaagaacggatctatctaatgcattcctacatttttcctg\n\\r
41601 tctgccgatggtgccatcctattcaaagaatttcttaaaagtagattaaatgggactttt\n\\r
41602 aacaatgagtaaccttacgcctctaagggttcctcgagtgccatacaccagtcaggtccg\n\\r
41603 agccacatacacggagaacattctaacatagcattctcaactcgatcatttgcaggttac\n\\r
41604 ttctttcctatcctagtgctaaaaatcatacttgcaatcccatagcacggattaagaacc\n\\r
41605 taagaaacaattcagtaaaacatgttcgaattcttggtatgggaacatcattgcagctat\n\\r
41606 ggtctaacgcattaatgtttgggtacatcttccatcatataaacaggaagagtctgacga\n\\r
41607 cagggagtgcttgcgatcatgtctatcattgtgaaatcaaattgtagctcacatgtcgtc\n\\r
41608 tatgagagcgtgtatccgataagatttagaaaaatagaagtcgtataagatctcactgaa\n\\r
41609 cttttgaatgaatgtgaagcatatatgatctgctttaataaaactttatccataggatac\n\\r
41610 gtttccaaatcaattcaataattattagtcaaaatagataaggatgaacaacctgaaggc\n\\r
41611 cgatcggacgtagaaagtggtcccatcactttgagttgatattgttgaaccacacgttat\n\\r
41612 tatggttttcaaacagtctcaggatattgtatatacagataatccgataccagttgtctg\n\\r
41613 acgcccctcttacgtaccccaccctttgtgacgtttaaagcagttgttcagtattttaaa\n\\r
41614 ctaggcggcaactaatttggaaagaagcacagtggatatgtctaaattcttgttattcag\n\\r
41615 gcctgaatttaatacaccgcatagttaacttcgcggtagagttgttcatcatgcctcctc\n\\r
41616 taagctaccacttctatgatacaccaatagttgttctacggaatctgataattggccaag\n\\r
41617 tcataaacttccgctgcgttcaacccccttgctcgaatatccaactcgaaaagacagcct\n\\r
41618 tttggtgtccggaacaaatcagttacttcttttctgatgttaattctctgtggtcagata\n\\r
41619 cagaccaaaaactccgcggatttaccatcctccaagaacaaatttgcatcaacatagcat\n\\r
41620 tttggctacatattctaagtctcaatagtttaggttttcaactacattatcccaacatta\n\\r
41621 ggattggaggaataatagctgggtaagtccccttgcgtctacaatcgactattttttatg\n\\r
41622 aatatgcttctgccgcacctatggttattaaaaaagtcatgactttgaagaaccctgaaa\n\\r
41623 agatagatgaatcaggtgtaatggcagcagccaaagagcatataattagcaacactctaa\n\\r
41624 gaacattatagatatgatgatagcgatcgtcatgatgttatccggtcacaatagtagctt\n\\r
41625 catcagctaattcgttttgccagtggtgacttgcgctggaagaatcgttatacggtccct\n\\r
41626 tccctcttgatacggtgggggcttattcaaccgcgtggattgggttgtcatacttgcatt\n\\r
41627 aaacgatgtaaaccatctagtagtcaactatactaaatcacaaaatagtgatcaatacat\n\\r
41628 acccgcttcatggttttaaccatttaattgattaaagatattccgctaagaaccattatc\n\\r
41629 tacctaaactgatcgccgtatcctagtagtttgaaatttgatgtaccgtaatgatcaacg\n\\r
41630 aagtaaaacgttatattgtatgtagaataataggtcttggagctaaatgatgtgattggt\n\\r
41631 agtgaagacttacccttacaactttaccggtttctcggaagaatatactagagaatcaat\n\\r
41632 gcatgggctacataagcactttagtctaatgagataaaaaatacacgagtcttccatcat\n\\r
41633 gaattttttgtcgaaaaactcgaacctggtaatttaaaccatatatctttatgtcgtcaa\n\\r
41634 taactctcatatgttttatataacttcccaatcacgacttgtaactgcttgttcgactga\n\\r
41635 gctgtttgagctatgaggccgggatccggttgagctacatctatttgctacaagaaaaat\n\\r
41636 gaaagcacatttgttgggagttctggctacactcatagagaaataagtggcccgagtggg\n\\r
41637 tgcggcctgcctccatattcaagtgtatcttaaaccaagtggttccaacgctcgcgctaa\n\\r
41638 agaattaaagcctttatttcctccacggagtagcccgtaatccggttcgaaagagaccat\n\\r
41639 tgaagttaattttcatatccagtgaagtttaggcacaagcatgtgttctgccacatgcct\n\\r
41640 caaagcgctcttcaaccaagatatgattcatcctaacttcgatgaatgcgtctgtaacat\n\\r
41641 aaatatagaaggaatgattcggcgagttaattttcgccttctccaacatggcatccctac\n\\r
41642 gttcgttataaggaccatacatgtaggttttaaaggtttgcggttaatcgatatttacat\n\\r
41643 catagaaattctatagtcaaatttacaagactctagatactcactcgttgcagccggcta\n\\r
41644 ggaagcgctttgtaccttacttcccttttcgttgcgtaatatgaatttcatatagtaagt\n\\r
41645 tcaaggcactcatacctccgtgaagagggtagatagactattaaagttgtttaatagtac\n\\r
41646 gtattgatggaaatgacccgtaggagatttaccactcaatccacaagattcgctgctgtg\n\\r
41647 cattatcaaaacagtgcatgtcgaaacatgggttgggtccttcaaacacgaatccaggta\n\\r
41648 gagatacctttgcaattttt\n";\r
41649 \r
41650 dnaInput = dnaInput + dnaInput + dnaInput;\r
41651 \r
41652 var ilen, clen,\r
41653  seqs = [\r
41654   /agggtaaa|tttaccct/ig,\r
41655   /[cgt]gggtaaa|tttaccc[acg]/ig,\r
41656   /a[act]ggtaaa|tttacc[agt]t/ig,\r
41657   /ag[act]gtaaa|tttac[agt]ct/ig,\r
41658   /agg[act]taaa|ttta[agt]cct/ig,\r
41659   /aggg[acg]aaa|ttt[cgt]ccct/ig,\r
41660   /agggt[cgt]aa|tt[acg]accct/ig,\r
41661   /agggta[cgt]a|t[acg]taccct/ig,\r
41662   /agggtaa[cgt]|[acg]ttaccct/ig],\r
41663  subs = {\r
41664   B: '(c|g|t)', D: '(a|g|t)', H: '(a|c|t)', K: '(g|t)',\r
41665   M: '(a|c)', N: '(a|c|g|t)', R: '(a|g)', S: '(c|t)',\r
41666   V: '(a|c|g)', W: '(a|t)', Y: '(c|t)' }\r
41667 \r
41668 ilen = dnaInput.length;\r
41669 \r
41670 // There is no in-place substitution\r
41671 dnaInput = dnaInput.replace(/>.*\n|\n/g,"")\r
41672 clen = dnaInput.length\r
41673 \r
41674 var dnaOutputString;\r
41675 \r
41676 for(i in seqs)\r
41677     dnaOutputString += seqs[i].source + " " + (dnaInput.match(seqs[i]) || []).length + "\n";\r
41678  // match returns null if no matches, so replace with empty\r
41679 \r
41680 for(k in subs)\r
41681  dnaInput = dnaInput.replace(k, subs[k], "g")\r
41682  // search string, replacement string, flags\r
41683 /* ***** BEGIN LICENSE BLOCK *****\r
41684  * Version: MPL 1.1/GPL 2.0/LGPL 2.1\r
41685  *\r
41686  * The contents of this file are subject to the Mozilla Public License Version\r
41687  * 1.1 (the "License"); you may not use this file except in compliance with\r
41688  * the License. You may obtain a copy of the License at\r
41689  * http://www.mozilla.org/MPL/\r
41690  *\r
41691  * Software distributed under the License is distributed on an "AS IS" basis,\r
41692  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\r
41693  * for the specific language governing rights and limitations under the\r
41694  * License.\r
41695  *\r
41696  * The Original Code is Mozilla XML-RPC Client component.\r
41697  *\r
41698  * The Initial Developer of the Original Code is\r
41699  * Digital Creations 2, Inc.\r
41700  * Portions created by the Initial Developer are Copyright (C) 2000\r
41701  * the Initial Developer. All Rights Reserved.\r
41702  *\r
41703  * Contributor(s):\r
41704  *   Martijn Pieters <mj@digicool.com> (original author)\r
41705  *   Samuel Sieb <samuel@sieb.net>\r
41706  *\r
41707  * Alternatively, the contents of this file may be used under the terms of\r
41708  * either the GNU General Public License Version 2 or later (the "GPL"), or\r
41709  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),\r
41710  * in which case the provisions of the GPL or the LGPL are applicable instead\r
41711  * of those above. If you wish to allow use of your version of this file only\r
41712  * under the terms of either the GPL or the LGPL, and not to allow others to\r
41713  * use your version of this file under the terms of the MPL, indicate your\r
41714  * decision by deleting the provisions above and replace them with the notice\r
41715  * and other provisions required by the GPL or the LGPL. If you do not delete\r
41716  * the provisions above, a recipient may use your version of this file under\r
41717  * the terms of any one of the MPL, the GPL or the LGPL.\r
41718  *\r
41719  * ***** END LICENSE BLOCK ***** */\r
41720 \r
41721 // From: http://lxr.mozilla.org/mozilla/source/extensions/xml-rpc/src/nsXmlRpcClient.js#956\r
41722 \r
41723 /* Convert data (an array of integers) to a Base64 string. */\r
41724 var toBase64Table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r
41725 var base64Pad = '=';\r
41726 \r
41727 function toBase64(data) {\r
41728     var result = '';\r
41729     var length = data.length;\r
41730     var i;\r
41731     // Convert every three bytes to 4 ascii characters.\r
41732     for (i = 0; i < (length - 2); i += 3) {\r
41733         result += toBase64Table[data[i] >> 2];\r
41734         result += toBase64Table[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];\r
41735         result += toBase64Table[((data[i+1] & 0x0f) << 2) + (data[i+2] >> 6)];\r
41736         result += toBase64Table[data[i+2] & 0x3f];\r
41737     }\r
41738 \r
41739     // Convert the remaining 1 or 2 bytes, pad out to 4 characters.\r
41740     if (length%3) {\r
41741         i = length - (length%3);\r
41742         result += toBase64Table[data[i] >> 2];\r
41743         if ((length%3) == 2) {\r
41744             result += toBase64Table[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];\r
41745             result += toBase64Table[(data[i+1] & 0x0f) << 2];\r
41746             result += base64Pad;\r
41747         } else {\r
41748             result += toBase64Table[(data[i] & 0x03) << 4];\r
41749             result += base64Pad + base64Pad;\r
41750         }\r
41751     }\r
41752 \r
41753     return result;\r
41754 }\r
41755 \r
41756 /* Convert Base64 data to a string */\r
41757 var toBinaryTable = [\r
41758     -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\r
41759     -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\r
41760     -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,\r
41761     52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,\r
41762     -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,\r
41763     15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,\r
41764     -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,\r
41765     41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1\r
41766 ];\r
41767 \r
41768 function base64ToString(data) {\r
41769     var result = '';\r
41770     var leftbits = 0; // number of bits decoded, but yet to be appended\r
41771     var leftdata = 0; // bits decoded, but yet to be appended\r
41772 \r
41773     // Convert one by one.\r
41774     for (var i = 0; i < data.length; i++) {\r
41775         var c = toBinaryTable[data.charCodeAt(i) & 0x7f];\r
41776         var padding = (data[i] == base64Pad);\r
41777         // Skip illegal characters and whitespace\r
41778         if (c == -1) continue;\r
41779         \r
41780         // Collect data into leftdata, update bitcount\r
41781         leftdata = (leftdata << 6) | c;\r
41782         leftbits += 6;\r
41783 \r
41784         // If we have 8 or more bits, append 8 bits to the result\r
41785         if (leftbits >= 8) {\r
41786             leftbits -= 8;\r
41787             // Append if not padding.\r
41788             if (!padding)\r
41789                 result += String.fromCharCode((leftdata >> leftbits) & 0xff);\r
41790             leftdata &= (1 << leftbits) - 1;\r
41791         }\r
41792     }\r
41793 \r
41794     // If there are any bits left, the base64 string was corrupted\r
41795     if (leftbits)\r
41796         throw Components.Exception('Corrupted base64 string');\r
41797 \r
41798     return result;\r
41799 }\r
41800 \r
41801 var str = "";\r
41802 \r
41803 for ( var i = 0; i < 8192; i++ )\r
41804         str += String.fromCharCode( (25 * Math.random()) + 97 );\r
41805 \r
41806 for ( var i = 8192; i <= 16384; i *= 2 ) {\r
41807 \r
41808     var base64;\r
41809 \r
41810     base64 = toBase64(str);\r
41811     base64ToString(base64);\r
41812 \r
41813     // Double the string\r
41814     str += str;\r
41815 }\r
41816 \r
41817 toBinaryTable = null;\r
41818 // The Great Computer Language Shootout\r
41819 //  http://shootout.alioth.debian.org\r
41820 //\r
41821 //  Contributed by Ian Osgood\r
41822 \r
41823 var last = 42, A = 3877, C = 29573, M = 139968;\r
41824 \r
41825 function rand(max) {\r
41826   last = (last * A + C) % M;\r
41827   return max * last / M;\r
41828 }\r
41829 \r
41830 var ALU =\r
41831   "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +\r
41832   "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +\r
41833   "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +\r
41834   "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +\r
41835   "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +\r
41836   "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +\r
41837   "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";\r
41838 \r
41839 var IUB = {\r
41840   a:0.27, c:0.12, g:0.12, t:0.27,\r
41841   B:0.02, D:0.02, H:0.02, K:0.02,\r
41842   M:0.02, N:0.02, R:0.02, S:0.02,\r
41843   V:0.02, W:0.02, Y:0.02\r
41844 }\r
41845 \r
41846 var HomoSap = {\r
41847   a: 0.3029549426680,\r
41848   c: 0.1979883004921,\r
41849   g: 0.1975473066391,\r
41850   t: 0.3015094502008\r
41851 }\r
41852 \r
41853 function makeCumulative(table) {\r
41854   var last = null;\r
41855   for (var c in table) {\r
41856     if (last) table[c] += table[last];\r
41857     last = c;\r
41858   }\r
41859 }\r
41860 \r
41861 function fastaRepeat(n, seq) {\r
41862   var seqi = 0, lenOut = 60;\r
41863   while (n>0) {\r
41864     if (n<lenOut) lenOut = n;\r
41865     if (seqi + lenOut < seq.length) {\r
41866       ret = seq.substring(seqi, seqi+lenOut);\r
41867       seqi += lenOut;\r
41868     } else {\r
41869       var s = seq.substring(seqi);\r
41870       seqi = lenOut - s.length;\r
41871       ret = s + seq.substring(0, seqi);\r
41872     }\r
41873     n -= lenOut;\r
41874   }\r
41875 }\r
41876 \r
41877 function fastaRandom(n, table) {\r
41878   var line = new Array(60);\r
41879   makeCumulative(table);\r
41880   while (n>0) {\r
41881     if (n<line.length) line = new Array(n);\r
41882     for (var i=0; i<line.length; i++) {\r
41883       var r = rand(1);\r
41884       for (var c in table) {\r
41885         if (r < table[c]) {\r
41886           line[i] = c;\r
41887           break;\r
41888         }\r
41889       }\r
41890     }\r
41891     ret = line.join('');\r
41892     n -= line.length;\r
41893   }\r
41894 }\r
41895 \r
41896 var ret;\r
41897 \r
41898 var count = 7;\r
41899 ret = fastaRepeat(2*count*100000, ALU);\r
41900 ret = fastaRandom(3*count*1000, IUB);\r
41901 ret = fastaRandom(5*count*1000, HomoSap);\r
41902 \r
41903 \r
41904 /*\r
41905  * Copyright (C) 2007 Apple Inc.  All rights reserved.\r
41906  *\r
41907  * Redistribution and use in source and binary forms, with or without\r
41908  * modification, are permitted provided that the following conditions\r
41909  * are met:\r
41910  * 1. Redistributions of source code must retain the above copyright\r
41911  *    notice, this list of conditions and the following disclaimer.\r
41912  * 2. Redistributions in binary form must reproduce the above copyright\r
41913  *    notice, this list of conditions and the following disclaimer in the\r
41914  *    documentation and/or other materials provided with the distribution.\r
41915  *\r
41916  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY\r
41917  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
41918  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
41919  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR\r
41920  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
41921  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
41922  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\r
41923  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r
41924  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
41925  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
41926  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \r
41927  */\r
41928 \r
41929 /*\r
41930     Portions from:\r
41931     json.js\r
41932     2007-10-10\r
41933 \r
41934     Public Domain\r
41935 */\r
41936 \r
41937 // This test parses a JSON string giving tag names and popularity, and\r
41938 // generates html markup for a "tagcloud" view.\r
41939 \r
41940 if (!Object.prototype.toJSONString) {\r
41941 \r
41942     Array.prototype.toJSONString = function (w) {\r
41943         var a = [],     // The array holding the partial texts.\r
41944             i,          // Loop counter.\r
41945             l = this.length,\r
41946             v;          // The value to be stringified.\r
41947 \r
41948         for (i = 0; i < l; i += 1) {\r
41949             v = this[i];\r
41950             switch (typeof v) {\r
41951             case 'object':\r
41952 \r
41953                 if (v && typeof v.toJSONString === 'function') {\r
41954                     a.push(v.toJSONString(w));\r
41955                 } else {\r
41956                     a.push('null');\r
41957                 }\r
41958                 break;\r
41959 \r
41960             case 'string':\r
41961             case 'number':\r
41962             case 'boolean':\r
41963                 a.push(v.toJSONString());\r
41964                 break;\r
41965             default:\r
41966                 a.push('null');\r
41967             }\r
41968         }\r
41969 \r
41970         return '[' + a.join(',') + ']';\r
41971     };\r
41972 \r
41973 \r
41974     Boolean.prototype.toJSONString = function () {\r
41975         return String(this);\r
41976     };\r
41977 \r
41978 \r
41979     Date.prototype.toJSONString = function () {\r
41980 \r
41981         function f(n) {\r
41982 \r
41983             return n < 10 ? '0' + n : n;\r
41984         }\r
41985 \r
41986         return '"' + this.getUTCFullYear()   + '-' +\r
41987                    f(this.getUTCMonth() + 1) + '-' +\r
41988                    f(this.getUTCDate())      + 'T' +\r
41989                    f(this.getUTCHours())     + ':' +\r
41990                    f(this.getUTCMinutes())   + ':' +\r
41991                    f(this.getUTCSeconds())   + 'Z"';\r
41992     };\r
41993 \r
41994 \r
41995     Number.prototype.toJSONString = function () {\r
41996 \r
41997         return isFinite(this) ? String(this) : 'null';\r
41998     };\r
41999 \r
42000 \r
42001     Object.prototype.toJSONString = function (w) {\r
42002         var a = [],     // The array holding the partial texts.\r
42003             k,          // The current key.\r
42004             i,          // The loop counter.\r
42005             v;          // The current value.\r
42006 \r
42007         if (w) {\r
42008             for (i = 0; i < w.length; i += 1) {\r
42009                 k = w[i];\r
42010                 if (typeof k === 'string') {\r
42011                     v = this[k];\r
42012                     switch (typeof v) {\r
42013                     case 'object':\r
42014 \r
42015                         if (v) {\r
42016                             if (typeof v.toJSONString === 'function') {\r
42017                                 a.push(k.toJSONString() + ':' +\r
42018                                        v.toJSONString(w));\r
42019                             }\r
42020                         } else {\r
42021                             a.push(k.toJSONString() + ':null');\r
42022                         }\r
42023                         break;\r
42024 \r
42025                     case 'string':\r
42026                     case 'number':\r
42027                     case 'boolean':\r
42028                         a.push(k.toJSONString() + ':' + v.toJSONString());\r
42029 \r
42030                     }\r
42031                 }\r
42032             }\r
42033         } else {\r
42034 \r
42035             for (k in this) {\r
42036                 if (typeof k === 'string' &&\r
42037                         Object.prototype.hasOwnProperty.apply(this, [k])) {\r
42038                     v = this[k];\r
42039                     switch (typeof v) {\r
42040                     case 'object':\r
42041 \r
42042                         if (v) {\r
42043                             if (typeof v.toJSONString === 'function') {\r
42044                                 a.push(k.toJSONString() + ':' +\r
42045                                        v.toJSONString());\r
42046                             }\r
42047                         } else {\r
42048                             a.push(k.toJSONString() + ':null');\r
42049                         }\r
42050                         break;\r
42051 \r
42052                     case 'string':\r
42053                     case 'number':\r
42054                     case 'boolean':\r
42055                         a.push(k.toJSONString() + ':' + v.toJSONString());\r
42056 \r
42057                     }\r
42058                 }\r
42059             }\r
42060         }\r
42061 \r
42062         return '{' + a.join(',') + '}';\r
42063     };\r
42064 \r
42065 \r
42066     (function (s) {\r
42067 \r
42068         var m = {\r
42069             '\b': '\\b',\r
42070             '\t': '\\t',\r
42071             '\n': '\\n',\r
42072             '\f': '\\f',\r
42073             '\r': '\\r',\r
42074             '"' : '\\"',\r
42075             '\\': '\\\\'\r
42076         };\r
42077 \r
42078 \r
42079         s.parseJSON = function (filter) {\r
42080             var j;\r
42081 \r
42082             function walk(k, v) {\r
42083                 var i, n;\r
42084                 if (v && typeof v === 'object') {\r
42085                     for (i in v) {\r
42086                         if (Object.prototype.hasOwnProperty.apply(v, [i])) {\r
42087                             n = walk(i, v[i]);\r
42088                             if (n !== undefined) {\r
42089                                 v[i] = n;\r
42090                             }\r
42091                         }\r
42092                     }\r
42093                 }\r
42094                 return filter(k, v);\r
42095             }\r
42096 \r
42097             if (/^[\],:{}\s]*$/.test(this.replace(/\\./g, '@').\r
42098                     replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(:?[eE][+\-]?\d+)?/g, ']').\r
42099                     replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {\r
42100 \r
42101                 j = eval('(' + this + ')');\r
42102 \r
42103                 return typeof filter === 'function' ? walk('', j) : j;\r
42104             }\r
42105 \r
42106             throw new SyntaxError('parseJSON');\r
42107         };\r
42108 \r
42109 \r
42110         s.toJSONString = function () {\r
42111 \r
42112             if (/["\\\x00-\x1f]/.test(this)) {\r
42113                 return '"' + this.replace(/[\x00-\x1f\\"]/g, function (a) {\r
42114                     var c = m[a];\r
42115                     if (c) {\r
42116                         return c;\r
42117                     }\r
42118                     c = a.charCodeAt();\r
42119                     return '\\u00' + Math.floor(c / 16).toString(16) +\r
42120                                                (c % 16).toString(16);\r
42121                 }) + '"';\r
42122             }\r
42123             return '"' + this + '"';\r
42124         };\r
42125     })(String.prototype);\r
42126 }\r
42127 \r
42128 var tagInfoJSON = '[\n  {\n    \"tag\": "titillation",\n    \"popularity\": 4294967296\n  },\n  {\n    \"tag\": "foamless",\n    \"popularity\": 1257718401\n  },\n  {\n    \"tag\": "snarler",\n    \"popularity\": 613166183\n  },\n  {\n    \"tag\": "multangularness",\n    \"popularity\": 368304452\n  },\n  {\n    \"tag\": "Fesapo unventurous",\n    \"popularity\": 248026512\n  },\n  {\n    \"tag\": "esthesioblast",\n    \"popularity\": 179556755\n  },\n  {\n    \"tag\": "echeneidoid",\n    \"popularity\": 136641578\n  },\n  {\n    \"tag\": "embryoctony",\n    \"popularity\": 107852576\n  },\n  {\n    \"tag\": "undilatory",\n    \"popularity\": 87537981\n  },\n  {\n    \"tag\": "predisregard",\n    \"popularity\": 72630939\n  },\n  {\n    \"tag\": "allergenic",\n    \"popularity\": 61345190\n  },\n  {\n    \"tag\": "uncloudy",\n    \"popularity\": 52580571\n  },\n  {\n    \"tag\": "unforeseeably",\n    \"popularity\": 45628109\n  },\n  {\n    \"tag\": "sturniform",\n    \"popularity\": 40013489\n  },\n  {\n    \"tag\": "anesthetize",\n    \"popularity\": 35409226\n  },\n  {\n    \"tag\": "ametabolia",\n    \"popularity\": 31583050\n  },\n  {\n    \"tag\": "angiopathy",\n    \"popularity\": 28366350\n  },\n  {\n    \"tag\": "sultanaship",\n    \"popularity\": 25634218\n  },\n  {\n    \"tag\": "Frenchwise",\n    \"popularity\": 23292461\n  },\n  {\n    \"tag\": "cerviconasal",\n    \"popularity\": 21268909\n  },\n  {\n    \"tag\": "mercurialness",\n    \"popularity\": 19507481\n  },\n  {\n    \"tag\": "glutelin venditate",\n    \"popularity\": 17964042\n  },\n  {\n    \"tag\": "acred overblack",\n    \"popularity\": 16603454\n  },\n  {\n    \"tag\": "Atik",\n    \"popularity\": 15397451\n  },\n  {\n    \"tag\": "puncturer",\n    \"popularity\": 14323077\n  },\n  {\n    \"tag\": "pukatea",\n    \"popularity\": 13361525\n  },\n  {\n    \"tag\": "suberize",\n    \"popularity\": 12497261\n  },\n  {\n    \"tag\": "Godfrey",\n    \"popularity\": 11717365\n  },\n  {\n    \"tag\": "tetraptote",\n    \"popularity\": 11011011\n  },\n  {\n    \"tag\": "lucidness",\n    \"popularity\": 10369074\n  },\n  {\n    \"tag\": "tartness",\n    \"popularity\": 9783815\n  },\n  {\n    \"tag\": "axfetch",\n    \"popularity\": 9248634\n  },\n  {\n    \"tag\": "preacquittal",\n    \"popularity\": 8757877\n  },\n  {\n    \"tag\": "matris",\n    \"popularity\": 8306671\n  },\n  {\n    \"tag\": "hyphenate",\n    \"popularity\": 7890801\n  },\n  {\n    \"tag\": "semifabulous",\n    \"popularity\": 7506606\n  },\n  {\n    \"tag\": "oppressiveness",\n    \"popularity\": 7150890\n  },\n  {\n    \"tag\": "Protococcales",\n    \"popularity\": 6820856\n  },\n  {\n    \"tag\": "unpreventive",\n    \"popularity\": 6514045\n  },\n  {\n    \"tag\": "Cordia",\n    \"popularity\": 6228289\n  },\n  {\n    \"tag\": "Wakamba leaflike",\n    \"popularity\": 5961668\n  },\n  {\n    \"tag\": "dacryoma",\n    \"popularity\": 5712480\n  },\n  {\n    \"tag\": "inguinal",\n    \"popularity\": 5479211\n  },\n  {\n    \"tag\": "responseless",\n    \"popularity\": 5260507\n  },\n  {\n    \"tag\": "supplementarily",\n    \"popularity\": 5055158\n  },\n  {\n    \"tag\": "emu",\n    \"popularity\": 4862079\n  },\n  {\n    \"tag\": "countermeet",\n    \"popularity\": 4680292\n  },\n  {\n    \"tag\": "purrer",\n    \"popularity\": 4508918\n  },\n  {\n    \"tag\": "Corallinaceae",\n    \"popularity\": 4347162\n  },\n  {\n    \"tag\": "speculum",\n    \"popularity\": 4194304\n  },\n  {\n    \"tag\": "crimpness",\n    \"popularity\": 4049690\n  },\n  {\n    \"tag\": "antidetonant",\n    \"popularity\": 3912727\n  },\n  {\n    \"tag\": "topeewallah",\n    \"popularity\": 3782875\n  },\n  {\n    \"tag\": "fidalgo ballant",\n    \"popularity\": 3659640\n  },\n  {\n    \"tag\": "utriculose",\n    \"popularity\": 3542572\n  },\n  {\n    \"tag\": "testata",\n    \"popularity\": 3431259\n  },\n  {\n    \"tag\": "beltmaking",\n    \"popularity\": 3325322\n  },\n  {\n    \"tag\": "necrotype",\n    \"popularity\": 3224413\n  },\n  {\n    \"tag\": "ovistic",\n    \"popularity\": 3128215\n  },\n  {\n    \"tag\": "swindlership",\n    \"popularity\": 3036431\n  },\n  {\n    \"tag\": "augustal",\n    \"popularity\": 2948792\n  },\n  {\n    \"tag\": "Titoist",\n    \"popularity\": 2865047\n  },\n  {\n    \"tag\": "trisoctahedral",\n    \"popularity\": 2784963\n  },\n  {\n    \"tag\": "sequestrator",\n    \"popularity\": 2708327\n  },\n  {\n    \"tag\": "sideburns",\n    \"popularity\": 2634939\n  },\n  {\n    \"tag\": "paraphrasia",\n    \"popularity\": 2564616\n  },\n  {\n    \"tag\": "graminology unbay",\n    \"popularity\": 2497185\n  },\n  {\n    \"tag\": "acaridomatium emargination",\n    \"popularity\": 2432487\n  },\n  {\n    \"tag\": "roofward",\n    \"popularity\": 2370373\n  },\n  {\n    \"tag\": "lauder",\n    \"popularity\": 2310705\n  },\n  {\n    \"tag\": "subjunctive",\n    \"popularity\": 2253354\n  },\n  {\n    \"tag\": "subelongate",\n    \"popularity\": 2198199\n  },\n  {\n    \"tag\": "guacimo",\n    \"popularity\": 2145128\n  },\n  {\n    \"tag\": "cockade",\n    \"popularity\": 2094033\n  },\n  {\n    \"tag\": "misgauge",\n    \"popularity\": 2044818\n  },\n  {\n    \"tag\": "unexpensive",\n    \"popularity\": 1997388\n  },\n  {\n    \"tag\": "chebel",\n    \"popularity\": 1951657\n  },\n  {\n    \"tag\": "unpursuing",\n    \"popularity\": 1907543\n  },\n  {\n    \"tag\": "kilobar",\n    \"popularity\": 1864969\n  },\n  {\n    \"tag\": "obsecration",\n    \"popularity\": 1823863\n  },\n  {\n    \"tag\": "nacarine",\n    \"popularity\": 1784157\n  },\n  {\n    \"tag\": "spirituosity",\n    \"popularity\": 1745787\n  },\n  {\n    \"tag\": "movableness deity",\n    \"popularity\": 1708692\n  },\n  {\n    \"tag\": "exostracism",\n    \"popularity\": 1672816\n  },\n  {\n    \"tag\": "archipterygium",\n    \"popularity\": 1638104\n  },\n  {\n    \"tag\": "monostrophic",\n    \"popularity\": 1604506\n  },\n  {\n    \"tag\": "gynecide",\n    \"popularity\": 1571974\n  },\n  {\n    \"tag\": "gladden",\n    \"popularity\": 1540462\n  },\n  {\n    \"tag\": "throughbred",\n    \"popularity\": 1509927\n  },\n  {\n    \"tag\": "groper",\n    \"popularity\": 1480329\n  },\n  {\n    \"tag\": "Xenosaurus",\n    \"popularity\": 1451628\n  },\n  {\n    \"tag\": "photoetcher",\n    \"popularity\": 1423788\n  },\n  {\n    \"tag\": "glucosid",\n    \"popularity\": 1396775\n  },\n  {\n    \"tag\": "Galtonian",\n    \"popularity\": 1370555\n  },\n  {\n    \"tag\": "mesosporic",\n    \"popularity\": 1345097\n  },\n  {\n    \"tag\": "theody",\n    \"popularity\": 1320370\n  },\n  {\n    \"tag\": "zaffer",\n    \"popularity\": 1296348\n  },\n  {\n    \"tag\": "probiology",\n    \"popularity\": 1273003\n  },\n  {\n    \"tag\": "rhizomic",\n    \"popularity\": 1250308\n  },\n  {\n    \"tag\": "superphosphate",\n    \"popularity\": 1228240\n  },\n  {\n    \"tag\": "Hippolytan",\n    \"popularity\": 1206776\n  },\n  {\n    \"tag\": "garget",\n    \"popularity\": 1185892\n  },\n  {\n    \"tag\": "diploplacula",\n    \"popularity\": 1165568\n  },\n  {\n    \"tag\": "orohydrographical",\n    \"popularity\": 1145785\n  },\n  {\n    \"tag\": "enhypostatize",\n    \"popularity\": 1126521\n  },\n  {\n    \"tag\": "polisman",\n    \"popularity\": 1107759\n  },\n  {\n    \"tag\": "acetometer",\n    \"popularity\": 1089482\n  },\n  {\n    \"tag\": "unsnatched",\n    \"popularity\": 1071672\n  },\n  {\n    \"tag\": "yabber",\n    \"popularity\": 1054313\n  },\n  {\n    \"tag\": "demiwolf",\n    \"popularity\": 1037390\n  },\n  {\n    \"tag\": "chromascope",\n    \"popularity\": 1020888\n  },\n  {\n    \"tag\": "seamanship",\n    \"popularity\": 1004794\n  },\n  {\n    \"tag\": "nonfenestrated",\n    \"popularity\": 989092\n  },\n  {\n    \"tag\": "hydrophytism",\n    \"popularity\": 973771\n  },\n  {\n    \"tag\": "dotter",\n    \"popularity\": 958819\n  },\n  {\n    \"tag\": "thermoperiodism",\n    \"popularity\": 944222\n  },\n  {\n    \"tag\": "unlawyerlike",\n    \"popularity\": 929970\n  },\n  {\n    \"tag\": "enantiomeride citywards",\n    \"popularity\": 916052\n  },\n  {\n    \"tag\": "unmetallurgical",\n    \"popularity\": 902456\n  },\n  {\n    \"tag\": "prickled",\n    \"popularity\": 889174\n  },\n  {\n    \"tag\": "strangerwise manioc",\n    \"popularity\": 876195\n  },\n  {\n    \"tag\": "incisorial",\n    \"popularity\": 863510\n  },\n  {\n    \"tag\": "irrationalize",\n    \"popularity\": 851110\n  },\n  {\n    \"tag\": "nasology",\n    \"popularity\": 838987\n  },\n  {\n    \"tag\": "fatuism",\n    \"popularity\": 827131\n  },\n  {\n    \"tag\": "Huk",\n    \"popularity\": 815535\n  },\n  {\n    \"tag\": "properispomenon",\n    \"popularity\": 804192\n  },\n  {\n    \"tag\": "unpummelled",\n    \"popularity\": 793094\n  },\n  {\n    \"tag\": "technographically",\n    \"popularity\": 782233\n  },\n  {\n    \"tag\": "underfurnish",\n    \"popularity\": 771603\n  },\n  {\n    \"tag\": "sinter",\n    \"popularity\": 761198\n  },\n  {\n    \"tag\": "lateroanterior",\n    \"popularity\": 751010\n  },\n  {\n    \"tag\": "nonpersonification",\n    \"popularity\": 741034\n  },\n  {\n    \"tag\": "Sitophilus",\n    \"popularity\": 731264\n  },\n  {\n    \"tag\": "unstudded overexerted",\n    \"popularity\": 721694\n  },\n  {\n    \"tag\": "tracheation",\n    \"popularity\": 712318\n  },\n  {\n    \"tag\": "thirteenth begloze",\n    \"popularity\": 703131\n  },\n  {\n    \"tag\": "bespice",\n    \"popularity\": 694129\n  },\n  {\n    \"tag\": "doppia",\n    \"popularity\": 685305\n  },\n  {\n    \"tag\": "unadorned",\n    \"popularity\": 676656\n  },\n  {\n    \"tag\": "dovelet engraff",\n    \"popularity\": 668176\n  },\n  {\n    \"tag\": "diphyozooid",\n    \"popularity\": 659862\n  },\n  {\n    \"tag\": "mure",\n    \"popularity\": 651708\n  },\n  {\n    \"tag\": "Tripitaka",\n    \"popularity\": 643710\n  },\n  {\n    \"tag\": "Billjim",\n    \"popularity\": 635865\n  },\n  {\n    \"tag\": "pyramidical",\n    \"popularity\": 628169\n  },\n  {\n    \"tag\": "circumlocutionist",\n    \"popularity\": 620617\n  },\n  {\n    \"tag\": "slapstick",\n    \"popularity\": 613207\n  },\n  {\n    \"tag\": "preobedience",\n    \"popularity\": 605934\n  },\n  {\n    \"tag\": "unfriarlike",\n    \"popularity\": 598795\n  },\n  {\n    \"tag\": "microchromosome",\n    \"popularity\": 591786\n  },\n  {\n    \"tag\": "Orphicism",\n    \"popularity\": 584905\n  },\n  {\n    \"tag\": "peel",\n    \"popularity\": 578149\n  },\n  {\n    \"tag\": "obediential",\n    \"popularity\": 571514\n  },\n  {\n    \"tag\": "Peripatidea",\n    \"popularity\": 564997\n  },\n  {\n    \"tag\": "undoubtful",\n    \"popularity\": 558596\n  },\n  {\n    \"tag\": "lodgeable",\n    \"popularity\": 552307\n  },\n  {\n    \"tag\": "pustulated woodchat",\n    \"popularity\": 546129\n  },\n  {\n    \"tag\": "antepast",\n    \"popularity\": 540057\n  },\n  {\n    \"tag\": "sagittoid matrimoniously",\n    \"popularity\": 534091\n  },\n  {\n    \"tag\": "Albizzia",\n    \"popularity\": 528228\n  },\n  {\n    \"tag\": "Elateridae unnewness",\n    \"popularity\": 522464\n  },\n  {\n    \"tag\": "convertingness",\n    \"popularity\": 516798\n  },\n  {\n    \"tag\": "Pelew",\n    \"popularity\": 511228\n  },\n  {\n    \"tag\": "recapitulation",\n    \"popularity\": 505751\n  },\n  {\n    \"tag\": "shack",\n    \"popularity\": 500365\n  },\n  {\n    \"tag\": "unmellowed",\n    \"popularity\": 495069\n  },\n  {\n    \"tag\": "pavis capering",\n    \"popularity\": 489859\n  },\n  {\n    \"tag\": "fanfare",\n    \"popularity\": 484735\n  },\n  {\n    \"tag\": "sole",\n    \"popularity\": 479695\n  },\n  {\n    \"tag\": "subarcuate",\n    \"popularity\": 474735\n  },\n  {\n    \"tag\": "multivious",\n    \"popularity\": 469856\n  },\n  {\n    \"tag\": "squandermania",\n    \"popularity\": 465054\n  },\n  {\n    \"tag\": "scintle",\n    \"popularity\": 460329\n  },\n  {\n    \"tag\": "hash chirognomic",\n    \"popularity\": 455679\n  },\n  {\n    \"tag\": "linseed",\n    \"popularity\": 451101\n  },\n  {\n    \"tag\": "redoubtable",\n    \"popularity\": 446596\n  },\n  {\n    \"tag\": "poachy reimpact",\n    \"popularity\": 442160\n  },\n  {\n    \"tag\": "limestone",\n    \"popularity\": 437792\n  },\n  {\n    \"tag\": "serranid",\n    \"popularity\": 433492\n  },\n  {\n    \"tag\": "pohna",\n    \"popularity\": 429258\n  },\n  {\n    \"tag\": "warwolf",\n    \"popularity\": 425088\n  },\n  {\n    \"tag\": "ruthenous",\n    \"popularity\": 420981\n  },\n  {\n    \"tag\": "dover",\n    \"popularity\": 416935\n  },\n  {\n    \"tag\": "deuteroalbumose",\n    \"popularity\": 412950\n  },\n  {\n    \"tag\": "pseudoprophetic",\n    \"popularity\": 409025\n  },\n  {\n    \"tag\": "dissoluteness",\n    \"popularity\": 405157\n  },\n  {\n    \"tag\": "preinvention",\n    \"popularity\": 401347\n  },\n  {\n    \"tag\": "swagbellied",\n    \"popularity\": 397592\n  },\n  {\n    \"tag\": "Ophidia",\n    \"popularity\": 393892\n  },\n  {\n    \"tag\": "equanimity",\n    \"popularity\": 390245\n  },\n  {\n    \"tag\": "troutful",\n    \"popularity\": 386651\n  },\n  {\n    \"tag\": "uke",\n    \"popularity\": 383108\n  },\n  {\n    \"tag\": "preacquaint",\n    \"popularity\": 379616\n  },\n  {\n    \"tag\": "shoq",\n    \"popularity\": 376174\n  },\n  {\n    \"tag\": "yox",\n    \"popularity\": 372780\n  },\n  {\n    \"tag\": "unelemental",\n    \"popularity\": 369434\n  },\n  {\n    \"tag\": "Yavapai",\n    \"popularity\": 366134\n  },\n  {\n    \"tag\": "joulean",\n    \"popularity\": 362880\n  },\n  {\n    \"tag\": "dracontine",\n    \"popularity\": 359672\n  },\n  {\n    \"tag\": "hardmouth",\n    \"popularity\": 356507\n  },\n  {\n    \"tag\": "sylvanize",\n    \"popularity\": 353386\n  },\n  {\n    \"tag\": "intraparenchymatous meadowbur",\n    \"popularity\": 350308\n  },\n  {\n    \"tag\": "uncharily",\n    \"popularity\": 347271\n  },\n  {\n    \"tag\": "redtab flexibly",\n    \"popularity\": 344275\n  },\n  {\n    \"tag\": "centervelic",\n    \"popularity\": 341319\n  },\n  {\n    \"tag\": "unravellable",\n    \"popularity\": 338403\n  },\n  {\n    \"tag\": "infortunately",\n    \"popularity\": 335526\n  },\n  {\n    \"tag\": "cannel",\n    \"popularity\": 332687\n  },\n  {\n    \"tag\": "oxyblepsia",\n    \"popularity\": 329885\n  },\n  {\n    \"tag\": "Damon",\n    \"popularity\": 327120\n  },\n  {\n    \"tag\": "etherin",\n    \"popularity\": 324391\n  },\n  {\n    \"tag\": "luminal",\n    \"popularity\": 321697\n  },\n  {\n    \"tag\": "interrogatorily presbyte",\n    \"popularity\": 319038\n  },\n  {\n    \"tag\": "hemiclastic",\n    \"popularity\": 316414\n  },\n  {\n    \"tag\": "poh flush",\n    \"popularity\": 313823\n  },\n  {\n    \"tag\": "Psoroptes",\n    \"popularity\": 311265\n  },\n  {\n    \"tag\": "dispirit",\n    \"popularity\": 308740\n  },\n  {\n    \"tag\": "nashgab",\n    \"popularity\": 306246\n  },\n  {\n    \"tag\": "Aphidiinae",\n    \"popularity\": 303784\n  },\n  {\n    \"tag\": "rhapsody nonconstruction",\n    \"popularity\": 301353\n  },\n  {\n    \"tag\": "Osmond",\n    \"popularity\": 298952\n  },\n  {\n    \"tag\": "Leonis",\n    \"popularity\": 296581\n  },\n  {\n    \"tag\": "Lemnian",\n    \"popularity\": 294239\n  },\n  {\n    \"tag\": "acetonic gnathonic",\n    \"popularity\": 291926\n  },\n  {\n    \"tag\": "surculus",\n    \"popularity\": 289641\n  },\n  {\n    \"tag\": "diagonally",\n    \"popularity\": 287384\n  },\n  {\n    \"tag\": "counterpenalty",\n    \"popularity\": 285154\n  },\n  {\n    \"tag\": "Eugenie",\n    \"popularity\": 282952\n  },\n  {\n    \"tag\": "hornbook",\n    \"popularity\": 280776\n  },\n  {\n    \"tag\": "miscoin",\n    \"popularity\": 278626\n  },\n  {\n    \"tag\": "admi",\n    \"popularity\": 276501\n  },\n  {\n    \"tag\": "Tarmac",\n    \"popularity\": 274402\n  },\n  {\n    \"tag\": "inexplicable",\n    \"popularity\": 272328\n  },\n  {\n    \"tag\": "rascallion",\n    \"popularity\": 270278\n  },\n  {\n    \"tag\": "dusterman",\n    \"popularity\": 268252\n  },\n  {\n    \"tag\": "osteostomous unhoroscopic",\n    \"popularity\": 266250\n  },\n  {\n    \"tag\": "spinibulbar",\n    \"popularity\": 264271\n  },\n  {\n    \"tag\": "phototelegraphically",\n    \"popularity\": 262315\n  },\n  {\n    \"tag\": "Manihot",\n    \"popularity\": 260381\n  },\n  {\n    \"tag\": "neighborhood",\n    \"popularity\": 258470\n  },\n  {\n    \"tag\": "Vincetoxicum",\n    \"popularity\": 256581\n  },\n  {\n    \"tag\": "khirka",\n    \"popularity\": 254713\n  },\n  {\n    \"tag\": "conscriptive",\n    \"popularity\": 252866\n  },\n  {\n    \"tag\": "synechthran",\n    \"popularity\": 251040\n  },\n  {\n    \"tag\": "Guttiferales",\n    \"popularity\": 249235\n  },\n  {\n    \"tag\": "roomful",\n    \"popularity\": 247450\n  },\n  {\n    \"tag\": "germinal",\n    \"popularity\": 245685\n  },\n  {\n    \"tag\": "untraitorous",\n    \"popularity\": 243939\n  },\n  {\n    \"tag\": "nondissenting",\n    \"popularity\": 242213\n  },\n  {\n    \"tag\": "amotion",\n    \"popularity\": 240506\n  },\n  {\n    \"tag\": "badious",\n    \"popularity\": 238817\n  },\n  {\n    \"tag\": "sumpit",\n    \"popularity\": 237147\n  },\n  {\n    \"tag\": "ectozoic",\n    \"popularity\": 235496\n  },\n  {\n    \"tag\": "elvet",\n    \"popularity\": 233862\n  },\n  {\n    \"tag\": "underclerk",\n    \"popularity\": 232246\n  },\n  {\n    \"tag\": "reticency",\n    \"popularity\": 230647\n  },\n  {\n    \"tag\": "neutroclusion",\n    \"popularity\": 229065\n  },\n  {\n    \"tag\": "unbelieving",\n    \"popularity\": 227500\n  },\n  {\n    \"tag\": "histogenetic",\n    \"popularity\": 225952\n  },\n  {\n    \"tag\": "dermamyiasis",\n    \"popularity\": 224421\n  },\n  {\n    \"tag\": "telenergy",\n    \"popularity\": 222905\n  },\n  {\n    \"tag\": "axiomatic",\n    \"popularity\": 221406\n  },\n  {\n    \"tag\": "undominoed",\n    \"popularity\": 219922\n  },\n  {\n    \"tag\": "periosteoma",\n    \"popularity\": 218454\n  },\n  {\n    \"tag\": "justiciaryship",\n    \"popularity\": 217001\n  },\n  {\n    \"tag\": "autoluminescence",\n    \"popularity\": 215563\n  },\n  {\n    \"tag\": "osmous",\n    \"popularity\": 214140\n  },\n  {\n    \"tag\": "borgh",\n    \"popularity\": 212731\n  },\n  {\n    \"tag\": "bedebt",\n    \"popularity\": 211337\n  },\n  {\n    \"tag\": "considerableness adenoidism",\n    \"popularity\": 209957\n  },\n  {\n    \"tag\": "sailorizing",\n    \"popularity\": 208592\n  },\n  {\n    \"tag\": "Montauk",\n    \"popularity\": 207240\n  },\n  {\n    \"tag\": "Bridget",\n    \"popularity\": 205901\n  },\n  {\n    \"tag\": "Gekkota",\n    \"popularity\": 204577\n  },\n  {\n    \"tag\": "subcorymbose",\n    \"popularity\": 203265\n  },\n  {\n    \"tag\": "undersap",\n    \"popularity\": 201967\n  },\n  {\n    \"tag\": "poikilothermic",\n    \"popularity\": 200681\n  },\n  {\n    \"tag\": "enneatical",\n    \"popularity\": 199409\n  },\n  {\n    \"tag\": "martinetism",\n    \"popularity\": 198148\n  },\n  {\n    \"tag\": "sustanedly",\n    \"popularity\": 196901\n  },\n  {\n    \"tag\": "declaration",\n    \"popularity\": 195665\n  },\n  {\n    \"tag\": "myringoplasty",\n    \"popularity\": 194442\n  },\n  {\n    \"tag\": "Ginkgo",\n    \"popularity\": 193230\n  },\n  {\n    \"tag\": "unrecurrent",\n    \"popularity\": 192031\n  },\n  {\n    \"tag\": "proprecedent",\n    \"popularity\": 190843\n  },\n  {\n    \"tag\": "roadman",\n    \"popularity\": 189666\n  },\n  {\n    \"tag\": "elemin",\n    \"popularity\": 188501\n  },\n  {\n    \"tag\": "maggot",\n    \"popularity\": 187347\n  },\n  {\n    \"tag\": "alitrunk",\n    \"popularity\": 186204\n  },\n  {\n    \"tag\": "introspection",\n    \"popularity\": 185071\n  },\n  {\n    \"tag\": "batiker",\n    \"popularity\": 183950\n  },\n  {\n    \"tag\": "backhatch oversettle",\n    \"popularity\": 182839\n  },\n  {\n    \"tag\": "thresherman",\n    \"popularity\": 181738\n  },\n  {\n    \"tag\": "protemperance",\n    \"popularity\": 180648\n  },\n  {\n    \"tag\": "undern",\n    \"popularity\": 179568\n  },\n  {\n    \"tag\": "tweeg",\n    \"popularity\": 178498\n  },\n  {\n    \"tag\": "crosspath",\n    \"popularity\": 177438\n  },\n  {\n    \"tag\": "Tangaridae",\n    \"popularity\": 176388\n  },\n  {\n    \"tag\": "scrutation",\n    \"popularity\": 175348\n  },\n  {\n    \"tag\": "piecemaker",\n    \"popularity\": 174317\n  },\n  {\n    \"tag\": "paster",\n    \"popularity\": 173296\n  },\n  {\n    \"tag\": "unpretendingness",\n    \"popularity\": 172284\n  },\n  {\n    \"tag\": "inframundane",\n    \"popularity\": 171281\n  },\n  {\n    \"tag\": "kiblah",\n    \"popularity\": 170287\n  },\n  {\n    \"tag\": "playwrighting",\n    \"popularity\": 169302\n  },\n  {\n    \"tag\": "gonepoiesis snowslip",\n    \"popularity\": 168326\n  },\n  {\n    \"tag\": "hoodwise",\n    \"popularity\": 167359\n  },\n  {\n    \"tag\": "postseason",\n    \"popularity\": 166401\n  },\n  {\n    \"tag\": "equivocality",\n    \"popularity\": 165451\n  },\n  {\n    \"tag\": "Opiliaceae nuclease",\n    \"popularity\": 164509\n  },\n  {\n    \"tag\": "sextipara",\n    \"popularity\": 163576\n  },\n  {\n    \"tag\": "weeper",\n    \"popularity\": 162651\n  },\n  {\n    \"tag\": "frambesia",\n    \"popularity\": 161735\n  },\n  {\n    \"tag\": "answerable",\n    \"popularity\": 160826\n  },\n  {\n    \"tag\": "Trichosporum",\n    \"popularity\": 159925\n  },\n  {\n    \"tag\": "cajuputol",\n    \"popularity\": 159033\n  },\n  {\n    \"tag\": "pleomorphous",\n    \"popularity\": 158148\n  },\n  {\n    \"tag\": "aculeolate",\n    \"popularity\": 157270\n  },\n  {\n    \"tag\": "wherever",\n    \"popularity\": 156400\n  },\n  {\n    \"tag\": "collapse",\n    \"popularity\": 155538\n  },\n  {\n    \"tag\": "porky",\n    \"popularity\": 154683\n  },\n  {\n    \"tag\": "perule",\n    \"popularity\": 153836\n  },\n  {\n    \"tag\": "Nevada",\n    \"popularity\": 152996\n  },\n  {\n    \"tag\": "conalbumin",\n    \"popularity\": 152162\n  },\n  {\n    \"tag\": "tsunami",\n    \"popularity\": 151336\n  },\n  {\n    \"tag\": "Gulf",\n    \"popularity\": 150517\n  },\n  {\n    \"tag\": "hertz",\n    \"popularity\": 149705\n  },\n  {\n    \"tag\": "limmock",\n    \"popularity\": 148900\n  },\n  {\n    \"tag\": "Tartarize",\n    \"popularity\": 148101\n  },\n  {\n    \"tag\": "entosphenoid",\n    \"popularity\": 147310\n  },\n  {\n    \"tag\": "ibis",\n    \"popularity\": 146524\n  },\n  {\n    \"tag\": "unyeaned",\n    \"popularity\": 145746\n  },\n  {\n    \"tag\": "tritural",\n    \"popularity\": 144973\n  },\n  {\n    \"tag\": "hundredary",\n    \"popularity\": 144207\n  },\n  {\n    \"tag\": "stolonlike",\n    \"popularity\": 143448\n  },\n  {\n    \"tag\": "chorister",\n    \"popularity\": 142694\n  },\n  {\n    \"tag\": "mismove",\n    \"popularity\": 141947\n  },\n  {\n    \"tag\": "Andine",\n    \"popularity\": 141206\n  },\n  {\n    \"tag\": "Annette proneur escribe",\n    \"popularity\": 140471\n  },\n  {\n    \"tag\": "exoperidium",\n    \"popularity\": 139742\n  },\n  {\n    \"tag\": "disedge",\n    \"popularity\": 139019\n  },\n  {\n    \"tag\": "hypochloruria",\n    \"popularity\": 138302\n  },\n  {\n    \"tag\": "prepupa",\n    \"popularity\": 137590\n  },\n  {\n    \"tag\": "assent",\n    \"popularity\": 136884\n  },\n  {\n    \"tag\": "hydrazobenzene",\n    \"popularity\": 136184\n  },\n  {\n    \"tag\": "emballonurid",\n    \"popularity\": 135489\n  },\n  {\n    \"tag\": "roselle",\n    \"popularity\": 134800\n  },\n  {\n    \"tag\": "unifiedly",\n    \"popularity\": 134117\n  },\n  {\n    \"tag\": "clang",\n    \"popularity\": 133439\n  },\n  {\n    \"tag\": "acetolytic",\n    \"popularity\": 132766\n  },\n  {\n    \"tag\": "cladodont",\n    \"popularity\": 132098\n  },\n  {\n    \"tag\": "recoast",\n    \"popularity\": 131436\n  },\n  {\n    \"tag\": "celebrated tydie Eocarboniferous",\n    \"popularity\": 130779\n  },\n  {\n    \"tag\": "superconsciousness",\n    \"popularity\": 130127\n  },\n  {\n    \"tag\": "soberness",\n    \"popularity\": 129480\n  },\n  {\n    \"tag\": "panoramist",\n    \"popularity\": 128838\n  },\n  {\n    \"tag\": "Orbitolina",\n    \"popularity\": 128201\n  },\n  {\n    \"tag\": "overlewd",\n    \"popularity\": 127569\n  },\n  {\n    \"tag\": "demiquaver",\n    \"popularity\": 126942\n  },\n  {\n    \"tag\": "kamelaukion",\n    \"popularity\": 126319\n  },\n  {\n    \"tag\": "flancard",\n    \"popularity\": 125702\n  },\n  {\n    \"tag\": "tricuspid",\n    \"popularity\": 125089\n  },\n  {\n    \"tag\": "bepelt",\n    \"popularity\": 124480\n  },\n  {\n    \"tag\": "decuplet",\n    \"popularity\": 123877\n  },\n  {\n    \"tag\": "Rockies",\n    \"popularity\": 123278\n  },\n  {\n    \"tag\": "unforgeability",\n    \"popularity\": 122683\n  },\n  {\n    \"tag\": "mocha",\n    \"popularity\": 122093\n  },\n  {\n    \"tag\": "scrunge",\n    \"popularity\": 121507\n  },\n  {\n    \"tag\": "delighter",\n    \"popularity\": 120926\n  },\n  {\n    \"tag\": "willey Microtinae",\n    \"popularity\": 120349\n  },\n  {\n    \"tag\": "unhuntable",\n    \"popularity\": 119777\n  },\n  {\n    \"tag\": "historically",\n    \"popularity\": 119208\n  },\n  {\n    \"tag\": "vicegerentship",\n    \"popularity\": 118644\n  },\n  {\n    \"tag\": "hemangiosarcoma",\n    \"popularity\": 118084\n  },\n  {\n    \"tag\": "harpago",\n    \"popularity\": 117528\n  },\n  {\n    \"tag\": "unionoid",\n    \"popularity\": 116976\n  },\n  {\n    \"tag\": "wiseman",\n    \"popularity\": 116429\n  },\n  {\n    \"tag\": "diclinism",\n    \"popularity\": 115885\n  },\n  {\n    \"tag\": "Maud",\n    \"popularity\": 115345\n  },\n  {\n    \"tag\": "scaphocephalism",\n    \"popularity\": 114809\n  },\n  {\n    \"tag\": "obtenebration",\n    \"popularity\": 114277\n  },\n  {\n    \"tag\": "cymar predreadnought",\n    \"popularity\": 113749\n  },\n  {\n    \"tag\": "discommend",\n    \"popularity\": 113225\n  },\n  {\n    \"tag\": "crude",\n    \"popularity\": 112704\n  },\n  {\n    \"tag\": "upflash",\n    \"popularity\": 112187\n  },\n  {\n    \"tag\": "saltimbank",\n    \"popularity\": 111674\n  },\n  {\n    \"tag\": "posthysterical",\n    \"popularity\": 111165\n  },\n  {\n    \"tag\": "trample",\n    \"popularity\": 110659\n  },\n  {\n    \"tag\": "ungirthed",\n    \"popularity\": 110157\n  },\n  {\n    \"tag\": "unshakable",\n    \"popularity\": 109658\n  },\n  {\n    \"tag\": "hepatocystic",\n    \"popularity\": 109163\n  },\n  {\n    \"tag\": "psammophyte",\n    \"popularity\": 108671\n  },\n  {\n    \"tag\": "millionfold",\n    \"popularity\": 108183\n  },\n  {\n    \"tag\": "outtaste",\n    \"popularity\": 107698\n  },\n  {\n    \"tag\": "poppycockish",\n    \"popularity\": 107217\n  },\n  {\n    \"tag\": "viduine",\n    \"popularity\": 106739\n  },\n  {\n    \"tag\": "pleasureman",\n    \"popularity\": 106264\n  },\n  {\n    \"tag\": "cholesterolemia",\n    \"popularity\": 105792\n  },\n  {\n    \"tag\": "hostlerwife",\n    \"popularity\": 105324\n  },\n  {\n    \"tag\": "figure undergrass",\n    \"popularity\": 104859\n  },\n  {\n    \"tag\": "bedrape",\n    \"popularity\": 104398\n  },\n  {\n    \"tag\": "nuttishness",\n    \"popularity\": 103939\n  },\n  {\n    \"tag\": "fow",\n    \"popularity\": 103484\n  },\n  {\n    \"tag\": "rachianesthesia",\n    \"popularity\": 103031\n  },\n  {\n    \"tag\": "recruitable",\n    \"popularity\": 102582\n  },\n  {\n    \"tag\": "semianatomical Oenotheraceae",\n    \"popularity\": 102136\n  },\n  {\n    \"tag\": "extracapsular",\n    \"popularity\": 101693\n  },\n  {\n    \"tag\": "unsigneted",\n    \"popularity\": 101253\n  },\n  {\n    \"tag\": "fissural",\n    \"popularity\": 100816\n  },\n  {\n    \"tag\": "ayous",\n    \"popularity\": 100381\n  },\n  {\n    \"tag\": "crestfallenness odontograph",\n    \"popularity\": 99950\n  },\n  {\n    \"tag\": "monopodium",\n    \"popularity\": 99522\n  },\n  {\n    \"tag\": "germfree",\n    \"popularity\": 99096\n  },\n  {\n    \"tag\": "dauphin",\n    \"popularity\": 98673\n  },\n  {\n    \"tag\": "nonagesimal",\n    \"popularity\": 98254\n  },\n  {\n    \"tag\": "waterchat",\n    \"popularity\": 97836\n  },\n  {\n    \"tag\": "Entelodon",\n    \"popularity\": 97422\n  },\n  {\n    \"tag\": "semischolastic",\n    \"popularity\": 97010\n  },\n  {\n    \"tag\": "somata",\n    \"popularity\": 96602\n  },\n  {\n    \"tag\": "expositorily",\n    \"popularity\": 96195\n  },\n  {\n    \"tag\": "bass",\n    \"popularity\": 95792\n  },\n  {\n    \"tag\": "calorimetry",\n    \"popularity\": 95391\n  },\n  {\n    \"tag\": "entireness",\n    \"popularity\": 94993\n  },\n  {\n    \"tag\": "ratline soppiness",\n    \"popularity\": 94597\n  },\n  {\n    \"tag\": "shor",\n    \"popularity\": 94204\n  },\n  {\n    \"tag\": "coprecipitation",\n    \"popularity\": 93813\n  },\n  {\n    \"tag\": "unblushingly",\n    \"popularity\": 93425\n  },\n  {\n    \"tag\": "macarize",\n    \"popularity\": 93040\n  },\n  {\n    \"tag\": "scruplesomeness",\n    \"popularity\": 92657\n  },\n  {\n    \"tag\": "offsaddle",\n    \"popularity\": 92276\n  },\n  {\n    \"tag\": "hypertragical",\n    \"popularity\": 91898\n  },\n  {\n    \"tag\": "uncassock loined",\n    \"popularity\": 91522\n  },\n  {\n    \"tag\": "interlobate",\n    \"popularity\": 91149\n  },\n  {\n    \"tag\": "releasor orrisroot stoloniferously",\n    \"popularity\": 90778\n  },\n  {\n    \"tag\": "elementoid",\n    \"popularity\": 90410\n  },\n  {\n    \"tag\": "Lentilla",\n    \"popularity\": 90043\n  },\n  {\n    \"tag\": "distressing",\n    \"popularity\": 89679\n  },\n  {\n    \"tag\": "hydrodrome",\n    \"popularity\": 89318\n  },\n  {\n    \"tag\": "Jeannette",\n    \"popularity\": 88958\n  },\n  {\n    \"tag\": "Kuli",\n    \"popularity\": 88601\n  },\n  {\n    \"tag\": "taxinomist",\n    \"popularity\": 88246\n  },\n  {\n    \"tag\": "southwestwardly",\n    \"popularity\": 87894\n  },\n  {\n    \"tag\": "polyparia",\n    \"popularity\": 87543\n  },\n  {\n    \"tag\": "exmeridian",\n    \"popularity\": 87195\n  },\n  {\n    \"tag\": "splenius regimentaled",\n    \"popularity\": 86849\n  },\n  {\n    \"tag\": "Sphaeropsidaceae",\n    \"popularity\": 86505\n  },\n  {\n    \"tag\": "unbegun",\n    \"popularity\": 86163\n  },\n  {\n    \"tag\": "something",\n    \"popularity\": 85823\n  },\n  {\n    \"tag\": "contaminable nonexpulsion",\n    \"popularity\": 85486\n  },\n  {\n    \"tag\": "douser",\n    \"popularity\": 85150\n  },\n  {\n    \"tag\": "prostrike",\n    \"popularity\": 84817\n  },\n  {\n    \"tag\": "worky",\n    \"popularity\": 84485\n  },\n  {\n    \"tag\": "folliful",\n    \"popularity\": 84156\n  },\n  {\n    \"tag\": "prioracy",\n    \"popularity\": 83828\n  },\n  {\n    \"tag\": "undermentioned",\n    \"popularity\": 83503\n  },\n  {\n    \"tag\": "Judaica",\n    \"popularity\": 83179\n  },\n  {\n    \"tag\": "multifarious",\n    \"popularity\": 82858\n  },\n  {\n    \"tag\": "poogye",\n    \"popularity\": 82538\n  },\n  {\n    \"tag\": "Sparganium",\n    \"popularity\": 82221\n  },\n  {\n    \"tag\": "thurrock",\n    \"popularity\": 81905\n  },\n  {\n    \"tag\": "outblush",\n    \"popularity\": 81591\n  },\n  {\n    \"tag\": "Strophanthus supraordination",\n    \"popularity\": 81279\n  },\n  {\n    \"tag\": "gingerroot",\n    \"popularity\": 80969\n  },\n  {\n    \"tag\": "unconscient",\n    \"popularity\": 80661\n  },\n  {\n    \"tag\": "unconstitutionally",\n    \"popularity\": 80354\n  },\n  {\n    \"tag\": "plaguily",\n    \"popularity\": 80050\n  },\n  {\n    \"tag\": "waterily equatorwards",\n    \"popularity\": 79747\n  },\n  {\n    \"tag\": "nondeposition",\n    \"popularity\": 79446\n  },\n  {\n    \"tag\": "dronishly",\n    \"popularity\": 79147\n  },\n  {\n    \"tag\": "gateado",\n    \"popularity\": 78849\n  },\n  {\n    \"tag\": "dislink",\n    \"popularity\": 78553\n  },\n  {\n    \"tag\": "Joceline",\n    \"popularity\": 78259\n  },\n  {\n    \"tag\": "amphiboliferous",\n    \"popularity\": 77967\n  },\n  {\n    \"tag\": "bushrope",\n    \"popularity\": 77676\n  },\n  {\n    \"tag\": "plumicorn sulphosalicylic",\n    \"popularity\": 77387\n  },\n  {\n    \"tag\": "nonefficiency",\n    \"popularity\": 77100\n  },\n  {\n    \"tag\": "hieroscopy",\n    \"popularity\": 76815\n  },\n  {\n    \"tag\": "causativeness",\n    \"popularity\": 76531\n  },\n  {\n    \"tag\": "swird paleoeremology",\n    \"popularity\": 76249\n  },\n  {\n    \"tag\": "camphoric",\n    \"popularity\": 75968\n  },\n  {\n    \"tag\": "retaining",\n    \"popularity\": 75689\n  },\n  {\n    \"tag\": "thyreoprotein",\n    \"popularity\": 75411\n  },\n  {\n    \"tag\": "carbona",\n    \"popularity\": 75136\n  },\n  {\n    \"tag\": "protectively",\n    \"popularity\": 74861\n  },\n  {\n    \"tag\": "mosasaur",\n    \"popularity\": 74589\n  },\n  {\n    \"tag\": "reciprocator",\n    \"popularity\": 74317\n  },\n  {\n    \"tag\": "detentive",\n    \"popularity\": 74048\n  },\n  {\n    \"tag\": "supravital",\n    \"popularity\": 73780\n  },\n  {\n    \"tag\": "Vespertilionidae",\n    \"popularity\": 73513\n  },\n  {\n    \"tag\": "parka",\n    \"popularity\": 73248\n  },\n  {\n    \"tag\": "pickaway",\n    \"popularity\": 72984\n  },\n  {\n    \"tag\": "oleaceous",\n    \"popularity\": 72722\n  },\n  {\n    \"tag\": "anticogitative",\n    \"popularity\": 72462\n  },\n  {\n    \"tag\": "woe",\n    \"popularity\": 72203\n  },\n  {\n    \"tag\": "skeuomorph",\n    \"popularity\": 71945\n  },\n  {\n    \"tag\": "helpmeet",\n    \"popularity\": 71689\n  },\n  {\n    \"tag\": "Hexactinellida brickmaking",\n    \"popularity\": 71434\n  },\n  {\n    \"tag\": "resink",\n    \"popularity\": 71180\n  },\n  {\n    \"tag\": "diluter",\n    \"popularity\": 70928\n  },\n  {\n    \"tag\": "micromicron",\n    \"popularity\": 70677\n  },\n  {\n    \"tag\": "parentage",\n    \"popularity\": 70428\n  },\n  {\n    \"tag\": "galactorrhoea",\n    \"popularity\": 70180\n  },\n  {\n    \"tag\": "gey",\n    \"popularity\": 69934\n  },\n  {\n    \"tag\": "gesticulatory",\n    \"popularity\": 69689\n  },\n  {\n    \"tag\": "wergil",\n    \"popularity\": 69445\n  },\n  {\n    \"tag\": "Lecanora",\n    \"popularity\": 69202\n  },\n  {\n    \"tag\": "malanders karst",\n    \"popularity\": 68961\n  },\n  {\n    \"tag\": "vibetoite",\n    \"popularity\": 68721\n  },\n  {\n    \"tag\": "unrequitedness",\n    \"popularity\": 68483\n  },\n  {\n    \"tag\": "outwash",\n    \"popularity\": 68245\n  },\n  {\n    \"tag\": "unsacred",\n    \"popularity\": 68009\n  },\n  {\n    \"tag\": "unabetted dividend",\n    \"popularity\": 67775\n  },\n  {\n    \"tag\": "untraveling",\n    \"popularity\": 67541\n  },\n  {\n    \"tag\": "thermobattery",\n    \"popularity\": 67309\n  },\n  {\n    \"tag\": "polypragmist",\n    \"popularity\": 67078\n  },\n  {\n    \"tag\": "irrefutableness",\n    \"popularity\": 66848\n  },\n  {\n    \"tag\": "remiges",\n    \"popularity\": 66620\n  },\n  {\n    \"tag\": "implode",\n    \"popularity\": 66393\n  },\n  {\n    \"tag\": "superfluousness",\n    \"popularity\": 66166\n  },\n  {\n    \"tag\": "croakily unalleviated",\n    \"popularity\": 65942\n  },\n  {\n    \"tag\": "edicule",\n    \"popularity\": 65718\n  },\n  {\n    \"tag\": "entophytous",\n    \"popularity\": 65495\n  },\n  {\n    \"tag\": "benefactorship Toryish",\n    \"popularity\": 65274\n  },\n  {\n    \"tag\": "pseudoamateurish",\n    \"popularity\": 65054\n  },\n  {\n    \"tag\": "flueless Iguanodontoidea snipnose",\n    \"popularity\": 64835\n  },\n  {\n    \"tag\": "zealotical Zamicrus interpole",\n    \"popularity\": 64617\n  },\n  {\n    \"tag\": "whereabout",\n    \"popularity\": 64401\n  },\n  {\n    \"tag\": "benzazide",\n    \"popularity\": 64185\n  },\n  {\n    \"tag\": "pokeweed",\n    \"popularity\": 63971\n  },\n  {\n    \"tag\": "calamitoid",\n    \"popularity\": 63757\n  },\n  {\n    \"tag\": "sporozoal",\n    \"popularity\": 63545\n  },\n  {\n    \"tag\": "physcioid Welshwoman",\n    \"popularity\": 63334\n  },\n  {\n    \"tag\": "wanting",\n    \"popularity\": 63124\n  },\n  {\n    \"tag\": "unencumbering",\n    \"popularity\": 62915\n  },\n  {\n    \"tag\": "Tupi",\n    \"popularity\": 62707\n  },\n  {\n    \"tag\": "potbank",\n    \"popularity\": 62501\n  },\n  {\n    \"tag\": "bulked",\n    \"popularity\": 62295\n  },\n  {\n    \"tag\": "uparise",\n    \"popularity\": 62090\n  },\n  {\n    \"tag\": "Sudra",\n    \"popularity\": 61887\n  },\n  {\n    \"tag\": "hyperscrupulosity",\n    \"popularity\": 61684\n  },\n  {\n    \"tag\": "subterraneously unmaid",\n    \"popularity\": 61483\n  },\n  {\n    \"tag\": "poisonousness",\n    \"popularity\": 61282\n  },\n  {\n    \"tag\": "phare",\n    \"popularity\": 61083\n  },\n  {\n    \"tag\": "dicynodont",\n    \"popularity\": 60884\n  },\n  {\n    \"tag\": "chewer",\n    \"popularity\": 60687\n  },\n  {\n    \"tag\": "uliginous",\n    \"popularity\": 60490\n  },\n  {\n    \"tag\": "tinman",\n    \"popularity\": 60295\n  },\n  {\n    \"tag\": "coconut",\n    \"popularity\": 60100\n  },\n  {\n    \"tag\": "phryganeoid",\n    \"popularity\": 59907\n  },\n  {\n    \"tag\": "bismillah",\n    \"popularity\": 59714\n  },\n  {\n    \"tag\": "tautomeric",\n    \"popularity\": 59523\n  },\n  {\n    \"tag\": "jerquer",\n    \"popularity\": 59332\n  },\n  {\n    \"tag\": "Dryopithecinae",\n    \"popularity\": 59143\n  },\n  {\n    \"tag\": "ghizite",\n    \"popularity\": 58954\n  },\n  {\n    \"tag\": "unliveable",\n    \"popularity\": 58766\n  },\n  {\n    \"tag\": "craftsmaster",\n    \"popularity\": 58579\n  },\n  {\n    \"tag\": "semiscenic",\n    \"popularity\": 58394\n  },\n  {\n    \"tag\": "danaid",\n    \"popularity\": 58209\n  },\n  {\n    \"tag\": "flawful",\n    \"popularity\": 58025\n  },\n  {\n    \"tag\": "risibleness",\n    \"popularity\": 57841\n  },\n  {\n    \"tag\": "Muscovite",\n    \"popularity\": 57659\n  },\n  {\n    \"tag\": "snaringly",\n    \"popularity\": 57478\n  },\n  {\n    \"tag\": "brilliantwise",\n    \"popularity\": 57297\n  },\n  {\n    \"tag\": "plebeity",\n    \"popularity\": 57118\n  },\n  {\n    \"tag\": "historicalness",\n    \"popularity\": 56939\n  },\n  {\n    \"tag\": "piecemeal",\n    \"popularity\": 56761\n  },\n  {\n    \"tag\": "maxillipedary",\n    \"popularity\": 56584\n  },\n  {\n    \"tag\": "Hypenantron",\n    \"popularity\": 56408\n  },\n  {\n    \"tag\": "quaintness avigate",\n    \"popularity\": 56233\n  },\n  {\n    \"tag\": "ave",\n    \"popularity\": 56059\n  },\n  {\n    \"tag\": "mediaevally",\n    \"popularity\": 55885\n  },\n  {\n    \"tag\": "brucite",\n    \"popularity\": 55712\n  },\n  {\n    \"tag\": "Schwendenerian",\n    \"popularity\": 55541\n  },\n  {\n    \"tag\": "julole",\n    \"popularity\": 55370\n  },\n  {\n    \"tag\": "palaeolith",\n    \"popularity\": 55199\n  },\n  {\n    \"tag\": "cotyledonary",\n    \"popularity\": 55030\n  },\n  {\n    \"tag\": "rond",\n    \"popularity\": 54861\n  },\n  {\n    \"tag\": "boomster tassoo",\n    \"popularity\": 54694\n  },\n  {\n    \"tag\": "cattishly",\n    \"popularity\": 54527\n  },\n  {\n    \"tag\": "tonguefence",\n    \"popularity\": 54360\n  },\n  {\n    \"tag\": "hexastylar triskele",\n    \"popularity\": 54195\n  },\n  {\n    \"tag\": "ariot",\n    \"popularity\": 54030\n  },\n  {\n    \"tag\": "intarsist",\n    \"popularity\": 53867\n  },\n  {\n    \"tag\": "Oscines",\n    \"popularity\": 53704\n  },\n  {\n    \"tag\": "Spaniolize",\n    \"popularity\": 53541\n  },\n  {\n    \"tag\": "smellfungus",\n    \"popularity\": 53380\n  },\n  {\n    \"tag\": "redisplay",\n    \"popularity\": 53219\n  },\n  {\n    \"tag\": "phosphene",\n    \"popularity\": 53059\n  },\n  {\n    \"tag\": "phycomycete",\n    \"popularity\": 52900\n  },\n  {\n    \"tag\": "prophetic",\n    \"popularity\": 52741\n  },\n  {\n    \"tag\": "overtrustful",\n    \"popularity\": 52584\n  },\n  {\n    \"tag\": "pinitol",\n    \"popularity\": 52427\n  },\n  {\n    \"tag\": "asthmatic",\n    \"popularity\": 52270\n  },\n  {\n    \"tag\": "convulsive",\n    \"popularity\": 52115\n  },\n  {\n    \"tag\": "draughtswoman",\n    \"popularity\": 51960\n  },\n  {\n    \"tag\": "unetymologizable",\n    \"popularity\": 51806\n  },\n  {\n    \"tag\": "centrarchoid",\n    \"popularity\": 51652\n  },\n  {\n    \"tag\": "mesioincisal",\n    \"popularity\": 51500\n  },\n  {\n    \"tag\": "transbaikal",\n    \"popularity\": 51348\n  },\n  {\n    \"tag\": "silveriness",\n    \"popularity\": 51196\n  },\n  {\n    \"tag\": "costotomy",\n    \"popularity\": 51046\n  },\n  {\n    \"tag\": "caracore",\n    \"popularity\": 50896\n  },\n  {\n    \"tag\": "depotentiation",\n    \"popularity\": 50747\n  },\n  {\n    \"tag\": "glossoepiglottidean",\n    \"popularity\": 50598\n  },\n  {\n    \"tag\": "upswell",\n    \"popularity\": 50450\n  },\n  {\n    \"tag\": "flecnodal",\n    \"popularity\": 50303\n  },\n  {\n    \"tag\": "coventrate",\n    \"popularity\": 50157\n  },\n  {\n    \"tag\": "duchesse",\n    \"popularity\": 50011\n  },\n  {\n    \"tag\": "excisemanship trophied",\n    \"popularity\": 49866\n  },\n  {\n    \"tag\": "cytinaceous",\n    \"popularity\": 49721\n  },\n  {\n    \"tag\": "assuringly",\n    \"popularity\": 49577\n  },\n  {\n    \"tag\": "unconducted upliftitis",\n    \"popularity\": 49434\n  },\n  {\n    \"tag\": "rachicentesis",\n    \"popularity\": 49292\n  },\n  {\n    \"tag\": "antiangular",\n    \"popularity\": 49150\n  },\n  {\n    \"tag\": "advisal",\n    \"popularity\": 49008\n  },\n  {\n    \"tag\": "birdcatcher",\n    \"popularity\": 48868\n  },\n  {\n    \"tag\": "secularistic",\n    \"popularity\": 48728\n  },\n  {\n    \"tag\": "grandeeism superinformal",\n    \"popularity\": 48588\n  },\n  {\n    \"tag\": "unapprehension",\n    \"popularity\": 48449\n  },\n  {\n    \"tag\": "excipulum",\n    \"popularity\": 48311\n  },\n  {\n    \"tag\": "decimole",\n    \"popularity\": 48174\n  },\n  {\n    \"tag\": "semidrachm",\n    \"popularity\": 48037\n  },\n  {\n    \"tag\": "uvulotome",\n    \"popularity\": 47901\n  },\n  {\n    \"tag\": "Lemaneaceae",\n    \"popularity\": 47765\n  },\n  {\n    \"tag\": "corrade",\n    \"popularity\": 47630\n  },\n  {\n    \"tag\": "Kuroshio",\n    \"popularity\": 47495\n  },\n  {\n    \"tag\": "Araliophyllum",\n    \"popularity\": 47361\n  },\n  {\n    \"tag\": "victoriousness cardiosphygmograph",\n    \"popularity\": 47228\n  },\n  {\n    \"tag\": "reinvent",\n    \"popularity\": 47095\n  },\n  {\n    \"tag\": "Macrotolagus",\n    \"popularity\": 46963\n  },\n  {\n    \"tag\": "strenuousness",\n    \"popularity\": 46831\n  },\n  {\n    \"tag\": "deviability",\n    \"popularity\": 46700\n  },\n  {\n    \"tag\": "phyllospondylous",\n    \"popularity\": 46570\n  },\n  {\n    \"tag\": "bisect rudderhole",\n    \"popularity\": 46440\n  },\n  {\n    \"tag\": "crownwork",\n    \"popularity\": 46311\n  },\n  {\n    \"tag\": "Ascalabota",\n    \"popularity\": 46182\n  },\n  {\n    \"tag\": "prostatomyomectomy",\n    \"popularity\": 46054\n  },\n  {\n    \"tag\": "neurosyphilis",\n    \"popularity\": 45926\n  },\n  {\n    \"tag\": "tabloid scraplet",\n    \"popularity\": 45799\n  },\n  {\n    \"tag\": "nonmedullated servility",\n    \"popularity\": 45673\n  },\n  {\n    \"tag\": "melopoeic practicalization",\n    \"popularity\": 45547\n  },\n  {\n    \"tag\": "nonrhythmic",\n    \"popularity\": 45421\n  },\n  {\n    \"tag\": "deplorer",\n    \"popularity\": 45296\n  },\n  {\n    \"tag\": "Ophion",\n    \"popularity\": 45172\n  },\n  {\n    \"tag\": "subprioress",\n    \"popularity\": 45048\n  },\n  {\n    \"tag\": "semiregular",\n    \"popularity\": 44925\n  },\n  {\n    \"tag\": "praelection",\n    \"popularity\": 44802\n  },\n  {\n    \"tag\": "discinct",\n    \"popularity\": 44680\n  },\n  {\n    \"tag\": "preplace",\n    \"popularity\": 44558\n  },\n  {\n    \"tag\": "paternoster",\n    \"popularity\": 44437\n  },\n  {\n    \"tag\": "suboccipital",\n    \"popularity\": 44316\n  },\n  {\n    \"tag\": "Teutophil",\n    \"popularity\": 44196\n  },\n  {\n    \"tag\": "tracheole",\n    \"popularity\": 44076\n  },\n  {\n    \"tag\": "subsmile",\n    \"popularity\": 43957\n  },\n  {\n    \"tag\": "nonapostatizing",\n    \"popularity\": 43839\n  },\n  {\n    \"tag\": "cleidotomy",\n    \"popularity\": 43720\n  },\n  {\n    \"tag\": "hingle",\n    \"popularity\": 43603\n  },\n  {\n    \"tag\": "jocoque",\n    \"popularity\": 43486\n  },\n  {\n    \"tag\": "trundler notidanian",\n    \"popularity\": 43369\n  },\n  {\n    \"tag\": "strangling misdaub",\n    \"popularity\": 43253\n  },\n  {\n    \"tag\": "noncancellable",\n    \"popularity\": 43137\n  },\n  {\n    \"tag\": "lavabo",\n    \"popularity\": 43022\n  },\n  {\n    \"tag\": "lanterloo",\n    \"popularity\": 42907\n  },\n  {\n    \"tag\": "uncitizenly",\n    \"popularity\": 42793\n  },\n  {\n    \"tag\": "autoturning",\n    \"popularity\": 42679\n  },\n  {\n    \"tag\": "Haganah",\n    \"popularity\": 42566\n  },\n  {\n    \"tag\": "Glecoma",\n    \"popularity\": 42453\n  },\n  {\n    \"tag\": "membered",\n    \"popularity\": 42341\n  },\n  {\n    \"tag\": "consuetudinal",\n    \"popularity\": 42229\n  },\n  {\n    \"tag\": "gatehouse",\n    \"popularity\": 42117\n  },\n  {\n    \"tag\": "tetherball",\n    \"popularity\": 42006\n  },\n  {\n    \"tag\": "counterrevolutionist numismatical",\n    \"popularity\": 41896\n  },\n  {\n    \"tag\": "pagehood plateiasmus",\n    \"popularity\": 41786\n  },\n  {\n    \"tag\": "pelterer",\n    \"popularity\": 41676\n  },\n  {\n    \"tag\": "splenemphraxis",\n    \"popularity\": 41567\n  },\n  {\n    \"tag\": "Crypturidae",\n    \"popularity\": 41458\n  },\n  {\n    \"tag\": "caboodle",\n    \"popularity\": 41350\n  },\n  {\n    \"tag\": "Filaria",\n    \"popularity\": 41242\n  },\n  {\n    \"tag\": "noninvincibility",\n    \"popularity\": 41135\n  },\n  {\n    \"tag\": "preadvertisement",\n    \"popularity\": 41028\n  },\n  {\n    \"tag\": "bathrobe",\n    \"popularity\": 40921\n  },\n  {\n    \"tag\": "nitrifier",\n    \"popularity\": 40815\n  },\n  {\n    \"tag\": "furthermore",\n    \"popularity\": 40709\n  },\n  {\n    \"tag\": "recrate",\n    \"popularity\": 40604\n  },\n  {\n    \"tag\": "inexist",\n    \"popularity\": 40499\n  },\n  {\n    \"tag\": "Mocoan",\n    \"popularity\": 40395\n  },\n  {\n    \"tag\": "forint",\n    \"popularity\": 40291\n  },\n  {\n    \"tag\": "cardiomyoliposis",\n    \"popularity\": 40187\n  },\n  {\n    \"tag\": "channeling",\n    \"popularity\": 40084\n  },\n  {\n    \"tag\": "quebrachine",\n    \"popularity\": 39981\n  },\n  {\n    \"tag\": "magistery",\n    \"popularity\": 39879\n  },\n  {\n    \"tag\": "koko",\n    \"popularity\": 39777\n  },\n  {\n    \"tag\": "nobilify",\n    \"popularity\": 39676\n  },\n  {\n    \"tag\": "articulate taprooted",\n    \"popularity\": 39575\n  },\n  {\n    \"tag\": "cardiotonic Nicaragua",\n    \"popularity\": 39474\n  },\n  {\n    \"tag\": "assertiveness",\n    \"popularity\": 39374\n  },\n  {\n    \"tag\": "springtail",\n    \"popularity\": 39274\n  },\n  {\n    \"tag\": "spontoon",\n    \"popularity\": 39174\n  },\n  {\n    \"tag\": "plesiobiosis",\n    \"popularity\": 39075\n  },\n  {\n    \"tag\": "rooinek",\n    \"popularity\": 38976\n  },\n  {\n    \"tag\": "hairif falsehood",\n    \"popularity\": 38878\n  },\n  {\n    \"tag\": "synodally",\n    \"popularity\": 38780\n  },\n  {\n    \"tag\": "biodynamics",\n    \"popularity\": 38683\n  },\n  {\n    \"tag\": "trickling",\n    \"popularity\": 38585\n  },\n  {\n    \"tag\": "oxfly daystar",\n    \"popularity\": 38489\n  },\n  {\n    \"tag\": "epicycloidal",\n    \"popularity\": 38392\n  },\n  {\n    \"tag\": "shorthand",\n    \"popularity\": 38296\n  },\n  {\n    \"tag\": "herpolhode",\n    \"popularity\": 38201\n  },\n  {\n    \"tag\": "polysynthesism",\n    \"popularity\": 38105\n  },\n  {\n    \"tag\": "cany",\n    \"popularity\": 38010\n  },\n  {\n    \"tag\": "sideage",\n    \"popularity\": 37916\n  },\n  {\n    \"tag\": "strainableness",\n    \"popularity\": 37822\n  },\n  {\n    \"tag\": "superformidable",\n    \"popularity\": 37728\n  },\n  {\n    \"tag\": "slendang",\n    \"popularity\": 37634\n  },\n  {\n    \"tag\": "impropriation",\n    \"popularity\": 37541\n  },\n  {\n    \"tag\": "ficklehearted",\n    \"popularity\": 37449\n  },\n  {\n    \"tag\": "wintrify",\n    \"popularity\": 37356\n  },\n  {\n    \"tag\": "geomorphogenist",\n    \"popularity\": 37264\n  },\n  {\n    \"tag\": "smuggleable",\n    \"popularity\": 37173\n  },\n  {\n    \"tag\": "delapsion",\n    \"popularity\": 37081\n  },\n  {\n    \"tag\": "projective",\n    \"popularity\": 36990\n  },\n  {\n    \"tag\": "unglue exfoliation",\n    \"popularity\": 36900\n  },\n  {\n    \"tag\": "Acerae",\n    \"popularity\": 36810\n  },\n  {\n    \"tag\": "unstaged",\n    \"popularity\": 36720\n  },\n  {\n    \"tag\": "ranal",\n    \"popularity\": 36630\n  },\n  {\n    \"tag\": "worrier",\n    \"popularity\": 36541\n  },\n  {\n    \"tag\": "unhid",\n    \"popularity\": 36452\n  },\n  {\n    \"tag\": "adequation",\n    \"popularity\": 36363\n  },\n  {\n    \"tag\": "strongylid Sokotri",\n    \"popularity\": 36275\n  },\n  {\n    \"tag\": "fumingly",\n    \"popularity\": 36187\n  },\n  {\n    \"tag\": "gynosporangium phaenogenetic",\n    \"popularity\": 36100\n  },\n  {\n    \"tag\": "uniunguiculate",\n    \"popularity\": 36012\n  },\n  {\n    \"tag\": "prudelike",\n    \"popularity\": 35926\n  },\n  {\n    \"tag\": "seminomata",\n    \"popularity\": 35839\n  },\n  {\n    \"tag\": "trinklet",\n    \"popularity\": 35753\n  },\n  {\n    \"tag\": "risorial",\n    \"popularity\": 35667\n  },\n  {\n    \"tag\": "pericardiocentesis",\n    \"popularity\": 35581\n  },\n  {\n    \"tag\": "filmist",\n    \"popularity\": 35496\n  },\n  {\n    \"tag\": "Nana",\n    \"popularity\": 35411\n  },\n  {\n    \"tag\": "cynipoid",\n    \"popularity\": 35326\n  },\n  {\n    \"tag\": "cteniform",\n    \"popularity\": 35242\n  },\n  {\n    \"tag\": "semiflex",\n    \"popularity\": 35158\n  },\n  {\n    \"tag\": "solstitially",\n    \"popularity\": 35074\n  },\n  {\n    \"tag\": "Algarsife",\n    \"popularity\": 34991\n  },\n  {\n    \"tag\": "noncriminal",\n    \"popularity\": 34908\n  },\n  {\n    \"tag\": "compassion",\n    \"popularity\": 34825\n  },\n  {\n    \"tag\": "Buddhic",\n    \"popularity\": 34743\n  },\n  {\n    \"tag\": "vellicative dactylically hotfoot",\n    \"popularity\": 34661\n  },\n  {\n    \"tag\": "chicory",\n    \"popularity\": 34579\n  },\n  {\n    \"tag\": "transperitoneally",\n    \"popularity\": 34497\n  },\n  {\n    \"tag\": "pennae",\n    \"popularity\": 34416\n  },\n  {\n    \"tag\": "Flamandize",\n    \"popularity\": 34335\n  },\n  {\n    \"tag\": "underviewer",\n    \"popularity\": 34254\n  },\n  {\n    \"tag\": "assoil",\n    \"popularity\": 34174\n  },\n  {\n    \"tag\": "saccharobacillus",\n    \"popularity\": 34094\n  },\n  {\n    \"tag\": "biacetylene",\n    \"popularity\": 34014\n  },\n  {\n    \"tag\": "mouchardism",\n    \"popularity\": 33935\n  },\n  {\n    \"tag\": "anisomeric",\n    \"popularity\": 33856\n  },\n  {\n    \"tag\": "digestive",\n    \"popularity\": 33777\n  },\n  {\n    \"tag\": "darlingly",\n    \"popularity\": 33698\n  },\n  {\n    \"tag\": "liman",\n    \"popularity\": 33620\n  },\n  {\n    \"tag\": "soldanrie",\n    \"popularity\": 33542\n  },\n  {\n    \"tag\": "sully",\n    \"popularity\": 33464\n  },\n  {\n    \"tag\": "brightsmith",\n    \"popularity\": 33387\n  },\n  {\n    \"tag\": "inwrap antiliturgist ureterocervical",\n    \"popularity\": 33309\n  },\n  {\n    \"tag\": "discommodity",\n    \"popularity\": 33232\n  },\n  {\n    \"tag\": "typical aggrandizer",\n    \"popularity\": 33156\n  },\n  {\n    \"tag\": "xenogeny",\n    \"popularity\": 33079\n  },\n  {\n    \"tag\": "uncountrified",\n    \"popularity\": 33003\n  },\n  {\n    \"tag\": "Podarge",\n    \"popularity\": 32928\n  },\n  {\n    \"tag\": "uninterviewed",\n    \"popularity\": 32852\n  },\n  {\n    \"tag\": "underprior",\n    \"popularity\": 32777\n  },\n  {\n    \"tag\": "leiomyomatous",\n    \"popularity\": 32702\n  },\n  {\n    \"tag\": "postdysenteric",\n    \"popularity\": 32627\n  },\n  {\n    \"tag\": "Fusicladium",\n    \"popularity\": 32553\n  },\n  {\n    \"tag\": "Dulcinea",\n    \"popularity\": 32478\n  },\n  {\n    \"tag\": "interspersion",\n    \"popularity\": 32404\n  },\n  {\n    \"tag\": "preobligate",\n    \"popularity\": 32331\n  },\n  {\n    \"tag\": "subaggregate",\n    \"popularity\": 32257\n  },\n  {\n    \"tag\": "grammarianism",\n    \"popularity\": 32184\n  },\n  {\n    \"tag\": "palikar",\n    \"popularity\": 32111\n  },\n  {\n    \"tag\": "facileness",\n    \"popularity\": 32039\n  },\n  {\n    \"tag\": "deuterofibrinose",\n    \"popularity\": 31966\n  },\n  {\n    \"tag\": "pseudesthesia",\n    \"popularity\": 31894\n  },\n  {\n    \"tag\": "sedimentary",\n    \"popularity\": 31822\n  },\n  {\n    \"tag\": "typewrite",\n    \"popularity\": 31751\n  },\n  {\n    \"tag\": "immemorable",\n    \"popularity\": 31679\n  },\n  {\n    \"tag\": "Myrtus",\n    \"popularity\": 31608\n  },\n  {\n    \"tag\": "hauchecornite",\n    \"popularity\": 31537\n  },\n  {\n    \"tag\": "galleylike",\n    \"popularity\": 31467\n  },\n  {\n    \"tag\": "thimber",\n    \"popularity\": 31396\n  },\n  {\n    \"tag\": "Hegelianism",\n    \"popularity\": 31326\n  },\n  {\n    \"tag\": "strig",\n    \"popularity\": 31256\n  },\n  {\n    \"tag\": "skyre",\n    \"popularity\": 31187\n  },\n  {\n    \"tag\": "eupepticism",\n    \"popularity\": 31117\n  },\n  {\n    \"tag\": "eponymism",\n    \"popularity\": 31048\n  },\n  {\n    \"tag\": "flunkeyhood",\n    \"popularity\": 30979\n  },\n  {\n    \"tag\": "Abama",\n    \"popularity\": 30911\n  },\n  {\n    \"tag\": "adiadochokinesis",\n    \"popularity\": 30842\n  },\n  {\n    \"tag\": "spendthrifty",\n    \"popularity\": 30774\n  },\n  {\n    \"tag\": "chalcedony",\n    \"popularity\": 30706\n  },\n  {\n    \"tag\": "authorism",\n    \"popularity\": 30638\n  },\n  {\n    \"tag\": "nasturtium",\n    \"popularity\": 30571\n  },\n  {\n    \"tag\": "Acanthocereus",\n    \"popularity\": 30504\n  },\n  {\n    \"tag\": "uncollapsible",\n    \"popularity\": 30437\n  },\n  {\n    \"tag\": "excursionist",\n    \"popularity\": 30370\n  },\n  {\n    \"tag\": "fogbow",\n    \"popularity\": 30303\n  },\n  {\n    \"tag\": "overlie",\n    \"popularity\": 30237\n  },\n  {\n    \"tag\": "velours",\n    \"popularity\": 30171\n  },\n  {\n    \"tag\": "zoodendria madrigal stagbush",\n    \"popularity\": 30105\n  },\n  {\n    \"tag\": "imi",\n    \"popularity\": 30039\n  },\n  {\n    \"tag\": "cojudge",\n    \"popularity\": 29974\n  },\n  {\n    \"tag\": "depurate argal",\n    \"popularity\": 29909\n  },\n  {\n    \"tag\": "unrecognition",\n    \"popularity\": 29844\n  },\n  {\n    \"tag\": "paunchful",\n    \"popularity\": 29779\n  },\n  {\n    \"tag\": "invalued",\n    \"popularity\": 29714\n  },\n  {\n    \"tag\": "probang",\n    \"popularity\": 29650\n  },\n  {\n    \"tag\": "chetvert",\n    \"popularity\": 29586\n  },\n  {\n    \"tag\": "enactable",\n    \"popularity\": 29522\n  },\n  {\n    \"tag\": "detoxicate adhibit",\n    \"popularity\": 29458\n  },\n  {\n    \"tag\": "kullaite",\n    \"popularity\": 29395\n  },\n  {\n    \"tag\": "undazzling",\n    \"popularity\": 29332\n  },\n  {\n    \"tag\": "excalation",\n    \"popularity\": 29269\n  },\n  {\n    \"tag\": "sievings",\n    \"popularity\": 29206\n  },\n  {\n    \"tag\": "disenthral",\n    \"popularity\": 29143\n  },\n  {\n    \"tag\": "disinterestedly",\n    \"popularity\": 29081\n  },\n  {\n    \"tag\": "stanner",\n    \"popularity\": 29018\n  },\n  {\n    \"tag\": "recapitulative",\n    \"popularity\": 28956\n  },\n  {\n    \"tag\": "objectivist",\n    \"popularity\": 28895\n  },\n  {\n    \"tag\": "hypermetropia",\n    \"popularity\": 28833\n  },\n  {\n    \"tag\": "incumbency",\n    \"popularity\": 28772\n  },\n  {\n    \"tag\": "protegee",\n    \"popularity\": 28711\n  },\n  {\n    \"tag\": "zealotic",\n    \"popularity\": 28650\n  },\n  {\n    \"tag\": "predebit",\n    \"popularity\": 28589\n  },\n  {\n    \"tag\": "cupolar",\n    \"popularity\": 28528\n  },\n  {\n    \"tag\": "unattributed",\n    \"popularity\": 28468\n  },\n  {\n    \"tag\": "louisine",\n    \"popularity\": 28408\n  },\n  {\n    \"tag\": "illustrate",\n    \"popularity\": 28348\n  },\n  {\n    \"tag\": "inofficiousness",\n    \"popularity\": 28288\n  },\n  {\n    \"tag\": "Americawards",\n    \"popularity\": 28228\n  },\n  {\n    \"tag\": "foreflap",\n    \"popularity\": 28169\n  },\n  {\n    \"tag\": "eruditeness",\n    \"popularity\": 28110\n  },\n  {\n    \"tag\": "copiopsia",\n    \"popularity\": 28051\n  },\n  {\n    \"tag\": "sporuliferous",\n    \"popularity\": 27992\n  },\n  {\n    \"tag\": "muttering",\n    \"popularity\": 27934\n  },\n  {\n    \"tag\": "prepsychology adrip",\n    \"popularity\": 27875\n  },\n  {\n    \"tag\": "unfriendly",\n    \"popularity\": 27817\n  },\n  {\n    \"tag\": "sulphanilic",\n    \"popularity\": 27759\n  },\n  {\n    \"tag\": "Coelococcus",\n    \"popularity\": 27701\n  },\n  {\n    \"tag\": "undoubtfulness",\n    \"popularity\": 27643\n  },\n  {\n    \"tag\": "flaringly",\n    \"popularity\": 27586\n  },\n  {\n    \"tag\": "unordain",\n    \"popularity\": 27529\n  },\n  {\n    \"tag\": "fratchety",\n    \"popularity\": 27472\n  },\n  {\n    \"tag\": "decadentism dolefully",\n    \"popularity\": 27415\n  },\n  {\n    \"tag\": "synthronus",\n    \"popularity\": 27358\n  },\n  {\n    \"tag\": "maiid",\n    \"popularity\": 27301\n  },\n  {\n    \"tag\": "rhinobyon",\n    \"popularity\": 27245\n  },\n  {\n    \"tag\": "Didynamia",\n    \"popularity\": 27189\n  },\n  {\n    \"tag\": "millionairedom",\n    \"popularity\": 27133\n  },\n  {\n    \"tag\": "mulierine",\n    \"popularity\": 27077\n  },\n  {\n    \"tag\": "Mayo",\n    \"popularity\": 27021\n  },\n  {\n    \"tag\": "perceivedness",\n    \"popularity\": 26966\n  },\n  {\n    \"tag\": "unadoration",\n    \"popularity\": 26911\n  },\n  {\n    \"tag\": "regraft",\n    \"popularity\": 26856\n  },\n  {\n    \"tag\": "witch",\n    \"popularity\": 26801\n  },\n  {\n    \"tag\": "ungrow",\n    \"popularity\": 26746\n  },\n  {\n    \"tag\": "glossopharyngeus",\n    \"popularity\": 26691\n  },\n  {\n    \"tag\": "unstirrable",\n    \"popularity\": 26637\n  },\n  {\n    \"tag\": "synodsman",\n    \"popularity\": 26583\n  },\n  {\n    \"tag\": "placentalian",\n    \"popularity\": 26529\n  },\n  {\n    \"tag\": "corpulently",\n    \"popularity\": 26475\n  },\n  {\n    \"tag\": "photochromoscope",\n    \"popularity\": 26421\n  },\n  {\n    \"tag\": "indusiate retinasphaltum chokestrap",\n    \"popularity\": 26368\n  },\n  {\n    \"tag\": "murdrum",\n    \"popularity\": 26314\n  },\n  {\n    \"tag\": "belatedness",\n    \"popularity\": 26261\n  },\n  {\n    \"tag\": "Cochin",\n    \"popularity\": 26208\n  },\n  {\n    \"tag\": "Leonist",\n    \"popularity\": 26155\n  },\n  {\n    \"tag\": "keeker confined",\n    \"popularity\": 26102\n  },\n  {\n    \"tag\": "unintellectual",\n    \"popularity\": 26050\n  },\n  {\n    \"tag\": "nymphaline bait",\n    \"popularity\": 25997\n  },\n  {\n    \"tag\": "sarcosporidiosis",\n    \"popularity\": 25945\n  },\n  {\n    \"tag\": "catawamptiously",\n    \"popularity\": 25893\n  },\n  {\n    \"tag\": "outshame",\n    \"popularity\": 25841\n  },\n  {\n    \"tag\": "animalism",\n    \"popularity\": 25790\n  },\n  {\n    \"tag\": "epithalamial",\n    \"popularity\": 25738\n  },\n  {\n    \"tag\": "ganner",\n    \"popularity\": 25687\n  },\n  {\n    \"tag\": "desilicify",\n    \"popularity\": 25635\n  },\n  {\n    \"tag\": "dandyism",\n    \"popularity\": 25584\n  },\n  {\n    \"tag\": "hyleg",\n    \"popularity\": 25533\n  },\n  {\n    \"tag\": "photophysical",\n    \"popularity\": 25483\n  },\n  {\n    \"tag\": "underload",\n    \"popularity\": 25432\n  },\n  {\n    \"tag\": "unintrusive",\n    \"popularity\": 25382\n  },\n  {\n    \"tag\": "succinamic",\n    \"popularity\": 25331\n  },\n  {\n    \"tag\": "matchy",\n    \"popularity\": 25281\n  },\n  {\n    \"tag\": "concordal",\n    \"popularity\": 25231\n  },\n  {\n    \"tag\": "exteriority",\n    \"popularity\": 25181\n  },\n  {\n    \"tag\": "sterculiad",\n    \"popularity\": 25132\n  },\n  {\n    \"tag\": "sulfoxylic",\n    \"popularity\": 25082\n  },\n  {\n    \"tag\": "oversubscription",\n    \"popularity\": 25033\n  },\n  {\n    \"tag\": "chiasmic",\n    \"popularity\": 24984\n  },\n  {\n    \"tag\": "pseudoparthenogenesis",\n    \"popularity\": 24935\n  },\n  {\n    \"tag\": "indorse",\n    \"popularity\": 24886\n  },\n  {\n    \"tag\": "Krishnaite",\n    \"popularity\": 24837\n  },\n  {\n    \"tag\": "calcinize",\n    \"popularity\": 24788\n  },\n  {\n    \"tag\": "rhodium",\n    \"popularity\": 24740\n  },\n  {\n    \"tag\": "tragopan",\n    \"popularity\": 24692\n  },\n  {\n    \"tag\": "overwhelmingly",\n    \"popularity\": 24643\n  },\n  {\n    \"tag\": "procidence accorporate",\n    \"popularity\": 24595\n  },\n  {\n    \"tag\": "polemize speelless",\n    \"popularity\": 24548\n  },\n  {\n    \"tag\": "radiocarpal goran",\n    \"popularity\": 24500\n  },\n  {\n    \"tag\": "counteroffer Pelodytes",\n    \"popularity\": 24452\n  },\n  {\n    \"tag\": "lionhearted",\n    \"popularity\": 24405\n  },\n  {\n    \"tag\": "paramastoid",\n    \"popularity\": 24358\n  },\n  {\n    \"tag\": "murine",\n    \"popularity\": 24310\n  },\n  {\n    \"tag\": "woodbined",\n    \"popularity\": 24263\n  },\n  {\n    \"tag\": "packthread",\n    \"popularity\": 24217\n  },\n  {\n    \"tag\": "citreous",\n    \"popularity\": 24170\n  },\n  {\n    \"tag\": "unfallaciously",\n    \"popularity\": 24123\n  },\n  {\n    \"tag\": "tentwork reincarnadine",\n    \"popularity\": 24077\n  },\n  {\n    \"tag\": "verminousness",\n    \"popularity\": 24030\n  },\n  {\n    \"tag\": "sillometer",\n    \"popularity\": 23984\n  },\n  {\n    \"tag\": "jointy",\n    \"popularity\": 23938\n  },\n  {\n    \"tag\": "streptolysin",\n    \"popularity\": 23892\n  },\n  {\n    \"tag\": "Florentinism",\n    \"popularity\": 23847\n  },\n  {\n    \"tag\": "monosomatous",\n    \"popularity\": 23801\n  },\n  {\n    \"tag\": "capsulociliary",\n    \"popularity\": 23756\n  },\n  {\n    \"tag\": "organum",\n    \"popularity\": 23710\n  },\n  {\n    \"tag\": "overtly",\n    \"popularity\": 23665\n  },\n  {\n    \"tag\": "ophthalmoscopical",\n    \"popularity\": 23620\n  },\n  {\n    \"tag\": "supposititiously",\n    \"popularity\": 23575\n  },\n  {\n    \"tag\": "radiochemistry",\n    \"popularity\": 23530\n  },\n  {\n    \"tag\": "flaxtail",\n    \"popularity\": 23486\n  },\n  {\n    \"tag\": "pretympanic",\n    \"popularity\": 23441\n  },\n  {\n    \"tag\": "auscultation",\n    \"popularity\": 23397\n  },\n  {\n    \"tag\": "hairdresser",\n    \"popularity\": 23352\n  },\n  {\n    \"tag\": "chaffless",\n    \"popularity\": 23308\n  },\n  {\n    \"tag\": "polioencephalitis",\n    \"popularity\": 23264\n  },\n  {\n    \"tag\": "axolotl",\n    \"popularity\": 23220\n  },\n  {\n    \"tag\": "smous",\n    \"popularity\": 23177\n  },\n  {\n    \"tag\": "morgen disenamour toothed",\n    \"popularity\": 23133\n  },\n  {\n    \"tag\": "chaiseless",\n    \"popularity\": 23089\n  },\n  {\n    \"tag\": "frugally",\n    \"popularity\": 23046\n  },\n  {\n    \"tag\": "combustive antievolutionist cinenegative",\n    \"popularity\": 23003\n  },\n  {\n    \"tag\": "malacolite",\n    \"popularity\": 22960\n  },\n  {\n    \"tag\": "borne",\n    \"popularity\": 22917\n  },\n  {\n    \"tag\": "mercaptole",\n    \"popularity\": 22874\n  },\n  {\n    \"tag\": "judicatory",\n    \"popularity\": 22831\n  },\n  {\n    \"tag\": "noctivagation",\n    \"popularity\": 22789\n  },\n  {\n    \"tag\": "synthete",\n    \"popularity\": 22746\n  },\n  {\n    \"tag\": "tomboyism",\n    \"popularity\": 22704\n  },\n  {\n    \"tag\": "serranoid",\n    \"popularity\": 22661\n  },\n  {\n    \"tag\": "impostorism",\n    \"popularity\": 22619\n  },\n  {\n    \"tag\": "flagellosis Talitha",\n    \"popularity\": 22577\n  },\n  {\n    \"tag\": "pseudoviscous",\n    \"popularity\": 22535\n  },\n  {\n    \"tag\": "Galleriidae",\n    \"popularity\": 22494\n  },\n  {\n    \"tag\": "undulation didelph Comintern",\n    \"popularity\": 22452\n  },\n  {\n    \"tag\": "triangulopyramidal",\n    \"popularity\": 22411\n  },\n  {\n    \"tag\": "middlings",\n    \"popularity\": 22369\n  },\n  {\n    \"tag\": "piperazin",\n    \"popularity\": 22328\n  },\n  {\n    \"tag\": "endostitis",\n    \"popularity\": 22287\n  },\n  {\n    \"tag\": "swordlike",\n    \"popularity\": 22246\n  },\n  {\n    \"tag\": "forthwith",\n    \"popularity\": 22205\n  },\n  {\n    \"tag\": "menaceful",\n    \"popularity\": 22164\n  },\n  {\n    \"tag\": "explantation defective",\n    \"popularity\": 22123\n  },\n  {\n    \"tag\": "arrear",\n    \"popularity\": 22083\n  },\n  {\n    \"tag\": "engraft",\n    \"popularity\": 22042\n  },\n  {\n    \"tag\": "revolunteer",\n    \"popularity\": 22002\n  },\n  {\n    \"tag\": "foliaceous",\n    \"popularity\": 21962\n  },\n  {\n    \"tag\": "pseudograph",\n    \"popularity\": 21922\n  },\n  {\n    \"tag\": "maenaite",\n    \"popularity\": 21882\n  },\n  {\n    \"tag\": "interfinger",\n    \"popularity\": 21842\n  },\n  {\n    \"tag\": "macroscopically",\n    \"popularity\": 21802\n  },\n  {\n    \"tag\": "bluewood",\n    \"popularity\": 21762\n  },\n  {\n    \"tag\": "chikara",\n    \"popularity\": 21723\n  },\n  {\n    \"tag\": "reprehension diazeuxis nickelous",\n    \"popularity\": 21683\n  },\n  {\n    \"tag\": "vacuation",\n    \"popularity\": 21644\n  },\n  {\n    \"tag\": "Sartish",\n    \"popularity\": 21605\n  },\n  {\n    \"tag\": "pseudogyny",\n    \"popularity\": 21566\n  },\n  {\n    \"tag\": "friedcake",\n    \"popularity\": 21527\n  },\n  {\n    \"tag\": "thraw",\n    \"popularity\": 21488\n  },\n  {\n    \"tag\": "bifid",\n    \"popularity\": 21449\n  },\n  {\n    \"tag\": "truthlessly",\n    \"popularity\": 21411\n  },\n  {\n    \"tag\": "lungy",\n    \"popularity\": 21372\n  },\n  {\n    \"tag\": "fluoborite",\n    \"popularity\": 21334\n  },\n  {\n    \"tag\": "anthropolithic",\n    \"popularity\": 21295\n  },\n  {\n    \"tag\": "coachee straw",\n    \"popularity\": 21257\n  },\n  {\n    \"tag\": "dehorner Grecize",\n    \"popularity\": 21219\n  },\n  {\n    \"tag\": "spondylopyosis",\n    \"popularity\": 21181\n  },\n  {\n    \"tag\": "institutionary",\n    \"popularity\": 21143\n  },\n  {\n    \"tag\": "agentry",\n    \"popularity\": 21105\n  },\n  {\n    \"tag\": "musing bietle",\n    \"popularity\": 21068\n  },\n  {\n    \"tag\": "cormophyte",\n    \"popularity\": 21030\n  },\n  {\n    \"tag\": "semielliptic",\n    \"popularity\": 20993\n  },\n  {\n    \"tag\": "ependytes",\n    \"popularity\": 20955\n  },\n  {\n    \"tag\": "coachmaster",\n    \"popularity\": 20918\n  },\n  {\n    \"tag\": "overexuberant",\n    \"popularity\": 20881\n  },\n  {\n    \"tag\": "selectable",\n    \"popularity\": 20844\n  },\n  {\n    \"tag\": "saclike",\n    \"popularity\": 20807\n  },\n  {\n    \"tag\": "mullion",\n    \"popularity\": 20770\n  },\n  {\n    \"tag\": "pantheonize prevalency",\n    \"popularity\": 20733\n  },\n  {\n    \"tag\": "trophosperm",\n    \"popularity\": 20697\n  },\n  {\n    \"tag\": "paraphrasist",\n    \"popularity\": 20660\n  },\n  {\n    \"tag\": "undercarry",\n    \"popularity\": 20624\n  },\n  {\n    \"tag\": "thallogenic",\n    \"popularity\": 20587\n  },\n  {\n    \"tag\": "bulgy forbid",\n    \"popularity\": 20551\n  },\n  {\n    \"tag\": "proliquor gratulatory",\n    \"popularity\": 20515\n  },\n  {\n    \"tag\": "booker",\n    \"popularity\": 20479\n  },\n  {\n    \"tag\": "wizen",\n    \"popularity\": 20443\n  },\n  {\n    \"tag\": "synchondrosially",\n    \"popularity\": 20407\n  },\n  {\n    \"tag\": "herbless",\n    \"popularity\": 20371\n  },\n  {\n    \"tag\": "arfvedsonite",\n    \"popularity\": 20336\n  },\n  {\n    \"tag\": "Neuroptera",\n    \"popularity\": 20300\n  },\n  {\n    \"tag\": "fingerstone",\n    \"popularity\": 20265\n  },\n  {\n    \"tag\": "Odontoglossae",\n    \"popularity\": 20229\n  },\n  {\n    \"tag\": "transmigrator",\n    \"popularity\": 20194\n  },\n  {\n    \"tag\": "Dehaites",\n    \"popularity\": 20159\n  },\n  {\n    \"tag\": "Molinist",\n    \"popularity\": 20124\n  },\n  {\n    \"tag\": "novelistic",\n    \"popularity\": 20089\n  },\n  {\n    \"tag\": "astelic",\n    \"popularity\": 20054\n  },\n  {\n    \"tag\": "pyelometry",\n    \"popularity\": 20019\n  },\n  {\n    \"tag\": "pigmentation",\n    \"popularity\": 19984\n  },\n  {\n    \"tag\": "epinaos",\n    \"popularity\": 19950\n  },\n  {\n    \"tag\": "outdare",\n    \"popularity\": 19915\n  },\n  {\n    \"tag\": "Funje philaristocracy",\n    \"popularity\": 19881\n  },\n  {\n    \"tag\": "keddah",\n    \"popularity\": 19846\n  },\n  {\n    \"tag\": "axoidean",\n    \"popularity\": 19812\n  },\n  {\n    \"tag\": "ovule",\n    \"popularity\": 19778\n  },\n  {\n    \"tag\": "solidify",\n    \"popularity\": 19744\n  },\n  {\n    \"tag\": "noncelestial",\n    \"popularity\": 19710\n  },\n  {\n    \"tag\": "overmultiplication",\n    \"popularity\": 19676\n  },\n  {\n    \"tag\": "hexatetrahedron",\n    \"popularity\": 19642\n  },\n  {\n    \"tag\": "pliciform",\n    \"popularity\": 19609\n  },\n  {\n    \"tag\": "zimbalon",\n    \"popularity\": 19575\n  },\n  {\n    \"tag\": "annexational",\n    \"popularity\": 19542\n  },\n  {\n    \"tag\": "eurhodol",\n    \"popularity\": 19508\n  },\n  {\n    \"tag\": "yark",\n    \"popularity\": 19475\n  },\n  {\n    \"tag\": "illegality nitroalizarin",\n    \"popularity\": 19442\n  },\n  {\n    \"tag\": "quadratum",\n    \"popularity\": 19409\n  },\n  {\n    \"tag\": "saccharine",\n    \"popularity\": 19376\n  },\n  {\n    \"tag\": "unemploy",\n    \"popularity\": 19343\n  },\n  {\n    \"tag\": "uniclinal unipotent",\n    \"popularity\": 19310\n  },\n  {\n    \"tag\": "turbo",\n    \"popularity\": 19277\n  },\n  {\n    \"tag\": "sybarism",\n    \"popularity\": 19244\n  },\n  {\n    \"tag\": "motacilline",\n    \"popularity\": 19212\n  },\n  {\n    \"tag\": "weaselly",\n    \"popularity\": 19179\n  },\n  {\n    \"tag\": "plastid",\n    \"popularity\": 19147\n  },\n  {\n    \"tag\": "wasting",\n    \"popularity\": 19114\n  },\n  {\n    \"tag\": "begrime fluting",\n    \"popularity\": 19082\n  },\n  {\n    \"tag\": "Nephilinae",\n    \"popularity\": 19050\n  },\n  {\n    \"tag\": "disregardance",\n    \"popularity\": 19018\n  },\n  {\n    \"tag\": "Shakerlike",\n    \"popularity\": 18986\n  },\n  {\n    \"tag\": "uniped",\n    \"popularity\": 18954\n  },\n  {\n    \"tag\": "knap",\n    \"popularity\": 18922\n  },\n  {\n    \"tag\": "electivism undergardener",\n    \"popularity\": 18890\n  },\n  {\n    \"tag\": "hulverheaded",\n    \"popularity\": 18858\n  },\n  {\n    \"tag\": "unruptured",\n    \"popularity\": 18827\n  },\n  {\n    \"tag\": "solemnize credently",\n    \"popularity\": 18795\n  },\n  {\n    \"tag\": "pentastomoid possessingly",\n    \"popularity\": 18764\n  },\n  {\n    \"tag\": "octose",\n    \"popularity\": 18733\n  },\n  {\n    \"tag\": "psithurism indefensibility",\n    \"popularity\": 18701\n  },\n  {\n    \"tag\": "torrentuous cyanometer subcrenate",\n    \"popularity\": 18670\n  },\n  {\n    \"tag\": "photoplaywright tapaculo",\n    \"popularity\": 18639\n  },\n  {\n    \"tag\": "univalence",\n    \"popularity\": 18608\n  },\n  {\n    \"tag\": "Porthetria",\n    \"popularity\": 18577\n  },\n  {\n    \"tag\": "funambulo",\n    \"popularity\": 18546\n  },\n  {\n    \"tag\": "pedion",\n    \"popularity\": 18515\n  },\n  {\n    \"tag\": "horticulturally",\n    \"popularity\": 18485\n  },\n  {\n    \"tag\": "marennin",\n    \"popularity\": 18454\n  },\n  {\n    \"tag\": "horselaugh",\n    \"popularity\": 18423\n  },\n  {\n    \"tag\": "semiexecutive",\n    \"popularity\": 18393\n  },\n  {\n    \"tag\": "Monopteridae",\n    \"popularity\": 18363\n  },\n  {\n    \"tag\": "commonable",\n    \"popularity\": 18332\n  },\n  {\n    \"tag\": "dreariment",\n    \"popularity\": 18302\n  },\n  {\n    \"tag\": "disbud",\n    \"popularity\": 18272\n  },\n  {\n    \"tag\": "monocled",\n    \"popularity\": 18242\n  },\n  {\n    \"tag\": "hurlbarrow",\n    \"popularity\": 18212\n  },\n  {\n    \"tag\": "opiateproof",\n    \"popularity\": 18182\n  },\n  {\n    \"tag\": "Fahrenheit",\n    \"popularity\": 18152\n  },\n  {\n    \"tag\": "writhed",\n    \"popularity\": 18122\n  },\n  {\n    \"tag\": "Volstead",\n    \"popularity\": 18093\n  },\n  {\n    \"tag\": "yesternight",\n    \"popularity\": 18063\n  },\n  {\n    \"tag\": "readmittance",\n    \"popularity\": 18033\n  },\n  {\n    \"tag\": "reiterable",\n    \"popularity\": 18004\n  },\n  {\n    \"tag\": "triquetral",\n    \"popularity\": 17975\n  },\n  {\n    \"tag\": "guillotinement",\n    \"popularity\": 17945\n  },\n  {\n    \"tag\": "repermission",\n    \"popularity\": 17916\n  },\n  {\n    \"tag\": "assishly",\n    \"popularity\": 17887\n  },\n  {\n    \"tag\": "daidle",\n    \"popularity\": 17858\n  },\n  {\n    \"tag\": "prismatoid",\n    \"popularity\": 17829\n  },\n  {\n    \"tag\": "irreptitious",\n    \"popularity\": 17800\n  },\n  {\n    \"tag\": "sourdeline",\n    \"popularity\": 17771\n  },\n  {\n    \"tag\": "Austrian",\n    \"popularity\": 17742\n  },\n  {\n    \"tag\": "psychorrhagic",\n    \"popularity\": 17713\n  },\n  {\n    \"tag\": "Monumbo",\n    \"popularity\": 17685\n  },\n  {\n    \"tag\": "cloiochoanitic",\n    \"popularity\": 17656\n  },\n  {\n    \"tag\": "hant",\n    \"popularity\": 17628\n  },\n  {\n    \"tag\": "roily pulldown",\n    \"popularity\": 17599\n  },\n  {\n    \"tag\": "recongratulation",\n    \"popularity\": 17571\n  },\n  {\n    \"tag\": "Peking",\n    \"popularity\": 17543\n  },\n  {\n    \"tag\": "erdvark",\n    \"popularity\": 17514\n  },\n  {\n    \"tag\": "antimnemonic",\n    \"popularity\": 17486\n  },\n  {\n    \"tag\": "noncapillarity",\n    \"popularity\": 17458\n  },\n  {\n    \"tag\": "irrepressive",\n    \"popularity\": 17430\n  },\n  {\n    \"tag\": "Petromyzontes",\n    \"popularity\": 17402\n  },\n  {\n    \"tag\": "piscatorially",\n    \"popularity\": 17374\n  },\n  {\n    \"tag\": "cholesterosis",\n    \"popularity\": 17346\n  },\n  {\n    \"tag\": "denunciate",\n    \"popularity\": 17319\n  },\n  {\n    \"tag\": "unmetalled",\n    \"popularity\": 17291\n  },\n  {\n    \"tag\": "Tigris enruin",\n    \"popularity\": 17263\n  },\n  {\n    \"tag\": "anaspalin",\n    \"popularity\": 17236\n  },\n  {\n    \"tag\": "monodromy",\n    \"popularity\": 17208\n  },\n  {\n    \"tag\": "Canichanan",\n    \"popularity\": 17181\n  },\n  {\n    \"tag\": "mesolabe",\n    \"popularity\": 17154\n  },\n  {\n    \"tag\": "trichothallic overcunningness",\n    \"popularity\": 17127\n  },\n  {\n    \"tag\": "spinsterishly",\n    \"popularity\": 17099\n  },\n  {\n    \"tag\": "sensilla",\n    \"popularity\": 17072\n  },\n  {\n    \"tag\": "wifelkin",\n    \"popularity\": 17045\n  },\n  {\n    \"tag\": "suppositionless",\n    \"popularity\": 17018\n  },\n  {\n    \"tag\": "irksomeness",\n    \"popularity\": 16991\n  },\n  {\n    \"tag\": "sanbenito",\n    \"popularity\": 16964\n  },\n  {\n    \"tag\": "nonstatement",\n    \"popularity\": 16938\n  },\n  {\n    \"tag\": "phenoloid",\n    \"popularity\": 16911\n  },\n  {\n    \"tag\": "Steinberger",\n    \"popularity\": 16884\n  },\n  {\n    \"tag\": "replicated boom",\n    \"popularity\": 16858\n  },\n  {\n    \"tag\": "sciomachiology",\n    \"popularity\": 16831\n  },\n  {\n    \"tag\": "starwise",\n    \"popularity\": 16805\n  },\n  {\n    \"tag\": "prerich",\n    \"popularity\": 16778\n  },\n  {\n    \"tag\": "unspawned",\n    \"popularity\": 16752\n  },\n  {\n    \"tag\": "unindentable",\n    \"popularity\": 16726\n  },\n  {\n    \"tag\": "stromatic",\n    \"popularity\": 16700\n  },\n  {\n    \"tag\": "fetishize",\n    \"popularity\": 16673\n  },\n  {\n    \"tag\": "dihydroxy",\n    \"popularity\": 16647\n  },\n  {\n    \"tag\": "precaudal",\n    \"popularity\": 16621\n  },\n  {\n    \"tag\": "Madagascar",\n    \"popularity\": 16595\n  },\n  {\n    \"tag\": "repinement",\n    \"popularity\": 16570\n  },\n  {\n    \"tag\": "noncathedral wenzel",\n    \"popularity\": 16544\n  },\n  {\n    \"tag\": "corollike",\n    \"popularity\": 16518\n  },\n  {\n    \"tag\": "pubes unamortization",\n    \"popularity\": 16492\n  },\n  {\n    \"tag\": "brickcroft",\n    \"popularity\": 16467\n  },\n  {\n    \"tag\": "intertrabecular",\n    \"popularity\": 16441\n  },\n  {\n    \"tag\": "formulaic",\n    \"popularity\": 16416\n  },\n  {\n    \"tag\": "arienzo",\n    \"popularity\": 16390\n  },\n  {\n    \"tag\": "Mazzinian",\n    \"popularity\": 16365\n  },\n  {\n    \"tag\": "wallowishly",\n    \"popularity\": 16339\n  },\n  {\n    \"tag\": "sysselman",\n    \"popularity\": 16314\n  },\n  {\n    \"tag\": "seligmannite",\n    \"popularity\": 16289\n  },\n  {\n    \"tag\": "harlequinery",\n    \"popularity\": 16264\n  },\n  {\n    \"tag\": "zucchetto",\n    \"popularity\": 16239\n  },\n  {\n    \"tag\": "malonyl",\n    \"popularity\": 16214\n  },\n  {\n    \"tag\": "patwari",\n    \"popularity\": 16189\n  },\n  {\n    \"tag\": "neoholmia venturesomeness",\n    \"popularity\": 16164\n  },\n  {\n    \"tag\": "Dehwar",\n    \"popularity\": 16139\n  },\n  {\n    \"tag\": "fetiferous",\n    \"popularity\": 16114\n  },\n  {\n    \"tag\": "chromatophore",\n    \"popularity\": 16090\n  },\n  {\n    \"tag\": "reregistration",\n    \"popularity\": 16065\n  },\n  {\n    \"tag\": "alienor",\n    \"popularity\": 16040\n  },\n  {\n    \"tag\": "Hexagynia",\n    \"popularity\": 16016\n  },\n  {\n    \"tag\": "cerebrotonia",\n    \"popularity\": 15991\n  },\n  {\n    \"tag\": "deedbox",\n    \"popularity\": 15967\n  },\n  {\n    \"tag\": "staab",\n    \"popularity\": 15943\n  },\n  {\n    \"tag\": "uratemia",\n    \"popularity\": 15918\n  },\n  {\n    \"tag\": "flaunt",\n    \"popularity\": 15894\n  },\n  {\n    \"tag\": "bogy",\n    \"popularity\": 15870\n  },\n  {\n    \"tag\": "subcartilaginous",\n    \"popularity\": 15846\n  },\n  {\n    \"tag\": "protonephridial",\n    \"popularity\": 15822\n  },\n  {\n    \"tag\": "Boswellia",\n    \"popularity\": 15798\n  },\n  {\n    \"tag\": "relaxant untiaraed protoepiphyte",\n    \"popularity\": 15774\n  },\n  {\n    \"tag\": "nesslerization",\n    \"popularity\": 15750\n  },\n  {\n    \"tag\": "precession",\n    \"popularity\": 15726\n  },\n  {\n    \"tag\": "peat",\n    \"popularity\": 15702\n  },\n  {\n    \"tag\": "unbit",\n    \"popularity\": 15678\n  },\n  {\n    \"tag\": "snailish",\n    \"popularity\": 15655\n  },\n  {\n    \"tag\": "porismatical",\n    \"popularity\": 15631\n  },\n  {\n    \"tag\": "hooflike",\n    \"popularity\": 15608\n  },\n  {\n    \"tag\": "resuppose phene cranic",\n    \"popularity\": 15584\n  },\n  {\n    \"tag\": "peptonization kipskin",\n    \"popularity\": 15561\n  },\n  {\n    \"tag\": "birdstone",\n    \"popularity\": 15537\n  },\n  {\n    \"tag\": "empty inferoanterior",\n    \"popularity\": 15514\n  },\n  {\n    \"tag\": "androtauric",\n    \"popularity\": 15491\n  },\n  {\n    \"tag\": "triamide",\n    \"popularity\": 15467\n  },\n  {\n    \"tag\": "showmanry",\n    \"popularity\": 15444\n  },\n  {\n    \"tag\": "doing",\n    \"popularity\": 15421\n  },\n  {\n    \"tag\": "bouchaleen",\n    \"popularity\": 15398\n  },\n  {\n    \"tag\": "precollude",\n    \"popularity\": 15375\n  },\n  {\n    \"tag\": "finger",\n    \"popularity\": 15352\n  },\n  {\n    \"tag\": "limnetic intermessenger",\n    \"popularity\": 15329\n  },\n  {\n    \"tag\": "uncharitable picrotoxic",\n    \"popularity\": 15306\n  },\n  {\n    \"tag\": "nationalizer Phasmidae",\n    \"popularity\": 15283\n  },\n  {\n    \"tag\": "laughingstock",\n    \"popularity\": 15261\n  },\n  {\n    \"tag\": "nondeferential",\n    \"popularity\": 15238\n  },\n  {\n    \"tag\": "uproariously",\n    \"popularity\": 15215\n  },\n  {\n    \"tag\": "manzanilla",\n    \"popularity\": 15193\n  },\n  {\n    \"tag\": "khahoon",\n    \"popularity\": 15170\n  },\n  {\n    \"tag\": "olericulturally longshanks",\n    \"popularity\": 15148\n  },\n  {\n    \"tag\": "enthusiastically methionic",\n    \"popularity\": 15125\n  },\n  {\n    \"tag\": "pobs",\n    \"popularity\": 15103\n  },\n  {\n    \"tag\": "tricarpellate",\n    \"popularity\": 15081\n  },\n  {\n    \"tag\": "souterrain",\n    \"popularity\": 15058\n  },\n  {\n    \"tag\": "tethelin",\n    \"popularity\": 15036\n  },\n  {\n    \"tag\": "tartle",\n    \"popularity\": 15014\n  },\n  {\n    \"tag\": "tidelike",\n    \"popularity\": 14992\n  },\n  {\n    \"tag\": "cosmoramic",\n    \"popularity\": 14970\n  },\n  {\n    \"tag\": "pretardiness",\n    \"popularity\": 14948\n  },\n  {\n    \"tag\": "insoul",\n    \"popularity\": 14926\n  },\n  {\n    \"tag\": "anthroxan",\n    \"popularity\": 14904\n  },\n  {\n    \"tag\": "jilter",\n    \"popularity\": 14882\n  },\n  {\n    \"tag\": "pectinibranchian trematode",\n    \"popularity\": 14860\n  },\n  {\n    \"tag\": "Renaissancist",\n    \"popularity\": 14838\n  },\n  {\n    \"tag\": "imaginant",\n    \"popularity\": 14817\n  },\n  {\n    \"tag\": "supercensure",\n    \"popularity\": 14795\n  },\n  {\n    \"tag\": "festilogy",\n    \"popularity\": 14773\n  },\n  {\n    \"tag\": "regression",\n    \"popularity\": 14752\n  },\n  {\n    \"tag\": "mesobregmate languorously",\n    \"popularity\": 14730\n  },\n  {\n    \"tag\": "unsupernaturalized",\n    \"popularity\": 14709\n  },\n  {\n    \"tag\": "boobyish",\n    \"popularity\": 14687\n  },\n  {\n    \"tag\": "scopolamine",\n    \"popularity\": 14666\n  },\n  {\n    \"tag\": "reamputation unchristianly",\n    \"popularity\": 14645\n  },\n  {\n    \"tag\": "cuneatic",\n    \"popularity\": 14623\n  },\n  {\n    \"tag\": "heathberry",\n    \"popularity\": 14602\n  },\n  {\n    \"tag\": "hate",\n    \"popularity\": 14581\n  },\n  {\n    \"tag\": "redeemableness",\n    \"popularity\": 14560\n  },\n  {\n    \"tag\": "damasse",\n    \"popularity\": 14539\n  },\n  {\n    \"tag\": "thrillsome",\n    \"popularity\": 14518\n  },\n  {\n    \"tag\": "disseverment",\n    \"popularity\": 14497\n  },\n  {\n    \"tag\": "underbishopric Ostyak",\n    \"popularity\": 14476\n  },\n  {\n    \"tag\": "Exoascales",\n    \"popularity\": 14455\n  },\n  {\n    \"tag\": "soiled",\n    \"popularity\": 14434\n  },\n  {\n    \"tag\": "Cain",\n    \"popularity\": 14413\n  },\n  {\n    \"tag\": "mismanageable arenae",\n    \"popularity\": 14392\n  },\n  {\n    \"tag\": "manducate unhinderably",\n    \"popularity\": 14372\n  },\n  {\n    \"tag\": "peregrin",\n    \"popularity\": 14351\n  },\n  {\n    \"tag\": "musicianly",\n    \"popularity\": 14330\n  },\n  {\n    \"tag\": "aln",\n    \"popularity\": 14310\n  },\n  {\n    \"tag\": "intercentrum",\n    \"popularity\": 14289\n  },\n  {\n    \"tag\": "roothold",\n    \"popularity\": 14269\n  },\n  {\n    \"tag\": "jane aneurism",\n    \"popularity\": 14248\n  },\n  {\n    \"tag\": "insinuatively forefeel phytolatrous",\n    \"popularity\": 14228\n  },\n  {\n    \"tag\": "kanchil",\n    \"popularity\": 14208\n  },\n  {\n    \"tag\": "Austrophile",\n    \"popularity\": 14187\n  },\n  {\n    \"tag\": "unterrorized",\n    \"popularity\": 14167\n  },\n  {\n    \"tag\": "admeasure",\n    \"popularity\": 14147\n  },\n  {\n    \"tag\": "electrodissolution",\n    \"popularity\": 14127\n  },\n  {\n    \"tag\": "unweddedly",\n    \"popularity\": 14107\n  },\n  {\n    \"tag\": "unannoying",\n    \"popularity\": 14087\n  },\n  {\n    \"tag\": "uningenuous",\n    \"popularity\": 14067\n  },\n  {\n    \"tag\": "omnibenevolent",\n    \"popularity\": 14047\n  },\n  {\n    \"tag\": "commissure",\n    \"popularity\": 14027\n  },\n  {\n    \"tag\": "tellureted",\n    \"popularity\": 14007\n  },\n  {\n    \"tag\": "suffragan",\n    \"popularity\": 13987\n  },\n  {\n    \"tag\": "sphaeriaceous",\n    \"popularity\": 13967\n  },\n  {\n    \"tag\": "unfearing",\n    \"popularity\": 13947\n  },\n  {\n    \"tag\": "stentoriousness precounsellor",\n    \"popularity\": 13928\n  },\n  {\n    \"tag\": "haemaspectroscope",\n    \"popularity\": 13908\n  },\n  {\n    \"tag\": "teras",\n    \"popularity\": 13888\n  },\n  {\n    \"tag\": "pulicine",\n    \"popularity\": 13869\n  },\n  {\n    \"tag\": "colicystopyelitis",\n    \"popularity\": 13849\n  },\n  {\n    \"tag\": "Physalia",\n    \"popularity\": 13830\n  },\n  {\n    \"tag\": "Saxicolidae",\n    \"popularity\": 13810\n  },\n  {\n    \"tag\": "peritonital",\n    \"popularity\": 13791\n  },\n  {\n    \"tag\": "dysphotic",\n    \"popularity\": 13771\n  },\n  {\n    \"tag\": "unabandoned",\n    \"popularity\": 13752\n  },\n  {\n    \"tag\": "rashful",\n    \"popularity\": 13733\n  },\n  {\n    \"tag\": "goodyness Manobo",\n    \"popularity\": 13714\n  },\n  {\n    \"tag\": "glaring",\n    \"popularity\": 13694\n  },\n  {\n    \"tag\": "horrorful",\n    \"popularity\": 13675\n  },\n  {\n    \"tag\": "intercepting",\n    \"popularity\": 13656\n  },\n  {\n    \"tag\": "semifine",\n    \"popularity\": 13637\n  },\n  {\n    \"tag\": "Gaypoo",\n    \"popularity\": 13618\n  },\n  {\n    \"tag\": "Metrosideros",\n    \"popularity\": 13599\n  },\n  {\n    \"tag\": "thoracicolumbar",\n    \"popularity\": 13580\n  },\n  {\n    \"tag\": "unserried",\n    \"popularity\": 13561\n  },\n  {\n    \"tag\": "keeperess cauterization",\n    \"popularity\": 13542\n  },\n  {\n    \"tag\": "administrant",\n    \"popularity\": 13523\n  },\n  {\n    \"tag\": "unpropitiatedness",\n    \"popularity\": 13505\n  },\n  {\n    \"tag\": "pensileness",\n    \"popularity\": 13486\n  },\n  {\n    \"tag\": "quinaldic unreceivable",\n    \"popularity\": 13467\n  },\n  {\n    \"tag\": "Carnaria",\n    \"popularity\": 13448\n  },\n  {\n    \"tag\": "azothionium wurrus",\n    \"popularity\": 13430\n  },\n  {\n    \"tag\": "mistresshood",\n    \"popularity\": 13411\n  },\n  {\n    \"tag\": "Savara",\n    \"popularity\": 13393\n  },\n  {\n    \"tag\": "dasyurine",\n    \"popularity\": 13374\n  },\n  {\n    \"tag\": "superideal",\n    \"popularity\": 13356\n  },\n  {\n    \"tag\": "Parisianize",\n    \"popularity\": 13337\n  },\n  {\n    \"tag\": "underearth",\n    \"popularity\": 13319\n  },\n  {\n    \"tag\": "athrogenic",\n    \"popularity\": 13301\n  },\n  {\n    \"tag\": "communicate",\n    \"popularity\": 13282\n  },\n  {\n    \"tag\": "denervation enworthed",\n    \"popularity\": 13264\n  },\n  {\n    \"tag\": "subbromide",\n    \"popularity\": 13246\n  },\n  {\n    \"tag\": "stenocoriasis",\n    \"popularity\": 13228\n  },\n  {\n    \"tag\": "facetiousness",\n    \"popularity\": 13209\n  },\n  {\n    \"tag\": "twaddling",\n    \"popularity\": 13191\n  },\n  {\n    \"tag\": "tetartoconid",\n    \"popularity\": 13173\n  },\n  {\n    \"tag\": "audiophile",\n    \"popularity\": 13155\n  },\n  {\n    \"tag\": "fustigate",\n    \"popularity\": 13137\n  },\n  {\n    \"tag\": "Sorbian cacophonia",\n    \"popularity\": 13119\n  },\n  {\n    \"tag\": "fondish",\n    \"popularity\": 13101\n  },\n  {\n    \"tag\": "endomastoiditis",\n    \"popularity\": 13084\n  },\n  {\n    \"tag\": "sniptious",\n    \"popularity\": 13066\n  },\n  {\n    \"tag\": "glochidiate",\n    \"popularity\": 13048\n  },\n  {\n    \"tag\": "polycarboxylic",\n    \"popularity\": 13030\n  },\n  {\n    \"tag\": "stamp",\n    \"popularity\": 13012\n  },\n  {\n    \"tag\": "tritonymph endotoxoid",\n    \"popularity\": 12995\n  },\n  {\n    \"tag\": "wolfskin",\n    \"popularity\": 12977\n  },\n  {\n    \"tag\": "oncosimeter",\n    \"popularity\": 12959\n  },\n  {\n    \"tag\": "outward",\n    \"popularity\": 12942\n  },\n  {\n    \"tag\": "circumscribed",\n    \"popularity\": 12924\n  },\n  {\n    \"tag\": "autohemolytic",\n    \"popularity\": 12907\n  },\n  {\n    \"tag\": "isorhamnose",\n    \"popularity\": 12889\n  },\n  {\n    \"tag\": "monarchomachic",\n    \"popularity\": 12872\n  },\n  {\n    \"tag\": "phaenomenon",\n    \"popularity\": 12855\n  },\n  {\n    \"tag\": "angiopressure",\n    \"popularity\": 12837\n  },\n  {\n    \"tag\": "similarize",\n    \"popularity\": 12820\n  },\n  {\n    \"tag\": "unseeable",\n    \"popularity\": 12803\n  },\n  {\n    \"tag\": "Toryize",\n    \"popularity\": 12785\n  },\n  {\n    \"tag\": "fruitling",\n    \"popularity\": 12768\n  },\n  {\n    \"tag\": "axle",\n    \"popularity\": 12751\n  },\n  {\n    \"tag\": "priestal cocked",\n    \"popularity\": 12734\n  },\n  {\n    \"tag\": "serotoxin",\n    \"popularity\": 12717\n  },\n  {\n    \"tag\": "unmovably",\n    \"popularity\": 12700\n  },\n  {\n    \"tag\": "darbha",\n    \"popularity\": 12683\n  },\n  {\n    \"tag\": "Mongolize",\n    \"popularity\": 12666\n  },\n  {\n    \"tag\": "clusteringly",\n    \"popularity\": 12649\n  },\n  {\n    \"tag\": "tendence",\n    \"popularity\": 12632\n  },\n  {\n    \"tag\": "foziness",\n    \"popularity\": 12615\n  },\n  {\n    \"tag\": "brickkiln lithify",\n    \"popularity\": 12598\n  },\n  {\n    \"tag\": "unpriest",\n    \"popularity\": 12581\n  },\n  {\n    \"tag\": "convincer",\n    \"popularity\": 12564\n  },\n  {\n    \"tag\": "mornlike",\n    \"popularity\": 12548\n  },\n  {\n    \"tag\": "overaddiction ostentatiousness",\n    \"popularity\": 12531\n  },\n  {\n    \"tag\": "diffusively moccasin pendom",\n    \"popularity\": 12514\n  },\n  {\n    \"tag\": "boose",\n    \"popularity\": 12498\n  },\n  {\n    \"tag\": "myonosus",\n    \"popularity\": 12481\n  },\n  {\n    \"tag\": "handsome",\n    \"popularity\": 12464\n  },\n  {\n    \"tag\": "paroxysmic",\n    \"popularity\": 12448\n  },\n  {\n    \"tag\": "Ulidian",\n    \"popularity\": 12431\n  },\n  {\n    \"tag\": "heartache",\n    \"popularity\": 12415\n  },\n  {\n    \"tag\": "torporize",\n    \"popularity\": 12398\n  },\n  {\n    \"tag\": "hippish",\n    \"popularity\": 12382\n  },\n  {\n    \"tag\": "stigmal militation",\n    \"popularity\": 12366\n  },\n  {\n    \"tag\": "matmaker",\n    \"popularity\": 12349\n  },\n  {\n    \"tag\": "marantaceous bivoluminous",\n    \"popularity\": 12333\n  },\n  {\n    \"tag\": "Uraniidae",\n    \"popularity\": 12317\n  },\n  {\n    \"tag\": "risper",\n    \"popularity\": 12301\n  },\n  {\n    \"tag\": "tintinnabulation",\n    \"popularity\": 12284\n  },\n  {\n    \"tag\": "tributorian",\n    \"popularity\": 12268\n  },\n  {\n    \"tag\": "ashamedly",\n    \"popularity\": 12252\n  },\n  {\n    \"tag\": "Macrourus",\n    \"popularity\": 12236\n  },\n  {\n    \"tag\": "Chora",\n    \"popularity\": 12220\n  },\n  {\n    \"tag\": "caul",\n    \"popularity\": 12204\n  },\n  {\n    \"tag\": "exsector",\n    \"popularity\": 12188\n  },\n  {\n    \"tag\": "acutish",\n    \"popularity\": 12172\n  },\n  {\n    \"tag\": "amphichrome",\n    \"popularity\": 12156\n  },\n  {\n    \"tag\": "guarder",\n    \"popularity\": 12140\n  },\n  {\n    \"tag\": "sculpturally",\n    \"popularity\": 12124\n  },\n  {\n    \"tag\": "benightmare",\n    \"popularity\": 12108\n  },\n  {\n    \"tag\": "chucky",\n    \"popularity\": 12093\n  },\n  {\n    \"tag\": "Venetian",\n    \"popularity\": 12077\n  },\n  {\n    \"tag\": "autotheater",\n    \"popularity\": 12061\n  },\n  {\n    \"tag\": "planarioid",\n    \"popularity\": 12045\n  },\n  {\n    \"tag\": "handkerchiefful",\n    \"popularity\": 12030\n  },\n  {\n    \"tag\": "fuliginousness potentize",\n    \"popularity\": 12014\n  },\n  {\n    \"tag\": "pantheum",\n    \"popularity\": 11998\n  },\n  {\n    \"tag\": "heavyweight",\n    \"popularity\": 11983\n  },\n  {\n    \"tag\": "unbrick",\n    \"popularity\": 11967\n  },\n  {\n    \"tag\": "duomachy",\n    \"popularity\": 11952\n  },\n  {\n    \"tag\": "polyphyodont",\n    \"popularity\": 11936\n  },\n  {\n    \"tag\": "hibernacle",\n    \"popularity\": 11921\n  },\n  {\n    \"tag\": "undistend",\n    \"popularity\": 11905\n  },\n  {\n    \"tag\": "hystericky",\n    \"popularity\": 11890\n  },\n  {\n    \"tag\": "paleolimnology",\n    \"popularity\": 11875\n  },\n  {\n    \"tag\": "cedarware",\n    \"popularity\": 11859\n  },\n  {\n    \"tag\": "overwrested",\n    \"popularity\": 11844\n  },\n  {\n    \"tag\": "Syriacism",\n    \"popularity\": 11829\n  },\n  {\n    \"tag\": "pretan",\n    \"popularity\": 11813\n  },\n  {\n    \"tag\": "formant",\n    \"popularity\": 11798\n  },\n  {\n    \"tag\": "pharmacopoeist Fedia",\n    \"popularity\": 11783\n  },\n  {\n    \"tag\": "exorcist eerisome",\n    \"popularity\": 11768\n  },\n  {\n    \"tag\": "separation",\n    \"popularity\": 11753\n  },\n  {\n    \"tag\": "infancy",\n    \"popularity\": 11738\n  },\n  {\n    \"tag\": "ecrasite",\n    \"popularity\": 11723\n  },\n  {\n    \"tag\": "propolize",\n    \"popularity\": 11708\n  },\n  {\n    \"tag\": "uncram phyllin",\n    \"popularity\": 11693\n  },\n  {\n    \"tag\": "thymopathy",\n    \"popularity\": 11678\n  },\n  {\n    \"tag\": "omniscient",\n    \"popularity\": 11663\n  },\n  {\n    \"tag\": "coussinet hazer",\n    \"popularity\": 11648\n  },\n  {\n    \"tag\": "contributiveness",\n    \"popularity\": 11633\n  },\n  {\n    \"tag\": "septifluous",\n    \"popularity\": 11618\n  },\n  {\n    \"tag\": "halfness",\n    \"popularity\": 11603\n  },\n  {\n    \"tag\": "tocher",\n    \"popularity\": 11589\n  },\n  {\n    \"tag\": "monotonist",\n    \"popularity\": 11574\n  },\n  {\n    \"tag\": "headchair",\n    \"popularity\": 11559\n  },\n  {\n    \"tag\": "everywhence",\n    \"popularity\": 11544\n  },\n  {\n    \"tag\": "gerate",\n    \"popularity\": 11530\n  },\n  {\n    \"tag\": "unrepellent",\n    \"popularity\": 11515\n  },\n  {\n    \"tag\": "inidoneous",\n    \"popularity\": 11500\n  },\n  {\n    \"tag\": "Rifi",\n    \"popularity\": 11486\n  },\n  {\n    \"tag\": "unstop",\n    \"popularity\": 11471\n  },\n  {\n    \"tag\": "conformer",\n    \"popularity\": 11457\n  },\n  {\n    \"tag\": "vivisectionally",\n    \"popularity\": 11442\n  },\n  {\n    \"tag\": "nonfinishing",\n    \"popularity\": 11428\n  },\n  {\n    \"tag\": "tyranness",\n    \"popularity\": 11413\n  },\n  {\n    \"tag\": "shepherdage havoc",\n    \"popularity\": 11399\n  },\n  {\n    \"tag\": "coronale",\n    \"popularity\": 11385\n  },\n  {\n    \"tag\": "airmarker",\n    \"popularity\": 11370\n  },\n  {\n    \"tag\": "subpanel",\n    \"popularity\": 11356\n  },\n  {\n    \"tag\": "conciliation",\n    \"popularity\": 11342\n  },\n  {\n    \"tag\": "supergun",\n    \"popularity\": 11327\n  },\n  {\n    \"tag\": "photoheliography",\n    \"popularity\": 11313\n  },\n  {\n    \"tag\": "cacosmia",\n    \"popularity\": 11299\n  },\n  {\n    \"tag\": "caressant",\n    \"popularity\": 11285\n  },\n  {\n    \"tag\": "swivet",\n    \"popularity\": 11270\n  },\n  {\n    \"tag\": "coddler",\n    \"popularity\": 11256\n  },\n  {\n    \"tag\": "rakehellish",\n    \"popularity\": 11242\n  },\n  {\n    \"tag\": "recohabitation",\n    \"popularity\": 11228\n  },\n  {\n    \"tag\": "postillator",\n    \"popularity\": 11214\n  },\n  {\n    \"tag\": "receipt",\n    \"popularity\": 11200\n  },\n  {\n    \"tag\": "nonconformistical",\n    \"popularity\": 11186\n  },\n  {\n    \"tag\": "unglorified",\n    \"popularity\": 11172\n  },\n  {\n    \"tag\": "unordinariness",\n    \"popularity\": 11158\n  },\n  {\n    \"tag\": "tetrahydroxy",\n    \"popularity\": 11144\n  },\n  {\n    \"tag\": "haploperistomic corporeity",\n    \"popularity\": 11130\n  },\n  {\n    \"tag\": "varical",\n    \"popularity\": 11117\n  },\n  {\n    \"tag\": "pilferment",\n    \"popularity\": 11103\n  },\n  {\n    \"tag\": "reverentially playcraft",\n    \"popularity\": 11089\n  },\n  {\n    \"tag\": "unretentive",\n    \"popularity\": 11075\n  },\n  {\n    \"tag\": "readiness",\n    \"popularity\": 11061\n  },\n  {\n    \"tag\": "thermomagnetism",\n    \"popularity\": 11048\n  },\n  {\n    \"tag\": "spotless",\n    \"popularity\": 11034\n  },\n  {\n    \"tag\": "semishrubby",\n    \"popularity\": 11020\n  },\n  {\n    \"tag\": "metrotomy",\n    \"popularity\": 11007\n  },\n  {\n    \"tag\": "hocker",\n    \"popularity\": 10993\n  },\n  {\n    \"tag\": "anecdotal",\n    \"popularity\": 10979\n  },\n  {\n    \"tag\": "tetrabelodont",\n    \"popularity\": 10966\n  },\n  {\n    \"tag\": "Ramillied",\n    \"popularity\": 10952\n  },\n  {\n    \"tag\": "sympatheticism",\n    \"popularity\": 10939\n  },\n  {\n    \"tag\": "kiskatom",\n    \"popularity\": 10925\n  },\n  {\n    \"tag\": "concyclically",\n    \"popularity\": 10912\n  },\n  {\n    \"tag\": "tunicless",\n    \"popularity\": 10899\n  },\n  {\n    \"tag\": "formalistic",\n    \"popularity\": 10885\n  },\n  {\n    \"tag\": "thermacogenesis",\n    \"popularity\": 10872\n  },\n  {\n    \"tag\": "multimotored",\n    \"popularity\": 10858\n  },\n  {\n    \"tag\": "inversive",\n    \"popularity\": 10845\n  },\n  {\n    \"tag\": "Jatki",\n    \"popularity\": 10832\n  },\n  {\n    \"tag\": "highest",\n    \"popularity\": 10818\n  },\n  {\n    \"tag\": "rubidic",\n    \"popularity\": 10805\n  },\n  {\n    \"tag\": "acranial",\n    \"popularity\": 10792\n  },\n  {\n    \"tag\": "pulvinulus",\n    \"popularity\": 10779\n  },\n  {\n    \"tag\": "nattiness",\n    \"popularity\": 10766\n  },\n  {\n    \"tag\": "antisimoniacal",\n    \"popularity\": 10752\n  },\n  {\n    \"tag\": "tetanize",\n    \"popularity\": 10739\n  },\n  {\n    \"tag\": "spectrophobia",\n    \"popularity\": 10726\n  },\n  {\n    \"tag\": "monopolitical",\n    \"popularity\": 10713\n  },\n  {\n    \"tag\": "teallite",\n    \"popularity\": 10700\n  },\n  {\n    \"tag\": "alicyclic interpellator",\n    \"popularity\": 10687\n  },\n  {\n    \"tag\": "nonsynthesized",\n    \"popularity\": 10674\n  },\n  {\n    \"tag\": "wheelwrighting",\n    \"popularity\": 10661\n  },\n  {\n    \"tag\": "pelliculate",\n    \"popularity\": 10648\n  },\n  {\n    \"tag\": "Euphyllopoda",\n    \"popularity\": 10635\n  },\n  {\n    \"tag\": "graver",\n    \"popularity\": 10622\n  },\n  {\n    \"tag\": "automorph",\n    \"popularity\": 10609\n  },\n  {\n    \"tag\": "underhanded",\n    \"popularity\": 10597\n  },\n  {\n    \"tag\": "causal",\n    \"popularity\": 10584\n  },\n  {\n    \"tag\": "odoom",\n    \"popularity\": 10571\n  },\n  {\n    \"tag\": "apodictical",\n    \"popularity\": 10558\n  },\n  {\n    \"tag\": "foundery",\n    \"popularity\": 10545\n  },\n  {\n    \"tag\": "unneighbored",\n    \"popularity\": 10533\n  },\n  {\n    \"tag\": "woolshearing",\n    \"popularity\": 10520\n  },\n  {\n    \"tag\": "boschveld",\n    \"popularity\": 10507\n  },\n  {\n    \"tag\": "unhardened lipopod",\n    \"popularity\": 10495\n  },\n  {\n    \"tag\": "unenriching",\n    \"popularity\": 10482\n  },\n  {\n    \"tag\": "spak",\n    \"popularity\": 10469\n  },\n  {\n    \"tag\": "yogasana",\n    \"popularity\": 10457\n  },\n  {\n    \"tag\": "depoetize",\n    \"popularity\": 10444\n  },\n  {\n    \"tag\": "parousiamania",\n    \"popularity\": 10432\n  },\n  {\n    \"tag\": "longlegs",\n    \"popularity\": 10419\n  },\n  {\n    \"tag\": "gelatinizability",\n    \"popularity\": 10407\n  },\n  {\n    \"tag\": "edeology",\n    \"popularity\": 10394\n  },\n  {\n    \"tag\": "sodwork",\n    \"popularity\": 10382\n  },\n  {\n    \"tag\": "somnambule",\n    \"popularity\": 10369\n  },\n  {\n    \"tag\": "antiquing",\n    \"popularity\": 10357\n  },\n  {\n    \"tag\": "intaker",\n    \"popularity\": 10344\n  },\n  {\n    \"tag\": "Gerberia",\n    \"popularity\": 10332\n  },\n  {\n    \"tag\": "preadmit",\n    \"popularity\": 10320\n  },\n  {\n    \"tag\": "bullhorn",\n    \"popularity\": 10307\n  },\n  {\n    \"tag\": "sororal",\n    \"popularity\": 10295\n  },\n  {\n    \"tag\": "phaeophyceous",\n    \"popularity\": 10283\n  },\n  {\n    \"tag\": "omphalopsychite",\n    \"popularity\": 10271\n  },\n  {\n    \"tag\": "substantious",\n    \"popularity\": 10258\n  },\n  {\n    \"tag\": "undemonstratively",\n    \"popularity\": 10246\n  },\n  {\n    \"tag\": "corallike blackit",\n    \"popularity\": 10234\n  },\n  {\n    \"tag\": "amoebous",\n    \"popularity\": 10222\n  },\n  {\n    \"tag\": "Polypodium",\n    \"popularity\": 10210\n  },\n  {\n    \"tag\": "blodite",\n    \"popularity\": 10198\n  },\n  {\n    \"tag\": "hordarian",\n    \"popularity\": 10186\n  },\n  {\n    \"tag\": "nonmoral",\n    \"popularity\": 10174\n  },\n  {\n    \"tag\": "dredgeful",\n    \"popularity\": 10162\n  },\n  {\n    \"tag\": "nourishingly",\n    \"popularity\": 10150\n  },\n  {\n    \"tag\": "seamy",\n    \"popularity\": 10138\n  },\n  {\n    \"tag\": "vara",\n    \"popularity\": 10126\n  },\n  {\n    \"tag\": "incorruptibleness",\n    \"popularity\": 10114\n  },\n  {\n    \"tag\": "manipulator",\n    \"popularity\": 10102\n  },\n  {\n    \"tag\": "chromodiascope uncountably",\n    \"popularity\": 10090\n  },\n  {\n    \"tag\": "typhemia",\n    \"popularity\": 10078\n  },\n  {\n    \"tag\": "Smalcaldic",\n    \"popularity\": 10066\n  },\n  {\n    \"tag\": "precontrive",\n    \"popularity\": 10054\n  },\n  {\n    \"tag\": "sowarry",\n    \"popularity\": 10042\n  },\n  {\n    \"tag\": "monopodic",\n    \"popularity\": 10031\n  },\n  {\n    \"tag\": "recodify",\n    \"popularity\": 10019\n  },\n  {\n    \"tag\": "phosphowolframic rimple",\n    \"popularity\": 10007\n  },\n  {\n    \"tag\": "triconch",\n    \"popularity\": 9995\n  },\n  {\n    \"tag\": "pycnodontoid",\n    \"popularity\": 9984\n  },\n  {\n    \"tag\": "bradyspermatism",\n    \"popularity\": 9972\n  },\n  {\n    \"tag\": "extensionist",\n    \"popularity\": 9960\n  },\n  {\n    \"tag\": "characterize",\n    \"popularity\": 9949\n  },\n  {\n    \"tag\": "anatreptic proteolytic",\n    \"popularity\": 9937\n  },\n  {\n    \"tag\": "waterboard",\n    \"popularity\": 9925\n  },\n  {\n    \"tag\": "allopathically",\n    \"popularity\": 9914\n  },\n  {\n    \"tag\": "arithmetician",\n    \"popularity\": 9902\n  },\n  {\n    \"tag\": "subsist",\n    \"popularity\": 9891\n  },\n  {\n    \"tag\": "Islamitish",\n    \"popularity\": 9879\n  },\n  {\n    \"tag\": "biddy",\n    \"popularity\": 9868\n  },\n  {\n    \"tag\": "reverberation",\n    \"popularity\": 9856\n  },\n  {\n    \"tag\": "Zaporogue",\n    \"popularity\": 9845\n  },\n  {\n    \"tag\": "soapberry",\n    \"popularity\": 9833\n  },\n  {\n    \"tag\": "physiognomics",\n    \"popularity\": 9822\n  },\n  {\n    \"tag\": "hospitalization",\n    \"popularity\": 9810\n  },\n  {\n    \"tag\": "dissembler",\n    \"popularity\": 9799\n  },\n  {\n    \"tag\": "festinate",\n    \"popularity\": 9788\n  },\n  {\n    \"tag\": "angiectopia",\n    \"popularity\": 9776\n  },\n  {\n    \"tag\": "Pulicidae",\n    \"popularity\": 9765\n  },\n  {\n    \"tag\": "beslimer",\n    \"popularity\": 9754\n  },\n  {\n    \"tag\": "nontreaty",\n    \"popularity\": 9743\n  },\n  {\n    \"tag\": "unhaggled",\n    \"popularity\": 9731\n  },\n  {\n    \"tag\": "catfall",\n    \"popularity\": 9720\n  },\n  {\n    \"tag\": "stola",\n    \"popularity\": 9709\n  },\n  {\n    \"tag\": "pataco",\n    \"popularity\": 9698\n  },\n  {\n    \"tag\": "ontologistic",\n    \"popularity\": 9686\n  },\n  {\n    \"tag\": "aerosphere",\n    \"popularity\": 9675\n  },\n  {\n    \"tag\": "deobstruent",\n    \"popularity\": 9664\n  },\n  {\n    \"tag\": "threepence",\n    \"popularity\": 9653\n  },\n  {\n    \"tag\": "cyprinoid",\n    \"popularity\": 9642\n  },\n  {\n    \"tag\": "overbank",\n    \"popularity\": 9631\n  },\n  {\n    \"tag\": "prostyle",\n    \"popularity\": 9620\n  },\n  {\n    \"tag\": "photoactivation",\n    \"popularity\": 9609\n  },\n  {\n    \"tag\": "homothetic",\n    \"popularity\": 9598\n  },\n  {\n    \"tag\": "roguedom",\n    \"popularity\": 9587\n  },\n  {\n    \"tag\": "underschool",\n    \"popularity\": 9576\n  },\n  {\n    \"tag\": "tractility",\n    \"popularity\": 9565\n  },\n  {\n    \"tag\": "gardenin",\n    \"popularity\": 9554\n  },\n  {\n    \"tag\": "Micromastictora",\n    \"popularity\": 9543\n  },\n  {\n    \"tag\": "gossypine",\n    \"popularity\": 9532\n  },\n  {\n    \"tag\": "amylodyspepsia",\n    \"popularity\": 9521\n  },\n  {\n    \"tag\": "Luciana",\n    \"popularity\": 9510\n  },\n  {\n    \"tag\": "meetly nonfisherman",\n    \"popularity\": 9500\n  },\n  {\n    \"tag\": "backhanded",\n    \"popularity\": 9489\n  },\n  {\n    \"tag\": "decrustation",\n    \"popularity\": 9478\n  },\n  {\n    \"tag\": "pinrail",\n    \"popularity\": 9467\n  },\n  {\n    \"tag\": "Mahori",\n    \"popularity\": 9456\n  },\n  {\n    \"tag\": "unsizable",\n    \"popularity\": 9446\n  },\n  {\n    \"tag\": "disawa",\n    \"popularity\": 9435\n  },\n  {\n    \"tag\": "launderability inconsidered",\n    \"popularity\": 9424\n  },\n  {\n    \"tag\": "unclassical",\n    \"popularity\": 9414\n  },\n  {\n    \"tag\": "inobtrusiveness",\n    \"popularity\": 9403\n  },\n  {\n    \"tag\": "sialogenous",\n    \"popularity\": 9392\n  },\n  {\n    \"tag\": "sulphonamide",\n    \"popularity\": 9382\n  },\n  {\n    \"tag\": "diluvion",\n    \"popularity\": 9371\n  },\n  {\n    \"tag\": "deuteranope",\n    \"popularity\": 9361\n  },\n  {\n    \"tag\": "addition",\n    \"popularity\": 9350\n  },\n  {\n    \"tag\": "bockeret",\n    \"popularity\": 9339\n  },\n  {\n    \"tag\": "unidentified",\n    \"popularity\": 9329\n  },\n  {\n    \"tag\": "caryatic",\n    \"popularity\": 9318\n  },\n  {\n    \"tag\": "misattribution",\n    \"popularity\": 9308\n  },\n  {\n    \"tag\": "outray",\n    \"popularity\": 9297\n  },\n  {\n    \"tag\": "areometrical",\n    \"popularity\": 9287\n  },\n  {\n    \"tag\": "antilogism",\n    \"popularity\": 9277\n  },\n  {\n    \"tag\": "inadjustable",\n    \"popularity\": 9266\n  },\n  {\n    \"tag\": "byssus",\n    \"popularity\": 9256\n  },\n  {\n    \"tag\": "trun",\n    \"popularity\": 9245\n  },\n  {\n    \"tag\": "thereology",\n    \"popularity\": 9235\n  },\n  {\n    \"tag\": "extort",\n    \"popularity\": 9225\n  },\n  {\n    \"tag\": "bumpkin",\n    \"popularity\": 9214\n  },\n  {\n    \"tag\": "sulphobenzide",\n    \"popularity\": 9204\n  },\n  {\n    \"tag\": "hydrogeology",\n    \"popularity\": 9194\n  },\n  {\n    \"tag\": "nidulariaceous",\n    \"popularity\": 9183\n  },\n  {\n    \"tag\": "propodiale",\n    \"popularity\": 9173\n  },\n  {\n    \"tag\": "fierily",\n    \"popularity\": 9163\n  },\n  {\n    \"tag\": "aerotonometry",\n    \"popularity\": 9153\n  },\n  {\n    \"tag\": "pelobatid oversuperstitious",\n    \"popularity\": 9142\n  },\n  {\n    \"tag\": "restringent",\n    \"popularity\": 9132\n  },\n  {\n    \"tag\": "tetrapodic",\n    \"popularity\": 9122\n  },\n  {\n    \"tag\": "heroicness Vendidad",\n    \"popularity\": 9112\n  },\n  {\n    \"tag\": "Sphingurus",\n    \"popularity\": 9102\n  },\n  {\n    \"tag\": "sclerote",\n    \"popularity\": 9092\n  },\n  {\n    \"tag\": "unkeyed",\n    \"popularity\": 9082\n  },\n  {\n    \"tag\": "superparliamentary",\n    \"popularity\": 9072\n  },\n  {\n    \"tag\": "hetericism",\n    \"popularity\": 9061\n  },\n  {\n    \"tag\": "hucklebone",\n    \"popularity\": 9051\n  },\n  {\n    \"tag\": "yojan",\n    \"popularity\": 9041\n  },\n  {\n    \"tag\": "bossed",\n    \"popularity\": 9031\n  },\n  {\n    \"tag\": "spiderwork",\n    \"popularity\": 9021\n  },\n  {\n    \"tag\": "millfeed dullery",\n    \"popularity\": 9011\n  },\n  {\n    \"tag\": "adnoun",\n    \"popularity\": 9001\n  },\n  {\n    \"tag\": "mesometric",\n    \"popularity\": 8992\n  },\n  {\n    \"tag\": "doublehandedness",\n    \"popularity\": 8982\n  },\n  {\n    \"tag\": "suppurant",\n    \"popularity\": 8972\n  },\n  {\n    \"tag\": "Berlinize",\n    \"popularity\": 8962\n  },\n  {\n    \"tag\": "sontag",\n    \"popularity\": 8952\n  },\n  {\n    \"tag\": "biplane",\n    \"popularity\": 8942\n  },\n  {\n    \"tag\": "insula",\n    \"popularity\": 8932\n  },\n  {\n    \"tag\": "unbrand",\n    \"popularity\": 8922\n  },\n  {\n    \"tag\": "Basilosaurus",\n    \"popularity\": 8913\n  },\n  {\n    \"tag\": "prenomination",\n    \"popularity\": 8903\n  },\n  {\n    \"tag\": "untextual",\n    \"popularity\": 8893\n  },\n  {\n    \"tag\": "coleslaw",\n    \"popularity\": 8883\n  },\n  {\n    \"tag\": "langsyne",\n    \"popularity\": 8874\n  },\n  {\n    \"tag\": "impede",\n    \"popularity\": 8864\n  },\n  {\n    \"tag\": "irrigator",\n    \"popularity\": 8854\n  },\n  {\n    \"tag\": "deflocculation",\n    \"popularity\": 8844\n  },\n  {\n    \"tag\": "narghile",\n    \"popularity\": 8835\n  },\n  {\n    \"tag\": "unguardedly ebenaceous",\n    \"popularity\": 8825\n  },\n  {\n    \"tag\": "conversantly subocular",\n    \"popularity\": 8815\n  },\n  {\n    \"tag\": "hydroponic",\n    \"popularity\": 8806\n  },\n  {\n    \"tag\": "anthropopsychism",\n    \"popularity\": 8796\n  },\n  {\n    \"tag\": "panoptic",\n    \"popularity\": 8787\n  },\n  {\n    \"tag\": "insufferable",\n    \"popularity\": 8777\n  },\n  {\n    \"tag\": "salema",\n    \"popularity\": 8768\n  },\n  {\n    \"tag\": "Myriapoda",\n    \"popularity\": 8758\n  },\n  {\n    \"tag\": "regarrison",\n    \"popularity\": 8748\n  },\n  {\n    \"tag\": "overlearned",\n    \"popularity\": 8739\n  },\n  {\n    \"tag\": "ultraroyalist conventical bureaucratical",\n    \"popularity\": 8729\n  },\n  {\n    \"tag\": "epicaridan",\n    \"popularity\": 8720\n  },\n  {\n    \"tag\": "poetastress",\n    \"popularity\": 8711\n  },\n  {\n    \"tag\": "monophthalmus",\n    \"popularity\": 8701\n  },\n  {\n    \"tag\": "simnel",\n    \"popularity\": 8692\n  },\n  {\n    \"tag\": "compotor",\n    \"popularity\": 8682\n  },\n  {\n    \"tag\": "hydrolase",\n    \"popularity\": 8673\n  },\n  {\n    \"tag\": "attemptless",\n    \"popularity\": 8663\n  },\n  {\n    \"tag\": "visceroptosis",\n    \"popularity\": 8654\n  },\n  {\n    \"tag\": "unpreparedly",\n    \"popularity\": 8645\n  },\n  {\n    \"tag\": "mastage",\n    \"popularity\": 8635\n  },\n  {\n    \"tag\": "preinfluence",\n    \"popularity\": 8626\n  },\n  {\n    \"tag\": "Siwan",\n    \"popularity\": 8617\n  },\n  {\n    \"tag\": "ceratotheca belvedere",\n    \"popularity\": 8607\n  },\n  {\n    \"tag\": "disenablement",\n    \"popularity\": 8598\n  },\n  {\n    \"tag\": "nine",\n    \"popularity\": 8589\n  },\n  {\n    \"tag\": "spellingdown abridgment",\n    \"popularity\": 8580\n  },\n  {\n    \"tag\": "twilightless",\n    \"popularity\": 8571\n  },\n  {\n    \"tag\": "overflow",\n    \"popularity\": 8561\n  },\n  {\n    \"tag\": "mismeasurement",\n    \"popularity\": 8552\n  },\n  {\n    \"tag\": "nawabship",\n    \"popularity\": 8543\n  },\n  {\n    \"tag\": "Phrynosoma",\n    \"popularity\": 8534\n  },\n  {\n    \"tag\": "unanticipatingly",\n    \"popularity\": 8525\n  },\n  {\n    \"tag\": "blankite",\n    \"popularity\": 8516\n  },\n  {\n    \"tag\": "role",\n    \"popularity\": 8506\n  },\n  {\n    \"tag\": "peperine edelweiss",\n    \"popularity\": 8497\n  },\n  {\n    \"tag\": "unhysterical",\n    \"popularity\": 8488\n  },\n  {\n    \"tag\": "attentiveness",\n    \"popularity\": 8479\n  },\n  {\n    \"tag\": "scintillant",\n    \"popularity\": 8470\n  },\n  {\n    \"tag\": "stenostomatous",\n    \"popularity\": 8461\n  },\n  {\n    \"tag\": "pectinite",\n    \"popularity\": 8452\n  },\n  {\n    \"tag\": "herring",\n    \"popularity\": 8443\n  },\n  {\n    \"tag\": "interroom",\n    \"popularity\": 8434\n  },\n  {\n    \"tag\": "laccol",\n    \"popularity\": 8425\n  },\n  {\n    \"tag\": "unpartably kylite",\n    \"popularity\": 8416\n  },\n  {\n    \"tag\": "spirivalve",\n    \"popularity\": 8407\n  },\n  {\n    \"tag\": "hoosegow",\n    \"popularity\": 8398\n  },\n  {\n    \"tag\": "doat",\n    \"popularity\": 8389\n  },\n  {\n    \"tag\": "amphibian",\n    \"popularity\": 8380\n  },\n  {\n    \"tag\": "exposit",\n    \"popularity\": 8371\n  },\n  {\n    \"tag\": "canopy",\n    \"popularity\": 8363\n  },\n  {\n    \"tag\": "houndlike",\n    \"popularity\": 8354\n  },\n  {\n    \"tag\": "spikebill",\n    \"popularity\": 8345\n  },\n  {\n    \"tag\": "wiseacre pyrotechnic",\n    \"popularity\": 8336\n  },\n  {\n    \"tag\": "confessingly woodman",\n    \"popularity\": 8327\n  },\n  {\n    \"tag\": "overside",\n    \"popularity\": 8318\n  },\n  {\n    \"tag\": "oftwhiles",\n    \"popularity\": 8310\n  },\n  {\n    \"tag\": "Musophagidae",\n    \"popularity\": 8301\n  },\n  {\n    \"tag\": "slumberer",\n    \"popularity\": 8292\n  },\n  {\n    \"tag\": "leiotrichy",\n    \"popularity\": 8283\n  },\n  {\n    \"tag\": "Mantispidae",\n    \"popularity\": 8275\n  },\n  {\n    \"tag\": "perceptually",\n    \"popularity\": 8266\n  },\n  {\n    \"tag\": "biller",\n    \"popularity\": 8257\n  },\n  {\n    \"tag\": "eudaemonical",\n    \"popularity\": 8249\n  },\n  {\n    \"tag\": "underfiend",\n    \"popularity\": 8240\n  },\n  {\n    \"tag\": "impartible",\n    \"popularity\": 8231\n  },\n  {\n    \"tag\": "saxicavous",\n    \"popularity\": 8223\n  },\n  {\n    \"tag\": "yapster",\n    \"popularity\": 8214\n  },\n  {\n    \"tag\": "aliseptal",\n    \"popularity\": 8205\n  },\n  {\n    \"tag\": "omniparient",\n    \"popularity\": 8197\n  },\n  {\n    \"tag\": "nishiki",\n    \"popularity\": 8188\n  },\n  {\n    \"tag\": "yuzluk",\n    \"popularity\": 8180\n  },\n  {\n    \"tag\": "solderer",\n    \"popularity\": 8171\n  },\n  {\n    \"tag\": "Pinna",\n    \"popularity\": 8162\n  },\n  {\n    \"tag\": "reinterfere",\n    \"popularity\": 8154\n  },\n  {\n    \"tag\": "superepic",\n    \"popularity\": 8145\n  },\n  {\n    \"tag\": "ronquil",\n    \"popularity\": 8137\n  },\n  {\n    \"tag\": "bratstvo",\n    \"popularity\": 8128\n  },\n  {\n    \"tag\": "Thea",\n    \"popularity\": 8120\n  },\n  {\n    \"tag\": "hermaphroditical",\n    \"popularity\": 8111\n  },\n  {\n    \"tag\": "enlief",\n    \"popularity\": 8103\n  },\n  {\n    \"tag\": "Jesuate",\n    \"popularity\": 8095\n  },\n  {\n    \"tag\": "gaysome",\n    \"popularity\": 8086\n  },\n  {\n    \"tag\": "iliohypogastric",\n    \"popularity\": 8078\n  },\n  {\n    \"tag\": "regardance",\n    \"popularity\": 8069\n  },\n  {\n    \"tag\": "cumulately",\n    \"popularity\": 8061\n  },\n  {\n    \"tag\": "haustorial nucleolocentrosome",\n    \"popularity\": 8053\n  },\n  {\n    \"tag\": "cosmocrat",\n    \"popularity\": 8044\n  },\n  {\n    \"tag\": "onyxitis",\n    \"popularity\": 8036\n  },\n  {\n    \"tag\": "Cabinda",\n    \"popularity\": 8028\n  },\n  {\n    \"tag\": "coresort",\n    \"popularity\": 8019\n  },\n  {\n    \"tag\": "drusy preformant",\n    \"popularity\": 8011\n  },\n  {\n    \"tag\": "piningly",\n    \"popularity\": 8003\n  },\n  {\n    \"tag\": "bootlessly",\n    \"popularity\": 7994\n  },\n  {\n    \"tag\": "talari",\n    \"popularity\": 7986\n  },\n  {\n    \"tag\": "amidoacetal",\n    \"popularity\": 7978\n  },\n  {\n    \"tag\": "pschent",\n    \"popularity\": 7970\n  },\n  {\n    \"tag\": "consumptional scarer titivate",\n    \"popularity\": 7962\n  },\n  {\n    \"tag\": "Anserinae",\n    \"popularity\": 7953\n  },\n  {\n    \"tag\": "flaunter",\n    \"popularity\": 7945\n  },\n  {\n    \"tag\": "reindeer",\n    \"popularity\": 7937\n  },\n  {\n    \"tag\": "disparage",\n    \"popularity\": 7929\n  },\n  {\n    \"tag\": "superheat",\n    \"popularity\": 7921\n  },\n  {\n    \"tag\": "Chromatium",\n    \"popularity\": 7912\n  },\n  {\n    \"tag\": "Tina",\n    \"popularity\": 7904\n  },\n  {\n    \"tag\": "rededicatory",\n    \"popularity\": 7896\n  },\n  {\n    \"tag\": "nontransient",\n    \"popularity\": 7888\n  },\n  {\n    \"tag\": "Phocaean brinkless",\n    \"popularity\": 7880\n  },\n  {\n    \"tag\": "ventriculose",\n    \"popularity\": 7872\n  },\n  {\n    \"tag\": "upplough",\n    \"popularity\": 7864\n  },\n  {\n    \"tag\": "succorless",\n    \"popularity\": 7856\n  },\n  {\n    \"tag\": "hayrake",\n    \"popularity\": 7848\n  },\n  {\n    \"tag\": "merriness amorphia",\n    \"popularity\": 7840\n  },\n  {\n    \"tag\": "merycism",\n    \"popularity\": 7832\n  },\n  {\n    \"tag\": "checkrow",\n    \"popularity\": 7824\n  },\n  {\n    \"tag\": "scry",\n    \"popularity\": 7816\n  },\n  {\n    \"tag\": "obvolve",\n    \"popularity\": 7808\n  },\n  {\n    \"tag\": "orchard",\n    \"popularity\": 7800\n  },\n  {\n    \"tag\": "isomerize",\n    \"popularity\": 7792\n  },\n  {\n    \"tag\": "competitrix",\n    \"popularity\": 7784\n  },\n  {\n    \"tag\": "unbannered",\n    \"popularity\": 7776\n  },\n  {\n    \"tag\": "undoctrined",\n    \"popularity\": 7768\n  },\n  {\n    \"tag\": "theologian",\n    \"popularity\": 7760\n  },\n  {\n    \"tag\": "nebby",\n    \"popularity\": 7752\n  },\n  {\n    \"tag\": "Cardiazol",\n    \"popularity\": 7745\n  },\n  {\n    \"tag\": "phagedenic",\n    \"popularity\": 7737\n  },\n  {\n    \"tag\": "nostalgic",\n    \"popularity\": 7729\n  },\n  {\n    \"tag\": "orthodoxy",\n    \"popularity\": 7721\n  },\n  {\n    \"tag\": "oversanguine",\n    \"popularity\": 7713\n  },\n  {\n    \"tag\": "lish",\n    \"popularity\": 7705\n  },\n  {\n    \"tag\": "ketogenic",\n    \"popularity\": 7698\n  },\n  {\n    \"tag\": "syndicalize",\n    \"popularity\": 7690\n  },\n  {\n    \"tag\": "leeftail",\n    \"popularity\": 7682\n  },\n  {\n    \"tag\": "bulbomedullary",\n    \"popularity\": 7674\n  },\n  {\n    \"tag\": "reletter",\n    \"popularity\": 7667\n  },\n  {\n    \"tag\": "bitterly",\n    \"popularity\": 7659\n  },\n  {\n    \"tag\": "participatory",\n    \"popularity\": 7651\n  },\n  {\n    \"tag\": "baldberry",\n    \"popularity\": 7643\n  },\n  {\n    \"tag\": "prowaterpower",\n    \"popularity\": 7636\n  },\n  {\n    \"tag\": "lexicographical",\n    \"popularity\": 7628\n  },\n  {\n    \"tag\": "Anisodactyli",\n    \"popularity\": 7620\n  },\n  {\n    \"tag\": "amphipodous",\n    \"popularity\": 7613\n  },\n  {\n    \"tag\": "triglandular",\n    \"popularity\": 7605\n  },\n  {\n    \"tag\": "xanthopsin",\n    \"popularity\": 7597\n  },\n  {\n    \"tag\": "indefinitude",\n    \"popularity\": 7590\n  },\n  {\n    \"tag\": "bookworm",\n    \"popularity\": 7582\n  },\n  {\n    \"tag\": "suffocative",\n    \"popularity\": 7574\n  },\n  {\n    \"tag\": "uncongested tyrant",\n    \"popularity\": 7567\n  },\n  {\n    \"tag\": "alow harmoniously Pamir",\n    \"popularity\": 7559\n  },\n  {\n    \"tag\": "monander",\n    \"popularity\": 7552\n  },\n  {\n    \"tag\": "bagatelle",\n    \"popularity\": 7544\n  },\n  {\n    \"tag\": "membranology",\n    \"popularity\": 7537\n  },\n  {\n    \"tag\": "parturifacient",\n    \"popularity\": 7529\n  },\n  {\n    \"tag\": "excitovascular",\n    \"popularity\": 7522\n  },\n  {\n    \"tag\": "homopolar",\n    \"popularity\": 7514\n  },\n  {\n    \"tag\": "phobiac",\n    \"popularity\": 7507\n  },\n  {\n    \"tag\": "clype",\n    \"popularity\": 7499\n  },\n  {\n    \"tag\": "unsubversive",\n    \"popularity\": 7492\n  },\n  {\n    \"tag\": "bostrychoidal scorpionwort",\n    \"popularity\": 7484\n  },\n  {\n    \"tag\": "biliteralism",\n    \"popularity\": 7477\n  },\n  {\n    \"tag\": "dentatocostate",\n    \"popularity\": 7469\n  },\n  {\n    \"tag\": "Pici",\n    \"popularity\": 7462\n  },\n  {\n    \"tag\": "sideritic",\n    \"popularity\": 7454\n  },\n  {\n    \"tag\": "syntaxis",\n    \"popularity\": 7447\n  },\n  {\n    \"tag\": "ingest",\n    \"popularity\": 7440\n  },\n  {\n    \"tag\": "rigmarolish",\n    \"popularity\": 7432\n  },\n  {\n    \"tag\": "ocreaceous",\n    \"popularity\": 7425\n  },\n  {\n    \"tag\": "hyperbrachyskelic",\n    \"popularity\": 7418\n  },\n  {\n    \"tag\": "basophobia",\n    \"popularity\": 7410\n  },\n  {\n    \"tag\": "substantialness",\n    \"popularity\": 7403\n  },\n  {\n    \"tag\": "agglutinoid",\n    \"popularity\": 7396\n  },\n  {\n    \"tag\": "longleaf",\n    \"popularity\": 7388\n  },\n  {\n    \"tag\": "electroengraving",\n    \"popularity\": 7381\n  },\n  {\n    \"tag\": "laparoenterotomy",\n    \"popularity\": 7374\n  },\n  {\n    \"tag\": "oxalylurea",\n    \"popularity\": 7366\n  },\n  {\n    \"tag\": "unattaintedly",\n    \"popularity\": 7359\n  },\n  {\n    \"tag\": "pennystone",\n    \"popularity\": 7352\n  },\n  {\n    \"tag\": "Plumbaginaceae",\n    \"popularity\": 7345\n  },\n  {\n    \"tag\": "horntip",\n    \"popularity\": 7337\n  },\n  {\n    \"tag\": "begrudge",\n    \"popularity\": 7330\n  },\n  {\n    \"tag\": "bechignoned",\n    \"popularity\": 7323\n  },\n  {\n    \"tag\": "hologonidium",\n    \"popularity\": 7316\n  },\n  {\n    \"tag\": "Pulian",\n    \"popularity\": 7309\n  },\n  {\n    \"tag\": "gratulation",\n    \"popularity\": 7301\n  },\n  {\n    \"tag\": "Sebright",\n    \"popularity\": 7294\n  },\n  {\n    \"tag\": "coinstantaneous emotionally",\n    \"popularity\": 7287\n  },\n  {\n    \"tag\": "thoracostracan",\n    \"popularity\": 7280\n  },\n  {\n    \"tag\": "saurodont",\n    \"popularity\": 7273\n  },\n  {\n    \"tag\": "coseat",\n    \"popularity\": 7266\n  },\n  {\n    \"tag\": "irascibility",\n    \"popularity\": 7259\n  },\n  {\n    \"tag\": "occlude",\n    \"popularity\": 7251\n  },\n  {\n    \"tag\": "metallurgist",\n    \"popularity\": 7244\n  },\n  {\n    \"tag\": "extraviolet",\n    \"popularity\": 7237\n  },\n  {\n    \"tag\": "clinic",\n    \"popularity\": 7230\n  },\n  {\n    \"tag\": "skater",\n    \"popularity\": 7223\n  },\n  {\n    \"tag\": "linguistic",\n    \"popularity\": 7216\n  },\n  {\n    \"tag\": "attacheship",\n    \"popularity\": 7209\n  },\n  {\n    \"tag\": "Rachianectes",\n    \"popularity\": 7202\n  },\n  {\n    \"tag\": "foliolose",\n    \"popularity\": 7195\n  },\n  {\n    \"tag\": "claudetite",\n    \"popularity\": 7188\n  },\n  {\n    \"tag\": "aphidian scratching",\n    \"popularity\": 7181\n  },\n  {\n    \"tag\": "Carida",\n    \"popularity\": 7174\n  },\n  {\n    \"tag\": "tiepin polymicroscope",\n    \"popularity\": 7167\n  },\n  {\n    \"tag\": "telpherage",\n    \"popularity\": 7160\n  },\n  {\n    \"tag\": "meek",\n    \"popularity\": 7153\n  },\n  {\n    \"tag\": "swiftness",\n    \"popularity\": 7146\n  },\n  {\n    \"tag\": "gentes",\n    \"popularity\": 7139\n  },\n  {\n    \"tag\": "uncommemorated",\n    \"popularity\": 7132\n  },\n  {\n    \"tag\": "Lazarus",\n    \"popularity\": 7125\n  },\n  {\n    \"tag\": "redivive",\n    \"popularity\": 7119\n  },\n  {\n    \"tag\": "nonfebrile",\n    \"popularity\": 7112\n  },\n  {\n    \"tag\": "nymphet",\n    \"popularity\": 7105\n  },\n  {\n    \"tag\": "areologically",\n    \"popularity\": 7098\n  },\n  {\n    \"tag\": "undonkey",\n    \"popularity\": 7091\n  },\n  {\n    \"tag\": "projecting",\n    \"popularity\": 7084\n  },\n  {\n    \"tag\": "pinnigrade",\n    \"popularity\": 7077\n  },\n  {\n    \"tag\": "butylation",\n    \"popularity\": 7071\n  },\n  {\n    \"tag\": "philologistic lenticle",\n    \"popularity\": 7064\n  },\n  {\n    \"tag\": "nooky",\n    \"popularity\": 7057\n  },\n  {\n    \"tag\": "incestuousness",\n    \"popularity\": 7050\n  },\n  {\n    \"tag\": "palingenetically",\n    \"popularity\": 7043\n  },\n  {\n    \"tag\": "mitochondria",\n    \"popularity\": 7037\n  },\n  {\n    \"tag\": "truthify",\n    \"popularity\": 7030\n  },\n  {\n    \"tag\": "titanyl",\n    \"popularity\": 7023\n  },\n  {\n    \"tag\": "bestride",\n    \"popularity\": 7016\n  },\n  {\n    \"tag\": "chende",\n    \"popularity\": 7010\n  },\n  {\n    \"tag\": "Chaucerian monophote",\n    \"popularity\": 7003\n  },\n  {\n    \"tag\": "cutback",\n    \"popularity\": 6996\n  },\n  {\n    \"tag\": "unpatiently",\n    \"popularity\": 6989\n  },\n  {\n    \"tag\": "subvitreous",\n    \"popularity\": 6983\n  },\n  {\n    \"tag\": "organizable",\n    \"popularity\": 6976\n  },\n  {\n    \"tag\": "anniverse uncomprehensible",\n    \"popularity\": 6969\n  },\n  {\n    \"tag\": "hyalescence",\n    \"popularity\": 6963\n  },\n  {\n    \"tag\": "amniochorial",\n    \"popularity\": 6956\n  },\n  {\n    \"tag\": "Corybantian",\n    \"popularity\": 6949\n  },\n  {\n    \"tag\": "genocide Scaphitidae",\n    \"popularity\": 6943\n  },\n  {\n    \"tag\": "accordionist",\n    \"popularity\": 6936\n  },\n  {\n    \"tag\": "becheck",\n    \"popularity\": 6930\n  },\n  {\n    \"tag\": "overproduce",\n    \"popularity\": 6923\n  },\n  {\n    \"tag\": "unmaniac frijolillo",\n    \"popularity\": 6916\n  },\n  {\n    \"tag\": "multisulcated",\n    \"popularity\": 6910\n  },\n  {\n    \"tag\": "wennebergite",\n    \"popularity\": 6903\n  },\n  {\n    \"tag\": "tautousious mowth",\n    \"popularity\": 6897\n  },\n  {\n    \"tag\": "marigold",\n    \"popularity\": 6890\n  },\n  {\n    \"tag\": "affray",\n    \"popularity\": 6884\n  },\n  {\n    \"tag\": "nonidolatrous",\n    \"popularity\": 6877\n  },\n  {\n    \"tag\": "aphrasia",\n    \"popularity\": 6871\n  },\n  {\n    \"tag\": "muddlingly",\n    \"popularity\": 6864\n  },\n  {\n    \"tag\": "clear",\n    \"popularity\": 6858\n  },\n  {\n    \"tag\": "Clitoria",\n    \"popularity\": 6851\n  },\n  {\n    \"tag\": "apportionment underwaist",\n    \"popularity\": 6845\n  },\n  {\n    \"tag\": "kodakist",\n    \"popularity\": 6838\n  },\n  {\n    \"tag\": "Momotidae",\n    \"popularity\": 6832\n  },\n  {\n    \"tag\": "cryptovalency",\n    \"popularity\": 6825\n  },\n  {\n    \"tag\": "floe",\n    \"popularity\": 6819\n  },\n  {\n    \"tag\": "aphagia",\n    \"popularity\": 6812\n  },\n  {\n    \"tag\": "brontograph",\n    \"popularity\": 6806\n  },\n  {\n    \"tag\": "tubulous",\n    \"popularity\": 6799\n  },\n  {\n    \"tag\": "unhorse",\n    \"popularity\": 6793\n  },\n  {\n    \"tag\": "chlordane",\n    \"popularity\": 6787\n  },\n  {\n    \"tag\": "colloquy brochan",\n    \"popularity\": 6780\n  },\n  {\n    \"tag\": "sloosh",\n    \"popularity\": 6774\n  },\n  {\n    \"tag\": "battered",\n    \"popularity\": 6767\n  },\n  {\n    \"tag\": "monocularity pluriguttulate",\n    \"popularity\": 6761\n  },\n  {\n    \"tag\": "chiastoneury",\n    \"popularity\": 6755\n  },\n  {\n    \"tag\": "Sanguinaria",\n    \"popularity\": 6748\n  },\n  {\n    \"tag\": "confessionary",\n    \"popularity\": 6742\n  },\n  {\n    \"tag\": "enzymic",\n    \"popularity\": 6736\n  },\n  {\n    \"tag\": "cord",\n    \"popularity\": 6729\n  },\n  {\n    \"tag\": "oviducal",\n    \"popularity\": 6723\n  },\n  {\n    \"tag\": "crozzle outsea",\n    \"popularity\": 6717\n  },\n  {\n    \"tag\": "balladical",\n    \"popularity\": 6710\n  },\n  {\n    \"tag\": "uncollectibleness",\n    \"popularity\": 6704\n  },\n  {\n    \"tag\": "predorsal",\n    \"popularity\": 6698\n  },\n  {\n    \"tag\": "reauthenticate",\n    \"popularity\": 6692\n  },\n  {\n    \"tag\": "ravissant",\n    \"popularity\": 6685\n  },\n  {\n    \"tag\": "advantageousness",\n    \"popularity\": 6679\n  },\n  {\n    \"tag\": "rung",\n    \"popularity\": 6673\n  },\n  {\n    \"tag\": "duncedom",\n    \"popularity\": 6667\n  },\n  {\n    \"tag\": "hematolite",\n    \"popularity\": 6660\n  },\n  {\n    \"tag\": "thisness",\n    \"popularity\": 6654\n  },\n  {\n    \"tag\": "mapau",\n    \"popularity\": 6648\n  },\n  {\n    \"tag\": "Hecatic",\n    \"popularity\": 6642\n  },\n  {\n    \"tag\": "meningoencephalocele",\n    \"popularity\": 6636\n  },\n  {\n    \"tag\": "confection sorra",\n    \"popularity\": 6630\n  },\n  {\n    \"tag\": "unsedate",\n    \"popularity\": 6623\n  },\n  {\n    \"tag\": "meningocerebritis",\n    \"popularity\": 6617\n  },\n  {\n    \"tag\": "biopsychological",\n    \"popularity\": 6611\n  },\n  {\n    \"tag\": "clavicithern",\n    \"popularity\": 6605\n  },\n  {\n    \"tag\": "resun",\n    \"popularity\": 6599\n  },\n  {\n    \"tag\": "bayamo",\n    \"popularity\": 6593\n  },\n  {\n    \"tag\": "seeableness",\n    \"popularity\": 6587\n  },\n  {\n    \"tag\": "hypsidolichocephalism",\n    \"popularity\": 6581\n  },\n  {\n    \"tag\": "salivous",\n    \"popularity\": 6574\n  },\n  {\n    \"tag\": "neumatize",\n    \"popularity\": 6568\n  },\n  {\n    \"tag\": "stree",\n    \"popularity\": 6562\n  },\n  {\n    \"tag\": "markshot",\n    \"popularity\": 6556\n  },\n  {\n    \"tag\": "phraseologically",\n    \"popularity\": 6550\n  },\n  {\n    \"tag\": "yealing",\n    \"popularity\": 6544\n  },\n  {\n    \"tag\": "puggy",\n    \"popularity\": 6538\n  },\n  {\n    \"tag\": "sexadecimal",\n    \"popularity\": 6532\n  },\n  {\n    \"tag\": "unofficerlike",\n    \"popularity\": 6526\n  },\n  {\n    \"tag\": "curiosa",\n    \"popularity\": 6520\n  },\n  {\n    \"tag\": "pedomotor",\n    \"popularity\": 6514\n  },\n  {\n    \"tag\": "astrally",\n    \"popularity\": 6508\n  },\n  {\n    \"tag\": "prosomatic",\n    \"popularity\": 6502\n  },\n  {\n    \"tag\": "bulletheaded",\n    \"popularity\": 6496\n  },\n  {\n    \"tag\": "fortuned",\n    \"popularity\": 6490\n  },\n  {\n    \"tag\": "pixy",\n    \"popularity\": 6484\n  },\n  {\n    \"tag\": "protectrix",\n    \"popularity\": 6478\n  },\n  {\n    \"tag\": "arthritical",\n    \"popularity\": 6472\n  },\n  {\n    \"tag\": "coction",\n    \"popularity\": 6466\n  },\n  {\n    \"tag\": "Anthropos",\n    \"popularity\": 6460\n  },\n  {\n    \"tag\": "runer",\n    \"popularity\": 6454\n  },\n  {\n    \"tag\": "prenotify",\n    \"popularity\": 6449\n  },\n  {\n    \"tag\": "microspheric gastroparalysis",\n    \"popularity\": 6443\n  },\n  {\n    \"tag\": "Jovicentrical",\n    \"popularity\": 6437\n  },\n  {\n    \"tag\": "ceratopsid",\n    \"popularity\": 6431\n  },\n  {\n    \"tag\": "Theodoric",\n    \"popularity\": 6425\n  },\n  {\n    \"tag\": "Pactolus",\n    \"popularity\": 6419\n  },\n  {\n    \"tag\": "spawning",\n    \"popularity\": 6413\n  },\n  {\n    \"tag\": "nonconfidential",\n    \"popularity\": 6407\n  },\n  {\n    \"tag\": "halotrichite infumate",\n    \"popularity\": 6402\n  },\n  {\n    \"tag\": "undiscriminatingly",\n    \"popularity\": 6396\n  },\n  {\n    \"tag\": "unexasperated",\n    \"popularity\": 6390\n  },\n  {\n    \"tag\": "isoeugenol",\n    \"popularity\": 6384\n  },\n  {\n    \"tag\": "pressboard",\n    \"popularity\": 6378\n  },\n  {\n    \"tag\": "unshrew",\n    \"popularity\": 6372\n  },\n  {\n    \"tag\": "huffingly",\n    \"popularity\": 6367\n  },\n  {\n    \"tag\": "wagaun",\n    \"popularity\": 6361\n  },\n  {\n    \"tag\": "squirt Philistine",\n    \"popularity\": 6355\n  },\n  {\n    \"tag\": "kryptic",\n    \"popularity\": 6349\n  },\n  {\n    \"tag\": "paraform",\n    \"popularity\": 6344\n  },\n  {\n    \"tag\": "preverify",\n    \"popularity\": 6338\n  },\n  {\n    \"tag\": "dalar",\n    \"popularity\": 6332\n  },\n  {\n    \"tag\": "interdictor appraisingly",\n    \"popularity\": 6326\n  },\n  {\n    \"tag\": "chipped",\n    \"popularity\": 6321\n  },\n  {\n    \"tag\": "Pteropoda",\n    \"popularity\": 6315\n  },\n  {\n    \"tag\": "Bohairic",\n    \"popularity\": 6309\n  },\n  {\n    \"tag\": "felting",\n    \"popularity\": 6303\n  },\n  {\n    \"tag\": "compurgatorial",\n    \"popularity\": 6298\n  },\n  {\n    \"tag\": "unclead",\n    \"popularity\": 6292\n  },\n  {\n    \"tag\": "stockish",\n    \"popularity\": 6286\n  },\n  {\n    \"tag\": "mulligatawny",\n    \"popularity\": 6281\n  },\n  {\n    \"tag\": "Monotheletism",\n    \"popularity\": 6275\n  },\n  {\n    \"tag\": "lutanist",\n    \"popularity\": 6269\n  },\n  {\n    \"tag\": "gluttonize",\n    \"popularity\": 6264\n  },\n  {\n    \"tag\": "hackneyed",\n    \"popularity\": 6258\n  },\n  {\n    \"tag\": "yield",\n    \"popularity\": 6253\n  },\n  {\n    \"tag\": "sulphonamido",\n    \"popularity\": 6247\n  },\n  {\n    \"tag\": "granulative",\n    \"popularity\": 6241\n  },\n  {\n    \"tag\": "swingy",\n    \"popularity\": 6236\n  },\n  {\n    \"tag\": "Desmidiales",\n    \"popularity\": 6230\n  },\n  {\n    \"tag\": "tootlish",\n    \"popularity\": 6224\n  },\n  {\n    \"tag\": "unsatisfiedly",\n    \"popularity\": 6219\n  },\n  {\n    \"tag\": "burucha",\n    \"popularity\": 6213\n  },\n  {\n    \"tag\": "premeditatingly",\n    \"popularity\": 6208\n  },\n  {\n    \"tag\": "cowrie",\n    \"popularity\": 6202\n  },\n  {\n    \"tag\": "pleurolysis",\n    \"popularity\": 6197\n  },\n  {\n    \"tag\": "nationalist",\n    \"popularity\": 6191\n  },\n  {\n    \"tag\": "Pholadacea",\n    \"popularity\": 6186\n  },\n  {\n    \"tag\": "anakrousis",\n    \"popularity\": 6180\n  },\n  {\n    \"tag\": "proctorial",\n    \"popularity\": 6175\n  },\n  {\n    \"tag\": "cavillation",\n    \"popularity\": 6169\n  },\n  {\n    \"tag\": "cervicobregmatic",\n    \"popularity\": 6163\n  },\n  {\n    \"tag\": "interspecific",\n    \"popularity\": 6158\n  },\n  {\n    \"tag\": "Teutonity",\n    \"popularity\": 6152\n  },\n  {\n    \"tag\": "snakeholing",\n    \"popularity\": 6147\n  },\n  {\n    \"tag\": "balcony",\n    \"popularity\": 6142\n  },\n  {\n    \"tag\": "latchless",\n    \"popularity\": 6136\n  },\n  {\n    \"tag\": "Mithraea",\n    \"popularity\": 6131\n  },\n  {\n    \"tag\": "pseudepigraph",\n    \"popularity\": 6125\n  },\n  {\n    \"tag\": "flosser",\n    \"popularity\": 6120\n  },\n  {\n    \"tag\": "kotyle",\n    \"popularity\": 6114\n  },\n  {\n    \"tag\": "outdo",\n    \"popularity\": 6109\n  },\n  {\n    \"tag\": "interclerical",\n    \"popularity\": 6103\n  },\n  {\n    \"tag\": "aurar",\n    \"popularity\": 6098\n  },\n  {\n    \"tag\": "apophyseal",\n    \"popularity\": 6093\n  },\n  {\n    \"tag\": "Miro",\n    \"popularity\": 6087\n  },\n  {\n    \"tag\": "Priscillian",\n    \"popularity\": 6082\n  },\n  {\n    \"tag\": "alluvia",\n    \"popularity\": 6076\n  },\n  {\n    \"tag\": "exordize",\n    \"popularity\": 6071\n  },\n  {\n    \"tag\": "breakage",\n    \"popularity\": 6066\n  },\n  {\n    \"tag\": "unclosable",\n    \"popularity\": 6060\n  },\n  {\n    \"tag\": "monocondylous",\n    \"popularity\": 6055\n  },\n  {\n    \"tag\": "dyarchy",\n    \"popularity\": 6050\n  },\n  {\n    \"tag\": "subchelate",\n    \"popularity\": 6044\n  },\n  {\n    \"tag\": "hearsay",\n    \"popularity\": 6039\n  },\n  {\n    \"tag\": "prestigiously",\n    \"popularity\": 6034\n  },\n  {\n    \"tag\": "unimuscular",\n    \"popularity\": 6028\n  },\n  {\n    \"tag\": "lingwort",\n    \"popularity\": 6023\n  },\n  {\n    \"tag\": "jealous",\n    \"popularity\": 6018\n  },\n  {\n    \"tag\": "artilleryman",\n    \"popularity\": 6012\n  },\n  {\n    \"tag\": "phantasmagorially",\n    \"popularity\": 6007\n  },\n  {\n    \"tag\": "stagnum",\n    \"popularity\": 6002\n  },\n  {\n    \"tag\": "organotropism shatteringly",\n    \"popularity\": 5997\n  },\n  {\n    \"tag\": "Mytilus Hebraist",\n    \"popularity\": 5991\n  },\n  {\n    \"tag\": "returf",\n    \"popularity\": 5986\n  },\n  {\n    \"tag\": "townfolk",\n    \"popularity\": 5981\n  },\n  {\n    \"tag\": "propitiative",\n    \"popularity\": 5976\n  },\n  {\n    \"tag\": "Anita unsullied",\n    \"popularity\": 5970\n  },\n  {\n    \"tag\": "bandoleered",\n    \"popularity\": 5965\n  },\n  {\n    \"tag\": "cubby",\n    \"popularity\": 5960\n  },\n  {\n    \"tag\": "Hexanchus",\n    \"popularity\": 5955\n  },\n  {\n    \"tag\": "circuminsular",\n    \"popularity\": 5949\n  },\n  {\n    \"tag\": "chamberletted eumycete",\n    \"popularity\": 5944\n  },\n  {\n    \"tag\": "secure",\n    \"popularity\": 5939\n  },\n  {\n    \"tag\": "Edwardean",\n    \"popularity\": 5934\n  },\n  {\n    \"tag\": "strenth",\n    \"popularity\": 5929\n  },\n  {\n    \"tag\": "exhaustless",\n    \"popularity\": 5923\n  },\n  {\n    \"tag\": "electioneerer",\n    \"popularity\": 5918\n  },\n  {\n    \"tag\": "estoile",\n    \"popularity\": 5913\n  },\n  {\n    \"tag\": "redden",\n    \"popularity\": 5908\n  },\n  {\n    \"tag\": "solicitee",\n    \"popularity\": 5903\n  },\n  {\n    \"tag\": "nonpatented",\n    \"popularity\": 5898\n  },\n  {\n    \"tag\": "lemming",\n    \"popularity\": 5893\n  },\n  {\n    \"tag\": "marled subalate",\n    \"popularity\": 5887\n  },\n  {\n    \"tag\": "premial horizonward",\n    \"popularity\": 5882\n  },\n  {\n    \"tag\": "nonrefueling",\n    \"popularity\": 5877\n  },\n  {\n    \"tag\": "rupturewort",\n    \"popularity\": 5872\n  },\n  {\n    \"tag\": "unfed",\n    \"popularity\": 5867\n  },\n  {\n    \"tag\": "empanelment",\n    \"popularity\": 5862\n  },\n  {\n    \"tag\": "isoosmosis",\n    \"popularity\": 5857\n  },\n  {\n    \"tag\": "jipijapa",\n    \"popularity\": 5852\n  },\n  {\n    \"tag\": "Fiji",\n    \"popularity\": 5847\n  },\n  {\n    \"tag\": "interferant",\n    \"popularity\": 5842\n  },\n  {\n    \"tag\": "reconstitution",\n    \"popularity\": 5837\n  },\n  {\n    \"tag\": "dockyardman",\n    \"popularity\": 5832\n  },\n  {\n    \"tag\": "dolichopodous",\n    \"popularity\": 5826\n  },\n  {\n    \"tag\": "whiteworm",\n    \"popularity\": 5821\n  },\n  {\n    \"tag\": "atheistically",\n    \"popularity\": 5816\n  },\n  {\n    \"tag\": "nonconcern",\n    \"popularity\": 5811\n  },\n  {\n    \"tag\": "scarabaeidoid",\n    \"popularity\": 5806\n  },\n  {\n    \"tag\": "triumviri",\n    \"popularity\": 5801\n  },\n  {\n    \"tag\": "rakit",\n    \"popularity\": 5796\n  },\n  {\n    \"tag\": "leecheater",\n    \"popularity\": 5791\n  },\n  {\n    \"tag\": "Arthrostraca",\n    \"popularity\": 5786\n  },\n  {\n    \"tag\": "upknit",\n    \"popularity\": 5781\n  },\n  {\n    \"tag\": "tymbalon",\n    \"popularity\": 5776\n  },\n  {\n    \"tag\": "inventurous",\n    \"popularity\": 5771\n  },\n  {\n    \"tag\": "perradiate",\n    \"popularity\": 5766\n  },\n  {\n    \"tag\": "seer",\n    \"popularity\": 5762\n  },\n  {\n    \"tag\": "Auricularia",\n    \"popularity\": 5757\n  },\n  {\n    \"tag\": "wettish exclusivity",\n    \"popularity\": 5752\n  },\n  {\n    \"tag\": "arteriosympathectomy",\n    \"popularity\": 5747\n  },\n  {\n    \"tag\": "tunlike",\n    \"popularity\": 5742\n  },\n  {\n    \"tag\": "cephalocercal",\n    \"popularity\": 5737\n  },\n  {\n    \"tag\": "meaninglessness",\n    \"popularity\": 5732\n  },\n  {\n    \"tag\": "fountful",\n    \"popularity\": 5727\n  },\n  {\n    \"tag\": "appraisement",\n    \"popularity\": 5722\n  },\n  {\n    \"tag\": "geniculated",\n    \"popularity\": 5717\n  },\n  {\n    \"tag\": "rotator",\n    \"popularity\": 5712\n  },\n  {\n    \"tag\": "foremarch biography",\n    \"popularity\": 5707\n  },\n  {\n    \"tag\": "arid",\n    \"popularity\": 5703\n  },\n  {\n    \"tag\": "inapprehensible",\n    \"popularity\": 5698\n  },\n  {\n    \"tag\": "chlorosulphonic",\n    \"popularity\": 5693\n  },\n  {\n    \"tag\": "braguette",\n    \"popularity\": 5688\n  },\n  {\n    \"tag\": "panophthalmitis",\n    \"popularity\": 5683\n  },\n  {\n    \"tag\": "pro objurgatorily",\n    \"popularity\": 5678\n  },\n  {\n    \"tag\": "zooplasty",\n    \"popularity\": 5673\n  },\n  {\n    \"tag\": "Terebratulidae",\n    \"popularity\": 5669\n  },\n  {\n    \"tag\": "Mahran",\n    \"popularity\": 5664\n  },\n  {\n    \"tag\": "anthologize merocele",\n    \"popularity\": 5659\n  },\n  {\n    \"tag\": "firecracker chiropractic",\n    \"popularity\": 5654\n  },\n  {\n    \"tag\": "tenorist",\n    \"popularity\": 5649\n  },\n  {\n    \"tag\": "amphitene",\n    \"popularity\": 5645\n  },\n  {\n    \"tag\": "silverbush toadstone",\n    \"popularity\": 5640\n  },\n  {\n    \"tag\": "entozoological",\n    \"popularity\": 5635\n  },\n  {\n    \"tag\": "trustlessness",\n    \"popularity\": 5630\n  },\n  {\n    \"tag\": "reassay",\n    \"popularity\": 5625\n  },\n  {\n    \"tag\": "chrysalides",\n    \"popularity\": 5621\n  },\n  {\n    \"tag\": "truncation",\n    \"popularity\": 5616\n  },\n  {\n    \"tag\": "unwavered mausoleal",\n    \"popularity\": 5611\n  },\n  {\n    \"tag\": "unserrated",\n    \"popularity\": 5606\n  },\n  {\n    \"tag\": "frampler",\n    \"popularity\": 5602\n  },\n  {\n    \"tag\": "celestial",\n    \"popularity\": 5597\n  },\n  {\n    \"tag\": "depreter",\n    \"popularity\": 5592\n  },\n  {\n    \"tag\": "retaliate",\n    \"popularity\": 5588\n  },\n  {\n    \"tag\": "decempunctate",\n    \"popularity\": 5583\n  },\n  {\n    \"tag\": "submitter",\n    \"popularity\": 5578\n  },\n  {\n    \"tag\": "phenothiazine",\n    \"popularity\": 5573\n  },\n  {\n    \"tag\": "hobbledehoyish",\n    \"popularity\": 5569\n  },\n  {\n    \"tag\": "erraticness",\n    \"popularity\": 5564\n  },\n  {\n    \"tag\": "ovariodysneuria",\n    \"popularity\": 5559\n  },\n  {\n    \"tag\": "puja",\n    \"popularity\": 5555\n  },\n  {\n    \"tag\": "cesspool",\n    \"popularity\": 5550\n  },\n  {\n    \"tag\": "sonation",\n    \"popularity\": 5545\n  },\n  {\n    \"tag\": "moggan",\n    \"popularity\": 5541\n  },\n  {\n    \"tag\": "overjutting",\n    \"popularity\": 5536\n  },\n  {\n    \"tag\": "cohobate",\n    \"popularity\": 5531\n  },\n  {\n    \"tag\": "Distoma",\n    \"popularity\": 5527\n  },\n  {\n    \"tag\": "Plectognathi",\n    \"popularity\": 5522\n  },\n  {\n    \"tag\": "dumple caliphate",\n    \"popularity\": 5517\n  },\n  {\n    \"tag\": "shiko",\n    \"popularity\": 5513\n  },\n  {\n    \"tag\": "downness",\n    \"popularity\": 5508\n  },\n  {\n    \"tag\": "whippletree",\n    \"popularity\": 5504\n  },\n  {\n    \"tag\": "nymphaeum",\n    \"popularity\": 5499\n  },\n  {\n    \"tag\": "there trest",\n    \"popularity\": 5494\n  },\n  {\n    \"tag\": "psychrometer",\n    \"popularity\": 5490\n  },\n  {\n    \"tag\": "pyelograph",\n    \"popularity\": 5485\n  },\n  {\n    \"tag\": "unsalvable",\n    \"popularity\": 5481\n  },\n  {\n    \"tag\": "bescreen",\n    \"popularity\": 5476\n  },\n  {\n    \"tag\": "cushy",\n    \"popularity\": 5471\n  },\n  {\n    \"tag\": "plicatolobate",\n    \"popularity\": 5467\n  },\n  {\n    \"tag\": "lakie",\n    \"popularity\": 5462\n  },\n  {\n    \"tag\": "anthropodeoxycholic",\n    \"popularity\": 5458\n  },\n  {\n    \"tag\": "resatisfaction",\n    \"popularity\": 5453\n  },\n  {\n    \"tag\": "unravelment unaccidental",\n    \"popularity\": 5449\n  },\n  {\n    \"tag\": "telewriter monogeneous",\n    \"popularity\": 5444\n  },\n  {\n    \"tag\": "unsabred",\n    \"popularity\": 5440\n  },\n  {\n    \"tag\": "startlingly",\n    \"popularity\": 5435\n  },\n  {\n    \"tag\": "Aralia",\n    \"popularity\": 5431\n  },\n  {\n    \"tag\": "alamonti",\n    \"popularity\": 5426\n  },\n  {\n    \"tag\": "Franklinization",\n    \"popularity\": 5422\n  },\n  {\n    \"tag\": "parliament",\n    \"popularity\": 5417\n  },\n  {\n    \"tag\": "schoolkeeper",\n    \"popularity\": 5413\n  },\n  {\n    \"tag\": "nonsociety",\n    \"popularity\": 5408\n  },\n  {\n    \"tag\": "parenthetic",\n    \"popularity\": 5404\n  },\n  {\n    \"tag\": "stog",\n    \"popularity\": 5399\n  },\n  {\n    \"tag\": "Pristipomidae",\n    \"popularity\": 5395\n  },\n  {\n    \"tag\": "exocarp",\n    \"popularity\": 5390\n  },\n  {\n    \"tag\": "monaxonial",\n    \"popularity\": 5386\n  },\n  {\n    \"tag\": "tramroad",\n    \"popularity\": 5381\n  },\n  {\n    \"tag\": "hookah",\n    \"popularity\": 5377\n  },\n  {\n    \"tag\": "saccharonic",\n    \"popularity\": 5372\n  },\n  {\n    \"tag\": "perimetrium",\n    \"popularity\": 5368\n  },\n  {\n    \"tag\": "libelluloid",\n    \"popularity\": 5364\n  },\n  {\n    \"tag\": "overrunningly",\n    \"popularity\": 5359\n  },\n  {\n    \"tag\": "untwister",\n    \"popularity\": 5355\n  },\n  {\n    \"tag\": "ninnyhammer",\n    \"popularity\": 5350\n  },\n  {\n    \"tag\": "metranate",\n    \"popularity\": 5346\n  },\n  {\n    \"tag\": "sarcoblast",\n    \"popularity\": 5341\n  },\n  {\n    \"tag\": "porkish",\n    \"popularity\": 5337\n  },\n  {\n    \"tag\": "chauvinistic",\n    \"popularity\": 5333\n  },\n  {\n    \"tag\": "sexagesimal",\n    \"popularity\": 5328\n  },\n  {\n    \"tag\": "hematogenic",\n    \"popularity\": 5324\n  },\n  {\n    \"tag\": "selfpreservatory",\n    \"popularity\": 5320\n  },\n  {\n    \"tag\": "myelauxe",\n    \"popularity\": 5315\n  },\n  {\n    \"tag\": "triply",\n    \"popularity\": 5311\n  },\n  {\n    \"tag\": "metaphysicous",\n    \"popularity\": 5306\n  },\n  {\n    \"tag\": "vitrinoid",\n    \"popularity\": 5302\n  },\n  {\n    \"tag\": "glabellae",\n    \"popularity\": 5298\n  },\n  {\n    \"tag\": "moonlighter",\n    \"popularity\": 5293\n  },\n  {\n    \"tag\": "monotheistically epexegetical",\n    \"popularity\": 5289\n  },\n  {\n    \"tag\": "pseudolateral",\n    \"popularity\": 5285\n  },\n  {\n    \"tag\": "heptamethylene",\n    \"popularity\": 5280\n  },\n  {\n    \"tag\": "salvadora",\n    \"popularity\": 5276\n  },\n  {\n    \"tag\": "unjovial diphenylthiourea",\n    \"popularity\": 5272\n  },\n  {\n    \"tag\": "thievishness",\n    \"popularity\": 5268\n  },\n  {\n    \"tag\": "unridable",\n    \"popularity\": 5263\n  },\n  {\n    \"tag\": "underhandedly",\n    \"popularity\": 5259\n  },\n  {\n    \"tag\": "fungiform",\n    \"popularity\": 5255\n  },\n  {\n    \"tag\": "scruffle",\n    \"popularity\": 5250\n  },\n  {\n    \"tag\": "preindisposition",\n    \"popularity\": 5246\n  },\n  {\n    \"tag\": "Amadis",\n    \"popularity\": 5242\n  },\n  {\n    \"tag\": "Culex",\n    \"popularity\": 5238\n  },\n  {\n    \"tag\": "churning",\n    \"popularity\": 5233\n  },\n  {\n    \"tag\": "imperite",\n    \"popularity\": 5229\n  },\n  {\n    \"tag\": "levorotation",\n    \"popularity\": 5225\n  },\n  {\n    \"tag\": "barbate",\n    \"popularity\": 5221\n  },\n  {\n    \"tag\": "knotwort",\n    \"popularity\": 5216\n  },\n  {\n    \"tag\": "gypsiferous",\n    \"popularity\": 5212\n  },\n  {\n    \"tag\": "tourmalinic",\n    \"popularity\": 5208\n  },\n  {\n    \"tag\": "helleboric",\n    \"popularity\": 5204\n  },\n  {\n    \"tag\": "pneumograph",\n    \"popularity\": 5199\n  },\n  {\n    \"tag\": "Peltigeraceae",\n    \"popularity\": 5195\n  },\n  {\n    \"tag\": "busine",\n    \"popularity\": 5191\n  },\n  {\n    \"tag\": "Ailuridae",\n    \"popularity\": 5187\n  },\n  {\n    \"tag\": "azotate",\n    \"popularity\": 5183\n  },\n  {\n    \"tag\": "unlikable",\n    \"popularity\": 5178\n  },\n  {\n    \"tag\": "sloyd",\n    \"popularity\": 5174\n  },\n  {\n    \"tag\": "biblioclasm",\n    \"popularity\": 5170\n  },\n  {\n    \"tag\": "Seres",\n    \"popularity\": 5166\n  },\n  {\n    \"tag\": "unaccurateness",\n    \"popularity\": 5162\n  },\n  {\n    \"tag\": "scrollwise",\n    \"popularity\": 5157\n  },\n  {\n    \"tag\": "flandowser",\n    \"popularity\": 5153\n  },\n  {\n    \"tag\": "unblackened",\n    \"popularity\": 5149\n  },\n  {\n    \"tag\": "schistosternia",\n    \"popularity\": 5145\n  },\n  {\n    \"tag\": "fuse",\n    \"popularity\": 5141\n  },\n  {\n    \"tag\": "narthecal",\n    \"popularity\": 5137\n  },\n  {\n    \"tag\": "Cueva",\n    \"popularity\": 5133\n  },\n  {\n    \"tag\": "appositeness",\n    \"popularity\": 5128\n  },\n  {\n    \"tag\": "proindustrial",\n    \"popularity\": 5124\n  },\n  {\n    \"tag\": "dermatorrhoea",\n    \"popularity\": 5120\n  },\n  {\n    \"tag\": "oxyurous tendential",\n    \"popularity\": 5116\n  },\n  {\n    \"tag\": "isopurpurin",\n    \"popularity\": 5112\n  },\n  {\n    \"tag\": "impose",\n    \"popularity\": 5108\n  },\n  {\n    \"tag\": "wordsmanship",\n    \"popularity\": 5104\n  },\n  {\n    \"tag\": "saturator",\n    \"popularity\": 5100\n  },\n  {\n    \"tag\": "Nordicity",\n    \"popularity\": 5096\n  },\n  {\n    \"tag\": "interaccuse",\n    \"popularity\": 5092\n  },\n  {\n    \"tag\": "acridinic",\n    \"popularity\": 5087\n  },\n  {\n    \"tag\": "scholion",\n    \"popularity\": 5083\n  },\n  {\n    \"tag\": "pseudoaconitine",\n    \"popularity\": 5079\n  },\n  {\n    \"tag\": "doctorial",\n    \"popularity\": 5075\n  },\n  {\n    \"tag\": "Etchimin",\n    \"popularity\": 5071\n  },\n  {\n    \"tag\": "oliviform",\n    \"popularity\": 5067\n  },\n  {\n    \"tag\": "Pele",\n    \"popularity\": 5063\n  },\n  {\n    \"tag\": "Chiromantis Progymnasium",\n    \"popularity\": 5059\n  },\n  {\n    \"tag\": "toxosis",\n    \"popularity\": 5055\n  },\n  {\n    \"tag\": "spadilla",\n    \"popularity\": 5051\n  },\n  {\n    \"tag\": "Actinopterygii",\n    \"popularity\": 5047\n  },\n  {\n    \"tag\": "untiring",\n    \"popularity\": 5043\n  },\n  {\n    \"tag\": "butyral",\n    \"popularity\": 5039\n  },\n  {\n    \"tag\": "Gymnoderinae",\n    \"popularity\": 5035\n  },\n  {\n    \"tag\": "testudo",\n    \"popularity\": 5031\n  },\n  {\n    \"tag\": "frigorify",\n    \"popularity\": 5027\n  },\n  {\n    \"tag\": "aliency",\n    \"popularity\": 5023\n  },\n  {\n    \"tag\": "jargon",\n    \"popularity\": 5019\n  },\n  {\n    \"tag\": "counterservice",\n    \"popularity\": 5015\n  },\n  {\n    \"tag\": "isostrychnine",\n    \"popularity\": 5011\n  },\n  {\n    \"tag\": "tellership",\n    \"popularity\": 5007\n  },\n  {\n    \"tag\": "miscegenetic",\n    \"popularity\": 5003\n  },\n  {\n    \"tag\": "sorcer",\n    \"popularity\": 4999\n  },\n  {\n    \"tag\": "tilewright",\n    \"popularity\": 4995\n  },\n  {\n    \"tag\": "cyanoplastid",\n    \"popularity\": 4991\n  },\n  {\n    \"tag\": "fluxionally",\n    \"popularity\": 4987\n  },\n  {\n    \"tag\": "proudhearted",\n    \"popularity\": 4983\n  },\n  {\n    \"tag\": "blithely",\n    \"popularity\": 4979\n  },\n  {\n    \"tag\": "jestproof",\n    \"popularity\": 4975\n  },\n  {\n    \"tag\": "jestwise",\n    \"popularity\": 4971\n  },\n  {\n    \"tag\": "nonassimilable",\n    \"popularity\": 4967\n  },\n  {\n    \"tag\": "compurgation",\n    \"popularity\": 4964\n  },\n  {\n    \"tag\": "unhate",\n    \"popularity\": 4960\n  },\n  {\n    \"tag\": "haplodonty",\n    \"popularity\": 4956\n  },\n  {\n    \"tag\": "cardholder",\n    \"popularity\": 4952\n  },\n  {\n    \"tag\": "rainlight megohmmeter overstout",\n    \"popularity\": 4948\n  },\n  {\n    \"tag\": "itchless",\n    \"popularity\": 4944\n  },\n  {\n    \"tag\": "begiggle",\n    \"popularity\": 4940\n  },\n  {\n    \"tag\": "chromatosphere",\n    \"popularity\": 4936\n  },\n  {\n    \"tag\": "typicality",\n    \"popularity\": 4932\n  },\n  {\n    \"tag\": "overgrown",\n    \"popularity\": 4928\n  },\n  {\n    \"tag\": "envolume",\n    \"popularity\": 4925\n  },\n  {\n    \"tag\": "pachycholia",\n    \"popularity\": 4921\n  },\n  {\n    \"tag\": "passageable",\n    \"popularity\": 4917\n  },\n  {\n    \"tag\": "pathopoiesis",\n    \"popularity\": 4913\n  },\n  {\n    \"tag\": "overbreak",\n    \"popularity\": 4909\n  },\n  {\n    \"tag\": "satyric",\n    \"popularity\": 4905\n  },\n  {\n    \"tag\": "unaudited",\n    \"popularity\": 4901\n  },\n  {\n    \"tag\": "whimble",\n    \"popularity\": 4898\n  },\n  {\n    \"tag\": "pressureless",\n    \"popularity\": 4894\n  },\n  {\n    \"tag\": "Selene",\n    \"popularity\": 4890\n  },\n  {\n    \"tag\": "slithery",\n    \"popularity\": 4886\n  },\n  {\n    \"tag\": "nondisfigurement",\n    \"popularity\": 4882\n  },\n  {\n    \"tag\": "overdelicious",\n    \"popularity\": 4878\n  },\n  {\n    \"tag\": "Perca",\n    \"popularity\": 4875\n  },\n  {\n    \"tag\": "Palladium",\n    \"popularity\": 4871\n  },\n  {\n    \"tag\": "insagacity",\n    \"popularity\": 4867\n  },\n  {\n    \"tag\": "peristoma",\n    \"popularity\": 4863\n  },\n  {\n    \"tag\": "uncreativeness",\n    \"popularity\": 4859\n  },\n  {\n    \"tag\": "incomparability surfboarding",\n    \"popularity\": 4856\n  },\n  {\n    \"tag\": "bacillar",\n    \"popularity\": 4852\n  },\n  {\n    \"tag\": "ulcerative",\n    \"popularity\": 4848\n  },\n  {\n    \"tag\": "stychomythia",\n    \"popularity\": 4844\n  },\n  {\n    \"tag\": "sesma somatics nonentry",\n    \"popularity\": 4840\n  },\n  {\n    \"tag\": "unsepulchred",\n    \"popularity\": 4837\n  },\n  {\n    \"tag\": "cephalanthium",\n    \"popularity\": 4833\n  },\n  {\n    \"tag\": "Asiaticization",\n    \"popularity\": 4829\n  },\n  {\n    \"tag\": "killeen",\n    \"popularity\": 4825\n  },\n  {\n    \"tag\": "Pseudococcus",\n    \"popularity\": 4822\n  },\n  {\n    \"tag\": "untractable",\n    \"popularity\": 4818\n  },\n  {\n    \"tag\": "apolegamic",\n    \"popularity\": 4814\n  },\n  {\n    \"tag\": "hyperpnea",\n    \"popularity\": 4810\n  },\n  {\n    \"tag\": "martyrolatry",\n    \"popularity\": 4807\n  },\n  {\n    \"tag\": "Sarmatic",\n    \"popularity\": 4803\n  },\n  {\n    \"tag\": "nonsurface",\n    \"popularity\": 4799\n  },\n  {\n    \"tag\": "adjoined",\n    \"popularity\": 4796\n  },\n  {\n    \"tag\": "vasiform",\n    \"popularity\": 4792\n  },\n  {\n    \"tag\": "tastelessness",\n    \"popularity\": 4788\n  },\n  {\n    \"tag\": "rumbo",\n    \"popularity\": 4784\n  },\n  {\n    \"tag\": "subdititious",\n    \"popularity\": 4781\n  },\n  {\n    \"tag\": "reparticipation",\n    \"popularity\": 4777\n  },\n  {\n    \"tag\": "Yorkshireism",\n    \"popularity\": 4773\n  },\n  {\n    \"tag\": "outcrow",\n    \"popularity\": 4770\n  },\n  {\n    \"tag\": "casserole",\n    \"popularity\": 4766\n  },\n  {\n    \"tag\": "semideltaic",\n    \"popularity\": 4762\n  },\n  {\n    \"tag\": "freemason",\n    \"popularity\": 4759\n  },\n  {\n    \"tag\": "catkin",\n    \"popularity\": 4755\n  },\n  {\n    \"tag\": "conscient",\n    \"popularity\": 4751\n  },\n  {\n    \"tag\": "reliably",\n    \"popularity\": 4748\n  },\n  {\n    \"tag\": "Telembi",\n    \"popularity\": 4744\n  },\n  {\n    \"tag\": "hide",\n    \"popularity\": 4740\n  },\n  {\n    \"tag\": "social",\n    \"popularity\": 4737\n  },\n  {\n    \"tag\": "ichneutic",\n    \"popularity\": 4733\n  },\n  {\n    \"tag\": "polypotome blouse pentagrammatic",\n    \"popularity\": 4729\n  },\n  {\n    \"tag\": "airdrome pesthole",\n    \"popularity\": 4726\n  },\n  {\n    \"tag\": "unportended",\n    \"popularity\": 4722\n  },\n  {\n    \"tag\": "sheerly",\n    \"popularity\": 4719\n  },\n  {\n    \"tag\": "acardiac",\n    \"popularity\": 4715\n  },\n  {\n    \"tag\": "fetor",\n    \"popularity\": 4711\n  },\n  {\n    \"tag\": "storax",\n    \"popularity\": 4708\n  },\n  {\n    \"tag\": "syndactylic",\n    \"popularity\": 4704\n  },\n  {\n    \"tag\": "otiatrics",\n    \"popularity\": 4700\n  },\n  {\n    \"tag\": "range",\n    \"popularity\": 4697\n  },\n  {\n    \"tag\": "branchway",\n    \"popularity\": 4693\n  },\n  {\n    \"tag\": "beatific",\n    \"popularity\": 4690\n  },\n  {\n    \"tag\": "Rugosa",\n    \"popularity\": 4686\n  },\n  {\n    \"tag\": "rafty",\n    \"popularity\": 4682\n  },\n  {\n    \"tag\": "gapy",\n    \"popularity\": 4679\n  },\n  {\n    \"tag\": "heterocercal",\n    \"popularity\": 4675\n  },\n  {\n    \"tag\": "actinopterygious",\n    \"popularity\": 4672\n  },\n  {\n    \"tag\": "glauconite",\n    \"popularity\": 4668\n  },\n  {\n    \"tag\": "limbless priest",\n    \"popularity\": 4665\n  },\n  {\n    \"tag\": "chrysene",\n    \"popularity\": 4661\n  },\n  {\n    \"tag\": "isentropic",\n    \"popularity\": 4658\n  },\n  {\n    \"tag\": "lairdess",\n    \"popularity\": 4654\n  },\n  {\n    \"tag\": "butterhead choliambic",\n    \"popularity\": 4650\n  },\n  {\n    \"tag\": "hexaseme",\n    \"popularity\": 4647\n  },\n  {\n    \"tag\": "treeify",\n    \"popularity\": 4643\n  },\n  {\n    \"tag\": "coronetted fructify",\n    \"popularity\": 4640\n  },\n  {\n    \"tag\": "admiralty",\n    \"popularity\": 4636\n  },\n  {\n    \"tag\": "Flosculariidae",\n    \"popularity\": 4633\n  },\n  {\n    \"tag\": "limaceous",\n    \"popularity\": 4629\n  },\n  {\n    \"tag\": "subterconscious",\n    \"popularity\": 4626\n  },\n  {\n    \"tag\": "stayless",\n    \"popularity\": 4622\n  },\n  {\n    \"tag\": "psha",\n    \"popularity\": 4619\n  },\n  {\n    \"tag\": "Mediterraneanize",\n    \"popularity\": 4615\n  },\n  {\n    \"tag\": "impenetrably",\n    \"popularity\": 4612\n  },\n  {\n    \"tag\": "Myrmeleonidae",\n    \"popularity\": 4608\n  },\n  {\n    \"tag\": "germander",\n    \"popularity\": 4605\n  },\n  {\n    \"tag\": "Buri",\n    \"popularity\": 4601\n  },\n  {\n    \"tag\": "papyrotamia",\n    \"popularity\": 4598\n  },\n  {\n    \"tag\": "Toxylon",\n    \"popularity\": 4594\n  },\n  {\n    \"tag\": "batatilla",\n    \"popularity\": 4591\n  },\n  {\n    \"tag\": "fabella assumer",\n    \"popularity\": 4587\n  },\n  {\n    \"tag\": "macromethod",\n    \"popularity\": 4584\n  },\n  {\n    \"tag\": "Blechnum",\n    \"popularity\": 4580\n  },\n  {\n    \"tag\": "pantography",\n    \"popularity\": 4577\n  },\n  {\n    \"tag\": "seminovel",\n    \"popularity\": 4574\n  },\n  {\n    \"tag\": "disembarrassment",\n    \"popularity\": 4570\n  },\n  {\n    \"tag\": "bushmaking",\n    \"popularity\": 4567\n  },\n  {\n    \"tag\": "neurosis",\n    \"popularity\": 4563\n  },\n  {\n    \"tag\": "Animalia",\n    \"popularity\": 4560\n  },\n  {\n    \"tag\": "Bernice",\n    \"popularity\": 4556\n  },\n  {\n    \"tag\": "wisen",\n    \"popularity\": 4553\n  },\n  {\n    \"tag\": "subhymenium",\n    \"popularity\": 4549\n  },\n  {\n    \"tag\": "esophagomycosis",\n    \"popularity\": 4546\n  },\n  {\n    \"tag\": "wireworks",\n    \"popularity\": 4543\n  },\n  {\n    \"tag\": "Sabellidae",\n    \"popularity\": 4539\n  },\n  {\n    \"tag\": "fustianish",\n    \"popularity\": 4536\n  },\n  {\n    \"tag\": "professively",\n    \"popularity\": 4532\n  },\n  {\n    \"tag\": "overcorruptly",\n    \"popularity\": 4529\n  },\n  {\n    \"tag\": "overcreep",\n    \"popularity\": 4526\n  },\n  {\n    \"tag\": "Castilloa",\n    \"popularity\": 4522\n  },\n  {\n    \"tag\": "forelady Georgie",\n    \"popularity\": 4519\n  },\n  {\n    \"tag\": "outsider",\n    \"popularity\": 4515\n  },\n  {\n    \"tag\": "Enukki",\n    \"popularity\": 4512\n  },\n  {\n    \"tag\": "gypsy",\n    \"popularity\": 4509\n  },\n  {\n    \"tag\": "Passamaquoddy",\n    \"popularity\": 4505\n  },\n  {\n    \"tag\": "reposit",\n    \"popularity\": 4502\n  },\n  {\n    \"tag\": "overtenderness",\n    \"popularity\": 4499\n  },\n  {\n    \"tag\": "keratome",\n    \"popularity\": 4495\n  },\n  {\n    \"tag\": "interclavicular hypermonosyllable Susanna",\n    \"popularity\": 4492\n  },\n  {\n    \"tag\": "mispropose",\n    \"popularity\": 4489\n  },\n  {\n    \"tag\": "Membranipora",\n    \"popularity\": 4485\n  },\n  {\n    \"tag\": "lampad",\n    \"popularity\": 4482\n  },\n  {\n    \"tag\": "header",\n    \"popularity\": 4479\n  },\n  {\n    \"tag\": "triseriate",\n    \"popularity\": 4475\n  },\n  {\n    \"tag\": "distrainment",\n    \"popularity\": 4472\n  },\n  {\n    \"tag\": "staphyloplastic",\n    \"popularity\": 4469\n  },\n  {\n    \"tag\": "outscour",\n    \"popularity\": 4465\n  },\n  {\n    \"tag\": "tallowmaking",\n    \"popularity\": 4462\n  },\n  {\n    \"tag\": "plugger",\n    \"popularity\": 4459\n  },\n  {\n    \"tag\": "fashionize",\n    \"popularity\": 4455\n  },\n  {\n    \"tag\": "puzzle",\n    \"popularity\": 4452\n  },\n  {\n    \"tag\": "imbrue",\n    \"popularity\": 4449\n  },\n  {\n    \"tag\": "osteoblast",\n    \"popularity\": 4445\n  },\n  {\n    \"tag\": "Hydrocores",\n    \"popularity\": 4442\n  },\n  {\n    \"tag\": "Lutra",\n    \"popularity\": 4439\n  },\n  {\n    \"tag\": "upridge scarfy",\n    \"popularity\": 4435\n  },\n  {\n    \"tag\": "ancon taffle",\n    \"popularity\": 4432\n  },\n  {\n    \"tag\": "impest",\n    \"popularity\": 4429\n  },\n  {\n    \"tag\": "uncollatedness",\n    \"popularity\": 4426\n  },\n  {\n    \"tag\": "hypersensitize",\n    \"popularity\": 4422\n  },\n  {\n    \"tag\": "autographically",\n    \"popularity\": 4419\n  },\n  {\n    \"tag\": "louther",\n    \"popularity\": 4416\n  },\n  {\n    \"tag\": "Ollie",\n    \"popularity\": 4413\n  },\n  {\n    \"tag\": "recompensate",\n    \"popularity\": 4409\n  },\n  {\n    \"tag\": "Shan",\n    \"popularity\": 4406\n  },\n  {\n    \"tag\": "brachycnemic",\n    \"popularity\": 4403\n  },\n  {\n    \"tag\": "Carinatae",\n    \"popularity\": 4399\n  },\n  {\n    \"tag\": "geotherm",\n    \"popularity\": 4396\n  },\n  {\n    \"tag\": "sawback",\n    \"popularity\": 4393\n  },\n  {\n    \"tag\": "Novatianist",\n    \"popularity\": 4390\n  },\n  {\n    \"tag\": "reapproach",\n    \"popularity\": 4387\n  },\n  {\n    \"tag\": "myelopoietic",\n    \"popularity\": 4383\n  },\n  {\n    \"tag\": "cyanin",\n    \"popularity\": 4380\n  },\n  {\n    \"tag\": "unsmutted",\n    \"popularity\": 4377\n  },\n  {\n    \"tag\": "nonpapist",\n    \"popularity\": 4374\n  },\n  {\n    \"tag\": "transbaikalian",\n    \"popularity\": 4370\n  },\n  {\n    \"tag\": "connately",\n    \"popularity\": 4367\n  },\n  {\n    \"tag\": "tenderize iterance",\n    \"popularity\": 4364\n  },\n  {\n    \"tag\": "hydrostatical",\n    \"popularity\": 4361\n  },\n  {\n    \"tag\": "unflag",\n    \"popularity\": 4358\n  },\n  {\n    \"tag\": "translate",\n    \"popularity\": 4354\n  },\n  {\n    \"tag\": "Scorzonera",\n    \"popularity\": 4351\n  },\n  {\n    \"tag\": "uncomforted",\n    \"popularity\": 4348\n  },\n  {\n    \"tag\": "risser varied",\n    \"popularity\": 4345\n  },\n  {\n    \"tag\": "plumbate",\n    \"popularity\": 4342\n  },\n  {\n    \"tag\": "Usneaceae",\n    \"popularity\": 4338\n  },\n  {\n    \"tag\": "fohat",\n    \"popularity\": 4335\n  },\n  {\n    \"tag\": "slagging",\n    \"popularity\": 4332\n  },\n  {\n    \"tag\": "superserious",\n    \"popularity\": 4329\n  },\n  {\n    \"tag\": "theocracy",\n    \"popularity\": 4326\n  },\n  {\n    \"tag\": "valonia",\n    \"popularity\": 4323\n  },\n  {\n    \"tag\": "Sapindales",\n    \"popularity\": 4319\n  },\n  {\n    \"tag\": "palaeozoologist",\n    \"popularity\": 4316\n  },\n  {\n    \"tag\": "yalb",\n    \"popularity\": 4313\n  },\n  {\n    \"tag\": "unviewed",\n    \"popularity\": 4310\n  },\n  {\n    \"tag\": "polyarteritis",\n    \"popularity\": 4307\n  },\n  {\n    \"tag\": "vectorial",\n    \"popularity\": 4304\n  },\n  {\n    \"tag\": "skimpingly",\n    \"popularity\": 4301\n  },\n  {\n    \"tag\": "athort",\n    \"popularity\": 4297\n  },\n  {\n    \"tag\": "tribofluorescence",\n    \"popularity\": 4294\n  },\n  {\n    \"tag\": "benzonitrol",\n    \"popularity\": 4291\n  },\n  {\n    \"tag\": "swiller subobtuse subjacency",\n    \"popularity\": 4288\n  },\n  {\n    \"tag\": "uncompassed",\n    \"popularity\": 4285\n  },\n  {\n    \"tag\": "cacochymia",\n    \"popularity\": 4282\n  },\n  {\n    \"tag\": "commensalist butadiene",\n    \"popularity\": 4279\n  },\n  {\n    \"tag\": "culpable",\n    \"popularity\": 4276\n  },\n  {\n    \"tag\": "contributive",\n    \"popularity\": 4273\n  },\n  {\n    \"tag\": "attemperately",\n    \"popularity\": 4269\n  },\n  {\n    \"tag\": "spelt",\n    \"popularity\": 4266\n  },\n  {\n    \"tag\": "exoneration",\n    \"popularity\": 4263\n  },\n  {\n    \"tag\": "antivivisectionist",\n    \"popularity\": 4260\n  },\n  {\n    \"tag\": "granitification",\n    \"popularity\": 4257\n  },\n  {\n    \"tag\": "palladize",\n    \"popularity\": 4254\n  },\n  {\n    \"tag\": "marksmanship",\n    \"popularity\": 4251\n  },\n  {\n    \"tag\": "bullydom",\n    \"popularity\": 4248\n  },\n  {\n    \"tag\": "spirality",\n    \"popularity\": 4245\n  },\n  {\n    \"tag\": "caliginous",\n    \"popularity\": 4242\n  },\n  {\n    \"tag\": "reportedly",\n    \"popularity\": 4239\n  },\n  {\n    \"tag\": "polyad",\n    \"popularity\": 4236\n  },\n  {\n    \"tag\": "arthroempyesis",\n    \"popularity\": 4233\n  },\n  {\n    \"tag\": "semibay facultatively",\n    \"popularity\": 4229\n  },\n  {\n    \"tag\": "metastatically",\n    \"popularity\": 4226\n  },\n  {\n    \"tag\": "prophetically",\n    \"popularity\": 4223\n  },\n  {\n    \"tag\": "Linguatula elapid",\n    \"popularity\": 4220\n  },\n  {\n    \"tag\": "pyknatom",\n    \"popularity\": 4217\n  },\n  {\n    \"tag\": "centimeter",\n    \"popularity\": 4214\n  },\n  {\n    \"tag\": "mensurate",\n    \"popularity\": 4211\n  },\n  {\n    \"tag\": "migraine",\n    \"popularity\": 4208\n  },\n  {\n    \"tag\": "pentagamist",\n    \"popularity\": 4205\n  },\n  {\n    \"tag\": "querken",\n    \"popularity\": 4202\n  },\n  {\n    \"tag\": "ambulance",\n    \"popularity\": 4199\n  },\n  {\n    \"tag\": "Stokavian",\n    \"popularity\": 4196\n  },\n  {\n    \"tag\": "malvasian",\n    \"popularity\": 4193\n  },\n  {\n    \"tag\": "uncouthsome",\n    \"popularity\": 4190\n  },\n  {\n    \"tag\": "readable",\n    \"popularity\": 4187\n  },\n  {\n    \"tag\": "enlodge",\n    \"popularity\": 4184\n  },\n  {\n    \"tag\": "plasterwise Appendiculariidae perspectograph",\n    \"popularity\": 4181\n  },\n  {\n    \"tag\": "inkweed",\n    \"popularity\": 4178\n  },\n  {\n    \"tag\": "streep",\n    \"popularity\": 4175\n  },\n  {\n    \"tag\": "diadelphian cultured",\n    \"popularity\": 4172\n  },\n  {\n    \"tag\": "hymenopterous",\n    \"popularity\": 4169\n  },\n  {\n    \"tag\": "unexorableness",\n    \"popularity\": 4166\n  },\n  {\n    \"tag\": "cascaron",\n    \"popularity\": 4163\n  },\n  {\n    \"tag\": "undaintiness",\n    \"popularity\": 4160\n  },\n  {\n    \"tag\": "Curtana",\n    \"popularity\": 4157\n  },\n  {\n    \"tag\": "scurvied",\n    \"popularity\": 4154\n  },\n  {\n    \"tag\": "molluscoidal",\n    \"popularity\": 4151\n  },\n  {\n    \"tag\": "yurt",\n    \"popularity\": 4148\n  },\n  {\n    \"tag\": "deciduitis",\n    \"popularity\": 4145\n  },\n  {\n    \"tag\": "creephole",\n    \"popularity\": 4142\n  },\n  {\n    \"tag\": "quatrefeuille",\n    \"popularity\": 4139\n  },\n  {\n    \"tag\": "bicapitate adenomatome",\n    \"popularity\": 4136\n  },\n  {\n    \"tag\": "damassin",\n    \"popularity\": 4134\n  },\n  {\n    \"tag\": "planching",\n    \"popularity\": 4131\n  },\n  {\n    \"tag\": "dashedly inferential",\n    \"popularity\": 4128\n  },\n  {\n    \"tag\": "lobe",\n    \"popularity\": 4125\n  },\n  {\n    \"tag\": "Hyrachyus",\n    \"popularity\": 4122\n  },\n  {\n    \"tag\": "knab",\n    \"popularity\": 4119\n  },\n  {\n    \"tag\": "discohexaster",\n    \"popularity\": 4116\n  },\n  {\n    \"tag\": "malign",\n    \"popularity\": 4113\n  },\n  {\n    \"tag\": "pedagoguism",\n    \"popularity\": 4110\n  },\n  {\n    \"tag\": "shrubbery",\n    \"popularity\": 4107\n  },\n  {\n    \"tag\": "undershrub",\n    \"popularity\": 4104\n  },\n  {\n    \"tag\": "bureaucrat",\n    \"popularity\": 4101\n  },\n  {\n    \"tag\": "pantaleon",\n    \"popularity\": 4098\n  },\n  {\n    \"tag\": "mesoventral",\n    \"popularity\": 4096\n  }]';\r
42129 \r
42130 var log2 = Math.log(2);\r
42131 var tagInfo = tagInfoJSON.parseJSON(function(a, b) { if (a == "popularity") { return Math.log(b) / log2; } else {return b; } });\r
42132 \r
42133 function makeTagCloud(tagInfo)\r
42134 {\r
42135     var output = '<div class="tagCloud" style="width: 100%">';\r
42136 \r
42137     tagInfo.sort(function(a, b) { if (a.tag < b.tag) { return -1; } else if (a.tag == b.tag) { return 0; } else return 1; });\r
42138 \r
42139     for (var i = 0; i < tagInfo.length; i++) {\r
42140         var tag = tagInfo[i].tag;\r
42141 \r
42142         var validates = true;\r
42143         for (var j = 0; j < tag.length; j++) {\r
42144             var ch = tag.charCodeAt(j);\r
42145             if (ch < 0x20 || ch >= 0x7f) {\r
42146                 validates = false;\r
42147                 break;\r
42148             }\r
42149         }\r
42150 \r
42151         if (!validates)\r
42152             continue;\r
42153 \r
42154         var url = "http://example.com/tag/" + tag.replace(" ", "").toLowerCase();\r
42155         var popularity = tagInfo[i].popularity;\r
42156         var color = 'rgb(' + Math.floor(255 * (popularity - 12) / 20) + ', 0, 255)';\r
42157         output += ' <a href="' + url + '" style="font-size: ' + popularity + 'px; color: ' + color + '">' + tag + '</a> \n';\r
42158     }\r
42159 \r
42160     output += '</div>';\r
42161     output.replace(" ", "&nbsp;");\r
42162 \r
42163     return output;\r
42164 }\r
42165 \r
42166 var tagcloud = makeTagCloud(tagInfo);\r
42167 tagInfo = null;\r
42168 // This test case unpacks the compressed code for the MochiKit,\r
42169 // jQuery, Dojo and Prototype JavaScript libraries.\r
42170 \r
42171 /***\r
42172     MochiKit.MochiKit 1.3.1 : PACKED VERSION\r
42173     THIS FILE IS AUTOMATICALLY GENERATED.  If creating patches, please\r
42174     diff against the source tree, not this file.\r
42175 \r
42176     See <http://mochikit.com/> for documentation, downloads, license, etc.\r
42177 \r
42178     (c) 2005 Bob Ippolito.  All rights Reserved.\r
42179 ***/\r
42180 \r
42181 for (var i = 0; i < 2; i++) {\r
42182 \r
42183 var decompressedMochiKit = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(H(1q)!="L"){1q.2X("B.J")}if(H(B)=="L"){B={}}if(H(B.J)=="L"){B.J={}}B.J.1Y="1.3.1";B.J.1r="B.J";B.J.2l=G(7V,vR){if(7V===O){7V={}}R(u i=1;i<M.K;i++){u o=M[i];if(H(o)!="L"&&o!==O){R(u k in o){7V[k]=o[k]}}}F 7V};B.J.2l(B.J,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},4f:G(n){if(M.K===0){n=1}F G(){F n++}},4L:G(mw){u me=M.2U;if(M.K==1){me.1U=mw;F Y me()}},bg:G(vQ){u X=[];u m=B.J;u aw=m.1R(O,M);1M(aw.K){u o=aw.2P();if(o&&H(o)=="3n"&&H(o.K)=="2y"){R(u i=o.K-1;i>=0;i--){aw.e9(o[i])}}N{X.1c(o)}}F X},1R:G(7U,1i,av){if(!av){av=0}if(1i){u l=1i.K;if(H(l)!="2y"){if(H(B.15)!="L"){1i=B.15.2G(1i);l=1i.K}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(!7U){7U=[]}R(u i=av;i<l;i++){7U.1c(1i[i])}}F 7U},8Z:G(5g,1i){if(5g===O){5g={}}R(u i=1;i<M.K;i++){u o=M[i];if(H(o)!="L"&&o!==O){R(u k in o){u v=o[k];if(H(5g[k])=="3n"&&H(v)=="3n"){M.2U(5g[k],v)}N{5g[k]=v}}}}F 5g},lO:G(6c,1i){if(6c===O){6c={}}R(u i=1;i<M.K;i++){u o=M[i];R(u k in o){if(!(k in 6c)){6c[k]=o[k]}}}F 6c},lN:G(1i){u fj=[];R(u mv in 1i){fj.1c(mv)}F fj},lM:G(1i){u fh=[];u e;R(u fi in 1i){u v;1f{v=1i[fi]}1e(e){2V}fh.1c([fi,v])}F fh},jq:G(fg,ff,fe){fe.1U=Y B.J.5a(fg.1r+"."+ff);fg[ff]=fe},4i:{7L:G(a){F!!a},vP:G(a){F!a},eE:G(a){F a},2E:G(a){F~a},vO:G(a){F-a},vN:G(a,b){F a+b},vM:G(a,b){F a-b},4u:G(a,b){F a/b},vL:G(a,b){F a%b},vK:G(a,b){F a*b},3W:G(a,b){F a&b},or:G(a,b){F a|b},vJ:G(a,b){F a^b},vI:G(a,b){F a<<b},vH:G(a,b){F a>>b},vG:G(a,b){F a>>>b},eq:G(a,b){F a==b},ne:G(a,b){F a!=b},gt:G(a,b){F a>b},ge:G(a,b){F a>=b},lt:G(a,b){F a<b},le:G(a,b){F a<=b},vF:G(a,b){F B.J.2f(a,b)===0},vE:G(a,b){F B.J.2f(a,b)!==0},vD:G(a,b){F B.J.2f(a,b)==1},vC:G(a,b){F B.J.2f(a,b)!=-1},vB:G(a,b){F B.J.2f(a,b)==-1},vA:G(a,b){F B.J.2f(a,b)!=1},vz:G(a,b){F a&&b},vy:G(a,b){F a||b},vx:G(a,b){F b in a}},24:G(mu){F G(){F D[mu].1w(D,M)}},lL:G(mt){F G(a9){F a9[mt]}},66:G(){u fd={};R(u i=0;i<M.K;i++){u 6b=M[i];fd[6b]=6b}F G(){R(u i=0;i<M.K;i++){if(!(H(M[i])in fd)){F 1m}}F 1h}},lJ:G(){R(u i=0;i<M.K;i++){if(M[i]!==O){F 1m}}F 1h},lK:G(){R(u i=0;i<M.K;i++){u o=M[i];if(!(H(o)=="L"||o===O)){F 1m}}F 1h},lI:G(1i){F!B.J.7e.1w(D,M)},7e:G(1i){R(u i=0;i<M.K;i++){u o=M[i];if(!(o&&o.K)){F 1m}}F 1h},3A:G(){R(u i=0;i<M.K;i++){u o=M[i];u 6b=H(o);if((6b!="3n"&&!(6b=="G"&&H(o.vw)=="G"))||o===O||H(o.K)!="2y"){F 1m}}F 1h},eN:G(){R(u i=0;i<M.K;i++){u o=M[i];if(H(o)!="3n"||o===O||H(o.9P)!="G"){F 1m}}F 1h},lH:G(fn){if(fn===O){F B.J.1R(O,M,1)}u fc=[];R(u i=1;i<M.K;i++){fc.1c(fn(M[i]))}F fc},2r:G(fn,1g){u m=B.J;u 6a=B.15;u fb=m.3A;if(M.K<=2){if(!fb(1g)){if(6a){1g=6a.2G(1g);if(fn===O){F 1g}}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(fn===O){F m.1R(O,1g)}u 69=[];R(u i=0;i<1g.K;i++){69.1c(fn(1g[i]))}F 69}N{if(fn===O){fn=7o}u 7T=O;R(i=1;i<M.K;i++){if(!fb(M[i])){if(6a){F 6a.2G(6a.4c.1w(O,M))}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}u l=M[i].K;if(7T===O||7T>l){7T=l}}69=[];R(i=0;i<7T;i++){u fa=[];R(u j=1;j<M.K;j++){fa.1c(M[j][i])}69.1c(fn.1w(D,fa))}F 69}},lG:G(fn){u f9=[];if(fn===O){fn=B.J.4i.7L}R(u i=1;i<M.K;i++){u o=M[i];if(fn(o)){f9.1c(o)}}F f9},47:G(fn,1g,7S){u aq=[];u m=B.J;if(!m.3A(1g)){if(B.15){1g=B.15.2G(1g)}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(fn===O){fn=m.4i.7L}if(H(7o.1U.47)=="G"){F 7o.1U.47.cz(1g,fn,7S)}N{if(H(7S)=="L"||7S===O){R(u i=0;i<1g.K;i++){u o=1g[i];if(fn(o)){aq.1c(o)}}}N{R(i=0;i<1g.K;i++){o=1g[i];if(fn.cz(7S,o)){aq.1c(o)}}}}F aq},mq:G(7R){F G(){hd(M.K){3j 0:F 7R();3j 1:F 7R(M[0]);3j 2:F 7R(M[0],M[1]);3j 3:F 7R(M[0],M[1],M[2])}u f8=[];R(u i=0;i<M.K;i++){f8.1c("M["+i+"]")}F dB("(1A("+f8.2b(",")+"))")}},lv:G(mr,ms){u m=B.J;F m.1O.1w(D,m.1R([ms,mr],M,2))},1O:G(3c,4o){if(H(3c)=="1n"){3c=4o[3c]}u ao=3c.f5;u 5f=3c.am;u f6=3c.f7;u m=B.J;if(H(3c)=="G"&&H(3c.1w)=="L"){3c=m.mq(3c)}if(H(ao)!="G"){ao=3c}if(H(4o)!="L"){f6=4o}if(H(5f)=="L"){5f=[]}N{5f=5f.9T()}m.1R(5f,M,2);u 7Q=G(){u ap=M;u me=M.2U;if(me.am.K>0){ap=m.2o(me.am,ap)}u 4o=me.f7;if(!4o){4o=D}F me.f5.1w(4o,ap)};7Q.f7=f6;7Q.f5=ao;7Q.am=5f;F 7Q},lF:G(7P){u mp=B.J.1O;R(u k in 7P){u f4=7P[k];if(H(f4)=="G"){7P[k]=mp(f4,7P)}}},5u:G(mo,mn,ml,mk){B.J.ae.5M(mo,mn,ml,mk)},mj:{"5L":1h,"1n":1h,"2y":1h},2f:G(a,b){if(a==b){F 0}u f3=(H(a)=="L"||a===O);u f2=(H(b)=="L"||b===O);if(f3&&f2){F 0}N{if(f3){F-1}N{if(f2){F 1}}}u m=B.J;u f1=m.mj;if(!(H(a)in f1&&H(b)in f1)){1f{F m.ae.3C(a,b)}1e(e){if(e!=m.4d){14 e}}}if(a<b){F-1}N{if(a>b){F 1}}u f0=m.U;14 Y 3p(f0(a)+" 3W "+f0(b)+" 9v 2E be vv")},eM:G(a,b){F B.J.2f(a.9P(),b.9P())},eL:G(a,b){u mi=B.J.2f;u 7O=a.K;u al=0;if(7O>b.K){al=1;7O=b.K}N{if(7O<b.K){al=-1}}R(u i=0;i<7O;i++){u 4j=mi(a[i],b[i]);if(4j){F 4j}}F al},7M:G(mh,mg,mf,md){B.J.ad.5M(mh,mg,mf,md)},U:G(o){if(H(o)=="L"){F"L"}N{if(o===O){F"O"}}1f{if(H(o.1K)=="G"){F o.1K()}N{if(H(o.U)=="G"&&o.U!=M.2U){F o.U()}}F B.J.ad.3C(o)}1e(e){if(H(o.1r)=="1n"&&(o.1l==cZ.1U.1l||o.1l==vu.1U.1l)){F o.1r}}1f{u eZ=(o+"")}1e(e){F"["+H(o)+"]"}if(H(o)=="G"){o=eZ.23(/^\\s+/,"");u 5n=o.2A("{");if(5n!=-1){o=o.3H(0,5n)+"{...}"}}F eZ},eK:G(o){u m=B.J;F"["+m.2r(m.U,o).2b(", ")+"]"},ac:G(o){F("\\""+o.23(/(["\\\\])/g,"\\\\$1")+"\\"").23(/[\\f]/g,"\\\\f").23(/[\\b]/g,"\\\\b").23(/[\\n]/g,"\\\\n").23(/[\\t]/g,"\\\\t").23(/[\\r]/g,"\\\\r")},eJ:G(o){F o+""},ly:G(mc,mb,ma,m9){B.J.ab.5M(mc,mb,ma,m9)},lx:G(){F dB("("+M[0]+")")},lz:G(o){u 5e=H(o);if(5e=="L"){F"L"}N{if(5e=="2y"||5e=="5L"){F o+""}N{if(o===O){F"O"}}}u m=B.J;u eY=m.ac;if(5e=="1n"){F eY(o)}u me=M.2U;u 3S;if(H(o.m8)=="G"){3S=o.m8();if(o!==3S){F me(3S)}}if(H(o.m7)=="G"){3S=o.m7();if(o!==3S){F me(3S)}}if(5e!="G"&&H(o.K)=="2y"){u X=[];R(u i=0;i<o.K;i++){u 2i=me(o[i]);if(H(2i)!="1n"){2i="L"}X.1c(2i)}F"["+X.2b(", ")+"]"}1f{3S=m.ab.3C(o);F me(3S)}1e(e){if(e!=m.4d){14 e}}if(5e=="G"){F O}X=[];R(u k in o){u ak;if(H(k)=="2y"){ak="\\""+k+"\\""}N{if(H(k)=="1n"){ak=eY(k)}N{2V}}2i=me(o[k]);if(H(2i)!="1n"){2V}X.1c(ak+":"+2i)}F"{"+X.2b(", ")+"}"},lE:G(a,b){F(B.J.2f(a,b)===0)},lD:G(eX,4n){if(eX.K!=4n.K){F 1m}F(B.J.2f(eX,4n)===0)},2o:G(){u eW=[];u m6=B.J.1R;R(u i=0;i<M.K;i++){m6(eW,M[i])}F eW},eR:G(2h){u m=B.J;u eU=m.2f;if(M.K==1){F G(a,b){F eU(a[2h],b[2h])}}u eV=m.1R(O,M);F G(a,b){u aj=0;R(u i=0;(aj===0)&&(i<eV.K);i++){u 2h=eV[i];aj=eU(a[2h],b[2h])}F aj}},lC:G(2h){u m5=B.J.eR.1w(D,M);F G(a,b){F m5(b,a)}},2z:G(m4){u m=B.J;F m.1O.1w(D,m.1R([m4,L],M,1))},67:G(m0,1g){if(1g.K===0){F O}u ai=1g[0];u m3=B.J.2f;R(u i=1;i<1g.K;i++){u o=1g[i];if(m3(o,ai)==m0){ai=o}}F ai},lB:G(){F B.J.67(1,M)},lA:G(){F B.J.67(-1,M)},bi:G(1g,lY,lZ,3B){if(H(3B)=="L"||3B===O){3B=1g.K}R(u i=(lZ||0);i<3B;i++){if(1g[i]===lY){F i}}F-1},eO:G(1g,lW,lX,3B){if(H(3B)=="L"||3B===O){3B=1g.K}u 4j=B.J.2f;R(u i=(lX||0);i<3B;i++){if(4j(1g[i],lW)===0){F i}}F-1},d4:G(1j,lV){u ah=[1j];u lU=B.J.1R;1M(ah.K){u X=lV(ah.2P());if(X){lU(ah,X)}}},3f:G(ag){u 2w=ag.1r;if(H(2w)=="L"){2w=""}N{2w=2w+"."}R(u 1b in ag){u o=ag[1b];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+1b}1e(e){}}}},dw:G(3s,68){if(H(B.S)!="L"&&M.K==1&&(H(3s)=="1n"||(H(3s.3T)!="L"&&3s.3T>0))){u kv=B.S.d5(3s);3s=kv[0];68=kv[1]}N{if(M.K==1){u o=3s;3s=[];68=[];R(u k in o){u v=o[k];if(H(v)!="G"){3s.1c(k);68.1c(v)}}}}u W=[];u lT=28.2a(3s.K,68.K);u eT=B.J.af;R(u i=0;i<lT;i++){v=68[i];if(H(v)!="L"&&v!==O){W.1c(eT(3s[i])+"="+eT(v))}}F W.2b("&")},lw:G(lS,lQ){u 7N=lS.23(/\\+/g,"%20").2R("&");u o={};u 5d;if(H(lR)!="L"){5d=lR}N{5d=vt}if(lQ){R(u i=0;i<7N.K;i++){u 2n=7N[i].2R("=");u 1b=5d(2n[0]);u 4n=o[1b];if(!(4n 2C 7o)){4n=[];o[1b]=4n}4n.1c(5d(2n[1]))}}N{R(i=0;i<7N.K;i++){2n=7N[i].2R("=");o[5d(2n[0])]=5d(2n[1])}}F o}});B.J.4a=G(){D.4m=[]};B.J.4a.1U={5M:G(1b,eS,3y,lP){if(lP){D.4m.e9([1b,eS,3y])}N{D.4m.1c([1b,eS,3y])}},3C:G(){R(u i=0;i<D.4m.K;i++){u 2n=D.4m[i];if(2n[1].1w(D,M)){F 2n[2].1w(D,M)}}14 B.J.4d},vs:G(1b){R(u i=0;i<D.4m.K;i++){u 2n=D.4m[i];if(2n[0]==1b){D.4m.4y(i,1);F 1h}}F 1m}};B.J.1z=["4f","4L","1R","2l","8Z","lO","lN","lM","5a","4i","24","lL","66","lo","ln","lK","lJ","lI","7e","3A","eN","lH","2r","lG","47","1O","lF","4d","4a","5u","2f","7M","U","lE","lD","2o","eR","lC","2z","lm","67","lp","eI","lB","lA","d4","ll","af","dw","lz","ly","lx","lw","eO","bi","bg","lv"];B.J.1W=["3f","ae","ad","ab","eM","eL","eK","ac","eJ"];B.J.2Y=G(lu,eP){if(H(B.eQ)=="L"){B.eQ=(B.3d||(H(1x)=="L"&&H(1q)=="L"))}if(!B.eQ){F}u 1p=eP.2k[":1p"];R(u i=0;i<1p.K;i++){lu[1p[i]]=eP[1p[i]]}};B.J.2d=G(){u m=D;m.vr=m.24;m.vq=m.eO;if(H(ls)!="L"){m.af=G(lr){F ls(lr).23(/\\\'/g,"%27")}}N{m.af=G(lq){F vp(lq).23(/\\+/g,"%2B").23(/\\"/g,"%22").W.23(/\\\'/g,"%27")}}m.5a=G(1b){D.43=1b;D.1b=1b};m.5a.1U=Y 2x();m.2l(m.5a.1U,{U:G(){if(D.43&&D.43!=D.1b){F D.1b+"("+m.U(D.43)+")"}N{F D.1b+"()"}},1l:m.24("U")});m.4d=Y m.5a("B.J.4d");m.lp=m.2z(m.67,1);m.eI=m.2z(m.67,-1);m.lo=m.66("G");m.ln=m.66("L");m.lm=m.2z(m.2l,O);m.ll=m.2z(m.2r,O);m.ae=Y m.4a();m.5u("vo",m.eN,m.eM);m.5u("ej",m.3A,m.eL);m.ad=Y m.4a();m.7M("ej",m.3A,m.eK);m.7M("1n",m.66("1n"),m.ac);m.7M("vn",m.66("2y","5L"),m.eJ);m.ab=Y m.4a();u 1p=m.2o(m.1z,m.1W);m.2k={":3e":m.2o(m.1W),":1p":1p};m.3f(D)};B.J.2d();if(!B.3d){2f=B.J.2f}B.J.2Y(D,B.J);if(H(1q)!="L"){1q.2X("B.15");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.15 3F on B.J!"}if(H(B.15)=="L"){B.15={}}B.15.1r="B.15";B.15.1Y="1.3.1";B.J.2l(B.15,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},9W:G(1b,lk,lj,lh){B.15.9Y.5M(1b,lk,lj,lh)},1Q:G(3R,lg){u I=B.15;if(M.K==2){F I.9Z(G(a){F a!=lg},3R)}if(H(3R.1a)=="G"){F 3R}N{if(H(3R.1Q)=="G"){F 3R.1Q()}}1f{F I.9Y.3C(3R)}1e(e){u m=B.J;if(e==m.4d){e=Y 3p(H(3R)+": "+m.U(3R)+" is 2E vm")}14 e}},eu:G(n){if(!n){n=0}u m=B.J;F{U:G(){F"eu("+n+")"},1l:m.24("U"),1a:m.4f(n)}},et:G(p){u I=B.15;u m=B.J;u 1g=[];u lf=I.1Q(p);F{U:G(){F"et(...)"},1l:m.24("U"),1a:G(){1f{u W=lf.1a();1g.1c(W);F W}1e(e){if(e!=I.25){14 e}if(1g.K===0){D.1a=G(){14 I.25}}N{u i=-1;D.1a=G(){i=(i+1)%1g.K;F 1g[i]}}F D.1a()}}}},7b:G(Q,n){u m=B.J;if(H(n)=="L"){F{U:G(){F"7b("+m.U(Q)+")"},1l:m.24("U"),1a:G(){F Q}}}F{U:G(){F"7b("+m.U(Q)+", "+n+")"},1l:m.24("U"),1a:G(){if(n<=0){14 B.15.25}n-=1;F Q}}},1a:G(ld){F ld.1a()},es:G(p,q){u m=B.J;u 1a=B.15.1a;u lc=m.2r(1Q,M);F{U:G(){F"es(...)"},1l:m.24("U"),1a:G(){F m.2r(1a,lc)}}},a1:G(3b,1V){u m=B.J;1V=B.15.1Q(1V);if(3b===O){3b=m.4i.7L}F{U:G(){F"a1(...)"},1l:m.24("U"),1a:G(){1M(1h){u W=1V.1a();if(3b(W)){F W}}F L}}},a0:G(3b,1V){u m=B.J;1V=B.15.1Q(1V);if(3b===O){3b=m.4i.7L}F{U:G(){F"a0(...)"},1l:m.24("U"),1a:G(){1M(1h){u W=1V.1a();if(!3b(W)){F W}}F L}}},er:G(1V){u I=B.15;u m=B.J;1V=I.1Q(1V);u 5c=0;u 2J=0;u 3a=1;u i=-1;if(M.K==2){2J=M[1]}N{if(M.K==3){5c=M[1];2J=M[2]}N{5c=M[1];2J=M[2];3a=M[3]}}F{U:G(){F"er("+["...",5c,2J,3a].2b(", ")+")"},1l:m.24("U"),1a:G(){u W;1M(i<5c){W=1V.1a();i++}if(5c>=2J){14 I.25}5c+=3a;F W}}},4c:G(aa,p,q){u m=B.J;u I=B.15;u lb=m.2r(I.1Q,m.1R(O,M,1));u 2r=m.2r;u 1a=I.1a;F{U:G(){F"4c(...)"},1l:m.24("U"),1a:G(){F aa.1w(D,2r(1a,lb))}}},ep:G(aa,1V,I){1V=B.15.1Q(1V);u m=B.J;F{U:G(){F"ep(...)"},1l:m.24("U"),1a:G(){F aa.1w(I,1V.1a())}}},55:G(p,q){u I=B.15;u m=B.J;if(M.K==1){F I.1Q(M[0])}u 64=m.2r(I.1Q,M);F{U:G(){F"55(...)"},1l:m.24("U"),1a:G(){1M(64.K>1){1f{F 64[0].1a()}1e(e){if(e!=I.25){14 e}64.2P()}}if(64.K==1){u a9=64.2P();D.1a=m.1O("1a",a9);F D.1a()}14 I.25}}},9Z:G(3b,1V){u I=B.15;1V=I.1Q(1V);F{U:G(){F"9Z(...)"},1l:B.J.24("U"),1a:G(){u W=1V.1a();if(!3b(W)){D.1a=G(){14 I.25};D.1a()}F W}}},eo:G(3b,1V){1V=B.15.1Q(1V);u m=B.J;u 1O=m.1O;F{"U":G(){F"eo(...)"},"1l":m.24("U"),"1a":G(){1M(1h){u W=1V.1a();if(!3b(W)){2K}}D.1a=1O("1a",1V);F W}}},a7:G(63,2u,la){2u.62[63]=-1;u m=B.J;u l9=m.eI;F{U:G(){F"en("+63+", ...)"},1l:m.24("U"),1a:G(){u W;u i=2u.62[63];if(i==2u.29){W=la.1a();2u.a8.1c(W);2u.29+=1;2u.62[63]+=1}N{W=2u.a8[i-2u.2a];2u.62[63]+=1;if(i==2u.2a&&l9(2u.62)!=2u.2a){2u.2a+=1;2u.a8.2P()}}F W}}},en:G(a6,n){u W=[];u 2u={"62":[],"a8":[],"29":-1,"2a":-1};if(M.K==1){n=2}u I=B.15;a6=I.1Q(a6);u a7=I.a7;R(u i=0;i<n;i++){W.1c(a7(i,2u,a6))}F W},2G:G(4l){u m=B.J;if(H(4l.9T)=="G"){F 4l.9T()}N{if(m.3A(4l)){F m.2o(4l)}}u I=B.15;4l=I.1Q(4l);u W=[];1f{1M(1h){W.1c(4l.1a())}}1e(e){if(e!=I.25){14 e}F W}F L},7H:G(fn,7K,l8){u i=0;u x=l8;u I=B.15;7K=I.1Q(7K);if(M.K<3){1f{x=7K.1a()}1e(e){if(e==I.25){e=Y 3p("7H() of vl vk vj no vi 3m")}14 e}i++}1f{1M(1h){x=fn(x,7K.1a())}}1e(e){if(e!=I.25){14 e}}F x},7I:G(){u 4k=0;u 2J=0;u 3a=1;if(M.K==1){2J=M[0]}N{if(M.K==2){4k=M[0];2J=M[1]}N{if(M.K==3){4k=M[0];2J=M[1];3a=M[2]}N{14 Y 3p("7I() vh 1, 2, or 3 M!")}}}if(3a===0){14 Y 3p("7I() 3a 5p 2E be 0")}F{1a:G(){if((3a>0&&4k>=2J)||(3a<0&&4k<=2J)){14 B.15.25}u W=4k;4k+=3a;F W},U:G(){F"7I("+[4k,2J,3a].2b(", ")+")"},1l:B.J.24("U")}},l0:G(a5,l7){u x=l7||0;u I=B.15;a5=I.1Q(a5);1f{1M(1h){x+=a5.1a()}}1e(e){if(e!=I.25){14 e}}F x},em:G(a4){u I=B.15;a4=I.1Q(a4);1f{1M(1h){a4.1a()}}1e(e){if(e!=I.25){14 e}}},9a:G(7J,1A,I){u m=B.J;if(M.K>2){1A=m.1O(1A,I)}if(m.3A(7J)){1f{R(u i=0;i<7J.K;i++){1A(7J[i])}}1e(e){if(e!=B.15.25){14 e}}}N{I=B.15;I.em(I.4c(1A,7J))}},kZ:G(l6,1A){u I=B.15;1f{I.a0(1A,l6).1a();F 1m}1e(e){if(e!=I.25){14 e}F 1h}},kY:G(l5,4j){u W=B.15.2G(l5);if(M.K==1){4j=B.J.2f}W.iz(4j);F W},kX:G(l4){u W=B.15.2G(l4);W.vg();F W},kW:G(l3,1A){u I=B.15;1f{I.a1(1A,l3).1a();F 1h}1e(e){if(e!=I.25){14 e}F 1m}},kV:G(1g,5b){if(B.J.3A(5b)){R(u i=0;i<5b.K;i++){1g.1c(5b[i])}}N{u I=B.15;5b=I.1Q(5b);1f{1M(1h){1g.1c(5b.1a())}}1e(e){if(e!=I.25){14 e}}}F 1g},ek:G(a3,eH){u m=B.J;u I=B.15;if(M.K<2){eH=m.4i.eE}a3=I.1Q(a3);u pk=L;u k=L;u v;G eF(){v=a3.1a();k=eH(v)}G l2(){u 7j=v;v=L;F 7j}u eG=1h;F{U:G(){F"ek(...)"},1a:G(){1M(k==pk){eF();if(eG){eG=1m;2K}}pk=k;F[k,{1a:G(){if(v==L){eF()}if(k!=pk){14 I.25}F l2()}}]}}},kU:G(a2,eD){u m=B.J;u I=B.15;if(M.K<2){eD=m.4i.eE}a2=I.1Q(a2);u ey=[];u eA=1h;u ez;1M(1h){1f{u eB=a2.1a();u 2h=eD(eB)}1e(e){if(e==I.25){2K}14 e}if(eA||2h!=ez){u eC=[];ey.1c([2h,eC])}eC.1c(eB);eA=1m;ez=2h}F ey},9X:G(ex){u i=0;F{U:G(){F"9X(...)"},1l:B.J.24("U"),1a:G(){if(i>=ex.K){14 B.15.25}F ex[i++]}}},eh:G(ew){F(ew&&H(ew.ei)=="G")},9V:G(l1){F{U:G(){F"9V(...)"},1l:B.J.24("U"),1a:G(){u W=l1.ei();if(W===O||W===L){14 B.15.25}F W}}}});B.15.1W=["9Y","9X","eh","9V",];B.15.1z=["25","9W","1Q","eu","et","7b","1a","es","a1","a0","er","4c","ep","55","9Z","eo","en","2G","7H","7I","l0","em","9a","kZ","kY","kX","kW","kV","ek","kU"];B.15.2d=G(){u m=B.J;D.25=Y m.5a("25");D.9Y=Y m.4a();D.9W("ej",m.3A,D.9X);D.9W("ei",D.eh,D.9V);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.15.2d();if(!B.3d){7H=B.15.7H}B.J.2Y(D,B.15);if(H(1q)!="L"){1q.2X("B.1H");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1H 3F on B.J!"}if(H(B.1H)=="L"){B.1H={}}B.1H.1r="B.1H";B.1H.1Y="1.3.1";B.1H.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1H.1l=G(){F D.1K()};B.1H.1z=["5C","49","7A","kR","2L","5Z","kG","ch","kE","kC"];B.1H.1W=["ef","e8","e7"];B.1H.49=G(1P,kT,3z){D.1P=1P;D.3N=kT;D.3z=3z;D.vf=Y 3Q()};B.1H.49.1U={U:G(){u m=B.J;F"49("+m.2r(m.U,[D.1P,D.3N,D.3z]).2b(", ")+")"},1l:B.J.24("U")};B.J.2l(B.1H,{ef:G(7F){u I=B.1H;if(H(7F)=="1n"){7F=I.5C[7F]}F G(1t){u 7G=1t.3N;if(H(7G)=="1n"){7G=I.5C[7G]}F 7G>=7F}},e8:G(){u kS=B.1H.49;R(u i=0;i<M.K;i++){if(!(M[i]2C kS)){F 1m}}F 1h},e7:G(a,b){F B.J.2f([a.3N,a.3z],[b.3N,b.3z])},kR:G(1t){cq("1P: "+1t.1P+"\\ve: "+1t.3N+"\\vd: "+1t.3z.2b(" "))}});B.1H.7A=G(7E){D.4f=0;if(H(7E)=="L"||7E===O){7E=-1}D.ec=7E;D.4h=[];D.7C={};D.e5=1m};B.1H.7A.1U={vc:G(){D.4h.4y(0,D.4h.K)},kK:G(1t){if(H(2O)!="L"&&2O.eg&&2O.eg.5Z){2O.eg.5Z(1t)}N{if(H(7h)!="L"&&7h.kQ){7h.kQ(1t)}N{if(H(5X)=="G"){5X(1t)}}}},kL:G(1t){R(u k in D.7C){u 2n=D.7C[k];if(2n.kO!=k||(2n[0]&&!2n[0](1t))){2V}2n[1](1t)}},hE:G(ee,7D,kP){if(H(7D)=="1n"){7D=B.1H.ef(7D)}u ed=[7D,kP];ed.kO=ee;D.7C[ee]=ed},c9:G(kN){gi D.7C[kN]},kH:G(kM,vb){u 1t=Y B.1H.49(D.4f,kM,B.J.1R(O,M,1));D.4h.1c(1t);D.kL(1t);if(D.e5){D.kK(1t.3N+": "+1t.3z.2b(" "))}D.4f+=1;1M(D.ec>=0&&D.4h.K>D.ec){D.4h.2P()}},c8:G(9U){u ea=0;if(!(H(9U)=="L"||9U===O)){ea=28.29(0,D.4h.K-9U)}F D.4h.9T(ea)},kJ:G(7B){if(H(7B)=="L"||7B===O){7B=30}u 9S=D.c8(7B);if(9S.K){u 1g=2r(G(m){F"\\n  ["+m.1P+"] "+m.3N+": "+m.3z.2b(" ")},9S);1g.e9("va "+9S.K+" v9:");F 1g.2b("")}F""},v8:G(kI){if(H(B.1I)=="L"){cq(D.kJ())}N{B.1I.bY(kI||1m)}}};B.1H.2d=G(){D.5C={8M:40,8L:50,8K:30,8J:20,8I:10};u m=B.J;m.5u("49",D.e8,D.e7);u 61=m.2z;u e6=D.7A;u 60=e6.1U.kH;m.2l(D.7A.1U,{kF:61(60,"8I"),5Z:61(60,"8J"),dE:61(60,"8M"),kD:61(60,"8L"),kB:61(60,"8K")});u I=D;u 5Y=G(1b){F G(){I.2L[1b].1w(I.2L,M)}};D.5Z=5Y("5Z");D.kG=5Y("dE");D.ch=5Y("kF");D.kE=5Y("kD");D.kC=5Y("kB");D.2L=Y e6();D.2L.e5=1h;D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};if(H(5X)=="L"&&H(2v)!="L"&&2v.kA&&H(kz)!="L"){5X=G(){5X.3G=M;u ev=2v.kA("v7");ev.v6("5X",1m,1h);kz(ev)}}B.1H.2d();B.J.2Y(D,B.1H);if(H(1q)!="L"){1q.2X("B.1D")}if(H(B)=="L"){B={}}if(H(B.1D)=="L"){B.1D={}}B.1D.1r="B.1D";B.1D.1Y="1.3.1";B.1D.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1D.1l=G(){F D.1K()};B.1D.ks=G(1y){1y=1y+"";if(H(1y)!="1n"||1y.K===0){F O}u 7z=1y.2R("-");if(7z.K===0){F O}F Y 3Q(7z[0],7z[1]-1,7z[2])};B.1D.ky=/(\\d{4,})(?:-(\\d{1,2})(?:-(\\d{1,2})(?:[T ](\\d{1,2}):(\\d{1,2})(?::(\\d{1,2})(?:\\.(\\d+))?)?(?:(Z)|([+-])(\\d{1,2})(?::(\\d{1,2}))?)?)?)?)?/;B.1D.kr=G(1y){1y=1y+"";if(H(1y)!="1n"||1y.K===0){F O}u X=1y.3C(B.1D.ky);if(H(X)=="L"||X===O){F O}u 5W,7y,7x,9R,2a,9Q,7w;5W=3w(X[1],10);if(H(X[2])=="L"||X[2]===""){F Y 3Q(5W)}7y=3w(X[2],10)-1;7x=3w(X[3],10);if(H(X[4])=="L"||X[4]===""){F Y 3Q(5W,7y,7x)}9R=3w(X[4],10);2a=3w(X[5],10);9Q=(H(X[6])!="L"&&X[6]!=="")?3w(X[6],10):0;if(H(X[7])!="L"&&X[7]!==""){7w=28.ha(c5*4M("0."+X[7]))}N{7w=0}if((H(X[8])=="L"||X[8]==="")&&(H(X[9])=="L"||X[9]==="")){F Y 3Q(5W,7y,7x,9R,2a,9Q,7w)}u 58;if(H(X[9])!="L"&&X[9]!==""){58=3w(X[10],10)*v5;if(H(X[11])!="L"&&X[11]!==""){58+=3w(X[11],10)*kw}if(X[9]=="-"){58=-58}}N{58=0}F Y 3Q(3Q.v4(5W,7y,7x,9R,2a,9Q,7w)-58)};B.1D.dY=G(2g,kx){if(H(2g)=="L"||2g===O){F O}u hh=2g.v3();u mm=2g.v2();u ss=2g.v1();u 1g=[((kx&&(hh<10))?"0"+hh:hh),((mm<10)?"0"+mm:mm),((ss<10)?"0"+ss:ss)];F 1g.2b(":")};B.1D.kq=G(2g,7v){if(H(2g)=="L"||2g===O){F O}u ku=7v?"T":" ";u kt=7v?"Z":"";if(7v){2g=Y 3Q(2g.9P()+(2g.v0()*kw))}F B.1D.dX(2g)+ku+B.1D.dY(2g,7v)+kt};B.1D.dX=G(2g){if(H(2g)=="L"||2g===O){F O}u e4=B.1D.e3;F[2g.dZ(),e4(2g.e1()+1),e4(2g.e0())].2b("-")};B.1D.kp=G(d){d=d+"";if(H(d)!="1n"||d.K===0){F O}u a=d.2R("/");F Y 3Q(a[2],a[0]-1,a[1])};B.1D.e3=G(n){F(n>9)?n:"0"+n};B.1D.ko=G(d){if(H(d)=="L"||d===O){F O}u e2=B.1D.e3;F[e2(d.e1()+1),e2(d.e0()),d.dZ()].2b("/")};B.1D.kn=G(d){if(H(d)=="L"||d===O){F O}F[d.e1()+1,d.e0(),d.dZ()].2b("/")};B.1D.1z=["ks","kr","dY","kq","dX","kp","ko","kn"];B.1D.1W=[];B.1D.2k={":3e":B.1D.1z,":1p":B.1D.1z};B.1D.2d=G(){u 2w=D.1r+".";R(u k in D){u o=D[k];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+k}1e(e){}}}};B.1D.2d();if(H(B.J)!="L"){B.J.2Y(D,B.1D)}N{(G(km,dW){if((H(1x)=="L"&&H(1q)=="L")||(H(B.3d)=="5L"&&B.3d)){u 1p=dW.2k[":1p"];R(u i=0;i<1p.K;i++){km[1p[i]]=dW[1p[i]]}}})(D,B.1D)}if(H(1q)!="L"){1q.2X("B.1s")}if(H(B)=="L"){B={}}if(H(B.1s)=="L"){B.1s={}}B.1s.1r="B.1s";B.1s.1Y="1.3.1";B.1s.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1s.1l=G(){F D.1K()};B.1s.ke=G(kl,kk,kj,ki,kh,dV,kg,9N,kf){F G(1P){1P=4M(1P);if(H(1P)=="L"||1P===O||k8(1P)){F kl}u 9L=kk;u 9K=kj;if(1P<0){1P=-1P}N{9L=9L.23(/-/,"")}u me=M.2U;u 9M=B.1s.dJ(ki);if(kh){1P=1P*3k;9K=9M.9y+9K}1P=B.1s.dK(1P,dV);u 9O=1P.2R(/\\./);u 3r=9O[0];u 3P=(9O.K==1)?"":9O[1];u X="";1M(3r.K<kg){3r="0"+3r}if(9N){1M(3r.K>9N){u i=3r.K-9N;X=9M.9A+3r.2W(i,3r.K)+X;3r=3r.2W(0,i)}}X=3r+X;if(dV>0){1M(3P.K<kf){3P=3P+"0"}X=X+9M.9z+3P}F 9L+X+9K}};B.1s.k5=G(9J,9H,9G){if(H(9H)=="L"){9H=""}u 3q=9J.3C(/((?:[0#]+,)?[0#]+)(?:\\.([0#]+))?(%)?/);if(!3q){14 3p("uZ uY")}u 7u=9J.3H(0,3q.c6);u kd=9J.3H(3q.c6+3q[0].K);if(7u.uX(/-/)==-1){7u=7u+"-"}u 9I=3q[1];u 3P=(H(3q[2])=="1n"&&3q[2]!="")?3q[2]:"";u kc=(H(3q[3])=="1n"&&3q[3]!="");u dU=9I.2R(/,/);u 9F;if(H(9G)=="L"){9G="dG"}if(dU.K==1){9F=O}N{9F=dU[1].K}u ka=9I.K-9I.23(/0/g,"").K;u k9=3P.K-3P.23(/0/g,"").K;u kb=3P.K;u W=B.1s.ke(9H,7u,kd,9G,kc,kb,ka,9F,k9);u m=B.J;if(m){u fn=M.2U;u 3G=m.2o(M);W.U=G(){F[I.1r,"(",2r(m.U,3G).2b(", "),")"].2b("")}}F W};B.1s.dJ=G(4g){if(H(4g)=="L"||4g===O){4g="dG"}if(H(4g)=="1n"){u W=B.1s.5V[4g];if(H(W)=="1n"){W=M.2U(W);B.1s.5V[4g]=W}F W}N{F 4g}};B.1s.k4=G(dT,9E){if(9E){u X=dT/9E;if(!k8(X)){F B.1s.9B(dT/9E)}}F"0"};B.1s.9B=G(dS){u dR=(dS<0?"-":"");u s=28.8B(28.uW(dS)*3k).1l();if(s=="0"){F s}if(s.K<3){1M(s.3Z(s.K-1)=="0"){s=s.2W(0,s.K-1)}F dR+"0."+s}u 5E=dR+s.2W(0,s.K-2);u 7t=s.2W(s.K-2,s.K);if(7t=="uV"){F 5E}N{if(7t.3Z(1)=="0"){F 5E+"."+7t.3Z(0)}N{F 5E+"."+7t}}};B.1s.dI=G(1y,dQ){1y=1y+"";if(H(1y)!="1n"){F O}if(!dQ){F 1y.23(/^\\s+/,"")}N{F 1y.23(Y 8V("^["+dQ+"]+"),"")}};B.1s.dH=G(1y,dP){1y=1y+"";if(H(1y)!="1n"){F O}if(!dP){F 1y.23(/\\s+$/,"")}N{F 1y.23(Y 8V("["+dP+"]+$"),"")}};B.1s.k2=G(1y,dO){u I=B.1s;F I.dH(I.dI(1y,dO),dO)};B.1s.dL=G(9D,9C){9D=28.8B(9D*28.dN(10,9C));u X=(9D*28.dN(10,-9C)).6I(9C);if(X.3Z(0)=="."){X="0"+X}F X};B.1s.dK=G(k7,dM){F B.1s.dL(k7+0.5*28.dN(10,-dM),dM)};B.1s.k3=G(k6){F B.1s.9B(3k*k6)+"%"};B.1s.1z=["dL","dK","k5","dJ","k4","9B","k3","dI","dH","k2"];B.1s.5V={k1:{9A:",",9z:".",9y:"%"},uU:{9A:".",9z:",",9y:"%"},uT:{9A:" ",9z:",",9y:"%"},"dG":"k1"};B.1s.1W=[];B.1s.2k={":1p":B.1s.1z,":3e":B.1s.1z};B.1s.2d=G(){u 2w=D.1r+".";u k,v,o;R(k in D.5V){o=D.5V[k];if(H(o)=="3n"){o.U=G(){F D.1r};o.1r=2w+"5V."+k}}R(k in D){o=D[k];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+k}1e(e){}}}};B.1s.2d();if(H(B.J)!="L"){B.J.2Y(D,B.1s)}N{(G(k0,dF){if((H(1x)=="L"&&H(1q)=="L")||(H(B.3d)=="5L"&&B.3d)){u 1p=dF.2k[":1p"];R(u i=0;i<1p.K;i++){k0[1p[i]]=dF[1p[i]]}}})(D,B.1s)}if(H(1q)!="L"){1q.2X("B.1k");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1k 3F on B.J!"}if(H(B.1k)=="L"){B.1k={}}B.1k.1r="B.1k";B.1k.1Y="1.3.1";B.1k.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1k.1l=G(){F D.1K()};B.1k.2t=G(jZ){D.55=[];D.id=D.7n();D.2H=-1;D.54=0;D.53=[O,O];D.7m=jZ;D.7l=1m;D.7r=1m};B.1k.2t.1U={U:G(){u 7s;if(D.2H==-1){7s="uS"}N{if(D.2H===0){7s="uR"}N{7s="dE"}}F"2t("+D.id+", "+7s+")"},1l:B.J.24("U"),7n:B.J.4f(),jY:G(){u I=B.1k;if(D.2H==-1){if(D.7m){D.7m(D)}N{D.7l=1h}if(D.2H==-1){D.52(Y I.di(D))}}N{if((D.2H===0)&&(D.53[0]2C I.2t)){D.53[0].jY()}}},jQ:G(){D.54++},jX:G(){D.54--;if((D.54===0)&&(D.2H>=0)){D.9u()}},jR:G(X){D.9x(X);D.jX()},9x:G(X){D.2H=((X 2C 2x)?1:0);D.53[D.2H]=X;D.9u()},dD:G(){if(D.2H!=-1){if(!D.7l){14 Y B.1k.dj(D)}D.7l=1m;F}},3o:G(X){D.dD();if(X 2C B.1k.2t){14 Y 2x("2t jW 9v aB be 7r if jV jU jT jS of a 3o")}D.9x(X)},52:G(X){D.dD();u I=B.1k;if(X 2C I.2t){14 Y 2x("2t jW 9v aB be 7r if jV jU jT jS of a 3o")}if(!(X 2C 2x)){X=Y I.9p(X)}D.9x(X)},jP:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(fn,fn)},5Q:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(fn,O)},jA:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(O,fn)},9w:G(cb,eb){if(D.7r){14 Y 2x("uQ uP 9v 2E be re-uO")}D.55.1c([cb,eb]);if(D.2H>=0){D.9u()}F D},9u:G(){u dC=D.55;u 56=D.2H;u X=D.53[56];u I=D;u cb=O;1M(dC.K>0&&D.54===0){u 2n=dC.2P();u f=2n[56];if(f===O){2V}1f{X=f(X);56=((X 2C 2x)?1:0);if(X 2C B.1k.2t){cb=G(X){I.jR(X)};D.jQ()}}1e(3O){56=1;if(!(3O 2C 2x)){3O=Y B.1k.9p(3O)}X=3O}}D.2H=56;D.53[56]=X;if(cb&&D.54){X.jP(cb);X.7r=1h}}};B.J.2l(B.1k,{dk:G(){F dB("("+M[0].jN+")")},dp:G(uN){u d=Y B.1k.2t();d.3o.1w(d,M);F d},9q:G(uM){u d=Y B.1k.2t();d.52.1w(d,M);F d},do:G(){u I=M.2U;if(!I.7q){u dy=[G(){F Y 7q()},G(){F Y dA("jO.dz")},G(){F Y dA("uL.dz")},G(){F Y dA("jO.dz.4.0")},G(){14 Y B.1k.dh("uK uJ 2E uI 7q")}];R(u i=0;i<dy.K;i++){u 1A=dy[i];1f{I.7q=1A;F 1A()}1e(e){}}}F I.7q()},dx:G(){},jK:G(d){if(D.uH==4){1f{D.5T=O}1e(e){1f{D.5T=B.1k.dx}1e(e){}}u 5U=O;1f{5U=D.jm;if(!5U&&B.J.7e(D.jN)){5U=jM}}1e(e){}if(5U==hQ||5U==jM){d.3o(D)}N{u 3O=Y B.1k.dg(D,"uG uF");if(3O.2y){d.52(3O)}N{d.52(3O)}}}},jL:G(2s){1f{2s.5T=O}1e(e){1f{2s.5T=B.1k.dx}1e(e){}}2s.uE()},dl:G(2s,7p){if(H(7p)=="L"||7p===O){7p=""}u m=B.J;u I=B.1k;u d=Y I.2t(m.2z(I.jL,2s));1f{2s.5T=m.1O(I.jK,2s,d);2s.uD(7p)}1e(e){1f{2s.5T=O}1e(uC){}d.52(e)}F d},dn:G(5F){u I=B.1k;u 2s=I.do();if(M.K>1){u m=B.J;u qs=m.dw.1w(O,m.1R(O,M,1));if(qs){5F+="?"+qs}}2s.cp("uB",5F,1h);F I.dl(2s)},jv:G(5F){u I=B.1k;u d=I.dn.1w(I,M);d=d.5Q(I.dk);F d},dm:G(jJ,dv){u d=Y B.1k.2t();u m=B.J;if(H(dv)!="L"){d.5Q(G(){F dv})}u jI=uA(m.1O("3o",d),28.8B(jJ*c5));d.7m=G(){1f{uz(jI)}1e(e){}};F d},ju:G(jH,1A){u m=B.J;u jG=m.2z.1w(m,m.1R(O,M,1));F B.1k.dm(jH).5Q(G(X){F jG()})}});B.1k.5O=G(){D.5S=[];D.4e=1m;D.id=D.7n()};B.1k.5O.1U={bX:B.1k.5O,uy:G(){d=Y B.1k.2t();if(D.4e){D.5S.1c(d)}N{D.4e=1h;d.3o(D)}F d},jF:G(){if(!D.4e){14 3p("ux to jF an jE 5O")}D.4e=1m;if(D.5S.K>0){D.4e=1h;D.5S.2P().3o(D)}},7n:B.J.4f(),U:G(){u 9t;if(D.4e){9t="4e, "+D.5S.K+" 5S"}N{9t="jE"}F"5O("+D.id+", "+9t+")"},1l:B.J.24("U")};B.1k.7i=G(2G,du,jC,jB,jD){D.2G=2G;D.9r=Y 7o(D.2G.K);D.55=[];D.id=D.7n();D.2H=-1;D.54=0;D.53=[O,O];D.7m=jD;D.7l=1m;if(D.2G.K===0&&!du){D.3o(D.9r)}D.dr=0;D.jz=du;D.jy=jC;D.jx=jB;u 9s=0;B.J.2r(B.J.1O(G(d){d.5Q(B.J.1O(D.dt,D),9s,1h);d.jA(B.J.1O(D.dt,D),9s,1m);9s+=1},D),D.2G)};B.J.2l(B.1k.7i.1U,B.1k.2t.1U);B.J.2l(B.1k.7i.1U,{dt:G(ds,7k,5R){D.9r[ds]=[7k,5R];D.dr+=1;if(D.2H!==0){if(7k&&D.jz){D.3o([ds,5R])}N{if(!7k&&D.jy){D.52(5R)}N{if(D.dr==D.2G.K){D.3o(D.9r)}}}}if(!7k&&D.jx){5R=O}F 5R}});B.1k.jt=G(jw){u d=Y B.1k.7i(jw,1m,1h,1m);d.5Q(G(dq){u 7j=[];R(u i=0;i<dq.K;i++){7j.1c(dq[i][1])}F 7j});F d};B.1k.jr=G(1A){u I=B.1k;u 5P;1f{u r=1A.1w(O,B.J.1R([],M,1));if(r 2C I.2t){5P=r}N{if(r 2C 2x){5P=I.9q(r)}N{5P=I.dp(r)}}}1e(e){5P=I.9q(e)}F 5P};B.1k.1z=["dj","di","dh","9p","dg","2t","dp","9q","do","dn","jv","dm","ju","dl","5O","7i","jt","jr"];B.1k.1W=["dk"];B.1k.2d=G(){u m=B.J;u ne=m.2z(m.jq,D);ne("dj",G(jp){D.jo=jp});ne("di",G(jn){D.jo=jn});ne("dh",G(1t){D.43=1t});ne("9p",G(1t){D.43=1t});ne("dg",G(2s,1t){D.2s=2s;D.43=1t;1f{D.2y=2s.jm}1e(e){}});D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.1k.2d();B.J.2Y(D,B.1k);if(H(1q)!="L"){1q.2X("B.S");1q.2M("B.15")}if(H(1x)!="L"){1x.26("B.15",[])}1f{if(H(B.15)=="L"){14""}}1e(e){14"B.S 3F on B.15!"}if(H(B.S)=="L"){B.S={}}B.S.1r="B.S";B.S.1Y="1.3.1";B.S.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.S.1l=G(){F D.1K()};B.S.1z=["d5","cr","b9","95","94","j3","9k","cX","cw","iT","iV","4X","9j","iQ","hS","cs","ia","i9","i8","i7","i6","i5","i4","hV","i3","i2","i1","cu","hW","ct","i0","hZ","hY","hX","P","io","il","ik","ij","cm","ih","ii","ig","ie","ic","cv","8d","A","6m","ib","1E","$","4q","aH","cO","cN","iM","5G","iK","9d","9e","iH","iD","9c","iB","cG","97","hU","hT","iw","jh","jb","j6","j5","jk","jl"];B.S.1W=["9b"];B.S.5N=G(w,h){D.w=w;D.h=h};B.S.5N.1U.U=G(){u U=B.J.U;F"{w: "+U(D.w)+", h: "+U(D.h)+"}"};B.S.5t=G(x,y){D.x=x;D.y=y};B.S.5t.1U.U=G(){u U=B.J.U;F"{x: "+U(D.x)+", y: "+U(D.y)+"}"};B.S.5t.1U.1l=G(){F D.U()};B.J.2l(B.S,{jl:G(Q,o){Q=B.S.1E(Q);B.S.4X(Q,{"1T":{"9o":o,"-hL-9o":o,"-uw-9o":o,"47":" uv(9o="+(o*3k)+")"}})},jk:G(){u d=Y B.S.5N();u w=B.S.3X;u b=B.S.1Z.5s;if(w.jj){d.w=w.jj;d.h=w.uu}N{if(b.dd.9n){d.w=b.dd.9n;d.h=b.dd.ji}N{if(b&&b.9n){d.w=b.9n;d.h=b.ji}}}F d},jh:G(Q){u I=B.S;if(H(Q.w)=="2y"||H(Q.h)=="2y"){F Y I.5N(Q.w||0,Q.h||0)}Q=I.1E(Q);if(!Q){F L}if(I.4q(Q,"3u")!="98"){F Y I.5N(Q.jg||0,Q.ci||0)}u s=Q.1T;u je=s.dc;u jf=s.6P;s.dc="fR";s.6P="j8";s.3u="";u jd=Q.jg;u jc=Q.ci;s.3u="98";s.6P=jf;s.dc=je;F Y I.5N(jd,jc)},jb:G(Q,4Z){u I=B.S;Q=I.1E(Q);if(!Q){F L}u c=Y I.5t(0,0);if(Q.x&&Q.y){c.x+=Q.x||0;c.y+=Q.y||0;F c}N{if(Q.3t===O||I.4q(Q,"3u")=="98"){F L}}u 51=O;u 2j=O;u d=B.S.1Z;u de=d.7Z;u b=d.5s;if(Q.ja){51=Q.ja();c.x+=51.2I+(de.6y||b.6y)-(de.8q||b.8q);c.y+=51.3D+(de.4C||b.4C)-(de.8p||b.8p)}N{if(d.j9){51=d.j9(Q);c.x+=51.x;c.y+=51.y}N{if(Q.8g){c.x+=Q.db;c.y+=Q.da;2j=Q.8g;if(2j!=Q){1M(2j){c.x+=2j.db;c.y+=2j.da;2j=2j.8g}}u ua=ut.us.8G();if((H(7h)!="L"&&4M(7h.ur())<9)||(ua.2A("uq")!=-1&&I.4q(Q,"6P")=="j8")){c.x-=b.db;c.y-=b.da}}}}if(H(4Z)!="L"){4Z=M.2U(4Z);if(4Z){c.x-=(4Z.x||0);c.y-=(4Z.y||0)}}if(Q.3t){2j=Q.3t}N{2j=O}1M(2j&&2j.j7!="uo"&&2j.j7!="co"){c.x-=2j.6y;c.y-=2j.4C;if(2j.3t){2j=2j.3t}N{2j=O}}F c},j6:G(Q,d9,7g){Q=B.S.1E(Q);if(H(7g)=="L"){7g="px"}B.S.4X(Q,{"1T":{"5A":d9.w+7g,"3V":d9.h+7g}})},j5:G(Q,d8,7f){Q=B.S.1E(Q);if(H(7f)=="L"){7f="px"}B.S.4X(Q,{"1T":{"2I":d8.x+7f,"3D":d8.y+7f}})},cr:G(){F B.S.3X},b9:G(){F B.S.1Z},95:G(2m,1A){u I=B.S;u d6=I.1Z;u d7=I.un;u W;1f{I.3X=2m;I.1Z=2m.2v;W=1A()}1e(e){I.3X=d7;I.1Z=d6;14 e}I.3X=d7;I.1Z=d6;F W},d5:G(Q){u 7d=[];u 7c=[];u m=B.J;u I=B.S;if(H(Q)=="L"||Q===O){Q=I.1Z}N{Q=I.1E(Q)}m.d4(Q,G(Q){u 1b=Q.1b;if(m.7e(1b)){u 4Y=Q.cD;if(4Y=="cv"&&(Q.1J=="um"||Q.1J=="uk")&&!Q.ip){F O}if(4Y=="ct"){if(Q.j4>=0){u 9m=Q.1S[Q.j4];7d.1c(1b);7c.1c((9m.3m)?9m.3m:9m.7X);F O}7d.1c(1b);7c.1c("");F O}if(4Y=="cu"||4Y=="P"||4Y=="8d"||4Y=="6m"){F Q.5h}7d.1c(1b);7c.1c(Q.3m||"");F O}F Q.5h});F[7d,7c]},94:G(1N,1A){u I=B.S;u d3=I.1Z;u W;1f{I.1Z=1N;W=1A()}1e(e){I.1Z=d3;14 e}I.1Z=d3;F W},j3:G(1b,j2,3y,j1){B.S.9b.5M(1b,j2,3y,j1)},9k:G(1j,7a){u im=B.15;u I=B.S;u 1Q=im.1Q;u iY=im.7b;u 4c=im.4c;u iX=I.9b;u iZ=I.9k;u iW=B.J.4d;1M(1h){if(H(1j)=="L"||1j===O){F O}if(H(1j.3T)!="L"&&1j.3T>0){F 1j}if(H(1j)=="2y"||H(1j)=="5L"){1j=1j.1l()}if(H(1j)=="1n"){F I.1Z.4S(1j)}if(H(1j.j0)=="G"){1j=1j.j0(7a);2V}if(H(1j)=="G"){1j=1j(7a);2V}u 9l=O;1f{9l=1Q(1j)}1e(e){}if(9l){F 4c(iZ,9l,iY(7a))}1f{1j=iX.3C(1j,7a);2V}1e(e){if(e!=iW){14 e}}F I.1Z.4S(1j.1l())}F L},iV:G(1j,79,iU){u o={};o[79]=iU;1f{F B.S.4X(1j,o)}1e(e){}F O},iT:G(1j,79){u I=B.S;u d2=I.4U.99[79];1j=I.1E(1j);1f{if(d2){F 1j[d2]}F 1j.fm(79)}1e(e){}F O},4X:G(1j,5K){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j)}if(5K){u d0=B.J.8Z;if(I.4U.6X){R(u k in 5K){u v=5K[k];if(H(v)=="3n"&&H(Q[k])=="3n"){d0(Q[k],v)}N{if(k.2W(0,2)=="on"){if(H(v)=="1n"){v=Y cZ(v)}Q[k]=v}N{Q.4p(k,v)}}}}N{u iS=I.4U.99;R(k in 5K){v=5K[k];u d1=iS[k];if(k=="1T"&&H(v)=="1n"){Q.1T.3x=v}N{if(H(d1)=="1n"){Q[d1]=v}N{if(H(Q[k])=="3n"&&H(v)=="3n"){d0(Q[k],v)}N{if(k.2W(0,2)=="on"){if(H(v)=="1n"){v=Y cZ(v)}Q[k]=v}N{Q.4p(k,v)}}}}}}}F Q},9j:G(1j){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j)}u 78=[I.9k(B.J.1R(O,M,1),Q)];u iR=B.J.2o;1M(78.K){u n=78.2P();if(H(n)=="L"||n===O){}N{if(H(n.3T)=="2y"){Q.2c(n)}N{78=iR(n,78)}}}F Q},iQ:G(1j){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j);M[0]=Q}u cY;1M((cY=Q.6n)){Q.6S(cY)}if(M.K<2){F Q}N{F I.9j.1w(D,M)}},cX:G(1b,4b){u Q;u I=B.S;u m=B.J;if(H(4b)=="1n"||H(4b)=="2y"){u 3G=m.1R([1b,O],M,1);F M.2U.1w(D,3G)}if(H(1b)=="1n"){if(4b&&"1b"in 4b&&!I.4U.6X){1b=("<"+1b+" 1b=\\""+I.9c(4b.1b)+"\\">")}Q=I.1Z.2S(1b)}N{Q=1b}if(4b){I.4X(Q,4b)}if(M.K<=2){F Q}N{u 3G=m.1R([Q],M,2);F I.9j.1w(D,3G)}},cw:G(){u m=B.J;F m.2z.1w(D,m.1R([B.S.cX],M))},cs:G(5J,1d){u I=B.S;5J=I.1E(5J);u cW=5J.3t;if(1d){1d=I.1E(1d);cW.uj(1d,5J)}N{cW.6S(5J)}F 1d},1E:G(id){u I=B.S;if(M.K==1){F((H(id)=="1n")?I.1Z.hN(id):id)}N{F B.J.2r(I.1E,M)}},4q:G(iP,cV,cU){if(M.K==2){cU=cV}u I=B.S;u el=I.1E(iP);u 77=I.1Z;if(!el||el==77){F L}if(el.iO){F el.iO[cV]}if(H(77.5k)=="L"){F L}if(77.5k===O){F L}u 9i=77.5k.g4(el,O);if(H(9i)=="L"||9i===O){F L}F 9i.6q(cU)},aH:G(76,9g,4W){u I=B.S;if(H(76)=="L"||76===O){76="*"}if(H(4W)=="L"||4W===O){4W=I.1Z}4W=I.1E(4W);u 9h=(4W.fr(76)||I.1Z.1p);if(H(9g)=="L"||9g===O){F B.J.1R(O,9h)}u cR=[];R(u i=0;i<9h.K;i++){u cS=9h[i];u cT=cS.3M.2R(" ");R(u j=0;j<cT.K;j++){if(cT[j]==9g){cR.1c(cS);2K}}}F cR},iN:G(5I,9f){u W=G(){u cQ=M.2U.5H;R(u i=0;i<cQ.K;i++){if(cQ[i].1w(D,M)===1m){2K}}if(9f){1f{D[5I]=O}1e(e){}}};W.5H=[];F W},cO:G(cP,5I,1A,9f){u I=B.S;u 4V=cP[5I];u 75=4V;if(!(H(4V)=="G"&&H(4V.5H)=="3n"&&4V.5H!==O)){75=I.iN(5I,9f);if(H(4V)=="G"){75.5H.1c(4V)}cP[5I]=75}75.5H.1c(1A)},cN:G(1A){u I=B.S;I.cO(I.3X,"gh",1A,1h)},iM:G(74){u I=B.S;I.cN(G(){74=I.1E(74);if(74){74.ui()}})},5G:G(iL,cM){u I=B.S;u 1i=I.1E(iL);if(I.4U.6X){1i.4p("iq",cM)}N{1i.4p("3M",cM)}},iK:G(cL){u I=B.S;R(u i=1;i<M.K;i++){u 1i=I.1E(M[i]);if(!I.9d(1i,cL)){I.9e(1i,cL)}}},9d:G(iJ,73){u I=B.S;u 1i=I.1E(iJ);u 2F=1i.3M;if(2F.K===0){I.5G(1i,73);F 1h}if(2F==73){F 1m}u cK=1i.3M.2R(" ");R(u i=0;i<cK.K;i++){if(cK[i]==73){F 1m}}I.5G(1i,2F+" "+73);F 1h},9e:G(iI,cJ){u I=B.S;u 1i=I.1E(iI);u 2F=1i.3M;if(2F.K===0){F 1m}if(2F==cJ){I.5G(1i,"");F 1h}u 72=1i.3M.2R(" ");R(u i=0;i<72.K;i++){if(72[i]==cJ){72.4y(i,1);I.5G(1i,72.2b(" "));F 1h}}F 1m},iH:G(iG,iF,iE){u 1i=B.S.1E(iG);u X=B.S.9e(1i,iF);if(X){B.S.9d(1i,iE)}F X},iD:G(iC,uh){u 1i=B.S.1E(iC);u cI=1i.3M.2R(" ");R(u i=1;i<M.K;i++){u cH=1m;R(u j=0;j<cI.K;j++){if(cI[j]==M[i]){cH=1h;2K}}if(!cH){F 1m}}F 1h},9c:G(s){F s.23(/&/g,"&ug;").23(/"/g,"&uf;").23(/</g,"&lt;").23(/>/g,"&gt;")},iB:G(2q){F B.S.cG(2q).2b("")},cG:G(2q,1g){if(H(1g)=="L"||1g===O){1g=[]}u 70=[2q];u I=B.S;u cB=I.9c;u iA=I.4U;1M(70.K){2q=70.hP();if(H(2q)=="1n"){1g.1c(2q)}N{if(2q.3T==1){1g.1c("<"+2q.cD.8G());u 71=[];u cF=iA(2q);R(u i=0;i<cF.K;i++){u a=cF[i];71.1c([" ",a.1b,"=\\"",cB(a.3m),"\\""])}71.iz();R(i=0;i<71.K;i++){u cE=71[i];R(u j=0;j<cE.K;j++){1g.1c(cE[j])}}if(2q.ue()){1g.1c(">");70.1c("</"+2q.cD.8G()+">");u cC=2q.5h;R(i=cC.K-1;i>=0;i--){70.1c(cC[i])}}N{1g.1c("/>")}}N{if(2q.3T==3){1g.1c(cB(2q.iv))}}}}F 1g},97:G(ix,cA){u m=B.J;u iy=m.1R(O,M,1);B.15.9a(m.47(O,m.2r(B.S.1E,iy)),G(cA){cA.1T.3u=ix})},iw:G(1j,iu){u W=[];(G(1j){u cn=1j.5h;if(cn){R(u i=0;i<cn.K;i++){M.2U.cz(D,cn[i])}}u cy=1j.iv;if(H(cy)=="1n"){W.1c(cy)}})(B.S.1E(1j));if(iu){F W}N{F W.2b("")}},2d:G(2m){u m=B.J;D.1Z=2v;D.3X=2m;D.9b=Y m.4a();u 6Z=D.1Z.2S("cj");u 2T;if(6Z&&6Z.6Y&&6Z.6Y.K>0){u it=m.47;2T=G(1j){F it(2T.ir,1j.6Y)};2T.cx={};B.15.9a(6Z.6Y,G(a){2T.cx[a.1b]=a.3m});2T.ir=G(a){F(2T.cx[a.1b]!=a.3m)};2T.6X=1m;2T.99={"iq":"3M","ip":"ud","uc":"ub","R":"u9"}}N{2T=G(1j){F 1j.6Y};2T.6X=1h;2T.99={}}D.4U=2T;u 1C=D.cw;D.io=1C("ul");D.il=1C("ol");D.ik=1C("li");D.ij=1C("td");D.cm=1C("tr");D.ii=1C("u8");D.ih=1C("u7");D.ig=1C("u6");D.ie=1C("u5");D.ic=1C("th");D.cv=1C("ck");D.8d=1C("cj");D.A=1C("a");D.6m=1C("4u");D.ib=1C("u4");D.ia=1C("2e");D.i9=1C("tt");D.i8=1C("4O");D.i7=1C("h1");D.i6=1C("h2");D.i5=1C("h3");D.i4=1C("br");D.i3=1C("hr");D.i2=1C("u3");D.i1=1C("u2");D.cu=1C("u1");D.P=1C("p");D.ct=1C("u0");D.i0=1C("hJ");D.hZ=1C("tZ");D.hY=1C("tY");D.hX=1C("tX");D.hW=1C("tW");D.hV=1C("tV");D.hU=m.2z(D.97,"98");D.hT=m.2z(D.97,"8c");D.hS=D.cs;D.$=D.1E;D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)}});B.S.2d(((H(2O)=="L")?D:2O));if(!B.3d){95=B.S.95;94=B.S.94}B.J.2Y(D,B.S);if(H(1q)!="L"){1q.2X("B.1I");1q.2M("B.1H");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.1H",[]);1x.26("B.J",[])}1f{if(H(B.J)=="L"||H(B.1H)=="L"){14""}}1e(e){14"B.1I 3F on B.J 3W B.1H!"}if(H(B.1I)=="L"){B.1I={}}B.1I.1r="B.1I";B.1I.1Y="1.3.1";B.1I.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1I.1l=G(){F D.1K()};B.1I.bY=G(6W){u m=B.1I;6W=!(!6W);if(m.3l&&m.3l.8Q!=6W){m.3l.hA();m.3l=O}if(!m.3l||m.3l.8P){m.3l=Y m.1I(6W,B.1H.2L)}F m.3l};B.1I.1I=G(4R,6V){if(H(6V)=="L"||6V===O){6V=B.1H.2L}D.2L=6V;u tU=B.J.2l;u c3=B.J.8Z;u 1O=B.J.1O;u hM=B.J.4L;u 2m=2O;u 6U="tT";if(H(B.S)!="L"){2m=B.S.cr()}if(!4R){u 5F=2m.tS.tR.2R("?")[0].23(/[:\\/.><&]/g,"hR");u 1b=6U+"hR"+5F;u 5D=2m.cp("",1b,"tQ,tP,3V=hQ");if(!5D){cq("tO tN to cp tM 2O tL to hP-up tK.");F L}5D.2v.fl("<!tJ co tI \\"-//tH//tG co 4.0 tF//tE\\" "+"\\"fq://fp.tD.fo/cm/tC/tB.tA\\">"+"<hO><5E><8Y>[B.1I]</8Y></5E>"+"<5s></5s></hO>");5D.2v.hG();5D.2v.8Y+=" "+2m.2v.8Y;2m=5D}u 1N=2m.2v;D.1N=1N;u 21=1N.hN(6U);u c4=!!21;if(21&&H(21.5B)!="L"){21.5B.2L=D.2L;21.5B.6K();F 21.5B}if(c4){u cl;1M((cl=21.6n)){21.6S(cl)}}N{21=1N.2S("4u");21.id=6U}21.5B=D;u 8T=1N.2S("ck");u 8S=1N.2S("ck");u 6O=1N.2S("2e");u 6N=1N.2S("2e");u 6M=1N.2S("2e");u 6L=1N.2S("2e");u 3L=1N.2S("4u");u 42=1N.2S("4u");u 8U=6U+"tz";D.8N=hM(D.8N);u 4T=[];u 6R=O;u cf=G(1t){u 6T=1t.3N;if(H(6T)=="2y"){6T=B.1H.5C[6T]}F 6T};u cd=G(1t){F 1t.3z.2b(" ")};u ca=1O(G(1t){u 8W=cf(1t);u 7X=cd(1t);u c=D.8N[8W];u p=1N.2S("cj");p.3M="B-49 B-5C-"+8W;p.1T.3x="ty: 2N; 4F-8X: -hL-4O-3y; 4F-8X: -o-4O-3y; 4F-8X: 4O-3y; 4F-8X: 4O-tx; hK-3y: 2K-hK; 3y-hJ: tw; 3U: "+c;p.2c(1N.4S(8W+": "+7X));42.2c(p);42.2c(1N.2S("br"));if(3L.ci>3L.hI){3L.4C=0}N{3L.4C=3L.hI}},D);u hD=G(1t){4T[4T.K]=1t;ca(1t)};u hF=G(){u cg,ce;1f{cg=Y 8V(8T.3m);ce=Y 8V(8S.3m)}1e(e){ch("2x in 47 tv: "+e.43);F O}F G(1t){F(cg.hH(cf(1t))&&ce.hH(cd(1t)))}};u cc=G(){1M(42.6n){42.6S(42.6n)}};u hB=G(){4T=[];cc()};u bZ=1O(G(){if(D.8P){F}D.8P=1h;if(B.1I.3l==D){B.1I.3l=O}D.2L.c9(8U);21.5B=O;if(4R){21.3t.6S(21)}N{D.2m.hG()}},D);u c7=G(){cc();R(u i=0;i<4T.K;i++){u 1t=4T[i];if(6R===O||6R(1t)){ca(1t)}}};D.6K=G(){6R=hF();c7();D.2L.c9(8U);D.2L.hE(8U,6R,hD)};u c0=1O(G(){4T=D.2L.c8();c7()},D);u c2=1O(G(6Q){6Q=6Q||2O.6D;2h=6Q.6w||6Q.8t;if(2h==13){D.6K()}},D);u 31="3u: 8c; z-c6: c5; 2I: 2N; 6f: 2N; 6P: tu; 5A: 3k%; he-3U: 4F; c1: "+D.8O;if(4R){31+="; 3V: ts; 3E-3D: fO 8a 8y"}N{31+="; 3V: 3k%;"}21.1T.3x=31;if(!c4){1N.5s.2c(21)}31={"3x":"5A: 33%; 3u: 8Q; c1: "+D.8O};c3(8T,{"3m":"8L|8M|8K|8J|8I","hC":c2,"1T":31});21.2c(8T);c3(8S,{"3m":".*","hC":c2,"1T":31});21.2c(8S);31="5A: 8%; 3u:8Q; c1: "+D.8O;6O.2c(1N.4S("tq"));6O.8R=1O("6K",D);6O.1T.3x=31;21.2c(6O);6N.2c(1N.4S("tp"));6N.8R=c0;6N.1T.3x=31;21.2c(6N);6M.2c(1N.4S("tn"));6M.8R=hB;6M.1T.3x=31;21.2c(6M);6L.2c(1N.4S("tm"));6L.8R=bZ;6L.1T.3x=31;21.2c(6L);3L.1T.3x="fS: tk; 5A: 3k%";42.1T.3x="5A: 3k%; 3V: "+(4R?"tj":"3k%");3L.2c(42);21.2c(3L);D.6K();c0();if(4R){D.2m=L}N{D.2m=2m}D.8Q=4R;D.hA=bZ;D.8P=1m;F D};B.1I.1I.1U={"8O":"ti tg,tf-te","8N":{"8M":"1v","8L":"gU","8K":"1F","8J":"8y","8I":"bx"}};B.1I.1W=["1I"];B.1I.1z=["bY"];B.1I.2d=G(){D.2k={":3e":D.1z,":1p":B.J.2o(D.1z,D.1W)};B.J.3f(D);B.1I.3l=O};B.1I.2d();B.J.2Y(D,B.1I);if(H(1q)!="L"){1q.2X("B.V");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.V 3F on B.J"}if(H(B.V)=="L"){B.V={}}B.V.1r="B.V";B.V.1Y="1.3.1";B.V.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.V.1l=G(){F D.1K()};B.V.V=G(1v,hz,1F,6J){if(H(6J)=="L"||6J===O){6J=1}D.1B={r:1v,g:hz,b:1F,a:6J}};B.V.V.1U={bX:B.V.V,tc:G(hy){u 1B=D.1B;u m=B.V;F m.V.3Y(1B.r,1B.g,1B.b,hy)},tb:G(1o){u 1G=D.41();1G.h=1o;u m=B.V;F m.V.4H(1G)},ta:G(hx){u 1G=D.41();1G.s=hx;u m=B.V;F m.V.4H(1G)},t9:G(hw){u 1G=D.41();1G.l=hw;u m=B.V;F m.V.4H(1G)},t8:G(hv){u 1G=D.41();1G.l=28.29(1G.l-hv,0);u m=B.V;F m.V.4H(1G)},t7:G(hu){u 1G=D.41();1G.l=28.2a(1G.l+hu,1);u m=B.V;F m.V.4H(1G)},fJ:G(ht,5z){if(H(5z)=="L"||5z===O){5z=0.5}u sf=1-5z;u s=D.1B;u d=ht.1B;u df=5z;F B.V.V.3Y((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df))},h4:G(hs){u a=D.6r();u b=hs.6r();F B.J.2f([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a])},hq:G(){F D.41().b>0.5},t6:G(){F(!D.hq())},t5:G(){u c=D.41();u 2Z=B.V.6F;u W=D.ho;if(!W){u 5y=(2Z(c.h,bF).6I(0)+","+2Z(c.s,3k).hp(4)+"%"+","+2Z(c.l,3k).hp(4)+"%");u a=c.a;if(a>=1){a=1;W="1G("+5y+")"}N{if(a<=0){a=0}W="t4("+5y+","+a+")"}D.ho=W}F W},hl:G(){u c=D.1B;u 2Z=B.V.6F;u W=D.hn;if(!W){u 5y=(2Z(c.r,3h).6I(0)+","+2Z(c.g,3h).6I(0)+","+2Z(c.b,3h).6I(0));if(c.a!=1){W="t3("+5y+","+c.a+")"}N{W="1B("+5y+")"}D.hn=W}F W},6r:G(){F B.J.4L(D.1B)},t2:G(){u m=B.V;u c=D.1B;u 2Z=B.V.6F;u W=D.hm;if(!W){W=("#"+m.6E(2Z(c.r,3h))+m.6E(2Z(c.g,3h))+m.6E(2Z(c.b,3h)));D.hm=W}F W},t1:G(){u 2Q=D.2Q;u c=D.1B;if(H(2Q)=="L"||2Q===O){2Q=B.V.bA(D.1B);D.2Q=2Q}F B.J.4L(2Q)},41:G(){u 1G=D.1G;u c=D.1B;if(H(1G)=="L"||1G===O){1G=B.V.bC(D.1B);D.1G=1G}F B.J.4L(1G)},1l:G(){F D.hl()},U:G(){u c=D.1B;u hk=[c.r,c.g,c.b,c.a];F D.bX.1r+"("+hk.2b(", ")+")"}};B.J.2l(B.V.V,{3Y:G(1v,bW,1F,8H){u hj=B.V.V;if(M.K==1){u 1B=1v;1v=1B.r;bW=1B.g;1F=1B.b;if(H(1B.a)=="L"){8H=L}N{8H=1B.a}}F Y hj(1v,bW,1F,8H)},4H:G(1o,t0,sZ,sY){u m=B.V;F m.V.3Y(m.bB.1w(m,M))},sX:G(1o,sW,sV,sU){u m=B.V;F m.V.3Y(m.bz.1w(m,M))},hi:G(1b){u 8F=B.V.V;if(1b.3Z(0)=="\\""){1b=1b.3H(1,1b.K-2)}u bV=8F.by[1b.8G()];if(H(bV)=="1n"){F 8F.bT(bV)}N{if(1b=="aP"){F 8F.sT()}}F O},8f:G(4Q){u I=B.V.V;u bU=4Q.3H(0,3);if(bU=="1B"){F I.h9(4Q)}N{if(bU=="1G"){F I.h8(4Q)}N{if(4Q.3Z(0)=="#"){F I.bT(4Q)}}}F I.hi(4Q)},bT:G(4P){if(4P.3Z(0)=="#"){4P=4P.2W(1)}u 8E=[];u i,5x;if(4P.K==3){R(i=0;i<3;i++){5x=4P.3H(i,1);8E.1c(3w(5x+5x,16)/3h)}}N{R(i=0;i<6;i+=2){5x=4P.3H(i,2);8E.1c(3w(5x,16)/3h)}}u bS=B.V.V;F bS.3Y.1w(bS,8E)},bG:G(4O,hf,hg,4N){if(4N.2A(4O)===0){4N=4N.2W(4N.2A("(",3)+1,4N.K-1)}u bR=4N.2R(/\\s*,\\s*/);u bP=[];R(u i=0;i<bR.K;i++){u c=bR[i];u 2i;u bQ=c.2W(c.K-3);if(c.3Z(c.K-1)=="%"){2i=0.bE*4M(c.2W(0,c.K-1))}N{if(bQ=="sS"){2i=4M(c)/bF}N{if(bQ=="sR"){2i=4M(c)/(28.sQ*2)}N{2i=hg[i]*4M(c)}}}bP.1c(2i)}F D[hf].1w(D,bP)},bN:G(Q,sP,sO){u d=B.S;u 2F=B.V.V;R(Q=d.1E(Q);Q;Q=Q.3t){u bO=d.4q.1w(d,M);if(!bO){2V}u 8D=2F.8f(bO);if(!8D){2K}if(8D.6r().a>0){F 8D}}F O},ba:G(Q){u 2F=B.V.V;F 2F.bN(Q,"aZ","he-3U")||2F.sN()},sM:G(Q){u 2F=B.V.V;F 2F.bN(Q,"3U","3U")||2F.sL()},sK:G(){F B.J.4L(B.V.V.by)}});B.J.2l(B.V,{6F:G(v,8C){v*=8C;if(v<0){F 0}N{if(v>8C){F 8C}N{F v}}},hc:G(n1,n2,1o){if(1o>6){1o-=6}N{if(1o<0){1o+=6}}u 2i;if(1o<1){2i=n1+(n2-n1)*1o}N{if(1o<3){2i=n2}N{if(1o<4){2i=n1+(n2-n1)*(4-1o)}N{2i=n1}}}F 2i},bz:G(1o,5w,3i,bM){if(M.K==1){u 2Q=1o;1o=2Q.h;5w=2Q.s;3i=2Q.v;bM=2Q.a}u 1v;u 3K;u 1F;if(5w===0){1v=0;3K=0;1F=0}N{u i=28.8B(1o*6);u f=(1o*6)-i;u p=3i*(1-5w);u q=3i*(1-(5w*f));u t=3i*(1-(5w*(1-f)));hd(i){3j 1:1v=q;3K=3i;1F=p;2K;3j 2:1v=p;3K=3i;1F=t;2K;3j 3:1v=p;3K=q;1F=3i;2K;3j 4:1v=t;3K=p;1F=3i;2K;3j 5:1v=3i;3K=p;1F=q;2K;3j 6:3j 0:1v=3i;3K=t;1F=p;2K}}F{r:1v,g:3K,b:1F,a:bM}},bB:G(1o,5v,3v,bL){if(M.K==1){u 1G=1o;1o=1G.h;5v=1G.s;3v=1G.l;bL=1G.a}u 1v;u 8A;u 1F;if(5v===0){1v=3v;8A=3v;1F=3v}N{u m2;if(3v<=0.5){m2=3v*(1+5v)}N{m2=3v+5v-(3v*5v)}u m1=(2*3v)-m2;u f=B.V.hc;u h6=1o*6;1v=f(m1,m2,h6+2);8A=f(m1,m2,h6);1F=f(m1,m2,h6-2)}F{r:1v,g:8A,b:1F,a:bL}},bA:G(1v,4K,1F,bK){if(M.K==1){u 1B=1v;1v=1B.r;4K=1B.g;1F=1B.b;bK=1B.a}u 29=28.29(28.29(1v,4K),1F);u 2a=28.2a(28.2a(1v,4K),1F);u 1o;u 8z;u hb=29;if(2a==29){1o=0;8z=0}N{u 6H=(29-2a);8z=6H/29;if(1v==29){1o=(4K-1F)/6H}N{if(4K==29){1o=2+((1F-1v)/6H)}N{1o=4+((1v-4K)/6H)}}1o/=6;if(1o<0){1o+=1}if(1o>1){1o-=1}}F{h:1o,s:8z,v:hb,a:bK}},bC:G(1v,4J,1F,bI){if(M.K==1){u 1B=1v;1v=1B.r;4J=1B.g;1F=1B.b;bI=1B.a}u 29=28.29(1v,28.29(4J,1F));u 2a=28.2a(1v,28.2a(4J,1F));u 1o;u 6G;u bJ=(29+2a)/2;u 4I=29-2a;if(4I===0){1o=0;6G=0}N{if(bJ<=0.5){6G=4I/(29+2a)}N{6G=4I/(2-29-2a)}if(1v==29){1o=(4J-1F)/4I}N{if(4J==29){1o=2+((1F-1v)/4I)}N{1o=4+((1v-4J)/4I)}}1o/=6;if(1o<0){1o+=1}if(1o>1){1o-=1}}F{h:1o,s:6G,l:bJ,a:bI}},6E:G(1P){1P=28.ha(1P);u bH=1P.1l(16);if(1P<16){F"0"+bH}F bH},2d:G(){u m=B.J;D.V.h9=m.1O(D.V.bG,D.V,"1B","3Y",[1/3h,1/3h,1/3h,1]);D.V.h8=m.1O(D.V.bG,D.V,"1G","4H",[1/bF,0.bE,0.bE,1]);u 4G=1/3;u bD={8y:[0,0,0],1F:[0,0,1],gY:[0.6,0.4,0.2],gX:[0,1,1],sJ:[4G,4G,4G],gR:[0.5,0.5,0.5],bx:[0,1,0],sI:[2*4G,2*4G,2*4G],gN:[1,0,1],gL:[1,0.5,0],gK:[0.5,0,0.5],1v:[1,0,0],aP:[0,0,0,0],4F:[1,1,1],gI:[1,1,0]};u h7=G(1b,r,g,b,a){u W=D.3Y(r,g,b,a);D[1b]=G(){F W};F W};R(u k in bD){u 1b=k+"V";u h5=m.2o([h7,D.V,1b],bD[k]);D.V[1b]=m.1O.1w(O,h5)}u h0=G(){R(u i=0;i<M.K;i++){if(!(M[i]2C V)){F 1m}}F 1h};u gZ=G(a,b){F a.h4(b)};m.3f(D);m.5u(D.V.1r,h0,gZ);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)}}});B.V.1z=["V"];B.V.1W=["6F","bC","bB","bA","bz","6E"];B.V.2d();B.J.2Y(D,B.V);B.V.V.by={sH:"#sG",sF:"#sE",sD:"#gW",sC:"#sB",sA:"#sz",sy:"#sx",sw:"#sv",8y:"#su",st:"#sr",1F:"#sq",sp:"#so",gY:"#sn",sm:"#sl",sk:"#sj",si:"#sh",sg:"#se",sd:"#sc",sb:"#sa",s9:"#s8",s7:"#s6",gX:"#gW",s5:"#s4",s3:"#s2",s1:"#s0",rZ:"#gV",rY:"#rX",rW:"#gV",rV:"#rU",rT:"#rS",rR:"#rQ",rP:"#rO",rN:"#rM",gU:"#rL",rK:"#rJ",rI:"#rH",rG:"#rF",rE:"#gT",rD:"#gT",rC:"#rB",rA:"#rz",ry:"#rx",rw:"#rv",ru:"#gS",rt:"#gS",rs:"#rr",rq:"#rp",ro:"#rn",rm:"#rl",rk:"#gM",rj:"#ri",rh:"#rg",rf:"#rd",rc:"#rb",gR:"#gQ",bx:"#ra",r9:"#r8",r7:"#gQ",r6:"#r5",r4:"#r3",r2:"#r1",r0:"#qZ",qY:"#qX",qW:"#qV",qU:"#qT",qS:"#qR",qQ:"#qP",qO:"#qN",qM:"#qL",qK:"#qJ",qI:"#qH",qG:"#qF",qE:"#gP",qD:"#qC",qB:"#gP",qA:"#qz",qy:"#qx",qw:"#qv",qu:"#qt",qr:"#gO",qq:"#gO",qp:"#qo",qn:"#qm",ql:"#qk",qj:"#qi",qh:"#qg",gN:"#gM",qf:"#qe",qd:"#qc",qb:"#qa",q9:"#q8",q7:"#q6",q5:"#q4",q3:"#q2",q1:"#q0",pZ:"#pY",pX:"#pW",pV:"#pU",pT:"#pS",pR:"#pQ",pP:"#pO",pN:"#pM",pL:"#pK",pJ:"#pI",pH:"#pG",pF:"#pE",gL:"#pD",pC:"#pB",pA:"#pz",py:"#pw",pv:"#pu",pt:"#ps",pr:"#pq",pp:"#po",pn:"#pm",pl:"#pj",pi:"#ph",pg:"#pf",pe:"#pd",gK:"#pc",1v:"#pb",pa:"#p9",p8:"#p7",p6:"#p5",p4:"#p3",p2:"#p1",p0:"#oZ",oY:"#oX",oW:"#oV",oU:"#oT",oS:"#oR",oQ:"#oP",oO:"#gJ",oN:"#gJ",oM:"#oL",oK:"#oJ",oI:"#oH",oG:"#oF",oE:"#oD",oC:"#oB",oA:"#oz",oy:"#ox",ow:"#ov",ou:"#ot",4F:"#os",oq:"#op",gI:"#oo",om:"#ok"};if(H(1q)!="L"){1q.2X("B.1u");1q.2M("B.J");1q.2M("B.S")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.S",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1u 3F on B.J!"}1f{if(H(B.S)=="L"){14""}}1e(e){14"B.1u 3F on B.S!"}if(H(B.1u)=="L"){B.1u={}}B.1u.1r="B.1u";B.1u.1Y="1.3.1";B.1u.4x=[];B.1u.bq=G(1d,e){D.1L=e||2O.6D;D.gH=1d};B.J.2l(B.1u.bq.1U,{1K:G(){u U=B.J.U;u 1y="{6D(): "+U(D.6D())+", 1d(): "+U(D.1d())+", 1J(): "+U(D.1J())+", 8x(): "+U(D.8x())+", 4E(): "+"{8w: "+U(D.4E().8w)+", 8v: "+U(D.4E().8v)+", 8u: "+U(D.4E().8u)+", 2P: "+U(D.4E().2P)+", bw: "+U(D.4E().bw)+"}";if(D.1J()&&D.1J().2A("2h")===0){1y+=", 2h(): {3J: "+U(D.2h().3J)+", 1n: "+U(D.2h().1n)+"}"}if(D.1J()&&(D.1J().2A("3I")===0||D.1J().2A("gE")!=-1||D.1J()=="gD")){1y+=", 3I(): {4D: "+U(D.3I().4D)+", 6A: "+U(D.3I().6A);if(D.1J()!="gC"){1y+=", 2e: {2I: "+U(D.3I().2e.2I)+", 6v: "+U(D.3I().2e.6v)+", 3g: "+U(D.3I().2e.3g)+"}}"}N{1y+="}"}}if(D.1J()=="gG"||D.1J()=="gF"){1y+=", 6C(): "+U(D.6C())}1y+="}";F 1y},1l:G(){F D.1K()},1d:G(){F D.gH},6D:G(){F D.1L},1J:G(){F D.1L.1J||L},8x:G(){F D.1L.8x||D.1L.oj},6C:G(){if(D.1J()=="gG"){F(D.1L.6C||D.1L.aW)}N{if(D.1J()=="gF"){F(D.1L.6C||D.1L.oi)}}F L},4E:G(){u m={};m.8w=D.1L.oh;m.8v=D.1L.og;m.8u=D.1L.oe||1m;m.2P=D.1L.od;m.bw=m.8w||m.8v||m.2P||m.8u;F m},2h:G(){u k={};if(D.1J()&&D.1J().2A("2h")===0){if(D.1J()=="oc"||D.1J()=="ob"){k.3J=D.1L.8t;k.1n=(B.1u.5r[k.3J]||"oa");F k}N{if(D.1J()=="o9"){k.3J=0;k.1n="";if(H(D.1L.6B)!="L"&&D.1L.6B!==0&&!B.1u.bv[D.1L.6B]){k.3J=D.1L.6B;k.1n=bu.bt(k.3J)}N{if(D.1L.8t&&H(D.1L.6B)=="L"){k.3J=D.1L.8t;k.1n=bu.bt(k.3J)}}F k}}}F L},3I:G(){u m={};u e=D.1L;if(D.1J()&&(D.1J().2A("3I")===0||D.1J().2A("gE")!=-1||D.1J()=="gD")){m.6A=Y B.S.5t(0,0);if(e.6z||e.6x){m.6A.x=(!e.6z||e.6z<0)?0:e.6z;m.6A.y=(!e.6x||e.6x<0)?0:e.6x}m.4D=Y B.S.5t(0,0);if(e.8s||e.8r){m.4D.x=(!e.8s||e.8s<0)?0:e.8s;m.4D.y=(!e.8r||e.8r<0)?0:e.8r}N{u de=B.S.1Z.7Z;u b=B.S.1Z.5s;m.4D.x=e.6z+(de.6y||b.6y)-(de.8q||b.8q);m.4D.y=e.6x+(de.4C||b.4C)-(de.8p||b.8p)}if(D.1J()!="gC"){m.2e={};m.2e.2I=1m;m.2e.3g=1m;m.2e.6v=1m;if(e.6w){m.2e.2I=(e.6w==1);m.2e.6v=(e.6w==2);m.2e.3g=(e.6w==3)}N{m.2e.2I=!!(e.2e&1);m.2e.3g=!!(e.2e&2);m.2e.6v=!!(e.2e&4)}}F m}F L},2J:G(){D.8o();D.8n()},8o:G(){if(D.1L.8o){D.1L.8o()}N{D.1L.o8=1h}},8n:G(){if(D.1L.8n){D.1L.8n()}N{D.1L.o7=1m}}});B.1u.bv={3:"gz",o6:"gA",o5:"gy",o4:"gx",o3:"gw",o2:"gv",o1:"gu",o0:"gs",nZ:"gr",nY:"gq",nX:"gp",nW:"go"};R(i=gB;i<=nV;i++){B.1u.bv[i]="gk"+(i-gB+1)}B.1u.5r={8:"nU",9:"nT",12:"gA",13:"gz",16:"nS",17:"nR",18:"nQ",19:"nP",20:"nO",27:"nN",32:"nM",33:"gy",34:"gx",35:"gw",36:"gv",37:"gu",38:"gs",39:"gr",40:"gq",44:"nL",45:"gp",46:"go",59:"gn",91:"nK",92:"nJ",93:"nI",nH:"nG",nF:"nE",nD:"nC-gm",nB:"nA",nz:"ny",nx:"nw",nv:"nu",nt:"gn",ns:"nr",nq:"np",nn:"nm-gm",nl:"nk",nj:"ni",nh:"ng",nf:"nd",nc:"nb",na:"n9",n8:"n7"};R(u i=48;i<=57;i++){B.1u.5r[i]="gl"+(i-48)}R(i=65;i<=90;i++){B.1u.5r[i]="gl"+bu.bt(i)}R(i=96;i<=n6;i++){B.1u.5r[i]="n5"+(i-96)}R(i=gj;i<=n4;i++){B.1u.5r[i]="gk"+(i-gj+1)}B.J.2l(B.1u,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},g7:G(){u I=B.1u;u bs=I.4x;R(u i=0;i<bs.K;i++){I.6t(bs[i])}gi I.4x;1f{2O.gh=L}1e(e){}1f{2O.g8=L}1e(e){}},gb:G(1d,1A,1i,gg){u E=B.1u.bq;if(!gg){F B.J.1O(1A,1i)}1i=1i||1d;if(H(1A)=="1n"){F G(gf){1i[1A].1w(1i,[Y E(1d,gf)])}}N{F G(gd){1A.1w(1i,[Y E(1d,gd)])}}},6s:G(1d,2D,5q,4B){1d=B.S.1E(1d);u I=B.1u;if(H(2D)!="1n"){14 Y 2x("\'2D\' 5p be a 1n")}u 1i=O;u 1A=O;if(H(4B)!="L"){1i=5q;1A=4B;if(H(4B)=="1n"){if(H(5q[4B])!="G"){14 Y 2x("\'bp\' 5p be a G on \'gc\'")}}N{if(H(4B)!="G"){14 Y 2x("\'bp\' 5p be a G or 1n")}}}N{if(H(5q)!="G"){14 Y 2x("\'gc\' 5p be a G if \'bp\' is 2E n3")}N{1A=5q}}if(H(1i)=="L"||1i===O){1i=1d}u bm=!!(1d.bo||1d.bn);u 8m=I.gb(1d,1A,1i,bm);if(1d.bo){1d.bo(2D.3H(2),8m,1m)}N{if(1d.bn){1d.bn(2D,8m)}}u bk=[1d,2D,8m,bm,5q,4B];I.4x.1c(bk);F bk},6t:G(6u){if(!6u[3]){F}u 1d=6u[0];u 2D=6u[1];u bj=6u[2];if(1d.ga){1d.ga(2D.3H(2),bj,1m)}N{if(1d.g9){1d.g9(2D,bj)}N{14 Y 2x("\'1d\' 5p be a S n0")}}},8j:G(bh){u I=B.1u;u 5o=I.4x;u m=B.J;if(M.K>1){u 1d=B.S.1E(M[0]);u 2D=M[1];u 1i=M[2];u 1A=M[3];R(u i=5o.K-1;i>=0;i--){u o=5o[i];if(o[0]===1d&&o[1]===2D&&o[4]===1i&&o[5]===1A){I.6t(o);5o.4y(i,1);F 1h}}}N{u 5n=m.bi(5o,bh);if(5n>=0){I.6t(bh);5o.4y(5n,1);F 1h}}F 1m},8i:G(1d,2D){1d=B.S.1E(1d);u m=B.J;u 8l=m.bg(m.1R(O,M,1));u I=B.1u;u bd=I.6t;u 4z=I.4x;if(8l.K===0){R(u i=4z.K-1;i>=0;i--){u 4A=4z[i];if(4A[0]===1d){bd(4A);4z.4y(i,1)}}}N{u bf={};R(u i=0;i<8l.K;i++){bf[8l[i]]=1h}R(u i=4z.K-1;i>=0;i--){u 4A=4z[i];if(4A[0]===1d&&4A[1]in bf){bd(4A);4z.4y(i,1)}}}},8h:G(1d,2D){u bc=B.1u.4x;1d=B.S.1E(1d);u 3G=B.J.1R(O,M,2);u 5m=[];R(u i=0;i<bc.K;i++){u 8k=bc[i];if(8k[0]===1d&&8k[1]===2D){1f{8k[2].1w(1d,3G)}1e(e){5m.1c(e)}}}if(5m.K==1){14 5m[0]}N{if(5m.K>1){u e=Y 2x("mZ bb mY in mX \'2D\', mW bb mV");e.bb=5m;14 e}}}});B.1u.1W=[];B.1u.1z=["6s","8j","8h","8i"];B.1u.2d=G(2m){u m=B.J;D.1Z=2v;D.3X=2m;1f{D.6s(2O,"g8",D.g7)}1e(e){}D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.1u.2d(D);if(!B.3d){6s=B.1u.6s;8j=B.1u.8j;8i=B.1u.8i;8h=B.1u.8h}B.J.2Y(D,B.1u);if(H(1q)!="L"){1q.2X("B.1X");1q.2M("B.J");1q.2M("B.S");1q.2M("B.V")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.S",[]);1x.26("B.V",[])}1f{if(H(B.J)=="L"||H(B.S)=="L"||H(B.V)=="L"){14""}}1e(e){14"B.1X 3F on B.J, B.S 3W B.V!"}if(H(B.1X)=="L"){B.1X={}}B.1X.1r="B.1X";B.1X.1Y="1.3.1";B.1X.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1X.1l=G(){F D.1K()};B.1X.aI=G(e,g6){e=B.S.1E(e);D.fN(g6);if(D.1S.fL){e=D.g5(e)}u 4w=D.1S.3U;u C=B.V.V;if(D.1S.3U=="aW"){4w=C.ba(e)}N{if(!(4w 2C C)){4w=C.8f(4w)}}D.82=(4w.6r().a<=0);u 5l=D.1S.aV;if(D.1S.aV=="fM"){5l=C.ba(e.8g)}N{if(!(5l 2C C)){5l=C.8f(5l)}}D.g3(e,4w,5l)};B.1X.aI.1U={g5:G(e){u mU=e.3t;u 1N=B.S.b9();if(H(1N.5k)=="L"||1N.5k===O){F e}u 4v=1N.5k.g4(e,O);if(H(4v)=="L"||4v===O){F e}u b8=B.S.6m({"1T":{3u:"8c",mT:4v.6q("6p-3D"),85:4v.6q("6p-3g"),mS:4v.6q("6p-6f"),86:4v.6q("6p-2I"),6p:"2N"}});b8.6o=e.6o;e.6o="";e.2c(b8);F e},g3:G(e,b7,8e){if(D.1S.3E){D.g2(e,8e)}if(D.fy()){D.fX(e,b7,8e)}if(D.fx()){D.fV(e,b7,8e)}},g2:G(el,g1){u b6="6l 8a "+D.aQ(g1);u g0="3E-2I: "+b6;u fZ="3E-3g: "+b6;u fY="1T=\'"+g0+";"+fZ+"\'";el.6o="<4u "+fY+">"+el.6o+"</4u>"},fX:G(el,fW,b5){u b4=D.b1(b5);R(u i=0;i<D.1S.89;i++){b4.2c(D.b0(fW,b5,i,"3D"))}el.1T.mR=0;el.mQ(b4,el.6n)},fV:G(el,fU,b3){u b2=D.b1(b3);R(u i=(D.1S.89-1);i>=0;i--){b2.2c(D.b0(fU,b3,i,"6f"))}el.1T.mP=0;el.2c(b2)},b1:G(fT){u 2q=B.S;F 2q.6m({1T:{aZ:fT.1l()}})},b0:G(aY,fQ,n,aX){u 6k=B.S.8d();u 2p=6k.1T;2p.aZ=aY.1l();2p.3u="8c";2p.3V="6l";2p.fS="fR";2p.mO="6l";u 8b=D.aQ(aY,fQ);if(D.1S.3E&&n===0){2p.mN="8a";2p.mM="6l";2p.84="2N";2p.83="2N";2p.mL="2N";2p.3V="2N";2p.fP=8b.1l()}N{if(8b){2p.fP=8b.1l();2p.mK="8a";2p.mJ="2N 6l"}}if(!D.1S.4r&&(n==(D.1S.89-1))){2p.3V="fO"}D.fI(6k,n,aX);D.fG(6k,n,aX);F 6k},fN:G(fK){D.1S={6g:"1p",3U:"aW",aV:"fM",5j:1h,3E:1m,4r:1m,fL:1m};B.J.2l(D.1S,fK);D.1S.89=(D.1S.4r?2:4)},aL:G(){u 88=D.1S.6g;if(D.6h(88,"1p","3D")){F""}u aU=(88.2A("tl")!=-1);u aT=(88.2A("tr")!=-1);if(aU&&aT){F""}if(aU){F"2I"}if(aT){F"3g"}F""},aK:G(){u 87=D.1S.6g;if(D.6h(87,"1p","6f")){F""}u aS=(87.2A("bl")!=-1);u aR=(87.2A("br")!=-1);if(aS&&aR){F""}if(aS){F"2I"}if(aR){F"3g"}F""},aQ:G(aN,aO){if(aN=="aP"){F aO}N{if(D.1S.3E){F D.1S.3E}N{if(D.1S.5j){F aO.fJ(aN)}}}F""},fI:G(el,n,fH){u 6j=D.fE(n)+"px";u aM=(fH=="3D"?D.aL():D.aK());u 4t=el.1T;if(aM=="2I"){4t.86=6j;4t.85="2N"}N{if(aM=="3g"){4t.85=6j;4t.86="2N"}N{4t.86=6j;4t.85=6j}}},fG:G(el,n,fF){u 6i=D.fz(n)+"px";u aJ=(fF=="3D"?D.aL():D.aK());u 4s=el.1T;if(aJ=="2I"){4s.84=6i;4s.83="2N"}N{if(aJ=="3g"){4s.83=6i;4s.84="2N"}N{4s.84=6i;4s.83=6i}}},fE:G(n){if(D.82){F 0}u o=D.1S;if(o.4r&&o.5j){u fD=[1,0];F fD[n]}N{if(o.4r){u fC=[2,1];F fC[n]}N{if(o.5j){u fB=[3,2,1,0];F fB[n]}N{u fA=[5,3,2,1];F fA[n]}}}},fz:G(n){u o=D.1S;u 5i;if(o.4r&&(o.5j||D.82)){F 1}N{if(o.4r){5i=[1,0]}N{if(o.5j){5i=[2,1,1,1]}N{if(o.3E){5i=[0,2,0,0]}N{if(D.82){5i=[5,3,2,1]}N{F 0}}}}}F 5i[n]},6h:G(1y){R(u i=1;i<M.K;i++){if(1y.2A(M[i])!=-1){F 1h}}F 1m},fy:G(){F D.6h(D.1S.6g,"1p","3D","tl","tr")},fx:G(){F D.6h(D.1S.6g,"1p","6f","bl","br")},mI:G(el){F(el.5h.K==1&&el.5h[0].3T==3)}};B.1X.aF=G(e,fw){Y B.1X.aI(e,fw)};B.1X.fs=G(fv,fu,ft){u aG=B.S.aH(fv,fu);R(u i=0;i<aG.K;i++){B.1X.aF(aG[i],ft)}};B.1X.V=B.V.V;B.1X.mH=B.S.4q;B.1X.2d=G(){u m=B.J;m.3f(D);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)}};B.1X.1z=["aF","fs"];B.1X.1W=[];B.1X.2d();B.J.2Y(D,B.1X);if(H(B)=="L"){B={}}if(H(B.B)=="L"){B.B={}}B.B.1r="B.B";B.B.1Y="1.3.1";B.B.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.B.1l=G(){F D.1K()};B.B.aA=["J","15","1H","1D","1s","1k","S","1I","V","1u","1X"];if(H(1x)!="L"||H(1q)!="L"){if(H(1q)!="L"){1q.2X("B.B");1q.2M("B.*")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.15",[]);1x.26("B.1H",[]);1x.26("B.1D",[]);1x.26("B.1s",[]);1x.26("B.1k",[]);1x.26("B.S",[]);1x.26("B.1I",[]);1x.26("B.V",[]);1x.26("B.1u",[]);1x.26("B.1X",[])}(G(){u 6e=B.J.1R;u I=B.B;u aE=I.aA;u aD=[];u aC=[];u 81={};u i,k,m,1p;R(i=0;i<aE.K;i++){m=B[aE[i]];6e(aD,m.1z);6e(aC,m.1W);R(k in m.2k){81[k]=6e(81[k],m.2k[k])}1p=m.2k[":1p"];if(!1p){1p=6e(O,m.1z,m.1W)}u j;R(j=0;j<1p.K;j++){k=1p[j];I[k]=m[k]}}I.1z=aD;I.1W=aC;I.2k=81}())}N{if(H(B.3d)=="L"){B.3d=1h}(G(){u 80=2v.fr("7W");u ay="fq://fp.mG.fo/mF/mE/mD.is.aB.mC";u 2w=O;u ax=O;u az={};u i;R(i=0;i<80.K;i++){u 1d=80[i].fm("1d");if(!1d){2V}az[1d]=1h;if(1d.3C(/B.js$/)){2w=1d.2W(0,1d.mB("B.js"));ax=80[i]}}if(2w===O){F}u 6d=B.B.aA;R(u i=0;i<6d.K;i++){if(B[6d[i]]){2V}u 7Y=2w+6d[i]+".js";if(7Y in az){2V}if(2v.7Z&&2v.7Z.mA==ay){u s=2v.mz(ay,"7W");s.4p("id","my"+2w+6d[i]);s.4p("1d",7Y);s.4p("1J","mx/x-fk");ax.3t.2c(s)}N{2v.fl("<7W 1d=\\""+7Y+"\\" 1J=\\"7X/fk\\"></7W>")}}})()}',62,1976,'||||||||||||||||||||||||||||||var|||||||MochiKit||this||return|function|typeof|self|Base|length|undefined|arguments|else|null||elem|for|DOM||repr|Color|rval|res|new||||||throw|Iter|||||next|name|push|src|catch|try|lst|true|obj|node|Async|toString|false|string|hue|all|dojo|NAME|Format|msg|Signal|red|apply|JSAN|str|EXPORT|func|rgb|_425|DateTime|getElement|blue|hsl|Logging|LoggingPane|type|__repr__|_event|while|doc|bind|num|iter|extend|options|style|prototype|seq|EXPORT_OK|Visual|VERSION|_document||_434||replace|forwardCall|StopIteration|use||Math|max|min|join|appendChild|__new__|button|compare|date|key|val|_329|EXPORT_TAGS|update|win|pair|concat|_596|dom|map|req|Deferred|sync|document|base|Error|number|partial|indexOf||instanceof|sig|not|cls|list|fired|left|stop|break|logger|require|0px|window|shift|hsv|split|createElement|_423|callee|continue|substring|provide|_exportSymbols|ccc||_464|||||||||step|pred|_51|__compat__|common|nameFunctions|right|255|_517|case|100|_loggingPane|value|object|callback|TypeError|_251|_246|_113|parentNode|display|_522|parseInt|cssText|wrap|info|isArrayLike|end|match|top|border|depends|args|substr|mouse|code|_519|_443|className|level|err|frac|Date|_135|_85|nodeType|color|height|and|_window|fromRGB|charAt||asHSL|_444|message||||filter||LogMessage|AdapterRegistry|_366|imap|NotFound|locked|counter|_262|_messages|operator|cmp|_165|_161|pairs|arr|_52|setAttribute|computedStyle|compact|_614|_610|div|_576|_572|_observers|splice|_565|_566|_555|scrollTop|page|modifier|white|_541|fromHSL|_539|_535|_528|clone|parseFloat|_505|pre|_499|_497|_427|createTextNode|_446|attributeArray|_388|_379|updateNodeAttributes|_341|_326||box|errback|results|paused|chain|_285||ofs||NamedError|_175|_147|_122|_83|_54|_17|childNodes|_619|blend|defaultView|_574|_569|idx|_562|must|_554|_specialKeys|body|Coordinates|registerComparator|_521|_516|hex|mid|_478|width|loggingPane|LogLevel|nwin|head|url|setElementClass|callStack|path|dest|_359|boolean|register|Dimensions|DeferredLock|_313|addCallback|_310|waiting|onreadystatechange|_290|LOCALE|year|printfire|_214|log|_213|_211|pos|_155|_153||typeMatcher|listMinMax|_114|_40|itr|typ|_19|_634|_625|bottom|corners|_hasString|_612|_608|_595|1px|DIV|firstChild|innerHTML|padding|getPropertyValue|asRGB|connect|_disconnect|_559|middle|which|clientY|scrollLeft|clientX|client|charCode|relatedTarget|event|toColorPart|clampColorComponent|_537|_534|toFixed|_468|buildAndApplyFilter|_442|_441|_440|_439|position|_463|_447|removeChild|_449|uid|_428|_426|compliant|attributes|_422|_409|_412|_400|_395|_390|_389|_377|_375|_363|attr|ctx|repeat|_340|_339|isNotEmpty|_335|_333|opera|DeferredList|ret|_309|silentlyCancelled|canceller|_nextId|Array|_293|XMLHttpRequest|chained|_281|tail|_252|_225|msec|day|month|iso|Logger|_208|listeners|_200|_198|_194|_196|reduce|range|_169|_162|truth|registerRepr|_121|_70|_58|_56|_47|_45|_41|_13|_1|script|text|uri|documentElement|_630|_629|isTransparent|borderRightWidth|borderLeftWidth|marginRight|marginLeft|_602|_599|numSlices|solid|_597|block|SPAN|_579|fromString|offsetParent|signal|disconnectAll|disconnect|_570|_563|_557|preventDefault|stopPropagation|clientTop|clientLeft|pageY|pageX|keyCode|meta|ctrl|alt|target|black|_532|_524|floor|_513|_512|_500|_495|toLowerCase|_487|DEBUG|INFO|WARNING|FATAL|ERROR|colorTable|logFont|closed|inline|onclick|_438|_437|_445|RegExp|_452|space|title|updatetree|||||withDocument|withWindow||setDisplayForElement|none|renames|forEach|domConverters|escapeHTML|addElementClass|removeElementClass|once|_378|_380|_376|appendChildNodes|coerceToDOM|_355|opt|clientWidth|opacity|GenericError|fail|resultList|_307|_301|_fire|can|addCallbacks|_resback|percent|decimal|separator|twoDigitFloat|_274|_273|_264|_257|_250|_249|_254|_248|_243|_242|fmt|_240|_245|getTime|sec|hour|_209|slice|_206|iterateNextIter|registerIteratorFactory|arrayLikeIter|iteratorRegistry|takewhile|ifilterfalse|ifilter|_181|_176|_168|_166|_159|_tee|deque|arg|fun|jsonRegistry|reprString|reprRegistry|comparatorRegistry|urlEncode|_110|_108|cur|_95|_87|_71|im_preargs||_53|_57|_46|present|like|array|Argument|_15|_12|_632|_631|_633|SUBMODULES|only|_628|_627|_626|roundElement|_624|getElementsByTagAndClassName|_RoundCorners|_613|_whichSideBottom|_whichSideTop|_609|_605|_606|transparent|_borderColor|_604|_603|_601|_600|bgColor|fromElement|_594|_592|backgroundColor|_createCornerSlice|_createCorner|_590|_589|_587|_586|_581|_578|_577|currentDocument|fromBackground|errors|_568|_564||sigs|flattenArguments|_561|findIdentical|_560|_558||_556|attachEvent|addEventListener|funcOrStr|Event||_548|fromCharCode|String|_specialMacKeys|any|green|_namedColors|hsvToRGB|rgbToHSV|hslToRGB|rgbToHSL|_542|01|360|_fromColorString|_540|_536|_538|_529|_523|_518|fromComputedStyle|_511|_507|_508|_506|_501|fromHexString|_498|_496|_486|__class__|createLoggingPane|_459|_461|font|_462|_430|_435|1000|index|_460|getMessages|removeListener|_451||_457|_450|infore|_448|_456|logDebug|offsetHeight|span|input|_436|TR||HTML|open|alert|currentWindow|swapDOM|SELECT|FORM|INPUT|createDOMFunc|ignoreAttr|_421|call|_417|_410|_415|nodeName|_414|_413|emitHTML|good|_406|_399|_397|_393|_392|addLoadEvent|addToCallStack|_387|_386|_381|_382|_383|_373|_372|_369|createDOM|_365|Function|_360|_362|_358|_344|nodeWalk|formContents|_337|_338|_334|_332|offsetTop|offsetLeft|visibility|parentElement|||XMLHttpRequestError|BrowserComplianceError|CancelledError|AlreadyCalledError|evalJSONRequest|sendXMLHttpRequest|wait|doSimpleXMLHttpRequest|getXMLHttpRequest|succeed|_312|finishedCount|_308|_cbDeferred|_303|_297|queryString|_nothing|_289|XMLHTTP|ActiveXObject|eval|_284|_check|error|_279|default|rstrip|lstrip|formatLocale|roundToFixed|truncToFixed|_276|pow|_272|_271|_270|sign|_265|_263|tmp|_238|_232|toISODate|toISOTime|getFullYear|getDate|getMonth|_230|_padTwo|_228|useNativeConsole|_212|compareLogMessage|isLogMessage|unshift|_207||maxSize|_202|_199|logLevelAtLeast|console|hasIterateNext|iterateNext|arrayLike|groupby||exhaust|tee|dropwhile|applymap||islice|izip|cycle|count||_189|_188|_183|_185|_184|_186|_187|_182|identity|fetch|_180|_177|listMin|reprNumber|reprArrayLike|compareArrayLike|compareDateLike|isDateLike|findValue|_128|__export__|keyComparator|_124|_118|_93|_94|_90|_88|_84|_77|_68|_67|_66|_65|_60|im_func|_55|im_self|_48|_44|_42|_39|_36|_33|_27|_26|_25|_22|_24|_20|javascript|write|getAttribute||org|www|http|getElementsByTagName|roundClass|_623|_622|_621|_620|_isBottomRounded|_isTopRounded|_borderSize|_618|_617|_616|_615|_marginSize|_611|_setBorder|_607|_setMargin|blendedColor|_598|__unstable__wrapElement|fromParent|_setOptions|2px|borderColor|_593|hidden|overflow|_591|_588|_roundBottomCorners|_585|_roundTopCorners|_584|_583|_582|_580|_renderBorder|_roundCornersImpl|getComputedStyle|_doWrap|_571|_unloadCache|onunload|detachEvent|removeEventListener|_listener|objOrFunc|_552||_551|_549|onload|delete|112|KEY_F|KEY_|MINUS|KEY_SEMICOLON|KEY_DELETE|KEY_INSERT|KEY_ARROW_DOWN|KEY_ARROW_RIGHT|KEY_ARROW_UP||KEY_ARROW_LEFT|KEY_HOME|KEY_END|KEY_PAGE_DOWN|KEY_PAGE_UP|KEY_ENTER|KEY_NUM_PAD_CLEAR|63236|mousemove|contextmenu|click|mouseout|mouseover|_src|yellow|708090|purple|orange|ff00ff|magenta|778899|d3d3d3|808080|gray|696969|2f4f4f|darkred|a9a9a9|00ffff|cyan|brown|_547|_546||||compareRGB|_545||_543|fromHSLString|fromRGBString|round|_533|_hslValue|switch|background|_503|_504||fromName|_488|col|toRGBString|_hexString|_rgbString|_hslString|toPrecision|isLight||_481|_477|_476|_475|_474|_473|_469|_466|closePane|_458|onkeypress|_454|addListener|_455|close|test|scrollHeight|option|word|moz|_431|getElementById|html|pop|200|_|removeElement|showElement|hideElement|CANVAS|STRONG|FIELDSET|LEGEND|OPTGROUP|OPTION|TEXTAREA|LABEL|HR|BR|H3|H2|H1|PRE|TT|BUTTON|IMG|TH||TABLE||TFOOT|THEAD|TBODY|TD|LI|OL|||UL|checked|class|ignoreAttrFilter||_424|_419|nodeValue|scrapeText|_416|_418|sort|_411|toHTML|_404|hasElementClass|_403|_402|_401|swapElementClass|_398|_394|toggleElementClass|_391|focusOnLoad|_newCallStack|currentStyle|_371|replaceChildNodes|_364|_361|getNodeAttribute|_357|setNodeAttribute|_354|_352|_350|_353|toDOM|_346|_345|registerDOMConverter|selectedIndex|setElementPosition|setElementDimensions|tagName|absolute|getBoxObjectFor|getBoundingClientRect|elementPosition|_325|_324|_322|_323|offsetWidth|elementDimensions|clientHeight|innerWidth|getViewportDimensions|setOpacity|status|_317|deferred|_316|_newNamedError|maybeDeferred||gatherResults|callLater|loadJSONDoc|_311|consumeErrors|fireOnOneErrback|fireOnOneCallback|addErrback|_305|_304|_306|unlocked|release|_300|_299|_298|_296|_xhr_onreadystatechange|_xhr_canceller|304|responseText|Msxml2|addBoth|_pause|_continue|result|the|are|they|instances|_unpause|cancel|_280|_278|en_US|strip|percentFormat|twoDigitAverage|numberFormatter|_277|_275|isNaN|_259|_258|_260|_255|_253|_numberFormatter|_241|_239|_237|_236|_235|_234|_233|_231|toAmericanDate|toPaddedAmericanDate|americanDate|toISOTimestamp|isoTimestamp|isoDate|foot|sep||60000|_221|_isoRegexp|dispatchEvent|createEvent|warning|logWarning|fatal|logFatal|debug|logError|baseLog|_210|getMessageText|logToConsole|dispatchListeners|_204|_203|ident|_201|postError|alertListener|_197|_192|groupby_as_array|iextend|some|reversed|sorted|every|sum|_190|eat|_174|_173|_172|_171|_167|_163|_158|_157|_151|_144|_141||_139|_136|_134||_133|_132|zip|merge|isUndefined|isCallable|listMax|_131|_130|encodeURIComponent||_127|method|parseQueryString|evalJSON|registerJSON|serializeJSON|objMin|objMax|reverseKeyComparator|arrayEqual|objEqual|bindMethods|xfilter|xmap|isEmpty|isNull|isUndefinedOrNull|itemgetter|items|keys|setdefault|_126|_120|decodeURIComponent|_119|len|_109|_107|_104|_105|_101|_102|_98|||_100|_97|_96|_91|json|__json__|_82|_81|_80|_79|_76||_75|_74|_73|_69|_primitives|_64|_63||_62|_61|_59|_wrapDumbFunction|_49|_50|_31|_30|_21|_7|application|MochiKit_|createElementNS|namespaceURI|lastIndexOf|xul|there|gatekeeper|keymaster|mozilla|getElementsComputedStyle|_hasSingleTextChild|borderWidth|borderStyle|borderBottomWidth|borderTopWidth|borderTopStyle|fontSize|paddingBottom|insertBefore|paddingTop|marginBottom|marginTop|_575|property|see|handling|thrown|Multiple|element|||given|123|KEY_NUM_PAD_|105|KEY_APOSTROPHE|222|KEY_RIGHT_SQUARE_BRACKET|221|KEY_REVERSE_SOLIDUS|220|KEY_LEFT_SQUARE_BRACKET||219|KEY_GRAVE_ACCENT|192|KEY_SOLIDUS|191|KEY_FULL_STOP|190|KEY_HYPHEN|189||KEY_COMMA|188|KEY_EQUALS_SIGN|187|186|KEY_SCROLL_LOCK|145|KEY_NUM_LOCK|144|KEY_NUM_PAD_SOLIDUS|111|KEY_NUM_PAD_FULL_STOP|110|KEY_NUM_PAD_HYPHEN|109|KEY_NUM_PAD_PLUS_SIGN|107|KEY_NUM_PAD_ASTERISK|106|KEY_SELECT|KEY_WINDOWS_RIGHT|KEY_WINDOWS_LEFT|KEY_PRINT_SCREEN|KEY_SPACEBAR|KEY_ESCAPE|KEY_CAPS_LOCK|KEY_PAUSE|KEY_ALT|KEY_CTRL|KEY_SHIFT|KEY_TAB|KEY_BACKSPACE|63242|63272|63302|63233|63235|63232|63234|63273|63275|63277|63276|63289|returnValue|cancelBubble|keypress|KEY_UNKNOWN|keyup|keydown|shiftKey|metaKey||ctrlKey|altKey|toElement|srcElement|9acd32||yellowgreen||ffff00|f5f5f5|whitesmoke||ffffff|f5deb3|wheat|ee82ee|violet|40e0d0|turquoise|ff6347|tomato|d8bfd8|thistle|008080|teal|d2b48c|tan|4682b4|steelblue|00ff7f|springgreen|fffafa|snow|slategrey|slategray|6a5acd|slateblue|87ceeb|skyblue|c0c0c0|silver|a0522d|sienna|fff5ee|seashell|2e8b57|seagreen|f4a460|sandybrown|fa8072|salmon|8b4513|saddlebrown|4169e1|royalblue|bc8f8f|rosybrown|ff0000|800080|b0e0e6|powderblue|dda0dd|plum|ffc0cb|pink|cd853f||peru|ffdab9|peachpuff|ffefd5|papayawhip|db7093|palevioletred|afeeee|paleturquoise|98fb98|palegreen|eee8aa||palegoldenrod|da70d6|orchid|ff4500|orangered|ffa500|6b8e23|olivedrab|808000|olive|fdf5e6|oldlace|000080|navy|ffdead|navajowhite|ffe4b5|moccasin|ffe4e1|mistyrose|f5fffa|mintcream|191970|midnightblue|c71585|mediumvioletred|48d1cc|mediumturquoise|00fa9a|mediumspringgreen|7b68ee|mediumslateblue|3cb371|mediumseagreen|9370db|mediumpurple|ba55d3|mediumorchid|0000cd|mediumblue|66cdaa|mediumaquamarine|800000|maroon|faf0e6|linen|32cd32|limegreen|00ff00|lime|ffffe0|lightyellow|b0c4de|lightsteelblue|lightslategrey|lightslategray||87cefa|lightskyblue|20b2aa|lightseagreen|ffa07a|lightsalmon|ffb6c1|lightpink|lightgrey|90ee90|lightgreen|lightgray|fafad2|lightgoldenrodyellow|e0ffff|lightcyan|f08080|lightcoral|add8e6|lightblue|fffacd|lemonchiffon|7cfc00|lawngreen|fff0f5|lavenderblush|e6e6fa|lavender|f0e68c|khaki|fffff0|ivory|4b0082|indigo|cd5c5c|indianred|ff69b4|hotpink|f0fff0|honeydew|grey|adff2f|greenyellow|008000|daa520|goldenrod|ffd700||gold|f8f8ff|ghostwhite|dcdcdc|gainsboro|fuchsia|228b22|forestgreen|fffaf0|floralwhite|b22222|firebrick|1e90ff|dodgerblue|dimgrey|dimgray|00bfff|deepskyblue|ff1493|deeppink|9400d3|darkviolet|00ced1|darkturquoise|darkslategrey|darkslategray|483d8b|darkslateblue|8fbc8f|darkseagreen|e9967a|darksalmon|8b0000|9932cc|darkorchid|ff8c00|darkorange|556b2f|darkolivegreen|8b008b|darkmagenta|bdb76b|darkkhaki|darkgrey|006400|darkgreen|darkgray|b8860b|darkgoldenrod|008b8b|darkcyan|00008b|darkblue|dc143c|crimson|fff8dc|cornsilk|6495ed|cornflowerblue|ff7f50|coral|d2691e||chocolate|7fff00|chartreuse|5f9ea0|cadetblue|deb887|burlywood|a52a2a|8a2be2|blueviolet|0000ff|ffebcd||blanchedalmond|000000|ffe4c4|bisque|f5f5dc|beige|f0ffff|azure|7fffd4|aquamarine|aqua|faebd7|antiquewhite|f0f8ff|aliceblue|lightGray|darkGray|namedColors|blackColor|fromText|whiteColor|_510|_509|PI|rad|deg|transparentColor|_494|_493|_492|fromHSV|_491|_490|_489|asHSV|toHexString|rgba|hsla|toHSLString|isDark|lighterColorWithLevel|darkerColorWithLevel|colorWithLightness|colorWithSaturation|colorWithHue|colorWithAlpha||serif|sans|Verdana||8pt|8em|auto||Close|Clear||Load|Filter||10em||fixed|regex|emergency|line|margin|_Listener|dtd|loose|html4|w3|EN|Transitional|DTD|W3C|PUBLIC|DOCTYPE|blocking|due|debugging|able|Not|resizable|dependent|href|location|_MochiKit_LoggingPane|_429|canvas|strong|fieldset|legend|optgroup|select|form|textarea|label|img|table|tfoot|thead|tbody|htmlFor||useMap|usemap|defaultChecked|hasChildNodes|quot|amp|_405|focus|replaceChild|checkbox||radio|_win|BODY||safari|version|userAgent|navigator|innerHeight|alpha|khtml|Tried|acquire|clearTimeout|setTimeout|GET|ignore|send|abort|failed|Request|readyState|support|does|Browser|Microsoft|_288|_287|used|Deferreds|Chained|success|unfired|fr_FR|de_DE|00|abs|search|pattern|Invalid|getTimezoneOffset|getSeconds|getMinutes|getHours|UTC|3600000|initEvent|Events|debuggingBookmarklet|MESSAGES|LAST|_205|clear|ninfo|nlevel|timestamp|reverse|takes|initial|with|sequence|empty|iterable|numbers|dateLike|escape|find|forward|unregister|unescape|Object|compared|item|contains|logor|logand|cle|clt|cge|cgt|cne|ceq|zrshift|rshift|lshift|xor|mul|mod|sub|add|neg|lognot|_9|_2'.split('|'),0,{})\r
42184 \r
42185 \r
42186 /*\r
42187  * jQuery 1.2.1 - New Wave Javascript\r
42188  *\r
42189  * Copyright (c) 2007 John Resig (jquery.com)\r
42190  * Dual licensed under the MIT (MIT-LICENSE.txt)\r
42191  * and GPL (GPL-LICENSE.txt) licenses.\r
42192  *\r
42193  * $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $\r
42194  * $Rev: 3353 $\r
42195  */\r
42196 \r
42197 var decompressedJQuery = function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(G(){9(1m E!="W")H w=E;H E=18.15=G(a,b){I 6 7u E?6.5N(a,b):1u E(a,b)};9(1m $!="W")H D=$;18.$=E;H u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;E.1b=E.3A={5N:G(c,a){c=c||U;9(1m c=="1M"){H m=u.2S(c);9(m&&(m[1]||!a)){9(m[1])c=E.4D([m[1]],a);J{H b=U.3S(m[3]);9(b)9(b.22!=m[3])I E().1Y(c);J{6[0]=b;6.K=1;I 6}J c=[]}}J I 1u E(a).1Y(c)}J 9(E.1n(c))I 1u E(U)[E.1b.2d?"2d":"39"](c);I 6.6v(c.1c==1B&&c||(c.4c||c.K&&c!=18&&!c.1y&&c[0]!=W&&c[0].1y)&&E.2h(c)||[c])},4c:"1.2.1",7Y:G(){I 6.K},K:0,21:G(a){I a==W?E.2h(6):6[a]},2o:G(a){H b=E(a);b.4Y=6;I b},6v:G(a){6.K=0;1B.3A.1a.16(6,a);I 6},N:G(a,b){I E.N(6,a,b)},4I:G(a){H b=-1;6.N(G(i){9(6==a)b=i});I b},1x:G(f,d,e){H c=f;9(f.1c==3X)9(d==W)I 6.K&&E[e||"1x"](6[0],f)||W;J{c={};c[f]=d}I 6.N(G(a){L(H b 1i c)E.1x(e?6.R:6,b,E.1e(6,c[b],e,a,b))})},17:G(b,a){I 6.1x(b,a,"3C")},2g:G(e){9(1m e!="5i"&&e!=S)I 6.4n().3g(U.6F(e));H t="";E.N(e||6,G(){E.N(6.3j,G(){9(6.1y!=8)t+=6.1y!=1?6.6x:E.1b.2g([6])})});I t},5m:G(b){9(6[0])E(b,6[0].3H).6u().3d(6[0]).1X(G(){H a=6;1W(a.1w)a=a.1w;I a}).3g(6);I 6},8m:G(a){I 6.N(G(){E(6).6q().5m(a)})},8d:G(a){I 6.N(G(){E(6).5m(a)})},3g:G(){I 6.3z(1q,Q,1,G(a){6.58(a)})},6j:G(){I 6.3z(1q,Q,-1,G(a){6.3d(a,6.1w)})},6g:G(){I 6.3z(1q,P,1,G(a){6.12.3d(a,6)})},50:G(){I 6.3z(1q,P,-1,G(a){6.12.3d(a,6.2q)})},2D:G(){I 6.4Y||E([])},1Y:G(t){H b=E.1X(6,G(a){I E.1Y(t,a)});I 6.2o(/[^+>] [^+>]/.14(t)||t.1g("..")>-1?E.4V(b):b)},6u:G(e){H f=6.1X(G(){I 6.67?E(6.67)[0]:6.4R(Q)});H d=f.1Y("*").4O().N(G(){9(6[F]!=W)6[F]=S});9(e===Q)6.1Y("*").4O().N(G(i){H c=E.M(6,"2P");L(H a 1i c)L(H b 1i c[a])E.1j.1f(d[i],a,c[a][b],c[a][b].M)});I f},1E:G(t){I 6.2o(E.1n(t)&&E.2W(6,G(b,a){I t.16(b,[a])})||E.3m(t,6))},5V:G(t){I 6.2o(t.1c==3X&&E.3m(t,6,Q)||E.2W(6,G(a){I(t.1c==1B||t.4c)?E.2A(a,t)<0:a!=t}))},1f:G(t){I 6.2o(E.1R(6.21(),t.1c==3X?E(t).21():t.K!=W&&(!t.11||E.11(t,"2Y"))?t:[t]))},3t:G(a){I a?E.3m(a,6).K>0:P},7c:G(a){I 6.3t("."+a)},3i:G(b){9(b==W){9(6.K){H c=6[0];9(E.11(c,"24")){H e=c.4Z,a=[],Y=c.Y,2G=c.O=="24-2G";9(e<0)I S;L(H i=2G?e:0,33=2G?e+1:Y.K;i<33;i++){H d=Y[i];9(d.26){H b=E.V.1h&&!d.9V["1Q"].9L?d.2g:d.1Q;9(2G)I b;a.1a(b)}}I a}J I 6[0].1Q.1p(/\\r/g,"")}}J I 6.N(G(){9(b.1c==1B&&/4k|5j/.14(6.O))6.2Q=(E.2A(6.1Q,b)>=0||E.2A(6.2H,b)>=0);J 9(E.11(6,"24")){H a=b.1c==1B?b:[b];E("9h",6).N(G(){6.26=(E.2A(6.1Q,a)>=0||E.2A(6.2g,a)>=0)});9(!a.K)6.4Z=-1}J 6.1Q=b})},4o:G(a){I a==W?(6.K?6[0].3O:S):6.4n().3g(a)},6H:G(a){I 6.50(a).28()},6E:G(i){I 6.2J(i,i+1)},2J:G(){I 6.2o(1B.3A.2J.16(6,1q))},1X:G(b){I 6.2o(E.1X(6,G(a,i){I b.2O(a,i,a)}))},4O:G(){I 6.1f(6.4Y)},3z:G(f,d,g,e){H c=6.K>1,a;I 6.N(G(){9(!a){a=E.4D(f,6.3H);9(g<0)a.8U()}H b=6;9(d&&E.11(6,"1I")&&E.11(a[0],"4m"))b=6.4l("1K")[0]||6.58(U.5B("1K"));E.N(a,G(){H a=c?6.4R(Q):6;9(!5A(0,a))e.2O(b,a)})})}};G 5A(i,b){H a=E.11(b,"1J");9(a){9(b.3k)E.3G({1d:b.3k,3e:P,1V:"1J"});J E.5f(b.2g||b.6s||b.3O||"");9(b.12)b.12.3b(b)}J 9(b.1y==1)E("1J",b).N(5A);I a}E.1k=E.1b.1k=G(){H c=1q[0]||{},a=1,2c=1q.K,5e=P;9(c.1c==8o){5e=c;c=1q[1]||{}}9(2c==1){c=6;a=0}H b;L(;a<2c;a++)9((b=1q[a])!=S)L(H i 1i b){9(c==b[i])6r;9(5e&&1m b[i]==\'5i\'&&c[i])E.1k(c[i],b[i]);J 9(b[i]!=W)c[i]=b[i]}I c};H F="15"+(1u 3D()).3B(),6p=0,5c={};E.1k({8a:G(a){18.$=D;9(a)18.15=w;I E},1n:G(a){I!!a&&1m a!="1M"&&!a.11&&a.1c!=1B&&/G/i.14(a+"")},4a:G(a){I a.2V&&!a.1G||a.37&&a.3H&&!a.3H.1G},5f:G(a){a=E.36(a);9(a){9(18.6l)18.6l(a);J 9(E.V.1N)18.56(a,0);J 3w.2O(18,a)}},11:G(b,a){I b.11&&b.11.27()==a.27()},1L:{},M:G(c,d,b){c=c==18?5c:c;H a=c[F];9(!a)a=c[F]=++6p;9(d&&!E.1L[a])E.1L[a]={};9(b!=W)E.1L[a][d]=b;I d?E.1L[a][d]:a},30:G(c,b){c=c==18?5c:c;H a=c[F];9(b){9(E.1L[a]){2E E.1L[a][b];b="";L(b 1i E.1L[a])1T;9(!b)E.30(c)}}J{2a{2E c[F]}29(e){9(c.53)c.53(F)}2E E.1L[a]}},N:G(a,b,c){9(c){9(a.K==W)L(H i 1i a)b.16(a[i],c);J L(H i=0,48=a.K;i<48;i++)9(b.16(a[i],c)===P)1T}J{9(a.K==W)L(H i 1i a)b.2O(a[i],i,a[i]);J L(H i=0,48=a.K,3i=a[0];i<48&&b.2O(3i,i,3i)!==P;3i=a[++i]){}}I a},1e:G(c,b,d,e,a){9(E.1n(b))b=b.2O(c,[e]);H f=/z-?4I|7T-?7Q|1r|69|7P-?1H/i;I b&&b.1c==4W&&d=="3C"&&!f.14(a)?b+"2T":b},1o:{1f:G(b,c){E.N((c||"").2l(/\\s+/),G(i,a){9(!E.1o.3K(b.1o,a))b.1o+=(b.1o?" ":"")+a})},28:G(b,c){b.1o=c!=W?E.2W(b.1o.2l(/\\s+/),G(a){I!E.1o.3K(c,a)}).66(" "):""},3K:G(t,c){I E.2A(c,(t.1o||t).3s().2l(/\\s+/))>-1}},2k:G(e,o,f){L(H i 1i o){e.R["3r"+i]=e.R[i];e.R[i]=o[i]}f.16(e,[]);L(H i 1i o)e.R[i]=e.R["3r"+i]},17:G(e,p){9(p=="1H"||p=="2N"){H b={},42,41,d=["7J","7I","7G","7F"];E.N(d,G(){b["7C"+6]=0;b["7B"+6+"5Z"]=0});E.2k(e,b,G(){9(E(e).3t(\':3R\')){42=e.7A;41=e.7w}J{e=E(e.4R(Q)).1Y(":4k").5W("2Q").2D().17({4C:"1P",2X:"4F",19:"2Z",7o:"0",1S:"0"}).5R(e.12)[0];H a=E.17(e.12,"2X")||"3V";9(a=="3V")e.12.R.2X="7g";42=e.7e;41=e.7b;9(a=="3V")e.12.R.2X="3V";e.12.3b(e)}});I p=="1H"?42:41}I E.3C(e,p)},3C:G(h,j,i){H g,2w=[],2k=[];G 3n(a){9(!E.V.1N)I P;H b=U.3o.3Z(a,S);I!b||b.4y("3n")==""}9(j=="1r"&&E.V.1h){g=E.1x(h.R,"1r");I g==""?"1":g}9(j.1t(/4u/i))j=y;9(!i&&h.R[j])g=h.R[j];J 9(U.3o&&U.3o.3Z){9(j.1t(/4u/i))j="4u";j=j.1p(/([A-Z])/g,"-$1").2p();H d=U.3o.3Z(h,S);9(d&&!3n(h))g=d.4y(j);J{L(H a=h;a&&3n(a);a=a.12)2w.4w(a);L(a=0;a<2w.K;a++)9(3n(2w[a])){2k[a]=2w[a].R.19;2w[a].R.19="2Z"}g=j=="19"&&2k[2w.K-1]!=S?"2s":U.3o.3Z(h,S).4y(j)||"";L(a=0;a<2k.K;a++)9(2k[a]!=S)2w[a].R.19=2k[a]}9(j=="1r"&&g=="")g="1"}J 9(h.3Q){H f=j.1p(/\\-(\\w)/g,G(m,c){I c.27()});g=h.3Q[j]||h.3Q[f];9(!/^\\d+(2T)?$/i.14(g)&&/^\\d/.14(g)){H k=h.R.1S;H e=h.4v.1S;h.4v.1S=h.3Q.1S;h.R.1S=g||0;g=h.R.71+"2T";h.R.1S=k;h.4v.1S=e}}I g},4D:G(a,e){H r=[];e=e||U;E.N(a,G(i,d){9(!d)I;9(d.1c==4W)d=d.3s();9(1m d=="1M"){d=d.1p(/(<(\\w+)[^>]*?)\\/>/g,G(m,a,b){I b.1t(/^(70|6Z|6Y|9Q|4t|9N|9K|3a|9G|9E)$/i)?m:a+"></"+b+">"});H s=E.36(d).2p(),1s=e.5B("1s"),2x=[];H c=!s.1g("<9y")&&[1,"<24>","</24>"]||!s.1g("<9w")&&[1,"<6T>","</6T>"]||s.1t(/^<(9u|1K|9t|9r|9p)/)&&[1,"<1I>","</1I>"]||!s.1g("<4m")&&[2,"<1I><1K>","</1K></1I>"]||(!s.1g("<9m")||!s.1g("<9k"))&&[3,"<1I><1K><4m>","</4m></1K></1I>"]||!s.1g("<6Y")&&[2,"<1I><1K></1K><6L>","</6L></1I>"]||E.V.1h&&[1,"1s<1s>","</1s>"]||[0,"",""];1s.3O=c[1]+d+c[2];1W(c[0]--)1s=1s.5p;9(E.V.1h){9(!s.1g("<1I")&&s.1g("<1K")<0)2x=1s.1w&&1s.1w.3j;J 9(c[1]=="<1I>"&&s.1g("<1K")<0)2x=1s.3j;L(H n=2x.K-1;n>=0;--n)9(E.11(2x[n],"1K")&&!2x[n].3j.K)2x[n].12.3b(2x[n]);9(/^\\s/.14(d))1s.3d(e.6F(d.1t(/^\\s*/)[0]),1s.1w)}d=E.2h(1s.3j)}9(0===d.K&&(!E.11(d,"2Y")&&!E.11(d,"24")))I;9(d[0]==W||E.11(d,"2Y")||d.Y)r.1a(d);J r=E.1R(r,d)});I r},1x:G(c,d,a){H e=E.4a(c)?{}:E.5o;9(d=="26"&&E.V.1N)c.12.4Z;9(e[d]){9(a!=W)c[e[d]]=a;I c[e[d]]}J 9(E.V.1h&&d=="R")I E.1x(c.R,"9e",a);J 9(a==W&&E.V.1h&&E.11(c,"2Y")&&(d=="9d"||d=="9a"))I c.97(d).6x;J 9(c.37){9(a!=W){9(d=="O"&&E.11(c,"4t")&&c.12)6G"O 94 93\'t 92 91";c.90(d,a)}9(E.V.1h&&/6C|3k/.14(d)&&!E.4a(c))I c.4p(d,2);I c.4p(d)}J{9(d=="1r"&&E.V.1h){9(a!=W){c.69=1;c.1E=(c.1E||"").1p(/6O\\([^)]*\\)/,"")+(3I(a).3s()=="8S"?"":"6O(1r="+a*6A+")")}I c.1E?(3I(c.1E.1t(/1r=([^)]*)/)[1])/6A).3s():""}d=d.1p(/-([a-z])/8Q,G(z,b){I b.27()});9(a!=W)c[d]=a;I c[d]}},36:G(t){I(t||"").1p(/^\\s+|\\s+$/g,"")},2h:G(a){H r=[];9(1m a!="8P")L(H i=0,2c=a.K;i<2c;i++)r.1a(a[i]);J r=a.2J(0);I r},2A:G(b,a){L(H i=0,2c=a.K;i<2c;i++)9(a[i]==b)I i;I-1},1R:G(a,b){9(E.V.1h){L(H i=0;b[i];i++)9(b[i].1y!=8)a.1a(b[i])}J L(H i=0;b[i];i++)a.1a(b[i]);I a},4V:G(b){H r=[],2f={};2a{L(H i=0,6y=b.K;i<6y;i++){H a=E.M(b[i]);9(!2f[a]){2f[a]=Q;r.1a(b[i])}}}29(e){r=b}I r},2W:G(b,a,c){9(1m a=="1M")a=3w("P||G(a,i){I "+a+"}");H d=[];L(H i=0,4g=b.K;i<4g;i++)9(!c&&a(b[i],i)||c&&!a(b[i],i))d.1a(b[i]);I d},1X:G(c,b){9(1m b=="1M")b=3w("P||G(a){I "+b+"}");H d=[];L(H i=0,4g=c.K;i<4g;i++){H a=b(c[i],i);9(a!==S&&a!=W){9(a.1c!=1B)a=[a];d=d.8M(a)}}I d}});H v=8K.8I.2p();E.V={4s:(v.1t(/.+(?:8F|8E|8C|8B)[\\/: ]([\\d.]+)/)||[])[1],1N:/6w/.14(v),34:/34/.14(v),1h:/1h/.14(v)&&!/34/.14(v),35:/35/.14(v)&&!/(8z|6w)/.14(v)};H y=E.V.1h?"4h":"5h";E.1k({5g:!E.V.1h||U.8y=="8x",4h:E.V.1h?"4h":"5h",5o:{"L":"8w","8v":"1o","4u":y,5h:y,4h:y,3O:"3O",1o:"1o",1Q:"1Q",3c:"3c",2Q:"2Q",8u:"8t",26:"26",8s:"8r"}});E.N({1D:"a.12",8q:"15.4e(a,\'12\')",8p:"15.2I(a,2,\'2q\')",8n:"15.2I(a,2,\'4d\')",8l:"15.4e(a,\'2q\')",8k:"15.4e(a,\'4d\')",8j:"15.5d(a.12.1w,a)",8i:"15.5d(a.1w)",6q:"15.11(a,\'8h\')?a.8f||a.8e.U:15.2h(a.3j)"},G(i,n){E.1b[i]=G(a){H b=E.1X(6,n);9(a&&1m a=="1M")b=E.3m(a,b);I 6.2o(E.4V(b))}});E.N({5R:"3g",8c:"6j",3d:"6g",8b:"50",89:"6H"},G(i,n){E.1b[i]=G(){H a=1q;I 6.N(G(){L(H j=0,2c=a.K;j<2c;j++)E(a[j])[n](6)})}});E.N({5W:G(a){E.1x(6,a,"");6.53(a)},88:G(c){E.1o.1f(6,c)},87:G(c){E.1o.28(6,c)},86:G(c){E.1o[E.1o.3K(6,c)?"28":"1f"](6,c)},28:G(a){9(!a||E.1E(a,[6]).r.K){E.30(6);6.12.3b(6)}},4n:G(){E("*",6).N(G(){E.30(6)});1W(6.1w)6.3b(6.1w)}},G(i,n){E.1b[i]=G(){I 6.N(n,1q)}});E.N(["85","5Z"],G(i,a){H n=a.2p();E.1b[n]=G(h){I 6[0]==18?E.V.1N&&3y["84"+a]||E.5g&&38.33(U.2V["5a"+a],U.1G["5a"+a])||U.1G["5a"+a]:6[0]==U?38.33(U.1G["6n"+a],U.1G["6m"+a]):h==W?(6.K?E.17(6[0],n):S):6.17(n,h.1c==3X?h:h+"2T")}});H C=E.V.1N&&3x(E.V.4s)<83?"(?:[\\\\w*57-]|\\\\\\\\.)":"(?:[\\\\w\\82-\\81*57-]|\\\\\\\\.)",6k=1u 47("^>\\\\s*("+C+"+)"),6i=1u 47("^("+C+"+)(#)("+C+"+)"),6h=1u 47("^([#.]?)("+C+"*)");E.1k({55:{"":"m[2]==\'*\'||15.11(a,m[2])","#":"a.4p(\'22\')==m[2]",":":{80:"i<m[3]-0",7Z:"i>m[3]-0",2I:"m[3]-0==i",6E:"m[3]-0==i",3v:"i==0",3u:"i==r.K-1",6f:"i%2==0",6e:"i%2","3v-46":"a.12.4l(\'*\')[0]==a","3u-46":"15.2I(a.12.5p,1,\'4d\')==a","7X-46":"!15.2I(a.12.5p,2,\'4d\')",1D:"a.1w",4n:"!a.1w",7W:"(a.6s||a.7V||15(a).2g()||\'\').1g(m[3])>=0",3R:\'"1P"!=a.O&&15.17(a,"19")!="2s"&&15.17(a,"4C")!="1P"\',1P:\'"1P"==a.O||15.17(a,"19")=="2s"||15.17(a,"4C")=="1P"\',7U:"!a.3c",3c:"a.3c",2Q:"a.2Q",26:"a.26||15.1x(a,\'26\')",2g:"\'2g\'==a.O",4k:"\'4k\'==a.O",5j:"\'5j\'==a.O",54:"\'54\'==a.O",52:"\'52\'==a.O",51:"\'51\'==a.O",6d:"\'6d\'==a.O",6c:"\'6c\'==a.O",2r:\'"2r"==a.O||15.11(a,"2r")\',4t:"/4t|24|6b|2r/i.14(a.11)",3K:"15.1Y(m[3],a).K",7S:"/h\\\\d/i.14(a.11)",7R:"15.2W(15.32,G(1b){I a==1b.T;}).K"}},6a:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1u 47("^([:.#]*)("+C+"+)")],3m:G(a,c,b){H d,2b=[];1W(a&&a!=d){d=a;H f=E.1E(a,c,b);a=f.t.1p(/^\\s*,\\s*/,"");2b=b?c=f.r:E.1R(2b,f.r)}I 2b},1Y:G(t,o){9(1m t!="1M")I[t];9(o&&!o.1y)o=S;o=o||U;H d=[o],2f=[],3u;1W(t&&3u!=t){H r=[];3u=t;t=E.36(t);H l=P;H g=6k;H m=g.2S(t);9(m){H p=m[1].27();L(H i=0;d[i];i++)L(H c=d[i].1w;c;c=c.2q)9(c.1y==1&&(p=="*"||c.11.27()==p.27()))r.1a(c);d=r;t=t.1p(g,"");9(t.1g(" ")==0)6r;l=Q}J{g=/^([>+~])\\s*(\\w*)/i;9((m=g.2S(t))!=S){r=[];H p=m[2],1R={};m=m[1];L(H j=0,31=d.K;j<31;j++){H n=m=="~"||m=="+"?d[j].2q:d[j].1w;L(;n;n=n.2q)9(n.1y==1){H h=E.M(n);9(m=="~"&&1R[h])1T;9(!p||n.11.27()==p.27()){9(m=="~")1R[h]=Q;r.1a(n)}9(m=="+")1T}}d=r;t=E.36(t.1p(g,""));l=Q}}9(t&&!l){9(!t.1g(",")){9(o==d[0])d.44();2f=E.1R(2f,d);r=d=[o];t=" "+t.68(1,t.K)}J{H k=6i;H m=k.2S(t);9(m){m=[0,m[2],m[3],m[1]]}J{k=6h;m=k.2S(t)}m[2]=m[2].1p(/\\\\/g,"");H f=d[d.K-1];9(m[1]=="#"&&f&&f.3S&&!E.4a(f)){H q=f.3S(m[2]);9((E.V.1h||E.V.34)&&q&&1m q.22=="1M"&&q.22!=m[2])q=E(\'[@22="\'+m[2]+\'"]\',f)[0];d=r=q&&(!m[3]||E.11(q,m[3]))?[q]:[]}J{L(H i=0;d[i];i++){H a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];9(a=="*"&&d[i].11.2p()=="5i")a="3a";r=E.1R(r,d[i].4l(a))}9(m[1]==".")r=E.4X(r,m[2]);9(m[1]=="#"){H e=[];L(H i=0;r[i];i++)9(r[i].4p("22")==m[2]){e=[r[i]];1T}r=e}d=r}t=t.1p(k,"")}}9(t){H b=E.1E(t,r);d=r=b.r;t=E.36(b.t)}}9(t)d=[];9(d&&o==d[0])d.44();2f=E.1R(2f,d);I 2f},4X:G(r,m,a){m=" "+m+" ";H c=[];L(H i=0;r[i];i++){H b=(" "+r[i].1o+" ").1g(m)>=0;9(!a&&b||a&&!b)c.1a(r[i])}I c},1E:G(t,r,h){H d;1W(t&&t!=d){d=t;H p=E.6a,m;L(H i=0;p[i];i++){m=p[i].2S(t);9(m){t=t.7O(m[0].K);m[2]=m[2].1p(/\\\\/g,"");1T}}9(!m)1T;9(m[1]==":"&&m[2]=="5V")r=E.1E(m[3],r,Q).r;J 9(m[1]==".")r=E.4X(r,m[2],h);J 9(m[1]=="["){H g=[],O=m[3];L(H i=0,31=r.K;i<31;i++){H a=r[i],z=a[E.5o[m[2]]||m[2]];9(z==S||/6C|3k|26/.14(m[2]))z=E.1x(a,m[2])||\'\';9((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1g(m[5])||O=="$="&&z.68(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1g(m[5])>=0)^h)g.1a(a)}r=g}J 9(m[1]==":"&&m[2]=="2I-46"){H e={},g=[],14=/(\\d*)n\\+?(\\d*)/.2S(m[3]=="6f"&&"2n"||m[3]=="6e"&&"2n+1"||!/\\D/.14(m[3])&&"n+"+m[3]||m[3]),3v=(14[1]||1)-0,d=14[2]-0;L(H i=0,31=r.K;i<31;i++){H j=r[i],12=j.12,22=E.M(12);9(!e[22]){H c=1;L(H n=12.1w;n;n=n.2q)9(n.1y==1)n.4U=c++;e[22]=Q}H b=P;9(3v==1){9(d==0||j.4U==d)b=Q}J 9((j.4U+d)%3v==0)b=Q;9(b^h)g.1a(j)}r=g}J{H f=E.55[m[1]];9(1m f!="1M")f=E.55[m[1]][m[2]];f=3w("P||G(a,i){I "+f+"}");r=E.2W(r,f,h)}}I{r:r,t:t}},4e:G(b,c){H d=[];H a=b[c];1W(a&&a!=U){9(a.1y==1)d.1a(a);a=a[c]}I d},2I:G(a,e,c,b){e=e||1;H d=0;L(;a;a=a[c])9(a.1y==1&&++d==e)1T;I a},5d:G(n,a){H r=[];L(;n;n=n.2q){9(n.1y==1&&(!a||n!=a))r.1a(n)}I r}});E.1j={1f:G(g,e,c,h){9(E.V.1h&&g.4j!=W)g=18;9(!c.2u)c.2u=6.2u++;9(h!=W){H d=c;c=G(){I d.16(6,1q)};c.M=h;c.2u=d.2u}H i=e.2l(".");e=i[0];c.O=i[1];H b=E.M(g,"2P")||E.M(g,"2P",{});H f=E.M(g,"2t",G(){H a;9(1m E=="W"||E.1j.4T)I a;a=E.1j.2t.16(g,1q);I a});H j=b[e];9(!j){j=b[e]={};9(g.4S)g.4S(e,f,P);J g.7N("43"+e,f)}j[c.2u]=c;6.1Z[e]=Q},2u:1,1Z:{},28:G(d,c,b){H e=E.M(d,"2P"),2L,4I;9(1m c=="1M"){H a=c.2l(".");c=a[0]}9(e){9(c&&c.O){b=c.4Q;c=c.O}9(!c){L(c 1i e)6.28(d,c)}J 9(e[c]){9(b)2E e[c][b.2u];J L(b 1i e[c])9(!a[1]||e[c][b].O==a[1])2E e[c][b];L(2L 1i e[c])1T;9(!2L){9(d.4P)d.4P(c,E.M(d,"2t"),P);J d.7M("43"+c,E.M(d,"2t"));2L=S;2E e[c]}}L(2L 1i e)1T;9(!2L){E.30(d,"2P");E.30(d,"2t")}}},1F:G(d,b,e,c,f){b=E.2h(b||[]);9(!e){9(6.1Z[d])E("*").1f([18,U]).1F(d,b)}J{H a,2L,1b=E.1n(e[d]||S),4N=!b[0]||!b[0].2M;9(4N)b.4w(6.4M({O:d,2m:e}));b[0].O=d;9(E.1n(E.M(e,"2t")))a=E.M(e,"2t").16(e,b);9(!1b&&e["43"+d]&&e["43"+d].16(e,b)===P)a=P;9(4N)b.44();9(f&&f.16(e,b)===P)a=P;9(1b&&c!==P&&a!==P&&!(E.11(e,\'a\')&&d=="4L")){6.4T=Q;e[d]()}6.4T=P}I a},2t:G(d){H a;d=E.1j.4M(d||18.1j||{});H b=d.O.2l(".");d.O=b[0];H c=E.M(6,"2P")&&E.M(6,"2P")[d.O],3q=1B.3A.2J.2O(1q,1);3q.4w(d);L(H j 1i c){3q[0].4Q=c[j];3q[0].M=c[j].M;9(!b[1]||c[j].O==b[1]){H e=c[j].16(6,3q);9(a!==P)a=e;9(e===P){d.2M();d.3p()}}}9(E.V.1h)d.2m=d.2M=d.3p=d.4Q=d.M=S;I a},4M:G(c){H a=c;c=E.1k({},a);c.2M=G(){9(a.2M)a.2M();a.7L=P};c.3p=G(){9(a.3p)a.3p();a.7K=Q};9(!c.2m&&c.65)c.2m=c.65;9(E.V.1N&&c.2m.1y==3)c.2m=a.2m.12;9(!c.4K&&c.4J)c.4K=c.4J==c.2m?c.7H:c.4J;9(c.64==S&&c.63!=S){H e=U.2V,b=U.1G;c.64=c.63+(e&&e.2R||b.2R||0);c.7E=c.7D+(e&&e.2B||b.2B||0)}9(!c.3Y&&(c.61||c.60))c.3Y=c.61||c.60;9(!c.5F&&c.5D)c.5F=c.5D;9(!c.3Y&&c.2r)c.3Y=(c.2r&1?1:(c.2r&2?3:(c.2r&4?2:0)));I c}};E.1b.1k({3W:G(c,a,b){I c=="5Y"?6.2G(c,a,b):6.N(G(){E.1j.1f(6,c,b||a,b&&a)})},2G:G(d,b,c){I 6.N(G(){E.1j.1f(6,d,G(a){E(6).5X(a);I(c||b).16(6,1q)},c&&b)})},5X:G(a,b){I 6.N(G(){E.1j.28(6,a,b)})},1F:G(c,a,b){I 6.N(G(){E.1j.1F(c,a,6,Q,b)})},7x:G(c,a,b){9(6[0])I E.1j.1F(c,a,6[0],P,b)},25:G(){H a=1q;I 6.4L(G(e){6.4H=0==6.4H?1:0;e.2M();I a[6.4H].16(6,[e])||P})},7v:G(f,g){G 4G(e){H p=e.4K;1W(p&&p!=6)2a{p=p.12}29(e){p=6};9(p==6)I P;I(e.O=="4x"?f:g).16(6,[e])}I 6.4x(4G).5U(4G)},2d:G(f){5T();9(E.3T)f.16(U,[E]);J E.3l.1a(G(){I f.16(6,[E])});I 6}});E.1k({3T:P,3l:[],2d:G(){9(!E.3T){E.3T=Q;9(E.3l){E.N(E.3l,G(){6.16(U)});E.3l=S}9(E.V.35||E.V.34)U.4P("5S",E.2d,P);9(!18.7t.K)E(18).39(G(){E("#4E").28()})}}});E.N(("7s,7r,39,7q,6n,5Y,4L,7p,"+"7n,7m,7l,4x,5U,7k,24,"+"51,7j,7i,7h,3U").2l(","),G(i,o){E.1b[o]=G(f){I f?6.3W(o,f):6.1F(o)}});H x=P;G 5T(){9(x)I;x=Q;9(E.V.35||E.V.34)U.4S("5S",E.2d,P);J 9(E.V.1h){U.7f("<7d"+"7y 22=4E 7z=Q "+"3k=//:><\\/1J>");H a=U.3S("4E");9(a)a.62=G(){9(6.2C!="1l")I;E.2d()};a=S}J 9(E.V.1N)E.4B=4j(G(){9(U.2C=="5Q"||U.2C=="1l"){4A(E.4B);E.4B=S;E.2d()}},10);E.1j.1f(18,"39",E.2d)}E.1b.1k({39:G(g,d,c){9(E.1n(g))I 6.3W("39",g);H e=g.1g(" ");9(e>=0){H i=g.2J(e,g.K);g=g.2J(0,e)}c=c||G(){};H f="4z";9(d)9(E.1n(d)){c=d;d=S}J{d=E.3a(d);f="5P"}H h=6;E.3G({1d:g,O:f,M:d,1l:G(a,b){9(b=="1C"||b=="5O")h.4o(i?E("<1s/>").3g(a.40.1p(/<1J(.|\\s)*?\\/1J>/g,"")).1Y(i):a.40);56(G(){h.N(c,[a.40,b,a])},13)}});I 6},7a:G(){I E.3a(6.5M())},5M:G(){I 6.1X(G(){I E.11(6,"2Y")?E.2h(6.79):6}).1E(G(){I 6.2H&&!6.3c&&(6.2Q||/24|6b/i.14(6.11)||/2g|1P|52/i.14(6.O))}).1X(G(i,c){H b=E(6).3i();I b==S?S:b.1c==1B?E.1X(b,G(a,i){I{2H:c.2H,1Q:a}}):{2H:c.2H,1Q:b}}).21()}});E.N("5L,5K,6t,5J,5I,5H".2l(","),G(i,o){E.1b[o]=G(f){I 6.3W(o,f)}});H B=(1u 3D).3B();E.1k({21:G(d,b,a,c){9(E.1n(b)){a=b;b=S}I E.3G({O:"4z",1d:d,M:b,1C:a,1V:c})},78:G(b,a){I E.21(b,S,a,"1J")},77:G(c,b,a){I E.21(c,b,a,"45")},76:G(d,b,a,c){9(E.1n(b)){a=b;b={}}I E.3G({O:"5P",1d:d,M:b,1C:a,1V:c})},75:G(a){E.1k(E.59,a)},59:{1Z:Q,O:"4z",2z:0,5G:"74/x-73-2Y-72",6o:Q,3e:Q,M:S},49:{},3G:G(s){H f,2y=/=(\\?|%3F)/g,1v,M;s=E.1k(Q,s,E.1k(Q,{},E.59,s));9(s.M&&s.6o&&1m s.M!="1M")s.M=E.3a(s.M);9(s.1V=="4b"){9(s.O.2p()=="21"){9(!s.1d.1t(2y))s.1d+=(s.1d.1t(/\\?/)?"&":"?")+(s.4b||"5E")+"=?"}J 9(!s.M||!s.M.1t(2y))s.M=(s.M?s.M+"&":"")+(s.4b||"5E")+"=?";s.1V="45"}9(s.1V=="45"&&(s.M&&s.M.1t(2y)||s.1d.1t(2y))){f="4b"+B++;9(s.M)s.M=s.M.1p(2y,"="+f);s.1d=s.1d.1p(2y,"="+f);s.1V="1J";18[f]=G(a){M=a;1C();1l();18[f]=W;2a{2E 18[f]}29(e){}}}9(s.1V=="1J"&&s.1L==S)s.1L=P;9(s.1L===P&&s.O.2p()=="21")s.1d+=(s.1d.1t(/\\?/)?"&":"?")+"57="+(1u 3D()).3B();9(s.M&&s.O.2p()=="21"){s.1d+=(s.1d.1t(/\\?/)?"&":"?")+s.M;s.M=S}9(s.1Z&&!E.5b++)E.1j.1F("5L");9(!s.1d.1g("8g")&&s.1V=="1J"){H h=U.4l("9U")[0];H g=U.5B("1J");g.3k=s.1d;9(!f&&(s.1C||s.1l)){H j=P;g.9R=g.62=G(){9(!j&&(!6.2C||6.2C=="5Q"||6.2C=="1l")){j=Q;1C();1l();h.3b(g)}}}h.58(g);I}H k=P;H i=18.6X?1u 6X("9P.9O"):1u 6W();i.9M(s.O,s.1d,s.3e);9(s.M)i.5C("9J-9I",s.5G);9(s.5y)i.5C("9H-5x-9F",E.49[s.1d]||"9D, 9C 9B 9A 5v:5v:5v 9z");i.5C("X-9x-9v","6W");9(s.6U)s.6U(i);9(s.1Z)E.1j.1F("5H",[i,s]);H c=G(a){9(!k&&i&&(i.2C==4||a=="2z")){k=Q;9(d){4A(d);d=S}1v=a=="2z"&&"2z"||!E.6S(i)&&"3U"||s.5y&&E.6R(i,s.1d)&&"5O"||"1C";9(1v=="1C"){2a{M=E.6Q(i,s.1V)}29(e){1v="5k"}}9(1v=="1C"){H b;2a{b=i.5s("6P-5x")}29(e){}9(s.5y&&b)E.49[s.1d]=b;9(!f)1C()}J E.5r(s,i,1v);1l();9(s.3e)i=S}};9(s.3e){H d=4j(c,13);9(s.2z>0)56(G(){9(i){i.9q();9(!k)c("2z")}},s.2z)}2a{i.9o(s.M)}29(e){E.5r(s,i,S,e)}9(!s.3e)c();I i;G 1C(){9(s.1C)s.1C(M,1v);9(s.1Z)E.1j.1F("5I",[i,s])}G 1l(){9(s.1l)s.1l(i,1v);9(s.1Z)E.1j.1F("6t",[i,s]);9(s.1Z&&!--E.5b)E.1j.1F("5K")}},5r:G(s,a,b,e){9(s.3U)s.3U(a,b,e);9(s.1Z)E.1j.1F("5J",[a,s,e])},5b:0,6S:G(r){2a{I!r.1v&&9n.9l=="54:"||(r.1v>=6N&&r.1v<9j)||r.1v==6M||E.V.1N&&r.1v==W}29(e){}I P},6R:G(a,c){2a{H b=a.5s("6P-5x");I a.1v==6M||b==E.49[c]||E.V.1N&&a.1v==W}29(e){}I P},6Q:G(r,b){H c=r.5s("9i-O");H d=b=="6K"||!b&&c&&c.1g("6K")>=0;H a=d?r.9g:r.40;9(d&&a.2V.37=="5k")6G"5k";9(b=="1J")E.5f(a);9(b=="45")a=3w("("+a+")");I a},3a:G(a){H s=[];9(a.1c==1B||a.4c)E.N(a,G(){s.1a(3f(6.2H)+"="+3f(6.1Q))});J L(H j 1i a)9(a[j]&&a[j].1c==1B)E.N(a[j],G(){s.1a(3f(j)+"="+3f(6))});J s.1a(3f(j)+"="+3f(a[j]));I s.66("&").1p(/%20/g,"+")}});E.1b.1k({1A:G(b,a){I b?6.1U({1H:"1A",2N:"1A",1r:"1A"},b,a):6.1E(":1P").N(G(){6.R.19=6.3h?6.3h:"";9(E.17(6,"19")=="2s")6.R.19="2Z"}).2D()},1z:G(b,a){I b?6.1U({1H:"1z",2N:"1z",1r:"1z"},b,a):6.1E(":3R").N(G(){6.3h=6.3h||E.17(6,"19");9(6.3h=="2s")6.3h="2Z";6.R.19="2s"}).2D()},6J:E.1b.25,25:G(a,b){I E.1n(a)&&E.1n(b)?6.6J(a,b):a?6.1U({1H:"25",2N:"25",1r:"25"},a,b):6.N(G(){E(6)[E(6).3t(":1P")?"1A":"1z"]()})},9c:G(b,a){I 6.1U({1H:"1A"},b,a)},9b:G(b,a){I 6.1U({1H:"1z"},b,a)},99:G(b,a){I 6.1U({1H:"25"},b,a)},98:G(b,a){I 6.1U({1r:"1A"},b,a)},96:G(b,a){I 6.1U({1r:"1z"},b,a)},95:G(c,a,b){I 6.1U({1r:a},c,b)},1U:G(k,i,h,g){H j=E.6D(i,h,g);I 6[j.3L===P?"N":"3L"](G(){j=E.1k({},j);H f=E(6).3t(":1P"),3y=6;L(H p 1i k){9(k[p]=="1z"&&f||k[p]=="1A"&&!f)I E.1n(j.1l)&&j.1l.16(6);9(p=="1H"||p=="2N"){j.19=E.17(6,"19");j.2U=6.R.2U}}9(j.2U!=S)6.R.2U="1P";j.3M=E.1k({},k);E.N(k,G(c,a){H e=1u E.2j(3y,j,c);9(/25|1A|1z/.14(a))e[a=="25"?f?"1A":"1z":a](k);J{H b=a.3s().1t(/^([+-]=)?([\\d+-.]+)(.*)$/),1O=e.2b(Q)||0;9(b){H d=3I(b[2]),2i=b[3]||"2T";9(2i!="2T"){3y.R[c]=(d||1)+2i;1O=((d||1)/e.2b(Q))*1O;3y.R[c]=1O+2i}9(b[1])d=((b[1]=="-="?-1:1)*d)+1O;e.3N(1O,d,2i)}J e.3N(1O,a,"")}});I Q})},3L:G(a,b){9(E.1n(a)){b=a;a="2j"}9(!a||(1m a=="1M"&&!b))I A(6[0],a);I 6.N(G(){9(b.1c==1B)A(6,a,b);J{A(6,a).1a(b);9(A(6,a).K==1)b.16(6)}})},9f:G(){H a=E.32;I 6.N(G(){L(H i=0;i<a.K;i++)9(a[i].T==6)a.6I(i--,1)}).5n()}});H A=G(b,c,a){9(!b)I;H q=E.M(b,c+"3L");9(!q||a)q=E.M(b,c+"3L",a?E.2h(a):[]);I q};E.1b.5n=G(a){a=a||"2j";I 6.N(G(){H q=A(6,a);q.44();9(q.K)q[0].16(6)})};E.1k({6D:G(b,a,c){H d=b&&b.1c==8Z?b:{1l:c||!c&&a||E.1n(b)&&b,2e:b,3J:c&&a||a&&a.1c!=8Y&&a};d.2e=(d.2e&&d.2e.1c==4W?d.2e:{8X:8W,8V:6N}[d.2e])||8T;d.3r=d.1l;d.1l=G(){E(6).5n();9(E.1n(d.3r))d.3r.16(6)};I d},3J:{6B:G(p,n,b,a){I b+a*p},5q:G(p,n,b,a){I((-38.9s(p*38.8R)/2)+0.5)*a+b}},32:[],2j:G(b,c,a){6.Y=c;6.T=b;6.1e=a;9(!c.3P)c.3P={}}});E.2j.3A={4r:G(){9(6.Y.2F)6.Y.2F.16(6.T,[6.2v,6]);(E.2j.2F[6.1e]||E.2j.2F.6z)(6);9(6.1e=="1H"||6.1e=="2N")6.T.R.19="2Z"},2b:G(a){9(6.T[6.1e]!=S&&6.T.R[6.1e]==S)I 6.T[6.1e];H r=3I(E.3C(6.T,6.1e,a));I r&&r>-8O?r:3I(E.17(6.T,6.1e))||0},3N:G(c,b,e){6.5u=(1u 3D()).3B();6.1O=c;6.2D=b;6.2i=e||6.2i||"2T";6.2v=6.1O;6.4q=6.4i=0;6.4r();H f=6;G t(){I f.2F()}t.T=6.T;E.32.1a(t);9(E.32.K==1){H d=4j(G(){H a=E.32;L(H i=0;i<a.K;i++)9(!a[i]())a.6I(i--,1);9(!a.K)4A(d)},13)}},1A:G(){6.Y.3P[6.1e]=E.1x(6.T.R,6.1e);6.Y.1A=Q;6.3N(0,6.2b());9(6.1e=="2N"||6.1e=="1H")6.T.R[6.1e]="8N";E(6.T).1A()},1z:G(){6.Y.3P[6.1e]=E.1x(6.T.R,6.1e);6.Y.1z=Q;6.3N(6.2b(),0)},2F:G(){H t=(1u 3D()).3B();9(t>6.Y.2e+6.5u){6.2v=6.2D;6.4q=6.4i=1;6.4r();6.Y.3M[6.1e]=Q;H a=Q;L(H i 1i 6.Y.3M)9(6.Y.3M[i]!==Q)a=P;9(a){9(6.Y.19!=S){6.T.R.2U=6.Y.2U;6.T.R.19=6.Y.19;9(E.17(6.T,"19")=="2s")6.T.R.19="2Z"}9(6.Y.1z)6.T.R.19="2s";9(6.Y.1z||6.Y.1A)L(H p 1i 6.Y.3M)E.1x(6.T.R,p,6.Y.3P[p])}9(a&&E.1n(6.Y.1l))6.Y.1l.16(6.T);I P}J{H n=t-6.5u;6.4i=n/6.Y.2e;6.4q=E.3J[6.Y.3J||(E.3J.5q?"5q":"6B")](6.4i,n,0,1,6.Y.2e);6.2v=6.1O+((6.2D-6.1O)*6.4q);6.4r()}I Q}};E.2j.2F={2R:G(a){a.T.2R=a.2v},2B:G(a){a.T.2B=a.2v},1r:G(a){E.1x(a.T.R,"1r",a.2v)},6z:G(a){a.T.R[a.1e]=a.2v+a.2i}};E.1b.6m=G(){H c=0,3E=0,T=6[0],5t;9(T)8L(E.V){H b=E.17(T,"2X")=="4F",1D=T.12,23=T.23,2K=T.3H,4f=1N&&3x(4s)<8J;9(T.6V){5w=T.6V();1f(5w.1S+38.33(2K.2V.2R,2K.1G.2R),5w.3E+38.33(2K.2V.2B,2K.1G.2B));9(1h){H d=E("4o").17("8H");d=(d=="8G"||E.5g&&3x(4s)>=7)&&2||d;1f(-d,-d)}}J{1f(T.5l,T.5z);1W(23){1f(23.5l,23.5z);9(35&&/^t[d|h]$/i.14(1D.37)||!4f)d(23);9(4f&&!b&&E.17(23,"2X")=="4F")b=Q;23=23.23}1W(1D.37&&!/^1G|4o$/i.14(1D.37)){9(!/^8D|1I-9S.*$/i.14(E.17(1D,"19")))1f(-1D.2R,-1D.2B);9(35&&E.17(1D,"2U")!="3R")d(1D);1D=1D.12}9(4f&&b)1f(-2K.1G.5l,-2K.1G.5z)}5t={3E:3E,1S:c}}I 5t;G d(a){1f(E.17(a,"9T"),E.17(a,"8A"))}G 1f(l,t){c+=3x(l)||0;3E+=3x(t)||0}}})();',62,616,'||||||this|||if|||||||||||||||||||||||||||||||||function|var|return|else|length|for|data|each|type|false|true|style|null|elem|document|browser|undefined||options|||nodeName|parentNode||test|jQuery|apply|css|window|display|push|fn|constructor|url|prop|add|indexOf|msie|in|event|extend|complete|typeof|isFunction|className|replace|arguments|opacity|div|match|new|status|firstChild|attr|nodeType|hide|show|Array|success|parent|filter|trigger|body|height|table|script|tbody|cache|string|safari|start|hidden|value|merge|left|break|animate|dataType|while|map|find|global||get|id|offsetParent|select|toggle|selected|toUpperCase|remove|catch|try|cur|al|ready|duration|done|text|makeArray|unit|fx|swap|split|target||pushStack|toLowerCase|nextSibling|button|none|handle|guid|now|stack|tb|jsre|timeout|inArray|scrollTop|readyState|end|delete|step|one|name|nth|slice|doc|ret|preventDefault|width|call|events|checked|scrollLeft|exec|px|overflow|documentElement|grep|position|form|block|removeData|rl|timers|max|opera|mozilla|trim|tagName|Math|load|param|removeChild|disabled|insertBefore|async|encodeURIComponent|append|oldblock|val|childNodes|src|readyList|multiFilter|color|defaultView|stopPropagation|args|old|toString|is|last|first|eval|parseInt|self|domManip|prototype|getTime|curCSS|Date|top||ajax|ownerDocument|parseFloat|easing|has|queue|curAnim|custom|innerHTML|orig|currentStyle|visible|getElementById|isReady|error|static|bind|String|which|getComputedStyle|responseText|oWidth|oHeight|on|shift|json|child|RegExp|ol|lastModified|isXMLDoc|jsonp|jquery|previousSibling|dir|safari2|el|styleFloat|state|setInterval|radio|getElementsByTagName|tr|empty|html|getAttribute|pos|update|version|input|float|runtimeStyle|unshift|mouseover|getPropertyValue|GET|clearInterval|safariTimer|visibility|clean|__ie_init|absolute|handleHover|lastToggle|index|fromElement|relatedTarget|click|fix|evt|andSelf|removeEventListener|handler|cloneNode|addEventListener|triggered|nodeIndex|unique|Number|classFilter|prevObject|selectedIndex|after|submit|password|removeAttribute|file|expr|setTimeout|_|appendChild|ajaxSettings|client|active|win|sibling|deep|globalEval|boxModel|cssFloat|object|checkbox|parsererror|offsetLeft|wrapAll|dequeue|props|lastChild|swing|handleError|getResponseHeader|results|startTime|00|box|Modified|ifModified|offsetTop|evalScript|createElement|setRequestHeader|ctrlKey|callback|metaKey|contentType|ajaxSend|ajaxSuccess|ajaxError|ajaxStop|ajaxStart|serializeArray|init|notmodified|POST|loaded|appendTo|DOMContentLoaded|bindReady|mouseout|not|removeAttr|unbind|unload|Width|keyCode|charCode|onreadystatechange|clientX|pageX|srcElement|join|outerHTML|substr|zoom|parse|textarea|reset|image|odd|even|before|quickClass|quickID|prepend|quickChild|execScript|offset|scroll|processData|uuid|contents|continue|textContent|ajaxComplete|clone|setArray|webkit|nodeValue|fl|_default|100|linear|href|speed|eq|createTextNode|throw|replaceWith|splice|_toggle|xml|colgroup|304|200|alpha|Last|httpData|httpNotModified|httpSuccess|fieldset|beforeSend|getBoundingClientRect|XMLHttpRequest|ActiveXObject|col|br|abbr|pixelLeft|urlencoded|www|application|ajaxSetup|post|getJSON|getScript|elements|serialize|clientWidth|hasClass|scr|clientHeight|write|relative|keyup|keypress|keydown|change|mousemove|mouseup|mousedown|right|dblclick|resize|focus|blur|frames|instanceof|hover|offsetWidth|triggerHandler|ipt|defer|offsetHeight|border|padding|clientY|pageY|Left|Right|toElement|Bottom|Top|cancelBubble|returnValue|detachEvent|attachEvent|substring|line|weight|animated|header|font|enabled|innerText|contains|only|size|gt|lt|uFFFF|u0128|417|inner|Height|toggleClass|removeClass|addClass|replaceAll|noConflict|insertAfter|prependTo|wrap|contentWindow|contentDocument|http|iframe|children|siblings|prevAll|nextAll|wrapInner|prev|Boolean|next|parents|maxLength|maxlength|readOnly|readonly|class|htmlFor|CSS1Compat|compatMode|compatible|borderTopWidth|ie|ra|inline|it|rv|medium|borderWidth|userAgent|522|navigator|with|concat|1px|10000|array|ig|PI|NaN|400|reverse|fast|600|slow|Function|Object|setAttribute|changed|be|can|property|fadeTo|fadeOut|getAttributeNode|fadeIn|slideToggle|method|slideUp|slideDown|action|cssText|stop|responseXML|option|content|300|th|protocol|td|location|send|cap|abort|colg|cos|tfoot|thead|With|leg|Requested|opt|GMT|1970|Jan|01|Thu|area|Since|hr|If|Type|Content|meta|specified|open|link|XMLHTTP|Microsoft|img|onload|row|borderLeftWidth|head|attributes'.split('|'),0,{});\r
42198 \r
42199 /*\r
42200     Copyright (c) 2004-2007, The Dojo Foundation\r
42201     All Rights Reserved.\r
42202 \r
42203     Licensed under the Academic Free License version 2.1 or above OR the\r
42204     modified BSD license. For more information on Dojo licensing, see:\r
42205 \r
42206         http://dojotoolkit.org/community/licensing.shtml\r
42207 */\r
42208 \r
42209 /*\r
42210     This is a compiled version of Dojo, built for deployment and not for\r
42211     development. To get an editable version, please visit:\r
42212 \r
42213         http://dojotoolkit.org\r
42214 \r
42215     for documentation and information on getting the source.\r
42216 */\r
42217 \r
42218 var decompressedDojo = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(V z=="1k"){(B(){if(V D["1o"]=="1k"){D.1o={}}if((!D["1z"])||(!1z["ca"])){D.1z={}}A cn=["rA","rz","1K","ry","rx","9f","rw","rv","ru","rt","rs","rr","rq","ro","rn","rm"];A i=0,24;1s(24=cn[i++]){if(!1z[24]){1z[24]=B(){}}}if(V D["z"]=="1k"){D.z={}}z.1W=D;A d3={im:U,rl:U,rk:"",rj:"",ri:"",rh:K,rg:U};R(A 8z in d3){if(V 1o[8z]=="1k"){1o[8z]=d3[8z]}}A jK=["rf","rd","rc","rb"];A t;1s(t=jK.3a()){z["is"+t]=U}})();z.8h=1o.8h;z.cY={jJ:0,jI:9,jH:0,jG:"",jF:2V("$ra: r9 $".1f(/[0-9]+/)[0]),2i:B(){4G(z.cY){C jJ+"."+jI+"."+jH+jG+" ("+jF+")"}}};z.d1=B(jE,jD,1V){A 2h=1V||z.1W;R(A i=0,p;2h&&(p=jE[i]);i++){2h=(p in 2h?2h[p]:(jD?2h[p]={}:1k))}C 2h};z.88=B(jC,jA,jB){A d2=jC.1A("."),p=d2.8q(),M=z.d1(d2,K,jB);C(M&&p?(M[p]=jA):1k)};z.6q=B(jz,jy,jx){C z.d1(jz.1A("."),jy,jx)};z.r8=B(jw,M){C!!z.6q(jw,U,M)};z["3u"]=B(d0){C z.1W.3u?z.1W.3u(d0):3u(d0)};z.ia=B(jv,cZ,cX){A 8y="r7: "+jv;if(cZ){8y+=" "+cZ}if(cX){8y+=" -- r6 be r5 in cY: "+cX}1z.1K(8y)};z.r4=B(ju,cW){A cV="r3: "+ju+" -- r2 r1 4F r0 qZ qY.";if(cW){cV+=" "+cW}1z.1K(cV)};(B(){A cR={53:{},6p:0,1h:{},8k:{z:{1p:"z",1Z:"."},cU:{1p:"cU",1Z:"../qX/cU"},cT:{1p:"cT",1Z:"cT"}},cN:B(cS){A mp=D.8k;C jp(mp[cS]&&mp[cS].1Z)},jk:B(8x){A mp=D.8k;if(D.cN(8x)){C mp[8x].1Z}C 8x},8v:[],6t:U,56:[],8t:[],8u:U};R(A cQ in cR){z[cQ]=cR[cQ]}})();z.jg=B(8w,cP,cb){A 1g=(((8w.2s(0)=="/"||8w.1f(/^\\w+:/)))?"":D.51)+8w;if(1o.jt&&z.c8){1g+="?"+67(1o.jt).2f(/\\W+/g,"")}1u{C!cP?D.cO(1g,cb):D.jq(1g,cP,cb)}1y(e){1z.1K(e);C U}};z.cO=B(1g,cb){if(D.8v[1g]){C K}A 6u=D.iR(1g,K);if(!6u){C U}D.8v[1g]=K;D.8v.Y(1g);if(cb){6u="("+6u+")"}A jr=z["3u"](6u+"\\r\\n//@ qW="+1g);if(cb){cb(jr)}C K};z.jq=B(1g,jo,cb){A ok=U;1u{ok=D.cO(1g,cb)}1y(e){1z.1K("qV je ",1g," 4G 9f: ",e)}C jp(ok&&D.53[jo])};z.6m=B(){D.8u=K;D.6t=K;A 57=D.56;D.56=[];R(A x=0;x<57.G;x++){57[x]()}D.8u=U;if(z.6t&&z.6p==0&&D.56.G>0){z.8s()}};z.ck=B(){A 57=D.8t;1s(57.G){(57.8q())()}};z.qU=B(M,jn){A d=z;if(P.G==1){d.56.Y(M)}I{if(P.G>1){d.56.Y(B(){M[jn]()})}}if(d.6t&&d.6p==0&&!d.8u){d.8s()}};z.dW=B(M,jm){A d=z;if(P.G==1){d.8t.Y(M)}I{if(P.G>1){d.8t.Y(B(){M[jm]()})}}};z.iM=B(){if(D.6t){C}if(D.6p>0){1z.1K("qT qS in qR!");C}z.8s()};z.8s=B(){if(V 5c=="8b"||(1o["qQ"]&&z.2M)){5c("z.6m();",0)}I{z.6m()}};z.cF=B(jl){A 4v=jl.1A(".");R(A i=4v.G;i>0;i--){A 8r=4v.2w(0,i).22(".");if((i==1)&&!D.cN(8r)){4v[0]="../"+4v[0]}I{A cM=D.jk(8r);if(cM!=8r){4v.3S(0,i,cM);3f}}}C 4v};z.jj=U;z.8m=B(2T,qP,55){55=D.jj||55;A 54=D.53[2T];if(54){C 54}A cL=2T.1A(".");A 3L=D.cF(2T);A jh=((3L[0].2s(0)!="/")&&!3L[0].1f(/^\\w+:/));A ji=3L[3L.G-1];A 3m;if(ji=="*"){2T=cL.2w(0,-1).22(".");3L.8q();3m=3L.22("/")+"/"+(1o["qO"]||"qN")+".js";if(jh&&3m.2s(0)=="/"){3m=3m.2w(1)}}I{3m=3L.22("/")+".js";2T=cL.22(".")}A jf=(!55)?2T:L;A ok=D.jg(3m,jf);if((!ok)&&(!55)){2m S 1O("qM 3O 4E \'"+2T+"\'; 72 qL \'"+3m+"\'")}if((!55)&&(!D["qK"])){54=D.53[2T];if(!54){2m S 1O("qJ \'"+2T+"\' is 3O qI a8 je \'"+3m+"\'")}}C 54};z.8c=z.8m;z.1Q=B(cK){A cJ=cK+"";A 8p=cJ;A 6s=cK.1A(/\\./);if(6s[6s.G-1]=="*"){6s.8q();8p=6s.22(".")}A 8o=z.6q(8p,K);D.53[cJ]=8o;D.53[8p]=8o;C 8o};z.qH=B(8n){A jd=8n["qG"]||[];A cI=jd.3U(8n[z.j4]||8n["aY"]||[]);R(A x=0;x<cI.G;x++){A 8l=cI[x];if(8l.1P==4e){z.8m.14(z,8l)}I{z.8m(8l)}}};z.jb=B(jc,qF){if(jc===K){A cH=[];R(A i=1;i<P.G;i++){cH.Y(P[i])}z.8c.14(z,cH)}};z.qE=z.jb;z.io=B(cG,ja){D.8k[cG]={1p:cG,1Z:ja}};z.qD=B(qC,qB,qA,qz){z.8c("z.j9");z.j9.qy.14(z.qx,P)};(B(){A j7=S 9G("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?$");A j6=S 9G("^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$");z.4r=B(){A n=L;A 1V=P;A 1g=1V[0];R(A i=1;i<1V.G;i++){if(!1V[i]){6c}A 1t=S z.4r(1V[i]+"");A 4u=S z.4r(1g+"");if((1t.28=="")&&(!1t.4t)&&(!1t.3l)&&(!1t.1r)){if(1t.52!=n){4u.52=1t.52}1t=4u}I{if(!1t.4t){1t.4t=4u.4t;if(!1t.3l){1t.3l=4u.3l;if(1t.28.2s(0)!="/"){A j8=4u.28.21(0,4u.28.31("/")+1)+1t.28;A 1X=j8.1A("/");R(A j=0;j<1X.G;j++){if(1X[j]=="."){if(j==1X.G-1){1X[j]=""}I{1X.3S(j,1);j--}}I{if(j>0&&!(j==1&&1X[0]=="")&&1X[j]==".."&&1X[j-1]!=".."){if(j==(1X.G-1)){1X.3S(j,1);1X[j-1]=""}I{1X.3S(j-1,2);j-=2}}}}1t.28=1X.22("/")}}}}1g="";if(1t.4t){1g+=1t.4t+":"}if(1t.3l){1g+="//"+1t.3l}1g+=1t.28;if(1t.1r){1g+="?"+1t.1r}if(1t.52){1g+="#"+1t.52}}D.1g=1g.2i();A r=D.1g.1f(j7);D.4t=r[2]||(r[1]?"":n);D.3l=r[4]||(r[3]?"":n);D.28=r[5];D.1r=r[7]||(r[6]?"":n);D.52=r[9]||(r[8]?"":n);if(D.3l!=n){r=D.3l.1f(j6);D.8X=r[3]||n;D.8W=r[4]||n;D.qw=r[5];D.qv=r[7]||n}};z.4r.1C.2i=B(){C D.1g}})();z.qu=B(j5,2E){A 2B=z.cF(j5).22("/");if(!2B){C L}if(2B.31("/")!=2B.G-1){2B+="/"}A cE=2B.T(":");if(2B.2s(0)!="/"&&(cE==-1||cE>2B.T("/"))){2B=z.51+2B}C S z.4r(2B,2E)};if(V 26!="1k"){z.c8=K;z.j4="qt";(B(){A d=z;if(1q&&1q.4I){A 8j=1q.4I("ak");A j3=/z(\\.qs)?\\.js([\\?\\.]|$)/i;R(A i=0;i<8j.G;i++){A 4X=8j[i].5t("4X");if(!4X){6c}A m=4X.1f(j3);if(m){if(!1o["51"]){1o["51"]=4X.21(0,m.hK)}A cD=8j[i].5t("1o");if(cD){A cC=3u("({ "+cD+" })");R(A x in cC){1o[x]=cC[x]}}3f}}}d.51=1o["51"];A n=cq;A 8i=n.iL;A 4Z=n.qr;A 6r=2k(4Z);d.2M=(8i.T("qq")>=0)?6r:0;d.6B=(4Z.T("qo")>=0)||(4Z.T("j2")>=0)?6r:0;d.3o=(4Z.T("j2")>=0)?6r:0;A j1=8i.T("qn");d.gu=d.7B=((j1>=0)&&(!d.6B))?6r:0;d.j0=0;d.1l=0;d.iV=0;1u{if(d.7B){d.j0=2k(8i.1A("qm/")[1].1A(" ")[0])}if((1q.gx)&&(!d.2M)){d.1l=2k(4Z.1A("qk ")[1].1A(";")[0])}}1y(e){}if(z.1l&&(26.8f.cu==="9q:")){1o.iT=K}d.iX=B(){A 2A;A qj;A cB=d.6q("cz.cy");if(cB){C cB}if(V iZ!="1k"){2A=S iZ()}I{if(d.1l){1u{2A=S 9j("qi.qh")}1y(e){}}I{if(cq.qg["8Z/x-iY"]){2A=1q.a9("8b");2A.cA("Z","8Z/x-iY");2A.cA("3n",0);2A.cA("58",0);2A.1c.gq="7C";1q.5K.4c(2A)}}}if(!2A){C L}z.88("cz.cy.qf",2A);C z.6q("cz.cy")};A iW=d.iX();if(iW){d.iV=K}A cm=1q["aX"];d.qe=(cm=="aW")||(cm=="gr")||(d.1l<6);d.8h=1o.8h||(d.1l?n.qd:n.qc).1M();d.qb=1z.1K;d.cx=["iU.8g","em.8g","iU.8g.4.0"];d.9b=B(){A 4s=L;A cv=L;if(!z.1l||!1o.iT){1u{4s=S qa()}1y(e){}}if(!4s){R(A i=0;i<3;++i){A cw=z.cx[i];1u{4s=S 9j(cw)}1y(e){cv=e}if(4s){z.cx=[cw];3f}}}if(!4s){2m S 1O("8g 3O q9: "+cv)}C 4s};d.8Y=B(iS){A 4Y=iS.3N||0;C((4Y>=q8)&&(4Y<q7))||(4Y==q6)||(4Y==q5)||(!4Y&&(8f.cu=="9q:"||8f.cu=="q4:"))};A cs=1q.4I("q3");A iQ=(cs&&cs.G>0);d.iR=B(1g,iP){A 3K=D.9b();if(!iQ&&z.4r){1g=(S z.4r(26.8f,1g)).2i()}3K.dL("dD",1g,U);1u{3K.dI(L);if(!d.8Y(3K)){A 1G=1O("q2 4F 4E "+1g+" 3N:"+3K.3N);1G.3N=3K.3N;1G.2G=3K.2G;2m 1G}}1y(e){if(iP){C L}2m e}C 3K.2G}})();z.iO=U;z.6o=B(e){z.iO=K;A cr=(e&&e.Z)?e.Z.1M():"4E";if(P.2O.iN||(cr!="q1"&&cr!="4E")){C}P.2O.iN=K;if(V z["8e"]!="1k"){dX(z.8e);63 z.8e}if(z.6p==0){z.iM()}};if(1q.66){if(z.2M||(z.7B&&(1o["q0"]===K))){1q.66("pZ",z.6o,L)}26.66("4E",z.6o,L)}if(/(pY|pX)/i.6Z(cq.iL)){z.8e=dN(B(){if(/6m|iJ/.6Z(1q.6F)){z.6o()}},10)}(B(){A 3g=26;A 8d=B(cp,fp){A iK=3g[cp]||B(){};3g[cp]=B(){fp.14(3g,P);iK.14(3g,P)}};if(z.1l){1q.fJ("<iI"+"iH pW 4X=\\"//:\\" "+"pV=\\"if(D.6F==\'iJ\'){z.6o();}\\">"+"</iI"+"iH>");A co=K;8d("iG",B(){3g.5c(B(){co=U},0)});8d("pU",B(){if(co){z.ck()}});1u{1q.pT.2P("v","pS:pR-pQ-pP:pO");1q.pN().pM("v\\\\:*","pL:2E(#aY#pK)")}1y(e){}}I{8d("iG",B(){z.ck()})}})();z.pJ=B(){};z.1e=26["1q"]||L;z.3E=B(){C z.1e.3E||z.1e.4I("3E")[0]};z.ch=B(iF,iE){z.1W=iF;z.1e=iE};z.cf=B(4q,6n,iD){if((6n)&&((V 4q=="3c")||(4q 1N 67))){4q=6n[4q]}C(6n?4q.14(6n,iD||[]):4q())};z.pI=B(cj,iC,iB,iA){A cg;A iz=z.1W;A iy=z.1e;1u{z.ch(cj,cj.1q);cg=z.cf(iC,iB,iA)}ir{z.ch(iz,iy)}C cg};z.pH=B(ix,iw,iv,iu){A ce;A ip=z.1e;1u{z.1e=ix;ce=z.cf(iw,iv,iu)}ir{z.1e=ip}C ce};if(1o["cd"]){R(A cc in 1o["cd"]){z.io(cc,1o["cd"][cc])}}}if(1o.im){if(!1z.ca){z.8c("z.pG.ca")}}}if(!z.1h["z.X.c9"]){z.1h["z.X.c9"]=K;z.1Q("z.X.c9");z.1R=B(it){C(V it=="3c"||it 1N 67)};z.2l=B(it){C(it&&it 1N 4e||V it=="6a"||((V z["1H"]!="1k")&&(it 1N z.1H)))};if(z.c8&&z.3o){z.1Y=B(it){if((V(it)=="B")&&(it=="[8b 1H]")){C U}C(V it=="B"||it 1N bI)}}I{z.1Y=B(it){C(V it=="B"||it 1N bI)}}z.ib=B(it){if(V it=="1k"){C U}C(it===L||V it=="8b"||z.2l(it)||z.1Y(it))};z.pF=B(it){A d=z;if((!it)||(V it=="1k")){C U}if(d.1R(it)){C U}if(d.1Y(it)){C U}if(d.2l(it)){C K}if((it.5w)&&(it.5w.1M()=="3R")){C U}if(pE(it.G)){C K}C U};z.pD=B(it){if(!it){C U}C!z.1Y(it)&&/\\{\\s*\\[il 5h\\]\\s*\\}/.6Z(67(it))};z.c7=B(M,4W){A 8a={};R(A x in 4W){if((V 8a[x]=="1k")||(8a[x]!=4W[x])){M[x]=4W[x]}}if(z.1l){A p=4W.2i;if((V(p)=="B")&&(p!=M.2i)&&(p!=8a.2i)&&(p!="\\pC 2i() {\\n    [il 5h]\\n}\\n")){M.2i=4W.2i}}C M};z.1x=B(M,pB){R(A i=1,l=P.G;i<l;i++){z.c7(M,P[i])}C M};z.4M=B(c6,pA){R(A i=1,l=P.G;i<l;i++){z.c7(c6.1C,P[i])}C c6};z.ig=B(c5,89){A ij=z.4d(P,2);A ik=z.1R(89);C B(){A ih=z.4d(P);A f=(ik?(c5||z.1W)[89]:89);C(f)&&(f.14(c5||D,ij.3U(ih)))}};z.2p=B(2z,3k){if(P.G>2){C z.ig.14(z,P)}if(!3k){3k=2z;2z=L}if(z.1R(3k)){2z=2z||z.1W;if(!2z[3k]){2m(["z.2p: ie[\\"",3k,"\\"] is L (ie=\\"",2z,"\\")"].22(""))}C B(){C 2z[3k].14(2z,P||[])}}I{C(!2z?3k:B(){C 3k.14(2z,P||[])})}};z.6j=B(M,c3){B c4(){};c4.1C=M;A c2=S c4();if(c3){z.1x(c2,c3)}C c2};z.7X=B(pz){A Q=[L];C z.2p.14(z,Q.3U(z.4d(P)))};z.4d=B(M,ic){A Q=[];R(A x=ic||0;x<M.G;x++){Q.Y(M[x])}C Q};z.c1=B(o){if(!o){C o}if(z.2l(o)){A r=[];R(A i=0;i<o.G;++i){r.Y(z.c1(o[i]))}C r}I{if(z.ib(o)){if(o.2t&&o.a7){C o.a7(K)}I{A r=S o.1P();R(A i in o){if(!(i in r)||r[i]!=o[i]){r[i]=z.c1(o[i])}}C r}}}C o};z.7g=B(2H){C 2H.2f(/^\\s\\s*/,"").2f(/\\s\\s*$/,"")}}if(!z.1h["z.X.2r"]){z.1h["z.X.2r"]=K;z.1Q("z.X.2r");z.2r=B(6l,4p,3j){if(z.1Y(3j)||(P.G>3)){z.ia("z.2r: R 9P \'"+6l+"\' py pw B as \'1P\' pv pu of as a pt i3.","","1.0");A c=3j;3j=P[3]||{};3j.1P=c}A dd=P.2O,4V=L;if(z.2l(4p)){4V=4p;4p=4V.3a()}if(4V){R(A i=0,m;i<4V.G;i++){m=4V[i];if(!m){2m("ps #"+i+" 4F pr of "+6l+" is L. pq\'s pp a po pl is 3O 6m.")}4p=dd.6j(4p,m)}}A i9=(3j||0).1P,6k=dd.6j(4p),fn;R(A i in 3j){if(z.1Y(fn=3j[i])&&(!0[i])){fn.i4=i}}z.4M(6k,{4o:6l,bY:i9,bZ:L},3j||0);6k.1C.1P=6k;C z.88(6l,6k)};z.1x(z.2r,{6j:B(c0,i8){A bp=(c0||0).1C,mp=(i8||0).1C;A 2S=z.2r.i7();z.1x(2S,{84:bp,1x:mp});if(c0){2S.1C=z.6j(bp)}z.4M(2S,z.2r.i6,mp||0,{bY:L});2S.1C.1P=2S;2S.1C.4o=(bp||0).4o+"pk"+(mp||0).4o;z.88(2S.1C.4o,2S);C 2S},i7:B(){C B(){D.i5(P)}},i6:{i5:B(86){A c=86.2O,s=c.84,ct=s&&s.1P,m=c.1x,87=m&&m.1P,a=86,ii,fn;if(a[0]){if((fn=a[0]["bZ"])){a=fn.14(D,a)||a}}if(fn=c.1C.bZ){a=fn.14(D,a)||a}if(ct&&ct.14){ct.14(D,a)}if(87&&87.14){87.14(D,a)}if(ii=c.1C.bY){ii.14(D,86)}},bX:B(85){A c=D.1P,p,m;1s(c){p=c.84;m=c.1x;if(m==85||(m 1N 85.1P)){C p}if(m&&(m=m.bX(85))){C m}c=p&&p.1P}},6h:B(83,82,bW,6i){A p=bW,c,m,f;do{c=p.1P;m=c.1x;if(m&&(m=D.6h(83,82,m,6i))){C m}if((f=p[83])&&(6i==(f==82))){C p}p=c.84}1s(p);C!6i&&(p=D.bX(bW))&&D.6h(83,82,p,6i)},bU:B(2R,4U,bV){A a=P;if(!z.1R(a[0])){bV=4U;4U=2R;2R=4U.2O.i4}A c=4U.2O,p=D.1P.1C,a=bV||4U,fn,mp;if(D[2R]!=c||p[2R]==c){mp=D.6h(2R,c,p,K);if(!mp){2m(D.4o+": 1p i3 (\\""+2R+"\\") 4F bU pj 1f 2O (2r.js)")}p=D.6h(2R,c,mp,U)}fn=p&&p[2R];if(!fn){1z.1K(mp.4o+": no bU \\""+2R+"\\" ph pg (2r.js)");C}C fn.14(D,a)}}})}if(!z.1h["z.X.2c"]){z.1h["z.X.2c"]=K;z.1Q("z.X.2c");z.3i={i2:B(){C B(){A ap=4e.1C,c=P.2O,ls=c.2b,t=c.5V;A r=t&&t.14(D,P);R(A i in ls){if(!(i in ap)){ls[i].14(D,P)}}C r}},2P:B(6g,bT,i1){6g=6g||z.1W;A f=6g[bT];if(!f||!f.2b){A d=z.3i.i2();d.5V=f;d.2b=[];f=6g[bT]=d}C f.2b.Y(i1)},3J:B(i0,hZ,bS){A f=(i0||z.1W)[hZ];if(f&&f.2b&&bS--){63 f.2b[bS]}}};z.2c=B(M,pd,pc,pa,p9){A a=P,F=[],i=0;F.Y(z.1R(a[0])?L:a[i++],a[i++]);A a1=a[i+1];F.Y(z.1R(a1)||z.1Y(a1)?a[i++]:L,a[i++]);R(A l=a.G;i<l;i++){F.Y(a[i])}C z.by.14(D,F)};z.by=B(M,bR,hY,hX){A l=z.3i,h=l.2P(M,bR,z.2p(hY,hX));C[M,bR,h,l]};z.p8=B(6f){if(6f&&6f[0]!==1k){z.bv.14(D,6f);63 6f[0]}};z.bv=B(M,hV,hU,hW){hW.3J(M,hV,hU)};z.80={};z.p7=B(bQ,hT,hS){C[bQ,z.3i.2P(z.80,bQ,z.2p(hT,hS))]};z.p6=B(81){if(81){z.3i.3J(z.80,81[0],81[1])}};z.hQ=B(hR,F){A f=z.80[hR];(f)&&(f.14(D,F||[]))};z.p5=B(hP,M,bP){A pf=B(){z.hQ(hP,P)};C(bP)?z.2c(M,bP,pf):z.2c(M,pf)}}if(!z.1h["z.X.30"]){z.1h["z.X.30"]=K;z.1Q("z.X.30");z.30=B(hO){D.bM=[];D.id=D.hN();D.2y=-1;D.3M=0;D.4R=[L,L];D.bO=hO;D.7Z=U};z.4M(z.30,{hN:(B(){A n=1;C B(){C n++}})(),4C:B(){if(D.2y==-1){if(D.bO){D.bO(D)}I{D.7Z=K}if(D.2y==-1){A 1G=S 1O("30 p4");1G.dY="4C";D.5i(1G)}}I{if((D.2y==0)&&(D.4R[0]1N z.30)){D.4R[0].4C()}}},7V:B(1v){D.2y=((1v 1N 1O)?1:0);D.4R[D.2y]=1v;D.7U()},bN:B(){if(D.2y!=-1){if(!D.7Z){2m S 1O("p3 p2!")}D.7Z=U;C}},dM:B(1v){D.bN();D.7V(1v)},5i:B(1v){D.bN();if(!(1v 1N 1O)){1v=S 1O(1v)}D.7V(1v)},9e:B(cb,4T){A 6e=z.2p(cb,4T);if(P.G>2){6e=z.7X(6e,P,2)}C D.5k(6e,6e)},ef:B(cb,4T){A 7Y=z.2p(cb,4T);if(P.G>2){7Y=z.7X(7Y,P,2)}C D.5k(7Y,L)},ed:B(cb,4T){A 7W=z.2p(cb,4T);if(P.G>2){7W=z.7X(7W,P,2)}C D.5k(L,7W)},5k:B(cb,eb){D.bM.Y([cb,eb]);if(D.2y>=0){D.7U()}C D},7U:B(){A bL=D.bM;A 4n=D.2y;A 1v=D.4R[4n];A 4S=D;A cb=L;1s((bL.G>0)&&(D.3M==0)){A f=bL.3a()[4n];if(!f){6c}1u{1v=f(1v);4n=((1v 1N 1O)?1:0);if(1v 1N z.30){cb=B(1v){4S.7V(1v);4S.3M--;if((4S.3M==0)&&(4S.2y>=0)){4S.7U()}};D.3M++}}1y(1G){1z.1K(1G);4n=1;1v=1G}}D.2y=4n;D.4R[4n]=1v;if((cb)&&(D.3M)){1v.9e(cb)}}})}if(!z.1h["z.X.2e"]){z.1h["z.X.2e"]=K;z.1Q("z.X.2e");z.5m=B(2e){1u{C 3u("("+2e+")")}1y(e){1z.1K(e);C 2e}};z.bK=B(2H){C("\\""+2H.2f(/(["\\\\])/g,"\\\\$1")+"\\"").2f(/[\\f]/g,"\\\\f").2f(/[\\b]/g,"\\\\b").2f(/[\\n]/g,"\\\\n").2f(/[\\t]/g,"\\\\t").2f(/[\\r]/g,"\\\\r")};z.hM="\\t";z.eq=B(it,4l,4P){4P=4P||"";A 4k=(4l?4P+z.hM:"");A 6b=(4l?"\\n":"");A 4Q=V(it);if(4Q=="1k"){C"1k"}I{if((4Q=="4J")||(4Q=="p1")){C it+""}I{if(it===L){C"L"}}}if(4Q=="3c"){C z.bK(it)}A 6d=P.2O;A 4m;if(V it.hL=="B"){4m=it.hL();if(it!==4m){C 6d(4m,4l,4k)}}if(V it.2e=="B"){4m=it.2e();if(it!==4m){C 6d(4m,4l,4k)}}if(z.2l(it)){A 1v=[];R(A i=0;i<it.G;i++){A 1U=6d(it[i],4l,4k);if(V(1U)!="3c"){1U="1k"}1v.Y(6b+4k+1U)}C"["+1v.22(", ")+6b+4P+"]"}if(4Q=="B"){C L}A bJ=[];R(A 1i in it){A 7T;if(V(1i)=="4J"){7T="\\""+1i+"\\""}I{if(V(1i)=="3c"){7T=z.bK(1i)}I{6c}}1U=6d(it[1i],4l,4k);if(V(1U)!="3c"){6c}bJ.Y(6b+4k+7T+": "+1U)}C"{"+bJ.22(", ")+6b+4P+"}"}}if(!z.1h["z.X.6a"]){z.1h["z.X.6a"]=K;z.1Q("z.X.6a");(B(){A 69=B(Q,M,cb){C[(z.1R(Q)?Q.1A(""):Q),(M||z.1W),(z.1R(cb)?(S bI("1m","hK","6a",cb)):cb)]};z.1x(z,{T:B(bH,hH,hI,hJ){A i=0,2q=1,1d=bH.G;if(hJ){i=1d-1;2q=1d=-1}R(i=hI||i;i!=1d;i+=2q){if(bH[i]==hH){C i}}C-1},31:B(hG,hF,hE){C z.T(hG,hF,hE,K)},1n:B(Q,hD,M){if(!Q||!Q.G){C}A 1I=69(Q,M,hD);Q=1I[0];R(A i=0,l=1I[0].G;i<l;i++){1I[2].2d(1I[1],Q[i],i,Q)}},bE:B(bF,Q,hC,M){A 1I=69(Q,M,hC);Q=1I[0];R(A i=0,l=Q.G;i<l;i++){A bG=!!1I[2].2d(1I[1],Q[i],i,Q);if(bF^bG){C bG}}C bF},ah:B(Q,hB,hA){C D.bE(K,Q,hB,hA)},ag:B(Q,hz,hy){C D.bE(U,Q,hz,hy)},23:B(Q,7t,M){A 1I=69(Q,M,7t);Q=1I[0];A bD=((P[3])?(S P[3]()):[]);R(A i=0;i<Q.G;++i){bD.Y(1I[2].2d(1I[1],Q[i],i,Q))}C bD},3T:B(Q,hx,M){A 1I=69(Q,M,hx);Q=1I[0];A bC=[];R(A i=0;i<Q.G;i++){if(1I[2].2d(1I[1],Q[i],i,Q)){bC.Y(Q[i])}}C bC}})})()}if(!z.1h["z.X.1J"]){z.1h["z.X.1J"]=K;z.1Q("z.X.1J");z.1J=B(bB){if(bB){D.hw(bB)}};z.1J.hp={p0:[0,0,0],oZ:[60,60,60],oY:[2j,2j,2j],oX:[1T,1T,1T],oW:[2j,0,0],oV:[1T,0,0],oU:[2j,0,2j],oT:[1T,0,1T],oS:[0,2j,0],oR:[0,1T,0],oQ:[2j,2j,0],oP:[1T,1T,0],oO:[0,0,2j],oN:[0,0,1T],oM:[0,2j,2j],oL:[0,1T,1T]};z.4M(z.1J,{r:1T,g:1T,b:1T,a:1,bz:B(r,g,b,a){A t=D;t.r=r;t.g=g;t.b=b;t.a=a},hw:B(2Q){A d=z;if(d.1R(2Q)){d.hq(2Q,D)}I{if(d.2l(2Q)){d.7P(2Q,D)}I{D.bz(2Q.r,2Q.g,2Q.b,2Q.a);if(!(2Q 1N d.1J)){D.7Q()}}}C D},7Q:B(){C D},oK:B(){A t=D;C[t.r,t.g,t.b]},oJ:B(){A t=D;C[t.r,t.g,t.b,t.a]},oI:B(){A Q=z.23(["r","g","b"],B(x){A s=D[x].2i(16);C s.G<2?"0"+s:s},D);C"#"+Q.22("")},8F:B(hv){A t=D,7S=t.r+", "+t.g+", "+t.b;C(hv?"hs("+7S+", "+t.a:"7S("+7S)+")"},2i:B(){C D.8F(K)}});z.d8=B(bA,1d,hu,M){A d=z,t=M||S z.1J();d.1n(["r","g","b","a"],B(x){t[x]=bA[x]+(1d[x]-bA[x])*hu;if(x!="a"){t[x]=2Y.oH(t[x])}});C t.7Q()};z.ho=B(ht,M){A m=ht.1M().1f(/^hs?\\(([\\s\\.,0-9]+)\\)/);C m&&z.7P(m[1].1A(/\\s*,\\s*/),M)};z.hn=B(4j,M){A d=z,t=M||S d.1J(),7R=(4j.G==4)?4:8,hr=(1<<7R)-1;4j=2V("oG"+4j.3b(1));if(2L(4j)){C L}d.1n(["b","g","r"],B(x){A c=4j&hr;4j>>=7R;t[x]=7R==4?17*c:c});t.a=1;C t};z.7P=B(a,M){A t=M||S z.1J();t.bz(2V(a[0]),2V(a[1]),2V(a[2]),2V(a[3]));if(2L(t.a)){t.a=1}C t.7Q()};z.hq=B(2H,M){A a=z.1J.hp[2H];C a&&z.7P(a,M)||z.ho(2H,M)||z.hn(2H,M)}}if(!z.1h["z.X"]){z.1h["z.X"]=K;z.1Q("z.X")}if(!z.1h["z.X.5Z"]){z.1h["z.X.5Z"]=K;z.1Q("z.X.5Z");(B(){A 1j=z.b2={2P:B(E,68,fp){if(!E){C}68=1j.4O(68);fp=1j.7G(68,fp);E.66(68,fp,U);C fp},3J:B(E,hm,hl){(E)&&(E.oF(1j.4O(hm),hl,U))},4O:B(1p){C(1p.2w(0,2)=="on"?1p.2w(2):1p)},7G:B(1p,fp){C(1p!="4b"?fp:B(e){C fp.2d(D,1j.4i(e,D))})},4i:B(H,oE){4w(H.Z){2X"4b":1j.7K(H);3f}C H},7K:B(H){H.oD=(H.3h?67.oC(H.3h):"")}};z.oB=B(H,hk){C 1j.4i(H,hk)};z.gY=B(H){H.7J();H.7I()};A 7O=z.3i;z.by=B(M,bx,hh,hg,hi){A hj=M&&(M.2t||M.oA||M.66);A bw=!hj?0:(!hi?1:2),l=[z.3i,1j,7O][bw];A h=l.2P(M,bx,z.2p(hh,hg));C[M,bx,h,bw]};z.bv=B(M,he,hd,hf){([z.3i,1j,7O][hf]).3J(M,he,hd)};z.5W={oz:8,gV:9,oy:12,ox:13,ow:16,ov:17,ou:18,gG:19,ot:20,os:27,or:32,b5:33,b4:34,gE:35,gF:36,b7:37,b9:38,b6:39,b8:40,gD:45,8S:46,oq:47,oo:91,om:92,ol:93,oj:96,oi:97,oh:98,og:99,oe:6D,od:oc,ob:oa,o9:o8,o7:o6,o5:o4,o3:bi,o2:o1,o0:nZ,nY:nX,nW:nV,nU:bk,gS:nT,gR:nS,gQ:nR,gP:nQ,gO:nP,gN:nO,gM:nN,gL:nM,gK:nL,gJ:nK,gI:nJ,gH:nI,nH:nG,nF:nE,nD:nC,gB:nB,gC:nA};if(z.1l){bf=B(e,5h){1u{C(e.3I=5h)}1y(e){C 0}};A 61=z.3i;if(!1o.nz){7O=61=z.gy={b3:[],2P:B(64,bu,hc){64=64||z.1W;A f=64[bu];if(!f||!f.2b){A d=z.gz();d.5V=f&&(7M.Y(f)-1);d.2b=[];f=64[bu]=d}C f.2b.Y(7M.Y(hc)-1)},3J:B(hb,ha,7N){A f=(hb||z.1W)[ha],l=f&&f.2b;if(f&&l&&7N--){63 7M[l[7N]];63 l[7N]}}};A 7M=61.b3}z.1x(1j,{2P:B(E,62,fp){if(!E){C}62=1j.4O(62);if(62=="h3"){A kd=E.bs;if(!kd||!kd.2b||!kd.h9){1j.2P(E,"bs",1j.h4);E.bs.h9=K}}C 61.2P(E,62,1j.7G(fp))},3J:B(E,h8,h7){61.3J(E,1j.4O(h8),h7)},4O:B(7L){C(7L.2w(0,2)!="on"?"on"+7L:7L)},ny:B(){},4i:B(H,4N){if(!H){A w=(4N)&&((4N.aD||4N.1q||4N).nx)||26;H=w.5Z}if(!H){C(H)}H.5V=H.br;H.bh=(4N||H.br);H.nw=H.nv;H.nu=H.nr;A bq=H.br,1e=(bq&&bq.aD)||1q;A bn=((z.1l<6)||(1e["aX"]=="aW"))?1e.3E:1e.5K;A bm=z.aB();H.nq=H.np+z.aH(bn.5I||0)-bm.x;H.nn=H.nm+(bn.5G||0)-bm.y;if(H.Z=="fk"){H.h6=H.nl}if(H.Z=="fj"){H.h6=H.nk}H.7I=1j.bc;H.7J=1j.ba;C 1j.h5(H)},h5:B(H){4w(H.Z){2X"4b":A c=("3h"in H?H.3h:H.3I);if(c==10){c=0;H.3I=13}I{if(c==13||c==27){c=0}I{if(c==3){c=99}}}H.3h=c;1j.7K(H);3f}C H},gZ:{bi:42,bk:47,h2:59,nj:43,ni:44,nh:45,ng:46,nf:47,60:96,h1:91,nb:92,na:93,h0:39},h4:B(H){A kp=H.bh.h3;if(!kp||!kp.2b){C}A k=H.3I;A bj=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>bk)&&(k<h2||k>60)&&(k<h1||k>h0);if(bj||H.5Y){A c=(bj?0:k);if(H.5Y){if(k==3||k==13){C}I{if(c>95&&c<bi){c-=48}I{if((!H.5X)&&(c>=65&&c<=90)){c+=32}I{c=1j.gZ[c]||c}}}}A 2x=1j.7H(H,{Z:"4b",2x:K,3h:c});kp.2d(H.bh,2x);H.bg=2x.bg;H.bd=2x.bd;bf(H,2x.3I)}},bc:B(){D.bg=K},ba:B(){D.n9=D.3I;if(D.5Y){bf(D,0)}D.bd=U}});z.gY=B(H){H=H||26.5Z;1j.bc.2d(H);1j.ba.2d(H)}}1j.7H=B(H,gX){A 2x=z.1x({},H,gX);1j.7K(2x);2x.7J=B(){H.7J()};2x.7I=B(){H.7I()};C 2x};if(z.2M){z.1x(1j,{4i:B(H,n8){4w(H.Z){2X"4b":A c=H.n7;if(c==3){c=99}c=((c<41)&&(!H.5X)?0:c);if((H.5Y)&&(!H.5X)&&(c>=65)&&(c<=90)){c+=32}C 1j.7H(H,{3h:c})}C H}})}if(z.3o){z.1x(1j,{4i:B(H,n6){4w(H.Z){2X"4b":A c=H.3h,s=H.5X,k=H.3I;k=k||gA[H.gW]||0;if(H.gW=="n5"){c=0}I{if((H.5Y)&&(c>0)&&(c<27)){c+=96}I{if(c==z.5W.gU){c=z.5W.gV;s=K}I{c=(c>=32&&c<gT?c:0)}}}C 1j.7H(H,{3h:c,5X:s,3I:k})}C H}});z.1x(z.5W,{gU:25,b9:gT,b8:n4,b7:n3,b6:n2,gS:n1,gR:n0,gQ:mZ,gP:mY,gO:mX,gN:mW,gM:mV,gL:mU,gK:mT,gJ:mS,gI:mR,gH:mQ,gG:mP,8S:mO,gF:mN,gE:mM,b5:mL,b4:mK,gD:mJ,mI:mH,gC:mG,gB:mF});A dk=z.5W,gA={"mE":dk.b9,"mD":dk.b8,"mC":dk.b7,"mB":dk.b6,"mA":dk.b5,"mz":dk.b4}}})();if(z.1l){z.gz=B(){C B(){A ap=4e.1C,h=z.gy.b3,c=P.2O,ls=c.2b,t=h[c.5V];A r=t&&t.14(D,P);R(A i in ls){if(!(i in ap)){h[ls[i]].14(D,P)}}C r}};z.b2.7G=B(fp){A f=z.b2.4i;C B(e){C fp.2d(D,f(e,D))}}}}if(!z.1h["z.X.b1"]){z.1h["z.X.b1"]=K;z.1Q("z.X.b1");1u{1q.my("mx",U,K)}1y(e){}if(z.1l||z.2M){z.1D=B(id,1e){if(z.1R(id)){A b0=(1e||z.1e);A 11=b0.gv(id);if((11)&&(11.gw.id.1Z==id)){C 11}I{A 5U=b0.gx[id];if(!5U){C}if(!5U.G){C 5U}A i=0;1s(11=5U[i++]){if(11.gw.id.1Z==id){C 11}}}}I{C id}}}I{z.1D=B(id,1e){if(z.1R(id)){C(1e||z.1e).gv(id)}I{C id}}}(B(){A 5T=L;z.mw=B(E){E=z.1D(E);1u{if(!5T){5T=1q.a9("mv")}5T.4c(E.1L?E.1L.fs(E):E);5T.9L=""}1y(e){}};z.mu=B(E,7F){1u{E=z.1D(E);7F=z.1D(7F);1s(E){if(E===7F){C K}E=E.1L}}1y(e){}C U};z.mt=B(E,5S){E=z.1D(E);if(z.gu){E.1c.ms=(5S)?"dg":"7C"}I{if(z.6B){E.1c.mr=(5S)?"8K":"7C"}I{if(z.1l){E.gs=(5S)?"":"on";z.1r("*",E).1n(B(gt){gt.gs=(5S)?"":"on"})}}}};A 5R=B(E,4h){4h.1L.mq(E,4h);C K};A aZ=B(E,4h){A pn=4h.1L;if(4h==pn.fm){pn.4c(E)}I{C 5R(E,4h.71)}C K};z.5E=B(E,2a,3H){if((!E)||(!2a)||(V 3H=="1k")){C U}E=z.1D(E);2a=z.1D(2a);if(V 3H=="4J"){A cn=2a.3W;if(((3H==0)&&(cn.G==0))||(cn.G==3H)){2a.4c(E);C K}if(3H==0){C 5R(E,2a.5A)}C aZ(E,cn[3H-1])}4w(3H.1M()){2X"mo":C 5R(E,2a);2X"a8":C aZ(E,2a);2X"9M":if(2a.5A){C 5R(E,2a.5A)}I{2a.4c(E);C K}3f;aY:2a.4c(E);C K}};z.aP="5g-3G";if(z.1l){A aV=1q.aX;z.aP=(aV=="aW")||(aV=="gr")||(z.1l<6)?"g5-3G":"5g-3G"}A 1E,dv=1q.mn;if(z.3o){1E=B(E){A s=dv.3F(E,L);if(!s&&E.1c){E.1c.gq="";s=dv.3F(E,L)}C s||{}}}I{if(z.1l){1E=B(E){C E.gn}}I{1E=B(E){C dv.3F(E,L)}}}z.3F=1E;if(!z.1l){z.4g=B(mm,gp){C 2k(gp)||0}}I{z.4g=B(go,2N){if(!2N){C 0}if(2N=="ml"){C 4}if(2N.2w&&(2N.2w(-2)=="px")){C 2k(2N)}4G(go){A gm=1c.2g;A gl=aU.2g;aU.2g=gn.2g;1u{1c.2g=2N;2N=1c.mk}1y(e){2N=0}1c.2g=gm;aU.2g=gl}C 2N}}z.ge=(z.1l?B(E){1u{C(E.mj.mi.2W/6D)}1y(e){C 1}}:B(E){C z.3F(E).2W});z.gf=(z.1l?B(E,7D){if(7D==1){E.1c.7E=E.1c.7E.2f(/gk:[^;]*;/i,"");if(E.gj.1M()=="gi"){z.1r("> gh",E).1n(B(i){i.1c.7E=i.1c.7E.2f(/gk:[^;]*;/i,"")})}}I{A o="mh(mg="+(7D*6D)+")";E.1c.3T=o}if(E.gj.1M()=="gi"){z.1r("> gh",E).1n(B(i){i.1c.3T=o})}C 7D}:B(E,gg){C E.1c.2W=gg});A 5Q={3n:K,58:K,2g:K,5J:K};A gd=B(E,Z,5P){Z=Z.1M();if(5Q[Z]===K){C z.4g(E,5P)}I{if(5Q[Z]===U){C 5P}I{if((Z.T("mf")>=0)||(Z.T("md")>=0)||(Z.T("3n")>=0)||(Z.T("58")>=0)||(Z.T("5q")>=0)||(Z.T("mc")>=0)||(Z.T("ma")>=0)){5Q[Z]=K;C z.4g(E,5P)}I{5Q[Z]=U;C 5P}}}};z.1c=B(E,5O,aT){A n=z.1D(E),F=P.G,op=(5O=="2W");if(F==3){C op?z.gf(n,aT):n.1c[5O]=aT}if(F==2&&op){C z.ge(n)}A s=z.3F(n);C(F==1)?s:gd(n,5O,s[5O])};z.7A=B(n,gc){A s=gc||1E(n),px=z.4g,l=px(n,s.m9),t=px(n,s.m8);C{l:l,t:t,w:l+px(n,s.m7),h:t+px(n,s.m6)}};z.5N=B(n,gb){A ne="7C",px=z.4g,s=gb||1E(n),bl=(s.m5!=ne?px(n,s.m4):0),bt=(s.m3!=ne?px(n,s.m2):0);C{l:bl,t:bt,w:bl+(s.m1!=ne?px(n,s.m0):0),h:bt+(s.lZ!=ne?px(n,s.lY):0)}};z.aN=B(n,ga){A s=ga||1E(n),p=z.7A(n,s),b=z.5N(n,s);C{l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h}};z.aM=B(n,g9){A s=g9||1E(n),px=z.4g,l=px(n,s.lX),t=px(n,s.lW),r=px(n,s.lV),b=px(n,s.lU);if(z.3o&&(s.ax!="fU")){r=l}C{l:l,t:t,w:l+r,h:t+b}};z.au=B(E,g8){A s=g8||1E(E),me=z.aM(E,s);A l=E.fT-me.l,t=E.fS-me.t;if(z.7B){A aS=2k(s.2g),aR=2k(s.5J);if(!2L(aS)&&!2L(aR)){l=aS,t=aR}I{A p=E.1L;if(p&&p.1c){A aQ=1E(p);if(aQ.lT!="lS"){A be=z.5N(p,aQ);l+=be.l,t+=be.t}}}}I{if(z.2M){A p=E.1L;if(p){A be=z.5N(p);l-=be.l,t-=be.t}}}C{l:l,t:t,w:E.6v+me.w,h:E.8D+me.h}};z.aK=B(E,g7){A s=g7||1E(E),pe=z.7A(E,s),be=z.5N(E,s),w=E.aF,h;if(!w){w=E.6v,h=E.8D}I{h=E.lR,be.w=be.h=0}if(z.2M){pe.l+=be.l;pe.t+=be.t}C{l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h}};z.lQ=B(E,g6){A s=g6||1E(E),pe=z.7A(E,s),cb=z.aK(E,s);C{l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h}};z.aL=B(E,l,t,w,h,u){u=u||"px";4G(E.1c){if(!2L(l)){2g=l+u}if(!2L(t)){5J=t+u}if(w>=0){3n=w+u}if(h>=0){58=h+u}}};z.aO=B(E){A n=E.5w;C(z.aP=="g5-3G")||(n=="lP")||(n=="lO")};z.fX=B(E,7z,7y,g4){A bb=z.aO(E);if(bb){A pb=z.aN(E,g4);if(7z>=0){7z+=pb.w}if(7y>=0){7y+=pb.h}}z.aL(E,g3,g3,7z,7y)};z.fY=B(E,g1,g0,5M,5L,g2){A s=g2||z.3F(E);A bb=z.aO(E),pb=bb?fZ:z.aN(E,s),mb=z.aM(E,s);if(5M>=0){5M=2Y.5q(5M-pb.w-mb.w,0)}if(5L>=0){5L=2Y.5q(5L-pb.h-mb.h,0)}z.aL(E,g1,g0,5M,5L)};A fZ={l:0,t:0,w:0,h:0};z.lN=B(E,3G){A n=z.1D(E),s=1E(n),b=3G;C!b?z.au(n,s):z.fY(n,b.l,b.t,b.w,b.h,s)};z.lM=B(E,3G){A n=z.1D(E),s=1E(n),b=3G;C!b?z.aK(n,s):z.fX(n,b.w,b.h,s)};A 5H=B(E,1a){if(!(E=(E||0).1L)){C 0}A 1U,aJ=0,2h=z.3E();1s(E&&E.1c){if(1E(E).ax=="lL"){C 0}1U=E[1a];if(1U){aJ+=1U-0;if(E==2h){3f}}E=E.1L}C aJ};z.fQ=B(){A 2h=z.3E();A 3g=z.1W;A de=z.1e.5K;C{y:(3g.lK||de.5G||2h.5G||0),x:(3g.lJ||z.aH(de.5I)||2h.5I||0)}};z.aG=B(){C V z.aI=="1k"?(z.aI=z.3F(z.3E()).lI=="lH"):z.aI};z.aB=B(){A de=z.1e.5K;if(z.1l>=7){C{x:de.aC().2g,y:de.aC().5J}}I{C{x:z.aG()||26.am==26?de.fW:de.6v-de.aF-de.fW,y:de.lG}}};z.aH=B(aE){if(z.1l&&!z.aG()){A de=z.1e.5K;C aE+de.aF-de.lF}C aE};z.fP=B(E,aw){A ay=E.aD;A J={x:0,y:0};A 7w=U;A db=z.3E();if(z.1l){A aA=E.aC();A az=z.aB();J.x=aA.2g-az.x;J.y=aA.5J-az.y}I{if(ay["fV"]){A bo=ay.fV(E);J.x=bo.x-5H(E,"5I");J.y=bo.y-5H(E,"5G")}I{if(E["fR"]){7w=K;A 7x;if(z.3o&&(1E(E).ax=="fU")&&(E.1L==db)){7x=db}I{7x=db.1L}if(E.1L!=db){A nd=E;if(z.2M){nd=db}J.x-=5H(nd,"5I");J.y-=5H(nd,"5G")}A 4f=E;do{A n=4f["fT"];if(!z.2M||n>0){J.x+=2L(n)?0:n}A m=4f["fS"];J.y+=2L(m)?0:m;4f=4f.fR}1s((4f!=7x)&&4f)}I{if(E["x"]&&E["y"]){J.x+=2L(E.x)?0:E.x;J.y+=2L(E.y)?0:E.y}}}}if(7w||aw){A av=z.fQ();A m=7w?(!aw?-1:0):1;J.y+=m*av.y;J.x+=m*av.x}C J};z.af=B(E,fO){A n=z.1D(E),s=1E(n),mb=z.au(n,s);A at=z.fP(n,fO);mb.x=at.x;mb.y=at.y;C mb}})();z.fL=B(E,fN){C((" "+E.3A+" ").T(" "+fN+" ")>=0)};z.7s=B(E,ar){A 7v=E.3A;if((" "+7v+" ").T(" "+ar+" ")<0){E.3A=7v+(7v?" ":"")+ar}};z.7r=B(E,fM){A t=z.7g((" "+E.3A+" ").2f(" "+fM+" "," "));if(E.3A!=t){E.3A=t}};z.lE=B(E,aq,7u){if(V 7u=="1k"){7u=!z.fL(E,aq)}z[7u?"7s":"7r"](E,aq)}}if(!z.1h["z.X.1H"]){z.1h["z.X.1H"]=K;z.1Q("z.X.1H");(B(){A d=z;z.1H=B(){A F=P;if((F.G==1)&&(V F[0]=="4J")){D.G=eK(F[0])}I{if(F.G){d.1n(F,B(i){D.Y(i)},D)}}};z.1H.1C=S 4e;if(d.1l){A fK=B(al){C("A a2 = am."+al+"; "+"A ap = 4e.1C; "+"A ao = a2.1C; "+"R(A x in ao){ ap[x] = ao[x]; } "+"am."+al+" = 4e; ")};A fI=fK("z.1H");A aj=26.lD();aj.1q.fJ("<ak>"+fI+"</ak>");aj.lC(1,1,1,1)}z.4M(z.1H,{T:B(fH,fG){C d.T(D,fH,fG)},31:B(lB,lA){A aa=d.4d(P);aa.ae(D);C d.31.14(d,aa)},ah:B(fF,fE){C d.ah(D,fF,fE)},ag:B(fD,fC){C d.ag(D,fD,fC)},1n:B(fB,fA){d.1n(D,fB,fA);C D},23:B(7t,M){C d.23(D,7t,M,d.1H)},af:B(){C d.23(D,d.af)},1c:B(lz,ly){A aa=d.4d(P);aa.ae(D[0]);A s=d.1c.14(d,aa);C(P.G>1)?D:s},lx:B(lw,lv){A aa=d.4d(P);aa.ae(L);A s=D.23(B(i){aa[0]=i;C d.1c.14(d,aa)});C(P.G>1)?D:s},7s:B(fz){C D.1n(B(i){z.7s(i,fz)})},7r:B(fy){C D.1n(B(i){z.7r(i,fy)})},5E:B(fw,7q){A 1m=d.1r(fw)[0];7q=7q||"72";R(A x=0;x<D.G;x++){d.5E(D[x],1m,7q)}C D},2c:B(fv,fu,ft){D.1n(B(1m){d.2c(1m,fv,fu,ft)});C D},lu:B(ad){A ac=(ad)?d.9t(D,ad):D;ac.1n(B(1m){if(1m["1L"]){1m.1L.fs(1m)}});C ac},lt:B(fr,fq){A 1m=D[0];C d.1r(fr).1n(B(ai){d.5E(ai,1m,(fq||"72"))})},1r:B(7p){7p=7p||"";A J=S d.1H();D.1n(B(1m){d.1r(7p,1m).1n(B(ab){if(V ab!="1k"){J.Y(ab)}})});C J},3T:B(fo){A 5F=D;A 1V=P;A r=S d.1H();A rp=B(t){if(V t!="1k"){r.Y(t)}};if(d.1R(fo)){5F=d.9t(D,1V[0]);if(1V.G==1){C 5F}d.1n(d.3T(5F,1V[1],1V[2]),rp);C r}d.1n(d.3T(5F,1V[0],1V[1]),rp);C r},lr:B(7o,7n){A 1S=d.1e.a9("lq");if(d.1R(7o)){1S.9L=7o}I{1S.4c(7o)}A ct=((7n=="9M")||(7n=="a8"))?"fm":"5A";D.1n(B(1m){A 24=1S.a7(K);1s(24[ct]){d.5E(24[ct],1m,7n)}});C D},7m:B(fl,F){A a5=[];F=F||{};D.1n(B(1m){A a6={E:1m};d.1x(a6,F);a5.Y(d[fl](a6))});C d.fx.lp(a5)},8I:B(F){C D.7m("8I",F)},8H:B(F){C D.7m("8H",F)},6y:B(F){C D.7m("6y",F)}});z.1n(["fk","lo","fj","fi","ln","lm","ll","fi","lk","lj","4b"],B(H){A a4="on"+H;z.1H.1C[a4]=B(a,b){C D.2c(a4,a,b)}})})()}if(!z.1h["z.X.1r"]){z.1h["z.X.1r"]=K;z.1Q("z.X.1r");(B(){A d=z;A 2I=B(q){C[q.T("#"),q.T("."),q.T("["),q.T(":")]};A a0=B(a3,fh){A ql=a3.G;A i=2I(a3);A 1d=ql;R(A x=fh;x<i.G;x++){if(i[x]>=0){if(i[x]<1d){1d=i[x]}}}C(1d<0)?ql:1d};A 6X=B(7l){A i=2I(7l);if(i[0]!=-1){C 7l.21(i[0]+1,a0(7l,1))}I{C""}};A 5r=B(7k){A 5D;A i=2I(7k);if((i[0]==0)||(i[1]==0)){5D=0}I{5D=a0(7k,0)}C((5D>0)?7k.3b(0,5D).1M():"*")};A fg=B(Q){A J=-1;R(A x=0;x<Q.G;x++){A 1S=Q[x];if(1S>=0){if((1S>J)||(J==-1)){J=1S}}}C J};A 9H=B(7i){A i=2I(7i);if(-1==i[1]){C""}A di=i[1]+1;A 7j=fg(i.2w(2));if(di<7j){C 7i.21(di,7j)}I{if(-1==7j){C 7i.3b(di)}I{C""}}};A f3=[{1i:"|=",1f:B(15,fe){C"[5z(3U(\' \',@"+15+",\' \'), \' "+fe+"-\')]"}},{1i:"~=",1f:B(15,fd){C"[5z(3U(\' \',@"+15+",\' \'), \' "+fd+" \')]"}},{1i:"^=",1f:B(15,fb){C"[li-4G(@"+15+", \'"+fb+"\')]"}},{1i:"*=",1f:B(15,fa){C"[5z(@"+15+", \'"+fa+"\')]"}},{1i:"$=",1f:B(15,9Z){C"[21(@"+15+", 3c-G(@"+15+")-"+(9Z.G-1)+")=\'"+9Z+"\']"}},{1i:"!=",1f:B(15,f9){C"[3O(@"+15+"=\'"+f9+"\')]"}},{1i:"=",1f:B(15,f8){C"[@"+15+"=\'"+f8+"\']"}}];A 9C=B(9Y,3Z,f7,f6){A 49;A i=2I(3Z);if(i[2]>=0){A 4L=3Z.T("]",i[2]);A 29=3Z.21(i[2]+1,4L);1s(29&&29.G){if(29.2s(0)=="@"){29=29.2w(1)}49=L;R(A x=0;x<9Y.G;x++){A 1S=9Y[x];A 7h=29.T(1S.1i);if(7h>=0){A 15=29.21(0,7h);A 4a=29.21(7h+1S.1i.G);if((4a.2s(0)=="\\"")||(4a.2s(0)=="\'")){4a=4a.21(1,4a.G-1)}49=1S.1f(d.7g(15),d.7g(4a));3f}}if((!49)&&(29.G)){49=f7(29)}if(49){f6(49)}29=L;A 7f=3Z.T("[",4L);if(0<=7f){4L=3Z.T("]",7f);if(0<=4L){29=3Z.21(7f+1,4L)}}}}};A f0=B(f5){A 4K=".";A 7e=f5.1A(" ");1s(7e.G){A 2K=7e.3a();A 7d;if(2K==">"){7d="/";2K=7e.3a()}I{7d="//"}A f4=5r(2K);4K+=7d+f4;A id=6X(2K);if(id.G){4K+="[@id=\'"+id+"\'][1]"}A cn=9H(2K);if(cn.G){A 9X=" ";if(cn.2s(cn.G-1)=="*"){9X="";cn=cn.3b(0,cn.G-1)}4K+="[5z(3U(\' \',@9P,\' \'), \' "+cn+9X+"\')]"}9C(f3,2K,B(f2){C"[@"+f2+"]"},B(f1){4K+=f1})}C 4K};A 7a={};A eC=B(28){if(7a[28]){C 7a[28]}A 1e=d.1e;A 9W=f0(28);A 4H=B(9V){A J=[];A 7b;1u{7b=1e.9x(9W,9V,L,lh.lg,L)}1y(e){1z.1K("lf in le:",9W,"lc:",9V);1z.1K(e)}A 7c=7b.eZ();1s(7c){J.Y(7c);7c=7b.eZ()}C J};C 7a[28]=4H};A 5x={};A 9B={};A 3y=B(79,78){if(!79){C 78}if(!78){C 79}C B(){C 79.14(26,P)&&78.14(26,P)}};A 75=B(9U,3Y,5B,2J){A 2v=2J+1;A 76=(3Y.G==2v);A 2K=3Y[2J];if(2K==">"){A 77=9U.3W;if(!77.G){C}2v++;76=(3Y.G==2v);A 4H=6O(3Y[2J+1]);R(A x=0,11;x<77.G,11=77[x];x++){if(4H(11)){if(76){5B.Y(11)}I{75(11,3Y,5B,2v)}}}}A 5C=6U(2K)(9U);if(76){1s(5C.G){5B.Y(5C.3a())}}I{1s(5C.G){75(5C.3a(),3Y,5B,2v)}}};A eE=B(9T,eY){A J=[];A x=9T.G-1,11;1s(11=9T[x--]){75(11,eY,J,0)}C J};A 6O=B(3D){if(5x[3D]){C 5x[3D]}A ff=L;A 9S=5r(3D);if(9S!="*"){ff=3y(ff,B(N){C((N.2t==1)&&(9S==N.5w.1M()))})}A 9R=6X(3D);if(9R.G){ff=3y(ff,B(N){C((N.2t==1)&&(N.id==9R))})}if(2Y.5q.14(D,2I(3D).2w(1))>=0){ff=3y(ff,9z(3D))}C 5x[3D]=ff};A 5y=B(E){A pn=E.1L;A 9Q=pn.3W;A 2v=-1;A 3C=pn.5A;if(!3C){C 2v}A ci=E["eW"];A cl=pn["eX"];if(((V cl=="4J")&&(cl!=9Q.G))||(V ci!="4J")){pn["eX"]=9Q.G;A 2J=1;do{if(3C===E){2v=2J}if(3C.2t==1){3C["eW"]=2J;2J++}3C=3C.71}1s(3C)}I{2v=ci}C 2v};A lb=0;A 3X=B(N,15){A 74="";if(15=="9P"){C N.3A||74}if(15=="R"){C N.la||74}C N.5t(15,2)||74};A eH=[{1i:"|=",1f:B(15,9O){A eV=" "+9O+"-";C B(N){A ea=" "+(N.5t(15,2)||"");C((ea==9O)||(ea.T(eV)==0))}}},{1i:"^=",1f:B(15,eU){C B(N){C(3X(N,15).T(eU)==0)}}},{1i:"*=",1f:B(15,eT){C B(N){C(3X(N,15).T(eT)>=0)}}},{1i:"~=",1f:B(15,eS){A 9N=" "+eS+" ";C B(N){A ea=" "+3X(N,15)+" ";C(ea.T(9N)>=0)}}},{1i:"$=",1f:B(15,73){A 9N=" "+73;C B(N){A ea=" "+3X(N,15);C(ea.31(73)==(ea.G-73.G))}}},{1i:"!=",1f:B(15,eR){C B(N){C(3X(N,15)!=eR)}}},{1i:"=",1f:B(15,eQ){C B(N){C(3X(N,15)==eQ)}}}];A 9E=[{1i:"9M-9K",1f:B(1p,l9){C B(N){if(N.2t!=1){C U}A fc=N.eP;1s(fc&&(fc.2t!=1)){fc=fc.eP}C(!fc)}}},{1i:"72-9K",1f:B(1p,l8){C B(N){if(N.2t!=1){C U}A nc=N.71;1s(nc&&(nc.2t!=1)){nc=nc.71}C(!nc)}}},{1i:"l7",1f:B(1p,l6){C B(N){A cn=N.3W;A eO=N.3W.G;R(A x=eO-1;x>=0;x--){A nt=cn[x].2t;if((nt==1)||(nt==3)){C U}}C K}}},{1i:"5z",1f:B(1p,eN){C B(N){C(N.9L.T(eN)>=0)}}},{1i:"3O",1f:B(1p,eM){A eL=6O(eM);C B(N){C(!eL(N))}}},{1i:"l5-9K",1f:B(1p,2u){A pi=eK;if(2u=="l4"){C B(N){C(((5y(N))%2)==1)}}I{if((2u=="2n")||(2u=="l3")){C B(N){C((5y(N)%2)==0)}}I{if(2u.T("l2+")==0){A 70=pi(2u.3b(3));C B(N){C(N.1L.3W[70-1]===N)}}I{if((2u.T("n+")>0)&&(2u.G>3)){A 9J=2u.1A("n+",2);A eJ=pi(9J[0]);A 2J=pi(9J[1]);C B(N){C((5y(N)%eJ)==2J)}}I{if(2u.T("n")==-1){A 70=pi(2u);C B(N){C(5y(N)==70)}}}}}}}}];A 9z=B(3e){A 9I=(9B[3e]||5x[3e]);if(9I){C 9I}A ff=L;A i=2I(3e);if(i[0]>=0){A 24=5r(3e);if(24!="*"){ff=3y(ff,B(N){C(N.5w.1M()==24)})}}A 5u;A 3B=9H(3e);if(3B.G){A 9F=3B.2s(3B.G-1)=="*";if(9F){3B=3B.3b(0,3B.G-1)}A re=S 9G("(?:^|\\\\s)"+3B+(9F?".*":"")+"(?:\\\\s|$)");ff=3y(ff,B(N){C re.6Z(N.3A)})}if(i[3]>=0){A 3z=3e.3b(i[3]+1);A 9D="";A 5v=3z.T("(");A 6Y=3z.31(")");if((0<=5v)&&(0<=6Y)&&(6Y>5v)){9D=3z.21(5v+1,6Y);3z=3z.3b(0,5v)}5u=L;R(A x=0;x<9E.G;x++){A 1S=9E[x];if(1S.1i==3z){5u=1S.1f(3z,9D);3f}}if(5u){ff=3y(ff,5u)}}A eG=(d.1l)?B(5s){A eI=5s.1M();C B(N){C N[5s]||N[eI]}}:B(5s){C B(N){C(N&&N.5t&&N.l1(5s))}};9C(eH,3e,eG,B(eF){ff=3y(ff,eF)});if(!ff){ff=B(){C K}}C 9B[3e]=ff};A 6W={};A 6U=B(3d,1B){A 9A=6W[3d];if(9A){C 9A}A i=2I(3d);A id=6X(3d);if(i[0]==0){C 6W[3d]=B(1B){C[d.1D(id)]}}A 9y=9z(3d);A 5p;if(i[0]>=0){5p=B(1B){A 11=d.1D(id);if(9y(11)){C[11]}}}I{A 3V;A 24=5r(3d);if(2Y.5q.14(D,2I(3d))==-1){5p=B(1B){A J=[];A 11,x=0,3V=1B.4I(24);1s(11=3V[x++]){J.Y(11)}C J}}I{5p=B(1B){A J=[];A 11,x=0,3V=1B.4I(24);1s(11=3V[x++]){if(9y(11)){J.Y(11)}}C J}}}C 6W[3d]=5p};A l0={};A 5o={">":B(1B){A J=[];A 11,x=0,3V=1B.3W;1s(11=3V[x++]){if(11.2t==1){J.Y(11)}}C J}};A 9w=B(6V){if(0>6V.T(" ")){C 6U(6V)}A eD=B(1B){A 6S=6V.1A(" ");A 6T;if(6S[0]==">"){6T=[1B]}I{6T=6U(6S.3a())(1B)}C eE(6T,6S)};C eD};A 9v=((1q["9x"]&&!d.3o)?B(3x){A 6R=3x.1A(" ");if((1q["9x"])&&(3x.T(":")==-1)&&((K))){if(((6R.G>2)&&(3x.T(">")==-1))||(6R.G>3)||(3x.T("[")>=0)||((1==6R.G)&&(0<=3x.T(".")))){C eC(3x)}}C 9w(3x)}:9w);A ey=B(3w){if(5o[3w]){C 5o[3w]}if(0>3w.T(",")){C 5o[3w]=9v(3w)}I{A eB=3w.1A(/\\s*,\\s*/);A 4H=B(1B){A eA=0;A J=[];A 6Q;1s(6Q=eB[eA++]){J=J.3U(9v(6Q,6Q.T(" "))(1B))}C J};C 5o[3w]=4H}};A 5n=0;A ez=B(Q){A J=S d.1H();if(!Q){C J}if(Q[0]){J.Y(Q[0])}if(Q.G<2){C J}5n++;Q[0]["9u"]=5n;R(A x=1,11;11=Q[x];x++){if(Q[x]["9u"]!=5n){J.Y(11)}11["9u"]=5n}C J};d.1r=B(6P,1B){if(V 6P!="3c"){C S d.1H(6P)}if(V 1B=="3c"){1B=d.1D(1B)}C ez(ey(6P)(1B||d.1e))};d.9t=B(ex,9s){A 9r=S d.1H();A ff=(9s)?6O(9s):B(){C K};R(A x=0,11;11=ex[x];x++){if(ff(11)){9r.Y(11)}}C 9r}})()}if(!z.1h["z.X.1b"]){z.1h["z.X.1b"]=K;z.1Q("z.X.1b");z.6K=B(ew){A J={};A iq="kZ[Z!=9q][Z!=kY][Z!=et][Z!=kX][Z!=kW], kV, kU";z.1r(iq,ew).3T(B(E){C(!E.kT)}).1n(B(1m){A 3v=1m.1p;A Z=(1m.Z||"").1M();if((Z=="kS")||(Z=="kR")){if(1m.kQ){J[3v]=1m.1Z}}I{if(1m.kP){A ev=J[3v]=[];z.1r("kO[kN]",1m).1n(B(eu){ev.Y(eu.1Z)})}I{J[3v]=1m.1Z;if(Z=="et"){J[3v+".x"]=J[3v+".y"]=J[3v].x=J[3v].y=0}}}});C J};z.9h=B(23){A ec=kM;A J="";A es={};R(A x in 23){if(23[x]!=es[x]){if(z.2l(23[x])){R(A y=0;y<23[x].G;y++){J+=ec(x)+"="+ec(23[x][y])+"&"}}I{J+=ec(x)+"="+ec(23[x])+"&"}}}if((J.G)&&(J.2s(J.G-1)=="&")){J=J.3b(0,J.G-1)}C J};z.kL=B(er){C z.9h(z.6K(er))};z.kK=B(ep){C z.eq(z.6K(ep))};z.kJ=B(2H){A J={};A qp=2H.1A("&");A dc=kI;z.1n(qp,B(1m){if(1m.G){A 9p=1m.1A("=");A 1p=dc(9p.3a());A 1U=dc(9p.22("="));if(z.1R(J[1p])){J[1p]=[J[1p]]}if(z.2l(J[1p])){J[1p].Y(1U)}I{J[1p]=1U}}});C J};z.e1=U;z.e6={"9g":B(1b){C 1b.2G},"2e":B(1b){if(!1o.eo){1z.1K("kH kG kF a kE of 9g/2e-6M-9m"+" 4F kD kC kB kA 4G en kz"+" (ky 1o.eo=K 4F kx kw D kv)")}C z.5m(1b.2G)},"2e-6M-ku":B(1b){A 6N=1b.2G;A 9o=6N.T("/*");A 9n=6N.31("*/");if((9o==-1)||(9n==-1)){C z.5m(1b.2G)}C z.5m(6N.21(9o+2,9n))},"2e-6M-9m":B(1b){A 6L=1b.2G;A 9l=6L.T("/*");A 9k=6L.31("*/");if((9l==-1)||(9k==-1)){1z.1K("kt en ks\'t 6M 9m!");C""}C z.5m(6L.21(9l+2,9k))},"kr":B(1b){C z.3u(1b.2G)},"kq":B(1b){if(z.1l&&!1b.el){z.1n(["ko","em","kn","km"],B(i){1u{A 1e=S 9j(kl[i]+".kk");1e.kj=U;1e.ki(1b.2G);C 1e}1y(e){}})}I{C 1b.el}}};(B(){z.e5=B(F,ej,ei,eh){A 2F={};2F.F=F;A 6J=L;if(F.3R){A 3R=z.1D(F.3R);A 9i=3R.kh("kg");2F.2E=F.2E||(9i?9i.1Z:L);6J=z.6K(3R)}I{2F.2E=F.2E}A 5l=[{}];if(6J){5l.Y(6J)}if(F.5g){5l.Y(F.5g)}if(F.ek){5l.Y({"z.ek":S 5d().8O()})}2F.1r=z.9h(z.1x.14(L,5l));2F.9d=F.9d||"9g";A d=S z.30(ej);d.5k(ei,B(eg){C eh(eg,d)});A ld=F.4E;if(ld&&z.1Y(ld)){d.ef(B(ee){C ld.2d(F,ee,2F)})}A 1G=F.9f;if(1G&&z.1Y(1G)){d.ed(B(e9){C 1G.2d(F,e9,2F)})}A 6I=F.kf;if(6I&&z.1Y(6I)){d.9e(B(e8){C 6I.2d(F,e8,2F)})}d.1F=2F;C d};A e4=B(O){O.e0=K;A 1b=O.1F.1b;if(V 1b.e7=="B"){1b.e7()}};A e3=B(O){C z.e6[O.1F.9d](O.1F.1b)};A e2=B(9c,O){1z.1K(9c);C 9c};A 3Q=B(F){A O=z.e5(F,e4,e3,e2);O.1F.1b=z.9b(O.1F.F);C O};A 5j=L;A 3t=[];A 94=B(){A dZ=(S 5d()).dU();if(!z.e1){z.1n(3t,B(4D,6H){if(!4D){C}A O=4D.O;1u{if(!O||O.e0||!4D.dT(O)){3t.3S(6H,1);C}if(4D.dR(O)){3t.3S(6H,1);4D.dP(O)}I{if(O.9a){if(O.9a+(O.1F.F.6G||0)<dZ){3t.3S(6H,1);A 1G=S 1O("6G ke");1G.dY="6G";O.5i(1G);O.4C()}}}}1y(e){1z.1K(e);O.5i(S 1O("kc!"))}})}if(!3t.G){dX(5j);5j=L;C}};z.dV=B(){1u{z.1n(3t,B(i){i.O.4C()})}1y(e){}};if(z.1l){z.dW(z.dV)}z.dH=B(O,dS,dQ,dO){if(O.1F.F.6G){O.9a=(S 5d()).dU()}3t.Y({O:O,dT:dS,dR:dQ,dP:dO});if(!5j){5j=dN(94,50)}94()};A dJ="8Z/x-kb-3R-ka";A dG=B(O){C O.1F.1b.6F};A dF=B(O){C 4==O.1F.1b.6F};A dE=B(O){if(z.8Y(O.1F.1b)){O.dM(O)}I{O.5i(S 1O("k9 k8 k7 5h:"+O.1F.1b.3N))}};A 3P=B(Z,O){A 3s=O.1F;A F=3s.F;3s.1b.dL(Z,3s.2E,(F.k6!==K),(F.8X?F.8X:1k),(F.8W?F.8W:1k));if(F.6E){R(A 5f in F.6E){if(5f.1M()==="5g-Z"&&!F.8V){F.8V=F.6E[5f]}I{3s.1b.dK(5f,F.6E[5f])}}}3s.1b.dK("k5-k4",(F.8V||dJ));1u{3s.1b.dI(3s.1r)}1y(e){O.4C()}z.dH(O,dG,dF,dE);C O};z.8T=B(4B){if(4B.1r.G){4B.2E+=(4B.2E.T("?")==-1?"?":"&")+4B.1r;4B.1r=L}};z.k3=B(F){A O=3Q(F);z.8T(O.1F);C 3P("dD",O)};z.k2=B(F){C 3P("dC",3Q(F))};z.k1=B(F){A O=3Q(F);O.1F.1r=F.k0;C 3P("dC",O)};z.jZ=B(F){C 3P("dA",3Q(F))};z.jY=B(F){A O=3Q(F);A dB=O.1F;if(F["8U"]){dB.1r=F.8U;F.8U=L}C 3P("dA",O)};z.jX=B(F){A O=3Q(F);z.8T(O.1F);C 3P("8S",O)};z.dz=B(jW){2m S 1O("z.dz 3O jV jU")}})()}if(!z.1h["z.X.fx"]){z.1h["z.X.fx"]=K;z.1Q("z.X.fx");z.dx=B(dy,1d){D.1w=dy;D.1d=1d;D.4x=B(n){C((D.1d-D.1w)*n)+D.1w}};z.2r("z.d6",L,{1P:B(F){z.1x(D,F);if(z.2l(D.2C)){D.2C=S z.dx(D.2C[0],D.2C[1])}},2C:L,8Q:jT,5a:L,4z:0,dj:10,du:L,6x:L,dt:L,8B:L,dh:L,ds:L,dr:L,dm:L,2D:U,2Z:U,4A:L,8N:L,3r:L,2o:0,4y:0,3q:B(H,F){if(D[H]){D[H].14(D,F||[])}C D},5b:B(dw,8R){if(8R){5e(D.3r);D.2D=D.2Z=U;D.2o=0}I{if(D.2D&&!D.2Z){C D}}D.3q("6x");A d=dw||D.du;if(d>0){5c(z.2p(D,B(){D.5b(L,8R)}),d);C D}D.4A=S 5d().8O();if(D.2Z){D.4A-=D.8Q*D.2o}D.8N=D.4A+D.8Q;D.2D=K;D.2Z=U;A 8P=D.2C.4x(D.2o);if(!D.2o){if(!D.4y){D.4y=D.4z}D.3q("dt",[8P])}D.3q("ds",[8P]);D.8M();C D},jS:B(){5e(D.3r);if(!D.2D){C D}D.2Z=K;D.3q("dr",[D.2C.4x(D.2o)]);C D},jR:B(dq,dp){5e(D.3r);D.2D=D.2Z=K;D.2o=dq*6D;if(dp){D.5b()}C D},jQ:B(dn){if(!D.3r){C}5e(D.3r);if(dn){D.2o=1}D.3q("dm",[D.2C.4x(D.2o)]);D.2D=D.2Z=U;C D},3N:B(){if(D.2D){C D.2Z?"3M":"jP"}C"jO"},8M:B(){5e(D.3r);if(D.2D){A dl=S 5d().8O();A 2q=(dl-D.4A)/(D.8N-D.4A);if(2q>=1){2q=1}D.2o=2q;if(D.5a){2q=D.5a(2q)}D.3q("8B",[D.2C.4x(2q)]);if(2q<1){D.3r=5c(z.2p(D,"8M"),D.dj)}I{D.2D=U;if(D.4z>0){D.4z--;D.5b(L,K)}I{if(D.4z==-1){D.5b(L,K)}I{if(D.4y){D.4z=D.4y;D.4y=0}}}D.2o=0;D.3q("dh")}}C D}});(B(){A df=B(E){if(z.1l){A ns=E.1c;if(!ns.8L.G&&z.1c(E,"8L")=="dg"){ns.8L="1"}if(!ns.3n.G&&z.1c(E,"3n")=="8K"){ns.3n="8K"}}};z.6C=B(F){if(V F.1d=="1k"){2m S 1O("z.6C jN an 1d 1Z")}F.E=z.1D(F.E);A 3p=z.1x({6w:{}},F);A 8J=(3p.6w.2W={});8J.1w=(V 3p.1w=="1k")?B(){C 2V(z.1c(3p.E,"2W"))}:3p.1w;8J.1d=3p.1d;A 2U=z.6y(3p);z.2c(2U,"6x",L,B(){df(3p.E)});C 2U};z.8I=B(F){C z.6C(z.1x({1d:1},F))};z.8H=B(F){C z.6C(z.1x({1d:0},F))};if(z.6B&&!z.3o){z.8E=B(n){C 2k("0.5")+((2Y.da((n+2k("1.5"))*2Y.d9))/2)}}I{z.8E=B(n){C 0.5+((2Y.da((n+1.5)*2Y.d9))/2)}}A d4=B(6A){D.8G=6A;R(A p in 6A){A 1a=6A[p];if(1a.1w 1N z.1J){1a.d7=S z.1J()}}D.4x=B(r){A J={};R(A p in D.8G){A 1a=D.8G[p];A 6z=L;if(1a.1w 1N z.1J){6z=z.d8(1a.1w,1a.1d,r,1a.d7).8F()}I{if(!z.2l(1a.1w)){6z=((1a.1d-1a.1w)*r)+1a.1w+(p!="2W"?1a.jM||"px":"")}}J[p]=6z}C J}};z.6y=B(F){F.E=z.1D(F.E);if(!F.5a){F.5a=z.8E}A 2U=S z.d6(F);z.2c(2U,"6x",2U,B(){A pm={};R(A p in D.6w){A 1a=pm[p]=z.1x({},D.6w[p]);if(z.1Y(1a.1w)){1a.1w=1a.1w()}if(z.1Y(1a.1d)){1a.1d=1a.1d()}A d5=(p.1M().T("jL")>=0);B 8C(E,p){4w(p){2X"58":C E.8D;2X"3n":C E.6v}A v=z.1c(E,p);C(p=="2W")?2V(v):2k(v)};if(V 1a.1d=="1k"){1a.1d=8C(D.E,p)}I{if(V 1a.1w=="1k"){1a.1w=8C(D.E,p)}}if(d5){1a.1w=S z.1J(1a.1w);1a.1d=S z.1J(1a.1d)}I{1a.1w=(p=="2W")?2V(1a.1w):2k(1a.1w)}}D.2C=S d4(pm)});z.2c(2U,"8B",2U,B(8A){R(A s in 8A){z.1c(D.E,s,8A[s])}});C 2U}})()}',62,1711,'|||||||||||||||||||||||||||||||||||dojo|var|function|return|this|node|args|length|evt|else|ret|true|null|obj|elem|dfd|arguments|arr|for|new|indexOf|false|typeof||_base|push|type||te|||apply|attr|||||prop|xhr|style|end|doc|match|uri|_hasResource|key|del|undefined|isIE|item|forEach|djConfig|name|document|query|while|_66|try|res|start|mixin|catch|console|split|root|prototype|byId|gcs|ioArgs|err|NodeList|_p|Color|debug|parentNode|toLowerCase|instanceof|Error|constructor|provide|isString|ta|255|val|_a|global|_69|isFunction|value||substring|join|map|tn||window||path|_343|_220|_listeners|connect|call|json|replace|left|_b|toString|128|parseFloat|isArray|throw||_percent|hitch|step|declare|charAt|nodeType|_3c3|nidx|slice|faux|fired|_c4|_7e|loc|curve|_active|url|_44c|responseText|str|_312|idx|tqp|isNaN|isOpera|_22d|callee|add|_18b|_f8|_e2|_41|anim|Number|opacity|case|Math|_paused|Deferred|lastIndexOf|||||||||shift|substr|string|_3e7|_3ce|break|_w|charCode|_listener|_d5|_c5|authority|_49|width|isSafari|_49e|fire|_timer|_47b|_465|eval|_in|_40c|_409|_362|_3d9|className|_3d5|_386|_37a|body|getComputedStyle|box|_221|keyCode|remove|_8d|_46|paused|status|not|_478|_461|form|splice|filter|concat|tret|childNodes|_38b|_367|_33d||||||||||_340|_348|keypress|appendChild|_toArray|Array|_2b0|_toPixelValue|ref|_fixEvent|_19f|_14c|_14a|_150|_141|declaredClass|_d4|_99|_Url|_83|scheme|_67|_3d|switch|getValue|_startRepeatCount|repeat|_startTime|_47e|cancel|tif|load|to|with|tf|getElementsByTagName|number|_34c|_342|extend|_1e3|_normalizeEventName|_14b|_14e|results|self|cbfn|_f9|_d8|_b2|src|_88|dav||baseUrl|fragment|_loadedModules|_44|_43|_loaders|mll|height||easing|play|setTimeout|Date|clearTimeout|hdr|content|code|errback|_464|addCallbacks|_450|fromJson|_413|_3fc|_3ee|max|_31e|cond|getAttribute|_3d4|obi|tagName|_360|_381|contains|firstChild|_368|_372|_320|place|_2fa|scrollTop|_299|scrollLeft|top|documentElement|_288|_287|_getBorderExtents|_23f|_23d|_239|_218|_216|_211|eles|target|keys|shiftKey|ctrlKey|event|192|iel|_1db|delete|_1cf||addEventListener|String|_1af|_157|array|_14d|continue|_14f|_137|_11f|_106|_findMethod|has|_delegate|_dc|_d3|loaded|_9a|_loadInit|_inFlightCount|getObject|tv|_4f|_postLoad|_2d|offsetWidth|properties|beforeBegin|animateProperty|_4ad|_4a6|isKhtml|_fade|100|headers|readyState|timeout|_469|_457|_44d|formToObject|_441|comment|_43d|_36f|_419|tp|_40a|_406|_407|_373|_403|_3e6|_31b|cbi|test|_3c7|nextSibling|last|_3a1|_38e|_365|_36b|ecn|_364|_363|_356|_35e|_35f|_34f|_34d|_349|trim|tci|_328|_32b|_31f|_31c|_anim|_300|_2ff|_2f5|_2e7|removeClass|addClass|func|_2c4|cls|_2a9|_2ae|_280|_27f|_getPadExtents|isMoz|none|_233|cssText|_214|_fixCallback|_synthesizeEvent|stopPropagation|preventDefault|_setKeyChar|_1e1|ieh|_1d7|_1be|colorFromArray|sanitize|bits|rgb|_156|_fire|_resback|_13d|partial|_13a|silentlyCancelled|_topics|_127|_f1|_f0|superclass|_ec|_e3|mct|setObject|_bf|_b3|object|require|_92|_khtmlTimer|location|XMLHTTP|locale|dua|_71|_modulePrefixes|_55|_loadModule|_51|_50|_4e|pop|_3f|_callLoaded|_unloaders|_loadNotifying|_loadedUrls|_27|_24|_1d|_5|_4b7|onAnimate|getStyle|offsetHeight|_defaultEasing|toCss|_properties|fadeOut|fadeIn|_49f|auto|zoom|_cycle|_endTime|valueOf|_494|duration|_492|DELETE|_ioAddQueryToUrl|putData|contentType|password|user|_isDocumentOk|application|||||_466||||||startTime|_xhrObj|_45f|handleAs|addBoth|error|text|objectToQuery|_44f|ActiveXObject|_443|_442|filtered|_43f|_43e|_437|file|tnl|_41c|_filterQueryResult|_zipIdx|_408|_402|evaluate|_3ed|_380|fHit|_361|_33b|_3da|_3ab|_3d6|RegExp|_327|_3cf|_3c9|child|innerHTML|first|tval|_391|class|pnc|_37e|_37c|_375|_366|_35c|_35a|_353|_33c|_336|_314|||_315|_oe|_307|_309|cloneNode|after|createElement||_2f8|_2ef|_2ee|unshift|coords|some|every||_2cb|script|_2c9|parent||a2p||_2c3|_2bd||abs|_getMarginBox|_2b3|_2a6|position|_2a7|_2ac|_2ab|_getIeDocumentElementOffset|getBoundingClientRect|ownerDocument|_2a3|clientWidth|_isBodyLtr|_fixIeBiDiScrollLeft|_bodyLtr|_29d|_getContentBox|_setBox|_getMarginExtents|_getPadBorderExtents|_usesBorderBox|boxModel|pcs|st|sl|_240|runtimeStyle|_dcm|BackCompat|compatMode|default|_21b|_d|html|_event_listener|handlers|PAGE_DOWN|PAGE_UP|RIGHT_ARROW|LEFT_ARROW|DOWN_ARROW|UP_ARROW|_preventDefault||_stopPropagation|returnValue||_trySetKeyCode|cancelBubble|currentTarget|106|_1ee|111||_1e8|_1e7|||se|srcElement|onkeydown||_1d0|_disconnect|lid|_1c0|_connect|_set|_195|_185|_183|_17d|_everyOrSome|_16b|_172|_15b|Function|_154|_escapeString|_140|chain|_check|canceller|_12d|_124|_11a|_10d|_107|inherited|_fa|_f2|_findMixin|_constructor|preamble|_de|clone|tmp|_c7|TMP|_be|_ba|_mixin|isBrowser|lang|firebug||param|modulePaths|_a7|_fireCallback|_a0|setContext||_9c|unloaded||||_96|_93|navigator|_90|_89||protocol|_84|_86|_XMLHTTP_PROGIDS|gears|google|setAttribute|_80|_77|cfg|_6f|_getModuleSymbols|_5a|_58|_53|_4d|_4c|_45|_40|_moduleHasPrefix|_loadUri|_28|_26|_21|_22|tests|doh|_20|_1f|_1c|version|_1b|_19|_getProp|_11|_4|_4a5|_4b3|_Animation|tempColor|blendColors|PI|sin|||||_49a|normal|onEnd||rate||curr|onStop|_497||_496|pct|onPause|onPlay|onBegin|delay||_491|_Line|_48b|wrapForm|PUT|_487|POST|GET|_476|_474|_472|_ioWatch|send|_471|setRequestHeader|open|callback|setInterval|_470|resHandle|_46f|ioCheck|_46e|validCheck|getTime|_ioCancelAll|addOnUnload|clearInterval|dojoType|now|canceled|_blockAsync|_45e|_45c|_459|_ioSetArgs|_contentHandlers|abort|_458|_456||||addErrback|_454|addCallback|_452|_44b|_44a|_449|preventCache|responseXML|Microsoft|JSON|usePlainJson|_431|toJson|_430|_42d|image|opt|ria|_421|_41b|_40b|_zip|_410|_40d|_357|sqf|_374|_3e5|_3df|_38f|clc|pred|parseInt|ntf|_3bf|_3bc|cnl|previousSibling|_3a9|_3a6|_39c|_399|_396|_392|__cachedIndex|__cachedLength|_376|iterateNext|_34a|_355|_354|_32c|_350|_34b|_33f|_33e|_33a|_338|_334|_332||_330|_32e||_322|_316|mousemove|mouseout|mouseover|_305|lastChild||_2f9||_2f2|_2f1|removeChild|_2ec|_2eb|_2ea|_2e6||_2e4|_2e2|_2d6|_2d5|_2d4|_2d3|_2d2|_2d1|_2cd|_2cc|scs|write|_2c8|hasClass|_2c0|_2bb|_2b5|_abs|_docScroll|offsetParent|offsetTop|offsetLeft|absolute|getBoxObjectFor|clientLeft|_setContentSize|_setMarginBox|_28d|_286|_285|_289|NaN|_281|border|_272|_26b|_260|_258|_253|_24c|_246|_23a|_getOpacity|_setOpacity|_238|td|tr|nodeName|FILTER|_22f|_22e|currentStyle|_22c|_22b|display|QuirksMode|unselectable|_217|isMozilla|getElementById|attributes|all|_ie_listener|_getIeDispatcher|_1fd|NUM_LOCK|SCROLL_LOCK|INSERT|END|HOME|PAUSE|F12|F11|F10|F9|F8|F7|F6|F5|F4|F3|F2|F1|63232|SHIFT_TAB|TAB|keyIdentifier|_1f3|stopEvent|_punctMap|222|219|186|onkeypress|_stealthKeyDown|_fixKeys|relatedTarget|_1e0|_1df|_stealthKeydown|_1d6|_1d5|_1d1|_1ca|_1c9|_1cb|_1c2|_1c1|_1c3|_1c4|_1bc|_1b3|_1b2|colorFromHex|colorFromRgb|named|colorFromString|mask|rgba|_19c|_197|_192|setColor|_180|_178|_177|_175|_174|_16d|_166|_164|_163|_162|_15c|_15d|_15e|index|__json__|toJsonIndentStr|_nextId|_12f|_12b|publish|_128|_126|_125|_122|_121|_123|_11c|_11b|_10c|_10b|_108|getDispatcher|argument|nom|_construct|_core|_makeCtor|_df|_db|deprecated|isObject|_cc||scope||_hitchArgs|_c2||pre|_c1|native|isDebug||registerModulePath|_a8||finally|||_a6|_a5|_a4|_a3|_a2|_a1|_9f|_9e|_9d|_9b|_98|_97|onbeforeunload|ipt|scr|complete|_95|userAgent|_modulesLoaded|initialized|_initFired|_8c|_8a|_getText|_87|ieForceActiveXXhr|Msxml2|isGears|_81|_gearsObject|googlegears|GearsFactory|isFF|_7d|Safari|_72|_name|_6c|ire|ore|_68|i18n|_5b|requireIf|_56|_52|loading|_4a|_loadPath|_47|_48|_global_omit_module_check|_getModulePrefix|_3c|_3a|_37|_30|Boolean|_loadUriAndCheck|_2e||cacheBust|_1e|_1a|_17|_16|_15|_14|_f|_10|_e|_9|_8|revision|flag|patch|minor|major|_6|color|units|needs|stopped|playing|stop|gotoPercent|pause|1000|implemented|yet|_48a|xhrDelete|rawXhrPut|xhrPut|postData|rawXhrPost|xhrPost|xhrGet|Type|Content|sync|response|http|bad|urlencoded|www|_watchInFlightError||exceeded|handle|action|getAttributeNode|loadXML|async|XMLDOM|prefixes|MSXML3|MSXML|MSXML2||xml|javascript|wasn|your|optional|message|off|turn|use|endpoints|issues|security|potential|avoid|mimetype|using|consider|please|decodeURIComponent|queryToObject|formToJson|formToQuery|encodeURIComponent|selected|option|multiple|checked|checkbox|radio|disabled|textarea|select|button|reset|submit|input|_3fb|hasAttribute|0n|even|odd|nth|_3b5|empty|_3b1|_3ad|htmlFor|_38a|under||exprssion|failure|ANY_TYPE|XPathResult|starts|keyup|keydown|mouseup|mousedown|blur|click|combine|span|addContent||adopt|orphan|_2de|_2dd|styles|_2da|_2d9|_2cf|_2ce|show|createPopup|toggleClass|scrollWidth|clientTop|ltr|direction|pageXOffset|pageYOffset|fixed|contentBox|marginBox|BUTTON|TABLE|_getBorderBox|clientHeight|visible|overflow|marginBottom|marginRight|marginTop|marginLeft|borderBottomWidth|borderBottomStyle|borderRightWidth|borderRightStyle|borderTopWidth|borderTopStyle|borderLeftWidth|borderLeftStyle|paddingBottom|paddingRight|paddingTop|paddingLeft|offset||min|padding||margin|Opacity|Alpha|alpha|filters|pixelLeft|medium|_22a|defaultView|before||insertBefore|KhtmlUserSelect|MozUserSelect|setSelectable|isDescendant|div|_destroyElement|BackgroundImageCache|execCommand|PageDown|PageUp|Right|Left|Down|Up|63289|63249|63248|PRINT_SCREEN|63302|63277|63276|63275|63273|63272|63250|63247|63246|63245|63244|63243|63242|63241|63240|63239|63238|63237|63236|63235|63234|63233|Enter|_1f9|which|_1f6|bubbledKeyCode|221|220||||191|190|189|188|187|toElement|fromElement|clientY|pageY||clientX|pageX|offsetY|||layerY|offsetX|layerX|parentWindow|_nop|_allow_leaks|145|144|126|F15|125|F14|124|F13|123|122|121|120|119|118|117|116|115|114|113|112|NUMPAD_DIVIDE|110|NUMPAD_PERIOD|109|NUMPAD_MINUS|108|NUMPAD_ENTER|107|NUMPAD_PLUS|NUMPAD_MULTIPLY|105|NUMPAD_9|104|NUMPAD_8|103|NUMPAD_7|102|NUMPAD_6|101|NUMPAD_5|NUMPAD_4||NUMPAD_3|NUMPAD_2|NUMPAD_1|NUMPAD_0||SELECT|RIGHT_WINDOW||LEFT_WINDOW||HELP|SPACE|ESCAPE|CAPS_LOCK|ALT|CTRL|SHIFT|ENTER|CLEAR|BACKSPACE|attachEvent|fixEvent|fromCharCode|keyChar|_1b9|removeEventListener|0x|round|toHex|toRgba|toRgb|aqua|teal|blue|navy|yellow|olive|lime|green|fuchsia|purple|red|maroon|white|gray|silver|black|boolean|called|already|Cancelled|connectPublisher|unsubscribe|subscribe|disconnect|_113|_112||_111|_110|||found|was||must|_|module|||required|likely|It|declaration|Mixin|separate|instead|property|initializer||pass|_c9|_bb|_b7|nfunction|isAlien|isFinite|isArrayLike|_firebug|withDoc|withGlobal|_writeIncludes|VML|behavior|addRule|createStyleSheet|vml|com|microsoft|schemas|urn|namespaces|onunload|onreadystatechange|defer|khtml|WebKit|DOMContentLoaded|enableMozDomContentLoaded|domcontentloaded|Unable|base|chrome|1223|304|300|200|available|XMLHttpRequest|_println|language|userLanguage|isQuirks|factory|mimeTypes|Factory|Gears|_7f|MSIE||Firefox|Gecko|Konqueror||Opera|appVersion|xd|browser|moduleUrl|port|host|hostenv|_requireLocalization|_5f|_5e|_5d|_5c|requireLocalization|requireAfterIf|_57|common|platformRequire|defined|symbol|_isXDomain|tried|Could|__package__|packageFileName|_42|useXDomain|flight|still|files|addOnLoad|failed|sourceURL|util|notice|without|change|subject|APIs|EXPERIMENTAL|experimental|removed|will|DEPRECATED|exists|10315|Rev|Mobile|Spidermonkey|Rhino||Browser|delayMozLoadingFix|preventBackButtonFix|libraryScriptUri|baseRelativePath|baseScriptUri|allowQueryConfig|warn|trace|timeEnd||time|profileEnd|profile|log|info|groupEnd|group|dirxml|dir|count|assert'.split('|'),0,{});\r
42219 \r
42220 \r
42221 /*\r
42222 \r
42223 Prototype 1.5 rc0\r
42224  - Adapted from Ruby on Rails - http://dev.rubyonrails.org/browser/spinoffs/prototype/src\r
42225  - By Lunarmedia, 06 August, 2006\r
42226  - Available at (and packed with) JavascriptCompressor.com\r
42227 \r
42228 Please note this version is missing the selector.js component of the full Prototype library. \r
42229 You can get the compressed version of selector at JavascriptCompressor.com\r
42230 \r
42231 \r
42232 */\r
42233 \r
42234 var decompressedPrototype = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[(function(e){return d[e]})];e=(function(){return'\\w+'});c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('d T={4l:\'1.5.8P\',3E:\'(?:<3G.*?>)((\\n|\\r|.)*?)(?:<\\/3G>)\',2v:7(){},K:7(x){c x}};d 1b={17:7(){c 7(){6.1I.2n(6,N)}}};d 1e=z q();q.u=7(5d,O){G(d 1G 2M O){5d[1G]=O[1G]}c 5d};q.1U=7(U){1j{f(U==1v)c\'1v\';f(U==1L)c\'1L\';c U.1U?U.1U():U.2C()}1s(e){f(e 8R 9l)c\'...\';25 e}};7j.v.1d=7(){d 43=6,23=$A(N),U=23.8S();c 7(){c 43.2n(U,23.3s($A(N)))}};7j.v.8U=7(U){d 43=6;c 7(C){c 43.8V(U,C||1W.C)}};q.u(8Q.v,{8W:7(){d 4Z=6.2C(16);f(6<16)c\'0\'+4Z;c 4Z},5j:7(){c 6+1},8Y:7(o){$R(0,6,11).V(o);c 6}});d 6s={6j:7(){d 48;G(d i=0;i<N.t;i++){d 6L=N[i];1j{48=6L();1y}1s(e){}}c 48}};d 6Q=1b.17();6Q.v={1I:7(1a,1J){6.1a=1a;6.1J=1J;6.41=Y;6.2A()},2A:7(){5Z(6.2D.1d(6),6.1J*4z)},2D:7(){f(!6.41){1j{6.41=11;6.1a()}8Z{6.41=Y}}}};q.u(4b.v,{2T:7(1A,1z){d L=\'\',O=6,I;1z=N.90.52(1z);1H(O.t>0){f(I=O.I(1A)){L+=O.47(0,I.w);L+=(1z(I)||\'\').2C();O=O.47(I.w+I[0].t)}1D{L+=O,O=\'\'}}c L},92:7(1A,1z,3i){1z=6.2T.52(1z);3i=3i===1v?1:3i;c 6.2T(1A,7(I){f(--3i<0)c I[0];c 1z(I)})},93:7(1A,o){6.2T(1A,o);c 6},94:7(t,2S){t=t||30;2S=2S===1v?\'...\':2S;c 6.t>t?6.47(0,t-2S.t)+2S:6},9F:7(){c 6.2y(/^\\s+/,\'\').2y(/\\s+$/,\'\')},71:7(){c 6.2y(/<\\/?[^>]+>/7Y,\'\')},2Q:7(){c 6.2y(z 3O(T.3E,\'5P\'),\'\')},70:7(){d 6Y=z 3O(T.3E,\'5P\');d 5p=z 3O(T.3E,\'98\');c(6.I(6Y)||[]).1C(7(5o){c(5o.I(5p)||[\'\',\'\'])[1]})},3q:7(){c 6.70().1C(7(3G){c 4q(3G)})},9E:7(){d 1q=J.4Y(\'1q\');d 1Y=J.9D(6);1q.75(1Y);c 1q.3h},9c:7(){d 1q=J.4Y(\'1q\');1q.3h=6.71();c 1q.2z[0]?1q.2z[0].6q:\'\'},78:7(){d 7i=6.I(/^\\??(.*)$/)[1].3j(\'&\');c 7i.36({},7(5b,72){d 1i=72.3j(\'=\');5b[1i[0]]=1i[1];c 5b})},1Z:7(){c 6.3j(\'\')},3P:7(){d 2l=6.3j(\'-\');f(2l.t==1)c 2l[0];d 54=6.5g(\'-\')==0?2l[0].7e(0).3Y()+2l[0].7g(1):2l[0];G(d i=1,73=2l.t;i<73;i++){d s=2l[i];54+=s.7e(0).3Y()+s.7g(1)}c 54},1U:7(){c"\'"+6.2y(/\\\\/g,\'\\\\\\\\\').2y(/\'/g,\'\\\\\\\'\')+"\'"}});4b.v.2T.52=7(1z){f(2i 1z==\'7\')c 1z;d 2U=z 3n(1z);c 7(I){c 2U.7a(I)}};4b.v.9h=4b.v.78;d 3n=1b.17();3n.79=/(^|.|\\r|\\n)(#\\{(.*?)\\})/;3n.v={1I:7(2U,1A){6.2U=2U.2C();6.1A=1A||3n.79},7a:7(U){c 6.2U.2T(6.1A,7(I){d 53=I[1];f(53==\'\\\\\')c I[2];c 53+(U[I[3]]||\'\').2C()})}};d $1y=z q();d $49=z q();d 1p={V:7(o){d w=0;1j{6.2m(7(h){1j{o(h,w++)}1s(e){f(e!=$49)25 e}})}1s(e){f(e!=$1y)25 e}},9n:7(o){d L=11;6.V(7(h,w){L=L&&!!(o||T.K)(h,w);f(!L)25 $1y});c L},9o:7(o){d L=11;6.V(7(h,w){f(L=!!(o||T.K)(h,w))25 $1y});c L},3e:7(o){d P=[];6.V(7(h,w){P.W(o(h,w))});c P},7n:7(o){d L;6.V(7(h,w){f(o(h,w)){L=h;25 $1y}});c L},7o:7(o){d P=[];6.V(7(h,w){f(o(h,w))P.W(h)});c P},9p:7(1A,o){d P=[];6.V(7(h,w){d 7c=h.2C();f(7c.I(1A))P.W((o||T.K)(h,w))});c P},1M:7(U){d 51=Y;6.V(7(h){f(h==U){51=11;25 $1y}});c 51},36:7(45,o){6.V(7(h,w){45=o(45,h,w)});c 45},9q:7(1F){d 23=$A(N).47(1);c 6.3e(7(h){c h[1F].2n(h,23)})},9s:7(o){d L;6.V(7(h,w){h=(o||T.K)(h,w);f(L==1v||h>=L)L=h});c L},9u:7(o){d L;6.V(7(h,w){h=(o||T.K)(h,w);f(L==1v||h<L)L=h});c L},9v:7(o){d 50=[],58=[];6.V(7(h,w){((o||T.K)(h,w)?50:58).W(h)});c[50,58]},3r:7(1G){d P=[];6.V(7(h,w){P.W(h[1G])});c P},9x:7(o){d P=[];6.V(7(h,w){f(!o(h,w))P.W(h)});c P},9y:7(o){c 6.3e(7(h,w){c{h:h,59:o(h,w)}}).9z(7(18,3U){d a=18.59,b=3U.59;c a<b?-1:a>b?1:0}).3r(\'h\')},1Z:7(){c 6.3e(T.K)},9B:7(){d o=T.K,23=$A(N);f(2i 23.5e()==\'7\')o=23.9C();d 7l=[6].3s(23).1C($A);c 6.1C(7(h,w){c o(7l.3r(w))})},1U:7(){c\'#<1p:\'+6.1Z().1U()+\'>\'}};q.u(1p,{1C:1p.3e,5v:1p.7n,1k:1p.7o,8M:1p.1M,7p:1p.1Z});d $A=1E.7q=7(2R){f(!2R)c[];f(2R.1Z){c 2R.1Z()}1D{d P=[];G(d i=0;i<2R.t;i++)P.W(2R[i]);c P}};q.u(1E.v,1p);f(!1E.v.4d)1E.v.4d=1E.v.4m;q.u(1E.v,{2m:7(o){G(d i=0;i<6.t;i++)o(6[i])},5i:7(){6.t=0;c 6},7r:7(){c 6[0]},5e:7(){c 6[6.t-1]},7s:7(){c 6.1k(7(h){c h!=1v||h!=1L})},6J:7(){c 6.36([],7(6H,h){c 6H.3s(h&&h.5D==1E?h.6J():[h])})},5s:7(){d 4N=$A(N);c 6.1k(7(h){c!4N.1M(h)})},5g:7(U){G(d i=0;i<6.t;i++)f(6[i]==U)c i;c-1},4m:7(5h){c(5h!==Y?6:6.1Z()).4d()},1U:7(){c\'[\'+6.1C(q.1U).1N(\', \')+\']\'}});d 4h={2m:7(o){G(d 1O 2M 6){d h=6[1O];f(2i h==\'7\')49;d 1i=[1O,h];1i.1O=1O;1i.h=h;o(1i)}},7t:7(){c 6.3r(\'1O\')},4N:7(){c 6.3r(\'h\')},7u:7(2N){c $H(2N).36($H(6),7(4Q,1i){4Q[1i.1O]=1i.h;c 4Q})},7w:7(){c 6.1C(7(1i){c 1i.1C(4n).1N(\'=\')}).1N(\'&\')},1U:7(){c\'#<4h:{\'+6.1C(7(1i){c 1i.1C(q.1U).1N(\': \')}).1N(\', \')+\'}>\'}};7 $H(U){d 2N=q.u({},U||{});q.u(2N,1p);q.u(2N,4h);c 2N};3L=1b.17();q.u(3L.v,1p);q.u(3L.v,{1I:7(22,2x,2H){6.22=22;6.2x=2x;6.2H=2H},2m:7(o){d h=6.22;2q{o(h);h=h.5j()}1H(6.1M(h))},1M:7(h){f(h<6.22)c Y;f(6.2H)c h<6.2x;c h<=6.2x}});d $R=7(22,2x,2H){c z 3L(22,2x,2H)};d M={4w:7(){c 6s.6j(7(){c z 5C()},7(){c z 5n(\'7y.6d\')},7(){c z 5n(\'7z.6d\')})||Y},4s:0};M.2W={3b:[],2m:7(o){6.3b.2m(o)},69:7(4F){f(!6.1M(4F))6.3b.W(4F)},7A:7(5t){6.3b=6.3b.5s(5t)},3y:7(1a,26,E,2Z){6.V(7(3o){f(3o[1a]&&2i 3o[1a]==\'7\'){1j{3o[1a].2n(3o,[26,E,2Z])}1s(e){}}})}};q.u(M.2W,1p);M.2W.69({5G:7(){M.4s++},1B:7(){M.4s--}});M.44=7(){};M.44.v={4a:7(m){6.m={1F:\'4j\',4p:11,5H:\'5E/x-86-Q-7C\',28:\'\'};q.u(6.m,m||{})},3l:7(){c 6.E.32==1v||6.E.32==0||(6.E.32>=84&&6.E.32<7E)},7G:7(){c!6.3l()}};M.3t=1b.17();M.3t.5L=[\'7H\',\'80\',\'7I\',\'7J\',\'4t\'];M.3t.v=q.u(z M.44(),{1I:7(1l,m){6.E=M.4w();6.4a(m);6.26(1l)},26:7(1l){d 28=6.m.28||\'\';f(28.t>0)28+=\'&7K=\';1j{6.1l=1l;f(6.m.1F==\'7L\'&&28.t>0)6.1l+=(6.1l.I(/\\?/)?\'&\':\'?\')+28;M.2W.3y(\'5G\',6,6.E);6.E.7N(6.m.1F,6.1l,6.m.4p);f(6.m.4p){6.E.5T=6.5J.1d(6);2Y((7(){6.4r(1)}).1d(6),10)}6.5A();d 1c=6.m.5V?6.m.5V:28;6.E.7O(6.m.1F==\'4j\'?1c:1L)}1s(e){6.3p(e)}},5A:7(){d 1P=[\'X-7P-7Q\',\'5C\',\'X-T-4l\',T.4l,\'7R\',\'1Y/7m, 1Y/2e, 5E/5F, 1Y/5F, */*\'];f(6.m.1F==\'4j\'){1P.W(\'5Q-2g\',6.m.5H);f(6.E.7S)1P.W(\'7T\',\'7U\')}f(6.m.1P)1P.W.2n(1P,6.m.1P);G(d i=0;i<1P.t;i+=2)6.E.7V(1P[i],1P[i+1])},5J:7(){d 2F=6.E.2F;f(2F!=1)6.4r(6.E.2F)},4A:7(B){1j{c 6.E.7W(B)}1s(e){}},5M:7(){1j{c 4q(\'(\'+6.4A(\'X-7X\')+\')\')}1s(e){}},5R:7(){1j{c 4q(6.E.3F)}1s(e){6.3p(e)}},4r:7(2F){d C=M.3t.5L[2F];d E=6.E,2Z=6.5M();f(C==\'4t\'){1j{(6.m[\'2I\'+6.E.32]||6.m[\'2I\'+(6.3l()?\'81\':\'82\')]||T.2v)(E,2Z)}1s(e){6.3p(e)}f((6.4A(\'5Q-2g\')||\'\').I(/^1Y\\/7m/i))6.5R()}1j{(6.m[\'2I\'+C]||T.2v)(E,2Z);M.2W.3y(\'2I\'+C,6,E,2Z)}1s(e){6.3p(e)}f(C==\'4t\')6.E.5T=T.2v},3p:7(57){(6.m.5W||T.2v)(6,57);M.2W.3y(\'5W\',6,57)}});M.4C=1b.17();q.u(q.u(M.4C.v,M.3t.v),{1I:7(1w,1l,m){6.4x={3m:1w.3m?$(1w.3m):$(1w),3z:1w.3z?$(1w.3z):(1w.3m?1L:$(1w))};6.E=M.4w();6.4a(m);d 1B=6.m.1B||T.2v;6.m.1B=(7(E,U){6.5Y();1B(E,U)}).1d(6);6.26(1l)},5Y:7(){d 3A=6.3l()?6.4x.3m:6.4x.3z;d 3k=6.E.3F;f(!6.m.3q)3k=3k.2Q();f(3A){f(6.m.60){z 6.m.60(3A,3k)}1D{k.6h(3A,3k)}}f(6.3l()){f(6.1B)2Y(6.1B.1d(6),10)}}});M.61=1b.17();M.61.v=q.u(z M.44(),{1I:7(1w,1l,m){6.4a(m);6.1B=6.m.1B;6.1J=(6.m.1J||2);6.2s=(6.m.2s||1);6.4B={};6.1w=1w;6.1l=1l;6.22()},22:7(){6.m.1B=6.63.1d(6);6.2D()},7b:7(){6.4B.1B=1v;89(6.65);(6.1B||T.2v).2n(6,N)},63:7(26){f(6.m.2s){6.2s=(26.3F==6.64?6.2s*6.m.2s:1);6.64=26.3F}6.65=2Y(6.2D.1d(6),6.2s*6.1J*4z)},2D:7(){6.4B=z M.4C(6.1w,6.1l,6.m)}});7 $(){d P=[],4;G(d i=0;i<N.t;i++){4=N[i];f(2i 4==\'8c\')4=J.8d(4);P.W(k.u(4))}c P.t<2?P[0]:P};J.8f=7(1f,6a){d 6b=($(6a)||J.1c).4D(\'*\');c $A(6b).36([],7(12,4E){f(4E.1f.I(z 3O("(^|\\\\s)"+1f+"(\\\\s|$)")))12.W(k.u(4E));c 12})};f(!1W.k)d k=z q();k.u=7(4){f(!4)c;f(4X)c 4;f(!4.6e&&4.1h&&4!=1W){d 2a=k.3d,2r=k.u.2r;G(d 1G 2M 2a){d h=2a[1G];f(2i h==\'7\')4[1G]=2r.4W(h)}}4.6e=11;c 4};k.u.2r={4W:7(h){c 6[h]=6[h]||7(){c h.2n(1L,[6].3s($A(N)))}}};k.3d={4U:7(4){c $(4).l.2B!=\'3Q\'},6N:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);k[k.4U(4)?\'6f\':\'6w\'](4)}},6f:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);4.l.2B=\'3Q\'}},6w:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);4.l.2B=\'\'}},42:7(4){4=$(4);4.1X.8h(4)},6h:7(4,2e){$(4).3h=2e.2Q();2Y(7(){2e.3q()},10)},2y:7(4,2e){4=$(4);f(4.6k){4.6k=2e.2Q()}1D{d 1K=4.6R.6S();1K.56(4);4.1X.8i(1K.6T(2e.2Q()),4)}2Y(7(){2e.3q()},10)},8k:7(4){4=$(4);c 4.2k},3K:7(4){c z k.3S(4)},8l:7(4,1f){f(!(4=$(4)))c;c k.3K(4).1M(1f)},8m:7(4,1f){f(!(4=$(4)))c;c k.3K(4).7k(1f)},8n:7(4,1f){f(!(4=$(4)))c;c k.3K(4).42(1f)},8p:7(4){4=$(4);G(d i=0;i<4.2z.t;i++){d 3M=4.2z[i];f(3M.8q==3&&!/\\S/.4v(3M.6q))k.42(3M)}},8r:7(4){c $(4).3h.I(/^\\s*$/)},8s:7(4,3I){4=$(4),3I=$(3I);1H(4=4.1X)f(4==3I)c 11;c Y},6t:7(4){4=$(4);d x=4.x?4.x:4.2f,y=4.y?4.y:4.29;1W.6t(x,y)},1R:7(4,l){4=$(4);d h=4.l[l.3P()];f(!h){f(J.4J&&J.4J.6v){d 4L=J.4J.6v(4,1L);h=4L?4L.8v(l):1L}1D f(4.6x){h=4.6x[l.3P()]}}f(1W.6E&&[\'18\',\'1n\',\'3U\',\'6G\'].1M(l))f(k.1R(4,\'14\')==\'4G\')h=\'6y\';c h==\'6y\'?1L:h},8x:7(4,l){4=$(4);G(d B 2M l)4.l[B.3P()]=l[B]},8y:7(4){4=$(4);f(k.1R(4,\'2B\')!=\'3Q\')c{21:4.2p,24:4.2k};d 20=4.l;d 6B=20.4O;d 6A=20.14;20.4O=\'31\';20.14=\'2o\';20.2B=\'\';d 6C=4.6m;d 6D=4.6p;20.2B=\'3Q\';20.14=6A;20.4O=6B;c{21:6C,24:6D}},8z:7(4){4=$(4);d 4R=k.1R(4,\'14\');f(4R==\'4G\'||!4R){4.4T=11;4.l.14=\'3T\';f(1W.6E){4.l.1n=0;4.l.18=0}}},8A:7(4){4=$(4);f(4.4T){4.4T=1v;4.l.14=4.l.1n=4.l.18=4.l.6G=4.l.3U=\'\'}},8B:7(4){4=$(4);f(4.3c)c;4.3c=4.l.3V;f((k.1R(4,\'3V\')||\'4U\')!=\'31\')4.l.3V=\'31\'},8D:7(4){4=$(4);f(4.3c)c;4.l.3V=4.3c;4.3c=1v}};q.u(k,k.3d);d 4X=Y;f(!3W&&/3x|3w|3u/.4v(33.62)){d 3W={}};k.6K=7(2a){q.u(k.3d,2a||{});f(2i 3W!=\'1v\'){d 2a=k.3d,2r=k.u.2r;G(d 1G 2M 2a){d h=2a[1G];f(2i h==\'7\')3W.v[1G]=2r.4W(h)}4X=11}};k.6K();d 6M=z q();6M.2B=k.6N;1e.1g=7(3f){6.3f=3f};1e.1g.v={1I:7(4,2t){6.4=$(4);6.2t=2t.2Q();f(6.3f&&6.4.6O){1j{6.4.6O(6.3f,6.2t)}1s(e){d 1h=6.4.1h.2w();f(1h==\'4V\'||1h==\'8N\'){6.2X(6.6U())}1D{25 e}}}1D{6.1K=6.4.6R.6S();f(6.2V)6.2V();6.2X([6.1K.6T(6.2t)])}2Y(7(){2t.3q()},10)},6U:7(){d 1q=J.4Y(\'1q\');1q.3h=\'<6V><4V>\'+6.2t+\'</4V></6V>\';c $A(1q.2z[0].2z[0].2z)}};d 1g=z q();1g.6W=1b.17();1g.6W.v=q.u(z 1e.1g(\'96\'),{2V:7(){6.1K.97(6.4)},2X:7(2h){2h.V((7(2j){6.4.1X.55(2j,6.4)}).1d(6))}});1g.5m=1b.17();1g.5m.v=q.u(z 1e.1g(\'99\'),{2V:7(){6.1K.56(6.4);6.1K.74(11)},2X:7(2h){2h.4m(Y).V((7(2j){6.4.55(2j,6.4.9a)}).1d(6))}});1g.7h=1b.17();1g.7h.v=q.u(z 1e.1g(\'9d\'),{2V:7(){6.1K.56(6.4);6.1K.74(6.4)},2X:7(2h){2h.V((7(2j){6.4.75(2j)}).1d(6))}});1g.76=1b.17();1g.76.v=q.u(z 1e.1g(\'9i\'),{2V:7(){6.1K.9m(6.4)},2X:7(2h){2h.V((7(2j){6.4.1X.55(2j,6.4.9t)}).1d(6))}});k.3S=1b.17();k.3S.v={1I:7(4){6.4=$(4)},2m:7(o){6.4.1f.3j(/\\s+/).1k(7(B){c B.t>0}).2m(o)},5c:7(1f){6.4.1f=1f},7k:7(5a){f(6.1M(5a))c;6.5c(6.1Z().3s(5a).1N(\' \'))},42:7(4c){f(!6.1M(4c))c;6.5c(6.1k(7(1f){c 1f!=4c}).1N(\' \'))},2C:7(){c 6.1Z().1N(\' \')}};q.u(k.3S.v,1p);d 5I={5i:7(){G(d i=0;i<N.t;i++)$(N[i]).h=\'\'},4f:7(4){$(4).4f()},7v:7(){G(d i=0;i<N.t;i++)f($(N[i]).h==\'\')c Y;c 11},1k:7(4){$(4).1k()},5y:7(4){4=$(4);4.4f();f(4.1k)4.1k()}};d D={3a:7(Q){d 12=D.2L($(Q));d 4I=z 1E();G(d i=0;i<12.t;i++){d 4g=D.k.3a(12[i]);f(4g)4I.W(4g)}c 4I.1N(\'&\')},2L:7(Q){Q=$(Q);d 12=z 1E();G(d 1h 2M D.k.2E){d 4H=Q.4D(1h);G(d j=0;j<4H.t;j++)12.W(4H[j])}c 12},7x:7(Q,3N,B){Q=$(Q);d 3H=Q.4D(\'2u\');f(!3N&&!B)c 3H;d 4y=z 1E();G(d i=0;i<3H.t;i++){d 2u=3H[i];f((3N&&2u.2g!=3N)||(B&&2u.B!=B))49;4y.W(2u)}c 4y},7B:7(Q){d 12=D.2L(Q);G(d i=0;i<12.t;i++){d 4=12[i];4.7D();4.4o=\'11\'}},7F:7(Q){d 12=D.2L(Q);G(d i=0;i<12.t;i++){d 4=12[i];4.4o=\'\'}},5z:7(Q){c D.2L(Q).5v(7(4){c 4.2g!=\'31\'&&!4.4o&&[\'2u\',\'1k\',\'3J\'].1M(4.1h.2w())})},7M:7(Q){5I.5y(D.5z(Q))},5w:7(Q){$(Q).5w()}};D.k={3a:7(4){4=$(4);d 1F=4.1h.2w();d 1S=D.k.2E[1F](4);f(1S){d 1O=4n(1S[0]);f(1O.t==0)c;f(1S[1].5D!=1E)1S[1]=[1S[1]];c 1S[1].1C(7(h){c 1O+\'=\'+4n(h)}).1N(\'&\')}},1x:7(4){4=$(4);d 1F=4.1h.2w();d 1S=D.k.2E[1F](4);f(1S)c 1S[1]}};D.k.2E={2u:7(4){6c(4.2g.2w()){1r\'7Z\':1r\'31\':1r\'6l\':1r\'1Y\':c D.k.2E.3J(4);1r\'6g\':1r\'6i\':c D.k.2E.5O(4)}c Y},5O:7(4){f(4.83)c[4.B,4.h]},3J:7(4){c[4.B,4.h]},1k:7(4){c D.k.2E[4.2g==\'1k-6n\'?\'5S\':\'5X\'](4)},5S:7(4){d h=\'\',2b,w=4.85;f(w>=0){2b=4.m[w];h=2b.h||2b.1Y}c[4.B,h]},5X:7(4){d h=[];G(d i=0;i<4.t;i++){d 2b=4.m[i];f(2b.87)h.W(2b.h||2b.1Y)}c[4.B,h]}};d $F=D.k.1x;1e.3D=7(){};1e.3D.v={1I:7(4,1J,1a){6.1J=1J;6.4=$(4);6.1a=1a;6.2K=6.1x();6.2A()},2A:7(){5Z(6.2D.1d(6),6.1J*4z)},2D:7(){d h=6.1x();f(6.2K!=h){6.1a(6.4,h);6.2K=h}}};D.k.3C=1b.17();D.k.3C.v=q.u(z 1e.3D(),{1x:7(){c D.k.1x(6.4)}});D.3C=1b.17();D.3C.v=q.u(z 1e.3D(),{1x:7(){c D.3a(6.4)}});1e.2c=7(){};1e.2c.v={1I:7(4,1a){6.4=$(4);6.1a=1a;6.2K=6.1x();f(6.4.1h.2w()==\'Q\')6.67();1D 6.2A(6.4)},4K:7(){d h=6.1x();f(6.2K!=h){6.1a(6.4,h);6.2K=h}},67:7(){d 12=D.2L(6.4);G(d i=0;i<12.t;i++)6.2A(12[i])},2A:7(4){f(4.2g){6c(4.2g.2w()){1r\'6g\':1r\'6i\':1o.3B(4,\'8j\',6.4K.1d(6));1y;1r\'6l\':1r\'1Y\':1r\'3J\':1r\'1k-6n\':1r\'1k-8t\':1o.3B(4,\'8u\',6.4K.1d(6));1y}}}};D.k.2c=1b.17();D.k.2c.v=q.u(z 1e.2c(),{1x:7(){c D.k.1x(6.4)}});D.2c=1b.17();D.2c.v=q.u(z 1e.2c(),{1x:7(){c D.3a(6.4)}});f(!1W.1o){d 1o=z q()}q.u(1o,{8C:8,8F:9,8H:13,8I:27,8J:37,8L:38,8O:39,8T:40,8X:46,4:7(C){c C.Z||C.91},95:7(C){c(((C.6X)&&(C.6X==1))||((C.6Z)&&(C.6Z==1)))},9b:7(C){c C.9e||(C.9f+(J.3R.2G||J.1c.2G))},9g:7(C){c C.9j||(C.9k+(J.3R.2O||J.1c.2O))},7b:7(C){f(C.7d){C.7d();C.9r()}1D{C.48=Y;C.9w=11}},9A:7(C,1h){d 4=1o.4(C);1H(4.1X&&(!4.1h||(4.1h.3Y()!=1h.3Y())))4=4.1X;c 4},1T:Y,5u:7(4,B,1V,1u){f(!6.1T)6.1T=[];f(4.5f){6.1T.W([4,B,1V,1u]);4.5f(B,1V,1u)}1D f(4.4i){6.1T.W([4,B,1V,1u]);4.4i(\'2I\'+B,1V)}},66:7(){f(!1o.1T)c;G(d i=0;i<1o.1T.t;i++){1o.5N.2n(6,1o.1T[i]);1o.1T[i][0]=1L}1o.1T=Y},3B:7(4,B,1V,1u){d 4=$(4);1u=1u||Y;f(B==\'5U\'&&(33.4u.I(/3x|3w|3u/)||4.4i))B=\'5K\';6.5u(4,B,1V,1u)},5N:7(4,B,1V,1u){d 4=$(4);1u=1u||Y;f(B==\'5U\'&&(33.4u.I(/3x|3w|3u/)||4.4k))B=\'5K\';f(4.5x){4.5x(B,1V,1u)}1D f(4.4k){1j{4.4k(\'2I\'+B,1V)}1s(e){}}}});f(33.4u.I(/\\88\\b/))1o.3B(1W,\'8a\',1o.66,Y);d 2d={6o:Y,4P:7(){6.6z=1W.8e||J.3R.2G||J.1c.2G||0;6.6F=1W.8g||J.3R.2O||J.1c.2O||0},6u:7(4){d 19=0,15=0;2q{19+=4.2O||0;15+=4.2G||0;4=4.1X}1H(4);c[15,19]},35:7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;4=4.1Q}1H(4);c[15,19]},68:7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;4=4.1Q;f(4){p=k.1R(4,\'14\');f(p==\'3T\'||p==\'2o\')1y}}1H(4);c[15,19]},1Q:7(4){f(4.1Q)c 4.1Q;f(4==J.1c)c 4;1H((4=4.1X)&&4!=J.1c)f(k.1R(4,\'14\')!=\'4G\')c 4;c J.1c},8o:7(4,x,y){f(6.6o)c 6.6r(4,x,y);6.3g=x;6.34=y;6.1t=6.35(4);c(y>=6.1t[1]&&y<6.1t[1]+4.2k&&x>=6.1t[0]&&x<6.1t[0]+4.2p)},6r:7(4,x,y){d 4S=6.6u(4);6.3g=x+4S[0]-6.6z;6.34=y+4S[1]-6.6F;6.1t=6.35(4);c(6.34>=6.1t[1]&&6.34<6.1t[1]+4.2k&&6.3g>=6.1t[0]&&6.3g<6.1t[0]+4.2p)},8E:7(3Z,4){f(!3Z)c 0;f(3Z==\'8G\')c((6.1t[1]+4.2k)-6.34)/4.2k;f(3Z==\'8K\')c((6.1t[0]+4.2p)-6.3g)/4.2p},77:7(O,Z){O=$(O);Z=$(Z);Z.l.14=\'2o\';d 2P=6.35(O);Z.l.1n=2P[1]+\'1m\';Z.l.18=2P[0]+\'1m\';Z.l.21=O.2p+\'1m\';Z.l.24=O.2k+\'1m\'},4e:7(4M){d 19=0,15=0;d 4=4M;2q{19+=4.29||0;15+=4.2f||0;f(4.1Q==J.1c)f(k.1R(4,\'14\')==\'2o\')1y}1H(4=4.1Q);4=4M;2q{19-=4.2O||0;15-=4.2G||0}1H(4=4.1X);c[15,19]},77:7(O,Z){d m=q.u({5l:11,5r:11,5B:11,5q:11,29:0,2f:0},N[2]||{});O=$(O);d p=2d.4e(O);Z=$(Z);d 2J=[0,0];d 3v=1L;f(k.1R(Z,\'14\')==\'2o\'){3v=2d.1Q(Z);2J=2d.4e(3v)}f(3v==J.1c){2J[0]-=J.1c.2f;2J[1]-=J.1c.29}f(m.5l)Z.l.18=(p[0]-2J[0]+m.2f)+\'1m\';f(m.5r)Z.l.1n=(p[1]-2J[1]+m.29)+\'1m\';f(m.5B)Z.l.21=O.2p+\'1m\';f(m.5q)Z.l.24=O.2k+\'1m\'},8b:7(4){4=$(4);f(4.l.14==\'2o\')c;2d.4P();d 2P=2d.68(4);d 1n=2P[1];d 18=2P[0];d 21=4.6m;d 24=4.6p;4.6P=18-3X(4.l.18||0);4.6I=1n-3X(4.l.1n||0);4.5k=4.l.21;4.7f=4.l.24;4.l.14=\'2o\';4.l.1n=1n+\'1m\';4.l.18=18+\'1m\';4.l.21=21+\'1m\';4.l.24=24+\'1m\'},8w:7(4){4=$(4);f(4.l.14==\'3T\')c;2d.4P();4.l.14=\'3T\';d 1n=3X(4.l.1n||0)-(4.6I||0);d 18=3X(4.l.18||0)-(4.6P||0);4.l.1n=1n+\'1m\';4.l.18=18+\'1m\';4.l.24=4.7f;4.l.21=4.5k}};f(/3x|3w|3u/.4v(33.62)){2d.35=7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;f(4.1Q==J.1c)f(k.1R(4,\'14\')==\'2o\')1y;4=4.1Q}1H(4);c[15,19]}};',62,600,'||||element||this|function|||||return|var||if||value|||Element|style|options||iterator||Object|||length|extend|prototype|index|||new||name|event|Form|transport||for||match|document||result|Ajax|arguments|source|results|form|||Prototype|object|each|push||false|target||true|elements||position|valueL||create|left|valueT|callback|Class|body|bind|Abstract|className|Insertion|tagName|pair|try|select|url|px|top|Event|Enumerable|div|case|catch|offset|useCapture|undefined|container|getValue|break|replacement|pattern|onComplete|map|else|Array|method|property|while|initialize|frequency|range|null|include|join|key|requestHeaders|offsetParent|getStyle|parameter|observers|inspect|observer|window|parentNode|text|toArray|els|width|start|args|height|throw|request||parameters|offsetTop|methods|opt|EventObserver|Position|html|offsetLeft|type|fragments|typeof|fragment|offsetHeight|oStringList|_each|apply|absolute|offsetWidth|do|cache|decay|content|input|emptyFunction|toLowerCase|end|replace|childNodes|registerCallback|display|toString|onTimerEvent|Serializers|readyState|scrollLeft|exclusive|on|delta|lastValue|getElements|in|hash|scrollTop|offsets|stripScripts|iterable|truncation|gsub|template|initializeRange|Responders|insertContent|setTimeout|json||hidden|status|navigator|ycomp|cumulativeOffset|inject||||serialize|responders|_overflow|Methods|collect|adjacency|xcomp|innerHTML|count|split|response|responseIsSuccess|success|Template|responder|dispatchException|evalScripts|pluck|concat|Request|KHTML|parent|Safari|Konqueror|dispatch|failure|receiver|observe|Observer|TimedObserver|ScriptFragment|responseText|script|inputs|ancestor|textarea|classNames|ObjectRange|node|typeName|RegExp|camelize|none|documentElement|ClassNames|relative|right|overflow|HTMLElement|parseFloat|toUpperCase|mode||currentlyExecuting|remove|__method|Base|memo||slice|returnValue|continue|setOptions|String|classNameToRemove|_reverse|page|focus|queryComponent|Hash|attachEvent|post|detachEvent|Version|reverse|encodeURIComponent|disabled|asynchronous|eval|respondToReadyState|activeRequestCount|Complete|appVersion|test|getTransport|containers|matchingInputs|1000|header|updater|Updater|getElementsByTagName|child|responderToAdd|static|tagElements|queryComponents|defaultView|onElementEvent|css|forElement|values|visibility|prepare|mergedHash|pos|offsetcache|_madePositioned|visible|tbody|findOrStore|_nativeExtensions|createElement|digits|trues|found|prepareReplacement|before|camelizedString|insertBefore|selectNodeContents|exception|falses|criteria|classNameToAdd|params|set|destination|last|addEventListener|indexOf|inline|clear|succ|_originalWidth|setLeft|Top|ActiveXObject|scriptTag|matchOne|setHeight|setTop|without|responderToRemove|_observeAndCache|find|reset|removeEventListener|activate|findFirstElement|setRequestHeaders|setWidth|XMLHttpRequest|constructor|application|xml|onCreate|contentType|Field|onStateChange|keydown|Events|evalJSON|stopObserving|inputSelector|img|Content|evalResponse|selectOne|onreadystatechange|keypress|postBody|onException|selectMany|updateContent|setInterval|insertion|PeriodicalUpdater|userAgent|updateComplete|lastText|timer|unloadCache|registerFormCallbacks|positionedOffset|register|parentElement|children|switch|XMLHTTP|_extended|hide|checkbox|update|radio|these|outerHTML|password|clientWidth|one|includeScrollOffsets|clientHeight|nodeValue|withinIncludingScrolloffsets|Try|scrollTo|realOffset|getComputedStyle|show|currentStyle|auto|deltaX|originalPosition|originalVisibility|originalWidth|originalHeight|opera|deltaY|bottom|array|_originalTop|flatten|addMethods|lambda|Toggle|toggle|insertAdjacentHTML|_originalLeft|PeriodicalExecuter|ownerDocument|createRange|createContextualFragment|contentFromAnonymousTable|table|Before|which|matchAll|button|extractScripts|stripTags|pairString|len|collapse|appendChild|After|clone|toQueryParams|Pattern|evaluate|stop|stringValue|preventDefault|charAt|_originalHeight|substring|Bottom|pairs|Function|add|collections|javascript|detect|findAll|entries|from|first|compact|keys|merge|present|toQueryString|getInputs|Msxml2|Microsoft|unregister|disable|urlencoded|blur|300|enable|responseIsFailure|Uninitialized|Loaded|Interactive|_|get|focusFirstElement|open|send|Requested|With|Accept|overrideMimeType|Connection|close|setRequestHeader|getResponseHeader|JSON|gi|submit|Loading|Success|Failure|checked|200|selectedIndex|www|selected|bMSIE|clearTimeout|unload|absolutize|string|getElementById|pageXOffset|getElementsByClassName|pageYOffset|removeChild|replaceChild|click|getHeight|hasClassName|addClassName|removeClassName|within|cleanWhitespace|nodeType|empty|childOf|multiple|change|getPropertyValue|relativize|setStyle|getDimensions|makePositioned|undoPositioned|makeClipping|KEY_BACKSPACE|undoClipping|overlap|KEY_TAB|vertical|KEY_RETURN|KEY_ESC|KEY_LEFT|horizontal|KEY_UP|member|tr|KEY_RIGHT|0_RC_0|Number|instanceof|shift|KEY_DOWN|bindAsEventListener|call|toColorPart|KEY_DELETE|times|finally|callee|srcElement|sub|scan|truncate|isLeftClick|beforeBegin|setStartBefore|im|afterBegin|firstChild|pointerX|unescapeHTML|beforeEnd|pageX|clientX|pointerY|parseQuery|afterEnd|pageY|clientY|RangeError|setStartAfter|all|any|grep|invoke|stopPropagation|max|nextSibling|min|partition|cancelBubble|reject|sortBy|sort|findElement|zip|pop|createTextNode|escapeHTML|strip'.split('|'),0,{})\r
42235 \r
42236 }letters = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");\r
42237 numbers = new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);\r
42238 colors  = new Array("FF","CC","99","66","33","00");\r
42239 \r
42240 var endResult;\r
42241 \r
42242 function doTest()\r
42243 {\r
42244    endResult = "";\r
42245 \r
42246    // make up email address\r
42247    for (var k=0;k<4000;k++)\r
42248    {\r
42249       name = makeName(6);\r
42250       (k%2)?email=name+"@mac.com":email=name+"(at)mac.com";\r
42251 \r
42252       // validate the email address\r
42253       var pattern = /^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*)\.[a-zA-Z]{2,3}$/;\r
42254 \r
42255       if(pattern.test(email))\r
42256       {\r
42257          var r = email + " appears to be a valid email address.";\r
42258          addResult(r);\r
42259       }\r
42260       else\r
42261       {\r
42262          r = email + " does NOT appear to be a valid email address.";\r
42263          addResult(r);\r
42264       }\r
42265    }\r
42266 \r
42267    // make up ZIP codes\r
42268    for (var s=0;s<4000;s++)\r
42269    {\r
42270       var zipGood = true;\r
42271       var zip = makeNumber(4);\r
42272       (s%2)?zip=zip+"xyz":zip=zip.concat("7");\r
42273 \r
42274       // validate the zip code\r
42275       for (var i = 0; i < zip.length; i++) {\r
42276           var ch = zip.charAt(i);\r
42277           if (ch < "0" || ch > "9") {\r
42278               zipGood = false;\r
42279               r = zip + " contains letters.";\r
42280               addResult(r);\r
42281           }\r
42282       }\r
42283       if (zipGood && zip.length>5)\r
42284       {\r
42285          zipGood = false;\r
42286          r = zip + " is longer than five characters.";\r
42287          addResult(r);\r
42288       }\r
42289       if (zipGood)\r
42290       {\r
42291          r = zip + " appears to be a valid ZIP code.";\r
42292          addResult(r);\r
42293       }\r
42294    }\r
42295 }\r
42296 \r
42297 function makeName(n)\r
42298 {\r
42299    var tmp = "";\r
42300    for (var i=0;i<n;i++)\r
42301    {\r
42302       var l = Math.floor(26*Math.random());\r
42303       tmp += letters[l];\r
42304    }\r
42305    return tmp;\r
42306 }\r
42307 \r
42308 function makeNumber(n)\r
42309 {\r
42310    var tmp = "";\r
42311    for (var i=0;i<n;i++)\r
42312    {\r
42313       var l = Math.floor(9*Math.random());\r
42314       tmp = tmp.concat(l);\r
42315    }\r
42316    return tmp;\r
42317 }\r
42318 \r
42319 function addResult(r)\r
42320 {\r
42321    endResult += "\n" + r;\r
42322 }\r
42323 \r
42324 doTest();\r
42325 </script>\r
42326 \r
42327 \r
42328 <script id="tetris" type="x">\r
42329 Tetris = (function() {\r
42330 \r
42331 \r
42332 \r
42333 var scale = 24;\r
42334 \r
42335 var width = 10;\r
42336 \r
42337 var height = 20;\r
42338 \r
42339 \r
42340 \r
42341 var speed = 1000;\r
42342 \r
42343 \r
42344 \r
42345 var $ = function(id) {return document.getElementById(id)};\r
42346 \r
42347 var dc = function(tag) {return document.createElement(tag)};\r
42348 \r
42349 \r
42350 \r
42351 var levels = [\r
42352 \r
42353         {p:500, s:1000, bg:"sun.jpg"},\r
42354 \r
42355         {p:1000, s:700, bg:"mercury.jpg"},\r
42356 \r
42357         {p:2000, s:500, bg:"venus.jpg"},\r
42358 \r
42359         {p:5000, s:400, bg:"earth.jpg"},\r
42360 \r
42361         {p:10000, s:300, bg:"mars.jpg"},\r
42362 \r
42363         {p:25000, s:200, bg:"jupiter.jpg"},\r
42364 \r
42365         {p:50000, s:150, bg:"saturn.jpg"},\r
42366 \r
42367         {p:100000, s:100, bg:"uranus.jpg"},\r
42368 \r
42369         {p:250000, s:75, bg:"neptune.jpg"}\r
42370 \r
42371 ];\r
42372 \r
42373 \r
42374 \r
42375 var game;\r
42376 \r
42377 var paused = false;\r
42378 \r
42379 var running = false;\r
42380 \r
42381 var activePiece;\r
42382 \r
42383 var activePieceType = -1;\r
42384 \r
42385 var nextPieceType = -1;\r
42386 \r
42387 var activeRot = 0;\r
42388 \r
42389 var field = [];\r
42390 \r
42391 var fieldRows = [];\r
42392 \r
42393 var level = 0;\r
42394 \r
42395 var score = 0;\r
42396 \r
42397 \r
42398 \r
42399 var lineScore = [30,120,270,520];\r
42400 \r
42401 var lines = 0;\r
42402 \r
42403 \r
42404 \r
42405 var curX = 0;\r
42406 \r
42407 var curY = 0;\r
42408 \r
42409 var timer = 0;\r
42410 \r
42411 \r
42412 \r
42413 \r
42414 \r
42415 function init() {\r
42416 \r
42417         game = $("gamefield");\r
42418 \r
42419 \r
42420 \r
42421         updateGameInfo();\r
42422 \r
42423 \r
42424 \r
42425         registerEvents();\r
42426 \r
42427 \r
42428 \r
42429         if (location.search) {\r
42430 \r
42431                 loadGame(decodeURIComponent(location.search.substring(1)));\r
42432 \r
42433         } else {\r
42434 \r
42435                 splash();\r
42436 \r
42437         }\r
42438 \r
42439 }\r
42440 \r
42441 \r
42442 \r
42443 function clearField() {\r
42444 \r
42445         game.innerHTML = "";\r
42446 \r
42447         fieldRows = [];\r
42448 \r
42449         for (var y=0;y<height;y++) {\r
42450 \r
42451                 var row = dc("div");\r
42452 \r
42453                 row.style.position = "absolute";\r
42454 \r
42455                 row.style.top = y*scale+"px";\r
42456 \r
42457                 row.style.left = "0px";\r
42458 \r
42459                 row.style.width = width*scale+"px";\r
42460 \r
42461                 row.style.height = scale+"px";\r
42462 \r
42463                 fieldRows[y] = row;\r
42464 \r
42465                 game.appendChild(row);\r
42466 \r
42467 \r
42468 \r
42469                 field[y] = [];\r
42470 \r
42471                 for (var x=0;x<width;x++) {\r
42472 \r
42473                         field[y][x] = 0;\r
42474 \r
42475                 }\r
42476 \r
42477         }\r
42478 \r
42479 }\r
42480 \r
42481 \r
42482 \r
42483 function splash() {\r
42484 \r
42485 }\r
42486 \r
42487 \r
42488 \r
42489 function registerEvents() {\r
42490 \r
42491         addEvent(document, "keydown", onKeyDown);\r
42492 \r
42493 }\r
42494 \r
42495 \r
42496 \r
42497 function addEvent(el, event, handler) {\r
42498 \r
42499         if (el.addEventListener)\r
42500 \r
42501                 el.addEventListener(event, handler, false); \r
42502 \r
42503         else if (el.attachEvent)\r
42504 \r
42505                 el.attachEvent("on" + event, handler); \r
42506 \r
42507 }\r
42508 \r
42509 \r
42510 \r
42511 function onKeyDown(e) {\r
42512 \r
42513         e = e || window.event;\r
42514 \r
42515         var keyCode = e.which || e.keyCode;\r
42516 \r
42517 //console.log(keyCode);\r
42518 \r
42519         switch (keyCode) {\r
42520 \r
42521                 case 13: // enter\r
42522 \r
42523                         dropPiece();\r
42524 \r
42525                         break;\r
42526 \r
42527                 case 32: // space\r
42528 \r
42529                         if (!running) {\r
42530 \r
42531                                 startGame();\r
42532 \r
42533                                 return;\r
42534 \r
42535                         }\r
42536 \r
42537                 case 38: // up\r
42538 \r
42539                         rotateActivePiece();\r
42540 \r
42541                         break;\r
42542 \r
42543                 case 39: // left\r
42544 \r
42545                         moveActivePiece(1, 0);\r
42546 \r
42547                         break;\r
42548 \r
42549                 case 37: // right\r
42550 \r
42551                         moveActivePiece(-1, 0);\r
42552 \r
42553                         break;\r
42554 \r
42555                 case 40: // down\r
42556 \r
42557                         moveActivePiece(0, 1);\r
42558 \r
42559                         break;\r
42560 \r
42561                 case 83 :\r
42562 \r
42563                         saveGame();\r
42564 \r
42565                         break;\r
42566 \r
42567                 /*\r
42568 \r
42569                 case 76:\r
42570 \r
42571                         loadGame("{f:\"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033300000000300000\",p:{x:3,y:1,r:0,t:1}}");\r
42572 \r
42573                         break;\r
42574 \r
42575                 */\r
42576 \r
42577                 case 80:\r
42578 \r
42579                         togglePause();\r
42580 \r
42581                 default : \r
42582 \r
42583                         return false;\r
42584 \r
42585         }\r
42586 \r
42587         if (e.preventDefault)\r
42588 \r
42589                 e.preventDefault();\r
42590 \r
42591         return true;\r
42592 \r
42593 }\r
42594 \r
42595 \r
42596 \r
42597 function dropPiece() {\r
42598 \r
42599         for (var y=0;y<height;y++) {\r
42600 \r
42601                 if (!moveActivePiece(0, 1))\r
42602 \r
42603                         break;\r
42604 \r
42605         }\r
42606 \r
42607 }\r
42608 \r
42609 \r
42610 \r
42611 function menu() {\r
42612 \r
42613 }\r
42614 \r
42615 \r
42616 \r
42617 \r
42618 \r
42619 \r
42620 \r
42621 function startGame() {\r
42622 \r
42623         speed = levels[level].s;\r
42624 \r
42625         clearField();\r
42626 \r
42627         updateGameInfo();\r
42628 \r
42629 \r
42630 \r
42631         //createPiece();\r
42632 \r
42633         running = true;\r
42634 \r
42635         nextCycle();\r
42636 \r
42637 }\r
42638 \r
42639 \r
42640 \r
42641 function cycle() {\r
42642 \r
42643         if (running) {\r
42644 \r
42645                 if (!paused) {\r
42646 \r
42647                         if (!activePiece) {\r
42648 \r
42649                                 activePieceType = nextPieceType > -1 ? nextPieceType : Math.floor(Math.random() * basePieces.length);\r
42650 \r
42651                                 activePiece = createPiece(activePieceType);\r
42652 \r
42653                                 activeRot = 0;\r
42654 \r
42655                                 curX = Math.floor(width/2-2);\r
42656 \r
42657                                 curY = 0;\r
42658 \r
42659                                 rebuildPiece(activePiece, activePieceType, activeRot);\r
42660 \r
42661                                 game.appendChild(activePiece);\r
42662 \r
42663         \r
42664 \r
42665                                 if (!canMoveTo(curX, curY)) {\r
42666 \r
42667                                         gameOver();\r
42668 \r
42669                                         return;\r
42670 \r
42671                                 }\r
42672 \r
42673 \r
42674 \r
42675                                 nextPieceType = Math.floor(Math.random() * basePieces.length);\r
42676 \r
42677                                 updateNextPiece();\r
42678 \r
42679                                 moveActivePiece(0,0);\r
42680 \r
42681                         } else {\r
42682 \r
42683                                 moveActivePiece(0,1);\r
42684 \r
42685                         }\r
42686 \r
42687                 }\r
42688 \r
42689                 nextCycle();\r
42690 \r
42691         }\r
42692 \r
42693 }\r
42694 \r
42695 \r
42696 \r
42697 function nextCycle() {\r
42698 \r
42699         clearTimeout(timer);\r
42700 \r
42701         timer = setTimeout(cycle, speed);\r
42702 \r
42703 }\r
42704 \r
42705 \r
42706 \r
42707 function togglePause() {\r
42708 \r
42709         paused = !paused;\r
42710 \r
42711         if (paused) {\r
42712 \r
42713                 // show pause text\r
42714 \r
42715         } else {\r
42716 \r
42717                 // hide pause text\r
42718 \r
42719         }\r
42720 \r
42721 }\r
42722 \r
42723 \r
42724 \r
42725 function gameOver() {\r
42726 \r
42727         running = false;\r
42728 \r
42729         activePiece = null;\r
42730 \r
42731 }\r
42732 \r
42733 \r
42734 \r
42735 function rotateActivePiece() {\r
42736 \r
42737         if (!activePiece) return;\r
42738 \r
42739         if (paused || !running) return;\r
42740 \r
42741 \r
42742 \r
42743         activeRot++;\r
42744 \r
42745         if (activeRot > 3) activeRot = 0;\r
42746 \r
42747         if (canMoveTo(curX, curY)) {\r
42748 \r
42749                 rebuildPiece(activePiece, activePieceType, activeRot);\r
42750 \r
42751         } else {\r
42752 \r
42753                 activeRot--;\r
42754 \r
42755                 if (activeRot < 0) activeRot = 3;\r
42756 \r
42757         }\r
42758 \r
42759 }\r
42760 \r
42761 \r
42762 \r
42763 function moveActivePiece(addX, addY) {\r
42764 \r
42765         if (!activePiece) return;\r
42766 \r
42767         if (paused || !running) return;\r
42768 \r
42769 \r
42770 \r
42771         var newX = curX + addX;\r
42772 \r
42773         var newY = curY + addY;\r
42774 \r
42775         if (canMoveTo(newX, newY)) {\r
42776 \r
42777                 curX = newX;\r
42778 \r
42779                 curY = newY;\r
42780 \r
42781                 activePiece.style.left = curX*scale+"px";\r
42782 \r
42783                 activePiece.style.top = curY*scale+"px";\r
42784 \r
42785                 return true;\r
42786 \r
42787         } else {\r
42788 \r
42789                 if (addY > 0) { // moving down\r
42790 \r
42791                         landPiece();\r
42792 \r
42793                         activePiece = null;\r
42794 \r
42795                 }\r
42796 \r
42797         }\r
42798 \r
42799         return false;\r
42800 \r
42801 }\r
42802 \r
42803 \r
42804 \r
42805 function landPiece() {\r
42806 \r
42807         var pieceDesc = basePieces[activePieceType];\r
42808 \r
42809         for (var i=0;i<pieceDesc.length;i++) {\r
42810 \r
42811                 for (var j=0;j<pieceDesc.length;j++) {\r
42812 \r
42813                         (function() {\r
42814 \r
42815                         if (pieceDesc[i][j]) {\r
42816 \r
42817                                 var px = rotateX(j,i,pieceDesc.length,activeRot);\r
42818 \r
42819                                 var py = rotateY(j,i,pieceDesc.length,activeRot);\r
42820 \r
42821                                 var block = activePiece.blocks[py][px];\r
42822 \r
42823                                 activePiece.removeChild(block);\r
42824 \r
42825                                 fieldRows[curY+py].appendChild(block)\r
42826 \r
42827                                 block.style.left = (curX+px)*scale+"px";\r
42828 \r
42829                                 block.style.top = "0px";\r
42830 \r
42831                                 field[curY + py][curX + px] = activePieceType+1;\r
42832 \r
42833                         }\r
42834 \r
42835                         })();\r
42836 \r
42837                 }\r
42838 \r
42839         }\r
42840 \r
42841         game.removeChild(activePiece);\r
42842 \r
42843         setTimeout(checkRows, 50);\r
42844 \r
42845         nextCycle();\r
42846 \r
42847 }\r
42848 \r
42849 \r
42850 \r
42851 function checkRows() {\r
42852 \r
42853         var fullRows = [];\r
42854 \r
42855         for (var y=0;y<height;y++) {\r
42856 \r
42857                 var rowFull = true;\r
42858 \r
42859                 for (var x=0;x<width;x++) {\r
42860 \r
42861                         if (!field[y][x])\r
42862 \r
42863                                 rowFull = false;\r
42864 \r
42865                 }\r
42866 \r
42867                 if (rowFull) {\r
42868 \r
42869                         fullRows.push(y);\r
42870 \r
42871                 }\r
42872 \r
42873         }\r
42874 \r
42875 \r
42876 \r
42877         if (fullRows.length) {\r
42878 \r
42879                 score += lineScore[fullRows.length-1]*(level+1);\r
42880 \r
42881                 lines += fullRows.length;\r
42882 \r
42883                 updateGameInfo();\r
42884 \r
42885                 checkLevel();\r
42886 \r
42887         }\r
42888 \r
42889 \r
42890 \r
42891         for (var i=0;i<fullRows.length;i++) {\r
42892 \r
42893                 var copyField = [];\r
42894 \r
42895                 var copyRows = [];\r
42896 \r
42897                 for (var y=0;y<height;y++) {\r
42898 \r
42899                         copyField[y] = [];\r
42900 \r
42901                         copyRows[y] = fieldRows[y].innerHTML;\r
42902 \r
42903                         for (var x=0;x<width;x++) {\r
42904 \r
42905                                 copyField[y][x] = field[y][x];\r
42906 \r
42907                         }\r
42908 \r
42909                 }\r
42910 \r
42911 \r
42912 \r
42913                 fieldRows[fullRows[i]].innerHTML = "";\r
42914 \r
42915                 for (var y=fullRows[i];y>=0;y--) {\r
42916 \r
42917                         fieldRows[y].innerHTML = copyRows[y-1]||"";\r
42918 \r
42919                         for (var x=0;x<width;x++) {\r
42920 \r
42921                                 field[y][x] = y > 0 ? copyField[y-1][x] : 0;\r
42922 \r
42923                         }\r
42924 \r
42925                 }\r
42926 \r
42927         }\r
42928 \r
42929         \r
42930 \r
42931 }\r
42932 \r
42933 \r
42934 \r
42935 function updateGameInfo() {\r
42936 \r
42937         $("tetris-score-text").innerHTML = "Score: " + score;\r
42938 \r
42939         $("tetris-lines-text").innerHTML = "Lines: " + lines;\r
42940 \r
42941         $("tetris-level-text").innerHTML = "Level: " + (level+1);\r
42942 \r
42943 }\r
42944 \r
42945 \r
42946 \r
42947 function checkLevel() {\r
42948 \r
42949         if (levels[level]) {\r
42950 \r
42951                 if (score >= levels[level].p) {\r
42952 \r
42953                         level++;\r
42954 \r
42955                         speed = levels[level].s;\r
42956 \r
42957                         updateGameInfo();\r
42958 \r
42959                 }\r
42960 \r
42961         }\r
42962 \r
42963 }\r
42964 \r
42965 \r
42966 \r
42967 function canMoveTo(x,y) {\r
42968 \r
42969         var pieceDesc = basePieces[activePieceType];\r
42970 \r
42971         for (var i=0;i<pieceDesc.length;i++) {\r
42972 \r
42973                 for (var j=0;j<pieceDesc.length;j++) {\r
42974 \r
42975                         if (pieceDesc[i][j]) {\r
42976 \r
42977                                 var px = rotateX(j,i,pieceDesc.length,activeRot);\r
42978 \r
42979                                 var py = rotateY(j,i,pieceDesc.length,activeRot);\r
42980 \r
42981                                 if (isBlocked(x+px, y+py))\r
42982 \r
42983                                         return false;\r
42984 \r
42985                         }\r
42986 \r
42987                 }\r
42988 \r
42989         }\r
42990 \r
42991         return true;\r
42992 \r
42993 }\r
42994 \r
42995 \r
42996 \r
42997 function isBlocked(x,y) {\r
42998 \r
42999         if (x < 0 || y < 0) return true;\r
43000 \r
43001         if (x >= width || y >= height) return true;\r
43002 \r
43003         return field[y][x];\r
43004 \r
43005 }\r
43006 \r
43007 \r
43008 \r
43009 function nextLevel() {\r
43010 \r
43011 }\r
43012 \r
43013 \r
43014 \r
43015 var basePieces = [\r
43016 \r
43017         [\r
43018 \r
43019                 [0,1,0,0],      // I\r
43020 \r
43021                 [0,1,0,0],\r
43022 \r
43023                 [0,1,0,0],\r
43024 \r
43025                 [0,1,0,0]\r
43026 \r
43027         ],\r
43028 \r
43029         [\r
43030 \r
43031                 [0,0,1],        // J\r
43032 \r
43033                 [0,0,1],\r
43034 \r
43035                 [0,1,1]\r
43036 \r
43037         ],\r
43038 \r
43039         [\r
43040 \r
43041                 [1,1,1],        // T\r
43042 \r
43043                 [0,1,0],\r
43044 \r
43045                 [0,0,0]\r
43046 \r
43047         ],\r
43048 \r
43049         [\r
43050 \r
43051                 [1,0,0],        // L\r
43052 \r
43053                 [1,0,0],\r
43054 \r
43055                 [1,1,0]\r
43056 \r
43057         ],\r
43058 \r
43059         [\r
43060 \r
43061                 [1,1],          // O\r
43062 \r
43063                 [1,1]\r
43064 \r
43065         ],\r
43066 \r
43067         [\r
43068 \r
43069                 [0,1,1],        // Z\r
43070 \r
43071                 [1,1,0],\r
43072 \r
43073                 [0,0,0]\r
43074 \r
43075         ],\r
43076 \r
43077         [\r
43078 \r
43079                 [1,1,0],        // S\r
43080 \r
43081                 [0,1,1],\r
43082 \r
43083                 [0,0,0]\r
43084 \r
43085         ]\r
43086 \r
43087 ];\r
43088 \r
43089 \r
43090 \r
43091 var pieceColors = ["#00f0f0", "#0000f0", "#a000f0", "#f0a000", "#f0f000", "#f00000", "#00f000"];\r
43092 \r
43093 \r
43094 \r
43095 function createPiece(pieceType) {\r
43096 \r
43097 \r
43098 \r
43099 \r
43100 \r
43101 \r
43102 \r
43103         var pieceDesc = basePieces[pieceType];\r
43104 \r
43105 \r
43106 \r
43107         var div = dc("div");\r
43108 \r
43109         div.style.position = "absolute";\r
43110 \r
43111         div.style.top = curY*scale + "px";\r
43112 \r
43113         div.style.left = curX*scale + "px";\r
43114 \r
43115         div.style.width = pieceDesc.length*scale + "px";\r
43116 \r
43117         div.style.height = pieceDesc.length*scale + "px";\r
43118 \r
43119 \r
43120 \r
43121         return div;\r
43122 \r
43123 }\r
43124 \r
43125 \r
43126 \r
43127 function updateNextPiece() {\r
43128 \r
43129         var div = $("tetris-next-piece");\r
43130 \r
43131         div.innerHTML = "";\r
43132 \r
43133         var piece = createPiece(nextPieceType);\r
43134 \r
43135         var rot = 0;\r
43136 \r
43137         piece.style.left = "48px";\r
43138 \r
43139         piece.style.top = "24px";\r
43140 \r
43141         switch (nextPieceType) {\r
43142 \r
43143                 case 0:\r
43144 \r
43145                         rot = 1;\r
43146 \r
43147                         piece.style.top = "0px";\r
43148 \r
43149                         break;\r
43150 \r
43151                 case 2:\r
43152 \r
43153                         rot = 3;\r
43154 \r
43155                         break;\r
43156 \r
43157                 case 3:\r
43158 \r
43159                 case 4:\r
43160 \r
43161                         piece.style.left = "72px";\r
43162 \r
43163                         break;\r
43164 \r
43165                 case 5:\r
43166 \r
43167                 case 6:\r
43168 \r
43169                         rot = 1;\r
43170 \r
43171                         piece.style.left = "72px";\r
43172 \r
43173                         break;\r
43174 \r
43175                 default:\r
43176 \r
43177         }\r
43178 \r
43179         rebuildPiece(piece, nextPieceType, rot);\r
43180 \r
43181         div.appendChild(piece);\r
43182 \r
43183 }\r
43184 \r
43185 \r
43186 \r
43187 function rebuildPiece(div, pieceType, rot) {\r
43188 \r
43189         div.innerHTML = "";\r
43190 \r
43191         var pieceDesc = basePieces[pieceType];\r
43192 \r
43193         div.blocks = [];\r
43194 \r
43195         for (var i=0;i<pieceDesc.length;i++)\r
43196 \r
43197                 div.blocks[i] = [];\r
43198 \r
43199         for (var i=0;i<pieceDesc.length;i++) {\r
43200 \r
43201                 for (var j=0;j<pieceDesc.length;j++) {\r
43202 \r
43203                         if (pieceDesc[i][j]) {\r
43204 \r
43205                                 var px = rotateX(j,i,pieceDesc.length, rot);\r
43206 \r
43207                                 var py = rotateY(j,i,pieceDesc.length, rot);\r
43208 \r
43209                                 var block = createBlock(pieceColors[pieceType],px,py,pieceDesc.length);\r
43210 \r
43211                                 div.appendChild(block);\r
43212 \r
43213                                 div.blocks[py][px] = block;\r
43214 \r
43215                         }\r
43216 \r
43217                 }\r
43218 \r
43219         }\r
43220 \r
43221 }\r
43222 \r
43223 \r
43224 \r
43225 function rotateX(j,i,size, rot) {\r
43226 \r
43227         switch (rot) {\r
43228 \r
43229                 case 0:\r
43230 \r
43231                         var px = j; break;\r
43232 \r
43233                 case 1:\r
43234 \r
43235                         var px = i; break;\r
43236 \r
43237                 case 2:\r
43238 \r
43239                         var px = (size-1)-j; break;\r
43240 \r
43241                 case 3:\r
43242 \r
43243                         var px = (size-1)-i; break;\r
43244 \r
43245         }\r
43246 \r
43247         return px;\r
43248 \r
43249 }\r
43250 \r
43251 \r
43252 \r
43253 function rotateY(j,i,size, rot) {\r
43254 \r
43255         switch (rot) {\r
43256 \r
43257                 case 0:\r
43258 \r
43259                         var py = i; break;\r
43260 \r
43261                 case 1:\r
43262 \r
43263                         var py = (size-1)-j; break;\r
43264 \r
43265                 case 2:\r
43266 \r
43267                         var py = (size-1)-i; break;\r
43268 \r
43269                 case 3:\r
43270 \r
43271                         var py = j;break;\r
43272 \r
43273         }\r
43274 \r
43275         return py;\r
43276 \r
43277 }\r
43278 \r
43279 \r
43280 \r
43281 \r
43282 \r
43283 function createBlock(color,x,y) {\r
43284 \r
43285         var div = dc("div");\r
43286 \r
43287         div.className = "tetris-block";\r
43288 \r
43289         div.style.backgroundColor = color;\r
43290 \r
43291         div.style.borderColor = color;\r
43292 \r
43293 \r
43294 \r
43295         div.style.left = x*scale + "px";\r
43296 \r
43297         div.style.top = y*scale + "px";\r
43298 \r
43299 \r
43300 \r
43301         return div;\r
43302 \r
43303 }\r
43304 \r
43305 \r
43306 \r
43307 function serialize() {\r
43308 \r
43309         var fieldString = "\"";\r
43310 \r
43311         for (var y=0;y<height;y++) {\r
43312 \r
43313                 for (var x=0;x<width;x++) {\r
43314 \r
43315                         fieldString += field[y][x];\r
43316 \r
43317                 }\r
43318 \r
43319         }\r
43320 \r
43321         fieldString += "\"";\r
43322 \r
43323 \r
43324 \r
43325         var pieceString  = "{"\r
43326 \r
43327                 + "x:"+curX+",y:"+curY+",r:"+activeRot+",t:"+activePieceType\r
43328 \r
43329         + "}";\r
43330 \r
43331 \r
43332 \r
43333         var gameString = "{"\r
43334 \r
43335                 + "f:" + fieldString + ","\r
43336 \r
43337                 + "p:" + pieceString + ","\r
43338 \r
43339                 + "n:" + nextPieceType + ","\r
43340 \r
43341                 + "s:" + score + ","\r
43342 \r
43343                 + "v:" + level + ","\r
43344 \r
43345                 + "l:" + lines\r
43346 \r
43347         + "}";\r
43348 \r
43349         return gameString;\r
43350 \r
43351 }\r
43352 \r
43353 \r
43354 \r
43355 function loadGame(gameString) {\r
43356 \r
43357         clearField();\r
43358 \r
43359         // TODO: Fix this.\r
43360 \r
43361         var oldGame = eval("("+gameString+")");\r
43362 \r
43363         var f = oldGame.f.split("");\r
43364 \r
43365         var p = oldGame.p;\r
43366 \r
43367         for (var y=0;y<height;y++) {\r
43368 \r
43369                 for (var x=0;x<width;x++) {\r
43370 \r
43371                         field[y][x] = parseInt(f.shift(),10);\r
43372 \r
43373                         if (field[y][x]) {\r
43374 \r
43375                                 var block = createBlock(pieceColors[field[y][x]-1],x,0);\r
43376 \r
43377                                 fieldRows[y].appendChild(block);\r
43378 \r
43379                         }\r
43380 \r
43381                 }\r
43382 \r
43383         }\r
43384 \r
43385 \r
43386 \r
43387         activeRot = p.r;\r
43388 \r
43389         curX = p.x;\r
43390 \r
43391         curY = p.y;\r
43392 \r
43393         activePieceType = p.t;\r
43394 \r
43395 \r
43396 \r
43397         nextPieceType = oldGame.n;\r
43398 \r
43399         score = oldGame.s;\r
43400 \r
43401         level = oldGame.v;\r
43402 \r
43403         lines = oldGame.l;\r
43404 \r
43405         speed = levels[level].s;\r
43406 \r
43407 \r
43408 \r
43409         updateGameInfo();\r
43410 \r
43411         updateNextPiece();\r
43412 \r
43413 \r
43414 \r
43415         activePiece = createPiece(activePieceType);\r
43416 \r
43417         rebuildPiece(activePiece, activePieceType, activeRot);\r
43418 \r
43419         curY = p.y;\r
43420 \r
43421         curX = p.x;\r
43422 \r
43423 \r
43424 \r
43425         activePiece.style.top = curY*scale + "px";\r
43426 \r
43427         activePiece.style.left = curX*scale + "px";\r
43428 \r
43429         game.appendChild(activePiece);\r
43430 \r
43431 \r
43432 \r
43433 \r
43434 \r
43435         if (!running) {\r
43436 \r
43437                 running = true;\r
43438 \r
43439                 nextCycle();\r
43440 \r
43441         }\r
43442 \r
43443 }\r
43444 \r
43445 \r
43446 \r
43447 window.__json_callbacks = {};\r
43448 \r
43449 var jsonCallCount = 0;\r
43450 \r
43451 \r
43452 \r
43453 function callJSON(url, callback) {\r
43454 \r
43455         jsonCallCount++;\r
43456 \r
43457         var script = document.createElement("script");\r
43458 \r
43459         window.__json_callbacks["fn_" + jsonCallCount] = function(response) {\r
43460 \r
43461                 document.body.removeChild(script);\r
43462 \r
43463                 if (callback)\r
43464 \r
43465                         callback(response);\r
43466 \r
43467         }\r
43468 \r
43469         script.setAttribute("type", "text/javascript");\r
43470 \r
43471         document.body.appendChild(script);\r
43472 \r
43473         script.src = url + "&callback=__json_callbacks.fn_" + jsonCallCount;\r
43474 \r
43475 }\r
43476 \r
43477 \r
43478 \r
43479 function saveGame() {\r
43480 \r
43481         if (!running) return;\r
43482 \r
43483 \r
43484 \r
43485         var wasPaused = paused;\r
43486 \r
43487         paused = true;\r
43488 \r
43489         var gameString = serialize();\r
43490 \r
43491         var url = "http://www.nihilogic.dk/labs/tetris/?" + encodeURIComponent(gameString);\r
43492 \r
43493         callJSON(\r
43494 \r
43495                 "http://json-tinyurl.appspot.com/?url=" + encodeURIComponent(url),\r
43496 \r
43497                 function(res) {\r
43498 \r
43499                         if (res.ok) {\r
43500 \r
43501                                 prompt("Your game has been saved. Go to this URL to load the game whenever you please:", res.tinyurl);\r
43502 \r
43503                         } else {\r
43504 \r
43505                                 alert("Oops. Something went wrong when trying to save the game!");\r
43506 \r
43507                         }\r
43508 \r
43509                         paused = wasPaused;\r
43510 \r
43511                 }\r
43512 \r
43513         );\r
43514 \r
43515 }\r
43516 \r
43517 \r
43518 \r
43519 \r
43520 \r
43521 return init;\r
43522 \r
43523 \r
43524 \r
43525 })();\r
43526 \r
43527 \r
43528 \r
43529 Tetris();\r
43530 \r
43531 \r
43532 \r
43533 var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");\r
43534 document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));\r
43535 \r
43536 \r
43537 \r
43538 (function(){var aa="_gat",ba="_gaq",r=true,v=false,w=undefined,ca="4.6.5",x="length",y="cookie",A="location",B="&",C="=",D="__utma=",E="__utmb=",G="__utmc=",da="__utmk=",H="__utmv=",J="__utmz=",K="__utmx=",L="GASO=";var N=function(i){return w==i||"-"==i||""==i},ea=function(i){return i[x]>0&&" \n\r\t".indexOf(i)>-1},P=function(i,l,g){var t="-",k;if(!N(i)&&!N(l)&&!N(g)){k=i.indexOf(l);if(k>-1){g=i.indexOf(g,k);if(g<0)g=i[x];t=O(i,k+l.indexOf(C)+1,g)}}return t},Q=function(i){var l=v,g=0,t,k;if(!N(i)){l=r;for(t=0;t<i[x];t++){k=i.charAt(t);g+="."==k?1:0;l=l&&g<=1&&(0==t&&"-"==k||".0123456789".indexOf(k)>-1)}}return l},S=function(i,l){var g=encodeURIComponent;return g instanceof Function?l?encodeURI(i):g(i):escape(i)},\r
43539 T=function(i,l){var g=decodeURIComponent,t;i=i.split("+").join(" ");if(g instanceof Function)try{t=l?decodeURI(i):g(i)}catch(k){t=unescape(i)}else t=unescape(i);return t},U=function(i,l){return i.indexOf(l)>-1},V=function(i,l){i[i[x]]=l},W=function(i){return i.toLowerCase()},X=function(i,l){return i.split(l)},fa=function(i,l){return i.indexOf(l)},O=function(i,l,g){g=w==g?i[x]:g;return i.substring(l,g)},ga=function(i,l){return i.join(l)},ia=function(i){var l=1,g=0,t;if(!N(i)){l=0;for(t=i[x]-1;t>=0;t--){g=\r
43540 i.charCodeAt(t);l=(l<<6&268435455)+g+(g<<14);g=l&266338304;l=g!=0?l^g>>21:l}}return l},ja=function(){var i=window,l=w;if(i&&i.gaGlobal&&i.gaGlobal.hid)l=i.gaGlobal.hid;else{l=Y();i.gaGlobal=i.gaGlobal?i.gaGlobal:{};i.gaGlobal.hid=l}return l},Y=function(){return Math.round(Math.random()*2147483647)},Z={Ha:function(i,l){this.bb=i;this.nb=l},ib:v,_gasoDomain:w,_gasoCPath:w};Z.Gb=function(){function i(k){return new t(k[0],k[1])}function l(k){var p=[];k=k.split(",");var f;for(f=0;f<k.length;++f)p.push(i(k[f].split(":")));return p}var g=this,t=Z.Ha;g.Ia="utm_campaign";g.Ja="utm_content";g.Ka="utm_id";g.La="utm_medium";g.Ma="utm_nooverride";g.Na="utm_source";g.Oa="utm_term";g.Pa="gclid";g.ba=0;g.z=0;g.Ta=15768E6;g.sb=18E5;g.v=63072E6;g.ta=[];g.va=[];g.nc="cse";g.oc="q";g.ob=5;g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");\r
43541 g.t=w;g.lb=v;g.h="/";g.U=100;g.oa="/__utm.gif";g.ga=1;g.ha=1;g.u="|";g.fa=1;g.da=1;g.Ra=1;g.b="auto";g.I=1;g.ra=1E3;g.Jc=10;g.Pb=10;g.Kc=0.2;g.o=w;g.a=document;g.e=window};Z.Hb=function(i){function l(d,a,j,c){var n="",s=0;n=P(d,"2"+a,";");if(!N(n)){d=n.indexOf("^"+j+".");if(d<0)return["",0];n=O(n,d+j[x]+2);if(n.indexOf("^")>0)n=n.split("^")[0];j=n.split(":");n=j[1];s=parseInt(j[0],10);if(!c&&s<p.r)n=""}if(N(n))n="";return[n,s]}function g(d,a){return"^"+ga([[a,d[1]].join("."),d[0]],":")}function t(d,a){f.a[y]=d+"; path="+f.h+"; "+a+p.fb()}function k(d){var a=new Date;d=new Date(a.getTime()+d);return"expires="+d.toGMTString()+"; "}var p=this,f=i;p.r=(new Date).getTime();\r
43542 var h=[D,E,G,J,H,K,L];p.k=function(){var d=f.a[y];return f.o?p.Wb(d,f.o):d};p.Wb=function(d,a){var j=[],c,n;for(c=0;c<h[x];c++){n=l(d,h[c],a)[0];N(n)||(j[j[x]]=h[c]+n+";")}return j.join("")};p.l=function(d,a,j){var c=j>0?k(j):"";if(f.o){a=p.kc(f.a[y],d,f.o,a,j);d="2"+d;c=j>0?k(f.v):""}t(d+a,c)};p.kc=function(d,a,j,c,n){var s="";n=n||f.v;c=g([c,p.r+n*1],j);s=P(d,"2"+a,";");if(!N(s)){d=g(l(d,a,j,r),j);s=ga(s.split(d),"");return s=c+s}return c};p.fb=function(){return N(f.b)?"":"domain="+f.b+";"}};Z.$=function(i){function l(b){b=b instanceof Array?b.join("."):"";return N(b)?"-":b}function g(b,e){var o=[];if(!N(b)){o=b.split(".");if(e)for(b=0;b<o[x];b++)Q(o[b])||(o[b]="-")}return o}function t(b,e,o){var m=c.M,q,u;for(q=0;q<m[x];q++){u=m[q][0];u+=N(e)?e:e+m[q][4];m[q][2](P(b,u,o))}}var k,p,f,h,d,a,j,c=this,n,s=i;c.j=new Z.Hb(i);c.kb=function(){return w==n||n==c.P()};c.k=function(){return c.j.k()};c.ma=function(){return d?d:"-"};c.vb=function(b){d=b};c.za=function(b){n=Q(b)?b*1:"-"};c.la=function(){return l(a)};\r
43543 c.Aa=function(b){a=g(b)};c.Vb=function(){c.j.l(H,"",-1)};c.lc=function(){return n?n:"-"};c.fb=function(){return N(s.b)?"":"domain="+s.b+";"};c.ja=function(){return l(k)};c.tb=function(b){k=g(b,1)};c.C=function(){return l(p)};c.ya=function(b){p=g(b,1)};c.ka=function(){return l(f)};c.ub=function(b){f=g(b,1)};c.na=function(){return l(h)};c.wb=function(b){h=g(b);for(b=0;b<h[x];b++)if(b<4&&!Q(h[b]))h[b]="-"};c.fc=function(){return j};c.Dc=function(b){j=b};c.Sb=function(){k=[];p=[];f=[];h=[];d=w;a=[];n=\r
43544 w};c.P=function(){var b="",e;for(e=0;e<c.M[x];e++)b+=c.M[e][1]();return ia(b)};c.ua=function(b){var e=c.k(),o=v;if(e){t(e,b,";");c.za(c.P());o=r}return o};c.zc=function(b){t(b,"",B);c.za(P(b,da,B))};c.Hc=function(){var b=c.M,e=[],o;for(o=0;o<b[x];o++)V(e,b[o][0]+b[o][1]());V(e,da+c.P());return e.join(B)};c.Nc=function(b,e){var o=c.M,m=s.h;c.ua(b);s.h=e;for(b=0;b<o[x];b++)N(o[b][1]())||o[b][3]();s.h=m};c.Cb=function(){c.j.l(D,c.ja(),s.v)};c.Ea=function(){c.j.l(E,c.C(),s.sb)};c.Db=function(){c.j.l(G,\r
43545 c.ka(),0)};c.Ga=function(){c.j.l(J,c.na(),s.Ta)};c.Eb=function(){c.j.l(K,c.ma(),s.v)};c.Fa=function(){c.j.l(H,c.la(),s.v)};c.Oc=function(){c.j.l(L,c.fc(),0)};c.M=[[D,c.ja,c.tb,c.Cb,"."],[E,c.C,c.ya,c.Ea,""],[G,c.ka,c.ub,c.Db,""],[K,c.ma,c.vb,c.Eb,""],[J,c.na,c.wb,c.Ga,"."],[H,c.la,c.Aa,c.Fa,"."]]};Z.Kb=function(i){var l=this,g=i,t=new Z.$(g),k=function(){},p=function(f){var h=(new Date).getTime(),d;d=(h-f[3])*(g.Kc/1E3);if(d>=1){f[2]=Math.min(Math.floor(f[2]*1+d),g.Pb);f[3]=h}return f};l.H=function(f,h,d,a,j,c){var n,s=g.I,b=g.a[A];t.ua(d);n=X(t.C(),".");if(n[1]<500||a){if(j)n=p(n);if(a||!j||n[2]>=1){if(!a&&j)n[2]=n[2]*1-1;n[1]=n[1]*1+1;f="?utmwv="+ca+"&utmn="+Y()+(N(b.hostname)?"":"&utmhn="+S(b.hostname))+(g.U==100?"":"&utmsp="+S(g.U))+f;if(0==s||2==s){a=2==s?k:c||k;l.$a(g.oa+f,a)}if(1==s||\r
43546 2==s){f=("https:"==b.protocol?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif")+f+"&utmac="+h+"&utmcc="+l.ac(d);if(ka)f+="&gaq=1";l.$a(f,c)}}}t.ya(n.join("."));t.Ea()};l.$a=function(f,h){var d=new Image(1,1);d.src=f;d.onload=function(){d.onload=null;(h||k)()}};l.ac=function(f){var h=[],d=[D,J,H,K],a,j=t.k(),c;for(a=0;a<d[x];a++){c=P(j,d[a]+f,";");if(!N(c)){if(d[a]==H){c=X(c.split(f+".")[1],"|")[0];if(N(c))continue;c=f+"."+c}V(h,d[a]+c+";")}}return S(h.join("+"))}};Z.n=function(){var i=this;i.Y=[];i.hb=function(l){var g,t=i.Y,k;for(k=0;k<t.length;k++)g=l==t[k].q?t[k]:g;return g};i.Ob=function(l,g,t,k,p,f,h,d){var a=i.hb(l);if(w==a){a=new Z.n.Mb(l,g,t,k,p,f,h,d);V(i.Y,a)}else{a.Qa=g;a.Ab=t;a.zb=k;a.xb=p;a.Xa=f;a.yb=h;a.Za=d}return a}};Z.n.Lb=function(i,l,g,t,k,p){var f=this;f.Bb=i;f.Ba=l;f.D=g;f.Va=t;f.pb=k;f.qb=p;f.Ca=function(){return"&"+["utmt=item","tid="+S(f.Bb),"ipc="+S(f.Ba),"ipn="+S(f.D),"iva="+S(f.Va),"ipr="+S(f.pb),"iqt="+S(f.qb)].join("&utm")}};\r
43547 Z.n.Mb=function(i,l,g,t,k,p,f,h){var d=this;d.q=i;d.Qa=l;d.Ab=g;d.zb=t;d.xb=k;d.Xa=p;d.yb=f;d.Za=h;d.R=[];d.Nb=function(a,j,c,n,s){var b=d.gc(a),e=d.q;if(w==b)V(d.R,new Z.n.Lb(e,a,j,c,n,s));else{b.Bb=e;b.Ba=a;b.D=j;b.Va=c;b.pb=n;b.qb=s}};d.gc=function(a){var j,c=d.R,n;for(n=0;n<c.length;n++)j=a==c[n].Ba?c[n]:j;return j};d.Ca=function(){return"&"+["utmt=tran","id="+S(d.q),"st="+S(d.Qa),"to="+S(d.Ab),"tx="+S(d.zb),"sp="+S(d.xb),"ci="+S(d.Xa),"rg="+S(d.yb),"co="+S(d.Za)].join("&utmt")}};Z.Fb=function(i){function l(){var f,h,d;h="ShockwaveFlash";var a="$version",j=k.d?k.d.plugins:w;if(j&&j[x]>0)for(f=0;f<j[x]&&!d;f++){h=j[f];if(U(h.name,"Shockwave Flash"))d=h.description.split("Shockwave Flash ")[1]}else{h=h+"."+h;try{f=new ActiveXObject(h+".7");d=f.GetVariable(a)}catch(c){}if(!d)try{f=new ActiveXObject(h+".6");d="WIN 6,0,21,0";f.AllowScriptAccess="always";d=f.GetVariable(a)}catch(n){}if(!d)try{f=new ActiveXObject(h);d=f.GetVariable(a)}catch(s){}if(d){d=X(d.split(" ")[1],",");d=d[0]+\r
43548 "."+d[1]+" r"+d[2]}}return d?d:p}var g=i,t=g.e,k=this,p="-";k.V=t.screen;k.Sa=!k.V&&t.java?java.awt.Toolkit.getDefaultToolkit():w;k.d=t.navigator;k.W=p;k.xa=p;k.Wa=p;k.qa=p;k.pa=1;k.eb=p;k.bc=function(){var f;if(t.screen){k.W=k.V.width+"x"+k.V.height;k.xa=k.V.colorDepth+"-bit"}else if(k.Sa)try{f=k.Sa.getScreenSize();k.W=f.width+"x"+f.height}catch(h){}k.qa=W(k.d&&k.d.language?k.d.language:k.d&&k.d.browserLanguage?k.d.browserLanguage:p);k.pa=k.d&&k.d.javaEnabled()?1:0;k.eb=g.ha?l():p;k.Wa=S(g.a.characterSet?\r
43549 g.a.characterSet:g.a.charset?g.a.charset:p)};k.Ic=function(){return B+"utm"+["cs="+S(k.Wa),"sr="+k.W,"sc="+k.xa,"ul="+k.qa,"je="+k.pa,"fl="+S(k.eb)].join("&utm")};k.$b=function(){var f=g.a,h=t.history[x];f=k.d.appName+k.d.version+k.qa+k.d.platform+k.d.userAgent+k.pa+k.W+k.xa+(f[y]?f[y]:"")+(f.referrer?f.referrer:"");for(var d=f[x];h>0;)f+=h--^d++;return ia(f)}};Z.m=function(i,l,g,t){function k(d){var a="";d=W(d.split("://")[1]);if(U(d,"/")){d=d.split("/")[1];if(U(d,"?"))a=d.split("?")[0]}return a}function p(d){var a="";a=W(d.split("://")[1]);if(U(a,"/"))a=a.split("/")[0];return a}var f=t,h=this;h.c=i;h.rb=l;h.r=g;h.ic=function(d){var a=h.gb();return new Z.m.w(P(d,f.Ka+C,B),P(d,f.Na+C,B),P(d,f.Pa+C,B),h.Q(d,f.Ia,"(not set)"),h.Q(d,f.La,"(not set)"),h.Q(d,f.Oa,a&&!N(a.K)?T(a.K):w),h.Q(d,f.Ja,w))};h.jb=function(d){var a=p(d),j=k(d);if(U(a,"google")){d=d.split("?").join(B);\r
43550 if(U(d,B+f.oc+C))if(j==f.nc)return r}return v};h.gb=function(){var d,a=h.rb,j,c,n=f.T;if(!(N(a)||"0"==a||!U(a,"://")||h.jb(a))){d=p(a);for(j=0;j<n[x];j++){c=n[j];if(U(d,W(c.bb))){a=a.split("?").join(B);if(U(a,B+c.nb+C)){d=a.split(B+c.nb+C)[1];if(U(d,B))d=d.split(B)[0];return new Z.m.w(w,c.bb,w,"(organic)","organic",d,w)}}}}};h.Q=function(d,a,j){d=P(d,a+C,B);return j=!N(d)?T(d):!N(j)?j:"-"};h.uc=function(d){var a=f.ta,j=v,c;if(d&&"organic"==d.S){d=W(T(d.K));for(c=0;c<a[x];c++)j=j||W(a[c])==d}return j};\r
43551 h.hc=function(){var d="",a="";d=h.rb;if(!(N(d)||"0"==d||!U(d,"://")||h.jb(d))){d=d.split("://")[1];if(U(d,"/")){a=O(d,d.indexOf("/"));a=a.split("?")[0];d=W(d.split("/")[0])}if(0==d.indexOf("www."))d=O(d,4);return new Z.m.w(w,d,w,"(referral)","referral",w,a)}};h.Xb=function(d){var a="";if(f.ba){a=d&&d.hash?d.href.substring(d.href.indexOf("#")):"";a=""!=a?a+B:a}a+=d.search;return a};h.dc=function(){return new Z.m.w(w,"(direct)",w,"(direct)","(none)",w,w)};h.vc=function(d){var a=v,j,c=f.va;if(d&&"referral"==\r
43552 d.S){d=W(S(d.X));for(j=0;j<c[x];j++)a=a||U(d,W(c[j]))}return a};h.L=function(d){return w!=d&&d.mb()};h.cc=function(d,a){var j="",c="-",n,s=0,b,e,o=h.c;if(!d)return"";e=d.k();j=h.Xb(f.a[A]);if(f.z&&d.kb()){c=d.na();if(!N(c)&&!U(c,";")){d.Ga();return""}}c=P(e,J+o+".",";");n=h.ic(j);if(h.L(n)){j=P(j,f.Ma+C,B);if("1"==j&&!N(c))return""}if(!h.L(n)){n=h.gb();if(!N(c)&&h.uc(n))return""}if(!h.L(n)&&a){n=h.hc();if(!N(c)&&h.vc(n))return""}if(!h.L(n))if(N(c)&&a)n=h.dc();if(!h.L(n))return"";if(!N(c)){s=c.split(".");\r
43553 b=new Z.m.w;b.Zb(s.slice(4).join("."));b=W(b.Da())==W(n.Da());s=s[3]*1}if(!b||a){a=P(e,D+o+".",";");e=a.lastIndexOf(".");a=e>9?O(a,e+1)*1:0;s++;a=0==a?1:a;d.wb([o,h.r,a,s,n.Da()].join("."));d.Ga();return B+"utmcn=1"}else return B+"utmcr=1"}};\r
43554 Z.m.w=function(i,l,g,t,k,p,f){var h=this;h.q=i;h.X=l;h.ea=g;h.D=t;h.S=k;h.K=p;h.Ya=f;h.Da=function(){var d=[],a=[["cid",h.q],["csr",h.X],["gclid",h.ea],["ccn",h.D],["cmd",h.S],["ctr",h.K],["cct",h.Ya]],j,c;if(h.mb())for(j=0;j<a[x];j++)if(!N(a[j][1])){c=a[j][1].split("+").join("%20");c=c.split(" ").join("%20");V(d,"utm"+a[j][0]+C+c)}return d.join("|")};h.mb=function(){return!(N(h.q)&&N(h.X)&&N(h.ea))};h.Zb=function(d){var a=function(j){return T(P(d,"utm"+j+C,"|"))};h.q=a("cid");h.X=a("csr");h.ea=a("gclid");\r
43555 h.D=a("ccn");h.S=a("cmd");h.K=a("ctr");h.Ya=a("cct")}};Z.Ib=function(i,l,g,t){function k(j,c,n){var s;if(!N(n)){n=n.split(",");for(var b=0;b<n[x];b++){s=n[b];if(!N(s)){s=s.split(h);if(s[x]==4)c[s[0]]=[s[1],s[2],j]}}}}var p=this,f=l,h=C,d=i,a=t;p.O=g;p.sa="";p.p={};p.tc=function(){var j;j=X(P(p.O.k(),H+f+".",";"),f+".")[1];if(!N(j)){j=j.split("|");k(1,p.p,j[1]);p.sa=j[0];p.Z()}};p.Z=function(){p.Qb();var j=p.sa,c,n,s="";for(c in p.p)if((n=p.p[c])&&1===n[2])s+=c+h+n[0]+h+n[1]+h+1+",";N(s)||(j+="|"+s);if(N(j))p.O.Vb();else{p.O.Aa(f+"."+j);p.O.Fa()}};p.Ec=\r
43556 function(j){p.sa=j;p.Z()};p.Cc=function(j,c,n,s){if(1!=s&&2!=s&&3!=s)s=3;var b=v;if(c&&n&&j>0&&j<=d.ob){c=S(c);n=S(n);if(c[x]+n[x]<=64){p.p[j]=[c,n,s];p.Z();b=r}}return b};p.mc=function(j){if((j=p.p[j])&&1===j[2])return j[1]};p.Ub=function(j){var c=p.p;if(c[j]){delete c[j];p.Z()}};p.Qb=function(){a._clearKey(8);a._clearKey(9);a._clearKey(11);var j=p.p,c,n;for(n in j)if(c=j[n]){a._setKey(8,n,c[0]);a._setKey(9,n,c[1]);(c=c[2])&&3!=c&&a._setKey(11,n,""+c)}}};Z.N=function(){function i(m,q,u,z){if(w==f[m])f[m]={};if(w==f[m][q])f[m][q]=[];f[m][q][u]=z}function l(m,q){if(w!=f[m]&&w!=f[m][q]){f[m][q]=w;q=r;var u;for(u=0;u<a[x];u++)if(w!=f[m][a[u]]){q=v;break}if(q)f[m]=w}}function g(m){var q="",u=v,z,M;for(z=0;z<a[x];z++){M=m[a[z]];if(w!=M){if(u)q+=a[z];q+=t(M);u=v}else u=r}return q}function t(m){var q=[],u,z;for(z=0;z<m[x];z++)if(w!=m[z]){u="";if(z!=o&&w==m[z-1])u+=z.toString()+s;u+=k(m[z]);V(q,u)}return j+q.join(n)+c}function k(m){var q="",u,z,M;for(u=0;u<\r
43557 m[x];u++){z=m.charAt(u);M=e[z];q+=w!=M?M:z}return q}var p=this,f={},h="k",d="v",a=[h,d],j="(",c=")",n="*",s="!",b="'",e={};e[b]="'0";e[c]="'1";e[n]="'2";e[s]="'3";var o=1;p.qc=function(m){return w!=f[m]};p.G=function(){var m="",q;for(q in f)if(w!=f[q])m+=q.toString()+g(f[q]);return m};p.Ac=function(m){if(m==w)return p.G();var q=m.G(),u;for(u in f)if(w!=f[u]&&!m.qc(u))q+=u.toString()+g(f[u]);return q};p._setKey=function(m,q,u){if(typeof u!="string")return v;i(m,h,q,u);return r};p._setValue=function(m,\r
43558 q,u){if(typeof u!="number"&&(w==Number||!(u instanceof Number))||Math.round(u)!=u||u==NaN||u==Infinity)return v;i(m,d,q,u.toString());return r};p._getKey=function(m,q){return w!=f[m]&&w!=f[m][h]?f[m][h][q]:w};p._getValue=function(m,q){return w!=f[m]&&w!=f[m][d]?f[m][d][q]:w};p._clearKey=function(m){l(m,h)};p._clearValue=function(m){l(m,d)}};Z.Jb=function(i,l){var g=this;g.Qc=l;g.xc=i;g._trackEvent=function(t,k,p){return l._trackEvent(g.xc,t,k,p)}};Z.aa=function(i,l){function g(){if("auto"==c.b){var b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.b=b}c.b=W(c.b)}function t(){var b=c.b,e=b.indexOf("www.google.")*b.indexOf(".google.")*b.indexOf("google.");return e||"/"!=c.h||b.indexOf("google.org")>-1}function k(b,e,o){if(N(b)||N(e)||N(o))return"-";b=P(b,D+a.c+".",e);if(!N(b)){b=b.split(".");b[5]=b[5]?b[5]*1+1:1;b[3]=b[4];b[4]=o;b=b.join(".")}return b}function p(){return"file:"!=c.a[A].protocol&&t()}function f(b){if(!b||""==b)return"";for(;ea(b.charAt(0));)b=\r
43559 O(b,1);for(;ea(b.charAt(b[x]-1));)b=O(b,0,b[x]-1);return b}function h(b,e,o,m){if(!N(b())){e(m?T(b()):b());U(b(),";")||o()}}function d(b){var e,o=""!=b&&c.a[A].host!=b;if(o)for(e=0;e<c.t[x];e++)o=o&&fa(W(b),W(c.t[e]))==-1;return o}var a=this,j=w,c=new Z.Gb,n=v,s=w;a.e=window;a.r=Math.round((new Date).getTime()/1E3);a.s=i||"UA-XXXXX-X";a.ab=c.a.referrer;a.ia=w;a.f=w;a.B=w;a.F=v;a.A=w;a.Ua="";a.g=w;a.cb=w;a.c=w;a.i=w;c.o=l?S(l):w;a.wc=function(){var b=v;if(a.B)b=a.B.match(/^[0-9a-z-_.]{10,1200}$/i);\r
43560 return b};a.jc=function(){return Y()^a.A.$b()&2147483647};a.ec=function(){if(!c.b||""==c.b||"none"==c.b){c.b="";return 1}g();return c.Ra?ia(c.b):1};a.Yb=function(b,e){if(N(b))b="-";else{e+=c.h&&"/"!=c.h?c.h:"";e=b.indexOf(e);b=e>=0&&e<=8?"0":"["==b.charAt(0)&&"]"==b.charAt(b[x]-1)?"-":b}return b};a.wa=function(b){var e="",o=c.a;e+=c.fa?a.A.Ic():"";e+=c.da?a.Ua:"";e+=c.ga&&!N(o.title)?"&utmdt="+S(o.title):"";e+="&utmhid="+ja()+"&utmr="+S(a.ia)+"&utmp="+S(a.Bc(b));return e};a.Bc=function(b){var e=c.a[A];\r
43561 return b=w!=b&&""!=b?S(b,r):S(e.pathname+e.search,r)};a.Lc=function(b){if(a.J()){var e="";if(a.g!=w&&a.g.G()[x]>0)e+="&utme="+S(a.g.G());e+=a.wa(b);j.H(e,a.s,a.c)}};a.Tb=function(){var b=new Z.$(c);return b.ua(a.c)?b.Hc():w};a._getLinkerUrl=function(b,e){var o=b.split("#"),m=b,q=a.Tb();if(q)if(e&&1>=o[x])m+="#"+q;else if(!e||1>=o[x])if(1>=o[x])m+=(U(b,"?")?B:"?")+q;else m=o[0]+(U(b,"?")?B:"?")+q+"#"+o[1];return m};a.Fc=function(){var b;if(a.wc()){a.i.Dc(a.B);a.i.Oc();Z._gasoDomain=c.b;Z._gasoCPath=\r
43562 c.h;b=c.a.createElement("script");b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.B+B+Y();c.a.getElementsByTagName("head")[0].appendChild(b)}};a.pc=function(){var b=a.r,e=a.i,o=e.k(),m=a.c+"",q=c.e,u=q?q.gaGlobal:w,z,M=U(o,D+m+"."),la=U(o,E+m),ma=U(o,G+m),F,I=[],R="",ha=v;o=N(o)?"":o;if(c.z){z=c.a[A]&&c.a[A].hash?c.a[A].href.substring(c.a[A].href.indexOf("#")):"";if(c.ba&&!N(z))R=z+B;R+=c.a[A].search;if(!N(R)&&U(R,D)){e.zc(R);e.kb()||e.Sb();\r
43563 F=e.ja()}h(e.ma,e.vb,e.Eb,true);h(e.la,e.Aa,e.Fa)}if(N(F))if(M)if(!la||!ma){F=k(o,";",b);a.F=r}else{F=P(o,D+m+".",";");I=X(P(o,E+m,";"),".")}else{F=ga([m,a.jc(),b,b,b,1],".");ha=a.F=r}else if(N(e.C())||N(e.ka())){F=k(R,B,b);a.F=r}else{I=X(e.C(),".");m=I[0]}F=F.split(".");if(q&&u&&u.dh==m&&!c.o){F[4]=u.sid?u.sid:F[4];if(ha){F[3]=u.sid?u.sid:F[4];if(u.vid){b=u.vid.split(".");F[1]=b[0];F[2]=b[1]}}}e.tb(F.join("."));I[0]=m;I[1]=I[1]?I[1]:0;I[2]=w!=I[2]?I[2]:c.Jc;I[3]=I[3]?I[3]:F[4];e.ya(I.join("."));\r
43564 e.ub(m);N(e.lc())||e.za(e.P());e.Cb();e.Ea();e.Db()};a.rc=function(){j=new Z.Kb(c)};a._initData=function(){var b;if(!n){if(!a.A){a.A=new Z.Fb(c);a.A.bc()}a.c=a.ec();a.i=new Z.$(c);a.g=new Z.N;s=new Z.Ib(c,a.c,a.i,a.g);a.rc()}if(p()){a.pc();s.tc()}if(!n){if(p()){a.ia=a.Yb(a.ab,c.a.domain);if(c.da){b=new Z.m(a.c,a.ia,a.r,c);a.Ua=b.cc(a.i,a.F)}}a.cb=new Z.N;n=r}Z.ib||a.sc()};a._visitCode=function(){a._initData();var b=P(a.i.k(),D+a.c+".",";");b=b.split(".");return b[x]<4?"":b[1]};a._cookiePathCopy=function(b){a._initData();\r
43565 a.i&&a.i.Nc(a.c,b)};a.sc=function(){var b=c.a[A].hash;if(b&&1==b.indexOf("gaso="))b=P(b,"gaso=",B);else b=(b=c.e.name)&&0<=b.indexOf("gaso=")?P(b,"gaso=",B):P(a.i.k(),L,";");if(b[x]>=10){a.B=b;a.Fc()}Z.ib=r};a.J=function(){return a._visitCode()%1E4<c.U*100};a.Gc=function(){var b,e,o=c.a.links;if(!c.lb){b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.t.push("."+b)}for(b=0;b<o[x]&&(c.ra==-1||b<c.ra);b++){e=o[b];if(d(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.yc;e.onclick=function(m){var q=\r
43566 !this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";q=q&&!a.Rb(m);a.Mc(m,this,q);return q?v:this.gatcOnclick?this.gatcOnclick(m):r}}}};a.yc=function(){};a._trackPageview=function(b){if(p()){a._initData();c.t&&a.Gc();a.Lc(b);a.F=v}};a._trackTrans=function(){var b=a.c,e=[],o,m,q;a._initData();if(a.f&&a.J()){for(o=0;o<a.f.Y[x];o++){m=a.f.Y[o];V(e,m.Ca());for(q=0;q<m.R[x];q++)V(e,m.R[q].Ca())}for(o=0;o<e[x];o++)j.H(e[o],a.s,b,r)}};a._setTrans=function(){var b=c.a,e,o,m;b=b.getElementById?\r
43567 b.getElementById("utmtrans"):b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:w;a._initData();if(b&&b.value){a.f=new Z.n;m=b.value.split("UTM:");c.u=!c.u||""==c.u?"|":c.u;for(b=0;b<m[x];b++){m[b]=f(m[b]);e=m[b].split(c.u);for(o=0;o<e[x];o++)e[o]=f(e[o]);if("T"==e[0])a._addTrans(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]);else"I"==e[0]&&a._addItem(e[1],e[2],e[3],e[4],e[5],e[6])}}};a._addTrans=function(b,e,o,m,q,u,z,M){a.f=a.f?a.f:new Z.n;return a.f.Ob(b,e,o,m,q,u,z,M)};a._addItem=function(b,e,o,m,q,u){var z;\r
43568 a.f=a.f?a.f:new Z.n;(z=a.f.hb(b))||(z=a._addTrans(b,"","","","","","",""));z.Nb(e,o,m,q,u)};a._setVar=function(b){if(b&&""!=b&&t()){a._initData();s.Ec(S(b));a.J()&&j.H("&utmt=var",a.s,a.c)}};a._setCustomVar=function(b,e,o,m){a._initData();return s.Cc(b,e,o,m)};a._deleteCustomVar=function(b){a._initData();s.Ub(b)};a._getVisitorCustomVar=function(b){a._initData();return s.mc(b)};a._setMaxCustomVariables=function(b){c.ob=b};a._link=function(b,e){if(c.z&&b){a._initData();c.a[A].href=a._getLinkerUrl(b,\r
43569 e)}};a._linkByPost=function(b,e){if(c.z&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,o){a.g._setKey(b,e,o)};a._setXValue=function(b,e,o){a.g._setValue(b,e,o)};a._getXKey=function(b,e){return a.g._getKey(b,e)};a._getXValue=function(b,e){return a.g.getValue(b,e)};a._clearXKey=function(b){a.g._clearKey(b)};a._clearXValue=function(b){a.g._clearValue(b)};a._createXObj=function(){a._initData();return new Z.N};a._sendXEvent=function(b){var e="";a._initData();\r
43570 if(a.J()){e+="&utmt=event&utme="+S(a.g.Ac(b))+a.wa();j.H(e,a.s,a.c,v,r)}};a._createEventTracker=function(b){a._initData();return new Z.Jb(b,a)};a._trackEvent=function(b,e,o,m){var q=a.cb;if(w!=b&&w!=e&&""!=b&&""!=e){q._clearKey(5);q._clearValue(5);(b=q._setKey(5,1,b)&&q._setKey(5,2,e)&&(w==o||q._setKey(5,3,o))&&(w==m||q._setValue(5,1,m)))&&a._sendXEvent(q)}else b=v;return b};a.Mc=function(b,e,o){a._initData();if(a.J()){var m=new Z.N;m._setKey(6,1,e.href);var q=o?function(){a.db(b,e)}:w;j.H("&utmt=event&utme="+\r
43571 S(m.G())+a.wa(),a.s,a.c,v,r,q);if(o){var u=this;c.e.setTimeout(function(){u.db(b,e)},500)}}};a.db=function(b,e){if(!b)b=c.e.event;var o=r;if(e.gatcOnclick)o=e.gatcOnclick(b);if(o||typeof o=="undefined")if(!e.target||e.target=="_self")c.e[A]=e.href;else if(e.target=="_top")c.e.top.document[A]=e.href;else if(e.target=="_parent")c.e.parent.document[A]=e.href};a.Rb=function(b){if(!b)b=c.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&c.e.Event)e=b.modifiers&c.e.Event.CONTROL_MASK||\r
43572 b.modifiers&c.e.Event.SHIFT_MASK||b.modifiers&c.e.Event.ALT_MASK;return e};a.Pc=function(){return c};a._setDomainName=function(b){c.b=b};a._addOrganic=function(b,e,o){c.T.splice(o?0:c.T.length,0,new Z.Ha(b,e))};a._clearOrganic=function(){c.T=[]};a._addIgnoredOrganic=function(b){V(c.ta,b)};a._clearIgnoredOrganic=function(){c.ta=[]};a._addIgnoredRef=function(b){V(c.va,b)};a._clearIgnoredRef=function(){c.va=[]};a._setAllowHash=function(b){c.Ra=b?1:0};a._setCampaignTrack=function(b){c.da=b?1:0};a._setClientInfo=\r
43573 function(b){c.fa=b?1:0};a._getClientInfo=function(){return c.fa};a._setCookiePath=function(b){c.h=b};a._setTransactionDelim=function(b){c.u=b};a._setCookieTimeout=function(b){a._setCampaignCookieTimeout(b*1E3)};a._setCampaignCookieTimeout=function(b){c.Ta=b};a._setDetectFlash=function(b){c.ha=b?1:0};a._getDetectFlash=function(){return c.ha};a._setDetectTitle=function(b){c.ga=b?1:0};a._getDetectTitle=function(){return c.ga};a._setLocalGifPath=function(b){c.oa=b};a._getLocalGifPath=function(){return c.oa};\r
43574 a._setLocalServerMode=function(){c.I=0};a._setRemoteServerMode=function(){c.I=1};a._setLocalRemoteServerMode=function(){c.I=2};a._getServiceMode=function(){return c.I};a._setSampleRate=function(b){c.U=b};a._setSessionTimeout=function(b){a._setSessionCookieTimeout(b*1E3)};a._setSessionCookieTimeout=function(b){c.sb=b};a._setAllowLinker=function(b){c.z=b?1:0};a._setAllowAnchor=function(b){c.ba=b?1:0};a._setCampNameKey=function(b){c.Ia=b};a._setCampContentKey=function(b){c.Ja=b};a._setCampIdKey=function(b){c.Ka=\r
43575 b};a._setCampMediumKey=function(b){c.La=b};a._setCampNOKey=function(b){c.Ma=b};a._setCampSourceKey=function(b){c.Na=b};a._setCampTermKey=function(b){c.Oa=b};a._setCampCIdKey=function(b){c.Pa=b};a._getAccount=function(){return a.s};a._setAccount=function(b){a.s=b};a._setNamespace=function(b){c.o=b?S(b):w};a._getVersion=function(){return ca};a._setAutoTrackOutbound=function(b){c.t=[];if(b)c.t=b};a._setTrackOutboundSubdomains=function(b){c.lb=b};a._setHrefExamineLimit=function(b){c.ra=b};a._setReferrerOverride=\r
43576 function(b){a.ab=b};a._setCookiePersistence=function(b){a._setVisitorCookieTimeout(b)};a._setVisitorCookieTimeout=function(b){c.v=b}};Z._getTracker=function(i,l){return new Z.aa(i,l)};var ka=v,$={ca:{},_createAsyncTracker:function(i,l){l=l||"";i=new Z.aa(i);$.ca[l]=i;ka=r;return i},_getAsyncTracker:function(i){i=i||"";var l=$.ca[i];if(!l){l=new Z.aa;$.ca[i]=l;ka=r}return l},push:function(){for(var i=arguments,l=0,g=0;g<i[x];g++)try{if(typeof i[g]==="function")i[g]();else{var t="",k=i[g][0],p=k.lastIndexOf(".");if(p>0){t=O(k,0,p);k=O(k,p+1)}var f=$._getAsyncTracker(t);f[k].apply(f,i[g].slice(1))}}catch(h){l++}return l}};window[aa]=Z;function na(){var i=window[ba],l=v;if(i&&typeof i.push=="function"){l=i.constructor==Array;if(!l)return}window[ba]=$;l&&$.push.apply($,i)}na();})()\r
43577 \r
43578 \r
43579 \r
43580 var pageTracker = _gat._getTracker("UA-3940914-2");\r
43581 pageTracker._initData();\r
43582 pageTracker._trackPageview();\r
43583 \r
43584 \r
43585 \r
43586 if(!(htr('hittail_ok'))){htc=document.referrer;htz=htl(document.location.href);if(htz!=htl(htc)&&(htc!='')){if(htw(htc)){kw=htq(htc);htAdt=htAdTk(document.location.href);document.write('<img src="http://tracking.hittail.com/mlt.png?ref='+escape(htc)+'&kw='+kw+'&eng='+htm(htc)+'&p='+htF(htc)+'&n='+htn(kw)+'&adt='+htAdt+'" width="1" height="1"/>');}}hty('hittail_ok','1','','/',document.domain,'');}function htw(hte){var htd=true;var htj=new Array("http://private.","http://internal.","http://intranet.","login=","/login","login.","logon=","/logon","logon.","/signin","signin=","signin.","signon","/admin/","mail.","/mail/","/email/","webmail","mailbox","https://","cache:","http://www.blogger.com","http://localhost","http://client.","http://docs.","http://timebase.","http://www2.blogger.","http://www.typepad.com/t/app/","http://www.typepad.com/t/comments","http://blockedReferrer");for(i=0;i<htj.length;i++){if(hte.search(htj[i])> -1){htd=false;return htd;}}var htE=/https?:\/\/(www\.|\d+\.)?hittail\.com/;var hto=/https?:\/\/(www\.|\d+\.)?mylongtail\.com/;if(hte.search(htE)> -1||hte.search(hto)> -1){htd=false;}return htd;};function htk(hta){return unescape(hta.replace(/\+/g," "));};function htm(url){var htH=/(http:\/\/)([^\/]*?)(\/)/;htH.test(url);hti=RegExp.$2;return hti;};function htq(url){var htG=/(\?|&|&amp;|;){1}(q|p|query|t|w|search|as_q|wd){1}=(.[^&=]*)=?/i;htG.test(url);kw=htk(RegExp.$3);if(kw.indexOf('cache:')>=0||kw.indexOf('http://')>=0||kw.indexOf('invocationType')>=0|| !isNaN(kw)){kw='';}else{kw=htD(kw);}return kw;};function htD(hta){hta=hta.replace(/[^\w #\.\-^\u00c0-\u00ff]/g,'');return hta;};function htF(url){p=0;htI=/\.google\./;if(htI.test(url)){htJ=/google(.*?)(start=)([0-9]+)/;htJ.test(url);p=RegExp.$3;if(p!=''){p=p/10;}else{p=1;}}if(p==0||p==''){hts=/\.yahoo\./;if(hts.test(url)){htt=/yahoo(.*?)b=([0-9]+)/;htt.test(url);p=RegExp.$2;if(p!=''){p=(p-1)/10+1;}else{p=1;}}}if(p==0||p==''){htg=/msn|live\.com/;if(htg.test(url)){htp=/msn|live\.com(.*?)(\?|&)first=([0-9]+)/;htp.test(url);p=RegExp.$3;if(p!=''){p=(p-1)/10+1;}else{p=1;}}}if(p==0||p==''){htg=/ask\.com/;if(htg.test(url)){htB=/ask(.*?)(\?|&)page=([0-9]+)/;htB.test(url);p=RegExp.$3;if(p!=''){p=(p-1)/10;}else{p=1;}}}return p;};function htn(hta){hta=hta.replace(/^\s+|\s+$/g,'');var htv=hta.split(/\s/);w=htv.length;return w;};function hty(name,value,expires,htf,domain,hth){var htx=name+"="+escape(value)+((htf)?"; htf="+htf:"")+((domain)?"; domain="+domain:"")+((hth)?"; hth":"");document.cookie=htx;};function htr(name){var dc=document.cookie;var prefix=name+"=";var htb=dc.indexOf("; "+prefix);if(htb== -1){htb=dc.indexOf(prefix);if(htb!=0)return null;}else htb+=2;var end=document.cookie.indexOf(";",htb);if(end== -1)end=dc.length;return unescape(dc.substring(htb+prefix.length,end));};function htl(url){var htb,end;htb=url.indexOf('//')+2;if(url.indexOf('/',8)){end=url.indexOf('/',8);}else{end=url.length}return url.substring(htb,end);};function htAdTk(url)\r
43587 \r
43588 {if ( (url.indexOf('gclid') > 0) || (url.indexOf('ysmkey') > 0) || (url.indexOf('OVRAW') > 0) || (url.indexOf('OVKEY') > 0) ){ad = 1;}else{ad = 0;}return ad;}\r
43589 \r
43590 \r
43591 </script>\r
43592 \r
43593 \r
43594 <script id="twitter" type="x">\r
43595 //<![CDATA[\r
43596 var matches,url,path,domain;url=document.location.toString();try{domain=url.match(/https?:\/\/[^\/]+/);if(matches=url.match(/(.+?)#(.+)/)){url=matches[1];path=matches[2];if(path){var arr=path.split(/\?/);path=arr[0];var params=arr[1];path=path.replace(/^\//,"");var redirect_url=[domain,path].join("/");if(params){redirect_url=[redirect_url,params].join("?")}document.location=redirect_url}}}catch(err){};\r
43597 //]]>\r
43598 \r
43599 \r
43600 \r
43601 //<![CDATA[\r
43602 var page={};var onCondition=function(D,C,A,B){D=D;A=A?Math.min(A,5):5;B=B||100;if(D()){C()}else{if(A>1){setTimeout(function(){onCondition(D,C,A-1,B)},B)}}};\r
43603 //]]>\r
43604 \r
43605 \r
43606 \r
43607 //<![CDATA[\r
43608 if (window.top !== window.self) {document.write = "";window.top.location = window.self.location; setTimeout(function(){document.body.innerHTML='';},1);window.self.onload=function(evt){document.body.innerHTML='';};}\r
43609 //]]>\r
43610 \r
43611 \r
43612 \r
43613   function showFlashNotice() {\r
43614     var notification = (new InfoNotification());\r
43615     notification.setMessage("Your account has been confirmed. Thanks!");\r
43616 \r
43617     \r
43618     notification.show();\r
43619   }\r
43620 \r
43621   if (window.attachEvent) {\r
43622     window.attachEvent('onload', showFlashNotice)\r
43623   } else {\r
43624     window.addEventListener('load', showFlashNotice, false);\r
43625   }\r
43626 \r
43627 /*\r
43628  * jQuery JavaScript Library v1.3\r
43629  * http://jquery.com/\r
43630  *\r
43631  * Copyright (c) 2009 John Resig\r
43632  * Dual licensed under the MIT and GPL licenses.\r
43633 \r
43634  * http://docs.jquery.com/License\r
43635  *\r
43636  * Date: 2009-01-13 12:50:31 -0500 (Tue, 13 Jan 2009)\r
43637  * Revision: 6104\r
43638  */\r
43639 (function(){var l=this,g,x=l.jQuery,o=l.$,n=l.jQuery=l.$=function(D,E){return new n.fn.init(D,E)},C=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;n.fn=n.prototype={init:function(D,G){D=D||document;if(D.nodeType){this[0]=D;this.length=1;this.context=D;return this}if(typeof D==="string"){var F=C.exec(D);if(F&&(F[1]||!G)){if(F[1]){D=n.clean([F[1]],G)}else{var H=document.getElementById(F[3]);if(H){if(H.id!=F[3]){return n().find(D)}var E=n(H);E.context=document;E.selector=D;return E}D=[]}}else{return n(G).find(D)}}else{if(n.isFunction(D)){return n(document).ready(D)}}if(D.selector&&D.context){this.selector=D.selector;this.context=D.context}return this.setArray(n.makeArray(D))},selector:"",jquery:"1.3",size:function(){return this.length},get:function(D){return D===g?n.makeArray(this):this[D]},pushStack:function(E,G,D){var F=n(E);F.prevObject=this;F.context=this.context;if(G==="find"){F.selector=this.selector+(this.selector?" ":"")+D}else{if(G){F.selector=this.selector+"."+G+"("+D+")"}}return F},setArray:function(D){this.length=0;Array.prototype.push.apply(this,D);return this},each:function(E,D){return n.each(this,E,D)},index:function(D){return n.inArray(D&&D.jquery?D[0]:D,this)},attr:function(E,G,F){var D=E;if(typeof E==="string"){if(G===g){return this[0]&&n[F||"attr"](this[0],E)}else{D={};D[E]=G}}return this.each(function(H){for(E in D){n.attr(F?this.style:this,E,n.prop(this,D[E],F,H,E))}})},css:function(D,E){if((D=="width"||D=="height")&&parseFloat(E)<0){E=g}return this.attr(D,E,"curCSS")},text:function(E){if(typeof E!=="object"&&E!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(E))}var D="";n.each(E||this,function(){n.each(this.childNodes,function(){if(this.nodeType!=8){D+=this.nodeType!=1?this.nodeValue:n.fn.text([this])}})});return D},wrapAll:function(D){if(this[0]){var E=n(D,this[0].ownerDocument).clone();if(this[0].parentNode){E.insertBefore(this[0])}E.map(function(){var F=this;while(F.firstChild){F=F.firstChild}return F}).append(this)}return this},wrapInner:function(D){return this.each(function(){n(this).contents().wrapAll(D)})},wrap:function(D){return this.each(function(){n(this).wrapAll(D)})},append:function(){return this.domManip(arguments,true,function(D){if(this.nodeType==1){this.appendChild(D)}})},prepend:function(){return this.domManip(arguments,true,function(D){if(this.nodeType==1){this.insertBefore(D,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(D){this.parentNode.insertBefore(D,this)})},after:function(){return this.domManip(arguments,false,function(D){this.parentNode.insertBefore(D,this.nextSibling)})},end:function(){return this.prevObject||n([])},push:[].push,find:function(D){if(this.length===1&&!/,/.test(D)){var F=this.pushStack([],"find",D);F.length=0;n.find(D,this[0],F);return F}else{var E=n.map(this,function(G){return n.find(D,G)});return this.pushStack(/[^+>] [^+>]/.test(D)?n.unique(E):E,"find",D)}},clone:function(E){var D=this.map(function(){if(!n.support.noCloneEvent&&!n.isXMLDoc(this)){var H=this.cloneNode(true),G=document.createElement("div");G.appendChild(H);return n.clean([G.innerHTML])[0]}else{return this.cloneNode(true)}});var F=D.find("*").andSelf().each(function(){if(this[h]!==g){this[h]=null}});if(E===true){this.find("*").andSelf().each(function(H){if(this.nodeType==3){return}var G=n.data(this,"events");for(var J in G){for(var I in G[J]){n.event.add(F[H],J,G[J][I],G[J][I].data)}}})}return D},filter:function(D){return this.pushStack(n.isFunction(D)&&n.grep(this,function(F,E){return D.call(F,E)})||n.multiFilter(D,n.grep(this,function(E){return E.nodeType===1})),"filter",D)},closest:function(D){var E=n.expr.match.POS.test(D)?n(D):null;return this.map(function(){var F=this;while(F&&F.ownerDocument){if(E?E.index(F)>-1:n(F).is(D)){return F}F=F.parentNode}})},not:function(D){if(typeof D==="string"){if(f.test(D)){return this.pushStack(n.multiFilter(D,this,true),"not",D)}else{D=n.multiFilter(D,this)}}var E=D.length&&D[D.length-1]!==g&&!D.nodeType;return this.filter(function(){return E?n.inArray(this,D)<0:this!=D})},add:function(D){return this.pushStack(n.unique(n.merge(this.get(),typeof D==="string"?n(D):n.makeArray(D))))},is:function(D){return !!D&&n.multiFilter(D,this).length>0},hasClass:function(D){return !!D&&this.is("."+D)},val:function(J){if(J===g){var D=this[0];if(D){if(n.nodeName(D,"option")){return(D.attributes.value||{}).specified?D.value:D.text}if(n.nodeName(D,"select")){var H=D.selectedIndex,K=[],L=D.options,G=D.type=="select-one";if(H<0){return null}for(var E=G?H:0,I=G?H+1:L.length;E<I;E++){var F=L[E];if(F.selected){J=n(F).val();if(G){return J}K.push(J)}}return K}return(D.value||"").replace(/\r/g,"")}return g}if(typeof J==="number"){J+=""}return this.each(function(){if(this.nodeType!=1){return}if(n.isArray(J)&&/radio|checkbox/.test(this.type)){this.checked=(n.inArray(this.value,J)>=0||n.inArray(this.name,J)>=0)}else{if(n.nodeName(this,"select")){var M=n.makeArray(J);n("option",this).each(function(){this.selected=(n.inArray(this.value,M)>=0||n.inArray(this.text,M)>=0)});if(!M.length){this.selectedIndex=-1}}else{this.value=J}}})},html:function(D){return D===g?(this[0]?this[0].innerHTML:null):this.empty().append(D)},replaceWith:function(D){return this.after(D).remove()},eq:function(D){return this.slice(D,+D+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(D){return this.pushStack(n.map(this,function(F,E){return D.call(F,E,F)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=n.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild,D=this.length>1?I.cloneNode(true):I;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),G>0?D.cloneNode(true):I)}}if(F){n.each(F,y)}}return this;function K(N,O){return M&&n.nodeName(N,"table")&&n.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};n.fn.init.prototype=n.fn;function y(D,E){if(E.src){n.ajax({url:E.src,async:false,dataType:"script"})}else{n.globalEval(E.text||E.textContent||E.innerHTML||"")}if(E.parentNode){E.parentNode.removeChild(E)}}function e(){return +new Date}n.extend=n.fn.extend=function(){var I=arguments[0]||{},G=1,H=arguments.length,D=false,F;if(typeof I==="boolean"){D=I;I=arguments[1]||{};G=2}if(typeof I!=="object"&&!n.isFunction(I)){I={}}if(H==G){I=this;--G}for(;G<H;G++){if((F=arguments[G])!=null){for(var E in F){var J=I[E],K=F[E];if(I===K){continue}if(D&&K&&typeof K==="object"&&!K.nodeType){I[E]=n.extend(D,J||(K.length!=null?[]:{}),K)}else{if(K!==g){I[E]=K}}}}}return I};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,p=document.defaultView||{},r=Object.prototype.toString;n.extend({noConflict:function(D){l.$=o;if(D){l.jQuery=x}return n},isFunction:function(D){return r.call(D)==="[object Function]"},isArray:function(D){return r.call(D)==="[object Array]"},isXMLDoc:function(D){return D.documentElement&&!D.body||D.tagName&&D.ownerDocument&&!D.ownerDocument.body},globalEval:function(F){F=n.trim(F);if(F){var E=document.getElementsByTagName("head")[0]||document.documentElement,D=document.createElement("script");D.type="text/javascript";if(n.support.scriptEval){D.appendChild(document.createTextNode(F))}else{D.text=F}E.insertBefore(D,E.firstChild);E.removeChild(D)}},nodeName:function(E,D){return E.nodeName&&E.nodeName.toUpperCase()==D.toUpperCase()},each:function(F,J,E){var D,G=0,H=F.length;if(E){if(H===g){for(D in F){if(J.apply(F[D],E)===false){break}}}else{for(;G<H;){if(J.apply(F[G++],E)===false){break}}}}else{if(H===g){for(D in F){if(J.call(F[D],D,F[D])===false){break}}}else{for(var I=F[0];G<H&&J.call(I,G,I)!==false;I=F[++G]){}}}return F},prop:function(G,H,F,E,D){if(n.isFunction(H)){H=H.call(G,E)}return typeof H==="number"&&F=="curCSS"&&!b.test(D)?H+"px":H},className:{add:function(D,E){n.each((E||"").split(/\s+/),function(F,G){if(D.nodeType==1&&!n.className.has(D.className,G)){D.className+=(D.className?" ":"")+G}})},remove:function(D,E){if(D.nodeType==1){D.className=E!==g?n.grep(D.className.split(/\s+/),function(F){return !n.className.has(E,F)}).join(" "):""}},has:function(E,D){return n.inArray(D,(E.className||E).toString().split(/\s+/))>-1}},swap:function(G,F,H){var D={};for(var E in F){D[E]=G.style[E];G.style[E]=F[E]}H.call(G);for(var E in F){G.style[E]=D[E]}},css:function(F,D,H){if(D=="width"||D=="height"){var J,E={position:"absolute",visibility:"hidden",display:"block"},I=D=="width"?["Left","Right"]:["Top","Bottom"];function G(){J=D=="width"?F.offsetWidth:F.offsetHeight;var L=0,K=0;n.each(I,function(){L+=parseFloat(n.curCSS(F,"padding"+this,true))||0;K+=parseFloat(n.curCSS(F,"border"+this+"Width",true))||0});J-=Math.round(L+K)}if(n(F).is(":visible")){G()}else{n.swap(F,E,G)}return Math.max(0,J)}return n.curCSS(F,D,H)},curCSS:function(H,E,F){var K,D=H.style;if(E=="opacity"&&!n.support.opacity){K=n.attr(D,"opacity");return K==""?"1":K}if(E.match(/float/i)){E=v}if(!F&&D&&D[E]){K=D[E]}else{if(p.getComputedStyle){if(E.match(/float/i)){E="float"}E=E.replace(/([A-Z])/g,"-$1").toLowerCase();var L=p.getComputedStyle(H,null);if(L){K=L.getPropertyValue(E)}if(E=="opacity"&&K==""){K="1"}}else{if(H.currentStyle){var I=E.replace(/\-(\w)/g,function(M,N){return N.toUpperCase()});K=H.currentStyle[E]||H.currentStyle[I];if(!/^\d+(px)?$/i.test(K)&&/^\d/.test(K)){var G=D.left,J=H.runtimeStyle.left;H.runtimeStyle.left=H.currentStyle.left;D.left=K||0;K=D.pixelLeft+"px";D.left=G;H.runtimeStyle.left=J}}}}return K},clean:function(E,J,H){J=J||document;if(typeof J.createElement==="undefined"){J=J.ownerDocument||J[0]&&J[0].ownerDocument||document}if(!H&&E.length===1&&typeof E[0]==="string"){var G=/^<(\w+)\s*\/?>$/.exec(E[0]);if(G){return[J.createElement(G[1])]}}var F=[],D=[],K=J.createElement("div");n.each(E,function(O,Q){if(typeof Q==="number"){Q+=""}if(!Q){return}if(typeof Q==="string"){Q=Q.replace(/(<(\w+)[^>]*?)\/>/g,function(S,T,R){return R.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?S:T+"></"+R+">"});var N=n.trim(Q).toLowerCase();var P=!N.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!N.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||N.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!N.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!N.indexOf("<td")||!N.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!N.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!n.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];K.innerHTML=P[1]+Q+P[2];while(P[0]--){K=K.lastChild}if(!n.support.tbody){var M=!N.indexOf("<table")&&N.indexOf("<tbody")<0?K.firstChild&&K.firstChild.childNodes:P[1]=="<table>"&&N.indexOf("<tbody")<0?K.childNodes:[];for(var L=M.length-1;L>=0;--L){if(n.nodeName(M[L],"tbody")&&!M[L].childNodes.length){M[L].parentNode.removeChild(M[L])}}}if(!n.support.leadingWhitespace&&/^\s/.test(Q)){K.insertBefore(J.createTextNode(Q.match(/^\s*/)[0]),K.firstChild)}Q=n.makeArray(K.childNodes)}if(Q.nodeType){F.push(Q)}else{F=n.merge(F,Q)}});if(H){for(var I=0;F[I];I++){if(n.nodeName(F[I],"script")&&(!F[I].type||F[I].type.toLowerCase()==="text/javascript")){D.push(F[I].parentNode?F[I].parentNode.removeChild(F[I]):F[I])}else{if(F[I].nodeType===1){F.splice.apply(F,[I+1,0].concat(n.makeArray(F[I].getElementsByTagName("script"))))}H.appendChild(F[I])}}return D}return F},attr:function(I,F,J){if(!I||I.nodeType==3||I.nodeType==8){return g}var G=!n.isXMLDoc(I),K=J!==g;F=G&&n.props[F]||F;if(I.tagName){var E=/href|src|style/.test(F);if(F=="selected"&&I.parentNode){I.parentNode.selectedIndex}if(F in I&&G&&!E){if(K){if(F=="type"&&n.nodeName(I,"input")&&I.parentNode){throw"type property can't be changed"}I[F]=J}if(n.nodeName(I,"form")&&I.getAttributeNode(F)){return I.getAttributeNode(F).nodeValue}if(F=="tabIndex"){var H=I.getAttributeNode("tabIndex");return H&&H.specified?H.value:I.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i)?0:g}return I[F]}if(!n.support.style&&G&&F=="style"){return n.attr(I.style,"cssText",J)}if(K){I.setAttribute(F,""+J)}var D=!n.support.hrefNormalized&&G&&E?I.getAttribute(F,2):I.getAttribute(F);return D===null?g:D}if(!n.support.opacity&&F=="opacity"){if(K){I.zoom=1;I.filter=(I.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(J)+""=="NaN"?"":"alpha(opacity="+J*100+")")}return I.filter&&I.filter.indexOf("opacity=")>=0?(parseFloat(I.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}F=F.replace(/-([a-z])/ig,function(L,M){return M.toUpperCase()});if(K){I[F]=J}return I[F]},trim:function(D){return(D||"").replace(/^\s+|\s+$/g,"")},makeArray:function(F){var D=[];if(F!=null){var E=F.length;if(E==null||typeof F==="string"||n.isFunction(F)||F.setInterval){D[0]=F}else{while(E){D[--E]=F[E]}}}return D},inArray:function(F,G){for(var D=0,E=G.length;D<E;D++){if(G[D]===F){return D}}return -1},merge:function(G,D){var E=0,F,H=G.length;if(!n.support.getAll){while((F=D[E++])!=null){if(F.nodeType!=8){G[H++]=F}}}else{while((F=D[E++])!=null){G[H++]=F}}return G},unique:function(J){var E=[],D={};try{for(var F=0,G=J.length;F<G;F++){var I=n.data(J[F]);if(!D[I]){D[I]=true;E.push(J[F])}}}catch(H){E=J}return E},grep:function(E,I,D){var F=[];for(var G=0,H=E.length;G<H;G++){if(!D!=!I(E[G],G)){F.push(E[G])}}return F},map:function(D,I){var E=[];for(var F=0,G=D.length;F<G;F++){var H=I(D[F],F);if(H!=null){E[E.length]=H}}return E.concat.apply([],E)}});var B=navigator.userAgent.toLowerCase();n.browser={version:(B.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(B),opera:/opera/.test(B),msie:/msie/.test(B)&&!/opera/.test(B),mozilla:/mozilla/.test(B)&&!/(compatible|webkit)/.test(B)};n.each({parent:function(D){return D.parentNode},parents:function(D){return n.dir(D,"parentNode")},next:function(D){return n.nth(D,2,"nextSibling")},prev:function(D){return n.nth(D,2,"previousSibling")},nextAll:function(D){return n.dir(D,"nextSibling")},prevAll:function(D){return n.dir(D,"previousSibling")},siblings:function(D){return n.sibling(D.parentNode.firstChild,D)},children:function(D){return n.sibling(D.firstChild)},contents:function(D){return n.nodeName(D,"iframe")?D.contentDocument||D.contentWindow.document:n.makeArray(D.childNodes)}},function(D,E){n.fn[D]=function(F){var G=n.map(this,E);if(F&&typeof F=="string"){G=n.multiFilter(F,G)}return this.pushStack(n.unique(G),D,F)}});n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(D,E){n.fn[D]=function(){var F=arguments;return this.each(function(){for(var G=0,H=F.length;G<H;G++){n(F[G])[E](this)}})}});n.each({removeAttr:function(D){n.attr(this,D,"");if(this.nodeType==1){this.removeAttribute(D)}},addClass:function(D){n.className.add(this,D)},removeClass:function(D){n.className.remove(this,D)},toggleClass:function(E,D){if(typeof D!=="boolean"){D=!n.className.has(this,E)}n.className[D?"add":"remove"](this,E)},remove:function(D){if(!D||n.filter(D,[this]).length){n("*",this).add([this]).each(function(){n.event.remove(this);n.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){n(">*",this).remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(D,E){n.fn[D]=function(){return this.each(E,arguments)}});function j(D,E){return D[0]&&parseInt(n.curCSS(D[0],E,true),10)||0}var h="jQuery"+e(),u=0,z={};n.extend({cache:{},data:function(E,D,F){E=E==l?z:E;var G=E[h];if(!G){G=E[h]=++u}if(D&&!n.cache[G]){n.cache[G]={}}if(F!==g){n.cache[G][D]=F}return D?n.cache[G][D]:G},removeData:function(E,D){E=E==l?z:E;var G=E[h];if(D){if(n.cache[G]){delete n.cache[G][D];D="";for(D in n.cache[G]){break}if(!D){n.removeData(E)}}}else{try{delete E[h]}catch(F){if(E.removeAttribute){E.removeAttribute(h)}}delete n.cache[G]}},queue:function(E,D,G){if(E){D=(D||"fx")+"queue";var F=n.data(E,D);if(!F||n.isArray(G)){F=n.data(E,D,n.makeArray(G))}else{if(G){F.push(G)}}}return F},dequeue:function(G,F){var D=n.queue(G,F),E=D.shift();if(!F||F==="fx"){E=D[0]}if(E!==g){E.call(G)}}});n.fn.extend({data:function(D,F){var G=D.split(".");G[1]=G[1]?"."+G[1]:"";if(F===g){var E=this.triggerHandler("getData"+G[1]+"!",[G[0]]);if(E===g&&this.length){E=n.data(this[0],D)}return E===g&&G[1]?this.data(G[0]):E}else{return this.trigger("setData"+G[1]+"!",[G[0],F]).each(function(){n.data(this,D,F)})}},removeData:function(D){return this.each(function(){n.removeData(this,D)})},queue:function(D,E){if(typeof D!=="string"){E=D;D="fx"}if(E===g){return n.queue(this[0],D)}return this.each(function(){var F=n.queue(this,D,E);if(D=="fx"&&F.length==1){F[0].call(this)}})},dequeue:function(D){return this.each(function(){n.dequeue(this,D)})}});\r
43640 /*\r
43641  * Sizzle CSS Selector Engine - v0.9.1\r
43642  *  Copyright 2009, The Dojo Foundation\r
43643  *  Released under the MIT, BSD, and GPL Licenses.\r
43644  *  More information: http://sizzlejs.com/\r
43645  */\r
43646 (function(){var N=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|[^[\]]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,I=0,F=Object.prototype.toString;var E=function(ae,S,aa,V){aa=aa||[];S=S||document;if(S.nodeType!==1&&S.nodeType!==9){return[]}if(!ae||typeof ae!=="string"){return aa}var ab=[],ac,Y,ah,ag,Z,R,Q=true;N.lastIndex=0;while((ac=N.exec(ae))!==null){ab.push(ac[1]);if(ac[2]){R=RegExp.rightContext;break}}if(ab.length>1&&G.match.POS.exec(ae)){if(ab.length===2&&G.relative[ab[0]]){var U="",X;while((X=G.match.POS.exec(ae))){U+=X[0];ae=ae.replace(G.match.POS,"")}Y=E.filter(U,E(/\s$/.test(ae)?ae+"*":ae,S))}else{Y=G.relative[ab[0]]?[S]:E(ab.shift(),S);while(ab.length){var P=[];ae=ab.shift();if(G.relative[ae]){ae+=ab.shift()}for(var af=0,ad=Y.length;af<ad;af++){E(ae,Y[af],P)}Y=P}}}else{var ai=V?{expr:ab.pop(),set:D(V)}:E.find(ab.pop(),ab.length===1&&S.parentNode?S.parentNode:S);Y=E.filter(ai.expr,ai.set);if(ab.length>0){ah=D(Y)}else{Q=false}while(ab.length){var T=ab.pop(),W=T;if(!G.relative[T]){T=""}else{W=ab.pop()}if(W==null){W=S}G.relative[T](ah,W,M(S))}}if(!ah){ah=Y}if(!ah){throw"Syntax error, unrecognized expression: "+(T||ae)}if(F.call(ah)==="[object Array]"){if(!Q){aa.push.apply(aa,ah)}else{if(S.nodeType===1){for(var af=0;ah[af]!=null;af++){if(ah[af]&&(ah[af]===true||ah[af].nodeType===1&&H(S,ah[af]))){aa.push(Y[af])}}}else{for(var af=0;ah[af]!=null;af++){if(ah[af]&&ah[af].nodeType===1){aa.push(Y[af])}}}}}else{D(ah,aa)}if(R){E(R,S,aa,V)}return aa};E.matches=function(P,Q){return E(P,null,null,Q)};E.find=function(V,S){var W,Q;if(!V){return[]}for(var R=0,P=G.order.length;R<P;R++){var T=G.order[R],Q;if((Q=G.match[T].exec(V))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){Q[1]=(Q[1]||"").replace(/\\/g,"");W=G.find[T](Q,S);if(W!=null){V=V.replace(G.match[T],"");break}}}}if(!W){W=S.getElementsByTagName("*")}return{set:W,expr:V}};E.filter=function(S,ac,ad,T){var Q=S,Y=[],ah=ac,V,ab;while(S&&ac.length){for(var U in G.filter){if((V=G.match[U].exec(S))!=null){var Z=G.filter[U],R=null,X=0,aa,ag;ab=false;if(ah==Y){Y=[]}if(G.preFilter[U]){V=G.preFilter[U](V,ah,ad,Y,T);if(!V){ab=aa=true}else{if(V===true){continue}else{if(V[0]===true){R=[];var W=null,af;for(var ae=0;(af=ah[ae])!==g;ae++){if(af&&W!==af){R.push(af);W=af}}}}}}if(V){for(var ae=0;(ag=ah[ae])!==g;ae++){if(ag){if(R&&ag!=R[X]){X++}aa=Z(ag,V,X,R);var P=T^!!aa;if(ad&&aa!=null){if(P){ab=true}else{ah[ae]=false}}else{if(P){Y.push(ag);ab=true}}}}}if(aa!==g){if(!ad){ah=Y}S=S.replace(G.match[U],"");if(!ab){return[]}break}}}S=S.replace(/\s*,\s*/,"");if(S==Q){if(ab==null){throw"Syntax error, unrecognized expression: "+S}else{break}}Q=S}return ah};var G=E.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(P){return P.getAttribute("href")}},relative:{"+":function(T,Q){for(var R=0,P=T.length;R<P;R++){var S=T[R];if(S){var U=S.previousSibling;while(U&&U.nodeType!==1){U=U.previousSibling}T[R]=typeof Q==="string"?U||false:U===Q}}if(typeof Q==="string"){E.filter(Q,T,true)}},">":function(U,Q,V){if(typeof Q==="string"&&!/\W/.test(Q)){Q=V?Q:Q.toUpperCase();for(var R=0,P=U.length;R<P;R++){var T=U[R];if(T){var S=T.parentNode;U[R]=S.nodeName===Q?S:false}}}else{for(var R=0,P=U.length;R<P;R++){var T=U[R];if(T){U[R]=typeof Q==="string"?T.parentNode:T.parentNode===Q}}if(typeof Q==="string"){E.filter(Q,U,true)}}},"":function(S,Q,U){var R="done"+(I++),P=O;if(!Q.match(/\W/)){var T=Q=U?Q:Q.toUpperCase();P=L}P("parentNode",Q,R,S,T,U)},"~":function(S,Q,U){var R="done"+(I++),P=O;if(typeof Q==="string"&&!Q.match(/\W/)){var T=Q=U?Q:Q.toUpperCase();P=L}P("previousSibling",Q,R,S,T,U)}},find:{ID:function(Q,R){if(R.getElementById){var P=R.getElementById(Q[1]);return P?[P]:[]}},NAME:function(P,Q){return Q.getElementsByName?Q.getElementsByName(P[1]):null},TAG:function(P,Q){return Q.getElementsByTagName(P[1])}},preFilter:{CLASS:function(S,Q,R,P,U){S=" "+S[1].replace(/\\/g,"")+" ";for(var T=0;Q[T];T++){if(U^(" "+Q[T].className+" ").indexOf(S)>=0){if(!R){P.push(Q[T])}}else{if(R){Q[T]=false}}}return false},ID:function(P){return P[1].replace(/\\/g,"")},TAG:function(Q,P){for(var R=0;!P[R];R++){}return M(P[R])?Q[1]:Q[1].toUpperCase()},CHILD:function(P){if(P[1]=="nth"){var Q=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(P[2]=="even"&&"2n"||P[2]=="odd"&&"2n+1"||!/\D/.test(P[2])&&"0n+"+P[2]||P[2]);P[2]=(Q[1]+(Q[2]||1))-0;P[3]=Q[3]-0}P[0]="done"+(I++);return P},ATTR:function(Q){var P=Q[1];if(G.attrMap[P]){Q[1]=G.attrMap[P]}if(Q[2]==="~="){Q[4]=" "+Q[4]+" "}return Q},PSEUDO:function(T,Q,R,P,U){if(T[1]==="not"){if(T[3].match(N).length>1){T[3]=E(T[3],null,null,Q)}else{var S=E.filter(T[3],Q,R,true^U);if(!R){P.push.apply(P,S)}return false}}else{if(G.match.POS.test(T[0])){return true}}return T},POS:function(P){P.unshift(true);return P}},filters:{enabled:function(P){return P.disabled===false&&P.type!=="hidden"},disabled:function(P){return P.disabled===true},checked:function(P){return P.checked===true},selected:function(P){P.parentNode.selectedIndex;return P.selected===true},parent:function(P){return !!P.firstChild},empty:function(P){return !P.firstChild},has:function(R,Q,P){return !!E(P[3],R).length},header:function(P){return/h\d/i.test(P.nodeName)},text:function(P){return"text"===P.type},radio:function(P){return"radio"===P.type},checkbox:function(P){return"checkbox"===P.type},file:function(P){return"file"===P.type},password:function(P){return"password"===P.type},submit:function(P){return"submit"===P.type},image:function(P){return"image"===P.type},reset:function(P){return"reset"===P.type},button:function(P){return"button"===P.type||P.nodeName.toUpperCase()==="BUTTON"},input:function(P){return/input|select|textarea|button/i.test(P.nodeName)}},setFilters:{first:function(Q,P){return P===0},last:function(R,Q,P,S){return Q===S.length-1},even:function(Q,P){return P%2===0},odd:function(Q,P){return P%2===1},lt:function(R,Q,P){return Q<P[3]-0},gt:function(R,Q,P){return Q>P[3]-0},nth:function(R,Q,P){return P[3]-0==Q},eq:function(R,Q,P){return P[3]-0==Q}},filter:{CHILD:function(P,S){var V=S[1],W=P.parentNode;var U="child"+W.childNodes.length;if(W&&(!W[U]||!P.nodeIndex)){var T=1;for(var Q=W.firstChild;Q;Q=Q.nextSibling){if(Q.nodeType==1){Q.nodeIndex=T++}}W[U]=T-1}if(V=="first"){return P.nodeIndex==1}else{if(V=="last"){return P.nodeIndex==W[U]}else{if(V=="only"){return W[U]==1}else{if(V=="nth"){var Y=false,R=S[2],X=S[3];if(R==1&&X==0){return true}if(R==0){if(P.nodeIndex==X){Y=true}}else{if((P.nodeIndex-X)%R==0&&(P.nodeIndex-X)/R>=0){Y=true}}return Y}}}}},PSEUDO:function(V,R,S,W){var Q=R[1],T=G.filters[Q];if(T){return T(V,S,R,W)}else{if(Q==="contains"){return(V.textContent||V.innerText||"").indexOf(R[3])>=0}else{if(Q==="not"){var U=R[3];for(var S=0,P=U.length;S<P;S++){if(U[S]===V){return false}}return true}}}},ID:function(Q,P){return Q.nodeType===1&&Q.getAttribute("id")===P},TAG:function(Q,P){return(P==="*"&&Q.nodeType===1)||Q.nodeName===P},CLASS:function(Q,P){return P.test(Q.className)},ATTR:function(T,R){var P=G.attrHandle[R[1]]?G.attrHandle[R[1]](T):T[R[1]]||T.getAttribute(R[1]),U=P+"",S=R[2],Q=R[4];return P==null?false:S==="="?U===Q:S==="*="?U.indexOf(Q)>=0:S==="~="?(" "+U+" ").indexOf(Q)>=0:!R[4]?P:S==="!="?U!=Q:S==="^="?U.indexOf(Q)===0:S==="$="?U.substr(U.length-Q.length)===Q:S==="|="?U===Q||U.substr(0,Q.length+1)===Q+"-":false},POS:function(T,Q,R,U){var P=Q[2],S=G.setFilters[P];if(S){return S(T,R,Q,U)}}}};for(var K in G.match){G.match[K]=RegExp(G.match[K].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var D=function(Q,P){Q=Array.prototype.slice.call(Q);if(P){P.push.apply(P,Q);return P}return Q};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(J){D=function(T,S){var Q=S||[];if(F.call(T)==="[object Array]"){Array.prototype.push.apply(Q,T)}else{if(typeof T.length==="number"){for(var R=0,P=T.length;R<P;R++){Q.push(T[R])}}else{for(var R=0;T[R];R++){Q.push(T[R])}}}return Q}}(function(){var Q=document.createElement("form"),R="script"+(new Date).getTime();Q.innerHTML="<input name='"+R+"'/>";var P=document.documentElement;P.insertBefore(Q,P.firstChild);if(!!document.getElementById(R)){G.find.ID=function(T,U){if(U.getElementById){var S=U.getElementById(T[1]);return S?S.id===T[1]||S.getAttributeNode&&S.getAttributeNode("id").nodeValue===T[1]?[S]:g:[]}};G.filter.ID=function(U,S){var T=U.getAttributeNode&&U.getAttributeNode("id");return U.nodeType===1&&T&&T.nodeValue===S}}P.removeChild(Q)})();(function(){var P=document.createElement("div");P.appendChild(document.createComment(""));if(P.getElementsByTagName("*").length>0){G.find.TAG=function(Q,U){var T=U.getElementsByTagName(Q[1]);if(Q[1]==="*"){var S=[];for(var R=0;T[R];R++){if(T[R].nodeType===1){S.push(T[R])}}T=S}return T}}P.innerHTML="<a href='#'></a>";if(P.firstChild.getAttribute("href")!=="#"){G.attrHandle.href=function(Q){return Q.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var P=E;E=function(T,S,Q,R){S=S||document;if(!R&&S.nodeType===9){try{return D(S.querySelectorAll(T),Q)}catch(U){}}return P(T,S,Q,R)};E.find=P.find;E.filter=P.filter;E.selectors=P.selectors;E.matches=P.matches})()}if(document.documentElement.getElementsByClassName){G.order.splice(1,0,"CLASS");G.find.CLASS=function(P,Q){return Q.getElementsByClassName(P[1])}}function L(Q,W,V,Z,X,Y){for(var T=0,R=Z.length;T<R;T++){var P=Z[T];if(P){P=P[Q];var U=false;while(P&&P.nodeType){var S=P[V];if(S){U=Z[S];break}if(P.nodeType===1&&!Y){P[V]=T}if(P.nodeName===W){U=P;break}P=P[Q]}Z[T]=U}}}function O(Q,V,U,Y,W,X){for(var S=0,R=Y.length;S<R;S++){var P=Y[S];if(P){P=P[Q];var T=false;while(P&&P.nodeType){if(P[U]){T=Y[P[U]];break}if(P.nodeType===1){if(!X){P[U]=S}if(typeof V!=="string"){if(P===V){T=true;break}}else{if(E.filter(V,[P]).length>0){T=P;break}}}P=P[Q]}Y[S]=T}}}var H=document.compareDocumentPosition?function(Q,P){return Q.compareDocumentPosition(P)&16}:function(Q,P){return Q!==P&&(Q.contains?Q.contains(P):true)};var M=function(P){return P.documentElement&&!P.body||P.tagName&&P.ownerDocument&&!P.ownerDocument.body};n.find=E;n.filter=E.filter;n.expr=E.selectors;n.expr[":"]=n.expr.filters;E.selectors.filters.hidden=function(P){return"hidden"===P.type||n.css(P,"display")==="none"||n.css(P,"visibility")==="hidden"};E.selectors.filters.visible=function(P){return"hidden"!==P.type&&n.css(P,"display")!=="none"&&n.css(P,"visibility")!=="hidden"};E.selectors.filters.animated=function(P){return n.grep(n.timers,function(Q){return P===Q.elem}).length};n.multiFilter=function(R,P,Q){if(Q){R=":not("+R+")"}return E.matches(R,P)};n.dir=function(R,Q){var P=[],S=R[Q];while(S&&S!=document){if(S.nodeType==1){P.push(S)}S=S[Q]}return P};n.nth=function(T,P,R,S){P=P||1;var Q=0;for(;T;T=T[R]){if(T.nodeType==1&&++Q==P){break}}return T};n.sibling=function(R,Q){var P=[];for(;R;R=R.nextSibling){if(R.nodeType==1&&R!=Q){P.push(R)}}return P};return;l.Sizzle=E})();n.event={add:function(H,E,G,J){if(H.nodeType==3||H.nodeType==8){return}if(H.setInterval&&H!=l){H=l}if(!G.guid){G.guid=this.guid++}if(J!==g){var F=G;G=this.proxy(F);G.data=J}var D=n.data(H,"events")||n.data(H,"events",{}),I=n.data(H,"handle")||n.data(H,"handle",function(){return typeof n!=="undefined"&&!n.event.triggered?n.event.handle.apply(arguments.callee.elem,arguments):g});I.elem=H;n.each(E.split(/\s+/),function(L,M){var N=M.split(".");M=N.shift();G.type=N.slice().sort().join(".");var K=D[M];if(n.event.specialAll[M]){n.event.specialAll[M].setup.call(H,J,N)}if(!K){K=D[M]={};if(!n.event.special[M]||n.event.special[M].setup.call(H,J,N)===false){if(H.addEventListener){H.addEventListener(M,I,false)}else{if(H.attachEvent){H.attachEvent("on"+M,I)}}}}K[G.guid]=G;n.event.global[M]=true});H=null},guid:1,global:{},remove:function(J,G,I){if(J.nodeType==3||J.nodeType==8){return}var F=n.data(J,"events"),E,D;if(F){if(G===g||(typeof G==="string"&&G.charAt(0)==".")){for(var H in F){this.remove(J,H+(G||""))}}else{if(G.type){I=G.handler;G=G.type}n.each(G.split(/\s+/),function(L,N){var P=N.split(".");N=P.shift();var M=RegExp("(^|\\.)"+P.slice().sort().join(".*\\.")+"(\\.|$)");if(F[N]){if(I){delete F[N][I.guid]}else{for(var O in F[N]){if(M.test(F[N][O].type)){delete F[N][O]}}}if(n.event.specialAll[N]){n.event.specialAll[N].teardown.call(J,P)}for(E in F[N]){break}if(!E){if(!n.event.special[N]||n.event.special[N].teardown.call(J,P)===false){if(J.removeEventListener){J.removeEventListener(N,n.data(J,"handle"),false)}else{if(J.detachEvent){J.detachEvent("on"+N,n.data(J,"handle"))}}}E=null;delete F[N]}}})}for(E in F){break}if(!E){var K=n.data(J,"handle");if(K){K.elem=null}n.removeData(J,"events");n.removeData(J,"handle")}}},trigger:function(H,J,G,D){var F=H.type||H;if(!D){H=typeof H==="object"?H[h]?H:n.extend(n.Event(F),H):n.Event(F);if(F.indexOf("!")>=0){H.type=F=F.slice(0,-1);H.exclusive=true}if(!G){H.stopPropagation();if(this.global[F]){n.each(n.cache,function(){if(this.events&&this.events[F]){n.event.trigger(H,J,this.handle.elem)}})}}if(!G||G.nodeType==3||G.nodeType==8){return g}H.result=g;H.target=G;J=n.makeArray(J);J.unshift(H)}H.currentTarget=G;var I=n.data(G,"handle");if(I){I.apply(G,J)}if((!G[F]||(n.nodeName(G,"a")&&F=="click"))&&G["on"+F]&&G["on"+F].apply(G,J)===false){H.result=false}if(!D&&G[F]&&!H.isDefaultPrevented()&&!(n.nodeName(G,"a")&&F=="click")){this.triggered=true;try{G[F]()}catch(K){}}this.triggered=false;if(!H.isPropagationStopped()){var E=G.parentNode||G.ownerDocument;if(E){n.event.trigger(H,J,E,true)}}},handle:function(J){var I,D;J=arguments[0]=n.event.fix(J||l.event);var K=J.type.split(".");J.type=K.shift();I=!K.length&&!J.exclusive;var H=RegExp("(^|\\.)"+K.slice().sort().join(".*\\.")+"(\\.|$)");D=(n.data(this,"events")||{})[J.type];for(var F in D){var G=D[F];if(I||H.test(G.type)){J.handler=G;J.data=G.data;var E=G.apply(this,arguments);if(E!==g){J.result=E;if(E===false){J.preventDefault();J.stopPropagation()}}if(J.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(G){if(G[h]){return G}var E=G;G=n.Event(E);for(var F=this.props.length,I;F;){I=this.props[--F];G[I]=E[I]}if(!G.target){G.target=G.srcElement||document}if(G.target.nodeType==3){G.target=G.target.parentNode}if(!G.relatedTarget&&G.fromElement){G.relatedTarget=G.fromElement==G.target?G.toElement:G.fromElement}if(G.pageX==null&&G.clientX!=null){var H=document.documentElement,D=document.body;G.pageX=G.clientX+(H&&H.scrollLeft||D&&D.scrollLeft||0)-(H.clientLeft||0);G.pageY=G.clientY+(H&&H.scrollTop||D&&D.scrollTop||0)-(H.clientTop||0)}if(!G.which&&((G.charCode||G.charCode===0)?G.charCode:G.keyCode)){G.which=G.charCode||G.keyCode}if(!G.metaKey&&G.ctrlKey){G.metaKey=G.ctrlKey}if(!G.which&&G.button){G.which=(G.button&1?1:(G.button&2?3:(G.button&4?2:0)))}return G},proxy:function(E,D){D=D||function(){return E.apply(this,arguments)};D.guid=E.guid=E.guid||D.guid||this.guid++;return D},special:{ready:{setup:A,teardown:function(){}}},specialAll:{live:{setup:function(D,E){n.event.add(this,E[0],c)},teardown:function(F){if(F.length){var D=0,E=RegExp("(^|\\.)"+F[0]+"(\\.|$)");n.each((n.data(this,"events").live||{}),function(){if(E.test(this.type)){D++}});if(D<1){n.event.remove(this,F[0],c)}}}}}};n.Event=function(D){if(!this.preventDefault){return new n.Event(D)}if(D&&D.type){this.originalEvent=D;this.type=D.type;this.timeStamp=D.timeStamp}else{this.type=D}if(!this.timeStamp){this.timeStamp=e()}this[h]=true};function k(){return false}function t(){return true}n.Event.prototype={preventDefault:function(){this.isDefaultPrevented=t;var D=this.originalEvent;if(!D){return}if(D.preventDefault){D.preventDefault()}D.returnValue=false},stopPropagation:function(){this.isPropagationStopped=t;var D=this.originalEvent;if(!D){return}if(D.stopPropagation){D.stopPropagation()}D.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=t;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(E){var D=E.relatedTarget;while(D&&D!=this){try{D=D.parentNode}catch(F){D=this}}if(D!=this){E.type=E.data;n.event.handle.apply(this,arguments)}};n.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(E,D){n.event.special[D]={setup:function(){n.event.add(this,E,a,D)},teardown:function(){n.event.remove(this,E,a)}}});n.fn.extend({bind:function(E,F,D){return E=="unload"?this.one(E,F,D):this.each(function(){n.event.add(this,E,D||F,D&&F)})},one:function(F,G,E){var D=n.event.proxy(E||G,function(H){n(this).unbind(H,D);return(E||G).apply(this,arguments)});return this.each(function(){n.event.add(this,F,D,E&&G)})},unbind:function(E,D){return this.each(function(){n.event.remove(this,E,D)})},trigger:function(D,E){return this.each(function(){n.event.trigger(D,E,this)})},triggerHandler:function(D,F){if(this[0]){var E=n.Event(D);E.preventDefault();E.stopPropagation();n.event.trigger(E,F,this[0]);return E.result}},toggle:function(F){var D=arguments,E=1;while(E<D.length){n.event.proxy(F,D[E++])}return this.click(n.event.proxy(F,function(G){this.lastToggle=(this.lastToggle||0)%E;G.preventDefault();return D[this.lastToggle++].apply(this,arguments)||false}))},hover:function(D,E){return this.mouseenter(D).mouseleave(E)},ready:function(D){A();if(n.isReady){D.call(document,n)}else{n.readyList.push(D)}return this},live:function(F,E){var D=n.event.proxy(E);D.guid+=this.selector+F;n(document).bind(i(F,this.selector),this.selector,D);return this},die:function(E,D){n(document).unbind(i(E,this.selector),D?{guid:D.guid+this.selector+E}:null);return this}});function c(G){var D=RegExp("(^|\\.)"+G.type+"(\\.|$)"),F=true,E=[];n.each(n.data(this,"events").live||[],function(H,I){if(D.test(I.type)){var J=n(G.target).closest(I.data)[0];if(J){E.push({elem:J,fn:I})}}});n.each(E,function(){if(!G.isImmediatePropagationStopped()&&this.fn.call(this.elem,G,this.fn.data)===false){F=false}});return F}function i(E,D){return["live",E,D.replace(/\./g,"`").replace(/ /g,"|")].join(".")}n.extend({isReady:false,readyList:[],ready:function(){if(!n.isReady){n.isReady=true;if(n.readyList){n.each(n.readyList,function(){this.call(document,n)});n.readyList=null}n(document).triggerHandler("ready")}}});var w=false;function A(){if(w){return}w=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);n.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);n.ready()}});if(document.documentElement.doScroll&&!l.frameElement){(function(){if(n.isReady){return}try{document.documentElement.doScroll("left")}catch(D){setTimeout(arguments.callee,0);return}n.ready()})()}}}n.event.add(l,"load",n.ready)}n.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(E,D){n.fn[D]=function(F){return F?this.bind(D,F):this.trigger(D)}});n(l).bind("unload",function(){for(var D in n.cache){if(D!=1&&n.cache[D].handle){n.event.remove(n.cache[D].handle.elem)}}});(function(){n.support={};var E=document.documentElement,F=document.createElement("script"),J=document.createElement("div"),I="script"+(new Date).getTime();J.style.display="none";J.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var G=J.getElementsByTagName("*"),D=J.getElementsByTagName("a")[0];if(!G||!G.length||!D){return}n.support={leadingWhitespace:J.firstChild.nodeType==3,tbody:!J.getElementsByTagName("tbody").length,objectAll:!!J.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!J.getElementsByTagName("link").length,style:/red/.test(D.getAttribute("style")),hrefNormalized:D.getAttribute("href")==="/a",opacity:D.style.opacity==="0.5",cssFloat:!!D.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};F.type="text/javascript";try{F.appendChild(document.createTextNode("window."+I+"=1;"))}catch(H){}E.insertBefore(F,E.firstChild);if(l[I]){n.support.scriptEval=true;delete l[I]}E.removeChild(F);if(J.attachEvent&&J.fireEvent){J.attachEvent("onclick",function(){n.support.noCloneEvent=false;J.detachEvent("onclick",arguments.callee)});J.cloneNode(true).fireEvent("onclick")}n(function(){var K=document.createElement("div");K.style.width="1px";K.style.paddingLeft="1px";document.body.appendChild(K);n.boxModel=n.support.boxModel=K.offsetWidth===2;document.body.removeChild(K)})})();var v=n.support.cssFloat?"cssFloat":"styleFloat";n.props={"for":"htmlFor","class":"className","float":v,cssFloat:v,styleFloat:v,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};n.fn.extend({_load:n.fn.load,load:function(F,I,J){if(typeof F!=="string"){return this._load(F)}var H=F.indexOf(" ");if(H>=0){var D=F.slice(H,F.length);F=F.slice(0,H)}var G="GET";if(I){if(n.isFunction(I)){J=I;I=null}else{if(typeof I==="object"){I=n.param(I);G="POST"}}}var E=this;n.ajax({url:F,type:G,dataType:"html",data:I,complete:function(L,K){if(K=="success"||K=="notmodified"){E.html(D?n("<div/>").append(L.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(D):L.responseText)}if(J){E.each(J,[L.responseText,K,L])}}});return this},serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?n.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type))}).map(function(D,E){var F=n(this).val();return F==null?null:n.isArray(F)?n.map(F,function(H,G){return{name:E.name,value:H}}):{name:E.name,value:F}}).get()}});n.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(D,E){n.fn[E]=function(F){return this.bind(E,F)}});var q=e();n.extend({get:function(D,F,G,E){if(n.isFunction(F)){G=F;F=null}return n.ajax({type:"GET",url:D,data:F,success:G,dataType:E})},getScript:function(D,E){return n.get(D,null,E,"script")},getJSON:function(D,E,F){return n.get(D,E,F,"json")},post:function(D,F,G,E){if(n.isFunction(F)){G=F;F={}}return n.ajax({type:"POST",url:D,data:F,success:G,dataType:E})},ajaxSetup:function(D){n.extend(n.ajaxSettings,D)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(L){L=n.extend(true,L,n.extend(true,{},n.ajaxSettings,L));var V,E=/=\?(&|$)/g,Q,U,F=L.type.toUpperCase();if(L.data&&L.processData&&typeof L.data!=="string"){L.data=n.param(L.data)}if(L.dataType=="jsonp"){if(F=="GET"){if(!L.url.match(E)){L.url+=(L.url.match(/\?/)?"&":"?")+(L.jsonp||"callback")+"=?"}}else{if(!L.data||!L.data.match(E)){L.data=(L.data?L.data+"&":"")+(L.jsonp||"callback")+"=?"}}L.dataType="json"}if(L.dataType=="json"&&(L.data&&L.data.match(E)||L.url.match(E))){V="jsonp"+q++;if(L.data){L.data=(L.data+"").replace(E,"="+V+"$1")}L.url=L.url.replace(E,"="+V+"$1");L.dataType="script";l[V]=function(W){U=W;H();K();l[V]=g;try{delete l[V]}catch(X){}if(G){G.removeChild(S)}}}if(L.dataType=="script"&&L.cache==null){L.cache=false}if(L.cache===false&&F=="GET"){var D=e();var T=L.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+D+"$2");L.url=T+((T==L.url)?(L.url.match(/\?/)?"&":"?")+"_="+D:"")}if(L.data&&F=="GET"){L.url+=(L.url.match(/\?/)?"&":"?")+L.data;L.data=null}if(L.global&&!n.active++){n.event.trigger("ajaxStart")}var P=/^(\w+:)?\/\/([^\/?#]+)/.exec(L.url);if(L.dataType=="script"&&F=="GET"&&P&&(P[1]&&P[1]!=location.protocol||P[2]!=location.host)){var G=document.getElementsByTagName("head")[0];var S=document.createElement("script");S.src=L.url;if(L.scriptCharset){S.charset=L.scriptCharset}if(!V){var N=false;S.onload=S.onreadystatechange=function(){if(!N&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){N=true;H();K();G.removeChild(S)}}}G.appendChild(S);return g}var J=false;var I=L.xhr();if(L.username){I.open(F,L.url,L.async,L.username,L.password)}else{I.open(F,L.url,L.async)}try{if(L.data){I.setRequestHeader("Content-Type",L.contentType)}if(L.ifModified){I.setRequestHeader("If-Modified-Since",n.lastModified[L.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}I.setRequestHeader("X-Requested-With","XMLHttpRequest");I.setRequestHeader("Accept",L.dataType&&L.accepts[L.dataType]?L.accepts[L.dataType]+", */*":L.accepts._default)}catch(R){}if(L.beforeSend&&L.beforeSend(I,L)===false){if(L.global&&!--n.active){n.event.trigger("ajaxStop")}I.abort();return false}if(L.global){n.event.trigger("ajaxSend",[I,L])}var M=function(W){if(I.readyState==0){if(O){clearInterval(O);O=null;if(L.global&&!--n.active){n.event.trigger("ajaxStop")}}}else{if(!J&&I&&(I.readyState==4||W=="timeout")){J=true;if(O){clearInterval(O);O=null}Q=W=="timeout"?"timeout":!n.httpSuccess(I)?"error":L.ifModified&&n.httpNotModified(I,L.url)?"notmodified":"success";if(Q=="success"){try{U=n.httpData(I,L.dataType,L)}catch(Y){Q="parsererror"}}if(Q=="success"){var X;try{X=I.getResponseHeader("Last-Modified")}catch(Y){}if(L.ifModified&&X){n.lastModified[L.url]=X}if(!V){H()}}else{n.handleError(L,I,Q)}K();if(L.async){I=null}}}};if(L.async){var O=setInterval(M,13);if(L.timeout>0){setTimeout(function(){if(I){if(!J){M("timeout")}if(I){I.abort()}}},L.timeout)}}try{I.send(L.data)}catch(R){n.handleError(L,I,null,R)}if(!L.async){M()}function H(){if(L.success){L.success(U,Q)}if(L.global){n.event.trigger("ajaxSuccess",[I,L])}}function K(){if(L.complete){L.complete(I,Q)}if(L.global){n.event.trigger("ajaxComplete",[I,L])}if(L.global&&!--n.active){n.event.trigger("ajaxStop")}}return I},handleError:function(E,G,D,F){if(E.error){E.error(G,D,F)}if(E.global){n.event.trigger("ajaxError",[G,E,F])}},active:0,httpSuccess:function(E){try{return !E.status&&location.protocol=="file:"||(E.status>=200&&E.status<300)||E.status==304||E.status==1223}catch(D){}return false},httpNotModified:function(F,D){try{var G=F.getResponseHeader("Last-Modified");return F.status==304||G==n.lastModified[D]}catch(E){}return false},httpData:function(I,G,F){var E=I.getResponseHeader("content-type"),D=G=="xml"||!G&&E&&E.indexOf("xml")>=0,H=D?I.responseXML:I.responseText;if(D&&H.documentElement.tagName=="parsererror"){throw"parsererror"}if(F&&F.dataFilter){H=F.dataFilter(H,G)}if(typeof H==="string"){if(G=="script"){n.globalEval(H)}if(G=="json"){H=l["eval"]("("+H+")")}}return H},param:function(D){var F=[];function G(H,I){F[F.length]=encodeURIComponent(H)+"="+encodeURIComponent(I)}if(n.isArray(D)||D.jquery){n.each(D,function(){G(this.name,this.value)})}else{for(var E in D){if(n.isArray(D[E])){n.each(D[E],function(){G(E,this)})}else{G(E,n.isFunction(D[E])?D[E]():D[E])}}}return F.join("&").replace(/%20/g,"+")}});var m={},d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function s(E,D){var F={};n.each(d.concat.apply([],d.slice(0,D)),function(){F[this]=E});return F}n.fn.extend({show:function(I,K){if(I){return this.animate(s("show",3),I,K)}else{for(var G=0,E=this.length;G<E;G++){var D=n.data(this[G],"olddisplay");this[G].style.display=D||"";if(n.css(this[G],"display")==="none"){var F=this[G].tagName,J;if(m[F]){J=m[F]}else{var H=n("<"+F+" />").appendTo("body");J=H.css("display");if(J==="none"){J="block"}H.remove();m[F]=J}this[G].style.display=n.data(this[G],"olddisplay",J)}}return this}},hide:function(G,H){if(G){return this.animate(s("hide",3),G,H)}else{for(var F=0,E=this.length;F<E;F++){var D=n.data(this[F],"olddisplay");if(!D&&D!=="none"){n.data(this[F],"olddisplay",n.css(this[F],"display"))}this[F].style.display="none"}return this}},_toggle:n.fn.toggle,toggle:function(F,E){var D=typeof F==="boolean";return n.isFunction(F)&&n.isFunction(E)?this._toggle.apply(this,arguments):F==null||D?this.each(function(){var G=D?F:n(this).is(":hidden");n(this)[G?"show":"hide"]()}):this.animate(s("toggle",3),F,E)},fadeTo:function(D,F,E){return this.animate({opacity:F},D,E)},animate:function(H,E,G,F){var D=n.speed(E,G,F);return this[D.queue===false?"each":"queue"](function(){var J=n.extend({},D),L,K=this.nodeType==1&&n(this).is(":hidden"),I=this;for(L in H){if(H[L]=="hide"&&K||H[L]=="show"&&!K){return J.complete.call(this)}if((L=="height"||L=="width")&&this.style){J.display=n.css(this,"display");J.overflow=this.style.overflow}}if(J.overflow!=null){this.style.overflow="hidden"}J.curAnim=n.extend({},H);n.each(H,function(N,R){var Q=new n.fx(I,J,N);if(/toggle|show|hide/.test(R)){Q[R=="toggle"?K?"show":"hide":R](H)}else{var P=R.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),S=Q.cur(true)||0;if(P){var M=parseFloat(P[2]),O=P[3]||"px";if(O!="px"){I.style[N]=(M||1)+O;S=((M||1)/Q.cur(true))*S;I.style[N]=S+O}if(P[1]){M=((P[1]=="-="?-1:1)*M)+S}Q.custom(S,M,O)}else{Q.custom(S,R,"")}}});return true})},stop:function(E,D){var F=n.timers;if(E){this.queue([])}this.each(function(){for(var G=F.length-1;G>=0;G--){if(F[G].elem==this){if(D){F[G](true)}F.splice(G,1)}}});if(!D){this.dequeue()}return this}});n.each({slideDown:s("show",1),slideUp:s("hide",1),slideToggle:s("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(D,E){n.fn[D]=function(F,G){return this.animate(E,F,G)}});n.extend({speed:function(F,G,E){var D=typeof F==="object"?F:{complete:E||!E&&G||n.isFunction(F)&&F,duration:F,easing:E&&G||G&&!n.isFunction(G)&&G};D.duration=n.fx.off?0:typeof D.duration==="number"?D.duration:n.fx.speeds[D.duration]||n.fx.speeds._default;D.old=D.complete;D.complete=function(){if(D.queue!==false){n(this).dequeue()}if(n.isFunction(D.old)){D.old.call(this)}};return D},easing:{linear:function(F,G,D,E){return D+E*F},swing:function(F,G,D,E){return((-Math.cos(F*Math.PI)/2)+0.5)*E+D}},timers:[],timerId:null,fx:function(E,D,F){this.options=D;this.elem=E;this.prop=F;if(!D.orig){D.orig={}}}});n.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(n.fx.step[this.prop]||n.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(E){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var D=parseFloat(n.css(this.elem,this.prop,E));return D&&D>-10000?D:parseFloat(n.curCSS(this.elem,this.prop))||0},custom:function(H,G,F){this.startTime=e();this.start=H;this.end=G;this.unit=F||this.unit||"px";this.now=this.start;this.pos=this.state=0;var D=this;function E(I){return D.step(I)}E.elem=this.elem;n.timers.push(E);if(E()&&n.timerId==null){n.timerId=setInterval(function(){var J=n.timers;for(var I=0;I<J.length;I++){if(!J[I]()){J.splice(I--,1)}}if(!J.length){clearInterval(n.timerId);n.timerId=null}},13)}},show:function(){this.options.orig[this.prop]=n.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());n(this.elem).show()},hide:function(){this.options.orig[this.prop]=n.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(G){var F=e();if(G||F>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var D=true;for(var E in this.options.curAnim){if(this.options.curAnim[E]!==true){D=false}}if(D){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(n.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){n(this.elem).hide()}if(this.options.hide||this.options.show){for(var H in this.options.curAnim){n.attr(this.elem.style,H,this.options.orig[H])}}}if(D){this.options.complete.call(this.elem)}return false}else{var I=F-this.startTime;this.state=I/this.options.duration;this.pos=n.easing[this.options.easing||(n.easing.swing?"swing":"linear")](this.state,I,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};n.extend(n.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(D){n.attr(D.elem.style,"opacity",D.now)},_default:function(D){if(D.elem.style&&D.elem.style[D.prop]!=null){D.elem.style[D.prop]=D.now+D.unit}else{D.elem[D.prop]=D.now}}}});if(document.documentElement.getBoundingClientRect){n.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return n.offset.bodyOffset(this[0])}var F=this[0].getBoundingClientRect(),I=this[0].ownerDocument,E=I.body,D=I.documentElement,K=D.clientTop||E.clientTop||0,J=D.clientLeft||E.clientLeft||0,H=F.top+(self.pageYOffset||n.boxModel&&D.scrollTop||E.scrollTop)-K,G=F.left+(self.pageXOffset||n.boxModel&&D.scrollLeft||E.scrollLeft)-J;return{top:H,left:G}}}else{n.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return n.offset.bodyOffset(this[0])}n.offset.initialized||n.offset.initialize();var I=this[0],F=I.offsetParent,E=I,N=I.ownerDocument,L,G=N.documentElement,J=N.body,K=N.defaultView,D=K.getComputedStyle(I,null),M=I.offsetTop,H=I.offsetLeft;while((I=I.parentNode)&&I!==J&&I!==G){L=K.getComputedStyle(I,null);M-=I.scrollTop,H-=I.scrollLeft;if(I===F){M+=I.offsetTop,H+=I.offsetLeft;if(n.offset.doesNotAddBorder&&!(n.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(I.tagName))){M+=parseInt(L.borderTopWidth,10)||0,H+=parseInt(L.borderLeftWidth,10)||0}E=F,F=I.offsetParent}if(n.offset.subtractsBorderForOverflowNotVisible&&L.overflow!=="visible"){M+=parseInt(L.borderTopWidth,10)||0,H+=parseInt(L.borderLeftWidth,10)||0}D=L}if(D.position==="relative"||D.position==="static"){M+=J.offsetTop,H+=J.offsetLeft}if(D.position==="fixed"){M+=Math.max(G.scrollTop,J.scrollTop),H+=Math.max(G.scrollLeft,J.scrollLeft)}return{top:M,left:H}}}n.offset={initialize:function(){if(this.initialized){return}var K=document.body,E=document.createElement("div"),G,F,M,H,L,D,I=K.style.marginTop,J='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"cellpadding="0"cellspacing="0"><tr><td></td></tr></table>';L={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(D in L){E.style[D]=L[D]}E.innerHTML=J;K.insertBefore(E,K.firstChild);G=E.firstChild,F=G.firstChild,H=G.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(F.offsetTop!==5);this.doesAddBorderForTableAndCells=(H.offsetTop===5);G.style.overflow="hidden",G.style.position="relative";this.subtractsBorderForOverflowNotVisible=(F.offsetTop===-5);K.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(K.offsetTop===0);K.style.marginTop=I;K.removeChild(E);this.initialized=true},bodyOffset:function(D){n.offset.initialized||n.offset.initialize();var F=D.offsetTop,E=D.offsetLeft;if(n.offset.doesNotIncludeMarginInBodyOffset){F+=parseInt(n.curCSS(D,"marginTop",true),10)||0,E+=parseInt(n.curCSS(D,"marginLeft",true),10)||0}return{top:F,left:E}}};n.fn.extend({position:function(){var H=0,G=0,E;if(this[0]){var F=this.offsetParent(),I=this.offset(),D=/^body|html$/i.test(F[0].tagName)?{top:0,left:0}:F.offset();I.top-=j(this,"marginTop");I.left-=j(this,"marginLeft");D.top+=j(F,"borderTopWidth");D.left+=j(F,"borderLeftWidth");E={top:I.top-D.top,left:I.left-D.left}}return E},offsetParent:function(){var D=this[0].offsetParent||document.body;while(D&&(!/^body|html$/i.test(D.tagName)&&n.css(D,"position")=="static")){D=D.offsetParent}return n(D)}});n.each(["Left","Top"],function(E,D){var F="scroll"+D;n.fn[F]=function(G){if(!this[0]){return null}return G!==g?this.each(function(){this==l||this==document?l.scrollTo(!E?G:n(l).scrollLeft(),E?G:n(l).scrollTop()):this[F]=G}):this[0]==l||this[0]==document?self[E?"pageYOffset":"pageXOffset"]||n.boxModel&&document.documentElement[F]||document.body[F]:this[0][F]}});n.each(["Height","Width"],function(G,E){var D=G?"Left":"Top",F=G?"Right":"Bottom";n.fn["inner"+E]=function(){return this[E.toLowerCase()]()+j(this,"padding"+D)+j(this,"padding"+F)};n.fn["outer"+E]=function(I){return this["inner"+E]()+j(this,"border"+D+"Width")+j(this,"border"+F+"Width")+(I?j(this,"margin"+D)+j(this,"margin"+F):0)};var H=E.toLowerCase();n.fn[H]=function(I){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+E]||document.body["client"+E]:this[0]==document?Math.max(document.documentElement["client"+E],document.body["scroll"+E],document.documentElement["scroll"+E],document.body["offset"+E],document.documentElement["offset"+E]):I===g?(this.length?n.css(this[0],H):null):this.css(H,typeof I==="string"?I:I+"px")}})})();\r
43647 \r
43648 if(!Array.forEach){Array.prototype.forEach=function(D,E){var C=E||window;for(var B=0,A=this.length;B<A;++B){D.call(C,this[B],B,this)}};Array.prototype.map=function(E,F){var D=F||window;var A=[];for(var C=0,B=this.length;C<B;++C){A.push(E.call(D,this[C],C,this))}return A};Array.prototype.filter=function(E,F){var D=F||window;var A=[];for(var C=0,B=this.length;C<B;++C){if(!E.call(D,this[C],C,this)){continue}A.push(this[C])}return A};Array.prototype.every=function(D,E){var C=E||window;for(var B=0,A=this.length;B<A;++B){if(!D.call(C,this[B],B,this)){return false}}return true};Array.prototype.indexOf=function(B,C){var C=C||0;for(var A=0;A<this.length;++A){if(this[A]===B){return A}}return -1}}Array.prototype.contains=function(A){if(Array.contains){return this.contains(A)}return this.indexOf(A)>-1};Array.prototype.insert=function(A){if(!this.contains(A)){this.push(A)}};if(!Array.remove){Array.remove=function(D,C,B){var A=D.slice((B||C)+1||D.length);D.length=C<0?D.length+C:C;return D.push.apply(D,A)}}Function.prototype.method=function(A,B){this.prototype[A]=B;return this};Function.prototype.augmentProto=function(A){for(key in A){this.prototype[key]=A[key]}return this};Function.prototype.pBind=function(B){var A=this;return function(){return A.apply(B,arguments)}};Function.prototype.widget=function(){this.prototype.bind=function(B,A){this.$root.bind(B,A);return this};this.prototype.trigger=function(A,B){this.$root.trigger(A,B)};this.prototype.find=function(A){return this.$root.find(A)};return this};String.prototype.toCamel=function(){return this.replace(/[-_\s]\D/gi,function(A){return A.charAt(A.length-1).toUpperCase()})};String.prototype.escapeHTML=function(){return this.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;")};window.twttr=window.twttr||{};twttr.augmentObject=function(B,C){for(var A in C){B[A]=C[A]}return B};twttr.augmentObject(twttr,{namespaceOf:function(A){return twttr.is.object(A)?A:window},merge:function(){var C=arguments;var F=arguments[arguments.length-1];var B=false;if(twttr.is.nil(C[0])||!twttr.is.def(C[0])){if(C.length<2){return{}}[].shift.call(C);return this.merge.apply(this,C)}if(twttr.is.bool(F)){B=F;[].pop.call(C)}for(var E=0,A=C.length-1;E<A;E++){for(var D in C[E+1]){if(B&&C[0][D]&&twttr.is.object(C[0][D])&&!twttr.is.fn(C[0][D])&&twttr.is.object(C[E+1][D])&&!twttr.is.fn(C[E+1][D])){this.merge(C[0][D],C[E+1][D])}else{C[0][D]=C[E+1][D]}}}return C[0]},extend:function(B,C){var A=function(){};A.prototype=C.prototype;B.prototype=new A();B.prototype.constructor=B;B.uber=C.prototype;if(C.prototype.constructor==Object.prototype.constructor){C.prototype.constructor=C}},klass:function(A,B){return twttr.magic(A,B)},augmentAndExtend:function(B,C,D){var A=twttr.namespaceOf(B);A[C]=function(){A[C].uber.constructor.apply(this,arguments)};twttr.extend(A[C],D);return A[C]},auxo:function(C,D,B){var A=twttr.is.object(B)?B:twttr;return twttr.augmentAndExtend(A,C,D)},augmentString:function(C,A){var B=window;C.split(".").forEach(function(F,E,D){B=B[F]=B[F]||(twttr.is.def(D[E+1])?{}:A)});return B},magic:function(B,A){if(twttr.is.string(B)){return twttr.augmentString(B,A)}else{return twttr.augmentObject(B,A)}},inspect:function(B){console.clear();var C=$(B);var H=C.data("events");var A=0;var G=0;var E=[];var D=[];for(key in H){E.push(key);A++;D.push("\n*******************\n");D.push("Events for "+key+"\n\n");for(fn in H[key]){var F=H[key][fn];G++;D.push(F.toString()+"\n")}}console.log("************* Summary *************");console.log("for target",C);console.log(A+" types of events",E);console.log(G,"Total Event Listeners");console.log("Event listeners assigned to target");console.log(D.join(" "))},is:{bool:function(A){return typeof A==="boolean"},nil:function(A){return A===null},def:function(A){return !(typeof A==="undefined")},number:function(A){return typeof A==="number"&&isFinite(A)},fn:function(A){return typeof A==="function"},array:function(A){return A?this.number(A.length)&&this.fn(A.splice):false},string:function(A){return typeof A==="string"},blank:function(A){return A===""},falsy:function(A){return A===false||A===null||A===undefined},object:function(A){return(A&&(typeof A==="object"||this.fn(A)))||false}},widget:function(A){A.prototype.bind=function(C,B){this.$element.bind(C,B)}}});if(!window.console){var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i){window.console[names[i]]=function(){}}}function _(C,A){if(twttr.i18n){var B=twttr.i18n[C];if(B){C=B}}return replaceParams(C,A)}function replaceParams(B,A){if(A){for(var C in A){B=B.replace(new RegExp("\\%\\{"+C+"\\}","gi"),A[C])}}return B}var h=function(){var A=$("<div/>");return function(B){return B?A.text(B).html().replace(/\"/gi,"&quot;"):B}}();function unh(A){return A?A.replace(/&(amp;)+/g,"&").replace(/&[a-z]+;/gi,function(B){if(unh.HTML_ESCAPE_TOKENS[B]){return unh.HTML_ESCAPE_TOKENS[B]}return B}):A}window.unh.HTML_ESCAPE_TOKENS={"&lt;":"<","&gt;":">","&quot;":'"'};function addSlashes(A){return A.replace(/\'/g,"\\'").replace(/\"/g,'\\"')}var reverseString=function(A){return A?A.split("").reverse().join(""):A};var numberWithDelimiter=function(B,A,C){A=A?A:",";C=C?C:".";parts=(""+B).split(".");parts[0]=reverseString(reverseString(parts[0]).replace(/(\d\d\d)/g,"$1"+A));if(parts[0][0]==A){parts[0]=parts[0].substring(1)}return parts.join(C)};var timeAgo=function(C){if(!C){return false}var H=new Date();var G=new Date(C);if(document.all){G=Date.parse(C.replace(/( \+)/," UTC$1"))}var D=H-G;var B=1000,F=B*60,A=F*60;if(isNaN(D)||D<0){return false}var E=-1;$.each([5,10,20],function(){if(D<this*B){E=this;return false}});if(E!=-1){return _("less than %{time} seconds ago",{time:E})}if(D<B*40){return _("half a minute ago")}if(D<F){return _("less than a minute ago")}if(D<B*90){return _("1 minute ago")}if(D<F*45){return _("%{time} minutes ago",{time:Math.round(D/F)})}if(D<F*90){return _("about 1 hour ago")}if(D<A*24){return _("about %{time} hours ago",{time:Math.round(D/A)})}return false};var updateTimeAgo=function(){$(".timestamp").each(function(){var B=$(this);var A=timeAgo(B.meta().time);if(A&&B.find("*").length==0){B.html(A)}});$(".timestamp-title").each(function(){var B=$(this);var A=timeAgo(B.meta().time);if(A){B.attr("title",A)}})};var DEBUG=false;$.extend({log:function(A){if(window.console){console.log(A)}},debug:function(A){if(DEBUG){console.log(A)}},inspect:function(B){var A="{\n";for(var C in B){A+="\t"+C+": "+B[C]+"\n"}A+="}";console.log(A);return A}});(function(){if(document.all){if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var A=new Number(RegExp.$1);if(A>=8){$.browser.msie8=true}else{if(A>=7){$.browser.msie7=true}else{$.browser.msie6=true}}}}})();var _tmp={};twttr.augmentObject(twttr,{templates:{},timeouts:{},wait:function(){var A={};twttr.clearWait=function(B){if(twttr.is.def(A[B])){clearTimeout(B);delete A[B]}};return function(E,C){var B="TIMER_"+(new Date()).getTime();var D=setTimeout(function(){if(!twttr.is.def(A[B])){return }E()},C);A[B]=D;return B}}(),processJson:function(json){if(typeof (json)=="object"){var evals=[];$.each(json,function(selector,content){var c=selector.charAt(0);if(c=="$"){evals.push(content)}else{if(c=="!"){var notification=window[selector.substring(1)+"Notification"];if(notification){(new notification()).setMessage(content).show()}}else{var $contentPadded=$("<div></div>").html(content);var $content=$(selector,$contentPadded);if($content.length==1){$(selector).replaceWith($content)}else{$(selector).html(content)}$(selector).show()}}});$.each(evals,function(index,js){if(js){eval(js)}})}},googleAnalytics:function(A){if(window.pageTracker){window.pageTracker._trackEvent("Ajax","refresh",A,null)}},trackPageView:function(C,B,D){if(window.pageTracker){var A;if(C){A=C.toString();if(B){A="/search/tweets/"+encodeURIComponent(h(page.query))}if(D){A=A+D}window.pageTracker._trackPageview(A)}else{window.pageTracker._trackPageview()}}},fadeAndReplace:function(A,B){$(A).fadeOut("medium",function(){$(A).html(B)});$(A).fadeIn("medium")},error:function(A){alert(A?A:_("Whoops! Something went wrong. Please refresh the page and try again!"))},loading:function(){$("#loader").fadeIn(200)},loaded:function(){$("#loader").fadeOut(200)},updateLocation:function(A,E){if(!E){E=document}if(A){var D=A.replace(/^https?:\/\/.+?\//,"").replace(/#/gi,"%23").replace(/\s/gi,"+");var C=D.replace(/[^\w\d_-].*$/,"");var B=(C.length>0)?$(E).find("#"+C):[];if(B.length>0){B.get(0).id=C+"_tmp_for_update_location"}E.location.hash=D;if(B.length>0){B.get(0).id=C}}},NON_CHAR_KEY_CODES:[8,9,16,17,18,19,20,27,33,34,35,36,37,38,39,40,45,46,91,92,93],isNonCharKeyCode:function(A){return $.inArray(A.keyCode,twttr.NON_CHAR_KEY_CODES)!=-1||((A.ctrlKey||A.metaKey)&&$.inArray(A.keyCode,[67,88])!=-1)}});$.extend($.expr[":"],{onthepage:"($(elem).is(':visible') && $(elem).parents(':hidden').length == 0)"});jQuery.fn.move=function(A){var B=$(this).html();$(this).remove();$(A).html(B)};jQuery.fn.meta=function(){var B={type:"attr",name:"data"};var C=$(this);if(C.length==1){return C.metadata(B)}else{var A=[];C.each(function(){A.push($(this).metadata(B))});return A}};jQuery.fn.visible=function(A){$(this).each(function(){$(this).css("visibility",A?"visible":"hidden")})};jQuery.fn.isLoading=function(){$(this).addClass("loading")};$.fn.isLoaded=function(){$(this).removeClass("loading")};$.fn.replace_text=function(C,B){var A=$(this).html();if(A){$(this).html(A.replace(C,B))}};var pluralize=function(C,B,A){return C==1?B:A};var setDocumentTitle=function(A){document.title=unh(A)||""};var addCountToDocumentTitle=function(A){document.title=(A?"("+numberWithDelimiter(A)+") ":"")+document.title.replace(/\([^)]*[0-9]\)\s+/gi,"")};var getCurrentUserScreenName=function(){return page.user_screenname||$('meta[name="session-user-screen_name"]:first').get(0).content};var sessionUserIsPageUser=function(){try{return $('meta[name="session-user-screen_name"]:first').get(0).content==$('meta[name="page-user-screen_name"]:first').get(0).content}catch(A){return false}};$.fn.focusEnd=function(){return this.each(function(){var A=this;if(A.style.display!="none"){if($.browser.msie){A.focus();var B=A.createTextRange();B.collapse(false);B.select()}else{A.setSelectionRange(A.value.length,A.value.length);A.focus()}}})};$.fn.focusFirstTextField=function(){return this.find("input[type=text]:visible:enabled:first").focus().length>0},$.fn.focusFirstTextArea=function(){return this.find("textarea:visible:enabled:first").focus().length>0};$.fn.focusFirstTexttarget=function(){return this.focusFirstTextField()||this.focusFirstTextArea()};$.fn.maxLength=function(A){return this.each(function(){$(this).keydown(function(B){return this.value.length<=A||twttr.isNonCharKeyCode(B)})})};$.fn.replaceClass=function(B,A){return this.each(function(){var C=$(this);if(C.hasClass(B)){C.removeClass(B).addClass(A)}else{if(C.hasClass(A)){C.removeClass(A).addClass(B)}}})};$.fn.isSelectAll=function(A){return this.each(function(){var B=$(this);if(typeof (A)=="string"){var D=$(A).find("input[type=checkbox]")}else{var D=A}function C(){var E=true;D.each(function(){if(!this.checked){E=false;return false}});B.get(0).checked=E}B.click(function(){var E=B.get(0).checked;D.each(function(){this.checked=E});$(this).trigger("select-all-changed",E)});D.click(function(){C();$(this).trigger("checkbox-changed",this.checked)})})};function bodytarget(){return $("body")}twttr.klass("twttr.Observer",function(){this.fns=[]}).method("listen",function(A){this.fns.push(A)}).method("unlisten",function(A){this.fns=this.fns.filter(function(B){if(B!==A){return B}})}).method("trigger",function(C,B){var A=B||window;this.fns.forEach(function(D){D.call(A,C)})});twttr.klass("twttr.User",function(A){this.screen_name=A}).method("update",function(B,A){twttr.tweeters[this.screen_name][B]=A;return this}).method("updateAll",function(B){for(var A in B){twttr.tweeters[this.screen_name][A]=B[A]}return this}).method("data",function(B){var A=twttr.tweeters[this.screen_name];return B?A[B]:A});twttr.augmentString("twttr.Tweeter",{UserFetchTimeout:5000,UserFetchUrl:"/users/show",_bail:false,_requesting:false,bail:function(){this._bail=true},isRequesting:function(){return this._requesting},getCurrentUser:function(A){return this.findById(page.sessionUserId,A)},find:function(F,C,G){var B,A;var D=this;if(twttr.is.fn(C)){B=window;A=C}else{B=C;A=G}var E=twttr.is.def(F.screen_name)?F.screen_name.toLowerCase():null;if(E&&twttr.tweeters[E]){A.call(B,new twttr.User(E),true);return true}else{$.ajax({url:this.UserFetchUrl,type:"GET",data:F,dataType:"json",timeout:this.UserFetchTimeout,beforeSend:function(){D._requesting=true},success:function(K){D._requesting=false;var H=K.user;if(H){var I={};var J=H.screen_name.toLowerCase();I[J]=H;twttr.Tweeter.merge(I,true);if(D._bail){D._bail=false;return false}A.call(B,new twttr.User(J),false)}else{if(D._bail){D._bail=false;return false}A.call(B,null,false)}},error:function(H){D._requesting=false;if(D._bail){D._bail=false;return false}A.call(B,null,false)}});return false}},findByScreenName:function(B,A,C){return this.find({screen_name:B,hovercard:true},A,C)},findById:function(D,A,C){var B=twttr._birdtags[D];if(twttr.is.def(B)){this.findByScreenName(B,A,C)}else{this.find({user_id:D,hovercard:true},A,C)}},merge:function(){twttr.tweeters={};twttr._birdtags={};return function(D,A){var D=D||{};if(A){twttr.merge(twttr.tweeters,D,true)}else{var C=twttr.merge(D,twttr.tweeters,true);twttr.merge(twttr.tweeters,C,true)}for(var B in twttr.tweeters){twttr._birdtags[twttr.tweeters[B].user_id]=B}}}()});twttr.loadTemplate=function(A,B){if(twttr.templates[A]){return twttr.templates[A]}B=B||function(){};$.get("/mustaches/"+A+".html",null,function(D){var C={templates:{}};C.templates[A]=D;twttr.merge(twttr,C,true);B(twttr.templates)},"html")};twttr.loadTemplates=function(A,B){B=B||function(){};A.forEach(function(D,C){twttr.loadTemplate(D,function(E){var F=A.every(function(G){return twttr.is.def(E[G])});if(F){B(twttr.templates)}})})};twttr.SimplePositioner={setPosition:function(C,G,E){var D={inline:false,direction:null,offsets:{inline:{top:0,left:0},below:{top:0,left:0},above:{top:0,left:0}}};var F=twttr.merge({},D,E,true);var B=C instanceof jQuery?C:$(C);var A=G instanceof jQuery?G:$(G);var H=A.offset();this._opts=F;if(!F.inline){switch(F.direction){case"above":this._positionAbove(B,A,H,F.offsets.above);break;case"below":this._positionBelow(B,A,H,F.offsets.below);break;default:if((H.top-$(document).scrollTop())>(F.itemHeight||B.height())){this._positionAbove(B,A,H,F.offsets.above)}else{this._positionBelow(B,A,H,F.offsets.below)}break}}else{this._positionInline(B,A,H,F.offsets.inline);B.css("left",H.left+F.offsets.inline.left)}},_positionAbove:function(C,B,H,A){$("body").addClass("loading-hoverer-above");C.addClass("position_above").removeClass("position_below").removeClass("position_inline");var G=Math.round(H.top+A.top);var F=$("body");var E=parseInt(F.css("padding-top"));G+=E>0?12:0;var D=F.outerHeight()-G-B.height();C.css({bottom:D,left:this._getLeftPosition(C,B,H)+A.left})},_positionBelow:function(A,C,D,E){var B=Math.round(D.top+C.height()+E.top);A.addClass("position_below").removeClass("position_above").removeClass("position_inline");A.css({top:B,left:this._getLeftPosition(A,C,D)+E.left})},_positionInline:function(A,B,D,C){A.css("top",D.top+C.top).addClass("position_inline").removeClass("position_below").removeClass("position_above")},_getLeftPosition:function(A,B,C){return Math.round(C.left+(B.width()/2))}};var updateCount=function(A,F,D){try{var E=$(A);var C=parseInt(E.html().replace(/[^0-9]/g,""))+F;return setCount(A,C,D)}catch(B){return false}};var setCount=function(A,C,D){try{var E=$(A);if(D){E.fadeOut(D,function(){E.html(numberWithDelimiter(C)).fadeIn(D)})}else{E.html(numberWithDelimiter(C))}return C}catch(B){return false}};var updateFollowingCount=function(A){return updateCount("#following_count",A)};var updateFollowersCount=function(A){return updateCount("#follower_count",A)};twttr.forbiddenAccess={decider:function(A){twttr.forbiddenAccess.unauthed(A)},unauthed:function(req){var message;try{message=eval("("+req.responseText+")").error}catch(err){}if(!message){if(req.status==403){message=_("You are not authorized to perform this operation.")}}if(message){new ShortNotification().setMessage(message).show()}},revoked:function(){window.location.reload()}};twttr.isReplyOnlyTweet=function(A){var B=/^\@([a-zA-Z0-9_]{1,20})\s*$/;if(A.match(B)){return true}return false};$.fn.isAlertBox=function(){return this.each(function(){var A=$(this);A.find("a").click(function(){var B=$(this).attr("href");$.ajax({type:"POST",dataType:"text",data:{authenticity_token:twttr.form_authenticity_token},url:"/account/clear_user_alert",success:function(){A.slideUp("fast");window.location=B}});return false})})};$.fn.isUpdateForm=function(){return this.each(function(){var O=$(this);var H=O.find("textarea").isCharCounter();var A=O.find("#tweeting_button, #update-submit");var B=O.find("label.doing");var J=O.find(".char-counter");var F=/^\s*@(\w+)\W+/;var D=/^\s*[dD][mM]?\s+(?:(\w+)\W+)?/;var I=O.find(".places-nearby");var E;var N=false;function M(){var P=H.val();if(twttr.isReplyOnlyTweet(P)){location.href=RegExp.$1;return false}if(P.length>140){alert(_("That tweet is over 140 characters!"));return false}else{if(P.replace(/s\*/g,"")==""){return false}else{A.addClass("btn-disabled").attr("disabled",true);return true}}}A.bind("click",function(Q){var P=$(this);Q.preventDefault();if(!P.hasClass("btn-disabled")){P.closest("form").submit()}});function K(P){if(twttr.is.def(P.users)){twttr.Tweeter.merge(P.users,true)}A.removeClass("btn-disabled").removeAttr("disabled");var Q=P.text;if(P.messageForFlash){(new ShortNotification()).setMessage(P.messageForFlash).show()}else{if(P.errorForFlash){(new InfoNotification()).setMessage(P.errorForFlash).show()}else{if($("body").attr("id")!="home"){(new ShortNotification()).setMessage(_("Your status has been updated!")).show()}else{if(P.status_li){$("#timeline tr.hentry:first").removeClass("latest-status");$.Timeline.prepend(P.status_li)}}setCount("#update_count",P.status_count,250);if(P.latest_status){updateTimeAgo();$("#latest_status").html(P.latest_status).isCurrentStatus(true)}}}H.val("").focusEnd();$("#in_reply_to_status_id").val("");$("#in_reply_to").val("");C("");H.trigger("change");J.removeClass("loading");if(document.all){J.text("140")}else{J.css("color","#ccc")}}function C(Q){var P;if(P=Q.match(D)){B.html(P[1]?_("Direct message %{person}:",{person:P[1]}):_("Direct message:"));A.val(_("send"))}else{if(P=Q.match(F)){B.html(_("Reply to %{screen_name}:",{screen_name:P[1]}));A.val(_("reply"))}else{B.html(_("Whatâ\80\99s happening?"));A.val(_("update"))}}}H.bind("keyup blur focus",function(){C($(this).val())});O.submit(function(){if(M()){twttr.googleAnalytics("/status/update/refresh");var T=H.val();E={authenticity_token:twttr.form_authenticity_token,status:T,twttr:true};var Q=window.location.href;if($("body").attr("id")=="home"&&((Q.indexOf("page=")==-1)||Q.match(/page=1(?!\d)/))){E.return_rendered_status=true}var P=$("#in_reply_to_status_id").val();var S;if(P&&(S=T.match(F))){if(S[1]==$("#in_reply_to").val()){E.in_reply_to_status_id=P}}var R=$("#source").val();if(R){E.source=R}E.lat=$("#lat").val();E["long"]=$("#long").val();E.place_id=$("#place_id").val();G(E)}return false});function G(P){$.ajax({type:"POST",dataType:"json",url:"/status/update",data:P,beforeSend:function(){J.addClass("loading");if(document.all){J.html("&nbsp;&nbsp;&nbsp;&nbsp;")}else{J.css("color","transparent")}},success:K,error:twttr.forbiddenAccess.decider})}try{H.focusEnd()}catch(L){}})};$.fn.isLocationTrends=function(){var A=$("div#trends").meta()["global_id"];return this.each(function(){var I=$(this);var G=$("#location_menu");var B=$("#change_location");var L=$("#trends .trends-links");var E=new twttr.AttachedDialog($("#tt_menu span"),{content:$("#local_trends"),width:"545px",gravity:"east",weight:"top",modal:false});$(document).click(function(N){var M=$(N.target);if(E.opened&&!M.parents(".modal, .trends-links li").length){E.close()}});E.find("#location_done").click(function(){E.close();B.removeClass("active");if(!F()){D(A)}});var K=false;if($("#local_trends_notice").length){setTimeout(function(){(K=new twttr.AttachedDialog($("#tt_menu span"),{content:$("#local_trends_notice").parent(),width:"186px",gravity:"east",weight:"top",openonload:true,closeButton:true,modal:false})).bind("close",function(){D(A);return false}).open();K.find("#location_notice_set").click(function(){D(A);K.close();E.open();return false})},500)}function H(P){E.find("a.active-parent").removeClass("active-parent");var M=$(P).attr("parents");if(M){var N=M.split(" ");for(var O=0;O<N.length;O++){$("."+N[O]).addClass("active-parent")}}}function F(){return G.find("em")}function D(M){if(!M){M=0}$.ajax({type:"POST",url:"/users/update_trend_location_id",data:{authenticity_token:twttr.form_authenticity_token,trend_location_id:M},success:function(){L.append($("<em></em>").append(M))}});return false}B.click(function(){E.toggle();if(K){K.close()}B.toggleClass("active");return false});E.find("a").click(function(){var M=$(this);var N=M.attr("id").replace("trend_loc_","");E.find(".active").removeClass("active");E.find("#trend_loc_"+N).parent().addClass("active");H(M);if(N){$.ajax({type:"GET",dataType:"json",url:"/users/location_trends",data:{twttr:true,trend_location_id:N},beforeSend:function(){$("#trends_loading").show()},success:function(O){L.hide();L.fadeIn();$("#trends_loading").hide();if(O){var P=[];L.html("");$.each(O.trends,function(){var Q=this;var T=Q.name;var S=$('<a class="search_link" href="/search?q='+encodeURIComponent(Q.query)+'"name="'+T+'" title="'+T+'">'+T+"</a>");S.isSearchLink();var R=Q.description;if(R){L.append($("<li></li>").append(S).append($("<em></em>").append(R)))}else{L.append($("<li></li>").append(S))}});G.html(O.location["name"]);loadTrendDescriptions();D(O.location["id"])}else{}},error:function(O){$.debug("error: "+O.responseText)},complete:function(){$("#trends_loading").hide()}})}return false});var C=F();if(C){var J=$("#trend_loc_"+C);J.parent().addClass("active");H(J)}})};$.fn.isDirectMessageForm=function(){return this.each(function(){var L=$(this);var D=L.find("textarea").isCharCounter();var B=/^\s*[dD][mM]?\s+([A-Za-z0-9]{1,20})[^A-Za-z0-9]/;var F=L.find("select");var A=L.find("#dm-submit");var E=L.find(".char-counter");var G="";L.find("input[type=submit]").attr("disabled","disabled").addClass("btn-disabled");try{D.focusEnd()}catch(I){}function C(N){if(F.val()){return }if((matches=N.match(B))&&matches[1]&&(G!=matches[1])){var M=true;F.find("option").each(function(){if(this.innerHTML.toLowerCase()==matches[1].toLowerCase()){F.val(this.value);M=false;return false}});if(M){F.append(_('<option value="%{screen_name}">%{screen_name}</option>',{screen_name:matches[1]}));F.val(matches[1])}G=matches[1]}}A.click(function(M){var P=D.val();var N=P.match(B);var O=F.find("option[value="+F.val()+"]");if(N&&N[1]&&N[1].toLowerCase()==O.text().toLowerCase()){D.val(P.replace(B,""))}return true});F.change(function(M){D.trigger("update",M)});D.bind("keyup blur focus",function(M){C($(this).val());D.trigger("update",M)});function H(M){(new ShortNotification()).setMessage(M.messageForFlash).show();if($("body").attr("id")=="sent"){$.Timeline.prepend(M.direct_message_li)}D.val("");F.val("");G="";D.trigger("change");E.removeClass("loading");if(document.all){E.text("140")}else{E.css("color","#ccc")}}if(F.length>0){function J(){if(F.length&&(F.find("option").length==0)){$.ajax({type:"GET",dataType:"json",url:"/direct_messages/recipients_list",data:{twttr:true},success:function(N){if(N){var M=[];$.each(N,function(){var O=this;if((O.length>1)&&O[0]&&O[1]){M.push('<option value="'+O[0]+'">'+O[1]+"</option>")}});F.html('<option value="" selected="selected"></option>'+M.join(""))}},error:function(M){$.debug("error: "+M.responseText)}})}}var K=$("body").attr("id");if(K=="direct_messages"||K=="inbox"||K=="sent"){J()}L.bind("loadrecipients",null,function(M){J()});L.submit(function(){twttr.googleAnalytics("/direct_messages/create/refresh");var N=D.val();var M={authenticity_token:twttr.form_authenticity_token,text:N,"user[id]":F.val(),twttr:true};$.ajax({type:"POST",dataType:"json",url:"/direct_messages/create",data:M,beforeSend:function(){E.addClass("loading");if(document.all){E.text("")}else{E.css("color","transparent")}},success:H,error:twttr.forbiddenAccess.decider});return false})}})};$.fn.isTimelineTabLink=function(){return this.each(function(){var A=$(this);A.click(function(B){document.body.id=A.meta().dispatch_action}).bind("loading",null,function(B){A.parent("li").addClass("loading")}).bind("loaded",null,function(B){A.parent("li").removeClass("loading")}).bind("aborted",null,function(B){A.parent("li").removeClass("loading")})})};$.fn.isEmbeddedMediaExpander=function(){return this.livequery(function(){var A=$(this);var B=A.parent().find(".embedded_media");A.click(function(){B.slideToggle("normal",function(){if(A.hasClass("embedded_media_icon_active")){A.removeClass("embedded_media_icon_active")}else{A.addClass("embedded_media_icon_active")}})})})};$.fn.isCharCounter=function(){return this.each(function(){var A=true;var F=$(this);var J=F.closest("form");var E=J.find(".char-counter");var H=J.find("#tweeting_button, #update-submit, #dm-submit");var D=J.find("select");function C(){H.addClass("btn-disabled").attr("disabled","disabled");A=true}function G(){if(A){H.removeClass("btn-disabled").removeAttr("disabled");A=false}}function B(){var L=F.val();var K=L.length;E.html(""+(140-K));if(K<=0){E.css("color","#cccccc");C()}else{if(K<=140&&(D.length==0||D.val())){G()}else{C()}if(K>130){E.css("color","#d40d12")}else{if(K>120){E.css("color","#5c0002")}else{E.css("color","#cccccc")}}}}var I="blur focus change "+($.browser.mozilla?"paste input":"keyup");F.bind(I,function(K){B()});D.change(function(K){B()});F.focus()})};$.fn.isCurrentStatus=function(A){return this.each(function(){var F=$(this);var I=$("#latest_status");var C=F.find("#latest_text");var E=C.find(".status-text");var D=$(this).parent("#update_notifications");var H=I.find("strong");$("#latest_text_full, #latest_text").click(function(){$("#latest_text_full, #latest_text").toggle()});C.css("color","transparent");var B=$("#latest_text_full .status-text").text();$("#latest_text .status-text").html("<strong>"+_("Latest: ")+"</strong>").append(B.escapeHTML());C.css("color","");if(A){var G=I.find("span, strong");G.each(function(){$(this).data("old_color",$(this).css("color")).animate({color:"#333"},500)});clearTimeout(twttr.timeouts.latest_status_timeout);twttr.timeouts.latest_status_timeout=setTimeout(function(){G.each(function(){$(this).animate({color:$(this).data("old_color")},1500,function(){$(this).css("color","")})})},1500)}})};function initializeTimeline(){$.Statuses.initialize($("#timeline"))}function getListItemFromChild(A){return A.parents(".hentry:first")}function getStatusIdFromListItem(B){var A=/status_(.*)/i.exec(B.attr("id"));return(A)?A[1]:null}function getScreenNameFromListItem(B){var A=/u-([A-Za-z0-9_]+)/i.exec(B.attr("class"));return(A)?A[1]:null}function getShareIdFromListItem(B){var A=/(.)* s-([\d]+)(.)*/i.exec(B.attr("class"));return(A)?A[2]:getStatusIdFromListItem(B)}function timelineRefresh(D,A){var C=$("#results_update");if(C.length==0){return }if(!D||(("home,replies,inbox".indexOf(D)==-1)&&!D.match(/^\/?list/))){return }if(!A){A=($("#results_update").attr("href").replace(/^\//,"")||window.location.hash.replace(/^#/,"")||D).replace(/^([^\/])/,"/$1")}A=A.replace(/\/?list\//,"/");var B=$("#new_results_notification").meta().timeline;$("#new_results_notification").data("count",0);if(page.timelineRefresher){if(page.timelineRefresher.dispatchAction==D){return }else{page.timelineRefresher.stop()}}page.newResults=null;page.timelineRefresher=new Occasionally(B.delay*1000,B.max_delay*1000,function(){var E=false;if($("ol#timeline").length){$.ajax({method:"GET",dataType:"json",url:A,data:{since_id:getMaxStatusIdFromTimeline(),refresh:true},success:function(F){processTimelineRefresh(F,D)},error:function(){if(page.timelineRefresher){page.timelineRefresher.stop();page.timelineRefresher=null}}})}},function(){return page.newResults},B.decay);page.timelineRefresher.dispatchAction=D;page.timelineRefresher.start()}function getMaxStatusIdFromTimeline(){var A=0;$("ol#timeline > li").each(function(){var B=parseInt(this.id.replace(/^[A-Z_]+/gi,""));if(A<B){A=B}});return A}function processTimelineRefresh(J,D){if(twttr.is.def(J.users)){twttr.Tweeter.merge(J.users)}var G=$("#new_results_notification").meta().timeline;var K=$("<div>"+J["#timeline"]+"</div>");var A=$("#content ol#timeline");K.find("#timeline > li").each(function(){if(A.find("li#"+this.id).length){$(this).remove()}});var F=K.find("ol > li");var C=F.length;var E=($("#new_results_notification").data("count")||0)+C;if(C){A.prepend(F.addClass("buffered"));K.remove();A.find("li.buffered:gt("+(G.max_refresh_size-1)+")").remove();var B={results_count:numberWithDelimiter(E),username:getCurrentUserScreenName()};var H=$("#results_update").is(":visible")?"":' style="display:none;"';var I='<a id="results_update" class="minor-notification" href="/'+D+'" accesskey="n"'+H+">";if(D=="inbox"){I+=((E==1)?_("1 new message."):_("%{results_count} new messages.",B))}else{if(D=="replies"){I+=((E==1)?_("1 new mention of @%{username}.",B):_("%{results_count} new mentions of @%{username}.",B))}else{I+=((E==1)?_("1 new tweet."):_("%{results_count} new tweets.",B))}}I+="</a>";$("#results_update").replaceWith(I);$("#results_update").click(function(){$("#content ol#timeline > li.buffered").addClass("unbuffered").removeClass("buffered");if($("#new_results_notification").data("count")>G.max_refresh_size){$("#content ol#timeline > li:not(.unbuffered)").remove();var M=$("#content ol#timeline > li").attr("id").replace(/^[^0-9]+/,"");var L=($("#results_update").attr("href")||window.location.hash||D).replace(/^([^\/])/,"/$1")+"?max_id="+M+"&page=3&twttr=true";$("#pagination").html('<div id="#pagination"><a id="more" class="round more" rel="next" href="'+L+'">'+_("more")+"</a></div>")}else{$("#content ol#timeline > li.last-on-refresh").removeClass("last-on-refresh");$("#content ol#timeline > li.unbuffered:last").addClass("last-on-refresh")}updateTimeAgo();$("#content ol#timeline > li.unbuffered").removeClass("unbuffered");$("#results_update").hide();addCountToDocumentTitle();$.Timeline.triggerPageHeightChangedEvent();$("#new_results_notification").data("count",0);return false});$("#new_results_notification").data("count",E);$("#results_update:hidden").slideDown("normal",function(){$.Timeline.triggerPageHeightChangedEvent();var L=$(this);if(twttr.is.def(twttr.HOVERCARD)){twttr.HOVERCARD.reposition(L.get(0).offsetHeight+parseInt(L.css("margin-top")))}});addCountToDocumentTitle(E)}else{K.remove()}page.newResults=(C>0)}$(document).ready(function(){$().Page();twttr.setDefaultBucket();initializeTimeline();$("#pagination #more").isMoreButton();$("body").bind("ajaxSuccess",twttr.setupRetweetTips);twttr.setupRetweetTips();$("span.byline a").tipsy({gravity:"n"})});twttr.augmentObject(twttr,{RETWEETING_BACKGROUND_COLOR:"#ffffe5",_bucket:null,setDefaultBucket:function(){this._bucket=parseInt(page.sessionUserId)%2},getBucket:function(){return this._bucket},setBucket:function(A){this._bucket=A},applyTipsy:function(A,C,B){if(!A.data("tipsy_applied")){A.data("tipsy_applied",true);A.attr("title",A.attr("title")+C);A.tipsy(B)}},isRetweetTimeline:function(){return !!(location.hash&&location.hash.match(/retweet/))},setupRetweetTips:function(){$("span.status-body span.shared-content a.screen-name, div.shared-by-avatar-tiles a.profile-pic img.photo").each(function(){var A=$(this);if(A.data("tipsy_applied")||!twttr.isRetweetTimeline()){return }var B="left-align";var C="";if($("body#home").length>0&&!A.hasClass("you")){var C=_('<div class="retweet_tip_tip">Tip: To hide/show retweets from this user, click on their username and look for the retweet setting <div class="retweet-icon"></div></div>');B+=" retweet-tooltip"}twttr.applyTipsy(A,C,{gravity:"l",hideTimeout:10000,additionalCSSClass:B})});$("span.big-retweet-icon").each(function(){if($("body#profile").length==0){twttr.applyTipsy($(this),"",{gravity:"s",hideTimeout:10000})}else{$(this).attr("title","")}})},getStatusBodyParent:function(A){return A.parents(".status-body").parent()},setRetweetingStyles:function(B,E,D){var A=getListItemFromChild(B);var C=twttr.getStatusBodyParent(B);C.append("<span class='retweeting loading'>"+E+"</span>");A.addClass("no-hover");if($("body.status").length==0){A.css("background-color",twttr.RETWEETING_BACKGROUND_COLOR)}},unsetRetweetingStyles:function(B){var A=getListItemFromChild(B);var C=twttr.getStatusBodyParent(B);A.removeClass("no-hover");C.find(".retweeting.loading").remove()},animateStatusReplacement:function(B,D){var C=getListItemFromChild(B);var F=$(D.status_li);F.hide();C.after(F);if(C.hasClass("latest-status")){F.addClass("latest-status")}var A=F.height();var E=C.height();F.remove().show().height(E);if($("body.status").length==0){F.css("background-color",twttr.RETWEETING_BACKGROUND_COLOR)}C.replaceWith(F);if(A!=E){F.animate({height:A},500,function(){F.css("height",null);twttr.animateStatusColorChange(F)})}else{twttr.animateStatusColorChange(F)}if(D.latest_status){$("#latest_status").html(D.latest_status).isCurrentStatus(true)}},animateStatusColorChange:function(A){A.animate({backgroundColor:"#FFF"},1500,function(){A.css("background-color",null)})}});$.fn.Page=function(){var A=$('meta[name="session-user-screen_name"]:first').get(0);var D=$('meta[name="page-user-screen_name"]:first').get(0);var B=$('meta[name="session-userid"]:first').get(0);var C=A&&D&&A.content==D.content;if(typeof (page)=="undefined"){page={}}page=$.extend(page,{timeline:null,sessionUserScreenName:(A?A.content:null),sessionUserId:(B?B.content:null),pageUserScreenName:(D?D.content:null),loggedIn:$('meta[name="session-loggedin"][content="y"]').length>0,hideUnfavorited:C,isTimelineChange:false,currentTimelineChange:{},$oldTimelineLink:""})};$.Statuses={initialize:function(A){if(page.loggedIn){var B=$(A).find(".hentry");$.each($.Statuses.actions,function(){var C=this;C.apply(B)})}},actions:{isTweet:function(){this.livequery(function(){var A=$("body#show.status").length>0;var B=$("body#profile").length>0;if(!A&&!B){var C=$(this).find("a.hashtag");C.isSearchLink(SEARCH_CALLBACKS.hashtagLink)}})},isHoverable:function(){if($("body.ie,body.ie6").get(0)){this.livequery(function(){var A=$(this);A.hover(function(){A.addClass("hover")},function(){A.removeClass("hover")})})}},isFavoriteable:function(){this.find(".fav-action").live("click",function(){var D=$(this);if(D.hasClass("blocked")){return false}var B=D.parents(".hentry:first");var E=B.attr("id").replace(/status_/,"");var C=D.hasClass("fav")?"destroy":"create";twttr.googleAnalytics("/favorites/"+C+"/refresh/"+E);function A(){var F=D.hasClass("fav");D.removeClass(F?"fav":"non-fav").addClass(F?"non-fav":"fav").attr("title",(F?_("favorite this tweet"):_("un-favorite this tweet")))}$.ajax({type:"POST",dataType:"json",url:"/favorites/"+C+"/"+E,data:{authenticity_token:twttr.form_authenticity_token},beforeSend:function(){A();D.addClass("blocked")},complete:function(){D.removeClass("blocked")}});return false})},isReplyable:function(){this.find(".reply").live("click",function(){var E=$(this);var C=E.parents(".hentry:first");var G=C.attr("id").replace(/status_/,"");var A=C.attr("class").match(/u-([A-Za-z0-9_]+)/);var B=A[1];if(!B){alert(_("Whoops! Something went wrong. Please refresh the page and try again!"));return }if(C.hasClass("direct_message")){var F=$("#text");twttr.googleAnalytics("/direct_messages/reply/"+B+"/"+G);var D=$("#direct_message_user_id");if(!D.find("option[text='"+B+"']").attr("selected",true).length){D.append('<option value="'+B+'" selected="selected">'+B+"</option>")}F.trigger("update");$("#text").focusEnd()}else{if(C.hasClass("status")||C.hasClass("share")){var F=$("#status");twttr.googleAnalytics("/reply/"+B+"/"+G);if(F.size()){F.val("@"+B+" "+F.val().replace(RegExp("@"+B+" ?","i"),"")).trigger("update");$("#status").focusEnd();$("#in_reply_to_status_id").val(G);$("#in_reply_to").val(B);window.scroll(0,0)}else{window.location=E.find("a").attr("href");return false}}}window.scroll(0,0);return false})},isRetweetable:function(){this.find(".retweet-link").live("click",function(A){new RetweetInlineForm().show({targetNode:$(this)});A.preventDefault()})},isDeleteable:function(){this.find(".del").live("click",function(D){var C=$(this);var A=C.parents(".hentry:first");var F=A.attr("id").replace(/[^\d]*/,"");var E=A.hasClass("latest-status");var B;if(A.hasClass("direct_message")){B="/direct_messages/destroy"}else{B="/status/destroy"}if(confirm(_("Sure you want to delete this tweet? There is NO undo!"))){twttr.googleAnalytics(B+"/refresh/"+F);$.ajax({type:"POST",url:B+"/"+F,data:{authenticity_token:twttr.form_authenticity_token,latest_status:E},dataType:(B=="/status/destroy"?"json":null),beforeSend:function(){A.fadeOut(500);updateCount("#update_count",-1,250)},success:function(G){A.remove();if(B=="/status/destroy"){if(E){twttr.processJson(G);updateLatest()}}setCount("#update_count",G.status_count)},error:function(){A.fadeIn(0);(new InfoNotification()).setMessage(_("Whoops! Something went wrong. Please try again!")).show()}})}D.preventDefault()})},isUndoable:function(){this.find(".undo").live("click",function(){var C=$(this);var B=C.parents(".hentry:first");var A=B.attr("id").replace(/status_/,"");$.ajax({type:"POST",url:"/statuses/"+A+"/retweet",data:{_method:"delete",authenticity_token:twttr.form_authenticity_token,controller_name:page.controller_name,action_name:page.action_name,user_screenname:page.pageUserScreenName},dataType:"json",beforeSend:function(){C.attr("title","").removeClass("undo");twttr.setRetweetingStyles(C,_("Undoing..."))},success:function(D){if(D.status_li){twttr.animateStatusReplacement(C,D)}else{B.fadeOut(500,function(){var E=$("ol#timeline .hentry:visible:first");if(!E.hasClass("share")){E.addClass("latest-status")}})}(new InfoNotification()).setMessage(_("Your followers will no longer see the tweet as retweeted by you.")).show()},complete:function(){twttr.unsetRetweetingStyles(B)}});return false})},isMappable:function(){this.find(".geo_pin").live("click",function(){var B=jQuery(this);var A=B.next();var C=B.position();A.css({left:C.left-25,bottom:C.top+20});A.show();A.find(".map_close").click(function(){A.hide();return false})})}}};$.Timeline={prepend:function(A){$("#timeline").prepend(A);$.Timeline.triggerTimelineChanged()},append:function(A){$("#timeline").append(A);$.Timeline.triggerTimelineChanged()},registerTimelineEvent:function(A){$("body").bind("timeline-changed",A)},unregisterTimelineEvent:function(A){$("body").unbind("timeline-changed",A)},triggerTimelineChanged:function(){$("body").trigger("timeline-changed")},registerPageHeightChangedEvent:function(A){$("body").bind("page-height-changed",A)},unregisterPageHeightChangedEvent:function(A){$("body").unbind("page-height-changed",A)},triggerPageHeightChangedEvent:function(){$("body").trigger("page-height-changed")}};function basicMoreButtonHandler(A){return function(){var C=$(this);C.blur();if(C.hasClass("loading")){return false}var B=C.attr("href");var D=$("#more").text();$.ajax(jQuery.extend({type:"GET",url:B,dataType:"json"},A));return false}}$.fn.isMoreButton=function(){return this.live("click",basicMoreButtonHandler({beforeSend:function(){$("#timeline li:last-child").addClass("last-on-page");$("#more").addClass("loading").html("")},success:function(A){updateTimeAgo();if(twttr.is.def(A.users)){twttr.Tweeter.merge(A.users)}$("#timeline").append($(A["#timeline"]).find(".hentry"));$("#pagination").html(A["#pagination"]);if(window.onPageChange){onPageChange()}$.Timeline.triggerTimelineChanged()},error:function(){$("#timeline li:last-child").removeClass("last-on-page");$("#more").removeClass("loading").text(_("more"));(new ShortNotification()).setMessage(_("Whoops! Something went wrong. Please try again!")).show()}}))};$(function(){var request=function(data,success){return function(){var self=this;var $this=$(this);var notification=(new ProgressNotification()).setProgressMessage($this.attr("progress")).setCompletedMessage($this.attr("completed"));$.ajax({type:$this.attr("method"),dataType:"json",url:$this.attr("href")||$this.attr("action"),data:data.apply(self),success:function(){notification.done();if(success){success.apply(self)}},beforeSend:function(){twttr.loading();notification.show()},complete:twttr.loaded});return false}};$("form.restful").livequery("submit",request(function(){return $(this).serializeArray()},function(){$(this).trigger("submitted")}));$("a.restful").livequery("click",request(function(){return eval("("+$(this).attr("data")+")")}))});function updateLatest(){var A=$("#latest_status");if(A.length){A.isCurrentStatus(true)}$("#timeline li:first").addClass("latest-status")}function setTitleAndHeading(C){var K=$("#timeline_heading h1");var I=$("#timeline_heading h2");var C=C||$("body").attr("id");var A=h(page.query);var D=getCurrentUserScreenName();if(!twttr.titles_and_headings){var H={user:D,name:page.user_fullname};twttr.titles_and_headings={home:{title:_("Home"),heading:_("Home")},replies:{title:("@"+D),heading:_("Tweets mentioning @%{user}",H)},favorites:{title:_("Your Favorites"),heading:_("Your Favorites")},inbox:{title:_("Direct Messages"),heading:_("Direct messages sent only to you")},direct_messages:{title:_("Direct Messages"),heading:_("Direct messages sent only to you")},sent:{title:_("Sent Direct Messages"),heading:_("Direct messages you've sent")},retweets_by_others:{title:_("Retweets",H),heading:"&nbsp;"},profile_favorites:{title:_("%{user}'s Favorites",H),heading:_("%{user}'s Favorites",H)},profile:{title:_("%{name} (%{user}) on Twitter",H),heading:null}}}var E;if(C=="search"){E={title:_("Search - %{query}",{query:page.query})};var B=$("#side #saved_searches ul.sidebar-menu li.active");var J;if(B.length){var F=B.attr("id").replace("ss_","");J='<a href="/saved_searches/destroy/'+F+'" title="'+A+'" class="delete-search-link">'+_("Remove this saved search")+"</a></label>"}else{J='<a href="/saved_searches/create" class="save-search-link" title="'+A+'">'+_("Save this search")}J="<label>"+J+"</a></label>";if(page.searchResults){E.heading=J+_("Real-time results for <b>%{query}</b>",{query:A})}else{E.heading=J+_("No results for <b>%{query}</b>",{query:A})}}else{E=twttr.titles_and_headings[C]}if(E){var G=(C=="profile")?"":"Twitter / ";setDocumentTitle(G+E.title);I.remove();if(E.heading){K.html(E.heading);K.parent("div").show()}else{K.parent("div").hide()}if(C=="search"){K.find(".save-search-link").isSaveSearchLink().end().find(".delete-search-link").isRemoveSearchLink()}}}$.fn.isSaveSearchLink=function(){return this.each(function(){var A=$(this);var B=$("#saved_searches");var C=B.find("ul.sidebar-menu");A.click(function(){if(C.find("li").length>=10){(new InfoNotification()).setMessage(_("You can only save ten searches. To remove a saved search, select the search and click <strong>remove this saved search</strong>.")).show();return false}var E=A.attr("title");var D=$('<li><a href="/search?q='+encodeURIComponent(E)+'" class="search-link" title="'+h(E)+'"><span>'+h(E)+"</span></a></li>");D.find("a").isSearchLink(SEARCH_CALLBACKS.savedSearchLink);D.fadeOut(1,function(){C.append(D);D.fadeIn(100)});if(B.hasClass("collapsed")){B.trigger("expand")}B.fadeIn();$("#side ul.sidebar-menu li").removeClass("active");$("#side #custom_search").removeClass("active");D.addClass("active");$.ajax({type:"POST",dataType:"json",url:"/saved_searches/create",data:{q:E,authenticity_token:twttr.form_authenticity_token,twttr:true},beforeSend:function(){A.replaceWith('<span class="loading">'+_("Save this search")+"</span>")},success:function(F){D.attr("id","ss_"+F.id);setTitleAndHeading("search")},error:function(F){(new InfoNotification()).setMessage(F.responseText).show();D.remove()}});return false})})};$.fn.isRemoveSearchLink=function(){return this.each(function(){var A=$(this);var C=A.attr("title");var B=A.attr("href");A.click(function(){var D=$("#side #saved_searches li a[title='"+C+"']").parent("li");D.fadeOut(100,function(){D.remove();var E=$("#saved_searches ul.sidebar-menu a");if(E.length==0){$("#saved_searches").hide()}setTitleAndHeading("search");$("#side #custom_search").addClass("active")});$.ajax({type:"POST",url:B,data:{authenticity_token:twttr.form_authenticity_token,twttr:true},beforeSend:function(){A.replaceWith('<span class="loading">'+_("Remove this saved search")+"</span>")},error:function(){(new InfoNotification()).setMessage(_("Whoops! Something went wrong. Please refresh the page and try again!")).show()}});return false})})};function initializePage(A){if(("home,search".indexOf(A)==-1)&&($("body#list_show").length==0)){twttr.updateLocation(A)}initializeSidebar();$("#side form#sidebar_search").isSearchForm();$("#side .collapsible").isCollapsibleMenu();onPageChange(true);timelineRefresh(A);$(".saved-search-links li a").isSearchLink(SEARCH_CALLBACKS.savedSearchLink);$(".trends-links li a").isSearchLink(SEARCH_CALLBACKS.trendLink);$("#dm_tabs a, #retweet_tabs a").isTimelineTabLink();$("div.bulletin").isBulletin();$("ul.sidebar-menu a").isSidebarTab()}function initializeSidebar(){if($("#side ul.sidebar-menu li.active").length==0){var B=$("body").attr("id");var A=null;if(B=="search"){B=page.query;if(B){var C=$.grep($("#side ul.sidebar-menu li a"),function(D){return $(D).attr("title")==page.query})[0];if(C){A=$(C).parent("li")}else{$("#side #custom_search").addClass("active")}}}else{if(B){if(B=="sent"||B=="inbox"){B="direct_messages"}A=$("#side ul.sidebar-menu li#"+B+"_tab")}}if(A&&A.length){$(A.get(0)).addClass("active")}}}$.fn.isCollapsibleMenu=function(){function A(){var B=[];$("#side .collapsible").each(function(){var C=$(this);var E=C.find("h2.sidebar-title").attr("id");if(E){E=E.replace("_menu","")}else{return true}var D=C.hasClass("collapsed")?"C":"O";B.push(E+D)});$.cookie("menus",B.join("_"))}return this.each(function(){var D=$(this);var B=D.find("h2.sidebar-title");function F(G){$.ajax({type:"GET",url:G,dataType:"html",beforeSend:function(){D.addClass("loading")},success:function(H){D.find(".sidebar-menu").remove();B.after(H);C()},complete:function(){D.removeClass("loading")}})}function C(){var G=D.find(".sidebar-menu");D.find("#friends_view_all").fadeIn();G.slideDown(100,function(){D.removeClass("collapsed");A()})}function E(){var G=D.find(".sidebar-menu");D.find("a.xref").fadeOut(100);D.find("div#friends_view_all").fadeOut(100);G.slideUp(100,function(){D.addClass("collapsed");A()})}D.bind("expand",function(){C()});D.bind("collapse",function(){E()});B.click(function(H){if(H.target.nodeName.toLowerCase()=="a"){return true}var G=D.find("a.fetch-contents");if(D.hasClass("collapsed")){D.find("a.xref").fadeIn(100);if(G.length){F(G.attr("href"));G.remove()}else{C()}}else{E()}})})};$.fn.isSidebarTab=function(){return this.each(function(){var A=$(this);A.bind("click",function(){A.trigger("active")}).bind("active",null,function(B){if(A.parents("#side").length>0){$(window).scrollTop(0);$("#side ul.sidebar-menu li, #trends_list li").removeClass("active");$("#side #custom_search").removeClass("active");A.parent("li").addClass("active")}}).bind("loading",null,function(B){A.parent("li").addClass("loading")}).bind("loaded",null,function(B){A.parent("li").removeClass("loading")}).bind("aborted",null,function(B){A.parent("li").removeClass("loading")})})};$.fn.isInPageLink=function(A){return this.each(function(){var B=$(this);var C=B.meta();var D=C.dispatch_action;B.click(function(G){var E=G.srcElement||G.originalTarget||G.target;if(E.tagName.toLowerCase()=="em"){G.stopImmediatePropagation();return true}if($.browser.msie){this.hideFocus=true}var F=B.attr("href");page.query="";if(page.isTimelineChange){page.currentTimelineChange.abort();page.$oldTimelineLink.trigger("aborted")}page.currentTimelineChange=$.ajax({type:"GET",url:F,dataType:"json",beforeSend:function(){page.isTimelineChange=true;B.trigger("loading");page.$oldTimelineLink=B},success:function(H){if(twttr.is.def(H.users)){twttr.Tweeter.merge(H.users)}twttr.processJson(H);twttr.updateLocation(D=="list"?"/list"+F:F);if(D){page.action_name=D;$("body").attr("id",D);if(D=="direct_messages"||D=="inbox"||D=="sent"){$("#direct_message_form").trigger("loadrecipients")}}if(page.timelineRefresher){page.timelineRefresher.stop();page.timelineRefresher=null}addCountToDocumentTitle();timelineRefresh(D,F);$.Timeline.triggerPageHeightChangedEvent()},complete:function(H){$("#sidebar_search_q").val("").blur();onPageChange();$("body").addClass("replyable");B.trigger("loaded");page.isTimelineChange=false;if(A){A(B)}}});return false})})};function reloadTimeline(B){var A=(window.location.hash||B).toString().replace(/^#?([^\/])/,"/$1").replace(/^\/?list/,"");page.currentTimelineChange=$.ajax({type:"GET",url:A,dataType:"json",beforeSend:function(){page.isTimelineChange=true},success:function(C){if(twttr.is.def(C.users)){twttr.Tweeter.merge(C.users)}twttr.processJson(C);if(page.timelineRefresher){page.timelineRefresher.stop();page.timelineRefresher=null}addCountToDocumentTitle();timelineRefresh(B,A)},error:function(){(new InfoNotification()).setMessage(_("Whoops! Something went wrong. Please refresh the page and try again!")).show()},complete:function(){$("#sidebar_search_q").val("").blur();onPageChange();$("body").addClass("replyable");initializeTimeline();$("#timeline").removeClass("loading");page.isTimelineChange=false;if(B.match(/\/?list\//)){var C=$(".lists-links a[href="+h(A)+"]");$("#side ul.sidebar-menu li, #trends_list li").removeClass("active");$("#side #custom_search").removeClass("active");if(C.length){C.parent("li").addClass("active");setTimelineForListInPageLink(C)}}}})}$.fn.isBulletin=function(){return this.each(function(){var A=$(this);var B=A.find("a.close, a.hide");B.click(function(){A.fadeOut();return false})})};$.fn.isBrowserUpgradeBulletin=function(A){return this.each(function(){var B=$(this);B.find("a.close, a.hide").click(function(){$.cookie(A+"_upgrade","y")})})};$.fn.isDeviceFailBulletin=function(){return this.each(function(){var A=$(this);var B=A.find("a.hide-fail-notice, a.close, a.hide");var C=B.attr("id").replace("hide_device_","");B.click(function(){$.ajax({type:"POST",dataType:"text",url:"/devices/update/"+C,data:{authenticity_token:twttr.form_authenticity_token,"device[fail_alert]":"0",twttr:true},success:function(D){if(D.match(/success/)){A.fadeOut(200)}else{twttr.error()}},beforeSend:null,complete:null});return false})})};$.fn.isBouncingEmailBulletin=function(){return this.each(function(){var A=$(this);A.find("a.close, a.hide").click(function(){$.ajax({type:"POST",dataType:"text",url:"/bouncers/reset",data:{authenticity_token:twttr.form_authenticity_token,twttr:true},beforeSend:null,complete:function(){(new InfoNotification()).setMessage(_("Your email notifications should resume shortly.")).show()}});return false})})};$.fn.isNotificationSetting=function(){return this.each(function(){var B=$(this);var A=B.attr("id").replace("notify_on_","").replace("notify_off_","");B.click(function(){var C=B.attr("value");$.ajax({type:"POST",dataType:"text",url:"/friendships/device_"+C+"/"+A,data:{authenticity_token:twttr.form_authenticity_token,twttr:true},success:function(D){if(D.match(/success/)){$(".follow-control").trigger("refresh",["notify_"+(C=="follow"?"on":"off")])}else{twttr.error()}}})})})};$.fn.isNudgable=function(){return this.each(function(){var A=$(this);A.click(function(){var B=A.parents("form");B.find("input[name=authenticity_token]").val(twttr.form_authenticity_token);B.submit();return false})})};$.fn.isSlugField=function(B,A){return this.bind("keyup",function(){var C=slug($(this).val());if(B){B.val(C)}if(A){A.text(C)}})};var slug=function(A){return A.toLowerCase().replace(/[^a-z0-9]/g,"-").replace(/-+/g,"-").replace(/^[_-]+|[_-]+$/g,"")};$.fn.isDeleteButton=function(A){if(!confirm(A)){return false}};$.fn.disable=function(){$(this).attr("disabled","disabled").addClass("disabled")};$.fn.enable=function(){$(this).removeAttr("disabled").removeClass("disabled")};$.fn.textAreaSizeLimiter=function(C){var D=$(this);var A=C.maxLength;var B=C.infoMessageSelector;var E=D.parents("form").find("input[type=submit]");D.keyup(function(){var F=D.val().length;if(F>A){E.attr("disabled","DISABLED").removeClass("btn").addClass("dbtn");$(B).show()}else{E.removeAttr("disabled").removeClass("dbtn").addClass("btn");$(B).hide()}})};$.fn.isPasswordStrengthField=function(A,B){return this.each(function(){if(!A){return }if(!B){B={}}var H=$(this);var J=$(A);J.append('<span class="pstrength-text"></span>');var F=J.find(".pstrength-text");function E(K){J.children().each(function(){var L=$(this);if(L.hasClass("pstrength-text")){if(K){L.show()}else{L.hide()}}else{if(K){L.hide()}else{L.show()}}})}function I(K){var M=0;var L=B.minlength?B.minlength:6;if(K.length<L){return{score:K.length,message:_("Too short"),className:"password-invalid"}}if(B.username){var N=(typeof (B.username)=="function")?B.username():B.username;if(N&&(K.toLowerCase()==N.toLowerCase())){return{score:0,message:_("Too obvious"),className:"password-invalid"}}}if($.inArray(K.toLowerCase(),twttr.BANNED_PASSWORDS)!=-1){return{score:0,message:_("Too obvious"),className:"password-invalid"}}M+=K.length*4;M+=(D(1,K).length-K.length)*1;M+=(D(2,K).length-K.length)*1;M+=(D(3,K).length-K.length)*1;M+=(D(4,K).length-K.length)*1;if(K.match(/(.*[0-9].*[0-9].*[0-9])/)){M+=5}if(K.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){M+=5}if(K.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){M+=10}if(K.match(/([a-zA-Z])/)&&K.match(/([0-9])/)){M+=15}if(K.match(/([!,@,#,$,%,^,&,*,?,_,~])/)&&K.match(/([0-9])/)){M+=15}if(K.match(/([!,@,#,$,%,^,&,*,?,_,~])/)&&K.match(/([a-zA-Z])/)){M+=15}if(K.match(/^\w+$/)||K.match(/^\d+$/)){M-=10}if(M<0){M=0}if(M>100){M=100}if(M<34){return{score:M,message:_("Weak"),className:"password-weak"}}if(M<50){return{score:M,message:_("Good"),className:"password-good"}}if(M<75){return{score:M,message:_("Strong"),className:"password-strong"}}return{score:M,message:_("Very Strong"),className:"password-verystrong"}}function D(L,O){var K="";for(var N=0;N<O.length;N++){var P=true;for(var M=0;M<L&&(M+N+L)<O.length;M++){P=P&&(O.charAt(M+N)==O.charAt(M+N+L))}if(M<L){P=false}if(P){N+=L-1;P=false}else{K+=O.charAt(N)}}return K}function C(K){if(K&&J.hasClass(K)){return false}J.removeClass("password-weak").removeClass("password-good").removeClass("password-strong").removeClass("password-verystrong").removeClass("password-invalid");return true}function G(){var L=H.val();if(L.length==0){C();E(false)}else{if(L.length){E(true)}}if(L.length>0){var K=I(L);F.html(K.message);if(C(K.className)){J.addClass(K.className)}}}H.bind("show-password-meter",function(){J.show()});H.bind("hide-password-meter",function(){J.hide()});H.keyup(function(){G()});H.blur(function(){if(this.value.length==0){C();H.trigger("hide-password-meter")}});if(H.val()){G();J.show()}})};$.fn.isOAuthApplication=function(){return this.each(function(){var C=$(this);var B=C.attr("id").replace("oauth_application_","");var A=C.find(".revoke-access");A.click(function(){$.ajax({type:"POST",dataType:"json",url:"/oauth/revoke",data:{authenticity_token:twttr.form_authenticity_token,token:B,twttr:true},success:function(D){if(D.revoked){C.addClass("revoked")}else{C.removeClass("revoked")}A.text(D.label)}});return false})})};$.fn.screenName=function(){return $(this).find(".screen-name").text()||page.sessionUserScreenName};$.fn.userId=function(){var A;if(A=$(this).attr("id")){return A.replace("user_","")}else{return page.sessionUserId}};twttr.klass("twttr.MinimumDelayCallback",function(A){this.waitUntil=twttr.getTimeMillis()+A}).method("delay",function(C){var A=twttr.getTimeMillis();var B=this.waitUntil-A;if(B>0){setTimeout(function(){this.delay(C)}.pBind(this),B)}else{C.apply()}});twttr.augmentObject(twttr,{getTimeMillis:function(){return new Date().getTime()}});jQuery.fn.pulsate=function(F,C){var D=$(this);var E=1;var A=function(){E=E+0.5;var G=E>F?function(){}:B;D.fadeIn(C,G)};var B=function(){E=E+0.5;D.fadeOut(C,A)};B()};$("html").keypress(function(C){var B=C.charCode?C.charCode:C.keyCode?C.keyCode:0;var A=$(C.target);if(A&&A.hasClass("a-btn")&&B==32){A.click();C.preventDefault()}});$("#status_update_form").isUpdateForm();twttr.ajaxSetup=function(){$.ajaxSetup({data:{twttr:true,authenticity_token:twttr.form_authenticity_token}})};var searchSummize=function(E,B,F,A){page.query=E;var D=$("body#search #timeline li.search_result").attr("id");if(D&&page.retainTimeline){page.maxId=D.substring(7)}else{page.maxId=null}var C={q:page.query,rpp:20,maxId:page.maxId,callback:F||window.SEARCH_CALLBACKS.summize,layout:"none"};if(A){C.page=A}$("#side #q").val(E);B.trigger("loading");return $.ajax({url:page.summizeSearchUrl,data:C,dataType:"script",cache:false,complete:function(){$("#side #primary_nav li").removeClass("active");$("body").attr("id","search");var H="";if($("body.front").length){H=$("#trends_list li.active").length?"front/trends":"front/custom_search"}else{var G=$("#side li.active a.search-link").parents("div#trends, div#saved_searches");H=G.length==0?$("#side div#custom_search.active").attr("id"):G.attr("id")}twttr.trackPageView($("body").attr("id"),(page.query&&page.query.length>0?page.query:null),"/"+H+(!page.retainTimeline?"/ajax":"/ajax/more"));B.trigger("loaded");page.retainTimeline=null;page.isTimelineChange=false}})};var sponsoredSearch=function(A){if(page.showSS){$.ajax({url:"/timeline/garuda_search",data:{query:page.query,authenticity_token:twttr.form_authenticity_token},type:"post",dataType:"html",success:function(B){clearTimelineIfNewSearch();$("#timeline").prepend(B);processSummizeInternal(A)},error:function(){clearTimelineIfNewSearch();processSummizeInternal(A)}})}else{clearTimelineIfNewSearch();processSummizeInternal(A)}};var processSummize=function(A){var B=getPageNumAndUrl(A)[0];if(B==2){sponsoredSearch(A)}else{clearTimelineIfNewSearch();processSummizeInternal(A)}};var clearTimelineIfNewSearch=function(){var A=(page.query!="");if(A){if(!page.retainTimeline){$("#timeline").empty();$("#pagination").empty();$("#content .no-results").remove();$("#results_update").hide()}}};var getPageNumAndUrl=function(A){var E=$(A);var B=1;var D;var C=E.find(".paginator a.next");if(C.length){D=C.attr("href");D.match(/\?.*page=([0-9]+)/gi);B=RegExp.$1;B=B?parseInt(B):1}return[B,D]};var processSummizeInternal=function(B){var J=page.trendDescriptions[page.query];if(J){$("#trend_info").hide();$("#trend_description span").text(_("%{trend} is a popular topic on Twitter right now.",{trend:J[0]}));$("#trend_description p").html(J[1]);$("#trend_description").show()}else{$("#trend_description").hide();$("#trend_info").show()}var H=$(B);var M=$(".homepage #timeline").length;var C=M&&!$(".homepage #timeline li").length;var F=$("#timeline");var L=(page.query!="");$("body").attr("id","search");var E=getPageNumAndUrl(B)[1];var D=[];if(L){D=renderResultsFromSummize(H,F,M)}$("#container, #side_base").show();F.find(".msgtxt a").each(twttr.appendClassesToSearchResults);F.find(".msgtxt").prev().addClass("tweet-url screen-name");F.find("span.vcard a").addClass("tweet-url profile-pic");F.find(".search_result").find(".status-body a,.vcard a").each(function(){var P=$(this);var N=P.attr("href");if(N.match(/^\/search\?q=([^&]+)/)){P.removeAttr("target");var O=decodeURIComponent(RegExp.$1);P.attr("title",O);P.isSearchLink(O.match(/^#/)?SEARCH_CALLBACKS.hashtagLink:SEARCH_CALLBACKS.inResultsLink)}else{if(N.match(/^https?:\/\/twitter\.com/)){P.removeAttr("target")}}});if(page.searchResults=(D.length>0&&L)){if(!M){enfavoriteSummize(D)}page.maxId=D[0];if(E){$("#pagination").empty().html('<a id="search_more" class="round more" rel="next" href="'+E+'">'+_("more")+"</a>").find("a").isSearchMoreButton(M)}else{$("#pagination").empty().html('<p class="no-more-tweets">'+_("Older tweets are temporarily unavailable.")+"</p>")}}else{var I=[_("Try a more general search."),_("Try using different words.")];var K='<div class="no-results">'+_("Suggestions:")+"<ol>";for(var G=0;G<I.length;G++){K+="<li>"+_(I[G])+"</li>"}K+="</ol></div>";setTimeout(function(){$("#timeline_heading").after(K)},1)}twttr.updateLocation("search?q="+encodeURIComponent(page.query));initializeSidebar();var A=$("#sidebar_search_q, #home_search_q");if(A.val()!=page.query){A.val(page.query);A.css("color","#000")}onPageChange(C);$("#side #rssfeed a.search-rss").attr("href","http://search.twitter.com/search.atom?q="+h(encodeURIComponent(page.query)));summizeRefresh()};if(!window.SEARCH_CALLBACKS){window.SEARCH_CALLBACKS={summize:"processSummize",load:"pageLoadSearch",searchLink:"processSearchLink",trendLink:"processTrendLink",savedSearchLink:"processSavedSearchLink",searchForm:"processSearchForm",hashtagLink:"processHashtagLink",inResultsLink:"processInResultsLink",more:"processSearchMore",refresh:"processSearchRefresh"};$.each(window.SEARCH_CALLBACKS,function(){window[this]=window.processSummize})}function renderResultsFromSummize(C,B,A){var D=[];C.find(".result").each(function(){var J=$(this);J.find(".location,.thread,.to_av,p.clearleft,.expand,#share").remove();var F=$(J.find(".avatar").get(0));F.replaceWith('<span class="thumb vcard author">'+F.html()+"</span>");var L=$(J.find(".info").get(0));var M,G,E;L.find("a.lit").each(function(){E=$(this).attr("href");var P=E.match(/\/(\w+)\/statuses\/(\d+)/);M=P[2];D.push(M);G=P[1]});var H=L.find(".source").remove();L.find("a").remove();L.html('<a href="'+E+'">'+L.html()+"</a>");L.append(H);var O='<span class="meta entry-meta">'+L.html().replace(/\u00B7/g,"")+"</span>";L.remove();var N=$(J.find(".msg").get(0));N.replaceWith(($.browser.msie6?'<img src="http://s.twimg.com/a/1267135446/images/white.png" width="1" height="50" align="left">':"")+N.html().replace(/a>\s*:\s*<span/,"a> <span")+O);var K=J.html();if(!A){K='<span class="actions"><div><a href="#" class="fav-action non-fav" id="status_star_'+M+'"> &nbsp; </a></div></span>'+K;K+='<ul class="actions-hover"><li><span class="reply"><span class="reply-icon icon"></span><a href="/home?status=@'+G+"%20&in_reply_to_status_id="+M+"&in_reply_to="+G+'">Reply</a></span></li><li><span class="retweet-link"><span class="retweet-icon icon"></span><a href="#" title="Retweet">Retweet</a></span></li></ul>'}var I=$('<li class="hentry status search_result u-'+G+'" id="status_'+M+'"><span class="status-body">'+K+"</span></li>");B.append(I)});return D}function enfavoriteSummize(A){if(page.loggedIn&&A.length>0){$timeline=$("#timeline");$.ajax({type:"POST",dataType:"json",url:"/favourings/intersect_for_search",data:{authenticity_token:twttr.form_authenticity_token,"status_id[]":A,twttr:true},beforeSend:null,success:function(B){$.map(B,function(C){$timeline.find("#status_"+C+" .non-fav").addClass("fav").removeClass("non-fav")})},complete:null})}}function summizeRefresh(){if(page.timelineRefresher){page.timelineRefresher.stop();page.timelineRefresher=null;addCountToDocumentTitle()}var B=$("#results_update");B.data("count",0);var A=$("#new_results_notification").meta().search;if(page.summizeRefresher||$("#results_update").length==0){return }page.newResults=null;page.summizeRefresher=new Occasionally(A.delay*1000,A.max_delay*1000,function(){var C=false;$.ajax({dataType:"script",url:page.summizeSearchUrl,data:{q:page.query,since_id:page.maxId,refresh:true,callback:"processSummizeRefresh"},cache:false,callback:null})},function(){return page.newResults},A.decay);page.summizeRefresher.start()}function processSummizeRefresh(B){if(decodeURIComponent(B.query).replace(/\+/g," ")==page.query&&B.total){page.maxId=B.max_id;var C=page.summizeRefreshResults=(page.summizeRefreshResults||0)+B.total;var A=$("#results_update").is(":visible")?"":' style="display:none;"';var D='<a id="results_update" class="minor-notification"'+A+">";D+=(C==1)?_("1 more tweet since you started searching."):_("%{results_count} more tweets since you started searching.",{results_count:numberWithDelimiter(C)});D+="</a>";$("#results_update").replaceWith(D);$("#results_update:hidden").slideDown();$("#results_update").attr("title",page.query).attr("href","/search?q="+encodeURIComponent(h(page.query))).isSearchLink(SEARCH_CALLBACKS.refresh).click(function(){addCountToDocumentTitle();return false});if(C){addCountToDocumentTitle(C)}page.newResults=true}else{page.newResults=false}}$.fn.isSearchMoreButton=function(A){return this.each(function(){var B=$(this);B.click(function(){B.blur();var D=B.attr("href");D.match(/\?.*page=([0-9]+)/gi);var C=RegExp.$1;page.retainTimeline=true;$("#timeline li:last-child").addClass("last-on-page");searchSummize(page.query,B,SEARCH_CALLBACKS.more,C);B.addClass("loading").html("");return false})})};function onPageChange(A){var C=$("body").attr("id");setTitleAndHeading(C);if(!A){if(page.summizeRefresher){page.summizeRefresher.stop();page.summizeRefresher=null;page.summizeRefreshResults=null}if(!page.retainTimeline){$("#results_update").hide()}$(".no-results").remove();$("#new_results_count").html("0")}$(".in-page-link").isInPageLink();$(".in-page-list-link").isListInPageLink();try{$(".in-page-list-label").isListInPageLabel();$(".in-page-label").isInPageLabel()}catch(B){}if(C=="list"||C=="list_show"){C=(window.location.hash||window.location.pathname).replace(/^#/,"").replace(/^([^\/])/,"/$1");if(C.indexOf("/list")!=0){C="/list"+C}}twttr.trackPageView(C,(page.query&&page.query.length>0?page.query:null),A?null:"/ajax")}$.fn.isSearchLink=function(A){return this.each(function(){var B=$(this);B.click(function(C){C.preventDefault();if($.browser.msie){this.hideFocus=true}if(page.isTimelineChange&&page.currentTimelineChange){page.currentTimelineChange.abort();page.$oldTimelineLink.trigger("aborted");page.isTimelineChange=false}page.isTimelineChange=true;page.currentTimelineChange=searchSummize(B.attr("name")?B.attr("name"):B.attr("title"),B,A);if(B.parents("#side").length>0){$("#side ul.sidebar-menu li").removeClass("active");B.parent("li").addClass("active")}$("#trends_list li.active a").removeClass("active")})})};$.fn.isSearchForm=function(){return this.each(function(){var B=$(this);var A=$(B.find('input[type="text"]')[0]);var C=B.find("#sidebar_search_submit");A.Watermark(_("Search")).focus(function(){A.select();return true});C.click(function(){B.submit()});B.submit(function(){var D=A.val();if(D!=""){C.addClass("loading");searchSummize(D,B,SEARCH_CALLBACKS.searchForm)}$("#side ul.sidebar-menu li").removeClass("active");$("#side #custom_search").addClass("active");return false});B.bind("loaded",null,function(D){C.removeClass("loading")})})};function loadTrendDescriptions(){$("#trends a").each(function(){var A=$(this);var C=A.parent().find("em");if(C.length){var B=A.text();var D=C.text().replace(new RegExp(B.replace(/([^\w])/gi,"\\$1"),"gi"),"<strong>"+B+"</strong>");page.trendDescriptions[A.attr("title")]=[B,D]}})}$(document).ready(function(){$("#tweet_search_submit").click(function(){$("#tweet_search").submit()});$("#content #trend_description img").tipsy({gravity:"s"});page.trendDescriptions={};loadTrendDescriptions();if($("body").attr("id")=="search"){onCondition(function(){return page.summizeResults},function(){window[SEARCH_CALLBACKS.summize](page.summizeResults)})}});twttr.appendClassesToSearchResults=function(){var A=$(this);A.addClass("tweet-url");if(A.text().match(/^@/)){A.addClass("username")}else{if(A.text().match(/^#/)){A.addClass("hashtag")}else{A.addClass("web")}}};var LIST_PUBLIC_MODE="public";var LIST_PRIVATE_MODE="private";var LIST_MAX_NAME_LENGTH=25;var LIST_MAX_DESCRIPTION_LENGTH=100;var numeric_mode=function(A){switch(A){case"public":return 0;case"private":return 1;default:return 0}};var updateListFollowersCount=function(A){return updateCount("#subscribers_tab .stat-count",A)};var updateListFollowingCount=function(A){return updateCount("#members_tab .stat-count",A)};var fadeUserOnListUnfollow=function(A){A.fadeOut("medium",function(){A.remove()})};var onListMembersPage=function(A){return $("body").hasClass("lists_members")&&$('.list-header h2 a[href="'+A.uri+'"]').length==1};var linkToList=function(A,B){A.dispatch_action="list";return'<li><a class="list_'+A.id+'" href="'+A.uri+'" data="'+h(JSON.stringify(A))+'">'+(B?"<em />":"")+"<span>"+listDisplayName(A)+"</span></a></li>"};var listDisplayName=function(A){return(page.sessionUserScreenName&&page.sessionUserScreenName==A.user?h(A.slug):"<b>@</b>"+h(A.user)+"/<wbr/>"+h(A.slug))+lockIconForList(A)};var lockIconForList=function(A){return(A.mode==LIST_PRIVATE_MODE)?'<span class="lock-icon" title="Private List"></span>':""};var findListIndexBySlug=function(A,B){return jQuery.map(A,function(D,C){if(D.slug==B){return C}else{return null}})};$.fn.isUserListMenu=function(){var A=$("#list_menu");return this.one("click",function(){var D=$(this);var E=D.parents(".user");var C={};$.map(E.meta().lists,function(F){C[F.slug]=true});$("body").click();D.addClass("clicked").after(A.html());var B=D.siblings("ul");if(B.find("li:not(.new-list)").size()>=twttr.ListPerUserLimit){B.find(".new-list").remove()}B.find("li").each(function(){var F=$(this);if(F.hasClass("new-list")){F.isNewListLink()}else{F.isUserListItem(C[F.find('input[type="checkbox"]').meta().slug])}});$("html").one("click",function(){D.removeClass("clicked").blur().siblings("ul").remove().end().isUserListMenu();return false});return false})};$.fn.isUserListItem=function(D){var A=function(I,H,F,G){I.show();H.hide();var E=(G=="POST");H.attr("checked",E);F.unbind("click.checkbox");F.bind("click.while-processing",function(){return false})};var C=function(H,G,F,E){H.hide();G.show();F.unbind("click.while-processing");F.bind("click.checkbox",function(I){B.call(this,F,G,H,E);return false})};var B=function(M,F,I,L){var H=L?"DELETE":"POST";var G=M.parents(".user");var K=G.attr("id").replace("user_","");var J={authenticity_token:twttr.form_authenticity_token,twttr:true};var E=M.find('input[type="checkbox"]').meta().uri+"/members";if(H=="POST"){J["member[id]"]=K}else{E+="/"+K}$.ajax({type:H,dataType:"json",url:E,data:J,beforeSend:function(){A(I,F,M,H)},complete:function(){C(I,F,M,L)},success:function(N){L=(H=="POST");F.attr("checked",L);if(H=="POST"){addListToUser(G,N);if(onListMembersPage(N)){updateListFollowingCount(1)}}else{removeListFromUser(G,N);if(onListMembersPage(N)){fadeUserOnListUnfollow(G);updateListFollowingCount(-1)}}},error:function(){F.attr("checked",L)}})};return this.each(function(){var E=$(this);var F=E.find('input[type="checkbox"]');var H=E.find(".loading-spinner");var G=false;if(D){G=F.attr("checked",true)}E.bind("click.checkbox",function(I){B.call(this,E,F,H,G);return false})})};$.fn.isNewListLink=function(){return this.click(function(){var A=$(this).parents(".user");if(A.length==0){A=null}$(this).parent(".ul").remove();openListDialog(true,{userObject:A});return false})};$.fn.isEditListLink=function(){return this.click(function(){openListDialog(false,$(this).meta());return false})};var openListDialog=function(D,F){if(!F){F={}}var G=$("#list_dialog");var B=$(G.html());var A=new twttr.dialog(false,{closeButton:true,content:B,heading:$($("#list_dialog_header").html()),modal:true,width:"405px"});A.bind("close",function(){A.$root.remove()});var E="";A.$root.addClass("list-dialog");if(D){A.$root.addClass("create-list-dialog")}else{E=F.description;A.$root.addClass("update-list-dialog").find('input[type="submit"]').val(_("Update list")).end().find(".list-name").val(F.name).end().find(".list-slug-title-and-slug").show().end().find(".list-description").val(E).end().find(".list-link span").text(F.slug).end().find('input[name="list[mode]"][value="'+numeric_mode(F.mode)+'"]').attr("checked",true);var C=A.find(".private-warning");A.find('input[name="list[mode]"]').change(function(){if(this.value==numeric_mode(LIST_PRIVATE_MODE)&&this.checked){C.show()}else{C.hide()}})}$(".list-description",A.$root).maxLength(LIST_MAX_DESCRIPTION_LENGTH-2);A.find(".list-name").focus();A.$root.isListDialog(D,F,A);A.open()};$.fn.isListDialog=function(C,A,B){return this.each(function(){var G=$(this);var F=A.userObject;var D=G.find("form");D.find(".list-name").one("keyup",function(){console.log("keyup");$(this).siblings(".list-slug-title-and-slug").show()}).isSlugField(D.find(".list-slug-field"),D.find(".list-link span"));if(F){D.find(".list-member-id").val(F.userId())}var E=$(this).find('input[type="submit"]');D.submit(function(I){var H=D.serialize();if(!C){H+="&"+$('<input type="hidden" name="_method" value="PUT" />').serialize()}$.ajax({type:"POST",dataType:"json",url:C?D.attr("action"):A.uri,data:H,beforeSend:function(){E.attr("disabled","disabled")},success:function(J){B.close();B.$root.remove();if(C){addListToMenu(J);if(F){addListToUser(F,J)}addListToLists(J);(new ShortNotification()).setMessage(_("Yay! Your list was created.")).show()}else{window.location=J.uri}},error:function(J){(new InfoNotification()).setMessage(J.responseText).show()},complete:function(){E.removeAttr("disabled","disabled")}});I.preventDefault()})})};$.fn.isDestroyListLink=function(){return this.click(function(D){var C=$(this);var A=C.next("form");var B=A.attr("action");if(confirm(_("Are sure you want to delete this list? There is NO undo!"))){$.ajax({url:B,type:"POST",dataType:"json",data:{_method:"delete",authenticity_token:twttr.form_authenticity_token,twttr:true},beforeSend:function(){C.disable()},success:function(){document.location="/"},error:function(){C.enable()}})}return false})};$.fn.isSubscribeListLink=function(){return this.click(function(B){var A=$(this);$.ajax({url:A.attr("href"),type:"POST",dataType:"json",data:{authenticity_token:twttr.form_authenticity_token,twttr:true},beforeSend:function(){A.disable()},complete:function(){A.enable()},success:function(){A.parents(".list").addClass("subscriber");updateListFollowersCount(1)},error:function(){A.parents(".list").removeClass("subscriber")}});return false})};$.fn.isUnsubscribeListLink=function(){return this.click(function(B){var A=$(this);$.ajax({url:A.attr("href"),type:"POST",dataType:"json",data:{_method:"delete",authenticity_token:twttr.form_authenticity_token,twttr:true},success:function(){A.parents(".list").removeClass("subscriber");var C=$("#lists_subscribers #follow_grid #user_"+page.sessionUserId);fadeUserOnListUnfollow(C);updateListFollowersCount(-1)},error:function(){A.parents(".list").addClass("subscriber")}});B.preventDefault()})};$.fn.isListInPageLink=function(){return this.each(function(){var A=$(this);A.isInPageLink(setTimelineForListInPageLink)})};var setTimelineForListInPageLink=function(A){$("#timeline_heading").show();var E=$("#timeline_heading h1");var D=$("#timeline_heading h2");var C=A.meta();var B=h(C.uri);var F=listDisplayName(C);D.remove();E.html(F);E.after('<h2 class="list-subheading"><p class="list-numbers"><a href="'+B+'/members">'+_("Following:")+" <span>"+h(C.member_count)+"</span></a>"+(C.mode==LIST_PRIVATE_MODE?"":'<a href="'+B+'/subscribers">'+_("Followers:")+" <span>"+h(C.subscriber_count)+"</span></a>")+'</p><p class="list-link"><a href="'+B+'">'+_("View list page")+"<span> Ã¢\80º</span></a></p></h2>");if(C.member_count==0){$("#timeline_heading h2").append($(C.user==page.sessionUserScreenName?"#list_no_members_owner":"#list_no_members").html())}setDocumentTitle("Twitter / "+C.full_name)};var addListToUser=function(B,A){return B.each(function(){if(findListIndexBySlug(B.meta().lists,A.slug).length==0){B.meta().lists.push(A);if(B.find(".list-tags").length>0){B.find(".list-tags-outer:hidden").show();B.find(".list-tags").append(linkToList(A))}}})};var removeListFromUser=function(B,A){$.each(findListIndexBySlug(B.meta().lists,A.slug),function(){Array.remove(B.meta().lists,this);B.find(".list-tags .list_"+A.id).each(function(){$(this).parent("li").remove()});if(B.meta().lists.length==0){B.find(".list-tags-outer:visible").hide()}})};var addListToMenu=function(B){var A=$("#list_menu");A.find(".new-list").before('<li><img class="loading-spinner" src="http://s.twimg.com/a/1267135446/images/spinner.gif" style="display: none;" alt="waiting" title="waiting" height="14" width="14"/><input type="checkbox" id="list_'+B.id+'" data="'+h(JSON.stringify(B))+'" /> <label for="list_'+B.id+'">'+h(B.name)+lockIconForList(B)+"</label></li>")};var isInPageLists=function(){return $("#side_lists.in-page-lists").length==1};var addListToLists=function(C){var B=isInPageLists();var A=$("ul.lists-links").siblings(".no-lists").remove().end().append(linkToList(C,B)).find(".list_"+C.id);if(B){A.addClass("in-page-list-link").isListInPageLink().isSidebarTab().click()}};var bindAdminListActions=function(){$("#admin_list a.destroy-list").isDestroyListLink();$("#admin_list a.edit-list").isEditListLink()};var isMoreButton=function(){$("#lists_pagination #more").live("click",basicMoreButtonHandler({beforeSend:function(){$("#more").addClass("loading").html("")},success:function(A){$("#lists_table tbody").append($(A["#lists"]));$("#lists_pagination").html(A["#pagination"])},error:function(){$("#more").removeClass("loading").text(_("more"));(new ShortNotification()).setMessage(_("Whoops! Something went wrong. Please try again!")).show()}}))};$.fn.equals=function(A){return this.length==1&&A.length==1&&this.get(0)==A.get(0)};$.fn.hasParent=function(A){return jQuery.inArray(A[0],this.parents())>-1};function InlineForm(A){this.initialize(A)}jQuery.extend(InlineForm.prototype,{defaultOptions:{title:"",submitBtnValue:"",showCancel:true,closeOnOutsideClick:true,formClass:"",timelineChangedEvents:false,pageHeightChangedEvents:false},overrideDefaultOptions:{},initialize:function(A){this.options=jQuery.extend({},this.defaultOptions);jQuery.extend(this.options,this.overrideDefaultOptions);jQuery.extend(this.options,A);this.$form=$('<div class="inline-form '+this.options.formClass+'"></div>');this.$buttonParent=$('<div class="inline-form-buttons"></div>');this.$button=$('<button type="button" class="btn">'+this.options.submitBtnValue+"</button>");if(this.options.showCancel){this.$cancel=$('<span class="cancel">&nbsp;</span>')}this.$form_inner=$('<div class="inline-form-inner"></div>');this.$input=$('<textarea class="inline-form-input"></textarea>');this.$inputsPrompt=$('<div class="inline-inputs-prompt"></div>');this.$title=$('<div class="title">'+this.options.title+"</div>");this.$body=$('<div class="body">'+(this.options.body||"")+"</div>");this.initEvents()},initEvents:function(){this.buttonEvent=this.submitForm.pBind(this);this.closeEvent=this.close.pBind(this);this.outsideClickEvent=this.destroyFromEvent.pBind(this);this.timelineEvent=this.timelineEvent.pBind(this);if(this.options.timelineChangedEvents){$.Timeline.registerTimelineEvent(this.timelineEvent)}if(this.options.pageHeightChangedEvents){this.pageHeightChangedEvent=this.pageHeightChangedEvent.pBind(this);$.Timeline.registerPageHeightChangedEvent(this.pageHeightChangedEvent)}},addEvents:function(){this.$button.click(this.buttonEvent);if(this.options.showCancel){this.$cancel.click(this.closeEvent)}if(this.options.closeOnOutsideClick){$(window).click(this.outsideClickEvent)}},removeEvents:function(){this.$button.unbind("click",this.buttonEvent);if(this.options.showCancel){this.$cancel.unbind("click",this.closeEvent)}if(this.options.closeOnOutsideClick){$(window).unbind("click",this.outsideClickEvent)}if(this.options.timelineChangedEvents){$.Timeline.unregisterTimelineEvent(this.timelineEvent)}$.Timeline.unregisterPageHeightChangedEvent(this.pageHeightChangedEvent)},onSendError:function(A){if(this.sendNotification){this.sendNotification.cancel()}(new InfoNotification()).setMessage(_("Whoops! Something went wrong. Please refresh the page and try again!")).show();this.close()},onSendSuccess:function(A){},formAction:function(){},timelineEvent:function(){},pageHeightChangedEvent:function(){this.positionForm()},postData:function(){},beforePost:function(){},onComplete:function(){},submitForm:function(){this.$button.disable();var A={authenticity_token:twttr.form_authenticity_token};jQuery.extend(A,this.postData());if(this.progressNotificationText){this.sendNotification=(new ProgressNotification()).setProgressMessage(this.progressNotificationText).setCompletedMessage(_("Ok, done.")).show()}this.beforePost();$.ajax({type:"POST",dataType:"json",dataFilter:function(B){if(!jQuery.trim(B)){return null}return B},url:this.formAction(),data:A,error:function(B){this.onSendError(B)}.pBind(this),success:function(B){this.onSendSuccess(B);this.close();if(this.sendNotification){this.sendNotification.done()}}.pBind(this),beforeSend:twttr.loading,complete:function(){twttr.loaded();this.onComplete()}.pBind(this)})},arrange:function(){var A=$('<div class="inline-form-inputs"></div>');if(this.options.showCancel){this.$buttonParent.append(this.$cancel)}this.$buttonParent.append(this.$button);this.$form_inner.append(A.append(this.$title).append(this.$body).append(this.$inputsPrompt).append(this.$input)).append(this.$buttonParent);this.$form.append(this.$form_inner);this.$form.hide();this.baseElement().append(this.$form)},baseElement:function(){return this.$parentNode||$(document.body)},show:function(A){this.addEvents();this.$targetNode=A.targetNode;this.$parentNode=A.parentNode;this.positionForm();this.arrange();this.$form.fadeIn(100);this.currentlyShown=true;this.afterShow()},afterShow:function(){},positionForm:function(){if(this.$targetNode&&this.$targetNode.width()>0){var C=this.position();var B=C[0];var A=C[1];this.$form.css("top",B).css("left",A)}else{this.close()}},close:function(){this.removeEvents();this.$form.remove();this.currentlyShown=false;this.afterClose()},afterClose:function(){},destroyFromEvent:function(B){var A=$(B.target);if(A.equals(this.$targetNode)||jQuery.inArray(this.$targetNode.get(0),A.parents())!=-1||A.equals(this.$form)||A.hasParent(this.$form)){return }this.close()},position:function(){var A=this.$targetNode.offset();return[A.top,A.left]}});RetweetInlineForm=function(){var A=_("Yes");var B=_("Retweet to your followers?");this.initialize({title:B,submitBtnValue:A})};RetweetInlineForm.prototype=new InlineForm();jQuery.extend(RetweetInlineForm.prototype,{overrideDefaultOptions:{formClass:"retweet-dlg",pageHeightChangedEvents:true},formAction:function(){var B=getListItemFromChild(this.$targetNode);var A=getStatusIdFromListItem(B);return"/statuses/"+A+"/retweet"},postData:function(){return{controller_name:page.controller_name,action_name:page.action_name}},beforePost:function(){this.close();twttr.setRetweetingStyles(this.$targetNode,_("Updating..."))},onSendSuccess:function(A){twttr.animateStatusReplacement(this.$targetNode,A)},onComplete:function(){twttr.unsetRetweetingStyles(this.$targetNode)},afterShow:function(){getListItemFromChild(this.$targetNode).addClass("perma-hover");this.$targetNode.find("a").blur()},afterClose:function(){getListItemFromChild(this.$targetNode).removeClass("perma-hover")},position:function(){var A=this.$targetNode.offset();return[parseInt(A.top)+20,parseInt(A.left)-220]}});RetweetContextDlgForm=function(){var B=_("Close");var C=_("Wondering who this is?");var A=_('Someone you follow thought this was worth retweeting, which is why you are seeing it in your Home timeline. <a target="_blank" href="http://help.twitter.com/forums/10711/entries/77606">Learn more</a>.');this.initialize({title:C,body:A,submitBtnValue:B})};RetweetContextDlgForm.prototype=new InlineForm();jQuery.extend(RetweetContextDlgForm.prototype,{overrideDefaultOptions:{showCancel:false,closeOnOutsideClick:false,formClass:"retweet-ctx-dlg",timelineChangedEvents:true},formAction:function(){return"/users/"+page.sessionUserId},postData:function(){return{_method:"put","user[has_dismissed_retweet_contextual_dialog]":"1"}},position:function(){return[this.$parentNode.height(),-9]},timelineEvent:function(){if(!this.currentlyShown){this.showIfElementExists()}},afterShow:function(){this.$targetNode.css("z-index","300");var A=parseInt($.cookie("retweet_contextual_count"))||0;if(A<5){$.cookie("retweet_contextual_count",A+1)}else{this.close();this.submitForm();$.cookie("retweet_contextual_count",null)}},afterClose:function(){this.$targetNode.css("z-index",null)},showIfElementExists:function(){var A=$(".rt-dlg");if(A.length){this.show({targetNode:A,parentNode:A})}}});$(document).ready(function(){new RetweetContextDlgForm().showIfElementExists()});$(document).ready(function(){try{var A="share-text-active";$(".status").each(function(){var E=$(this);var C=E.find(".retweet-link");var D=E.find(".share-text");C.hover(function(){D.addClass(A)},function(){D.removeClass(A)})})}catch(B){}});(function(){jQuery.inherits=function(A,C){function B(){}B.prototype=C.prototype;A.prototype=new B();A.prototype.constructor=A}})();(function(){jQuery.fn.equals=function(A){return this.get(0)==A.get(0)}})();(function(){jQuery.fn.hasParent=function(A){var B=false;this.parents().map(function(){if($(this).equals(A)){B=true}});return B}})();function Notification(B){this.$bar=jQuery('<div class="notification-bar"></div>');this.$barContainer=jQuery('<div class="notification-bar-container"></div>');this.$barContents=jQuery('<div class="notification-bar-contents"></div>');this.$barBackground=jQuery('<div class="notification-bar-bkg"></div>');this.$message=jQuery('<div class="message"></div>');this.$bar.hide();this.$barBackground.hide();var A=this;this.$bar.click(function(C){A.removeAfterEvent(C)});this.className=B}Notification.SLIDE_SPEED_IN_MS=300;Notification.prototype.remove=function(){var A=this;this.slideUp(function(){A.$bar.remove();A.$barBackground.remove();window.clearTimeout(A.timeout)})};Notification.prototype.removeAfterEvent=function(B){var A=$(B.target);if(A.get(0).nodeName.toLowerCase()=="a"&&A.hasParent(this.$message)){return }this.remove()};Notification.prototype.setMessage=function(A){this.msg=A;return this};Notification.prototype.show=function(){this.$message.addClass(this.className).html(this.msg);this.$barContainer.append(this.$barBackground).append(this.$bar.append(this.$barContents.append(this.$message)));jQuery("#notifications").append(this.$barContainer);this.$barBackground.height(this.$bar.height());this.showBar();if(this.onShow){this.onShow()}return this};Notification.prototype.removeInMilliseconds=function(){var A=this;this.timeout=window.setTimeout(function(){A.remove()},A.timeoutInMilliseconds)};Notification.prototype.showBar=function(){this.$bar.show();this.$barBackground.show()};Notification.prototype.onShow=function(){this.removeInMilliseconds()};Notification.prototype.slideUp=function(A){this.$bar.slideUp(Notification.SLIDE_SPEED_IN_MS);this.$barBackground.slideUp(Notification.SLIDE_SPEED_IN_MS,A)};function ShortNotification(){Notification.call(this,"message-info");this.timeoutInMilliseconds=3000}jQuery.inherits(ShortNotification,Notification);ShortNotification.prototype.showBar=function(){this.$bar.slideDown(Notification.SLIDE_SPEED_IN_MS);this.$barBackground.slideDown(Notification.SLIDE_SPEED_IN_MS)};function InfoNotification(){Notification.call(this,"message-info");this.timeoutInMilliseconds=6000}jQuery.inherits(InfoNotification,Notification);InfoNotification.prototype.showBar=function(){this.$bar.slideDown(Notification.SLIDE_SPEED_IN_MS);this.$barBackground.slideDown(Notification.SLIDE_SPEED_IN_MS)};function ProgressNotification(){Notification.call(this,"message-progress");this.timeoutInMilliseconds=1000}jQuery.inherits(ProgressNotification,Notification);ProgressNotification.prototype.setProgressMessage=function(A){return this.setMessage(A)};ProgressNotification.prototype.setCompletedMessage=function(A){this.completedMsg=A;return this};ProgressNotification.prototype.onShow=function(){};ProgressNotification.prototype.cancel=function(){this.timeoutInMilliseconds=0;this.removeInMilliseconds()};ProgressNotification.prototype.done=function(){this.$message.addClass("message-progress-done").removeClass(this.className).html(this.completedMsg);this.removeInMilliseconds()};function ErrorNotification(){Notification.call(this,"message-error");this.timeoutInMilliseconds=8000}jQuery.inherits(ErrorNotification,Notification);function Occasionally(A,D,C,B,E){this.interval=A;this.maxDecayTime=D;this.job=C;this.decayCallback=B;this.timesRun=0;this.decayRate=1;this.decayMultiplier=E||1.25;this.maxRequests=360}Occasionally.prototype.start=function(){this.stop();this.run()};Occasionally.prototype.stop=function(){if(this.worker){window.clearTimeout(this.worker)}};Occasionally.prototype.run=function(){var A=this;this.decayRate=this.decayCallback()?Math.max(1,this.decayRate/this.decayMultiplier):this.decayRate*this.decayMultiplier;var B=this.interval*this.decayRate;B=(B>=this.maxDecayTime)?this.maxDecayTime:B;this.worker=window.setTimeout(function(){A.execute()},Math.floor(B))};Occasionally.prototype.execute=function(){this.job();if(++this.timesRun<this.maxRequests){this.run()}};twttr.countClick=function(){var A=twttr.createTrackingParameters(this);twttr.asyncClickCount(A)};twttr.asyncClickCount=function(A){(new Image()).src="/abacus?"+$.param(A)};twttr.createTrackingParameters=function(F){var B=$(F);var A=function(){var K=B.attr("class");var I=["hashtag","profile-pic","screen-name","username","web"];for(var J in I){if(K.indexOf(I[J])!==-1){return I[J]}}}();var E=B.closest(".status").find(".meta").children("a").get(0).href.split("/");var G=E[E.length-1];var H=$('meta[name="session-userid"]');var D=H.attr("content")||-1;var C=twttr.form_authenticity_token||$('input[name="authenticity_token"]').attr("value");return{url:F.href,linkType:A,tweetId:G,userId:D,authenticity_token:C,time:(new Date).getTime()}};$(document).ready(function(){var A=$("#content a.tweet-url");A.live("mousedown",twttr.countClick)});/*\r
43649     http://www.JSON.org/json2.js\r
43650     2009-09-21\r
43651 \r
43652     Public Domain.\r
43653 \r
43654     NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\r
43655 \r
43656     See http://www.JSON.org/js.html\r
43657 \r
43658     This file creates a global JSON object containing two methods: stringify\r
43659     and parse.\r
43660 \r
43661         JSON.stringify(value, replacer, space)\r
43662             value       any JavaScript value, usually an object or array.\r
43663 \r
43664             replacer    an optional parameter that determines how object\r
43665                         values are stringified for objects. It can be a\r
43666                         function or an array of strings.\r
43667 \r
43668             space       an optional parameter that specifies the indentation\r
43669                         of nested structures. If it is omitted, the text will\r
43670                         be packed without extra whitespace. If it is a number,\r
43671                         it will specify the number of spaces to indent at each\r
43672                         level. If it is a string (such as '\t' or '&nbsp;'),\r
43673                         it contains the characters used to indent at each level.\r
43674 \r
43675             This method produces a JSON text from a JavaScript value.\r
43676 \r
43677             When an object value is found, if the object contains a toJSON\r
43678             method, its toJSON method will be called and the result will be\r
43679             stringified. A toJSON method does not serialize: it returns the\r
43680             value represented by the name/value pair that should be serialized,\r
43681             or undefined if nothing should be serialized. The toJSON method\r
43682             will be passed the key associated with the value, and this will be\r
43683             bound to the value\r
43684 \r
43685             For example, this would serialize Dates as ISO strings.\r
43686 \r
43687                 Date.prototype.toJSON = function (key) {\r
43688                     function f(n) {\r
43689                         // Format integers to have at least two digits.\r
43690                         return n < 10 ? '0' + n : n;\r
43691                     }\r
43692 \r
43693                     return this.getUTCFullYear()   + '-' +\r
43694                          f(this.getUTCMonth() + 1) + '-' +\r
43695                          f(this.getUTCDate())      + 'T' +\r
43696                          f(this.getUTCHours())     + ':' +\r
43697                          f(this.getUTCMinutes())   + ':' +\r
43698                          f(this.getUTCSeconds())   + 'Z';\r
43699                 };\r
43700 \r
43701             You can provide an optional replacer method. It will be passed the\r
43702             key and value of each member, with this bound to the containing\r
43703             object. The value that is returned from your method will be\r
43704             serialized. If your method returns undefined, then the member will\r
43705             be excluded from the serialization.\r
43706 \r
43707             If the replacer parameter is an array of strings, then it will be\r
43708             used to select the members to be serialized. It filters the results\r
43709             such that only members with keys listed in the replacer array are\r
43710             stringified.\r
43711 \r
43712             Values that do not have JSON representations, such as undefined or\r
43713             functions, will not be serialized. Such values in objects will be\r
43714             dropped; in arrays they will be replaced with null. You can use\r
43715             a replacer function to replace those with JSON values.\r
43716             JSON.stringify(undefined) returns undefined.\r
43717 \r
43718             The optional space parameter produces a stringification of the\r
43719             value that is filled with line breaks and indentation to make it\r
43720             easier to read.\r
43721 \r
43722             If the space parameter is a non-empty string, then that string will\r
43723             be used for indentation. If the space parameter is a number, then\r
43724             the indentation will be that many spaces.\r
43725 \r
43726             Example:\r
43727 \r
43728             text = JSON.stringify(['e', {pluribus: 'unum'}]);\r
43729             // text is '["e",{"pluribus":"unum"}]'\r
43730 \r
43731 \r
43732             text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');\r
43733             // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'\r
43734 \r
43735             text = JSON.stringify([new Date()], function (key, value) {\r
43736                 return this[key] instanceof Date ?\r
43737                     'Date(' + this[key] + ')' : value;\r
43738             });\r
43739             // text is '["Date(---current time---)"]'\r
43740 \r
43741 \r
43742         JSON.parse(text, reviver)\r
43743             This method parses a JSON text to produce an object or array.\r
43744             It can throw a SyntaxError exception.\r
43745 \r
43746             The optional reviver parameter is a function that can filter and\r
43747             transform the results. It receives each of the keys and values,\r
43748             and its return value is used instead of the original value.\r
43749             If it returns what it received, then the structure is not modified.\r
43750             If it returns undefined then the member is deleted.\r
43751 \r
43752             Example:\r
43753 \r
43754             // Parse the text. Values that look like ISO date strings will\r
43755             // be converted to Date objects.\r
43756 \r
43757             myData = JSON.parse(text, function (key, value) {\r
43758                 var a;\r
43759                 if (typeof value === 'string') {\r
43760                     a =\r
43761 /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);\r
43762                     if (a) {\r
43763                         return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\r
43764                             +a[5], +a[6]));\r
43765                     }\r
43766                 }\r
43767                 return value;\r
43768             });\r
43769 \r
43770             myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {\r
43771                 var d;\r
43772                 if (typeof value === 'string' &&\r
43773                         value.slice(0, 5) === 'Date(' &&\r
43774                         value.slice(-1) === ')') {\r
43775                     d = new Date(value.slice(5, -1));\r
43776                     if (d) {\r
43777                         return d;\r
43778                     }\r
43779                 }\r
43780                 return value;\r
43781             });\r
43782 \r
43783 \r
43784     This is a reference implementation. You are free to copy, modify, or\r
43785     redistribute.\r
43786 \r
43787     This code should be minified before deployment.\r
43788     See http://javascript.crockford.com/jsmin.html\r
43789 \r
43790     USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\r
43791     NOT CONTROL.\r
43792 */\r
43793 \r
43794 /*jslint evil: true */\r
43795 \r
43796 /*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,\r
43797     call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\r
43798     getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\r
43799     lastIndex, length, parse, prototype, push, replace, slice, stringify,\r
43800     test, toJSON, toString, valueOf\r
43801 */\r
43802 \r
43803 \r
43804 // Create a JSON object only if one does not already exist. We create the\r
43805 // methods in a closure to avoid creating global variables.\r
43806 \r
43807 if (!this.JSON) {\r
43808     this.JSON = {};\r
43809 }\r
43810 \r
43811 (function () {\r
43812 \r
43813     function f(n) {\r
43814         // Format integers to have at least two digits.\r
43815         return n < 10 ? '0' + n : n;\r
43816     }\r
43817 \r
43818     if (typeof Date.prototype.toJSON !== 'function') {\r
43819 \r
43820         Date.prototype.toJSON = function (key) {\r
43821 \r
43822             return isFinite(this.valueOf()) ?\r
43823                    this.getUTCFullYear()   + '-' +\r
43824                  f(this.getUTCMonth() + 1) + '-' +\r
43825                  f(this.getUTCDate())      + 'T' +\r
43826                  f(this.getUTCHours())     + ':' +\r
43827                  f(this.getUTCMinutes())   + ':' +\r
43828                  f(this.getUTCSeconds())   + 'Z' : null;\r
43829         };\r
43830 \r
43831         String.prototype.toJSON =\r
43832         Number.prototype.toJSON =\r
43833         Boolean.prototype.toJSON = function (key) {\r
43834             return this.valueOf();\r
43835         };\r
43836     }\r
43837 \r
43838     var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,\r
43839         escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,\r
43840         gap,\r
43841         indent,\r
43842         meta = {    // table of character substitutions\r
43843             '\b': '\\b',\r
43844             '\t': '\\t',\r
43845             '\n': '\\n',\r
43846             '\f': '\\f',\r
43847             '\r': '\\r',\r
43848             '"' : '\\"',\r
43849             '\\': '\\\\'\r
43850         },\r
43851         rep;\r
43852 \r
43853 \r
43854     function quote(string) {\r
43855 \r
43856 // If the string contains no control characters, no quote characters, and no\r
43857 // backslash characters, then we can safely slap some quotes around it.\r
43858 // Otherwise we must also replace the offending characters with safe escape\r
43859 // sequences.\r
43860 \r
43861         escapable.lastIndex = 0;\r
43862         return escapable.test(string) ?\r
43863             '"' + string.replace(escapable, function (a) {\r
43864                 var c = meta[a];\r
43865                 return typeof c === 'string' ? c :\r
43866                     '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\r
43867             }) + '"' :\r
43868             '"' + string + '"';\r
43869     }\r
43870 \r
43871 \r
43872     function str(key, holder) {\r
43873 \r
43874 // Produce a string from holder[key].\r
43875 \r
43876         var i,          // The loop counter.\r
43877             k,          // The member key.\r
43878             v,          // The member value.\r
43879             length,\r
43880             mind = gap,\r
43881             partial,\r
43882             value = holder[key];\r
43883 \r
43884 // If the value has a toJSON method, call it to obtain a replacement value.\r
43885 \r
43886         if (value && typeof value === 'object' &&\r
43887                 typeof value.toJSON === 'function') {\r
43888             value = value.toJSON(key);\r
43889         }\r
43890 \r
43891 // If we were called with a replacer function, then call the replacer to\r
43892 // obtain a replacement value.\r
43893 \r
43894         if (typeof rep === 'function') {\r
43895             value = rep.call(holder, key, value);\r
43896         }\r
43897 \r
43898 // What happens next depends on the value's type.\r
43899 \r
43900         switch (typeof value) {\r
43901         case 'string':\r
43902             return quote(value);\r
43903 \r
43904         case 'number':\r
43905 \r
43906 // JSON numbers must be finite. Encode non-finite numbers as null.\r
43907 \r
43908             return isFinite(value) ? String(value) : 'null';\r
43909 \r
43910         case 'boolean':\r
43911         case 'null':\r
43912 \r
43913 // If the value is a boolean or null, convert it to a string. Note:\r
43914 // typeof null does not produce 'null'. The case is included here in\r
43915 // the remote chance that this gets fixed someday.\r
43916 \r
43917             return String(value);\r
43918 \r
43919 // If the type is 'object', we might be dealing with an object or an array or\r
43920 // null.\r
43921 \r
43922         case 'object':\r
43923 \r
43924 // Due to a specification blunder in ECMAScript, typeof null is 'object',\r
43925 // so watch out for that case.\r
43926 \r
43927             if (!value) {\r
43928                 return 'null';\r
43929             }\r
43930 \r
43931 // Make an array to hold the partial results of stringifying this object value.\r
43932 \r
43933             gap += indent;\r
43934             partial = [];\r
43935 \r
43936 // Is the value an array?\r
43937 \r
43938             if (Object.prototype.toString.apply(value) === '[object Array]') {\r
43939 \r
43940 // The value is an array. Stringify every element. Use null as a placeholder\r
43941 // for non-JSON values.\r
43942 \r
43943                 length = value.length;\r
43944                 for (i = 0; i < length; i += 1) {\r
43945                     partial[i] = str(i, value) || 'null';\r
43946                 }\r
43947 \r
43948 // Join all of the elements together, separated with commas, and wrap them in\r
43949 // brackets.\r
43950 \r
43951                 v = partial.length === 0 ? '[]' :\r
43952                     gap ? '[\n' + gap +\r
43953                             partial.join(',\n' + gap) + '\n' +\r
43954                                 mind + ']' :\r
43955                           '[' + partial.join(',') + ']';\r
43956                 gap = mind;\r
43957                 return v;\r
43958             }\r
43959 \r
43960 // If the replacer is an array, use it to select the members to be stringified.\r
43961 \r
43962             if (rep && typeof rep === 'object') {\r
43963                 length = rep.length;\r
43964                 for (i = 0; i < length; i += 1) {\r
43965                     k = rep[i];\r
43966                     if (typeof k === 'string') {\r
43967                         v = str(k, value);\r
43968                         if (v) {\r
43969                             partial.push(quote(k) + (gap ? ': ' : ':') + v);\r
43970                         }\r
43971                     }\r
43972                 }\r
43973             } else {\r
43974 \r
43975 // Otherwise, iterate through all of the keys in the object.\r
43976 \r
43977                 for (k in value) {\r
43978                     if (Object.hasOwnProperty.call(value, k)) {\r
43979                         v = str(k, value);\r
43980                         if (v) {\r
43981                             partial.push(quote(k) + (gap ? ': ' : ':') + v);\r
43982                         }\r
43983                     }\r
43984                 }\r
43985             }\r
43986 \r
43987 // Join all of the member texts together, separated with commas,\r
43988 // and wrap them in braces.\r
43989 \r
43990             v = partial.length === 0 ? '{}' :\r
43991                 gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +\r
43992                         mind + '}' : '{' + partial.join(',') + '}';\r
43993             gap = mind;\r
43994             return v;\r
43995         }\r
43996     }\r
43997 \r
43998 // If the JSON object does not yet have a stringify method, give it one.\r
43999 \r
44000     if (typeof JSON.stringify !== 'function') {\r
44001         JSON.stringify = function (value, replacer, space) {\r
44002 \r
44003 // The stringify method takes a value and an optional replacer, and an optional\r
44004 // space parameter, and returns a JSON text. The replacer can be a function\r
44005 // that can replace values, or an array of strings that will select the keys.\r
44006 // A default replacer method can be provided. Use of the space parameter can\r
44007 // produce text that is more easily readable.\r
44008 \r
44009             var i;\r
44010             gap = '';\r
44011             indent = '';\r
44012 \r
44013 // If the space parameter is a number, make an indent string containing that\r
44014 // many spaces.\r
44015 \r
44016             if (typeof space === 'number') {\r
44017                 for (i = 0; i < space; i += 1) {\r
44018                     indent += ' ';\r
44019                 }\r
44020 \r
44021 // If the space parameter is a string, it will be used as the indent string.\r
44022 \r
44023             } else if (typeof space === 'string') {\r
44024                 indent = space;\r
44025             }\r
44026 \r
44027 // If there is a replacer, it must be a function or an array.\r
44028 // Otherwise, throw an error.\r
44029 \r
44030             rep = replacer;\r
44031             if (replacer && typeof replacer !== 'function' &&\r
44032                     (typeof replacer !== 'object' ||\r
44033                      typeof replacer.length !== 'number')) {\r
44034                 throw new Error('JSON.stringify');\r
44035             }\r
44036 \r
44037 // Make a fake root object containing our value under the key of ''.\r
44038 // Return the result of stringifying the value.\r
44039 \r
44040             return str('', {'': value});\r
44041         };\r
44042     }\r
44043 \r
44044 \r
44045 // If the JSON object does not yet have a parse method, give it one.\r
44046 \r
44047     if (typeof JSON.parse !== 'function') {\r
44048         JSON.parse = function (text, reviver) {\r
44049 \r
44050 // The parse method takes a text and an optional reviver function, and returns\r
44051 // a JavaScript value if the text is a valid JSON text.\r
44052 \r
44053             var j;\r
44054 \r
44055             function walk(holder, key) {\r
44056 \r
44057 // The walk method is used to recursively walk the resulting structure so\r
44058 // that modifications can be made.\r
44059 \r
44060                 var k, v, value = holder[key];\r
44061                 if (value && typeof value === 'object') {\r
44062                     for (k in value) {\r
44063                         if (Object.hasOwnProperty.call(value, k)) {\r
44064                             v = walk(value, k);\r
44065                             if (v !== undefined) {\r
44066                                 value[k] = v;\r
44067                             } else {\r
44068                                 delete value[k];\r
44069                             }\r
44070                         }\r
44071                     }\r
44072                 }\r
44073                 return reviver.call(holder, key, value);\r
44074             }\r
44075 \r
44076 \r
44077 // Parsing happens in four stages. In the first stage, we replace certain\r
44078 // Unicode characters with escape sequences. JavaScript handles many characters\r
44079 // incorrectly, either silently deleting them, or treating them as line endings.\r
44080 \r
44081             cx.lastIndex = 0;\r
44082             if (cx.test(text)) {\r
44083                 text = text.replace(cx, function (a) {\r
44084                     return '\\u' +\r
44085                         ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\r
44086                 });\r
44087             }\r
44088 \r
44089 // In the second stage, we run the text against regular expressions that look\r
44090 // for non-JSON patterns. We are especially concerned with '()' and 'new'\r
44091 // because they can cause invocation, and '=' because it can cause mutation.\r
44092 // But just to be safe, we want to reject all unexpected forms.\r
44093 \r
44094 // We split the second stage into 4 regexp operations in order to work around\r
44095 // crippling inefficiencies in IE's and Safari's regexp engines. First we\r
44096 // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we\r
44097 // replace all simple value tokens with ']' characters. Third, we delete all\r
44098 // open brackets that follow a colon or comma or that begin the text. Finally,\r
44099 // we look to see that the remaining characters are only whitespace or ']' or\r
44100 // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.\r
44101 \r
44102             if (/^[\],:{}\s]*$/.\r
44103 test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').\r
44104 replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').\r
44105 replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {\r
44106 \r
44107 // In the third stage we use the eval function to compile the text into a\r
44108 // JavaScript structure. The '{' operator is subject to a syntactic ambiguity\r
44109 // in JavaScript: it can begin a block or an object literal. We wrap the text\r
44110 // in parens to eliminate the ambiguity.\r
44111 \r
44112                 j = eval('(' + text + ')');\r
44113 \r
44114 // In the optional fourth stage, we recursively walk the new structure, passing\r
44115 // each name/value pair to a reviver function for possible transformation.\r
44116 \r
44117                 return typeof reviver === 'function' ?\r
44118                     walk({'': j}, '') : j;\r
44119             }\r
44120 \r
44121 // If the text is not JSON parseable, then a SyntaxError is thrown.\r
44122 \r
44123             throw new SyntaxError('JSON.parse');\r
44124         };\r
44125     }\r
44126 }());\r
44127 function scribe(A,C,B){B=B||{};if(window.DARKMODE_SCRIBE){return this}if(typeof (A)=="function"){A=A.call(this)}var D={log:JSON.stringify(A)};if(B.filter){D.filter=B.filter}if(C){D.category=C}(new Image()).src="/scribe?"+$.param($.extend(D,{ts:(new Date()).getTime()}))}(function(A){A.extend(A.fn,{scribe:function(C,E,D){var B=this;D=D||{};this[(D.clientEvent||"mousedown")](function(F){window.scribe.call(this,C,E,D)});return this}})})(jQuery);twttr.position={relativeTo:function(I,H,A){var F,G;A=(A||{});F=G=H.offset();G.gravity=A.gravity;G.weight=A.weight;var D={height:H.height(),width:H.width()};var C={height:$(window).height(),width:$(window).width()};var E={height:$("body").height(),width:$("body").width()};var B={height:I.height(),width:I.width()};if(!G.gravity){G.gravity="vertical"}if("vertical,north,south".indexOf(G.gravity)!=-1){if("right,left,center".indexOf(G.weight)==-1){G.weight=(F.left>C.width/2)?"right":"left"}if(G.gravity=="vertical"){G.gravity=((F.top+B.height)>($(window).scrollTop()+C.height))?"south":"north"}if(G.weight=="right"){G.left=F.left-B.width+D.width}else{if(G.weight=="center"){G.left=F.left-(B.width/2)}}G.top=(G.gravity=="north")?(G.top+D.height):(G.top-B.height)}if("horizontal,east,west".indexOf(G.gravity)!=-1){if("top,bottom,center".indexOf(G.weight)==-1){if((F.top-(B.height/2))<0){G.weight="top"}else{if((F.top+(B.height/2))>Math.max(C.height,E.height)){G.weight="bottom"}else{G.weight="center"}}}if(G.gravity=="horizontal"){G.gravity=((F.left+(D.width/2))>C.width/2)?"east":"west"}if(G.weight=="center"){G.top=G.top+(D.height/2)-(B.height/2)}else{if(G.weight=="bottom"){G.top=G.top-B.height}}G.left=(G.gravity=="west")?(F.left+D.width):(F.left-B.width)}return G},center:function(A){var C=$(window);var B={top:parseInt((C.height()-A.height())/2),left:parseInt((C.width()-A.width())/2)};if($("body.ie6").length){B.top+=C.scrollTop();B.left+=C.scrollLeft()}return B}};twttr.klass("twttr.dialog",function(A,B){this.opts=B;this.$trigger=A;this.$heading=B.heading?$(B.heading):false;this.$footer=B.footer?$(B.footer):false;this.$content=$(B.content);this.createShell();this.bindEvents()}).widget().method("getHeaderHTML",function(){if(this.$heading&&this.$heading.length){return"<h2><span>"+this.$heading.html()+"</span>"+(this.opts.closeButton?'<a href="#" class="modal-close">&times;</a>':"")+"</h2>"}else{return(this.opts.closeButton?'<span class="no-heading"><a href="#" class="modal-close right">&times;</a></span>':"")}}).method("getShellHTML",function(){var A=(this.opts.modal===false);return['<div class="twttr-dialog'+(this.opts.cssClass?" "+this.opts.cssClass:"")+'" style="display: none;">','<div class="hanging"'+(this.opts.zIndex?' style="z-index: '+this.opts.zIndex+' !important;"':"")+">",'<div class="modal">','<div class="modal-inner">',this.getHeaderHTML(),'<div class="modal-content"> </div>',"</div>","</div>","</div>",(A?"":'<div class="modal-overlay"></div>'),"</div>"].join("")}).method("createShell",function(){var C=this;this.$root=$(this.getShellHTML());if(this.opts.width){this.find(".hanging").css({width:this.opts.width})}var D=this.$content.parent().length?this.$content.parent():$(document.body);this.$content.move(this.find(".modal-content"));if(this.$footer.length){this.find(".modal-content").after('<div class="footer"></div>');this.$footer.move(this.find(".footer"))}if(this.opts.renderInline){D.append(this.$root)}else{$(document.body).append(this.$root)}if(this.opts.fixed===false){this.find(".hanging").css({position:"absolute"})}var B=this.$root.find(".modal-submit");if(B.length>0){if(C.opts.noajax){B.bind("click",function(E){B.closest("form").submit()});return }var A=C.opts.ajax.complete;B.bind("click",function(F){F.preventDefault();B.attr("disabled",true);B.addClass("dbtn").removeClass("btn");var E=$(this).closest("form");$.ajax($.extend((C.opts.ajax||{}),{type:E.attr("method"),url:E.attr("action"),data:E.serialize(),complete:function(G){B.attr("disabled",false);B.addClass("btn").removeClass("dbtn");if(A){A(G)}}}))})}}).method("bindEvents",function(){var A=this;if(this.$trigger&&!this.opts.openonload){this.$trigger.click(function(B){B.preventDefault();A.open()})}else{if(this.opts.openonload){A.open()}}this.find(".modal-close").click(function(B){B.preventDefault();A.close()});if(this.find(".modal-close").length){$(document).keydown(function(B){if(B.which==27){B.preventDefault();A.close()}})}if(this.opts.popup){$(document).click(function(B){if(A.opened&&!$(B.target).parents(".modal").length){A.close()}})}}).method("windowHeight",function(){return $(window).height()}).method("scrollTop",function(){return $(window).scrollTop()}).method("open",function(){this.$root.fadeIn("fast");var A=this.find(".hanging");var B=this.center(A);if(this.opts.top){B.top=this.opts.top}if(this.opts.left){B.left=this.opts.left}if(this.opts.maxTop){B.top=Math.min(B.top,this.opts.maxTop)}if(this.opts.maxLeft){B.left=Math.min(B.left,this.opts.maxLeft)}A.css({top:B.top,left:B.left});this.$root.trigger("open");this.opened=true;if(this.windowHeight()<A.outerHeight()){A.css("position","absolute");A.css("top",this.scrollTop()+"px")}this.$root.find("input[type=text]:first").focus()}).method("close",function(){this.$root.fadeOut("fast");this.opened=false;this.$root.trigger("close")}).method("toggle",function(){this.opened?this.close():this.open()});twttr.augmentObject(twttr.dialog.prototype,twttr.position);twttr.auxo("AttachedDialog",twttr.dialog).method("open",function(){this.$root.addClass("attached");this.$root.fadeIn("fast");this.opened=true;if(!this.positioned){var A=this.find(".hanging");var D=this.relativeTo(this.find(".hanging"),this.$trigger,this.opts);if(this.opts.offsetX){D.left+=this.opts.offsetX}if(this.opts.offsetY){D.top+=this.opts.offsetY}twttr.augmentObject(this.opts,D);var B=this.opts.gravity;if(B&&("horizontal,vertical".indexOf(B)==-1)){if("north,south".indexOf(B)==-1){var C=parseInt(this.find(".hanging").height());this.find(".modal-inner").prepend('<div class="'+B+'" style="height:'+C+'px;"></div>');D.left+=this.nudge(B);D.top+=this.nudge(this.opts.weight)}else{this.find(".modal")[(B=="north"?"before":"after")]('<div class="'+B+'"></div>');D.top+=this.nudge(B);D.left+=this.nudge(this.opts.weight)}}this.find(".hanging").css({top:D.top,left:D.left});if(this.opts.weight&&this.opts.weight!="auto"){this.find(".hanging").addClass("weight-"+this.opts.weight)}if(this.opts.modal){this.find(".modal-overlay").height(Math.max($(window).height(),$("body").height())+25)}this.positioned=true}}).method("nudge",function(A){return(twttr.AttachedDialog.offsets[A]||0)});twttr.AttachedDialog.offsets={top:-15,bottom:30,east:-10,west:10,south:-10,north:4};/*\r
44128  * Copyright (c) 2007 Josh Bush (digitalbush.com)\r
44129  *\r
44130  * Permission is hereby granted, free of charge, to any person\r
44131  * obtaining a copy of this software and associated documentation\r
44132  * files (the "Software"), to deal in the Software without\r
44133  * restriction, including without limitation the rights to use,\r
44134  * copy, modify, merge, publish, distribute, sublicense, and/or sell\r
44135  * copies of the Software, and to permit persons to whom the\r
44136  * Software is furnished to do so, subject to the following\r
44137  * conditions:\r
44138 \r
44139  * The above copyright notice and this permission notice shall be\r
44140  * included in all copies or substantial portions of the Software.\r
44141  *\r
44142  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
44143  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r
44144  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
44145  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r
44146  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r
44147  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
44148  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r
44149  * OTHER DEALINGS IN THE SOFTWARE.\r
44150  */\r
44151 \r
44152 /*\r
44153  * Version: Beta 1\r
44154  * Release: 2007-06-01\r
44155  */\r
44156 (function($) {\r
44157         var map=new Array();\r
44158         $.Watermark = {\r
44159                 ShowAll:function(){\r
44160                         for (var i=0;i<map.length;i++){\r
44161                                 if(map[i].obj.val()==""){\r
44162                                         map[i].obj.val(map[i].text);\r
44163                                         map[i].obj.css("color",map[i].WatermarkColor);\r
44164                                 }else{\r
44165                                     map[i].obj.css("color",map[i].DefaultColor);\r
44166                                 }\r
44167                         }\r
44168                 },\r
44169                 HideAll:function(){\r
44170                         for (var i=0;i<map.length;i++){\r
44171                                 if(map[i].obj.val()==map[i].text)\r
44172                                         map[i].obj.val("");\r
44173                         }\r
44174                 }\r
44175         }\r
44176 \r
44177         $.fn.Watermark = function(text,color) {\r
44178                 if(!color)\r
44179                         color="#aaa";\r
44180                 return this.each(\r
44181                         function(){\r
44182                                 var input=$(this);\r
44183                                 var defaultColor=input.css("color");\r
44184                                 map[map.length]={text:text,obj:input,DefaultColor:defaultColor,WatermarkColor:color};\r
44185                                 function clearMessage(){\r
44186                                         if(input.val()==text)\r
44187                                                 input.val("");\r
44188                                         input.css("color",defaultColor);\r
44189                                 }\r
44190 \r
44191                                 function insertMessage(){\r
44192                                         if(input.val().length==0 || input.val()==text){\r
44193                                                 input.val(text);\r
44194                                                 input.css("color",color);\r
44195                                         }else\r
44196                                                 input.css("color",defaultColor);\r
44197                                 }\r
44198 \r
44199                                 input.focus(clearMessage);\r
44200                                 input.blur(insertMessage);\r
44201                                 input.change(insertMessage);\r
44202 \r
44203                                 insertMessage();\r
44204                         }\r
44205                 );\r
44206         };\r
44207 })(jQuery);\r
44208 /*\r
44209  * Cookie plugin\r
44210  *\r
44211  * Copyright (c) 2006 Klaus Hartl (stilbuero.de)\r
44212  * Dual licensed under the MIT and GPL licenses:\r
44213  * http://www.opensource.org/licenses/mit-license.php\r
44214  * http://www.gnu.org/licenses/gpl.html\r
44215  *\r
44216  */\r
44217 jQuery.cookie = function(name, value, options) {\r
44218     if (typeof value != 'undefined') { // name and value given, set cookie\r
44219         options = options || {};\r
44220         if (value === null) {\r
44221             value = '';\r
44222             options.expires = -1;\r
44223         }\r
44224         var expires = '';\r
44225         if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {\r
44226             var date;\r
44227             if (typeof options.expires == 'number') {\r
44228                 date = new Date();\r
44229                 date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));\r
44230             } else {\r
44231                 date = options.expires;\r
44232             }\r
44233             expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE\r
44234         }\r
44235         // CAUTION: Needed to parenthesize options.path and options.domain\r
44236         // in the following expressions, otherwise they evaluate to undefined\r
44237         // in the packed version for some reason...\r
44238         var path = options.path ? '; path=' + (options.path) : '';\r
44239         var domain = options.domain ? '; domain=' + (options.domain) : '';\r
44240         var secure = options.secure ? '; secure' : '';\r
44241         document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');\r
44242     } else { // only name given, get cookie\r
44243         var cookieValue = null;\r
44244         if (document.cookie && document.cookie != '') {\r
44245             var cookies = document.cookie.split(';');\r
44246             for (var i = 0; i < cookies.length; i++) {\r
44247                 var cookie = jQuery.trim(cookies[i]);\r
44248                 // Does this cookie string begin with the name we want?\r
44249                 if (cookie.substring(0, name.length + 1) == (name + '=')) {\r
44250                     cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\r
44251                     break;\r
44252                 }\r
44253             }\r
44254         }\r
44255         return cookieValue;\r
44256     }\r
44257 };\r
44258 /*\r
44259  * jQuery Color Animations\r
44260  * Copyright 2007 John Resig\r
44261  * Released under the MIT and GPL licenses.\r
44262  */\r
44263 \r
44264 (function(jQuery){\r
44265 \r
44266         // We override the animation for all of these color styles\r
44267         jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor', 'borderColor'], function(i,attr){\r
44268                 jQuery.fx.step[attr] = function(fx){\r
44269                         if ( fx.state == 0 ) {\r
44270                                 fx.start = getColor( fx.elem, attr );\r
44271                                 fx.end = getRGB( fx.end );\r
44272                         }\r
44273 \r
44274                         fx.elem.style[attr] = "rgb(" + [\r
44275                                 Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),\r
44276                                 Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),\r
44277                                 Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)\r
44278                         ].join(",") + ")";\r
44279                 }\r
44280         });\r
44281 \r
44282         // Color Conversion functions from highlightFade\r
44283         // By Blair Mitchelmore\r
44284         // http://jquery.offput.ca/highlightFade/\r
44285 \r
44286         // Parse strings looking for color tuples [255,255,255]\r
44287         function getRGB(color) {\r
44288                 var result;\r
44289 \r
44290                 // Check if we're already dealing with an array of colors\r
44291                 if ( color && color.constructor == Array && color.length == 3 )\r
44292                         return color;\r
44293 \r
44294                 // Look for rgb(num,num,num)\r
44295                 if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))\r
44296                         return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];\r
44297 \r
44298                 // Look for rgb(num%,num%,num%)\r
44299                 if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))\r
44300                         return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];\r
44301 \r
44302                 // Look for #a0b1c2\r
44303                 if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))\r
44304                         return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];\r
44305 \r
44306                 // Look for #fff\r
44307                 if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))\r
44308                         return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];\r
44309 \r
44310                 // Otherwise, we're most likely dealing with a named color\r
44311                 return colors[jQuery.trim(color).toLowerCase()];\r
44312         }\r
44313 \r
44314         function getColor(elem, attr) {\r
44315                 var color;\r
44316 \r
44317                 do {\r
44318                         color = jQuery.curCSS(elem, attr);\r
44319 \r
44320                         // Keep going until we find an element that has color, or we hit the body\r
44321                         if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )\r
44322                                 break;\r
44323 \r
44324                         attr = "backgroundColor";\r
44325                 } while ( elem = elem.parentNode );\r
44326 \r
44327                 return getRGB(color);\r
44328         };\r
44329 \r
44330         // Some named colors to work with\r
44331         // From Interface by Stefan Petre\r
44332         // http://interface.eyecon.ro/\r
44333 \r
44334         var colors = {\r
44335                 aqua:[0,255,255],\r
44336                 azure:[240,255,255],\r
44337                 beige:[245,245,220],\r
44338                 black:[0,0,0],\r
44339                 blue:[0,0,255],\r
44340                 brown:[165,42,42],\r
44341                 cyan:[0,255,255],\r
44342                 darkblue:[0,0,139],\r
44343                 darkcyan:[0,139,139],\r
44344                 darkgrey:[169,169,169],\r
44345                 darkgreen:[0,100,0],\r
44346                 darkkhaki:[189,183,107],\r
44347                 darkmagenta:[139,0,139],\r
44348                 darkolivegreen:[85,107,47],\r
44349                 darkorange:[255,140,0],\r
44350                 darkorchid:[153,50,204],\r
44351                 darkred:[139,0,0],\r
44352                 darksalmon:[233,150,122],\r
44353                 darkviolet:[148,0,211],\r
44354                 fuchsia:[255,0,255],\r
44355                 gold:[255,215,0],\r
44356                 green:[0,128,0],\r
44357                 indigo:[75,0,130],\r
44358                 khaki:[240,230,140],\r
44359                 lightblue:[173,216,230],\r
44360                 lightcyan:[224,255,255],\r
44361                 lightgreen:[144,238,144],\r
44362                 lightgrey:[211,211,211],\r
44363                 lightpink:[255,182,193],\r
44364                 lightyellow:[255,255,224],\r
44365                 lime:[0,255,0],\r
44366                 magenta:[255,0,255],\r
44367                 maroon:[128,0,0],\r
44368                 navy:[0,0,128],\r
44369                 olive:[128,128,0],\r
44370                 orange:[255,165,0],\r
44371                 pink:[255,192,203],\r
44372                 purple:[128,0,128],\r
44373                 violet:[128,0,128],\r
44374                 red:[255,0,0],\r
44375                 silver:[192,192,192],\r
44376                 white:[255,255,255],\r
44377                 yellow:[255,255,0]\r
44378         };\r
44379 \r
44380 })(jQuery);\r
44381 /* Copyright (c) 2008 Brandon Aaron (http://brandonaaron.net)\r
44382  * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\r
44383  * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\r
44384  *\r
44385  * Version: 1.0.3\r
44386  * Requires jQuery 1.1.3+\r
44387  * Docs: http://docs.jquery.com/Plugins/livequery\r
44388  */\r
44389 \r
44390 (function($) {\r
44391 \r
44392 $.extend($.fn, {\r
44393         livequery: function(type, fn, fn2) {\r
44394                 var self = this, q;\r
44395 \r
44396                 // Handle different call patterns\r
44397                 if ($.isFunction(type))\r
44398                         fn2 = fn, fn = type, type = undefined;\r
44399 \r
44400                 // See if Live Query already exists\r
44401                 $.each( $.livequery.queries, function(i, query) {\r
44402                         if ( self.selector == query.selector && self.context == query.context &&\r
44403                                 type == query.type && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid) )\r
44404                                         // Found the query, exit the each loop\r
44405                                         return (q = query) && false;\r
44406                 });\r
44407 \r
44408                 // Create new Live Query if it wasn't found\r
44409                 q = q || new $.livequery(this.selector, this.context, type, fn, fn2);\r
44410 \r
44411                 // Make sure it is running\r
44412                 q.stopped = false;\r
44413 \r
44414                 // Run it immediately for the first time\r
44415                 q.run();\r
44416 \r
44417                 // Contnue the chain\r
44418                 return this;\r
44419         },\r
44420 \r
44421         expire: function(type, fn, fn2) {\r
44422                 var self = this;\r
44423 \r
44424                 // Handle different call patterns\r
44425                 if ($.isFunction(type))\r
44426                         fn2 = fn, fn = type, type = undefined;\r
44427 \r
44428                 // Find the Live Query based on arguments and stop it\r
44429                 $.each( $.livequery.queries, function(i, query) {\r
44430                         if ( self.selector == query.selector && self.context == query.context &&\r
44431                                 (!type || type == query.type) && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid) && !this.stopped )\r
44432                                         $.livequery.stop(query.id);\r
44433                 });\r
44434 \r
44435                 // Continue the chain\r
44436                 return this;\r
44437         }\r
44438 });\r
44439 \r
44440 $.livequery = function(selector, context, type, fn, fn2) {\r
44441         this.selector = selector;\r
44442         this.context  = context || document;\r
44443         this.type     = type;\r
44444         this.fn       = fn;\r
44445         this.fn2      = fn2;\r
44446         this.elements = [];\r
44447         this.stopped  = false;\r
44448 \r
44449         // The id is the index of the Live Query in $.livequery.queries\r
44450         this.id = $.livequery.queries.push(this)-1;\r
44451 \r
44452         // Mark the functions for matching later on\r
44453         fn.$lqguid = fn.$lqguid || $.livequery.guid++;\r
44454         if (fn2) fn2.$lqguid = fn2.$lqguid || $.livequery.guid++;\r
44455 \r
44456         // Return the Live Query\r
44457         return this;\r
44458 };\r
44459 \r
44460 $.livequery.prototype = {\r
44461         stop: function() {\r
44462                 var query = this;\r
44463 \r
44464                 if ( this.type )\r
44465                         // Unbind all bound events\r
44466                         this.elements.unbind(this.type, this.fn);\r
44467                 else if (this.fn2)\r
44468                         // Call the second function for all matched elements\r
44469                         this.elements.each(function(i, el) {\r
44470                                 query.fn2.apply(el);\r
44471                         });\r
44472 \r
44473                 // Clear out matched elements\r
44474                 this.elements = [];\r
44475 \r
44476                 // Stop the Live Query from running until restarted\r
44477                 this.stopped = true;\r
44478         },\r
44479 \r
44480         run: function() {\r
44481                 // Short-circuit if stopped\r
44482                 if ( this.stopped ) return;\r
44483                 var query = this;\r
44484 \r
44485                 var oEls = this.elements,\r
44486                         els  = $(this.selector, this.context),\r
44487                         nEls = els.not(oEls);\r
44488 \r
44489                 // Set elements to the latest set of matched elements\r
44490                 this.elements = els;\r
44491 \r
44492                 if (this.type) {\r
44493                         // Bind events to newly matched elements\r
44494                         nEls.bind(this.type, this.fn);\r
44495 \r
44496                         // Unbind events to elements no longer matched\r
44497                         if (oEls.length > 0)\r
44498                                 $.each(oEls, function(i, el) {\r
44499                                         if ( $.inArray(el, els) < 0 )\r
44500                                                 $.event.remove(el, query.type, query.fn);\r
44501                                 });\r
44502                 }\r
44503                 else {\r
44504                         // Call the first function for newly matched elements\r
44505                         nEls.each(function() {\r
44506                                 query.fn.apply(this);\r
44507                         });\r
44508 \r
44509                         // Call the second function for elements no longer matched\r
44510                         if ( this.fn2 && oEls.length > 0 )\r
44511                                 $.each(oEls, function(i, el) {\r
44512                                         if ( $.inArray(el, els) < 0 )\r
44513                                                 query.fn2.apply(el);\r
44514                                 });\r
44515                 }\r
44516         }\r
44517 };\r
44518 \r
44519 $.extend($.livequery, {\r
44520         guid: 0,\r
44521         queries: [],\r
44522         queue: [],\r
44523         running: false,\r
44524         timeout: null,\r
44525 \r
44526         checkQueue: function() {\r
44527                 if ( $.livequery.running && $.livequery.queue.length ) {\r
44528                         var length = $.livequery.queue.length;\r
44529                         // Run each Live Query currently in the queue\r
44530                         while ( length-- )\r
44531                                 $.livequery.queries[ $.livequery.queue.shift() ].run();\r
44532                 }\r
44533         },\r
44534 \r
44535         pause: function() {\r
44536                 // Don't run anymore Live Queries until restarted\r
44537                 $.livequery.running = false;\r
44538         },\r
44539 \r
44540         play: function() {\r
44541                 // Restart Live Queries\r
44542                 $.livequery.running = true;\r
44543                 // Request a run of the Live Queries\r
44544                 $.livequery.run();\r
44545         },\r
44546 \r
44547         registerPlugin: function() {\r
44548                 $.each( arguments, function(i,n) {\r
44549                         // Short-circuit if the method doesn't exist\r
44550                         if (!$.fn[n]) return;\r
44551 \r
44552                         // Save a reference to the original method\r
44553                         var old = $.fn[n];\r
44554 \r
44555                         // Create a new method\r
44556                         $.fn[n] = function() {\r
44557                                 // Call the original method\r
44558                                 var r = old.apply(this, arguments);\r
44559 \r
44560                                 // Request a run of the Live Queries\r
44561                                 $.livequery.run();\r
44562 \r
44563                                 // Return the original methods result\r
44564                                 return r;\r
44565                         }\r
44566                 });\r
44567         },\r
44568 \r
44569         run: function(id) {\r
44570                 if (id != undefined) {\r
44571                         // Put the particular Live Query in the queue if it doesn't already exist\r
44572                         if ( $.inArray(id, $.livequery.queue) < 0 )\r
44573                                 $.livequery.queue.push( id );\r
44574                 }\r
44575                 else\r
44576                         // Put each Live Query in the queue if it doesn't already exist\r
44577                         $.each( $.livequery.queries, function(id) {\r
44578                                 if ( $.inArray(id, $.livequery.queue) < 0 )\r
44579                                         $.livequery.queue.push( id );\r
44580                         });\r
44581 \r
44582                 // Clear timeout if it already exists\r
44583                 if ($.livequery.timeout) clearTimeout($.livequery.timeout);\r
44584                 // Create a timeout to check the queue and actually run the Live Queries\r
44585                 $.livequery.timeout = setTimeout($.livequery.checkQueue, 20);\r
44586         },\r
44587 \r
44588         stop: function(id) {\r
44589                 if (id != undefined)\r
44590                         // Stop are particular Live Query\r
44591                         $.livequery.queries[ id ].stop();\r
44592                 else\r
44593                         // Stop all Live Queries\r
44594                         $.each( $.livequery.queries, function(id) {\r
44595                                 $.livequery.queries[ id ].stop();\r
44596                         });\r
44597         }\r
44598 });\r
44599 \r
44600 // Register core DOM manipulation methods\r
44601 $.livequery.registerPlugin('append', 'prepend', 'after', 'before', 'wrap', 'attr', 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 'empty', 'remove');\r
44602 \r
44603 // Run Live Queries when the Document is ready\r
44604 $(function() { $.livequery.play(); });\r
44605 \r
44606 \r
44607 // Save a reference to the original init method\r
44608 var init = $.prototype.init;\r
44609 \r
44610 // Create a new init method that exposes two new properties: selector and context\r
44611 $.prototype.init = function(a,c) {\r
44612         // Call the original init and save the result\r
44613         var r = init.apply(this, arguments);\r
44614 \r
44615         // Copy over properties if they exist already\r
44616         if (a && a.selector)\r
44617                 r.context = a.context, r.selector = a.selector;\r
44618 \r
44619         // Set properties\r
44620         if ( typeof a == 'string' )\r
44621                 r.context = c || document, r.selector = a;\r
44622 \r
44623         // Return the result\r
44624         return r;\r
44625 };\r
44626 \r
44627 // Give the init function the jQuery prototype for later instantiation (needed after Rev 4091)\r
44628 $.prototype.init.prototype = $.prototype;\r
44629 \r
44630 })(jQuery);/*\r
44631  * Metadata - jQuery plugin for parsing metadata from elements\r
44632  *\r
44633  * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan\r
44634  *\r
44635  * Dual licensed under the MIT and GPL licenses:\r
44636  *   http://www.opensource.org/licenses/mit-license.php\r
44637  *   http://www.gnu.org/licenses/gpl.html\r
44638  *\r
44639  * Revision: $Id: jquery.metadata.js 3640 2007-10-11 18:34:38Z pmclanahan $\r
44640  *\r
44641  */\r
44642 \r
44643 /**\r
44644  * Sets the type of metadata to use. Metadata is encoded in JSON, and each property\r
44645  * in the JSON will become a property of the element itself.\r
44646  *\r
44647  * There are four supported types of metadata storage:\r
44648  *\r
44649  *   attr:  Inside an attribute. The name parameter indicates *which* attribute.\r
44650  *          \r
44651  *   class: Inside the class attribute, wrapped in curly braces: { }\r
44652  *   \r
44653  *   elem:  Inside a child element (e.g. a script tag). The\r
44654  *          name parameter indicates *which* element.\r
44655  *   html5: Values are stored in data-* attributes.\r
44656  *          \r
44657  * The metadata for an element is loaded the first time the element is accessed via jQuery.\r
44658  *\r
44659  * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements\r
44660  * matched by expr, then redefine the metadata type and run another $(expr) for other elements.\r
44661  * \r
44662  * @name $.metadata.setType\r
44663  *\r
44664  * @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>\r
44665  * @before $.metadata.setType("class")\r
44666  * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"\r
44667  * @desc Reads metadata from the class attribute\r
44668  * \r
44669  * @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>\r
44670  * @before $.metadata.setType("attr", "data")\r
44671  * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"\r
44672  * @desc Reads metadata from a "data" attribute\r
44673  * \r
44674  * @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}<\/script>This is a p</p>\r
44675  * @before $.metadata.setType("elem", "script")\r
44676  * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"\r
44677  * @desc Reads metadata from a nested script element\r
44678  * \r
44679  * @example <p id="one" class="some_class" data-item_id="1" data-item_label="Label">This is a p</p>\r
44680  * @before $.metadata.setType("html5")\r
44681  * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"\r
44682  * @desc Reads metadata from a series of data-* attributes\r
44683  *\r
44684  * @param String type The encoding type\r
44685  * @param String name The name of the attribute to be used to get metadata (optional)\r
44686  * @cat Plugins/Metadata\r
44687  * @descr Sets the type of encoding to be used when loading metadata for the first time\r
44688  * @type undefined\r
44689  * @see metadata()\r
44690  */\r
44691 \r
44692 (function($) {\r
44693 \r
44694 $.extend({\r
44695   metadata : {\r
44696     defaults : {\r
44697       type: 'class',\r
44698       name: 'metadata',\r
44699       cre: /({.*})/,\r
44700       single: 'metadata'\r
44701     },\r
44702     setType: function( type, name ){\r
44703       this.defaults.type = type;\r
44704       this.defaults.name = name;\r
44705     },\r
44706     get: function( elem, opts ){\r
44707       var settings = $.extend({},this.defaults,opts);\r
44708       // check for empty string in single property\r
44709       if ( !settings.single.length ) settings.single = 'metadata';\r
44710       \r
44711       var data = $.data(elem, settings.single);\r
44712       // returned cached data if it already exists\r
44713       if ( data ) return data;\r
44714       \r
44715       data = "{}";\r
44716       \r
44717       var getData = function(data) {\r
44718         if(typeof data != "string") return data;\r
44719         \r
44720         if( data.indexOf('{') < 0 ) {\r
44721           data = eval("(" + data + ")");\r
44722         }\r
44723       }\r
44724       \r
44725       var getObject = function(data) {\r
44726         if(typeof data != "string") return data;\r
44727         \r
44728         data = eval("(" + data + ")");\r
44729         return data;\r
44730       }\r
44731       \r
44732       if ( settings.type == "html5" ) {\r
44733         var object = {};\r
44734         $( elem.attributes ).each(function() {\r
44735           var name = this.nodeName;\r
44736           if(name.match(/^data-/)) name = name.replace(/^data-/, '');\r
44737           else return true;\r
44738           object[name] = getObject(this.nodeValue);\r
44739         });\r
44740       } else {\r
44741         if ( settings.type == "class" ) {\r
44742           var m = settings.cre.exec( elem.className );\r
44743           if ( m )\r
44744             data = m[1];\r
44745         } else if ( settings.type == "elem" ) {\r
44746           if( !elem.getElementsByTagName ) return;\r
44747           var e = elem.getElementsByTagName(settings.name);\r
44748           if ( e.length )\r
44749             data = $.trim(e[0].innerHTML);\r
44750         } else if ( elem.getAttribute != undefined ) {\r
44751           var attr = elem.getAttribute( settings.name );\r
44752           if ( attr )\r
44753             data = attr;\r
44754         }\r
44755         object = getObject(data.indexOf("{") < 0 ? "{" + data + "}" : data);\r
44756       }\r
44757       \r
44758       $.data( elem, settings.single, object );\r
44759       return object;\r
44760     }\r
44761   }\r
44762 });\r
44763 \r
44764 /**\r
44765  * Returns the metadata object for the first member of the jQuery object.\r
44766  *\r
44767  * @name metadata\r
44768  * @descr Returns element's metadata object\r
44769  * @param Object opts An object contianing settings to override the defaults\r
44770  * @type jQuery\r
44771  * @cat Plugins/Metadata\r
44772  */\r
44773 $.fn.metadata = function( opts ){\r
44774   return $.metadata.get( this[0], opts );\r
44775 };\r
44776 \r
44777 })(jQuery);//Licensed under The MIT License\r
44778 //Copyright (c) 2008 Jason Frame (jason@onehackoranother.com)\r
44779 \r
44780 \r
44781 (function($) {\r
44782     $.fn.tipsy = function(opts) {\r
44783 \r
44784         opts = $.extend({fade: false, gravity: 'n'}, opts || {});\r
44785         // ...Added by andy@twitter.com 20090717\r
44786         if(!opts['offsetTop']) { opts['offsetTop'] = 0; }\r
44787         if(!opts['offsetLeft']) { opts['offsetLeft'] = 0; }\r
44788         if(!opts['header']) { opts['header'] = ''; }\r
44789         if(!opts['footer']) { opts['footer'] = ''; }\r
44790         if(!opts['hideTimeout']) { opts['hideTimeout'] = 100; }\r
44791         if(!opts['showTimeout']) { opts['hideTimeout'] = 0; }\r
44792         if(!opts['additionalCSSClass']) { opts['additionalCSSClass'] = ''; }\r
44793         var showTimeoutKey = false;\r
44794         // ...Added by andy@twitter.com 20090717\r
44795         var tip = null, cancelHide = false;\r
44796         this.hover(function() {\r
44797 \r
44798             // ...Added by andy@twitter.com 20090717\r
44799             var linkText = $(this).text();\r
44800             var header = opts['header'].replace('%{link}', linkText);\r
44801             var footer = opts['footer'].replace('%{link}', linkText);\r
44802             // ...Added by andy@twitter.com 20090717\r
44803 \r
44804             $.data(this, 'cancel.tipsy', true);\r
44805 \r
44806             var tip = $.data(this, 'active.tipsy');\r
44807             if (!tip) {\r
44808                 $('.tipsy').hide();\r
44809                 tip = $('<div class="tipsy '+ opts['additionalCSSClass'] +'"><div class="tipsy-inner">' + header + $(this).attr('title') + footer + '</div></div>');\r
44810                 tip.css({position: 'absolute', zIndex: 100000});\r
44811                 $(this).attr('title', '');\r
44812                 $.data(this, 'active.tipsy', tip);\r
44813             // Added by rael@twitter.com 20090628...\r
44814             } else if ($(this).attr('title') != '') {\r
44815               tip.find('.tipsy-inner').html($(this).attr('title'));\r
44816               $(this).attr('title', '');\r
44817             // ...Added by rael@twitter.com 20090628\r
44818             }\r
44819 \r
44820             var pos = $.extend({}, $(this).offset(), {width: this.offsetWidth, height: this.offsetHeight});\r
44821             // ...Added by andy@twitter.com 20090717\r
44822             pos.top = pos.top + opts['offsetTop'];\r
44823             pos.left = pos.left + opts['offsetLeft'];\r
44824 \r
44825             // remove open tips if timeout to fade\r
44826             $('.tipsy').hide();\r
44827             // ...Added by andy@twitter.com 20090717\r
44828             tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body);\r
44829             var actualWidth = tip[0].offsetWidth, actualHeight = tip[0].offsetHeight;\r
44830 \r
44831             switch (opts.gravity.charAt(0)) {\r
44832                 case 'n':\r
44833                     tip.css({top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-north');\r
44834                     break;\r
44835                 case 'l':\r
44836                     //left north align\r
44837                     tip.css({top: pos.top + pos.height, left: pos.left + pos.width / 2 - 18}).addClass('tipsy-north');\r
44838                     break;\r
44839                 case 's':\r
44840                     tip.css({top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-south');\r
44841                     break;\r
44842                 case 'e':\r
44843                     tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}).addClass('tipsy-east');\r
44844                     break;\r
44845                 case 'w':\r
44846                     tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}).addClass('tipsy-west');\r
44847                     break;\r
44848             }\r
44849             // ...Added by andy@twitter.com 20090717\r
44850             function show() {\r
44851               if (opts.fade) {\r
44852                   tip.css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: 1});\r
44853               } else {\r
44854                   tip.css({visibility: 'visible'});\r
44855               }\r
44856             }\r
44857             if(opts['showTimeout']) {\r
44858               showTimeoutKey = setTimeout(show, opts['showTimeout']);\r
44859             } else {\r
44860               show();\r
44861             }\r
44862         }, function() {\r
44863             clearTimeout(showTimeoutKey);\r
44864             // ...Added by andy@twitter.com 20090717\r
44865             $.data(this, 'cancel.tipsy', false);\r
44866             var self = this;\r
44867             setTimeout(function() {\r
44868                 if ($.data(this, 'cancel.tipsy')) return;\r
44869                 var tip = $.data(self, 'active.tipsy');\r
44870                 if (opts.fade) {\r
44871                     tip.stop().fadeOut(function() { $(this).remove(); });\r
44872                 } else {\r
44873                     tip.remove();\r
44874                 }\r
44875             }, opts['hideTimeout']);\r
44876         });\r
44877 \r
44878     };\r
44879 })(jQuery);\r
44880 /*\r
44881  * jQuery Form Plugin\r
44882  * version: 2.36 (07-NOV-2009)\r
44883  * @requires jQuery v1.2.6 or later\r
44884  *\r
44885  * Examples and documentation at: http://malsup.com/jquery/form/\r
44886  * Dual licensed under the MIT and GPL licenses:\r
44887  *   http://www.opensource.org/licenses/mit-license.php\r
44888  *   http://www.gnu.org/licenses/gpl.html\r
44889  */\r
44890 ;(function($) {\r
44891 \r
44892 /*\r
44893         Usage Note:\r
44894         -----------\r
44895         Do not use both ajaxSubmit and ajaxForm on the same form.  These\r
44896         functions are intended to be exclusive.  Use ajaxSubmit if you want\r
44897         to bind your own submit handler to the form.  For example,\r
44898 \r
44899         $(document).ready(function() {\r
44900                 $('#myForm').bind('submit', function() {\r
44901                         $(this).ajaxSubmit({\r
44902                                 target: '#output'\r
44903                         });\r
44904                         return false; // <-- important!\r
44905                 });\r
44906         });\r
44907 \r
44908         Use ajaxForm when you want the plugin to manage all the event binding\r
44909         for you.  For example,\r
44910 \r
44911         $(document).ready(function() {\r
44912                 $('#myForm').ajaxForm({\r
44913                         target: '#output'\r
44914                 });\r
44915         });\r
44916 \r
44917         When using ajaxForm, the ajaxSubmit function will be invoked for you\r
44918         at the appropriate time.\r
44919 */\r
44920 \r
44921 /**\r
44922  * ajaxSubmit() provides a mechanism for immediately submitting\r
44923  * an HTML form using AJAX.\r
44924  */\r
44925 $.fn.ajaxSubmit = function(options) {\r
44926         // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)\r
44927         if (!this.length) {\r
44928                 log('ajaxSubmit: skipping submit process - no element selected');\r
44929                 return this;\r
44930         }\r
44931 \r
44932         if (typeof options == 'function')\r
44933                 options = { success: options };\r
44934 \r
44935         var url = $.trim(this.attr('action'));\r
44936         if (url) {\r
44937                 // clean url (don't include hash vaue)\r
44938                 url = (url.match(/^([^#]+)/)||[])[1];\r
44939         }\r
44940         url = url || window.location.href || '';\r
44941 \r
44942         options = $.extend({\r
44943                 url:  url,\r
44944                 type: this.attr('method') || 'GET',\r
44945                 iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'\r
44946         }, options || {});\r
44947 \r
44948         // hook for manipulating the form data before it is extracted;\r
44949         // convenient for use with rich editors like tinyMCE or FCKEditor\r
44950         var veto = {};\r
44951         this.trigger('form-pre-serialize', [this, options, veto]);\r
44952         if (veto.veto) {\r
44953                 log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');\r
44954                 return this;\r
44955         }\r
44956 \r
44957         // provide opportunity to alter form data before it is serialized\r
44958         if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {\r
44959                 log('ajaxSubmit: submit aborted via beforeSerialize callback');\r
44960                 return this;\r
44961         }\r
44962 \r
44963         var a = this.formToArray(options.semantic);\r
44964         if (options.data) {\r
44965                 options.extraData = options.data;\r
44966                 for (var n in options.data) {\r
44967                   if(options.data[n] instanceof Array) {\r
44968                         for (var k in options.data[n])\r
44969                           a.push( { name: n, value: options.data[n][k] } );\r
44970                   }\r
44971                   else\r
44972                          a.push( { name: n, value: options.data[n] } );\r
44973                 }\r
44974         }\r
44975 \r
44976         // give pre-submit callback an opportunity to abort the submit\r
44977         if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {\r
44978                 log('ajaxSubmit: submit aborted via beforeSubmit callback');\r
44979                 return this;\r
44980         }\r
44981 \r
44982         // fire vetoable 'validate' event\r
44983         this.trigger('form-submit-validate', [a, this, options, veto]);\r
44984         if (veto.veto) {\r
44985                 log('ajaxSubmit: submit vetoed via form-submit-validate trigger');\r
44986                 return this;\r
44987         }\r
44988 \r
44989         var q = $.param(a);\r
44990 \r
44991         if (options.type.toUpperCase() == 'GET') {\r
44992                 options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;\r
44993                 options.data = null;  // data is null for 'get'\r
44994         }\r
44995         else\r
44996                 options.data = q; // data is the query string for 'post'\r
44997 \r
44998         var $form = this, callbacks = [];\r
44999         if (options.resetForm) callbacks.push(function() { $form.resetForm(); });\r
45000         if (options.clearForm) callbacks.push(function() { $form.clearForm(); });\r
45001 \r
45002         // perform a load on the target only if dataType is not provided\r
45003         if (!options.dataType && options.target) {\r
45004                 var oldSuccess = options.success || function(){};\r
45005                 callbacks.push(function(data) {\r
45006                         $(options.target).html(data).each(oldSuccess, arguments);\r
45007                 });\r
45008         }\r
45009         else if (options.success)\r
45010                 callbacks.push(options.success);\r
45011 \r
45012         options.success = function(data, status) {\r
45013                 for (var i=0, max=callbacks.length; i < max; i++)\r
45014                         callbacks[i].apply(options, [data, status, $form]);\r
45015         };\r
45016 \r
45017         // are there files to upload?\r
45018         var files = $('input:file', this).fieldValue();\r
45019         var found = false;\r
45020         for (var j=0; j < files.length; j++)\r
45021                 if (files[j])\r
45022                         found = true;\r
45023 \r
45024         var multipart = false;\r
45025 //      var mp = 'multipart/form-data';\r
45026 //      multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);\r
45027 \r
45028         // options.iframe allows user to force iframe mode\r
45029         // 06-NOV-09: now defaulting to iframe mode if file input is detected\r
45030    if ((files.length && options.iframe !== false) || options.iframe || found || multipart) {\r
45031            // hack to fix Safari hang (thanks to Tim Molendijk for this)\r
45032            // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d\r
45033            if (options.closeKeepAlive)\r
45034                    $.get(options.closeKeepAlive, fileUpload);\r
45035            else\r
45036                    fileUpload();\r
45037            }\r
45038    else\r
45039            $.ajax(options);\r
45040 \r
45041         // fire 'notify' event\r
45042         this.trigger('form-submit-notify', [this, options]);\r
45043         return this;\r
45044 \r
45045 \r
45046         // private function for handling file uploads (hat tip to YAHOO!)\r
45047         function fileUpload() {\r
45048                 var form = $form[0];\r
45049 \r
45050                 if ($(':input[name=submit]', form).length) {\r
45051                         alert('Error: Form elements must not be named "submit".');\r
45052                         return;\r
45053                 }\r
45054 \r
45055                 var opts = $.extend({}, $.ajaxSettings, options);\r
45056                 var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);\r
45057 \r
45058                 var id = 'jqFormIO' + (new Date().getTime());\r
45059                 var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" />');\r
45060                 var io = $io[0];\r
45061 \r
45062                 $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });\r
45063 \r
45064                 var xhr = { // mock object\r
45065                         aborted: 0,\r
45066                         responseText: null,\r
45067                         responseXML: null,\r
45068                         status: 0,\r
45069                         statusText: 'n/a',\r
45070                         getAllResponseHeaders: function() {},\r
45071                         getResponseHeader: function() {},\r
45072                         setRequestHeader: function() {},\r
45073                         abort: function() {\r
45074                                 this.aborted = 1;\r
45075                                 $io.attr('src', opts.iframeSrc); // abort op in progress\r
45076                         }\r
45077                 };\r
45078 \r
45079                 var g = opts.global;\r
45080                 // trigger ajax global events so that activity/block indicators work like normal\r
45081                 if (g && ! $.active++) $.event.trigger("ajaxStart");\r
45082                 if (g) $.event.trigger("ajaxSend", [xhr, opts]);\r
45083 \r
45084                 if (s.beforeSend && s.beforeSend(xhr, s) === false) {\r
45085                         s.global && $.active--;\r
45086                         return;\r
45087                 }\r
45088                 if (xhr.aborted)\r
45089                         return;\r
45090 \r
45091                 var cbInvoked = 0;\r
45092                 var timedOut = 0;\r
45093 \r
45094                 // add submitting element to data if we know it\r
45095                 var sub = form.clk;\r
45096                 if (sub) {\r
45097                         var n = sub.name;\r
45098                         if (n && !sub.disabled) {\r
45099                                 options.extraData = options.extraData || {};\r
45100                                 options.extraData[n] = sub.value;\r
45101                                 if (sub.type == "image") {\r
45102                                         options.extraData[name+'.x'] = form.clk_x;\r
45103                                         options.extraData[name+'.y'] = form.clk_y;\r
45104                                 }\r
45105                         }\r
45106                 }\r
45107 \r
45108                 // take a breath so that pending repaints get some cpu time before the upload starts\r
45109                 setTimeout(function() {\r
45110                         // make sure form attrs are set\r
45111                         var t = $form.attr('target'), a = $form.attr('action');\r
45112 \r
45113                         // update form attrs in IE friendly way\r
45114                         form.setAttribute('target',id);\r
45115                         if (form.getAttribute('method') != 'POST')\r
45116                                 form.setAttribute('method', 'POST');\r
45117                         if (form.getAttribute('action') != opts.url)\r
45118                                 form.setAttribute('action', opts.url);\r
45119 \r
45120                         // ie borks in some cases when setting encoding\r
45121                         if (! options.skipEncodingOverride) {\r
45122                                 $form.attr({\r
45123                                         encoding: 'multipart/form-data',\r
45124                                         enctype:  'multipart/form-data'\r
45125                                 });\r
45126                         }\r
45127 \r
45128                         // support timout\r
45129                         if (opts.timeout)\r
45130                                 setTimeout(function() { timedOut = true; cb(); }, opts.timeout);\r
45131 \r
45132                         // add "extra" data to form if provided in options\r
45133                         var extraInputs = [];\r
45134                         try {\r
45135                                 if (options.extraData)\r
45136                                         for (var n in options.extraData)\r
45137                                                 extraInputs.push(\r
45138                                                         $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')\r
45139                                                                 .appendTo(form)[0]);\r
45140 \r
45141                                 // add iframe to doc and submit the form\r
45142                                 $io.appendTo('body');\r
45143                                 io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);\r
45144                                 form.submit();\r
45145                         }\r
45146                         finally {\r
45147                                 // reset attrs and remove "extra" input elements\r
45148                                 form.setAttribute('action',a);\r
45149                                 t ? form.setAttribute('target', t) : $form.removeAttr('target');\r
45150                                 $(extraInputs).remove();\r
45151                         }\r
45152                 }, 10);\r
45153 \r
45154                 var domCheckCount = 50;\r
45155 \r
45156                 function cb() {\r
45157                         if (cbInvoked++) return;\r
45158 \r
45159                         io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);\r
45160 \r
45161                         var ok = true;\r
45162                         try {\r
45163                                 if (timedOut) throw 'timeout';\r
45164                                 // extract the server response from the iframe\r
45165                                 var data, doc;\r
45166 \r
45167                                 doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;\r
45168 \r
45169                                 var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);\r
45170                                 log('isXml='+isXml);\r
45171                                 if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {\r
45172                                         if (--domCheckCount) {\r
45173                                                 // in some browsers (Opera) the iframe DOM is not always traversable when\r
45174                                                 // the onload callback fires, so we loop a bit to accommodate\r
45175                                                 cbInvoked = 0;\r
45176                                                 setTimeout(cb, 100);\r
45177                                                 return;\r
45178                                         }\r
45179                                         log('Could not access iframe DOM after 50 tries.');\r
45180                                         return;\r
45181                                 }\r
45182 \r
45183                                 xhr.responseText = doc.body ? doc.body.innerHTML : null;\r
45184                                 xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;\r
45185                                 xhr.getResponseHeader = function(header){\r
45186                                         var headers = {'content-type': opts.dataType};\r
45187                                         return headers[header];\r
45188                                 };\r
45189 \r
45190                                 if (opts.dataType == 'json' || opts.dataType == 'script') {\r
45191                                         // see if user embedded response in textarea\r
45192                                         var ta = doc.getElementsByTagName('textarea')[0];\r
45193                                         if (ta)\r
45194                                                 xhr.responseText = ta.value;\r
45195                                         else {\r
45196                                                 // account for browsers injecting pre around json response\r
45197                                                 var pre = doc.getElementsByTagName('pre')[0];\r
45198                                                 if (pre)\r
45199                                                         xhr.responseText = pre.innerHTML;\r
45200                                         }\r
45201                                 }\r
45202                                 else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {\r
45203                                         xhr.responseXML = toXml(xhr.responseText);\r
45204                                 }\r
45205                                 data = $.httpData(xhr, opts.dataType);\r
45206                         }\r
45207                         catch(e){\r
45208                                 ok = false;\r
45209                                 $.handleError(opts, xhr, 'error', e);\r
45210                         }\r
45211 \r
45212                         // ordering of these callbacks/triggers is odd, but that's how $.ajax does it\r
45213                         if (ok) {\r
45214                                 opts.success(data, 'success');\r
45215                                 if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);\r
45216                         }\r
45217                         if (g) $.event.trigger("ajaxComplete", [xhr, opts]);\r
45218                         if (g && ! --$.active) $.event.trigger("ajaxStop");\r
45219                         if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');\r
45220 \r
45221                         // clean up\r
45222                         setTimeout(function() {\r
45223                                 $io.remove();\r
45224                                 xhr.responseXML = null;\r
45225                         }, 100);\r
45226                 };\r
45227 \r
45228                 function toXml(s, doc) {\r
45229                         if (window.ActiveXObject) {\r
45230                                 doc = new ActiveXObject('Microsoft.XMLDOM');\r
45231                                 doc.async = 'false';\r
45232                                 doc.loadXML(s);\r
45233                         }\r
45234                         else\r
45235                                 doc = (new DOMParser()).parseFromString(s, 'text/xml');\r
45236                         return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;\r
45237                 };\r
45238         };\r
45239 };\r
45240 \r
45241 /**\r
45242  * ajaxForm() provides a mechanism for fully automating form submission.\r
45243  *\r
45244  * The advantages of using this method instead of ajaxSubmit() are:\r
45245  *\r
45246  * 1: This method will include coordinates for <input type="image" /> elements (if the element\r
45247  *      is used to submit the form).\r
45248  * 2. This method will include the submit element's name/value data (for the element that was\r
45249  *      used to submit the form).\r
45250  * 3. This method binds the submit() method to the form for you.\r
45251  *\r
45252  * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely\r
45253  * passes the options argument along after properly binding events for submit elements and\r
45254  * the form itself.\r
45255  */\r
45256 $.fn.ajaxForm = function(options) {\r
45257         return this.ajaxFormUnbind().bind('submit.form-plugin', function() {\r
45258                 $(this).ajaxSubmit(options);\r
45259                 return false;\r
45260         }).bind('click.form-plugin', function(e) {\r
45261                 var target = e.target;\r
45262                 var $el = $(target);\r
45263                 if (!($el.is(":submit,input:image"))) {\r
45264                         // is this a child element of the submit el?  (ex: a span within a button)\r
45265                         var t = $el.closest(':submit');\r
45266                         if (t.length == 0)\r
45267                                 return;\r
45268                         target = t[0];\r
45269                 }\r
45270                 var form = this;\r
45271                 form.clk = target;\r
45272                 if (target.type == 'image') {\r
45273                         if (e.offsetX != undefined) {\r
45274                                 form.clk_x = e.offsetX;\r
45275                                 form.clk_y = e.offsetY;\r
45276                         } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin\r
45277                                 var offset = $el.offset();\r
45278                                 form.clk_x = e.pageX - offset.left;\r
45279                                 form.clk_y = e.pageY - offset.top;\r
45280                         } else {\r
45281                                 form.clk_x = e.pageX - target.offsetLeft;\r
45282                                 form.clk_y = e.pageY - target.offsetTop;\r
45283                         }\r
45284                 }\r
45285                 // clear form vars\r
45286                 setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);\r
45287         });\r
45288 };\r
45289 \r
45290 // ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm\r
45291 $.fn.ajaxFormUnbind = function() {\r
45292         return this.unbind('submit.form-plugin click.form-plugin');\r
45293 };\r
45294 \r
45295 /**\r
45296  * formToArray() gathers form element data into an array of objects that can\r
45297  * be passed to any of the following ajax functions: $.get, $.post, or load.\r
45298  * Each object in the array has both a 'name' and 'value' property.  An example of\r
45299  * an array for a simple login form might be:\r
45300  *\r
45301  * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]\r
45302  *\r
45303  * It is this array that is passed to pre-submit callback functions provided to the\r
45304  * ajaxSubmit() and ajaxForm() methods.\r
45305  */\r
45306 $.fn.formToArray = function(semantic) {\r
45307         var a = [];\r
45308         if (this.length == 0) return a;\r
45309 \r
45310         var form = this[0];\r
45311         var els = semantic ? form.getElementsByTagName('*') : form.elements;\r
45312         if (!els) return a;\r
45313         for(var i=0, max=els.length; i < max; i++) {\r
45314                 var el = els[i];\r
45315                 var n = el.name;\r
45316                 if (!n) continue;\r
45317 \r
45318                 if (semantic && form.clk && el.type == "image") {\r
45319                         // handle image inputs on the fly when semantic == true\r
45320                         if(!el.disabled && form.clk == el) {\r
45321                                 a.push({name: n, value: $(el).val()});\r
45322                                 a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\r
45323                         }\r
45324                         continue;\r
45325                 }\r
45326 \r
45327                 var v = $.fieldValue(el, true);\r
45328                 if (v && v.constructor == Array) {\r
45329                         for(var j=0, jmax=v.length; j < jmax; j++)\r
45330                                 a.push({name: n, value: v[j]});\r
45331                 }\r
45332                 else if (v !== null && typeof v != 'undefined')\r
45333                         a.push({name: n, value: v});\r
45334         }\r
45335 \r
45336         if (!semantic && form.clk) {\r
45337                 // input type=='image' are not found in elements array! handle it here\r
45338                 var $input = $(form.clk), input = $input[0], n = input.name;\r
45339                 if (n && !input.disabled && input.type == 'image') {\r
45340                         a.push({name: n, value: $input.val()});\r
45341                         a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});\r
45342                 }\r
45343         }\r
45344         return a;\r
45345 };\r
45346 \r
45347 /**\r
45348  * Serializes form data into a 'submittable' string. This method will return a string\r
45349  * in the format: name1=value1&amp;name2=value2\r
45350  */\r
45351 $.fn.formSerialize = function(semantic) {\r
45352         //hand off to jQuery.param for proper encoding\r
45353         return $.param(this.formToArray(semantic));\r
45354 };\r
45355 \r
45356 /**\r
45357  * Serializes all field elements in the jQuery object into a query string.\r
45358  * This method will return a string in the format: name1=value1&amp;name2=value2\r
45359  */\r
45360 $.fn.fieldSerialize = function(successful) {\r
45361         var a = [];\r
45362         this.each(function() {\r
45363                 var n = this.name;\r
45364                 if (!n) return;\r
45365                 var v = $.fieldValue(this, successful);\r
45366                 if (v && v.constructor == Array) {\r
45367                         for (var i=0,max=v.length; i < max; i++)\r
45368                                 a.push({name: n, value: v[i]});\r
45369                 }\r
45370                 else if (v !== null && typeof v != 'undefined')\r
45371                         a.push({name: this.name, value: v});\r
45372         });\r
45373         //hand off to jQuery.param for proper encoding\r
45374         return $.param(a);\r
45375 };\r
45376 \r
45377 /**\r
45378  * Returns the value(s) of the element in the matched set.  For example, consider the following form:\r
45379  *\r
45380  *  <form><fieldset>\r
45381  *        <input name="A" type="text" />\r
45382  *        <input name="A" type="text" />\r
45383  *        <input name="B" type="checkbox" value="B1" />\r
45384  *        <input name="B" type="checkbox" value="B2"/>\r
45385  *        <input name="C" type="radio" value="C1" />\r
45386  *        <input name="C" type="radio" value="C2" />\r
45387  *  </fieldset></form>\r
45388  *\r
45389  *  var v = $(':text').fieldValue();\r
45390  *  // if no values are entered into the text inputs\r
45391  *  v == ['','']\r
45392  *  // if values entered into the text inputs are 'foo' and 'bar'\r
45393  *  v == ['foo','bar']\r
45394  *\r
45395  *  var v = $(':checkbox').fieldValue();\r
45396  *  // if neither checkbox is checked\r
45397  *  v === undefined\r
45398  *  // if both checkboxes are checked\r
45399  *  v == ['B1', 'B2']\r
45400  *\r
45401  *  var v = $(':radio').fieldValue();\r
45402  *  // if neither radio is checked\r
45403  *  v === undefined\r
45404  *  // if first radio is checked\r
45405  *  v == ['C1']\r
45406  *\r
45407  * The successful argument controls whether or not the field element must be 'successful'\r
45408  * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).\r
45409  * The default value of the successful argument is true.  If this value is false the value(s)\r
45410  * for each element is returned.\r
45411  *\r
45412  * Note: This method *always* returns an array.  If no valid value can be determined the\r
45413  *         array will be empty, otherwise it will contain one or more values.\r
45414  */\r
45415 $.fn.fieldValue = function(successful) {\r
45416         for (var val=[], i=0, max=this.length; i < max; i++) {\r
45417                 var el = this[i];\r
45418                 var v = $.fieldValue(el, successful);\r
45419                 if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))\r
45420                         continue;\r
45421                 v.constructor == Array ? $.merge(val, v) : val.push(v);\r
45422         }\r
45423         return val;\r
45424 };\r
45425 \r
45426 /**\r
45427  * Returns the value of the field element.\r
45428  */\r
45429 $.fieldValue = function(el, successful) {\r
45430         var n = el.name, t = el.type, tag = el.tagName.toLowerCase();\r
45431         if (typeof successful == 'undefined') successful = true;\r
45432 \r
45433         if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||\r
45434                 (t == 'checkbox' || t == 'radio') && !el.checked ||\r
45435                 (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||\r
45436                 tag == 'select' && el.selectedIndex == -1))\r
45437                         return null;\r
45438 \r
45439         if (tag == 'select') {\r
45440                 var index = el.selectedIndex;\r
45441                 if (index < 0) return null;\r
45442                 var a = [], ops = el.options;\r
45443                 var one = (t == 'select-one');\r
45444                 var max = (one ? index+1 : ops.length);\r
45445                 for(var i=(one ? index : 0); i < max; i++) {\r
45446                         var op = ops[i];\r
45447                         if (op.selected) {\r
45448                                 var v = op.value;\r
45449                                 if (!v) // extra pain for IE...\r
45450                                         v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;\r
45451                                 if (one) return v;\r
45452                                 a.push(v);\r
45453                         }\r
45454                 }\r
45455                 return a;\r
45456         }\r
45457         return el.value;\r
45458 };\r
45459 \r
45460 /**\r
45461  * Clears the form data.  Takes the following actions on the form's input fields:\r
45462  *  - input text fields will have their 'value' property set to the empty string\r
45463  *  - select elements will have their 'selectedIndex' property set to -1\r
45464  *  - checkbox and radio inputs will have their 'checked' property set to false\r
45465  *  - inputs of type submit, button, reset, and hidden will *not* be effected\r
45466  *  - button elements will *not* be effected\r
45467  */\r
45468 $.fn.clearForm = function() {\r
45469         return this.each(function() {\r
45470                 $('input,select,textarea', this).clearFields();\r
45471         });\r
45472 };\r
45473 \r
45474 /**\r
45475  * Clears the selected form elements.\r
45476  */\r
45477 $.fn.clearFields = $.fn.clearInputs = function() {\r
45478         return this.each(function() {\r
45479                 var t = this.type, tag = this.tagName.toLowerCase();\r
45480                 if (t == 'text' || t == 'password' || tag == 'textarea')\r
45481                         this.value = '';\r
45482                 else if (t == 'checkbox' || t == 'radio')\r
45483                         this.checked = false;\r
45484                 else if (tag == 'select')\r
45485                         this.selectedIndex = -1;\r
45486         });\r
45487 };\r
45488 \r
45489 /**\r
45490  * Resets the form data.  Causes all form elements to be reset to their original value.\r
45491  */\r
45492 $.fn.resetForm = function() {\r
45493         return this.each(function() {\r
45494                 // guard against an input with the name of 'reset'\r
45495                 // note that IE reports the reset function as an 'object'\r
45496                 if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))\r
45497                         this.reset();\r
45498         });\r
45499 };\r
45500 \r
45501 /**\r
45502  * Enables or disables any matching elements.\r
45503  */\r
45504 $.fn.enable = function(b) {\r
45505         if (b == undefined) b = true;\r
45506         return this.each(function() {\r
45507                 this.disabled = !b;\r
45508         });\r
45509 };\r
45510 \r
45511 /**\r
45512  * Checks/unchecks any matching checkboxes or radio buttons and\r
45513  * selects/deselects and matching option elements.\r
45514  */\r
45515 $.fn.selected = function(select) {\r
45516         if (select == undefined) select = true;\r
45517         return this.each(function() {\r
45518                 var t = this.type;\r
45519                 if (t == 'checkbox' || t == 'radio')\r
45520                         this.checked = select;\r
45521                 else if (this.tagName.toLowerCase() == 'option') {\r
45522                         var $sel = $(this).parent('select');\r
45523                         if (select && $sel[0] && $sel[0].type == 'select-one') {\r
45524                                 // deselect all other options\r
45525                                 $sel.find('option').selected(false);\r
45526                         }\r
45527                         this.selected = select;\r
45528                 }\r
45529         });\r
45530 };\r
45531 \r
45532 // helper fn for console logging\r
45533 // set $.fn.ajaxSubmit.debug to true to enable debug logging\r
45534 function log() {\r
45535         if ($.fn.ajaxSubmit.debug && window.console && window.console.log)\r
45536                 window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));\r
45537 };\r
45538 \r
45539 })(jQuery);\r
45540 \r
45541 //Licensed under The MIT License\r
45542 //Copyright (c) 2008 Jason Frame (jason@onehackoranother.com)\r
45543 (function($){$.fn.tipsy=function(g){g=$.extend({fade:false,gravity:'n'},g||{});if(!g['offsetTop']){g['offsetTop']=0}if(!g['offsetLeft']){g['offsetLeft']=0}if(!g['header']){g['header']=''}if(!g['footer']){g['footer']=''}if(!g['hideTimeout']){g['hideTimeout']=100}if(!g['showTimeout']){g['hideTimeout']=0}if(!g['additionalCSSClass']){g['additionalCSSClass']=''}var h=false;var i=null,cancelHide=false;this.hover(function(){var a=$(this).text();var b=g['header'].replace('%{link}',a);var c=g['footer'].replace('%{link}',a);$.data(this,'cancel.tipsy',true);var d=$.data(this,'active.tipsy');if(!d){$('.tipsy').hide();d=$('<div class="tipsy '+g['additionalCSSClass']+'"><div class="tipsy-inner">'+b+$(this).attr('title')+c+'</div></div>');d.css({position:'absolute',zIndex:100000});$(this).attr('title','');$.data(this,'active.tipsy',d)}else if($(this).attr('title')!=''){d.find('.tipsy-inner').html($(this).attr('title'));$(this).attr('title','')}var e=$.extend({},$(this).offset(),{width:this.offsetWidth,height:this.offsetHeight});e.top=e.top+g['offsetTop'];e.left=e.left+g['offsetLeft'];$('.tipsy').hide();d.remove().css({top:0,left:0,visibility:'hidden',display:'block'}).appendTo(document.body);var f=d[0].offsetWidth,actualHeight=d[0].offsetHeight;switch(g.gravity.charAt(0)){case'n':d.css({top:e.top+e.height,left:e.left+e.width/2-f/2}).addClass('tipsy-north');break;case'l':d.css({top:e.top+e.height,left:e.left+e.width/2-18}).addClass('tipsy-north');break;case's':d.css({top:e.top-actualHeight,left:e.left+e.width/2-f/2}).addClass('tipsy-south');break;case'e':d.css({top:e.top+e.height/2-actualHeight/2,left:e.left-f}).addClass('tipsy-east');break;case'w':d.css({top:e.top+e.height/2-actualHeight/2,left:e.left+e.width}).addClass('tipsy-west');break}function show(){if(g.fade){d.css({opacity:0,display:'block',visibility:'visible'}).animate({opacity:1})}else{d.css({visibility:'visible'})}}if(g['showTimeout']){h=setTimeout(show,g['showTimeout'])}else{show()}},function(){clearTimeout(h);$.data(this,'cancel.tipsy',false);var b=this;setTimeout(function(){if($.data(this,'cancel.tipsy'))return;var a=$.data(b,'active.tipsy');if(g.fade){a.stop().fadeOut(function(){$(this).remove()})}else{a.remove()}},g['hideTimeout'])})}})(jQuery);\r
45544 \r
45545 /*\r
45546   Shamless port of http://github.com/defunkt/mustache\r
45547   by Jan Lehnardt <jan@apache.org>, Alexander Lang <alex@upstream-berlin.com>,\r
45548      Sebastian Cohnen <sebastian.cohnen@googlemail.com>\r
45549 \r
45550   Thanks @defunkt for the awesome code.\r
45551 \r
45552   See http://github.com/defunkt/mustache for more info.\r
45553 */\r
45554 \r
45555 var Mustache = function() {\r
45556   var Renderer = function() {};\r
45557 \r
45558   Renderer.prototype = {\r
45559     otag: "{{",\r
45560     ctag: "}}",\r
45561 \r
45562     render: function(template, context, partials) {\r
45563       // fail fast\r
45564       if (template.indexOf(this.otag) == -1) {\r
45565         return template;\r
45566       }\r
45567 \r
45568       var html = this.render_section(template, context, partials);\r
45569       html = this.render_i18n(html);\r
45570       return this.render_tags(html, context, partials);\r
45571     },\r
45572 \r
45573     /*\r
45574       Tries to find a partial in the global scope and render it\r
45575     */\r
45576     render_partial: function(name, context, partials) {\r
45577       if(typeof(context[name]) != "object") {\r
45578         throw({message: "subcontext for '" + name + "' is not an object"});\r
45579       }\r
45580             if(!partials || !partials[name]) {\r
45581         throw({message: "unknown_partial"});\r
45582       }\r
45583       return this.render(partials[name], context[name], partials);\r
45584     },\r
45585 \r
45586     /*\r
45587       Renders boolean and enumerable sections\r
45588     */\r
45589     render_section: function(template, context, partials) {\r
45590       var hasConditional = (template.indexOf(this.otag + "#") == -1)\r
45591       var hasNegation = (template.indexOf(this.otag + "!") == -1)\r
45592       if(!hasConditional && !hasNegation) {\r
45593         return template;\r
45594       }\r
45595       var that = this;\r
45596 \r
45597       // CSW - Added "+?" so it finds the tighest bound, not the widest\r
45598       var regex = new RegExp(this.otag + "(\\#|\\~)(.+)" + this.ctag +\r
45599               "\\s*([\\s\\S]+?)" + this.otag + "\\/\\2" + this.ctag + "\\s*", "mg");\r
45600 \r
45601       // for each {{#foo}}{{/foo}} section do...\r
45602       // and will also render negated sections with {{~foo}}{{/foo}}\r
45603       return template.replace(regex, function(match, operation, name, content) {\r
45604         var value = that.find(name, context);\r
45605         if(that.is_array(value)) { // Enumerable, Let's loop!\r
45606           return that.map(value, function(row) {\r
45607             return that.render(content, that.merge(context,\r
45608                     that.create_context(row)), partials);\r
45609           }).join('');\r
45610         } else if(operation == "#" && !twttr.is.falsy(value)) { // boolean section\r
45611           return that.render(content, context, partials);\r
45612         }  else if(operation == "~" && twttr.is.falsy(value)) {\r
45613           return that.render(content, context, partials);\r
45614         } else {\r
45615           return "";\r
45616         }\r
45617       });\r
45618     },\r
45619 \r
45620     render_i18n: function(html) {\r
45621       if (html.indexOf(this.otag + "_i") == -1) {\r
45622         return html;\r
45623       }\r
45624       var that = this;\r
45625       var regex = new RegExp(this.otag + "\\_i" + this.ctag +\r
45626               "\\s*([\\s\\S]+?)" + this.otag + "\\/i" + this.ctag + "\\s*", "mg");\r
45627       // for each {{_i}}{{/i}} section do...\r
45628       return html.replace(regex, function(match, content) {\r
45629         return _(content);\r
45630       });\r
45631     },\r
45632 \r
45633     /*\r
45634       Replace {{foo}} and friends with values from our view\r
45635     */\r
45636     render_tags: function(template, context, partials) {\r
45637       var lines = template.split("\n");\r
45638 \r
45639       var new_regex = function() {\r
45640         return new RegExp(that.otag + "(=|!|<|\\{)?([^\/#]+?)\\1?" +\r
45641           that.ctag + "+", "g");\r
45642       };\r
45643 \r
45644       // tit for tat\r
45645       var that = this;\r
45646 \r
45647       var regex = new_regex();\r
45648       for (var i=0; i < lines.length; i++) {\r
45649         lines[i] = lines[i].replace(regex, function (match, operator, name) {\r
45650           switch(operator) {\r
45651             case "!": // ignore comments\r
45652               return match;\r
45653             case "=": // set new delimiters, rebuild the replace regexp\r
45654               that.set_delimiters(name);\r
45655               regex = new_regex();\r
45656               // redo the line in order to get tags with the new delimiters\r
45657               // on the same line\r
45658               i--;\r
45659               return "";\r
45660             case "<": // render partial\r
45661               return that.render_partial(name, context, partials);\r
45662             case "{": // the triple mustache is unescaped\r
45663               var value = that.find(name, context);\r
45664               return twttr.is.def(value) ? value : "";\r
45665             default: // escape the value\r
45666               var value = that.find(name, context);\r
45667               return twttr.is.def(value) ? that.escape(value) : "";\r
45668           }\r
45669         },this);\r
45670       };\r
45671       return lines.join("\n");\r
45672     },\r
45673 \r
45674     set_delimiters: function(delimiters) {\r
45675       var dels = delimiters.split(" ");\r
45676       this.otag = this.escape_regex(dels[0]);\r
45677       this.ctag = this.escape_regex(dels[1]);\r
45678     },\r
45679 \r
45680     escape_regex: function(text) {\r
45681       // thank you Simon Willison\r
45682       if(!arguments.callee.sRE) {\r
45683         var specials = [\r
45684           '/', '.', '*', '+', '?', '|',\r
45685           '(', ')', '[', ']', '{', '}', '\\'\r
45686         ];\r
45687         arguments.callee.sRE = new RegExp(\r
45688           '(\\' + specials.join('|\\') + ')', 'g'\r
45689         );\r
45690       }\r
45691     return text.replace(arguments.callee.sRE, '\\$1');\r
45692     },\r
45693 \r
45694     /*\r
45695       find `name` in current `context`. That is find me a value\r
45696       from the view object\r
45697     */\r
45698     find: function(name, context) {\r
45699       name = this.trim(name);\r
45700       if (twttr.is.def(context) && typeof context[name] === "function") {\r
45701         return context[name].apply(context);\r
45702       }\r
45703       if (context && context[name] !== undefined && context[name] !== null) {\r
45704         return context[name];\r
45705       } else {\r
45706         return undefined;\r
45707       }\r
45708     },\r
45709 \r
45710     i18n: function(name, context) {\r
45711       console.log("i18n", name, context);\r
45712       return _(this.trim(name));\r
45713     },\r
45714 \r
45715     // Utility methods\r
45716 \r
45717     /*\r
45718       Does away with nasty characters\r
45719     */\r
45720     escape: function(s) {\r
45721       return s.toString().replace(/[&"<>\\]/g, function(s) {\r
45722         switch(s) {\r
45723           case "&": return "&amp;";\r
45724           case "\\": return "\\\\";;\r
45725           case '"': return '\"';;\r
45726           case "<": return "&lt;";\r
45727           case ">": return "&gt;";\r
45728           default: return s;\r
45729         }\r
45730       });\r
45731     },\r
45732 \r
45733     /*\r
45734       Merges all properties of object `b` into object `a`.\r
45735       `b.property` overwrites a.property`\r
45736     */\r
45737     merge: function(a, b) {\r
45738       var _new = {};\r
45739       for(var name in a) {\r
45740         if(a.hasOwnProperty(name)) {\r
45741           _new[name] = a[name];\r
45742         }\r
45743       };\r
45744       for(var name in b) {\r
45745         if(b.hasOwnProperty(name)) {\r
45746           _new[name] = b[name];\r
45747         }\r
45748       };\r
45749       return _new;\r
45750     },\r
45751 \r
45752     create_context: function(_context) {\r
45753       if(this.is_object(_context)) {\r
45754         return _context;\r
45755       } else {\r
45756         return {'.': _context};\r
45757       }\r
45758     },\r
45759 \r
45760     is_object: function(a) {\r
45761       return a && typeof a == 'object'\r
45762     },\r
45763 \r
45764     /*\r
45765       Thanks Doug Crockford\r
45766       JavaScript Ã¢\80\94 The Good Parts lists an alternative that works better with\r
45767       frames. Frames can suck it, we use the simple version.\r
45768     */\r
45769     is_array: function(a) {\r
45770       return (a &&\r
45771         typeof a === 'object' &&\r
45772         a.constructor === Array);\r
45773     },\r
45774 \r
45775     /*\r
45776       Gets rid of leading and trailing whitespace\r
45777     */\r
45778     trim: function(s) {\r
45779       return s.replace(/^\s*|\s*$/g, '');\r
45780     },\r
45781 \r
45782     /*\r
45783       Why, why, why? Because IE. Cry, cry cry.\r
45784     */\r
45785     map: function(array, fn) {\r
45786       if (typeof array.map == "function") {\r
45787         return array.map(fn)\r
45788       } else {\r
45789         var r = [];\r
45790         var l = array.length;\r
45791         for(i=0;i<l;i++) {\r
45792           r.push(fn(array[i]));\r
45793         }\r
45794         return r;\r
45795       }\r
45796     }\r
45797   };\r
45798 \r
45799   return({\r
45800     name: "mustache.js",\r
45801     version: "0.1",\r
45802 \r
45803     /*\r
45804       Turns a template and view into HTML\r
45805     */\r
45806     to_html: function(template, view, partials) {\r
45807       return new Renderer().render(template, view, partials);\r
45808     }\r
45809   });\r
45810 }();\r
45811 \r
45812 \r
45813 \r
45814 (function(A){A.fn.dismissable=function(B){var D=A(this);var C={authenticity_token:twttr.form_authenticity_token,_method:"put"};C["user["+B.userAttribute+"]"]="1";D.find("a.dismiss").click(function(){D.hide();A.ajax({type:"POST",url:B.userUrl,data:C});return false});return this}})(jQuery);\r
45815 \r
45816 \r
45817 \r
45818 //<![CDATA[\r
45819   page.summizeSearchUrl = 'http://integratedsearch.twitter.com/search.html';\r
45820   page.query = '';\r
45821   page.locale = 'en';\r
45822   \r
45823       page.controller_name = 'TimelineController';\r
45824       page.action_name = 'home';\r
45825       twttr.form_authenticity_token = 'a96df982cd10e7cbdaaa0f2de38e43023d08d2de';\r
45826       $.ajaxSetup({ data: { authenticity_token: 'a96df982cd10e7cbdaaa0f2de38e43023d08d2de' } });\r
45827 \r
45828       // FIXME: Reconcile with the kinds on the Status model.\r
45829       twttr.statusKinds = {\r
45830         UPDATE: 1,\r
45831         SHARE: 2\r
45832       };\r
45833       twttr.ListPerUserLimit = 20;\r
45834       \r
45835     \r
45836 //]]>\r
45837 \r
45838 \r
45839 \r
45840 //<![CDATA[\r
45841 \r
45842       $( function () {\r
45843         $('#latest_status').isCurrentStatus();  $('#direct_message_form').isDirectMessageForm();\r
45844     $('.new-list').isNewListLink();\r
45845     $('#local_trends').isLocationTrends();\r
45846     $('.new-list-banner').isNewListLink();\r
45847     initializePage('home');\r
45848   $('.embedded_media_icon').isEmbeddedMediaExpander();\r
45849   $('#user_alert_bulletin').isAlertBox();\r
45850   \r
45851 \r
45852       });\r
45853     \r
45854 //]]>\r
45855 \r
45856 \r
45857 \r
45858     var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");\r
45859     document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));\r
45860   \r
45861 \r
45862 \r
45863 \r
45864 (function(){var aa="_gat",ba="_gaq",r=true,v=false,w=undefined,ca="4.6.5",x="length",y="cookie",A="location",B="&",C="=",D="__utma=",E="__utmb=",G="__utmc=",da="__utmk=",H="__utmv=",J="__utmz=",K="__utmx=",L="GASO=";var N=function(i){return w==i||"-"==i||""==i},ea=function(i){return i[x]>0&&" \n\r\t".indexOf(i)>-1},P=function(i,l,g){var t="-",k;if(!N(i)&&!N(l)&&!N(g)){k=i.indexOf(l);if(k>-1){g=i.indexOf(g,k);if(g<0)g=i[x];t=O(i,k+l.indexOf(C)+1,g)}}return t},Q=function(i){var l=v,g=0,t,k;if(!N(i)){l=r;for(t=0;t<i[x];t++){k=i.charAt(t);g+="."==k?1:0;l=l&&g<=1&&(0==t&&"-"==k||".0123456789".indexOf(k)>-1)}}return l},S=function(i,l){var g=encodeURIComponent;return g instanceof Function?l?encodeURI(i):g(i):escape(i)},\r
45865 T=function(i,l){var g=decodeURIComponent,t;i=i.split("+").join(" ");if(g instanceof Function)try{t=l?decodeURI(i):g(i)}catch(k){t=unescape(i)}else t=unescape(i);return t},U=function(i,l){return i.indexOf(l)>-1},V=function(i,l){i[i[x]]=l},W=function(i){return i.toLowerCase()},X=function(i,l){return i.split(l)},fa=function(i,l){return i.indexOf(l)},O=function(i,l,g){g=w==g?i[x]:g;return i.substring(l,g)},ga=function(i,l){return i.join(l)},ia=function(i){var l=1,g=0,t;if(!N(i)){l=0;for(t=i[x]-1;t>=0;t--){g=\r
45866 i.charCodeAt(t);l=(l<<6&268435455)+g+(g<<14);g=l&266338304;l=g!=0?l^g>>21:l}}return l},ja=function(){var i=window,l=w;if(i&&i.gaGlobal&&i.gaGlobal.hid)l=i.gaGlobal.hid;else{l=Y();i.gaGlobal=i.gaGlobal?i.gaGlobal:{};i.gaGlobal.hid=l}return l},Y=function(){return Math.round(Math.random()*2147483647)},Z={Ha:function(i,l){this.bb=i;this.nb=l},ib:v,_gasoDomain:w,_gasoCPath:w};Z.Gb=function(){function i(k){return new t(k[0],k[1])}function l(k){var p=[];k=k.split(",");var f;for(f=0;f<k.length;++f)p.push(i(k[f].split(":")));return p}var g=this,t=Z.Ha;g.Ia="utm_campaign";g.Ja="utm_content";g.Ka="utm_id";g.La="utm_medium";g.Ma="utm_nooverride";g.Na="utm_source";g.Oa="utm_term";g.Pa="gclid";g.ba=0;g.z=0;g.Ta=15768E6;g.sb=18E5;g.v=63072E6;g.ta=[];g.va=[];g.nc="cse";g.oc="q";g.ob=5;g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");\r
45867 g.t=w;g.lb=v;g.h="/";g.U=100;g.oa="/__utm.gif";g.ga=1;g.ha=1;g.u="|";g.fa=1;g.da=1;g.Ra=1;g.b="auto";g.I=1;g.ra=1E3;g.Jc=10;g.Pb=10;g.Kc=0.2;g.o=w;g.a=document;g.e=window};Z.Hb=function(i){function l(d,a,j,c){var n="",s=0;n=P(d,"2"+a,";");if(!N(n)){d=n.indexOf("^"+j+".");if(d<0)return["",0];n=O(n,d+j[x]+2);if(n.indexOf("^")>0)n=n.split("^")[0];j=n.split(":");n=j[1];s=parseInt(j[0],10);if(!c&&s<p.r)n=""}if(N(n))n="";return[n,s]}function g(d,a){return"^"+ga([[a,d[1]].join("."),d[0]],":")}function t(d,a){f.a[y]=d+"; path="+f.h+"; "+a+p.fb()}function k(d){var a=new Date;d=new Date(a.getTime()+d);return"expires="+d.toGMTString()+"; "}var p=this,f=i;p.r=(new Date).getTime();\r
45868 var h=[D,E,G,J,H,K,L];p.k=function(){var d=f.a[y];return f.o?p.Wb(d,f.o):d};p.Wb=function(d,a){var j=[],c,n;for(c=0;c<h[x];c++){n=l(d,h[c],a)[0];N(n)||(j[j[x]]=h[c]+n+";")}return j.join("")};p.l=function(d,a,j){var c=j>0?k(j):"";if(f.o){a=p.kc(f.a[y],d,f.o,a,j);d="2"+d;c=j>0?k(f.v):""}t(d+a,c)};p.kc=function(d,a,j,c,n){var s="";n=n||f.v;c=g([c,p.r+n*1],j);s=P(d,"2"+a,";");if(!N(s)){d=g(l(d,a,j,r),j);s=ga(s.split(d),"");return s=c+s}return c};p.fb=function(){return N(f.b)?"":"domain="+f.b+";"}};Z.$=function(i){function l(b){b=b instanceof Array?b.join("."):"";return N(b)?"-":b}function g(b,e){var o=[];if(!N(b)){o=b.split(".");if(e)for(b=0;b<o[x];b++)Q(o[b])||(o[b]="-")}return o}function t(b,e,o){var m=c.M,q,u;for(q=0;q<m[x];q++){u=m[q][0];u+=N(e)?e:e+m[q][4];m[q][2](P(b,u,o))}}var k,p,f,h,d,a,j,c=this,n,s=i;c.j=new Z.Hb(i);c.kb=function(){return w==n||n==c.P()};c.k=function(){return c.j.k()};c.ma=function(){return d?d:"-"};c.vb=function(b){d=b};c.za=function(b){n=Q(b)?b*1:"-"};c.la=function(){return l(a)};\r
45869 c.Aa=function(b){a=g(b)};c.Vb=function(){c.j.l(H,"",-1)};c.lc=function(){return n?n:"-"};c.fb=function(){return N(s.b)?"":"domain="+s.b+";"};c.ja=function(){return l(k)};c.tb=function(b){k=g(b,1)};c.C=function(){return l(p)};c.ya=function(b){p=g(b,1)};c.ka=function(){return l(f)};c.ub=function(b){f=g(b,1)};c.na=function(){return l(h)};c.wb=function(b){h=g(b);for(b=0;b<h[x];b++)if(b<4&&!Q(h[b]))h[b]="-"};c.fc=function(){return j};c.Dc=function(b){j=b};c.Sb=function(){k=[];p=[];f=[];h=[];d=w;a=[];n=\r
45870 w};c.P=function(){var b="",e;for(e=0;e<c.M[x];e++)b+=c.M[e][1]();return ia(b)};c.ua=function(b){var e=c.k(),o=v;if(e){t(e,b,";");c.za(c.P());o=r}return o};c.zc=function(b){t(b,"",B);c.za(P(b,da,B))};c.Hc=function(){var b=c.M,e=[],o;for(o=0;o<b[x];o++)V(e,b[o][0]+b[o][1]());V(e,da+c.P());return e.join(B)};c.Nc=function(b,e){var o=c.M,m=s.h;c.ua(b);s.h=e;for(b=0;b<o[x];b++)N(o[b][1]())||o[b][3]();s.h=m};c.Cb=function(){c.j.l(D,c.ja(),s.v)};c.Ea=function(){c.j.l(E,c.C(),s.sb)};c.Db=function(){c.j.l(G,\r
45871 c.ka(),0)};c.Ga=function(){c.j.l(J,c.na(),s.Ta)};c.Eb=function(){c.j.l(K,c.ma(),s.v)};c.Fa=function(){c.j.l(H,c.la(),s.v)};c.Oc=function(){c.j.l(L,c.fc(),0)};c.M=[[D,c.ja,c.tb,c.Cb,"."],[E,c.C,c.ya,c.Ea,""],[G,c.ka,c.ub,c.Db,""],[K,c.ma,c.vb,c.Eb,""],[J,c.na,c.wb,c.Ga,"."],[H,c.la,c.Aa,c.Fa,"."]]};Z.Kb=function(i){var l=this,g=i,t=new Z.$(g),k=function(){},p=function(f){var h=(new Date).getTime(),d;d=(h-f[3])*(g.Kc/1E3);if(d>=1){f[2]=Math.min(Math.floor(f[2]*1+d),g.Pb);f[3]=h}return f};l.H=function(f,h,d,a,j,c){var n,s=g.I,b=g.a[A];t.ua(d);n=X(t.C(),".");if(n[1]<500||a){if(j)n=p(n);if(a||!j||n[2]>=1){if(!a&&j)n[2]=n[2]*1-1;n[1]=n[1]*1+1;f="?utmwv="+ca+"&utmn="+Y()+(N(b.hostname)?"":"&utmhn="+S(b.hostname))+(g.U==100?"":"&utmsp="+S(g.U))+f;if(0==s||2==s){a=2==s?k:c||k;l.$a(g.oa+f,a)}if(1==s||\r
45872 2==s){f=("https:"==b.protocol?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif")+f+"&utmac="+h+"&utmcc="+l.ac(d);if(ka)f+="&gaq=1";l.$a(f,c)}}}t.ya(n.join("."));t.Ea()};l.$a=function(f,h){var d=new Image(1,1);d.src=f;d.onload=function(){d.onload=null;(h||k)()}};l.ac=function(f){var h=[],d=[D,J,H,K],a,j=t.k(),c;for(a=0;a<d[x];a++){c=P(j,d[a]+f,";");if(!N(c)){if(d[a]==H){c=X(c.split(f+".")[1],"|")[0];if(N(c))continue;c=f+"."+c}V(h,d[a]+c+";")}}return S(h.join("+"))}};Z.n=function(){var i=this;i.Y=[];i.hb=function(l){var g,t=i.Y,k;for(k=0;k<t.length;k++)g=l==t[k].q?t[k]:g;return g};i.Ob=function(l,g,t,k,p,f,h,d){var a=i.hb(l);if(w==a){a=new Z.n.Mb(l,g,t,k,p,f,h,d);V(i.Y,a)}else{a.Qa=g;a.Ab=t;a.zb=k;a.xb=p;a.Xa=f;a.yb=h;a.Za=d}return a}};Z.n.Lb=function(i,l,g,t,k,p){var f=this;f.Bb=i;f.Ba=l;f.D=g;f.Va=t;f.pb=k;f.qb=p;f.Ca=function(){return"&"+["utmt=item","tid="+S(f.Bb),"ipc="+S(f.Ba),"ipn="+S(f.D),"iva="+S(f.Va),"ipr="+S(f.pb),"iqt="+S(f.qb)].join("&utm")}};\r
45873 Z.n.Mb=function(i,l,g,t,k,p,f,h){var d=this;d.q=i;d.Qa=l;d.Ab=g;d.zb=t;d.xb=k;d.Xa=p;d.yb=f;d.Za=h;d.R=[];d.Nb=function(a,j,c,n,s){var b=d.gc(a),e=d.q;if(w==b)V(d.R,new Z.n.Lb(e,a,j,c,n,s));else{b.Bb=e;b.Ba=a;b.D=j;b.Va=c;b.pb=n;b.qb=s}};d.gc=function(a){var j,c=d.R,n;for(n=0;n<c.length;n++)j=a==c[n].Ba?c[n]:j;return j};d.Ca=function(){return"&"+["utmt=tran","id="+S(d.q),"st="+S(d.Qa),"to="+S(d.Ab),"tx="+S(d.zb),"sp="+S(d.xb),"ci="+S(d.Xa),"rg="+S(d.yb),"co="+S(d.Za)].join("&utmt")}};Z.Fb=function(i){function l(){var f,h,d;h="ShockwaveFlash";var a="$version",j=k.d?k.d.plugins:w;if(j&&j[x]>0)for(f=0;f<j[x]&&!d;f++){h=j[f];if(U(h.name,"Shockwave Flash"))d=h.description.split("Shockwave Flash ")[1]}else{h=h+"."+h;try{f=new ActiveXObject(h+".7");d=f.GetVariable(a)}catch(c){}if(!d)try{f=new ActiveXObject(h+".6");d="WIN 6,0,21,0";f.AllowScriptAccess="always";d=f.GetVariable(a)}catch(n){}if(!d)try{f=new ActiveXObject(h);d=f.GetVariable(a)}catch(s){}if(d){d=X(d.split(" ")[1],",");d=d[0]+\r
45874 "."+d[1]+" r"+d[2]}}return d?d:p}var g=i,t=g.e,k=this,p="-";k.V=t.screen;k.Sa=!k.V&&t.java?java.awt.Toolkit.getDefaultToolkit():w;k.d=t.navigator;k.W=p;k.xa=p;k.Wa=p;k.qa=p;k.pa=1;k.eb=p;k.bc=function(){var f;if(t.screen){k.W=k.V.width+"x"+k.V.height;k.xa=k.V.colorDepth+"-bit"}else if(k.Sa)try{f=k.Sa.getScreenSize();k.W=f.width+"x"+f.height}catch(h){}k.qa=W(k.d&&k.d.language?k.d.language:k.d&&k.d.browserLanguage?k.d.browserLanguage:p);k.pa=k.d&&k.d.javaEnabled()?1:0;k.eb=g.ha?l():p;k.Wa=S(g.a.characterSet?\r
45875 g.a.characterSet:g.a.charset?g.a.charset:p)};k.Ic=function(){return B+"utm"+["cs="+S(k.Wa),"sr="+k.W,"sc="+k.xa,"ul="+k.qa,"je="+k.pa,"fl="+S(k.eb)].join("&utm")};k.$b=function(){var f=g.a,h=t.history[x];f=k.d.appName+k.d.version+k.qa+k.d.platform+k.d.userAgent+k.pa+k.W+k.xa+(f[y]?f[y]:"")+(f.referrer?f.referrer:"");for(var d=f[x];h>0;)f+=h--^d++;return ia(f)}};Z.m=function(i,l,g,t){function k(d){var a="";d=W(d.split("://")[1]);if(U(d,"/")){d=d.split("/")[1];if(U(d,"?"))a=d.split("?")[0]}return a}function p(d){var a="";a=W(d.split("://")[1]);if(U(a,"/"))a=a.split("/")[0];return a}var f=t,h=this;h.c=i;h.rb=l;h.r=g;h.ic=function(d){var a=h.gb();return new Z.m.w(P(d,f.Ka+C,B),P(d,f.Na+C,B),P(d,f.Pa+C,B),h.Q(d,f.Ia,"(not set)"),h.Q(d,f.La,"(not set)"),h.Q(d,f.Oa,a&&!N(a.K)?T(a.K):w),h.Q(d,f.Ja,w))};h.jb=function(d){var a=p(d),j=k(d);if(U(a,"google")){d=d.split("?").join(B);\r
45876 if(U(d,B+f.oc+C))if(j==f.nc)return r}return v};h.gb=function(){var d,a=h.rb,j,c,n=f.T;if(!(N(a)||"0"==a||!U(a,"://")||h.jb(a))){d=p(a);for(j=0;j<n[x];j++){c=n[j];if(U(d,W(c.bb))){a=a.split("?").join(B);if(U(a,B+c.nb+C)){d=a.split(B+c.nb+C)[1];if(U(d,B))d=d.split(B)[0];return new Z.m.w(w,c.bb,w,"(organic)","organic",d,w)}}}}};h.Q=function(d,a,j){d=P(d,a+C,B);return j=!N(d)?T(d):!N(j)?j:"-"};h.uc=function(d){var a=f.ta,j=v,c;if(d&&"organic"==d.S){d=W(T(d.K));for(c=0;c<a[x];c++)j=j||W(a[c])==d}return j};\r
45877 h.hc=function(){var d="",a="";d=h.rb;if(!(N(d)||"0"==d||!U(d,"://")||h.jb(d))){d=d.split("://")[1];if(U(d,"/")){a=O(d,d.indexOf("/"));a=a.split("?")[0];d=W(d.split("/")[0])}if(0==d.indexOf("www."))d=O(d,4);return new Z.m.w(w,d,w,"(referral)","referral",w,a)}};h.Xb=function(d){var a="";if(f.ba){a=d&&d.hash?d.href.substring(d.href.indexOf("#")):"";a=""!=a?a+B:a}a+=d.search;return a};h.dc=function(){return new Z.m.w(w,"(direct)",w,"(direct)","(none)",w,w)};h.vc=function(d){var a=v,j,c=f.va;if(d&&"referral"==\r
45878 d.S){d=W(S(d.X));for(j=0;j<c[x];j++)a=a||U(d,W(c[j]))}return a};h.L=function(d){return w!=d&&d.mb()};h.cc=function(d,a){var j="",c="-",n,s=0,b,e,o=h.c;if(!d)return"";e=d.k();j=h.Xb(f.a[A]);if(f.z&&d.kb()){c=d.na();if(!N(c)&&!U(c,";")){d.Ga();return""}}c=P(e,J+o+".",";");n=h.ic(j);if(h.L(n)){j=P(j,f.Ma+C,B);if("1"==j&&!N(c))return""}if(!h.L(n)){n=h.gb();if(!N(c)&&h.uc(n))return""}if(!h.L(n)&&a){n=h.hc();if(!N(c)&&h.vc(n))return""}if(!h.L(n))if(N(c)&&a)n=h.dc();if(!h.L(n))return"";if(!N(c)){s=c.split(".");\r
45879 b=new Z.m.w;b.Zb(s.slice(4).join("."));b=W(b.Da())==W(n.Da());s=s[3]*1}if(!b||a){a=P(e,D+o+".",";");e=a.lastIndexOf(".");a=e>9?O(a,e+1)*1:0;s++;a=0==a?1:a;d.wb([o,h.r,a,s,n.Da()].join("."));d.Ga();return B+"utmcn=1"}else return B+"utmcr=1"}};\r
45880 Z.m.w=function(i,l,g,t,k,p,f){var h=this;h.q=i;h.X=l;h.ea=g;h.D=t;h.S=k;h.K=p;h.Ya=f;h.Da=function(){var d=[],a=[["cid",h.q],["csr",h.X],["gclid",h.ea],["ccn",h.D],["cmd",h.S],["ctr",h.K],["cct",h.Ya]],j,c;if(h.mb())for(j=0;j<a[x];j++)if(!N(a[j][1])){c=a[j][1].split("+").join("%20");c=c.split(" ").join("%20");V(d,"utm"+a[j][0]+C+c)}return d.join("|")};h.mb=function(){return!(N(h.q)&&N(h.X)&&N(h.ea))};h.Zb=function(d){var a=function(j){return T(P(d,"utm"+j+C,"|"))};h.q=a("cid");h.X=a("csr");h.ea=a("gclid");\r
45881 h.D=a("ccn");h.S=a("cmd");h.K=a("ctr");h.Ya=a("cct")}};Z.Ib=function(i,l,g,t){function k(j,c,n){var s;if(!N(n)){n=n.split(",");for(var b=0;b<n[x];b++){s=n[b];if(!N(s)){s=s.split(h);if(s[x]==4)c[s[0]]=[s[1],s[2],j]}}}}var p=this,f=l,h=C,d=i,a=t;p.O=g;p.sa="";p.p={};p.tc=function(){var j;j=X(P(p.O.k(),H+f+".",";"),f+".")[1];if(!N(j)){j=j.split("|");k(1,p.p,j[1]);p.sa=j[0];p.Z()}};p.Z=function(){p.Qb();var j=p.sa,c,n,s="";for(c in p.p)if((n=p.p[c])&&1===n[2])s+=c+h+n[0]+h+n[1]+h+1+",";N(s)||(j+="|"+s);if(N(j))p.O.Vb();else{p.O.Aa(f+"."+j);p.O.Fa()}};p.Ec=\r
45882 function(j){p.sa=j;p.Z()};p.Cc=function(j,c,n,s){if(1!=s&&2!=s&&3!=s)s=3;var b=v;if(c&&n&&j>0&&j<=d.ob){c=S(c);n=S(n);if(c[x]+n[x]<=64){p.p[j]=[c,n,s];p.Z();b=r}}return b};p.mc=function(j){if((j=p.p[j])&&1===j[2])return j[1]};p.Ub=function(j){var c=p.p;if(c[j]){delete c[j];p.Z()}};p.Qb=function(){a._clearKey(8);a._clearKey(9);a._clearKey(11);var j=p.p,c,n;for(n in j)if(c=j[n]){a._setKey(8,n,c[0]);a._setKey(9,n,c[1]);(c=c[2])&&3!=c&&a._setKey(11,n,""+c)}}};Z.N=function(){function i(m,q,u,z){if(w==f[m])f[m]={};if(w==f[m][q])f[m][q]=[];f[m][q][u]=z}function l(m,q){if(w!=f[m]&&w!=f[m][q]){f[m][q]=w;q=r;var u;for(u=0;u<a[x];u++)if(w!=f[m][a[u]]){q=v;break}if(q)f[m]=w}}function g(m){var q="",u=v,z,M;for(z=0;z<a[x];z++){M=m[a[z]];if(w!=M){if(u)q+=a[z];q+=t(M);u=v}else u=r}return q}function t(m){var q=[],u,z;for(z=0;z<m[x];z++)if(w!=m[z]){u="";if(z!=o&&w==m[z-1])u+=z.toString()+s;u+=k(m[z]);V(q,u)}return j+q.join(n)+c}function k(m){var q="",u,z,M;for(u=0;u<\r
45883 m[x];u++){z=m.charAt(u);M=e[z];q+=w!=M?M:z}return q}var p=this,f={},h="k",d="v",a=[h,d],j="(",c=")",n="*",s="!",b="'",e={};e[b]="'0";e[c]="'1";e[n]="'2";e[s]="'3";var o=1;p.qc=function(m){return w!=f[m]};p.G=function(){var m="",q;for(q in f)if(w!=f[q])m+=q.toString()+g(f[q]);return m};p.Ac=function(m){if(m==w)return p.G();var q=m.G(),u;for(u in f)if(w!=f[u]&&!m.qc(u))q+=u.toString()+g(f[u]);return q};p._setKey=function(m,q,u){if(typeof u!="string")return v;i(m,h,q,u);return r};p._setValue=function(m,\r
45884 q,u){if(typeof u!="number"&&(w==Number||!(u instanceof Number))||Math.round(u)!=u||u==NaN||u==Infinity)return v;i(m,d,q,u.toString());return r};p._getKey=function(m,q){return w!=f[m]&&w!=f[m][h]?f[m][h][q]:w};p._getValue=function(m,q){return w!=f[m]&&w!=f[m][d]?f[m][d][q]:w};p._clearKey=function(m){l(m,h)};p._clearValue=function(m){l(m,d)}};Z.Jb=function(i,l){var g=this;g.Qc=l;g.xc=i;g._trackEvent=function(t,k,p){return l._trackEvent(g.xc,t,k,p)}};Z.aa=function(i,l){function g(){if("auto"==c.b){var b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.b=b}c.b=W(c.b)}function t(){var b=c.b,e=b.indexOf("www.google.")*b.indexOf(".google.")*b.indexOf("google.");return e||"/"!=c.h||b.indexOf("google.org")>-1}function k(b,e,o){if(N(b)||N(e)||N(o))return"-";b=P(b,D+a.c+".",e);if(!N(b)){b=b.split(".");b[5]=b[5]?b[5]*1+1:1;b[3]=b[4];b[4]=o;b=b.join(".")}return b}function p(){return"file:"!=c.a[A].protocol&&t()}function f(b){if(!b||""==b)return"";for(;ea(b.charAt(0));)b=\r
45885 O(b,1);for(;ea(b.charAt(b[x]-1));)b=O(b,0,b[x]-1);return b}function h(b,e,o,m){if(!N(b())){e(m?T(b()):b());U(b(),";")||o()}}function d(b){var e,o=""!=b&&c.a[A].host!=b;if(o)for(e=0;e<c.t[x];e++)o=o&&fa(W(b),W(c.t[e]))==-1;return o}var a=this,j=w,c=new Z.Gb,n=v,s=w;a.e=window;a.r=Math.round((new Date).getTime()/1E3);a.s=i||"UA-XXXXX-X";a.ab=c.a.referrer;a.ia=w;a.f=w;a.B=w;a.F=v;a.A=w;a.Ua="";a.g=w;a.cb=w;a.c=w;a.i=w;c.o=l?S(l):w;a.wc=function(){var b=v;if(a.B)b=a.B.match(/^[0-9a-z-_.]{10,1200}$/i);\r
45886 return b};a.jc=function(){return Y()^a.A.$b()&2147483647};a.ec=function(){if(!c.b||""==c.b||"none"==c.b){c.b="";return 1}g();return c.Ra?ia(c.b):1};a.Yb=function(b,e){if(N(b))b="-";else{e+=c.h&&"/"!=c.h?c.h:"";e=b.indexOf(e);b=e>=0&&e<=8?"0":"["==b.charAt(0)&&"]"==b.charAt(b[x]-1)?"-":b}return b};a.wa=function(b){var e="",o=c.a;e+=c.fa?a.A.Ic():"";e+=c.da?a.Ua:"";e+=c.ga&&!N(o.title)?"&utmdt="+S(o.title):"";e+="&utmhid="+ja()+"&utmr="+S(a.ia)+"&utmp="+S(a.Bc(b));return e};a.Bc=function(b){var e=c.a[A];\r
45887 return b=w!=b&&""!=b?S(b,r):S(e.pathname+e.search,r)};a.Lc=function(b){if(a.J()){var e="";if(a.g!=w&&a.g.G()[x]>0)e+="&utme="+S(a.g.G());e+=a.wa(b);j.H(e,a.s,a.c)}};a.Tb=function(){var b=new Z.$(c);return b.ua(a.c)?b.Hc():w};a._getLinkerUrl=function(b,e){var o=b.split("#"),m=b,q=a.Tb();if(q)if(e&&1>=o[x])m+="#"+q;else if(!e||1>=o[x])if(1>=o[x])m+=(U(b,"?")?B:"?")+q;else m=o[0]+(U(b,"?")?B:"?")+q+"#"+o[1];return m};a.Fc=function(){var b;if(a.wc()){a.i.Dc(a.B);a.i.Oc();Z._gasoDomain=c.b;Z._gasoCPath=\r
45888 c.h;b=c.a.createElement("script");b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.B+B+Y();c.a.getElementsByTagName("head")[0].appendChild(b)}};a.pc=function(){var b=a.r,e=a.i,o=e.k(),m=a.c+"",q=c.e,u=q?q.gaGlobal:w,z,M=U(o,D+m+"."),la=U(o,E+m),ma=U(o,G+m),F,I=[],R="",ha=v;o=N(o)?"":o;if(c.z){z=c.a[A]&&c.a[A].hash?c.a[A].href.substring(c.a[A].href.indexOf("#")):"";if(c.ba&&!N(z))R=z+B;R+=c.a[A].search;if(!N(R)&&U(R,D)){e.zc(R);e.kb()||e.Sb();\r
45889 F=e.ja()}h(e.ma,e.vb,e.Eb,true);h(e.la,e.Aa,e.Fa)}if(N(F))if(M)if(!la||!ma){F=k(o,";",b);a.F=r}else{F=P(o,D+m+".",";");I=X(P(o,E+m,";"),".")}else{F=ga([m,a.jc(),b,b,b,1],".");ha=a.F=r}else if(N(e.C())||N(e.ka())){F=k(R,B,b);a.F=r}else{I=X(e.C(),".");m=I[0]}F=F.split(".");if(q&&u&&u.dh==m&&!c.o){F[4]=u.sid?u.sid:F[4];if(ha){F[3]=u.sid?u.sid:F[4];if(u.vid){b=u.vid.split(".");F[1]=b[0];F[2]=b[1]}}}e.tb(F.join("."));I[0]=m;I[1]=I[1]?I[1]:0;I[2]=w!=I[2]?I[2]:c.Jc;I[3]=I[3]?I[3]:F[4];e.ya(I.join("."));\r
45890 e.ub(m);N(e.lc())||e.za(e.P());e.Cb();e.Ea();e.Db()};a.rc=function(){j=new Z.Kb(c)};a._initData=function(){var b;if(!n){if(!a.A){a.A=new Z.Fb(c);a.A.bc()}a.c=a.ec();a.i=new Z.$(c);a.g=new Z.N;s=new Z.Ib(c,a.c,a.i,a.g);a.rc()}if(p()){a.pc();s.tc()}if(!n){if(p()){a.ia=a.Yb(a.ab,c.a.domain);if(c.da){b=new Z.m(a.c,a.ia,a.r,c);a.Ua=b.cc(a.i,a.F)}}a.cb=new Z.N;n=r}Z.ib||a.sc()};a._visitCode=function(){a._initData();var b=P(a.i.k(),D+a.c+".",";");b=b.split(".");return b[x]<4?"":b[1]};a._cookiePathCopy=function(b){a._initData();\r
45891 a.i&&a.i.Nc(a.c,b)};a.sc=function(){var b=c.a[A].hash;if(b&&1==b.indexOf("gaso="))b=P(b,"gaso=",B);else b=(b=c.e.name)&&0<=b.indexOf("gaso=")?P(b,"gaso=",B):P(a.i.k(),L,";");if(b[x]>=10){a.B=b;a.Fc()}Z.ib=r};a.J=function(){return a._visitCode()%1E4<c.U*100};a.Gc=function(){var b,e,o=c.a.links;if(!c.lb){b=c.a.domain;if("www."==O(b,0,4))b=O(b,4);c.t.push("."+b)}for(b=0;b<o[x]&&(c.ra==-1||b<c.ra);b++){e=o[b];if(d(e.host))if(!e.gatcOnclick){e.gatcOnclick=e.onclick?e.onclick:a.yc;e.onclick=function(m){var q=\r
45892 !this.target||this.target=="_self"||this.target=="_top"||this.target=="_parent";q=q&&!a.Rb(m);a.Mc(m,this,q);return q?v:this.gatcOnclick?this.gatcOnclick(m):r}}}};a.yc=function(){};a._trackPageview=function(b){if(p()){a._initData();c.t&&a.Gc();a.Lc(b);a.F=v}};a._trackTrans=function(){var b=a.c,e=[],o,m,q;a._initData();if(a.f&&a.J()){for(o=0;o<a.f.Y[x];o++){m=a.f.Y[o];V(e,m.Ca());for(q=0;q<m.R[x];q++)V(e,m.R[q].Ca())}for(o=0;o<e[x];o++)j.H(e[o],a.s,b,r)}};a._setTrans=function(){var b=c.a,e,o,m;b=b.getElementById?\r
45893 b.getElementById("utmtrans"):b.utmform&&b.utmform.utmtrans?b.utmform.utmtrans:w;a._initData();if(b&&b.value){a.f=new Z.n;m=b.value.split("UTM:");c.u=!c.u||""==c.u?"|":c.u;for(b=0;b<m[x];b++){m[b]=f(m[b]);e=m[b].split(c.u);for(o=0;o<e[x];o++)e[o]=f(e[o]);if("T"==e[0])a._addTrans(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]);else"I"==e[0]&&a._addItem(e[1],e[2],e[3],e[4],e[5],e[6])}}};a._addTrans=function(b,e,o,m,q,u,z,M){a.f=a.f?a.f:new Z.n;return a.f.Ob(b,e,o,m,q,u,z,M)};a._addItem=function(b,e,o,m,q,u){var z;\r
45894 a.f=a.f?a.f:new Z.n;(z=a.f.hb(b))||(z=a._addTrans(b,"","","","","","",""));z.Nb(e,o,m,q,u)};a._setVar=function(b){if(b&&""!=b&&t()){a._initData();s.Ec(S(b));a.J()&&j.H("&utmt=var",a.s,a.c)}};a._setCustomVar=function(b,e,o,m){a._initData();return s.Cc(b,e,o,m)};a._deleteCustomVar=function(b){a._initData();s.Ub(b)};a._getVisitorCustomVar=function(b){a._initData();return s.mc(b)};a._setMaxCustomVariables=function(b){c.ob=b};a._link=function(b,e){if(c.z&&b){a._initData();c.a[A].href=a._getLinkerUrl(b,\r
45895 e)}};a._linkByPost=function(b,e){if(c.z&&b&&b.action){a._initData();b.action=a._getLinkerUrl(b.action,e)}};a._setXKey=function(b,e,o){a.g._setKey(b,e,o)};a._setXValue=function(b,e,o){a.g._setValue(b,e,o)};a._getXKey=function(b,e){return a.g._getKey(b,e)};a._getXValue=function(b,e){return a.g.getValue(b,e)};a._clearXKey=function(b){a.g._clearKey(b)};a._clearXValue=function(b){a.g._clearValue(b)};a._createXObj=function(){a._initData();return new Z.N};a._sendXEvent=function(b){var e="";a._initData();\r
45896 if(a.J()){e+="&utmt=event&utme="+S(a.g.Ac(b))+a.wa();j.H(e,a.s,a.c,v,r)}};a._createEventTracker=function(b){a._initData();return new Z.Jb(b,a)};a._trackEvent=function(b,e,o,m){var q=a.cb;if(w!=b&&w!=e&&""!=b&&""!=e){q._clearKey(5);q._clearValue(5);(b=q._setKey(5,1,b)&&q._setKey(5,2,e)&&(w==o||q._setKey(5,3,o))&&(w==m||q._setValue(5,1,m)))&&a._sendXEvent(q)}else b=v;return b};a.Mc=function(b,e,o){a._initData();if(a.J()){var m=new Z.N;m._setKey(6,1,e.href);var q=o?function(){a.db(b,e)}:w;j.H("&utmt=event&utme="+\r
45897 S(m.G())+a.wa(),a.s,a.c,v,r,q);if(o){var u=this;c.e.setTimeout(function(){u.db(b,e)},500)}}};a.db=function(b,e){if(!b)b=c.e.event;var o=r;if(e.gatcOnclick)o=e.gatcOnclick(b);if(o||typeof o=="undefined")if(!e.target||e.target=="_self")c.e[A]=e.href;else if(e.target=="_top")c.e.top.document[A]=e.href;else if(e.target=="_parent")c.e.parent.document[A]=e.href};a.Rb=function(b){if(!b)b=c.e.event;var e=b.shiftKey||b.ctrlKey||b.altKey;if(!e)if(b.modifiers&&c.e.Event)e=b.modifiers&c.e.Event.CONTROL_MASK||\r
45898 b.modifiers&c.e.Event.SHIFT_MASK||b.modifiers&c.e.Event.ALT_MASK;return e};a.Pc=function(){return c};a._setDomainName=function(b){c.b=b};a._addOrganic=function(b,e,o){c.T.splice(o?0:c.T.length,0,new Z.Ha(b,e))};a._clearOrganic=function(){c.T=[]};a._addIgnoredOrganic=function(b){V(c.ta,b)};a._clearIgnoredOrganic=function(){c.ta=[]};a._addIgnoredRef=function(b){V(c.va,b)};a._clearIgnoredRef=function(){c.va=[]};a._setAllowHash=function(b){c.Ra=b?1:0};a._setCampaignTrack=function(b){c.da=b?1:0};a._setClientInfo=\r
45899 function(b){c.fa=b?1:0};a._getClientInfo=function(){return c.fa};a._setCookiePath=function(b){c.h=b};a._setTransactionDelim=function(b){c.u=b};a._setCookieTimeout=function(b){a._setCampaignCookieTimeout(b*1E3)};a._setCampaignCookieTimeout=function(b){c.Ta=b};a._setDetectFlash=function(b){c.ha=b?1:0};a._getDetectFlash=function(){return c.ha};a._setDetectTitle=function(b){c.ga=b?1:0};a._getDetectTitle=function(){return c.ga};a._setLocalGifPath=function(b){c.oa=b};a._getLocalGifPath=function(){return c.oa};\r
45900 a._setLocalServerMode=function(){c.I=0};a._setRemoteServerMode=function(){c.I=1};a._setLocalRemoteServerMode=function(){c.I=2};a._getServiceMode=function(){return c.I};a._setSampleRate=function(b){c.U=b};a._setSessionTimeout=function(b){a._setSessionCookieTimeout(b*1E3)};a._setSessionCookieTimeout=function(b){c.sb=b};a._setAllowLinker=function(b){c.z=b?1:0};a._setAllowAnchor=function(b){c.ba=b?1:0};a._setCampNameKey=function(b){c.Ia=b};a._setCampContentKey=function(b){c.Ja=b};a._setCampIdKey=function(b){c.Ka=\r
45901 b};a._setCampMediumKey=function(b){c.La=b};a._setCampNOKey=function(b){c.Ma=b};a._setCampSourceKey=function(b){c.Na=b};a._setCampTermKey=function(b){c.Oa=b};a._setCampCIdKey=function(b){c.Pa=b};a._getAccount=function(){return a.s};a._setAccount=function(b){a.s=b};a._setNamespace=function(b){c.o=b?S(b):w};a._getVersion=function(){return ca};a._setAutoTrackOutbound=function(b){c.t=[];if(b)c.t=b};a._setTrackOutboundSubdomains=function(b){c.lb=b};a._setHrefExamineLimit=function(b){c.ra=b};a._setReferrerOverride=\r
45902 function(b){a.ab=b};a._setCookiePersistence=function(b){a._setVisitorCookieTimeout(b)};a._setVisitorCookieTimeout=function(b){c.v=b}};Z._getTracker=function(i,l){return new Z.aa(i,l)};var ka=v,$={ca:{},_createAsyncTracker:function(i,l){l=l||"";i=new Z.aa(i);$.ca[l]=i;ka=r;return i},_getAsyncTracker:function(i){i=i||"";var l=$.ca[i];if(!l){l=new Z.aa;$.ca[i]=l;ka=r}return l},push:function(){for(var i=arguments,l=0,g=0;g<i[x];g++)try{if(typeof i[g]==="function")i[g]();else{var t="",k=i[g][0],p=k.lastIndexOf(".");if(p>0){t=O(k,0,p);k=O(k,p+1)}var f=$._getAsyncTracker(t);f[k].apply(f,i[g].slice(1))}}catch(h){l++}return l}};window[aa]=Z;function na(){var i=window[ba],l=v;if(i&&typeof i.push=="function"){l=i.constructor==Array;if(!l)return}window[ba]=$;l&&$.push.apply($,i)}na();})()\r
45903 \r
45904     try {\r
45905       var pageTracker = _gat._getTracker("UA-30775-6");\r
45906       pageTracker._setDomainName("twitter.com");\r
45907             pageTracker._setVar('Logged In');\r
45908             pageTracker._setVar('lang: en');\r
45909             pageTracker._initData();\r
45910                               pageTracker._trackPageview('/home');\r
45911                   } catch(err) { }\r
45912 </script>\r
45913 \r
45914 \r
45915 <script id="v8" type="x">\r
45916 // Copyright 2008 Google Inc. All Rights Reserved.\r
45917 // Redistribution and use in source and binary forms, with or without\r
45918 // modification, are permitted provided that the following conditions are\r
45919 // met:\r
45920 //\r
45921 //     * Redistributions of source code must retain the above copyright\r
45922 //       notice, this list of conditions and the following disclaimer.\r
45923 //     * Redistributions in binary form must reproduce the above\r
45924 //       copyright notice, this list of conditions and the following\r
45925 //       disclaimer in the documentation and/or other materials provided\r
45926 //       with the distribution.\r
45927 //     * Neither the name of Google Inc. nor the names of its\r
45928 //       contributors may be used to endorse or promote products derived\r
45929 //       from this software without specific prior written permission.\r
45930 //\r
45931 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
45932 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
45933 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
45934 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
45935 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
45936 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
45937 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
45938 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
45939 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
45940 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
45941 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
45942 \r
45943 \r
45944 // Simple framework for running the benchmark suites and\r
45945 // computing a score based on the timing measurements.\r
45946 \r
45947 \r
45948 // A benchmark has a name (string) and a function that will be run to\r
45949 // do the performance measurement.\r
45950 function Benchmark(name, run) {\r
45951   this.name = name;\r
45952   this.run = run;\r
45953 }\r
45954 \r
45955 \r
45956 // Benchmark results hold the benchmark and the measured time used to\r
45957 // run the benchmark. The benchmark score is computed later once a\r
45958 // full benchmark suite has run to completion.\r
45959 function BenchmarkResult(benchmark, time) {\r
45960   this.benchmark = benchmark;\r
45961   this.time = time;\r
45962 }\r
45963 \r
45964 \r
45965 // Automatically convert results to numbers. Used by the geometric\r
45966 // mean computation.\r
45967 BenchmarkResult.prototype.valueOf = function() {\r
45968   return this.time;\r
45969 }\r
45970 \r
45971 \r
45972 // Suites of benchmarks consist of a name and the set of benchmarks in\r
45973 // addition to the reference timing that the final score will be based\r
45974 // on. This way, all scores are relative to a reference run and higher\r
45975 // scores implies better performance.\r
45976 function BenchmarkSuite(name, reference, benchmarks) {\r
45977   this.name = name;\r
45978   this.reference = reference;\r
45979   this.benchmarks = benchmarks;\r
45980   BenchmarkSuite.suites.push(this);\r
45981 }\r
45982 \r
45983 \r
45984 // Keep track of all declared benchmark suites.\r
45985 BenchmarkSuite.suites = [];\r
45986 \r
45987 \r
45988 // Scores are not comparable across versions. Bump the version if\r
45989 // you're making changes that will affect that scores, e.g. if you add\r
45990 // a new benchmark or change an existing one.\r
45991 BenchmarkSuite.version = '1';\r
45992 \r
45993 \r
45994 // Runs all registered benchmark suites and optionally yields between\r
45995 // each individual benchmark to avoid running for too long in the\r
45996 // context of browsers. Once done, the final score is reported to the\r
45997 // runner.\r
45998 BenchmarkSuite.RunSuites = function(runner) {\r
45999   var continuation = null;\r
46000   var suites = BenchmarkSuite.suites;\r
46001   var length = suites.length;\r
46002   BenchmarkSuite.scores = [];\r
46003   var index = 0;\r
46004   function RunStep() {\r
46005     while (continuation || index < length) {\r
46006       if (continuation) {\r
46007         continuation = continuation();\r
46008       } else {\r
46009         var suite = suites[index++];\r
46010         if (runner.NotifyStart) runner.NotifyStart(suite.name);\r
46011         continuation = suite.RunStep(runner);\r
46012       }\r
46013       if (continuation && typeof window != 'undefined' && window.setTimeout) {\r
46014         window.setTimeout(RunStep, 100);\r
46015         return;\r
46016       }\r
46017     }\r
46018     if (runner.NotifyScore) {\r
46019       var score = BenchmarkSuite.GeometricMean(BenchmarkSuite.scores);\r
46020       runner.NotifyScore(Math.round(100 * score));\r
46021     }\r
46022   }\r
46023   RunStep();\r
46024 }\r
46025 \r
46026 \r
46027 // Counts the total number of registered benchmarks. Useful for\r
46028 // showing progress as a percentage.\r
46029 BenchmarkSuite.CountBenchmarks = function() {\r
46030   var result = 0;\r
46031   var suites = BenchmarkSuite.suites;\r
46032   for (var i = 0; i < suites.length; i++) {\r
46033     result += suites[i].benchmarks.length;\r
46034   }\r
46035   return result;\r
46036 }\r
46037 \r
46038 \r
46039 // Computes the geometric mean of a set of numbers.\r
46040 BenchmarkSuite.GeometricMean = function(numbers) {\r
46041   var log = 0;\r
46042   for (var i = 0; i < numbers.length; i++) {\r
46043     log += Math.log(numbers[i]);\r
46044   }\r
46045   return Math.pow(Math.E, log / numbers.length);\r
46046 }\r
46047 \r
46048 \r
46049 // Notifies the runner that we're done running a single benchmark in\r
46050 // the benchmark suite. This can be useful to report progress.\r
46051 BenchmarkSuite.prototype.NotifyStep = function(result) {\r
46052   this.results.push(result);\r
46053   if (this.runner.NotifyStep) this.runner.NotifyStep(result.benchmark.name);\r
46054 }\r
46055 \r
46056 \r
46057 // Notifies the runner that we're done with running a suite and that\r
46058 // we have a result which can be reported to the user if needed.\r
46059 BenchmarkSuite.prototype.NotifyResult = function() {\r
46060   var mean = BenchmarkSuite.GeometricMean(this.results);\r
46061   var score = this.reference / mean;\r
46062   BenchmarkSuite.scores.push(score);\r
46063   if (this.runner.NotifyResult) {\r
46064     this.runner.NotifyResult(this.name, Math.round(100 * score));\r
46065   }\r
46066 }\r
46067 \r
46068 \r
46069 // Runs a single benchmark for at least a second and computes the\r
46070 // average time it takes to run a single iteration.\r
46071 BenchmarkSuite.prototype.RunSingle = function(benchmark) {\r
46072   var elapsed = 0;\r
46073   var start = new Date();\r
46074   for (var n = 0; elapsed < 1000; n++) {\r
46075     benchmark.run();\r
46076     elapsed = new Date() - start;\r
46077   }\r
46078   var usec = (elapsed * 1000) / n;\r
46079   this.NotifyStep(new BenchmarkResult(benchmark, usec));\r
46080 }\r
46081 \r
46082 \r
46083 // This function starts running a suite, but stops between each\r
46084 // individual benchmark in the suite and returns a continuation\r
46085 // function which can be invoked to run the next benchmark. Once the\r
46086 // last benchmark has been executed, null is returned.\r
46087 BenchmarkSuite.prototype.RunStep = function(runner) {\r
46088   this.results = [];\r
46089   this.runner = runner;\r
46090   var length = this.benchmarks.length;\r
46091   var index = 0;\r
46092   var suite = this;\r
46093   function RunNext() {\r
46094     if (index < length) {\r
46095       suite.RunSingle(suite.benchmarks[index++]);\r
46096       return RunNext;\r
46097     }\r
46098     suite.NotifyResult();\r
46099     return null;\r
46100   }\r
46101   return RunNext();\r
46102 }\r
46103 /*\r
46104  * Copyright (c) 2003-2005  Tom Wu\r
46105  * All Rights Reserved.\r
46106  *\r
46107  * Permission is hereby granted, free of charge, to any person obtaining\r
46108  * a copy of this software and associated documentation files (the\r
46109  * "Software"), to deal in the Software without restriction, including\r
46110  * without limitation the rights to use, copy, modify, merge, publish,\r
46111  * distribute, sublicense, and/or sell copies of the Software, and to\r
46112  * permit persons to whom the Software is furnished to do so, subject to\r
46113  * the following conditions:\r
46114  *\r
46115  * The above copyright notice and this permission notice shall be\r
46116  * included in all copies or substantial portions of the Software.\r
46117  *\r
46118  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,\r
46119  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\r
46120  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\r
46121  *\r
46122  * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\r
46123  * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\r
46124  * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\r
46125  * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\r
46126  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r
46127  *\r
46128  * In addition, the following condition applies:\r
46129  *\r
46130  * All redistributions must retain an intact copy of this copyright notice\r
46131  * and disclaimer.\r
46132  */\r
46133 \r
46134 \r
46135 // The code has been adapted for use as a benchmark by Google.\r
46136 var Crypto = new BenchmarkSuite('Crypto', 203037, [\r
46137   new Benchmark("Encrypt", encrypt),\r
46138   new Benchmark("Decrypt", decrypt)\r
46139 ]);\r
46140 \r
46141 \r
46142 // Basic JavaScript BN library - subset useful for RSA encryption.\r
46143 \r
46144 // Bits per digit\r
46145 var dbits;\r
46146 var BI_DB;\r
46147 var BI_DM;\r
46148 var BI_DV;\r
46149 \r
46150 var BI_FP;\r
46151 var BI_FV;\r
46152 var BI_F1;\r
46153 var BI_F2;\r
46154 \r
46155 // JavaScript engine analysis\r
46156 var canary = 0xdeadbeefcafe;\r
46157 var j_lm = ((canary&0xffffff)==0xefcafe);\r
46158 \r
46159 // (public) Constructor\r
46160 function BigInteger(a,b,c) {\r
46161   this.array = new Array();\r
46162   if(a != null)\r
46163     if("number" == typeof a) this.fromNumber(a,b,c);\r
46164     else if(b == null && "string" != typeof a) this.fromString(a,256);\r
46165     else this.fromString(a,b);\r
46166 }\r
46167 \r
46168 // return new, unset BigInteger\r
46169 function nbi() { return new BigInteger(null); }\r
46170 \r
46171 // am: Compute w_j += (x*this_i), propagate carries,\r
46172 // c is initial carry, returns final carry.\r
46173 // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\r
46174 // We need to select the fastest one that works in this environment.\r
46175 \r
46176 // am1: use a single mult and divide to get the high bits,\r
46177 // max digit bits should be 26 because\r
46178 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\r
46179 function am1(i,x,w,j,c,n) {\r
46180   var this_array = this.array;\r
46181   var w_array    = w.array;\r
46182   while(--n >= 0) {\r
46183     var v = x*this_array[i++]+w_array[j]+c;\r
46184     c = Math.floor(v/0x4000000);\r
46185     w_array[j++] = v&0x3ffffff;\r
46186   }\r
46187   return c;\r
46188 }\r
46189 \r
46190 // am2 avoids a big mult-and-extract completely.\r
46191 // Max digit bits should be <= 30 because we do bitwise ops\r
46192 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\r
46193 function am2(i,x,w,j,c,n) {\r
46194   var this_array = this.array;\r
46195   var w_array    = w.array;\r
46196   var xl = x&0x7fff, xh = x>>15;\r
46197   while(--n >= 0) {\r
46198     var l = this_array[i]&0x7fff;\r
46199     var h = this_array[i++]>>15;\r
46200     var m = xh*l+h*xl;\r
46201     l = xl*l+((m&0x7fff)<<15)+w_array[j]+(c&0x3fffffff);\r
46202     c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\r
46203     w_array[j++] = l&0x3fffffff;\r
46204   }\r
46205   return c;\r
46206 }\r
46207 \r
46208 // Alternately, set max digit bits to 28 since some\r
46209 // browsers slow down when dealing with 32-bit numbers.\r
46210 function am3(i,x,w,j,c,n) {\r
46211   var this_array = this.array;\r
46212   var w_array    = w.array;\r
46213 \r
46214   var xl = x&0x3fff, xh = x>>14;\r
46215   while(--n >= 0) {\r
46216     var l = this_array[i]&0x3fff;\r
46217     var h = this_array[i++]>>14;\r
46218     var m = xh*l+h*xl;\r
46219     l = xl*l+((m&0x3fff)<<14)+w_array[j]+c;\r
46220     c = (l>>28)+(m>>14)+xh*h;\r
46221     w_array[j++] = l&0xfffffff;\r
46222   }\r
46223   return c;\r
46224 }\r
46225 \r
46226 // This is tailored to VMs with 2-bit tagging. It makes sure\r
46227 // that all the computations stay within the 29 bits available.\r
46228 function am4(i,x,w,j,c,n) {\r
46229   var this_array = this.array;\r
46230   var w_array    = w.array;\r
46231 \r
46232   var xl = x&0x1fff, xh = x>>13;\r
46233   while(--n >= 0) {\r
46234     var l = this_array[i]&0x1fff;\r
46235     var h = this_array[i++]>>13;\r
46236     var m = xh*l+h*xl;\r
46237     l = xl*l+((m&0x1fff)<<13)+w_array[j]+c;\r
46238     c = (l>>26)+(m>>13)+xh*h;\r
46239     w_array[j++] = l&0x3ffffff;\r
46240   }\r
46241   return c;\r
46242 }\r
46243 \r
46244 // am3/28 is best for SM, Rhino, but am4/26 is best for v8.\r
46245 // Kestrel (Opera 9.5) gets its best result with am4/26.\r
46246 // IE7 does 9% better with am3/28 than with am4/26.\r
46247 // Firefox (SM) gets 10% faster with am3/28 than with am4/26.\r
46248 \r
46249 setupEngine = function(fn, bits) {\r
46250   BigInteger.prototype.am = fn;\r
46251   dbits = bits;\r
46252 \r
46253   BI_DB = dbits;\r
46254   BI_DM = ((1<<dbits)-1);\r
46255   BI_DV = (1<<dbits);\r
46256 \r
46257   BI_FP = 52;\r
46258   BI_FV = Math.pow(2,BI_FP);\r
46259   BI_F1 = BI_FP-dbits;\r
46260   BI_F2 = 2*dbits-BI_FP;\r
46261 }\r
46262 \r
46263 \r
46264 // Digit conversions\r
46265 var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";\r
46266 var BI_RC = new Array();\r
46267 var rr,vv;\r
46268 rr = "0".charCodeAt(0);\r
46269 for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\r
46270 rr = "a".charCodeAt(0);\r
46271 for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\r
46272 rr = "A".charCodeAt(0);\r
46273 for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\r
46274 \r
46275 function int2char(n) { return BI_RM.charAt(n); }\r
46276 function intAt(s,i) {\r
46277   var c = BI_RC[s.charCodeAt(i)];\r
46278   return (c==null)?-1:c;\r
46279 }\r
46280 \r
46281 // (protected) copy this to r\r
46282 function bnpCopyTo(r) {\r
46283   var this_array = this.array;\r
46284   var r_array    = r.array;\r
46285 \r
46286   for(var i = this.t-1; i >= 0; --i) r_array[i] = this_array[i];\r
46287   r.t = this.t;\r
46288   r.s = this.s;\r
46289 }\r
46290 \r
46291 // (protected) set from integer value x, -DV <= x < DV\r
46292 function bnpFromInt(x) {\r
46293   var this_array = this.array;\r
46294   this.t = 1;\r
46295   this.s = (x<0)?-1:0;\r
46296   if(x > 0) this_array[0] = x;\r
46297   else if(x < -1) this_array[0] = x+DV;\r
46298   else this.t = 0;\r
46299 }\r
46300 \r
46301 // return bigint initialized to value\r
46302 function nbv(i) { var r = nbi(); r.fromInt(i); return r; }\r
46303 \r
46304 // (protected) set from string and radix\r
46305 function bnpFromString(s,b) {\r
46306   var this_array = this.array;\r
46307   var k;\r
46308   if(b == 16) k = 4;\r
46309   else if(b == 8) k = 3;\r
46310   else if(b == 256) k = 8; // byte array\r
46311   else if(b == 2) k = 1;\r
46312   else if(b == 32) k = 5;\r
46313   else if(b == 4) k = 2;\r
46314   else { this.fromRadix(s,b); return; }\r
46315   this.t = 0;\r
46316   this.s = 0;\r
46317   var i = s.length, mi = false, sh = 0;\r
46318   while(--i >= 0) {\r
46319     var x = (k==8)?s[i]&0xff:intAt(s,i);\r
46320     if(x < 0) {\r
46321       if(s.charAt(i) == "-") mi = true;\r
46322       continue;\r
46323     }\r
46324     mi = false;\r
46325     if(sh == 0)\r
46326       this_array[this.t++] = x;\r
46327     else if(sh+k > BI_DB) {\r
46328       this_array[this.t-1] |= (x&((1<<(BI_DB-sh))-1))<<sh;\r
46329       this_array[this.t++] = (x>>(BI_DB-sh));\r
46330     }\r
46331     else\r
46332       this_array[this.t-1] |= x<<sh;\r
46333     sh += k;\r
46334     if(sh >= BI_DB) sh -= BI_DB;\r
46335   }\r
46336   if(k == 8 && (s[0]&0x80) != 0) {\r
46337     this.s = -1;\r
46338     if(sh > 0) this_array[this.t-1] |= ((1<<(BI_DB-sh))-1)<<sh;\r
46339   }\r
46340   this.clamp();\r
46341   if(mi) BigInteger.ZERO.subTo(this,this);\r
46342 }\r
46343 \r
46344 // (protected) clamp off excess high words\r
46345 function bnpClamp() {\r
46346   var this_array = this.array;\r
46347   var c = this.s&BI_DM;\r
46348   while(this.t > 0 && this_array[this.t-1] == c) --this.t;\r
46349 }\r
46350 \r
46351 // (public) return string representation in given radix\r
46352 function bnToString(b) {\r
46353   var this_array = this.array;\r
46354   if(this.s < 0) return "-"+this.negate().toString(b);\r
46355   var k;\r
46356   if(b == 16) k = 4;\r
46357   else if(b == 8) k = 3;\r
46358   else if(b == 2) k = 1;\r
46359   else if(b == 32) k = 5;\r
46360   else if(b == 4) k = 2;\r
46361   else return this.toRadix(b);\r
46362   var km = (1<<k)-1, d, m = false, r = "", i = this.t;\r
46363   var p = BI_DB-(i*BI_DB)%k;\r
46364   if(i-- > 0) {\r
46365     if(p < BI_DB && (d = this_array[i]>>p) > 0) { m = true; r = int2char(d); }\r
46366     while(i >= 0) {\r
46367       if(p < k) {\r
46368         d = (this_array[i]&((1<<p)-1))<<(k-p);\r
46369         d |= this_array[--i]>>(p+=BI_DB-k);\r
46370       }\r
46371       else {\r
46372         d = (this_array[i]>>(p-=k))&km;\r
46373         if(p <= 0) { p += BI_DB; --i; }\r
46374       }\r
46375       if(d > 0) m = true;\r
46376       if(m) r += int2char(d);\r
46377     }\r
46378   }\r
46379   return m?r:"0";\r
46380 }\r
46381 \r
46382 // (public) -this\r
46383 function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\r
46384 \r
46385 // (public) |this|\r
46386 function bnAbs() { return (this.s<0)?this.negate():this; }\r
46387 \r
46388 // (public) return + if this > a, - if this < a, 0 if equal\r
46389 function bnCompareTo(a) {\r
46390   var this_array = this.array;\r
46391   var a_array = a.array;\r
46392 \r
46393   var r = this.s-a.s;\r
46394   if(r != 0) return r;\r
46395   var i = this.t;\r
46396   r = i-a.t;\r
46397   if(r != 0) return r;\r
46398   while(--i >= 0) if((r=this_array[i]-a_array[i]) != 0) return r;\r
46399   return 0;\r
46400 }\r
46401 \r
46402 // returns bit length of the integer x\r
46403 function nbits(x) {\r
46404   var r = 1, t;\r
46405   if((t=x>>>16) != 0) { x = t; r += 16; }\r
46406   if((t=x>>8) != 0) { x = t; r += 8; }\r
46407   if((t=x>>4) != 0) { x = t; r += 4; }\r
46408   if((t=x>>2) != 0) { x = t; r += 2; }\r
46409   if((t=x>>1) != 0) { x = t; r += 1; }\r
46410   return r;\r
46411 }\r
46412 \r
46413 // (public) return the number of bits in "this"\r
46414 function bnBitLength() {\r
46415   var this_array = this.array;\r
46416   if(this.t <= 0) return 0;\r
46417   return BI_DB*(this.t-1)+nbits(this_array[this.t-1]^(this.s&BI_DM));\r
46418 }\r
46419 \r
46420 // (protected) r = this << n*DB\r
46421 function bnpDLShiftTo(n,r) {\r
46422   var this_array = this.array;\r
46423   var r_array = r.array;\r
46424   var i;\r
46425   for(i = this.t-1; i >= 0; --i) r_array[i+n] = this_array[i];\r
46426   for(i = n-1; i >= 0; --i) r_array[i] = 0;\r
46427   r.t = this.t+n;\r
46428   r.s = this.s;\r
46429 }\r
46430 \r
46431 // (protected) r = this >> n*DB\r
46432 function bnpDRShiftTo(n,r) {\r
46433   var this_array = this.array;\r
46434   var r_array = r.array;\r
46435   for(var i = n; i < this.t; ++i) r_array[i-n] = this_array[i];\r
46436   r.t = Math.max(this.t-n,0);\r
46437   r.s = this.s;\r
46438 }\r
46439 \r
46440 // (protected) r = this << n\r
46441 function bnpLShiftTo(n,r) {\r
46442   var this_array = this.array;\r
46443   var r_array = r.array;\r
46444   var bs = n%BI_DB;\r
46445   var cbs = BI_DB-bs;\r
46446   var bm = (1<<cbs)-1;\r
46447   var ds = Math.floor(n/BI_DB), c = (this.s<<bs)&BI_DM, i;\r
46448   for(i = this.t-1; i >= 0; --i) {\r
46449     r_array[i+ds+1] = (this_array[i]>>cbs)|c;\r
46450     c = (this_array[i]&bm)<<bs;\r
46451   }\r
46452   for(i = ds-1; i >= 0; --i) r_array[i] = 0;\r
46453   r_array[ds] = c;\r
46454   r.t = this.t+ds+1;\r
46455   r.s = this.s;\r
46456   r.clamp();\r
46457 }\r
46458 \r
46459 // (protected) r = this >> n\r
46460 function bnpRShiftTo(n,r) {\r
46461   var this_array = this.array;\r
46462   var r_array = r.array;\r
46463   r.s = this.s;\r
46464   var ds = Math.floor(n/BI_DB);\r
46465   if(ds >= this.t) { r.t = 0; return; }\r
46466   var bs = n%BI_DB;\r
46467   var cbs = BI_DB-bs;\r
46468   var bm = (1<<bs)-1;\r
46469   r_array[0] = this_array[ds]>>bs;\r
46470   for(var i = ds+1; i < this.t; ++i) {\r
46471     r_array[i-ds-1] |= (this_array[i]&bm)<<cbs;\r
46472     r_array[i-ds] = this_array[i]>>bs;\r
46473   }\r
46474   if(bs > 0) r_array[this.t-ds-1] |= (this.s&bm)<<cbs;\r
46475   r.t = this.t-ds;\r
46476   r.clamp();\r
46477 }\r
46478 \r
46479 // (protected) r = this - a\r
46480 function bnpSubTo(a,r) {\r
46481   var this_array = this.array;\r
46482   var r_array = r.array;\r
46483   var a_array = a.array;\r
46484   var i = 0, c = 0, m = Math.min(a.t,this.t);\r
46485   while(i < m) {\r
46486     c += this_array[i]-a_array[i];\r
46487     r_array[i++] = c&BI_DM;\r
46488     c >>= BI_DB;\r
46489   }\r
46490   if(a.t < this.t) {\r
46491     c -= a.s;\r
46492     while(i < this.t) {\r
46493       c += this_array[i];\r
46494       r_array[i++] = c&BI_DM;\r
46495       c >>= BI_DB;\r
46496     }\r
46497     c += this.s;\r
46498   }\r
46499   else {\r
46500     c += this.s;\r
46501     while(i < a.t) {\r
46502       c -= a_array[i];\r
46503       r_array[i++] = c&BI_DM;\r
46504       c >>= BI_DB;\r
46505     }\r
46506     c -= a.s;\r
46507   }\r
46508   r.s = (c<0)?-1:0;\r
46509   if(c < -1) r_array[i++] = BI_DV+c;\r
46510   else if(c > 0) r_array[i++] = c;\r
46511   r.t = i;\r
46512   r.clamp();\r
46513 }\r
46514 \r
46515 // (protected) r = this * a, r != this,a (HAC 14.12)\r
46516 // "this" should be the larger one if appropriate.\r
46517 function bnpMultiplyTo(a,r) {\r
46518   var this_array = this.array;\r
46519   var r_array = r.array;\r
46520   var x = this.abs(), y = a.abs();\r
46521   var y_array = y.array;\r
46522 \r
46523   var i = x.t;\r
46524   r.t = i+y.t;\r
46525   while(--i >= 0) r_array[i] = 0;\r
46526   for(i = 0; i < y.t; ++i) r_array[i+x.t] = x.am(0,y_array[i],r,i,0,x.t);\r
46527   r.s = 0;\r
46528   r.clamp();\r
46529   if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\r
46530 }\r
46531 \r
46532 // (protected) r = this^2, r != this (HAC 14.16)\r
46533 function bnpSquareTo(r) {\r
46534   var x = this.abs();\r
46535   var x_array = x.array;\r
46536   var r_array = r.array;\r
46537 \r
46538   var i = r.t = 2*x.t;\r
46539   while(--i >= 0) r_array[i] = 0;\r
46540   for(i = 0; i < x.t-1; ++i) {\r
46541     var c = x.am(i,x_array[i],r,2*i,0,1);\r
46542     if((r_array[i+x.t]+=x.am(i+1,2*x_array[i],r,2*i+1,c,x.t-i-1)) >= BI_DV) {\r
46543       r_array[i+x.t] -= BI_DV;\r
46544       r_array[i+x.t+1] = 1;\r
46545     }\r
46546   }\r
46547   if(r.t > 0) r_array[r.t-1] += x.am(i,x_array[i],r,2*i,0,1);\r
46548   r.s = 0;\r
46549   r.clamp();\r
46550 }\r
46551 \r
46552 // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\r
46553 // r != q, this != m.  q or r may be null.\r
46554 function bnpDivRemTo(m,q,r) {\r
46555   var pm = m.abs();\r
46556   if(pm.t <= 0) return;\r
46557   var pt = this.abs();\r
46558   if(pt.t < pm.t) {\r
46559     if(q != null) q.fromInt(0);\r
46560     if(r != null) this.copyTo(r);\r
46561     return;\r
46562   }\r
46563   if(r == null) r = nbi();\r
46564   var y = nbi(), ts = this.s, ms = m.s;\r
46565   var pm_array = pm.array;\r
46566   var nsh = BI_DB-nbits(pm_array[pm.t-1]);      // normalize modulus\r
46567   if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\r
46568   else { pm.copyTo(y); pt.copyTo(r); }\r
46569   var ys = y.t;\r
46570 \r
46571   var y_array = y.array;\r
46572   var y0 = y_array[ys-1];\r
46573   if(y0 == 0) return;\r
46574   var yt = y0*(1<<BI_F1)+((ys>1)?y_array[ys-2]>>BI_F2:0);\r
46575   var d1 = BI_FV/yt, d2 = (1<<BI_F1)/yt, e = 1<<BI_F2;\r
46576   var i = r.t, j = i-ys, t = (q==null)?nbi():q;\r
46577   y.dlShiftTo(j,t);\r
46578 \r
46579   var r_array = r.array;\r
46580   if(r.compareTo(t) >= 0) {\r
46581     r_array[r.t++] = 1;\r
46582     r.subTo(t,r);\r
46583   }\r
46584   BigInteger.ONE.dlShiftTo(ys,t);\r
46585   t.subTo(y,y); // "negative" y so we can replace sub with am later\r
46586   while(y.t < ys) y_array[y.t++] = 0;\r
46587   while(--j >= 0) {\r
46588     // Estimate quotient digit\r
46589     var qd = (r_array[--i]==y0)?BI_DM:Math.floor(r_array[i]*d1+(r_array[i-1]+e)*d2);\r
46590     if((r_array[i]+=y.am(0,qd,r,j,0,ys)) < qd) {        // Try it out\r
46591       y.dlShiftTo(j,t);\r
46592       r.subTo(t,r);\r
46593       while(r_array[i] < --qd) r.subTo(t,r);\r
46594     }\r
46595   }\r
46596   if(q != null) {\r
46597     r.drShiftTo(ys,q);\r
46598     if(ts != ms) BigInteger.ZERO.subTo(q,q);\r
46599   }\r
46600   r.t = ys;\r
46601   r.clamp();\r
46602   if(nsh > 0) r.rShiftTo(nsh,r);        // Denormalize remainder\r
46603   if(ts < 0) BigInteger.ZERO.subTo(r,r);\r
46604 }\r
46605 \r
46606 // (public) this mod a\r
46607 function bnMod(a) {\r
46608   var r = nbi();\r
46609   this.abs().divRemTo(a,null,r);\r
46610   if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\r
46611   return r;\r
46612 }\r
46613 \r
46614 // Modular reduction using "classic" algorithm\r
46615 function Classic(m) { this.m = m; }\r
46616 function cConvert(x) {\r
46617   if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\r
46618   else return x;\r
46619 }\r
46620 function cRevert(x) { return x; }\r
46621 function cReduce(x) { x.divRemTo(this.m,null,x); }\r
46622 function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\r
46623 function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\r
46624 \r
46625 Classic.prototype.convert = cConvert;\r
46626 Classic.prototype.revert = cRevert;\r
46627 Classic.prototype.reduce = cReduce;\r
46628 Classic.prototype.mulTo = cMulTo;\r
46629 Classic.prototype.sqrTo = cSqrTo;\r
46630 \r
46631 // (protected) return "-1/this % 2^DB"; useful for Mont. reduction\r
46632 // justification:\r
46633 //         xy == 1 (mod m)\r
46634 //         xy =  1+km\r
46635 //   xy(2-xy) = (1+km)(1-km)\r
46636 // x[y(2-xy)] = 1-k^2m^2\r
46637 // x[y(2-xy)] == 1 (mod m^2)\r
46638 // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\r
46639 // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\r
46640 // JS multiply "overflows" differently from C/C++, so care is needed here.\r
46641 function bnpInvDigit() {\r
46642   var this_array = this.array;\r
46643   if(this.t < 1) return 0;\r
46644   var x = this_array[0];\r
46645   if((x&1) == 0) return 0;\r
46646   var y = x&3;          // y == 1/x mod 2^2\r
46647   y = (y*(2-(x&0xf)*y))&0xf;    // y == 1/x mod 2^4\r
46648   y = (y*(2-(x&0xff)*y))&0xff;  // y == 1/x mod 2^8\r
46649   y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;   // y == 1/x mod 2^16\r
46650   // last step - calculate inverse mod DV directly;\r
46651   // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\r
46652   y = (y*(2-x*y%BI_DV))%BI_DV;          // y == 1/x mod 2^dbits\r
46653   // we really want the negative inverse, and -DV < y < DV\r
46654   return (y>0)?BI_DV-y:-y;\r
46655 }\r
46656 \r
46657 // Montgomery reduction\r
46658 function Montgomery(m) {\r
46659   this.m = m;\r
46660   this.mp = m.invDigit();\r
46661   this.mpl = this.mp&0x7fff;\r
46662   this.mph = this.mp>>15;\r
46663   this.um = (1<<(BI_DB-15))-1;\r
46664   this.mt2 = 2*m.t;\r
46665 }\r
46666 \r
46667 // xR mod m\r
46668 function montConvert(x) {\r
46669   var r = nbi();\r
46670   x.abs().dlShiftTo(this.m.t,r);\r
46671   r.divRemTo(this.m,null,r);\r
46672   if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\r
46673   return r;\r
46674 }\r
46675 \r
46676 // x/R mod m\r
46677 function montRevert(x) {\r
46678   var r = nbi();\r
46679   x.copyTo(r);\r
46680   this.reduce(r);\r
46681   return r;\r
46682 }\r
46683 \r
46684 // x = x/R mod m (HAC 14.32)\r
46685 function montReduce(x) {\r
46686   var x_array = x.array;\r
46687   while(x.t <= this.mt2)        // pad x so am has enough room later\r
46688     x_array[x.t++] = 0;\r
46689   for(var i = 0; i < this.m.t; ++i) {\r
46690     // faster way of calculating u0 = x[i]*mp mod DV\r
46691     var j = x_array[i]&0x7fff;\r
46692     var u0 = (j*this.mpl+(((j*this.mph+(x_array[i]>>15)*this.mpl)&this.um)<<15))&BI_DM;\r
46693     // use am to combine the multiply-shift-add into one call\r
46694     j = i+this.m.t;\r
46695     x_array[j] += this.m.am(0,u0,x,i,0,this.m.t);\r
46696     // propagate carry\r
46697     while(x_array[j] >= BI_DV) { x_array[j] -= BI_DV; x_array[++j]++; }\r
46698   }\r
46699   x.clamp();\r
46700   x.drShiftTo(this.m.t,x);\r
46701   if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\r
46702 }\r
46703 \r
46704 // r = "x^2/R mod m"; x != r\r
46705 function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\r
46706 \r
46707 // r = "xy/R mod m"; x,y != r\r
46708 function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\r
46709 \r
46710 Montgomery.prototype.convert = montConvert;\r
46711 Montgomery.prototype.revert = montRevert;\r
46712 Montgomery.prototype.reduce = montReduce;\r
46713 Montgomery.prototype.mulTo = montMulTo;\r
46714 Montgomery.prototype.sqrTo = montSqrTo;\r
46715 \r
46716 // (protected) true iff this is even\r
46717 function bnpIsEven() {\r
46718   var this_array = this.array;\r
46719   return ((this.t>0)?(this_array[0]&1):this.s) == 0;\r
46720 }\r
46721 \r
46722 // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)\r
46723 function bnpExp(e,z) {\r
46724   if(e > 0xffffffff || e < 1) return BigInteger.ONE;\r
46725   var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\r
46726   g.copyTo(r);\r
46727   while(--i >= 0) {\r
46728     z.sqrTo(r,r2);\r
46729     if((e&(1<<i)) > 0) z.mulTo(r2,g,r);\r
46730     else { var t = r; r = r2; r2 = t; }\r
46731   }\r
46732   return z.revert(r);\r
46733 }\r
46734 \r
46735 // (public) this^e % m, 0 <= e < 2^32\r
46736 function bnModPowInt(e,m) {\r
46737   var z;\r
46738   if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\r
46739   return this.exp(e,z);\r
46740 }\r
46741 \r
46742 // protected\r
46743 BigInteger.prototype.copyTo = bnpCopyTo;\r
46744 BigInteger.prototype.fromInt = bnpFromInt;\r
46745 BigInteger.prototype.fromString = bnpFromString;\r
46746 BigInteger.prototype.clamp = bnpClamp;\r
46747 BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\r
46748 BigInteger.prototype.drShiftTo = bnpDRShiftTo;\r
46749 BigInteger.prototype.lShiftTo = bnpLShiftTo;\r
46750 BigInteger.prototype.rShiftTo = bnpRShiftTo;\r
46751 BigInteger.prototype.subTo = bnpSubTo;\r
46752 BigInteger.prototype.multiplyTo = bnpMultiplyTo;\r
46753 BigInteger.prototype.squareTo = bnpSquareTo;\r
46754 BigInteger.prototype.divRemTo = bnpDivRemTo;\r
46755 BigInteger.prototype.invDigit = bnpInvDigit;\r
46756 BigInteger.prototype.isEven = bnpIsEven;\r
46757 BigInteger.prototype.exp = bnpExp;\r
46758 \r
46759 // public\r
46760 BigInteger.prototype.toString = bnToString;\r
46761 BigInteger.prototype.negate = bnNegate;\r
46762 BigInteger.prototype.abs = bnAbs;\r
46763 BigInteger.prototype.compareTo = bnCompareTo;\r
46764 BigInteger.prototype.bitLength = bnBitLength;\r
46765 BigInteger.prototype.mod = bnMod;\r
46766 BigInteger.prototype.modPowInt = bnModPowInt;\r
46767 \r
46768 // "constants"\r
46769 BigInteger.ZERO = nbv(0);\r
46770 BigInteger.ONE = nbv(1);\r
46771 // Copyright (c) 2005  Tom Wu\r
46772 // All Rights Reserved.\r
46773 // See "LICENSE" for details.\r
46774 \r
46775 // Extended JavaScript BN functions, required for RSA private ops.\r
46776 \r
46777 // (public)\r
46778 function bnClone() { var r = nbi(); this.copyTo(r); return r; }\r
46779 \r
46780 // (public) return value as integer\r
46781 function bnIntValue() {\r
46782   var this_array = this.array;\r
46783   if(this.s < 0) {\r
46784     if(this.t == 1) return this_array[0]-BI_DV;\r
46785     else if(this.t == 0) return -1;\r
46786   }\r
46787   else if(this.t == 1) return this_array[0];\r
46788   else if(this.t == 0) return 0;\r
46789   // assumes 16 < DB < 32\r
46790   return ((this_array[1]&((1<<(32-BI_DB))-1))<<BI_DB)|this_array[0];\r
46791 }\r
46792 \r
46793 // (public) return value as byte\r
46794 function bnByteValue() {\r
46795   var this_array = this.array;\r
46796   return (this.t==0)?this.s:(this_array[0]<<24)>>24;\r
46797 }\r
46798 \r
46799 // (public) return value as short (assumes DB>=16)\r
46800 function bnShortValue() {\r
46801   var this_array = this.array;\r
46802   return (this.t==0)?this.s:(this_array[0]<<16)>>16;\r
46803 }\r
46804 \r
46805 // (protected) return x s.t. r^x < DV\r
46806 function bnpChunkSize(r) { return Math.floor(Math.LN2*BI_DB/Math.log(r)); }\r
46807 \r
46808 // (public) 0 if this == 0, 1 if this > 0\r
46809 function bnSigNum() {\r
46810   var this_array = this.array;\r
46811   if(this.s < 0) return -1;\r
46812   else if(this.t <= 0 || (this.t == 1 && this_array[0] <= 0)) return 0;\r
46813   else return 1;\r
46814 }\r
46815 \r
46816 // (protected) convert to radix string\r
46817 function bnpToRadix(b) {\r
46818   if(b == null) b = 10;\r
46819   if(this.signum() == 0 || b < 2 || b > 36) return "0";\r
46820   var cs = this.chunkSize(b);\r
46821   var a = Math.pow(b,cs);\r
46822   var d = nbv(a), y = nbi(), z = nbi(), r = "";\r
46823   this.divRemTo(d,y,z);\r
46824   while(y.signum() > 0) {\r
46825     r = (a+z.intValue()).toString(b).substr(1) + r;\r
46826     y.divRemTo(d,y,z);\r
46827   }\r
46828   return z.intValue().toString(b) + r;\r
46829 }\r
46830 \r
46831 // (protected) convert from radix string\r
46832 function bnpFromRadix(s,b) {\r
46833   this.fromInt(0);\r
46834   if(b == null) b = 10;\r
46835   var cs = this.chunkSize(b);\r
46836   var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\r
46837   for(var i = 0; i < s.length; ++i) {\r
46838     var x = intAt(s,i);\r
46839     if(x < 0) {\r
46840       if(s.charAt(i) == "-" && this.signum() == 0) mi = true;\r
46841       continue;\r
46842     }\r
46843     w = b*w+x;\r
46844     if(++j >= cs) {\r
46845       this.dMultiply(d);\r
46846       this.dAddOffset(w,0);\r
46847       j = 0;\r
46848       w = 0;\r
46849     }\r
46850   }\r
46851   if(j > 0) {\r
46852     this.dMultiply(Math.pow(b,j));\r
46853     this.dAddOffset(w,0);\r
46854   }\r
46855   if(mi) BigInteger.ZERO.subTo(this,this);\r
46856 }\r
46857 \r
46858 // (protected) alternate constructor\r
46859 function bnpFromNumber(a,b,c) {\r
46860   if("number" == typeof b) {\r
46861     // new BigInteger(int,int,RNG)\r
46862     if(a < 2) this.fromInt(1);\r
46863     else {\r
46864       this.fromNumber(a,c);\r
46865       if(!this.testBit(a-1))    // force MSB set\r
46866         this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\r
46867       if(this.isEven()) this.dAddOffset(1,0); // force odd\r
46868       while(!this.isProbablePrime(b)) {\r
46869         this.dAddOffset(2,0);\r
46870         if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\r
46871       }\r
46872     }\r
46873   }\r
46874   else {\r
46875     // new BigInteger(int,RNG)\r
46876     var x = new Array(), t = a&7;\r
46877     x.length = (a>>3)+1;\r
46878     b.nextBytes(x);\r
46879     if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;\r
46880     this.fromString(x,256);\r
46881   }\r
46882 }\r
46883 \r
46884 // (public) convert to bigendian byte array\r
46885 function bnToByteArray() {\r
46886   var this_array = this.array;\r
46887   var i = this.t, r = new Array();\r
46888   r[0] = this.s;\r
46889   var p = BI_DB-(i*BI_DB)%8, d, k = 0;\r
46890   if(i-- > 0) {\r
46891     if(p < BI_DB && (d = this_array[i]>>p) != (this.s&BI_DM)>>p)\r
46892       r[k++] = d|(this.s<<(BI_DB-p));\r
46893     while(i >= 0) {\r
46894       if(p < 8) {\r
46895         d = (this_array[i]&((1<<p)-1))<<(8-p);\r
46896         d |= this_array[--i]>>(p+=BI_DB-8);\r
46897       }\r
46898       else {\r
46899         d = (this_array[i]>>(p-=8))&0xff;\r
46900         if(p <= 0) { p += BI_DB; --i; }\r
46901       }\r
46902       if((d&0x80) != 0) d |= -256;\r
46903       if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\r
46904       if(k > 0 || d != this.s) r[k++] = d;\r
46905     }\r
46906   }\r
46907   return r;\r
46908 }\r
46909 \r
46910 function bnEquals(a) { return(this.compareTo(a)==0); }\r
46911 function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\r
46912 function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\r
46913 \r
46914 // (protected) r = this op a (bitwise)\r
46915 function bnpBitwiseTo(a,op,r) {\r
46916   var this_array = this.array;\r
46917   var a_array    = a.array;\r
46918   var r_array    = r.array;\r
46919   var i, f, m = Math.min(a.t,this.t);\r
46920   for(i = 0; i < m; ++i) r_array[i] = op(this_array[i],a_array[i]);\r
46921   if(a.t < this.t) {\r
46922     f = a.s&BI_DM;\r
46923     for(i = m; i < this.t; ++i) r_array[i] = op(this_array[i],f);\r
46924     r.t = this.t;\r
46925   }\r
46926   else {\r
46927     f = this.s&BI_DM;\r
46928     for(i = m; i < a.t; ++i) r_array[i] = op(f,a_array[i]);\r
46929     r.t = a.t;\r
46930   }\r
46931   r.s = op(this.s,a.s);\r
46932   r.clamp();\r
46933 }\r
46934 \r
46935 // (public) this & a\r
46936 function op_and(x,y) { return x&y; }\r
46937 function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\r
46938 \r
46939 // (public) this | a\r
46940 function op_or(x,y) { return x|y; }\r
46941 function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\r
46942 \r
46943 // (public) this ^ a\r
46944 function op_xor(x,y) { return x^y; }\r
46945 function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\r
46946 \r
46947 // (public) this & ~a\r
46948 function op_andnot(x,y) { return x&~y; }\r
46949 function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\r
46950 \r
46951 // (public) ~this\r
46952 function bnNot() {\r
46953   var this_array = this.array;\r
46954   var r = nbi();\r
46955   var r_array = r.array;\r
46956 \r
46957   for(var i = 0; i < this.t; ++i) r_array[i] = BI_DM&~this_array[i];\r
46958   r.t = this.t;\r
46959   r.s = ~this.s;\r
46960   return r;\r
46961 }\r
46962 \r
46963 // (public) this << n\r
46964 function bnShiftLeft(n) {\r
46965   var r = nbi();\r
46966   if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\r
46967   return r;\r
46968 }\r
46969 \r
46970 // (public) this >> n\r
46971 function bnShiftRight(n) {\r
46972   var r = nbi();\r
46973   if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\r
46974   return r;\r
46975 }\r
46976 \r
46977 // return index of lowest 1-bit in x, x < 2^31\r
46978 function lbit(x) {\r
46979   if(x == 0) return -1;\r
46980   var r = 0;\r
46981   if((x&0xffff) == 0) { x >>= 16; r += 16; }\r
46982   if((x&0xff) == 0) { x >>= 8; r += 8; }\r
46983   if((x&0xf) == 0) { x >>= 4; r += 4; }\r
46984   if((x&3) == 0) { x >>= 2; r += 2; }\r
46985   if((x&1) == 0) ++r;\r
46986   return r;\r
46987 }\r
46988 \r
46989 // (public) returns index of lowest 1-bit (or -1 if none)\r
46990 function bnGetLowestSetBit() {\r
46991   var this_array = this.array;\r
46992   for(var i = 0; i < this.t; ++i)\r
46993     if(this_array[i] != 0) return i*BI_DB+lbit(this_array[i]);\r
46994   if(this.s < 0) return this.t*BI_DB;\r
46995   return -1;\r
46996 }\r
46997 \r
46998 // return number of 1 bits in x\r
46999 function cbit(x) {\r
47000   var r = 0;\r
47001   while(x != 0) { x &= x-1; ++r; }\r
47002   return r;\r
47003 }\r
47004 \r
47005 // (public) return number of set bits\r
47006 function bnBitCount() {\r
47007   var r = 0, x = this.s&BI_DM;\r
47008   for(var i = 0; i < this.t; ++i) r += cbit(this_array[i]^x);\r
47009   return r;\r
47010 }\r
47011 \r
47012 // (public) true iff nth bit is set\r
47013 function bnTestBit(n) {\r
47014   var this_array = this.array;\r
47015   var j = Math.floor(n/BI_DB);\r
47016   if(j >= this.t) return(this.s!=0);\r
47017   return((this_array[j]&(1<<(n%BI_DB)))!=0);\r
47018 }\r
47019 \r
47020 // (protected) this op (1<<n)\r
47021 function bnpChangeBit(n,op) {\r
47022   var r = BigInteger.ONE.shiftLeft(n);\r
47023   this.bitwiseTo(r,op,r);\r
47024   return r;\r
47025 }\r
47026 \r
47027 // (public) this | (1<<n)\r
47028 function bnSetBit(n) { return this.changeBit(n,op_or); }\r
47029 \r
47030 // (public) this & ~(1<<n)\r
47031 function bnClearBit(n) { return this.changeBit(n,op_andnot); }\r
47032 \r
47033 // (public) this ^ (1<<n)\r
47034 function bnFlipBit(n) { return this.changeBit(n,op_xor); }\r
47035 \r
47036 // (protected) r = this + a\r
47037 function bnpAddTo(a,r) {\r
47038   var this_array = this.array;\r
47039   var a_array = a.array;\r
47040   var r_array = r.array;\r
47041   var i = 0, c = 0, m = Math.min(a.t,this.t);\r
47042   while(i < m) {\r
47043     c += this_array[i]+a_array[i];\r
47044     r_array[i++] = c&BI_DM;\r
47045     c >>= BI_DB;\r
47046   }\r
47047   if(a.t < this.t) {\r
47048     c += a.s;\r
47049     while(i < this.t) {\r
47050       c += this_array[i];\r
47051       r_array[i++] = c&BI_DM;\r
47052       c >>= BI_DB;\r
47053     }\r
47054     c += this.s;\r
47055   }\r
47056   else {\r
47057     c += this.s;\r
47058     while(i < a.t) {\r
47059       c += a_array[i];\r
47060       r_array[i++] = c&BI_DM;\r
47061       c >>= BI_DB;\r
47062     }\r
47063     c += a.s;\r
47064   }\r
47065   r.s = (c<0)?-1:0;\r
47066   if(c > 0) r_array[i++] = c;\r
47067   else if(c < -1) r_array[i++] = BI_DV+c;\r
47068   r.t = i;\r
47069   r.clamp();\r
47070 }\r
47071 \r
47072 // (public) this + a\r
47073 function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\r
47074 \r
47075 // (public) this - a\r
47076 function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\r
47077 \r
47078 // (public) this * a\r
47079 function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\r
47080 \r
47081 // (public) this / a\r
47082 function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\r
47083 \r
47084 // (public) this % a\r
47085 function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\r
47086 \r
47087 // (public) [this/a,this%a]\r
47088 function bnDivideAndRemainder(a) {\r
47089   var q = nbi(), r = nbi();\r
47090   this.divRemTo(a,q,r);\r
47091   return new Array(q,r);\r
47092 }\r
47093 \r
47094 // (protected) this *= n, this >= 0, 1 < n < DV\r
47095 function bnpDMultiply(n) {\r
47096   var this_array = this.array;\r
47097   this_array[this.t] = this.am(0,n-1,this,0,0,this.t);\r
47098   ++this.t;\r
47099   this.clamp();\r
47100 }\r
47101 \r
47102 // (protected) this += n << w words, this >= 0\r
47103 function bnpDAddOffset(n,w) {\r
47104   var this_array = this.array;\r
47105   while(this.t <= w) this_array[this.t++] = 0;\r
47106   this_array[w] += n;\r
47107   while(this_array[w] >= BI_DV) {\r
47108     this_array[w] -= BI_DV;\r
47109     if(++w >= this.t) this_array[this.t++] = 0;\r
47110     ++this_array[w];\r
47111   }\r
47112 }\r
47113 \r
47114 // A "null" reducer\r
47115 function NullExp() {}\r
47116 function nNop(x) { return x; }\r
47117 function nMulTo(x,y,r) { x.multiplyTo(y,r); }\r
47118 function nSqrTo(x,r) { x.squareTo(r); }\r
47119 \r
47120 NullExp.prototype.convert = nNop;\r
47121 NullExp.prototype.revert = nNop;\r
47122 NullExp.prototype.mulTo = nMulTo;\r
47123 NullExp.prototype.sqrTo = nSqrTo;\r
47124 \r
47125 // (public) this^e\r
47126 function bnPow(e) { return this.exp(e,new NullExp()); }\r
47127 \r
47128 // (protected) r = lower n words of "this * a", a.t <= n\r
47129 // "this" should be the larger one if appropriate.\r
47130 function bnpMultiplyLowerTo(a,n,r) {\r
47131   var r_array = r.array;\r
47132   var a_array = a.array;\r
47133   var i = Math.min(this.t+a.t,n);\r
47134   r.s = 0; // assumes a,this >= 0\r
47135   r.t = i;\r
47136   while(i > 0) r_array[--i] = 0;\r
47137   var j;\r
47138   for(j = r.t-this.t; i < j; ++i) r_array[i+this.t] = this.am(0,a_array[i],r,i,0,this.t);\r
47139   for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a_array[i],r,i,0,n-i);\r
47140   r.clamp();\r
47141 }\r
47142 \r
47143 // (protected) r = "this * a" without lower n words, n > 0\r
47144 // "this" should be the larger one if appropriate.\r
47145 function bnpMultiplyUpperTo(a,n,r) {\r
47146   var r_array = r.array;\r
47147   var a_array = a.array;\r
47148   --n;\r
47149   var i = r.t = this.t+a.t-n;\r
47150   r.s = 0; // assumes a,this >= 0\r
47151   while(--i >= 0) r_array[i] = 0;\r
47152   for(i = Math.max(n-this.t,0); i < a.t; ++i)\r
47153     r_array[this.t+i-n] = this.am(n-i,a_array[i],r,0,0,this.t+i-n);\r
47154   r.clamp();\r
47155   r.drShiftTo(1,r);\r
47156 }\r
47157 \r
47158 // Barrett modular reduction\r
47159 function Barrett(m) {\r
47160   // setup Barrett\r
47161   this.r2 = nbi();\r
47162   this.q3 = nbi();\r
47163   BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\r
47164   this.mu = this.r2.divide(m);\r
47165   this.m = m;\r
47166 }\r
47167 \r
47168 function barrettConvert(x) {\r
47169   if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\r
47170   else if(x.compareTo(this.m) < 0) return x;\r
47171   else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\r
47172 }\r
47173 \r
47174 function barrettRevert(x) { return x; }\r
47175 \r
47176 // x = x mod m (HAC 14.42)\r
47177 function barrettReduce(x) {\r
47178   x.drShiftTo(this.m.t-1,this.r2);\r
47179   if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\r
47180   this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\r
47181   this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\r
47182   while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\r
47183   x.subTo(this.r2,x);\r
47184   while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\r
47185 }\r
47186 \r
47187 // r = x^2 mod m; x != r\r
47188 function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\r
47189 \r
47190 // r = x*y mod m; x,y != r\r
47191 function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\r
47192 \r
47193 Barrett.prototype.convert = barrettConvert;\r
47194 Barrett.prototype.revert = barrettRevert;\r
47195 Barrett.prototype.reduce = barrettReduce;\r
47196 Barrett.prototype.mulTo = barrettMulTo;\r
47197 Barrett.prototype.sqrTo = barrettSqrTo;\r
47198 \r
47199 // (public) this^e % m (HAC 14.85)\r
47200 function bnModPow(e,m) {\r
47201   var e_array = e.array;\r
47202   var i = e.bitLength(), k, r = nbv(1), z;\r
47203   if(i <= 0) return r;\r
47204   else if(i < 18) k = 1;\r
47205   else if(i < 48) k = 3;\r
47206   else if(i < 144) k = 4;\r
47207   else if(i < 768) k = 5;\r
47208   else k = 6;\r
47209   if(i < 8)\r
47210     z = new Classic(m);\r
47211   else if(m.isEven())\r
47212     z = new Barrett(m);\r
47213   else\r
47214     z = new Montgomery(m);\r
47215 \r
47216   // precomputation\r
47217   var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;\r
47218   g[1] = z.convert(this);\r
47219   if(k > 1) {\r
47220     var g2 = nbi();\r
47221     z.sqrTo(g[1],g2);\r
47222     while(n <= km) {\r
47223       g[n] = nbi();\r
47224       z.mulTo(g2,g[n-2],g[n]);\r
47225       n += 2;\r
47226     }\r
47227   }\r
47228 \r
47229   var j = e.t-1, w, is1 = true, r2 = nbi(), t;\r
47230   i = nbits(e_array[j])-1;\r
47231   while(j >= 0) {\r
47232     if(i >= k1) w = (e_array[j]>>(i-k1))&km;\r
47233     else {\r
47234       w = (e_array[j]&((1<<(i+1))-1))<<(k1-i);\r
47235       if(j > 0) w |= e_array[j-1]>>(BI_DB+i-k1);\r
47236     }\r
47237 \r
47238     n = k;\r
47239     while((w&1) == 0) { w >>= 1; --n; }\r
47240     if((i -= n) < 0) { i += BI_DB; --j; }\r
47241     if(is1) {   // ret == 1, don't bother squaring or multiplying it\r
47242       g[w].copyTo(r);\r
47243       is1 = false;\r
47244     }\r
47245     else {\r
47246       while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\r
47247       if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\r
47248       z.mulTo(r2,g[w],r);\r
47249     }\r
47250 \r
47251     while(j >= 0 && (e_array[j]&(1<<i)) == 0) {\r
47252       z.sqrTo(r,r2); t = r; r = r2; r2 = t;\r
47253       if(--i < 0) { i = BI_DB-1; --j; }\r
47254     }\r
47255   }\r
47256   return z.revert(r);\r
47257 }\r
47258 \r
47259 // (public) gcd(this,a) (HAC 14.54)\r
47260 function bnGCD(a) {\r
47261   var x = (this.s<0)?this.negate():this.clone();\r
47262   var y = (a.s<0)?a.negate():a.clone();\r
47263   if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }\r
47264   var i = x.getLowestSetBit(), g = y.getLowestSetBit();\r
47265   if(g < 0) return x;\r
47266   if(i < g) g = i;\r
47267   if(g > 0) {\r
47268     x.rShiftTo(g,x);\r
47269     y.rShiftTo(g,y);\r
47270   }\r
47271   while(x.signum() > 0) {\r
47272     if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\r
47273     if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\r
47274     if(x.compareTo(y) >= 0) {\r
47275       x.subTo(y,x);\r
47276       x.rShiftTo(1,x);\r
47277     }\r
47278     else {\r
47279       y.subTo(x,y);\r
47280       y.rShiftTo(1,y);\r
47281     }\r
47282   }\r
47283   if(g > 0) y.lShiftTo(g,y);\r
47284   return y;\r
47285 }\r
47286 \r
47287 // (protected) this % n, n < 2^26\r
47288 function bnpModInt(n) {\r
47289   var this_array = this.array;\r
47290   if(n <= 0) return 0;\r
47291   var d = BI_DV%n, r = (this.s<0)?n-1:0;\r
47292   if(this.t > 0)\r
47293     if(d == 0) r = this_array[0]%n;\r
47294     else for(var i = this.t-1; i >= 0; --i) r = (d*r+this_array[i])%n;\r
47295   return r;\r
47296 }\r
47297 \r
47298 // (public) 1/this % m (HAC 14.61)\r
47299 function bnModInverse(m) {\r
47300   var ac = m.isEven();\r
47301   if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\r
47302   var u = m.clone(), v = this.clone();\r
47303   var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\r
47304   while(u.signum() != 0) {\r
47305     while(u.isEven()) {\r
47306       u.rShiftTo(1,u);\r
47307       if(ac) {\r
47308         if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\r
47309         a.rShiftTo(1,a);\r
47310       }\r
47311       else if(!b.isEven()) b.subTo(m,b);\r
47312       b.rShiftTo(1,b);\r
47313     }\r
47314     while(v.isEven()) {\r
47315       v.rShiftTo(1,v);\r
47316       if(ac) {\r
47317         if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\r
47318         c.rShiftTo(1,c);\r
47319       }\r
47320       else if(!d.isEven()) d.subTo(m,d);\r
47321       d.rShiftTo(1,d);\r
47322     }\r
47323     if(u.compareTo(v) >= 0) {\r
47324       u.subTo(v,u);\r
47325       if(ac) a.subTo(c,a);\r
47326       b.subTo(d,b);\r
47327     }\r
47328     else {\r
47329       v.subTo(u,v);\r
47330       if(ac) c.subTo(a,c);\r
47331       d.subTo(b,d);\r
47332     }\r
47333   }\r
47334   if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\r
47335   if(d.compareTo(m) >= 0) return d.subtract(m);\r
47336   if(d.signum() < 0) d.addTo(m,d); else return d;\r
47337   if(d.signum() < 0) return d.add(m); else return d;\r
47338 }\r
47339 \r
47340 var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];\r
47341 var lplim = (1<<26)/lowprimes[lowprimes.length-1];\r
47342 \r
47343 // (public) test primality with certainty >= 1-.5^t\r
47344 function bnIsProbablePrime(t) {\r
47345   var i, x = this.abs();\r
47346   var x_array = x.array;\r
47347   if(x.t == 1 && x_array[0] <= lowprimes[lowprimes.length-1]) {\r
47348     for(i = 0; i < lowprimes.length; ++i)\r
47349       if(x_array[0] == lowprimes[i]) return true;\r
47350     return false;\r
47351   }\r
47352   if(x.isEven()) return false;\r
47353   i = 1;\r
47354   while(i < lowprimes.length) {\r
47355     var m = lowprimes[i], j = i+1;\r
47356     while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\r
47357     m = x.modInt(m);\r
47358     while(i < j) if(m%lowprimes[i++] == 0) return false;\r
47359   }\r
47360   return x.millerRabin(t);\r
47361 }\r
47362 \r
47363 // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\r
47364 function bnpMillerRabin(t) {\r
47365   var n1 = this.subtract(BigInteger.ONE);\r
47366   var k = n1.getLowestSetBit();\r
47367   if(k <= 0) return false;\r
47368   var r = n1.shiftRight(k);\r
47369   t = (t+1)>>1;\r
47370   if(t > lowprimes.length) t = lowprimes.length;\r
47371   var a = nbi();\r
47372   for(var i = 0; i < t; ++i) {\r
47373     a.fromInt(lowprimes[i]);\r
47374     var y = a.modPow(r,this);\r
47375     if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\r
47376       var j = 1;\r
47377       while(j++ < k && y.compareTo(n1) != 0) {\r
47378         y = y.modPowInt(2,this);\r
47379         if(y.compareTo(BigInteger.ONE) == 0) return false;\r
47380       }\r
47381       if(y.compareTo(n1) != 0) return false;\r
47382     }\r
47383   }\r
47384   return true;\r
47385 }\r
47386 \r
47387 // protected\r
47388 BigInteger.prototype.chunkSize = bnpChunkSize;\r
47389 BigInteger.prototype.toRadix = bnpToRadix;\r
47390 BigInteger.prototype.fromRadix = bnpFromRadix;\r
47391 BigInteger.prototype.fromNumber = bnpFromNumber;\r
47392 BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\r
47393 BigInteger.prototype.changeBit = bnpChangeBit;\r
47394 BigInteger.prototype.addTo = bnpAddTo;\r
47395 BigInteger.prototype.dMultiply = bnpDMultiply;\r
47396 BigInteger.prototype.dAddOffset = bnpDAddOffset;\r
47397 BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\r
47398 BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\r
47399 BigInteger.prototype.modInt = bnpModInt;\r
47400 BigInteger.prototype.millerRabin = bnpMillerRabin;\r
47401 \r
47402 // public\r
47403 BigInteger.prototype.clone = bnClone;\r
47404 BigInteger.prototype.intValue = bnIntValue;\r
47405 BigInteger.prototype.byteValue = bnByteValue;\r
47406 BigInteger.prototype.shortValue = bnShortValue;\r
47407 BigInteger.prototype.signum = bnSigNum;\r
47408 BigInteger.prototype.toByteArray = bnToByteArray;\r
47409 BigInteger.prototype.equals = bnEquals;\r
47410 BigInteger.prototype.min = bnMin;\r
47411 BigInteger.prototype.max = bnMax;\r
47412 BigInteger.prototype.and = bnAnd;\r
47413 BigInteger.prototype.or = bnOr;\r
47414 BigInteger.prototype.xor = bnXor;\r
47415 BigInteger.prototype.andNot = bnAndNot;\r
47416 BigInteger.prototype.not = bnNot;\r
47417 BigInteger.prototype.shiftLeft = bnShiftLeft;\r
47418 BigInteger.prototype.shiftRight = bnShiftRight;\r
47419 BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\r
47420 BigInteger.prototype.bitCount = bnBitCount;\r
47421 BigInteger.prototype.testBit = bnTestBit;\r
47422 BigInteger.prototype.setBit = bnSetBit;\r
47423 BigInteger.prototype.clearBit = bnClearBit;\r
47424 BigInteger.prototype.flipBit = bnFlipBit;\r
47425 BigInteger.prototype.add = bnAdd;\r
47426 BigInteger.prototype.subtract = bnSubtract;\r
47427 BigInteger.prototype.multiply = bnMultiply;\r
47428 BigInteger.prototype.divide = bnDivide;\r
47429 BigInteger.prototype.remainder = bnRemainder;\r
47430 BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\r
47431 BigInteger.prototype.modPow = bnModPow;\r
47432 BigInteger.prototype.modInverse = bnModInverse;\r
47433 BigInteger.prototype.pow = bnPow;\r
47434 BigInteger.prototype.gcd = bnGCD;\r
47435 BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\r
47436 \r
47437 // BigInteger interfaces not implemented in jsbn:\r
47438 \r
47439 // BigInteger(int signum, byte[] magnitude)\r
47440 // double doubleValue()\r
47441 // float floatValue()\r
47442 // int hashCode()\r
47443 // long longValue()\r
47444 // static BigInteger valueOf(long val)\r
47445 // prng4.js - uses Arcfour as a PRNG\r
47446 \r
47447 function Arcfour() {\r
47448   this.i = 0;\r
47449   this.j = 0;\r
47450   this.S = new Array();\r
47451 }\r
47452 \r
47453 // Initialize arcfour context from key, an array of ints, each from [0..255]\r
47454 function ARC4init(key) {\r
47455   var i, j, t;\r
47456   for(i = 0; i < 256; ++i)\r
47457     this.S[i] = i;\r
47458   j = 0;\r
47459   for(i = 0; i < 256; ++i) {\r
47460     j = (j + this.S[i] + key[i % key.length]) & 255;\r
47461     t = this.S[i];\r
47462     this.S[i] = this.S[j];\r
47463     this.S[j] = t;\r
47464   }\r
47465   this.i = 0;\r
47466   this.j = 0;\r
47467 }\r
47468 \r
47469 function ARC4next() {\r
47470   var t;\r
47471   this.i = (this.i + 1) & 255;\r
47472   this.j = (this.j + this.S[this.i]) & 255;\r
47473   t = this.S[this.i];\r
47474   this.S[this.i] = this.S[this.j];\r
47475   this.S[this.j] = t;\r
47476   return this.S[(t + this.S[this.i]) & 255];\r
47477 }\r
47478 \r
47479 Arcfour.prototype.init = ARC4init;\r
47480 Arcfour.prototype.next = ARC4next;\r
47481 \r
47482 // Plug in your RNG constructor here\r
47483 function prng_newstate() {\r
47484   return new Arcfour();\r
47485 }\r
47486 \r
47487 // Pool size must be a multiple of 4 and greater than 32.\r
47488 // An array of bytes the size of the pool will be passed to init()\r
47489 var rng_psize = 256;\r
47490 // Random number generator - requires a PRNG backend, e.g. prng4.js\r
47491 \r
47492 // For best results, put code like\r
47493 // <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>\r
47494 // in your main HTML document.\r
47495 \r
47496 var rng_state;\r
47497 var rng_pool;\r
47498 var rng_pptr;\r
47499 \r
47500 // Mix in a 32-bit integer into the pool\r
47501 function rng_seed_int(x) {\r
47502   rng_pool[rng_pptr++] ^= x & 255;\r
47503   rng_pool[rng_pptr++] ^= (x >> 8) & 255;\r
47504   rng_pool[rng_pptr++] ^= (x >> 16) & 255;\r
47505   rng_pool[rng_pptr++] ^= (x >> 24) & 255;\r
47506   if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\r
47507 }\r
47508 \r
47509 // Mix in the current time (w/milliseconds) into the pool\r
47510 function rng_seed_time() {\r
47511   rng_seed_int(new Date().getTime());\r
47512 }\r
47513 \r
47514 // Initialize the pool with junk if needed.\r
47515 if(rng_pool == null) {\r
47516   rng_pool = new Array();\r
47517   rng_pptr = 0;\r
47518   var t;\r
47519   while(rng_pptr < rng_psize) {  // extract some randomness from Math.random()\r
47520     t = Math.floor(65536 * Math.random());\r
47521     rng_pool[rng_pptr++] = t >>> 8;\r
47522     rng_pool[rng_pptr++] = t & 255;\r
47523   }\r
47524   rng_pptr = 0;\r
47525   rng_seed_time();\r
47526   //rng_seed_int(window.screenX);\r
47527   //rng_seed_int(window.screenY);\r
47528 }\r
47529 \r
47530 function rng_get_byte() {\r
47531   if(rng_state == null) {\r
47532     rng_seed_time();\r
47533     rng_state = prng_newstate();\r
47534     rng_state.init(rng_pool);\r
47535     for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\r
47536       rng_pool[rng_pptr] = 0;\r
47537     rng_pptr = 0;\r
47538     //rng_pool = null;\r
47539   }\r
47540   // TODO: allow reseeding after first request\r
47541   return rng_state.next();\r
47542 }\r
47543 \r
47544 function rng_get_bytes(ba) {\r
47545   var i;\r
47546   for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\r
47547 }\r
47548 \r
47549 function SecureRandom() {}\r
47550 \r
47551 SecureRandom.prototype.nextBytes = rng_get_bytes;\r
47552 // Depends on jsbn.js and rng.js\r
47553 \r
47554 // convert a (hex) string to a bignum object\r
47555 function parseBigInt(str,r) {\r
47556   return new BigInteger(str,r);\r
47557 }\r
47558 \r
47559 function linebrk(s,n) {\r
47560   var ret = "";\r
47561   var i = 0;\r
47562   while(i + n < s.length) {\r
47563     ret += s.substring(i,i+n) + "\n";\r
47564     i += n;\r
47565   }\r
47566   return ret + s.substring(i,s.length);\r
47567 }\r
47568 \r
47569 function byte2Hex(b) {\r
47570   if(b < 0x10)\r
47571     return "0" + b.toString(16);\r
47572   else\r
47573     return b.toString(16);\r
47574 }\r
47575 \r
47576 // PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\r
47577 function pkcs1pad2(s,n) {\r
47578   if(n < s.length + 11) {\r
47579     alert("Message too long for RSA");\r
47580     return null;\r
47581   }\r
47582   var ba = new Array();\r
47583   var i = s.length - 1;\r
47584   while(i >= 0 && n > 0) ba[--n] = s.charCodeAt(i--);\r
47585   ba[--n] = 0;\r
47586   var rng = new SecureRandom();\r
47587   var x = new Array();\r
47588   while(n > 2) { // random non-zero pad\r
47589     x[0] = 0;\r
47590     while(x[0] == 0) rng.nextBytes(x);\r
47591     ba[--n] = x[0];\r
47592   }\r
47593   ba[--n] = 2;\r
47594   ba[--n] = 0;\r
47595   return new BigInteger(ba);\r
47596 }\r
47597 \r
47598 // "empty" RSA key constructor\r
47599 function RSAKey() {\r
47600   this.n = null;\r
47601   this.e = 0;\r
47602   this.d = null;\r
47603   this.p = null;\r
47604   this.q = null;\r
47605   this.dmp1 = null;\r
47606   this.dmq1 = null;\r
47607   this.coeff = null;\r
47608 }\r
47609 \r
47610 // Set the public key fields N and e from hex strings\r
47611 function RSASetPublic(N,E) {\r
47612   if(N != null && E != null && N.length > 0 && E.length > 0) {\r
47613     this.n = parseBigInt(N,16);\r
47614     this.e = parseInt(E,16);\r
47615   }\r
47616   else\r
47617     alert("Invalid RSA public key");\r
47618 }\r
47619 \r
47620 // Perform raw public operation on "x": return x^e (mod n)\r
47621 function RSADoPublic(x) {\r
47622   return x.modPowInt(this.e, this.n);\r
47623 }\r
47624 \r
47625 // Return the PKCS#1 RSA encryption of "text" as an even-length hex string\r
47626 function RSAEncrypt(text) {\r
47627   var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);\r
47628   if(m == null) return null;\r
47629   var c = this.doPublic(m);\r
47630   if(c == null) return null;\r
47631   var h = c.toString(16);\r
47632   if((h.length & 1) == 0) return h; else return "0" + h;\r
47633 }\r
47634 \r
47635 // Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string\r
47636 //function RSAEncryptB64(text) {\r
47637 //  var h = this.encrypt(text);\r
47638 //  if(h) return hex2b64(h); else return null;\r
47639 //}\r
47640 \r
47641 // protected\r
47642 RSAKey.prototype.doPublic = RSADoPublic;\r
47643 \r
47644 // public\r
47645 RSAKey.prototype.setPublic = RSASetPublic;\r
47646 RSAKey.prototype.encrypt = RSAEncrypt;\r
47647 //RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\r
47648 // Depends on rsa.js and jsbn2.js\r
47649 \r
47650 // Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\r
47651 function pkcs1unpad2(d,n) {\r
47652   var b = d.toByteArray();\r
47653   var i = 0;\r
47654   while(i < b.length && b[i] == 0) ++i;\r
47655   if(b.length-i != n-1 || b[i] != 2)\r
47656     return null;\r
47657   ++i;\r
47658   while(b[i] != 0)\r
47659     if(++i >= b.length) return null;\r
47660   var ret = "";\r
47661   while(++i < b.length)\r
47662     ret += String.fromCharCode(b[i]);\r
47663   return ret;\r
47664 }\r
47665 \r
47666 // Set the private key fields N, e, and d from hex strings\r
47667 function RSASetPrivate(N,E,D) {\r
47668   if(N != null && E != null && N.length > 0 && E.length > 0) {\r
47669     this.n = parseBigInt(N,16);\r
47670     this.e = parseInt(E,16);\r
47671     this.d = parseBigInt(D,16);\r
47672   }\r
47673   else\r
47674     alert("Invalid RSA private key");\r
47675 }\r
47676 \r
47677 // Set the private key fields N, e, d and CRT params from hex strings\r
47678 function RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {\r
47679   if(N != null && E != null && N.length > 0 && E.length > 0) {\r
47680     this.n = parseBigInt(N,16);\r
47681     this.e = parseInt(E,16);\r
47682     this.d = parseBigInt(D,16);\r
47683     this.p = parseBigInt(P,16);\r
47684     this.q = parseBigInt(Q,16);\r
47685     this.dmp1 = parseBigInt(DP,16);\r
47686     this.dmq1 = parseBigInt(DQ,16);\r
47687     this.coeff = parseBigInt(C,16);\r
47688   }\r
47689   else\r
47690     alert("Invalid RSA private key");\r
47691 }\r
47692 \r
47693 // Generate a new random private key B bits long, using public expt E\r
47694 function RSAGenerate(B,E) {\r
47695   var rng = new SecureRandom();\r
47696   var qs = B>>1;\r
47697   this.e = parseInt(E,16);\r
47698   var ee = new BigInteger(E,16);\r
47699   for(;;) {\r
47700     for(;;) {\r
47701       this.p = new BigInteger(B-qs,1,rng);\r
47702       if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) break;\r
47703     }\r
47704     for(;;) {\r
47705       this.q = new BigInteger(qs,1,rng);\r
47706       if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) break;\r
47707     }\r
47708     if(this.p.compareTo(this.q) <= 0) {\r
47709       var t = this.p;\r
47710       this.p = this.q;\r
47711       this.q = t;\r
47712     }\r
47713     var p1 = this.p.subtract(BigInteger.ONE);\r
47714     var q1 = this.q.subtract(BigInteger.ONE);\r
47715     var phi = p1.multiply(q1);\r
47716     if(phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {\r
47717       this.n = this.p.multiply(this.q);\r
47718       this.d = ee.modInverse(phi);\r
47719       this.dmp1 = this.d.mod(p1);\r
47720       this.dmq1 = this.d.mod(q1);\r
47721       this.coeff = this.q.modInverse(this.p);\r
47722       break;\r
47723     }\r
47724   }\r
47725 }\r
47726 \r
47727 // Perform raw private operation on "x": return x^d (mod n)\r
47728 function RSADoPrivate(x) {\r
47729   if(this.p == null || this.q == null)\r
47730     return x.modPow(this.d, this.n);\r
47731 \r
47732   // TODO: re-calculate any missing CRT params\r
47733   var xp = x.mod(this.p).modPow(this.dmp1, this.p);\r
47734   var xq = x.mod(this.q).modPow(this.dmq1, this.q);\r
47735 \r
47736   while(xp.compareTo(xq) < 0)\r
47737     xp = xp.add(this.p);\r
47738   return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\r
47739 }\r
47740 \r
47741 // Return the PKCS#1 RSA decryption of "ctext".\r
47742 // "ctext" is an even-length hex string and the output is a plain string.\r
47743 function RSADecrypt(ctext) {\r
47744   var c = parseBigInt(ctext, 16);\r
47745   var m = this.doPrivate(c);\r
47746   if(m == null) return null;\r
47747   return pkcs1unpad2(m, (this.n.bitLength()+7)>>3);\r
47748 }\r
47749 \r
47750 // Return the PKCS#1 RSA decryption of "ctext".\r
47751 // "ctext" is a Base64-encoded string and the output is a plain string.\r
47752 //function RSAB64Decrypt(ctext) {\r
47753 //  var h = b64tohex(ctext);\r
47754 //  if(h) return this.decrypt(h); else return null;\r
47755 //}\r
47756 \r
47757 // protected\r
47758 RSAKey.prototype.doPrivate = RSADoPrivate;\r
47759 \r
47760 // public\r
47761 RSAKey.prototype.setPrivate = RSASetPrivate;\r
47762 RSAKey.prototype.setPrivateEx = RSASetPrivateEx;\r
47763 RSAKey.prototype.generate = RSAGenerate;\r
47764 RSAKey.prototype.decrypt = RSADecrypt;\r
47765 //RSAKey.prototype.b64_decrypt = RSAB64Decrypt;\r
47766 \r
47767 \r
47768 nValue="a5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c065168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3";\r
47769 eValue="10001";\r
47770 dValue="8e9912f6d3645894e8d38cb58c0db81ff516cf4c7e5a14c7f1eddb1459d2cded4d8d293fc97aee6aefb861859c8b6a3d1dfe710463e1f9ddc72048c09751971c4a580aa51eb523357a3cc48d31cfad1d4a165066ed92d4748fb6571211da5cb14bc11b6e2df7c1a559e6d5ac1cd5c94703a22891464fba23d0d965086277a161";\r
47771 pValue="d090ce58a92c75233a6486cb0a9209bf3583b64f540c76f5294bb97d285eed33aec220bde14b2417951178ac152ceab6da7090905b478195498b352048f15e7d";\r
47772 qValue="cab575dc652bb66df15a0359609d51d1db184750c00c6698b90ef3465c99655103edbf0d54c56aec0ce3c4d22592338092a126a0cc49f65a4a30d222b411e58f";\r
47773 dmp1Value="1a24bca8e273df2f0e47c199bbf678604e7df7215480c77c8db39f49b000ce2cf7500038acfff5433b7d582a01f1826e6f4d42e1c57f5e1fef7b12aabc59fd25";\r
47774 dmq1Value="3d06982efbbe47339e1f6d36b1216b8a741d410b0c662f54f7118b27b9a4ec9d914337eb39841d8666f3034408cf94f5b62f11c402fc994fe15a05493150d9fd";\r
47775 coeffValue="3a3e731acd8960b7ff9eb81a7ff93bd1cfa74cbd56987db58b4594fb09c09084db1734c8143f98b602b981aaa9243ca28deb69b5b280ee8dcee0fd2625e53250";\r
47776 \r
47777 setupEngine(am3, 28);\r
47778 \r
47779 var RSA = new RSAKey();\r
47780 var TEXT = "The quick brown fox jumped over the extremely lazy frogs!";\r
47781 \r
47782 RSA.setPublic(nValue, eValue);\r
47783 RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue);\r
47784 \r
47785 function encrypt() {\r
47786   return RSA.encrypt(TEXT);\r
47787 }\r
47788 \r
47789 function decrypt() {\r
47790   return RSA.decrypt(TEXT);\r
47791 }\r
47792 // Copyright 2008 Google Inc. All Rights Reserved.\r
47793 // Copyright 1996 John Maloney and Mario Wolczko.\r
47794 \r
47795 // This program is free software; you can redistribute it and/or modify\r
47796 // it under the terms of the GNU General Public License as published by\r
47797 // the Free Software Foundation; either version 2 of the License, or\r
47798 // (at your option) any later version.\r
47799 //\r
47800 // This program is distributed in the hope that it will be useful,\r
47801 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
47802 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
47803 // GNU General Public License for more details.\r
47804 //\r
47805 // You should have received a copy of the GNU General Public License\r
47806 // along with this program; if not, write to the Free Software\r
47807 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
47808 \r
47809 \r
47810 // This implementation of the DeltaBlue benchmark is derived \r
47811 // from the Smalltalk implementation by John Maloney and Mario \r
47812 // Wolczko. Some parts have been translated directly, whereas \r
47813 // others have been modified more aggresively to make it feel \r
47814 // more like a JavaScript program.\r
47815 \r
47816 \r
47817 var DeltaBlue = new BenchmarkSuite('DeltaBlue', 71104, [\r
47818   new Benchmark('DeltaBlue', deltaBlue)\r
47819 ]);\r
47820 \r
47821 \r
47822 /**\r
47823  * A JavaScript implementation of the DeltaBlue constrain-solving\r
47824  * algorithm, as described in:\r
47825  *\r
47826  * "The DeltaBlue Algorithm: An Incremental Constraint Hierarchy Solver"\r
47827  *   Bjorn N. Freeman-Benson and John Maloney\r
47828  *   January 1990 Communications of the ACM,\r
47829  *   also available as University of Washington TR 89-08-06.\r
47830  *\r
47831  * Beware: this benchmark is written in a grotesque style where\r
47832  * the constraint model is built by side-effects from constructors.\r
47833  * I've kept it this way to avoid deviating too much from the original\r
47834  * implementation.\r
47835  */\r
47836 \r
47837 \r
47838 /* --- O b j e c t   M o d e l --- */\r
47839 \r
47840 Object.prototype.inherits = function (shuper) {\r
47841   function Inheriter() { }\r
47842   Inheriter.prototype = shuper.prototype;\r
47843   this.prototype = new Inheriter();\r
47844   this.superConstructor = shuper;\r
47845 }\r
47846 \r
47847 function OrderedCollection() {\r
47848   this.elms = new Array();\r
47849 }\r
47850 \r
47851 OrderedCollection.prototype.add = function (elm) {\r
47852   this.elms.push(elm);\r
47853 }\r
47854 \r
47855 OrderedCollection.prototype.at = function (index) {\r
47856   return this.elms[index];\r
47857 }\r
47858 \r
47859 OrderedCollection.prototype.size = function () {\r
47860   return this.elms.length;\r
47861 }\r
47862 \r
47863 OrderedCollection.prototype.removeFirst = function () {\r
47864   return this.elms.pop();\r
47865 }\r
47866 \r
47867 OrderedCollection.prototype.remove = function (elm) {\r
47868   var index = 0, skipped = 0;\r
47869   for (var i = 0; i < this.elms.length; i++) {\r
47870     var value = this.elms[i];\r
47871     if (value != elm) {\r
47872       this.elms[index] = value;\r
47873       index++;\r
47874     } else {\r
47875       skipped++;\r
47876     }\r
47877   }\r
47878   for (var i = 0; i < skipped; i++)\r
47879     this.elms.pop();\r
47880 }\r
47881 \r
47882 /* --- *\r
47883  * S t r e n g t h\r
47884  * --- */\r
47885 \r
47886 /**\r
47887  * Strengths are used to measure the relative importance of constraints.\r
47888  * New strengths may be inserted in the strength hierarchy without\r
47889  * disrupting current constraints.  Strengths cannot be created outside\r
47890  * this class, so pointer comparison can be used for value comparison.\r
47891  */\r
47892 function Strength(strengthValue, name) {\r
47893   this.strengthValue = strengthValue;\r
47894   this.name = name;\r
47895 }\r
47896 \r
47897 Strength.stronger = function (s1, s2) {\r
47898   return s1.strengthValue < s2.strengthValue;\r
47899 }\r
47900 \r
47901 Strength.weaker = function (s1, s2) {\r
47902   return s1.strengthValue > s2.strengthValue;\r
47903 }\r
47904 \r
47905 Strength.weakestOf = function (s1, s2) {\r
47906   return this.weaker(s1, s2) ? s1 : s2;\r
47907 }\r
47908 \r
47909 Strength.strongest = function (s1, s2) {\r
47910   return this.stronger(s1, s2) ? s1 : s2;\r
47911 }\r
47912 \r
47913 Strength.prototype.nextWeaker = function () {\r
47914   switch (this.strengthValue) {\r
47915     case 0: return Strength.WEAKEST;\r
47916     case 1: return Strength.WEAK_DEFAULT;\r
47917     case 2: return Strength.NORMAL;\r
47918     case 3: return Strength.STRONG_DEFAULT;\r
47919     case 4: return Strength.PREFERRED;\r
47920     case 5: return Strength.REQUIRED;\r
47921   }\r
47922 }\r
47923 \r
47924 // Strength constants.\r
47925 Strength.REQUIRED        = new Strength(0, "required");\r
47926 Strength.STONG_PREFERRED = new Strength(1, "strongPreferred");\r
47927 Strength.PREFERRED       = new Strength(2, "preferred");\r
47928 Strength.STRONG_DEFAULT  = new Strength(3, "strongDefault");\r
47929 Strength.NORMAL          = new Strength(4, "normal");\r
47930 Strength.WEAK_DEFAULT    = new Strength(5, "weakDefault");\r
47931 Strength.WEAKEST         = new Strength(6, "weakest");\r
47932 \r
47933 /* --- *\r
47934  * C o n s t r a i n t\r
47935  * --- */\r
47936 \r
47937 /**\r
47938  * An abstract class representing a system-maintainable relationship\r
47939  * (or "constraint") between a set of variables. A constraint supplies\r
47940  * a strength instance variable; concrete subclasses provide a means\r
47941  * of storing the constrained variables and other information required\r
47942  * to represent a constraint.\r
47943  */\r
47944 function Constraint(strength) {\r
47945   this.strength = strength;\r
47946 }\r
47947 \r
47948 /**\r
47949  * Activate this constraint and attempt to satisfy it.\r
47950  */\r
47951 Constraint.prototype.addConstraint = function () {\r
47952   this.addToGraph();\r
47953   planner.incrementalAdd(this);\r
47954 }\r
47955 \r
47956 /**\r
47957  * Attempt to find a way to enforce this constraint. If successful,\r
47958  * record the solution, perhaps modifying the current dataflow\r
47959  * graph. Answer the constraint that this constraint overrides, if\r
47960  * there is one, or nil, if there isn't.\r
47961  * Assume: I am not already satisfied.\r
47962  */\r
47963 Constraint.prototype.satisfy = function (mark) {\r
47964   this.chooseMethod(mark);\r
47965   if (!this.isSatisfied()) {\r
47966     if (this.strength == Strength.REQUIRED)\r
47967       alert("Could not satisfy a required constraint!");\r
47968     return null;\r
47969   }\r
47970   this.markInputs(mark);\r
47971   var out = this.output();\r
47972   var overridden = out.determinedBy;\r
47973   if (overridden != null) overridden.markUnsatisfied();\r
47974   out.determinedBy = this;\r
47975   if (!planner.addPropagate(this, mark))\r
47976     alert("Cycle encountered");\r
47977   out.mark = mark;\r
47978   return overridden;\r
47979 }\r
47980 \r
47981 Constraint.prototype.destroyConstraint = function () {\r
47982   if (this.isSatisfied()) planner.incrementalRemove(this);\r
47983   else this.removeFromGraph();\r
47984 }\r
47985 \r
47986 /**\r
47987  * Normal constraints are not input constraints.  An input constraint\r
47988  * is one that depends on external state, such as the mouse, the\r
47989  * keybord, a clock, or some arbitraty piece of imperative code.\r
47990  */\r
47991 Constraint.prototype.isInput = function () {\r
47992   return false;\r
47993 }\r
47994 \r
47995 /* --- *\r
47996  * U n a r y   C o n s t r a i n t\r
47997  * --- */\r
47998 \r
47999 /**\r
48000  * Abstract superclass for constraints having a single possible output\r
48001  * variable.\r
48002  */\r
48003 function UnaryConstraint(v, strength) {\r
48004   UnaryConstraint.superConstructor.call(this, strength);\r
48005   this.myOutput = v;\r
48006   this.satisfied = false;\r
48007   this.addConstraint();\r
48008 }\r
48009 \r
48010 UnaryConstraint.inherits(Constraint);\r
48011 \r
48012 /**\r
48013  * Adds this constraint to the constraint graph\r
48014  */\r
48015 UnaryConstraint.prototype.addToGraph = function () {\r
48016   this.myOutput.addConstraint(this);\r
48017   this.satisfied = false;\r
48018 }\r
48019 \r
48020 /**\r
48021  * Decides if this constraint can be satisfied and records that\r
48022  * decision.\r
48023  */\r
48024 UnaryConstraint.prototype.chooseMethod = function (mark) {\r
48025   this.satisfied = (this.myOutput.mark != mark)\r
48026     && Strength.stronger(this.strength, this.myOutput.walkStrength);\r
48027 }\r
48028 \r
48029 /**\r
48030  * Returns true if this constraint is satisfied in the current solution.\r
48031  */\r
48032 UnaryConstraint.prototype.isSatisfied = function () {\r
48033   return this.satisfied;\r
48034 }\r
48035 \r
48036 UnaryConstraint.prototype.markInputs = function (mark) {\r
48037   // has no inputs\r
48038 }\r
48039 \r
48040 /**\r
48041  * Returns the current output variable.\r
48042  */\r
48043 UnaryConstraint.prototype.output = function () {\r
48044   return this.myOutput;\r
48045 }\r
48046 \r
48047 /**\r
48048  * Calculate the walkabout strength, the stay flag, and, if it is\r
48049  * 'stay', the value for the current output of this constraint. Assume\r
48050  * this constraint is satisfied.\r
48051  */\r
48052 UnaryConstraint.prototype.recalculate = function () {\r
48053   this.myOutput.walkStrength = this.strength;\r
48054   this.myOutput.stay = !this.isInput();\r
48055   if (this.myOutput.stay) this.execute(); // Stay optimization\r
48056 }\r
48057 \r
48058 /**\r
48059  * Records that this constraint is unsatisfied\r
48060  */\r
48061 UnaryConstraint.prototype.markUnsatisfied = function () {\r
48062   this.satisfied = false;\r
48063 }\r
48064 \r
48065 UnaryConstraint.prototype.inputsKnown = function () {\r
48066   return true;\r
48067 }\r
48068 \r
48069 UnaryConstraint.prototype.removeFromGraph = function () {\r
48070   if (this.myOutput != null) this.myOutput.removeConstraint(this);\r
48071   this.satisfied = false;\r
48072 }\r
48073 \r
48074 /* --- *\r
48075  * S t a y   C o n s t r a i n t\r
48076  * --- */\r
48077 \r
48078 /**\r
48079  * Variables that should, with some level of preference, stay the same.\r
48080  * Planners may exploit the fact that instances, if satisfied, will not\r
48081  * change their output during plan execution.  This is called "stay\r
48082  * optimization".\r
48083  */\r
48084 function StayConstraint(v, str) {\r
48085   StayConstraint.superConstructor.call(this, v, str);\r
48086 }\r
48087 \r
48088 StayConstraint.inherits(UnaryConstraint);\r
48089 \r
48090 StayConstraint.prototype.execute = function () {\r
48091   // Stay constraints do nothing\r
48092 }\r
48093 \r
48094 /* --- *\r
48095  * E d i t   C o n s t r a i n t\r
48096  * --- */\r
48097 \r
48098 /**\r
48099  * A unary input constraint used to mark a variable that the client\r
48100  * wishes to change.\r
48101  */\r
48102 function EditConstraint(v, str) {\r
48103   EditConstraint.superConstructor.call(this, v, str);\r
48104 }\r
48105 \r
48106 EditConstraint.inherits(UnaryConstraint);\r
48107 \r
48108 /**\r
48109  * Edits indicate that a variable is to be changed by imperative code.\r
48110  */\r
48111 EditConstraint.prototype.isInput = function () {\r
48112   return true;\r
48113 }\r
48114 \r
48115 EditConstraint.prototype.execute = function () {\r
48116   // Edit constraints do nothing\r
48117 }\r
48118 \r
48119 /* --- *\r
48120  * B i n a r y   C o n s t r a i n t\r
48121  * --- */\r
48122 \r
48123 var Direction = new Object();\r
48124 Direction.NONE     = 0;\r
48125 Direction.FORWARD  = 1;\r
48126 Direction.BACKWARD = -1;\r
48127 \r
48128 /**\r
48129  * Abstract superclass for constraints having two possible output\r
48130  * variables.\r
48131  */\r
48132 function BinaryConstraint(var1, var2, strength) {\r
48133   BinaryConstraint.superConstructor.call(this, strength);\r
48134   this.v1 = var1;\r
48135   this.v2 = var2;\r
48136   this.direction = Direction.NONE;\r
48137   this.addConstraint();\r
48138 }\r
48139 \r
48140 BinaryConstraint.inherits(Constraint);\r
48141 \r
48142 /**\r
48143  * Decides if this constratint can be satisfied and which way it\r
48144  * should flow based on the relative strength of the variables related,\r
48145  * and record that decision.\r
48146  */\r
48147 BinaryConstraint.prototype.chooseMethod = function (mark) {\r
48148   if (this.v1.mark == mark) {\r
48149     this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v2.walkStrength))\r
48150       ? Direction.FORWARD\r
48151       : Direction.NONE;\r
48152   }\r
48153   if (this.v2.mark == mark) {\r
48154     this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v1.walkStrength))\r
48155       ? Direction.BACKWARD\r
48156       : Direction.NONE;\r
48157   }\r
48158   if (Strength.weaker(this.v1.walkStrength, this.v2.walkStrength)) {\r
48159     this.direction = Strength.stronger(this.strength, this.v1.walkStrength)\r
48160       ? Direction.BACKWARD\r
48161       : Direction.NONE;\r
48162   } else {\r
48163     this.direction = Strength.stronger(this.strength, this.v2.walkStrength)\r
48164       ? Direction.FORWARD\r
48165       : Direction.BACKWARD\r
48166   }\r
48167 }\r
48168 \r
48169 /**\r
48170  * Add this constraint to the constraint graph\r
48171  */\r
48172 BinaryConstraint.prototype.addToGraph = function () {\r
48173   this.v1.addConstraint(this);\r
48174   this.v2.addConstraint(this);\r
48175   this.direction = Direction.NONE;\r
48176 }\r
48177 \r
48178 /**\r
48179  * Answer true if this constraint is satisfied in the current solution.\r
48180  */\r
48181 BinaryConstraint.prototype.isSatisfied = function () {\r
48182   return this.direction != Direction.NONE;\r
48183 }\r
48184 \r
48185 /**\r
48186  * Mark the input variable with the given mark.\r
48187  */\r
48188 BinaryConstraint.prototype.markInputs = function (mark) {\r
48189   this.input().mark = mark;\r
48190 }\r
48191 \r
48192 /**\r
48193  * Returns the current input variable\r
48194  */\r
48195 BinaryConstraint.prototype.input = function () {\r
48196   return (this.direction == Direction.FORWARD) ? this.v1 : this.v2;\r
48197 }\r
48198 \r
48199 /**\r
48200  * Returns the current output variable\r
48201  */\r
48202 BinaryConstraint.prototype.output = function () {\r
48203   return (this.direction == Direction.FORWARD) ? this.v2 : this.v1;\r
48204 }\r
48205 \r
48206 /**\r
48207  * Calculate the walkabout strength, the stay flag, and, if it is\r
48208  * 'stay', the value for the current output of this\r
48209  * constraint. Assume this constraint is satisfied.\r
48210  */\r
48211 BinaryConstraint.prototype.recalculate = function () {\r
48212   var ihn = this.input(), out = this.output();\r
48213   out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);\r
48214   out.stay = ihn.stay;\r
48215   if (out.stay) this.execute();\r
48216 }\r
48217 \r
48218 /**\r
48219  * Record the fact that this constraint is unsatisfied.\r
48220  */\r
48221 BinaryConstraint.prototype.markUnsatisfied = function () {\r
48222   this.direction = Direction.NONE;\r
48223 }\r
48224 \r
48225 BinaryConstraint.prototype.inputsKnown = function (mark) {\r
48226   var i = this.input();\r
48227   return i.mark == mark || i.stay || i.determinedBy == null;\r
48228 }\r
48229 \r
48230 BinaryConstraint.prototype.removeFromGraph = function () {\r
48231   if (this.v1 != null) this.v1.removeConstraint(this);\r
48232   if (this.v2 != null) this.v2.removeConstraint(this);\r
48233   this.direction = Direction.NONE;\r
48234 }\r
48235 \r
48236 /* --- *\r
48237  * S c a l e   C o n s t r a i n t\r
48238  * --- */\r
48239 \r
48240 /**\r
48241  * Relates two variables by the linear scaling relationship: "v2 =\r
48242  * (v1 * scale) + offset". Either v1 or v2 may be changed to maintain\r
48243  * this relationship but the scale factor and offset are considered\r
48244  * read-only.\r
48245  */\r
48246 function ScaleConstraint(src, scale, offset, dest, strength) {\r
48247   this.direction = Direction.NONE;\r
48248   this.scale = scale;\r
48249   this.offset = offset;\r
48250   ScaleConstraint.superConstructor.call(this, src, dest, strength);\r
48251 }\r
48252 \r
48253 ScaleConstraint.inherits(BinaryConstraint);\r
48254 \r
48255 /**\r
48256  * Adds this constraint to the constraint graph.\r
48257  */\r
48258 ScaleConstraint.prototype.addToGraph = function () {\r
48259   ScaleConstraint.superConstructor.prototype.addToGraph.call(this);\r
48260   this.scale.addConstraint(this);\r
48261   this.offset.addConstraint(this);\r
48262 }\r
48263 \r
48264 ScaleConstraint.prototype.removeFromGraph = function () {\r
48265   ScaleConstraint.superConstructor.prototype.removeFromGraph.call(this);\r
48266   if (this.scale != null) this.scale.removeConstraint(this);\r
48267   if (this.offset != null) this.offset.removeConstraint(this);\r
48268 }\r
48269 \r
48270 ScaleConstraint.prototype.markInputs = function (mark) {\r
48271   ScaleConstraint.superConstructor.prototype.markInputs.call(this, mark);\r
48272   this.scale.mark = this.offset.mark = mark;\r
48273 }\r
48274 \r
48275 /**\r
48276  * Enforce this constraint. Assume that it is satisfied.\r
48277  */\r
48278 ScaleConstraint.prototype.execute = function () {\r
48279   if (this.direction == Direction.FORWARD) {\r
48280     this.v2.value = this.v1.value * this.scale.value + this.offset.value;\r
48281   } else {\r
48282     this.v1.value = (this.v2.value - this.offset.value) / this.scale.value;\r
48283   }\r
48284 }\r
48285 \r
48286 /**\r
48287  * Calculate the walkabout strength, the stay flag, and, if it is\r
48288  * 'stay', the value for the current output of this constraint. Assume\r
48289  * this constraint is satisfied.\r
48290  */\r
48291 ScaleConstraint.prototype.recalculate = function () {\r
48292   var ihn = this.input(), out = this.output();\r
48293   out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);\r
48294   out.stay = ihn.stay && this.scale.stay && this.offset.stay;\r
48295   if (out.stay) this.execute();\r
48296 }\r
48297 \r
48298 /* --- *\r
48299  * E q u a l i t  y   C o n s t r a i n t\r
48300  * --- */\r
48301 \r
48302 /**\r
48303  * Constrains two variables to have the same value.\r
48304  */\r
48305 function EqualityConstraint(var1, var2, strength) {\r
48306   EqualityConstraint.superConstructor.call(this, var1, var2, strength);\r
48307 }\r
48308 \r
48309 EqualityConstraint.inherits(BinaryConstraint);\r
48310 \r
48311 /**\r
48312  * Enforce this constraint. Assume that it is satisfied.\r
48313  */\r
48314 EqualityConstraint.prototype.execute = function () {\r
48315   this.output().value = this.input().value;\r
48316 }\r
48317 \r
48318 /* --- *\r
48319  * V a r i a b l e\r
48320  * --- */\r
48321 \r
48322 /**\r
48323  * A constrained variable. In addition to its value, it maintain the\r
48324  * structure of the constraint graph, the current dataflow graph, and\r
48325  * various parameters of interest to the DeltaBlue incremental\r
48326  * constraint solver.\r
48327  **/\r
48328 function Variable(name, initialValue) {\r
48329   this.value = initialValue || 0;\r
48330   this.constraints = new OrderedCollection();\r
48331   this.determinedBy = null;\r
48332   this.mark = 0;\r
48333   this.walkStrength = Strength.WEAKEST;\r
48334   this.stay = true;\r
48335   this.name = name;\r
48336 }\r
48337 \r
48338 /**\r
48339  * Add the given constraint to the set of all constraints that refer\r
48340  * this variable.\r
48341  */\r
48342 Variable.prototype.addConstraint = function (c) {\r
48343   this.constraints.add(c);\r
48344 }\r
48345 \r
48346 /**\r
48347  * Removes all traces of c from this variable.\r
48348  */\r
48349 Variable.prototype.removeConstraint = function (c) {\r
48350   this.constraints.remove(c);\r
48351   if (this.determinedBy == c) this.determinedBy = null;\r
48352 }\r
48353 \r
48354 /* --- *\r
48355  * P l a n n e r\r
48356  * --- */\r
48357 \r
48358 /**\r
48359  * The DeltaBlue planner\r
48360  */\r
48361 function Planner() {\r
48362   this.currentMark = 0;\r
48363 }\r
48364 \r
48365 /**\r
48366  * Attempt to satisfy the given constraint and, if successful,\r
48367  * incrementally update the dataflow graph.  Details: If satifying\r
48368  * the constraint is successful, it may override a weaker constraint\r
48369  * on its output. The algorithm attempts to resatisfy that\r
48370  * constraint using some other method. This process is repeated\r
48371  * until either a) it reaches a variable that was not previously\r
48372  * determined by any constraint or b) it reaches a constraint that\r
48373  * is too weak to be satisfied using any of its methods. The\r
48374  * variables of constraints that have been processed are marked with\r
48375  * a unique mark value so that we know where we've been. This allows\r
48376  * the algorithm to avoid getting into an infinite loop even if the\r
48377  * constraint graph has an inadvertent cycle.\r
48378  */\r
48379 Planner.prototype.incrementalAdd = function (c) {\r
48380   var mark = this.newMark();\r
48381   var overridden = c.satisfy(mark);\r
48382   while (overridden != null)\r
48383     overridden = overridden.satisfy(mark);\r
48384 }\r
48385 \r
48386 /**\r
48387  * Entry point for retracting a constraint. Remove the given\r
48388  * constraint and incrementally update the dataflow graph.\r
48389  * Details: Retracting the given constraint may allow some currently\r
48390  * unsatisfiable downstream constraint to be satisfied. We therefore collect\r
48391  * a list of unsatisfied downstream constraints and attempt to\r
48392  * satisfy each one in turn. This list is traversed by constraint\r
48393  * strength, strongest first, as a heuristic for avoiding\r
48394  * unnecessarily adding and then overriding weak constraints.\r
48395  * Assume: c is satisfied.\r
48396  */\r
48397 Planner.prototype.incrementalRemove = function (c) {\r
48398   var out = c.output();\r
48399   c.markUnsatisfied();\r
48400   c.removeFromGraph();\r
48401   var unsatisfied = this.removePropagateFrom(out);\r
48402   var strength = Strength.REQUIRED;\r
48403   do {\r
48404     for (var i = 0; i < unsatisfied.size(); i++) {\r
48405       var u = unsatisfied.at(i);\r
48406       if (u.strength == strength)\r
48407         this.incrementalAdd(u);\r
48408     }\r
48409     strength = strength.nextWeaker();\r
48410   } while (strength != Strength.WEAKEST);\r
48411 }\r
48412 \r
48413 /**\r
48414  * Select a previously unused mark value.\r
48415  */\r
48416 Planner.prototype.newMark = function () {\r
48417   return ++this.currentMark;\r
48418 }\r
48419 \r
48420 /**\r
48421  * Extract a plan for resatisfaction starting from the given source\r
48422  * constraints, usually a set of input constraints. This method\r
48423  * assumes that stay optimization is desired; the plan will contain\r
48424  * only constraints whose output variables are not stay. Constraints\r
48425  * that do no computation, such as stay and edit constraints, are\r
48426  * not included in the plan.\r
48427  * Details: The outputs of a constraint are marked when it is added\r
48428  * to the plan under construction. A constraint may be appended to\r
48429  * the plan when all its input variables are known. A variable is\r
48430  * known if either a) the variable is marked (indicating that has\r
48431  * been computed by a constraint appearing earlier in the plan), b)\r
48432  * the variable is 'stay' (i.e. it is a constant at plan execution\r
48433  * time), or c) the variable is not determined by any\r
48434  * constraint. The last provision is for past states of history\r
48435  * variables, which are not stay but which are also not computed by\r
48436  * any constraint.\r
48437  * Assume: sources are all satisfied.\r
48438  */\r
48439 Planner.prototype.makePlan = function (sources) {\r
48440   var mark = this.newMark();\r
48441   var plan = new Plan();\r
48442   var todo = sources;\r
48443   while (todo.size() > 0) {\r
48444     var c = todo.removeFirst();\r
48445     if (c.output().mark != mark && c.inputsKnown(mark)) {\r
48446       plan.addConstraint(c);\r
48447       c.output().mark = mark;\r
48448       this.addConstraintsConsumingTo(c.output(), todo);\r
48449     }\r
48450   }\r
48451   return plan;\r
48452 }\r
48453 \r
48454 /**\r
48455  * Extract a plan for resatisfying starting from the output of the\r
48456  * given constraints, usually a set of input constraints.\r
48457  */\r
48458 Planner.prototype.extractPlanFromConstraints = function (constraints) {\r
48459   var sources = new OrderedCollection();\r
48460   for (var i = 0; i < constraints.size(); i++) {\r
48461     var c = constraints.at(i);\r
48462     if (c.isInput() && c.isSatisfied())\r
48463       // not in plan already and eligible for inclusion\r
48464       sources.add(c);\r
48465   }\r
48466   return this.makePlan(sources);\r
48467 }\r
48468 \r
48469 /**\r
48470  * Recompute the walkabout strengths and stay flags of all variables\r
48471  * downstream of the given constraint and recompute the actual\r
48472  * values of all variables whose stay flag is true. If a cycle is\r
48473  * detected, remove the given constraint and answer\r
48474  * false. Otherwise, answer true.\r
48475  * Details: Cycles are detected when a marked variable is\r
48476  * encountered downstream of the given constraint. The sender is\r
48477  * assumed to have marked the inputs of the given constraint with\r
48478  * the given mark. Thus, encountering a marked node downstream of\r
48479  * the output constraint means that there is a path from the\r
48480  * constraint's output to one of its inputs.\r
48481  */\r
48482 Planner.prototype.addPropagate = function (c, mark) {\r
48483   var todo = new OrderedCollection();\r
48484   todo.add(c);\r
48485   while (todo.size() > 0) {\r
48486     var d = todo.removeFirst();\r
48487     if (d.output().mark == mark) {\r
48488       this.incrementalRemove(c);\r
48489       return false;\r
48490     }\r
48491     d.recalculate();\r
48492     this.addConstraintsConsumingTo(d.output(), todo);\r
48493   }\r
48494   return true;\r
48495 }\r
48496 \r
48497 \r
48498 /**\r
48499  * Update the walkabout strengths and stay flags of all variables\r
48500  * downstream of the given constraint. Answer a collection of\r
48501  * unsatisfied constraints sorted in order of decreasing strength.\r
48502  */\r
48503 Planner.prototype.removePropagateFrom = function (out) {\r
48504   out.determinedBy = null;\r
48505   out.walkStrength = Strength.WEAKEST;\r
48506   out.stay = true;\r
48507   var unsatisfied = new OrderedCollection();\r
48508   var todo = new OrderedCollection();\r
48509   todo.add(out);\r
48510   while (todo.size() > 0) {\r
48511     var v = todo.removeFirst();\r
48512     for (var i = 0; i < v.constraints.size(); i++) {\r
48513       var c = v.constraints.at(i);\r
48514       if (!c.isSatisfied())\r
48515         unsatisfied.add(c);\r
48516     }\r
48517     var determining = v.determinedBy;\r
48518     for (var i = 0; i < v.constraints.size(); i++) {\r
48519       var next = v.constraints.at(i);\r
48520       if (next != determining && next.isSatisfied()) {\r
48521         next.recalculate();\r
48522         todo.add(next.output());\r
48523       }\r
48524     }\r
48525   }\r
48526   return unsatisfied;\r
48527 }\r
48528 \r
48529 Planner.prototype.addConstraintsConsumingTo = function (v, coll) {\r
48530   var determining = v.determinedBy;\r
48531   var cc = v.constraints;\r
48532   for (var i = 0; i < cc.size(); i++) {\r
48533     var c = cc.at(i);\r
48534     if (c != determining && c.isSatisfied())\r
48535       coll.add(c);\r
48536   }\r
48537 }\r
48538 \r
48539 /* --- *\r
48540  * P l a n\r
48541  * --- */\r
48542 \r
48543 /**\r
48544  * A Plan is an ordered list of constraints to be executed in sequence\r
48545  * to resatisfy all currently satisfiable constraints in the face of\r
48546  * one or more changing inputs.\r
48547  */\r
48548 function Plan() {\r
48549   this.v = new OrderedCollection();\r
48550 }\r
48551 \r
48552 Plan.prototype.addConstraint = function (c) {\r
48553   this.v.add(c);\r
48554 }\r
48555 \r
48556 Plan.prototype.size = function () {\r
48557   return this.v.size();\r
48558 }\r
48559 \r
48560 Plan.prototype.constraintAt = function (index) {\r
48561   return this.v.at(index);\r
48562 }\r
48563 \r
48564 Plan.prototype.execute = function () {\r
48565   for (var i = 0; i < this.size(); i++) {\r
48566     var c = this.constraintAt(i);\r
48567     c.execute();\r
48568   }\r
48569 }\r
48570 \r
48571 /* --- *\r
48572  * M a i n\r
48573  * --- */\r
48574 \r
48575 /**\r
48576  * This is the standard DeltaBlue benchmark. A long chain of equality\r
48577  * constraints is constructed with a stay constraint on one end. An\r
48578  * edit constraint is then added to the opposite end and the time is\r
48579  * measured for adding and removing this constraint, and extracting\r
48580  * and executing a constraint satisfaction plan. There are two cases.\r
48581  * In case 1, the added constraint is stronger than the stay\r
48582  * constraint and values must propagate down the entire length of the\r
48583  * chain. In case 2, the added constraint is weaker than the stay\r
48584  * constraint so it cannot be accomodated. The cost in this case is,\r
48585  * of course, very low. Typical situations lie somewhere between these\r
48586  * two extremes.\r
48587  */\r
48588 function chainTest(n) {\r
48589   planner = new Planner();\r
48590   var prev = null, first = null, last = null;\r
48591 \r
48592   // Build chain of n equality constraints\r
48593   for (var i = 0; i <= n; i++) {\r
48594     var name = "v" + i;\r
48595     var v = new Variable(name);\r
48596     if (prev != null)\r
48597       new EqualityConstraint(prev, v, Strength.REQUIRED);\r
48598     if (i == 0) first = v;\r
48599     if (i == n) last = v;\r
48600     prev = v;\r
48601   }\r
48602 \r
48603   new StayConstraint(last, Strength.STRONG_DEFAULT);\r
48604   var edit = new EditConstraint(first, Strength.PREFERRED);\r
48605   var edits = new OrderedCollection();\r
48606   edits.add(edit);\r
48607   var plan = planner.extractPlanFromConstraints(edits);\r
48608   for (var i = 0; i < 100; i++) {\r
48609     first.value = i;\r
48610     plan.execute();\r
48611     if (last.value != i)\r
48612       alert("Chain test failed.");\r
48613   }\r
48614 }\r
48615 \r
48616 /**\r
48617  * This test constructs a two sets of variables related to each\r
48618  * other by a simple linear transformation (scale and offset). The\r
48619  * time is measured to change a variable on either side of the\r
48620  * mapping and to change the scale and offset factors.\r
48621  */\r
48622 function projectionTest(n) {\r
48623   planner = new Planner();\r
48624   var scale = new Variable("scale", 10);\r
48625   var offset = new Variable("offset", 1000);\r
48626   var src = null, dst = null;\r
48627 \r
48628   var dests = new OrderedCollection();\r
48629   for (var i = 0; i < n; i++) {\r
48630     src = new Variable("src" + i, i);\r
48631     dst = new Variable("dst" + i, i);\r
48632     dests.add(dst);\r
48633     new StayConstraint(src, Strength.NORMAL);\r
48634     new ScaleConstraint(src, scale, offset, dst, Strength.REQUIRED);\r
48635   }\r
48636 \r
48637   change(src, 17);\r
48638   if (dst.value != 1170) alert("Projection 1 failed");\r
48639   change(dst, 1050);\r
48640   if (src.value != 5) alert("Projection 2 failed");\r
48641   change(scale, 5);\r
48642   for (var i = 0; i < n - 1; i++) {\r
48643     if (dests.at(i).value != i * 5 + 1000)\r
48644       alert("Projection 3 failed");\r
48645   }\r
48646   change(offset, 2000);\r
48647   for (var i = 0; i < n - 1; i++) {\r
48648     if (dests.at(i).value != i * 5 + 2000)\r
48649       alert("Projection 4 failed");\r
48650   }\r
48651 }\r
48652 \r
48653 function change(v, newValue) {\r
48654   var edit = new EditConstraint(v, Strength.PREFERRED);\r
48655   var edits = new OrderedCollection();\r
48656   edits.add(edit);\r
48657   var plan = planner.extractPlanFromConstraints(edits);\r
48658   for (var i = 0; i < 10; i++) {\r
48659     v.value = newValue;\r
48660     plan.execute();\r
48661   }\r
48662   edit.destroyConstraint();\r
48663 }\r
48664 \r
48665 // Global variable holding the current planner.\r
48666 var planner = null;\r
48667 \r
48668 function deltaBlue() {\r
48669   chainTest(100);\r
48670   projectionTest(100);\r
48671 }\r
48672 // This file is automatically generated by scheme2js, except for the\r
48673 // benchmark harness code at the beginning and end of the file.\r
48674 \r
48675 var EarleyBoyer = new BenchmarkSuite('EarleyBoyer', 765819, [\r
48676   new Benchmark("Earley", function () { BgL_earleyzd2benchmarkzd2(); }),\r
48677   new Benchmark("Boyer", function () { BgL_nboyerzd2benchmarkzd2(); })\r
48678 ]);\r
48679 \r
48680 \r
48681 /************* GENERATED FILE - DO NOT EDIT *************/\r
48682 /************* GENERATED FILE - DO NOT EDIT *************/\r
48683 /************* GENERATED FILE - DO NOT EDIT *************/\r
48684 /************* GENERATED FILE - DO NOT EDIT *************/\r
48685 /************* GENERATED FILE - DO NOT EDIT *************/\r
48686 /************* GENERATED FILE - DO NOT EDIT *************/\r
48687 /************* GENERATED FILE - DO NOT EDIT *************/\r
48688 /************* GENERATED FILE - DO NOT EDIT *************/\r
48689 /*\r
48690  * To use write/prints/... the default-output port has to be set first.\r
48691  * Simply setting SC_DEFAULT_OUT and SC_ERROR_OUT to the desired values\r
48692  * should do the trick.\r
48693  * In the following example the std-out and error-port are redirected to\r
48694  * a DIV.\r
48695 function initRuntime() {\r
48696     function escapeHTML(s) {\r
48697         var tmp = s;\r
48698         tmp = tmp.replace(/&/g, "&amp;");\r
48699         tmp = tmp.replace(/</g, "&lt;");\r
48700         tmp = tmp.replace(/>/g, "&gt;");\r
48701         tmp = tmp.replace(/ /g, "&nbsp;");\r
48702         tmp = tmp.replace(/\n/g, "<br />");\r
48703         tmp = tmp.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp");\r
48704         return tmp;\r
48705         \r
48706     }\r
48707 \r
48708     document.write("<div id='stdout'></div>");\r
48709     SC_DEFAULT_OUT = new sc_GenericOutputPort(\r
48710         function(s) {\r
48711             var stdout = document.getElementById('stdout');\r
48712             stdout.innerHTML = stdout.innerHTML + escapeHTML(s);\r
48713         });\r
48714     SC_ERROR_OUT = SC_DEFAULT_OUT;\r
48715 }\r
48716 */\r
48717 \r
48718 \r
48719 function sc_print_debug() {\r
48720     sc_print.apply(null, arguments);\r
48721 }\r
48722 /*** META ((export *js*)) */\r
48723 var sc_JS_GLOBALS = this;\r
48724 \r
48725 var __sc_LINE=-1;\r
48726 var __sc_FILE="";\r
48727 \r
48728 /*** META ((export #t)) */\r
48729 function sc_alert() {\r
48730    var len = arguments.length;\r
48731    var s = "";\r
48732    var i;\r
48733 \r
48734    for( i = 0; i < len; i++ ) {\r
48735        s += sc_toDisplayString(arguments[ i ]);\r
48736    }\r
48737 \r
48738    return alert( s );\r
48739 }\r
48740 \r
48741 /*** META ((export #t)) */\r
48742 function sc_typeof( x ) {\r
48743    return typeof x;\r
48744 }\r
48745 \r
48746 /*** META ((export #t)) */\r
48747 function sc_error() {\r
48748     var a = [sc_jsstring2symbol("*error*")];\r
48749     for (var i = 0; i < arguments.length; i++) {\r
48750         a[i+1] = arguments[i];\r
48751     }\r
48752     throw a;\r
48753 }\r
48754 \r
48755 /*** META ((export #t)\r
48756            (peephole (prefix "throw ")))\r
48757 */\r
48758 function sc_raise(obj) {\r
48759     throw obj;\r
48760 }\r
48761 \r
48762 /*** META ((export with-handler-lambda)) */\r
48763 function sc_withHandlerLambda(handler, body) {\r
48764     try {\r
48765         return body();\r
48766     } catch(e) {\r
48767         if (!e._internalException)\r
48768             return handler(e);\r
48769         else\r
48770             throw e;\r
48771     }\r
48772 }\r
48773 \r
48774 var sc_properties = new Object();\r
48775 \r
48776 /*** META ((export #t)) */\r
48777 function sc_putpropBang(sym, key, val) {\r
48778     var ht = sc_properties[sym];\r
48779     if (!ht) {\r
48780         ht = new Object();\r
48781         sc_properties[sym] = ht;\r
48782     }\r
48783     ht[key] = val;\r
48784 }\r
48785 \r
48786 /*** META ((export #t)) */\r
48787 function sc_getprop(sym, key) {\r
48788     var ht = sc_properties[sym];\r
48789     if (ht) {\r
48790         if (key in ht)\r
48791             return ht[key];\r
48792         else\r
48793             return false;\r
48794     } else\r
48795         return false;\r
48796 }\r
48797 \r
48798 /*** META ((export #t)) */\r
48799 function sc_rempropBang(sym, key) {\r
48800     var ht = sc_properties[sym];\r
48801     if (ht)\r
48802         delete ht[key];\r
48803 }\r
48804 \r
48805 /*** META ((export #t)) */\r
48806 function sc_any2String(o) {\r
48807     return jsstring2string(sc_toDisplayString(o));\r
48808 }    \r
48809 \r
48810 /*** META ((export #t)\r
48811            (peephole (infix 2 2 "==="))\r
48812            (type bool))\r
48813 */\r
48814 function sc_isEqv(o1, o2) {\r
48815     return (o1 === o2);\r
48816 }\r
48817 \r
48818 /*** META ((export #t)\r
48819            (peephole (infix 2 2 "==="))\r
48820            (type bool))\r
48821 */\r
48822 function sc_isEq(o1, o2) {\r
48823     return (o1 === o2);\r
48824 }\r
48825 \r
48826 /*** META ((export #t)\r
48827            (type bool))\r
48828 */\r
48829 function sc_isNumber(n) {\r
48830     return (typeof n === "number");\r
48831 }\r
48832 \r
48833 /*** META ((export #t)\r
48834            (type bool))\r
48835 */\r
48836 function sc_isComplex(n) {\r
48837     return sc_isNumber(n);\r
48838 }\r
48839 \r
48840 /*** META ((export #t)\r
48841            (type bool))\r
48842 */\r
48843 function sc_isReal(n) {\r
48844     return sc_isNumber(n);\r
48845 }\r
48846 \r
48847 /*** META ((export #t)\r
48848            (type bool))\r
48849 */\r
48850 function sc_isRational(n) {\r
48851     return sc_isReal(n);\r
48852 }\r
48853 \r
48854 /*** META ((export #t)\r
48855            (type bool))\r
48856 */\r
48857 function sc_isInteger(n) {\r
48858     return (parseInt(n) === n);\r
48859 }\r
48860 \r
48861 /*** META ((export #t)\r
48862            (type bool)\r
48863            (peephole (postfix ", false")))\r
48864 */\r
48865 // we don't have exact numbers...\r
48866 function sc_isExact(n) {\r
48867     return false;\r
48868 }\r
48869 \r
48870 /*** META ((export #t)\r
48871            (peephole (postfix ", true"))\r
48872            (type bool))\r
48873 */\r
48874 function sc_isInexact(n) {\r
48875     return true;\r
48876 }\r
48877 \r
48878 /*** META ((export = =fx =fl)\r
48879            (type bool)\r
48880            (peephole (infix 2 2 "===")))\r
48881 */\r
48882 function sc_equal(x) {\r
48883     for (var i = 1; i < arguments.length; i++)\r
48884         if (x !== arguments[i])\r
48885             return false;\r
48886     return true;\r
48887 }\r
48888 \r
48889 /*** META ((export < <fx <fl)\r
48890            (type bool)\r
48891            (peephole (infix 2 2 "<")))\r
48892 */\r
48893 function sc_less(x) {\r
48894     for (var i = 1; i < arguments.length; i++) {\r
48895         if (x >= arguments[i])\r
48896             return false;\r
48897         x = arguments[i];\r
48898     }\r
48899     return true;\r
48900 }\r
48901 \r
48902 /*** META ((export > >fx >fl)\r
48903            (type bool)\r
48904            (peephole (infix 2 2 ">")))\r
48905 */\r
48906 function sc_greater(x, y) {\r
48907     for (var i = 1; i < arguments.length; i++) {\r
48908         if (x <= arguments[i])\r
48909             return false;\r
48910         x = arguments[i];\r
48911     }\r
48912     return true;\r
48913 }\r
48914 \r
48915 /*** META ((export <= <=fx <=fl)\r
48916            (type bool)\r
48917            (peephole (infix 2 2 "<=")))\r
48918 */\r
48919 function sc_lessEqual(x, y) {\r
48920     for (var i = 1; i < arguments.length; i++) {\r
48921         if (x > arguments[i])\r
48922             return false;\r
48923         x = arguments[i];\r
48924     }\r
48925     return true;\r
48926 }\r
48927 \r
48928 /*** META ((export >= >=fl >=fx)\r
48929            (type bool)\r
48930            (peephole (infix 2 2 ">=")))\r
48931 */\r
48932 function sc_greaterEqual(x, y) {\r
48933     for (var i = 1; i < arguments.length; i++) {\r
48934         if (x < arguments[i])\r
48935             return false;\r
48936         x = arguments[i];\r
48937     }\r
48938     return true;\r
48939 }\r
48940 \r
48941 /*** META ((export #t)\r
48942            (type bool)\r
48943            (peephole (postfix "=== 0")))\r
48944 */\r
48945 function sc_isZero(x) {\r
48946     return (x === 0);\r
48947 }\r
48948 \r
48949 /*** META ((export #t)\r
48950            (type bool)\r
48951            (peephole (postfix "> 0")))\r
48952 */\r
48953 function sc_isPositive(x) {\r
48954     return (x > 0);\r
48955 }\r
48956 \r
48957 /*** META ((export #t)\r
48958            (type bool)\r
48959            (peephole (postfix "< 0")))\r
48960 */\r
48961 function sc_isNegative(x) {\r
48962     return (x < 0);\r
48963 }\r
48964 \r
48965 /*** META ((export #t)\r
48966            (type bool)\r
48967            (peephole (postfix "%2===1")))\r
48968 */\r
48969 function sc_isOdd(x) {\r
48970     return (x % 2 === 1);\r
48971 }\r
48972 \r
48973 /*** META ((export #t)\r
48974            (type bool)\r
48975            (peephole (postfix "%2===0")))\r
48976 */\r
48977 function sc_isEven(x) {\r
48978     return (x % 2 === 0);\r
48979 }\r
48980 \r
48981 /*** META ((export #t)) */\r
48982 var sc_max = Math.max;\r
48983 /*** META ((export #t)) */\r
48984 var sc_min = Math.min;\r
48985 \r
48986 /*** META ((export + +fx +fl)\r
48987            (peephole (infix 0 #f "+" "0")))\r
48988 */\r
48989 function sc_plus() {\r
48990     var sum = 0;\r
48991     for (var i = 0; i < arguments.length; i++)\r
48992         sum += arguments[i];\r
48993     return sum;\r
48994 }\r
48995 \r
48996 /*** META ((export * *fx *fl)\r
48997            (peephole (infix 0 #f "*" "1")))\r
48998 */\r
48999 function sc_multi() {\r
49000     var product = 1;\r
49001     for (var i = 0; i < arguments.length; i++)\r
49002         product *= arguments[i];\r
49003     return product;\r
49004 }\r
49005 \r
49006 /*** META ((export - -fx -fl)\r
49007            (peephole (minus)))\r
49008 */\r
49009 function sc_minus(x) {\r
49010     if (arguments.length === 1)\r
49011         return -x;\r
49012     else {\r
49013         var res = x;\r
49014         for (var i = 1; i < arguments.length; i++)\r
49015             res -= arguments[i];\r
49016         return res;\r
49017     }\r
49018 }\r
49019 \r
49020 /*** META ((export / /fl)\r
49021            (peephole (div)))\r
49022 */\r
49023 function sc_div(x) {\r
49024     if (arguments.length === 1)\r
49025         return 1/x;\r
49026     else {\r
49027         var res = x;\r
49028         for (var i = 1; i < arguments.length; i++)\r
49029             res /= arguments[i];\r
49030         return res;\r
49031     }\r
49032 }\r
49033 \r
49034 /*** META ((export #t)) */\r
49035 var sc_abs = Math.abs;\r
49036 \r
49037 /*** META ((export quotient /fx)\r
49038            (peephole (hole 2 "parseInt(" x "/" y ")")))\r
49039 */\r
49040 function sc_quotient(x, y) {\r
49041     return parseInt(x / y);\r
49042 }\r
49043 \r
49044 /*** META ((export #t)\r
49045            (peephole (infix 2 2 "%")))\r
49046 */\r
49047 function sc_remainder(x, y) {\r
49048     return x % y;\r
49049 }\r
49050 \r
49051 /*** META ((export #t)\r
49052            (peephole (modulo)))\r
49053 */\r
49054 function sc_modulo(x, y) {\r
49055     var remainder = x % y;\r
49056     // if they don't have the same sign\r
49057     if ((remainder * y) < 0)\r
49058         return remainder + y;\r
49059     else\r
49060         return remainder;\r
49061 }\r
49062 \r
49063 function sc_euclid_gcd(a, b) {\r
49064     var temp;\r
49065     if (a === 0) return b;\r
49066     if (b === 0) return a;\r
49067     if (a < 0) {a = -a;};\r
49068     if (b < 0) {b = -b;};\r
49069     if (b > a) {temp = a; a = b; b = temp;};\r
49070     while (true) {\r
49071         a %= b;\r
49072         if(a === 0) {return b;};\r
49073         b %= a;\r
49074         if(b === 0) {return a;};\r
49075     };\r
49076     return b;\r
49077 }\r
49078 \r
49079 /*** META ((export #t)) */\r
49080 function sc_gcd() {\r
49081     var gcd = 0;\r
49082     for (var i = 0; i < arguments.length; i++)\r
49083         gcd = sc_euclid_gcd(gcd, arguments[i]);\r
49084     return gcd;\r
49085 }\r
49086 \r
49087 /*** META ((export #t)) */\r
49088 function sc_lcm() {\r
49089     var lcm = 1;\r
49090     for (var i = 0; i < arguments.length; i++) {\r
49091         var f = Math.round(arguments[i] / sc_euclid_gcd(arguments[i], lcm));\r
49092         lcm *= Math.abs(f);\r
49093     }\r
49094     return lcm;\r
49095 }\r
49096 \r
49097 // LIMITATION: numerator and denominator don't make sense in floating point world.\r
49098 //var SC_MAX_DECIMALS = 1000000\r
49099 //\r
49100 // function sc_numerator(x) {\r
49101 //     var rounded = Math.round(x * SC_MAX_DECIMALS);\r
49102 //     return Math.round(rounded / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));\r
49103 // }\r
49104 \r
49105 // function sc_denominator(x) {\r
49106 //     var rounded = Math.round(x * SC_MAX_DECIMALS);\r
49107 //     return Math.round(SC_MAX_DECIMALS / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));\r
49108 // }\r
49109 \r
49110 /*** META ((export #t)) */\r
49111 var sc_floor = Math.floor;\r
49112 /*** META ((export #t)) */\r
49113 var sc_ceiling = Math.ceil;\r
49114 /*** META ((export #t)) */\r
49115 var sc_truncate = parseInt;\r
49116 /*** META ((export #t)) */\r
49117 var sc_round = Math.round;\r
49118 \r
49119 // LIMITATION: sc_rationalize doesn't make sense in a floating point world.\r
49120 \r
49121 /*** META ((export #t)) */\r
49122 var sc_exp = Math.exp;\r
49123 /*** META ((export #t)) */\r
49124 var sc_log = Math.log;\r
49125 /*** META ((export #t)) */\r
49126 var sc_sin = Math.sin;\r
49127 /*** META ((export #t)) */\r
49128 var sc_cos = Math.cos;\r
49129 /*** META ((export #t)) */\r
49130 var sc_tan = Math.tan;\r
49131 /*** META ((export #t)) */\r
49132 var sc_asin = Math.asin;\r
49133 /*** META ((export #t)) */\r
49134 var sc_acos = Math.acos;\r
49135 /*** META ((export #t)) */\r
49136 var sc_atan = Math.atan;\r
49137 \r
49138 /*** META ((export #t)) */\r
49139 var sc_sqrt = Math.sqrt;\r
49140 /*** META ((export #t)) */\r
49141 var sc_expt = Math.pow;\r
49142 \r
49143 // LIMITATION: we don't have complex numbers.\r
49144 // LIMITATION: the following functions are hence not implemented.\r
49145 // LIMITATION: make-rectangular, make-polar, real-part, imag-part, magnitude, angle\r
49146 // LIMITATION: 2 argument atan\r
49147 \r
49148 /*** META ((export #t)\r
49149            (peephole (id)))\r
49150 */\r
49151 function sc_exact2inexact(x) {\r
49152     return x;\r
49153 }\r
49154 \r
49155 /*** META ((export #t)\r
49156            (peephole (id)))\r
49157 */\r
49158 function sc_inexact2exact(x) {\r
49159     return x;\r
49160 }\r
49161 \r
49162 function sc_number2jsstring(x, radix) {\r
49163     if (radix)\r
49164         return x.toString(radix);\r
49165     else\r
49166         return x.toString();\r
49167 }\r
49168 \r
49169 function sc_jsstring2number(s, radix) {\r
49170     if (s === "") return false;\r
49171 \r
49172     if (radix) {\r
49173         var t = parseInt(s, radix);\r
49174         if (!t && t !== 0) return false;\r
49175         // verify that each char is in range. (parseInt ignores leading\r
49176         // white and trailing chars)\r
49177         var allowedChars = "01234567890abcdefghijklmnopqrstuvwxyz".substring(0, radix+1);\r
49178         if ((new RegExp("^["+allowedChars+"]*$", "i")).test(s))\r
49179             return t;\r
49180         else return false;\r
49181     } else {\r
49182         var t = +s; // does not ignore trailing chars.\r
49183         if (!t && t !== 0) return false;\r
49184         // simply verify that first char is not whitespace.\r
49185         var c = s.charAt(0);\r
49186         // if +c is 0, but the char is not "0", then we have a whitespace.\r
49187         if (+c === 0 && c !== "0") return false;\r
49188         return t;\r
49189     }\r
49190 }\r
49191 \r
49192 /*** META ((export #t)\r
49193            (type bool)\r
49194            (peephole (not)))\r
49195 */\r
49196 function sc_not(b) {\r
49197     return b === false;\r
49198 }\r
49199 \r
49200 /*** META ((export #t)\r
49201            (type bool))\r
49202 */\r
49203 function sc_isBoolean(b) {\r
49204     return (b === true) || (b === false);\r
49205 }\r
49206 \r
49207 function sc_Pair(car, cdr) {\r
49208     this.car = car;\r
49209     this.cdr = cdr;\r
49210 }\r
49211 \r
49212 sc_Pair.prototype.toString = function() {\r
49213     return sc_toDisplayString(this);\r
49214 };\r
49215 sc_Pair.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {\r
49216     var current = this;\r
49217 \r
49218     var res = "(";\r
49219 \r
49220     while(true) {\r
49221         res += writeOrDisplay(current.car);\r
49222         if (sc_isPair(current.cdr)) {\r
49223             res += " ";\r
49224             current = current.cdr;\r
49225         } else if (current.cdr !== null) {\r
49226             res += " . " + writeOrDisplay(current.cdr);\r
49227             break;\r
49228         } else // current.cdr == null\r
49229             break;\r
49230     }\r
49231         \r
49232     res += ")";\r
49233 \r
49234     return res;\r
49235 };\r
49236 sc_Pair.prototype.sc_toDisplayString = function() {\r
49237     return this.sc_toWriteOrDisplayString(sc_toDisplayString);\r
49238 };\r
49239 sc_Pair.prototype.sc_toWriteString = function() {\r
49240     return this.sc_toWriteOrDisplayString(sc_toWriteString);\r
49241 };\r
49242 // sc_Pair.prototype.sc_toWriteCircleString in IO.js\r
49243 \r
49244 /*** META ((export #t)\r
49245            (type bool)\r
49246            (peephole (postfix " instanceof sc_Pair")))\r
49247 */\r
49248 function sc_isPair(p) {\r
49249     return (p instanceof sc_Pair);\r
49250 }\r
49251 \r
49252 function sc_isPairEqual(p1, p2, comp) {\r
49253     return (comp(p1.car, p2.car) && comp(p1.cdr, p2.cdr));\r
49254 }\r
49255 \r
49256 /*** META ((export #t)\r
49257            (peephole (hole 2 "new sc_Pair(" car ", " cdr ")")))\r
49258 */\r
49259 function sc_cons(car, cdr) {\r
49260     return new sc_Pair(car, cdr);\r
49261 }\r
49262 \r
49263 /*** META ((export cons*)) */\r
49264 function sc_consStar() {\r
49265     var res = arguments[arguments.length - 1];\r
49266     for (var i = arguments.length-2; i >= 0; i--)\r
49267         res = new sc_Pair(arguments[i], res);\r
49268     return res;\r
49269 }\r
49270 \r
49271 /*** META ((export #t)\r
49272            (peephole (postfix ".car")))\r
49273 */\r
49274 function sc_car(p) {\r
49275     return p.car;\r
49276 }\r
49277 \r
49278 /*** META ((export #t)\r
49279            (peephole (postfix ".cdr")))\r
49280 */\r
49281 function sc_cdr(p) {\r
49282     return p.cdr;\r
49283 }\r
49284 \r
49285 /*** META ((export #t)\r
49286            (peephole (hole 2 p ".car = " val)))\r
49287 */\r
49288 function sc_setCarBang(p, val) {\r
49289     p.car = val;\r
49290 }\r
49291 \r
49292 /*** META ((export #t)\r
49293            (peephole (hole 2 p ".cdr = " val)))\r
49294 */\r
49295 function sc_setCdrBang(p, val) {\r
49296     p.cdr = val;\r
49297 }\r
49298 \r
49299 /*** META ((export #t)\r
49300            (peephole (postfix ".car.car")))\r
49301 */\r
49302 function sc_caar(p) { return p.car.car; }\r
49303 /*** META ((export #t)\r
49304            (peephole (postfix ".cdr.car")))\r
49305 */\r
49306 function sc_cadr(p) { return p.cdr.car; }\r
49307 /*** META ((export #t)\r
49308            (peephole (postfix ".car.cdr")))\r
49309 */\r
49310 function sc_cdar(p) { return p.car.cdr; }\r
49311 /*** META ((export #t)\r
49312            (peephole (postfix ".cdr.cdr")))\r
49313 */\r
49314 function sc_cddr(p) { return p.cdr.cdr; }\r
49315 /*** META ((export #t)\r
49316            (peephole (postfix ".car.car.car")))\r
49317 */\r
49318 function sc_caaar(p) { return p.car.car.car; }\r
49319 /*** META ((export #t)\r
49320            (peephole (postfix ".car.cdr.car")))\r
49321 */\r
49322 function sc_cadar(p) { return p.car.cdr.car; }\r
49323 /*** META ((export #t)\r
49324            (peephole (postfix ".cdr.car.car")))\r
49325 */\r
49326 function sc_caadr(p) { return p.cdr.car.car; }\r
49327 /*** META ((export #t)\r
49328            (peephole (postfix ".cdr.cdr.car")))\r
49329 */\r
49330 function sc_caddr(p) { return p.cdr.cdr.car; }\r
49331 /*** META ((export #t)\r
49332            (peephole (postfix ".car.car.cdr")))\r
49333 */\r
49334 function sc_cdaar(p) { return p.car.car.cdr; }\r
49335 /*** META ((export #t)\r
49336            (peephole (postfix ".cdr.car.cdr")))\r
49337 */\r
49338 function sc_cdadr(p) { return p.cdr.car.cdr; }\r
49339 /*** META ((export #t)\r
49340            (peephole (postfix ".car.cdr.cdr")))\r
49341 */\r
49342 function sc_cddar(p) { return p.car.cdr.cdr; }\r
49343 /*** META ((export #t)\r
49344            (peephole (postfix ".cdr.cdr.cdr")))\r
49345 */\r
49346 function sc_cdddr(p) { return p.cdr.cdr.cdr; }\r
49347 /*** META ((export #t)\r
49348            (peephole (postfix ".car.car.car.car")))\r
49349 */\r
49350 function sc_caaaar(p) { return p.car.car.car.car; }\r
49351 /*** META ((export #t)\r
49352            (peephole (postfix ".car.cdr.car.car")))\r
49353 */\r
49354 function sc_caadar(p) { return p.car.cdr.car.car; }\r
49355 /*** META ((export #t)\r
49356            (peephole (postfix ".cdr.car.car.car")))\r
49357 */\r
49358 function sc_caaadr(p) { return p.cdr.car.car.car; }\r
49359 /*** META ((export #t)\r
49360            (peephole (postfix ".cdr.cdr.car.car")))\r
49361 */\r
49362 function sc_caaddr(p) { return p.cdr.cdr.car.car; }\r
49363 /*** META ((export #t)\r
49364            (peephole (postfix ".car.car.car.cdr")))\r
49365 */\r
49366 function sc_cdaaar(p) { return p.car.car.car.cdr; }\r
49367 /*** META ((export #t)\r
49368            (peephole (postfix ".car.cdr.car.cdr")))\r
49369 */\r
49370 function sc_cdadar(p) { return p.car.cdr.car.cdr; }\r
49371 /*** META ((export #t)\r
49372            (peephole (postfix ".cdr.car.car.cdr")))\r
49373 */\r
49374 function sc_cdaadr(p) { return p.cdr.car.car.cdr; }\r
49375 /*** META ((export #t)\r
49376            (peephole (postfix ".cdr.cdr.car.cdr")))\r
49377 */\r
49378 function sc_cdaddr(p) { return p.cdr.cdr.car.cdr; }\r
49379 /*** META ((export #t)\r
49380            (peephole (postfix ".car.car.cdr.car")))\r
49381 */\r
49382 function sc_cadaar(p) { return p.car.car.cdr.car; }\r
49383 /*** META ((export #t)\r
49384            (peephole (postfix ".car.cdr.cdr.car")))\r
49385 */\r
49386 function sc_caddar(p) { return p.car.cdr.cdr.car; }\r
49387 /*** META ((export #t)\r
49388            (peephole (postfix ".cdr.car.cdr.car")))\r
49389 */\r
49390 function sc_cadadr(p) { return p.cdr.car.cdr.car; }\r
49391 /*** META ((export #t)\r
49392            (peephole (postfix ".cdr.cdr.cdr.car")))\r
49393 */\r
49394 function sc_cadddr(p) { return p.cdr.cdr.cdr.car; }\r
49395 /*** META ((export #t)\r
49396            (peephole (postfix ".car.car.cdr.cdr")))\r
49397 */\r
49398 function sc_cddaar(p) { return p.car.car.cdr.cdr; }\r
49399 /*** META ((export #t)\r
49400            (peephole (postfix ".car.cdr.cdr.cdr")))\r
49401 */\r
49402 function sc_cdddar(p) { return p.car.cdr.cdr.cdr; }\r
49403 /*** META ((export #t)\r
49404            (peephole (postfix ".cdr.car.cdr.cdr")))\r
49405 */\r
49406 function sc_cddadr(p) { return p.cdr.car.cdr.cdr; }\r
49407 /*** META ((export #t)\r
49408            (peephole (postfix ".cdr.cdr.cdr.cdr")))\r
49409 */\r
49410 function sc_cddddr(p) { return p.cdr.cdr.cdr.cdr; }\r
49411 \r
49412 /*** META ((export #t)) */\r
49413 function sc_lastPair(l) {\r
49414     if (!sc_isPair(l)) sc_error("sc_lastPair: pair expected");\r
49415     var res = l;\r
49416     var cdr = l.cdr;\r
49417     while (sc_isPair(cdr)) {\r
49418         res = cdr;\r
49419         cdr = res.cdr;\r
49420     }\r
49421     return res;\r
49422 }\r
49423 \r
49424 /*** META ((export #t)\r
49425            (type bool)\r
49426            (peephole (postfix " === null")))\r
49427 */\r
49428 function sc_isNull(o) {\r
49429     return (o === null);\r
49430 }\r
49431 \r
49432 /*** META ((export #t)\r
49433            (type bool))\r
49434 */\r
49435 function sc_isList(o) {\r
49436     var rabbit;\r
49437     var turtle;\r
49438 \r
49439     var rabbit = o;\r
49440     var turtle = o;\r
49441     while (true) {\r
49442         if (rabbit === null ||\r
49443             (rabbit instanceof sc_Pair && rabbit.cdr === null))\r
49444             return true;  // end of list\r
49445         else if ((rabbit instanceof sc_Pair) &&\r
49446                  (rabbit.cdr instanceof sc_Pair)) {\r
49447             rabbit = rabbit.cdr.cdr;\r
49448             turtle = turtle.cdr;\r
49449             if (rabbit === turtle) return false; // cycle\r
49450         } else\r
49451             return false; // not pair\r
49452     }\r
49453 }\r
49454 \r
49455 /*** META ((export #t)) */\r
49456 function sc_list() {\r
49457     var res = null;\r
49458     var a = arguments;\r
49459     for (var i = a.length-1; i >= 0; i--)\r
49460         res = new sc_Pair(a[i], res);\r
49461     return res;\r
49462 }\r
49463 \r
49464 /*** META ((export #t)) */\r
49465 function sc_iota(num, init) {\r
49466    var res = null;\r
49467    if (!init) init = 0;\r
49468    for (var i = num - 1; i >= 0; i--)\r
49469       res = new sc_Pair(i + init, res);\r
49470    return res;\r
49471 }\r
49472 \r
49473 /*** META ((export #t)) */\r
49474 function sc_makeList(nbEls, fill) {\r
49475     var res = null;\r
49476     for (var i = 0; i < nbEls; i++)\r
49477         res = new sc_Pair(fill, res);\r
49478     return res;\r
49479 }\r
49480 \r
49481 /*** META ((export #t)) */\r
49482 function sc_length(l) {\r
49483     var res = 0;\r
49484     while (l !== null) {\r
49485         res++;\r
49486         l = l.cdr;\r
49487     }\r
49488     return res;\r
49489 }\r
49490 \r
49491 /*** META ((export #t)) */\r
49492 function sc_remq(o, l) {\r
49493     var dummy = { cdr : null };\r
49494     var tail = dummy;\r
49495     while (l !== null) {\r
49496         if (l.car !== o) {\r
49497             tail.cdr = sc_cons(l.car, null);\r
49498             tail = tail.cdr;\r
49499         }\r
49500         l = l.cdr;\r
49501     }\r
49502     return dummy.cdr;\r
49503 }\r
49504 \r
49505 /*** META ((export #t)) */\r
49506 function sc_remqBang(o, l) {\r
49507     var dummy = { cdr : null };\r
49508     var tail = dummy;\r
49509     var needsAssig = true;\r
49510     while (l !== null) {\r
49511         if (l.car === o) {\r
49512             needsAssig = true;\r
49513         } else {\r
49514             if (needsAssig) {\r
49515                 tail.cdr = l;\r
49516                 needsAssig = false;\r
49517             }\r
49518             tail = l;\r
49519         }\r
49520         l = l.cdr;\r
49521     }\r
49522     tail.cdr = null;\r
49523     return dummy.cdr;\r
49524 }\r
49525 \r
49526 /*** META ((export #t)) */\r
49527 function sc_delete(o, l) {\r
49528     var dummy = { cdr : null };\r
49529     var tail = dummy;\r
49530     while (l !== null) {\r
49531         if (!sc_isEqual(l.car, o)) {\r
49532             tail.cdr = sc_cons(l.car, null);\r
49533             tail = tail.cdr;\r
49534         }\r
49535         l = l.cdr;\r
49536     }\r
49537     return dummy.cdr;\r
49538 }\r
49539 \r
49540 /*** META ((export #t)) */\r
49541 function sc_deleteBang(o, l) {\r
49542     var dummy = { cdr : null };\r
49543     var tail = dummy;\r
49544     var needsAssig = true;\r
49545     while (l !== null) {\r
49546         if (sc_isEqual(l.car, o)) {\r
49547             needsAssig = true;\r
49548         } else {\r
49549             if (needsAssig) {\r
49550                 tail.cdr = l;\r
49551                 needsAssig = false;\r
49552             }\r
49553             tail = l;\r
49554         }\r
49555         l = l.cdr;\r
49556     }\r
49557     tail.cdr = null;\r
49558     return dummy.cdr;\r
49559 }\r
49560 \r
49561 function sc_reverseAppendBang(l1, l2) {\r
49562     var res = l2;\r
49563     while (l1 !== null) {\r
49564         var tmp = res;\r
49565         res = l1;\r
49566         l1 = l1.cdr;\r
49567         res.cdr = tmp;\r
49568     }\r
49569     return res;\r
49570 }\r
49571         \r
49572 function sc_dualAppend(l1, l2) {\r
49573     if (l1 === null) return l2;\r
49574     if (l2 === null) return l1;\r
49575     var rev = sc_reverse(l1);\r
49576     return sc_reverseAppendBang(rev, l2);\r
49577 }\r
49578 \r
49579 /*** META ((export #t)) */\r
49580 function sc_append() {\r
49581     if (arguments.length === 0)\r
49582         return null;\r
49583     var res = arguments[arguments.length - 1];\r
49584     for (var i = arguments.length - 2; i >= 0; i--)\r
49585         res = sc_dualAppend(arguments[i], res);\r
49586     return res;\r
49587 }\r
49588 \r
49589 function sc_dualAppendBang(l1, l2) {\r
49590     if (l1 === null) return l2;\r
49591     if (l2 === null) return l1;\r
49592     var tmp = l1;\r
49593     while (tmp.cdr !== null) tmp=tmp.cdr;\r
49594     tmp.cdr = l2;\r
49595     return l1;\r
49596 }\r
49597     \r
49598 /*** META ((export #t)) */\r
49599 function sc_appendBang() {\r
49600     var res = null;\r
49601     for (var i = 0; i < arguments.length; i++)\r
49602         res = sc_dualAppendBang(res, arguments[i]);\r
49603     return res;\r
49604 }\r
49605 \r
49606 /*** META ((export #t)) */\r
49607 function sc_reverse(l1) {\r
49608     var res = null;\r
49609     while (l1 !== null) {\r
49610         res = sc_cons(l1.car, res);\r
49611         l1 = l1.cdr;\r
49612     }\r
49613     return res;\r
49614 }\r
49615 \r
49616 /*** META ((export #t)) */\r
49617 function sc_reverseBang(l) {\r
49618     return sc_reverseAppendBang(l, null);\r
49619 }\r
49620 \r
49621 /*** META ((export #t)) */\r
49622 function sc_listTail(l, k) {\r
49623     var res = l;\r
49624     for (var i = 0; i < k; i++) {\r
49625         res = res.cdr;\r
49626     }\r
49627     return res;\r
49628 }\r
49629 \r
49630 /*** META ((export #t)) */\r
49631 function sc_listRef(l, k) {\r
49632     return sc_listTail(l, k).car;\r
49633 }\r
49634 \r
49635 /* // unoptimized generic versions\r
49636 function sc_memX(o, l, comp) {\r
49637     while (l != null) {\r
49638         if (comp(l.car, o))\r
49639             return l;\r
49640         l = l.cdr;\r
49641     }\r
49642     return false;\r
49643 }\r
49644 function sc_memq(o, l) { return sc_memX(o, l, sc_isEq); }\r
49645 function sc_memv(o, l) { return sc_memX(o, l, sc_isEqv); }\r
49646 function sc_member(o, l) { return sc_memX(o, l, sc_isEqual); }\r
49647 */\r
49648 \r
49649 /* optimized versions */\r
49650 /*** META ((export #t)) */\r
49651 function sc_memq(o, l) {\r
49652     while (l !== null) {\r
49653         if (l.car === o)\r
49654             return l;\r
49655         l = l.cdr;\r
49656     }\r
49657     return false;\r
49658 }\r
49659 /*** META ((export #t)) */\r
49660 function sc_memv(o, l) {\r
49661     while (l !== null) {\r
49662         if (l.car === o)\r
49663             return l;\r
49664         l = l.cdr;\r
49665     }\r
49666     return false;\r
49667 }\r
49668 /*** META ((export #t)) */\r
49669 function sc_member(o, l) {\r
49670     while (l !== null) {\r
49671         if (sc_isEqual(l.car,o))\r
49672             return l;\r
49673         l = l.cdr;\r
49674     }\r
49675     return false;\r
49676 }\r
49677 \r
49678 /* // generic unoptimized versions\r
49679 function sc_assX(o, al, comp) {\r
49680     while (al != null) {\r
49681         if (comp(al.car.car, o))\r
49682             return al.car;\r
49683         al = al.cdr;\r
49684     }\r
49685     return false;\r
49686 }\r
49687 function sc_assq(o, al) { return sc_assX(o, al, sc_isEq); }\r
49688 function sc_assv(o, al) { return sc_assX(o, al, sc_isEqv); }\r
49689 function sc_assoc(o, al) { return sc_assX(o, al, sc_isEqual); }\r
49690 */\r
49691 // optimized versions\r
49692 /*** META ((export #t)) */\r
49693 function sc_assq(o, al) {\r
49694     while (al !== null) {\r
49695         if (al.car.car === o)\r
49696             return al.car;\r
49697         al = al.cdr;\r
49698     }\r
49699     return false;\r
49700 }\r
49701 /*** META ((export #t)) */\r
49702 function sc_assv(o, al) {\r
49703     while (al !== null) {\r
49704         if (al.car.car === o)\r
49705             return al.car;\r
49706         al = al.cdr;\r
49707     }\r
49708     return false;\r
49709 }\r
49710 /*** META ((export #t)) */\r
49711 function sc_assoc(o, al) {\r
49712     while (al !== null) {\r
49713         if (sc_isEqual(al.car.car, o))\r
49714             return al.car;\r
49715         al = al.cdr;\r
49716     }\r
49717     return false;\r
49718 }\r
49719 \r
49720 /* can be used for mutable strings and characters */\r
49721 function sc_isCharStringEqual(cs1, cs2) { return cs1.val === cs2.val; }\r
49722 function sc_isCharStringLess(cs1, cs2) { return cs1.val < cs2.val; }\r
49723 function sc_isCharStringGreater(cs1, cs2) { return cs1.val > cs2.val; }\r
49724 function sc_isCharStringLessEqual(cs1, cs2) { return cs1.val <= cs2.val; }\r
49725 function sc_isCharStringGreaterEqual(cs1, cs2) { return cs1.val >= cs2.val; }\r
49726 function sc_isCharStringCIEqual(cs1, cs2)\r
49727     { return cs1.val.toLowerCase() === cs2.val.toLowerCase(); }\r
49728 function sc_isCharStringCILess(cs1, cs2)\r
49729     { return cs1.val.toLowerCase() < cs2.val.toLowerCase(); }\r
49730 function sc_isCharStringCIGreater(cs1, cs2)\r
49731     { return cs1.val.toLowerCase() > cs2.val.toLowerCase(); }\r
49732 function sc_isCharStringCILessEqual(cs1, cs2)\r
49733     { return cs1.val.toLowerCase() <= cs2.val.toLowerCase(); }\r
49734 function sc_isCharStringCIGreaterEqual(cs1, cs2)\r
49735     { return cs1.val.toLowerCase() >= cs2.val.toLowerCase(); }\r
49736 \r
49737 \r
49738 \r
49739 \r
49740 function sc_Char(c) {\r
49741     var cached = sc_Char.lazy[c];\r
49742     if (cached)\r
49743         return cached;\r
49744     this.val = c;\r
49745     sc_Char.lazy[c] = this;\r
49746     // add return, so FF does not complain.\r
49747     return undefined;\r
49748 }\r
49749 sc_Char.lazy = new Object();\r
49750 // thanks to Eric\r
49751 sc_Char.char2readable = {\r
49752     "\000": "#\\null",\r
49753     "\007": "#\\bell",\r
49754     "\010": "#\\backspace",\r
49755     "\011": "#\\tab",\r
49756     "\012": "#\\newline",\r
49757     "\014": "#\\page",\r
49758     "\015": "#\\return",\r
49759     "\033": "#\\escape",\r
49760     "\040": "#\\space",\r
49761     "\177": "#\\delete",\r
49762 \r
49763   /* poeticless names */\r
49764     "\001": "#\\soh",\r
49765     "\002": "#\\stx",\r
49766     "\003": "#\\etx",\r
49767     "\004": "#\\eot",\r
49768     "\005": "#\\enq",\r
49769     "\006": "#\\ack",\r
49770 \r
49771     "\013": "#\\vt",\r
49772     "\016": "#\\so",\r
49773     "\017": "#\\si",\r
49774 \r
49775     "\020": "#\\dle",\r
49776     "\021": "#\\dc1",\r
49777     "\022": "#\\dc2",\r
49778     "\023": "#\\dc3",\r
49779     "\024": "#\\dc4",\r
49780     "\025": "#\\nak",\r
49781     "\026": "#\\syn",\r
49782     "\027": "#\\etb",\r
49783 \r
49784     "\030": "#\\can",\r
49785     "\031": "#\\em",\r
49786     "\032": "#\\sub",\r
49787     "\033": "#\\esc",\r
49788     "\034": "#\\fs",\r
49789     "\035": "#\\gs",\r
49790     "\036": "#\\rs",\r
49791     "\037": "#\\us"};\r
49792 \r
49793 sc_Char.readable2char = {\r
49794     "null": "\000",\r
49795     "bell": "\007",\r
49796     "backspace": "\010",\r
49797     "tab": "\011",\r
49798     "newline": "\012",\r
49799     "page": "\014",\r
49800     "return": "\015",\r
49801     "escape": "\033",\r
49802     "space": "\040",\r
49803     "delete": "\000",\r
49804     "soh": "\001",\r
49805     "stx": "\002",\r
49806     "etx": "\003",\r
49807     "eot": "\004",\r
49808     "enq": "\005",\r
49809     "ack": "\006",\r
49810     "bel": "\007",\r
49811     "bs": "\010",\r
49812     "ht": "\011",\r
49813     "nl": "\012",\r
49814     "vt": "\013",\r
49815     "np": "\014",\r
49816     "cr": "\015",\r
49817     "so": "\016",\r
49818     "si": "\017",\r
49819     "dle": "\020",\r
49820     "dc1": "\021",\r
49821     "dc2": "\022",\r
49822     "dc3": "\023",\r
49823     "dc4": "\024",\r
49824     "nak": "\025",\r
49825     "syn": "\026",\r
49826     "etb": "\027",\r
49827     "can": "\030",\r
49828     "em": "\031",\r
49829     "sub": "\032",\r
49830     "esc": "\033",\r
49831     "fs": "\034",\r
49832     "gs": "\035",\r
49833     "rs": "\036",\r
49834     "us": "\037",\r
49835     "sp": "\040",\r
49836     "del": "\177"};\r
49837     \r
49838 sc_Char.prototype.toString = function() {\r
49839     return this.val;\r
49840 };\r
49841 // sc_toDisplayString == toString\r
49842 sc_Char.prototype.sc_toWriteString = function() {\r
49843     var entry = sc_Char.char2readable[this.val];\r
49844     if (entry)\r
49845         return entry;\r
49846     else\r
49847         return "#\\" + this.val;\r
49848 };\r
49849 \r
49850 /*** META ((export #t)\r
49851            (type bool)\r
49852            (peephole (postfix "instanceof sc_Char")))\r
49853 */\r
49854 function sc_isChar(c) {\r
49855     return (c instanceof sc_Char);\r
49856 }\r
49857 \r
49858 /*** META ((export char=?)\r
49859            (type bool)\r
49860            (peephole (hole 2 c1 ".val === " c2 ".val")))\r
49861 */\r
49862 var sc_isCharEqual = sc_isCharStringEqual;\r
49863 /*** META ((export char<?)\r
49864            (type bool)\r
49865            (peephole (hole 2 c1 ".val < " c2 ".val")))\r
49866 */\r
49867 var sc_isCharLess = sc_isCharStringLess;\r
49868 /*** META ((export char>?)\r
49869            (type bool)\r
49870            (peephole (hole 2 c1 ".val > " c2 ".val")))\r
49871 */\r
49872 var sc_isCharGreater = sc_isCharStringGreater;\r
49873 /*** META ((export char<=?)\r
49874            (type bool)\r
49875            (peephole (hole 2 c1 ".val <= " c2 ".val")))\r
49876 */\r
49877 var sc_isCharLessEqual = sc_isCharStringLessEqual;\r
49878 /*** META ((export char>=?)\r
49879            (type bool)\r
49880            (peephole (hole 2 c1 ".val >= " c2 ".val")))\r
49881 */\r
49882 var sc_isCharGreaterEqual = sc_isCharStringGreaterEqual;\r
49883 /*** META ((export char-ci=?)\r
49884            (type bool)\r
49885            (peephole (hole 2 c1 ".val.toLowerCase() === " c2 ".val.toLowerCase()")))\r
49886 */\r
49887 var sc_isCharCIEqual = sc_isCharStringCIEqual;\r
49888 /*** META ((export char-ci<?)\r
49889            (type bool)\r
49890            (peephole (hole 2 c1 ".val.toLowerCase() < " c2 ".val.toLowerCase()")))\r
49891 */\r
49892 var sc_isCharCILess = sc_isCharStringCILess;\r
49893 /*** META ((export char-ci>?)\r
49894            (type bool)\r
49895            (peephole (hole 2 c1 ".val.toLowerCase() > " c2 ".val.toLowerCase()")))\r
49896 */\r
49897 var sc_isCharCIGreater = sc_isCharStringCIGreater;\r
49898 /*** META ((export char-ci<=?)\r
49899            (type bool)\r
49900            (peephole (hole 2 c1 ".val.toLowerCase() <= " c2 ".val.toLowerCase()")))\r
49901 */\r
49902 var sc_isCharCILessEqual = sc_isCharStringCILessEqual;\r
49903 /*** META ((export char-ci>=?)\r
49904            (type bool)\r
49905            (peephole (hole 2 c1 ".val.toLowerCase() >= " c2 ".val.toLowerCase()")))\r
49906 */\r
49907 var sc_isCharCIGreaterEqual = sc_isCharStringCIGreaterEqual;\r
49908 \r
49909 var SC_NUMBER_CLASS = "0123456789";\r
49910 var SC_WHITESPACE_CLASS = ' \r\n\t\f';\r
49911 var SC_LOWER_CLASS = 'abcdefghijklmnopqrstuvwxyz';\r
49912 var SC_UPPER_CLASS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\r
49913 \r
49914 function sc_isCharOfClass(c, cl) { return (cl.indexOf(c) != -1); }\r
49915 /*** META ((export #t)\r
49916            (type bool))\r
49917 */\r
49918 function sc_isCharAlphabetic(c)\r
49919     { return sc_isCharOfClass(c.val, SC_LOWER_CLASS) ||\r
49920           sc_isCharOfClass(c.val, SC_UPPER_CLASS); }\r
49921 /*** META ((export #t)\r
49922            (type bool)\r
49923            (peephole (hole 1 "SC_NUMBER_CLASS.indexOf(" c ".val) != -1")))\r
49924 */\r
49925 function sc_isCharNumeric(c)\r
49926     { return sc_isCharOfClass(c.val, SC_NUMBER_CLASS); }\r
49927 /*** META ((export #t)\r
49928            (type bool))\r
49929 */\r
49930 function sc_isCharWhitespace(c) {\r
49931     var tmp = c.val;\r
49932     return tmp === " " || tmp === "\r" || tmp === "\n" || tmp === "\t" || tmp === "\f";\r
49933 }\r
49934 /*** META ((export #t)\r
49935            (type bool)\r
49936            (peephole (hole 1 "SC_UPPER_CLASS.indexOf(" c ".val) != -1")))\r
49937 */\r
49938 function sc_isCharUpperCase(c)\r
49939     { return sc_isCharOfClass(c.val, SC_UPPER_CLASS); }\r
49940 /*** META ((export #t)\r
49941            (type bool)\r
49942            (peephole (hole 1 "SC_LOWER_CLASS.indexOf(" c ".val) != -1")))\r
49943 */\r
49944 function sc_isCharLowerCase(c)\r
49945     { return sc_isCharOfClass(c.val, SC_LOWER_CLASS); }\r
49946 \r
49947 /*** META ((export #t)\r
49948            (peephole (postfix ".val.charCodeAt(0)")))\r
49949 */\r
49950 function sc_char2integer(c)\r
49951     { return c.val.charCodeAt(0); }\r
49952 /*** META ((export #t)\r
49953            (peephole (hole 1 "new sc_Char(String.fromCharCode(" n "))")))\r
49954 */\r
49955 function sc_integer2char(n)\r
49956     { return new sc_Char(String.fromCharCode(n)); }\r
49957 \r
49958 /*** META ((export #t)\r
49959            (peephole (hole 1 "new sc_Char(" c ".val.toUpperCase())")))\r
49960 */\r
49961 function sc_charUpcase(c)\r
49962     { return new sc_Char(c.val.toUpperCase()); }\r
49963 /*** META ((export #t)\r
49964            (peephole (hole 1 "new sc_Char(" c ".val.toLowerCase())")))\r
49965 */\r
49966 function sc_charDowncase(c)\r
49967     { return new sc_Char(c.val.toLowerCase()); }\r
49968 \r
49969 function sc_makeJSStringOfLength(k, c) {\r
49970     var fill;\r
49971     if (c === undefined)\r
49972         fill = " ";\r
49973     else\r
49974         fill = c;\r
49975     var res = "";\r
49976     var len = 1;\r
49977     // every round doubles the size of fill.\r
49978     while (k >= len) {\r
49979         if (k & len)\r
49980             res = res.concat(fill);\r
49981         fill = fill.concat(fill);\r
49982         len *= 2;\r
49983     }\r
49984     return res;\r
49985 }\r
49986 \r
49987 function sc_makejsString(k, c) {\r
49988     var fill;\r
49989     if (c)\r
49990         fill = c.val;\r
49991     else\r
49992         fill = " ";\r
49993     return sc_makeJSStringOfLength(k, fill);\r
49994 }\r
49995 \r
49996 function sc_jsstring2list(s) {\r
49997     var res = null;\r
49998     for (var i = s.length - 1; i >= 0; i--)\r
49999         res = sc_cons(new sc_Char(s.charAt(i)), res);\r
50000     return res;\r
50001 }\r
50002 \r
50003 function sc_list2jsstring(l) {\r
50004     var a = new Array();\r
50005     while(l !== null) {\r
50006         a.push(l.car.val);\r
50007         l = l.cdr;\r
50008     }\r
50009     return "".concat.apply("", a);\r
50010 }\r
50011 \r
50012 var sc_Vector = Array;\r
50013 \r
50014 sc_Vector.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {\r
50015     if (this.length === 0) return "#()";\r
50016 \r
50017     var res = "#(" + writeOrDisplay(this[0]);\r
50018     for (var i = 1; i < this.length; i++)\r
50019         res += " " + writeOrDisplay(this[i]);\r
50020     res += ")";\r
50021     return res;\r
50022 };\r
50023 sc_Vector.prototype.sc_toDisplayString = function() {\r
50024     return this.sc_toWriteOrDisplayString(sc_toDisplayString);\r
50025 };\r
50026 sc_Vector.prototype.sc_toWriteString = function() {\r
50027     return this.sc_toWriteOrDisplayString(sc_toWriteString);\r
50028 };\r
50029 \r
50030 /*** META ((export vector? array?)\r
50031            (type bool)\r
50032            (peephole (postfix " instanceof sc_Vector")))\r
50033 */\r
50034 function sc_isVector(v) {\r
50035     return (v instanceof sc_Vector);\r
50036 }\r
50037 \r
50038 // only applies to vectors\r
50039 function sc_isVectorEqual(v1, v2, comp) {\r
50040     if (v1.length !== v2.length) return false;\r
50041     for (var i = 0; i < v1.length; i++)\r
50042         if (!comp(v1[i], v2[i])) return false;\r
50043     return true;\r
50044 }\r
50045 \r
50046 /*** META ((export make-vector make-array)) */\r
50047 function sc_makeVector(size, fill) {\r
50048     var a = new sc_Vector(size);\r
50049     if (fill !== undefined)\r
50050         sc_vectorFillBang(a, fill);\r
50051     return a;\r
50052 }\r
50053 \r
50054 /*** META ((export vector array)\r
50055            (peephole (vector)))\r
50056 */\r
50057 function sc_vector() {\r
50058     var a = new sc_Vector();\r
50059     for (var i = 0; i < arguments.length; i++)\r
50060         a.push(arguments[i]);\r
50061     return a;\r
50062 }\r
50063 \r
50064 /*** META ((export vector-length array-length)\r
50065            (peephole (postfix ".length")))\r
50066 */\r
50067 function sc_vectorLength(v) {\r
50068     return v.length;\r
50069 }\r
50070 \r
50071 /*** META ((export vector-ref array-ref)\r
50072            (peephole (hole 2 v "[" pos "]")))\r
50073 */\r
50074 function sc_vectorRef(v, pos) {\r
50075     return v[pos];\r
50076 }\r
50077 \r
50078 /*** META ((export vector-set! array-set!)\r
50079            (peephole (hole 3 v "[" pos "] = " val)))\r
50080 */\r
50081 function sc_vectorSetBang(v, pos, val) {\r
50082     v[pos] = val;\r
50083 }\r
50084 \r
50085 /*** META ((export vector->list array->list)) */\r
50086 function sc_vector2list(a) {\r
50087     var res = null;\r
50088     for (var i = a.length-1; i >= 0; i--)\r
50089         res = sc_cons(a[i], res);\r
50090     return res;\r
50091 }\r
50092 \r
50093 /*** META ((export list->vector list->array)) */\r
50094 function sc_list2vector(l) {\r
50095     var a = new sc_Vector();\r
50096     while(l !== null) {\r
50097         a.push(l.car);\r
50098         l = l.cdr;\r
50099     }\r
50100     return a;\r
50101 }\r
50102 \r
50103 /*** META ((export vector-fill! array-fill!)) */\r
50104 function sc_vectorFillBang(a, fill) {\r
50105     for (var i = 0; i < a.length; i++)\r
50106         a[i] = fill;\r
50107 }\r
50108 \r
50109 \r
50110 /*** META ((export #t)) */\r
50111 function sc_copyVector(a, len) {\r
50112     if (len <= a.length)\r
50113         return a.slice(0, len);\r
50114     else {\r
50115         var tmp = a.concat();\r
50116         tmp.length = len;\r
50117         return tmp;\r
50118     }\r
50119 }\r
50120 \r
50121 /*** META ((export #t)\r
50122            (peephole (hole 3 a ".slice(" start "," end ")")))\r
50123 */\r
50124 function sc_vectorCopy(a, start, end) {\r
50125     return a.slice(start, end);\r
50126 }\r
50127 \r
50128 /*** META ((export #t)) */\r
50129 function sc_vectorCopyBang(target, tstart, source, sstart, send) {\r
50130     if (!sstart) sstart = 0;\r
50131     if (!send) send = source.length;\r
50132 \r
50133     // if target == source we don't want to overwrite not yet copied elements.\r
50134     if (tstart <= sstart) {\r
50135         for (var i = tstart, j = sstart; j < send; i++, j++) {\r
50136             target[i] = source[j];\r
50137         }\r
50138     } else {\r
50139         var diff = send - sstart;\r
50140         for (var i = tstart + diff - 1, j = send - 1;\r
50141              j >= sstart;\r
50142              i--, j--) {\r
50143             target[i] = source[j];\r
50144         }\r
50145     }\r
50146     return target;\r
50147 }\r
50148 \r
50149 /*** META ((export #t)\r
50150            (type bool)\r
50151            (peephole (hole 1 "typeof " o " === 'function'")))\r
50152 */\r
50153 function sc_isProcedure(o) {\r
50154     return (typeof o === "function");\r
50155 }\r
50156 \r
50157 /*** META ((export #t)) */\r
50158 function sc_apply(proc) {\r
50159     var args = new Array();\r
50160     // first part of arguments are not in list-form.\r
50161     for (var i = 1; i < arguments.length - 1; i++)\r
50162         args.push(arguments[i]);\r
50163     var l = arguments[arguments.length - 1];\r
50164     while (l !== null) {\r
50165         args.push(l.car);\r
50166         l = l.cdr;\r
50167     }\r
50168     return proc.apply(null, args);\r
50169 }\r
50170 \r
50171 /*** META ((export #t)) */\r
50172 function sc_map(proc, l1) {\r
50173     if (l1 === undefined)\r
50174         return null;\r
50175     // else\r
50176     var nbApplyArgs = arguments.length - 1;\r
50177     var applyArgs = new Array(nbApplyArgs);\r
50178     var revres = null;\r
50179     while (l1 !== null) {\r
50180         for (var i = 0; i < nbApplyArgs; i++) {\r
50181             applyArgs[i] = arguments[i + 1].car;\r
50182             arguments[i + 1] = arguments[i + 1].cdr;\r
50183         }\r
50184         revres = sc_cons(proc.apply(null, applyArgs), revres);\r
50185     }\r
50186     return sc_reverseAppendBang(revres, null);\r
50187 }\r
50188 \r
50189 /*** META ((export #t)) */\r
50190 function sc_mapBang(proc, l1) {\r
50191     if (l1 === undefined)\r
50192         return null;\r
50193     // else\r
50194     var l1_orig = l1;\r
50195     var nbApplyArgs = arguments.length - 1;\r
50196     var applyArgs = new Array(nbApplyArgs);\r
50197     while (l1 !== null) {\r
50198         var tmp = l1;\r
50199         for (var i = 0; i < nbApplyArgs; i++) {\r
50200             applyArgs[i] = arguments[i + 1].car;\r
50201             arguments[i + 1] = arguments[i + 1].cdr;\r
50202         }\r
50203         tmp.car = proc.apply(null, applyArgs);\r
50204     }\r
50205     return l1_orig;\r
50206 }\r
50207      \r
50208 /*** META ((export #t)) */\r
50209 function sc_forEach(proc, l1) {\r
50210     if (l1 === undefined)\r
50211         return undefined;\r
50212     // else\r
50213     var nbApplyArgs = arguments.length - 1;\r
50214     var applyArgs = new Array(nbApplyArgs);\r
50215     while (l1 !== null) {\r
50216         for (var i = 0; i < nbApplyArgs; i++) {\r
50217             applyArgs[i] = arguments[i + 1].car;\r
50218             arguments[i + 1] = arguments[i + 1].cdr;\r
50219         }\r
50220         proc.apply(null, applyArgs);\r
50221     }\r
50222     // add return so FF does not complain.\r
50223     return undefined;\r
50224 }\r
50225 \r
50226 /*** META ((export #t)) */\r
50227 function sc_filter(proc, l1) {\r
50228     var dummy = { cdr : null };\r
50229     var tail = dummy;\r
50230     while (l1 !== null) {\r
50231         if (proc(l1.car) !== false) {\r
50232             tail.cdr = sc_cons(l1.car, null);\r
50233             tail = tail.cdr;\r
50234         }\r
50235         l1 = l1.cdr;\r
50236     }\r
50237     return dummy.cdr;\r
50238 }\r
50239 \r
50240 /*** META ((export #t)) */\r
50241 function sc_filterBang(proc, l1) {\r
50242     var head = sc_cons("dummy", l1);\r
50243     var it = head;\r
50244     var next = l1;\r
50245     while (next !== null) {\r
50246         if (proc(next.car) !== false) {\r
50247             it.cdr = next\r
50248             it = next;\r
50249         }\r
50250         next = next.cdr;\r
50251     }\r
50252     it.cdr = null;\r
50253     return head.cdr;\r
50254 }\r
50255 \r
50256 function sc_filterMap1(proc, l1) {\r
50257     var revres = null;\r
50258     while (l1 !== null) {\r
50259         var tmp = proc(l1.car)\r
50260         if (tmp !== false) revres = sc_cons(tmp, revres);\r
50261         l1 = l1.cdr;\r
50262     }\r
50263     return sc_reverseAppendBang(revres, null);\r
50264 }\r
50265 function sc_filterMap2(proc, l1, l2) {\r
50266     var revres = null;\r
50267     while (l1 !== null) {\r
50268         var tmp = proc(l1.car, l2.car);\r
50269         if(tmp !== false) revres = sc_cons(tmp, revres);\r
50270         l1 = l1.cdr;\r
50271         l2 = l2.cdr\r
50272     }\r
50273     return sc_reverseAppendBang(revres, null);\r
50274 }\r
50275 \r
50276 /*** META ((export #t)) */\r
50277 function sc_filterMap(proc, l1, l2, l3) {\r
50278     if (l2 === undefined)\r
50279         return sc_filterMap1(proc, l1);\r
50280     else if (l3 === undefined)\r
50281         return sc_filterMap2(proc, l1, l2);\r
50282     // else\r
50283     var nbApplyArgs = arguments.length - 1;\r
50284     var applyArgs = new Array(nbApplyArgs);\r
50285     var revres = null;\r
50286     while (l1 !== null) {\r
50287         for (var i = 0; i < nbApplyArgs; i++) {\r
50288             applyArgs[i] = arguments[i + 1].car;\r
50289             arguments[i + 1] = arguments[i + 1].cdr;\r
50290         }\r
50291         var tmp = proc.apply(null, applyArgs);\r
50292         if(tmp !== false) revres = sc_cons(tmp, revres);\r
50293     }\r
50294     return sc_reverseAppendBang(revres, null);\r
50295 }\r
50296 \r
50297 /*** META ((export #t)) */\r
50298 function sc_any(proc, l) {\r
50299     var revres = null;\r
50300     while (l !== null) {\r
50301         var tmp = proc(l.car);\r
50302         if(tmp !== false) return tmp;\r
50303         l = l.cdr;\r
50304     }\r
50305     return false;\r
50306 }\r
50307 \r
50308 /*** META ((export any?)\r
50309            (peephole (hole 2 "sc_any(" proc "," l ") !== false")))\r
50310 */\r
50311 function sc_anyPred(proc, l) {\r
50312     return sc_any(proc, l)!== false;\r
50313 }\r
50314 \r
50315 /*** META ((export #t)) */\r
50316 function sc_every(proc, l) {\r
50317     var revres = null;\r
50318     var tmp = true;\r
50319     while (l !== null) {\r
50320         tmp = proc(l.car);\r
50321         if (tmp === false) return false;\r
50322         l = l.cdr;\r
50323     }\r
50324     return tmp;\r
50325 }\r
50326 \r
50327 /*** META ((export every?)\r
50328            (peephole (hole 2 "sc_every(" proc "," l ") !== false")))\r
50329 */\r
50330 function sc_everyPred(proc, l) {\r
50331     var tmp = sc_every(proc, l);\r
50332     if (tmp !== false) return true;\r
50333     return false;\r
50334 }\r
50335 \r
50336 /*** META ((export #t)\r
50337            (peephole (postfix "()")))\r
50338 */\r
50339 function sc_force(o) {\r
50340     return o();\r
50341 }\r
50342 \r
50343 /*** META ((export #t)) */\r
50344 function sc_makePromise(proc) {\r
50345     var isResultReady = false;\r
50346     var result = undefined;\r
50347     return function() {\r
50348         if (!isResultReady) {\r
50349             var tmp = proc();\r
50350             if (!isResultReady) {\r
50351                 isResultReady = true;\r
50352                 result = tmp;\r
50353             }\r
50354         }\r
50355         return result;\r
50356     };\r
50357 }\r
50358 \r
50359 function sc_Values(values) {\r
50360     this.values = values;\r
50361 }\r
50362 \r
50363 /*** META ((export #t)\r
50364            (peephole (values)))\r
50365 */\r
50366 function sc_values() {\r
50367     if (arguments.length === 1)\r
50368         return arguments[0];\r
50369     else\r
50370         return new sc_Values(arguments);\r
50371 }\r
50372 \r
50373 /*** META ((export #t)) */\r
50374 function sc_callWithValues(producer, consumer) {\r
50375     var produced = producer();\r
50376     if (produced instanceof sc_Values)\r
50377         return consumer.apply(null, produced.values);\r
50378     else\r
50379         return consumer(produced);\r
50380 }\r
50381 \r
50382 /*** META ((export #t)) */\r
50383 function sc_dynamicWind(before, thunk, after) {\r
50384     before();\r
50385     try {\r
50386         var res = thunk();\r
50387         return res;\r
50388     } finally {\r
50389         after();\r
50390     }\r
50391 }\r
50392 \r
50393 \r
50394 // TODO: eval/scheme-report-environment/null-environment/interaction-environment\r
50395 \r
50396 // LIMITATION: 'load' doesn't exist without files.\r
50397 // LIMITATION: transcript-on/transcript-off doesn't exist without files.\r
50398 \r
50399 \r
50400 function sc_Struct(name) {\r
50401     this.name = name;\r
50402 }\r
50403 sc_Struct.prototype.sc_toDisplayString = function() {\r
50404     return "#<struct" + sc_hash(this) + ">";\r
50405 };\r
50406 sc_Struct.prototype.sc_toWriteString = sc_Struct.prototype.sc_toDisplayString;\r
50407 \r
50408 /*** META ((export #t)\r
50409            (peephole (hole 1 "new sc_Struct(" name ")")))\r
50410 */\r
50411 function sc_makeStruct(name) {\r
50412     return new sc_Struct(name);\r
50413 }\r
50414 \r
50415 /*** META ((export #t)\r
50416            (type bool)\r
50417            (peephole (postfix " instanceof sc_Struct")))\r
50418 */\r
50419 function sc_isStruct(o) {\r
50420     return (o instanceof sc_Struct);\r
50421 }\r
50422 \r
50423 /*** META ((export #t)\r
50424            (type bool)\r
50425            (peephole (hole 2 "(" 1 " instanceof sc_Struct) && ( " 1 ".name === " 0 ")")))\r
50426 */\r
50427 function sc_isStructNamed(name, s) {\r
50428     return ((s instanceof sc_Struct) && (s.name === name));\r
50429 }\r
50430 \r
50431 /*** META ((export struct-field)\r
50432            (peephole (hole 3 0 "[" 2 "]")))\r
50433 */\r
50434 function sc_getStructField(s, name, field) {\r
50435     return s[field];\r
50436 }\r
50437 \r
50438 /*** META ((export struct-field-set!)\r
50439            (peephole (hole 4 0 "[" 2 "] = " 3)))\r
50440 */\r
50441 function sc_setStructFieldBang(s, name, field, val) {\r
50442     s[field] = val;\r
50443 }\r
50444 \r
50445 /*** META ((export #t)\r
50446            (peephole (prefix "~")))\r
50447 */\r
50448 function sc_bitNot(x) {\r
50449     return ~x;\r
50450 }\r
50451 \r
50452 /*** META ((export #t)\r
50453            (peephole (infix 2 2 "&")))\r
50454 */\r
50455 function sc_bitAnd(x, y) {\r
50456     return x & y;\r
50457 }\r
50458 \r
50459 /*** META ((export #t)\r
50460            (peephole (infix 2 2 "|")))\r
50461 */\r
50462 function sc_bitOr(x, y) {\r
50463     return x | y;\r
50464 }\r
50465 \r
50466 /*** META ((export #t)\r
50467            (peephole (infix 2 2 "^")))\r
50468 */\r
50469 function sc_bitXor(x, y) {\r
50470     return x ^ y;\r
50471 }\r
50472 \r
50473 /*** META ((export #t)\r
50474            (peephole (infix 2 2 "<<")))\r
50475 */\r
50476 function sc_bitLsh(x, y) {\r
50477     return x << y;\r
50478 }\r
50479 \r
50480 /*** META ((export #t)\r
50481            (peephole (infix 2 2 ">>")))\r
50482 */\r
50483 function sc_bitRsh(x, y) {\r
50484     return x >> y;\r
50485 }\r
50486 \r
50487 /*** META ((export #t)\r
50488            (peephole (infix 2 2 ">>>")))\r
50489 */\r
50490 function sc_bitUrsh(x, y) {\r
50491     return x >>> y;\r
50492 }\r
50493 \r
50494 /*** META ((export js-field js-property)\r
50495            (peephole (hole 2 o "[" field "]")))\r
50496 */\r
50497 function sc_jsField(o, field) {\r
50498     return o[field];\r
50499 }\r
50500 \r
50501 /*** META ((export js-field-set! js-property-set!)\r
50502            (peephole (hole 3 o "[" field "] = " val)))\r
50503 */\r
50504 function sc_setJsFieldBang(o, field, val) {\r
50505     return o[field] = val;\r
50506 }\r
50507 \r
50508 /*** META ((export js-field-delete! js-property-delete!)\r
50509            (peephole (hole 2 "delete" o "[" field "]")))\r
50510 */\r
50511 function sc_deleteJsFieldBang(o, field) {\r
50512     delete o[field];\r
50513 }\r
50514 \r
50515 /*** META ((export #t)\r
50516            (peephole (jsCall)))\r
50517 */\r
50518 function sc_jsCall(o, fun) {\r
50519     var args = new Array();\r
50520     for (var i = 2; i < arguments.length; i++)\r
50521         args[i-2] = arguments[i];\r
50522     return fun.apply(o, args);\r
50523 }\r
50524 \r
50525 /*** META ((export #t)\r
50526            (peephole (jsMethodCall)))\r
50527 */\r
50528 function sc_jsMethodCall(o, field) {\r
50529     var args = new Array();\r
50530     for (var i = 2; i < arguments.length; i++)\r
50531         args[i-2] = arguments[i];\r
50532     return o[field].apply(o, args);\r
50533 }\r
50534 \r
50535 /*** META ((export new js-new)\r
50536            (peephole (jsNew)))\r
50537 */\r
50538 function sc_jsNew(c) {\r
50539     var evalStr = "new c(";\r
50540     evalStr +=arguments.length > 1? "arguments[1]": "";\r
50541     for (var i = 2; i < arguments.length; i++)\r
50542         evalStr += ", arguments[" + i + "]";\r
50543     evalStr +=")";\r
50544     return eval(evalStr);\r
50545 }    \r
50546 \r
50547 // ======================== RegExp ====================\r
50548 /*** META ((export #t)) */\r
50549 function sc_pregexp(re) {\r
50550     return new RegExp(sc_string2jsstring(re));\r
50551 }\r
50552 \r
50553 /*** META ((export #t)) */\r
50554 function sc_pregexpMatch(re, s) {\r
50555     var reg = (re instanceof RegExp) ? re : sc_pregexp(re);\r
50556     var tmp = reg.exec(sc_string2jsstring(s));\r
50557     \r
50558     if (tmp == null) return false;\r
50559     \r
50560     var res = null;\r
50561     for (var i = tmp.length-1; i >= 0; i--) {\r
50562         if (tmp[i] !== null) {\r
50563             res = sc_cons(sc_jsstring2string(tmp[i]), res);\r
50564         } else {\r
50565             res = sc_cons(false, res);\r
50566         }\r
50567     }\r
50568     return res;\r
50569 }\r
50570    \r
50571 /*** META ((export #t)) */\r
50572 function sc_pregexpReplace(re, s1, s2) {\r
50573    var reg;\r
50574    var jss1 = sc_string2jsstring(s1);\r
50575    var jss2 = sc_string2jsstring(s2);\r
50576 \r
50577    if (re instanceof RegExp) {\r
50578        if (re.global)\r
50579            reg = re;\r
50580        else\r
50581            reg = new RegExp(re.source);\r
50582    } else {\r
50583        reg = new RegExp(sc_string2jsstring(re));\r
50584    }\r
50585 \r
50586    return jss1.replace(reg, jss2);\r
50587 }\r
50588    \r
50589 /*** META ((export pregexp-replace*)) */\r
50590 function sc_pregexpReplaceAll(re, s1, s2) {\r
50591    var reg;\r
50592    var jss1 = sc_string2jsstring(s1);\r
50593    var jss2 = sc_string2jsstring(s2);\r
50594 \r
50595    if (re instanceof RegExp) {\r
50596       if (re.global)\r
50597           reg = re;\r
50598       else\r
50599           reg = new RegExp(re.source, "g");\r
50600    } else {\r
50601        reg = new RegExp(sc_string2jsstring(re), "g");\r
50602    }\r
50603 \r
50604    return jss1.replace(reg, jss2);\r
50605 }\r
50606 \r
50607 /*** META ((export #t)) */\r
50608 function sc_pregexpSplit(re, s) {\r
50609    var reg = ((re instanceof RegExp) ?\r
50610               re :\r
50611               new RegExp(sc_string2jsstring(re)));\r
50612    var jss = sc_string2jsstring(s);\r
50613    var tmp = jss.split(reg);\r
50614 \r
50615    if (tmp == null) return false;\r
50616 \r
50617    return sc_vector2list(tmp);\r
50618 }\r
50619    \r
50620 \r
50621 /* =========================================================================== */\r
50622 /* Other library stuff */\r
50623 /* =========================================================================== */\r
50624 \r
50625 /*** META ((export #t)\r
50626            (peephole (hole 1 "Math.floor(Math.random()*" 'n ")")))\r
50627 */\r
50628 function sc_random(n) {\r
50629     return Math.floor(Math.random()*n);\r
50630 }\r
50631 \r
50632 /*** META ((export current-date)\r
50633            (peephole (hole 0 "new Date()")))\r
50634 */\r
50635 function sc_currentDate() {\r
50636    return new Date();\r
50637 }\r
50638 \r
50639 function sc_Hashtable() {\r
50640 }\r
50641 sc_Hashtable.prototype.toString = function() {\r
50642     return "#{%hashtable}";\r
50643 };\r
50644 // sc_toWriteString == sc_toDisplayString == toString\r
50645 \r
50646 function sc_HashtableElement(key, val) {\r
50647     this.key = key;\r
50648     this.val = val;\r
50649 }\r
50650 \r
50651 /*** META ((export #t)\r
50652            (peephole (hole 0 "new sc_Hashtable()")))\r
50653 */\r
50654 function sc_makeHashtable() {\r
50655     return new sc_Hashtable();\r
50656 }\r
50657 \r
50658 /*** META ((export #t)) */\r
50659 function sc_hashtablePutBang(ht, key, val) {\r
50660     var hash = sc_hash(key);\r
50661     ht[hash] = new sc_HashtableElement(key, val);\r
50662 }\r
50663 \r
50664 /*** META ((export #t)) */\r
50665 function sc_hashtableGet(ht, key) {\r
50666     var hash = sc_hash(key);\r
50667     if (hash in ht)\r
50668         return ht[hash].val;\r
50669     else\r
50670         return false;\r
50671 }\r
50672 \r
50673 /*** META ((export #t)) */\r
50674 function sc_hashtableForEach(ht, f) {\r
50675     for (var v in ht) {\r
50676         if (ht[v] instanceof sc_HashtableElement)\r
50677             f(ht[v].key, ht[v].val);\r
50678     }\r
50679 }\r
50680 \r
50681 /*** META ((export hashtable-contains?)\r
50682            (peephole (hole 2 "sc_hash(" 1 ") in " 0)))\r
50683 */\r
50684 function sc_hashtableContains(ht, key) {\r
50685     var hash = sc_hash(key);\r
50686     if (hash in ht)\r
50687         return true;\r
50688     else\r
50689         return false;\r
50690 }\r
50691 \r
50692 var SC_HASH_COUNTER = 0;\r
50693 \r
50694 function sc_hash(o) {\r
50695     if (o === null)\r
50696         return "null";\r
50697     else if (o === undefined)\r
50698         return "undefined";\r
50699     else if (o === true)\r
50700         return "true";\r
50701     else if (o === false)\r
50702         return "false";\r
50703     else if (typeof o === "number")\r
50704         return "num-" + o;\r
50705     else if (typeof o === "string")\r
50706         return "jsstr-" + o;\r
50707     else if (o.sc_getHash)\r
50708         return o.sc_getHash();\r
50709     else\r
50710         return sc_counterHash.call(o);\r
50711 }\r
50712 function sc_counterHash() {\r
50713     if (!this.sc_hash) {\r
50714         this.sc_hash = "hash-" + SC_HASH_COUNTER;\r
50715         SC_HASH_COUNTER++;\r
50716     }\r
50717     return this.sc_hash;\r
50718 }\r
50719 \r
50720 function sc_Trampoline(args, maxTailCalls) {\r
50721     this['__trampoline return__'] = true;\r
50722     this.args = args;\r
50723     this.MAX_TAIL_CALLs = maxTailCalls;\r
50724 }\r
50725 // TODO: call/cc stuff\r
50726 sc_Trampoline.prototype.restart = function() {\r
50727     var o = this;\r
50728     while (true) {\r
50729         // set both globals.\r
50730         SC_TAIL_OBJECT.calls = o.MAX_TAIL_CALLs-1;\r
50731         var fun = o.args.callee;\r
50732         var res = fun.apply(SC_TAIL_OBJECT, o.args);\r
50733         if (res instanceof sc_Trampoline)\r
50734             o = res;\r
50735         else\r
50736             return res;\r
50737     }\r
50738 }\r
50739 \r
50740 /*** META ((export bind-exit-lambda)) */\r
50741 function sc_bindExitLambda(proc) {\r
50742     var escape_obj = new sc_BindExitException();\r
50743     var escape = function(res) {\r
50744         escape_obj.res = res;\r
50745         throw escape_obj;\r
50746     };\r
50747     try {\r
50748         return proc(escape);\r
50749     } catch(e) {\r
50750         if (e === escape_obj) {\r
50751             return e.res;\r
50752         }\r
50753         throw e;\r
50754     }\r
50755 }\r
50756 function sc_BindExitException() {\r
50757     this._internalException = true;\r
50758 }\r
50759 \r
50760 var SC_SCM2JS_GLOBALS = new Object();\r
50761 \r
50762 // default tail-call depth.\r
50763 // normally the program should set it again. but just in case...\r
50764 var SC_TAIL_OBJECT = new Object();\r
50765 SC_SCM2JS_GLOBALS.TAIL_OBJECT = SC_TAIL_OBJECT;\r
50766 // ======================== I/O =======================\r
50767 \r
50768 /*------------------------------------------------------------------*/\r
50769 \r
50770 function sc_EOF() {\r
50771 }\r
50772 var SC_EOF_OBJECT = new sc_EOF();\r
50773 \r
50774 function sc_Port() {\r
50775 }\r
50776 \r
50777 /* --------------- Input ports -------------------------------------*/\r
50778 \r
50779 function sc_InputPort() {\r
50780 }\r
50781 sc_InputPort.prototype = new sc_Port();\r
50782 \r
50783 sc_InputPort.prototype.peekChar = function() {\r
50784     if (!("peeked" in this))\r
50785         this.peeked = this.getNextChar();\r
50786     return this.peeked;\r
50787 }\r
50788 sc_InputPort.prototype.readChar = function() {\r
50789     var tmp = this.peekChar();\r
50790     delete this.peeked;\r
50791     return tmp;\r
50792 }\r
50793 sc_InputPort.prototype.isCharReady = function() {\r
50794     return true;\r
50795 }\r
50796 sc_InputPort.prototype.close = function() {\r
50797     // do nothing\r
50798 }\r
50799 \r
50800 /* .............. String port ..........................*/\r
50801 function sc_ErrorInputPort() {\r
50802 };\r
50803 sc_ErrorInputPort.prototype = new sc_InputPort();\r
50804 sc_ErrorInputPort.prototype.getNextChar = function() {\r
50805     throw "can't read from error-port.";\r
50806 };\r
50807 sc_ErrorInputPort.prototype.isCharReady = function() {\r
50808     return false;\r
50809 };\r
50810     \r
50811 \r
50812 /* .............. String port ..........................*/\r
50813 \r
50814 function sc_StringInputPort(jsStr) {\r
50815     // we are going to do some charAts on the str.\r
50816     // instead of recreating all the time a String-object, we\r
50817     // create one in the beginning. (not sure, if this is really an optim)\r
50818     this.str = new String(jsStr);\r
50819     this.pos = 0;\r
50820 }\r
50821 sc_StringInputPort.prototype = new sc_InputPort();\r
50822 sc_StringInputPort.prototype.getNextChar = function() {\r
50823     if (this.pos >= this.str.length)\r
50824         return SC_EOF_OBJECT;\r
50825     return this.str.charAt(this.pos++);\r
50826 };\r
50827 \r
50828 /* ------------- Read and other lib-funs  -------------------------------*/\r
50829 function sc_Token(type, val, pos) {\r
50830     this.type = type;\r
50831     this.val = val;\r
50832     this.pos = pos;\r
50833 }\r
50834 sc_Token.EOF = 0/*EOF*/;\r
50835 sc_Token.OPEN_PAR = 1/*OPEN_PAR*/;\r
50836 sc_Token.CLOSE_PAR = 2/*CLOSE_PAR*/;\r
50837 sc_Token.OPEN_BRACE = 3/*OPEN_BRACE*/;\r
50838 sc_Token.CLOSE_BRACE = 4/*CLOSE_BRACE*/;\r
50839 sc_Token.OPEN_BRACKET = 5/*OPEN_BRACKET*/;\r
50840 sc_Token.CLOSE_BRACKET = 6/*CLOSE_BRACKET*/;\r
50841 sc_Token.WHITESPACE = 7/*WHITESPACE*/;\r
50842 sc_Token.QUOTE = 8/*QUOTE*/;\r
50843 sc_Token.ID = 9/*ID*/;\r
50844 sc_Token.DOT = 10/*DOT*/;\r
50845 sc_Token.STRING = 11/*STRING*/;\r
50846 sc_Token.NUMBER = 12/*NUMBER*/;\r
50847 sc_Token.ERROR = 13/*ERROR*/;\r
50848 sc_Token.VECTOR_BEGIN = 14/*VECTOR_BEGIN*/;\r
50849 sc_Token.TRUE = 15/*TRUE*/;\r
50850 sc_Token.FALSE = 16/*FALSE*/;\r
50851 sc_Token.UNSPECIFIED = 17/*UNSPECIFIED*/;\r
50852 sc_Token.REFERENCE = 18/*REFERENCE*/;\r
50853 sc_Token.STORE = 19/*STORE*/;\r
50854 sc_Token.CHAR = 20/*CHAR*/;\r
50855 \r
50856 var SC_ID_CLASS = SC_LOWER_CLASS + SC_UPPER_CLASS + "!$%*+-./:<=>?@^_~";\r
50857 function sc_Tokenizer(port) {\r
50858     this.port = port;\r
50859 }\r
50860 sc_Tokenizer.prototype.peekToken = function() {\r
50861     if (this.peeked)\r
50862         return this.peeked;\r
50863     var newToken = this.nextToken();\r
50864     this.peeked = newToken;\r
50865     return newToken;\r
50866 };\r
50867 sc_Tokenizer.prototype.readToken = function() {\r
50868     var tmp = this.peekToken();\r
50869     delete this.peeked;\r
50870     return tmp;\r
50871 };\r
50872 sc_Tokenizer.prototype.nextToken = function() {\r
50873     var port = this.port;\r
50874     \r
50875     function isNumberChar(c) {\r
50876         return (c >= "0" && c <= "9");\r
50877     };\r
50878     function isIdOrNumberChar(c) {\r
50879         return SC_ID_CLASS.indexOf(c) != -1 || // ID-char\r
50880             (c >= "0" && c <= "9");\r
50881     }\r
50882     function isWhitespace(c) {\r
50883         return c === " " || c === "\r" || c === "\n" || c === "\t" || c === "\f";\r
50884     };\r
50885     function isWhitespaceOrEOF(c) {\r
50886         return isWhitespace(c) || c === SC_EOF_OBJECT;\r
50887     };\r
50888 \r
50889     function readString() {\r
50890         res = "";\r
50891         while (true) {\r
50892             var c = port.readChar();\r
50893             switch (c) {\r
50894             case '"':\r
50895                 return new sc_Token(11/*STRING*/, res);\r
50896             case "\\":\r
50897                 var tmp = port.readChar();\r
50898                 switch (tmp) {\r
50899                 case '0': res += "\0"; break;\r
50900                 case 'a': res += "\a"; break;\r
50901                 case 'b': res += "\b"; break;\r
50902                 case 'f': res += "\f"; break;\r
50903                 case 'n': res += "\n"; break;\r
50904                 case 'r': res += "\r"; break;\r
50905                 case 't': res += "\t"; break;\r
50906                 case 'v': res += "\v"; break;\r
50907                 case '"': res += '"'; break;\r
50908                 case '\\': res += '\\'; break;\r
50909                 case 'x':\r
50910                     /* hexa-number */\r
50911                     var nb = 0;\r
50912                     while (true) {\r
50913                         var hexC = port.peekChar();\r
50914                         if (hexC >= '0' && hexC <= '9') {\r
50915                             port.readChar();\r
50916                             nb = nb * 16 + hexC.charCodeAt(0) - '0'.charCodeAt(0);\r
50917                         } else if (hexC >= 'a' && hexC <= 'f') {\r
50918                             port.readChar();\r
50919                             nb = nb * 16 + hexC.charCodeAt(0) - 'a'.charCodeAt(0);\r
50920                         } else if (hexC >= 'A' && hexC <= 'F') {\r
50921                             port.readChar();\r
50922                             nb = nb * 16 + hexC.charCodeAt(0) - 'A'.charCodeAt(0);\r
50923                         } else {\r
50924                             // next char isn't part of hex.\r
50925                             res += String.fromCharCode(nb);\r
50926                             break;\r
50927                         }\r
50928                     }\r
50929                     break;\r
50930                 default:\r
50931                     if (tmp === SC_EOF_OBJECT) {\r
50932                         return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);\r
50933                     }\r
50934                     res += tmp;\r
50935                 }\r
50936                 break;\r
50937             default:\r
50938                 if (c === SC_EOF_OBJECT) {\r
50939                     return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);\r
50940                 }\r
50941                 res += c;\r
50942             }\r
50943         }\r
50944     };\r
50945     function readIdOrNumber(firstChar) {\r
50946         var res = firstChar;\r
50947         while (isIdOrNumberChar(port.peekChar()))\r
50948             res += port.readChar();\r
50949         if (isNaN(res))\r
50950             return new sc_Token(9/*ID*/, res);\r
50951         else\r
50952             return new sc_Token(12/*NUMBER*/, res - 0);\r
50953     };\r
50954     \r
50955     function skipWhitespaceAndComments() {\r
50956         var done = false;\r
50957         while (!done) {\r
50958             done = true;\r
50959             while (isWhitespace(port.peekChar()))\r
50960                 port.readChar();\r
50961             if (port.peekChar() === ';') {\r
50962                 port.readChar();\r
50963                 done = false;\r
50964                 while (true) {\r
50965                     curChar = port.readChar();\r
50966                     if (curChar === SC_EOF_OBJECT ||\r
50967                         curChar === '\n')\r
50968                         break;\r
50969                 }\r
50970             }\r
50971         }\r
50972     };\r
50973     \r
50974     function readDot() {\r
50975         if (isWhitespace(port.peekChar()))\r
50976             return new sc_Token(10/*DOT*/);\r
50977         else\r
50978             return readIdOrNumber(".");\r
50979     };\r
50980 \r
50981     function readSharp() {\r
50982         var c = port.readChar();\r
50983         if (isWhitespace(c))\r
50984             return new sc_Token(13/*ERROR*/, "bad #-pattern0.");\r
50985 \r
50986         // reference\r
50987         if (isNumberChar(c)) {\r
50988             var nb = c - 0;\r
50989             while (isNumberChar(port.peekChar()))\r
50990                 nb = nb*10 + (port.readChar() - 0);\r
50991             switch (port.readChar()) {\r
50992             case '#':\r
50993                 return new sc_Token(18/*REFERENCE*/, nb);\r
50994             case '=':\r
50995                 return new sc_Token(19/*STORE*/, nb);\r
50996             default:\r
50997                 return new sc_Token(13/*ERROR*/, "bad #-pattern1." + nb);\r
50998             }\r
50999         }\r
51000 \r
51001         if (c === "(")\r
51002             return new sc_Token(14/*VECTOR_BEGIN*/);\r
51003         \r
51004         if (c === "\\") { // character\r
51005             var tmp = ""\r
51006             while (!isWhitespaceOrEOF(port.peekChar()))\r
51007                 tmp += port.readChar();\r
51008             switch (tmp.length) {\r
51009             case 0: // it's escaping a whitespace char:\r
51010                 if (sc_isEOFObject(port.peekChar))\r
51011                     return new sc_Token(13/*ERROR*/, "bad #-pattern2.");\r
51012                 else\r
51013                     return new sc_Token(20/*CHAR*/, port.readChar());\r
51014             case 1:\r
51015                 return new sc_Token(20/*CHAR*/, tmp);\r
51016             default:\r
51017                 var entry = sc_Char.readable2char[tmp.toLowerCase()];\r
51018                 if (entry)\r
51019                     return new sc_Token(20/*CHAR*/, entry);\r
51020                 else\r
51021                     return new sc_Token(13/*ERROR*/, "unknown character description: #\\" + tmp);\r
51022             }\r
51023         }\r
51024 \r
51025         // some constants (#t, #f, #unspecified)\r
51026         var res;\r
51027         var needing;\r
51028         switch (c) {\r
51029         case 't': res = new sc_Token(15/*TRUE*/, true); needing = ""; break;\r
51030         case 'f': res = new sc_Token(16/*FALSE*/, false); needing = ""; break;\r
51031         case 'u': res = new sc_Token(17/*UNSPECIFIED*/, undefined); needing = "nspecified"; break;\r
51032         default:\r
51033             return new sc_Token(13/*ERROR*/, "bad #-pattern3: " + c);\r
51034         }\r
51035         while(true) {\r
51036             c = port.peekChar();\r
51037             if ((isWhitespaceOrEOF(c) || c === ')') &&\r
51038                 needing == "")\r
51039                 return res;\r
51040             else if (isWhitespace(c) || needing == "")\r
51041                 return new sc_Token(13/*ERROR*/, "bad #-pattern4 " + c + " " + needing);\r
51042             else if (needing.charAt(0) == c) {\r
51043                 port.readChar(); // consume\r
51044                 needing = needing.slice(1);\r
51045             } else\r
51046                 return new sc_Token(13/*ERROR*/, "bad #-pattern5");\r
51047         }\r
51048         \r
51049     };\r
51050 \r
51051     skipWhitespaceAndComments();\r
51052     var curChar = port.readChar();\r
51053     if (curChar === SC_EOF_OBJECT)\r
51054         return new sc_Token(0/*EOF*/, curChar);\r
51055     switch (curChar)\r
51056     {\r
51057     case " ":\r
51058     case "\n":\r
51059     case "\t":\r
51060         return readWhitespace();\r
51061     case "(":\r
51062         return new sc_Token(1/*OPEN_PAR*/);\r
51063     case ")":\r
51064         return new sc_Token(2/*CLOSE_PAR*/);\r
51065     case "{":\r
51066         return new sc_Token(3/*OPEN_BRACE*/);\r
51067     case "}":\r
51068         return new sc_Token(4/*CLOSE_BRACE*/);\r
51069     case "[":\r
51070         return new sc_Token(5/*OPEN_BRACKET*/);\r
51071     case "]":\r
51072         return new sc_Token(6/*CLOSE_BRACKET*/);\r
51073     case "'":\r
51074         return new sc_Token(8/*QUOTE*/);\r
51075     case "#":\r
51076         return readSharp();\r
51077     case ".":\r
51078         return readDot();\r
51079     case '"':\r
51080         return readString();\r
51081     default:\r
51082         if (isIdOrNumberChar(curChar))\r
51083             return readIdOrNumber(curChar);\r
51084         throw "unexpected character: " + curChar;\r
51085     }\r
51086 };\r
51087 \r
51088 function sc_Reader(tokenizer) {\r
51089     this.tokenizer = tokenizer;\r
51090     this.backref = new Array();\r
51091 }\r
51092 sc_Reader.prototype.read = function() {\r
51093     function readList(listBeginType) {\r
51094         function matchesPeer(open, close) {\r
51095             return open === 1/*OPEN_PAR*/ && close === 2/*CLOSE_PAR*/\r
51096                 || open === 3/*OPEN_BRACE*/ && close === 4/*CLOSE_BRACE*/\r
51097                 || open === 5/*OPEN_BRACKET*/ && close === 6/*CLOSE_BRACKET*/;\r
51098         };\r
51099         var res = null;\r
51100 \r
51101         while (true) {\r
51102             var token = tokenizer.peekToken();\r
51103             \r
51104             switch (token.type) {\r
51105             case 2/*CLOSE_PAR*/:\r
51106             case 4/*CLOSE_BRACE*/:\r
51107             case 6/*CLOSE_BRACKET*/:\r
51108                 if (matchesPeer(listBeginType, token.type)) {\r
51109                     tokenizer.readToken(); // consume token\r
51110                     return sc_reverseBang(res);\r
51111                 } else\r
51112                     throw "closing par doesn't match: " + listBeginType\r
51113                         + " " + listEndType;\r
51114 \r
51115             case 0/*EOF*/:\r
51116                 throw "unexpected end of file";\r
51117 \r
51118             case 10/*DOT*/:\r
51119                 tokenizer.readToken(); // consume token\r
51120                 var cdr = this.read();\r
51121                 var par = tokenizer.readToken();\r
51122                 if (!matchesPeer(listBeginType, par.type))\r
51123                     throw "closing par doesn't match: " + listBeginType\r
51124                         + " " + par.type;\r
51125                 else\r
51126                     return sc_reverseAppendBang(res, cdr);\r
51127                 \r
51128 \r
51129             default:\r
51130                 res = sc_cons(this.read(), res);\r
51131             }\r
51132         }\r
51133     };\r
51134     function readQuote() {\r
51135         return sc_cons("quote", sc_cons(this.read(), null));\r
51136     };\r
51137     function readVector() {\r
51138         // opening-parenthesis is already consumed\r
51139         var a = new Array();\r
51140         while (true) {\r
51141             var token = tokenizer.peekToken();\r
51142             switch (token.type) {\r
51143             case 2/*CLOSE_PAR*/:\r
51144                 tokenizer.readToken();\r
51145                 return a;\r
51146                 \r
51147             default:\r
51148                 a.push(this.read());\r
51149             }\r
51150         }\r
51151     };\r
51152 \r
51153     function storeRefence(nb) {\r
51154         var tmp = this.read();\r
51155         this.backref[nb] = tmp;\r
51156         return tmp;\r
51157     };\r
51158         \r
51159     function readReference(nb) {\r
51160         if (nb in this.backref)\r
51161             return this.backref[nb];\r
51162         else\r
51163             throw "bad reference: " + nb;\r
51164     };\r
51165     \r
51166     var tokenizer = this.tokenizer;\r
51167 \r
51168     var token = tokenizer.readToken();\r
51169 \r
51170     // handle error\r
51171     if (token.type === 13/*ERROR*/)\r
51172         throw token.val;\r
51173     \r
51174     switch (token.type) {\r
51175     case 1/*OPEN_PAR*/:\r
51176     case 3/*OPEN_BRACE*/:\r
51177     case 5/*OPEN_BRACKET*/:\r
51178         return readList.call(this, token.type);\r
51179     case 8/*QUOTE*/:\r
51180         return readQuote.call(this);\r
51181     case 11/*STRING*/:\r
51182         return sc_jsstring2string(token.val);\r
51183     case 20/*CHAR*/:\r
51184         return new sc_Char(token.val);\r
51185     case 14/*VECTOR_BEGIN*/:\r
51186         return readVector.call(this);\r
51187     case 18/*REFERENCE*/:\r
51188         return readReference.call(this, token.val);\r
51189     case 19/*STORE*/:\r
51190         return storeRefence.call(this, token.val);\r
51191     case 9/*ID*/:\r
51192         return sc_jsstring2symbol(token.val);\r
51193     case 0/*EOF*/:\r
51194     case 12/*NUMBER*/:\r
51195     case 15/*TRUE*/:\r
51196     case 16/*FALSE*/:\r
51197     case 17/*UNSPECIFIED*/:\r
51198         return token.val;\r
51199     default:\r
51200         throw "unexpected token " + token.type + " " + token.val;\r
51201     }\r
51202 };\r
51203 \r
51204 /*** META ((export #t)) */\r
51205 function sc_read(port) {\r
51206     if (port === undefined) // we assume the port hasn't been given.\r
51207         port = SC_DEFAULT_IN; // THREAD: shared var...\r
51208     var reader = new sc_Reader(new sc_Tokenizer(port));\r
51209     return reader.read();\r
51210 }\r
51211 /*** META ((export #t)) */\r
51212 function sc_readChar(port) {\r
51213     if (port === undefined) // we assume the port hasn't been given.\r
51214         port = SC_DEFAULT_IN; // THREAD: shared var...\r
51215     var t = port.readChar();\r
51216     return t === SC_EOF_OBJECT? t: new sc_Char(t);\r
51217 }\r
51218 /*** META ((export #t)) */\r
51219 function sc_peekChar(port) {\r
51220     if (port === undefined) // we assume the port hasn't been given.\r
51221         port = SC_DEFAULT_IN; // THREAD: shared var...\r
51222     var t = port.peekChar();\r
51223     return t === SC_EOF_OBJECT? t: new sc_Char(t);\r
51224 }    \r
51225 /*** META ((export #t)\r
51226            (type bool))\r
51227 */\r
51228 function sc_isCharReady(port) {\r
51229     if (port === undefined) // we assume the port hasn't been given.\r
51230         port = SC_DEFAULT_IN; // THREAD: shared var...\r
51231     return port.isCharReady();\r
51232 }\r
51233 /*** META ((export #t)\r
51234            (peephole (postfix ".close()")))\r
51235 */\r
51236 function sc_closeInputPort(p) {\r
51237     return p.close();\r
51238 }\r
51239 \r
51240 /*** META ((export #t)\r
51241            (type bool)\r
51242            (peephole (postfix " instanceof sc_InputPort")))\r
51243 */\r
51244 function sc_isInputPort(o) {\r
51245     return (o instanceof sc_InputPort);\r
51246 }\r
51247 \r
51248 /*** META ((export eof-object?)\r
51249            (type bool)\r
51250            (peephole (postfix " === SC_EOF_OBJECT")))\r
51251 */\r
51252 function sc_isEOFObject(o) {\r
51253     return o === SC_EOF_OBJECT;\r
51254 }\r
51255 \r
51256 /*** META ((export #t)\r
51257            (peephole (hole 0 "SC_DEFAULT_IN")))\r
51258 */\r
51259 function sc_currentInputPort() {\r
51260     return SC_DEFAULT_IN;\r
51261 }\r
51262 \r
51263 /* ------------ file operations are not supported -----------*/\r
51264 /*** META ((export #t)) */\r
51265 function sc_callWithInputFile(s, proc) {\r
51266     throw "can't open " + s;\r
51267 }\r
51268 \r
51269 /*** META ((export #t)) */\r
51270 function sc_callWithOutputFile(s, proc) {\r
51271     throw "can't open " + s;\r
51272 }\r
51273 \r
51274 /*** META ((export #t)) */\r
51275 function sc_withInputFromFile(s, thunk) {\r
51276     throw "can't open " + s;\r
51277 }\r
51278 \r
51279 /*** META ((export #t)) */\r
51280 function sc_withOutputToFile(s, thunk) {\r
51281     throw "can't open " + s;\r
51282 }\r
51283 \r
51284 /*** META ((export #t)) */\r
51285 function sc_openInputFile(s) {\r
51286     throw "can't open " + s;\r
51287 }\r
51288 \r
51289 /*** META ((export #t)) */\r
51290 function sc_openOutputFile(s) {\r
51291     throw "can't open " + s;\r
51292 }\r
51293 \r
51294 /* ----------------------------------------------------------------------------*/\r
51295 /*** META ((export #t)) */\r
51296 function sc_basename(p) {\r
51297    var i = p.lastIndexOf('/');\r
51298 \r
51299    if(i >= 0)\r
51300       return p.substring(i + 1, p.length);\r
51301    else\r
51302       return '';\r
51303 }\r
51304 \r
51305 /*** META ((export #t)) */\r
51306 function sc_dirname(p) {\r
51307    var i = p.lastIndexOf('/');\r
51308 \r
51309    if(i >= 0)\r
51310       return p.substring(0, i);\r
51311    else\r
51312       return '';\r
51313 }\r
51314 \r
51315 /* ----------------------------------------------------------------------------*/\r
51316 \r
51317 /*** META ((export #t)) */\r
51318 function sc_withInputFromPort(p, thunk) {\r
51319     try {\r
51320         var tmp = SC_DEFAULT_IN; // THREAD: shared var.\r
51321         SC_DEFAULT_IN = p;\r
51322         return thunk();\r
51323     } finally {\r
51324         SC_DEFAULT_IN = tmp;\r
51325     }\r
51326 }\r
51327 \r
51328 /*** META ((export #t)) */\r
51329 function sc_withInputFromString(s, thunk) {\r
51330     return sc_withInputFromPort(new sc_StringInputPort(sc_string2jsstring(s)), thunk);\r
51331 }\r
51332 \r
51333 /*** META ((export #t)) */\r
51334 function sc_withOutputToPort(p, thunk) {\r
51335     try {\r
51336         var tmp = SC_DEFAULT_OUT; // THREAD: shared var.\r
51337         SC_DEFAULT_OUT = p;\r
51338         return thunk();\r
51339     } finally {\r
51340         SC_DEFAULT_OUT = tmp;\r
51341     }\r
51342 }\r
51343 \r
51344 /*** META ((export #t)) */\r
51345 function sc_withOutputToString(thunk) {\r
51346     var p = new sc_StringOutputPort();\r
51347     sc_withOutputToPort(p, thunk);\r
51348     return p.close();\r
51349 }\r
51350 \r
51351 /*** META ((export #t)) */\r
51352 function sc_withOutputToProcedure(proc, thunk) {\r
51353     var t = function(s) { proc(sc_jsstring2string(s)); };\r
51354     return sc_withOutputToPort(new sc_GenericOutputPort(t), thunk);\r
51355 }\r
51356 \r
51357 /*** META ((export #t)\r
51358            (peephole (hole 0 "new sc_StringOutputPort()")))\r
51359 */\r
51360 function sc_openOutputString() {\r
51361     return new sc_StringOutputPort();\r
51362 }\r
51363 \r
51364 /*** META ((export #t)) */\r
51365 function sc_openInputString(str) {\r
51366     return new sc_StringInputPort(sc_string2jsstring(str));\r
51367 }\r
51368 \r
51369 /* ----------------------------------------------------------------------------*/\r
51370 \r
51371 function sc_OutputPort() {\r
51372 }\r
51373 sc_OutputPort.prototype = new sc_Port();\r
51374 sc_OutputPort.prototype.appendJSString = function(obj) {\r
51375     /* do nothing */\r
51376 }\r
51377 sc_OutputPort.prototype.close = function() {\r
51378     /* do nothing */\r
51379 }\r
51380 \r
51381 function sc_StringOutputPort() {\r
51382     this.res = "";\r
51383 }\r
51384 sc_StringOutputPort.prototype = new sc_OutputPort();\r
51385 sc_StringOutputPort.prototype.appendJSString = function(s) {\r
51386     this.res += s;\r
51387 }\r
51388 sc_StringOutputPort.prototype.close = function() {\r
51389     return sc_jsstring2string(this.res);\r
51390 }\r
51391 \r
51392 /*** META ((export #t)) */\r
51393 function sc_getOutputString(sp) {\r
51394     return sc_jsstring2string(sp.res);\r
51395 }\r
51396     \r
51397 \r
51398 function sc_ErrorOutputPort() {\r
51399 }\r
51400 sc_ErrorOutputPort.prototype = new sc_OutputPort();\r
51401 sc_ErrorOutputPort.prototype.appendJSString = function(s) {\r
51402     throw "don't write on ErrorPort!";\r
51403 }\r
51404 sc_ErrorOutputPort.prototype.close = function() {\r
51405     /* do nothing */\r
51406 }\r
51407 \r
51408 function sc_GenericOutputPort(appendJSString, close) {\r
51409     this.appendJSString = appendJSString;\r
51410     if (close)\r
51411         this.close = close;\r
51412 }\r
51413 sc_GenericOutputPort.prototype = new sc_OutputPort();\r
51414 \r
51415 /*** META ((export #t)\r
51416            (type bool)\r
51417            (peephole (postfix " instanceof sc_OutputPort")))\r
51418 */\r
51419 function sc_isOutputPort(o) {\r
51420     return (o instanceof sc_OutputPort);\r
51421 }\r
51422 \r
51423 /*** META ((export #t)\r
51424            (peephole (postfix ".close()")))\r
51425 */\r
51426 function sc_closeOutputPort(p) {\r
51427     return p.close();\r
51428 }\r
51429 \r
51430 /* ------------------ write ---------------------------------------------------*/\r
51431 \r
51432 /*** META ((export #t)) */\r
51433 function sc_write(o, p) {\r
51434     if (p === undefined) // we assume not given\r
51435         p = SC_DEFAULT_OUT;\r
51436     p.appendJSString(sc_toWriteString(o));\r
51437 }\r
51438 \r
51439 function sc_toWriteString(o) {\r
51440     if (o === null)\r
51441         return "()";\r
51442     else if (o === true)\r
51443         return "#t";\r
51444     else if (o === false)\r
51445         return "#f";\r
51446     else if (o === undefined)\r
51447         return "#unspecified";\r
51448     else if (typeof o === 'function')\r
51449         return "#<procedure " + sc_hash(o) + ">";\r
51450     else if (o.sc_toWriteString)\r
51451         return o.sc_toWriteString();\r
51452     else\r
51453         return o.toString();\r
51454 }\r
51455 \r
51456 function sc_escapeWriteString(s) {\r
51457     var res = "";\r
51458     var j = 0;\r
51459     for (i = 0; i < s.length; i++) {\r
51460         switch (s.charAt(i)) {\r
51461         case "\0": res += s.substring(j, i) + "\\0"; j = i + 1; break;\r
51462         case "\b": res += s.substring(j, i) + "\\b"; j = i + 1; break;\r
51463         case "\f": res += s.substring(j, i) + "\\f"; j = i + 1; break;\r
51464         case "\n": res += s.substring(j, i) + "\\n"; j = i + 1; break;\r
51465         case "\r": res += s.substring(j, i) + "\\r"; j = i + 1; break;\r
51466         case "\t": res += s.substring(j, i) + "\\t"; j = i + 1; break;\r
51467         case "\v": res += s.substring(j, i) + "\\v"; j = i + 1; break;\r
51468         case '"': res += s.substring(j, i) + '\\"'; j = i + 1; break;\r
51469         case "\\": res += s.substring(j, i) + "\\\\"; j = i + 1; break;\r
51470         default:\r
51471             var c = s.charAt(i);\r
51472             if ("\a" !== "a" && c == "\a") {\r
51473                 res += s.substring(j, i) + "\\a"; j = i + 1; continue;\r
51474             }\r
51475             if ("\v" !== "v" && c == "\v") {\r
51476                 res += s.substring(j, i) + "\\v"; j = i + 1; continue;\r
51477             }\r
51478             //if (s.charAt(i) < ' ' || s.charCodeAt(i) > 127) {\r
51479             // CARE: Manuel is this OK with HOP?\r
51480             if (s.charAt(i) < ' ') {\r
51481                 /* non printable character and special chars */\r
51482                 res += s.substring(j, i) + "\\x" + s.charCodeAt(i).toString(16);\r
51483                 j = i + 1;\r
51484             }\r
51485             // else just let i increase...\r
51486         }\r
51487     }\r
51488     res += s.substring(j, i);\r
51489     return res;\r
51490 }\r
51491 \r
51492 /* ------------------ display ---------------------------------------------------*/\r
51493 \r
51494 /*** META ((export #t)) */\r
51495 function sc_display(o, p) {\r
51496     if (p === undefined) // we assume not given\r
51497         p = SC_DEFAULT_OUT;\r
51498     p.appendJSString(sc_toDisplayString(o));\r
51499 }\r
51500 \r
51501 function sc_toDisplayString(o) {\r
51502     if (o === null)\r
51503         return "()";\r
51504     else if (o === true)\r
51505         return "#t";\r
51506     else if (o === false)\r
51507         return "#f";\r
51508     else if (o === undefined)\r
51509         return "#unspecified";\r
51510     else if (typeof o === 'function')\r
51511         return "#<procedure " + sc_hash(o) + ">";\r
51512     else if (o.sc_toDisplayString)\r
51513         return o.sc_toDisplayString();\r
51514     else\r
51515         return o.toString();\r
51516 }\r
51517 \r
51518 /* ------------------ newline ---------------------------------------------------*/\r
51519 \r
51520 /*** META ((export #t)) */\r
51521 function sc_newline(p) {\r
51522     if (p === undefined) // we assume not given\r
51523         p = SC_DEFAULT_OUT;\r
51524     p.appendJSString("\n");\r
51525 }\r
51526     \r
51527 /* ------------------ write-char ---------------------------------------------------*/\r
51528 \r
51529 /*** META ((export #t)) */\r
51530 function sc_writeChar(c, p) {\r
51531     if (p === undefined) // we assume not given\r
51532         p = SC_DEFAULT_OUT;\r
51533     p.appendJSString(c.val);\r
51534 }\r
51535 \r
51536 /* ------------------ write-circle ---------------------------------------------------*/\r
51537 \r
51538 /*** META ((export #t)) */\r
51539 function sc_writeCircle(o, p) {\r
51540     if (p === undefined) // we assume not given\r
51541         p = SC_DEFAULT_OUT;\r
51542     p.appendJSString(sc_toWriteCircleString(o));\r
51543 }\r
51544 \r
51545 function sc_toWriteCircleString(o) {\r
51546     var symb = sc_gensym("writeCircle");\r
51547     var nbPointer = new Object();\r
51548     nbPointer.nb = 0;\r
51549     sc_prepWriteCircle(o, symb, nbPointer);\r
51550     return sc_genToWriteCircleString(o, symb);\r
51551 }\r
51552 \r
51553 function sc_prepWriteCircle(o, symb, nbPointer) {\r
51554     // TODO sc_Struct\r
51555     if (o instanceof sc_Pair ||\r
51556         o instanceof sc_Vector) {\r
51557         if (o[symb] !== undefined) {\r
51558             // not the first visit.\r
51559             o[symb]++;\r
51560             // unless there is already a number, assign one.\r
51561             if (!o[symb + "nb"]) o[symb + "nb"] = nbPointer.nb++;\r
51562             return;\r
51563         }\r
51564         o[symb] = 0;\r
51565         if (o instanceof sc_Pair) {\r
51566             sc_prepWriteCircle(o.car, symb, nbPointer);\r
51567             sc_prepWriteCircle(o.cdr, symb, nbPointer);\r
51568         } else {\r
51569             for (var i = 0; i < o.length; i++)\r
51570                 sc_prepWriteCircle(o[i], symb, nbPointer);\r
51571         }\r
51572     }\r
51573 }\r
51574 \r
51575 function sc_genToWriteCircleString(o, symb) {\r
51576     if (!(o instanceof sc_Pair ||\r
51577           o instanceof sc_Vector))\r
51578         return sc_toWriteString(o);\r
51579     return o.sc_toWriteCircleString(symb);\r
51580 }\r
51581 sc_Pair.prototype.sc_toWriteCircleString = function(symb, inList) {\r
51582     if (this[symb + "use"]) { // use-flag is set. Just use it.\r
51583         var nb = this[symb + "nb"];\r
51584         if (this[symb]-- === 0) { // if we are the last use. remove all fields.\r
51585             delete this[symb];\r
51586             delete this[symb + "nb"];\r
51587             delete this[symb + "use"];\r
51588         }\r
51589         if (inList)\r
51590             return '. #' + nb + '#';\r
51591         else\r
51592             return '#' + nb + '#';\r
51593     }\r
51594     if (this[symb]-- === 0) { // if we are the last use. remove all fields.\r
51595         delete this[symb];\r
51596         delete this[symb + "nb"];\r
51597         delete this[symb + "use"];\r
51598     }\r
51599 \r
51600     var res = "";\r
51601     \r
51602     if (this[symb] !== undefined) { // implies > 0\r
51603         this[symb + "use"] = true;\r
51604         if (inList)\r
51605             res += '. #' + this[symb + "nb"] + '=';\r
51606         else\r
51607             res += '#' + this[symb + "nb"] + '=';\r
51608         inList = false;\r
51609     }\r
51610 \r
51611     if (!inList)\r
51612         res += "(";\r
51613     \r
51614     // print car\r
51615     res += sc_genToWriteCircleString(this.car, symb);\r
51616     \r
51617     if (sc_isPair(this.cdr)) {\r
51618         res += " " + this.cdr.sc_toWriteCircleString(symb, true);\r
51619     } else if (this.cdr !== null) {\r
51620         res += " . " + sc_genToWriteCircleString(this.cdr, symb);\r
51621     }\r
51622     if (!inList)\r
51623         res += ")";\r
51624     return res;\r
51625 };\r
51626 sc_Vector.prototype.sc_toWriteCircleString = function(symb) {\r
51627     if (this[symb + "use"]) { // use-flag is set. Just use it.\r
51628         var nb = this[symb + "nb"];\r
51629         if (this[symb]-- === 0) { // if we are the last use. remove all fields.\r
51630             delete this[symb];\r
51631             delete this[symb + "nb"];\r
51632             delete this[symb + "use"];\r
51633         }\r
51634         return '#' + nb + '#';\r
51635     }\r
51636     if (this[symb]-- === 0) { // if we are the last use. remove all fields.\r
51637         delete this[symb];\r
51638         delete this[symb + "nb"];\r
51639         delete this[symb + "use"];\r
51640     }\r
51641 \r
51642     var res = "";\r
51643     if (this[symb] !== undefined) { // implies > 0\r
51644         this[symb + "use"] = true;\r
51645         res += '#' + this[symb + "nb"] + '=';\r
51646     }\r
51647     res += "#(";\r
51648     for (var i = 0; i < this.length; i++) {\r
51649         res += sc_genToWriteCircleString(this[i], symb);\r
51650         if (i < this.length - 1) res += " ";\r
51651     }\r
51652     res += ")";\r
51653     return res;\r
51654 };\r
51655 \r
51656 \r
51657 /* ------------------ print ---------------------------------------------------*/\r
51658 \r
51659 /*** META ((export #t)) */\r
51660 function sc_print(s) {\r
51661     if (arguments.length === 1) {\r
51662         sc_display(s);\r
51663         sc_newline();\r
51664     }\r
51665     else {\r
51666         for (var i = 0; i < arguments.length; i++)\r
51667             sc_display(arguments[i]);\r
51668         sc_newline();\r
51669     }\r
51670 }\r
51671 \r
51672 /* ------------------ format ---------------------------------------------------*/\r
51673 /*** META ((export #t)) */\r
51674 function sc_format(s, args) {\r
51675    var len = s.length;\r
51676    var p = new sc_StringOutputPort();\r
51677    var i = 0, j = 1;\r
51678 \r
51679    while( i < len ) {\r
51680       var i2 = s.indexOf("~", i);\r
51681 \r
51682       if (i2 == -1) {\r
51683           p.appendJSString( s.substring( i, len ) );\r
51684           return p.close();\r
51685       } else {\r
51686          if (i2 > i) {\r
51687             if (i2 == (len - 1)) {\r
51688                 p.appendJSString(s.substring(i, len));\r
51689                 return p.close();\r
51690             } else {\r
51691                p.appendJSString(s.substring(i, i2));\r
51692                i = i2;\r
51693             }\r
51694          }\r
51695 \r
51696          switch(s.charCodeAt(i2 + 1)) {\r
51697             case 65:\r
51698             case 97:\r
51699                // a\r
51700                sc_display(arguments[j], p);\r
51701                i += 2; j++;\r
51702                break;\r
51703 \r
51704             case 83:\r
51705             case 115:\r
51706                // s\r
51707                sc_write(arguments[j], p);\r
51708                i += 2; j++;\r
51709                break;\r
51710 \r
51711             case 86:\r
51712             case 118:\r
51713                // v\r
51714                sc_display(arguments[j], p);\r
51715                p.appendJSString("\n");\r
51716                i += 2; j++;\r
51717                break;\r
51718 \r
51719             case 67:\r
51720             case 99:\r
51721                // c\r
51722                p.appendJSString(String.fromCharCode(arguments[j]));\r
51723                i += 2; j++;\r
51724                break;\r
51725 \r
51726             case 88:\r
51727             case 120:\r
51728                // x\r
51729                p.appendJSString(arguments[j].toString(6));\r
51730                i += 2; j++;\r
51731                break;\r
51732 \r
51733             case 79:\r
51734             case 111:\r
51735                // o\r
51736                p.appendJSString(arguments[j].toString(8));\r
51737                i += 2; j++;\r
51738                break;\r
51739 \r
51740             case 66:\r
51741             case 98:\r
51742                // b\r
51743                p.appendJSString(arguments[j].toString(2));\r
51744                i += 2; j++;\r
51745                break;\r
51746                \r
51747             case 37:\r
51748             case 110:\r
51749                // %, n\r
51750                p.appendJSString("\n");\r
51751                i += 2; break;\r
51752 \r
51753             case 114:\r
51754                // r\r
51755                p.appendJSString("\r");\r
51756                i += 2; break;\r
51757 \r
51758             case 126:\r
51759                // ~\r
51760                p.appendJSString("~");\r
51761                i += 2; break;\r
51762 \r
51763             default:\r
51764                sc_error( "format: illegal ~"\r
51765                          + String.fromCharCode(s.charCodeAt(i2 + 1))\r
51766                          + " sequence" );\r
51767                return "";\r
51768          }\r
51769       }\r
51770    }\r
51771 \r
51772    return p.close();\r
51773 }\r
51774 \r
51775 /* ------------------ global ports ---------------------------------------------------*/\r
51776 \r
51777 var SC_DEFAULT_IN = new sc_ErrorInputPort();\r
51778 var SC_DEFAULT_OUT = new sc_ErrorOutputPort();\r
51779 var SC_ERROR_OUT = new sc_ErrorOutputPort();\r
51780 \r
51781 var sc_SYMBOL_PREFIX = "\u1E9C";\r
51782 var sc_KEYWORD_PREFIX = "\u1E9D";\r
51783 \r
51784 /*** META ((export #t)\r
51785            (peephole (id))) */\r
51786 function sc_jsstring2string(s) {\r
51787     return s;\r
51788 }\r
51789 \r
51790 /*** META ((export #t)\r
51791            (peephole (prefix "'\\u1E9C' +")))\r
51792 */\r
51793 function sc_jsstring2symbol(s) {\r
51794     return sc_SYMBOL_PREFIX + s;\r
51795 }\r
51796 \r
51797 /*** META ((export #t)\r
51798            (peephole (id)))\r
51799 */\r
51800 function sc_string2jsstring(s) {\r
51801     return s;\r
51802 }\r
51803 \r
51804 /*** META ((export #t)\r
51805            (peephole (symbol2jsstring_immutable)))\r
51806 */\r
51807 function sc_symbol2jsstring(s) {\r
51808     return s.slice(1);\r
51809 }\r
51810 \r
51811 /*** META ((export #t)\r
51812            (peephole (postfix ".slice(1)")))\r
51813 */\r
51814 function sc_keyword2jsstring(k) {\r
51815     return k.slice(1);\r
51816 }\r
51817 \r
51818 /*** META ((export #t)\r
51819            (peephole (prefix "'\\u1E9D' +")))\r
51820 */\r
51821 function sc_jsstring2keyword(s) {\r
51822     return sc_KEYWORD_PREFIX + s;\r
51823 }\r
51824 \r
51825 /*** META ((export #t)\r
51826            (type bool))\r
51827 */\r
51828 function sc_isKeyword(s) {\r
51829     return (typeof s === "string") &&\r
51830         (s.charAt(0) === sc_KEYWORD_PREFIX);\r
51831 }\r
51832 \r
51833 \r
51834 /*** META ((export #t)) */\r
51835 var sc_gensym = function() {\r
51836     var counter = 1000;\r
51837     return function(sym) {\r
51838         counter++;\r
51839         if (!sym) sym = sc_SYMBOL_PREFIX;\r
51840         return sym + "s" + counter + "~" + "^sC-GeNsYm ";\r
51841     };\r
51842 }();\r
51843 \r
51844 \r
51845 /*** META ((export #t)\r
51846            (type bool))\r
51847 */\r
51848 function sc_isEqual(o1, o2) {\r
51849     return ((o1 === o2) ||\r
51850             (sc_isPair(o1) && sc_isPair(o2)\r
51851              && sc_isPairEqual(o1, o2, sc_isEqual)) ||\r
51852             (sc_isVector(o1) && sc_isVector(o2)\r
51853              && sc_isVectorEqual(o1, o2, sc_isEqual)));\r
51854 }\r
51855 \r
51856 /*** META ((export number->symbol integer->symbol)) */\r
51857 function sc_number2symbol(x, radix) {\r
51858     return sc_SYMBOL_PREFIX + sc_number2jsstring(x, radix);\r
51859 }\r
51860     \r
51861 /*** META ((export number->string integer->string)) */\r
51862 var sc_number2string = sc_number2jsstring;\r
51863 \r
51864 /*** META ((export #t)) */\r
51865 function sc_symbol2number(s, radix) {\r
51866     return sc_jsstring2number(s.slice(1), radix);\r
51867 }\r
51868 \r
51869 /*** META ((export #t)) */\r
51870 var sc_string2number = sc_jsstring2number;\r
51871 \r
51872 /*** META ((export #t)\r
51873            (peephole (prefix "+" s)))\r
51874            ;; peephole will only apply if no radix is given.\r
51875 */\r
51876 function sc_string2integer(s, radix) {\r
51877     if (!radix) return +s;\r
51878     return parseInt(s, radix);\r
51879 }\r
51880 \r
51881 /*** META ((export #t)\r
51882            (peephole (prefix "+")))\r
51883 */\r
51884 function sc_string2real(s) {\r
51885     return +s;\r
51886 }\r
51887 \r
51888 \r
51889 /*** META ((export #t)\r
51890            (type bool))\r
51891 */\r
51892 function sc_isSymbol(s) {\r
51893     return (typeof s === "string") &&\r
51894         (s.charAt(0) === sc_SYMBOL_PREFIX);\r
51895 }\r
51896 \r
51897 /*** META ((export #t)\r
51898            (peephole (symbol2string_immutable)))\r
51899 */\r
51900 function sc_symbol2string(s) {\r
51901     return s.slice(1);\r
51902 }\r
51903 \r
51904 /*** META ((export #t)\r
51905            (peephole (prefix "'\\u1E9C' +")))\r
51906 */\r
51907 function sc_string2symbol(s) {\r
51908     return sc_SYMBOL_PREFIX + s;\r
51909 }\r
51910 \r
51911 /*** META ((export symbol-append)\r
51912            (peephole (symbolAppend_immutable)))\r
51913 */\r
51914 function sc_symbolAppend() {\r
51915     var res = sc_SYMBOL_PREFIX;\r
51916     for (var i = 0; i < arguments.length; i++)\r
51917         res += arguments[i].slice(1);\r
51918     return res;\r
51919 }\r
51920 \r
51921 /*** META ((export #t)\r
51922            (peephole (postfix ".val")))\r
51923 */\r
51924 function sc_char2string(c) { return c.val; }\r
51925 \r
51926 /*** META ((export #t)\r
51927            (peephole (hole 1 "'\\u1E9C' + " c ".val")))\r
51928 */\r
51929 function sc_char2symbol(c) { return sc_SYMBOL_PREFIX + c.val; }\r
51930 \r
51931 /*** META ((export #t)\r
51932            (type bool))\r
51933 */\r
51934 function sc_isString(s) {\r
51935     return (typeof s === "string") &&\r
51936         (s.charAt(0) !== sc_SYMBOL_PREFIX);\r
51937 }\r
51938 \r
51939 /*** META ((export #t)) */\r
51940 var sc_makeString = sc_makejsString;\r
51941 \r
51942 \r
51943 /*** META ((export #t)) */\r
51944 function sc_string() {\r
51945     for (var i = 0; i < arguments.length; i++)\r
51946         arguments[i] = arguments[i].val;\r
51947     return "".concat.apply("", arguments);\r
51948 }\r
51949 \r
51950 /*** META ((export #t)\r
51951            (peephole (postfix ".length")))\r
51952 */\r
51953 function sc_stringLength(s) { return s.length; }\r
51954 \r
51955 /*** META ((export #t)) */\r
51956 function sc_stringRef(s, k) {\r
51957     return new sc_Char(s.charAt(k));\r
51958 }\r
51959 \r
51960 /* there's no stringSet in the immutable version\r
51961 function sc_stringSet(s, k, c)\r
51962 */\r
51963 \r
51964 \r
51965 /*** META ((export string=?)\r
51966            (type bool)\r
51967            (peephole (hole 2 str1 " === " str2)))\r
51968 */\r
51969 function sc_isStringEqual(s1, s2) {\r
51970     return s1 === s2;\r
51971 }\r
51972 /*** META ((export string<?)\r
51973            (type bool)\r
51974            (peephole (hole 2 str1 " < " str2)))\r
51975 */\r
51976 function sc_isStringLess(s1, s2) {\r
51977     return s1 < s2;\r
51978 }\r
51979 /*** META ((export string>?)\r
51980            (type bool)\r
51981            (peephole (hole 2 str1 " > " str2)))\r
51982 */\r
51983 function sc_isStringGreater(s1, s2) {\r
51984     return s1 > s2;\r
51985 }\r
51986 /*** META ((export string<=?)\r
51987            (type bool)\r
51988            (peephole (hole 2 str1 " <= " str2)))\r
51989 */\r
51990 function sc_isStringLessEqual(s1, s2) {\r
51991     return s1 <= s2;\r
51992 }\r
51993 /*** META ((export string>=?)\r
51994            (type bool)\r
51995            (peephole (hole 2 str1 " >= " str2)))\r
51996 */\r
51997 function sc_isStringGreaterEqual(s1, s2) {\r
51998     return s1 >= s2;\r
51999 }\r
52000 /*** META ((export string-ci=?)\r
52001            (type bool)\r
52002            (peephole (hole 2 str1 ".toLowerCase() === " str2 ".toLowerCase()")))\r
52003 */\r
52004 function sc_isStringCIEqual(s1, s2) {\r
52005     return s1.toLowerCase() === s2.toLowerCase();\r
52006 }\r
52007 /*** META ((export string-ci<?)\r
52008            (type bool)\r
52009            (peephole (hole 2 str1 ".toLowerCase() < " str2 ".toLowerCase()")))\r
52010 */\r
52011 function sc_isStringCILess(s1, s2) {\r
52012     return s1.toLowerCase() < s2.toLowerCase();\r
52013 }\r
52014 /*** META ((export string-ci>?)\r
52015            (type bool)\r
52016            (peephole (hole 2 str1 ".toLowerCase() > " str2 ".toLowerCase()")))\r
52017 */\r
52018 function sc_isStringCIGreater(s1, s2) {\r
52019     return s1.toLowerCase() > s2.toLowerCase();\r
52020 }\r
52021 /*** META ((export string-ci<=?)\r
52022            (type bool)\r
52023            (peephole (hole 2 str1 ".toLowerCase() <= " str2 ".toLowerCase()")))\r
52024 */\r
52025 function sc_isStringCILessEqual(s1, s2) {\r
52026     return s1.toLowerCase() <= s2.toLowerCase();\r
52027 }\r
52028 /*** META ((export string-ci>=?)\r
52029            (type bool)\r
52030            (peephole (hole 2 str1 ".toLowerCase() >= " str2 ".toLowerCase()")))\r
52031 */\r
52032 function sc_isStringCIGreaterEqual(s1, s2) {\r
52033     return s1.toLowerCase() >= s2.toLowerCase();\r
52034 }\r
52035 \r
52036 /*** META ((export #t)\r
52037            (peephole (hole 3 s ".substring(" start ", " end ")")))\r
52038 */\r
52039 function sc_substring(s, start, end) {\r
52040     return s.substring(start, end);\r
52041 }\r
52042 \r
52043 /*** META ((export #t))\r
52044 */\r
52045 function sc_isSubstring_at(s1, s2, i) {\r
52046     return s2 == s1.substring(i, i+ s2.length);\r
52047 }\r
52048 \r
52049 /*** META ((export #t)\r
52050            (peephole (infix 0 #f "+" "''")))\r
52051 */\r
52052 function sc_stringAppend() {\r
52053     return "".concat.apply("", arguments);\r
52054 }\r
52055 \r
52056 /*** META ((export #t)) */\r
52057 var sc_string2list = sc_jsstring2list;\r
52058 \r
52059 /*** META ((export #t)) */\r
52060 var sc_list2string = sc_list2jsstring;\r
52061 \r
52062 /*** META ((export #t)\r
52063            (peephole (id)))\r
52064 */\r
52065 function sc_stringCopy(s) {\r
52066     return s;\r
52067 }\r
52068 \r
52069 /* there's no string-fill in the immutable version\r
52070 function sc_stringFill(s, c)\r
52071 */\r
52072 \r
52073 /*** META ((export #t)\r
52074            (peephole (postfix ".slice(1)")))\r
52075 */\r
52076 function sc_keyword2string(o) {\r
52077     return o.slice(1);\r
52078 }\r
52079 \r
52080 /*** META ((export #t)\r
52081            (peephole (prefix "'\\u1E9D' +")))\r
52082 */\r
52083 function sc_string2keyword(o) {\r
52084     return sc_KEYWORD_PREFIX + o;\r
52085 }\r
52086 \r
52087 String.prototype.sc_toDisplayString = function() {\r
52088     if (this.charAt(0) === sc_SYMBOL_PREFIX)\r
52089         // TODO: care for symbols with spaces (escape-chars symbols).\r
52090         return this.slice(1);\r
52091     else if (this.charAt(0) === sc_KEYWORD_PREFIX)\r
52092         return ":" + this.slice(1);\r
52093     else\r
52094         return this.toString();\r
52095 };\r
52096 \r
52097 String.prototype.sc_toWriteString = function() {\r
52098     if (this.charAt(0) === sc_SYMBOL_PREFIX)\r
52099         // TODO: care for symbols with spaces (escape-chars symbols).\r
52100         return this.slice(1);\r
52101     else if (this.charAt(0) === sc_KEYWORD_PREFIX)\r
52102         return ":" + this.slice(1);\r
52103     else\r
52104         return '"' + sc_escapeWriteString(this) + '"';\r
52105 };\r
52106 /* Exported Variables */\r
52107 var BgL_testzd2boyerzd2;\r
52108 var BgL_nboyerzd2benchmarkzd2;\r
52109 var BgL_setupzd2boyerzd2;\r
52110 /* End Exports */\r
52111 \r
52112 var translate_term_nboyer;\r
52113 var translate_args_nboyer;\r
52114 var untranslate_term_nboyer;\r
52115 var BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer;\r
52116 var BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer;\r
52117 var translate_alist_nboyer;\r
52118 var apply_subst_nboyer;\r
52119 var apply_subst_lst_nboyer;\r
52120 var tautologyp_nboyer;\r
52121 var if_constructor_nboyer;\r
52122 var rewrite_count_nboyer;\r
52123 var rewrite_nboyer;\r
52124 var rewrite_args_nboyer;\r
52125 var unify_subst_nboyer;\r
52126 var one_way_unify1_nboyer;\r
52127 var false_term_nboyer;\r
52128 var true_term_nboyer;\r
52129 var trans_of_implies1_nboyer;\r
52130 var is_term_equal_nboyer;\r
52131 var is_term_member_nboyer;\r
52132 var const_nboyer;\r
52133 var sc_const_3_nboyer;\r
52134 var sc_const_4_nboyer;\r
52135 {\r
52136     (sc_const_4_nboyer = (new sc_Pair("\u1E9Cimplies",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cu",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cw",null)))))),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cw",null)))))),null)))))));\r
52137     (sc_const_3_nboyer = sc_list((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccompile",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Ccodegen",(new sc_Pair((new sc_Pair("\u1E9Coptimize",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreaterp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clesseqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cboolean",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ciff",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceven1",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Codd",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccountps-",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccountps-loop",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfact-",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfact-loop",(new sc_Pair("\u1E9Ci",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdivides",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-true",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-false",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctautology-checker",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctautologyp",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfalsify",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfalsify1",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime1",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair("\u1E9Cp",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))))),(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cc",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cplus-fringe",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair("\u1E9Cenvrn",null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmc-flatten",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cintersect",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Ck",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ck",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Csort-lp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus1",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Ci",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cbase",null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cj",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cj",(new sc_Pair((1),null)))))),null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Ci",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cw",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cz",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnlistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csamefringe",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cz",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cw",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair(sc_list("\u1E9Cand", (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Ca",null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cb",null)))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cl",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cl",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdsort",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx1",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx2",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx3",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx4",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx5",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx6",(new sc_Pair("\u1E9Cx7",null)))))),null)))))),null)))))),null)))))),null)))))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((6),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx7",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cy",(new sc_Pair((2),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csigma",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Ci",null)))),null)))))),(new sc_Pair((2),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cz",null)))),null)))))),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Ca",null)))),null)))),(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Cb",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair("\u1E9Cz",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cassignedp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair((new sc_Pair("\u1E9Cset",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cval",(new sc_Pair("\u1E9Cmem",null)))))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair("\u1E9Cval",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cmem",null)))))),null)))))))),null))))))));\r
52138     (const_nboyer = (new sc_Pair((new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))))),null)))))))))));\r
52139     BgL_nboyerzd2benchmarkzd2 = function() {\r
52140         var args = null;\r
52141         for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {\r
52142             args = sc_cons(arguments[sc_tmp], args);\r
52143         }\r
52144         var n;\r
52145         return ((n = ((args === null)?(0):(args.car))), (BgL_setupzd2boyerzd2()), (BgL_runzd2benchmarkzd2(("nboyer"+(sc_number2string(n))), (1), function() {\r
52146             return (BgL_testzd2boyerzd2(n));\r
52147         }, function(rewrites) {\r
52148             if ((sc_isNumber(rewrites)))\r
52149                 switch (n) {\r
52150                 case (0):\r
52151                     return (rewrites===(95024));\r
52152                     break;\r
52153                 case (1):\r
52154                     return (rewrites===(591777));\r
52155                     break;\r
52156                 case (2):\r
52157                     return (rewrites===(1813975));\r
52158                     break;\r
52159                 case (3):\r
52160                     return (rewrites===(5375678));\r
52161                     break;\r
52162                 case (4):\r
52163 \r
52164                     return (rewrites===(16445406));\r
52165                     break;\r
52166                 case (5):\r
52167                     return (rewrites===(51507739));\r
52168                     break;\r
52169                 default:\r
52170                     return true;\r
52171                     break;\r
52172                 }\r
52173             else\r
52174                 return false;\r
52175         })));\r
52176     };\r
52177     BgL_setupzd2boyerzd2 = function() {\r
52178         return true;\r
52179     };\r
52180     BgL_testzd2boyerzd2 = function() {\r
52181         return true;\r
52182     };\r
52183     translate_term_nboyer = function(term) {\r
52184         var lst;\r
52185         return (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((translate_term_nboyer((lst.car))), (translate_args_nboyer((lst.cdr))))))))));\r
52186     };\r
52187     translate_args_nboyer = function(lst) {\r
52188         var sc_lst_5;\r
52189         var term;\r
52190         return ((lst === null)?null:(new sc_Pair(((term = (lst.car)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))), ((sc_lst_5 = (lst.cdr)), ((sc_lst_5 === null)?null:(new sc_Pair((translate_term_nboyer((sc_lst_5.car))), (translate_args_nboyer((sc_lst_5.cdr))))))))));\r
52191     };\r
52192     untranslate_term_nboyer = function(term) {\r
52193         var optrOpnd;\r
52194         var tail1131;\r
52195         var L1127;\r
52196         var falseHead1130;\r
52197         var symbol_record;\r
52198         if (!(term instanceof sc_Pair))\r
52199             return term;\r
52200         else\r
52201             {\r
52202                 (falseHead1130 = (new sc_Pair(null, null)));\r
52203                 (L1127 = (term.cdr));\r
52204                 (tail1131 = falseHead1130);\r
52205                 while (!(L1127 === null)) {\r
52206                     {\r
52207                         (tail1131.cdr = (new sc_Pair((untranslate_term_nboyer((L1127.car))), null)));\r
52208                         (tail1131 = (tail1131.cdr));\r
52209                         (L1127 = (L1127.cdr));\r
52210                     }\r
52211                 }\r
52212                 (optrOpnd = (falseHead1130.cdr));\r
52213                 return (new sc_Pair(((symbol_record = (term.car)), (symbol_record[(0)])), optrOpnd));\r
52214             }\r
52215     };\r
52216     BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer = function(sym) {\r
52217         var r;\r
52218         var x;\r
52219         return ((x = (sc_assq(sym, BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), ((x!== false)?(x.cdr):((r = [sym, null]), (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = (new sc_Pair((new sc_Pair(sym, r)), BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), r)));\r
52220     };\r
52221     (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);\r
52222     translate_alist_nboyer = function(alist) {\r
52223         var sc_alist_6;\r
52224         var term;\r
52225         return ((alist === null)?null:(new sc_Pair((new sc_Pair((alist.car.car), ((term = (alist.car.cdr)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))))), ((sc_alist_6 = (alist.cdr)), ((sc_alist_6 === null)?null:(new sc_Pair((new sc_Pair((sc_alist_6.car.car), (translate_term_nboyer((sc_alist_6.car.cdr))))), (translate_alist_nboyer((sc_alist_6.cdr))))))))));\r
52226     };\r
52227     apply_subst_nboyer = function(alist, term) {\r
52228         var lst;\r
52229         var temp_temp;\r
52230         return (!(term instanceof sc_Pair)?((temp_temp = (sc_assq(term, alist))), ((temp_temp!== false)?(temp_temp.cdr):term)):(new sc_Pair((term.car), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), (apply_subst_lst_nboyer(alist, (lst.cdr))))))))));\r
52231     };\r
52232     apply_subst_lst_nboyer = function(alist, lst) {\r
52233         var sc_lst_7;\r
52234         return ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), ((sc_lst_7 = (lst.cdr)), ((sc_lst_7 === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (sc_lst_7.car))), (apply_subst_lst_nboyer(alist, (sc_lst_7.cdr))))))))));\r
52235     };\r
52236     tautologyp_nboyer = function(sc_x_11, true_lst, false_lst) {\r
52237         var tmp1125;\r
52238         var x;\r
52239         var tmp1126;\r
52240         var sc_x_8;\r
52241         var sc_tmp1125_9;\r
52242         var sc_tmp1126_10;\r
52243         var sc_x_11;\r
52244         var true_lst;\r
52245         var false_lst;\r
52246         while (true) {\r
52247             if ((((sc_tmp1126_10 = (is_term_equal_nboyer(sc_x_11, true_term_nboyer))), ((sc_tmp1126_10!== false)?sc_tmp1126_10:(is_term_member_nboyer(sc_x_11, true_lst))))!== false))\r
52248                 return true;\r
52249             else\r
52250                 if ((((sc_tmp1125_9 = (is_term_equal_nboyer(sc_x_11, false_term_nboyer))), ((sc_tmp1125_9!== false)?sc_tmp1125_9:(is_term_member_nboyer(sc_x_11, false_lst))))!== false))\r
52251                     return false;\r
52252                 else\r
52253                     if (!(sc_x_11 instanceof sc_Pair))\r
52254                         return false;\r
52255                     else\r
52256                         if (((sc_x_11.car)===if_constructor_nboyer))\r
52257                             if ((((sc_x_8 = (sc_x_11.cdr.car)), (tmp1126 = (is_term_equal_nboyer(sc_x_8, true_term_nboyer))), ((tmp1126!== false)?tmp1126:(is_term_member_nboyer(sc_x_8, true_lst))))!== false))\r
52258                                 (sc_x_11 = (sc_x_11.cdr.cdr.car));\r
52259                             else\r
52260                                 if ((((x = (sc_x_11.cdr.car)), (tmp1125 = (is_term_equal_nboyer(x, false_term_nboyer))), ((tmp1125!== false)?tmp1125:(is_term_member_nboyer(x, false_lst))))!== false))\r
52261                                     (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));\r
52262                                 else\r
52263                                     if (((tautologyp_nboyer((sc_x_11.cdr.cdr.car), (new sc_Pair((sc_x_11.cdr.car), true_lst)), false_lst))!== false))\r
52264                                         {\r
52265                                             (false_lst = (new sc_Pair((sc_x_11.cdr.car), false_lst)));\r
52266                                             (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));\r
52267                                         }\r
52268                                     else\r
52269                                         return false;\r
52270                         else\r
52271                             return false;\r
52272         }\r
52273     };\r
52274     (if_constructor_nboyer = "\u1E9C*");\r
52275     (rewrite_count_nboyer = (0));\r
52276     rewrite_nboyer = function(term) {\r
52277         var term2;\r
52278         var sc_term_12;\r
52279         var lst;\r
52280         var symbol_record;\r
52281         var sc_lst_13;\r
52282         {\r
52283             (++rewrite_count_nboyer);\r
52284             if (!(term instanceof sc_Pair))\r
52285                 return term;\r
52286             else\r
52287                 {\r
52288                     (sc_term_12 = (new sc_Pair((term.car), ((sc_lst_13 = (term.cdr)), ((sc_lst_13 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_13.car))), (rewrite_args_nboyer((sc_lst_13.cdr))))))))));\r
52289                     (lst = ((symbol_record = (term.car)), (symbol_record[(1)])));\r
52290                     while (true) {\r
52291                         if ((lst === null))\r
52292                             return sc_term_12;\r
52293                         else\r
52294                             if ((((term2 = ((lst.car).cdr.car)), (unify_subst_nboyer = null), (one_way_unify1_nboyer(sc_term_12, term2)))!== false))\r
52295                                 return (rewrite_nboyer((apply_subst_nboyer(unify_subst_nboyer, ((lst.car).cdr.cdr.car)))));\r
52296                             else\r
52297                                 (lst = (lst.cdr));\r
52298                     }\r
52299                 }\r
52300         }\r
52301     };\r
52302     rewrite_args_nboyer = function(lst) {\r
52303         var sc_lst_14;\r
52304         return ((lst === null)?null:(new sc_Pair((rewrite_nboyer((lst.car))), ((sc_lst_14 = (lst.cdr)), ((sc_lst_14 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_14.car))), (rewrite_args_nboyer((sc_lst_14.cdr))))))))));\r
52305     };\r
52306     (unify_subst_nboyer = "\u1E9C*");\r
52307     one_way_unify1_nboyer = function(term1, term2) {\r
52308         var lst1;\r
52309         var lst2;\r
52310         var temp_temp;\r
52311         if (!(term2 instanceof sc_Pair))\r
52312             {\r
52313                 (temp_temp = (sc_assq(term2, unify_subst_nboyer)));\r
52314                 if ((temp_temp!== false))\r
52315                     return (is_term_equal_nboyer(term1, (temp_temp.cdr)));\r
52316                 else\r
52317                     if ((sc_isNumber(term2)))\r
52318                         return (sc_isEqual(term1, term2));\r
52319                     else\r
52320                         {\r
52321                             (unify_subst_nboyer = (new sc_Pair((new sc_Pair(term2, term1)), unify_subst_nboyer)));\r
52322                             return true;\r
52323                         }\r
52324             }\r
52325         else\r
52326             if (!(term1 instanceof sc_Pair))\r
52327                 return false;\r
52328             else\r
52329                 if (((term1.car)===(term2.car)))\r
52330                     {\r
52331                         (lst1 = (term1.cdr));\r
52332                         (lst2 = (term2.cdr));\r
52333                         while (true) {\r
52334                             if ((lst1 === null))\r
52335                                 return (lst2 === null);\r
52336                             else\r
52337                                 if ((lst2 === null))\r
52338                                     return false;\r
52339                                 else\r
52340                                     if (((one_way_unify1_nboyer((lst1.car), (lst2.car)))!== false))\r
52341                                         {\r
52342                                             (lst1 = (lst1.cdr));\r
52343                                             (lst2 = (lst2.cdr));\r
52344                                         }\r
52345                                     else\r
52346                                         return false;\r
52347                         }\r
52348                     }\r
52349                 else\r
52350                     return false;\r
52351     };\r
52352     (false_term_nboyer = "\u1E9C*");\r
52353     (true_term_nboyer = "\u1E9C*");\r
52354     trans_of_implies1_nboyer = function(n) {\r
52355         var sc_n_15;\r
52356         return ((sc_isEqual(n, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (n-(1)), n)), ((sc_n_15 = (n-(1))), ((sc_isEqual(sc_n_15, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (sc_n_15-(1)), sc_n_15)), (trans_of_implies1_nboyer((sc_n_15-(1)))))))))));\r
52357     };\r
52358     is_term_equal_nboyer = function(x, y) {\r
52359         var lst1;\r
52360         var lst2;\r
52361         var r2;\r
52362         var r1;\r
52363         if ((x instanceof sc_Pair))\r
52364             if ((y instanceof sc_Pair))\r
52365                 if ((((r1 = (x.car)), (r2 = (y.car)), (r1===r2))!== false))\r
52366                     {\r
52367                         (lst1 = (x.cdr));\r
52368                         (lst2 = (y.cdr));\r
52369                         while (true) {\r
52370                             if ((lst1 === null))\r
52371                                 return (lst2 === null);\r
52372                             else\r
52373                                 if ((lst2 === null))\r
52374                                     return false;\r
52375                                 else\r
52376                                     if (((is_term_equal_nboyer((lst1.car), (lst2.car)))!== false))\r
52377                                         {\r
52378                                             (lst1 = (lst1.cdr));\r
52379                                             (lst2 = (lst2.cdr));\r
52380                                         }\r
52381                                     else\r
52382                                         return false;\r
52383                         }\r
52384                     }\r
52385                 else\r
52386                     return false;\r
52387             else\r
52388                 return false;\r
52389         else\r
52390             return (sc_isEqual(x, y));\r
52391     };\r
52392     is_term_member_nboyer = function(x, lst) {\r
52393         var x;\r
52394         var lst;\r
52395         while (true) {\r
52396             if ((lst === null))\r
52397                 return false;\r
52398             else\r
52399                 if (((is_term_equal_nboyer(x, (lst.car)))!== false))\r
52400                     return true;\r
52401                 else\r
52402                     (lst = (lst.cdr));\r
52403         }\r
52404     };\r
52405     BgL_setupzd2boyerzd2 = function() {\r
52406         var symbol_record;\r
52407         var value;\r
52408         var BgL_sc_symbolzd2record_16zd2;\r
52409         var sym;\r
52410         var sc_sym_17;\r
52411         var term;\r
52412         var lst;\r
52413         var sc_term_18;\r
52414         var sc_term_19;\r
52415         {\r
52416             (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);\r
52417             (if_constructor_nboyer = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer("\u1E9Cif")));\r
52418             (false_term_nboyer = ((sc_term_19 = (new sc_Pair("\u1E9Cf",null))), (!(sc_term_19 instanceof sc_Pair)?sc_term_19:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_19.car))), (translate_args_nboyer((sc_term_19.cdr))))))));\r
52419             (true_term_nboyer = ((sc_term_18 = (new sc_Pair("\u1E9Ct",null))), (!(sc_term_18 instanceof sc_Pair)?sc_term_18:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_18.car))), (translate_args_nboyer((sc_term_18.cdr))))))));\r
52420             (lst = sc_const_3_nboyer);\r
52421             while (!(lst === null)) {\r
52422                 {\r
52423                     (term = (lst.car));\r
52424                     if (((term instanceof sc_Pair)&&(((term.car)==="\u1E9Cequal")&&((term.cdr.car) instanceof sc_Pair))))\r
52425                         {\r
52426                             (sc_sym_17 = ((term.cdr.car).car));\r
52427                             (value = (new sc_Pair((!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr)))))), ((sym = ((term.cdr.car).car)), (BgL_sc_symbolzd2record_16zd2 = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sym))), (BgL_sc_symbolzd2record_16zd2[(1)])))));\r
52428                             (symbol_record = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sc_sym_17)));\r
52429                             (symbol_record[(1)] = value);\r
52430                         }\r
52431                     else\r
52432                         (sc_error("ADD-LEMMA did not like term:  ", term));\r
52433                     (lst = (lst.cdr));\r
52434                 }\r
52435             }\r
52436             return true;\r
52437         }\r
52438     };\r
52439     BgL_testzd2boyerzd2 = function(n) {\r
52440         var optrOpnd;\r
52441         var term;\r
52442         var sc_n_20;\r
52443         var answer;\r
52444         var sc_term_21;\r
52445         var sc_term_22;\r
52446         {\r
52447             (rewrite_count_nboyer = (0));\r
52448             (term = sc_const_4_nboyer);\r
52449             (sc_n_20 = n);\r
52450             while (!(sc_n_20=== 0)) {\r
52451                 {\r
52452                     (term = (sc_list("\u1E9Cor", term, (new sc_Pair("\u1E9Cf",null)))));\r
52453                     (--sc_n_20);\r
52454                 }\r
52455             }\r
52456             (sc_term_22 = term);\r
52457             if (!(sc_term_22 instanceof sc_Pair))\r
52458                 (optrOpnd = sc_term_22);\r
52459             else\r
52460                 (optrOpnd = (new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_22.car))), (translate_args_nboyer((sc_term_22.cdr))))));\r
52461             (sc_term_21 = (apply_subst_nboyer(((const_nboyer === null)?null:(new sc_Pair((new sc_Pair((const_nboyer.car.car), (translate_term_nboyer((const_nboyer.car.cdr))))), (translate_alist_nboyer((const_nboyer.cdr)))))), optrOpnd)));\r
52462             (answer = (tautologyp_nboyer((rewrite_nboyer(sc_term_21)), null, null)));\r
52463             (sc_write(rewrite_count_nboyer));\r
52464             (sc_display(" rewrites"));\r
52465             (sc_newline());\r
52466             if ((answer!== false))\r
52467                 return rewrite_count_nboyer;\r
52468             else\r
52469                 return false;\r
52470         }\r
52471     };\r
52472 }\r
52473 /* Exported Variables */\r
52474 var BgL_parsezd2ze3nbzd2treesze3;\r
52475 var BgL_earleyzd2benchmarkzd2;\r
52476 var BgL_parsezd2ze3parsedzf3zc2;\r
52477 var test;\r
52478 var BgL_parsezd2ze3treesz31;\r
52479 var BgL_makezd2parserzd2;\r
52480 /* End Exports */\r
52481 \r
52482 var const_earley;\r
52483 {\r
52484     (const_earley = (new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair((new sc_Pair("\u1E9Ca",null)),(new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair("\u1E9Cs",null)))),null)))))),null)));\r
52485     BgL_makezd2parserzd2 = function(grammar, lexer) {\r
52486         var i;\r
52487         var parser_descr;\r
52488         var def_loop;\r
52489         var nb_nts;\r
52490         var names;\r
52491         var steps;\r
52492         var predictors;\r
52493         var enders;\r
52494         var starters;\r
52495         var nts;\r
52496         var sc_names_1;\r
52497         var sc_steps_2;\r
52498         var sc_predictors_3;\r
52499         var sc_enders_4;\r
52500         var sc_starters_5;\r
52501         var nb_confs;\r
52502         var BgL_sc_defzd2loop_6zd2;\r
52503         var BgL_sc_nbzd2nts_7zd2;\r
52504         var sc_nts_8;\r
52505         var BgL_sc_defzd2loop_9zd2;\r
52506         var ind;\r
52507         {\r
52508             ind = function(nt, sc_nts_10) {\r
52509                 var i;\r
52510                 {\r
52511                     (i = ((sc_nts_10.length)-(1)));\r
52512                     while (true) {\r
52513                         if ((i>=(0)))\r
52514                             if ((sc_isEqual((sc_nts_10[i]), nt)))\r
52515                                 return i;\r
52516                             else\r
52517                                 (--i);\r
52518                         else\r
52519                             return false;\r
52520                     }\r
52521                 }\r
52522             };\r
52523             (sc_nts_8 = ((BgL_sc_defzd2loop_9zd2 = function(defs, sc_nts_11) {\r
52524                 var rule_loop;\r
52525                 var head;\r
52526                 var def;\r
52527                 return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, sc_nts_12) {\r
52528                     var nt;\r
52529                     var l;\r
52530                     var sc_nts_13;\r
52531                     var rule;\r
52532                     if ((rules instanceof sc_Pair))\r
52533                         {\r
52534                             (rule = (rules.car));\r
52535                             (l = rule);\r
52536                             (sc_nts_13 = sc_nts_12);\r
52537                             while ((l instanceof sc_Pair)) {\r
52538                                 {\r
52539                                     (nt = (l.car));\r
52540                                     (l = (l.cdr));\r
52541                                     (sc_nts_13 = (((sc_member(nt, sc_nts_13))!== false)?sc_nts_13:(new sc_Pair(nt, sc_nts_13))));\r
52542                                 }\r
52543                             }\r
52544                             return (rule_loop((rules.cdr), sc_nts_13));\r
52545                         }\r
52546                     else\r
52547                         return (BgL_sc_defzd2loop_9zd2((defs.cdr), sc_nts_12));\r
52548                 }), (rule_loop((def.cdr), (((sc_member(head, sc_nts_11))!== false)?sc_nts_11:(new sc_Pair(head, sc_nts_11)))))):(sc_list2vector((sc_reverse(sc_nts_11)))));\r
52549             }), (BgL_sc_defzd2loop_9zd2(grammar, null))));\r
52550             (BgL_sc_nbzd2nts_7zd2 = (sc_nts_8.length));\r
52551             (nb_confs = (((BgL_sc_defzd2loop_6zd2 = function(defs, BgL_sc_nbzd2confs_14zd2) {\r
52552                 var rule_loop;\r
52553                 var def;\r
52554                 return ((defs instanceof sc_Pair)?((def = (defs.car)), (rule_loop = function(rules, BgL_sc_nbzd2confs_15zd2) {\r
52555                     var l;\r
52556                     var BgL_sc_nbzd2confs_16zd2;\r
52557                     var rule;\r
52558                     if ((rules instanceof sc_Pair))\r
52559                         {\r
52560                             (rule = (rules.car));\r
52561                             (l = rule);\r
52562                             (BgL_sc_nbzd2confs_16zd2 = BgL_sc_nbzd2confs_15zd2);\r
52563                             while ((l instanceof sc_Pair)) {\r
52564                                 {\r
52565                                     (l = (l.cdr));\r
52566                                     (++BgL_sc_nbzd2confs_16zd2);\r
52567                                 }\r
52568                             }\r
52569                             return (rule_loop((rules.cdr), (BgL_sc_nbzd2confs_16zd2+(1))));\r
52570                         }\r
52571                     else\r
52572                         return (BgL_sc_defzd2loop_6zd2((defs.cdr), BgL_sc_nbzd2confs_15zd2));\r
52573                 }), (rule_loop((def.cdr), BgL_sc_nbzd2confs_14zd2))):BgL_sc_nbzd2confs_14zd2);\r
52574             }), (BgL_sc_defzd2loop_6zd2(grammar, (0))))+BgL_sc_nbzd2nts_7zd2));\r
52575             (sc_starters_5 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));\r
52576             (sc_enders_4 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));\r
52577             (sc_predictors_3 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));\r
52578             (sc_steps_2 = (sc_makeVector(nb_confs, false)));\r
52579             (sc_names_1 = (sc_makeVector(nb_confs, false)));\r
52580             (nts = sc_nts_8);\r
52581             (starters = sc_starters_5);\r
52582             (enders = sc_enders_4);\r
52583             (predictors = sc_predictors_3);\r
52584             (steps = sc_steps_2);\r
52585             (names = sc_names_1);\r
52586             (nb_nts = (sc_nts_8.length));\r
52587             (i = (nb_nts-(1)));\r
52588             while ((i>=(0))) {\r
52589                 {\r
52590                     (sc_steps_2[i] = (i-nb_nts));\r
52591                     (sc_names_1[i] = (sc_list((sc_nts_8[i]), (0))));\r
52592                     (sc_enders_4[i] = (sc_list(i)));\r
52593                     (--i);\r
52594                 }\r
52595             }\r
52596             def_loop = function(defs, conf) {\r
52597                 var rule_loop;\r
52598                 var head;\r
52599                 var def;\r
52600                 return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, conf, rule_num) {\r
52601                     var i;\r
52602                     var sc_i_17;\r
52603                     var nt;\r
52604                     var l;\r
52605                     var sc_conf_18;\r
52606                     var sc_i_19;\r
52607                     var rule;\r
52608                     if ((rules instanceof sc_Pair))\r
52609                         {\r
52610                             (rule = (rules.car));\r
52611                             (names[conf] = (sc_list(head, rule_num)));\r
52612                             (sc_i_19 = (ind(head, nts)));\r
52613                             (starters[sc_i_19] = (new sc_Pair(conf, (starters[sc_i_19]))));\r
52614                             (l = rule);\r
52615                             (sc_conf_18 = conf);\r
52616                             while ((l instanceof sc_Pair)) {\r
52617                                 {\r
52618                                     (nt = (l.car));\r
52619                                     (steps[sc_conf_18] = (ind(nt, nts)));\r
52620                                     (sc_i_17 = (ind(nt, nts)));\r
52621                                     (predictors[sc_i_17] = (new sc_Pair(sc_conf_18, (predictors[sc_i_17]))));\r
52622                                     (l = (l.cdr));\r
52623                                     (++sc_conf_18);\r
52624                                 }\r
52625                             }\r
52626                             (steps[sc_conf_18] = ((ind(head, nts))-nb_nts));\r
52627                             (i = (ind(head, nts)));\r
52628                             (enders[i] = (new sc_Pair(sc_conf_18, (enders[i]))));\r
52629                             return (rule_loop((rules.cdr), (sc_conf_18+(1)), (rule_num+(1))));\r
52630                         }\r
52631                     else\r
52632                         return (def_loop((defs.cdr), conf));\r
52633                 }), (rule_loop((def.cdr), conf, (1)))):undefined);\r
52634             };\r
52635             (def_loop(grammar, (sc_nts_8.length)));\r
52636             (parser_descr = [lexer, sc_nts_8, sc_starters_5, sc_enders_4, sc_predictors_3, sc_steps_2, sc_names_1]);\r
52637             return function(input) {\r
52638                 var optrOpnd;\r
52639                 var sc_optrOpnd_20;\r
52640                 var sc_optrOpnd_21;\r
52641                 var sc_optrOpnd_22;\r
52642                 var loop1;\r
52643                 var BgL_sc_stateza2_23za2;\r
52644                 var toks;\r
52645                 var BgL_sc_nbzd2nts_24zd2;\r
52646                 var sc_steps_25;\r
52647                 var sc_enders_26;\r
52648                 var state_num;\r
52649                 var BgL_sc_statesza2_27za2;\r
52650                 var states;\r
52651                 var i;\r
52652                 var conf;\r
52653                 var l;\r
52654                 var tok_nts;\r
52655                 var sc_i_28;\r
52656                 var sc_i_29;\r
52657                 var l1;\r
52658                 var l2;\r
52659                 var tok;\r
52660                 var tail1129;\r
52661                 var L1125;\r
52662                 var goal_enders;\r
52663                 var BgL_sc_statesza2_30za2;\r
52664                 var BgL_sc_nbzd2nts_31zd2;\r
52665                 var BgL_sc_nbzd2confs_32zd2;\r
52666                 var nb_toks;\r
52667                 var goal_starters;\r
52668                 var sc_states_33;\r
52669                 var BgL_sc_nbzd2confs_34zd2;\r
52670                 var BgL_sc_nbzd2toks_35zd2;\r
52671                 var sc_toks_36;\r
52672                 var falseHead1128;\r
52673                 var sc_names_37;\r
52674                 var sc_steps_38;\r
52675                 var sc_predictors_39;\r
52676                 var sc_enders_40;\r
52677                 var sc_starters_41;\r
52678                 var sc_nts_42;\r
52679                 var lexer;\r
52680                 var sc_ind_43;\r
52681                 var make_states;\r
52682                 var BgL_sc_confzd2setzd2getza2_44za2;\r
52683                 var conf_set_merge_new_bang;\r
52684                 var conf_set_adjoin;\r
52685                 var BgL_sc_confzd2setzd2adjoinza2_45za2;\r
52686                 var BgL_sc_confzd2setzd2adjoinza2za2_46z00;\r
52687                 var conf_set_union;\r
52688                 var forw;\r
52689                 var is_parsed;\r
52690                 var deriv_trees;\r
52691                 var BgL_sc_derivzd2treesza2_47z70;\r
52692                 var nb_deriv_trees;\r
52693                 var BgL_sc_nbzd2derivzd2treesza2_48za2;\r
52694                 {\r
52695                     sc_ind_43 = function(nt, sc_nts_49) {\r
52696                         var i;\r
52697                         {\r
52698                             (i = ((sc_nts_49.length)-(1)));\r
52699                             while (true) {\r
52700                                 if ((i>=(0)))\r
52701                                     if ((sc_isEqual((sc_nts_49[i]), nt)))\r
52702                                         return i;\r
52703                                     else\r
52704                                         (--i);\r
52705                                 else\r
52706                                     return false;\r
52707                             }\r
52708                         }\r
52709                     };\r
52710                     make_states = function(BgL_sc_nbzd2toks_50zd2, BgL_sc_nbzd2confs_51zd2) {\r
52711                         var v;\r
52712                         var i;\r
52713                         var sc_states_52;\r
52714                         {\r
52715                             (sc_states_52 = (sc_makeVector((BgL_sc_nbzd2toks_50zd2+(1)), false)));\r
52716                             (i = BgL_sc_nbzd2toks_50zd2);\r
52717                             while ((i>=(0))) {\r
52718                                 {\r
52719                                     (v = (sc_makeVector((BgL_sc_nbzd2confs_51zd2+(1)), false)));\r
52720                                     (v[(0)] = (-1));\r
52721                                     (sc_states_52[i] = v);\r
52722                                     (--i);\r
52723                                 }\r
52724                             }\r
52725                             return sc_states_52;\r
52726                         }\r
52727                     };\r
52728                     BgL_sc_confzd2setzd2getza2_44za2 = function(state, BgL_sc_statezd2num_53zd2, sc_conf_54) {\r
52729                         var conf_set;\r
52730                         var BgL_sc_confzd2set_55zd2;\r
52731                         return ((BgL_sc_confzd2set_55zd2 = (state[(sc_conf_54+(1))])), ((BgL_sc_confzd2set_55zd2!== false)?BgL_sc_confzd2set_55zd2:((conf_set = (sc_makeVector((BgL_sc_statezd2num_53zd2+(6)), false))), (conf_set[(1)] = (-3)), (conf_set[(2)] = (-1)), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)), (state[(sc_conf_54+(1))] = conf_set), conf_set)));\r
52732                     };\r
52733                     conf_set_merge_new_bang = function(conf_set) {\r
52734                         return ((conf_set[((conf_set[(1)])+(5))] = (conf_set[(4)])), (conf_set[(1)] = (conf_set[(3)])), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)));\r
52735                     };\r
52736                     conf_set_adjoin = function(state, conf_set, sc_conf_56, i) {\r
52737                         var tail;\r
52738                         return ((tail = (conf_set[(3)])), (conf_set[(i+(5))] = (-1)), (conf_set[(tail+(5))] = i), (conf_set[(3)] = i), ((tail<(0))?((conf_set[(0)] = (state[(0)])), (state[(0)] = sc_conf_56)):undefined));\r
52739                     };\r
52740                     BgL_sc_confzd2setzd2adjoinza2_45za2 = function(sc_states_57, BgL_sc_statezd2num_58zd2, l, i) {\r
52741                         var conf_set;\r
52742                         var sc_conf_59;\r
52743                         var l1;\r
52744                         var state;\r
52745                         {\r
52746                             (state = (sc_states_57[BgL_sc_statezd2num_58zd2]));\r
52747                             (l1 = l);\r
52748                             while ((l1 instanceof sc_Pair)) {\r
52749                                 {\r
52750                                     (sc_conf_59 = (l1.car));\r
52751                                     (conf_set = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_58zd2, sc_conf_59)));\r
52752                                     if (((conf_set[(i+(5))])=== false))\r
52753                                         {\r
52754                                             (conf_set_adjoin(state, conf_set, sc_conf_59, i));\r
52755                                             (l1 = (l1.cdr));\r
52756                                         }\r
52757                                     else\r
52758                                         (l1 = (l1.cdr));\r
52759                                 }\r
52760                             }\r
52761                             return undefined;\r
52762                         }\r
52763                     };\r
52764                     BgL_sc_confzd2setzd2adjoinza2za2_46z00 = function(sc_states_60, BgL_sc_statesza2_61za2, BgL_sc_statezd2num_62zd2, sc_conf_63, i) {\r
52765                         var BgL_sc_confzd2setza2_64z70;\r
52766                         var BgL_sc_stateza2_65za2;\r
52767                         var conf_set;\r
52768                         var state;\r
52769                         return ((state = (sc_states_60[BgL_sc_statezd2num_62zd2])), ((((conf_set = (state[(sc_conf_63+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)?((BgL_sc_stateza2_65za2 = (BgL_sc_statesza2_61za2[BgL_sc_statezd2num_62zd2])), (BgL_sc_confzd2setza2_64z70 = (BgL_sc_confzd2setzd2getza2_44za2(BgL_sc_stateza2_65za2, BgL_sc_statezd2num_62zd2, sc_conf_63))), (((BgL_sc_confzd2setza2_64z70[(i+(5))])=== false)?(conf_set_adjoin(BgL_sc_stateza2_65za2, BgL_sc_confzd2setza2_64z70, sc_conf_63, i)):undefined), true):false));\r
52770                     };\r
52771                     conf_set_union = function(state, conf_set, sc_conf_66, other_set) {\r
52772                         var i;\r
52773                         {\r
52774                             (i = (other_set[(2)]));\r
52775                             while ((i>=(0))) {\r
52776                                 if (((conf_set[(i+(5))])=== false))\r
52777                                     {\r
52778                                         (conf_set_adjoin(state, conf_set, sc_conf_66, i));\r
52779                                         (i = (other_set[(i+(5))]));\r
52780                                     }\r
52781                                 else\r
52782                                     (i = (other_set[(i+(5))]));\r
52783                             }\r
52784                             return undefined;\r
52785                         }\r
52786                     };\r
52787                     forw = function(sc_states_67, BgL_sc_statezd2num_68zd2, sc_starters_69, sc_enders_70, sc_predictors_71, sc_steps_72, sc_nts_73) {\r
52788                         var next_set;\r
52789                         var next;\r
52790                         var conf_set;\r
52791                         var ender;\r
52792                         var l;\r
52793                         var starter_set;\r
52794                         var starter;\r
52795                         var sc_l_74;\r
52796                         var sc_loop1_75;\r
52797                         var head;\r
52798                         var BgL_sc_confzd2set_76zd2;\r
52799                         var BgL_sc_statezd2num_77zd2;\r
52800                         var state;\r
52801                         var sc_states_78;\r
52802                         var preds;\r
52803                         var BgL_sc_confzd2set_79zd2;\r
52804                         var step;\r
52805                         var sc_conf_80;\r
52806                         var BgL_sc_nbzd2nts_81zd2;\r
52807                         var sc_state_82;\r
52808                         {\r
52809                             (sc_state_82 = (sc_states_67[BgL_sc_statezd2num_68zd2]));\r
52810                             (BgL_sc_nbzd2nts_81zd2 = (sc_nts_73.length));\r
52811                             while (true) {\r
52812                                 {\r
52813                                     (sc_conf_80 = (sc_state_82[(0)]));\r
52814                                     if ((sc_conf_80>=(0)))\r
52815                                         {\r
52816                                             (step = (sc_steps_72[sc_conf_80]));\r
52817                                             (BgL_sc_confzd2set_79zd2 = (sc_state_82[(sc_conf_80+(1))]));\r
52818                                             (head = (BgL_sc_confzd2set_79zd2[(4)]));\r
52819                                             (sc_state_82[(0)] = (BgL_sc_confzd2set_79zd2[(0)]));\r
52820                                             (conf_set_merge_new_bang(BgL_sc_confzd2set_79zd2));\r
52821                                             if ((step>=(0)))\r
52822                                                 {\r
52823                                                     (sc_l_74 = (sc_starters_69[step]));\r
52824                                                     while ((sc_l_74 instanceof sc_Pair)) {\r
52825                                                         {\r
52826                                                             (starter = (sc_l_74.car));\r
52827                                                             (starter_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, starter)));\r
52828                                                             if (((starter_set[(BgL_sc_statezd2num_68zd2+(5))])=== false))\r
52829                                                                 {\r
52830                                                                     (conf_set_adjoin(sc_state_82, starter_set, starter, BgL_sc_statezd2num_68zd2));\r
52831                                                                     (sc_l_74 = (sc_l_74.cdr));\r
52832                                                                 }\r
52833                                                             else\r
52834                                                                 (sc_l_74 = (sc_l_74.cdr));\r
52835                                                         }\r
52836                                                     }\r
52837                                                     (l = (sc_enders_70[step]));\r
52838                                                     while ((l instanceof sc_Pair)) {\r
52839                                                         {\r
52840                                                             (ender = (l.car));\r
52841                                                             if ((((conf_set = (sc_state_82[(ender+(1))])), ((conf_set!== false)?(conf_set[(BgL_sc_statezd2num_68zd2+(5))]):false))!== false))\r
52842                                                                 {\r
52843                                                                     (next = (sc_conf_80+(1)));\r
52844                                                                     (next_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, next)));\r
52845                                                                     (conf_set_union(sc_state_82, next_set, next, BgL_sc_confzd2set_79zd2));\r
52846                                                                     (l = (l.cdr));\r
52847                                                                 }\r
52848                                                             else\r
52849                                                                 (l = (l.cdr));\r
52850                                                         }\r
52851                                                     }\r
52852                                                 }\r
52853                                             else\r
52854                                                 {\r
52855                                                     (preds = (sc_predictors_71[(step+BgL_sc_nbzd2nts_81zd2)]));\r
52856                                                     (sc_states_78 = sc_states_67);\r
52857                                                     (state = sc_state_82);\r
52858                                                     (BgL_sc_statezd2num_77zd2 = BgL_sc_statezd2num_68zd2);\r
52859                                                     (BgL_sc_confzd2set_76zd2 = BgL_sc_confzd2set_79zd2);\r
52860                                                     sc_loop1_75 = function(l) {\r
52861                                                         var sc_state_83;\r
52862                                                         var BgL_sc_nextzd2set_84zd2;\r
52863                                                         var sc_next_85;\r
52864                                                         var pred_set;\r
52865                                                         var i;\r
52866                                                         var pred;\r
52867                                                         if ((l instanceof sc_Pair))\r
52868                                                             {\r
52869                                                                 (pred = (l.car));\r
52870                                                                 (i = head);\r
52871                                                                 while ((i>=(0))) {\r
52872                                                                     {\r
52873                                                                         (pred_set = ((sc_state_83 = (sc_states_78[i])), (sc_state_83[(pred+(1))])));\r
52874                                                                         if ((pred_set!== false))\r
52875                                                                             {\r
52876                                                                                 (sc_next_85 = (pred+(1)));\r
52877                                                                                 (BgL_sc_nextzd2set_84zd2 = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_77zd2, sc_next_85)));\r
52878                                                                                 (conf_set_union(state, BgL_sc_nextzd2set_84zd2, sc_next_85, pred_set));\r
52879                                                                             }\r
52880                                                                         (i = (BgL_sc_confzd2set_76zd2[(i+(5))]));\r
52881                                                                     }\r
52882                                                                 }\r
52883                                                                 return (sc_loop1_75((l.cdr)));\r
52884                                                             }\r
52885                                                         else\r
52886                                                             return undefined;\r
52887                                                     };\r
52888                                                     (sc_loop1_75(preds));\r
52889                                                 }\r
52890                                         }\r
52891                                     else\r
52892                                         return undefined;\r
52893                                 }\r
52894                             }\r
52895                         }\r
52896                     };\r
52897                     is_parsed = function(nt, i, j, sc_nts_86, sc_enders_87, sc_states_88) {\r
52898                         var conf_set;\r
52899                         var state;\r
52900                         var sc_conf_89;\r
52901                         var l;\r
52902                         var BgL_sc_ntza2_90za2;\r
52903                         {\r
52904                             (BgL_sc_ntza2_90za2 = (sc_ind_43(nt, sc_nts_86)));\r
52905                             if ((BgL_sc_ntza2_90za2!== false))\r
52906                                 {\r
52907                                     (sc_nts_86.length);\r
52908                                     (l = (sc_enders_87[BgL_sc_ntza2_90za2]));\r
52909                                     while (true) {\r
52910                                         if ((l instanceof sc_Pair))\r
52911                                             {\r
52912                                                 (sc_conf_89 = (l.car));\r
52913                                                 if ((((state = (sc_states_88[j])), (conf_set = (state[(sc_conf_89+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))\r
52914                                                     return true;\r
52915                                                 else\r
52916                                                     (l = (l.cdr));\r
52917                                             }\r
52918                                         else\r
52919                                             return false;\r
52920                                     }\r
52921                                 }\r
52922                             else\r
52923                                 return false;\r
52924                         }\r
52925                     };\r
52926                     deriv_trees = function(sc_conf_91, i, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2) {\r
52927                         var sc_loop1_98;\r
52928                         var prev;\r
52929                         var name;\r
52930                         return ((name = (sc_names_94[sc_conf_91])), ((name!== false)?((sc_conf_91<BgL_sc_nbzd2nts_97zd2)?(sc_list((sc_list(name, ((sc_toks_95[i]).car))))):(sc_list((sc_list(name))))):((prev = (sc_conf_91-(1))), (sc_loop1_98 = function(l1, l2) {\r
52931                             var loop2;\r
52932                             var ender_set;\r
52933                             var state;\r
52934                             var ender;\r
52935                             var l1;\r
52936                             var l2;\r
52937                             while (true) {\r
52938                                 if ((l1 instanceof sc_Pair))\r
52939                                     {\r
52940                                         (ender = (l1.car));\r
52941                                         (ender_set = ((state = (sc_states_96[j])), (state[(ender+(1))])));\r
52942                                         if ((ender_set!== false))\r
52943                                             {\r
52944                                                 loop2 = function(k, l2) {\r
52945                                                     var loop3;\r
52946                                                     var ender_trees;\r
52947                                                     var prev_trees;\r
52948                                                     var conf_set;\r
52949                                                     var sc_state_99;\r
52950                                                     var k;\r
52951                                                     var l2;\r
52952                                                     while (true) {\r
52953                                                         if ((k>=(0)))\r
52954                                                             if (((k>=i)&&(((sc_state_99 = (sc_states_96[k])), (conf_set = (sc_state_99[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))\r
52955                                                                 {\r
52956                                                                     (prev_trees = (deriv_trees(prev, i, k, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));\r
52957                                                                     (ender_trees = (deriv_trees(ender, k, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));\r
52958                                                                     loop3 = function(l3, l2) {\r
52959                                                                         var l4;\r
52960                                                                         var sc_l2_100;\r
52961                                                                         var ender_tree;\r
52962                                                                         if ((l3 instanceof sc_Pair))\r
52963                                                                             {\r
52964                                                                                 (ender_tree = (sc_list((l3.car))));\r
52965                                                                                 (l4 = prev_trees);\r
52966                                                                                 (sc_l2_100 = l2);\r
52967                                                                                 while ((l4 instanceof sc_Pair)) {\r
52968                                                                                     {\r
52969                                                                                         (sc_l2_100 = (new sc_Pair((sc_append((l4.car), ender_tree)), sc_l2_100)));\r
52970                                                                                         (l4 = (l4.cdr));\r
52971                                                                                     }\r
52972                                                                                 }\r
52973                                                                                 return (loop3((l3.cdr), sc_l2_100));\r
52974                                                                             }\r
52975                                                                         else\r
52976                                                                             return (loop2((ender_set[(k+(5))]), l2));\r
52977                                                                     };\r
52978                                                                     return (loop3(ender_trees, l2));\r
52979                                                                 }\r
52980                                                             else\r
52981                                                                 (k = (ender_set[(k+(5))]));\r
52982                                                         else\r
52983                                                             return (sc_loop1_98((l1.cdr), l2));\r
52984                                                     }\r
52985                                                 };\r
52986                                                 return (loop2((ender_set[(2)]), l2));\r
52987                                             }\r
52988                                         else\r
52989                                             (l1 = (l1.cdr));\r
52990                                     }\r
52991                                 else\r
52992                                     return l2;\r
52993                             }\r
52994                         }), (sc_loop1_98((sc_enders_92[(sc_steps_93[prev])]), null)))));\r
52995                     };\r
52996                     BgL_sc_derivzd2treesza2_47z70 = function(nt, i, j, sc_nts_101, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106) {\r
52997                         var conf_set;\r
52998                         var state;\r
52999                         var sc_conf_107;\r
53000                         var l;\r
53001                         var trees;\r
53002                         var BgL_sc_nbzd2nts_108zd2;\r
53003                         var BgL_sc_ntza2_109za2;\r
53004                         {\r
53005                             (BgL_sc_ntza2_109za2 = (sc_ind_43(nt, sc_nts_101)));\r
53006                             if ((BgL_sc_ntza2_109za2!== false))\r
53007                                 {\r
53008                                     (BgL_sc_nbzd2nts_108zd2 = (sc_nts_101.length));\r
53009                                     (l = (sc_enders_102[BgL_sc_ntza2_109za2]));\r
53010                                     (trees = null);\r
53011                                     while ((l instanceof sc_Pair)) {\r
53012                                         {\r
53013                                             (sc_conf_107 = (l.car));\r
53014                                             if ((((state = (sc_states_106[j])), (conf_set = (state[(sc_conf_107+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))\r
53015                                                 {\r
53016                                                     (l = (l.cdr));\r
53017                                                     (trees = (sc_append((deriv_trees(sc_conf_107, i, j, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106, BgL_sc_nbzd2nts_108zd2)), trees)));\r
53018                                                 }\r
53019                                             else\r
53020                                                 (l = (l.cdr));\r
53021                                         }\r
53022                                     }\r
53023                                     return trees;\r
53024                                 }\r
53025                             else\r
53026                                 return false;\r
53027                         }\r
53028                     };\r
53029                     nb_deriv_trees = function(sc_conf_110, i, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2) {\r
53030                         var sc_loop1_116;\r
53031                         var tmp1124;\r
53032                         var prev;\r
53033                         return ((prev = (sc_conf_110-(1))), ((((tmp1124 = (sc_conf_110<BgL_sc_nbzd2nts_115zd2)), ((tmp1124!== false)?tmp1124:((sc_steps_112[prev])<(0))))!== false)?(1):((sc_loop1_116 = function(l, sc_n_118) {\r
53034                             var nb_ender_trees;\r
53035                             var nb_prev_trees;\r
53036                             var conf_set;\r
53037                             var state;\r
53038                             var k;\r
53039                             var n;\r
53040                             var ender_set;\r
53041                             var sc_state_117;\r
53042                             var ender;\r
53043                             var l;\r
53044                             var sc_n_118;\r
53045                             while (true) {\r
53046                                 if ((l instanceof sc_Pair))\r
53047                                     {\r
53048                                         (ender = (l.car));\r
53049                                         (ender_set = ((sc_state_117 = (sc_states_114[j])), (sc_state_117[(ender+(1))])));\r
53050                                         if ((ender_set!== false))\r
53051                                             {\r
53052                                                 (k = (ender_set[(2)]));\r
53053                                                 (n = sc_n_118);\r
53054                                                 while ((k>=(0))) {\r
53055                                                     if (((k>=i)&&(((state = (sc_states_114[k])), (conf_set = (state[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))\r
53056                                                         {\r
53057                                                             (nb_prev_trees = (nb_deriv_trees(prev, i, k, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));\r
53058                                                             (nb_ender_trees = (nb_deriv_trees(ender, k, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));\r
53059                                                             (k = (ender_set[(k+(5))]));\r
53060                                                             (n +=(nb_prev_trees*nb_ender_trees));\r
53061                                                         }\r
53062                                                     else\r
53063                                                         (k = (ender_set[(k+(5))]));\r
53064                                                 }\r
53065                                                 return (sc_loop1_116((l.cdr), n));\r
53066                                             }\r
53067                                         else\r
53068                                             (l = (l.cdr));\r
53069                                     }\r
53070                                 else\r
53071                                     return sc_n_118;\r
53072                             }\r
53073                         }), (sc_loop1_116((sc_enders_111[(sc_steps_112[prev])]), (0))))));\r
53074                     };\r
53075                     BgL_sc_nbzd2derivzd2treesza2_48za2 = function(nt, i, j, sc_nts_119, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123) {\r
53076                         var conf_set;\r
53077                         var state;\r
53078                         var sc_conf_124;\r
53079                         var l;\r
53080                         var nb_trees;\r
53081                         var BgL_sc_nbzd2nts_125zd2;\r
53082                         var BgL_sc_ntza2_126za2;\r
53083                         {\r
53084                             (BgL_sc_ntza2_126za2 = (sc_ind_43(nt, sc_nts_119)));\r
53085                             if ((BgL_sc_ntza2_126za2!== false))\r
53086                                 {\r
53087                                     (BgL_sc_nbzd2nts_125zd2 = (sc_nts_119.length));\r
53088                                     (l = (sc_enders_120[BgL_sc_ntza2_126za2]));\r
53089                                     (nb_trees = (0));\r
53090                                     while ((l instanceof sc_Pair)) {\r
53091                                         {\r
53092                                             (sc_conf_124 = (l.car));\r
53093                                             if ((((state = (sc_states_123[j])), (conf_set = (state[(sc_conf_124+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))\r
53094                                                 {\r
53095                                                     (l = (l.cdr));\r
53096                                                     (nb_trees = ((nb_deriv_trees(sc_conf_124, i, j, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123, BgL_sc_nbzd2nts_125zd2))+nb_trees));\r
53097                                                 }\r
53098                                             else\r
53099                                                 (l = (l.cdr));\r
53100                                         }\r
53101                                     }\r
53102                                     return nb_trees;\r
53103                                 }\r
53104                             else\r
53105                                 return false;\r
53106                         }\r
53107                     };\r
53108                     (lexer = (parser_descr[(0)]));\r
53109                     (sc_nts_42 = (parser_descr[(1)]));\r
53110                     (sc_starters_41 = (parser_descr[(2)]));\r
53111                     (sc_enders_40 = (parser_descr[(3)]));\r
53112                     (sc_predictors_39 = (parser_descr[(4)]));\r
53113                     (sc_steps_38 = (parser_descr[(5)]));\r
53114                     (sc_names_37 = (parser_descr[(6)]));\r
53115                     (falseHead1128 = (new sc_Pair(null, null)));\r
53116                     (L1125 = (lexer(input)));\r
53117                     (tail1129 = falseHead1128);\r
53118                     while (!(L1125 === null)) {\r
53119                         {\r
53120                             (tok = (L1125.car));\r
53121                             (l1 = (tok.cdr));\r
53122                             (l2 = null);\r
53123                             while ((l1 instanceof sc_Pair)) {\r
53124                                 {\r
53125                                     (sc_i_29 = (sc_ind_43((l1.car), sc_nts_42)));\r
53126                                     if ((sc_i_29!== false))\r
53127                                         {\r
53128                                             (l1 = (l1.cdr));\r
53129                                             (l2 = (new sc_Pair(sc_i_29, l2)));\r
53130                                         }\r
53131                                     else\r
53132                                         (l1 = (l1.cdr));\r
53133                                 }\r
53134                             }\r
53135                             (sc_optrOpnd_22 = (new sc_Pair((tok.car), (sc_reverse(l2)))));\r
53136                             (sc_optrOpnd_21 = (new sc_Pair(sc_optrOpnd_22, null)));\r
53137                             (tail1129.cdr = sc_optrOpnd_21);\r
53138                             (tail1129 = (tail1129.cdr));\r
53139                             (L1125 = (L1125.cdr));\r
53140                         }\r
53141                     }\r
53142                     (sc_optrOpnd_20 = (falseHead1128.cdr));\r
53143                     (sc_toks_36 = (sc_list2vector(sc_optrOpnd_20)));\r
53144                     (BgL_sc_nbzd2toks_35zd2 = (sc_toks_36.length));\r
53145                     (BgL_sc_nbzd2confs_34zd2 = (sc_steps_38.length));\r
53146                     (sc_states_33 = (make_states(BgL_sc_nbzd2toks_35zd2, BgL_sc_nbzd2confs_34zd2)));\r
53147                     (goal_starters = (sc_starters_41[(0)]));\r
53148                     (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (0), goal_starters, (0)));\r
53149                     (forw(sc_states_33, (0), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));\r
53150                     (sc_i_28 = (0));\r
53151                     while ((sc_i_28<BgL_sc_nbzd2toks_35zd2)) {\r
53152                         {\r
53153                             (tok_nts = ((sc_toks_36[sc_i_28]).cdr));\r
53154                             (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (sc_i_28+(1)), tok_nts, sc_i_28));\r
53155                             (forw(sc_states_33, (sc_i_28+(1)), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));\r
53156                             (++sc_i_28);\r
53157                         }\r
53158                     }\r
53159                     (nb_toks = (sc_toks_36.length));\r
53160                     (BgL_sc_nbzd2confs_32zd2 = (sc_steps_38.length));\r
53161                     (BgL_sc_nbzd2nts_31zd2 = (sc_nts_42.length));\r
53162                     (BgL_sc_statesza2_30za2 = (make_states(nb_toks, BgL_sc_nbzd2confs_32zd2)));\r
53163                     (goal_enders = (sc_enders_40[(0)]));\r
53164                     (l = goal_enders);\r
53165                     while ((l instanceof sc_Pair)) {\r
53166                         {\r
53167                             (conf = (l.car));\r
53168                             (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_33, BgL_sc_statesza2_30za2, nb_toks, conf, (0)));\r
53169                             (l = (l.cdr));\r
53170                         }\r
53171                     }\r
53172                     (i = nb_toks);\r
53173                     while ((i>=(0))) {\r
53174                         {\r
53175                             (states = sc_states_33);\r
53176                             (BgL_sc_statesza2_27za2 = BgL_sc_statesza2_30za2);\r
53177                             (state_num = i);\r
53178 \r
53179                             (sc_enders_26 = sc_enders_40);\r
53180                             (sc_steps_25 = sc_steps_38);\r
53181                             (BgL_sc_nbzd2nts_24zd2 = BgL_sc_nbzd2nts_31zd2);\r
53182                             (toks = sc_toks_36);\r
53183                             (BgL_sc_stateza2_23za2 = (BgL_sc_statesza2_30za2[i]));\r
53184                             loop1 = function() {\r
53185                                 var sc_loop1_127;\r
53186                                 var prev;\r
53187                                 var BgL_sc_statesza2_128za2;\r
53188                                 var sc_states_129;\r
53189                                 var j;\r
53190                                 var i;\r
53191                                 var sc_i_130;\r
53192                                 var head;\r
53193                                 var conf_set;\r
53194                                 var sc_conf_131;\r
53195                                 {\r
53196                                     (sc_conf_131 = (BgL_sc_stateza2_23za2[(0)]));\r
53197                                     if ((sc_conf_131>=(0)))\r
53198                                         {\r
53199                                             (conf_set = (BgL_sc_stateza2_23za2[(sc_conf_131+(1))]));\r
53200                                             (head = (conf_set[(4)]));\r
53201                                             (BgL_sc_stateza2_23za2[(0)] = (conf_set[(0)]));\r
53202                                             (conf_set_merge_new_bang(conf_set));\r
53203                                             (sc_i_130 = head);\r
53204                                             while ((sc_i_130>=(0))) {\r
53205                                                 {\r
53206                                                     (i = sc_i_130);\r
53207                                                     (j = state_num);\r
53208                                                     (sc_states_129 = states);\r
53209                                                     (BgL_sc_statesza2_128za2 = BgL_sc_statesza2_27za2);\r
53210                                                     (prev = (sc_conf_131-(1)));\r
53211                                                     if (((sc_conf_131>=BgL_sc_nbzd2nts_24zd2)&&((sc_steps_25[prev])>=(0))))\r
53212                                                         {\r
53213                                                             sc_loop1_127 = function(l) {\r
53214                                                                 var k;\r
53215                                                                 var ender_set;\r
53216                                                                 var state;\r
53217                                                                 var ender;\r
53218                                                                 var l;\r
53219                                                                 while (true) {\r
53220                                                                     if ((l instanceof sc_Pair))\r
53221                                                                         {\r
53222                                                                             (ender = (l.car));\r
53223                                                                             (ender_set = ((state = (sc_states_129[j])), (state[(ender+(1))])));\r
53224                                                                             if ((ender_set!== false))\r
53225                                                                                 {\r
53226                                                                                     (k = (ender_set[(2)]));\r
53227                                                                                     while ((k>=(0))) {\r
53228                                                                                         {\r
53229                                                                                             if ((k>=i))\r
53230                                                                                                 if (((BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, k, prev, i))!== false))\r
53231                                                                                                     (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, j, ender, k));\r
53232                                                                                             (k = (ender_set[(k+(5))]));\r
53233                                                                                         }\r
53234                                                                                     }\r
53235                                                                                     return (sc_loop1_127((l.cdr)));\r
53236                                                                                 }\r
53237                                                                             else\r
53238                                                                                 (l = (l.cdr));\r
53239                                                                         }\r
53240                                                                     else\r
53241                                                                         return undefined;\r
53242                                                                 }\r
53243                                                             };\r
53244                                                             (sc_loop1_127((sc_enders_26[(sc_steps_25[prev])])));\r
53245                                                         }\r
53246                                                     (sc_i_130 = (conf_set[(sc_i_130+(5))]));\r
53247                                                 }\r
53248                                             }\r
53249                                             return (loop1());\r
53250                                         }\r
53251                                     else\r
53252                                         return undefined;\r
53253                                 }\r
53254                             };\r
53255                             (loop1());\r
53256                             (--i);\r
53257                         }\r
53258                     }\r
53259                     (optrOpnd = BgL_sc_statesza2_30za2);\r
53260                     return [sc_nts_42, sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_names_37, sc_toks_36, optrOpnd, is_parsed, BgL_sc_derivzd2treesza2_47z70, BgL_sc_nbzd2derivzd2treesza2_48za2];\r
53261                 }\r
53262             };\r
53263         }\r
53264     };\r
53265     BgL_parsezd2ze3parsedzf3zc2 = function(parse, nt, i, j) {\r
53266         var is_parsed;\r
53267         var states;\r
53268         var enders;\r
53269         var nts;\r
53270         return ((nts = (parse[(0)])), (enders = (parse[(2)])), (states = (parse[(7)])), (is_parsed = (parse[(8)])), (is_parsed(nt, i, j, nts, enders, states)));\r
53271     };\r
53272     BgL_parsezd2ze3treesz31 = function(parse, nt, i, j) {\r
53273         var BgL_sc_derivzd2treesza2_132z70;\r
53274         var states;\r
53275         var toks;\r
53276         var names;\r
53277         var steps;\r
53278         var enders;\r
53279         var nts;\r
53280         return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (names = (parse[(5)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_derivzd2treesza2_132z70 = (parse[(9)])), (BgL_sc_derivzd2treesza2_132z70(nt, i, j, nts, enders, steps, names, toks, states)));\r
53281     };\r
53282     BgL_parsezd2ze3nbzd2treesze3 = function(parse, nt, i, j) {\r
53283         var BgL_sc_nbzd2derivzd2treesza2_133za2;\r
53284         var states;\r
53285         var toks;\r
53286         var steps;\r
53287         var enders;\r
53288         var nts;\r
53289         return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_nbzd2derivzd2treesza2_133za2 = (parse[(10)])), (BgL_sc_nbzd2derivzd2treesza2_133za2(nt, i, j, nts, enders, steps, toks, states)));\r
53290     };\r
53291     test = function(k) {\r
53292         var x;\r
53293         var p;\r
53294         return ((p = (BgL_makezd2parserzd2(const_earley, function(l) {\r
53295             var sc_x_134;\r
53296             var tail1134;\r
53297             var L1130;\r
53298             var falseHead1133;\r
53299             {\r
53300                 (falseHead1133 = (new sc_Pair(null, null)));\r
53301                 (tail1134 = falseHead1133);\r
53302                 (L1130 = l);\r
53303                 while (!(L1130 === null)) {\r
53304                     {\r
53305                         (tail1134.cdr = (new sc_Pair(((sc_x_134 = (L1130.car)), (sc_list(sc_x_134, sc_x_134))), null)));\r
53306                         (tail1134 = (tail1134.cdr));\r
53307                         (L1130 = (L1130.cdr));\r
53308                     }\r
53309                 }\r
53310                 return (falseHead1133.cdr);\r
53311             }\r
53312         }))), (x = (p((sc_vector2list((sc_makeVector(k, "\u1E9Ca"))))))), (sc_length((BgL_parsezd2ze3treesz31(x, "\u1E9Cs", (0), k)))));\r
53313     };\r
53314     BgL_earleyzd2benchmarkzd2 = function() {\r
53315         var args = null;\r
53316         for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {\r
53317             args = sc_cons(arguments[sc_tmp], args);\r
53318         }\r
53319         var k;\r
53320         return ((k = ((args === null)?(7):(args.car))), (BgL_runzd2benchmarkzd2("earley", (1), function() {\r
53321             return (test(k));\r
53322         }, function(result) {\r
53323             return ((sc_display(result)), (sc_newline()), true);\r
53324         })));\r
53325     };\r
53326 }\r
53327 \r
53328 \r
53329 /************* END OF GENERATED CODE *************/\r
53330 // Invoke this function to run a benchmark.\r
53331 // The first argument is a string identifying the benchmark.\r
53332 // The second argument is the number of times to run the benchmark.\r
53333 // The third argument is a function that runs the benchmark.\r
53334 // The fourth argument is a unary function that warns if the result\r
53335 // returned by the benchmark is incorrect.\r
53336 //\r
53337 // Example:\r
53338 // RunBenchmark("new Array()",\r
53339 //              1,\r
53340 //              function () { new Array(1000000); }\r
53341 //              function (v) {\r
53342 //                return (v instanceof Array) && (v.length == 1000000);\r
53343 //              });\r
53344 \r
53345 SC_DEFAULT_OUT = new sc_GenericOutputPort(function(s) {});\r
53346 SC_ERROR_OUT = SC_DEFAULT_OUT;\r
53347 \r
53348 function RunBenchmark(name, count, run, warn) {\r
53349   for (var n = 0; n < count; ++n) {\r
53350     result = run();\r
53351   }\r
53352 }\r
53353 \r
53354 var BgL_runzd2benchmarkzd2 = RunBenchmark;\r
53355 \r
53356 // The ray tracer code in this file is written by Adam Burmister. It\r
53357 // is available in its original form from:\r
53358 //\r
53359 //   http://labs.flog.nz.co/raytracer/\r
53360 //\r
53361 // It has been modified slightly by Google to work as a standalone\r
53362 // benchmark, but the all the computational code remains\r
53363 // untouched. This file also contains a copy of the Prototype\r
53364 // JavaScript framework which is used by the ray tracer.\r
53365 \r
53366 var RayTrace = new BenchmarkSuite('RayTrace', 932666, [\r
53367   new Benchmark('RayTrace', renderScene)\r
53368 ]);\r
53369 \r
53370 \r
53371 // Create dummy objects if we're not running in a browser.\r
53372 if (typeof document == 'undefined') {\r
53373   document = { };\r
53374   window = { opera: null };\r
53375   navigator = { userAgent: null, appVersion: "" };\r
53376 }\r
53377 \r
53378 \r
53379 // ------------------------------------------------------------------------\r
53380 // ------------------------------------------------------------------------\r
53381 \r
53382 \r
53383 /*  Prototype JavaScript framework, version 1.5.0\r
53384  *  (c) 2005-2007 Sam Stephenson\r
53385  *\r
53386  *  Prototype is freely distributable under the terms of an MIT-style license.\r
53387  *  For details, see the Prototype web site: http://prototype.conio.net/\r
53388  *\r
53389 /*--------------------------------------------------------------------------*/\r
53390 \r
53391 //--------------------\r
53392 var Prototype = {\r
53393   Version: '1.5.0',\r
53394   BrowserFeatures: {\r
53395     XPath: !!document.evaluate\r
53396   },\r
53397 \r
53398   ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',\r
53399   emptyFunction: function() {},\r
53400   K: function(x) { return x }\r
53401 }\r
53402 \r
53403 var Class = {\r
53404   create: function() {\r
53405     return function() {\r
53406       this.initialize.apply(this, arguments);\r
53407     }\r
53408   }\r
53409 }\r
53410 \r
53411 var Abstract = new Object();\r
53412 \r
53413 Object.extend = function(destination, source) {\r
53414   for (var property in source) {\r
53415     destination[property] = source[property];\r
53416   }\r
53417   return destination;\r
53418 }\r
53419 \r
53420 Object.extend(Object, {\r
53421   inspect: function(object) {\r
53422     try {\r
53423       if (object === undefined) return 'undefined';\r
53424       if (object === null) return 'null';\r
53425       return object.inspect ? object.inspect() : object.toString();\r
53426     } catch (e) {\r
53427       if (e instanceof RangeError) return '...';\r
53428       throw e;\r
53429     }\r
53430   },\r
53431 \r
53432   keys: function(object) {\r
53433     var keys = [];\r
53434     for (var property in object)\r
53435       keys.push(property);\r
53436     return keys;\r
53437   },\r
53438 \r
53439   values: function(object) {\r
53440     var values = [];\r
53441     for (var property in object)\r
53442       values.push(object[property]);\r
53443     return values;\r
53444   },\r
53445 \r
53446   clone: function(object) {\r
53447     return Object.extend({}, object);\r
53448   }\r
53449 });\r
53450 \r
53451 Function.prototype.bind = function() {\r
53452   var __method = this, args = $A(arguments), object = args.shift();\r
53453   return function() {\r
53454     return __method.apply(object, args.concat($A(arguments)));\r
53455   }\r
53456 }\r
53457 \r
53458 Function.prototype.bindAsEventListener = function(object) {\r
53459   var __method = this, args = $A(arguments), object = args.shift();\r
53460   return function(event) {\r
53461     return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));\r
53462   }\r
53463 }\r
53464 \r
53465 Object.extend(Number.prototype, {\r
53466   toColorPart: function() {\r
53467     var digits = this.toString(16);\r
53468     if (this < 16) return '0' + digits;\r
53469     return digits;\r
53470   },\r
53471 \r
53472   succ: function() {\r
53473     return this + 1;\r
53474   },\r
53475 \r
53476   times: function(iterator) {\r
53477     $R(0, this, true).each(iterator);\r
53478     return this;\r
53479   }\r
53480 });\r
53481 \r
53482 var Try = {\r
53483   these: function() {\r
53484     var returnValue;\r
53485 \r
53486     for (var i = 0, length = arguments.length; i < length; i++) {\r
53487       var lambda = arguments[i];\r
53488       try {\r
53489         returnValue = lambda();\r
53490         break;\r
53491       } catch (e) {}\r
53492     }\r
53493 \r
53494     return returnValue;\r
53495   }\r
53496 }\r
53497 \r
53498 /*--------------------------------------------------------------------------*/\r
53499 \r
53500 var PeriodicalExecuter = Class.create();\r
53501 PeriodicalExecuter.prototype = {\r
53502   initialize: function(callback, frequency) {\r
53503     this.callback = callback;\r
53504     this.frequency = frequency;\r
53505     this.currentlyExecuting = false;\r
53506 \r
53507     this.registerCallback();\r
53508   },\r
53509 \r
53510   registerCallback: function() {\r
53511     this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);\r
53512   },\r
53513 \r
53514   stop: function() {\r
53515     if (!this.timer) return;\r
53516     clearInterval(this.timer);\r
53517     this.timer = null;\r
53518   },\r
53519 \r
53520   onTimerEvent: function() {\r
53521     if (!this.currentlyExecuting) {\r
53522       try {\r
53523         this.currentlyExecuting = true;\r
53524         this.callback(this);\r
53525       } finally {\r
53526         this.currentlyExecuting = false;\r
53527       }\r
53528     }\r
53529   }\r
53530 }\r
53531 String.interpret = function(value){\r
53532   return value == null ? '' : String(value);\r
53533 }\r
53534 \r
53535 Object.extend(String.prototype, {\r
53536   gsub: function(pattern, replacement) {\r
53537     var result = '', source = this, match;\r
53538     replacement = arguments.callee.prepareReplacement(replacement);\r
53539 \r
53540     while (source.length > 0) {\r
53541       if (match = source.match(pattern)) {\r
53542         result += source.slice(0, match.index);\r
53543         result += String.interpret(replacement(match));\r
53544         source  = source.slice(match.index + match[0].length);\r
53545       } else {\r
53546         result += source, source = '';\r
53547       }\r
53548     }\r
53549     return result;\r
53550   },\r
53551 \r
53552   sub: function(pattern, replacement, count) {\r
53553     replacement = this.gsub.prepareReplacement(replacement);\r
53554     count = count === undefined ? 1 : count;\r
53555 \r
53556     return this.gsub(pattern, function(match) {\r
53557       if (--count < 0) return match[0];\r
53558       return replacement(match);\r
53559     });\r
53560   },\r
53561 \r
53562   scan: function(pattern, iterator) {\r
53563     this.gsub(pattern, iterator);\r
53564     return this;\r
53565   },\r
53566 \r
53567   truncate: function(length, truncation) {\r
53568     length = length || 30;\r
53569     truncation = truncation === undefined ? '...' : truncation;\r
53570     return this.length > length ?\r
53571       this.slice(0, length - truncation.length) + truncation : this;\r
53572   },\r
53573 \r
53574   strip: function() {\r
53575     return this.replace(/^\s+/, '').replace(/\s+$/, '');\r
53576   },\r
53577 \r
53578   stripTags: function() {\r
53579     return this.replace(/<\/?[^>]+>/gi, '');\r
53580   },\r
53581 \r
53582   stripScripts: function() {\r
53583     return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');\r
53584   },\r
53585 \r
53586   extractScripts: function() {\r
53587     var matchAll = new RegExp(Prototype.ScriptFragment, 'img');\r
53588     var matchOne = new RegExp(Prototype.ScriptFragment, 'im');\r
53589     return (this.match(matchAll) || []).map(function(scriptTag) {\r
53590       return (scriptTag.match(matchOne) || ['', ''])[1];\r
53591     });\r
53592   },\r
53593 \r
53594   evalScripts: function() {\r
53595     return this.extractScripts().map(function(script) { return eval(script) });\r
53596   },\r
53597 \r
53598   escapeHTML: function() {\r
53599     var div = document.createElement('div');\r
53600     var text = document.createTextNode(this);\r
53601     div.appendChild(text);\r
53602     return div.innerHTML;\r
53603   },\r
53604 \r
53605   unescapeHTML: function() {\r
53606     var div = document.createElement('div');\r
53607     div.innerHTML = this.stripTags();\r
53608     return div.childNodes[0] ? (div.childNodes.length > 1 ?\r
53609       $A(div.childNodes).inject('',function(memo,node){ return memo+node.nodeValue }) :\r
53610       div.childNodes[0].nodeValue) : '';\r
53611   },\r
53612 \r
53613   toQueryParams: function(separator) {\r
53614     var match = this.strip().match(/([^?#]*)(#.*)?$/);\r
53615     if (!match) return {};\r
53616 \r
53617     return match[1].split(separator || '&').inject({}, function(hash, pair) {\r
53618       if ((pair = pair.split('='))[0]) {\r
53619         var name = decodeURIComponent(pair[0]);\r
53620         var value = pair[1] ? decodeURIComponent(pair[1]) : undefined;\r
53621 \r
53622         if (hash[name] !== undefined) {\r
53623           if (hash[name].constructor != Array)\r
53624             hash[name] = [hash[name]];\r
53625           if (value) hash[name].push(value);\r
53626         }\r
53627         else hash[name] = value;\r
53628       }\r
53629       return hash;\r
53630     });\r
53631   },\r
53632 \r
53633   toArray: function() {\r
53634     return this.split('');\r
53635   },\r
53636 \r
53637   succ: function() {\r
53638     return this.slice(0, this.length - 1) +\r
53639       String.fromCharCode(this.charCodeAt(this.length - 1) + 1);\r
53640   },\r
53641 \r
53642   camelize: function() {\r
53643     var parts = this.split('-'), len = parts.length;\r
53644     if (len == 1) return parts[0];\r
53645 \r
53646     var camelized = this.charAt(0) == '-'\r
53647       ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)\r
53648       : parts[0];\r
53649 \r
53650     for (var i = 1; i < len; i++)\r
53651       camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);\r
53652 \r
53653     return camelized;\r
53654   },\r
53655 \r
53656   capitalize: function(){\r
53657     return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();\r
53658   },\r
53659 \r
53660   underscore: function() {\r
53661     return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();\r
53662   },\r
53663 \r
53664   dasherize: function() {\r
53665     return this.gsub(/_/,'-');\r
53666   },\r
53667 \r
53668   inspect: function(useDoubleQuotes) {\r
53669     var escapedString = this.replace(/\\/g, '\\\\');\r
53670     if (useDoubleQuotes)\r
53671       return '"' + escapedString.replace(/"/g, '\\"') + '"';\r
53672     else\r
53673       return "'" + escapedString.replace(/'/g, '\\\'') + "'";\r
53674   }\r
53675 });\r
53676 \r
53677 String.prototype.gsub.prepareReplacement = function(replacement) {\r
53678   if (typeof replacement == 'function') return replacement;\r
53679   var template = new Template(replacement);\r
53680   return function(match) { return template.evaluate(match) };\r
53681 }\r
53682 \r
53683 String.prototype.parseQuery = String.prototype.toQueryParams;\r
53684 \r
53685 var Template = Class.create();\r
53686 Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;\r
53687 Template.prototype = {\r
53688   initialize: function(template, pattern) {\r
53689     this.template = template.toString();\r
53690     this.pattern  = pattern || Template.Pattern;\r
53691   },\r
53692 \r
53693   evaluate: function(object) {\r
53694     return this.template.gsub(this.pattern, function(match) {\r
53695       var before = match[1];\r
53696       if (before == '\\') return match[2];\r
53697       return before + String.interpret(object[match[3]]);\r
53698     });\r
53699   }\r
53700 }\r
53701 \r
53702 var $break    = new Object();\r
53703 var $continue = new Object();\r
53704 \r
53705 var Enumerable = {\r
53706   each: function(iterator) {\r
53707     var index = 0;\r
53708     try {\r
53709       this._each(function(value) {\r
53710         try {\r
53711           iterator(value, index++);\r
53712         } catch (e) {\r
53713           if (e != $continue) throw e;\r
53714         }\r
53715       });\r
53716     } catch (e) {\r
53717       if (e != $break) throw e;\r
53718     }\r
53719     return this;\r
53720   },\r
53721 \r
53722   eachSlice: function(number, iterator) {\r
53723     var index = -number, slices = [], array = this.toArray();\r
53724     while ((index += number) < array.length)\r
53725       slices.push(array.slice(index, index+number));\r
53726     return slices.map(iterator);\r
53727   },\r
53728 \r
53729   all: function(iterator) {\r
53730     var result = true;\r
53731     this.each(function(value, index) {\r
53732       result = result && !!(iterator || Prototype.K)(value, index);\r
53733       if (!result) throw $break;\r
53734     });\r
53735     return result;\r
53736   },\r
53737 \r
53738   any: function(iterator) {\r
53739     var result = false;\r
53740     this.each(function(value, index) {\r
53741       if (result = !!(iterator || Prototype.K)(value, index))\r
53742         throw $break;\r
53743     });\r
53744     return result;\r
53745   },\r
53746 \r
53747   collect: function(iterator) {\r
53748     var results = [];\r
53749     this.each(function(value, index) {\r
53750       results.push((iterator || Prototype.K)(value, index));\r
53751     });\r
53752     return results;\r
53753   },\r
53754 \r
53755   detect: function(iterator) {\r
53756     var result;\r
53757     this.each(function(value, index) {\r
53758       if (iterator(value, index)) {\r
53759         result = value;\r
53760         throw $break;\r
53761       }\r
53762     });\r
53763     return result;\r
53764   },\r
53765 \r
53766   findAll: function(iterator) {\r
53767     var results = [];\r
53768     this.each(function(value, index) {\r
53769       if (iterator(value, index))\r
53770         results.push(value);\r
53771     });\r
53772     return results;\r
53773   },\r
53774 \r
53775   grep: function(pattern, iterator) {\r
53776     var results = [];\r
53777     this.each(function(value, index) {\r
53778       var stringValue = value.toString();\r
53779       if (stringValue.match(pattern))\r
53780         results.push((iterator || Prototype.K)(value, index));\r
53781     })\r
53782     return results;\r
53783   },\r
53784 \r
53785   include: function(object) {\r
53786     var found = false;\r
53787     this.each(function(value) {\r
53788       if (value == object) {\r
53789         found = true;\r
53790         throw $break;\r
53791       }\r
53792     });\r
53793     return found;\r
53794   },\r
53795 \r
53796   inGroupsOf: function(number, fillWith) {\r
53797     fillWith = fillWith === undefined ? null : fillWith;\r
53798     return this.eachSlice(number, function(slice) {\r
53799       while(slice.length < number) slice.push(fillWith);\r
53800       return slice;\r
53801     });\r
53802   },\r
53803 \r
53804   inject: function(memo, iterator) {\r
53805     this.each(function(value, index) {\r
53806       memo = iterator(memo, value, index);\r
53807     });\r
53808     return memo;\r
53809   },\r
53810 \r
53811   invoke: function(method) {\r
53812     var args = $A(arguments).slice(1);\r
53813     return this.map(function(value) {\r
53814       return value[method].apply(value, args);\r
53815     });\r
53816   },\r
53817 \r
53818   max: function(iterator) {\r
53819     var result;\r
53820     this.each(function(value, index) {\r
53821       value = (iterator || Prototype.K)(value, index);\r
53822       if (result == undefined || value >= result)\r
53823         result = value;\r
53824     });\r
53825     return result;\r
53826   },\r
53827 \r
53828   min: function(iterator) {\r
53829     var result;\r
53830     this.each(function(value, index) {\r
53831       value = (iterator || Prototype.K)(value, index);\r
53832       if (result == undefined || value < result)\r
53833         result = value;\r
53834     });\r
53835     return result;\r
53836   },\r
53837 \r
53838   partition: function(iterator) {\r
53839     var trues = [], falses = [];\r
53840     this.each(function(value, index) {\r
53841       ((iterator || Prototype.K)(value, index) ?\r
53842         trues : falses).push(value);\r
53843     });\r
53844     return [trues, falses];\r
53845   },\r
53846 \r
53847   pluck: function(property) {\r
53848     var results = [];\r
53849     this.each(function(value, index) {\r
53850       results.push(value[property]);\r
53851     });\r
53852     return results;\r
53853   },\r
53854 \r
53855   reject: function(iterator) {\r
53856     var results = [];\r
53857     this.each(function(value, index) {\r
53858       if (!iterator(value, index))\r
53859         results.push(value);\r
53860     });\r
53861     return results;\r
53862   },\r
53863 \r
53864   sortBy: function(iterator) {\r
53865     return this.map(function(value, index) {\r
53866       return {value: value, criteria: iterator(value, index)};\r
53867     }).sort(function(left, right) {\r
53868       var a = left.criteria, b = right.criteria;\r
53869       return a < b ? -1 : a > b ? 1 : 0;\r
53870     }).pluck('value');\r
53871   },\r
53872 \r
53873   toArray: function() {\r
53874     return this.map();\r
53875   },\r
53876 \r
53877   zip: function() {\r
53878     var iterator = Prototype.K, args = $A(arguments);\r
53879     if (typeof args.last() == 'function')\r
53880       iterator = args.pop();\r
53881 \r
53882     var collections = [this].concat(args).map($A);\r
53883     return this.map(function(value, index) {\r
53884       return iterator(collections.pluck(index));\r
53885     });\r
53886   },\r
53887 \r
53888   size: function() {\r
53889     return this.toArray().length;\r
53890   },\r
53891 \r
53892   inspect: function() {\r
53893     return '#<Enumerable:' + this.toArray().inspect() + '>';\r
53894   }\r
53895 }\r
53896 \r
53897 Object.extend(Enumerable, {\r
53898   map:     Enumerable.collect,\r
53899   find:    Enumerable.detect,\r
53900   select:  Enumerable.findAll,\r
53901   member:  Enumerable.include,\r
53902   entries: Enumerable.toArray\r
53903 });\r
53904 var $A = Array.from = function(iterable) {\r
53905   if (!iterable) return [];\r
53906   if (iterable.toArray) {\r
53907     return iterable.toArray();\r
53908   } else {\r
53909     var results = [];\r
53910     for (var i = 0, length = iterable.length; i < length; i++)\r
53911       results.push(iterable[i]);\r
53912     return results;\r
53913   }\r
53914 }\r
53915 \r
53916 Object.extend(Array.prototype, Enumerable);\r
53917 \r
53918 if (!Array.prototype._reverse)\r
53919   Array.prototype._reverse = Array.prototype.reverse;\r
53920 \r
53921 Object.extend(Array.prototype, {\r
53922   _each: function(iterator) {\r
53923     for (var i = 0, length = this.length; i < length; i++)\r
53924       iterator(this[i]);\r
53925   },\r
53926 \r
53927   clear: function() {\r
53928     this.length = 0;\r
53929     return this;\r
53930   },\r
53931 \r
53932   first: function() {\r
53933     return this[0];\r
53934   },\r
53935 \r
53936   last: function() {\r
53937     return this[this.length - 1];\r
53938   },\r
53939 \r
53940   compact: function() {\r
53941     return this.select(function(value) {\r
53942       return value != null;\r
53943     });\r
53944   },\r
53945 \r
53946   flatten: function() {\r
53947     return this.inject([], function(array, value) {\r
53948       return array.concat(value && value.constructor == Array ?\r
53949         value.flatten() : [value]);\r
53950     });\r
53951   },\r
53952 \r
53953   without: function() {\r
53954     var values = $A(arguments);\r
53955     return this.select(function(value) {\r
53956       return !values.include(value);\r
53957     });\r
53958   },\r
53959 \r
53960   indexOf: function(object) {\r
53961     for (var i = 0, length = this.length; i < length; i++)\r
53962       if (this[i] == object) return i;\r
53963     return -1;\r
53964   },\r
53965 \r
53966   reverse: function(inline) {\r
53967     return (inline !== false ? this : this.toArray())._reverse();\r
53968   },\r
53969 \r
53970   reduce: function() {\r
53971     return this.length > 1 ? this : this[0];\r
53972   },\r
53973 \r
53974   uniq: function() {\r
53975     return this.inject([], function(array, value) {\r
53976       return array.include(value) ? array : array.concat([value]);\r
53977     });\r
53978   },\r
53979 \r
53980   clone: function() {\r
53981     return [].concat(this);\r
53982   },\r
53983 \r
53984   size: function() {\r
53985     return this.length;\r
53986   },\r
53987 \r
53988   inspect: function() {\r
53989     return '[' + this.map(Object.inspect).join(', ') + ']';\r
53990   }\r
53991 });\r
53992 \r
53993 Array.prototype.toArray = Array.prototype.clone;\r
53994 \r
53995 function $w(string){\r
53996   string = string.strip();\r
53997   return string ? string.split(/\s+/) : [];\r
53998 }\r
53999 \r
54000 if(window.opera){\r
54001   Array.prototype.concat = function(){\r
54002     var array = [];\r
54003     for(var i = 0, length = this.length; i < length; i++) array.push(this[i]);\r
54004     for(var i = 0, length = arguments.length; i < length; i++) {\r
54005       if(arguments[i].constructor == Array) {\r
54006         for(var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)\r
54007           array.push(arguments[i][j]);\r
54008       } else {\r
54009         array.push(arguments[i]);\r
54010       }\r
54011     }\r
54012     return array;\r
54013   }\r
54014 }\r
54015 var Hash = function(obj) {\r
54016   Object.extend(this, obj || {});\r
54017 };\r
54018 \r
54019 Object.extend(Hash, {\r
54020   toQueryString: function(obj) {\r
54021     var parts = [];\r
54022 \r
54023           this.prototype._each.call(obj, function(pair) {\r
54024       if (!pair.key) return;\r
54025 \r
54026       if (pair.value && pair.value.constructor == Array) {\r
54027         var values = pair.value.compact();\r
54028         if (values.length < 2) pair.value = values.reduce();\r
54029         else {\r
54030                 key = encodeURIComponent(pair.key);\r
54031           values.each(function(value) {\r
54032             value = value != undefined ? encodeURIComponent(value) : '';\r
54033             parts.push(key + '=' + encodeURIComponent(value));\r
54034           });\r
54035           return;\r
54036         }\r
54037       }\r
54038       if (pair.value == undefined) pair[1] = '';\r
54039       parts.push(pair.map(encodeURIComponent).join('='));\r
54040           });\r
54041 \r
54042     return parts.join('&');\r
54043   }\r
54044 });\r
54045 \r
54046 Object.extend(Hash.prototype, Enumerable);\r
54047 Object.extend(Hash.prototype, {\r
54048   _each: function(iterator) {\r
54049     for (var key in this) {\r
54050       var value = this[key];\r
54051       if (value && value == Hash.prototype[key]) continue;\r
54052 \r
54053       var pair = [key, value];\r
54054       pair.key = key;\r
54055       pair.value = value;\r
54056       iterator(pair);\r
54057     }\r
54058   },\r
54059 \r
54060   keys: function() {\r
54061     return this.pluck('key');\r
54062   },\r
54063 \r
54064   values: function() {\r
54065     return this.pluck('value');\r
54066   },\r
54067 \r
54068   merge: function(hash) {\r
54069     return $H(hash).inject(this, function(mergedHash, pair) {\r
54070       mergedHash[pair.key] = pair.value;\r
54071       return mergedHash;\r
54072     });\r
54073   },\r
54074 \r
54075   remove: function() {\r
54076     var result;\r
54077     for(var i = 0, length = arguments.length; i < length; i++) {\r
54078       var value = this[arguments[i]];\r
54079       if (value !== undefined){\r
54080         if (result === undefined) result = value;\r
54081         else {\r
54082           if (result.constructor != Array) result = [result];\r
54083           result.push(value)\r
54084         }\r
54085       }\r
54086       delete this[arguments[i]];\r
54087     }\r
54088     return result;\r
54089   },\r
54090 \r
54091   toQueryString: function() {\r
54092     return Hash.toQueryString(this);\r
54093   },\r
54094 \r
54095   inspect: function() {\r
54096     return '#<Hash:{' + this.map(function(pair) {\r
54097       return pair.map(Object.inspect).join(': ');\r
54098     }).join(', ') + '}>';\r
54099   }\r
54100 });\r
54101 \r
54102 function $H(object) {\r
54103   if (object && object.constructor == Hash) return object;\r
54104   return new Hash(object);\r
54105 };\r
54106 ObjectRange = Class.create();\r
54107 Object.extend(ObjectRange.prototype, Enumerable);\r
54108 Object.extend(ObjectRange.prototype, {\r
54109   initialize: function(start, end, exclusive) {\r
54110     this.start = start;\r
54111     this.end = end;\r
54112     this.exclusive = exclusive;\r
54113   },\r
54114 \r
54115   _each: function(iterator) {\r
54116     var value = this.start;\r
54117     while (this.include(value)) {\r
54118       iterator(value);\r
54119       value = value.succ();\r
54120     }\r
54121   },\r
54122 \r
54123   include: function(value) {\r
54124     if (value < this.start)\r
54125       return false;\r
54126     if (this.exclusive)\r
54127       return value < this.end;\r
54128     return value <= this.end;\r
54129   }\r
54130 });\r
54131 \r
54132 var $R = function(start, end, exclusive) {\r
54133   return new ObjectRange(start, end, exclusive);\r
54134 }\r
54135 \r
54136 var Ajax = {\r
54137   getTransport: function() {\r
54138     return Try.these(\r
54139       function() {return new XMLHttpRequest()},\r
54140       function() {return new ActiveXObject('Msxml2.XMLHTTP')},\r
54141       function() {return new ActiveXObject('Microsoft.XMLHTTP')}\r
54142     ) || false;\r
54143   },\r
54144 \r
54145   activeRequestCount: 0\r
54146 }\r
54147 \r
54148 Ajax.Responders = {\r
54149   responders: [],\r
54150 \r
54151   _each: function(iterator) {\r
54152     this.responders._each(iterator);\r
54153   },\r
54154 \r
54155   register: function(responder) {\r
54156     if (!this.include(responder))\r
54157       this.responders.push(responder);\r
54158   },\r
54159 \r
54160   unregister: function(responder) {\r
54161     this.responders = this.responders.without(responder);\r
54162   },\r
54163 \r
54164   dispatch: function(callback, request, transport, json) {\r
54165     this.each(function(responder) {\r
54166       if (typeof responder[callback] == 'function') {\r
54167         try {\r
54168           responder[callback].apply(responder, [request, transport, json]);\r
54169         } catch (e) {}\r
54170       }\r
54171     });\r
54172   }\r
54173 };\r
54174 \r
54175 Object.extend(Ajax.Responders, Enumerable);\r
54176 \r
54177 Ajax.Responders.register({\r
54178   onCreate: function() {\r
54179     Ajax.activeRequestCount++;\r
54180   },\r
54181   onComplete: function() {\r
54182     Ajax.activeRequestCount--;\r
54183   }\r
54184 });\r
54185 \r
54186 Ajax.Base = function() {};\r
54187 Ajax.Base.prototype = {\r
54188   setOptions: function(options) {\r
54189     this.options = {\r
54190       method:       'post',\r
54191       asynchronous: true,\r
54192       contentType:  'application/x-www-form-urlencoded',\r
54193       encoding:     'UTF-8',\r
54194       parameters:   ''\r
54195     }\r
54196     Object.extend(this.options, options || {});\r
54197 \r
54198     this.options.method = this.options.method.toLowerCase();\r
54199     if (typeof this.options.parameters == 'string')\r
54200       this.options.parameters = this.options.parameters.toQueryParams();\r
54201   }\r
54202 }\r
54203 \r
54204 Ajax.Request = Class.create();\r
54205 Ajax.Request.Events =\r
54206   ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];\r
54207 \r
54208 Ajax.Request.prototype = Object.extend(new Ajax.Base(), {\r
54209   _complete: false,\r
54210 \r
54211   initialize: function(url, options) {\r
54212     this.transport = Ajax.getTransport();\r
54213     this.setOptions(options);\r
54214     this.request(url);\r
54215   },\r
54216 \r
54217   request: function(url) {\r
54218     this.url = url;\r
54219     this.method = this.options.method;\r
54220     var params = this.options.parameters;\r
54221 \r
54222     if (!['get', 'post'].include(this.method)) {\r
54223       // simulate other verbs over post\r
54224       params['_method'] = this.method;\r
54225       this.method = 'post';\r
54226     }\r
54227 \r
54228     params = Hash.toQueryString(params);\r
54229     if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='\r
54230 \r
54231     // when GET, append parameters to URL\r
54232     if (this.method == 'get' && params)\r
54233       this.url += (this.url.indexOf('?') > -1 ? '&' : '?') + params;\r
54234 \r
54235     try {\r
54236       Ajax.Responders.dispatch('onCreate', this, this.transport);\r
54237 \r
54238       this.transport.open(this.method.toUpperCase(), this.url,\r
54239         this.options.asynchronous);\r
54240 \r
54241       if (this.options.asynchronous)\r
54242         setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);\r
54243 \r
54244       this.transport.onreadystatechange = this.onStateChange.bind(this);\r
54245       this.setRequestHeaders();\r
54246 \r
54247       var body = this.method == 'post' ? (this.options.postBody || params) : null;\r
54248 \r
54249       this.transport.send(body);\r
54250 \r
54251       /* Force Firefox to handle ready state 4 for synchronous requests */\r
54252       if (!this.options.asynchronous && this.transport.overrideMimeType)\r
54253         this.onStateChange();\r
54254 \r
54255     }\r
54256     catch (e) {\r
54257       this.dispatchException(e);\r
54258     }\r
54259   },\r
54260 \r
54261   onStateChange: function() {\r
54262     var readyState = this.transport.readyState;\r
54263     if (readyState > 1 && !((readyState == 4) && this._complete))\r
54264       this.respondToReadyState(this.transport.readyState);\r
54265   },\r
54266 \r
54267   setRequestHeaders: function() {\r
54268     var headers = {\r
54269       'X-Requested-With': 'XMLHttpRequest',\r
54270       'X-Prototype-Version': Prototype.Version,\r
54271       'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'\r
54272     };\r
54273 \r
54274     if (this.method == 'post') {\r
54275       headers['Content-type'] = this.options.contentType +\r
54276         (this.options.encoding ? '; charset=' + this.options.encoding : '');\r
54277 \r
54278       /* Force "Connection: close" for older Mozilla browsers to work\r
54279        * around a bug where XMLHttpRequest sends an incorrect\r
54280        * Content-length header. See Mozilla Bugzilla #246651.\r
54281        */\r
54282       if (this.transport.overrideMimeType &&\r
54283           (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)\r
54284             headers['Connection'] = 'close';\r
54285     }\r
54286 \r
54287     // user-defined headers\r
54288     if (typeof this.options.requestHeaders == 'object') {\r
54289       var extras = this.options.requestHeaders;\r
54290 \r
54291       if (typeof extras.push == 'function')\r
54292         for (var i = 0, length = extras.length; i < length; i += 2)\r
54293           headers[extras[i]] = extras[i+1];\r
54294       else\r
54295         $H(extras).each(function(pair) { headers[pair.key] = pair.value });\r
54296     }\r
54297 \r
54298     for (var name in headers)\r
54299       this.transport.setRequestHeader(name, headers[name]);\r
54300   },\r
54301 \r
54302   success: function() {\r
54303     return !this.transport.status\r
54304         || (this.transport.status >= 200 && this.transport.status < 300);\r
54305   },\r
54306 \r
54307   respondToReadyState: function(readyState) {\r
54308     var state = Ajax.Request.Events[readyState];\r
54309     var transport = this.transport, json = this.evalJSON();\r
54310 \r
54311     if (state == 'Complete') {\r
54312       try {\r
54313         this._complete = true;\r
54314         (this.options['on' + this.transport.status]\r
54315          || this.options['on' + (this.success() ? 'Success' : 'Failure')]\r
54316          || Prototype.emptyFunction)(transport, json);\r
54317       } catch (e) {\r
54318         this.dispatchException(e);\r
54319       }\r
54320 \r
54321       if ((this.getHeader('Content-type') || 'text/javascript').strip().\r
54322         match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))\r
54323           this.evalResponse();\r
54324     }\r
54325 \r
54326     try {\r
54327       (this.options['on' + state] || Prototype.emptyFunction)(transport, json);\r
54328       Ajax.Responders.dispatch('on' + state, this, transport, json);\r
54329     } catch (e) {\r
54330       this.dispatchException(e);\r
54331     }\r
54332 \r
54333     if (state == 'Complete') {\r
54334       // avoid memory leak in MSIE: clean up\r
54335       this.transport.onreadystatechange = Prototype.emptyFunction;\r
54336     }\r
54337   },\r
54338 \r
54339   getHeader: function(name) {\r
54340     try {\r
54341       return this.transport.getResponseHeader(name);\r
54342     } catch (e) { return null }\r
54343   },\r
54344 \r
54345   evalJSON: function() {\r
54346     try {\r
54347       var json = this.getHeader('X-JSON');\r
54348       return json ? eval('(' + json + ')') : null;\r
54349     } catch (e) { return null }\r
54350   },\r
54351 \r
54352   evalResponse: function() {\r
54353     try {\r
54354       return eval(this.transport.responseText);\r
54355     } catch (e) {\r
54356       this.dispatchException(e);\r
54357     }\r
54358   },\r
54359 \r
54360   dispatchException: function(exception) {\r
54361     (this.options.onException || Prototype.emptyFunction)(this, exception);\r
54362     Ajax.Responders.dispatch('onException', this, exception);\r
54363   }\r
54364 });\r
54365 \r
54366 Ajax.Updater = Class.create();\r
54367 \r
54368 Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {\r
54369   initialize: function(container, url, options) {\r
54370     this.container = {\r
54371       success: (container.success || container),\r
54372       failure: (container.failure || (container.success ? null : container))\r
54373     }\r
54374 \r
54375     this.transport = Ajax.getTransport();\r
54376     this.setOptions(options);\r
54377 \r
54378     var onComplete = this.options.onComplete || Prototype.emptyFunction;\r
54379     this.options.onComplete = (function(transport, param) {\r
54380       this.updateContent();\r
54381       onComplete(transport, param);\r
54382     }).bind(this);\r
54383 \r
54384     this.request(url);\r
54385   },\r
54386 \r
54387   updateContent: function() {\r
54388     var receiver = this.container[this.success() ? 'success' : 'failure'];\r
54389     var response = this.transport.responseText;\r
54390 \r
54391     if (!this.options.evalScripts) response = response.stripScripts();\r
54392 \r
54393     if (receiver = $(receiver)) {\r
54394       if (this.options.insertion)\r
54395         new this.options.insertion(receiver, response);\r
54396       else\r
54397         receiver.update(response);\r
54398     }\r
54399 \r
54400     if (this.success()) {\r
54401       if (this.onComplete)\r
54402         setTimeout(this.onComplete.bind(this), 10);\r
54403     }\r
54404   }\r
54405 });\r
54406 \r
54407 Ajax.PeriodicalUpdater = Class.create();\r
54408 Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {\r
54409   initialize: function(container, url, options) {\r
54410     this.setOptions(options);\r
54411     this.onComplete = this.options.onComplete;\r
54412 \r
54413     this.frequency = (this.options.frequency || 2);\r
54414     this.decay = (this.options.decay || 1);\r
54415 \r
54416     this.updater = {};\r
54417     this.container = container;\r
54418     this.url = url;\r
54419 \r
54420     this.start();\r
54421   },\r
54422 \r
54423   start: function() {\r
54424     this.options.onComplete = this.updateComplete.bind(this);\r
54425     this.onTimerEvent();\r
54426   },\r
54427 \r
54428   stop: function() {\r
54429     this.updater.options.onComplete = undefined;\r
54430     clearTimeout(this.timer);\r
54431     (this.onComplete || Prototype.emptyFunction).apply(this, arguments);\r
54432   },\r
54433 \r
54434   updateComplete: function(request) {\r
54435     if (this.options.decay) {\r
54436       this.decay = (request.responseText == this.lastText ?\r
54437         this.decay * this.options.decay : 1);\r
54438 \r
54439       this.lastText = request.responseText;\r
54440     }\r
54441     this.timer = setTimeout(this.onTimerEvent.bind(this),\r
54442       this.decay * this.frequency * 1000);\r
54443   },\r
54444 \r
54445   onTimerEvent: function() {\r
54446     this.updater = new Ajax.Updater(this.container, this.url, this.options);\r
54447   }\r
54448 });\r
54449 function $(element) {\r
54450   if (arguments.length > 1) {\r
54451     for (var i = 0, elements = [], length = arguments.length; i < length; i++)\r
54452       elements.push($(arguments[i]));\r
54453     return elements;\r
54454   }\r
54455   if (typeof element == 'string')\r
54456     element = document.getElementById(element);\r
54457   return Element.extend(element);\r
54458 }\r
54459 \r
54460 if (Prototype.BrowserFeatures.XPath) {\r
54461   document._getElementsByXPath = function(expression, parentElement) {\r
54462     var results = [];\r
54463     var query = document.evaluate(expression, $(parentElement) || document,\r
54464       null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\r
54465     for (var i = 0, length = query.snapshotLength; i < length; i++)\r
54466       results.push(query.snapshotItem(i));\r
54467     return results;\r
54468   };\r
54469 }\r
54470 \r
54471 document.getElementsByClassName = function(className, parentElement) {\r
54472   if (Prototype.BrowserFeatures.XPath) {\r
54473     var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";\r
54474     return document._getElementsByXPath(q, parentElement);\r
54475   } else {\r
54476     var children = ($(parentElement) || document.body).getElementsByTagName('*');\r
54477     var elements = [], child;\r
54478     for (var i = 0, length = children.length; i < length; i++) {\r
54479       child = children[i];\r
54480       if (Element.hasClassName(child, className))\r
54481         elements.push(Element.extend(child));\r
54482     }\r
54483     return elements;\r
54484   }\r
54485 };\r
54486 \r
54487 /*--------------------------------------------------------------------------*/\r
54488 \r
54489 if (!window.Element)\r
54490   var Element = new Object();\r
54491 \r
54492 Element.extend = function(element) {\r
54493   if (!element || _nativeExtensions || element.nodeType == 3) return element;\r
54494 \r
54495   if (!element._extended && element.tagName && element != window) {\r
54496     var methods = Object.clone(Element.Methods), cache = Element.extend.cache;\r
54497 \r
54498     if (element.tagName == 'FORM')\r
54499       Object.extend(methods, Form.Methods);\r
54500     if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))\r
54501       Object.extend(methods, Form.Element.Methods);\r
54502 \r
54503     Object.extend(methods, Element.Methods.Simulated);\r
54504 \r
54505     for (var property in methods) {\r
54506       var value = methods[property];\r
54507       if (typeof value == 'function' && !(property in element))\r
54508         element[property] = cache.findOrStore(value);\r
54509     }\r
54510   }\r
54511 \r
54512   element._extended = true;\r
54513   return element;\r
54514 };\r
54515 \r
54516 Element.extend.cache = {\r
54517   findOrStore: function(value) {\r
54518     return this[value] = this[value] || function() {\r
54519       return value.apply(null, [this].concat($A(arguments)));\r
54520     }\r
54521   }\r
54522 };\r
54523 \r
54524 Element.Methods = {\r
54525   visible: function(element) {\r
54526     return $(element).style.display != 'none';\r
54527   },\r
54528 \r
54529   toggle: function(element) {\r
54530     element = $(element);\r
54531     Element[Element.visible(element) ? 'hide' : 'show'](element);\r
54532     return element;\r
54533   },\r
54534 \r
54535   hide: function(element) {\r
54536     $(element).style.display = 'none';\r
54537     return element;\r
54538   },\r
54539 \r
54540   show: function(element) {\r
54541     $(element).style.display = '';\r
54542     return element;\r
54543   },\r
54544 \r
54545   remove: function(element) {\r
54546     element = $(element);\r
54547     element.parentNode.removeChild(element);\r
54548     return element;\r
54549   },\r
54550 \r
54551   update: function(element, html) {\r
54552     html = typeof html == 'undefined' ? '' : html.toString();\r
54553     $(element).innerHTML = html.stripScripts();\r
54554     setTimeout(function() {html.evalScripts()}, 10);\r
54555     return element;\r
54556   },\r
54557 \r
54558   replace: function(element, html) {\r
54559     element = $(element);\r
54560     html = typeof html == 'undefined' ? '' : html.toString();\r
54561     if (element.outerHTML) {\r
54562       element.outerHTML = html.stripScripts();\r
54563     } else {\r
54564       var range = element.ownerDocument.createRange();\r
54565       range.selectNodeContents(element);\r
54566       element.parentNode.replaceChild(\r
54567         range.createContextualFragment(html.stripScripts()), element);\r
54568     }\r
54569     setTimeout(function() {html.evalScripts()}, 10);\r
54570     return element;\r
54571   },\r
54572 \r
54573   inspect: function(element) {\r
54574     element = $(element);\r
54575     var result = '<' + element.tagName.toLowerCase();\r
54576     $H({'id': 'id', 'className': 'class'}).each(function(pair) {\r
54577       var property = pair.first(), attribute = pair.last();\r
54578       var value = (element[property] || '').toString();\r
54579       if (value) result += ' ' + attribute + '=' + value.inspect(true);\r
54580     });\r
54581     return result + '>';\r
54582   },\r
54583 \r
54584   recursivelyCollect: function(element, property) {\r
54585     element = $(element);\r
54586     var elements = [];\r
54587     while (element = element[property])\r
54588       if (element.nodeType == 1)\r
54589         elements.push(Element.extend(element));\r
54590     return elements;\r
54591   },\r
54592 \r
54593   ancestors: function(element) {\r
54594     return $(element).recursivelyCollect('parentNode');\r
54595   },\r
54596 \r
54597   descendants: function(element) {\r
54598     return $A($(element).getElementsByTagName('*'));\r
54599   },\r
54600 \r
54601   immediateDescendants: function(element) {\r
54602     if (!(element = $(element).firstChild)) return [];\r
54603     while (element && element.nodeType != 1) element = element.nextSibling;\r
54604     if (element) return [element].concat($(element).nextSiblings());\r
54605     return [];\r
54606   },\r
54607 \r
54608   previousSiblings: function(element) {\r
54609     return $(element).recursivelyCollect('previousSibling');\r
54610   },\r
54611 \r
54612   nextSiblings: function(element) {\r
54613     return $(element).recursivelyCollect('nextSibling');\r
54614   },\r
54615 \r
54616   siblings: function(element) {\r
54617     element = $(element);\r
54618     return element.previousSiblings().reverse().concat(element.nextSiblings());\r
54619   },\r
54620 \r
54621   match: function(element, selector) {\r
54622     if (typeof selector == 'string')\r
54623       selector = new Selector(selector);\r
54624     return selector.match($(element));\r
54625   },\r
54626 \r
54627   up: function(element, expression, index) {\r
54628     return Selector.findElement($(element).ancestors(), expression, index);\r
54629   },\r
54630 \r
54631   down: function(element, expression, index) {\r
54632     return Selector.findElement($(element).descendants(), expression, index);\r
54633   },\r
54634 \r
54635   previous: function(element, expression, index) {\r
54636     return Selector.findElement($(element).previousSiblings(), expression, index);\r
54637   },\r
54638 \r
54639   next: function(element, expression, index) {\r
54640     return Selector.findElement($(element).nextSiblings(), expression, index);\r
54641   },\r
54642 \r
54643   getElementsBySelector: function() {\r
54644     var args = $A(arguments), element = $(args.shift());\r
54645     return Selector.findChildElements(element, args);\r
54646   },\r
54647 \r
54648   getElementsByClassName: function(element, className) {\r
54649     return document.getElementsByClassName(className, element);\r
54650   },\r
54651 \r
54652   readAttribute: function(element, name) {\r
54653     element = $(element);\r
54654     if (document.all && !window.opera) {\r
54655       var t = Element._attributeTranslations;\r
54656       if (t.values[name]) return t.values[name](element, name);\r
54657       if (t.names[name])  name = t.names[name];\r
54658       var attribute = element.attributes[name];\r
54659       if(attribute) return attribute.nodeValue;\r
54660     }\r
54661     return element.getAttribute(name);\r
54662   },\r
54663 \r
54664   getHeight: function(element) {\r
54665     return $(element).getDimensions().height;\r
54666   },\r
54667 \r
54668   getWidth: function(element) {\r
54669     return $(element).getDimensions().width;\r
54670   },\r
54671 \r
54672   classNames: function(element) {\r
54673     return new Element.ClassNames(element);\r
54674   },\r
54675 \r
54676   hasClassName: function(element, className) {\r
54677     if (!(element = $(element))) return;\r
54678     var elementClassName = element.className;\r
54679     if (elementClassName.length == 0) return false;\r
54680     if (elementClassName == className ||\r
54681         elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))\r
54682       return true;\r
54683     return false;\r
54684   },\r
54685 \r
54686   addClassName: function(element, className) {\r
54687     if (!(element = $(element))) return;\r
54688     Element.classNames(element).add(className);\r
54689     return element;\r
54690   },\r
54691 \r
54692   removeClassName: function(element, className) {\r
54693     if (!(element = $(element))) return;\r
54694     Element.classNames(element).remove(className);\r
54695     return element;\r
54696   },\r
54697 \r
54698   toggleClassName: function(element, className) {\r
54699     if (!(element = $(element))) return;\r
54700     Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className);\r
54701     return element;\r
54702   },\r
54703 \r
54704   observe: function() {\r
54705     Event.observe.apply(Event, arguments);\r
54706     return $A(arguments).first();\r
54707   },\r
54708 \r
54709   stopObserving: function() {\r
54710     Event.stopObserving.apply(Event, arguments);\r
54711     return $A(arguments).first();\r
54712   },\r
54713 \r
54714   // removes whitespace-only text node children\r
54715   cleanWhitespace: function(element) {\r
54716     element = $(element);\r
54717     var node = element.firstChild;\r
54718     while (node) {\r
54719       var nextNode = node.nextSibling;\r
54720       if (node.nodeType == 3 && !/\S/.test(node.nodeValue))\r
54721         element.removeChild(node);\r
54722       node = nextNode;\r
54723     }\r
54724     return element;\r
54725   },\r
54726 \r
54727   empty: function(element) {\r
54728     return $(element).innerHTML.match(/^\s*$/);\r
54729   },\r
54730 \r
54731   descendantOf: function(element, ancestor) {\r
54732     element = $(element), ancestor = $(ancestor);\r
54733     while (element = element.parentNode)\r
54734       if (element == ancestor) return true;\r
54735     return false;\r
54736   },\r
54737 \r
54738   scrollTo: function(element) {\r
54739     element = $(element);\r
54740     var pos = Position.cumulativeOffset(element);\r
54741     window.scrollTo(pos[0], pos[1]);\r
54742     return element;\r
54743   },\r
54744 \r
54745   getStyle: function(element, style) {\r
54746     element = $(element);\r
54747     if (['float','cssFloat'].include(style))\r
54748       style = (typeof element.style.styleFloat != 'undefined' ? 'styleFloat' : 'cssFloat');\r
54749     style = style.camelize();\r
54750     var value = element.style[style];\r
54751     if (!value) {\r
54752       if (document.defaultView && document.defaultView.getComputedStyle) {\r
54753         var css = document.defaultView.getComputedStyle(element, null);\r
54754         value = css ? css[style] : null;\r
54755       } else if (element.currentStyle) {\r
54756         value = element.currentStyle[style];\r
54757       }\r
54758     }\r
54759 \r
54760     if((value == 'auto') && ['width','height'].include(style) && (element.getStyle('display') != 'none'))\r
54761       value = element['offset'+style.capitalize()] + 'px';\r
54762 \r
54763     if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))\r
54764       if (Element.getStyle(element, 'position') == 'static') value = 'auto';\r
54765     if(style == 'opacity') {\r
54766       if(value) return parseFloat(value);\r
54767       if(value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))\r
54768         if(value[1]) return parseFloat(value[1]) / 100;\r
54769       return 1.0;\r
54770     }\r
54771     return value == 'auto' ? null : value;\r
54772   },\r
54773 \r
54774   setStyle: function(element, style) {\r
54775     element = $(element);\r
54776     for (var name in style) {\r
54777       var value = style[name];\r
54778       if(name == 'opacity') {\r
54779         if (value == 1) {\r
54780           value = (/Gecko/.test(navigator.userAgent) &&\r
54781             !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0;\r
54782           if(/MSIE/.test(navigator.userAgent) && !window.opera)\r
54783             element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');\r
54784         } else if(value == '') {\r
54785           if(/MSIE/.test(navigator.userAgent) && !window.opera)\r
54786             element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');\r
54787         } else {\r
54788           if(value < 0.00001) value = 0;\r
54789           if(/MSIE/.test(navigator.userAgent) && !window.opera)\r
54790             element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +\r
54791               'alpha(opacity='+value*100+')';\r
54792         }\r
54793       } else if(['float','cssFloat'].include(name)) name = (typeof element.style.styleFloat != 'undefined') ? 'styleFloat' : 'cssFloat';\r
54794       element.style[name.camelize()] = value;\r
54795     }\r
54796     return element;\r
54797   },\r
54798 \r
54799   getDimensions: function(element) {\r
54800     element = $(element);\r
54801     var display = $(element).getStyle('display');\r
54802     if (display != 'none' && display != null) // Safari bug\r
54803       return {width: element.offsetWidth, height: element.offsetHeight};\r
54804 \r
54805     // All *Width and *Height properties give 0 on elements with display none,\r
54806     // so enable the element temporarily\r
54807     var els = element.style;\r
54808     var originalVisibility = els.visibility;\r
54809     var originalPosition = els.position;\r
54810     var originalDisplay = els.display;\r
54811     els.visibility = 'hidden';\r
54812     els.position = 'absolute';\r
54813     els.display = 'block';\r
54814     var originalWidth = element.clientWidth;\r
54815     var originalHeight = element.clientHeight;\r
54816     els.display = originalDisplay;\r
54817     els.position = originalPosition;\r
54818     els.visibility = originalVisibility;\r
54819     return {width: originalWidth, height: originalHeight};\r
54820   },\r
54821 \r
54822   makePositioned: function(element) {\r
54823     element = $(element);\r
54824     var pos = Element.getStyle(element, 'position');\r
54825     if (pos == 'static' || !pos) {\r
54826       element._madePositioned = true;\r
54827       element.style.position = 'relative';\r
54828       // Opera returns the offset relative to the positioning context, when an\r
54829       // element is position relative but top and left have not been defined\r
54830       if (window.opera) {\r
54831         element.style.top = 0;\r
54832         element.style.left = 0;\r
54833       }\r
54834     }\r
54835     return element;\r
54836   },\r
54837 \r
54838   undoPositioned: function(element) {\r
54839     element = $(element);\r
54840     if (element._madePositioned) {\r
54841       element._madePositioned = undefined;\r
54842       element.style.position =\r
54843         element.style.top =\r
54844         element.style.left =\r
54845         element.style.bottom =\r
54846         element.style.right = '';\r
54847     }\r
54848     return element;\r
54849   },\r
54850 \r
54851   makeClipping: function(element) {\r
54852     element = $(element);\r
54853     if (element._overflow) return element;\r
54854     element._overflow = element.style.overflow || 'auto';\r
54855     if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')\r
54856       element.style.overflow = 'hidden';\r
54857     return element;\r
54858   },\r
54859 \r
54860   undoClipping: function(element) {\r
54861     element = $(element);\r
54862     if (!element._overflow) return element;\r
54863     element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;\r
54864     element._overflow = null;\r
54865     return element;\r
54866   }\r
54867 };\r
54868 \r
54869 Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf});\r
54870 \r
54871 Element._attributeTranslations = {};\r
54872 \r
54873 Element._attributeTranslations.names = {\r
54874   colspan:   "colSpan",\r
54875   rowspan:   "rowSpan",\r
54876   valign:    "vAlign",\r
54877   datetime:  "dateTime",\r
54878   accesskey: "accessKey",\r
54879   tabindex:  "tabIndex",\r
54880   enctype:   "encType",\r
54881   maxlength: "maxLength",\r
54882   readonly:  "readOnly",\r
54883   longdesc:  "longDesc"\r
54884 };\r
54885 \r
54886 Element._attributeTranslations.values = {\r
54887   _getAttr: function(element, attribute) {\r
54888     return element.getAttribute(attribute, 2);\r
54889   },\r
54890 \r
54891   _flag: function(element, attribute) {\r
54892     return $(element).hasAttribute(attribute) ? attribute : null;\r
54893   },\r
54894 \r
54895   style: function(element) {\r
54896     return element.style.cssText.toLowerCase();\r
54897   },\r
54898 \r
54899   title: function(element) {\r
54900     var node = element.getAttributeNode('title');\r
54901     return node.specified ? node.nodeValue : null;\r
54902   }\r
54903 };\r
54904 \r
54905 Object.extend(Element._attributeTranslations.values, {\r
54906   href: Element._attributeTranslations.values._getAttr,\r
54907   src:  Element._attributeTranslations.values._getAttr,\r
54908   disabled: Element._attributeTranslations.values._flag,\r
54909   checked:  Element._attributeTranslations.values._flag,\r
54910   readonly: Element._attributeTranslations.values._flag,\r
54911   multiple: Element._attributeTranslations.values._flag\r
54912 });\r
54913 \r
54914 Element.Methods.Simulated = {\r
54915   hasAttribute: function(element, attribute) {\r
54916     var t = Element._attributeTranslations;\r
54917     attribute = t.names[attribute] || attribute;\r
54918     return $(element).getAttributeNode(attribute).specified;\r
54919   }\r
54920 };\r
54921 \r
54922 // IE is missing .innerHTML support for TABLE-related elements\r
54923 if (document.all && !window.opera){\r
54924   Element.Methods.update = function(element, html) {\r
54925     element = $(element);\r
54926     html = typeof html == 'undefined' ? '' : html.toString();\r
54927     var tagName = element.tagName.toUpperCase();\r
54928     if (['THEAD','TBODY','TR','TD'].include(tagName)) {\r
54929       var div = document.createElement('div');\r
54930       switch (tagName) {\r
54931         case 'THEAD':\r
54932         case 'TBODY':\r
54933           div.innerHTML = '<table><tbody>' +  html.stripScripts() + '</tbody></table>';\r
54934           depth = 2;\r
54935           break;\r
54936         case 'TR':\r
54937           div.innerHTML = '<table><tbody><tr>' +  html.stripScripts() + '</tr></tbody></table>';\r
54938           depth = 3;\r
54939           break;\r
54940         case 'TD':\r
54941           div.innerHTML = '<table><tbody><tr><td>' +  html.stripScripts() + '</td></tr></tbody></table>';\r
54942           depth = 4;\r
54943       }\r
54944       $A(element.childNodes).each(function(node){\r
54945         element.removeChild(node)\r
54946       });\r
54947       depth.times(function(){ div = div.firstChild });\r
54948 \r
54949       $A(div.childNodes).each(\r
54950         function(node){ element.appendChild(node) });\r
54951     } else {\r
54952       element.innerHTML = html.stripScripts();\r
54953     }\r
54954     setTimeout(function() {html.evalScripts()}, 10);\r
54955     return element;\r
54956   }\r
54957 };\r
54958 \r
54959 Object.extend(Element, Element.Methods);\r
54960 \r
54961 var _nativeExtensions = false;\r
54962 \r
54963 if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))\r
54964   ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {\r
54965     var className = 'HTML' + tag + 'Element';\r
54966     if(window[className]) return;\r
54967     var klass = window[className] = {};\r
54968     klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__;\r
54969   });\r
54970 \r
54971 Element.addMethods = function(methods) {\r
54972   Object.extend(Element.Methods, methods || {});\r
54973 \r
54974   function copy(methods, destination, onlyIfAbsent) {\r
54975     onlyIfAbsent = onlyIfAbsent || false;\r
54976     var cache = Element.extend.cache;\r
54977     for (var property in methods) {\r
54978       var value = methods[property];\r
54979       if (!onlyIfAbsent || !(property in destination))\r
54980         destination[property] = cache.findOrStore(value);\r
54981     }\r
54982   }\r
54983 \r
54984   if (typeof HTMLElement != 'undefined') {\r
54985     copy(Element.Methods, HTMLElement.prototype);\r
54986     copy(Element.Methods.Simulated, HTMLElement.prototype, true);\r
54987     copy(Form.Methods, HTMLFormElement.prototype);\r
54988     [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) {\r
54989       copy(Form.Element.Methods, klass.prototype);\r
54990     });\r
54991     _nativeExtensions = true;\r
54992   }\r
54993 }\r
54994 \r
54995 var Toggle = new Object();\r
54996 Toggle.display = Element.toggle;\r
54997 \r
54998 /*--------------------------------------------------------------------------*/\r
54999 \r
55000 Abstract.Insertion = function(adjacency) {\r
55001   this.adjacency = adjacency;\r
55002 }\r
55003 \r
55004 Abstract.Insertion.prototype = {\r
55005   initialize: function(element, content) {\r
55006     this.element = $(element);\r
55007     this.content = content.stripScripts();\r
55008 \r
55009     if (this.adjacency && this.element.insertAdjacentHTML) {\r
55010       try {\r
55011         this.element.insertAdjacentHTML(this.adjacency, this.content);\r
55012       } catch (e) {\r
55013         var tagName = this.element.tagName.toUpperCase();\r
55014         if (['TBODY', 'TR'].include(tagName)) {\r
55015           this.insertContent(this.contentFromAnonymousTable());\r
55016         } else {\r
55017           throw e;\r
55018         }\r
55019       }\r
55020     } else {\r
55021       this.range = this.element.ownerDocument.createRange();\r
55022       if (this.initializeRange) this.initializeRange();\r
55023       this.insertContent([this.range.createContextualFragment(this.content)]);\r
55024     }\r
55025 \r
55026     setTimeout(function() {content.evalScripts()}, 10);\r
55027   },\r
55028 \r
55029   contentFromAnonymousTable: function() {\r
55030     var div = document.createElement('div');\r
55031     div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';\r
55032     return $A(div.childNodes[0].childNodes[0].childNodes);\r
55033   }\r
55034 }\r
55035 \r
55036 var Insertion = new Object();\r
55037 \r
55038 Insertion.Before = Class.create();\r
55039 Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {\r
55040   initializeRange: function() {\r
55041     this.range.setStartBefore(this.element);\r
55042   },\r
55043 \r
55044   insertContent: function(fragments) {\r
55045     fragments.each((function(fragment) {\r
55046       this.element.parentNode.insertBefore(fragment, this.element);\r
55047     }).bind(this));\r
55048   }\r
55049 });\r
55050 \r
55051 Insertion.Top = Class.create();\r
55052 Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {\r
55053   initializeRange: function() {\r
55054     this.range.selectNodeContents(this.element);\r
55055     this.range.collapse(true);\r
55056   },\r
55057 \r
55058   insertContent: function(fragments) {\r
55059     fragments.reverse(false).each((function(fragment) {\r
55060       this.element.insertBefore(fragment, this.element.firstChild);\r
55061     }).bind(this));\r
55062   }\r
55063 });\r
55064 \r
55065 Insertion.Bottom = Class.create();\r
55066 Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {\r
55067   initializeRange: function() {\r
55068     this.range.selectNodeContents(this.element);\r
55069     this.range.collapse(this.element);\r
55070   },\r
55071 \r
55072   insertContent: function(fragments) {\r
55073     fragments.each((function(fragment) {\r
55074       this.element.appendChild(fragment);\r
55075     }).bind(this));\r
55076   }\r
55077 });\r
55078 \r
55079 Insertion.After = Class.create();\r
55080 Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {\r
55081   initializeRange: function() {\r
55082     this.range.setStartAfter(this.element);\r
55083   },\r
55084 \r
55085   insertContent: function(fragments) {\r
55086     fragments.each((function(fragment) {\r
55087       this.element.parentNode.insertBefore(fragment,\r
55088         this.element.nextSibling);\r
55089     }).bind(this));\r
55090   }\r
55091 });\r
55092 \r
55093 /*--------------------------------------------------------------------------*/\r
55094 \r
55095 Element.ClassNames = Class.create();\r
55096 Element.ClassNames.prototype = {\r
55097   initialize: function(element) {\r
55098     this.element = $(element);\r
55099   },\r
55100 \r
55101   _each: function(iterator) {\r
55102     this.element.className.split(/\s+/).select(function(name) {\r
55103       return name.length > 0;\r
55104     })._each(iterator);\r
55105   },\r
55106 \r
55107   set: function(className) {\r
55108     this.element.className = className;\r
55109   },\r
55110 \r
55111   add: function(classNameToAdd) {\r
55112     if (this.include(classNameToAdd)) return;\r
55113     this.set($A(this).concat(classNameToAdd).join(' '));\r
55114   },\r
55115 \r
55116   remove: function(classNameToRemove) {\r
55117     if (!this.include(classNameToRemove)) return;\r
55118     this.set($A(this).without(classNameToRemove).join(' '));\r
55119   },\r
55120 \r
55121   toString: function() {\r
55122     return $A(this).join(' ');\r
55123   }\r
55124 };\r
55125 \r
55126 Object.extend(Element.ClassNames.prototype, Enumerable);\r
55127 var Selector = Class.create();\r
55128 Selector.prototype = {\r
55129   initialize: function(expression) {\r
55130     this.params = {classNames: []};\r
55131     this.expression = expression.toString().strip();\r
55132     this.parseExpression();\r
55133     this.compileMatcher();\r
55134   },\r
55135 \r
55136   parseExpression: function() {\r
55137     function abort(message) { throw 'Parse error in selector: ' + message; }\r
55138 \r
55139     if (this.expression == '')  abort('empty expression');\r
55140 \r
55141     var params = this.params, expr = this.expression, match, modifier, clause, rest;\r
55142     while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {\r
55143       params.attributes = params.attributes || [];\r
55144       params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});\r
55145       expr = match[1];\r
55146     }\r
55147 \r
55148     if (expr == '*') return this.params.wildcard = true;\r
55149 \r
55150     while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {\r
55151       modifier = match[1], clause = match[2], rest = match[3];\r
55152       switch (modifier) {\r
55153         case '#':       params.id = clause; break;\r
55154         case '.':       params.classNames.push(clause); break;\r
55155         case '':\r
55156         case undefined: params.tagName = clause.toUpperCase(); break;\r
55157         default:        abort(expr.inspect());\r
55158       }\r
55159       expr = rest;\r
55160     }\r
55161 \r
55162     if (expr.length > 0) abort(expr.inspect());\r
55163   },\r
55164 \r
55165   buildMatchExpression: function() {\r
55166     var params = this.params, conditions = [], clause;\r
55167 \r
55168     if (params.wildcard)\r
55169       conditions.push('true');\r
55170     if (clause = params.id)\r
55171       conditions.push('element.readAttribute("id") == ' + clause.inspect());\r
55172     if (clause = params.tagName)\r
55173       conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());\r
55174     if ((clause = params.classNames).length > 0)\r
55175       for (var i = 0, length = clause.length; i < length; i++)\r
55176         conditions.push('element.hasClassName(' + clause[i].inspect() + ')');\r
55177     if (clause = params.attributes) {\r
55178       clause.each(function(attribute) {\r
55179         var value = 'element.readAttribute(' + attribute.name.inspect() + ')';\r
55180         var splitValueBy = function(delimiter) {\r
55181           return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';\r
55182         }\r
55183 \r
55184         switch (attribute.operator) {\r
55185           case '=':       conditions.push(value + ' == ' + attribute.value.inspect()); break;\r
55186           case '~=':      conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;\r
55187           case '|=':      conditions.push(\r
55188                             splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()\r
55189                           ); break;\r
55190           case '!=':      conditions.push(value + ' != ' + attribute.value.inspect()); break;\r
55191           case '':\r
55192           case undefined: conditions.push('element.hasAttribute(' + attribute.name.inspect() + ')'); break;\r
55193           default:        throw 'Unknown operator ' + attribute.operator + ' in selector';\r
55194         }\r
55195       });\r
55196     }\r
55197 \r
55198     return conditions.join(' && ');\r
55199   },\r
55200 \r
55201   compileMatcher: function() {\r
55202     this.match = new Function('element', 'if (!element.tagName) return false; \\r
55203       element = $(element); \\r
55204       return ' + this.buildMatchExpression());\r
55205   },\r
55206 \r
55207   findElements: function(scope) {\r
55208     var element;\r
55209 \r
55210     if (element = $(this.params.id))\r
55211       if (this.match(element))\r
55212         if (!scope || Element.childOf(element, scope))\r
55213           return [element];\r
55214 \r
55215     scope = (scope || document).getElementsByTagName(this.params.tagName || '*');\r
55216 \r
55217     var results = [];\r
55218     for (var i = 0, length = scope.length; i < length; i++)\r
55219       if (this.match(element = scope[i]))\r
55220         results.push(Element.extend(element));\r
55221 \r
55222     return results;\r
55223   },\r
55224 \r
55225   toString: function() {\r
55226     return this.expression;\r
55227   }\r
55228 }\r
55229 \r
55230 Object.extend(Selector, {\r
55231   matchElements: function(elements, expression) {\r
55232     var selector = new Selector(expression);\r
55233     return elements.select(selector.match.bind(selector)).map(Element.extend);\r
55234   },\r
55235 \r
55236   findElement: function(elements, expression, index) {\r
55237     if (typeof expression == 'number') index = expression, expression = false;\r
55238     return Selector.matchElements(elements, expression || '*')[index || 0];\r
55239   },\r
55240 \r
55241   findChildElements: function(element, expressions) {\r
55242     return expressions.map(function(expression) {\r
55243       return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function(results, expr) {\r
55244         var selector = new Selector(expr);\r
55245         return results.inject([], function(elements, result) {\r
55246           return elements.concat(selector.findElements(result || element));\r
55247         });\r
55248       });\r
55249     }).flatten();\r
55250   }\r
55251 });\r
55252 \r
55253 function $$() {\r
55254   return Selector.findChildElements(document, $A(arguments));\r
55255 }\r
55256 var Form = {\r
55257   reset: function(form) {\r
55258     $(form).reset();\r
55259     return form;\r
55260   },\r
55261 \r
55262   serializeElements: function(elements, getHash) {\r
55263     var data = elements.inject({}, function(result, element) {\r
55264       if (!element.disabled && element.name) {\r
55265         var key = element.name, value = $(element).getValue();\r
55266         if (value != undefined) {\r
55267           if (result[key]) {\r
55268             if (result[key].constructor != Array) result[key] = [result[key]];\r
55269             result[key].push(value);\r
55270           }\r
55271           else result[key] = value;\r
55272         }\r
55273       }\r
55274       return result;\r
55275     });\r
55276 \r
55277     return getHash ? data : Hash.toQueryString(data);\r
55278   }\r
55279 };\r
55280 \r
55281 Form.Methods = {\r
55282   serialize: function(form, getHash) {\r
55283     return Form.serializeElements(Form.getElements(form), getHash);\r
55284   },\r
55285 \r
55286   getElements: function(form) {\r
55287     return $A($(form).getElementsByTagName('*')).inject([],\r
55288       function(elements, child) {\r
55289         if (Form.Element.Serializers[child.tagName.toLowerCase()])\r
55290           elements.push(Element.extend(child));\r
55291         return elements;\r
55292       }\r
55293     );\r
55294   },\r
55295 \r
55296   getInputs: function(form, typeName, name) {\r
55297     form = $(form);\r
55298     var inputs = form.getElementsByTagName('input');\r
55299 \r
55300     if (!typeName && !name) return $A(inputs).map(Element.extend);\r
55301 \r
55302     for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {\r
55303       var input = inputs[i];\r
55304       if ((typeName && input.type != typeName) || (name && input.name != name))\r
55305         continue;\r
55306       matchingInputs.push(Element.extend(input));\r
55307     }\r
55308 \r
55309     return matchingInputs;\r
55310   },\r
55311 \r
55312   disable: function(form) {\r
55313     form = $(form);\r
55314     form.getElements().each(function(element) {\r
55315       element.blur();\r
55316       element.disabled = 'true';\r
55317     });\r
55318     return form;\r
55319   },\r
55320 \r
55321   enable: function(form) {\r
55322     form = $(form);\r
55323     form.getElements().each(function(element) {\r
55324       element.disabled = '';\r
55325     });\r
55326     return form;\r
55327   },\r
55328 \r
55329   findFirstElement: function(form) {\r
55330     return $(form).getElements().find(function(element) {\r
55331       return element.type != 'hidden' && !element.disabled &&\r
55332         ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());\r
55333     });\r
55334   },\r
55335 \r
55336   focusFirstElement: function(form) {\r
55337     form = $(form);\r
55338     form.findFirstElement().activate();\r
55339     return form;\r
55340   }\r
55341 }\r
55342 \r
55343 Object.extend(Form, Form.Methods);\r
55344 \r
55345 /*--------------------------------------------------------------------------*/\r
55346 \r
55347 Form.Element = {\r
55348   focus: function(element) {\r
55349     $(element).focus();\r
55350     return element;\r
55351   },\r
55352 \r
55353   select: function(element) {\r
55354     $(element).select();\r
55355     return element;\r
55356   }\r
55357 }\r
55358 \r
55359 Form.Element.Methods = {\r
55360   serialize: function(element) {\r
55361     element = $(element);\r
55362     if (!element.disabled && element.name) {\r
55363       var value = element.getValue();\r
55364       if (value != undefined) {\r
55365         var pair = {};\r
55366         pair[element.name] = value;\r
55367         return Hash.toQueryString(pair);\r
55368       }\r
55369     }\r
55370     return '';\r
55371   },\r
55372 \r
55373   getValue: function(element) {\r
55374     element = $(element);\r
55375     var method = element.tagName.toLowerCase();\r
55376     return Form.Element.Serializers[method](element);\r
55377   },\r
55378 \r
55379   clear: function(element) {\r
55380     $(element).value = '';\r
55381     return element;\r
55382   },\r
55383 \r
55384   present: function(element) {\r
55385     return $(element).value != '';\r
55386   },\r
55387 \r
55388   activate: function(element) {\r
55389     element = $(element);\r
55390     element.focus();\r
55391     if (element.select && ( element.tagName.toLowerCase() != 'input' ||\r
55392       !['button', 'reset', 'submit'].include(element.type) ) )\r
55393       element.select();\r
55394     return element;\r
55395   },\r
55396 \r
55397   disable: function(element) {\r
55398     element = $(element);\r
55399     element.disabled = true;\r
55400     return element;\r
55401   },\r
55402 \r
55403   enable: function(element) {\r
55404     element = $(element);\r
55405     element.blur();\r
55406     element.disabled = false;\r
55407     return element;\r
55408   }\r
55409 }\r
55410 \r
55411 Object.extend(Form.Element, Form.Element.Methods);\r
55412 var Field = Form.Element;\r
55413 var $F = Form.Element.getValue;\r
55414 \r
55415 /*--------------------------------------------------------------------------*/\r
55416 \r
55417 Form.Element.Serializers = {\r
55418   input: function(element) {\r
55419     switch (element.type.toLowerCase()) {\r
55420       case 'checkbox':\r
55421       case 'radio':\r
55422         return Form.Element.Serializers.inputSelector(element);\r
55423       default:\r
55424         return Form.Element.Serializers.textarea(element);\r
55425     }\r
55426   },\r
55427 \r
55428   inputSelector: function(element) {\r
55429     return element.checked ? element.value : null;\r
55430   },\r
55431 \r
55432   textarea: function(element) {\r
55433     return element.value;\r
55434   },\r
55435 \r
55436   select: function(element) {\r
55437     return this[element.type == 'select-one' ?\r
55438       'selectOne' : 'selectMany'](element);\r
55439   },\r
55440 \r
55441   selectOne: function(element) {\r
55442     var index = element.selectedIndex;\r
55443     return index >= 0 ? this.optionValue(element.options[index]) : null;\r
55444   },\r
55445 \r
55446   selectMany: function(element) {\r
55447     var values, length = element.length;\r
55448     if (!length) return null;\r
55449 \r
55450     for (var i = 0, values = []; i < length; i++) {\r
55451       var opt = element.options[i];\r
55452       if (opt.selected) values.push(this.optionValue(opt));\r
55453     }\r
55454     return values;\r
55455   },\r
55456 \r
55457   optionValue: function(opt) {\r
55458     // extend element because hasAttribute may not be native\r
55459     return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;\r
55460   }\r
55461 }\r
55462 \r
55463 /*--------------------------------------------------------------------------*/\r
55464 \r
55465 Abstract.TimedObserver = function() {}\r
55466 Abstract.TimedObserver.prototype = {\r
55467   initialize: function(element, frequency, callback) {\r
55468     this.frequency = frequency;\r
55469     this.element   = $(element);\r
55470     this.callback  = callback;\r
55471 \r
55472     this.lastValue = this.getValue();\r
55473     this.registerCallback();\r
55474   },\r
55475 \r
55476   registerCallback: function() {\r
55477     setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);\r
55478   },\r
55479 \r
55480   onTimerEvent: function() {\r
55481     var value = this.getValue();\r
55482     var changed = ('string' == typeof this.lastValue && 'string' == typeof value\r
55483       ? this.lastValue != value : String(this.lastValue) != String(value));\r
55484     if (changed) {\r
55485       this.callback(this.element, value);\r
55486       this.lastValue = value;\r
55487     }\r
55488   }\r
55489 }\r
55490 \r
55491 Form.Element.Observer = Class.create();\r
55492 Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {\r
55493   getValue: function() {\r
55494     return Form.Element.getValue(this.element);\r
55495   }\r
55496 });\r
55497 \r
55498 Form.Observer = Class.create();\r
55499 Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {\r
55500   getValue: function() {\r
55501     return Form.serialize(this.element);\r
55502   }\r
55503 });\r
55504 \r
55505 /*--------------------------------------------------------------------------*/\r
55506 \r
55507 Abstract.EventObserver = function() {}\r
55508 Abstract.EventObserver.prototype = {\r
55509   initialize: function(element, callback) {\r
55510     this.element  = $(element);\r
55511     this.callback = callback;\r
55512 \r
55513     this.lastValue = this.getValue();\r
55514     if (this.element.tagName.toLowerCase() == 'form')\r
55515       this.registerFormCallbacks();\r
55516     else\r
55517       this.registerCallback(this.element);\r
55518   },\r
55519 \r
55520   onElementEvent: function() {\r
55521     var value = this.getValue();\r
55522     if (this.lastValue != value) {\r
55523       this.callback(this.element, value);\r
55524       this.lastValue = value;\r
55525     }\r
55526   },\r
55527 \r
55528   registerFormCallbacks: function() {\r
55529     Form.getElements(this.element).each(this.registerCallback.bind(this));\r
55530   },\r
55531 \r
55532   registerCallback: function(element) {\r
55533     if (element.type) {\r
55534       switch (element.type.toLowerCase()) {\r
55535         case 'checkbox':\r
55536         case 'radio':\r
55537           Event.observe(element, 'click', this.onElementEvent.bind(this));\r
55538           break;\r
55539         default:\r
55540           Event.observe(element, 'change', this.onElementEvent.bind(this));\r
55541           break;\r
55542       }\r
55543     }\r
55544   }\r
55545 }\r
55546 \r
55547 Form.Element.EventObserver = Class.create();\r
55548 Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {\r
55549   getValue: function() {\r
55550     return Form.Element.getValue(this.element);\r
55551   }\r
55552 });\r
55553 \r
55554 Form.EventObserver = Class.create();\r
55555 Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {\r
55556   getValue: function() {\r
55557     return Form.serialize(this.element);\r
55558   }\r
55559 });\r
55560 if (!window.Event) {\r
55561   var Event = new Object();\r
55562 }\r
55563 \r
55564 Object.extend(Event, {\r
55565   KEY_BACKSPACE: 8,\r
55566   KEY_TAB:       9,\r
55567   KEY_RETURN:   13,\r
55568   KEY_ESC:      27,\r
55569   KEY_LEFT:     37,\r
55570   KEY_UP:       38,\r
55571   KEY_RIGHT:    39,\r
55572   KEY_DOWN:     40,\r
55573   KEY_DELETE:   46,\r
55574   KEY_HOME:     36,\r
55575   KEY_END:      35,\r
55576   KEY_PAGEUP:   33,\r
55577   KEY_PAGEDOWN: 34,\r
55578 \r
55579   element: function(event) {\r
55580     return event.target || event.srcElement;\r
55581   },\r
55582 \r
55583   isLeftClick: function(event) {\r
55584     return (((event.which) && (event.which == 1)) ||\r
55585             ((event.button) && (event.button == 1)));\r
55586   },\r
55587 \r
55588   pointerX: function(event) {\r
55589     return event.pageX || (event.clientX +\r
55590       (document.documentElement.scrollLeft || document.body.scrollLeft));\r
55591   },\r
55592 \r
55593   pointerY: function(event) {\r
55594     return event.pageY || (event.clientY +\r
55595       (document.documentElement.scrollTop || document.body.scrollTop));\r
55596   },\r
55597 \r
55598   stop: function(event) {\r
55599     if (event.preventDefault) {\r
55600       event.preventDefault();\r
55601       event.stopPropagation();\r
55602     } else {\r
55603       event.returnValue = false;\r
55604       event.cancelBubble = true;\r
55605     }\r
55606   },\r
55607 \r
55608   // find the first node with the given tagName, starting from the\r
55609   // node the event was triggered on; traverses the DOM upwards\r
55610   findElement: function(event, tagName) {\r
55611     var element = Event.element(event);\r
55612     while (element.parentNode && (!element.tagName ||\r
55613         (element.tagName.toUpperCase() != tagName.toUpperCase())))\r
55614       element = element.parentNode;\r
55615     return element;\r
55616   },\r
55617 \r
55618   observers: false,\r
55619 \r
55620   _observeAndCache: function(element, name, observer, useCapture) {\r
55621     if (!this.observers) this.observers = [];\r
55622     if (element.addEventListener) {\r
55623       this.observers.push([element, name, observer, useCapture]);\r
55624       element.addEventListener(name, observer, useCapture);\r
55625     } else if (element.attachEvent) {\r
55626       this.observers.push([element, name, observer, useCapture]);\r
55627       element.attachEvent('on' + name, observer);\r
55628     }\r
55629   },\r
55630 \r
55631   unloadCache: function() {\r
55632     if (!Event.observers) return;\r
55633     for (var i = 0, length = Event.observers.length; i < length; i++) {\r
55634       Event.stopObserving.apply(this, Event.observers[i]);\r
55635       Event.observers[i][0] = null;\r
55636     }\r
55637     Event.observers = false;\r
55638   },\r
55639 \r
55640   observe: function(element, name, observer, useCapture) {\r
55641     element = $(element);\r
55642     useCapture = useCapture || false;\r
55643 \r
55644     if (name == 'keypress' &&\r
55645         (navigator.appVersion.match(/Konqueror|Safari|KHTML/)\r
55646         || element.attachEvent))\r
55647       name = 'keydown';\r
55648 \r
55649     Event._observeAndCache(element, name, observer, useCapture);\r
55650   },\r
55651 \r
55652   stopObserving: function(element, name, observer, useCapture) {\r
55653     element = $(element);\r
55654     useCapture = useCapture || false;\r
55655 \r
55656     if (name == 'keypress' &&\r
55657         (navigator.appVersion.match(/Konqueror|Safari|KHTML/)\r
55658         || element.detachEvent))\r
55659       name = 'keydown';\r
55660 \r
55661     if (element.removeEventListener) {\r
55662       element.removeEventListener(name, observer, useCapture);\r
55663     } else if (element.detachEvent) {\r
55664       try {\r
55665         element.detachEvent('on' + name, observer);\r
55666       } catch (e) {}\r
55667     }\r
55668   }\r
55669 });\r
55670 \r
55671 /* prevent memory leaks in IE */\r
55672 if (navigator.appVersion.match(/\bMSIE\b/))\r
55673   Event.observe(window, 'unload', Event.unloadCache, false);\r
55674 var Position = {\r
55675   // set to true if needed, warning: firefox performance problems\r
55676   // NOT neeeded for page scrolling, only if draggable contained in\r
55677   // scrollable elements\r
55678   includeScrollOffsets: false,\r
55679 \r
55680   // must be called before calling withinIncludingScrolloffset, every time the\r
55681   // page is scrolled\r
55682   prepare: function() {\r
55683     this.deltaX =  window.pageXOffset\r
55684                 || document.documentElement.scrollLeft\r
55685                 || document.body.scrollLeft\r
55686                 || 0;\r
55687     this.deltaY =  window.pageYOffset\r
55688                 || document.documentElement.scrollTop\r
55689                 || document.body.scrollTop\r
55690                 || 0;\r
55691   },\r
55692 \r
55693   realOffset: function(element) {\r
55694     var valueT = 0, valueL = 0;\r
55695     do {\r
55696       valueT += element.scrollTop  || 0;\r
55697       valueL += element.scrollLeft || 0;\r
55698       element = element.parentNode;\r
55699     } while (element);\r
55700     return [valueL, valueT];\r
55701   },\r
55702 \r
55703   cumulativeOffset: function(element) {\r
55704     var valueT = 0, valueL = 0;\r
55705     do {\r
55706       valueT += element.offsetTop  || 0;\r
55707       valueL += element.offsetLeft || 0;\r
55708       element = element.offsetParent;\r
55709     } while (element);\r
55710     return [valueL, valueT];\r
55711   },\r
55712 \r
55713   positionedOffset: function(element) {\r
55714     var valueT = 0, valueL = 0;\r
55715     do {\r
55716       valueT += element.offsetTop  || 0;\r
55717       valueL += element.offsetLeft || 0;\r
55718       element = element.offsetParent;\r
55719       if (element) {\r
55720         if(element.tagName=='BODY') break;\r
55721         var p = Element.getStyle(element, 'position');\r
55722         if (p == 'relative' || p == 'absolute') break;\r
55723       }\r
55724     } while (element);\r
55725     return [valueL, valueT];\r
55726   },\r
55727 \r
55728   offsetParent: function(element) {\r
55729     if (element.offsetParent) return element.offsetParent;\r
55730     if (element == document.body) return element;\r
55731 \r
55732     while ((element = element.parentNode) && element != document.body)\r
55733       if (Element.getStyle(element, 'position') != 'static')\r
55734         return element;\r
55735 \r
55736     return document.body;\r
55737   },\r
55738 \r
55739   // caches x/y coordinate pair to use with overlap\r
55740   within: function(element, x, y) {\r
55741     if (this.includeScrollOffsets)\r
55742       return this.withinIncludingScrolloffsets(element, x, y);\r
55743     this.xcomp = x;\r
55744     this.ycomp = y;\r
55745     this.offset = this.cumulativeOffset(element);\r
55746 \r
55747     return (y >= this.offset[1] &&\r
55748             y <  this.offset[1] + element.offsetHeight &&\r
55749             x >= this.offset[0] &&\r
55750             x <  this.offset[0] + element.offsetWidth);\r
55751   },\r
55752 \r
55753   withinIncludingScrolloffsets: function(element, x, y) {\r
55754     var offsetcache = this.realOffset(element);\r
55755 \r
55756     this.xcomp = x + offsetcache[0] - this.deltaX;\r
55757     this.ycomp = y + offsetcache[1] - this.deltaY;\r
55758     this.offset = this.cumulativeOffset(element);\r
55759 \r
55760     return (this.ycomp >= this.offset[1] &&\r
55761             this.ycomp <  this.offset[1] + element.offsetHeight &&\r
55762             this.xcomp >= this.offset[0] &&\r
55763             this.xcomp <  this.offset[0] + element.offsetWidth);\r
55764   },\r
55765 \r
55766   // within must be called directly before\r
55767   overlap: function(mode, element) {\r
55768     if (!mode) return 0;\r
55769     if (mode == 'vertical')\r
55770       return ((this.offset[1] + element.offsetHeight) - this.ycomp) /\r
55771         element.offsetHeight;\r
55772     if (mode == 'horizontal')\r
55773       return ((this.offset[0] + element.offsetWidth) - this.xcomp) /\r
55774         element.offsetWidth;\r
55775   },\r
55776 \r
55777   page: function(forElement) {\r
55778     var valueT = 0, valueL = 0;\r
55779 \r
55780     var element = forElement;\r
55781     do {\r
55782       valueT += element.offsetTop  || 0;\r
55783       valueL += element.offsetLeft || 0;\r
55784 \r
55785       // Safari fix\r
55786       if (element.offsetParent==document.body)\r
55787         if (Element.getStyle(element,'position')=='absolute') break;\r
55788 \r
55789     } while (element = element.offsetParent);\r
55790 \r
55791     element = forElement;\r
55792     do {\r
55793       if (!window.opera || element.tagName=='BODY') {\r
55794         valueT -= element.scrollTop  || 0;\r
55795         valueL -= element.scrollLeft || 0;\r
55796       }\r
55797     } while (element = element.parentNode);\r
55798 \r
55799     return [valueL, valueT];\r
55800   },\r
55801 \r
55802   clone: function(source, target) {\r
55803     var options = Object.extend({\r
55804       setLeft:    true,\r
55805       setTop:     true,\r
55806       setWidth:   true,\r
55807       setHeight:  true,\r
55808       offsetTop:  0,\r
55809       offsetLeft: 0\r
55810     }, arguments[2] || {})\r
55811 \r
55812     // find page position of source\r
55813     source = $(source);\r
55814     var p = Position.page(source);\r
55815 \r
55816     // find coordinate system to use\r
55817     target = $(target);\r
55818     var delta = [0, 0];\r
55819     var parent = null;\r
55820     // delta [0,0] will do fine with position: fixed elements,\r
55821     // position:absolute needs offsetParent deltas\r
55822 \r
55823     if (Element.getStyle(target,'position') == 'absolute') {\r
55824       parent = Position.offsetParent(target);\r
55825       delta = Position.page(parent);\r
55826     }\r
55827 \r
55828     // correct by body offsets (fixes Safari)\r
55829     if (parent == document.body) {\r
55830       delta[0] -= document.body.offsetLeft;\r
55831       delta[1] -= document.body.offsetTop;\r
55832     }\r
55833 \r
55834     // set position\r
55835     if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';\r
55836     if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';\r
55837     if(options.setWidth)  target.style.width = source.offsetWidth + 'px';\r
55838     if(options.setHeight) target.style.height = source.offsetHeight + 'px';\r
55839   },\r
55840 \r
55841   absolutize: function(element) {\r
55842     element = $(element);\r
55843     if (element.style.position == 'absolute') return;\r
55844     Position.prepare();\r
55845 \r
55846     var offsets = Position.positionedOffset(element);\r
55847     var top     = offsets[1];\r
55848     var left    = offsets[0];\r
55849     var width   = element.clientWidth;\r
55850     var height  = element.clientHeight;\r
55851 \r
55852     element._originalLeft   = left - parseFloat(element.style.left  || 0);\r
55853     element._originalTop    = top  - parseFloat(element.style.top || 0);\r
55854     element._originalWidth  = element.style.width;\r
55855     element._originalHeight = element.style.height;\r
55856 \r
55857     element.style.position = 'absolute';\r
55858     element.style.top    = top + 'px';\r
55859     element.style.left   = left + 'px';\r
55860     element.style.width  = width + 'px';\r
55861     element.style.height = height + 'px';\r
55862   },\r
55863 \r
55864   relativize: function(element) {\r
55865     element = $(element);\r
55866     if (element.style.position == 'relative') return;\r
55867     Position.prepare();\r
55868 \r
55869     element.style.position = 'relative';\r
55870     var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);\r
55871     var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);\r
55872 \r
55873     element.style.top    = top + 'px';\r
55874     element.style.left   = left + 'px';\r
55875     element.style.height = element._originalHeight;\r
55876     element.style.width  = element._originalWidth;\r
55877   }\r
55878 }\r
55879 \r
55880 // Safari returns margins on body which is incorrect if the child is absolutely\r
55881 // positioned.  For performance reasons, redefine Position.cumulativeOffset for\r
55882 // KHTML/WebKit only.\r
55883 if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {\r
55884   Position.cumulativeOffset = function(element) {\r
55885     var valueT = 0, valueL = 0;\r
55886     do {\r
55887       valueT += element.offsetTop  || 0;\r
55888       valueL += element.offsetLeft || 0;\r
55889       if (element.offsetParent == document.body)\r
55890         if (Element.getStyle(element, 'position') == 'absolute') break;\r
55891 \r
55892       element = element.offsetParent;\r
55893     } while (element);\r
55894 \r
55895     return [valueL, valueT];\r
55896   }\r
55897 }\r
55898 \r
55899 Element.addMethods();\r
55900 \r
55901 \r
55902 // ------------------------------------------------------------------------\r
55903 // ------------------------------------------------------------------------\r
55904 \r
55905 // The rest of this file is the actual ray tracer written by Adam\r
55906 // Burmister. It's a concatenation of the following files:\r
55907 //\r
55908 //   flog/color.js\r
55909 //   flog/light.js\r
55910 //   flog/vector.js\r
55911 //   flog/ray.js\r
55912 //   flog/scene.js\r
55913 //   flog/material/basematerial.js\r
55914 //   flog/material/solid.js\r
55915 //   flog/material/chessboard.js\r
55916 //   flog/shape/baseshape.js\r
55917 //   flog/shape/sphere.js\r
55918 //   flog/shape/plane.js\r
55919 //   flog/intersectioninfo.js\r
55920 //   flog/camera.js\r
55921 //   flog/background.js\r
55922 //   flog/engine.js\r
55923 \r
55924 \r
55925 /* Fake a Flog.* namespace */\r
55926 if(typeof(Flog) == 'undefined') var Flog = {};\r
55927 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
55928 \r
55929 Flog.RayTracer.Color = Class.create();\r
55930 \r
55931 Flog.RayTracer.Color.prototype = {\r
55932     red : 0.0,\r
55933     green : 0.0,\r
55934     blue : 0.0,\r
55935 \r
55936     initialize : function(r, g, b) {\r
55937         if(!r) r = 0.0;\r
55938         if(!g) g = 0.0;\r
55939         if(!b) b = 0.0;\r
55940 \r
55941         this.red = r;\r
55942         this.green = g;\r
55943         this.blue = b;\r
55944     },\r
55945 \r
55946     add : function(c1, c2){\r
55947         var result = new Flog.RayTracer.Color(0,0,0);\r
55948 \r
55949         result.red = c1.red + c2.red;\r
55950         result.green = c1.green + c2.green;\r
55951         result.blue = c1.blue + c2.blue;\r
55952 \r
55953         return result;\r
55954     },\r
55955 \r
55956     addScalar: function(c1, s){\r
55957         var result = new Flog.RayTracer.Color(0,0,0);\r
55958 \r
55959         result.red = c1.red + s;\r
55960         result.green = c1.green + s;\r
55961         result.blue = c1.blue + s;\r
55962 \r
55963         result.limit();\r
55964 \r
55965         return result;\r
55966     },\r
55967 \r
55968     subtract: function(c1, c2){\r
55969         var result = new Flog.RayTracer.Color(0,0,0);\r
55970 \r
55971         result.red = c1.red - c2.red;\r
55972         result.green = c1.green - c2.green;\r
55973         result.blue = c1.blue - c2.blue;\r
55974 \r
55975         return result;\r
55976     },\r
55977 \r
55978     multiply : function(c1, c2) {\r
55979         var result = new Flog.RayTracer.Color(0,0,0);\r
55980 \r
55981         result.red = c1.red * c2.red;\r
55982         result.green = c1.green * c2.green;\r
55983         result.blue = c1.blue * c2.blue;\r
55984 \r
55985         return result;\r
55986     },\r
55987 \r
55988     multiplyScalar : function(c1, f) {\r
55989         var result = new Flog.RayTracer.Color(0,0,0);\r
55990 \r
55991         result.red = c1.red * f;\r
55992         result.green = c1.green * f;\r
55993         result.blue = c1.blue * f;\r
55994 \r
55995         return result;\r
55996     },\r
55997 \r
55998     divideFactor : function(c1, f) {\r
55999         var result = new Flog.RayTracer.Color(0,0,0);\r
56000 \r
56001         result.red = c1.red / f;\r
56002         result.green = c1.green / f;\r
56003         result.blue = c1.blue / f;\r
56004 \r
56005         return result;\r
56006     },\r
56007 \r
56008     limit: function(){\r
56009         this.red = (this.red > 0.0) ? ( (this.red > 1.0) ? 1.0 : this.red ) : 0.0;\r
56010         this.green = (this.green > 0.0) ? ( (this.green > 1.0) ? 1.0 : this.green ) : 0.0;\r
56011         this.blue = (this.blue > 0.0) ? ( (this.blue > 1.0) ? 1.0 : this.blue ) : 0.0;\r
56012     },\r
56013 \r
56014     distance : function(color) {\r
56015         var d = Math.abs(this.red - color.red) + Math.abs(this.green - color.green) + Math.abs(this.blue - color.blue);\r
56016         return d;\r
56017     },\r
56018 \r
56019     blend: function(c1, c2, w){\r
56020         var result = new Flog.RayTracer.Color(0,0,0);\r
56021         result = Flog.RayTracer.Color.prototype.add(\r
56022                     Flog.RayTracer.Color.prototype.multiplyScalar(c1, 1 - w),\r
56023                     Flog.RayTracer.Color.prototype.multiplyScalar(c2, w)\r
56024                   );\r
56025         return result;\r
56026     },\r
56027 \r
56028     toString : function () {\r
56029         var r = Math.floor(this.red*255);\r
56030         var g = Math.floor(this.green*255);\r
56031         var b = Math.floor(this.blue*255);\r
56032 \r
56033         return "rgb("+ r +","+ g +","+ b +")";\r
56034     }\r
56035 }\r
56036 /* Fake a Flog.* namespace */\r
56037 if(typeof(Flog) == 'undefined') var Flog = {};\r
56038 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56039 \r
56040 Flog.RayTracer.Light = Class.create();\r
56041 \r
56042 Flog.RayTracer.Light.prototype = {\r
56043     position: null,\r
56044     color: null,\r
56045     intensity: 10.0,\r
56046 \r
56047     initialize : function(pos, color, intensity) {\r
56048         this.position = pos;\r
56049         this.color = color;\r
56050         this.intensity = (intensity ? intensity : 10.0);\r
56051     },\r
56052 \r
56053     getIntensity: function(distance){\r
56054         if(distance >= intensity) return 0;\r
56055 \r
56056         return Math.pow((intensity - distance) / strength, 0.2);\r
56057     },\r
56058 \r
56059     toString : function () {\r
56060         return 'Light [' + this.position.x + ',' + this.position.y + ',' + this.position.z + ']';\r
56061     }\r
56062 }\r
56063 /* Fake a Flog.* namespace */\r
56064 if(typeof(Flog) == 'undefined') var Flog = {};\r
56065 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56066 \r
56067 Flog.RayTracer.Vector = Class.create();\r
56068 \r
56069 Flog.RayTracer.Vector.prototype = {\r
56070     x : 0.0,\r
56071     y : 0.0,\r
56072     z : 0.0,\r
56073 \r
56074     initialize : function(x, y, z) {\r
56075         this.x = (x ? x : 0);\r
56076         this.y = (y ? y : 0);\r
56077         this.z = (z ? z : 0);\r
56078     },\r
56079 \r
56080     copy: function(vector){\r
56081         this.x = vector.x;\r
56082         this.y = vector.y;\r
56083         this.z = vector.z;\r
56084     },\r
56085 \r
56086     normalize : function() {\r
56087         var m = this.magnitude();\r
56088         return new Flog.RayTracer.Vector(this.x / m, this.y / m, this.z / m);\r
56089     },\r
56090 \r
56091     magnitude : function() {\r
56092         return Math.sqrt((this.x * this.x) + (this.y * this.y) + (this.z * this.z));\r
56093     },\r
56094 \r
56095     cross : function(w) {\r
56096         return new Flog.RayTracer.Vector(\r
56097                                             -this.z * w.y + this.y * w.z,\r
56098                                            this.z * w.x - this.x * w.z,\r
56099                                           -this.y * w.x + this.x * w.y);\r
56100     },\r
56101 \r
56102     dot : function(w) {\r
56103         return this.x * w.x + this.y * w.y + this.z * w.z;\r
56104     },\r
56105 \r
56106     add : function(v, w) {\r
56107         return new Flog.RayTracer.Vector(w.x + v.x, w.y + v.y, w.z + v.z);\r
56108     },\r
56109 \r
56110     subtract : function(v, w) {\r
56111         if(!w || !v) throw 'Vectors must be defined [' + v + ',' + w + ']';\r
56112         return new Flog.RayTracer.Vector(v.x - w.x, v.y - w.y, v.z - w.z);\r
56113     },\r
56114 \r
56115     multiplyVector : function(v, w) {\r
56116         return new Flog.RayTracer.Vector(v.x * w.x, v.y * w.y, v.z * w.z);\r
56117     },\r
56118 \r
56119     multiplyScalar : function(v, w) {\r
56120         return new Flog.RayTracer.Vector(v.x * w, v.y * w, v.z * w);\r
56121     },\r
56122 \r
56123     toString : function () {\r
56124         return 'Vector [' + this.x + ',' + this.y + ',' + this.z + ']';\r
56125     }\r
56126 }\r
56127 /* Fake a Flog.* namespace */\r
56128 if(typeof(Flog) == 'undefined') var Flog = {};\r
56129 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56130 \r
56131 Flog.RayTracer.Ray = Class.create();\r
56132 \r
56133 Flog.RayTracer.Ray.prototype = {\r
56134     position : null,\r
56135     direction : null,\r
56136     initialize : function(pos, dir) {\r
56137         this.position = pos;\r
56138         this.direction = dir;\r
56139     },\r
56140 \r
56141     toString : function () {\r
56142         return 'Ray [' + this.position + ',' + this.direction + ']';\r
56143     }\r
56144 }\r
56145 /* Fake a Flog.* namespace */\r
56146 if(typeof(Flog) == 'undefined') var Flog = {};\r
56147 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56148 \r
56149 Flog.RayTracer.Scene = Class.create();\r
56150 \r
56151 Flog.RayTracer.Scene.prototype = {\r
56152     camera : null,\r
56153     shapes : [],\r
56154     lights : [],\r
56155     background : null,\r
56156 \r
56157     initialize : function() {\r
56158         this.camera = new Flog.RayTracer.Camera(\r
56159             new Flog.RayTracer.Vector(0,0,-5),\r
56160             new Flog.RayTracer.Vector(0,0,1),\r
56161             new Flog.RayTracer.Vector(0,1,0)\r
56162         );\r
56163         this.shapes = new Array();\r
56164         this.lights = new Array();\r
56165         this.background = new Flog.RayTracer.Background(new Flog.RayTracer.Color(0,0,0.5), 0.2);\r
56166     }\r
56167 }\r
56168 /* Fake a Flog.* namespace */\r
56169 if(typeof(Flog) == 'undefined') var Flog = {};\r
56170 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56171 if(typeof(Flog.RayTracer.Material) == 'undefined') Flog.RayTracer.Material = {};\r
56172 \r
56173 Flog.RayTracer.Material.BaseMaterial = Class.create();\r
56174 \r
56175 Flog.RayTracer.Material.BaseMaterial.prototype = {\r
56176 \r
56177     gloss: 2.0,             // [0...infinity] 0 = matt\r
56178     transparency: 0.0,      // 0=opaque\r
56179     reflection: 0.0,        // [0...infinity] 0 = no reflection\r
56180     refraction: 0.50,\r
56181     hasTexture: false,\r
56182 \r
56183     initialize : function() {\r
56184 \r
56185     },\r
56186 \r
56187     getColor: function(u, v){\r
56188 \r
56189     },\r
56190 \r
56191     wrapUp: function(t){\r
56192         t = t % 2.0;\r
56193         if(t < -1) t += 2.0;\r
56194         if(t >= 1) t -= 2.0;\r
56195         return t;\r
56196     },\r
56197 \r
56198     toString : function () {\r
56199         return 'Material [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';\r
56200     }\r
56201 }\r
56202 /* Fake a Flog.* namespace */\r
56203 if(typeof(Flog) == 'undefined') var Flog = {};\r
56204 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56205 \r
56206 Flog.RayTracer.Material.Solid = Class.create();\r
56207 \r
56208 Flog.RayTracer.Material.Solid.prototype = Object.extend(\r
56209     new Flog.RayTracer.Material.BaseMaterial(), {\r
56210         initialize : function(color, reflection, refraction, transparency, gloss) {\r
56211             this.color = color;\r
56212             this.reflection = reflection;\r
56213             this.transparency = transparency;\r
56214             this.gloss = gloss;\r
56215             this.hasTexture = false;\r
56216         },\r
56217 \r
56218         getColor: function(u, v){\r
56219             return this.color;\r
56220         },\r
56221 \r
56222         toString : function () {\r
56223             return 'SolidMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';\r
56224         }\r
56225     }\r
56226 );\r
56227 /* Fake a Flog.* namespace */\r
56228 if(typeof(Flog) == 'undefined') var Flog = {};\r
56229 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56230 \r
56231 Flog.RayTracer.Material.Chessboard = Class.create();\r
56232 \r
56233 Flog.RayTracer.Material.Chessboard.prototype = Object.extend(\r
56234     new Flog.RayTracer.Material.BaseMaterial(), {\r
56235         colorEven: null,\r
56236         colorOdd: null,\r
56237         density: 0.5,\r
56238 \r
56239         initialize : function(colorEven, colorOdd, reflection, transparency, gloss, density) {\r
56240             this.colorEven = colorEven;\r
56241             this.colorOdd = colorOdd;\r
56242             this.reflection = reflection;\r
56243             this.transparency = transparency;\r
56244             this.gloss = gloss;\r
56245             this.density = density;\r
56246             this.hasTexture = true;\r
56247         },\r
56248 \r
56249         getColor: function(u, v){\r
56250             var t = this.wrapUp(u * this.density) * this.wrapUp(v * this.density);\r
56251 \r
56252             if(t < 0.0)\r
56253                 return this.colorEven;\r
56254             else\r
56255                 return this.colorOdd;\r
56256         },\r
56257 \r
56258         toString : function () {\r
56259             return 'ChessMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';\r
56260         }\r
56261     }\r
56262 );\r
56263 /* Fake a Flog.* namespace */\r
56264 if(typeof(Flog) == 'undefined') var Flog = {};\r
56265 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56266 if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};\r
56267 \r
56268 Flog.RayTracer.Shape.BaseShape = Class.create();\r
56269 \r
56270 Flog.RayTracer.Shape.BaseShape.prototype = {\r
56271     position: null,\r
56272     material: null,\r
56273 \r
56274     initialize : function() {\r
56275         this.position = new Vector(0,0,0);\r
56276         this.material = new Flog.RayTracer.Material.SolidMaterial(\r
56277             new Flog.RayTracer.Color(1,0,1),\r
56278             0,\r
56279             0,\r
56280             0\r
56281         );\r
56282     },\r
56283 \r
56284     toString : function () {\r
56285         return 'Material [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';\r
56286     }\r
56287 }\r
56288 /* Fake a Flog.* namespace */\r
56289 if(typeof(Flog) == 'undefined') var Flog = {};\r
56290 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56291 if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};\r
56292 \r
56293 Flog.RayTracer.Shape.Sphere = Class.create();\r
56294 \r
56295 Flog.RayTracer.Shape.Sphere.prototype = {\r
56296     initialize : function(pos, radius, material) {\r
56297         this.radius = radius;\r
56298         this.position = pos;\r
56299         this.material = material;\r
56300     },\r
56301 \r
56302     intersect: function(ray){\r
56303         var info = new Flog.RayTracer.IntersectionInfo();\r
56304         info.shape = this;\r
56305 \r
56306         var dst = Flog.RayTracer.Vector.prototype.subtract(ray.position, this.position);\r
56307 \r
56308         var B = dst.dot(ray.direction);\r
56309         var C = dst.dot(dst) - (this.radius * this.radius);\r
56310         var D = (B * B) - C;\r
56311 \r
56312         if(D > 0){ // intersection!\r
56313             info.isHit = true;\r
56314             info.distance = (-B) - Math.sqrt(D);\r
56315             info.position = Flog.RayTracer.Vector.prototype.add(\r
56316                                                 ray.position,\r
56317                                                 Flog.RayTracer.Vector.prototype.multiplyScalar(\r
56318                                                     ray.direction,\r
56319                                                     info.distance\r
56320                                                 )\r
56321                                             );\r
56322             info.normal = Flog.RayTracer.Vector.prototype.subtract(\r
56323                                             info.position,\r
56324                                             this.position\r
56325                                         ).normalize();\r
56326 \r
56327             info.color = this.material.getColor(0,0);\r
56328         } else {\r
56329             info.isHit = false;\r
56330         }\r
56331         return info;\r
56332     },\r
56333 \r
56334     toString : function () {\r
56335         return 'Sphere [position=' + this.position + ', radius=' + this.radius + ']';\r
56336     }\r
56337 }\r
56338 /* Fake a Flog.* namespace */\r
56339 if(typeof(Flog) == 'undefined') var Flog = {};\r
56340 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56341 if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};\r
56342 \r
56343 Flog.RayTracer.Shape.Plane = Class.create();\r
56344 \r
56345 Flog.RayTracer.Shape.Plane.prototype = {\r
56346     d: 0.0,\r
56347 \r
56348     initialize : function(pos, d, material) {\r
56349         this.position = pos;\r
56350         this.d = d;\r
56351         this.material = material;\r
56352     },\r
56353 \r
56354     intersect: function(ray){\r
56355         var info = new Flog.RayTracer.IntersectionInfo();\r
56356 \r
56357         var Vd = this.position.dot(ray.direction);\r
56358         if(Vd == 0) return info; // no intersection\r
56359 \r
56360         var t = -(this.position.dot(ray.position) + this.d) / Vd;\r
56361         if(t <= 0) return info;\r
56362 \r
56363         info.shape = this;\r
56364         info.isHit = true;\r
56365         info.position = Flog.RayTracer.Vector.prototype.add(\r
56366                                             ray.position,\r
56367                                             Flog.RayTracer.Vector.prototype.multiplyScalar(\r
56368                                                 ray.direction,\r
56369                                                 t\r
56370                                             )\r
56371                                         );\r
56372         info.normal = this.position;\r
56373         info.distance = t;\r
56374 \r
56375         if(this.material.hasTexture){\r
56376             var vU = new Flog.RayTracer.Vector(this.position.y, this.position.z, -this.position.x);\r
56377             var vV = vU.cross(this.position);\r
56378             var u = info.position.dot(vU);\r
56379             var v = info.position.dot(vV);\r
56380             info.color = this.material.getColor(u,v);\r
56381         } else {\r
56382             info.color = this.material.getColor(0,0);\r
56383         }\r
56384 \r
56385         return info;\r
56386     },\r
56387 \r
56388     toString : function () {\r
56389         return 'Plane [' + this.position + ', d=' + this.d + ']';\r
56390     }\r
56391 }\r
56392 /* Fake a Flog.* namespace */\r
56393 if(typeof(Flog) == 'undefined') var Flog = {};\r
56394 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56395 \r
56396 Flog.RayTracer.IntersectionInfo = Class.create();\r
56397 \r
56398 Flog.RayTracer.IntersectionInfo.prototype = {\r
56399     isHit: false,\r
56400     hitCount: 0,\r
56401     shape: null,\r
56402     position: null,\r
56403     normal: null,\r
56404     color: null,\r
56405     distance: null,\r
56406 \r
56407     initialize : function() {\r
56408         this.color = new Flog.RayTracer.Color(0,0,0);\r
56409     },\r
56410 \r
56411     toString : function () {\r
56412         return 'Intersection [' + this.position + ']';\r
56413     }\r
56414 }\r
56415 /* Fake a Flog.* namespace */\r
56416 if(typeof(Flog) == 'undefined') var Flog = {};\r
56417 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56418 \r
56419 Flog.RayTracer.Camera = Class.create();\r
56420 \r
56421 Flog.RayTracer.Camera.prototype = {\r
56422     position: null,\r
56423     lookAt: null,\r
56424     equator: null,\r
56425     up: null,\r
56426     screen: null,\r
56427 \r
56428     initialize : function(pos, lookAt, up) {\r
56429         this.position = pos;\r
56430         this.lookAt = lookAt;\r
56431         this.up = up;\r
56432         this.equator = lookAt.normalize().cross(this.up);\r
56433         this.screen = Flog.RayTracer.Vector.prototype.add(this.position, this.lookAt);\r
56434     },\r
56435 \r
56436     getRay: function(vx, vy){\r
56437         var pos = Flog.RayTracer.Vector.prototype.subtract(\r
56438             this.screen,\r
56439             Flog.RayTracer.Vector.prototype.subtract(\r
56440                 Flog.RayTracer.Vector.prototype.multiplyScalar(this.equator, vx),\r
56441                 Flog.RayTracer.Vector.prototype.multiplyScalar(this.up, vy)\r
56442             )\r
56443         );\r
56444         pos.y = pos.y * -1;\r
56445         var dir = Flog.RayTracer.Vector.prototype.subtract(\r
56446             pos,\r
56447             this.position\r
56448         );\r
56449 \r
56450         var ray = new Flog.RayTracer.Ray(pos, dir.normalize());\r
56451 \r
56452         return ray;\r
56453     },\r
56454 \r
56455     toString : function () {\r
56456         return 'Ray []';\r
56457     }\r
56458 }\r
56459 /* Fake a Flog.* namespace */\r
56460 if(typeof(Flog) == 'undefined') var Flog = {};\r
56461 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56462 \r
56463 Flog.RayTracer.Background = Class.create();\r
56464 \r
56465 Flog.RayTracer.Background.prototype = {\r
56466     color : null,\r
56467     ambience : 0.0,\r
56468 \r
56469     initialize : function(color, ambience) {\r
56470         this.color = color;\r
56471         this.ambience = ambience;\r
56472     }\r
56473 }\r
56474 /* Fake a Flog.* namespace */\r
56475 if(typeof(Flog) == 'undefined') var Flog = {};\r
56476 if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};\r
56477 \r
56478 Flog.RayTracer.Engine = Class.create();\r
56479 \r
56480 Flog.RayTracer.Engine.prototype = {\r
56481     canvas: null, /* 2d context we can render to */\r
56482 \r
56483     initialize: function(options){\r
56484         this.options = Object.extend({\r
56485                 canvasHeight: 100,\r
56486                 canvasWidth: 100,\r
56487                 pixelWidth: 2,\r
56488                 pixelHeight: 2,\r
56489                 renderDiffuse: false,\r
56490                 renderShadows: false,\r
56491                 renderHighlights: false,\r
56492                 renderReflections: false,\r
56493                 rayDepth: 2\r
56494             }, options || {});\r
56495 \r
56496         this.options.canvasHeight /= this.options.pixelHeight;\r
56497         this.options.canvasWidth /= this.options.pixelWidth;\r
56498 \r
56499         /* TODO: dynamically include other scripts */\r
56500     },\r
56501 \r
56502     setPixel: function(x, y, color){\r
56503         var pxW, pxH;\r
56504         pxW = this.options.pixelWidth;\r
56505         pxH = this.options.pixelHeight;\r
56506 \r
56507         if (this.canvas) {\r
56508           this.canvas.fillStyle = color.toString();\r
56509           this.canvas.fillRect (x * pxW, y * pxH, pxW, pxH);\r
56510         } else {\r
56511           // print(x * pxW, y * pxH, pxW, pxH);\r
56512         }\r
56513     },\r
56514 \r
56515     renderScene: function(scene, canvas){\r
56516         /* Get canvas */\r
56517         if (canvas) {\r
56518           this.canvas = canvas.getContext("2d");\r
56519         } else {\r
56520           this.canvas = null;\r
56521         }\r
56522 \r
56523         var canvasHeight = this.options.canvasHeight;\r
56524         var canvasWidth = this.options.canvasWidth;\r
56525 \r
56526         for(var y=0; y < canvasHeight; y++){\r
56527             for(var x=0; x < canvasWidth; x++){\r
56528                 var yp = y * 1.0 / canvasHeight * 2 - 1;\r
56529                         var xp = x * 1.0 / canvasWidth * 2 - 1;\r
56530 \r
56531                         var ray = scene.camera.getRay(xp, yp);\r
56532 \r
56533                         var color = this.getPixelColor(ray, scene);\r
56534 \r
56535                 this.setPixel(x, y, color);\r
56536             }\r
56537         }\r
56538     },\r
56539 \r
56540     getPixelColor: function(ray, scene){\r
56541         var info = this.testIntersection(ray, scene, null);\r
56542         if(info.isHit){\r
56543             var color = this.rayTrace(info, ray, scene, 0);\r
56544             return color;\r
56545         }\r
56546         return scene.background.color;\r
56547     },\r
56548 \r
56549     testIntersection: function(ray, scene, exclude){\r
56550         var hits = 0;\r
56551         var best = new Flog.RayTracer.IntersectionInfo();\r
56552         best.distance = 2000;\r
56553 \r
56554         for(var i=0; i<scene.shapes.length; i++){\r
56555             var shape = scene.shapes[i];\r
56556 \r
56557             if(shape != exclude){\r
56558                 var info = shape.intersect(ray);\r
56559                 if(info.isHit && info.distance >= 0 && info.distance < best.distance){\r
56560                     best = info;\r
56561                     hits++;\r
56562                 }\r
56563             }\r
56564         }\r
56565         best.hitCount = hits;\r
56566         return best;\r
56567     },\r
56568 \r
56569     getReflectionRay: function(P,N,V){\r
56570         var c1 = -N.dot(V);\r
56571         var R1 = Flog.RayTracer.Vector.prototype.add(\r
56572             Flog.RayTracer.Vector.prototype.multiplyScalar(N, 2*c1),\r
56573             V\r
56574         );\r
56575         return new Flog.RayTracer.Ray(P, R1);\r
56576     },\r
56577 \r
56578     rayTrace: function(info, ray, scene, depth){\r
56579         // Calc ambient\r
56580         var color = Flog.RayTracer.Color.prototype.multiplyScalar(info.color, scene.background.ambience);\r
56581         var oldColor = color;\r
56582         var shininess = Math.pow(10, info.shape.material.gloss + 1);\r
56583 \r
56584         for(var i=0; i<scene.lights.length; i++){\r
56585             var light = scene.lights[i];\r
56586 \r
56587             // Calc diffuse lighting\r
56588             var v = Flog.RayTracer.Vector.prototype.subtract(\r
56589                                 light.position,\r
56590                                 info.position\r
56591                             ).normalize();\r
56592 \r
56593             if(this.options.renderDiffuse){\r
56594                 var L = v.dot(info.normal);\r
56595                 if(L > 0.0){\r
56596                     color = Flog.RayTracer.Color.prototype.add(\r
56597                                         color,\r
56598                                         Flog.RayTracer.Color.prototype.multiply(\r
56599                                             info.color,\r
56600                                             Flog.RayTracer.Color.prototype.multiplyScalar(\r
56601                                                 light.color,\r
56602                                                 L\r
56603                                             )\r
56604 \r
56605                                         )\r
56606                                     );\r
56607                 }\r
56608             }\r
56609 \r
56610             // The greater the depth the more accurate the colours, but\r
56611             // this is exponentially (!) expensive\r
56612             if(depth <= this.options.rayDepth){\r
56613           // calculate reflection ray\r
56614           if(this.options.renderReflections && info.shape.material.reflection > 0)\r
56615           {\r
56616               var reflectionRay = this.getReflectionRay(info.position, info.normal, ray.direction);\r
56617               var refl = this.testIntersection(reflectionRay, scene, info.shape);\r
56618 \r
56619               if (refl.isHit && refl.distance > 0){\r
56620                   refl.color = this.rayTrace(refl, reflectionRay, scene, depth + 1);\r
56621               } else {\r
56622                   refl.color = scene.background.color;\r
56623                         }\r
56624 \r
56625                   color = Flog.RayTracer.Color.prototype.blend(\r
56626                     color,\r
56627                     refl.color,\r
56628                     info.shape.material.reflection\r
56629                   );\r
56630           }\r
56631 \r
56632                 // Refraction\r
56633                 /* TODO */\r
56634             }\r
56635 \r
56636             /* Render shadows and highlights */\r
56637 \r
56638             var shadowInfo = new Flog.RayTracer.IntersectionInfo();\r
56639 \r
56640             if(this.options.renderShadows){\r
56641                 var shadowRay = new Flog.RayTracer.Ray(info.position, v);\r
56642 \r
56643                 shadowInfo = this.testIntersection(shadowRay, scene, info.shape);\r
56644                 if(shadowInfo.isHit && shadowInfo.shape != info.shape /*&& shadowInfo.shape.type != 'PLANE'*/){\r
56645                     var vA = Flog.RayTracer.Color.prototype.multiplyScalar(color, 0.5);\r
56646                     var dB = (0.5 * Math.pow(shadowInfo.shape.material.transparency, 0.5));\r
56647                     color = Flog.RayTracer.Color.prototype.addScalar(vA,dB);\r
56648                 }\r
56649             }\r
56650 \r
56651       // Phong specular highlights\r
56652       if(this.options.renderHighlights && !shadowInfo.isHit && info.shape.material.gloss > 0){\r
56653         var Lv = Flog.RayTracer.Vector.prototype.subtract(\r
56654                             info.shape.position,\r
56655                             light.position\r
56656                         ).normalize();\r
56657 \r
56658         var E = Flog.RayTracer.Vector.prototype.subtract(\r
56659                             scene.camera.position,\r
56660                             info.shape.position\r
56661                         ).normalize();\r
56662 \r
56663         var H = Flog.RayTracer.Vector.prototype.subtract(\r
56664                             E,\r
56665                             Lv\r
56666                         ).normalize();\r
56667 \r
56668         var glossWeight = Math.pow(Math.max(info.normal.dot(H), 0), shininess);\r
56669         color = Flog.RayTracer.Color.prototype.add(\r
56670                             Flog.RayTracer.Color.prototype.multiplyScalar(light.color, glossWeight),\r
56671                             color\r
56672                         );\r
56673       }\r
56674         }\r
56675         color.limit();\r
56676         return color;\r
56677     }\r
56678 };\r
56679 \r
56680 \r
56681 function renderScene(){\r
56682     var scene = new Flog.RayTracer.Scene();\r
56683 \r
56684     scene.camera = new Flog.RayTracer.Camera(\r
56685                         new Flog.RayTracer.Vector(0, 0, -15),\r
56686                         new Flog.RayTracer.Vector(-0.2, 0, 5),\r
56687                         new Flog.RayTracer.Vector(0, 1, 0)\r
56688                     );\r
56689 \r
56690     scene.background = new Flog.RayTracer.Background(\r
56691                                 new Flog.RayTracer.Color(0.5, 0.5, 0.5),\r
56692                                 0.4\r
56693                             );\r
56694 \r
56695     var sphere = new Flog.RayTracer.Shape.Sphere(\r
56696         new Flog.RayTracer.Vector(-1.5, 1.5, 2),\r
56697         1.5,\r
56698         new Flog.RayTracer.Material.Solid(\r
56699             new Flog.RayTracer.Color(0,0.5,0.5),\r
56700             0.3,\r
56701             0.0,\r
56702             0.0,\r
56703             2.0\r
56704         )\r
56705     );\r
56706 \r
56707     var sphere1 = new Flog.RayTracer.Shape.Sphere(\r
56708         new Flog.RayTracer.Vector(1, 0.25, 1),\r
56709         0.5,\r
56710         new Flog.RayTracer.Material.Solid(\r
56711             new Flog.RayTracer.Color(0.9,0.9,0.9),\r
56712             0.1,\r
56713             0.0,\r
56714             0.0,\r
56715             1.5\r
56716         )\r
56717     );\r
56718 \r
56719     var plane = new Flog.RayTracer.Shape.Plane(\r
56720                                 new Flog.RayTracer.Vector(0.1, 0.9, -0.5).normalize(),\r
56721                                 1.2,\r
56722                                 new Flog.RayTracer.Material.Chessboard(\r
56723                                     new Flog.RayTracer.Color(1,1,1),\r
56724                                     new Flog.RayTracer.Color(0,0,0),\r
56725                                     0.2,\r
56726                                     0.0,\r
56727                                     1.0,\r
56728                                     0.7\r
56729                                 )\r
56730                             );\r
56731 \r
56732     scene.shapes.push(plane);\r
56733     scene.shapes.push(sphere);\r
56734     scene.shapes.push(sphere1);\r
56735 \r
56736     var light = new Flog.RayTracer.Light(\r
56737         new Flog.RayTracer.Vector(5, 10, -1),\r
56738         new Flog.RayTracer.Color(0.8, 0.8, 0.8)\r
56739     );\r
56740 \r
56741     var light1 = new Flog.RayTracer.Light(\r
56742         new Flog.RayTracer.Vector(-3, 5, -15),\r
56743         new Flog.RayTracer.Color(0.8, 0.8, 0.8),\r
56744         100\r
56745     );\r
56746 \r
56747     scene.lights.push(light);\r
56748     scene.lights.push(light1);\r
56749 \r
56750     var imageWidth = 100; // $F('imageWidth');\r
56751     var imageHeight = 100; // $F('imageHeight');\r
56752     var pixelSize = "5,5".split(','); //  $F('pixelSize').split(',');\r
56753     var renderDiffuse = true; // $F('renderDiffuse');\r
56754     var renderShadows = true; // $F('renderShadows');\r
56755     var renderHighlights = true; // $F('renderHighlights');\r
56756     var renderReflections = true; // $F('renderReflections');\r
56757     var rayDepth = 2;//$F('rayDepth');\r
56758 \r
56759     var raytracer = new Flog.RayTracer.Engine(\r
56760         {\r
56761             canvasWidth: imageWidth,\r
56762             canvasHeight: imageHeight,\r
56763             pixelWidth: pixelSize[0],\r
56764             pixelHeight: pixelSize[1],\r
56765             "renderDiffuse": renderDiffuse,\r
56766             "renderHighlights": renderHighlights,\r
56767             "renderShadows": renderShadows,\r
56768             "renderReflections": renderReflections,\r
56769             "rayDepth": rayDepth\r
56770         }\r
56771     );\r
56772 \r
56773     raytracer.renderScene(scene, null, 0);\r
56774 }\r
56775 \r
56776 // Copyright 2007 Google Inc. All rights reserved.\r
56777 // Redistribution and use in source and binary forms, with or without\r
56778 // modification, are permitted provided that the following conditions are\r
56779 // met:\r
56780 //\r
56781 //     * Redistributions of source code must retain the above copyright\r
56782 //       notice, this list of conditions and the following disclaimer.\r
56783 //     * Redistributions in binary form must reproduce the above\r
56784 //       copyright notice, this list of conditions and the following\r
56785 //       disclaimer in the documentation and/or other materials provided\r
56786 //       with the distribution.\r
56787 //     * Neither the name of Google Inc. nor the names of its\r
56788 //       contributors may be used to endorse or promote products derived\r
56789 //       from this software without specific prior written permission.\r
56790 //\r
56791 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
56792 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
56793 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
56794 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
56795 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
56796 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
56797 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
56798 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
56799 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
56800 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
56801 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
56802 \r
56803 \r
56804 // This is a JavaScript implementation of the Richards\r
56805 // benchmark from:\r
56806 //\r
56807 //    http://www.cl.cam.ac.uk/~mr10/Bench.html\r
56808 // \r
56809 // The benchmark was originally implemented in BCPL by\r
56810 // Martin Richards.\r
56811 \r
56812 \r
56813 var Richards = new BenchmarkSuite('Richards', 34886, [\r
56814   new Benchmark("Richards", runRichards)\r
56815 ]);\r
56816 \r
56817 \r
56818 /**\r
56819  * The Richards benchmark simulates the task dispatcher of an\r
56820  * operating system.\r
56821  **/\r
56822 function runRichards() {\r
56823   var scheduler = new Scheduler();\r
56824   scheduler.addIdleTask(ID_IDLE, 0, null, COUNT);\r
56825 \r
56826   var queue = new Packet(null, ID_WORKER, KIND_WORK);\r
56827   queue = new Packet(queue,  ID_WORKER, KIND_WORK);\r
56828   scheduler.addWorkerTask(ID_WORKER, 1000, queue);\r
56829 \r
56830   queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);\r
56831   queue = new Packet(queue,  ID_DEVICE_A, KIND_DEVICE);\r
56832   queue = new Packet(queue,  ID_DEVICE_A, KIND_DEVICE);\r
56833   scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue);\r
56834 \r
56835   queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);\r
56836   queue = new Packet(queue,  ID_DEVICE_B, KIND_DEVICE);\r
56837   queue = new Packet(queue,  ID_DEVICE_B, KIND_DEVICE);\r
56838   scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue);\r
56839 \r
56840   scheduler.addDeviceTask(ID_DEVICE_A, 4000, null);\r
56841 \r
56842   scheduler.addDeviceTask(ID_DEVICE_B, 5000, null);\r
56843 \r
56844   scheduler.schedule();\r
56845 \r
56846   if (scheduler.queueCount != EXPECTED_QUEUE_COUNT ||\r
56847       scheduler.holdCount != EXPECTED_HOLD_COUNT) {\r
56848     var msg =\r
56849         "Error during execution: queueCount = " + scheduler.queueCount +\r
56850         ", holdCount = " + scheduler.holdCount + ".";\r
56851     print(msg);\r
56852   }\r
56853 }\r
56854 \r
56855 var COUNT = 1000;\r
56856 \r
56857 /**\r
56858  * These two constants specify how many times a packet is queued and\r
56859  * how many times a task is put on hold in a correct run of richards.\r
56860  * They don't have any meaning a such but are characteristic of a\r
56861  * correct run so if the actual queue or hold count is different from\r
56862  * the expected there must be a bug in the implementation.\r
56863  **/\r
56864 var EXPECTED_QUEUE_COUNT = 2322;\r
56865 var EXPECTED_HOLD_COUNT = 928;\r
56866 \r
56867 \r
56868 /**\r
56869  * A scheduler can be used to schedule a set of tasks based on their relative\r
56870  * priorities.  Scheduling is done by maintaining a list of task control blocks\r
56871  * which holds tasks and the data queue they are processing.\r
56872  * @constructor\r
56873  */\r
56874 function Scheduler() {\r
56875   this.queueCount = 0;\r
56876   this.holdCount = 0;\r
56877   this.blocks = new Array(NUMBER_OF_IDS);\r
56878   this.list = null;\r
56879   this.currentTcb = null;\r
56880   this.currentId = null;\r
56881 }\r
56882 \r
56883 var ID_IDLE       = 0;\r
56884 var ID_WORKER     = 1;\r
56885 var ID_HANDLER_A  = 2;\r
56886 var ID_HANDLER_B  = 3;\r
56887 var ID_DEVICE_A   = 4;\r
56888 var ID_DEVICE_B   = 5;\r
56889 var NUMBER_OF_IDS = 6;\r
56890 \r
56891 var KIND_DEVICE   = 0;\r
56892 var KIND_WORK     = 1;\r
56893 \r
56894 /**\r
56895  * Add an idle task to this scheduler.\r
56896  * @param {int} id the identity of the task\r
56897  * @param {int} priority the task's priority\r
56898  * @param {Packet} queue the queue of work to be processed by the task\r
56899  * @param {int} count the number of times to schedule the task\r
56900  */\r
56901 Scheduler.prototype.addIdleTask = function (id, priority, queue, count) {\r
56902   this.addRunningTask(id, priority, queue, new IdleTask(this, 1, count));\r
56903 };\r
56904 \r
56905 /**\r
56906  * Add a work task to this scheduler.\r
56907  * @param {int} id the identity of the task\r
56908  * @param {int} priority the task's priority\r
56909  * @param {Packet} queue the queue of work to be processed by the task\r
56910  */\r
56911 Scheduler.prototype.addWorkerTask = function (id, priority, queue) {\r
56912   this.addTask(id, priority, queue, new WorkerTask(this, ID_HANDLER_A, 0));\r
56913 };\r
56914 \r
56915 /**\r
56916  * Add a handler task to this scheduler.\r
56917  * @param {int} id the identity of the task\r
56918  * @param {int} priority the task's priority\r
56919  * @param {Packet} queue the queue of work to be processed by the task\r
56920  */\r
56921 Scheduler.prototype.addHandlerTask = function (id, priority, queue) {\r
56922   this.addTask(id, priority, queue, new HandlerTask(this));\r
56923 };\r
56924 \r
56925 /**\r
56926  * Add a handler task to this scheduler.\r
56927  * @param {int} id the identity of the task\r
56928  * @param {int} priority the task's priority\r
56929  * @param {Packet} queue the queue of work to be processed by the task\r
56930  */\r
56931 Scheduler.prototype.addDeviceTask = function (id, priority, queue) {\r
56932   this.addTask(id, priority, queue, new DeviceTask(this))\r
56933 };\r
56934 \r
56935 /**\r
56936  * Add the specified task and mark it as running.\r
56937  * @param {int} id the identity of the task\r
56938  * @param {int} priority the task's priority\r
56939  * @param {Packet} queue the queue of work to be processed by the task\r
56940  * @param {Task} task the task to add\r
56941  */\r
56942 Scheduler.prototype.addRunningTask = function (id, priority, queue, task) {\r
56943   this.addTask(id, priority, queue, task);\r
56944   this.currentTcb.setRunning();\r
56945 };\r
56946 \r
56947 /**\r
56948  * Add the specified task to this scheduler.\r
56949  * @param {int} id the identity of the task\r
56950  * @param {int} priority the task's priority\r
56951  * @param {Packet} queue the queue of work to be processed by the task\r
56952  * @param {Task} task the task to add\r
56953  */\r
56954 Scheduler.prototype.addTask = function (id, priority, queue, task) {\r
56955   this.currentTcb = new TaskControlBlock(this.list, id, priority, queue, task);\r
56956   this.list = this.currentTcb;\r
56957   this.blocks[id] = this.currentTcb;\r
56958 };\r
56959 \r
56960 /**\r
56961  * Execute the tasks managed by this scheduler.\r
56962  */\r
56963 Scheduler.prototype.schedule = function () {\r
56964   this.currentTcb = this.list;\r
56965   while (this.currentTcb != null) {\r
56966     if (this.currentTcb.isHeldOrSuspended()) {\r
56967       this.currentTcb = this.currentTcb.link;\r
56968     } else {\r
56969       this.currentId = this.currentTcb.id;\r
56970       this.currentTcb = this.currentTcb.run();\r
56971     }\r
56972   }\r
56973 };\r
56974 \r
56975 /**\r
56976  * Release a task that is currently blocked and return the next block to run.\r
56977  * @param {int} id the id of the task to suspend\r
56978  */\r
56979 Scheduler.prototype.release = function (id) {\r
56980   var tcb = this.blocks[id];\r
56981   if (tcb == null) return tcb;\r
56982   tcb.markAsNotHeld();\r
56983   if (tcb.priority > this.currentTcb.priority) {\r
56984     return tcb;\r
56985   } else {\r
56986     return this.currentTcb;\r
56987   }\r
56988 };\r
56989 \r
56990 /**\r
56991  * Block the currently executing task and return the next task control block\r
56992  * to run.  The blocked task will not be made runnable until it is explicitly\r
56993  * released, even if new work is added to it.\r
56994  */\r
56995 Scheduler.prototype.holdCurrent = function () {\r
56996   this.holdCount++;\r
56997   this.currentTcb.markAsHeld();\r
56998   return this.currentTcb.link;\r
56999 };\r
57000 \r
57001 /**\r
57002  * Suspend the currently executing task and return the next task control block\r
57003  * to run.  If new work is added to the suspended task it will be made runnable.\r
57004  */\r
57005 Scheduler.prototype.suspendCurrent = function () {\r
57006   this.currentTcb.markAsSuspended();\r
57007   return this.currentTcb;\r
57008 };\r
57009 \r
57010 /**\r
57011  * Add the specified packet to the end of the worklist used by the task\r
57012  * associated with the packet and make the task runnable if it is currently\r
57013  * suspended.\r
57014  * @param {Packet} packet the packet to add\r
57015  */\r
57016 Scheduler.prototype.queue = function (packet) {\r
57017   var t = this.blocks[packet.id];\r
57018   if (t == null) return t;\r
57019   this.queueCount++;\r
57020   packet.link = null;\r
57021   packet.id = this.currentId;\r
57022   return t.checkPriorityAdd(this.currentTcb, packet);\r
57023 };\r
57024 \r
57025 /**\r
57026  * A task control block manages a task and the queue of work packages associated\r
57027  * with it.\r
57028  * @param {TaskControlBlock} link the preceding block in the linked block list\r
57029  * @param {int} id the id of this block\r
57030  * @param {int} priority the priority of this block\r
57031  * @param {Packet} queue the queue of packages to be processed by the task\r
57032  * @param {Task} task the task\r
57033  * @constructor\r
57034  */\r
57035 function TaskControlBlock(link, id, priority, queue, task) {\r
57036   this.link = link;\r
57037   this.id = id;\r
57038   this.priority = priority;\r
57039   this.queue = queue;\r
57040   this.task = task;\r
57041   if (queue == null) {\r
57042     this.state = STATE_SUSPENDED;\r
57043   } else {\r
57044     this.state = STATE_SUSPENDED_RUNNABLE;\r
57045   }\r
57046 }\r
57047 \r
57048 /**\r
57049  * The task is running and is currently scheduled.\r
57050  */\r
57051 var STATE_RUNNING = 0;\r
57052 \r
57053 /**\r
57054  * The task has packets left to process.\r
57055  */\r
57056 var STATE_RUNNABLE = 1;\r
57057 \r
57058 /**\r
57059  * The task is not currently running.  The task is not blocked as such and may\r
57060 * be started by the scheduler.\r
57061  */\r
57062 var STATE_SUSPENDED = 2;\r
57063 \r
57064 /**\r
57065  * The task is blocked and cannot be run until it is explicitly released.\r
57066  */\r
57067 var STATE_HELD = 4;\r
57068 \r
57069 var STATE_SUSPENDED_RUNNABLE = STATE_SUSPENDED | STATE_RUNNABLE;\r
57070 var STATE_NOT_HELD = ~STATE_HELD;\r
57071 \r
57072 TaskControlBlock.prototype.setRunning = function () {\r
57073   this.state = STATE_RUNNING;\r
57074 };\r
57075 \r
57076 TaskControlBlock.prototype.markAsNotHeld = function () {\r
57077   this.state = this.state & STATE_NOT_HELD;\r
57078 };\r
57079 \r
57080 TaskControlBlock.prototype.markAsHeld = function () {\r
57081   this.state = this.state | STATE_HELD;\r
57082 };\r
57083 \r
57084 TaskControlBlock.prototype.isHeldOrSuspended = function () {\r
57085   return (this.state & STATE_HELD) != 0 || (this.state == STATE_SUSPENDED);\r
57086 };\r
57087 \r
57088 TaskControlBlock.prototype.markAsSuspended = function () {\r
57089   this.state = this.state | STATE_SUSPENDED;\r
57090 };\r
57091 \r
57092 TaskControlBlock.prototype.markAsRunnable = function () {\r
57093   this.state = this.state | STATE_RUNNABLE;\r
57094 };\r
57095 \r
57096 /**\r
57097  * Runs this task, if it is ready to be run, and returns the next task to run.\r
57098  */\r
57099 TaskControlBlock.prototype.run = function () {\r
57100   var packet;\r
57101   if (this.state == STATE_SUSPENDED_RUNNABLE) {\r
57102     packet = this.queue;\r
57103     this.queue = packet.link;\r
57104     if (this.queue == null) {\r
57105       this.state = STATE_RUNNING;\r
57106     } else {\r
57107       this.state = STATE_RUNNABLE;\r
57108     }\r
57109   } else {\r
57110     packet = null;\r
57111   }\r
57112   return this.task.run(packet);\r
57113 };\r
57114 \r
57115 /**\r
57116  * Adds a packet to the worklist of this block's task, marks this as runnable if\r
57117  * necessary, and returns the next runnable object to run (the one\r
57118  * with the highest priority).\r
57119  */\r
57120 TaskControlBlock.prototype.checkPriorityAdd = function (task, packet) {\r
57121   if (this.queue == null) {\r
57122     this.queue = packet;\r
57123     this.markAsRunnable();\r
57124     if (this.priority > task.priority) return this;\r
57125   } else {\r
57126     this.queue = packet.addTo(this.queue);\r
57127   }\r
57128   return task;\r
57129 };\r
57130 \r
57131 TaskControlBlock.prototype.toString = function () {\r
57132   return "tcb { " + this.task + "@" + this.state + " }";\r
57133 };\r
57134 \r
57135 /**\r
57136  * An idle task doesn't do any work itself but cycles control between the two\r
57137  * device tasks.\r
57138  * @param {Scheduler} scheduler the scheduler that manages this task\r
57139  * @param {int} v1 a seed value that controls how the device tasks are scheduled\r
57140  * @param {int} count the number of times this task should be scheduled\r
57141  * @constructor\r
57142  */\r
57143 function IdleTask(scheduler, v1, count) {\r
57144   this.scheduler = scheduler;\r
57145   this.v1 = v1;\r
57146   this.count = count;\r
57147 }\r
57148 \r
57149 IdleTask.prototype.run = function (packet) {\r
57150   this.count--;\r
57151   if (this.count == 0) return this.scheduler.holdCurrent();\r
57152   if ((this.v1 & 1) == 0) {\r
57153     this.v1 = this.v1 >> 1;\r
57154     return this.scheduler.release(ID_DEVICE_A);\r
57155   } else {\r
57156     this.v1 = (this.v1 >> 1) ^ 0xD008;\r
57157     return this.scheduler.release(ID_DEVICE_B);\r
57158   }\r
57159 };\r
57160 \r
57161 IdleTask.prototype.toString = function () {\r
57162   return "IdleTask"\r
57163 };\r
57164 \r
57165 /**\r
57166  * A task that suspends itself after each time it has been run to simulate\r
57167  * waiting for data from an external device.\r
57168  * @param {Scheduler} scheduler the scheduler that manages this task\r
57169  * @constructor\r
57170  */\r
57171 function DeviceTask(scheduler) {\r
57172   this.scheduler = scheduler;\r
57173   this.v1 = null;\r
57174 }\r
57175 \r
57176 DeviceTask.prototype.run = function (packet) {\r
57177   if (packet == null) {\r
57178     if (this.v1 == null) return this.scheduler.suspendCurrent();\r
57179     var v = this.v1;\r
57180     this.v1 = null;\r
57181     return this.scheduler.queue(v);\r
57182   } else {\r
57183     this.v1 = packet;\r
57184     return this.scheduler.holdCurrent();\r
57185   }\r
57186 };\r
57187 \r
57188 DeviceTask.prototype.toString = function () {\r
57189   return "DeviceTask";\r
57190 };\r
57191 \r
57192 /**\r
57193  * A task that manipulates work packets.\r
57194  * @param {Scheduler} scheduler the scheduler that manages this task\r
57195  * @param {int} v1 a seed used to specify how work packets are manipulated\r
57196  * @param {int} v2 another seed used to specify how work packets are manipulated\r
57197  * @constructor\r
57198  */\r
57199 function WorkerTask(scheduler, v1, v2) {\r
57200   this.scheduler = scheduler;\r
57201   this.v1 = v1;\r
57202   this.v2 = v2;\r
57203 }\r
57204 \r
57205 WorkerTask.prototype.run = function (packet) {\r
57206   if (packet == null) {\r
57207     return this.scheduler.suspendCurrent();\r
57208   } else {\r
57209     if (this.v1 == ID_HANDLER_A) {\r
57210       this.v1 = ID_HANDLER_B;\r
57211     } else {\r
57212       this.v1 = ID_HANDLER_A;\r
57213     }\r
57214     packet.id = this.v1;\r
57215     packet.a1 = 0;\r
57216     for (var i = 0; i < DATA_SIZE; i++) {\r
57217       this.v2++;\r
57218       if (this.v2 > 26) this.v2 = 1;\r
57219       packet.a2[i] = this.v2;\r
57220     }\r
57221     return this.scheduler.queue(packet);\r
57222   }\r
57223 };\r
57224 \r
57225 WorkerTask.prototype.toString = function () {\r
57226   return "WorkerTask";\r
57227 };\r
57228 \r
57229 /**\r
57230  * A task that manipulates work packets and then suspends itself.\r
57231  * @param {Scheduler} scheduler the scheduler that manages this task\r
57232  * @constructor\r
57233  */\r
57234 function HandlerTask(scheduler) {\r
57235   this.scheduler = scheduler;\r
57236   this.v1 = null;\r
57237   this.v2 = null;\r
57238 }\r
57239 \r
57240 HandlerTask.prototype.run = function (packet) {\r
57241   if (packet != null) {\r
57242     if (packet.kind == KIND_WORK) {\r
57243       this.v1 = packet.addTo(this.v1);\r
57244     } else {\r
57245       this.v2 = packet.addTo(this.v2);\r
57246     }\r
57247   }\r
57248   if (this.v1 != null) {\r
57249     var count = this.v1.a1;\r
57250     var v;\r
57251     if (count < DATA_SIZE) {\r
57252       if (this.v2 != null) {\r
57253         v = this.v2;\r
57254         this.v2 = this.v2.link;\r
57255         v.a1 = this.v1.a2[count];\r
57256         this.v1.a1 = count + 1;\r
57257         return this.scheduler.queue(v);\r
57258       }\r
57259     } else {\r
57260       v = this.v1;\r
57261       this.v1 = this.v1.link;\r
57262       return this.scheduler.queue(v);\r
57263     }\r
57264   }\r
57265   return this.scheduler.suspendCurrent();\r
57266 };\r
57267 \r
57268 HandlerTask.prototype.toString = function () {\r
57269   return "HandlerTask";\r
57270 };\r
57271 \r
57272 /* --- *\r
57273  * P a c k e t\r
57274  * --- */\r
57275 \r
57276 var DATA_SIZE = 4;\r
57277 \r
57278 /**\r
57279  * A simple package of data that is manipulated by the tasks.  The exact layout\r
57280  * of the payload data carried by a packet is not importaint, and neither is the\r
57281  * nature of the work performed on packets by the tasks.\r
57282  *\r
57283  * Besides carrying data, packets form linked lists and are hence used both as\r
57284  * data and worklists.\r
57285  * @param {Packet} link the tail of the linked list of packets\r
57286  * @param {int} id an ID for this packet\r
57287  * @param {int} kind the type of this packet\r
57288  * @constructor\r
57289  */\r
57290 function Packet(link, id, kind) {\r
57291   this.link = link;\r
57292   this.id = id;\r
57293   this.kind = kind;\r
57294   this.a1 = 0;\r
57295   this.a2 = new Array(DATA_SIZE);\r
57296 }\r
57297 \r
57298 /**\r
57299  * Add this packet to the end of a worklist, and return the worklist.\r
57300  * @param {Packet} queue the worklist to add this packet to\r
57301  */\r
57302 Packet.prototype.addTo = function (queue) {\r
57303   this.link = null;\r
57304   if (queue == null) return this;\r
57305   var peek, next = queue;\r
57306   while ((peek = next.link) != null)\r
57307     next = peek;\r
57308   next.link = this;\r
57309   return queue;\r
57310 };\r
57311 \r
57312 Packet.prototype.toString = function () {\r
57313   return "Packet";\r
57314 };\r
57315 // Copyright 2008 Google Inc. All Rights Reserved.\r
57316 // Redistribution and use in source and binary forms, with or without\r
57317 // modification, are permitted provided that the following conditions are\r
57318 // met:\r
57319 //\r
57320 //     * Redistributions of source code must retain the above copyright\r
57321 //       notice, this list of conditions and the following disclaimer.\r
57322 //     * Redistributions in binary form must reproduce the above\r
57323 //       copyright notice, this list of conditions and the following\r
57324 //       disclaimer in the documentation and/or other materials provided\r
57325 //       with the distribution.\r
57326 //     * Neither the name of Google Inc. nor the names of its\r
57327 //       contributors may be used to endorse or promote products derived\r
57328 //       from this software without specific prior written permission.\r
57329 //\r
57330 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
57331 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
57332 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
57333 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
57334 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
57335 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
57336 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
57337 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
57338 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
57339 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
57340 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
57341 \r
57342 \r
57343 load('base.js');\r
57344 load('crypto.js');\r
57345 \r
57346 function PrintResult(name, result) {\r
57347   print(name + ': ' + result);\r
57348 }\r
57349 \r
57350 \r
57351 function PrintScore(score) {\r
57352   print('----');\r
57353   print('Score: ' + score);\r
57354 }\r
57355 \r
57356 \r
57357 BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,\r
57358                            NotifyScore: PrintScore });\r
57359 // Copyright 2008 Google Inc. All Rights Reserved.\r
57360 // Redistribution and use in source and binary forms, with or without\r
57361 // modification, are permitted provided that the following conditions are\r
57362 // met:\r
57363 //\r
57364 //     * Redistributions of source code must retain the above copyright\r
57365 //       notice, this list of conditions and the following disclaimer.\r
57366 //     * Redistributions in binary form must reproduce the above\r
57367 //       copyright notice, this list of conditions and the following\r
57368 //       disclaimer in the documentation and/or other materials provided\r
57369 //       with the distribution.\r
57370 //     * Neither the name of Google Inc. nor the names of its\r
57371 //       contributors may be used to endorse or promote products derived\r
57372 //       from this software without specific prior written permission.\r
57373 //\r
57374 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
57375 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
57376 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
57377 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
57378 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
57379 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
57380 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
57381 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
57382 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
57383 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
57384 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
57385 \r
57386 \r
57387 load('base.js');\r
57388 load('deltablue.js');\r
57389 \r
57390 function PrintResult(name, result) {\r
57391   print(name + ': ' + result);\r
57392 }\r
57393 \r
57394 \r
57395 function PrintScore(score) {\r
57396   print('----');\r
57397   print('Score: ' + score);\r
57398 }\r
57399 \r
57400 \r
57401 BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,\r
57402                            NotifyScore: PrintScore });\r
57403 // Copyright 2008 Google Inc. All Rights Reserved.\r
57404 // Redistribution and use in source and binary forms, with or without\r
57405 // modification, are permitted provided that the following conditions are\r
57406 // met:\r
57407 //\r
57408 //     * Redistributions of source code must retain the above copyright\r
57409 //       notice, this list of conditions and the following disclaimer.\r
57410 //     * Redistributions in binary form must reproduce the above\r
57411 //       copyright notice, this list of conditions and the following\r
57412 //       disclaimer in the documentation and/or other materials provided\r
57413 //       with the distribution.\r
57414 //     * Neither the name of Google Inc. nor the names of its\r
57415 //       contributors may be used to endorse or promote products derived\r
57416 //       from this software without specific prior written permission.\r
57417 //\r
57418 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
57419 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
57420 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
57421 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
57422 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
57423 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
57424 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
57425 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
57426 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
57427 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
57428 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
57429 \r
57430 \r
57431 load('base.js');\r
57432 load('earley-boyer.js');\r
57433 \r
57434 function PrintResult(name, result) {\r
57435   print(name + ': ' + result);\r
57436 }\r
57437 \r
57438 \r
57439 function PrintScore(score) {\r
57440   print('----');\r
57441   print('Score: ' + score);\r
57442 }\r
57443 \r
57444 \r
57445 BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,\r
57446                            NotifyScore: PrintScore });\r
57447 // Copyright 2008 Google Inc. All Rights Reserved.\r
57448 // Redistribution and use in source and binary forms, with or without\r
57449 // modification, are permitted provided that the following conditions are\r
57450 // met:\r
57451 //\r
57452 //     * Redistributions of source code must retain the above copyright\r
57453 //       notice, this list of conditions and the following disclaimer.\r
57454 //     * Redistributions in binary form must reproduce the above\r
57455 //       copyright notice, this list of conditions and the following\r
57456 //       disclaimer in the documentation and/or other materials provided\r
57457 //       with the distribution.\r
57458 //     * Neither the name of Google Inc. nor the names of its\r
57459 //       contributors may be used to endorse or promote products derived\r
57460 //       from this software without specific prior written permission.\r
57461 //\r
57462 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
57463 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
57464 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
57465 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
57466 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
57467 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
57468 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
57469 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
57470 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
57471 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
57472 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
57473 \r
57474 \r
57475 load('base.js');\r
57476 load('richards.js');\r
57477 load('deltablue.js');\r
57478 load('crypto.js');\r
57479 load('raytrace.js');\r
57480 load('earley-boyer.js');\r
57481 \r
57482 \r
57483 function PrintResult(name, result) {\r
57484   print(name + ': ' + result);\r
57485 }\r
57486 \r
57487 \r
57488 function PrintScore(score) {\r
57489   print('----');\r
57490   print('Score: ' + score);\r
57491 }\r
57492 \r
57493 \r
57494 BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,\r
57495                            NotifyScore: PrintScore });\r
57496 // Copyright 2008 Google Inc. All Rights Reserved.\r
57497 // Redistribution and use in source and binary forms, with or without\r
57498 // modification, are permitted provided that the following conditions are\r
57499 // met:\r
57500 //\r
57501 //     * Redistributions of source code must retain the above copyright\r
57502 //       notice, this list of conditions and the following disclaimer.\r
57503 //     * Redistributions in binary form must reproduce the above\r
57504 //       copyright notice, this list of conditions and the following\r
57505 //       disclaimer in the documentation and/or other materials provided\r
57506 //       with the distribution.\r
57507 //     * Neither the name of Google Inc. nor the names of its\r
57508 //       contributors may be used to endorse or promote products derived\r
57509 //       from this software without specific prior written permission.\r
57510 //\r
57511 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
57512 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
57513 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
57514 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
57515 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
57516 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
57517 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
57518 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
57519 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
57520 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
57521 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
57522 \r
57523 \r
57524 load('base.js');\r
57525 load('raytrace.js');\r
57526 \r
57527 function PrintResult(name, result) {\r
57528   print(name + ': ' + result);\r
57529 }\r
57530 \r
57531 \r
57532 function PrintScore(score) {\r
57533   print('----');\r
57534   print('Score: ' + score);\r
57535 }\r
57536 \r
57537 \r
57538 BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,\r
57539                            NotifyScore: PrintScore });\r
57540 // Copyright 2008 Google Inc. All Rights Reserved.\r
57541 // Redistribution and use in source and binary forms, with or without\r
57542 // modification, are permitted provided that the following conditions are\r
57543 // met:\r
57544 //\r
57545 //     * Redistributions of source code must retain the above copyright\r
57546 //       notice, this list of conditions and the following disclaimer.\r
57547 //     * Redistributions in binary form must reproduce the above\r
57548 //       copyright notice, this list of conditions and the following\r
57549 //       disclaimer in the documentation and/or other materials provided\r
57550 //       with the distribution.\r
57551 //     * Neither the name of Google Inc. nor the names of its\r
57552 //       contributors may be used to endorse or promote products derived\r
57553 //       from this software without specific prior written permission.\r
57554 //\r
57555 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
57556 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
57557 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
57558 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
57559 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
57560 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
57561 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
57562 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
57563 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
57564 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
57565 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
57566 \r
57567 \r
57568 load('base.js');\r
57569 load('richards.js');\r
57570 \r
57571 function PrintResult(name, result) {\r
57572   print(name + ': ' + result);\r
57573 }\r
57574 \r
57575 \r
57576 function PrintScore(score) {\r
57577   print('----');\r
57578   print('Score: ' + score);\r
57579 }\r
57580 \r
57581 \r
57582 BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,\r
57583                            NotifyScore: PrintScore });\r
57584 </script>\r
57585 \r
57586 \r
57587 <script id="yui" id="x">\r
57588 /*\r
57589 Copyright (c) 2009, Yahoo! Inc. All rights reserved.\r
57590 Code licensed under the BSD License:\r
57591 http://developer.yahoo.net/yui/license.txt\r
57592 version: 3.0.0\r
57593 build: 1549\r
57594 */\r
57595 (function(){var I={},B=new Date().getTime(),A,E,H=function(){if(window.addEventListener){return function(M,L,K,J){M.addEventListener(L,K,(!!J));};}else{if(window.attachEvent){return function(L,K,J){L.attachEvent("on"+K,J);};}else{return function(){};}}}(),F=function(){if(window.removeEventListener){return function(M,L,K,J){M.removeEventListener(L,K,!!J);};}else{if(window.detachEvent){return function(L,K,J){L.detachEvent("on"+K,J);};}else{return function(){};}}}(),D=function(){YUI.Env.windowLoaded=true;YUI.Env.DOMReady=true;F(window,"load",D);},C={"io.xdrReady":1,"io.xdrResponse":1},G=Array.prototype.slice;if(typeof YUI==="undefined"||!YUI){YUI=function(O,N,M,L,J){var K=this,R=arguments,Q,P=R.length;if(!(K instanceof YUI)){return new YUI(O,N,M,L,J);}else{K._init();for(Q=0;Q<P;Q++){K._config(R[Q]);}K._setup();return K;}};}YUI.prototype={_config:function(N){N=N||{};var O=this.config,L,K,J,M;M=O.modules;for(L in N){if(M&&L=="modules"){J=N[L];for(K in J){if(J.hasOwnProperty(K)){M[K]=J[K];}}}else{if(L=="win"){O[L]=N[L].contentWindow||N[L];O.doc=O[L].document;}else{O[L]=N[L];}}}},_init:function(){var J="3.0.0",K=this;if(J.indexOf("@")>-1){J="test";}K.version=J;K.Env={mods:{},cdn:"http://yui.yahooapis.com/"+J+"/build/",bootstrapped:false,_idx:0,_used:{},_attached:{},_yidx:0,_uidx:0,_loaded:{}};K.Env._loaded[J]={};if(YUI.Env){K.Env._yidx=(++YUI.Env._yidx);K.Env._guidp=("yui_"+J+"-"+K.Env._yidx+"-"+B).replace(/\./g,"_");K.id=K.stamp(K);I[K.id]=K;}K.constructor=YUI;K.config={win:window||{},doc:document,debug:true,useBrowserConsole:true,throwFail:true,bootstrap:true,fetchCSS:true,base:function(){var L,M,O,N;M=document.getElementsByTagName("script");for(O=0;O<M.length;O=O+1){N=M[O].src.match(/^(.*)yui\/yui[\.\-].*js(\?.*)?$/);L=N&&N[1];if(L){break;}}return L||K.Env.cdn;}(),loaderPath:"loader/loader-min.js"};},_setup:function(J){this.use("yui-base");},applyTo:function(P,O,L){if(!(O in C)){this.log(O+": applyTo not allowed","warn","yui");return null;}var K=I[P],N,J,M;if(K){N=O.split(".");J=K;for(M=0;M<N.length;M=M+1){J=J[N[M]];if(!J){this.log("applyTo not found: "+O,"warn","yui");}}return J.apply(K,L);}return null;},add:function(K,M,J,L){YUI.Env.mods[K]={name:K,fn:M,version:J,details:L||{}};return this;},_attach:function(K,O){var T=YUI.Env.mods,L=this.Env._attached,Q,P=K.length,M,N,R,S,J;for(Q=0;Q<P;Q=Q+1){M=K[Q];N=T[M];if(!L[M]&&N){L[M]=true;R=N.details;S=R.requires;J=R.use;if(S){this._attach(this.Array(S));}if(N.fn){N.fn(this);}if(J){this._attach(this.Array(J));}}}},use:function(){if(this._loading){this._useQueue=this._useQueue||new this.Queue();this._useQueue.add(G.call(arguments,0));return this;}var K=this,U=G.call(arguments,0),Z=YUI.Env.mods,b=K.Env._used,V,O=U[0],M=false,X=U[U.length-1],W=K.config.bootstrap,P,R,N,Q=[],J=[],S=K.config.fetchCSS,T=function(d){if(b[d]){return;}var Y=Z[d],c,e,a;if(Y){b[d]=true;e=Y.details.requires;a=Y.details.use;}else{if(!YUI.Env._loaded[K.version][d]){Q.push(d);}else{b[d]=true;}}if(e){if(K.Lang.isString(e)){T(e);}else{for(c=0;c<e.length;c=c+1){T(e[c]);}}}J.push(d);},L;if(typeof X==="function"){U.pop();}else{X=null;}L=function(Y){Y=Y||{success:true,msg:"not dynamic"};if(X){X(K,Y);}if(K.fire){K.fire("yui:load",K,Y);}K._loading=false;if(K._useQueue&&K._useQueue.size()&&!K._loading){K.use.apply(K,K._useQueue.next());}};if(O==="*"){U=[];for(P in Z){if(Z.hasOwnProperty(P)){U.push(P);}}if(X){U.push(X);}return K.use.apply(K,U);}if(K.Loader){M=true;V=new K.Loader(K.config);V.require(U);V.ignoreRegistered=true;V.allowRollup=false;V.calculate(null,(S)?null:"js");U=V.sorted;}N=U.length;for(R=0;R<N;R=R+1){T(U[R]);}N=Q.length;if(N){Q=K.Object.keys(K.Array.hash(Q));}if(W&&N&&K.Loader){K._loading=true;V=new K.Loader(K.config);V.onSuccess=L;V.onFailure=L;V.onTimeout=L;V.context=K;V.attaching=U;V.require((S)?Q:U);V.insert(null,(S)?null:"js");}else{if(W&&N&&K.Get&&!K.Env.bootstrapped){K._loading=true;U=K.Array(arguments,0,true);K.Get.script(K.config.base+K.config.loaderPath,{onEnd:function(){K._loading=false;K.Env.bootstrapped=true;K._attach(["loader"]);K.use.apply(K,U);}});return K;}else{if(N){}K._attach(J);L();}}return K;},namespace:function(){var J=arguments,N=null,L,K,M;for(L=0;L<J.length;L=L+1){M=(""+J[L]).split(".");N=this;for(K=(M[0]=="YAHOO")?1:0;K<M.length;K=K+1){N[M[K]]=N[M[K]]||{};N=N[M[K]];}}return N;},log:function(){},error:function(K,J){if(this.config.throwFail){throw (J||new Error(K));}else{this.message(K,"error");}return this;},guid:function(J){var K=this.Env._guidp+(++this.Env._uidx);return(J)?(J+K):K;},stamp:function(L,M){if(!L){return L;}var J=(typeof L==="string")?L:L._yuid;if(!J){J=this.guid();if(!M){try{L._yuid=J;}catch(K){J=null;}}}return J;}};A=YUI.prototype;for(E in A){YUI[E]=A[E];}YUI._init();H(window,"load",D);YUI.Env.add=H;YUI.Env.remove=F;})();YUI.add("yui-base",function(B){function A(){this._init();this.add.apply(this,arguments);}A.prototype={_init:function(){this._q=[];},next:function(){return this._q.shift();},add:function(){B.Array.each(B.Array(arguments,0,true),function(C){this._q.push(C);},this);return this;},size:function(){return this._q.length;}};B.Queue=A;(function(){B.Lang=B.Lang||{};var R=B.Lang,G="array",I="boolean",D="date",M="error",S="function",H="number",K="null",F="object",O="regexp",N="string",C=Object.prototype.toString,P="undefined",E={"undefined":P,"number":H,"boolean":I,"string":N,"[object Function]":S,"[object RegExp]":O,"[object Array]":G,"[object Date]":D,"[object Error]":M},J=/^\s+|\s+$/g,Q="";R.isArray=function(L){return R.type(L)===G;};R.isBoolean=function(L){return typeof L===I;};R.isFunction=function(L){return R.type(L)===S;};R.isDate=function(L){return R.type(L)===D;};R.isNull=function(L){return L===null;};R.isNumber=function(L){return typeof L===H&&isFinite(L);};R.isObject=function(T,L){return(T&&(typeof T===F||(!L&&R.isFunction(T))))||false;};R.isString=function(L){return typeof L===N;};R.isUndefined=function(L){return typeof L===P;};R.trim=function(L){try{return L.replace(J,Q);}catch(T){return L;}};R.isValue=function(T){var L=R.type(T);\r
57596 switch(L){case H:return isFinite(T);case K:case P:return false;default:return !!(L);}};R.type=function(L){return E[typeof L]||E[C.call(L)]||(L?F:K);};})();(function(){var C=B.Lang,D=Array.prototype,E=function(M,J,L){var I=(L)?2:B.Array.test(M),H,G,F;if(I){try{return D.slice.call(M,J||0);}catch(K){F=[];for(H=0,G=M.length;H<G;H=H+1){F.push(M[H]);}return F;}}else{return[M];}};B.Array=E;E.test=function(H){var F=0;if(C.isObject(H)){if(C.isArray(H)){F=1;}else{try{if("length" in H&&!("tagName" in H)&&!("alert" in H)&&(!B.Lang.isFunction(H.size)||H.size()>1)){F=2;}}catch(G){}}}return F;};E.each=(D.forEach)?function(F,G,H){D.forEach.call(F||[],G,H||B);return B;}:function(G,I,J){var F=(G&&G.length)||0,H;for(H=0;H<F;H=H+1){I.call(J||B,G[H],H,G);}return B;};E.hash=function(H,G){var K={},F=H.length,J=G&&G.length,I;for(I=0;I<F;I=I+1){K[H[I]]=(J&&J>I)?G[I]:true;}return K;};E.indexOf=(D.indexOf)?function(F,G){return D.indexOf.call(F,G);}:function(F,H){for(var G=0;G<F.length;G=G+1){if(F[G]===H){return G;}}return -1;};E.numericSort=function(G,F){return(G-F);};E.some=(D.some)?function(F,G,H){return D.some.call(F,G,H);}:function(G,I,J){var F=G.length,H;for(H=0;H<F;H=H+1){if(I.call(J,G[H],H,G)){return true;}}return false;};})();(function(){var D=B.Lang,C="__",E=function(H,G){var F=G.toString;if(D.isFunction(F)&&F!=Object.prototype.toString){H.toString=F;}};B.merge=function(){var G=arguments,I={},H,F=G.length;for(H=0;H<F;H=H+1){B.mix(I,G[H],true);}return I;};B.mix=function(F,O,H,N,L,M){if(!O||!F){return F||B;}if(L){switch(L){case 1:return B.mix(F.prototype,O.prototype,H,N,0,M);case 2:B.mix(F.prototype,O.prototype,H,N,0,M);break;case 3:return B.mix(F,O.prototype,H,N,0,M);case 4:return B.mix(F.prototype,O,H,N,0,M);default:}}var K=M&&D.isArray(F),J,I,G;if(N&&N.length){for(J=0,I=N.length;J<I;++J){G=N[J];if(G in O){if(M&&D.isObject(F[G],true)){B.mix(F[G],O[G]);}else{if(!K&&(H||!(G in F))){F[G]=O[G];}else{if(K){F.push(O[G]);}}}}}}else{for(J in O){if(M&&D.isObject(F[J],true)){B.mix(F[J],O[J]);}else{if(!K&&(H||!(J in F))){F[J]=O[J];}else{if(K){F.push(O[J]);}}}}if(B.UA.ie){E(F,O);}}return F;};B.cached=function(H,F,G){F=F||{};return function(L,K){var J=(K)?Array.prototype.join.call(arguments,C):L,I=F[J];if(!(J in F)||(G&&F[J]==G)){F[J]=H.apply(H,arguments);}return F[J];};};})();(function(){B.Object=function(H){var G=function(){};G.prototype=H;return new G();};var E=B.Object,D=undefined,C=function(J,I){var H=(I===2),F=(H)?0:[],G;for(G in J){if(H){F++;}else{if(J.hasOwnProperty(G)){F.push((I)?J[G]:G);}}}return F;};E.keys=function(F){return C(F);};E.values=function(F){return C(F,1);};E.size=function(F){return C(F,2);};E.hasKey=function(G,F){return(F in G);};E.hasValue=function(G,F){return(B.Array.indexOf(E.values(G),F)>-1);};E.owns=function(G,F){return(G.hasOwnProperty(F));};E.each=function(J,I,K,H){var G=K||B,F;for(F in J){if(H||J.hasOwnProperty(F)){I.call(G,J[F],F,J);}}return B;};E.getValue=function(J,I){var H=B.Array(I),F=H.length,G;for(G=0;J!==D&&G<F;G=G+1){J=J[H[G]];}return J;};E.setValue=function(L,J,K){var I=B.Array(J),H=I.length-1,F,G=L;if(H>=0){for(F=0;G!==D&&F<H;F=F+1){G=G[I[F]];}if(G!==D){G[I[F]]=K;}else{return D;}}return L;};})();B.UA=function(){var F=function(J){var K=0;return parseFloat(J.replace(/\./g,function(){return(K++==1)?"":".";}));},I=navigator,H={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:I.cajaVersion,secure:false,os:null},E=I&&I.userAgent,G=B.config.win.location,D=G&&G.href,C;H.secure=D&&(D.toLowerCase().indexOf("https")===0);if(E){if((/windows|win32/i).test(E)){H.os="windows";}else{if((/macintosh/i).test(E)){H.os="macintosh";}}if((/KHTML/).test(E)){H.webkit=1;}C=E.match(/AppleWebKit\/([^\s]*)/);if(C&&C[1]){H.webkit=F(C[1]);if(/ Mobile\//.test(E)){H.mobile="Apple";}else{C=E.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/);if(C){H.mobile=C[0];}}C=E.match(/AdobeAIR\/([^\s]*)/);if(C){H.air=C[0];}}if(!H.webkit){C=E.match(/Opera[\s\/]([^\s]*)/);if(C&&C[1]){H.opera=F(C[1]);C=E.match(/Opera Mini[^;]*/);if(C){H.mobile=C[0];}}else{C=E.match(/MSIE\s([^;]*)/);if(C&&C[1]){H.ie=F(C[1]);}else{C=E.match(/Gecko\/([^\s]*)/);if(C){H.gecko=1;C=E.match(/rv:([^\s\)]*)/);if(C&&C[1]){H.gecko=F(C[1]);}}}}}}return H;}();(function(){var F=["yui-base"],D,I=B.config,H=YUI.Env.mods,G,E;B.use.apply(B,F);if(I.core){D=I.core;}else{D=[];G=["get","loader","yui-log","yui-later"];for(E=0;E<G.length;E++){if(H[G[E]]){D.push(G[E]);}}}B.use.apply(B,D);})();},"3.0.0");YUI.add("get",function(A){(function(){var C=A.UA,B=A.Lang,E="text/javascript",F="text/css",D="stylesheet";A.Get=function(){var M={},K=0,U=false,W=function(a,X,b){var Y=b||A.config.win,c=Y.document,e=c.createElement(a),Z;for(Z in X){if(X[Z]&&X.hasOwnProperty(Z)){e.setAttribute(Z,X[Z]);}}return e;},T=function(Y,Z,X){var a={id:A.guid(),type:F,rel:D,href:Y};if(X){A.mix(a,X);}return W("link",a,Z);},S=function(Y,Z,X){var a={id:A.guid(),type:E,src:Y};if(X){A.mix(a,X);}return W("script",a,Z);},N=function(c){var X=M[c],Y,a,g,e,j,b,Z,f;if(X){Y=X.nodes;a=Y.length;g=X.win.document;e=g.getElementsByTagName("head")[0];if(X.insertBefore){j=L(X.insertBefore,c);if(j){e=j.parentNode;}}for(b=0;b<a;b=b+1){Z=Y[b];if(Z.clearAttributes){Z.clearAttributes();}else{for(f in Z){delete Z[f];}}e.removeChild(Z);}}X.nodes=[];},P=function(Y,Z,X){return{tId:Y.tId,win:Y.win,data:Y.data,nodes:Y.nodes,msg:Z,statusText:X,purge:function(){N(this.tId);}};},O=function(b,a,X){var Y=M[b],Z;if(Y&&Y.onEnd){Z=Y.context||Y;Y.onEnd.call(Z,P(Y,a,X));}},V=function(a,Z){var X=M[a],Y;if(X.timer){clearTimeout(X.timer);}if(X.onFailure){Y=X.context||X;X.onFailure.call(Y,P(X,Z));}O(a,Z,"failure");},L=function(X,a){var Y=M[a],Z=(B.isString(X))?Y.win.document.getElementById(X):X;if(!Z){V(a,"target node not found: "+X);}return Z;},I=function(a){var X=M[a],Z,Y;if(X.timer){clearTimeout(X.timer);}X.finished=true;if(X.aborted){Z="transaction "+a+" was aborted";V(a,Z);return;}if(X.onSuccess){Y=X.context||X;X.onSuccess.call(Y,P(X));}O(a,Z,"OK");},Q=function(Z){var X=M[Z],Y;if(X.onTimeout){Y=X.context||X;X.onTimeout.call(Y,P(X));\r
57597 }O(Z,"timeout","timeout");},H=function(Z,c){var Y=M[Z],b,g,f,e,a,X,i;if(Y.timer){clearTimeout(Y.timer);}if(Y.aborted){b="transaction "+Z+" was aborted";V(Z,b);return;}if(c){Y.url.shift();if(Y.varName){Y.varName.shift();}}else{Y.url=(B.isString(Y.url))?[Y.url]:Y.url;if(Y.varName){Y.varName=(B.isString(Y.varName))?[Y.varName]:Y.varName;}}g=Y.win;f=g.document;e=f.getElementsByTagName("head")[0];if(Y.url.length===0){I(Z);return;}X=Y.url[0];if(!X){Y.url.shift();return H(Z);}if(Y.timeout){Y.timer=setTimeout(function(){Q(Z);},Y.timeout);}if(Y.type==="script"){a=S(X,g,Y.attributes);}else{a=T(X,g,Y.attributes);}J(Y.type,a,Z,X,g,Y.url.length);Y.nodes.push(a);if(Y.insertBefore){i=L(Y.insertBefore,Z);if(i){i.parentNode.insertBefore(a,i);}}else{e.appendChild(a);}if((C.webkit||C.gecko)&&Y.type==="css"){H(Z,X);}},G=function(){if(U){return;}U=true;var X,Y;for(X in M){if(M.hasOwnProperty(X)){Y=M[X];if(Y.autopurge&&Y.finished){N(Y.tId);delete M[X];}}}U=false;},R=function(Y,X,Z){Z=Z||{};var c="q"+(K++),a,b=Z.purgethreshold||A.Get.PURGE_THRESH;if(K%b===0){G();}M[c]=A.merge(Z,{tId:c,type:Y,url:X,finished:false,nodes:[]});a=M[c];a.win=a.win||A.config.win;a.context=a.context||a;a.autopurge=("autopurge" in a)?a.autopurge:(Y==="script")?true:false;if(Z.charset){a.attributes=a.attributes||{};a.attributes.charset=Z.charset;}setTimeout(function(){H(c);},0);return{tId:c};},J=function(Z,e,d,Y,c,b,X){var a=X||H;if(C.ie){e.onreadystatechange=function(){var f=this.readyState;if("loaded"===f||"complete"===f){e.onreadystatechange=null;a(d,Y);}};}else{if(C.webkit){if(Z==="script"){e.addEventListener("load",function(){a(d,Y);});}}else{e.onload=function(){a(d,Y);};e.onerror=function(f){V(d,f+": "+Y);};}}};return{PURGE_THRESH:20,_finalize:function(X){setTimeout(function(){I(X);},0);},abort:function(Y){var Z=(B.isString(Y))?Y:Y.tId,X=M[Z];if(X){X.aborted=true;}},script:function(X,Y){return R("script",X,Y);},css:function(X,Y){return R("css",X,Y);}};}();})();},"3.0.0");YUI.add("yui-log",function(A){(function(){var D=A,F="yui:log",B="undefined",C={debug:1,info:1,warn:1,error:1},E;D.log=function(I,Q,G,O){var H=D,P=H.config,K=false,N,L,J,M;if(P.debug){if(G){N=P.logExclude;L=P.logInclude;if(L&&!(G in L)){K=1;}else{if(N&&(G in N)){K=1;}}}if(!K){if(P.useBrowserConsole){J=(G)?G+": "+I:I;if(typeof console!=B&&console.log){M=(Q&&console[Q]&&(Q in C))?Q:"log";console[M](J);}else{if(typeof opera!=B){opera.postError(J);}}}if(H.fire&&!O){if(!E){H.publish(F,{broadcast:2,emitFacade:1});E=1;}H.fire(F,{msg:I,cat:Q,src:G});}}}return H;};D.message=function(){return D.log.apply(D,arguments);};})();},"3.0.0",{requires:["yui-base"]});YUI.add("yui-later",function(A){(function(){var B=A.Lang,C=function(K,E,L,G,H){K=K||0;E=E||{};var F=L,J=A.Array(G),I,D;if(B.isString(L)){F=E[L];}if(!F){}I=function(){F.apply(E,J);};D=(H)?setInterval(I,K):setTimeout(I,K);return{id:D,interval:H,cancel:function(){if(this.interval){clearInterval(D);}else{clearTimeout(D);}}};};A.later=C;B.later=C;})();},"3.0.0",{requires:["yui-base"]});YUI.add("yui",function(A){},"3.0.0",{use:["yui-base","get","yui-log","yui-later"]});\r
57598 </script>\r
57599 \r
57600 \r
57601 <script id="zimbra" type="x">\r
57602         appContextPath = "/zimbra";\r
57603         appCurrentSkin = "sand";\r
57604         appExtension   = ".zgz";\r
57605         appDevMode     = false;\r
57606 \r
57607 \r
57608 \r
57609 if(!window.com_zimbra_email){com_zimbra_email={}\r
57610 }com_zimbra_email.addToFilter="Add to Filter";\r
57611 com_zimbra_email.advancedSearch="Advanced Search";\r
57612 com_zimbra_email.goToUrl="Go to URL";\r
57613 com_zimbra_email.newContact="New Contact";\r
57614 com_zimbra_email.newEmail="New Email";\r
57615 com_zimbra_email.newFilter="New Filter";\r
57616 com_zimbra_email.newIM="New IM";\r
57617 com_zimbra_email.search="Search";\r
57618 if(!window.com_zimbra_date){com_zimbra_date={}\r
57619 }com_zimbra_date.appointmentNewTitle="New Appointment";\r
57620 com_zimbra_date.boundaryFalse="false";\r
57621 com_zimbra_date.boundaryTrue="true";\r
57622 com_zimbra_date["format1.boundary"]="true";\r
57623 com_zimbra_date["format1.pattern"]="(today|tonight|this morning)";\r
57624 com_zimbra_date["format1.rule"]="now";\r
57625 com_zimbra_date["format10.boundary"]="true";\r
57626 com_zimbra_date["format10.pattern"]="{monthname}.? {datenum}(st|nd|rd|th)?";\r
57627 com_zimbra_date["format10.rule"]="now month={monthname},{datenum}";\r
57628 com_zimbra_date["format11.boundary"]="true";\r
57629 com_zimbra_date["format11.pattern"]="{dayname}, {datenum} {monthname} {yearnum}";\r
57630 com_zimbra_date["format11.rule"]="{yearnum}-01-01 month={monthname},{datenum}";\r
57631 com_zimbra_date["format12.boundary"]="true";\r
57632 com_zimbra_date["format12.pattern"]="{datenum} {monthname} {yearnum}";\r
57633 com_zimbra_date["format12.rule"]="{yearnum}-01-01 month={monthname},{datenum}";\r
57634 com_zimbra_date["format13.boundary"]="true";\r
57635 com_zimbra_date["format13.pattern"]="{monthnum}/{datenum}/{yearnum}";\r
57636 com_zimbra_date["format13.rule"]="{yearnum}-{monthnum}-{datenum}";\r
57637 com_zimbra_date["format14.boundary"]="true";\r
57638 com_zimbra_date["format14.pattern"]="{yearnum}-{monthnum}-{datenum}";\r
57639 com_zimbra_date["format14.rule"]="{yearnum}-{monthnum}-{datenum}";\r
57640 com_zimbra_date["format15.boundary"]="true";\r
57641 com_zimbra_date["format15.pattern"]="{monthname} {yearnum}";\r
57642 com_zimbra_date["format15.rule"]="now month={monthname},1";\r
57643 com_zimbra_date["format16.boundary"]="true";\r
57644 com_zimbra_date["format16.pattern"]="{dayname}";\r
57645 com_zimbra_date["format16.rule"]="now +1 {dayname}";\r
57646 com_zimbra_date["format17.boundary"]="true";\r
57647 com_zimbra_date["format17.pattern"]="{datenum}(st|nd|rd|th)? {monthname}?,? {yearnum}";\r
57648 com_zimbra_date["format17.rule"]="{yearnum}-01-01 month={monthname},{datenum}";\r
57649 com_zimbra_date["format18.boundary"]="true";\r
57650 com_zimbra_date["format18.pattern"]="{dayname}, {monthname} {datenum}";\r
57651 com_zimbra_date["format18.rule"]="now month={monthname},{datenum}";\r
57652 com_zimbra_date["format19.boundary"]="true";\r
57653 com_zimbra_date["format19.pattern"]="###";\r
57654 com_zimbra_date["format19.rule"]="###";\r
57655 com_zimbra_date["format2.boundary"]="true";\r
57656 com_zimbra_date["format2.pattern"]="tomorrow";\r
57657 com_zimbra_date["format2.rule"]="now +1 day";\r
57658 com_zimbra_date["format20.boundary"]="true";\r
57659 com_zimbra_date["format20.pattern"]="###";\r
57660 com_zimbra_date["format20.rule"]="###";\r
57661 com_zimbra_date["format21.boundary"]="true";\r
57662 com_zimbra_date["format21.pattern"]="###";\r
57663 com_zimbra_date["format21.rule"]="###";\r
57664 com_zimbra_date["format22.boundary"]="true";\r
57665 com_zimbra_date["format22.pattern"]="###";\r
57666 com_zimbra_date["format22.rule"]="###";\r
57667 com_zimbra_date["format23.boundary"]="true";\r
57668 com_zimbra_date["format23.pattern"]="###";\r
57669 com_zimbra_date["format23.rule"]="###";\r
57670 com_zimbra_date["format24.boundary"]="true";\r
57671 com_zimbra_date["format24.pattern"]="###";\r
57672 com_zimbra_date["format24.rule"]="###";\r
57673 com_zimbra_date["format25.boundary"]="true";\r
57674 com_zimbra_date["format25.pattern"]="###";\r
57675 com_zimbra_date["format25.rule"]="###";\r
57676 com_zimbra_date["format26.boundary"]="true";\r
57677 com_zimbra_date["format26.pattern"]="###";\r
57678 com_zimbra_date["format26.rule"]="###";\r
57679 com_zimbra_date["format27.boundary"]="true";\r
57680 com_zimbra_date["format27.pattern"]="###";\r
57681 com_zimbra_date["format27.rule"]="###";\r
57682 com_zimbra_date["format28.boundary"]="true";\r
57683 com_zimbra_date["format28.pattern"]="###";\r
57684 com_zimbra_date["format28.rule"]="###";\r
57685 com_zimbra_date["format29.boundary"]="true";\r
57686 com_zimbra_date["format29.pattern"]="###";\r
57687 com_zimbra_date["format29.rule"]="###";\r
57688 com_zimbra_date["format3.boundary"]="true";\r
57689 com_zimbra_date["format3.pattern"]="yesterday";\r
57690 com_zimbra_date["format3.rule"]="now -1 day";\r
57691 com_zimbra_date["format30.boundary"]="true";\r
57692 com_zimbra_date["format30.pattern"]="###";\r
57693 com_zimbra_date["format30.rule"]="###";\r
57694 com_zimbra_date["format4.boundary"]="true";\r
57695 com_zimbra_date["format4.pattern"]="(this|next) {dayname}";\r
57696 com_zimbra_date["format4.rule"]="now +1 {dayname}";\r
57697 com_zimbra_date["format5.boundary"]="true";\r
57698 com_zimbra_date["format5.pattern"]="last {dayname}";\r
57699 com_zimbra_date["format5.rule"]="now -1 {dayname}";\r
57700 com_zimbra_date["format6.boundary"]="true";\r
57701 com_zimbra_date["format6.pattern"]="{weekord} {dayname} (of|in) {monthname}";\r
57702 com_zimbra_date["format6.rule"]="now date=1 +1 {monthname} {weekord} {dayname}";\r
57703 com_zimbra_date["format7.boundary"]="true";\r
57704 com_zimbra_date["format7.pattern"]="{weekord} {dayname}";\r
57705 com_zimbra_date["format7.rule"]="now {weekord} {dayname}";\r
57706 com_zimbra_date["format8.boundary"]="true";\r
57707 com_zimbra_date["format8.pattern"]="{datenum}(st|nd|rd|th) (of|in) {monthname}";\r
57708 com_zimbra_date["format8.rule"]="now month={monthname},{datenum}";\r
57709 com_zimbra_date["format9.boundary"]="true";\r
57710 com_zimbra_date["format9.pattern"]="{monthname}.? {datenum}(st|nd|rd|th)?, {yearnum}";\r
57711 com_zimbra_date["format9.rule"]="{yearnum}-01-01 month={monthname},{datenum}";\r
57712 com_zimbra_date.searchForMessages="Search for mail messages";\r
57713 com_zimbra_date.viewDay="Day";\r
57714 if(!window.com_zimbra_phone){com_zimbra_phone={}\r
57715 }com_zimbra_phone.addToContacts="Add To Contacts";\r
57716 com_zimbra_phone.search="Search";\r
57717 com_zimbra_phone.skypeCall="Skype Call";\r
57718 if(!window.com_zimbra_local){com_zimbra_local={}\r
57719 }com_zimbra_local.address="Address:";\r
57720 com_zimbra_local.changeLocation="Change Location by Zip Code";\r
57721 com_zimbra_local.coordsNotFound="Could not find coordinates for the given zip code.";\r
57722 com_zimbra_local.csgNetworkError="Could not detect your location <br> from provided zip using csgnetwork service. <br> Enter your location manually.";\r
57723 com_zimbra_local.enterAddress="Yahoo! Maps: Enter Address";\r
57724 com_zimbra_local.errorLoadingAPI="Error loading Yahoo! API";\r
57725 com_zimbra_local.latitude="Latitude";\r
57726 com_zimbra_local.local="Local";\r
57727 com_zimbra_local.localSearchBtnLabel="Local";\r
57728 com_zimbra_local.localSearchBtnTooltip="Run Y! Local search";\r
57729 com_zimbra_local.longitude="Longitude";\r
57730 com_zimbra_local.manualLocation="Manual Location";\r
57731 com_zimbra_local.maxMindError="Could not auto detect your location <br> using max mind service at this time. <br> Enter your location manually.";\r
57732 com_zimbra_local.menuItemChangeLocation="Change Location";\r
57733 com_zimbra_local.menuItemChangeLocationByZip="Change Location By Zip";\r
57734 com_zimbra_local.menuItemMyLocation="My Location";\r
57735 com_zimbra_local.menuItemPreferences="Preferences";\r
57736 com_zimbra_local.menuItemSearch="Search";\r
57737 com_zimbra_local.menuItemSearchAddress="Search Address";\r
57738 com_zimbra_local.menuItemTraffic="Traffic";\r
57739 com_zimbra_local.menuItemUpcoming="Upcoming";\r
57740 com_zimbra_local.msgBody="Hi,\nYour friend has shared you this Yahoo Map {0}. \n\nPlease access it @    \n\n";\r
57741 com_zimbra_local.msgFooter="\n\nThis email was sent to you by a user on Yahoo Maps (maps.yahoo.com).";\r
57742 com_zimbra_local.msgSubject="{0} sent this Yahoo Maps.";\r
57743 com_zimbra_local.panelTooltip="Yahoo! Local. Right click for more options ";\r
57744 com_zimbra_local.searchFor="Search for:";\r
57745 com_zimbra_local.searchYahooLocal="Search Yahoo! Local";\r
57746 com_zimbra_local.trafficTooltip="Search for Local Traffic";\r
57747 com_zimbra_local.upcomingTooltip="Search for Local Events";\r
57748 com_zimbra_local.ygeoLocalError="Could not detect your location <br> from provided zip using Yahoo! Geo-Local service. <br> Enter your location manually.";\r
57749 com_zimbra_local.ygeoapiURL="http://local.yahooapis.com/MapsService/V1/geocode";\r
57750 com_zimbra_local.zipCode="Zip Code:";\r
57751 com_zimbra_local.zipCodeInvalid="Zipcode invalid.";\r
57752 if(!window.com_zimbra_ymemoticons){com_zimbra_ymemoticons={}\r
57753 }com_zimbra_ymemoticons.preferences="Preferences";\r
57754 com_zimbra_ymemoticons.temporarilyDisableInMail="Temporarily disable in Mail";\r
57755 com_zimbra_ymemoticons.yahooEmoticons="Yahoo! Emoticons";\r
57756 function Com_Zimbra_Email(){}Com_Zimbra_Email.prototype=new ZmZimletBase();\r
57757 Com_Zimbra_Email.prototype.constructor=Com_Zimbra_Email;\r
57758 Com_Zimbra_Email.IM_NEW_IM="im new im";\r
57759 Com_Zimbra_Email.IM_NEW_BUDDY="im new buddy";\r
57760 Com_Zimbra_Email.NEW_FILTER="__new__";\r
57761 Com_Zimbra_Email.prototype.init=function(){if(appCtxt.get(ZmSetting.CONTACTS_ENABLED)){this._composeTooltipHint=ZmMsg.leftClickComposeHint+"<br>"+ZmMsg.rightClickHint;\r
57762 this._newTooltipHint=ZmMsg.leftClickNewContactHint+"<br>"+ZmMsg.rightClickHint;\r
57763 if(appCtxt.get(ZmSetting.IM_ENABLED)){this._presenceCache=[]\r
57764 }}else{this._newTooltipHint=ZmMsg.leftClickComposeHint+"<br>"+ZmMsg.rightClickHint\r
57765 }this._yahooSocialEnabled=this.getBoolConfig("yahooSocialEnabled")\r
57766 };\r
57767 Com_Zimbra_Email.prototype._getRoster=function(){if(!this._roster&&appCtxt.get(ZmSetting.IM_ENABLED)&&!(!appCtxt.get(ZmSetting.IM_PREF_AUTO_LOGIN)&&!appCtxt.getApp(ZmApp.IM).hasRoster())){this._roster=AjxDispatcher.run("GetRoster");\r
57768 var A=this._roster.getRosterItemList();\r
57769 A.addChangeListener(new AjxListener(this,this._rosterChangeListener))\r
57770 }return this._roster\r
57771 };\r
57772 Com_Zimbra_Email.prototype._rosterChangeListener=function(I){if(I.event!=ZmEvent.E_MODIFY){return \r
57773 }var H=I.getDetail("fields");\r
57774 var D=ZmRosterItem.F_PRESENCE in H;\r
57775 if(D){var B=I.getItems();\r
57776 var F={};\r
57777 for(var G=B.length;\r
57778 --G>=0;\r
57779 ){var J=B[G];\r
57780 F[J.getAddress()]=J\r
57781 }var A=this._presenceCache;\r
57782 for(var G=A.length;\r
57783 --G>=0;\r
57784 ){var C=A[G];\r
57785 var J=F[C.im_addr];\r
57786 if(J){var E=document.getElementById(C.img_id);\r
57787 if(E){AjxImg.setImage(E,J.getPresence().getIcon(),true)\r
57788 }else{}}}}};\r
57789 Com_Zimbra_Email.prototype._getHtmlContent=function(D,H,C,A,B){if(C instanceof AjxEmailAddress){var G=appCtxt.getApp(ZmApp.CONTACTS);\r
57790 var E=G&&G.getContactByEmail(C.address);\r
57791 var F=this._getBuddy(E,C.address);\r
57792 if(G&&!E&&E!==null){var I=new AjxCallback(this,this._handleResponseGetContact,[D,H,C,B]);\r
57793 G.getContactByEmail(C.address,I)\r
57794 }return this._updateHtmlContent(D,H,C,E,F)\r
57795 }else{D[H++]=AjxStringUtil.htmlEncode(C);\r
57796 return H\r
57797 }};\r
57798 Com_Zimbra_Email.prototype._updateHtmlContent=function(F,L,E,G,J,B){var H;\r
57799 if(J){var D=J.getPresence();\r
57800 var I=Dwt.getNextId();\r
57801 var C=[AjxStringUtil.htmlEncode(J.getDisplayName())," ",AjxImg.getImageHtml(D.getIcon(),"display: inline; padding: 1px 8px;","id="+I)];\r
57802 H=C.join("");\r
57803 var A={contact:G,buddy:J,im_addr:J.getAddress(),img_id:I};\r
57804 this._presenceCache.push(A);\r
57805 if(this._presenceCache.length>50){this._presenceCache.splice(0,1)\r
57806 }this._getRoster()\r
57807 }else{if(G){H=AjxStringUtil.htmlEncode(G.getFullName());\r
57808 if(!H){H=AjxStringUtil.htmlEncode(E.toString())\r
57809 }}else{H=AjxStringUtil.htmlEncode(E.toString())\r
57810 }}if(B){var K=document.getElementById(B);\r
57811 if(K){K.innerHTML=H\r
57812 }}else{F[L++]=H;\r
57813 return L\r
57814 }};\r
57815 Com_Zimbra_Email.prototype._handleResponseGetContact=function(D,B,F,E,A){if(A){var C=this._getBuddy(A,F.address);\r
57816 this._updateHtmlContent(D,B,F,A,C,E)\r
57817 }};\r
57818 Com_Zimbra_Email.prototype._getBuddy=function(A,B){if(appCtxt.isChildWindow){return \r
57819 }var C;\r
57820 if(appCtxt.get(ZmSetting.IM_ENABLED)&&!(!appCtxt.get(ZmSetting.IM_PREF_AUTO_LOGIN)&&!appCtxt.getApp(ZmApp.IM).hasRoster())){C=A&&A.getBuddy();\r
57821 if(!C){C=AjxDispatcher.run("GetRoster").getRosterItem(B)\r
57822 }}return C\r
57823 };\r
57824 Com_Zimbra_Email.prototype.toolTipPoppedUp=function(C,L,M,B){var K=(L instanceof AjxEmailAddress)?L.address:L;\r
57825 if(this.isMailToLink(K)){K=(this.parseMailToLink(K)).to||K\r
57826 }var A;\r
57827 var D=false;\r
57828 if(this._yahooSocialEnabled){var H=K.split("@");\r
57829 var G=(H.length>0)?H[1]:null;\r
57830 D=(G&&G=="yahoo.com")\r
57831 }var I=AjxDispatcher.run("GetContacts");\r
57832 var J=I?I.getContactByEmail(K):null;\r
57833 if(J){var F=D?this._getYahooHint():this._composeTooltipHint;\r
57834 A=J.getToolTip(K,false,F)\r
57835 }else{var F=D?this._getYahooHint():this._newTooltipHint;\r
57836 var E={addrstr:K.toString(),hint:F};\r
57837 A=AjxTemplate.expand("abook.Contacts#TooltipNotInAddrBook",E)\r
57838 }B.innerHTML=A\r
57839 };\r
57840 Com_Zimbra_Email.prototype.createFilterMenu=function(A){if(this._filterMenu){return \r
57841 }this._newFilterMenuItem=A.getOp("ADDTOFILTER");\r
57842 this._filterMenu=new ZmPopupMenu(A);\r
57843 this._newFilterMenuItem.setMenu(this._filterMenu);\r
57844 this._rules=AjxDispatcher.run("GetFilterRules");\r
57845 this._rules.addChangeListener(new AjxListener(this,this._rulesChangeListener));\r
57846 this._resetFilterMenu()\r
57847 };\r
57848 Com_Zimbra_Email.prototype._resetFilterMenu=function(){var A=this._filterMenu.getItems();\r
57849 while(A.length>0){this._filterMenu.removeChild(A[0])\r
57850 }this._rules.loadRules(false,new AjxCallback(this,this._populateFiltersMenu))\r
57851 };\r
57852 Com_Zimbra_Email.prototype._populateFiltersMenu=function(B){var C=B.getResponse();\r
57853 var D=this._filterMenu;\r
57854 var E=new DwtMenuItem({parent:D});\r
57855 E.setText(this.getMessage("newFilter"));\r
57856 E.setImage("Plus");\r
57857 E.setData(Dwt.KEY_OBJECT,Com_Zimbra_Email.NEW_FILTER);\r
57858 E.addSelectionListener(new AjxListener(this,this._filterItemSelectionListener));\r
57859 if(C.size()){D.createSeparator()\r
57860 }for(var A=0;\r
57861 A<C.size();\r
57862 A++){this._addFilter(D,C.get(A))\r
57863 }};\r
57864 Com_Zimbra_Email.prototype._rulesChangeListener=function(A){if(A.type!=ZmEvent.S_FILTER){return \r
57865 }if(!A.handled){this._resetFilterMenu();\r
57866 A.handled=true\r
57867 }};\r
57868 Com_Zimbra_Email.prototype._filterItemSelectionListener=function(B){var A=B.item;\r
57869 var C=true;\r
57870 var E=A.getData(Dwt.KEY_OBJECT);\r
57871 if(E==Com_Zimbra_Email.NEW_FILTER){C=false;\r
57872 E=new ZmFilterRule();\r
57873 E.addAction(ZmFilterRule.A_KEEP)\r
57874 }var F=this._getAddress(this._actionObject);\r
57875 if(AjxUtil.isString(F)&&this.isMailToLink(F)){F=(this.parseMailToLink(F)).to||F\r
57876 }var D=ZmFilterRule.C_HEADER_VALUE[ZmFilterRule.C_FROM];\r
57877 E.addCondition(ZmFilterRule.TEST_HEADER,ZmFilterRule.OP_IS,F,D);\r
57878 appCtxt.getFilterRuleDialog().popup(E,C)\r
57879 };\r
57880 Com_Zimbra_Email.prototype._addFilter=function(D,C,B){var A=new DwtMenuItem({parent:D,index:B});\r
57881 A.setText(AjxStringUtil.clipByLength(C.name,20));\r
57882 A.setData(Dwt.KEY_OBJECT,C);\r
57883 A.addSelectionListener(new AjxListener(this,this._filterItemSelectionListener))\r
57884 };\r
57885 Com_Zimbra_Email.prototype.getActionMenu=function(D,I,B){var G=ZmZimletBase.prototype.getActionMenu.call(this,D,I,B);\r
57886 if(appCtxt.get(ZmSetting.FILTERS_ENABLED)&&G.getOp("ADDTOFILTER")){this.createFilterMenu(G)\r
57887 }var F=(D instanceof AjxEmailAddress)?D.getAddress():D;\r
57888 if(this.isMailToLink(F)){F=(this.parseMailToLink(F)).to||F\r
57889 }if(!appCtxt.get(ZmSetting.CONTACTS_ENABLED)){if(G.getOp("NEWCONTACT")){G.removeOp("NEWCONTACT")\r
57890 }}var A=G.getOp("NEWIM");\r
57891 if(A){if(!appCtxt.get(ZmSetting.IM_ENABLED)){G.removeOp("NEWIM")\r
57892 }else{var C=D instanceof AjxEmailAddress?D:new AjxEmailAddress(D);\r
57893 ZmImApp.updateImMenuItemByAddress(A,C)\r
57894 }}if(G.getOp("SEARCH")&&!appCtxt.get(ZmSetting.SEARCH_ENABLED)){ZmOperation.removeOperation(G,"SEARCH",G._menuItems)\r
57895 }if(G.getOp("SEARCHBUILDER")&&!appCtxt.get(ZmSetting.BROWSE_ENABLED)){ZmOperation.removeOperation(G,"SEARCHBUILDER",G._menuItems)\r
57896 }if(G.getOp("ADDTOFILTER")&&!appCtxt.get(ZmSetting.FILTERS_ENABLED)){ZmOperation.removeOperation(G,"ADDTOFILTER",G._menuItems)\r
57897 }var H=appCtxt.getApp(ZmApp.CONTACTS);\r
57898 var E=H&&H.getContactByEmail(D.address);\r
57899 if(E){ZmOperation.setOperation(G,"NEWCONTACT",ZmOperation.EDIT_CONTACT)\r
57900 }else{if(H&&!E&&E!==null){G.getOp("NEWCONTACT").setText(ZmMsg.loading);\r
57901 var J=new AjxCallback(this,this._handleResponseGetContact1,[G]);\r
57902 H.getContactByEmail(F,J)\r
57903 }else{ZmOperation.setOperation(G,"NEWCONTACT",ZmOperation.NEW_CONTACT,ZmMsg.AB_ADD_CONTACT)\r
57904 }}return G\r
57905 };\r
57906 Com_Zimbra_Email.prototype._handleResponseGetContact1=function(D,A){var B=A?ZmOperation.EDIT_CONTACT:ZmOperation.NEW_CONTACT;\r
57907 var C=A?null:ZmMsg.AB_ADD_CONTACT;\r
57908 ZmOperation.setOperation(D,"NEWCONTACT",B,C)\r
57909 };\r
57910 Com_Zimbra_Email.prototype.isMailToLink=function(A){return(!!(A.search(/mailto/i)!=-1))\r
57911 };\r
57912 Com_Zimbra_Email.prototype.parseMailToLink=function(C){var B={};\r
57913 var A=C.match(/\bsubject=([^&]+)/);\r
57914 B.subject=A?decodeURIComponent(A[1]):null;\r
57915 A=C.match(/\bto\:([^&]+)/);\r
57916 if(!A){A=C.match(/\bmailto\:([^\?]+)/i)\r
57917 }B.to=A?decodeURIComponent(A[1]):null;\r
57918 A=C.match(/\bbody=([^&]+)/);\r
57919 B.body=A?decodeURIComponent(A[1]):null;\r
57920 return B\r
57921 };\r
57922 Com_Zimbra_Email.prototype.clicked=function(A,I,J,H){var G=(I instanceof AjxEmailAddress)?I.address:I;\r
57923 if(this._yahooSocialEnabled){var B=G.split("@");\r
57924 var C=(B.length>0)?B[1]:null;\r
57925 if(C&&C=="yahoo.com"){var F="http://profiles.yahoo.com/"+B[0];\r
57926 window.open(F,"_blank");\r
57927 return \r
57928 }}var D=AjxDispatcher.run("GetContacts");\r
57929 var E=D?D.getContactByEmail(G):null;\r
57930 if(E||D==null||(AjxUtil.isString(G)&&this.isMailToLink(G))){this._actionObject=null;\r
57931 this._composeListener(H,G)\r
57932 }else{this._actionObject=I;\r
57933 this._contactListener(true)\r
57934 }};\r
57935 Com_Zimbra_Email.prototype.menuItemSelected=function(C,B,A){switch(C){case"SEARCH":this._searchListener();\r
57936 break;\r
57937 case"SEARCHBUILDER":this._browseListener();\r
57938 break;\r
57939 case"NEWEMAIL":this._composeListener(A);\r
57940 break;\r
57941 case"NEWIM":this._newImListener(A);\r
57942 break;\r
57943 case"NEWCONTACT":this._contactListener(true);\r
57944 break;\r
57945 case"ADDTOFILTER":this._filterListener();\r
57946 break;\r
57947 case"GOTOURL":this._goToUrlListener();\r
57948 break\r
57949 }};\r
57950 Com_Zimbra_Email.prototype._getYahooHint=function(){var B=[];\r
57951 var A=0;\r
57952 B[A++]="<center><table border=0><tr><td valign=top><div class='ImgWebSearch'></div></td><td>";\r
57953 B[A++]=ZmMsg.leftClickYahoohint;\r
57954 B[A++]="<div class='TooltipHint'>";\r
57955 B[A++]=ZmMsg.rightClickHint;\r
57956 B[A++]="</div></td></tr></table></center>";\r
57957 return B.join("")\r
57958 };\r
57959 Com_Zimbra_Email.prototype._getAddress=function(A){return(A.constructor==AjxEmailAddress)?A.address:A\r
57960 };\r
57961 Com_Zimbra_Email.prototype._contactListener=function(B){var A=new AjxCallback(this,this._handleLoadContact,[B]);\r
57962 AjxDispatcher.require(["ContactsCore","Contacts"],false,A,null,true)\r
57963 };\r
57964 Com_Zimbra_Email.prototype._newImListener=function(A){ZmImApp.getImMenuItemListener().handleEvent(A)\r
57965 };\r
57966 Com_Zimbra_Email.prototype._getActionedContact=function(B){var A;\r
57967 var C=this._actionObject;\r
57968 if(this._actionObject){if(this._actionObject instanceof ZmContact){A=this._actionObject\r
57969 }else{if(AjxUtil.isString(this._actionObject)){C=this._getAddress(this._actionObject);\r
57970 if(this.isMailToLink(C)){C=(this.parseMailToLink(C)).to||C\r
57971 }A=AjxDispatcher.run("GetContacts").getContactByEmail(C)\r
57972 }else{A=AjxDispatcher.run("GetContacts").getContactByEmail(this._actionObject.address)\r
57973 }}}if(A==null&&B){A=new ZmContact(null);\r
57974 A.initFromEmail(C)\r
57975 }return A\r
57976 };\r
57977 Com_Zimbra_Email.prototype._handleLoadContact=function(B){var A=this._getActionedContact(true);\r
57978 if(window.parentAppCtxt){var C=window.parentAppCtxt.getApp(ZmApp.CONTACTS);\r
57979 C.getContactController().show(A,B)\r
57980 }else{AjxDispatcher.run("GetContactController").show(A,B)\r
57981 }};\r
57982 Com_Zimbra_Email.prototype._composeListener=function(B,E){E=(this._actionObject)?this._getAddress(this._actionObject):E;\r
57983 if(!E){E=""\r
57984 }var D={};\r
57985 var A=(!appCtxt.get(ZmSetting.NEW_WINDOW_COMPOSE)&&B&&B.shiftKey)||(appCtxt.get(ZmSetting.NEW_WINDOW_COMPOSE)&&B&&!B.shiftKey);\r
57986 if(this.isMailToLink(E)){var C=this.parseMailToLink(E);\r
57987 D.toOverride=C.to;\r
57988 D.subjOverride=C.subject;\r
57989 D.extraBodyText=C.body;\r
57990 E=C.to||E\r
57991 }D.action=ZmOperation.NEW_MESSAGE;\r
57992 D.inNewWindow=A;\r
57993 if(!D.toOverride){D.toOverride=E+AjxEmailAddress.SEPARATOR\r
57994 }AjxDispatcher.run("Compose",D)\r
57995 };\r
57996 Com_Zimbra_Email.prototype._browseListener=function(){var A=this._getAddress(this._actionObject);\r
57997 if(this.isMailToLink(A)){A=(this.parseMailToLink(A)).to||A\r
57998 }appCtxt.getSearchController().fromBrowse(A)\r
57999 };\r
58000 Com_Zimbra_Email.prototype._searchListener=function(){var A=this._getAddress(this._actionObject);\r
58001 if(this.isMailToLink(A)){A=(this.parseMailToLink(A)).to||A\r
58002 }appCtxt.getSearchController().fromSearch(this._getAddress(A))\r
58003 };\r
58004 Com_Zimbra_Email.prototype._filterListener=function(){var A=new AjxCallback(this,this._handleLoadFilter);\r
58005 AjxDispatcher.require(["PreferencesCore","Preferences"],false,A,null,true)\r
58006 };\r
58007 Com_Zimbra_Email.prototype._handleLoadFilter=function(){appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_LOADING);\r
58008 var B=new ZmFilterRule();\r
58009 var C=this._getAddress(this._actionObject);\r
58010 if(AjxUtil.isString(C)&&this.isMailToLink(C)){C=(this.parseMailToLink(C)).to||C\r
58011 }var A=ZmFilterRule.C_HEADER_VALUE[ZmFilterRule.C_FROM];\r
58012 B.addCondition(ZmFilterRule.TEST_HEADER,ZmFilterRule.OP_IS,C,A);\r
58013 B.addAction(ZmFilterRule.A_KEEP);\r
58014 appCtxt.getFilterRuleDialog().popup(B)\r
58015 };\r
58016 Com_Zimbra_Email.prototype._goToUrlListener=function(){var D=this._getAddress(this._actionObject);\r
58017 if(AjxUtil.isString(D)&&this.isMailToLink(D)){D=(this.parseMailToLink(D)).to||D\r
58018 }var C=D.split("@");\r
58019 if(C.length){var B=C[C.length-1];\r
58020 var A=B.split(".");\r
58021 this._actionUrl="http://"+((A.length<=2)?"www."+B:B)\r
58022 }if(this._actionUrl){window.open(this._actionUrl,"_blank")\r
58023 }else{this.displayStatusMessage(ZmMsg.errorCreateUrl)\r
58024 }};\r
58025 Com_Zimbra_Date=function(A){if(arguments.length==1){this._generateRegex(A)\r
58026 }};\r
58027 Com_Zimbra_Date.prototype=new ZmZimletBase();\r
58028 Com_Zimbra_Date.prototype.constructor=Com_Zimbra_Date;\r
58029 Com_Zimbra_Date.prototype.TYPE=ZmObjectManager.DATE;\r
58030 Com_Zimbra_Date.validate=function(A,D,B){if(A<1||A>31){return false\r
58031 }if(D<0||D>11){return false\r
58032 }if((D==3||D==5||D==8||D==10)&&A==31){return false\r
58033 }if(B&&D==1){var C=(B%4==0&&(B%100!=0||B%400==0));\r
58034 if(A>29||(A==29&&!C)){return false\r
58035 }}return true\r
58036 };\r
58037 Com_Zimbra_Date.prototype.getCurrentDate=function(A){var B=this[ZmObjectManager.ATTR_CURRENT_DATE];\r
58038 return B?B:new Date()\r
58039 };\r
58040 Com_Zimbra_Date.prototype.init=function(){Com_Zimbra_Date.prototype._zimletContext=this._zimletContext;\r
58041 Com_Zimbra_Date.prototype._className="Object";\r
58042 this._initDateObjectHandlers()\r
58043 };\r
58044 Com_Zimbra_Date.prototype.getActionMenu=function(C,B,A){if(this._zimletContext._contentActionMenu instanceof AjxCallback){this._zimletContext._contentActionMenu=this._zimletContext._contentActionMenu.run()\r
58045 }Com_Zimbra_Date._actionObject=C;\r
58046 Com_Zimbra_Date._actionSpan=B;\r
58047 Com_Zimbra_Date._actionContext=A;\r
58048 return this._zimletContext._contentActionMenu\r
58049 };\r
58050 Com_Zimbra_Date.prototype.menuItemSelected=function(A){switch(A){case"DAYVIEW":this._dayViewListener();\r
58051 break;\r
58052 case"NEWAPPT":this._newApptListener();\r
58053 break;\r
58054 case"SEARCHMAIL":this._searchMailListener();\r
58055 break\r
58056 }};\r
58057 Com_Zimbra_Date.prototype.toolTipPoppedUp=function(C,D,B,A){if(appCtxt.isChildWindow){var E=this.getOpenerApp(ZmApp.CALENDAR);\r
58058 if(E){A.innerHTML=E.getDateToolTip(B?B.date:new Date())\r
58059 }}else{var F=AjxDispatcher.run("GetCalController");\r
58060 A.innerHTML=F.getDayToolTipText(B?B.date:new Date())\r
58061 }};\r
58062 Com_Zimbra_Date.prototype.getOpenerApp=function(C){var B=window.opener;\r
58063 var A=B?B.appCtxt:null;\r
58064 var D=A?A.getApp(C):null;\r
58065 return D\r
58066 };\r
58067 Com_Zimbra_Date.prototype.clicked=function(E,F,D,C){if(appCtxt.isChildWindow){var G=this.getOpenerApp(ZmApp.CALENDAR);\r
58068 if(G){G.showDayView(D.date);\r
58069 window.opener.focus();\r
58070 window.close()\r
58071 }}else{var B=AjxDispatcher.run("GetCalController");\r
58072 var A=B.getMiniCalendar();\r
58073 B.setDate(D.date,0,A.getForceRollOver());\r
58074 if(!B._viewVisible){B.show(ZmId.VIEW_CAL_DAY)\r
58075 }}};\r
58076 Com_Zimbra_Date.prototype.match=function(L,J){if(!Com_Zimbra_Date.PATTERNS){return null\r
58077 }var E,A,H,K,C,D;\r
58078 for(D=0;\r
58079 D<Com_Zimbra_Date.REGEXES.length;\r
58080 D++){K=Com_Zimbra_Date.REGEXES[D];\r
58081 K.lastIndex=J;\r
58082 C=K.exec(L);\r
58083 if(C&&C[0]&&(!E||C[0].length>E[0].length)){E=C;\r
58084 H=Com_Zimbra_Date.RULES[D];\r
58085 A=K.mapping\r
58086 }}if(!E){return null\r
58087 }try{var F,I;\r
58088 for(D in A){F=A[D];\r
58089 I=E[D];\r
58090 H=H.replace(new RegExp("\\{"+F+"\\}","gi"),I)\r
58091 }var B=new Date(this.getCurrentDate().getTime());\r
58092 E.context={rule:H,date:AjxDateUtil.calculate(H,B),monthOnly:0,valid:true};\r
58093 return E\r
58094 }catch(G){if(window.console&&window.console.log){console.log(G)\r
58095 }return null\r
58096 }};\r
58097 Com_Zimbra_Date.prototype._initDateObjectHandlers=function(){if(!appCtxt.get(ZmSetting.CALENDAR_ENABLED)){return \r
58098 }Com_Zimbra_Date.MAPPINGS={datenum:"(0[1-9]|[1-9]|[1-2][0-9]|3[0-1])",dayname:"("+AjxDateUtil.S_DAYNAME+")",weekord:"("+AjxDateUtil.S_WEEKORD+")",monthnum:"(0[1-9]|[1-9]|1[0-2])",monthname:"("+AjxDateUtil.S_MONTHNAME+")",yearnum:"(\\d{2}|[1-9]\\d{2,3})",number:"(\\d+)"};\r
58099 Com_Zimbra_Date.PATTERNS=[];\r
58100 Com_Zimbra_Date.RULES=[];\r
58101 Com_Zimbra_Date.REGEXES=[];\r
58102 var B,D;\r
58103 for(B=1;\r
58104 D=this.getMessage("format"+B+".pattern");\r
58105 B++){if(D.match(/^\?\?\?+/)){break\r
58106 }if(D.match(/^###+/)){break\r
58107 }if(D.match(/^#/)){continue\r
58108 }Com_Zimbra_Date.PATTERNS.push(D);\r
58109 Com_Zimbra_Date.RULES.push(this.getMessage("format"+B+".rule"))\r
58110 }for(B=0;\r
58111 B<Com_Zimbra_Date.DEFAULT_FORMATS.length;\r
58112 B++){Com_Zimbra_Date.PATTERNS.push(Com_Zimbra_Date.DEFAULT_FORMATS[B]);\r
58113 Com_Zimbra_Date.RULES.push(Com_Zimbra_Date.DEFAULT_FORMATS[++B])\r
58114 }var E,C;\r
58115 var A=this.getMessage("boundaryTrue");\r
58116 for(B=0;\r
58117 B<Com_Zimbra_Date.PATTERNS.length;\r
58118 B++){D=Com_Zimbra_Date.PATTERNS[B];\r
58119 D=D.replace(/\s+/g,"\\s+");\r
58120 D=D.replace(/\(([^\)]+)\)/g,"(?:$1)");\r
58121 Com_Zimbra_Date.__replaceKeyword_group=1;\r
58122 Com_Zimbra_Date.__replaceKeyword_mapping={};\r
58123 D=D.replace(/\{([a-z]+)\}/g,Com_Zimbra_Date.__replaceKeyword);\r
58124 E=this.getMessage("format"+B+".boundary");\r
58125 if(E==null||E==A){D="\\b"+D+"\\b"\r
58126 }C=new RegExp(D,"gi");\r
58127 C.mapping=Com_Zimbra_Date.__replaceKeyword_mapping;\r
58128 Com_Zimbra_Date.REGEXES.push(C)\r
58129 }ZmObjectManager.registerHandler(this,ZmObjectManager.DATE,this._zimletContext.priority)\r
58130 };\r
58131 Com_Zimbra_Date.prototype._dayViewListener=function(){var A=new AjxCallback(this,this._handleLoadDayView);\r
58132 AjxDispatcher.require(["CalendarCore","Calendar","CalendarAppt"],false,A,null,true)\r
58133 };\r
58134 Com_Zimbra_Date.prototype._handleLoadDayView=function(){var B=appCtxt.getApp(ZmApp.CALENDAR);\r
58135 B.activate(true);\r
58136 var A=B.getCalController();\r
58137 A.show(ZmId.VIEW_CAL_DAY);\r
58138 A.setDate(Com_Zimbra_Date._actionContext.date)\r
58139 };\r
58140 Com_Zimbra_Date.prototype._newApptListener=function(){var A=new AjxCallback(this,this._handleLoadNewAppt);\r
58141 AjxDispatcher.require(["CalendarCore","Calendar","CalendarAppt"],false,A,null,true)\r
58142 };\r
58143 Com_Zimbra_Date.prototype._handleLoadNewAppt=function(){appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_LOADING);\r
58144 AjxDispatcher.run("GetCalController").newAppointmentHelper(Com_Zimbra_Date._actionContext.date)\r
58145 };\r
58146 Com_Zimbra_Date.prototype._searchMailListener=function(){appCtxt.getSearchController().dateSearch(Com_Zimbra_Date._actionContext.date)\r
58147 };\r
58148 Com_Zimbra_Date.__replaceKeyword_mapping=null;\r
58149 Com_Zimbra_Date.__replaceKeyword_group=-1;\r
58150 Com_Zimbra_Date.__replaceKeyword=function(A,B){var D=Com_Zimbra_Date.MAPPINGS;\r
58151 B=B.toLowerCase();\r
58152 if(!D[B]){return A\r
58153 }var C=Com_Zimbra_Date.__replaceKeyword_mapping;\r
58154 var E=Com_Zimbra_Date.__replaceKeyword_group++;\r
58155 C[E++]=B;\r
58156 return D[B]\r
58157 };\r
58158 Com_Zimbra_Date.DEFAULT_FORMATS=["Brooke Ellen Henrikson","2009-10-17T10:20:00Z","Nicholas Mateo Damon","2008-07-18T17:35:00Z","Shyar Parag Shah","2008-07-16T04:51:00Z","Diego Isaac Comfort","2006-12-08T20:05:00Z","Nila Dharmaraj","2006-03-19T16:30:00Z","Nikhil Dharmaraj","2001-08-22T20:00:00Z"];\r
58159 function Com_Zimbra_Url(){}Com_Zimbra_Url.prototype=new ZmZimletBase();\r
58160 Com_Zimbra_Url.prototype.constructor=Com_Zimbra_Url;\r
58161 Com_Zimbra_Url.prototype.init=function(){this._disablePreview=this.getBoolConfig("disablePreview",true);\r
58162 this._alexaId=this.getConfig("alexaThumbnailId");\r
58163 if(this._alexaId){this._alexaId=AjxStringUtil.trim(this._alexaId);\r
58164 this._alexaKey=AjxStringUtil.trim(this.getConfig("alexaThumbnailKey"))\r
58165 }Com_Zimbra_Url.REGEXES=[];\r
58166 var A=this.getConfig("ZIMLET_CONFIG_REGEX_VALUE");\r
58167 if(A){var B=new RegExp(A,"gi");\r
58168 if(B){Com_Zimbra_Url.REGEXES.push(B)\r
58169 }}if(/^\s*true\s*$/i.test(this.getConfig("supportUNC"))){A=this.getConfig("ZIMLET_UNC_REGEX_VALUE");\r
58170 var B=new RegExp(A,"gi");\r
58171 if(B){Com_Zimbra_Url.REGEXES.push(B)\r
58172 }}};\r
58173 Com_Zimbra_Url.THUMB_URL="http://images.websnapr.com/?url=";\r
58174 Com_Zimbra_Url.THUMB_SIZE='width="200" height="150"';\r
58175 Com_Zimbra_Url.prototype.match=function(B,G){for(var D=0;\r
58176 D<Com_Zimbra_Url.REGEXES.length;\r
58177 D++){var E=Com_Zimbra_Url.REGEXES[D];\r
58178 E.lastIndex=G;\r
58179 var A=E.exec(B);\r
58180 if(!A){continue\r
58181 }var F=A[0].charAt(A[0].length-1);\r
58182 if(F=="."||F==","||F=="!"){var C={index:A.index};\r
58183 C[0]=A[0].substring(0,A[0].length-1);\r
58184 return C\r
58185 }else{return A\r
58186 }}};\r
58187 Com_Zimbra_Url.prototype._getHtmlContent=function(F,I,E,A){var G=E.replace(/\"/g,'"').replace(/^\s+|\s+$/g,"");\r
58188 if(G.substr(0,4)=="www."){G="http://"+G\r
58189 }G=G.replace(/\\/g,"/");\r
58190 if(G.indexOf("\\\\")==0||G.indexOf("//")==0){E.isUNC=true;\r
58191 G="file://"+G\r
58192 }var H="<a target='_blank' href='"+G;\r
58193 if(G.split(/[\?#]/)[0]==(""+window.location).split(/[\?#]/)[0]){var D=G.substr(G.indexOf("?"));\r
58194 if(D){var C=AjxStringUtil.parseQueryString(G);\r
58195 if(C){var B=C.app;\r
58196 if(B&&B.length>0){B=B.toUpperCase();\r
58197 if(appCtxt.getApp(ZmApp[B])){H="<a href='javascript:top.appCtxt.getAppController().activateApp(top.ZmApp."+B+", null, null);"\r
58198 }}}}}F[I++]=H;\r
58199 F[I++]="'>";\r
58200 F[I++]=AjxStringUtil.htmlEncode(E);\r
58201 F[I++]="</a>";\r
58202 return I\r
58203 };\r
58204 Com_Zimbra_Url.prototype.toolTipPoppedUp=function(D,E,C,B){var A=E.replace(/^\s+|\s+$/g,"");\r
58205 if(/^\s*true\s*$/i.test(this.getConfig("stripUrls"))){A=A.replace(/[?#].*$/,"")\r
58206 }A=A.replace(/\\/g,"/");\r
58207 if(A.indexOf("\\\\")==0||A.indexOf("//")==0){A="file://"+A\r
58208 }if(this._disablePreview||A.indexOf("file://")==0){this._showUrlThumbnail(A,B)\r
58209 }else{if(this._alexaId){this._showAlexaThumbnail(A,B)\r
58210 }else{(new Image()).src=this.getResource("blank_pixel.gif");\r
58211 this._showFreeThumbnail(A,B)\r
58212 }}};\r
58213 Com_Zimbra_Url.prototype.clicked=function(){var A=DwtShell.getShell(window).getToolTip();\r
58214 if(A){A.popdown()\r
58215 }return true\r
58216 };\r
58217 Com_Zimbra_Url.prototype._showUrlThumbnail=function(B,A){A.innerHTML="<b>URL:</b> "+decodeURI(B)\r
58218 };\r
58219 Com_Zimbra_Url.prototype._showFreeThumbnail=function(B,A){var D=[];\r
58220 var C=0;\r
58221 D[C++]="<img src='";\r
58222 D[C++]=this.getResource("blank_pixel.gif");\r
58223 D[C++]="' ";\r
58224 D[C++]=Com_Zimbra_Url.THUMB_SIZE;\r
58225 D[C++]=" style='background: url(";\r
58226 D[C++]='"';\r
58227 D[C++]=Com_Zimbra_Url.THUMB_URL;\r
58228 D[C++]=B;\r
58229 D[C++]='"';\r
58230 D[C++]=")'/>";\r
58231 A.innerHTML=D.join("")\r
58232 };\r
58233 Com_Zimbra_Url.ALEXA_THUMBNAIL_CACHE={};\r
58234 Com_Zimbra_Url.ALEXA_CACHE_EXPIRES=10*60*1000;\r
58235 Com_Zimbra_Url.prototype._showAlexaThumbnail=function(A,C){C.innerHTML=["<table style='width: 200px; height: 150px; border-collapse: collapse' cellspacing='0' cellpadding='0'><tr><td align='center'>",ZmMsg.fetchingAlexaThumbnail,"</td></tr></table>"].join("");\r
58236 var F=Com_Zimbra_Url.ALEXA_THUMBNAIL_CACHE[A];\r
58237 if(F){var L=new Date().getTime()-F.timestamp;\r
58238 if(L<Com_Zimbra_Url.ALEXA_CACHE_EXPIRES){var H=["<img src='",F.img,"' />"].join("");\r
58239 C.firstChild.rows[0].cells[0].innerHTML=H;\r
58240 return \r
58241 }else{delete Com_Zimbra_Url.ALEXA_THUMBNAIL_CACHE[A]\r
58242 }}var B=new Date(),E=Com_Zimbra_Url.zeroPad;\r
58243 var I=E(B.getUTCFullYear(),4)+"-"+E(B.getUTCMonth()+1,2)+"-"+E(B.getUTCDate(),2)+"T"+E(B.getUTCHours(),2)+":"+E(B.getUTCMinutes(),2)+":"+E(B.getUTCSeconds(),2)+".000Z";\r
58244 var D=this._computeAlexaSignature(I);\r
58245 var J={Service:"AlexaSiteThumbnail",Action:"Thumbnail",AWSAccessKeyId:this._alexaId,Timestamp:I,Signature:D,Size:"Large",Url:A};\r
58246 var K=[];\r
58247 for(var G in J){K.push(G+"="+AjxStringUtil.urlComponentEncode(J[G]))\r
58248 }K="http://ast.amazonaws.com/xino/?"+K.join("&");\r
58249 this.sendRequest(null,K,null,new AjxCallback(this,this._alexaDataIn,[C,A,K]),true)\r
58250 };\r
58251 Com_Zimbra_Url.prototype._computeAlexaSignature=function(A){return AjxSHA1.b64_hmac_sha1(this._alexaKey,"AlexaSiteThumbnailThumbnail"+A)+"="\r
58252 };\r
58253 Com_Zimbra_Url.prototype._alexaDataIn=function(D,C,G,A){var B=AjxXmlDoc.createFromDom(A.xml);\r
58254 var F=B.toJSObject(true,false,true);\r
58255 F=F.Response;\r
58256 if(F.ResponseStatus.StatusCode=="Success"){if(F.ThumbnailResult.Thumbnail.Exists=="true"){var E=["<img src='",F.ThumbnailResult.Thumbnail,"' />"].join("");\r
58257 D.firstChild.rows[0].cells[0].innerHTML=E;\r
58258 Com_Zimbra_Url.ALEXA_THUMBNAIL_CACHE[C]={img:F.ThumbnailResult.Thumbnail,timestamp:new Date().getTime()}\r
58259 }else{this._showFreeThumbnail(C,D)\r
58260 }}else{this._showFreeThumbnail(C,D)\r
58261 }};\r
58262 Com_Zimbra_Url.zeroPad=function(C,B){var A=""+C;\r
58263 while(A.length<B){A="0"+A\r
58264 }return A\r
58265 };\r
58266 function Com_Zimbra_Phone(){}Com_Zimbra_Phone.prototype=new ZmZimletBase();\r
58267 Com_Zimbra_Phone.prototype.constructor=Com_Zimbra_Phone;\r
58268 Com_Zimbra_Phone.prototype.match=function(C,H){var B=this.regexps;\r
58269 var E=null;\r
58270 for(var F=0;\r
58271 F<B.length;\r
58272 ++F){var G=B[F];\r
58273 G.lastIndex=H;\r
58274 var A=G.exec(C);\r
58275 if(A&&(E==null||A.index<E.index)){if(G.useParen){for(var D=1;\r
58276 D<G.useParen;\r
58277 ++D){A.index+=A[D].length\r
58278 }A[0]=A[G.useParen]\r
58279 }if(!/^000/.test(A[0])){E=A\r
58280 }}}return E\r
58281 };\r
58282 Com_Zimbra_Phone.prototype.init=function(){var B=[];\r
58283 var F=this.xmlObj().contentObject.matchOn[0];\r
58284 var A=F.regex;\r
58285 for(var D=0;\r
58286 D<A.length;\r
58287 ++D){F=A[D];\r
58288 var C=F.attrs;\r
58289 if(!C){C="ig"\r
58290 }var E=new RegExp(F._content,C);\r
58291 if(F.paren!=null){E.useParen=parseInt(F.paren)\r
58292 }B.push(E)\r
58293 }this.regexps=B\r
58294 };\r
58295 Com_Zimbra_Phone.prototype._getHtmlContent=function(D,A,B,C){var E=Com_Zimbra_Phone.getCallToLink(B);\r
58296 D[A++]=['<a href="',E,'" onclick="window.top.Com_Zimbra_Phone.unsetOnbeforeunload()">',AjxStringUtil.htmlEncode(B),"</a>"].join("");\r
58297 return A\r
58298 };\r
58299 Com_Zimbra_Phone.prototype.toolTipPoppedUp=function(D,E,B,A){var C={contentObjText:E};\r
58300 A.innerHTML=AjxTemplate.expand("com_zimbra_phone.templates.Phone#Tooltip",C)\r
58301 };\r
58302 Com_Zimbra_Phone.prototype.menuItemSelected=function(A){switch(A){case"SEARCH":this._searchListener();\r
58303 break;\r
58304 case"ADDCONTACT":this._contactListener();\r
58305 break;\r
58306 case"CALL":this._callListener();\r
58307 break\r
58308 }};\r
58309 Com_Zimbra_Phone.prototype._searchListener=function(){appCtxt.getSearchController().search({query:this._actionObject})\r
58310 };\r
58311 Com_Zimbra_Phone.prototype._contactListener=function(){var A=new ZmContact(null);\r
58312 A.initFromPhone(this._actionObject,this.getConfig("defaultContactField"));\r
58313 AjxDispatcher.run("GetContactController").show(A)\r
58314 };\r
58315 Com_Zimbra_Phone.prototype._callListener=function(){var A=Com_Zimbra_Phone.getCallToLink(this._actionObject.toString());\r
58316 Com_Zimbra_Phone.unsetOnbeforeunload();\r
58317 window.location=A\r
58318 };\r
58319 Com_Zimbra_Phone.resetOnbeforeunload=function(){window.onbeforeunload=ZmZimbraMail._confirmExitMethod\r
58320 };\r
58321 Com_Zimbra_Phone.unsetOnbeforeunload=function(){window.onbeforeunload=null;\r
58322 this._timerObj=new AjxTimedAction(null,Com_Zimbra_Phone.resetOnbeforeunload);\r
58323 AjxTimedAction.scheduleAction(this._timerObj,3000)\r
58324 };\r
58325 Com_Zimbra_Phone.getCallToLink=function(B){if(!B){return""\r
58326 }var A=AjxStringUtil.trim(B,true);\r
58327 if(!/^(?:\+|00)/.test(A)){A="+1"+A\r
58328 }return"callto:"+A\r
58329 };\r
58330 AjxTemplate.register("com_zimbra_phone.templates.Phone#Tooltip",function(B,F,E,A){var D=Boolean(A);\r
58331 E=(typeof E=="string"?{id:E}:E)||{};\r
58332 A=A||[];\r
58333 var C=A.length;\r
58334 A[C++]="<table cellpadding=2 cellspacing=0 border=0><tr valign='center'><td>";\r
58335 A[C++]=AjxImg.getImageHtml("Telephone");\r
58336 A[C++]="</td><td><b><div style='white-space:nowrap'>";\r
58337 A[C++]=ZmMsg.phone;\r
58338 A[C++]=":</div></b></td><td><div style='white-space:nowrap'>";\r
58339 A[C++]=AjxStringUtil.htmlEncode(E.contentObjText);\r
58340 A[C++]="</div></td></tr></table>";\r
58341 return D?A.length:A.join("")\r
58342 },{id:"Tooltip"},true);\r
58343 AjxPackage.define("com_zimbra_phone.templates.Phone");\r
58344 AjxTemplate.register("com_zimbra_phone.templates.Phone",AjxTemplate.getTemplate("com_zimbra_phone.templates.Phone#Tooltip"),AjxTemplate.getParams("com_zimbra_phone.templates.Phone#Tooltip"));\r
58345 function Com_Zimbra_Wikipedia(){}Com_Zimbra_Wikipedia.prototype=new ZmZimletBase();\r
58346 Com_Zimbra_Wikipedia.prototype.constructor=Com_Zimbra_Wikipedia;\r
58347 Com_Zimbra_Wikipedia.prototype.init=function(){};\r
58348 Com_Zimbra_Wikipedia.prototype.doubleClicked=function(){this.singleClicked()\r
58349 };\r
58350 Com_Zimbra_Wikipedia.prototype.singleClicked=function(){var E=[{label:"Search",name:"search",type:"string",value:"",minLength:4,maxLength:100}];\r
58351 if(!this._dlg_propertyEditor){var B=new DwtComposite(this.getShell());\r
58352 this._propertyEditor=new DwtPropertyEditor(B,true);\r
58353 var A=this._propertyEditor;\r
58354 A.initProperties(E);\r
58355 var D={title:"Search Wikipedia",view:B};\r
58356 this._dlg_propertyEditor=this._createDialog(D);\r
58357 var C=this._dlg_propertyEditor;\r
58358 A.setFixedLabelWidth();\r
58359 A.setFixedFieldWidth();\r
58360 C.setButtonListener(DwtDialog.OK_BUTTON,new AjxListener(this,function(){if(!A.validateData()){return \r
58361 }this._doSearch()\r
58362 }))\r
58363 }this._dlg_propertyEditor.popup()\r
58364 };\r
58365 Com_Zimbra_Wikipedia.prototype._doSearch=function(){this._dlg_propertyEditor.popdown();\r
58366 this._displaySearchResult(this._propertyEditor.getProperties().search);\r
58367 this._dlg_propertyEditor.dispose();\r
58368 this._dlg_propertyEditor=null\r
58369 };\r
58370 Com_Zimbra_Wikipedia.prototype._displaySearchResult=function(B){var C=["toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=800,height=600"];\r
58371 C=C.join(",");\r
58372 var A="http://www.wikipedia.org/search-redirect.php?language=en&go=Go&search="+AjxStringUtil.urlEncode(B);\r
58373 window.open(A,"Wikipedia",C)\r
58374 };\r
58375 Com_Zimbra_Local=function(){};\r
58376 Com_Zimbra_Local.prototype=new ZmZimletBase;\r
58377 Com_Zimbra_Local.prototype.constructor=Com_Zimbra_Local;\r
58378 Com_Zimbra_Local.prototype.toString=function(){return"Com_Zimbra_Local"\r
58379 };\r
58380 Com_Zimbra_Local.prototype.init=function(){this._controller=new YahooLocalController(this);\r
58381 if(window.skin&&!skin.searchLocal){skin.searchLocal=AjxCallback.simpleClosure(this._controller.searchLocal,this._controller)\r
58382 }if(appCtxt.get(ZmSetting.WEB_SEARCH_ENABLED)){var A=document.getElementById("skin_search_local_button");\r
58383 if(!A){this.addLocalSearchToolBar((new AjxListener(this,this._localSearchListener)))\r
58384 }else{Dwt.setVisible(A,true)\r
58385 }}YahooMaps.loadExternalResources()\r
58386 };\r
58387 Com_Zimbra_Local.prototype.addLocalSearchToolBar=function(C){var B=this._searchToolBar=appCtxt.getSearchController().getSearchToolbar();\r
58388 var D=document.getElementById(B._htmlElId+"_searchMenuButton");\r
58389 var E=D.parentNode.insertCell(D.cellIndex+2);\r
58390 E.id=B._htmlElId+"_searchLocal";\r
58391 E.className="ZmSearchToolbarCell";\r
58392 var A=B._addButton({tdId:"_searchLocal",lbl:this.getMessage("localSearchBtnLabel"),icon:"WebSearch",tooltip:this.getMessage("localSearchBtnTooltip"),buttonId:ZmId.LOCAL_SEARCH_BUTTON});\r
58393 A.addSelectionListener(C)\r
58394 };\r
58395 Com_Zimbra_Local.prototype._localSearchListener=function(A){var B=AjxStringUtil.trim(this._searchToolBar.getSearchFieldValue());\r
58396 if(B&&B.length){this._controller.searchLocal(B)\r
58397 }};\r
58398 Com_Zimbra_Local.prototype.menuItemSelected=function(A){switch(A){case"MY_LOCATION":this._controller.markMe();\r
58399 break;\r
58400 case"SEARCH":this._controller.searchQuery();\r
58401 break;\r
58402 case"SEARCH_ADDR":this._controller.searchAddress();\r
58403 break;\r
58404 case"TRAFFIC":this._controller.searchTraffic();\r
58405 break;\r
58406 case"UPCOMING":this._controller.searchUpcoming();\r
58407 break;\r
58408 case"MANUAL_LOCAION":this._controller.changeLocation();\r
58409 break;\r
58410 case"MANULA_LOCATION_ZIP":this._controller.changeLocationByZip();\r
58411 break;\r
58412 case"PREFERENCES":this.createPropertyEditor();\r
58413 break;\r
58414 default:this.createPropertyEditor();\r
58415 break\r
58416 }};\r
58417 Com_Zimbra_Local.prototype.singleClicked=function(){this._controller.searchQuery()\r
58418 };\r
58419 YahooLocalController=function(A){if(arguments.length==0){return \r
58420 }ZmController.call(this,appCtxt.getShell());\r
58421 ZmOperation.registerOp("TRAFFIC",{image:"YLogo"});\r
58422 ZmOperation.registerOp("UPCOMING",{image:"ULogo"});\r
58423 this._listeners={};\r
58424 this._listeners[ZmOperation.TRAFFIC]=new AjxListener(this,this._trafficListener);\r
58425 this._listeners[ZmOperation.CANCEL]=new AjxListener(this,this._cancelListener);\r
58426 this._listeners[ZmOperation.SEND]=new AjxListener(this,this._sendListener);\r
58427 this._listeners[ZmOperation.UPCOMING]=new AjxListener(this,this._upcomingListener);\r
58428 this._listeners[ZmOperation.SEARCH]=new AjxListener(this,this.searchAddress);\r
58429 this._zimlet=A;\r
58430 this._searchOkListener=new AjxListener(this,this._handleSearchListener);\r
58431 this._searchAddrOkListener=new AjxListener(this,this._handleSearchAddrListener);\r
58432 this._changeLocationOkListener=new AjxListener(this,this._handleChangeLocationListener)\r
58433 };\r
58434 YahooLocalController.prototype=new ZmController;\r
58435 YahooLocalController.prototype.constructor=YahooLocalController;\r
58436 YahooLocalController.prototype.getLocal=function(){if(typeof (geoip_country_code)=="undefined"||!AjxUtil.isFunction(geoip_country_code)){return \r
58437 }if(!this._ylocal){this._countryCode=geoip_country_code();\r
58438 this._countryName=geoip_country_name();\r
58439 this._city=geoip_city();\r
58440 this._region=geoip_region();\r
58441 this._latitude=geoip_latitude();\r
58442 this._longitude=geoip_longitude();\r
58443 this._ylocal={countryCode:this._countryCode,countryName:this._countryName,city:this._city,region:this._region,latitude:this._latitude,longitude:this._longitude};\r
58444 this._ylocalTmp={countryCode:this._countryCode,countryName:this._countryName,city:this._city,region:this._region,latitude:this._latitude,longitude:this._longitude}\r
58445 }var A=this._zimlet.getUserProperty("manuallocation");\r
58446 if(A&&A.match(/true/i)){this._ylocalTmp.latitude=this._zimlet.getUserProperty("latitude");\r
58447 this._ylocalTmp.longitude=this._zimlet.getUserProperty("longitude");\r
58448 return this._ylocalTmp\r
58449 }return this._ylocal\r
58450 };\r
58451 YahooLocalController.prototype.setLocation=function(A,B,C){this._zimlet.setUserProperty("manuallocation","true");\r
58452 this._zimlet.setUserProperty("latitude",A);\r
58453 this._zimlet.setUserProperty("longitude",B);\r
58454 this._zimlet.saveUserProperties(C)\r
58455 };\r
58456 YahooLocalController.prototype.searchLocal=function(A){this._getGeoIP(new AjxCallback(this,this._handleSearchLocal,A))\r
58457 };\r
58458 YahooLocalController.prototype._handleSearchLocal=function(B){var A=this._setDefaultView(this._curr_lat,this._curr_lon);\r
58459 if(A){this.getMapsView().searchLocal({query:B,defaultLat:A.latitude,defaultLon:A.longitude})\r
58460 }else{this._showErrorLoadingAPI()\r
58461 }};\r
58462 YahooLocalController.prototype.searchQuery=function(){var B=this._zimlet.getMessage("searchYahooLocal");\r
58463 var A=this._zimlet.getMessage("searchFor");\r
58464 this._showInputDialog(B,A,this._searchOkListener)\r
58465 };\r
58466 YahooLocalController.prototype.searchAddress=function(A){var C=this._zimlet.getMessage("enterAddress");\r
58467 var B=this._zimlet.getMessage("address");\r
58468 this._showInputDialog(C,B,this._searchAddrOkListener)\r
58469 };\r
58470 YahooLocalController.prototype.changeLocationByZip=function(A){var C=this._zimlet.getMessage("changeLocation");\r
58471 var B=this._zimlet.getMessage("zipCode");\r
58472 this._showInputDialog(C,B,this._changeLocationOkListener)\r
58473 };\r
58474 YahooLocalController.prototype.searchUpcoming=function(){this._getGeoIP(new AjxCallback(this,this._handleSearchUpcoming))\r
58475 };\r
58476 YahooLocalController.prototype._handleSearchUpcoming=function(){var A=this._setDefaultView(this._curr_lat,this._curr_lon);\r
58477 if(A){this.getMapsView().searchUpcoming({latitude:A.latitude,longitude:A.longitude})\r
58478 }else{this._showErrorLoadingAPI()\r
58479 }};\r
58480 YahooLocalController.prototype.searchTraffic=function(){this._getGeoIP(new AjxCallback(this,this._handleSearchTraffic))\r
58481 };\r
58482 YahooLocalController.prototype._handleSearchTraffic=function(){var A=this._setDefaultView(this._curr_lat,this._curr_lon);\r
58483 if(A){this.getMapsView().searchTraffic({latitude:A.latitude,longitude:A.longitude})\r
58484 }else{this._showErrorLoadingAPI()\r
58485 }};\r
58486 YahooLocalController.prototype.markMe=function(){this._getGeoIP(new AjxCallback(this,this._handleMarkMe))\r
58487 };\r
58488 YahooLocalController.prototype._handleMarkMe=function(){var C;\r
58489 var D;\r
58490 if(AjxUtil.isFunction(geoip_latitude)&&AjxUtil.isFunction(geoip_longitude)){C=geoip_latitude();\r
58491 D=geoip_longitude();\r
58492 this._curr_lat=C;\r
58493 this._curr_lon=D\r
58494 }var B=this._setDefaultView(this._curr_lat,this._curr_lon);\r
58495 if(B){var E=B?B.latitude:null;\r
58496 var A=B?B.longitude:null;\r
58497 this.getMapsView().markMe(E,A)\r
58498 }else{this._showErrorLoadingAPI()\r
58499 }};\r
58500 YahooLocalController.prototype.displayAddress=function(A){this.setView({clean:true,typeControl:true,panControl:false,zoomControl:"long",zoomLevel:6,defaultLocation:A});\r
58501 this.getMapsView().markAddr({defaultLocation:A})\r
58502 };\r
58503 YahooLocalController.prototype.changeLocation=function(A){this._getGeoIP(new AjxCallback(this,this._handleChangeLocation,A))\r
58504 };\r
58505 YahooLocalController.prototype._handleChangeLocation=function(B){var A=this._setDefaultView(45,45);\r
58506 if(A){this.getMapsView().changeLocation({latitude:A.latitude,longitude:A.longitude})\r
58507 }else{this._showErrorLoadingAPI()\r
58508 }};\r
58509 ZmId.VIEW_YMAPS="YAHOOMAPS";\r
58510 YahooLocalController.prototype.getMapsView=function(){if(!this._mapsView){this._mapsView=new YahooMaps(appCtxt.getShell(),this)\r
58511 }return this._mapsView\r
58512 };\r
58513 YahooLocalController.prototype.setView=function(A){this._initializeToolBar();\r
58514 this._toolbar.enableAll(true);\r
58515 this._createMapView(A);\r
58516 this.showView(A)\r
58517 };\r
58518 YahooLocalController.prototype.showView=function(A){this._mapsView.prepareMap(A);\r
58519 appCtxt.getAppViewMgr().pushView(ZmId.VIEW_YMAPS);\r
58520 appCtxt.getAppViewMgr()._fitToContainer([ZmAppViewMgr.C_APP_CONTENT])\r
58521 };\r
58522 YahooLocalController.prototype.hideView=function(){appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_YMAPS)\r
58523 };\r
58524 YahooLocalController.prototype._createView=function(){var A={};\r
58525 A[ZmAppViewMgr.C_TOOLBAR_TOP]=this._toolbar;\r
58526 A[ZmAppViewMgr.C_APP_CONTENT]=this._mapsView;\r
58527 appCtxt.getAppViewMgr().createView({viewId:ZmId.VIEW_YMAPS,elements:A})\r
58528 };\r
58529 YahooLocalController.prototype._createMapView=function(A){if(this._mapsView){return \r
58530 }this.getMapsView();\r
58531 this._createView()\r
58532 };\r
58533 YahooLocalController.prototype._initializeToolBar=function(){if(this._toolbar){return \r
58534 }var D=[ZmOperation.SEND,ZmOperation.UPCOMING,ZmOperation.TRAFFIC,ZmOperation.SEARCH,ZmOperation.CANCEL];\r
58535 this._toolbar=new ZmButtonToolBar({parent:appCtxt.getShell(),buttons:D,className:"ZmAppToolBar ImgSkin_Toolbar"});\r
58536 for(var C=0;\r
58537 C<this._toolbar.opList.length;\r
58538 C++){var B=this._toolbar.opList[C];\r
58539 if(B==ZmOperation.UPCOMING){var A=this._toolbar.getOp(B);\r
58540 A.setText(this._zimlet.getMessage("menuItemUpcoming"));\r
58541 A.setToolTipContent(this._zimlet.getMessage("upcomingTooltip"))\r
58542 }else{if(B==ZmOperation.TRAFFIC){var A=this._toolbar.getOp(B);\r
58543 A.setText(this._zimlet.getMessage("menuItemTraffic"));\r
58544 A.setToolTipContent(this._zimlet.getMessage("trafficTooltip"))\r
58545 }}if(this._listeners[B]){this._toolbar.addSelectionListener(B,this._listeners[B])\r
58546 }}};\r
58547 YahooLocalController.prototype._showInputDialog=function(E,D,C){if(!this._inputDialog){this._inputDialog=new ZmDialog({parent:appCtxt.getShell()});\r
58548 var B=[];\r
58549 var A=0;\r
58550 B[A++]="<table cellpadding=2 cellspacing=2><tr><td class='ZmFieldLabelRight' id='";\r
58551 B[A++]=this._inputDialog._htmlElId;\r
58552 B[A++]="_label'></td><td><input type='text' size=20 maxlength=255 id='";\r
58553 B[A++]=this._inputDialog._htmlElId;\r
58554 B[A++]="_input'></td></tr></table>";\r
58555 this._inputDialog.setContent(B.join(""));\r
58556 this._inputEl=document.getElementById(this._inputDialog._htmlElId+"_input");\r
58557 this._inputLabel=document.getElementById(this._inputDialog._htmlElId+"_label")\r
58558 }this._inputDialog.setTitle(E);\r
58559 this._inputDialog.setButtonListener(DwtDialog.OK_BUTTON,C);\r
58560 this._inputDialog.setEnterListener(C);\r
58561 this._inputEl.value="";\r
58562 this._inputLabel.innerHTML=D;\r
58563 this._inputDialog.popup();\r
58564 this._inputEl.focus()\r
58565 };\r
58566 YahooLocalController.prototype._setDefaultView=function(E,D){if(E==45&&D==45){zoomLevel=14\r
58567 }else{zoomLevel=8\r
58568 }var C=this.getLocal();\r
58569 var H=this._zimlet.getUserProperty("latitude");\r
58570 var B=this._zimlet.getUserProperty("longitude");\r
58571 if((!H||!B)&&(!C||(C&&(!C.latitude||!C.longitude)))&&(!E&&!D)){var A=this._zimlet.getUserProperty("manuallocation");\r
58572 if(!A||A.match(/false/i)){var F=this._zimlet.getMessage("maxMindError");\r
58573 var G=new YLocalDialog(appCtxt._shell,null,this._zimlet,F,true);\r
58574 G.popup();\r
58575 return \r
58576 }}if(!C){this._zimlet._ylocal={countryCode:"",countryName:"",city:"",region:"",latitude:E||H,longitude:D||B};\r
58577 C=this._zimlet._ylocal\r
58578 }if(C){C.latitude=E||C.latitude;\r
58579 C.longitude=D||C.longitude;\r
58580 this.setView({clean:true,typeControl:true,panControl:false,zoomControl:"long",zoomLevel:zoomLevel,defaultLat:C.latitude,defaultLon:C.longitude})\r
58581 }return C\r
58582 };\r
58583 YahooLocalController.prototype._getGeoIP=function(D){geoip_country_code=null;\r
58584 var B="http://j.maxmind.com/app/geoip.js";\r
58585 var C=new AjxCallback(this,this._handleGetIP,D);\r
58586 var A=ZmZimletBase.PROXY+AjxStringUtil.urlComponentEncode(B);\r
58587 AjxRpc.invoke(null,A,null,C,true,5000)\r
58588 };\r
58589 YahooLocalController.prototype._handleGetIP=function(callback,result){if(result&&result.success&&result.text){AjxPackage.eval(result.text)\r
58590 }if(callback){callback.run()\r
58591 }};\r
58592 YahooLocalController.prototype._showErrorLoadingAPI=function(){var A=appCtxt.getMsgDialog();\r
58593 var B=this._zimlet.getMessage("errorLoadingAPI");\r
58594 A.setMessage(B,DwtMessageDialog.CRITICAL_STYLE);\r
58595 A.popup()\r
58596 };\r
58597 YahooLocalController.prototype.selectLocation=function(A){this.messageDlg.popdown();\r
58598 this._dlg_propertyEditor=new YLocalDialog(appCtxt._shell,null,this._zimlet,A);\r
58599 this._dlg_propertyEditor.popup()\r
58600 };\r
58601 YahooLocalController.prototype._locateLocation=function(){var B=this._textObj1.getValue();\r
58602 var A=this._textObj2.getValue();\r
58603 this._zimlet.setUserProperty("latitude",B);\r
58604 this._zimlet.setUserProperty("longitude",A);\r
58605 this._curr_lat=B;\r
58606 this._curr_lon=A;\r
58607 this._zimlet._controller._dlg_propertyEditor.popdown();\r
58608 this._zimlet._controller._handleSearchLocal()\r
58609 };\r
58610 YahooLocalController.prototype._getMessageDlg=function(A){this.messageDlg=new DwtDialog(appCtxt.getShell(),null,"Confirmation",[DwtDialog.OK_BUTTON]);\r
58611 this.messageDlg.setContent(A);\r
58612 return this.messageDlg\r
58613 };\r
58614 YahooLocalController.prototype._handleSearchListener=function(){var A=AjxStringUtil.trim(this._inputEl.value);\r
58615 if(A.length){this._inputDialog.popdown();\r
58616 this.searchLocal(A)\r
58617 }};\r
58618 YahooLocalController.prototype._handleSearchAddrListener=function(){var A=AjxStringUtil.trim(this._inputEl.value);\r
58619 if(A.length){this._inputDialog.popdown();\r
58620 this.displayAddress(A)\r
58621 }};\r
58622 YahooLocalController.prototype._handleChangeLocationListener=function(){var A=AjxStringUtil.trim(this._inputEl.value);\r
58623 if(A.length){this._inputDialog.popdown();\r
58624 this._getLatLonForZip(A)\r
58625 }};\r
58626 YahooLocalController.prototype._getLatLonForZip=function(D){var C=this._zimlet.getConfig("ydnAPPID");\r
58627 var B=this._zimlet.getMessage("ygeoapiURL");\r
58628 B+="?appid="+C+"&zip="+D;\r
58629 var A=ZmZimletBase.PROXY+AjxStringUtil.urlComponentEncode(B);\r
58630 var E=new AjxCallback(this,this._handleLatLonForZip,D);\r
58631 AjxRpc.invoke(null,A,null,E,true,5000)\r
58632 };\r
58633 YahooLocalController.prototype._handleLatLonForZip=function(B,A){if(!A||(A&&!A.success)){var E=this._zimlet.getMessage("ygeoLocalError");\r
58634 var F=new YLocalDialog(appCtxt._shell,null,this._zimlet,E,false);\r
58635 F.popup();\r
58636 return \r
58637 }if(A.text.match(/Error/i)){appCtxt.setStatusMsg(this._zimlet.getMessage("zipCodeInvalid"),ZmStatusView.LEVEL_CRITICAL);\r
58638 return \r
58639 }var C=AjxStringUtil.trim((A.text.match(/<Latitude>.*(\-?[.\w]+)<\/Latitude>/ig))[0].replace(/<\/?[^>]+>|Latitude/gi,""));\r
58640 var D=AjxStringUtil.trim((A.text.match(/<Longitude>.*(\-?[.\w]+)<\/Longitude>/ig))[0].replace(/<\/?[^>]+>|Longitude/gi,""));\r
58641 if(!(C&&D)){appCtxt.setStatusMsg(this._zimlet.getMessage("coordsNotFound"),ZmStatusView.LEVEL_CRITICAL);\r
58642 return \r
58643 }this.setLanLongAndChangeLocation(C,D,3)\r
58644 };\r
58645 YahooLocalController.prototype.setLanLongAndChangeLocation=function(D,A,C){var B={clean:true,typeControl:true,panControl:false,zoomControl:"long",zoomLevel:C||6,defaultLat:D,defaultLon:A};\r
58646 this._zimlet._controller.setView(B);\r
58647 this._zimlet._controller.getMapsView().changeLocation({latitude:D,longitude:A});\r
58648 this._curr_lat=D;\r
58649 this._curr_lon=A\r
58650 };\r
58651 YahooLocalController.prototype._sendListener=function(D){var F=this._mapsView.getState();\r
58652 var B=["http://maps.yahoo.com/#tt=",F.query,"&lon=",F.lon,"&lat=",F.lat,"&mag=",F.zoom,"&mvt=m&tp=1"].join("");\r
58653 var A=this._zimlet.getMessage("msgBody").replace("{0}",F.query?"("+F.query+")":"");\r
58654 var H=this._zimlet.getMessage("msgFooter");\r
58655 var C=this._zimlet.getMessage("msgSubject").replace("{0}",appCtxt.get(ZmSetting.USERNAME));\r
58656 this._zimlet.getMessage("maxMindError");\r
58657 if(appCtxt.get(ZmSetting.HTML_COMPOSE_ENABLED)&&appCtxt.get(ZmSetting.COMPOSE_AS_FORMAT)==ZmSetting.COMPOSE_HTML){A=AjxStringUtil.nl2br(A);\r
58658 H=AjxStringUtil.nl2br(H)\r
58659 }var E={action:ZmOperation.NEW_MESSAGE,subjOverride:C,extraBodyText:(A+B+H),inNewWindow:appCtxt.get(ZmSetting.NEW_WINDOW_COMPOSE)};\r
58660 var G=AjxDispatcher.run("GetComposeController");\r
58661 G.doAction(E)\r
58662 };\r
58663 YahooLocalController.prototype._upcomingListener=function(A){this.searchUpcoming()\r
58664 };\r
58665 YahooLocalController.prototype._trafficListener=function(A){this.searchTraffic()\r
58666 };\r
58667 YahooLocalController.prototype._cancelListener=function(A){this.hideView()\r
58668 };\r
58669 YahooMaps=function(B,A){if(arguments.length==0){return \r
58670 }DwtComposite.call(this,{parent:B,className:"YahooMap",posStyle:Dwt.ABSOLUTE_STYLE,id:"YahooMap"});\r
58671 this._controller=A;\r
58672 this.getMap();\r
58673 this.addSearchLocalListener();\r
58674 this.addTrafficSearchListener()\r
58675 };\r
58676 YahooMaps.prototype=new DwtComposite;\r
58677 YahooMaps.prototype.constructor=new YahooMaps;\r
58678 YahooMaps.APPID="ZimbraMail";\r
58679 YahooMaps.VERSION="3.7";\r
58680 YahooMaps.DEFAULT_ZOOMLEVEL=5;\r
58681 YahooMaps.QUERY_RESULTS=10;\r
58682 YahooMaps.DEFAULT_TRAFFICRADIUS=10;\r
58683 YahooMaps.LOC_MARKER_IMAGE="http://us.i1.yimg.com/us.yimg.com/i/us/tr/fc/map/nightlife_bubble_w.png";\r
58684 YahooMaps.prototype.prepareMap=function(C){var B=this.getMap();\r
58685 if(C.clean){B.removeMarkersAll()\r
58686 }if(C.panControl){B.addPanControl()\r
58687 }else{B.addPanControl();\r
58688 B.removePanControl()\r
58689 }if(C.zoomControl){if(C.zoomControl=="long"){B.addZoomLong()\r
58690 }else{B.addZoomShort()\r
58691 }}else{B.removeZoomControl()\r
58692 }if(C.zoomScale){B.addZoomScale()\r
58693 }else{B.removeZoomScale()\r
58694 }if(C.typeControl){B.addTypeControl()\r
58695 }if(C.defaultLat&&C.defaultLon){var A=this.getGeoPoint(C.defaultLat,C.defaultLon);\r
58696 B.drawZoomAndCenter(A);\r
58697 this.setLocMarker(C.defaultLat,C.defaultLon,"You are here.",YahooMaps.LOC_MARKER_IMAGE)\r
58698 }else{if(C.defaultLocation){B.drawZoomAndCenter(C.defaultLocation)\r
58699 }}B.setZoomLevel(C.zoomLevel||YahooMaps.DEFAULT_ZOOMLEVEL)\r
58700 };\r
58701 YahooMaps.prototype.searchLocal=function(C){if(!C.query){return \r
58702 }var B=this.getMap();\r
58703 var A=(C.defaultLat&&C.defaultLon)?this.getGeoPoint(C.defaultLat,C.defaultLon):B.getCenterLatLon();\r
58704 C.radius=C.radius||YahooMaps.DEFAULT_RADIUS;\r
58705 C.nresults=C.nresults||YahooMaps.QUERY_RESULTS;\r
58706 B.searchLocal(A,C.query,C.radius,C.nresults);\r
58707 this._searchQuery=C.query;\r
58708 this._searchLat=C.defaultLat;\r
58709 this._searchLon=C.defaultLon\r
58710 };\r
58711 YahooMaps.prototype.addSearchLocalListener=function(){var A=this;\r
58712 function B(F){if(!F.Data){return \r
58713 }var H=A.getMap();\r
58714 for(var E in F.Data.ITEMS){var D=F.Data.ITEMS[E];\r
58715 if(D.TITLE){var G=A.constructLocalResult(D);\r
58716 var C=A.getMarker(A.getGeoPoint(D.LATITUDE,D.LONGITUDE),G);\r
58717 H.addOverlay(C)\r
58718 }}}YEvent.Capture(this.getMap(),EventsList.onEndLocalSearch,B)\r
58719 };\r
58720 YahooMaps.prototype.constructLocalResult=function(B){var C=[];\r
58721 var A=0;\r
58722 C[A++]="<div class='YMapAddress'>";\r
58723 C[A++]="<div style='font-weight:bold;'><a target='_blank' href='";\r
58724 C[A++]=B.BUSINESSURL;\r
58725 C[A++]="'>";\r
58726 C[A++]=B.TITLE;\r
58727 C[A++]="</a></div>";\r
58728 C[A++]="<div style='font-style:italic;'>";\r
58729 C[A++]=B.ADDRESS;\r
58730 C[A++]=",";\r
58731 C[A++]=B.CITY;\r
58732 C[A++]=",";\r
58733 C[A++]=B.STATE;\r
58734 C[A++]="</div>";\r
58735 if(B.PHONE){C[A++]="<div><img width='16' hight='16' src='";\r
58736 C[A++]=this.getResource("phone.gif");\r
58737 C[A++]="'>";\r
58738 C[A++]=B.PHONE;\r
58739 C[A++]="</div>"\r
58740 }C[A++]="<div>";\r
58741 C[A++]=B.DISTANCE;\r
58742 C[A++]=" miles away!</div>";\r
58743 var D=B.RATING.AVERAGERATING;\r
58744 if(!isNaN(D)){C[A++]="<div>";\r
58745 var E=1;\r
58746 while(E<=D){C[A++]="<img width='16' height='16' src='";\r
58747 C[A++]=this.getResource("star_on.gif");\r
58748 C[A++]="'>";\r
58749 E++\r
58750 }while(E<=5){C[A++]="<img width='16' height='16' src='";\r
58751 C[A++]=this.getResource("star_off.gif");\r
58752 C[A++]="'>";\r
58753 E++\r
58754 }C[A++]="</div>"\r
58755 }var F=B.TITLE.replace("'","");\r
58756 var G=B.ADDRESS.replace("'","");\r
58757 C[A++]='<div><a href="#" onclick="YahooMaps._addContact({';\r
58758 C[A++]=" title:'";\r
58759 C[A++]=F;\r
58760 C[A++]="', addr:'";\r
58761 C[A++]=G;\r
58762 C[A++]="', city:'";\r
58763 C[A++]=B.CITY;\r
58764 C[A++]="', state:'";\r
58765 C[A++]=B.STATE;\r
58766 C[A++]="', phone:'";\r
58767 C[A++]=B.PHONE;\r
58768 C[A++]="', bizurl:'";\r
58769 C[A++]=B.BUSINESSURL;\r
58770 C[A++]="', url:'";\r
58771 C[A++]=B.URL;\r
58772 C[A++]="'});\">+Contact</a>";\r
58773 if(appCtxt.getZimletMgr().zimletExists("com_zimbra_asterisk")){C[A++]="&nbsp;|&nbsp;<a href='#' onclick=\"YahooMaps._phoneCall('";\r
58774 C[A++]=B.PHONE;\r
58775 C[A++]="');\">Call</a>"\r
58776 }if(appCtxt.getZimletMgr().zimletExists("com_zimbra_sms")){C[A++]="&nbsp;|&nbsp;<a href='#' onclick=\"YahooMaps._sendSMS({";\r
58777 C[A++]=" title:'";\r
58778 C[A++]=F;\r
58779 C[A++]="', addr:'";\r
58780 C[A++]=G;\r
58781 C[A++]="', city:'";\r
58782 C[A++]=B.CITY;\r
58783 C[A++]="', state:'";\r
58784 C[A++]=B.STATE;\r
58785 C[A++]="', phone:'";\r
58786 C[A++]=B.PHONE;\r
58787 C[A++]="', bizurl:'";\r
58788 C[A++]=B.BUSINESSURL;\r
58789 C[A++]="', url:'";\r
58790 C[A++]=B.URL;\r
58791 C[A++]="'});\">SMS</a>"\r
58792 }C[A++]='&nbsp;|&nbsp;<a href="#" onclick="YahooMaps._sendLocalResult({';\r
58793 C[A++]=" title:'";\r
58794 C[A++]=F;\r
58795 C[A++]="', addr:'";\r
58796 C[A++]=G;\r
58797 C[A++]="', city:'";\r
58798 C[A++]=B.CITY;\r
58799 C[A++]="', state:'";\r
58800 C[A++]=B.STATE;\r
58801 C[A++]="', phone:'";\r
58802 C[A++]=B.PHONE;\r
58803 C[A++]="', bizurl:'";\r
58804 C[A++]=B.BUSINESSURL;\r
58805 C[A++]="', url:'";\r
58806 C[A++]=B.URL;\r
58807 C[A++]="'});\">Email</a>";\r
58808 C[A++]="</div>";\r
58809 C[A++]="<div><a href='"+B.URL+"' target='_blank'>more >></a></div>";\r
58810 C[A++]="</div>";\r
58811 return C.join("")\r
58812 };\r
58813 YahooMaps._sendLocalResult=function(D){var B=appCtxt.get(ZmSetting.USERNAME)+" shared an address using Yahoo! Local";\r
58814 var C=[D.title,"\n",D.addr,"\n",D.city,",",D.state,"\n","Phone:",D.phone,"\n","Business URL:",D.bizurl,"\n","For Reviews & more info view ",D.url,"\n"].join("");\r
58815 var A=C+"\n\n\n\nThis email was sent to you by a user on Yahoo Local (local.yahoo.com).";\r
58816 if(appCtxt.get(ZmSetting.HTML_COMPOSE_ENABLED)&&appCtxt.get(ZmSetting.COMPOSE_AS_FORMAT)==ZmSetting.COMPOSE_HTML){A=AjxStringUtil.nl2br(A)\r
58817 }var D={action:ZmOperation.NEW_MESSAGE,subjOverride:B,extraBodyText:A};\r
58818 var E=AjxDispatcher.run("GetComposeController");\r
58819 E.doAction(D)\r
58820 };\r
58821 YahooMaps._sendSMS=function(D){var C=appCtxt.getZimletMgr().getZimletsHash();\r
58822 var B=C?C.com_zimbra_sms:null;\r
58823 if(B){var A=[D.title,"\n",D.addr,"\n",D.city,",",D.state,"\n","Phone:",D.phone,"\n","Business URL:",D.bizurl,"\n","For Reviews & more info view ",D.url,"\n"].join("");\r
58824 A=A+"\n\nYahoo! Local (local.yahoo.com)";\r
58825 B.callHandler("singleClicked",[D.phone,A])\r
58826 }};\r
58827 YahooMaps._phoneCall=function(A){var C=appCtxt.getZimletMgr().getZimletsHash();\r
58828 var B=C?C.com_zimbra_asterisk:null;\r
58829 if(B){B.callHandler("setupCall",[A])\r
58830 }};\r
58831 YahooMaps._addContact=function(B){var A=new AjxCallback(YahooMaps._handleLoadContact,B);\r
58832 AjxDispatcher.require(["ContactsCore","Contacts"],false,A,null,true)\r
58833 };\r
58834 YahooMaps._handleLoadContact=function(B){var A=new ZmContact();\r
58835 if(B.title){A.setAttr(ZmContact.F_firstName,B.title);\r
58836 A.setAttr(ZmContact.F_company,B.title)\r
58837 }if(B.addr){A.setAttr(ZmContact.F_workStreet,B.addr)\r
58838 }if(B.city){A.setAttr(ZmContact.F_workCity,B.city)\r
58839 }if(B.state){A.setAttr(ZmContact.F_workCountry,B.state)\r
58840 }if(B.phone){A.setAttr(ZmContact.F_workPhone,B.phone)\r
58841 }if(B.bizurl){A.setAttr(ZmContact.F_workURL,B.bizurl)\r
58842 }AjxDispatcher.run("GetContactController").show(A)\r
58843 };\r
58844 YahooMaps.prototype.getState=function(){return{query:this._searchQuery,lat:this._searchLat,lon:this._searchLon,zoom:YahooMaps.DEFAULT_ZOOMLEVEL}\r
58845 };\r
58846 YahooMaps.prototype.searchUpcoming=function(A){A.callback=new AjxCallback(this,this._processUpcomingResponse);\r
58847 this.getUpcoming().searchEvents(A)\r
58848 };\r
58849 YahooMaps.prototype._processUpcomingResponse=function(D){if(!D){return \r
58850 }var F=this.getMap();\r
58851 for(var C=0;\r
58852 C<D.length;\r
58853 C++){var E=D[C];\r
58854 if(E.name){var B=this._constructEventResult(E);\r
58855 var A=this.getMarker(this.getGeoPoint(E.latitude,E.longitude),B);\r
58856 F.addOverlay(A)\r
58857 }}};\r
58858 YahooMaps.prototype._constructEventResult=function(D){var C=[];\r
58859 var A=0;\r
58860 C[A++]="<div class='YMapAddress'>";\r
58861 C[A++]="<div style='font-weight:bold;'><a href='"+D.url+"' target='_blank'>"+D.name+"</a></div>";\r
58862 C[A++]="<div style='font-weight:italic;'> When:"+D.start_date+","+D.start_time+" </div>";\r
58863 C[A++]="<div style='font-weight:italic;'>Venue: "+D.venue_name+"</div>";\r
58864 C[A++]="<div style='font-style:italic;'>"+D.venue_address+","+D.venue_city+","+D.venue_state_name+"</div>";\r
58865 C[A++]="<div>"+D.distance+" miles away!</div";\r
58866 var B=D.name.replace("'","");\r
58867 var E=D.venue_address.replace("'","");\r
58868 C[A++]='<div><a href="#" onclick="YahooMaps._addAppt({name:\''+B+"',addr:'"+E+"',city:'"+D.venue_city+"',state:'"+D.venue_state_name+"',startdate:'"+D.start_date+"',starttime:'"+D.start_time+"',enddate:'"+D.end_date+"',endtime:'"+D.end_time+"',bizurl:'"+D.url+"',url:'http://upcoming.yahoo.com/event/"+D.id+"/'});\">+Calendar</a>";\r
58869 C[A++]='&nbsp;|&nbsp;<a href="#" onclick="YahooMaps._sendEvent({name:\''+B+"',addr:'"+E+"',city:'"+D.venue_city+"',state:'"+D.venue_state_name+"',startdate:'"+D.start_date+"',starttime:'"+D.start_time+"',enddate:'"+D.end_date+"',endtime:'"+D.end_time+"',bizurl:'"+D.url+"',url:'http://upcoming.yahoo.com/event/"+D.id+"/'});\">Email</a>";\r
58870 C[A++]="</div>";\r
58871 C[A++]="<div><a target='_blank' href='http://upcoming.yahoo.com/event/"+D.id+"/'>more >></a></div>";\r
58872 C[A++]="</div>";\r
58873 return C.join("")\r
58874 };\r
58875 YahooMaps._addAppt=function(D){var C=AjxDispatcher.run("GetApptComposeController");\r
58876 var B=new ZmAppt();\r
58877 B.setName(D.name);\r
58878 var F=YahooMaps._isValidTime(D.starttime);\r
58879 var A=YahooMaps._isValidTime(D.starttEnd);\r
58880 if(F){B.setStartDate(YahooMaps._parseDate(D.startdate,D.starttime))\r
58881 }else{B.setStartDate(YahooMaps._parseDate(D.startdate))\r
58882 }if(!A&&F&&(D.startdate==D.enddate||!D.enddate)){B.setEndDate(YahooMaps._parseDate(D.startdate,D.starttime,1))\r
58883 }else{if(!(A&&F)){B.setEndDate(YahooMaps._parseDate(D.enddate))\r
58884 }else{B.setEndDate(YahooMaps._parseDate(D.enddate,D.starttime,1))\r
58885 }}var E=["Direction:\n\n",D.addr,"\n",D.city,",",D.state,"\n\nBusiness URL:",D.bizurl,"\n","For reviews & more info visit ",D.url,"\n"].join("");\r
58886 B.setTextNotes((D.description||"")+E);\r
58887 C.show(B)\r
58888 };\r
58889 YahooMaps._parseDate=function(C,D,A){if(C){var B=C.split("-")\r
58890 }if(D){var E=D.split(":")\r
58891 }if(E&&A){return(new Date(B[0],B[1]-1,B[2],parseInt(E[0])+A,E[1],E[2]))\r
58892 }else{if(E&&!A){return(new Date(B[0],B[1]-1,B[2],E[0],E[1],E[2]))\r
58893 }else{if(C){return(new Date(B[0],B[1]-1,B[2]))\r
58894 }}}return null\r
58895 };\r
58896 YahooMaps._isValidTime=function(A){if(A){return A.split(":").length>1?true:false\r
58897 }return false\r
58898 };\r
58899 YahooMaps._sendEvent=function(D){var A=appCtxt.get(ZmSetting.USERNAME)+" shared an event using Yahoo! Local";\r
58900 var B=[D.name,"\n",D.addr,"\n",D.city,",",D.state,"\n","Business URL:",D.bizurl,"\n","For Reviews & more info view ",D.url,"\n"].join("");\r
58901 var F="\n\nThis email was sent to you by a user on Upcoming (upcoming.com).";\r
58902 var C="Hi,\n\n"+B+F;\r
58903 if(appCtxt.get(ZmSetting.HTML_COMPOSE_ENABLED)&&appCtxt.get(ZmSetting.COMPOSE_AS_FORMAT)==ZmSetting.COMPOSE_HTML){C=AjxStringUtil.nl2br(C)\r
58904 }var D={action:ZmOperation.NEW_MESSAGE,subjOverride:A,extraBodyText:C};\r
58905 var E=AjxDispatcher.run("GetComposeController");\r
58906 E.doAction(D)\r
58907 };\r
58908 YahooMaps.prototype.addTrafficSearchListener=function(){var A=this;\r
58909 function B(F){if(!F.Data){return \r
58910 }var G=A.getMap();\r
58911 for(a in F.Data.ITEMS){var D=F.Data.ITEMS[a];\r
58912 if(D.TITLE){var E=A._constructTrafficResult(D);\r
58913 var C=A.getMarker(A.getGeoPoint(D.LATITUDE,D.LONGITUDE),E);\r
58914 G.addOverlay(C)\r
58915 }}}YEvent.Capture(this.getMap(),EventsList.onEndTrafficSearch,B)\r
58916 };\r
58917 YahooMaps.prototype._constructTrafficResult=function(B){var C=[];\r
58918 var A=0;\r
58919 C[A++]="<div>";\r
58920 C[A++]=B.TITLE;\r
58921 C[A++]="</div>";\r
58922 C[A++]='<div><a href="#" onclick="YahooMaps._sendTrafficResult({';\r
58923 C[A++]=" title:'";\r
58924 C[A++]=B.TITLE.replace("'","");\r
58925 C[A++]="'";\r
58926 C[A++]='});">Email</a>';\r
58927 C[A++]="</div>";\r
58928 return C.join("")\r
58929 };\r
58930 YahooMaps._sendTrafficResult=function(C){var A=appCtxt.get(ZmSetting.USERNAME)+" shared a traffic info. using Yahoo! Local";\r
58931 var B=C.title;\r
58932 if(appCtxt.get(ZmSetting.HTML_COMPOSE_ENABLED)&&appCtxt.get(ZmSetting.COMPOSE_AS_FORMAT)==ZmSetting.COMPOSE_HTML){B=AjxStringUtil.nl2br(B)\r
58933 }var C={action:ZmOperation.NEW_MESSAGE,subjOverride:A,extraBodyText:B};\r
58934 var D=AjxDispatcher.run("GetComposeController");\r
58935 D.doAction(C)\r
58936 };\r
58937 YahooMaps.prototype.searchTraffic=function(C){var B=this.getMap();\r
58938 var A=this.getGeoPoint(C.latitude,C.longitude);\r
58939 C.radius=C.radius||YahooMaps.DEFAULT_TRAFFICRADIUS;\r
58940 B.searchTraffic(A,C.radius)\r
58941 };\r
58942 YahooMaps.prototype.changeLocation=function(C){if(C.latitude&&C.longitude){this.setLocMarker(C.latitude,C.longitude,"<b>You are here!</b><br>Please select your new location to make it your default location",YahooMaps.LOC_MARKER_IMAGE);\r
58943 YEvent.Capture(this.getMap(),EventsList.MouseClick,B)\r
58944 }var A=this;\r
58945 function B(D,F){A.getMap().removeMarkersAll();\r
58946 var E=A.setLocMarker(F.Lat,F.Lon,"<b>Click here to make this your default location.</b><br>Or, Please select a new location.",YahooMaps.LOC_MARKER_IMAGE);\r
58947 YEvent.Capture(E,EventsList.MouseClick,G);\r
58948 function G(I,H){YEvent.Remove(A.getMap(),EventsList.MouseClick,B);\r
58949 A._controller.setLocation(F.Lat,F.Lon);\r
58950 A.markMe(F.Lat,F.Lon)\r
58951 }}if(C.newLatitude&&C.newLongitude){B(null,{Lat:C.newLatitude,Lon:C.newLongitude})\r
58952 }};\r
58953 YahooMaps.prototype.markMe=function(A,B){this.setLocMarker(A,B,"You are here!",YahooMaps.LOC_MARKER_IMAGE)\r
58954 };\r
58955 YahooMaps.prototype.markAddr=function(C){this.getMap().drawZoomAndCenter(C.defaultLocation);\r
58956 var B=this.getMap().getCenterLatLon();\r
58957 var A=this.getMarker(this.getGeoPoint(B.LAT,B.LON),C.defaultLocation);\r
58958 this.getMap().addOverlay(A)\r
58959 };\r
58960 YahooMaps.prototype.getMap=function(){if(!this._map){try{this._map=new YMap(this.getHtmlElement())\r
58961 }catch(A){alert("Unable to load map. YMap missing.");\r
58962 return \r
58963 }}return this._map\r
58964 };\r
58965 YahooMaps.prototype.getGeoPoint=function(A,B){return(new YGeoPoint(A,B))\r
58966 };\r
58967 YahooMaps.prototype.getMarker=function(B,E,D){var A=new YMarker(B);\r
58968 if(D){var C=new YImage();\r
58969 D=ZmZimletBase.PROXY+AjxStringUtil.urlComponentEncode(D);\r
58970 C.src=D;\r
58971 A.changeImage(C)\r
58972 }A.addAutoExpand(E);\r
58973 return A\r
58974 };\r
58975 YahooMaps.prototype.getUpcoming=function(){if(!this._upcoming){this._upcoming=new UpComingEvents()\r
58976 }return this._upcoming\r
58977 };\r
58978 YahooMaps.prototype.setLocMarker=function(C,E,D,B){var A=this.getMarker(this.getGeoPoint(C,E),D,B);\r
58979 this.getMap().addOverlay(A);\r
58980 return A\r
58981 };\r
58982 YahooMaps.prototype.mark=function(B){var A=this.getMarker(this.getGeoPoint(B.latitude,B.longitude),B.text||"",B.imgsrc);\r
58983 this.getMap().addOverlay(A);\r
58984 return A\r
58985 };\r
58986 YahooMaps.prototype.getResource=function(A){return this._controller._zimlet.getResource(A)\r
58987 };\r
58988 YahooMaps._loadYAPI=function(A){var B=document.createElement("script");\r
58989 B.setAttribute("type","text/javascript");\r
58990 B.setAttribute("src",(ZmZimletBase.PROXY+AjxStringUtil.urlComponentEncode(A)));\r
58991 if(AjxEnv.isSafari||AjxEnv.isWebKitBased){document.body.appendChild(B)\r
58992 }else{document.getElementsByTagName("head").item(0).appendChild(B)\r
58993 }};\r
58994 YahooMaps._loadYMapsAPI=function(B){var C=new AjxCallback(YahooMaps._postLoadYMapsAPI);\r
58995 var A=ZmZimletBase.PROXY+AjxStringUtil.urlComponentEncode(B);\r
58996 AjxRpc.invoke(null,A,null,C,true)\r
58997 };\r
58998 YahooMaps._postLoadYMapsAPI=function(result){var js=result.text;\r
58999 js=js.replace(/<!--.*-->/,"")+"function _ywjs(inc){YahooMaps._loadYAPI(inc)};";\r
59000 try{AjxPackage.eval(js)\r
59001 }catch(ex){alert("Failed to load Yahoo! Maps API.")\r
59002 }};\r
59003 YahooMaps.loadExternalResources=function(){YahooMaps._loadYMapsAPI("http://api.maps.yahoo.com/ajaxymap?v="+YahooMaps.VERSION+"&appid="+YahooMaps.APPID)\r
59004 };\r
59005 UpComingEvents=function(){};\r
59006 UpComingEvents.DEFAULT_RADIUS=50;\r
59007 UpComingEvents.prototype.searchEvents=function(F){var B=["api_key=ae7d801cfb&method=event.search"];\r
59008 if(F.query){B.push("search_text="+F.query)\r
59009 }if(F.latitude&&F.longitude){B.push("location="+F.latitude+","+F.longitude)\r
59010 }B.push("radius="+(F.radius||UpComingEvents.DEFAULT_RADIUS));\r
59011 if(F.mindate){B.push("min_date="+F.mindate)\r
59012 }else{var D=new Date();\r
59013 var E=["min_date=",D.getFullYear(),"-",(D.getMonth()<9)?("0"+(D.getMonth()+1)):(D.getMonth()+1),"-",(D.getDate()<10)?("0"+D.getDate()):(D.getDate())];\r
59014 B.push(E.join(""))\r
59015 }if(F.page){B.push("page="+F.page)\r
59016 }var C="http://upcoming.yahooapis.com/services/rest/?"+B.join("&");\r
59017 var A=ZmZimletBase.PROXY+AjxStringUtil.urlComponentEncode(C);\r
59018 var G=new AjxCallback(this,this._processSearchEventsResponse,F.callback);\r
59019 AjxRpc.invoke(B,A,null,G,true)\r
59020 };\r
59021 UpComingEvents.prototype._processSearchEventsResponse=function(C,A){var B=this.xmlToObject(A).event;\r
59022 B=B.length?B:[B];\r
59023 if(C){C.run(B)\r
59024 }};\r
59025 UpComingEvents.prototype.xmlToObject=function(A){try{var C=new AjxXmlDoc.createFromDom(A.xml).toJSObject(true,false,true)\r
59026 }catch(B){}return C\r
59027 };\r
59028 YLocalDialog=function(B,D,C,F,A){D=D||"YSymbolsDialog";\r
59029 this._zimlet=C;\r
59030 var E="Select Option";\r
59031 DwtDialog.call(this,{parent:B,className:D,title:E});\r
59032 this._createSearchHtml(F,A)\r
59033 };\r
59034 YLocalDialog.prototype=new DwtDialog;\r
59035 YLocalDialog.prototype.constructor=YLocalDialog;\r
59036 YLocalDialog.prototype._lookupCallback;\r
59037 YLocalDialog.prototype._createSearchHtml=function(G,C){this._textObj1=new DwtInputField(this);\r
59038 this._textObj2=new DwtInputField(this);\r
59039 this._lableObj=new DwtButton(this);\r
59040 var D=document.createElement("TABLE");\r
59041 D.border=0;\r
59042 D.cellPadding=0;\r
59043 D.cellSpacing=4;\r
59044 var F;\r
59045 var A;\r
59046 if(G){F=D.insertRow(-1);\r
59047 A=F.insertCell(-1);\r
59048 A.colSpan=2;\r
59049 A.innerHTML=G;\r
59050 F=D.insertRow(-1);\r
59051 A=F.insertCell(-1);\r
59052 A.colSpan=2;\r
59053 A.align="center";\r
59054 A.innerHTML="<hr>"\r
59055 }if(C){this._textZip=new DwtInputField(this);\r
59056 F=D.insertRow(-1);\r
59057 A=F.insertCell(-1);\r
59058 A.innerHTML="Zip:";\r
59059 A=F.insertCell(-1);\r
59060 A.appendChild(this._textZip.getHtmlElement());\r
59061 F=D.insertRow(-1);\r
59062 A=F.insertCell(-1);\r
59063 A.colSpan=2;\r
59064 A.align="center";\r
59065 A.innerHTML="<b>or</b>"\r
59066 }F=D.insertRow(-1);\r
59067 A=F.insertCell(-1);\r
59068 A.colSpan=2;\r
59069 A.innerHTML="Enter Latitude and Longitude";\r
59070 F=D.insertRow(-1);\r
59071 A=F.insertCell(-1);\r
59072 A.innerHTML="Latitude:";\r
59073 A=F.insertCell(-1);\r
59074 A.appendChild(this._textObj1.getHtmlElement());\r
59075 F=D.insertRow(-1);\r
59076 A=F.insertCell(-1);\r
59077 A.innerHTML="Longitude:";\r
59078 A=F.insertCell(-1);\r
59079 A.appendChild(this._textObj2.getHtmlElement());\r
59080 F=D.insertRow(-1);\r
59081 A=F.insertCell(-1);\r
59082 A.colSpan=2;\r
59083 A.align="center";\r
59084 A.innerHTML="<b>or</b>";\r
59085 F=D.insertRow(-1);\r
59086 A=F.insertCell(-1);\r
59087 A.colSpan=2;\r
59088 var E={latitude:45,longitude:45};\r
59089 A.appendChild(this._lableObj.getHtmlElement());\r
59090 YLocalDialog.gInstance=this;\r
59091 A.innerHTML="<a href='#' onclick='changeLocation()'>Click here</a> to select location on map";\r
59092 var B=this._getContentDiv();\r
59093 B.appendChild(D)\r
59094 };\r
59095 YLocalDialog.gInstance;\r
59096 changeLocation=function(){var A=YLocalDialog.gInstance;\r
59097 A.popdown();\r
59098 A._zimlet._controller.changeLocation({latitude:45,longitude:45})\r
59099 };\r
59100 YLocalDialog.prototype.changeLocationByZip=function(){var B=AjxStringUtil.trim((result.text.match(/<td><b>Latitude<\/b><\/td><td>.*(\-?[.\w]+)<\/td>/ig))[0].replace(/<\/?[^>]+>|Latitude/gi,""));\r
59101 var C=AjxStringUtil.trim((result.text.match(/<td><b>Longitude<\/b><\/td><td>.*(\-?[.\w]+)<\/td>/ig))[0].replace(/<\/?[^>]+>|Longitude/gi,""));\r
59102 if(!(B&&C)){appCtxt.setStatusMsg(this._zimlet.getMessage("coordsNotFound"),ZmStatusView.LEVEL_CRITICAL);\r
59103 return \r
59104 }var A=this.getLocal();\r
59105 this.setView({clean:true,typeControl:true,panControl:false,zoomControl:"long",zoomLevel:3,defaultLat:B,defaultLon:C});\r
59106 this.getMapsView().changeLocation({latitude:A.latitude,longitude:A.longitude,newLatitude:B,newLongitude:C})\r
59107 };\r
59108 YLocalDialog.prototype.popup=function(A,B){this._lookupCallback=B;\r
59109 this.setTitle("Select Option");\r
59110 this.setButtonListener(DwtDialog.OK_BUTTON,new AjxListener(this,this.okButtonListener));\r
59111 this.setButtonEnabled(DwtDialog.OK_BUTTON,true);\r
59112 this.setButtonEnabled(DwtDialog.CANCEL_BUTTON,true);\r
59113 DwtDialog.prototype.popup.call(this)\r
59114 };\r
59115 YLocalDialog.prototype.popdown=function(){ZmDialog.prototype.popdown.call(this)\r
59116 };\r
59117 YLocalDialog.prototype.okButtonListener=function(){if(this._textZip&&this._textZip.getValue()!=""){this._zimlet._controller._getLatLonForZip(this._textZip.getValue())\r
59118 }else{this._zimlet._controller.setLanLongAndChangeLocation(this._textObj1.getValue(),this._textObj2.getValue())\r
59119 }DwtDialog.prototype.popdown.call(this)\r
59120 };\r
59121 function Com_Zimbra_YMEmoticons(){this.re=Com_Zimbra_YMEmoticons.REGEXP;\r
59122 this.hash=Com_Zimbra_YMEmoticons.SMILEYS;\r
59123 this._isEnabled=true\r
59124 }Com_Zimbra_YMEmoticons.prototype=new ZmZimletBase;\r
59125 Com_Zimbra_YMEmoticons.prototype.constructor=Com_Zimbra_YMEmoticons;\r
59126 Com_Zimbra_YMEmoticons.prototype.createComposeButton=function(B){var C=B.parent;\r
59127 var A=new YMEmoticonsPickerButton({parent:B,className:"ZToolbarButton"},true);\r
59128 A.dontStealFocus();\r
59129 A.setToolTipContent(ZmMsg.emoticons);\r
59130 A.setEmoticon(":)");\r
59131 A.addSelectionListener(new AjxListener(this,this._composeToolbarSmileyListener,[C]))\r
59132 };\r
59133 Com_Zimbra_YMEmoticons.prototype.on_htmlEditor_createToolbar2=function(B,A){this.createComposeButton(A)\r
59134 };\r
59135 Com_Zimbra_YMEmoticons.prototype.onFindMsgObjects=function(B,A){if(!this.enableInMail){this.enableInMail=Boolean(this.getUserProperty("yemoticons_enableInMail"))\r
59136 }if(B.folderId==ZmOrganizer.ID_CHATS){A.addHandler(this);\r
59137 A.sortHandlers();\r
59138 A.__hasSmileysHandler=true\r
59139 }else{if(!A.__hasSmileysHandler&&this._isEnabled&&this.enableInMail){A.addHandler(this);\r
59140 A.sortHandlers();\r
59141 A.__hasSmileysHandler=true\r
59142 }if(A.__hasSmileysHandler&&(!this._isEnabled||!this.enableInMail)){A.removeHandler(this);\r
59143 A.sortHandlers();\r
59144 A.__hasSmileysHandler=false\r
59145 }}};\r
59146 Com_Zimbra_YMEmoticons.prototype.match=function(B,D){this.re.lastIndex=D;\r
59147 var A=this.re.exec(B);\r
59148 if(A){A.context=this.hash[A[1].toLowerCase()];\r
59149 var C=new Image();\r
59150 C.src=A.context.src;\r
59151 A.context.img=C\r
59152 }return A\r
59153 };\r
59154 Com_Zimbra_YMEmoticons.prototype.generateSpan=function(C,A,F,E,B){var D=B.height/2;\r
59155 C[A++]=["<span style='height:",B.height,";width:",B.width,";padding:",D,"px ",B.width,"px ",D,"px 0; background:url(",B.img.src,") no-repeat 0 50%;'",' title="',AjxStringUtil.xmlAttrEncode(B.text)," - ",AjxStringUtil.xmlAttrEncode(B.alt),'"',"></span>"].join("");\r
59156 return A\r
59157 };\r
59158 Com_Zimbra_YMEmoticons.prototype.onNewChatWidget=function(D){var C=D.getObjectManager();\r
59159 C.addHandler(this);\r
59160 C.sortHandlers();\r
59161 var A=D.getEditor().getBasicToolBar();\r
59162 var B=new YMEmoticonsPickerButton({parent:A,className:"ZToolbarButton",index:0});\r
59163 \r
59164 B.dontStealFocus();\r
59165 B.setToolTipContent(ZmMsg.emoticons);\r
59166 B.setData(ZmLiteHtmlEditor._VALUE,ZmLiteHtmlEditor.SMILEY);\r
59167 B.setEmoticon(":)");\r
59168 B.addSelectionListener(new AjxListener(this,this._smileyListener,[D]));\r
59169 A.addSeparator(null,1)\r
59170 };\r
59171 Com_Zimbra_YMEmoticons.prototype._smileyListener=function(B,A){this._composeToolbarSmileyListener(B.getEditor(),A)\r
59172 };\r
59173 Com_Zimbra_YMEmoticons.prototype._composeToolbarSmileyListener=function(A,C){if(!A){return \r
59174 }var B=C.item.getSelectedSmiley();\r
59175 if(B){A.insertText(B.text);\r
59176 A.focus()\r
59177 }};\r
59178 Com_Zimbra_YMEmoticons.prototype.menuItemSelected=function(A){switch(A){case"YE_TEMP_DISABLE":this.temporarilyDisable();\r
59179 break;\r
59180 case"YE_PREFERENCES":this._showPreferenceDlg();\r
59181 break\r
59182 }};\r
59183 Com_Zimbra_YMEmoticons.prototype.doubleClicked=function(){this.singleClicked()\r
59184 };\r
59185 Com_Zimbra_YMEmoticons.prototype.singleClicked=function(){this._showPreferenceDlg()\r
59186 };\r
59187 Com_Zimbra_YMEmoticons.prototype.temporarilyDisable=function(){this._isEnabled=false;\r
59188 var A=[ZmToast.FADE_IN,ZmToast.PAUSE,ZmToast.FADE_OUT];\r
59189 appCtxt.getAppController().setStatusMsg("Emoticons Temporarily Disabled",ZmStatusView.LEVEL_INFO,null,A)\r
59190 };\r
59191 Com_Zimbra_YMEmoticons.prototype._showPreferenceDlg=function(){if(this._preferenceDialog){this._preferenceDialog.popup();\r
59192 return \r
59193 }this._preferenceView=new DwtComposite(this.getShell());\r
59194 this._preferenceView.getHtmlElement().style.overflow="auto";\r
59195 this._preferenceView.getHtmlElement().innerHTML=this._createPrefView();\r
59196 this._preferenceDialog=this._createDialog({title:"Yahoo! Emoticons Preferences",view:this._preferenceView,standardButtons:[DwtDialog.OK_BUTTON]});\r
59197 this._preferenceDialog.setButtonListener(DwtDialog.OK_BUTTON,new AjxListener(this,this._okPreferenceBtnListener));\r
59198 if(!this.enableInMail){this.enableInMail=Boolean(this.getUserProperty("yemoticons_enableInMail"))\r
59199 }document.getElementById("yemoticons_enableInMail_div").checked=this.enableInMail;\r
59200 this._preferenceDialog.popup()\r
59201 };\r
59202 Com_Zimbra_YMEmoticons.prototype._createPrefView=function(){return["<div class='ymemoticonsPrefDialog'>","<input id='yemoticons_enableInMail_div' type='checkbox'/>Enable Emoticons In Mail","</div>"].join("")\r
59203 };\r
59204 Com_Zimbra_YMEmoticons.prototype._okPreferenceBtnListener=function(){this._preferenceDialog.popdown();\r
59205 var B=document.getElementById("yemoticons_enableInMail_div").checked;\r
59206 if(B!=this.enableInMail){this.setUserProperty("yemoticons_enableInMail",B,true);\r
59207 this.enableInMail=B;\r
59208 var A=B?"Enabled":"Disabled";\r
59209 var C=[ZmToast.FADE_IN,ZmToast.PAUSE,ZmToast.FADE_OUT];\r
59210 appCtxt.getAppController().setStatusMsg(["Emoticons ",A," In Mail"].join(""),ZmStatusView.LEVEL_INFO,null,C)\r
59211 }};\r
59212 Com_Zimbra_YMEmoticons.REGEXP=/(>:D<|#:-S|O:-\)|<:-P|:-SS|<\):\)|:-\?\?|3:-O|:\(\|\)|@};-|\*\*==|\(~~\)|\*-:\)|\[-O<|:\)>-|\\:D\x2f|\^:\)\^|;;\)|:-\x2f|:\x22>|:-\*|=\(\(|:-O|B-\)|:-S|>:\)|:\(\(|:\)\)|\x2f:\)|=\)\)|:-B|:-c|:\)\]|~X\(|:-h|:-t|8->|I-\)|8-\||L-\)|:-&|:-\$|\[-\(|:O\)|8-}|\(:\||=P~|:-\?|#-o|=D>|@-\)|:\^o|:-w|:-<|>:P|:o3|%-\(|:@\)|~:>|%%-|~O\)|8-X|=:\)|>-\)|:-L|\$-\)|:-\x22|b-\(|\[-X|>:\x2f|;\)\)|:-@|:-j|\(\*\)|o->|o=>|o-\+|\(%\)|:\)|:\(|;\)|:D|:x|:P|X\(|:>|:\||=;)/ig;\r
59213 Com_Zimbra_YMEmoticons.SMILEYS={":)":{width:18,alt:"happy",src:"/service/zimlet/com_zimbra_ymemoticons/img/1.gif",text:":)",regexp:":\\)",height:18},":(":{width:18,alt:"sad",src:"/service/zimlet/com_zimbra_ymemoticons/img/2.gif",text:":(",regexp:":\\(",height:18},"(~~)":{width:17,alt:"pumpkin",src:"/service/zimlet/com_zimbra_ymemoticons/img/56.gif",text:"(~~)",regexp:"\\(~~\\)",height:18},"~o)":{width:18,alt:"coffee",src:"/service/zimlet/com_zimbra_ymemoticons/img/57.gif",text:"~O)",regexp:"~O\\)",height:18},':">':{width:18,alt:"blushing",src:"/service/zimlet/com_zimbra_ymemoticons/img/9.gif",text:':">',regexp:":\\x22>",height:18},"[-(":{width:18,alt:"not talking",src:"/service/zimlet/com_zimbra_ymemoticons/img/33.gif",text:"[-(",regexp:"\\[-\\(",height:18},">:d<":{width:42,alt:"big hug",src:"/service/zimlet/com_zimbra_ymemoticons/img/6.gif",text:">:D<",regexp:">:D<",height:18},"#-o":{width:24,alt:"d'oh",src:"/service/zimlet/com_zimbra_ymemoticons/img/40.gif",text:"#-o",regexp:"#-o",height:18},"[-x":{width:22,alt:"shame on you",src:"/service/zimlet/com_zimbra_ymemoticons/img/68.gif",text:"[-X",regexp:"\\[-X",height:18},":-t":{width:30,alt:"time out",src:"/service/zimlet/com_zimbra_ymemoticons/img/104.gif",text:":-t",regexp:":-t",height:18},":(|)":{width:21,alt:"monkey",src:"/service/zimlet/com_zimbra_ymemoticons/img/51.gif",text:":(|)",regexp:":\\(\\|\\)",height:18},":o)":{width:28,alt:"clown",src:"/service/zimlet/com_zimbra_ymemoticons/img/34.gif",text:":O)",regexp:":O\\)",height:18},"i-)":{width:21,alt:"sleepy",src:"/service/zimlet/com_zimbra_ymemoticons/img/28.gif",text:"I-)",regexp:"I-\\)",height:18},";;)":{width:18,alt:"batting eyelashes",src:"/service/zimlet/com_zimbra_ymemoticons/img/5.gif",text:";;)",regexp:";;\\)",height:18},":^o":{width:18,alt:"liar",src:"/service/zimlet/com_zimbra_ymemoticons/img/44.gif",text:":^o",regexp:":\\^o",height:18},"<:-p":{width:38,alt:"party",src:"/service/zimlet/com_zimbra_ymemoticons/img/36.gif",text:"<:-P",regexp:"<:-P",height:18},"x(":{width:34,alt:"angry",src:"/service/zimlet/com_zimbra_ymemoticons/img/14.gif",text:"X(",regexp:"X\\(",height:18},":-/":{width:20,alt:"confused",src:"/service/zimlet/com_zimbra_ymemoticons/img/7.gif",text:":-/",regexp:":-\\x2f",height:18},"#:-s":{width:34,alt:"whew!",src:"/service/zimlet/com_zimbra_ymemoticons/img/18.gif",text:"#:-S",regexp:"#:-S",height:18},"8->":{width:23,alt:"daydreaming",src:"/service/zimlet/com_zimbra_ymemoticons/img/105.gif",text:"8->",regexp:"8->",height:18},":d":{width:18,alt:"big grin",src:"/service/zimlet/com_zimbra_ymemoticons/img/4.gif",text:":D",regexp:":D",height:18},"\\:d/":{width:26,alt:"dancing",src:"/service/zimlet/com_zimbra_ymemoticons/img/69.gif",text:"\\:D/",regexp:"\\\\:D\\x2f",height:18},":-b":{width:24,alt:"nerd",src:"/service/zimlet/com_zimbra_ymemoticons/img/26.gif",text:":-B",regexp:":-B",height:18},":-@":{width:36,alt:"chatterbox",src:"/service/zimlet/com_zimbra_ymemoticons/img/76.gif",text:":-@",regexp:":-@",height:18},":-h":{width:28,alt:"wave",src:"/service/zimlet/com_zimbra_ymemoticons/img/103.gif",text:":-h",regexp:":-h",height:18},":-c":{width:28,alt:"call me",src:"/service/zimlet/com_zimbra_ymemoticons/img/101.gif",text:":-c",regexp:":-c",height:18},"=p~":{width:18,alt:"drooling",src:"/service/zimlet/com_zimbra_ymemoticons/img/38.gif",text:"=P~",regexp:"=P~",height:18},"(:|":{width:18,alt:"yawn",src:"/service/zimlet/com_zimbra_ymemoticons/img/37.gif",text:"(:|",regexp:"\\(:\\|",height:18},":-o":{width:18,alt:"surprise",src:"/service/zimlet/com_zimbra_ymemoticons/img/13.gif",text:":-O",regexp:":-O",height:18},"o->":{width:18,alt:"hiro",src:"/service/zimlet/com_zimbra_ymemoticons/img/72.gif",text:"o->",regexp:"o->",height:18},":))":{width:18,alt:"laughing",src:"/service/zimlet/com_zimbra_ymemoticons/img/21.gif",text:":))",regexp:":\\)\\)",height:18},"/:)":{width:18,alt:"raised eyebrow",src:"/service/zimlet/com_zimbra_ymemoticons/img/23.gif",text:"/:)",regexp:"\\x2f:\\)",height:18},"*-:)":{width:30,alt:"idea",src:"/service/zimlet/com_zimbra_ymemoticons/img/58.gif",text:"*-:)",regexp:"\\*-:\\)",height:18},":)]":{width:31,alt:"on the phone",src:"/service/zimlet/com_zimbra_ymemoticons/img/100.gif",text:":)]",regexp:":\\)\\]",height:18},":-ss":{width:36,alt:"nailbiting",src:"/service/zimlet/com_zimbra_ymemoticons/img/42.gif",text:":-SS",regexp:":-SS",height:18},"(%)":{width:18,alt:"yin yang",src:"/service/zimlet/com_zimbra_ymemoticons/img/75.gif",text:"(%)",regexp:"\\(%\\)",height:18},":-*":{width:18,alt:"kiss",src:"/service/zimlet/com_zimbra_ymemoticons/img/11.gif",text:":-*",regexp:":-\\*",height:18},"~x(":{width:44,alt:"at wits' end",src:"/service/zimlet/com_zimbra_ymemoticons/img/102.gif",text:"~X(",regexp:"~X\\(",height:18},"o=>":{width:18,alt:"billy",src:"/service/zimlet/com_zimbra_ymemoticons/img/73.gif",text:"o=>",regexp:"o=>",height:18},":-??":{width:40,alt:"I don't know",src:"/service/zimlet/com_zimbra_ymemoticons/img/106.gif",text:":-??",regexp:":-\\?\\?",height:18},"@-)":{width:18,alt:"hypnotized",src:"/service/zimlet/com_zimbra_ymemoticons/img/43.gif",text:"@-)",regexp:"@-\\)",height:18},"3:-o":{width:18,alt:"cow",src:"/service/zimlet/com_zimbra_ymemoticons/img/50.gif",text:"3:-O",regexp:"3:-O",height:18},"=d>":{width:18,alt:"applause",src:"/service/zimlet/com_zimbra_ymemoticons/img/41.gif",text:"=D>",regexp:"=D>",height:18},":-w":{width:23,alt:"waiting",src:"/service/zimlet/com_zimbra_ymemoticons/img/45.gif",text:":-w",regexp:":-w",height:18},":x":{width:18,alt:"love struck",src:"/service/zimlet/com_zimbra_ymemoticons/img/8.gif",text:":x",regexp:":x",height:18},":-$":{width:18,alt:"don't tell anyone",src:"/service/zimlet/com_zimbra_ymemoticons/img/32.gif",text:":-$",regexp:":-\\$",height:18},"~:>":{width:18,alt:"chicken",src:"/service/zimlet/com_zimbra_ymemoticons/img/52.gif",text:"~:>",regexp:"~:>",height:18},"=:)":{width:20,alt:"bug",src:"/service/zimlet/com_zimbra_ymemoticons/img/60.gif",text:"=:)",regexp:"=:\\)",height:18},"(*)":{width:18,alt:"star",src:"/service/zimlet/com_zimbra_ymemoticons/img/79.gif",text:"(*)",regexp:"\\(\\*\\)",height:18},":|":{width:18,alt:"straight face",src:"/service/zimlet/com_zimbra_ymemoticons/img/22.gif",text:":|",regexp:":\\|",height:18},":((":{width:22,alt:"crying",src:"/service/zimlet/com_zimbra_ymemoticons/img/20.gif",text:":((",regexp:":\\(\\(",height:18},"8-x":{width:18,alt:"skull",src:"/service/zimlet/com_zimbra_ymemoticons/img/59.gif",text:"8-X",regexp:"8-X",height:18},"o:-)":{width:30,alt:"angel",src:"/service/zimlet/com_zimbra_ymemoticons/img/25.gif",text:"O:-)",regexp:"O:-\\)",height:18},">:p":{width:18,alt:"phbbbbt",src:"/service/zimlet/com_zimbra_ymemoticons/img/47.gif",text:">:P",regexp:">:P",height:18},">-)":{width:18,alt:"alien",src:"/service/zimlet/com_zimbra_ymemoticons/img/61.gif",text:">-)",regexp:">-\\)",height:18},"=((":{width:18,alt:"broken heart",src:"/service/zimlet/com_zimbra_ymemoticons/img/12.gif",text:"=((",regexp:"=\\(\\(",height:18},"l-)":{width:24,alt:"loser",src:"/service/zimlet/com_zimbra_ymemoticons/img/30.gif",text:"L-)",regexp:"L-\\)",height:18},":@)":{width:18,alt:"pig",src:"/service/zimlet/com_zimbra_ymemoticons/img/49.gif",text:":@)",regexp:":@\\)",height:18},">:/":{width:23,alt:"bring it on",src:"/service/zimlet/com_zimbra_ymemoticons/img/70.gif",text:">:/",regexp:">:\\x2f",height:18},"b-(":{width:18,alt:"feeling beat up",src:"/service/zimlet/com_zimbra_ymemoticons/img/66.gif",text:"b-(",regexp:"b-\\(",height:18},"$-)":{width:18,alt:"money eyes",src:"/service/zimlet/com_zimbra_ymemoticons/img/64.gif",text:"$-)",regexp:"\\$-\\)",height:18},":-?":{width:18,alt:"thinking",src:"/service/zimlet/com_zimbra_ymemoticons/img/39.gif",text:":-?",regexp:":-\\?",height:18},":)>-":{width:22,alt:"peace sign",src:"/service/zimlet/com_zimbra_ymemoticons/img/67.gif",text:":)>-",regexp:":\\)>-",height:18},":-j":{width:26,alt:"oh go on",src:"/service/zimlet/com_zimbra_ymemoticons/img/78.gif",text:":-j",regexp:":-j",height:18},"%%-":{width:18,alt:"good luck",src:"/service/zimlet/com_zimbra_ymemoticons/img/54.gif",text:"%%-",regexp:"%%-",height:18},"%-(":{width:52,alt:"not listening",src:"/service/zimlet/com_zimbra_ymemoticons/img/107.gif",text:"%-(",regexp:"%-\\(",height:18},":p":{width:18,alt:"tongue",src:"/service/zimlet/com_zimbra_ymemoticons/img/10.gif",text:":P",regexp:":P",height:18},"^:)^":{width:32,alt:"not worthy",src:"/service/zimlet/com_zimbra_ymemoticons/img/77.gif",text:"^:)^",regexp:"\\^:\\)\\^",height:18},':-"':{width:22,alt:"whistling",src:"/service/zimlet/com_zimbra_ymemoticons/img/65.gif",text:':-"',regexp:":-\\x22",height:18},":-<":{width:24,alt:"sigh",src:"/service/zimlet/com_zimbra_ymemoticons/img/46.gif",text:":-<",regexp:":-<",height:18},":o3":{width:31,alt:"puppy dog eyes",src:"/service/zimlet/com_zimbra_ymemoticons/img/108.gif",text:":o3",regexp:":o3",height:18},">:)":{width:18,alt:"devil",src:"/service/zimlet/com_zimbra_ymemoticons/img/19.gif",text:">:)",regexp:">:\\)",height:18},"=;":{width:18,alt:"talk to the hand",src:"/service/zimlet/com_zimbra_ymemoticons/img/27.gif",text:"=;",regexp:"=;",height:18},"8-|":{width:18,alt:"rolling eyes",src:"/service/zimlet/com_zimbra_ymemoticons/img/29.gif",text:"8-|",regexp:"8-\\|",height:18},"**==":{width:25,alt:"flag",src:"/service/zimlet/com_zimbra_ymemoticons/img/55.gif",text:"**==",regexp:"\\*\\*==",height:18},"o-+":{width:18,alt:"april",src:"/service/zimlet/com_zimbra_ymemoticons/img/74.gif",text:"o-+",regexp:"o-+",height:18},"8-}":{width:24,alt:"silly",src:"/service/zimlet/com_zimbra_ymemoticons/img/35.gif",text:"8-}",regexp:"8-}",height:18},"=))":{width:30,alt:"rolling on the floor",src:"/service/zimlet/com_zimbra_ymemoticons/img/24.gif",text:"=))",regexp:"=\\)\\)",height:18},":-l":{width:18,alt:"frustrated",src:"/service/zimlet/com_zimbra_ymemoticons/img/62.gif",text:":-L",regexp:":-L",height:18},"b-)":{width:18,alt:"cool",src:"/service/zimlet/com_zimbra_ymemoticons/img/16.gif",text:"B-)",regexp:"B-\\)",height:18},";)":{width:18,alt:"winking",src:"/service/zimlet/com_zimbra_ymemoticons/img/3.gif",text:";)",regexp:";\\)",height:18},":>":{width:18,alt:"smug",src:"/service/zimlet/com_zimbra_ymemoticons/img/15.gif",text:":>",regexp:":>",height:18},":-&":{width:18,alt:"sick",src:"/service/zimlet/com_zimbra_ymemoticons/img/31.gif",text:":-&",regexp:":-&",height:18},"<):)":{width:18,alt:"cowboy",src:"/service/zimlet/com_zimbra_ymemoticons/img/48.gif",text:"<):)",regexp:"<\\):\\)",height:18},":-s":{width:18,alt:"worried",src:"/service/zimlet/com_zimbra_ymemoticons/img/17.gif",text:":-S",regexp:":-S",height:18},";))":{width:18,alt:"hee hee",src:"/service/zimlet/com_zimbra_ymemoticons/img/71.gif",text:";))",regexp:";\\)\\)",height:18},"[-o<":{width:18,alt:"praying",src:"/service/zimlet/com_zimbra_ymemoticons/img/63.gif",text:"[-O<",regexp:"\\[-O<",height:18},"@};-":{width:18,alt:"rose",src:"/service/zimlet/com_zimbra_ymemoticons/img/53.gif",text:"@};-",regexp:"@};-",height:18}};\r
59214 YMEmoticonsPickerButton=function(B,A){if(arguments.length==0){return \r
59215 }B.actionTiming=DwtButton.ACTION_MOUSEUP;\r
59216 DwtToolBarButton.call(this,B);\r
59217 this.setEmoticon();\r
59218 if(A&&A==true){this.setMenu(new AjxCallback(this,this._createMenu),false,false,false)\r
59219 }else{this.setMenu(new AjxCallback(this,this._createMenu),false,false,true)\r
59220 }};\r
59221 YMEmoticonsPickerButton.prototype=new DwtToolBarButton;\r
59222 YMEmoticonsPickerButton.prototype.constructor=YMEmoticonsPickerButton;\r
59223 YMEmoticonsPickerButton.prototype._createMenu=function(){var A=new DwtMenu({parent:this,style:DwtMenu.GENERIC_WIDGET_STYLE});\r
59224 this._picker=new YMEmoticonsPicker(A,null,null);\r
59225 this._picker.addSelectionListener(new AjxListener(this,this._smileyPicked));\r
59226 return A\r
59227 };\r
59228 YMEmoticonsPickerButton.prototype.setEmoticon=function(B){var A=B?YMEmoticonsPicker.SMILEYS[B]:YMEmoticonsPicker.getDefaultSmiley();\r
59229 if(A){this._smileyButtonDiv.src=A.src;\r
59230 this._smiley=A\r
59231 }};\r
59232 YMEmoticonsPickerButton.prototype._createHtmlFromTemplate=function(B,C){DwtButton.prototype._createHtmlFromTemplate.call(this,B,C);\r
59233 var D=Dwt.getNextId();\r
59234 var A="<div unselectable><img width='18' src='' id='"+D+"_smiley'></div>";\r
59235 this.setText(A);\r
59236 this._smileyButtonDiv=document.getElementById(D+"_smiley");\r
59237 delete D\r
59238 };\r
59239 YMEmoticonsPickerButton.prototype.getSmiley=function(A){return this._picker.getSmiley(A)\r
59240 };\r
59241 YMEmoticonsPickerButton.prototype.getSelectedSmiley=function(){return this._smiley\r
59242 };\r
59243 YMEmoticonsPickerButton.prototype._smileyPicked=function(A){var C=A.detail;\r
59244 this.setEmoticon(C);\r
59245 if(this.isListenerRegistered(DwtEvent.SELECTION)){var B=DwtShell.selectionEvent;\r
59246 B.item=this;\r
59247 this.notifyListeners(DwtEvent.SELECTION,B)\r
59248 }};\r
59249 YMEmoticonsPicker=function(C,B,A){if(arguments.length==0){return \r
59250 }B=B||"DwtColorPicker";\r
59251 DwtControl.call(this,{parent:C,className:B,posStyle:A});\r
59252 this._createEmoticonsPicker(C)\r
59253 };\r
59254 YMEmoticonsPicker.prototype=new DwtControl;\r
59255 YMEmoticonsPicker.prototype.constructor=YMEmoticonsPicker;\r
59256 YMEmoticonsPicker.SMILEYS=Com_Zimbra_YMEmoticons.SMILEYS;\r
59257 YMEmoticonsPicker.getDefaultSmiley=function(){for(var A in YMEmoticonsPicker.SMILEYS){return YMEmoticonsPicker.SMILEYS[A]\r
59258 }return null\r
59259 };\r
59260 YMEmoticonsPicker.prototype.getDefaultSmiley=YMEmoticonsPicker.getDefaultSmiley;\r
59261 YMEmoticonsPicker.prototype._createEmoticonsPicker=function(A){this._createEmoticonsTable();\r
59262 this._registerHandlers()\r
59263 };\r
59264 YMEmoticonsPicker.prototype.addSelectionListener=function(A){this.addListener(DwtEvent.SELECTION,A)\r
59265 };\r
59266 YMEmoticonsPicker.prototype.removeSelectionListener=function(A){this.removeListener(DwtEvent.SELECTION,A)\r
59267 };\r
59268 YMEmoticonsPicker.prototype.dispose=function(){if(this._disposed){return \r
59269 }Dwt.disassociateElementFromObject(this.getHtmlElement().firstChild,this);\r
59270 DwtControl.prototype.dispose.call(this)\r
59271 };\r
59272 YMEmoticonsPicker.prototype.getSmiley=function(A){return YMEmoticonsPicker.SMILEYS[A]\r
59273 };\r
59274 YMEmoticonsPicker.EMOTICONS_PER_ROW=11;\r
59275 YMEmoticonsPicker.prototype._createEmoticonsTable=function(){var G=0;\r
59276 var D=[];\r
59277 var A=0;\r
59278 var E=0;\r
59279 var H=0;\r
59280 var B=0;\r
59281 var I=0;\r
59282 for(var C in YMEmoticonsPicker.SMILEYS){if(A!=0&&!(A%YMEmoticonsPicker.EMOTICONS_PER_ROW)){D[G++]="</tr><tr>";\r
59283 if(E>H){H=E\r
59284 }E=0\r
59285 }B=YMEmoticonsPicker.SMILEYS[C].width;\r
59286 I=YMEmoticonsPicker.SMILEYS[C].height;\r
59287 D[G++]=['<td style=\'background-color:#FFFFFF;\' align="center" valign="middle" id=\'',C,"' >"].join("");\r
59288 D[G++]=["<img  height='",I,"' width='",B,"' src='",YMEmoticonsPicker.SMILEYS[C].src,"'","  title='",YMEmoticonsPicker.SMILEYS[C].alt,"  ",YMEmoticonsPicker.SMILEYS[C].text,"'","  />"].join("");\r
59289 D[G++]="</td>";\r
59290 A++;\r
59291 E=E+B\r
59292 }D[G++]="</table>";\r
59293 var F=["<table  cellpadding='2' cellspacing='3' border='0' align='center' width='",H,"px'><tr>"].join("");\r
59294 this.getHtmlElement().innerHTML=[F,D.join("")].join("");\r
59295 if(AjxEnv.isFirefox1_5up&&!AjxEnv.isFirefox3up){this.setSize("480px",Dwt.DEFAULT)\r
59296 }};\r
59297 YMEmoticonsPicker.prototype._registerHandlers=function(){var F=this.getHtmlElement().firstChild;\r
59298 Dwt.associateElementWithObject(F,this);\r
59299 var G=F.rows;\r
59300 var H=G.length;\r
59301 for(var D=0;\r
59302 D<H;\r
59303 D++){var C=G[D].cells;\r
59304 var E=C.length;\r
59305 for(var B=0;\r
59306 B<E;\r
59307 B++){var A=C[B];\r
59308 Dwt.setHandler(A,DwtEvent.ONMOUSEDOWN,YMEmoticonsPicker._mouseDownHdlr);\r
59309 Dwt.setHandler(A,DwtEvent.ONMOUSEUP,YMEmoticonsPicker._mouseUpHdlr)\r
59310 }}};\r
59311 YMEmoticonsPicker._mouseDownHdlr=function(B){var A=DwtShell.mouseEvent;\r
59312 A.setFromDhtmlEvent(B,true);\r
59313 var C=A.target;\r
59314 if(C.nodeName.toLowerCase()=="img"){C=C.parentNode\r
59315 }A.dwtObj._downTdId=C.id;\r
59316 A._stopPropagation=true;\r
59317 A._returnValue=false;\r
59318 A.setToDhtmlEvent(B);\r
59319 return false\r
59320 };\r
59321 YMEmoticonsPicker._mouseUpHdlr=function(C){var B=DwtShell.mouseEvent;\r
59322 B.setFromDhtmlEvent(C,true);\r
59323 var F=B.dwtObj;\r
59324 var E=B.target;\r
59325 if(E.nodeName.toLowerCase()=="img"){E=E.parentNode\r
59326 }if(F._downTdId==E.id){var A=YMEmoticonsPicker.SMILEYS[E.id];\r
59327 if(A){if(F.isListenerRegistered(DwtEvent.SELECTION)){var D=DwtShell.selectionEvent;\r
59328 DwtUiEvent.copy(D,B);\r
59329 D.item=F;\r
59330 D.detail=E.id;\r
59331 F.notifyListeners(DwtEvent.SELECTION,D)\r
59332 }}if(F.parent instanceof DwtMenu){DwtMenu.closeActiveMenu()\r
59333 }}B._stopPropagation=true;\r
59334 B._returnValue=false;\r
59335 B.setToDhtmlEvent(C);\r
59336 return false\r
59337 };\r
59338 function Com_Zimbra_Gtranslator(){}Com_Zimbra_Gtranslator.prototype=new ZmZimletBase();\r
59339 Com_Zimbra_Gtranslator.prototype.constructor=Com_Zimbra_Gtranslator;\r
59340 Com_Zimbra_Gtranslator.URL="http://translate.google.com/translate_t";\r
59341 Com_Zimbra_Gtranslator.prototype.doDrop=function(A){this._zmObject=A;\r
59342 this._isUserInput=false;\r
59343 if(!this._gTranslatorDialog){this._initialize()\r
59344 }this._contentDIV.innerHTML=AjxStringUtil.nl2br(this._zmObject.body);\r
59345 this._contentTA.style.visibility="hidden";\r
59346 this._contentDIV.style.visibility="visible";\r
59347 this._langSelect.setSelected(0);\r
59348 this._gTranslatorDialog.popup()\r
59349 };\r
59350 Com_Zimbra_Gtranslator.prototype.doubleClicked=function(A){this._isUserInput=true;\r
59351 if(!this._gTranslatorDialog){this._initialize()\r
59352 }this._contentTA.value="";\r
59353 this._contentDIV.style.visibility="hidden";\r
59354 this._contentTA.style.visibility="visible";\r
59355 this._contentTA.focus();\r
59356 this._gTranslatorDialog.popup()\r
59357 };\r
59358 Com_Zimbra_Gtranslator.prototype._makeRequest=function(F,E){var A=[];\r
59359 var D=0;\r
59360 A[D++]="text=";\r
59361 A[D++]=AjxStringUtil.urlEncode(E);\r
59362 A[D++]="&langpair=";\r
59363 A[D++]=AjxStringUtil.urlEncode(F||"en|de");\r
59364 A[D++]="&hl=en&ie=UTF8";\r
59365 var B={"User-Agent":navigator.userAgent,"Content-Type":"application/x-www-form-urlencoded",Referrer:"http://translate.google.com/translate_t"};\r
59366 var C=ZmZimletBase.PROXY+AjxStringUtil.urlEncode(Com_Zimbra_Gtranslator.URL);\r
59367 AjxRpc.invoke(A.join(""),C,B,new AjxCallback(this,this._resultCallback))\r
59368 };\r
59369 Com_Zimbra_Gtranslator.prototype._initialize=function(){this._parentView=new DwtComposite(this.getShell());\r
59370 this._parentView.setSize("440","175");\r
59371 this._languages=[{value:"en|de",label:"English to German"},{value:"en|es",label:"English to Spanish"},{value:"en|fr",label:"English to French"},{value:"en|it",label:"English to Italian"},{value:"en|pt",label:"English to Portuguese"},{value:"en|ja",label:"English to Japanese BETA"},{value:"en|ko",label:"English to Korean BETA"},{value:"en|zh-CN",label:"English to Chinese (Simplified) BETA"},{value:"de|en",label:"German to English"},{value:"de|fr",label:"German to French"},{value:"es|en",label:"Spanish to English"},{value:"fr|en",label:"French to English"},{value:"fr|de",label:"French to German"},{value:"it|en",label:"Italian to English"},{value:"pt|en",label:"Portuguese to English"},{value:"ja|en",label:"Japanese to English BETA"},{value:"ko|en",label:"Korean to English BETA"},{value:"zh-CN|en",label:"Chinese (Simplified) to English BETA"}];\r
59372 var D=Dwt.getNextId();\r
59373 var C=Dwt.getNextId();\r
59374 var F=document.createElement("div");\r
59375 var B=[];\r
59376 var A=0;\r
59377 B[A++]="<table border=0 width=100%><tr>";\r
59378 B[A++]="<td width=100% id='";\r
59379 B[A++]=D;\r
59380 B[A++]="'></td><td id='";\r
59381 B[A++]=C;\r
59382 B[A++]="'></td></tr></table>";\r
59383 F.innerHTML=B.join("");\r
59384 this._parentView.getHtmlElement().appendChild(F);\r
59385 this._langSelect=new DwtSelect({parent:this._parentView});\r
59386 this._langSelect.reparentHtmlElement(D);\r
59387 for(A=0;\r
59388 A<this._languages.length;\r
59389 A++){var E=this._languages[A];\r
59390 this._langSelect.addOption(E.label,A==0,E.value)\r
59391 }this._translateButton=new DwtButton({parent:this._parentView});\r
59392 this._translateButton.reparentHtmlElement(C);\r
59393 this._translateButton.setText("Translate");\r
59394 this._translateButton.addSelectionListener(new AjxListener(this,this._translateListener));\r
59395 this._contentTA=document.createElement("TEXTAREA");\r
59396 this._contentTA.style.height="140px";\r
59397 this._contentTA.style.width="435px";\r
59398 this._contentTA.style.padding="3px";\r
59399 this._contentTA.style.position="absolute";\r
59400 this._parentView.getHtmlElement().appendChild(this._contentTA);\r
59401 this._contentDIV=document.createElement("DIV");\r
59402 this._contentDIV.style.height="140px";\r
59403 this._contentDIV.style.width="435px";\r
59404 this._contentDIV.style.backgroundColor="#FFFFFF";\r
59405 this._contentDIV.style.padding="3px";\r
59406 this._contentDIV.style.position="absolute";\r
59407 this._contentDIV.style.overflow="auto";\r
59408 this._parentView.getHtmlElement().appendChild(this._contentDIV);\r
59409 this._gTranslatorDialog=this._createDialog({title:"Google Translator",view:this._parentView});\r
59410 this._gTranslatorDialog.setButtonListener(DwtDialog.OK_BUTTON,new AjxListener(this,this._gTranslatorDialogOkListener))\r
59411 };\r
59412 Com_Zimbra_Gtranslator.prototype._populate=function(C){var A=C.success?C.text:null;\r
59413 var B=A?A.indexOf("<div id=result_box"):null;\r
59414 var D=B?Dwt.parseHtmlFragment(A.substring(B)):null;\r
59415 if(this._isUserInput){this._contentTA.style.visibility="hidden";\r
59416 this._contentDIV.style.visibility="visible"\r
59417 }this._contentDIV.innerHTML=D?D.innerHTML:"An error occurred attempting to translate this message."\r
59418 };\r
59419 Com_Zimbra_Gtranslator.prototype._gTranslatorDialogOkListener=function(A){this._gTranslatorDialog.popdown()\r
59420 };\r
59421 Com_Zimbra_Gtranslator.prototype._translateListener=function(A){var B=this._isUserInput?this._contentTA.value:this._zmObject.body;\r
59422 this._makeRequest(this._langSelect.getValue(),B)\r
59423 };\r
59424 Com_Zimbra_Gtranslator.prototype._resultCallback=function(A){this._populate(A);\r
59425 if(!this._gTranslatorDialog.isPoppedUp()){this._gTranslatorDialog.popup()\r
59426 }};\r
59427 function Com_Zimbra_YMaps(){}Com_Zimbra_YMaps.prototype=new ZmZimletBase();\r
59428 Com_Zimbra_YMaps.prototype.constructor=Com_Zimbra_YMaps;\r
59429 Com_Zimbra_YMaps.prototype.init=function(){if(ZmAssistant&&ZmAssistant.register){ZmAssistant.register(new Com_Zimbra_YMaps_Asst())\r
59430 }};\r
59431 Com_Zimbra_YMaps.URL="http://api.local.yahoo.com/MapsService/V1/mapImage?appid=ZimbraMail&zoom=4&image_height=245&image_width=345&location=";\r
59432 Com_Zimbra_YMaps.CACHE=[];\r
59433 Com_Zimbra_YMaps.prototype.doubleClicked=function(){this.singleClicked()\r
59434 };\r
59435 Com_Zimbra_YMaps.prototype.clicked=function(E,D,C,B){var A="http://maps.yahoo.com/maps_result?addr=";\r
59436 var F=D.replace("\n"," ").replace("\r"," ");\r
59437 B=window.open(A+escape(F))\r
59438 };\r
59439 Com_Zimbra_YMaps.prototype.singleClicked=function(){var E=[{label:"Address",name:"address",type:"string",minLength:2,maxLength:200}];\r
59440 if(!this._dlg_propertyEditor){var B=new DwtComposite(this.getShell());\r
59441 var A=this._propertyEditor=new DwtPropertyEditor(B,true);\r
59442 A.initProperties(E);\r
59443 var D={title:"Yahoo Maps: Enter Address",view:B};\r
59444 this._dlg_propertyEditor=this._createDialog(D);\r
59445 var C=this._dlg_propertyEditor;\r
59446 A.setFixedLabelWidth();\r
59447 A.setFixedFieldWidth();\r
59448 C.setButtonListener(DwtDialog.OK_BUTTON,new AjxListener(this,function(){if(!A.validateData()){return \r
59449 }this._getDisplayCustomMap()\r
59450 }))\r
59451 }this._dlg_propertyEditor.popup()\r
59452 };\r
59453 Com_Zimbra_YMaps.prototype._getDisplayCustomMap=function(){this._dlg_propertyEditor.popdown();\r
59454 this._displayDialogMap(this._propertyEditor.getProperties().address);\r
59455 this._dlg_propertyEditor.dispose();\r
59456 this._dlg_propertyEditor=null\r
59457 };\r
59458 Com_Zimbra_YMaps.prototype._displayDialogMap=function(B){var A=new DwtComposite(this.getShell());\r
59459 var D={view:A,title:"Yahoo Map",standardButtons:[DwtDialog.OK_BUTTON]};\r
59460 var C=this._createDialog(D);\r
59461 C.popup();\r
59462 C.setButtonListener(DwtDialog.OK_BUTTON,new AjxListener(this,function(){C.popdown();\r
59463 C.dispose()\r
59464 }));\r
59465 var E=document.createElement("div");\r
59466 A.getHtmlElement().appendChild(E);\r
59467 this.toolTipPoppedUp(null,B,null,E)\r
59468 };\r
59469 Com_Zimbra_YMaps.prototype.toolTipPoppedUp=function(D,E,C,B){B.innerHTML=['<center><img width="345" height="245" id="',ZmZimletBase.encodeId(E),'" src="',this.getResource("blank_pixel.gif"),'"/></center>'].join("");\r
59470 if(Com_Zimbra_YMaps.CACHE[E+"img"]){Com_Zimbra_YMaps._displayImage(Com_Zimbra_YMaps.CACHE[E+"img"],E)\r
59471 }else{var A=ZmZimletBase.PROXY+AjxStringUtil.urlComponentEncode(Com_Zimbra_YMaps.URL+AjxStringUtil.urlComponentEncode(E));\r
59472 AjxRpc.invoke(null,A,null,new AjxCallback(this,Com_Zimbra_YMaps._callback,E),true)\r
59473 }};\r
59474 Com_Zimbra_YMaps._displayImage=function(A,C){var B=document.getElementById(ZmZimletBase.encodeId(C));\r
59475 B.style.backgroundImage="url("+A+")";\r
59476 if(!Com_Zimbra_YMaps.CACHE[C+"img"]){Com_Zimbra_YMaps.CACHE[C+"img"]=A\r
59477 }};\r
59478 Com_Zimbra_YMaps._callback=function(D,A){var C=A.text;\r
59479 var B=C.substring(C.indexOf("http://gws"),C.indexOf("</Result>"));\r
59480 B=ZmZimletBase.PROXY+AjxStringUtil.urlComponentEncode(B);\r
59481 Com_Zimbra_YMaps._displayImage(B,D)\r
59482 };\r
59483 function Com_Zimbra_YMaps_Asst(){ZmAssistant.call(this,"Yahoo Maps","map","Map an address using Yahoo Maps")\r
59484 }Com_Zimbra_YMaps_Asst.prototype=new ZmAssistant();\r
59485 Com_Zimbra_YMaps_Asst.prototype.constructor=Com_Zimbra_YMaps_Asst;\r
59486 Com_Zimbra_YMaps_Asst.prototype.okHandler=function(C){var B=appCtxt.getZimletMgr();\r
59487 var A=B?B._ZIMLETS_BY_ID.com_zimbra_ymaps:null;\r
59488 if(A&&this._address){A.handlerObject.toolTipPoppedUp(null,this._address,null,C.getAssistantDiv())\r
59489 }return false\r
59490 };\r
59491 Com_Zimbra_YMaps_Asst.prototype.handle=function(B,D,A){this._address=A;\r
59492 var C=A.length>0;\r
59493 B._setOkButton("Map",true,C)\r
59494 };\r
59495 function com_zimbra_bugz(){}com_zimbra_bugz.prototype=new ZmZimletBase();\r
59496 com_zimbra_bugz.prototype.constructor=com_zimbra_bugz;\r
59497 com_zimbra_bugz.prototype.generateSpan=function(F,J,E,D,A){var I=this.xmlObj("contentObject");\r
59498 var B=I&&I.onClick&&I.onClick.actionUrl;\r
59499 if(B){var H=this._createContentObj(E,A);\r
59500 var G=[];\r
59501 this._getHtmlContent(G,0,E,A,D);\r
59502 var C={id:D,className:this.getClassName(E),href:this._zimletContext.makeURL(B,H),text:G};\r
59503 F[J++]=AjxTemplate.expand("com_zimbra_bugz.templates.Bugz#Bugz_link",C)\r
59504 }return J\r
59505 };\r
59506 ZmZimletBase.prototype.clicked=function(B,D,A,C){C._stopPropagation=false\r
59507 };\r
59508 AjxTemplate.register("com_zimbra_bugz.templates.Bugz#Bugz_link",function(B,F,E,A){var D=Boolean(A);\r
59509 E=(typeof E=="string"?{id:E}:E)||{};\r
59510 A=A||[];\r
59511 var C=A.length;\r
59512 A[C++]='<a target="_blank" id=\'';\r
59513 A[C++]=E.id;\r
59514 A[C++]="' href='";\r
59515 A[C++]=E.href;\r
59516 A[C++]="' class='";\r
59517 A[C++]=E.className;\r
59518 A[C++]="'>";\r
59519 A[C++]=E.text;\r
59520 A[C++]="</a>";\r
59521 return D?A.length:A.join("")\r
59522 },{id:"Bugz_link"},true);\r
59523 AjxPackage.define("com_zimbra_bugz.templates.Bugz");\r
59524 AjxTemplate.register("com_zimbra_bugz.templates.Bugz",AjxTemplate.getTemplate("com_zimbra_bugz.templates.Bugz#Bugz_link"),AjxTemplate.getParams("com_zimbra_bugz.templates.Bugz#Bugz_link"));\r
59525 \r
59526 \r
59527 \r
59528 /* Copyright (c) 2006, Yahoo! Inc. All rights reserved. */ YAHOO.util.Dom=new function(){this.get=function(el){if(typeof el=='string'){el=document.getElementById(el);}return el;};this.getStyle=function(el,property){var value=null;var dv=document.defaultView;el=this.get(el);if(property=='opacity'&&el.filters){value=1;try{value=el.filters.item('DXImageTransform.Microsoft.Alpha').opacity/100;}catch(e){try{value=el.filters.item('alpha').opacity/100;}catch(e){}}}else if(el.style[property]){value=el.style[property];}else if(el.currentStyle&&el.currentStyle[property]){value=el.currentStyle[property];}else if(dv&&dv.getComputedStyle){var converted='';for(i=0,len=property.length;i<len;++i){if(property.charAt(i)==property.charAt(i).toUpperCase()){converted=converted+'-'+property.charAt(i).toLowerCase();}else{converted=converted+property.charAt(i);}}if(dv.getComputedStyle(el,'').getPropertyValue(converted)){value=dv.getComputedStyle(el,'').getPropertyValue(converted);}}return value;};this.setStyle=function(el,property,val){el=this.get(el);switch(property){case'opacity':if(el.filters){el.style.filter='alpha(opacity='+val*100+')';if(!el.currentStyle.hasLayout){el.style.zoom=1;}}else{el.style.opacity=val;el.style['-moz-opacity']=val;el.style['-khtml-opacity']=val;}break;default:el.style[property]=val;}};this.getXY=function(el){el=this.get(el);if(el.parentNode===null||this.getStyle(el,'display')=='none'){return false;}var parent=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;return[box.left+scrollLeft,box.top+scrollTop];}else if(document.getBoxObjectFor){box=document.getBoxObjectFor(el);pos=[box.x,box.y];}else{pos=[el.offsetLeft,el.offsetTop];parent=el.offsetParent;if(parent!=el){while(parent){pos[0]+=parent.offsetLeft;pos[1]+=parent.offsetTop;parent=parent.offsetParent;}}var ua=navigator.userAgent.toLowerCase();if(ua.indexOf('opera')!=-1||(ua.indexOf('safari')!=-1&&this.getStyle(el,'position')=='absolute')){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}}if(el.parentNode){parent=el.parentNode;}else{parent=null;}while(parent&&parent.tagName!='BODY'&&parent.tagName!='HTML'){pos[0]-=parent.scrollLeft;pos[1]-=parent.scrollTop;if(parent.parentNode){parent=parent.parentNode;}else{parent=null;}}return pos;};this.getX=function(el){return this.getXY(el)[0];};this.getY=function(el){return this.getXY(el)[1];};this.setXY=function(el,pos,noRetry){el=this.get(el);var pageXY=YAHOO.util.Dom.getXY(el);if(pageXY===false){return false;}if(this.getStyle(el,'position')=='static'){this.setStyle(el,'position','relative');}var delta=[parseInt(YAHOO.util.Dom.getStyle(el,'left'),10),parseInt(YAHOO.util.Dom.getStyle(el,'top'),10)];if(isNaN(delta[0])){delta[0]=0;}if(isNaN(delta[1])){delta[1]=0;}if(pos[0]!==null){el.style.left=pos[0]-pageXY[0]+delta[0]+'px';}if(pos[1]!==null){el.style.top=pos[1]-pageXY[1]+delta[1]+'px';}var newXY=this.getXY(el);if(!noRetry&&(newXY[0]!=pos[0]||newXY[1]!=pos[1])){this.setXY(el,pos,true);}return true;};this.setX=function(el,x){return this.setXY(el,[x,null]);};this.setY=function(el,y){return this.setXY(el,[null,y]);};this.getRegion=function(el){el=this.get(el);return new YAHOO.util.Region.getRegion(el);};this.getClientWidth=function(){return(document.documentElement.offsetWidth||document.body.offsetWidth);};this.getClientHeight=function(){return(self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight);};this.getElementsByClassName=function(className,tag,root){root=root||document;tag=tag||'*';var nodes=[];var elements=root.getElementsByTagName(tag);var re=new RegExp('(^|\\s)'+className+'(\\s|$)');for(var i=0,len=elements.length;i<len;++i){if(re.test(elements[i]['className'])){nodes[nodes.length]=elements[i];}}return nodes;};this.hasClass=function(el,className){el=this.get(el);var re=new RegExp('(^|\\s)'+className+'(\\s|$)');return re.test(el['className']);};this.addClass=function(el,className){if(this.hasClass(el,className)){return false;}el=this.get(el);el['className']=[el['className'],className].join(' ');return true;};this.removeClass=function(el,className){if(!this.hasClass(el,className)){return false;}el=this.get(el);var re=new RegExp('(^|\\s)'+className+'(\\s|$)');var c=el['className'];el['className']=c.replace(re,'');return true;};};YAHOO.util.Region=function(t,r,b,l){this.top=t;this.right=r;this.bottom=b;this.left=l;};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&&region.right<=this.right&&region.top>=this.top&&region.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"  t: "+this.top+", r: "+this.right+", b: "+this.bottom+", l: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){this.x=x;this.y=y;this.top=y;this.right=x;this.bottom=y;this.left=x;};YAHOO.util.Point.prototype=new YAHOO.util.Region();\r
59529 \r
59530 \r
59531 \r
59532 /* Copyright (c) 2006 Yahoo! Inc. All rights reserved. */YAHOO.util.CustomEvent=function(_1,_2){this.type=_1;this.scope=_2||window;this.subscribers=[];if(YAHOO.util["Event"]){YAHOO.util.Event.regCE(this);}};YAHOO.util.CustomEvent.prototype={subscribe:function(fn,_4,_5){this.subscribers.push(new YAHOO.util.Subscriber(fn,_4,_5));},unsubscribe:function(fn,_6){var _7=false;for(var i=0;i<this.subscribers.length;++i){var s=this.subscribers[i];if(s&&s.contains(fn,_6)){this._delete(i);_7=true;}}return _7;},fire:function(){for(var i=0;i<this.subscribers.length;++i){var s=this.subscribers[i];if(s){var _10=(s.override)?s.obj:this.scope;s.fn.call(_10,this.type,arguments,s.obj);}}},unsubscribeAll:function(){for(var i=0;i<this.subscribers.length;++i){this._delete(i);}},_delete:function(_11){var s=this.subscribers[_11];if(s){delete s.fn;delete s.obj;}delete this.subscribers[_11];}};YAHOO.util.Subscriber=function(fn,obj,_13){this.fn=fn;this.obj=obj||null;this.override=(_13);};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){return (this.fn==fn&&this.obj==obj);};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var _14=false;var _15=[];var _16=[];var _17=[];var _18=[];var _19=[];var _20=[];var _21=0;var _22=[];return {POLL_RETRYS:200,POLL_INTERVAL:50,EL:0,TYPE:1,FN:2,WFN:3,SCOPE:3,ADJ_SCOPE:4,isSafari:(/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),isIE:(!this.isSafari&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),addDelayedListener:function(el,_24,fn,_25,_26){_16[_16.length]=[el,_24,fn,_25,_26];if(_14){_21=this.POLL_RETRYS;this.startTimeout(0);}},startTimeout:function(_27){var i=(_27||_27===0)?_27:this.POLL_INTERVAL;this.timeout=setTimeout("YAHOO.util.Event._tryPreloadAttach()",i);},onAvailable:function(_28,_29,_30,_31){_22.push({id:_28,fn:_29,obj:_30,override:_31});_21=this.POLL_RETRYS;this.startTimeout(0);},addListener:function(el,_32,fn,_33,_34){if(this._isValidCollection(el)){var ok=true;for(var i=0;i<el.length;++i){ok=(this.on(el[i],_32,fn,_33,_34)&&ok);}return ok;}else{if(typeof el=="string"){var oEl=this.getEl(el);if(_14&&oEl){el=oEl;}else{this.addDelayedListener(el,_32,fn,_33,_34);return true;}}}if(!el){return false;}if("unload"==_32&&_33!==this){_17[_17.length]=[el,_32,fn,_33,_34];return true;}var _37=(_34)?_33:el;var _38=function(e){return fn.call(_37,YAHOO.util.Event.getEvent(e),_33);};var li=[el,_32,fn,_38,_37];var _41=_15.length;_15[_41]=li;if(this.useLegacyEvent(el,_32)){var _42=this.getLegacyIndex(el,_32);if(_42==-1){_42=_19.length;_19[_42]=[el,_32,el["on"+_32]];_20[_42]=[];el["on"+_32]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),_42);};}_20[_42].push(_41);}else{if(el.addEventListener){el.addEventListener(_32,_38,false);}else{if(el.attachEvent){el.attachEvent("on"+_32,_38);}}}return true;},fireLegacyEvent:function(e,_43){var ok=true;var le=_20[_43];for(i=0;i<le.length;++i){var _45=le[i];if(_45){var li=_15[_45];if(li&&li[this.WFN]){var _46=li[this.ADJ_SCOPE];var ret=li[this.WFN].call(_46,e);ok=(ok&&ret);}else{delete le[i];}}}return ok;},getLegacyIndex:function(el,_48){for(var i=0;i<_19.length;++i){var le=_19[i];if(le&&le[0]==el&&le[1]==_48){return i;}}return -1;},useLegacyEvent:function(el,_49){return ((!el.addEventListener&&!el.attachEvent)||(_49=="click"&&this.isSafari));},removeListener:function(el,_50,fn){if(typeof el=="string"){el=this.getEl(el);}else{if(this._isValidCollection(el)){var ok=true;for(var i=0;i<el.length;++i){ok=(this.removeListener(el[i],_50,fn)&&ok);}return ok;}}var _51=null;var _52=this._getCacheIndex(el,_50,fn);if(_52>=0){_51=_15[_52];}if(!el||!_51){return false;}if(el.removeEventListener){el.removeEventListener(_50,_51[this.WFN],false);}else{if(el.detachEvent){el.detachEvent("on"+_50,_51[this.WFN]);}}delete _15[_52][this.WFN];delete _15[_52][this.FN];delete _15[_52];return true;},getTarget:function(ev,_54){var t=ev.target||ev.srcElement;if(_54&&t&&"#text"==t.nodeName){return t.parentNode;}else{return t;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}}return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}}return y;},getXY:function(ev){return [this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else{if(ev.type=="mouseover"){t=ev.fromElement;}}}return t;},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(e){return t;}}return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;}c=c.caller;}}return ev;},getCharCode:function(ev){return ev.charCode||(ev.type=="keypress")?ev.keyCode:0;},_getCacheIndex:function(el,_59,fn){for(var i=0;i<_15.length;++i){var li=_15[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==_59){return i;}}return -1;},_isValidCollection:function(o){return (o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){for(i in this.elCache){delete this.elCache[i];}},regCE:function(ce){_18.push(ce);},_load:function(e){_14=true;},_tryPreloadAttach:function(){if(this.locked){return false;}this.locked=true;var _63=!_14;if(!_63){_63=(_21>0);}var _64=[];for(var i=0;i<_16.length;++i){var d=_16[i];if(d){var el=this.getEl(d[this.EL]);if(el){this.on(el,d[this.TYPE],d[this.FN],d[this.SCOPE],d[this.ADJ_SCOPE]);delete _16[i];}else{_64.push(d);}}}_16=_64;notAvail=[];for(i=0;i<_22.length;++i){var _66=_22[i];if(_66){el=this.getEl(_66.id);if(el){var _67=(_66.override)?_66.obj:el;_66.fn.call(_67,_66.obj);delete _22[i];}else{notAvail.push(_66);}}}_21=(_64.length===0&&notAvail.length===0)?0:_21-1;if(_63){this.startTimeout();}this.locked=false;},_unload:function(e,me){for(var i=0;i<_17.length;++i){var l=_17[i];if(l){var _70=(l[this.ADJ_SCOPE])?l[this.SCOPE]:window;l[this.FN].call(_70,this.getEvent(e),l[this.SCOPE]);}}if(_15&&_15.length>0){for(i=0;i<_15.length;++i){l=_15[i];if(l){this.removeListener(l[this.EL],l[this.TYPE],l[this.FN]);}}this.clearCache();}for(i=0;i<_18.length;++i){_18[i].unsubscribeAll();delete _18[i];}for(i=0;i<_19.length;++i){delete _19[i][0];delete _19[i];}},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement;db=document.body;if(dd&&dd.scrollTop){return [dd.scrollTop,dd.scrollLeft];}else{if(db){return [db.scrollTop,db.scrollLeft];}else{return [0,0];}}}};}();YAHOO.util.Event.on=YAHOO.util.Event.addListener;if(document&&document.body){YAHOO.util.Event._load();}else{YAHOO.util.Event.on(window,"load",YAHOO.util.Event._load,YAHOO.util.Event,true);}YAHOO.util.Event.on(window,"unload",YAHOO.util.Event._unload,YAHOO.util.Event,true);YAHOO.util.Event._tryPreloadAttach();}\r
59533 \r
59534 \r
59535 \r
59536 /* Test build: dragdrop.20060522-1 Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt */ YAHOO.util.DragDrop=function(id,_2){if(id){this.init(id,_2);}};YAHOO.util.DragDrop.prototype={id: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,b4StartDrag:function(x,y){},startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOut:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDragDrop:function(e,id){},b4EndDrag:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=this.DDM.getElement(this.id);}return this._domRef;},getDragEl:function(){return this.DDM.getElement(this.dragElId);},init:function(id,_6){this.initTarget(id,_6);YAHOO.util.Event.addListener(this.id,"mousedown",this.handleMouseDown,this,true);},initTarget:function(id,_7){this.DDM=YAHOO.util.DDM;this.padding=[0,0,0,0];this.groups={};this.id=id;this.setDragElId(id);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.handleElId=id;YAHOO.util.Event.onAvailable(id,this.handleOnAvailable,this,true);this.addToGroup((_7)?_7:"default");},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(_8,_9,_10,_11){if(!_9&&0!==_9){this.padding=[_8,_8,_8,_8];}else{if(!_10&&0!==_10){this.padding=[_8,_9,_8,_9];}else{this.padding=[_8,_9,_10,_11];}}},setInitPosition:function(_12,_13){var el=this.getEl();if(!this.DDM.verifyEl(el)){return;}var dx=_12||0;var dy=_13||0;var p=YAHOO.util.Dom.getXY(el);this.initPageX=p[0]-dx;this.initPageY=p[1]-dy;this.lastPageX=p[0];this.lastPageY=p[1];this.setStartPosition(p);},setStartPosition:function(pos){var p=pos||YAHOO.util.Dom.getXY(this.getEl());this.startPageX=p[0];this.startPageY=p[1];},addToGroup:function(_19){this.groups[_19]=true;this.DDM.regDragDrop(this,_19);},setDragElId:function(id){this.dragElId=id;},setHandleElId:function(id){this.handleElId=id;this.DDM.regHandle(this.id,id);},setOuterHandleElId:function(id){YAHOO.util.Event.addListener(id,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(id);},unreg:function(){YAHOO.util.Event.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return (this.DDM.isLocked()||this.locked);},handleMouseDown:function(e,oDD){var EU=YAHOO.util.Event;var _22=e.which||e.button;if(this.primaryButtonOnly&&_22>1){return;}if(this.isLocked()){return;}this.DDM.refreshCache(this.groups);var pt=new YAHOO.util.Point(EU.getPageX(e),EU.getPageY(e));if(this.DDM.isOverTarget(pt,this)){var _24=EU.getTarget(e);if(this.isValidHandleChild(_24)&&(this.id==this.handleElId||this.DDM.handleWasClicked(_24,this.id))){this.setStartPosition();this.b4MouseDown(e);this.onMouseDown(e);this.DDM.handleMouseDown(e,this);this.DDM.stopEvent(e);}}},addInvalidHandleType:function(_25){var _26=_25.toUpperCase();this.invalidHandleTypes[_26]=_26;},addInvalidHandleId:function(id){this.invalidHandleIds[id]=id;},addInvalidHandleClass:function(_27){this.invalidHandleClasses.push(_27);},removeInvalidHandleType:function(_28){var _29=_28.toUpperCase();delete this.invalidHandleTypes[_29];},removeInvalidHandleId:function(id){delete this.invalidHandleIds[id];},removeInvalidHandleClass:function(_30){for(var i=0,len=this.invalidHandleClasses.length;i<len;++i){if(this.invalidHandleClasses[i]==_30){delete this.invalidHandleClasses[i];}}},isValidHandleChild:function(_32){var _33=true;var n=(_32.nodeName=="#text")?_32.parentNode:_32;_33=_33&&!this.invalidHandleTypes[n.nodeName];_33=_33&&!this.invalidHandleIds[n.id];for(var i=0,len=this.invalidHandleClasses.length;_33&&i<len;++i){_33=!YAHOO.util.Dom.hasClass(n,this.invalidHandleClasses[i]);}return _33;},setXTicks:function(_35,_36){this.xTicks=[];this.xTickSize=_36;var _37={};for(var i=this.initPageX;i>=this.minX;i=i-_36){if(!_37[i]){this.xTicks[this.xTicks.length]=i;_37[i]=true;}}for(i=this.initPageX;i<=this.maxX;i=i+_36){if(!_37[i]){this.xTicks[this.xTicks.length]=i;_37[i]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(_38,_39){this.yTicks=[];this.yTickSize=_39;var _40={};for(var i=this.initPageY;i>=this.minY;i=i-_39){if(!_40[i]){this.yTicks[this.yTicks.length]=i;_40[i]=true;}}for(i=this.initPageY;i<=this.maxY;i=i+_39){if(!_40[i]){this.yTicks[this.yTicks.length]=i;_40[i]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(_41,_42,_43){this.leftConstraint=_41;this.rightConstraint=_42;this.minX=this.initPageX-_41;this.maxX=this.initPageX+_42;if(_43){this.setXTicks(this.initPageX,_43);}this.constrainX=true;},setYConstraint:function(iUp,_45,_46){this.topConstraint=iUp;this.bottomConstraint=_45;this.minY=this.initPageY-iUp;this.maxY=this.initPageY+_45;if(_46){this.setYTicks(this.initPageY,_46);}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var dx=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var dy=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(dx,dy);}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(val,_48){if(!_48){return val;}else{if(_48[0]>=val){return _48[0];}else{for(var i=0,len=_48.length;i<len;++i){var _49=i+1;if(_48[_49]&&_48[_49]>=val){var _50=val-_48[i];var _51=_48[_49]-val;return (_51>_50)?_48[i]:_48[_49];}}return _48[_48.length-1];}}},toString:function(val,_52){return ("YAHOO.util.DragDrop {"+this.id+"}");}};if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=new function(){this.ids={};this.handleIds={};this.dragCurrent=null;this.dragOvers={};this.deltaX=0;this.deltaY=0;this.preventDefault=true;this.stopPropagation=true;this.initalized=false;this.locked=false;this.init=function(){};this.POINT=0;this.INTERSECT=1;this.mode=this.POINT;this._execOnAll=function(_53,_54){for(var i in this.ids){for(var j in this.ids[i]){var oDD=this.ids[i][j];if(!this.isTypeOfDD(oDD)){continue;}oDD[_53].apply(oDD,_54);}}};this._onLoad=function(){var EU=YAHOO.util.Event;EU.on(document,"mouseup",this.handleMouseUp,this,true);EU.on(document,"mousemove",this.handleMouseMove,this,true);EU.on(window,"unload",this._onUnload,this,true);EU.on(window,"resize",this._onResize,this,true);this.initalized=true;};this._onResize=function(e){this._execOnAll("resetConstraints",[]);};this.lock=function(){this.locked=true;};this.unlock=function(){this.locked=false;};this.isLocked=function(){return this.locked;};this.locationCache={};this.useCache=true;this.clickPixelThresh=3;this.clickTimeThresh=1000;this.dragThreshMet=false;this.clickTimeout=null;this.startX=0;this.startY=0;this.regDragDrop=function(oDD,_56){if(!this.initialized){this.init();}if(!this.ids[_56]){this.ids[_56]={};}this.ids[_56][oDD.id]=oDD;};this._remove=function(oDD){for(var g in oDD.groups){if(g&&this.ids[g][oDD.id]){delete this.ids[g][oDD.id];}}delete this.handleIds[oDD.id];};this.regHandle=function(_58,_59){if(!this.handleIds[_58]){this.handleIds[_58]={};}this.handleIds[_58][_59]=_59;};this.isDragDrop=function(id){return (this.getDDById(id))?true:false;};this.getRelated=function(_60,_61){var _62=[];for(var i in _60.groups){for(j in this.ids[i]){var dd=this.ids[i][j];if(!this.isTypeOfDD(dd)){continue;}if(!_61||dd.isTarget){_62[_62.length]=dd;}}}return _62;};this.isLegalTarget=function(oDD,_64){var _65=this.getRelated(oDD);for(var i=0,len=_65.length;i<len;++i){if(_65[i].id==_64.id){return true;}}return false;};this.isTypeOfDD=function(oDD){return (oDD&&oDD.__ygDragDrop);};this.isHandle=function(_66,_67){return (this.handleIds[_66]&&this.handleIds[_66][_67]);};this.getDDById=function(id){for(var i in this.ids){if(this.ids[i][id]){return this.ids[i][id];}}return null;};this.handleMouseDown=function(e,oDD){this.currentTarget=YAHOO.util.Event.getTarget(e);this.dragCurrent=oDD;var el=oDD.getEl();this.startX=YAHOO.util.Event.getPageX(e);this.startY=YAHOO.util.Event.getPageY(e);this.deltaX=this.startX-el.offsetLeft;this.deltaY=this.startY-el.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var DDM=YAHOO.util.DDM;DDM.startDrag(DDM.startX,DDM.startY);},this.clickTimeThresh);};this.startDrag=function(x,y){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(x,y);this.dragCurrent.startDrag(x,y);}this.dragThreshMet=true;};this.handleMouseUp=function(e){if(!this.dragCurrent){return;}clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(e,true);}else{}this.stopDrag(e);this.stopEvent(e);};this.stopEvent=function(e){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(e);}if(this.preventDefault){YAHOO.util.Event.preventDefault(e);}};this.stopDrag=function(e){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(e);this.dragCurrent.endDrag(e);}this.dragCurrent.onMouseUp(e);}this.dragCurrent=null;this.dragOvers={};};this.handleMouseMove=function(e){if(!this.dragCurrent){return;}if(YAHOO.util.Event.isIE&&!e.button){this.stopEvent(e);return this.handleMouseUp(e);}if(!this.dragThreshMet){var _69=Math.abs(this.startX-YAHOO.util.Event.getPageX(e));var _70=Math.abs(this.startY-YAHOO.util.Event.getPageY(e));if(_69>this.clickPixelThresh||_70>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){this.dragCurrent.b4Drag(e);this.dragCurrent.onDrag(e);this.fireEvents(e,false);}this.stopEvent(e);};this.fireEvents=function(e,_71){var dc=this.dragCurrent;if(!dc||dc.isLocked()){return;}var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);var pt=new YAHOO.util.Point(x,y);var _73=[];var _74=[];var _75=[];var _76=[];var _77=[];for(var i in this.dragOvers){var ddo=this.dragOvers[i];if(!this.isTypeOfDD(ddo)){continue;}if(!this.isOverTarget(pt,ddo,this.mode)){_74.push(ddo);}_73[i]=true;delete this.dragOvers[i];}for(var _79 in dc.groups){if("string"!=typeof _79){continue;}for(i in this.ids[_79]){var oDD=this.ids[_79][i];if(!this.isTypeOfDD(oDD)){continue;}if(oDD.isTarget&&!oDD.isLocked()&&oDD!=dc){if(this.isOverTarget(pt,oDD,this.mode)){if(_71){_76.push(oDD);}else{if(!_73[oDD.id]){_77.push(oDD);}else{_75.push(oDD);}this.dragOvers[oDD.id]=oDD;}}}}}if(this.mode){if(_74.length){dc.b4DragOut(e,_74);dc.onDragOut(e,_74);}if(_77.length){dc.onDragEnter(e,_77);}if(_75.length){dc.b4DragOver(e,_75);dc.onDragOver(e,_75);}if(_76.length){dc.b4DragDrop(e,_76);dc.onDragDrop(e,_76);}}else{var len=0;for(i=0,len=_74.length;i<len;++i){dc.b4DragOut(e,_74[i].id);dc.onDragOut(e,_74[i].id);}for(i=0,len=_77.length;i<len;++i){dc.onDragEnter(e,_77[i].id);}for(i=0,len=_75.length;i<len;++i){dc.b4DragOver(e,_75[i].id);dc.onDragOver(e,_75[i].id);}for(i=0,len=_76.length;i<len;++i){dc.b4DragDrop(e,_76[i].id);dc.onDragDrop(e,_76[i].id);}}};this.getBestMatch=function(dds){var _82=null;var len=dds.length;if(len==1){_82=dds[0];}else{for(var i=0;i<len;++i){var dd=dds[i];if(dd.cursorIsOver){_82=dd;break;}else{if(!_82||_82.overlap.getArea()<dd.overlap.getArea()){_82=dd;}}}}return _82;};this.refreshCache=function(_83){for(sGroup in _83){if("string"!=typeof sGroup){continue;}for(i in this.ids[sGroup]){var oDD=this.ids[sGroup][i];if(this.isTypeOfDD(oDD)){var loc=this.getLocation(oDD);if(loc){this.locationCache[oDD.id]=loc;}else{delete this.locationCache[oDD.id];oDD.unreg();}}}}};this.verifyEl=function(el){try{if(el){var _85=el.offsetParent;if(_85){return true;}}}catch(e){}return false;};this.getLocation=function(oDD){if(!this.isTypeOfDD(oDD)){return null;}var el=oDD.getEl();if(!this.verifyEl(el)){return null;}var _86=YAHOO.util.Dom.getXY(el);x1=_86[0];x2=x1+el.offsetWidth;y1=_86[1];y2=y1+el.offsetHeight;var t=y1-oDD.padding[0];var r=x2+oDD.padding[1];var b=y2+oDD.padding[2];var l=x1-oDD.padding[3];return new YAHOO.util.Region(t,r,b,l);};this.isOverTarget=function(pt,_91,_92){var loc=this.locationCache[_91.id];if(!loc||!this.useCache){loc=this.getLocation(_91);this.locationCache[_91.id]=loc;}_91.cursorIsOver=loc.contains(pt);_91.overlap=null;if(_92){var el=this.dragCurrent.getDragEl();var x=pt.x-this.dragCurrent.deltaX;var y=pt.y-this.dragCurrent.deltaY;var _93=new YAHOO.util.Region(y,x+el.offsetWidth,y+el.offsetHeight,x);var _94=_93.intersect(loc);if(_94){_91.overlap=_94;return true;}else{return false;}}else{return _91.cursorIsOver;}};this._onUnload=function(e,me){this.unregAll();};this.unregAll=function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);for(i in this.elementCache){delete this.elementCache[i];}this.elementCache={};this.ids={};};this.elementCache={};this.getElWrapper=function(id){var _96=this.elementCache[id];if(!_96||!_96.el){_96=this.elementCache[id]=new this.ElementWrapper(document.getElementById(id));}return _96;};this.getElement=function(id){return document.getElementById(id);};this.getCss=function(id){var css=null;var el=document.getElementById(id);if(el){css=el.style;}return css;};this.ElementWrapper=function(el){this.el=el||null;this.id=this.el&&el.id;this.css=this.el&&el.style;};this.getPosX=function(el){return YAHOO.util.Dom.getX(el);};this.getPosY=function(el){return YAHOO.util.Dom.getY(el);};this.swapNode=function(n1,n2){if(n1.swapNode){n1.swapNode(n2);}else{var p=n2.parentNode;var s=n2.nextSibling;n1.parentNode.replaceChild(n2,n1);p.insertBefore(n1,s);}};this.getScroll=function(){var t,l;if(document.documentElement&&document.documentElement.scrollTop){t=document.documentElement.scrollTop;l=document.documentElement.scrollLeft;}else{if(document.body){t=document.body.scrollTop;l=document.body.scrollLeft;}}return {top:t,left:l};};this.getStyle=function(el,_101){return YAHOO.util.Dom.getStyle(el,_101);};this.getScrollTop=function(){return this.getScroll().top;};this.getScrollLeft=function(){return this.getScroll().left;};this.moveToEl=function(_102,_103){var _104=YAHOO.util.Dom.getXY(_103);YAHOO.util.Dom.setXY(_102,_104);};this.getClientHeight=function(){return (window.innerHeight)?window.innerHeight:(document.documentElement&&document.documentElement.clientHeight)?document.documentElement.clientHeight:document.body.offsetHeight;};this.getClientWidth=function(){return (window.innerWidth)?window.innerWidth:(document.documentElement&&document.documentElement.clientWidth)?document.documentElement.clientWidth:document.body.offsetWidth;};this.numericSort=function(a,b){return (a-b);};this._timeoutCount=0;this._addListeners=function(){if(YAHOO.util.Event&&document){this._onLoad();}else{if(this._timeoutCount>1000){}else{var DDM=YAHOO.util.DDM;setTimeout(function(){DDM._addListeners();},10);if(document&&document.body){this._timeoutCount+=1;}}}};this.handleWasClicked=function(node,id){if(this.isHandle(id,node.id)){return true;}else{var p=node.parentNode;while(p){if(this.isHandle(id,p.id)){return true;}else{p=p.parentNode;}}}return false;};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}YAHOO.util.DD=function(id,_107){if(id){this.init(id,_107);}};YAHOO.util.DD.prototype=new YAHOO.util.DragDrop();YAHOO.util.DD.prototype.scroll=true;YAHOO.util.DD.prototype.autoOffset=function(_108,_109){var el=this.getEl();var _110=YAHOO.util.Dom.getXY(el);var x=_108-_110[0];var y=_109-_110[1];this.setDelta(x,y);};YAHOO.util.DD.prototype.setDelta=function(_111,_112){this.deltaX=_111;this.deltaY=_112;};YAHOO.util.DD.prototype.setDragElPos=function(_113,_114){var el=this.getDragEl();this.alignElWithMouse(el,_113,_114);};YAHOO.util.DD.prototype.alignElWithMouse=function(el,_115,_116){var _117=this.getTargetCoord(_115,_116);var _118=[_117.x,_117.y];YAHOO.util.Dom.setXY(el,_118);this.cachePosition(_117.x,_117.y);this.autoScroll(_117.x,_117.y,el.offsetHeight,el.offsetWidth);};YAHOO.util.DD.prototype.cachePosition=function(_119,_120){if(_119){this.lastPageX=_119;this.lastPageY=_120;}else{var _121=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=_121[0];this.lastPageY=_121[1];}};YAHOO.util.DD.prototype.autoScroll=function(x,y,h,w){if(this.scroll){var _124=this.DDM.getClientHeight();var _125=this.DDM.getClientWidth();var st=this.DDM.getScrollTop();var sl=this.DDM.getScrollLeft();var bot=h+y;var _129=w+x;var _130=(_124+st-y-this.deltaY);var _131=(_125+sl-x-this.deltaX);var _132=40;var _133=(document.all)?80:30;if(bot>_124&&_130<_132){window.scrollTo(sl,st+_133);}if(y<st&&st>0&&y-st<_132){window.scrollTo(sl,st-_133);}if(_129>_125&&_131<_132){window.scrollTo(sl+_133,st);}if(x<sl&&sl>0&&x-sl<_132){window.scrollTo(sl-_133,st);}}};YAHOO.util.DD.prototype.getTargetCoord=function(_134,_135){var x=_134-this.deltaX;var y=_135-this.deltaY;if(this.constrainX){if(x<this.minX){x=this.minX;}if(x>this.maxX){x=this.maxX;}}if(this.constrainY){if(y<this.minY){y=this.minY;}if(y>this.maxY){y=this.maxY;}}x=this.getTick(x,this.xTicks);y=this.getTick(y,this.yTicks);return {x:x,y:y};};YAHOO.util.DD.prototype.b4MouseDown=function(e){this.autoOffset(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));};YAHOO.util.DD.prototype.b4Drag=function(e){this.setDragElPos(YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));};YAHOO.util.DDProxy=function(id,_136){if(id){this.forceCssPosition=false;this.init(id,_136);this.initFrame();}};YAHOO.util.DDProxy.prototype=new YAHOO.util.DD();YAHOO.util.DDProxy.frameDiv=null;YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.util.DDProxy.prototype.borderWidth=2;YAHOO.util.DDProxy.prototype.resizeFrame=true;YAHOO.util.DDProxy.prototype.centerFrame=false;YAHOO.util.DDProxy.createFrame=function(){var self=YAHOO.util.DDProxy;var body=document.body;if(!body||!body.firstChild){setTimeout(self.createFrame,50);return;}if(!self.frameDiv){self.frameDiv=document.createElement("div");self.frameDiv.id=self.dragElId;var s=self.frameDiv.style;s.position="absolute";s.visibility="hidden";s.cursor="move";s.border="2px solid #aaa";s.zIndex=999;body.insertBefore(self.frameDiv,body.firstChild);}};YAHOO.util.DDProxy.prototype.initFrame=function(){YAHOO.util.DDProxy.createFrame();this.setDragElId(YAHOO.util.DDProxy.dragElId);this.useAbsMath=true;};YAHOO.util.DDProxy.prototype.showFrame=function(_139,_140){var el=this.getEl();var s=this.getDragEl().style;if(this.resizeFrame){s.width=(parseInt(el.offsetWidth,10)-(2*this.borderWidth))+"px";s.height=(parseInt(el.offsetHeight,10)-(2*this.borderWidth))+"px";}if(this.centerFrame){this.setDelta(Math.round(parseInt(s.width,10)/2),Math.round(parseInt(s.width,10)/2));}this.setDragElPos(_139,_140);s.visibility="";};YAHOO.util.DDProxy.prototype.b4MouseDown=function(e){var x=YAHOO.util.Event.getPageX(e);var y=YAHOO.util.Event.getPageY(e);this.autoOffset(x,y);this.setDragElPos(x,y);};YAHOO.util.DDProxy.prototype.b4StartDrag=function(x,y){this.showFrame(x,y);};YAHOO.util.DDProxy.prototype.b4EndDrag=function(e){var s=this.getDragEl().style;s.visibility="hidden";};YAHOO.util.DDProxy.prototype.endDrag=function(e){var lel=this.getEl();var del=this.getDragEl();del.style.visibility="";lel.style.visibility="hidden";YAHOO.util.DDM.moveToEl(lel,del);del.style.visibility="hidden";lel.style.visibility="";};YAHOO.util.DDTarget=function(id,_143){if(id){this.initTarget(id,_143);}};YAHOO.util.DDTarget.prototype=new YAHOO.util.DragDrop();\r
59537 \r
59538 \r
59539 \r
59540 /* Copyright (c) 2006, Yahoo! Inc. All rights reserved. */ YAHOO.util.Anim=function(el,attributes,duration,method){if(el){this.init(el,attributes,duration,method);}};YAHOO.util.Anim.prototype={doMethod:function(attribute,start,end){return this.method(this.currentFrame,start,end-start,this.totalFrames);},setAttribute:function(attribute,val,unit){YAHOO.util.Dom.setStyle(this.getEl(),attribute,val+unit);},getAttribute:function(attribute){return parseFloat(YAHOO.util.Dom.getStyle(this.getEl(),attribute));},defaultUnit:'px',defaultUnits:{opacity:' '},init:function(el,attributes,duration,method){var isAnimated=false;var startTime=null;var endTime=null;var actualFrames=0;var defaultValues={};el=YAHOO.util.Dom.get(el);this.attributes=attributes||{};this.duration=duration||1;this.method=method||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.getEl=function(){return el;};this.setDefault=function(attribute,val){if(val.constructor!=Array&&(val=='auto'||isNaN(val))){switch(attribute){case'width':val=el.clientWidth||el.offsetWidth;break;case'height':val=el.clientHeight||el.offsetHeight;break;case'left':if(YAHOO.util.Dom.getStyle(el,'position')=='absolute'){val=el.offsetLeft;}else{val=0;}break;case'top':if(YAHOO.util.Dom.getStyle(el,'position')=='absolute'){val=el.offsetTop;}else{val=0;}break;default:val=0;}}defaultValues[attribute]=val;};this.getDefault=function(attribute){return defaultValues[attribute];};this.isAnimated=function(){return isAnimated;};this.getStartTime=function(){return startTime;};this.animate=function(){if(this.isAnimated()){return false;}this.onStart.fire();this._onStart.fire();this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.registerElement(this);var attributes=this.attributes;var el=this.getEl();var val;for(var attribute in attributes){val=this.getAttribute(attribute);this.setDefault(attribute,val);}isAnimated=true;actualFrames=0;startTime=new Date();};this.stop=function(){if(!this.isAnimated()){return false;}this.currentFrame=0;endTime=new Date();var data={time:endTime,duration:endTime-startTime,frames:actualFrames,fps:actualFrames/this.duration};isAnimated=false;actualFrames=0;this.onComplete.fire(data);};var onTween=function(){var start;var end=null;var val;var unit;var attributes=this['attributes'];for(var attribute in attributes){unit=attributes[attribute]['unit']||this.defaultUnits[attribute]||this.defaultUnit;if(typeof attributes[attribute]['from']!='undefined'){start=attributes[attribute]['from'];}else{start=this.getDefault(attribute);}if(typeof attributes[attribute]['to']!='undefined'){end=attributes[attribute]['to'];}else if(typeof attributes[attribute]['by']!='undefined'){if(start.constructor==Array){end=[];for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+attributes[attribute]['by'][i];}}else{end=start+attributes[attribute]['by'];}}if(end!==null&&typeof end!='undefined'){val=this.doMethod(attribute,start,end);if((attribute=='width'||attribute=='height'||attribute=='opacity')&&val<0){val=0;}this.setAttribute(attribute,val,unit);}}actualFrames+=1;};this._onStart=new YAHOO.util.CustomEvent('_onStart',this);this.onStart=new YAHOO.util.CustomEvent('start',this);this.onTween=new YAHOO.util.CustomEvent('tween',this);this._onTween=new YAHOO.util.CustomEvent('_tween',this);this.onComplete=new YAHOO.util.CustomEvent('complete',this);this._onTween.subscribe(onTween);}};YAHOO.util.AnimMgr=new function(){var thread=null;var queue=[];var tweenCount=0;this.fps=200;this.delay=1;this.registerElement=function(tween){if(tween.isAnimated()){return false;}queue[queue.length]=tween;tweenCount+=1;this.start();};this.start=function(){if(thread===null){thread=setInterval(this.run,this.delay);}};this.stop=function(tween){if(!tween){clearInterval(thread);for(var i=0,len=queue.length;i<len;++i){if(queue[i].isAnimated()){queue[i].stop();}}queue=[];thread=null;tweenCount=0;}else{tween.stop();tweenCount-=1;if(tweenCount<=0){this.stop();}}};this.run=function(){for(var i=0,len=queue.length;i<len;++i){var tween=queue[i];if(!tween||!tween.isAnimated()){continue;}if(tween.currentFrame<tween.totalFrames||tween.totalFrames===null){tween.currentFrame+=1;if(tween.useSeconds){correctFrame(tween);}tween.onTween.fire();tween._onTween.fire();}else{YAHOO.util.AnimMgr.stop(tween);}}};var correctFrame=function(tween){var frames=tween.totalFrames;var frame=tween.currentFrame;var expected=(tween.currentFrame*tween.duration*1000/tween.totalFrames);var elapsed=(new Date()-tween.getStartTime());var tweak=0;if(elapsed<tween.duration*1000){tweak=Math.round((elapsed/expected-1)*tween.currentFrame);}else{tweak=frames-(frame+1);}if(tweak>0&&isFinite(tweak)){if(tween.currentFrame+tweak>=frames){tweak=frames-(frame+1);}tween.currentFrame+=tweak;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(points,t){var n=points.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[points[i][0],points[i][1]];}for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}}return[tmp[0][0],tmp[0][1]];};};YAHOO.util.Easing=new function(){this.easeNone=function(t,b,c,d){return b+c*(t/=d);};this.easeIn=function(t,b,c,d){return b+c*((t/=d)*t*t);};this.easeOut=function(t,b,c,d){var ts=(t/=d)*t;var tc=ts*t;return b+c*(tc+-3*ts+3*t);};this.easeBoth=function(t,b,c,d){var ts=(t/=d)*t;var tc=ts*t;return b+c*(-2*tc+3*ts);};this.backIn=function(t,b,c,d){var ts=(t/=d)*t;var tc=ts*t;return b+c*(-3.4005*tc*ts+10.2*ts*ts+-6.2*tc+0.4*ts);};this.backOut=function(t,b,c,d){var ts=(t/=d)*t;var tc=ts*t;return b+c*(8.292*tc*ts+-21.88*ts*ts+22.08*tc+-12.69*ts+5.1975*t);};this.backBoth=function(t,b,c,d){var ts=(t/=d)*t;var tc=ts*t;return b+c*(0.402*tc*ts+-2.1525*ts*ts+-3.2*tc+8*ts+-2.05*t);};};YAHOO.util.Motion=function(el,attributes,duration,method){if(el){this.initMotion(el,attributes,duration,method);}};YAHOO.util.Motion.prototype=new YAHOO.util.Anim();YAHOO.util.Motion.prototype.defaultUnits.points='px';YAHOO.util.Motion.prototype.doMethod=function(attribute,start,end){var val=null;if(attribute=='points'){var translatedPoints=this.getTranslatedPoints();var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;if(translatedPoints){val=YAHOO.util.Bezier.getPosition(translatedPoints,t);}}else{val=this.method(this.currentFrame,start,end-start,this.totalFrames);}return val;};YAHOO.util.Motion.prototype.getAttribute=function(attribute){var val=null;if(attribute=='points'){val=[this.getAttribute('left'),this.getAttribute('top')];if(isNaN(val[0])){val[0]=0;}if(isNaN(val[1])){val[1]=0;}}else{val=parseFloat(YAHOO.util.Dom.getStyle(this.getEl(),attribute));}return val;};YAHOO.util.Motion.prototype.setAttribute=function(attribute,val,unit){if(attribute=='points'){YAHOO.util.Dom.setStyle(this.getEl(),'left',val[0]+unit);YAHOO.util.Dom.setStyle(this.getEl(),'top',val[1]+unit);}else{YAHOO.util.Dom.setStyle(this.getEl(),attribute,val+unit);}};YAHOO.util.Motion.prototype.initMotion=function(el,attributes,duration,method){YAHOO.util.Anim.call(this,el,attributes,duration,method);attributes=attributes||{};attributes.points=attributes.points||{};attributes.points.control=attributes.points.control||[];this.attributes=attributes;var start;var end=null;var translatedPoints=null;this.getTranslatedPoints=function(){return translatedPoints;};var translateValues=function(val,self){var pageXY=YAHOO.util.Dom.getXY(self.getEl());val=[val[0]-pageXY[0]+start[0],val[1]-pageXY[1]+start[1]];return val;};var onStart=function(){start=this.getAttribute('points');var attributes=this.attributes;var control=attributes['points']['control']||[];if(control.length>0&&control[0].constructor!=Array){control=[control];}if(YAHOO.util.Dom.getStyle(this.getEl(),'position')=='static'){YAHOO.util.Dom.setStyle(this.getEl(),'position','relative');}if(typeof attributes['points']['from']!='undefined'){YAHOO.util.Dom.setXY(this.getEl(),attributes['points']['from']);start=this.getAttribute('points');}else if((start[0]===0||start[1]===0)){YAHOO.util.Dom.setXY(this.getEl(),YAHOO.util.Dom.getXY(this.getEl()));start=this.getAttribute('points');}var i,len;if(typeof attributes['points']['to']!='undefined'){end=translateValues(attributes['points']['to'],this);for(i=0,len=control.length;i<len;++i){control[i]=translateValues(control[i],this);}}else if(typeof attributes['points']['by']!='undefined'){end=[start[0]+attributes['points']['by'][0],start[1]+attributes['points']['by'][1]];for(i=0,len=control.length;i<len;++i){control[i]=[start[0]+control[i][0],start[1]+control[i][1]];}}if(end){translatedPoints=[start];if(control.length>0){translatedPoints=translatedPoints.concat(control);}translatedPoints[translatedPoints.length]=end;}};this._onStart.subscribe(onStart);};YAHOO.util.Scroll=function(el,attributes,duration,method){if(el){YAHOO.util.Anim.call(this,el,attributes,duration,method);}};YAHOO.util.Scroll.prototype=new YAHOO.util.Anim();YAHOO.util.Scroll.prototype.defaultUnits.scroll=' ';YAHOO.util.Scroll.prototype.doMethod=function(attribute,start,end){var val=null;if(attribute=='scroll'){val=[this.method(this.currentFrame,start[0],end[0]-start[0],this.totalFrames),this.method(this.currentFrame,start[1],end[1]-start[1],this.totalFrames)];}else{val=this.method(this.currentFrame,start,end-start,this.totalFrames);}return val;};YAHOO.util.Scroll.prototype.getAttribute=function(attribute){var val=null;var el=this.getEl();if(attribute=='scroll'){val=[el.scrollLeft,el.scrollTop];}else{val=parseFloat(YAHOO.util.Dom.getStyle(el,attribute));}return val;};YAHOO.util.Scroll.prototype.setAttribute=function(attribute,val,unit){var el=this.getEl();if(attribute=='scroll'){el.scrollLeft=val[0];el.scrollTop=val[1];}else{YAHOO.util.Dom.setStyle(el,attribute,val+unit);}};\r
59541 \r
59542 \r
59543 \r
59544 /*\r
59545 Copyright (c) 2008 Yahoo! Inc. All rights reserved. - version 3.8.2.7\r
59546 */\r
59547 function YahooMapsAPIAjax(){var YMapConfig=new function(){this._list=["locale","imgPrefixURL","statURL","geoCoder","geoRSS","localSearch","trafficSearch","tileReg","tileSat","tileHyb","tileRegMono","tileSatMono","copySat","copyHyb","copyReg","copyText","unitMetersText","unitKmText","unitFtText","unitMilesText","tileSize","tileXY","radiusKm","milesKm","nauticalKm","milesDeg360","radPerDeg","maxZoom","mapsSite"];var getYear=function(){return new Date().getFullYear();};var regVer=4.3;var satVer=1.9;var _defaults={locale:"en_US",imgPrefixURL:"http://l.yimg.com/a/i/us/map/aj/",statURL:"http://geo.yahoo.com/p?",polyLine:"http://api.maps.yahoo.com/ajax/pl?",geoCoder:"http://api.maps.yahoo.com/ajax/geocode?",geoRSS:"http://api.maps.yahoo.com/ajax/georss?",localSearch:"http://api.maps.yahoo.com/ajax/locsrch?",trafficSearch:"http://api.maps.yahoo.com/ajax/trfsrch?",tileReg:["http://maps.yimg.com/hx/tl?v="+regVer+"&","http://maps1.yimg.com/hx/tl?v="+regVer+"&","http://maps2.yimg.com/hx/tl?v="+regVer+"&","http://maps3.yimg.com/hx/tl?v="+regVer+"&"],tileHyb:["http://maps.yimg.com/hx/tl?v="+regVer+"&t=h&","http://maps1.yimg.com/hx/tl?v="+regVer+"&t=h&","http://maps2.yimg.com/hx/tl?v="+regVer+"&t=h&","http://maps3.yimg.com/hx/tl?v="+regVer+"&t=h&"],tileRegMono:["http://maps.yimg.com/hx/ximg?v="+regVer+"&f=g&","http://maps1.yimg.com/hx/ximg?v="+regVer+"&f=g&","http://maps2.yimg.com/hx/ximg?v="+regVer+"&f=g&","http://maps3.yimg.com/hx/ximg?v="+regVer+"&f=g&"],tileSat:["http://maps.yimg.com/ae/ximg?v="+satVer+"&t=a&s=256&","http://maps1.yimg.com/ae/ximg?v="+satVer+"&t=a&s=256&","http://maps2.yimg.com/ae/ximg?v="+satVer+"&t=a&s=256&","http://maps3.yimg.com/ae/ximg?v="+satVer+"&t=a&s=256&"],tileSatMono:["http://maps.yimg.com/ae/ximg?v="+satVer+"&t=a&s=256&f=jg&","http://maps1.yimg.com/ae/ximg?v="+satVer+"&t=a&s=256&f=jg&","http://maps2.yimg.com/ae/ximg?v="+satVer+"&t=a&s=256&f=jg&","http://maps3.yimg.com/ae/ximg?v="+satVer+"&t=a&s=256&f=jg&"],copySat:{service:"http://api.maps.yahoo.com/ajax/copy?v=1.8&m=2"},copyReg:{service:"http://tile.maps.yahoo.com/copyright?t=png&color=black&aa=-1&"},copyHyb:{service:"http://tile.maps.yahoo.com/copyright?t=png&color=white&aa=-1&"},copyText:"&copy;"+getYear()+" Yahoo! Inc.",unitMetersText:"m",unitKmText:"km",unitFtText:"ft",unitMilesText:"mi",tileSize:256,tileXY:256,radiusKm:6366.707,milesKm:0.621371192,nauticalKm:0.539956803,milesDeg360:39999960,radPerDeg:(Math.PI/180),maxZoom:18,mapsSite:"http://maps.yahoo.com"};this.set=function(l,v){if(l&&v){this[l]=v;return ;}for(var i=0;i<this._list.length;i++){if(l[this._list[i]]){this[this._list[i]]=l[this._list[i]];}}};this.set(_defaults);this.marker1=this.imgPrefixURL+"markerf19824.png";this.marker2=this.imgPrefixURL+"star.gif";this.marker9=this.imgPrefixURL+"cpx.gif";this.ylogo=this.imgPrefixURL+"yahoo20091203.png";};YMapConfig.isValidLocale=function(l){var i={"de-DE":true,"DE":true,"es-ES":true,"ES":true,"fr-FR":true,"FR":true,"it-IT":true,"IT":true,"en-GB":true,"UK":true,"en-US":true,"US":true,"fr-CA":true,"en-CA":true,"en-IN":true,"IN":true};return(i[l]);};YMapConfig.setLocale=function(l){if(this.isValidLocale){this.locale=l;}};YMapConfig.setRegTile=function(l){this.tileReg=l;};YMapConfig.setSatTile=function(l){this.tileSat=l;};YMapConfig.setHybTile=function(l){this.tileHyb=l;};YMapConfig.setRegMonoTile=function(l){this.tileRegMono=l;};YMapConfig.setSatMonoTile=function(l){this.tileSatMono=l;};YMapConfig.get=function(l){var c={};for(var i=0;i<this._list.length;i++){c[this._list[i]]=this[this._list[i]];}if(l){return this[l];}return c;};YMapConfig.getProperties=function(){return this._list;};YMapConfig.getLocale=function(l){return this.locale;};var YGeoPoint=function(a,b){this.Lat=parseFloat(a)||0;this.Lon=parseFloat(b)||0;};YGeoPoint.prototype.greater=function(p){if(p&&p.valid){return(this.Lat>p.Lat&&this.Lon>p.Lon);}return false;};YGeoPoint.prototype.equal=function(p){if(p&&p.valid){return(this.Lat==p.Lat&&this.Lon==p.Lon);}return false;};YGeoPoint.prototype.valid=function(){return true;};YGeoPoint.prototype.getRad=function(){return new YGeoPoint(this.Lat*Math.PI/180,this.Lon*Math.PI/180);};YGeoPoint.prototype.distance=function(p,u){if(!p){return ;}var a=this.pointDiff(p);var _do=new Object();var p1r=this.getRad();var p2r=p.getRad();var _b=Math.acos(Math.cos(p1r.Lat)*Math.cos(p1r.Lon)*Math.cos(p2r.Lat)*Math.cos(p2r.Lon)+Math.cos(p1r.Lat)*Math.sin(p1r.Lon)*Math.cos(p2r.Lat)*Math.sin(p2r.Lon)+Math.sin(p1r.Lat)*Math.sin(p2r.Lat));_do.kilometers=YMapConfig.radiusKm*_b;_do.miles=YMapConfig.milesKm*_do.kilometers;_do.nautical=YMapConfig.nauticalKm*_do.kilometers;_do.degrees=Math.sqrt(a.Lat*a.Lat+a.Lon*a.Lon);if(u){_do.pixels=_do.kilometers/u.kilometers;}return _do;};YGeoPoint.prototype.pointDiff=function(p){if(!p){return ;}var _l=this.Lat-p.Lat;var _g=p.Lon-this.Lon;return(new YGeoPoint(_l,_g));};YGeoPoint.prototype.middle=function(p){var _a=(this.Lat+p.Lat)/2;var _b=(this.Lon+p.Lon)/2;return(new YGeoPoint(_a,_b));};YGeoPoint.prototype.setgeobox=function(_b){this.LatMax=(this.Lat>_b.Lat)?this.Lat:_b.Lat;this.LatMin=(this.Lat>_b.Lat)?_b.Lat:this.Lat;this.LonMax=(this.Lon>_b.Lon)?this.Lon:_b.Lon;this.LonMin=(this.Lon>_b.Lon)?_b.Lon:this.Lon;this.min=new YGeoPoint((this.Lat>_b.Lat)?_b.Lat:this.Lat,(this.Lon>_b.Lon)?_b.Lon:this.Lon);this.max=new YGeoPoint((this.Lat>_b.Lat)?this.Lat:_b.Lat,(this.Lon>_b.Lon)?this.Lon:_b.Lon);};var YCoordPoint=function(x,y){this.x=parseFloat(x)||0;this.y=parseFloat(y)||0;this._xpos="left";this._ypos="top";};YCoordPoint.prototype.equal=function(p){if(p&&p.valid){return(this.x==p.x&&this.y==p.y);}return false;};YCoordPoint.prototype.translate=function(_a,_b){this._xpos=_a;this._ypos=_b;};YCoordPoint.prototype.valid=function(){return true;};YCoordPoint.prototype.distance=function(p){var a=this.pointDiff(p);return Math.sqrt(a.x*a.x+a.y*a.y);};YCoordPoint.prototype.pointDiff=function(p){var _x=p.x-this.x;var _y=this.y-p.y;return(new YCoordPoint(_x,_y));};var YSize=function(w,h){this.width=parseInt(w)||0;this.height=parseInt(h)||0;};YSize.prototype.hasSmallerSide=function(_s){return(this.width<_s.width||this.height<_s.height);};YSize.prototype.valid=function(){return true;};YSize.prototype.area=function(_s){if(_s){return _s.width*_s.height;}return this.width*this.height;};var YImage=function(a,b,c,d){this.src=a||YMapConfig.marker1;this.size=b||new YSize(30,33);this.offsetSmartWindow=c||new YCoordPoint(-1,-1);this.offset=d||new YCoordPoint(0,0);this.yitype=true;};var TileXY=function(tx,ty,x,y){this.tx=tx||0;this.ty=ty||0;this.x=parseInt(x,10)||0;this.y=parseInt(y,10)||0;};var Annotation=function(t,d,l){this.title=t;this.description=d;this.link=l;this.valid=true;};var MapDistance=function(n,t){this.distance=n;this.type=t||"miles";this.valid=true;};function Projection(p_level,clat,tilew,tileh){this.init(p_level,clat,tilew,tileh);}Projection.prototype.init=function(p_level,clat,tilew,tileh){if(p_level<1){this.level_=1;}else{if(p_level>YMapConfig.maxZoom){this.level_=YMapConfig.maxZoom;}else{this.level_=p_level;}}this.tile_w_=tilew;this.tile_h_=tileh;this.status_=1;this.isok=isok;this.tile_width=tile_width;this.pixel_width=pixel_width;this.tile_height=tile_height;this.pixel_height=pixel_height;this.mpp=mpp;this.level=level;this.tile_size=tile_size;this.scaleKm=scaleKm;this.scaleMiles=scaleMiles;this.scaleFeet=scaleFeet;this.pix_to_tile=pix_to_tile;};function pix_to_tile(xp,yp){var _txy=new TileXY();var ypos=Math.abs(yp);_txy.tx=Math.floor(xp/this.tile_w_);_txy.x=xp%this.tile_w_;_txy.ty=Math.floor(ypos/this.tile_h_);_txy.y=ypos%this.tile_h_;if(yp<0){_txy.ty=-_txy.ty;var y=ypos%this.tile_h_;if(y&&y>0){_txy.ty--;_txy.y=this.tile_h_-_txy.y;}}return _txy;}function tile_width(){return this.ntiles_w_;}function pixel_width(){return this.ntiles_w_*this.tile_w_;}function tile_height(){return this.ntiles_h_;}function pixel_height(){return this.ntiles_h_*this.tile_h_;}function mpp(){return this.meters_per_pixel_;}function level(){return this.level_;}function tile_size(){return this.tile_w_;}function isok(){return this.status_==1;}function scaleKm(km,clat){return(this.scaleMeters(km*1000,clat));}function scaleMiles(miles,clat){return(this.scaleMeters(miles*1609.344,clat));}function scaleFeet(feet,clat){return(this.scaleMeters(feet/3.282,clat));}function sinh(x){ret=Math.exp(x);ret=(ret-1/ret)/2;return ret;}function MercatorProjection(p_level,tilew,tileh){tileh=tilew=YMapConfig.tileXY;this.init(p_level,0,tilew,tileh);this.circum_px=1<<(26-this.level_);this.ntiles_w_=this.circum_px/this.tile_w_;this.ntiles_h_=this.circum_px/this.tile_h_;this.meters_per_pixel_=YMapConfig.milesDeg360/this.circum_px;this.x_per_lon_=this.circum_px/360;this.ll_to_xy=ll_to_xy;this.xy_to_ll=xy_to_ll;this.mpp_m=mpp_m;this.scaleMeters=scaleMeters;this.ll_to_pxy=ll_to_pxy;this.pxy_to_ll=pxy_to_ll;}MercatorProjection.prototype=new Projection();MercatorProjection.prototype.constructor=MercatorProjection;MercatorProjection.superclass=Projection.prototype;MercatorProjection.prototype._returnCoordPoint=function(l,t,x,y){return new YCoordPoint(l+x,t+YMapConfig.tileXY-y);};function xy_to_ll(col,row,x,y){var x_pixel=col*this.tile_w_+x;var y_pixel=row*this.tile_h_+y;return(this.pxy_to_ll(x_pixel,y_pixel));}function ll_to_xy(_g){var _txy=new TileXY();var _cp=this.ll_to_pxy(_g.Lat,_g.Lon);if(this.isok()){_txy=this.pix_to_tile(_cp.x,_cp.y);}return _txy;}function ll_to_pxy(lat,lon){var _cp=new YCoordPoint();var alon=lon+180;var ltmp=Math.abs(alon)%360;if(alon<0){alon=360-ltmp;}if(alon>360){alon=ltmp;}var alat=Math.abs(lat);if(alat>90){alat=90;}alat*=YMapConfig.radPerDeg;_cp.x=parseInt(alon*this.x_per_lon_);ytemp=Math.log(Math.tan(alat)+1/Math.cos(alat))/Math.PI;_cp.y=parseInt(ytemp*this.pixel_height())/2;if(lat<0){_cp.y=-_cp.y;}this.status_=1;return _cp;}function pxy_to_ll(x_pixel,y_pixel){var gp=new YGeoPoint();this.status_=0;var alon=x_pixel/this.x_per_lon_;var ltmp=Math.abs(alon)%360;if(alon<0){alon=360-ltmp;}if(alon>360){alon=ltmp;}gp.Lon=alon-180;var alat=(y_pixel/(this.pixel_height()/2))*Math.PI;alat=Math.atan(sinh(alat))/YMapConfig.radPerDeg;if(alat<-90){alat=-90;}if(alat>90){alat=90;}gp.Lat=alat;this.status_=1;return gp;}function mpp_m(clat){return(this.meters_per_pixel_*Math.cos(clat*YMapConfig.radPerDeg));}function scaleMeters(meters,clat){return(parseInt(meters/this.mpp_m(clat)+0.5));}var YUtility=new function(){};var trackTr=null;var trackCache=[];var trackDl=3000;function trackDelay(o,t,c){return(function(){if(t=="pan_ob"){o.resetXY();}YUtility.tracker(o,t);clearTimeout(trackTr);trackTr=null;});}var markerTr=null;function checkMarkerAdded(o,t){return(function(){if(o){var mc=o.getMarkerCount();YUtility.tracker(o,t);clearTimeout(markerTr);markerTr=null;}});}YUtility.trackKey=function(o,z){var _c="_";return"xy"+o.tx+_c+o.ty+_c+z;};YUtility.tracker=function(o,operation){var cpt=o.getCenterLatLon();if(!cpt){return ;}var maptype=o.getCurrentMapType();var size=o.getContainerSize();var zoom=o.getZoomLevel();var dw=screen&&screen.width?screen.width:0;var dh=screen&&screen.height?screen.height:0;var width=size.width;var height=size.height;var _dsopkey="";var txy=o.getTXY();var key=YUtility.trackKey(txy,zoom);var cached=(trackCache[key])?1:0;if(operation=="zoom_ob"){_dsopkey="ds_zmtr";}if(operation=="start"){_dsopkey="ds_initr";}if(operation=="pan_ob"){_dsopkey="ds_pantr";}var _img=document.createElement("img");_img.width=_img.height="1px";_img.style.visibility="hidden";_img.id="ymaptrk"+operation;var _mvt="m";var _nvq="n";if(maptype==YAHOO_MAP_SAT){_mvt="s";_nvq="";}if(maptype==YAHOO_MAP_HYB){_mvt="h";}var nmkr=o.getMarkerCount();var _l="s=97199103";_l+="&oper="+operation;_l+="&z_lvl="+zoom;_l+="&mvt="+_mvt;_l+="&nloc="+nmkr;_l+="&appid="+YMAPPID;_l+="&cached="+cached;_l+="&swpx="+dw;_l+="&shpx="+dh;_l+="&wpx="+width;_l+="&hpx="+height;_l+="&lat="+cpt.Lat;_l+="&lon="+cpt.Lon;_l+="&i_api=1";_l+="&apptype=ajax";_l+="&locale="+YMapConfig.getLocale();_l+="&testid=M077";_l+="&i_trf=0";_l+="&d_s="+_nvq;_l+="&ds_i="+_nvq;_l+="&ds_maptr="+_nvq;if(_dsopkey){_l+="&"+_dsopkey+"="+_nvq;}_img.src=YMapConfig.statURL+_l;_img.onload=function(){YUtility.removeNode(_img);};YUtility.appendNode(o.dom,_img);if(operation=="zoom_ob"||operation=="pan"||operation=="start"){trackCache[key]=zoom;}};YUtility._xyKey=function(x,y,z,t){var _z=z||0;var _t=t||0;var _c="_";return"xy"+x+_c+y+_c+_z+_c+_t;};YUtility.getByID=function(id){return document.getElementById(id);};YUtility.getByTag=function(tag){return document.getElementsByTagName(tag);};YUtility.getRandomID=function(){var r="yid"+Math.random().toString();return(r.replace(/\./g,""));};YUtility.removeNode=function(_n){var o=(_n&&_n.dom)?_n.dom:_n;if(typeof o==="object"){try{YUtility.deleak(o);var n=o.parentNode.removeChild(o);n=null;}catch(x){}}};var _selectOnCache=[];YUtility.setDefaultSelectStyle=function(_c){if(YUtility.browser.id==0){_c.unselectable="on";if(_c.nodeName=="IMG"){_c.galleryImg="no";}}else{if(YUtility.browser.id==1){YUtility.setStyle(_c,"MozUserSelect","none");}}};var _nodeCache={};YUtility.cloneNode=function(_e,_p){var _c=null;var _k=_e+_p;var _n=_nodeCache[_k];if(!_n){_c=_nodeCache[_k]=YUtility.createNode(_e);}else{_c=_n.cloneNode(true);}YUtility.setDefaultSelectStyle(_c);return _c;};YUtility.createNode=function(_e,_id){var _c=document.createElement(_e);if(_id){_c.id=_id;}YUtility.setDefaultSelectStyle(_c);return _c;};YUtility.appendNode=function(_s,_n){if(!_n||!_s){return ;}var _c=(_n.dom)?_n.dom:_n;var _p=(_s.dom)?_s.dom:_s;if(!_c.parentNode){_p.appendChild(_c);return ;}if(_c.parentNode&&_c.parentNode.nodeType>3){_p.appendChild(_c);return ;}};YUtility.deleak=function(o){var a,i,l,n;a=(o)?o.attributes:null;if(a){l=a.length;for(i=0;i<l;i+=1){if(!a[i]){continue;}n=a[i].name;if(typeof o[n]==="function"){o[n]=null;}}}if(o){a=o.childNodes;}if(a){l=a.length;for(i=0;i<l;i+=1){YUtility.deleak(o.childNodes[i]);}}};YUtility.dynamicSNode=function(i,r){var shead=YUtility.getByTag("head");var snode=YUtility.getByID(i);if(snode){YUtility.removeNode(snode);}snode=YUtility.createNode("script");snode.type="text/javascript";snode.src=r;snode.id=i;YUtility.appendNode(shead[0],snode);};YUtility.getSize=function(_e){var d=YAHOO.util.Dom.getRegion(_e);var s=(d.getArea())?(new YSize((d.right-d.left),(d.bottom-d.top))):(new YSize(0,0));return s;};YUtility.setStyle=function(e,k,v){if(!e){return ;}var _e=(e.dom)?e.dom:e;if(typeof k=="object"){for(var t in k){if(typeof k[t]!="function"){_e.style[t]=k[t];}}}else{_e.style[k]=v;}};YUtility.browser=new function(){var _n={ie:0,moz:1,saf:2,opr:3,oth:9};var _o={win:0,mac:1,oth:3};var ua=navigator.userAgent.toLowerCase();this.os=3;if(/windows/.test(ua)){this.os=0;}else{if(/mac/.test(ua)){this.os=1;}}this.id=9;if(/opera/.test(ua)){this.id=3;}else{if(/safari/.test(ua)){this.id=2;}else{if(/gecko/.test(ua)){this.id=1;}else{if(typeof document.all!="undefined"){this.id=0;}}}}};YUtility.getInt=function(_n){var n=parseInt(_n);return(isNaN(n)?0:n);};YUtility.alphaLoad=function(_n,_t){var _clr=YMapConfig.marker9;var _typ=(_t)?"crop":"scale";var _p=(_n.dom)?_n.dom:_n;if(YUtility.browser.id){return ;}else{if(_p&&_p.nodeName=="IMG"){var _ie="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+_p.src+"', sizingMethod="+_typ+")";YUtility.setStyle(_p,"filter",_ie);_p.src=_clr;}}};YUtility.alphaImg2=function(_ni){if(YUtility.browser.id){return ;}return"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+_ni+"', sizingMethod=crop)";};YUtility.alphaImg=function(_ni,_t,_oi){if(YUtility.browser.id){return ;}var _typ=(_t)?"crop":"scale";if(_oi){_oi.src=YMapConfig.marker9;}return"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+_ni+"', sizingMethod="+_typ+")";};var _subscriber=function(fn,obj,cast){this.fn=fn;this.obj=obj||null;this.override=(cast);this._muted=false;};_subscriber.prototype.contains=function(fn,obj){return(this.fn==fn&&this.obj==obj);};var _captureEvent=function(_t,_s){this.type=_t;this.scope=_s;this.subscribers=[];};_captureEvent.prototype=new YAHOO.util.CustomEvent;_captureEvent.prototype.trigger=function(_e,_o){for(var i in this.subscribers){var _s=this.subscribers[i];if(_s){var scope=(_s.override)?_s.obj:this.scope;if(_s.fn&&!_s._muted){_s.fn.call(scope,_e,_o);}}}};_captureEvent.prototype.subscribe=function(fn,obj,cast){this.subscribers.push(new _subscriber(fn,obj,cast));};var _eventObject=function(_a,_b,_c){this._elem=_a;this._type=_b;this._func=_c;};var YEvent=new function(){this._cache=[];};YEvent.Capture=function(_a,_b,_c,_d,_p){if(!_a||!_b||!_c){return ;}var el=(_a.dom)?_a.dom:(_a.id?_a.id:_a);if(_a.Events&&_a.Events[_b]&&!_p){_a.Events[_b].subscribe(_c,(_d?_d:_a),true);}else{YAHOO.util.Event.addListener(el,(_p?_p:_b),_c,(_d?_d:_a),true);}if(_a.id){if(!this._cache[_a.id]){this._cache[_a.id]=[];}if(!this._cache[_a.id][_b]){this._cache[_a.id][_b]=[];}this._cache[_a.id][_b].push([(_p?_p:_b),_c]);}};YEvent.Remove=function(_a,_b,_c,_p){if(!_a||!_b||!_c){return ;}if(_a.Events&&_a.Events[_b]&&!_p){_a.Events[_b].unsubscribe(_c,_a);}else{var el=(_a.dom)?_a.dom:(_a.id?_a.id:_a);YAHOO.util.Event.removeListener(el,(_p?_p:_b),_c);}};YEvent.ClearAll=function(_a){if(!_a){return ;}var el=(_a.dom)?_a.dom:(_a.id?_a.id:_a);for(var etype in _a.Events){for(var i in this._cache[_a.id][etype]){YAHOO.util.Event.removeListener(el,this._cache[_a.id][etype][i][0],this._cache[_a.id][etype][i][1]);if(_a.Events[etype].unsubscribe){_a.Events[etype].unsubscribe(this._cache[_a.id][etype][i][1],_a);}delete this._cache[_a.id][etype][i];}delete _a.Events[etype];}};YEvent.isCaptureSet=function(_a,_t){for(var _e in _a.Events){if(_e==_t&&_a.Events[_e].subscribers.length){return true;}}return false;};YEvent.stopDefault=function(_e){if(!_e){return ;}YAHOO.util.Event.preventDefault(_e);};YEvent.stopPropag=function(_e){if(!_e){return ;}YAHOO.util.Event.stopPropagation(_e);};YEvent.stopEvent=function(_e){if(!_e){return ;}YAHOO.util.Event.stopEvent(_e);};var EventsList=new function(){};EventsList.unload="unload";EventsList.wheel=(YUtility.browser.id)?"DOMMouseScroll":"mousewheel";EventsList.resize="resize";EventsList.click="click";EventsList.dblclick="dblclick";EventsList.mover="mouseover";EventsList.mout="mouseout";EventsList.mdown="mousedown";EventsList.mup="mouseup";EventsList.mmv="mousemove";EventsList.kdown="keydown";EventsList.kup="keyup";EventsList.MouseClick="MouseClick";EventsList.MouseDoubleClick="MouseDoubleClick";EventsList.MouseOver="MouseOver";EventsList.MouseOut="MouseOut";EventsList.MouseDown="MouseDown";EventsList.MouseUp="MouseUp";EventsList.MouseMove="MouseMove";EventsList.KeyDown="KeyDown";EventsList.KeyUp="KeyUp";EventsList.MouseUp="MouseUp";EventsList.MouseDown="MouseDown";EventsList.polylineAdded="polylineAdded";EventsList.polylineRemoved="polylineRemoved";EventsList.endPanOB="endPanOB";EventsList.endMapDraw="endMapDraw";EventsList.zoomAdded="zoomAdded";EventsList.MapTypeControlAdded="MapTypeControlAdded";EventsList.miniAdded="miniAdded";EventsList.startPan="startPan";EventsList.endPan="endPan";EventsList.onPan="onPan";EventsList.startAutoPan="startAutoPan";EventsList.endAutoPan="endAutoPan";EventsList.changeZoom="changeZoom";EventsList.changeMapType="changeMapType";EventsList.openSmartWindow="openSmartWindow";EventsList.closeSmartWindow="closeSmartWindow";EventsList.closeSmartWindowClick="closeSmartWindowClick";EventsList.openExpanded="openExpanded";EventsList.closeExpanded="closeExpanded";EventsList.onStartGeoCode="onStartGeoCode";EventsList.onEndGeoCode="onEndGeoCode";EventsList.onStartGeoRSS="onStartGeoRSS";EventsList.onEndGeoRSS="onEndGeoRSS";EventsList.onEndLocalSearch="onEndLocalSearch";EventsList.onEndTrafficSearch="onEndTrafficSearch";var Overlay=function(_p,_n){this._defaults(_p,_n);};Overlay.prototype.setMapObject=function(_m){this._map=_m;};Overlay.prototype._defaults2=function(a,b){this.YGeoPoint=a;this.id="hello";this.dom=YUtility.createNode("div");};Overlay.prototype._defaults=function(a,b){if(!a){return ;}if(a.Lat){this.YGeoPoint=a;}else{if(a.x){this.YCoordPoint=a;}}this.id=(b&&b.id)?b.id:YUtility.getRandomID();if(b){this.dom=(b.dom)?b.dom:b;}else{this._container();}this._setBaseElStyle();this._setBaseEvents();this._setImage();this._setOffset();};Overlay.prototype._setImage=function(i){if(i){this._image=i;}else{this._image=new YImage();}};Overlay.prototype._destroy=function(u){if(!u){YEvent.ClearAll(this);}if(this.dom){YUtility.removeNode(this.dom);}this.dom=null;};Overlay.prototype._setBaseElStyle=function(_n){if(this.dom){YUtility.setStyle(this.dom,"position","absolute");}};Overlay.prototype._setBaseEvents=function(){this.Events={};this.Events.MouseClick=new _captureEvent(EventsList.MouseClick,this);this.Events.MouseOver=new _captureEvent(EventsList.MouseOver,this);this.Events.MouseMove=new _captureEvent(EventsList.MouseMove,this);this.Events.MouseOut=new _captureEvent(EventsList.MouseOut,this);this.Events.MouseDoubleClick=new _captureEvent(EventsList.MouseDoubleClick,this);this.Events.MouseUp=new _captureEvent(EventsList.MouseUp,this);this.Events.MouseDown=new _captureEvent(EventsList.MouseDown,this);YEvent.Capture(this,EventsList.MouseClick,this._MouseClickRun,null,EventsList.click);YEvent.Capture(this,EventsList.MouseMove,this._MouseMoveRun,null,EventsList.mmv);YEvent.Capture(this,EventsList.MouseOver,this._MouseOverRun,null,EventsList.mover);YEvent.Capture(this,EventsList.MouseOut,this._MouseOutRun,null,EventsList.mout);YEvent.Capture(this,EventsList.MouseDoubleClick,this._MouseDoubleClickRun,null,EventsList.dblclick);YEvent.Capture(this,EventsList.MouseUp,this._MouseUpRun,null,EventsList.mup);YEvent.Capture(this,EventsList.MouseDown,this._MouseDownRun,null,EventsList.mdown);};Overlay.prototype._setOffset=function(o){this.setOffset(new YCoordPoint(0,0));};Overlay.prototype._MouseClickRun=function(_e){this.Events.MouseClick.trigger(new _eO(this));};Overlay.prototype._MouseMoveRun=function(_e){this.Events.MouseMove.trigger(new _eO(this));};Overlay.prototype._MouseOverRun=function(_e){this.Events.MouseOver.trigger(new _eO(this));};Overlay.prototype._MouseOutRun=function(_e){this.Events.MouseOut.trigger(new _eO(this));};Overlay.prototype._MouseDoubleClickRun=function(_e){this.Events.MouseDoubleClick.trigger(new _eO(this));};Overlay.prototype._MouseUpRun=function(_e){this.Events.MouseUp.trigger(new _eO(this));};Overlay.prototype._MouseDownRun=function(_e){this.Events.MouseDown.trigger(new _eO(this));};Overlay.prototype.assignCoordPoint=function(){if(this.YCoordPoint){var _xC=this.YCoordPoint._xpos;var _yC=this.YCoordPoint._ypos;var _s={};_s[_xC]=this.YCoordPoint.x+"px";_s[_yC]=this.YCoordPoint.y+"px";YUtility.setStyle(this,_s);}};Overlay.prototype._updateX=function(n){var t=this._xy;this._xy=new YCoordPoint(t.x+n,t.y);if(this._map){this._xybr=new YCoordPoint(this._xy.x+parseFloat(this._map.subContainer.style.left),this._xy.y+parseFloat(this._map.subContainer.style.top));}};Overlay.prototype.setOffset=function(c){if(c&&c.valid){this.offset=c;this._image.size=new YSize(0,0);this._image.offset=new YCoordPoint(0,0);}};Overlay.prototype.setGeoXYPoint=function(){var _xybr=this._map._ll2xy(this.YGeoPoint);var offx=this.offset.x+this._image.offset.x;var offy=this.offset.y+this._image.offset.y;this._xybr=new YCoordPoint(_xybr.x+offx,(_xybr.y-this._image.size.height+offy));var _xy=this._map._ll2xy(this.YGeoPoint,1);this._xy=new YCoordPoint(_xy.x+offx,(_xy.y-this._image.size.height+offy));var absPos=this._xy.x+_xy._xscpos;var intPos=parseInt(absPos/this._map.MP.circum_px);var left_buffer=500;if(absPos>this._map.YSize.width){this._xy.x=this._xy.x-(intPos)*this._map.MP.circum_px;}else{if(absPos<0-left_buffer){this._xy.x=this._xy.x-(intPos-1)*this._map.MP.circum_px;}}if(!this._hidden){this.unhide();}};Overlay.prototype.calculatePosition=function(_z){this.MP=new MercatorProjection(_z);return this.MP.ll_to_xy(this.YGeoPoint);};Overlay.prototype.setYGeoPoint=function(_p){this.YGeoPoint=new YGeoPoint(_p.Lat,_p.Lon);this.setGeoXYPoint(this._z,this._posTbl);};Overlay.prototype.hide=function(_i){if(!_i){this._hidden=true;}this.dom.style.left=this.dom.style.top="-9500px";this.dom.style.zIndex=-9999;};Overlay.prototype.ishidden=function(){return this._hidden;};Overlay.prototype.unhide=function(){this._hidden=false;if(this._xy){this.dom.style.left=this._xy.x+"px";this.dom.style.top=this._xy.y+"px";this.dom.style.zIndex=2;}};Overlay.prototype.getCoordPoint=function(){var x=YUtility.getInt(this.dom.style.left);var y=YUtility.getInt(this.dom.style.top);return new YCoordPoint(x,y);};Overlay.prototype._container=function(_n){this.dom=YUtility.createNode("div");if(_n){YUtility.appendNode(this.dom,_n);}};Overlay.prototype._setpos=function(c){this.YCoordPoint=c;};var Control=function(){this.dom=null;};Control.prototype=new Overlay;var logoSearch=function(c,mapObj){this._map=mapObj;this._setpos(c);this._setContainer();this._defaults(this.YCoordPoint,this.dom);this.id="ylocalsearch";this._markers=[];};logoSearch.prototype=new Control;logoSearch.prototype._setContainer=function(){this._imgUrl={logo:YMapConfig.imgPrefixURL+"sl_ylogo.gif",close:YMapConfig.imgPrefixURL+"x.gif",mapic:YMapConfig.imgPrefixURL+"sl_ic.gif",copy:YMapConfig.imgPrefixURL+"sl_cp_06.gif",submit:YMapConfig.imgPrefixURL+"sl_bt_go.gif",bg:YMapConfig.imgPrefixURL+"sl_bk.png",bg50:YMapConfig.imgPrefixURL+"sl_bk_50.png",bg80:YMapConfig.imgPrefixURL+"sl_bk_80.png",marker:YMapConfig.imgPrefixURL+"sl_mrk2.gif"};this._attr={max:{width:{to:205},height:{to:165}},min:{width:{to:90},height:{to:40}},offset:{width:{to:90},height:{to:50}}};this._duration=0.7;this.dom=YUtility.createNode("div");var _mb="0px";var _mr="0px";if(!YUtility.browser.id){_mb="-4px";_mr="-1px";}var _sd={position:"absolute",marginBottom:_mb,marginRight:_mr,width:"90px",height:"40px"};YUtility.setStyle(this.dom,_sd);this.i2=YUtility.createNode("img");this.i2.src=this._imgUrl.bg50;YUtility.alphaLoad(this.i2);var i3=YUtility.createNode("img");i3.src=this._imgUrl.logo;var _ltp="14px";if(!YUtility.browser.id){_ltp="12px";}var _si3={position:"absolute",top:_ltp,left:"15px",cursor:"pointer"};YUtility.setStyle(i3,_si3);var i4=YUtility.createNode("img");i4.src=this._imgUrl.copy;var _crb="2px";if(!YUtility.browser.id){_crb="5px";}var _si4={position:"absolute",bottom:_crb,right:"1px"};YUtility.setStyle(i4,_si4);var dd=YUtility.createNode("div");var _str_dd='<img src="'+this._imgUrl.mapic+'"> Get driving directions, live traffic and more on the new Yahoo! Maps: <a href="'+YMapConfig.mapsSite+'">Go to Yahoo! Maps Now</a>.';dd.innerHTML=_str_dd;var _sdd={position:"absolute",fontSize:"11",fontFamily:"tahoma",top:"95px",left:"20px"};YUtility.setStyle(dd,_sdd);YUtility.appendNode(this.dom,this.i2);YUtility.appendNode(this.dom,i3);YUtility.appendNode(this.dom,i4);YUtility.appendNode(this.dom,dd);this._setform();};logoSearch.prototype.init=function(){};logoSearch.prototype._MouseDoubleClickRun=function(_e){YEvent.stopEvent(_e);};logoSearch.prototype._MouseOverRun=function(){if(this._bigon){return ;}this._animate(this.i2,this._attr.offset,0.1);this._animate(this.dom,this._attr.offset,0.1);this.i2.src=this._imgUrl.bg80;YUtility.alphaLoad(this.i2);};logoSearch.prototype._MouseOutRun=function(){if(this._bigon){return ;}this._animate(this.i2,this._attr.min,0.1);this._animate(this.dom,this._attr.min,0.1);this.i2.src=this._imgUrl.bg50;YUtility.alphaLoad(this.i2);};logoSearch.prototype._MouseClickRun=function(){if(this._bigon){return ;}YUtility.appendNode(this.dom,this._form);this._animate(this.i2,this._attr.max,this._duration,YAHOO.util.Easing.backOut);this._animate(this.dom,this._attr.max,this._duration,YAHOO.util.Easing.backOut);this.cx=YUtility.createNode("img");this.cx.src=this._imgUrl.close;var _scx={position:"absolute",cursor:"pointer",top:"12px",right:"4px"};YUtility.setStyle(this.cx,_scx);YEvent.Capture(this.cx,EventsList.MouseClick,this._closeit,this,"click");YUtility.appendNode(this.dom,this.cx);this._form.style.visibility="visible";this._bigon=true;};logoSearch.prototype._setform=function(){this._form=YUtility.createNode("form");var _sform={position:"absolute",width:"185px",verticalAlign:"bottom",top:"28px",left:"15px"};YUtility.setStyle(this._form,_sform);var _str={legend:"Find businesses and events here on Yahoo! Local",example:" e.g. restaurants, dentists",copy:'<img src="'+this._imgUrl.copy+'">',clear:"Clear"};var lp=YUtility.createNode("div");var _slp={width:"180px",height:"30px"};YUtility.setStyle(lp,_slp);var limg=YUtility.createNode("img");limg.src=this._imgUrl.marker;var _slimg={position:"absolute",top:"5px",left:"2px"};YUtility.setStyle(limg,_slimg);var lc=YUtility.createNode("div");var _slc={position:"absolute",top:"5px",left:"25px",fontSize:"11",fontFamily:"tahoma"};YUtility.setStyle(lc,_slc);lc.innerHTML=_str.legend;YUtility.appendNode(lp,limg);YUtility.appendNode(lp,lc);this._i=YUtility.createNode("input");this._i.type="text";this._i.value=_str.example;var _si={position:"absolute",top:"32px",left:"4px",width:"140px",color:"#999",fontSize:"11",fontFamily:"tahoma"};YUtility.setStyle(this._i,_si);var s=YUtility.createNode("input");s.type="image";s.src=this._imgUrl.submit;var _ss={position:"absolute",width:"28px",height:"21px",top:"30px",right:"10px"};YUtility.setStyle(s,_ss);this._nC=YUtility.createNode("span");this._nC.innerHTML=_str.clear;var _sn={position:"absolute",cursor:"pointer",fontSize:"9",fontFamily:"verdana",color:"#03f",top:"50px",left:"3px"};YUtility.setStyle(this._nC,_sn);this._n0=YUtility.createNode("span");this._n0.innerHTML="No results";var _sn0={visibility:"hidden",position:"absolute",fontSize:"9",fontFamily:"verdana",color:"red",top:"50px",left:"50px"};YUtility.setStyle(this._n0,_sn0);YUtility.appendNode(this._form,lp);YUtility.appendNode(this._form,s);YUtility.appendNode(this._form,this._i);YUtility.appendNode(this._form,this._nC);YUtility.appendNode(this._form,this._n0);var that=this;this._i.onclick=function(){if(that._i.value==_str.example){that._i.value="";}if(YUtility.browser.id){that._i.focus();}else{that._i.select();}};};logoSearch.prototype._closeit=function(){this._animate(this.i2,this._attr.min,this._duration,YAHOO.util.Easing.backOut);this._animate(this.dom,this._attr.min,this._duration,YAHOO.util.Easing.backOut);YUtility.removeNode(this.cx);this._form.style.visibility="hidden";this._i.blur();this._bigon=false;};logoSearch.prototype._animate=function(iob,attr,duration,aniType){var anim=new YAHOO.util.Anim(iob,attr,duration,aniType);anim.animate();};var Polyline=function(a,c,w,t){if(!a||!a.length){return ;}this._path=a;this._color=c||"navy";this._weight=parseInt(w)||6;this._alpha=t||"0.7";this._segs=new Array;this.cPath();this.polyline=true;this._defaults(this._path[0]);this.id=YUtility.getRandomID();};Polyline.prototype=new Overlay;Polyline.prototype._MouseClickRun=function(_e){if(this._map){var _tr=YAHOO.util.Event.getTarget(_e);var _xy=YAHOO.util.Event.getXY(_e);var _dp=YAHOO.util.Dom.getXY(this.dom);var _ep=new YCoordPoint(_xy[0]-_dp[0],_xy[1]-_dp[1]);var _ll=this._map._xy2ll(_ep);var dfc=_ll.distance(this._map.YGeoPoint,this._map.getUnitsPerPixel());if(dfc.pixels>this._map.YSize.width){return ;}var _ce=(new _eO(this._map,this._map.YGeoPoint,{previous:this._map.zoomLevelPrev,current:this._map.zoomLevel}));this._map.Events.MouseClick.trigger(_ce,_ll);}this.Events.MouseClick.trigger(new _eO(this));};Polyline.prototype.setGeoXYPoint=function(_z,_a,_t){if(_t==2){return ;}for(var s in this._segs){if(this._segs[s]._ygpto){var gp1=this._segs[s]._ygpfrom;var gp2=this._segs[s]._ygpto;var pa=this._map._ll2xy(gp1,1);var pb=this._map._ll2xy(gp2,1);if(!pa.x||!pa.y||!pb.x||!pb.y){return ;}this._setFromTo(this._segs[s],pa,pb);if(!this._segs[s]._added){this.dom.style.zIndex=1;YUtility.appendNode(this.dom,this._segs[s]);this._segs[s]._added=true;}}}};Polyline.prototype._setFromTo=function(o,a,b){if(!YUtility.browser.id){o.from=a.x+","+a.y;o.to=b.x+","+b.y;return ;}var minx=(a.x>b.x)?b.x:a.x;var miny=(a.y>b.y)?b.y:a.y;if(YUtility.browser.id&&this._svg){var mx=Math.abs(a.x-b.x)+this._weight*2;var my=Math.abs(a.y-b.y)+this._weight*2;mx=(mx>my)?mx:my;minx-=this._weight;miny-=this._weight;o.style.left=minx+"px";o.style.top=miny+"px";o.style.position="absolute";o.setAttribute("viewBox",minx+" "+miny+" "+mx+" "+mx);o.setAttribute("width",mx+"px");o.setAttribute("height",mx+"px");if(!o._yline){o._yline=document.createElementNS("http://www.w3.org/2000/svg","line");o._yline.setAttribute("stroke-linecap","round");o._yline.setAttribute("stroke-linejoin","round");o._yline.setAttribute("stroke-width",this._weight+"px");o._yline.setAttribute("stroke-opacity",this._alpha);o._yline.setAttribute("stroke",this._color);YUtility.appendNode(o,o._yline);}o._yline.setAttribute("x1",a.x);o._yline.setAttribute("y1",a.y);o._yline.setAttribute("x2",b.x);o._yline.setAttribute("y2",b.y);return ;}o.src=YMapConfig.polyLine+"x="+a.x+"|"+a.y+"&y="+b.x+"|"+b.y;if(YUtility.browser.id){YUtility.setStyle(o,"cursor","move");YUtility.setStyle(o,"visibility","hidden");o.onload=function(){YUtility.setStyle(o,"visibility","visible");};}o.style.position="absolute";o.style.left=minx;o.style.top=miny;};Polyline.prototype.cPath=function(){this._plength=this._path.length;for(var i=0;i<this._plength;i++){var s1=i;var s2=(i+1<this._plength)?i+1:i;if(s1==s2){continue;}if(this._path[i]&&this._path[i].valid){var v=this.cSeg(this._path[s2],this._path[s1]);if(v){this._segs.push(v);}}}};Polyline.prototype.cSeg=function(a,b){var _l=_s=[];if(!YUtility.browser.id){_l=document.createElement("v:line");_l.strokecolor=this._color;_l.strokeweight=this._weight+"px";_s=document.createElement("v:stroke");_s.opacity=this._alpha;_s.endcap="round";YUtility.appendNode(_l,_s);}if(YUtility.browser.id){_l=document.createElementNS("http://www.w3.org/2000/svg","svg");if(_l.x&&_l.y){YUtility.setStyle(_l,"cursor","move");this._svg=true;}else{_l=YUtility.createNode("img");}}_l._ygpfrom=a;_l._ygpto=b;return _l;};Polyline.prototype._destroy=function(){if(this.dom){for(var s in this._segs){this._segs[s]=null;}this.dom=null;}};var TypeControl=function(c,t){this._setpos(c);this._types=(t)?t:[YAHOO_MAP_REG,YAHOO_MAP_SAT,YAHOO_MAP_HYB];this._bobj=[];this.id=YUtility.getRandomID();this._defaults(this.YCoordPoint,this.dom);this._setobj();};TypeControl.prototype=new Control;TypeControl.prototype.setControl=function(t,c,s){if(typeof c=="object"){if(c.yitype){var _t;if(!YUtility.browser.id){_t=YUtility.createNode("div");_t._iefix=YUtility.createNode("img");_t.style.filter=YUtility.alphaImg2(c.src)+" alpha(opacity=80)";_t._iefix.src=c.src;}else{_t=YUtility.createNode("img");_t.src=c.src;_t.style.opacity=0.8;}_t.style.width=c.size.width+"px";_t.style.height=c.size.height+"px";c=_t;}YUtility.appendNode(this._bobj[t],c);}else{this._bobj[t].innerHTML=c;}this._bobj[t].YSize=s;this._bobj[t].YObj=c;};TypeControl.prototype._setbobj=function(t){var obj=YUtility.createNode("div");var f;if(t==YAHOO_MAP_REG){f=this._runMapRegTypeClick;}if(t==YAHOO_MAP_SAT){f=this._runMapSatTypeClick;}if(t==YAHOO_MAP_HYB){f=this._runMapHybTypeClick;}YEvent.Capture(obj,EventsList.MouseClick,f,this,EventsList.click);YEvent.Capture(obj,EventsList.MouseDoubleClick,this._runSilentDoubleClick,this,EventsList.dblclick);this._bobj[t]=obj;};TypeControl.prototype._setobj=function(){var _curs=(!YUtility.browser.id)?"hand":"pointer";var _ss={cursor:_curs,borderColor:"white",borderStyle:"solid",borderWidth:"0px",padding:"1px"};for(var i=0;i<this._types.length;i++){var t=this._types[i];this._setbobj(t);YUtility.appendNode(this.dom,this._bobj[t]);YUtility.setStyle(this._bobj[t],_ss);}};TypeControl.prototype.setVertical=function(){for(var i=0;i<this._types.length;i++){var t=this._types[i];YUtility.setStyle(this._bobj[t],"position","relative");YUtility.setStyle(this._bobj[t],"left","0px");}};TypeControl.prototype.setHorizontal=function(){var _x=0;var _p=2;for(var i=0;i<this._types.length;i++){var t=this._types[i];var n=(this._bobj[t].YSize)?this._bobj[t].YSize.width:0;YUtility.setStyle(this._bobj[t],"position","absolute");YUtility.setStyle(this._bobj[t],"top","0px");YUtility.setStyle(this._bobj[t],"left",_x+"px");_x+=n+_p;}};TypeControl.prototype._MouseClickRun=function(_e){YEvent.stopEvent(_e);var _tr=YAHOO.util.Event.getTarget(_e);if(_tr._pw){this._map.smoothPan(new YCoordPoint(200,0));}if(_tr._pn){this._map.smoothPan(new YCoordPoint(0,200));}if(_tr._pe){this._map.smoothPan(new YCoordPoint(-200,0));}if(_tr._ps){this._map.smoothPan(new YCoordPoint(0,-200));}var _tr=YAHOO.util.Event.getTarget(_e);};TypeControl.prototype._MouseDoubleClickRun=function(_e){YEvent.stopEvent(_e);};TypeControl.prototype._runMapRegTypeClick=function(_e){YEvent.stopEvent(_e);this._map.setMapType(YAHOO_MAP_REG);var _ce=new _eO(this);this._map.Events.changeMapType.trigger(_ce);};TypeControl.prototype._runMapHybTypeClick=function(_e){YEvent.stopEvent(_e);this._map.setMapType(YAHOO_MAP_HYB);var _ce=new _eO(this);this._map.Events.changeMapType.trigger(_ce);};TypeControl.prototype._runMapSatTypeClick=function(_e){YEvent.stopEvent(_e);this._map.setMapType(YAHOO_MAP_SAT);var _ce=new _eO(this);this._map.Events.changeMapType.trigger(_ce);};TypeControl.prototype._runSilentDoubleClick=function(_e){YEvent.stopEvent(_e);};var ZoomControl=function(z,c,s){this._zoom=this._i1prevz=z;this._short=s?s:false;this._setpos(c);if(this._short){this._setobjShort(z);}else{this._setobjLong(z);}this._defaults(this.YCoordPoint,this.dom);this.setMinMax();this.id=YUtility.getRandomID();};ZoomControl.prototype=new Control;ZoomControl.prototype._setobjLong=function(z){var _si1={position:"absolute",zIndex:1,top:"9px",width:"19px",height:"19px"};var _si2={position:"absolute",width:"19px",height:"74px"};this._i1=YUtility.createNode("img");this._i1._zkn=true;var _i2=YUtility.createNode("img");this._i1.src=YMapConfig.imgPrefixURL+"zkn16.png";_i2.src=YMapConfig.imgPrefixURL+"zbg16.png";YUtility.setStyle(this._i1,_si1);YUtility.setStyle(_i2,_si2);YUtility.alphaLoad(this._i1);YUtility.alphaLoad(_i2);this.dom=YUtility.createNode("div");var _s={width:"19px",height:"74px"};_s[this.YCoordPoint._xpos]=this.YCoordPoint.x;_s[this.YCoordPoint._ypos]=this.YCoordPoint.y;YUtility.setStyle(this.dom,_s);this._limYmin=9;this._limYmax=45;this._limYdlt=this._limYmax-this._limYmin;YUtility.appendNode(this.dom,this._i1);YUtility.appendNode(this.dom,_i2);};ZoomControl.prototype._setobjShort=function(z){var _si1={position:"absolute",top:"0px",left:"1px",width:"17px",height:"15px"};var _si2={position:"absolute",top:"17px",left:"0px",width:"19px",height:"16px"};var _i1=YUtility.createNode("img");_i1._zout=true;var _i2=YUtility.createNode("img");_i2._zin=true;_i1.src=YMapConfig.imgPrefixURL+"zco16.png";_i2.src=YMapConfig.imgPrefixURL+"zci16.png";YUtility.setStyle(_i1,_si1);YUtility.setStyle(_i2,_si2);YUtility.alphaLoad(_i1);YUtility.alphaLoad(_i2);this.dom=YUtility.createNode("div");var _s={width:"19px",height:"32px"};_s[this.YCoordPoint._xpos]=this.YCoordPoint.x;_s[this.YCoordPoint._ypos]=this.YCoordPoint.y;YUtility.setStyle(this.dom,_s);YUtility.appendNode(this.dom,_i1);YUtility.appendNode(this.dom,_i2);};ZoomControl.prototype.zoomIn=function(){this._knobZtoY(this._zoom-1);};ZoomControl.prototype.zoomOut=function(){this._knobZtoY(this._zoom+1);};ZoomControl.prototype._MouseDownRun=function(_e){YEvent.stopEvent(_e);YEvent.Capture(document,EventsList.MouseUp,this._knobMouseUp,this,EventsList.mup);YEvent.Capture(document,EventsList.MouseMove,this._knobMouseMove,this,EventsList.mmv);this._initY=YAHOO.util.Event.getPageY(_e);this._posY=this._getY()-this._limYmin;};ZoomControl.prototype._MouseMoveRun=function(_e){var y=YAHOO.util.Event.getPageY(_e);var ps=YAHOO.util.Dom.getXY(this.dom);var d=y-ps[1];var _tr=YAHOO.util.Event.getTarget(_e);var _curs=(!YUtility.browser.id)?"hand":"pointer";_tr.style.cursor="default";if(_tr._zkn){_tr.style.cursor=_curs;}if(d>=0&&d<=15||_tr._zout){_tr.style.cursor=_curs;}if(d>=59&&d<=74||_tr._zin){_tr.style.cursor=_curs;}};ZoomControl.prototype._knobMouseUp=function(_e){YEvent.Remove(document,EventsList.mup,this._knobMouseUp);YEvent.Remove(document,EventsList.mmv,this._knobMouseMove);this._knobYtoZ(this._getY());};ZoomControl.prototype._knobYtoZ=function(y){if(this._i1prevy==y){return ;}var r=this._getR();var z;var delta_zoom=Math.floor(Math.abs(y-this._i1prevy)/r);if(this._i1prevy>y){z=Math.ceil(this._i1prevz+delta_zoom);if(z==this._i1prevz){z+=1;}}if(this._i1prevy<y){z=Math.ceil(this._i1prevz-delta_zoom);if(z==this._i1prevz){z-=1;}if(!z){z=this._minz;}}z=this._validZoom(z);this._knobZtoY(z);};ZoomControl.prototype._validZoom=function(z){if(z<=this._minz){return this._minz;}if(z>=this._maxz){return this._maxz;}return z;};ZoomControl.prototype._changeZoomLevel=function(z){if(this._i1prevz!=z){if(this._map){this._map.setZoomLevel(z);this._zoom=z;}}};ZoomControl.prototype._knobZtoY=function(z){z=this._validZoom(z);if(!this._difz){return ;}this.updateZoomLevel(z);this._changeZoomLevel(z);this._i1prevy=this._getY();this._i1prevz=z;};ZoomControl.prototype.updateZoomLevel=function(z){var r=this._getR();var y=this._limYdlt-r*(z-this._minz);if(z>=this._maxz){y=0;}if(z<=this._minz){y=this._limYdlt;}this._adjY(y);this._zoom=z;};ZoomControl.prototype._knobMouseMove=function(_e){var relPos=(YAHOO.util.Event.getPageY(_e)-this._initY/1+this._posY);if(relPos<0){relPos=0;}if(relPos>this._limYdlt){relPos=this._limYdlt;}this._adjY(relPos);};ZoomControl.prototype.setMinMax=function(m,x){this._minz=m||1;this._maxz=x||17;this._difz=Math.abs(this._maxz-this._minz);this._knobZtoY(this._zoom);};ZoomControl.prototype._getR=function(){return this._limYdlt/(this._difz+1);};ZoomControl.prototype._adjY=function(y){if(y>this._limYdlt){y=this._limYdlt;}if(y<0){y=0;}if(this._i1){this._i1.style.top=(y+this._limYmin)+"px";}};ZoomControl.prototype._getY=function(){if(this._i1){return parseInt(this._i1.style.top);}return 0;};ZoomControl.prototype._adjustOpacity=function(i){var _v=i?15:75;this.dom.style.filter="alpha(opacity="+_v+")";this.dom.style.opacity=_v/100;};ZoomControl.prototype._MouseClickRun=function(_e){YEvent.stopEvent(_e);var y=YAHOO.util.Event.getPageY(_e);var ps=YAHOO.util.Dom.getXY(this.dom);var d=y-ps[1];var _tr=YAHOO.util.Event.getTarget(_e);if(d>=0&&d<=15||_tr._zout){this.zoomOut();}if(d>=59&&d<=74||_tr._zin){this.zoomIn();}var _tr=YAHOO.util.Event.getTarget(_e);};ZoomControl.prototype._MouseOverRun=function(_e){YEvent.stopEvent(_e);};ZoomControl.prototype._MouseOutRun=function(_e){YEvent.stopEvent(_e);};ZoomControl.prototype._MouseDoubleClickRun=function(_e){YEvent.stopEvent(_e);};var PanControl=function(c){this._setpos(c);this._setobj();this._defaults(this.YCoordPoint,this.dom);this.id=YUtility.getRandomID();};PanControl.prototype=new Control;PanControl.prototype._setobj=function(){var _curs=(!YUtility.browser.id)?"hand":"pointer";var _s1={position:"absolute",cursor:_curs,top:"16px",left:"0px",width:"19px",height:"19px"};var _s2={position:"absolute",cursor:_curs,top:"0px",left:"13px",width:"19px",height:"19px"};var _s3={position:"absolute",cursor:_curs,top:"16px",right:"0px",width:"19px",height:"19px"};var _s4={position:"absolute",cursor:_curs,bottom:"0px",left:"13px",width:"19px",height:"19px"};var _i1=YUtility.createNode("img");var _i2=YUtility.createNode("img");var _i3=YUtility.createNode("img");var _i4=YUtility.createNode("img");_i1._pw=true;_i2._pn=true;_i3._pe=true;_i4._ps=true;_i1.src=YMapConfig.imgPrefixURL+"pw16.png";_i2.src=YMapConfig.imgPrefixURL+"pn16.png";_i3.src=YMapConfig.imgPrefixURL+"pe16.png";_i4.src=YMapConfig.imgPrefixURL+"ps16.png";YUtility.setStyle(_i1,_s1);YUtility.setStyle(_i2,_s2);YUtility.setStyle(_i3,_s3);YUtility.setStyle(_i4,_s4);YUtility.alphaLoad(_i1);YUtility.alphaLoad(_i2);YUtility.alphaLoad(_i3);YUtility.alphaLoad(_i4);this.dom=YUtility.createNode("div");var _s={width:"44px",height:"50px"};_s[this.YCoordPoint._xpos]=this.YCoordPoint.x;_s[this.YCoordPoint._ypos]=this.YCoordPoint.y;YUtility.setStyle(this.dom,_s);YUtility.appendNode(this.dom,_i1);YUtility.appendNode(this.dom,_i2);YUtility.appendNode(this.dom,_i3);YUtility.appendNode(this.dom,_i4);};PanControl.prototype._MouseClickRun=function(_e){YEvent.stopEvent(_e);var _tr=YAHOO.util.Event.getTarget(_e);if(_tr._pw){this._map.smoothPan(new YCoordPoint(200,0));}if(_tr._pn){this._map.smoothPan(new YCoordPoint(0,200));}if(_tr._pe){this._map.smoothPan(new YCoordPoint(-200,0));}if(_tr._ps){this._map.smoothPan(new YCoordPoint(0,-200));}var _tr=YAHOO.util.Event.getTarget(_e);};PanControl.prototype._MouseDoubleClickRun=function(_e){YEvent.stopEvent(_e);};var MiniControl=function(z,c){this._setobj(z);this._setpos(c);this._defaults(this.YCoordPoint,this.dom);this.id=YUtility.getRandomID();};MiniControl.prototype=new Control;MiniControl.prototype._setobj=function(){};var Scale=function(z,u,r,c){this._zr=r;this._setunits(z,u);this._setobj(z);this._setpos(c);this._defaults(this.YCoordPoint,this.dom);this.id="yscale";};Scale.prototype=new Overlay();Scale.prototype._setunits=function(z,u){var _zsl_zsr=8;this._un=u||0;this._km=(this._zr[z-1])?this._zr[z-1][2][0]:0;this._mi=(this._zr[z-1])?this._zr[z-1][2][1]:0;this.pkm=YUtility.getInt(1/this._un.kilometers*this._km-_zsl_zsr)+"px";this.pmi=YUtility.getInt(1/this._un.miles*this._mi-_zsl_zsr)+"px";this.ukm=(this._km<0.5)?Math.ceil(this._km*1000)+YMapConfig.unitMetersText:this._km+YMapConfig.unitKmText;this.umi=(this._mi<0.5)?Math.ceil(this._mi*5280)+YMapConfig.unitFtText:this._mi+YMapConfig.unitMilesText;};Scale.prototype._setpos=function(c){var p=new YCoordPoint(1,12);p.translate("left","bottom");this.YCoordPoint=c?c:p;};Scale.prototype._setobj=function(z){var _cs={width:"4px",height:"8px"};var _zsl1=YUtility.createNode("img");_zsl1.src=YMapConfig.imgPrefixURL+"zsl.gif";YUtility.setStyle(_zsl1,_cs);var _zsl2=YUtility.createNode("img");_zsl2.src=YMapConfig.imgPrefixURL+"zsl.gif";YUtility.setStyle(_zsl2,_cs);var _zsr1=YUtility.createNode("img");_zsr1.src=YMapConfig.imgPrefixURL+"zsr.gif";YUtility.setStyle(_zsr1,_cs);var _zsr2=YUtility.createNode("img");_zsr2.src=YMapConfig.imgPrefixURL+"zsr.gif";YUtility.setStyle(_zsr2,_cs);this.dom=YUtility.createNode("div");this.dom.align="left";var _s={bottom:"12px",left:"1px",zIndex:3,font:"normal 9px verdana"};YUtility.setStyle(this.dom,_s);this._skmm=YUtility.createNode("img");this._skmm.src=YMapConfig.imgPrefixURL+"zs.gif?v=1";this._skmm.style.width=this.pkm;this._skmm.style.height="8px";this._skmm._kml=true;this._km=YUtility.createNode("span");this._km.innerHTML=this.ukm;this._km.style.position="relative";this._km.style.top="-1px";this._km._kmt=true;this._smim=YUtility.createNode("img");this._smim.src=YMapConfig.imgPrefixURL+"zs.gif?v=1";this._smim.style.width=this.pmi;this._smim.style.height="8px";this._smim._mil=true;this._mi=YUtility.createNode("span");this._mi.innerHTML=this.umi;this._mi.style.position="relative";this._mi.style.top="-1px";this._mi._mit=true;var _br=YUtility.cloneNode("br");YUtility.appendNode(this.dom,_zsl1);YUtility.appendNode(this.dom,this._skmm);YUtility.appendNode(this.dom,_zsr1);YUtility.appendNode(this.dom,this._km);YUtility.appendNode(this.dom,_br);YUtility.appendNode(this.dom,_zsl2);YUtility.appendNode(this.dom,this._smim);YUtility.appendNode(this.dom,_zsr2);YUtility.appendNode(this.dom,this._mi);};Scale.prototype.update=function(z,u,t){this._setunits(z,u);for(var i=0;i<this.dom.childNodes.length;i++){if(this.dom.childNodes[i]._kml){this.dom.childNodes[i].style.width=this.pkm;}if(this.dom.childNodes[i]._kmt){this.dom.childNodes[i].innerHTML=this.ukm;}if(this.dom.childNodes[i]._mil){this.dom.childNodes[i].style.width=this.pmi;}if(this.dom.childNodes[i]._mit){this.dom.childNodes[i].innerHTML=this.umi;}if(t==YAHOO_MAP_SAT||t==YAHOO_MAP_HYB){this.dom.childNodes[i].style.color="#fff";}else{this.dom.childNodes[i].style.color="#000";}}};var CustomOverlay=function(a,b){this._defaults(a,b);};CustomOverlay.prototype=new Overlay();CustomOverlay.prototype.constructor=CustomOverlay;CustomOverlay.prototype.superclass=Overlay.prototype;var CM=function(a){if(!a){return ;}var im,id;for(var i=1;i<arguments.length;i++){if(typeof arguments[i]=="object"){im=arguments[i];}if(typeof arguments[i]=="string"){id=arguments[i];}}this.id=id||"ymarker"+YUtility.getRandomID();this._hidden=false;this._disableAutoContain=false;this._autoExpand=false;var my=YUtility.createNode("img");my.src=YMapConfig.marker1;my.src=im.src;my.style.zIndex=5;my.id=this.id;this._setCustomEvents();this._defaults(a,my);};CM.prototype=new Overlay;CM.prototype.constructor=CustomOverlay;CM.prototype.superclass=Overlay.prototype;CM.prototype._setCustomEvents=function(){this.Events.openSmartWindow=new _captureEvent(EventsList.openSmartWindow,this);this.Events.closeSmartWindow=new _captureEvent(EventsList.closeSmartWindow,this);this.Events.openExpanded=new _captureEvent(EventsList.openExpanded,this);this.Events.closeExpanded=new _captureEvent(EventsList.closeExpanded,this);YEvent.Capture(this,EventsList.openSmartWindow,this._openSmartWindowRun);YEvent.Capture(this,EventsList.closeSmartWindow,this._closeSmartWindowRun);YEvent.Capture(this,EventsList.openExpanded,this._openExpandedRun);YEvent.Capture(this,EventsList.closeExpanded,this._closeExpandedRun);};var Marker=function(gp){var im,id;if(!gp){return ;}for(var i=1;i<arguments.length;i++){if(typeof arguments[i]=="object"){im=arguments[i];}if(typeof arguments[i]=="string"){id=arguments[i];}}this.id=id||"ymarker"+YUtility.getRandomID();this.YGeoPoint=new YGeoPoint(gp.Lat,gp.Lon);this._hidden=false;this._disableAutoContain=false;this._autoExpand=false;if(im){this._image=im;}else{this._image=new YImage();}this._createMarkerDom();this._defineEvents();this._registerEvents();if(typeof (gp)=="string"){this.Address=gp;}};Marker.prototype._destroy=function(u){if(this.aedom){YUtility.removeNode(this.aedom);}if(this.swdom){YUtility.removeNode(this.swdom.dom);this.swdom.dom=null;}if(this.imgdom){YUtility.removeNode(this.imgdom);}this.aedom=null;this.swdom=null;this.imgdom=null;if(this.dom){YUtility.removeNode(this.dom);}this.dom=null;};Marker.prototype.setMapObject=function(_m){this._map=_m;if(this.Address){this._map._startGeoCode(this.Address,12,this.id);}};Marker.prototype.setYGeoPoint=function(_p){this.YGeoPoint=new YGeoPoint(_p.Lat,_p.Lon);this.setGeoXYPoint();};Marker.prototype.setAnnotation=function(o){this._annotate=o;};Marker.prototype.getAnnotation=function(){return this._annotate;};Marker.prototype._updateX=function(n){var t=this._xy;this._xy=new YCoordPoint(t.x+n,t.y);if(this._map){this._xybr=new YCoordPoint(this._xy.x+parseFloat(this._map.subContainer.style.left),this._xy.y+parseFloat(this._map.subContainer.style.top));}};Marker.prototype.setGeoXYPoint=function(){var _xybr=this._map._ll2xy(this.YGeoPoint);this._xybr=new YCoordPoint(_xybr.x+this._image.offset.x,(_xybr.y-this._image.size.height+this._image.offset.y));var _xy=this._map._ll2xy(this.YGeoPoint,1);this._xy=new YCoordPoint(_xy.x+this._image.offset.x,(_xy.y-this._image.size.height+this._image.offset.y));if(this._map&&this._map.MP){var absPos=this._xy.x+_xy._xscpos;var intPos=parseInt(absPos/this._map.MP.circum_px);if(absPos>this._map.YSize.width){this._xy.x=this._xy.x-(intPos)*this._map.MP.circum_px;}else{if(absPos<0){this._xy.x=this._xy.x-(intPos-1)*this._map.MP.circum_px;}}}if(!this._hidden){this.unhide();}};Marker.prototype.hide=function(_i){if(!_i){this._hidden=true;}this.dom.style.left=this.dom.style.top="-9500px";this.dom.style.zIndex=-9999;};Marker.prototype.ishidden=function(){return this._hidden;};Marker.prototype.unhide=function(){this._hidden=false;if(this._xy){this.dom.style.left=this._xy.x+"px";this.dom.style.top=this._xy.y+"px";if(this.swdom){this.dom.style.zIndex=888;}else{this.dom.style.zIndex=2;}}};Marker.prototype._defineEvents=function(){this.Events={};this.Events.openSmartWindow=new _captureEvent(EventsList.openSmartWindow,this);this.Events.closeSmartWindow=new _captureEvent(EventsList.closeSmartWindow,this);this.Events.closeSmartWindowClick=new _captureEvent(EventsList.closeSmartWindowClick,this);this.Events.openExpanded=new _captureEvent(EventsList.openExpanded,this);this.Events.closeExpanded=new _captureEvent(EventsList.closeExpanded,this);this.Events.MouseClick=new _captureEvent(EventsList.MouseClick,this);this.Events.MouseOver=new _captureEvent(EventsList.MouseOver,this);this.Events.MouseOut=new _captureEvent(EventsList.MouseOut,this);this.Events.MouseDoubleClick=new _captureEvent(EventsList.MouseDoubleClick,this);this.Events.MouseUp=new _captureEvent(EventsList.MouseUp,this);};Marker.prototype._registerEvents=function(){YEvent.Capture(this,EventsList.openSmartWindow,this._openSmartWindowRun);YEvent.Capture(this,EventsList.openExpanded,this._openExpandedRun);YEvent.Capture(this,EventsList.closeExpanded,this._closeExpandedRun);YEvent.Capture(this,EventsList.MouseClick,this._MouseClickRun,null,EventsList.click);YEvent.Capture(this,EventsList.MouseOver,this._MouseOverRun,null,EventsList.mover);YEvent.Capture(this,EventsList.MouseOut,this._MouseOutRun,null,EventsList.mout);YEvent.Capture(this,EventsList.MouseDoubleClick,this._MouseDoubleClickRun,null,EventsList.dblclick);YEvent.Capture(this,EventsList.MouseUp,this._MouseUpRun,null,EventsList.mup);};Marker.prototype._MouseClickRun=function(_e){if(YUtility.browser.id!=2){YEvent.stopEvent(_e);}var _ce=new _eO(this);this.Events.MouseClick.trigger(_ce);};Marker.prototype._MouseOverRun=function(_e){YEvent.stopEvent(_e);if(this._autoExpand){if(_expCache._exmid){if(this.id!=_expCache._exmid){_expCache._destroy();}}if(!this.swdom){_expCache.dom.style.zIndex=4;_expCache.setContent(this._expContent);_expCache.setColor(this.swColor);_expCache._exmid=this.id;YUtility.appendNode(this.dom,_expCache.dom);var _ce=(new _eO(this));this.Events.openExpanded.trigger(_ce);}}if(this.swdom){this.dom.style.zIndex=888;}else{this.dom.style.zIndex=3;}var _ce=new _eO(this);this.Events.MouseOver.trigger(_ce);};Marker.prototype._MouseOutRun=function(_e){YEvent.stopEvent(_e);var _ce=new _eO(this);this.Events.MouseOut.trigger(_ce);if(this.swdom){this.dom.style.zIndex=888;}else{if(!this._autoExpand&&!this.swdom){this.dom.style.zIndex=2;}}};Marker.prototype._MouseDoubleClickRun=function(_e){YEvent.stopEvent(_e);var _ce=new _eO(this);this.Events.MouseDoubleClick.trigger(_ce);};Marker.prototype._MouseUpRun=function(_e){var _ce=new _eO(this);this.Events.MouseUp.trigger(_ce);};Marker.prototype._openExpandedRun=function(e){if(!this.swdom){this.dom.style.zIndex=3;_expCache.dom.style.zIndex=4;}};Marker.prototype._closeExpandedRun=function(e){if(this.swdom){this.dom.style.zIndex=888;}else{this.dom.style.zIndex=2;}};Marker.prototype._openSmartWindowRun=function(e){for(var m in this._map._mTb){if(m!=e.thisObj.id){if(this._map._mTb[m].swdom){this._map._mTb[m].closeSmartWindow();}}}};Marker.prototype._closeSmartWindowRun=function(e){if(_nodeCache.divsw){delete _nodeCache.divsw;}};Marker.prototype.disableAutoContain=function(){this._disableAutoContain=true;};Marker.prototype.enableAutoContain=function(){this._disableAutoContain=false;};Marker.prototype.changeImage=function(_o){if(YUtility.browser.id==0){this.imgdom.style.filter=YUtility.alphaImg(_o.src);}else{this.imgdom.src=_o.src;}if(_o.size.width){this.imgdom.style.width=_o.size.width;}if(_o.size.height){this.imgdom.style.height=_o.size.height;}};Marker.prototype._createMarkerDom=function(){this.dom=YUtility.createNode("div");this.dom.id=this.id;this.dom.align="left";var _s={position:"absolute",zIndex:2,width:this._image.size.width+"px",height:this._image.size.height+"px"};YUtility.setStyle(this.dom,_s);this.imgdom=YUtility.createNode("img");this.imgdom.id="ymi"+this.id;YUtility.setStyle(this.imgdom,_s);if(!YUtility.browser.id){YUtility.setStyle(this.imgdom,"filter",YUtility.alphaImg(this._image.src,"image",this.imgdom));}else{this.imgdom.src=this._image.src;}YUtility.appendNode(this.dom,this.imgdom);};Marker.prototype.getElement=function(){return this.dom;};Marker.prototype.getCoordPoint=function(){var x=YUtility.getInt(this.dom.style.left);var y=YUtility.getInt(this.dom.style.top);return new YCoordPoint(x,y);};Marker.prototype.setSmartWindowColor=function(_c){var _ac={orange:"org",f19824:"org",blue:"blu",lightblue:"lbl","71a4c1":"lbl",violet:"blv",brown:"brn",green:"grn",black:"blk",grey:"gry",lightgreen:"lgn",a7cc25:"lgn",maroon:"mar",ocre:"ocr",purple:"ple"};this.swColor=_ac["org"];if(_ac[_c]){this.swColor=_ac[_c];}};Marker.prototype.reLabel=function(nl){if(this._domLabel){this._domLabel.innerHTML=nl;}};Marker.prototype.closeSmartWindow=function(_e){if(this.swdom){this.swdom._destroy();this.swdom.dom=null;this._marker=null;this.swdom=null;var _ce=new _eO(this);this.Events.closeSmartWindow.trigger(_ce);}};var _expCache=null;Marker.prototype.openAutoExpand=function(_c){if(this._autoExpand){if(!this.swdom){this.dom.style.zIndex=3;_expCache.dom.style.zIndex=4;_expCache.setContent(this._expContent);_expCache.setColor(this.swColor);_expCache._exmid=this.id;YUtility.appendNode(this.dom,_expCache.dom);var _ce=new _eO(this);this.Events.openExpanded.trigger(_ce);}}};Marker.prototype.closeAutoExpand=function(_c){if(this._autoExpand){_expCache._destroy();}};Marker.prototype.addAutoExpand=function(_c){this._autoExpand=true;this._expContent=_c;if(!_expCache){_expCache=new SmartWindow(this,_c,this._image,this.swColor,"swae"+this.id,true);_expCache.dom.style.width="160px";if(!YUtility.browser.id){_expCache.dom.style.cursor="hand";}if(YUtility.browser.id){_expCache.dom.style.cursor="pointer";}}};Marker.prototype.openSmartWindow=function(_c){if(_expCache){if(_expCache._exmid){_expCache._destroy();}}if(this.swdom){return ;}this.swdom=new SmartWindow(this,_c,this._image,this.swColor,this.id);YUtility.appendNode(this.dom,this.swdom.dom);this.dom.style.zIndex=888;this.swdom.dom.style.zIndex=888;if(!this._map){return ;}this.containSmartWindow();YEvent.Capture(this.swdom.dom._swclid,EventsList.MouseClick,this._runXcloser,this,"click");var _ce=new _eO(this);this.Events.openSmartWindow.trigger(_ce);};Marker.prototype.updateSmartWindow=function(_c){if(this.swdom&&this.swdom.setContent){this.swdom.setContent(_c);YEvent.Capture(this.swdom.dom._swclid,EventsList.MouseClick,this._runXcloser,this,"click");}};Marker.prototype._runXcloser=function(_e){YEvent.stopEvent(_e);this.closeSmartWindow();var _ce=new _eO(this);this.Events.closeSmartWindowClick.trigger(_ce);};var SmartWindow=function(_mrk,_c,_io,_clr,id,_ae){this._marker=_mrk;this._aeon=(_ae)?true:false;this._swid="ysmw"+((id)?id:"");if(this._aeon){this._swid="ysmwexp";}this._clids="clw"+this._swid;this._createNode();this.setColor(_clr);this.setContent(_c);this.setPosition(_io);this.id=this._swid;this._defineEvents();this._registerEvents();};SmartWindow.prototype._defineEvents=function(){this.Events={};this.Events.MouseClick=new _captureEvent(EventsList.MouseClick,this);this.Events.MouseOver=new _captureEvent(EventsList.MouseOver,this);this.Events.MouseOut=new _captureEvent(EventsList.MouseOut,this);this.Events.MouseDoubleClick=new _captureEvent(EventsList.MouseDoubleClick,this);this.Events.MouseUp=new _captureEvent(EventsList.MouseUp,this);this.Events.MouseDown=new _captureEvent(EventsList.MouseDown,this);};SmartWindow.prototype._registerEvents=function(){YEvent.Capture(this,EventsList.MouseClick,this._MouseClickRun,null,EventsList.click);YEvent.Capture(this,EventsList.MouseOver,this._MouseOverRun,null,EventsList.mover);YEvent.Capture(this,EventsList.MouseOut,this._MouseOutRun,null,EventsList.mout);YEvent.Capture(this,EventsList.MouseDoubleClick,this._MouseDoubleClickRun,null,EventsList.dblclick);YEvent.Capture(this,EventsList.MouseUp,this._MouseUpRun,null,EventsList.mup);YEvent.Capture(this,EventsList.MouseDown,this._MouseDownRun,null,EventsList.mdown);};SmartWindow.prototype._MouseClickRun=function(_e){if(YUtility.browser.id!=2){YEvent.stopPropag(_e);}if(this._aeon){var marker=this._marker._map._mTb[this._exmid];if(marker){var _ce=new _eO(marker);marker.Events.MouseClick.trigger(_ce);}}};SmartWindow.prototype._MouseOverRun=function(_e){YEvent.stopEvent(_e);};SmartWindow.prototype._MouseOutRun=function(_e){YEvent.stopEvent(_e);if(_expCache){_expCache._destroy();}};SmartWindow.prototype._MouseDoubleClickRun=function(_e){YEvent.stopEvent(_e);};SmartWindow.prototype._MouseUpRun=function(_e){};SmartWindow.prototype._MouseDownRun=function(_e){YEvent.stopEvent(_e);};SmartWindow.prototype._createNode=function(){this.dom=YUtility.createNode("div");this.dom.id=this._swid;this.dom._swclid=this._clids;};SmartWindow.prototype._destroy=function(_w){if(this.dom.parentNode&&this.dom.parentNode.style){this.dom.parentNode.style.zIndex=2;}if(this._exmid){if(this._marker._map){var marker=this._marker._map._mTb[this._exmid];var _ce=new _eO(marker);if(marker){marker.Events.closeExpanded.trigger(_ce);}this._exmid=null;}}else{}if(!this._aeon){YEvent.ClearAll(this);}YUtility.removeNode(this.dom);};SmartWindow.prototype._hide=function(){YUtility.setStyle(this.dom,"zIndex",-10);};SmartWindow.prototype._show=function(){YUtility.setStyle(this.dom,"zIndex",99);};SmartWindow.prototype.setPosition=function(o){if(!o){return ;}var _x=o.offsetSmartWindow.x+"px";var _y=o.offsetSmartWindow.y+"px";var _so={"position":"absolute","left":_x,"bottom":_y};YUtility.setStyle(this.dom,_so);};SmartWindow.prototype._combine=function(){this.dom.innerHTML=this._sc+this._data+this._ec;};SmartWindow.prototype.setContent=function(_c){if(!_c){return ;}this._data=_c;if(_c.nodeValue){this._data=_c.nodeValue;}this._combine();};SmartWindow.prototype.setColor=function(_clr){var w=new _sw(_clr,this._clids,this._aeon);this._sc=w._sc;this._ec=w._ec;this._combine();};var _sw=function(_clr,_clids,ae){var _s,_sw,_ne,_se,_e,_nw,_n,_w;var _swi=YMapConfig.imgPrefixURL;var _col=(_clr)?_clr:"org";var _cls=_swi+"x.gif";if(!YUtility.browser.id){_s="filter:"+YUtility.alphaImg(_swi+_col+"_s.png");_sw="filter:"+YUtility.alphaImg(_swi+_col+"_sw.png");_ne="filter:"+YUtility.alphaImg(_swi+_col+"_ne.png");_se="filter:"+YUtility.alphaImg(_swi+_col+"_se.png");_e="filter:"+YUtility.alphaImg(_swi+_col+"_e.png");_nw="filter:"+YUtility.alphaImg(_swi+_col+"_nw.png");_n="filter:"+YUtility.alphaImg(_swi+_col+"_n.png");_w="filter:"+YUtility.alphaImg(_swi+_col+"_w.png");}else{_nw="background:url("+_swi+_col+"_nw.png) bottom no-repeat;";_n="background:url("+_swi+_col+"_n.png) bottom repeat-x;";_ne="background:url("+_swi+_col+"_ne.png) bottom left no-repeat;";_sw="background:url("+_swi+_col+"_sw.png);";_s="background:url("+_swi+_col+"_s.png) repeat-x;";_se="background:url("+_swi+_col+"_se.png) no-repeat;";_e="background:url("+_swi+_col+"_e.png) repeat-y;";_w="background:url("+_swi+_col+"_w.png) repeat-y;";}var _x="";var _spid="yswid";var _stla="margin-top: -0.1em;";if(!ae){var _als='style="position:relative;top:0.05em;right:0.05em;cursor:pointer;border:none;"';_x='<img id="'+_clids+'" '+_als+' src="'+_cls+'" alt="" width="12" height="12 border="0">';_spid="ysaeid";if(YUtility.browser.id){_stla="margin-top: -1.0em;margin-right: 1.0em;";}else{_stla="margin-top: -0.8em;margin-right: 1.0em;";}}this._sc='<div><table cellspacing="0" cellpadding="0" border="0"><tr style="line-height:6px"><td style="line-height:6px; '+_nw+'">&nbsp;</td><td style="line-height:6px; '+_n+'"></td><td style="line-height:6px; '+_ne+'"></td></tr><tr><td style="'+_w+'"></td> <td align=right valign=top bgcolor="#ffffff">'+_x+'<div id="'+_spid+'" style="text-align:left;'+_stla+'">';this._ec='</div></td><td style="'+_e+'">&nbsp;&nbsp;&nbsp;</td></tr><tr style="height:16px;"><td style="height:16px; '+_sw+'"></td><td style="height:16px; '+_s+'"></td><td style="height:16px; '+_se+'"></td></tr  </table></div>';YEvent.Capture(_spid,EventsList.MouseOut,function(_e){YEvent.stopPropag(_e);},null,"mouseout");};Marker.prototype.containSmartWindow=function(){var _x=_y=0;var _ws;if(this.swdom){_ws=YUtility.getSize(this.swdom.dom);if(!this.swdom.dom.style.width){this.swdom.dom.style.width="160px";}}else{if(_expCache){_ws=YUtility.getSize(_expCache.dom);}else{return ;}}var _mp=this._map._ll2xy(this.YGeoPoint);if(this._xybr){_mp=new YCoordPoint(this._xybr.x,this._xybr.y+this._image.size.height);}var _mvbx=_ws.width;var _mvby=_ws.height;var cmX=this._image.size.width+this._image.offsetSmartWindow.x;var cmY=this._image.size.height+this._image.offsetSmartWindow.y;var nx=_mvbx-(this._map.YSize.width-_mp.x);var ny=_mp.y-_mvby;var _off=0;if(_mp.x<_off){_x=cmX-_mp.x;}else{if(nx>0){_x=-(nx+cmX);}}if(ny<_off){_y=-(ny-cmY);}else{if(_mp.y>this._map.YSize.height){_y=this._map.YSize.height-_mp.y-cmY;}}if(this.correctLogoSearch){var _wls=205;var _hls=165;var _xlse=this._map.YSize.width-_wls;var _ylse=this._map.YSize.height-_hls;var _xuc=_mp.x+_ws.width;var _yuc=_mp.y-_ws.height;var _xd=_xlse-_xuc;var _yd=_ylse-_yuc;if(_xd<0){_x=_xd+_x;}if(_yd<0){_y=_yd+_y;}}if(!this._disableAutoContain){this._map.smoothPan(new YCoordPoint(_x,_y));}};Marker.prototype.addLabel=function(cin){if(this._domLabel){return ;}var o=YUtility.createNode("div");o.style.position="absolute";o.style.fontWeight="bold";o.style.textAlign="center";o.style.width="20px";o.style.height="20px";o.onmouseover=function(){o.style.cursor="default";};o.style.zIndex=2;o.innerHTML=cin;this._domLabel=o;YUtility.setDefaultSelectStyle(o);YUtility.appendNode(this.dom,this._domLabel);};Marker.prototype.calculatePosition=function(z){this.MP=new MercatorProjection(z);return this.MP.ll_to_xy(this.YGeoPoint);};var GeoCode=function(a,m){if(!m){return ;}this.GeoAddress=a||false;this.Obj=m;this.getPoint=GeoCode.getPoint;};GeoCode.prototype.set=function(s,t,id){var mID=(id)?id:"map";var qtype=(t)?t:99;var rnd=YUtility.getRandomID();var _id="ygeocodenode:"+rnd;if(s){var req=YMapConfig.geoCoder;req+="appid="+YMAPPID+"&qs="+escape(s)+"&qt="+qtype;req+="&mid="+this.Obj.id;req+="&id="+mID+"&r="+rnd;YUtility.dynamicSNode(_id,req);}};GeoCode.getPoint=function(s,t){if(s&&s.GeoMID){_GTab[s.GeoMID]._endGeoCode(s,t);}};var GeoRSS=function(a){this.GeoRSS=a||false;this.Obj=null;};GeoRSS.prototype.set=function(s,m,t){this.Obj=m;var rnd=YUtility.getRandomID();var _id="ygeorssnode:"+rnd;if(s){var req=YMapConfig.geoRSS;req+="appid="+YMAPPID+"&xml="+escape(s)+"&r="+YUtility.getRandomID()+"&mid="+this.Obj.id+"&t="+t;YUtility.dynamicSNode(_id,req);}};GeoRSS.get=function(s,m,t){if(s&&m){_GTab[m]._endGeoRSS(s,t);}};var GeoSearch=function(s,t,m,r,q,n){this.GeoSearch=s||false;this.id=m;this._q=q||"*";this.set(s,t,r,n);};GeoSearch.prototype.set=function(s,t,r,n){var rnd=YUtility.getRandomID();var rid=(t==1)?"ygeolocsrch:"+rnd:"ygeotrfsrch"+rnd;var req;if(s){req=(t==1)?YMapConfig.localSearch:YMapConfig.trafficSearch;req+="appid="+YMAPPID+"&ll="+(s)+"&rr="+YUtility.getRandomID()+"&mid="+this.id+"&t="+t;req+=((t==1)?"&q="+this._q:"");req+=(r?"&r="+r:"");req+=(n?"&n="+n:"");YUtility.dynamicSNode(rid,req);}};GeoSearch.get=function(s,m,t){if(s&&m){_GTab[m]._endGeoSearch(s,t);}};var Template=function(p,d){this._p=p;this._d=d;};Template.prototype.process=function(mu){var im=new YImage();if(this._d.BASEICON){im.src=this._d.BASEICON.src;var w=this._d.BASEICON.width?this._d.BASEICON.width:10;var h=this._d.BASEICON.height?this._d.BASEICON.height:15;im.size=new YSize(w,h);im.offsetSmartWindow=new YCoordPoint(0,h);}var mrk=new YMarker(this._p,im);var csy=this._d.YMAPS_CITYSTATE?this._d.YMAPS_CITYSTATE:"";var zip=this._d.YMAPS_ZIP?this._d.YMAPS_ZIP:"";var ao={title:this._d.TITLE,link:this._d.LINK,description:this._d.DESCRIPTION};mrk.setAnnotation(ao);var sw=new Object();sw.title=this._d.TITLE?"<b>"+this._d.TITLE+"</b><br/>":"";sw.address=this._d.YMAPS_ADDRESS?this._d.YMAPS_ADDRESS+"<br/>":"";sw.city_state=csy?csy+"<br/>":"";sw.phone=this._d.YMAPS_PHONENUMBER?this._d.YMAPS_PHONENUMBER+"<br/>":"";sw.description=(this._d.DESCRIPTION)?"<div style='width:200px;'>"+this._d.DESCRIPTION+"</div><br/>":"";sw.link=this._d.LINK?"<a href='"+this._d.LINK+"' target='_blank'>":"";sw.lnam=sw.link?sw.title+"</a>":"";sw.eimgTitle=sw.eimg="";if(this._d.YMAPS_EXTRAIMAGE){sw.eimgTitle=this._d.YMAPS_EXTRAIMAGE.TITLE?this._d.YMAPS_EXTRAIMAGE.TITLE:"";sw.eimg=this._d.YMAPS_EXTRAIMAGE.URL?'<br/><img src="'+this._d.YMAPS_EXTRAIMAGE.URL+'" border=0 title="'+sw.eimgTitle+'">':"";}sw.itmurl=this._d.YMAPS_ITEMURL?'<iframe src="'+this._d.YMAPS_ITEMURL+'"></iframe>':"";sw.dirt='<a href="http://maps.yahoo.com/dd?taddr='+escape(this._d.YMAPS_ADDRESS)+"&tlt="+this._d.GEO_LAT+"&tln="+this._d.GEO_LONG+"&tname="+this._d.TITLE+"&tcsz="+escape(csy)+" "+zip+'+&terr=12" target=_blank>To here</a>';sw.dirf='<a href="http://maps.yahoo.com/dd?newaddr='+escape(this._d.YMAPS_ADDRESS)+"&slt="+this._d.GEO_LAT+"&sln="+this._d.GEO_LONG+"&name="+this._d.TITLE+"&csz="+escape(csy)+" "+zip+'&oerr=12" target=_blank>From here</a>';sw.dirline=(csy||zip)?"Directions: "+sw.dirt+" - "+sw.dirf:"";var ht='<div style=\'margin: 0 3px 2px 3px;\'><font face="verdana,geneva,sans-serif" size="-2">'+sw.title+sw.address+sw.city_state+sw.phone+sw.description+sw.link+sw.lnam+sw.dirline+sw.eimg+sw.itmurl+"</font></div>";YEvent.Capture(mrk,EventsList.MouseClick,function(){this.openSmartWindow(ht);});return mrk;};var _eO=function(o,p,z){this.thisObj=o;this.YGeoPoint=p;this.zoomObj=z;};function eventObjectGeoRSS(m,u,d){this.ThisMap=m;this.URL=u;this.Data=d||null;this.success=(d&&d.success)?d.success:0;}function eventObjectGeoCode(m,a,g,s){this.ThisMap=m;this.Address=a;this.GeoPoint=g||null;this.success=s||0;}var _setBounds=function(tx,ty,bx,by){this.bL=tx-bx;this.bR=tx+bx;this.bT=ty+by;this.bB=ty-by;};_setBounds.prototype={abL:function(){this.pbL=this.bL;this.bL--;},abR:function(){this.pbR=this.bR;this.bR++;},abT:function(){this.pbT=this.bT;this.bT++;},abB:function(){this.pbB=this.bB;this.bB--;},sbL:function(){this.bL++;},sbR:function(){this.bR--;},sbT:function(){this.bT--;},sbB:function(){this.bB++;},inB:function(x,y){if(x>=this.bL&&x<=this.bR){if(y<=this.bT&&y>=this.bB){return true;}}return false;}};var _GTab={};YAHOO_MAP_REG="YAHOO_MAP";YAHOO_MAP_SAT="YAHOO_SAT";YAHOO_MAP_HYB="YAHOO_HYB";var Map=function(_c,_t,_s){try{if(typeof _c=="string"){_c=document.getElementById(_c);}this.YSize=this._getContainerSize(_c,_s);}catch(x){throw ("Y!Map.Error "+x+", no container object!");}this._defaultStart();this._setParentContainer(_c);this._defineEvents();this._registerEvents();this.setMapType(_t);this._tileCache=[];this._posTbl=[];this._vueTbl=[];this._mTb=[];this._pTb=[];this._totalX=this._totalY=0;this._myTX=this._myTY=0;_GTab[this.id]=this;};Map.prototype={resetXY:function(){this._totalX=this._totalY=0;},getProjection:function(zm){return(zm&&zm!=this.zoomLevel)?(new MercatorProjection(zm)):this.MP;},getTXY:function(){return this._txy;},getTileInfo:function(gp,zm){var mo;mo=(zm&&zm!=this.zoomLevel)?(new MercatorProjection(zm)):this.MP;var txy=mo.ll_to_xy(gp);var tll=mo.xy_to_ll(txy.tx,txy.ty,0,0);var pointpxy=mo.ll_to_pxy(gp.Lat,gp.Lon);var tilepxy=mo.ll_to_pxy(tll.Lat,tll.Lon);return{xy:txy,ll:tll,cp:{x:pointpxy.x-tilepxy.x,y:tilepxy.y-pointpxy.y}};},getTileFill:function(){var b=this.getBounds();var t=this.getTileInfo(b.min);var fx=this._xyFill.width*2+1;var fy=this._xyFill.height*2+1;return{x:t.xy.tx,y:t.xy.ty,nx:fx,ny:fy};},setAnnotation:function(o){this._annotate=o;},getAnnotation:function(){return this._annotate;},getElement:function(){return this.dom;},exportFormat:function(t){if(t!="GEORSS"){return ;}var mt=this.getMarkerIDs();var pt=this.getPolylineIDs();var ma=this.getAnnotation();var cp=this.YGeoPoint;var _s='<?xml version="1.0"?>';_s+='<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:ymaps="http://api.maps.yahoo.com/Maps/V2/AnnotatedMaps.xsd">';_s+="<channel>";var _e="</channel>";_e+="</rss>";if(ma&&ma.valid){if(ma.title){_s+="<title>"+ma.title+"</title>";}if(ma.description){_s+="<description>"+ma.description+"</description>";}if(ma.link){_s+="<link>"+ma.link+"</link>";}}var _1s="<item>";var _1e="</item>";var _m="";for(var i=0;i<pt.length;i++){var o=this.getPolylineObject(pt[i]);_m+=_1s;var ln="";for(var j=0;j<o._plength;j++){ln+=o._path[j].Lat+","+o._path[j].Lon+((j!=o._plength-1)?" ":"");}if(ln){_m+="<geo:line>"+ln+"</geo:line>";}if(o._color){_m+="<linecolor>"+o._color+"</linecolor>";}if(o._weight){_m+="<linewidth>"+o._weight+"</linewidth>";}if(o._alpha){_m+="<linealpha>"+o._alpha+"</linealpha>";}_m+=_1e;}for(var i=0;i<mt.length;i++){_m+=_1s;var o=this.getMarkerObject(mt[i]);var ga=o.getAnnotation();if(ga){if(ga.title){_m+="<title><![CDATA["+ga.title+"]]></title>";}if(ga.link){_m+="<link>"+ga.link+"</link>";}if(ga.description){_m+="<description><![CDATA["+ga.description+"]]></description>";}}if(o._image.src){}_m+="<geo:lat>"+o.YGeoPoint.Lat+"</geo:lat>";_m+="<geo:long>"+o.YGeoPoint.Lon+"</geo:long>";_m+=_1e;}var _rss=_s+_m+_e;return _rss;},_defaultStart:function(){this._mapType=YAHOO_MAP_REG;this.setZoomRange(1,17);this.zoomLevelPrev=null;this._disableDrag=false;this._txy=new YCoordPoint();},_setMapTypeHigh:function(_i){var _t=(_i)?_i:this._mapType;var _k=(this._ctrlType)?this._ctrlType.id:null;if(!_k){return ;}var _tps=this._ctrlType._types;for(var i=0;i<_tps.length;i++){var _ik=_tps[i];var _obj=this._ctrlType._bobj[_ik].YObj;if(!YUtility.browser.id){this._ctrlType._bobj[_ik].YObj.style.filter=YUtility.alphaImg2(_obj._iefix.src)+" alpha(opacity=80)";}else{this._ctrlType._bobj[_ik].style.opacity=0.8;}this._ctrlType._bobj[_ik].style.borderWidth="0px";if(_t==_ik){if(!YUtility.browser.id){this._ctrlType._bobj[_ik].YObj.style.filter=YUtility.alphaImg2(_obj._iefix.src)+" alpha(opacity=99)";}else{this._ctrlType._bobj[_ik].style.opacity=1;}this._ctrlType._bobj[_ik].style.borderWidth="0.1px";}}},setMapType:function(_t){if(!_t||this._mapType==_t){return ;}this._mapType=_t;this._setMapTypeHigh();if(this.YGeoPoint){this.drawZoomAndCenter(this.YGeoPoint,this.zoomLevel);}},getMapTypes:function(){var _t=[YAHOO_MAP_REG,YAHOO_MAP_SAT,YAHOO_MAP_HYB];return _t;},getCurrentMapType:function(){return this._mapType;},addTypeControl:function(_t,_a,_c){for(var i=0;i<arguments.length;i++){var o=arguments[i];if(typeof o=="object"){if(o.valid){_c=o;}else{_t=o;}}if(typeof o=="string"){_a=o;}}if(!_c){_c=new YCoordPoint(110,5);_c.translate("right","top");}this._typeControlPosition=_c;this._ctrlType=new TypeControl(this._typeControlPosition,_t);var _dc={YAHOO_MAP:YMapConfig.imgPrefixURL+"med_map.png?v=1.3",YAHOO_SAT:YMapConfig.imgPrefixURL+"med_sat.png?v=1.3",YAHOO_HYB:YMapConfig.imgPrefixURL+"med_hyb.png?v=1.3"};for(var i=0;i<this._ctrlType._types.length;i++){var dt=this._ctrlType._types[i];this._ctrlType.setControl(dt,new YImage(_dc[dt],new YSize(33,17)),new YSize(33,17));}this._ctrlType.setHorizontal();if(_a=="v"){this._ctrlType.setVertical();}this.addOverlay(this._ctrlType);var _ce=new _eO(this,this.YGeoPoint);this.Events.MapTypeControlAdded.trigger(_ce);},addNavigatorControl:function(c){if(!c){c=new YCoordPoint(5,5);c.translate("right","bottom");}this._miniPosition=c;if(!this._miniObj){this._miniObj=new MiniControl(this.zoomLevel,this._miniPosition);this.addOverlay(this._miniObj);var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.miniAdded.trigger(_ce);}},_showMini:function(){},addZoomLong:function(c){this._zoomType=false;this._createZoomControl(c);},addZoomShort:function(c){this._zoomType=true;this._createZoomControl(c);},_createZoomControl:function(c){if(!c){c=new YCoordPoint(5,5);}this._zoomPosition=c;if(!this.zoomLevel){YEvent.Capture(this,EventsList.endMapDraw,this._updateZoomLevel);}else{this._updateZoomLevel();}},_updateZoomLevel:function(){if(!this._ctrlZoom){this._ctrlZoom=new ZoomControl(this.zoomLevel,this._zoomPosition,this._zoomType);this.addOverlay(this._ctrlZoom);var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.zoomAdded.trigger(_ce);}},removeZoomControl:function(){this.removeOverlay(this._ctrlZoom.id);this._ctrlZoom=null;this._zoomON=false;},setZoomLevel:function(z){if(this.isValidZoomLevel(z)){if(Math.abs(z-this.zoomLevel)){this._setZoomLevel(YUtility.getInt(z));}}},_setZoomLevel:function(z,p){this.zoomLevelPrev=p||this.zoomLevel;this.drawZoomAndCenter(this.YGeoPoint,z);},setZoomRange:function(min,max){this._zoomMin=min;this._zoomMax=max;YEvent.Capture(this,EventsList.zoomAdded,this._updateZoomRange);},_updateZoomRange:function(){if(this._ctrlZoom){this._ctrlZoom.setMinMax(this._zoomMin,this._zoomMax);}},getZoomValidLevels:function(){return this.vZoom;},isValidZoomLevel:function(z){if(this._zr[YUtility.getInt(z)-1]&&z>=this._zoomMin&&z<=this._zoomMax){return true;}return false;},addPanControl:function(c){if(!c){c=new YCoordPoint(25,5);}this._panPosition=c;if(!this._ctrlPan){this._ctrlPan=new PanControl(this._panPosition);this.addOverlay(this._ctrlPan);}},removePanControl:function(){this.removeOverlay(this._ctrlPan.id);this._ctrlPan=null;},_processLogoSearch:function(e){var sti=["sl_st05.gif","sl_st1.gif","sl_st15.gif","sl_st2.gif","sl_st25.gif","sl_st3.gif","sl_st35.gif","sl_st4.gif","sl_st45.gif","sl_rst.gif"];var setupMarker=function(p,l){var im=new YImage(YMapConfig.imgPrefixURL+"smarker71a4c2.png",new YSize(23,32),new YCoordPoint(0,0));var _idm=l.PHONE.replace(/[\(\)\s]/g,"");var m=new YMarker(p,im,"ymrkloc"+_idm);m.correctLogoSearch=true;var iar=YMapConfig.imgPrefixURL+"sl_earr.gif";var etx='<div style="font:10 tahoma;">'+l.TITLE+"<img src="+iar+"></div>";m.setSmartWindowColor("71a4c1");m.addAutoExpand(etx);var _br="<br>";var ets='<div style="font:10 tahoma;width:130px;height:auto;"><b>'+l.TITLE+"</b>"+_br;if(l.PHONE){ets+=l.PHONE+_br;}if(l.ADDRESS){ets+=l.ADDRESS+_br;}if(l.CITY){ets+=l.CITY+", "+l.STATE+_br;}if(l.RATING&&l.RATING.AVERAGERATING){var si=isNaN(l.RATING.AVERAGERATING)?"":l.RATING.AVERAGERATING;var _imc;if(si<1){_imc=sti[0];}if(si==1){_imc=sti[1];}if(si>1&&si<2){_imc=sti[2];}if(si==2){_imc=sti[3];}if(si>2&&si<3){_imc=sti[4];}if(si==3){_imc=sti[5];}if(si>3&&si<4){_imc=sti[6];}if(si==4){_imc=sti[7];}if(si>4&&si<5){_imc=sti[8];}if(si==5){_imc=sti[9];}var im=(si)?"<img src="+YMapConfig.imgPrefixURL+_imc+">":"";ets+=im;if(YUtility.getInt(l.RATING.TOTALREVIEWS)){ets+=" ("+l.RATING.TOTALREVIEWS+")";}ets+=" <a href="+l.URL+" target=_blank>Rate it</a>";ets+="<br>";}var _dd=YMapConfig.mapsSite+"/dd?";var _addr=l.ADDRESS;var _city=l.CITY+","+l.STATE;var _ddt=_dd+"tname="+escape(l.TITLE)+"&taddr="+escape(_addr)+"&tcsz="+_city;var _ddf=_dd+"name="+escape(l.TITLE)+"&newaddr="+escape(_addr)+"&csz="+_city;ets+="<a href="+_ddt+" target=_blank>Directions To</a>";ets+=" | ";ets+="<a href="+_ddf+" target=_blank>From</a>";ets+="<br>";ets+="<a href="+l.URL+" target=_blank>More Info</a>";ets+="<br>";ets+="</div>";YEvent.Capture(m,EventsList.MouseClick,function(e){m.openSmartWindow(ets);});return m;};var _p=[];var nres=e.Data.ITEMS.length;this._nls._n0.style.visibility="visible";this._nls._n0.innerHTML=nres+((nres==1)?" result":" results");if(e.Data){for(var a in e.Data.ITEMS){var l=e.Data.ITEMS[a];if(l.TITLE){var p=new YGeoPoint(l.LATITUDE,l.LONGITUDE);_p.push(p);var m=setupMarker(p,l);this._nls._markers.push(m);this.addOverlay(m);}}}},disableLogoSearch:function(){this.removeOverlay("ylocalsearch");this._ylogo2();},enableLogoSearch:function(){this.removeOverlay("ycopy2");this.removeOverlay("ylogo");this._ylogo();},_ylogo:function(){if(this._coordTable["ylocalsearch"]||this._coordTable["ylogo"]){return ;}if(this.YSize.width<245||this.YSize.height<205){this.disableLogoSearch();return ;}var cp=new YCoordPoint(0,0);cp.translate("right","bottom");this._nls=new logoSearch(cp);YEvent.Capture(this,EventsList.onEndLocalSearch,this._processLogoSearch);var that=this;this._nls._form.onsubmit=function(){var bds=that.getBoundsLatLon();var npt1=new YGeoPoint(that.YGeoPoint.Lat,bds.max.Lon);var npt2=new YGeoPoint(bds.max.Lat,that.YGeoPoint.Lon);var dst1=that.YGeoPoint.distance(npt1);var dst2=that.YGeoPoint.distance(npt2);var dst=(dst1.miles>dst2.miles)?dst2.miles:dst1.miles;var nres=10;that.searchLocal(that.YGeoPoint,that._nls._i.value,(dst),nres);return false;};this._nls._form.onmousedown=function(){that.disableDragMap();};this._nls._form.onmouseup=function(){that.enableDragMap();};this._nls._nC.onclick=function(){that._nls._i.value="";that._nls._n0.innerHTML="";for(var m=0;m<that._nls._markers.length;m++){that.removeOverlay(that._nls._markers[m]);}};this._nls._i.tabIndex=999;this.addOverlay(this._nls);},_ylogo2:function(){if(this._disableLogo){return ;}var _l=YUtility.createNode("img");var _s={position:"absolute",width:"71px",height:"13px",zIndex:3};_l.src=YMapConfig.ylogo;YUtility.setStyle(_l,_s);var _p=new YCoordPoint(1,12);_p.translate("right","bottom");var _ol=new YCustomOverlay(_p,_l);_ol.id="ylogo";this.addOverlay(_ol);this._ycpyr();},_datacopy:function(w){var _id="ycopy1";if(this._coordTable[_id]){return ;}var _sc={position:"absolute",zIndex:3,cursor:"default",fontSize:"9px",width:"230px",height:"10px",fontFamily:"verdana",color:"#000",fontWeight:200,textAlign:"left"};var _l1=YUtility.createNode("div");if(typeof YMapConfig.copyReg=="object"){_l1._cimg=YUtility.createNode("img");if(w){_l1._cimg.src=YMapConfig.copyHyb.service+"&x="+this._txy.tx+"&y="+this._txy.ty+"&z="+this.zoomLevel+"&top="+this._xyFill.width/2+"&left="+this._xyFill.height/2;}else{_l1._cimg.src=YMapConfig.copyReg.service+"&x="+this._txy.tx+"&y="+this._txy.ty+"&z="+this.zoomLevel+"&top="+this._xyFill.width/2+"&left="+this._xyFill.height/2;}YUtility.alphaLoad(_l1._cimg);YUtility.appendNode(_l1,_l1._cimg);YUtility.setStyle(_l1._cimg,_sc);}else{_l1.innerHTML=YMapConfig.copyReg;}YUtility.setStyle(_l1,_sc);var _p1;if(w){YUtility.setStyle(_l1,"color","#fff");_p1=new YCoordPoint(202,0);}else{_p1=new YCoordPoint(1,0);}_p1.translate("left","bottom");var _ovcpy1=new YCustomOverlay(_p1,_l1);_ovcpy1.id=_id;this.addOverlay(_ovcpy1);},_satcopy:function(np){var _id="ycopy3";if(this._coordTable[_id]){return ;}var _sc={position:"absolute",zIndex:3,cursor:"default",height:"10px",width:"200px",textAlign:"left"};var _l3=YUtility.cloneNode("img",_id);if(typeof YMapConfig.copySat=="object"){_l3.src=YMapConfig.copySat.service+"&x="+this._txy.tx+"&y="+this._txy.ty+"&z="+this.zoomLevel+"&ew=1&ns=1";}YUtility.setStyle(_l3,_sc);YUtility.setStyle(_l3,"filter",YUtility.alphaImg(_l3.src));var _p3=(np)?np:new YCoordPoint(1,0);_p3.translate("left","bottom");var _ovcpy3=new YCustomOverlay(_p3,_l3);_ovcpy3.id=_id;this.addOverlay(_ovcpy3);},disableCopyright:function(){this._disableCopy=true;},_ycopy:function(){if(this._disableCopy){return ;}var _sc={position:"absolute",zIndex:3,cursor:"default",textAlign:"left"};if(this._mapType==YAHOO_MAP_REG){this.removeOverlay("ycopy1");this._datacopy();this.removeOverlay("ycopy3");}else{if(this._mapType==YAHOO_MAP_SAT){this.removeOverlay("ycopy3");this._satcopy();this.removeOverlay("ycopy1");}else{if(this._mapType==YAHOO_MAP_HYB){this.removeOverlay("ycopy1");this._datacopy(1);this.removeOverlay("ycopy3");this._satcopy();}}}},_ycpyr:function(){var _sc={position:"absolute",zIndex:3,fontSize:"7pt",fontStyle:"normal",fontFamily:"verdana",color:"#000",cursor:"default",textAlign:"right"};var c2id="ycopy2";if(!this._coordTable[c2id]){var _l2=YUtility.createNode("div");_l2.innerHTML=YMapConfig.copyText;YUtility.setStyle(_l2,_sc);var _p2=new YCoordPoint(1,1);_p2.translate("right","bottom");var _ol2=new YCustomOverlay(_p2,_l2);_ol2.id=c2id;this.addOverlay(_ol2);}},removeYLogo:function(){this._disableLogo=true;this.removeOverlay("ylogo");},removeYCopy:function(){this._disableCopy=true;this.removeOverlay("ycopy1");this.removeOverlay("ycopy2");this.removeOverlay("ycopy3");},_yscale:function(){if(this._zoomScaleDisabled){return ;}this.addZoomScale();},addZoomScale:function(){if(!this._ovMapScale){this._ovMapScale=new Scale(this.zoomLevel,this.getUnitsPerPixel(),this._zr);this.addOverlay(this._ovMapScale);}this._zoomScaleDisabled=false;},removeZoomScale:function(){if(this._ovMapScale){this.removeOverlay(this._ovMapScale.id);this._ovMapScale=null;}this._zoomScaleDisabled=true;},_defineEvents:function(){this.Events={};this.Events.endPan=new _captureEvent(EventsList.endPan,this);this.Events.endAutoPan=new _captureEvent(EventsList.endAutoPan,this);this.Events.startPan=new _captureEvent(EventsList.startPan,this);this.Events.startAutoPan=new _captureEvent(EventsList.startAutoPan,this);this.Events.onPan=new _captureEvent(EventsList.onPan,this);this.Events.changeZoom=new _captureEvent(EventsList.changeZoom,this);this.Events.changeMapType=new _captureEvent(EventsList.changeMapType,this);this.Events.onStartGeoCode=new _captureEvent(EventsList.onStartGeoCode,this);this.Events.onEndGeoCode=new _captureEvent(EventsList.onEndGeoCode,this);this.Events.onStartGeoRSS=new _captureEvent(EventsList.onStartGeoRSS,this);this.Events.onEndGeoRSS=new _captureEvent(EventsList.onEndGeoRSS,this);this.Events.onEndTrafficSearch=new _captureEvent(EventsList.onEndTrafficSearch,this);this.Events.onEndLocalSearch=new _captureEvent(EventsList.onEndLocalSearch,this);this.Events.endPanOB=new _captureEvent(EventsList.endPanOB,this);this.Events.endMapDraw=new _captureEvent(EventsList.endMapDraw,this);this.Events.zoomAdded=new _captureEvent(EventsList.zoomAdded,this);this.Events.MapTypeControlAdded=new _captureEvent(EventsList.MapTypeControlAdded,this);this.Events.miniAdded=new _captureEvent(EventsList.miniAdded,this);this.Events.polylineAdded=new _captureEvent(EventsList.polylineAdded,this);this.Events.polylineRemoved=new _captureEvent(EventsList.polylineRemoved,this);this.Events.MouseClick=new _captureEvent(EventsList.MouseClick,this);this.Events.MouseUp=new _captureEvent(EventsList.MouseUp,this);this.Events.MouseDoubleClick=new _captureEvent(EventsList.MouseDoubleClick,this);this.Events.MouseOver=new _captureEvent(EventsList.MouseOver,this);this.Events.MouseOut=new _captureEvent(EventsList.MouseOut,this);this.Events.MouseDown=new _captureEvent(EventsList.MouseDown,this);this._endPan=true;this.keyTypes={};this.keyTypes.zoomIn=1;this.keyTypes.zoomOut=2;this.keyTypes.panN=3;this.keyTypes.panS=4;this.keyTypes.panW=5;this.keyTypes.panE=6;this.keyTypes.panNW=7;this.keyTypes.panNE=8;this.keyTypes.panSW=9;this.keyTypes.panSE=10;this.Events.KeyDown=new _captureEvent(EventsList.KeyDown,this);this.Events.KeyUp=new _captureEvent(EventsList.KeyUp,this);},_registerEvents:function(){YEvent.Capture(window,EventsList.resize,this._onResizeRun,this);YEvent.Capture(window,EventsList.unload,this._runUnload,this);YEvent.Capture(this,EventsList.wheel,this._runWheel);YEvent.Capture(this,EventsList.endPanOB,this._endPanOBRun);YEvent.Capture(this,EventsList.endMapDraw,this._endMapDrawRun);YEvent.Capture(this,EventsList.zoomAdded,this._zoomAddedRun);YEvent.Capture(this,EventsList.MapTypeControlAdded,this._MapTypeControlAddedRun);YEvent.Capture(this,EventsList.miniAdded,this._miniAddedRun);YEvent.Capture(this,EventsList.endPan,this._runendPan);YEvent.Capture(this,EventsList.endAutoPan,this._runendPan);YEvent.Capture(this,EventsList.startPan,this._runstartPan);YEvent.Capture(this,EventsList.onPan,this._runonPan);YEvent.Capture(this,EventsList.changeZoom,this._runchangeZoom);YEvent.Capture(this,EventsList.changeMapType,this._changeMapTypeRun);YEvent.Capture(this,EventsList.polylineAdded,this._polylineAddedRun);YEvent.Capture(this,EventsList.polylineRemoved,this._polylineRemovedRun);YEvent.Capture(this,EventsList.MouseClick,this._MouseClickRun,null,EventsList.click);YEvent.Capture(this,EventsList.MouseUp,this._MouseUpRun,null,EventsList.mup);YEvent.Capture(this,EventsList.MouseDoubleClick,this._DoubleClickRun,null,EventsList.dblclick);YEvent.Capture(this,EventsList.MouseDown,this._MouseDownRun,null,EventsList.mdown);YEvent.Capture(this,EventsList.MouseOver,this._MouseOverRun,null,EventsList.mover);YEvent.Capture(this,EventsList.MouseOut,this._MouseOutRun,null,EventsList.mout);YEvent.Capture(this,EventsList.MouseDoubleClick,this._dc2pan);YEvent.Capture(document,EventsList.KeyDown,this._runkeyDown,this,EventsList.kdown);YEvent.Capture(document,EventsList.KeyUp,this._runkeyUp,this,EventsList.kup);YEvent.Capture(this,EventsList.KeyDown,this._keyZoom);YEvent.Capture(this,EventsList.KeyDown,this._keyPan);YEvent.Capture(this,EventsList.KeyDown,this._keyType);},_changeMapTypeRun:function(_e){},_polylineAddedRun:function(_e){},_polylineRemovedRun:function(_e){},_MapTypeControlAddedRun:function(_e){this._setMapTypeHigh();},_miniAddedRun:function(_e){this._miniON=true;},_zoomAddedRun:function(_e){this._zoomON=true;},_panAddedRun:function(_e){this._panON=true;},_startGeoCode:function(_a,_t,_id){var _n=new GeoCode(_a,this);_n.set(_n.GeoAddress,_t,_id);var _ce=new eventObjectGeoCode(this,_a);this.Events.onStartGeoCode.trigger(_ce);},_endGeoCode:function(_e,_t){if(_t==10){this.drawZoomAndCenter(_e.GeoPoint,this.zoomLevel);}if(_t==11){this.addMarker(_e.GeoPoint);}if(_t==12){if(this._mTb[_e.GeoID]){this._mTb[_e.GeoID].setYGeoPoint(_e.GeoPoint);this._mTb[_e.GeoID].setGeoXYPoint(this.zoomLevel,this._posTbl);}}var gp=new YGeoPoint(_e.GeoPoint.Lat,_e.GeoPoint.Lon);var _ce=new eventObjectGeoCode(this,_e.GeoAddress,gp,_e.success);this.Events.onEndGeoCode.trigger(_ce);},_startGeoSearch:function(_g,_t,_r,_q,_n){if(!_g){if(!this.YGeoPoint){return ;}_i=this.YGeoPoint.Lat+"|"+this.YGeoPoint.Lon;}else{_i=_g.Lat+"|"+_g.Lon;}var r=new GeoSearch(_i,_t,this.id,_r,_q,_n);},_endGeoSearch:function(_e,_t){var _ce=new eventObjectGeoRSS(this,_e.URL,_e);if(_t==1){this.Events.onEndLocalSearch.trigger(_ce);}if(_t==2){this.Events.onEndTrafficSearch.trigger(_ce);}},_startGeoRSS:function(_o,_t){_o.set(_o.GeoRSS,this,_t);var _ce=new eventObjectGeoRSS(this,_o);this.Events.onStartGeoRSS.trigger(_ce);},_endGeoRSS:function(_e,_t){if(_t==1){var _c=this.getBoxGeoCenter(_e.GEOBOX.MIN,_e.GEOBOX.MAX);var _z=this.getZoomLevel(_e.GEOBOX.MIN,_e.GEOBOX.MAX);this.drawZoomAndCenter(_c,_z);for(var o in _e.ITEMS){var i=_e.ITEMS[o];if(i.YGEORSS&&i.GEO_LINE){var p=[];for(var l in i.GEO_LINE){if(i.GEO_LINE[l].GEO_LAT){p.push(new YGeoPoint(i.GEO_LINE[l].GEO_LAT,i.GEO_LINE[l].GEO_LON));}}var lc=(i.LINECOLOR)?i.LINECOLOR:null;var lw=(i.LINEWIDTH)?i.LINEWIDTH:null;var la=(i.LINEALPHA)?i.LINEALPHA:null;var pl=new YPolyline(p,lc,lw,la);this.addOverlay(pl);}else{if(i.YGEORSS){var p=new YGeoPoint(i.GEO_LAT,i.GEO_LONG);var t=new Template(p,i);var m=t.process();this.addOverlay(m);}}}}if(_t==2){}var _ce=new eventObjectGeoRSS(this,_e.URL,_e);this.Events.onEndGeoRSS.trigger(_ce);},_endPanOBRun:function(e){},_endMapDrawRun:function(_e){if(this._zoomON==true&&this._ctrlZoom){this._ctrlZoom.updateZoomLevel(this.zoomLevel);}if(this._disableDrag==true){this.disableDragMap();}this._yscale();if(this._miniON==true){this._showMini();}if(this._ovMapScale){this._ovMapScale.update(this.zoomLevel,this.getUnitsPerPixel(),this._mapType);}this._ylogo2();this._ycopy();},_runUnload:function(_e){this._clearView(1);},_runWheel:function(_e){if(this._disableKeys){return ;}var _d;if(_e.detail){_d=YUtility.getInt(_e.detail)*(-40);}if(_e.wheelDelta){_d=_e.wheelDelta;}if(_d>=120){this.setZoomLevel(this.zoomLevel-1);}else{this.setZoomLevel(this.zoomLevel+1);}},_getKeyType:function(_k){var zkp="61";var zkm="109";if(!YUtility.browser.id){zkp="187";zkm="189";}var _ks={"45":this.keyTypes.zoomOut,"107":this.keyTypes.zoomIn,"46":this.keyTypes.zoomIn,"38":this.keyTypes.panN,"40":this.keyTypes.panS,"37":this.keyTypes.panW,"39":this.keyTypes.panE,"36":this.keyTypes.panNW,"33":this.keyTypes.zoomOut,"35":this.keyTypes.panSW,"34":this.keyTypes.zoomIn,"_":""};_ks[zkm]=this.keyTypes.zoomOut;_ks[zkp]=this.keyTypes.zoomIn;if(_ks[_k]){return _ks[_k];}return false;},_keyZoom:function(_e,_k){if(this._disableKeys){return ;}if(this._getKeyType(_k)==this.keyTypes.zoomIn){this.setZoomLevel(this.zoomLevel-1);}else{if(this._getKeyType(_k)==this.keyTypes.zoomOut){this.setZoomLevel(this.zoomLevel+1);}}},_keyType:function(_e,_k){if(this._disableKeys){return ;}},_keyPan:function(_e,_k){if(this._disableKeys){return ;}var x=40;var y=40;if(this._disableDrag==true){return ;}if(this._getKeyType(_k)==this.keyTypes.panN){this.smoothPan(new YCoordPoint(0,y));}else{if(this._getKeyType(_k)==this.keyTypes.panS){this.smoothPan(new YCoordPoint(0,-y));}else{if(this._getKeyType(_k)==this.keyTypes.panW){this.smoothPan(new YCoordPoint(x,0));}else{if(this._getKeyType(_k)==this.keyTypes.panE){this.smoothPan(new YCoordPoint(-x,0));}else{if(this._getKeyType(_k)==this.keyTypes.panNW){this.smoothPan(new YCoordPoint(x,y));}else{if(this._getKeyType(_k)==this.keyTypes.panNE){this.smoothPan(new YCoordPoint(-x,y));}else{if(this._getKeyType(_k)==this.keyTypes.panSW){this.smoothPan(new YCoordPoint(x,-y));}else{if(this._getKeyType(_k)==this.keyTypes.panSE){this.smoothPan(new YCoordPoint(-x,-y));}}}}}}}}},_runkeyDown:function(_e){var _key=_e.keyCode;var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.KeyDown.trigger(_ce,_key);},_runkeyUp:function(_e){var _key=_e.keyCode;var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.KeyUp.trigger(_ce,_key);},_MouseOverRun:function(_e){var _ll=this._getEvGP(_e);var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.MouseOver.trigger(_ce,_ll);},_MouseOutRun:function(_e){var _ll=this._getEvGP(_e);var pt=this._ll2xy(_ll);if(pt.x<5||pt.x>=(this.YSize.width-5)||pt.y<5||pt.y>=(this.YSize.height-30)){var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.MouseOut.trigger(_ce,_ll);}if(!pt.x||!pt.y){var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.MouseOut.trigger(_ce,_ll);}},_MouseDownRun:function(_e){var _ll=this._getEvGP(_e);var tr=this._getEtrg(_e);if(!YUtility.browser.id){YUtility.setStyle(tr,"cursor","http://l.yimg.com/a/i/us/map/aj/iegrb.png");}else{YUtility.setStyle(tr,"cursor","-moz-grabbing");}var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.MouseDown.trigger(_ce,_ll);},_MouseUpRun:function(_e){var tr=this._getEtrg(_e);YUtility.setStyle(tr,"cursor","pointer");if(this._endPan){if(this.Events.MouseClick){}}else{if(this.Events.MouseClick){}}var _ll=this._getEvGP(_e);var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.MouseUp.trigger(_ce,_ll);},_MouseClickRun:function(_e){this.setFocus();if(YUtility.browser.id!=2){YEvent.stopPropag(_e);}if(!this.YCoordPoint){return ;}var _ll=this._getEvGP(_e);var dfc=_ll.distance(this.YGeoPoint,this.getUnitsPerPixel());if(dfc.pixels>this.YSize.width){return ;}var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.MouseClick.trigger(_ce,_ll);this.dragOn=false;},_runstartPan:function(_e){this._endPan=false;},_runonPan:function(_e){},_runendPan:function(_e){this._endPan=true;this._adjustOverlay(2);this._cleanTileCache(true);if(Math.abs(this._myTX)>this.YSize.width/2||Math.abs(this._myTY)>this.YSize.height/2){this.Events.endPanOB.trigger();this._myTX=this._myTY=0;}if(this.YSize.hasSmallerSide(new YSize(Math.abs(this._totalX),Math.abs(this._totalY)))){var f=trackDelay(this,"pan_ob",this.YGeoPoint);if(!trackTr){trackTr=setTimeout(f,trackDl);}if(this._mapType==YAHOO_MAP_SAT||this._mapType==YAHOO_MAP_HYB){var src=YMapConfig.copySat.service+"&x="+this._txy.tx+"&y="+this._txy.ty+"&z="+this.zoomLevel+"&ew=1&ns=1";if(this._coordTable["ycopy3"]){if(!YUtility.browser.id){this._coordTable["ycopy3"].dom.style.filter=YUtility.alphaImg(src);}else{this._coordTable["ycopy3"].dom.src=src;}}}if(this._mapType==YAHOO_MAP_HYB){if(typeof YMapConfig.copyHyb=="object"){var src=YMapConfig.copyHyb.service+"&x="+this._txy.tx+"&y="+this._txy.ty+"&z="+this.zoomLevel+"&top="+this._xyFill.width/2+"&left="+this._xyFill.height/2;if(this._coordTable["ycopy1"]){if(!YUtility.browser.id){this._coordTable["ycopy1"].dom._cimg.style.filter=YUtility.alphaImg(src);}else{this._coordTable["ycopy1"].dom._cimg.src=src;}}}}else{if(this._mapType==YAHOO_MAP_REG){if(typeof YMapConfig.copyReg=="object"){var src=YMapConfig.copyReg.service+"&x="+this._txy.tx+"&y="+this._txy.ty+"&z="+this.zoomLevel+"&top="+this._xyFill.width/2+"&left="+this._xyFill.height/2;if(this._coordTable["ycopy1"]){if(!YUtility.browser.id){this._coordTable["ycopy1"].dom._cimg.style.filter=YUtility.alphaImg(src);}else{this._coordTable["ycopy1"].dom._cimg.src=src;}}}}}}else{YUtility.tracker(this,"pan");}},_runchangeZoom:function(e){if(this._ctrlZoom){this._ctrlZoom.updateZoomLevel(this.zoomLevel);}},_getEvCP:function(_e){var xy=YAHOO.util.Event.getXY(_e);var ps=YAHOO.util.Dom.getXY(this.dom);var ax=xy[0]-ps[0];var ay=xy[1]-ps[1];var np=new YCoordPoint(ax,ay);var _cx=this.YSize.width/2;var _cy=this.YSize.height/2;var dx=_cx-np.x;var dy=_cy-np.y;var cp=new YCoordPoint(dx,dy);return cp;},_getEtrg:function(_e){return YAHOO.util.Event.getTarget(_e);},_getEvXY:function(_e){var _tr=YAHOO.util.Event.getTarget(_e);var _xy=YAHOO.util.Event.getXY(_e);var _dp=YAHOO.util.Dom.getXY(this.dom);var _ep=new YCoordPoint(_xy[0]-_dp[0],_xy[1]-_dp[1]);if(!this.YCoordPoint){return ;}var dx=this.YCoordPoint.x-_ep.x;var dy=this.YCoordPoint.y-_ep.y;var otx=this._txy.x;var oty=this._txy.y;var tdx=this._txy.tx-_tr.tx;var tdy=this._txy.ty-_tr.ty;var ntx=otx-(dx-tdx*YMapConfig.tileXY);var nty=oty+(dy+tdy*YMapConfig.tileXY);return(new TileXY(_tr.tx,_tr.ty,ntx,nty));},_getEvGP:function(_e){var _txy=this._getEvXY(_e);if(!this.MP){return ;}var _ll=this.MP.xy_to_ll(_txy.tx,_txy.ty,_txy.x,_txy.y);return _ll;},_adjustOverlay:function(t){for(var m in this._mTb){if(this._mTb[m].setGeoXYPoint){this._mTb[m].setGeoXYPoint(this.zoomLevel,this._posTbl,t);}}if(t!=2){for(var p in this._pTb){if(this._pTb[p].setGeoXYPoint){this._pTb[p].setGeoXYPoint(this.zoomLevel,this._posTbl,t);}}}},handleSizeChange:function(_e){this._onResizeRun(_e);},_onResizeRun:function(_e){YEvent.stopEvent(_e);if(!this.YSize){return ;}this._adjustOnResize(YUtility.getSize(this.dom));},disablePanOnDoubleClick:function(){YEvent.Remove(this,EventsList.MouseDoubleClick,this._dc2pan);},_dc2pan:function(_e,_ll){if(_ll&&_ll.Lat==0&&_ll.Lon==-180){return ;}this.setZoomLevel(this.zoomLevel-1);this.panToLatLon(_ll);},_DoubleClickRun:function(_e){YEvent.stopEvent(_e);if(this._disableDrag){return ;}var _ll=this._getEvGP(_e);var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));this.Events.MouseDoubleClick.trigger(_ce,_ll);},vZoom:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],_zr:[[1,"1",[0.1,0.0473484848]],[2,"st",[0.125,0.1]],[3,"3",[0.25,0.2]],[4,"city",[0.5,0.5]],[5,"5",[1,1]],[6,"6",[2,2]],[7,"7",[5,3]],[8,"state",[10,7]],[9,"9",[20,15]],[10,"10",[30,25]],[11,"11",[75,50]],[12,"12",[150,100]],[13,"13",[300,200]],[14,"14",[600,400]],[15,"15",[1000,750]],[16,"16",[2000,1500]],[17,"17",[5000,3000]],[18,"18",[5000,3000]]],_lct:function(x,y){var _a=this._txy.x-this.YSize.width/2+x;var _b=this._txy.y+this.YSize.height/2-y;return new YCoordPoint(_a,_b);},_xy2ll:function(_c,_t){var _p=this._lct(_c.x,_c.y);return this.MP.xy_to_ll(this._txy.tx,this._txy.ty,_p.x,_p.y);},_getSubContainerXY:function(){return(new YCoordPoint(YUtility.getInt(this.subContainer.style.left),YUtility.getInt(this.subContainer.style.top)));},_ll2xy:function(gp,op){if(this.MP){var v=this.MP.ll_to_xy(gp);var k=YUtility._xyKey(v.tx,v.ty,this.zoomLevel,this._mapType);var scxy=this._getSubContainerXY();var pos=null;if(this._posTbl[k]){pos=this._posTbl[k];}else{if(this._vueTbl[k]){pos=this._vueTbl[k];}else{var cT=this.MP.ll_to_xy(this.YGeoPoint);var cK=YUtility._xyKey(cT.tx,cT.ty,this.zoomLevel,this._mapType);var cP=this._posTbl[cK];if(!cP){return false;}var xN=cP.tx-v.tx;var yN=cP.ty-v.ty;var xP=cP.x-YMapConfig.tileXY*xN;var yP=cP.y+YMapConfig.tileXY*yN;pos=new TileXY(v.tx,v.ty,xP,yP);}}if(pos){var xm=YUtility.getInt(pos.x)+((op==1)?0:scxy.x);var ym=YUtility.getInt(pos.y)+((op==1)?0:scxy.y);var rv=this.MP._returnCoordPoint(xm,ym,v.x,v.y);if(op==1){rv._xscpos=scxy.x;}else{rv.x%=this.MP.circum_px;}return rv;}}return false;},checkMax:function(u,r){var max={YAHOO_MAP:YMapConfig.tileReg.length,YAHOO_SAT:YMapConfig.tileSat.length,YAHOO_HYB:YMapConfig.tileHyb.length};return((r>max[u]-1)?max[u]-1:r);},setTileServer:function(_u,r){var pos=this.checkMax(_u,r);var _s={YAHOO_MAP:YMapConfig.tileReg[pos],YAHOO_SAT:YMapConfig.tileSat[pos],YAHOO_HYB:YMapConfig.tileHyb[pos]};this.tileServer=_u||YMapConfig.tileReg[pos];if(_s[_u]){this.tileServer=_s[_u];}},_setParentContainer:function(_c){this.id=_c.id=(_c.id)?_c.id:"ymapid"+YUtility.getRandomID();this._setYMapOn(_c);var _s={position:"relative",overflow:"hidden",background:"#f1f1f1"};YUtility.setStyle(_c,_s);this.dom=_c;this.dom.tabIndex=2;if(!this.subContainer){this._setSubContainer();}this._setTileXY();},setFocus:function(){this.dom.focus();},_setSubContainer:function(_p){this.subContainer=YUtility.createNode("div");this._setCanvas();var _s1={position:"absolute",zIndex:0,left:"0px",top:"0px"};YUtility.setStyle(this.subContainer,_s1);YUtility.appendNode(this.dom,this.subContainer);},getCoordPoint:function(){return(new YCoordPoint(this.subContainer.style.left,this.subContainer.style.top));},_setYMapOn:function(_c){_c._ymapset=true;},_setCanvas:function(){if(!YUtility.browser.id){if(!document._ymapset){document.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML");}document._ymapset=1;}},_setTileXY:function(){var _x=Math.ceil(((YMapConfig.tileXY*Math.ceil(this.YSize.width/YMapConfig.tileXY))/YMapConfig.tileXY)/2);var _y=Math.ceil(((YMapConfig.tileXY*Math.ceil(this.YSize.height/YMapConfig.tileXY))/YMapConfig.tileXY)/2);this._xyFill=new YSize(_x,_y);},_getContainerSize:function(_c,_s){if(_s){this.setContainerSize(_c,_s);return _s;}return this._sizeCheck(YUtility.getSize(_c),_c);},_sizeCheck:function(_s,_c){var _dYSize=new YSize(400,400);if(!_s.width||!_s.height){_s.width=_s.height=_dYSize.width;this.setContainerSize(_c,_dYSize);return _s;}return _s;},setContainerSize:function(_c,_s){var _wh={"width":_s.width+"px","height":_s.height+"px"};YUtility.setStyle(_c,_wh);},_addTile:function(_n,_k,_m){YUtility.appendNode(this.subContainer,_n);},_ipA:function(o,k,i){k=k||(YUtility._xyKey(o.tx,o.ty,this.zoomLevel,this._mapType));if(i){this._vueTbl[k]=new TileXY(o.tx,o.ty,o.x,o.y);}else{this._posTbl[k]=new TileXY(o.tx,o.ty,o.x,o.y);}},_getSrc:function(x,y){var _ru=this.tileServer+"x="+x+"&y="+y+"&z="+this.zoomLevel;return _ru;},_browserTile:function(_t,_o){var _s={position:"absolute",padding:"0px",cursor:"pointer",margin:"0px",width:YMapConfig.tileSize+"px",height:YMapConfig.tileSize+"px",zIndex:0,left:_o.x+"px",top:_o.y+"px"};YUtility.setStyle(_t,_s);YUtility.setStyle(_t,"cursor","pointer");_t.tx=_o.tx;_t.ty=_o.ty;if(YUtility.browser.id){YUtility.setStyle(_t,"visibility","hidden");_t.onload=function(){YUtility.setStyle(_t,"visibility","visible");};}},_tileRandom:0,_getTile:function(_o){var _k=YUtility._xyKey(_o.tx,_o.ty,this.zoomLevel,this._mapType);this._ipA(_o,_k);if(this._mapType==YAHOO_MAP_HYB){var _k1=YUtility._xyKey(_o.tx,_o.ty,this.zoomLevel,YAHOO_MAP_SAT);this.__loadTiles(_o,_k1,YAHOO_MAP_SAT);var _k2=YUtility._xyKey(_o.tx,_o.ty,this.zoomLevel,YAHOO_MAP_HYB);this.__loadTiles(_o,_k2,YAHOO_MAP_HYB);}else{var _k3=YUtility._xyKey(_o.tx,_o.ty,this.zoomLevel,this._mapType);this.__loadTiles(_o,_k3,this._mapType);}this._tileRandom++;if(this._tileRandom==4){this._tileRandom=0;}},__loadTiles:function(_o,_k,_m){this.setTileServer(_m,this._tileRandom);var _f=this.MP.xy_to_ll(_o.tx,_o.ty,128,128);var _r=this.MP.ll_to_xy(_f);if(_r.tx!=_o.tx){var kv=YUtility._xyKey(_r.tx,_o.ty,this.zoomLevel,this._mapType);this._ipA(new TileXY(_r.tx,_o.ty,_o.x,_o.y),kv,1);}if(!this._tileCache[_k]){var _t;if(!YUtility.browser.id){_t=YUtility.createNode("div");var url=this._getSrc(_r.tx,_o.ty);_t._iefix=YUtility.createNode("img");_t._iefix.onload=function(){_t.style.filter=YUtility.alphaImg2(url);};_t._iefix.src=url;}else{_t=YUtility.createNode("img");_t.src=this._getSrc(_r.tx,_o.ty);}this._browserTile(_t,_o);this._tileCache[_k]=_o;if(_m==YAHOO_MAP_HYB){this._tileCache[_k]._h=_t;}else{this._tileCache[_k]._t=_t;}this._addTile(_t,_k,_m);}},_callTiles:function(_f){var _cx=parseInt(this.YSize.width/2-this._txy.x,10);var _cy=parseInt(this.YSize.height/2-YMapConfig.tileXY+this._txy.y,10);var _cxy=new YCoordPoint(_cx,_cy);if(_f){var ckey=YUtility._xyKey(this._txy.tx,this._txy.ty,this.zoomLevel,this._mapType);_cxy=this._posTbl[ckey];}for(var xI=0;xI<=this._xyFill.width;xI++){for(var yI=0;yI<=this._xyFill.height;yI++){var tx=this._txy.tx+xI;var ty=this._txy.ty+yI;var key=YUtility._xyKey(tx,ty,this.zoomLevel,this._mapType);if(this._tileCache[key]){continue;}this._getTile(new TileXY(tx,ty,_cxy.x+(xI*YMapConfig.tileXY),_cxy.y+(-yI*YMapConfig.tileXY)));}}for(var xI=-this._xyFill.width;xI<=this._xyFill.width;xI++){for(var yI=-this._xyFill.height;yI<=this._xyFill.height;yI++){var tx=this._txy.tx+xI;var ty=this._txy.ty+yI;var key=YUtility._xyKey(tx,ty,this.zoomLevel,this._mapType);if(this._tileCache[key]){continue;}this._getTile(new TileXY(tx,ty,_cxy.x+(xI*YMapConfig.tileXY),_cxy.y+(-yI*YMapConfig.tileXY)));}}},_cleanTileCache:function(partial){for(var i in this._tileCache){if(partial&&this.bO.inB(this._tileCache[i].tx,this._tileCache[i].ty)&&this._tileCache[i]._t){continue;}if(this._tileCache[i]._h){if(this._tileCache[i]._h._iefix){this._tileCache[i]._h._iefix=null;}YUtility.removeNode(this._tileCache[i]._h);}if(this._tileCache[i]._t){if(this._tileCache[i]._t._iefix){this._tileCache[i]._t._iefix=null;}YUtility.removeNode(this._tileCache[i]._t);}delete this._tileCache[i];}},_clearView:function(u){if(u&&YUtility.browser.id){return ;}if(!u){for(var m in this._mTb){if(this._mTb[m].setGeoXYPoint){this._mTb[m].setGeoXYPoint();}}}else{for(var m in this._mTb){if(this._mTb[m]._destroy){this._mTb[m]._destroy(1);}}for(var p in this._pTb){if(this._pTb[p].setGeoXYPoint){this._pTb[p]._destroy();}}}this._cleanTileCache();for(var p in this._posTbl){if(this._posTbl[p].tx){delete this._posTbl[p];}}},_adjustSubContPos:function(_c){var _s={left:_c.x+"px",top:_c.y+"px"};if(this.subContainer){YUtility.setStyle(this.subContainer,_s);}},_setProjection:function(){this.MP=new MercatorProjection(this.zoomLevel,YMapConfig.tileXY);this._txy=this.MP.ll_to_xy(this.YGeoPoint);this.YCoordPoint=new YCoordPoint(this.YSize.width/2,this.YSize.height/2);},_draw:function(){if(!this.YGeoPoint){return ;}this._adjustSubContPos(new YCoordPoint(0,0));this._clearView();this._setProjection();this.bO=new _setBounds(this._txy.tx,this._txy.ty,this._xyFill.width,this._xyFill.height);this._callTiles();this._adjustOverlay(1);this._updateGeoBox();},_updateGeoBox:function(){var bSW=this.MP.xy_to_ll(this._txy.tx,this._txy.ty,this._txy.x+this.YSize.width/2,this._txy.y-this.YSize.height/2);var bNE=this.MP.xy_to_ll(this._txy.tx,this._txy.ty,this._txy.x-this.YSize.width/2,this._txy.y+this.YSize.height/2);if(this.MP.circum_px<=this.YSize.width){bSW.Lon=-180;bNE.Lon=180;}bSW.setgeobox(bNE);this._geoBox=bSW;},_gLC:function(){this.bO.abL();for(var tb=this.bO.bB;tb<=this.bO.bT;tb++){var key=YUtility._xyKey(this.bO.pbL,tb,this.zoomLevel,this._mapType);if(this._posTbl[key]){this._getTile(new TileXY(this.bO.bL,tb,this._posTbl[key].x-YMapConfig.tileXY,this._posTbl[key].y));}}this.bO.sbR();},_gRC:function(){this.bO.abR();for(var tb=this.bO.bB;tb<=this.bO.bT;tb++){var key=YUtility._xyKey(this.bO.pbR,tb,this.zoomLevel,this._mapType);if(this._posTbl[key]){this._getTile(new TileXY(this.bO.bR,tb,this._posTbl[key].x+YMapConfig.tileXY,this._posTbl[key].y));}}this.bO.sbL();},_gTR:function(){this.bO.abT();for(var tb=this.bO.bL;tb<=this.bO.bR;tb++){var key=YUtility._xyKey(tb,this.bO.pbT,this.zoomLevel,this._mapType);if(this._posTbl[key]){this._getTile(new TileXY(tb,this.bO.bT,this._posTbl[key].x,this._posTbl[key].y-YMapConfig.tileXY));}}this.bO.sbB();},_gBR:function(){this.bO.abB();for(var tb=this.bO.bL;tb<=this.bO.bR;tb++){var key=YUtility._xyKey(tb,this.bO.pbB,this.zoomLevel,this._mapType);if(this._posTbl[key]){this._getTile(new TileXY(tb,this.bO.bB,this._posTbl[key].x,this._posTbl[key].y+YMapConfig.tileXY));}}this.bO.sbT();},_pan:function(iX,iY,_r){var _x=YUtility.getInt(iX);var _y=YUtility.getInt(iY);if(!_x&&!_y||!this.bO){return ;}var t=this.subContainer;var pL=YUtility.getInt(t.style.left)+_x;var pT=YUtility.getInt(t.style.top)+_y;t.style.left=(pL)+"px";t.style.top=(pT)+"px";var nR,nB,nL,nT;var kR=YUtility._xyKey(this.bO.bR,this.bO.bT,this.zoomLevel,this._mapType);var kB=YUtility._xyKey(this.bO.bL,this.bO.bB,this.zoomLevel,this._mapType);if(this._posTbl[kR]){nR=this._posTbl[kR].x;}if(this._posTbl[kB]){nB=this._posTbl[kB].y;}if(this._posTbl[kB]){nL=this._posTbl[kB].x;}if(this._posTbl[kR]){nT=this._posTbl[kR].y;}if((nL+pL)>-YMapConfig.tileXY){this._gLC();}if((nR+pL)<this.YSize.width){this._gRC();}if((nT+pT)>-YMapConfig.tileXY){this._gTR();}if((nB+pT)<this.YSize.height){this._gBR();}this._panUpdate(_x,_y,_r);this._totalX+=_x;this._totalY+=_y;this._myTX+=_x;this._myTY+=_y;},_panUpdate:function(x,y,_r){if(!x&&!y){return ;}var _x=x;var _y=y;if(_r){_x=0;_y=0;}this._txy.tx=this._txy.tx-_x/YMapConfig.tileXY;this._txy.ty=this._txy.ty+_y/YMapConfig.tileXY;this.YGeoPoint=this.MP.xy_to_ll(this._txy.tx,this._txy.ty,this._txy.x,this._txy.y);this._updateGeoBox();},_drag:function(){if(!this._dragObject){this._dragObject=new YAHOO.util.DDProxy(this.dom.id);this._dragObject.scroll=false;}var that=this;var ox,oy;that._dragObject.onDrag=function(_e){YEvent.stopDefault(_e);that.dragOn=true;var _ex=_e.clientX;var _ey=_e.clientY;if(YUtility.browser.id==0||YUtility.browser.id==4){_ex=_ex+(document.compatMode=="BackCompat"?document.body.scrollLeft:document.documentElement.scrollLeft);_ey=_ey+(document.compatMode=="BackCompat"?document.body.scrollTop:document.documentElement.scrollTop);}else{_ex=_ex+window.pageXOffset;_ey=_ey+window.pageYOffset;}var pos={x:_ex-ox,y:_ey-oy};ox=_ex;oy=_ey;with(that){_pan(pos.x,pos.y);var _ce=(new _eO(that,YGeoPoint,{previous:zoomLevelPrev,current:zoomLevel}));Events.onPan.trigger(_ce);}};that._dragObject.endDrag=function(_e){with(that){var _ce=(new _eO(that,YGeoPoint,{previous:zoomLevelPrev,current:zoomLevel}));Events.endPan.trigger(_ce);}};that._dragObject.b4StartDrag=function(_e){};that._dragObject.startDrag=function(_ex,_ey){ox=_ex;oy=_ey;with(that){var _ce=(new _eO(that,YGeoPoint,{previous:zoomLevelPrev,current:zoomLevel}));Events.startPan.trigger(_ce);}};},isZoomChanged:function(z){var c=this.zoomLevel;var p=z?z:this.zoomLevelPrev;return(p&&Math.abs(p-c));},startSet:false,drawZoomAndCenter:function(o,z){var otype="draw";this.zoomLevel=this.isValidZoomLevel(z)?YUtility.getInt(z):5;if(!this.zoomLevelPrev){otype="start";this.zoomLevelPrev=this.zoomLevel;}if(typeof (o)=="string"){this._startGeoCode(o,10);}else{if(o){this.YGeoPoint=new YGeoPoint(o.Lat,o.Lon);this._draw();this._drag();var _ce=(new _eO(this,this.YGeoPoint,{previous:this.zoomLevelPrev,current:this.zoomLevel}));if(this.isZoomChanged()){this.Events.changeZoom.trigger(_ce);otype="zoom_ob";}else{otype=this.startSet?"draw":"start";}this.Events.endMapDraw.trigger(_ce);if(!this._disableTrack){if(otype=="zoom_ob"){var f=trackDelay(this,otype,this.YGeoPoint);if(!trackTr){trackTr=setTimeout(f,trackDl);}}else{if(otype=="start"){this.startSet=true;}YUtility.tracker(this,otype);}}}}this.zoomLevelPrev=this.zoomLevel;},dragOn:false,panToLatLon:function(geo,z){if(this.dragOn){return ;}var _zoom=z?z:this.zoomLevel;var _lldiff=geo.pointDiff(this.YGeoPoint);var _units=this.getUnitsPerPixel(_zoom);var _xdiff=Math.ceil(_lldiff.Lon/_units.longitude);var _ydiff=Math.ceil(_lldiff.Lat/_units.latitude);var _panMax=1.5;if(this.isZoomChanged(z)||(Math.abs(_xdiff)>this.YSize.width*_panMax||Math.abs(_ydiff)>this.YSize.height*_panMax)){this.drawZoomAndCenter(geo,_zoom);}else{this.smoothPan(new YCoordPoint(_xdiff,_ydiff));}},smoothPan:function(_cp,f){var attributes={};var _f=(f)?f:10;var _anm=new YAHOO.util.Motion(this.subContainer,attributes,_f,YAHOO.util.Easing.easeNone);_anm.useSeconds=false;var that=this;_anm.onStart.subscribe(function(){with(that){var _ce=(new _eO(that,YGeoPoint,{previous:zoomLevelPrev,current:zoomLevel}));Events.startAutoPan.trigger(_ce);}});_anm.onTween.subscribe(function(){with(that){var _ce=(new _eO(that,YGeoPoint,{previous:zoomLevelPrev,current:zoomLevel}));_pan(_cp.x/_f,_cp.y/_f);Events.onPan.trigger(_ce);}});_anm.onComplete.subscribe(function(){with(that){var _ce=(new _eO(that,YGeoPoint,{previous:zoomLevelPrev,current:zoomLevel}));Events.endAutoPan.trigger(_ce);}});_anm.animate();},_pointPan:function(_cp){this.smoothPan(_cp);},_smoothPan:function(_cp){this.smoothPan(_cp);},addOverlay:function(o){if(!o){throw ("Error: attempting to add invalid overlay object!");}if(o.YGeoPoint){o.setMapObject(this);o.setGeoXYPoint(this.zoomLevel,this._posTbl);if(o.polyline&&!this._pTb[o.id]){YUtility.appendNode(this.subContainer,o);this._pTb[o.id]=o;var _ce=new _eO(this,this.YGeoPoint);this.Events.polylineAdded.trigger(_ce);}else{if(!this._mTb[o.id]){YUtility.appendNode(this.subContainer,o);this._mTb[o.id]=o;if(!markerTr){var f=checkMarkerAdded(this,"poi");markerTr=setTimeout(f,trackDl);}}}}else{if(o.YCoordPoint){o.setMapObject(this);o.assignCoordPoint();if(!this._coordTable){this._coordTable=[];}if(!this._coordTable[o.id]){YUtility.appendNode(this,o);}this._coordTable[o.id]=o;}else{if(o.GeoRSS){this._startGeoRSS(o,1);return ;}}}YUtility.alphaLoad(o);},processGeoRSS:function(o){this._startGeoRSS(o,2);},searchLocal:function(g,q,r,n){this._startGeoSearch(g,1,r,q,n);},searchTraffic:function(g,r){this._startGeoSearch(g,2,r);},removeOverlay:function(o){if(o&&o.dom){if(o.polyline){var _ce=new _eO(this,this.YGeoPoint);this.Events.polylineRemoved.trigger(_ce);delete this._pTb[o.id];}YUtility.removeNode(o.dom);delete this._mTb[o.id];}else{if(typeof (o)=="string"){if(this._coordTable[o]){var _obj=this._coordTable[o];YUtility.removeNode(_obj.dom);delete this._coordTable[o];}}}},addXY:function(_cp){var m=document.createElement("img");m.id="xypt"+Math.random();m.src=YMapConfig.marker2;var _s={"position":"absolute","left":_cp.x,"top":_cp.y,"zIndex":3};YUtility.setStyle(m,_s);YUtility.appendNode(this.dom,m);},getEventsList:function(){return EventsList;},convertLatLonXY:function(gp){return this._ll2xy(gp);},convertXYLatLon:function(cpt){return this._xy2ll(cpt);},removeFromMap:function(id){YUtility.removeNode(YUtility.getByID(id));},addMarker:function(a,b){if(typeof (a)=="string"){this._startGeoCode(a,11);}else{this.addOverlay(new Marker(a,b));}},getZoomFromDegreePerPixel:function(degppx,uppx){return Math.ceil(1+Math.log(degppx/(uppx))/Math.log(2));},getZoomLevel:function(gpa,gpb,cs){var _a,_b;if(typeof (gpa)=="object"&&gpa.distance){var w=this.YSize.width;var up=this.getUnitsPerPixel();var upn=(gpa.distance*2)/w;return this.getZoomFromDegreePerPixel(upn,this.getUnitsPerPixel(1).miles);}if(gpa&&!gpb){var _o=this.getGeoBox(gpa);_a=_o.min;_b=_o.max;}else{_a=gpa;_b=gpb;}if(_a&&_b){var tcs=this.YSize;if(cs){tcs=cs;}if(_a&&!_a.setgeobox){_a=new YGeoPoint(_a.Lat,_a.Lon);_b=new YGeoPoint(_b.Lat,_b.Lon);}_a.setgeobox(_b);var c1=this.getBoxGeoCenter(_a,_b);if(!this.YGeoPoint){this.YGeoPoint=new YGeoPoint(c1.Lat,c1.Lon);}var lnpx=(_a.LonMax-_a.LonMin)/(tcs.width-tcs.height/10);var ltpx=(_a.LatMax-_a.LatMin)/(tcs.height-tcs.width/10);if(!lnpx){return 1;}var zmlon=this.getZoomFromDegreePerPixel(lnpx,this.getUnitsPerPixel(1).longitude);var zmlat=this.getZoomFromDegreePerPixel(ltpx,this.getUnitsPerPixel(1).latitude);var rz=(zmlon>zmlat)?zmlon:zmlat;return Math.abs(rz);}return parseInt(this.zoomLevel,10);},getBestZoomAndCenter:function(a){var z=this.getZoomLevel(a);var c=this.getCenterGeoPoint(a);return{zoomLevel:z,YGeoPoint:c};},getGeoBox:function(a){var o={};o.max=o.min=new YGeoPoint();if(!a.length){return o;}o.min=new YGeoPoint(a[0].Lat,a[0].Lon);o.max=new YGeoPoint(a[0].Lat,a[0].Lon);for(var k in a){var n=a[k];if(n.Lat<o.min.Lat){o.min.Lat=n.Lat;}if(n.Lat>o.max.Lat){o.max.Lat=n.Lat;}if(n.Lon<o.min.Lon){o.min.Lon=n.Lon;}if(n.Lon>o.max.Lon){o.max.Lon=n.Lon;}}return o;},getCenterGeoPoint:function(a){return this.getCenterPoint(a);},getCenterPoint:function(a){var _o=this.getGeoBox(a);var _c=(_o)?this.getBoxGeoCenter(_o.min,_o.max):new YGeoPoint();return _c;},getGeoBoxCenter:function(a,b){return this.getBoxGeoCenter(a,b);},getBoxGeoCenter:function(a,b){var _a=(a.Lat+b.Lat)/2;var _b=(a.Lon+b.Lon)/2;return(new YGeoPoint(_a,_b));},getFixedOverlayIDs:function(){var a=[];for(var p in this._coordTable){if(this._coordTable[p].YCoordPoint){a.push(p);}}return a;},getPolylineIDs:function(){var a=[];for(var p in this._pTb){if(this._pTb[p].YGeoPoint){a.push(p);}}return a;},getPolylineObject:function(k){return this._pTb[k];},getMarkerById:function(k){return this._mTb[k];},getMarkerObject:function(k){return this._mTb[k];},hideAllMarkers:function(){for(var k in this._mTb){var o=this._mTb[k];if(o.YGeoPoint){if(!o.ishidden()){o.hide();o.selective=true;}}}},unhideAllMarkers:function(){for(var k in this._mTb){var o=this._mTb[k];if(o.YGeoPoint&&o.selective){if(o.ishidden()){o.unhide();}}}},isMarkerInView:function(o){if(!o||!o.YGeoPoint){return false;}var p=this.convertLatLonXY(o.YGeoPoint);return(p.x>0&&p.x<this.YSize.width&&p.y>0&&p.y<this.YSize.height);},getMarkerCount:function(){var c=0;for(var m in this._mTb){var o=this._mTb[m];if(o.YGeoPoint&&!o.ishidden()){if(this.isMarkerInView(o)){c++;}}}return c;},getMarkerIDs:function(){var a=[];for(var m in this._mTb){if(this._mTb[m].YGeoPoint){a.push(m);}}return a;},getMarkerTable:function(){return this._mTb;},removeMarkersAll:function(){if(_expCache){_expCache._destroy();_expCache=null;}for(var m in this._mTb){if(this._mTb[m]._destroy){this._mTb[m]._destroy();delete this._mTb[m];}}if(this._mTb.length){return false;}return true;},removeMarker:function(m){if(this._mTb[m]&&this._mTb[m]._destroy){this._mTb[m]._destroy();delete this._mTb[m];return true;}return false;},getOuterRadius:function(){return(YUtility.getInt(this.YSize.width>this.YSize.height?this.YSize.width:this.YSize.height))/2;},getInnerRadius:function(){return(YUtility.getInt(this.YSize.width>this.YSize.height?this.YSize.height:this.YSize.width))/2;},_adjustOnResize:function(_ns){var _pYSize=this.YSize;this.YSize=_ns;var _dx=(this.YSize.width-_pYSize.width)/2;var _dy=(this.YSize.height-_pYSize.height)/2;if(!_dx&&!_dy){return ;}this._setTileXY();this._updateGeoBox();this._setProjection();this.bO=new _setBounds(this._txy.tx,this._txy.ty,this._xyFill.width,this._xyFill.height);this._callTiles(true);this._pan(_dx,_dy,false);},resizeTo:function(ys){if(ys){this._adjustOnResize(this._getContainerSize(this.dom,ys));}},moveByXY:function(cpt){this._pan(cpt.x,cpt.y);},smoothMoveByXY:function(cpt,f){this.smoothPan(cpt,f?f:1);},panToXY:function(np){var op=new YCoordPoint(this.YSize.width/2,this.YSize.height/2);for(var i=1;i<arguments.length;i++){if(typeof arguments[i]=="object"){op=arguments[i];}}var xd=Math.floor(op.x-np.x);var yd=Math.floor(op.y-np.y);this.smoothPan(new YCoordPoint(-xd,-yd));},getBounds:function(){return this._geoBox;},getBoundsLatLon:function(){return this._geoBox;},getPortSize:function(){return this.YSize;},getContainerSize:function(){return this.YSize;},getCenterLatLon:function(){return this.YGeoPoint;},getUnitsPerPixel:function(z){var zm=z||this.zoomLevel;var mp=new MercatorProjection(zm);var km=(this.YGeoPoint)?mp.mpp_m(this.YGeoPoint.Lat)/1000:0;var mi=(this.YGeoPoint)?mp.mpp_m(this.YGeoPoint.Lat)/1609.344:0;var lonppx=1/mp.x_per_lon_;var latppx=lonppx*0.794370211280205;return{miles:mi,kilometers:km,latitude:latppx,longitude:lonppx};},showSmartWindow:function(gp,cin,id){if(!gp||!cin){return ;}var im=new YImage();im.src=YMapConfig.marker9;im.size=new YSize(0,0);im.offsetSmartWindow=new YCoordPoint(0,0);var marker=new Marker(gp,id,im);this.addOverlay(marker);marker.openSmartWindow(cin);},isDragMapEnabled:function(){return !this._disableDrag;},disableDragMap:function(){if(this._dragObject){this._dragObject.lock();}this._disableDrag=true;for(var i in this._tileCache){if(this._tileCache[i]._t){YUtility.setStyle(this._tileCache[i]._t,"cursor","default");}}},enableDragMap:function(){if(this._dragObject){this._dragObject.unlock();}this._disableDrag=false;for(var i in this._tileCache){if(this._tileCache[i]._t){YUtility.setStyle(this._tileCache[i]._t,"cursor","move");}}},enableKeyControls:function(){this.setFocus();this._disableKeys=false;},disableKeyControls:function(){this._disableKeys=true;},disableTracking:function(){this._disableTrack=true;},enableTracking:function(){this._disableTrack=false;},geoCodeAddress:function(s){this._startGeoCode(s);},__end:function(){}};YUtility.containerResize=function(panelElId,handleElId,sGroup){if(handleElId){this.init(panelElId,sGroup);this.handleElId=handleElId;this.setHandleElId(handleElId);}};YUtility.containerResize.prototype=new YAHOO.util.DragDrop();YUtility.containerResize.prototype.onMouseDown=function(e){var panel=this.getEl();this.startWidth=panel.offsetWidth;this.startHeight=panel.offsetHeight;this.startPos=[YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e)];};YUtility.containerResize.prototype.onDrag=function(e){var newPos=[YAHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e)];var offsetX=newPos[0]-this.startPos[0];var offsetY=newPos[1]-this.startPos[1];var newWidth=Math.max(this.startWidth+offsetX,10);var newHeight=Math.max(this.startHeight+offsetY,10);var panel=this.getEl();panel.style.width=newWidth+"px";panel.style.height=newHeight+"px";};var Debug=function(i){this.id=i||"ymapdebug";this._count=0;this.initSize(new YSize(200,200));this.initPos(new YCoordPoint(10,10));};Debug.prototype.initPos=function(yc){this._x=yc.x;this._y=yc.y;};Debug.prototype.initSize=function(ys){this._w=ys.width;this._h=ys.height;};Debug.prototype.print=function(inp){this._count=0;if(!this._p){this._p=document.getElementById(this.id);this._p=YUtility.createNode("div");this._p.id=this.id;this._p.style.position="absolute";this._p.style.background="#EEEEEE";this._p.style.filter="alpha(opacity=1)";this._p.style.opacity=1;this._p.style.width=this._w;this._p.style.height=this._h;this._p.style.left=this._x;this._p.style.top=this._y;this._p.style.zIndex=999;this._p.style.borderStyle="solid";if(!YUtility.browser.id){this._p.style.overflow="auto";}var _h=YUtility.createNode("div","yloghd");var hs={backgroundColor:"#EEE000",position:"absolute",overflow:"visible",zIndex:999,bottom:-5,right:-5,width:15,height:15};YUtility.setStyle(_h,hs);var _l=YUtility.createNode("div");_l.style.borderWidth="1px";_l.style.padding="1px";_l.style.borderStyle="solid";var _c=YUtility.createNode("img","ylogx");_c.src=YMapConfig.imgPrefixURL+"x.gif";_c.style.position="absolute";_c.style.right="3px";_c.style.top="3px";YEvent.Capture(_c,EventsList.MouseClick,this._MouseClickRun,this,"click");var _t=YUtility.createNode("div");_t.innerHTML="<b>Yahoo! Maps API Logger</b>";_t.style.background="#EEE000";_t.style.width="98%";_t.style.paddingLeft="3px";YUtility.appendNode(_t,_c);YUtility.appendNode(this._p,_t);YUtility.appendNode(this._p,_l);YUtility.appendNode(this._p,_h);YUtility.appendNode(document.body,this._p);if(!this._o){this._o=YUtility.createNode("div","ylogmn");if(YUtility.browser.id){this._o.style.height="90%";}this._o.style.background="#EEEEEE";this._o.style.filter="alpha(opacity=75)";this._o.style.opacity=0.75;if(YUtility.browser.id){this._o.style.overflow="auto";}YUtility.appendNode(this._p,this._o);}}if(YUtility.browser.id){var _d=new YAHOO.util.DD(this._p.id);var _r=new YUtility.containerResize(this.id,"yloghd");}else{var _r=new YUtility.containerResize(this.id,"yloghd");var _d=new YAHOO.util.DD(this._p.id);}YEvent.Capture(this._o,EventsList.MouseDown,function(_e){YEvent.stopPropag(_e);},null,"mousedown");var t=typeof inp;if(this._o){this._o.innerHTML+="<div>";if(t=="object"||t=="array"){for(var o in inp){this._o.innerHTML+=this._count+". <b>"+o+"</b> :: "+inp[o]+"<br>";this._count++;}}else{this._o.innerHTML+=this._count+". "+inp;this._count++;}this._o.innerHTML+="</div>";}};Debug.prototype._MouseClickRun=function(){this.hide();};Debug.prototype.hide=function(){this._p.style.visibility="hidden";};Debug.prototype.write=function(inp){this.print(inp);};function Exporter(o){var _E=o||window;_E.YMapConfig=YMapConfig;_E.YOverlay=Overlay;_E.YAnnotation=Annotation;_E.YMapTypeControl=TypeControl;_E.YMapDistance=MapDistance;_E.YCoordPoint=YCoordPoint;_E.YGeoPoint=YGeoPoint;_E.YImage=YImage;_E.YSize=YSize;_E.YEvent=YEvent;_E.YMarker=Marker;_E.YPolyline=Polyline;_E.YSmartWindow=SmartWindow;_E.YCustomOverlay=CustomOverlay;_E.YUtility=YUtility;_E.YGeoCode=GeoCode;_E.YGeoRSS=GeoRSS;_E.YGeoSearch=GeoSearch;_E.YMap=Map;_E.EventsList=EventsList;_E.YLog=new Debug("ymaplog");}Exporter();}YahooMapsAPIAjax();\r
59548 \r
59549 \r
59550 \r
59551 if(!window.I18nMsg){I18nMsg={}\r
59552 }I18nMsg.currencyCode="USD";\r
59553 I18nMsg.currencySymbol="$";\r
59554 I18nMsg.eraAD="AD";\r
59555 I18nMsg.eraBC="BC";\r
59556 I18nMsg.firstDayOfWeek="1";\r
59557 I18nMsg.formatDateFull="EEEE, MMMM d, yyyy";\r
59558 I18nMsg.formatDateLong="MMMM d, yyyy";\r
59559 I18nMsg.formatDateMedium="MMM d, yyyy";\r
59560 I18nMsg.formatDateShort="M/d/yy";\r
59561 I18nMsg.formatDateTime="{0} {1}";\r
59562 I18nMsg.formatNumber="#,##0.###";\r
59563 I18nMsg.formatNumberCurrency="\u00a4#,##0.00;(\u00a4#,##0.00)";\r
59564 I18nMsg.formatNumberInteger="#,##0";\r
59565 I18nMsg.formatNumberPercent="#,##0%";\r
59566 I18nMsg.formatTimeFull="h:mm:ss a z";\r
59567 I18nMsg.formatTimeLong="h:mm:ss a z";\r
59568 I18nMsg.formatTimeMedium="h:mm:ss a";\r
59569 I18nMsg.formatTimeShort="h:mm a";\r
59570 I18nMsg.monthAprLong="April";\r
59571 I18nMsg.monthAprMedium="Apr";\r
59572 I18nMsg.monthAugLong="August";\r
59573 I18nMsg.monthAugMedium="Aug";\r
59574 I18nMsg.monthDecLong="December";\r
59575 I18nMsg.monthDecMedium="Dec";\r
59576 I18nMsg.monthFebLong="February";\r
59577 I18nMsg.monthFebMedium="Feb";\r
59578 I18nMsg.monthJanLong="January";\r
59579 I18nMsg.monthJanMedium="Jan";\r
59580 I18nMsg.monthJulLong="July";\r
59581 I18nMsg.monthJulMedium="Jul";\r
59582 I18nMsg.monthJunLong="June";\r
59583 I18nMsg.monthJunMedium="Jun";\r
59584 I18nMsg.monthMarLong="March";\r
59585 I18nMsg.monthMarMedium="Mar";\r
59586 I18nMsg.monthMayLong="May";\r
59587 I18nMsg.monthMayMedium="May";\r
59588 I18nMsg.monthNovLong="November";\r
59589 I18nMsg.monthNovMedium="Nov";\r
59590 I18nMsg.monthOctLong="October";\r
59591 I18nMsg.monthOctMedium="Oct";\r
59592 I18nMsg.monthSepLong="September";\r
59593 I18nMsg.monthSepMedium="Sep";\r
59594 I18nMsg.numberInfinity="\u221e";\r
59595 I18nMsg.numberNaN="\ufffd";\r
59596 I18nMsg.numberSeparatorDecimal=".";\r
59597 I18nMsg.numberSeparatorGrouping=",";\r
59598 I18nMsg.numberSeparatorMoneyDecimal=".";\r
59599 I18nMsg.numberSignMinus="-";\r
59600 I18nMsg.numberSignPerMill="\u2030";\r
59601 I18nMsg.numberSignPercent="%";\r
59602 I18nMsg.numberZero="0";\r
59603 I18nMsg.periodAm="AM";\r
59604 I18nMsg.periodPm="PM";\r
59605 I18nMsg.weekdayFriLong="Friday";\r
59606 I18nMsg.weekdayFriMedium="Fri";\r
59607 I18nMsg.weekdayMonLong="Monday";\r
59608 I18nMsg.weekdayMonMedium="Mon";\r
59609 I18nMsg.weekdaySatLong="Saturday";\r
59610 I18nMsg.weekdaySatMedium="Sat";\r
59611 I18nMsg.weekdaySunLong="Sunday";\r
59612 I18nMsg.weekdaySunMedium="Sun";\r
59613 I18nMsg.weekdayThuLong="Thursday";\r
59614 I18nMsg.weekdayThuMedium="Thu";\r
59615 I18nMsg.weekdayTueLong="Tuesday";\r
59616 I18nMsg.weekdayTueMedium="Tue";\r
59617 I18nMsg.weekdayWedLong="Wednesday";\r
59618 I18nMsg.weekdayWedMedium="Wed";\r
59619 if(!window.AjxMsg){AjxMsg={}\r
59620 }AjxMsg["Africa/Algiers"]="GMT +01:00 West Central Africa";\r
59621 AjxMsg["Africa/Cairo"]="GMT +02:00 Egypt";\r
59622 AjxMsg["Africa/Casablanca"]="GMT +00:00 Casablanca";\r
59623 AjxMsg["Africa/Harare"]="GMT +02:00 Harare / Pretoria";\r
59624 AjxMsg["Africa/Monrovia"]="GMT +00:00 Monrovia";\r
59625 AjxMsg["Africa/Nairobi"]="GMT +03:00 Nairobi";\r
59626 AjxMsg["Africa/Windhoek"]="GMT +01:00 Namibia";\r
59627 AjxMsg["America/Anchorage"]="GMT -09:00 Alaska";\r
59628 AjxMsg["America/Argentina/Buenos_Aires"]="GMT -03:00 Argentina";\r
59629 AjxMsg["America/Bogota"]="GMT -05:00 Colombia";\r
59630 AjxMsg["America/Caracas"]="GMT -04:30 Caracas";\r
59631 AjxMsg["America/Chicago"]="GMT -06:00 US/Canada Central";\r
59632 AjxMsg["America/Chihuahua"]="GMT -07:00 Chihuahua / La Paz / Mazatlan";\r
59633 AjxMsg["America/Denver"]="GMT -07:00 US/Canada Mountain";\r
59634 AjxMsg["America/Godthab"]="GMT -03:00 Greenland";\r
59635 AjxMsg["America/Guatemala"]="GMT -06:00 Central America";\r
59636 AjxMsg["America/Guyana"]="GMT -04:00 Georgetown";\r
59637 AjxMsg["America/Halifax"]="GMT -04:00 Atlantic Time (Canada)";\r
59638 AjxMsg["America/Indiana/Indianapolis"]="GMT -05:00 Indiana (East)";\r
59639 AjxMsg["America/La_Paz"]="GMT -04:00 La Paz";\r
59640 AjxMsg["America/Los_Angeles"]="GMT -08:00 US/Canada Pacific";\r
59641 AjxMsg["America/Manaus"]="GMT -04:00 Manaus";\r
59642 AjxMsg["America/Mexico_City"]="GMT -06:00 Guadalajara / Mexico City / Monterrey";\r
59643 AjxMsg["America/Montevideo"]="GMT -03:00 Montevideo";\r
59644 AjxMsg["America/New_York"]="GMT -05:00 US/Canada Eastern";\r
59645 AjxMsg["America/Phoenix"]="GMT -07:00 Arizona";\r
59646 AjxMsg["America/Regina"]="GMT -06:00 Saskatchewan";\r
59647 AjxMsg["America/Santiago"]="GMT -04:00 Pacific South America";\r
59648 AjxMsg["America/Sao_Paulo"]="GMT -03:00 Brasilia";\r
59649 AjxMsg["America/St_Johns"]="GMT -03:30 Newfoundland";\r
59650 AjxMsg["America/Tijuana"]="GMT -08:00 Tijuana / Baja California";\r
59651 AjxMsg["Asia/Amman"]="GMT +02:00 Jordan";\r
59652 AjxMsg["Asia/Baghdad"]="GMT +03:00 Iraq";\r
59653 AjxMsg["Asia/Baku"]="GMT +04:00 Baku";\r
59654 AjxMsg["Asia/Bangkok"]="GMT +07:00 Bangkok, Hanoi, Jakarta";\r
59655 AjxMsg["Asia/Beirut"]="GMT +02:00 Beirut";\r
59656 AjxMsg["Asia/Colombo"]="GMT +05:30 Sri Jayawardenepura";\r
59657 AjxMsg["Asia/Dhaka"]="GMT +06:00 Astana / Dhaka";\r
59658 AjxMsg["Asia/Hong_Kong"]="GMT +08:00 Beijing / Chongqing / Hong Kong / Urumqi";\r
59659 AjxMsg["Asia/Irkutsk"]="GMT +08:00 Irkutsk, Ulaan Bataar";\r
59660 AjxMsg["Asia/Jerusalem"]="GMT +02:00 Jerusalem";\r
59661 AjxMsg["Asia/Kabul"]="GMT +04:30 Kabul";\r
59662 AjxMsg["Asia/Karachi"]="GMT +05:00 Islamabad / Karachi";\r
59663 AjxMsg["Asia/Katmandu"]="GMT +05:45 Kathmandu";\r
59664 AjxMsg["Asia/Kolkata"]="GMT +05:30 Chennai, Kolkata, Mumbai, New Delhi";\r
59665 AjxMsg["Asia/Krasnoyarsk"]="GMT +07:00 Krasnoyarsk";\r
59666 AjxMsg["Asia/Kuala_Lumpur"]="GMT +08:00 Kuala Lumpur / Singapore";\r
59667 AjxMsg["Asia/Kuwait"]="GMT +03:00 Kuwait / Riyadh";\r
59668 AjxMsg["Asia/Magadan"]="GMT +11:00 Magadan, Solomon Is., New Caledonia";\r
59669 AjxMsg["Asia/Muscat"]="GMT +04:00 Abu Dhabi / Muscat";\r
59670 AjxMsg["Asia/Novosibirsk"]="GMT +06:00 Almaty, Novosibirsk";\r
59671 AjxMsg["Asia/Rangoon"]="GMT +06:30 Rangoon";\r
59672 AjxMsg["Asia/Seoul"]="GMT +09:00 Korea";\r
59673 AjxMsg["Asia/Taipei"]="GMT +08:00 China, Taiwan";\r
59674 AjxMsg["Asia/Tashkent"]="GMT +05:00 Tashkent";\r
59675 AjxMsg["Asia/Tbilisi"]="GMT +04:00 Tbilisi";\r
59676 AjxMsg["Asia/Tehran"]="GMT +03:30 Tehran";\r
59677 AjxMsg["Asia/Tokyo"]="GMT +09:00 Japan";\r
59678 AjxMsg["Asia/Vladivostok"]="GMT +10:00 Vladivostok";\r
59679 AjxMsg["Asia/Yakutsk"]="GMT +09:00 Yakutsk";\r
59680 AjxMsg["Asia/Yekaterinburg"]="GMT +05:00 Yekaterinburg";\r
59681 AjxMsg["Asia/Yerevan"]="GMT +04:00 Yerevan";\r
59682 AjxMsg["Atlantic/Azores"]="GMT -01:00 Azores";\r
59683 AjxMsg["Atlantic/Cape_Verde"]="GMT -01:00 Cape Verde Is.";\r
59684 AjxMsg["Atlantic/South_Georgia"]="GMT -02:00 Mid-Atlantic";\r
59685 AjxMsg["Australia/Adelaide"]="GMT +09:30 Adelaide (CT)";\r
59686 AjxMsg["Australia/Brisbane"]="GMT +10:00 Brisbane";\r
59687 AjxMsg["Australia/Darwin"]="GMT +09:30 Darwin";\r
59688 AjxMsg["Australia/Hobart"]="GMT +10:00 Hobart";\r
59689 AjxMsg["Australia/Perth"]="GMT +08:00 Perth";\r
59690 AjxMsg["Australia/Sydney"]="GMT +10:00 Canberra / Melbourne / Sydney";\r
59691 AjxMsg["Etc/GMT+12"]="GMT -12:00 Dateline";\r
59692 AjxMsg["Europe/Athens"]="GMT +02:00 Athens, Beirut, Bucharest, Istanbul";\r
59693 AjxMsg["Europe/Belgrade"]="GMT +01:00 Belgrade / Bratislava / Budapest / Ljubljana / Prague";\r
59694 AjxMsg["Europe/Berlin"]="GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna";\r
59695 AjxMsg["Europe/Brussels"]="GMT +01:00 Brussels / Copenhagen / Madrid / Paris";\r
59696 AjxMsg["Europe/Helsinki"]="GMT +02:00 Helsinki / Kyiv / Riga / Sofia / Tallinn / Vilnius";\r
59697 AjxMsg["Europe/London"]="GMT +00:00 GMT Britain, Ireland, Portugal";\r
59698 AjxMsg["Europe/Minsk"]="GMT +02:00 Minsk";\r
59699 AjxMsg["Europe/Moscow"]="GMT +03:00 Moscow, St. Petersburg, Volgograd";\r
59700 AjxMsg["Europe/Warsaw"]="GMT +01:00 Sarajevo / Skopje / Warsaw / Zagreb";\r
59701 AjxMsg["Pacific/Auckland"]="GMT +12:00 New Zealand";\r
59702 AjxMsg["Pacific/Fiji"]="GMT +12:00 Fiji";\r
59703 AjxMsg["Pacific/Guam"]="GMT +10:00 Guam / Port Moresby";\r
59704 AjxMsg["Pacific/Honolulu"]="GMT -10:00 Hawaii";\r
59705 AjxMsg["Pacific/Midway"]="GMT -11:00 Midway Island / Samoa";\r
59706 AjxMsg["Pacific/Tongatapu"]="GMT +13:00 Nuku'alofa";\r
59707 AjxMsg.XfnumberLessThanMin="Value must be greater than or equal to {0}.";\r
59708 AjxMsg._close="Close";\r
59709 AjxMsg._finish="Finish";\r
59710 AjxMsg._next="Next";\r
59711 AjxMsg._prev="Previous";\r
59712 AjxMsg.add="Add";\r
59713 AjxMsg.addAll="Add All";\r
59714 AjxMsg.ago="ago";\r
59715 AjxMsg["calc.dayname.friday"]="fri|friday";\r
59716 AjxMsg["calc.dayname.monday"]="mon|monday";\r
59717 AjxMsg["calc.dayname.saturday"]="sat|saturday";\r
59718 AjxMsg["calc.dayname.sunday"]="sun|sunday";\r
59719 AjxMsg["calc.dayname.thursday"]="thu|thur|thurs|thursday";\r
59720 AjxMsg["calc.dayname.tuesday"]="tue|tues|tuesday";\r
59721 AjxMsg["calc.dayname.wednesday"]="wed|wednesday";\r
59722 AjxMsg["calc.monthname.april"]="apr|april";\r
59723 AjxMsg["calc.monthname.august"]="aug|august";\r
59724 AjxMsg["calc.monthname.december"]="dec|december";\r
59725 AjxMsg["calc.monthname.february"]="feb|february";\r
59726 AjxMsg["calc.monthname.january"]="jan|january";\r
59727 AjxMsg["calc.monthname.july"]="jul|july";\r
59728 AjxMsg["calc.monthname.june"]="jun|june";\r
59729 AjxMsg["calc.monthname.march"]="mar|march";\r
59730 AjxMsg["calc.monthname.may"]="may";\r
59731 AjxMsg["calc.monthname.november"]="nov|november";\r
59732 AjxMsg["calc.monthname.october"]="oct|october";\r
59733 AjxMsg["calc.monthname.september"]="sep|september";\r
59734 AjxMsg["calc.ordinal.fifth"]="5th|fifth";\r
59735 AjxMsg["calc.ordinal.first"]="1st|first";\r
59736 AjxMsg["calc.ordinal.fourth"]="4th|fourth";\r
59737 AjxMsg["calc.ordinal.last"]="last";\r
59738 AjxMsg["calc.ordinal.second"]="2nd|second";\r
59739 AjxMsg["calc.ordinal.third"]="3rd|third";\r
59740 AjxMsg.calendarWeekTitle="W";\r
59741 AjxMsg.cancel="Cancel";\r
59742 AjxMsg.cancelRequest="Cancel Request";\r
59743 AjxMsg.confirmTitle="Confirmation";\r
59744 AjxMsg.criticalMsg="Critical";\r
59745 AjxMsg.dateParsing2DigitStartYear="1936";\r
59746 AjxMsg.day="day";\r
59747 AjxMsg.days="days";\r
59748 AjxMsg.detail="Detail";\r
59749 AjxMsg.didNotMatchChoice="Value '{0}' did not match any values for this type.";\r
59750 AjxMsg.dismiss="Dismiss";\r
59751 AjxMsg["fontFamilyBase1.css"]="arial, helvetica, sans-serif";\r
59752 AjxMsg["fontFamilyBase1.display"]="Arial";\r
59753 AjxMsg["fontFamilyBase10.css"]="###";\r
59754 AjxMsg["fontFamilyBase10.display"]="###";\r
59755 AjxMsg["fontFamilyBase2.css"]="bookman old style, new york, times, serif";\r
59756 AjxMsg["fontFamilyBase2.display"]="Bookman Old Style";\r
59757 AjxMsg["fontFamilyBase3.css"]="Courier New, courier, monaco, monospace, sans-serif";\r
59758 AjxMsg["fontFamilyBase3.display"]="Courier New";\r
59759 AjxMsg["fontFamilyBase4.css"]="garamond, new york, times, serif";\r
59760 AjxMsg["fontFamilyBase4.display"]="Garamond";\r
59761 AjxMsg["fontFamilyBase5.css"]="lucida console, sans-serif";\r
59762 AjxMsg["fontFamilyBase5.display"]="Lucida Console";\r
59763 AjxMsg["fontFamilyBase6.css"]="symbol";\r
59764 AjxMsg["fontFamilyBase6.display"]="Symbol";\r
59765 AjxMsg["fontFamilyBase7.css"]="tahoma, new york, times, serif";\r
59766 AjxMsg["fontFamilyBase7.display"]="Tahoma";\r
59767 AjxMsg["fontFamilyBase8.css"]="times new roman, new york, times, serif";\r
59768 AjxMsg["fontFamilyBase8.display"]="Times New Roman";\r
59769 AjxMsg["fontFamilyBase9.css"]="verdana, helvetica, sans-serif";\r
59770 AjxMsg["fontFamilyBase9.display"]="Verdana";\r
59771 AjxMsg["fontFamilyIntl1.css"]="###";\r
59772 AjxMsg["fontFamilyIntl1.display"]="###";\r
59773 AjxMsg["fontFamilyIntl10.css"]="###";\r
59774 AjxMsg["fontFamilyIntl10.display"]="###";\r
59775 AjxMsg["fontFamilyIntl2.css"]="###";\r
59776 AjxMsg["fontFamilyIntl2.display"]="###";\r
59777 AjxMsg["fontFamilyIntl3.css"]="###";\r
59778 AjxMsg["fontFamilyIntl3.display"]="###";\r
59779 AjxMsg["fontFamilyIntl4.css"]="###";\r
59780 AjxMsg["fontFamilyIntl4.display"]="###";\r
59781 AjxMsg["fontFamilyIntl5.css"]="###";\r
59782 AjxMsg["fontFamilyIntl5.display"]="###";\r
59783 AjxMsg["fontFamilyIntl6.css"]="###";\r
59784 AjxMsg["fontFamilyIntl6.display"]="###";\r
59785 AjxMsg["fontFamilyIntl7.css"]="###";\r
59786 AjxMsg["fontFamilyIntl7.display"]="###";\r
59787 AjxMsg["fontFamilyIntl8.css"]="###";\r
59788 AjxMsg["fontFamilyIntl8.display"]="###";\r
59789 AjxMsg["fontFamilyIntl9.css"]="###";\r
59790 AjxMsg["fontFamilyIntl9.display"]="###";\r
59791 AjxMsg.formatCalDate="EEE, MMM d";\r
59792 AjxMsg.formatCalDateFull="EEEE, MMMM d, yyyy";\r
59793 AjxMsg.formatCalDateLong="EEEE, MMMM d";\r
59794 AjxMsg.formatCalDay="M/d ";\r
59795 AjxMsg.formatCalHour="{0,choice,0#Midnight|1#{1,time,h a}|12#Noon|13#{1,time,h a}|24#Midnight}";\r
59796 AjxMsg.formatCalMonth="MMMM yyyy";\r
59797 AjxMsg.formatDateMediumNoYear="MMM dd ";\r
59798 AjxMsg.formatShortCalMonth="MMM yyyy";\r
59799 AjxMsg.formatSizeAndUnits="{0} {1}";\r
59800 AjxMsg.formatWordyDate="EEE, M/d/yy, h:mm a";\r
59801 AjxMsg.formatWordyDateToday="'Today,' h:mm a";\r
59802 AjxMsg.formatWordyDateYesterday="'Yesterday,' h:mm a";\r
59803 AjxMsg.hour="hour";\r
59804 AjxMsg.hours="hours";\r
59805 AjxMsg.infoMsg="Informational";\r
59806 AjxMsg.invalidDateString='Date value must be entered in the form: MM/DD/YYYY or "today", "yesterday" or "tomorrow".';\r
59807 AjxMsg.invalidDatetimeString="Date format not understood.";\r
59808 AjxMsg.invalidEmailAddr="Value is not a valid email address.";\r
59809 AjxMsg.invalidTimeString="Time value must be entered in the form: HH:MM[:SS] [AM|PM]";\r
59810 AjxMsg.listSeparator=", ";\r
59811 AjxMsg.listSeparatorLast=" and ";\r
59812 AjxMsg.loading="Loading...";\r
59813 AjxMsg.minute="minute";\r
59814 AjxMsg.minutes="minutes";\r
59815 AjxMsg.month="month";\r
59816 AjxMsg.monthAprShort="A";\r
59817 AjxMsg.monthAugShort="A";\r
59818 AjxMsg.monthDecShort="D";\r
59819 AjxMsg.monthFebShort="F";\r
59820 AjxMsg.monthJanShort="J";\r
59821 AjxMsg.monthJulShort="J";\r
59822 AjxMsg.monthJunShort="J";\r
59823 AjxMsg.monthMarShort="M";\r
59824 AjxMsg.monthMayShort="M";\r
59825 AjxMsg.monthNovShort="N";\r
59826 AjxMsg.monthOctShort="O";\r
59827 AjxMsg.monthSepShort="S";\r
59828 AjxMsg.months="months";\r
59829 AjxMsg.no="No";\r
59830 AjxMsg.noResults="No results found.";\r
59831 AjxMsg.notANumber="Value must be a number.";\r
59832 AjxMsg.notAString="Value must be a text string.";\r
59833 AjxMsg.notAnInteger="Value must be an integer.";\r
59834 AjxMsg.numberFractionExceeded="Fractional digits exceeds total of {0}.";\r
59835 AjxMsg.numberLessThanEqualMin="Value must be greater than {0}.";\r
59836 AjxMsg.numberLessThanMin="Value must be greater than or equal to {0}.";\r
59837 AjxMsg.numberMoreThanEqualMax="Value must be less than {0}.";\r
59838 AjxMsg.numberMoreThanMax="Value must be less than or equal to {0}.";\r
59839 AjxMsg.numberMustBeNon0Percent="Value must be a percentage between 1 and 100";\r
59840 AjxMsg.numberTotalExceeded="Whole digits exceeds total of {0}.";\r
59841 AjxMsg.ok="OK";\r
59842 AjxMsg.percentageString="{0}%";\r
59843 AjxMsg.remove="Remove";\r
59844 AjxMsg.removeAll="Remove All";\r
59845 AjxMsg.second="second";\r
59846 AjxMsg.seconds="seconds";\r
59847 AjxMsg.select="Select";\r
59848 AjxMsg.setColor="Set";\r
59849 AjxMsg.showPassword="Show password";\r
59850 AjxMsg.sizeBytes="B";\r
59851 AjxMsg.sizeGigaBytes="GB";\r
59852 AjxMsg.sizeKiloBytes="KB";\r
59853 AjxMsg.sizeMegaBytes="MB";\r
59854 AjxMsg.stringLenWrong="Value must be exactly {0} characters long.";\r
59855 AjxMsg.stringMismatch="Value did not match valid values.";\r
59856 AjxMsg.stringTooLong="Value must be no more than {0} characters long.";\r
59857 AjxMsg.stringTooShort="Value must be at least {0} characters long.";\r
59858 AjxMsg["timezoneNameAuto-DetectedLong"]="Auto-Detected";\r
59859 AjxMsg["timezoneNameAuto-DetectedShort"]="Auto";\r
59860 AjxMsg.today="today";\r
59861 AjxMsg.tomorrow="tomorrow";\r
59862 AjxMsg.valueIsRequired="Value is required";\r
59863 AjxMsg.warningMsg="Warning";\r
59864 AjxMsg.week="week";\r
59865 AjxMsg.weekdayFriShort="F";\r
59866 AjxMsg.weekdayMonShort="M";\r
59867 AjxMsg.weekdaySatShort="S";\r
59868 AjxMsg.weekdaySunShort="S";\r
59869 AjxMsg.weekdayThuShort="T";\r
59870 AjxMsg.weekdayTueShort="T";\r
59871 AjxMsg.weekdayWedShort="W";\r
59872 AjxMsg.weeks="weeks";\r
59873 AjxMsg.workInProgress="Work In Progress";\r
59874 AjxMsg.xFnumberMoreThanMax="Value must be less than or equal to {0}.";\r
59875 AjxMsg.xformDateTimeFormat="{0,date} at {0,time}";\r
59876 AjxMsg.xformFontColor="Font Color";\r
59877 AjxMsg.xformRepeatAdd="+";\r
59878 AjxMsg.xformRepeatRemove="-";\r
59879 AjxMsg.year="year";\r
59880 AjxMsg.years="years";\r
59881 AjxMsg.yes="Yes";\r
59882 AjxMsg.yesterday="yesterday";\r
59883 if(!window.ZMsg){ZMsg={}\r
59884 }ZMsg.BAD_JSON_RESPONSE="A network error has occurred.";\r
59885 ZMsg.CSFE_SVC_ERROR="A network service error has occurred.";\r
59886 ZMsg.EMPTY_RESPONSE="Cannot connect to server.";\r
59887 ZMsg.NETWORK_ERROR="A network error has occurred.";\r
59888 ZMsg.SOAP_ERROR="A network error has occurred.";\r
59889 ZMsg["account.ACCT_NO_SUCH_TAG"]="No such tag exists.";\r
59890 ZMsg["account.AUTH_FAILED"]="The username or password is incorrect. Verify that CAPS LOCK is not on, and then retype the current username and password.";\r
59891 ZMsg["account.CHANGE_PASSWORD"]="Your password is no longer valid. Please choose a new password.";\r
59892 ZMsg["account.INVALID_PASSWORD"]="You have entered an invalid password.";\r
59893 ZMsg["account.INVALID_PREF_NAME"]="Invalid preference name.";\r
59894 ZMsg["account.INVALID_PREF_VALUE"]="Invalid preference value.";\r
59895 ZMsg["account.MAINTENANCE_MODE"]="This account is currently in maintenance mode.";\r
59896 ZMsg["account.NO_SUCH_ACCOUNT"]="No such account exists.";\r
59897 ZMsg["account.NO_SUCH_SAVED_SEARCH"]="No such saved search exists.";\r
59898 ZMsg["account.PASSWORD_CHANGE_TOO_SOON"]="Password cannot be changed too soon.";\r
59899 ZMsg["account.PASSWORD_LOCKED"]="Password locked. User not allowed to change password. Please contact your System Administrator.";\r
59900 ZMsg["account.PASSWORD_RECENTLY_USED"]="The password you submitted has recently been used. Please choose a different password.";\r
59901 ZMsg["account.TOO_MANY_IDENTITIES"]="The identity could not be created because you have exceeded your identity quota.";\r
59902 ZMsg.errorEmptyResponse="Received empty response from server";\r
59903 ZMsg.errorMaintenanceMode="The account is in maintenance mode";\r
59904 ZMsg["formatter.INVALID_FORMAT"]='Invalid file format for file "{0}".';\r
59905 ZMsg["formatter.INVALID_TYPE"]='Folder "{1}" cannot contain items of type "{0}".';\r
59906 ZMsg["formatter.MISMATCHED_META"]='Meta information for item "{0}" does not match content.';\r
59907 ZMsg["formatter.MISMATCHED_SIZE"]='Size of ignored item "{0}" does not match.';\r
59908 ZMsg["formatter.MISMATCHED_TYPE"]='Cannot overwrite item "{0}" of different type.';\r
59909 ZMsg["formatter.MISSING_BLOB"]='Content for item "{0}" is missing.';\r
59910 ZMsg["formatter.MISSING_META"]='Meta information for item "{0}" is missing.';\r
59911 ZMsg["formatter.MISSING_VCARD_FIELDS"]='Contact item "{0}" does not contain any fields.';\r
59912 ZMsg["formatter.UNKNOWN_ERROR"]='Unknown error for item "{0}": {1}';\r
59913 ZMsg["im.Banned"]="You have been banned from the room.";\r
59914 ZMsg["im.INVALID_ADDRESS"]="The address is invalid.";\r
59915 ZMsg["im.MaxUsers"]="The room has reached capacity.";\r
59916 ZMsg["im.MustUseReservedRoomnick"]="You must use a reserved nickname.";\r
59917 ZMsg["im.NicknameConflict"]="Someone else is already using your nickname.";\r
59918 ZMsg["im.NoSuchRoom"]="No such room.";\r
59919 ZMsg["im.NotAMember"]="The room is invite-only, and you aren't a member.";\r
59920 ZMsg["im.NotAllowed"]="You are not allowed to create the room.";\r
59921 ZMsg["im.PasswordRequired"]="A password is required to enter the room.";\r
59922 ZMsg["im.Unknown"]="Unknown error.";\r
59923 ZMsg["im.forbidden"]="Forbidden.";\r
59924 ZMsg["im.internal_server_error"]="An internal server error occurred.";\r
59925 ZMsg["im.item_not_found"]="The user was not found. The message may not have been sent.";\r
59926 ZMsg["im.jid_malformed"]="The address is invalid.";\r
59927 ZMsg["im.not_acceptable"]="The message is not acceptable.";\r
59928 ZMsg["im.not_allowed"]="You are not allowed to send a message to the intended recipient.";\r
59929 ZMsg["im.payment_required"]="Payment required.";\r
59930 ZMsg["im.recipient_unavailable"]="The recipient is unavailable.";\r
59931 ZMsg["im.redirect"]="The user is at a different address.";\r
59932 ZMsg["im.remote_server_not_found"]="The remote server could not be found.";\r
59933 ZMsg["im.remote_server_timeout"]="The connection to the remote server timed out.";\r
59934 ZMsg["im.resource_constraint"]="The system is busy.";\r
59935 ZMsg["im.service_unavailable"]="Messages are not accepted by the service.";\r
59936 ZMsg["im.undefined_condition"]="An undefined error occurred. ";\r
59937 ZMsg["im.unknown_error"]="An unknown error occurred.";\r
59938 ZMsg["mail.ALREADY_EXISTS"]="An object with that name already exists.";\r
59939 ZMsg["mail.INVALID_NAME"]='Sorry, "{0}" is not a valid name. It contains at least one invalid character.';\r
59940 ZMsg["mail.MAIL_UNABLE_TO_IMPORT_APPOINTMENTS"]="Unable to import. The chosen file may be invalid.";\r
59941 ZMsg["mail.MAIL_UNABLE_TO_IMPORT_CONTACTS"]="Unable to import. The chosen file may be invalid.";\r
59942 ZMsg["mail.MAINTENANCE"]="This account is currently in maintenance mode.";\r
59943 ZMsg["mail.MESSAGE_TOO_BIG"]="This message cannot be sent because it has exceeded the maximum allowed size.";\r
59944 ZMsg["mail.MODIFY_CONFLICT"]="Item version number conflict. Another version was added between edit and save.";\r
59945 ZMsg["mail.NO_SUCH_CONV"]="No such conversation exists.";\r
59946 ZMsg["mail.NO_SUCH_FOLDER"]="No such folder exists.";\r
59947 ZMsg["mail.NO_SUCH_ITEM"]='Item "{0}" does not exist.';\r
59948 ZMsg["mail.NO_SUCH_MSG"]="No such message exists.";\r
59949 ZMsg["mail.NO_SUCH_PART"]="No such message part exists.";\r
59950 ZMsg["mail.NO_SUCH_TAG"]="No such tag exists.";\r
59951 ZMsg["mail.QUERY_PARSE_ERROR"]="Unable to parse the search query.";\r
59952 ZMsg["mail.QUOTA_EXCEEDED"]="Your message could not be sent because you have exceeded your mail quota.";\r
59953 ZMsg["mail.SEND_ABORTED_ADDRESS_FAILURE"]="Could not send message due to invalid address(es)";\r
59954 ZMsg["mail.SEND_FAILURE"]="Could not send message: {0}";\r
59955 ZMsg["mail.TOO_MANY_CONTACTS"]="Contact could not be created because you have exceeded your contact quota.";\r
59956 ZMsg["mail.TOO_MANY_QUERY_TERMS_EXPANDED"]="Please be more specific in your search criteria.";\r
59957 ZMsg["mail.TOO_MANY_TAGS"]="A tag could not be created because you have exceeded the limit.";\r
59958 ZMsg["offline.ONLINE_ONLY_OP"]="You must be online to use this feature. Please check your network connection and try again.";\r
59959 ZMsg["service.ALREADY_IN_PROGRESS"]="Operation already in progress.";\r
59960 ZMsg["service.AUTH_EXPIRED"]="Your session has expired. Please login again.";\r
59961 ZMsg["service.AUTH_REQUIRED"]="Authentication Required";\r
59962 ZMsg["service.FAILURE"]="A network service error has occurred.";\r
59963 ZMsg["service.INTERRUPTED"]="The operation has been interrupted";\r
59964 ZMsg["service.INVALID_REQUEST"]="An invalid request was made.";\r
59965 ZMsg["service.NON_READONLY_OPERATION_DENIED"]="The server is in read-only mode.";\r
59966 ZMsg["service.NOT_IN_PROGRESS"]="Operation not in progress.";\r
59967 ZMsg["service.NO_SPELL_CHECK_URL"]="No spell check server defined.";\r
59968 ZMsg["service.PARSE_ERROR"]="A parsing error has occurred.";\r
59969 ZMsg["service.PERM_DENIED"]="Permission denied.";\r
59970 ZMsg["service.PROXY_ERROR"]="Proxy error.";\r
59971 ZMsg["service.RESOURCE_UNREACHABLE"]="Resource unreachable.";\r
59972 ZMsg["service.TEMPORARILY_UNAVAILABLE"]="Service temporarily unavailable.";\r
59973 ZMsg["service.TOO_MANY_HOPS"]="Too many hops between servers.";\r
59974 ZMsg["service.UNKNOWN_DOCUMENT"]="Server error (unknown command sent to server).";\r
59975 ZMsg["service.WRONG_HOST"]="Request was sent to the wrong server.";\r
59976 ZMsg.unknownError="An unknown error ({0}) has occurred.";\r
59977 ZMsg["voice.UNABLE_TO_DELETE_VOICEMAIL"]="Unable to delete voice mail.";\r
59978 ZMsg["voice.UNABLE_TO_EMPTY_VOICEMAIL_TRASH"]="Unable to empty voice mail trash.";\r
59979 ZMsg["voice.UNABLE_TO_FORWARD_VOICEMAIL"]="Your email could not be forwarded at this time. Please try again later.";\r
59980 ZMsg["voice.UNABLE_TO_MODIFY_CALL_FEATURES"]="We are temporarily unable to forward calls. We apologize for this inconvenience.";\r
59981 ZMsg["voice.UNABLE_TO_MODIFY_VOICEMAIL_PREFS"]="An error occurred while attempting to update your voice mail preferences. Please try again.";\r
59982 ZMsg["voice.UNABLE_TO_MODIFY_VOICEMAIL_STATUS"]="Unable to modify voice mail status. ";\r
59983 ZMsg["voice.UNABLE_TO_RETRIEVE_CALLLOGS"]="We are currently unable to display call records. We apologize for this inconvenience.";\r
59984 ZMsg["voice.UNABLE_TO_RETRIEVE_CALL_FEATURES"]="Unable to retrieve call features.";\r
59985 ZMsg["voice.UNABLE_TO_RETRIEVE_PROFILE_SUMMARY"]="The system is currently unable to complete your request. We apologize for this inconvenience.";\r
59986 ZMsg["voice.UNABLE_TO_RETRIEVE_VOICEMAIL_CONTENT"]="Unable to retrieve voice mail content.";\r
59987 ZMsg["voice.UNABLE_TO_RETRIEVE_VOICEMAIL_FOLDER"]="We are temporarily unable to display voice mail records.";\r
59988 ZMsg["voice.UNABLE_TO_RETRIEVE_VOICEMAIL_PREFS"]="Unable to retrieve voice mail preferences.";\r
59989 ZMsg["voice.UNABLE_TO_RETRIEVE_VOICEMAIL_SUMMARY"]="Unable to retrieve voice mail summary.";\r
59990 ZMsg["voice.UNABLE_TO_UNDELETE_VOICEMAIL"]="Unable to undelete voice mail.";\r
59991 ZMsg["voice.UNABLE_TO_UPDATE_CALL_FEATURES"]="We are temporarily unable to forward calls. We apologize for this inconvenience.";\r
59992 ZMsg["zclient.CLIENT_ERROR"]="A network service error has occurred (zclient).";\r
59993 ZMsg["zclient.IO_ERROR"]="A network service error has occurred (zclient/io).";\r
59994 ZMsg["ztaglib.TAG_EXCEPTION"]="A client error occurred. Please try again.";\r
59995 if(!window.ZmMsg){ZmMsg={}\r
59996 }ZmMsg.AB_ADDR_HOME="Home Address";\r
59997 ZmMsg.AB_ADDR_OTHER="Other Address";\r
59998 ZmMsg.AB_ADDR_WORK="Work Address";\r
59999 ZmMsg.AB_ADD_CONTACT="Add To Contacts";\r
60000 ZmMsg.AB_EDIT_CONTACT="Edit Contact";\r
60001 ZmMsg.AB_EDIT_GROUP="Edit Group";\r
60002 ZmMsg.AB_FIELD_URL="Web Page";\r
60003 ZmMsg.AB_FIELD_anniversary="Anniversary";\r
60004 ZmMsg.AB_FIELD_assistantPhone="Assistant Phone";\r
60005 ZmMsg.AB_FIELD_attachment="Attachment";\r
60006 ZmMsg.AB_FIELD_birthday="Birthday";\r
60007 ZmMsg.AB_FIELD_callbackPhone="Callback";\r
60008 ZmMsg.AB_FIELD_carPhone="Car";\r
60009 ZmMsg.AB_FIELD_city="City";\r
60010 ZmMsg.AB_FIELD_company="Company";\r
60011 ZmMsg.AB_FIELD_companyPhone="Company Phone";\r
60012 ZmMsg.AB_FIELD_country="Country/Region";\r
60013 ZmMsg.AB_FIELD_custom="Custom";\r
60014 ZmMsg.AB_FIELD_department="Department";\r
60015 ZmMsg.AB_FIELD_email="Email";\r
60016 ZmMsg.AB_FIELD_email2="Email 2";\r
60017 ZmMsg.AB_FIELD_email3="Email 3";\r
60018 ZmMsg.AB_FIELD_firstName="First";\r
60019 ZmMsg.AB_FIELD_fullName="Full Name";\r
60020 ZmMsg.AB_FIELD_fullNameLabel="Full Name:";\r
60021 ZmMsg.AB_FIELD_homeCity="Home City";\r
60022 ZmMsg.AB_FIELD_homeCountry="Home Country/Region";\r
60023 ZmMsg.AB_FIELD_homeFax="Home Fax";\r
60024 ZmMsg.AB_FIELD_homePhone="Home Phone";\r
60025 ZmMsg.AB_FIELD_homePhone2="Home Phone 2";\r
60026 ZmMsg.AB_FIELD_homePostalCode="Home Postal Code";\r
60027 ZmMsg.AB_FIELD_homeState="Home State/Province";\r
60028 ZmMsg.AB_FIELD_homeStreet="Home Street";\r
60029 ZmMsg.AB_FIELD_homeURL="Home Web Page";\r
60030 ZmMsg.AB_FIELD_imAddress="IM Address";\r
60031 ZmMsg.AB_FIELD_imAddress1="IM Address";\r
60032 ZmMsg.AB_FIELD_imAddress2="IM Address 2";\r
60033 ZmMsg.AB_FIELD_imAddress3="IM Address 3";\r
60034 ZmMsg.AB_FIELD_image="Image";\r
60035 ZmMsg.AB_FIELD_jobTitle="Job Title";\r
60036 ZmMsg.AB_FIELD_lastName="Last";\r
60037 ZmMsg.AB_FIELD_maidenName="Maiden";\r
60038 ZmMsg.AB_FIELD_middleName="Middle";\r
60039 ZmMsg.AB_FIELD_mobilePhone="Mobile";\r
60040 ZmMsg.AB_FIELD_nickname="Nickname";\r
60041 ZmMsg.AB_FIELD_otherCity="Other City";\r
60042 ZmMsg.AB_FIELD_otherCountry="Other Country/Region";\r
60043 ZmMsg.AB_FIELD_otherFax="Other Fax";\r
60044 ZmMsg.AB_FIELD_otherPhone="Other Phone";\r
60045 ZmMsg.AB_FIELD_otherPostalCode="Other Postal Code";\r
60046 ZmMsg.AB_FIELD_otherState="Other State/Province";\r
60047 ZmMsg.AB_FIELD_otherStreet="Other Street";\r
60048 ZmMsg.AB_FIELD_otherURL="Other Web Page";\r
60049 ZmMsg.AB_FIELD_pager="Pager";\r
60050 ZmMsg.AB_FIELD_postalCode="Postal Code";\r
60051 ZmMsg.AB_FIELD_prefix="Prefix";\r
60052 ZmMsg.AB_FIELD_state="State/Province";\r
60053 ZmMsg.AB_FIELD_street="Street";\r
60054 ZmMsg.AB_FIELD_suffix="Suffix";\r
60055 ZmMsg.AB_FIELD_workAltPhone="Work Alternate";\r
60056 ZmMsg.AB_FIELD_workCity="Work City";\r
60057 ZmMsg.AB_FIELD_workCountry="Work Country/Region";\r
60058 ZmMsg.AB_FIELD_workFax="Work Fax";\r
60059 ZmMsg.AB_FIELD_workMobile="Work Mobile";\r
60060 ZmMsg.AB_FIELD_workPhone="Work Phone";\r
60061 ZmMsg.AB_FIELD_workPhone2="Work Phone 2";\r
60062 ZmMsg.AB_FIELD_workPostalCode="Work Postal Code";\r
60063 ZmMsg.AB_FIELD_workState="Work State/Province";\r
60064 ZmMsg.AB_FIELD_workStreet="Work Street";\r
60065 ZmMsg.AB_FIELD_workURL="Work Web Page";\r
60066 ZmMsg.AB_FILE_AS_company="Company";\r
60067 ZmMsg.AB_FILE_AS_companyFirstLast="Company (First Last)";\r
60068 ZmMsg.AB_FILE_AS_companyLastFirst="Company (Last, First)";\r
60069 ZmMsg.AB_FILE_AS_firstLast="First Last";\r
60070 ZmMsg.AB_FILE_AS_firstLastCompany="First Last (Company)";\r
60071 ZmMsg.AB_FILE_AS_lastFirst="Last, First";\r
60072 ZmMsg.AB_FILE_AS_lastFirstCompany="Last, First (Company)";\r
60073 ZmMsg.AB_HOME_URL="Home URL";\r
60074 ZmMsg.AB_MOVE_CONTACT="Move Contact";\r
60075 ZmMsg.AB_MOVE_CONTACTS="Move Contacts";\r
60076 ZmMsg.AB_OTHER_URL="Other URL";\r
60077 ZmMsg.AB_TAG_CONTACT="Tag Contact";\r
60078 ZmMsg.AB_TAG_CONTACTS="Tag Contacts";\r
60079 ZmMsg.AB_TAG_GROUP="Tag Group";\r
60080 ZmMsg.AB_WORK_URL="Work URL";\r
60081 ZmMsg.ALT_ERROR="Error";\r
60082 ZmMsg.ASST_APPT_HELP='The appointment assistant allows you to quickly create a new appointment without switching context from what you are currently doing.<br><br><b>Examples:</b><br><ul><li>lunch with Dave next friday 11am - 1pm<li>"Linux Conference" April 5th April 10th [San Francisco]</ul>';\r
60083 ZmMsg.ASST_APPT_location="[enclose location in brackets]";\r
60084 ZmMsg.ASST_APPT_notes="(enclose notes in parenthesis)";\r
60085 ZmMsg.ASST_APPT_subject='"enclose subject in quotes or just type"';\r
60086 ZmMsg.ASST_CALENDAR_HELP="The calendar assistant allows you to quickly go to a specific date and calender view.<br><br><b>Examples:</b><br><ul><li>August 8th<li>next friday<li>December 2009 month<li>Jan 5th, 2008 week</ul>";\r
60087 ZmMsg.ASST_CMD_APPOINTMENT="appointment";\r
60088 ZmMsg.ASST_CMD_CALENDAR="calendar";\r
60089 ZmMsg.ASST_CMD_CALL="call";\r
60090 ZmMsg.ASST_CMD_CONTACT="contact";\r
60091 ZmMsg.ASST_CMD_MAIL="mail";\r
60092 ZmMsg.ASST_CMD_SUM_APPOINTMENT="Create a new appointment";\r
60093 ZmMsg.ASST_CMD_SUM_CALENDAR="Go to a specific date in the calendar";\r
60094 ZmMsg.ASST_CMD_SUM_CONTACT="Create a new contact";\r
60095 ZmMsg.ASST_CMD_SUM_MAIL="Send an email message";\r
60096 ZmMsg.ASST_CMD_SUM_TASK="Create a new task";\r
60097 ZmMsg.ASST_CMD_TASK="task";\r
60098 ZmMsg.ASST_CONTACT_HELP="The contact assistant allows you to quickly create a new contact without switching context from what you are currently doing.<br><br><b>Examples:</b><br><ul><li>John Doe john@doe.com www.doe.com (123) 456-6789<li>l:Doe f:John e:john@doe.com hu: http://www.doe.com hf: (123) 456-6789<li>c:zimbra [1500 fashion island blvd; san mateo; ca; 94404]</ul><br><b>Available fields:</b><br><br>";\r
60099 ZmMsg.ASST_CONTACT_LONG_assistantPhone="assistantPhone";\r
60100 ZmMsg.ASST_CONTACT_LONG_callbackPhone="callbackPhone";\r
60101 ZmMsg.ASST_CONTACT_LONG_carPhone="carPhone";\r
60102 ZmMsg.ASST_CONTACT_LONG_company="company";\r
60103 ZmMsg.ASST_CONTACT_LONG_companyPhone="companyPhone";\r
60104 ZmMsg.ASST_CONTACT_LONG_email="email";\r
60105 ZmMsg.ASST_CONTACT_LONG_email2="email2";\r
60106 ZmMsg.ASST_CONTACT_LONG_email3="email3";\r
60107 ZmMsg.ASST_CONTACT_LONG_firstName="firstName";\r
60108 ZmMsg.ASST_CONTACT_LONG_homeAddress="homeAddress";\r
60109 ZmMsg.ASST_CONTACT_LONG_homeCity="homeCity";\r
60110 ZmMsg.ASST_CONTACT_LONG_homeCountry="homeCountry";\r
60111 ZmMsg.ASST_CONTACT_LONG_homeFax="homeFax";\r
60112 ZmMsg.ASST_CONTACT_LONG_homePhone="homePhone";\r
60113 ZmMsg.ASST_CONTACT_LONG_homePhone2="homePhone2";\r
60114 ZmMsg.ASST_CONTACT_LONG_homePostalCode="homePostalCode";\r
60115 ZmMsg.ASST_CONTACT_LONG_homeState="homeState";\r
60116 ZmMsg.ASST_CONTACT_LONG_homeStreet="homeStreet";\r
60117 ZmMsg.ASST_CONTACT_LONG_homeURL="homeURL";\r
60118 ZmMsg.ASST_CONTACT_LONG_jobTitle="jobTitle";\r
60119 ZmMsg.ASST_CONTACT_LONG_lastName="lastName";\r
60120 ZmMsg.ASST_CONTACT_LONG_middleName="middleName";\r
60121 ZmMsg.ASST_CONTACT_LONG_mobilePhone="mobilePhone";\r
60122 ZmMsg.ASST_CONTACT_LONG_notes="notes";\r
60123 ZmMsg.ASST_CONTACT_LONG_otherAddress="otherAddress";\r
60124 ZmMsg.ASST_CONTACT_LONG_otherCity="otherCity";\r
60125 ZmMsg.ASST_CONTACT_LONG_otherCountry="otherCountry";\r
60126 ZmMsg.ASST_CONTACT_LONG_otherFax="otherFax";\r
60127 ZmMsg.ASST_CONTACT_LONG_otherPhone="otherPhone";\r
60128 ZmMsg.ASST_CONTACT_LONG_otherPostalCode="otherPostalCode";\r
60129 ZmMsg.ASST_CONTACT_LONG_otherState="otherState";\r
60130 ZmMsg.ASST_CONTACT_LONG_otherStreet="otherStreet";\r
60131 ZmMsg.ASST_CONTACT_LONG_otherURL="otherURL";\r
60132 ZmMsg.ASST_CONTACT_LONG_pager="pager";\r
60133 ZmMsg.ASST_CONTACT_LONG_workAddress="workAddress";\r
60134 ZmMsg.ASST_CONTACT_LONG_workCity="workCity";\r
60135 ZmMsg.ASST_CONTACT_LONG_workCountry="workCountry";\r
60136 ZmMsg.ASST_CONTACT_LONG_workFax="workFax";\r
60137 ZmMsg.ASST_CONTACT_LONG_workPhone="workPhone";\r
60138 ZmMsg.ASST_CONTACT_LONG_workPhone2="workPhone2";\r
60139 ZmMsg.ASST_CONTACT_LONG_workPostalCode="workPostalCode";\r
60140 ZmMsg.ASST_CONTACT_LONG_workState="workState";\r
60141 ZmMsg.ASST_CONTACT_LONG_workStreet="workStreet";\r
60142 ZmMsg.ASST_CONTACT_LONG_workURL="workURL";\r
60143 ZmMsg.ASST_CONTACT_SHORT_assistantPhone="a";\r
60144 ZmMsg.ASST_CONTACT_SHORT_callbackPhone="cb";\r
60145 ZmMsg.ASST_CONTACT_SHORT_carPhone="ca";\r
60146 ZmMsg.ASST_CONTACT_SHORT_company="c";\r
60147 ZmMsg.ASST_CONTACT_SHORT_companyPhone="cp";\r
60148 ZmMsg.ASST_CONTACT_SHORT_email="e";\r
60149 ZmMsg.ASST_CONTACT_SHORT_email2="e2";\r
60150 ZmMsg.ASST_CONTACT_SHORT_email3="e3";\r
60151 ZmMsg.ASST_CONTACT_SHORT_firstName="fn";\r
60152 ZmMsg.ASST_CONTACT_SHORT_homeAddress="ha";\r
60153 ZmMsg.ASST_CONTACT_SHORT_homeCity="hc";\r
60154 ZmMsg.ASST_CONTACT_SHORT_homeCountry="co";\r
60155 ZmMsg.ASST_CONTACT_SHORT_homeFax="hf";\r
60156 ZmMsg.ASST_CONTACT_SHORT_homePhone="hp";\r
60157 ZmMsg.ASST_CONTACT_SHORT_homePhone2="hp2";\r
60158 ZmMsg.ASST_CONTACT_SHORT_homePostalCode="hz";\r
60159 ZmMsg.ASST_CONTACT_SHORT_homeState="st";\r
60160 ZmMsg.ASST_CONTACT_SHORT_homeStreet="hs";\r
60161 ZmMsg.ASST_CONTACT_SHORT_homeURL="hu";\r
60162 ZmMsg.ASST_CONTACT_SHORT_jobTitle="t";\r
60163 ZmMsg.ASST_CONTACT_SHORT_lastName="ln";\r
60164 ZmMsg.ASST_CONTACT_SHORT_middleName="mn";\r
60165 ZmMsg.ASST_CONTACT_SHORT_mobilePhone="m";\r
60166 ZmMsg.ASST_CONTACT_SHORT_notes="n";\r
60167 ZmMsg.ASST_CONTACT_SHORT_otherAddress="oa";\r
60168 ZmMsg.ASST_CONTACT_SHORT_otherCity="oc";\r
60169 ZmMsg.ASST_CONTACT_SHORT_otherCountry="oco";\r
60170 ZmMsg.ASST_CONTACT_SHORT_otherFax="of";\r
60171 ZmMsg.ASST_CONTACT_SHORT_otherPhone="op";\r
60172 ZmMsg.ASST_CONTACT_SHORT_otherPostalCode="oz";\r
60173 ZmMsg.ASST_CONTACT_SHORT_otherState="ost";\r
60174 ZmMsg.ASST_CONTACT_SHORT_otherStreet="os";\r
60175 ZmMsg.ASST_CONTACT_SHORT_otherURL="ou";\r
60176 ZmMsg.ASST_CONTACT_SHORT_pager="p";\r
60177 ZmMsg.ASST_CONTACT_SHORT_workAddress="wa";\r
60178 ZmMsg.ASST_CONTACT_SHORT_workCity="wc";\r
60179 ZmMsg.ASST_CONTACT_SHORT_workCountry="wco";\r
60180 ZmMsg.ASST_CONTACT_SHORT_workFax="f";\r
60181 ZmMsg.ASST_CONTACT_SHORT_workPhone="wp";\r
60182 ZmMsg.ASST_CONTACT_SHORT_workPhone2="wp2";\r
60183 ZmMsg.ASST_CONTACT_SHORT_workPostalCode="wz";\r
60184 ZmMsg.ASST_CONTACT_SHORT_workState="wst";\r
60185 ZmMsg.ASST_CONTACT_SHORT_workStreet="ws";\r
60186 ZmMsg.ASST_CONTACT_SHORT_workURL="wu";\r
60187 ZmMsg.ASST_CONTACT_address="[street; city; state; zip; country]";\r
60188 ZmMsg.ASST_CONTACT_email="type an email address";\r
60189 ZmMsg.ASST_CONTACT_fullName="type to enter fullname";\r
60190 ZmMsg.ASST_CONTACT_notes="(enclose notes in parenthesis)";\r
60191 ZmMsg.ASST_CONTACT_phone="type a phone number";\r
60192 ZmMsg.ASST_CONTACT_url="type a URL";\r
60193 ZmMsg.ASST_HELP="The assistant provides a quick way to interact with the system via the keyboard.<br><br>Available commands:<br><br>";\r
60194 ZmMsg.ASST_MAIL_HELP='The mail assistant allows you to quickly send a new mail message without switching context from what you are currently doing.<br><br><b>Examples:</b><br><ul><li>"call me" to:john@doe.com body: call me about the quote<li>subject: monday is good to:john@doe.com cc:jan@doe.com</ul>';\r
60195 ZmMsg.ASST_MAIL_body="type body: followed by the body (must be last)";\r
60196 ZmMsg.ASST_MAIL_subject='"enclose subject in quotes"';\r
60197 ZmMsg.ASST_MAIL_to="type to: followed by adddresses";\r
60198 ZmMsg.ASST_TASK_HELP='The TASK assistant allows you to quickly create a new TASK without switching context from what you are currently doing.<br><br><b>Examples:</b><br><ul><li>lunch with Dave next friday <li>"Soccer practice" April 5th April 10th [San Francisco]</ul>';\r
60199 ZmMsg.ASST_availableCommands="available commands:";\r
60200 ZmMsg.ASST_no_match="(no commands match)";\r
60201 ZmMsg.COLUMN_WIDTH_ACTIONS_SH="180";\r
60202 ZmMsg.COLUMN_WIDTH_ACTIVE="50";\r
60203 ZmMsg.COLUMN_WIDTH_CAPACITY_NA="50";\r
60204 ZmMsg.COLUMN_WIDTH_CONTACT_NA="150";\r
60205 ZmMsg.COLUMN_WIDTH_DATE="75";\r
60206 ZmMsg.COLUMN_WIDTH_DATE_CAL="105";\r
60207 ZmMsg.COLUMN_WIDTH_DATE_CALL="180";\r
60208 ZmMsg.COLUMN_WIDTH_DATE_DLV="80";\r
60209 ZmMsg.COLUMN_WIDTH_DATE_DUE_TLV="110";\r
60210 ZmMsg.COLUMN_WIDTH_FBSTATUS_NA="80";\r
60211 ZmMsg.COLUMN_WIDTH_FOLDER="47";\r
60212 ZmMsg.COLUMN_WIDTH_FOLDER_CAL="100";\r
60213 ZmMsg.COLUMN_WIDTH_FOLDER_CN="20";\r
60214 ZmMsg.COLUMN_WIDTH_FOLDER_DLV="100";\r
60215 ZmMsg.COLUMN_WIDTH_FOLDER_FLV="120";\r
60216 ZmMsg.COLUMN_WIDTH_FOLDER_NA="160";\r
60217 ZmMsg.COLUMN_WIDTH_FOLDER_SH="150";\r
60218 ZmMsg.COLUMN_WIDTH_FROM_CALL="190";\r
60219 ZmMsg.COLUMN_WIDTH_FROM_CLV="145";\r
60220 ZmMsg.COLUMN_WIDTH_FROM_MLV="105";\r
60221 ZmMsg.COLUMN_WIDTH_HOME_PHONE_NA="100";\r
60222 ZmMsg.COLUMN_WIDTH_ID_MDL="250";\r
60223 ZmMsg.COLUMN_WIDTH_ITEM_COUNT="120";\r
60224 ZmMsg.COLUMN_WIDTH_LOCATION_CAL="175";\r
60225 ZmMsg.COLUMN_WIDTH_NAME_ACC="170";\r
60226 ZmMsg.COLUMN_WIDTH_NAME_CN="100";\r
60227 ZmMsg.COLUMN_WIDTH_NAME_NA="150";\r
60228 ZmMsg.COLUMN_WIDTH_NOTES_NA="30";\r
60229 ZmMsg.COLUMN_WIDTH_OWNER_DLV="80";\r
60230 ZmMsg.COLUMN_WIDTH_OWNER_SH="180";\r
60231 ZmMsg.COLUMN_WIDTH_PCOMPLETE_TLV="75";\r
60232 ZmMsg.COLUMN_WIDTH_PROTOCOL_MDL="100";\r
60233 ZmMsg.COLUMN_WIDTH_PROVISIONABLE_MDL="75";\r
60234 ZmMsg.COLUMN_WIDTH_ROLE_SH="50";\r
60235 ZmMsg.COLUMN_WIDTH_SIZE="45";\r
60236 ZmMsg.COLUMN_WIDTH_SIZE_DLV="45";\r
60237 ZmMsg.COLUMN_WIDTH_STATUS_ACC="80";\r
60238 ZmMsg.COLUMN_WIDTH_STATUS_CAL="80";\r
60239 ZmMsg.COLUMN_WIDTH_STATUS_MDL="150";\r
60240 ZmMsg.COLUMN_WIDTH_STATUS_TLV="110";\r
60241 ZmMsg.COLUMN_WIDTH_TYPE_ACC="85";\r
60242 ZmMsg.COLUMN_WIDTH_TYPE_CN="20";\r
60243 ZmMsg.COLUMN_WIDTH_TYPE_DLV="80";\r
60244 ZmMsg.COLUMN_WIDTH_TYPE_SH="60";\r
60245 ZmMsg.COLUMN_WIDTH_WITH_SH="180";\r
60246 ZmMsg.COLUMN_WIDTH_WORK_PHONE_NA="100";\r
60247 ZmMsg.CRLF="\r\n";\r
60248 ZmMsg.CRLF2="\r\n\r\n";\r
60249 ZmMsg.DASHES="-----";\r
60250 ZmMsg.GAL="Global Address List";\r
60251 ZmMsg.P_TIME_LAST_4_HOURS="last 4 hours";\r
60252 ZmMsg.P_TIME_LAST_HOUR="last hour";\r
60253 ZmMsg.P_TIME_LAST_MONTH="last month";\r
60254 ZmMsg.P_TIME_LAST_WEEK="last week";\r
60255 ZmMsg.P_TIME_LAST_YEAR="last year";\r
60256 ZmMsg.P_TIME_THIS_MONTH="this month";\r
60257 ZmMsg.P_TIME_THIS_WEEK="this week";\r
60258 ZmMsg.P_TIME_THIS_YEAR="this year";\r
60259 ZmMsg.P_TIME_TITLE="Time";\r
60260 ZmMsg.P_TIME_TODAY="today";\r
60261 ZmMsg.P_TIME_YESTERDAY="yesterday";\r
60262 ZmMsg._export="Export";\r
60263 ZmMsg._import="Import";\r
60264 ZmMsg._name="Name";\r
60265 ZmMsg._new="New";\r
60266 ZmMsg._private="Private";\r
60267 ZmMsg._public="Public";\r
60268 ZmMsg.above="Above";\r
60269 ZmMsg.aboveQuotedText="Above included messages";\r
60270 ZmMsg.accept="Accept";\r
60271 ZmMsg.acceptShare="Accept Share";\r
60272 ZmMsg.acceptShareDetails='They have granted you the <b>{0}</b> role, which means:<div style="margin-left:15px;margin-bottom:3px;margin-top:3px;">{1}</div>';\r
60273 ZmMsg.acceptShareDetailsAdmin="<li>You can <b>View</b> and <b>Edit</b> items in the folder.<li>You can <b>Add</b> and <b>Remove</b> items to/from the folder.<li>You can <b>Accept</b> and <b>Decline</b> workflow actions for the folder.<li>You can <b>Administer</b> the folder as if it were your own (i.e. share with another user).";\r
60274 ZmMsg.acceptShareDetailsManager="<li>You can <b>View</b> and <b>Edit</b> items in the folder.<li>You can <b>Add</b> and <b>Remove</b> items to/from the folder.<li>You can <b>Accept</b> and <b>Decline</b> workflow actions for the folder.";\r
60275 ZmMsg.acceptShareDetailsNone="<li>You cannot do anything to items in the folder.";\r
60276 ZmMsg.acceptShareDetailsViewer="<li>You can <b>View</b> items in the folder.";\r
60277 ZmMsg.acceptShareHeader="<b>{0}</b> has shared their <b>{1}</b> folder with you.";\r
60278 ZmMsg.acceptShareQuestion="Do you want to accept this share?";\r
60279 ZmMsg.accepted="Accepted";\r
60280 ZmMsg.account="Account";\r
60281 ZmMsg.accountChangePortLabel="Change {0} port";\r
60282 ZmMsg.accountChangeRestart="Would you like to reload the application now to show the new account changes? (Otherwise, the account changes will appear the next time you log in.)";\r
60283 ZmMsg.accountDefault="Primary Account";\r
60284 ZmMsg.accountDeleteAfterDownload="Delete messages on the server after downloading them";\r
60285 ZmMsg.accountDeleteFolder='<b>Do you want to delete the folder "{0}"?</b><p>The folder and all messages contained in the folder will be moved to the Trash.';\r
60286 ZmMsg.accountDownloadToFolder="Folder: {0}";\r
60287 ZmMsg.accountDownloadToInbox="Inbox";\r
60288 ZmMsg.accountDownloadToLabel="Download messages to:";\r
60289 ZmMsg.accountFromPrompt="Messages sent from this account have the following settings:";\r
60290 ZmMsg.accountHeaderExternal="External Account Settings";\r
60291 ZmMsg.accountHeaderPrimary="Primary Account Settings";\r
60292 ZmMsg.accountInactiveContent="This account could not be activated. Please verify the account settings.";\r
60293 ZmMsg.accountInactiveTitle="Inactive Account";\r
60294 ZmMsg.accountLabel="Account:";\r
60295 ZmMsg.accountName="Account Name";\r
60296 ZmMsg.accountNameLabel="Account Name:";\r
60297 ZmMsg.accountNameReserved='Account name "{0}" is reserved. Please choose a different name.';\r
60298 ZmMsg.accountPersonaInstructions="Use personas to quickly change many settings when sending email messages. For example, if you sometimes send email in a particular role at work, create a persona for that role.";\r
60299 ZmMsg.accountPersonaLabel="Persona Name:";\r
60300 ZmMsg.accountPersonaUseLabel="Use this persona:";\r
60301 ZmMsg.accountPortDefault="({0,number} is the default)";\r
60302 ZmMsg.accountReplyTo='Set the "Reply-to" field of email messages to:';\r
60303 ZmMsg.accountServerLabel="Email Server:";\r
60304 ZmMsg.accountSettings="Account Settings";\r
60305 ZmMsg.accountSubHeader="{0}";\r
60306 ZmMsg.accountTest="Test Settings";\r
60307 ZmMsg.accountTestErrorMissingInfo="You must specify the username, server, and password.";\r
60308 ZmMsg.accountTypeImap="IMAP";\r
60309 ZmMsg.accountTypeLabel="Account type:";\r
60310 ZmMsg.accountTypePersona="Persona";\r
60311 ZmMsg.accountTypePop="POP";\r
60312 ZmMsg.accountTypePrimary="Primary";\r
60313 ZmMsg.accountTypeSecondary="Secondary";\r
60314 ZmMsg.accountUseSSL="Use an encrypted connection (SSL) when accessing this server";\r
60315 ZmMsg.accountUsernameLabel="Username of Account:";\r
60316 ZmMsg.accounts="Accounts";\r
60317 ZmMsg.action="Action";\r
60318 ZmMsg.actionLabel="Action:";\r
60319 ZmMsg.actions="Actions";\r
60320 ZmMsg.active="Active";\r
60321 ZmMsg.add="Add";\r
60322 ZmMsg.addAll="Add All";\r
60323 ZmMsg.addAttachment="Add Attachment";\r
60324 ZmMsg.addAttachments="Add Attachments";\r
60325 ZmMsg.addDocuments="Upload Files";\r
60326 ZmMsg.addDocumentsTT="Upload one or more files to this notebook";\r
60327 ZmMsg.addExternalAccount="Add External Account";\r
60328 ZmMsg.addFilter="Add Filter";\r
60329 ZmMsg.addImg="Add Image";\r
60330 ZmMsg.addLabel="Add:";\r
60331 ZmMsg.addMembers="Add Members to this Group";\r
60332 ZmMsg.addMoreAttachments="Add More Attachments";\r
60333 ZmMsg.addNewPhoto="Add New Photo";\r
60334 ZmMsg.addPersona="Add Persona";\r
60335 ZmMsg.addPhoto="Add Photo";\r
60336 ZmMsg.addRemoteAppts="Synchronize appointments from remote calendar";\r
60337 ZmMsg.addRemoteTasks="Synchronize tasks from remote service (i.e. iCal)";\r
60338 ZmMsg.addSearch="Add a search to the current query.";\r
60339 ZmMsg.addShare="Add Share...";\r
60340 ZmMsg.addSignature="Add Signature";\r
60341 ZmMsg.addToAddrBook="add to address book";\r
60342 ZmMsg.addToBriefcase="Briefcase";\r
60343 ZmMsg.addToBriefcaseTitle="Add to Briefcase";\r
60344 ZmMsg.addToExistingContact="Add to Existing Contact";\r
60345 ZmMsg.addToNewContact="Add to New Contact";\r
60346 ZmMsg.added="Added:";\r
60347 ZmMsg.address="Address";\r
60348 ZmMsg.addressBook="Address Book";\r
60349 ZmMsg.addressBookLabel="Address Book:";\r
60350 ZmMsg.addressBooks="Address Books";\r
60351 ZmMsg.addressHint="Address (jsmith@address.com)";\r
60352 ZmMsg.addressIn="Address in";\r
60353 ZmMsg.addressLabel="Address:";\r
60354 ZmMsg.adminLinkLabel="Domain Admin";\r
60355 ZmMsg.adobePdfDocument="Adobe PDF";\r
60356 ZmMsg.adobePsDocument="Adobe Postscript";\r
60357 ZmMsg.advanced="Advanced";\r
60358 ZmMsg.advancedSearch="Advanced Search";\r
60359 ZmMsg.advancedSearchTooltip="Open / close advanced search";\r
60360 ZmMsg.advancedSettings="Advanced settings";\r
60361 ZmMsg.advancedSettingsLabel="Advanced Settings:";\r
60362 ZmMsg.after="After";\r
60363 ZmMsg.afterLc="after";\r
60364 ZmMsg.afterReload="Setting will take effect after a reload";\r
60365 ZmMsg.agenda="Agenda";\r
60366 ZmMsg.aleError="Can't deserialize component";\r
60367 ZmMsg.align="Align";\r
60368 ZmMsg.alignment="Alignment";\r
60369 ZmMsg.all="All";\r
60370 ZmMsg.allAccounts="All Accounts";\r
60371 ZmMsg.allAttendees="All Attendees";\r
60372 ZmMsg.allConditions="All conditions";\r
60373 ZmMsg.allDay="All day";\r
60374 ZmMsg.allDayEvent="All day event";\r
60375 ZmMsg.allFolders="All folders";\r
60376 ZmMsg.allMail="All Mail";\r
60377 ZmMsg.allPageSelected="{0} items selected. To select all search results, use Shift-click.";\r
60378 ZmMsg.allRemindersAreSnoozed="All Reminders are snoozed";\r
60379 ZmMsg.allSearchSelected="All search results selected, including those not yet loaded.";\r
60380 ZmMsg.allTags="All Tags";\r
60381 ZmMsg.allowMultipleLocations="Allow multiple locations";\r
60382 ZmMsg.almostSupportedBrowserTip='Please note that because you are running an unsupported browser, your user experience may be affected, and all functionality may not be available.<p><a href="javascript:;" onclick="{0}">Click here to continue.</a> <br />';\r
60383 ZmMsg.alphabet="All,123,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";\r
60384 ZmMsg.alwaysShowMiniCal="Always show the mini-calendar";\r
60385 ZmMsg.andMore="And more...";\r
60386 ZmMsg.answeredCalls="Answered Calls";\r
60387 ZmMsg.anyAtt="Any Attachment";\r
60388 ZmMsg.anyCondition="Any condition";\r
60389 ZmMsg.anyTime="Any Time";\r
60390 ZmMsg.anywhere="Anywhere";\r
60391 ZmMsg.aol="AOL";\r
60392 ZmMsg.appExitWarning="Doing so will terminate Zimbra Collaboration Suite, and you will lose your unsaved changes";\r
60393 ZmMsg.appUnknown='The "{0}" application is not available or disabled.';\r
60394 ZmMsg.application="Application";\r
60395 ZmMsg.applicationDocument="Application Document";\r
60396 ZmMsg.applySignature="Apply signature:";\r
60397 ZmMsg.appointment="Appointment";\r
60398 ZmMsg.appointmentEditTitle="Edit Appointment";\r
60399 ZmMsg.appointmentNewTitle="New Appointment";\r
60400 ZmMsg.appointmentReminder="Appointment Reminder";\r
60401 ZmMsg.appointments="Appointments";\r
60402 ZmMsg.apptAttendees="Attendees for this appointment";\r
60403 ZmMsg.apptBlobMissing="The selected appointment no longer exists. Please delete the entire appointment series.";\r
60404 ZmMsg.apptCanceled="The following meeting has been cancelled:";\r
60405 ZmMsg.apptCreated="Appointment Created";\r
60406 ZmMsg.apptCreating="Creating Appointments";\r
60407 ZmMsg.apptDateTime="{0,date,short}, {1,time,short}";\r
60408 ZmMsg.apptDateTimeAllDay="{0,date,short}, all day";\r
60409 ZmMsg.apptDetails="Appointment Details";\r
60410 ZmMsg.apptExceptionNote="This is an exception to the series.";\r
60411 ZmMsg.apptInstance="Instance";\r
60412 ZmMsg.apptInstanceCanceled="A single instance of the following meeting has been cancelled:";\r
60413 ZmMsg.apptInstanceModified="A single instance of the following meeting has been modified:";\r
60414 ZmMsg.apptIsPrivate="This appointment is private and cannot be opened.";\r
60415 ZmMsg.apptLocations="Location(s) for this appointment";\r
60416 ZmMsg.apptModified="The following meeting has been modified:";\r
60417 ZmMsg.apptModifiedStamp="[MODIFIED]";\r
60418 ZmMsg.apptNew="The following is a new meeting request:";\r
60419 ZmMsg.apptOutOfDate="The selected appointment has been changed or no longer exists.";\r
60420 ZmMsg.apptPastDueReminderLabel="Show reminders for past-due meetings";\r
60421 ZmMsg.apptRemindNDaysBefore="{0,number} {0,choice,0#days|1#day|2#days} before";\r
60422 ZmMsg.apptRemindNHoursBefore="{0,number} {0,choice,0#hours|1#hour|2#hours} before";\r
60423 ZmMsg.apptRemindNMinutesBefore="{0,number} {0,choice,0#minutes|1#minute|2#minutes} before";\r
60424 ZmMsg.apptRemindNWeeksBefore="{0,number} {0,choice,0#weeks|1#week|2#weeks} before";\r
60425 ZmMsg.apptRemindNever="Never";\r
60426 ZmMsg.apptReminderLabel="Show reminders:";\r
60427 ZmMsg.apptReminders="Appointment Reminder(s)";\r
60428 ZmMsg.apptResources="Resources for this appointment";\r
60429 ZmMsg.apptSendErrorAbort="Invite not sent; one or more addresses were not accepted.";\r
60430 ZmMsg.apptSendErrorInvalidAddresses="Rejected addresses: {0}";\r
60431 ZmMsg.apptSendErrorPartial="Invite not sent to the following rejected addresses: {0}";\r
60432 ZmMsg.apptSendErrorUnsentAddresses="Invite NOT sent to: {0}";\r
60433 ZmMsg.apptSeries="Series";\r
60434 ZmMsg.apptTimeAllDay="{0,date}";\r
60435 ZmMsg.apptTimeAllDayMulti="From {0,date} to {1,date}";\r
60436 ZmMsg.apptTimeInstance="{0,date} from {0,time,short} to {1,time,short} {2}";\r
60437 ZmMsg.apptTimeInstanceMulti="From {0,date} {0,time,short} to {1,date} {1,time,short} {2}";\r
60438 ZmMsg.apptsImportedResult="{0,number} {0,choice,0#Appointments|1#Appointment|2#Appointments} Imported";\r
60439 ZmMsg.archiveHint='<a href="javascript:;" onclick="{0}">Create a new folder here</a> for archiving messages,<br>or you can drag-n-drop an entire folder under "Local Folders".';\r
60440 ZmMsg.arrange="Arrange";\r
60441 ZmMsg.arrangedBy="Arranged by: {0}";\r
60442 ZmMsg.asFlagged="As flagged";\r
60443 ZmMsg.asRead="As read";\r
60444 ZmMsg.ascending="Ascending";\r
60445 ZmMsg.askCancel="The server appears to be slow to respond, and may be unavailable. Press the button to cancel your request.";\r
60446 ZmMsg.askDeleteFilter='Delete filter "{0}"?';\r
60447 ZmMsg.askDeleteTag='Delete tag "{0}"?';\r
60448 ZmMsg.askLeaveCompose="Cancel compose? (If you cancel, your message will not be saved.)";\r
60449 ZmMsg.askSaveAutosavedDraft="The message has been autosaved. Do you want to keep it?";\r
60450 ZmMsg.askSaveDraft="Save current message as draft?";\r
60451 ZmMsg.askToSave="Do you want to save changes?";\r
60452 ZmMsg.at="@";\r
60453 ZmMsg.atBottomOfMessage="Below included messages";\r
60454 ZmMsg.atStartTime="at the start time";\r
60455 ZmMsg.attach="Attach";\r
60456 ZmMsg.attachClearUploadMessage="Clear or Upload attachments before changing tabs";\r
60457 ZmMsg.attachFile="Attach File(s)";\r
60458 ZmMsg.attachFileNo="Attach File {0}:";\r
60459 ZmMsg.attachMultiMsgs="Forward Conversations";\r
60460 ZmMsg.attachSelectMessage="Select at least one file to attach";\r
60461 ZmMsg.attachingFiles="Attaching File(s)";\r
60462 ZmMsg.attachingFilesDone="Finished Attaching File(s)";\r
60463 ZmMsg.attachingFilesError="Error while Attaching File(s)";\r
60464 ZmMsg.attachment="Attachment";\r
60465 ZmMsg.attachmentConfirmRemove="Are you sure you want to permanently remove this attachment?";\r
60466 ZmMsg.attachmentConfirmRemoveAll="Are you sure you want to permanently remove all attachments?";\r
60467 ZmMsg.attachmentTooltip="Attach one or more files to the message";\r
60468 ZmMsg.attachments="Attachments";\r
60469 ZmMsg.attachmentsLabel="Attachments:";\r
60470 ZmMsg.attendeeListChanged="You have made changes to the attendees list:";\r
60471 ZmMsg.attendeeStatusLabel="Status:";\r
60472 ZmMsg.attendees="Attendees";\r
60473 ZmMsg.attendeesLabel="Attendees:";\r
60474 ZmMsg.audio="Audio";\r
60475 ZmMsg.audioVideo="Audio/Video";\r
60476 ZmMsg.authChanged="Another user has logged in on this computer. You will need to login again to continue.";\r
60477 ZmMsg.authFailure='Authentication failed with account "{0}".<br>Please go to Account Setup for more information.';\r
60478 ZmMsg.authorLabel="Author:";\r
60479 ZmMsg.auto="Auto";\r
60480 ZmMsg.autoAddContacts='Add new contacts to "Emailed Contacts"';\r
60481 ZmMsg.autoAddInvites="Automatically add received appointments to calendar";\r
60482 ZmMsg.autoPick="AutoPick";\r
60483 ZmMsg.autoSaveDrafts="Automatically save drafts of messages while you are composing";\r
60484 ZmMsg.autocomplete="Autocomplete";\r
60485 ZmMsg.autocompleteFailed="Autocomplete failed";\r
60486 ZmMsg.autocompleteNotReady="Contacts Not Loaded, Yet";\r
60487 ZmMsg.autocompleteShare="Always use this account during autocomplete";\r
60488 ZmMsg.autocompleteSharedAddrBooks="Include addresses in shared address books";\r
60489 ZmMsg.autocompleteWaiting="Autocompleting...";\r
60490 ZmMsg.automaticSignature="Automatically on all messages";\r
60491 ZmMsg.awayMessage="Away message";\r
60492 ZmMsg.awayMessageEnabled="Send auto-reply message:";\r
60493 ZmMsg.b="B";\r
60494 ZmMsg.back="Back";\r
60495 ZmMsg.badTargetFolder="You cannot move the folder to the selected destination folder.";\r
60496 ZmMsg.badTargetFolderItems="You cannot move items to the selected destination folder.";\r
60497 ZmMsg.badUsername="Your username must be a valid email address.";\r
60498 ZmMsg.basic="Basic";\r
60499 ZmMsg.basicSearch="Basic Search";\r
60500 ZmMsg.bcc="Bcc";\r
60501 ZmMsg.bccLabel="Bcc:";\r
60502 ZmMsg.before="Before";\r
60503 ZmMsg.beforeLc="before";\r
60504 ZmMsg.below="Below";\r
60505 ZmMsg.beta="[beta]";\r
60506 ZmMsg.betaIM="[IM beta]";\r
60507 ZmMsg.blackListLabel="Block messages from:";\r
60508 ZmMsg.blue="Blue";\r
60509 ZmMsg.body="Body";\r
60510 ZmMsg.bodyTemplate="Body template";\r
60511 ZmMsg.borderColor="Border Color";\r
60512 ZmMsg.borderColorLabel="Border Color:";\r
60513 ZmMsg.borderStyle="Border Style";\r
60514 \r
60515 ZmMsg.borderStyleDashed="Dashed";\r
60516 ZmMsg.borderStyleDotted="Dotted";\r
60517 ZmMsg.borderStyleDouble="Double";\r
60518 ZmMsg.borderStyleGroove="Groove";\r
60519 ZmMsg.borderStyleInset="Inset";\r
60520 ZmMsg.borderStyleLabel="Border Style:";\r
60521 ZmMsg.borderStyleOutset="Outset";\r
60522 ZmMsg.borderStyleRidge="Ridge";\r
60523 ZmMsg.borderStyleSolid="Solid";\r
60524 ZmMsg.borderThickness="Border Thickness:";\r
60525 ZmMsg.borderWidth="Border Width:";\r
60526 ZmMsg.bothNewPasswordsMustMatch="Both new passwords must match.";\r
60527 ZmMsg.bottom="Bottom";\r
60528 ZmMsg.briefcase="Briefcase";\r
60529 ZmMsg.briefcaseCreateNewDocument="Create New Document";\r
60530 ZmMsg.briefcaseCreateNewPresentation="Create New Presentation";\r
60531 ZmMsg.briefcaseCreateNewSpreadsheet="Create New Spreadsheet";\r
60532 ZmMsg.briefcaseFileProps="File Properties";\r
60533 ZmMsg.briefcasePropModified="Modified";\r
60534 ZmMsg.briefcasePropName="Name";\r
60535 ZmMsg.briefcasePropSize="Size";\r
60536 ZmMsg.briefcasePropTags="Tags";\r
60537 ZmMsg.brokenHeart="broken heart";\r
60538 ZmMsg.browse="Browse...";\r
60539 ZmMsg.browserPlusDisabled="BrowserPlus is disabled";\r
60540 ZmMsg.browserPlusMissing="This feature requires Yahoo! BrowserPlus. <a target='_blank' href='http://browserplus.yahoo.com/install'>Click here</a> to download and install it.";\r
60541 ZmMsg.buddies="Buddies";\r
60542 ZmMsg.buddy="Buddy";\r
60543 ZmMsg.buddyInvitation="Buddy Invitation";\r
60544 ZmMsg.buddyList="Buddy List";\r
60545 ZmMsg.building="Building";\r
60546 ZmMsg.bulletedList="Bulleted List";\r
60547 ZmMsg.busy="Busy";\r
60548 ZmMsg.byAttachment="By Attachment";\r
60549 ZmMsg.byConversation="By Conversation";\r
60550 ZmMsg.byFolder="By Folder";\r
60551 ZmMsg.byMessage="By Message";\r
60552 ZmMsg.bySender="By Sender";\r
60553 ZmMsg.byTag="By Tag";\r
60554 ZmMsg.byTime="By Time";\r
60555 ZmMsg.byType="By Type";\r
60556 ZmMsg.bytes="bytes";\r
60557 ZmMsg.calAssistDefaultView="day, work week, week, month";\r
60558 ZmMsg.calFeedInvalid="Appointments could not be retrieved. Make sure the following URL is a valid ICAL feed: {0}";\r
60559 ZmMsg.calPerms="Permissions";\r
60560 ZmMsg.calPermsNote="<b>Note:</b> Users provided below must be on this mail system ({0}). You may use the full email address, or just the username.";\r
60561 ZmMsg.calRefreshTooltip="Refresh Calendar Views";\r
60562 ZmMsg.calViewDay="Day View";\r
60563 ZmMsg.calViewList="List View";\r
60564 ZmMsg.calViewMonth="Month View";\r
60565 ZmMsg.calViewSchedule="Schedule View";\r
60566 ZmMsg.calViewWeek="7 Day Week View";\r
60567 ZmMsg.calViewWorkWeek="Work Week View";\r
60568 ZmMsg.calendar="Calendar";\r
60569 ZmMsg.calendarAppointment="Calendar Appointment";\r
60570 ZmMsg.calendarFirstDayOfWeek="First day of the week";\r
60571 ZmMsg.calendarInitialApptVisibility="Default appointment visibility:";\r
60572 ZmMsg.calendarInitialView="Initial calendar view";\r
60573 ZmMsg.calendarInvite="Calendar Invite";\r
60574 ZmMsg.calendarLabel="Calendar:";\r
60575 ZmMsg.calendarStartWeekLabel="Start week on:";\r
60576 ZmMsg.calendars="Calendars";\r
60577 ZmMsg.call="Call";\r
60578 ZmMsg.callForwardingDescription="Forward <b>all</b> calls to:";\r
60579 ZmMsg.callForwardingError="The call forwarding number is invalid";\r
60580 ZmMsg.callForwardingLabel="Call Forwarding:";\r
60581 ZmMsg.callForwardingSameNumberError="The call forwarding number may not be the same as the phone number you are managing.";\r
60582 ZmMsg.callManager="Call Manager";\r
60583 ZmMsg.callManagerTooltip="Go to the Call Manager";\r
60584 ZmMsg.callNumber="Call {0}";\r
60585 ZmMsg.callSettings="Call Settings";\r
60586 ZmMsg.caller="Caller";\r
60587 ZmMsg.callingPartyCallerIdFormat="{0}&nbsp;&nbsp;{1}";\r
60588 ZmMsg.callingPartyFormat="{0} ({1})&nbsp;&nbsp;{2}";\r
60589 ZmMsg.calls="Calls";\r
60590 ZmMsg.cancel="Cancel";\r
60591 ZmMsg.cancelInstance="Cancel Instance";\r
60592 ZmMsg.cancelSendMsgWarning="Important: Your message may not have been sent. You will be returned to the message. You can click Send again, and if the message was sent, the recipient will not receive a duplicate message. Note, if the message is modified before resending, the recipient may receive both messages.";\r
60593 ZmMsg.cancelTooltip="Return to previous view";\r
60594 ZmMsg.cancelled="Cancelled";\r
60595 ZmMsg.capacity="Capacity";\r
60596 ZmMsg.caption="Caption:";\r
60597 ZmMsg.cardMessage="Card Message:";\r
60598 ZmMsg.cardViewE="E";\r
60599 ZmMsg.cardViewE2="E2";\r
60600 ZmMsg.cardViewE3="E3";\r
60601 ZmMsg.cardViewF="F";\r
60602 ZmMsg.cardViewH="H";\r
60603 ZmMsg.cardViewM="M";\r
60604 ZmMsg.cardViewW="W";\r
60605 ZmMsg.cardViewW2="W2";\r
60606 ZmMsg.caseSensitive="Case Sensitive";\r
60607 ZmMsg.cc="Cc";\r
60608 ZmMsg.ccLabel="Cc:";\r
60609 ZmMsg.cell="Cell";\r
60610 ZmMsg.cellPadding="Padding Within Cells:";\r
60611 ZmMsg.cellProperties="Cell Properties";\r
60612 ZmMsg.cellRange="Cell Range";\r
60613 ZmMsg.cellSpacing="Space Around Cells:";\r
60614 ZmMsg.center="Center";\r
60615 ZmMsg.changeEditorMode="Change format";\r
60616 ZmMsg.changePassword="Change Password";\r
60617 ZmMsg.changeTime="Change Time";\r
60618 ZmMsg.chat="Chat";\r
60619 ZmMsg.chatWith="Chat with {0}";\r
60620 ZmMsg.chats="Chats";\r
60621 ZmMsg.checkAgain="Check again";\r
60622 ZmMsg.checkAll="Check All";\r
60623 ZmMsg.checkAllFeed="Reload All Feeds";\r
60624 ZmMsg.checkCalls="Get Calls";\r
60625 ZmMsg.checkCallsTooltip="Get new calls";\r
60626 ZmMsg.checkExternalMail="Get External Mail";\r
60627 ZmMsg.checkFeed="Load Feed";\r
60628 ZmMsg.checkForConflict="Check for Conflict";\r
60629 ZmMsg.checkMail="Get Mail";\r
60630 ZmMsg.checkMailPrefDefault="Run my default search";\r
60631 ZmMsg.checkMailPrefLabel="When I click Get Mail:";\r
60632 ZmMsg.checkMailPrefUpdate="Update my current view";\r
60633 ZmMsg.checkRssTooltip="Check for new RSS feed";\r
60634 ZmMsg.checkVoicemail="Get Voice Mail";\r
60635 ZmMsg.checkVoicemailTooltip="Get new voice mail messages";\r
60636 ZmMsg.chooseAddrBook="Choose Address Book";\r
60637 ZmMsg.chooseAddrBookToExport="Choose an address book to export:";\r
60638 ZmMsg.chooseAddrBookToImport="Choose an address book to import to:";\r
60639 ZmMsg.chooseClient="Which version would you like to use?";\r
60640 ZmMsg.chooseDate="Choose date";\r
60641 ZmMsg.chooseFolder="Choose Folder";\r
60642 ZmMsg.chooseFolderToFilter="Choose folders to apply filter to:";\r
60643 ZmMsg.chooseIdentity="Choose an identity to send the mail";\r
60644 ZmMsg.chooseSearchType="Choose which types of items are returned by your search";\r
60645 ZmMsg.chooseSignature="Choose a signature to use";\r
60646 ZmMsg.chooseTag="Choose Tag";\r
60647 ZmMsg.chooserDescription="Type in the box to filter the list. Tab to change focus. Arrow keys can be used to navigate within the list.";\r
60648 ZmMsg.clear="Clear";\r
60649 ZmMsg.clearAdvSearch="Clear Advanced Search";\r
60650 ZmMsg.clearAll="Clear All";\r
60651 ZmMsg.clearText="Clear text";\r
60652 ZmMsg.clickToAdd="Click to add";\r
60653 ZmMsg.clickToDrawABorder="Click to draw a border:";\r
60654 ZmMsg.clientAdvanced="Advanced (Ajax)";\r
60655 ZmMsg.clientLoginNotice='<a target="_new" href="http://www.zimbra.com">Zimbra</a> :: the leader in open source messaging and collaboration :: <a target="_new" href="http://www.zimbra.com/blog">Zimbra Blog</a> <a target="_new" href="http://wiki.zimbra.com">Zimbra Wiki</a>';\r
60656 ZmMsg.clientMobile="Mobile";\r
60657 ZmMsg.clientPreferred="Default";\r
60658 ZmMsg.clientStandard="Standard (HTML)";\r
60659 ZmMsg.clientType="Client Type:";\r
60660 ZmMsg.clientUnsupported="Note that your web browser or display does not fully support the Advanced version.  We strongly recommend that you use the Standard client.";\r
60661 ZmMsg.clientWhatsThisMessage='<center style="margin-bottom:3px;"><b>Client Types:</b></center>\t<b>Advanced</b> offers the full set of Web collaboration features. This Web Client works best with newer browsers and faster Internet connections. <br><br><b>Standard</b> is recommended when Internet connections are slow, when using older browsers, or for easier accessibility. <br><br><b>Mobile</b> is recommended for mobile devices. <br><br>To set <b>Default</b> to be your preferred client type, change the login options in your Preferences, General tab after you log in.';\r
60662 ZmMsg.close="Close";\r
60663 ZmMsg.closeSearchBuilder="Close Advanced Search";\r
60664 ZmMsg.closeTooltip="Return to previous view";\r
60665 ZmMsg.clown="clown";\r
60666 ZmMsg.code="Code";\r
60667 ZmMsg.collapsedBorders="Collapsed Borders";\r
60668 ZmMsg.colorLabel="Color:";\r
60669 ZmMsg.columnBrowserView="Column Browser View";\r
60670 ZmMsg.compBadAddresses="<p>The following addresses appear to be invalid: {0}</p><p>Send anyway?</p>";\r
60671 ZmMsg.compBadAttendees="<p>The following attendees appear to be invalid: {0}</p><p>Save anyway?</p>";\r
60672 ZmMsg.compSubjectMissing="No subject. Send anyway?";\r
60673 ZmMsg.company="Company";\r
60674 ZmMsg.complete="Complete";\r
60675 ZmMsg.completed="Completed";\r
60676 ZmMsg.compose="Compose";\r
60677 ZmMsg.composeAsHTML="As HTML";\r
60678 ZmMsg.composeAsText="As Text";\r
60679 ZmMsg.composeDisabled="You currently have not configured any account for composing messages.";\r
60680 ZmMsg.composeInNewWin="Always compose in new window";\r
60681 ZmMsg.composeLabel="Compose:";\r
60682 ZmMsg.composeMessages="Compose messages:";\r
60683 ZmMsg.composeMoreOptions="Additional composing options can be set on the <a href='#Prefs.Accounts' onclick='skin.gotoPrefs(\"ACCOUNTS\");return false'>Accounts Page</a>";\r
60684 ZmMsg.composeOptions="Change format";\r
60685 ZmMsg.composeReplyEmail="When replying to an email:";\r
60686 ZmMsg.composeReplyLabel="Reply / Reply All:";\r
60687 ZmMsg.composeUsing="Default editor";\r
60688 ZmMsg.composing="Composing";\r
60689 ZmMsg.composingMessages="Composing Messages";\r
60690 ZmMsg.confidential="Confidential";\r
60691 ZmMsg.configureWithAdmin="Configure with Admin Console";\r
60692 ZmMsg.confirm="Confirm";\r
60693 ZmMsg.confirmCancelAppt="Are you sure you want to delete this appointment?";\r
60694 ZmMsg.confirmCancelApptFutureInstances="cancel only the selected instance and everything after";\r
60695 ZmMsg.confirmCancelApptInst="Are you sure you want to delete this meeting instance?";\r
60696 ZmMsg.confirmCancelApptList="Are you sure you want to delete these appointments?";\r
60697 ZmMsg.confirmCancelApptReply="Do you want to edit the appointment cancellation message?";\r
60698 ZmMsg.confirmCancelApptSeries="Are you sure you want to delete this recurring appointment?";\r
60699 ZmMsg.confirmCancelApptWholeSeries="cancel the entire series";\r
60700 ZmMsg.confirmCancelTask="Are you sure you want to permanently delete the selected task(s)?";\r
60701 ZmMsg.confirmDeleteCalendar='Are you sure you want to permanently delete the "{0}" calendar?';\r
60702 ZmMsg.confirmDeleteContact="Are you sure you want to delete this contact?";\r
60703 ZmMsg.confirmDeleteFolder='Are you sure you want to permanently delete the "{0}" folder?';\r
60704 ZmMsg.confirmDeleteItem='Are you sure you want to delete "{0}"?';\r
60705 ZmMsg.confirmDeleteItemList="Are you sure you want to delete the selected items?";\r
60706 ZmMsg.confirmDeleteMissingFolder='The shared folder "{0}" is no longer accessible. Would you like to delete it?';\r
60707 ZmMsg.confirmDeleteNotebook='Are you sure you want to permanently delete the "{0}" notebook?';\r
60708 ZmMsg.confirmDeleteRule="Are you sure you want to delete this rule?";\r
60709 ZmMsg.confirmDeleteRules="Are you sure you want to delete these rules?";\r
60710 ZmMsg.confirmDeleteSavedSearch='Are you sure you want to delete the "{0}" saved search?';\r
60711 ZmMsg.confirmDeleteTaskFolder='Are you sure you want to permanently delete the "{0}" task list?';\r
60712 ZmMsg.confirmDisplayAddresss="<b>Recipients:</b>";\r
60713 ZmMsg.confirmEmptyFolder='Are you sure you want to permanently delete everything within the "{0}" folder?';\r
60714 ZmMsg.confirmEmptyTrashFolder="This action will delete all items in both the Email and Address Book trash folders.  Are you sure that you want to permanently delete everything in the trash folder?";\r
60715 ZmMsg.confirmExistingContacts="<b>Recipients already in your contacts:</b>";\r
60716 ZmMsg.confirmExitPreferences="Would you like to save your changes?";\r
60717 ZmMsg.confirmExitPreferencesChangeAcct="Save your changes before switching accounts?";\r
60718 ZmMsg.confirmFilterDetailsSave="Your filter rule is incomplete. Do you want to continue saving locally?";\r
60719 ZmMsg.confirmModifyApptReply="Do you want to edit the appointment modification message?";\r
60720 ZmMsg.confirmNewAddresses="<b>Recipients not in your address book:</b>";\r
60721 ZmMsg.confirmNewAddressesCheck="(check the contacts you want to add)";\r
60722 ZmMsg.confirmPasswordHasWhitespace="The confirm password field has whitespace. Please correct this, and resubmit your change request.";\r
60723 ZmMsg.confirmRemovePopAccount='<b>Are you sure you want to remove the account "{0}"?</b><p><b>Note:</b> Account will not be removed until you save the preferences.';\r
60724 ZmMsg.confirmSummary="Message Sent: {0}";\r
60725 ZmMsg.confirmed="Confirmed";\r
60726 ZmMsg.contact="Contact";\r
60727 ZmMsg.contactCreated="Contact Created";\r
60728 ZmMsg.contactList="List";\r
60729 ZmMsg.contactPickerHint="Type recipient's name here.";\r
60730 ZmMsg.contactSaved="Contact Saved";\r
60731 ZmMsg.contacts="Contacts";\r
60732 ZmMsg.contactsImportedResult="{0,number} {0,choice,0#Contacts|1#Contact|2#Contacts} Imported";\r
60733 ZmMsg.contains="contains";\r
60734 ZmMsg.content="Content";\r
60735 ZmMsg.convCountTooltip="Total Messages in Conversation";\r
60736 ZmMsg.convOrderAscending="Expand conversations from old to new";\r
60737 ZmMsg.convOrderDescending="Expand conversations from new to old";\r
60738 ZmMsg.conversation="Conversation";\r
60739 ZmMsg.conversations="Conversations";\r
60740 ZmMsg.convertCamelCase="Convert all CamelCase words to links";\r
60741 ZmMsg.convertCamelCaseMsg="This will convert all CamelCase words into wiki links. Continue?";\r
60742 ZmMsg.copy="Copy";\r
60743 ZmMsg.count="Count";\r
60744 ZmMsg.createAppt="Create Appointment";\r
60745 ZmMsg.createNewAddrBook="Create New Address Book";\r
60746 ZmMsg.createNewAppt="Create New Appointment";\r
60747 ZmMsg.createNewBriefcaseItem="Create New Briefcase Folder";\r
60748 ZmMsg.createNewCalendar="Create New Calendar";\r
60749 ZmMsg.createNewContact="Create New Contact";\r
60750 ZmMsg.createNewFolder="Create New Folder";\r
60751 ZmMsg.createNewMsg="Create New Message";\r
60752 ZmMsg.createNewNotebook="Create New Notebook";\r
60753 ZmMsg.createNewPage="Create New Page";\r
60754 ZmMsg.createNewRosterItem="Create New Buddy";\r
60755 ZmMsg.createNewSection="Create New Notebook";\r
60756 ZmMsg.createNewTag="Create New Tag";\r
60757 ZmMsg.createNewTask="Create New Task";\r
60758 ZmMsg.createNewTaskFolder="Create New Task List";\r
60759 ZmMsg.createNewTaskHint="Click here to add a new Task";\r
60760 ZmMsg.createSlideShow="Create Slide Show";\r
60761 ZmMsg.createTask="Create Task";\r
60762 ZmMsg.created="Created";\r
60763 ZmMsg.createdOn="Created On";\r
60764 ZmMsg.createdOnLabel="Created on:";\r
60765 ZmMsg.creator="Creator";\r
60766 ZmMsg.crying="crying";\r
60767 ZmMsg.currency="Currency";\r
60768 ZmMsg.custom="Custom";\r
60769 ZmMsg.customRepeat="Custom Repeat";\r
60770 ZmMsg.customize="Customize";\r
60771 ZmMsg.customizeSettings="Customize settings";\r
60772 ZmMsg.cut="Cut";\r
60773 ZmMsg.cyan="Cyan";\r
60774 ZmMsg.daily="Daily";\r
60775 ZmMsg.dataSourceFailureDescription="Retrieving messages for the following external {0,choice,1#account has|2#accounts have} failed:";\r
60776 ZmMsg.dataSourceFailureInstructions="<b>The failed accounts will not update until the problem(s) have been resolved. Click OK to go to account preferences.</b>";\r
60777 ZmMsg.dataSourceFailureItem="<ul><li>{0} (failing since {1,date,short} {1,time,short})<br><font color=red><b>Error: {2}</b></font></li></ul>";\r
60778 ZmMsg.dataSourceFailureItem_noDate="<ul><li>{0}<br><font color=red><b>Error: {1}</b></font></li></ul>";\r
60779 ZmMsg.dataSourceFailureTitle="External Account Failure";\r
60780 ZmMsg.dataSourceLoadFailure='Account "{0}" Failed';\r
60781 ZmMsg.dataSourceLoadSuccess='Account "{0}" Loaded';\r
60782 ZmMsg.dataSourceTestFailure="Failed";\r
60783 ZmMsg.dataSourceTestSuccess="Success";\r
60784 ZmMsg.dataTypesHint="Include all folders from the following applications:";\r
60785 ZmMsg.dataTypesLabel="Data types:";\r
60786 ZmMsg.date="Date";\r
60787 ZmMsg.dateDue="Due Date";\r
60788 ZmMsg.dateDueLabel="Due Date:";\r
60789 ZmMsg.dateLabel="Date:";\r
60790 ZmMsg.declineShare="Decline Share";\r
60791 ZmMsg.declineShareConfirm="Are you sure you want to decline the {1} share from {0}?";\r
60792 ZmMsg.declined="Declined";\r
60793 ZmMsg.dedupeAll="Ignore message";\r
60794 ZmMsg.dedupeMoveToInbox="Move the sent message to Inbox";\r
60795 ZmMsg.dedupeNone="Place in Inbox";\r
60796 ZmMsg.dedupeSecondCopy="Place in Inbox if I'm in To: or Cc:";\r
60797 ZmMsg.def="Default";\r
60798 ZmMsg.defLabel="Default:";\r
60799 ZmMsg.defaultAccountName="DEFAULT";\r
60800 ZmMsg.defaultCalendarTimezone="Default timezone for new appointments";\r
60801 ZmMsg.defaultFontSettings="Default font settings (HTML compose)";\r
60802 ZmMsg.defaultIdentity="Default Identity";\r
60803 ZmMsg.defaultIdentityName="DEFAULT";\r
60804 ZmMsg.defaultInviteReplyAcceptInstanceMessage="I will attend on {0,date,full}.\r\n\r\n";\r
60805 ZmMsg.defaultInviteReplyAcceptMessage="Yes, I will attend.\r\n\r\n";\r
60806 ZmMsg.defaultInviteReplyCancelInstanceMessage="I will attend on {0,date,full}.\r\n\r\n";\r
60807 ZmMsg.defaultInviteReplyCancelMessage="Yes, I will attend.\r\n\r\n";\r
60808 ZmMsg.defaultInviteReplyDeclineInstanceMessage="I won''t attend on {0,date,full}.\r\n\r\n";\r
60809 ZmMsg.defaultInviteReplyDeclineMessage="No, I won''t attend.\r\n\r\n";\r
60810 ZmMsg.defaultInviteReplyNewTimeMessage="I would like to propose a time change.\r\n\r\n";\r
60811 ZmMsg.defaultInviteReplyResourceAcceptInstanceMessage="The resource has been scheduled on {0,date,full}.\r\n\r\n";\r
60812 ZmMsg.defaultInviteReplyResourceAcceptMessage="The resource has been scheduled.\r\n\r\n";\r
60813 ZmMsg.defaultInviteReplyResourceDeclineInstanceMessage="The resource could not be scheduled on {0,date,full}.\r\n\r\n";\r
60814 ZmMsg.defaultInviteReplyResourceDeclineMessage="The resource could not be scheduled.\r\n\r\n";\r
60815 ZmMsg.defaultInviteReplyResourceTentativeInstanceMessage="The resource might be scheduled on {0,date,full}.\r\n\r\n";\r
60816 ZmMsg.defaultInviteReplyResourceTentativeMessage="The resource might be scheduled.\r\n\r\n";\r
60817 ZmMsg.defaultInviteReplyTentativeInstanceMessage="I might attend on {0,date,full}.\r\n\r\n";\r
60818 ZmMsg.defaultInviteReplyTentativeMessage="I might attend.\r\n\r\n";\r
60819 ZmMsg.defaultPageName="Page";\r
60820 ZmMsg.defaultPort="(Default is {0})";\r
60821 ZmMsg.defaultViewLabel="Default View:";\r
60822 ZmMsg.defaultsPageRestore="Page Reverted";\r
60823 ZmMsg.defaultsRestored="Defaults Restored. Please Save Changes";\r
60824 ZmMsg.deferred="Deferred";\r
60825 ZmMsg.defualtTimezone="Default Timezone:";\r
60826 ZmMsg.del="Delete";\r
60827 ZmMsg.delAll="Delete All";\r
60828 ZmMsg.delConv="Delete Conversation";\r
60829 ZmMsg.delMsg="Delete Selected Message(s)";\r
60830 ZmMsg.deleteApptInstance="Delete Instance";\r
60831 ZmMsg.deleteApptListQuestion="Would you like to delete the instances or series of each appointment?";\r
60832 ZmMsg.deleteApptQuestion="Would you like to delete only this instance or the series?";\r
60833 ZmMsg.deleteApptSeries="Delete Series";\r
60834 ZmMsg.deleteCell="Delete Cell";\r
60835 ZmMsg.deleteColumn="Delete Column";\r
60836 ZmMsg.deleteGroupError="The group cannot be deleted because it still contains buddies.";\r
60837 ZmMsg.deleteInstance="Delete this instance";\r
60838 ZmMsg.deleteInstances="Delete the instances";\r
60839 ZmMsg.deleteInviteOnReply="Delete invite on reply";\r
60840 ZmMsg.deleteInviteOnReplyLabel="After responding to an invitation:";\r
60841 ZmMsg.deletePermanentTooltip="Delete selected item(s) permanently";\r
60842 ZmMsg.deleteReadonly="You have selected one or more appointments which are read only. These appointments cannot be deleted.";\r
60843 ZmMsg.deleteRecurringItem="Delete Recurring Item(s)";\r
60844 ZmMsg.deleteRow="Delete Row";\r
60845 ZmMsg.deleteSeries="Delete the series";\r
60846 ZmMsg.deleteTable="Delete Table";\r
60847 ZmMsg.deleteTooltip="Move selected item(s) to Trash";\r
60848 ZmMsg.deny="Deny";\r
60849 ZmMsg.descending="Descending";\r
60850 ZmMsg.description="Description";\r
60851 ZmMsg.destinationLabel="Destination:";\r
60852 ZmMsg.detach="Open in a separate window";\r
60853 ZmMsg.detachAnyway="You will have to reattach your file(s). Open in new window anyway?";\r
60854 ZmMsg.detachTT="Launch in a separate window";\r
60855 ZmMsg.detachTooltip="Compose in a separate window";\r
60856 ZmMsg.detailView="Detail View";\r
60857 ZmMsg.detailedCards="Card";\r
60858 ZmMsg.details="Details";\r
60859 ZmMsg.devil="devil";\r
60860 ZmMsg.directionLabel="Direction:";\r
60861 ZmMsg.discard="Discard";\r
60862 ZmMsg.dismiss="Dismiss";\r
60863 ZmMsg.dismissAll="Dismiss All";\r
60864 ZmMsg.display="Display";\r
60865 ZmMsg.displayAsHTML="As HTML (when possible)";\r
60866 ZmMsg.displayAsText="As Text";\r
60867 ZmMsg.displayCalendar="Choose how the calendar is displayed";\r
60868 ZmMsg.displayContacts="Choose how contacts are displayed";\r
60869 ZmMsg.displayContactsLabel="Display contacts per page:";\r
60870 ZmMsg.displayExternalImages="Display Images";\r
60871 ZmMsg.displayFormatLabel="Display format:";\r
60872 ZmMsg.displayIM="Choose how IM chats are displayed";\r
60873 ZmMsg.displayLabel="Display:";\r
60874 ZmMsg.displayMail="Display Mail:";\r
60875 ZmMsg.displayMailToolTip="Choose how mail is displayed";\r
60876 ZmMsg.displayMessages="Displaying Messages";\r
60877 ZmMsg.dndTooltip="Tip: drag and drop files from your desktop to add attachments to this message.";\r
60878 ZmMsg.document="Document";\r
60879 ZmMsg.documentName="Document Name";\r
60880 ZmMsg.documents="Documents";\r
60881 ZmMsg.domain="Domain";\r
60882 ZmMsg.domainPart="domain part";\r
60883 ZmMsg.domains="Domains";\r
60884 ZmMsg.done="Done";\r
60885 ZmMsg.dontInclude="Don't include original message";\r
60886 ZmMsg.dontNotifyOrganizer="Don't notify organizer";\r
60887 ZmMsg.dontNotifyOrganizerLabel="Don't Notify Organizer";\r
60888 ZmMsg.downLabel="Down";\r
60889 ZmMsg.download="Download";\r
60890 ZmMsg.downloadAll="Download all attachments";\r
60891 ZmMsg.downloadVoicemail="Download";\r
60892 ZmMsg.downloadVoicemailTooltip="Download the selected voice mail message";\r
60893 ZmMsg.draft="Draft";\r
60894 ZmMsg.draftSaved="Draft Saved";\r
60895 ZmMsg.draftSavedAuto="Draft Autosaved at {0}";\r
60896 ZmMsg.drafts="Drafts";\r
60897 ZmMsg.dueDate="Due Date";\r
60898 ZmMsg.duplicateAttendee="Attendee {0} is already added";\r
60899 ZmMsg.duration="Duration";\r
60900 ZmMsg.durationDays="{0} - {1}";\r
60901 ZmMsg.durationHours="{0} - {1}";\r
60902 ZmMsg.durationLabel="Duration:";\r
60903 ZmMsg.durationMultiDays="{0} {1} - {2} {3}";\r
60904 ZmMsg.edit="Edit";\r
60905 ZmMsg.editAll="Edit all";\r
60906 ZmMsg.editApptQuestion="Would you like to open only this instance or the series?";\r
60907 ZmMsg.editAsNew="Edit as New";\r
60908 ZmMsg.editContact="Edit Contact";\r
60909 ZmMsg.editFilter="Edit Filter";\r
60910 ZmMsg.editImg="Edit Image";\r
60911 ZmMsg.editNotebookChrome="Edit Template for Folder";\r
60912 ZmMsg.editNotebookFooter="Edit Footer for Folder";\r
60913 ZmMsg.editNotebookHeader="Edit Header for Folder";\r
60914 ZmMsg.editNotebookIndex="Edit Table of Contents";\r
60915 ZmMsg.editNotebookSideBar="Edit Side Bar for Folder";\r
60916 ZmMsg.editNotebookStyles="Edit Styles for Folder";\r
60917 ZmMsg.editProperties="Edit Properties";\r
60918 ZmMsg.editPropertiesTooltip="Edit the selected item's properties";\r
60919 ZmMsg.editReply="Edit Reply";\r
60920 ZmMsg.editRosterItem="Edit Buddy";\r
60921 ZmMsg.editTooltip="Edit the selected item";\r
60922 ZmMsg.editValue="Edit Value";\r
60923 ZmMsg.email="Email";\r
60924 ZmMsg.emailAddr="Email Address";\r
60925 ZmMsg.emailAddrHint="Email Address";\r
60926 ZmMsg.emailAddrLabel="Email address:";\r
60927 ZmMsg.emailAndIM="Email and Instant Messaging";\r
60928 ZmMsg.emailDeleteSchedule="Scheduled Email Deletion";\r
60929 ZmMsg.emailDeleteScheduleInboxRead="Inbox (Read):";\r
60930 ZmMsg.emailDeleteScheduleInboxUnread="Inbox (Unread):";\r
60931 ZmMsg.emailDeleteScheduleJunk="Junk:";\r
60932 ZmMsg.emailDeleteScheduleSent="Sent Email:";\r
60933 ZmMsg.emailDeleteScheduleTrash="Trash:";\r
60934 ZmMsg.emailLabel="Email:";\r
60935 ZmMsg.emailNotificationDescription="Send an email notification to:";\r
60936 ZmMsg.emailNotificationError="The email notification address is invalid";\r
60937 ZmMsg.emailNotificationLabel="Email Notification:";\r
60938 ZmMsg.emailedContacts="Emailed Contacts";\r
60939 ZmMsg.emoticons="Emoticons";\r
60940 ZmMsg.empty="Empty";\r
60941 ZmMsg.emptyCell="Empty Cell";\r
60942 ZmMsg.emptyContact="Empty Contact Not Saved";\r
60943 ZmMsg.emptyContactSave="Contact must have at least one field set.";\r
60944 ZmMsg.emptyDocName="Document must have a file name.";\r
60945 ZmMsg.emptyFolder="Empty Folder";\r
60946 ZmMsg.emptyGroup="Empty Group Not Saved";\r
60947 ZmMsg.emptyJunk="Empty Junk";\r
60948 ZmMsg.emptyTrash="Empty Trash";\r
60949 ZmMsg.enableAppleICalDelegation="Enable delegation for Apple iCal CalDAV client";\r
60950 ZmMsg.end="End";\r
60951 ZmMsg.endDate="End Date";\r
60952 ZmMsg.endLabel="End:";\r
60953 ZmMsg.endOn="End On:";\r
60954 ZmMsg.endTime="End Time";\r
60955 ZmMsg.endTimeLabel="End Time:";\r
60956 ZmMsg.enrichedText="Enriched Text";\r
60957 ZmMsg.enterAddrBelow="Or enter addresses below (comma separated)";\r
60958 ZmMsg.enterAddresses="Enter addresses on separate lines";\r
60959 ZmMsg.enterCommand="Enter Command:";\r
60960 ZmMsg.enterEmailAddress="enter email address";\r
60961 ZmMsg.enterEmailAddressOrDomain="enter email address or domain";\r
60962 ZmMsg.enterNewPassword="Please enter a new password and re-enter it in the confirmation field.";\r
60963 ZmMsg.enterUsername="Please enter your username and password.";\r
60964 ZmMsg.entireAddress="entire address";\r
60965 ZmMsg.error="error";\r
60966 ZmMsg.errorAlreadyExists='A folder with name "{0}" already exists.';\r
60967 ZmMsg.errorApplication="An unknown application error has occurred.";\r
60968 ZmMsg.errorAttachment="Attachment error: {0}<br>Unable to upload attachment.";\r
60969 ZmMsg.errorAttachmentRemove="Unable to remove attachment.";\r
60970 ZmMsg.errorAttachmentTooBig="Attachment size is too big.";\r
60971 ZmMsg.errorBrowserUnsupported="We have detected that you are running <b>{0} {1}</b>,which is an unsupported browser for the Zimbra Collaboration Suite. The Zimbra Collaboration Suite is supported on:<br /><ul><li>IE 6.0+</li><li>Mozilla 1.4+</li><li>Netscape 7.1+</li><li>Firefox 1.0+</li><li>Safari 1.3+ (BETA)</li></ul><br />";\r
60972 ZmMsg.errorCalendarParse="There is an error in the syntax of your query. Correct the syntax and run your query again.";\r
60973 ZmMsg.errorCalendarSettingAfterCreate="Calendar was created successfully but an error occurred setting properties.";\r
60974 ZmMsg.errorCannotDeleteFolder="Only empty folders can be deleted for this account. Please delete all messages in this folder first.";\r
60975 ZmMsg.errorCannotRename='Cannot rename folder "{0}".';\r
60976 ZmMsg.errorCap="Error";\r
60977 ZmMsg.errorContact="If the problem persists, please contact your System Administrator.";\r
60978 ZmMsg.errorCookiesDisabled="Oops! It appears your browser does not allow cookies. You need to enable cookies in order to use the Zimbra Collaboration Suite.";\r
60979 ZmMsg.errorCreateContact="Unable to Create Contact";\r
60980 ZmMsg.errorCreateFile="Unable to Create File";\r
60981 ZmMsg.errorCreateGroup="Unable to Create Group";\r
60982 ZmMsg.errorCreateUrl="Unable to create URL from email.";\r
60983 ZmMsg.errorDate="You have entered an invalid date.";\r
60984 ZmMsg.errorDefaultIdentityName='The name "{0}" is not allowed.';\r
60985 ZmMsg.errorDeletePopFolder='Unable to delete folder because it is associated to the POP account named "{1}".<p>In order to delete this folder, change the destination folder for the POP account or delete the POP account.';\r
60986 ZmMsg.errorDuplicateName="Name is not unique.";\r
60987 ZmMsg.errorEndByDate="End by date cannot be before start date.";\r
60988 ZmMsg.errorFileAlreadyExists='A file with name "{0}" already exists.';\r
60989 ZmMsg.errorGeneric="Could not complete operation.";\r
60990 ZmMsg.errorGettingAppts="Error Getting Appointments";\r
60991 ZmMsg.errorGroupName="Group Name is a required field.";\r
60992 ZmMsg.errorHtmlSignatureTooLong="HTML Signature exceeds maximum length of {0,number} ( it includes the html tags ).";\r
60993 ZmMsg.errorIdentityAlreadyExists='An identity with name "{0}" already exists.';\r
60994 ZmMsg.errorImportNoContent="Import Error: file not found or file has no content.";\r
60995 ZmMsg.errorImportStatus="Import Error {0}";\r
60996 ZmMsg.errorImporting="An error occurred during the import";\r
60997 ZmMsg.errorInvalidDates="Invalid dates (make sure end date/time is after start date/time).";\r
60998 ZmMsg.errorInvalidEmail="Email format not understood.";\r
60999 ZmMsg.errorInvalidEmail2="Invalid email format found.";\r
61000 ZmMsg.errorInvalidFolder="Folder does not exist: {0}";\r
61001 ZmMsg.errorInvalidName='Sorry, "{0}" is not a valid name. It contains at least one invalid character.';\r
61002 ZmMsg.errorInvalidPageOrSectionName='A page or notebook with name "{0}" already exists.\nPlease select a different name.';\r
61003 ZmMsg.errorInvalidPass="New password does not meet the system's rules (i.e. length). Contact your System Administrator for more information.";\r
61004 ZmMsg.errorInvalidPhone="The phone number is invalid";\r
61005 ZmMsg.errorInvalidPrefName="Invalid preference name.";\r
61006 ZmMsg.errorInvalidPrefValue="Invalid preference value.";\r
61007 ZmMsg.errorInvalidSize="The size value is invalid.";\r
61008 ZmMsg.errorJavaScriptRequired='<font face=arial>JavaScript must be enabled in order for you to use the Zimbra advanced client. However, it seems JavaScript is either disabled or not supported by your browser. To use Zimbra, enable JavaScript by changing your browser options, then <a href="{0}">try again</a> or click <a href="{1}">here</a> to switch to the basic client which does not require JavaScript.<br><br><a target="_new" "href="http://www.zimbra.com">Zimbra</a> :: the leader in open source messaging and collaboration<br><a target="_new" href="http://www.zimbra.com/blog">Zimbra Blog</a> | <a target="_new" href="http://wiki.zimbra.com">Zimbra Wiki</a></font>';\r
61009 ZmMsg.errorLabel="Error:";\r
61010 ZmMsg.errorLessThanOne="Value must be greater than zero.";\r
61011 ZmMsg.errorMaintenanceMode="This account is currently in maintenance mode.";\r
61012 ZmMsg.errorMissingFwdAddr="A forwarding address is required if not saving local copy of messages.";\r
61013 ZmMsg.errorMissingGroup="Group Name and Group Members are required fields.";\r
61014 ZmMsg.errorMissingNotifyAddr="An address is required for notification.";\r
61015 ZmMsg.errorMissingRequired="Required fields not specified.";\r
61016 ZmMsg.errorMissingSubject="Subject is a required field.";\r
61017 ZmMsg.errorModifyContact="Unable to Modify Contact";\r
61018 ZmMsg.errorMoveAppt="Unable to move appointment.";\r
61019 ZmMsg.errorMovePopFolder='Unable to move folder because it is associated to the POP account named "{1}".<p>In order to move this folder, change the destination folder for the POP account or delete the POP account.';\r
61020 ZmMsg.errorMyCardDelete="My Card cannot be deleted.";\r
61021 ZmMsg.errorMyCardMove="My Card cannot be moved.";\r
61022 ZmMsg.errorNetwork="A network error has occurred.";\r
61023 ZmMsg.errorNoActiveX="You need to enable ActiveX controls in order to use the Zimbra Collaboration Suite.";\r
61024 ZmMsg.errorNoPhone="You need to enter a phone number to forward from.";\r
61025 ZmMsg.errorNoSuchConv="No such conversation exists.";\r
61026 ZmMsg.errorNoSuchFolder="No such folder exists.";\r
61027 ZmMsg.errorNoSuchMsg="No such message exists.";\r
61028 ZmMsg.errorNoSuchPart="No such message part exists.";\r
61029 ZmMsg.errorNoSuchSavedSearch="No such saved search exists.";\r
61030 ZmMsg.errorNoSuchTag="No such tag exists.";\r
61031 ZmMsg.errorNoWeekdayChecked="No weekday(s) checked.";\r
61032 ZmMsg.errorNotAllowedFile="Please attach allowed files ({0})";\r
61033 ZmMsg.errorNotAuthenticated="User not authenticated.";\r
61034 ZmMsg.errorNotImageFile="Please attach an image file (JPG, PNG, GIF)";\r
61035 ZmMsg.errorPassChange="Your password is no longer valid. Please choose a new password.";\r
61036 ZmMsg.errorPassChangeTooSoon="Password cannot be changed too soon.";\r
61037 ZmMsg.errorPassLocked="Password locked. User not allowed to change password. Please contact your System Administrator.";\r
61038 ZmMsg.errorPassRecentlyUsed="The password you submitted has recently been used. Please choose a different password.";\r
61039 ZmMsg.errorPermission="Permission denied.";\r
61040 ZmMsg.errorPermissionMsg="In order to view this, you must have appropriate permission.";\r
61041 ZmMsg.errorPermissionRequired="In order for the recipient to view the links, they must<br> have permission to view the contents of the containing folder. <p> <b>Do you want to send the links anyway?</b>";\r
61042 ZmMsg.errorPhoneNotUnique="The phone number is already in the list of numbers being forwarded.";\r
61043 ZmMsg.errorPrivateVoicemail="The selected voice mail message is private, so it can not be attached to an email message.";\r
61044 ZmMsg.errorQueryParse="Unable to parse the search query.";\r
61045 ZmMsg.errorQuotaExceeded="Could not attach the file(s) because you have exceeded your mail quota.";\r
61046 ZmMsg.errorReports="Error Reports";\r
61047 ZmMsg.errorSaving="Cannot save. You have errors that must be corrected.";\r
61048 ZmMsg.errorSavingAppt="Unable to save appointment.";\r
61049 ZmMsg.errorSavingPageNameRequired="Cannot save page. You must enter a name for the new page.";\r
61050 ZmMsg.errorSavingWithMessage="Cannot save. You have errors that must be corrected:<p>{0}";\r
61051 ZmMsg.errorSearchNotExpanded="Not all results were returned (too many results were found). Please be more specific in your search criteria.";\r
61052 ZmMsg.errorService="A network service error has occurred.";\r
61053 ZmMsg.errorSignatureTooLong="Signature exceeds maximum length of {0,number}.";\r
61054 ZmMsg.errorSubFolderNotAllowed="Subfolders under {0} are not allowed.";\r
61055 ZmMsg.errorTooManyContacts="Contact could not be created because you have exceeded your contact quota.";\r
61056 ZmMsg.errorTooManyIdentities="The identity could not be created because you have exceeded your identity quota.";\r
61057 ZmMsg.errorTryAgain="Please correct any errors and retry.";\r
61058 ZmMsg.errorUrlMissing="Please enter a valid URL.";\r
61059 ZmMsg.errorWhiteBlackListExceeded="You have reached your maximum limit for this list.";\r
61060 ZmMsg.event="Event";\r
61061 ZmMsg.everyDay="Every Day";\r
61062 ZmMsg.everyMonth="Every Month";\r
61063 ZmMsg.everyWeek="Every Week";\r
61064 ZmMsg.everyYear="Every Year";\r
61065 ZmMsg.exactMatch="matches exactly";\r
61066 ZmMsg.exampleEmailAddr="e.g. bob@example.com";\r
61067 ZmMsg.exampleEmailName="e.g. Bob Smith";\r
61068 ZmMsg.exampleFolderNames="folder name(s)";\r
61069 ZmMsg.exampleMailServer="e.g. mail.example.com";\r
61070 ZmMsg.excludeFromFreeBusy="Exclude this calendar when reporting free/busy times";\r
61071 ZmMsg.execute="Execute";\r
61072 ZmMsg.exists="exists";\r
61073 ZmMsg.exitDocNotSaved="Document is not saved.";\r
61074 ZmMsg.exitDocUnSavedChanges="Document may contain unsaved changes.";\r
61075 ZmMsg.expand="Expand";\r
61076 ZmMsg.expandAll="Expand All";\r
61077 ZmMsg.expandCollapse="Expand / Collapse";\r
61078 ZmMsg.explorerView="Explorer View";\r
61079 ZmMsg.exportEmptyName="No Data to Export";\r
61080 ZmMsg.exportErrorMissingFolder="Must specify folder to export.";\r
61081 ZmMsg.exportErrorRootNotAllowed="Not allowed to export from root folder for this type.";\r
61082 ZmMsg.exportFailed="Export failed.";\r
61083 ZmMsg.exportFilenamePrefixAllFolders="All";\r
61084 ZmMsg.exportIgnoreArchive="Ignore Local Folders";\r
61085 ZmMsg.exportLabel="Export:";\r
61086 ZmMsg.exportSkipMeta="Only export content files, exclude meta data";\r
61087 ZmMsg.exportSuccess="Export succeeded.";\r
61088 ZmMsg.exportToCSV="Export as .CSV File";\r
61089 ZmMsg.exportToCSVHint='You can export your contacts in the standard "Comma-Separated Values" (.csv) format, then import them into another contact manager program. See documentation in the other program for help in importing.';\r
61090 ZmMsg.exportToICS="Export as .ICS File";\r
61091 ZmMsg.exportToICSHint="You can export your appointments in the standard iCalendar (.ics) format, then import them into another calendar program. See documentation in the other program for help in importing.";\r
61092 ZmMsg.exportToTGZHint='All account data can be exported to a "Tar-GZipped" (.tgz) format which can be imported back into the system.';\r
61093 ZmMsg.expression="Expression";\r
61094 ZmMsg.externalAccess="Access from Other Mail Clients";\r
61095 ZmMsg.externalAccessPop="POP access:";\r
61096 ZmMsg.externalAccessPopCurrentValue="Current value is to only download mail that has arrived after {0,date,short} at {0,time,short}.";\r
61097 ZmMsg.externalAccessPopDownloadAll="Allow all mail, including old mail, to be downloaded";\r
61098 ZmMsg.externalAccessPopDownloadFromNow="Allow only mail from now to be downloaded";\r
61099 ZmMsg.externalAccessPopNotSet="Current value is to download all mail, including old mail.";\r
61100 ZmMsg.externalImages="External images are not displayed.";\r
61101 ZmMsg.extra="Extra";\r
61102 ZmMsg.fColorLabel="Color:";\r
61103 ZmMsg.fFamilyLabel="Font:";\r
61104 ZmMsg.fSizeLabel="Size:";\r
61105 ZmMsg.favIconUrl="/img/logo/favicon.ico";\r
61106 ZmMsg.fax="Fax";\r
61107 ZmMsg.feedInvalid="Content could not be retrieved. Make sure the following URL is an RSS/ATOM feed: {0}";\r
61108 ZmMsg.feedUnreachable="The following URL is not currently reachable: {0}";\r
61109 ZmMsg.fetchingAlexaThumbnail="Fetching<br />Thumbnail...";\r
61110 ZmMsg.fileAs="File As";\r
61111 ZmMsg.fileAsCompanyAsSecondaryOnly="({0})";\r
61112 ZmMsg.fileAsCompanyName="{1} ({0})";\r
61113 ZmMsg.fileAsFirstLast="{0} {1}";\r
61114 ZmMsg.fileAsLabel="File as:";\r
61115 ZmMsg.fileAsLastFirst="{1}, {0}";\r
61116 ZmMsg.fileAsNameAsSecondaryOnly="({0})";\r
61117 ZmMsg.fileAsNameCompany="{0} ({1})";\r
61118 ZmMsg.fileCreated="File Created";\r
61119 ZmMsg.fileIntoFolder="File into folder";\r
61120 ZmMsg.fileLabel="File:";\r
61121 ZmMsg.filename="Filename:";\r
61122 ZmMsg.files="Files";\r
61123 ZmMsg.filter="Filter";\r
61124 ZmMsg.filterActions="Perform the following actions:";\r
61125 ZmMsg.filterCondition="If {0,choice,0#any|1#all} of the following conditions are met:";\r
61126 ZmMsg.filterEdit="Edit Filter";\r
61127 ZmMsg.filterError="There was a problem parsing your filter rules:";\r
61128 ZmMsg.filterErrorAction='The action "{0}" is missing one or more values.';\r
61129 ZmMsg.filterErrorCondition='The condition "{0}" is missing one or more values.';\r
61130 ZmMsg.filterErrorIllegalCharacter='Filter values may not contain double-quote (") or backslash (\\)';\r
61131 ZmMsg.filterErrorNameExists="There is already a filter by that name.";\r
61132 ZmMsg.filterErrorNoName="The new filter needs a name.";\r
61133 ZmMsg.filterForwardActionWarning='One or more of the selected filters contains an action to "Forward To Address". This action cannot be run on existing filters and will be ignored.';\r
61134 ZmMsg.filterMoveDown="Move Down";\r
61135 ZmMsg.filterMoveUp="Move Up";\r
61136 ZmMsg.filterName="Filter Name";\r
61137 ZmMsg.filterNameLabel="Filter Name:";\r
61138 ZmMsg.filterRemove="Delete Filter";\r
61139 ZmMsg.filterRuleApplied="Filter run complete. {0} message(s) were affected.";\r
61140 ZmMsg.filterRuleChangesSavedImmediately="Note: Changes to filter rules are saved immediately.";\r
61141 ZmMsg.filterRules="Filters";\r
61142 ZmMsg.filterRun="Run Filter";\r
61143 ZmMsg.filtersSaved="Filters Saved";\r
61144 ZmMsg.find="Find";\r
61145 ZmMsg.findAttendees="Find Attendees";\r
61146 ZmMsg.findLabel="Find:";\r
61147 ZmMsg.findLocations="Find Locations";\r
61148 ZmMsg.findNReplaceTitle="Find and Replace";\r
61149 ZmMsg.findResources="Find Resources";\r
61150 ZmMsg.findShares="Find Shares";\r
61151 ZmMsg.findWhatLabel="Find what:";\r
61152 ZmMsg.finishLoading="Click here to finish loading this contact";\r
61153 ZmMsg.firstNameHint="First Name";\r
61154 ZmMsg.fixedCellWidth="Fixed Cell Width";\r
61155 ZmMsg.flag="Flag";\r
61156 ZmMsg.flagged="Flagged";\r
61157 ZmMsg.flags="Flags";\r
61158 ZmMsg.flashBrowser="Flash the browser title";\r
61159 ZmMsg.flashMailAppTab="Highlight the Mail tab";\r
61160 ZmMsg.floor="Floor";\r
61161 ZmMsg.folder="Folder";\r
61162 ZmMsg.folderLabel="Folder:";\r
61163 ZmMsg.folderLc="folder";\r
61164 ZmMsg.folderName="Folder name";\r
61165 ZmMsg.folderNameReserved="That folder name is reserved. Please use another name.";\r
61166 ZmMsg.folderNoLocation="You must select a location for the folder.";\r
61167 ZmMsg.folderNotify="Folder Notifications";\r
61168 ZmMsg.folderOrSearchNameExists="A folder or saved search with that name already exists. Please use another name.";\r
61169 ZmMsg.folderProperties="Folder Properties";\r
61170 ZmMsg.folderSharing="Sharing for this folder";\r
61171 ZmMsg.folderSize="Folder Size";\r
61172 ZmMsg.folderType="Folder type:";\r
61173 ZmMsg.folderUnread="{0} ({1})";\r
61174 ZmMsg.folders="Folders";\r
61175 ZmMsg.foldersLabel="Folders:";\r
61176 ZmMsg.foldersSearches="Folders and Saved Searches";\r
61177 ZmMsg.foldersShown="{0} {1} shown";\r
61178 ZmMsg.fontBackground="Font Background";\r
61179 ZmMsg.fontBackgroundLabel="Font Background:";\r
61180 ZmMsg.fontColor="Font Color";\r
61181 ZmMsg.fontColorLabel="Font Color:";\r
61182 ZmMsg.format="Format";\r
61183 ZmMsg.formatAsHtml="Format As HTML";\r
61184 ZmMsg.formatAsText="Format As Plain Text";\r
61185 ZmMsg.formatHtmlSource="HTML Source";\r
61186 ZmMsg.formatMediaWiki="MediaWiki Syntax";\r
61187 ZmMsg.formatNotSupported="Format not supported";\r
61188 ZmMsg.formatRichText="Rich Text";\r
61189 ZmMsg.formatTWiki="TWiki Syntax";\r
61190 ZmMsg.formatTooltip="Choose the format to compose in";\r
61191 ZmMsg.forward="Forward";\r
61192 ZmMsg.forwardAtt="Forward as Attachment";\r
61193 ZmMsg.forwardByEmail="Forward by Email";\r
61194 ZmMsg.forwardByEmailTooltip="Forward the selected voice mail message as an email attachment";\r
61195 ZmMsg.forwardCopyTo="Forward a copy to:";\r
61196 ZmMsg.forwardInclude="When forwarding:";\r
61197 ZmMsg.forwardInline="Forward Inline";\r
61198 ZmMsg.forwardInstance="Forward Instance";\r
61199 ZmMsg.forwardInvitesTo="Forward my invites to:";\r
61200 ZmMsg.forwardOptions="Change format, change how original is forwarded";\r
61201 ZmMsg.forwardSeries="Forward Series";\r
61202 ZmMsg.forwardTo="Forward to";\r
61203 ZmMsg.forwardToAddress="Forward to Address";\r
61204 ZmMsg.forwardTooltip="Forward the selected message";\r
61205 ZmMsg.forwardTooltipConv="Forward the most recent message in the conversation";\r
61206 ZmMsg.forwarded="Forwarded";\r
61207 ZmMsg.forwardedMessage="Forwarded Message";\r
61208 ZmMsg.forwardingEmail="When forwarding an email:";\r
61209 ZmMsg.forwardingLabel="Forward:";\r
61210 ZmMsg.fragment="Fragment";\r
61211 ZmMsg.fragmentIsEmpty="(This message is empty)";\r
61212 ZmMsg.free="Free";\r
61213 ZmMsg.freeBusyAllowAll="Allow both internal and external users to see my free/busy information";\r
61214 ZmMsg.freeBusyAllowLocal="Allow only internal users to see my free/busy information";\r
61215 ZmMsg.freeBusyAllowNone="Don't let anyone see my free/busy information";\r
61216 ZmMsg.freeBusyAllowSome="Allow only the following internal users to see my free/busy information:";\r
61217 ZmMsg.freeBusyLabel="Free / Busy:";\r
61218 ZmMsg.freeBusyLink="Mail Free & Busy link";\r
61219 ZmMsg.freeBusyLinkTooltip="Email Free & Busy link";\r
61220 ZmMsg.from="From";\r
61221 ZmMsg.fromDetail='Choose the name that appears in the "From" field of email messages';\r
61222 ZmMsg.fromLabel="From:";\r
61223 ZmMsg.fullname="{0} {1} {2} {4}";\r
61224 ZmMsg.fullnameMaiden="{0} {1} {2} ({3}) {4}";\r
61225 ZmMsg.fullnameMaidenSuffix="{0} {1} {2} ({3}) {4}, {5}";\r
61226 ZmMsg.fullnameSuffix="{0} {1} {2} {4}, {5}";\r
61227 ZmMsg.fw="Fw";\r
61228 ZmMsg.fwd="Fwd";\r
61229 ZmMsg.galAutocomplete="Include addresses in the Global Address List";\r
61230 ZmMsg.galAutocompleteFailure="GAL Auto-Complete Disabled";\r
61231 ZmMsg.galAutocompleteSession="GAL autocomplete has been temporarily disabled. Check to re-enable.";\r
61232 ZmMsg.galAutocompleteTimedOut="GAL Auto-Complete Timed Out";\r
61233 ZmMsg.galAutocompleteWaiting="Waiting for GAL...";\r
61234 ZmMsg.gb="GB";\r
61235 ZmMsg.general="General";\r
61236 ZmMsg.genericTextHint="Enter text";\r
61237 ZmMsg.gifImage="GIF Image";\r
61238 ZmMsg.global="Global";\r
61239 ZmMsg.globalInbox="Global Inbox";\r
61240 ZmMsg.gmail="Gmail";\r
61241 ZmMsg.goBack="Go back one page";\r
61242 ZmMsg.goForward="Go forward one page";\r
61243 ZmMsg.goToCalendar="Go to Calendar";\r
61244 ZmMsg.goToContacts="Go to Address Book";\r
61245 ZmMsg.goToDate="Go to date";\r
61246 ZmMsg.goToDocuments="Go to Documents";\r
61247 ZmMsg.goToFolder="Go to {0}";\r
61248 ZmMsg.goToHelp="Read online help documentation";\r
61249 ZmMsg.goToMail="Go to Mail";\r
61250 ZmMsg.goToOptions="View or edit your options";\r
61251 ZmMsg.goToPortal="Go to Welcome page";\r
61252 ZmMsg.goToTasks="Go to Tasks";\r
61253 ZmMsg.goToUrl="Go to {0}";\r
61254 ZmMsg.goToVoice="Go to Voice";\r
61255 ZmMsg.gotoBriefcase="Go to Briefcase";\r
61256 ZmMsg.grantFormText='To share a folder, choose the type and then press the "Share" button.';\r
61257 ZmMsg.granteeGone='<p>At least one user or group with whom the following items have been shared no longer exists:</p><ul>{0}</ul><p>Press OK to revoke those shares, or Cancel to exit. If you cancel, you can then revoke each share individually by clicking the "Revoke" link.</p>';\r
61258 ZmMsg.gray="Gray";\r
61259 ZmMsg.green="Green";\r
61260 ZmMsg.group="Contact Group";\r
61261 ZmMsg.groupBadAddresses="<p>The following addresses appear to be invalid: {0}</p><br>";\r
61262 ZmMsg.groupCreated="Group Created";\r
61263 ZmMsg.groupHint="Enter addresses on separate lines";\r
61264 ZmMsg.groupMailBy="Group mail by";\r
61265 ZmMsg.groupMembers="Group Members:";\r
61266 ZmMsg.groupMessagesLabel="Group mail by:";\r
61267 ZmMsg.groupNameLabel="Group Name:";\r
61268 ZmMsg.groupSaved="Group Saved";\r
61269 ZmMsg.happy="happy";\r
61270 ZmMsg.hardDeleteTooltip="Delete selected item(s)";\r
61271 ZmMsg.hasAlias="has alias";\r
61272 ZmMsg.header="Header";\r
61273 ZmMsg.headerNamed="Header Named";\r
61274 ZmMsg.heading1="Heading 1";\r
61275 ZmMsg.heading2="Heading 2";\r
61276 ZmMsg.heading3="Heading 3";\r
61277 ZmMsg.heading4="Heading 4";\r
61278 ZmMsg.heading5="Heading 5";\r
61279 ZmMsg.heading6="Heading 6";\r
61280 ZmMsg.heightLabel="Height:";\r
61281 ZmMsg.help="Help";\r
61282 ZmMsg.helpURI="/help/advanced/Zimbra_User_Help.htm";\r
61283 ZmMsg.hideBCC="Hide BCC";\r
61284 ZmMsg.hideDetails="Hide Details";\r
61285 ZmMsg.high="High";\r
61286 ZmMsg.highPriorityTooltip="This item has been marked as high priority";\r
61287 ZmMsg.hiliteObjects="Highlight objects.";\r
61288 ZmMsg.historyLabel="History";\r
61289 ZmMsg.home="Home";\r
61290 ZmMsg.horizRule="Horizontal Rule";\r
61291 ZmMsg.htmlDocument="HTML";\r
61292 ZmMsg.icon="Icon";\r
61293 ZmMsg.ics="ICS";\r
61294 ZmMsg.identities="Identities";\r
61295 ZmMsg.identitiesAdd="Add a new identity";\r
61296 ZmMsg.identitiesIntro="<b>Identities</b> group email settings together to allow you to quickly switch between different roles. For example, if you manage work and identity emails from the same account, you can have an identity for each that sets the signature, reply-to address, etc. When composing an email, a selector allows you to quickly switch between different identities.";\r
61297 ZmMsg.identitiesTab="Mail Identities";\r
61298 ZmMsg.identitiesUseDefault="Use same settings as Default Identity";\r
61299 ZmMsg.identityAdvanced="Advanced";\r
61300 ZmMsg.identityChangeWarning="Do you want to apply the changed settings? <br> <b>Any changes you have made to the message will be discarded.</b>";\r
61301 ZmMsg.identityInfoContent="Use mail identities to quickly customize Mail for different situations -- for example:<UL style='margin-top: 5px; margin-bottom: 5px;'><LI>To respond to mail from home or work using different addresses</LI><LI>To manage different roles in your job</LI></UL>You can always change the current identity when composing a message.";\r
61302 ZmMsg.identityInfoTitle="About Mail Identities:";\r
61303 ZmMsg.identityNameError="The identity name is invalid";\r
61304 ZmMsg.identityNameLabel="Identity name:";\r
61305 ZmMsg.identityTextExternal="{0} <{2}>";\r
61306 ZmMsg.identityTextPersona="{0} ({1} <{2}>)";\r
61307 ZmMsg.identityTextPrimary="{0} ({1} <{2}>)";\r
61308 ZmMsg.im="Instant Messaging";\r
61309 ZmMsg.imAccounts="Accounts";\r
61310 ZmMsg.imAddToBuddyList="Add {0} to your buddy list";\r
61311 ZmMsg.imAddress="Buddy Address";\r
61312 ZmMsg.imAddressLabel="Buddy Address:";\r
61313 ZmMsg.imAnonymousInfo="Make users of the room anonymous";\r
61314 ZmMsg.imAnonymousLabel="Anonymous:";\r
61315 ZmMsg.imAppTitle="IM [Beta]";\r
61316 ZmMsg.imArrivalLabel="When a message arrives:";\r
61317 ZmMsg.imBlock="Block";\r
61318 ZmMsg.imBootedYahoo="You have logged in to Yahoo! Messenger from another location.";\r
61319 ZmMsg.imBuddyArchive="View Chat Archive";\r
61320 ZmMsg.imChat="Chat";\r
61321 ZmMsg.imChatMultiWindow="Multiple Windows";\r
61322 ZmMsg.imChatTabbed="Tabbed Window";\r
61323 ZmMsg.imChatTitle="{0} ({1})";\r
61324 ZmMsg.imCloseAllChats="Close All Chats";\r
61325 ZmMsg.imCloseChat="Close This Chat";\r
61326 ZmMsg.imCloseOtherChats="Close Other Chats";\r
61327 ZmMsg.imCloseWindow="Close window";\r
61328 ZmMsg.imConference="Conference";\r
61329 ZmMsg.imConferenceRooms="Conference Rooms";\r
61330 ZmMsg.imConferences="Conferences";\r
61331 ZmMsg.imConfirmDeleteRosterItem="Are you sure you want to delete {0}?";\r
61332 ZmMsg.imCreateNewGroup="Create New Group";\r
61333 ZmMsg.imCustomStatusMsg="New Status Message...";\r
61334 ZmMsg.imEnteredChat="{0} has joined the conference";\r
61335 ZmMsg.imErrorYahooBuddy="Unable to add buddy from Yahoo! service.";\r
61336 ZmMsg.imErrorYahooBuddyLogin="Unable to add buddy from Yahoo! service because you are not logged in to Yahoo!. Do you want to log in to Yahoo!?";\r
61337 ZmMsg.imGateway="IM Service";\r
61338 ZmMsg.imGatewayDisconnectedHeader="You have been disconnected from Yahoo! Messenger because you signed in from another location.";\r
61339 ZmMsg.imGatewayLabel="IM Service:";\r
61340 ZmMsg.imGatewayLoggedInHeader="You are logged in to Yahoo! Messenger as <b>{0}</b>";\r
61341 ZmMsg.imGatewayNotLoggedInHeader="You are not logged in to Yahoo! Messenger. Login with your Yahoo! ID and password below.";\r
61342 ZmMsg.imGateway_aol="AOL";\r
61343 ZmMsg.imGateway_msn="MSN";\r
61344 ZmMsg.imGateway_xmpp="Zimbra (local)";\r
61345 ZmMsg.imGateway_yahoo="Yahoo!";\r
61346 ZmMsg.imGroupChat="Group Chat";\r
61347 ZmMsg.imGroupExists="A group with that name exists. Please use another name.";\r
61348 ZmMsg.imGroupItemTooltip="You have {1,number} {1,choice,0#buddies|1#buddy|2#buddies} in group {0}";\r
61349 ZmMsg.imGroupName="Group Name";\r
61350 ZmMsg.imGroups="Buddy Groups";\r
61351 ZmMsg.imGroupsLabel="Buddy Groups:";\r
61352 ZmMsg.imGwOfflineTooltip="You are not logged in to {0}. <BR/> Click here to log in.";\r
61353 ZmMsg.imGwOnlineTooltip="You are logged in to {0} as {1}. <BR/> Click here to log out.";\r
61354 ZmMsg.imIdle="Idle";\r
61355 ZmMsg.imInvitation="Invitation";\r
61356 ZmMsg.imInvitationFrom="Invitation from {0}";\r
61357 ZmMsg.imInviteNotification="<b>{0}</b> invites you to a conference";\r
61358 ZmMsg.imLabel="IM:";\r
61359 ZmMsg.imLeftChat="{0} has left the conference";\r
61360 ZmMsg.imLogOut="Log out";\r
61361 ZmMsg.imLoginDifferent="Log in as a different user";\r
61362 ZmMsg.imLoginLabel="Login:";\r
61363 ZmMsg.imLogoutYahoo="Log out of Yahoo! Messenger";\r
61364 ZmMsg.imMarkChatImportant='Mark this chat as "important"';\r
61365 ZmMsg.imMinimize="Minimize chat window";\r
61366 ZmMsg.imMinimizedLabel="[{0} chats]";\r
61367 ZmMsg.imName="Buddy Name";\r
61368 ZmMsg.imNameLabel="Buddy Name:";\r
61369 ZmMsg.imNewBuddy='Add "{0}" to Buddy List...';\r
61370 ZmMsg.imNewBuddyTooltip="Create a new buddy";\r
61371 ZmMsg.imNewChat="New Chat";\r
61372 ZmMsg.imNewChatName='Chat with "{0}"';\r
61373 ZmMsg.imNewConferenceRoom="Create a new conference room";\r
61374 ZmMsg.imNewConferenceRoomTitle="Create a new conference room";\r
61375 ZmMsg.imNewGroup="New Group";\r
61376 ZmMsg.imNewRosterItemToast='Added Buddy "{0}"';\r
61377 ZmMsg.imNoBuddies='Your buddy list is empty. <span class="FakeAnchor" onclick="{0}">Click here</span> or on the <span class="ImgNewContact inlineIcon FakeAnchor" onclick="{0}">&nbsp;&nbsp;&nbsp;&nbsp;</span> icon to create a buddy.';\r
61378 ZmMsg.imNotLoggedIn='You are not logged in to IM. <span class="FakeAnchor" onclick="{0}">Click here</span> to log in.';\r
61379 ZmMsg.imNotLoggedInPrefs='You must be logged in to IM before you can update IM accounts. <span class="FakeAnchor" onclick="{0}">Click here</span> to log in.';\r
61380 ZmMsg.imNotificationsLabel="Notifications:";\r
61381 ZmMsg.imPasswordExpired="Your Yahoo! Messenger session has expired. Please log in again.";\r
61382 ZmMsg.imPasswordFailed="The Yahoo! ID and password do not match.";\r
61383 ZmMsg.imPasswordFailedTitle="Login failed.";\r
61384 ZmMsg.imPasswordInfo="You may choose to password protect the room";\r
61385 ZmMsg.imPasswordMismatch="The passwords don't match.";\r
61386 ZmMsg.imPermanentInfo="Preserve the room after all users leave";\r
61387 ZmMsg.imPermanentLabel="Permanent:";\r
61388 ZmMsg.imPoweredBy="Instant Messaging Powered by";\r
61389 ZmMsg.imPrefAutoLogin="Automatically log in to instant messaging services";\r
61390 ZmMsg.imPrefIdleStatus="Set presence";\r
61391 ZmMsg.imPrefIdleStatusLabel="Set presence:";\r
61392 ZmMsg.imPrefIdleTimeout="Idle timeout";\r
61393 ZmMsg.imPrefIdleTimeoutLabel="Idle timeout:";\r
61394 ZmMsg.imPrefIdleTimeoutMinutes="{0,number} {0,choice,0#minutes|1#minute|2#minutes}";\r
61395 ZmMsg.imPrefInstantNotify="Enable instant notifications";\r
61396 ZmMsg.imPrefLogChats="Save chat history";\r
61397 ZmMsg.imPrefNotifyPresence="Display presence notifications";\r
61398 ZmMsg.imPrefNotifyStatus="Display notification when a buddy changes status";\r
61399 ZmMsg.imPrefReportIdle="Report idle status";\r
61400 ZmMsg.imPresence="Presence";\r
61401 ZmMsg.imReconnect="reconnect";\r
61402 ZmMsg.imReconnectCaps="Reconnect";\r
61403 \r
61404 ZmMsg.imRememberYahoo="Remember this Yahoo! ID";\r
61405 ZmMsg.imRemoveRosterItemToast='Removed Buddy "{0}"';\r
61406 ZmMsg.imRestore="Restore chat window";\r
61407 ZmMsg.imRoomNameLabel="Room Name:";\r
61408 ZmMsg.imRoomNameRequired="The room name is empty. It's required.";\r
61409 ZmMsg.imRoomPasswordFailed="The password is incorrect.";\r
61410 ZmMsg.imRoomPasswordRequired="A password is required to enter the room";\r
61411 ZmMsg.imRoomSettings="Settings for the room";\r
61412 ZmMsg.imScreenName="Screen name:";\r
61413 ZmMsg.imScreenNameHint="Screen Name";\r
61414 ZmMsg.imScreenNameMsn="MSN Passport:";\r
61415 ZmMsg.imScreenNameYahoo="Yahoo! ID:";\r
61416 ZmMsg.imSortListByName="Sort by Name";\r
61417 ZmMsg.imSortListByPresence="Sort by Status";\r
61418 ZmMsg.imStatusAway="away";\r
61419 ZmMsg.imStatusChat="available for chat";\r
61420 ZmMsg.imStatusDND="do not disturb";\r
61421 ZmMsg.imStatusExtAway="extended away";\r
61422 ZmMsg.imStatusGatewayOffline="Log in to {0}";\r
61423 ZmMsg.imStatusGatewayOnline="Logged into {0} as {1}";\r
61424 ZmMsg.imStatusInvisible="invisible";\r
61425 ZmMsg.imStatusOffline="offline";\r
61426 ZmMsg.imStatusOnline="online";\r
61427 ZmMsg.imStatusToast="{0} ({1})";\r
61428 ZmMsg.imStatusUnknown="unknown";\r
61429 ZmMsg.imSubscribeAuthRequest="<b>{0}</b> wants to add you as a buddy.  Accept?";\r
61430 ZmMsg.imSubscribeAuthRequest_accept="Accept";\r
61431 ZmMsg.imSubscribeAuthRequest_acceptAndAdd="Accept and add";\r
61432 ZmMsg.imSubscribeAuthRequest_deny="Deny";\r
61433 ZmMsg.imSubscribeAuthRequest_doNothing="Do nothing";\r
61434 ZmMsg.imSubscribeAuthRequest_waiting="Waiting for {0} to accept your request";\r
61435 ZmMsg.imSystem="system message";\r
61436 ZmMsg.imToastGwOffline="You are now logged out of the {0} service";\r
61437 ZmMsg.imToastGwOnline="You are logged into the {0} service";\r
61438 ZmMsg.imToggleBlocked="Hide Blocked Buddies";\r
61439 ZmMsg.imToggleOffline="Hide Offline Buddies";\r
61440 ZmMsg.imUnblock="Unblock";\r
61441 ZmMsg.imYahooLoadError="The Yahoo! Messenger SDK appears to be unable to load. This might be caused by a slow internet connection. If you are using a Flash blocker, you need to add this page to its whitelist, then reload the page.";\r
61442 ZmMsg.imYahooLogin="Log in to Yahoo! Messenger";\r
61443 ZmMsg.imYahooMissingFlash="The Adobe Flash Player is required to connect to Yahoo! Messenger. <a target='_blank' href='http://www.adobe.com/go/getflashplayer/'>Click here</a> to download and install it. You will need to restart your browser after the installation is complete.";\r
61444 ZmMsg.image="Image";\r
61445 ZmMsg.images="Images";\r
61446 ZmMsg.imagesLabel="Images:";\r
61447 ZmMsg.importAdditionalWarnings="<i>{0,number} more {0,choice,1#warning|2#warnings} reported.</i>";\r
61448 ZmMsg.importAutoDetect="Auto-Detect";\r
61449 ZmMsg.importChoose="Choose a document to import";\r
61450 ZmMsg.importDocs="Import Document";\r
61451 ZmMsg.importErrorMissingFile="Must specify an import file.";\r
61452 ZmMsg.importErrorMissingFolder="Must specify destination folder.";\r
61453 ZmMsg.importErrorRootNotAllowed="Not allowed to import to root folder for this type.";\r
61454 ZmMsg.importErrorUpload="Error uploading file.";\r
61455 ZmMsg.importExport="Import / Export";\r
61456 ZmMsg.importExportTypeCSV="Contacts";\r
61457 ZmMsg.importExportTypeICS="Calendar";\r
61458 ZmMsg.importExportTypeTGZ="Account";\r
61459 ZmMsg.importFailed="Import Failed";\r
61460 ZmMsg.importFromCSV="Import .CSV File";\r
61461 ZmMsg.importFromCSVHint='If you are using another contact manager program, you can import your existing contacts by saving them in "Comma-Separated Values" (.csv) format. See documentation in that program for help saving in this format.';\r
61462 ZmMsg.importFromCSVLabel="CSV File:";\r
61463 ZmMsg.importFromICS="Import .ICS File";\r
61464 ZmMsg.importFromICSHint="If you are using another calendar program, you can import your existing appointments by saving them in iCalendar (.ics) format. See documentation in that program for help saving in this format.";\r
61465 ZmMsg.importFromICSLabel="ICS File:";\r
61466 ZmMsg.importFromTGZHint='You can import an account export file in a "Tar-GZipped" (.tgz) format.';\r
61467 ZmMsg.importLabel="Import:";\r
61468 ZmMsg.importResetWarning="If you reset the destination folder, all data and folders in the destination folder will be deleted.<p><b>If no destination folder is selected, this will delete <i>all</i> of the data and folders in your account.</b>";\r
61469 ZmMsg.importStarted="Import started.";\r
61470 ZmMsg.importSuccess="Import succeeded.";\r
61471 ZmMsg.importSuccessWithWarnings="Import completed with {0,choice,1#a warning|2#warnings}:<p>{1}";\r
61472 ZmMsg.importingContacts="Importing...";\r
61473 ZmMsg.inContacts="In Personal Address Book";\r
61474 ZmMsg.inGal="In Global Address List";\r
61475 ZmMsg.inProgress="In Progress";\r
61476 ZmMsg.inTime="in";\r
61477 ZmMsg.inbox="Inbox";\r
61478 ZmMsg.includeInBody="Include original message";\r
61479 ZmMsg.includeJunk="Also search Junk";\r
61480 ZmMsg.includeJunkFolder="Include Junk Folder in Searches";\r
61481 ZmMsg.includeMenuAttachment="Include Original As Attachment";\r
61482 ZmMsg.includeMenuNoPrefix="Include Original";\r
61483 ZmMsg.includeMenuNone="Don't Include Original Message";\r
61484 ZmMsg.includeMenuPrefix="Include Original With Prefix";\r
61485 ZmMsg.includeMenuPrefixFull="Include Original With Headers And Prefix";\r
61486 ZmMsg.includeMenuSmart="Include Last Message Only";\r
61487 ZmMsg.includeOriginalAsAttach="Include original message as an attachment";\r
61488 ZmMsg.includeOriginalInBody="Include original message in the body";\r
61489 ZmMsg.includePrefix="Include original message with the prefix below";\r
61490 ZmMsg.includePrefixFull="Include original message and headers with the prefix below";\r
61491 ZmMsg.includeTrash="Also search Trash";\r
61492 ZmMsg.includeTrashFolder="Include Trash Folder in Searches";\r
61493 ZmMsg.indent="Increase Indent";\r
61494 ZmMsg.indentTooltip="Indent";\r
61495 ZmMsg.inheritPerms="Sub-folders inherit permissions";\r
61496 ZmMsg.initialMailSearch="Initial mail search";\r
61497 ZmMsg.initialMailSearchLabel="Default Mail Search:";\r
61498 ZmMsg.initiallySearchGal="Initially search the Global Address List when using the contact picker";\r
61499 ZmMsg.inlineAttachmentOption="Show images in message body";\r
61500 ZmMsg.insertAttachment="Insert Files";\r
61501 ZmMsg.insertCell="Insert Cell";\r
61502 ZmMsg.insertColumn="Insert Column";\r
61503 ZmMsg.insertColumnAfter="Insert Column After";\r
61504 ZmMsg.insertColumnBefore="Insert Column Before";\r
61505 ZmMsg.insertFunction="Insert Function";\r
61506 ZmMsg.insertImage="Insert Images";\r
61507 ZmMsg.insertImageUrl="Insert Image via url";\r
61508 ZmMsg.insertLink="Insert Link";\r
61509 ZmMsg.insertObject="Insert Object";\r
61510 ZmMsg.insertRow="Insert Row";\r
61511 ZmMsg.insertRowAbove="Insert Row Above";\r
61512 ZmMsg.insertRowUnder="Insert Row Under";\r
61513 ZmMsg.insertSpreadsheet="Insert Spreadsheet";\r
61514 ZmMsg.insertTable="Insert Table";\r
61515 ZmMsg.invalidAttendees="Invalid attendees found:";\r
61516 ZmMsg.invalidAwayMessage="Away message must be at most {0} characters";\r
61517 ZmMsg.invalidEmail="{0} is not a valid email address";\r
61518 ZmMsg.invalidEmailAddress="Invalid email address";\r
61519 ZmMsg.invalidInitialSearch="Initial search must be at most {0} characters";\r
61520 ZmMsg.invalidPersonaName="Missing value for Persona Name";\r
61521 ZmMsg.invalidPollingInterval="Polling interval must be at least {0} minutes";\r
61522 ZmMsg.invalidPrefValue="A required value is either missing or invalid";\r
61523 ZmMsg.invalidSignature="Signature must be at most {0} characters";\r
61524 ZmMsg.inviteForwardingAddress="Address to forward invite to";\r
61525 ZmMsg.inviteOutOfDate="The meeting invitation has been changed or no longer exists.";\r
61526 ZmMsg.invitePermissionDenied="<p>You do not have permission to invite the following attendees to a meeting: <br> {0}</p><p>Save anyway?</p>";\r
61527 ZmMsg.invitees="Invitees";\r
61528 ZmMsg.invitesAllowAll="Allow both internal and external users to invite me to meetings";\r
61529 ZmMsg.invitesAllowLocal="Allow only internal users to invite me to meetings";\r
61530 ZmMsg.invitesAllowNone="Don't let anyone invite me to meetings";\r
61531 ZmMsg.invitesAllowSome="Allow only the following internal users to invite me to meetings:";\r
61532 ZmMsg.invitesLabel="Invites:";\r
61533 ZmMsg.isAfter="is after";\r
61534 ZmMsg.isBefore="is before";\r
61535 ZmMsg.isIn="in";\r
61536 ZmMsg.isOn="is on";\r
61537 ZmMsg.isRecurringAppt='"{0}" is a recurring appointment.';\r
61538 ZmMsg.isRecurringApptList="You have selected recurring appointments.";\r
61539 ZmMsg.isRecurringTask='"{0}" is a recurring task.';\r
61540 ZmMsg.isVisible="Is Visible";\r
61541 ZmMsg.itemCopied="{0,number} {0,choice,1#Item|2#Items} Copied";\r
61542 ZmMsg.itemCount="{0} {1}";\r
61543 ZmMsg.itemCount1="{0} of {1} {2}";\r
61544 ZmMsg.itemTemplate="Item template";\r
61545 ZmMsg.itemType="Item Type";\r
61546 ZmMsg.items="Items";\r
61547 ZmMsg.itemsProcessed="{0} {1} processed";\r
61548 ZmMsg.javaSource="Java Source Code";\r
61549 ZmMsg.jpegImage="JPEG Image";\r
61550 ZmMsg.junk="Junk";\r
61551 ZmMsg.junkMailOptions="Junk Mail Options";\r
61552 ZmMsg.junkTooltip="Mark selected item(s) as Junk";\r
61553 ZmMsg.kb="KB";\r
61554 ZmMsg.keepCopyInInbox="Keep a copy in my Inbox";\r
61555 ZmMsg.keepInInbox="Keep in Inbox";\r
61556 ZmMsg.key="Key";\r
61557 ZmMsg.keyboardShortcuts="Zimbra Keyboard Shortcuts";\r
61558 ZmMsg.kilobytes="kilobytes (KB)";\r
61559 ZmMsg["label@"]="@";\r
61560 ZmMsg.languageLabel="Language:";\r
61561 ZmMsg.larger="is larger than";\r
61562 ZmMsg.lastModified="Last Modified:";\r
61563 ZmMsg.lastMonth="Last Month";\r
61564 ZmMsg.lastSaved="Last Saved";\r
61565 ZmMsg.lastSync="Last Sync";\r
61566 ZmMsg.lastWeek="Last Week";\r
61567 ZmMsg.lastYear="Last Year";\r
61568 ZmMsg.layout="Layout";\r
61569 ZmMsg.left="Left";\r
61570 ZmMsg.leftClickComposeHint="Click to compose.";\r
61571 ZmMsg.leftClickNewContactHint="Click to add to Address Book.";\r
61572 ZmMsg.leftClickYahoohint="Click to visit user's Yahoo! profile";\r
61573 ZmMsg.licenseExpired="Your server's license has expired.";\r
61574 ZmMsg.lifetimeDurationDays="{0,number} {0,choice,0#Days|1#Day|2#Days}";\r
61575 ZmMsg.lifetimeDurationNever="Never";\r
61576 ZmMsg.linkProperties="Link Properties";\r
61577 ZmMsg.linkTarget="Link target";\r
61578 ZmMsg.linkTargetDesc="Enter the address of a web page:";\r
61579 ZmMsg.linkText="Link text";\r
61580 ZmMsg.linkTextDesc="Enter text visible for the link:";\r
61581 ZmMsg.linkTitleLabel="Link title:";\r
61582 ZmMsg.linkTitleOptionalLabel="Link title (optional):";\r
61583 ZmMsg.linkTo="Link to";\r
61584 ZmMsg.linkToNewIdentity="Link to new identity:";\r
61585 ZmMsg.linkUrlLabel="Link URL:";\r
61586 ZmMsg.list="List";\r
61587 ZmMsg.loading="Loading...";\r
61588 ZmMsg.localFolders="Local Folders";\r
61589 ZmMsg.localPart="local part";\r
61590 ZmMsg.localeChangeRestart="Would you like to reload the application now to show the new language? <br>(Otherwise, the new language will appear the next time you log in.)";\r
61591 ZmMsg.location="Location";\r
61592 ZmMsg.locationFormatCityCountry="{0}, {1}";\r
61593 ZmMsg.locationFormatCityStateCountry="{0}, {1} {2}";\r
61594 ZmMsg.locationLabel="Location:";\r
61595 ZmMsg.logOff="Log Out";\r
61596 ZmMsg.login="Log In";\r
61597 ZmMsg.loginAsDiff="Log in as a different user";\r
61598 ZmMsg.loginError="The username or password is incorrect. Verify that CAPS LOCK is not on, and then retype the current username and password";\r
61599 ZmMsg.loginHeader="Acme Corporation";\r
61600 ZmMsg.loginLabel="Login using:";\r
61601 ZmMsg.loginOptions="Login Options";\r
61602 ZmMsg.lostEmailNotification="The email notification will be turned off and the email address will be removed.";\r
61603 ZmMsg.low="Low";\r
61604 ZmMsg.lowPriorityTooltip="This item has been marked as low priority";\r
61605 ZmMsg.mail="Mail";\r
61606 ZmMsg.mailDeliveryDisabled="Don't keep a local copy of messages";\r
61607 ZmMsg.mailFolder="Mail Folder";\r
61608 ZmMsg.mailFolders="Mail Folders";\r
61609 ZmMsg.mailForwardingAddress="Address to forward mail to";\r
61610 ZmMsg.mailMessage="Mail Message";\r
61611 ZmMsg.mailNotifAddress="Address for new mail notifications";\r
61612 ZmMsg.mailNotifEnabled="Send a notification message to:";\r
61613 ZmMsg.mailPriorityTooltip="Set the priority of the message";\r
61614 ZmMsg.mailSendAddressFailure="Could not send message due to invalid address(es)";\r
61615 ZmMsg.mailSendFailure="Could not send message: {0}";\r
61616 ZmMsg.mailSignature="Mail Signature:";\r
61617 ZmMsg.makeLabel="{0}:";\r
61618 ZmMsg.mandatorySpellcheck="Mandatory spellcheck before sending a message.";\r
61619 ZmMsg.manualSignature='Manually via the "Add Signature" button';\r
61620 ZmMsg.mark="Mark";\r
61621 ZmMsg.markAllHeard="Mark All as Heard";\r
61622 ZmMsg.markAllRead="Mark All as Read";\r
61623 ZmMsg.markAs="Mark as:";\r
61624 ZmMsg.markAsHeard="Mark As Heard";\r
61625 ZmMsg.markAsRead="Mark As Read";\r
61626 ZmMsg.markAsUnheard="Mark As Unheard";\r
61627 ZmMsg.markAsUnread="Mark As Unread";\r
61628 ZmMsg.markedAsJunk="{0,number} {0,choice,1#Item|2#Items} Marked as Junk";\r
61629 ZmMsg.markedAsNotJunk="{0,number} {0,choice,1#Item|2#Items} Marked as Not Junk";\r
61630 ZmMsg.matches="matches wildcard condition";\r
61631 ZmMsg.mb="MB";\r
61632 ZmMsg.meeting="Meeting";\r
61633 ZmMsg.meetingStatus="Meeting Status";\r
61634 ZmMsg.meetingStatusUnknown="Could not find meeting details. Status for this slot is free.";\r
61635 ZmMsg.megabytes="megabytes (MB)";\r
61636 ZmMsg.mergeCell="Merge Cell";\r
61637 ZmMsg.mergeCells="Merge Cells";\r
61638 ZmMsg.message="Message";\r
61639 ZmMsg.messageArrivalLabel="When a message arrives:";\r
61640 ZmMsg.messageLabel="Message:";\r
61641 ZmMsg.messagePreviewLabel="Message Preview:";\r
61642 ZmMsg.messageReadLabel="When I read a message in the reading pane:";\r
61643 ZmMsg.messageReadNone="Do not mark it read";\r
61644 ZmMsg.messageReadNow="Mark it read immediately";\r
61645 ZmMsg.messageReadTime='Mark it read after <input id="{0}" type="text" size=4 /> seconds';\r
61646 ZmMsg.messageSent="Message Sent";\r
61647 ZmMsg.messageStatus="Message Status";\r
61648 ZmMsg.messageTooLarge="This message is too large to display properly.";\r
61649 ZmMsg.messageTruncated="[Message truncated]";\r
61650 ZmMsg.messages="Messages";\r
61651 ZmMsg.messagesReceiving="Receiving Messages";\r
61652 ZmMsg.messagesSentLabel="Sent Messages:";\r
61653 ZmMsg.method="Method";\r
61654 ZmMsg.middle="Middle";\r
61655 ZmMsg.mine="Mine";\r
61656 ZmMsg.minimumCapacity="Minimum Capacity";\r
61657 ZmMsg.minutes="minutes";\r
61658 ZmMsg.missedCalls="Missed Calls";\r
61659 ZmMsg.missingAwayMessage="Empty away message";\r
61660 ZmMsg.missingEmailAddress="Missing email address";\r
61661 ZmMsg.missingPlugin="Sorry, a required plugin is missing.";\r
61662 ZmMsg.missingPluginHelp="The QuickTime plugin is required to play voice mail messages. <a target='_blank' href='http://www.apple.com/quicktime/download/'>Click here</a> to download and install it. You will need to restart your browser after the installation is complete.";\r
61663 ZmMsg.missingPluginHelpIE="A plugin is required to play voice mail messages. <a target='_blank' href='http://www.microsoft.com/windows/windowsmedia/download/'>Click here</a> to download and install Windows Media Player, or <a target='_blank' href='http://www.apple.com/quicktime/download/'>click here</a> to download and install the QuickTime plugin. You will need to restart your browser after the installation is complete.";\r
61664 ZmMsg.misspelling="misspelling";\r
61665 ZmMsg.misspellings="misspellings";\r
61666 ZmMsg.misspellingsMessage="{0} misspellings found. Do you want to correct them?";\r
61667 ZmMsg.misspellingsResult="{0,number} {0,choice,0#Misspellings|1#Misspelling|2#Misspellings}";\r
61668 ZmMsg.mobile="Mobile";\r
61669 ZmMsg.mobileDevice="Device";\r
61670 ZmMsg.mobileDeviceChangesSavedImmediately="Note: Changes to mobile devices are saved immediately.";\r
61671 ZmMsg.mobileDeviceId="Device ID";\r
61672 ZmMsg.mobileDeviceWipeConfirm="Are you sure you want to wipe the contents of your lost or stolen device?";\r
61673 ZmMsg.mobileDevices="Mobile Devices";\r
61674 ZmMsg.mobileFirstReqReceived="Device registration";\r
61675 ZmMsg.mobileLastPolicyUpdate="Last policy update";\r
61676 ZmMsg.mobileProtocolVersion="Protocol version";\r
61677 ZmMsg.mobileProvisionable="Provisionable";\r
61678 ZmMsg.mobileRemoteWipeAck="Remote wipe confirmed";\r
61679 ZmMsg.mobileRemoteWipeReq="Remote wipe requested";\r
61680 ZmMsg.mobileResumeSync="Resume Sync";\r
61681 ZmMsg.mobileStatusNeedProvision="Needs provisioning";\r
61682 ZmMsg.mobileStatusOk="OK";\r
61683 ZmMsg.mobileStatusSuspended="Suspended";\r
61684 ZmMsg.mobileStatusWipe="Remote wipe requested";\r
61685 ZmMsg.mobileStatusWipeComplete="Remote wipe completed";\r
61686 ZmMsg.mobileSuspendSync="Suspend Sync";\r
61687 ZmMsg.mobileUserAgent="User agent";\r
61688 ZmMsg.mobileWipe="Wipe Device";\r
61689 ZmMsg.mobileWipeCancel="Cancel Wipe";\r
61690 ZmMsg.modified="Modified";\r
61691 ZmMsg.modifiedField="[MODIFIED]";\r
61692 ZmMsg.modifiedOnLabel="Modified on:";\r
61693 ZmMsg.modifier="Modifier";\r
61694 ZmMsg.modifyApptQuestion="Would you like to modify only this instance or the series?";\r
61695 ZmMsg.modifyInstance="Modify this instance";\r
61696 ZmMsg.modifyRecurringItem="Modify Recurring Item";\r
61697 ZmMsg.modifySearch="Modify Search";\r
61698 ZmMsg.modifySeries="Modify the series";\r
61699 ZmMsg.month="Month";\r
61700 ZmMsg.monthly="Monthly";\r
61701 ZmMsg.months="Months";\r
61702 ZmMsg.more="More...";\r
61703 ZmMsg.moreDetails="More Details...";\r
61704 ZmMsg.moreVoiceControlsLabel="Need more controls over your voice service?";\r
61705 ZmMsg.moreVoiceControlsText="Visit the Digital Voice Center";\r
61706 ZmMsg.mountAddrBook="Link to Shared Address Book";\r
61707 ZmMsg.mountBriefcase="Link to Shared Briefcase";\r
61708 ZmMsg.mountCalendar="Link to Shared Calendar";\r
61709 ZmMsg.mountFolder="Link to Shared Folder";\r
61710 ZmMsg.mountInstructions1="To link to an item that has been shared with you, enter the owner's email address and the location of the folder in their mailbox (e.g. Work/Projects):";\r
61711 ZmMsg.mountInstructions2="Properties of your new link:";\r
61712 ZmMsg.mountNotebook="Link to Shared Notebook";\r
61713 ZmMsg.mountSection="Link to Shared Notebook";\r
61714 ZmMsg.mountTaskFolder="Link to Shared Task List";\r
61715 ZmMsg.mountedSharesTitle="Folders shared with me that I have accepted";\r
61716 ZmMsg.move="Move";\r
61717 ZmMsg.moveAddrBook='Move Address Book "{0}"';\r
61718 ZmMsg.moveAppt="Move Appointment";\r
61719 ZmMsg.moveAppts="Move Appointments";\r
61720 ZmMsg.moveConversation="Move Conversation";\r
61721 ZmMsg.moveConversations="Move Conversations";\r
61722 ZmMsg.moveFolder='Move Folder "{0}"';\r
61723 ZmMsg.moveItem="Move Item";\r
61724 ZmMsg.moveItems="Move Items";\r
61725 ZmMsg.moveMessage="Move Message";\r
61726 ZmMsg.moveMessages="Move Messages";\r
61727 ZmMsg.moveReadonly="You have selected one or more appointments which are read only. These appointments cannot be moved.";\r
61728 ZmMsg.moveSearch='Move Saved Search "{0}"';\r
61729 ZmMsg.moveTask="Move Task";\r
61730 ZmMsg.moveTasks="Move Tasks";\r
61731 ZmMsg.moveToVoiceMail="Move back to Voice Mail folder";\r
61732 ZmMsg.moveTooltip="Move selected item(s)";\r
61733 ZmMsg.mp3Audio="MP3 Audio";\r
61734 ZmMsg.msDownload="Microsoft DLL";\r
61735 ZmMsg.msExcelDocument="Microsoft Excel";\r
61736 ZmMsg.msExchange="Microsoft Exchange";\r
61737 ZmMsg.msLive="Microsoft Live";\r
61738 ZmMsg.msPPTDocument="Microsoft PowerPoint";\r
61739 ZmMsg.msProjectDocument="Microsoft Project";\r
61740 ZmMsg.msVisioDocument="Microsoft Visio";\r
61741 ZmMsg.msWMV="Windows Media Video";\r
61742 ZmMsg.msWinmailDat="Microsoft Outlook (TNEF)";\r
61743 ZmMsg.msWordDocument="Microsoft Word";\r
61744 ZmMsg.msn="MSN";\r
61745 ZmMsg.multipartAlternative="Multipart Alternative";\r
61746 ZmMsg.multipartMixed="Multipart Mixed";\r
61747 ZmMsg.multipleAttachmentsTooltip="{0} attachments";\r
61748 ZmMsg.myCard="My Card";\r
61749 ZmMsg.myCardHome="Home";\r
61750 ZmMsg.myCardWork="Work";\r
61751 ZmMsg.myComputer="My Computer";\r
61752 ZmMsg.myContacts="My Contacts";\r
61753 ZmMsg.name="Name";\r
61754 ZmMsg.nameEmpty="You must specify a value for the name.";\r
61755 ZmMsg.nameHint="Name (John Smith)";\r
61756 ZmMsg.nameLabel="Name:";\r
61757 ZmMsg.nameTooLong="The name must be at most {0} characters long";\r
61758 ZmMsg.navText1="{0} - {1}";\r
61759 ZmMsg.navText2="{0} - {1} of {2}";\r
61760 ZmMsg.needsAction="Needs Action";\r
61761 ZmMsg.neverShow="never show";\r
61762 ZmMsg.neverSynced="This account has not been synced. Click Send/Receive to start sync.";\r
61763 ZmMsg.newAddrBook="New Address Book";\r
61764 ZmMsg.newAddrBookTooltip="Create a new address book";\r
61765 ZmMsg.newAllDayAppt="New All Day Appointment";\r
61766 ZmMsg.newAllDayApptTooltip="Create a new all day calendar appointment";\r
61767 ZmMsg.newAppt="New Appointment";\r
61768 ZmMsg.newApptTooltip="Create a new calendar appointment";\r
61769 ZmMsg.newBriefcase="New Briefcase";\r
61770 ZmMsg.newBriefcaseTooltip="Create a new briefcase";\r
61771 ZmMsg.newCalendar="New Calendar";\r
61772 ZmMsg.newCalendarTooltip="Create a new calendar";\r
61773 ZmMsg.newContact="New Contact";\r
61774 ZmMsg.newContactTooltip="Create a new contact";\r
61775 ZmMsg.newDocument="New Document";\r
61776 ZmMsg.newEmail="New Email";\r
61777 ZmMsg.newExternalAccount="New External Account {0,number}";\r
61778 ZmMsg.newFile="New File";\r
61779 ZmMsg.newFilter="New Filter";\r
61780 ZmMsg.newFolder="New Folder";\r
61781 ZmMsg.newFolderParent="Select where to place the new folder:";\r
61782 ZmMsg.newFolderTooltip="Create a new folder";\r
61783 ZmMsg.newGroup="New Contact Group";\r
61784 ZmMsg.newGroupTooltip="Create a new group";\r
61785 ZmMsg.newIM="New IM";\r
61786 ZmMsg.newIdentity="New Identity {0}";\r
61787 ZmMsg.newInstantMessage="New Instant Message";\r
61788 ZmMsg.newMail="New mail from: {0}";\r
61789 ZmMsg.newMailWithAccount="New mail from: {0} ({1})";\r
61790 ZmMsg.newMessage="New message";\r
61791 ZmMsg.newMessageFormat="New message format:";\r
61792 ZmMsg.newMessageTooltip="Compose a new message";\r
61793 ZmMsg.newName="New name";\r
61794 ZmMsg.newNotebook="New Notebook";\r
61795 ZmMsg.newNotebookTooltip="Create a new notebook";\r
61796 ZmMsg.newPage="New Page";\r
61797 ZmMsg.newPassword="New Password";\r
61798 ZmMsg.newPersona="New Persona {0,number}";\r
61799 ZmMsg.newPopAccountName="New Account {0}";\r
61800 ZmMsg.newPresentation="New Presentation";\r
61801 ZmMsg.newPresentationBeta="New Presentation [beta]";\r
61802 ZmMsg.newRosterItem="New Buddy";\r
61803 ZmMsg.newSearchParent="Select where to place the new saved search";\r
61804 ZmMsg.newSection="New Notebook";\r
61805 ZmMsg.newSpreadSheet="New Spreadsheet";\r
61806 ZmMsg.newSpreadSheetBeta="New Spreadsheet [beta]";\r
61807 ZmMsg.newStatusMessage="New Status Message";\r
61808 ZmMsg.newTag="New Tag";\r
61809 ZmMsg.newTagName="New Tag Name";\r
61810 ZmMsg.newTagTooltip="Create a new tag";\r
61811 ZmMsg.newTask="New Task";\r
61812 ZmMsg.newTaskFolder="New Task List";\r
61813 ZmMsg.newTaskFolderTooltip="Create a new task list";\r
61814 ZmMsg.newTaskTooltip="Create a new task";\r
61815 ZmMsg.newWinComposeExit="You can press Cancel to save as draft.";\r
61816 ZmMsg.newWindow="New Window";\r
61817 ZmMsg.next="Next";\r
61818 ZmMsg.nextConversation="Next Conversation";\r
61819 ZmMsg.nextDay="Next Day";\r
61820 ZmMsg.nextMessage="Next Message";\r
61821 ZmMsg.nextMonth="Next Month";\r
61822 ZmMsg.nextPage="Next Page";\r
61823 ZmMsg.nextWeek="Next Week";\r
61824 ZmMsg.nextWorkWeek="Next Work Week";\r
61825 ZmMsg.noAddresses="There must be at least one address in the To:, Cc:, or Bcc: fields";\r
61826 ZmMsg.noAppts="No Appointments";\r
61827 ZmMsg.noAtt="No Attachments";\r
61828 ZmMsg.noCallResults="No results found.";\r
61829 ZmMsg.noFreeSlotFound="No free time slots found with on selected week range";\r
61830 ZmMsg.noItems="No {0}";\r
61831 ZmMsg.noMisspellingsFound="Spelling Correct";\r
61832 ZmMsg.noName="<No Name>";\r
61833 ZmMsg.noShareDetailsFound="No share details found";\r
61834 ZmMsg.noSubject="<No Subject>";\r
61835 ZmMsg.noSuggestions="No Suggestions";\r
61836 ZmMsg.noTargetFolder="You must select a folder";\r
61837 ZmMsg.noVoiceMail="Voice mail is not available.";\r
61838 ZmMsg.noWhere="<No Where>";\r
61839 ZmMsg.none="None";\r
61840 ZmMsg.normal="Normal";\r
61841 ZmMsg.notAfter="not after";\r
61842 ZmMsg.notAvailable="Not Available";\r
61843 ZmMsg.notBefore="not before";\r
61844 ZmMsg.notContain="does not contain";\r
61845 ZmMsg.notExactMatch="does not match exactly";\r
61846 ZmMsg.notExist="does not exist";\r
61847 ZmMsg.notIn="not in";\r
61848 ZmMsg.notIs="is not";\r
61849 ZmMsg.notJunk="Not Junk";\r
61850 ZmMsg.notJunkTooltip="Mark selected item(s) as not Junk";\r
61851 ZmMsg.notMatch="does not match wildcard condition";\r
61852 ZmMsg.notOver="not over";\r
61853 ZmMsg.notSet="Not Set";\r
61854 ZmMsg.notStarted="Not Started";\r
61855 ZmMsg.notSyncing='This folder is currently not syncing.<br><a href="javascript:;" onclick="{0}">Click here to sync this folder</a>.';\r
61856 ZmMsg.notUnder="not under";\r
61857 ZmMsg.noteForward="Note: Forwarded message attached";\r
61858 ZmMsg.noteLabel="Note:";\r
61859 ZmMsg.notebook="Notebook";\r
61860 ZmMsg.notebookFileView="File List";\r
61861 ZmMsg.notebookLabel="Notebook:";\r
61862 ZmMsg.notebookPageLabel="A notebook page:";\r
61863 ZmMsg.notebookPageView="Page Browser";\r
61864 ZmMsg.notebookPersonalName="Notebook";\r
61865 ZmMsg.notebooks="Notebooks";\r
61866 ZmMsg.notes="Notes";\r
61867 ZmMsg.notesLabel="Notes:";\r
61868 ZmMsg.nothingToTag="The items you have selected cannot be tagged.";\r
61869 ZmMsg.notify="Notify";\r
61870 ZmMsg.notifyOrganizer="Notify organizer";\r
61871 ZmMsg.notifyOrganizerLabel="Notify Organizer";\r
61872 ZmMsg.number="Number";\r
61873 ZmMsg.numberOfCols="Number of Columns:";\r
61874 ZmMsg.numberOfMinutes="Number of minutes before an appointment to show reminder";\r
61875 ZmMsg.numberOfRows="Number of Rows:";\r
61876 ZmMsg.numberedList="Numbered List";\r
61877 ZmMsg.object="Object";\r
61878 ZmMsg.objects="Objects";\r
61879 ZmMsg.objectsNotDisplayed="Objects are not highlighted due to message size.";\r
61880 ZmMsg.off="Off";\r
61881 ZmMsg.offlineAllowMailTo="Use Zimbra Desktop as default mail application";\r
61882 ZmMsg.offlineQuota="Mailbox size: {0}";\r
61883 ZmMsg.ok="OK";\r
61884 ZmMsg.oldPasswordIsIncorrect="The old password you submitted is incorrect.";\r
61885 ZmMsg.on="On";\r
61886 ZmMsg.onBehalfOf="On Behalf Of";\r
61887 ZmMsg.onBehalfOfLabel="On Behalf Of:";\r
61888 ZmMsg.onLabel="On:";\r
61889 ZmMsg.onlyWholeNumbersError="Only whole numbers are accepted";\r
61890 ZmMsg.openAppointment="Open Appointment";\r
61891 ZmMsg.openApptInstance="Open Instance";\r
61892 ZmMsg.openApptSeries="Open Series";\r
61893 ZmMsg.openCalendar="Open Calendar";\r
61894 ZmMsg.openFile="Open";\r
61895 ZmMsg.openFileTooltip="Open this file";\r
61896 ZmMsg.openInstance="Open this instance";\r
61897 ZmMsg.openMailNewWin="Double-click opens message in new window";\r
61898 ZmMsg.openRecurringItem="Open Recurring Item";\r
61899 ZmMsg.openSearchBuilder="Open Advanced Search";\r
61900 ZmMsg.openSeries="Open the series";\r
61901 ZmMsg.options="Options";\r
61902 ZmMsg.optionsSaved="Preferences Saved";\r
61903 ZmMsg.or="or";\r
61904 ZmMsg.orPickAStyleBelow="Or pick a style below:";\r
61905 ZmMsg.orange="Orange";\r
61906 ZmMsg.orgChange='This will change the organizer to "{0}" and attendees will be notified. Continue?';\r
61907 ZmMsg.organizer="Organizer";\r
61908 ZmMsg.organizerLabel="Organizer:";\r
61909 ZmMsg.organizerNotification="Do you want to notify organizer?";\r
61910 \r
61911 ZmMsg.origMsg="Original Message";\r
61912 ZmMsg.originalFormat="Format of the original message";\r
61913 ZmMsg.other="Other";\r
61914 ZmMsg.otherLabel="Other:";\r
61915 ZmMsg.outOfOffice="Out of Office";\r
61916 ZmMsg.outRpcCache="Out of RPC cache";\r
61917 ZmMsg.outbox="Outbox";\r
61918 ZmMsg.outdent="Decrease Indent";\r
61919 ZmMsg["outlook-2000-csv"]="Outlook 2000 Contacts";\r
61920 ZmMsg["outlook-2003-csv"]="Outlook 2003 Contacts";\r
61921 ZmMsg["outlook-unknown-csv"]="Outlook Contacts";\r
61922 ZmMsg.over="over";\r
61923 ZmMsg.owner="Owner";\r
61924 ZmMsg.ownerLabel="Owner:";\r
61925 ZmMsg.pComplete="% Complete";\r
61926 ZmMsg.paddingHorizontal="Horizontal Padding:";\r
61927 ZmMsg.paddingVertical="Vertical Padding:";\r
61928 ZmMsg.page="Page";\r
61929 ZmMsg.pageLabel="Page:";\r
61930 ZmMsg.pageNameLabel="Page Name:";\r
61931 ZmMsg.pageNotFound='The page at the path "{0}" could not be found.';\r
61932 ZmMsg.pageSaved="Page Saved";\r
61933 ZmMsg.pages="Pages";\r
61934 ZmMsg.parentFolderLabel="Parent:";\r
61935 ZmMsg.participantStatus="Participant Status";\r
61936 ZmMsg.party="party";\r
61937 ZmMsg.password="Password";\r
61938 ZmMsg.passwordConfirmLabel="Confirm Password:";\r
61939 ZmMsg.passwordLabel="Password:";\r
61940 ZmMsg.paste="Paste";\r
61941 ZmMsg.path="Path";\r
61942 ZmMsg.pathLabel="Path:";\r
61943 ZmMsg.pattern="Pattern";\r
61944 ZmMsg.pause="Pause";\r
61945 ZmMsg.pendingSharesTitle="Folders that have been shared with me but not yet accepted";\r
61946 ZmMsg.percent="Percent";\r
61947 ZmMsg.percentComplete="Percent Complete";\r
61948 ZmMsg.permissions="Permissions:";\r
61949 ZmMsg.personaSettings="Persona Settings";\r
61950 ZmMsg.personaWhenInFolder="Replying to or forwarding messages in folder(s):";\r
61951 ZmMsg.personaWhenSentTo="When replying or forwarding messages sent to:";\r
61952 ZmMsg.personal="Personal";\r
61953 ZmMsg.personas="Personas";\r
61954 ZmMsg.phone="Phone";\r
61955 ZmMsg.phone2="Phone 2";\r
61956 ZmMsg.phoneLabel="Phone:";\r
61957 ZmMsg.phoneLabelAssistant="Assistant";\r
61958 ZmMsg.phoneLabelCallback="Callback";\r
61959 ZmMsg.phoneLabelCar="Car";\r
61960 ZmMsg.phoneLabelCompany="Company";\r
61961 ZmMsg.phoneLabelHome="Home";\r
61962 ZmMsg.phoneLabelHome2="Home 2";\r
61963 ZmMsg.phoneLabelHomeAlternate="Home Alternate";\r
61964 ZmMsg.phoneLabelHomeFax="Home Fax";\r
61965 ZmMsg.phoneLabelMobile="Mobile";\r
61966 ZmMsg.phoneLabelOther="Other";\r
61967 ZmMsg.phoneLabelOtherFax="Other Fax";\r
61968 ZmMsg.phoneLabelPager="Pager";\r
61969 ZmMsg.phoneLabelWork="Work";\r
61970 ZmMsg.phoneLabelWork2="Work 2";\r
61971 ZmMsg.phoneLabelWorkFax="Work Fax";\r
61972 ZmMsg.phoneNumberHint="Phone Number";\r
61973 ZmMsg.phoneNumbers="Phone Numbers";\r
61974 ZmMsg.pickADate="Pick a date";\r
61975 ZmMsg.pickATag="Pick a tag";\r
61976 ZmMsg.pink="Pink";\r
61977 ZmMsg.pixels="Pixels";\r
61978 ZmMsg.placeSignature="Place the signature:";\r
61979 ZmMsg.placed="Placed";\r
61980 ZmMsg.placedCalls="Placed Calls";\r
61981 ZmMsg.placementLabel="Placement:";\r
61982 ZmMsg.plainText="Plain Text";\r
61983 ZmMsg.play="Play";\r
61984 ZmMsg.playSound="Play a sound (requires QuickTime or Windows Media plugin)";\r
61985 ZmMsg.pleaseWaitHilitingObjects="Please wait, depending on the message size this might take a while.";\r
61986 ZmMsg.pngImage="PNG Image";\r
61987 ZmMsg.pollEveryNMinutes="{0,number} {0,choice,0#minutes|1#minute|2#minutes}";\r
61988 ZmMsg.pollNever="Never";\r
61989 ZmMsg.pollingInterval="Polling interval (minutes after which to check for new mail)";\r
61990 ZmMsg.pollingIntervalLabel="Check for new mail every:";\r
61991 ZmMsg.popAccountCreateNewIdentity="Create new identity for this account";\r
61992 ZmMsg.popAccountDownloadLabel="When downloading messages:";\r
61993 ZmMsg.popAccountDownloadLeave="Leave a copy on the POP server";\r
61994 ZmMsg.popAccountDownloadRemove="Remove from the POP server";\r
61995 ZmMsg.popAccountFolderLabel="Place messages in folder:";\r
61996 ZmMsg.popAccountFolderSelect="Select folder for POP messages:";\r
61997 ZmMsg.popAccountIdentityHelp="Create a new mail identity if you wish to respond to mail received from this account using the name of the account rather than your default Zimbra name.";\r
61998 ZmMsg.popAccountLinkForAddr="For messages sent to this email address";\r
61999 ZmMsg.popAccountLinkForFolder="For messages read or replied in this folder";\r
62000 ZmMsg.popAccountLinkLabel="Link identity:";\r
62001 ZmMsg.popAccountNameLabel="Account name:";\r
62002 ZmMsg.popAccountServerLabel="Incoming mail server:";\r
62003 ZmMsg.popAccountSettings="POP Account Settings";\r
62004 ZmMsg.popAccountTest="Test Account Settings";\r
62005 ZmMsg.popAccountTestFailure="Failed";\r
62006 ZmMsg.popAccountTestFailureMsg='Connection to POP account "{0}" failed. See details for error message from server.';\r
62007 ZmMsg.popAccountTestInProgress="Testing...";\r
62008 ZmMsg.popAccountTestNote="If you continue to save, account will be marked inactive.<br>Press Cancel to return to editing accounts.";\r
62009 ZmMsg.popAccountTestSuccess="Success";\r
62010 ZmMsg.popAccountTestSuccessMsg='Connection to POP account "{0}" succeeded.';\r
62011 ZmMsg.popAccountTestTitle="Test POP Accounts";\r
62012 ZmMsg.popAccountUseSSL="Use SSL to connect securely";\r
62013 ZmMsg.popAccounts="POP Accounts";\r
62014 ZmMsg.popAccountsInfo="You can retrieve email from your POP email accounts by setting up POP accounts here.  To start: <ol><li> Click <b>Add</b> in the bottom of this page.<li> Enter the settings for your POP account.<li> Select a folder in which to place your messages.<li> Optionally, create a mail identity to customize replies to the POP account messages.</ol><p><strong>Note:</strong> To retrieve mail, click the <b>Get POP Mail</b> button in the folder from step 3.";\r
62015 ZmMsg.popAccountsInfoHeader="About POP Accounts";\r
62016 ZmMsg.popupBlocker="Oops! Browser is Blocking Popups";\r
62017 ZmMsg.portLabel="Port:";\r
62018 ZmMsg.portal="Home";\r
62019 ZmMsg.positiveNumberError="This must be a positive number.";\r
62020 ZmMsg.preferenceResetButtonLabel="Reset";\r
62021 ZmMsg.preferences="Preferences";\r
62022 ZmMsg.prefix="Prefix each included line with";\r
62023 ZmMsg.prefixLabel="Prefix:";\r
62024 ZmMsg.prefixTextWith="Prefix included messages with:";\r
62025 ZmMsg.preformatted="Preformatted";\r
62026 ZmMsg.presenceTooltip="Your current instant messaging status is: {0}";\r
62027 ZmMsg.presenceTooltipYahoo="You are logged in to Yahoo! Messenger as {0}. Your status is: {1}.";\r
62028 ZmMsg.presenceTooltipYahooLoggedOut="You are not logged in to Yahoo! Messenger.";\r
62029 ZmMsg.presentation="Presentation";\r
62030 ZmMsg.presentationName="Presentation Name";\r
62031 ZmMsg.presentations="Presentations";\r
62032 ZmMsg.preview="Preview";\r
62033 ZmMsg.previous="Previous";\r
62034 ZmMsg.previousConversation="Previous Conversation";\r
62035 ZmMsg.previousDay="Previous Day";\r
62036 ZmMsg.previousMessage="Previous Message";\r
62037 ZmMsg.previousMonth="Previous Month";\r
62038 ZmMsg.previousPage="Previous Page";\r
62039 ZmMsg.previousWeek="Previous Week";\r
62040 ZmMsg.previousWorkWeek="Previous Work Week";\r
62041 ZmMsg.print="Print";\r
62042 ZmMsg.printAddrBook="Print Address Book";\r
62043 ZmMsg.printCalendar="Print calendar";\r
62044 ZmMsg.printCallTooltip="Print call list";\r
62045 ZmMsg.printContact="Print selected contact(s)";\r
62046 ZmMsg.printDocument="Print document";\r
62047 ZmMsg.printMultiTooltip="Print selected item(s)";\r
62048 ZmMsg.printResults="Print Results";\r
62049 ZmMsg.printTask="Print selected task(s)";\r
62050 ZmMsg.printTaskFolder="Print Task Folder";\r
62051 ZmMsg.printTooltip="Print selected item";\r
62052 ZmMsg.printVoicemailTooltip="Print voice mail list";\r
62053 ZmMsg.priority="Priority";\r
62054 ZmMsg.priorityLabel="Priority:";\r
62055 ZmMsg.privatePermission="Allow user(s) to see my private appointments.";\r
62056 ZmMsg.progress="Progress";\r
62057 ZmMsg.properties="Properties";\r
62058 ZmMsg.pt="{0}pt";\r
62059 ZmMsg.ptstAccept="Accepted";\r
62060 ZmMsg.ptstDeclined="Declined";\r
62061 ZmMsg.ptstDeferred="Deferred";\r
62062 ZmMsg.ptstDelegated="Delegated";\r
62063 ZmMsg.ptstNeedsAction="Needs Action";\r
62064 ZmMsg.ptstTentative="Tentative";\r
62065 ZmMsg.ptstWaiting="Waiting";\r
62066 ZmMsg.purple="Purple";\r
62067 ZmMsg.quick="Quick";\r
62068 ZmMsg.quickAddAppt="QuickAdd Appointment";\r
62069 ZmMsg.quota="Quota";\r
62070 ZmMsg.quotaDescLimited="{0} of {1}";\r
62071 ZmMsg.quotaDescUnlimited="{0} of unlimited";\r
62072 ZmMsg.re="Re";\r
62073 ZmMsg.read="Read";\r
62074 ZmMsg.readReceipt="Read Receipt:";\r
62075 ZmMsg.readReceiptAddress="Read Receipt Address:";\r
62076 ZmMsg.readReceiptAlways="Always send a read receipt";\r
62077 ZmMsg.readReceiptAsk="Ask me";\r
62078 ZmMsg.readReceiptNever="Never send a read receipt";\r
62079 ZmMsg.readReceiptPref="When I receive a request for a read receipt";\r
62080 ZmMsg.readReceiptSend="The sender of this message has requested to be notified when you read this message.<br><br>Do you wish to notify the sender?";\r
62081 ZmMsg.readReceiptSent="A read receipt was sent for this message.";\r
62082 ZmMsg.readingPaneAtBottom="Reading Pane At The Bottom";\r
62083 ZmMsg.readingPaneOff="Reading Pane Off";\r
62084 ZmMsg.readingPaneOnRight="Reading Pane On The Right";\r
62085 ZmMsg.received="Received";\r
62086 ZmMsg.recurBlurb="{0} {2} {1}";\r
62087 ZmMsg.recurDailyEveryDay="Every day";\r
62088 ZmMsg.recurDailyEveryNumDays="Every {0,number,integer} days";\r
62089 ZmMsg.recurDailyEveryWeekday="Every weekday";\r
62090 ZmMsg.recurEndByDate="End by {0,date,medium}";\r
62091 ZmMsg.recurEndNone="No end date";\r
62092 ZmMsg.recurEndNumber="End after {0,number,integer} occurrence(s)";\r
62093 ZmMsg.recurMonthlyEveryNumMonthsDate="Day {0,number,integer} of every {1,number,integer} month(s)";\r
62094 ZmMsg.recurMonthlyEveryNumMonthsNumDay="The {0,choice,-1#last|1#first|2#second|3#third|4#fourth} {1,date,EEEE} of every {2,number,integer} month(s)";\r
62095 ZmMsg.recurMonthlyEveryNumMonthsWeekDays="The {0,choice,-1#last|1#first|2#second|3#third|4#fourth} {1,choice,-1#day|0#weekend|1#weekday} of every {2,number,integer} month(s)";\r
62096 ZmMsg.recurStart="Effective {0,date,medium}";\r
62097 ZmMsg.recurWeeklyEveryNumWeeksDate="Every {0,number,integer} weeks on {2}{1,list,date,EEEE}";\r
62098 ZmMsg.recurWeeklyEveryWeekday="Every {0,date,EEEE}";\r
62099 ZmMsg.recurYearlyEveryDate="Every year on {0,date,MMMM} {1,number,integer}";\r
62100 ZmMsg.recurYearlyEveryMonthNumDay="The {0,choice,-1#last|1#first|2#second|3#third|4#fourth} {1,date,EEEE} of every {2,date,MMMM}";\r
62101 ZmMsg.recurYearlyEveryMonthWeekDays="The {0,choice,-1#last|1#first|2#second|3#third|4#fourth} {1,choice,-1#day|0#weekend|1#weekday} of every {2,date,MMMM}";\r
62102 ZmMsg.recurrence="Recurrence";\r
62103 ZmMsg.recurrenceRuleDay="day";\r
62104 ZmMsg.recurrenceRuleWeekday="weekday";\r
62105 ZmMsg.recurrenceRuleWeekend="weekend day";\r
62106 ZmMsg.red="Red";\r
62107 ZmMsg.refresh="Refresh";\r
62108 ZmMsg.refreshFilters="Refresh Filters";\r
62109 ZmMsg.refreshTooltip="Refresh the selected item";\r
62110 ZmMsg.reload="Reload";\r
62111 ZmMsg.rememberMe="Remember me on this computer";\r
62112 ZmMsg.rememberMeMobile="Remember me";\r
62113 ZmMsg.reminder="Reminder";\r
62114 ZmMsg.reminderInDays="In {3,number,integer} {3,choice,1#day|2#days}.";\r
62115 ZmMsg.reminderInDaysHours="In {3,number,integer} {3,choice,1#day|2#days}, {4,number,integer} {4,choice,1#hour|2#hours}.";\r
62116 ZmMsg.reminderInHours="In {4,number,integer} {4,choice,1#hour|2#hours}.";\r
62117 ZmMsg.reminderInHoursMinutes="In {4,number,integer} {4,choice,1#hour|2#hours}, {5,number,integer} {5,choice,1#minute|2#minutes}.";\r
62118 ZmMsg.reminderInMinutes="In {5,number,integer} {5,choice,1#minute|2#minutes}.";\r
62119 ZmMsg.reminderInMonths="In {2,number,integer} {2,choice,1#month|2#months}.";\r
62120 ZmMsg.reminderInMonthsDays="In {2,number,integer} {2,choice,1#month|2#months}, {3,number,integer} {3,choice,1#day,2#days}.";\r
62121 ZmMsg.reminderInYears="In {1,number,integer} {1,choice,1#year|2#years}.";\r
62122 ZmMsg.reminderInYearsMonths="In {1,number,integer} {1,choice,1#year|2#years}, {2,number,integer} {2,choice,1#months|2#months}.";\r
62123 ZmMsg.reminderLabel="Reminder:";\r
62124 ZmMsg.reminderOverdueByDays="Overdue by {3,number,integer} {3,choice,1#day|2#days}.";\r
62125 ZmMsg.reminderOverdueByDaysHours="Overdue by {3,number,integer} {3,choice,1#day|2#days}, {4,number,integer} {4,choice,1#hour|2#hours}.";\r
62126 ZmMsg.reminderOverdueByHours="Overdue by {4,number,integer} {4,choice,1#hour|2#hours}.";\r
62127 ZmMsg.reminderOverdueByHoursMinutes="Overdue by {4,number,integer} {4,choice,1#hour|2#hours}, {5,number,integer} {5,choice,1#minute|2#minutes}.";\r
62128 ZmMsg.reminderOverdueByMinutes="Overdue by {5,number,integer} {5,choice,1#minute|2#minutes}.";\r
62129 ZmMsg.reminderOverdueByMonths="Overdue by {2,number,integer} {2,choice,1#month|2#months}.";\r
62130 ZmMsg.reminderOverdueByMonthsDays="Overdue by {2,number,integer} {2,choice,1#month|2#months}, {3,number,integer} {3,choice,1#day,2#days}.";\r
62131 ZmMsg.reminderOverdueByYears="Overdue by {1,number,integer} {1,choice,1#year|2#years}.";\r
62132 ZmMsg.reminderOverdueByYearsMonths="Overdue by {1,number,integer} {1,choice,1#year|2#years}, {2,number,integer} {2,choice,1#months|2#months}.";\r
62133 ZmMsg.reminderSnoozeMinutes="{0} {0,choice,1#minute|2#minutes}";\r
62134 ZmMsg.remove="Remove";\r
62135 ZmMsg.removeAddr="Remove {0}";\r
62136 ZmMsg.removeAll="Remove All";\r
62137 ZmMsg.removeAllAttachments="Remove all attachments";\r
62138 ZmMsg.removeDupesToSelf="When I receive a message originally sent by me";\r
62139 ZmMsg.removeDupesToSelfLabel="Messages from me:";\r
62140 ZmMsg.removePhoto="Remove Photo";\r
62141 ZmMsg.removeTag="Remove Tag";\r
62142 ZmMsg.removed="Removed:";\r
62143 ZmMsg.renameFolder="Rename Folder";\r
62144 ZmMsg.renameSearch="Rename Search";\r
62145 ZmMsg.renameTag="Rename Tag";\r
62146 ZmMsg.repeat="Repeat";\r
62147 ZmMsg.repeatLabel="Repeat:";\r
62148 ZmMsg.repeats="Repeats";\r
62149 ZmMsg.replace="Replace";\r
62150 ZmMsg.replaceAll="Replace All";\r
62151 ZmMsg.replaceAllMenu="Replace all ({0} occurrences)";\r
62152 ZmMsg.replaceWithLabel="Replace with:";\r
62153 ZmMsg.replied="Replied";\r
62154 ZmMsg.reply="Reply";\r
62155 ZmMsg.replyAccept="Accept";\r
62156 ZmMsg.replyAll="Reply to All";\r
62157 ZmMsg.replyAllTooltip="Reply to all recipients of the selected message";\r
62158 ZmMsg.replyAllTooltipConv="Reply to all recipients of the most recent message in the conversation";\r
62159 ZmMsg.replyByEmail="Reply by Email";\r
62160 ZmMsg.replyByEmailTooltip="Reply by email to the caller of the selected voice mail message";\r
62161 ZmMsg.replyDecline="Decline";\r
62162 ZmMsg.replyForwardFormat="Reply/Forward message format:";\r
62163 ZmMsg.replyForwardInSameFormat="Reply/Forward using format of the original message";\r
62164 ZmMsg.replyInclude="When replying:";\r
62165 ZmMsg.replyNewTime="Propose New Time";\r
62166 ZmMsg.replyOptions="Set reply mode, change format, change how original is forwarded";\r
62167 ZmMsg.replyPrefix="----- {0} wrote:\r\n";\r
62168 ZmMsg.replySender="Reply to Sender";\r
62169 ZmMsg.replyTentative="Tentative";\r
62170 ZmMsg.replyTo="Reply To";\r
62171 ZmMsg.replyToAddress="Reply-to address";\r
62172 ZmMsg.replyToAddressError="The reply to address field is not a valid email address";\r
62173 ZmMsg.replyToError="The reply to field is empty";\r
62174 ZmMsg.replyTooltip="Reply to the sender of the selected message";\r
62175 ZmMsg.replyTooltipConv="Reply to the sender of the most recent message in the conversation";\r
62176 ZmMsg.replyWithIdentity="When replying to or forwarding messages with this identity:";\r
62177 ZmMsg.report="Send Error Report";\r
62178 ZmMsg.reportSyncError="Unable to send report.";\r
62179 ZmMsg.reportSyncFailure="Report";\r
62180 ZmMsg.requestReadReceipt="Request Read Receipt";\r
62181 ZmMsg.requestResponses="Request Responses";\r
62182 ZmMsg.resend="Resend";\r
62183 ZmMsg.resentShareMessage="Share Notice Sent";\r
62184 ZmMsg.reset="Reset";\r
62185 ZmMsg.resolveDuplicateIgnore="Ignore";\r
62186 ZmMsg.resolveDuplicateModify="Modify";\r
62187 ZmMsg.resolveDuplicateReplace="Replace";\r
62188 ZmMsg.resolveDuplicateReset="Reset";\r
62189 ZmMsg.resolveDuplicatesLabel="Resolve duplicates:";\r
62190 ZmMsg.resourceConflictIgnore="Ignore Conflicts and Book";\r
62191 ZmMsg.resourceConflictInfo="The selected resources/location might already be scheduled on the following instances";\r
62192 ZmMsg.resourceConflictLabel="Conflicting Resources";\r
62193 ZmMsg.resources="Resources";\r
62194 ZmMsg.resourcesLabel="Resources:";\r
62195 ZmMsg.restoreDefaults="Restore Defaults";\r
62196 ZmMsg.restorePage="Undo Changes";\r
62197 ZmMsg.resumeEditing="Resume editing";\r
62198 ZmMsg.revert="Revert";\r
62199 ZmMsg.revertTimeChanges="Revert Time Changes";\r
62200 ZmMsg.revoke="Revoke";\r
62201 ZmMsg.revokeShare="Revoke Share";\r
62202 ZmMsg.revokeShareConfirm="Are you sure you want to revoke access for {0}?";\r
62203 ZmMsg.right="Right";\r
62204 ZmMsg.rightClickHint="Right-click for more options.";\r
62205 ZmMsg.role="Role";\r
62206 ZmMsg.roleLabel="Role:";\r
62207 ZmMsg.room="Room";\r
62208 ZmMsg.rootFolder="Root";\r
62209 ZmMsg.rosterItemAddressNoValue="You must specify an address.";\r
62210 ZmMsg.rotfl="rolling on the floor laughing";\r
62211 ZmMsg.rowProperties="Row Properties";\r
62212 ZmMsg.runSlideShow="Run Slide Show";\r
62213 ZmMsg.running="running";\r
62214 ZmMsg.save="Save";\r
62215 ZmMsg.saveConflict="Save Conflict";\r
62216 ZmMsg.saveConflictDesc="<b>{0}</b> already exists or has been changed.<br>What would you like to do?";\r
62217 ZmMsg.saveConflictDoc='Document with name "{0}" already exists. Please use a different name.';\r
62218 ZmMsg.saveConflictKeepMine="Keep My Copy";\r
62219 ZmMsg.saveConflictKeepMineDesc="Keep <b>my</b> copy of the file,<br>discarding their changes.";\r
62220 ZmMsg.saveConflictKeepTheirs="Keep Their Copy";\r
62221 ZmMsg.saveConflictKeepTheirsDesc="Keep <b>their</b> copy of the file,<br>discarding my changes.";\r
62222 ZmMsg.saveConflictPresentation='Presentation with name "{0}" already exists. Please use a different name.';\r
62223 ZmMsg.saveConflictSpreadsheet='Spreadsheet with name "{0}" already exists. Please use a different name.';\r
62224 ZmMsg.saveConflictViewTheirs="View Their File";\r
62225 ZmMsg.saveConflictViewTheirsDesc="View their file to see which to keep.<br>(Will open in a new window.)";\r
62226 ZmMsg.saveContactTooltip="Save the current contact";\r
62227 ZmMsg.saveCurrentSearch="Save the current search";\r
62228 ZmMsg.saveDraft="Save Draft";\r
62229 ZmMsg.saveDraftTooltip="Save message to Drafts folder";\r
62230 ZmMsg.saveFile="Download";\r
62231 ZmMsg.saveFileTooltip="Save this file to your computer";\r
62232 ZmMsg.saveIn="Save in";\r
62233 ZmMsg.savePrefs="Save current options";\r
62234 ZmMsg.saveSearch="Save Search";\r
62235 ZmMsg.saveSearchTooltip="Save the search";\r
62236 ZmMsg.saveToSent="Save a copy to Sent folder";\r
62237 ZmMsg.saveToSentNOT="Do not save sent messages";\r
62238 ZmMsg.savedAppointment="Appointment Saved";\r
62239 ZmMsg.savedDoc="Document Saved";\r
62240 ZmMsg.savedPresentation="Presentation Saved";\r
62241 ZmMsg.savedSearch="Saved Search";\r
62242 ZmMsg.savedSearches="Saved Searches";\r
62243 ZmMsg.savedSpreadsheet="Spreadsheet Saved";\r
62244 ZmMsg.schedule="Schedule";\r
62245 ZmMsg.search="Search";\r
62246 ZmMsg.searchAll="All Item Types";\r
62247 ZmMsg.searchAllAccounts="Search All Accounts";\r
62248 ZmMsg.searchAppts="Search Appointments";\r
62249 ZmMsg.searchBriefcase="Files";\r
62250 ZmMsg.searchBuilder="Advanced";\r
62251 ZmMsg.searchByAttachment="Search by attachment type";\r
62252 ZmMsg.searchByBasic="Search by address, subject, or content";\r
62253 ZmMsg.searchByCustom="Add text to the search query";\r
62254 ZmMsg.searchByDate="Search on, before, or after a certain date";\r
62255 ZmMsg.searchByDomain="Search by address domain";\r
62256 ZmMsg.searchByFlag="Search by message flag or status";\r
62257 ZmMsg.searchByFolder="Search by folder";\r
62258 ZmMsg.searchBySavedSearch="Invoke a saved search";\r
62259 ZmMsg.searchBySize="Search by size";\r
62260 ZmMsg.searchByTag="Search by tag";\r
62261 ZmMsg.searchByTime="Search by relative time/date";\r
62262 ZmMsg.searchByZimlet="Search by Zimlet";\r
62263 ZmMsg.searchCalendar="Calendar Appointments";\r
62264 ZmMsg.searchContacts="Contacts";\r
62265 ZmMsg.searchFilterHint="e.g. has:attachment";\r
62266 ZmMsg.searchFilterLabel="Search filter:";\r
62267 ZmMsg.searchForAny="Search for anything";\r
62268 ZmMsg.searchForAppts="Search for appointments";\r
62269 ZmMsg.searchForConvs="Search for mail conversations";\r
62270 ZmMsg.searchForFiles="Search for files";\r
62271 ZmMsg.searchForMessages="Search for mail messages";\r
62272 ZmMsg.searchForPages="Search for pages";\r
62273 ZmMsg.searchForVoicemails="Search for voice mails";\r
62274 ZmMsg.searchGALContacts="Global Address List";\r
62275 ZmMsg.searchIn="in:";\r
62276 ZmMsg.searchInput="Search";\r
62277 ZmMsg.searchLabel="Search:";\r
62278 ZmMsg.searchLanguageLabel="Search Language:";\r
62279 ZmMsg.searchMail="Email";\r
62280 ZmMsg.searchName="Name for the saved search";\r
62281 ZmMsg.searchNameEmpty="You must specify a value for the name of the saved search.";\r
62282 ZmMsg.searchNameExists="A saved search with that name exists. Please use another name.";\r
62283 ZmMsg.searchNoLocation="You must select a location for the saved search.";\r
62284 ZmMsg.searchNotebooks="Pages";\r
62285 ZmMsg.searchNotes="Notes";\r
62286 ZmMsg.searchPersonalContacts="Personal Contacts";\r
62287 ZmMsg.searchPersonalSharedContacts="Personal and Shared Contacts";\r
62288 ZmMsg.searchResults="Search results";\r
62289 ZmMsg.searchScope="Search Scope";\r
62290 ZmMsg.searchSettingsLabel="Search Settings:";\r
62291 ZmMsg.searchShared="Include Shared Items";\r
62292 ZmMsg.searchTasks="Search Tasks";\r
62293 ZmMsg.searchTooltip="Run the search";\r
62294 ZmMsg.searchVoicemails="Voice Mails";\r
62295 ZmMsg.searches="Searches";\r
62296 ZmMsg.seconds="seconds";\r
62297 ZmMsg.sections="Sections";\r
62298 ZmMsg.selectAdapt="Select based on whether I was moving up or down in the list";\r
62299 ZmMsg.selectAddresses="Select Addresses";\r
62300 ZmMsg.selectAfterDeleteLabel="After I move or delete a message:";\r
62301 ZmMsg.selectBuddyOrContact="Select Buddy or Contact";\r
62302 ZmMsg.selectContact="Select Contact";\r
62303 ZmMsg.selectIdentityWhen="Select this identity when:";\r
62304 ZmMsg.selectLanguage="Language";\r
62305 ZmMsg.selectNext="Select the next message";\r
62306 ZmMsg.selectPrevious="Select the previous message";\r
62307 ZmMsg.selectSearch="Select a saved search";\r
62308 ZmMsg.selectSkin="UI theme";\r
62309 ZmMsg.selectTimezone="Timezone";\r
62310 ZmMsg.selectTimezoneInfo="We are unable to identify the timezone in your area, please choose the timezone from list";\r
62311 ZmMsg.selectTimezoneLabel="Timezone:";\r
62312 ZmMsg.selectTimezoneTitle="Select Timezone    ";\r
62313 ZmMsg.selection="Selection";\r
62314 ZmMsg.selectionColumn="Click to select all items on page. Shift-click to select all search results.";\r
62315 ZmMsg.selectiveCallForwardingDescription="Forward <b>only</b> the following numbers to:";\r
62316 ZmMsg.selectiveCallForwardingError="The selective call forwarding number is invalid";\r
62317 ZmMsg.selectiveCallForwardingFromError="There must be at least one number to forward calls from";\r
62318 ZmMsg.selectiveCallForwardingHeader="Forward Calls From";\r
62319 ZmMsg.selectiveCallForwardingLabel="Selective Call Forwarding:";\r
62320 ZmMsg.selectiveCallForwardingRules="(You may forward up to 12 numbers)";\r
62321 ZmMsg.sellEmail="You are not authorized to send email.";\r
62322 ZmMsg.send="Send";\r
62323 ZmMsg.sendAsAttachment="Send as attachment(s)";\r
62324 ZmMsg.sendBCCTo="Send BCC to:";\r
62325 ZmMsg.sendByEmail="Send by email";\r
62326 ZmMsg.sendComposedMailAboutShare="Compose email in new window";\r
62327 ZmMsg.sendErrorAbort="Message not sent; one or more addresses were not accepted.";\r
62328 ZmMsg.sendErrorInvalidAddresses="Rejected addresses: {0}";\r
62329 ZmMsg.sendErrorPartial="Message not sent to the following rejected addresses: {0}";\r
62330 ZmMsg.sendErrorUnsentAddresses="Message NOT sent to: {0}";\r
62331 ZmMsg.sendFile="Send file";\r
62332 ZmMsg.sendFrom="From:";\r
62333 ZmMsg.sendFromAddressError="The send from address field is not a valid email address";\r
62334 ZmMsg.sendFromError="The send from field is empty";\r
62335 ZmMsg.sendInvDeniedAutoReply="Send auto-reply to users who are denied from inviting me";\r
62336 ZmMsg.sendLink="Send link(s)";\r
62337 ZmMsg.sendMailAboutShareNote="<b>Note:</b> The standard message displays your name, the name of the shared item, permissions granted to the recipients, and login information, if necessary.";\r
62338 ZmMsg.sendNoMailAboutShare="Do not send mail about this share";\r
62339 ZmMsg.sendNotificationMail="Send Notification Mail";\r
62340 ZmMsg.sendNotificationMailWarning="Changes made will not be visible to attendees on disabling mail notification";\r
62341 ZmMsg.sendObo="Send this message on behalf of: {0}";\r
62342 ZmMsg.sendPageTT="Send page";\r
62343 ZmMsg.sendReceive="Send/Receive";\r
62344 ZmMsg.sendStandardMailAboutShare="Send standard message";\r
62345 ZmMsg.sendStandardMailAboutSharePlusNote="Add note to standard message";\r
62346 ZmMsg.sendTooltip="Send message";\r
62347 ZmMsg.sendUpdateTitle="Send Update to Attendees";\r
62348 ZmMsg.sendUpdatesAll="Send updates to all attendees.";\r
62349 ZmMsg.sendUpdatesNew="Send updates only to added or removed attendees.";\r
62350 ZmMsg.sendWithIdentity="Send messages with this identity:";\r
62351 ZmMsg.sender="Sender";\r
62352 ZmMsg.sent="Sent";\r
62353 ZmMsg.sentAt="Sent";\r
62354 ZmMsg.sentBy="Sent By";\r
62355 ZmMsg.sentByLabel="Sent By:";\r
62356 ZmMsg.separator="Separator";\r
62357 ZmMsg.sessionExpired="Your session has expired. Please login again.";\r
62358 ZmMsg.setPriority="Set the priority of the message";\r
62359 ZmMsg.setReplyTo="Reply-to:";\r
62360 ZmMsg.setStatus="Set Status";\r
62361 ZmMsg.settingsLabel="Settings:";\r
62362 ZmMsg.setup="Setup";\r
62363 ZmMsg.share="Share";\r
62364 ZmMsg.shareAFolder="Share A Folder";\r
62365 ZmMsg.shareAcceptedHtml='<h3>The following share has been accepted:</h3>\n<p>\n<table border="0">\n<tr><th align="left">Shared item:</th><td>{0}</td></tr>\n<tr><th align="left">Owner:</th><td>{2}</td></tr>\n</table>\n<p>\n<table border="0">\n<tr><th align="left">Grantee:</th><td>{3}</td></tr>\n<tr><th align="left">Role:</th><td>{4}</td></tr>\n<tr><th align="left">Allowed actions:</th><td>{5}</td>\n</tr>\n</table>';\r
62366 ZmMsg.shareAcceptedSubject="Share Accepted";\r
62367 ZmMsg.shareAcceptedText="The following share has been accepted:\n\nShared item: {0}\nOwner: {2}\n\nGrantee: {3}\nRole: {4}\nAllowed actions: {5}";\r
62368 ZmMsg.shareActionAdmin="Administer";\r
62369 ZmMsg.shareActionDelete="Remove";\r
62370 ZmMsg.shareActionInsert="Add";\r
62371 ZmMsg.shareActionNoAdmin="Administer Denied";\r
62372 ZmMsg.shareActionNoDelete="Remove Denied";\r
62373 ZmMsg.shareActionNoInsert="Add Denied";\r
62374 ZmMsg.shareActionNoRead="View Denied";\r
62375 ZmMsg.shareActionNoWorkflow="Accept Denied, Decline Denied";\r
62376 ZmMsg.shareActionNoWrite="Edit Denied";\r
62377 ZmMsg.shareActionNone="None";\r
62378 ZmMsg.shareActionRead="View";\r
62379 ZmMsg.shareActionWorkflow="Accept, Decline";\r
62380 ZmMsg.shareActionWrite="Edit";\r
62381 ZmMsg.shareAddrBook="Share Address Book";\r
62382 ZmMsg.shareCalendar="Share Calendar";\r
62383 ZmMsg.shareCreatedHtml='<h3>The following share has been created:</h3>\n<p>\n<table border="0">\n<tr><th align="left">Shared item:</th><td>{0} {1}</td></tr>\n<tr><th align="left">Owner:</th><td>{2}</td></tr>\n</table>\n</p>\n<table border="0">\n<tr><th align="left">Grantee:</th><td>{3}</td></tr>\n<tr><th align="left">Role:</th><td>{4}</td></tr>\n<tr><th align="left">Allowed actions:</th><td>{5}</td>\n</tr>\n</table>';\r
62384 ZmMsg.shareCreatedSubject="Share Created";\r
62385 ZmMsg.shareCreatedText="The following share has been created:\n\nShared item: {0} {1}\nOwner: {2}\n\nGrantee: {3}\nRole: {4}\nAllowed actions: {5}\n";\r
62386 ZmMsg.shareDeclinedHtml='<h3>The following share has been declined:</h3>\n<p>\n<table border="0">\n<tr><th align="left">Shared item:</th><td>{0}</td></tr>\n<tr><th align="left">Owner:</th><td>{2}</td></tr>\n</table>\n<p>\n<table border="0">\n<tr><th align="left">Grantee:</th><td>{3}</td></tr>\n<tr><th align="left">Role:</th><td>{4}</td></tr>\n<tr><th align="left">Allowed actions:</th><td>{5}</td>\n</tr>\n</table>';\r
62387 ZmMsg.shareDeclinedSubject="Share Declined";\r
62388 ZmMsg.shareDeclinedText="The following share has been declined:\n\nShared item: {0}\nOwner: {2}\n\nGrantee: {3}\nRole: {4}\nAllowed actions: {5}";\r
62389 ZmMsg.shareFolder="Share Folder";\r
62390 ZmMsg.shareFormText="Folders that have been shared with you are shown below. Once a folder has been shared with you, you must accept the share and provide a local name for the folder before it shows up in the overview. Folders that have been shared with you but which you have not accepted (if any) are shown in a separate list from shared folders that you have accepted. Folders may be shared with you in two different ways: they may be shared with a distribution list which includes you, or they may be shared with you directly by another user.";\r
62391 ZmMsg.shareModifiedHtml='<h3>The following share has been modified:</h3>\n<p>\n<table border="0">\n<tr><th align="left">Shared item:</th><td>{0} {1}</td></tr>\n<tr><th align="left">Owner:</th><td>{2}</td></tr>\n</table>\n<p>\n<table border="0">\n<tr><th align="left">Grantee:</th><td>{3}</td></tr>\n<tr><th align="left">Role:</th><td>{4} [MODIFIED]</td></tr>\n<tr><th align="left">Allowed actions:</th><td>{5} [MODIFIED]</td>\n</tr>\n</table>';\r
62392 ZmMsg.shareModifiedSubject="Share Modified";\r
62393 ZmMsg.shareModifiedText="The following share has been modified:\n\nShared item: {0} {1}\nOwner: {2}\n\nGrantee: {3}\nRole: {4} [MODIFIED]\nAllowed actions: {5} [MODIFIED]";\r
62394 ZmMsg.shareNameDefault="{0}''s {1}";\r
62395 ZmMsg.shareNotebook="Share Notebook";\r
62396 ZmMsg.shareNotesHtml='<p>\n<table border="0">\n<tr valign="top"><th align="left">Notes:</th><td>{0}</td></tr>\n</table>';\r
62397 ZmMsg.shareNotifyHtml='<h3>The following share item has been updated:</h3>\n<p>\n<table border="0">\n<tr><th align="left">Shared item:</th><td>{0}</td></tr>\n<tr><th align="left">Owner:</th><td>{2}</td></tr>\n</table>\n<p>\n<table border="0">\n<tr><th align="left">Grantee:</th><td>{3}</td></tr>\n<tr><th align="left">Role:</th><td>{4}</td></tr>\n<tr><th align="left">Allowed actions:</th><td>{5}</td>\n</tr>\n</table>';\r
62398 ZmMsg.shareNotifySubject="Share Item Updated";\r
62399 ZmMsg.shareNotifyText="The following shared item has been updated:\n\nShared item: {0}\nOwner: {2}\n\nGrantee: {3}\nRole: {4}\nAllowed actions: {5}";\r
62400 ZmMsg.shareProperties="Share Properties";\r
62401 ZmMsg.shareRevokedHtml='<h3>The following share has been revoked:</h3>\n\n<table border="0">\n<tr><th align="left">Shared item:</th><td>{0} {1}</td></tr>\n<tr><th align="left">Owner:</th><td>{2}</td></tr>\n</table>\n<p>\n<table border="0">\n<tr><th align="left">Revokee:</th><td>{3}</td></tr>\n</table>';\r
62402 ZmMsg.shareRevokedSubject="Share Revoked";\r
62403 ZmMsg.shareRevokedText="The following share has been revoked:\n\nShared item: {0} {1}\nOwner: {2}\n\nRevokee: {3}";\r
62404 ZmMsg.shareRoleAdmin="Admin";\r
62405 ZmMsg.shareRoleCustom="Custom";\r
62406 ZmMsg.shareRoleManager="Manager";\r
62407 ZmMsg.shareRoleNone="None";\r
62408 ZmMsg.shareRoleViewer="Viewer";\r
62409 ZmMsg.shareSection="Share Notebook";\r
62410 ZmMsg.shareTaskFolder="Share Task List";\r
62411 ZmMsg.shareTooltip="Share this item with another user";\r
62412 ZmMsg.shareUrlInfo="To allow others to access this item, direct them to this URL:";\r
62413 ZmMsg.shareWithAll="All authenticated users";\r
62414 ZmMsg.shareWithGuest="External guests (view only)";\r
62415 ZmMsg.shareWithGuestNotes="URL: {0}\nUsername: {1}\nPassword: {2}";\r
62416 ZmMsg.shareWithLabel="Share with:";\r
62417 ZmMsg.shareWithPublic="Public";\r
62418 ZmMsg.shareWithPublicLong="Public (view only, no password required)";\r
62419 ZmMsg.shareWithUserOrGroup="Internal users or groups";\r
62420 ZmMsg.sharedBySubject="{0} shared by {1}";\r
62421 ZmMsg.sharedFolderNotSupported="A file cannot be copied to shared folder";\r
62422 ZmMsg.sharing="Sharing";\r
62423 ZmMsg.sharingByMe="Folders shared by me";\r
62424 ZmMsg.sharingErrorOwnerMissing="Owner is a required field";\r
62425 ZmMsg.sharingErrorOwnerSelf="You cannot search for shares from yourself";\r
62426 ZmMsg.sharingFolder="Folder";\r
62427 ZmMsg.sharingFolderType="Type";\r
62428 ZmMsg.sharingGroup="Group";\r
62429 ZmMsg.sharingItem="Item";\r
62430 ZmMsg.sharingOwner="Owner";\r
62431 ZmMsg.sharingOwnerLabel="Owner:";\r
62432 ZmMsg.sharingRole="Role";\r
62433 ZmMsg.sharingWith="With";\r
62434 ZmMsg.sheet="Spreadsheets";\r
62435 ZmMsg.sheetTooltip="Spreadsheets";\r
62436 ZmMsg.shortcuts="Shortcuts";\r
62437 ZmMsg.shortcutsApp="Application Shortcuts";\r
62438 ZmMsg.shortcutsCurrent="Listed below are the keyboard shortcuts that are currently available, based on where you are in the application. To see a comprehensive list of all keyboard shortcuts, go to Preferences | Shortcuts.";\r
62439 ZmMsg.shortcutsSys="System Shortcuts";\r
62440 ZmMsg.shouldShowTimezone="Show timezone list in appointment view";\r
62441 ZmMsg.showAdvancedOptions="Show advanced options";\r
62442 ZmMsg.showAllItemTypes="Show All Item Types";\r
62443 ZmMsg.showAs="Show as:";\r
62444 ZmMsg.showBCC="Show BCC";\r
62445 ZmMsg.showDetails="Show Details";\r
62446 ZmMsg.showExternalImages="Download pictures automatically in HTML Email";\r
62447 ZmMsg.showFragments="Display snippets of messages in email list:";\r
62448 ZmMsg.showGlobalInbox="Show Global Inbox";\r
62449 ZmMsg.showGroupShares="Show folders shared with me through a distribution list";\r
62450 ZmMsg.showMessage="Show Message";\r
62451 ZmMsg.showNames="Show names from:";\r
62452 ZmMsg.showOnlyContacts="Show only Contacts";\r
62453 ZmMsg.showOnlyMail="Show only Mail Messages";\r
62454 ZmMsg.showOrig="Show Original";\r
62455 ZmMsg.showPassword="Show password";\r
62456 ZmMsg.showPopup="Show a popup notification";\r
62457 ZmMsg.showPopupBrowserPlus="Show a popup notification";\r
62458 ZmMsg.showPopupBrowserPlusLink="(requires <a target='_blank' href='http://browserplus.yahoo.com/'>Yahoo! BrowserPlus</a>)";\r
62459 ZmMsg.showPopupMac="Show a popup notification (requires Growl)";\r
62460 ZmMsg.showRemainingFolders="Show remaining {0}";\r
62461 ZmMsg.showRemainingFoldersTooltip="Click here to show {0} remaining {1}";\r
62462 ZmMsg.showSearchString="Show advanced search language in search toolbar";\r
62463 ZmMsg.showSelectionString="Display checkboxes to quickly select items in lists (requires refresh)";\r
62464 ZmMsg.showUserShares="Show folders shared with me by the following user:";\r
62465 ZmMsg.showWeekNumber="Show Calendar Week ";\r
62466 ZmMsg.signature="Signature";\r
62467 ZmMsg.signatureAttachLabel="Attach Signature:";\r
62468 ZmMsg.signatureDoNotAttach="Do Not Attach Signature";\r
62469 ZmMsg.signatureEnabled="Automatically attach my signature to every email I send";\r
62470 ZmMsg.signatureEnabledHelp="To only use this signature sometimes, uncheck the box above and use the <b>Add Signature</b> button in the email compose screen.";\r
62471 ZmMsg.signatureLabel="Signature:";\r
62472 ZmMsg.signatureMoreOptions="A default signature can be set on the <a href='#Prefs.Accounts' onclick='skin.gotoPrefs(\"ACCOUNTS\");return false'>Accounts Page</a>";\r
62473 ZmMsg.signatureNameLabel="Signature Name:";\r
62474 ZmMsg.signatureNameMissingRequired="Signature name is empty. It's required.";\r
62475 ZmMsg.signatureNewName="Signature #{0}";\r
62476 ZmMsg.signatureNote="Signatures with no name or content are discarded.";\r
62477 ZmMsg.signatureStyle="Place signature at bottom of entire message";\r
62478 ZmMsg.signatureValueMissingRequired="Signature value is empty. It's required.";\r
62479 ZmMsg.signatures="Signatures";\r
62480 ZmMsg.signaturesUsing="Using Signatures";\r
62481 ZmMsg.simple="Simple";\r
62482 ZmMsg.site="Site";\r
62483 ZmMsg.size="Size";\r
62484 ZmMsg.sizeLabel="Size:";\r
62485 ZmMsg.sizeToolTip="Size";\r
62486 ZmMsg.skinChangeRestart="Would you like to reload the application now to show the new theme? <br>(Otherwise, the new theme will appear the next time you log in.)";\r
62487 ZmMsg.skinDeletedError='Your current theme, "{0}", is not available. Please contact your system administrator.';\r
62488 ZmMsg.skinDeletedErrorTitle="Zimbra : Theme not available";\r
62489 ZmMsg.slide_insertAreaChart="Insert Area Chart";\r
62490 ZmMsg.slide_insertChart="Insert Chart";\r
62491 ZmMsg.slide_insertColumnChart="Insert Column Chart";\r
62492 ZmMsg.slide_insertDoughnutChart="Insert Doughnut Chart";\r
62493 ZmMsg.slide_insertFunnelChart="Insert Funnel Chart";\r
62494 ZmMsg.slide_insertPieChart="Insert Pie Chart";\r
62495 ZmMsg.slides_confirmDeleteSlide="Are you sure you want to delete this slide?";\r
62496 ZmMsg.slides_deleteSlide="Delete Slide";\r
62497 ZmMsg.slides_deleteTextBox="Delete Text Box";\r
62498 ZmMsg.slides_endSlideMsg="End of slide show. <br> Click to exit";\r
62499 ZmMsg.slides_imageURL="Image URL";\r
62500 ZmMsg.slides_insertSlide="Insert Slide";\r
62501 ZmMsg.slides_insertTextBox="Insert Text Box";\r
62502 ZmMsg.slides_launchSlideShow="Launch Slide Show";\r
62503 ZmMsg.slides_runSlideShow="Run";\r
62504 ZmMsg.slides_textBoxMessage="Click to enter text";\r
62505 ZmMsg.slides_themeBlue="Blue";\r
62506 ZmMsg.slides_themeBlueBand="Blue Band";\r
62507 ZmMsg.slides_themeDarkBlue="Dark Blue";\r
62508 ZmMsg.slides_themeDefault="Default";\r
62509 ZmMsg.slides_themeGreen="Green";\r
62510 ZmMsg.slides_themePurple="Purple";\r
62511 ZmMsg.slides_themes="Themes";\r
62512 ZmMsg.smaller="is smaller than";\r
62513 ZmMsg.smartInclude="Include last message only";\r
62514 ZmMsg.snooze="Snooze";\r
62515 ZmMsg.snoozeAll="Snooze all for:";\r
62516 ZmMsg.sortByDuration="Sort by Duration";\r
62517 ZmMsg.sortByFrom="Sort by From";\r
62518 ZmMsg.sortByLastSaved="Sort by Last Saved";\r
62519 ZmMsg.sortByReceived="Sort by Received";\r
62520 ZmMsg.sortBySent="Sort by Sent";\r
62521 ZmMsg.sortBySize="Sort by Size";\r
62522 ZmMsg.sortBySubject="Sort by Subject";\r
62523 ZmMsg.sortByTo="Sort by To";\r
62524 ZmMsg.sortOrder="Sort order";\r
62525 ZmMsg.source="Source";\r
62526 ZmMsg.sourceLabel="Source:";\r
62527 ZmMsg.specAtt="Specific Attachment";\r
62528 ZmMsg.specFile="Specific Filename";\r
62529 ZmMsg.spellCheck="Spell Check";\r
62530 ZmMsg.spellCheckFailed="Spell Check Failed. Do you want to send this message anyway?";\r
62531 ZmMsg.spellCheckTooltip="Check spelling";\r
62532 ZmMsg.spellCheckUnavailable="Spell Check Unavailable";\r
62533 ZmMsg.splashScreenAppName="Collaboration Suite";\r
62534 ZmMsg.splashScreenCompanyURL="http://www.zimbra.com";\r
62535 ZmMsg.splashScreenCopyright="Copyright \u00a9 2005-2009 Zimbra, Inc.     'Zimbra' and the Zimbra logos are trademarks of Zimbra, Inc.";\r
62536 ZmMsg.splashScreenLoading="Loading ...";\r
62537 ZmMsg.splashScreenOfflineName="Desktop";\r
62538 ZmMsg.splashScreenSwitch="If you are using a slow connection or an older computer, you may want to <a href='javascript:switchToStandardClient()'>switch to the Standard (HTML) version</a>.";\r
62539 ZmMsg.splashScreenVersion="Version";\r
62540 ZmMsg.splashScreenZimbraUrl="<a href='http://www.zimbra.com' target=_blank>http://www.zimbra.com</a>";\r
62541 ZmMsg.splitCell="Split Cell";\r
62542 ZmMsg.splitCells="Split Cells";\r
62543 ZmMsg.spreadSheet_func_PI="Constant PI";\r
62544 ZmMsg.spreadSheet_func_abs="Returns the absolute value of the argument";\r
62545 ZmMsg.spreadSheet_func_average="Computes the arithmetic average of several values";\r
62546 ZmMsg.spreadSheet_func_ceil="Returns the smallest integer bigger than the argument";\r
62547 ZmMsg.spreadSheet_func_concat="Concatenates multiple strings";\r
62548 ZmMsg.spreadSheet_func_cos="Returns the cosine of the argument";\r
62549 ZmMsg.spreadSheet_func_exp="Computes the exponential of the argument";\r
62550 ZmMsg.spreadSheet_func_floor="Returns the biggest integer smaller than the argument";\r
62551 ZmMsg.spreadSheet_func_if="Returns one of 2 values depending on the condition";\r
62552 ZmMsg.spreadSheet_func_join="Joins multiple strings with a given separator";\r
62553 ZmMsg.spreadSheet_func_len="Returns the length of the given string argument";\r
62554 ZmMsg.spreadSheet_func_log="Computes the natural logarithm of the argument";\r
62555 ZmMsg.spreadSheet_func_max="Returns the maximum of several values";\r
62556 ZmMsg.spreadSheet_func_min="Returns the minimum of several values";\r
62557 ZmMsg.spreadSheet_func_modulo="Computes the remainder of division of arg1 to arg2";\r
62558 ZmMsg.spreadSheet_func_multiply="Multiplies the values of given arguments";\r
62559 ZmMsg.spreadSheet_func_round="Rounds the argument to the nearest integer";\r
62560 ZmMsg.spreadSheet_func_sin="Returns the sine of the argument";\r
62561 ZmMsg.spreadSheet_func_sqrt="Computes the square root of the argument";\r
62562 ZmMsg.spreadSheet_func_sum="Computes the sum of given arguments";\r
62563 ZmMsg.spreadSheet_func_tan="Returns the tangent of the argument";\r
62564 ZmMsg.spreadSheet_msg_autoDecimals="Auto decimals";\r
62565 ZmMsg.spreadSheet_msg_autoType="Auto type";\r
62566 ZmMsg.spreadsheet="Spreadsheet";\r
62567 ZmMsg.spreadsheetName="Spreadsheet Name";\r
62568 ZmMsg.spreadsheetTitle="Zimbra Spreadsheet ";\r
62569 ZmMsg.spreadsheet_msg_numberOfDecimals="{0,choice,0#No decimals|1#{0} decimal|2#{0} decimals}";\r
62570 ZmMsg.start="Start";\r
62571 ZmMsg.startDate="Start Date";\r
62572 ZmMsg.startLabel="Start:";\r
62573 ZmMsg.startOn="Start On:";\r
62574 ZmMsg.startTime="Start Time";\r
62575 ZmMsg.startTimeLabel="Start Time:";\r
62576 ZmMsg.status="Status";\r
62577 ZmMsg.statusFree="Status: Free";\r
62578 ZmMsg.statusHistory="Status History";\r
62579 ZmMsg.statusLabel="Status:";\r
62580 ZmMsg.stickyWindow="Sticky Window";\r
62581 ZmMsg.stopEvaluation="Stop evaluation";\r
62582 ZmMsg.stopFilterProcessing="Do not process additional filters";\r
62583 ZmMsg.styleLabel="Style:";\r
62584 ZmMsg.subject="Subject";\r
62585 ZmMsg.subjectAccept="Accept";\r
62586 ZmMsg.subjectDecline="Decline";\r
62587 ZmMsg.subjectLabel="Subject:";\r
62588 ZmMsg.subjectNewTime="New Time Proposed";\r
62589 ZmMsg.subjectTentative="Tentative";\r
62590 ZmMsg.subscribeToFeed="Subscribe to RSS/ATOM feed";\r
62591 ZmMsg.subscript="Subscript";\r
62592 ZmMsg.sumCells="Sum cells";\r
62593 ZmMsg.summary="Summary:";\r
62594 ZmMsg.superscript="Superscript";\r
62595 ZmMsg.switchIncludeWarning="Text that you've added before the included content will be preserved, but text added after it will be lost. Continue?";\r
62596 ZmMsg.switchToHtml="Switching to html will discard some text formatting on switching back. Continue?";\r
62597 ZmMsg.switchToOfflineClientEx="<a href='http://www.zimbra.com/products/desktop.html' target='_blank'>Learn about the offline version</a>";\r
62598 ZmMsg.switchToText="Switching to text will discard all HTML formatting. Continue?";\r
62599 ZmMsg.sync="Sync";\r
62600 ZmMsg.syncOfflineFolderOff="Turn sync off";\r
62601 ZmMsg.syncOfflineFolderOn="Turn sync on";\r
62602 ZmMsg.syncTooltip="Synchronize mailbox with online server";\r
62603 ZmMsg.systemDefaults="System Defaults:";\r
62604 ZmMsg.tableAlignment="Table Alignment:";\r
62605 ZmMsg.tableOperations="Table Operations";\r
62606 ZmMsg.tableProperties="Table Properties";\r
62607 ZmMsg.tableSize="Table Size";\r
62608 ZmMsg.tableWidth="Table Width:";\r
62609 ZmMsg.tag="Tag";\r
62610 ZmMsg.tagAppt="Tag Appointment";\r
62611 ZmMsg.tagAppts="Tag Appointments";\r
62612 ZmMsg.tagColor="Tag Color";\r
62613 ZmMsg.tagConversation="Tag Conversation";\r
62614 ZmMsg.tagConversations="Tag Conversations";\r
62615 ZmMsg.tagFile="Tag File";\r
62616 ZmMsg.tagItem="Tag Item";\r
62617 ZmMsg.tagItems="Tag Items";\r
62618 ZmMsg.tagMessage="Tag Message";\r
62619 ZmMsg.tagMessages="Tag Messages";\r
62620 ZmMsg.tagName="Tag name";\r
62621 ZmMsg.tagNameEmpty="You must specify a value for the tag name.";\r
62622 ZmMsg.tagNameExists="A tag with that name exists. Please use another name. (Tag names are case-insensitive.)";\r
62623 ZmMsg.tagPage="Tag Page";\r
62624 ZmMsg.tagReadonly="You have selected one or more appointments which are read only or shared. These appointments cannot be tagged.";\r
62625 ZmMsg.tagSelectLocation="You must select a location for the tag.";\r
62626 ZmMsg.tagTask="Tag Task";\r
62627 ZmMsg.tagTasks="Tag Tasks";\r
62628 ZmMsg.tagTooltip="Tag selected item(s)";\r
62629 ZmMsg.tagWith="Tag with";\r
62630 ZmMsg.tags="Tags";\r
62631 ZmMsg.targetAddressBook="Select the destination address book.";\r
62632 ZmMsg.targetCalendar="Select the destination calendar.";\r
62633 ZmMsg.targetFolder="Select the destination folder.";\r
62634 ZmMsg.targetTag="Select a tag:";\r
62635 ZmMsg.task="Task";\r
62636 ZmMsg.taskFolder="Task List:";\r
62637 ZmMsg.taskPastDue="Task is past due.";\r
62638 ZmMsg.taskSaved="Task Saved";\r
62639 ZmMsg.tasks="Tasks";\r
62640 ZmMsg.tasksFolder="Task Folder";\r
62641 ZmMsg.template="Template";\r
62642 ZmMsg.tentative="Tentative";\r
62643 ZmMsg.testUrl="Test";\r
62644 ZmMsg.testUrlTooltip="Open this URL in new window";\r
62645 ZmMsg.text="Text";\r
62646 ZmMsg.textAlign="Text Alignment:";\r
62647 ZmMsg.textDocuments="Text Documents";\r
62648 ZmMsg.textFile="Text File";\r
62649 ZmMsg.textStyle="Text Style";\r
62650 ZmMsg.theirs="Theirs";\r
62651 ZmMsg["theme-bare"]="Bare";\r
62652 ZmMsg["theme-beach"]="Beach";\r
62653 ZmMsg["theme-bones"]="Bones";\r
62654 ZmMsg["theme-froggy"]="Froggy";\r
62655 ZmMsg["theme-harvest"]="Harvest";\r
62656 ZmMsg["theme-hotrod"]="Hot Rod";\r
62657 ZmMsg["theme-lavender"]="Lavender";\r
62658 ZmMsg["theme-lemongrass"]="Lemongrass";\r
62659 ZmMsg["theme-sand"]="Sand";\r
62660 ZmMsg["theme-sky"]="Sky";\r
62661 ZmMsg["theme-steel"]="Steel";\r
62662 ZmMsg["theme-vanilla"]="Vanilla";\r
62663 ZmMsg["theme-venice"]="Venice";\r
62664 ZmMsg["theme-waves"]="Waves";\r
62665 ZmMsg.themeLabel="Theme:";\r
62666 ZmMsg["thunderbird-csv"]="Thunderbird Contacts";\r
62667 ZmMsg.tiffImage="TIFF Image";\r
62668 ZmMsg.time="Time";\r
62669 ZmMsg.timezonePrefSaved="Timezone Preference Saved";\r
62670 ZmMsg.titleLabel="Title:";\r
62671 ZmMsg.to="To";\r
62672 ZmMsg.toCc="To / Cc";\r
62673 ZmMsg.toLabel="To:";\r
62674 ZmMsg.today="Today";\r
62675 ZmMsg.todayGoto="Go to Today";\r
62676 ZmMsg.todayTooltip="Show the calendar for today";\r
62677 ZmMsg.top="Top";\r
62678 ZmMsg.trash="Trash";\r
62679 ZmMsg.type="Type";\r
62680 ZmMsg.typeLabel="Type:";\r
62681 ZmMsg.typing="typing";\r
62682 ZmMsg.unableToGetPage="Unable to fetch page content";\r
62683 ZmMsg.unableToImportFile="Unable to import file";\r
62684 ZmMsg.unableToSavePage="Unable to save page";\r
62685 ZmMsg.undelete="Undelete";\r
62686 ZmMsg.under="under";\r
62687 ZmMsg.unflagged="Unflagged";\r
62688 ZmMsg.unitsLabel="Units:";\r
62689 ZmMsg.unknown="Unknown";\r
62690 ZmMsg.unknownBinaryType="Unknown Binary Type";\r
62691 ZmMsg.unknownError="An unknown error has occurred.";\r
62692 ZmMsg.unknownUser='Unknown user "{0}". Must specify a valid Zimbra user.';\r
62693 ZmMsg.unread="Unread";\r
62694 ZmMsg.unreadCount="{0} Unread";\r
62695 ZmMsg.unsupportedBrowserTip="To learn more about Zimbra and the Zimbra Collaboration Suite, visit <a href='http://www.zimbra.com'>www.zimbra.com</a> or send an email to <a href='mailto:info@zimbra.com'>info@zimbra.com</a>.\";";\r
62696 ZmMsg.untitled="Untitled";\r
62697 ZmMsg.upLabel="Up";\r
62698 ZmMsg.uploadAction="If a file already exists with the same name:";\r
62699 ZmMsg.uploadActionAsk="Ask Me";\r
62700 ZmMsg.uploadActionKeepMine="Replace With My File";\r
62701 ZmMsg.uploadActionKeepTheirs="Keep Existing File";\r
62702 ZmMsg.uploadChoose="Choose one or more files to upload:";\r
62703 ZmMsg.uploadConflict="Upload Conflict";\r
62704 ZmMsg.uploadConflictDesc="The following file(s) already exist on the server.<br>Which would you like to keep?";\r
62705 ZmMsg.uploadDocs="Upload Files";\r
62706 ZmMsg.uploadError="Upload error: {0}<br>Unable to upload the file.";\r
62707 ZmMsg.uploadErrorAccessDenied="Upload error: Access is denied<br>Unable to upload the file.";\r
62708 ZmMsg.uploadFileToBriefcase="Upload New File to Briefcase";\r
62709 ZmMsg.uploadImage="Upload Image";\r
62710 ZmMsg.uploadNewFile="Upload File";\r
62711 ZmMsg.url="URL";\r
62712 ZmMsg.urlLabel="URL:";\r
62713 ZmMsg.useQuickAdd="Use the QuickAdd dialog when creating new appointments";\r
62714 ZmMsg.useSignature="Use signature:";\r
62715 ZmMsg.userLabel="User:";\r
62716 ZmMsg.userUnknown="UNKNOWN USER";\r
62717 ZmMsg.username="Username";\r
62718 ZmMsg.usernameLabel="Username:";\r
62719 ZmMsg.validateRecurrence="Start date no longer fits the existing recurrence pattern.<br>Do you want to reset it to the nearest possible date?";\r
62720 ZmMsg.value="Value";\r
62721 ZmMsg.valueLabel="Value:";\r
62722 ZmMsg.versionChangeRestart="The server software has been updated. It is recommended that you reload your browser so that you are up to date.<br><br> Old version: {0}<br> New version: {1}<br><br> Would you like to reload the browser now? Warning: if you choose not to reload, there is a chance you will encounter errors.";\r
62723 ZmMsg.versionLabel="Version:";\r
62724 ZmMsg.verticalAlign="Vertical Align:";\r
62725 ZmMsg.video="Video";\r
62726 ZmMsg.view="View";\r
62727 ZmMsg.viewAllImages="View all images";\r
62728 ZmMsg.viewAppointment="Open";\r
62729 ZmMsg.viewAsHtml="view as html";\r
62730 ZmMsg.viewByDate="View by date:";\r
62731 ZmMsg.viewCalForDay="day";\r
62732 ZmMsg.viewCalForList="list";\r
62733 ZmMsg.viewCalForMonth="month";\r
62734 ZmMsg.viewCalForWeek="week";\r
62735 ZmMsg.viewCalForWorkWeek="work";\r
62736 ZmMsg.viewCalListTooltip="Show calendar as a list";\r
62737 ZmMsg.viewContacts="Default contact view";\r
62738 ZmMsg.viewDay="Day";\r
62739 ZmMsg.viewDayTooltip="Show calendar for the currently selected day";\r
62740 ZmMsg.viewEntireMessage="View entire message.";\r
62741 ZmMsg.viewFileAsHtml="View as HTML";\r
62742 ZmMsg.viewList="List";\r
62743 ZmMsg.viewMailAsHtml="View mail as HTML (when possible)";\r
62744 ZmMsg.viewMailAsHtmlLabel="Display HTML:";\r
62745 ZmMsg.viewMessage="To view a message, click on it.";\r
62746 ZmMsg.viewMonth="Month";\r
62747 ZmMsg.viewMonthTooltip="Show calendar for the currently selected month";\r
62748 ZmMsg.viewSchedule="Schedule";\r
62749 ZmMsg.viewScheduleTooltip="Show schedule view";\r
62750 ZmMsg.viewTheirs="View Theirs";\r
62751 ZmMsg.viewTooltip="Change view options";\r
62752 ZmMsg.viewWeek="Week";\r
62753 ZmMsg.viewWeekTooltip="Show calendar for the currently selected week";\r
62754 ZmMsg.viewWorkWeek="Work Week";\r
62755 ZmMsg.viewWorkWeekTooltip="Show calendar for the currently selected work week";\r
62756 ZmMsg.voice="Voice";\r
62757 ZmMsg.voiceMail="Voice Mail";\r
62758 ZmMsg.voicePageSizeDescription="Voice mail messages per page";\r
62759 ZmMsg.voicePageSizeLabel="Display:";\r
62760 ZmMsg.voicePrefsInstruction="Select the phone number you want to manage then select the options for that number.";\r
62761 ZmMsg.voicemailBodyHtml='<br><br><br><br>A voice customer has sent you a new voice mail message. You can listen to the voice mail by simply opening the attached file.<br>From: {0}&nbsp;&nbsp;|&nbsp;&nbsp;Duration: {1}&nbsp;&nbsp;|&nbsp;&nbsp;Received: {2}<br><br><a href="http://www.zimbra.com">http://www.zimbra.com</a>';\r
62762 ZmMsg.voicemailBodyText="\n\n\n\nA voice customer has sent you a new voice mail message. You can listen to the voice mail by simply opening the attached file.\nFrom: {0}  |  Duration: {1}  |  Received: {2}\n\nhttp://www.zimbra.com";\r
62763 ZmMsg.voicemailFolder="Voice Mail Folder";\r
62764 ZmMsg.voicemailForwardSubject="Listen to this voice mail I received";\r
62765 ZmMsg.voicemailMessages="Voice Mail Messages";\r
62766 ZmMsg.voicemailReplySubject="About your voice mail";\r
62767 ZmMsg.voicemails="Voice Mails";\r
62768 ZmMsg.volume="Volume";\r
62769 ZmMsg.waitingOn="Waiting on someone else";\r
62770 ZmMsg.waveAudio="WAV Audio";\r
62771 ZmMsg.webPageLabel="A web page (URL):";\r
62772 ZmMsg.week="Week";\r
62773 ZmMsg.weekday="weekday";\r
62774 ZmMsg.weekly="Weekly";\r
62775 ZmMsg.welcome="Welcome";\r
62776 ZmMsg.whatsThis="What's This?";\r
62777 ZmMsg.when="When";\r
62778 ZmMsg.whenInFolder="Replying to a message in folder(s):";\r
62779 ZmMsg.whenInFolderError="The select when in folder field is not a valid list of folder names";\r
62780 ZmMsg.whenInFolderHint="Enter folder names separated by commas or semi-colons";\r
62781 ZmMsg.whenLabel="When:";\r
62782 ZmMsg.whenReplyingToAddress="When replying to messages sent to this email address";\r
62783 ZmMsg.whenReplyingToFolder="When reading or replying to messages in this folder";\r
62784 ZmMsg.whenSentTo="Replying to a message sent to:";\r
62785 ZmMsg.whenSentToError="The select when replying to address field is not a valid list of email addresses";\r
62786 ZmMsg.whenSentToHint="Enter email addresses separated by commas or semi-colons";\r
62787 ZmMsg.whiteBlackNumUsed="{0} of {1} used.";\r
62788 ZmMsg.whiteListLabel="Allow messages from:";\r
62789 ZmMsg.width="Width";\r
62790 ZmMsg.widthLabel="Width:";\r
62791 ZmMsg.wikiChangeNameWarning="Warning: Changing the name will break any links that point to this page.";\r
62792 ZmMsg.wikiFragmentRecursion="Error: recursive fragment.";\r
62793 ZmMsg.wikiIncludeMissing="Error: missing inclusion page {0}.";\r
62794 ZmMsg.wikiIncludeRecursion="Error: recursive include of page {0}.";\r
62795 ZmMsg.wikiNoTitle="[Untitled]";\r
62796 ZmMsg.wikiPages="Pages";\r
62797 ZmMsg.wikiPagesHeader="Pages";\r
62798 ZmMsg.wikiPagesNotFound="(None)";\r
62799 ZmMsg.wikiSectionsHeader="Notebooks";\r
62800 ZmMsg.wikiSpecialPages="Special Pages";\r
62801 ZmMsg.wikiTemplatesMissing="<b>Error:</b> Document templates missing. Please notify administrator.";\r
62802 ZmMsg.wikiToc="Table of Contents";\r
62803 ZmMsg.wikiUserPages="Pages";\r
62804 ZmMsg.wikletColor="Color";\r
62805 ZmMsg.wikletColorTT="Insert page's notebook color";\r
62806 ZmMsg.wikletConfigureNone="This wiklet is not configurable";\r
62807 ZmMsg.wikletConfigureParams="Click to set wiklet parameters";\r
62808 ZmMsg.wikletConfigureValue="Click to set wiklet value";\r
62809 ZmMsg.wikletCreateDate="CreateDate";\r
62810 ZmMsg.wikletCreateDateTT="Insert page creation date";\r
62811 ZmMsg.wikletCreateTime="CreateTime";\r
62812 ZmMsg.wikletCreateTimeTT="Insert page creation time";\r
62813 ZmMsg.wikletCreator="Creator";\r
62814 ZmMsg.wikletCreatorTT="Insert page creator's name";\r
62815 ZmMsg.wikletDateFull="Full Date";\r
62816 ZmMsg.wikletDateLong="Long Date";\r
62817 ZmMsg.wikletDateMedium="Medium Date";\r
62818 ZmMsg.wikletDateShort="Short Date";\r
62819 ZmMsg.wikletDateTimeFull="Full Date and Time";\r
62820 ZmMsg.wikletDateTimeLong="Long Date and Time";\r
62821 ZmMsg.wikletDateTimeMedium="Medium Date and Time";\r
62822 ZmMsg.wikletDateTimeShort="Short Date and Time";\r
62823 ZmMsg.wikletFragment="Fragment";\r
62824 ZmMsg.wikletFragmentTT="Insert page fragment";\r
62825 ZmMsg.wikletIcon="Icon";\r
62826 ZmMsg.wikletIconTT="Insert item icon";\r
62827 ZmMsg.wikletId="ID";\r
62828 ZmMsg.wikletIdTT="Insert item ID";\r
62829 ZmMsg.wikletInclude="Include";\r
62830 ZmMsg.wikletIncludeInherit="Inherit";\r
62831 ZmMsg.wikletIncludeTT="Insert contents of another page into this one";\r
62832 ZmMsg.wikletInline="Inline";\r
62833 ZmMsg.wikletInlineTT="Insert contents of another page in current scope";\r
62834 ZmMsg.wikletModifier="Modifier";\r
62835 ZmMsg.wikletModifierTT="Insert last modifier's name";\r
62836 ZmMsg.wikletModifyDate="ModifyDate";\r
62837 ZmMsg.wikletModifyDateTT="Insert page modification date";\r
62838 ZmMsg.wikletModifyTime="ModifyTime";\r
62839 ZmMsg.wikletModifyTimeTT="Insert page modification time";\r
62840 ZmMsg.wikletMsg="Message";\r
62841 ZmMsg.wikletMsgTT="Insert string from message catalog";\r
62842 ZmMsg.wikletName="Name";\r
62843 ZmMsg.wikletNameTT="Insert current item's name";\r
62844 ZmMsg.wikletParams="Wiklet Parameters";\r
62845 ZmMsg.wikletPath="Path";\r
62846 ZmMsg.wikletPathMakeLinks="Links";\r
62847 ZmMsg.wikletPathTT="Insert path to this page";\r
62848 ZmMsg.wikletTags="Tags";\r
62849 ZmMsg.wikletTagsTT="Insert current items's tags";\r
62850 ZmMsg.wikletTimeFull="Full Time";\r
62851 ZmMsg.wikletTimeLong="Long Time";\r
62852 ZmMsg.wikletTimeMedium="Medium Time";\r
62853 ZmMsg.wikletTimeShort="Short Time";\r
62854 ZmMsg.wikletToc="TOC";\r
62855 ZmMsg.wikletTocTT="Insert table of contents";\r
62856 ZmMsg.wikletUrl="URL";\r
62857 ZmMsg.wikletUrlTT="Insert URL to item";\r
62858 ZmMsg.wikletVersion="Version";\r
62859 ZmMsg.wikletVersionTT="Insert page version";\r
62860 ZmMsg.work="Work";\r
62861 ZmMsg.workWeek="Work Week";\r
62862 ZmMsg.wrote="wrote";\r
62863 ZmMsg.xmlDocument="XML";\r
62864 ZmMsg.yahoo="Yahoo!";\r
62865 ZmMsg["yahoo-csv"]="Yahoo! Contacts";\r
62866 ZmMsg.yahooMail="Yahoo! Mail";\r
62867 ZmMsg.yearly="Yearly";\r
62868 ZmMsg.yellow="Yellow";\r
62869 ZmMsg.ysearchURL="http://us.search.yahoo.com";\r
62870 ZmMsg.zd_docCharts="Charts";\r
62871 ZmMsg.zd_docChartsTT="Click to create Charts";\r
62872 ZmMsg.zd_docElements="Document Elements";\r
62873 ZmMsg.zd_docElementsTT="Click to create Document Elements";\r
62874 ZmMsg.zd_docQuickInsertTT="Click to insert";\r
62875 ZmMsg.zd_docQuickTables="Quick Tables";\r
62876 ZmMsg.zd_docQuickTablesTT="Click to create Quick Tables";\r
62877 ZmMsg.zd_docSmartArt="SmartArt Graphics";\r
62878 ZmMsg.zd_docSmartArtTT="Click to create SmartArt Graphics";\r
62879 ZmMsg.zeroSizedAtts="Files of zero size and invalid path have been discarded.";\r
62880 ZmMsg["zimbra-csv"]="Account Contacts";\r
62881 ZmMsg["zimbra-ics"]="Account Calendar";\r
62882 ZmMsg["zimbra-tgz"]="Account Export";\r
62883 ZmMsg.zimbraAssistant="Zimbra Assistant";\r
62884 ZmMsg.zimbraAssistantWelcome="Welcome to Zimbra Assistant!";\r
62885 ZmMsg.zimbraExcelDocument="Spreadsheet";\r
62886 ZmMsg.zimbraLabel="Zimbra:";\r
62887 ZmMsg.zimbraLoginMetaDesc="Zimbra provides open source server and client software for messaging and collaboration. To find out more visit http://www.zimbra.com.";\r
62888 ZmMsg.zimbraLoginTitle="Zimbra Collaboration Suite Log In";\r
62889 ZmMsg.zimbraPPTDocument="Presentation";\r
62890 ZmMsg.zimbraTitle="Zimbra";\r
62891 ZmMsg.zimbraWordDocument="Document";\r
62892 ZmMsg.zimlet="Zimlet";\r
62893 ZmMsg.zimletChangeRestart="Would you like to reload the application now to apply the zimlet changes? <br>(Otherwise, the zimlet changes will appear the next time you log in.)";\r
62894 ZmMsg.zimletInitError='An error occurred while initializing the zimlet "{0}". Please notify administrator.';\r
62895 ZmMsg.zimletNotLoaded='The zimlet "{0}" is not yet loaded.';\r
62896 ZmMsg.zimletUnknown='The zimlet "{0}" is not defined.';\r
62897 ZmMsg.zimlets="Zimlets";\r
62898 ZmMsg.zimletsPrefsMsg="Zimlets are add-on applications that enhance the functionality of your client. This table allows you to enable or disable individual zimlets.";\r
62899 ZmMsg.zipFile="Zip File";\r
62900 if(!window.AjxKeys){AjxKeys={}\r
62901 }AjxKeys["button.Select.description"]="Press the button";\r
62902 AjxKeys["button.Select.display"]="Enter";\r
62903 AjxKeys["button.Select.keycode"]="13";\r
62904 AjxKeys["button.Select.sort"]="10010";\r
62905 AjxKeys["button.SubMenu.description"]="Display menu";\r
62906 AjxKeys["button.SubMenu.display"]="ArrowDown";\r
62907 AjxKeys["button.SubMenu.keycode"]="40";\r
62908 AjxKeys["button.SubMenu.sort"]="10020;";\r
62909 AjxKeys["button.description"]="Buttons";\r
62910 AjxKeys["button.sort"]="10000";\r
62911 AjxKeys["dialog.Cancel.description"]="Cancel changes";\r
62912 AjxKeys["dialog.Cancel.display"]="Esc";\r
62913 AjxKeys["dialog.Cancel.keycode"]="27";\r
62914 AjxKeys["dialog.Cancel.sort"]="40020";\r
62915 AjxKeys["dialog.Enter.description"]="Save changes";\r
62916 AjxKeys["dialog.Enter.display"]="Enter; Space";\r
62917 AjxKeys["dialog.Enter.keycode"]="13; 32";\r
62918 AjxKeys["dialog.Enter.sort"]="40010";\r
62919 AjxKeys["dialog.No.description"]='Respond "No"';\r
62920 AjxKeys["dialog.No.display"]="N";\r
62921 AjxKeys["dialog.No.keycode"]="78";\r
62922 AjxKeys["dialog.No.sort"]="40040";\r
62923 AjxKeys["dialog.Yes.description"]='Respond "Yes"';\r
62924 AjxKeys["dialog.Yes.display"]="Y";\r
62925 AjxKeys["dialog.Yes.keycode"]="89";\r
62926 AjxKeys["dialog.Yes.sort"]="40030";\r
62927 AjxKeys["dialog.description"]="Dialog Boxes";\r
62928 AjxKeys["dialog.sort"]="40000";\r
62929 AjxKeys["editor.Bold.description"]="Bold";\r
62930 AjxKeys["editor.Bold.display"]="Ctrl+B";\r
62931 AjxKeys["editor.Bold.keycode"]="Ctrl+66";\r
62932 AjxKeys["editor.Bold.sort"]="60010";\r
62933 AjxKeys["editor.CenterJustify.description"]="Align center";\r
62934 AjxKeys["editor.CenterJustify.display"]="Ctrl+E";\r
62935 AjxKeys["editor.CenterJustify.keycode"]="Ctrl+69";\r
62936 AjxKeys["editor.CenterJustify.sort"]="60070";\r
62937 AjxKeys["editor.Header1.description"]="Level 1 header";\r
62938 AjxKeys["editor.Header1.display"]="Ctrl+1";\r
62939 AjxKeys["editor.Header1.keycode"]="Ctrl+49";\r
62940 AjxKeys["editor.Header1.sort"]="60090";\r
62941 AjxKeys["editor.Header2.description"]="Level 2 header";\r
62942 AjxKeys["editor.Header2.display"]="Ctrl+2";\r
62943 AjxKeys["editor.Header2.keycode"]="Ctrl+50";\r
62944 AjxKeys["editor.Header2.sort"]="60100";\r
62945 AjxKeys["editor.Header3.description"]="Level 3 header";\r
62946 AjxKeys["editor.Header3.display"]="Ctrl+3";\r
62947 AjxKeys["editor.Header3.keycode"]="Ctrl+51";\r
62948 AjxKeys["editor.Header3.sort"]="60110";\r
62949 AjxKeys["editor.Header4.description"]="Level 4 header";\r
62950 AjxKeys["editor.Header4.display"]="Ctrl+4";\r
62951 AjxKeys["editor.Header4.keycode"]="Ctrl+52";\r
62952 AjxKeys["editor.Header4.sort"]="60120";\r
62953 AjxKeys["editor.Header5.description"]="Level 5 header";\r
62954 AjxKeys["editor.Header5.display"]="Ctrl+5";\r
62955 AjxKeys["editor.Header5.keycode"]="Ctrl+53";\r
62956 AjxKeys["editor.Header5.sort"]="60130";\r
62957 AjxKeys["editor.Header6.description"]="Level 6 header";\r
62958 AjxKeys["editor.Header6.display"]="Ctrl+6";\r
62959 AjxKeys["editor.Header6.keycode"]="Ctrl+54";\r
62960 AjxKeys["editor.Header6.sort"]="60140";\r
62961 AjxKeys["editor.Italic.description"]="Italics";\r
62962 AjxKeys["editor.Italic.display"]="Ctrl+I";\r
62963 AjxKeys["editor.Italic.keycode"]="Ctrl+73";\r
62964 AjxKeys["editor.Italic.sort"]="60020";\r
62965 AjxKeys["editor.LeftJustify.description"]="Align left";\r
62966 AjxKeys["editor.LeftJustify.display"]="Ctrl+L";\r
62967 AjxKeys["editor.LeftJustify.keycode"]="Ctrl+76";\r
62968 AjxKeys["editor.LeftJustify.sort"]="60050";\r
62969 AjxKeys["editor.RightJustify.description"]="Align right";\r
62970 AjxKeys["editor.RightJustify.display"]="Ctrl+R";\r
62971 AjxKeys["editor.RightJustify.keycode"]="Ctrl+82";\r
62972 AjxKeys["editor.RightJustify.sort"]="60060";\r
62973 AjxKeys["editor.Strikethru.description"]="Strikethrough";\r
62974 AjxKeys["editor.Strikethru.display"]="Ctrl+Shift+K";\r
62975 AjxKeys["editor.Strikethru.keycode"]="Ctrl+Shift+75";\r
62976 AjxKeys["editor.Strikethru.sort"]="60030";\r
62977 AjxKeys["editor.Underline.description"]="Underline";\r
62978 AjxKeys["editor.Underline.display"]="Ctrl+U";\r
62979 AjxKeys["editor.Underline.keycode"]="Ctrl+85";\r
62980 AjxKeys["editor.Underline.sort"]="60040";\r
62981 AjxKeys["editor.description"]="HTML Editor";\r
62982 AjxKeys["editor.sort"]="60000";\r
62983 AjxKeys["keys.alt.display"]="Alt";\r
62984 AjxKeys["keys.alt.keycode"]="18";\r
62985 AjxKeys["keys.ctrl.display"]="Ctrl";\r
62986 AjxKeys["keys.ctrl.keycode"]="17";\r
62987 AjxKeys["keys.meta.display"]="Meta";\r
62988 AjxKeys["keys.meta.keycode.mac"]="224";\r
62989 AjxKeys["keys.meta.keycode.win"]="91";\r
62990 AjxKeys["keys.shift.display"]="Shift";\r
62991 AjxKeys["keys.shift.keycode"]="16";\r
62992 AjxKeys["list.AddNext.description"]="Add next item";\r
62993 AjxKeys["list.AddNext.display"]="Shift+ArrowDown";\r
62994 AjxKeys["list.AddNext.keycode"]="Shift+40";\r
62995 AjxKeys["list.AddNext.repeat"]="true";\r
62996 AjxKeys["list.AddNext.sort"]="30090";\r
62997 AjxKeys["list.AddPrevious.description"]="Add previous item";\r
62998 AjxKeys["list.AddPrevious.display"]="Shift+ArrowUp";\r
62999 AjxKeys["list.AddPrevious.keycode"]="Shift+38";\r
63000 AjxKeys["list.AddPrevious.repeat"]="true";\r
63001 AjxKeys["list.AddPrevious.sort"]="30100";\r
63002 AjxKeys["list.ContextMenu.description"]="Show right-click menu";\r
63003 AjxKeys["list.ContextMenu.display"]=",; Ctrl+Enter";\r
63004 AjxKeys["list.ContextMenu.display.mac"]=",; Ctrl+M";\r
63005 AjxKeys["list.ContextMenu.keycode"]="188; Ctrl+13";\r
63006 AjxKeys["list.ContextMenu.keycode.mac"]="188; Ctrl+77";\r
63007 AjxKeys["list.ContextMenu.sort"]="30080";\r
63008 AjxKeys["list.DoubleClick.description"]="Double-click";\r
63009 AjxKeys["list.DoubleClick.display"]="Enter";\r
63010 AjxKeys["list.DoubleClick.keycode"]="13";\r
63011 AjxKeys["list.DoubleClick.sort"]="30070";\r
63012 AjxKeys["list.Next.description"]="Focus next item";\r
63013 AjxKeys["list.Next.display"]="Ctrl+ArrowDown";\r
63014 AjxKeys["list.Next.keycode"]="Ctrl+40";\r
63015 AjxKeys["list.Next.repeat"]="true";\r
63016 AjxKeys["list.Next.sort"]="30110";\r
63017 AjxKeys["list.Previous.description"]="Focus previous item";\r
63018 AjxKeys["list.Previous.display"]="Ctrl+ArrowUp";\r
63019 AjxKeys["list.Previous.keycode"]="Ctrl+38";\r
63020 AjxKeys["list.Previous.repeat"]="true";\r
63021 AjxKeys["list.Previous.sort"]="30120";\r
63022 AjxKeys["list.SelectAll.description"]="Select all";\r
63023 AjxKeys["list.SelectAll.display"]="Ctrl+A";\r
63024 AjxKeys["list.SelectAll.keycode"]="Ctrl+65";\r
63025 AjxKeys["list.SelectAll.sort"]="30030";\r
63026 AjxKeys["list.SelectCurrent.description"]="Select/Unselect";\r
63027 AjxKeys["list.SelectCurrent.display"]="Ctrl+`";\r
63028 AjxKeys["list.SelectCurrent.keycode"]="Ctrl+192";\r
63029 AjxKeys["list.SelectCurrent.sort"]="30060";\r
63030 AjxKeys["list.SelectFirst.description"]="Select first item";\r
63031 AjxKeys["list.SelectFirst.display"]="Home";\r
63032 AjxKeys["list.SelectFirst.display.mac"]="Home; Meta+ArrowUp";\r
63033 AjxKeys["list.SelectFirst.keycode"]="36";\r
63034 AjxKeys["list.SelectFirst.keycode.mac"]="36; Meta+38";\r
63035 AjxKeys["list.SelectFirst.sort"]="30040";\r
63036 AjxKeys["list.SelectLast.description"]="Select last item";\r
63037 AjxKeys["list.SelectLast.display"]="End";\r
63038 AjxKeys["list.SelectLast.display.mac"]="End; Meta+ArrowDown";\r
63039 AjxKeys["list.SelectLast.keycode"]="35";\r
63040 AjxKeys["list.SelectLast.keycode.mac"]="36; Meta+40";\r
63041 AjxKeys["list.SelectLast.sort"]="30050";\r
63042 AjxKeys["list.SelectNext.description"]="Select next item";\r
63043 AjxKeys["list.SelectNext.display"]="ArrowDown; Space; J";\r
63044 AjxKeys["list.SelectNext.keycode"]="40; 32; 74";\r
63045 AjxKeys["list.SelectNext.repeat"]="true";\r
63046 AjxKeys["list.SelectNext.sort"]="30010";\r
63047 AjxKeys["list.SelectPrevious.description"]="Select previous item";\r
63048 AjxKeys["list.SelectPrevious.display"]="ArrowUp; K";\r
63049 AjxKeys["list.SelectPrevious.keycode"]="38; 75";\r
63050 AjxKeys["list.SelectPrevious.repeat"]="true";\r
63051 AjxKeys["list.SelectPrevious.sort"]="30020";\r
63052 AjxKeys["list.description"]="Lists";\r
63053 AjxKeys["list.sort"]="30000";\r
63054 AjxKeys["menu.Cancel.description"]="Dismiss";\r
63055 AjxKeys["menu.Cancel.display"]="Esc";\r
63056 AjxKeys["menu.Cancel.keycode"]="27";\r
63057 AjxKeys["menu.Cancel.sort"]="20040";\r
63058 AjxKeys["menu.ParentMenu.description"]="Hide sub-menu";\r
63059 AjxKeys["menu.ParentMenu.display"]="ArrowLeft";\r
63060 AjxKeys["menu.ParentMenu.keycode"]="37";\r
63061 AjxKeys["menu.ParentMenu.sort"]="20060";\r
63062 AjxKeys["menu.Select.description"]="Select";\r
63063 AjxKeys["menu.Select.display"]="Enter";\r
63064 AjxKeys["menu.Select.keycode"]="13";\r
63065 AjxKeys["menu.Select.sort"]="20030";\r
63066 AjxKeys["menu.SelectNext.description"]="Next item";\r
63067 AjxKeys["menu.SelectNext.display"]="ArrowDown";\r
63068 AjxKeys["menu.SelectNext.keycode"]="40";\r
63069 AjxKeys["menu.SelectNext.repeat"]="true";\r
63070 AjxKeys["menu.SelectNext.sort"]="20010";\r
63071 AjxKeys["menu.SelectPrevious.description"]="Previous item";\r
63072 AjxKeys["menu.SelectPrevious.display"]="ArrowUp";\r
63073 AjxKeys["menu.SelectPrevious.keycode"]="38";\r
63074 AjxKeys["menu.SelectPrevious.repeat"]="true";\r
63075 AjxKeys["menu.SelectPrevious.sort"]="20020";\r
63076 AjxKeys["menu.SubMenu.description"]="Show sub-menu";\r
63077 AjxKeys["menu.SubMenu.display"]="ArrowRight";\r
63078 AjxKeys["menu.SubMenu.keycode"]="39";\r
63079 AjxKeys["menu.SubMenu.sort"]="20050";\r
63080 AjxKeys["menu.description"]="Pop-up Menus";\r
63081 AjxKeys["menu.sort"]="20000";\r
63082 AjxKeys["tabView.GoToTab.description"]="Go to tab [n]";\r
63083 AjxKeys["tabView.GoToTab.display"]="Ctrl+NNN";\r
63084 AjxKeys["tabView.GoToTab.keycode"]="Ctrl+NNN";\r
63085 AjxKeys["tabView.GoToTab.sort"]="110030";\r
63086 AjxKeys["tabView.NextTab.description"]="Next tab";\r
63087 AjxKeys["tabView.NextTab.display"]="Ctrl+J";\r
63088 AjxKeys["tabView.NextTab.keycode"]="Ctrl+74";\r
63089 AjxKeys["tabView.NextTab.sort"]="110010";\r
63090 AjxKeys["tabView.PreviousTab.description"]="Previous tab";\r
63091 AjxKeys["tabView.PreviousTab.display"]="Ctrl+K";\r
63092 AjxKeys["tabView.PreviousTab.keycode"]="Ctrl+75";\r
63093 AjxKeys["tabView.PreviousTab.sort"]="110020";\r
63094 AjxKeys["tabView.description"]="Tab Views";\r
63095 AjxKeys["tabView.sort"]="110000";\r
63096 AjxKeys["toolbarHorizontal.INHERIT"]="button";\r
63097 AjxKeys["toolbarHorizontal.Next.description"]="Next button";\r
63098 AjxKeys["toolbarHorizontal.Next.display"]="ArrowRight";\r
63099 AjxKeys["toolbarHorizontal.Next.keycode"]="39";\r
63100 AjxKeys["toolbarHorizontal.Next.sort"]="50010";\r
63101 AjxKeys["toolbarHorizontal.Previous.description"]="Previous button";\r
63102 AjxKeys["toolbarHorizontal.Previous.display"]="ArrowLeft";\r
63103 AjxKeys["toolbarHorizontal.Previous.keycode"]="37";\r
63104 AjxKeys["toolbarHorizontal.Previous.sort"]="50020";\r
63105 AjxKeys["toolbarHorizontal.description"]="Toolbars";\r
63106 AjxKeys["toolbarHorizontal.sort"]="50000";\r
63107 AjxKeys["toolbarVertical.INHERIT"]="button";\r
63108 AjxKeys["toolbarVertical.Next.description"]="Next button";\r
63109 AjxKeys["toolbarVertical.Next.display"]="ArrowDown";\r
63110 AjxKeys["toolbarVertical.Next.keycode"]="40";\r
63111 AjxKeys["toolbarVertical.Next.sort"]="51010";\r
63112 AjxKeys["toolbarVertical.Previous.description"]="Previous button";\r
63113 AjxKeys["toolbarVertical.Previous.display"]="ArrowUp";\r
63114 AjxKeys["toolbarVertical.Previous.keycode"]="38";\r
63115 AjxKeys["toolbarVertical.Previous.sort"]="51020";\r
63116 AjxKeys["toolbarVertical.description"]="Vertical Toolbars";\r
63117 AjxKeys["toolbarVertical.sort"]="51000";\r
63118 AjxKeys["tree.Collapse.description"]="Collapse";\r
63119 AjxKeys["tree.Collapse.display"]="ArrowLeft";\r
63120 AjxKeys["tree.Collapse.keycode"]="37";\r
63121 AjxKeys["tree.Collapse.sort"]="30540";\r
63122 AjxKeys["tree.ContextMenu.description"]="Show right-click menu";\r
63123 AjxKeys["tree.ContextMenu.display"]=",; Ctrl+Enter";\r
63124 AjxKeys["tree.ContextMenu.display.mac"]=",; Ctrl+M";\r
63125 AjxKeys["tree.ContextMenu.keycode"]="188; Ctrl+13";\r
63126 AjxKeys["tree.ContextMenu.keycode.mac"]="188; Ctrl+77";\r
63127 AjxKeys["tree.ContextMenu.sort"]="30550";\r
63128 AjxKeys["tree.Expand.description"]="Expand";\r
63129 AjxKeys["tree.Expand.display"]="ArrowRight";\r
63130 AjxKeys["tree.Expand.keycode"]="39";\r
63131 AjxKeys["tree.Expand.sort"]="30530";\r
63132 AjxKeys["tree.Next.description"]="Next item";\r
63133 AjxKeys["tree.Next.display"]="ArrowDown";\r
63134 AjxKeys["tree.Next.keycode"]="40";\r
63135 AjxKeys["tree.Next.repeat"]="true";\r
63136 AjxKeys["tree.Next.sort"]="30510";\r
63137 AjxKeys["tree.Previous.description"]="Previous item";\r
63138 AjxKeys["tree.Previous.display"]="ArrowUp";\r
63139 AjxKeys["tree.Previous.keycode"]="38";\r
63140 AjxKeys["tree.Previous.repeat"]="true";\r
63141 AjxKeys["tree.Previous.sort"]="30520";\r
63142 AjxKeys["tree.description"]="Trees";\r
63143 AjxKeys["tree.sort"]="30500";\r
63144 if(!window.ZmKeys){ZmKeys={}\r
63145 }ZmKeys["calendar.CalListView.description"]="List view";\r
63146 ZmKeys["calendar.CalListView.display"]="L; 9";\r
63147 ZmKeys["calendar.CalListView.keycode"]="76; 57";\r
63148 ZmKeys["calendar.CalListView.sort"]="70082";\r
63149 ZmKeys["calendar.Cancel.description"]="Close";\r
63150 ZmKeys["calendar.Cancel.display"]="Esc";\r
63151 ZmKeys["calendar.Cancel.keycode"]="27";\r
63152 ZmKeys["calendar.Cancel.sort"]="70100";\r
63153 ZmKeys["calendar.DayView.description"]="Day view";\r
63154 ZmKeys["calendar.DayView.display"]="D; 1";\r
63155 ZmKeys["calendar.DayView.keycode"]="68; 49";\r
63156 ZmKeys["calendar.DayView.sort"]="70050";\r
63157 ZmKeys["calendar.Edit.description"]="Edit appointment";\r
63158 ZmKeys["calendar.Edit.display"]="E";\r
63159 ZmKeys["calendar.Edit.keycode"]="69";\r
63160 ZmKeys["calendar.Edit.sort"]="70010";\r
63161 ZmKeys["calendar.INHERIT"]="global";\r
63162 ZmKeys["calendar.MonthView.description"]="Month view";\r
63163 ZmKeys["calendar.MonthView.display"]="M; 3";\r
63164 ZmKeys["calendar.MonthView.keycode"]="77; 51";\r
63165 ZmKeys["calendar.MonthView.sort"]="70080";\r
63166 ZmKeys["calendar.QuickAdd.description"]="Quick appointment creation";\r
63167 ZmKeys["calendar.QuickAdd.display"]="Q";\r
63168 ZmKeys["calendar.QuickAdd.keycode"]="81";\r
63169 ZmKeys["calendar.QuickAdd.sort"]="70020";\r
63170 ZmKeys["calendar.Refresh.description"]="Refresh";\r
63171 ZmKeys["calendar.Refresh.display"]="R";\r
63172 ZmKeys["calendar.Refresh.keycode"]="82";\r
63173 ZmKeys["calendar.Refresh.sort"]="70030";\r
63174 ZmKeys["calendar.ScheduleView.description"]="Scheduling view";\r
63175 ZmKeys["calendar.ScheduleView.display"]="S; 0";\r
63176 ZmKeys["calendar.ScheduleView.keycode"]="83; 48";\r
63177 ZmKeys["calendar.ScheduleView.sort"]="70090";\r
63178 ZmKeys["calendar.Today.description"]="Go to today";\r
63179 ZmKeys["calendar.Today.display"]="Y";\r
63180 ZmKeys["calendar.Today.keycode"]="89";\r
63181 ZmKeys["calendar.Today.sort"]="70040";\r
63182 ZmKeys["calendar.WeekView.description"]="Week view";\r
63183 ZmKeys["calendar.WeekView.display"]="W; 7";\r
63184 ZmKeys["calendar.WeekView.keycode"]="87; 55";\r
63185 ZmKeys["calendar.WeekView.sort"]="70060";\r
63186 ZmKeys["calendar.WorkWeekView.description"]="Work week view";\r
63187 ZmKeys["calendar.WorkWeekView.display"]="W,W; 5";\r
63188 ZmKeys["calendar.WorkWeekView.keycode"]="87,87; 53";\r
63189 ZmKeys["calendar.WorkWeekView.sort"]="70070";\r
63190 ZmKeys["calendar.description"]="Calendar";\r
63191 ZmKeys["calendar.sort"]="70000";\r
63192 ZmKeys["call.CallManager.description"]="Call Manager";\r
63193 ZmKeys["call.CallManager.display"]="C";\r
63194 ZmKeys["call.CallManager.keycode"]="67";\r
63195 ZmKeys["call.CallManager.sort"]="46050";\r
63196 ZmKeys["call.INHERIT"]="global";\r
63197 ZmKeys["call.Print.description"]="Print";\r
63198 ZmKeys["call.Print.display"]="P";\r
63199 ZmKeys["call.Print.keycode"]="80";\r
63200 ZmKeys["call.Print.sort"]="46010";\r
63201 ZmKeys["call.description"]="Call List View";\r
63202 ZmKeys["call.sort"]="46000";\r
63203 ZmKeys["compose.AddressPicker.description"]="Search for addresses";\r
63204 ZmKeys["compose.AddressPicker.display"]="Ctrl+G";\r
63205 ZmKeys["compose.AddressPicker.keycode"]="Ctrl+71";\r
63206 ZmKeys["compose.AddressPicker.sort"]="30050";\r
63207 ZmKeys["compose.Attachment.description"]="Add attachment";\r
63208 ZmKeys["compose.Attachment.display"]="Ctrl+M";\r
63209 ZmKeys["compose.Attachment.keycode"]="Ctrl+77";\r
63210 ZmKeys["compose.Attachment.sort"]="30040";\r
63211 ZmKeys["compose.Cancel.description"]="Cancel";\r
63212 ZmKeys["compose.Cancel.display"]="Esc";\r
63213 ZmKeys["compose.Cancel.keycode"]="27";\r
63214 ZmKeys["compose.Cancel.sort"]="30020";\r
63215 ZmKeys["compose.HtmlFormat.description"]="HTML/text format";\r
63216 ZmKeys["compose.HtmlFormat.display"]="Ctrl+H";\r
63217 ZmKeys["compose.HtmlFormat.keycode"]="Ctrl+72";\r
63218 ZmKeys["compose.HtmlFormat.sort"]="30060";\r
63219 ZmKeys["compose.NewWindow.description"]="Detach into new window";\r
63220 ZmKeys["compose.NewWindow.display"]="Ctrl+D";\r
63221 ZmKeys["compose.NewWindow.keycode"]="Ctrl+68";\r
63222 ZmKeys["compose.NewWindow.sort"]="30080";\r
63223 ZmKeys["compose.Save.description"]="Save draft";\r
63224 ZmKeys["compose.Save.display"]="Ctrl+S";\r
63225 ZmKeys["compose.Save.keycode"]="Ctrl+83";\r
63226 ZmKeys["compose.Save.sort"]="30030";\r
63227 ZmKeys["compose.Send.description"]="Send";\r
63228 ZmKeys["compose.Send.display"]="Ctrl+Enter";\r
63229 ZmKeys["compose.Send.keycode"]="Ctrl+13";\r
63230 ZmKeys["compose.Send.sort"]="30010";\r
63231 ZmKeys["compose.Shortcuts.description"]="Show shortcuts";\r
63232 ZmKeys["compose.Shortcuts.display"]="Ctrl+Q";\r
63233 ZmKeys["compose.Shortcuts.keycode"]="Ctrl+81";\r
63234 ZmKeys["compose.Shortcuts.sort"]="10270";\r
63235 ZmKeys["compose.Spellcheck.description"]="Spellcheck";\r
63236 ZmKeys["compose.Spellcheck.display"]="Alt+X";\r
63237 ZmKeys["compose.Spellcheck.display.mac"]="Ctrl+X";\r
63238 ZmKeys["compose.Spellcheck.keycode"]="Alt+88";\r
63239 ZmKeys["compose.Spellcheck.keycode.mac"]="Ctrl+88";\r
63240 ZmKeys["compose.Spellcheck.sort"]="30070";\r
63241 ZmKeys["compose.description"]="Compose";\r
63242 ZmKeys["compose.sort"]="30000";\r
63243 ZmKeys["contacts.Edit.description"]="Edit";\r
63244 ZmKeys["contacts.Edit.display"]="E";\r
63245 ZmKeys["contacts.Edit.keycode"]="69";\r
63246 ZmKeys["contacts.Edit.sort"]="50010";\r
63247 ZmKeys["contacts.INHERIT"]="global";\r
63248 ZmKeys["contacts.PrintAll.description"]="Print address book";\r
63249 ZmKeys["contacts.PrintAll.display"]="P,A";\r
63250 ZmKeys["contacts.PrintAll.keycode"]="80,65";\r
63251 ZmKeys["contacts.PrintAll.sort"]="50020";\r
63252 ZmKeys["contacts.description"]="Address Book";\r
63253 ZmKeys["contacts.sort"]="50000";\r
63254 ZmKeys["conversation.INHERIT"]="mail";\r
63255 ZmKeys["conversation.NextConversation.description"]="Next conversation";\r
63256 ZmKeys["conversation.NextConversation.display"]="Shift+ArrowRight";\r
63257 ZmKeys["conversation.NextConversation.keycode"]="Shift+39";\r
63258 ZmKeys["conversation.NextConversation.sort"]="40010";\r
63259 ZmKeys["conversation.PreviousConversation.description"]="Previous conversation";\r
63260 ZmKeys["conversation.PreviousConversation.display"]="Shift+ArrowLeft";\r
63261 ZmKeys["conversation.PreviousConversation.keycode"]="Shift+37";\r
63262 ZmKeys["conversation.PreviousConversation.sort"]="40020";\r
63263 ZmKeys["conversation.description"]="Conversation View";\r
63264 ZmKeys["conversation.sort"]="40000";\r
63265 ZmKeys["conversationList.CollapseAll.description"]="Collapse all conversations";\r
63266 ZmKeys["conversationList.CollapseAll.display"]="Ctrl+O";\r
63267 ZmKeys["conversationList.CollapseAll.keycode"]="Ctrl+79";\r
63268 ZmKeys["conversationList.CollapseAll.sort"]="25030";\r
63269 ZmKeys["conversationList.Expand.description"]="Expand/collapse conversation";\r
63270 ZmKeys["conversationList.Expand.display"]="O";\r
63271 ZmKeys["conversationList.Expand.keycode"]="79";\r
63272 ZmKeys["conversationList.Expand.sort"]="25010";\r
63273 ZmKeys["conversationList.ExpandAll.description"]="Expand all conversations";\r
63274 ZmKeys["conversationList.ExpandAll.display"]="Shift+O";\r
63275 ZmKeys["conversationList.ExpandAll.keycode"]="Shift+79";\r
63276 ZmKeys["conversationList.ExpandAll.sort"]="25020";\r
63277 ZmKeys["conversationList.FirstUnreadMsg.description"]="Select first unread message";\r
63278 ZmKeys["conversationList.FirstUnreadMsg.display"]="Shift+Ctrl+[";\r
63279 ZmKeys["conversationList.FirstUnreadMsg.keycode"]="Shift+Ctrl+219";\r
63280 ZmKeys["conversationList.FirstUnreadMsg.sort"]="25060";\r
63281 ZmKeys["conversationList.INHERIT"]="mail";\r
63282 ZmKeys["conversationList.LastUnreadMsg.description"]="Select last unread message";\r
63283 ZmKeys["conversationList.LastUnreadMsg.display"]="Shift+Ctrl+]";\r
63284 ZmKeys["conversationList.LastUnreadMsg.keycode"]="Shift+Ctrl+221";\r
63285 ZmKeys["conversationList.LastUnreadMsg.sort"]="25070";\r
63286 ZmKeys["conversationList.NextUnreadMsg.description"]="Select next unread message";\r
63287 ZmKeys["conversationList.NextUnreadMsg.display"]="Ctrl+]";\r
63288 ZmKeys["conversationList.NextUnreadMsg.keycode"]="Ctrl+221";\r
63289 ZmKeys["conversationList.NextUnreadMsg.sort"]="25050";\r
63290 ZmKeys["conversationList.PreviousUnreadMsg.description"]="Select previous unread message";\r
63291 ZmKeys["conversationList.PreviousUnreadMsg.display"]="Ctrl+[";\r
63292 ZmKeys["conversationList.PreviousUnreadMsg.keycode"]="Ctrl+219";\r
63293 ZmKeys["conversationList.PreviousUnreadMsg.sort"]="25040";\r
63294 ZmKeys["conversationList.description"]="Conversation List View";\r
63295 ZmKeys["conversationList.sort"]="25000";\r
63296 ZmKeys["editAppointment.Cancel.description"]="Cancel";\r
63297 ZmKeys["editAppointment.Cancel.display"]="Esc";\r
63298 ZmKeys["editAppointment.Cancel.keycode"]="27";\r
63299 ZmKeys["editAppointment.Cancel.sort"]="80020";\r
63300 ZmKeys["editAppointment.HtmlFormat.description"]="HTML/text format";\r
63301 ZmKeys["editAppointment.HtmlFormat.display"]="Ctrl+H";\r
63302 ZmKeys["editAppointment.HtmlFormat.keycode"]="Ctrl+72";\r
63303 ZmKeys["editAppointment.HtmlFormat.sort"]="80040";\r
63304 ZmKeys["editAppointment.INHERIT"]="tabView";\r
63305 ZmKeys["editAppointment.Save.description"]="Save";\r
63306 ZmKeys["editAppointment.Save.display"]="Ctrl+S";\r
63307 ZmKeys["editAppointment.Save.keycode"]="Ctrl+83";\r
63308 ZmKeys["editAppointment.Save.sort"]="80010";\r
63309 ZmKeys["editAppointment.Shortcuts.description"]="Show shortcuts";\r
63310 ZmKeys["editAppointment.Shortcuts.display"]="Ctrl+Q";\r
63311 ZmKeys["editAppointment.Shortcuts.keycode"]="Ctrl+81";\r
63312 ZmKeys["editAppointment.Shortcuts.sort"]="10270";\r
63313 ZmKeys["editAppointment.description"]="Edit Appointment";\r
63314 ZmKeys["editAppointment.sort"]="80000";\r
63315 ZmKeys["editContact.Cancel.description"]="Cancel";\r
63316 ZmKeys["editContact.Cancel.display"]="Esc";\r
63317 ZmKeys["editContact.Cancel.keycode"]="27";\r
63318 ZmKeys["editContact.Cancel.sort"]="60020";\r
63319 ZmKeys["editContact.Save.description"]="Save";\r
63320 ZmKeys["editContact.Save.display"]="Ctrl+S";\r
63321 ZmKeys["editContact.Save.keycode"]="Ctrl+83";\r
63322 ZmKeys["editContact.Save.sort"]="60010";\r
63323 ZmKeys["editContact.description"]="Edit Contact";\r
63324 ZmKeys["editContact.sort"]="60000";\r
63325 ZmKeys["editPage.Cancel.description"]="Cancel";\r
63326 ZmKeys["editPage.Cancel.display"]="Esc";\r
63327 ZmKeys["editPage.Cancel.keycode"]="27";\r
63328 ZmKeys["editPage.Cancel.sort"]="100060";\r
63329 ZmKeys["editPage.Save.description"]="Save";\r
63330 ZmKeys["editPage.Save.display"]="Ctrl+S";\r
63331 ZmKeys["editPage.Save.keycode"]="Ctrl+83";\r
63332 ZmKeys["editPage.Save.sort"]="100070";\r
63333 ZmKeys["editPage.Shortcuts.description"]="Show shortcuts";\r
63334 ZmKeys["editPage.Shortcuts.display"]="Ctrl+Q";\r
63335 ZmKeys["editPage.Shortcuts.keycode"]="Ctrl+81";\r
63336 ZmKeys["editPage.Shortcuts.sort"]="10270";\r
63337 ZmKeys["editPage.description"]="Edit Notebook Page";\r
63338 ZmKeys["editPage.sort"]="100050";\r
63339 ZmKeys["editTask.Cancel.description"]="Cancel";\r
63340 ZmKeys["editTask.Cancel.display"]="Esc";\r
63341 ZmKeys["editTask.Cancel.keycode"]="27";\r
63342 ZmKeys["editTask.Cancel.sort"]="106020";\r
63343 ZmKeys["editTask.Save.description"]="Save";\r
63344 ZmKeys["editTask.Save.display"]="Ctrl+S";\r
63345 ZmKeys["editTask.Save.keycode"]="Ctrl+83";\r
63346 ZmKeys["editTask.Save.sort"]="106010";\r
63347 ZmKeys["editTask.description"]="Edit Task";\r
63348 ZmKeys["editTask.sort"]="106000";\r
63349 ZmKeys["global.Assistant.description"]="Zimbra Assistant";\r
63350 ZmKeys["global.Assistant.display"]="`";\r
63351 ZmKeys["global.Assistant.keycode"]="192";\r
63352 ZmKeys["global.Assistant.sort"]="10230";\r
63353 ZmKeys["global.Cancel.description"]="Close";\r
63354 ZmKeys["global.Cancel.display"]="Esc";\r
63355 ZmKeys["global.Cancel.keycode"]="27";\r
63356 ZmKeys["global.Cancel.sort"]="10220";\r
63357 ZmKeys["global.Delete.description"]="Delete item(s)";\r
63358 ZmKeys["global.Delete.display"]="Del; Backspace";\r
63359 ZmKeys["global.Delete.keycode"]="8; 46";\r
63360 ZmKeys["global.Delete.sort"]="10210";\r
63361 ZmKeys["global.FocusContentPane.description"]="Focus content pane";\r
63362 ZmKeys["global.FocusContentPane.display"]="Ctrl+/";\r
63363 ZmKeys["global.FocusContentPane.keycode"]="Ctrl+191";\r
63364 ZmKeys["global.FocusContentPane.sort"]="10280";\r
63365 ZmKeys["global.FocusSearchBox.description"]="Focus search box";\r
63366 ZmKeys["global.FocusSearchBox.display"]="/";\r
63367 ZmKeys["global.FocusSearchBox.keycode"]="191";\r
63368 ZmKeys["global.FocusSearchBox.sort"]="10270";\r
63369 ZmKeys["global.FocusToolbar.description"]="Focus toolbar";\r
63370 ZmKeys["global.FocusToolbar.display"]="Ctrl+Y";\r
63371 ZmKeys["global.FocusToolbar.keycode"]="Ctrl+89";\r
63372 ZmKeys["global.FocusToolbar.sort"]="10275";\r
63373 ZmKeys["global.FocusWebSearchBox.description"]="Focus web search box";\r
63374 ZmKeys["global.FocusWebSearchBox.display"]="Alt+/";\r
63375 ZmKeys["global.FocusWebSearchBox.keycode"]="Alt+191";\r
63376 ZmKeys["global.FocusWebSearchBox.sort"]="10277";\r
63377 ZmKeys["global.GoToBriefcase.description"]="Go to Briefcase";\r
63378 ZmKeys["global.GoToBriefcase.display"]="G,B";\r
63379 ZmKeys["global.GoToBriefcase.keycode"]="71,66";\r
63380 ZmKeys["global.GoToBriefcase.sort"]="10070";\r
63381 ZmKeys["global.GoToCalendar.description"]="Go to Calendar";\r
63382 ZmKeys["global.GoToCalendar.display"]="G,C";\r
63383 ZmKeys["global.GoToCalendar.keycode"]="71,67";\r
63384 ZmKeys["global.GoToCalendar.sort"]="10030";\r
63385 ZmKeys["global.GoToContacts.description"]="Go to Contacts";\r
63386 ZmKeys["global.GoToContacts.display"]="G,A";\r
63387 ZmKeys["global.GoToContacts.keycode"]="71,65";\r
63388 ZmKeys["global.GoToContacts.sort"]="10020";\r
63389 ZmKeys["global.GoToMail.description"]="Go to Mail";\r
63390 ZmKeys["global.GoToMail.display"]="G,M";\r
63391 ZmKeys["global.GoToMail.keycode"]="71,77";\r
63392 ZmKeys["global.GoToMail.sort"]="10010";\r
63393 ZmKeys["global.GoToNotebook.description"]="Go to Documents";\r
63394 ZmKeys["global.GoToNotebook.display"]="G,D";\r
63395 ZmKeys["global.GoToNotebook.keycode"]="71,68";\r
63396 ZmKeys["global.GoToNotebook.sort"]="10060";\r
63397 ZmKeys["global.GoToOptions.description"]="Go to Preferences";\r
63398 ZmKeys["global.GoToOptions.display"]="G,P";\r
63399 ZmKeys["global.GoToOptions.keycode"]="71,80";\r
63400 ZmKeys["global.GoToOptions.sort"]="10050";\r
63401 ZmKeys["global.GoToTasks.description"]="Go to Tasks";\r
63402 ZmKeys["global.GoToTasks.display"]="G,T";\r
63403 ZmKeys["global.GoToTasks.keycode"]="71,84";\r
63404 ZmKeys["global.GoToTasks.sort"]="10035";\r
63405 ZmKeys["global.GoToVoice.description"]="Go to Voice";\r
63406 ZmKeys["global.GoToVoice.display"]="G,V";\r
63407 ZmKeys["global.GoToVoice.keycode"]="71,86";\r
63408 ZmKeys["global.GoToVoice.sort"]="10015";\r
63409 ZmKeys["global.Move.description"]="Move item(s)";\r
63410 ZmKeys["global.Move.display"]="M; M,M";\r
63411 ZmKeys["global.Move.keycode"]="77; 77,77";\r
63412 ZmKeys["global.Move.sort"]="10235";\r
63413 ZmKeys["global.New.description"]="New item";\r
63414 ZmKeys["global.New.display"]="N";\r
63415 ZmKeys["global.New.keycode"]="78";\r
63416 ZmKeys["global.New.sort"]="10070";\r
63417 ZmKeys["global.NewAppointment.description"]="New appointment";\r
63418 ZmKeys["global.NewAppointment.display"]="N,A";\r
63419 ZmKeys["global.NewAppointment.keycode"]="78,65";\r
63420 ZmKeys["global.NewAppointment.sort"]="10110";\r
63421 ZmKeys["global.NewCalendar.description"]="New calendar";\r
63422 ZmKeys["global.NewCalendar.display"]="N,L";\r
63423 ZmKeys["global.NewCalendar.keycode"]="78,76";\r
63424 ZmKeys["global.NewCalendar.sort"]="10120";\r
63425 ZmKeys["global.NewChat.description"]="New chat";\r
63426 ZmKeys["global.NewChat.display"]="N,H";\r
63427 ZmKeys["global.NewChat.keycode"]="78,72";\r
63428 ZmKeys["global.NewChat.sort"]="10117";\r
63429 ZmKeys["global.NewContact.description"]="New contact";\r
63430 ZmKeys["global.NewContact.display"]="N,C";\r
63431 ZmKeys["global.NewContact.keycode"]="78,67";\r
63432 ZmKeys["global.NewContact.sort"]="10100";\r
63433 ZmKeys["global.NewDocument.description"]="New document";\r
63434 ZmKeys["global.NewDocument.display"]="N,D";\r
63435 ZmKeys["global.NewDocument.keycode"]="78,68";\r
63436 ZmKeys["global.NewDocument.sort"]="10135";\r
63437 ZmKeys["global.NewFolder.description"]="New folder";\r
63438 ZmKeys["global.NewFolder.display"]="N,F";\r
63439 ZmKeys["global.NewFolder.keycode"]="78,70";\r
63440 ZmKeys["global.NewFolder.sort"]="10150";\r
63441 ZmKeys["global.NewMessage.description"]="Compose";\r
63442 ZmKeys["global.NewMessage.display"]="N,M; C";\r
63443 ZmKeys["global.NewMessage.keycode"]="78,77; 67";\r
63444 ZmKeys["global.NewMessage.sort"]="10080";\r
63445 ZmKeys["global.NewMessageWindow.description"]="Compose in new window";\r
63446 ZmKeys["global.NewMessageWindow.display"]="Shift+C";\r
63447 ZmKeys["global.NewMessageWindow.keycode"]="Shift+67";\r
63448 ZmKeys["global.NewMessageWindow.sort"]="10090";\r
63449 ZmKeys["global.NewNotebook.description"]="New notebook";\r
63450 ZmKeys["global.NewNotebook.display"]="N,W";\r
63451 ZmKeys["global.NewNotebook.keycode"]="78,87";\r
63452 ZmKeys["global.NewNotebook.sort"]="10140";\r
63453 ZmKeys["global.NewPage.description"]="New notebook page";\r
63454 ZmKeys["global.NewPage.display"]="N,P";\r
63455 ZmKeys["global.NewPage.keycode"]="78,80";\r
63456 ZmKeys["global.NewPage.sort"]="10130";\r
63457 ZmKeys["global.NewRosterItem.description"]="New buddy";\r
63458 ZmKeys["global.NewRosterItem.display"]="N,B";\r
63459 ZmKeys["global.NewRosterItem.keycode"]="78,66";\r
63460 ZmKeys["global.NewRosterItem.sort"]="10125";\r
63461 ZmKeys["global.NewTag.description"]="New tag";\r
63462 ZmKeys["global.NewTag.display"]="N,T";\r
63463 ZmKeys["global.NewTag.keycode"]="78,84";\r
63464 ZmKeys["global.NewTag.sort"]="10160";\r
63465 ZmKeys["global.NewTask.description"]="New task";\r
63466 ZmKeys["global.NewTask.display"]="N,K";\r
63467 ZmKeys["global.NewTask.keycode"]="78,75";\r
63468 ZmKeys["global.NewTask.sort"]="10115";\r
63469 ZmKeys["global.NextPage.description"]="Next page";\r
63470 ZmKeys["global.NextPage.display"]="Ctrl+ArrowRight";\r
63471 ZmKeys["global.NextPage.keycode"]="Ctrl+39";\r
63472 ZmKeys["global.NextPage.sort"]="10170";\r
63473 ZmKeys["global.PreviousPage.description"]="Previous page";\r
63474 ZmKeys["global.PreviousPage.display"]="Ctrl+ArrowLeft";\r
63475 ZmKeys["global.PreviousPage.keycode"]="Ctrl+37";\r
63476 ZmKeys["global.PreviousPage.sort"]="10180";\r
63477 ZmKeys["global.Print.description"]="Print";\r
63478 ZmKeys["global.Print.display"]="P";\r
63479 ZmKeys["global.Print.keycode"]="80";\r
63480 ZmKeys["global.Print.sort"]="10190";\r
63481 ZmKeys["global.SavedSearch.description"]="Run a saved search";\r
63482 ZmKeys["global.SavedSearch.display"]="S";\r
63483 ZmKeys["global.SavedSearch.keycode"]="83";\r
63484 ZmKeys["global.SavedSearch.sort"]="10260";\r
63485 ZmKeys["global.SelectAll.description"]="Select all search results";\r
63486 ZmKeys["global.SelectAll.display"]="Ctrl+Shift+A";\r
63487 ZmKeys["global.SelectAll.keycode"]="Ctrl+Shift+65";\r
63488 ZmKeys["global.SelectAll.sort"]="10270";\r
63489 ZmKeys["global.Shortcuts.description"]="Show shortcuts";\r
63490 ZmKeys["global.Shortcuts.display"]="Ctrl+Q;Shift+/";\r
63491 ZmKeys["global.Shortcuts.keycode"]="Ctrl+81;Shift+191";\r
63492 ZmKeys["global.Shortcuts.sort"]="10270";\r
63493 ZmKeys["global.Tag.description"]="Tag item(s)";\r
63494 ZmKeys["global.Tag.display"]="T";\r
63495 ZmKeys["global.Tag.keycode"]="84";\r
63496 ZmKeys["global.Tag.sort"]="10250";\r
63497 ZmKeys["global.Untag.description"]="Remove tags";\r
63498 ZmKeys["global.Untag.display"]="U";\r
63499 ZmKeys["global.Untag.keycode"]="85";\r
63500 ZmKeys["global.Untag.sort"]="10255";\r
63501 ZmKeys["global.Visit.description"]="Go to (visit) folder";\r
63502 ZmKeys["global.Visit.display"]="V";\r
63503 ZmKeys["global.Visit.keycode"]="86";\r
63504 ZmKeys["global.Visit.sort"]="10233";\r
63505 ZmKeys["global.VisitTag.description"]="Go to (visit) tag";\r
63506 ZmKeys["global.VisitTag.display"]="V,V";\r
63507 ZmKeys["global.VisitTag.keycode"]="86,86";\r
63508 ZmKeys["global.VisitTag.sort"]="10234";\r
63509 ZmKeys["global.description"]="All Applications";\r
63510 ZmKeys["global.sort"]="10000";\r
63511 ZmKeys["mail.DoubleClick.description"]="Open message";\r
63512 ZmKeys["mail.DoubleClick.display"]="Enter";\r
63513 ZmKeys["mail.DoubleClick.keycode"]="13";\r
63514 ZmKeys["mail.DoubleClick.sort"]="20060";\r
63515 ZmKeys["mail.FirstUnread.description"]="First unread";\r
63516 ZmKeys["mail.FirstUnread.display"]="Shift+[";\r
63517 ZmKeys["mail.FirstUnread.keycode"]="Shift+219";\r
63518 ZmKeys["mail.FirstUnread.sort"]="20194";\r
63519 ZmKeys["mail.Flag.description"]="Flag/Unflag messages";\r
63520 ZmKeys["mail.Flag.display"]="M,F";\r
63521 ZmKeys["mail.Flag.keycode"]="77,70";\r
63522 ZmKeys["mail.Flag.sort"]="20090";\r
63523 ZmKeys["mail.Forward.description"]="Forward message";\r
63524 ZmKeys["mail.Forward.display"]="F";\r
63525 ZmKeys["mail.Forward.keycode"]="70";\r
63526 ZmKeys["mail.Forward.sort"]="20170";\r
63527 ZmKeys["mail.GetMail.description"]="Get Mail";\r
63528 ZmKeys["mail.GetMail.display"]="=";\r
63529 ZmKeys["mail.GetMail.keycode"]="61; 187";\r
63530 ZmKeys["mail.GetMail.sort"]="20005";\r
63531 ZmKeys["mail.GoToDrafts.description"]="Drafts";\r
63532 ZmKeys["mail.GoToDrafts.display"]="V,D";\r
63533 ZmKeys["mail.GoToDrafts.keycode"]="86,68";\r
63534 ZmKeys["mail.GoToDrafts.sort"]="20020";\r
63535 ZmKeys["mail.GoToInbox.description"]="Inbox";\r
63536 ZmKeys["mail.GoToInbox.display"]="I; V,I";\r
63537 ZmKeys["mail.GoToInbox.keycode"]="73; 86,73";\r
63538 ZmKeys["mail.GoToInbox.sort"]="20010";\r
63539 ZmKeys["mail.GoToJunk.description"]="Junk";\r
63540 ZmKeys["mail.GoToJunk.display"]="V,J";\r
63541 ZmKeys["mail.GoToJunk.keycode"]="86,74";\r
63542 ZmKeys["mail.GoToJunk.sort"]="20025";\r
63543 ZmKeys["mail.GoToSent.description"]="Sent";\r
63544 ZmKeys["mail.GoToSent.display"]="V,S";\r
63545 ZmKeys["mail.GoToSent.keycode"]="86,83";\r
63546 ZmKeys["mail.GoToSent.sort"]="20030";\r
63547 ZmKeys["mail.GoToTrash.description"]="Trash";\r
63548 ZmKeys["mail.GoToTrash.display"]="V,T";\r
63549 ZmKeys["mail.GoToTrash.keycode"]="86,84";\r
63550 ZmKeys["mail.GoToTrash.sort"]="20040";\r
63551 ZmKeys["mail.INHERIT"]="global";\r
63552 ZmKeys["mail.LastUnread.description"]="Last unread";\r
63553 ZmKeys["mail.LastUnread.display"]="Shift+]";\r
63554 ZmKeys["mail.LastUnread.keycode"]="Shift+221";\r
63555 ZmKeys["mail.LastUnread.sort"]="20192";\r
63556 ZmKeys["mail.MarkRead.description"]="Mark read";\r
63557 ZmKeys["mail.MarkRead.display"]="M,R; Z";\r
63558 ZmKeys["mail.MarkRead.keycode"]="77,82; 90";\r
63559 ZmKeys["mail.MarkRead.sort"]="20070";\r
63560 ZmKeys["mail.MarkUnread.description"]="Mark unread";\r
63561 ZmKeys["mail.MarkUnread.display"]="M,U; X";\r
63562 ZmKeys["mail.MarkUnread.keycode"]="77,85; 88";\r
63563 ZmKeys["mail.MarkUnread.sort"]="20080";\r
63564 ZmKeys["mail.MoveToInbox.description"]="Move to Inbox";\r
63565 ZmKeys["mail.MoveToInbox.display"]=".,I";\r
63566 ZmKeys["mail.MoveToInbox.keycode"]="190,73";\r
63567 ZmKeys["mail.MoveToInbox.sort"]="20130";\r
63568 ZmKeys["mail.MoveToTrash.description"]="Move to Trash";\r
63569 ZmKeys["mail.MoveToTrash.display"]=".,T";\r
63570 ZmKeys["mail.MoveToTrash.keycode"]="190,84";\r
63571 ZmKeys["mail.MoveToTrash.sort"]="20110";\r
63572 ZmKeys["mail.NextUnread.description"]="Next unread";\r
63573 ZmKeys["mail.NextUnread.display"]="]";\r
63574 ZmKeys["mail.NextUnread.keycode"]="221";\r
63575 ZmKeys["mail.NextUnread.sort"]="20190";\r
63576 ZmKeys["mail.PreviousUnread.description"]="Previous unread";\r
63577 ZmKeys["mail.PreviousUnread.display"]="[";\r
63578 ZmKeys["mail.PreviousUnread.keycode"]="219";\r
63579 ZmKeys["mail.PreviousUnread.sort"]="20180";\r
63580 ZmKeys["mail.ReadingPaneAtBottom.description"]="Reading pane at bottom";\r
63581 ZmKeys["mail.ReadingPaneAtBottom.display"]="M,P,B";\r
63582 ZmKeys["mail.ReadingPaneAtBottom.keycode"]="77,80,66";\r
63583 ZmKeys["mail.ReadingPaneAtBottom.sort"]="20220";\r
63584 ZmKeys["mail.ReadingPaneOff.description"]="Turn off reading pane";\r
63585 ZmKeys["mail.ReadingPaneOff.display"]="M,P,O";\r
63586 ZmKeys["mail.ReadingPaneOff.keycode"]="77,80,79";\r
63587 ZmKeys["mail.ReadingPaneOff.sort"]="20226";\r
63588 ZmKeys["mail.ReadingPaneOnRight.description"]="Reading pane on right";\r
63589 ZmKeys["mail.ReadingPaneOnRight.display"]="M,P,R";\r
63590 ZmKeys["mail.ReadingPaneOnRight.keycode"]="77,80,82";\r
63591 ZmKeys["mail.ReadingPaneOnRight.sort"]="20223";\r
63592 ZmKeys["mail.Reply.description"]="Reply";\r
63593 ZmKeys["mail.Reply.display"]="R";\r
63594 ZmKeys["mail.Reply.keycode"]="82";\r
63595 ZmKeys["mail.Reply.sort"]="20150";\r
63596 ZmKeys["mail.ReplyAll.description"]="Reply all";\r
63597 ZmKeys["mail.ReplyAll.display"]="A";\r
63598 ZmKeys["mail.ReplyAll.keycode"]="65";\r
63599 ZmKeys["mail.ReplyAll.sort"]="20160";\r
63600 ZmKeys["mail.SelectNext.description"]="Select next item";\r
63601 ZmKeys["mail.SelectNext.display"]="Space; J";\r
63602 ZmKeys["mail.SelectNext.keycode"]="32; 74";\r
63603 ZmKeys["mail.SelectNext.repeat"]="true";\r
63604 ZmKeys["mail.SelectNext.sort"]="20172";\r
63605 ZmKeys["mail.SelectPrevious.description"]="Select previous item";\r
63606 ZmKeys["mail.SelectPrevious.display"]="K";\r
63607 ZmKeys["mail.SelectPrevious.keycode"]="75";\r
63608 ZmKeys["mail.SelectPrevious.repeat"]="true";\r
63609 ZmKeys["mail.SelectPrevious.sort"]="20174";\r
63610 ZmKeys["mail.ShowFragment.description"]="Show snippet";\r
63611 ZmKeys["mail.ShowFragment.display"]="Q";\r
63612 ZmKeys["mail.ShowFragment.keycode"]="81";\r
63613 ZmKeys["mail.ShowFragment.sort"]="20230";\r
63614 ZmKeys["mail.Spam.description"]="Mark as spam";\r
63615 ZmKeys["mail.Spam.display"]="M,J";\r
63616 ZmKeys["mail.Spam.keycode"]="77,74";\r
63617 ZmKeys["mail.Spam.sort"]="20100";\r
63618 ZmKeys["mail.ViewByConversation.description"]="Conversation view";\r
63619 ZmKeys["mail.ViewByConversation.display"]="V,C";\r
63620 ZmKeys["mail.ViewByConversation.keycode"]="86,67";\r
63621 ZmKeys["mail.ViewByConversation.sort"]="20200";\r
63622 ZmKeys["mail.ViewByMessage.description"]="Message view";\r
63623 ZmKeys["mail.ViewByMessage.display"]="V,M";\r
63624 ZmKeys["mail.ViewByMessage.keycode"]="86,77";\r
63625 ZmKeys["mail.ViewByMessage.sort"]="20210";\r
63626 ZmKeys["mail.description"]="Mail";\r
63627 ZmKeys["mail.sort"]="20000";\r
63628 ZmKeys["message.INHERIT"]="mail";\r
63629 ZmKeys["mixed.DoubleClick.display"]="O";\r
63630 ZmKeys["mixed.DoubleClick.keycode"]="79";\r
63631 ZmKeys["mixed.INHERIT"]="global";\r
63632 ZmKeys["notebook.Edit.description"]="Edit";\r
63633 ZmKeys["notebook.Edit.display"]="E";\r
63634 ZmKeys["notebook.Edit.keycode"]="69";\r
63635 ZmKeys["notebook.Edit.sort"]="100010";\r
63636 ZmKeys["notebook.INHERIT"]="global";\r
63637 ZmKeys["notebook.Refresh.description"]="Refresh";\r
63638 ZmKeys["notebook.Refresh.display"]="R";\r
63639 ZmKeys["notebook.Refresh.keycode"]="82";\r
63640 ZmKeys["notebook.Refresh.sort"]="100020";\r
63641 ZmKeys["notebook.description"]="Documents";\r
63642 ZmKeys["notebook.sort"]="100000";\r
63643 ZmKeys["options.INHERIT"]="global,tabView";\r
63644 ZmKeys["options.Save.description"]="Save";\r
63645 ZmKeys["options.Save.display"]="Ctrl+S";\r
63646 ZmKeys["options.Save.keycode"]="Ctrl+83";\r
63647 ZmKeys["options.Save.sort"]="90010";\r
63648 ZmKeys["options.description"]="Preferences";\r
63649 ZmKeys["options.sort"]="90000";\r
63650 ZmKeys["tasks.INHERIT"]="global";\r
63651 ZmKeys["tasks.MarkComplete.description"]="Mark completed";\r
63652 ZmKeys["tasks.MarkComplete.display"]="M,C";\r
63653 ZmKeys["tasks.MarkComplete.keycode"]="77,67";\r
63654 ZmKeys["tasks.MarkComplete.sort"]="105010";\r
63655 ZmKeys["tasks.MarkUncomplete.description"]="Mark not completed";\r
63656 ZmKeys["tasks.MarkUncomplete.display"]="M,U";\r
63657 ZmKeys["tasks.MarkUncomplete.keycode"]="77,85";\r
63658 ZmKeys["tasks.MarkUncomplete.sort"]="105020";\r
63659 ZmKeys["tasks.description"]="Tasks";\r
63660 ZmKeys["tasks.sort"]="105000";\r
63661 ZmKeys["voicemail.CallManager.description"]="Call Manager";\r
63662 ZmKeys["voicemail.CallManager.display"]="C";\r
63663 ZmKeys["voicemail.CallManager.keycode"]="67";\r
63664 ZmKeys["voicemail.CallManager.sort"]="45050";\r
63665 ZmKeys["voicemail.Download.description"]="Download message";\r
63666 ZmKeys["voicemail.Download.display"]="S";\r
63667 ZmKeys["voicemail.Download.keycode"]="83";\r
63668 ZmKeys["voicemail.Download.sort"]="45045";\r
63669 ZmKeys["voicemail.Forward.description"]="Forward as email";\r
63670 ZmKeys["voicemail.Forward.display"]="F";\r
63671 ZmKeys["voicemail.Forward.keycode"]="70";\r
63672 ZmKeys["voicemail.Forward.sort"]="45030";\r
63673 ZmKeys["voicemail.INHERIT"]="global";\r
63674 ZmKeys["voicemail.MarkHeard.description"]="Mark heard";\r
63675 ZmKeys["voicemail.MarkHeard.display"]="M,H";\r
63676 ZmKeys["voicemail.MarkHeard.keycode"]="77,72";\r
63677 ZmKeys["voicemail.MarkHeard.sort"]="45060";\r
63678 ZmKeys["voicemail.MarkUnheard.description"]="Mark unheard";\r
63679 ZmKeys["voicemail.MarkUnheard.display"]="M,U";\r
63680 ZmKeys["voicemail.MarkUnheard.keycode"]="77,85";\r
63681 ZmKeys["voicemail.MarkUnheard.sort"]="45070";\r
63682 ZmKeys["voicemail.Play.description"]="Play";\r
63683 ZmKeys["voicemail.Play.display"]="Enter";\r
63684 ZmKeys["voicemail.Play.keycode"]="13";\r
63685 ZmKeys["voicemail.Play.sort"]="45005";\r
63686 ZmKeys["voicemail.Print.description"]="Print";\r
63687 ZmKeys["voicemail.Print.display"]="P";\r
63688 ZmKeys["voicemail.Print.keycode"]="80";\r
63689 ZmKeys["voicemail.Print.sort"]="45010";\r
63690 ZmKeys["voicemail.Reply.description"]="Reply by email";\r
63691 ZmKeys["voicemail.Reply.display"]="R";\r
63692 ZmKeys["voicemail.Reply.keycode"]="82";\r
63693 ZmKeys["voicemail.Reply.sort"]="45020";\r
63694 ZmKeys["voicemail.description"]="Voice Mail View";\r
63695 ZmKeys["voicemail.sort"]="45000";\r
63696 \r
63697 \r
63698 \r
63699 if (!window.AjxImgData) AjxImgData = {};\r
63700 AjxImgData["ImgCalendarFolderOverlay"]={t:0,l:0,w:16,h:16,f:"@AppContextPath@/img/overlays/ImgCalendarFolderOverlay.png"};\r
63701 AjxImgData["ImgContactsFolderOverlay"]={t:0,l:0,w:14,h:16,f:"@AppContextPath@/img/overlays/ImgContactsFolderOverlay.png"};\r
63702 AjxImgData["ImgEmailedContactsOverlay"]={t:0,l:0,w:16,h:16,f:"@AppContextPath@/img/overlays/ImgEmailedContactsOverlay.png"};\r
63703 AjxImgData["ImgFolderOverlay"]={t:0,l:0,w:16,h:14,f:"@AppContextPath@/img/overlays/ImgFolderOverlay.png"};\r
63704 AjxImgData["ImgInboxOverlay"]={t:0,l:0,w:16,h:18,f:"@AppContextPath@/img/overlays/ImgInboxOverlay.png"};\r
63705 AjxImgData["ImgMailFolderOverlay"]={t:0,l:0,w:16,h:18,f:"@AppContextPath@/img/overlays/ImgMailFolderOverlay.png"};\r
63706 AjxImgData["ImgNotebookOverlay"]={t:0,l:0,w:16,h:15,f:"@AppContextPath@/img/overlays/ImgNotebookOverlay.png"};\r
63707 AjxImgData["ImgRSSOverlay"]={t:0,l:0,w:16,h:16,f:"@AppContextPath@/img/overlays/ImgRSSOverlay.png"};\r
63708 AjxImgData["ImgSectionOverlay"]={t:0,l:0,w:16,h:16,f:"@AppContextPath@/img/overlays/ImgSectionOverlay.png"};\r
63709 AjxImgData["ImgSentFolderOverlay"]={t:0,l:0,w:16,h:18,f:"@AppContextPath@/img/overlays/ImgSentFolderOverlay.png"};\r
63710 AjxImgData["ImgSharedCalendarFolderOverlay"]={t:0,l:0,w:16,h:15,f:"@AppContextPath@/img/overlays/ImgSharedCalendarFolderOverlay.png"};\r
63711 AjxImgData["ImgSharedContactsFolderOverlay"]={t:0,l:0,w:16,h:17,f:"@AppContextPath@/img/overlays/ImgSharedContactsFolderOverlay.png"};\r
63712 AjxImgData["ImgSharedMailFolderOverlay"]={t:0,l:0,w:16,h:17,f:"@AppContextPath@/img/overlays/ImgSharedMailFolderOverlay.png"};\r
63713 AjxImgData["ImgSharedNotebookOverlay"]={t:0,l:0,w:16,h:16,f:"@AppContextPath@/img/overlays/ImgSharedNotebookOverlay.png"};\r
63714 AjxImgData["ImgSharedSectionOverlay"]={t:0,l:0,w:16,h:16,f:"@AppContextPath@/img/overlays/ImgSharedSectionOverlay.png"};\r
63715 AjxImgData["ImgSharedTaskListOverlay"]={t:0,l:0,w:16,h:18,f:"@AppContextPath@/img/overlays/ImgSharedTaskListOverlay.png"};\r
63716 AjxImgData["ImgTagOverlay"]={t:0,l:0,w:16,h:16,f:"@AppContextPath@/img/overlays/ImgTagOverlay.png"};\r
63717 AjxImgData["ImgTaskListOverlay"]={t:0,l:0,w:16,h:16,f:"@AppContextPath@/img/overlays/ImgTaskListOverlay.png"};\r
63718 AjxImgData["ImgNotebookMask"]={t:-80,l:0,w:16,h:16,f:"@AppContextPath@/img/notes.gif"};\r
63719 AjxImgData["ImgSectionMask"]={t:-128,l:0,w:16,h:16,f:"@AppContextPath@/img/notes.gif"};\r
63720 AjxImgData["ImgSharedNotebookMask"]={t:-160,l:0,w:16,h:16,f:"@AppContextPath@/img/notes.gif"};\r
63721 AjxImgData["ImgSharedSectionMask"]={t:-208,l:0,w:16,h:16,f:"@AppContextPath@/img/notes.gif"};\r
63722 AjxImgData["ImgMailFolderMask"]={t:0,l:0,w:16,h:18,f:"@AppContextPath@/img/mail.gif"};\r
63723 AjxImgData["ImgRSSMask"]={t:-322,l:0,w:16,h:16,f:"@AppContextPath@/img/mail.gif"};\r
63724 AjxImgData["ImgSharedTaskListMask"]={t:0,l:0,w:16,h:18,f:"@AppContextPath@/img/tasks.gif"};\r
63725 AjxImgData["ImgTaskListMask"]={t:-114,l:0,w:16,h:16,f:"@AppContextPath@/img/tasks.gif"};\r
63726 AjxImgData["ImgCalendarFolderMask"]={t:-96,l:0,w:16,h:16,f:"@AppContextPath@/img/calendar.gif"};\r
63727 AjxImgData["ImgSharedCalendarFolderMask"]={t:-413,l:0,w:15,h:15,f:"@AppContextPath@/img/calendar.gif"};\r
63728 AjxImgData["ImgSharedContactsFolderMask"]={t:0,l:0,w:16,h:17,f:"@AppContextPath@/img/contacts.gif"};\r
63729 AjxImgData["ImgContactsFolderMask"]={t:-65,l:0,w:14,h:16,f:"@AppContextPath@/img/contacts.gif"};\r
63730 AjxImgData["ImgEmailedContactsMask"]={t:-113,l:0,w:16,h:16,f:"@AppContextPath@/img/contacts.gif"};\r
63731 AjxImgData["ImgInboxMask"]={t:0,l:0,w:16,h:18,f:"@AppContextPath@/img/startup.gif"};\r
63732 AjxImgData["ImgSentFolderMask"]={t:-18,l:0,w:16,h:18,f:"@AppContextPath@/img/startup.gif"};\r
63733 AjxImgData["ImgSharedMailFolderMask"]={t:-36,l:0,w:16,h:17,f:"@AppContextPath@/img/startup.gif"};\r
63734 AjxImgData["ImgTagMask"]={t:-1493,l:0,w:16,h:16,f:"@AppContextPath@/img/startup.gif"};\r
63735 AjxImgData["ImgFolderMask"]={t:-1701,l:0,w:16,h:14,f:"@AppContextPath@/img/startup.gif"};\r
63736 \r
63737 if (!window.AjxImgData) AjxImgData = {};\r
63738 \r
63739 document.write("<DIV style='display:none'>");\r
63740 for (var id in AjxImgData) {\r
63741         var data = AjxImgData[id];\r
63742         if (data.f) data.f = data.f.replace(/@AppContextPath@/,appContextPath);\r
63743         document.write("<IMG id='",id,"' src='",data.d||data.f,"'>");\r
63744 }\r
63745 document.write("</DIV>");\r
63746 \r
63747 \r
63748 \r
63749                 function showCompanyUrl() {\r
63750                         window.open(ZmMsg.splashScreenCompanyURL, '_blank');\r
63751                 }\r
63752         \r
63753 \r
63754 \r
63755 \r
63756 document.write(ZmMsg.splashScreenAppName)\r
63757 \r
63758 \r
63759 \r
63760 document.write(ZmMsg.splashScreenLoading)\r
63761 \r
63762 \r
63763 \r
63764 document.write(ZmMsg.splashScreenSwitch)\r
63765 \r
63766 \r
63767 \r
63768 document.write(ZmMsg.splashScreenCopyright)\r
63769 \r
63770 \r
63771 \r
63772         AjxEnv=function(){};\r
63773 AjxEnv._inited=false;\r
63774 AjxEnv.DEFAULT_LOCALE=window.navigator.userLanguage||window.navigator.language||window.navigator.systemLanguage;\r
63775 AjxEnv.reset=function(){\r
63776 AjxEnv.geckoDate=0;\r
63777 AjxEnv.mozVersion=-1;\r
63778 AjxEnv.webKitVersion=-1;\r
63779 AjxEnv.isMac=false;\r
63780 AjxEnv.isWindows=false;\r
63781 AjxEnv.isLinux=false;\r
63782 AjxEnv.isNav=false;\r
63783 AjxEnv.isIE=false;\r
63784 AjxEnv.isNav4=false;\r
63785 AjxEnv.trueNs=true;\r
63786 AjxEnv.isNav6=false;\r
63787 AjxEnv.isNav6up=false;\r
63788 AjxEnv.isNav7=false;\r
63789 AjxEnv.isIE3=false;\r
63790 AjxEnv.isIE4=false;\r
63791 AjxEnv.isIE4up=false;\r
63792 AjxEnv.isIE5=false;\r
63793 AjxEnv.isIE5_5=false;\r
63794 AjxEnv.isIE5up=false;\r
63795 AjxEnv.isIE5_5up=false;\r
63796 AjxEnv.isIE6=false;\r
63797 AjxEnv.isIE6up=false;\r
63798 AjxEnv.isIE7=false;\r
63799 AjxEnv.isIE7up=false;\r
63800 AjxEnv.isIE8=false;\r
63801 AjxEnv.isIE8up=false;\r
63802 AjxEnv.isNormalResolution=false;\r
63803 AjxEnv.ieScaleFactor=1;\r
63804 AjxEnv.isFirefox=false;\r
63805 AjxEnv.isFirefox1up=false;\r
63806 AjxEnv.isFirefox1_5up=false;\r
63807 AjxEnv.isFirefox3up=false;\r
63808 AjxEnv.isMozilla=false;\r
63809 AjxEnv.isMozilla1_4up=false;\r
63810 AjxEnv.isSafari=false;\r
63811 AjxEnv.isSafari2=false;\r
63812 AjxEnv.isSafari3=false;\r
63813 AjxEnv.isSafari4=false;\r
63814 AjxEnv.isSafari3up=false;\r
63815 AjxEnv.isCamino=false;\r
63816 AjxEnv.isChrome=false;\r
63817 AjxEnv.isGeckoBased=false;\r
63818 AjxEnv.isWebKitBased=false;\r
63819 AjxEnv.isOpera=false;\r
63820 AjxEnv.useTransparentPNGs=false;\r
63821 AjxEnv.is800x600orLower=screen&&(screen.width<=800&&screen.height<=600);\r
63822 AjxEnv.is1024x768orLower=screen&&(screen.width<=1024&&screen.height<=768)\r
63823 };\r
63824 AjxEnv.parseUA=function(){\r
63825 AjxEnv.reset();\r
63826 var n=navigator.userAgent.toLowerCase();\r
63827 var t=n.split(" ");\r
63828 var c=false;\r
63829 var o=false;\r
63830 var r=false;\r
63831 var e=false;\r
63832 var a=false;\r
63833 if(t!=null){\r
63834 var u;\r
63835 var l=-1;\r
63836 if((l=t[0].search(/^\s*mozilla\//))!=-1){\r
63837 e=true;\r
63838 AjxEnv.browserVersion=parseFloat(t[0].substring(l+8));\r
63839 AjxEnv.isNav=true\r
63840 }\r
63841 var s;\r
63842 for(var h=0;\r
63843 h<t.length;\r
63844 ++h){\r
63845 s=t[h];\r
63846 if(s.indexOf("compatible")!=-1){\r
63847 a=true;\r
63848 AjxEnv.isNav=false\r
63849 }else{\r
63850 if((s.indexOf("opera"))!=-1){\r
63851 AjxEnv.isOpera=true;\r
63852 AjxEnv.isNav=false;\r
63853 u=parseFloat(t[h+1])\r
63854 }else{\r
63855 if((s.indexOf("spoofer"))!=-1){\r
63856 c=true;\r
63857 AjxEnv.isNav=false\r
63858 }else{\r
63859 if((s.indexOf("webtv"))!=-1){\r
63860 o=true;\r
63861 AjxEnv.isNav=false\r
63862 }else{\r
63863 if((s.indexOf("hotjava"))!=-1){\r
63864 r=true;\r
63865 AjxEnv.isNav=false\r
63866 }else{\r
63867 if((l=s.indexOf("msie"))!=-1){\r
63868 AjxEnv.isIE=true;\r
63869 u=parseFloat(t[h+1])\r
63870 }else{\r
63871 if((l=s.indexOf("gecko/"))!=-1){\r
63872 AjxEnv.isGeckoBased=true;\r
63873 AjxEnv.geckoDate=parseFloat(s.substr(l+6))\r
63874 }else{\r
63875 if((l=s.indexOf("applewebkit/"))!=-1){\r
63876 AjxEnv.isWebKitBased=true;\r
63877 AjxEnv.webKitVersion=parseFloat(s.substr(l+12))\r
63878 }else{\r
63879 if((l=s.indexOf("rv:"))!=-1){\r
63880 AjxEnv.mozVersion=parseFloat(s.substr(l+3));\r
63881 u=AjxEnv.mozVersion\r
63882 }else{\r
63883 if((l=s.indexOf("firefox/"))!=-1){\r
63884 AjxEnv.isFirefox=true;\r
63885 u=parseFloat(s.substr(l+8))\r
63886 }else{\r
63887 if((l=s.indexOf("prism"))!=-1){\r
63888 AjxEnv.isPrism=true\r
63889 }else{\r
63890 if((l=s.indexOf("camino/"))!=-1){\r
63891 AjxEnv.isCamino=true;\r
63892 u=parseFloat(s.substr(l+7))\r
63893 }else{\r
63894 if((l=s.indexOf("netscape6/"))!=-1){\r
63895 AjxEnv.trueNs=true;\r
63896 u=parseFloat(s.substr(l+10))\r
63897 }else{\r
63898 if((l=s.indexOf("netscape/"))!=-1){\r
63899 AjxEnv.trueNs=true;\r
63900 u=parseFloat(s.substr(l+9))\r
63901 }else{\r
63902 if((l=s.indexOf("safari/"))!=-1){\r
63903 AjxEnv.isSafari=true\r
63904 }else{\r
63905 if((l=s.indexOf("chrome/"))!=-1){\r
63906 AjxEnv.isChrome=true;\r
63907 u=parseFloat(s.substr(l+7))\r
63908 }else{\r
63909 if(l=s.indexOf("version/")!=-1){\r
63910 u=parseFloat(s.substr(l+7))\r
63911 }else{\r
63912 if(s.indexOf("windows")!=-1){\r
63913 AjxEnv.isWindows=true\r
63914 }else{\r
63915 if((s.indexOf("macintosh")!=-1)||(s.indexOf("mac_")!=-1)){\r
63916 AjxEnv.isMac=true\r
63917 }else{\r
63918 if(s.indexOf("linux")!=-1){\r
63919 AjxEnv.isLinux=true\r
63920 }}}}}}}}}}}}}}}}}}}}}\r
63921 AjxEnv.isNav=(e&&!c&&!a&&!AjxEnv.isOpera&&!o&&!r&&!AjxEnv.isSafari);\r
63922 AjxEnv.isIE=(AjxEnv.isIE&&!AjxEnv.isOpera);\r
63923 AjxEnv.isNav4=(AjxEnv.isNav&&(u==4)&&(!AjxEnv.isIE));\r
63924 AjxEnv.isNav6=(AjxEnv.isNav&&AjxEnv.trueNs&&(u>=6&&u<7));\r
63925 AjxEnv.isNav6up=(AjxEnv.isNav&&AjxEnv.trueNs&&(u>=6));\r
63926 AjxEnv.isNav7=(AjxEnv.isNav&&AjxEnv.trueNs&&(u>=7&&u<8));\r
63927 AjxEnv.isIE3=(AjxEnv.isIE&&u<4);\r
63928 AjxEnv.isIE4=(AjxEnv.isIE&&u>=4&&u<5);\r
63929 AjxEnv.isIE4up=(AjxEnv.isIE&&u>=4);\r
63930 AjxEnv.isIE5=(AjxEnv.isIE&&u>=5&&u<6);\r
63931 AjxEnv.isIE5_5=(AjxEnv.isIE&&u==5.5);\r
63932 AjxEnv.isIE5up=(AjxEnv.isIE&&u>=5);\r
63933 AjxEnv.isIE5_5up=(AjxEnv.isIE&&u>=5.5);\r
63934 AjxEnv.isIE6=(AjxEnv.isIE&&u>=6&&u<7);\r
63935 AjxEnv.isIE6up=(AjxEnv.isIE&&u>=6);\r
63936 AjxEnv.isIE7=(AjxEnv.isIE&&u>=7&&u<8);\r
63937 AjxEnv.isIE7up=(AjxEnv.isIE&&u>=7);\r
63938 AjxEnv.isIE8=(AjxEnv.isIE&&u>=8&&u<9);\r
63939 AjxEnv.isIE8up=(AjxEnv.isIE&&u>=8);\r
63940 AjxEnv.isMozilla=((AjxEnv.isNav&&AjxEnv.mozVersion&&AjxEnv.isGeckoBased&&(AjxEnv.geckoDate!=0)));\r
63941 AjxEnv.isMozilla1_4up=(AjxEnv.isMozilla&&(AjxEnv.mozVersion>=1.4));\r
63942 AjxEnv.isFirefox=((AjxEnv.isMozilla&&AjxEnv.isFirefox));\r
63943 AjxEnv.isFirefox1up=(AjxEnv.isFirefox&&u>=1);\r
63944 AjxEnv.isFirefox1_5up=(AjxEnv.isFirefox&&u>=1.5);\r
63945 AjxEnv.isFirefox2_0up=(AjxEnv.isFirefox&&u>=2);\r
63946 AjxEnv.isFirefox3up=(AjxEnv.isFirefox&&u>=3);\r
63947 AjxEnv.isSafari2=(AjxEnv.isSafari&&u>=2&&u<3);\r
63948 AjxEnv.isSafari3=(AjxEnv.isSafari&&u>=3&&u<4)||AjxEnv.isChrome;\r
63949 AjxEnv.isSafari4=(AjxEnv.isSafari&&u>=4);\r
63950 AjxEnv.isSafari3up=(AjxEnv.isSafari&&u>=3)||AjxEnv.isChrome;\r
63951 AjxEnv.browser="[unknown]";\r
63952 if(AjxEnv.isOpera){\r
63953 AjxEnv.browser="OPERA"\r
63954 }else{\r
63955 if(AjxEnv.isSafari3up){\r
63956 AjxEnv.browser="SAF3"\r
63957 }else{\r
63958 if(AjxEnv.isSafari){\r
63959 AjxEnv.browser="SAF"\r
63960 }else{\r
63961 if(AjxEnv.isCamino){\r
63962 AjxEnv.browser="CAM"\r
63963 }else{\r
63964 if(o){\r
63965 AjxEnv.browser="WEBTV"\r
63966 }else{\r
63967 if(r){\r
63968 AjxEnv.browser="HOTJAVA"\r
63969 }else{\r
63970 if(AjxEnv.isFirefox3up){\r
63971 AjxEnv.browser="FF3.0"\r
63972 }else{\r
63973 if(AjxEnv.isFirefox2_0up){\r
63974 AjxEnv.browser="FF2.0"\r
63975 }else{\r
63976 if(AjxEnv.isFirefox1_5up){\r
63977 AjxEnv.browser="FF1.5"\r
63978 }else{\r
63979 if(AjxEnv.isFirefox1up){\r
63980 AjxEnv.browser="FF1.0"\r
63981 }else{\r
63982 if(AjxEnv.isFirefox){\r
63983 AjxEnv.browser="FF"\r
63984 }else{\r
63985 if(AjxEnv.isPrism){\r
63986 AjxEnv.browser="PRISM"\r
63987 }else{\r
63988 if(AjxEnv.isNav7){\r
63989 AjxEnv.browser="NAV7"\r
63990 }else{\r
63991 if(AjxEnv.isNav6){\r
63992 AjxEnv.browser="NAV6"\r
63993 }else{\r
63994 if(AjxEnv.isNav4){\r
63995 AjxEnv.browser="NAV4"\r
63996 }else{\r
63997 if(AjxEnv.isIE8){\r
63998 AjxEnv.browser="IE8"\r
63999 }else{\r
64000 if(AjxEnv.isIE7){\r
64001 AjxEnv.browser="IE7"\r
64002 }else{\r
64003 if(AjxEnv.isIE6){\r
64004 AjxEnv.browser="IE6"\r
64005 }else{\r
64006 if(AjxEnv.isIE5){\r
64007 AjxEnv.browser="IE5"\r
64008 }else{\r
64009 if(AjxEnv.isIE4){\r
64010 AjxEnv.browser="IE4"\r
64011 }else{\r
64012 if(AjxEnv.isIE3){\r
64013 AjxEnv.browser="IE"\r
64014 }}}}}}}}}}}}}}}}}}}}}\r
64015 AjxEnv.platform="[unknown]";\r
64016 if(AjxEnv.isWindows){\r
64017 AjxEnv.platform="Win"\r
64018 }else{\r
64019 if(AjxEnv.isMac){\r
64020 AjxEnv.platform="Mac"\r
64021 }else{\r
64022 if(AjxEnv.isLinux){\r
64023 AjxEnv.platform="Linux"\r
64024 }}}}\r
64025 if(AjxEnv.isIE){\r
64026 AjxEnv.isNormalResolution=true;\r
64027 AjxEnv.ieScaleFactor=screen.deviceXDPI/screen.logicalXDPI;\r
64028 if(AjxEnv.ieScaleFactor>1){\r
64029 AjxEnv.isNormalResolution=false\r
64030 }}\r
64031 AjxEnv.useTransparentPNGs=!AjxEnv.isIE&&!AjxEnv.isLinux&&!AjxEnv.isSafari;\r
64032 AjxEnv._inited=!AjxEnv.isIE;\r
64033 if(AjxEnv.isSafari){\r
64034 var d=AjxEnv.getWebkitVersion();\r
64035 AjxEnv.isSafariNightly=(d&&d.is_nightly);\r
64036 AjxEnv.isSafari2=!AjxEnv.isSafari3&&!AjxEnv.isSafariNightly\r
64037 }};\r
64038 AjxEnv.getWebkitVersion=function(){\r
64039 var t;\r
64040 var o=new RegExp("\\(.*\\) AppleWebKit/(.*) \\((.*)");\r
64041 var s=o.exec(navigator.userAgent);\r
64042 if(s){\r
64043 var e=s[1];\r
64044 var n=e.split(".");\r
64045 var a=(e[e.length-1]=="+");\r
64046 var i=a?"+":parseInt(n[1]);\r
64047 if(isNaN(i)){\r
64048 i=""\r
64049 }\r
64050 t={\r
64051 major:parseInt(n[0]),minor:i,is_nightly:a}\r
64052 }\r
64053 return{\r
64054 major:t.major,minor:t.minor,is_nightly:t.is_nightly}\r
64055 };\r
64056 AjxEnv.parseUA();\r
64057 AjxCallback=function(a,t,e){\r
64058 if(arguments.length==0){\r
64059 return\r
64060 }\r
64061 if(typeof arguments[0]=="function"){\r
64062 this.obj=null;\r
64063 this.func=arguments[0];\r
64064 this.args=arguments[1]\r
64065 }else{\r
64066 this.obj=a;\r
64067 this.func=t;\r
64068 this.args=e\r
64069 }};\r
64070 AjxCallback.prototype.toString=function(){\r
64071 return"AjxCallback"\r
64072 };\r
64073 AjxCallback.NOP=new AjxCallback(function(){}\r
64074 );\r
64075 AjxCallback.prototype.run=function(){\r
64076 var e=[];\r
64077 if(typeof this.args!="undefined"){\r
64078 if(this.args instanceof Array){\r
64079 e=arguments.length>0?e.concat(this.args):this.args\r
64080 }else{\r
64081 e.push(this.args)\r
64082 }}\r
64083 for(var t=0;\r
64084 t<arguments.length;\r
64085 ++t){\r
64086 e.push(arguments[t])\r
64087 }\r
64088 if(this.func){\r
64089 return this.func.apply(this.obj||window,e)\r
64090 }};\r
64091 AjxCallback.prototype.run1=function(t){\r
64092 var e=[];\r
64093 if(typeof this.args!="undefined"){\r
64094 if(this.args instanceof Array){\r
64095 e=arguments.length>0?e.concat(this.args):this.args\r
64096 }else{\r
64097 e.push(this.args)\r
64098 }}\r
64099 if(t&&t.length){\r
64100 for(var a=0;\r
64101 a<t.length;\r
64102 ++a){\r
64103 e.push(t[a])\r
64104 }}\r
64105 if(this.func){\r
64106 return this.func.apply(this.obj||window,e)\r
64107 }};\r
64108 AjxCallback.simpleClosure=function(a,o){\r
64109 var e=[];\r
64110 for(var t=2;\r
64111 t<arguments.length;\r
64112 ++t){\r
64113 e.push(arguments[t])\r
64114 }\r
64115 return function(){\r
64116 var s=[];\r
64117 for(var n=0;\r
64118 n<arguments.length;\r
64119 ++n){\r
64120 s.push(arguments[n])\r
64121 }\r
64122 return a.apply(o||this,e.concat(s))\r
64123 }\r
64124 };\r
64125 AjxCallback.returnFalse=function(){\r
64126 return false\r
64127 };\r
64128 AjxCallback.isNull=function(e){\r
64129 return e==null\r
64130 };\r
64131 AjxLoader=function(){};\r
64132 AjxLoader.__createXHR;\r
64133 if(window.XMLHttpRequest){\r
64134 AjxLoader.__createXHR=function(){\r
64135 return new XMLHttpRequest()\r
64136 }\r
64137 }else{\r
64138 if(window.ActiveXObject){\r
64139 (function(){\r
64140 var t=["MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];\r
64141 for(var a=0;\r
64142 a<t.length;\r
64143 a++){\r
64144 try{\r
64145 new ActiveXObject(t[a]);\r
64146 AjxLoader.__createXHR=function(){\r
64147 return new ActiveXObject(t[a])\r
64148 };\r
64149 break\r
64150 }\r
64151 catch(o){}}}\r
64152 )()\r
64153 }}\r
64154 AjxLoader.load=function(a){\r
64155 var n=a;\r
64156 if(typeof a=="string"){\r
64157 n={\r
64158 url:a}\r
64159 }\r
64160 var o=AjxLoader.__createXHR();\r
64161 var i=Boolean(n.callback)?function(){\r
64162 AjxLoader._response(o,n.callback)\r
64163 }\r
64164 :null;\r
64165 var s=n.method||(n.content!=null?"POST":"GET");\r
64166 if(i){\r
64167 o.onreadystatechange=i\r
64168 }\r
64169 var t=n.async!=null?n.async:Boolean(i);\r
64170 o.open(s,n.url,t,n.userName,n.password);\r
64171 for(var e in n.headers){\r
64172 o.setRequestHeader(e,n.headers[e])\r
64173 }\r
64174 o.send(n.content||"");\r
64175 return o\r
64176 };\r
64177 AjxLoader._response=function(e,t){\r
64178 if(e.readyState==4){\r
64179 t.run(e)\r
64180 }};\r
64181 AjxPackage=function(){};\r
64182 AjxPackage.METHOD_XHR_SYNC="xhr-sync";\r
64183 AjxPackage.METHOD_XHR_ASYNC="xhr-async";\r
64184 AjxPackage.METHOD_SCRIPT_TAG="script-tag";\r
64185 AjxPackage.DEFAULT_SYNC=AjxPackage.METHOD_XHR_SYNC;\r
64186 AjxPackage.DEFAULT_ASYNC=AjxEnv.isIE?AjxPackage.METHOD_XHR_ASYNC:AjxPackage.METHOD_SCRIPT_TAG;\r
64187 AjxPackage._packages={};\r
64188 AjxPackage._extension=".js";\r
64189 AjxPackage.__depth=0;\r
64190 AjxPackage.__scripts=[];\r
64191 AjxPackage.__data={};\r
64192 AjxPackage.setBasePath=function(e){\r
64193 AjxPackage._basePath=e\r
64194 };\r
64195 AjxPackage.setExtension=function(e){\r
64196 AjxPackage._extension=e\r
64197 };\r
64198 AjxPackage.setQueryString=function(e){\r
64199 AjxPackage._queryString=e\r
64200 };\r
64201 AjxPackage.isDefined=function(e){\r
64202 return Boolean(AjxPackage._packages[e])\r
64203 };\r
64204 AjxPackage.define=function(e){\r
64205 AjxPackage.__log("DEFINE "+e,"font-weight:bold;font-style:italic");\r
64206 e=AjxPackage.__package2path(e);\r
64207 if(!AjxPackage._packages[e]){\r
64208 AjxPackage._packages[e]=true;\r
64209 return true\r
64210 }\r
64211 return false\r
64212 };\r
64213 AjxPackage.undefine=function(e){\r
64214 AjxPackage.__log("UNDEFINE "+e,"font-weight:bold;font-style:italic");\r
64215 e=AjxPackage.__package2path(e);\r
64216 if(AjxPackage._packages[e]){\r
64217 delete AjxPackage._packages[e]\r
64218 }};\r
64219 AjxPackage.require=function(a){\r
64220 var b=a;\r
64221 if(typeof a=="string"){\r
64222 b={\r
64223 name:a}\r
64224 }\r
64225 var s=b.name;\r
64226 if(s instanceof Array){\r
64227 if(!s.internal){\r
64228 s=[].concat(s);\r
64229 s.internal=true;\r
64230 b.name=s\r
64231 }\r
64232 var x=s.shift();\r
64233 if(s.length>0){\r
64234 var o=new Function();\r
64235 o.prototype=b;\r
64236 o.prototype.constructor=o;\r
64237 var n=new o();\r
64238 n.name=x;\r
64239 n.callback=new AjxCallback(null,AjxPackage.__requireNext,b);\r
64240 AjxPackage.require(n);\r
64241 return\r
64242 }\r
64243 b.name=x\r
64244 }\r
64245 var c=b.name;\r
64246 var x=AjxPackage.__package2path(c);\r
64247 var i=b.callback;\r
64248 if(typeof i=="function"){\r
64249 i=new AjxCallback(i)\r
64250 }\r
64251 var f=i?" (callback)":"";\r
64252 var y=AjxPackage._packages[x]?" LOADED":"";\r
64253 var d=AjxPackage.__scripts.length?" (async, queueing...)":"";\r
64254 AjxPackage.__log(['REQUIRE "',c,'"',f,y,d].join(""));\r
64255 var g=b.forceReload!=null?b.forceReload:false;\r
64256 if(AjxPackage._packages[x]&&!g){\r
64257 if(i){\r
64258 i.run()\r
64259 }\r
64260 return\r
64261 }\r
64262 var w=b.basePath||AjxPackage._basePath||window.contextPath;\r
64263 var h=b.extension||AjxPackage._extension;\r
64264 var t=b.queryString||AjxPackage._queryString;\r
64265 var k=[w,"/",x,h];\r
64266 if(t){\r
64267 k.push("?",t)\r
64268 }\r
64269 var m=k.join("");\r
64270 var e=b.method||(b.callback?AjxPackage.DEFAULT_ASYNC:AjxPackage.DEFAULT_SYNC);\r
64271 var l=e==AjxPackage.METHOD_XHR_SYNC||b.forceSync;\r
64272 var r=!l;\r
64273 var v={\r
64274 name:x,path:m,method:e,async:r,callback:i||AjxCallback.NOP,scripts:r?[]:null};\r
64275 if(l||AjxPackage.__scripts.length==0){\r
64276 AjxPackage.__doLoad(v)\r
64277 }else{\r
64278 var p=AjxPackage.__scripts[AjxPackage.__scripts.length-1];\r
64279 v.method=p.method;\r
64280 v.async=p.async;\r
64281 v.scripts=[];\r
64282 if(i){\r
64283 var u=AjxPackage.__scripts[0];\r
64284 u.callback=new AjxCallback(AjxPackage.__chainCallbacks,[u.callback,i]);\r
64285 v.callback=AjxCallback.NOP\r
64286 }\r
64287 p.scripts.push(v)\r
64288 }};\r
64289 AjxPackage.eval=function(text){\r
64290 if(window.execScript){\r
64291 window.execScript(text)\r
64292 }else{\r
64293 if(AjxEnv.isGeckoBased){\r
64294 window.eval(text)\r
64295 }else{\r
64296 var e=document.createElement("SCRIPT");\r
64297 var t=document.createTextNode(text);\r
64298 e.appendChild(t);\r
64299 var heads=document.getElementsByTagName("HEAD");\r
64300 if(heads.length==0){\r
64301 heads=[document.createElement("HEAD")];\r
64302 document.documentElement.appendChild(heads[0])\r
64303 }\r
64304 heads[0].appendChild(e)\r
64305 }}};\r
64306 AjxPackage.__package2path=function(e){\r
64307 return e.replace(/\./g,"/").replace(/\*$/,"__all__")\r
64308 };\r
64309 AjxPackage.__requireNext=function(t){\r
64310 var e=AjxCallback.simpleClosure(AjxPackage.require,null,t);\r
64311 setTimeout(e,AjxEnv.isIE?10:0)\r
64312 };\r
64313 AjxPackage.__doLoad=function(e){\r
64314 if(e.async){\r
64315 AjxPackage.__doAsyncLoad(e)\r
64316 }else{\r
64317 AjxPackage.__doXHR(e)\r
64318 }};\r
64319 AjxPackage.__doAsyncLoad=function(t,e){\r
64320 AjxPackage.__data[name]=t;\r
64321 if(e||AjxPackage.__scripts.length==0){\r
64322 AjxPackage.__scripts.push(t);\r
64323 if(t.method==AjxPackage.METHOD_SCRIPT_TAG){\r
64324 AjxPackage.__doScriptTag(t)\r
64325 }else{\r
64326 AjxPackage.__doXHR(t)\r
64327 }}else{\r
64328 var a=AjxPackage.__scripts[AjxPackage.__scripts.length-1];\r
64329 a.scripts.push(t)\r
64330 }};\r
64331 AjxPackage.__doScriptTag=function(i){\r
64332 var e=document.createElement("SCRIPT");\r
64333 e.type="text/javascript";\r
64334 e.src=i.path;\r
64335 if(AjxEnv.isIE){\r
64336 var t=AjxCallback.simpleClosure(AjxPackage.__onAsyncLoadIE,null,e);\r
64337 e.attachEvent("onreadystatechange",t)\r
64338 }else{\r
64339 var t=AjxCallback.simpleClosure(AjxPackage.__onAsyncLoad,null,i.name);\r
64340 e.addEventListener("load",t,true)\r
64341 }\r
64342 var a=document.getElementsByTagName("HEAD");\r
64343 if(!a||a.length==0){\r
64344 a=[document.createElement("HEAD")];\r
64345 document.documentElement.appendChild(a[0])\r
64346 }\r
64347 a[0].appendChild(e)\r
64348 };\r
64349 AjxPackage.__doXHR=function(a){\r
64350 var i=a.async?new AjxCallback(null,AjxPackage.__onXHR,[a]):null;\r
64351 var e={\r
64352 url:a.path,userName:a.userName,password:a.password,async:a.async,callback:i};\r
64353 var t=AjxLoader.load(e);\r
64354 if(!a.async){\r
64355 AjxPackage.__onXHR(a,t)\r
64356 }};\r
64357 AjxPackage.__onXHR=function(t,e){\r
64358 if(e.status==200||e.status==0){\r
64359 AjxPackage.__requireEval(e.responseText||"")\r
64360 }else{\r
64361 AjxPackage.__log("error: "+e.status,"background-color:red")\r
64362 }\r
64363 if(t.async){\r
64364 AjxPackage.__onAsyncLoad()\r
64365 }else{\r
64366 AjxPackage.__onLoad(t)\r
64367 }};\r
64368 AjxPackage.__onAsyncLoadIE=function(e){\r
64369 if(e.readyState=="loaded"){\r
64370 AjxPackage.__onAsyncLoad()\r
64371 }};\r
64372 AjxPackage.__onAsyncLoad=function(){\r
64373 var e;\r
64374 while(e=AjxPackage.__scripts.pop()){\r
64375 if(e.scripts.length){\r
64376 AjxPackage.__scripts.push(e);\r
64377 e=e.scripts.shift();\r
64378 AjxPackage.__scripts.push(e);\r
64379 AjxPackage.__doAsyncLoad(e,true);\r
64380 return\r
64381 }\r
64382 AjxPackage.__onLoad(e)\r
64383 }};\r
64384 AjxPackage.__onLoad=function(t){\r
64385 AjxPackage.define(t.name);\r
64386 if(t.callback){\r
64387 try{\r
64388 t.callback.run()\r
64389 }\r
64390 catch(a){\r
64391 AjxPackage.__log("error on callback: "+a,"color:red")\r
64392 }}};\r
64393 AjxPackage.__requireEval=function(text){\r
64394 AjxPackage.__depth++;\r
64395 try{\r
64396 AjxPackage.eval(text)\r
64397 }\r
64398 catch(e){\r
64399 AjxPackage.__log("error on eval: "+e,"color:red")\r
64400 }\r
64401 AjxPackage.__depth--\r
64402 };\r
64403 AjxPackage.__log=function(t,e){};\r
64404 AjxPackage.__alertStack=function(r){\r
64405 var e=[];\r
64406 if(r){\r
64407 e.push(r,"\n\n")\r
64408 }\r
64409 for(var s=AjxPackage.__scripts.length-1;\r
64410 s>=0;\r
64411 s--){\r
64412 var t=AjxPackage.__scripts[s];\r
64413 e.push(t.name," (",Boolean(t.callback),")","\n");\r
64414 if(t.scripts){\r
64415 for(var n=0;\r
64416 n<t.scripts.length;\r
64417 n++){\r
64418 var o=t.scripts[n];\r
64419 e.push("  ",o.name," (",Boolean(o.callback),")","\n")\r
64420 }}}\r
64421 alert(e.join(""))\r
64422 };\r
64423 AjxPackage.__chainCallbacks=function(t,e){\r
64424 if(t){\r
64425 t.run()\r
64426 }\r
64427 if(e){\r
64428 e.run()\r
64429 }};\r
64430 AjxTemplate=function(){};\r
64431 AjxTemplate._templates={};\r
64432 AjxTemplate._stack=[];\r
64433 AjxTemplate.setBasePath=function(e){\r
64434 AjxTemplate._basePath=e\r
64435 };\r
64436 AjxTemplate.setExtension=function(e){\r
64437 AjxTemplate._extension=e\r
64438 };\r
64439 AjxTemplate.register=function(t,a,i,e){\r
64440 if(!e&&AjxTemplate._templates[t]&&AjxTemplate._templates[t].authoritative){\r
64441 return\r
64442 }\r
64443 AjxTemplate._templates[t]={\r
64444 name:t,func:a,params:i||{}\r
64445 ,authoritative:e}\r
64446 };\r
64447 AjxTemplate.getTemplate=function(e){\r
64448 var t=AjxTemplate._templates[e];\r
64449 return t&&t.func\r
64450 };\r
64451 AjxTemplate.getParams=function(e){\r
64452 var t=AjxTemplate._templates[e];\r
64453 return t&&t.params\r
64454 };\r
64455 AjxTemplate.expand=function(t,r,s){\r
64456 if(!AjxTemplate._templates[t]&&AjxTemplate.compile){\r
64457 var i=document.getElementById(t);\r
64458 if(i){\r
64459 var d=i.nodeName.toUpperCase()=="TEXTAREA";\r
64460 AjxTemplate.compile(t,true,true,d?i.value:i.innerHTML)\r
64461 }}\r
64462 var c=AjxTemplate.__name2Package(t);\r
64463 var a=t.replace(/^[^#]*#?/,"");\r
64464 if(a){\r
64465 t=[c,a].join("#")\r
64466 }\r
64467 AjxTemplate.require(c);\r
64468 var h=Boolean(s);\r
64469 s=s||[];\r
64470 var o=AjxTemplate.getTemplate(t);\r
64471 if(o){\r
64472 try{\r
64473 AjxTemplate._stack.push(c);\r
64474 var n=AjxTemplate.getParams(t);\r
64475 o(t,n,r,s)\r
64476 }\r
64477 catch(l){\r
64478 s.push(this.__formatError(t,l))\r
64479 }\r
64480 finally{\r
64481 AjxTemplate._stack.pop()\r
64482 }}else{\r
64483 s.push(this.__formatError(t,"template not found"))\r
64484 }\r
64485 return h?s.length:s.join("")\r
64486 };\r
64487 AjxTemplate.require=function(e){\r
64488 AjxPackage.require({\r
64489 name:AjxTemplate.__name2Package(e),basePath:AjxTemplate._basePath,extension:AjxTemplate._extension}\r
64490 );\r
64491 return AjxTemplate.getTemplate(e)!=null\r
64492 };\r
64493 AjxTemplate.setContent=function(a,e,i){\r
64494 if(typeof a=="string"){\r
64495 a=document.getElementById(a)\r
64496 }\r
64497 if(a==null){\r
64498 return\r
64499 }\r
64500 var t=AjxTemplate.expand(e,i);\r
64501 a.innerHTML=t\r
64502 };\r
64503 AjxTemplate.__name2Package=function(t){\r
64504 var e=t.replace(/#.*$/,"");\r
64505 if(t.match(/^#/)&&AjxTemplate._stack.length>0){\r
64506 e=AjxTemplate._stack[AjxTemplate._stack.length-1]\r
64507 }\r
64508 return e\r
64509 };\r
64510 AjxTemplate.__formatError=function(e,t){\r
64511 return"Error in template '"+e+"': "+t\r
64512 };\r
64513 AjxTemplate.compile=function(d,u,l,f){\r
64514 var e=AjxPackage.__package2path(d);\r
64515 var g=f!=null?f:AjxLoader.load(e).reponseText;\r
64516 var r=[],s=0,h=true;\r
64517 AjxTemplate.__RE_TEMPLATE.lastIndex=0;\r
64518 var o=AjxTemplate.__RE_TEMPLATE.exec(g);\r
64519 if(o){\r
64520 do{\r
64521 var p=AjxTemplate.__parseAttrs(o[1]);\r
64522 var c=o[2];\r
64523 if(p["xml:space"]!="preserve"){\r
64524 c=c.replace(AjxTemplate.__RE_GT_LINESEP_LT,"><").trim()\r
64525 }\r
64526 var n=d;\r
64527 var a=p.id;\r
64528 if(a&&(a.indexOf("#")!=-1||a.match(/^\//))){\r
64529 if(a.indexOf("#")==-1){\r
64530 a+="#"\r
64531 }\r
64532 n=a.replace(/#.*$/,"").replace(/^\//,"").replace(/\//g,".");\r
64533 a=a.replace(/^.*#/,"")\r
64534 }\r
64535 var t=a?n+"#"+a:n;\r
64536 var i=AjxTemplate.__convertLines(c);\r
64537 AjxTemplate.register(n,i,p,u);\r
64538 if(h&&l){\r
64539 AjxPackage.define(n)\r
64540 }\r
64541 if(h){\r
64542 h=false;\r
64543 AjxTemplate.register(n,i,p,u)\r
64544 }}\r
64545 while(o=AjxTemplate.__RE_TEMPLATE.exec(g))\r
64546 }else{\r
64547 if(l){\r
64548 AjxPackage.define(d)\r
64549 }\r
64550 var i=AjxTemplate.__convertLines(g);\r
64551 AjxTemplate.register(d,i,{}\r
64552 ,u)\r
64553 }};\r
64554 AjxTemplate.__RE_REPLACE=new RegExp(["\\$\\{(.+?)\\}","<\\$=(.+?)\\$>","<\\$(.+?)\\$>"].join("|"),"mg");\r
64555 AjxTemplate.__RE_TEMPLATE=new RegExp("<template(.*?)>(.*?)</template>","mg");\r
64556 AjxTemplate.__RE_ATTR=new RegExp("\\s*(\\S+)\\s*=\\s*('[^']*'|\"[^\"]*\")","mg");\r
64557 AjxTemplate.__RE_PARAM_PART=new RegExp("([^\\(\\.]+)(\\(.*?\\))?\\.?","g");\r
64558 AjxTemplate.__RE_GT_LINESEP_LT=new RegExp([">","\\s*\\n+\\s*","<"].join(""),"mg");\r
64559 AjxTemplate.__convertLines=function(a){\r
64560 var t=[],r=0;\r
64561 t[r++]="\tvar _hasBuffer = Boolean(buffer);";\r
64562 t[r++]='\tdata = (typeof data == "string" ? { id: data } : data) || {};';\r
64563 t[r++]="\tbuffer = buffer || [];";\r
64564 t[r++]="\tvar _i = buffer.length;";\r
64565 t[r++]="\n";\r
64566 AjxTemplate.__RE_REPLACE.lastIndex=0;\r
64567 var e=AjxTemplate.__RE_REPLACE.exec(a);\r
64568 if(e){\r
64569 var o=0;\r
64570 do{\r
64571 var i=AjxTemplate.__RE_REPLACE.lastIndex-e[0].length;\r
64572 if(o<i){\r
64573 AjxTemplate.__printStringLines(t,a.substring(o,i))\r
64574 }\r
64575 var s=e[1];\r
64576 var n=e[2];\r
64577 if(s){\r
64578 r=AjxTemplate.__printDataLine(t,s)\r
64579 }else{\r
64580 if(n){\r
64581 r=AjxTemplate.__printBufferLine(t,n)\r
64582 }else{\r
64583 r=AjxTemplate.__printLine(t,"\t",e[3].replace(/\n/g,"\n\t"),"\n")\r
64584 }}\r
64585 o=AjxTemplate.__RE_REPLACE.lastIndex\r
64586 }\r
64587 while(e=AjxTemplate.__RE_REPLACE.exec(a));\r
64588 if(o<a.length){\r
64589 r=AjxTemplate.__printStringLines(t,a.substring(o))\r
64590 }}else{\r
64591 r=AjxTemplate.__printStringLines(t,a)\r
64592 }\r
64593 t[r++]="\n";\r
64594 t[r++]='\treturn _hasBuffer ? buffer.length : buffer.join("");';\r
64595 return new Function("name,params,data,buffer",t.join(""))\r
64596 };\r
64597 AjxTemplate.__parseAttrs=function(a){\r
64598 var t={}\r
64599 ,e;\r
64600 AjxTemplate.__RE_ATTR.lastIndex=0;\r
64601 while(e=AjxTemplate.__RE_ATTR.exec(a)){\r
64602 var i=e[2];\r
64603 t[e[1]]=i.substring(1,i.length-1)\r
64604 }\r
64605 return t\r
64606 };\r
64607 AjxTemplate.__printLine=function(e,a){\r
64608 var o=e.length;\r
64609 for(var t=1;\r
64610 t<arguments.length;\r
64611 t++){\r
64612 e[o++]=arguments[t]\r
64613 }\r
64614 return o\r
64615 };\r
64616 AjxTemplate.__printStringLines=function(a,r){\r
64617 var l=a.length;\r
64618 for(var n=1;\r
64619 n<arguments.length;\r
64620 n++){\r
64621 var h=arguments[n];\r
64622 var t=h.split("\n");\r
64623 for(var o=0;\r
64624 o<t.length;\r
64625 o++){\r
64626 var e=t[o];\r
64627 l=AjxTemplate.__printStringLine(a,e,n<t.length-1?"\n":"")\r
64628 }}\r
64629 return l\r
64630 };\r
64631 AjxTemplate.__printStringLine=function(e,a){\r
64632 var o=e.length;\r
64633 e[o++]='\tbuffer[_i++] = "';\r
64634 for(var t=1;\r
64635 t<arguments.length;\r
64636 t++){\r
64637 o=AjxTemplate.__printEscaped(e,arguments[t])\r
64638 }\r
64639 e[o++]='";';\r
64640 return o\r
64641 };\r
64642 AjxTemplate.__printDataLine=function(t,a){\r
64643 var i=t.length,e;\r
64644 t[i++]="\tbuffer[_i++] = data";\r
64645 AjxTemplate.__RE_PARAM_PART.lastIndex=0;\r
64646 while(e=AjxTemplate.__RE_PARAM_PART.exec(a)){\r
64647 t[i++]='["';\r
64648 t[i++]=e[1];\r
64649 t[i++]='"]';\r
64650 if(e[2]!=null){\r
64651 t[i++]=e[2]\r
64652 }}\r
64653 t[i++]=";";\r
64654 return i\r
64655 };\r
64656 AjxTemplate.__printBufferLine=function(e,a){\r
64657 var o=e.length;\r
64658 e[o++]="\tbuffer[_i++] = ";\r
64659 for(var t=1;\r
64660 t<arguments.length;\r
64661 t++){\r
64662 e[o++]=arguments[t]\r
64663 }\r
64664 e[o++]=";";\r
64665 return o\r
64666 };\r
64667 AjxTemplate.__printEscaped=function(e,t){\r
64668 var a=e.length;\r
64669 e[a++]=t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace("\n","\\n").replace("\r","\\r").replace("\t","\\t");\r
64670 return a\r
64671 };\r
64672 AjxDispatcher=function(){};\r
64673 AjxDispatcher._registry={};\r
64674 AjxDispatcher._package={};\r
64675 AjxDispatcher._preLoad=[];\r
64676 AjxDispatcher._postLoad=[];\r
64677 AjxDispatcher._loadFunctionsEnabled=false;\r
64678 AjxDispatcher._timedAction=null;\r
64679 AjxDispatcher.addPackageLoadFunction=function(e,a){\r
64680 var t=AjxDispatcher._getPackageData(e);\r
64681 if(!t._loaded&&!AjxPackage.isDefined(e)){\r
64682 t.callback.push(a)\r
64683 }else{\r
64684 AjxTimedAction.scheduleAction(new AjxTimedAction(a,a.run),0)\r
64685 }};\r
64686 AjxDispatcher.addPreLoadFunction=function(e){\r
64687 AjxDispatcher._preLoad.push(e)\r
64688 };\r
64689 AjxDispatcher.addPostLoadFunction=function(e){\r
64690 AjxDispatcher._postLoad.push(e)\r
64691 };\r
64692 AjxDispatcher.setPackageLoadFunction=AjxDispatcher.addPackageLoadFunction;\r
64693 AjxDispatcher.setPreLoadFunction=AjxDispatcher.addPreLoadFunction;\r
64694 AjxDispatcher.setPostLoadFunction=AjxDispatcher.addPostLoadFunction;\r
64695 AjxDispatcher.enableLoadFunctions=function(e){\r
64696 AjxDispatcher._loadFunctionsEnabled=e\r
64697 };\r
64698 AjxDispatcher.loaded=function(e){\r
64699 var t=AjxDispatcher._getPackageData(e);\r
64700 return(t&&t._loaded)||AjxPackage.isDefined(e)\r
64701 };\r
64702 AjxDispatcher.setLoaded=function(t,e){\r
64703 var n=AjxDispatcher._getPackageData(t);\r
64704 n._loaded=e;\r
64705 if(e){\r
64706 var o=n.callback||[];\r
64707 for(var a=0;\r
64708 a<o.length;\r
64709 a++){\r
64710 o[a].run()\r
64711 }}};\r
64712 AjxDispatcher.registerMethod=function(a,e,t){\r
64713 AjxDispatcher._registry[a]={\r
64714 pkg:e,callback:t}\r
64715 };\r
64716 AjxDispatcher.run=function(o){\r
64717 if(!o){\r
64718 return\r
64719 }\r
64720 var e,a,t,l,h;\r
64721 if(typeof(o)=="string"){\r
64722 e=o;\r
64723 t=false;\r
64724 h=false\r
64725 }else{\r
64726 e=o.method;\r
64727 a=o.noLoad;\r
64728 l=o.callback;\r
64729 t=o.async!=null?o.async:Boolean(l);\r
64730 h=o.preLoadOk!=null?o.preLoadOk:(l!=null)\r
64731 }\r
64732 var c=AjxDispatcher._registry[e];\r
64733 if(!c){\r
64734 AjxPackage.__log("API method '"+e+"' not found");\r
64735 return\r
64736 }\r
64737 AjxPackage.__log("Run method: "+e);\r
64738 var r=c.pkg;\r
64739 var s=[];\r
64740 for(var n=1;\r
64741 n<arguments.length;\r
64742 ++n){\r
64743 s.push(arguments[n])\r
64744 }\r
64745 if(l){\r
64746 s.push(l)\r
64747 }\r
64748 return AjxDispatcher.require(r,t,c.callback,s,h)\r
64749 };\r
64750 AjxDispatcher.require=function(n,a,h,s,r){\r
64751 if(!n){\r
64752 return\r
64753 }\r
64754 if(typeof(n)=="string"){\r
64755 n=[n]\r
64756 }\r
64757 var l=[];\r
64758 for(var o=0;\r
64759 o<n.length;\r
64760 o++){\r
64761 var t=n[o];\r
64762 if(!AjxDispatcher._getPackageData(t)._loaded){\r
64763 l.push(t)\r
64764 }}\r
64765 if(l.length==0){\r
64766 return AjxDispatcher._postLoadCallback(n,false,h,s)\r
64767 }else{\r
64768 var e=AjxDispatcher._preLoad;\r
64769 if(r&&AjxDispatcher._loadFunctionsEnabled&&e.length){\r
64770 AjxPackage.__log("pre-load function");\r
64771 AjxDispatcher._timedAction=new AjxCallback(null,AjxDispatcher._continueRequire,[l,a,h,s]);\r
64772 for(var o=0;\r
64773 o<e.length;\r
64774 o++){\r
64775 e[o].run()\r
64776 }\r
64777 window.setTimeout("AjxDispatcher._timedAction.run()",0)\r
64778 }else{\r
64779 return AjxDispatcher._continueRequire(l,a,h,s)\r
64780 }}};\r
64781 AjxDispatcher._continueRequire=function(s,e,c,r){\r
64782 var l=s.join(", ");\r
64783 AjxPackage.__log("------------------------------------- Loading package: "+l);\r
64784 if(window.console){\r
64785 console.log("------------------------------------- Loading package: "+l)\r
64786 }\r
64787 if(e&&c){\r
64788 var o=new AjxCallback(null,AjxDispatcher._postLoadCallback,[s,true,c,r]);\r
64789 AjxPackage.require({\r
64790 name:s,callback:o}\r
64791 )\r
64792 }else{\r
64793 var n=new Date();\r
64794 for(var a=0;\r
64795 a<s.length;\r
64796 a++){\r
64797 AjxPackage.require(s[a])\r
64798 }\r
64799 var h=new Date();\r
64800 var d=h.getTime()-n.getTime();\r
64801 AjxPackage.__log("LOAD TIME for "+l+": "+d);\r
64802 return AjxDispatcher._postLoadCallback(s,true,c,r)\r
64803 }};\r
64804 AjxDispatcher._postLoadCallback=function(r,n,l,h){\r
64805 for(var a=0;\r
64806 a<r.length;\r
64807 a++){\r
64808 AjxDispatcher._getPackageData(r[a])._loaded=true\r
64809 }\r
64810 for(var a=0;\r
64811 a<r.length;\r
64812 a++){\r
64813 var e=AjxDispatcher._getPackageData(r[a]);\r
64814 if(n&&e.callback.length&&!e.callbackDone){\r
64815 e.callbackDone=true;\r
64816 AjxPackage.__log("Running post-load package function for "+r[a]);\r
64817 var s=e.callback;\r
64818 for(var t=0;\r
64819 t<s.length;\r
64820 t++){\r
64821 s[t].run()\r
64822 }\r
64823 e.callback.length=0\r
64824 }}\r
64825 if(n){\r
64826 var o=AjxDispatcher._postLoad;\r
64827 if(AjxDispatcher._loadFunctionsEnabled&&o.length){\r
64828 for(var a=0;\r
64829 a<o.length;\r
64830 a++){\r
64831 o[a].run()\r
64832 }}}\r
64833 if(l){\r
64834 return l.run1(h)\r
64835 }};\r
64836 AjxDispatcher._getPackageData=function(e){\r
64837 if(!AjxDispatcher._package[e]){\r
64838 AjxDispatcher._package[e]={\r
64839 callback:[]}\r
64840 }\r
64841 return AjxDispatcher._package[e]\r
64842 };\r
64843         \r
64844 \r
64845 \r
64846 \r
64847 AjxPackage.setBasePath("/zimbra/js");\r
64848 AjxPackage.setExtension("_all.js.zgz");\r
64849 AjxPackage.setQueryString("v=091214175450");\r
64850 \r
64851 AjxTemplate.setBasePath("/zimbra/templates");\r
64852 AjxTemplate.setExtension(".template.js");\r
64853 \r
64854 \r
64855 \r
64856         AjxEnv.DEFAULT_LOCALE = "en_US";\r
64857 \r
64858         function switchToStandardClient() {\r
64859                 document.location = appContextPath + "/?client=standard";\r
64860         }\r
64861         \r
64862         \r
64863                 var enforceMinDisplay = true;\r
64864                 var unsupported = (screen && (screen.width <= 800 && screen.height <= 600) && !false) || (AjxEnv.isSafari && !AjxEnv.isSafari3up);\r
64865                 if (enforceMinDisplay && unsupported) {\r
64866                         switchToStandardClient();\r
64867                 }\r
64868         \r
64869 \r
64870 \r
64871 \r
64872 /**\r
64873  * DO NOT EDIT! This file is generated.\r
64874  * <p>\r
64875  * Any copy of this file checked into source control is merely for\r
64876  * convenience and should not be edited in any way.\r
64877  * <p>\r
64878  * Generated at Sun Sep 26 17:55:17 PDT 2010\r
64879  */\r
64880 AjxTimezoneData = {};\r
64881 \r
64882 AjxTimezoneData.TRANSITION_YEAR = 2010;\r
64883 \r
64884 AjxTimezoneData.TIMEZONE_RULES = [\r
64885         { serverId: "Etc/GMT+12", clientId: "Etc/GMT+12", standard: { offset: -720, tzname: "GMT+12" } },\r
64886         { serverId: "Pacific/Midway", clientId: "Pacific/Midway", standard: { offset: -660, tzname: "SST" } },\r
64887         { serverId: "Pacific/Honolulu", clientId: "Pacific/Honolulu", standard: { offset: -600, tzname: "HST" } },\r
64888         { serverId: "America/Anchorage", clientId: "America/Anchorage",\r
64889           standard: { offset: -540, mon: 11, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 11, 7 ], tzname: "AKST" },\r
64890           daylight: { offset: -480, mon: 3, week: 2, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 14 ], tzname: "AKDT" }\r
64891         },\r
64892         { serverId: "America/Los_Angeles", clientId: "America/Los_Angeles",\r
64893           standard: { offset: -480, mon: 11, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 11, 7 ], tzname: "PST" },\r
64894           daylight: { offset: -420, mon: 3, week: 2, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 14 ], tzname: "PDT" }\r
64895         },\r
64896         { serverId: "America/Tijuana", clientId: "America/Tijuana",\r
64897           standard: { offset: -480, mon: 10, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "PST" },\r
64898           daylight: { offset: -420, mon: 4, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 4, 4 ], tzname: "PDT" }\r
64899         },\r
64900         { serverId: "America/Chihuahua", clientId: "America/Chihuahua",\r
64901           standard: { offset: -420, mon: 10, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "MST" },\r
64902           daylight: { offset: -360, mon: 4, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 4, 4 ], tzname: "MDT" }\r
64903         },\r
64904         { serverId: "America/Denver", clientId: "America/Denver",\r
64905           standard: { offset: -420, mon: 11, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 11, 7 ], tzname: "MST" },\r
64906           daylight: { offset: -360, mon: 3, week: 2, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 14 ], tzname: "MDT" }\r
64907         },\r
64908         { serverId: "America/Phoenix", clientId: "America/Phoenix", standard: { offset: -420, tzname: "MST" } },\r
64909         { serverId: "America/Chicago", clientId: "America/Chicago",\r
64910           standard: { offset: -360, mon: 11, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 11, 7 ], tzname: "CST" },\r
64911           daylight: { offset: -300, mon: 3, week: 2, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 14 ], tzname: "CDT" }\r
64912         },\r
64913         { serverId: "America/Guatemala", clientId: "America/Guatemala", standard: { offset: -360 } },\r
64914         { serverId: "America/Mexico_City", clientId: "America/Mexico_City",\r
64915           standard: { offset: -360, mon: 10, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "CST" },\r
64916           daylight: { offset: -300, mon: 4, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 4, 4 ], tzname: "CDT" }\r
64917         },\r
64918         { serverId: "America/Regina", clientId: "America/Regina", standard: { offset: -360, tzname: "CST" } },\r
64919         { serverId: "America/Bogota", clientId: "America/Bogota", standard: { offset: -300 } },\r
64920         { serverId: "America/Indiana/Indianapolis", clientId: "America/Indiana/Indianapolis",\r
64921           standard: { offset: -300, mon: 11, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 11, 7 ], tzname: "EST" },\r
64922           daylight: { offset: -240, mon: 3, week: 2, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 14 ], tzname: "EDT" }\r
64923         },\r
64924         { serverId: "America/New_York", clientId: "America/New_York",\r
64925           standard: { offset: -300, mon: 11, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 11, 7 ], tzname: "EST" },\r
64926           daylight: { offset: -240, mon: 3, week: 2, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 14 ], tzname: "EDT" }\r
64927         },\r
64928         { serverId: "America/Caracas", clientId: "America/Caracas", standard: { offset: -270, tzname: "VET" } },\r
64929         { serverId: "America/Guyana", clientId: "America/Guyana", standard: { offset: -240, tzname: "GYT" } },\r
64930         { serverId: "America/Halifax", clientId: "America/Halifax",\r
64931           standard: { offset: -240, mon: 11, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 11, 7 ], tzname: "AST" },\r
64932           daylight: { offset: -180, mon: 3, week: 2, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 14 ], tzname: "ADT" }\r
64933         },\r
64934         { serverId: "America/La_Paz", clientId: "America/La_Paz", standard: { offset: -240, tzname: "BOT" } },\r
64935         { serverId: "America/Manaus", clientId: "America/Manaus", standard: { offset: -240, tzname: "AMT" } },\r
64936         { serverId: "America/Santiago", clientId: "America/Santiago",\r
64937           standard: { offset: -240, mon: 3, week: 3, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 3, 21 ], tzname: "CLT" },\r
64938           daylight: { offset: -180, mon: 10, week: 2, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 10, 10 ], tzname: "CLST" }\r
64939         },\r
64940         { serverId: "America/St_Johns", clientId: "America/St_Johns",\r
64941           standard: { offset: -210, mon: 11, week: 1, wkday: 1, hour: 0, min: 1, sec: 0, trans: [ 2010, 11, 7 ], tzname: "NST" },\r
64942           daylight: { offset: -150, mon: 3, week: 2, wkday: 1, hour: 0, min: 1, sec: 0, trans: [ 2010, 3, 14 ], tzname: "NDT" }\r
64943         },\r
64944         { serverId: "America/Argentina/Buenos_Aires", clientId: "America/Argentina/Buenos_Aires", standard: { offset: -180 } },\r
64945         { serverId: "America/Godthab", clientId: "America/Godthab",\r
64946           standard: { offset: -180, mon: 10, week: -1, wkday: 1, hour: 1, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "WGT" },\r
64947           daylight: { offset: -120, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "WGST" }\r
64948         },\r
64949         { serverId: "America/Montevideo", clientId: "America/Montevideo",\r
64950           standard: { offset: -180, mon: 3, week: 2, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 14 ], tzname: "UYT" },\r
64951           daylight: { offset: -120, mon: 10, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 10, 3 ], tzname: "UYST" }\r
64952         },\r
64953         { serverId: "America/Sao_Paulo", clientId: "America/Sao_Paulo",\r
64954           standard: { offset: -180, mon: 2, week: 3, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 2, 21 ], tzname: "BRT" },\r
64955           daylight: { offset: -120, mon: 10, week: 3, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 10, 17 ], tzname: "BRST" }\r
64956         },\r
64957         { serverId: "Atlantic/South_Georgia", clientId: "Atlantic/South_Georgia", standard: { offset: -120, tzname: "GST" } },\r
64958         { serverId: "Atlantic/Azores", clientId: "Atlantic/Azores",\r
64959           standard: { offset: -60, mon: 10, week: -1, wkday: 1, hour: 1, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "AZOT" },\r
64960           daylight: { offset: 0, mon: 3, week: -1, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "AZOST" }\r
64961         },\r
64962         { serverId: "Atlantic/Cape_Verde", clientId: "Atlantic/Cape_Verde", standard: { offset: -60, tzname: "CVT" } },\r
64963         { serverId: "Africa/Casablanca", clientId: "Africa/Casablanca",\r
64964           standard: { offset: 0, mon: 8, week: 3, wkday: 6, hour: 0, min: 0, sec: 0, trans: [ 2010, 8, 20 ], tzname: "WET" },\r
64965           daylight: { offset: 60, mon: 6, week: 1, wkday: 2, hour: 0, min: 0, sec: 0, trans: [ 2010, 6, 7 ], tzname: "WEST" }\r
64966         },\r
64967         { serverId: "Africa/Monrovia", clientId: "Africa/Monrovia", standard: { offset: 0, tzname: "GMT" } },\r
64968         { serverId: "Europe/London", clientId: "Europe/London",\r
64969           standard: { offset: 0, mon: 10, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "GMT/BST" },\r
64970           daylight: { offset: 60, mon: 3, week: -1, wkday: 1, hour: 1, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "GMT/BST" }\r
64971         },\r
64972         { serverId: "Africa/Algiers", clientId: "Africa/Algiers", standard: { offset: 60, tzname: "CET" } },\r
64973         { serverId: "Africa/Windhoek", clientId: "Africa/Windhoek",\r
64974           standard: { offset: 60, mon: 4, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 4, 4 ], tzname: "WAT" },\r
64975           daylight: { offset: 120, mon: 9, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 9, 5 ], tzname: "WAST" }\r
64976         },\r
64977         { serverId: "Europe/Belgrade", clientId: "Europe/Belgrade",\r
64978           standard: { offset: 60, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "CET" },\r
64979           daylight: { offset: 120, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "CEST" }\r
64980         },\r
64981         { serverId: "Europe/Berlin", clientId: "Europe/Berlin",\r
64982           standard: { offset: 60, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "CET" },\r
64983           daylight: { offset: 120, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "CEST" }\r
64984         },\r
64985         { serverId: "Europe/Brussels", clientId: "Europe/Brussels",\r
64986           standard: { offset: 60, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "CET" },\r
64987           daylight: { offset: 120, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "CEST" }\r
64988         },\r
64989         { serverId: "Europe/Warsaw", clientId: "Europe/Warsaw",\r
64990           standard: { offset: 60, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "CET" },\r
64991           daylight: { offset: 120, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "CEST" }\r
64992         },\r
64993         { serverId: "Africa/Cairo", clientId: "Africa/Cairo",\r
64994           standard: { offset: 120, mon: 8, week: 3, wkday: 5, hour: 0, min: 0, sec: 0, trans: [ 2010, 8, 19 ], tzname: "EET" },\r
64995           daylight: { offset: 180, mon: 4, week: -1, wkday: 6, hour: 0, min: 0, sec: 0, trans: [ 2010, 4, 30 ], tzname: "EEST" }\r
64996         },\r
64997         { serverId: "Africa/Harare", clientId: "Africa/Harare", standard: { offset: 120, tzname: "CAT" } },\r
64998         { serverId: "Asia/Amman", clientId: "Asia/Amman",\r
64999           standard: { offset: 120, mon: 10, week: -1, wkday: 6, hour: 1, min: 0, sec: 0, trans: [ 2010, 10, 29 ], tzname: "EET" },\r
65000           daylight: { offset: 180, mon: 3, week: -1, wkday: 5, hour: 23, min: 59, sec: 59, trans: [ 2010, 3, 25 ], tzname: "EEST" }\r
65001         },\r
65002         { serverId: "Asia/Beirut", clientId: "Asia/Beirut",\r
65003           standard: { offset: 120, mon: 10, week: -1, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "EET" },\r
65004           daylight: { offset: 180, mon: 3, week: -1, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "EEST" }\r
65005         },\r
65006         { serverId: "Asia/Jerusalem", clientId: "Asia/Jerusalem",\r
65007           standard: { offset: 120, mon: 9, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 9, 26 ], tzname: "IST" },\r
65008           daylight: { offset: 180, mon: 3, week: -1, wkday: 6, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 26 ], tzname: "IDT" }\r
65009         },\r
65010         { serverId: "Europe/Athens", clientId: "Europe/Athens",\r
65011           standard: { offset: 120, mon: 10, week: -1, wkday: 1, hour: 4, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "EET" },\r
65012           daylight: { offset: 180, mon: 3, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "EEST" }\r
65013         },\r
65014         { serverId: "Europe/Helsinki", clientId: "Europe/Helsinki",\r
65015           standard: { offset: 120, mon: 10, week: -1, wkday: 1, hour: 4, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "EET" },\r
65016           daylight: { offset: 180, mon: 3, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "EEST" }\r
65017         },\r
65018         { serverId: "Europe/Minsk", clientId: "Europe/Minsk",\r
65019           standard: { offset: 120, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "EET" },\r
65020           daylight: { offset: 180, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "EEST" }\r
65021         },\r
65022         { serverId: "Africa/Nairobi", clientId: "Africa/Nairobi", standard: { offset: 180, tzname: "EAT" } },\r
65023         { serverId: "Asia/Baghdad", clientId: "Asia/Baghdad", standard: { offset: 180 } },\r
65024         { serverId: "Asia/Kuwait", clientId: "Asia/Kuwait", standard: { offset: 180, tzname: "AST" } },\r
65025         { serverId: "Europe/Moscow", clientId: "Europe/Moscow",\r
65026           standard: { offset: 180, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "MSK/MSD" },\r
65027           daylight: { offset: 240, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "MSK/MSD" }\r
65028         },\r
65029         { serverId: "Asia/Tehran", clientId: "Asia/Tehran",\r
65030           standard: { offset: 210, mon: 9, week: 4, wkday: 3, hour: 0, min: 0, sec: 0, trans: [ 2010, 9, 28 ], tzname: "IRST" },\r
65031           daylight: { offset: 270, mon: 3, week: 4, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "IRDT" }\r
65032         },\r
65033         { serverId: "Asia/Baku", clientId: "Asia/Baku",\r
65034           standard: { offset: 240, mon: 10, week: -1, wkday: 1, hour: 5, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "AZT" },\r
65035           daylight: { offset: 300, mon: 3, week: -1, wkday: 1, hour: 4, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "AZST" }\r
65036         },\r
65037         { serverId: "Asia/Muscat", clientId: "Asia/Muscat", standard: { offset: 240, tzname: "GST" } },\r
65038         { serverId: "Asia/Tbilisi", clientId: "Asia/Tbilisi", standard: { offset: 240, tzname: "GET" } },\r
65039         { serverId: "Asia/Yerevan", clientId: "Asia/Yerevan",\r
65040           standard: { offset: 240, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "AMT" },\r
65041           daylight: { offset: 300, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "AMST" }\r
65042         },\r
65043         { serverId: "Asia/Kabul", clientId: "Asia/Kabul", standard: { offset: 270, tzname: "AFT" } },\r
65044         { serverId: "Asia/Karachi", clientId: "Asia/Karachi",\r
65045           standard: { offset: 300, mon: 11, week: 1, wkday: 1, hour: 0, min: 0, sec: 0, trans: [ 2010, 11, 7 ], tzname: "PKT" },\r
65046           daylight: { offset: 360, mon: 4, week: 3, wkday: 4, hour: 0, min: 0, sec: 0, trans: [ 2010, 4, 21 ], tzname: "PKST" }\r
65047         },\r
65048         { serverId: "Asia/Tashkent", clientId: "Asia/Tashkent", standard: { offset: 300, tzname: "UZT" } },\r
65049         { serverId: "Asia/Yekaterinburg", clientId: "Asia/Yekaterinburg",\r
65050           standard: { offset: 300, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "YEKT" },\r
65051           daylight: { offset: 360, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "YEKST" }\r
65052         },\r
65053         { serverId: "Asia/Colombo", clientId: "Asia/Colombo", standard: { offset: 330, tzname: "IST" } },\r
65054         { serverId: "Asia/Kolkata", clientId: "Asia/Kolkata", standard: { offset: 330, tzname: "IST" } },\r
65055         { serverId: "Asia/Dhaka", clientId: "Asia/Dhaka", standard: { offset: 360, tzname: "BDT" } },\r
65056         { serverId: "Asia/Novosibirsk", clientId: "Asia/Novosibirsk",\r
65057           standard: { offset: 360, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "NOVT" },\r
65058           daylight: { offset: 420, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "NOVST" }\r
65059         },\r
65060         { serverId: "Asia/Rangoon", clientId: "Asia/Rangoon", standard: { offset: 390, tzname: "MMT" } },\r
65061         { serverId: "Asia/Bangkok", clientId: "Asia/Bangkok", standard: { offset: 420, tzname: "ICT" } },\r
65062         { serverId: "Asia/Krasnoyarsk", clientId: "Asia/Krasnoyarsk",\r
65063           standard: { offset: 420, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "KRAT" },\r
65064           daylight: { offset: 480, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "KRAST" }\r
65065         },\r
65066         { serverId: "Asia/Hong_Kong", clientId: "Asia/Hong_Kong", standard: { offset: 480 } },\r
65067         { serverId: "Asia/Irkutsk", clientId: "Asia/Irkutsk",\r
65068           standard: { offset: 480, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "IRKT" },\r
65069           daylight: { offset: 540, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "IRKST" }\r
65070         },\r
65071         { serverId: "Asia/Kuala_Lumpur", clientId: "Asia/Kuala_Lumpur", standard: { offset: 480, tzname: "MYT" } },\r
65072         { serverId: "Asia/Taipei", clientId: "Asia/Taipei", standard: { offset: 480 } },\r
65073         { serverId: "Australia/Perth", clientId: "Australia/Perth", standard: { offset: 480, tzname: "WST" } },\r
65074         { serverId: "Asia/Seoul", clientId: "Asia/Seoul", standard: { offset: 540 } },\r
65075         { serverId: "Asia/Tokyo", clientId: "Asia/Tokyo", standard: { offset: 540 } },\r
65076         { serverId: "Asia/Yakutsk", clientId: "Asia/Yakutsk",\r
65077           standard: { offset: 540, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "YAKT" },\r
65078           daylight: { offset: 600, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "YAKST" }\r
65079         },\r
65080         { serverId: "Australia/Adelaide", clientId: "Australia/Adelaide",\r
65081           standard: { offset: 570, mon: 4, week: 1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 4, 4 ], tzname: "CST" },\r
65082           daylight: { offset: 630, mon: 10, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 10, 3 ], tzname: "CST" }\r
65083         },\r
65084         { serverId: "Australia/Darwin", clientId: "Australia/Darwin", standard: { offset: 570, tzname: "CST" } },\r
65085         { serverId: "Asia/Vladivostok", clientId: "Asia/Vladivostok",\r
65086           standard: { offset: 600, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "VLAT" },\r
65087           daylight: { offset: 660, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "VLAST" }\r
65088         },\r
65089         { serverId: "Australia/Brisbane", clientId: "Australia/Brisbane", standard: { offset: 600, tzname: "EST" } },\r
65090         { serverId: "Australia/Hobart", clientId: "Australia/Hobart",\r
65091           standard: { offset: 600, mon: 4, week: 1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 4, 4 ], tzname: "EST" },\r
65092           daylight: { offset: 660, mon: 10, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 10, 3 ], tzname: "EST" }\r
65093         },\r
65094         { serverId: "Australia/Sydney", clientId: "Australia/Sydney",\r
65095           standard: { offset: 600, mon: 4, week: 1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 4, 4 ], tzname: "EST" },\r
65096           daylight: { offset: 660, mon: 10, week: 1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 10, 3 ], tzname: "EST" }\r
65097         },\r
65098         { serverId: "Pacific/Guam", clientId: "Pacific/Guam", standard: { offset: 600, tzname: "ChST" } },\r
65099         { serverId: "Asia/Magadan", clientId: "Asia/Magadan",\r
65100           standard: { offset: 660, mon: 10, week: -1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 10, 31 ], tzname: "MAGT" },\r
65101           daylight: { offset: 720, mon: 3, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 3, 28 ], tzname: "MAGST" }\r
65102         },\r
65103         { serverId: "Pacific/Auckland", clientId: "Pacific/Auckland",\r
65104           standard: { offset: 720, mon: 4, week: 1, wkday: 1, hour: 3, min: 0, sec: 0, trans: [ 2010, 4, 4 ], tzname: "NZST" },\r
65105           daylight: { offset: 780, mon: 9, week: -1, wkday: 1, hour: 2, min: 0, sec: 0, trans: [ 2010, 9, 26 ], tzname: "NZDT" }\r
65106         },\r
65107         { serverId: "Pacific/Fiji", clientId: "Pacific/Fiji", standard: { offset: 720 } },\r
65108         { serverId: "Pacific/Tongatapu", clientId: "Pacific/Tongatapu", standard: { offset: 780 } }\r
65109 ];\r
65110 \r
65111 \r
65112 \r
65113 \r
65114 /* Copyright (C) 2005-2009 Zimbra Inc. http://www.zimbra.com/ */\r
65115 if(AjxPackage.define("Startup1_1")){\r
65116 if(AjxPackage.define("ajax.core.AjxCore")){\r
65117 AjxCore=function(){};\r
65118 AjxCore._objectIds=[null];\r
65119 AjxCore.assignId=function(e){\r
65120 var t=AjxCore._objectIds.length;\r
65121 AjxCore._objectIds[t]=e;\r
65122 return t\r
65123 };\r
65124 AjxCore.unassignId=function(e){\r
65125 AjxCore._objectIds[e]=null\r
65126 };\r
65127 AjxCore.objectWithId=function(e){\r
65128 return AjxCore._objectIds[e]\r
65129 };\r
65130 AjxCore.addListener=function(a,e,t){\r
65131 a=AjxCore._getEventSource(a);\r
65132 var o=AjxCore._getListenerStruct(a,e,true);\r
65133 o.list[o.list.length]=t\r
65134 };\r
65135 AjxCore.setEventHandler=function(a,e,t){\r
65136 a=AjxCore._getEventSource(a);\r
65137 var o=AjxCore._getListenerStruct(a,e,true);\r
65138 o.single=t\r
65139 };\r
65140 AjxCore.removeListener=function(n,t,o){\r
65141 n=AjxCore._getEventSource(n);\r
65142 var s=AjxCore._getListenerStruct(n,t);\r
65143 if(s){\r
65144 var r=s.list;\r
65145 var e=r.length;\r
65146 for(var a=0;\r
65147 a<e;\r
65148 a++){\r
65149 if(r[a]==o){\r
65150 r[a]=null\r
65151 }}}};\r
65152 AjxCore.removeAllListeners=function(o,t){\r
65153 o=AjxCore._getEventSource(o);\r
65154 var n=AjxCore._getListenerStruct(o,t);\r
65155 if(n){\r
65156 var s=n.list;\r
65157 var e=s.length;\r
65158 for(var a=0;\r
65159 a<e;\r
65160 a++){\r
65161 s[a]=null\r
65162 }}\r
65163 AjxCore.unassignId(n.id)\r
65164 };\r
65165 AjxCore.notifyListeners=function(a,e,t){\r
65166 a=AjxCore._getEventSource(a);\r
65167 var o=AjxCore._getListenerStruct(a,e);\r
65168 if(o){\r
65169 a[e](t)\r
65170 }};\r
65171 AjxCore._getEventSource=function(e){\r
65172 if(typeof(e)=="string"){\r
65173 e=document.getElementById(e)\r
65174 }\r
65175 return e\r
65176 };\r
65177 AjxCore.getListenerStruct=function(t,e){\r
65178 return AjxCore._getListenerStruct(t,e)\r
65179 };\r
65180 AjxCore._getListenerStruct=function(a,e,t){\r
65181 var o=null;\r
65182 if(a[e]){\r
65183 var n=a[e]._lsListenerStructId;\r
65184 o=AjxCore.objectWithId(n)\r
65185 }else{\r
65186 if(t){\r
65187 o=AjxCore._setupListener(a,e)\r
65188 }}\r
65189 return o\r
65190 };\r
65191 AjxCore._setupListener=function(a,e,n){\r
65192 var o=new Object();\r
65193 o.list=new Array();\r
65194 o.single=null;\r
65195 var n=o.id=AjxCore.assignId(o);\r
65196 var t=AjxCore._createListenerClosure(n);\r
65197 a[e]=t;\r
65198 a[e]._lsListenerStructId=n;\r
65199 return o\r
65200 };\r
65201 AjxCore._createListenerClosure=function(id){\r
65202 var closure=function(arg1){\r
65203 var listenerStruct=AjxCore.objectWithId(id);\r
65204 var listenerList=listenerStruct.list;\r
65205 var len=listenerList.length;\r
65206 for(var i=0;\r
65207 i<len;\r
65208 i++){\r
65209 var callback=listenerList[i];\r
65210 if(callback){\r
65211 if(typeof(callback)=="string"){\r
65212 eval(callback)\r
65213 }else{\r
65214 if(callback.handleEvent){\r
65215 callback.handleEvent(arg1,this)\r
65216 }else{\r
65217 callback(arg1,this)\r
65218 }}}}\r
65219 if(listenerStruct.single){\r
65220 var callback=listenerStruct.single;\r
65221 if(typeof(callback)=="string"){\r
65222 eval(callback)\r
65223 }else{\r
65224 return callback.handleEvent?callback.handleEvent(arg1,this):callback(arg1,this)\r
65225 }}};\r
65226 return closure\r
65227 };\r
65228 AjxCore.addOnloadListener=function(e){\r
65229 if(window.onload&&(!window.onload._lsListenerStructId)){\r
65230 var t=window.onload;\r
65231 window.onload=null;\r
65232 AjxCore.addListener(window,"onload",t)\r
65233 }\r
65234 AjxCore.addListener(window,"onload",e)\r
65235 };\r
65236 AjxCore.addOnunloadListener=function(e){\r
65237 if(window.onunload&&(!window.onunload._lsListenerStructId)){\r
65238 var t=window.onunload;\r
65239 window.onunload=null;\r
65240 AjxCore.addListener(window,"onunload",t)\r
65241 }\r
65242 AjxCore.addListener(window,"onunload",e)\r
65243 }\r
65244 }\r
65245 if(AjxPackage.define("ajax.util.AjxUtil")){\r
65246 AjxUtil=function(){};\r
65247 AjxUtil.FLOAT_RE=/^[+\-]?((\d+(\.\d*)?)|((\d*\.)?\d+))([eE][+\-]?\d+)?$/;\r
65248 AjxUtil.NOTFLOAT_RE=/[^\d\.]/;\r
65249 AjxUtil.NOTINT_RE=/[^0-9]+/;\r
65250 AjxUtil.LIFETIME_FIELD=/^([0-9])+([dhms])?$/;\r
65251 AjxUtil.isSpecified=function(e){\r
65252 return((e!==void 0)&&(e!==null))\r
65253 };\r
65254 AjxUtil.isUndefined=function(e){\r
65255 return(e===void 0)\r
65256 };\r
65257 AjxUtil.isNull=function(e){\r
65258 return(e===null)\r
65259 };\r
65260 AjxUtil.isBoolean=function(e){\r
65261 return(typeof(e)=="boolean")\r
65262 };\r
65263 AjxUtil.isString=function(e){\r
65264 return(typeof(e)=="string")\r
65265 };\r
65266 AjxUtil.isNumber=function(e){\r
65267 return(typeof(e)=="number")\r
65268 };\r
65269 AjxUtil.isObject=function(e){\r
65270 return((typeof(e)=="object")&&(e!==null))\r
65271 };\r
65272 AjxUtil.isArray=function(e){\r
65273 return AjxUtil.isInstance(e,Array)\r
65274 };\r
65275 AjxUtil.isFunction=function(e){\r
65276 return(typeof(e)=="function")\r
65277 };\r
65278 AjxUtil.isDate=function(e){\r
65279 return AjxUtil.isInstance(e,Date)\r
65280 };\r
65281 AjxUtil.isLifeTime=function(e){\r
65282 return AjxUtil.LIFETIME_FIELD.test(e)\r
65283 };\r
65284 AjxUtil.isNumeric=function(e){\r
65285 return(!isNaN(parseFloat(e))&&AjxUtil.FLOAT_RE.test(e)&&!AjxUtil.NOTFLOAT_RE.test(e))\r
65286 };\r
65287 AjxUtil.isLong=function(e){\r
65288 return(AjxUtil.isNumeric(e)&&!AjxUtil.NOTINT_RE.test(e))\r
65289 };\r
65290 AjxUtil.isNonNegativeLong=function(e){\r
65291 return(AjxUtil.isNumeric(e)&&AjxUtil.isLong(e)&&(parseFloat(e)>=0))\r
65292 };\r
65293 AjxUtil.isInt=function(e){\r
65294 return(AjxUtil.isNumeric(e)&&!AjxUtil.NOTINT_RE.test(e))\r
65295 };\r
65296 AjxUtil.isPositiveInt=function(e){\r
65297 return(AjxUtil.isNumeric(e)&&AjxUtil.isInt(e)&&(parseInt(e)>0))\r
65298 };\r
65299 AjxUtil.isEmpty=function(e){\r
65300 return(AjxUtil.isNull(e)||AjxUtil.isUndefined(e)||(e==="")||(AjxUtil.isArray(e)&&(e.length==0)))\r
65301 };\r
65302 AjxUtil.IP_ADDRESS_RE=/^\d{1,3}(\.\d{1,3}){3}(\.\d{1,3}\.\d{1,3})?$/;\r
65303 AjxUtil.IP_ADDRESS_WITH_PORT_RE=/^\d{1,3}(\.\d{1,3}){3}(\.\d{1,3}\.\d{1,3})?:\d{1,5}$/;\r
65304 AjxUtil.SUBNET_RE=/^\d{1,3}(\.\d{1,3}){3}(\.\d{1,3}\.\d{1,3})?\/\d{1,2}$/;\r
65305 AjxUtil.DOMAIN_NAME_SHORT_RE=/^[A-Za-z0-9\-]{2,}$/;\r
65306 AjxUtil.DOMAIN_NAME_FULL_RE=/^[A-Za-z0-9\-]{1,}(\.[A-Za-z0-9\-]{2,}){1,}$/;\r
65307 AjxUtil.HOST_NAME_RE=/^[A-Za-z0-9\-]{2,}(\.[A-Za-z0-9\-]{1,})*(\.[A-Za-z0-9\-]{2,})*$/;\r
65308 AjxUtil.HOST_NAME_WITH_PORT_RE=/^[A-Za-z0-9\-]{2,}(\.[A-Za-z0-9\-]{2,})*:([0-9])+$/;\r
65309 AjxUtil.EMAIL_SHORT_RE=/^[^@\s]+$/;\r
65310 AjxUtil.EMAIL_FULL_RE=/^[^@\s]+@[A-Za-z0-9\-]{2,}(\.[A-Za-z0-9\-]{2,})+$/;\r
65311 AjxUtil.SHORT_URL_RE=/^[A-Za-z0-9]{2,}:\/\/[A-Za-z0-9\-]+(\.[A-Za-z0-9\-]+)*(:([0-9])+)*$/;\r
65312 AjxUtil.IP_SHORT_URL_RE=/^[A-Za-z0-9]{2,}:\/\/\d{1,3}(\.\d{1,3}){3}(\.\d{1,3}\.\d{1,3})?(:([0-9])+)*$/;\r
65313 AjxUtil.isIpAddress=function(e){\r
65314 return AjxUtil.IP_ADDR_RE.test(e)\r
65315 };\r
65316 AjxUtil.isDomain=function(e){\r
65317 return AjxUtil.DOMAIN_RE.test(e)\r
65318 };\r
65319 AjxUtil.isHostName=function(e){\r
65320 return AjxUtil.HOST_NAME_RE.test(e)\r
65321 };\r
65322 AjxUtil.isDomainName=function(t,e){\r
65323 return e?AjxUtil.DOMAIN_NAME_SHORT_RE.test(t):AjxUtil.DOMAIN_NAME_FULL_RE.test(t)\r
65324 };\r
65325 AjxUtil.isEmailAddress=function(t,e){\r
65326 return e?AjxUtil.EMAIL_SHORT_RE.test(t):AjxUtil.EMAIL_FULL_RE.test(t)\r
65327 };\r
65328 AjxUtil.isValidEmailNonReg=function(e){\r
65329 return((e.indexOf("@")>0)&&(e.lastIndexOf("@")==e.indexOf("@"))&&(e.indexOf(".@")<0))\r
65330 };\r
65331 AjxUtil.SIZE_GIGABYTES="GB";\r
65332 AjxUtil.SIZE_MEGABYTES="MB";\r
65333 AjxUtil.SIZE_KILOBYTES="KB";\r
65334 AjxUtil.SIZE_BYTES="B";\r
65335 AjxUtil.formatSize=function(n,o,s){\r
65336 if(o==null){\r
65337 o=true\r
65338 }\r
65339 if(s==null){\r
65340 s=20\r
65341 }\r
65342 var t=AjxMsg.sizeBytes;\r
65343 var a=AjxMsg.SIZE_BYTES;\r
65344 if(n>=1073741824){\r
65345 t=AjxMsg.sizeGigaBytes;\r
65346 a=AjxUtil.SIZE_GIGABYTES\r
65347 }else{\r
65348 if(n>=1048576){\r
65349 t=AjxMsg.sizeMegaBytes;\r
65350 a=AjxUtil.SIZE_MEGABYTES\r
65351 }else{\r
65352 if(n>1023){\r
65353 t=AjxMsg.sizeKiloBytes;\r
65354 a=AjxUtil.SIZE_KILOBYTES\r
65355 }}}\r
65356 var e=AjxUtil.formatSizeForUnits(n,a,o,s);\r
65357 return AjxMessageFormat.format(AjxMsg.formatSizeAndUnits,[e,t])\r
65358 };\r
65359 AjxUtil.formatSizeForUnits=function(o,t,e,s){\r
65360 if(t==null){\r
65361 t=AjxUtil.SIZE_BYTES\r
65362 }\r
65363 if(e==null){\r
65364 e=true\r
65365 }\r
65366 if(s==null){\r
65367 s=20\r
65368 }\r
65369 switch(t){\r
65370 case AjxUtil.SIZE_GIGABYTES:o/=1073741824;\r
65371 break;\r
65372 case AjxUtil.SIZE_MEGABYTES:o/=1048576;\r
65373 break;\r
65374 case AjxUtil.SIZE_KILOBYTES:o/=1024;\r
65375 break\r
65376 }\r
65377 var n=I18nMsg.formatNumber.replace(/\..*$/,"");\r
65378 n=n.replace(/,/,"");\r
65379 if(!e&&s){\r
65380 n=n+=".";\r
65381 for(var a=0;\r
65382 a<s;\r
65383 a++){\r
65384 n+="#"\r
65385 }}\r
65386 return AjxNumberFormat.format(n,o)\r
65387 };\r
65388 AjxUtil.parseSize=function(t,o){\r
65389 if(typeof t!=_STRING_){\r
65390 t=t.toString()\r
65391 }\r
65392 var n=parseFloat(t.replace(/^\s*/,""));\r
65393 var a=/[GMK]?B$/i;\r
65394 var e=a.exec(t);\r
65395 if(e){\r
65396 o=e[0].toUpperCase()\r
65397 }\r
65398 switch(o){\r
65399 case AjxUtil.SIZE_GIGABYTES:n*=1073741824;\r
65400 break;\r
65401 case AjxUtil.SIZE_MEGABYTES:n*=1048576;\r
65402 break;\r
65403 case AjxUtil.SIZE_KILOBYTES:n*=1024;\r
65404 break\r
65405 }\r
65406 return n\r
65407 };\r
65408 AjxUtil.isInstance=function(e,t){\r
65409 return !!(e&&e.constructor&&(e.constructor===t))\r
65410 };\r
65411 AjxUtil.assert=function(e,t){\r
65412 if(!e&&AjxUtil.onassert){\r
65413 AjxUtil.onassert(t)\r
65414 }};\r
65415 AjxUtil.onassert=function(t){\r
65416 var c=new Object();\r
65417 c.message=t;\r
65418 var d=new Array();\r
65419 if(AjxEnv.isIE5_5up){\r
65420 var o=arguments.caller;\r
65421 while(o){\r
65422 d[d.length]=o.callee;\r
65423 o=o.caller\r
65424 }}else{\r
65425 try{\r
65426 var o=arguments.callee.caller;\r
65427 while(o){\r
65428 d[d.length]=o;\r
65429 if(d.length>2){\r
65430 break\r
65431 }\r
65432 o=o.caller\r
65433 }}\r
65434 catch(h){}}\r
65435 c.stack=d;\r
65436 var r="";\r
65437 var a=170;\r
65438 for(var n=1;\r
65439 n<d.length;\r
65440 n++){\r
65441 if(n>1){\r
65442 r+="\n"\r
65443 }\r
65444 if(n<11){\r
65445 var s=d[n].toString();\r
65446 if(s.length>a){\r
65447 s=s.substr(0,a)+"...";\r
65448 s=s.replace(/\n/g,"")\r
65449 }\r
65450 r+=n+": "+s\r
65451 }else{\r
65452 r+="("+(d.length-11)+" frames follow)";\r
65453 break\r
65454 }}\r
65455 alert("assertion:\n\n"+t+"\n\n---- Call Stack ---\n"+r);\r
65456 throw c\r
65457 };\r
65458 AjxUtil.ELEMENT_NODE=1;\r
65459 AjxUtil.TEXT_NODE=3;\r
65460 AjxUtil.DOCUMENT_NODE=9;\r
65461 AjxUtil.getInnerText=function(e){\r
65462 if(AjxEnv.isIE){\r
65463 return e.innerText\r
65464 }\r
65465 function t(s){\r
65466 if(s){\r
65467 if(s.nodeType==3){\r
65468 return s.data\r
65469 }\r
65470 if(s.nodeType==1){\r
65471 if(/^br$/i.test(s.tagName)){\r
65472 return"\r\n"\r
65473 }\r
65474 var o="";\r
65475 for(var a=s.firstChild;\r
65476 a;\r
65477 a=a.nextSibling){\r
65478 o+=t(a)\r
65479 }\r
65480 return o\r
65481 }}\r
65482 return""\r
65483 }\r
65484 return t(e)\r
65485 };\r
65486 AjxUtil.createProxy=function(a,r){\r
65487 var n;\r
65488 var t=function(){};\r
65489 t.prototype=a;\r
65490 if(a instanceof Array){\r
65491 n=new Array();\r
65492 var o=a.length;\r
65493 for(var e=0;\r
65494 e<o;\r
65495 e++){\r
65496 n[e]=a[e]\r
65497 }}else{\r
65498 n=new t\r
65499 }\r
65500 if(r){\r
65501 for(var s in a){\r
65502 if(typeof a[s]=="object"&&a[s]!==null){\r
65503 n[s]=AjxUtil.createProxy(a[s],r-1)\r
65504 }}}\r
65505 n._object_=a;\r
65506 return n\r
65507 };\r
65508 AjxUtil.collapseList=function(a){\r
65509 var t=[];\r
65510 for(var e=0;\r
65511 e<a.length;\r
65512 e++){\r
65513 if(a[e]){\r
65514 t.push(a[e])\r
65515 }}\r
65516 return t\r
65517 };\r
65518 AjxUtil.arrayAsHash=function(r,o){\r
65519 var s={};\r
65520 var a=typeof o=="function"&&o;\r
65521 var n=o||true;\r
65522 for(var t=0;\r
65523 t<r.length;\r
65524 t++){\r
65525 var e=r[t];\r
65526 s[e]=a?a(e,s,t,r):n\r
65527 }\r
65528 return s\r
65529 };\r
65530 AjxUtil.arrayAdd=function(a,t,e){\r
65531 if(e==null||e<0||e>=a.length){\r
65532 a.push(t)\r
65533 }else{\r
65534 a.splice(e,0,t)\r
65535 }};\r
65536 AjxUtil.arrayRemove=function(a,t){\r
65537 for(var e=0;\r
65538 e<a.length;\r
65539 e++){\r
65540 if(a[e]==t){\r
65541 a.splice(e,1);\r
65542 return true\r
65543 }}\r
65544 return false\r
65545 };\r
65546 AjxUtil.indexOf=function(n,t,e){\r
65547 if(n){\r
65548 for(var a=0;\r
65549 a<n.length;\r
65550 a++){\r
65551 var o=n[a];\r
65552 if((e&&o===t)||(!e&&o==t)){\r
65553 return a\r
65554 }}}\r
65555 return -1\r
65556 };\r
65557 AjxUtil.keys=function(t,e){\r
65558 var a=[];\r
65559 for(var o in t){\r
65560 if(e&&!e(o,t)){\r
65561 continue\r
65562 }\r
65563 a.push(o)\r
65564 }\r
65565 return a\r
65566 };\r
65567 AjxUtil.values=function(a,t){\r
65568 var e=[];\r
65569 for(var o in a){\r
65570 if(t&&!t(o,a)){\r
65571 continue\r
65572 }\r
65573 e.push(a[o])\r
65574 }\r
65575 return e\r
65576 };\r
65577 AjxUtil.map=function(o,a){\r
65578 var e=new Array(o.length);\r
65579 for(var t=0;\r
65580 t<o.length;\r
65581 t++){\r
65582 e[t]=a?a(o[t]):o[t]\r
65583 }\r
65584 return e\r
65585 };\r
65586 AjxUtil.uniq=function(a){\r
65587 var e={};\r
65588 for(var t=0;\r
65589 t<a.length;\r
65590 t++){\r
65591 e[a[t]]=true\r
65592 }\r
65593 return AjxUtil.keys(e)\r
65594 };\r
65595 AjxUtil.concat=function(t){\r
65596 var a=[];\r
65597 for(var e=0;\r
65598 e<arguments.length;\r
65599 e++){\r
65600 a.push.apply(a,arguments[e])\r
65601 }\r
65602 return a\r
65603 };\r
65604 AjxUtil.union=function(e){\r
65605 var t=[];\r
65606 return AjxUtil.uniq(t.concat.apply(t,arguments))\r
65607 };\r
65608 AjxUtil.intersection=function(t){\r
65609 var o=AjxUtil.concat.apply(this,arguments);\r
65610 var e=AjxUtil.arrayAsHash(o,AjxUtil.__intersection_count);\r
65611 for(var a in e){\r
65612 if(e[a]==1){\r
65613 delete e[a]\r
65614 }}\r
65615 return AjxUtil.keys(e)\r
65616 };\r
65617 AjxUtil.__intersection_count=function(t,a,e,o){\r
65618 return a[t]!=null?a[t]+1:1\r
65619 };\r
65620 AjxUtil.complement=function(o,t){\r
65621 var a=AjxUtil.arrayAsHash(o);\r
65622 var e=AjxUtil.arrayAsHash(t);\r
65623 for(var n in e){\r
65624 if(n in a){\r
65625 delete e[n]\r
65626 }}\r
65627 return AjxUtil.keys(e)\r
65628 };\r
65629 AjxUtil.getFirstElement=function(n,o,a,t){\r
65630 for(var s=n.firstChild;\r
65631 s;\r
65632 s=s.nextSibling){\r
65633 if(s.nodeType!=AjxUtil.ELEMENT_NODE){\r
65634 continue\r
65635 }\r
65636 if(o&&s.nodeName!=o){\r
65637 continue\r
65638 }\r
65639 if(a){\r
65640 var e=s.getAttributeNode(a);\r
65641 if(e.nodeName!=a){\r
65642 continue\r
65643 }\r
65644 if(t&&e.nodeValue!=t){\r
65645 continue\r
65646 }}\r
65647 return s\r
65648 }\r
65649 return null\r
65650 };\r
65651 AjxUtil.formatUrl=function(s){\r
65652 s=s||{};\r
65653 var a=[];\r
65654 var o=0;\r
65655 if(!s.relative){\r
65656 var n=s.protocol||location.protocol;\r
65657 if(n.indexOf(":")==-1){\r
65658 n=n+":"\r
65659 }\r
65660 a[o++]=n;\r
65661 a[o++]="//";\r
65662 a[o++]=s.host||location.hostname;\r
65663 var t=Number(s.port||location.port);\r
65664 if(t&&((n==ZmSetting.PROTO_HTTP&&t!=ZmSetting.HTTP_DEFAULT_PORT)||(n==ZmSetting.PROTO_HTTPS&&t!=ZmSetting.HTTPS_DEFAULT_PORT))){\r
65665 a[o++]=":";\r
65666 a[o++]=t\r
65667 }}\r
65668 a[o++]=s.path||location.pathname;\r
65669 var e="";\r
65670 if(s.qsArgs){\r
65671 e=AjxStringUtil.queryStringSet(s.qsArgs,s.qsReset)\r
65672 }else{\r
65673 e=s.qsReset?"":location.search\r
65674 }\r
65675 a[o++]=e;\r
65676 return a.join("")\r
65677 };\r
65678 AjxUtil.byNumber=function(t,e){\r
65679 return Number(t)-Number(e)\r
65680 };\r
65681 AjxUtil.LOG={};\r
65682 AjxUtil.enableLogType=function(t,e){\r
65683 if(e){\r
65684 AjxUtil.LOG[t]=[];\r
65685 AjxUtil.LOG[t].push("Log type: "+t)\r
65686 }else{\r
65687 AjxUtil.LOG[t]=null\r
65688 }};\r
65689 AjxUtil.log=function(e,t){\r
65690 if(!AjxUtil.LOG[e]){\r
65691 return\r
65692 }\r
65693 AjxUtil.LOG[e].push(t)\r
65694 };\r
65695 AjxUtil.mergeArrays=function(h,n,e){\r
65696 if(!e){\r
65697 e=function(u,d){\r
65698 if(u>d){\r
65699 return 1\r
65700 }\r
65701 if(u<d){\r
65702 return -1\r
65703 }\r
65704 if(u==d){\r
65705 return 0\r
65706 }}\r
65707 }\r
65708 var c=[];\r
65709 var o=h.length;\r
65710 for(var t=0;\r
65711 t<o;\r
65712 t++){\r
65713 c.push(h[t])\r
65714 }\r
65715 var s=[];\r
65716 var a=n.length;\r
65717 for(var t=0;\r
65718 t<a;\r
65719 t++){\r
65720 s.push(n[t])\r
65721 }\r
65722 var r=[];\r
65723 while(c.length>0&&s.length>0){\r
65724 if(e(c[0],r[r.length-1])==0){\r
65725 c.shift();\r
65726 continue\r
65727 }\r
65728 if(e(s[0],r[r.length-1])==0){\r
65729 s.shift();\r
65730 continue\r
65731 }\r
65732 if(e(c[0],s[0])<0){\r
65733 r.push(c.shift())\r
65734 }else{\r
65735 if(e(c[0],s[0])==0){\r
65736 r.push(c.shift());\r
65737 s.shift()\r
65738 }else{\r
65739 r.push(s.shift())\r
65740 }}}\r
65741 while(c.length>0){\r
65742 if(e(c[0],r[r.length-1])==0){\r
65743 c.shift();\r
65744 continue\r
65745 }\r
65746 r.push(c.shift())\r
65747 }\r
65748 while(s.length>0){\r
65749 if(e(s[0],r[r.length-1])==0){\r
65750 s.shift();\r
65751 continue\r
65752 }\r
65753 r.push(s.shift())\r
65754 }\r
65755 return r\r
65756 };\r
65757 AjxUtil.arraySubstract=function(h,n,e){\r
65758 if(!e){\r
65759 e=function(u,d){\r
65760 if(u>d){\r
65761 return 1\r
65762 }\r
65763 if(u<d){\r
65764 return -1\r
65765 }\r
65766 if(u==d){\r
65767 return 0\r
65768 }}\r
65769 }\r
65770 var c=[];\r
65771 var o=h.length;\r
65772 for(var t=0;\r
65773 t<o;\r
65774 t++){\r
65775 c.push(h[t])\r
65776 }\r
65777 var s=[];\r
65778 var a=n.length;\r
65779 for(var t=0;\r
65780 t<a;\r
65781 t++){\r
65782 s.push(n[t])\r
65783 }\r
65784 s.sort(e);\r
65785 c.sort(e);\r
65786 var r=[];\r
65787 while(c.length>0&&s.length>0){\r
65788 if(e(c[0],s[0])==0){\r
65789 c.shift();\r
65790 s.shift();\r
65791 continue\r
65792 }\r
65793 if(e(c[0],s[0])<0){\r
65794 r.push(c.shift());\r
65795 continue\r
65796 }\r
65797 if(e(c[0],s[0])>0){\r
65798 s.shift();\r
65799 continue\r
65800 }}\r
65801 while(c.length>0){\r
65802 r.push(c.shift())\r
65803 }\r
65804 return r\r
65805 };\r
65806 AjxUtil.getHashKeys=function(a){\r
65807 var t=[];\r
65808 for(var e in a){\r
65809 t.push(e)\r
65810 }\r
65811 t.sort();\r
65812 return t\r
65813 };\r
65814 AjxUtil.arrayCompare=function(t,e){\r
65815 if((!t||!e)&&(t!=e)){\r
65816 return false\r
65817 }\r
65818 if(t.length!=e.length){\r
65819 return false\r
65820 }\r
65821 for(var a=0;\r
65822 a<t.length;\r
65823 a++){\r
65824 if(t[a]!=e[a]){\r
65825 return false\r
65826 }}\r
65827 return true\r
65828 };\r
65829 AjxUtil.hashCompare=function(n,o){\r
65830 var t=AjxUtil.getHashKeys(n);\r
65831 var e=AjxUtil.getHashKeys(o);\r
65832 if(!AjxUtil.arrayCompare(t,e)){\r
65833 return false\r
65834 }\r
65835 for(var a in t){\r
65836 if(n[a]!=o[a]){\r
65837 return false\r
65838 }}\r
65839 return true\r
65840 };\r
65841 AjxUtil.hashCopy=function(t){\r
65842 var a={};\r
65843 for(var e in t){\r
65844 a[e]=t[e]\r
65845 }\r
65846 return a\r
65847 };\r
65848 AjxUtil.toArray=function(e){\r
65849 return(e instanceof Array)?e:(e===undefined)?[]:[e]\r
65850 }\r
65851 }\r
65852 if(AjxPackage.define("ajax.core.AjxException")){\r
65853 AjxException=function(a,t,o,e){\r
65854 if(arguments.length==0){\r
65855 return\r
65856 }\r
65857 this.msg=a;\r
65858 this.code=t;\r
65859 this.method=o;\r
65860 this.detail=e\r
65861 };\r
65862 AjxException.prototype.toString=function(){\r
65863 return"AjxException"\r
65864 };\r
65865 AjxException.prototype.dump=function(){\r
65866 return"AjxException: msg="+this.msg+" code="+this.code+" method="+this.method+" detail="+this.detail\r
65867 };\r
65868 AjxException.INVALIDPARENT="AjxException.INVALIDPARENT";\r
65869 AjxException.INVALID_OP="AjxException.INVALID_OP";\r
65870 AjxException.INTERNAL_ERROR="AjxException.INTERNAL_ERROR";\r
65871 AjxException.INVALID_PARAM="AjxException.INVALID_PARAM";\r
65872 AjxException.UNIMPLEMENTED_METHOD="AjxException.UNIMPLEMENTED_METHOD";\r
65873 AjxException.NETWORK_ERROR="AjxException.NETWORK_ERROR";\r
65874 AjxException.OUT_OF_RPC_CACHE="AjxException.OUT_OF_RPC_CACHE";\r
65875 AjxException.UNSUPPORTED="AjxException.UNSUPPORTED";\r
65876 AjxException.UNKNOWN_ERROR="AjxException.UNKNOWN_ERROR";\r
65877 AjxException.CANCELED="AjxException.CANCELED"\r
65878 }\r
65879 if(AjxPackage.define("ajax.util.AjxCookie")){\r
65880 AjxCookie=function(){};\r
65881 AjxCookie.prototype.toString=function(){\r
65882 return"AjxCookie"\r
65883 };\r
65884 AjxCookie.getCookie=function(h,t){\r
65885 var c=t+"=";\r
65886 var o=c.length;\r
65887 var r=h.cookie.length;\r
65888 var a=h.cookie;\r
65889 var s=0;\r
65890 while(s<r){\r
65891 var n=s+o;\r
65892 if(a.substring(s,n)==c){\r
65893 var e=a.indexOf(";",n);\r
65894 if(e==-1){\r
65895 e=a.length\r
65896 }\r
65897 return unescape(a.substring(n,e))\r
65898 }\r
65899 s=a.indexOf(" ",s)+1;\r
65900 if(s==0){\r
65901 break\r
65902 }}\r
65903 return null\r
65904 };\r
65905 AjxCookie.setCookie=function(r,t,o,e,s,a,n){\r
65906 r.cookie=t+"="+escape(o)+((e)?"; expires="+e.toGMTString():"")+((s)?"; path="+s:"")+((a)?"; domain="+a:"")+((n)?"; secure":"")\r
65907 };\r
65908 AjxCookie.deleteCookie=function(o,e,a,t){\r
65909 o.cookie=e+"="+((a)?"; path="+a:"")+((t)?"; domain="+t:"")+"; expires=Fri, 31 Dec 1999 23:59:59 GMT"\r
65910 };\r
65911 AjxCookie.areCookiesEnabled=function(o){\r
65912 var e="ZM_COOKIE_TEST";\r
65913 var a="Zimbra";\r
65914 AjxCookie.setCookie(o,e,a);\r
65915 var t=AjxCookie.getCookie(o,e);\r
65916 AjxCookie.deleteCookie(o,e);\r
65917 return t==a\r
65918 }\r
65919 }\r
65920 if(AjxPackage.define("ajax.soap.AjxSoapException")){\r
65921 AjxSoapException=function(a,t,o,e){\r
65922 AjxException.call(this,a,t,o,e)\r
65923 };\r
65924 AjxSoapException.prototype.toString=function(){\r
65925 return"AjxSoapException"\r
65926 };\r
65927 AjxSoapException.prototype=new AjxException;\r
65928 AjxSoapException.prototype.constructor=AjxSoapException;\r
65929 AjxSoapException.INTERNAL_ERROR="INTERNAL_ERROR";\r
65930 AjxSoapException.INVALID_PDU="INVALID_PDU";\r
65931 AjxSoapException.ELEMENT_EXISTS="ELEMENT_EXISTS"\r
65932 }\r
65933 if(AjxPackage.define("ajax.soap.AjxSoapFault")){\r
65934 AjxSoapFault=function(t){\r
65935 if(arguments.length==0){\r
65936 return\r
65937 }\r
65938 var r=t.prefix;\r
65939 var s=r+":Code";\r
65940 var n=r+":Reason";\r
65941 var a=r+":Detail";\r
65942 var h=t.childNodes.length;\r
65943 for(var o=0;\r
65944 o<h;\r
65945 o++){\r
65946 var e=t.childNodes[o];\r
65947 if(e.nodeName==s){\r
65948 var c=e.firstChild.firstChild.nodeValue;\r
65949 if(c==(r+":VersionMismatch")){\r
65950 this.faultCode=AjxSoapFault.VERSION_MISMATCH\r
65951 }else{\r
65952 if(c==(r+":MustUnderstand")){\r
65953 this.faultCode=AjxSoapFault.MUST_UNDERSTAND\r
65954 }else{\r
65955 if(c==(r+":DataEncodingUnknown")){\r
65956 this.faultCode=AjxSoapFault.DATA_ENCODING_UNKNOWN\r
65957 }else{\r
65958 if(c==(r+":Sender")){\r
65959 this.faultCode=AjxSoapFault.SENDER\r
65960 }else{\r
65961 if(c==(r+":Receiver")){\r
65962 this.faultCode=AjxSoapFault.RECEIVER\r
65963 }else{\r
65964 this.faultCode=AjxSoapFault.UNKNOWN\r
65965 }}}}}}else{\r
65966 if(e.nodeName==n){\r
65967 this.reason=e.firstChild.firstChild.nodeValue\r
65968 }else{\r
65969 if(e.nodeName==a){\r
65970 this.errorCode=e.firstChild.firstChild.firstChild.nodeValue\r
65971 }}}}};\r
65972 AjxSoapFault.prototype.toString=function(){\r
65973 return"AjxSoapFault"\r
65974 };\r
65975 AjxSoapFault.SENDER=-1;\r
65976 AjxSoapFault.RECEIVER=-2;\r
65977 AjxSoapFault.VERSION_MISMATCH=-3;\r
65978 AjxSoapFault.MUST_UNDERSTAND=-4;\r
65979 AjxSoapFault.DATA_ENCODING_UNKNOWN=-5;\r
65980 AjxSoapFault.UNKNOWN=-6\r
65981 }\r
65982 if(AjxPackage.define("ajax.soap.AjxSoapDoc")){\r
65983 AjxSoapDoc=function(){\r
65984 this._soapURI=AjxSoapDoc._SOAP_URI\r
65985 };\r
65986 AjxSoapDoc.prototype.toString=function(){\r
65987 return"AjxSoapDoc"\r
65988 };\r
65989 AjxSoapDoc._SOAP_URI="http://www.w3.org/2003/05/soap-envelope";\r
65990 AjxSoapDoc._XMLNS_URI="http://www.w3.org/2000/xmlns";\r
65991 AjxSoapDoc.create=function(e,a,h,r){\r
65992 var s=new AjxSoapDoc();\r
65993 s._xmlDoc=AjxXmlDoc.create();\r
65994 var n=s._xmlDoc.getDoc();\r
65995 if(!r){\r
65996 r=AjxSoapDoc._SOAP_URI\r
65997 }\r
65998 s._soapURI=r;\r
65999 var t=n.createElementNS&&!AjxEnv.isSafari;\r
66000 var o=t?n.createElementNS(r,"soap:Envelope"):n.createElement("soap:Envelope");\r
66001 if(!t){\r
66002 o.setAttribute("xmlns:soap",r)\r
66003 }\r
66004 n.appendChild(o);\r
66005 var c=t?n.createElementNS(r,"soap:Body"):n.createElement("soap:Body");\r
66006 o.appendChild(c);\r
66007 s._methodEl=a&&t?n.createElementNS(a,e):n.createElement(e);\r
66008 if(a!=null&&!t){\r
66009 if(h==null){\r
66010 s._methodEl.setAttribute("xmlns",a)\r
66011 }else{\r
66012 s._methodEl.setAttribute("xmlns:"+h,a)\r
66013 }}\r
66014 c.appendChild(s._methodEl);\r
66015 return s\r
66016 };\r
66017 AjxSoapDoc.createFromDom=function(t){\r
66018 var e=new AjxSoapDoc();\r
66019 e._xmlDoc=AjxXmlDoc.createFromDom(t);\r
66020 e._methodEl=e._check(e._xmlDoc);\r
66021 return e\r
66022 };\r
66023 AjxSoapDoc.createFromXml=function(e){\r
66024 var t=new AjxSoapDoc();\r
66025 t._xmlDoc=AjxXmlDoc.createFromXml(e);\r
66026 t._methodEl=t._check(t._xmlDoc);\r
66027 return t\r
66028 };\r
66029 AjxSoapDoc.element2FaultObj=function(t){\r
66030 var e=t.firstChild;\r
66031 if(!AjxEnv.isSafari){\r
66032 if(e!=null&&e.namespaceURI!=AjxSoapDoc._SOAP_URI||e.nodeName!=(t.prefix+":Fault")){\r
66033 return null\r
66034 }}else{\r
66035 if(e!=null&&e.nodeName!=(t.prefix+":Fault")){\r
66036 return null\r
66037 }}\r
66038 return new AjxSoapFault(e)\r
66039 };\r
66040 AjxSoapDoc.prototype.setMethodAttribute=function(e,t){\r
66041 this._methodEl.setAttribute(e,t)\r
66042 };\r
66043 AjxSoapDoc.prototype.set=function(t,c,d,n){\r
66044 var h=this.getDoc();\r
66045 var e=h.createElementNS&&!AjxEnv.isSafari;\r
66046 var a=t?(n&&e?h.createElementNS(n,t):h.createElement(t)):h.createDocumentFragment();\r
66047 if(n&&!e){\r
66048 a.setAttribute("xmlns",n)\r
66049 }\r
66050 if(c!=null){\r
66051 if(typeof c=="object"){\r
66052 for(var r in c){\r
66053 var o=c[r];\r
66054 if(r.charAt(0)=="!"){\r
66055 a.setAttribute(r.substr(1),o)\r
66056 }else{\r
66057 if(o instanceof Array){\r
66058 for(var s=0;\r
66059 s<o.length;\r
66060 ++s){\r
66061 this.set(r,o[s],a)\r
66062 }}else{\r
66063 this.set(r,o,a)\r
66064 }}}}else{\r
66065 a.appendChild(h.createTextNode(c))\r
66066 }}\r
66067 if(!d){\r
66068 d=this._methodEl\r
66069 }\r
66070 return d.appendChild(a)\r
66071 };\r
66072 AjxSoapDoc.prototype.getMethod=function(){\r
66073 return this._methodEl\r
66074 };\r
66075 AjxSoapDoc.prototype.createHeaderElement=function(){\r
66076 var a=this._xmlDoc.getDoc();\r
66077 var t=a.firstChild;\r
66078 var o=this.getHeader();\r
66079 if(o!=null){\r
66080 throw new AjxSoapException("SOAP header already exists",AjxSoapException.ELEMENT_EXISTS,"AjxSoapDoc.prototype.createHeaderElement")\r
66081 }\r
66082 var e=a.createElementNS&&!AjxEnv.isSafari;\r
66083 o=e?a.createElementNS(this._soapURI,"soap:Header"):a.createElement("soap:Header");\r
66084 t.insertBefore(o,t.firstChild);\r
66085 return o\r
66086 };\r
66087 AjxSoapDoc.prototype.getHeader=function(){\r
66088 var t=this._xmlDoc.getDoc();\r
66089 var e=AjxEnv.isIE?(t.getElementsByTagName(t.firstChild.prefix+":Header")):(t.getElementsByTagNameNS(this._soapURI,"Header"));\r
66090 return e?e[0]:null\r
66091 };\r
66092 AjxSoapDoc.prototype.getBody=function(){\r
66093 var t=this._xmlDoc.getDoc();\r
66094 var e=AjxEnv.isIE?(t.getElementsByTagName(t.firstChild.prefix+":Body")):(t.getElementsByTagNameNS(this._soapURI,"Body"));\r
66095 return e?e[0]:null\r
66096 };\r
66097 AjxSoapDoc.prototype.getByTagName=function(t){\r
66098 if(t.indexOf(":")==-1){\r
66099 t="soap:"+t\r
66100 }\r
66101 var e=this.getDoc().getElementsByTagName(t);\r
66102 if(e.length==1){\r
66103 return e[0]\r
66104 }else{\r
66105 if(e.length>0){\r
66106 return e\r
66107 }else{\r
66108 return null\r
66109 }}};\r
66110 AjxSoapDoc.prototype.ensureHeader=function(){\r
66111 return(this.getHeader()||this.createHeaderElement())\r
66112 };\r
66113 AjxSoapDoc.prototype.getDoc=function(){\r
66114 return this._xmlDoc.getDoc()\r
66115 };\r
66116 AjxSoapDoc.prototype.adoptNode=function(t){\r
66117 if(AjxEnv.isFirefox3up||!AjxEnv.isFirefox){\r
66118 try{\r
66119 var a=this.getDoc();\r
66120 if(a.adoptNode){\r
66121 return a.adoptNode(t,true)\r
66122 }}\r
66123 catch(e){}}\r
66124 return t.parentNode.removeChild(t)\r
66125 };\r
66126 AjxSoapDoc.prototype.getXml=function(){\r
66127 return AjxEnv.isSafari||AjxEnv.isOpera?(AjxXmlDoc.getXml(this._xmlDoc.getDoc())):AjxXmlDoc.replaceInvalidChars(this._xmlDoc.getDoc().xml)\r
66128 };\r
66129 AjxSoapDoc.prototype._check=function(t){\r
66130 var a=t.getDoc();\r
66131 if(a.childNodes.length!=1){\r
66132 throw new AjxSoapException("Invalid SOAP PDU",AjxSoapException.INVALID_PDU,"AjxSoapDoc.createFromXml:1")\r
66133 }\r
66134 var e=a.firstChild;\r
66135 if(!AjxEnv.isSafari){\r
66136 if(e.namespaceURI!=AjxSoapDoc._SOAP_URI||e.nodeName!=(e.prefix+":Envelope")||(e.childNodes.length<1||e.childNodes.length>2)){\r
66137 throw new AjxSoapException("Invalid SOAP PDU",AjxSoapException.INVALID_PDU,"AjxSoapDoc.createFromXml:2")\r
66138 }}else{\r
66139 if(e.nodeName!=(e.prefix+":Envelope")){\r
66140 throw new AjxSoapException("Invalid SOAP PDU",AjxSoapException.INVALID_PDU,"AjxSoapDoc.createFromXml:2")\r
66141 }}}\r
66142 }\r
66143 if(AjxPackage.define("ajax.net.AjxRpcRequest")){\r
66144 AjxRpcRequest=function(e){\r
66145 if(!AjxRpcRequest.__inited){\r
66146 AjxRpcRequest.__init()\r
66147 }\r
66148 this.id=e;\r
66149 this.__httpReq=AjxRpcRequest.__msxmlVers?(new ActiveXObject(AjxRpcRequest.__msxmlVers)):(new XMLHttpRequest())\r
66150 };\r
66151 AjxRpcRequest.TIMEDOUT=-1000;\r
66152 AjxRpcRequest.__inited=false;\r
66153 AjxRpcRequest.__msxmlVers=null;\r
66154 AjxRpcRequest.prototype.toString=function(){\r
66155 return"AjxRpcRequest"\r
66156 };\r
66157 AjxRpcRequest.prototype.invoke=function(a,t,s,d,h,r){\r
66158 var e=(d!=null);\r
66159 this.__httpReq.open((h)?"get":"post",t,e);\r
66160 if(e){\r
66161 if(r){\r
66162 var o=new AjxTimedAction(this,this.__handleTimeout,[d]);\r
66163 d._timedActionId=AjxTimedAction.scheduleAction(o,r)\r
66164 }\r
66165 var c=this;\r
66166 this.__httpReq.onreadystatechange=function(u){\r
66167 if(window.AjxRpcRequest){\r
66168 AjxRpcRequest.__handleResponse(c,d)\r
66169 }}\r
66170 }else{\r
66171 this.__httpReq.onreadystatechange=function(u){}\r
66172 }\r
66173 if(s){\r
66174 for(var n in s){\r
66175 this.__httpReq.setRequestHeader(n,s[n])\r
66176 }}\r
66177 this.__httpReq.send(a);\r
66178 if(e){\r
66179 return this.id\r
66180 }else{\r
66181 if(this.__httpReq.status==200||this.__httpReq.status==201){\r
66182 return{\r
66183 text:this.__httpReq.responseText,xml:this.__httpReq.responseXML,success:true}\r
66184 }else{\r
66185 return{\r
66186 text:this.__httpReq.responseText,xml:this.__httpReq.responseXML,success:false,status:this.__httpReq.status}\r
66187 }}};\r
66188 \r
66189 AjxRpcRequest.prototype.cancel=function(){\r
66190 AjxRpc.freeRpcCtxt(this);\r
66191 this.__httpReq.abort()\r
66192 };\r
66193 AjxRpcRequest.prototype.__handleTimeout=function(e){\r
66194 this.cancel();\r
66195 e.run({\r
66196 text:null,xml:null,success:false,status:AjxRpcRequest.TIMEDOUT}\r
66197 )\r
66198 };\r
66199 AjxRpcRequest.__handleResponse=function(a,o){\r
66200 if(!a||!a.__httpReq){\r
66201 a.cancel();\r
66202 o.run({\r
66203 text:null,xml:null,success:false,status:500}\r
66204 );\r
66205 return\r
66206 }\r
66207 if(a.__httpReq.readyState==4){\r
66208 if(o._timedActionId!==null){\r
66209 AjxTimedAction.cancelAction(o._timedActionId)\r
66210 }\r
66211 var e=500;\r
66212 try{\r
66213 e=a.__httpReq.status\r
66214 }\r
66215 catch(t){}\r
66216 if(e==200||e==201){\r
66217 o.run({\r
66218 text:a.__httpReq.responseText,xml:a.__httpReq.responseXML,success:true,reqId:a.id}\r
66219 )\r
66220 }else{\r
66221 o.run({\r
66222 text:a.__httpReq.responseText,xml:a.__httpReq.responseXML,success:false,status:e,reqId:a.id}\r
66223 )\r
66224 }\r
66225 a.cancel()\r
66226 }};\r
66227 AjxRpcRequest.__init=function(){\r
66228 if(!window.XMLHttpRequest&&window.ActiveXObject){\r
66229 var t=["MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];\r
66230 for(var o=0;\r
66231 o<t.length;\r
66232 o++){\r
66233 try{\r
66234 var e=new ActiveXObject(t[o]);\r
66235 AjxRpcRequest.__msxmlVers=t[o];\r
66236 break\r
66237 }\r
66238 catch(a){}}\r
66239 if(!AjxRpcRequest.__msxmlVers){\r
66240 throw new AjxException("MSXML not installed",AjxException.INTERNAL_ERROR,"AjxRpc._init")\r
66241 }}\r
66242 AjxRpcRequest.__inited=true\r
66243 }\r
66244 }\r
66245 if(AjxPackage.define("ajax.net.AjxRpc")){\r
66246 AjxRpc=function(){};\r
66247 AjxRpc.__rpcCache=[];\r
66248 AjxRpc.__rpcOutstanding={};\r
66249 AjxRpc.__RPC_CACHE_MAX=50;\r
66250 AjxRpc.__RPC_COUNT=0;\r
66251 AjxRpc.__RPC_REAP_AGE=300000;\r
66252 AjxRpc.invoke=function(a,t,s,u,d,c){\r
66253 var e=(u!=null);\r
66254 var n=AjxRpc.__getFreeRpcCtxt();\r
66255 try{\r
66256 var o=n.invoke(a,t,s,u,d,c)\r
66257 }\r
66258 catch(r){\r
66259 var h=new AjxException();\r
66260 h.method="AjxRpc.prototype._invoke";\r
66261 if(r instanceof Error){\r
66262 h.detail=r.message;\r
66263 h.code=AjxException.NETWORK_ERROR;\r
66264 h.msg="Network error"\r
66265 }else{\r
66266 h.detail=r.toString();\r
66267 h.code=AjxException.UNKNOWN_ERROR;\r
66268 h.msg="Unknown Error"\r
66269 }\r
66270 if(!e){\r
66271 AjxRpc.freeRpcCtxt(n)\r
66272 }\r
66273 throw h\r
66274 }\r
66275 if(!e){\r
66276 AjxRpc.freeRpcCtxt(n)\r
66277 }\r
66278 return o\r
66279 };\r
66280 AjxRpc.freeRpcCtxt=function(e){\r
66281 if(AjxRpc.__rpcOutstanding[e.id]){\r
66282 AjxRpc.__rpcCache.push(e);\r
66283 delete AjxRpc.__rpcOutstanding[e.id]\r
66284 }};\r
66285 AjxRpc.getRpcRequestById=function(e){\r
66286 return(AjxRpc.__rpcOutstanding[e])\r
66287 };\r
66288 AjxRpc.__getFreeRpcCtxt=function(){\r
66289 var e;\r
66290 if(AjxRpc.__rpcCache.length>0){\r
66291 e=AjxRpc.__rpcCache.pop()\r
66292 }else{\r
66293 if(AjxRpc.__RPC_COUNT<AjxRpc.__RPC_CACHE_MAX){\r
66294 var t="__RpcCtxt_"+AjxRpc.__RPC_COUNT;\r
66295 e=new AjxRpcRequest(t);\r
66296 AjxRpc.__RPC_COUNT++\r
66297 }else{\r
66298 e=AjxRpc.__reap();\r
66299 if(!e){\r
66300 throw new AjxException("Out of RPC cache",AjxException.OUT_OF_RPC_CACHE,"AjxRpc.__getFreeRpcCtxt")\r
66301 }}}\r
66302 AjxRpc.__rpcOutstanding[e.id]=e;\r
66303 e.timestamp=(new Date()).getTime();\r
66304 return e\r
66305 };\r
66306 AjxRpc.__reap=function(){\r
66307 var e;\r
66308 var a=(new Date()).getTime();\r
66309 for(var t in AjxRpc.__rpcOutstanding){\r
66310 e=AjxRpc.__rpcOutstanding[t];\r
66311 if(e.timestamp+AjxRpc.__RPC_REAP_AGE<a){\r
66312 e.cancel();\r
66313 delete AjxRpc.__rpcOutstanding[t];\r
66314 return e\r
66315 }}\r
66316 return null\r
66317 }\r
66318 }\r
66319 if(AjxPackage.define("ajax.util.AjxVector")){\r
66320 AjxVector=function(){\r
66321 this._array=new Array()\r
66322 };\r
66323 AjxVector.prototype.toString=function(n,t){\r
66324 if(t!==true){\r
66325 return this._array.join(n)\r
66326 }\r
66327 var o=new Array();\r
66328 for(var s=0;\r
66329 s<this._array.length;\r
66330 s++){\r
66331 var e=this._array[s];\r
66332 if(e!=undefined&&e!=null&&e!=""){\r
66333 o.push(e)\r
66334 }}\r
66335 return o.join(n)\r
66336 };\r
66337 AjxVector.fromArray=function(t){\r
66338 var e=new AjxVector();\r
66339 e._array.length=0;\r
66340 if(t instanceof Array){\r
66341 e._array=t\r
66342 }\r
66343 return e\r
66344 };\r
66345 AjxVector.prototype.size=function(){\r
66346 return this._array.length\r
66347 };\r
66348 AjxVector.prototype.add=function(a,e,t){\r
66349 if(t&&this.contains(a)){\r
66350 return\r
66351 }\r
66352 AjxUtil.arrayAdd(this._array,a,e)\r
66353 };\r
66354 AjxVector.prototype.addList=function(a){\r
66355 if(!a){\r
66356 return\r
66357 }\r
66358 if(a.length){\r
66359 this._array=this._array.concat(a)\r
66360 }else{\r
66361 if(a.size&&a.size()){\r
66362 if(AjxEnv.isIE&&(!(a._array instanceof Array))){\r
66363 var t=[];\r
66364 for(var e=0;\r
66365 e<a._array.length;\r
66366 e++){\r
66367 t.push(a._array[e])\r
66368 }\r
66369 a._array=t\r
66370 }\r
66371 this._array=this._array.concat(a._array)\r
66372 }}};\r
66373 AjxVector.prototype.remove=function(e){\r
66374 return AjxUtil.arrayRemove(this._array,e)\r
66375 };\r
66376 AjxVector.prototype.removeAt=function(t){\r
66377 if(t>=this._array.length||t<0){\r
66378 return null\r
66379 }\r
66380 var a=this._array.splice(t,1);\r
66381 var e=null;\r
66382 if(a){\r
66383 e=a[0]\r
66384 }\r
66385 return e\r
66386 };\r
66387 AjxVector.prototype.removeAll=function(){\r
66388 for(var e=0;\r
66389 e<this._array.length;\r
66390 e++){\r
66391 this._array[e]=null\r
66392 }\r
66393 this._array.length=0\r
66394 };\r
66395 AjxVector.prototype.removeLast=function(){\r
66396 return this._array.length>0?this._array.pop():null\r
66397 };\r
66398 AjxVector.prototype.reverse=function(){\r
66399 this._array.reverse()\r
66400 };\r
66401 AjxVector.prototype.replace=function(a,t){\r
66402 var e=this._array[a];\r
66403 this._array[a]=t;\r
66404 return e\r
66405 };\r
66406 AjxVector.prototype.replaceObject=function(a,e){\r
66407 for(var t=0;\r
66408 t<this._array.length;\r
66409 t++){\r
66410 if(this._array[t]==a){\r
66411 this._array[t]=e;\r
66412 return a\r
66413 }}\r
66414 return null\r
66415 };\r
66416 AjxVector.prototype.indexOf=function(t){\r
66417 if(t==null){\r
66418 return -1\r
66419 }\r
66420 for(var e=0;\r
66421 e<this._array.length;\r
66422 e++){\r
66423 if(this._array[e]==t){\r
66424 return e\r
66425 }}\r
66426 return -1\r
66427 };\r
66428 AjxVector.prototype.indexOfLike=function(o,a){\r
66429 var t=a.call(o);\r
66430 for(var e=0;\r
66431 e<this._array.length;\r
66432 e++){\r
66433 var n=a.call(this._array[e]);\r
66434 if(n==t){\r
66435 return e\r
66436 }}\r
66437 return -1\r
66438 };\r
66439 AjxVector.prototype.clone=function(){\r
66440 var e=new AjxVector();\r
66441 e.addList(this);\r
66442 return e\r
66443 };\r
66444 AjxVector.prototype.contains=function(t){\r
66445 for(var e=0;\r
66446 e<this._array.length;\r
66447 e++){\r
66448 if(this._array[e]==t){\r
66449 return true\r
66450 }}\r
66451 return false\r
66452 };\r
66453 AjxVector.prototype.containsLike=function(o,a){\r
66454 var t=a.call(o);\r
66455 for(var e=0;\r
66456 e<this._array.length;\r
66457 e++){\r
66458 var n=a.call(this._array[e]);\r
66459 if(n==t){\r
66460 return true\r
66461 }}\r
66462 return false\r
66463 };\r
66464 AjxVector.prototype.get=function(e){\r
66465 return e>=this._array.length||e<0?null:this._array[e]\r
66466 };\r
66467 AjxVector.prototype.getArray=function(){\r
66468 return this._array\r
66469 };\r
66470 AjxVector.prototype.getLast=function(){\r
66471 return this._array.length==0?null:this._array[this._array.length-1]\r
66472 };\r
66473 AjxVector.prototype.getNext=function(t){\r
66474 var e=this.indexOf(t);\r
66475 if(e==-1){\r
66476 return null\r
66477 }\r
66478 return this.get(++e)\r
66479 };\r
66480 AjxVector.prototype.getPrev=function(t){\r
66481 var e=this.indexOf(t);\r
66482 if(e==-1){\r
66483 return null\r
66484 }\r
66485 return this.get(--e)\r
66486 };\r
66487 AjxVector.prototype.sort=function(e){\r
66488 if(!e){\r
66489 e=AjxVector._defaultArrayComparator\r
66490 }\r
66491 this._array.sort(e)\r
66492 };\r
66493 AjxVector.prototype.binarySearch=function(s,r){\r
66494 if(!r){\r
66495 r=AjxVector._defaultArrayComparator\r
66496 }\r
66497 var a=0;\r
66498 var e=this._array;\r
66499 var o=e.length-1;\r
66500 while(true){\r
66501 if(o<a){\r
66502 return -1\r
66503 }\r
66504 var n=Math.floor((a+o)/2);\r
66505 var t=r(s,e[n]);\r
66506 if(t<0){\r
66507 o=n-1\r
66508 }else{\r
66509 if(t>0){\r
66510 a=n+1\r
66511 }else{\r
66512 return n\r
66513 }}}};\r
66514 AjxVector.prototype.merge=function(n,o){\r
66515 if(n<0){\r
66516 return\r
66517 }\r
66518 var s=o instanceof AjxVector?o.getArray():o;\r
66519 var e=this._array.length<(n+s.length)?this._array.length:n+s.length;\r
66520 if(n<this._array.length){\r
66521 var a=0;\r
66522 for(var t=n;\r
66523 t<e;\r
66524 t++){\r
66525 this._array[t]=s[a++]\r
66526 }\r
66527 if(a<s.length){\r
66528 this._array=this._array.concat(s.slice(a))\r
66529 }}else{\r
66530 this._array=this._array.concat(s)\r
66531 }};\r
66532 AjxVector._defaultArrayComparator=function(t,e){\r
66533 return t<e?-1:(t>e?1:0)\r
66534 };\r
66535 AjxVector.prototype.foreach=function(o,n){\r
66536 var e=this.size(),t=0,a;\r
66537 if(typeof o=="function"){\r
66538 while(--e>=0){\r
66539 o.call(n,this.get(t),t++)\r
66540 }}else{\r
66541 while(--e>=0){\r
66542 a=this.get(t++);\r
66543 if(a!=null){\r
66544 a[o].call(a)\r
66545 }}}};\r
66546 AjxVector.prototype.map=function(n,s){\r
66547 var e=[],t=this.size(),o;\r
66548 if(typeof n=="function"){\r
66549 while(--t>=0){\r
66550 e[t]=n.call(s,this.get(t),t)\r
66551 }}else{\r
66552 if(n instanceof AjxCallback){\r
66553 while(--t>=0){\r
66554 e[t]=n.run(this.get(t),t)\r
66555 }}else{\r
66556 while(--t>=0){\r
66557 o=this.get(t);\r
66558 if(o!=null){\r
66559 if(typeof o[n]=="function"){\r
66560 e.unshift(o[n].call(o))\r
66561 }else{\r
66562 e.unshift(o[n])\r
66563 }}}}}\r
66564 return AjxVector.fromArray(e)\r
66565 };\r
66566 AjxVector.prototype.join=function(e){\r
66567 return this._array.join(e)\r
66568 };\r
66569 AjxVector.prototype.sub=function(s,r){\r
66570 var t=[],e=this.size(),o=0,n;\r
66571 while(--e>=0){\r
66572 n=this.get(o++);\r
66573 if(!s.call(r,n,o)){\r
66574 t.push(n)\r
66575 }}\r
66576 return AjxVector.fromArray(t)\r
66577 }\r
66578 }\r
66579 if(AjxPackage.define("ajax.util.AjxStringUtil")){\r
66580 AjxStringUtil=function(){};\r
66581 AjxStringUtil.TRIM_RE=/^\s+|\s+$/g;\r
66582 AjxStringUtil.COMPRESS_RE=/\s+/g;\r
66583 AjxStringUtil.ELLIPSIS=" ... ";\r
66584 AjxStringUtil.makeString=function(e){\r
66585 return e?String(e):""\r
66586 };\r
66587 AjxStringUtil.capitalize=function(e){\r
66588 return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()\r
66589 };\r
66590 AjxStringUtil.toMixed=function(s,e,o){\r
66591 if(!s||(typeof s!="string")){\r
66592 return""\r
66593 }\r
66594 e=e||/\s+/;\r
66595 var a=s.split(e);\r
66596 var n=[];\r
66597 n.push(o?a[0].toLowerCase():a[0].substring(0,1).toUpperCase()+a[0].substring(1).toLowerCase());\r
66598 for(var t=1;\r
66599 t<a.length;\r
66600 t++){\r
66601 n.push(a[t].substring(0,1).toUpperCase()+a[t].substring(1).toLowerCase())\r
66602 }\r
66603 return n.join("")\r
66604 };\r
66605 AjxStringUtil.trim=function(n,e,o){\r
66606 if(!n){\r
66607 return""\r
66608 }\r
66609 var a=AjxStringUtil.TRIM_RE;\r
66610 var t=AjxStringUtil.COMPRESS_RE;\r
66611 if(o){\r
66612 a=new RegExp("^"+o+"+|"+o+"+$","g");\r
66613 t=new RegExp(o+"+","g")\r
66614 }else{\r
66615 o=" "\r
66616 }\r
66617 n=n.replace(a,"");\r
66618 if(e){\r
66619 n=n.replace(t,o)\r
66620 }\r
66621 return n\r
66622 };\r
66623 AjxStringUtil.repeat=function(o,e){\r
66624 var a="";\r
66625 for(var t=0;\r
66626 t<e;\r
66627 t++){\r
66628 a+=o\r
66629 }\r
66630 return a\r
66631 };\r
66632 AjxStringUtil.getUnitsFromSizeString=function(t){\r
66633 var a="px";\r
66634 if(typeof(t)=="string"){\r
66635 var e=Number(parseInt(t,10)).toString();\r
66636 if(t.length>e.length){\r
66637 a=t.substr(e.length,(t.length-e.length));\r
66638 if(!(a=="em"||a=="ex"||a=="px"||a=="in"||a=="cm"==a=="mm"||a=="pt"||a=="pc"||a=="%")){\r
66639 a="px"\r
66640 }}}\r
66641 return a\r
66642 };\r
66643 AjxStringUtil.split=function(d,o){\r
66644 if(!d){\r
66645 return[]\r
66646 }\r
66647 var s=0;\r
66648 o=o?o:",";\r
66649 var m=new Object();\r
66650 if(typeof o=="string"){\r
66651 m[o]=1\r
66652 }else{\r
66653 for(s=0;\r
66654 s<o.length;\r
66655 s++){\r
66656 m[o[s]]=1\r
66657 }}\r
66658 var e=false;\r
66659 var a=0;\r
66660 var t=0;\r
66661 var u;\r
66662 var r=[];\r
66663 var n=0;\r
66664 for(s=0;\r
66665 s<d.length;\r
66666 s++){\r
66667 var h=d.charAt(s);\r
66668 if(h=='"'){\r
66669 e=!e\r
66670 }else{\r
66671 if(h=="("){\r
66672 a++\r
66673 }else{\r
66674 if(h==")"){\r
66675 a--\r
66676 }else{\r
66677 if(m[h]){\r
66678 if(!e&&!a){\r
66679 u=d.substring(t,s);\r
66680 r[n++]=u;\r
66681 t=s+1\r
66682 }}}}}}\r
66683 u=d.substring(t,d.length);\r
66684 r[n++]=u;\r
66685 return r\r
66686 };\r
66687 AjxStringUtil.wordWrap=function(s){\r
66688 if(!(s&&s.text)){\r
66689 return""\r
66690 }\r
66691 var p=s.text;\r
66692 var d=s.len||80;\r
66693 var n=s.pre||"";\r
66694 d-=n.length;\r
66695 var u=s.eol||(s.htmlMode?"<br>":"\n");\r
66696 if(s.htmlMode){\r
66697 var g=p.split(AjxStringUtil.HTML_BR_RE);\r
66698 var a=[];\r
66699 if(g.length>0){\r
66700 for(var r=0;\r
66701 r<g.length;\r
66702 r++){\r
66703 a.push(g[r].replace(/(<div\s+[^>]*>)/gi,"$1"+n))\r
66704 }\r
66705 p=n+a.join(u+n)\r
66706 }\r
66707 return p\r
66708 }\r
66709 var h=[];\r
66710 var m=0;\r
66711 p=AjxStringUtil.trim(p,false);\r
66712 p=p.replace(/[ \t]+\n/g,"\n");\r
66713 if(s.compress){\r
66714 p=p.replace(/\b\n\b/g," ")\r
66715 }\r
66716 var f=p.length;\r
66717 for(var r=0,o=0,t=-1;\r
66718 r<f;\r
66719 r++){\r
66720 var e=p.charAt(r);\r
66721 if(e.match(/[ \t]/)){\r
66722 t=r\r
66723 }\r
66724 if(e=="\n"){\r
66725 h[m++]=n+p.substring(o,r);\r
66726 o=r+1;\r
66727 t=-1\r
66728 }\r
66729 if(r-o>=d){\r
66730 if(t==-1){\r
66731 if(s.breakOkay){\r
66732 h[m++]=n+p.substring(o,r);\r
66733 o=r;\r
66734 t=-1\r
66735 }}else{\r
66736 h[m++]=n+p.substring(o,t);\r
66737 o=t+1;\r
66738 t=-1\r
66739 }}}\r
66740 if(r>o){\r
66741 h[m++]=n+p.substring(o,r)\r
66742 }\r
66743 return h.join(u)+u\r
66744 };\r
66745 AjxStringUtil.IS_PRINT_CODE={};\r
66746 var print_codes=[32,48,49,50,51,52,53,54,55,56,57,59,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222];\r
66747 var l=print_codes.length;\r
66748 for(var i=0;\r
66749 i<l;\r
66750 i++){\r
66751 AjxStringUtil.IS_PRINT_CODE[print_codes[i]]=true\r
66752 }\r
66753 AjxStringUtil.isPrintKey=function(e){\r
66754 return AjxStringUtil.IS_PRINT_CODE[e]\r
66755 };\r
66756 AjxStringUtil.SHIFT_CHAR={\r
66757 48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'};\r
66758 AjxStringUtil.shiftChar=function(e,t){\r
66759 return t?AjxStringUtil.SHIFT_CHAR[e]||String.fromCharCode(e):String.fromCharCode(e)\r
66760 };\r
66761 AjxStringUtil.diffPoint=function(o,a){\r
66762 if(!(o&&a)){\r
66763 return 0\r
66764 }\r
66765 var e=Math.min(o.length,a.length);\r
66766 var t=0;\r
66767 while(t<e&&(o.charAt(t)==a.charAt(t))){\r
66768 t++\r
66769 }\r
66770 return t\r
66771 };\r
66772 AjxStringUtil.resolve=function(t,e){\r
66773 return AjxMessageFormat.format(t,e)\r
66774 };\r
66775 AjxStringUtil.urlEncode=function(t){\r
66776 if(!t){\r
66777 return""\r
66778 }\r
66779 var e=window.encodeURL||window.encodeURI;\r
66780 return e(t)\r
66781 };\r
66782 AjxStringUtil.urlComponentEncode=function(t){\r
66783 if(!t){\r
66784 return""\r
66785 }\r
66786 var e=window.encodeURLComponent||window.encodeURIComponent;\r
66787 return e(t)\r
66788 };\r
66789 AjxStringUtil.ENCODE_MAP={\r
66790 ">":"&gt;","<":"&lt;","&":"&amp;"};\r
66791 AjxStringUtil.htmlEncode=function(t,e){\r
66792 if(!t){\r
66793 return""\r
66794 }\r
66795 if(!AjxEnv.isSafari||AjxEnv.isSafariNightly){\r
66796 if(e){\r
66797 return t.replace(/[<>&]/g,function(a){\r
66798 return AjxStringUtil.ENCODE_MAP[a]\r
66799 }\r
66800 ).replace(/  /g," &nbsp;")\r
66801 }else{\r
66802 return t.replace(/[<>&]/g,function(a){\r
66803 return AjxStringUtil.ENCODE_MAP[a]\r
66804 }\r
66805 )\r
66806 }}else{\r
66807 if(e){\r
66808 return t.replace(/[&]/g,"&amp;").replace(/  /g," &nbsp;").replace(/[<]/g,"&lt;").replace(/[>]/g,"&gt;")\r
66809 }else{\r
66810 return t.replace(/[&]/g,"&amp;").replace(/[<]/g,"&lt;").replace(/[>]/g,"&gt;")\r
66811 }}};\r
66812 AjxStringUtil.htmlDecode=function(t,e){\r
66813 if(e){\r
66814 t=t.replace(/&nbsp;/g," ")\r
66815 }\r
66816 return t.replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">")\r
66817 };\r
66818 AjxStringUtil.stripTags=function(t,e){\r
66819 if(!t){\r
66820 return""\r
66821 }\r
66822 if(e){\r
66823 t=t.replace(/(<(\w+)[^>]*>).*(<\/\2[^>]*>)/,"$1$3")\r
66824 }\r
66825 return t.replace(/<\/?[^>]+>/gi,"")\r
66826 };\r
66827 AjxStringUtil.convertToHtml=function(e){\r
66828 if(!e){\r
66829 return""\r
66830 }\r
66831 e=e.replace(/&/mg,"&amp;").replace(/  /mg," &nbsp;").replace(/^ /mg,"&nbsp;").replace(/\t/mg,"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;").replace(/</mg,"&lt;").replace(/>/mg,"&gt;").replace(/\r?\n/mg,"<br>");\r
66832 return e\r
66833 };\r
66834 AjxStringUtil.SPACE_ENCODE_MAP={\r
66835 " ":"&nbsp;",">":"&gt;","<":"&lt;","&":"&amp;","\n":"<br>"};\r
66836 AjxStringUtil.htmlEncodeSpace=function(e){\r
66837 if(!e){\r
66838 return""\r
66839 }\r
66840 return e.replace(/[&]/g,"&amp;").replace(/ /g,"&nbsp;").replace(/[<]/g,"&lt;").replace(/[>]/g,"&gt;")\r
66841 };\r
66842 AjxStringUtil.nl2br=function(e){\r
66843 if(!e){\r
66844 return""\r
66845 }\r
66846 return e.replace(/^ /mg,"&nbsp;").replace(/\t/mg,"<span style='white-space:pre'>\t</span>").replace(/\n/g,"<br>")\r
66847 };\r
66848 AjxStringUtil.xmlEncode=function(e){\r
66849 if(e){\r
66850 e=""+e;\r
66851 return e.replace(/&/g,"&amp;").replace(/</g,"&lt;")\r
66852 }\r
66853 return""\r
66854 };\r
66855 AjxStringUtil.xmlDecode=function(e){\r
66856 return e?e.replace(/&amp;/g,"&").replace(/&lt;/g,"<"):""\r
66857 };\r
66858 AjxStringUtil.xmlAttrEncode=function(e){\r
66859 return e?e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\x22/g,"&quot;").replace(/\x27/g,"&apos;"):""\r
66860 };\r
66861 AjxStringUtil.xmlAttrDecode=function(e){\r
66862 return e?e.replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&apos;/g,"'"):""\r
66863 };\r
66864 AjxStringUtil.__RE_META={\r
66865 " ":" ","\n":"\\n","\r":"\\r","\t":"\\t"};\r
66866 AjxStringUtil.__reMetaEscape=function(t,e){\r
66867 return AjxStringUtil.__RE_META[e]||"\\"+e\r
66868 };\r
66869 AjxStringUtil.regExEscape=function(e){\r
66870 return e.replace(/(\W)/g,AjxStringUtil.__reMetaEscape)\r
66871 };\r
66872 AjxStringUtil._calcDIV=null;\r
66873 AjxStringUtil.calcDIV=function(){\r
66874 if(AjxStringUtil._calcDIV==null){\r
66875 AjxStringUtil._calcDIV=document.createElement("div");\r
66876 AjxStringUtil._calcDIV.style.zIndex=0;\r
66877 AjxStringUtil._calcDIV.style.position=DwtControl.ABSOLUTE_STYLE;\r
66878 AjxStringUtil._calcDIV.style.visibility="hidden";\r
66879 document.body.appendChild(AjxStringUtil._calcDIV)\r
66880 }\r
66881 return AjxStringUtil._calcDIV\r
66882 };\r
66883 AjxStringUtil.clip=function(e,s,n){\r
66884 var o=AjxStringUtil.calcDIV();\r
66885 if(arguments.length==3){\r
66886 o.className=n\r
66887 }\r
66888 o.innerHTML=e;\r
66889 if(o.offsetWidth<=s){\r
66890 return e\r
66891 }\r
66892 for(var a=e.length-1;\r
66893 a>0;\r
66894 a--){\r
66895 var t=e.substr(0,a);\r
66896 o.innerHTML=t+AjxStringUtil.ELLIPSIS;\r
66897 if(o.offsetWidth<=s){\r
66898 return t+AjxStringUtil.ELLIPSIS\r
66899 }}\r
66900 return e\r
66901 };\r
66902 AjxStringUtil.clipByLength=function(a,t){\r
66903 var e=a.length;\r
66904 return(e<=t)?a:[a.substr(0,t/2),"...",a.substring(e-((t/2)-3),e)].join("")\r
66905 };\r
66906 AjxStringUtil.wrap=function(s,r,h){\r
66907 var f=AjxStringUtil.calcDIV();\r
66908 if(arguments.length==3){\r
66909 f.className=h\r
66910 }\r
66911 var c="";\r
66912 var n="";\r
66913 var e=s.split("/n");\r
66914 for(var o=0;\r
66915 o<e.length;\r
66916 o++){\r
66917 if(o!=0){\r
66918 c+=n+"<br>";\r
66919 n=""\r
66920 }\r
66921 htmlRows=e[o].split("<br>");\r
66922 for(var u=0;\r
66923 u<htmlRows.length;\r
66924 u++){\r
66925 if(u!=0){\r
66926 c+=n+"<br>";\r
66927 n=""\r
66928 }\r
66929 words=htmlRows[u].split(" ");\r
66930 var m=0;\r
66931 while(m<words.length){\r
66932 f.innerHTML=n+" "+words[m];\r
66933 var a=f.offsetWidth;\r
66934 if(a>r){\r
66935 f.innerHTML=words[m];\r
66936 a=a-f.offsetWidth;\r
66937 if((a>=r)||(f.offsetWidth<=r)){\r
66938 c+=n+"<br>";\r
66939 n=""\r
66940 }else{\r
66941 var d=true;\r
66942 var t=0;\r
66943 while(d){\r
66944 t++;\r
66945 f.innerHTML=n+" "+words[m].substring(0,t);\r
66946 d=(f.offsetWidth<=r)\r
66947 }\r
66948 t--;\r
66949 c+=n+words[m].substring(0,t)+"<br>";\r
66950 words[m]=words[m].substr(t);\r
66951 n=""\r
66952 }}else{\r
66953 n+=" "+words[m];\r
66954 m++\r
66955 }}}}\r
66956 c+=n;\r
66957 return c\r
66958 };\r
66959 AjxStringUtil.MSG_SEP_RE=new RegExp("^\\s*--+\\s*(Original Message|Forwarded Message)\\s*--+","i");\r
66960 AjxStringUtil.SIG_RE=/^(- ?-+)|(__+)\r?$/;\r
66961 AjxStringUtil.COLON_RE=/\S+:$/;\r
66962 AjxStringUtil.PREFIX_RE=/^\s*(>|\|)/;\r
66963 AjxStringUtil.BRACKET_RE=/^\s*\[.+\]\s*$/;\r
66964 AjxStringUtil.LINE_RE=/^\s*_{30,}\s*$/;\r
66965 AjxStringUtil.BLANK_RE=/^\s*$/;\r
66966 AjxStringUtil.SPLIT_RE=/\r|\n|\r\n/;\r
66967 AjxStringUtil.HTML_BLANK_RE=/^\s*<br>\s*$/i;\r
66968 AjxStringUtil.HDR_RE=/^\s*\w+:/;\r
66969 AjxStringUtil.HTML_BR_RE=/<br\s*\/?>/gi;\r
66970 AjxStringUtil.HTML_BODY_RE=/<body(\s|>)/i;\r
66971 AjxStringUtil.getTopLevel=function(m,h,t){\r
66972 var e=/<br|<div/i.test(m);\r
66973 var c=e?AjxStringUtil.HTML_BR_RE:AjxStringUtil.SPLIT_RE;\r
66974 var h=e?"<br>":"\n";\r
66975 m=AjxStringUtil._trimBlankLines(m,c,h,e);\r
66976 var f=m.split(c);\r
66977 var s=f.length;\r
66978 var o=0,a=0;\r
66979 var n=[];\r
66980 var r=false;\r
66981 while(o<s){\r
66982 var u=r;\r
66983 var d=AjxStringUtil._linesToSkip(f,o,t);\r
66984 r=(d>0);\r
66985 if(u&&!r){\r
66986 a=o\r
66987 }else{\r
66988 if(!u&&r&&o>a){\r
66989 n.push(AjxStringUtil._trimBlankLines(f.slice(a,o).join(h),c,h,t)+h)\r
66990 }}\r
66991 o+=r?d:1\r
66992 }\r
66993 if(!r&&o>a){\r
66994 n.push(AjxStringUtil._trimBlankLines(f.slice(a,o).join(h),c,h,t)+h)\r
66995 }\r
66996 return n\r
66997 };\r
66998 AjxStringUtil._linesToSkip=function(c,a,e){\r
66999 var o=c.length;\r
67000 var h=0;\r
67001 var t=a;\r
67002 var d=e?AjxStringUtil.stripTags(c[a]):c[a];\r
67003 if(AjxStringUtil.MSG_SEP_RE.test(d)){\r
67004 h=o-a\r
67005 }else{\r
67006 if(AjxStringUtil.PREFIX_RE.test(d)){\r
67007 while(a<c.length&&(AjxStringUtil.PREFIX_RE.test(d)||AjxStringUtil.BLANK_RE.test(d))){\r
67008 a++;\r
67009 d=e?AjxStringUtil.stripTags(c[a]):c[a]\r
67010 }\r
67011 h=a-t\r
67012 }else{\r
67013 if(AjxStringUtil.COLON_RE.test(d)){\r
67014 var s=AjxStringUtil._nextNonBlankLineIndex(c,a+1,e);\r
67015 var r=(s==-1)?null:e?AjxStringUtil.stripTags(c[s]):c[s];\r
67016 if(r&&AjxStringUtil.PREFIX_RE.test(r)){\r
67017 h=s-a\r
67018 }else{\r
67019 if(s!=-1){\r
67020 s=AjxStringUtil._nextNonBlankLineIndex(c,s+1,e)\r
67021 }\r
67022 var n=(s==-1)?null:e?AjxStringUtil.stripTags(c[s]):c[s];\r
67023 if(n&&AjxStringUtil.BRACKET_RE.test(r)&&AjxStringUtil.PREFIX_RE.test(n)){\r
67024 h=s-a\r
67025 }}}else{\r
67026 if(AjxStringUtil.LINE_RE.test(d)){\r
67027 var s=AjxStringUtil._nextNonBlankLineIndex(c,a+1,e);\r
67028 var r=(s==-1)?null:e?AjxStringUtil.stripTags(c[s]):c[s];\r
67029 if(r&&AjxStringUtil.HDR_RE.test(r)){\r
67030 h=o-a\r
67031 }}else{\r
67032 if(AjxStringUtil.SIG_RE.test(d)){\r
67033 h=o-a\r
67034 }}}}}\r
67035 return h\r
67036 };\r
67037 AjxStringUtil._nextNonBlankLineIndex=function(e,t,a){\r
67038 while(t<e.length&&AjxStringUtil.BLANK_RE.test(a?AjxStringUtil.stripTags(e[t]):e[t])){\r
67039 t++\r
67040 }\r
67041 return((t<e.length)?t:-1)\r
67042 };\r
67043 AjxStringUtil._trimBlankLines=function(r,s,n,e){\r
67044 var c=r.split(s);\r
67045 var o=c.length;\r
67046 var h=e?AjxStringUtil.HTML_BLANK_RE:AjxStringUtil.BLANK_RE;\r
67047 var a=0;\r
67048 while(a<o&&h.test(c[a])){\r
67049 a++\r
67050 }\r
67051 var t=o;\r
67052 while(t>0&&h.test(c[t-1])){\r
67053 t--\r
67054 }\r
67055 if(a!=0||t!=o){\r
67056 r=c.slice(a,t).join(n)+n\r
67057 }\r
67058 if(e&&AjxStringUtil.HTML_BODY_RE.test(r)){\r
67059 r=r.replace(/<body\s*[^>]*>(<br\s*\/?>)+/i,"<body>");\r
67060 r=r.replace(/(<br\s*\/?>)+<\/body>/i,"</body>")\r
67061 }\r
67062 return r\r
67063 };\r
67064 AjxStringUtil._NO_LIST=0;\r
67065 AjxStringUtil._ORDERED_LIST=1;\r
67066 AjxStringUtil._UNORDERED_LIST=2;\r
67067 AjxStringUtil._INDENT="    ";\r
67068 AjxStringUtil._NON_WHITESPACE=/\S+/;\r
67069 AjxStringUtil._LF=/\n/;\r
67070 AjxStringUtil.convertHtml2Text=function(a){\r
67071 if(!a){\r
67072 return null\r
67073 }\r
67074 if(typeof a=="string"){\r
67075 var o=document.createElement("SPAN");\r
67076 o.innerHTML=a;\r
67077 a=o\r
67078 }\r
67079 var n=[];\r
67080 var t=0;\r
67081 var e={};\r
67082 this._traverse(a,n,t,AjxStringUtil._NO_LIST,0,0,e);\r
67083 return n.join("")\r
67084 };\r
67085 AjxStringUtil._traverse=function(e,m,d,c,r,n,s){\r
67086 var h=e.nodeName.toLowerCase();\r
67087 if(h=="#text"){\r
67088 if(e.nodeValue.search(AjxStringUtil._NON_WHITESPACE)!=-1){\r
67089 if(s.lastNode=="ol"||s.lastNode=="ul"){\r
67090 m[d++]="\n"\r
67091 }\r
67092 if(s.isPreformatted){\r
67093 m[d++]=AjxStringUtil.trim(e.nodeValue)+" "\r
67094 }else{\r
67095 m[d++]=AjxStringUtil.trim(e.nodeValue.replace(AjxStringUtil._LF," "),true)+" "\r
67096 }}}else{\r
67097 if(h=="p"){\r
67098 m[d++]="\n\n"\r
67099 }else{\r
67100 if(c==AjxStringUtil._NO_LIST&&(h=="br"||h=="hr")){\r
67101 m[d++]="\n"\r
67102 }else{\r
67103 if(h=="ol"||h=="ul"){\r
67104 m[d++]="\n";\r
67105 if(e.parentNode.nodeName.toLowerCase()!="li"&&s.lastNode!="br"&&s.lastNode!="hr"){\r
67106 m[d++]="\n"\r
67107 }\r
67108 c=(h=="ol")?AjxStringUtil._ORDERED_LIST:AjxStringUtil._UNORDERED_LIST;\r
67109 r++;\r
67110 n=0\r
67111 }else{\r
67112 if(h=="li"){\r
67113 for(var a=0;\r
67114 a<r;\r
67115 a++){\r
67116 m[d++]=AjxStringUtil._INDENT\r
67117 }\r
67118 if(c==AjxStringUtil._ORDERED_LIST){\r
67119 m[d++]=n+". "\r
67120 }else{\r
67121 m[d++]="\u2022 "\r
67122 }}else{\r
67123 if(h=="img"){\r
67124 if(e.alt&&e.alt!=""){\r
67125 m[d++]=e.alt\r
67126 }}else{\r
67127 if(h=="tr"&&e.parentNode.firstChild!=e){\r
67128 m[d++]="\n"\r
67129 }else{\r
67130 if(h=="td"&&e.parentNode.firstChild!=e){\r
67131 m[d++]="\t"\r
67132 }else{\r
67133 if(h=="div"){\r
67134 m[d++]="\n"\r
67135 }else{\r
67136 if(h=="blockquote"){\r
67137 m[d++]="\n\n"\r
67138 }else{\r
67139 if(h=="pre"){\r
67140 s.isPreformatted=true\r
67141 }else{\r
67142 if(h=="#comment"||h=="script"||h=="select"||h=="style"){\r
67143 return d\r
67144 }}}}}}}}}}}}\r
67145 var u=e.childNodes;\r
67146 var o=u.length;\r
67147 for(var a=0;\r
67148 a<o;\r
67149 a++){\r
67150 var t=u[a];\r
67151 if(t.nodeType==1&&t.tagName.toLowerCase()=="li"){\r
67152 n++\r
67153 }\r
67154 d=this._traverse(t,m,d,c,r,n,s)\r
67155 }\r
67156 if(h=="h1"||h=="h2"||h=="h3"||h=="h4"||h=="h5"||h=="h6"){\r
67157 m[d++]="\n";\r
67158 s.list=false\r
67159 }else{\r
67160 if(h=="pre"){\r
67161 s.isPreformatted=false\r
67162 }else{\r
67163 if(h=="li"){\r
67164 if(!s.list){\r
67165 m[d++]="\n"\r
67166 }\r
67167 s.list=false\r
67168 }else{\r
67169 if(h=="ol"||h=="ul"){\r
67170 s.list=true\r
67171 }else{\r
67172 if(h!="#text"){\r
67173 s.list=false\r
67174 }}}}}\r
67175 s.lastNode=h;\r
67176 return d\r
67177 };\r
67178 AjxStringUtil.queryStringSet=function(r,c){\r
67179 var h=c?"":location.search;\r
67180 if(h.indexOf("?")==0){\r
67181 h=h.substr(1)\r
67182 }\r
67183 var s=h.split("&");\r
67184 var a={};\r
67185 for(var o=0;\r
67186 o<s.length;\r
67187 o++){\r
67188 var n=s[o].split("=");\r
67189 a[n[0]]=n[1]\r
67190 }\r
67191 for(var e in r){\r
67192 a[e]=r[e]\r
67193 }\r
67194 var t=[];\r
67195 var o=0;\r
67196 for(var e in a){\r
67197 if(e){\r
67198 t[o++]=[e,a[e]].join("=")\r
67199 }}\r
67200 return"?"+t.join("&")\r
67201 };\r
67202 AjxStringUtil.queryStringRemove=function(e,a){\r
67203 e=e?e:"";\r
67204 if(e.indexOf("?")==0){\r
67205 e=e.substr(1)\r
67206 }\r
67207 var n=e.split("&");\r
67208 var t=[];\r
67209 for(var o=0;\r
67210 o<n.length;\r
67211 o++){\r
67212 if(n[o].indexOf(a)!=0){\r
67213 t.push(n[o])\r
67214 }}\r
67215 return"?"+t.join("&")\r
67216 };\r
67217 AjxStringUtil.getAsString=function(e){\r
67218 return !e?"":(typeof(e)=="object")?e.toString():e\r
67219 };\r
67220 AjxStringUtil.isWhitespace=function(e){\r
67221 return(e.charCodeAt(0)<=32)\r
67222 };\r
67223 AjxStringUtil.isDigit=function(t){\r
67224 var e=t.charCodeAt(0);\r
67225 return(e>=48&&e<=57)\r
67226 };\r
67227 AjxStringUtil.compareRight=function(n,t){\r
67228 var s=0;\r
67229 var h=0;\r
67230 var r=0;\r
67231 var o;\r
67232 var e;\r
67233 for(;\r
67234 (h<n.length||r<t.length);\r
67235 h++,r++){\r
67236 o=n.charAt(h);\r
67237 e=t.charAt(r);\r
67238 if(!AjxStringUtil.isDigit(o)&&!AjxStringUtil.isDigit(e)){\r
67239 return s\r
67240 }else{\r
67241 if(!AjxStringUtil.isDigit(o)){\r
67242 return -1\r
67243 }else{\r
67244 if(!AjxStringUtil.isDigit(e)){\r
67245 return +1\r
67246 }else{\r
67247 if(o<e){\r
67248 if(s==0){\r
67249 s=-1\r
67250 }}else{\r
67251 if(o>e){\r
67252 if(s==0){\r
67253 s=+1\r
67254 }}}}}}}};\r
67255 AjxStringUtil.natCompare=function(c,h){\r
67256 var r=0,n=0;\r
67257 var t=0,e=0;\r
67258 var s,o;\r
67259 while(r<c.length||n<h.length){\r
67260 t=e=0;\r
67261 s=c.charAt(r);\r
67262 o=h.charAt(n);\r
67263 while(AjxStringUtil.isWhitespace(s)||s=="0"){\r
67264 t=(s=="0")?(t+1):0;\r
67265 s=c.charAt(++r)\r
67266 }\r
67267 while(AjxStringUtil.isWhitespace(o)||o=="0"){\r
67268 e=(o=="0")?(e+1):0;\r
67269 o=h.charAt(++n)\r
67270 }\r
67271 if(AjxStringUtil.isDigit(s)&&AjxStringUtil.isDigit(o)){\r
67272 var d=AjxStringUtil.compareRight(c.substring(r),h.substring(n));\r
67273 if(d&&d!=0){\r
67274 return d\r
67275 }}\r
67276 if(s==0&&o==0){\r
67277 return t-e\r
67278 }\r
67279 if(s<o){\r
67280 return -1\r
67281 }else{\r
67282 if(s>o){\r
67283 return +1\r
67284 }}\r
67285 ++r;\r
67286 ++n\r
67287 }};\r
67288 AjxStringUtil.clipFile=function(s,t){\r
67289 var a=s.lastIndexOf(".");\r
67290 var e=a?(a+1):s.length;\r
67291 if(e<=t){\r
67292 return s\r
67293 }else{\r
67294 var n=s.substr(0,a);\r
67295 var o=s.substr(a+1,s.length-1);\r
67296 return[n.substr(0,t/2),"...",n.substring(e-((t/2)-3),e),".",(o?o:"")].join("")\r
67297 }};\r
67298 AjxStringUtil.URL_PARSE_RE=new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?");\r
67299 AjxStringUtil.parseURL=function(a){\r
67300 var n=["source","protocol","authority","domain","port","path","directoryPath","fileName","query","anchor"];\r
67301 var o=AjxStringUtil.URL_PARSE_RE.exec(a);\r
67302 var t={};\r
67303 for(var e=0;\r
67304 e<n.length;\r
67305 e++){\r
67306 t[n[e]]=(o[e]?o[e]:"")\r
67307 }\r
67308 if(t.directoryPath.length>0){\r
67309 t.directoryPath=t.directoryPath.replace(/\/?$/,"/")\r
67310 }\r
67311 return t\r
67312 };\r
67313 AjxStringUtil.parseQueryString=function(s){\r
67314 var a=s||(""+window.location);\r
67315 var t=a.indexOf("?");\r
67316 if(t==-1){\r
67317 return null\r
67318 }\r
67319 var e=a.substring(t+1).replace(/#.*$/,"");\r
67320 var n=e.split("&");\r
67321 var h={};\r
67322 for(var o=0;\r
67323 o<n.length;\r
67324 o++){\r
67325 var r=n[o].split("=");\r
67326 h[r[0]]=r[1]\r
67327 }\r
67328 return h\r
67329 };\r
67330 AjxStringUtil._SPECIAL_CHARS=/["\\\x00-\x1f]/g;\r
67331 AjxStringUtil._CHARS={\r
67332 "\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};\r
67333 AjxStringUtil.objToString=function(n){\r
67334 var p=typeof n,h,c,r,s,m,f,d,e=[];\r
67335 var u=function(o){\r
67336 if(!AjxStringUtil._CHARS[o]){\r
67337 var t=o.charCodeAt();\r
67338 AjxStringUtil._CHARS[o]="\\u00"+Math.floor(t/16).toString(16)+(t%16).toString(16)\r
67339 }\r
67340 return AjxStringUtil._CHARS[o]\r
67341 };\r
67342 var g=function(t){\r
67343 return'"'+t.replace(AjxStringUtil._SPECIAL_CHARS,u)+'"'\r
67344 };\r
67345 if(p==="string"){\r
67346 return g(n)\r
67347 }\r
67348 if(p==="boolean"||n instanceof Boolean){\r
67349 return String(n)\r
67350 }\r
67351 if(p==="number"||n instanceof Number){\r
67352 return isFinite(n)?String(n):"null"\r
67353 }\r
67354 if(AjxUtil.isArray(n)||(p==="object"&&n.length)){\r
67355 for(h=e.length-1;\r
67356 h>=0;\r
67357 --h){\r
67358 if(e[h]===n){\r
67359 return"null"\r
67360 }}\r
67361 e[e.length]=n;\r
67362 d=[];\r
67363 for(h=n.length-1;\r
67364 h>=0;\r
67365 --h){\r
67366 d[h]=AjxStringUtil.objToString(n[h])\r
67367 }\r
67368 e.pop();\r
67369 return"["+d.join(",")+"]"\r
67370 }\r
67371 if(p==="object"&&n){\r
67372 for(h=e.length-1;\r
67373 h>=0;\r
67374 --h){\r
67375 if(e[h]===n){\r
67376 return"null"\r
67377 }}\r
67378 e[e.length]=n;\r
67379 d=[];\r
67380 r=0;\r
67381 for(s in n){\r
67382 if(typeof s==="string"&&n.hasOwnProperty(s)){\r
67383 m=n[s];\r
67384 f=typeof m;\r
67385 if(f!=="undefined"&&f!=="function"){\r
67386 d[r++]=g(s)+":"+AjxStringUtil.objToString(m)\r
67387 }}}\r
67388 e.pop();\r
67389 return"{"+d.join(",")+"}"\r
67390 }\r
67391 return"null"\r
67392 };\r
67393 AjxStringUtil.prettyPrint=function(o,a,e,t){\r
67394 AjxStringUtil._visited=new AjxVector();\r
67395 var n=AjxStringUtil._prettyPrint(o,a,e,t);\r
67396 AjxStringUtil._visited=null;\r
67397 return n\r
67398 };\r
67399 AjxStringUtil._visited=null;\r
67400 AjxStringUtil._prettyPrint=function(r,e,u,t){\r
67401 var p=0;\r
67402 var n=false;\r
67403 var w=false;\r
67404 if(arguments.length>4){\r
67405 p=arguments[4];\r
67406 n=arguments[5];\r
67407 w=arguments[6]\r
67408 }\r
67409 if(AjxUtil.isObject(r)){\r
67410 var d=r.toString();\r
67411 if(t&&t[d]){\r
67412 return"["+d+"]"\r
67413 }\r
67414 if(AjxStringUtil._visited.contains(r)){\r
67415 return"[visited object]"\r
67416 }else{\r
67417 AjxStringUtil._visited.add(r)\r
67418 }}\r
67419 var a=AjxStringUtil.repeat(" ",p);\r
67420 var g="";\r
67421 if(r===undefined){\r
67422 g+="[undefined]"\r
67423 }else{\r
67424 if(r===null){\r
67425 g+="[null]"\r
67426 }else{\r
67427 if(AjxUtil.isBoolean(r)){\r
67428 g+=r?"true":"false"\r
67429 }else{\r
67430 if(AjxUtil.isString(r)){\r
67431 g+='"'+AjxStringUtil._escapeForHTML(r)+'"'\r
67432 }else{\r
67433 if(AjxUtil.isNumber(r)){\r
67434 g+=r\r
67435 }else{\r
67436 if(AjxUtil.isObject(r)){\r
67437 var h=AjxUtil.isArray(r);\r
67438 if(w){\r
67439 g+=h?"[Array]":r.toString()\r
67440 }else{\r
67441 w=!e;\r
67442 var y=new Array();\r
67443 for(var s in r){\r
67444 y.push(s)\r
67445 }\r
67446 if(h){\r
67447 y.sort(function(k,v){\r
67448 return k-v\r
67449 }\r
67450 )\r
67451 }else{\r
67452 y.sort()\r
67453 }\r
67454 if(n){\r
67455 g+=h?"[":"{"\r
67456 }\r
67457 var c=y.length;\r
67458 for(var s=0;\r
67459 s<c;\r
67460 s++){\r
67461 var f=y[s];\r
67462 var o=r[f];\r
67463 var m=null;\r
67464 if(o==window||o==document||(!AjxEnv.isIE&&o instanceof Node)){\r
67465 m=o.toString()\r
67466 }\r
67467 if((typeof(o)=="function")){\r
67468 if(u){\r
67469 m="[function]"\r
67470 }else{\r
67471 continue\r
67472 }}\r
67473 if(s>0){\r
67474 g+=","\r
67475 }\r
67476 g+="\n"+a;\r
67477 if(m!=null){\r
67478 g+=f+": "+m\r
67479 }else{\r
67480 g+=f+": "+this._prettyPrint(o,e,u,t,p+2,true,w)\r
67481 }}\r
67482 if(s>0){\r
67483 g+="\n"+AjxStringUtil.repeat(" ",p-1)\r
67484 }\r
67485 if(n){\r
67486 g+=h?"]":"}"\r
67487 }}}}}}}}\r
67488 return g\r
67489 };\r
67490 AjxStringUtil._escapeForHTML=function(t){\r
67491 if(typeof(t)!="string"){\r
67492 return t\r
67493 }\r
67494 var e=t;\r
67495 e=e.replace(/\&/g,"&amp;");\r
67496 e=e.replace(/\</g,"&lt;");\r
67497 e=e.replace(/\>/g,"&gt;");\r
67498 e=e.replace(/\"/g,"&quot;");\r
67499 e=e.replace(/\xA0/g,"&nbsp;");\r
67500 return e\r
67501 }\r
67502 }\r
67503 if(AjxPackage.define("ajax.xml.AjxXmlDoc")){\r
67504 AjxXmlDoc=function(){\r
67505 if(!AjxXmlDoc._inited){\r
67506 AjxXmlDoc._init()\r
67507 }};\r
67508 AjxXmlDoc.prototype.toString=function(){\r
67509 return"AjxXmlDoc"\r
67510 };\r
67511 AjxXmlDoc.INVALID_CHARS_RE=/[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/g;\r
67512 AjxXmlDoc.REC_AVOID_CHARS_RE=/[\u007F-\u0084\u0086-\u009F\uFDD0-\uFDDF]/g;\r
67513 AjxXmlDoc._inited=false;\r
67514 AjxXmlDoc._msxmlVers=null;\r
67515 AjxXmlDoc.create=function(){\r
67516 var t=new AjxXmlDoc();\r
67517 var e=null;\r
67518 if(AjxEnv.isIE){\r
67519 e=new ActiveXObject(AjxXmlDoc._msxmlVers);\r
67520 e.async=true;\r
67521 if(AjxXmlDoc._msxmlVers=="MSXML2.DOMDocument.4.0"){\r
67522 e.setProperty("SelectionLanguage","XPath");\r
67523 e.setProperty("SelectionNamespaces","xmlns:zimbra='urn:zimbra' xmlns:mail='urn:zimbraMail' xmlns:account='urn:zimbraAccount'")\r
67524 }}else{\r
67525 if(document.implementation&&document.implementation.createDocument){\r
67526 e=document.implementation.createDocument("","",null)\r
67527 }else{\r
67528 throw new AjxException("Unable to create new Doc",AjxException.INTERNAL_ERROR,"AjxXmlDoc.create")\r
67529 }}\r
67530 t._doc=e;\r
67531 return t\r
67532 };\r
67533 AjxXmlDoc.createFromDom=function(t){\r
67534 var e=new AjxXmlDoc();\r
67535 e._doc=t;\r
67536 return e\r
67537 };\r
67538 AjxXmlDoc.createFromXml=function(e){\r
67539 var t=AjxXmlDoc.create();\r
67540 t.loadFromString(e);\r
67541 return t\r
67542 };\r
67543 AjxXmlDoc.replaceInvalidChars=function(e){\r
67544 AjxXmlDoc.INVALID_CHARS_RE.lastIndex=0;\r
67545 return e.replace(AjxXmlDoc.INVALID_CHARS_RE,"?")\r
67546 };\r
67547 AjxXmlDoc.getXml=function(t){\r
67548 var e=new XMLSerializer();\r
67549 return AjxXmlDoc.replaceInvalidChars(e.serializeToString(t))\r
67550 };\r
67551 AjxXmlDoc.prototype.getDoc=function(){\r
67552 return this._doc\r
67553 };\r
67554 AjxXmlDoc.prototype.loadFromString=function(t){\r
67555 var e=this._doc;\r
67556 e.loadXML(t);\r
67557 if(AjxEnv.isIE){\r
67558 if(e.parseError.errorCode!=0){\r
67559 throw new AjxException(e.parseError.reason,AjxException.INVALID_PARAM,"AjxXmlDoc.loadFromString")\r
67560 }}};\r
67561 AjxXmlDoc.prototype.loadFromUrl=function(e){\r
67562 this._doc.load(e)\r
67563 };\r
67564 AjxXmlDoc.prototype.toJSObject=function(a,t,e){\r
67565 _node=function(){\r
67566 this.__msh_content=""\r
67567 };\r
67568 _node.prototype.toString=function(){\r
67569 return this.__msh_content\r
67570 };\r
67571 rec=function(c,d){\r
67572 var r={}\r
67573 ,h,u;\r
67574 for(c=c.firstChild;\r
67575 c;\r
67576 c=c.nextSibling){\r
67577 if(c.nodeType==1){\r
67578 h=c.tagName;\r
67579 if(a){\r
67580 h=h.replace(/^.*?:/,"")\r
67581 }\r
67582 if(t){\r
67583 h=h.toLowerCase()\r
67584 }\r
67585 u=new _node();\r
67586 if(r[h]){\r
67587 if(r[h]==1){\r
67588 d[h]=[d[h]];\r
67589 r[h]=2\r
67590 }\r
67591 d[h].push(u)\r
67592 }else{\r
67593 d[h]=u;\r
67594 r[h]=1\r
67595 }\r
67596 if(e){\r
67597 if(c.attributes&&c.attributes.length){\r
67598 for(var s=0;\r
67599 s<c.attributes.length;\r
67600 s++){\r
67601 attr=c.attributes[s];\r
67602 u[attr.name]=AjxUtil.isNumeric(attr.value)?attr.value:String(attr.value)\r
67603 }}}\r
67604 rec(c,u)\r
67605 }else{\r
67606 if(c.nodeType==3){\r
67607 d.__msh_content+=c.nodeValue\r
67608 }}}};\r
67609 var n=new _node();\r
67610 rec(this._doc.documentElement,n);\r
67611 return n\r
67612 };\r
67613 AjxXmlDoc.prototype.getElementsByTagNameNS=function(t,e){\r
67614 var a=this.getDoc();\r
67615 return AjxEnv.isIE?a.getElementsByTagName(t+":"+e):a.getElementsByTagNameNS(t,e)\r
67616 };\r
67617 AjxXmlDoc.prototype.getFirstElementByTagNameNS=function(t,e){\r
67618 return this.getElementsByTagNameNS(t,e)[0]\r
67619 };\r
67620 AjxXmlDoc.prototype.getElementsByTagName=function(e){\r
67621 var t=this.getDoc();\r
67622 return t.getElementsByTagName(e)\r
67623 };\r
67624 AjxXmlDoc._init=function(){\r
67625 if(AjxEnv.isIE){\r
67626 var e=["MSXML4.DOMDocument","MSXML3.DOMDocument","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XmlDom"];\r
67627 for(var a=0;\r
67628 a<e.length;\r
67629 a++){\r
67630 try{\r
67631 new ActiveXObject(e[a]);\r
67632 AjxXmlDoc._msxmlVers=e[a];\r
67633 break\r
67634 }\r
67635 catch(t){}}\r
67636 if(!AjxXmlDoc._msxmlVers){\r
67637 throw new AjxException("MSXML not installed",AjxException.INTERNAL_ERROR,"AjxXmlDoc._init")\r
67638 }}else{\r
67639 if(AjxEnv.isNav||AjxEnv.isOpera||AjxEnv.isSafari){\r
67640 Document.prototype.loadXML=function(c){\r
67641 var h=new DOMParser();\r
67642 var n=h.parseFromString(c,"text/xml");\r
67643 while(this.hasChildNodes()){\r
67644 this.removeChild(this.lastChild)\r
67645 }\r
67646 var o=n.childNodes.length;\r
67647 for(var s=0;\r
67648 s<o;\r
67649 s++){\r
67650 var r=this.importNode(n.childNodes[s],true);\r
67651 this.appendChild(r)\r
67652 }};\r
67653 if(AjxEnv.isNav){\r
67654 _NodeGetXml=function(){\r
67655 var o=new XMLSerializer();\r
67656 return o.serializeToString(this)\r
67657 };\r
67658 Node.prototype.__defineGetter__("xml",_NodeGetXml)\r
67659 }}}\r
67660 AjxXmlDoc._inited=true\r
67661 };\r
67662 AjxXmlDoc.prototype.set=function(e,o,t){\r
67663 var n=this._doc.createElement(e);\r
67664 if(o!=null){\r
67665 var a=this._doc.createTextNode("");\r
67666 n.appendChild(a);\r
67667 a.nodeValue=o\r
67668 }\r
67669 if(t==null){\r
67670 this.root.appendChild(n)\r
67671 }else{\r
67672 t.appendChild(n)\r
67673 }\r
67674 return n\r
67675 };\r
67676 AjxXmlDoc.prototype.getDocXml=function(){\r
67677 if(AjxEnv.isSafari){\r
67678 return AjxXmlDoc.getXml(this.getDoc())\r
67679 }else{\r
67680 return AjxXmlDoc.replaceInvalidChars(this.getDoc().xml)\r
67681 }};\r
67682 AjxXmlDoc.createRoot=function(a){\r
67683 var e=AjxXmlDoc.create();\r
67684 var t=e.getDoc();\r
67685 e.root=t.createElement(a);\r
67686 t.appendChild(e.root);\r
67687 return e\r
67688 };\r
67689 AjxXmlDoc.createElement=function(t,o){\r
67690 var e=AjxXmlDoc.create();\r
67691 var n=e.getDoc();\r
67692 e.root=n.createElement(t);\r
67693 if(o!=null){\r
67694 var a=n.createTextNode("");\r
67695 e.root.appendChild(a);\r
67696 a.nodeValue=o\r
67697 }\r
67698 n.appendChild(e.root);\r
67699 return e\r
67700 };\r
67701 AjxXmlDoc.prototype.appendChild=function(e){\r
67702 this.root.appendChild(e.root)\r
67703 }\r
67704 }\r
67705 if(AjxPackage.define("ajax.core.AjxImg")){\r
67706 AjxImg=function(){};\r
67707 AjxImg.prototype=new Object;\r
67708 AjxImg.prototype.constructor=null;\r
67709 AjxImg._VIEWPORT_ID="AjxImg_VP";\r
67710 AjxImg.DISABLED=true;\r
67711 AjxImg.RE_COLOR=/^(.*?),color=(.*)$/;\r
67712 AjxImg.setImage=function(a,g,f,o){\r
67713 var u,c=g.match(AjxImg.RE_COLOR);\r
67714 if(c){\r
67715 g=c&&c[1];\r
67716 u=c&&c[2]\r
67717 }\r
67718 var e=AjxImg.getClassForImage(g,o);\r
67719 if(f){\r
67720 a.className=e;\r
67721 return\r
67722 }\r
67723 var w=e+"Overlay";\r
67724 var n=e+"Mask";\r
67725 if(u&&window.AjxImgData&&AjxImgData[w]&&AjxImgData[n]){\r
67726 u=(u.match(/^\d$/)?ZmOrganizer.COLOR_VALUES[u]:u)||ZmOrganizer.COLOR_VALUES[ZmOrganizer.ORG_DEFAULT_COLOR];\r
67727 var y=AjxImgData[w],p=AjxImgData[n];\r
67728 if(AjxEnv.isIE){\r
67729 var v="";\r
67730 var s=["width:",y.w,";","height:",y.h,";"].join("");\r
67731 var k=["top:",p.t,";","left:",p.l,";"].join("");\r
67732 if(typeof document.documentMode!="undefined"){\r
67733 v=["clip:rect(",(-1*p.t)-1,"px, ",y.w-1,"px, ",(p.t*-1)+y.h-1,"px, ",y.l,"px);"].join("")\r
67734 }\r
67735 a.innerHTML=["<div style='position:relative;",s,"'>","<div style='overflow:hidden;position:relative;",s,"'>","<img src='",p.f,"' ","style='filter:mask(color=",u,");position:absolute;",k,v,"'>","</div>","<div class='",w,"' style='",s,";position:absolute;top:0;left:0'></div>","</div>"].join("");\r
67736 return\r
67737 }\r
67738 if(!y[u]){\r
67739 var h=y.w,r=y.h;\r
67740 var t=document.createElement("CANVAS");\r
67741 t.width=h;\r
67742 t.height=r;\r
67743 var d=t.getContext("2d");\r
67744 d.save();\r
67745 d.clearRect(0,0,h,r);\r
67746 d.save();\r
67747 d.drawImage(document.getElementById(n),p.l,p.t);\r
67748 d.globalCompositeOperation="source-out";\r
67749 d.fillStyle=u;\r
67750 d.fillRect(0,0,h,r);\r
67751 d.restore();\r
67752 d.drawImage(document.getElementById(w),y.l,y.t);\r
67753 d.restore();\r
67754 y[u]=t.toDataURL()\r
67755 }\r
67756 a.innerHTML=["<img src='",y[u],"'>"].join("");\r
67757 return\r
67758 }\r
67759 if(a.firstChild==null){\r
67760 a.innerHTML=e?"<div class='"+e+"'></div>":"<div></div>";\r
67761 return\r
67762 }\r
67763 a.firstChild.className=e\r
67764 };\r
67765 AjxImg.setDisabledImage=function(t,a,e){\r
67766 return AjxImg.setImage(t,a,e,true)\r
67767 };\r
67768 AjxImg.getClassForImage=function(a,t){\r
67769 var e="Img"+a;\r
67770 if(t){\r
67771 e+=" ZDisabledImage"\r
67772 }\r
67773 return e\r
67774 };\r
67775 AjxImg.getImageClass=function(e){\r
67776 return e.firstChild?e.firstChild.className:e.className\r
67777 };\r
67778 AjxImg.getImageElement=function(e){\r
67779 return e.firstChild?e.firstChild:e\r
67780 };\r
67781 AjxImg.getParentElement=function(e){\r
67782 return e.parentNode\r
67783 };\r
67784 AjxImg.getImageHtml=function(o,s,e,a){\r
67785 e=e||"";\r
67786 s=s?(["style='",s,"' "].join("")):"";\r
67787 var n=a?"<table style='display:inline' cellpadding=0 cellspacing=0 border=0><tr><td align=center valign=bottom>":"";\r
67788 var t=a?"</td></tr></table>":"";\r
67789 if(o){\r
67790 return[n,"<div class='","Img",o,"' ",s," ",e,"></div>",t].join("")\r
67791 }\r
67792 return[n,"<div ",s," ",e,"></div>",t].join("")\r
67793 };\r
67794 AjxImg.getImageSpanHtml=function(s,r,e,t){\r
67795 var n=AjxImg.getClassForImage(s);\r
67796 var o=[];\r
67797 var a=0;\r
67798 o[a++]="<span style='white-space:nowrap'>";\r
67799 o[a++]="<span class='";\r
67800 o[a++]=n;\r
67801 o[a++]=" inlineIcon'";\r
67802 o[a++]=r?([" style='",r,"' "].join("")):"";\r
67803 o[a++]=e?([" ",e].join("")):"";\r
67804 o[a++]=">&nbsp;&nbsp;&nbsp;</span>";\r
67805 o[a++]=(t||"");\r
67806 o[a++]="</span>";\r
67807 return o.join("")\r
67808 }\r
67809 }\r
67810 if(AjxPackage.define("ajax.core.AjxColor")){\r
67811 AjxColor=function(a,t,e){\r
67812 if(arguments.length==0){\r
67813 return\r
67814 }\r
67815 this.r=a;\r
67816 this.g=t;\r
67817 this.b=e\r
67818 };\r
67819 AjxColor.prototype.toString=function(){\r
67820 return AjxColor.color(this.r,this.g,this.b)\r
67821 };\r
67822 AjxColor.components=function(t){\r
67823 var e=AjxColor.__RE.exec(t);\r
67824 return e?[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]:null\r
67825 };\r
67826 AjxColor.color=function(a,t,e){\r
67827 return["#",AjxColor.__pad(Number(Math.round(a)).toString(16),2),AjxColor.__pad(Number(Math.round(t)).toString(16),2),AjxColor.__pad(Number(Math.round(e)).toString(16),2)].join("")\r
67828 };\r
67829 AjxColor.lighten=function(e,a){\r
67830 var t=AjxColor.components(e);\r
67831 return t?AjxColor.color(AjxColor.__lighten(t[0],a),AjxColor.__lighten(t[1],a),AjxColor.__lighten(t[2],a)):""\r
67832 };\r
67833 AjxColor.darken=function(e,a){\r
67834 var t=AjxColor.components(e);\r
67835 return t?AjxColor.color(AjxColor.__darken(t[0],a),AjxColor.__darken(t[1],a),AjxColor.__darken(t[2],a)):""\r
67836 };\r
67837 AjxColor.deepen=function(e,a){\r
67838 var s=AjxColor.components(e);\r
67839 var t=0;\r
67840 for(var o=1;\r
67841 o<s.length;\r
67842 o++){\r
67843 if(s[o]>s[t]){\r
67844 t=o\r
67845 }}\r
67846 for(var o=0;\r
67847 o<s.length;\r
67848 o++){\r
67849 var n=s[o]/s[t];\r
67850 s[o]=Math.floor(s[o]*n*(a||1))\r
67851 }\r
67852 return AjxColor.color(s[0],s[1],s[2])\r
67853 };\r
67854 AjxColor.__RE=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i;\r
67855 AjxColor.__pad=function(n,a,o){\r
67856 if(!o){\r
67857 o="0"\r
67858 }\r
67859 var t=String(n);\r
67860 for(var e=t.length;\r
67861 e<a;\r
67862 e++){\r
67863 t=o+t\r
67864 }\r
67865 return t\r
67866 };\r
67867 AjxColor.__lighten=function(e,t){\r
67868 return Math.max(0,Math.min(255,e+(255-e)*t))\r
67869 };\r
67870 AjxColor.__darken=function(e,t){\r
67871 return Math.max(0,Math.min(255,e+(1-e)*t))\r
67872 }\r
67873 }\r
67874 if(AjxPackage.define("ajax.events.AjxEvent")){\r
67875 AjxEvent=function(){\r
67876 this.data=null\r
67877 };\r
67878 AjxEvent.HISTORY="HISTORY";\r
67879 AjxEvent.prototype.toString=function(){\r
67880 return"AjxEvent"\r
67881 }\r
67882 }\r
67883 if(AjxPackage.define("ajax.events.AjxEventMgr")){\r
67884 AjxEventMgr=function(){\r
67885 this._listeners=new Object()\r
67886 };\r
67887 AjxEventMgr.prototype.toString=function(){\r
67888 return"AjxEventMgr"\r
67889 };\r
67890 AjxEventMgr.prototype.addListener=function(t,a,e){\r
67891 var o=this._listeners[t];\r
67892 if(o==null){\r
67893 o=this._listeners[t]=new AjxVector()\r
67894 }\r
67895 if(!o.contains(a)){\r
67896 if(this._notifyingListeners){\r
67897 o=this._listeners[t]=o.clone()\r
67898 }\r
67899 o.add(a,e);\r
67900 return true\r
67901 }\r
67902 return false\r
67903 };\r
67904 AjxEventMgr.prototype.notifyListeners=function(o,r){\r
67905 this._notifyingListeners=true;\r
67906 var d=this._listeners[o];\r
67907 if(d!=null){\r
67908 var e=d.getArray();\r
67909 var n=d.size();\r
67910 var h=null;\r
67911 var u=null;\r
67912 for(var t=0;\r
67913 t<n;\r
67914 t++){\r
67915 u=e[t];\r
67916 if(!(u&&((u instanceof AjxListener)||(typeof u=="function")))){\r
67917 continue\r
67918 }\r
67919 h=u.handleEvent?u.handleEvent(r):u(r);\r
67920 if(h===false){\r
67921 break\r
67922 }}}\r
67923 this._notifyingListeners=false;\r
67924 return h\r
67925 };\r
67926 AjxEventMgr.prototype.isListenerRegistered=function(e){\r
67927 var t=this._listeners[e];\r
67928 return(t!=null&&t.size()>0)\r
67929 };\r
67930 AjxEventMgr.prototype.removeListener=function(e,t){\r
67931 var a=this._listeners[e];\r
67932 if(a!=null){\r
67933 if(this._notifyingListeners){\r
67934 a=this._listeners[e]=a.clone()\r
67935 }\r
67936 a.remove(t);\r
67937 return true\r
67938 }\r
67939 return false\r
67940 };\r
67941 AjxEventMgr.prototype.removeAll=function(e){\r
67942 var t=this._listeners[e];\r
67943 if(t!=null){\r
67944 if(this._notifyingListeners){\r
67945 t=this._listeners[e]=t.clone()\r
67946 }\r
67947 t.removeAll();\r
67948 return true\r
67949 }\r
67950 return false\r
67951 }\r
67952 }\r
67953 if(AjxPackage.define("ajax.util.AjxTimedAction")){\r
67954 AjxTimedAction=function(a,t,e){\r
67955 AjxCallback.call(this,a,t,e);\r
67956 this._tid=-1;\r
67957 this._id=-1;\r
67958 this._runResult=null\r
67959 };\r
67960 AjxTimedAction.prototype=new AjxCallback();\r
67961 AjxTimedAction.prototype.constructor=AjxTimedAction;\r
67962 AjxTimedAction.MAX_TIMEOUT=20*24*60*60*1000;\r
67963 AjxTimedAction.prototype.toString=function(){\r
67964 return"AjxTimedAction"\r
67965 };\r
67966 AjxTimedAction.prototype.getRunResult=function(){\r
67967 return this._runResult\r
67968 };\r
67969 AjxTimedAction._pendingActions={};\r
67970 AjxTimedAction._nextActionId=1;\r
67971 AjxTimedAction.scheduleAction=function(a,t){\r
67972 if(!a){\r
67973 return\r
67974 }\r
67975 if(a._tid&&a._tid!=-1){\r
67976 AjxTimedAction.cancelAction(a._id)\r
67977 }\r
67978 t=t||0;\r
67979 if(t>AjxTimedAction.MAX_TIMEOUT){\r
67980 if(window.DBG){}\r
67981 t=AjxTimedAction.MAX_TIMEOUT\r
67982 }\r
67983 var o=a._id=AjxTimedAction._nextActionId++;\r
67984 AjxTimedAction._pendingActions[o]=a;\r
67985 var e="AjxTimedAction._exec("+o+")";\r
67986 a._tid=window.setTimeout(e,t);\r
67987 return a._id\r
67988 };\r
67989 AjxTimedAction.cancelAction=function(t){\r
67990 var e=AjxTimedAction._pendingActions[t];\r
67991 if(e){\r
67992 window.clearTimeout(e._tid);\r
67993 delete AjxTimedAction._pendingActions[t];\r
67994 delete e._tid\r
67995 }};\r
67996 AjxTimedAction._exec=function(t){\r
67997 var e=AjxTimedAction._pendingActions[t];\r
67998 if(e){\r
67999 delete AjxTimedAction._pendingActions[t];\r
68000 delete e._tid;\r
68001 e._runResult=e.run()\r
68002 }}\r
68003 }\r
68004 if(AjxPackage.define("ajax.net.AjxInclude")){\r
68005 AjxInclude=function(o,s,n,a){\r
68006 var t=document.getElementsByTagName("head")[0];\r
68007 function e(h){\r
68008 if(AjxEnv.isIE&&h&&!/loaded|complete/.test(h.readyState)){\r
68009 return\r
68010 }\r
68011 if(h){\r
68012 h[AjxInclude.eventName]=null\r
68013 }\r
68014 var r=AjxInclude.dwhack_scripts.length>0?AjxInclude.dwhack_scripts:o;\r
68015 window.status="";\r
68016 if(r.length>0){\r
68017 var d=r.shift();\r
68018 var u=d;\r
68019 if(!/^((https?|ftps?):\x2f\x2f|\x2f)/.test(d)){\r
68020 if(s){\r
68021 d=s+d\r
68022 }\r
68023 if(cacheKillerVersion){\r
68024 d+="?v="+cacheKillerVersion\r
68025 }}else{\r
68026 if(a&&d.indexOf("/")!=0){\r
68027 d=a+AjxStringUtil.urlEncode(d)\r
68028 }}\r
68029 var h=document.createElement("script");\r
68030 var c=AjxCallback.simpleClosure(e,null,h);\r
68031 if(AjxEnv.isIE){\r
68032 h.attachEvent("onreadystatechange",c);\r
68033 h.attachEvent("onerror",c)\r
68034 }else{\r
68035 h.addEventListener("load",c,true);\r
68036 h.addEventListener("error",c,true)\r
68037 }\r
68038 h.type="text/javascript";\r
68039 h.src=d;\r
68040 window.status="Loading script: "+u;\r
68041 t.appendChild(h)\r
68042 }else{\r
68043 if(o.length==0){\r
68044 h=null;\r
68045 t=null;\r
68046 if(n){\r
68047 n.run()\r
68048 }}}}\r
68049 e(null)\r
68050 };\r
68051 AjxInclude.dwhack_scripts=[];\r
68052 document.write=document.writeln=function(){\r
68053 var e=[];\r
68054 for(var t=0;\r
68055 t<arguments.length;\r
68056 ++t){\r
68057 e[t]=arguments[t]\r
68058 }\r
68059 var o=e.join("");\r
68060 if(/<script[^>]+src=([\x22\x27])(.*?)\1/i.test(o)){\r
68061 AjxInclude.dwhack_scripts.push(RegExp.$2)\r
68062 }};\r
68063 if(AjxEnv.isIE){\r
68064 AjxInclude._removeWriteln=function(){\r
68065 document.write=document.writeln=null;\r
68066 window.detachEvent("onunload",AjxInclude._removeWriteln)\r
68067 };\r
68068 window.attachEvent("onunload",AjxInclude._removeWriteln)\r
68069 }}\r
68070 \r
68071 if(AjxPackage.define("ajax.events.AjxListener")){\r
68072 AjxListener=function(t,a,e){\r
68073 AjxCallback.call(this,t,a,e)\r
68074 };\r
68075 AjxListener.prototype=new AjxCallback();\r
68076 AjxListener.prototype.constructor=AjxListener;\r
68077 AjxListener.prototype.toString=function(){\r
68078 return"AjxListener"\r
68079 };\r
68080 AjxListener.prototype.handleEvent=function(e){\r
68081 return this.run(e)\r
68082 }\r
68083 }\r
68084 if(AjxPackage.define("ajax.util.AjxText")){\r
68085 AjxFormat=function(e){\r
68086 this._pattern=e;\r
68087 this._segments=[]\r
68088 };\r
68089 AjxFormat.prototype.toString=function(){\r
68090 var t=[];\r
68091 t.push('pattern="',this._pattern,'"');\r
68092 if(this._segments.length>0){\r
68093 t.push(", segments={ ");\r
68094 for(var e=0;\r
68095 e<this._segments.length;\r
68096 e++){\r
68097 if(e>0){\r
68098 t.push(", ")\r
68099 }\r
68100 t.push(String(this._segments[e]))\r
68101 }\r
68102 t.push(" }")\r
68103 }\r
68104 return t.join("")\r
68105 };\r
68106 AjxFormat.prototype._pattern;\r
68107 AjxFormat.prototype._segments;\r
68108 AjxFormat.initialize=function(){\r
68109 AjxDateFormat.initialize();\r
68110 AjxNumberFormat.initialize()\r
68111 };\r
68112 AjxFormat.prototype.format=function(e){\r
68113 var a=[];\r
68114 for(var t=0;\r
68115 t<this._segments.length;\r
68116 t++){\r
68117 a.push(this._segments[t].format(e))\r
68118 }\r
68119 return a.join("")\r
68120 };\r
68121 AjxFormat.prototype.parse=function(o){\r
68122 var t=this._createParseObject();\r
68123 var e=0;\r
68124 for(var a=0;\r
68125 a<this._segments.length;\r
68126 a++){\r
68127 var n=this._segments[a];\r
68128 e=n.parse(t,o,e)\r
68129 }\r
68130 if(e<o.length){\r
68131 throw new AjxFormat.ParsingException(this,null,"input too long")\r
68132 }\r
68133 return t\r
68134 };\r
68135 AjxFormat.prototype.getSegments=function(){\r
68136 return this._segments\r
68137 };\r
68138 AjxFormat.prototype.toPattern=function(){\r
68139 return this._pattern\r
68140 };\r
68141 AjxFormat.prototype.clone=function(){\r
68142 return new this.constructor(this._pattern)\r
68143 };\r
68144 AjxFormat.prototype._createParseObject=function(e){\r
68145 throw new AjxFormat.ParsingException(this,null,"not implemented")\r
68146 };\r
68147 AjxFormat._zeroPad=function(n,r,t,h){\r
68148 n=typeof n=="string"?n:String(n);\r
68149 if(n.length>=r){\r
68150 return n\r
68151 }\r
68152 t=t||"0";\r
68153 var e=[];\r
68154 for(var o=n.length;\r
68155 o<r;\r
68156 o++){\r
68157 e.push(t)\r
68158 }\r
68159 e[h?"unshift":"push"](n);\r
68160 return e.join("")\r
68161 };\r
68162 AjxFormat.FormatException=function(t,e){\r
68163 this._format=t;\r
68164 this._message=e\r
68165 };\r
68166 AjxFormat.FormatException.prototype.toString=function(){\r
68167 return this._message\r
68168 };\r
68169 AjxFormat.FormatException.prototype._format;\r
68170 AjxFormat.FormatException.prototype._message;\r
68171 AjxFormat.FormattingException=function(a,t,e){\r
68172 AjxFormat.FormatException.call(this,a,e);\r
68173 this._segment=t\r
68174 };\r
68175 AjxFormat.FormattingException.prototype=new AjxFormat.FormatException;\r
68176 AjxFormat.FormattingException.prototype.constructor=AjxFormat.FormattingException;\r
68177 AjxFormat.FormattingException.prototype._segment;\r
68178 AjxFormat.ParsingException=function(a,t,e){\r
68179 AjxFormat.FormatException.call(this,a,e);\r
68180 this._segment=t\r
68181 };\r
68182 AjxFormat.ParsingException.prototype=new AjxFormat.FormatException;\r
68183 AjxFormat.ParsingException.prototype.constructor=AjxFormat.ParsingException;\r
68184 AjxFormat.ParsingException.prototype._segment;\r
68185 AjxFormat.Segment=function(t,e){\r
68186 this._parent=t;\r
68187 this._s=e\r
68188 };\r
68189 AjxFormat.Segment.prototype.toString=function(){\r
68190 return'segment: "'+this._s+'"'\r
68191 };\r
68192 AjxFormat.Segment.prototype._parent;\r
68193 AjxFormat.Segment.prototype._s;\r
68194 AjxFormat.Segment.prototype.format=function(e){\r
68195 return this._s\r
68196 };\r
68197 AjxFormat.Segment.prototype.parse=function(a,t,e){\r
68198 throw new AjxFormat.ParsingException(this._parent,this,"not implemented")\r
68199 };\r
68200 AjxFormat.Segment.prototype.getFormat=function(){\r
68201 return this._parent\r
68202 };\r
68203 AjxFormat.Segment.prototype.toSubPattern=function(){\r
68204 return this._s\r
68205 };\r
68206 AjxFormat.Segment.prototype._getFixedLength=function(){\r
68207 var e;\r
68208 if(this._index+1<this._parent._segments.length){\r
68209 var t=this._parent._segments[this._index+1];\r
68210 if(!(t instanceof AjxFormat.TextSegment)){\r
68211 e=this._s.length\r
68212 }}\r
68213 return e\r
68214 };\r
68215 AjxFormat.Segment._parseLiteral=function(o,a,e){\r
68216 if(a.length-e<o.length){\r
68217 throw new AjxFormat.ParsingException(this._parent,this,"input too short")\r
68218 }\r
68219 for(var t=0;\r
68220 t<o.length;\r
68221 t++){\r
68222 if(o.charAt(t)!=a.charAt(e+t)){\r
68223 throw new AjxFormat.ParsingException(this._parent,this,"input doesn't match")\r
68224 }}\r
68225 return e+o.length\r
68226 };\r
68227 AjxFormat.Segment._parseLiterals=function(a,h,m,t,g,c){\r
68228 for(var r=0;\r
68229 r<t.length;\r
68230 r++){\r
68231 try{\r
68232 var p=t[r];\r
68233 var n=AjxFormat.Segment._parseLiteral(p,g,c);\r
68234 if(h){\r
68235 var u=a||window;\r
68236 if(typeof h=="function"){\r
68237 h.call(u,r+m)\r
68238 }else{\r
68239 u[h]=r+m\r
68240 }}\r
68241 return n\r
68242 }\r
68243 catch(d){}}\r
68244 return -1\r
68245 };\r
68246 AjxFormat.Segment._parseInt=function(t,n,g,y,r,e,m){\r
68247 var h=e||y.length-r;\r
68248 var u=r;\r
68249 for(var a=0;\r
68250 a<h;\r
68251 a++){\r
68252 if(!y.charAt(r++).match(/\d/)){\r
68253 r--;\r
68254 break\r
68255 }}\r
68256 var d=r;\r
68257 if(u==d){\r
68258 throw new AjxFormat.ParsingException(this._parent,this,"number not present")\r
68259 }\r
68260 if(e&&d-u!=e){\r
68261 throw new AjxFormat.ParsingException(this._parent,this,"number too short")\r
68262 }\r
68263 var p=parseInt(y.substring(u,d),m||10);\r
68264 if(n){\r
68265 var c=t||window;\r
68266 if(typeof n=="function"){\r
68267 n.call(c,p+g)\r
68268 }else{\r
68269 c[n]=p+g\r
68270 }}\r
68271 return d\r
68272 };\r
68273 AjxDateFormat=function(s){\r
68274 AjxFormat.call(this,s);\r
68275 if(typeof s=="number"){\r
68276 switch(s){\r
68277 case AjxDateFormat.SHORT:s=I18nMsg.formatDateShort;\r
68278 break;\r
68279 case AjxDateFormat.MEDIUM:s=I18nMsg.formatDateMedium;\r
68280 break;\r
68281 case AjxDateFormat.LONG:s=I18nMsg.formatDateLong;\r
68282 break;\r
68283 case AjxDateFormat.FULL:s=I18nMsg.formatDateFull;\r
68284 break\r
68285 }}\r
68286 for(var a=0;\r
68287 a<s.length;\r
68288 a++){\r
68289 var h=s.charAt(a);\r
68290 if(h=="'"){\r
68291 var t=a+1;\r
68292 for(a++;\r
68293 a<s.length;\r
68294 a++){\r
68295 var h=s.charAt(a);\r
68296 if(h=="'"){\r
68297 if(a+1<s.length&&s.charAt(a+1)=="'"){\r
68298 s=s.substr(0,a)+s.substr(a+1)\r
68299 }else{\r
68300 break\r
68301 }}}\r
68302 if(a==s.length){}\r
68303 var e=a;\r
68304 var n=new AjxFormat.TextSegment(this,s.substring(t,e));\r
68305 this._segments.push(n);\r
68306 continue\r
68307 }\r
68308 var t=a;\r
68309 while(a<s.length){\r
68310 h=s.charAt(a);\r
68311 if(AjxDateFormat._META_CHARS.indexOf(h)!=-1||h=="'"){\r
68312 break\r
68313 }\r
68314 a++\r
68315 }\r
68316 var e=a;\r
68317 if(t!=e){\r
68318 var n=new AjxFormat.TextSegment(this,s.substring(t,e));\r
68319 this._segments.push(n);\r
68320 a--;\r
68321 continue\r
68322 }\r
68323 var t=a;\r
68324 while(++a<s.length){\r
68325 if(s.charAt(a)!=h){\r
68326 break\r
68327 }}\r
68328 var e=a--;\r
68329 var o=e-t;\r
68330 var r=s.substr(t,o);\r
68331 var n=null;\r
68332 switch(h){\r
68333 case"G":n=new AjxDateFormat.EraSegment(this,r);\r
68334 break;\r
68335 case"y":n=new AjxDateFormat.YearSegment(this,r);\r
68336 break;\r
68337 case"M":n=new AjxDateFormat.MonthSegment(this,r);\r
68338 break;\r
68339 case"w":n=new AjxDateFormat.WeekSegment(this,r);\r
68340 break;\r
68341 case"W":n=new AjxDateFormat.WeekSegment(this,r);\r
68342 break;\r
68343 case"D":n=new AjxDateFormat.DaySegment(this,r);\r
68344 break;\r
68345 case"d":n=new AjxDateFormat.DaySegment(this,r);\r
68346 break;\r
68347 case"F":n=new AjxDateFormat.WeekdaySegment(this,r);\r
68348 break;\r
68349 case"E":n=new AjxDateFormat.WeekdaySegment(this,r);\r
68350 break;\r
68351 case"a":n=new AjxDateFormat.AmPmSegment(this,r);\r
68352 break;\r
68353 case"H":n=new AjxDateFormat.HourSegment(this,r);\r
68354 break;\r
68355 case"k":n=new AjxDateFormat.HourSegment(this,r);\r
68356 break;\r
68357 case"K":n=new AjxDateFormat.HourSegment(this,r);\r
68358 break;\r
68359 case"h":n=new AjxDateFormat.HourSegment(this,r);\r
68360 break;\r
68361 case"m":n=new AjxDateFormat.MinuteSegment(this,r);\r
68362 break;\r
68363 case"s":n=new AjxDateFormat.SecondSegment(this,r);\r
68364 break;\r
68365 case"S":n=new AjxDateFormat.SecondSegment(this,r);\r
68366 break;\r
68367 case"z":n=new AjxDateFormat.TimezoneSegment(this,r);\r
68368 break;\r
68369 case"Z":n=new AjxDateFormat.TimezoneSegment(this,r);\r
68370 break\r
68371 }\r
68372 if(n!=null){\r
68373 n._index=this._segments.length;\r
68374 this._segments.push(n)\r
68375 }}};\r
68376 AjxDateFormat.prototype=new AjxFormat;\r
68377 AjxDateFormat.prototype.constructor=AjxDateFormat;\r
68378 AjxDateFormat.prototype.toString=function(){\r
68379 return"[AjxDateFormat: "+AjxFormat.prototype.toString.call(this)+"]"\r
68380 };\r
68381 AjxDateFormat.SHORT=0;\r
68382 AjxDateFormat.MEDIUM=1;\r
68383 AjxDateFormat.LONG=2;\r
68384 AjxDateFormat.FULL=3;\r
68385 AjxDateFormat.DEFAULT=AjxDateFormat.MEDIUM;\r
68386 AjxDateFormat._META_CHARS="GyMwWDdFEaHkKhmsSzZ";\r
68387 AjxDateFormat.getDateInstance=function(e){\r
68388 e=e!=null?e:AjxDateFormat.DEFAULT;\r
68389 if(!AjxDateFormat._DATE_FORMATTERS[e]){\r
68390 AjxDateFormat._DATE_FORMATTERS[e]=new AjxDateFormat(AjxDateFormat._dateFormats[e])\r
68391 }\r
68392 return AjxDateFormat._DATE_FORMATTERS[e]\r
68393 };\r
68394 AjxDateFormat.getTimeInstance=function(e){\r
68395 e=e!=null?e:AjxDateFormat.DEFAULT;\r
68396 if(!AjxDateFormat._TIME_FORMATTERS[e]){\r
68397 AjxDateFormat._TIME_FORMATTERS[e]=new AjxDateFormat(AjxDateFormat._timeFormats[e])\r
68398 }\r
68399 return AjxDateFormat._TIME_FORMATTERS[e]\r
68400 };\r
68401 AjxDateFormat.getDateTimeInstance=function(e,t){\r
68402 e=e!=null?e:AjxDateFormat.DEFAULT;\r
68403 t=t!=null?t:AjxDateFormat.DEFAULT;\r
68404 var o=e*10+t;\r
68405 if(!AjxDateFormat._DATETIME_FORMATTERS[o]){\r
68406 var n=I18nMsg.formatDateTime;\r
68407 var s=[AjxDateFormat._dateFormats[e],AjxDateFormat._timeFormats[t]];\r
68408 var a=AjxMessageFormat.format(n,s);\r
68409 AjxDateFormat._DATETIME_FORMATTERS[o]=new AjxDateFormat(a)\r
68410 }\r
68411 return AjxDateFormat._DATETIME_FORMATTERS[o]\r
68412 };\r
68413 AjxDateFormat.format=function(t,e){\r
68414 return new AjxDateFormat(t).format(e)\r
68415 };\r
68416 AjxDateFormat.parse=function(t,e){\r
68417 return new AjxDateFormat(t).parse(e)\r
68418 };\r
68419 AjxDateFormat.initialize=function(){\r
68420 AjxDateFormat._dateFormats=[I18nMsg.formatDateShort,I18nMsg.formatDateMedium,I18nMsg.formatDateLong,I18nMsg.formatDateFull];\r
68421 AjxDateFormat._timeFormats=[I18nMsg.formatTimeShort,I18nMsg.formatTimeMedium,I18nMsg.formatTimeLong,I18nMsg.formatTimeFull];\r
68422 AjxDateFormat._DATE_FORMATTERS={};\r
68423 AjxDateFormat._TIME_FORMATTERS={};\r
68424 AjxDateFormat._DATETIME_FORMATTERS={};\r
68425 AjxDateFormat.MonthSegment.initialize();\r
68426 AjxDateFormat.WeekdaySegment.initialize()\r
68427 };\r
68428 AjxDateFormat.prototype.parse=function(n){\r
68429 var o=null;\r
68430 try{\r
68431 o=AjxFormat.prototype.parse.call(this,n);\r
68432 var a=new Date(0,0,1,0,0,0,0);\r
68433 if(o.year!=null){\r
68434 a.setFullYear(o.year)\r
68435 }\r
68436 if(o.month!=null){\r
68437 a.setMonth(o.month)\r
68438 }\r
68439 if(o.dayofmonth!=null){\r
68440 a.setDate(o.dayofmonth)\r
68441 }else{\r
68442 if(o.dayofyear!=null){\r
68443 a.setMonth(0,o.dayofyear)\r
68444 }}\r
68445 if(o.hours!=null){\r
68446 a.setHours(o.hours)\r
68447 }\r
68448 if(o.minutes!=null){\r
68449 a.setMinutes(o.minutes)\r
68450 }\r
68451 if(o.seconds!=null){\r
68452 a.setSeconds(o.seconds)\r
68453 }\r
68454 if(o.milliseconds!=null){\r
68455 a.setMilliseconds(o.milliseconds)\r
68456 }\r
68457 if(o.ampm!=null){\r
68458 var t=a.getHours();\r
68459 if(t==12&&o.ampm==0){\r
68460 t=0\r
68461 }else{\r
68462 if(t!=12&&o.ampm==1){\r
68463 t+=12\r
68464 }}\r
68465 a.setHours(t)\r
68466 }\r
68467 o=a\r
68468 }\r
68469 catch(r){}\r
68470 return o\r
68471 };\r
68472 AjxDateFormat.prototype._createParseObject=function(){\r
68473 return{\r
68474 year:null,month:null,dayofmonth:null,dayofyear:null,hours:null,minutes:null,seconds:null,milliseconds:null,ampm:null,era:null,timezone:null}\r
68475 };\r
68476 AjxFormat.TextSegment=function(t,e){\r
68477 AjxFormat.Segment.call(this,t,e)\r
68478 };\r
68479 AjxFormat.TextSegment.prototype=new AjxFormat.Segment;\r
68480 AjxFormat.TextSegment.prototype.constructor=AjxFormat.TextSegment;\r
68481 AjxFormat.TextSegment.prototype.toString=function(){\r
68482 return'text: "'+this._s+'"'\r
68483 };\r
68484 AjxFormat.TextSegment.prototype.parse=function(a,t,e){\r
68485 return AjxFormat.Segment._parseLiteral(this._s,t,e)\r
68486 };\r
68487 AjxDateFormat.DateSegment=function(t,e){\r
68488 AjxFormat.Segment.call(this,t,e)\r
68489 };\r
68490 AjxDateFormat.DateSegment.prototype=new AjxFormat.Segment;\r
68491 AjxDateFormat.DateSegment.prototype.constructor=AjxDateFormat.DateSegment;\r
68492 AjxDateFormat.EraSegment=function(t,e){\r
68493 AjxDateFormat.DateSegment.call(this,t,e)\r
68494 };\r
68495 AjxDateFormat.EraSegment.prototype=new AjxDateFormat.DateSegment;\r
68496 AjxDateFormat.EraSegment.prototype.constructor=AjxDateFormat.EraSegment;\r
68497 AjxDateFormat.EraSegment.prototype.toString=function(){\r
68498 return'dateEra: "'+this._s+'"'\r
68499 };\r
68500 AjxDateFormat.EraSegment.prototype.format=function(e){\r
68501 return I18nMsg.eraAD\r
68502 };\r
68503 AjxDateFormat.YearSegment=function(t,e){\r
68504 AjxDateFormat.DateSegment.call(this,t,e)\r
68505 };\r
68506 AjxDateFormat.YearSegment.prototype=new AjxDateFormat.DateSegment;\r
68507 AjxDateFormat.YearSegment.prototype.constructor=AjxDateFormat.YearSegment;\r
68508 AjxDateFormat.YearSegment.prototype.toString=function(){\r
68509 return'dateYear: "'+this._s+'"'\r
68510 };\r
68511 AjxDateFormat.YearSegment.prototype.format=function(e){\r
68512 var t=String(e.getFullYear());\r
68513 return this._s.length<4?t.substr(t.length-2):AjxFormat._zeroPad(t,this._s.length)\r
68514 };\r
68515 AjxDateFormat.YearSegment.prototype.parse=function(a,d,n){\r
68516 var e=this._getFixedLength();\r
68517 var t=AjxFormat.Segment._parseInt(a,"year",0,d,n,e);\r
68518 if(t-n==2){\r
68519 if(!AjxDateFormat._2digitStartYear){\r
68520 AjxDateFormat._2digitStartYear=parseInt(AjxMsg.dateParsing2DigitStartYear)\r
68521 }\r
68522 var h=AjxDateFormat._2digitStartYear;\r
68523 var c=parseInt(d.substr(n,2),10);\r
68524 var o=(Math.floor(h/100)+(c<(h%100)?1:0))*100;\r
68525 var r=o+c;\r
68526 a.year=r\r
68527 }\r
68528 return t\r
68529 };\r
68530 AjxDateFormat.MonthSegment=function(t,e){\r
68531 AjxDateFormat.DateSegment.call(this,t,e)\r
68532 };\r
68533 AjxDateFormat.MonthSegment.prototype=new AjxDateFormat.DateSegment;\r
68534 AjxDateFormat.MonthSegment.prototype.constructor=AjxDateFormat.MonthSegment;\r
68535 AjxDateFormat.MonthSegment.prototype.toString=function(){\r
68536 return'dateMonth: "'+this._s+'"'\r
68537 };\r
68538 AjxDateFormat.MonthSegment.initialize=function(){\r
68539 AjxDateFormat.MonthSegment.MONTHS={};\r
68540 AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.SHORT]=[AjxMsg.monthJanShort,AjxMsg.monthFebShort,AjxMsg.monthMarShort,AjxMsg.monthAprShort,AjxMsg.monthMayShort,AjxMsg.monthJunShort,AjxMsg.monthJulShort,AjxMsg.monthAugShort,AjxMsg.monthSepShort,AjxMsg.monthOctShort,AjxMsg.monthNovShort,AjxMsg.monthDecShort];\r
68541 AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.MEDIUM]=[I18nMsg.monthJanMedium,I18nMsg.monthFebMedium,I18nMsg.monthMarMedium,I18nMsg.monthAprMedium,I18nMsg.monthMayMedium,I18nMsg.monthJunMedium,I18nMsg.monthJulMedium,I18nMsg.monthAugMedium,I18nMsg.monthSepMedium,I18nMsg.monthOctMedium,I18nMsg.monthNovMedium,I18nMsg.monthDecMedium];\r
68542 AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.LONG]=[I18nMsg.monthJanLong,I18nMsg.monthFebLong,I18nMsg.monthMarLong,I18nMsg.monthAprLong,I18nMsg.monthMayLong,I18nMsg.monthJunLong,I18nMsg.monthJulLong,I18nMsg.monthAugLong,I18nMsg.monthSepLong,I18nMsg.monthOctLong,I18nMsg.monthNovLong,I18nMsg.monthDecLong]\r
68543 };\r
68544 AjxDateFormat.MonthSegment.prototype.format=function(e){\r
68545 var t=e.getMonth();\r
68546 switch(this._s.length){\r
68547 case 1:return String(t+1);\r
68548 case 2:return AjxFormat._zeroPad(t+1,2);\r
68549 case 3:return AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.MEDIUM][t];\r
68550 case 5:return AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.SHORT][t]\r
68551 }\r
68552 return AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.LONG][t]\r
68553 };\r
68554 AjxDateFormat.MonthSegment.prototype.parse=function(a,n,t){\r
68555 var e;\r
68556 switch(this._s.length){\r
68557 case 3:e=AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.MEDIUM];\r
68558 case 4:e=e||AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.LONG];\r
68559 case 5:e=e||AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.SHORT];\r
68560 var o=AjxFormat.Segment._parseLiterals(a,"month",0,e,n,t);\r
68561 if(o==-1){\r
68562 throw new AjxFormat.ParsingException(this._parent,this,"no match")\r
68563 }\r
68564 return o\r
68565 }\r
68566 var r=this._getFixedLength();\r
68567 return AjxFormat.Segment._parseInt(a,"month",-1,n,t,r)\r
68568 };\r
68569 AjxDateFormat.WeekSegment=function(t,e){\r
68570 AjxDateFormat.DateSegment.call(this,t,e)\r
68571 };\r
68572 AjxDateFormat.WeekSegment.prototype=new AjxDateFormat.DateSegment;\r
68573 AjxDateFormat.WeekSegment.prototype.constructor=AjxDateFormat.WeekSegment;\r
68574 AjxDateFormat.WeekSegment.prototype.toString=function(){\r
68575 return'weekMonth: "'+this._s+'"'\r
68576 };\r
68577 AjxDateFormat.WeekSegment.prototype.format=function(t){\r
68578 var o=t.getYear();\r
68579 var s=t.getMonth();\r
68580 var e=t.getDate();\r
68581 var r=/w/.test(this._s);\r
68582 var n=new Date(o,r?0:s,1);\r
68583 var a=0;\r
68584 while(true){\r
68585 a++;\r
68586 if(n.getMonth()>s||(n.getMonth()==s&&n.getDate()>=e)){\r
68587 break\r
68588 }\r
68589 n.setDate(n.getDate()+7)\r
68590 }\r
68591 return AjxFormat._zeroPad(a,this._s.length)\r
68592 };\r
68593 AjxDateFormat.WeekSegment.prototype.parse=function(t,a,e){\r
68594 var o=this._getFixedLength();\r
68595 return AjxFormat.Segment._parseInt(null,null,0,a,e,o)\r
68596 };\r
68597 AjxDateFormat.DaySegment=function(t,e){\r
68598 AjxDateFormat.DateSegment.call(this,t,e)\r
68599 };\r
68600 AjxDateFormat.DaySegment.prototype=new AjxDateFormat.DateSegment;\r
68601 AjxDateFormat.DaySegment.prototype.constructor=AjxDateFormat.DaySegment;\r
68602 AjxDateFormat.DaySegment.prototype.toString=function(){\r
68603 return'dateDay: "'+this._s+'"'\r
68604 };\r
68605 AjxDateFormat.DaySegment.prototype.format=function(t){\r
68606 var n=t.getMonth();\r
68607 var e=t.getDate();\r
68608 if(/D/.test(this._s)&&n>0){\r
68609 var a=t.getYear();\r
68610 do{\r
68611 var o=new Date(a,n,1);\r
68612 o.setDate(0);\r
68613 e+=o.getDate();\r
68614 n--\r
68615 }\r
68616 while(n>0)\r
68617 }\r
68618 return AjxFormat._zeroPad(e,this._s.length)\r
68619 };\r
68620 AjxDateFormat.DaySegment.prototype.parse=function(t,o,e){\r
68621 var n=this._getFixedLength();\r
68622 var a=/D/.test(this._s)?"dayofyear":"dayofmonth";\r
68623 return AjxFormat.Segment._parseInt(t,a,0,o,e,n)\r
68624 };\r
68625 AjxDateFormat.WeekdaySegment=function(t,e){\r
68626 AjxDateFormat.DateSegment.call(this,t,e)\r
68627 };\r
68628 AjxDateFormat.WeekdaySegment.prototype=new AjxDateFormat.DateSegment;\r
68629 AjxDateFormat.WeekdaySegment.prototype.constructor=AjxDateFormat.WeekdaySegment;\r
68630 AjxDateFormat.DaySegment.prototype.toString=function(){\r
68631 return'dateDay: "'+this._s+'"'\r
68632 };\r
68633 AjxDateFormat.WeekdaySegment.initialize=function(){\r
68634 AjxDateFormat.WeekdaySegment.WEEKDAYS={};\r
68635 AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.SHORT]=[AjxMsg.weekdaySunShort,AjxMsg.weekdayMonShort,AjxMsg.weekdayTueShort,AjxMsg.weekdayWedShort,AjxMsg.weekdayThuShort,AjxMsg.weekdayFriShort,AjxMsg.weekdaySatShort];\r
68636 AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.MEDIUM]=[I18nMsg.weekdaySunMedium,I18nMsg.weekdayMonMedium,I18nMsg.weekdayTueMedium,I18nMsg.weekdayWedMedium,I18nMsg.weekdayThuMedium,I18nMsg.weekdayFriMedium,I18nMsg.weekdaySatMedium];\r
68637 AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.LONG]=[I18nMsg.weekdaySunLong,I18nMsg.weekdayMonLong,I18nMsg.weekdayTueLong,I18nMsg.weekdayWedLong,I18nMsg.weekdayThuLong,I18nMsg.weekdayFriLong,I18nMsg.weekdaySatLong]\r
68638 };\r
68639 AjxDateFormat.WeekdaySegment.prototype.format=function(e){\r
68640 var a=e.getDay();\r
68641 if(/E/.test(this._s)){\r
68642 var t;\r
68643 switch(this._s.length){\r
68644 case 4:t=AjxDateFormat.LONG;\r
68645 break;\r
68646 case 5:t=AjxDateFormat.SHORT;\r
68647 break;\r
68648 default:t=AjxDateFormat.MEDIUM\r
68649 }\r
68650 return AjxDateFormat.WeekdaySegment.WEEKDAYS[t][a]\r
68651 }\r
68652 return AjxFormat._zeroPad(a,this._s.length)\r
68653 };\r
68654 AjxDateFormat.WeekdaySegment.prototype.parse=function(a,n,t){\r
68655 var e;\r
68656 switch(this._s.length){\r
68657 case 3:e=AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.MEDIUM];\r
68658 case 4:e=e||AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.LONG];\r
68659 case 5:e=e||AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.SHORT];\r
68660 var o=AjxFormat.Segment._parseLiterals(null,null,0,e,n,t);\r
68661 if(o==-1){\r
68662 throw new AjxFormat.ParsingException(this._parent,this,"no match")\r
68663 }\r
68664 return o\r
68665 }\r
68666 var r=this._getFixedLength();\r
68667 return AjxFormat.Segment._parseInt(null,null,0,n,t,r)\r
68668 };\r
68669 AjxDateFormat.TimeSegment=function(t,e){\r
68670 AjxFormat.Segment.call(this,t,e)\r
68671 };\r
68672 AjxDateFormat.TimeSegment.prototype=new AjxFormat.Segment;\r
68673 AjxDateFormat.TimeSegment.prototype.constructor=AjxDateFormat.TimeSegment;\r
68674 AjxDateFormat.HourSegment=function(t,e){\r
68675 AjxFormat.Segment.call(this,t,e)\r
68676 };\r
68677 AjxDateFormat.HourSegment.prototype=new AjxDateFormat.TimeSegment;\r
68678 AjxDateFormat.HourSegment.prototype.constructor=AjxDateFormat.HourSegment;\r
68679 AjxDateFormat.HourSegment.prototype.toString=function(){\r
68680 return'timeHour: "'+this._s+'"'\r
68681 };\r
68682 AjxDateFormat.HourSegment.prototype.format=function(t){\r
68683 var e=t.getHours();\r
68684 if(e>12&&/[hK]/.test(this._s)){\r
68685 e-=12\r
68686 }else{\r
68687 if(e==0&&/[h]/.test(this._s)){\r
68688 e=12\r
68689 }}\r
68690 return AjxFormat._zeroPad(e,this._s.length)\r
68691 };\r
68692 AjxDateFormat.HourSegment.prototype.parse=function(t,a,e){\r
68693 var o=this._getFixedLength();\r
68694 return AjxFormat.Segment._parseInt(t,"hours",0,a,e,o)\r
68695 };\r
68696 AjxDateFormat.MinuteSegment=function(t,e){\r
68697 AjxFormat.Segment.call(this,t,e)\r
68698 };\r
68699 AjxDateFormat.MinuteSegment.prototype=new AjxDateFormat.TimeSegment;\r
68700 AjxDateFormat.MinuteSegment.prototype.constructor=AjxDateFormat.MinuteSegment;\r
68701 AjxDateFormat.MinuteSegment.prototype.toString=function(){\r
68702 return'timeMinute: "'+this._s+'"'\r
68703 };\r
68704 AjxDateFormat.MinuteSegment.prototype.format=function(e){\r
68705 var t=e.getMinutes();\r
68706 return AjxFormat._zeroPad(t,this._s.length)\r
68707 };\r
68708 AjxDateFormat.MinuteSegment.prototype.parse=function(t,a,e){\r
68709 var o=this._getFixedLength();\r
68710 return AjxFormat.Segment._parseInt(t,"minutes",0,a,e,o)\r
68711 };\r
68712 AjxDateFormat.SecondSegment=function(t,e){\r
68713 AjxFormat.Segment.call(this,t,e)\r
68714 };\r
68715 AjxDateFormat.SecondSegment.prototype=new AjxDateFormat.TimeSegment;\r
68716 AjxDateFormat.SecondSegment.prototype.constructor=AjxDateFormat.SecondSegment;\r
68717 AjxDateFormat.SecondSegment.prototype.toString=function(){\r
68718 return'timeSecond: "'+this._s+'"'\r
68719 };\r
68720 AjxDateFormat.SecondSegment.prototype.format=function(e){\r
68721 var t=/s/.test(this._s)?e.getSeconds():e.getMilliseconds();\r
68722 return AjxFormat._zeroPad(t,this._s.length)\r
68723 };\r
68724 AjxDateFormat.SecondSegment.prototype.parse=function(t,o,e){\r
68725 var n=this._getFixedLength();\r
68726 var a=/s/.test(this._s)?"seconds":"milliseconds";\r
68727 return AjxFormat.Segment._parseInt(t,a,0,o,e,n)\r
68728 };\r
68729 AjxDateFormat.AmPmSegment=function(t,e){\r
68730 AjxFormat.Segment.call(this,t,e)\r
68731 };\r
68732 AjxDateFormat.AmPmSegment.prototype=new AjxDateFormat.TimeSegment;\r
68733 AjxDateFormat.AmPmSegment.prototype.constructor=AjxDateFormat.AmPmSegment;\r
68734 AjxDateFormat.AmPmSegment.prototype.toString=function(){\r
68735 return'timeAmPm: "'+this._s+'"'\r
68736 };\r
68737 AjxDateFormat.AmPmSegment.prototype.format=function(t){\r
68738 var e=t.getHours();\r
68739 return e<12?I18nMsg.periodAm:I18nMsg.periodPm\r
68740 };\r
68741 AjxDateFormat.AmPmSegment.prototype.parse=function(t,o,e){\r
68742 var n=[I18nMsg.periodAm.toLowerCase(),I18nMsg.periodPm.toLowerCase(),I18nMsg.periodAm.toUpperCase(),I18nMsg.periodPm.toUpperCase()];\r
68743 var a=AjxFormat.Segment._parseLiterals(t,"ampm",0,n,o,e);\r
68744 if(a==-1){\r
68745 throw new AjxFormat.ParsingException(this._parent,this,"no match")\r
68746 }\r
68747 t.ampm=t.ampm%2;\r
68748 return a\r
68749 };\r
68750 AjxDateFormat.TimezoneSegment=function(t,e){\r
68751 AjxFormat.Segment.call(this,t,e)\r
68752 };\r
68753 AjxDateFormat.TimezoneSegment.prototype=new AjxDateFormat.TimeSegment;\r
68754 AjxDateFormat.TimezoneSegment.prototype.constructor=AjxDateFormat.TimezoneSegment;\r
68755 AjxDateFormat.TimezoneSegment.prototype.toString=function(){\r
68756 return'timeTimezone: "'+this._s+'"'\r
68757 };\r
68758 AjxDateFormat.TimezoneSegment.prototype.format=function(t){\r
68759 var e=t.timezone||AjxTimezone.DEFAULT;\r
68760 if(/Z/.test(this._s)){\r
68761 return AjxTimezone.getShortName(e)\r
68762 }\r
68763 return this._s.length<4?AjxTimezone.getMediumName(e):AjxTimezone.getLongName(e)\r
68764 };\r
68765 AjxMessageFormat=function(s){\r
68766 if(!s){\r
68767 return""\r
68768 }\r
68769 AjxFormat.call(this,s);\r
68770 for(var t=0;\r
68771 t<s.length;\r
68772 t++){\r
68773 var r=s.charAt(t);\r
68774 if(r=="'"){\r
68775 if(t+1<s.length&&s.charAt(t+1)=="'"){\r
68776 var a=new AjxFormat.TextSegment(this,"'");\r
68777 this._segments.push(a);\r
68778 t++;\r
68779 continue\r
68780 }\r
68781 var h=t+1;\r
68782 for(t++;\r
68783 t<s.length;\r
68784 t++){\r
68785 var r=s.charAt(t);\r
68786 if(r=="'"){\r
68787 if(t+1<s.length&&s.charAt(t+1)=="'"){\r
68788 s=s.substr(0,t)+s.substr(t+1)\r
68789 }else{\r
68790 break\r
68791 }}}\r
68792 if(t==s.length){}\r
68793 var n=t;\r
68794 var a=new AjxFormat.TextSegment(this,s.substring(h,n));\r
68795 this._segments.push(a);\r
68796 continue\r
68797 }\r
68798 var h=t;\r
68799 while(t<s.length){\r
68800 r=s.charAt(t);\r
68801 if(r=="{"||r=="'"){\r
68802 break\r
68803 }\r
68804 t++\r
68805 }\r
68806 var n=t;\r
68807 if(h!=n){\r
68808 var a=new AjxFormat.TextSegment(this,s.substring(h,n));\r
68809 this._segments.push(a);\r
68810 t--;\r
68811 continue\r
68812 }\r
68813 var h=t+1;\r
68814 var e=0;\r
68815 while(++t<s.length){\r
68816 var r=s.charAt(t);\r
68817 if(r=="{"){\r
68818 e++\r
68819 }else{\r
68820 if(r=="}"){\r
68821 if(e==0){\r
68822 break\r
68823 }\r
68824 e--\r
68825 }}}\r
68826 var n=t;\r
68827 var o=n-h;\r
68828 var d=s.substr(h,o);\r
68829 var a=new AjxMessageFormat.MessageSegment(this,d);\r
68830 if(a!=null){\r
68831 this._segments.push(a)\r
68832 }}};\r
68833 AjxMessageFormat.prototype=new AjxFormat;\r
68834 AjxMessageFormat.prototype.constructor=AjxMessageFormat;\r
68835 AjxMessageFormat.prototype.toString=function(){\r
68836 return"[AjxMessageFormat: "+AjxFormat.prototype.toString.call(this)+"]"\r
68837 };\r
68838 AjxMessageFormat.format=function(e,t){\r
68839 return new AjxMessageFormat(e).format(t)\r
68840 };\r
68841 AjxMessageFormat.prototype.format=function(e){\r
68842 if(!(e instanceof Array)){\r
68843 e=[e]\r
68844 }\r
68845 return AjxFormat.prototype.format.call(this,e)\r
68846 };\r
68847 AjxMessageFormat.prototype.getFormats=function(){\r
68848 var e=[];\r
68849 for(var t=0;\r
68850 t<this._segments.length;\r
68851 t++){\r
68852 var a=this._segments[t];\r
68853 if(a instanceof AjxMessageFormat.MessageSegment){\r
68854 e.push(a.getSegmentFormat())\r
68855 }}\r
68856 return e\r
68857 };\r
68858 AjxMessageFormat.prototype.getFormatsByArgumentIndex=function(){\r
68859 var e=[];\r
68860 for(var t=0;\r
68861 t<this._segments.length;\r
68862 t++){\r
68863 var a=this._segments[t];\r
68864 if(a instanceof AjxMessageFormat.MessageSegment){\r
68865 e[a.getIndex()]=a.getSegmentFormat()\r
68866 }}\r
68867 return e\r
68868 };\r
68869 AjxMessageFormat.MessageSegment=function(o,e){\r
68870 AjxFormat.Segment.call(this,o,e);\r
68871 var a=AjxMessageFormat.MessageSegment._split(e,",");\r
68872 this._index=Number(a[0]);\r
68873 this._type=a[1]||"string";\r
68874 this._style=a[2];\r
68875 if(this._type=="list"){\r
68876 this._isList=true;\r
68877 this._type=a[2]||"string";\r
68878 this._style=a[3]\r
68879 }\r
68880 switch(this._type){\r
68881 case"number":switch(this._style){\r
68882 case"integer":this._formatter=AjxNumberFormat.getIntegerInstance();\r
68883 break;\r
68884 case"currency":this._formatter=AjxNumberFormat.getCurrencyInstance();\r
68885 break;\r
68886 case"percent":this._formatter=AjxNumberFormat.getPercentInstance();\r
68887 break;\r
68888 default:this._formatter=this._style==null?AjxNumberFormat.getInstance():new AjxNumberFormat(this._style)\r
68889 }\r
68890 break;\r
68891 case"date":case"time":var t=this._type=="date"?AjxDateFormat.getDateInstance:AjxDateFormat.getTimeInstance;\r
68892 switch(this._style){\r
68893 case"short":this._formatter=t(AjxDateFormat.SHORT);\r
68894 break;\r
68895 case"medium":this._formatter=t(AjxDateFormat.MEDIUM);\r
68896 break;\r
68897 case"long":this._formatter=t(AjxDateFormat.LONG);\r
68898 break;\r
68899 case"full":this._formatter=t(AjxDateFormat.FULL);\r
68900 break;\r
68901 default:this._formatter=this._style==null?t(AjxDateFormat.DEFAULT):new AjxDateFormat(this._style)\r
68902 }\r
68903 break;\r
68904 case"choice":this._formatter=new AjxChoiceFormat(this._style);\r
68905 break\r
68906 }\r
68907 if(this._isList){\r
68908 this._formatter=new AjxListFormat(this._formatter)\r
68909 }};\r
68910 AjxMessageFormat.MessageSegment.prototype=new AjxFormat.Segment;\r
68911 AjxMessageFormat.MessageSegment.prototype.constructor=AjxMessageFormat.MessageSegment;\r
68912 AjxMessageFormat.MessageSegment.prototype.toString=function(){\r
68913 var e=['message: "',this._s,'", index: ',this._index];\r
68914 if(this._isList){\r
68915 e.push(", list: ",this._isList)\r
68916 }\r
68917 if(this._type){\r
68918 e.push(", type: ",this._type)\r
68919 }\r
68920 if(this._style){\r
68921 e.push(", style: ",this._style)\r
68922 }\r
68923 if(this._formatter){\r
68924 e.push(", formatter: ",this._formatter.toString())\r
68925 }\r
68926 return e.join("")\r
68927 };\r
68928 AjxMessageFormat.MessageSegment.prototype._index;\r
68929 AjxMessageFormat.MessageSegment.prototype._type;\r
68930 AjxMessageFormat.MessageSegment.prototype._style;\r
68931 AjxMessageFormat.MessageSegment.prototype._isList=false;\r
68932 AjxMessageFormat.MessageSegment.prototype._formatter;\r
68933 AjxMessageFormat.MessageSegment.prototype.format=function(t){\r
68934 var e=t[this._index];\r
68935 if(this._formatter instanceof AjxChoiceFormat){\r
68936 return this._formatter.format(t,this._index)\r
68937 }\r
68938 return this._formatter?this._formatter.format(e):String(e)\r
68939 };\r
68940 AjxMessageFormat.MessageSegment.prototype.getIndex=function(){\r
68941 return this._index\r
68942 };\r
68943 AjxMessageFormat.MessageSegment.prototype.getType=function(){\r
68944 return this._type\r
68945 };\r
68946 AjxMessageFormat.MessageSegment.prototype.getStyle=function(){\r
68947 return this._style\r
68948 };\r
68949 AjxMessageFormat.MessageSegment.prototype.getSegmentFormat=function(){\r
68950 return this._formatter\r
68951 };\r
68952 AjxMessageFormat.MessageSegment._split=function(o,e){\r
68953 var n=[];\r
68954 var a=0;\r
68955 var t;\r
68956 var r=0;\r
68957 for(t=0;\r
68958 t<o.length;\r
68959 t++){\r
68960 var h=o.charAt(t);\r
68961 if(h=="{"){\r
68962 r++\r
68963 }else{\r
68964 if(h=="}"){\r
68965 r--\r
68966 }else{\r
68967 if(h==e&&r==0){\r
68968 n.push(o.substring(a,t));\r
68969 a=t+1\r
68970 }}}}\r
68971 if(t>a){\r
68972 n.push(o.substring(a,t))\r
68973 }\r
68974 return n\r
68975 };\r
68976 AjxNumberFormat=function(y,w){\r
68977 AjxFormat.call(this,y);\r
68978 if(y==""){\r
68979 return\r
68980 }\r
68981 var a=y.split(/;/);\r
68982 var y=a[0];\r
68983 var p=0;\r
68984 var m=this.__parseStatic(y,p);\r
68985 p=m.offset;\r
68986 var s=m.text!="";\r
68987 if(s){\r
68988 this._segments.push(new AjxFormat.TextSegment(this,m.text))\r
68989 }\r
68990 var r=p;\r
68991 while(p<y.length&&AjxNumberFormat._META_CHARS.indexOf(y.charAt(p))!=-1){\r
68992 p++\r
68993 }\r
68994 var n=p;\r
68995 var t=y.substring(r,n);\r
68996 var v=t.indexOf("E");\r
68997 var d=v!=-1?t.substring(v+1):null;\r
68998 if(d){\r
68999 t=t.substring(0,v);\r
69000 this._showExponent=true\r
69001 }\r
69002 var u=t.indexOf(".");\r
69003 var k=u!=-1?t.substring(0,u):t;\r
69004 if(k){\r
69005 var x=k.lastIndexOf(",");\r
69006 if(x!=-1){\r
69007 this._groupingOffset=k.length-x-1\r
69008 }\r
69009 k=k.replace(/[^#0]/g,"");\r
69010 var c=k.indexOf("0");\r
69011 if(c!=-1){\r
69012 this._minIntDigits=k.length-c\r
69013 }\r
69014 this._maxIntDigits=k.length\r
69015 }\r
69016 var g=u!=-1?t.substring(u+1):null;\r
69017 if(g){\r
69018 var c=g.lastIndexOf("0");\r
69019 if(c!=-1){\r
69020 this._minFracDigits=c+1\r
69021 }\r
69022 this._maxFracDigits=g.replace(/[^#0]/g,"").length\r
69023 }\r
69024 this._segments.push(new AjxNumberFormat.NumberSegment(this,t));\r
69025 var m=this.__parseStatic(y,p);\r
69026 p=m.offset;\r
69027 if(m.text!=""){\r
69028 this._segments.push(new AjxFormat.TextSegment(this,m.text))\r
69029 }\r
69030 if(w){\r
69031 return\r
69032 }\r
69033 if(a.length>1){\r
69034 var y=a[1];\r
69035 this._negativeFormatter=new AjxNumberFormat(y,true)\r
69036 }else{\r
69037 var f=new AjxNumberFormat("");\r
69038 f._segments=f._segments.concat(this._segments);\r
69039 var h=s?1:0;\r
69040 var o=new AjxFormat.TextSegment(f,I18nMsg.numberSignMinus);\r
69041 f._segments.splice(h,0,o);\r
69042 this._negativeFormatter=f\r
69043 }};\r
69044 AjxNumberFormat.prototype=new AjxFormat;\r
69045 AjxNumberFormat.prototype.constructor=AjxNumberFormat;\r
69046 AjxNumberFormat.prototype.toString=function(){\r
69047 var e=["[AjxNumberFormat: ","formatter=",AjxFormat.prototype.toString.call(this)];\r
69048 if(this._negativeFormatter){\r
69049 e.push(", negativeFormatter=",this._negativeFormatter.toString())\r
69050 }\r
69051 e.push("]");\r
69052 return e.join("")\r
69053 };\r
69054 AjxNumberFormat._NUMBER="number";\r
69055 AjxNumberFormat._INTEGER="integer";\r
69056 AjxNumberFormat._CURRENCY="currency";\r
69057 AjxNumberFormat._PERCENT="percent";\r
69058 AjxNumberFormat._META_CHARS="0#.,E";\r
69059 AjxNumberFormat.prototype._groupingOffset=Number.MAX_VALUE;\r
69060 AjxNumberFormat.prototype._maxIntDigits;\r
69061 AjxNumberFormat.prototype._minIntDigits=1;\r
69062 AjxNumberFormat.prototype._maxFracDigits;\r
69063 AjxNumberFormat.prototype._minFracDigits;\r
69064 AjxNumberFormat.prototype._isCurrency=false;\r
69065 AjxNumberFormat.prototype._isPercent=false;\r
69066 AjxNumberFormat.prototype._isPerMille=false;\r
69067 AjxNumberFormat.prototype._showExponent=false;\r
69068 AjxNumberFormat.prototype._negativeFormatter;\r
69069 AjxNumberFormat.getInstance=function(){\r
69070 if(!AjxNumberFormat._FORMATTERS[AjxNumberFormat._NUMBER]){\r
69071 AjxNumberFormat._FORMATTERS[AjxNumberFormat._NUMBER]=new AjxNumberFormat(I18nMsg.formatNumber)\r
69072 }\r
69073 return AjxNumberFormat._FORMATTERS[AjxNumberFormat._NUMBER]\r
69074 };\r
69075 AjxNumberFormat.getNumberInstance=AjxNumberFormat.getInstance;\r
69076 AjxNumberFormat.getCurrencyInstance=function(){\r
69077 if(!AjxNumberFormat._FORMATTERS[AjxNumberFormat._CURRENCY]){\r
69078 AjxNumberFormat._FORMATTERS[AjxNumberFormat._CURRENCY]=new AjxNumberFormat(I18nMsg.formatNumberCurrency)\r
69079 }\r
69080 return AjxNumberFormat._FORMATTERS[AjxNumberFormat._CURRENCY]\r
69081 };\r
69082 AjxNumberFormat.getIntegerInstance=function(){\r
69083 if(!AjxNumberFormat._FORMATTERS[AjxNumberFormat._INTEGER]){\r
69084 AjxNumberFormat._FORMATTERS[AjxNumberFormat._INTEGER]=new AjxNumberFormat(I18nMsg.formatNumberInteger)\r
69085 }\r
69086 return AjxNumberFormat._FORMATTERS[AjxNumberFormat._INTEGER]\r
69087 };\r
69088 AjxNumberFormat.getPercentInstance=function(){\r
69089 if(!AjxNumberFormat._FORMATTERS[AjxNumberFormat._PERCENT]){\r
69090 AjxNumberFormat._FORMATTERS[AjxNumberFormat._PERCENT]=new AjxNumberFormat(I18nMsg.formatNumberPercent)\r
69091 }\r
69092 return AjxNumberFormat._FORMATTERS[AjxNumberFormat._PERCENT]\r
69093 };\r
69094 AjxNumberFormat.format=function(t,e){\r
69095 return new AjxNumberFormat(t).format(e)\r
69096 };\r
69097 AjxNumberFormat.initialize=function(){\r
69098 AjxNumberFormat._FORMATTERS={}\r
69099 };\r
69100 AjxNumberFormat.prototype.format=function(e){\r
69101 if(e<0&&this._negativeFormatter){\r
69102 return this._negativeFormatter.format(e)\r
69103 }\r
69104 return AjxFormat.prototype.format.call(this,e)\r
69105 };\r
69106 AjxNumberFormat.prototype.__parseStatic=function(a,t){\r
69107 var o=[];\r
69108 while(t<a.length){\r
69109 var r=a.charAt(t++);\r
69110 if(AjxNumberFormat._META_CHARS.indexOf(r)!=-1){\r
69111 t--;\r
69112 break\r
69113 }\r
69114 switch(r){\r
69115 case"'":var n=t;\r
69116 while(t<a.length&&a.charAt(t++)!="'"){}\r
69117 var e=t;\r
69118 r=e-n==0?"'":a.substring(n,e);\r
69119 break;\r
69120 case"%":r=I18nMsg.numberSignPercent;\r
69121 this._isPercent=true;\r
69122 break;\r
69123 case"\u2030":r=I18nMsg.numberSignPerMill;\r
69124 this._isPerMille=true;\r
69125 break;\r
69126 case"\u00a4":r=a.charAt(t)=="\u00a4"?I18nMsg.currencyCode:I18nMsg.currencySymbol;\r
69127 this._isCurrency=true;\r
69128 break\r
69129 }\r
69130 o.push(r)\r
69131 }\r
69132 return{\r
69133 text:o.join(""),offset:t}\r
69134 };\r
69135 AjxNumberFormat.NumberSegment=function(t,e){\r
69136 AjxFormat.Segment.call(this,t,e)\r
69137 };\r
69138 AjxNumberFormat.NumberSegment.prototype=new AjxFormat.Segment;\r
69139 AjxNumberFormat.NumberSegment.prototype.constructor=AjxNumberFormat.NumberSegment;\r
69140 AjxNumberFormat.NumberSegment.prototype.toString=function(){\r
69141 return'number: "'+this._s+'"'\r
69142 };\r
69143 AjxNumberFormat.NumberSegment.prototype.format=function(t){\r
69144 if(isNaN(t)){\r
69145 return I18nMsg.numberNaN\r
69146 }\r
69147 if(t===Number.NEGATIVE_INFINITY||t===Number.POSITIVE_INFINITY){\r
69148 return I18nMsg.numberInfinity\r
69149 }\r
69150 if(typeof t!="number"){\r
69151 t=Number(t)\r
69152 }\r
69153 t=Math.abs(t);\r
69154 if(this._parent._isPercent){\r
69155 t*=100\r
69156 }else{\r
69157 if(this._parent._isPerMille){\r
69158 t*=1000\r
69159 }}\r
69160 var e=this._parent._showExponent?t.toExponential(this._parent._maxFracDigits).toUpperCase().replace(/E\+/,"E"):t.toFixed(this._parent._maxFracDigits||0);\r
69161 e=this._normalize(e);\r
69162 return e\r
69163 };\r
69164 AjxNumberFormat.NumberSegment.prototype._normalize=function(r){\r
69165 var o=r.split(/[\.Ee]/);\r
69166 var h=o.shift();\r
69167 if(h.length<this._parent._minIntDigits){\r
69168 h=AjxFormat._zeroPad(h,this._parent._minIntDigits,I18nMsg.numberZero)\r
69169 }\r
69170 if(h.length>this._parent._groupingOffset){\r
69171 var t=[];\r
69172 var n=h.length-this._parent._groupingOffset;\r
69173 while(n>0){\r
69174 t.unshift(h.substr(n,this._parent._groupingOffset));\r
69175 t.unshift(I18nMsg.numberSeparatorGrouping);\r
69176 n-=this._parent._groupingOffset\r
69177 }\r
69178 t.unshift(h.substring(0,n+this._parent._groupingOffset));\r
69179 h=t.join("")\r
69180 }\r
69181 var c="0";\r
69182 var d;\r
69183 if(r.match(/\./)){\r
69184 c=o.shift()\r
69185 }else{\r
69186 if(r.match(/\e/)||r.match(/\E/)){\r
69187 d=o.shift()\r
69188 }}\r
69189 c=c.replace(/0+$/,"");\r
69190 if(c.length<this._parent._minFracDigits){\r
69191 c=AjxFormat._zeroPad(c,this._parent._minFracDigits,I18nMsg.numberZero,true)\r
69192 }\r
69193 var t=[h];\r
69194 if(c.length>0){\r
69195 var e=this._parent._isCurrency?I18nMsg.numberSeparatorMoneyDecimal:I18nMsg.numberSeparatorDecimal;\r
69196 t.push(e,c)\r
69197 }\r
69198 if(d){\r
69199 t.push("E",d.replace(/^\+/,""))\r
69200 }\r
69201 return t.join("")\r
69202 };\r
69203 AjxChoiceFormat=function(s){\r
69204 AjxFormat.call(this,s);\r
69205 var c=s.split("|");\r
69206 if(arguments.length==1){\r
69207 this._limits=new Array(c.length);\r
69208 this._lessThan=new Array(c.length);\r
69209 this._formats=new Array(c.length);\r
69210 var r=new RegExp("^([^#<\u2264]+)([#<\u2264])(.*)$");\r
69211 for(var a=0;\r
69212 a<c.length;\r
69213 a++){\r
69214 var t=c[a];\r
69215 var o=r.exec(t);\r
69216 var e=o[1];\r
69217 var n=o[2];\r
69218 var h=o[3];\r
69219 if(e=="\u221E"){\r
69220 this._limits[a]=Number.POSITIVE_INFINITY\r
69221 }else{\r
69222 if(e=="-\u221E"){\r
69223 this._limits[a]=Number.NEGATIVE_INFINITY\r
69224 }else{\r
69225 this._limits[a]=parseFloat(e)\r
69226 }}\r
69227 this._lessThan[a]=n=="#"||n=="\u2264";\r
69228 this._formats[a]=new AjxMessageFormat(h)\r
69229 }}else{\r
69230 this._limits=arguments[0];\r
69231 this._lessThan=new Array(arguments[0].length);\r
69232 this._formats=arguments[1];\r
69233 this._pattern=[];\r
69234 for(var a=0;\r
69235 a<this._formats.length;\r
69236 a++){\r
69237 if(a>0){\r
69238 this._pattern.push("|")\r
69239 }\r
69240 this._pattern.push(this._limits[a],"#",this._formats[a]);\r
69241 this._lessThan[a]=false;\r
69242 this._formats[a]=new AjxMessageFormat(this._formats[a])\r
69243 }\r
69244 this._pattern=this._pattern.join("")\r
69245 }};\r
69246 AjxChoiceFormat.prototype=new AjxFormat;\r
69247 AjxChoiceFormat.prototype.constructor=AjxChoiceFormat;\r
69248 AjxChoiceFormat.prototype.toString=function(){\r
69249 return["[AjxChoiceFormat: ","limits={ ",this._limits.join(", ")," }, ","formats={ ",this._formats.join(", ")," }, ","lessThan={ ",this._lessThan.join(", ")," }]"].join("")\r
69250 };\r
69251 AjxChoiceFormat.prototype._limits;\r
69252 AjxChoiceFormat.prototype._lessThan;\r
69253 AjxChoiceFormat.prototype._formats;\r
69254 AjxChoiceFormat.prototype.getLimits=function(){\r
69255 return this._limits\r
69256 };\r
69257 AjxChoiceFormat.prototype.getFormats=function(){\r
69258 return this._formats\r
69259 };\r
69260 AjxChoiceFormat.prototype.format=function(e,n){\r
69261 var o=e instanceof Array?e[n]:e;\r
69262 var c;\r
69263 if(isNaN(o)||o<this._limits[0]){\r
69264 c=this._formats[0]\r
69265 }else{\r
69266 for(var t=0;\r
69267 t<this._limits.length-1;\r
69268 t++){\r
69269 var h=this._limits[t];\r
69270 var r=this._limits[t+1];\r
69271 var d=o>=h;\r
69272 var s=this._lessThan[t+1]?o<r:o<=r;\r
69273 if(d&&s){\r
69274 c=this._formats[t];\r
69275 break\r
69276 }}\r
69277 if(!c){\r
69278 c=this._formats[this._formats.length-1]\r
69279 }}\r
69280 return c.format(e)\r
69281 };\r
69282 AjxListFormat=function(e,a,t){\r
69283 AjxFormat.call(this,e?e.toPattern():"");\r
69284 this._formatter=e;\r
69285 this._separator=a||AjxMsg.listSeparator;\r
69286 this._lastSeparator=t||AjxMsg.listSeparatorLast\r
69287 };\r
69288 AjxListFormat.prototype=new AjxFormat;\r
69289 AjxListFormat.prototype.constructor=AjxListFormat;\r
69290 AjxListFormat.prototype._formatter;\r
69291 AjxListFormat.prototype._separator;\r
69292 AjxListFormat.prototype._lastSeparator;\r
69293 AjxListFormat.prototype.format=function(o){\r
69294 o=o instanceof Array?o:[o];\r
69295 var a=[];\r
69296 for(var e=0;\r
69297 e<o.length;\r
69298 e++){\r
69299 if(e>0){\r
69300 a.push(e<o.length-1?this._separator:this._lastSeparator)\r
69301 }\r
69302 var t=o[e];\r
69303 a.push(this._formatter?this._formatter.format(t):String(t))\r
69304 }\r
69305 return a.join("")\r
69306 };\r
69307 AjxFormat.initialize()\r
69308 }\r
69309 if(AjxPackage.define("ajax.util.AjxDateUtil")){\r
69310 AjxDateUtil=function(){};\r
69311 AjxDateUtil.YEAR=1;\r
69312 AjxDateUtil.MONTH=2;\r
69313 AjxDateUtil.WEEK=3;\r
69314 AjxDateUtil.DAY=4;\r
69315 AjxDateUtil.TWO_WEEKS=5;\r
69316 AjxDateUtil.MSEC_PER_FIFTEEN_MINUTES=900000;\r
69317 AjxDateUtil.MSEC_PER_HALF_HOUR=1800000;\r
69318 AjxDateUtil.MSEC_PER_HOUR=3600000;\r
69319 AjxDateUtil.MSEC_PER_DAY=24*AjxDateUtil.MSEC_PER_HOUR;\r
69320 AjxDateUtil.WEEKDAY_SHORT=AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.SHORT];\r
69321 AjxDateUtil.WEEKDAY_MEDIUM=AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.MEDIUM];\r
69322 AjxDateUtil.WEEKDAY_LONG=AjxDateFormat.WeekdaySegment.WEEKDAYS[AjxDateFormat.LONG];\r
69323 AjxDateUtil.MONTH_SHORT=AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.SHORT];\r
69324 AjxDateUtil.MONTH_MEDIUM=AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.MEDIUM];\r
69325 AjxDateUtil.MONTH_LONG=AjxDateFormat.MonthSegment.MONTHS[AjxDateFormat.LONG];\r
69326 AjxDateUtil._daysPerMonth={\r
69327 0:31,1:29,2:31,3:30,4:31,5:30,6:31,7:31,8:30,9:31,10:30,11:31};\r
69328 AjxDateUtil.WEEK_ONE_JAN_DATE=1;\r
69329 AjxDateUtil._init=function(){\r
69330 AjxDateUtil._dateFormat=AjxDateFormat.getDateInstance(AjxDateFormat.SHORT).clone();\r
69331 var e=AjxDateUtil._dateFormat.getSegments();\r
69332 for(var t=0;\r
69333 t<e.length;\r
69334 t++){\r
69335 if(e[t] instanceof AjxDateFormat.YearSegment){\r
69336 e[t]=new AjxDateFormat.YearSegment(AjxDateUtil._dateFormat,"yyyy")\r
69337 }}\r
69338 AjxDateUtil._dateTimeFormat=new AjxDateFormat(AjxDateUtil._dateFormat.toPattern()+" "+AjxDateFormat.getTimeInstance(AjxDateFormat.SHORT));\r
69339 AjxDateUtil._dateFormatNoYear=new AjxDateFormat(AjxMsg.formatDateMediumNoYear)\r
69340 };\r
69341 AjxDateUtil._init();\r
69342 AjxDateUtil.validDate=function(n,e,o){\r
69343 var t=new Date(n,e,o);\r
69344 var a=n>999?t.getFullYear():t.getYear();\r
69345 return t.getMonth()==e&&t.getDate()==o&&a==n\r
69346 };\r
69347 AjxDateUtil.daysInMonth=function(a,e){\r
69348 var t=new Date(a,e,1,12);\r
69349 t.setMonth(t.getMonth()+1);\r
69350 t.setDate(t.getDate()-1);\r
69351 return t.getDate()\r
69352 };\r
69353 AjxDateUtil.isLeapYear=function(e){\r
69354 return(new Date(e,1,29)).getMonth()==1\r
69355 };\r
69356 AjxDateUtil.isLocale24Hour=function(){\r
69357 var t=AjxDateFormat.getTimeInstance(AjxDateFormat.SHORT);\r
69358 var e=t._segments.length;\r
69359 for(var a=0;\r
69360 a<e;\r
69361 a++){\r
69362 if(t._segments[a]._s=="a"){\r
69363 return false\r
69364 }}\r
69365 return true\r
69366 };\r
69367 AjxDateUtil.roll=function(t,a,n){\r
69368 var o=t.getDate();\r
69369 if(a==AjxDateUtil.MONTH){\r
69370 t.setDate(1);\r
69371 t.setMonth(t.getMonth()+n);\r
69372 var e=AjxDateUtil.daysInMonth(t.getFullYear(),t.getMonth());\r
69373 t.setDate(Math.min(o,e))\r
69374 }else{\r
69375 if(a==AjxDateUtil.YEAR){\r
69376 t.setDate(1);\r
69377 t.setFullYear(t.getFullYear()+n);\r
69378 var e=AjxDateUtil.daysInMonth(t.getFullYear(),t.getMonth());\r
69379 t.setDate(Math.min(o,e))\r
69380 }else{\r
69381 if(a==AjxDateUtil.WEEK){\r
69382 t.setDate(t.getDate()+7*n)\r
69383 }else{\r
69384 if(a==AjxDateUtil.DAY){\r
69385 t.setDate(t.getDate()+n)\r
69386 }else{\r
69387 if(a==AjxDateUtil.TWO_WEEKS){\r
69388 t.setDate(t.getDate()+14*n)\r
69389 }else{\r
69390 return t\r
69391 }}}}}\r
69392 return t\r
69393 };\r
69394 AjxDateUtil.computeDateDelta=function(e){\r
69395 var t=(new Date()).getTime()-e;\r
69396 var a=AjxDateUtil.computeDuration(t);\r
69397 return a?(a+" "+AjxMsg.ago):null\r
69398 };\r
69399 AjxDateUtil.computeDuration=function(a,c){\r
69400 if(a<0){\r
69401 return null\r
69402 }\r
69403 var n=Math.floor(a/(AjxDateUtil.MSEC_PER_DAY*365));\r
69404 if(n!=0){\r
69405 a-=n*AjxDateUtil.MSEC_PER_DAY*365\r
69406 }\r
69407 var t=Math.floor(a/(AjxDateUtil.MSEC_PER_DAY*30.42));\r
69408 if(t>0){\r
69409 a-=Math.floor(t*AjxDateUtil.MSEC_PER_DAY*30.42)\r
69410 }\r
69411 var h=Math.floor(a/AjxDateUtil.MSEC_PER_DAY);\r
69412 if(h>0){\r
69413 a-=h*AjxDateUtil.MSEC_PER_DAY\r
69414 }\r
69415 var s=Math.floor(a/AjxDateUtil.MSEC_PER_HOUR);\r
69416 if(s>0){\r
69417 a-=s*AjxDateUtil.MSEC_PER_HOUR\r
69418 }\r
69419 var e=Math.floor(a/60000);\r
69420 if(e>0){\r
69421 a-=e*60000\r
69422 }\r
69423 var o=Math.floor(a/1000);\r
69424 var r=c?AjxDurationFormatConcise:AjxDurationFormatVerbose;\r
69425 if(n>0){\r
69426 return r.formatYears(n,t)\r
69427 }else{\r
69428 if(t>0){\r
69429 return r.formatMonths(t,h)\r
69430 }else{\r
69431 if(h>0){\r
69432 return r.formatDays(h,s)\r
69433 }else{\r
69434 if(s>0){\r
69435 return r.formatHours(s,e)\r
69436 }else{\r
69437 if(e>0){\r
69438 return r.formatMinutes(e,o)\r
69439 }else{\r
69440 return r.formatSeconds(o)\r
69441 }}}}}};\r
69442 AjxDateUtil.simpleComputeDateStr=function(t,a){\r
69443 var e=AjxDateUtil._dateFormat.format(t);\r
69444 return a?a+e:e\r
69445 };\r
69446 AjxDateUtil.simpleParseDateStr=function(e){\r
69447 return AjxDateUtil._dateFormat.parse(e)\r
69448 };\r
69449 AjxDateUtil.simpleComputeDateTimeStr=function(t,a){\r
69450 var e=AjxDateUtil._dateTimeFormat.format(t);\r
69451 return a?a+e:e\r
69452 };\r
69453 AjxDateUtil.simpleParseDateTimeStr=function(e){\r
69454 return AjxDateUtil._dateTimeFormat.parse(e)\r
69455 };\r
69456 AjxDateUtil.longComputeDateStr=function(e){\r
69457 var t=AjxDateFormat.getDateInstance(AjxDateFormat.FULL);\r
69458 return t.format(e)\r
69459 };\r
69460 AjxDateUtil.computeDateStr=function(a,t){\r
69461 if(t==null){\r
69462 return""\r
69463 }\r
69464 var e=new Date(t);\r
69465 if(a.getTime()-t<AjxDateUtil.MSEC_PER_DAY&&a.getDay()==e.getDay()){\r
69466 return AjxDateUtil.computeTimeString(e)\r
69467 }\r
69468 if(a.getFullYear()==e.getFullYear()){\r
69469 return AjxDateUtil._dateFormatNoYear.format(e)\r
69470 }\r
69471 return AjxDateUtil.simpleComputeDateStr(e)\r
69472 };\r
69473 AjxDateUtil.computeWordyDateStr=function(a,t){\r
69474 if(t==null){\r
69475 return""\r
69476 }\r
69477 var e=new Date(t);\r
69478 if(a.getTime()-t<AjxDateUtil.MSEC_PER_DAY&&a.getDay()==e.getDay()){\r
69479 if(!AjxDateUtil._wordyDateToday){\r
69480 AjxDateUtil._wordyDateToday=new AjxDateFormat(AjxMsg.formatWordyDateToday)\r
69481 }\r
69482 return AjxDateUtil._wordyDateToday.format(e)\r
69483 }else{\r
69484 if((a.getTime()-t)<(2*AjxDateUtil.MSEC_PER_DAY)&&(a.getDay()-1)==e.getDay()){\r
69485 if(!AjxDateUtil._wordyDateYesterday){\r
69486 AjxDateUtil._wordyDateYesterday=new AjxDateFormat(AjxMsg.formatWordyDateYesterday)\r
69487 }\r
69488 return AjxDateUtil._wordyDateYesterday.format(e)\r
69489 }else{\r
69490 if(!AjxDateUtil._wordyDate){\r
69491 AjxDateUtil._wordyDate=new AjxDateFormat(AjxMsg.formatWordyDate)\r
69492 }\r
69493 return AjxDateUtil._wordyDate.format(e)\r
69494 }}};\r
69495 AjxDateUtil.computeTimeString=function(e){\r
69496 var t=AjxDateFormat.getTimeInstance(AjxDateFormat.SHORT);\r
69497 return t.format(e)\r
69498 };\r
69499 AjxDateUtil.computeDateTimeString=function(e){\r
69500 var t=AjxDateFormat.getDateTimeInstance(AjxDateFormat.LONG);\r
69501 return t.format(e)\r
69502 };\r
69503 AjxDateUtil._getHoursStr=function(t,a,e){\r
69504 var o=t.getHours();\r
69505 if(!e){\r
69506 o%=12;\r
69507 if(o==0){\r
69508 o=12\r
69509 }}\r
69510 return a?AjxDateUtil._pad(o):o\r
69511 };\r
69512 AjxDateUtil._getMinutesStr=function(e){\r
69513 return AjxDateUtil._pad(e.getMinutes())\r
69514 };\r
69515 AjxDateUtil._getSecondsStr=function(e){\r
69516 return AjxDateUtil._pad(e.getSeconds())\r
69517 };\r
69518 AjxDateUtil._getAMPM=function(t,a){\r
69519 var e=t.getHours();\r
69520 return(e<12)?(a?"AM":"am"):(a?"PM":"pm")\r
69521 };\r
69522 AjxDateUtil._getMonthName=function(e,t){\r
69523 return t?AjxDateUtil.MONTH_MEDIUM[e.getMonth()]:AjxDateUtil.MONTH_LONG[e.getMonth()]\r
69524 };\r
69525 AjxDateUtil._getMonth=function(e,a){\r
69526 var t=e.getMonth()+1;\r
69527 if(a){\r
69528 return AjxDateUtil._pad(t)\r
69529 }else{\r
69530 return t\r
69531 }};\r
69532 AjxDateUtil._getDate=function(e,t){\r
69533 var a=e.getDate();\r
69534 return t?AjxDateUtil._pad(a):a\r
69535 };\r
69536 AjxDateUtil._getWeekday=function(e){\r
69537 var t=e.getDay();\r
69538 return AjxDateUtil.WEEKDAY_LONG[t]\r
69539 };\r
69540 AjxDateUtil._getWeekdayMedium=function(e){\r
69541 var t=e.getDay();\r
69542 return AjxDateUtil.WEEKDAY_MEDIUM[t]\r
69543 };\r
69544 AjxDateUtil._getFullYear=function(e){\r
69545 return e.getFullYear()\r
69546 };\r
69547 AjxDateUtil.getFirstDayOfWeek=function(o,e){\r
69548 e=e||0;\r
69549 var t=o.getDay();\r
69550 var a=(t-e+7)%7;\r
69551 o.setDate(o.getDate()-a);\r
69552 return o\r
69553 };\r
69554 AjxDateUtil.getWeekNumber=function(n,t,h){\r
69555 t=t||0;\r
69556 h=h||AjxDateUtil.WEEK_ONE_JAN_DATE;\r
69557 n=n||new Date();\r
69558 n.setHours(12,0,0,0);\r
69559 var c=n,f,p;\r
69560 if(c.getDay()===t){\r
69561 f=c\r
69562 }else{\r
69563 f=AjxDateUtil.getFirstDayOfWeek(c,t)\r
69564 }\r
69565 var d=f.getFullYear(),a=f.getTime();\r
69566 p=new Date(f.getTime()+6*AjxDateUtil.MSEC_PER_DAY);\r
69567 var r;\r
69568 if(d!==p.getFullYear()&&p.getDate()>=h){\r
69569 r=1\r
69570 }else{\r
69571 var s=(new Date(d,0,h));\r
69572 s.setHours(12,0,0,0);\r
69573 var e=AjxDateUtil.getFirstDayOfWeek(s,t);\r
69574 var u=Math.round((c.getTime()-e.getTime())/AjxDateUtil.MSEC_PER_DAY);\r
69575 var m=u%7;\r
69576 var o=(u-m)/7;\r
69577 r=o+1\r
69578 }\r
69579 return r\r
69580 };\r
69581 AjxDateUtil.getTimeStr=function(e,a){\r
69582 var t=a;\r
69583 t=t.replace(/%d/g,AjxDateUtil._getDate(e,true));\r
69584 t=t.replace(/%D/g,AjxDateUtil._getDate(e,false));\r
69585 t=t.replace(/%w/g,AjxDateUtil._getWeekday(e));\r
69586 t=t.replace(/%M/g,AjxDateUtil._getMonthName(e));\r
69587 t=t.replace(/%t/g,AjxDateUtil._getMonthName(e,true));\r
69588 t=t.replace(/%n/g,AjxDateUtil._getMonth(e,true));\r
69589 t=t.replace(/%Y/g,AjxDateUtil._getFullYear(e));\r
69590 t=t.replace(/%h/g,AjxDateUtil._getHoursStr(e,false,false));\r
69591 t=t.replace(/%H/g,AjxDateUtil._getHoursStr(e,true,false));\r
69592 t=t.replace(/%m/g,AjxDateUtil._getMinutesStr(e));\r
69593 t=t.replace(/%s/g,AjxDateUtil._getSecondsStr(e));\r
69594 t=t.replace(/%P/g,AjxDateUtil._getAMPM(e,true));\r
69595 t=t.replace(/%p/g,AjxDateUtil._getAMPM(e,false));\r
69596 return t\r
69597 };\r
69598 AjxDateUtil.getRoundedMins=function(e,a){\r
69599 var t=e.getMinutes();\r
69600 if(t!=0&&a){\r
69601 t=(Math.ceil((t/a)))*a\r
69602 }\r
69603 return t\r
69604 };\r
69605 AjxDateUtil.roundTimeMins=function(t,o){\r
69606 var a=t.getMinutes();\r
69607 var e=t.getHours();\r
69608 if(a!=0&&o){\r
69609 a=(Math.ceil((a/o)))*o;\r
69610 if(a==60){\r
69611 a=0;\r
69612 e++\r
69613 }\r
69614 t.setMinutes(a);\r
69615 t.setHours(e)\r
69616 }\r
69617 return t\r
69618 };\r
69619 AjxDateUtil.isInRange=function(o,t,a,e){\r
69620 return(o<e&&t>a)\r
69621 };\r
69622 AjxDateUtil.getSimpleDateFormat=function(){\r
69623 return AjxDateUtil._dateFormat\r
69624 };\r
69625 AjxDateUtil.getServerDate=function(e){\r
69626 if(!AjxDateUtil._serverDateFormatter){\r
69627 AjxDateUtil._serverDateFormatter=new AjxDateFormat("yyyyMMdd")\r
69628 }\r
69629 return AjxDateUtil._serverDateFormatter.format(e)\r
69630 };\r
69631 AjxDateUtil.getServerDateTime=function(t,o){\r
69632 var e=t;\r
69633 var a=null;\r
69634 if(o){\r
69635 if(!AjxDateUtil._serverDateTimeFormatterUTC){\r
69636 AjxDateUtil._serverDateTimeFormatterUTC=new AjxDateFormat("yyyyMMdd'T'HHmmss'Z'")\r
69637 }\r
69638 a=AjxDateUtil._serverDateTimeFormatterUTC;\r
69639 e=new Date(t.getTime());\r
69640 e.setMinutes(e.getMinutes()+e.getTimezoneOffset())\r
69641 }else{\r
69642 if(!AjxDateUtil._serverDateTimeFormatter){\r
69643 AjxDateUtil._serverDateTimeFormatter=new AjxDateFormat("yyyyMMdd'T'HHmmss")\r
69644 }\r
69645 a=AjxDateUtil._serverDateTimeFormatter\r
69646 }\r
69647 return a.format(e)\r
69648 };\r
69649 AjxDateUtil.parseServerTime=function(o,e){\r
69650 if(o.charAt(8)=="T"){\r
69651 var a=parseInt(o.substr(9,2),10);\r
69652 var n=parseInt(o.substr(11,2),10);\r
69653 var t=parseInt(o.substr(13,2),10);\r
69654 if(o.charAt(15)=="Z"){\r
69655 n+=AjxTimezone.getOffset(AjxTimezone.DEFAULT,e)\r
69656 }\r
69657 e.setHours(a,n,t,0)\r
69658 }\r
69659 return e\r
69660 };\r
69661 AjxDateUtil.parseServerDateTime=function(t){\r
69662 if(t==null){\r
69663 return null\r
69664 }\r
69665 var a=new Date();\r
69666 var n=parseInt(t.substr(0,4),10);\r
69667 var o=parseInt(t.substr(4,2),10);\r
69668 var e=parseInt(t.substr(6,2),10);\r
69669 a.setFullYear(n);\r
69670 a.setMonth(o-1);\r
69671 a.setMonth(o-1);\r
69672 a.setDate(e);\r
69673 AjxDateUtil.parseServerTime(t,a);\r
69674 return a\r
69675 };\r
69676 AjxDateUtil._pad=function(e){\r
69677 return e<10?("0"+e):e\r
69678 };\r
69679 AjxDurationFormatVerbose=function(){};\r
69680 AjxDurationFormatVerbose.formatYears=function(a,e){\r
69681 var t=a+" ";\r
69682 t+=(a>1)?AjxMsg.years:AjxMsg.year;\r
69683 if(a<=3&&e>0){\r
69684 t+=" "+e;\r
69685 t+=" "+((e>1)?AjxMsg.months:AjxMsg.months)\r
69686 }\r
69687 return t\r
69688 };\r
69689 AjxDurationFormatVerbose.formatMonths=function(e,a){\r
69690 var t=e+" ";\r
69691 t+=(e>1)?AjxMsg.months:AjxMsg.month;\r
69692 if(e<=3&&a>0){\r
69693 t+=" "+a;\r
69694 t+=" "+((a>1)?AjxMsg.days:AjxMsg.day)\r
69695 }\r
69696 return t\r
69697 };\r
69698 AjxDurationFormatVerbose.formatDays=function(a,e){\r
69699 var t=a+" ";\r
69700 t+=(a>1)?AjxMsg.days:AjxMsg.day;\r
69701 if(a<=2&&e>0){\r
69702 t+=" "+e;\r
69703 t+=" "+((e>1)?AjxMsg.hours:AjxMsg.hour)\r
69704 }\r
69705 return t\r
69706 };\r
69707 AjxDurationFormatVerbose.formatHours=function(e,a){\r
69708 var t=e+" ";\r
69709 t+=(e>1)?AjxMsg.hours:AjxMsg.hour;\r
69710 if(e<5&&a>0){\r
69711 t+=" "+a;\r
69712 t+=" "+((a>1)?AjxMsg.minutes:AjxMsg.minute)\r
69713 }\r
69714 return t\r
69715 };\r
69716 AjxDurationFormatVerbose.formatMinutes=function(a,t){\r
69717 var e=a+" ";\r
69718 e+=((a>1)?AjxMsg.minutes:AjxMsg.minute);\r
69719 if(a<5&&t>0){\r
69720 e+=" "+t;\r
69721 e+=" "+((t>1)?AjxMsg.seconds:AjxMsg.second)\r
69722 }\r
69723 return e\r
69724 };\r
69725 AjxDurationFormatVerbose.formatSeconds=function(e){\r
69726 return(e+" "+((e>1)?AjxMsg.seconds:AjxMsg.second))\r
69727 };\r
69728 AjxDurationFormatConcise=function(){};\r
69729 AjxDurationFormatConcise.formatYears=function(t,e){\r
69730 return this._format(t,e)\r
69731 };\r
69732 AjxDurationFormatConcise.formatMonths=function(e,t){\r
69733 return this._format(e,t)\r
69734 };\r
69735 AjxDurationFormatConcise.formatDays=function(t,e){\r
69736 return this._format(t,e)\r
69737 };\r
69738 AjxDurationFormatConcise.formatHours=function(e,t){\r
69739 return this._format(e,t)\r
69740 };\r
69741 AjxDurationFormatConcise.formatMinutes=function(t,e){\r
69742 return this._format(t,e)\r
69743 };\r
69744 AjxDurationFormatConcise.formatSeconds=function(e){\r
69745 return this._format(0,e)\r
69746 };\r
69747 AjxDurationFormatConcise._format=function(o,t){\r
69748 var n=0;\r
69749 var e=[];\r
69750 e[n++]=o;\r
69751 e[n++]=":";\r
69752 if(t<10){\r
69753 e[n++]="0"\r
69754 }\r
69755 e[n++]=t;\r
69756 return e.join("")\r
69757 };\r
69758 AjxDateUtil.SUNDAY=0;\r
69759 AjxDateUtil.MONDAY=1;\r
69760 AjxDateUtil.TUESDAY=2;\r
69761 AjxDateUtil.WEDNESDAY=3;\r
69762 AjxDateUtil.THURSDAY=4;\r
69763 AjxDateUtil.FRIDAY=5;\r
69764 AjxDateUtil.SATURDAY=6;\r
69765 AjxDateUtil.getDateForNextDay=function(t,n,o){\r
69766 o=o||1;\r
69767 var a=new Date(t);\r
69768 for(var e=0;\r
69769 e<o;\r
69770 e++){\r
69771 a=AjxDateUtil._getDateForNextWeekday(a,n);\r
69772 if(e<o-1){\r
69773 a.setDate(a.getDate()+1)\r
69774 }}\r
69775 return a\r
69776 };\r
69777 AjxDateUtil.getDateForNextWorkWeekDay=function(t,o){\r
69778 o=o?o:1;\r
69779 var a=new Date(t);\r
69780 for(var e=0;\r
69781 e<o;\r
69782 e++){\r
69783 a=AjxDateUtil._getDateForNextWorkWeekday(a);\r
69784 if(e<o-1){\r
69785 a.setDate(a.getDate()+1)\r
69786 }}\r
69787 return a\r
69788 };\r
69789 AjxDateUtil.getDateForThisDay=function(e,a,t){\r
69790 if(t<0){\r
69791 return AjxDateUtil.getDateForPrevDay(e,a,-t)\r
69792 }else{\r
69793 return AjxDateUtil.getDateForNextDay(e,a,t)\r
69794 }};\r
69795 AjxDateUtil.getDateForThisWorkWeekDay=function(e,t){\r
69796 if(t<0){\r
69797 return AjxDateUtil.getDateForPrevWorkWeekDay(e,-t)\r
69798 }else{\r
69799 return AjxDateUtil.getDateForNextWorkWeekDay(e,t)\r
69800 }};\r
69801 AjxDateUtil.getDateForPrevDay=function(t,n,o){\r
69802 o=o||1;\r
69803 var a=new Date(t);\r
69804 for(var e=0;\r
69805 e<o;\r
69806 e++){\r
69807 a=AjxDateUtil._getDateForPrevWeekday(a,n);\r
69808 if(e<o-1){\r
69809 a.setDate(a.getDate()-1)\r
69810 }}\r
69811 return a\r
69812 };\r
69813 AjxDateUtil.getDateForPrevWorkWeekDay=function(t,o){\r
69814 o=o||1;\r
69815 var a=new Date(t);\r
69816 for(var e=0;\r
69817 e<o;\r
69818 e++){\r
69819 a=AjxDateUtil._getDateForPrevWorkWeekday(a);\r
69820 if(e<o-1){\r
69821 a.setDate(a.getDate()-1)\r
69822 }}\r
69823 return a\r
69824 };\r
69825 AjxDateUtil._getDateForNextWeekday=function(a,n){\r
69826 var e=new Date(a);\r
69827 var t=a.getDay();\r
69828 if(t==n){\r
69829 return e\r
69830 }\r
69831 var o=(n-t);\r
69832 if(o>0){\r
69833 e.setDate(a.getDate()+o)\r
69834 }else{\r
69835 e.setDate(a.getDate()+(7+o))\r
69836 }\r
69837 return e\r
69838 };\r
69839 AjxDateUtil._getDateForNextWorkWeekday=function(a){\r
69840 var e=new Date(a);\r
69841 var t=a.getDay();\r
69842 if(t==AjxDateUtil.SUNDAY){\r
69843 e.setDate(a.getDate()+1)\r
69844 }else{\r
69845 if(t==AjxDateUtil.SATURDAY){\r
69846 e.setDate(a.getDate()+2)\r
69847 }}\r
69848 return e\r
69849 };\r
69850 AjxDateUtil._getDateForPrevWeekday=function(a,n){\r
69851 var e=new Date(a);\r
69852 var t=a.getDay();\r
69853 if(t==n){\r
69854 return e\r
69855 }\r
69856 var o=(t-n);\r
69857 if(o>0){\r
69858 e.setDate(a.getDate()-o)\r
69859 }else{\r
69860 e.setDate(a.getDate()-(7+o))\r
69861 }\r
69862 return e\r
69863 };\r
69864 AjxDateUtil._getDateForPrevWorkWeekday=function(a){\r
69865 var e=new Date(a);\r
69866 var t=a.getDay();\r
69867 if(t==AjxDateUtil.SUNDAY){\r
69868 e.setDate(a.getDate()-2)\r
69869 }else{\r
69870 if(t==AjxDateUtil.SATURDAY){\r
69871 e.setDate(a.getDate()-1)\r
69872 }}\r
69873 return e\r
69874 };\r
69875 AjxDateUtil.calculate=function(f,n){\r
69876 if(!AjxDateUtil.__calculate_initialized){\r
69877 AjxDateUtil.__calculate_initialized=true;\r
69878 AjxDateUtil.__calculate_init()\r
69879 }\r
69880 var e=n||new Date;\r
69881 f=f.replace(/^\s*|\s*$/,"").replace(/\s*=\s*/g,"=").replace(/\s*,\s*/g,",");\r
69882 var p=f.split(/\s+/g);\r
69883 var y,r,o,h,u,d,g,t;\r
69884 for(var c=0;\r
69885 c<p.length;\r
69886 c++){\r
69887 y=p[c];\r
69888 if(y.match(AjxDateUtil.RE_COMMENT)){\r
69889 break\r
69890 }\r
69891 if(y.match(AjxDateUtil.RE_NOW)){\r
69892 n=new Date(e.getTime());\r
69893 continue\r
69894 }\r
69895 if(r=y.match(AjxDateUtil.RE_ADD_NUMBER)){\r
69896 o=r[1];\r
69897 h=AjxDateUtil.__calculate_parseInt(r[2]);\r
69898 u=p[++c];\r
69899 d=o=="+"?h:h*-1;\r
69900 AjxDateUtil.__calculate_add(n,u,d);\r
69901 continue\r
69902 }\r
69903 if(r=y.match(AjxDateUtil.RE_ADD_WEEKORD)){\r
69904 o=r[1];\r
69905 g=r[2];\r
69906 t=p[++c];\r
69907 d=o=="+"?h:h*-1;\r
69908 AjxDateUtil.__calculate_add_ordinal(n,u,d);\r
69909 continue\r
69910 }\r
69911 if(r=y.match(AjxDateUtil.RE_SET)){\r
69912 AjxDateUtil.__calculate_set(n,r[1],r[2]);\r
69913 continue\r
69914 }\r
69915 n=AjxDateFormat.parse("yyyyy-MM-dd",y);\r
69916 if(!n&&(n=AjxDateFormat.parse("yyyy-MM-dd'T'hh:mm:ss'Z'",y))){\r
69917 n.setMinutes(n.getMinutes()-n.getTimezoneOffset())\r
69918 }\r
69919 if(!n){\r
69920 n=AjxDateFormat.parse("yyyy-MM-dd'T'HH:mm:ss",y)\r
69921 }\r
69922 if(!n){\r
69923 throw'invalid date pattern: "'+y+'"'\r
69924 }}\r
69925 return n\r
69926 };\r
69927 AjxDateUtil.S_DAYNAME=[AjxMsg["calc.dayname.sunday"],AjxMsg["calc.dayname.monday"],AjxMsg["calc.dayname.tuesday"],AjxMsg["calc.dayname.wednesday"],AjxMsg["calc.dayname.thursday"],AjxMsg["calc.dayname.friday"],AjxMsg["calc.dayname.saturday"]].join("|");\r
69928 AjxDateUtil.S_MONTHNAME=[AjxMsg["calc.monthname.january"],AjxMsg["calc.monthname.february"],AjxMsg["calc.monthname.march"],AjxMsg["calc.monthname.april"],AjxMsg["calc.monthname.may"],AjxMsg["calc.monthname.june"],AjxMsg["calc.monthname.july"],AjxMsg["calc.monthname.august"],AjxMsg["calc.monthname.september"],AjxMsg["calc.monthname.october"],AjxMsg["calc.monthname.november"],AjxMsg["calc.monthname.december"]].join("|");\r
69929 AjxDateUtil.S_WEEKORD=[AjxMsg["calc.ordinal.first"],AjxMsg["calc.ordinal.second"],AjxMsg["calc.ordinal.third"],AjxMsg["calc.ordinal.fourth"],AjxMsg["calc.ordinal.fifth"],AjxMsg["calc.ordinal.last"]].join("|");\r
69930 AjxMsg["calc.now"]="now";\r
69931 AjxMsg["calc.date"]="date";\r
69932 AjxMsg["calc.duration.year"]="year|years";\r
69933 AjxMsg["calc.duration.month"]="month|months";\r
69934 AjxMsg["calc.duration.day"]="day|days";\r
69935 AjxMsg["calc.duration.hour"]="hour|hours";\r
69936 AjxMsg["calc.duration.minute"]="min|mins|minute|minutes";\r
69937 AjxMsg["calc.duration.second"]="sec|secs|second|seconds";\r
69938 AjxMsg["calc.duration.millisecond"]="milli|millis|millisecond|milliseconds";\r
69939 AjxDateUtil.S_DURATION=[AjxMsg["calc.duration.year"],AjxMsg["calc.duration.month"],AjxMsg["calc.duration.day"],AjxMsg["calc.duration.hour"],AjxMsg["calc.duration.minute"],AjxMsg["calc.duration.second"],AjxMsg["calc.duration.millisecond"]].join("|");\r
69940 AjxDateUtil.__calculate_init=function(){\r
69941 AjxDateUtil.WEEKDAYS={};\r
69942 var t=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];\r
69943 for(var o=0;\r
69944 o<t.length;\r
69945 o++){\r
69946 var n=AjxMsg["calc.dayname."+t[o]].split("|");\r
69947 for(var a=0;\r
69948 a<n.length;\r
69949 a++){\r
69950 AjxDateUtil.WEEKDAYS[n[a].toLowerCase()]=o\r
69951 }}\r
69952 AjxDateUtil.MONTHNAME2MONTHNUM={};\r
69953 var e=["january","february","march","april","may","june","july","august","september","october","november","december"];\r
69954 for(var o=0;\r
69955 o<e.length;\r
69956 o++){\r
69957 var s=AjxMsg["calc.monthname."+e[o]].split("|");\r
69958 for(var a=0;\r
69959 a<s.length;\r
69960 a++){\r
69961 AjxDateUtil.MONTHNAME2MONTHNUM[s[a].toLowerCase()]=o\r
69962 }}\r
69963 AjxDateUtil.RE_YEAR=new RegExp("^("+AjxMsg["calc.duration.year"]+")$","i");\r
69964 AjxDateUtil.RE_MONTH=new RegExp("^("+AjxMsg["calc.duration.month"]+")$","i");\r
69965 AjxDateUtil.RE_WEEK=new RegExp("^("+AjxMsg["calc.duration.week"]+")$","i");\r
69966 AjxDateUtil.RE_DAY=new RegExp("^("+AjxMsg["calc.duration.day"]+")$","i");\r
69967 AjxDateUtil.RE_HOUR=new RegExp("^("+AjxMsg["calc.duration.hour"]+")$","i");\r
69968 AjxDateUtil.RE_MINUTE=new RegExp("^("+AjxMsg["calc.duration.minute"]+")$","i");\r
69969 AjxDateUtil.RE_SECOND=new RegExp("^("+AjxMsg["calc.duration.second"]+")$","i");\r
69970 AjxDateUtil.RE_MILLISECOND=new RegExp("^("+AjxMsg["calc.duration.millisecond"]+")$","i");\r
69971 AjxDateUtil.RE_DATE=new RegExp("^("+AjxMsg["calc.date"]+")$","i");\r
69972 AjxDateUtil.RE_DAYNAME=new RegExp("^("+AjxDateUtil.S_DAYNAME+")$","i");\r
69973 AjxDateUtil.RE_MONTHNAME=new RegExp("^("+AjxDateUtil.S_MONTHNAME+")$","i");\r
69974 AjxDateUtil.RE_WEEKORD=new RegExp("^("+AjxDateUtil.S_WEEKORD+")$","i");\r
69975 AjxDateUtil.RE_COMMENT=/^#/;\r
69976 AjxDateUtil.RE_NOW=new RegExp("^("+AjxMsg["calc.now"]+")$","i");\r
69977 AjxDateUtil.RE_ADD_NUMBER=new RegExp("^([+\\-])(\\d+)$","i");\r
69978 AjxDateUtil.RE_ADD_WEEKORD=new RegExp("^([+\\-])("+AjxDateUtil.S_WEEKORD+")$","i");\r
69979 AjxDateUtil.RE_SET=new RegExp("^("+AjxDateUtil.S_DURATION+"|"+AjxMsg["calc.date"]+")=(.*)$","i")\r
69980 };\r
69981 AjxDateUtil.__calculate_normalizeFullWidthDigit=function(t){\r
69982 var e="0".charCodeAt(0)+t.charCodeAt(0)-"\uff10".charCodeAt(0);\r
69983 return String.fromCharCode(e)\r
69984 };\r
69985 AjxDateUtil.__calculate_replaceFullWidthDigit=function(e,t){\r
69986 return AjxDateUtil.__calculate_normalizeFullWidthDigit(t)\r
69987 };\r
69988 AjxDateUtil.__calculate_parseInt=function(e){\r
69989 e=e.replace(/([\uFF10-\uFF19])/g,AjxDateUtil.__calculate_normalizeFullWidthDigit);\r
69990 return parseInt(e,10)\r
69991 };\r
69992 AjxDateUtil.__calculate_add=function(a,n,o){\r
69993 if(n.match(AjxDateUtil.RE_YEAR)){\r
69994 a.setFullYear(a.getFullYear()+o);\r
69995 return\r
69996 }\r
69997 if(n.match(AjxDateUtil.RE_MONTH)){\r
69998 var s=a.getMonth();\r
69999 a.setMonth(s+o);\r
70000 if(Math.abs(s+o)%12!=a.getMonth()){\r
70001 a.setDate(0)\r
70002 }\r
70003 return\r
70004 }\r
70005 if(n.match(AjxDateUtil.RE_WEEK)){\r
70006 a.setDate(a.getDate()+o*7);\r
70007 return\r
70008 }\r
70009 if(n.match(AjxDateUtil.RE_DAY)){\r
70010 a.setDate(a.getDate()+o);\r
70011 return\r
70012 }\r
70013 if(n.match(AjxDateUtil.RE_HOUR)){\r
70014 a.setHours(a.getHours()+o);\r
70015 return\r
70016 }\r
70017 if(n.match(AjxDateUtil.RE_MINUTE)){\r
70018 a.setMinutes(a.getMinutes()+o);\r
70019 return\r
70020 }\r
70021 if(n.match(AjxDateUtil.RE_SECOND)){\r
70022 a.setSeconds(a.getSeconds()+o);\r
70023 return\r
70024 }\r
70025 if(n.match(AjxDateUtil.RE_MILLISECOND)){\r
70026 a.setMilliseconds(a.getMilliseconds()+o);\r
70027 return\r
70028 }\r
70029 if(n.match(AjxDateUtil.RE_MONTHNAME)){\r
70030 var e=AjxDateUtil.MONTHNAME2MONTHNUM[n.toLowerCase()];\r
70031 if(e<a.getMonth()){\r
70032 o+=o>0?0:1\r
70033 }else{\r
70034 if(e>a.getMonth()){\r
70035 o+=o>0?-1:0\r
70036 }}\r
70037 a.setFullYear(a.getFullYear()+o,e,1);\r
70038 return\r
70039 }\r
70040 if(n.match(AjxDateUtil.RE_DAYNAME)){\r
70041 var t=AjxDateUtil.WEEKDAYS[n.toLowerCase()];\r
70042 if(t<a.getDay()){\r
70043 o+=o>0?0:1\r
70044 }else{\r
70045 if(t>a.getDay()){\r
70046 o+=o>0?-1:0\r
70047 }}\r
70048 a.setDate(a.getDate()+(t-a.getDay())+7*o);\r
70049 return\r
70050 }\r
70051 throw"unknown type: "+n\r
70052 };\r
70053 AjxDateUtil.__calculate_add_ordinal=function(){\r
70054 throw"TODO: not implemented"\r
70055 };\r
70056 AjxDateUtil.__calculate_set=function(t,a,o){\r
70057 var e=o.split(/,/);\r
70058 if(a.match(AjxDateUtil.RE_YEAR)){\r
70059 e[0]=AjxDateUtil.__calculate_fullYear(e[0]);\r
70060 if(e[1]!=null){\r
70061 e[1]=AjxDateUtil.__calculate_month(e[1])\r
70062 }\r
70063 if(e[2]!=null){\r
70064 e[2]=parseInt(e[2],10)\r
70065 }\r
70066 t.setFullYear.apply(t,e);\r
70067 return\r
70068 }\r
70069 if(a.match(AjxDateUtil.RE_MONTH)){\r
70070 e[0]=AjxDateUtil.__calculate_month(e[0]);\r
70071 if(e[1]!=null){\r
70072 e[1]=parseInt(e[1],10)\r
70073 }\r
70074 t.setMonth.apply(t,e);\r
70075 return\r
70076 }\r
70077 if(a.match(AjxDateUtil.RE_DATE)){\r
70078 e[0]=parseInt(e[0],10);\r
70079 t.setDate.apply(t,e);\r
70080 return\r
70081 }\r
70082 if(a.match(AjxDateUtil.RE_HOUR)){\r
70083 e[0]=parseInt(e[0],10);\r
70084 if(e[1]!=null){\r
70085 e[1]=parseInt(e[1],10)\r
70086 }\r
70087 if(e[2]!=null){\r
70088 e[2]=parseInt(e[2],10)\r
70089 }\r
70090 if(e[3]!=null){\r
70091 e[3]=parseInt(e[3],10)\r
70092 }\r
70093 t.setHours.apply(t,e);\r
70094 return\r
70095 }\r
70096 if(a.match(AjxDateUtil.RE_MINUTE)){\r
70097 e[0]=parseInt(e[0],10);\r
70098 if(e[1]!=null){\r
70099 e[1]=parseInt(e[1],10)\r
70100 }\r
70101 if(e[2]!=null){\r
70102 e[2]=parseInt(e[2],10)\r
70103 }\r
70104 t.setMinutes.apply(t,e);\r
70105 return\r
70106 }\r
70107 if(a.match(AjxDateUtil.RE_SECOND)){\r
70108 e[0]=parseInt(e[0],10);\r
70109 if(e[1]!=null){\r
70110 e[1]=parseInt(e[1],10)\r
70111 }\r
70112 t.setSeconds.apply(t,e);\r
70113 return\r
70114 }\r
70115 if(a.match(AjxDateUtil.RE_MILLISECOND)){\r
70116 t.setMilliseconds.apply(t,e);\r
70117 return\r
70118 }\r
70119 throw"unknown type: "+a\r
70120 };\r
70121 AjxDateUtil.__calculate_fullYear=function(e){\r
70122 if(e.length==2){\r
70123 var t=new Date;\r
70124 t.setYear(parseInt(e,10));\r
70125 e=String(t.getFullYear()).substr(0,2)+e\r
70126 }\r
70127 return parseInt(e,10)\r
70128 };\r
70129 AjxDateUtil.__calculate_month=function(t){\r
70130 var e=AjxDateUtil.MONTHNAME2MONTHNUM[t.toLowerCase()];\r
70131 return e!=null?e:parseInt(t,10)-1\r
70132 };\r
70133 AjxDateUtil.__calculate_day=function(t){\r
70134 var e=AjxDateUtil.WEEKDAYS[t.toLowerCase()];\r
70135 return e!=null?e:parseInt(t,10)\r
70136 }\r
70137 }\r
70138 if(AjxPackage.define("ajax.util.AjxTimezoneData")){\r
70139 AjxTimezoneData={};\r
70140 AjxTimezoneData.TRANSITION_YEAR=2010;\r
70141 AjxTimezoneData.TIMEZONE_RULES=[{\r
70142 serverId:"Etc/GMT+12",clientId:"Etc/GMT+12",standard:{\r
70143 offset:-720,tzname:"GMT+12"}}\r
70144 ,{\r
70145 serverId:"Pacific/Midway",clientId:"Pacific/Midway",standard:{\r
70146 offset:-660,tzname:"SST"}}\r
70147 ,{\r
70148 serverId:"Pacific/Honolulu",clientId:"Pacific/Honolulu",standard:{\r
70149 offset:-600,tzname:"HST"}}\r
70150 ,{\r
70151 serverId:"America/Anchorage",clientId:"America/Anchorage",standard:{\r
70152 offset:-540,mon:11,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,11,7],tzname:"AKST"}\r
70153 ,daylight:{\r
70154 offset:-480,mon:3,week:2,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,14],tzname:"AKDT"}}\r
70155 ,{\r
70156 serverId:"America/Los_Angeles",clientId:"America/Los_Angeles",standard:{\r
70157 offset:-480,mon:11,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,11,7],tzname:"PST"}\r
70158 ,daylight:{\r
70159 offset:-420,mon:3,week:2,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,14],tzname:"PDT"}}\r
70160 ,{\r
70161 serverId:"America/Tijuana",clientId:"America/Tijuana",standard:{\r
70162 offset:-480,mon:10,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,10,31],tzname:"PST"}\r
70163 ,daylight:{\r
70164 offset:-420,mon:4,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,4,4],tzname:"PDT"}}\r
70165 ,{\r
70166 serverId:"America/Chihuahua",clientId:"America/Chihuahua",standard:{\r
70167 offset:-420,mon:10,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,10,31],tzname:"MST"}\r
70168 ,daylight:{\r
70169 offset:-360,mon:4,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,4,4],tzname:"MDT"}}\r
70170 ,{\r
70171 serverId:"America/Denver",clientId:"America/Denver",standard:{\r
70172 offset:-420,mon:11,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,11,7],tzname:"MST"}\r
70173 ,daylight:{\r
70174 offset:-360,mon:3,week:2,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,14],tzname:"MDT"}}\r
70175 ,{\r
70176 serverId:"America/Phoenix",clientId:"America/Phoenix",standard:{\r
70177 offset:-420,tzname:"MST"}}\r
70178 ,{\r
70179 serverId:"America/Chicago",clientId:"America/Chicago",standard:{\r
70180 offset:-360,mon:11,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,11,7],tzname:"CST"}\r
70181 ,daylight:{\r
70182 offset:-300,mon:3,week:2,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,14],tzname:"CDT"}}\r
70183 ,{\r
70184 serverId:"America/Guatemala",clientId:"America/Guatemala",standard:{\r
70185 offset:-360}}\r
70186 ,{\r
70187 serverId:"America/Mexico_City",clientId:"America/Mexico_City",standard:{\r
70188 offset:-360,mon:10,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,10,31],tzname:"CST"}\r
70189 ,daylight:{\r
70190 offset:-300,mon:4,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,4,4],tzname:"CDT"}}\r
70191 ,{\r
70192 serverId:"America/Regina",clientId:"America/Regina",standard:{\r
70193 offset:-360,tzname:"CST"}}\r
70194 ,{\r
70195 serverId:"America/Bogota",clientId:"America/Bogota",standard:{\r
70196 offset:-300}}\r
70197 ,{\r
70198 serverId:"America/Indiana/Indianapolis",clientId:"America/Indiana/Indianapolis",standard:{\r
70199 offset:-300,mon:11,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,11,7],tzname:"EST"}\r
70200 ,daylight:{\r
70201 offset:-240,mon:3,week:2,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,14],tzname:"EDT"}}\r
70202 ,{\r
70203 serverId:"America/New_York",clientId:"America/New_York",standard:{\r
70204 offset:-300,mon:11,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,11,7],tzname:"EST"}\r
70205 ,daylight:{\r
70206 offset:-240,mon:3,week:2,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,14],tzname:"EDT"}}\r
70207 ,{\r
70208 serverId:"America/Caracas",clientId:"America/Caracas",standard:{\r
70209 offset:-270,tzname:"VET"}}\r
70210 ,{\r
70211 serverId:"America/Guyana",clientId:"America/Guyana",standard:{\r
70212 offset:-240,tzname:"GYT"}}\r
70213 ,{\r
70214 serverId:"America/Halifax",clientId:"America/Halifax",standard:{\r
70215 offset:-240,mon:11,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,11,7],tzname:"AST"}\r
70216 ,daylight:{\r
70217 offset:-180,mon:3,week:2,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,14],tzname:"ADT"}}\r
70218 ,{\r
70219 serverId:"America/La_Paz",clientId:"America/La_Paz",standard:{\r
70220 offset:-240,tzname:"BOT"}}\r
70221 ,{\r
70222 serverId:"America/Manaus",clientId:"America/Manaus",standard:{\r
70223 offset:-240,tzname:"AMT"}}\r
70224 ,{\r
70225 serverId:"America/Santiago",clientId:"America/Santiago",standard:{\r
70226 offset:-240,mon:3,week:3,wkday:1,hour:0,min:0,sec:0,trans:[2010,3,21],tzname:"CLT"}\r
70227 ,daylight:{\r
70228 offset:-180,mon:10,week:2,wkday:1,hour:0,min:0,sec:0,trans:[2010,10,10],tzname:"CLST"}}\r
70229 ,{\r
70230 serverId:"America/St_Johns",clientId:"America/St_Johns",standard:{\r
70231 offset:-210,mon:11,week:1,wkday:1,hour:0,min:1,sec:0,trans:[2010,11,7],tzname:"NST"}\r
70232 ,daylight:{\r
70233 offset:-150,mon:3,week:2,wkday:1,hour:0,min:1,sec:0,trans:[2010,3,14],tzname:"NDT"}}\r
70234 ,{\r
70235 serverId:"America/Argentina/Buenos_Aires",clientId:"America/Argentina/Buenos_Aires",standard:{\r
70236 offset:-180}}\r
70237 ,{\r
70238 serverId:"America/Godthab",clientId:"America/Godthab",standard:{\r
70239 offset:-180,mon:10,week:-1,wkday:1,hour:1,min:0,sec:0,trans:[2010,10,31],tzname:"WGT"}\r
70240 ,daylight:{\r
70241 offset:-120,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"WGST"}}\r
70242 ,{\r
70243 serverId:"America/Montevideo",clientId:"America/Montevideo",standard:{\r
70244 offset:-180,mon:3,week:2,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,14],tzname:"UYT"}\r
70245 ,daylight:{\r
70246 offset:-120,mon:10,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,10,3],tzname:"UYST"}}\r
70247 ,{\r
70248 serverId:"America/Sao_Paulo",clientId:"America/Sao_Paulo",standard:{\r
70249 offset:-180,mon:2,week:3,wkday:1,hour:0,min:0,sec:0,trans:[2010,2,21],tzname:"BRT"}\r
70250 ,daylight:{\r
70251 offset:-120,mon:10,week:3,wkday:1,hour:0,min:0,sec:0,trans:[2010,10,17],tzname:"BRST"}}\r
70252 ,{\r
70253 serverId:"Atlantic/South_Georgia",clientId:"Atlantic/South_Georgia",standard:{\r
70254 offset:-120,tzname:"GST"}}\r
70255 ,{\r
70256 serverId:"Atlantic/Azores",clientId:"Atlantic/Azores",standard:{\r
70257 offset:-60,mon:10,week:-1,wkday:1,hour:1,min:0,sec:0,trans:[2010,10,31],tzname:"AZOT"}\r
70258 ,daylight:{\r
70259 offset:0,mon:3,week:-1,wkday:1,hour:0,min:0,sec:0,trans:[2010,3,28],tzname:"AZOST"}}\r
70260 ,{\r
70261 serverId:"Atlantic/Cape_Verde",clientId:"Atlantic/Cape_Verde",standard:{\r
70262 offset:-60,tzname:"CVT"}}\r
70263 ,{\r
70264 serverId:"Africa/Casablanca",clientId:"Africa/Casablanca",standard:{\r
70265 offset:0,mon:8,week:3,wkday:6,hour:0,min:0,sec:0,trans:[2010,8,20],tzname:"WET"}\r
70266 ,daylight:{\r
70267 offset:60,mon:6,week:1,wkday:2,hour:0,min:0,sec:0,trans:[2010,6,7],tzname:"WEST"}}\r
70268 ,{\r
70269 serverId:"Africa/Monrovia",clientId:"Africa/Monrovia",standard:{\r
70270 offset:0,tzname:"GMT"}}\r
70271 ,{\r
70272 serverId:"Europe/London",clientId:"Europe/London",standard:{\r
70273 offset:0,mon:10,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,10,31],tzname:"GMT/BST"}\r
70274 ,daylight:{\r
70275 offset:60,mon:3,week:-1,wkday:1,hour:1,min:0,sec:0,trans:[2010,3,28],tzname:"GMT/BST"}}\r
70276 ,{\r
70277 serverId:"Africa/Algiers",clientId:"Africa/Algiers",standard:{\r
70278 offset:60,tzname:"CET"}}\r
70279 ,{\r
70280 serverId:"Africa/Windhoek",clientId:"Africa/Windhoek",standard:{\r
70281 offset:60,mon:4,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,4,4],tzname:"WAT"}\r
70282 ,daylight:{\r
70283 offset:120,mon:9,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,9,5],tzname:"WAST"}}\r
70284 ,{\r
70285 serverId:"Europe/Belgrade",clientId:"Europe/Belgrade",standard:{\r
70286 offset:60,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"CET"}\r
70287 ,daylight:{\r
70288 offset:120,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"CEST"}}\r
70289 ,{\r
70290 serverId:"Europe/Berlin",clientId:"Europe/Berlin",standard:{\r
70291 offset:60,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"CET"}\r
70292 ,daylight:{\r
70293 offset:120,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"CEST"}}\r
70294 ,{\r
70295 serverId:"Europe/Brussels",clientId:"Europe/Brussels",standard:{\r
70296 offset:60,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"CET"}\r
70297 ,daylight:{\r
70298 offset:120,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"CEST"}}\r
70299 ,{\r
70300 serverId:"Europe/Warsaw",clientId:"Europe/Warsaw",standard:{\r
70301 offset:60,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"CET"}\r
70302 ,daylight:{\r
70303 offset:120,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"CEST"}}\r
70304 ,{\r
70305 serverId:"Africa/Cairo",clientId:"Africa/Cairo",standard:{\r
70306 offset:120,mon:8,week:3,wkday:5,hour:0,min:0,sec:0,trans:[2010,8,19],tzname:"EET"}\r
70307 ,daylight:{\r
70308 offset:180,mon:4,week:-1,wkday:6,hour:0,min:0,sec:0,trans:[2010,4,30],tzname:"EEST"}}\r
70309 ,{\r
70310 serverId:"Africa/Harare",clientId:"Africa/Harare",standard:{\r
70311 offset:120,tzname:"CAT"}}\r
70312 ,{\r
70313 serverId:"Asia/Amman",clientId:"Asia/Amman",standard:{\r
70314 offset:120,mon:10,week:-1,wkday:6,hour:1,min:0,sec:0,trans:[2010,10,29],tzname:"EET"}\r
70315 ,daylight:{\r
70316 offset:180,mon:3,week:-1,wkday:5,hour:23,min:59,sec:59,trans:[2010,3,25],tzname:"EEST"}}\r
70317 ,{\r
70318 serverId:"Asia/Beirut",clientId:"Asia/Beirut",standard:{\r
70319 offset:120,mon:10,week:-1,wkday:1,hour:0,min:0,sec:0,trans:[2010,10,31],tzname:"EET"}\r
70320 ,daylight:{\r
70321 offset:180,mon:3,week:-1,wkday:1,hour:0,min:0,sec:0,trans:[2010,3,28],tzname:"EEST"}}\r
70322 ,{\r
70323 serverId:"Asia/Jerusalem",clientId:"Asia/Jerusalem",standard:{\r
70324 offset:120,mon:9,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,9,26],tzname:"IST"}\r
70325 ,daylight:{\r
70326 offset:180,mon:3,week:-1,wkday:6,hour:2,min:0,sec:0,trans:[2010,3,26],tzname:"IDT"}}\r
70327 ,{\r
70328 serverId:"Europe/Athens",clientId:"Europe/Athens",standard:{\r
70329 offset:120,mon:10,week:-1,wkday:1,hour:4,min:0,sec:0,trans:[2010,10,31],tzname:"EET"}\r
70330 ,daylight:{\r
70331 offset:180,mon:3,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,3,28],tzname:"EEST"}}\r
70332 ,{\r
70333 serverId:"Europe/Helsinki",clientId:"Europe/Helsinki",standard:{\r
70334 offset:120,mon:10,week:-1,wkday:1,hour:4,min:0,sec:0,trans:[2010,10,31],tzname:"EET"}\r
70335 ,daylight:{\r
70336 offset:180,mon:3,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,3,28],tzname:"EEST"}}\r
70337 ,{\r
70338 serverId:"Europe/Minsk",clientId:"Europe/Minsk",standard:{\r
70339 offset:120,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"EET"}\r
70340 ,daylight:{\r
70341 offset:180,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"EEST"}}\r
70342 ,{\r
70343 serverId:"Africa/Nairobi",clientId:"Africa/Nairobi",standard:{\r
70344 offset:180,tzname:"EAT"}}\r
70345 ,{\r
70346 serverId:"Asia/Baghdad",clientId:"Asia/Baghdad",standard:{\r
70347 offset:180}}\r
70348 ,{\r
70349 serverId:"Asia/Kuwait",clientId:"Asia/Kuwait",standard:{\r
70350 offset:180,tzname:"AST"}}\r
70351 ,{\r
70352 serverId:"Europe/Moscow",clientId:"Europe/Moscow",standard:{\r
70353 offset:180,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"MSK/MSD"}\r
70354 ,daylight:{\r
70355 offset:240,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"MSK/MSD"}}\r
70356 ,{\r
70357 serverId:"Asia/Tehran",clientId:"Asia/Tehran",standard:{\r
70358 offset:210,mon:9,week:4,wkday:3,hour:0,min:0,sec:0,trans:[2010,9,28],tzname:"IRST"}\r
70359 ,daylight:{\r
70360 offset:270,mon:3,week:4,wkday:1,hour:0,min:0,sec:0,trans:[2010,3,28],tzname:"IRDT"}}\r
70361 ,{\r
70362 serverId:"Asia/Baku",clientId:"Asia/Baku",standard:{\r
70363 offset:240,mon:10,week:-1,wkday:1,hour:5,min:0,sec:0,trans:[2010,10,31],tzname:"AZT"}\r
70364 ,daylight:{\r
70365 offset:300,mon:3,week:-1,wkday:1,hour:4,min:0,sec:0,trans:[2010,3,28],tzname:"AZST"}}\r
70366 ,{\r
70367 serverId:"Asia/Muscat",clientId:"Asia/Muscat",standard:{\r
70368 offset:240,tzname:"GST"}}\r
70369 ,{\r
70370 serverId:"Asia/Tbilisi",clientId:"Asia/Tbilisi",standard:{\r
70371 offset:240,tzname:"GET"}}\r
70372 ,{\r
70373 serverId:"Asia/Yerevan",clientId:"Asia/Yerevan",standard:{\r
70374 offset:240,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"AMT"}\r
70375 ,daylight:{\r
70376 offset:300,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"AMST"}}\r
70377 ,{\r
70378 serverId:"Asia/Kabul",clientId:"Asia/Kabul",standard:{\r
70379 offset:270,tzname:"AFT"}}\r
70380 ,{\r
70381 serverId:"Asia/Karachi",clientId:"Asia/Karachi",standard:{\r
70382 offset:300,mon:11,week:1,wkday:1,hour:0,min:0,sec:0,trans:[2010,11,7],tzname:"PKT"}\r
70383 ,daylight:{\r
70384 offset:360,mon:4,week:3,wkday:4,hour:0,min:0,sec:0,trans:[2010,4,21],tzname:"PKST"}}\r
70385 ,{\r
70386 serverId:"Asia/Tashkent",clientId:"Asia/Tashkent",standard:{\r
70387 offset:300,tzname:"UZT"}}\r
70388 ,{\r
70389 serverId:"Asia/Yekaterinburg",clientId:"Asia/Yekaterinburg",standard:{\r
70390 offset:300,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"YEKT"}\r
70391 ,daylight:{\r
70392 offset:360,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"YEKST"}}\r
70393 ,{\r
70394 serverId:"Asia/Colombo",clientId:"Asia/Colombo",standard:{\r
70395 offset:330,tzname:"IST"}}\r
70396 ,{\r
70397 serverId:"Asia/Kolkata",clientId:"Asia/Kolkata",standard:{\r
70398 offset:330,tzname:"IST"}}\r
70399 ,{\r
70400 serverId:"Asia/Dhaka",clientId:"Asia/Dhaka",standard:{\r
70401 offset:360,tzname:"BDT"}}\r
70402 ,{\r
70403 serverId:"Asia/Novosibirsk",clientId:"Asia/Novosibirsk",standard:{\r
70404 offset:360,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"NOVT"}\r
70405 ,daylight:{\r
70406 offset:420,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"NOVST"}}\r
70407 ,{\r
70408 serverId:"Asia/Rangoon",clientId:"Asia/Rangoon",standard:{\r
70409 offset:390,tzname:"MMT"}}\r
70410 ,{\r
70411 serverId:"Asia/Bangkok",clientId:"Asia/Bangkok",standard:{\r
70412 offset:420,tzname:"ICT"}}\r
70413 ,{\r
70414 serverId:"Asia/Krasnoyarsk",clientId:"Asia/Krasnoyarsk",standard:{\r
70415 offset:420,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"KRAT"}\r
70416 ,daylight:{\r
70417 offset:480,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"KRAST"}}\r
70418 ,{\r
70419 serverId:"Asia/Hong_Kong",clientId:"Asia/Hong_Kong",standard:{\r
70420 offset:480}}\r
70421 ,{\r
70422 serverId:"Asia/Irkutsk",clientId:"Asia/Irkutsk",standard:{\r
70423 offset:480,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"IRKT"}\r
70424 ,daylight:{\r
70425 offset:540,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"IRKST"}}\r
70426 ,{\r
70427 serverId:"Asia/Kuala_Lumpur",clientId:"Asia/Kuala_Lumpur",standard:{\r
70428 offset:480,tzname:"MYT"}}\r
70429 ,{\r
70430 serverId:"Asia/Taipei",clientId:"Asia/Taipei",standard:{\r
70431 offset:480}}\r
70432 ,{\r
70433 serverId:"Australia/Perth",clientId:"Australia/Perth",standard:{\r
70434 offset:480,tzname:"WST"}}\r
70435 ,{\r
70436 serverId:"Asia/Seoul",clientId:"Asia/Seoul",standard:{\r
70437 offset:540}}\r
70438 ,{\r
70439 serverId:"Asia/Tokyo",clientId:"Asia/Tokyo",standard:{\r
70440 offset:540}}\r
70441 ,{\r
70442 serverId:"Asia/Yakutsk",clientId:"Asia/Yakutsk",standard:{\r
70443 offset:540,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"YAKT"}\r
70444 ,daylight:{\r
70445 offset:600,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"YAKST"}}\r
70446 ,{\r
70447 serverId:"Australia/Adelaide",clientId:"Australia/Adelaide",standard:{\r
70448 offset:570,mon:4,week:1,wkday:1,hour:3,min:0,sec:0,trans:[2010,4,4],tzname:"CST"}\r
70449 ,daylight:{\r
70450 offset:630,mon:10,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,10,3],tzname:"CST"}}\r
70451 ,{\r
70452 serverId:"Australia/Darwin",clientId:"Australia/Darwin",standard:{\r
70453 offset:570,tzname:"CST"}}\r
70454 ,{\r
70455 serverId:"Asia/Vladivostok",clientId:"Asia/Vladivostok",standard:{\r
70456 offset:600,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"VLAT"}\r
70457 ,daylight:{\r
70458 offset:660,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"VLAST"}}\r
70459 ,{\r
70460 serverId:"Australia/Brisbane",clientId:"Australia/Brisbane",standard:{\r
70461 offset:600,tzname:"EST"}}\r
70462 ,{\r
70463 serverId:"Australia/Hobart",clientId:"Australia/Hobart",standard:{\r
70464 offset:600,mon:4,week:1,wkday:1,hour:3,min:0,sec:0,trans:[2010,4,4],tzname:"EST"}\r
70465 ,daylight:{\r
70466 offset:660,mon:10,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,10,3],tzname:"EST"}}\r
70467 ,{\r
70468 serverId:"Australia/Sydney",clientId:"Australia/Sydney",standard:{\r
70469 offset:600,mon:4,week:1,wkday:1,hour:3,min:0,sec:0,trans:[2010,4,4],tzname:"EST"}\r
70470 ,daylight:{\r
70471 offset:660,mon:10,week:1,wkday:1,hour:2,min:0,sec:0,trans:[2010,10,3],tzname:"EST"}}\r
70472 ,{\r
70473 serverId:"Pacific/Guam",clientId:"Pacific/Guam",standard:{\r
70474 offset:600,tzname:"ChST"}}\r
70475 ,{\r
70476 serverId:"Asia/Magadan",clientId:"Asia/Magadan",standard:{\r
70477 offset:660,mon:10,week:-1,wkday:1,hour:3,min:0,sec:0,trans:[2010,10,31],tzname:"MAGT"}\r
70478 ,daylight:{\r
70479 offset:720,mon:3,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,3,28],tzname:"MAGST"}}\r
70480 ,{\r
70481 serverId:"Pacific/Auckland",clientId:"Pacific/Auckland",standard:{\r
70482 offset:720,mon:4,week:1,wkday:1,hour:3,min:0,sec:0,trans:[2010,4,4],tzname:"NZST"}\r
70483 ,daylight:{\r
70484 offset:780,mon:9,week:-1,wkday:1,hour:2,min:0,sec:0,trans:[2010,9,26],tzname:"NZDT"}}\r
70485 ,{\r
70486 serverId:"Pacific/Fiji",clientId:"Pacific/Fiji",standard:{\r
70487 offset:720}}\r
70488 ,{\r
70489 serverId:"Pacific/Tongatapu",clientId:"Pacific/Tongatapu",standard:{\r
70490 offset:780}}\r
70491 ]\r
70492 }\r
70493 if(AjxPackage.define("ajax.util.AjxTimezone")){\r
70494 AjxTimezone=function(){};\r
70495 AjxTimezone.getTransition=function(o,a){\r
70496 var t=[a||new Date().getFullYear(),o.mon,1];\r
70497 if(o.mday){\r
70498 t[2]=o.mday\r
70499 }else{\r
70500 if(o.wkday){\r
70501 var e=new Date(a,o.mon-1,1,o.hour,o.min,o.sec);\r
70502 if(o.week==-1){\r
70503 var s=new Date(new Date(e.getTime()).setMonth(o.mon,0));\r
70504 var n=s.getDate();\r
70505 var h=s.getDay()+1;\r
70506 var r=h>=o.wkday?h-o.wkday:7-o.wkday-h;\r
70507 t[2]=n-r\r
70508 }else{\r
70509 var h=e.getDay()+1;\r
70510 var r=o.wkday==h?1:0;\r
70511 t[2]=o.wkday+7*(o.week-r)-h+1\r
70512 }}}\r
70513 return t\r
70514 };\r
70515 AjxTimezone.createMDayTransition=function(e,a){\r
70516 if(e instanceof Date){\r
70517 a=a!=null?a:e.getTimezoneOffset();\r
70518 e=[e.getFullYear(),e.getMonth()+1,e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds()]\r
70519 }\r
70520 var t={\r
70521 offset:a,trans:e};\r
70522 return AjxTimezone.addMDayTransition(t)\r
70523 };\r
70524 AjxTimezone.addMDayTransition=function(t){\r
70525 var e=t.trans;\r
70526 t.mon=e[1];\r
70527 t.mday=e[2];\r
70528 t.hour=e[3];\r
70529 t.min=e[4];\r
70530 t.sec=e[5];\r
70531 return t\r
70532 };\r
70533 AjxTimezone.createWkDayTransition=function(e,a){\r
70534 if(e instanceof Date){\r
70535 a=a!=null?a:e.getTimezoneOffset();\r
70536 e=[e.getFullYear(),e.getMonth()+1,e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds()]\r
70537 }\r
70538 var t={\r
70539 offset:a,trans:e};\r
70540 return AjxTimezone.addWkDayTransition(t)\r
70541 };\r
70542 AjxTimezone.addWkDayTransition=function(n){\r
70543 var a=n.trans;\r
70544 var o=a[1];\r
70545 var h=a[2];\r
70546 var t=Math.floor((h-1)/7);\r
70547 var e=new Date(a[0],a[1]-1,a[2],12,0,0);\r
70548 var r=new Date(new Date(e.getTime()).setMonth(o-1,0)).getDate();\r
70549 var s=r-h<7;\r
70550 n.mon=o;\r
70551 n.week=s?-1:t+1;\r
70552 n.wkday=e.getDay()+1;\r
70553 n.hour=a[3];\r
70554 n.min=a[4];\r
70555 n.sec=a[5];\r
70556 return n\r
70557 };\r
70558 AjxTimezone.createTransitionDate=function(o){\r
70559 var e=new Date(AjxTimezoneData.TRANSITION_YEAR,o.mon-1,1,12,0,0);\r
70560 if(o.mday){\r
70561 e.setDate(o.mday)\r
70562 }else{\r
70563 if(o.week==-1){\r
70564 e.setMonth(e.getMonth()+1,0);\r
70565 for(var a=0;\r
70566 a<7;\r
70567 a++){\r
70568 if(e.getDay()+1==o.wkday){\r
70569 break\r
70570 }\r
70571 e.setDate(e.getDate()-1)\r
70572 }}else{\r
70573 for(var a=0;\r
70574 a<7;\r
70575 a++){\r
70576 if(e.getDay()+1==o.wkday){\r
70577 break\r
70578 }\r
70579 e.setDate(e.getDate()+1)\r
70580 }\r
70581 e.setDate(e.getDate()+7*(o.week-1))\r
70582 }}\r
70583 var t=[e.getFullYear(),e.getMonth()+1,e.getDate()];\r
70584 return t\r
70585 };\r
70586 AjxTimezone.getZonePreferences=function(){\r
70587 if(AjxTimezone._PREF_ZONE_DISPLAY){\r
70588 var a=AjxTimezone._PREF_ZONE_DISPLAY.length;\r
70589 var t=AjxTimezone.STANDARD_RULES.length+AjxTimezone.DAYLIGHT_RULES.length;\r
70590 if(a!=t){\r
70591 AjxTimezone._PREF_ZONE_DISPLAY=null\r
70592 }}\r
70593 if(!AjxTimezone._PREF_ZONE_DISPLAY){\r
70594 AjxTimezone._PREF_ZONE_DISPLAY=[];\r
70595 AjxTimezone.getAbbreviatedZoneChoices();\r
70596 for(var e=0;\r
70597 e<AjxTimezone._ABBR_ZONE_OPTIONS.length;\r
70598 e++){\r
70599 AjxTimezone._PREF_ZONE_DISPLAY.push(AjxTimezone._ABBR_ZONE_OPTIONS[e].displayValue)\r
70600 }}\r
70601 return AjxTimezone._PREF_ZONE_DISPLAY\r
70602 };\r
70603 AjxTimezone.getZonePreferencesOptions=function(){\r
70604 if(AjxTimezone._PREF_ZONE_OPTIONS){\r
70605 var a=AjxTimezone._PREF_ZONE_OPTIONS.length;\r
70606 var t=AjxTimezone.STANDARD_RULES.length+AjxTimezone.DAYLIGHT_RULES.length;\r
70607 if(a!=t){\r
70608 AjxTimezone._PREF_ZONE_OPTIONS=null\r
70609 }}\r
70610 if(!AjxTimezone._PREF_ZONE_OPTIONS){\r
70611 AjxTimezone._PREF_ZONE_OPTIONS=[];\r
70612 AjxTimezone.getAbbreviatedZoneChoices();\r
70613 for(var e=0;\r
70614 e<AjxTimezone._ABBR_ZONE_OPTIONS.length;\r
70615 e++){\r
70616 AjxTimezone._PREF_ZONE_OPTIONS.push(AjxTimezone._ABBR_ZONE_OPTIONS[e].serverid)\r
70617 }}\r
70618 return AjxTimezone._PREF_ZONE_OPTIONS\r
70619 };\r
70620 AjxTimezone.getServerId=function(e){\r
70621 return AjxTimezone._CLIENT2SERVER[e]||e\r
70622 };\r
70623 AjxTimezone.getClientId=function(e){\r
70624 return AjxTimezone._SERVER2CLIENT[e]||e\r
70625 };\r
70626 AjxTimezone.getShortName=function(e){\r
70627 var t=AjxTimezone.getRule(e);\r
70628 if(!t.shortName){\r
70629 t.shortName=["GMT",AjxTimezone._SHORT_NAMES[e]].join("")\r
70630 }\r
70631 return t.shortName\r
70632 };\r
70633 AjxTimezone.getMediumName=function(e){\r
70634 var t=AjxTimezone.getRule(e);\r
70635 if(!t.mediumName){\r
70636 t.mediumName=AjxMsg[e]||["(",AjxTimezone.getShortName(e),") ",e].join("")\r
70637 }\r
70638 return t.mediumName\r
70639 };\r
70640 AjxTimezone.getLongName=AjxTimezone.getMediumName;\r
70641 AjxTimezone.addRule=function(a){\r
70642 var t=a.serverId;\r
70643 var e=a.clientId;\r
70644 AjxTimezone._CLIENT2SERVER[e]=t;\r
70645 AjxTimezone._SERVER2CLIENT[t]=e;\r
70646 AjxTimezone._SHORT_NAMES[e]=AjxTimezone._generateShortName(a.standard.offset);\r
70647 AjxTimezone._CLIENT2RULE[e]=a;\r
70648 var o=a.daylight?AjxTimezone.DAYLIGHT_RULES:AjxTimezone.STANDARD_RULES;\r
70649 o.push(a)\r
70650 };\r
70651 AjxTimezone.getRule=function(e,o){\r
70652 var d=AjxTimezone._CLIENT2RULE[e];\r
70653 if(!d){\r
70654 e=AjxTimezone._SERVER2CLIENT[e];\r
70655 d=AjxTimezone._CLIENT2RULE[e]\r
70656 }\r
70657 if(!d&&o){\r
70658 var c=["standard","daylight"];\r
70659 var u=o.daylight?AjxTimezone.DAYLIGHT_RULES:AjxTimezone.STANDARD_RULES;\r
70660 for(var s=0;\r
70661 s<u.length;\r
70662 s++){\r
70663 d=u[s];\r
70664 var m=true;\r
70665 for(var n=0;\r
70666 n<c.length;\r
70667 n++){\r
70668 var t=c[n];\r
70669 var r=d[t];\r
70670 if(!r){\r
70671 continue\r
70672 }\r
70673 var h=false;\r
70674 for(var a in o[t]){\r
70675 if(o[t][a]!=r[a]){\r
70676 m=false;\r
70677 h=true;\r
70678 break\r
70679 }}\r
70680 if(h){\r
70681 break\r
70682 }}\r
70683 if(m){\r
70684 return d\r
70685 }}\r
70686 return null\r
70687 }\r
70688 return d\r
70689 };\r
70690 AjxTimezone.getOffset=function(e,n){\r
70691 var f=AjxTimezone.getRule(e||AjxTimezone.DEFAULT);\r
70692 if(f&&f.daylight){\r
70693 var u=n.getFullYear();\r
70694 var r=f.standard,t=f.daylight;\r
70695 var d=AjxTimezone.getTransition(r,u);\r
70696 var g=AjxTimezone.getTransition(t,u);\r
70697 var c=n.getMonth()+1,m=n.getDate();\r
70698 var s=d[1],p=d[2];\r
70699 var h=g[1],o=g[2];\r
70700 var a=false;\r
70701 if(h<s){\r
70702 a=c>h&&c<s;\r
70703 a=a||(c==h&&m>=o);\r
70704 a=a||(c==s&&m<p)\r
70705 }else{\r
70706 a=c<h||c>s;\r
70707 a=a||(c==h&&m<o);\r
70708 a=a||(c==s&&m>=p)\r
70709 }\r
70710 return a?t.offset:r.offset\r
70711 }\r
70712 return f?f.standard.offset:-(new Date().getTimezoneOffset())\r
70713 };\r
70714 AjxTimezone.guessMachineTimezone=function(){\r
70715 return AjxTimezone._guessMachineTimezone().clientId\r
70716 };\r
70717 AjxTimezone.getAbbreviatedZoneChoices=function(){\r
70718 if(AjxTimezone._ABBR_ZONE_OPTIONS){\r
70719 var n=AjxTimezone._ABBR_ZONE_OPTIONS.length;\r
70720 var o=AjxTimezone.STANDARD_RULES.length+AjxTimezone.DAYLIGHT_RULES.length;\r
70721 if(n!=o){\r
70722 AjxTimezone._ABBR_ZONE_OPTIONS=null\r
70723 }}\r
70724 if(!AjxTimezone._ABBR_ZONE_OPTIONS){\r
70725 AjxTimezone._ABBR_ZONE_OPTIONS=[];\r
70726 for(var e in AjxTimezone._CLIENT2SERVER){\r
70727 var s=AjxTimezone._CLIENT2RULE[e];\r
70728 var t=s.serverId;\r
70729 var a={\r
70730 displayValue:AjxTimezone.getMediumName(e),value:t,standard:s.standard,serverid:t,clientId:e};\r
70731 AjxTimezone._ABBR_ZONE_OPTIONS.push(a)\r
70732 }\r
70733 AjxTimezone._ABBR_ZONE_OPTIONS.sort(AjxTimezone._BY_OFFSET)\r
70734 }\r
70735 return AjxTimezone._ABBR_ZONE_OPTIONS\r
70736 };\r
70737 AjxTimezone.getMatchingTimezoneChoices=function(){\r
70738 if(AjxTimezone._MATCHING_ZONE_OPTIONS){\r
70739 var s=AjxTimezone._MATCHING_ZONE_OPTIONS.length;\r
70740 var n=AjxTimezone.STANDARD_RULES.length+AjxTimezone.DAYLIGHT_RULES.length;\r
70741 if(s!=n){\r
70742 AjxTimezone._MATCHING_ZONE_OPTIONS=null\r
70743 }}\r
70744 if(!AjxTimezone._MATCHING_ZONE_OPTIONS){\r
70745 AjxTimezone._MATCHING_ZONE_OPTIONS=[];\r
70746 for(var a in AjxTimezone.MATCHING_RULES){\r
70747 var r=AjxTimezone.MATCHING_RULES[a];\r
70748 var e=r.clientId;\r
70749 var t=r.serverId;\r
70750 if(e==AjxTimezone.AUTO_DETECTED){\r
70751 continue\r
70752 }\r
70753 var o={\r
70754 displayValue:AjxTimezone.getMediumName(e),value:t,standard:r.standard,serverid:t,clientId:e};\r
70755 AjxTimezone._MATCHING_ZONE_OPTIONS.push(o)\r
70756 }\r
70757 AjxTimezone._MATCHING_ZONE_OPTIONS.sort(AjxTimezone._BY_OFFSET)\r
70758 }\r
70759 return AjxTimezone._MATCHING_ZONE_OPTIONS\r
70760 };\r
70761 AjxTimezone._BY_OFFSET=function(a,t){\r
70762 var n=a.standard.offset-t.standard.offset;\r
70763 if(n==0){\r
70764 var e=a.serverId;\r
70765 var o=t.serverId;\r
70766 if(e<o){\r
70767 n=-1\r
70768 }else{\r
70769 if(e>o){\r
70770 n=1\r
70771 }}}\r
70772 return n\r
70773 };\r
70774 AjxTimezone.GMT="Europe/London";\r
70775 AjxTimezone.GMT_NO_DST="Africa/Casablanca";\r
70776 AjxTimezone.AUTO_DETECTED="Auto-Detected";\r
70777 AjxTimezone.DEFAULT;\r
70778 AjxTimezone.DEFAULT_RULE;\r
70779 AjxTimezone._CLIENT2SERVER={};\r
70780 AjxTimezone._SERVER2CLIENT={};\r
70781 AjxTimezone._SHORT_NAMES={};\r
70782 AjxTimezone._CLIENT2RULE={};\r
70783 AjxTimezone.STANDARD_RULES=[];\r
70784 AjxTimezone.DAYLIGHT_RULES=[];\r
70785 (function(){\r
70786 for(var e=0;\r
70787 e<AjxTimezoneData.TIMEZONE_RULES.length;\r
70788 e++){\r
70789 var t=AjxTimezoneData.TIMEZONE_RULES[e];\r
70790 var a=t.daylight?AjxTimezone.DAYLIGHT_RULES:AjxTimezone.STANDARD_RULES;\r
70791 a.push(t)\r
70792 }}\r
70793 )();\r
70794 AjxTimezone._guessMachineTimezone=function(p){\r
70795 var m=new Date(AjxTimezoneData.TRANSITION_YEAR,11,1,0,0,0);\r
70796 var k=new Date(AjxTimezoneData.TRANSITION_YEAR,5,1,0,0,0);\r
70797 var t=-m.getTimezoneOffset();\r
70798 var y=-k.getTimezoneOffset();\r
70799 AjxTimezone.MATCHING_RULES=[];\r
70800 AjxTimezone.TIMEZONE_CONFLICT=false;\r
70801 var d=[];\r
70802 var s={};\r
70803 var r=[];\r
70804 var g=false;\r
70805 if(y==t){\r
70806 var f=AjxTimezone.STANDARD_RULES;\r
70807 for(var w=0;\r
70808 w<f.length;\r
70809 ++w){\r
70810 var h=f[w];\r
70811 if(h.standard.offset==y){\r
70812 if(!s[h.serverId]){\r
70813 d.push(h);\r
70814 s[h.serverId]=true\r
70815 }\r
70816 AjxTimezone.MATCHING_RULES.push(h)\r
70817 }}}else{\r
70818 var f=AjxTimezone.DAYLIGHT_RULES;\r
70819 var j=Math.max(t,y);\r
70820 var x=Math.min(t,y);\r
70821 var o=new Date();\r
70822 var v=-o.getTimezoneOffset();\r
70823 for(var w=0;\r
70824 w<f.length;\r
70825 ++w){\r
70826 var h=f[w];\r
70827 if(h.standard.offset==x&&h.daylight.offset==j){\r
70828 var c=h.standard.trans;\r
70829 var u=h.daylight.trans;\r
70830 var n=new Date(c[0],c[1]-1,c[2]-1);\r
70831 var a=new Date(c[0],c[1]-1,c[2]+2);\r
70832 var e=new Date(u[0],u[1]-1,u[2]-1);\r
70833 var q=new Date(u[0],u[1]-1,u[2]+2);\r
70834 if(-a.getTimezoneOffset()==x&&-q.getTimezoneOffset()==j&&-n.getTimezoneOffset()==j&&-e.getTimezoneOffset()==x){\r
70835 if(!s[h.serverId]){\r
70836 d.push(h);\r
70837 s[h.serverId]=true\r
70838 }\r
70839 g=true\r
70840 }}\r
70841 if(h.standard.offset==v||h.daylight.offset==v){\r
70842 AjxTimezone.MATCHING_RULES.push(h)\r
70843 }}}\r
70844 if((d.length>0)&&p!=null){\r
70845 var f=d;\r
70846 for(var w in f){\r
70847 if(f[w].serverId==p){\r
70848 return f[w]\r
70849 }}}\r
70850 if(d.length>0){\r
70851 AjxTimezone.TIMEZONE_CONFLICT=(d.length>1);\r
70852 return d[0]\r
70853 }\r
70854 if((AjxTimezone.MATCHING_RULES.length>0)&&p!=null){\r
70855 var f=AjxTimezone.MATCHING_RULES;\r
70856 for(var w in f){\r
70857 if(f[w].serverId==p){\r
70858 return f[w]\r
70859 }}}\r
70860 return AjxTimezone._generateDefaultRule()\r
70861 };\r
70862 AjxTimezone._generateDefaultRule=function(){\r
70863 var d=0;\r
70864 var a=1;\r
70865 var o=2;\r
70866 var r=3;\r
70867 var n=4;\r
70868 function u(f,m,k,x){\r
70869 var g=m.getTime();\r
70870 var v=new Date();\r
70871 v.setTime(f.getTime());\r
70872 var w=new Date();\r
70873 w.setTime(v.getTime());\r
70874 var q=f.getTimezoneOffset()*-1;\r
70875 if(!x){\r
70876 x={\r
70877 clientId:AjxTimezone.AUTO_DETECTED,autoDetected:true}\r
70878 }\r
70879 while(v.getTime()<=g){\r
70880 if(k==d){\r
70881 v.setUTCMonth(v.getUTCMonth()+1)\r
70882 }else{\r
70883 if(k==a){\r
70884 v.setUTCDate(v.getUTCDate()+1)\r
70885 }else{\r
70886 if(k==o){\r
70887 v.setUTCHours(v.getUTCHours()+1)\r
70888 }else{\r
70889 if(k==r){\r
70890 v.setUTCMinutes(v.getUTCMinutes()+1)\r
70891 }else{\r
70892 if(k==n){\r
70893 v.setUTCSeconds(v.getUTCSeconds()+1)\r
70894 }else{\r
70895 return x\r
70896 }}}}}\r
70897 var p=v.getTimezoneOffset()*-1;\r
70898 if(p!=q){\r
70899 if(k<n){\r
70900 x=u(w,v,k+1,x)\r
70901 }else{\r
70902 var j=new Date();\r
70903 j.setUTCFullYear(w.getFullYear(),w.getMonth(),w.getDate());\r
70904 j.setUTCHours(w.getHours(),w.getMinutes(),w.getSeconds()+1);\r
70905 var y=x[q<p?"daylight":"standard"]={\r
70906 offset:p,trans:[j.getUTCFullYear(),j.getUTCMonth()+1,j.getUTCDate(),j.getUTCHours(),j.getUTCMinutes(),j.getUTCSeconds()]};\r
70907 AjxTimezone.addWkDayTransition(y);\r
70908 return x\r
70909 }}\r
70910 w.setTime(v.getTime());\r
70911 q=p\r
70912 }\r
70913 return x\r
70914 }\r
70915 var t=new Date();\r
70916 var e=new Date();\r
70917 var h=t.getFullYear();\r
70918 t.setUTCFullYear(h,t.getMonth(),t.getDate()-1);\r
70919 t.setUTCHours(0,0,0,0);\r
70920 e.setTime(t.getTime());\r
70921 e.setUTCFullYear(h+1,t.getMonth(),t.getDate()+1);\r
70922 var c=u(t,e,d);\r
70923 if(!c.daylight||!c.standard){\r
70924 c.standard={\r
70925 offset:t.getTimezoneOffset()*-1};\r
70926 delete c.daylight\r
70927 }\r
70928 c.serverId=["(GMT",AjxTimezone._generateShortName(c.standard.offset,true),") ",AjxTimezone.AUTO_DETECTED].join("");\r
70929 if(c.daylight&&c.daylight.offset<c.standard.offset){\r
70930 var s=c.daylight;\r
70931 c.daylight=c.standard;\r
70932 c.standard=s\r
70933 }\r
70934 return c\r
70935 };\r
70936 AjxTimezone._generateShortName=function(s,n){\r
70937 if(s==0){\r
70938 return""\r
70939 }\r
70940 var t=s<0?"-":"+";\r
70941 var a=Math.abs(s);\r
70942 var e=Math.floor(a/60);\r
70943 var o=a%60;\r
70944 e=e<10?"0"+e:e;\r
70945 o=o<10?"0"+o:o;\r
70946 return[t,e,n?".":"",o].join("")\r
70947 };\r
70948 AjxTimezone.DEFAULT_RULE=AjxTimezone._guessMachineTimezone();\r
70949 (function(){\r
70950 AjxTimezoneData.TIMEZONE_RULES.sort(AjxTimezone._BY_OFFSET);\r
70951 for(var e=0;\r
70952 e<AjxTimezoneData.TIMEZONE_RULES.length;\r
70953 e++){\r
70954 var t=AjxTimezoneData.TIMEZONE_RULES[e];\r
70955 AjxTimezone.addRule(t)\r
70956 }}\r
70957 )();\r
70958 AjxTimezone.DEFAULT=AjxTimezone.getClientId(AjxTimezone.DEFAULT_RULE.serverId)\r
70959 }\r
70960 if(AjxPackage.define("ajax.util.AjxEmailAddress")){\r
70961 AjxEmailAddress=function(e,o,t,a,n){\r
70962 this.address=e;\r
70963 this.name=this._setName(t);\r
70964 this.dispName=a;\r
70965 this.type=o||AjxEmailAddress.TO;\r
70966 this.isGroup=n;\r
70967 this.isAjxEmailAddress=true\r
70968 };\r
70969 AjxEmailAddress.FROM="FROM";\r
70970 AjxEmailAddress.TO="TO";\r
70971 AjxEmailAddress.CC="CC";\r
70972 AjxEmailAddress.BCC="BCC";\r
70973 AjxEmailAddress.REPLY_TO="REPLY_TO";\r
70974 AjxEmailAddress.SENDER="SENDER";\r
70975 AjxEmailAddress.READ_RECEIPT="READ_RECEIPT";\r
70976 AjxEmailAddress.TYPE_STRING={};\r
70977 AjxEmailAddress.TYPE_STRING[AjxEmailAddress.FROM]="from";\r
70978 AjxEmailAddress.TYPE_STRING[AjxEmailAddress.TO]="to";\r
70979 AjxEmailAddress.TYPE_STRING[AjxEmailAddress.CC]="cc";\r
70980 AjxEmailAddress.TYPE_STRING[AjxEmailAddress.BCC]="bcc";\r
70981 AjxEmailAddress.TYPE_STRING[AjxEmailAddress.REPLY_TO]="replyTo";\r
70982 AjxEmailAddress.TYPE_STRING[AjxEmailAddress.SENDER]="sender";\r
70983 AjxEmailAddress.TYPE_STRING[AjxEmailAddress.READ_RECEIPT]="readReceipt";\r
70984 AjxEmailAddress.fromSoapType={};\r
70985 AjxEmailAddress.fromSoapType.f=AjxEmailAddress.FROM;\r
70986 AjxEmailAddress.fromSoapType.t=AjxEmailAddress.TO;\r
70987 AjxEmailAddress.fromSoapType.c=AjxEmailAddress.CC;\r
70988 AjxEmailAddress.fromSoapType.b=AjxEmailAddress.BCC;\r
70989 AjxEmailAddress.fromSoapType.r=AjxEmailAddress.REPLY_TO;\r
70990 AjxEmailAddress.fromSoapType.s=AjxEmailAddress.SENDER;\r
70991 AjxEmailAddress.fromSoapType.n=AjxEmailAddress.READ_RECEIPT;\r
70992 AjxEmailAddress.toSoapType={};\r
70993 AjxEmailAddress.toSoapType[AjxEmailAddress.FROM]="f";\r
70994 AjxEmailAddress.toSoapType[AjxEmailAddress.TO]="t";\r
70995 AjxEmailAddress.toSoapType[AjxEmailAddress.CC]="c";\r
70996 AjxEmailAddress.toSoapType[AjxEmailAddress.BCC]="b";\r
70997 AjxEmailAddress.toSoapType[AjxEmailAddress.REPLY_TO]="r";\r
70998 AjxEmailAddress.toSoapType[AjxEmailAddress.SENDER]="s";\r
70999 AjxEmailAddress.toSoapType[AjxEmailAddress.READ_RECEIPT]="n";\r
71000 AjxEmailAddress.SEPARATOR="; ";\r
71001 AjxEmailAddress.DELIMS=[";",",","\n"," "];\r
71002 AjxEmailAddress.IS_DELIM={};\r
71003 for(var i=0;\r
71004 i<AjxEmailAddress.DELIMS.length;\r
71005 i++){\r
71006 AjxEmailAddress.IS_DELIM[AjxEmailAddress.DELIMS[i]]=true\r
71007 }\r
71008 AjxEmailAddress.addrAnglePat=/(\s*<(((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*"(([^\\"])|(\\([^\x0A\x0D])))+"\s*))\@((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*\[(\s*(([^\[\]\\])|(\\([^\x0A\x0D])))+)*\s*\]\s*)))>\s*)/;\r
71009 AjxEmailAddress.addrAngleQuotePat=/(\s*<'(((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*"(([^\\"])|(\\([^\x0A\x0D])))+"\s*))\@((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*\[(\s*(([^\[\]\\])|(\\([^\x0A\x0D])))+)*\s*\]\s*)))'>\s*)/;\r
71010 AjxEmailAddress.addrPat=/(((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*"(([^\\"])|(\\([^\x0A\x0D])))+"\s*))\@((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*\[(\s*(([^\[\]\\])|(\\([^\x0A\x0D])))+)*\s*\]\s*)))/;\r
71011 AjxEmailAddress.addrPat1=/(^|"|\s)(((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*"(([^\\"])|(\\([^\x0A\x0D])))+"\s*))\@((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*\[(\s*(([^\[\]\\])|(\\([^\x0A\x0D])))+)*\s*\]\s*)))/;\r
71012 AjxEmailAddress.accountPat=/((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*"(([^\\"])|(\\([^\x0A\x0D])))+"\s*))/;\r
71013 AjxEmailAddress.commentPat=/\((.*)\)/g;\r
71014 AjxEmailAddress.phrasePat=/(((\s*[^\x00-\x1F\x7F()<>\[\]:;@\"\s]+\s*)|(\s*"(([^\\"])|(\\([^\x0A\x0D])))+"\s*))+)/;\r
71015 AjxEmailAddress.boundAddrPat=/(\s*<?(((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*"(([^\\"])|(\\([^\x0A\x0D])))+"\s*))\@((\s*([^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+(\.[^\x00-\x1F\x7F()<>\[\]:;@\,."\s]+)*)\s*)|(\s*\[(\s*(([^\[\]\\])|(\\([^\x0A\x0D])))+)*\s*\]\s*)))>?\s*)$/;\r
71016 AjxEmailAddress.parse=function(o){\r
71017 var n,e;\r
71018 var o=AjxStringUtil.trim(o);\r
71019 var t=AjxEmailAddress._prelimCheck(o);\r
71020 if(!(t&&o.match(AjxEmailAddress.addrPat))){\r
71021 return null\r
71022 }\r
71023 var a=o.match(AjxEmailAddress.addrAngleQuotePat)||o.match(AjxEmailAddress.addrAnglePat);\r
71024 if(a&&a.length){\r
71025 n=a[2];\r
71026 o=o.replace(AjxEmailAddress.addrAnglePat,"")\r
71027 }else{\r
71028 a=o.match(AjxEmailAddress.addrPat1);\r
71029 if(a&&a.length){\r
71030 n=o.match(AjxEmailAddress.addrPat);\r
71031 n=(n&&n.length&&n[0]!="")?AjxStringUtil.trim(n[0]):a[0];\r
71032 o=o.replace(AjxEmailAddress.addrPat,"")\r
71033 }}\r
71034 a=o.match(AjxEmailAddress.phrasePat);\r
71035 if(a){\r
71036 e=AjxStringUtil.trim(AjxStringUtil.trim(a[0]),false,'"')\r
71037 }\r
71038 return new AjxEmailAddress(n,null,e)\r
71039 };\r
71040 AjxEmailAddress.parseEmailString=function(a,u,m){\r
71041 var n=new AjxVector();\r
71042 var t=new AjxVector();\r
71043 var f=new AjxVector();\r
71044 var h=AjxEmailAddress.split(a);\r
71045 for(var r=0;\r
71046 r<h.length;\r
71047 r++){\r
71048 var c=AjxStringUtil.trim(h[r]);\r
71049 if(c){\r
71050 var d=AjxEmailAddress.parse(c);\r
71051 if(!d&&!m){\r
71052 var p=c;\r
71053 var s=p.match(AjxEmailAddress.addrAnglePat);\r
71054 if(s&&s.length){\r
71055 var e=p.replace(AjxEmailAddress.addrAnglePat,"");\r
71056 var o=['"',e,'" ',s[0]].join("");\r
71057 d=AjxEmailAddress.parse(o);\r
71058 if(d){\r
71059 d.name=e\r
71060 }}}\r
71061 if(d){\r
71062 d.type=u;\r
71063 \r
71064 n.add(d);\r
71065 f.add(d)\r
71066 }else{\r
71067 t.add(c);\r
71068 f.add(new AjxEmailAddress(c))\r
71069 }}}\r
71070 return{\r
71071 good:n,bad:t,all:f}\r
71072 };\r
71073 AjxEmailAddress.isValid=function(t){\r
71074 t=AjxStringUtil.trim(t);\r
71075 var e=AjxEmailAddress._prelimCheck(t);\r
71076 return(e&&(t.match(AjxEmailAddress.addrPat)!=null))\r
71077 };\r
71078 AjxEmailAddress._prelimCheck=function(a){\r
71079 var e=a.indexOf("@");\r
71080 var t=a.lastIndexOf(".");\r
71081 return((e!=-1)&&(t!=-1)&&(t>e))\r
71082 };\r
71083 AjxEmailAddress.split=function(g){\r
71084 g=AjxStringUtil.trim(g);\r
71085 var p=[];\r
71086 var y=0,m=0;\r
71087 var w="",s="";\r
71088 var r=false;\r
71089 while(y<g.length){\r
71090 var a=g.charAt(y);\r
71091 if((a=='"'||a=="(")&&w!="\\"){\r
71092 r=true;\r
71093 s=a;\r
71094 m=y;\r
71095 y++;\r
71096 while(r&&y<g.length){\r
71097 var a=g.charAt(y);\r
71098 if(((s=='"'&&a=='"')||(s=="("&&a==")"))&&(w!="\\")){\r
71099 p.push({\r
71100 start:m,end:y}\r
71101 );\r
71102 r=false\r
71103 }\r
71104 y++;\r
71105 w=a\r
71106 }}else{\r
71107 y++\r
71108 }\r
71109 w=a\r
71110 }\r
71111 if(p.length){\r
71112 AjxEmailAddress.IS_DELIM[" "]=false\r
71113 }\r
71114 m=0;\r
71115 var u=[];\r
71116 while(m<g.length){\r
71117 var t=g.substring(m,g.length);\r
71118 y=0;\r
71119 var n=t.length;\r
71120 while((n==t.length)&&(y<t.length)){\r
71121 var a=t.charAt(y);\r
71122 if(AjxEmailAddress.IS_DELIM[a]){\r
71123 var o=false;\r
71124 if(a!="\n"){\r
71125 for(var c=0;\r
71126 c<p.length;\r
71127 c++){\r
71128 var d=p[c];\r
71129 var e=m+y;\r
71130 o=(e>=d.start&&e<=d.end);\r
71131 if(o){\r
71132 break\r
71133 }}}\r
71134 if(!o){\r
71135 var h=true;\r
71136 var f=t.substring(0,y);\r
71137 if(a==","||a==" "){\r
71138 h=f.match(AjxEmailAddress.boundAddrPat)\r
71139 }\r
71140 if(h){\r
71141 u.push(f);\r
71142 n=y;\r
71143 m+=f.length+1\r
71144 }}\r
71145 a=g.charAt(m);\r
71146 while((m<g.length)&&AjxEmailAddress.IS_DELIM[a]){\r
71147 m++;\r
71148 a=g.charAt(m)\r
71149 }\r
71150 y++\r
71151 }else{\r
71152 y++\r
71153 }}\r
71154 if(n==t.length){\r
71155 u.push(t);\r
71156 m+=t.length+1\r
71157 }}\r
71158 AjxEmailAddress.IS_DELIM[" "]=true;\r
71159 return u\r
71160 };\r
71161 AjxEmailAddress.prototype.toString=function(){\r
71162 if(this.name&&!this.isGroup){\r
71163 var e=this.name.replace(/\\+"/g,'"');\r
71164 e=e.replace(/"/g,'\\"');\r
71165 return['"',e,'" <',this.address,">"].join("")\r
71166 }else{\r
71167 return this.address\r
71168 }};\r
71169 AjxEmailAddress.prototype.getAddress=function(){\r
71170 return this.address\r
71171 };\r
71172 AjxEmailAddress.prototype.setAddress=function(e){\r
71173 this.address=e\r
71174 };\r
71175 AjxEmailAddress.prototype.getType=function(){\r
71176 return this.type\r
71177 };\r
71178 AjxEmailAddress.prototype.setType=function(e){\r
71179 this.type=e\r
71180 };\r
71181 AjxEmailAddress.prototype.getTypeAsString=function(){\r
71182 return AjxEmailAddress.TYPE_STRING[this.type]\r
71183 };\r
71184 AjxEmailAddress.prototype.getName=function(){\r
71185 return this.name\r
71186 };\r
71187 AjxEmailAddress.prototype.getDispName=function(){\r
71188 return this.dispName\r
71189 };\r
71190 AjxEmailAddress.prototype.clone=function(){\r
71191 var e=new AjxEmailAddress(this.address,this.type,this.name,this.dispName);\r
71192 e.icon=this.icon;\r
71193 return e\r
71194 };\r
71195 AjxEmailAddress.copy=function(e){\r
71196 var t=new AjxEmailAddress(e.address,e.type,e.name,e.dispName);\r
71197 t.icon=e.icon;\r
71198 return t\r
71199 };\r
71200 AjxEmailAddress.prototype._setName=function(e){\r
71201 if(!e){\r
71202 return""\r
71203 }\r
71204 if(e&&e.charAt(0)=="'"&&e.charAt(e.length-1)=="'"){\r
71205 e=e.substring(1,e.length-1)\r
71206 }\r
71207 return e\r
71208 }\r
71209 }\r
71210 if(AjxPackage.define("ajax.util.AjxHistoryMgr")){\r
71211 AjxHistoryMgr=function(){\r
71212 this.currentLocation=null;\r
71213 this.listener=null;\r
71214 this.iframe=null;\r
71215 this.ignoreLocationChange=null;\r
71216 this.WAIT_TIME=AjxEnv.isIE?400:200;\r
71217 this.currentWaitTime=0;\r
71218 this.ieAtomicLocationChange=null;\r
71219 this._eventMgr=new AjxEventMgr();\r
71220 this._evt=new AjxEvent();\r
71221 this._initialize()\r
71222 };\r
71223 AjxHistoryMgr.BLANK_FILE="blankHistory.html";\r
71224 AjxHistoryMgr.IFRAME_ID="DhtmlHistoryFrame";\r
71225 AjxHistoryMgr.LOCATION_CHECK_INTERVAL=100;\r
71226 AjxHistoryMgr.prototype.addListener=function(e){\r
71227 return this._eventMgr.addListener(AjxEvent.HISTORY,e)\r
71228 };\r
71229 AjxHistoryMgr.prototype.removeListener=function(e){\r
71230 return this._eventMgr.removeListener(AjxEvent.HISTORY,e)\r
71231 };\r
71232 AjxHistoryMgr.prototype.add=function(a){\r
71233 var e=this;\r
71234 var t=function(){\r
71235 if(e.currentWaitTime>0){\r
71236 e.currentWaitTime=e.currentWaitTime-e.WAIT_TIME\r
71237 }\r
71238 a=e._removeHash(a);\r
71239 if(AjxEnv.isIE){\r
71240 if(document.getElementById(a)){\r
71241 throw new DwtException("AjxHistoryMgr: location has same ID as DOM element")\r
71242 }}\r
71243 e.ignoreLocationChange=true;\r
71244 this.ieAtomicLocationChange=true;\r
71245 e.currentLocation=a;\r
71246 window.location.hash=a;\r
71247 if(AjxEnv.isIE){\r
71248 e.iframe.src=AjxHistoryMgr.BLANK_FILE+"?"+a\r
71249 }\r
71250 this.ieAtomicLocationChange=false\r
71251 };\r
71252 window.setTimeout(t,this.currentWaitTime);\r
71253 this.currentWaitTime=this.currentWaitTime+e.WAIT_TIME\r
71254 };\r
71255 AjxHistoryMgr.prototype.getCurrentLocation=function(){\r
71256 return this._removeHash(window.location.hash)\r
71257 };\r
71258 AjxHistoryMgr.prototype._initialize=function(){\r
71259 var e=this.getCurrentLocation();\r
71260 this.currentLocation=e;\r
71261 if(AjxEnv.isIE){\r
71262 var n=[];\r
71263 var o=0;\r
71264 n[o++]="<iframe style='border: 0px; width: 1px; ";\r
71265 n[o++]="height: 1px; position: absolute; bottom: 0px; ";\r
71266 n[o++]="right: 0px; visibility: visible;' ";\r
71267 n[o++]="id='"+AjxHistoryMgr.IFRAME_ID+"' ";\r
71268 n[o++]="src='"+AjxHistoryMgr.BLANK_FILE+"?"+e+"'>";\r
71269 n[o++]="</iframe>";\r
71270 var s=document.createElement("div");\r
71271 document.body.appendChild(s);\r
71272 s.innerHTML=n.join("")\r
71273 }\r
71274 if(AjxEnv.isIE){\r
71275 this.iframe=document.getElementById(AjxHistoryMgr.IFRAME_ID)\r
71276 }\r
71277 var t=this;\r
71278 var a=function(){\r
71279 t._checkLocation()\r
71280 };\r
71281 setInterval(a,AjxHistoryMgr.LOCATION_CHECK_INTERVAL)\r
71282 };\r
71283 AjxHistoryMgr.prototype._checkLocation=function(){\r
71284 if(!AjxEnv.isIE&&this.ignoreLocationChange){\r
71285 this.ignoreLocationChange=false;\r
71286 return\r
71287 }\r
71288 if(!AjxEnv.isIE&&this.ieAtomicLocationChange){\r
71289 return\r
71290 }\r
71291 var e=this.getCurrentLocation();\r
71292 if(e==this.currentLocation){\r
71293 return\r
71294 }\r
71295 this.ieAtomicLocationChange=true;\r
71296 if(AjxEnv.isIE&&this._getIFrameHash()!=e){\r
71297 this.iframe.src=AjxHistoryMgr.BLANK_FILE+"?"+e\r
71298 }else{\r
71299 if(AjxEnv.isIE){\r
71300 return\r
71301 }}\r
71302 this.currentLocation=e;\r
71303 this.ieAtomicLocationChange=false;\r
71304 this._evt.data=e;\r
71305 this._eventMgr.notifyListeners(AjxEvent.HISTORY,this._evt)\r
71306 };\r
71307 AjxHistoryMgr.prototype._getIFrameHash=function(){\r
71308 var e=document.getElementById(AjxHistoryMgr.IFRAME_ID);\r
71309 var a=e.contentWindow.document;\r
71310 var t=new String(a.location.search);\r
71311 if(t.length==1&&t.charAt(0)=="?"){\r
71312 t=""\r
71313 }else{\r
71314 if(t.length>=2&&t.charAt(0)=="?"){\r
71315 t=t.substring(1)\r
71316 }}\r
71317 return t\r
71318 };\r
71319 AjxHistoryMgr.prototype._removeHash=function(e){\r
71320 if(e==null||e==undefined){\r
71321 return null\r
71322 }else{\r
71323 if(e==""){\r
71324 return""\r
71325 }else{\r
71326 if(e.length==1&&e.charAt(0)=="#"){\r
71327 return""\r
71328 }else{\r
71329 if(e.length>1&&e.charAt(0)=="#"){\r
71330 return e.substring(1)\r
71331 }else{\r
71332 return e\r
71333 }}}}};\r
71334 AjxHistoryMgr.prototype.iframeLoaded=function(e){\r
71335 if(this.ignoreLocationChange){\r
71336 this.ignoreLocationChange=false;\r
71337 return\r
71338 }\r
71339 var t=new String(e.search);\r
71340 if(t.length==1&&t.charAt(0)=="?"){\r
71341 t=""\r
71342 }else{\r
71343 if(t.length>=2&&t.charAt(0)=="?"){\r
71344 t=t.substring(1)\r
71345 }}\r
71346 window.location.hash=t;\r
71347 this._evt.data=t;\r
71348 this._eventMgr.notifyListeners(AjxEvent.HISTORY,this._evt)\r
71349 }\r
71350 }\r
71351 if(AjxPackage.define("ajax.xml.AjxSerializer")){\r
71352 AjxSerializer=function(){\r
71353 if(arguments.length==0){\r
71354 return\r
71355 }};\r
71356 AjxSerializer.prototype.serialize=function(e){\r
71357 throw"NOT IMPLEMENTED"\r
71358 };\r
71359 AjxJsonSerializer=function(e){\r
71360 AjxSerializer.call(this,null);\r
71361 this._minimize=Boolean(e)\r
71362 };\r
71363 AjxJsonSerializer.prototype=new AjxSerializer;\r
71364 AjxJsonSerializer.prototype.constructor=AjxJsonSerializer;\r
71365 AjxJsonSerializer.E_ATTRS="_attrs";\r
71366 AjxJsonSerializer.A_CONTENT="_content";\r
71367 AjxJsonSerializer.A_NAMESPACE="_jsns";\r
71368 AjxJsonSerializer.prototype.serialize=function(r){\r
71369 var t={};\r
71370 var p=0;\r
71371 var u=null;\r
71372 for(var o=r.firstChild;\r
71373 o;\r
71374 o=o.nextSibling){\r
71375 var m=o.nodeType;\r
71376 if(m==1){\r
71377 var e=o.nodeName;\r
71378 if(!t[e]){\r
71379 t[e]=[];\r
71380 p++\r
71381 }\r
71382 t[e].push(o);\r
71383 continue\r
71384 }\r
71385 if(m==3||m==4){\r
71386 if(!u){\r
71387 u=[]\r
71388 }\r
71389 u.push(o.nodeValue);\r
71390 continue\r
71391 }}\r
71392 var y={};\r
71393 var s=0;\r
71394 if(r.attributes){\r
71395 for(var c=0;\r
71396 c<r.attributes.length;\r
71397 c++){\r
71398 var d=r.attributes[c];\r
71399 var e=d.nodeName;\r
71400 var g=this.quote(d.nodeValue);\r
71401 if(t[e]){\r
71402 y[e]=g;\r
71403 s++\r
71404 }else{\r
71405 t[e]=g;\r
71406 p++\r
71407 }}}\r
71408 u=u&&u.join("");\r
71409 if(u&&u.match(/^\s*$/)){\r
71410 u=null\r
71411 }\r
71412 if(u){\r
71413 u=this.quote(u);\r
71414 if(s==0&&p==0){\r
71415 return u\r
71416 }}\r
71417 if(u==null&&p==0&&s==0){\r
71418 return"{}"\r
71419 }\r
71420 var f=["{"];\r
71421 if(u){\r
71422 f.push(this.quote(AjxJsonSerializer.A_CONTENT),":",u);\r
71423 if(s>0||p>0){\r
71424 f.push(",")\r
71425 }}\r
71426 if(s>0){\r
71427 f.push(this.quote(AjxJsonSerializer.E_ATTRS),": { ");\r
71428 var c=0;\r
71429 for(var e in y){\r
71430 if(c>0){\r
71431 f.push(",")\r
71432 }\r
71433 f.push(this.quote(e),":",y[e]);\r
71434 c++\r
71435 }\r
71436 f.push("}");\r
71437 if(p>0){\r
71438 f.push(", ")\r
71439 }}\r
71440 var h=0;\r
71441 for(var e in t){\r
71442 if(h>0){\r
71443 f.push(",")\r
71444 }\r
71445 var n=t[e];\r
71446 if(typeof n=="string"){\r
71447 f.push(this.quote(e),":",n);\r
71448 h++;\r
71449 continue\r
71450 }\r
71451 f.push(this.quote(e),":");\r
71452 if(!this._minimize||n.length>1){\r
71453 f.push("[")\r
71454 }\r
71455 for(var c=0;\r
71456 c<n.length;\r
71457 c++){\r
71458 if(c>0){\r
71459 f.push(",")\r
71460 }\r
71461 \r
71462 f.push(this.serialize(n[c]))\r
71463 }\r
71464 if(!this._minimize||n.length>1){\r
71465 f.push("]")\r
71466 }\r
71467 h++\r
71468 }\r
71469 f.push("}");\r
71470 return f.join("")\r
71471 };\r
71472 AjxJsonSerializer.prototype.quote=function(e){\r
71473 return['"',this.escape(e),'"'].join("")\r
71474 };\r
71475 AjxJsonSerializer.prototype.escape=function(e){\r
71476 return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")\r
71477 }\r
71478 }\r
71479 if(AjxPackage.define("ajax.dwt.core.DwtId")){\r
71480 DwtId=function(){};\r
71481 DwtId.SEP="__";\r
71482 DwtId.WIDGET_LIST_VIEW="zl";\r
71483 DwtId.WIDGET_HDR="zlh";\r
71484 DwtId.WIDGET_HDR_TABLE="zlht";\r
71485 DwtId.WIDGET_HDR_ICON="zlhi";\r
71486 DwtId.WIDGET_HDR_LABEL="zlhl";\r
71487 DwtId.WIDGET_HDR_ARROW="zlha";\r
71488 DwtId.WIDGET_HDR_SASH="zlhs";\r
71489 DwtId.WIDGET_ITEM="zli";\r
71490 DwtId.WIDGET_ITEM_ROW="zlir";\r
71491 DwtId.WIDGET_ITEM_CELL="zlic";\r
71492 DwtId.WIDGET_ITEM_FIELD="zlif";\r
71493 DwtId.LIST_VIEW_HEADERS="headers";\r
71494 DwtId.LIST_VIEW_ROWS="rows";\r
71495 DwtId.IFRAME="iframe";\r
71496 DwtId.DND_PLUS_ID="z__roundPlus";\r
71497 DwtId._makeId=function(){\r
71498 var a=[];\r
71499 for(var t=0;\r
71500 t<arguments.length;\r
71501 t++){\r
71502 var e=arguments[t];\r
71503 if(e!=null&&e!=""){\r
71504 a.push(e)\r
71505 }}\r
71506 return a.join(DwtId.SEP)\r
71507 };\r
71508 DwtId.getListViewId=function(t,e){\r
71509 return DwtId._makeId(DwtId.WIDGET_LIST_VIEW,t,e)\r
71510 };\r
71511 DwtId.getListViewHdrId=function(t,e,a){\r
71512 return DwtId._makeId(t,e,a)\r
71513 };\r
71514 DwtId.getListViewItemId=function(t,e,o,a){\r
71515 return DwtId._makeId(t,e,o,a)\r
71516 };\r
71517 DwtId.getIframeId=function(e){\r
71518 return DwtId._makeId(e,DwtId.IFRAME)\r
71519 }\r
71520 }\r
71521 if(AjxPackage.define("ajax.dwt.core.Dwt")){\r
71522 Dwt=function(){};\r
71523 Dwt.STATIC_STYLE="static";\r
71524 Dwt.ABSOLUTE_STYLE="absolute";\r
71525 Dwt.RELATIVE_STYLE="relative";\r
71526 Dwt.FIXED_STYLE="fixed";\r
71527 Dwt.NO_REPEAT="no-repeat";\r
71528 Dwt.REPEAT="repeat";\r
71529 Dwt.REPEAT_X="repeat-x";\r
71530 Dwt.REPEAT_Y="repeat-y";\r
71531 Dwt.DISPLAY_INLINE="inline";\r
71532 Dwt.DISPLAY_BLOCK="block";\r
71533 Dwt.DISPLAY_NONE="none";\r
71534 Dwt.DISPLAY_TABLE_ROW=AjxEnv.isIE?Dwt.DISPLAY_BLOCK:"table-row";\r
71535 Dwt.DISPLAY_TABLE_CELL=AjxEnv.isIE?Dwt.DISPLAY_BLOCK:"table-cell";\r
71536 Dwt.CLIP=1;\r
71537 Dwt.VISIBLE=2;\r
71538 Dwt.SCROLL=3;\r
71539 Dwt.FIXED_SCROLL=4;\r
71540 Dwt.SCROLL_Y=5;\r
71541 Dwt.SCROLL_X=6;\r
71542 Dwt.Z_HIDDEN=100;\r
71543 Dwt.Z_CURTAIN=200;\r
71544 Dwt.Z_VIEW=300;\r
71545 Dwt.Z_MENU=500;\r
71546 Dwt.Z_VEIL=600;\r
71547 Dwt.Z_DIALOG=700;\r
71548 Dwt.Z_DIALOG_MENU=750;\r
71549 Dwt.Z_TOOLTIP=775;\r
71550 Dwt.Z_DND=800;\r
71551 Dwt.Z_BUSY=900;\r
71552 Dwt.Z_TOAST=950;\r
71553 Dwt.Z_SPLASH=1000;\r
71554 Dwt.DEFAULT=-123456789;\r
71555 Dwt.CLEAR=-20000;\r
71556 Dwt.LOC_NOWHERE=-10000;\r
71557 Dwt.DND_DROP_NONE=0;\r
71558 Dwt.DND_DROP_COPY=1;\r
71559 Dwt.DND_DROP_MOVE=2;\r
71560 Dwt.SCROLLBAR_WIDTH=22;\r
71561 Dwt.KEY_OBJECT="_object_";\r
71562 Dwt.KEY_ID="_id_";\r
71563 Dwt._Z_INC=1;\r
71564 Dwt.__nextId={};\r
71565 Dwt.getNextId=function(e){\r
71566 if(arguments.length==0){\r
71567 e="DWT"\r
71568 }\r
71569 if(!Dwt.__nextId[e]){\r
71570 Dwt.__nextId[e]=1\r
71571 }\r
71572 return e+Dwt.__nextId[e]++\r
71573 };\r
71574 Dwt.associateElementWithObject=function(a,e,t){\r
71575 a[t||"dwtObj"]=e.__internalId=AjxCore.assignId(e)\r
71576 };\r
71577 Dwt.disassociateElementFromObject=function(a,e,t){\r
71578 if(a){\r
71579 a.removeAttribute(t||"dwtObj")\r
71580 }\r
71581 if(e.__internalId){\r
71582 AjxCore.unassignId(e.__internalId)\r
71583 }};\r
71584 Dwt.getObjectFromElement=function(t,e){\r
71585 return AjxCore.objectWithId(t[e||"dwtObj"])\r
71586 };\r
71587 Dwt.findAncestor=function(t,e){\r
71588 while(t&&(Dwt.getAttr(t,e)==null)){\r
71589 t=t.parentNode\r
71590 }\r
71591 return t\r
71592 };\r
71593 Dwt.setHandler=function(a,t,e){\r
71594 if(t==DwtEvent.ONMOUSEWHEEL&&AjxEnv.isGeckoBased){\r
71595 Dwt.clearHandler(a,t)\r
71596 }\r
71597 a[t]=e;\r
71598 if(t==DwtEvent.ONMOUSEWHEEL&&AjxEnv.isGeckoBased){\r
71599 a.addEventListener("DOMMouseScroll",e,true)\r
71600 }};\r
71601 Dwt.clearHandler=function(a,t){\r
71602 if(t==DwtEvent.ONMOUSEWHEEL&&AjxEnv.isGeckoBased){\r
71603 if(a[t]){\r
71604 var e=a[t];\r
71605 a.removeEventListener("DOMMouseScroll",e,true)\r
71606 }}\r
71607 a[t]=null\r
71608 };\r
71609 Dwt.getBackgroundRepeat=function(e){\r
71610 return DwtCssStyle.getProperty(e,"background-repeat")\r
71611 };\r
71612 Dwt.setBackgroundRepeat=function(t,e){\r
71613 t.style.backgroundRepeat=e\r
71614 };\r
71615 Dwt.getBounds=function(n,a){\r
71616 var o=DwtPoint.tmp;\r
71617 Dwt.getLocation(n,o);\r
71618 var t=o.x;\r
71619 var e=o.y;\r
71620 Dwt.getSize(n,o);\r
71621 if(!a){\r
71622 return new DwtRectangle(t,e,o.x,o.y)\r
71623 }else{\r
71624 a.set(t,e,o.x,o.y);\r
71625 return a\r
71626 }};\r
71627 Dwt.setBounds=function(o,t,n,a,e){\r
71628 Dwt.setLocation(o,t,n);\r
71629 Dwt.setSize(o,a,e)\r
71630 };\r
71631 Dwt.getCursor=function(e){\r
71632 return DwtCssStyle.getProperty(e,"cursor")\r
71633 };\r
71634 Dwt.setCursor=function(t,e){\r
71635 t.style.cursor=e\r
71636 };\r
71637 Dwt.getLocation=function(t,e){\r
71638 var e=(e)?e:new DwtPoint(0,0);\r
71639 if(t.style.position==Dwt.ABSOLUTE_STYLE){\r
71640 e.set(parseInt(DwtCssStyle.getProperty(t,"left")),parseInt(DwtCssStyle.getProperty(t,"top")));\r
71641 return e\r
71642 }else{\r
71643 return Dwt.toWindow(t,0,0,null,null,e)\r
71644 }};\r
71645 Dwt.setLocation=function(a,t,o){\r
71646 var e=a.style.position;\r
71647 if(e!=Dwt.ABSOLUTE_STYLE&&e!=Dwt.RELATIVE_STYLE&&e!=Dwt.FIXED_STYLE){\r
71648 throw new DwtException("Static widgets may not be positioned",DwtException.INVALID_OP,"Dwt.setLocation")\r
71649 }\r
71650 if(t=Dwt.__checkPxVal(t)){\r
71651 a.style.left=t\r
71652 }\r
71653 if(o=Dwt.__checkPxVal(o)){\r
71654 a.style.top=o\r
71655 }};\r
71656 Dwt.getPosition=function(e){\r
71657 return e.style.position\r
71658 };\r
71659 Dwt.setPosition=function(t,e){\r
71660 t.style.position=e\r
71661 };\r
71662 Dwt.getScrollStyle=function(a){\r
71663 var o=DwtCssStyle.getProperty(a,"overflow");\r
71664 if(o=="hidden"){\r
71665 return Dwt.CLIP\r
71666 }else{\r
71667 if(o=="auto"){\r
71668 return Dwt.SCROLL\r
71669 }else{\r
71670 if(o=="scroll"){\r
71671 return Dwt.FIXED_SCROLL\r
71672 }else{\r
71673 var t=DwtCssStyle.getProperty(a,"overflowX");\r
71674 var e=DwtCssStyle.getProperty(a,"overflowY");\r
71675 if(o==""){\r
71676 if(t=="scroll"){\r
71677 return Dwt.SCROLL_X\r
71678 }else{\r
71679 if(e=="scroll"){\r
71680 return Dwt.SCROLL_Y\r
71681 }}}\r
71682 return Dwt.VISIBLE\r
71683 }}}};\r
71684 Dwt.setScrollStyle=function(t,e){\r
71685 if(e==Dwt.CLIP){\r
71686 t.style.overflow="hidden"\r
71687 }else{\r
71688 if(e==Dwt.SCROLL){\r
71689 t.style.overflow="auto"\r
71690 }else{\r
71691 if(e==Dwt.FIXED_SCROLL){\r
71692 t.style.overflow="scroll"\r
71693 }else{\r
71694 if(e==Dwt.SCROLL_Y){\r
71695 t.style.overflowX="hidden";\r
71696 t.style.overflowY="auto"\r
71697 }else{\r
71698 if(e==Dwt.SCROLL_X){\r
71699 t.style.overflowY="hidden";\r
71700 t.style.overflowX="auto"\r
71701 }else{\r
71702 t.style.overflow="visible"\r
71703 }}}}}};\r
71704 Dwt.getSize=function(a,e){\r
71705 var t;\r
71706 if(!e){\r
71707 t=new DwtPoint(0,0)\r
71708 }else{\r
71709 t=e;\r
71710 t.set(0,0)\r
71711 }\r
71712 if(!a){\r
71713 return t\r
71714 }\r
71715 t.x=a.offsetWidth;\r
71716 if(t.x!=null){\r
71717 t.y=a.offsetHeight\r
71718 }else{\r
71719 if(a.clip&&a.clip.width!=null){\r
71720 t.x=a.clip.width;\r
71721 t.y=a.clip.height;\r
71722 t.x=parseInt(t.x);\r
71723 t.y=parseInt(t.y)\r
71724 }else{\r
71725 if(a.style&&a.style.pixelWidth!=null){\r
71726 t.x=a.style.pixelWidth;\r
71727 t.y=a.style.pixelHeight;\r
71728 t.x=parseInt(t.x);\r
71729 t.y=parseInt(t.y)\r
71730 }}}\r
71731 return t\r
71732 };\r
71733 Dwt.setSize=function(a,t,e){\r
71734 if(!a.style){\r
71735 return\r
71736 }\r
71737 if(t==Dwt.CLEAR){\r
71738 a.style.width=null\r
71739 }else{\r
71740 if(t=Dwt.__checkPxVal(t,true)){\r
71741 a.style.width=t\r
71742 }}\r
71743 if(e==Dwt.CLEAR){\r
71744 a.style.height=null\r
71745 }else{\r
71746 if(e=Dwt.__checkPxVal(e,true)){\r
71747 a.style.height=e\r
71748 }}};\r
71749 Dwt.getHtmlExtent=function(e){\r
71750 var t=AjxStringUtil.calcDIV();\r
71751 t.innerHTML=e;\r
71752 return Dwt.getSize(t)\r
71753 };\r
71754 Dwt.toDocumentFragment=function(a,s){\r
71755 var n=AjxStringUtil.calcDIV();\r
71756 n.innerHTML=a;\r
71757 var t=document.createDocumentFragment();\r
71758 var e=s&&document.getElementById(s);\r
71759 if(e){\r
71760 t.appendChild(e)\r
71761 }else{\r
71762 for(var o=n.firstChild;\r
71763 o;\r
71764 o=n.firstChild){\r
71765 t.appendChild(o)\r
71766 }}\r
71767 return t\r
71768 };\r
71769 Dwt.getAttr=function(a,e,t){\r
71770 if(!t){\r
71771 return a&&a.tagName?(a.getAttribute(e)||a[e]):null\r
71772 }else{\r
71773 while(a){\r
71774 if(Dwt.getAttr(a,e)!=null){\r
71775 return a\r
71776 }\r
71777 a=a.parentNode\r
71778 }\r
71779 return null\r
71780 }};\r
71781 Dwt.getVisible=function(t){\r
71782 var e=DwtCssStyle.getProperty(t,"display");\r
71783 return(e!=Dwt.DISPLAY_NONE)\r
71784 };\r
71785 Dwt.setVisible=function(t,a){\r
71786 if(a){\r
71787 if(t.nodeName.match(/tr/i)){\r
71788 t.style.display=Dwt.DISPLAY_TABLE_ROW\r
71789 }else{\r
71790 if(t.nodeName.match(/td|th/i)){\r
71791 t.style.display=Dwt.DISPLAY_TABLE_CELL\r
71792 }else{\r
71793 t.style.display=t.getAttribute("x-display")||Dwt.DISPLAY_BLOCK\r
71794 }}}else{\r
71795 var e=DwtCssStyle.getComputedStyleObject(t).display;\r
71796 if(e!="none"){\r
71797 t.setAttribute("x-display",e)\r
71798 }\r
71799 t.style.display=Dwt.DISPLAY_NONE\r
71800 }};\r
71801 Dwt.getVisibility=function(t){\r
71802 var e=DwtCssStyle.getProperty(t,"visibility");\r
71803 return(e=="visible")\r
71804 };\r
71805 Dwt.setVisibility=function(e,t){\r
71806 e.style.visibility=t?"visible":"hidden"\r
71807 };\r
71808 Dwt.__MSIE_OPACITY_RE=/alpha\(opacity=(\d+)\)/;\r
71809 Dwt.getOpacity=function(a){\r
71810 if(AjxEnv.isIE){\r
71811 var t=a.style.filter;\r
71812 var e=Dwt.__MSIE_OPACITY_RE.exec(t)||[t,"100"];\r
71813 return Number(e[1])\r
71814 }\r
71815 return Number(a.style.opacity||1)*100\r
71816 };\r
71817 Dwt.setOpacity=function(t,e){\r
71818 if(AjxEnv.isIE){\r
71819 t.style.filter="alpha(opacity="+e+")"\r
71820 }else{\r
71821 t.style.opacity=e/100\r
71822 }};\r
71823 Dwt.getZIndex=function(e){\r
71824 return DwtCssStyle.getProperty(e,"z-index")\r
71825 };\r
71826 Dwt.setZIndex=function(t,e){\r
71827 t.style.zIndex=e\r
71828 };\r
71829 Dwt.getDisplay=function(e){\r
71830 DwtCssStyle.getProperty(e,"display")\r
71831 };\r
71832 Dwt.setDisplay=function(t,e){\r
71833 t.style.display=e\r
71834 };\r
71835 Dwt.getWindowSize=function(e){\r
71836 var t=(!e)?new DwtPoint(0,0):e;\r
71837 if(window.innerWidth){\r
71838 t.x=window.innerWidth;\r
71839 t.y=window.innerHeight\r
71840 }else{\r
71841 if(AjxEnv.isIE6CSS){\r
71842 t.x=document.body.parentElement.clientWidth;\r
71843 t.y=document.body.parentElement.clientHeight\r
71844 }else{\r
71845 if(document.body&&document.body.clientWidth){\r
71846 t.x=document.body.clientWidth;\r
71847 t.y=document.body.clientHeight\r
71848 }}}\r
71849 return t\r
71850 };\r
71851 Dwt.toWindow=function(o,r,s,d,h,c){\r
71852 var t;\r
71853 if(!c){\r
71854 t=new DwtPoint(r,s)\r
71855 }else{\r
71856 t=c;\r
71857 t.set(r,s)\r
71858 }\r
71859 var e=o;\r
71860 while(e&&e!=d){\r
71861 t.x+=e.offsetLeft-e.scrollLeft;\r
71862 t.y+=e.offsetTop;\r
71863 if(!h){\r
71864 var a=AjxEnv.isOpera?e.pageYOffset:e.scrollTop;\r
71865 if(a){\r
71866 t.y-=a\r
71867 }\r
71868 var n=e.parentNode;\r
71869 while(n!=e.offsetParent&&n!=d){\r
71870 a=AjxEnv.isOpera?n.pageYOffset:n.scrollTop;\r
71871 if(a){\r
71872 t.y-=a\r
71873 }\r
71874 n=n.parentNode\r
71875 }}\r
71876 e=e.offsetParent\r
71877 }\r
71878 return t\r
71879 };\r
71880 Dwt.getInsets=function(o){\r
71881 var t=DwtCssStyle.getComputedStyleObject(o);\r
71882 var a=parseInt(t.borderLeftWidth)||0;\r
71883 var h=parseInt(t.borderTopWidth)||0;\r
71884 var c=parseInt(t.borderRightWidth)||0;\r
71885 var s=parseInt(t.borderBottomWidth)||0;\r
71886 var n=parseInt(t.paddingLeft)||0;\r
71887 var d=parseInt(t.paddingTop)||0;\r
71888 var e=parseInt(t.paddingRight)||0;\r
71889 var r=parseInt(t.paddingBottom)||0;\r
71890 return{\r
71891 left:a+n,top:h+d,right:c+e,bottom:s+r}\r
71892 };\r
71893 Dwt.insetBounds=function(t,e){\r
71894 if(isNaN(t.x)||isNaN(e.left)){\r
71895 return t\r
71896 }\r
71897 t.x+=e.left;\r
71898 t.y+=e.top;\r
71899 t.width-=e.left+e.right;\r
71900 t.height-=e.top+e.bottom;\r
71901 return t\r
71902 };\r
71903 Dwt.setStatus=function(e){\r
71904 window.status=e\r
71905 };\r
71906 Dwt.getTitle=function(){\r
71907 return window.document.title\r
71908 };\r
71909 Dwt.setTitle=function(e){\r
71910 window.document.title=e\r
71911 };\r
71912 Dwt.getIframeDoc=function(e){\r
71913 if(e){\r
71914 return AjxEnv.isIE?e.contentWindow.document:e.contentDocument\r
71915 }\r
71916 return null\r
71917 };\r
71918 Dwt.getIframeWindow=function(e){\r
71919 return e.contentWindow\r
71920 };\r
71921 Dwt.parseHtmlFragment=function(o,a){\r
71922 if(!Dwt._div){\r
71923 Dwt._div=document.createElement("div")\r
71924 }\r
71925 if(a){\r
71926 o="<table style='table-layout:fixed'>"+o+"</table>"\r
71927 }\r
71928 Dwt._div.innerHTML=o;\r
71929 if(a){\r
71930 var e=document.createDocumentFragment();\r
71931 var n=Dwt._div.firstChild.rows;\r
71932 for(var t=n.length-1;\r
71933 t>=0;\r
71934 t--){\r
71935 e.appendChild(n[0])\r
71936 }\r
71937 return e.childNodes.length>1?e:e.firstChild\r
71938 }\r
71939 return Dwt._div.firstChild\r
71940 };\r
71941 Dwt.contains=function(a,t){\r
71942 var o=false;\r
71943 if(a.compareDocumentPosition){\r
71944 var e=a.compareDocumentPosition(t);\r
71945 if((e==(document.DOCUMENT_POSITION_CONTAINED_BY|document.DOCUMENT_POSITION_FOLLOWING))){\r
71946 o=true\r
71947 }}else{\r
71948 if(a.contains){\r
71949 o=a.contains(t)\r
71950 }}\r
71951 return o\r
71952 };\r
71953 Dwt.removeChildren=function(e){\r
71954 while(e.hasChildNodes()){\r
71955 e.removeChild(e.firstChild)\r
71956 }};\r
71957 Dwt.getCellIndex=function(t){\r
71958 if(AjxEnv.isOpera){\r
71959 if(t.tagName&&t.tagName.toLowerCase()=="td"){\r
71960 var a=t.parentNode.cells;\r
71961 var e=a.length;\r
71962 for(var o=0;\r
71963 o<e;\r
71964 o++){\r
71965 if(a[o]==t){\r
71966 return o\r
71967 }}}}else{\r
71968 return t.cellIndex\r
71969 }\r
71970 return -1\r
71971 };\r
71972 Dwt.delClass=function(a,e,o){\r
71973 if(a==null){\r
71974 return\r
71975 }\r
71976 if(typeof e=="string"){\r
71977 e=Dwt._DELCLASS_CACHE[e]||(Dwt._DELCLASS_CACHE[e]=new RegExp("\\b"+e+"\\b","ig"))\r
71978 }\r
71979 var t=a.className||"";\r
71980 t=t.replace(e," ");\r
71981 a.className=o?t+" "+o:t\r
71982 };\r
71983 Dwt._DELCLASS_CACHE={};\r
71984 Dwt.addClass=function(e,t){\r
71985 Dwt.delClass(e,t,t)\r
71986 };\r
71987 Dwt.condClass=function(o,n,t,e){\r
71988 if(!!n){\r
71989 if(e){\r
71990 Dwt.delClass(o,e)\r
71991 }\r
71992 Dwt.addClass(o,t)\r
71993 }else{\r
71994 Dwt.delClass(o,t);\r
71995 if(e){\r
71996 Dwt.addClass(o,e)\r
71997 }}};\r
71998 Dwt.setSelectionRange=function(a,o,e){\r
71999 if(AjxEnv.isGeckoBased||AjxEnv.isSafari){\r
72000 a.setSelectionRange(o,e)\r
72001 }else{\r
72002 if(AjxEnv.isIE){\r
72003 var t=a.createTextRange();\r
72004 t.collapse(true);\r
72005 t.moveStart("character",o);\r
72006 t.moveEnd("character",e-o);\r
72007 t.select()\r
72008 }else{\r
72009 a.select()\r
72010 }}};\r
72011 Dwt.getSelectionStart=function(o){\r
72012 if(AjxEnv.isGeckoBased){\r
72013 return o.selectionStart\r
72014 }else{\r
72015 if(AjxEnv.isIE){\r
72016 var a=document.selection.createRange();\r
72017 var t=a.compareEndPoints("StartToEnd",a)==0;\r
72018 if(!t){\r
72019 a.collapse(true)\r
72020 }\r
72021 var e=a.getBookmark();\r
72022 return e.charCodeAt(2)-2\r
72023 }}\r
72024 return o.value.length\r
72025 };\r
72026 Dwt.getSelectionEnd=function(o){\r
72027 if(AjxEnv.isGeckoBased){\r
72028 return o.selectionEnd\r
72029 }else{\r
72030 if(AjxEnv.isIE){\r
72031 var a=document.selection.createRange();\r
72032 var t=a.compareEndPoints("StartToEnd",a)==0;\r
72033 if(!t){\r
72034 a.collapse(false)\r
72035 }\r
72036 var e=a.getBookmark();\r
72037 return e.charCodeAt(2)-2\r
72038 }}\r
72039 return o.value.length\r
72040 };\r
72041 Dwt.setSelectionText=function(t,n){\r
72042 var s=Dwt.getSelectionStart(t);\r
72043 var e=Dwt.getSelectionEnd(t);\r
72044 var o=t.value;\r
72045 var a=[o.substr(0,s),n,o.substr(e)].join("");\r
72046 if(typeof t.setValue=="function"){\r
72047 t.setValue(a)\r
72048 }else{\r
72049 t.value=a\r
72050 }\r
72051 Dwt.setSelectionRange(t,s,s+n.length)\r
72052 };\r
72053 Dwt.instanceOf=function(t,e){\r
72054 if(typeof t=="string"){\r
72055 return window[t]&&(t==e||window[t].prototype instanceof window[e])\r
72056 }\r
72057 return(window[e]&&t instanceof window[e])\r
72058 };\r
72059 Dwt.getParams=function(e,o){\r
72060 if(!(e&&e.length)){\r
72061 return\r
72062 }\r
72063 if(e.length>1||e[0]._eventMgr){\r
72064 var a={};\r
72065 for(var t=0;\r
72066 t<e.length;\r
72067 t++){\r
72068 a[o[t]]=e[t]\r
72069 }\r
72070 return a\r
72071 }else{\r
72072 if(e.length==1){\r
72073 return e[0]\r
72074 }else{\r
72075 return{}\r
72076 }}};\r
72077 Dwt.__checkPxVal=function(t,e){\r
72078 if(t==Dwt.DEFAULT){\r
72079 return false\r
72080 }\r
72081 if(e&&t<0&&t!=Dwt.LOC_NOWHERE){\r
72082 t=0\r
72083 }\r
72084 if(typeof(t)=="number"){\r
72085 t=t+"px"\r
72086 }\r
72087 return t\r
72088 };\r
72089 Dwt.byId=function(e){\r
72090 return(typeof e=="string"?document.getElementById(e):e)\r
72091 };\r
72092 Dwt.byTag=function(e){\r
72093 return document.getElementsByTagName(e)\r
72094 };\r
72095 Dwt.show=function(e){\r
72096 Dwt.setVisible(Dwt.byId(e),true)\r
72097 };\r
72098 Dwt.hide=function(e){\r
72099 Dwt.setVisible(Dwt.byId(e),false)\r
72100 };\r
72101 Dwt.toggle=function(t,e){\r
72102 t=Dwt.byId(t);\r
72103 if(e==null){\r
72104 e=(Dwt.getVisible(t)!=true)\r
72105 }\r
72106 Dwt.setVisible(t,e)\r
72107 };\r
72108 Dwt.setText=function(e,t){\r
72109 e.appendChild(document.createTextNode(t))\r
72110 };\r
72111 Dwt.populateText=function(){\r
72112 if(arguments.length==0){\r
72113 return\r
72114 }\r
72115 var a,e=0,t=arguments.length;\r
72116 while(e<t){\r
72117 a=document.getElementById(arguments[e]);\r
72118 if(a){\r
72119 Dwt.setText(a,arguments[e+1])\r
72120 }\r
72121 e+=2\r
72122 }};\r
72123 Dwt.setInnerHtml=function(t,e){\r
72124 t.innerHTML=e\r
72125 };\r
72126 Dwt.setFavIcon=function(r){\r
72127 if(AjxEnv.isIE){\r
72128 return\r
72129 }\r
72130 var e=null;\r
72131 if(Dwt._favIconId){\r
72132 e=document.getElementById(Dwt._favIconId)\r
72133 }else{\r
72134 var h=document.getElementsByTagName("head")[0];\r
72135 var t=h.getElementsByTagName("link");\r
72136 for(var o=0;\r
72137 o<t.length;\r
72138 o++){\r
72139 var s=t[o];\r
72140 if(s.rel.toUpperCase()=="SHORTCUT ICON"){\r
72141 if(!s.id){\r
72142 s.id=Dwt._favIconId=Dwt.getNextId()\r
72143 }\r
72144 e=s;\r
72145 break\r
72146 }}}\r
72147 if(e){\r
72148 e.href=r;\r
72149 var n=e.parentNode;\r
72150 n.removeChild(e);\r
72151 n.appendChild(e)\r
72152 }else{\r
72153 var a=document.createElement("link");\r
72154 a.id=Dwt._favIconId=Dwt.getNextId();\r
72155 a.rel="SHORTCUT ICON";\r
72156 a.href=r;\r
72157 h=h||document.getElementsByTagName("head")[0];\r
72158 h.appendChild(a)\r
72159 }}\r
72160 }\r
72161 if(AjxPackage.define("ajax.dwt.core.DwtException")){\r
72162 DwtException=function(a,t,o,e){\r
72163 if(arguments.length===0){\r
72164 return\r
72165 }\r
72166 AjxException.call(this,a,t,o,e)\r
72167 };\r
72168 DwtException.prototype=new AjxException();\r
72169 DwtException.prototype.constructor=DwtException;\r
72170 DwtException.prototype.toString=function(){\r
72171 return"DwtException"\r
72172 };\r
72173 DwtException.INVALIDPARENT=-1;\r
72174 DwtException.INVALID_OP=-2;\r
72175 DwtException.INTERNAL_ERROR=-3;\r
72176 DwtException.INVALID_PARAM=-4\r
72177 }\r
72178 if(AjxPackage.define("ajax.dwt.graphics.DwtCssStyle")){\r
72179 DwtCssStyle=function(){};\r
72180 DwtCssStyle.HOVER="hover";\r
72181 DwtCssStyle.ACTIVE="active";\r
72182 DwtCssStyle.SELECTED="selected";\r
72183 DwtCssStyle.DISABLED="disabled";\r
72184 DwtCssStyle.FOCUSED="focused";\r
72185 DwtCssStyle.ACTIONED="actioned";\r
72186 DwtCssStyle.MATCHED="matched";\r
72187 DwtCssStyle.DRAG_OVER="dragOver";\r
72188 DwtCssStyle.DROPPABLE="droppable";\r
72189 DwtCssStyle.NOT_DROPPABLE="notDroppable";\r
72190 DwtCssStyle.DRAG_PROXY="dragProxy";\r
72191 DwtCssStyle.LINUX="linux";\r
72192 DwtCssStyle.getProperty=function(t,a){\r
72193 var d;\r
72194 if(t.ownerDocument==null){\r
72195 for(var c=t.parentNode;\r
72196 c.parentNode!=null;\r
72197 c=c.parentNode){}\r
72198 var h=c\r
72199 }else{\r
72200 var h=t.ownerDocument\r
72201 }\r
72202 if(h.defaultView&&!AjxEnv.isSafari){\r
72203 var e=h.defaultView.getComputedStyle(t,"");\r
72204 d=e.getPropertyValue(a)\r
72205 }else{\r
72206 var r=a.split("-");\r
72207 var n="";\r
72208 var o;\r
72209 var s=r.length;\r
72210 for(o=0;\r
72211 o<s;\r
72212 o++){\r
72213 if(o!=0){\r
72214 n+=r[o].substring(0,1).toUpperCase()\r
72215 }else{\r
72216 n+=r[o].substring(0,1)\r
72217 }\r
72218 n+=r[o].substring(1)\r
72219 }\r
72220 if(t.currentStyle){\r
72221 d=t.currentStyle[n]\r
72222 }else{\r
72223 if(t.style){\r
72224 d=t.style[n]\r
72225 }}}\r
72226 return d\r
72227 };\r
72228 DwtCssStyle.getComputedStyleObject=function(o){\r
72229 if(o.ownerDocument==null){\r
72230 for(var t=o.parentNode;\r
72231 t.parentNode!=null;\r
72232 t=t.parentNode){}\r
72233 var a=t\r
72234 }else{\r
72235 var a=o.ownerDocument\r
72236 }\r
72237 if(a.defaultView){\r
72238 var e=a.defaultView.getComputedStyle(o,null);\r
72239 if(!e&&o.style){\r
72240 o.style.display="";\r
72241 e=a.defaultView.getComputedStyle(o,null)\r
72242 }\r
72243 return e||{}\r
72244 }else{\r
72245 if(o.currentStyle){\r
72246 return o.currentStyle\r
72247 }else{\r
72248 if(o.style){\r
72249 return o.style\r
72250 }}}};\r
72251 DwtCssStyle.removeProperty=function(t,a){\r
72252 if(a instanceof Array){\r
72253 for(var e=a.length;\r
72254 --e>=0;\r
72255 ){\r
72256 DwtCssStyle.removeProperty(t,a[e])\r
72257 }}else{\r
72258 if(AjxEnv.isIE){\r
72259 t.style.removeAttribute(a,true)\r
72260 }else{\r
72261 a=a.replace(/([A-Z])/g,"-$1");\r
72262 t.style.removeProperty(a)\r
72263 }}}\r
72264 }\r
72265 if(AjxPackage.define("ajax.dwt.graphics.DwtPoint")){\r
72266 DwtPoint=function(e,t){\r
72267 this.x=e;\r
72268 this.y=t\r
72269 };\r
72270 DwtPoint.tmp=new DwtPoint(0,0);\r
72271 DwtPoint.prototype.toString=function(){\r
72272 return"DwtPoint"\r
72273 };\r
72274 DwtPoint.prototype.set=function(e,t){\r
72275 this.x=e;\r
72276 this.y=t\r
72277 }\r
72278 }\r
72279 if(AjxPackage.define("ajax.dwt.graphics.DwtRectangle")){\r
72280 DwtRectangle=function(t,o,a,e){\r
72281 this.x=t;\r
72282 this.y=o;\r
72283 this.width=a;\r
72284 this.height=e\r
72285 };\r
72286 DwtRectangle.prototype.toString=function(){\r
72287 return"DwtRectangle"\r
72288 };\r
72289 DwtRectangle.prototype.set=function(t,o,a,e){\r
72290 this.x=t;\r
72291 this.y=o\r
72292 }\r
72293 }\r
72294 if(AjxPackage.define("ajax.dwt.graphics.DwtUnits")){\r
72295 DwtUnits=function(){};\r
72296 DwtUnits.PIXEL_UNIT="px";\r
72297 DwtUnits.CM_UNIT="cm";\r
72298 DwtUnits.MM_UNIT="mm";\r
72299 DwtUnits.INCH_UNIT="in";\r
72300 DwtUnits.PCT_UNIT="%";\r
72301 DwtUnits.POINT="pt";\r
72302 DwtUnits.WIDTH_EM=AjxEnv.isIE?9:11;\r
72303 DwtUnits.WIDTH_SEP=AjxEnv.isIE?6:8;\r
72304 DwtUnits.WIDTH_ELLIPSIS=15\r
72305 }\r
72306 if(AjxPackage.define("ajax.dwt.events.DwtEvent")){\r
72307 DwtEvent=function(e){\r
72308 if(arguments.length==0){\r
72309 return\r
72310 }\r
72311 this.dwtObj=null\r
72312 };\r
72313 DwtEvent.prototype.toString=function(){\r
72314 return"DwtEvent"\r
72315 };\r
72316 DwtEvent.ONCHANGE="onchange";\r
72317 DwtEvent.ONCLICK="onclick";\r
72318 DwtEvent.ONCONTEXTMENU="oncontextmenu";\r
72319 DwtEvent.ONDBLCLICK="ondblclick";\r
72320 DwtEvent.ONFOCUS="onfocus";\r
72321 DwtEvent.ONBLUR="onblur";\r
72322 DwtEvent.ONKEYDOWN="onkeydown";\r
72323 DwtEvent.ONKEYPRESS="onkeypress";\r
72324 DwtEvent.ONKEYUP="onkeyup";\r
72325 DwtEvent.ONMOUSEDOWN="onmousedown";\r
72326 DwtEvent.ONMOUSEENTER="onmouseenter";\r
72327 DwtEvent.ONMOUSELEAVE="onmouseleave";\r
72328 DwtEvent.ONMOUSEMOVE="onmousemove";\r
72329 DwtEvent.ONMOUSEOUT="onmouseout";\r
72330 DwtEvent.ONMOUSEOVER="onmouseover";\r
72331 DwtEvent.ONMOUSEUP="onmouseup";\r
72332 DwtEvent.ONMOUSEWHEEL="onmousewheel";\r
72333 DwtEvent.ONSELECTSTART="onselectstart";\r
72334 DwtEvent.ONSCROLL="onscroll";\r
72335 DwtEvent.ACTION="ACTION";\r
72336 DwtEvent.CONTROL="CONTROL";\r
72337 DwtEvent.DATE_RANGE="DATE_RANGE";\r
72338 DwtEvent.DISPOSE="DISPOSE";\r
72339 DwtEvent.ENTER="ENTER";\r
72340 DwtEvent.HOVEROVER="HOVEROVER";\r
72341 DwtEvent.HOVEROUT="HOVEROUT";\r
72342 DwtEvent.POPDOWN="POPDOWN";\r
72343 DwtEvent.POPUP="POPUP";\r
72344 DwtEvent.SELECTION="SELECTION";\r
72345 DwtEvent.TREE="TREE";\r
72346 DwtEvent.STATE_CHANGE="STATE_CHANGE";\r
72347 DwtEvent.TAB="TAB";\r
72348 DwtEvent.XFORMS_READY="xforms-ready";\r
72349 DwtEvent.XFORMS_DISPLAY_UPDATED="xforms-display-updated";\r
72350 DwtEvent.XFORMS_VALUE_CHANGED="xforms-value-changed";\r
72351 DwtEvent.XFORMS_FORM_DIRTY_CHANGE="xforms-form-dirty-change";\r
72352 DwtEvent.XFORMS_CHOICES_CHANGED="xforms-choices-changed";\r
72353 DwtEvent.XFORMS_VALUE_ERROR="xforms-value-error";\r
72354 DwtEvent.XFORMS_INSTANCE_CHANGED="xforms-instance-cahnged";\r
72355 DwtEvent.KEY_EVENTS=[DwtEvent.ONKEYDOWN,DwtEvent.ONKEYPRESS,DwtEvent.ONKEYUP];\r
72356 DwtEvent.MOUSE_EVENTS=[DwtEvent.ONCONTEXTMENU,DwtEvent.ONDBLCLICK,DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEMOVE,DwtEvent.ONMOUSEUP,DwtEvent.ONSELECTSTART,DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT]\r
72357 }\r
72358 if(AjxPackage.define("ajax.dwt.events.DwtEventManager")){\r
72359 DwtEventManager=function(){};\r
72360 DwtEventManager._instance=new AjxEventMgr();\r
72361 DwtEventManager._domEventToDwtMap={\r
72362 ondblclick:DwtEvent.ONDBLCLICK,onmousedown:DwtEvent.ONMOUSEDOWN,onmouseup:DwtEvent.ONMOUSEUP,onmousemove:DwtEvent.ONMOUSEMOVE,onmouseout:DwtEvent.ONMOUSEOUT,onmouseover:DwtEvent.ONMOUSEOVER,onselectstart:DwtEvent.ONSELECTSTART,onchange:DwtEvent.ONCHANGE};\r
72363 DwtEventManager.addListener=function(e,t){\r
72364 DwtEventManager._instance.addListener(e,t)\r
72365 };\r
72366 DwtEventManager.notifyListeners=function(e,t){\r
72367 DwtEventManager._instance.notifyListeners(e,t)\r
72368 };\r
72369 DwtEventManager.removeListener=function(e,t){\r
72370 DwtEventManager._instance.removeListener(e,t)\r
72371 }\r
72372 }\r
72373 if(AjxPackage.define("ajax.dwt.events.DwtUiEvent")){\r
72374 DwtUiEvent=function(e){\r
72375 if(arguments.length==0){\r
72376 return\r
72377 }\r
72378 DwtEvent.call(this,true);\r
72379 this.reset()\r
72380 };\r
72381 DwtUiEvent.prototype=new DwtEvent;\r
72382 DwtUiEvent.prototype.constructor=DwtUiEvent;\r
72383 DwtUiEvent.prototype.toString=function(){\r
72384 return"DwtUiEvent"\r
72385 };\r
72386 DwtUiEvent.prototype.reset=function(){\r
72387 this.dwtObj=null;\r
72388 this.altKey=false;\r
72389 this.ctrlKey=false;\r
72390 this.metaKey=false;\r
72391 this.shiftKey=false;\r
72392 this.target=null;\r
72393 this.type=null;\r
72394 this.docX=-1;\r
72395 this.docY=-1;\r
72396 this.elementX=-1;\r
72397 this.elementY=-1;\r
72398 this.ersatz=false;\r
72399 this._stopPropagation=false;\r
72400 this._returnValue=true;\r
72401 this._dontCallPreventDefault=false\r
72402 };\r
72403 DwtUiEvent.getEvent=function(t,a){\r
72404 t=t||window.event;\r
72405 if(t){\r
72406 return t\r
72407 }\r
72408 if(a){\r
72409 var e=(a.ownerDocument||a.document||a).parentWindow;\r
72410 return e?e.event:null\r
72411 }};\r
72412 DwtUiEvent.getTarget=function(e,t){\r
72413 e=DwtUiEvent.getEvent(e);\r
72414 if(!e){\r
72415 return null\r
72416 }\r
72417 if(!t){\r
72418 if(e.target){\r
72419 return(e.target.nodeType==3)?e.target.parentNode:e.target\r
72420 }else{\r
72421 if(e.srcElement){\r
72422 return e.srcElement\r
72423 }}}else{\r
72424 if(e.relatedTarget){\r
72425 return e.relatedTarget\r
72426 }else{\r
72427 if(e.toElement){\r
72428 return e.toElement\r
72429 }else{\r
72430 if(e.fromElement){\r
72431 return e.fromElement\r
72432 }}}}\r
72433 return null\r
72434 };\r
72435 DwtUiEvent.getTargetWithProp=function(e,o,a){\r
72436 var t=DwtUiEvent.getTarget(e,a);\r
72437 while(t){\r
72438 if(Dwt.getAttr(t,o)!=null){\r
72439 return t\r
72440 }\r
72441 t=t.parentNode\r
72442 }\r
72443 return null\r
72444 };\r
72445 DwtUiEvent.getTargetWithProps=function(o,a){\r
72446 var n=DwtUiEvent.getTarget(o);\r
72447 while(n){\r
72448 var t=true;\r
72449 for(var e in a){\r
72450 var s=Dwt.getAttr(n,a[e]);\r
72451 if(s==null){\r
72452 n=n.parentNode;\r
72453 t=false;\r
72454 break\r
72455 }}\r
72456 if(t){\r
72457 return n\r
72458 }}\r
72459 return null\r
72460 };\r
72461 DwtUiEvent.copy=function(e,t){\r
72462 e.altKey=t.altKey;\r
72463 e.ctrlKey=t.ctrlKey;\r
72464 e.metaKey=t.metaKey;\r
72465 e.shiftKey=t.shiftKey;\r
72466 e.target=t.target;\r
72467 e.type=t.type;\r
72468 e.dwtObj=t.dwtObj;\r
72469 e.docX=t.docX;\r
72470 e.docY=t.docY;\r
72471 e.elementX=t.elementX;\r
72472 e.elementY=t.elementY;\r
72473 e.ersatz=t.ersatz;\r
72474 e._stopPropagation=t._stopPropagation;\r
72475 e._returnValue=t._returnValue\r
72476 };\r
72477 DwtUiEvent.prototype.setFromDhtmlEvent=function(t,a){\r
72478 t=DwtUiEvent.getEvent(t);\r
72479 if(!t){\r
72480 return\r
72481 }\r
72482 this.altKey=t.altKey;\r
72483 this.ctrlKey=t.ctrlKey;\r
72484 this.metaKey=t.metaKey;\r
72485 this.shiftKey=t.shiftKey;\r
72486 this.type=t.type;\r
72487 this.target=DwtUiEvent.getTarget(t);\r
72488 this.dwtObj=(a===true)?DwtControl.getTargetControl(t):a;\r
72489 if(t.pageX!=null){\r
72490 this.docX=t.pageX;\r
72491 this.docY=t.pageY\r
72492 }else{\r
72493 if(t.clientX!=null){\r
72494 this.docX=t.clientX+document.body.scrollLeft-document.body.clientLeft;\r
72495 this.docY=t.clientY+document.body.scrollTop-document.body.clientTop;\r
72496 if(document.body.parentElement){\r
72497 var e=document.body.parentElement;\r
72498 this.docX+=e.scrollLeft-e.clientLeft;\r
72499 this.docY+=e.scrollTop-e.clientTop\r
72500 }}}\r
72501 if(t.offsetX!=null){\r
72502 this.elementX=t.offsetX;\r
72503 this.elementY=t.offsetY\r
72504 }else{\r
72505 if(t.layerX!=null){\r
72506 this.elementX=t.layerX;\r
72507 this.elementY=t.layerY\r
72508 }else{\r
72509 this.elementX=Dwt.DEFAULT;\r
72510 this.elementY=Dwt.DEFAULT\r
72511 }}\r
72512 this.ersatz=false;\r
72513 return t\r
72514 };\r
72515 DwtUiEvent.prototype.setToDhtmlEvent=function(e){\r
72516 DwtUiEvent.setBehaviour(e,this._stopPropagation,this._returnValue,this._dontCallPreventDefault)\r
72517 };\r
72518 DwtUiEvent.setBehaviour=function(n,e,t,a){\r
72519 var o=DwtUiEvent.getEvent(n);\r
72520 DwtUiEvent.setDhtmlBehaviour(o,e,t,a)\r
72521 };\r
72522 DwtUiEvent.setDhtmlBehaviour=function(o,e,t,a){\r
72523 o=o||window.event;\r
72524 if(o.stopPropagation!=null){\r
72525 if(e){\r
72526 o.stopPropagation()\r
72527 }\r
72528 if(!t&&!a){\r
72529 o.preventDefault()\r
72530 }}else{\r
72531 o.returnValue=t;\r
72532 o.cancelBubble=e\r
72533 }};\r
72534 DwtUiEvent.getDwtObjFromEvent=function(e,a){\r
72535 var t=DwtUiEvent.getTargetWithProp(e,"dwtObj",a);\r
72536 return t?Dwt.getObjectFromElement(t):null\r
72537 };\r
72538 DwtUiEvent.getDwtObjWithProp=function(e,a){\r
72539 var t=DwtUiEvent.getTargetWithProps(e,["dwtObj",a]);\r
72540 return t?Dwt.getObjectFromElement(t):null\r
72541 }\r
72542 }\r
72543 if(AjxPackage.define("ajax.dwt.events.DwtDisposeEvent")){\r
72544 DwtDisposeEvent=function(e){\r
72545 if(arguments.length==0){\r
72546 return\r
72547 }\r
72548 DwtEvent.call(this,true)\r
72549 };\r
72550 DwtDisposeEvent.prototype=new DwtEvent;\r
72551 DwtDisposeEvent.prototype.constructor=DwtDisposeEvent;\r
72552 DwtDisposeEvent.prototype.toString=function(){\r
72553 return"DwtDisposeEvent"\r
72554 }\r
72555 }\r
72556 if(AjxPackage.define("ajax.dwt.events.DwtControlEvent")){\r
72557 DwtControlEvent=function(){\r
72558 this.reset()\r
72559 };\r
72560 DwtControlEvent.prototype=new DwtEvent;\r
72561 DwtControlEvent.prototype.constructor=DwtControlEvent;\r
72562 DwtControlEvent.RESIZE=1;\r
72563 DwtControlEvent.MOVE=2;\r
72564 DwtControlEvent.prototype.toString=function(){\r
72565 return"DwtControlEvent"\r
72566 };\r
72567 DwtControlEvent.prototype.reset=function(e){\r
72568 this.oldX=Dwt.DEFAULT;\r
72569 this.oldY=Dwt.DEFAULT;\r
72570 this.oldWidth=Dwt.DEFAULT;\r
72571 this.oldHeight=Dwt.DEFAULT;\r
72572 this.newX=Dwt.DEFAULT;\r
72573 this.newY=Dwt.DEFAULT;\r
72574 this.newWidth=Dwt.DEFAULT;\r
72575 this.newHeight=Dwt.DEFAULT;\r
72576 this.type=e||null\r
72577 }\r
72578 }\r
72579 if(AjxPackage.define("ajax.dwt.events.DwtFocusEvent")){\r
72580 DwtFocusEvent=function(e){\r
72581 if(arguments.length==0){\r
72582 return\r
72583 }\r
72584 DwtEvent.call(this,true);\r
72585 this.reset()\r
72586 };\r
72587 DwtFocusEvent.prototype=new DwtEvent;\r
72588 DwtFocusEvent.prototype.constructor=DwtFocusEvent;\r
72589 DwtFocusEvent.FOCUS=1;\r
72590 DwtFocusEvent.BLUR=2;\r
72591 DwtFocusEvent.prototype.toString=function(){\r
72592 return"DwtFocusEvent"\r
72593 };\r
72594 DwtFocusEvent.prototype.reset=function(){\r
72595 this.dwtObj=null;\r
72596 this.state=DwtFocusEvent.FOCUS\r
72597 }\r
72598 }\r
72599 if(AjxPackage.define("ajax.dwt.events.DwtKeyEvent")){\r
72600 DwtKeyEvent=function(){\r
72601 DwtUiEvent.call(this,true);\r
72602 this.reset(true)\r
72603 };\r
72604 DwtKeyEvent.KEY_END_OF_TEXT=3;\r
72605 DwtKeyEvent.KEY_TAB=9;\r
72606 DwtKeyEvent.KEY_RETURN=13;\r
72607 DwtKeyEvent.KEY_ENTER=13;\r
72608 DwtKeyEvent.KEY_ESCAPE=27;\r
72609 DwtKeyEvent.MAC_FF_CODE={};\r
72610 DwtKeyEvent.MAC_FF_CODE["~"]=192;\r
72611 DwtKeyEvent.MAC_FF_CODE["!"]=49;\r
72612 DwtKeyEvent.MAC_FF_CODE["@"]=50;\r
72613 DwtKeyEvent.MAC_FF_CODE["#"]=51;\r
72614 DwtKeyEvent.MAC_FF_CODE["$"]=52;\r
72615 DwtKeyEvent.MAC_FF_CODE["%"]=53;\r
72616 DwtKeyEvent.MAC_FF_CODE["^"]=54;\r
72617 DwtKeyEvent.MAC_FF_CODE["&"]=55;\r
72618 DwtKeyEvent.MAC_FF_CODE["*"]=56;\r
72619 DwtKeyEvent.MAC_FF_CODE["("]=57;\r
72620 DwtKeyEvent.MAC_FF_CODE[")"]=48;\r
72621 DwtKeyEvent.MAC_FF_CODE["-"]=189;\r
72622 DwtKeyEvent.MAC_FF_CODE._=189;\r
72623 DwtKeyEvent.MAC_FF_CODE["+"]=187;\r
72624 DwtKeyEvent.MAC_FF_CODE["|"]=220;\r
72625 DwtKeyEvent.MAC_FF_CODE[":"]=186;\r
72626 DwtKeyEvent.MAC_FF_CODE["<"]=188;\r
72627 DwtKeyEvent.MAC_FF_CODE[">"]=190;\r
72628 DwtKeyEvent.MAC_FF_CODE["?"]=191;\r
72629 DwtKeyEvent.prototype=new DwtUiEvent;\r
72630 DwtKeyEvent.prototype.constructor=DwtKeyEvent;\r
72631 DwtKeyEvent.prototype.toString=function(){\r
72632 return"DwtKeyEvent"\r
72633 };\r
72634 DwtKeyEvent.isKeyEvent=function(e){\r
72635 return(e.type.search(/^key/i)!=-1)\r
72636 };\r
72637 DwtKeyEvent.isKeyPressEvent=function(e){\r
72638 return(AjxEnv.isIE&&e.type=="keydown")||(e.type=="keypress")\r
72639 };\r
72640 DwtKeyEvent.prototype.reset=function(e){\r
72641 if(!e){\r
72642 DwtUiEvent.prototype.reset.call(this)\r
72643 }\r
72644 this.keyCode=0;\r
72645 this.charCode=0\r
72646 };\r
72647 DwtKeyEvent.prototype.isCommand=function(e){\r
72648 return AjxEnv.isMac&&this.metaKey||this.ctrlKey\r
72649 };\r
72650 DwtKeyEvent.prototype.setFromDhtmlEvent=function(e,t){\r
72651 e=DwtUiEvent.prototype.setFromDhtmlEvent.apply(this,arguments);\r
72652 this.charCode=e.charCode||e.keyCode;\r
72653 this.keyCode=e.keyCode\r
72654 };\r
72655 DwtKeyEvent.getCharCode=function(t){\r
72656 t=DwtUiEvent.getEvent(t);\r
72657 var e=AjxEnv.isSafari?t.keyCode:(t.charCode||t.keyCode);\r
72658 if(e==0&&AjxEnv.isMac&&AjxEnv.isGeckoBased&&t.type=="keyup"&&DwtKeyEvent._geckoCode){\r
72659 e=DwtKeyEvent._geckoCode\r
72660 }\r
72661 return e\r
72662 };\r
72663 DwtKeyEvent.copy=function(e,t){\r
72664 DwtUiEvent.copy(e,t);\r
72665 e.charCode=t.charCode;\r
72666 e.keyCode=t.keyCode\r
72667 };\r
72668 DwtKeyEvent.geckoCheck=function(t){\r
72669 t=DwtUiEvent.getEvent(t);\r
72670 if(t.type=="keypress"){\r
72671 DwtKeyEvent._geckoCode=null;\r
72672 if(AjxEnv.isMac&&AjxEnv.isGeckoBased){\r
72673 var e=String.fromCharCode(t.charCode);\r
72674 DwtKeyEvent._geckoCode=DwtKeyEvent.MAC_FF_CODE[e]\r
72675 }}}\r
72676 }\r
72677 if(AjxPackage.define("ajax.dwt.events.DwtMouseEvent")){\r
72678 DwtMouseEvent=function(){\r
72679 DwtUiEvent.call(this,true);\r
72680 this.reset(true)\r
72681 };\r
72682 DwtMouseEvent.prototype=new DwtUiEvent;\r
72683 DwtMouseEvent.prototype.constructor=DwtMouseEvent;\r
72684 DwtMouseEvent.prototype.toString=function(){\r
72685 return"DwtMouseEvent"\r
72686 };\r
72687 DwtMouseEvent.NONE=0;\r
72688 DwtMouseEvent.LEFT=1;\r
72689 DwtMouseEvent.MIDDLE=2;\r
72690 DwtMouseEvent.RIGHT=3;\r
72691 DwtMouseEvent.prototype.reset=function(e){\r
72692 if(!e){\r
72693 DwtUiEvent.prototype.reset.call(this)\r
72694 }\r
72695 this.button=0;\r
72696 this._populated=false\r
72697 };\r
72698 DwtMouseEvent.prototype.setFromDhtmlEvent=function(e,t){\r
72699 e=DwtUiEvent.prototype.setFromDhtmlEvent.apply(this,arguments);\r
72700 if(e.which){\r
72701 switch(e.which){\r
72702 case 1:this.button=DwtMouseEvent.LEFT;\r
72703 break;\r
72704 case 2:this.button=DwtMouseEvent.MIDDLE;\r
72705 break;\r
72706 case 3:this.button=DwtMouseEvent.RIGHT;\r
72707 break;\r
72708 default:this.button=DwtMouseEvent.NONE\r
72709 }}else{\r
72710 if(e.button){\r
72711 if((e.button&1)!=0){\r
72712 this.button=DwtMouseEvent.LEFT\r
72713 }else{\r
72714 if((e.button&2)!=0){\r
72715 this.button=DwtMouseEvent.RIGHT\r
72716 }else{\r
72717 if((e.button&4)!=0){\r
72718 this.button=DwtMouseEvent.MIDDLE\r
72719 }else{\r
72720 this.button=DwtMouseEvent.NONE\r
72721 }}}}}\r
72722 if(AjxEnv.isMac&&this.button){\r
72723 if(this.ctrlKey&&(this.button==DwtMouseEvent.LEFT||this.button==DwtMouseEvent.RIGHT)){\r
72724 this.button=DwtMouseEvent.RIGHT;\r
72725 this.ctrlKey=false\r
72726 }\r
72727 if(this.altKey){\r
72728 this.ctrlKey=true;\r
72729 this.altKey=false\r
72730 }}}\r
72731 }\r
72732 if(AjxPackage.define("ajax.dwt.events.DwtMouseEventCapture")){\r
72733 DwtMouseEventCapture=function(e){\r
72734 e=Dwt.getParams(arguments,DwtMouseEventCapture.PARAMS);\r
72735 this.targetObj=e.targetObj;\r
72736 this._id=e.id;\r
72737 this._mouseOverHdlr=e.mouseOverHdlr||DwtMouseEventCapture.emptyHdlr;\r
72738 this._mouseDownHdlr=e.mouseDownHdlr||DwtMouseEventCapture.emptyHdlr;\r
72739 this._mouseMoveHdlr=e.mouseMoveHdlr||DwtMouseEventCapture.emptyHdlr;\r
72740 this._mouseUpHdlr=e.mouseUpHdlr||DwtMouseEventCapture.emptyHdlr;\r
72741 this._mouseOutHdlr=e.mouseOutHdlr||DwtMouseEventCapture.emptyHdlr;\r
72742 this._mouseWheelHdlr=e.mouseWheelHdlr||DwtMouseEventCapture.emptyHdlr;\r
72743 this._hardCapture=(e.hardCapture!==false)\r
72744 };\r
72745 DwtMouseEventCapture.PARAMS=["targetObj","id","mouseOverHdlr","mouseDownHdlr","mouseMoveHdlr","mouseUpHdlr","mouseOutHdlr","mouseWheelHdlr","hardCapture"];\r
72746 DwtMouseEventCapture._capturing=false;\r
72747 DwtMouseEventCapture.getCaptureObj=function(){\r
72748 return window._mouseEventCaptureObj\r
72749 };\r
72750 DwtMouseEventCapture.getTargetObj=function(){\r
72751 return window._mouseEventCaptureObj?window._mouseEventCaptureObj.targetObj:null\r
72752 };\r
72753 DwtMouseEventCapture.getId=function(){\r
72754 return window._mouseEventCaptureObj?window._mouseEventCaptureObj._id:null\r
72755 };\r
72756 DwtMouseEventCapture.prototype.toString=function(){\r
72757 return"DwtMouseEventCapture"\r
72758 };\r
72759 DwtMouseEventCapture.prototype.capturing=function(){\r
72760 return DwtMouseEventCapture._capturing\r
72761 };\r
72762 DwtMouseEventCapture.prototype.capture=function(){\r
72763 if(window._mouseEventCaptureObj){\r
72764 window._mouseEventCaptureObj.release()\r
72765 }\r
72766 if(document.body!=null&&document.body.addEventListener!=null){\r
72767 document.body.addEventListener("mouseover",this._mouseOverHdlr,true);\r
72768 document.body.addEventListener("mousedown",this._mouseDownHdlr,true);\r
72769 document.body.addEventListener("mousemove",this._mouseMoveHdlr,true);\r
72770 document.body.addEventListener("mouseup",this._mouseUpHdlr,true);\r
72771 document.body.addEventListener("mouseout",this._mouseOutHdlr,true);\r
72772 document.body.addEventListener("DOMMouseScroll",this._mouseWheelHdlr,true)\r
72773 }else{\r
72774 this._savedMouseOverHdlr=document.onmouseover;\r
72775 this._savedMouseDownHdlr=document.onmousedown;\r
72776 this._savedMouseMoveHdlr=document.onmousemove;\r
72777 this._savedMouseUpHdlr=document.onmouseup;\r
72778 this._savedMouseOutHdlr=document.onmouseout;\r
72779 this._savedMouseWheelHdlr=document.onmousewheel;\r
72780 document.onmouseover=this._mouseOverHdlr;\r
72781 document.onmousedown=this._mouseDownHdlr;\r
72782 document.onmousemove=this._mouseMoveHdlr;\r
72783 document.onmouseup=this._mouseUpHdlr;\r
72784 document.onmouseout=this._mouseOutHdlr;\r
72785 document.onmousewheel=this._mouseWheelHdlr\r
72786 }\r
72787 if(this._hardCapture&&document.body&&document.body.setCapture){\r
72788 document.body.setCapture()\r
72789 }\r
72790 window._mouseEventCaptureObj=this;\r
72791 DwtMouseEventCapture._capturing=true\r
72792 };\r
72793 DwtMouseEventCapture.prototype.release=function(){\r
72794 if(window._mouseEventCaptureObj==null){\r
72795 return\r
72796 }\r
72797 var e=window._shellCaptureObj;\r
72798 if(document.body&&document.body.addEventListener){\r
72799 document.body.removeEventListener("mouseover",this._mouseOverHdlr,true);\r
72800 document.body.removeEventListener("mousedown",this._mouseDownHdlr,true);\r
72801 document.body.removeEventListener("mousemove",this._mouseMoveHdlr,true);\r
72802 document.body.removeEventListener("mouseup",this._mouseUpHdlr,true);\r
72803 document.body.removeEventListener("mouseout",this._mouseOutHdlr,true);\r
72804 document.body.removeEventListener("DOMMouseScroll",this._mouseWheelHdlr,true)\r
72805 }else{\r
72806 document.onmouseover=this._savedMouseOverHdlr;\r
72807 document.onmousedown=this._savedMouseDownHdlr;\r
72808 document.onmousemove=this._savedMouseMoveHdlr;\r
72809 document.onmouseup=this._savedMouseUpHdlr;\r
72810 \r
72811 document.onmouseout=this._savedMouseOutHdlr;\r
72812 document.onmousewheel=this._savedMouseWheelHdlr\r
72813 }\r
72814 if(this._hardCapture&&document.body&&document.body.releaseCapture){\r
72815 document.body.releaseCapture()\r
72816 }\r
72817 window._mouseEventCaptureObj=null;\r
72818 DwtMouseEventCapture._capturing=false\r
72819 };\r
72820 DwtMouseEventCapture.emptyHdlr=function(t){\r
72821 var a=DwtMouseEventCapture.getCaptureObj();\r
72822 var e=DwtShell.mouseEvent;\r
72823 e.setFromDhtmlEvent(t);\r
72824 if(a._hardCapture){\r
72825 e._stopPropagation=true;\r
72826 e._returnValue=false;\r
72827 e.setToDhtmlEvent(t);\r
72828 return false\r
72829 }else{\r
72830 e._stopPropagation=false;\r
72831 e._returnValue=true;\r
72832 e.setToDhtmlEvent(t);\r
72833 return true\r
72834 }}\r
72835 }\r
72836 if(AjxPackage.define("ajax.dwt.events.DwtListViewActionEvent")){\r
72837 DwtListViewActionEvent=function(){\r
72838 DwtMouseEvent.call(this);\r
72839 this.reset(true)\r
72840 };\r
72841 DwtListViewActionEvent.prototype=new DwtMouseEvent;\r
72842 DwtListViewActionEvent.prototype.constructor=DwtListViewActionEvent;\r
72843 DwtListViewActionEvent.prototype.toString=function(){\r
72844 return"DwtListViewActionEvent"\r
72845 };\r
72846 DwtListViewActionEvent.prototype.reset=function(e){\r
72847 if(!e){\r
72848 DwtMouseEvent.prototype.reset.call(this)\r
72849 }\r
72850 this.field=null;\r
72851 this.item=null;\r
72852 this.detail=null\r
72853 }\r
72854 }\r
72855 if(AjxPackage.define("ajax.dwt.events.DwtSelectionEvent")){\r
72856 DwtSelectionEvent=function(e){\r
72857 if(arguments.length==0){\r
72858 return\r
72859 }\r
72860 DwtUiEvent.call(this,true);\r
72861 this.reset(true)\r
72862 };\r
72863 DwtSelectionEvent.prototype=new DwtUiEvent;\r
72864 DwtSelectionEvent.prototype.constructor=DwtSelectionEvent;\r
72865 DwtSelectionEvent.prototype.toString=function(){\r
72866 return"DwtSelectionEvent"\r
72867 };\r
72868 DwtSelectionEvent.prototype.reset=function(e){\r
72869 if(!e){\r
72870 DwtUiEvent.prototype.reset.call(this)\r
72871 }\r
72872 this.button=0;\r
72873 this.detail=null;\r
72874 this.item=null\r
72875 }\r
72876 }\r
72877 if(AjxPackage.define("ajax.dwt.events.DwtHtmlEditorStateEvent")){\r
72878 DwtHtmlEditorStateEvent=function(e){\r
72879 if(arguments.length==0){\r
72880 return\r
72881 }\r
72882 DwtEvent.call(this,true);\r
72883 this.reset()\r
72884 };\r
72885 DwtHtmlEditorStateEvent.prototype=new DwtEvent;\r
72886 DwtHtmlEditorStateEvent.prototype.constructor=DwtHtmlEditorStateEvent;\r
72887 DwtHtmlEditorStateEvent.prototype.toString=function(){\r
72888 return"DwtHtmlEditorStateEvent"\r
72889 };\r
72890 DwtHtmlEditorStateEvent.prototype.reset=function(){\r
72891 this.isBold=null;\r
72892 this.isItalic=null;\r
72893 this.isUnderline=null;\r
72894 this.isStrikeThru=null;\r
72895 this.isSuperscript=null;\r
72896 this.isSubscript=null;\r
72897 this.isOrderedList=null;\r
72898 this.isNumberedList=null;\r
72899 this.fontName=null;\r
72900 this.fontSize=null;\r
72901 this.style=null;\r
72902 this.backgroundColor=null;\r
72903 this.color=null;\r
72904 this.justification=null;\r
72905 this.direction=null\r
72906 }\r
72907 }\r
72908 if(AjxPackage.define("ajax.dwt.events.DwtTreeEvent")){\r
72909 DwtTreeEvent=function(){\r
72910 DwtSelectionEvent.call(this,true)\r
72911 };\r
72912 DwtTreeEvent.prototype=new DwtSelectionEvent;\r
72913 DwtTreeEvent.prototype.constructor=DwtTreeEvent;\r
72914 DwtTreeEvent.prototype.toString=function(){\r
72915 return"DwtTreeEvent"\r
72916 };\r
72917 DwtTreeEvent.prototype.setFromDhtmlEvent=function(e,t){\r
72918 e=DwtSelectionEvent.prototype.setFromDhtmlEvent.apply(this,arguments)\r
72919 }\r
72920 }\r
72921 if(AjxPackage.define("ajax.dwt.events.DwtHoverEvent")){\r
72922 DwtHoverEvent=function(o,a,t,e,n){\r
72923 if(arguments.length==0){\r
72924 return\r
72925 }\r
72926 DwtEvent.call(this,true);\r
72927 this.type=o;\r
72928 this.delay=a;\r
72929 this.object=t;\r
72930 this.x=e||-1;\r
72931 this.y=n||-1\r
72932 };\r
72933 DwtHoverEvent.prototype=new DwtEvent;\r
72934 DwtHoverEvent.prototype.constructor=DwtHoverEvent;\r
72935 DwtHoverEvent.prototype.reset=function(){\r
72936 this.type=0;\r
72937 this.delay=0;\r
72938 this.object=null;\r
72939 this.x=-1;\r
72940 this.y=-1\r
72941 }\r
72942 }\r
72943 if(AjxPackage.define("ajax.dwt.keyboard.DwtTabGroupEvent")){\r
72944 DwtTabGroupEvent=function(){\r
72945 this.tabGroup=null;\r
72946 this.newFocusMember=null\r
72947 };\r
72948 DwtTabGroupEvent.prototype.toString=function(){\r
72949 return"DwtTabGroupEvent"\r
72950 };\r
72951 DwtTabGroupEvent.prototype.reset=function(){\r
72952 this.tabGroup=null;\r
72953 this.newFocusMember=null\r
72954 }\r
72955 }\r
72956 if(AjxPackage.define("ajax.dwt.keyboard.DwtKeyMap")){\r
72957 DwtKeyMap=function(e){\r
72958 if(e){\r
72959 return\r
72960 }\r
72961 this._map={};\r
72962 this._args={};\r
72963 this._checkedMap={};\r
72964 this._repeat={};\r
72965 this._load(this._map,AjxKeys);\r
72966 DwtKeyMap.MOD_ORDER[DwtKeyMap.ALT]=1;\r
72967 DwtKeyMap.MOD_ORDER[DwtKeyMap.CTRL]=2;\r
72968 DwtKeyMap.MOD_ORDER[DwtKeyMap.META]=3;\r
72969 DwtKeyMap.MOD_ORDER[DwtKeyMap.SHIFT]=4\r
72970 };\r
72971 DwtKeyMap.deserialize=function(e){\r
72972 alert("DwtKeyMap.deserialize: NOT IMPLEMENTED")\r
72973 };\r
72974 DwtKeyMap.serialize=function(e){\r
72975 alert("DwtKeyMap.serialize: NOT IMPLEMENTED")\r
72976 };\r
72977 DwtKeyMap.MAP_NAME={};\r
72978 DwtKeyMap.MAP_NAME.dialog="DwtDialog";\r
72979 DwtKeyMap.MAP_NAME.button="DwtButton";\r
72980 DwtKeyMap.MAP_NAME.list="DwtListView";\r
72981 DwtKeyMap.MAP_NAME.menu="DwtMenu";\r
72982 DwtKeyMap.MAP_NAME.editor="DwtHtmlEditor";\r
72983 DwtKeyMap.MAP_NAME.toolbar="DwtToolBar";\r
72984 DwtKeyMap.MAP_NAME.toolbarHorizontal="DwtToolBar-horiz";\r
72985 DwtKeyMap.MAP_NAME.toolbarVertical="DwtToolBar-vert";\r
72986 DwtKeyMap.MAP_NAME.tabView="DwtTabView";\r
72987 DwtKeyMap.MAP_NAME.tree="DwtTreeItem";\r
72988 DwtKeyMap.MAP_NAME_R={};\r
72989 (function(){\r
72990 for(var e in DwtKeyMap.MAP_NAME){\r
72991 DwtKeyMap.MAP_NAME_R[DwtKeyMap.MAP_NAME[e]]=e\r
72992 }}\r
72993 )();\r
72994 DwtKeyMap.IS_MODIFIER={};\r
72995 DwtKeyMap.MOD_ORDER={};\r
72996 DwtKeyMap.ARROW_DOWN="ArrowDown";\r
72997 DwtKeyMap.ARROW_LEFT="ArrowLeft";\r
72998 DwtKeyMap.ARROW_RIGHT="ArrowRight";\r
72999 DwtKeyMap.ARROW_UP="ArrowUp";\r
73000 DwtKeyMap.BACKSLASH="Backslash";\r
73001 DwtKeyMap.BACKSPACE="Backspace";\r
73002 DwtKeyMap.COMMA="Comma";\r
73003 DwtKeyMap.SEMICOLON="Semicolon";\r
73004 DwtKeyMap.DELETE="Del";\r
73005 DwtKeyMap.END="End";\r
73006 DwtKeyMap.ENTER="Enter";\r
73007 DwtKeyMap.ESC="Esc";\r
73008 DwtKeyMap.HOME="Home";\r
73009 DwtKeyMap.PAGE_DOWN="PgDown";\r
73010 DwtKeyMap.PAGE_UP="PgUp";\r
73011 DwtKeyMap.SPACE="Space";\r
73012 DwtKeyMap.TAB="Tab";\r
73013 DwtKeyMap.ACTION="ContextMenu";\r
73014 DwtKeyMap.SELECT_CURRENT="SelectCurrent";\r
73015 DwtKeyMap.ADD_SELECT_NEXT="AddNext";\r
73016 DwtKeyMap.ADD_SELECT_PREV="AddPrevious";\r
73017 DwtKeyMap.CANCEL="Cancel";\r
73018 DwtKeyMap.COLLAPSE="Collapse";\r
73019 DwtKeyMap.DBLCLICK="DoubleClick";\r
73020 DwtKeyMap.EXPAND="Expand";\r
73021 DwtKeyMap.GOTO_TAB="GoToTab";\r
73022 DwtKeyMap.HEADER1="Header1";\r
73023 DwtKeyMap.HEADER2="Header2";\r
73024 DwtKeyMap.HEADER3="Header3";\r
73025 DwtKeyMap.HEADER4="Header4";\r
73026 DwtKeyMap.HEADER5="Header5";\r
73027 DwtKeyMap.HEADER6="Header6";\r
73028 DwtKeyMap.JUSTIFY_CENTER="CenterJustify";\r
73029 DwtKeyMap.JUSTIFY_LEFT="LeftJustify";\r
73030 DwtKeyMap.JUSTIFY_RIGHT="RightJustify";\r
73031 DwtKeyMap.NEXT="Next";\r
73032 DwtKeyMap.NEXT_TAB="NextTab";\r
73033 DwtKeyMap.NO="No";\r
73034 DwtKeyMap.PARENTMENU="ParentMenu";\r
73035 DwtKeyMap.PREV="Previous";\r
73036 DwtKeyMap.PREV_TAB="PreviousTab";\r
73037 DwtKeyMap.SELECT_ALL="SelectAll";\r
73038 DwtKeyMap.SELECT="Select";\r
73039 DwtKeyMap.SELECT_FIRST="SelectFirst";\r
73040 DwtKeyMap.SELECT_LAST="SelectLast";\r
73041 DwtKeyMap.SELECT_NEXT="SelectNext";\r
73042 DwtKeyMap.SELECT_PREV="SelectPrevious";\r
73043 DwtKeyMap.SUBMENU="SubMenu";\r
73044 DwtKeyMap.SWITCH_MODE="SwitchMode";\r
73045 DwtKeyMap.TEXT_BOLD="Bold";\r
73046 DwtKeyMap.TEXT_ITALIC="Italic";\r
73047 DwtKeyMap.TEXT_UNDERLINE="Underline";\r
73048 DwtKeyMap.TEXT_STRIKETHRU="Strikethru";\r
73049 DwtKeyMap.YES="Yes";\r
73050 DwtKeyMap.GOTO_TAB_RE=new RegExp(DwtKeyMap.GOTO_TAB+"(\\d+)");\r
73051 DwtKeyMap.JOIN="+";\r
73052 DwtKeyMap.SEP=",";\r
73053 DwtKeyMap.INHERIT="INHERIT";\r
73054 DwtKeyMap.prototype.getMap=function(){\r
73055 return this._map\r
73056 };\r
73057 DwtKeyMap.prototype._load=function(q,d,g){\r
73058 g=g||{};\r
73059 var w=AjxEnv.platform.toLowerCase();\r
73060 for(var c in d){\r
73061 var f=c.split(".");\r
73062 var h=f[f.length-1];\r
73063 if(h=="win"||h=="mac"||h=="linux"){\r
73064 if(h==w){\r
73065 var k=f.slice(0,f.length-1).join(".");\r
73066 d[k]=d[c]\r
73067 }\r
73068 d[c]=null\r
73069 }}\r
73070 for(var c in d){\r
73071 var s=AjxStringUtil.trim(d[c]);\r
73072 if(!s||(typeof d[c]!="string")){\r
73073 continue\r
73074 }\r
73075 var f=c.split(".");\r
73076 var e=f[f.length-1];\r
73077 var a=(f.length==2);\r
73078 var y=a?null:f[1];\r
73079 if(f[0]=="keys"){\r
73080 this._processKeyDef(y,e,s);\r
73081 continue\r
73082 }\r
73083 if(e!=DwtKeyMap.INHERIT&&e!="keycode"){\r
73084 continue\r
73085 }\r
73086 var m=DwtKeyMap.MAP_NAME[f[0]]||g[f[0]];\r
73087 if((this._checkedMap[m]===false)||(!this._checkedMap[m]&&!this._checkMap(m))){\r
73088 continue\r
73089 }\r
73090 if(!q[m]){\r
73091 q[m]={}\r
73092 }\r
73093 if(!this._checkAction(m,y)){\r
73094 continue\r
73095 }\r
73096 var o=s.split(/\s*;\s*/);\r
73097 for(var v=0;\r
73098 v<o.length;\r
73099 v++){\r
73100 var j=this._canonicalize(o[v]);\r
73101 if(e==DwtKeyMap.INHERIT){\r
73102 var x=j.split(/\s*,\s*/);\r
73103 var t=[];\r
73104 for(var u=0;\r
73105 u<x.length;\r
73106 u++){\r
73107 t[u]=DwtKeyMap.MAP_NAME[x[u]]||g[x[u]]\r
73108 }\r
73109 q[m][f[1]]=t.join(",")\r
73110 }else{\r
73111 if(e=="keycode"){\r
73112 q[m][j]=y\r
73113 }}}\r
73114 var n=[f[0],y,"repeat"].join(".");\r
73115 var r=d[n];\r
73116 if(r&&r.toLowerCase()!="false"){\r
73117 if(!this._repeat[m]){\r
73118 this._repeat[m]={}\r
73119 }\r
73120 this._repeat[m][y]=true\r
73121 }}};\r
73122 DwtKeyMap.prototype._checkMap=function(t){\r
73123 var e=true;\r
73124 this._checkedMap[t]=e;\r
73125 return e\r
73126 };\r
73127 DwtKeyMap.prototype._checkAction=function(e,t){\r
73128 return true\r
73129 };\r
73130 DwtKeyMap.prototype._processKeyDef=function(e,a,t){\r
73131 if(!e||!a||!t){\r
73132 return\r
73133 }\r
73134 if(a=="display"){\r
73135 DwtKeyMap[e.toUpperCase()]=t\r
73136 }else{\r
73137 if(a=="keycode"){\r
73138 DwtKeyMap.IS_MODIFIER[t]=true\r
73139 }}};\r
73140 DwtKeyMap.prototype._canonicalize=function(r){\r
73141 var n=r.split(DwtKeyMap.SEP);\r
73142 var e=[];\r
73143 for(var a=0;\r
73144 a<n.length;\r
73145 a++){\r
73146 var t=n[a];\r
73147 var s=t.split(DwtKeyMap.JOIN);\r
73148 if(s.length>2){\r
73149 var o=s.slice(0,s.length-1);\r
73150 o.sort(function(u,c){\r
73151 var d=DwtKeyMap.MOD_ORDER[u]||0;\r
73152 var h=DwtKeyMap.MOD_ORDER[c]||0;\r
73153 return Number(d-h)\r
73154 }\r
73155 );\r
73156 o.push(s[s.length-1]);\r
73157 e.push(o.join(DwtKeyMap.JOIN))\r
73158 }else{\r
73159 e.push(t)\r
73160 }}\r
73161 return e.join(",")\r
73162 }\r
73163 }\r
73164 if(AjxPackage.define("ajax.dwt.keyboard.DwtKeyMapMgr")){\r
73165 DwtKeyMapMgr=function(a){\r
73166 var t=this._map=a.getMap();\r
73167 this._repeat=a._repeat;\r
73168 this._args=a._args;\r
73169 this._fsas={};\r
73170 for(var e in t){\r
73171 this._fsas[e]=DwtKeyMapMgr.__buildFSA({}\r
73172 ,t[e],e)\r
73173 }};\r
73174 DwtKeyMapMgr.NOT_A_TERMINAL=-999;\r
73175 DwtKeyMapMgr.TAB_KEYCODE=9;\r
73176 DwtKeyMapMgr.prototype.toString=function(){\r
73177 return"DwtKeyMapMgr"\r
73178 };\r
73179 DwtKeyMapMgr.prototype.getActionCode=function(a,r,h){\r
73180 var e=this._fsas[r];\r
73181 if(!e){\r
73182 return null\r
73183 }\r
73184 var s=a.length;\r
73185 var d=e;\r
73186 var c;\r
73187 for(var t=0;\r
73188 t<s&&d;\r
73189 t++){\r
73190 c=a[t];\r
73191 if(!d||!d[c]){\r
73192 break\r
73193 }\r
73194 if(t<s-1){\r
73195 d=d[c].subMap\r
73196 }}\r
73197 if(d&&d[c]){\r
73198 var n=d[c];\r
73199 if(!n.subMap||h){\r
73200 var o=this.__getInheritedActionCode(a,e,h);\r
73201 return o==DwtKeyMapMgr.NOT_A_TERMINAL?DwtKeyMapMgr.NOT_A_TERMINAL:(n.actionCode||o)\r
73202 }else{\r
73203 return DwtKeyMapMgr.NOT_A_TERMINAL\r
73204 }}else{\r
73205 return this.__getInheritedActionCode(a,e,h)\r
73206 }};\r
73207 DwtKeyMapMgr.prototype.getAction=function(t,e){\r
73208 return this._map[t][e]\r
73209 };\r
73210 DwtKeyMapMgr.prototype.getKeySequences=function(t,a){\r
73211 var e=[];\r
73212 for(var o in this._map[t]){\r
73213 if(this._map[t][o]==a){\r
73214 e.push(o)\r
73215 }}\r
73216 return e\r
73217 };\r
73218 DwtKeyMapMgr.prototype.setMapping=function(t,e,a){\r
73219 this._map[t][e]=a\r
73220 };\r
73221 DwtKeyMapMgr.prototype.removeMapping=function(t,e){\r
73222 delete this._map[t][e]\r
73223 };\r
73224 DwtKeyMapMgr.prototype.replaceMapping=function(a,e,t){\r
73225 var o=this._map[a][e];\r
73226 if(!o){\r
73227 return\r
73228 }\r
73229 this.removeMapping(a,e);\r
73230 this.setMapping(a,t,o)\r
73231 };\r
73232 DwtKeyMapMgr.prototype.setArg=function(t,a,e){\r
73233 if(!this._args[t]){\r
73234 this._args[t]={}\r
73235 }\r
73236 this._args[t][a]=e\r
73237 };\r
73238 DwtKeyMapMgr.prototype.removeArg=function(e,t){\r
73239 delete this._args[e][t]\r
73240 };\r
73241 DwtKeyMapMgr.prototype.getArg=function(e,t){\r
73242 return this._args[e]?this._args[e][t]:null\r
73243 };\r
73244 DwtKeyMapMgr.prototype.reloadMap=function(e){\r
73245 this._fsas[e]=DwtKeyMapMgr.__buildFSA({}\r
73246 ,this._map[e],e)\r
73247 };\r
73248 DwtKeyMapMgr.prototype.getAncestors=function(o,n){\r
73249 n=n||[];\r
73250 var e=this._fsas[o];\r
73251 var t=e&&e.inherit;\r
73252 if(t&&t.length){\r
73253 for(var a=0;\r
73254 a<t.length;\r
73255 a++){\r
73256 n.push(t[a]);\r
73257 n=this.getAncestors(t[a],n)\r
73258 }}\r
73259 return n\r
73260 };\r
73261 DwtKeyMapMgr.isInputElement=function(a){\r
73262 if(!a){\r
73263 return false\r
73264 }\r
73265 var t=a.ownerDocument?a.ownerDocument.designMode:null;\r
73266 if(t&&(t.toLowerCase()=="on")){\r
73267 return true\r
73268 }\r
73269 var e=a.tagName.toUpperCase();\r
73270 return(e=="INPUT"||e=="TEXTAREA")\r
73271 };\r
73272 DwtKeyMapMgr.prototype.repeats=function(t,e){\r
73273 return this._repeat[t]&&this._repeat[t][e]\r
73274 };\r
73275 DwtKeyMapMgr.__buildFSA=function(c,e,n){\r
73276 for(var a in e){\r
73277 if(a==DwtKeyMap.INHERIT){\r
73278 c.inherit=e[a].split(/\s*,\s*/);\r
73279 continue\r
73280 }\r
73281 var o=a.split(DwtKeyMap.SEP);\r
73282 var s=o.length;\r
73283 var h=c;\r
73284 for(var t=0;\r
73285 t<s;\r
73286 t++){\r
73287 var r=o[t];\r
73288 if(!h[r]){\r
73289 h[r]={}\r
73290 }\r
73291 if(t==s-1){\r
73292 h[r].actionCode=e[a]\r
73293 }else{\r
73294 if(!h[r].subMap){\r
73295 h[r].subMap={}\r
73296 }\r
73297 h=h[r].subMap\r
73298 }}}\r
73299 return c\r
73300 };\r
73301 DwtKeyMapMgr.prototype.__getInheritedActionCode=function(s,t,n){\r
73302 if(t.inherit&&t.inherit.length){\r
73303 var o=null;\r
73304 var e=t.inherit.length;\r
73305 for(var a=0;\r
73306 a<e;\r
73307 a++){\r
73308 o=this.getActionCode(s,t.inherit[a],n);\r
73309 if(o!=null){\r
73310 return o\r
73311 }}}\r
73312 return null\r
73313 };\r
73314 DwtKeyMapMgr.hasModifier=function(e){\r
73315 return(e.altKey||e.ctrlKey||e.metaKey)\r
73316 }\r
73317 }\r
73318 if(AjxPackage.define("ajax.dwt.keyboard.DwtKeyboardMgr")){\r
73319 DwtKeyboardMgr=function(e){\r
73320 DwtKeyboardMgr.__shell=e;\r
73321 this.__tabGrpStack=[];\r
73322 this.__defaultHandlerStack=[];\r
73323 this.__tabGroupChangeListenerObj=new AjxListener(this,this.__tabGrpChangeListener);\r
73324 this.__kbEventStatus=DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED;\r
73325 this.__keyTimeout=750;\r
73326 this.__currTabGroup=null;\r
73327 this.__currDefaultHandler=null\r
73328 };\r
73329 DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED=1;\r
73330 DwtKeyboardMgr.__KEYSEQ_HANDLED=2;\r
73331 DwtKeyboardMgr.__KEYSEQ_PENDING=3;\r
73332 DwtKeyboardMgr.__KEYSEQ_REPEAT=4;\r
73333 DwtKeyboardMgr.FOCUS_FIELD_ID="kbff";\r
73334 DwtKeyboardMgr.isPossibleInputShortcut=function(e){\r
73335 var t=DwtUiEvent.getTarget(e);\r
73336 return(!DwtKeyMap.IS_MODIFIER[e.keyCode]&&(e.keyCode==27||DwtKeyMapMgr.hasModifier(e))||(t&&t.nodeName.toUpperCase()=="INPUT"&&(e.keyCode==13||e.keyCode==3)))\r
73337 };\r
73338 DwtKeyboardMgr.prototype.toString=function(){\r
73339 return"DwtKeyboardMgr"\r
73340 };\r
73341 DwtKeyboardMgr.prototype.pushTabGroup=function(t){\r
73342 if(!this.__keyboardHandlingInited||!t){\r
73343 return\r
73344 }\r
73345 this.__tabGrpStack.push(t);\r
73346 this.__currTabGroup=t;\r
73347 var e=t.getFocusMember();\r
73348 if(!e){\r
73349 e=t.resetFocusMember(true)\r
73350 }\r
73351 if(!e){\r
73352 return\r
73353 }\r
73354 t.addFocusChangeListener(this.__tabGroupChangeListenerObj);\r
73355 this.grabFocus(e)\r
73356 };\r
73357 DwtKeyboardMgr.prototype.popTabGroup=function(r){\r
73358 if(!this.__keyboardHandlingInited){\r
73359 return\r
73360 }\r
73361 if(!r){\r
73362 return\r
73363 }\r
73364 if(this.__tabGrpStack.length<=1){\r
73365 return null\r
73366 }\r
73367 if(r&&this.__tabGrpStack[this.__tabGrpStack.length-1]!=r){\r
73368 var t=this.__tabGrpStack;\r
73369 var e=t.length;\r
73370 for(var s=e-1;\r
73371 s>=0;\r
73372 s--){\r
73373 if(r==t[s]){\r
73374 t[s].dump();\r
73375 break\r
73376 }}\r
73377 if(s<0){\r
73378 return null\r
73379 }else{\r
73380 if(s!=e-1){\r
73381 t.splice(s,1);\r
73382 return r\r
73383 }}}\r
73384 var r=this.__tabGrpStack.pop();\r
73385 r.removeFocusChangeListener(this.__tabGroupChangeListenerObj);\r
73386 var n=null;\r
73387 if(this.__tabGrpStack.length>0){\r
73388 n=this.__tabGrpStack[this.__tabGrpStack.length-1];\r
73389 var o=n.getFocusMember();\r
73390 if(!o){\r
73391 o=n.resetFocusMember(true)\r
73392 }\r
73393 if(o){\r
73394 this.grabFocus(o)\r
73395 }}\r
73396 this.__currTabGroup=n;\r
73397 return r\r
73398 };\r
73399 DwtKeyboardMgr.prototype.setTabGroup=function(t){\r
73400 if(!this.__enabled||!this.__keyboardHandlingInited){\r
73401 return\r
73402 }\r
73403 var e=this.popTabGroup();\r
73404 this.pushTabGroup(t);\r
73405 return e\r
73406 };\r
73407 DwtKeyboardMgr.prototype.pushDefaultHandler=function(e){\r
73408 if(!this.__enabled||!this.__keyboardHandlingInited||!e){\r
73409 return\r
73410 }\r
73411 this.__defaultHandlerStack.push(e);\r
73412 this.__currDefaultHandler=e\r
73413 };\r
73414 DwtKeyboardMgr.prototype.popDefaultHandler=function(){\r
73415 if(!this.__keyboardHandlingInited||(this.__defaultHandlerStack.length<=1)){\r
73416 return\r
73417 }\r
73418 var e=this.__defaultHandlerStack.pop();\r
73419 this.__currDefaultHandler=this.__defaultHandlerStack[this.__defaultHandlerStack.length-1];\r
73420 return e\r
73421 };\r
73422 DwtKeyboardMgr.prototype.grabFocus=function(e){\r
73423 if(!this.__enabled){\r
73424 return\r
73425 }\r
73426 if(!this.__keyboardHandlingInited){\r
73427 return\r
73428 }\r
73429 if(!e){\r
73430 return\r
73431 }\r
73432 if(this.__currTabGroup){\r
73433 this.__currTabGroup.setFocusMember(e,false,true)\r
73434 }\r
73435 this.__doGrabFocus(e)\r
73436 };\r
73437 DwtKeyboardMgr.prototype.getFocusObj=function(e){\r
73438 return this.__focusObj\r
73439 };\r
73440 DwtKeyboardMgr.prototype.dwtControlHasFocus=function(e){\r
73441 if(!this.__enabled){\r
73442 return false\r
73443 }\r
73444 if(!this.__keyboardHandlingInited){\r
73445 return false\r
73446 }\r
73447 return(this.__dwtCtrlHasFocus&&this.__focusObj==e)\r
73448 };\r
73449 DwtKeyboardMgr.prototype.registerDefaultKeyActionHandler=function(e){\r
73450 if(!this.__enabled){\r
73451 return\r
73452 }\r
73453 this.__defaultKeyActionHdlr=e\r
73454 };\r
73455 DwtKeyboardMgr.prototype.registerKeyMap=function(e){\r
73456 if(!this.__checkStatus()){\r
73457 return\r
73458 }\r
73459 this.__keyMapMgr=new DwtKeyMapMgr(e)\r
73460 };\r
73461 DwtKeyboardMgr.prototype.setKeyTimeout=function(e){\r
73462 this.__keyTimeout=e\r
73463 };\r
73464 DwtKeyboardMgr.prototype.clearKeySeq=function(){\r
73465 this.__killKeySeqTimedActionId=-1;\r
73466 this.__keySequence.length=0\r
73467 };\r
73468 DwtKeyboardMgr.prototype.enable=function(e){\r
73469 this.__enabled=e;\r
73470 if(e){\r
73471 this.__checkStatus();\r
73472 Dwt.setHandler(document,DwtEvent.ONKEYDOWN,DwtKeyboardMgr.__keyDownHdlr);\r
73473 Dwt.setHandler(document,DwtEvent.ONKEYUP,DwtKeyboardMgr.__keyUpHdlr);\r
73474 Dwt.setHandler(document,DwtEvent.ONKEYPRESS,DwtKeyboardMgr.__keyPressHdlr)\r
73475 }else{\r
73476 Dwt.clearHandler(document,DwtEvent.ONKEYDOWN);\r
73477 Dwt.clearHandler(document,DwtEvent.ONKEYUP);\r
73478 Dwt.clearHandler(document,DwtEvent.ONKEYPRESS)\r
73479 }};\r
73480 DwtKeyboardMgr.prototype.isEnabled=function(){\r
73481 return this.__enabled\r
73482 };\r
73483 DwtKeyboardMgr.prototype.__initKeyboardHandling=function(){\r
73484 var e=this._kbFocusField=document.createElement("textarea");\r
73485 e.id=DwtKeyboardMgr.FOCUS_FIELD_ID;\r
73486 e.tabIndex=0;\r
73487 e.style.position=Dwt.ABSOLUTE_STYLE;\r
73488 e.style.top=e.style.left=Dwt.LOC_NOWHERE;\r
73489 e.onblur=DwtKeyboardMgr.__onBlurHdlr;\r
73490 e.onfocus=DwtKeyboardMgr.__onFocusHdlr;\r
73491 document.body.appendChild(e);\r
73492 this.__killKeySeqTimedAction=new AjxTimedAction(this,this.__killKeySequenceAction);\r
73493 this.__killKeySeqTimedActionId=-1;\r
73494 this.__keySequence=[];\r
73495 this.__keyboardHandlingInited=true\r
73496 };\r
73497 DwtKeyboardMgr.prototype.__checkStatus=function(){\r
73498 if(!this.__enabled){\r
73499 return false\r
73500 }\r
73501 if(!this.__keyboardHandlingInited){\r
73502 this.__initKeyboardHandling()\r
73503 }\r
73504 return true\r
73505 };\r
73506 DwtKeyboardMgr.prototype.__doGrabFocus=function(e){\r
73507 if(!e){\r
73508 return\r
73509 }\r
73510 var o=(Dwt.instanceOf(e,"DwtInputField")||Dwt.instanceOf(e,"DwtHtmlEditor")||Dwt.instanceOf(e,"DwtCheckbox")||Dwt.instanceOf(e,"DwtRadioButton"));\r
73511 if(o||!(e instanceof DwtControl)){\r
73512 if(this.__focusObj instanceof DwtControl&&!this.__dwtInputCtrl){\r
73513 this.__oldFocusObj=this.__focusObj\r
73514 }\r
73515 this.__focusObj=e;\r
73516 this.__dwtInputCtrl=o;\r
73517 var a=o?e.getInputElement():e;\r
73518 if((!AjxEnv.isIE&&e.focus)||(AjxEnv.isIE&&e.focus&&!a.disabled&&Dwt.getVisible(a))){\r
73519 try{\r
73520 e.focus()\r
73521 }\r
73522 catch(t){}}}else{\r
73523 if(this.__dwtCtrlHasFocus&&(this.__focusObj instanceof DwtControl)){\r
73524 DwtKeyboardMgr.__onBlurHdlr();\r
73525 this.__dwtCtrlHasFocus=true\r
73526 }\r
73527 this.__focusObj=e;\r
73528 this.__dwtInputCtrl=false;\r
73529 if(this.__dwtCtrlHasFocus){\r
73530 DwtKeyboardMgr.__onFocusHdlr()\r
73531 }else{\r
73532 DwtKeyboardMgr.__onFocusHdlr();\r
73533 this._kbFocusField.focus()\r
73534 }}};\r
73535 DwtKeyboardMgr.__onFocusHdlr=function(t){\r
73536 var a=DwtKeyboardMgr.__shell.getKeyboardMgr();\r
73537 a.__dwtCtrlHasFocus=true;\r
73538 var e=a.__focusObj;\r
73539 if(e&&e.__doFocus){\r
73540 e.__doFocus()\r
73541 }};\r
73542 DwtKeyboardMgr.__onBlurHdlr=function(t){\r
73543 var a=DwtKeyboardMgr.__shell.getKeyboardMgr();\r
73544 var e=a.__oldFocusObj||a.__focusObj;\r
73545 if(e&&e.__doBlur){\r
73546 e.__doBlur()\r
73547 }\r
73548 a.__oldFocusObj=null;\r
73549 a.__dwtCtrlHasFocus=false\r
73550 };\r
73551 DwtKeyboardMgr.__keyUpHdlr=function(e){\r
73552 e=DwtUiEvent.getEvent(e);\r
73553 DwtKeyboardMgr.__keyCode=null;\r
73554 if(AjxEnv.isMac&&AjxEnv.isGeckoBased&&e.keyCode==0){\r
73555 return DwtKeyboardMgr.__keyDownHdlr(e)\r
73556 }else{\r
73557 return DwtKeyboardMgr.__handleKeyEvent(e)\r
73558 }};\r
73559 DwtKeyboardMgr.__keyPressHdlr=function(e){\r
73560 e=DwtUiEvent.getEvent(e);\r
73561 if(DwtKeyboardMgr.__keyCode&&AjxEnv.isGeckoBased){\r
73562 return DwtKeyboardMgr.__keyDownHdlr(e)\r
73563 }else{\r
73564 return DwtKeyboardMgr.__handleKeyEvent(e)\r
73565 }};\r
73566 DwtKeyboardMgr.__handleKeyEvent=function(e){\r
73567 if(DwtKeyboardMgr.__shell._blockInput){\r
73568 return false\r
73569 }\r
73570 if(e.type=="keypress"){\r
73571 DwtKeyEvent.geckoCheck(e)\r
73572 }\r
73573 e=DwtUiEvent.getEvent(e,this);\r
73574 var a=DwtKeyboardMgr.__shell.getKeyboardMgr();\r
73575 var t=DwtShell.keyEvent;\r
73576 t.setFromDhtmlEvent(e);\r
73577 if(a.__kbEventStatus!=DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED){\r
73578 return a.__processKeyEvent(e,t,false)\r
73579 }};\r
73580 DwtKeyboardMgr.__syncFocus=function(t,e){\r
73581 if((e!=t._kbFocusField)&&t.__dwtCtrlHasFocus){\r
73582 DwtKeyboardMgr.__onBlurHdlr()\r
73583 }\r
73584 if(!t.__dwtCtrlHasFocus){\r
73585 if((e!=t.__focusObj)&&!t.__dwtInputCtrl){\r
73586 if(t.__currTabGroup&&t.__currTabGroup.setFocusMember(e)){\r
73587 t.__focusObj=e;\r
73588 t.__oldFocusObj=null\r
73589 }else{\r
73590 return false\r
73591 }}}\r
73592 return true\r
73593 };\r
73594 DwtKeyboardMgr.__keyDownHdlr=function(r){\r
73595 if(DwtKeyboardMgr.__shell._blockInput){\r
73596 return false\r
73597 }\r
73598 r=DwtUiEvent.getEvent(r,this);\r
73599 var e=DwtKeyboardMgr.__shell.getKeyboardMgr();\r
73600 if(!e||!e.__checkStatus()){\r
73601 return false\r
73602 }\r
73603 var d=DwtShell.keyEvent;\r
73604 d.setFromDhtmlEvent(r);\r
73605 var c=DwtKeyboardMgr.__keyCode||DwtKeyEvent.getCharCode(r);\r
73606 var h=(DwtKeyboardMgr.__keyCode!=null);\r
73607 DwtKeyboardMgr.__shell.getToolTip().popdown();\r
73608 var o=DwtKeyboardMgr.__syncFocus(e,d.target);\r
73609 if(!o){}\r
73610 if(c==DwtKeyMapMgr.TAB_KEYCODE){\r
73611 if(e.__currTabGroup&&!DwtKeyMapMgr.hasModifier(d)){\r
73612 if(!DwtMenu.menuShowing()){\r
73613 if(o||e.__currTabGroup.getFocusMember()){\r
73614 if(!d.shiftKey){\r
73615 e.__currTabGroup.getNextFocusMember(true)\r
73616 }else{\r
73617 e.__currTabGroup.getPrevFocusMember(true)\r
73618 }}else{\r
73619 e.__currTabGroup.resetFocusMember(true)\r
73620 }}\r
73621 return e.__processKeyEvent(r,d,false,DwtKeyboardMgr.__KEYSEQ_HANDLED)\r
73622 }else{\r
73623 return e.__processKeyEvent(r,d,true,DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED)\r
73624 }}else{\r
73625 if(e.__currTabGroup&&!o&&AjxEnv.isGecko&&d.target instanceof HTMLHtmlElement){\r
73626 e.__currTabGroup.resetFocusMember(true)\r
73627 }}\r
73628 if(e.__dwtCtrlHasFocus){\r
73629 e._kbFocusField.value=""\r
73630 }\r
73631 if(DwtKeyMap.IS_MODIFIER[c]||(!e.__dwtCtrlHasFocus&&(e.__killKeySeqTimedActionId==-1)&&DwtKeyMapMgr.isInputElement(d.target)&&!DwtKeyboardMgr.isPossibleInputShortcut(d))){\r
73632 return e.__processKeyEvent(r,d,true,DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED)\r
73633 }\r
73634 if(e.__killKeySeqTimedActionId!=-1){\r
73635 AjxTimedAction.cancelAction(e.__killKeySeqTimedActionId);\r
73636 e.__killKeySeqTimedActionId=-1\r
73637 }\r
73638 var t=[];\r
73639 if(d.altKey){\r
73640 t.push(DwtKeyMap.ALT)\r
73641 }\r
73642 if(d.ctrlKey){\r
73643 t.push(DwtKeyMap.CTRL)\r
73644 }\r
73645 if(d.metaKey){\r
73646 t.push(DwtKeyMap.META)\r
73647 }\r
73648 if(d.shiftKey){\r
73649 t.push(DwtKeyMap.SHIFT)\r
73650 }\r
73651 t.push(c);\r
73652 e.__keySequence[e.__keySequence.length]=t.join(DwtKeyMap.JOIN);\r
73653 var s=DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED;\r
73654 var a=e.__focusObj;\r
73655 if(a&&(a.handleKeyAction)&&(e.__dwtCtrlHasFocus||e.__dwtInputCtrl||(a.hasFocus&&a.hasFocus()))){\r
73656 s=e.__dispatchKeyEvent(a,d,false,h);\r
73657 while((s==DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED)&&a.parent&&a.parent.getKeyMapName){\r
73658 a=a.parent;\r
73659 s=e.__dispatchKeyEvent(a,d,false,h)\r
73660 }}\r
73661 if((s==DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED)&&e.__currDefaultHandler&&!(e.__currTabGroup&&e.__currTabGroup.isDefaultHandlingBlocked())){\r
73662 s=e.__dispatchKeyEvent(e.__currDefaultHandler,d,false,h)\r
73663 }\r
73664 e.__kbEventStatus=s;\r
73665 var n=(s==DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED);\r
73666 if(s!=DwtKeyboardMgr.__KEYSEQ_PENDING){\r
73667 e.clearKeySeq()\r
73668 }\r
73669 if(s==DwtKeyboardMgr.__KEYSEQ_REPEAT){\r
73670 DwtKeyboardMgr.__keyCode=c\r
73671 }\r
73672 return e.__processKeyEvent(r,d,n)\r
73673 };\r
73674 DwtKeyboardMgr.prototype.__dispatchKeyEvent=function(s,r,o,a){\r
73675 if(s&&s.handleKeyEvent){\r
73676 var h=s.handleKeyEvent(r);\r
73677 return h?DwtKeyboardMgr.__KEYSEQ_HANDLED:DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED\r
73678 }\r
73679 var n=(s&&s.getKeyMapName)?s.getKeyMapName():null;\r
73680 if(!n){\r
73681 return DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED\r
73682 }\r
73683 var t=this.__keyMapMgr.getActionCode(this.__keySequence,n,o);\r
73684 if(t==DwtKeyMapMgr.NOT_A_TERMINAL){\r
73685 this.__hdlr=s;\r
73686 this.__mapName=n;\r
73687 this.__ev=r;\r
73688 this.__killKeySeqTimedActionId=AjxTimedAction.scheduleAction(this.__killKeySeqTimedAction,this.__keyTimeout);\r
73689 return DwtKeyboardMgr.__KEYSEQ_PENDING\r
73690 }else{\r
73691 if(t!=null){\r
73692 if(!s.handleKeyAction){\r
73693 return DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED\r
73694 }\r
73695 if(!a&&this.__keyMapMgr.repeats(n,t)){\r
73696 if(AjxEnv.isGeckoBased){\r
73697 return DwtKeyboardMgr.__KEYSEQ_REPEAT\r
73698 }else{\r
73699 var e=s.handleKeyAction(t,r);\r
73700 return e?DwtKeyboardMgr.__KEYSEQ_REPEAT:DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED\r
73701 }}\r
73702 var e=s.handleKeyAction(t,r);\r
73703 return e?DwtKeyboardMgr.__KEYSEQ_HANDLED:DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED\r
73704 }else{\r
73705 return DwtKeyboardMgr.__KEYSEQ_NOT_HANDLED\r
73706 }}};\r
73707 DwtKeyboardMgr.prototype.__killKeySequenceAction=function(){\r
73708 this.__dispatchKeyEvent(this.__hdlr,this.__ev,true);\r
73709 this.clearKeySeq()\r
73710 };\r
73711 DwtKeyboardMgr.prototype.__tabGrpChangeListener=function(e){\r
73712 this.__doGrabFocus(e.newFocusMember)\r
73713 };\r
73714 DwtKeyboardMgr.prototype.__processKeyEvent=function(a,o,e,t){\r
73715 if(t){\r
73716 this.__kbEventStatus=t\r
73717 }\r
73718 o._stopPropagation=!e;\r
73719 o._returnValue=e;\r
73720 o.setToDhtmlEvent(a);\r
73721 return e\r
73722 }\r
73723 }\r
73724 if(AjxPackage.define("ajax.dwt.keyboard.DwtTabGroup")){\r
73725 DwtTabGroup=function(t,e){\r
73726 this.__members=new AjxVector();\r
73727 this.__parent=null;\r
73728 this.__name=t;\r
73729 this.__blockApplicationHandling=e;\r
73730 this.__currFocusMember=null;\r
73731 this.__evtMgr=new AjxEventMgr()\r
73732 };\r
73733 DwtTabGroup.NOT_ROOT_TABGROUP="NOT ROOT TAB GROUP";\r
73734 DwtTabGroup.__changeEvt=new DwtTabGroupEvent();\r
73735 DwtTabGroup.prototype.toString=function(){\r
73736 return"DwtTabGroup"\r
73737 };\r
73738 DwtTabGroup.prototype.getName=function(){\r
73739 return this.__name\r
73740 };\r
73741 DwtTabGroup.prototype.addFocusChangeListener=function(e){\r
73742 this.__checkRoot();\r
73743 this.__evtMgr.addListener(DwtEvent.STATE_CHANGE,e)\r
73744 };\r
73745 DwtTabGroup.prototype.removeFocusChangeListener=function(e){\r
73746 this.__checkRoot();\r
73747 this.__evtMgr.removeListener(DwtEvent.STATE_CHANGE,e)\r
73748 };\r
73749 DwtTabGroup.prototype.addMember=function(n,a){\r
73750 if(!n){\r
73751 return\r
73752 }\r
73753 var t=(n instanceof Array)?n:[n];\r
73754 for(var o=0,e=t.length;\r
73755 o<e;\r
73756 o++){\r
73757 this.__members.add(t[o],a);\r
73758 if(t[o] instanceof DwtTabGroup){\r
73759 t[o].newParent(this)\r
73760 }}};\r
73761 DwtTabGroup.prototype.addMemberAfter=function(e,t){\r
73762 this.addMember(e,this.__members.indexOf(t)+1)\r
73763 };\r
73764 DwtTabGroup.prototype.addMemberBefore=function(e,t){\r
73765 \r
73766 this.addMember(e,this.__members.indexOf(t))\r
73767 };\r
73768 DwtTabGroup.prototype.removeMember=function(a,e,t){\r
73769 return this.replaceMember(a,null,e,t)\r
73770 };\r
73771 DwtTabGroup.prototype.removeAllMembers=function(){\r
73772 this.__members.removeAll()\r
73773 };\r
73774 DwtTabGroup.prototype.replaceMember=function(n,s,c,r,e,o){\r
73775 var t=this.__getTabGroupForMember(n);\r
73776 if(!t){\r
73777 this.addMember(s);\r
73778 return null\r
73779 }\r
73780 var h=this.__getRootTabGroup();\r
73781 var a;\r
73782 if(e){\r
73783 a=e\r
73784 }else{\r
73785 if(h.__currFocusMember==n||((n instanceof DwtTabGroup)&&n.contains(h.__currFocusMember))){\r
73786 if(s){\r
73787 a=(s instanceof DwtTabGroup)?s.getFirstMember():s\r
73788 }else{\r
73789 a=this.__getPrevMember(n,c);\r
73790 if(!a){\r
73791 a=this.__getNextMember(n,c)\r
73792 }}}}\r
73793 if(a&&!o){\r
73794 h.__currFocusMember=a;\r
73795 if(!r){\r
73796 this.__notifyListeners(a)\r
73797 }}\r
73798 return s?this.__members.replaceObject(n,s):this.__members.remove(n)\r
73799 };\r
73800 DwtTabGroup.prototype.contains=function(e){\r
73801 return(Boolean(this.__getTabGroupForMember(e)))\r
73802 };\r
73803 DwtTabGroup.prototype.newParent=function(e){\r
73804 this.__parent=e\r
73805 };\r
73806 DwtTabGroup.prototype.getFirstMember=function(e){\r
73807 return this.__getLeftMostMember(e)\r
73808 };\r
73809 DwtTabGroup.prototype.getTabGroupMemberByName=function(t){\r
73810 var e=this.__members.getArray();\r
73811 for(var a=0;\r
73812 a<e.length;\r
73813 a++){\r
73814 var o=e[a];\r
73815 if(o instanceof DwtTabGroup&&o.getName()==t){\r
73816 return o\r
73817 }}};\r
73818 DwtTabGroup.prototype.getLastMember=function(e){\r
73819 return this.__getRightMostMember(e)\r
73820 };\r
73821 DwtTabGroup.prototype.getFocusMember=function(){\r
73822 this.__checkRoot();\r
73823 return this.__currFocusMember\r
73824 };\r
73825 DwtTabGroup.prototype.setFocusMember=function(o,e,t){\r
73826 this.__checkRoot();\r
73827 if(!this.__checkEnabled(o,e)){\r
73828 return false\r
73829 }\r
73830 var a=this.__getTabGroupForMember(o);\r
73831 if(a){\r
73832 this.__currFocusMember=o;\r
73833 if(!t){\r
73834 this.__notifyListeners(this.__currFocusMember)\r
73835 }\r
73836 return true\r
73837 }\r
73838 return false\r
73839 };\r
73840 DwtTabGroup.prototype.getNextFocusMember=function(e,t){\r
73841 this.__checkRoot();\r
73842 return this.__setFocusMember(true,e,t)\r
73843 };\r
73844 DwtTabGroup.prototype.getPrevFocusMember=function(e,t){\r
73845 this.__checkRoot();\r
73846 return this.__setFocusMember(false,e,t)\r
73847 };\r
73848 DwtTabGroup.prototype.resetFocusMember=function(t,a){\r
73849 this.__checkRoot();\r
73850 var e=this.__getLeftMostMember(t);\r
73851 if((e!=this.__currFocusMember)&&!a){\r
73852 this.__notifyListeners(this.__currFocusMember)\r
73853 }\r
73854 this.__currFocusMember=e;\r
73855 return this.__currFocusMember\r
73856 };\r
73857 DwtTabGroup.prototype.blockDefaultHandling=function(e){\r
73858 this.__blockDefaultHandling=blockDefaultHandling\r
73859 };\r
73860 DwtTabGroup.prototype.isDefaultHandlingBlocked=function(e){\r
73861 return this.__blockDefaultHandling\r
73862 };\r
73863 DwtTabGroup.prototype.dump=function(e){\r
73864 if(!window.AjxDebug&&window.DBG){\r
73865 return\r
73866 }\r
73867 this.__dump(this,e)\r
73868 };\r
73869 DwtTabGroup.prototype.size=function(){\r
73870 return this.__members.size()\r
73871 };\r
73872 DwtTabGroup.prototype.__getPrevMember=function(s,t){\r
73873 var e=this.__members.getArray();\r
73874 for(var o=this.__members.indexOf(s)-1;\r
73875 o>-1;\r
73876 o--){\r
73877 var n=e[o];\r
73878 if(!(n instanceof DwtTabGroup)){\r
73879 if(this.__checkEnabled(n,t)){\r
73880 return n\r
73881 }}else{\r
73882 n=n.__getRightMostMember(t);\r
73883 if(n&&this.__checkEnabled(n,t)){\r
73884 return n\r
73885 }}}\r
73886 return this.__parent?this.__parent.__getPrevMember(this,t):null\r
73887 };\r
73888 DwtTabGroup.prototype.__checkEnabled=function(t,e){\r
73889 if(!e){\r
73890 return true\r
73891 }\r
73892 if(!t||t.noTab){\r
73893 return false\r
73894 }\r
73895 if(t instanceof DwtControl){\r
73896 return(t.getEnabled()&&t.getVisible())\r
73897 }else{\r
73898 return !t.disabled&&Dwt.getVisible(t)\r
73899 }};\r
73900 DwtTabGroup.prototype.__getNextMember=function(r,t){\r
73901 var e=this.__members.getArray();\r
73902 var s=this.__members.size();\r
73903 for(var n=this.__members.indexOf(r)+1;\r
73904 n<s;\r
73905 n++){\r
73906 var o=e[n];\r
73907 if(!(o instanceof DwtTabGroup)){\r
73908 if(this.__checkEnabled(o,t)){\r
73909 return o\r
73910 }}else{\r
73911 o=o.__getLeftMostMember(t);\r
73912 if(o&&this.__checkEnabled(o,t)){\r
73913 return o\r
73914 }}}\r
73915 return this.__parent?this.__parent.__getNextMember(this,t):null\r
73916 };\r
73917 DwtTabGroup.prototype.__getRightMostMember=function(t){\r
73918 var e=this.__members.getArray();\r
73919 var n=null;\r
73920 for(var o=this.__members.size()-1;\r
73921 o>=0;\r
73922 o--){\r
73923 n=e[o];\r
73924 if(!(n instanceof DwtTabGroup)){\r
73925 if(this.__checkEnabled(n,t)){\r
73926 break\r
73927 }}else{\r
73928 n=n.__getRightMostMember(t);\r
73929 if(n&&this.__checkEnabled(n,t)){\r
73930 break\r
73931 }}}\r
73932 return(n&&this.__checkEnabled(n,t))?n:null\r
73933 };\r
73934 DwtTabGroup.prototype.__getLeftMostMember=function(t){\r
73935 var n=this.__members.size();\r
73936 var e=this.__members.getArray();\r
73937 var s=null;\r
73938 for(var o=0;\r
73939 o<n;\r
73940 o++){\r
73941 s=e[o];\r
73942 if(!(s instanceof DwtTabGroup)){\r
73943 if(this.__checkEnabled(s,t)){\r
73944 break\r
73945 }}else{\r
73946 s=s.__getLeftMostMember(t);\r
73947 if(s&&this.__checkEnabled(s,t)){\r
73948 break\r
73949 }}}\r
73950 return(s&&this.__checkEnabled(s,t))?s:null\r
73951 };\r
73952 DwtTabGroup.prototype.__notifyListeners=function(t){\r
73953 var a=this.__getRootTabGroup();\r
73954 if(a.__evtMgr){\r
73955 var e=DwtTabGroup.__changeEvt;\r
73956 e.reset();\r
73957 e.tabGroup=this;\r
73958 e.newFocusMember=t;\r
73959 a.__evtMgr.notifyListeners(DwtEvent.STATE_CHANGE,e)\r
73960 }};\r
73961 DwtTabGroup.prototype.__getRootTabGroup=function(){\r
73962 var e=this;\r
73963 while(e.__parent){\r
73964 e=e.__parent\r
73965 }\r
73966 return e\r
73967 };\r
73968 DwtTabGroup.prototype.__dump=function(n,t,h){\r
73969 h=h||0;\r
73970 var r="";\r
73971 for(var o=0;\r
73972 o<h;\r
73973 o++){\r
73974 r+="&nbsp;&nbsp;&nbsp;&nbsp;"\r
73975 }\r
73976 t=t||AjxDebug.DBG1;\r
73977 r+="&nbsp;&nbsp;&nbsp;&nbsp;";\r
73978 var s=n.__members.size();\r
73979 var e=n.__members.getArray();\r
73980 for(var o=0;\r
73981 o<s;\r
73982 o++){\r
73983 if(e[o] instanceof DwtTabGroup){\r
73984 n.__dump(e[o],t,h+1)\r
73985 }else{\r
73986 if(e[o].toString){}else{}}}};\r
73987 DwtTabGroup.prototype.__setFocusMember=function(n,t,a){\r
73988 if(!this.__currFocusMember){\r
73989 return this.resetFocusMember(t,a)\r
73990 }\r
73991 var o=this.__getTabGroupForMember(this.__currFocusMember);\r
73992 if(!o){\r
73993 return null\r
73994 }\r
73995 var e=(n)?o.__getNextMember(this.__currFocusMember,t):o.__getPrevMember(this.__currFocusMember,t);\r
73996 if(!e){\r
73997 e=(n)?this.__getLeftMostMember(t):this.__getRightMostMember(t);\r
73998 if(e==this.__currFocusMember){\r
73999 return null\r
74000 }}\r
74001 this.__currFocusMember=e;\r
74002 if(!a){\r
74003 this.__notifyListeners(this.__currFocusMember)\r
74004 }\r
74005 return this.__currFocusMember\r
74006 };\r
74007 DwtTabGroup.prototype.__getTabGroupForMember=function(s){\r
74008 if(!s){\r
74009 return null\r
74010 }\r
74011 var n=this.__members.size();\r
74012 var t=this.__members.getArray();\r
74013 var e;\r
74014 for(var o=0;\r
74015 o<n;\r
74016 o++){\r
74017 e=t[o];\r
74018 if(e==s){\r
74019 return this\r
74020 }else{\r
74021 if(e instanceof DwtTabGroup&&(e=e.__getTabGroupForMember(s))){\r
74022 return e\r
74023 }}}\r
74024 return null\r
74025 };\r
74026 DwtTabGroup.prototype.__checkRoot=function(){\r
74027 if(this.__parent){\r
74028 throw DwtTabGroup.NOT_ROOT_TABGROUP\r
74029 }}\r
74030 }\r
74031 if(AjxPackage.define("ajax.dwt.dnd.DwtDragEvent")){\r
74032 DwtDragEvent=function(){\r
74033 this.operation=null;\r
74034 this.srcControl=null;\r
74035 this.action=null;\r
74036 this.doIt=false;\r
74037 this.srcData=null\r
74038 };\r
74039 DwtDragEvent.DRAG_START=1;\r
74040 DwtDragEvent.SET_DATA=2;\r
74041 DwtDragEvent.DRAG_END=3;\r
74042 DwtDragEvent.DRAG_CANCEL=4\r
74043 }\r
74044 if(AjxPackage.define("ajax.dwt.dnd.DwtDragSource")){\r
74045 DwtDragSource=function(e){\r
74046 this.__supportedOps=e;\r
74047 this.__evtMgr=new AjxEventMgr()\r
74048 };\r
74049 DwtDragSource.__DRAG_LISTENER="DwtDragSource.__DRAG_LISTENER";\r
74050 DwtDragSource.__dragEvent=new DwtDragEvent();\r
74051 DwtDragSource.prototype.toString=function(){\r
74052 return"DwtDragSource"\r
74053 };\r
74054 DwtDragSource.prototype.addDragListener=function(e){\r
74055 this.__evtMgr.addListener(DwtDragSource.__DRAG_LISTENER,e)\r
74056 };\r
74057 DwtDragSource.prototype.removeDragListener=function(e){\r
74058 this.__evtMgr.removeListener(DwtDragSource.__DRAG_LISTENER,e)\r
74059 };\r
74060 DwtDragSource.prototype._beginDrag=function(e,t){\r
74061 if(!(this.__supportedOps&e)){\r
74062 return Dwt.DND_DROP_NONE\r
74063 }\r
74064 DwtDragSource.__dragEvent.operation=e;\r
74065 DwtDragSource.__dragEvent.srcControl=t;\r
74066 DwtDragSource.__dragEvent.action=DwtDragEvent.DRAG_START;\r
74067 DwtDragSource.__dragEvent.srcData=null;\r
74068 DwtDragSource.__dragEvent.doit=true;\r
74069 this.__evtMgr.notifyListeners(DwtDragSource.__DRAG_LISTENER,DwtDragSource.__dragEvent);\r
74070 return DwtDragSource.__dragEvent.operation\r
74071 };\r
74072 DwtDragSource.prototype._getData=function(){\r
74073 DwtDragSource.__dragEvent.action=DwtDragEvent.SET_DATA;\r
74074 this.__evtMgr.notifyListeners(DwtDragSource.__DRAG_LISTENER,DwtDragSource.__dragEvent);\r
74075 return DwtDragSource.__dragEvent.srcData\r
74076 };\r
74077 DwtDragSource.prototype._endDrag=function(){\r
74078 DwtDragSource.__dragEvent.action=DwtDragEvent.DRAG_END;\r
74079 DwtDragSource.__dragEvent.doit=false;\r
74080 this.__evtMgr.notifyListeners(DwtDragSource.__DRAG_LISTENER,DwtDragSource.__dragEvent);\r
74081 return DwtDragSource.__dragEvent.doit\r
74082 };\r
74083 DwtDragSource.prototype._cancelDrag=function(){\r
74084 DwtDragSource.__dragEvent.action=DwtDragEvent.DRAG_CANCEL;\r
74085 DwtDragSource.__dragEvent.doit=false;\r
74086 this.__evtMgr.notifyListeners(DwtDragSource.__DRAG_LISTENER,DwtDragSource.__dragEvent);\r
74087 return DwtDragSource.__dragEvent.doit\r
74088 }\r
74089 }\r
74090 if(AjxPackage.define("ajax.dwt.dnd.DwtDropEvent")){\r
74091 DwtDropEvent=function(){\r
74092 this.operation=null;\r
74093 this.targetControl=null;\r
74094 this.action=null;\r
74095 this.srcData=null;\r
74096 this.doIt=false\r
74097 };\r
74098 DwtDropEvent.DRAG_ENTER=1;\r
74099 DwtDropEvent.DRAG_LEAVE=2;\r
74100 DwtDropEvent.DRAG_OP_CHANGED=3;\r
74101 DwtDropEvent.DRAG_DROP=4\r
74102 }\r
74103 if(AjxPackage.define("ajax.dwt.dnd.DwtDropTarget")){\r
74104 DwtDropTarget=function(t){\r
74105 this._evtMgr=new AjxEventMgr();\r
74106 this.__hasMultiple=false;\r
74107 this._types={};\r
74108 if(typeof t=="string"){\r
74109 t=[t]\r
74110 }\r
74111 if(t&&t.length){\r
74112 for(var e=0;\r
74113 e<t.length;\r
74114 e++){\r
74115 this.addTransferType(t[e])\r
74116 }}};\r
74117 DwtDropTarget.__DROP_LISTENER="DwtDropTarget.__DROP_LISTENER";\r
74118 DwtDropTarget.__dropEvent=new DwtDropEvent();\r
74119 DwtDropTarget.prototype.toString=function(){\r
74120 return"DwtDropTarget"\r
74121 };\r
74122 DwtDropTarget.prototype.addDropListener=function(e){\r
74123 this._evtMgr.addListener(DwtDropTarget.__DROP_LISTENER,e)\r
74124 };\r
74125 DwtDropTarget.prototype.removeDropListener=function(e){\r
74126 this._evtMgr.removeListener(DwtDropTarget.__DROP_LISTENER,e)\r
74127 };\r
74128 DwtDropTarget.prototype.isValidTarget=function(t){\r
74129 if(t instanceof Array){\r
74130 var e=t.length;\r
74131 for(var a=0;\r
74132 a<e;\r
74133 a++){\r
74134 if(!this.__checkTarget(t[a])){\r
74135 return false\r
74136 }}\r
74137 return true\r
74138 }else{\r
74139 return this.__checkTarget(t)\r
74140 }};\r
74141 DwtDropTarget.prototype.markAsMultiple=function(){\r
74142 this.__hasMultiple=true\r
74143 };\r
74144 DwtDropTarget.prototype.hasMultipleTargets=function(){\r
74145 return this.__hasMultiple\r
74146 };\r
74147 DwtDropTarget.prototype.getTransferTypes=function(){\r
74148 return this._types\r
74149 };\r
74150 DwtDropTarget.prototype.addTransferType=function(e){\r
74151 this._types[e]=null\r
74152 };\r
74153 DwtDropTarget.prototype._dragEnter=function(e,a,n,t,o){\r
74154 DwtDropTarget.__dropEvent.operation=e;\r
74155 DwtDropTarget.__dropEvent.targetControl=a;\r
74156 DwtDropTarget.__dropEvent.action=DwtDropEvent.DRAG_ENTER;\r
74157 DwtDropTarget.__dropEvent.srcData=n;\r
74158 DwtDropTarget.__dropEvent.uiEvent=t;\r
74159 DwtDropTarget.__dropEvent.doIt=true;\r
74160 DwtDropTarget.__dropEvent.dndProxy=o;\r
74161 this._evtMgr.notifyListeners(DwtDropTarget.__DROP_LISTENER,DwtDropTarget.__dropEvent);\r
74162 return DwtDropTarget.__dropEvent.doIt\r
74163 };\r
74164 DwtDropTarget.prototype._dragLeave=function(){\r
74165 DwtDropTarget.__dropEvent.action=DwtDropEvent.DRAG_LEAVE;\r
74166 this._evtMgr.notifyListeners(DwtDropTarget.__DROP_LISTENER,DwtDropTarget.__dropEvent)\r
74167 };\r
74168 DwtDropTarget.prototype._dragOpChanged=function(e){\r
74169 DwtDropTarget.__dropEvent.operation=e;\r
74170 DwtDropTarget.__dropEvent.action=DwtDropEvent.DRAG_OP_CHANGED;\r
74171 this._evtMgr.notifyListeners(DwtDropTarget.__DROP_LISTENER,DwtDropTarget.__dropEvent);\r
74172 return DwtDropTarget.__dropEvent.doIt\r
74173 };\r
74174 DwtDropTarget.prototype._drop=function(t,e){\r
74175 DwtDropTarget.__dropEvent.action=DwtDropEvent.DRAG_DROP;\r
74176 DwtDropTarget.__dropEvent.srcData=t;\r
74177 DwtDropTarget.__dropEvent.uiEvent=e;\r
74178 this._evtMgr.notifyListeners(DwtDropTarget.__DROP_LISTENER,DwtDropTarget.__dropEvent);\r
74179 return DwtDropTarget.__dropEvent.doIt\r
74180 };\r
74181 DwtDropTarget.prototype.__checkTarget=function(item){\r
74182 if(this._types){\r
74183 for(var i in this._types){\r
74184 var ctor;\r
74185 if(this._types[i]){\r
74186 ctor=this._types[i]\r
74187 }else{\r
74188 ctor=this._types[i]=eval(i)\r
74189 }\r
74190 if(ctor&&(typeof ctor=="function")&&(item instanceof ctor)){\r
74191 return true\r
74192 }}\r
74193 return false\r
74194 }}\r
74195 }\r
74196 if(AjxPackage.define("ajax.dwt.widgets.DwtHoverMgr")){\r
74197 DwtHoverMgr=function(){\r
74198 this._hoverOverAction=new AjxTimedAction(this,this._notifyHoverOver);\r
74199 this._hoverOutAction=new AjxTimedAction(this,this._notifyHoverOut)\r
74200 };\r
74201 DwtHoverMgr.prototype._hoverObject;\r
74202 DwtHoverMgr.prototype._hoverOverDelay=750;\r
74203 DwtHoverMgr.prototype._hoverOverData;\r
74204 DwtHoverMgr.prototype._hoverOverAction;\r
74205 DwtHoverMgr.prototype._hoverOverActionId=-1;\r
74206 DwtHoverMgr.prototype._hoverOverListener;\r
74207 DwtHoverMgr.prototype._hoverOutDelay=50;\r
74208 DwtHoverMgr.prototype._hoverOutData;\r
74209 DwtHoverMgr.prototype._hoverOutAction;\r
74210 DwtHoverMgr.prototype._hoverOutActionId=-1;\r
74211 DwtHoverMgr.prototype._hoverOutListener;\r
74212 DwtHoverMgr.prototype._isHovering=false;\r
74213 DwtHoverMgr.prototype.setHoverObject=function(e){\r
74214 this._hoverObject=e\r
74215 };\r
74216 DwtHoverMgr.prototype.getHoverObject=function(){\r
74217 return this._hoverObject\r
74218 };\r
74219 DwtHoverMgr.prototype.reset=function(){\r
74220 this._hoverObject=null;\r
74221 this._hoverOverDelay=DwtHoverMgr.prototype._hoverOverDelay;\r
74222 this._hoverOverData=null;\r
74223 if(this._hoverOverActionId!=-1){\r
74224 AjxTimedAction.cancelAction(this._hoverOverActionId)\r
74225 }\r
74226 this._hoverOverActionId=-1;\r
74227 this._hoverOverListener=null;\r
74228 this._hoverOutDelay=DwtHoverMgr.prototype._hoverOutDelay;\r
74229 this._hoverOutData=null;\r
74230 if(this._hoverOutActionId!=-1){\r
74231 AjxTimedAction.cancelAction(this._hoverOutActionId);\r
74232 this._notifyHoverOut()\r
74233 }\r
74234 this._hoverOutActionId=-1;\r
74235 this._hoverOutListener=null\r
74236 };\r
74237 DwtHoverMgr.prototype.isHovering=function(){\r
74238 return this._isHovering\r
74239 };\r
74240 DwtHoverMgr.prototype.setHoverOverDelay=function(e){\r
74241 this._hoverOverDelay=e\r
74242 };\r
74243 DwtHoverMgr.prototype.setHoverOverData=function(e){\r
74244 this._hoverOverData=e\r
74245 };\r
74246 DwtHoverMgr.prototype.setHoverOverListener=function(e){\r
74247 this._hoverOverListener=e\r
74248 };\r
74249 DwtHoverMgr.prototype.setHoverOutDelay=function(e){\r
74250 this._hoverOutDelay=e\r
74251 };\r
74252 DwtHoverMgr.prototype.setHoverOutData=function(e){\r
74253 this._hoverOutData=e\r
74254 };\r
74255 DwtHoverMgr.prototype.setHoverOutListener=function(e){\r
74256 this._hoverOutListener=e\r
74257 };\r
74258 DwtHoverMgr.prototype.hoverOver=function(e,t){\r
74259 this._isHovering=true;\r
74260 if(this._hoverOverActionId!=-1){\r
74261 AjxTimedAction.cancelAction(this._hoverOverActionId)\r
74262 }\r
74263 this._hoverOverAction.args=[e,t];\r
74264 this._hoverOverActionId=AjxTimedAction.scheduleAction(this._hoverOverAction,this._hoverOverDelay)\r
74265 };\r
74266 DwtHoverMgr.prototype.hoverOut=function(){\r
74267 this._isHovering=false;\r
74268 if(this._hoverOverActionId!=-1){\r
74269 AjxTimedAction.cancelAction(this._hoverOverActionId)\r
74270 }\r
74271 if(this._hoverOutActionId==-1){\r
74272 if(this._hoverOutDelay>0){\r
74273 this._hoverOutActionId=AjxTimedAction.scheduleAction(this._hoverOutAction,this._hoverOutDelay)\r
74274 }else{\r
74275 this._notifyHoverOut()\r
74276 }}};\r
74277 DwtHoverMgr.prototype._notifyHoverOver=function(){\r
74278 this._hoverOverActionId=-1;\r
74279 if(this._hoverOverListener!=null){\r
74280 var e=this._hoverOverAction.args[0];\r
74281 var a=this._hoverOverAction.args[1];\r
74282 var t=new DwtHoverEvent(DwtEvent.HOVEROVER,this._hoverOverDelay,this._hoverOverData,e,a);\r
74283 this._hoverOverListener.handleEvent(t)\r
74284 }};\r
74285 DwtHoverMgr.prototype._notifyHoverOut=function(){\r
74286 this._hoverOutActionId=-1;\r
74287 if(this._hoverOutListener!=null){\r
74288 var e=new DwtHoverEvent(DwtEvent.HOVEROUT,this._hoverOutDelay,this._hoverOutData);\r
74289 this._hoverOutListener.handleEvent(e)\r
74290 }}\r
74291 }\r
74292 if(AjxPackage.define("ajax.dwt.widgets.DwtControl")){\r
74293 DwtControl=function(t){\r
74294 if(arguments.length==0){\r
74295 return\r
74296 }\r
74297 t=Dwt.getParams(arguments,DwtControl.PARAMS);\r
74298 var e=this.parent=t.parent;\r
74299 if(e&&!(e instanceof DwtComposite)){\r
74300 throw new DwtException("Parent must be a subclass of Composite",DwtException.INVALIDPARENT,"DwtControl")\r
74301 }\r
74302 this.shell=null;\r
74303 this._data={};\r
74304 this._eventMgr=new AjxEventMgr();\r
74305 this._disposed=false;\r
74306 if(!e){\r
74307 return\r
74308 }\r
74309 this._className=t.className||"DwtControl";\r
74310 this.__posStyle=t.posStyle;\r
74311 if(t.id){\r
74312 this._htmlElId=t.id\r
74313 }\r
74314 this.__index=t.index;\r
74315 this.__parentElement=t.parentElement;\r
74316 this._enabled=false;\r
74317 this._dragging=null;\r
74318 this._dndProxy=null;\r
74319 this._hasFocus=false;\r
74320 if(!t.deferred){\r
74321 this.__initCtrl()\r
74322 }\r
74323 this._hoverOverListener=new AjxListener(this,this.__handleHoverOver);\r
74324 this._hoverOutListener=new AjxListener(this,this.__handleHoverOut);\r
74325 this._dblClickIsolation=false;\r
74326 this._ignoreInternalOverOut=false;\r
74327 this.TEMPLATE=t.template||this.TEMPLATE\r
74328 };\r
74329 DwtControl.PARAMS=["parent","className","posStyle","deferred","id","index","template"];\r
74330 DwtControl.ALL_BY_ID={};\r
74331 DwtControl.prototype.toString=function(){\r
74332 return"DwtControl"\r
74333 };\r
74334 DwtControl.NORMAL="";\r
74335 DwtControl.ACTIVE="ZActive";\r
74336 DwtControl.FOCUSED="ZFocused";\r
74337 DwtControl.DISABLED="ZDisabled";\r
74338 DwtControl.HOVER="ZHover";\r
74339 DwtControl.SELECTED="ZSelected";\r
74340 DwtControl.DEFAULT="ZDefault";\r
74341 DwtControl.ERROR="ZError";\r
74342 DwtControl._RE_STATES=new RegExp("\\b("+[DwtControl.ACTIVE,DwtControl.FOCUSED,DwtControl.DISABLED,DwtControl.HOVER,DwtControl.SELECTED,DwtControl.DEFAULT,DwtControl.ERROR].join("|")+")\\b","g");\r
74343 DwtControl.STATIC_STYLE=Dwt.STATIC_STYLE;\r
74344 DwtControl.ABSOLUTE_STYLE=Dwt.ABSOLUTE_STYLE;\r
74345 DwtControl.RELATIVE_STYLE=Dwt.RELATIVE_STYLE;\r
74346 DwtControl.FIXED_STYLE=Dwt.FIXED_STYLE;\r
74347 DwtControl.CLIP=Dwt.CLIP;\r
74348 DwtControl.VISIBLE=Dwt.VISIBLE;\r
74349 DwtControl.SCROLL=Dwt.SCROLL;\r
74350 DwtControl.FIXED_SCROLL=Dwt.FIXED_SCROLL;\r
74351 DwtControl.DEFAULT=Dwt.DEFAULT;\r
74352 DwtControl._NO_DRAG=1;\r
74353 DwtControl._DRAGGING=2;\r
74354 DwtControl._DRAG_REJECTED=3;\r
74355 DwtControl.__DRAG_THRESHOLD=3;\r
74356 DwtControl.__TOOLTIP_THRESHOLD=5;\r
74357 DwtControl.__DND_HOVER_DELAY=750;\r
74358 DwtControl.__controlEvent=new DwtControlEvent();\r
74359 DwtControl.__DBL_CLICK_TIMEOUT=300;\r
74360 DwtControl.prototype._displayState="";\r
74361 DwtControl.prototype.addControlListener=function(e){\r
74362 this.addListener(DwtEvent.CONTROL,e)\r
74363 };\r
74364 DwtControl.prototype.removeControlListener=function(e){\r
74365 this.removeListener(DwtEvent.CONTROL,e)\r
74366 };\r
74367 DwtControl.prototype.addDisposeListener=function(e){\r
74368 this.addListener(DwtEvent.DISPOSE,e)\r
74369 };\r
74370 DwtControl.prototype.removeDisposeListener=function(e){\r
74371 this.removeListener(DwtEvent.DISPOSE,e)\r
74372 };\r
74373 DwtControl.prototype.addListener=function(t,a,e){\r
74374 return this._eventMgr.addListener(t,a,e)\r
74375 };\r
74376 DwtControl.prototype.removeListener=function(e,t){\r
74377 return this._eventMgr.removeListener(e,t)\r
74378 };\r
74379 DwtControl.prototype.removeAllListeners=function(e){\r
74380 return this._eventMgr.removeAll(e)\r
74381 };\r
74382 DwtControl.prototype.isListenerRegistered=function(e){\r
74383 return this._eventMgr.isListenerRegistered(e)\r
74384 };\r
74385 DwtControl.prototype.notifyListeners=function(e,t){\r
74386 return this._eventMgr.notifyListeners(e,t)\r
74387 };\r
74388 DwtControl.prototype.dispose=function(){\r
74389 if(this._disposed){\r
74390 return\r
74391 }\r
74392 if(this.parent!=null&&this.parent instanceof DwtComposite){\r
74393 this.parent.removeChild(this)\r
74394 }\r
74395 this._elRef=null;\r
74396 if(DwtControl.ALL_BY_ID){\r
74397 DwtControl.ALL_BY_ID[this._htmlElId]=null;\r
74398 delete DwtControl.ALL_BY_ID[this._htmlElId]\r
74399 }\r
74400 this._disposed=true;\r
74401 var e=new DwtDisposeEvent();\r
74402 e.dwtObj=this;\r
74403 this.notifyListeners(DwtEvent.DISPOSE,e)\r
74404 };\r
74405 DwtControl.prototype.getDocument=function(){\r
74406 return document\r
74407 };\r
74408 DwtControl.prototype.getTabGroupMember=function(){\r
74409 return this\r
74410 };\r
74411 DwtControl.prototype.getData=function(e){\r
74412 return this._data[e]\r
74413 };\r
74414 DwtControl.prototype.setData=function(e,t){\r
74415 this._data[e]=t\r
74416 };\r
74417 DwtControl.prototype.isDisposed=function(){\r
74418 return this._isDisposed\r
74419 };\r
74420 DwtControl.prototype.isInitialized=function(){\r
74421 return this.__ctrlInited\r
74422 };\r
74423 DwtControl.prototype.focus=function(){\r
74424 DwtShell.getShell(window).getKeyboardMgr().grabFocus(this)\r
74425 };\r
74426 DwtControl.prototype.hasFocus=function(){\r
74427 return this._hasFocus\r
74428 };\r
74429 DwtControl.prototype.handleKeyAction=function(e,t){\r
74430 return false\r
74431 };\r
74432 DwtControl.prototype.reparent=function(t,e){\r
74433 if(!this._checkState()){\r
74434 return\r
74435 }\r
74436 var a=this.getHtmlElement();\r
74437 this.parent.removeChild(this,true);\r
74438 DwtComposite._pendingElements[this._htmlElId]=a;\r
74439 t.addChild(this,e);\r
74440 this.parent=t\r
74441 };\r
74442 DwtControl.prototype.reparentHtmlElement=function(a,e){\r
74443 if(typeof a=="string"){\r
74444 a=document.getElementById(a)\r
74445 }\r
74446 if(!a){\r
74447 return\r
74448 }\r
74449 var t=this.getHtmlElement();\r
74450 if(e==null){\r
74451 a.appendChild(t)\r
74452 }else{\r
74453 if(typeof e=="object"){\r
74454 a.insertBefore(t,e)\r
74455 }else{\r
74456 if(a.childNodes[e]){\r
74457 a.insertBefore(t,a.childNodes[e])\r
74458 }else{\r
74459 a.appendChild(t)\r
74460 }}}};\r
74461 DwtControl.prototype.setHandler=function(t,e){\r
74462 if(!this._checkState()){\r
74463 return\r
74464 }\r
74465 var a=this.getHtmlElement();\r
74466 Dwt.setHandler(a,t,e)\r
74467 };\r
74468 DwtControl.prototype.clearHandler=function(e){\r
74469 if(!this._checkState()){\r
74470 return\r
74471 }\r
74472 var t=this.getHtmlElement();\r
74473 Dwt.clearHandler(t,e)\r
74474 };\r
74475 DwtControl.prototype.getBounds=function(){\r
74476 if(!this._checkState()){\r
74477 return\r
74478 }\r
74479 return Dwt.getBounds(this.getHtmlElement())\r
74480 };\r
74481 DwtControl.prototype.setBounds=function(a,s,o,t){\r
74482 if(!this._checkState()){\r
74483 return\r
74484 }\r
74485 var n=this.getHtmlElement();\r
74486 if(this.isListenerRegistered(DwtEvent.CONTROL)){\r
74487 this.__controlEvent.reset(DwtControlEvent.RESIZE|DwtControlEvent.MOVE);\r
74488 var e=Dwt.getBounds(n);\r
74489 this.__controlEvent.oldX=e.x;\r
74490 this.__controlEvent.oldY=e.y;\r
74491 this.__controlEvent.oldWidth=e.width;\r
74492 this.__controlEvent.oldHeight=e.height;\r
74493 this.setLocation(a,s);\r
74494 this.setSize(o,t);\r
74495 e=Dwt.getBounds(n);\r
74496 this.__controlEvent.newX=e.x;\r
74497 this.__controlEvent.newY=e.y;\r
74498 this.__controlEvent.newWidth=e.width;\r
74499 this.__controlEvent.newHeight=e.height;\r
74500 this.__controlEvent.requestedWidth=o;\r
74501 this.__controlEvent.requestedHeight=t;\r
74502 this.notifyListeners(DwtEvent.CONTROL,this.__controlEvent)\r
74503 }else{\r
74504 this.setLocation(a,s);\r
74505 this.setSize(o,t)\r
74506 }\r
74507 return this\r
74508 };\r
74509 DwtControl.prototype.getClassName=function(){\r
74510 return this._className\r
74511 };\r
74512 DwtControl.prototype.setClassName=function(t){\r
74513 if(!this._checkState()){\r
74514 return\r
74515 }\r
74516 this._className=t;\r
74517 var e=this.getHtmlElement();\r
74518 e.className=t;\r
74519 Dwt.addClass(e,this._displayState)\r
74520 };\r
74521 DwtControl.prototype.addClassName=function(e){\r
74522 Dwt.addClass(this.getHtmlElement(),e)\r
74523 };\r
74524 DwtControl.prototype.delClassName=function(e,t){\r
74525 Dwt.delClass(this.getHtmlElement(),e,t)\r
74526 };\r
74527 DwtControl.prototype.condClassName=function(a,e,t){\r
74528 Dwt.condClass(this.getHtmlElement(),a,e,t)\r
74529 };\r
74530 DwtControl.prototype.setDisplayState=function(o){\r
74531 if(!this._enabled){\r
74532 o=DwtControl.DISABLED\r
74533 }\r
74534 if(arguments.length>1){\r
74535 var e=[];\r
74536 for(var t=0;\r
74537 t<arguments.length;\r
74538 t++){\r
74539 e.push(arguments[t])\r
74540 }\r
74541 o=e.join(" ")\r
74542 }\r
74543 if(this._displayState!=o){\r
74544 this._displayState=o;\r
74545 Dwt.delClass(this.getHtmlElement(),DwtControl._RE_STATES,o)\r
74546 }};\r
74547 DwtControl.prototype.showAlert=function(e){\r
74548 if(e&&!this._alert){\r
74549 this.delClassName(null,"ZAlert")\r
74550 }else{\r
74551 if(!e&&this._alert){\r
74552 this.delClassName("ZAlert",null)\r
74553 }}\r
74554 this._alert=e\r
74555 };\r
74556 DwtControl.prototype.isAlertShown=function(){\r
74557 return this._alert\r
74558 };\r
74559 DwtControl.prototype._createHtmlFromTemplate=function(e,a){\r
74560 this.getHtmlElement().innerHTML=AjxTemplate.expand(e,a);\r
74561 var o=AjxTemplate.getParams(e);\r
74562 var t=o&&o["class"];\r
74563 if(t){\r
74564 t=[this._className,t].join(" ");\r
74565 this.setClassName(t)\r
74566 }};\r
74567 DwtControl.prototype.getCursor=function(){\r
74568 if(!this._checkState()){\r
74569 return\r
74570 }\r
74571 return Dwt.getCursor(this.getHtmlElement())\r
74572 };\r
74573 DwtControl.prototype.setCursor=function(e){\r
74574 if(!this._checkState()){\r
74575 return\r
74576 }\r
74577 Dwt.setCursor(this.getHtmlElement(),e)\r
74578 };\r
74579 DwtControl.prototype.getDragSource=function(){\r
74580 return this._dragSource\r
74581 };\r
74582 DwtControl.prototype.setDragSource=function(e){\r
74583 this._dragSource=e;\r
74584 if(e!=null&&this._ctrlCaptureObj==null){\r
74585 this._ctrlCaptureObj=new DwtMouseEventCapture({\r
74586 targetObj:this,id:"DwtControl",mouseOverHdlr:DwtControl.__mouseOverHdlr,mouseDownHdlr:DwtControl.__mouseDownHdlr,mouseMoveHdlr:DwtControl.__mouseMoveHdlr,mouseUpHdlr:DwtControl.__mouseUpHdlr,mouseOutHdlr:DwtControl.__mouseOutHdlr}\r
74587 );\r
74588 this._dndHoverAction=new AjxTimedAction(null,this.__dndDoHover)\r
74589 }};\r
74590 DwtControl.prototype.getDropTarget=function(){\r
74591 return this._dropTarget\r
74592 };\r
74593 DwtControl.prototype.setDropTarget=function(e){\r
74594 this._dropTarget=e\r
74595 };\r
74596 DwtControl.prototype.getEnabled=function(){\r
74597 if(!this._checkState()){\r
74598 return\r
74599 }\r
74600 return this._enabled\r
74601 };\r
74602 DwtControl.prototype.setEnabled=function(e,t){\r
74603 if(!this._checkState()){\r
74604 return\r
74605 }\r
74606 if(e!=this._enabled){\r
74607 this._enabled=e;\r
74608 this.setDisplayState(e?DwtControl.NORMAL:DwtControl.DISABLED);\r
74609 if(t){\r
74610 this.getHtmlElement().disabled=!e\r
74611 }}};\r
74612 DwtControl.prototype.getHTMLElId=function(){\r
74613 return this._htmlElId\r
74614 };\r
74615 DwtControl.prototype.getHtmlElement=function(){\r
74616 if(!this._checkState()){\r
74617 return\r
74618 }\r
74619 var e=this._elRef||document.getElementById(this._htmlElId);\r
74620 if(e==null){\r
74621 e=DwtComposite._pendingElements[this._htmlElId]\r
74622 }else{\r
74623 if(!e._rendered){\r
74624 delete DwtComposite._pendingElements[this._htmlElId];\r
74625 e._rendered=true\r
74626 }}\r
74627 return this._elRef=e\r
74628 };\r
74629 DwtControl.fromElement=function(e){\r
74630 return DwtControl.ALL_BY_ID&&DwtControl.ALL_BY_ID[e.id]\r
74631 };\r
74632 DwtControl.fromElementId=function(e){\r
74633 return DwtControl.ALL_BY_ID&&DwtControl.ALL_BY_ID[e]\r
74634 };\r
74635 DwtControl.findControl=function(t){\r
74636 while(t){\r
74637 try{\r
74638 if(t.id&&DwtControl.ALL_BY_ID&&DwtControl.ALL_BY_ID[t.id]){\r
74639 return DwtControl.ALL_BY_ID[t.id]\r
74640 }}\r
74641 catch(e){\r
74642 return null\r
74643 }\r
74644 t=t.parentNode\r
74645 }\r
74646 return null\r
74647 };\r
74648 DwtControl.getTargetControl=function(e,a){\r
74649 var t=DwtUiEvent.getTarget(e,a);\r
74650 return t?DwtControl.findControl(t):null\r
74651 };\r
74652 DwtControl.prototype.setHtmlElementId=function(t){\r
74653 if(this._disposed){\r
74654 return\r
74655 }\r
74656 if(this.__ctrlInited){\r
74657 var e=this.getHtmlElement();\r
74658 if(!e._rendered){\r
74659 delete DwtComposite._pendingElements[this._htmlElId];\r
74660 DwtComposite._pendingElements[t]=e\r
74661 }else{\r
74662 delete DwtControl.ALL_BY_ID[this._htmlElId];\r
74663 DwtControl.ALL_BY_ID[t]=this\r
74664 }\r
74665 e.id=t\r
74666 }\r
74667 this._htmlElId=t\r
74668 };\r
74669 DwtControl.prototype.getX=function(){\r
74670 if(!this._checkState()){\r
74671 return\r
74672 }\r
74673 return Dwt.getLocation(this.getHtmlElement()).x\r
74674 };\r
74675 DwtControl.prototype.getXW=function(){\r
74676 if(!this._checkState()){\r
74677 return\r
74678 }\r
74679 var e=this.getBounds();\r
74680 return e.x+e.width\r
74681 };\r
74682 DwtControl.prototype.getY=function(){\r
74683 if(!this._checkState()){\r
74684 return\r
74685 }\r
74686 return Dwt.getLocation(this.getHtmlElement()).y\r
74687 };\r
74688 DwtControl.prototype.getYH=function(){\r
74689 if(!this._checkState()){\r
74690 return\r
74691 }\r
74692 var e=this.getBounds();\r
74693 return e.y+e.height\r
74694 };\r
74695 DwtControl.prototype.getLocation=function(){\r
74696 if(!this._checkState()){\r
74697 return\r
74698 }\r
74699 return Dwt.getLocation(this.getHtmlElement())\r
74700 };\r
74701 DwtControl.prototype.setLocation=function(e,o){\r
74702 if(!this._checkState()){\r
74703 return\r
74704 }\r
74705 if(this.isListenerRegistered(DwtEvent.CONTROL)){\r
74706 var t=this.getHtmlElement();\r
74707 this.__controlEvent.reset(DwtControlEvent.MOVE);\r
74708 var a=Dwt.getLocation(t);\r
74709 this.__controlEvent.oldX=a.x;\r
74710 this.__controlEvent.oldY=a.y;\r
74711 Dwt.setLocation(t,e,o);\r
74712 a=Dwt.getLocation(t);\r
74713 this.__controlEvent.newX=a.x;\r
74714 this.__controlEvent.newY=a.y;\r
74715 this.notifyListeners(DwtEvent.CONTROL,this.__controlEvent)\r
74716 }else{\r
74717 Dwt.setLocation(this.getHtmlElement(),e,o)\r
74718 }\r
74719 return this\r
74720 };\r
74721 DwtControl.prototype.getScrollStyle=function(){\r
74722 if(!this._checkState()){\r
74723 return\r
74724 }\r
74725 return Dwt.getScrollStyle(this.getHtmlElement())\r
74726 };\r
74727 DwtControl.prototype.setScrollStyle=function(e){\r
74728 if(!this._checkState()){\r
74729 return\r
74730 }\r
74731 Dwt.setScrollStyle(this.getHtmlElement(),e)\r
74732 };\r
74733 DwtControl.prototype.setPosition=function(e){\r
74734 if(!this._checkState()){\r
74735 return\r
74736 }\r
74737 if(e==DwtControl.STATIC_STYLE||e==DwtControl.ABSOLUTE_STYLE||e==DwtControl.RELATIVE_STYLE){\r
74738 this.__posStyle=e;\r
74739 Dwt.setPosition(this.getHtmlElement(),e)\r
74740 }};\r
74741 DwtControl.prototype.getW=function(){\r
74742 if(!this._checkState()){\r
74743 return\r
74744 }\r
74745 return Dwt.getSize(this.getHtmlElement()).x\r
74746 };\r
74747 DwtControl.prototype.getH=function(){\r
74748 if(!this._checkState()){\r
74749 return\r
74750 }\r
74751 return Dwt.getSize(this.getHtmlElement()).y\r
74752 };\r
74753 DwtControl.prototype.getSize=function(){\r
74754 if(!this._checkState()){\r
74755 return\r
74756 }\r
74757 return Dwt.getSize(this.getHtmlElement())\r
74758 };\r
74759 DwtControl.prototype.setSize=function(t,e){\r
74760 if(!this._checkState()){\r
74761 return\r
74762 }\r
74763 if(this.isListenerRegistered(DwtEvent.CONTROL)){\r
74764 var o=this.getHtmlElement();\r
74765 this.__controlEvent.reset(DwtControlEvent.RESIZE);\r
74766 var a=Dwt.getSize(o);\r
74767 this.__controlEvent.oldWidth=a.x;\r
74768 this.__controlEvent.oldHeight=a.y;\r
74769 Dwt.setSize(o,t,e);\r
74770 a=Dwt.getSize(o);\r
74771 this.__controlEvent.newWidth=a.x;\r
74772 this.__controlEvent.newHeight=a.y;\r
74773 this.notifyListeners(DwtEvent.CONTROL,this.__controlEvent)\r
74774 }else{\r
74775 Dwt.setSize(this.getHtmlElement(),t,e)\r
74776 }\r
74777 return this\r
74778 };\r
74779 DwtControl.prototype.getToolTipContent=function(e){\r
74780 if(this._disposed){\r
74781 return\r
74782 }\r
74783 return this.__toolTipContent\r
74784 };\r
74785 DwtControl.prototype.setToolTipContent=function(e){\r
74786 if(this._disposed){\r
74787 return\r
74788 }\r
74789 this.__toolTipContent=e\r
74790 };\r
74791 DwtControl.prototype.getVisible=function(){\r
74792 if(!this._checkState()){\r
74793 return\r
74794 }\r
74795 return Dwt.getVisible(this.getHtmlElement())\r
74796 };\r
74797 DwtControl.prototype.setVisible=function(e){\r
74798 if(!this._checkState()){\r
74799 return\r
74800 }\r
74801 Dwt.setVisible(this.getHtmlElement(),e)\r
74802 };\r
74803 DwtControl.prototype.setVisibility=function(e){\r
74804 if(!this._checkState()){\r
74805 return\r
74806 }\r
74807 Dwt.setVisibility(this.getHtmlElement(),e)\r
74808 };\r
74809 DwtControl.prototype.getVisibility=function(){\r
74810 if(!this._checkState()){\r
74811 return\r
74812 }\r
74813 return Dwt.getVisiblility(this.getHtmlElement())\r
74814 };\r
74815 DwtControl.prototype.getZIndex=function(){\r
74816 if(!this._checkState()){\r
74817 return\r
74818 }\r
74819 return Dwt.getZIndex(this.getHtmlElement())\r
74820 };\r
74821 DwtControl.prototype.setZIndex=function(e){\r
74822 if(!this._checkState()){\r
74823 return\r
74824 }\r
74825 Dwt.setZIndex(this.getHtmlElement(),e)\r
74826 };\r
74827 DwtControl.prototype.zShow=function(e){\r
74828 this.setZIndex(e?Dwt.Z_VIEW:Dwt.Z_HIDDEN)\r
74829 };\r
74830 DwtControl.prototype.setDisplay=function(e){\r
74831 if(!this._checkState()){\r
74832 return\r
74833 }\r
74834 Dwt.setDisplay(this.getHtmlElement(),e)\r
74835 };\r
74836 DwtControl.prototype.preventSelection=function(e){\r
74837 return !this.__isInputEl(e)\r
74838 };\r
74839 DwtControl.prototype.preventContextMenu=function(e){\r
74840 return e?(!this.__isInputEl(e)):true\r
74841 };\r
74842 DwtControl.prototype.setContent=function(e){\r
74843 if(e){\r
74844 this.getHtmlElement().innerHTML=e\r
74845 }};\r
74846 DwtControl.prototype.clearContent=function(){\r
74847 this.getHtmlElement().innerHTML=""\r
74848 };\r
74849 DwtControl.prototype.appendElement=function(t){\r
74850 var e=AjxUtil.isString(t)?document.getElementById(t):t;\r
74851 if(e){\r
74852 e.appendChild(this.getHtmlElement(),e)\r
74853 }};\r
74854 DwtControl.prototype.replaceElement=function(o,e,n){\r
74855 var t=AjxUtil.isString(o)?document.getElementById(o):o;\r
74856 if(t){\r
74857 var a=this.getHtmlElement();\r
74858 t.parentNode.replaceChild(a,t);\r
74859 this._replaceElementHook(t,a,e,n)\r
74860 }};\r
74861 DwtControl.prototype._replaceElementHook=function(t,o,e,n){\r
74862 if((e==null||e)&&t.className){\r
74863 Dwt.addClass(o,t.className)\r
74864 }\r
74865 if(n==null||n){\r
74866 var a=t.getAttribute("style");\r
74867 if(a){\r
74868 o.setAttribute("style",[o.getAttribute("style"),a].join(";"))\r
74869 }}};\r
74870 DwtControl.prototype._blur=function(){};\r
74871 DwtControl.prototype._focus=function(){};\r
74872 DwtControl.prototype._focusByMouseUpEvent=function(e){\r
74873 if(this.getEnabled()){\r
74874 this.focus()\r
74875 }};\r
74876 DwtControl.prototype._focusByMouseDownEvent=function(e){\r
74877 this._focusByMouseUpEvent(e)\r
74878 };\r
74879 DwtControl.prototype._getDragProxy=function(e){\r
74880 return null\r
74881 };\r
74882 DwtControl.prototype._setDragProxyState=function(e){\r
74883 Dwt.condClass(this._dndProxy,e,DwtCssStyle.DROPPABLE,DwtCssStyle.NOT_DROPPABLE)\r
74884 };\r
74885 DwtControl.__junkIconId=0;\r
74886 DwtControl.prototype._destroyDragProxy=function(e){\r
74887 if(e){\r
74888 if(e.parentNode){\r
74889 e.parentNode.removeChild(e)\r
74890 }else{\r
74891 e.style.zIndex=-100;\r
74892 e.id="DwtJunkIcon"+DwtControl.__junkIconId++;\r
74893 e=null\r
74894 }}};\r
74895 DwtControl.prototype._isValidDragObject=function(e){\r
74896 return true\r
74897 };\r
74898 DwtControl.prototype._dragEnter=function(e){};\r
74899 DwtControl.prototype._dragOver=function(e){};\r
74900 DwtControl.prototype._dragHover=function(e){};\r
74901 DwtControl.prototype._dragLeave=function(e){};\r
74902 DwtControl.prototype._drop=function(e){};\r
74903 DwtControl.prototype._setKeyPressEventHdlr=function(e){\r
74904 this._setEventHdlrs([DwtEvent.ONKEYPRESS],e)\r
74905 };\r
74906 DwtControl.prototype._setMouseEventHdlrs=function(e){\r
74907 this._setEventHdlrs(DwtEvent.MOUSE_EVENTS,e)\r
74908 };\r
74909 DwtControl.prototype._setEventHdlrs=function(a,e){\r
74910 if(!this._checkState()){\r
74911 return\r
74912 }\r
74913 var o=this.getHtmlElement();\r
74914 for(var t=0;\r
74915 t<a.length;\r
74916 t++){\r
74917 if(e!==true){\r
74918 Dwt.setHandler(o,a[t],DwtControl.__HANDLER[a[t]])\r
74919 }else{\r
74920 Dwt.clearHandler(o,a[t])\r
74921 }}};\r
74922 DwtControl.prototype._setMouseEvents=function(){\r
74923 var e=[DwtEvent.ONCONTEXTMENU,DwtEvent.ONDBLCLICK,DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEMOVE,DwtEvent.ONMOUSEUP,DwtEvent.ONSELECTSTART];\r
74924 if(AjxEnv.isIE){\r
74925 e.push(DwtEvent.ONMOUSEENTER,DwtEvent.ONMOUSELEAVE)\r
74926 }else{\r
74927 e.push(DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT)\r
74928 }\r
74929 this._setEventHdlrs(e)\r
74930 };\r
74931 DwtControl.prototype._setMouseEvent=function(t,e){\r
74932 t.reset();\r
74933 e.ersatz=true;\r
74934 DwtUiEvent.copy(t,e);\r
74935 t.button=e.button\r
74936 };\r
74937 DwtControl.prototype._getStopPropagationValForMouseEv=function(e){\r
74938 return true\r
74939 };\r
74940 DwtControl.prototype._getEventReturnValForMouseEv=function(e){\r
74941 return false\r
74942 };\r
74943 DwtControl.prototype._checkState=function(){\r
74944 if(this._disposed){\r
74945 return false\r
74946 }\r
74947 if(!this.__ctrlInited){\r
74948 this.__initCtrl()\r
74949 }\r
74950 return true\r
74951 };\r
74952 DwtControl.prototype._position=function(o){\r
74953 this._checkState();\r
74954 var a=this.shell.getSize();\r
74955 var t=this.getSize();\r
74956 var e,n;\r
74957 if(!o){\r
74958 e=Math.round((a.x-t.x)/2);\r
74959 n=Math.round((a.y-t.y)/2)\r
74960 }else{\r
74961 e=o.x;\r
74962 n=o.y\r
74963 }\r
74964 if((e+t.x)>a.x){\r
74965 e=a.x-t.x\r
74966 }\r
74967 if((n+t.y)>a.y){\r
74968 n=a.y-t.y\r
74969 }\r
74970 this.setLocation(e,n)\r
74971 };\r
74972 DwtControl._scrollIntoView=function(a,t){\r
74973 var e=Dwt.toWindow(a,0,0,null,null,DwtPoint.tmp).y;\r
74974 var r=Dwt.toWindow(t,0,0,null,null,DwtPoint.tmp).y+t.scrollTop;\r
74975 var s=e-r;\r
74976 if(s<0){\r
74977 t.scrollTop+=s\r
74978 }else{\r
74979 var n=Dwt.getSize(t,DwtPoint.tmp).y;\r
74980 var o=Dwt.getSize(a,DwtPoint.tmp).y;\r
74981 s=(e+o)-(r+n);\r
74982 if(s>0){\r
74983 t.scrollTop+=s\r
74984 }}};\r
74985 DwtControl._dndScrollCallback=function(a,r){\r
74986 var t=a.container;\r
74987 if(!t){\r
74988 return\r
74989 }\r
74990 var u=r.dwtObj&&r.dwtObj._dndScrollId;\r
74991 if(r.type=="mouseup"||!u||(a.id&&u!=a.id)){\r
74992 if(t._dndScrollActionId!=-1){\r
74993 AjxTimedAction.cancelAction(t._dndScrollActionId);\r
74994 t._dndScrollActionId=-1\r
74995 }\r
74996 return\r
74997 }\r
74998 t._scrollAmt=0;\r
74999 if(t.clientHeight<t.scrollHeight){\r
75000 var o=Dwt.toWindow(t,0,0,null,null,DwtPoint.tmp).y;\r
75001 var m=o+t.scrollTop;\r
75002 var h=t.scrollTop;\r
75003 var c=r.docY-m;\r
75004 var n=(t.clientWidth<t.scrollWidth)?a.threshold+Dwt.SCROLLBAR_WIDTH:a.threshold;\r
75005 var s=(c<=n)?-1*a.amount:0;\r
75006 if(s==0){\r
75007 var e=Dwt.getSize(t,DwtPoint.tmp).y;\r
75008 var d=m+e;\r
75009 c=d-r.docY;\r
75010 s=(c<=n)?a.amount:0\r
75011 }\r
75012 t._scrollAmt=s;\r
75013 if(s){\r
75014 if(!t._dndScrollAction){\r
75015 t._dndScrollAction=new AjxTimedAction(null,DwtControl._dndScroll,[a]);\r
75016 t._dndScrollActionId=-1\r
75017 }\r
75018 if(t._dndScrollActionId==-1){\r
75019 t._dndScrollActionId=AjxTimedAction.scheduleAction(t._dndScrollAction,0)\r
75020 }}else{\r
75021 if(t._dndScrollActionId!=-1){\r
75022 AjxTimedAction.cancelAction(t._dndScrollActionId);\r
75023 t._dndScrollActionId=-1\r
75024 }}}};\r
75025 DwtControl._dndScroll=function(n){\r
75026 var t=n.container;\r
75027 var o=Dwt.toWindow(t,0,0,null,null,DwtPoint.tmp).y;\r
75028 var a=Dwt.getSize(t,DwtPoint.tmp).y;\r
75029 var e=t.scrollTop;\r
75030 if((t._scrollAmt<0&&e>0)||(t._scrollAmt>0&&(e+a<t.scrollHeight))){\r
75031 t.scrollTop+=t._scrollAmt;\r
75032 t._dndScrollActionId=AjxTimedAction.scheduleAction(t._dndScrollAction,n.interval)\r
75033 }};\r
75034 DwtControl.__keyPressHdlr=function(a){\r
75035 var o=o?o:DwtControl.getTargetControl(a);\r
75036 if(!o){\r
75037 return false\r
75038 }\r
75039 if(o.__hasToolTipContent()){\r
75040 var t=DwtShell.getShell(window);\r
75041 var e=t.getHoverMgr();\r
75042 e.setHoverOutListener(o._hoverOutListener);\r
75043 e.hoverOut();\r
75044 o.__tooltipClosed=false\r
75045 }};\r
75046 DwtControl.prototype.__hasToolTipContent=function(){\r
75047 if(this._disposed){\r
75048 return false\r
75049 }\r
75050 return Boolean(this.__toolTipContent||(this.getToolTipContent!=DwtControl.prototype.getToolTipContent))\r
75051 };\r
75052 DwtControl.prototype.__doBlur=function(){\r
75053 this._hasFocus=false;\r
75054 if(this.isListenerRegistered(DwtEvent.ONBLUR)){\r
75055 var e=DwtShell.focusEvent;\r
75056 e.dwtObj=this;\r
75057 e.state=DwtFocusEvent.BLUR;\r
75058 obj.notifyListeners(DwtEvent.ONBLUR,mouseEv)\r
75059 }\r
75060 this._blur()\r
75061 };\r
75062 DwtControl.prototype.__doFocus=function(){\r
75063 this._hasFocus=true;\r
75064 if(this.isListenerRegistered(DwtEvent.ONFOCUS)){\r
75065 var e=DwtShell.focusEvent;\r
75066 e.dwtObj=this;\r
75067 e.state=DwtFocusEvent.FOCUS;\r
75068 obj.notifyListeners(DwtEvent.ONFOCUS,mouseEv)\r
75069 }\r
75070 this._focus()\r
75071 };\r
75072 DwtControl.__dblClickHdlr=function(e){\r
75073 var t=DwtControl.getTargetControl(e);\r
75074 if(t&&t._dblClickIsolation){\r
75075 t._clickPending=false;\r
75076 AjxTimedAction.cancelAction(t._dblClickActionId)\r
75077 }\r
75078 return DwtControl.__mouseEvent(e,DwtEvent.ONDBLCLICK)\r
75079 };\r
75080 DwtControl.__mouseOverHdlr=function(s,n){\r
75081 var h=(DwtMouseEventCapture.getId()=="DwtControl")?DwtMouseEventCapture.getCaptureObj():null;\r
75082 if(h!=null){\r
75083 s=DwtUiEvent.getEvent(s);\r
75084 s._stopPropagation=true;\r
75085 return false\r
75086 }\r
75087 var r=DwtControl.getTargetControl(s);\r
75088 if(!r){\r
75089 return false\r
75090 }\r
75091 n=n||DwtEvent.ONMOUSEOVER;\r
75092 if((n==DwtEvent.ONMOUSEOVER)&&r._ignoreInternalOverOut){\r
75093 var e=DwtControl.getTargetControl(s,true);\r
75094 if(r==e){\r
75095 return false\r
75096 }}\r
75097 var o=DwtShell.mouseEvent;\r
75098 if(r._dragging==DwtControl._NO_DRAG){\r
75099 o.setFromDhtmlEvent(s,r);\r
75100 if(r.isListenerRegistered(n)){\r
75101 r.notifyListeners(n,o)\r
75102 }\r
75103 if(r.__hasToolTipContent()){\r
75104 var a=DwtShell.getShell(window);\r
75105 var t=a.getHoverMgr();\r
75106 if((!t.isHovering()||t.getHoverObject()!=r)&&!DwtMenu.menuShowing()){\r
75107 t.reset();\r
75108 t.setHoverObject(r);\r
75109 t.setHoverOverData(o);\r
75110 t.setHoverOverDelay(DwtToolTip.TOOLTIP_DELAY);\r
75111 t.setHoverOverListener(r._hoverOverListener);\r
75112 t.hoverOver(o.docX,o.docY)\r
75113 }}}\r
75114 o._stopPropagation=true;\r
75115 o._returnValue=false;\r
75116 o.setToDhtmlEvent(s);\r
75117 return false\r
75118 };\r
75119 DwtControl.__mouseEnterHdlr=function(e){\r
75120 return DwtControl.__mouseOverHdlr(e,DwtEvent.ONMOUSEENTER)\r
75121 };\r
75122 DwtControl.__mouseDownHdlr=function(n){\r
75123 var s=DwtControl.getTargetControl(n);\r
75124 if(!s){\r
75125 return false\r
75126 }\r
75127 n=DwtUiEvent.getEvent(n);\r
75128 s._focusByMouseDownEvent(n);\r
75129 if(s.__hasToolTipContent()){\r
75130 var a=DwtShell.getShell(window);\r
75131 var t=a.getHoverMgr();\r
75132 t.setHoverOutListener(s._hoverOutListener);\r
75133 t.hoverOut()\r
75134 }\r
75135 var o=DwtShell.mouseEvent;\r
75136 o.setFromDhtmlEvent(n,s);\r
75137 if(s._dragSource&&(o.button==DwtMouseEvent.LEFT)&&s._isValidDragObject(o)){\r
75138 try{\r
75139 s._ctrlCaptureObj.capture()\r
75140 }\r
75141 catch(e){}\r
75142 s._dragOp=(o.ctrlKey)?Dwt.DND_DROP_COPY:Dwt.DND_DROP_MOVE;\r
75143 s.__dragStartX=o.docX;\r
75144 s.__dragStartY=o.docY\r
75145 }\r
75146 return DwtControl.__mouseEvent(n,DwtEvent.ONMOUSEDOWN,s,o)\r
75147 };\r
75148 DwtControl.__mouseMoveHdlr=function(r){\r
75149 var n=(DwtMouseEventCapture.getId()=="DwtControl")?DwtMouseEventCapture.getCaptureObj():null;\r
75150 var o=n?n.targetObj:DwtControl.getTargetControl(r);\r
75151 if(!o){\r
75152 return false\r
75153 }\r
75154 if(o.__dndHoverActionId!=-1){\r
75155 AjxTimedAction.cancelAction(o.__dndHoverActionId);\r
75156 o.__dndHoverActionId=-1\r
75157 }\r
75158 var h=DwtShell.mouseEvent;\r
75159 h.setFromDhtmlEvent(r,n?true:o);\r
75160 if(h.docX<0||h.docY<0){\r
75161 h._stopPropagation=true;\r
75162 h._returnValue=false;\r
75163 h.setToDhtmlEvent(r);\r
75164 return false\r
75165 }\r
75166 if(o._dragSource==null||n==null||(o!=null&&o._dragging==DwtControl._NO_DRAG&&Math.abs(o.__dragStartX-h.docX)<DwtControl.__DRAG_THRESHOLD&&Math.abs(o.__dragStartY-h.docY)<DwtControl.__DRAG_THRESHOLD)){\r
75167 if(o.__hasToolTipContent()){\r
75168 var s=DwtShell.getShell(window);\r
75169 var e=s.getHoverMgr();\r
75170 if(!e.isHovering()&&!o.__tooltipClosed&&!DwtMenu.menuShowing()){\r
75171 e.hoverOver(h.docX,h.docY)\r
75172 }else{\r
75173 var a=o.__lastTooltipX?Math.abs(h.docX-o.__lastTooltipX):null;\r
75174 var t=o.__lastTooltipY?Math.abs(h.docY-o.__lastTooltipY):null;\r
75175 if((a!=null&&a>DwtControl.__TOOLTIP_THRESHOLD)||(t!=null&&t>DwtControl.__TOOLTIP_THRESHOLD)){\r
75176 e.setHoverOutListener(o._hoverOutListener);\r
75177 e.hoverOut();\r
75178 o.__tooltipClosed=true\r
75179 }}}\r
75180 return DwtControl.__mouseEvent(r,DwtEvent.ONMOUSEMOVE,o,h)\r
75181 }else{\r
75182 if(o._dragging==DwtControl._NO_DRAG){\r
75183 o._dragOp=o._dragSource._beginDrag(o._dragOp,o);\r
75184 if(o._dragOp!=Dwt.DND_DROP_NONE){\r
75185 o._dragging=DwtControl._DRAGGING;\r
75186 o._dndProxy=o._getDragProxy(o._dragOp);\r
75187 Dwt.addClass(o._dndProxy,"DwtDragProxy");\r
75188 if(o._dndProxy==null){\r
75189 o._dragging=DwtControl._DRAG_REJECTED\r
75190 }}else{\r
75191 o._dragging=DwtControl._DRAG_REJECTED\r
75192 }}\r
75193 if(o._dragging!=DwtControl._DRAG_REJECTED){\r
75194 var c=h.dwtObj;\r
75195 if(c){\r
75196 o._dndHoverAction.args=[c];\r
75197 o.__dndHoverActionId=AjxTimedAction.scheduleAction(o._dndHoverAction,DwtControl.__DND_HOVER_DELAY)\r
75198 }\r
75199 if(c&&c._dropTarget&&c!=o){\r
75200 if(c!=o.__lastDestDwtObj||c._dropTarget.hasMultipleTargets()){\r
75201 if(c._dropTarget._dragEnter(o._dragOp,c,o._dragSource._getData(),h,o._dndProxy)){\r
75202 o._setDragProxyState(true);\r
75203 o.__dropAllowed=true;\r
75204 c._dragEnter(h)\r
75205 }else{\r
75206 o._setDragProxyState(false);\r
75207 o.__dropAllowed=false\r
75208 }}else{\r
75209 if(o.__dropAllowed){\r
75210 c._dragOver(h)\r
75211 }}}else{\r
75212 o._setDragProxyState(false)\r
75213 }\r
75214 if(o.__lastDestDwtObj&&o.__lastDestDwtObj!=c&&o.__lastDestDwtObj._dropTarget&&o.__lastDestDwtObj!=o){\r
75215 if(c&&!c._dndScrollCallback&&o.__lastDestDwtObj._dndScrollCallback){\r
75216 o.__lastDestDwtObj._dndScrollCallback.run(h)\r
75217 }\r
75218 o.__lastDestDwtObj._dragLeave(h);\r
75219 o.__lastDestDwtObj._dropTarget._dragLeave()\r
75220 }\r
75221 o.__lastDestDwtObj=c;\r
75222 if((c!=o)&&c&&c._dndScrollCallback){\r
75223 c._dndScrollCallback.run(h)\r
75224 }\r
75225 Dwt.setLocation(o._dndProxy,h.docX+2,h.docY+2)\r
75226 }else{\r
75227 DwtControl.__mouseEvent(r,DwtEvent.ONMOUSEMOVE,o,h)\r
75228 }\r
75229 h._stopPropagation=true;\r
75230 h._returnValue=false;\r
75231 h.setToDhtmlEvent(r);\r
75232 return false\r
75233 }};\r
75234 DwtControl.__mouseUpHdlr=function(t){\r
75235 var n=(DwtMouseEventCapture.getId()=="DwtControl")?DwtMouseEventCapture.getCaptureObj():null;\r
75236 var o=n?n.targetObj:DwtControl.getTargetControl(t);\r
75237 if(!o){\r
75238 return false\r
75239 }\r
75240 if(o.__dndHoverActionId!=-1){\r
75241 AjxTimedAction.cancelAction(o.__dndHoverActionId);\r
75242 o.__dndHoverActionId=-1\r
75243 }\r
75244 var e=DwtShell.mouseEvent;\r
75245 e.setFromDhtmlEvent(t,n?true:o);\r
75246 if(!o._dragSource||!n){\r
75247 return DwtControl.__processMouseUpEvent(t,o,e)\r
75248 }else{\r
75249 n.release();\r
75250 if(o._dragging!=DwtControl._DRAGGING){\r
75251 o._dragging=DwtControl._NO_DRAG;\r
75252 return DwtControl.__processMouseUpEvent(t,o,e)\r
75253 }else{\r
75254 o.__lastDestDwtObj=null;\r
75255 var a=e.dwtObj;\r
75256 if(a&&a._dropTarget&&o.__dropAllowed&&a!=o){\r
75257 a._drop(e);\r
75258 a._dropTarget._drop(o._dragSource._getData(),e);\r
75259 o._dragSource._endDrag();\r
75260 o._destroyDragProxy(o._dndProxy);\r
75261 o._dragging=DwtControl._NO_DRAG\r
75262 }else{\r
75263 DwtControl.__badDrop(o,e)\r
75264 }\r
75265 if(a&&a._dndScrollCallback){\r
75266 a._dndScrollCallback.run(e)\r
75267 }\r
75268 e._stopPropagation=true;\r
75269 e._returnValue=false;\r
75270 e.setToDhtmlEvent(t);\r
75271 return false\r
75272 }}};\r
75273 DwtControl.__badDrop=function(a,t){\r
75274 a._dragSource._cancelDrag();\r
75275 a.__dragEndX=t.docX;\r
75276 a.__dragEndY=t.docY;\r
75277 if(a.__badDropAction==null){\r
75278 a.__badDropAction=new AjxTimedAction(a,a.__badDropEffect)\r
75279 }\r
75280 var e=(a.__dragEndY-a.__dragStartY)/(a.__dragEndX-a.__dragStartX);\r
75281 a.__badDropAction.args=[e,a.__dragStartY-(e*a.__dragStartX),(a.__dragStartX-a.__dragEndX<0)?-1:1];\r
75282 AjxTimedAction.scheduleAction(a.__badDropAction,0)\r
75283 };\r
75284 DwtControl.__processMouseUpEvent=function(a,o,t){\r
75285 if(o._dblClickIsolation&&t&&(t.button==DwtMouseEvent.LEFT)){\r
75286 if(o._clickPending){\r
75287 return false\r
75288 }else{\r
75289 o._clickPending=true;\r
75290 var e=new AjxTimedAction(null,DwtControl.__timedClick,[a,o,t]);\r
75291 o._dblClickActionId=AjxTimedAction.scheduleAction(e,DwtControl.__DBL_CLICK_TIMEOUT);\r
75292 DwtUiEvent.setBehaviour(a,true,false);\r
75293 o._st=new Date();\r
75294 return false\r
75295 }}else{\r
75296 o._clickPending=false;\r
75297 return DwtControl.__mouseEvent(a,DwtEvent.ONMOUSEUP,o,t)\r
75298 }};\r
75299 DwtControl.__timedClick=function(t,a,e){\r
75300 a._clickPending=false;\r
75301 DwtControl.__mouseEvent(t,DwtEvent.ONMOUSEUP,a,e)\r
75302 };\r
75303 DwtControl.__mouseOutHdlr=function(n,o){\r
75304 var s=DwtControl.getTargetControl(n);\r
75305 if(!s){\r
75306 return false\r
75307 }\r
75308 o=o||DwtEvent.ONMOUSEOUT;\r
75309 if((o==DwtEvent.ONMOUSEOUT)&&s._ignoreInternalOverOut){\r
75310 var e=DwtControl.getTargetControl(n,true);\r
75311 if(s==e){\r
75312 return false\r
75313 }}\r
75314 if(s.__hasToolTipContent()){\r
75315 var a=DwtShell.getShell(window);\r
75316 var t=a.getHoverMgr();\r
75317 t.setHoverOutListener(s._hoverOutListener);\r
75318 t.hoverOut();\r
75319 s.__tooltipClosed=false\r
75320 }\r
75321 return DwtControl.__mouseEvent(n,o||DwtEvent.ONMOUSEOUT,s)\r
75322 };\r
75323 DwtControl.__mouseLeaveHdlr=function(e){\r
75324 return DwtControl.__mouseOutHdlr(e,DwtEvent.ONMOUSELEAVE)\r
75325 };\r
75326 DwtControl.__mouseWheelHdlr=function(e){\r
75327 var t=DwtControl.getTargetControl(e);\r
75328 if(!t){\r
75329 return false\r
75330 }\r
75331 return DwtControl.__mouseEvent(e,DwtEvent.ONMOUSEWHEEL,t)\r
75332 };\r
75333 DwtControl.__selectStartHdlr=function(e){\r
75334 return DwtControl.__mouseEvent(e,DwtEvent.ONSELECTSTART)\r
75335 };\r
75336 DwtControl.__contextMenuHdlr=function(t){\r
75337 if(AjxEnv.isSafari){\r
75338 var a=DwtControl.getTargetControl(t);\r
75339 var e=a?a.preventContextMenu():true;\r
75340 if(e){\r
75341 DwtControl.__mouseEvent(t,DwtEvent.ONMOUSEDOWN);\r
75342 return DwtControl.__mouseEvent(t,DwtEvent.ONMOUSEUP)\r
75343 }}\r
75344 return DwtControl.__mouseEvent(t,DwtEvent.ONCONTEXTMENU)\r
75345 };\r
75346 DwtControl.__mouseEvent=function(o,t,n,a){\r
75347 var n=n?n:DwtControl.getTargetControl(o);\r
75348 if(!n){\r
75349 return false\r
75350 }\r
75351 if(!a){\r
75352 a=DwtShell.mouseEvent;\r
75353 a.setFromDhtmlEvent(o,n)\r
75354 }\r
75355 var e=a.target.tagName.toLowerCase();\r
75356 if(e!="input"&&e!="textarea"&&e!="a"){\r
75357 a._stopPropagation=true;\r
75358 a._returnValue=false\r
75359 }else{\r
75360 a._stopPropagation=false;\r
75361 a._returnValue=true\r
75362 }\r
75363 DwtEventManager.notifyListeners(t,a);\r
75364 if(n.isListenerRegistered&&n.isListenerRegistered(t)){\r
75365 n.notifyListeners(t,a)\r
75366 }\r
75367 a.setToDhtmlEvent(o);\r
75368 return a._returnValue\r
75369 };\r
75370 DwtControl.__HANDLER={};\r
75371 DwtControl.__HANDLER[DwtEvent.ONCONTEXTMENU]=DwtControl.__contextMenuHdlr;\r
75372 DwtControl.__HANDLER[DwtEvent.ONDBLCLICK]=DwtControl.__dblClickHdlr;\r
75373 DwtControl.__HANDLER[DwtEvent.ONMOUSEDOWN]=DwtControl.__mouseDownHdlr;\r
75374 DwtControl.__HANDLER[DwtEvent.ONMOUSEENTER]=DwtControl.__mouseEnterHdlr;\r
75375 DwtControl.__HANDLER[DwtEvent.ONMOUSELEAVE]=DwtControl.__mouseLeaveHdlr;\r
75376 DwtControl.__HANDLER[DwtEvent.ONMOUSEMOVE]=DwtControl.__mouseMoveHdlr;\r
75377 DwtControl.__HANDLER[DwtEvent.ONMOUSEOUT]=DwtControl.__mouseOutHdlr;\r
75378 DwtControl.__HANDLER[DwtEvent.ONMOUSEOVER]=DwtControl.__mouseOverHdlr;\r
75379 DwtControl.__HANDLER[DwtEvent.ONMOUSEUP]=DwtControl.__mouseUpHdlr;\r
75380 DwtControl.__HANDLER[DwtEvent.ONMOUSEWHEEL]=DwtControl.__mouseWheelHdlr;\r
75381 DwtControl.__HANDLER[DwtEvent.ONSELECTSTART]=DwtControl.__selectStartHdlr;\r
75382 DwtControl.__HANDLER[DwtEvent.ONKEYPRESS]=DwtControl.__keyPressHdlr;\r
75383 DwtControl.prototype.__initCtrl=function(){\r
75384 this.shell=this.parent.shell||this.parent;\r
75385 this._htmlElId=this.__internalId=this._htmlElId||Dwt.getNextId();\r
75386 var e=this._elRef=this._createElement(this._htmlElId);\r
75387 e.id=this._htmlElId;\r
75388 if(DwtControl.ALL_BY_ID){\r
75389 if(DwtControl.ALL_BY_ID[this._htmlElId]){\r
75390 this._htmlElId=e.id=this.__internalId=DwtId._makeId(this._htmlElId,Dwt.getNextId())\r
75391 }\r
75392 DwtControl.ALL_BY_ID[this._htmlElId]=this\r
75393 }\r
75394 DwtComposite._pendingElements[this._htmlElId]=e;\r
75395 if(this.__posStyle==null||this.__posStyle==DwtControl.STATIC_STYLE){\r
75396 e.style.position=DwtControl.STATIC_STYLE\r
75397 }else{\r
75398 e.style.position=this.__posStyle\r
75399 }\r
75400 e.className=this._className;\r
75401 e.style.overflow="visible";\r
75402 this._enabled=true;\r
75403 this.__controlEvent=DwtControl.__controlEvent;\r
75404 this._dragging=DwtControl._NO_DRAG;\r
75405 this.__ctrlInited=true;\r
75406 this.parent.addChild(this,this.__index)\r
75407 };\r
75408 DwtControl.prototype._createElement=function(e){\r
75409 return document.createElement("DIV")\r
75410 };\r
75411 DwtControl.prototype.__dndDoHover=function(e){\r
75412 e._dragHover()\r
75413 };\r
75414 DwtControl.prototype.__badDropEffect=function(e,n,a){\r
75415 var t=(Math.abs(e)<=1);\r
75416 var o=t?this.__dragStartX-this.__dragEndX:this.__dragStartY-this.__dragEndY;\r
75417 if(o*a>0&&!(this.__dragEndY==this.__dragStartY||this.__dragEndX==this.__dragStartX)){\r
75418 if(t){\r
75419 this.__dragEndX+=(30*a);\r
75420 this._dndProxy.style.top=e*this.__dragEndX+n;\r
75421 this._dndProxy.style.left=this.__dragEndX\r
75422 }else{\r
75423 this.__dragEndY+=(30*a);\r
75424 this._dndProxy.style.top=this.__dragEndY;\r
75425 this._dndProxy.style.left=(this.__dragEndY-n)/e\r
75426 }\r
75427 AjxTimedAction.scheduleAction(this.__badDropAction,0)\r
75428 }else{\r
75429 this._destroyDragProxy(this._dndProxy);\r
75430 this._dragging=DwtControl._NO_DRAG\r
75431 }};\r
75432 DwtControl.prototype.__handleHoverOver=function(o){\r
75433 if(this._eventMgr.isListenerRegistered(DwtEvent.HOVEROVER)){\r
75434 this._eventMgr.notifyListeners(DwtEvent.HOVEROVER,o)\r
75435 }\r
75436 var a=o&&o.object;\r
75437 var n=this.getToolTipContent(a);\r
75438 var t,s;\r
75439 if(!n){\r
75440 t=""\r
75441 }else{\r
75442 if(typeof(n)=="string"){\r
75443 t=n\r
75444 }else{\r
75445 if(n instanceof AjxCallback){\r
75446 s=n\r
75447 }else{\r
75448 if(typeof(n)=="object"){\r
75449 t=n.content;\r
75450 s=n.callback\r
75451 }}}}\r
75452 if(!t&&s&&n.loading){\r
75453 t=AjxMsg.loading\r
75454 }\r
75455 if(t){\r
75456 this.__showToolTip(o,t)\r
75457 }\r
75458 if(s){\r
75459 var e=new AjxCallback(this,this.__showToolTip,[o]);\r
75460 AjxTimedAction.scheduleAction(new AjxTimedAction(null,function(){\r
75461 s.run(e)\r
75462 }\r
75463 ),0)\r
75464 }};\r
75465 DwtControl.prototype.__showToolTip=function(a,t){\r
75466 if(!t){\r
75467 return\r
75468 }\r
75469 var e=DwtShell.getShell(window);\r
75470 var o=e.getToolTip();\r
75471 o.setContent(t);\r
75472 o.popup(a.x,a.y);\r
75473 this.__lastTooltipX=a.x;\r
75474 this.__lastTooltipY=a.y;\r
75475 this.__tooltipClosed=false\r
75476 };\r
75477 DwtControl.prototype.__handleHoverOut=function(t){\r
75478 if(this._eventMgr.isListenerRegistered(DwtEvent.HOVEROUT)){\r
75479 this._eventMgr.notifyListeners(DwtEvent.HOVEROUT,t)\r
75480 }\r
75481 var e=DwtShell.getShell(window);\r
75482 var a=e.getToolTip();\r
75483 a.popdown();\r
75484 this.__lastTooltipX=null;\r
75485 this.__lastTooltipY=null\r
75486 };\r
75487 DwtControl.prototype.__isInputEl=function(a){\r
75488 var o=false;\r
75489 if(!a||!a.tagName){\r
75490 return o\r
75491 }\r
75492 var e=a.tagName.toLowerCase();\r
75493 var t=e=="input"?a.type.toLowerCase():null;\r
75494 if(e=="textarea"||(t&&(t=="text"||t=="password"))){\r
75495 o=true\r
75496 }\r
75497 return o\r
75498 };\r
75499 DwtControl.ON_UNLOAD=function(){\r
75500 var t=DwtControl.ALL_BY_ID,e;\r
75501 for(e in t){\r
75502 t[e]._elRef=null\r
75503 }\r
75504 DwtControl.ALL_BY_ID=null\r
75505 };\r
75506 if(AjxEnv.isIE){\r
75507 window.attachEvent("onunload",DwtControl.ON_UNLOAD)\r
75508 }else{\r
75509 window.addEventListener("unload",DwtControl.ON_UNLOAD,false)\r
75510 }}\r
75511 if(AjxPackage.define("ajax.dwt.widgets.DwtComposite")){\r
75512 DwtComposite=function(e){\r
75513 if(arguments.length==0){\r
75514 return\r
75515 }\r
75516 e=Dwt.getParams(arguments,DwtComposite.PARAMS);\r
75517 e.className=e.className||"DwtComposite";\r
75518 DwtControl.call(this,e);\r
75519 this._children=new AjxVector()\r
75520 };\r
75521 DwtComposite.PARAMS=DwtControl.PARAMS.concat();\r
75522 DwtComposite.prototype=new DwtControl;\r
75523 DwtComposite.prototype.constructor=DwtComposite;\r
75524 DwtComposite._pendingElements=new Object();\r
75525 DwtComposite.prototype.toString=function(){\r
75526 return"DwtComposite"\r
75527 };\r
75528 DwtComposite.prototype.dispose=function(){\r
75529 if(this._disposed){\r
75530 return\r
75531 }\r
75532 var e=this._children.getArray();\r
75533 while(e.length>0){\r
75534 e[0].dispose()\r
75535 }\r
75536 DwtControl.prototype.dispose.call(this)\r
75537 };\r
75538 DwtComposite.prototype.getChildren=function(){\r
75539 return this._children.getArray().slice(0)\r
75540 };\r
75541 DwtComposite.prototype.getNumChildren=function(){\r
75542 return this._children.size()\r
75543 };\r
75544 DwtComposite.prototype.removeChildren=function(){\r
75545 var e=this._children.getArray();\r
75546 while(e.length>0){\r
75547 e[0].dispose()\r
75548 }};\r
75549 DwtComposite.prototype.clear=function(){\r
75550 this.removeChildren();\r
75551 this.getHtmlElement().innerHTML=""\r
75552 };\r
75553 DwtComposite.prototype.addChild=function(a,e){\r
75554 this._children.add(a,e);\r
75555 var t=a.getHtmlElement();\r
75556 t.setAttribute("parentId",this._htmlElId);\r
75557 if(this instanceof DwtShell&&this.isVirtual()){\r
75558 document.body.appendChild(t)\r
75559 }else{\r
75560 a.reparentHtmlElement(a.__parentElement||this.getHtmlElement(),e);\r
75561 a.__parentElement=null\r
75562 }};\r
75563 DwtComposite.prototype.removeChild=function(a){\r
75564 if(a.isInitialized()){\r
75565 this._children.remove(a);\r
75566 var t=a.getHtmlElement();\r
75567 if(t){\r
75568 t.removeAttribute("parentId");\r
75569 if(t.parentNode){\r
75570 var e=t.parentNode.removeChild(t)\r
75571 }}}};\r
75572 DwtComposite.prototype._setAllowSelection=function(){\r
75573 if(!this._allowSelection){\r
75574 this._allowSelection=true;\r
75575 this.addListener(DwtEvent.ONMOUSEDOWN,new AjxListener(this,this._mouseDownListener));\r
75576 this.addListener(DwtEvent.ONCONTEXTMENU,new AjxListener(this,this._contextMenuListener))\r
75577 }};\r
75578 DwtComposite.prototype.preventSelection=function(e){\r
75579 return this._allowSelection?false:DwtControl.prototype.preventSelection.call(this,e)\r
75580 };\r
75581 DwtComposite.prototype.preventContextMenu=function(a){\r
75582 if(!this._allowSelection){\r
75583 return DwtControl.prototype.preventContextMenu.apply(this,arguments)\r
75584 }\r
75585 var e=a?(a.id.indexOf("OBJ_")==0):false;\r
75586 var t=false;\r
75587 if(document.selection){\r
75588 t=document.selection.type=="Text"\r
75589 }else{\r
75590 if(getSelection()){\r
75591 t=getSelection().toString().length>0\r
75592 }}\r
75593 return(t&&!e)?false:true\r
75594 };\r
75595 DwtComposite.prototype._focusByMouseUpEvent=function(){\r
75596 if(!this._allowSelection){\r
75597 DwtControl.prototype._focusByMouseUpEvent.apply(this,arguments)\r
75598 }};\r
75599 DwtComposite.prototype._mouseDownListener=function(e){\r
75600 if(e.button==DwtMouseEvent.LEFT){\r
75601 e._stopPropagation=true;\r
75602 e._returnValue=true\r
75603 }};\r
75604 DwtComposite.prototype._contextMenuListener=function(e){\r
75605 e._stopPropagation=false;\r
75606 e._returnValue=true\r
75607 }\r
75608 }\r
75609 if(AjxPackage.define("ajax.dwt.widgets.DwtShell")){\r
75610 DwtShell=function(n){\r
75611 if(window._dwtShellId){\r
75612 throw new DwtException("DwtShell already exists for window",DwtException.INVALID_OP,"DwtShell")\r
75613 }\r
75614 var a=n.className||"DwtShell";\r
75615 DwtComposite.call(this,{\r
75616 className:a}\r
75617 );\r
75618 this.__ctrlInited=true;\r
75619 document.body.style.margin=0;\r
75620 if(!n.docBodyScrollable){\r
75621 if(AjxEnv.isIE){\r
75622 document.body.onscroll=DwtShell.__onBodyScroll\r
75623 }\r
75624 document.body.style.overflow="hidden"\r
75625 }\r
75626 document.body.onselect=DwtShell._preventDefaultSelectPrt;\r
75627 document.body.onselectstart=DwtShell._preventDefaultSelectPrt;\r
75628 document.body.oncontextmenu=DwtShell._preventDefaultPrt;\r
75629 window.onresize=DwtShell._resizeHdlr;\r
75630 var o=document.createElement("div");\r
75631 this._htmlElId=window._dwtShellId=o.id=n.id||Dwt.getNextId();\r
75632 DwtControl.ALL_BY_ID[this._htmlElId]=this;\r
75633 o.className=a;\r
75634 o.style.width=o.style.height="100%";\r
75635 if(o.style.overflow){\r
75636 o.style.overflow=null\r
75637 }\r
75638 try{\r
75639 if(n.userShell){\r
75640 document.body.removeChild(n.userShell)\r
75641 }}\r
75642 catch(t){}\r
75643 document.body.appendChild(o);\r
75644 if(n.userShell){\r
75645 var e=new DwtControl({\r
75646 parent:this,posStyle:Dwt.ABSOLUTE_STYLE}\r
75647 );\r
75648 e.getHtmlElement().appendChild(n.userShell);\r
75649 e.setSize("100%","100%");\r
75650 e.zShow(true)\r
75651 }\r
75652 this.shell=this;\r
75653 this._createBusyOverlay(o);\r
75654 this._veilOverlay=document.createElement("div");\r
75655 this._veilOverlay.className=(!AjxEnv.isLinux)?"VeilOverlay":"VeilOverlay-linux";\r
75656 this._veilOverlay.style.position="absolute";\r
75657 this._veilOverlay.style.cursor=AjxEnv.isIE6up?"not-allowed":"wait";\r
75658 Dwt.setBounds(this._veilOverlay,0,0,"100%","100%");\r
75659 Dwt.setZIndex(this._veilOverlay,Dwt.Z_HIDDEN);\r
75660 this._veilOverlay.veilZ=new Array();\r
75661 this._veilOverlay.veilZ.push(Dwt.Z_HIDDEN);\r
75662 this._veilOverlay.dialogZ=new Array();\r
75663 this._veilOverlay.activeDialogs=new Array();\r
75664 this._veilOverlay.innerHTML="<table cellspacing=0 cellpadding=0 style='width:100%; height:100%'><tr><td>&nbsp;</td></tr></table>";\r
75665 o.appendChild(this._veilOverlay);\r
75666 if(n.useCurtain){\r
75667 this._curtainOverlay=document.createElement("div");\r
75668 this._curtainOverlay.className="CurtainOverlay";\r
75669 this._curtainOverlay.style.position="absolute";\r
75670 Dwt.setBounds(this._curtainOverlay,0,0,"100%","100%");\r
75671 Dwt.setZIndex(this._curtainOverlay,Dwt.Z_CURTAIN);\r
75672 this._curtainOverlay.innerHTML="<table cellspacing=0 cellpadding=0 style='width:100%; height:100%'><tr><td>&nbsp;</td></tr></table>";\r
75673 o.appendChild(this._curtainOverlay)\r
75674 }\r
75675 this._uiEvent=new DwtUiEvent(true);\r
75676 this._currWinSize=Dwt.getWindowSize();\r
75677 this._toolTip=new DwtToolTip(this);\r
75678 this._hoverMgr=new DwtHoverMgr();\r
75679 this._keyboardMgr=new DwtKeyboardMgr(this)\r
75680 };\r
75681 DwtShell.prototype=new DwtComposite;\r
75682 DwtShell.prototype.constructor=DwtShell;\r
75683 DwtShell.CANCEL_BUTTON=-1;\r
75684 DwtShell.controlEvent=new DwtControlEvent();\r
75685 DwtShell.focusEvent=new DwtFocusEvent();\r
75686 DwtShell.keyEvent=new DwtKeyEvent();\r
75687 DwtShell.mouseEvent=new DwtMouseEvent();\r
75688 DwtShell.selectionEvent=new DwtSelectionEvent(true);\r
75689 DwtShell.treeEvent=new DwtTreeEvent();\r
75690 DwtShell.prototype.toString=function(){\r
75691 return"DwtShell"\r
75692 };\r
75693 DwtShell.getShell=function(e){\r
75694 return DwtControl.fromElementId(e._dwtShellId)\r
75695 };\r
75696 DwtShell.prototype.getKeyboardMgr=function(){\r
75697 return this._keyboardMgr\r
75698 };\r
75699 DwtShell.prototype.setBusy=function(o,n,t,a,e){\r
75700 if(o){\r
75701 this._setBusyCount++\r
75702 }else{\r
75703 if(this._setBusyCount>0){\r
75704 this._setBusyCount--\r
75705 }}\r
75706 if(!this._setBusy&&(this._setBusyCount>0)){\r
75707 Dwt.setCursor(this._busyOverlay,"wait");\r
75708 Dwt.setVisible(this._busyOverlay,true);\r
75709 this._setBusy=this._blockInput=true\r
75710 }else{\r
75711 if(this._setBusy&&(this._setBusyCount<=0)){\r
75712 Dwt.setCursor(this._busyOverlay,"default");\r
75713 Dwt.setVisible(this._busyOverlay,false);\r
75714 this._setBusy=this._blockInput=false\r
75715 }}\r
75716 if(o&&t){\r
75717 if(a&&a>0){\r
75718 this._busyActionId[n]=AjxTimedAction.scheduleAction(this._busyTimedAction,a)\r
75719 }else{\r
75720 this._showBusyDialogAction(n)\r
75721 }\r
75722 this._cancelBusyCallback=e;\r
75723 if(this._busyDialog){\r
75724 this._busyDialog.setButtonEnabled(DwtShell.CANCEL_BUTTON,(e!=null))\r
75725 }}else{\r
75726 if(this._busyActionId[n]&&(this._busyActionId[n]!=-1)){\r
75727 AjxTimedAction.cancelAction(this._busyActionId[n]);\r
75728 this._busyActionId[n]=-1\r
75729 }\r
75730 if(this._busyDialog&&this._busyDialog.isPoppedUp){\r
75731 this._busyDialog.popdown()\r
75732 }}};\r
75733 DwtShell.prototype.getBusy=function(){\r
75734 return this._setBusy\r
75735 };\r
75736 DwtShell.prototype.setBusyDialogText=function(e){\r
75737 this._busyDialogText=e;\r
75738 if(this._busyDialogTxt){\r
75739 this._busyDialogTxt.innerHTML=(e)?e:""\r
75740 }};\r
75741 DwtShell.prototype.setBusyDialogTitle=function(e){\r
75742 this._busyDialogTitle=e;\r
75743 if(this._busyDialog){\r
75744 this._busyDialog.setTitle((e)?e:AjxMsg.workInProgress)\r
75745 }};\r
75746 DwtShell.prototype.getHoverMgr=function(){\r
75747 return this._hoverMgr\r
75748 };\r
75749 DwtShell.prototype.getToolTip=function(){\r
75750 return this._toolTip\r
75751 };\r
75752 DwtShell.prototype.getH=function(e){\r
75753 return(!this._virtual)?Dwt.getSize(this.getHtmlElement(),e).y:Dwt.getSize(document.body,e).y\r
75754 };\r
75755 DwtShell.prototype.getW=function(e){\r
75756 return(!this._virtual)?Dwt.getSize(this.getHtmlElement(),e).x:Dwt.getSize(document.body,e).x\r
75757 };\r
75758 DwtShell.prototype.getSize=function(e){\r
75759 return(!this._virtual)?Dwt.getSize(this.getHtmlElement(),e):Dwt.getSize(document.body,e)\r
75760 };\r
75761 DwtShell.prototype.getLocation=function(){\r
75762 return(!this._virtual)?Dwt.getLocation(this.getHtmlElement()):Dwt.getLocation(document.body)\r
75763 };\r
75764 DwtShell.prototype.getX=function(){\r
75765 return(!this._virtual)?Dwt.getLocation(this.getHtmlElement()).x:Dwt.getLocation(document.body).x\r
75766 };\r
75767 DwtShell.prototype.getY=function(){\r
75768 return(!this._virtual)?Dwt.getLocation(this.getHtmlElement()).y:Dwt.getLocation(document.body).y\r
75769 };\r
75770 DwtShell.prototype.getBounds=function(e){\r
75771 return(!this._virtual)?Dwt.getBounds(this.getHtmlElement(),e):Dwt.getBounds(document.body,e)\r
75772 };\r
75773 DwtShell.prototype.setVirtual=function(){\r
75774 this._virtual=true;\r
75775 this.setVisible(false)\r
75776 };\r
75777 DwtShell.prototype.addFocusListener=function(e){\r
75778 if(!this._hasFocusHandler){\r
75779 var t=document;\r
75780 if(typeof t.onfocusin!="undefined"){\r
75781 t.attachEvent("onfocusin",DwtShell.__focusHdlr)\r
75782 }else{\r
75783 window.addEventListener("focus",DwtShell.__focusHdlr,false)\r
75784 }\r
75785 this._hasFocusHandler=true\r
75786 }\r
75787 this.addListener(DwtEvent.ONFOCUS,e)\r
75788 };\r
75789 DwtShell.prototype.addBlurListener=function(e){\r
75790 if(!this._hasBlurHandler){\r
75791 var t=document;\r
75792 if(typeof t.onfocusout!="undefined"){\r
75793 t.attachEvent("onfocusout",DwtShell.__blurHdlr)\r
75794 }else{\r
75795 window.addEventListener("blur",DwtShell.__blurHdlr,false)\r
75796 }\r
75797 this._hasBlurHandler=true\r
75798 }\r
75799 this.addListener(DwtEvent.ONBLUR,e)\r
75800 };\r
75801 DwtShell.prototype.isVirtual=function(){\r
75802 return this._virtual\r
75803 };\r
75804 DwtShell.prototype._showBusyDialogAction=function(t){\r
75805 var e=this._getBusyDialog();\r
75806 e.popup();\r
75807 this._busyActionId[t]=-1\r
75808 };\r
75809 DwtShell.prototype._createBusyOverlay=function(e){\r
75810 this._busyOverlay=document.createElement("div");\r
75811 this._busyOverlay.className=(!AjxEnv.isLinux)?"BusyOverlay":"BusyOverlay-linux";\r
75812 this._busyOverlay.style.position="absolute";\r
75813 Dwt.setBounds(this._busyOverlay,0,0,"100%","100%");\r
75814 Dwt.setZIndex(this._busyOverlay,Dwt.Z_VEIL);\r
75815 this._busyOverlay.innerHTML="<table cellspacing=0 cellpadding=0 style='width:100%; height:100%'><tr><td>&nbsp;</td></tr></table>";\r
75816 e.appendChild(this._busyOverlay);\r
75817 Dwt.setVisible(this._busyOverlay,false);\r
75818 this._busyTimedAction=new AjxTimedAction(this,this._showBusyDialogAction);\r
75819 this._busyActionId={};\r
75820 this._setBusyCount=0;\r
75821 this._setBusy=false\r
75822 };\r
75823 DwtShell.prototype._getBusyDialog=function(a){\r
75824 if(!this._busyDialog){\r
75825 var o=new DwtDialog_ButtonDescriptor(DwtShell.CANCEL_BUTTON,AjxMsg.cancelRequest,DwtDialog.ALIGN_CENTER);\r
75826 this._busyDialog=new DwtDialog({\r
75827 parent:this,className:"DwtShellBusyDialog",title:AjxMsg.workInProgress,standardButtons:DwtDialog.NO_BUTTONS,extraButtons:[o],zIndex:Dwt.BUSY+10}\r
75828 );\r
75829 this._busyDialog.registerCallback(DwtShell.CANCEL_BUTTON,this._busyCancelButtonListener,this);\r
75830 var t=Dwt.getNextId();\r
75831 var e=["<table class='DialogContent'><tr>","<td><div class='WaitIcon'></div></td><td class='MsgText' id='",t,"'>&nbsp;</td>","</tr></table>"].join("");\r
75832 this._busyDialog.setContent(e);\r
75833 this._busyDialogTxt=document.getElementById(t);\r
75834 if(this._busyDialogText){\r
75835 this._busyDialogTxt.innerHTML=this._busyDialogText\r
75836 }\r
75837 if(this._busyDialogTitle){\r
75838 this._busyDialog.setTitle(this._busyDialogTitle)\r
75839 }\r
75840 this._busyDialog.setButtonEnabled(DwtShell.CANCEL_BUTTON,(this._cancelBusyCallback!=null))\r
75841 }\r
75842 return this._busyDialog\r
75843 };\r
75844 DwtShell.prototype._busyCancelButtonListener=function(e){\r
75845 this._cancelBusyCallback.run();\r
75846 if(this._busyDialog){\r
75847 this._busyDialog.popdown()\r
75848 }};\r
75849 DwtShell._preventDefaultSelectPrt=function(t){\r
75850 var e=DwtControl.fromElementId(window._dwtShellId)._uiEvent;\r
75851 e.setFromDhtmlEvent(t,true);\r
75852 if(e.dwtObj&&e.dwtObj instanceof DwtControl&&!e.dwtObj.preventSelection(e.target)){\r
75853 e._stopPropagation=false;\r
75854 e._returnValue=true\r
75855 }else{\r
75856 e._stopPropagation=true;\r
75857 e._returnValue=false\r
75858 }\r
75859 e.setToDhtmlEvent(t);\r
75860 return !e._stopPropagation\r
75861 };\r
75862 DwtShell._preventDefaultPrt=function(t){\r
75863 t=DwtUiEvent.getEvent(t);\r
75864 var a=t.target?t.target:t.srcElement;\r
75865 var e=DwtControl.fromElementId(window._dwtShellId)._uiEvent;\r
75866 e.setFromDhtmlEvent(t,true);\r
75867 e._stopPropagation=true;\r
75868 e._returnValue=false;\r
75869 if(e.dwtObj&&e.dwtObj instanceof DwtControl&&!e.dwtObj.preventContextMenu(e.target)){\r
75870 e._stopPropagation=false;\r
75871 e._returnValue=true\r
75872 }else{\r
75873 if(a!=null&&typeof(a)=="object"){\r
75874 if((a.tagName=="A"||a.tagName=="a")&&a.href){\r
75875 e._stopPropagation=false;\r
75876 e._returnValue=true\r
75877 }}}\r
75878 e.setToDhtmlEvent(t);\r
75879 return e._returnValue\r
75880 };\r
75881 DwtShell._resizeHdlr=function(a){\r
75882 var t=DwtControl.fromElementId(window._dwtShellId);\r
75883 if(t.isListenerRegistered(DwtEvent.CONTROL)){\r
75884 var e=DwtShell.controlEvent;\r
75885 e.reset();\r
75886 e.oldWidth=t._currWinSize.x;\r
75887 e.oldHeight=t._currWinSize.y;\r
75888 t._currWinSize=Dwt.getWindowSize();\r
75889 e.newWidth=t._currWinSize.x;\r
75890 e.newHeight=t._currWinSize.y;\r
75891 t.notifyListeners(DwtEvent.CONTROL,e)\r
75892 }else{\r
75893 t._currWinSize=Dwt.getWindowSize()\r
75894 }};\r
75895 DwtShell.__onBodyScroll=function(){\r
75896 document.body.scrollTop=0;\r
75897 document.body.scrollLeft=0\r
75898 };\r
75899 DwtShell.__focusHdlr=function(){\r
75900 var t=DwtShell.focusEvent;\r
75901 var e=DwtShell.getShell(window);\r
75902 t.dwtObj=e;\r
75903 t.state=DwtFocusEvent.FOCUS;\r
75904 e.notifyListeners(DwtEvent.ONFOCUS,t)\r
75905 };\r
75906 DwtShell.__blurHdlr=function(){\r
75907 var t=DwtShell.focusEvent;\r
75908 var e=DwtShell.getShell(window);\r
75909 t.dwtObj=e;\r
75910 t.state=DwtFocusEvent.BLUR;\r
75911 e.notifyListeners(DwtEvent.ONBLUR,t)\r
75912 }\r
75913 }\r
75914 if(AjxPackage.define("ajax.dwt.widgets.DwtLabel")){\r
75915 DwtLabel=function(e){\r
75916 if(arguments.length==0){\r
75917 return\r
75918 }\r
75919 e=Dwt.getParams(arguments,DwtLabel.PARAMS);\r
75920 e.className=e.className||"DwtLabel";\r
75921 DwtControl.call(this,e);\r
75922 this._style=e.style||(DwtLabel.IMAGE_LEFT|DwtLabel.ALIGN_CENTER);\r
75923 this._textBackground=null;\r
75924 this._textForeground=null;\r
75925 this._createHtml()\r
75926 };\r
75927 DwtLabel.PARAMS=["parent","style","className","posStyle","id","index"];\r
75928 DwtLabel.prototype=new DwtControl;\r
75929 DwtLabel.prototype.constructor=DwtLabel;\r
75930 DwtLabel.prototype.toString=function(){\r
75931 return"DwtLabel"\r
75932 };\r
75933 DwtLabel.IMAGE_LEFT=1;\r
75934 DwtLabel.IMAGE_RIGHT=2;\r
75935 DwtLabel.ALIGN_LEFT=4;\r
75936 DwtLabel.ALIGN_RIGHT=8;\r
75937 DwtLabel.ALIGN_CENTER=16;\r
75938 DwtLabel._LAST_STYLE=16;\r
75939 DwtLabel.prototype.TEMPLATE="dwt.Widgets#ZLabel";\r
75940 DwtLabel.prototype.dispose=function(){\r
75941 delete this._dropDownEl;\r
75942 delete this._iconEl;\r
75943 delete this._textEl;\r
75944 DwtControl.prototype.dispose.call(this)\r
75945 };\r
75946 DwtLabel.prototype.setEnabled=function(e){\r
75947 if(e!=this._enabled){\r
75948 DwtControl.prototype.setEnabled.call(this,e);\r
75949 this.__setImage(this.__imageInfo)\r
75950 }};\r
75951 DwtLabel.prototype.getImage=function(){\r
75952 return this.__imageInfo\r
75953 };\r
75954 DwtLabel.prototype.setImage=function(e){\r
75955 this.__imageInfo=e;\r
75956 this.__setImage(e)\r
75957 };\r
75958 DwtLabel.prototype.setDisabledImage=function(e){};\r
75959 DwtLabel.prototype.getText=function(){\r
75960 return(this.__text!=null)?this.__text:null\r
75961 };\r
75962 DwtLabel.prototype.setText=function(e){\r
75963 if(!this._textEl){\r
75964 return\r
75965 }\r
75966 if(e==null||e==""){\r
75967 this.__text=null;\r
75968 this._textEl.innerHTML=""\r
75969 }else{\r
75970 this.__text=e;\r
75971 this._textEl.innerHTML=e\r
75972 }};\r
75973 DwtLabel.prototype.setTextBackground=function(e){\r
75974 this._textBackground=e;\r
75975 if(this._textEl){\r
75976 this._textEl.style.backgroundColor=e\r
75977 }};\r
75978 DwtLabel.prototype.setTextForeground=function(e){\r
75979 this._textForeground=e;\r
75980 if(this._textEl){\r
75981 this._textEl.style.color=e\r
75982 }};\r
75983 DwtLabel.prototype.setAlign=function(e){\r
75984 this._style=e;\r
75985 this.__setImage(this.__imageInfo)\r
75986 };\r
75987 DwtLabel.prototype.isStyle=function(e){\r
75988 return this._style&e\r
75989 };\r
75990 DwtLabel.prototype._createHtml=function(e){\r
75991 var t={\r
75992 id:this._htmlElId};\r
75993 this._createHtmlFromTemplate(e||this.TEMPLATE,t)\r
75994 };\r
75995 DwtLabel.prototype._createHtmlFromTemplate=function(e,t){\r
75996 DwtControl.prototype._createHtmlFromTemplate.call(this,e,t);\r
75997 this._textEl=document.getElementById(t.id+"_title")\r
75998 };\r
75999 DwtLabel.prototype._getIconEl=function(){\r
76000 var e=(this._style&DwtLabel.IMAGE_RIGHT?"right":"left");\r
76001 return this._iconEl||(this._iconEl=document.getElementById(this._htmlElId+"_"+e+"_icon"))\r
76002 };\r
76003 DwtLabel.prototype.__setImage=function(t){\r
76004 var e=this._getIconEl();\r
76005 if(e){\r
76006 if(t){\r
76007 AjxImg.setImage(e,t,null,!this._enabled);\r
76008 var a=(this._style&DwtLabel.IMAGE_RIGHT?"ZHasRightIcon":"ZHasLeftIcon");\r
76009 Dwt.addClass(this.getHtmlElement(),a)\r
76010 }else{\r
76011 e.innerHTML=""\r
76012 }}}\r
76013 }\r
76014 if(AjxPackage.define("ajax.dwt.widgets.DwtListView")){\r
76015 DwtListView=function(t){\r
76016 if(arguments.length==0){\r
76017 return\r
76018 }\r
76019 t=Dwt.getParams(arguments,DwtListView.PARAMS);\r
76020 t.className=t.className||"DwtListView";\r
76021 DwtComposite.call(this,t);\r
76022 this._view=t.view||Dwt.getNextId();\r
76023 if(t.headerList){\r
76024 var e=this.getHtmlElement();\r
76025 this._listColDiv=document.createElement("div");\r
76026 this._listColDiv.id=DwtId.getListViewId(this._view,DwtId.LIST_VIEW_HEADERS);\r
76027 this._listColDiv.className="DwtListView-ColHeader";\r
76028 e.appendChild(this._listColDiv);\r
76029 this._listDiv=document.createElement("div");\r
76030 this._listDiv.id=DwtId.getListViewId(this._view,DwtId.LIST_VIEW_ROWS);\r
76031 this._listDiv.className="DwtListView-Rows";\r
76032 e.appendChild(this._listDiv);\r
76033 this._bSortAsc=false;\r
76034 this._currentColId=null;\r
76035 this.sortingEnabled=true\r
76036 }else{\r
76037 this.setScrollStyle(DwtControl.SCROLL)\r
76038 }\r
76039 this._setMouseEventHdlrs();\r
76040 this._listenerMouseOver=new AjxListener(this,this._mouseOverListener);\r
76041 this._listenerMouseOut=new AjxListener(this,this._mouseOutListener);\r
76042 this._listenerMouseDown=new AjxListener(this,this._mouseDownListener);\r
76043 this._listenerMouseUp=new AjxListener(this,this._mouseUpListener);\r
76044 this._listenerMouseMove=new AjxListener(this,this._mouseMoveListener);\r
76045 this._listenerDoubleClick=new AjxListener(this,this._doubleClickListener);\r
76046 this.addListener(DwtEvent.ONMOUSEOVER,this._listenerMouseOver);\r
76047 this.addListener(DwtEvent.ONMOUSEOUT,this._listenerMouseOut);\r
76048 this.addListener(DwtEvent.ONMOUSEDOWN,this._listenerMouseDown);\r
76049 this.addListener(DwtEvent.ONMOUSEUP,this._listenerMouseUp);\r
76050 this.addListener(DwtEvent.ONMOUSEMOVE,this._listenerMouseMove);\r
76051 this.addListener(DwtEvent.ONDBLCLICK,this._listenerDoubleClick);\r
76052 this._evtMgr=new AjxEventMgr();\r
76053 this._selectedItems=new AjxVector();\r
76054 this._selAnchor=null;\r
76055 this._kbAnchor=null;\r
76056 this._selEv=new DwtSelectionEvent(true);\r
76057 this._actionEv=new DwtListViewActionEvent(true);\r
76058 this._stateChangeEv=new DwtEvent(true);\r
76059 this._headerList=t.headerList;\r
76060 this._noMaximize=t.noMaximize;\r
76061 this._parentEl=this._headerList?this._listDiv:this.getHtmlElement();\r
76062 this._list=null;\r
76063 this.offset=0;\r
76064 this.headerColCreated=false;\r
76065 this.multiSelectEnabled=true;\r
76066 this.firstSelIndex=-1;\r
76067 this._data={};\r
76068 this._rowClass=[this._className,DwtListView.ROW_CLASS].join("");\r
76069 var a=this._normalClass=DwtListView.ROW_CLASS;\r
76070 this._selectedClass=[a,DwtCssStyle.SELECTED].join("-");\r
76071 this._disabledSelectedClass=[this._selectedClass,DwtCssStyle.DISABLED].join("-");\r
76072 this._kbFocusClass=[a,DwtCssStyle.FOCUSED].join("-");\r
76073 this._dndClass=[a,DwtCssStyle.DRAG_PROXY].join("-");\r
76074 this._rightClickClass=[this._selectedClass,DwtCssStyle.ACTIONED].join("-");\r
76075 this._styleRe=this._getStyleRegex()\r
76076 };\r
76077 DwtListView.prototype=new DwtComposite;\r
76078 DwtListView.prototype.constructor=DwtListView;\r
76079 DwtListView.PARAMS=["parent","className","posStyle","headerList","noMaximize"];\r
76080 DwtListView.ITEM_SELECTED=1;\r
76081 DwtListView.ITEM_DESELECTED=2;\r
76082 DwtListView.ITEM_DBL_CLICKED=3;\r
76083 DwtListView._LAST_REASON=3;\r
76084 DwtListView._TOOLTIP_DELAY=250;\r
76085 DwtListView.HEADERITEM_HEIGHT=24;\r
76086 DwtListView.TYPE_HEADER_ITEM="1";\r
76087 DwtListView.TYPE_LIST_ITEM="2";\r
76088 DwtListView.TYPE_HEADER_SASH="3";\r
76089 DwtListView.DEFAULT_LIMIT=25;\r
76090 DwtListView.MAX_REPLENISH_THRESHOLD=10;\r
76091 DwtListView.MIN_COLUMN_WIDTH=20;\r
76092 DwtListView.COL_MOVE_THRESHOLD=3;\r
76093 DwtListView.ROW_CLASS="Row";\r
76094 DwtListView.ROW_CLASS_ODD="RowEven";\r
76095 DwtListView.ROW_CLASS_EVEN="RowOdd";\r
76096 DwtListView._STYLE_CLASS="_sc";\r
76097 DwtListView._SELECTED_STYLE_CLASS="_ssc";\r
76098 DwtListView._SELECTED_DIS_STYLE_CLASS="_sdsc";\r
76099 DwtListView._KBFOCUS_CLASS="_kfc";\r
76100 DwtListView.prototype.toString=function(){\r
76101 return"DwtListView"\r
76102 };\r
76103 DwtListView.prototype.dispose=function(){\r
76104 this._listColDiv=null;\r
76105 this._listDiv=null;\r
76106 this._parentEl=null;\r
76107 this._clickDiv=null;\r
76108 this._selectedItems=null;\r
76109 DwtComposite.prototype.dispose.call(this)\r
76110 };\r
76111 DwtListView.prototype.setEnabled=function(e){\r
76112 DwtComposite.prototype.setEnabled.call(this,e);\r
76113 this.removeListener(DwtEvent.ONMOUSEOVER,this._listenerMouseOver);\r
76114 this.removeListener(DwtEvent.ONMOUSEOUT,this._listenerMouseOut);\r
76115 this.removeListener(DwtEvent.ONMOUSEDOWN,this._listenerMouseDown);\r
76116 this.removeListener(DwtEvent.ONMOUSEUP,this._listenerMouseUp);\r
76117 this.removeListener(DwtEvent.ONMOUSEMOVE,this._listenerMouseMove);\r
76118 this.removeListener(DwtEvent.ONDBLCLICK,this._listenerDoubleClick);\r
76119 if(e){\r
76120 this.addListener(DwtEvent.ONMOUSEOVER,this._listenerMouseOver);\r
76121 this.addListener(DwtEvent.ONMOUSEOUT,this._listenerMouseOut);\r
76122 this.addListener(DwtEvent.ONMOUSEDOWN,this._listenerMouseDown);\r
76123 this.addListener(DwtEvent.ONMOUSEUP,this._listenerMouseUp);\r
76124 this.addListener(DwtEvent.ONMOUSEMOVE,this._listenerMouseMove);\r
76125 this.addListener(DwtEvent.ONDBLCLICK,this._listenerDoubleClick)\r
76126 }\r
76127 var a=this.getSelectedItems();\r
76128 if(a){\r
76129 var o=a.getArray();\r
76130 for(var t=0;\r
76131 t<o.length;\r
76132 t++){\r
76133 Dwt.delClass(o[t],this._styleRe,e?this._selectedClass:this._disabledSelectedClass)\r
76134 }}};\r
76135 DwtListView.prototype.createHeaderHtml=function(u){\r
76136 if(!this._headerList||this.headerColCreated){\r
76137 return\r
76138 }\r
76139 this._headerHash={};\r
76140 this._headerIdHash={};\r
76141 var m=0;\r
76142 var p=[];\r
76143 p[m++]="<table id='";\r
76144 p[m++]=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_TABLE,this._view);\r
76145 p[m++]="' cellpadding=0 cellspacing=0 border=0 height=100%";\r
76146 p[m++]=this._noMaximize?">":" width=100%>";\r
76147 p[m++]="<tr>";\r
76148 var o=this._headerList.length;\r
76149 for(var s=0;\r
76150 s<o;\r
76151 s++){\r
76152 var c=this._headerList[s];\r
76153 var d=c._field;\r
76154 c._index=s;\r
76155 var t=c._id=DwtId.getListViewHdrId(DwtId.WIDGET_HDR,this._view,d);\r
76156 this._headerHash[d]=c;\r
76157 this._headerIdHash[t]=c;\r
76158 if(c._variable){\r
76159 this._variableHeaderCol=c\r
76160 }\r
76161 if(c._visible){\r
76162 m=this._createHeader(p,m,c,s,o,t,u)\r
76163 }}\r
76164 p[m++]="</tr></table>";\r
76165 this._listColDiv.innerHTML=p.join("");\r
76166 var e=0,h;\r
76167 for(var n=0;\r
76168 n<this._headerList.length;\r
76169 n++){\r
76170 var c=this._headerList[n];\r
76171 var f=document.getElementById(c._id);\r
76172 if(!f){\r
76173 continue\r
76174 }\r
76175 if(c._sortable&&c._field==u){\r
76176 f.className="DwtListView-Column DwtListView-ColumnActive"\r
76177 }\r
76178 if(c._resizeable){\r
76179 var r=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_SASH,this._view,c._field);\r
76180 var a=document.getElementById(r);\r
76181 if(a){\r
76182 this.associateItemWithElement(c,a,DwtListView.TYPE_HEADER_SASH,r,{\r
76183 index:n}\r
76184 )\r
76185 }\r
76186 e++;\r
76187 h=c\r
76188 }\r
76189 this.associateItemWithElement(c,f,DwtListView.TYPE_HEADER_ITEM,c._id,{\r
76190 index:n}\r
76191 )\r
76192 }\r
76193 if(e==1){\r
76194 h._resizeable=false\r
76195 }\r
76196 this.headerColCreated=true\r
76197 };\r
76198 DwtListView.prototype._createHeader=function(m,u,h,n,o,t,d){\r
76199 var c=h._field;\r
76200 m[u++]="<td id='";\r
76201 m[u++]=t;\r
76202 m[u++]="' class='";\r
76203 m[u++]=(t==this._currentColId)?"DwtListView-Column DwtListView-ColumnActive'":"DwtListView-Column'";\r
76204 if(h._width){\r
76205 m[u++]=" width=";\r
76206 m[u++]=h._width;\r
76207 if(h._widthUnits){\r
76208 m[u++]=h._widthUnits\r
76209 }}\r
76210 m[u++]=">";\r
76211 m[u++]="<div";\r
76212 var s=null;\r
76213 if(h._width&&h._width!="auto"){\r
76214 if(AjxEnv.isIE){\r
76215 s=h._width\r
76216 }else{\r
76217 s=h._width+2\r
76218 }\r
76219 if(h._widthUnits){\r
76220 s+=h._widthUnits\r
76221 }}\r
76222 if(!!s){\r
76223 m[u++]=" style='overflow: hidden; width: ";\r
76224 m[u++]=s;\r
76225 m[u++]="'>"\r
76226 }else{\r
76227 m[u++]=">"\r
76228 }\r
76229 m[u++]="<table border=0 cellpadding=0 cellspacing=0 width=100%><tr>";\r
76230 if(h._iconInfo){\r
76231 var r=["id='",DwtId.getListViewHdrId(DwtId.WIDGET_HDR_ICON,this._view,c),"'"].join("");\r
76232 m[u++]="<td><center>";\r
76233 m[u++]=AjxImg.getImageHtml(h._iconInfo,null,r);\r
76234 m[u++]="</center></td>"\r
76235 }\r
76236 if(h._label){\r
76237 m[u++]="<td id='";\r
76238 m[u++]=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_LABEL,this._view,c);\r
76239 m[u++]="' class='DwtListHeaderItem-label'>";\r
76240 m[u++]=h._label;\r
76241 m[u++]="</td>"\r
76242 }\r
76243 if(h._sortable&&!h._noSortArrow){\r
76244 var e=this._bSortAsc?"ColumnUpArrow":"ColumnDownArrow";\r
76245 m[u++]="<td align=right style='padding-right:2px' width=100% id='";\r
76246 m[u++]=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_ARROW,this._view,c);\r
76247 m[u++]="'>";\r
76248 var a=(c==d);\r
76249 m[u++]=AjxImg.getImageHtml(e,a?null:"visibility:hidden");\r
76250 m[u++]="</td>";\r
76251 if(a){\r
76252 this._currentColId=t\r
76253 }}\r
76254 if(n<(o-1)){\r
76255 m[u++]="<td width=4>";\r
76256 m[u++]="<table align=right border=0 cellpadding=0 cellspacing=0 width=2 height=100%><tr>";\r
76257 m[u++]="<td class='DwtListView-Sash'><div style='width: 1px; height: ";\r
76258 m[u++]=(DwtListView.HEADERITEM_HEIGHT-2);\r
76259 m[u++]="px; background-color: #8A8A8A'></div></td><td id='";\r
76260 m[u++]=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_SASH,this._view,c);\r
76261 m[u++]="' class='DwtListView-Sash'><div style='width: 1px; height: ";\r
76262 m[u++]=(DwtListView.HEADERITEM_HEIGHT-2);\r
76263 m[u++]="px; background-color: #FFFFFF'></div></td></tr></table>";\r
76264 m[u++]="</td>"\r
76265 }\r
76266 m[u++]="</tr></table>";\r
76267 m[u++]="</div></td>";\r
76268 return u\r
76269 };\r
76270 DwtListView.prototype.getItemIndex=function(a){\r
76271 var o=this._list;\r
76272 if(o){\r
76273 var e=o.size();\r
76274 for(var t=0;\r
76275 t<e;\r
76276 ++t){\r
76277 if(o.get(t).id==a.id){\r
76278 return t\r
76279 }}}\r
76280 return null\r
76281 };\r
76282 DwtListView.prototype.setSize=function(t,e){\r
76283 DwtComposite.prototype.setSize.call(this,t,e);\r
76284 this._sizeChildren(e)\r
76285 };\r
76286 DwtListView.prototype.size=function(){\r
76287 return this._list?this._list.size():0\r
76288 };\r
76289 DwtListView.prototype.set=function(a,t,e){\r
76290 if(this._selectedItems){\r
76291 this._selectedItems.removeAll()\r
76292 }\r
76293 this._rightSelItem=null;\r
76294 this.sortingEnabled=true;\r
76295 this._resetList();\r
76296 this._list=a;\r
76297 this.setUI(t,e)\r
76298 };\r
76299 DwtListView.prototype.setUI=function(t,e){\r
76300 this.removeAll();\r
76301 this.createHeaderHtml(t);\r
76302 this._renderList(this._list,e)\r
76303 };\r
76304 DwtListView.prototype._renderList=function(r,s,a){\r
76305 if(r instanceof AjxVector&&r.size()){\r
76306 var t=new Date();\r
76307 var d=r.size();\r
76308 var h=[];\r
76309 for(var n=0;\r
76310 n<d;\r
76311 n++){\r
76312 var c=r.get(n);\r
76313 var e=this._createItemHtml(c,{\r
76314 now:t}\r
76315 ,!a,n);\r
76316 if(e){\r
76317 if(e instanceof Array){\r
76318 for(var o=0;\r
76319 o<e.length;\r
76320 o++){\r
76321 this._addRow(e[o])\r
76322 }}else{\r
76323 if(e.tagName||a){\r
76324 this._addRow(e)\r
76325 }else{\r
76326 h.push(e)\r
76327 }}}}\r
76328 if(h.length){\r
76329 this._parentEl.innerHTML=h.join("")\r
76330 }}else{\r
76331 if(!s){\r
76332 this._setNoResultsHtml()\r
76333 }}};\r
76334 DwtListView.prototype.addItems=function(e){\r
76335 if(AjxUtil.isArray(e)){\r
76336 if(!this._list){\r
76337 this._list=new AjxVector()\r
76338 }\r
76339 if(this._list.size()==0){\r
76340 this._resetList()\r
76341 }\r
76342 this._renderList(AjxVector.fromArray(e),null,true);\r
76343 this._list.addList(e)\r
76344 }};\r
76345 DwtListView.prototype.addItem=function(n,t,a,o){\r
76346 if(!this._list){\r
76347 this._list=new AjxVector()\r
76348 }\r
76349 if(this._list.size()==0){\r
76350 this._resetList()\r
76351 }\r
76352 this._list.add(n,(o!=null)?o:t);\r
76353 var s=this._createItemHtml(n);\r
76354 if(s){\r
76355 if(s instanceof Array){\r
76356 for(var e=0;\r
76357 e<s.length;\r
76358 e++){\r
76359 this._addRow(s[e])\r
76360 }}else{\r
76361 this._addRow(s,t)\r
76362 }}\r
76363 if(!a&&this._evtMgr.isListenerRegistered(DwtEvent.STATE_CHANGE)){\r
76364 this._evtMgr.notifyListeners(DwtEvent.STATE_CHANGE,this._stateChangeEv)\r
76365 }};\r
76366 DwtListView.prototype.removeItem=function(o,t){\r
76367 var e=this._getElFromItem(o);\r
76368 if(!e){\r
76369 return\r
76370 }\r
76371 var a=e.nextSibling;\r
76372 if(a){\r
76373 var n=Boolean(e.className&&(e.className.indexOf(DwtListView.ROW_CLASS_ODD)!=-1));\r
76374 while(a){\r
76375 n=!n;\r
76376 var s=n?DwtListView.ROW_CLASS_ODD:DwtListView.ROW_CLASS_EVEN;\r
76377 var r=n?DwtListView.ROW_CLASS_EVEN:DwtListView.ROW_CLASS_ODD;\r
76378 Dwt.delClass(a,s,r);\r
76379 a=a.nextSibling\r
76380 }}\r
76381 this._selectedItems.remove(e);\r
76382 if(this._rightSelItem==e){\r
76383 this._rightSelItem=null\r
76384 }\r
76385 if(this._kbAnchor==e){\r
76386 this._kbAnchor=null\r
76387 }\r
76388 this._parentEl.removeChild(e);\r
76389 if(this._list){\r
76390 this._list.remove(o)\r
76391 }\r
76392 var h=e.id;\r
76393 if(this._data[h]){\r
76394 this._data[h]=null;\r
76395 delete this._data[h]\r
76396 }\r
76397 if(!t&&this._evtMgr.isListenerRegistered(DwtEvent.STATE_CHANGE)){\r
76398 this._evtMgr.notifyListeners(DwtEvent.STATE_CHANGE,this._stateChangeEv)\r
76399 }};\r
76400 DwtListView.prototype.redrawItem=function(o){\r
76401 var n=this._getElFromItem(o);\r
76402 if(n){\r
76403 var s=this._createItemHtml(o);\r
76404 n.parentNode.replaceChild(s,n);\r
76405 var a=this.getSelectedItems().getArray();\r
76406 for(var t=0;\r
76407 t<a.length;\r
76408 t++){\r
76409 var e=a[t];\r
76410 if(e===o){\r
76411 this.setSelectedItems([].concat(a));\r
76412 break\r
76413 }}}};\r
76414 DwtListView.prototype.addSelectionListener=function(e){\r
76415 this._evtMgr.addListener(DwtEvent.SELECTION,e)\r
76416 };\r
76417 DwtListView.prototype.removeSelectionListener=function(e){\r
76418 this._evtMgr.removeListener(DwtEvent.SELECTION,e)\r
76419 };\r
76420 DwtListView.prototype.addActionListener=function(e){\r
76421 this._evtMgr.addListener(DwtEvent.ACTION,e)\r
76422 };\r
76423 DwtListView.prototype.removeActionListener=function(e){\r
76424 this._evtMgr.removeListener(DwtEvent.ACTION,e)\r
76425 };\r
76426 DwtListView.prototype.addStateChangeListener=function(e){\r
76427 this._evtMgr.addListener(DwtEvent.STATE_CHANGE,e)\r
76428 };\r
76429 DwtListView.prototype.removeStateChangeListener=function(e){\r
76430 this._evtMgr.removeListener(DwtEvent.STATE_CHANGE,e)\r
76431 };\r
76432 DwtListView.prototype.removeAll=function(e){\r
76433 if(this._parentEl){\r
76434 this._parentEl.innerHTML=""\r
76435 }\r
76436 if(this._selectedItems){\r
76437 this._selectedItems.removeAll()\r
76438 }\r
76439 this._rightSelItem=this._selAnchor=this._kbAnchor=null;\r
76440 if(!e&&this._evtMgr.isListenerRegistered(DwtEvent.STATE_CHANGE)){\r
76441 this._evtMgr.notifyListeners(DwtEvent.STATE_CHANGE,this._stateChangeEv)\r
76442 }};\r
76443 DwtListView.prototype.selectAll=function(){\r
76444 if(this._list&&this._list.size()){\r
76445 this.setSelectedItems(this._list.getArray())\r
76446 }};\r
76447 DwtListView.prototype.deselectAll=function(){\r
76448 var e=this._selectedItems.getArray();\r
76449 var o=this._selectedItems.size();\r
76450 for(var t=0;\r
76451 t<o;\r
76452 t++){\r
76453 Dwt.delClass(e[t],this._styleRe)\r
76454 }\r
76455 this._selectedItems.removeAll();\r
76456 this._rightSelItem=this._selAnchor=null;\r
76457 if(this._kbAnchor!=null&&this.hasFocus()){\r
76458 Dwt.addClass(this._kbAnchor,this._kbFocusClass)\r
76459 }};\r
76460 DwtListView.prototype.getDnDSelection=function(){\r
76461 if(this._dndSelection instanceof AjxVector){\r
76462 return this.getSelection()\r
76463 }else{\r
76464 return this.getItemFromElement(this._dndSelection)\r
76465 }};\r
76466 DwtListView.prototype.getSelection=function(){\r
76467 var t=[];\r
76468 if(this._rightSelItem){\r
76469 t.push(this.getItemFromElement(this._rightSelItem))\r
76470 }else{\r
76471 if(this._selectedItems){\r
76472 var e=this._selectedItems.getArray();\r
76473 var n=this._selectedItems.size();\r
76474 for(var o=0;\r
76475 o<n;\r
76476 o++){\r
76477 t[o]=this.getItemFromElement(e[o])\r
76478 }}}\r
76479 return t\r
76480 };\r
76481 DwtListView.prototype.getSelectedItems=function(){\r
76482 return this._selectedItems\r
76483 };\r
76484 DwtListView.prototype.setSelection=function(a,e){\r
76485 if(!a){\r
76486 return\r
76487 }\r
76488 var t=this._getElFromItem(a);\r
76489 if(t){\r
76490 if((this._selectedItems.size()==1)&&(this._selectedItems.get(0)==t)){\r
76491 return\r
76492 }\r
76493 this.deselectAll();\r
76494 this._unmarkKbAnchorElement(true);\r
76495 this._selectedItems.add(t);\r
76496 this._selAnchor=this._kbAnchor=t;\r
76497 Dwt.delClass(t,this._styleRe,this.getEnabled()?this._selectedClass:this._disabledSelectedClass);\r
76498 if(this.hasFocus()){\r
76499 Dwt.addClass(t,this._kbFocusClass)\r
76500 }\r
76501 this.firstSelIndex=(this._list&&this._list.size()>0)?this._list.indexOf(a):-1;\r
76502 this._scrollList(t);\r
76503 if(!e&&this._evtMgr.isListenerRegistered(DwtEvent.SELECTION)){\r
76504 var o=new DwtSelectionEvent(true);\r
76505 o.button=DwtMouseEvent.LEFT;\r
76506 o.target=t;\r
76507 o.item=this.getItemFromElement(t);\r
76508 o.detail=DwtListView.ITEM_SELECTED;\r
76509 o.ersatz=true;\r
76510 this._evtMgr.notifyListeners(DwtEvent.SELECTION,o)\r
76511 }}};\r
76512 DwtListView.prototype.setMultiSelection=function(e,n,a){\r
76513 if(n){\r
76514 this._selectedItems.remove(e);\r
76515 Dwt.delClass(e,this._styleRe);\r
76516 this._selEv.detail=DwtListView.ITEM_DESELECTED\r
76517 }else{\r
76518 this._selectedItems.add(e,null,true);\r
76519 Dwt.delClass(e,this._styleRe,this._selectedClass);\r
76520 this._selEv.detail=DwtListView.ITEM_SELECTED\r
76521 }\r
76522 if(this._kbAnchor&&this._kbAnchor!=e){\r
76523 var o=this._kbAnchor;\r
76524 var t=this._selectedClass;\r
76525 if(o.className.indexOf(t)!=-1){\r
76526 Dwt.delClass(o,this._styleRe,t)\r
76527 }else{\r
76528 Dwt.delClass(o,this._styleRe)\r
76529 }}\r
76530 this._selAnchor=this._kbAnchor=e;\r
76531 Dwt.addClass(this._kbAnchor,this._kbFocusClass)\r
76532 };\r
76533 DwtListView.prototype.setSelectedItems=function(a){\r
76534 this.deselectAll();\r
76535 var o=a.length;\r
76536 for(var e=0;\r
76537 e<o;\r
76538 ++e){\r
76539 var t=this._getElFromItem(a[e]);\r
76540 if(t){\r
76541 Dwt.delClass(t,this._styleRe,this.getEnabled()?this._selectedClass:this._disabledSelectedClass);\r
76542 if(this._kbAnchor==t&&this.hasFocus()){\r
76543 Dwt.addClass(t,this._kbFocusClass)\r
76544 }\r
76545 this._selectedItems.add(t)\r
76546 }}};\r
76547 DwtListView.prototype.getSelectionCount=function(){\r
76548 return this._rightSelItem?1:this._selectedItems.size()\r
76549 };\r
76550 DwtListView.prototype.handleActionPopdown=function(){\r
76551 this._clearRightSel()\r
76552 };\r
76553 DwtListView.prototype.associateItemWithElement=function(o,t,a,s,n){\r
76554 s=s||this._getItemId(o);\r
76555 if(t){\r
76556 t.id=s\r
76557 }\r
76558 a=a||DwtListView.TYPE_LIST_ITEM;\r
76559 this._data[s]={\r
76560 item:o,id:s,type:a};\r
76561 if(n){\r
76562 for(var e in n){\r
76563 this._data[s][e]=n[e]\r
76564 }}\r
76565 return s\r
76566 };\r
76567 DwtListView.prototype.getItemFromElement=function(e){\r
76568 return this._getItemData(e,"item")\r
76569 };\r
76570 DwtListView.prototype.findItem=function(e){\r
76571 if(!e){\r
76572 return\r
76573 }\r
76574 var t=this.findItemDiv(e);\r
76575 return this._getItemData(t,"item")\r
76576 };\r
76577 DwtListView.prototype.findItemDiv=function(e){\r
76578 if(!e){\r
76579 return\r
76580 }\r
76581 while(e&&(e.id!=this._htmlElId)){\r
76582 if(e.id&&this._data[e.id]){\r
76583 return e\r
76584 }\r
76585 e=e.parentNode\r
76586 }\r
76587 return null\r
76588 };\r
76589 DwtListView.prototype.getTargetItem=function(e){\r
76590 return this.findItem(DwtUiEvent.getTarget(e))\r
76591 };\r
76592 DwtListView.prototype.getTargetItemDiv=function(e){\r
76593 return this.findItemDiv(DwtUiEvent.getTarget(e))\r
76594 };\r
76595 DwtListView.prototype.dragSelect=function(t){\r
76596 if(this._dragHighlight){\r
76597 var e=document.getElementById(this._dragHighlight);\r
76598 if(!t||t.id!=e.id){\r
76599 this._updateDragSelection(e,false)\r
76600 }}\r
76601 if(!t){\r
76602 return\r
76603 }\r
76604 if(this._getItemData(t,"type")!=DwtListView.TYPE_LIST_ITEM){\r
76605 return\r
76606 }\r
76607 if(t.id!=this._dragHighlight){\r
76608 this._dragHighlight=t.id;\r
76609 this._updateDragSelection(t,true)\r
76610 }};\r
76611 DwtListView.prototype.dragDeselect=function(t){\r
76612 if(this._dragHighlight){\r
76613 var e=document.getElementById(this._dragHighlight);\r
76614 this._updateDragSelection(e,false);\r
76615 this._dragHighlight=null\r
76616 }};\r
76617 DwtListView.prototype.scrollToTop=function(){\r
76618 this._listDiv.scrollTop=0\r
76619 };\r
76620 DwtListView.prototype.setSortByAsc=function(a,t){\r
76621 if(!this._headerList){\r
76622 return\r
76623 }\r
76624 this._bSortAsc=t;\r
76625 var o=null;\r
76626 for(var e=0;\r
76627 e<this._headerList.length;\r
76628 e++){\r
76629 if(this._headerList[e]._sortable&&this._headerList[e]._field==a){\r
76630 o=this._headerList[e]._id;\r
76631 break\r
76632 }}\r
76633 if(o){\r
76634 this._setSortedColStyle(o)\r
76635 }};\r
76636 DwtListView.prototype.getNewOffset=function(t){\r
76637 var e=this.getLimit();\r
76638 var a=t?(this.offset+e):(this.offset-e);\r
76639 return(a<0)?0:a\r
76640 };\r
76641 DwtListView.prototype.getLimit=function(){\r
76642 return DwtListView.DEFAULT_LIMIT\r
76643 };\r
76644 DwtListView.prototype.getReplenishThreshold=function(){\r
76645 return DwtListView.MAX_REPLENISH_THRESHOLD\r
76646 };\r
76647 DwtListView.prototype.getList=function(){\r
76648 return this._list\r
76649 };\r
76650 DwtListView.prototype.replenish=function(o){\r
76651 this._list.addList(o);\r
76652 var t=o.size();\r
76653 for(var e=0;\r
76654 e<t;\r
76655 e++){\r
76656 var a=o.get(e);\r
76657 var n=this._createItemHtml(a);\r
76658 if(n){\r
76659 this._addRow(n)\r
76660 }}};\r
76661 DwtListView.prototype.getKeyMapName=function(){\r
76662 return"DwtListView"\r
76663 };\r
76664 DwtListView.prototype.handleKeyAction=function(n,h){\r
76665 switch(n){\r
76666 case DwtKeyMap.SELECT:this._emulateSingleClick({\r
76667 target:this._kbAnchor,button:DwtMouseEvent.LEFT,kbNavEvent:true}\r
76668 );\r
76669 break;\r
76670 case DwtKeyMap.SELECT_CURRENT:this._emulateSingleClick({\r
76671 target:this._kbAnchor,button:DwtMouseEvent.LEFT,ctrlKey:true,kbNavEvent:true}\r
76672 );\r
76673 break;\r
76674 case DwtKeyMap.SELECT_NEXT:this._selectItem(true,false,true);\r
76675 break;\r
76676 case DwtKeyMap.SELECT_PREV:this._selectItem(false,false,true);\r
76677 break;\r
76678 case DwtKeyMap.ADD_SELECT_NEXT:this._selectItem(true,true,true);\r
76679 break;\r
76680 case DwtKeyMap.ADD_SELECT_PREV:this._selectItem(false,true,true);\r
76681 break;\r
76682 case DwtKeyMap.PREV:this._setKbFocusElement(false);\r
76683 break;\r
76684 case DwtKeyMap.NEXT:this._setKbFocusElement(true);\r
76685 break;\r
76686 case DwtKeyMap.DBLCLICK:if(!this._kbAnchor){\r
76687 break\r
76688 }\r
76689 var t=false;\r
76690 var d=this.getSelectedItems().getArray();\r
76691 for(var o=0;\r
76692 o<d.length;\r
76693 o++){\r
76694 if(d[o]==this._kbAnchor){\r
76695 t=true;\r
76696 break\r
76697 }}\r
76698 if(t){\r
76699 this.emulateDblClick(this.getItemFromElement(this._kbAnchor),true)\r
76700 }else{\r
76701 this._emulateSingleClick({\r
76702 target:this._kbAnchor,button:DwtMouseEvent.LEFT,kbNavEvent:true}\r
76703 )\r
76704 }\r
76705 break;\r
76706 case DwtKeyMap.SELECT_ALL:this.selectAll();\r
76707 break;\r
76708 case DwtKeyMap.SELECT_FIRST:case DwtKeyMap.SELECT_LAST:var u=(n==DwtKeyMap.SELECT_FIRST)?this._getFirstItem():this._getLastItem();\r
76709 if(u){\r
76710 this.setSelection(u);\r
76711 this._scrollList(this._kbAnchor)\r
76712 }\r
76713 break;\r
76714 case DwtKeyMap.ACTION:if(this._evtMgr.isListenerRegistered(DwtEvent.ACTION)){\r
76715 var e=Dwt.toWindow(this._kbAnchor,0,0);\r
76716 var m=Dwt.getSize(this._kbAnchor);\r
76717 var c=e.x+m.x/4;\r
76718 var r=e.y+m.y/2;\r
76719 this._emulateSingleClick({\r
76720 target:this._kbAnchor,button:DwtMouseEvent.RIGHT,docX:c,docY:r,kbNavEvent:true}\r
76721 )\r
76722 }\r
76723 break;\r
76724 default:return false\r
76725 }\r
76726 return true\r
76727 };\r
76728 DwtListView.prototype.setMultiSelect=function(e){\r
76729 this.multiSelectEnabled=e\r
76730 };\r
76731 DwtListView.prototype.isMultiSelectEnabled=function(){\r
76732 return this.multiSelectEnabled\r
76733 };\r
76734 DwtListView.prototype.setListDivHeight=function(a){\r
76735 if(this._listDiv&&this._listColDiv){\r
76736 var t=Dwt.getSize(this._listColDiv).y;\r
76737 var e=a-t;\r
76738 Dwt.setSize(this._listDiv,Dwt.DEFAULT,e)\r
76739 }};\r
76740 DwtListView.prototype._getStyleRegex=function(){\r
76741 return new RegExp("\\b("+[this._disabledSelectedClass,this._selectedClass,this._kbFocusClass,this._dndClass,this._rightClickClass].join("|")+")\\b","g")\r
76742 };\r
76743 DwtListView.prototype._addRow=function(h,t){\r
76744 if(!h||!this._parentEl){\r
76745 return\r
76746 }\r
76747 var e=this._parentEl.childNodes.length;\r
76748 var o=Boolean((t!=null?t:e)%2);\r
76749 var n=o?DwtListView.ROW_CLASS_ODD:DwtListView.ROW_CLASS_EVEN;\r
76750 var r=o?DwtListView.ROW_CLASS_EVEN:DwtListView.ROW_CLASS_ODD;\r
76751 Dwt.delClass(h,n,r);\r
76752 if(t!=null&&e>0&&t!=e){\r
76753 var s=this._parentEl.childNodes;\r
76754 this._parentEl.insertBefore(h,s[t]);\r
76755 var a=h.nextSibling;\r
76756 while(a){\r
76757 o=!o;\r
76758 n=o?DwtListView.ROW_CLASS_ODD:DwtListView.ROW_CLASS_EVEN;\r
76759 r=o?DwtListView.ROW_CLASS_EVEN:DwtListView.ROW_CLASS_ODD;\r
76760 Dwt.delClass(a,n,r);\r
76761 a=a.nextSibling\r
76762 }}else{\r
76763 this._parentEl.appendChild(h)\r
76764 }};\r
76765 DwtListView.prototype._createItemHtml=function(d,a,s,n){\r
76766 a=a||{};\r
76767 this._addParams(d,a,c,h);\r
76768 var e;\r
76769 var c=[];\r
76770 var h=0;\r
76771 if(s){\r
76772 h=this._getDivHtml(d,a,c,h,n)\r
76773 }else{\r
76774 e=a.div||this._getDiv(d,a)\r
76775 }\r
76776 h=this._getTable(c,h,a);\r
76777 h=this._getRow(c,h,d,a);\r
76778 var t=a.headerList||this._headerList;\r
76779 if(t&&t.length){\r
76780 for(var o=0;\r
76781 o<t.length;\r
76782 o++){\r
76783 if(!t[o]._visible){\r
76784 continue\r
76785 }\r
76786 var r=t[o]._field;\r
76787 h=this._getCell(c,h,d,r,o,a)\r
76788 }}else{\r
76789 h=this._getCell(c,h,d,null,null,a)\r
76790 }\r
76791 c[h++]="</tr></table>";\r
76792 if(s){\r
76793 c[h++]="</div>";\r
76794 return c.join("")\r
76795 }\r
76796 e.innerHTML=c.join("");\r
76797 return e\r
76798 };\r
76799 DwtListView.prototype._addParams=function(e,t){};\r
76800 DwtListView.prototype._getDiv=function(e,t){\r
76801 var o=document.createElement("div");\r
76802 if(t.isDragProxy&&AjxEnv.isMozilla){\r
76803 o.style.overflow="visible"\r
76804 }\r
76805 o.className=this._getDivClass(this._normalClass,e,t);\r
76806 if(t.isDragProxy){\r
76807 Dwt.setPosition(o,Dwt.ABSOLUTE_STYLE)\r
76808 }\r
76809 var a=t.isDragProxy?this._getItemId(e)+"_dnd":null;\r
76810 this.associateItemWithElement(e,o,null,a);\r
76811 return o\r
76812 };\r
76813 DwtListView.prototype._getDivHtml=function(n,s,t,e,o){\r
76814 t[e++]="<div class='";\r
76815 t[e++]=this._getDivClass(this._normalClass,n,s);\r
76816 t[e++]=" ";\r
76817 t[e++]=(o%2)?DwtListView.ROW_CLASS_EVEN:DwtListView.ROW_CLASS_ODD;\r
76818 t[e++]="'";\r
76819 var a=[];\r
76820 if(s.isDragProxy&&AjxEnv.isMozilla){\r
76821 a.push("overflow:visible")\r
76822 }\r
76823 if(s.isDragProxy){\r
76824 a.push("position:absolute")\r
76825 }\r
76826 if(a.length){\r
76827 t[e++]=" style='";\r
76828 t[e++]=a.join(";");\r
76829 t[e++]="'"\r
76830 }\r
76831 var r=s.isDragProxy?this._getItemId(n)+"_dnd":null;\r
76832 t[e++]=" id='";\r
76833 t[e++]=this.associateItemWithElement(n,null,null,r);\r
76834 t[e++]="'>";\r
76835 return e\r
76836 };\r
76837 DwtListView.prototype._getDivClass=function(t,e,a){\r
76838 return a.isDragProxy?([t," ",t,"-",DwtCssStyle.DRAG_PROXY].join("")):t\r
76839 };\r
76840 DwtListView.prototype._getTable=function(t,e,a){\r
76841 t[e++]="<table cellpadding=0 cellspacing=0 border=0 width=";\r
76842 t[e++]=!a.isDragProxy?"100%>":(this.getSize().x+">");\r
76843 return e\r
76844 };\r
76845 DwtListView.prototype._getRow=function(t,e,o,s){\r
76846 var n=this._getRowId(o,s)||Dwt.getNextId();\r
76847 var a=this._getRowClass(o,s);\r
76848 t[e++]=n?["<tr id='",n,"'"].join(""):"<tr";\r
76849 t[e++]=a?([" class='",a,"'>"].join("")):">";\r
76850 return e\r
76851 };\r
76852 DwtListView.prototype._getRowClass=function(e,t){\r
76853 return null\r
76854 };\r
76855 DwtListView.prototype._getRowId=function(e,t){\r
76856 return null\r
76857 };\r
76858 DwtListView.prototype._getCell=function(p,f,y,u,n,o){\r
76859 var a=this._getCellId(y,u,o);\r
76860 var m=a?[" id=","'",a,"'"].join(""):"";\r
76861 var t=this._getCellWidth(n,o);\r
76862 var h=t?([" width=",t].join("")):(" width='100%'");\r
76863 var c=this._getCellClass(y,u,o);\r
76864 var s=c?[" class=",c].join(""):"";\r
76865 var g=this._getCellAlign(n,o);\r
76866 var d=g?[" align=",g].join(""):"";\r
76867 var e=(this._getCellAttrText(y,u,o))||"";\r
76868 var r=[m,h,s,d,e].join(" ");\r
76869 p[f++]="<td";\r
76870 p[f++]=r?(" "+r):"";\r
76871 p[f++]=">";\r
76872 f=this._getCellContents(p,f,y,u,n,o);\r
76873 p[f++]="</td>";\r
76874 return f\r
76875 };\r
76876 DwtListView.prototype._getCellWidth=function(o,a){\r
76877 if(o==null){\r
76878 return null\r
76879 }\r
76880 var e=a.headerList||this._headerList;\r
76881 var t=e[o]._width;\r
76882 if(t){\r
76883 if(AjxEnv.isIE){\r
76884 return(t+2)\r
76885 }\r
76886 if(AjxEnv.isSafari){\r
76887 return(t+5)\r
76888 }\r
76889 return t\r
76890 }\r
76891 return null\r
76892 };\r
76893 DwtListView.prototype._getCellAlign=function(a,t){\r
76894 if(a==null){\r
76895 return null\r
76896 }\r
76897 var e=t.headerList||this._headerList;\r
76898 return e[a]._align\r
76899 };\r
76900 DwtListView.prototype._getCellId=function(e,t,a){\r
76901 return null\r
76902 };\r
76903 DwtListView.prototype._getCellClass=function(e,t,a){\r
76904 return null\r
76905 };\r
76906 DwtListView.prototype._getCellAttrText=function(e,t,a){\r
76907 return null\r
76908 };\r
76909 DwtListView.prototype._getCellContents=function(t,e,a,o,s,n){\r
76910 t[e++]=a.toString?a.toString():a;\r
76911 return e\r
76912 };\r
76913 DwtListView.prototype._getFieldId=function(e,t){\r
76914 return DwtId.getListViewItemId(DwtId.WIDGET_ITEM_FIELD,this._view,e.id,t)\r
76915 };\r
76916 DwtListView.prototype._getElement=function(e,t){\r
76917 return document.getElementById(this._getFieldId(e,t))\r
76918 };\r
76919 DwtListView.prototype._getDragProxy=function(o){\r
76920 var n=this.getDnDSelection();\r
76921 if(!n){\r
76922 return null\r
76923 }\r
76924 var r;\r
76925 var e;\r
76926 var t;\r
76927 this._dndImg=null;\r
76928 if(!(n instanceof Array)||n.length==1){\r
76929 var c=(n instanceof Array)?n[0]:n;\r
76930 r=this._createItemHtml(c,{\r
76931 now:new Date(),isDragProxy:true}\r
76932 );\r
76933 this._setItemData(r,"origClassName",r.className);\r
76934 Dwt.setPosition(r,Dwt.ABSOLUTE_STYLE);\r
76935 t="position:absolute;top:18;left:-11;visibility:hidden"\r
76936 }else{\r
76937 r=document.createElement("div");\r
76938 r.className="DragProxy";\r
76939 Dwt.setPosition(r,Dwt.ABSOLUTE_STYLE);\r
76940 AjxImg.setImage(r,"DndMultiYes_48");\r
76941 this._dndImg=r;\r
76942 e=document.createElement("div");\r
76943 Dwt.setPosition(e,Dwt.ABSOLUTE_STYLE);\r
76944 var h=this.allSelected?ZmMsg.all:n.length;\r
76945 e.innerHTML="<table><tr><td class='DragProxyTextLabel'>"+h+"</td></tr></table>";\r
76946 r.appendChild(e);\r
76947 t="position:absolute;top:30;left:0;visibility:hidden";\r
76948 Dwt.setBounds(r,Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE,43+32-16,36+32-20)\r
76949 }\r
76950 var a=AjxImg.getImageHtml("RoundPlus",t,"id="+DwtId.DND_PLUS_ID);\r
76951 if(!this._noDndPlusImage){\r
76952 r.appendChild(Dwt.parseHtmlFragment(a))\r
76953 }\r
76954 this.shell.getHtmlElement().appendChild(r);\r
76955 if(e){\r
76956 var s=Dwt.getSize(e);\r
76957 Dwt.setLocation(e,16+(32-s.x)/2,19+(32-s.y)/2)\r
76958 }\r
76959 Dwt.setZIndex(r,Dwt.Z_DND);\r
76960 \r
76961 return r\r
76962 };\r
76963 DwtListView.prototype._setDragProxyState=function(t){\r
76964 if(this._dndImg){\r
76965 AjxImg.setImage(this._dndImg,t?"DndMultiYes_48":"DndMultiNo_48")\r
76966 }else{\r
76967 if(this._dndProxy){\r
76968 var a=t?DwtCssStyle.DROPPABLE:DwtCssStyle.NOT_DROPPABLE;\r
76969 var e=this._getItemData(this._dndProxy,"origClassName");\r
76970 this._dndProxy.className=[e,a].join(" ")\r
76971 }}};\r
76972 DwtListView.prototype._setNoResultsHtml=function(){\r
76973 var t=document.createElement("div");\r
76974 var e={\r
76975 message:this._getNoResultsMessage(),type:this.type};\r
76976 t.innerHTML=AjxTemplate.expand("dwt.Widgets#DwtListView-NoResults",e);\r
76977 this._addRow(t)\r
76978 };\r
76979 DwtListView.prototype._getNoResultsMessage=function(){\r
76980 return AjxMsg.noResults\r
76981 };\r
76982 DwtListView.prototype._clearRightSel=function(){\r
76983 if(this._rightSelItem){\r
76984 Dwt.delClass(this._rightSelItem,this._styleRe);\r
76985 this._rightSelItem=null\r
76986 }};\r
76987 DwtListView.prototype._getItemId=function(e){\r
76988 return DwtId.getListViewItemId(DwtId.WIDGET_ITEM,this._view,(e&&e.id)?e.id:Dwt.getNextId())\r
76989 };\r
76990 DwtListView.prototype._getElFromItem=function(e){\r
76991 return Dwt.byId(this._getItemId(e))\r
76992 };\r
76993 DwtListView.prototype._getRowIndex=function(t){\r
76994 var o=this._getItemId(t);\r
76995 var a=this._parentEl.childNodes;\r
76996 for(var e=0;\r
76997 e<a.length;\r
76998 e++){\r
76999 if(a[e].id==o){\r
77000 return e\r
77001 }}\r
77002 return null\r
77003 };\r
77004 DwtListView.prototype._getItemData=function(e,a,o){\r
77005 o=o||(e?e.id:null);\r
77006 var t=this._data[o];\r
77007 return t?t[a]:null\r
77008 };\r
77009 DwtListView.prototype._setItemData=function(e,o,a,n){\r
77010 n=n||(e?e.id:null);\r
77011 var t=this._data[n];\r
77012 if(t){\r
77013 t[o]=a\r
77014 }};\r
77015 DwtListView.prototype._isValidDragObject=function(e){\r
77016 return(this.getTargetItemDiv(e)!=null)\r
77017 };\r
77018 DwtListView.prototype._updateDragSelection=function(t,e){\r
77019 if(!e){\r
77020 t.className=this._getItemData(t,"origClassName")\r
77021 }else{\r
77022 this._setItemData(t,"origClassName",t.className);\r
77023 Dwt.delClass(t,this._styleRe,this._dndClass)\r
77024 }};\r
77025 DwtListView.prototype._mouseOverAction=function(t,o){\r
77026 var e=this._getItemData(o,"type");\r
77027 if(e==DwtListView.TYPE_HEADER_ITEM){\r
77028 var a=this.getItemFromElement(o);\r
77029 if(a&&this.sortingEnabled&&a._sortable&&!this._headerClone){\r
77030 o.className="DwtListView-Column DwtListView-ColumnHover"\r
77031 }}else{\r
77032 if(e==DwtListView.TYPE_HEADER_SASH){\r
77033 o.style.cursor=AjxEnv.isIE?"col-resize":"e-resize"\r
77034 }}\r
77035 return true\r
77036 };\r
77037 DwtListView.prototype._mouseOutAction=function(t,a){\r
77038 var e=this._getItemData(a,"type");\r
77039 if(e==DwtListView.TYPE_HEADER_ITEM&&!this._headerClone){\r
77040 a.className=(a.id!=this._currentColId)?"DwtListView-Column":"DwtListView-Column DwtListView-ColumnActive"\r
77041 }else{\r
77042 if(e==DwtListView.TYPE_HEADER_SASH){\r
77043 a.style.cursor="auto"\r
77044 }}\r
77045 return true\r
77046 };\r
77047 DwtListView.prototype._mouseOverListener=function(e){\r
77048 var t=this.getTargetItemDiv(e);\r
77049 if(!t){\r
77050 return\r
77051 }\r
77052 this._mouseOverAction(e,t)\r
77053 };\r
77054 DwtListView.prototype._mouseOutListener=function(e){\r
77055 var t=this.getTargetItemDiv(e);\r
77056 if(!t){\r
77057 return\r
77058 }\r
77059 this.setToolTipContent(null);\r
77060 this._mouseOutAction(e,t)\r
77061 };\r
77062 DwtListView.prototype._mouseMoveListener=function(t){\r
77063 if(!this._clickDiv){\r
77064 return\r
77065 }\r
77066 var e=this._getItemData(this._clickDiv,"type");\r
77067 if(e==DwtListView.TYPE_HEADER_ITEM){\r
77068 this._handleColHeaderMove(t)\r
77069 }else{\r
77070 if(e==DwtListView.TYPE_HEADER_SASH){\r
77071 this._handleColHeaderResize(t)\r
77072 }}};\r
77073 DwtListView.prototype._mouseUpAction=function(e,t){\r
77074 return true\r
77075 };\r
77076 DwtListView.prototype._mouseDownListener=function(e){\r
77077 var t=this.getTargetItemDiv(e);\r
77078 if(!t){\r
77079 this._dndSelection=null\r
77080 }else{\r
77081 this._clickDiv=t;\r
77082 if(this._getItemData(t,"type")!=DwtListView.TYPE_LIST_ITEM){\r
77083 this._dndSelection=null\r
77084 }else{\r
77085 this._dndSelection=(this._selectedItems.contains(t))?this._selectedItems:t\r
77086 }}\r
77087 this._mouseDownAction(e,t)\r
77088 };\r
77089 DwtListView.prototype._mouseDownAction=function(e,t){\r
77090 return true\r
77091 };\r
77092 DwtListView.prototype._mouseUpListener=function(a){\r
77093 var s=this.getTargetItemDiv(a);\r
77094 var n=this._handleColHeaderDrop(a);\r
77095 var e=this._handleColSashDrop(a);\r
77096 if(!s||s!=this._clickDiv||n||e){\r
77097 delete this._clickDiv;\r
77098 return\r
77099 }\r
77100 delete this._clickDiv;\r
77101 var t=this._getItemData(s,"type");\r
77102 if(this._headerList&&t==DwtListView.TYPE_HEADER_ITEM){\r
77103 if(a.button==DwtMouseEvent.LEFT){\r
77104 this._columnClicked(s,a)\r
77105 }else{\r
77106 if(a.button==DwtMouseEvent.RIGHT){\r
77107 var o=this._getActionMenuForColHeader();\r
77108 if(o&&o instanceof DwtMenu){\r
77109 o.popup(0,a.docX,a.docY)\r
77110 }}}}else{\r
77111 if(t==DwtListView.TYPE_LIST_ITEM){\r
77112 if(a.button==DwtMouseEvent.LEFT||a.button==DwtMouseEvent.RIGHT){\r
77113 this._itemClicked(s,a)\r
77114 }}}};\r
77115 DwtListView.prototype._doubleClickAction=function(e,t){\r
77116 return true\r
77117 };\r
77118 DwtListView.prototype._doubleClickListener=function(t){\r
77119 var a=this.getTargetItemDiv(t);\r
77120 if(!a){\r
77121 return\r
77122 }\r
77123 var e=this._getItemData(a,"type");\r
77124 if(e==DwtListView.TYPE_LIST_ITEM){\r
77125 if(!this._doubleClickAction(t,a)){\r
77126 return\r
77127 }\r
77128 if(this._evtMgr.isListenerRegistered(DwtEvent.SELECTION)){\r
77129 DwtUiEvent.copy(this._selEv,t);\r
77130 this._selEv.item=this.getItemFromElement(a);\r
77131 this._selEv.detail=DwtListView.ITEM_DBL_CLICKED;\r
77132 this._evtMgr.notifyListeners(DwtEvent.SELECTION,this._selEv)\r
77133 }}};\r
77134 DwtListView.prototype.emulateDblClick=function(e,t){\r
77135 var o=document.getElementById(this._getItemId(e));\r
77136 if(o){\r
77137 var a=new DwtMouseEvent();\r
77138 this._setMouseEvent(a,{\r
77139 target:o,button:DwtMouseEvent.LEFT}\r
77140 );\r
77141 a.kbNavEvent=t;\r
77142 this._itemClicked(o,a);\r
77143 this._doubleClickListener(a)\r
77144 }};\r
77145 DwtListView.prototype._selectItem=function(a,e,o){\r
77146 if(!this.size()){\r
77147 return\r
77148 }\r
77149 var t=(this._kbAnchor)?this._getSiblingElement(this._kbAnchor,a):this._parentEl.firstChild;\r
77150 this._scrollList(t);\r
77151 this._emulateSingleClick({\r
77152 target:t,button:DwtMouseEvent.LEFT,shiftKey:e,kbNavEvent:o}\r
77153 )\r
77154 };\r
77155 DwtListView.prototype._getSiblingElement=function(e,a){\r
77156 if(!e){\r
77157 return null\r
77158 }\r
77159 var t=a?e.nextSibling:e.previousSibling;\r
77160 while(this._hasHiddenRows&&t&&!Dwt.getVisible(t)){\r
77161 t=a?t.nextSibling:t.previousSibling\r
77162 }\r
77163 return(!t||(this._hasHiddenRows&&!Dwt.getVisible(t)))?e:t\r
77164 };\r
77165 DwtListView.prototype._scrollList=function(e){\r
77166 DwtControl._scrollIntoView(e,e.parentNode)\r
77167 };\r
77168 DwtListView.prototype._emulateSingleClick=function(e){\r
77169 this._clickDiv=this.findItemDiv(e.target);\r
77170 var t=new DwtMouseEvent();\r
77171 this._setMouseEvent(t,e);\r
77172 t.kbNavEvent=e.kbNavEvent;\r
77173 this.notifyListeners(DwtEvent.ONMOUSEUP,t)\r
77174 };\r
77175 DwtListView.prototype._setKbFocusElement=function(e){\r
77176 if(!this._list){\r
77177 return\r
77178 }\r
77179 var a=this._kbAnchor;\r
77180 if(this._kbAnchor){\r
77181 this._kbAnchor=this._getSiblingElement(this._kbAnchor,e)\r
77182 }else{\r
77183 this._kbAnchor=this._parentEl.firstChild\r
77184 }\r
77185 if(this._kbAnchor!=a){\r
77186 if(a){\r
77187 var t=this._selectedClass;\r
77188 if(a.className.indexOf(t)!=-1){\r
77189 Dwt.delClass(a,this._styleRe,t)\r
77190 }else{\r
77191 Dwt.delClass(a,this._styleRe)\r
77192 }}\r
77193 Dwt.addClass(this._kbAnchor,this._kbFocusClass)\r
77194 }\r
77195 if(this._kbAnchor){\r
77196 this._scrollList(this._kbAnchor)\r
77197 }};\r
77198 DwtListView.prototype._itemSelected=function(e,a){\r
77199 if(this._allowLeftSelection(e,a,a&&a.button)){\r
77200 this._unmarkKbAnchorElement(true);\r
77201 this.deselectAll();\r
77202 this._selectedItems.add(e);\r
77203 this._selAnchor=this._kbAnchor=e;\r
77204 Dwt.delClass(e,this._styleRe,this._selectedClass);\r
77205 if(this.hasFocus()){\r
77206 Dwt.addClass(e,this._kbFocusClass)\r
77207 }\r
77208 var t=this.getItemFromElement(e);\r
77209 this.firstSelIndex=(this._list&&t)?this._list.indexOf(t):-1\r
77210 }};\r
77211 DwtListView.prototype._itemClicked=function(s,u){\r
77212 if(this._rightSelItem){\r
77213 Dwt.delClass(this._rightSelItem,this._styleRe);\r
77214 this._rightSelItem=null\r
77215 }\r
77216 var n=this._selectedItems.size();\r
77217 var a=this._selectedItems.contains(s);\r
77218 if((!u.shiftKey&&!u.ctrlKey)||!this.multiSelectEnabled){\r
77219 if(u.button==DwtMouseEvent.LEFT||u.button==DwtMouseEvent.RIGHT){\r
77220 this._selEv.detail=DwtListView.ITEM_SELECTED\r
77221 }\r
77222 if(u.button==DwtMouseEvent.LEFT){\r
77223 this._itemSelected(s,u)\r
77224 }else{\r
77225 if(u.button==DwtMouseEvent.RIGHT&&!a&&this._evtMgr.isListenerRegistered(DwtEvent.ACTION)){\r
77226 this._rightSelItem=s;\r
77227 Dwt.delClass(s,this._styleRe,this._rightClickClass);\r
77228 if(this._kbAnchor==s){\r
77229 Dwt.addClass(s,this._kbFocusClass)\r
77230 }}}}else{\r
77231 if(u.ctrlKey){\r
77232 this.setMultiSelection(s,a,u)\r
77233 }else{\r
77234 if(!this._selAnchor){\r
77235 return\r
77236 }\r
77237 var r=this._getChildren()||s.parentNode.childNodes;\r
77238 var c=r.length;\r
77239 var o;\r
77240 var e=0;\r
77241 for(var h=0;\r
77242 h<c;\r
77243 h++){\r
77244 o=r[h];\r
77245 if(o==this._rightSelItem){\r
77246 this._rightSelItem=null\r
77247 }\r
77248 if(o==s){\r
77249 e++\r
77250 }\r
77251 var t=this._selectedClass;\r
77252 if(o==this._selAnchor){\r
77253 e++;\r
77254 if(o.className.indexOf(t)==-1){\r
77255 this._selectedItems.add(o)\r
77256 }\r
77257 Dwt.delClass(o,this._styleRe,t);\r
77258 continue\r
77259 }\r
77260 if(e!=1&&o.className.indexOf(t)!=-1&&o!=s){\r
77261 Dwt.delClass(o,this._styleRe);\r
77262 this._selectedItems.remove(o)\r
77263 }else{\r
77264 if(e==1||o==s){\r
77265 if(o.className.indexOf(t)==-1){\r
77266 this._selectedItems.add(o)\r
77267 }\r
77268 Dwt.delClass(o,this._styleRe,t)\r
77269 }}}\r
77270 this._kbAnchor=s;\r
77271 Dwt.addClass(this._kbAnchor,this._kbFocusClass);\r
77272 var d=this._selectedItems.size();\r
77273 if(n<d){\r
77274 this._selEv.detail=DwtListView.ITEM_SELECTED\r
77275 }else{\r
77276 if(n>d){\r
77277 this._selEv.detail=DwtListView.ITEM_DESELECTED\r
77278 }else{\r
77279 return\r
77280 }}}}\r
77281 if(u.button==DwtMouseEvent.LEFT&&this._evtMgr.isListenerRegistered(DwtEvent.SELECTION)){\r
77282 if(this._setListEvent(u,this._selEv,s)){\r
77283 this._evtMgr.notifyListeners(DwtEvent.SELECTION,this._selEv)\r
77284 }}else{\r
77285 if(u.button==DwtMouseEvent.RIGHT&&this._evtMgr.isListenerRegistered(DwtEvent.ACTION)){\r
77286 if(this._setListEvent(u,this._actionEv,s)){\r
77287 this._evtMgr.notifyListeners(DwtEvent.ACTION,this._actionEv)\r
77288 }}}};\r
77289 DwtListView.prototype._setListEvent=function(t,a,e){\r
77290 DwtUiEvent.copy(a,t);\r
77291 a.kbNavEvent=t.kbNavEvent;\r
77292 a.item=this.findItem(e);\r
77293 return true\r
77294 };\r
77295 DwtListView.prototype._columnClicked=function(o,t){\r
77296 var n=this.getItemFromElement(o);\r
77297 if(!(n._sortable&&this.sortingEnabled)){\r
77298 return\r
77299 }\r
77300 var a=this.getList();\r
77301 var e=a?a.size():null;\r
77302 if(!e){\r
77303 return\r
77304 }\r
77305 this._bSortAsc=(n._id==this._currentColId)?!this._bSortAsc:this._getDefaultSortbyForCol(n);\r
77306 this._setSortedColStyle(n._id);\r
77307 if(e>=1){\r
77308 this._sortColumn(n,this._bSortAsc)\r
77309 }};\r
77310 DwtListView.prototype._sortColumn=function(e,t){};\r
77311 DwtListView.prototype._getActionMenuForColHeader=function(){\r
77312 return null\r
77313 };\r
77314 DwtListView.prototype._getDefaultSortbyForCol=function(e){\r
77315 return true\r
77316 };\r
77317 DwtListView.prototype._allowLeftSelection=function(t,a,e){\r
77318 return true\r
77319 };\r
77320 DwtListView.prototype._setSortedColStyle=function(e){\r
77321 if(this._currentColId&&(e!=this._currentColId)){\r
77322 var s=this._headerIdHash[this._currentColId];\r
77323 if(s&&!s._noSortArrow){\r
77324 var r=s._field;\r
77325 var h=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_ARROW,this._view,r);\r
77326 var o=document.getElementById(h);\r
77327 if(o&&o.firstChild){\r
77328 var t=(AjxImg._mode==AjxImg.SINGLE_IMG)?o.firstChild:o.firstChild.firstChild;\r
77329 if(t){\r
77330 t.style.visibility="hidden"\r
77331 }}}\r
77332 var d=document.getElementById(this._currentColId);\r
77333 if(d){\r
77334 d.className="DwtListView-Column"\r
77335 }}\r
77336 this._currentColId=e;\r
77337 var s=this._headerIdHash[this._currentColId];\r
77338 if(!s._noSortArrow){\r
77339 var r=s._field;\r
77340 var c=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_ARROW,this._view,r);\r
77341 var a=document.getElementById(c);\r
77342 if(a){\r
77343 AjxImg.setImage(a,this._bSortAsc?"ColumnUpArrow":"ColumnDownArrow");\r
77344 var t=(AjxImg._mode==AjxImg.SINGLE_IMG)?a.firstChild:a.firstChild.firstChild;\r
77345 if(t){\r
77346 t.style.visibility="visible"\r
77347 }}}\r
77348 var n=document.getElementById(e);\r
77349 if(n){\r
77350 n.className="DwtListView-Column DwtListView-ColumnActive"\r
77351 }};\r
77352 DwtListView.prototype._resetList=function(){\r
77353 if(this._list&&this._list.size()){\r
77354 this._list.removeAll()\r
77355 }\r
77356 this._resetListView()\r
77357 };\r
77358 DwtListView.prototype._resetListView=function(){\r
77359 var e;\r
77360 while(this._parentEl&&this._parentEl.hasChildNodes()){\r
77361 var e=this._parentEl.removeChild(this._parentEl.firstChild);\r
77362 this._data[e.id]=null\r
77363 }\r
77364 if(this._selectedItems){\r
77365 this._selectedItems.removeAll()\r
77366 }\r
77367 this._rightSelItem=null\r
77368 };\r
77369 DwtListView.prototype._destroyDragProxy=function(e){\r
77370 this._data[e.id]=null;\r
77371 DwtControl.prototype._destroyDragProxy.call(this,e)\r
77372 };\r
77373 DwtListView.prototype._handleColHeaderMove=function(r){\r
77374 if(!this._headerClone){\r
77375 if(!this._headerColX){\r
77376 this._headerColX=r.docX;\r
77377 return\r
77378 }else{\r
77379 var n=Math.abs(this._headerColX-r.docX);\r
77380 if(n<DwtListView.COL_MOVE_THRESHOLD){\r
77381 return\r
77382 }}\r
77383 this._headerClone=document.createElement("div");\r
77384 var u=Dwt.getSize(this._clickDiv);\r
77385 var t=AjxEnv.isIE?u.x:u.x-3;\r
77386 var d=AjxEnv.isIE?u.y:u.y-5;\r
77387 Dwt.setSize(this._headerClone,t,d);\r
77388 Dwt.setPosition(this._headerClone,Dwt.ABSOLUTE_STYLE);\r
77389 Dwt.setZIndex(this._headerClone,Dwt.Z_DND);\r
77390 Dwt.setLocation(this._headerClone,Dwt.DEFAULT,r.docY);\r
77391 this._headerClone.className=this._clickDiv.className+" DragProxy";\r
77392 this._headerClone.innerHTML=this._clickDiv.innerHTML;\r
77393 this._clickDiv.className="DwtListView-Column DwtListView-ColumnEmpty";\r
77394 this._headerClone.style.borderTop="1px solid #777777";\r
77395 var h=this._headerIdHash[this._clickDiv.id];\r
77396 var c=h._field;\r
77397 var o=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_LABEL,this._view,c);\r
77398 var a=document.getElementById(o);\r
77399 if(a){\r
77400 a.style.color="#FFFFFF"\r
77401 }\r
77402 this.shell.getHtmlElement().appendChild(this._headerClone)\r
77403 }else{\r
77404 var e=this.getTargetItemDiv(r);\r
77405 var s=this._getItemData(e,"type");\r
77406 if(s==DwtListView.TYPE_HEADER_ITEM){\r
77407 if(this._headerCloneTarget&&(this._headerCloneTarget==this._clickDiv)){\r
77408 this._headerCloneTarget=null\r
77409 }else{\r
77410 if(this._headerCloneTarget!=e){\r
77411 this._headerCloneTarget=e\r
77412 }}}else{\r
77413 this._headerCloneTarget=null\r
77414 }}\r
77415 if(this._headerClone){\r
77416 Dwt.setLocation(this._headerClone,r.docX+2)\r
77417 }};\r
77418 DwtListView.prototype._handleColHeaderResize=function(t){\r
77419 if(!this._headerSash){\r
77420 this._headerSash=document.createElement("div");\r
77421 Dwt.setSize(this._headerSash,Dwt.DEFAULT,this.getSize().y);\r
77422 Dwt.setPosition(this._headerSash,Dwt.ABSOLUTE_STYLE);\r
77423 Dwt.setZIndex(this._headerSash,Dwt.Z_DND);\r
77424 var a=this._getHeaderSashLocation();\r
77425 this._headerSashFudgeX=a.x;\r
77426 Dwt.setLocation(this._headerSash,Dwt.DEFAULT,a.y);\r
77427 this._headerSash.className="DwtListView-ColumnSash";\r
77428 this.getHtmlElement().appendChild(this._headerSash);\r
77429 this._headerSashX=t.docX\r
77430 }\r
77431 var e=this._getParentForColResize();\r
77432 var o=Dwt.toWindow(e.getHtmlElement(),0,0);\r
77433 Dwt.setLocation(this._headerSash,(t.docX-o.x)+this._headerSashFudgeX)\r
77434 };\r
77435 DwtListView.prototype._getHeaderSashLocation=function(){\r
77436 if(!this._tmpPoint){\r
77437 this._tmpPoint=new DwtPoint()\r
77438 }\r
77439 this._tmpPoint.x=0;\r
77440 this._tmpPoint.y=0;\r
77441 return this._tmpPoint\r
77442 };\r
77443 DwtListView.prototype._handleColHeaderDrop=function(h){\r
77444 this._headerColX=null;\r
77445 if(this._headerClone==null||h.button==DwtMouseEvent.RIGHT){\r
77446 return false\r
77447 }\r
77448 if(this._headerCloneTarget){\r
77449 var e=this._getItemData(this._clickDiv,"index");\r
77450 var a=this._getItemData(this._headerCloneTarget,"index");\r
77451 this._reIndexColumn(e,a)\r
77452 }\r
77453 this._clickDiv.className=(this._clickDiv.id!=this._currentColId)?"DwtListView-Column":"DwtListView-Column DwtListView-ColumnActive";\r
77454 var d=this._headerClone.parentNode;\r
77455 if(d){\r
77456 d.removeChild(this._headerClone)\r
77457 }\r
77458 delete this._headerClone;\r
77459 var s=this._data[this._clickDiv.id];\r
77460 if(s.type!=DwtListView.TYPE_HEADER_ITEM){\r
77461 var c=this._headerIdHash[this._currentColId];\r
77462 var r=c._sortable?c._field:null;\r
77463 this.headerColCreated=false;\r
77464 this.createHeaderHtml(r)\r
77465 }else{\r
77466 var c=this._headerIdHash[this._clickDiv.id];\r
77467 var o=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_LABEL,this._view,c._field);\r
77468 var t=document.getElementById(o);\r
77469 if(t){\r
77470 t.style.color="#000000"\r
77471 }}\r
77472 for(var n=0;\r
77473 n<this._headerList.length;\r
77474 n++){\r
77475 this._headerList[n]._width=this._calcRelativeWidth(n)\r
77476 }\r
77477 this._resetColWidth();\r
77478 return true\r
77479 };\r
77480 DwtListView.prototype._reIndexColumn=function(o,a){\r
77481 if(!this._headerList){\r
77482 return\r
77483 }\r
77484 var e=this._headerList.length;\r
77485 if(o<0||a<0||o>=e||a>=e||o==a){\r
77486 return\r
77487 }\r
77488 var t=this._headerList.splice(o,1);\r
77489 this._headerList.splice(a,0,t[0]);\r
77490 this._relayout()\r
77491 };\r
77492 DwtListView.prototype._handleColSashDrop=function(o){\r
77493 if(this._headerSash==null||o.button==DwtMouseEvent.RIGHT){\r
77494 return false\r
77495 }\r
77496 var a=this._headerSash.parentNode;\r
77497 if(a){\r
77498 a.removeChild(this._headerSash)\r
77499 }\r
77500 delete this._headerSash;\r
77501 for(var t=0;\r
77502 t<this._headerList.length;\r
77503 t++){\r
77504 this._headerList[t]._width=this._calcRelativeWidth(t)\r
77505 }\r
77506 var s=this._getItemData(this._clickDiv,"index");\r
77507 if(s==null){\r
77508 return false\r
77509 }\r
77510 var h=o.docX-this._headerSashX;\r
77511 var r=this._headerList[s];\r
77512 var n=this._variableHeaderCol;\r
77513 if(r==n){\r
77514 var e=this._getNextResizeableColumnIndex(n._index);\r
77515 if(e!=null){\r
77516 n=this._headerList[e]\r
77517 }else{\r
77518 return false\r
77519 }}else{\r
77520 if(!n){\r
77521 var e=this._getNextResizeableColumnIndex(r._index);\r
77522 if(e!=null){\r
77523 n=this._headerList[e]\r
77524 }else{\r
77525 return false\r
77526 }}}\r
77527 r._width=Math.max(r._width+h,DwtListView.MIN_COLUMN_WIDTH);\r
77528 n._width=Math.max(this._calcRelativeWidth(n._index)-h,DwtListView.MIN_COLUMN_WIDTH);\r
77529 var e=this._getNextResizeableColumnIndex(-1,[r._index,n._index]);\r
77530 if(e!=null){\r
77531 this._headerList[e]._width="auto"\r
77532 }\r
77533 this._relayout();\r
77534 this._resetColWidth();\r
77535 return true\r
77536 };\r
77537 DwtListView.prototype._calcRelativeWidth=function(a){\r
77538 var t=this._headerList[a];\r
77539 if(!t._width||(t._width&&t._width=="auto")){\r
77540 var e=document.getElementById(t._id);\r
77541 return(e)?(e.clientWidth-(AjxEnv.isIE?4:5)):null\r
77542 }\r
77543 return t._width\r
77544 };\r
77545 DwtListView.prototype._resetColWidth=function(){\r
77546 if(!this.headerColCreated){\r
77547 return\r
77548 }\r
77549 var s=this._getLastColumnIndex();\r
77550 if(s){\r
77551 var a=this._headerList[s];\r
77552 var t=document.getElementById(a._id);\r
77553 if(t){\r
77554 var r=t.firstChild;\r
77555 var e=16;\r
77556 var n=this._listColDiv.clientWidth;\r
77557 var o=this._listDiv.clientWidth;\r
77558 if(n!=o){\r
77559 t.style.width=r.style.width=(a._width!=null&&a._width!="auto")?(a._width+e):(t.clientWidth+e)\r
77560 }else{\r
77561 t.style.width=r.style.width=(a._width||"")\r
77562 }}}};\r
77563 DwtListView.prototype._getLastColumnIndex=function(){\r
77564 var t=null;\r
77565 if(this._headerList){\r
77566 var e=this._headerList.length-1;\r
77567 while(t==null&&e>=0){\r
77568 if(this._headerList[e]._visible){\r
77569 t=e\r
77570 }\r
77571 e--\r
77572 }}\r
77573 return t\r
77574 };\r
77575 DwtListView.prototype._getNextResizeableColumnIndex=function(o,e){\r
77576 e=e?AjxUtil.arrayAsHash(e):{};\r
77577 e[o]=true;\r
77578 if(this._headerList){\r
77579 for(var a=o+1;\r
77580 a<this._headerList.length;\r
77581 a++){\r
77582 var t=this._headerList[a];\r
77583 if(e[a]){\r
77584 continue\r
77585 }\r
77586 if(t._visible&&t._resizeable){\r
77587 return a\r
77588 }}\r
77589 for(var a=0;\r
77590 a<o;\r
77591 a++){\r
77592 if(e[a]){\r
77593 continue\r
77594 }\r
77595 var t=this._headerList[a];\r
77596 if(t._visible&&t._resizeable){\r
77597 return a\r
77598 }}}\r
77599 return null\r
77600 };\r
77601 DwtListView.prototype._relayout=function(){\r
77602 this.headerColCreated=false;\r
77603 var a=this._headerIdHash[this._currentColId];\r
77604 var e=(a&&a._sortable)?a._field:null;\r
77605 this.setUI(e);\r
77606 var t=this.getSelection()[0];\r
77607 this.setSelection(t,true)\r
77608 };\r
77609 DwtListView.prototype._getParentForColResize=function(){\r
77610 return this\r
77611 };\r
77612 DwtListView.prototype._sizeChildren=function(e){\r
77613 if(this.headerColCreated&&this._listDiv&&(e!=Dwt.DEFAULT)){\r
77614 Dwt.setSize(this._listDiv,Dwt.DEFAULT,e-DwtListView.HEADERITEM_HEIGHT);\r
77615 return true\r
77616 }else{\r
77617 return false\r
77618 }};\r
77619 DwtListView.prototype._getChildren=function(){\r
77620 return null\r
77621 };\r
77622 DwtListView.prototype._focus=function(){\r
77623 if(this.size()==0){\r
77624 return\r
77625 }\r
77626 if(this._kbAnchor){\r
77627 Dwt.addClass(this._kbAnchor,this._kbFocusClass)\r
77628 }else{\r
77629 this._setKbFocusElement()\r
77630 }};\r
77631 DwtListView.prototype._blur=function(){\r
77632 this._unmarkKbAnchorElement()\r
77633 };\r
77634 DwtListView.prototype._unmarkKbAnchorElement=function(e){\r
77635 if(this._kbAnchor){\r
77636 if(this._selectedItems.contains(this._kbAnchor)){\r
77637 Dwt.delClass(this._kbAnchor,this._styleRe,this._selectedClass)\r
77638 }else{\r
77639 Dwt.delClass(this._kbAnchor,this._styleRe)\r
77640 }}\r
77641 if(e){\r
77642 this._kbAnchor=null\r
77643 }};\r
77644 DwtListView.prototype._getFirstItem=function(){\r
77645 var e=this._list.getArray();\r
77646 if(e&&e.length>1){\r
77647 return e[0]\r
77648 }\r
77649 return null\r
77650 };\r
77651 DwtListView.prototype._getLastItem=function(){\r
77652 var e=this._list.getArray();\r
77653 if(e&&e.length>1){\r
77654 return e[e.length-1]\r
77655 }\r
77656 return null\r
77657 };\r
77658 DwtListHeaderItem=function(t){\r
77659 if(arguments.length==0){\r
77660 return\r
77661 }\r
77662 t=Dwt.getParams(arguments,DwtListView.PARAMS);\r
77663 this._field=t.field;\r
77664 this._label=t.text;\r
77665 this._iconInfo=t.icon;\r
77666 this._sortable=t.sortable;\r
77667 this._noSortArrow=t.noSortArrow;\r
77668 this._resizeable=t.resizeable;\r
77669 this._visible=(t.visible!==false);\r
77670 this._name=t.name||t.text;\r
77671 this._align=t.align;\r
77672 this._noRemove=t.noRemove;\r
77673 var e=parseInt(t.width);\r
77674 if(isNaN(e)||!e){\r
77675 this._width="auto";\r
77676 this._variable=true;\r
77677 this._resizeable=true\r
77678 }else{\r
77679 if(String(e)==String(t.width)){\r
77680 this._width=e\r
77681 }else{\r
77682 this._width=parseInt(String(t.width).substr(0,String(e).length));\r
77683 this._widthUnits=AjxStringUtil.getUnitsFromSizeString(t.width)\r
77684 }}};\r
77685 DwtListHeaderItem.PARAMS=["id","text","icon","width","sortable","resizeable","visible","name","align","noRemove","view"];\r
77686 DwtListHeaderItem.sortCompare=function(t,e){\r
77687 return t._index<e._index?-1:(t._index>e._index?1:0)\r
77688 };\r
77689 DwtListHeaderItem.prototype.toString=function(){\r
77690 return"DwtListHeaderItem"\r
77691 }\r
77692 }\r
77693 if(AjxPackage.define("ajax.dwt.widgets.DwtButton")){\r
77694 DwtButton=function(a){\r
77695 if(arguments.length==0){\r
77696 return\r
77697 }\r
77698 a=Dwt.getParams(arguments,DwtButton.PARAMS);\r
77699 a.className=a.className||"ZButton";\r
77700 DwtLabel.call(this,a);\r
77701 var t=a.parent;\r
77702 if(!t._hasSetMouseEvents||AjxEnv.isIE){\r
77703 this._setMouseEvents()\r
77704 }\r
77705 var e;\r
77706 if(t._hasSetMouseEvents){\r
77707 e=AjxEnv.isIE?[DwtEvent.ONMOUSEENTER,DwtEvent.ONMOUSELEAVE]:[]\r
77708 }else{\r
77709 e=AjxEnv.isIE?[DwtEvent.ONMOUSEENTER,DwtEvent.ONMOUSELEAVE]:[DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT];\r
77710 e=e.concat([DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP])\r
77711 }\r
77712 if(e&&e.length){\r
77713 this._setEventHdlrs(e)\r
77714 }\r
77715 this._listeners=a.listeners||DwtButton._listeners;\r
77716 this._addMouseListeners();\r
77717 this._ignoreInternalOverOut=true;\r
77718 this._dropDownEvtMgr=new AjxEventMgr();\r
77719 this._selected=false;\r
77720 this._actionTiming=a.actionTiming||DwtButton.ACTION_MOUSEUP;\r
77721 this.__preventMenuFocus=null\r
77722 };\r
77723 DwtButton.prototype=new DwtLabel;\r
77724 DwtButton.prototype.constructor=DwtButton;\r
77725 DwtButton.prototype.toString=function(){\r
77726 return"DwtButton"\r
77727 };\r
77728 DwtButton.PARAMS=["parent","style","className","posStyle","actionTiming","id","index","listeners"];\r
77729 DwtButton.TOGGLE_STYLE=DwtLabel._LAST_STYLE*2;\r
77730 DwtButton.ALWAYS_FLAT=DwtLabel._LAST_STYLE*4;\r
77731 DwtButton._LAST_STYLE=DwtButton.ALWAYS_FLAT;\r
77732 DwtButton.ACTION_MOUSEUP=1;\r
77733 DwtButton.ACTION_MOUSEDOWN=2;\r
77734 DwtButton.NOTIFY_WINDOW=500;\r
77735 DwtButton.prototype.TEMPLATE="dwt.Widgets#ZButton";\r
77736 DwtButton.prototype.dispose=function(){\r
77737 if((this._menu instanceof DwtMenu)&&(this._menu.parent==this)){\r
77738 this._menu.dispose();\r
77739 this._menu=null\r
77740 }\r
77741 DwtLabel.prototype.dispose.call(this)\r
77742 };\r
77743 DwtButton.prototype.addSelectionListener=function(t,e){\r
77744 this.addListener(DwtEvent.SELECTION,t,e);\r
77745 if(DwtControl.globalSelectionListener){\r
77746 this.addListener(DwtEvent.SELECTION,DwtControl.globalSelectionListener)\r
77747 }};\r
77748 DwtButton.prototype.removeSelectionListener=function(e){\r
77749 this.removeListener(DwtEvent.SELECTION,e)\r
77750 };\r
77751 DwtButton.prototype.removeSelectionListeners=function(){\r
77752 this.removeAllListeners(DwtEvent.SELECTION)\r
77753 };\r
77754 DwtButton.prototype.addDropDownSelectionListener=function(e){\r
77755 return this._dropDownEvtMgr.addListener(DwtEvent.SELECTION,e)\r
77756 };\r
77757 DwtButton.prototype.removeDropDownSelectionListener=function(e){\r
77758 this._dropDownEvtMgr.removeListener(DwtEvent.SELECTION,e)\r
77759 };\r
77760 DwtButton.prototype._dropDownImg="SelectPullDownArrow";\r
77761 DwtButton.prototype._dropDownDepImg="SelectPullDownArrow";\r
77762 DwtButton.prototype._dropDownHovImg="SelectPullDownArrowHover";\r
77763 DwtButton.prototype.setDropDownImages=function(t,a,o,e){\r
77764 this._dropDownImg=t;\r
77765 this._dropDownHovImg=o;\r
77766 this._dropDownDepImg=e\r
77767 };\r
77768 DwtButton.prototype._addEventListeners=function(a,t){\r
77769 for(var e=0;\r
77770 e<t.length;\r
77771 e++){\r
77772 this.addListener(event,a[event])\r
77773 }};\r
77774 DwtButton.prototype._removeEventListeners=function(a,t){\r
77775 for(var e=0;\r
77776 e<t.length;\r
77777 e++){\r
77778 this.removeListener(event,a[event])\r
77779 }};\r
77780 DwtButton.prototype._addMouseListeners=function(){\r
77781 var t=[DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP];\r
77782 t=t.concat(AjxEnv.isIE?[DwtEvent.ONMOUSEENTER,DwtEvent.ONMOUSELEAVE]:[DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT]);\r
77783 for(var e=0;\r
77784 e<t.length;\r
77785 e++){\r
77786 this.addListener(t[e],this._listeners[t[e]])\r
77787 }};\r
77788 DwtButton.prototype._removeMouseListeners=function(){\r
77789 var t=[DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP];\r
77790 t=t.concat(AjxEnv.isIE?[DwtEvent.ONMOUSEENTER,DwtEvent.ONMOUSELEAVE]:[DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT]);\r
77791 for(var e=0;\r
77792 e<t.length;\r
77793 e++){\r
77794 this.removeListener(t[e],this._listeners[t[e]])\r
77795 }};\r
77796 DwtButton.prototype.setDisplayState=function(t,e){\r
77797 if(this._selected&&t!=DwtControl.SELECTED&&!e){\r
77798 t=[DwtControl.SELECTED,t].join(" ")\r
77799 }\r
77800 DwtLabel.prototype.setDisplayState.call(this,t)\r
77801 };\r
77802 DwtButton.prototype.setEnabled=function(t){\r
77803 if(t!=this._enabled){\r
77804 DwtLabel.prototype.setEnabled.call(this,t);\r
77805 if(t){\r
77806 var a=(AjxEnv.isIE)?this.getHtmlElement().firstChild:null;\r
77807 if(a){\r
77808 var e=a.className;\r
77809 a.className="";\r
77810 a.className=e\r
77811 }\r
77812 this._addMouseListeners();\r
77813 if(this._menu){\r
77814 this._setDropDownCellMouseHandlers(true);\r
77815 if(this._dropDownEl){\r
77816 AjxImg.setImage(this._dropDownEl,this._dropDownImg)\r
77817 }}}else{\r
77818 this._removeMouseListeners();\r
77819 if(this._menu){\r
77820 this._setDropDownCellMouseHandlers(false);\r
77821 if(this._dropDownEl){\r
77822 AjxImg.setDisabledImage(this._dropDownEl,this._dropDownImg)\r
77823 }}}}};\r
77824 DwtButton.prototype.setImage=function(e){\r
77825 DwtLabel.prototype.setImage.call(this,e);\r
77826 this._setMinWidth()\r
77827 };\r
77828 DwtButton.prototype.setText=function(e){\r
77829 DwtLabel.prototype.setText.call(this,e);\r
77830 this._setMinWidth()\r
77831 };\r
77832 DwtButton.prototype._setMinWidth=function(){\r
77833 if(this.getText()!=null){\r
77834 Dwt.addClass(this.getHtmlElement(),"ZHasText")\r
77835 }else{\r
77836 Dwt.delClass(this.getHtmlElement(),"ZHasText")\r
77837 }};\r
77838 DwtButton.prototype.setHoverImage=function(e){\r
77839 this._hoverImageInfo=e\r
77840 };\r
77841 DwtButton.prototype.setMenu=function(n,a,o,t){\r
77842 this._menu=n;\r
77843 this._shouldToggleMenu=(a===true);\r
77844 this._followIconStyle=o;\r
77845 this._popupAbove=t;\r
77846 if(this._menu){\r
77847 if(this._dropDownEl){\r
77848 var e=(this._imageCell)?1:0;\r
77849 if(this._textCell){\r
77850 e++\r
77851 }\r
77852 Dwt.addClass(this.getHtmlElement(),"ZHasDropDown");\r
77853 AjxImg.setImage(this._dropDownEl,this._dropDownImg);\r
77854 if(this._enabled){\r
77855 this._setDropDownCellMouseHandlers(true)\r
77856 }\r
77857 if(!(this._menu instanceof AjxCallback)){\r
77858 this._menu.setAssociatedElementId(this._dropDownEl.id)\r
77859 }}\r
77860 if((this.__preventMenuFocus!=null)&&(this._menu instanceof DwtMenu)){\r
77861 this._menu.dontStealFocus(this.__preventMenuFocus)\r
77862 }}else{\r
77863 if(this._dropDownEl){\r
77864 Dwt.delClass(this.getHtmlElement(),"ZHasDropDown");\r
77865 this._dropDownEl.innerHTML=""\r
77866 }}};\r
77867 DwtButton.prototype._setDropDownCellMouseHandlers=function(e){\r
77868 this._dropDownEventsEnabled=e\r
77869 };\r
77870 DwtButton.prototype.getMenu=function(e){\r
77871 if(this._menu instanceof AjxCallback){\r
77872 if(e){\r
77873 return null\r
77874 }\r
77875 var t=this._menu;\r
77876 this.setMenu(t.run(this),this._shouldToggleMenu,this._followIconStyle,this._popupAbove);\r
77877 if((this.__preventMenuFocus!=null)&&(this._menu instanceof DwtMenu)){\r
77878 this._menu.dontStealFocus(this.__preventMenuFocus)\r
77879 }}\r
77880 if(this._menu){\r
77881 this.getHtmlElement().setAttribute("menuId",this._menu._htmlElId)\r
77882 }\r
77883 return this._menu\r
77884 };\r
77885 DwtButton.prototype.resetClassName=function(){\r
77886 this.setDisplayState(DwtControl.NORMAL)\r
77887 };\r
77888 DwtButton.prototype.setActionTiming=function(e){\r
77889 this._actionTiming=e\r
77890 };\r
77891 DwtButton.prototype.setHovered=function(e){\r
77892 this.setDisplayState(e?DwtControl.HOVER:DwtControl.NORMAL)\r
77893 };\r
77894 DwtButton.prototype.setEnabledImage=function(e){\r
77895 this._enabledImageInfo=e;\r
77896 this.setImage(e)\r
77897 };\r
77898 DwtButton.prototype.setDepressedImage=function(e){\r
77899 this._depressedImageInfo=e\r
77900 };\r
77901 DwtButton.prototype.setSelected=function(e){\r
77902 if(this._selected!=e){\r
77903 this._selected=e;\r
77904 this.setDisplayState(e?DwtControl.SELECTED:DwtControl.NORMAL)\r
77905 }};\r
77906 DwtButton.prototype.isToggled=function(){\r
77907 return this._selected\r
77908 };\r
77909 DwtButton.prototype.popup=function(o){\r
77910 o=o||this.getMenu();\r
77911 if(!o){\r
77912 return\r
77913 }\r
77914 var d=o.parent;\r
77915 var s=d.getBounds();\r
77916 var c=o.shell.getSize();\r
77917 var e=o.getSize();\r
77918 var u=d.getHtmlElement();\r
77919 var a=Dwt.toWindow(u,0,0);\r
77920 var t=(u.style.borderLeftWidth=="")?0:parseInt(u.style.borderLeftWidth);\r
77921 var h=a.x+t;\r
77922 h=((h+e.x)>=c.x)?c.x-e.x:h;\r
77923 var r;\r
77924 if(this._popupAbove){\r
77925 r=a.y-e.y\r
77926 }else{\r
77927 var n=(u.style.borderTopWidth=="")?0:parseInt(u.style.borderTopWidth);\r
77928 n+=(u.style.borderBottomWidth=="")?0:parseInt(u.style.borderBottomWidth);\r
77929 r=a.y+s.height+n\r
77930 }\r
77931 o.popup(0,h,r)\r
77932 };\r
77933 DwtButton.prototype.getKeyMapName=function(){\r
77934 return"DwtButton"\r
77935 };\r
77936 DwtButton.prototype.handleKeyAction=function(e,t){\r
77937 switch(e){\r
77938 case DwtKeyMap.SELECT:this._emulateSingleClick();\r
77939 break;\r
77940 case DwtKeyMap.SUBMENU:var a=this.getMenu();\r
77941 if(!a){\r
77942 return false\r
77943 }\r
77944 this._emulateDropDownClick();\r
77945 a.setSelectedItem(0);\r
77946 break\r
77947 }\r
77948 return true\r
77949 };\r
77950 DwtButton.prototype._emulateSingleClick=function(){\r
77951 this.trigger();\r
77952 var e=this.getHtmlElement();\r
77953 var t=Dwt.toWindow(e);\r
77954 var a=new DwtMouseEvent();\r
77955 this._setMouseEvent(a,{\r
77956 dwtObj:this,target:e,button:DwtMouseEvent.LEFT,docX:t.x,docY:t.y}\r
77957 );\r
77958 if(this._actionTiming==DwtButton.ACTION_MOUSEDOWN){\r
77959 this.notifyListeners(DwtEvent.ONMOUSEDOWN,a)\r
77960 }else{\r
77961 this.notifyListeners(DwtEvent.ONMOUSEUP,a)\r
77962 }};\r
77963 DwtButton.prototype._emulateDropDownClick=function(){\r
77964 var e=this._dropDownEl;\r
77965 if(!e){\r
77966 return\r
77967 }\r
77968 var t=Dwt.toWindow(e);\r
77969 var a=new DwtMouseEvent();\r
77970 this._setMouseEvent(a,{\r
77971 dwtObj:this,target:e,button:DwtMouseEvent.LEFT,docX:t.x,docY:t.y}\r
77972 );\r
77973 DwtButton._dropDownCellMouseDownHdlr(a)\r
77974 };\r
77975 DwtButton.prototype._focusByMouseUpEvent=function(){\r
77976 if(!(this.parent&&(this.parent instanceof DwtToolBar)&&this.parent.noFocus)){\r
77977 DwtShell.getShell(window).getKeyboardMgr().grabFocus(this.getTabGroupMember())\r
77978 }};\r
77979 DwtButton.prototype._focus=function(){\r
77980 this.setDisplayState(DwtControl.FOCUSED)\r
77981 };\r
77982 DwtButton.prototype._blur=function(){\r
77983 this.setDisplayState(DwtControl.NORMAL)\r
77984 };\r
77985 DwtButton.prototype._toggleMenu=function(){\r
77986 if(this._shouldToggleMenu){\r
77987 var e=this.getMenu();\r
77988 if(!e.isPoppedUp()){\r
77989 this.popup();\r
77990 this._menuUp=true\r
77991 }else{\r
77992 e.popdown();\r
77993 this._menuUp=false;\r
77994 this.deactivate()\r
77995 }}else{\r
77996 this.popup()\r
77997 }};\r
77998 DwtButton.prototype._isDropDownEvent=function(t){\r
77999 if(this._dropDownEventsEnabled&&this._dropDownEl){\r
78000 var e=t.docX;\r
78001 var a=Dwt.toWindow(this._dropDownEl,0,0,window).x;\r
78002 if(e>=a){\r
78003 return true\r
78004 }}\r
78005 return false\r
78006 };\r
78007 DwtButton.prototype.trigger=function(){\r
78008 if(this._depressedImageInfo){\r
78009 this.setImage(this._depressedImageInfo)\r
78010 }\r
78011 this.setDisplayState(DwtControl.ACTIVE,true);\r
78012 this.isActive=true\r
78013 };\r
78014 DwtButton.prototype.deactivate=function(){\r
78015 this._showHoverImage(true);\r
78016 if(this._style&DwtButton.TOGGLE_STYLE){\r
78017 this._selected=!this._selected\r
78018 }\r
78019 this.setDisplayState(DwtControl.HOVER)\r
78020 };\r
78021 DwtButton.prototype.dontStealFocus=function(e){\r
78022 if(e==null){\r
78023 e=true\r
78024 }\r
78025 if(this._menu instanceof DwtMenu){\r
78026 this._menu.dontStealFocus(e)\r
78027 }\r
78028 this.__preventMenuFocus=e\r
78029 };\r
78030 DwtButton.prototype._showHoverImage=function(t){\r
78031 if(this._hoverImageInfo){\r
78032 var e=this._getIconEl();\r
78033 var a=t?this._hoverImageInfo:this.__imageInfo;\r
78034 e.firstChild.className=AjxImg.getClassForImage(a)\r
78035 }};\r
78036 DwtButton.prototype._handleClick=function(t){\r
78037 if(this.isListenerRegistered(DwtEvent.SELECTION)){\r
78038 var e=(new Date()).getTime();\r
78039 if(!this._lastNotify||(e-this._lastNotify>DwtButton.NOTIFY_WINDOW)){\r
78040 var a=DwtShell.selectionEvent;\r
78041 DwtUiEvent.copy(a,t);\r
78042 a.item=this;\r
78043 a.detail=(typeof this.__detail=="undefined")?0:this.__detail;\r
78044 this.notifyListeners(DwtEvent.SELECTION,a);\r
78045 this._lastNotify=e\r
78046 }}else{\r
78047 if(this._menu){\r
78048 this._toggleMenu()\r
78049 }}};\r
78050 DwtButton.prototype._setMouseOutClassName=function(){\r
78051 this.setDisplayState(DwtControl.NORMAL)\r
78052 };\r
78053 DwtButton.prototype._createHtmlFromTemplate=function(e,t){\r
78054 DwtLabel.prototype._createHtmlFromTemplate.call(this,e,t);\r
78055 this._dropDownEl=document.getElementById(t.id+"_dropdown")\r
78056 };\r
78057 DwtButton._dropDownCellMouseDownHdlr=function(t){\r
78058 var a=DwtControl.getTargetControl(t);\r
78059 var e=DwtShell.mouseEvent;\r
78060 e.setFromDhtmlEvent(t,a);\r
78061 if(e.button==DwtMouseEvent.LEFT){\r
78062 if(this._depImg){\r
78063 AjxImg.setImage(this,this._depImg)\r
78064 }}\r
78065 e._stopPropagation=true;\r
78066 e._returnValue=false;\r
78067 e.setToDhtmlEvent(t);\r
78068 return false\r
78069 };\r
78070 DwtButton._dropDownCellMouseUpHdlr=function(t){\r
78071 var e=DwtShell.mouseEvent;\r
78072 e.setFromDhtmlEvent(t);\r
78073 if(e.button==DwtMouseEvent.LEFT){\r
78074 if(this._hovImg&&!this.noMenuBar){\r
78075 AjxImg.setImage(this,this._hovImg)\r
78076 }\r
78077 DwtEventManager.notifyListeners(DwtEvent.ONMOUSEDOWN,e);\r
78078 var o=DwtControl.getTargetControl(t);\r
78079 if(o){\r
78080 if(o.getMenu()&&o.getMenu().isPoppedUp()){\r
78081 o.getMenu().popdown()\r
78082 }else{\r
78083 if(o._menu instanceof AjxCallback){\r
78084 o.popup()\r
78085 }\r
78086 if(o._dropDownEvtMgr.isListenerRegistered(DwtEvent.SELECTION)){\r
78087 var a=DwtShell.selectionEvent;\r
78088 DwtUiEvent.copy(a,e);\r
78089 a.item=o;\r
78090 o._dropDownEvtMgr.notifyListeners(DwtEvent.SELECTION,a)\r
78091 }else{\r
78092 o._toggleMenu()\r
78093 }}}}\r
78094 e._stopPropagation=true;\r
78095 e._returnValue=false;\r
78096 e.setToDhtmlEvent(t);\r
78097 return false\r
78098 };\r
78099 DwtButton._mouseOverListener=function(t){\r
78100 var e=t.dwtObj;\r
78101 if(!e){\r
78102 return false\r
78103 }\r
78104 e._showHoverImage(true);\r
78105 e.setDisplayState(DwtControl.HOVER);\r
78106 var a=e._dropDownEl;\r
78107 if(e._menu&&a&&e._dropDownHovImg&&!e.noMenuBar&&e.isListenerRegistered(DwtEvent.SELECTION)){\r
78108 AjxImg.setImage(a,e._dropDownHovImg)\r
78109 }\r
78110 t._stopPropagation=true\r
78111 };\r
78112 DwtButton._mouseOutListener=function(t){\r
78113 var e=t.dwtObj;\r
78114 if(!e){\r
78115 return false\r
78116 }\r
78117 e._showHoverImage(false);\r
78118 e._setMouseOutClassName();\r
78119 e.isActive=false;\r
78120 var a=e._dropDownEl;\r
78121 if(e._menu&&a){\r
78122 AjxImg.setImage(a,e._dropDownImg)\r
78123 }};\r
78124 DwtButton._mouseDownListener=function(t){\r
78125 var e=t.dwtObj;\r
78126 if(!e){\r
78127 return false\r
78128 }\r
78129 if(e._isDropDownEvent(t)){\r
78130 return DwtButton._dropDownCellMouseDownHdlr(t)\r
78131 }\r
78132 if(t.button!=DwtMouseEvent.LEFT){\r
78133 return\r
78134 }\r
78135 var a=e._dropDownEl;\r
78136 if(e._menu&&a&&e._dropDownDepImg){\r
78137 AjxImg.setImage(a,e._dropDownDepImg)\r
78138 }\r
78139 switch(e._actionTiming){\r
78140 case DwtButton.ACTION_MOUSEDOWN:e.trigger();\r
78141 e._handleClick(t);\r
78142 break;\r
78143 case DwtButton.ACTION_MOUSEUP:e.trigger();\r
78144 break\r
78145 }};\r
78146 DwtButton._mouseUpListener=function(a){\r
78147 var e=a.dwtObj;\r
78148 if(!e){\r
78149 return false\r
78150 }\r
78151 if(e._isDropDownEvent(a)){\r
78152 return DwtButton._dropDownCellMouseUpHdlr(a)\r
78153 }\r
78154 if(a.button!=DwtMouseEvent.LEFT){\r
78155 return\r
78156 }\r
78157 var o=e._dropDownEl;\r
78158 if(e._menu&&o&&e._dropDownHovImg&&!e.noMenuBar){\r
78159 AjxImg.setImage(o,e._dropDownHovImg)\r
78160 }\r
78161 switch(e._actionTiming){\r
78162 case DwtButton.ACTION_MOUSEDOWN:e.deactivate();\r
78163 break;\r
78164 case DwtButton.ACTION_MOUSEUP:var t=e.getHtmlElement();\r
78165 if(e.isActive){\r
78166 e.deactivate();\r
78167 e._handleClick(a)\r
78168 }\r
78169 break\r
78170 }};\r
78171 DwtButton._listeners={};\r
78172 DwtButton._listeners[DwtEvent.ONMOUSEOVER]=new AjxListener(null,DwtButton._mouseOverListener);\r
78173 DwtButton._listeners[DwtEvent.ONMOUSEOUT]=new AjxListener(null,DwtButton._mouseOutListener);\r
78174 DwtButton._listeners[DwtEvent.ONMOUSEDOWN]=new AjxListener(null,DwtButton._mouseDownListener);\r
78175 DwtButton._listeners[DwtEvent.ONMOUSEUP]=new AjxListener(null,DwtButton._mouseUpListener);\r
78176 DwtButton._listeners[DwtEvent.ONMOUSEENTER]=new AjxListener(null,DwtButton._mouseOverListener);\r
78177 DwtButton._listeners[DwtEvent.ONMOUSELEAVE]=new AjxListener(null,DwtButton._mouseOutListener)\r
78178 }\r
78179 if(AjxPackage.define("ajax.dwt.widgets.DwtMenuItem")){\r
78180 DwtMenuItem=function(a){\r
78181 if(arguments.length==0){\r
78182 return\r
78183 }\r
78184 a=Dwt.getParams(arguments,DwtMenuItem.PARAMS);\r
78185 var t=a.parent;\r
78186 if(!(t instanceof DwtMenu)){\r
78187 throw new DwtException("Parent must be a DwtMenu object",DwtException.INVALIDPARENT,"DwtMenuItem")\r
78188 }\r
78189 var e=a.style=a.style||DwtMenuItem.NO_STYLE;\r
78190 if(t._style==DwtMenu.BAR_STYLE&&e!=DwtMenuItem.PUSH_STYLE){\r
78191 throw new DwtException("DwtMenuItemInit: invalid style",DwtException.INVALID_PARAM,"DwtMenuItem")\r
78192 }\r
78193 e&=~DwtLabel.IMAGE_RIGHT;\r
78194 e|=DwtButton.ALWAYS_FLAT|DwtLabel.IMAGE_LEFT;\r
78195 a.className=(e&DwtMenuItem.SEPARATOR_STYLE)?"ZMenuItemSeparator":(a.className||"ZMenuItem");\r
78196 a.listeners=DwtMenuItem._listeners;\r
78197 DwtButton.call(this,a);\r
78198 this.setDropDownImages("Cascade","Cascade","Cascade","Cascade");\r
78199 this._radioGroupId=a.radioGroupId;\r
78200 if(t._addItem){\r
78201 t._addItem(this,a.index)\r
78202 }\r
78203 if(!(e&DwtMenuItem.SEPARATOR_STYLE)){\r
78204 this.addSelectionListener(new AjxListener(this,this.__handleItemSelect))\r
78205 }};\r
78206 DwtMenuItem.PARAMS=["parent","style","radioGroupId","index","className","posStyle"];\r
78207 DwtMenuItem.prototype=new DwtButton;\r
78208 DwtMenuItem.prototype.constructor=DwtMenuItem;\r
78209 DwtMenuItem.prototype.toString=function(){\r
78210 return"DwtMenuItem"\r
78211 };\r
78212 DwtMenuItem.CHECKED=1;\r
78213 DwtMenuItem.UNCHECKED=2;\r
78214 DwtMenuItem.NO_STYLE=0;\r
78215 DwtMenuItem.CHECK_STYLE=DwtButton._LAST_STYLE*2;\r
78216 DwtMenuItem.RADIO_STYLE=DwtButton._LAST_STYLE*4;\r
78217 DwtMenuItem.SEPARATOR_STYLE=DwtButton._LAST_STYLE*8;\r
78218 DwtMenuItem.CASCADE_STYLE=DwtButton._LAST_STYLE*16;\r
78219 DwtMenuItem.PUSH_STYLE=DwtButton._LAST_STYLE*32;\r
78220 DwtMenuItem.SELECT_STYLE=DwtButton._LAST_STYLE*64;\r
78221 DwtMenuItem._LAST_STYLE=DwtMenuItem.SELECT_STYLE;\r
78222 DwtMenuItem._MENU_POPUP_DELAY=250;\r
78223 DwtMenuItem._MENU_POPDOWN_DELAY=250;\r
78224 DwtMenuItem.prototype.TEMPLATE="dwt.Widgets#ZMenuItem";\r
78225 DwtMenuItem.prototype.SEPARATOR_TEMPLATE="dwt.Widgets#ZMenuItemSeparator";\r
78226 DwtMenuItem.prototype.BLANK_CHECK_TEMPLATE="dwt.Widgets#ZMenuItemBlankCheck";\r
78227 DwtMenuItem.prototype.BLANK_ICON_TEMPLATE="dwt.Widgets#ZMenuItemBlankIcon";\r
78228 DwtMenuItem.prototype.BLANK_CASCADE_TEMPLATE="dwt.Widgets#ZMenuItemBlankCascade";\r
78229 DwtMenuItem.prototype.dispose=function(){\r
78230 delete this._checkEl;\r
78231 DwtButton.prototype.dispose.call(this)\r
78232 };\r
78233 DwtMenuItem.create=function(t){\r
78234 var e=new DwtMenuItem(t);\r
78235 if(t.imageInfo){\r
78236 e.setImage(t.imageInfo)\r
78237 }\r
78238 if(t.text){\r
78239 e.setText(t.text)\r
78240 }\r
78241 e.setEnabled(t.enabled!==false);\r
78242 return e\r
78243 };\r
78244 DwtMenuItem.prototype.getChecked=function(){\r
78245 return this._itemChecked\r
78246 };\r
78247 DwtMenuItem.prototype.setChecked=function(t,e){\r
78248 this._setChecked(t,null,e);\r
78249 this.parent._checkItemAdded(this)\r
78250 };\r
78251 DwtMenuItem.prototype.setImage=function(e){\r
78252 DwtButton.prototype.setImage.call(this,e);\r
78253 this.parent._iconItemAdded(this)\r
78254 };\r
78255 DwtMenuItem.prototype.setText=function(e){\r
78256 DwtButton.prototype.setText.call(this,e);\r
78257 if(this.parent.isPoppedUp()){\r
78258 this.parent.render()\r
78259 }};\r
78260 DwtMenuItem.prototype.setMenu=function(a,e,t){\r
78261 DwtButton.prototype.setMenu.call(this,a,e,t);\r
78262 this.parent._submenuItemAdded(this)\r
78263 };\r
78264 DwtMenuItem.prototype.setHoverDelay=function(e){\r
78265 this._hoverDelay=e\r
78266 };\r
78267 DwtMenuItem.prototype.setShortcut=function(e){\r
78268 if(e&&this._dropDownEl){\r
78269 this._dropDownEl.innerHTML=e\r
78270 }};\r
78271 DwtMenuItem.prototype._createHtml=function(e){\r
78272 var t=(this._style&DwtMenuItem.SEPARATOR_STYLE)?this.SEPARATOR_TEMPLATE:this.TEMPLATE;\r
78273 DwtButton.prototype._createHtml.call(this,e||t)\r
78274 };\r
78275 DwtMenuItem.prototype._createHtmlFromTemplate=function(e,t){\r
78276 DwtButton.prototype._createHtmlFromTemplate.call(this,e,t);\r
78277 this._checkEl=document.getElementById(t.id+"_check")\r
78278 };\r
78279 DwtMenuItem.prototype._setChecked=function(s,n,t){\r
78280 var e=this._style&DwtMenuItem.CHECK_STYLE;\r
78281 var o=this._style&DwtMenuItem.RADIO_STYLE;\r
78282 if((e||o)&&this._itemChecked!=s){\r
78283 this._itemChecked=s;\r
78284 if(this._checkEl){\r
78285 this._checkEl.innerHTML="";\r
78286 var a=s?(e?"MenuCheck":"MenuRadio"):"Blank_9";\r
78287 AjxImg.setImage(this._checkEl,a);\r
78288 if(s){\r
78289 if(o){\r
78290 this.parent._radioItemSelected(this,t)\r
78291 }}}}};\r
78292 DwtMenuItem.prototype._checkItemAdded=function(e){};\r
78293 DwtMenuItem.prototype._checkedItemsRemoved=function(){};\r
78294 DwtMenuItem.prototype._submenuItemAdded=function(){\r
78295 if(this._style&DwtMenuItem.SEPARATOR_STYLE){\r
78296 return\r
78297 }\r
78298 if(this._cascCell==null){\r
78299 this._cascCell=this._row.insertCell(-1);\r
78300 this._cascCell.noWrap=true;\r
78301 this._cascCell.style.width=DwtMenuItem._CASCADE_DIM;\r
78302 this._cascCell.style.height=(this._style!=DwtMenuItem.SEPARATOR_STYLE)?DwtMenuItem._CASCADE_DIM:DwtMenuItem._SEPAARATOR_DIM\r
78303 }};\r
78304 DwtMenuItem.prototype._submenuItemRemoved=function(){\r
78305 if(this._dropDownEl){\r
78306 this._dropDownEl.innerHTML=""\r
78307 }};\r
78308 DwtMenuItem.prototype._popupMenu=function(n,m){\r
78309 var e=this.getMenu();\r
78310 var t=this.parent.parent;\r
78311 var d=this.getBounds();\r
78312 var r=e.shell.getSize();\r
78313 var f=e.getSize();\r
78314 var u;\r
78315 var h;\r
78316 var o;\r
78317 var c;\r
78318 var a=t.getHtmlElement();\r
78319 if(t._style==DwtMenu.BAR_STYLE){\r
78320 o=(a.style.borderLeftWidth=="")?0:parseInt(a.style.borderLeftWidth);\r
78321 u=d.x+o;\r
78322 c=(a.style.borderTopWidth=="")?0:parseInt(a.style.borderTopWidth);\r
78323 c+=(a.style.borderBottomWidth=="")?0:parseInt(a.style.borderBottonWidth);\r
78324 h=d.y+d.height+c;\r
78325 u=((u+f.x)>=r.x)?u-(u+f.x-r.x):u\r
78326 }else{\r
78327 o=(a.style.borderLeftWidth=="")?0:parseInt(a.style.borderLeftWidth);\r
78328 o+=(a.style.borderRightWidth=="")?0:parseInt(a.style.borderRightWidth);\r
78329 u=d.x+d.width+o;\r
78330 c=(a.style.borderTopWidth=="")?0:parseInt(a.style.borderTopWidth);\r
78331 h=d.y+c;\r
78332 u=((u+f.x)>=r.x)?d.x-f.x-o:u\r
78333 }\r
78334 e.popup(n,u,h,m)\r
78335 };\r
78336 DwtMenuItem.prototype._popdownMenu=function(){\r
78337 var e=this.getMenu();\r
78338 if(e){\r
78339 e.popdown()\r
78340 }};\r
78341 DwtMenuItem.prototype._isMenuPoppedUp=function(){\r
78342 var e=this.getMenu();\r
78343 return(e&&e.isPoppedUp())\r
78344 };\r
78345 DwtMenuItem.prototype.__handleItemSelect=function(e){\r
78346 this.setDisplayState(DwtControl.NORMAL);\r
78347 if(this.isStyle(DwtMenuItem.CHECK_STYLE)){\r
78348 this._setChecked(!this._itemChecked,null,true);\r
78349 e.detail=this.getChecked()?DwtMenuItem.CHECKED:DwtMenuItem.UNCHECKED\r
78350 }else{\r
78351 if(this.isStyle(DwtMenuItem.RADIO_STYLE)){\r
78352 this._setChecked(true,true);\r
78353 this.parent._radioItemSelected(this,true);\r
78354 e.detail=this.getChecked()?DwtMenuItem.CHECKED:DwtMenuItem.UNCHECKED\r
78355 }else{\r
78356 if(this.isStyle(DwtMenuItem.PUSH_STYLE)){\r
78357 if(this._menu){\r
78358 if(this._isMenuPoppedUp()){\r
78359 DwtMenu.closeActiveMenu()\r
78360 }else{\r
78361 this._popupMenu()\r
78362 }}\r
78363 return\r
78364 }}}\r
78365 if(!this.isStyle(DwtMenuItem.CASCADE_STYLE)){\r
78366 if(!this._menu||!this._menu.isPoppedUp||!this._menu.isPoppedUp()){\r
78367 DwtMenu.closeActiveMenu()\r
78368 }}};\r
78369 DwtMenuItem._mouseOverListener=function(a){\r
78370 var e=a.dwtObj;\r
78371 if(!e){\r
78372 return false\r
78373 }\r
78374 var o=e.parent;\r
78375 if(o._hoveredItem){\r
78376 var t=new DwtMouseEvent();\r
78377 t.dwtObj=o._hoveredItem;\r
78378 DwtButton._mouseOutListener(t)\r
78379 }\r
78380 if(e._style&DwtMenuItem.SEPARATOR_STYLE){\r
78381 return false\r
78382 }\r
78383 DwtButton._mouseOverListener(a,e);\r
78384 o._hoveredItem=e;\r
78385 o._popdownSubmenus();\r
78386 if(e._menu&&!a.ersatz){\r
78387 e._popupMenu(e._hoverDelay)\r
78388 }};\r
78389 DwtMenuItem._mouseOutListener=function(a){\r
78390 var t=a.dwtObj;\r
78391 var e=t&&t.getMenu();\r
78392 if(e&&e.isPoppedUp()){\r
78393 return\r
78394 }\r
78395 DwtButton._mouseOutListener(a);\r
78396 if(t){\r
78397 t.parent._hoveredItem=null\r
78398 }};\r
78399 DwtMenuItem._listeners={};\r
78400 DwtMenuItem._listeners[DwtEvent.ONMOUSEOVER]=new AjxListener(null,DwtMenuItem._mouseOverListener);\r
78401 DwtMenuItem._listeners[DwtEvent.ONMOUSEOUT]=new AjxListener(null,DwtMenuItem._mouseOutListener);\r
78402 DwtMenuItem._listeners[DwtEvent.ONMOUSEDOWN]=new AjxListener(null,DwtButton._mouseDownListener);\r
78403 DwtMenuItem._listeners[DwtEvent.ONMOUSEUP]=new AjxListener(null,DwtButton._mouseUpListener);\r
78404 DwtMenuItem._listeners[DwtEvent.ONMOUSEENTER]=new AjxListener(null,DwtMenuItem._mouseOverListener);\r
78405 DwtMenuItem._listeners[DwtEvent.ONMOUSELEAVE]=new AjxListener(null,DwtButton._mouseOutListener)\r
78406 }\r
78407 if(AjxPackage.define("ajax.dwt.widgets.DwtMenu")){\r
78408 DwtMenu=function(n){\r
78409 if(arguments.length==0){\r
78410 return\r
78411 }\r
78412 n=Dwt.getParams(arguments,DwtMenu.PARAMS);\r
78413 this._origStyle=n.style;\r
78414 var a=n.parent;\r
78415 if(a){\r
78416 if(a instanceof DwtMenuItem||a instanceof DwtButton){\r
78417 if(n.style==DwtMenu.GENERIC_WIDGET_STYLE){\r
78418 this._style=n.style\r
78419 }else{\r
78420 this._style=DwtMenu.DROPDOWN_STYLE\r
78421 }}else{\r
78422 this._style=n.style||DwtMenu.POPUP_STYLE\r
78423 }\r
78424 if(!n.posStyle){\r
78425 n.posStyle=(this._style==DwtMenu.BAR_STYLE)?DwtControl.STATIC_STYLE:DwtControl.ABSOLUTE_STYLE\r
78426 }}\r
78427 n.className=n.className||"DwtMenu";\r
78428 this._cascade=n.cascade==null||n.cascade;\r
78429 n.parent=(a instanceof DwtShell)?a:a.shell;\r
78430 DwtComposite.call(this,n);\r
78431 this.parent=a;\r
78432 var e=(this._style==DwtMenu.POPUP_STYLE||this._style==DwtMenu.DROPDOWN_STYLE);\r
78433 if(e&&!this._cascade){\r
78434 this.setScrollStyle(DwtControl.SCROLL)\r
78435 }\r
78436 if(!a){\r
78437 return\r
78438 }\r
78439 var t=AjxEnv.isIE?[DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP]:[DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP,DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT];\r
78440 this._setEventHdlrs(t);\r
78441 this._hasSetMouseEvents=true;\r
78442 var o=this.getHtmlElement();\r
78443 if(n.posStyle!=DwtControl.STATIC_STYLE){\r
78444 Dwt.setLocation(o,Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE)\r
78445 }\r
78446 if(this._style!=DwtMenu.COLOR_PICKER_STYLE&&this._style!=DwtMenu.CALENDAR_PICKER_STYLE&&this._style!=DwtMenu.GENERIC_WIDGET_STYLE){\r
78447 this._table=document.createElement("table");\r
78448 this._table.border=this._table.cellPadding=this._table.cellSpacing=0;\r
78449 this._table.className="DwtMenuTable";\r
78450 o.appendChild(this._table);\r
78451 this._table.backgroundColor=DwtCssStyle.getProperty(o,"background-color")\r
78452 }\r
78453 if(n.style!=DwtMenu.BAR_STYLE){\r
78454 this.setZIndex(Dwt.Z_HIDDEN);\r
78455 this._isPoppedUp=false\r
78456 }else{\r
78457 DwtMenu._activeMenuIds.add(o.id,null,true);\r
78458 this._isPoppedUp=true\r
78459 }\r
78460 this._popdownAction=new AjxTimedAction(this,this._doPopdown);\r
78461 this._popdownActionId=-1;\r
78462 this._popupAction=new AjxTimedAction(this,this._doPopup);\r
78463 this._popupActionId=-1;\r
78464 if(AjxEnv.isIE){\r
78465 if((this.parent instanceof DwtMenuItem&&this.parent.parent._style==DwtMenu.BAR_STYLE)||!(this.parent instanceof DwtMenuItem)){\r
78466 this._outsideListener=new AjxListener(null,DwtMenu._outsideMouseDownListener)\r
78467 }}\r
78468 this._menuItemsHaveChecks=false;\r
78469 this._menuItemsHaveIcons=false;\r
78470 this._menuItemsWithSubmenus=0;\r
78471 this.__currentItem=null;\r
78472 this.__preventMenuFocus=false;\r
78473 this._menuCapObj=new DwtMouseEventCapture({\r
78474 targetObj:this,id:"DwtMenu",mouseDownHdlr:DwtMenu._capMouseDownHdlr,mouseWheelHdlr:DwtMenu._capMouseWheelHdlr,hardCapture:false}\r
78475 );\r
78476 this._tabGroup=new DwtTabGroup(this.toString(),true);\r
78477 this._tabGroup.addMember(this)\r
78478 };\r
78479 DwtMenu.PARAMS=["parent","style","className","posStyle","cascade"];\r
78480 DwtMenu.prototype=new DwtComposite;\r
78481 DwtMenu.prototype.constructor=DwtMenu;\r
78482 DwtMenu.prototype.toString=function(){\r
78483 return"DwtMenu"\r
78484 };\r
78485 DwtMenu.BAR_STYLE=1;\r
78486 DwtMenu.POPUP_STYLE=2;\r
78487 DwtMenu.DROPDOWN_STYLE=3;\r
78488 DwtMenu.COLOR_PICKER_STYLE=4;\r
78489 DwtMenu.CALENDAR_PICKER_STYLE=5;\r
78490 DwtMenu.GENERIC_WIDGET_STYLE=6;\r
78491 DwtMenu.HAS_ICON="ZHasIcon";\r
78492 DwtMenu.HAS_CHECK="ZHasCheck";\r
78493 DwtMenu.HAS_SUBMENU="ZHasSubMenu";\r
78494 DwtMenu._activeMenuUp=false;\r
78495 DwtMenu._activeMenuIds=new AjxVector();\r
78496 DwtMenu._activeMenus=new AjxVector();\r
78497 DwtMenu.prototype.dispose=function(){\r
78498 this._table=null;\r
78499 DwtComposite.prototype.dispose.call(this);\r
78500 if(!(this.parent instanceof DwtShell)){\r
78501 this.shell.removeChild(this)\r
78502 }};\r
78503 DwtMenu.prototype.addPopupListener=function(e){\r
78504 this.addListener(DwtEvent.POPUP,e)\r
78505 };\r
78506 DwtMenu.prototype.removePopupListener=function(e){\r
78507 this.removeListener(DwtEvent.POPUP,e)\r
78508 };\r
78509 DwtMenu.prototype.addPopdownListener=function(e){\r
78510 this.addListener(DwtEvent.POPDOWN,e)\r
78511 };\r
78512 DwtMenu.prototype.removePopdownListener=function(e){\r
78513 this.removeListener(DwtEvent.POPDOWN,e)\r
78514 };\r
78515 DwtMenu.prototype.getItem=function(e){\r
78516 return this._children.get(e)\r
78517 };\r
78518 DwtMenu.prototype.getItemById=function(a,n){\r
78519 var e=this.getItems();\r
78520 for(var t=0;\r
78521 t<e.length;\r
78522 t++){\r
78523 var o=e[t].getData(a);\r
78524 if(o==n){\r
78525 return e[t]\r
78526 }}\r
78527 return null\r
78528 };\r
78529 DwtMenu.prototype.getItemCount=function(){\r
78530 return this._children.size()\r
78531 };\r
78532 DwtMenu.prototype.getItems=function(){\r
78533 return this._children.getArray()\r
78534 };\r
78535 DwtMenu.prototype.getSelectedItem=function(n){\r
78536 var e=this._children.getArray();\r
78537 for(var o=0;\r
78538 o<e.length;\r
78539 o++){\r
78540 var t=e[o];\r
78541 if((n==null||(t._style&&n!=0))&&t.getChecked()){\r
78542 return t\r
78543 }}\r
78544 return null\r
78545 };\r
78546 DwtMenu.prototype.isPoppedUp=function(){\r
78547 return this._isPoppedUp\r
78548 };\r
78549 DwtMenu.prototype.popup=function(a,e,o,t){\r
78550 if(this._style==DwtMenu.BAR_STYLE){\r
78551 return\r
78552 }\r
78553 if(this._popdownActionId!=-1){\r
78554 AjxTimedAction.cancelAction(this._popdownActionId);\r
78555 this._popdownActionId=-1\r
78556 }else{\r
78557 if(this._isPoppedUp||(this._popupActionId!=-1&&a&&a>0)){\r
78558 return\r
78559 }else{\r
78560 if(this._popupActionId!=-1){\r
78561 AjxTimedAction.cancelAction(this._popupActionId);\r
78562 this._popupActionId=-1\r
78563 }}\r
78564 if(!a){\r
78565 this._doPopup(e,o,t)\r
78566 }else{\r
78567 this._popupAction.args=[e,o,t];\r
78568 this._popupActionId=AjxTimedAction.scheduleAction(this._popupAction,a)\r
78569 }}};\r
78570 DwtMenu.prototype.popdown=function(e){\r
78571 if(this._style==DwtMenu.BAR_STYLE){\r
78572 return\r
78573 }\r
78574 if(this._popupActionId!=-1){\r
78575 AjxTimedAction.cancelAction(this._popupActionId);\r
78576 this._popupActionId=-1\r
78577 }else{\r
78578 if(!this._isPoppedUp||this._popdownActionId!=-1){\r
78579 return\r
78580 }\r
78581 if(e==null||e==0){\r
78582 this._doPopdown()\r
78583 }else{\r
78584 this._popdownActionId=AjxTimedAction.scheduleAction(this._popdownAction,e)\r
78585 }}};\r
78586 DwtMenu.prototype.render=function(m,d){\r
78587 var p=this.shell.getSize();\r
78588 var q=this.getSize();\r
78589 p.y-=10+(AjxEnv.isIE?20:0);\r
78590 p.x-=28;\r
78591 var t=(this._style==DwtMenu.POPUP_STYLE||this._style==DwtMenu.DROPDOWN_STYLE);\r
78592 var w=this._cascade;\r
78593 if(t&&w){\r
78594 var z=p.y;\r
78595 var T=null;\r
78596 var u=this._table.rows;\r
78597 var a=u.length;\r
78598 var g=q.y;\r
78599 var c=z-25;\r
78600 for(var k=a-1;\r
78601 k>=0;\r
78602 k--){\r
78603 g-=Dwt.getSize(u[k]).y;\r
78604 if(g<c){\r
78605 break\r
78606 }}\r
78607 var h=k+1;\r
78608 for(var v=h;\r
78609 v<a;\r
78610 v++){\r
78611 var r=u[(v-h)%h];\r
78612 var e=r.insertCell(-1);\r
78613 e.className="DwtMenuCascadeCell";\r
78614 var s=u[v].cells[0].firstChild;\r
78615 while(s!=null){\r
78616 e.appendChild(s);\r
78617 s=s.nextSibling\r
78618 }}\r
78619 for(v=u.length-1;\r
78620 v>=h;\r
78621 v--){\r
78622 this._table.deleteRow(h)\r
78623 }\r
78624 var n=a%h;\r
78625 if(n>0){\r
78626 for(var v=n;\r
78627 v<h;\r
78628 v++){\r
78629 var r=u[v];\r
78630 var e=r.insertCell(-1);\r
78631 e.className="DwtMenuCascadeCell";\r
78632 e.empty=true;\r
78633 e.innerHTML="&nbsp;"\r
78634 }}\r
78635 q=this.getSize();\r
78636 if(T){\r
78637 d=T-q.y\r
78638 }}else{\r
78639 if(t&&!w){\r
78640 if(d+q.y>p.y){\r
78641 q.y=p.y-d\r
78642 }}}\r
78643 var O=m+q.x>=p.x?p.x-q.x:m;\r
78644 var T=t&&d+q.y>=p.y?p.y-q.y:d;\r
78645 this.setLocation(O,T);\r
78646 var A="auto";\r
78647 var o=(t&&w)||d+q.y<p.y-5?"auto":p.y-d-5;\r
78648 this.setSize(A,o);\r
78649 if((AjxEnv.isGeckoBased||AjxEnv.isSafari||(this._origStyle==DwtMenu.CALENDAR_PICKER_STYLE))&&this._table){\r
78650 var f=this.getHtmlElement();\r
78651 f.style.width=(q.x+(t&&!w?10:0))+"px"\r
78652 }};\r
78653 DwtMenu.prototype.getKeyMapName=function(){\r
78654 return"DwtMenu"\r
78655 };\r
78656 DwtMenu.prototype.handleKeyAction=function(e,t){\r
78657 switch(this._style){\r
78658 case DwtMenu.BAR_STYLE:case DwtMenu.POPUP_STYLE:case DwtMenu.DROPDOWN_STYLE:break;\r
78659 default:return false\r
78660 }\r
78661 switch(e){\r
78662 case DwtKeyMap.SELECT_NEXT:case DwtKeyMap.SELECT_PREV:this.setSelectedItem(e==DwtKeyMap.SELECT_NEXT);\r
78663 break;\r
78664 case DwtKeyMap.SELECT:if(this.__currentItem){\r
78665 this.__currentItem._emulateSingleClick()\r
78666 }\r
78667 break;\r
78668 case DwtKeyMap.SUBMENU:if(this.__currentItem&&this.__currentItem._menu){\r
78669 this.__currentItem._popupMenu(0,true)\r
78670 }\r
78671 break;\r
78672 case DwtKeyMap.PARENTMENU:if(this.parent instanceof DwtMenuItem){\r
78673 this.popdown(0)\r
78674 }\r
78675 break;\r
78676 case DwtKeyMap.CANCEL:if(this.__currentItem){\r
78677 var a=new DwtMouseEvent();\r
78678 this._setMouseEvent(a,{\r
78679 dwtObj:this.__currentItem}\r
78680 );\r
78681 this.notifyListeners(DwtEvent.ONMOUSEOUT,a);\r
78682 this.__currentItem=null\r
78683 }\r
78684 this.popdown(0);\r
78685 break;\r
78686 default:return false\r
78687 }\r
78688 return true\r
78689 };\r
78690 DwtMenu.prototype._focus=function(){};\r
78691 DwtMenu.prototype._blur=function(){};\r
78692 DwtMenu.prototype.setAssociatedObj=function(e){\r
78693 this._associatedObj=e\r
78694 };\r
78695 DwtMenu.prototype.setAssociatedElementId=function(e){\r
78696 this._associatedElId=e\r
78697 };\r
78698 DwtMenu.prototype.checkItem=function(s,n,a){\r
78699 var e=this._children.getArray();\r
78700 for(var t=0;\r
78701 t<e.length;\r
78702 t++){\r
78703 var o=e[t];\r
78704 if(!(o.isStyle(DwtMenuItem.CHECK_STYLE)||o.isStyle(DwtMenuItem.RADIO_STYLE))){\r
78705 continue\r
78706 }\r
78707 var r=o.getData(s);\r
78708 if(r==n){\r
78709 o.setChecked(true,a)\r
78710 }}};\r
78711 DwtMenu.prototype.setSelectedItem=function(t){\r
78712 var e=this.__currentItem;\r
78713 if(typeof(t)=="boolean"){\r
78714 e=!e?this._children.get(0):t?this._children.getNext(e):this._children.getPrev(e)\r
78715 }else{\r
78716 e=this._children.get(t)\r
78717 }\r
78718 while(e&&(e.isStyle(DwtMenuItem.SEPARATOR_STYLE)||!e.getEnabled()||!e.getVisible())){\r
78719 e=(t===false)?this._children.getPrev(e):this._children.getNext(e)\r
78720 }\r
78721 if(!e){\r
78722 return\r
78723 }\r
78724 var a=new DwtMouseEvent();\r
78725 if(this.__currentItem){\r
78726 this._setMouseEvent(a,{\r
78727 dwtObj:this.__currentItem}\r
78728 );\r
78729 this.__currentItem.notifyListeners(DwtEvent.ONMOUSEOUT,a)\r
78730 }\r
78731 this._setMouseEvent(a,{\r
78732 dwtObj:e}\r
78733 );\r
78734 e.notifyListeners(DwtEvent.ONMOUSEOVER,a);\r
78735 this.__currentItem=e\r
78736 };\r
78737 DwtMenu.prototype.clearExternallySelectedItems=function(){\r
78738 if(this._externallySelected!=null){\r
78739 this._externallySelected._deselect();\r
78740 this._externallySelected=null\r
78741 }};\r
78742 DwtMenu.prototype.removeChild=function(a){\r
78743 if(this._table){\r
78744 if(this._style==DwtMenu.BAR_STYLE){\r
78745 var e=a.getHtmlElement().parentNode;\r
78746 this._table.rows[0].deleteCell(Dwt.getCellIndex(e))\r
78747 }else{\r
78748 var t=a.getHtmlElement();\r
78749 if(t){\r
78750 this._table.deleteRow(t.parentNode.parentNode.rowIndex)\r
78751 }}}\r
78752 this._children.remove(a)\r
78753 };\r
78754 DwtMenu.prototype.addChild=function(e){\r
78755 DwtComposite.prototype.addChild.apply(this,arguments);\r
78756 if(Dwt.instanceOf(e,"DwtColorPicker")||Dwt.instanceOf(e,"DwtCalendar")||(this._style==DwtMenu.GENERIC_WIDGET_STYLE)){\r
78757 this._addItem(e)\r
78758 }};\r
78759 DwtMenu.prototype._addItem=function(o,t){\r
78760 if(this._style==DwtMenu.COLOR_PICKER_STYLE||this._style==DwtMenu.CALENDAR_PICKER_STYLE||this._style==DwtMenu.GENERIC_WIDGET_STYLE){\r
78761 return\r
78762 }\r
78763 var s;\r
78764 var e;\r
78765 if(this._style==DwtMenu.BAR_STYLE){\r
78766 var n=this._table.rows;\r
78767 s=(n.length!=0)?n[0]:this._table.insertRow(0);\r
78768 if(t==null||t>s.cells.length){\r
78769 t=n.cells.length\r
78770 }\r
78771 e=s.insertCell(t);\r
78772 e.align="center";\r
78773 e.vAlign="middle";\r
78774 var a=s.insertCell(-1);\r
78775 a.nowrap=true;\r
78776 a.width="7px"\r
78777 }else{\r
78778 if(o.isStyle&&(o.isStyle(DwtMenuItem.CHECK_STYLE)||o.isStyle(DwtMenuItem.RADIO_STYLE))){\r
78779 this._checkItemAdded()\r
78780 }\r
78781 if(t==null||t>this._table.rows.length){\r
78782 t=-1\r
78783 }\r
78784 s=this._table.insertRow(t);\r
78785 e=s.insertCell(0)\r
78786 }\r
78787 e.noWrap=true;\r
78788 e.appendChild(o.getHtmlElement())\r
78789 };\r
78790 DwtMenu.prototype._radioItemSelected=function(r,n){\r
78791 var t=r._radioGroupId;\r
78792 var s=this._children.size();\r
78793 var e=this._children.getArray();\r
78794 for(var o=0;\r
78795 o<s;\r
78796 o++){\r
78797 if(e[o]!=r&&e[o].isStyle(DwtMenuItem.RADIO_STYLE)&&e[o]._radioGroupId==t&&e[o]._itemChecked){\r
78798 e[o].setChecked(false,n);\r
78799 break\r
78800 }}};\r
78801 DwtMenu.prototype._menuHasCheckedItems=function(){\r
78802 return this._menuItemsHaveChecks\r
78803 };\r
78804 DwtMenu.prototype._menuHasItemsWithIcons=function(){\r
78805 return this._menuItemsHaveIcons\r
78806 };\r
78807 DwtMenu.prototype._menuHasSubmenus=function(){\r
78808 return(this._menuItemsWithSubmenus>0)\r
78809 };\r
78810 DwtMenu.prototype._iconItemAdded=function(e){\r
78811 if(!this._menuItemsHaveIcons){\r
78812 Dwt.addClass(this.getHtmlElement(),DwtMenu.HAS_ICON)\r
78813 }\r
78814 this._menuItemsHaveIcons=true\r
78815 };\r
78816 DwtMenu.prototype._checkItemAdded=function(e){\r
78817 if(!this._menuItemsHaveChecks){\r
78818 Dwt.addClass(this.getHtmlElement(),DwtMenu.HAS_CHECK)\r
78819 }\r
78820 this._menuItemsHaveChecks=true\r
78821 };\r
78822 DwtMenu.prototype._submenuItemAdded=function(){\r
78823 Dwt.addClass(this.getHtmlElement(),DwtMenu.HAS_SUBMENU);\r
78824 this._menuItemsWithSubmenus++\r
78825 };\r
78826 DwtMenu.prototype._submenuItemRemoved=function(){\r
78827 if(this._menuItemsWithSubmenus==1){\r
78828 var o=this._children.size();\r
78829 var e=this._children.getArray();\r
78830 for(var t=0;\r
78831 t<o;\r
78832 t++){\r
78833 e[t]._submenuItemRemoved()\r
78834 }}\r
78835 this._menuItemsWithSubmenus--;\r
78836 if(this._menuItemsWithSubmenus==0){\r
78837 Dwt.delClass(this.getHtmlElement(),DwtMenu.HAS_SUBMENU)\r
78838 }};\r
78839 DwtMenu.prototype._popdownSubmenus=function(){\r
78840 var o=this._children.size();\r
78841 var e=this._children.getArray();\r
78842 for(var t=0;\r
78843 t<o;\r
78844 t++){\r
78845 e[t]._popdownMenu()\r
78846 }};\r
78847 DwtMenu.prototype.dontStealFocus=function(e){\r
78848 if(e==null){\r
78849 e=true\r
78850 }\r
78851 this.__preventMenuFocus=!!e\r
78852 };\r
78853 DwtMenu.prototype._doPopup=function(e,r,n){\r
78854 this.render(e,r);\r
78855 var t=(this._style==DwtMenu.POPUP_STYLE||this._style==DwtMenu.DROPDOWN_STYLE);\r
78856 var a=this._cascade;\r
78857 this.setScrollStyle(t&&a?Dwt.CLIP:Dwt.SCROLL);\r
78858 this.notifyListeners(DwtEvent.POPUP,this);\r
78859 var o=this.shell.getToolTip();\r
78860 if(o){\r
78861 o.popdown()\r
78862 }\r
78863 var s=DwtBaseDialog.getActiveDialog()?Dwt.Z_DIALOG_MENU:Dwt.Z_MENU;\r
78864 this.setZIndex(s);\r
78865 this._popupActionId=-1;\r
78866 this._isPoppedUp=true;\r
78867 if(AjxEnv.isIE&&this._outsideListener){\r
78868 this.shell._setEventHdlrs([DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEWHEEL]);\r
78869 this.shell.addListener(DwtEvent.ONMOUSEDOWN,this._outsideListener);\r
78870 this.shell.addListener(DwtEvent.ONMOUSEWHEEL,this._outsideListener)\r
78871 }\r
78872 if(!DwtMenu._activeMenu){\r
78873 DwtMenu._activeMenu=this;\r
78874 DwtMenu._activeMenuUp=true;\r
78875 if(AjxEnv.isIE){\r
78876 DwtEventManager.addListener(DwtEvent.ONMOUSEDOWN,DwtMenu._outsideMouseDownListener);\r
78877 DwtEventManager.addListener(DwtEvent.ONMOUSEWHEEL,DwtMenu._outsideMouseDownListener)\r
78878 }}\r
78879 DwtMenu._activeMenuIds.add(this._htmlElId,null,true);\r
78880 DwtMenu._activeMenuIds.sort();\r
78881 DwtMenu._activeMenus.add(this,null,true);\r
78882 if(!this._menuCapObj.capturing()){\r
78883 this._menuCapObj.capture();\r
78884 this._capturing=true\r
78885 }else{\r
78886 this._capturing=false\r
78887 }\r
78888 if(!this.__preventMenuFocus){\r
78889 DwtShell.getShell(window).getKeyboardMgr().pushTabGroup(this._tabGroup)\r
78890 }\r
78891 if(n){\r
78892 this.handleKeyAction(DwtKeyMap.SELECT_NEXT)\r
78893 }};\r
78894 DwtMenu.prototype.getSize=function(e){\r
78895 if(this._table){\r
78896 return Dwt.getSize(this._table,e)\r
78897 }\r
78898 return DwtComposite.prototype.getSize.call(this,e)\r
78899 };\r
78900 DwtMenu.prototype._doPopdown=function(){\r
78901 var c=this._children.getArray();\r
78902 var m=this._children.size();\r
78903 for(var n=0;\r
78904 n<m;\r
78905 n++){\r
78906 if((c[n] instanceof DwtMenuItem)&&!(c[n].isStyle(DwtMenuItem.SEPARATOR_STYLE))){\r
78907 c[n]._popdownMenu()\r
78908 }}\r
78909 this.setZIndex(Dwt.Z_HIDDEN);\r
78910 this.setLocation(Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE);\r
78911 this.notifyListeners(DwtEvent.POPDOWN,this);\r
78912 if(AjxEnv.isIE&&this._outsideListener){\r
78913 this.shell._setEventHdlrs([DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEWHEEL],true);\r
78914 this.shell.removeListener(DwtEvent.ONMOUSEDOWN,this._outsideListener);\r
78915 this.shell.removeListener(DwtEvent.ONMOUSEWHEEL,this._outsideListener)\r
78916 }\r
78917 if(DwtMenu._activeMenu==this){\r
78918 DwtMenu._activeMenu=null;\r
78919 DwtMenu._activeMenuUp=false;\r
78920 if(AjxEnv.isIE){\r
78921 DwtEventManager.removeListener(DwtEvent.ONMOUSEDOWN,DwtMenu._outsideMouseDownListener);\r
78922 DwtEventManager.removeListener(DwtEvent.ONMOUSEWHEEL,DwtMenu._outsideMouseDownListener)\r
78923 }}\r
78924 DwtMenu._activeMenuIds.remove(this._htmlElId);\r
78925 DwtMenu._activeMenus.remove(this);\r
78926 this._popdownActionId=-1;\r
78927 this._isPoppedUp=false;\r
78928 if(this._capturing&&(DwtMouseEventCapture.getId()=="DwtMenu")){\r
78929 this._menuCapObj.release();\r
78930 this._capturing=false\r
78931 }\r
78932 if((this._style==DwtMenu.POPUP_STYLE||this._style==DwtMenu.DROPDOWN_STYLE)&&this._table.rows.length&&this._table.rows[0].cells.length){\r
78933 var t=this._table.rows[0].cells.length;\r
78934 var r=this._table.rows.length;\r
78935 for(var n=1;\r
78936 n<t;\r
78937 n++){\r
78938 for(var o=0;\r
78939 o<r;\r
78940 o++){\r
78941 var d=this._table.rows[o].cells[n];\r
78942 if(!d.empty){\r
78943 var e=d.firstChild;\r
78944 var u=this._table.insertRow(this._table.rows.length);\r
78945 var d=u.insertCell(0);\r
78946 while(e!=null){\r
78947 d.appendChild(e);\r
78948 e=e.nextSibling\r
78949 }}}}\r
78950 for(var o=0;\r
78951 o<r;\r
78952 o++){\r
78953 var u=this._table.rows[o];\r
78954 for(var n=u.cells.length-1;\r
78955 n>0;\r
78956 n--){\r
78957 u.deleteCell(n)\r
78958 }}}\r
78959 this.__currentItem=null;\r
78960 if(this._hoveredItem){\r
78961 var h=new DwtMouseEvent();\r
78962 h.dwtObj=this._hoveredItem;\r
78963 DwtButton._mouseOutListener(h)\r
78964 }\r
78965 DwtShell.getShell(window).getKeyboardMgr().popTabGroup(this._tabGroup)\r
78966 };\r
78967 DwtMenu.prototype._getActiveItem=function(){\r
78968 var e=this._children.getArray();\r
78969 var o=this._children.size();\r
78970 for(var t=0;\r
78971 t<o;\r
78972 t++){\r
78973 if(e[t]._isMenuPoppedUp()){\r
78974 return e[t]\r
78975 }}\r
78976 return null\r
78977 };\r
78978 DwtMenu._outsideMouseDownListener=function(a){\r
78979 if(DwtMenu._activeMenuUp){\r
78980 var n=DwtMenu._activeMenu;\r
78981 var e=DwtControl.getTargetControl(a);\r
78982 if(n._associatedObj&&n._associatedObj==e){\r
78983 return false\r
78984 }\r
78985 var s=n._htmlElId;\r
78986 var o=DwtUiEvent.getTarget(a);\r
78987 while(o!=null){\r
78988 if(o.id&&o.id!=""&&(o.id==s||o.id==n._associatedElId||DwtMenu._activeMenuIds.binarySearch(o.id)!=-1)){\r
78989 return false\r
78990 }\r
78991 o=o.parentNode\r
78992 }\r
78993 n.popdown();\r
78994 var t=null;\r
78995 do{\r
78996 t=DwtMenu._activeMenus.getLast();\r
78997 if(t!=null&&t instanceof DwtMenu){\r
78998 t.popdown()\r
78999 }}\r
79000 while(t!=null)\r
79001 }\r
79002 a._stopPropagation=false;\r
79003 a._returnValue=true;\r
79004 return true\r
79005 };\r
79006 DwtMenu._capMouseDownHdlr=function(t){\r
79007 var a=DwtMouseEventCapture.getTargetObj();\r
79008 var e=DwtShell.mouseEvent;\r
79009 e.setFromDhtmlEvent(t);\r
79010 DwtMenu._outsideMouseDownListener(e);\r
79011 DwtUiEvent.setBehaviour(t,false,true);\r
79012 return true\r
79013 };\r
79014 DwtMenu._capMouseWheelHdlr=function(e){\r
79015 return DwtMenu._capMouseDownHdlr(e)\r
79016 };\r
79017 DwtMenu.menuShowing=function(){\r
79018 return DwtMenu._activeMenuUp\r
79019 };\r
79020 DwtMenu.closeActiveMenu=function(){\r
79021 if(DwtMenu._activeMenuUp){\r
79022 DwtMenu._activeMenu.popdown()\r
79023 }}\r
79024 }\r
79025 if(AjxPackage.define("ajax.dwt.widgets.DwtInputField")){\r
79026 DwtInputField=function(h){\r
79027 if(arguments.length==0){\r
79028 return\r
79029 }\r
79030 this._origClassName=h.className?h.className:"DwtInputField";\r
79031 this._errorClassName=this._origClassName+"-Error";\r
79032 this._hintClassName=this._origClassName+"-hint";\r
79033 this._disabledClassName=this._origClassName+"-disabled";\r
79034 this._errorHintClassName=this._origClassName+"-errorhint";\r
79035 DwtComposite.call(this,h);\r
79036 this._inputEventHandlers={};\r
79037 this._type=h.type?h.type:DwtInputField.STRING;\r
79038 this._rows=h.rows?h.rows:1;\r
79039 this._size=h.size;\r
79040 this._errorIconStyle=h.errorIconStyle?h.errorIconStyle:h.validator?DwtInputField.ERROR_ICON_RIGHT:DwtInputField.ERROR_ICON_NONE;\r
79041 this._validationStyle=h.validationStyle?h.validationStyle:DwtInputField.ONEXIT_VALIDATION;\r
79042 this._hasError=false;\r
79043 this._hintIsVisible=false;\r
79044 this._hint=h.hint;\r
79045 var r=h.inputID||Dwt.getNextId();\r
79046 var s=Dwt.getNextId();\r
79047 var n=this.getHtmlElement();\r
79048 if(this._errorIconStyle==DwtInputField.ERROR_ICON_NONE){\r
79049 if(h.forceMultiRow||(h.rows&&h.rows>1)){\r
79050 var e=["<textarea id='",r,"' rows=",h.rows];\r
79051 var o=e.length;\r
79052 if(h.forceMultiRow||h.size){\r
79053 e[o++]=" cols=";\r
79054 e[o++]=h.size||1\r
79055 }\r
79056 if(h.wrap){\r
79057 e[o++]=" wrap=";\r
79058 e[o++]=h.wrap\r
79059 }\r
79060 e[o++]="></textarea>";\r
79061 n.innerHTML=e.join("")\r
79062 }else{\r
79063 n.innerHTML=["<input id='",r,"'>"].join("")\r
79064 }}else{\r
79065 var e=["<table cellspacing='0' cellpadding='0'><tr>"];\r
79066 var o=1;\r
79067 if(this._errorIconStyle==DwtInputField.ERROR_ICON_LEFT){\r
79068 e[o++]=["<td style='padding-right:2px;'id='",s,"'></td>"].join("")\r
79069 }\r
79070 e[o++]=["<td>","<input id='",r,"'>","</td>"].join("");\r
79071 if(this._errorIconStyle==DwtInputField.ERROR_ICON_RIGHT){\r
79072 e[o++]=["<td style='padding-left:2px;' id='",s,"'></td>"].join("")\r
79073 }\r
79074 e[o++]="</tr></table>";\r
79075 n.innerHTML=e.join("");\r
79076 if(this._errorIconStyle!=DwtInputField.ERROR_ICON_NONE){\r
79077 this._errorIconTd=document.getElementById(s);\r
79078 this._errorIconTd.vAlign="middle";\r
79079 this._errorIconTd.innerHTML=DwtInputField._NOERROR_ICON_HTML\r
79080 }}\r
79081 this._tabGroup=new DwtTabGroup(this._htmlElId);\r
79082 if(h.forceMultiRow||this._rows>1){\r
79083 this._inputField=document.getElementById(r);\r
79084 this._inputField.onkeyup=DwtInputField._keyUpHdlr;\r
79085 this._inputField.onblur=DwtInputField._blurHdlr;\r
79086 this._inputField.onfocus=DwtInputField._focusHdlr;\r
79087 if(h.size){\r
79088 this._inputField.size=h.size\r
79089 }\r
79090 if(h.maxLen){\r
79091 this._inputField.maxLength=this._maxLen=h.maxLen\r
79092 }\r
79093 this._inputField.value=h.initialValue||"";\r
79094 this._tabGroup.addMember(this._inputField)\r
79095 }else{\r
79096 var t=document.getElementById(r);\r
79097 var a=this.__createInputEl(h);\r
79098 if(AjxEnv.isCamino){\r
79099 t.parentNode.style.overflow="hidden"\r
79100 }\r
79101 t.parentNode.replaceChild(a,t)\r
79102 }\r
79103 this.setValidatorFunction(h.validatorCtxtObj,h.validator);\r
79104 this._setMouseEventHdlrs(false);\r
79105 this._setKeyPressEventHdlr(false);\r
79106 if(h.required!=null){\r
79107 this.setRequired(h.required)\r
79108 }};\r
79109 DwtInputField.prototype=new DwtComposite;\r
79110 DwtInputField.prototype.constructor=DwtInputField;\r
79111 DwtInputField.prototype.toString=function(){\r
79112 return"DwtInputField"\r
79113 };\r
79114 DwtInputField.ERROR_ICON_LEFT=1;\r
79115 DwtInputField.ERROR_ICON_RIGHT=2;\r
79116 DwtInputField.ERROR_ICON_NONE=3;\r
79117 DwtInputField.CONTINUAL_VALIDATION=1;\r
79118 DwtInputField.ONEXIT_VALIDATION=2;\r
79119 DwtInputField.MANUAL_VALIDATION=3;\r
79120 DwtInputField.NUMBER=1;\r
79121 DwtInputField.INTEGER=2;\r
79122 DwtInputField.FLOAT=3;\r
79123 DwtInputField.STRING=4;\r
79124 DwtInputField.PASSWORD=5;\r
79125 DwtInputField.DATE=6;\r
79126 DwtInputField._ERROR_ICON_HTML=AjxImg.getImageHtml("ClearSearch");\r
79127 DwtInputField._NOERROR_ICON_HTML=AjxImg.getImageHtml("Blank_9");\r
79128 DwtInputField.prototype.dispose=function(){\r
79129 this._errorIconTd=null;\r
79130 this._inputField=null;\r
79131 DwtComposite.prototype.dispose.call(this)\r
79132 };\r
79133 DwtInputField.prototype.getTabGroupMember=function(){\r
79134 return this._tabGroup\r
79135 };\r
79136 DwtInputField.prototype.setHandler=function(t,e){\r
79137 if(!this._checkState()){\r
79138 return\r
79139 }\r
79140 this._inputEventHandlers[t]=e;\r
79141 Dwt.setHandler(this.getInputElement(),t,e)\r
79142 };\r
79143 DwtInputField.prototype.setInputType=function(a){\r
79144 if(a!=this._type&&this._rows==1){\r
79145 this._type=a;\r
79146 if(AjxEnv.isIE){\r
79147 var e=this._inputField;\r
79148 var t=this.__createInputEl();\r
79149 e.parentNode.replaceChild(t,e)\r
79150 }else{\r
79151 this._inputField.type=this._type!=DwtInputField.PASSWORD?"text":"password"\r
79152 }}};\r
79153 DwtInputField.prototype.setValidatorFunction=function(t,e){\r
79154 if(e){\r
79155 this._validator=e;\r
79156 this._validatorObj=t\r
79157 }else{\r
79158 switch(this._type){\r
79159 case DwtInputField.NUMBER:this._validator=DwtInputField.validateNumber;\r
79160 break;\r
79161 case DwtInputField.INTEGER:this._validator=DwtInputField.validateInteger;\r
79162 break;\r
79163 case DwtInputField.FLOAT:this._validator=DwtInputField.validateFloat;\r
79164 break;\r
79165 case DwtInputField.STRING:case DwtInputField.PASSWORD:this._validator=DwtInputField.validateString;\r
79166 break;\r
79167 case DwtInputField.DATE:this._validator=DwtInputField.validateDate;\r
79168 break;\r
79169 default:this._validator=DwtInputField.validateAny\r
79170 }}};\r
79171 DwtInputField.prototype.setValidatorRegExp=function(e,t){\r
79172 this._validator=e;\r
79173 this._validatorObj=null;\r
79174 this._errorString=t||""\r
79175 };\r
79176 DwtInputField.prototype.setValidationCallback=function(e){\r
79177 this._validationCallback=e\r
79178 };\r
79179 DwtInputField.prototype.getInputElement=function(){\r
79180 return this._inputField\r
79181 };\r
79182 DwtInputField.prototype.getValue=function(){\r
79183 return this._hintIsVisible?"":this._inputField.value\r
79184 };\r
79185 DwtInputField.prototype.setValue=function(t,e){\r
79186 t=t||"";\r
79187 this._inputField.value=t;\r
79188 if(!e){\r
79189 t=this._validateInput(t);\r
79190 if(t!=null){\r
79191 this._inputField.value=t\r
79192 }}\r
79193 if(this._hintIsVisible&&t){\r
79194 this._hideHint(t)\r
79195 }else{\r
79196 if(!t){\r
79197 this._showHint()\r
79198 }}};\r
79199 DwtInputField.prototype.setHint=function(t){\r
79200 var e=this._hint;\r
79201 this._hint=t;\r
79202 if(this._hintIsVisible){\r
79203 this.getInputElement().value=t;\r
79204 if(!t){\r
79205 this._hintIsVisible=false;\r
79206 this._updateClassName()\r
79207 }}else{\r
79208 if(this._inputField.value==""){\r
79209 this._showHint()\r
79210 }}};\r
79211 DwtInputField.prototype.setValidNumberRange=function(t,e){\r
79212 this._minNumVal=t;\r
79213 this._maxNumVal=e;\r
79214 var a=this._validateInput(this.getValue());\r
79215 if(a!=null){\r
79216 this.setValue(a)\r
79217 }};\r
79218 DwtInputField.prototype.setValidStringLengths=function(t,e){\r
79219 this._minLen=t||0;\r
79220 if(e!=null){\r
79221 this._inputField.maxLength=e;\r
79222 this._maxLen=e\r
79223 }};\r
79224 DwtInputField.prototype.setNumberPrecision=function(e){\r
79225 this._decimals=e\r
79226 };\r
79227 DwtInputField.prototype.setReadOnly=function(e){\r
79228 this._inputField.setAttribute("readonly",(e==null?true:e))\r
79229 };\r
79230 DwtInputField.prototype.setRequired=function(t){\r
79231 var e=t==null?true:t;\r
79232 if(this._required!=e){\r
79233 this._required=e;\r
79234 this.validate()\r
79235 }};\r
79236 DwtInputField.prototype.getEnabled=function(){\r
79237 return !this.getInputElement().disabled\r
79238 };\r
79239 DwtInputField.prototype.setEnabled=function(e){\r
79240 DwtControl.prototype.setEnabled.call(this,e);\r
79241 this.getInputElement().disabled=!e;\r
79242 this._validateInput(this.getValue())\r
79243 };\r
79244 DwtInputField.prototype.focus=function(){\r
79245 if(this.getEnabled()){\r
79246 this._hasFocus=true;\r
79247 this.getInputElement().focus()\r
79248 }};\r
79249 DwtInputField.prototype.blur=function(){\r
79250 this.getInputElement().blur()\r
79251 };\r
79252 DwtInputField.prototype.setVisible=function(e){\r
79253 DwtComposite.prototype.setVisible.apply(this,arguments);\r
79254 Dwt.setVisible(this.getInputElement(),e)\r
79255 };\r
79256 DwtInputField.prototype.isValid=function(){\r
79257 if(!this.getEnabled()){\r
79258 return this.getValue()\r
79259 }\r
79260 try{\r
79261 if(typeof this._validator=="function"){\r
79262 return this._validatorObj?this._validator.call(this._validatorObj,this.getValue(),this):this._validator(this.getValue())\r
79263 }else{\r
79264 return this._validator.test(this._inputField.value)\r
79265 }}\r
79266 catch(e){\r
79267 if(typeof e=="string"){\r
79268 return null\r
79269 }else{\r
79270 throw e\r
79271 }}};\r
79272 DwtInputField.prototype.validate=function(){\r
79273 var e=this._validateInput(this.getValue());\r
79274 if(e!=null){\r
79275 this.setValue(e);\r
79276 return true\r
79277 }else{\r
79278 return false\r
79279 }};\r
79280 DwtInputField.validateNumber=function(e){\r
79281 var t=new Number(e);\r
79282 if(isNaN(t)||(Math.round(t)!=t)){\r
79283 throw AjxMsg.notAnInteger\r
79284 }\r
79285 return DwtInputField.validateFloat.call(this,e)\r
79286 };\r
79287 DwtInputField.validateInteger=function(e){\r
79288 var t=new Number(e);\r
79289 if(isNaN(t)||(Math.round(t)!=t)||(t.toString()!=e)){\r
79290 throw AjxMsg.notAnInteger\r
79291 }\r
79292 if(this._minNumVal&&e<this._minNumVal){\r
79293 throw AjxMessageFormat.format(AjxMsg.numberLessThanMin,this._minNumVal)\r
79294 }\r
79295 if(this._maxNumVal&&e>this._maxNumVal){\r
79296 throw AjxMessageFormat.format(AjxMsg.numberMoreThanMax,this._maxNumVal)\r
79297 }\r
79298 return e\r
79299 };\r
79300 DwtInputField.validateFloat=function(e){\r
79301 if(this._required&&e==""){\r
79302 throw AjxMsg.valueIsRequired\r
79303 }\r
79304 var o=new Number(e);\r
79305 if(isNaN(o)){\r
79306 throw AjxMsg.notANumber\r
79307 }\r
79308 if(this._minNumVal&&e<this._minNumVal){\r
79309 throw AjxMessageFormat.format(AjxMsg.numberLessThanMin,this._minNumVal)\r
79310 }\r
79311 if(this._maxNumVal&&e>this._maxNumVal){\r
79312 throw AjxMessageFormat.format(AjxMsg.numberMoreThanMax,this._maxNumVal)\r
79313 }\r
79314 if(this._decimals!=null){\r
79315 var t=o.toString();\r
79316 var a=t.indexOf(".");\r
79317 if(a==-1){\r
79318 a=t.length\r
79319 }\r
79320 e=o.toPrecision(a+this._decimals)\r
79321 }else{\r
79322 e=o.toString()\r
79323 }\r
79324 return e\r
79325 };\r
79326 DwtInputField.validateString=function(e){\r
79327 if(this._required&&e==""){\r
79328 throw AjxMsg.valueIsRequired\r
79329 }\r
79330 if(this._minLen!=null&&e.length<this._minLen){\r
79331 throw AjxMessageFormat.format(AjxMsg.stringTooShort,this._minLen)\r
79332 }\r
79333 if(this._maxLen!=null&&e.length>this._maxLen){\r
79334 throw AjxMessageFormat.format(AjxMsg.stringTooLong,this._maxLen)\r
79335 }\r
79336 return e\r
79337 };\r
79338 DwtInputField.validateDate=function(e){\r
79339 if(this._required&&e==""){\r
79340 throw AjxMsg.valueIsRequired\r
79341 }\r
79342 if(AjxDateUtil.simpleParseDateStr(e)==null){\r
79343 throw AjxMsg.invalidDatetimeString\r
79344 }\r
79345 return e\r
79346 };\r
79347 DwtInputField.validateEmail=function(e){\r
79348 if(this._required&&e==""){\r
79349 throw AjxMsg.valueIsRequired\r
79350 }\r
79351 if(!AjxEmailAddress.isValid(e)){\r
79352 throw AjxMsg.invalidEmailAddr\r
79353 }\r
79354 return e\r
79355 };\r
79356 DwtInputField.validateAny=function(e){\r
79357 if(this._required&&e==""){\r
79358 throw AjxMsg.valueIsRequired\r
79359 }\r
79360 return e\r
79361 };\r
79362 DwtInputField.prototype._validateRegExp=function(e){\r
79363 if(this._required&&e==""){\r
79364 throw AjxMsg.valueIsRequired\r
79365 }\r
79366 if(this._regExp&&!this._regExp.test(e)){\r
79367 throw this._errorString\r
79368 }\r
79369 return e\r
79370 };\r
79371 DwtInputField._keyUpHdlr=function(t){\r
79372 var e=DwtShell.keyEvent;\r
79373 e.setFromDhtmlEvent(t,true);\r
79374 var o=e.dwtObj;\r
79375 var a=e.keyCode;\r
79376 if(o.notifyListeners(DwtEvent.ONKEYUP,e)){\r
79377 return true\r
79378 }\r
79379 var n=null;\r
79380 if((a==13||a==9)&&o._validationStyle==DwtInputField.ONEXIT_VALIDATION){\r
79381 n=o._validateInput(o.getValue())\r
79382 }else{\r
79383 if(o._validationStyle==DwtInputField.CONTINUAL_VALIDATION){\r
79384 n=o._validateInput(o.getValue())\r
79385 }}\r
79386 if(n!=null&&n!=o.getValue()){\r
79387 o.setValue(n)\r
79388 }\r
79389 return true\r
79390 };\r
79391 DwtInputField._blurHdlr=function(e){\r
79392 var t=DwtControl.getTargetControl(e);\r
79393 if(t){\r
79394 t._hasFocus=false;\r
79395 if(t._validationStyle==DwtInputField.ONEXIT_VALIDATION){\r
79396 var a=t._validateInput(t.getValue());\r
79397 if(a!=null){\r
79398 t.setValue(a)\r
79399 }}\r
79400 if(!t._hintIsVisible&&t._hint){\r
79401 t._showHint()\r
79402 }}};\r
79403 DwtInputField._focusHdlr=function(e){\r
79404 var t=DwtControl.getTargetControl(e);\r
79405 if(t){\r
79406 DwtShell.getShell(window).getKeyboardMgr().grabFocus(t.getTabGroupMember());\r
79407 if(t._hintIsVisible){\r
79408 t._hideHint("")\r
79409 }}};\r
79410 DwtInputField.prototype._hideHint=function(e){\r
79411 this.getInputElement().value=e;\r
79412 this._hintIsVisible=false;\r
79413 this._updateClassName()\r
79414 };\r
79415 DwtInputField.prototype._showHint=function(){\r
79416 if(this._hint){\r
79417 var e=this.getInputElement();\r
79418 if(!e.value){\r
79419 e.value=this._hint;\r
79420 this._hintIsVisible=true;\r
79421 this._updateClassName()\r
79422 }}};\r
79423 DwtInputField.prototype._updateClassName=function(){\r
79424 var e;\r
79425 if(!this.getEnabled()){\r
79426 e=this._disabledClassName\r
79427 }else{\r
79428 if(this._hasError){\r
79429 if(this._hintIsVisible&&!this._hasFocus){\r
79430 e=this._errorHintClassName\r
79431 }else{\r
79432 e=this._errorClassName\r
79433 }}else{\r
79434 if(this._hintIsVisible&&!this._hasFocus){\r
79435 e=this._hintClassName\r
79436 }else{\r
79437 e=this._origClassName\r
79438 }}}\r
79439 this.getHtmlElement().className=e\r
79440 };\r
79441 DwtInputField.prototype._validateInput=function(a){\r
79442 var n=true;\r
79443 var o;\r
79444 var t;\r
79445 if(!this.getEnabled()){\r
79446 o=this.getValue()\r
79447 }else{\r
79448 try{\r
79449 if(typeof this._validator=="function"){\r
79450 o=a=this._validatorObj?this._validator.call(this._validatorObj,a,this):this._validator(a)\r
79451 }else{\r
79452 if(!this._validator.test(a)){\r
79453 t=this._errorString\r
79454 }}}\r
79455 catch(e){\r
79456 if(typeof e=="string"){\r
79457 t=e\r
79458 }else{\r
79459 throw e\r
79460 }}}\r
79461 if(t){\r
79462 this._hasError=true;\r
79463 if(this._errorIconTd){\r
79464 this._errorIconTd.innerHTML=DwtInputField._ERROR_ICON_HTML\r
79465 }\r
79466 this.setToolTipContent(t);\r
79467 n=false;\r
79468 o=null\r
79469 }else{\r
79470 this._hasError=false;\r
79471 if(this._errorIconTd){\r
79472 this._errorIconTd.innerHTML=DwtInputField._NOERROR_ICON_HTML\r
79473 }\r
79474 this.setToolTipContent(null);\r
79475 n=true\r
79476 }\r
79477 this._updateClassName();\r
79478 if(this._validationCallback){\r
79479 this._validationCallback.run(this,n,a)\r
79480 }\r
79481 return o\r
79482 };\r
79483 DwtInputField.prototype._focusByMouseUpEvent=function(){\r
79484 if(this.getEnabled()){\r
79485 this._hasFocus=true\r
79486 }};\r
79487 DwtInputField.prototype._replaceElementHook=function(t,a,e,o){\r
79488 a=this.getInputElement();\r
79489 DwtControl.prototype._replaceElementHook.call(this,t,a,e,o);\r
79490 if(t.id){\r
79491 a.id=t.id\r
79492 }\r
79493 if(t.size){\r
79494 a.size=t.size\r
79495 }\r
79496 if(t.title){\r
79497 this.setHint(t.title)\r
79498 }};\r
79499 DwtInputField.prototype.__createInputEl=function(r){\r
79500 var t=this._inputField;\r
79501 if(t){\r
79502 for(var n in this._inputEventHandlers){\r
79503 t.removeAttribute(n)\r
79504 }}\r
79505 var s=this._type!=DwtInputField.PASSWORD?"text":"password";\r
79506 var o=document.createElement(AjxEnv.isIE?["<INPUT type='",s,"'>"].join(""):"INPUT");\r
79507 if(!AjxEnv.isIE){\r
79508 o.type=s\r
79509 }\r
79510 this._inputField=o;\r
79511 var a=r?r.size:t.size;\r
79512 var e=r?r.maxLen:t.maxLength;\r
79513 o.autocomplete="off";\r
79514 if(a){\r
79515 o.size=a\r
79516 }\r
79517 if(e){\r
79518 o.maxLength=e\r
79519 }\r
79520 o.value=(r?r.initialValue:t.value)||"";\r
79521 o.readonly=t?t.readonly:false;\r
79522 o.onkeyup=DwtInputField._keyUpHdlr;\r
79523 o.onblur=DwtInputField._blurHdlr;\r
79524 o.onfocus=DwtInputField._focusHdlr;\r
79525 for(var n in this._inputEventHandlers){\r
79526 o[n]=this._inputEventHandlers[n]\r
79527 }\r
79528 this._tabGroup.removeAllMembers();\r
79529 this._tabGroup.addMember(o);\r
79530 return o\r
79531 }\r
79532 }\r
79533 if(AjxPackage.define("ajax.dwt.widgets.DwtBaseDialog")){\r
79534 DwtBaseDialog=function(t){\r
79535 if(arguments.length==0){\r
79536 return\r
79537 }\r
79538 t=Dwt.getParams(arguments,DwtBaseDialog.PARAMS);\r
79539 var e=t.parent;\r
79540 if(!(e instanceof DwtShell)){\r
79541 throw new DwtException("DwtBaseDialog parent must be a DwtShell",DwtException.INVALIDPARENT,"DwtDialog")\r
79542 }\r
79543 t.className=t.className||"DwtBaseDialog";\r
79544 t.posStyle=DwtControl.ABSOLUTE_STYLE;\r
79545 this._title=t.title||"";\r
79546 DwtComposite.call(this,t);\r
79547 this._shell=e;\r
79548 this._zIndex=t.zIndex||Dwt.Z_DIALOG;\r
79549 this._mode=t.mode||DwtBaseDialog.MODAL;\r
79550 this._loc=new DwtPoint();\r
79551 if(t.loc){\r
79552 this._loc.x=t.loc.x;\r
79553 this._loc.y=t.loc.y\r
79554 }else{\r
79555 this._loc.x=this._loc.y=Dwt.LOC_NOWHERE\r
79556 }\r
79557 this._tabGroup=new DwtTabGroup(this.toString(),true);\r
79558 this._dragHandleId=t.dragHandleId||this._htmlElId+"_handle";\r
79559 this._createHtml();\r
79560 this._initializeDragging(this._dragHandleId);\r
79561 if(t.view){\r
79562 this.setView(t.view)\r
79563 }\r
79564 this.setZIndex(Dwt.Z_HIDDEN);\r
79565 this._position(DwtBaseDialog.__nowhereLoc)\r
79566 };\r
79567 DwtBaseDialog.PARAMS=["parent","className","title","zIndex","mode","loc","view","dragHandleId"];\r
79568 DwtBaseDialog.prototype=new DwtComposite;\r
79569 DwtBaseDialog.prototype.constructor=DwtBaseDialog;\r
79570 DwtBaseDialog.prototype.toString=function(){\r
79571 return"DwtBaseDialog"\r
79572 };\r
79573 DwtBaseDialog.MODELESS=1;\r
79574 DwtBaseDialog.MODAL=2;\r
79575 DwtBaseDialog.__nowhereLoc=new DwtPoint(Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE);\r
79576 DwtBaseDialog.prototype.TEMPLATE="dwt.Widgets#DwtBaseDialog";\r
79577 DwtBaseDialog.prototype.CONTROLS_TEMPLATE=null;\r
79578 DwtBaseDialog.prototype.addPopupListener=function(e){\r
79579 this.addListener(DwtEvent.POPUP,e)\r
79580 };\r
79581 DwtBaseDialog.prototype.removePopupListener=function(e){\r
79582 this.removeListener(DwtEvent.POPUP,e)\r
79583 };\r
79584 DwtBaseDialog.prototype.addPopdownListener=function(e){\r
79585 this.addListener(DwtEvent.POPDOWN,e)\r
79586 };\r
79587 DwtBaseDialog.prototype.removePopdownListener=function(e){\r
79588 this.removeListener(DwtEvent.POPDOWN,e)\r
79589 };\r
79590 DwtBaseDialog.prototype.popup=function(t){\r
79591 if(this._poppedUp){\r
79592 return\r
79593 }\r
79594 this.cleanup(true);\r
79595 var e=this._zIndex;\r
79596 if(this._mode==DwtBaseDialog.MODAL){\r
79597 e=this._setModalEffect(e)\r
79598 }\r
79599 this._shell._veilOverlay.activeDialogs.push(this);\r
79600 if(t){\r
79601 this._loc.x=t.x;\r
79602 this._loc.y=t.y\r
79603 }\r
79604 this._position(t);\r
79605 this._resetTabFocus();\r
79606 this.setZIndex(e);\r
79607 this._poppedUp=true;\r
79608 var a=this._shell.getKeyboardMgr();\r
79609 a.pushTabGroup(this._tabGroup);\r
79610 a.pushDefaultHandler(this);\r
79611 this.notifyListeners(DwtEvent.POPUP,this)\r
79612 };\r
79613 DwtBaseDialog.prototype._resetTabFocus=function(){\r
79614 this._tabGroup.resetFocusMember(true)\r
79615 };\r
79616 DwtBaseDialog.prototype.focus=function(){\r
79617 if(this.isListenerRegistered(DwtEvent.ONFOCUS)){\r
79618 this.notifyListeners(DwtEvent.ONFOCUS)\r
79619 }else{\r
79620 if(this._focusElementId){\r
79621 var e=document.getElementById(this._focusElementId);\r
79622 if(e){\r
79623 e.focus()\r
79624 }}}};\r
79625 DwtBaseDialog.prototype.isPoppedUp=function(){\r
79626 return this._poppedUp\r
79627 };\r
79628 DwtBaseDialog.prototype.popdown=function(){\r
79629 if(this._poppedUp){\r
79630 this._poppedUp=false;\r
79631 this.cleanup(false);\r
79632 var e=this._zIndex;\r
79633 this.setZIndex(Dwt.Z_HIDDEN);\r
79634 this._position(DwtBaseDialog.__nowhereLoc);\r
79635 if(this._mode==DwtBaseDialog.MODAL){\r
79636 this._undoModality(e)\r
79637 }else{\r
79638 this._shell._veilOverlay.activeDialogs.pop()\r
79639 }\r
79640 var t=this._shell.getKeyboardMgr();\r
79641 t.popTabGroup(this._tabGroup);\r
79642 t.popDefaultHandler();\r
79643 this.notifyListeners(DwtEvent.POPDOWN,this)\r
79644 }};\r
79645 DwtBaseDialog.prototype.setView=function(e){\r
79646 this.reset();\r
79647 if(e){\r
79648 this._getContentDiv().appendChild(e.getHtmlElement())\r
79649 }};\r
79650 DwtBaseDialog.prototype.reset=function(){\r
79651 this._loc.x=this._loc.y=Dwt.LOC_NOWHERE\r
79652 };\r
79653 DwtBaseDialog.prototype.cleanup=function(t){\r
79654 var o=this._getInputFields();\r
79655 if(o){\r
79656 var e=o.length;\r
79657 for(var a=0;\r
79658 a<e;\r
79659 a++){\r
79660 o[a].disabled=!t;\r
79661 if(t){\r
79662 o[a].value=""\r
79663 }}}};\r
79664 DwtBaseDialog.prototype.setTitle=function(e){\r
79665 if(this._titleEl){\r
79666 this._titleEl.innerHTML=e||""\r
79667 }};\r
79668 DwtBaseDialog.prototype.setContent=function(t){\r
79669 var e=this._getContentDiv();\r
79670 if(e){\r
79671 e.innerHTML=t||""\r
79672 }};\r
79673 DwtBaseDialog.prototype._getContentDiv=function(){\r
79674 return this._contentEl\r
79675 };\r
79676 DwtBaseDialog.prototype.addEnterListener=function(e){\r
79677 this.addListener(DwtEvent.ENTER,e)\r
79678 };\r
79679 DwtBaseDialog.getActiveDialog=function(){\r
79680 var t=null;\r
79681 var a=DwtShell.getShell(window);\r
79682 if(a){\r
79683 var e=a._veilOverlay.activeDialogs.length;\r
79684 if(e>0){\r
79685 t=a._veilOverlay.activeDialogs[e-1]\r
79686 }}\r
79687 return t\r
79688 };\r
79689 DwtBaseDialog.prototype._initializeDragging=function(h){\r
79690 var r=document.getElementById(h);\r
79691 if(r){\r
79692 var s=DwtControl.fromElementId(window._dwtShellId);\r
79693 if(s){\r
79694 var e=Dwt.getSize(s.getHtmlElement());\r
79695 var a=document.getElementById(this._htmlElId);\r
79696 var c=this.getSize();\r
79697 var n=new AjxCallback(this,this._dragEnd);\r
79698 var o=new AjxCallback(this,this._duringDrag);\r
79699 var t=new AjxCallback(this,this._dragStart);\r
79700 DwtDraggable.init(r,a,0,document.body.offsetWidth-10,0,document.body.offsetHeight-10,t,o,n)\r
79701 }}};\r
79702 DwtBaseDialog.prototype._getContentHtml=function(){\r
79703 return""\r
79704 };\r
79705 DwtBaseDialog.prototype._createHtml=function(e){\r
79706 var t={\r
79707 id:this._htmlElId};\r
79708 this._createHtmlFromTemplate(e||this.TEMPLATE,t)\r
79709 };\r
79710 DwtBaseDialog.prototype._createHtmlFromTemplate=function(e,t){\r
79711 t.dragId=this._dragHandleId;\r
79712 t.title=this._title;\r
79713 t.icon="";\r
79714 t.closeIcon1="";\r
79715 t.closeIcon2="";\r
79716 t.controlsTemplateId=this.CONTROLS_TEMPLATE;\r
79717 DwtComposite.prototype._createHtmlFromTemplate.call(this,e,t);\r
79718 this._titleBarEl=document.getElementById(t.id+"_titlebar");\r
79719 this._titleEl=document.getElementById(t.id+"_title");\r
79720 this._contentEl=document.getElementById(t.id+"_content");\r
79721 this.setContent(this._getContentHtml())\r
79722 };\r
79723 DwtBaseDialog.prototype._setModalEffect=function(){\r
79724 var a=this._shell._veilOverlay.dialogZ;\r
79725 var o=null;\r
79726 var t,e;\r
79727 if(a.length){\r
79728 o=a[a.length-1]\r
79729 }\r
79730 if(o){\r
79731 t=o+2;\r
79732 e=o+1\r
79733 }else{\r
79734 t=this._zIndex;\r
79735 e=Dwt.Z_VEIL\r
79736 }\r
79737 this._shell._veilOverlay.veilZ.push(e);\r
79738 this._shell._veilOverlay.dialogZ.push(t);\r
79739 Dwt.setZIndex(this._shell._veilOverlay,e);\r
79740 return t\r
79741 };\r
79742 DwtBaseDialog.prototype._undoModality=function(a){\r
79743 var e=this._shell._veilOverlay.veilZ;\r
79744 e.pop();\r
79745 var t=e[e.length-1];\r
79746 Dwt.setZIndex(this._shell._veilOverlay,t);\r
79747 this._shell._veilOverlay.dialogZ.pop();\r
79748 this._shell._veilOverlay.activeDialogs.pop();\r
79749 if(this._shell._veilOverlay.activeDialogs.length>0){\r
79750 this._shell._veilOverlay.activeDialogs[0].focus()\r
79751 }};\r
79752 DwtBaseDialog.prototype._getInputFields=function(){};\r
79753 DwtBaseDialog.prototype._dragStart=function(e,t){\r
79754 if(AjxEnv.isNav){\r
79755 this._currSize=this.getSize();\r
79756 DwtDraggable.setDragBoundaries(DwtDraggable.dragEl,0,document.body.offsetWidth-this._currSize.x,0,document.body.offsetHeight-this._currSize.y)\r
79757 }};\r
79758 DwtBaseDialog.prototype._dragEnd=function(e,t){\r
79759 this._loc.x=e;\r
79760 this._loc.y=t\r
79761 };\r
79762 DwtBaseDialog.prototype._duringDrag=function(e,t){};\r
79763 DwtBaseDialog.prototype._doesContainElement=function(e){\r
79764 return Dwt.contains(this.getHtmlElement(),e)\r
79765 }\r
79766 }\r
79767 if(AjxPackage.define("ajax.dwt.widgets.DwtDialog")){\r
79768 DwtDialog=function(t){\r
79769 if(arguments.length==0){\r
79770 return\r
79771 }\r
79772 t=Dwt.getParams(arguments,DwtDialog.PARAMS);\r
79773 t.className=t.className||"DwtDialog";\r
79774 this._title=t.title=t.title||"";\r
79775 var a=t.standardButtons;\r
79776 var c=t.extraButtons;\r
79777 if(!a){\r
79778 a=[DwtDialog.OK_BUTTON,DwtDialog.CANCEL_BUTTON]\r
79779 }else{\r
79780 if(a==DwtDialog.NO_BUTTONS){\r
79781 a=null\r
79782 }else{\r
79783 if(a&&!a.length){\r
79784 a=[a]\r
79785 }}}\r
79786 this._buttonList=[];\r
79787 var u={};\r
79788 u[DwtDialog.ALIGN_LEFT]=[];\r
79789 u[DwtDialog.ALIGN_CENTER]=[];\r
79790 u[DwtDialog.ALIGN_RIGHT]=[];\r
79791 if(a||c){\r
79792 this._buttonDesc={};\r
79793 if(a&&a.length){\r
79794 this._initialEnterButtonId=this._enterButtonId=a[0];\r
79795 for(var o=0;\r
79796 o<a.length;\r
79797 o++){\r
79798 var h=a[o];\r
79799 this._buttonList.push(h);\r
79800 var r=DwtDialog.ALIGN[h];\r
79801 if(r){\r
79802 u[r].push(h)\r
79803 }\r
79804 this._buttonDesc[h]=new DwtDialog_ButtonDescriptor(h,AjxMsg[DwtDialog.MSG_KEY[h]],r)\r
79805 }\r
79806 this._resetCallbacks()\r
79807 }\r
79808 if(c&&c.length){\r
79809 if(!this._enterButtonId){\r
79810 this._initialEnterButtonId=this._enterButtonId=c[0]\r
79811 }\r
79812 for(var o=0;\r
79813 o<c.length;\r
79814 o++){\r
79815 var h=c[o].id;\r
79816 this._buttonList.push(h);\r
79817 var r=c[o].align;\r
79818 if(r){\r
79819 u[r].push(h)\r
79820 }\r
79821 this._buttonDesc[h]=c[o]\r
79822 }}}\r
79823 this._buttonElementId={};\r
79824 for(var o=0;\r
79825 o<this._buttonList.length;\r
79826 o++){\r
79827 this._buttonElementId[this._buttonList[o]]=Dwt.getNextId()\r
79828 }\r
79829 DwtBaseDialog.call(this,t);\r
79830 this._button={};\r
79831 for(var o=0;\r
79832 o<this._buttonList.length;\r
79833 o++){\r
79834 var h=this._buttonList[o];\r
79835 var d=this._button[h]=new DwtButton({\r
79836 parent:this}\r
79837 );\r
79838 d.setText(this._buttonDesc[h].label);\r
79839 d.buttonId=h;\r
79840 d.addSelectionListener(new AjxListener(this,this._buttonListener));\r
79841 var e=document.getElementById(this._buttonElementId[h]);\r
79842 if(e){\r
79843 e.appendChild(d.getHtmlElement())\r
79844 }}\r
79845 var s=u[DwtDialog.ALIGN_LEFT].concat(u[DwtDialog.ALIGN_CENTER],u[DwtDialog.ALIGN_RIGHT]);\r
79846 for(var o=0;\r
79847 o<s.length;\r
79848 o++){\r
79849 var n=this._button[s[o]];\r
79850 this._tabGroup.addMember(n)\r
79851 }};\r
79852 DwtDialog.PARAMS=["parent","className","title","standardButtons","extraButtons","zIndex","mode","loc"];\r
79853 DwtDialog.prototype=new DwtBaseDialog;\r
79854 DwtDialog.prototype.constructor=DwtDialog;\r
79855 DwtDialog.prototype.toString=function(){\r
79856 return"DwtDialog"\r
79857 };\r
79858 DwtDialog.ALIGN_LEFT=1;\r
79859 DwtDialog.ALIGN_RIGHT=2;\r
79860 DwtDialog.ALIGN_CENTER=3;\r
79861 DwtDialog.CANCEL_BUTTON=1;\r
79862 DwtDialog.OK_BUTTON=2;\r
79863 DwtDialog.DISMISS_BUTTON=3;\r
79864 DwtDialog.NO_BUTTON=4;\r
79865 DwtDialog.YES_BUTTON=5;\r
79866 DwtDialog.LAST_BUTTON=5;\r
79867 DwtDialog.NO_BUTTONS=256;\r
79868 DwtDialog.ALL_BUTTONS=[DwtDialog.CANCEL_BUTTON,DwtDialog.OK_BUTTON,DwtDialog.DISMISS_BUTTON,DwtDialog.NO_BUTTON,DwtDialog.YES_BUTTON];\r
79869 DwtDialog.MSG_KEY={};\r
79870 DwtDialog.MSG_KEY[DwtDialog.CANCEL_BUTTON]="cancel";\r
79871 DwtDialog.MSG_KEY[DwtDialog.OK_BUTTON]="ok";\r
79872 DwtDialog.MSG_KEY[DwtDialog.DISMISS_BUTTON]="dismiss";\r
79873 DwtDialog.MSG_KEY[DwtDialog.NO_BUTTON]="no";\r
79874 DwtDialog.MSG_KEY[DwtDialog.YES_BUTTON]="yes";\r
79875 DwtDialog.ALIGN={};\r
79876 DwtDialog.ALIGN[DwtDialog.CANCEL_BUTTON]=DwtDialog.ALIGN_RIGHT;\r
79877 DwtDialog.ALIGN[DwtDialog.OK_BUTTON]=DwtDialog.ALIGN_RIGHT;\r
79878 DwtDialog.ALIGN[DwtDialog.DISMISS_BUTTON]=DwtDialog.ALIGN_RIGHT;\r
79879 DwtDialog.ALIGN[DwtDialog.NO_BUTTON]=DwtDialog.ALIGN_RIGHT;\r
79880 DwtDialog.ALIGN[DwtDialog.YES_BUTTON]=DwtDialog.ALIGN_RIGHT;\r
79881 DwtDialog.MODELESS=DwtBaseDialog.MODELESS;\r
79882 DwtDialog.MODAL=DwtBaseDialog.MODAL;\r
79883 DwtDialog.prototype.CONTROLS_TEMPLATE="dwt.Widgets#DwtDialogControls";\r
79884 DwtDialog.prototype.popdown=function(){\r
79885 DwtBaseDialog.prototype.popdown.call(this);\r
79886 this.resetButtonStates()\r
79887 };\r
79888 DwtDialog.prototype.popup=function(e,t){\r
79889 this._focusButtonId=t;\r
79890 DwtBaseDialog.prototype.popup.call(this,e)\r
79891 };\r
79892 DwtDialog.prototype._resetTabFocus=function(){\r
79893 if(this._focusButtonId){\r
79894 var e=this.getButton(this._focusButtonId);\r
79895 this._tabGroup.setFocusMember(e,true)\r
79896 }else{\r
79897 DwtBaseDialog.prototype._resetTabFocus.call(this)\r
79898 }};\r
79899 DwtDialog.prototype.reset=function(){\r
79900 this._resetCallbacks();\r
79901 this.resetButtonStates();\r
79902 DwtBaseDialog.prototype.reset.call(this)\r
79903 };\r
79904 DwtDialog.prototype.resetButtonStates=function(){\r
79905 for(b in this._button){\r
79906 this._button[b].setEnabled(true);\r
79907 this._button[b].setHovered(false)\r
79908 }\r
79909 this.associateEnterWithButton(this._initialEnterButtonId)\r
79910 };\r
79911 DwtDialog.prototype.getButton=function(e){\r
79912 return this._button[e]\r
79913 };\r
79914 DwtDialog.prototype.setButtonEnabled=function(t,e){\r
79915 this._button[t].setEnabled(e)\r
79916 };\r
79917 DwtDialog.prototype.setButtonVisible=function(e,t){\r
79918 this._button[e].setVisible(t)\r
79919 };\r
79920 DwtDialog.prototype.getButtonEnabled=function(e){\r
79921 return this._button[e].getEnabled()\r
79922 };\r
79923 DwtDialog.prototype.registerCallback=function(t,a,o,e){\r
79924 this._buttonDesc[t].callback=(a instanceof AjxCallback)?a:(new AjxCallback(o,a,e))\r
79925 };\r
79926 DwtDialog.prototype.unregisterCallback=function(e){\r
79927 this._buttonDesc[e].callback=null\r
79928 };\r
79929 DwtDialog.prototype.setButtonListener=function(e,t){\r
79930 this._button[e].removeSelectionListeners();\r
79931 this._button[e].addSelectionListener(t)\r
79932 };\r
79933 DwtDialog.prototype.setEnterListener=function(e){\r
79934 this.removeAllListeners(DwtEvent.ENTER);\r
79935 this.addEnterListener(e)\r
79936 };\r
79937 DwtDialog.prototype.associateEnterWithButton=function(e){\r
79938 this._enterButtonId=e\r
79939 };\r
79940 DwtDialog.prototype.getKeyMapName=function(){\r
79941 return"DwtDialog"\r
79942 };\r
79943 DwtDialog.prototype.handleKeyAction=function(e,t){\r
79944 switch(e){\r
79945 case DwtKeyMap.ENTER:this.notifyListeners(DwtEvent.ENTER,t);\r
79946 break;\r
79947 case DwtKeyMap.CANCEL:var a=false;\r
79948 a=a||this._runCallbackForButtonId(DwtDialog.CANCEL_BUTTON);\r
79949 a=a||this._runCallbackForButtonId(DwtDialog.NO_BUTTON);\r
79950 a=a||this._runCallbackForButtonId(DwtDialog.DISMISS_BUTTON);\r
79951 this.popdown();\r
79952 return true;\r
79953 case DwtKeyMap.YES:if(this._buttonDesc[DwtDialog.YES_BUTTON]){\r
79954 this._runCallbackForButtonId(DwtDialog.YES_BUTTON)\r
79955 }\r
79956 break;\r
79957 case DwtKeyMap.NO:if(this._buttonDesc[DwtDialog.NO_BUTTON]){\r
79958 this._runCallbackForButtonId(DwtDialog.NO_BUTTON)\r
79959 }\r
79960 break;\r
79961 default:return false\r
79962 }\r
79963 return true\r
79964 };\r
79965 DwtDialog.prototype._createHtmlFromTemplate=function(a,n){\r
79966 DwtBaseDialog.prototype._createHtmlFromTemplate.call(this,a,n);\r
79967 var o=n.id+"_focus";\r
79968 if(document.getElementById(o)){\r
79969 this._focusElementId=o\r
79970 }\r
79971 this._buttonsEl=document.getElementById(n.id+"_buttons");\r
79972 if(this._buttonsEl){\r
79973 var t=[];\r
79974 var e=0;\r
79975 this._addButtonsHtml(t,e);\r
79976 this._buttonsEl.innerHTML=t.join("")\r
79977 }};\r
79978 DwtDialog.prototype._getButtonsContainerStartTemplate=function(){\r
79979 return"<table cellspacing='0' cellpadding='0' border='0' width='100%'><tr>"\r
79980 };\r
79981 DwtDialog.prototype._getButtonsAlignStartTemplate=function(){\r
79982 return"<td align=\"{0}\"><table cellspacing='5' cellpadding='0' border='0'><tr>"\r
79983 };\r
79984 DwtDialog.prototype._getButtonsAlignEndTemplate=function(){\r
79985 return"</tr></table></td>"\r
79986 };\r
79987 DwtDialog.prototype._getButtonsCellTemplate=function(){\r
79988 return'<td id="{0}"></td>'\r
79989 };\r
79990 DwtDialog.prototype._getButtonsContainerEndTemplate=function(){\r
79991 return"</tr></table>"\r
79992 };\r
79993 DwtDialog.prototype._addButtonsHtml=function(s,t){\r
79994 if(this._buttonList&&this._buttonList.length){\r
79995 var a=new Array();\r
79996 var e=new Array();\r
79997 var n=new Array();\r
79998 for(var o=0;\r
79999 o<this._buttonList.length;\r
80000 o++){\r
80001 var r=this._buttonList[o];\r
80002 switch(this._buttonDesc[r].align){\r
80003 case DwtDialog.ALIGN_RIGHT:e.push(r);\r
80004 break;\r
80005 case DwtDialog.ALIGN_LEFT:a.push(r);\r
80006 break;\r
80007 case DwtDialog.ALIGN_CENTER:n.push(r);\r
80008 break\r
80009 }}\r
80010 s[t++]=this._getButtonsContainerStartTemplate();\r
80011 if(a.length){\r
80012 s[t++]=AjxMessageFormat.format(this._getButtonsAlignStartTemplate(),["left"]);\r
80013 for(var o=0;\r
80014 o<a.length;\r
80015 o++){\r
80016 var r=a[o];\r
80017 var h=this._buttonDesc[r].cellTemplate?this._buttonDesc[r].cellTemplate:this._getButtonsCellTemplate();\r
80018 s[t++]=AjxMessageFormat.format(h,[this._buttonElementId[r]])\r
80019 }\r
80020 s[t++]=this._getButtonsAlignEndTemplate()\r
80021 }\r
80022 if(n.length){\r
80023 s[t++]=AjxMessageFormat.format(this._getButtonsAlignStartTemplate(),["center"]);\r
80024 for(var o=0;\r
80025 o<n.length;\r
80026 o++){\r
80027 var r=n[o];\r
80028 var h=this._buttonDesc[r].cellTemplate?this._buttonDesc[r].cellTemplate:this._getButtonsCellTemplate();\r
80029 s[t++]=AjxMessageFormat.format(h,[this._buttonElementId[r]])\r
80030 }\r
80031 s[t++]=this._getButtonsAlignEndTemplate()\r
80032 }\r
80033 if(e.length){\r
80034 s[t++]=AjxMessageFormat.format(this._getButtonsAlignStartTemplate(),["right"]);\r
80035 for(var o=0;\r
80036 o<e.length;\r
80037 o++){\r
80038 var r=e[o];\r
80039 var h=this._buttonDesc[r].cellTemplate?this._buttonDesc[r].cellTemplate:this._getButtonsCellTemplate();\r
80040 s[t++]=AjxMessageFormat.format(h,[this._buttonElementId[r]])\r
80041 }\r
80042 s[t++]=this._getButtonsAlignEndTemplate()\r
80043 }\r
80044 s[t++]=this._getButtonsContainerEndTemplate()\r
80045 }\r
80046 return t\r
80047 };\r
80048 DwtDialog.prototype._buttonListener=function(a,e){\r
80049 var o=DwtControl.getTargetControl(a);\r
80050 var t=(o&&o.buttonId)||this._enterButtonId;\r
80051 if(t){\r
80052 this._runCallbackForButtonId(t,e)\r
80053 }};\r
80054 DwtDialog.prototype._runCallbackForButtonId=function(o,e){\r
80055 var t=this._buttonDesc[o];\r
80056 var a=t&&t.callback;\r
80057 if(!a){\r
80058 return false\r
80059 }\r
80060 e=(e instanceof Array)?e:[e];\r
80061 a.run.apply(a,e);\r
80062 return true\r
80063 };\r
80064 DwtDialog.prototype._runEnterCallback=function(e){\r
80065 if(this._enterButtonId&&this.getButtonEnabled(this._enterButtonId)){\r
80066 this._runCallbackForButtonId(this._enterButtonId,e)\r
80067 }};\r
80068 DwtDialog.prototype._resetCallbacks=function(){\r
80069 if(this._buttonDesc){\r
80070 for(var e=0;\r
80071 e<DwtDialog.ALL_BUTTONS.length;\r
80072 e++){\r
80073 var t=DwtDialog.ALL_BUTTONS[e];\r
80074 if(this._buttonDesc[t]){\r
80075 this._buttonDesc[t].callback=new AjxCallback(this,this.popdown)\r
80076 }}}};\r
80077 DwtDialog_ButtonDescriptor=function(n,e,o,a,t){\r
80078 this.id=n;\r
80079 this.label=e;\r
80080 this.align=o;\r
80081 this.callback=a;\r
80082 this.cellTemplate=t\r
80083 }\r
80084 }\r
80085 if(AjxPackage.define("ajax.dwt.widgets.DwtSash")){\r
80086 DwtSash=function(a){\r
80087 a=Dwt.getParams(arguments,DwtSash.PARAMS);\r
80088 a.className=a.className||"DwtSash";\r
80089 a.posStyle=a.posStyle||DwtControl.ABSOLUTE_STYLE;\r
80090 DwtControl.call(this,a);\r
80091 var t=this.getHtmlElement();\r
80092 var e="dwt.Widgets#";\r
80093 if(!a.style||a.style!=DwtSash.HORIZONTAL_STYLE){\r
80094 this._style=DwtSash.VERTICAL_STYLE;\r
80095 t.style.cursor=AjxEnv.isIE?"row-resize":"s-resize";\r
80096 t.innerHTML=AjxTemplate.expand(e+"DwtVerticalSash")\r
80097 }else{\r
80098 this._style=DwtSash.HORIZONTAL_STYLE;\r
80099 t.style.cursor=AjxEnv.isIE?"col-resize":"w-resize";\r
80100 t.innerHTML=AjxTemplate.expand(e+"DwtHorizontalSash")\r
80101 }\r
80102 this._threshold=(a.threshold>0)?a.threshold:1;\r
80103 this._captureObj=new DwtMouseEventCapture({\r
80104 targetObj:this,id:"DwtSash",mouseOverHdlr:DwtSash._mouseOverHdlr,mouseDownHdlr:DwtSash._mouseDownHdlr,mouseMoveHdlr:DwtSash._mouseMoveHdlr,mouseUpHdlr:DwtSash._mouseUpHdlr,mouseOutHdlr:DwtSash._mouseOutHdlr}\r
80105 );\r
80106 this.setHandler(DwtEvent.ONMOUSEDOWN,DwtSash._mouseDownHdlr);\r
80107 this.setHandler(DwtEvent.ONMOUSEOVER,DwtSash._mouseOverHdlr);\r
80108 this.setHandler(DwtEvent.ONMOUSEOUT,DwtSash._mouseOutHdlr);\r
80109 this.setZIndex(Dwt.Z_VIEW)\r
80110 };\r
80111 DwtSash.PARAMS=["parent","style","className","threshold","posStyle"];\r
80112 DwtSash.prototype=new DwtControl;\r
80113 DwtSash.prototype.constructor=DwtSash;\r
80114 DwtSash.prototype.toString=function(){\r
80115 return"DwtSash"\r
80116 };\r
80117 DwtSash.HORIZONTAL_STYLE=1;\r
80118 DwtSash.VERTICAL_STYLE=2;\r
80119 DwtSash.prototype.registerCallback=function(e,t){\r
80120 this._callbackFunc=e;\r
80121 this._callbackObj=t\r
80122 };\r
80123 DwtSash._mouseOverHdlr=function(t){\r
80124 var e=DwtShell.mouseEvent;\r
80125 e.setFromDhtmlEvent(t);\r
80126 e._stopPropagation=true;\r
80127 e._returnValue=false;\r
80128 e.setToDhtmlEvent(t);\r
80129 return false\r
80130 };\r
80131 DwtSash._mouseDownHdlr=function(t){\r
80132 var e=DwtShell.mouseEvent;\r
80133 e.setFromDhtmlEvent(t,true);\r
80134 if(e.button!=DwtMouseEvent.LEFT){\r
80135 DwtUiEvent.setBehaviour(t,true,false);\r
80136 return false\r
80137 }\r
80138 DwtEventManager.notifyListeners(DwtEvent.ONMOUSEDOWN,e);\r
80139 var a=e.dwtObj;\r
80140 if(a._callbackFunc!=null){\r
80141 a._captureObj.capture();\r
80142 a._startCoord=(a._style==DwtSash.HORIZONTAL_STYLE)?e.docX:e.docY\r
80143 }\r
80144 e._stopPropagation=true;\r
80145 e._returnValue=false;\r
80146 e.setToDhtmlEvent(t);\r
80147 return false\r
80148 };\r
80149 DwtSash._mouseMoveHdlr=function(t){\r
80150 var e=DwtShell.mouseEvent;\r
80151 e.setFromDhtmlEvent(t);\r
80152 var o=0;\r
80153 var a=DwtMouseEventCapture.getTargetObj();\r
80154 if(a._style==DwtSash.HORIZONTAL_STYLE){\r
80155 if(e.docX>0&&e.docX!=a._startCoord){\r
80156 o=e.docX-a._startCoord\r
80157 }}else{\r
80158 if(e.docY>0&&e.docY!=a._startCoord){\r
80159 o=e.docY-a._startCoord\r
80160 }}\r
80161 if(Math.abs(o)>=a._threshold){\r
80162 if(a._callbackObj!=null){\r
80163 o=a._callbackFunc.call(a._callbackObj,o)\r
80164 }else{\r
80165 o=a._callbackFunc(o)\r
80166 }\r
80167 a._startCoord+=o;\r
80168 if(o!=0&&a.getHtmlElement().style.position==Dwt.ABSOLUTE_STYLE){\r
80169 if(a._style==DwtSash.HORIZONTAL_STYLE){\r
80170 a.setLocation(a.getLocation().x+o,Dwt.DEFAULT)\r
80171 }else{\r
80172 a.setLocation(Dwt.DEFAULT,a.getLocation().y+o)\r
80173 }}}\r
80174 e._stopPropagation=true;\r
80175 e._returnValue=false;\r
80176 e.setToDhtmlEvent(t);\r
80177 return false\r
80178 };\r
80179 DwtSash._mouseUpHdlr=function(t){\r
80180 var e=DwtShell.mouseEvent;\r
80181 e.setFromDhtmlEvent(t);\r
80182 if(e.button!=DwtMouseEvent.LEFT){\r
80183 DwtUiEvent.setBehaviour(t,true,false);\r
80184 return false\r
80185 }\r
80186 if(DwtMouseEventCapture.getTargetObj()._callbackFunc!=null){\r
80187 DwtMouseEventCapture.getCaptureObj().release()\r
80188 }\r
80189 e._stopPropagation=true;\r
80190 e._returnValue=false;\r
80191 e.setToDhtmlEvent(t);\r
80192 return false\r
80193 };\r
80194 DwtSash._mouseOutHdlr=function(t){\r
80195 var e=DwtShell.mouseEvent;\r
80196 e.setFromDhtmlEvent(t);\r
80197 e._stopPropagation=true;\r
80198 e._returnValue=false;\r
80199 e.setToDhtmlEvent(t);\r
80200 return false\r
80201 }\r
80202 }\r
80203 if(AjxPackage.define("ajax.dwt.widgets.DwtToolBar")){\r
80204 DwtToolBar=function(a){\r
80205 if(arguments.length==0){\r
80206 return\r
80207 }\r
80208 a=Dwt.getParams(arguments,DwtToolBar.PARAMS);\r
80209 a.className=a.className||"ZToolbar";\r
80210 DwtComposite.call(this,a);\r
80211 if(a.parent instanceof DwtToolBar){\r
80212 this._hasSetMouseEvents=a.parent._hasSetMouseEvents\r
80213 }\r
80214 if(a.handleMouse!==false&&!this._hasSetMouseEvents){\r
80215 var e=AjxEnv.isIE?[DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP]:[DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP,DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT];\r
80216 this._setEventHdlrs(e);\r
80217 this._hasSetMouseEvents=true\r
80218 }\r
80219 this._style=a.style||DwtToolBar.HORIZ_STYLE;\r
80220 this._items=[];\r
80221 this._createHtml();\r
80222 this._numFillers=0;\r
80223 this._curFocusIndex=0;\r
80224 var t=(this._style==DwtToolBar.HORIZ_STYLE)?"horiz":"vert";\r
80225 this._keyMapName=["DwtToolBar",t].join("-")\r
80226 };\r
80227 DwtToolBar.PARAMS=["parent","className","posStyle","style","index"];\r
80228 DwtToolBar.prototype=new DwtComposite;\r
80229 DwtToolBar.prototype.constructor=DwtToolBar;\r
80230 DwtToolBar.prototype.toString=function(){\r
80231 return"DwtToolBar"\r
80232 };\r
80233 DwtToolBar.HORIZ_STYLE=1;\r
80234 DwtToolBar.VERT_STYLE=2;\r
80235 DwtToolBar.ELEMENT=1;\r
80236 DwtToolBar.SPACER=2;\r
80237 DwtToolBar.SEPARATOR=3;\r
80238 DwtToolBar.FILLER=4;\r
80239 DwtToolBar.FIRST_ITEM="ZFirstItem";\r
80240 DwtToolBar.LAST_ITEM="ZLastItem";\r
80241 DwtToolBar.SELECTED_NEXT=DwtControl.SELECTED+"Next";\r
80242 DwtToolBar.SELECTED_PREV=DwtControl.SELECTED+"Prev";\r
80243 DwtToolBar._NEXT_PREV_RE=new RegExp("\\b"+[DwtToolBar.SELECTED_NEXT,DwtToolBar.SELECTED_PREV].join("|")+"\\b","g");\r
80244 DwtToolBar.prototype.TEMPLATE="dwt.Widgets#ZToolbar";\r
80245 DwtToolBar.prototype.ITEM_TEMPLATE="dwt.Widgets#ZToolbarItem";\r
80246 DwtToolBar.prototype.SEPARATOR_TEMPLATE="dwt.Widgets#ZToolbarSeparator";\r
80247 DwtToolBar.prototype.SPACER_TEMPLATE="dwt.Widgets#ZToolbarSpacer";\r
80248 DwtToolBar.prototype.FILLER_TEMPLATE="dwt.Widgets#ZToolbarFiller";\r
80249 DwtToolBar.__itemCount=0;\r
80250 DwtToolBar.prototype.dispose=function(){\r
80251 this._itemsEl=null;\r
80252 this._prefixEl=null;\r
80253 this._suffixEl=null;\r
80254 DwtComposite.prototype.dispose.call(this)\r
80255 };\r
80256 DwtToolBar.prototype.getItem=function(e){\r
80257 return this._children.get(e)\r
80258 };\r
80259 DwtToolBar.prototype.getItemCount=function(){\r
80260 return this._children.size()\r
80261 };\r
80262 DwtToolBar.prototype.getItems=function(){\r
80263 return this._children.getArray()\r
80264 };\r
80265 DwtToolBar.prototype.addSpacer=function(t,e){\r
80266 var a=this._createSpacerElement();\r
80267 this._addItem(DwtToolBar.SPACER,a,e);\r
80268 return a\r
80269 };\r
80270 DwtToolBar.prototype.addSeparator=function(a,e){\r
80271 var t=this._createSeparatorElement();\r
80272 this._addItem(DwtToolBar.SEPARATOR,t,e);\r
80273 return t\r
80274 };\r
80275 DwtToolBar.prototype.removeSeparator=function(e){\r
80276 this._removeItem(e)\r
80277 };\r
80278 DwtToolBar.prototype.addFiller=function(a,e){\r
80279 var t=this._createFillerElement();\r
80280 this._addItem(DwtToolBar.FILLER,t,e);\r
80281 return t\r
80282 };\r
80283 DwtToolBar.prototype.addChild=function(a,e){\r
80284 DwtComposite.prototype.addChild.apply(this,arguments);\r
80285 var t=this._createItemElement();\r
80286 t.appendChild(a.getHtmlElement());\r
80287 this._addItem(DwtToolBar.ELEMENT,t,e)\r
80288 };\r
80289 DwtToolBar.prototype.getKeyMapName=function(){\r
80290 return this._keyMapName\r
80291 };\r
80292 DwtToolBar.prototype.handleKeyAction=function(t,o){\r
80293 var a=this.getItem(this._curFocusIndex);\r
80294 var e=this.getItemCount();\r
80295 if(e<2){\r
80296 return true\r
80297 }\r
80298 switch(t){\r
80299 case DwtKeyMap.PREV:if(this._curFocusIndex>0){\r
80300 this._moveFocus(true)\r
80301 }\r
80302 break;\r
80303 case DwtKeyMap.NEXT:if(this._curFocusIndex<(e-1)){\r
80304 this._moveFocus()\r
80305 }\r
80306 break;\r
80307 default:if(a){\r
80308 return a.handleKeyAction(t,o)\r
80309 }}\r
80310 return true\r
80311 };\r
80312 DwtToolBar.prototype._createItemId=function(t){\r
80313 t=t||this._htmlElId;\r
80314 var e=[t,"item",++DwtToolBar.__itemCount].join("_");\r
80315 return e\r
80316 };\r
80317 DwtToolBar.prototype._createHtml=function(){\r
80318 var e={\r
80319 id:this._htmlElId};\r
80320 this._createHtmlFromTemplate(this.TEMPLATE,e);\r
80321 this._itemsEl=document.getElementById(e.id+"_items");\r
80322 this._prefixEl=document.getElementById(e.id+"_prefix");\r
80323 this._suffixEl=document.getElementById(e.id+"_suffix")\r
80324 };\r
80325 DwtToolBar.prototype._createItemElement=function(a){\r
80326 a=a||this.ITEM_TEMPLATE;\r
80327 var o={\r
80328 id:this._htmlElId,itemId:this._createItemId()};\r
80329 var t=AjxTemplate.expand(a,o);\r
80330 var e=AjxStringUtil.calcDIV();\r
80331 e.innerHTML=t;\r
80332 return e.firstChild.rows[0].cells[0]\r
80333 };\r
80334 DwtToolBar.prototype._createSpacerElement=function(e){\r
80335 return this._createItemElement(e||this.SPACER_TEMPLATE)\r
80336 };\r
80337 DwtToolBar.prototype._createSeparatorElement=function(e){\r
80338 return this._createItemElement(e||this.SEPARATOR_TEMPLATE)\r
80339 };\r
80340 DwtToolBar.prototype._createFillerElement=function(e){\r
80341 return this._createItemElement(e||this.FILLER_TEMPLATE)\r
80342 };\r
80343 DwtToolBar.prototype._addItem=function(o,a,t){\r
80344 var n=this._items[t]||this._suffixEl;\r
80345 var e=t||(typeof t=="number")?t:this._items.length;\r
80346 this._items.splice(e,0,a);\r
80347 this._itemsEl.insertBefore(a,n)\r
80348 };\r
80349 DwtToolBar.prototype._removeItem=function(t){\r
80350 for(var e=0;\r
80351 e<this._items.length;\r
80352 e++){\r
80353 if(this._items[e]==t){\r
80354 this._items.splice(e,1);\r
80355 this._itemsEl.removeChild(t);\r
80356 break\r
80357 }}};\r
80358 DwtToolBar.prototype._focus=function(e){\r
80359 if(!this._submenuKeySet){\r
80360 var a=this.shell.getKeyboardMgr();\r
80361 if(a.isEnabled()){\r
80362 var t=a.__keyMapMgr;\r
80363 if(t){\r
80364 if(this._style==DwtToolBar.HORIZ_STYLE){\r
80365 t.removeMapping("DwtButton","ArrowRight");\r
80366 t.setMapping("DwtButton","ArrowDown",DwtKeyMap.SUBMENU)\r
80367 }else{\r
80368 t.removeMapping("DwtButton","ArrowDown");\r
80369 t.setMapping("DwtButton","ArrowRight",DwtKeyMap.SUBMENU)\r
80370 }\r
80371 t.reloadMap("DwtButton")\r
80372 }}\r
80373 this._submenuKeySet=true\r
80374 }\r
80375 e=e?e:this._getFocusItem(this._curFocusIndex);\r
80376 if(e){\r
80377 e._hasFocus=true;\r
80378 e._focus()\r
80379 }else{\r
80380 this._moveFocus()\r
80381 }};\r
80382 DwtToolBar.prototype._blur=function(e){\r
80383 e=e?e:this._getFocusItem(this._curFocusIndex);\r
80384 if(e){\r
80385 e._hasFocus=false;\r
80386 e._blur()\r
80387 }};\r
80388 DwtToolBar.prototype._getFocusItem=function(e){\r
80389 var t=this.getItem(e);\r
80390 if(!t||(t instanceof DwtToolBar)){\r
80391 return null\r
80392 }\r
80393 if(t._noFocus){\r
80394 return null\r
80395 }\r
80396 if(t.getEnabled&&!t.getEnabled()){\r
80397 return null\r
80398 }\r
80399 if(t.getVisible&&!t.getVisible()){\r
80400 return null\r
80401 }\r
80402 return t\r
80403 };\r
80404 DwtToolBar.prototype._moveFocus=function(e){\r
80405 var t=this._curFocusIndex;\r
80406 var a=this.getItemCount()-1;\r
80407 var o=null;\r
80408 while(!o&&t>=0&&t<=a){\r
80409 t=e?t-1:t+1;\r
80410 o=this._getFocusItem(t)\r
80411 }\r
80412 if(o){\r
80413 this._blur();\r
80414 this._curFocusIndex=t;\r
80415 this._focus(o)\r
80416 }};\r
80417 DwtToolBar.prototype.__markPrevNext=function(r,s){\r
80418 var e=this.__getButtonIndex(r);\r
80419 var o=this.__getButtonAt(e-1);\r
80420 var t=this.__getButtonAt(e+1);\r
80421 if(s){\r
80422 if(o){\r
80423 Dwt.delClass(o.getHtmlElement(),DwtToolBar._NEXT_PREV_RE,DwtToolBar.SELECTED_PREV)\r
80424 }\r
80425 if(t){\r
80426 Dwt.delClass(t.getHtmlElement(),DwtToolBar._NEXT_PREV_RE,DwtToolBar.SELECTED_NEXT)\r
80427 }}else{\r
80428 if(o){\r
80429 Dwt.delClass(o.getHtmlElement(),DwtToolBar._NEXT_PREV_RE)\r
80430 }\r
80431 if(t){\r
80432 Dwt.delClass(t.getHtmlElement(),DwtToolBar._NEXT_PREV_RE)\r
80433 }}\r
80434 var n=this.__getButtonAt(0);\r
80435 if(n){\r
80436 Dwt.addClass(n.getHtmlElement(),DwtToolBar.FIRST_ITEM)\r
80437 }\r
80438 var a=this.__getButtonAt(this.getItemCount()-1);\r
80439 if(a){\r
80440 Dwt.addClass(a.getHtmlElement(),DwtToolBar.LAST_ITEM)\r
80441 }};\r
80442 DwtToolBar.prototype.__getButtonIndex=function(a){\r
80443 var t=0;\r
80444 for(var e in this._buttons){\r
80445 if(e==a){\r
80446 return t\r
80447 }\r
80448 t++\r
80449 }\r
80450 return -1\r
80451 };\r
80452 DwtToolBar.prototype.__getButtonAt=function(t){\r
80453 var a=0;\r
80454 for(var e in this._buttons){\r
80455 if(a==t){\r
80456 return this._buttons[e]\r
80457 }\r
80458 a++\r
80459 }\r
80460 return null\r
80461 };\r
80462 DwtToolBarButton=function(e){\r
80463 if(arguments.length==0){\r
80464 return\r
80465 }\r
80466 var e=Dwt.getParams(arguments,DwtToolBarButton.PARAMS);\r
80467 e.className=e.className||"ZToolbarButton";\r
80468 DwtButton.call(this,e)\r
80469 };\r
80470 DwtToolBarButton.PARAMS=["parent","style","className","posStyle","actionTiming","id","index"];\r
80471 DwtToolBarButton.prototype=new DwtButton;\r
80472 DwtToolBarButton.prototype.constructor=DwtToolBarButton;\r
80473 DwtToolBarButton.prototype.TEMPLATE="dwt.Widgets#ZToolbarButton"\r
80474 }\r
80475 if(AjxPackage.define("ajax.dwt.widgets.DwtToolTip")){\r
80476 DwtToolTip=function(a,o,t){\r
80477 if(arguments.length==0){\r
80478 return\r
80479 }\r
80480 this.shell=a;\r
80481 this._dialog=t;\r
80482 this._poppedUp=false;\r
80483 this._div=document.createElement("div");\r
80484 this._div.className=o||"DwtToolTip";\r
80485 this._div.style.position=DwtControl.ABSOLUTE_STYLE;\r
80486 this.shell.getHtmlElement().appendChild(this._div);\r
80487 Dwt.setZIndex(this._div,Dwt.Z_HIDDEN);\r
80488 Dwt.setLocation(this._div,Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE);\r
80489 var e="dwt.Widgets#"+this._borderStyle;\r
80490 this._div.innerHTML=AjxTemplate.expand(e,"tooltip");\r
80491 var n=AjxTemplate.getParams(e);\r
80492 this._borderWidth=Number(n.width);\r
80493 this._borderHeight=Number(n.height);\r
80494 this._contentDiv=document.getElementById("tooltipContents")\r
80495 };\r
80496 DwtToolTip.prototype.toString=function(){\r
80497 return"DwtToolTip"\r
80498 };\r
80499 DwtToolTip.TOOLTIP_DELAY=750;\r
80500 DwtToolTip.prototype._borderStyle="DwtToolTip";\r
80501 DwtToolTip.prototype.getContent=function(){\r
80502 return this._div.innerHTML\r
80503 };\r
80504 DwtToolTip.prototype.setContent=function(t,e){\r
80505 this._content=t;\r
80506 if(e){\r
80507 this._contentDiv.innerHTML=this._content\r
80508 }};\r
80509 DwtToolTip.prototype.popup=function(e,a,t){\r
80510 if(this._popupAction){\r
80511 AjxTimedAction.cancelAction(this._popupAction);\r
80512 this._popupAction=null\r
80513 }\r
80514 if(this._content!=null){\r
80515 if(!t){\r
80516 this._contentDiv.innerHTML=this._content\r
80517 }\r
80518 this._popupAction=new AjxTimedAction(this,this._positionElement,[e,a]);\r
80519 AjxTimedAction.scheduleAction(this._popupAction,5)\r
80520 }};\r
80521 DwtToolTip.prototype.popdown=function(){\r
80522 if(this._popupAction){\r
80523 AjxTimedAction.cancelAction(this._popupAction);\r
80524 this._popupAction=null\r
80525 }\r
80526 if(this._content!=null&&this._poppedUp){\r
80527 Dwt.setLocation(this._div,Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE);\r
80528 this._poppedUp=false\r
80529 }};\r
80530 DwtToolTip.prototype._positionElement=function(A,O){\r
80531 this._popupAction=null;\r
80532 var n=this._div;\r
80533 var f="tooltip";\r
80534 var T=this._dialog;\r
80535 var z=5;\r
80536 var d=8;\r
80537 var h=8;\r
80538 var e=document.getElementById(f+"TopPointer");\r
80539 e.style.display="block";\r
80540 var w=Dwt.getSize(e),x=w.x,a=w.y;\r
80541 var s=document.getElementById(f+"BottomPointer");\r
80542 s.style.display="block";\r
80543 w=Dwt.getSize(s),bottomPointerWidth=w.x,bottomPointerHeight=w.y;\r
80544 var q=e;\r
80545 var r=DwtShell.getShell(window).getSize(),D=r.x,p=r.y;\r
80546 var C=Dwt.getSize(n),j=C.x,u=C.y;\r
80547 var m=this._borderHeight,S=this._borderHeight,y=this._borderWidth,k=this._borderWidth;\r
80548 var B=A-j/2-d,W;\r
80549 var t,o,v;\r
80550 if(O+h+a-m+u<p-z){\r
80551 s.style.display="none";\r
80552 W=O+h+a-m;\r
80553 t=m-a;\r
80554 v=x;\r
80555 q=e\r
80556 }else{\r
80557 e.style.display="none";\r
80558 W=O-h-bottomPointerHeight+S-u;\r
80559 t=u-S;\r
80560 v=bottomPointerWidth;\r
80561 q=s\r
80562 }\r
80563 var c=document.getElementById(f+"Contents");\r
80564 if(j-y-k<v){\r
80565 c.width=v;\r
80566 c.style.width=String(v)+"px"\r
80567 }else{\r
80568 c.width="auto";\r
80569 c.style.width="auto"\r
80570 }\r
80571 if(B<z){\r
80572 B=z\r
80573 }else{\r
80574 if(B+j>D-z){\r
80575 B=D-z-j\r
80576 }}\r
80577 o=A-B-v/2;\r
80578 if(o+v>j-k){\r
80579 o=j-k-v\r
80580 }\r
80581 if(o<y){\r
80582 o=y\r
80583 }\r
80584 q.style.left=o;\r
80585 q.style.top=t;\r
80586 Dwt.setLocation(n,B,W);\r
80587 var g=T?T.getZIndex()+Dwt._Z_INC:Dwt.Z_TOOLTIP;\r
80588 Dwt.setZIndex(n,g);\r
80589 this._poppedUp=true\r
80590 }\r
80591 }\r
80592 if(AjxPackage.define("ajax.dwt.widgets.DwtTreeItem")){\r
80593 DwtTreeItem=function(t){\r
80594 if(arguments.length==0){\r
80595 return\r
80596 }\r
80597 t=Dwt.getParams(arguments,DwtTreeItem.PARAMS);\r
80598 var e=t.parent;\r
80599 if(e instanceof DwtTree){\r
80600 this._tree=e\r
80601 }else{\r
80602 if(e instanceof DwtTreeItem){\r
80603 this._tree=e._tree\r
80604 }else{\r
80605 throw new DwtException("DwtTreeItem parent must be a DwtTree or DwtTreeItem",DwtException.INVALIDPARENT,"DwtTreeItem")\r
80606 }}\r
80607 this._origClassName=t.className||"DwtTreeItem";\r
80608 this._textClassName=[this._origClassName,"Text"].join("-");\r
80609 this._selectedClassName=[this._origClassName,DwtCssStyle.SELECTED].join("-");\r
80610 this._selectedFocusedClassName=[this._origClassName,DwtCssStyle.SELECTED,DwtCssStyle.FOCUSED].join("-");\r
80611 this._actionedClassName=[this._origClassName,DwtCssStyle.ACTIONED].join("-");\r
80612 this._dragOverClassName=[this._origClassName,DwtCssStyle.DRAG_OVER].join("-");\r
80613 t.deferred=(t.deferred!==false);\r
80614 t.className=null;\r
80615 DwtComposite.call(this,t);\r
80616 this._imageInfoParam=t.imageInfo;\r
80617 this._extraInfo=t.extraInfo;\r
80618 this._textParam=t.text;\r
80619 this._deferred=t.deferred;\r
80620 this._expandNodeImage=t.expandNodeImage||"NodeExpanded";\r
80621 this._collapseNodeImage=t.collapseNodeImage||"NodeCollapsed";\r
80622 this._itemChecked=false;\r
80623 this._initialized=false;\r
80624 this._selectionEnabled=Boolean(t.selectable!==false);\r
80625 this._forceNotifySelection=Boolean(t.forceNotifySelection);\r
80626 this._actionEnabled=true;\r
80627 this._forceNotifyAction=Boolean(t.forceNotifyAction);\r
80628 this._dndScrollCallback=t.dndScrollCallback;\r
80629 this._dndScrollId=t.dndScrollId;\r
80630 if(this._tree.isCheckedStyle){\r
80631 this.enableSelection(false);\r
80632 this._selectedClassName=this._origClassName\r
80633 }\r
80634 if(t.singleClickAction){\r
80635 this._singleClickAction=true;\r
80636 this._selectedFocusedClassName=this._selectedClassName=this._textClassName;\r
80637 this._hoverClassName=[this._origClassName,DwtCssStyle.HOVER].join("-")\r
80638 }else{\r
80639 this._hoverClassName=this._textClassName\r
80640 }\r
80641 if(e instanceof DwtTree||(e._initialized&&(!e._deferred||e._expanded))){\r
80642 this._initialize(t.index)\r
80643 }else{\r
80644 e._addDeferredChild(this,t.index);\r
80645 this._index=t.index\r
80646 }};\r
80647 DwtTreeItem.PARAMS=["parent","index","text","imageInfo","deferred","className","posStyle","forceNotifySelection","forceNotifyAction"];\r
80648 DwtTreeItem.prototype=new DwtComposite;\r
80649 DwtTreeItem.prototype.constructor=DwtTreeItem;\r
80650 DwtTreeItem.prototype.TEMPLATE="dwt.Widgets#ZTreeItem";\r
80651 DwtTreeItem.prototype._checkBoxVisible=true;\r
80652 DwtTreeItem._NODECELL_DIM="16px";\r
80653 DwtTreeItem._processedMouseDown=false;\r
80654 DwtTreeItem.prototype.dispose=function(){\r
80655 this._itemDiv=null;\r
80656 this._nodeCell=null;\r
80657 this._checkBoxCell=null;\r
80658 this._checkedImg=null;\r
80659 this._checkBox=null;\r
80660 this._imageCell=null;\r
80661 this._textCell=null;\r
80662 this._childDiv=null;\r
80663 DwtComposite.prototype.dispose.call(this)\r
80664 };\r
80665 DwtTreeItem.prototype.toString=function(){\r
80666 return"DwtTreeItem"\r
80667 };\r
80668 DwtTreeItem.prototype.getChecked=function(){\r
80669 return this._itemChecked\r
80670 };\r
80671 DwtTreeItem.prototype.setChecked=function(e,t){\r
80672 if((this._itemChecked!=e)||t){\r
80673 this._itemChecked=e;\r
80674 if(this._checkBox!=null&&(this._checkBoxCell&&Dwt.getVisible(this._checkBoxCell))){\r
80675 Dwt.setVisible(this._checkedImg,e)\r
80676 }}};\r
80677 DwtTreeItem.prototype._handleCheckboxOnclick=function(e){\r
80678 this.setChecked(!Dwt.getVisible(this._checkedImg));\r
80679 e=e||window.event;\r
80680 e.item=this;\r
80681 this._tree._itemChecked(this,e)\r
80682 };\r
80683 DwtTreeItem.prototype.getExpanded=function(){\r
80684 return this._expanded\r
80685 };\r
80686 DwtTreeItem.prototype.setExpanded=function(t,s,n){\r
80687 if(t){\r
80688 var r=this.parent;\r
80689 while(r instanceof DwtTreeItem&&!r._expanded){\r
80690 r.setExpanded(true);\r
80691 r=r.parent\r
80692 }\r
80693 this._realizeDeferredChildren()\r
80694 }\r
80695 if(this.getNumChildren()){\r
80696 if(t&&s){\r
80697 if(!this._expanded){\r
80698 this._expand(t,null,n)\r
80699 }\r
80700 var e=this.getChildren();\r
80701 for(var o=0;\r
80702 o<e.length;\r
80703 o++){\r
80704 if(e[o] instanceof DwtTreeItem){\r
80705 e[o].setExpanded(t,s,n)\r
80706 }}}else{\r
80707 if(this._expanded!=t){\r
80708 this._expand(t,null,n)\r
80709 }}}};\r
80710 DwtTreeItem.prototype.getItemCount=function(){\r
80711 return this._children.size()\r
80712 };\r
80713 DwtTreeItem.prototype.getItems=function(){\r
80714 return this._children.getArray()\r
80715 };\r
80716 DwtTreeItem.prototype.getImage=function(){\r
80717 return this._imageInfo\r
80718 };\r
80719 DwtTreeItem.prototype.setImage=function(e){\r
80720 if(this._initialized){\r
80721 if(this._imageCell){\r
80722 AjxImg.setImage(this._imageCell,e)\r
80723 }\r
80724 \r
80725 this._imageInfo=e\r
80726 }else{\r
80727 this._imageInfoParam=e\r
80728 }};\r
80729 DwtTreeItem.prototype.setDndImage=function(e){\r
80730 this._dndImageInfo=e\r
80731 };\r
80732 DwtTreeItem.prototype.getSelected=function(){\r
80733 return this._selected\r
80734 };\r
80735 DwtTreeItem.prototype.getActioned=function(){\r
80736 return this._actioned\r
80737 };\r
80738 DwtTreeItem.prototype.getText=function(){\r
80739 return this._text\r
80740 };\r
80741 DwtTreeItem.prototype.setText=function(e){\r
80742 if(this._initialized){\r
80743 if(!e){\r
80744 e=""\r
80745 }\r
80746 this._text=this._textCell.innerHTML=e\r
80747 }else{\r
80748 this._textParam=e\r
80749 }};\r
80750 DwtTreeItem.prototype.setDndText=function(e){\r
80751 this._dndText=e\r
80752 };\r
80753 DwtTreeItem.prototype.showCheckBox=function(e){\r
80754 this._checkBoxVisible=e;\r
80755 if(this._checkBoxCell){\r
80756 Dwt.setVisible(this._checkBoxCell,e)\r
80757 }};\r
80758 DwtTreeItem.prototype.showExpansionIcon=function(e){\r
80759 if(this._nodeCell){\r
80760 Dwt.setVisible(this._nodeCell,e)\r
80761 }};\r
80762 DwtTreeItem.prototype.enableSelection=function(e){\r
80763 this._selectionEnabled=e;\r
80764 this._selectedClassName=e?this._origClassName+"-"+DwtCssStyle.SELECTED:this._origClassName\r
80765 };\r
80766 DwtTreeItem.prototype.enableAction=function(e){\r
80767 this._actionEnabled=e\r
80768 };\r
80769 DwtTreeItem.prototype.addSeparator=function(e){\r
80770 this._children.add((new DwtTreeItemSeparator(this)),e)\r
80771 };\r
80772 DwtTreeItem.prototype.setVisible=function(a,t,e){\r
80773 if(t&&!e){\r
80774 Dwt.setVisible(this._itemDiv,a)\r
80775 }else{\r
80776 if(e&&!t){\r
80777 Dwt.setVisible(this._childDiv,a)\r
80778 }else{\r
80779 DwtComposite.prototype.setVisible.call(this,a)\r
80780 }}};\r
80781 DwtTreeItem.prototype.removeChild=function(t){\r
80782 if(t._initialized){\r
80783 this._tree._deselect(t);\r
80784 if(this._childDiv){\r
80785 this._childDiv.removeChild(t.getHtmlElement())\r
80786 }}\r
80787 this._children.remove(t);\r
80788 if(this._children.size()==0){\r
80789 if(this._expanded){\r
80790 this._expanded=false\r
80791 }\r
80792 if(this._initialized&&this._nodeCell){\r
80793 AjxImg.setImage(this._nodeCell,"Blank_16");\r
80794 var e=AjxImg.getImageElement(this._nodeCell);\r
80795 if(e){\r
80796 Dwt.clearHandler(e,DwtEvent.ONMOUSEDOWN)\r
80797 }}}};\r
80798 DwtTreeItem.prototype.getKeyMapName=function(){\r
80799 return"DwtTreeItem"\r
80800 };\r
80801 DwtTreeItem.prototype.handleKeyAction=function(a,r){\r
80802 switch(a){\r
80803 case DwtKeyMap.NEXT:var n=this._tree._getNextTreeItem(true);\r
80804 if(n){\r
80805 n._tree.setSelection(n,false,true)\r
80806 }\r
80807 break;\r
80808 case DwtKeyMap.PREV:var n=this._tree._getNextTreeItem(false);\r
80809 if(n){\r
80810 n._tree.setSelection(n,false,true)\r
80811 }\r
80812 break;\r
80813 case DwtKeyMap.EXPAND:if(!this._expanded){\r
80814 this.setExpanded(true,false,true)\r
80815 }\r
80816 break;\r
80817 case DwtKeyMap.COLLAPSE:if(this._expanded){\r
80818 this.setExpanded(false,false,true)\r
80819 }\r
80820 break;\r
80821 case DwtKeyMap.ACTION:var c=this.getHtmlElement();\r
80822 var h=Dwt.toWindow(c,0,0);\r
80823 var o=this.getSize();\r
80824 var t=h.x+o.x/4;\r
80825 var e=h.y+o.y/2;\r
80826 this._gotMouseDownRight=true;\r
80827 this._emulateSingleClick({\r
80828 dwtObj:this,target:c,button:DwtMouseEvent.RIGHT,docX:t,docY:e,kbNavEvent:true}\r
80829 );\r
80830 break;\r
80831 default:return false\r
80832 }\r
80833 return true\r
80834 };\r
80835 DwtTreeItem.prototype.addNodeIconListeners=function(){\r
80836 var e=AjxImg.getImageElement(this._nodeCell);\r
80837 if(e){\r
80838 Dwt.setHandler(e,DwtEvent.ONMOUSEDOWN,DwtTreeItem._nodeIconMouseDownHdlr);\r
80839 Dwt.setHandler(e,DwtEvent.ONMOUSEUP,DwtTreeItem._nodeIconMouseUpHdlr)\r
80840 }};\r
80841 DwtTreeItem.prototype._initialize=function(e,o,a){\r
80842 this._checkState();\r
80843 if(AjxEnv.isIE){\r
80844 this._setEventHdlrs([DwtEvent.ONMOUSEENTER,DwtEvent.ONMOUSELEAVE])\r
80845 }\r
80846 if(AjxEnv.isSafari){\r
80847 this._setEventHdlrs([DwtEvent.ONCONTEXTMENU])\r
80848 }\r
80849 var t={\r
80850 id:this._htmlElId,divClassName:this._origClassName,isCheckedStyle:this._tree.isCheckedStyle,textClassName:this._textClassName};\r
80851 this._createHtmlFromTemplate(this.TEMPLATE,t);\r
80852 this.parent._addItem(this,e,o);\r
80853 this._itemDiv=document.getElementById(t.id+"_div");\r
80854 this._nodeCell=document.getElementById(t.id+"_nodeCell");\r
80855 this._checkBoxCell=document.getElementById(t.id+"_checkboxCell");\r
80856 this._checkBox=document.getElementById(t.id+"_checkbox");\r
80857 this._checkedImg=document.getElementById(t.id+"_checkboxImg");\r
80858 this._imageCell=document.getElementById(t.id+"_imageCell");\r
80859 this._textCell=document.getElementById(t.id+"_textCell");\r
80860 this._extraCell=document.getElementById(t.id+"_extraCell");\r
80861 if(this._nodeCell){\r
80862 this._nodeCell.style.width=this._nodeCell.style.height=DwtTreeItem._NODECELL_DIM;\r
80863 if(this._children.size()>0||a){\r
80864 AjxImg.setImage(this._nodeCell,this._collapseNodeImage);\r
80865 this.addNodeIconListeners()\r
80866 }}\r
80867 if(this._extraCell){\r
80868 AjxImg.setImage(this._extraCell,(this._extraInfo||"Blank_16"))\r
80869 }\r
80870 if(this._tree.isCheckedStyle&&this._checkBox){\r
80871 this._checkBox.onclick=AjxCallback.simpleClosure(this._handleCheckboxOnclick,this);\r
80872 this.showCheckBox(this._checkBoxVisible);\r
80873 this.setChecked(this._tree.isCheckedByDefault,true)\r
80874 }\r
80875 if(this._imageCell&&this._imageInfoParam){\r
80876 AjxImg.setImage(this._imageCell,this._imageInfoParam);\r
80877 this._imageInfo=this._imageInfoParam\r
80878 }\r
80879 if(this._textCell&&this._textParam){\r
80880 this._textCell.innerHTML=this._text=this._textParam\r
80881 }\r
80882 this._expanded=this._selected=this._actioned=false;\r
80883 this._gotMouseDownLeft=this._gotMouseDownRight=false;\r
80884 this._addMouseListeners();\r
80885 this._initialized=true\r
80886 };\r
80887 DwtTreeItem.prototype.setTreeItemColor=function(o){\r
80888 var s=this._htmlElId+"_table";\r
80889 var a=document.getElementById(s);\r
80890 var n=document.getElementById(this._htmlElId+"_div");\r
80891 var t=this.getHtmlElement();\r
80892 var e=this._origClassName+" "+o;\r
80893 if(n){\r
80894 n.className=e\r
80895 }else{\r
80896 if(t){\r
80897 t.className=o\r
80898 }}};\r
80899 DwtTreeItem.prototype._addMouseListeners=function(){\r
80900 var t=[DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP,DwtEvent.ONDBLCLICK];\r
80901 if(AjxEnv.isIE){\r
80902 t.push(DwtEvent.ONMOUSEENTER,DwtEvent.ONMOUSELEAVE)\r
80903 }else{\r
80904 t.push(DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT)\r
80905 }\r
80906 if(AjxEnv.isSafari){\r
80907 t.push(DwtEvent.ONCONTEXTMENU)\r
80908 }\r
80909 for(var e=0;\r
80910 e<t.length;\r
80911 e++){\r
80912 this.addListener(t[e],DwtTreeItem._listeners[t[e]])\r
80913 }};\r
80914 DwtTreeItem.prototype._addDeferredChild=function(a,e){\r
80915 if(this._initialized&&this._children.size()==0){\r
80916 if(this._nodeCell){\r
80917 AjxImg.setImage(this._nodeCell,this._collapseNodeImage);\r
80918 var t=AjxImg.getImageElement(this._nodeCell);\r
80919 if(t){\r
80920 Dwt.setHandler(t,DwtEvent.ONMOUSEDOWN,DwtTreeItem._nodeIconMouseDownHdlr);\r
80921 Dwt.setHandler(t,DwtEvent.ONMOUSEUP,DwtTreeItem._nodeIconMouseUpHdlr)\r
80922 }}}\r
80923 this._children.add(a,e)\r
80924 };\r
80925 DwtTreeItem.prototype.addChild=function(e){};\r
80926 DwtTreeItem.prototype._addItem=function(a,t,s){\r
80927 if(!this._children.contains(a)){\r
80928 this._children.add(a,t)\r
80929 }\r
80930 if(this._childDiv==null){\r
80931 this._childDiv=document.createElement("div");\r
80932 this._childDiv.className=(this.parent!=this._tree)?"DwtTreeItemChildDiv":"DwtTreeItemLevel1ChildDiv";\r
80933 this.getHtmlElement().appendChild(this._childDiv);\r
80934 if(!this._expanded){\r
80935 this._childDiv.style.display="none"\r
80936 }}\r
80937 if(s&&this._nodeCell){\r
80938 if(AjxImg.getImageClass(this._nodeCell)==AjxImg.getClassForImage("Blank_16")){\r
80939 AjxImg.setImage(this._nodeCell,this._expanded?this._expandNodeImage:this._collapseNodeImage);\r
80940 var n=AjxImg.getImageElement(this._nodeCell);\r
80941 if(n){\r
80942 Dwt.setHandler(n,DwtEvent.ONMOUSEDOWN,DwtTreeItem._nodeIconMouseDownHdlr)\r
80943 }}}\r
80944 var e=this._childDiv;\r
80945 var o=e.childNodes.length;\r
80946 if(t==null||t>=o||o==0){\r
80947 e.appendChild(a.getHtmlElement())\r
80948 }else{\r
80949 e.insertBefore(a.getHtmlElement(),e.childNodes[t])\r
80950 }};\r
80951 DwtTreeItem.prototype.sort=function(e){\r
80952 this._children.sort(e);\r
80953 if(this._childDiv){\r
80954 this._setChildElOrder()\r
80955 }else{\r
80956 this._needsSort=true\r
80957 }};\r
80958 DwtTreeItem.prototype._setChildElOrder=function(e){\r
80959 var t=document.createDocumentFragment();\r
80960 this._children.foreach(function(o,a){\r
80961 t.appendChild(o.getHtmlElement());\r
80962 o._index=a\r
80963 }\r
80964 );\r
80965 this._childDiv.appendChild(t)\r
80966 };\r
80967 DwtTreeItem.prototype._getDragProxy=function(){\r
80968 var t=document.createElement("div");\r
80969 Dwt.setPosition(t,Dwt.ABSOLUTE_STYLE);\r
80970 var a=document.createElement("table");\r
80971 t.appendChild(a);\r
80972 a.cellSpacing=a.cellPadding=0;\r
80973 var o=a.insertRow(0);\r
80974 var e=0;\r
80975 var n=o.insertCell(e++);\r
80976 n.noWrap=true;\r
80977 if(this._dndImageInfo){\r
80978 AjxImg.setImage(n,this._dndImageInfo)\r
80979 }else{\r
80980 if(this._imageInfo){\r
80981 AjxImg.setImage(n,this._imageInfo)\r
80982 }}\r
80983 n=o.insertCell(e);\r
80984 n.noWrap=true;\r
80985 n.className=this._origClassName;\r
80986 if(this._dndText){\r
80987 n.innerHTML=this._dndText\r
80988 }else{\r
80989 if(this._text){\r
80990 n.innerHTML=this._text\r
80991 }}\r
80992 this.shell.getHtmlElement().appendChild(t);\r
80993 Dwt.setZIndex(t,Dwt.Z_DND);\r
80994 return t\r
80995 };\r
80996 DwtTreeItem.prototype._dragEnter=function(){\r
80997 this._preDragClassName=this._textCell.className;\r
80998 this._textCell.className=this._dragOverClassName\r
80999 };\r
81000 DwtTreeItem.prototype._dragHover=function(){\r
81001 if(this.getNumChildren()>0&&!this.getExpanded()){\r
81002 this.setExpanded(true)\r
81003 }};\r
81004 DwtTreeItem.prototype._dragLeave=function(e){\r
81005 if(this._preDragClassName){\r
81006 this._textCell.className=this._preDragClassName\r
81007 }};\r
81008 DwtTreeItem.prototype._drop=function(){\r
81009 if(this._preDragClassName){\r
81010 this._textCell.className=this._preDragClassName\r
81011 }};\r
81012 DwtTreeItem._nodeIconMouseDownHdlr=function(t){\r
81013 var a=DwtControl.getTargetControl(t);\r
81014 var e=DwtShell.mouseEvent;\r
81015 e.setFromDhtmlEvent(t,a);\r
81016 if(e.button==DwtMouseEvent.LEFT){\r
81017 a._expand(!a._expanded,e)\r
81018 }else{\r
81019 if(e.button==DwtMouseEvent.RIGHT){\r
81020 e.dwtObj._tree._itemActioned(e.dwtObj,e)\r
81021 }}\r
81022 e._stopPropagation=true;\r
81023 e._returnValue=false;\r
81024 e.setToDhtmlEvent(t);\r
81025 return false\r
81026 };\r
81027 DwtTreeItem._nodeIconMouseUpHdlr=function(t){\r
81028 var a=DwtControl.getTargetControl(t);\r
81029 var e=DwtShell.mouseEvent;\r
81030 e._stopPropagation=true;\r
81031 e._returnValue=false;\r
81032 e.setToDhtmlEvent(t);\r
81033 return false\r
81034 };\r
81035 DwtTreeItem.prototype._expand=function(t,a,e){\r
81036 if(!t){\r
81037 this._expanded=false;\r
81038 this._childDiv.style.display="none";\r
81039 if(this._nodeCell){\r
81040 AjxImg.setImage(this._nodeCell,this._collapseNodeImage)\r
81041 }\r
81042 this._tree._itemCollapsed(this,a,e)\r
81043 }else{\r
81044 this._realizeDeferredChildren();\r
81045 this._expanded=true;\r
81046 this._childDiv.style.display="block";\r
81047 if(this._nodeCell){\r
81048 AjxImg.setImage(this._nodeCell,this._expandNodeImage)\r
81049 }\r
81050 this._tree._itemExpanded(this,a,e)\r
81051 }};\r
81052 DwtTreeItem.prototype._realizeDeferredChildren=function(){\r
81053 var e=this._children.getArray();\r
81054 for(var t=0;\r
81055 t<e.length;\r
81056 t++){\r
81057 var o=e[t];\r
81058 if(!o._initialized){\r
81059 o._initialize(o._index,true)\r
81060 }else{\r
81061 if(o._isSeparator&&!o.div){\r
81062 var n=o.div=document.createElement("div");\r
81063 n.className="vSpace";\r
81064 this._childDiv.appendChild(n);\r
81065 o._initialized=true\r
81066 }}}\r
81067 if(this._needsSort){\r
81068 if(e.length){\r
81069 this._setChildElOrder()\r
81070 }\r
81071 delete this.__needsSort\r
81072 }};\r
81073 DwtTreeItem.prototype._isChildOf=function(e){\r
81074 var t=this.parent;\r
81075 while(t&&t!=this._tree){\r
81076 if(t==e){\r
81077 return true\r
81078 }\r
81079 t=t.parent\r
81080 }\r
81081 return false\r
81082 };\r
81083 DwtTreeItem.prototype._setSelected=function(e,t){\r
81084 if(this._selected!=e){\r
81085 this._selected=e;\r
81086 if(!this._initialized){\r
81087 this._initialize()\r
81088 }\r
81089 if(!this._itemDiv){\r
81090 return\r
81091 }\r
81092 if(e&&(this._selectionEnabled||this._forceNotifySelection)){\r
81093 this._itemDiv.className=this._selectedClassName;\r
81094 if(!t){\r
81095 this.focus()\r
81096 }\r
81097 return true\r
81098 }else{\r
81099 this._itemDiv.className=this._origClassName;\r
81100 return false\r
81101 }}};\r
81102 DwtTreeItem.prototype._setActioned=function(e){\r
81103 if(this._actioned!=e){\r
81104 this._actioned=e;\r
81105 if(!this._initialized){\r
81106 this._initialize()\r
81107 }\r
81108 if(!this._itemDiv){\r
81109 return\r
81110 }\r
81111 if(e&&(this._actionEnabled||this._forceNotifyAction)&&!this._selected&&!this){\r
81112 this._itemDiv.className=this._actionedClassName;\r
81113 return true\r
81114 }\r
81115 if(!e){\r
81116 if(!this._selected){\r
81117 this._itemDiv.className=this._origClassName\r
81118 }\r
81119 return false\r
81120 }}};\r
81121 DwtTreeItem.prototype._focus=function(){\r
81122 if(!this._itemDiv){\r
81123 return\r
81124 }\r
81125 if(this._selectionEnabled){\r
81126 this._itemDiv.className=this._selectedFocusedClassName\r
81127 }};\r
81128 DwtTreeItem.prototype._blur=function(){\r
81129 if(!this._itemDiv){\r
81130 return\r
81131 }\r
81132 this._itemDiv.className=this._selected?this._selectedClassName:this._origClassName\r
81133 };\r
81134 DwtTreeItem._mouseDownListener=function(e){\r
81135 var t=e.dwtObj;\r
81136 if(!t){\r
81137 return false\r
81138 }\r
81139 if(e.target==t._childDiv){\r
81140 return\r
81141 }\r
81142 if(e.button==DwtMouseEvent.LEFT&&(t._selectionEnabled||t._forceNotifySelection)){\r
81143 t._gotMouseDownLeft=true\r
81144 }else{\r
81145 if(e.button==DwtMouseEvent.RIGHT&&(t._actionEnabled||t._forceNotifyAction)){\r
81146 t._gotMouseDownRight=true\r
81147 }}};\r
81148 DwtTreeItem._mouseOutListener=function(e){\r
81149 var t=e.dwtObj;\r
81150 if(!t){\r
81151 return false\r
81152 }\r
81153 if(e.target==t._childDiv){\r
81154 return\r
81155 }\r
81156 t._gotMouseDownLeft=false;\r
81157 t._gotMouseDownRight=false;\r
81158 if(t._singleClickAction&&t._textCell){\r
81159 t._textCell.className=t._textClassName\r
81160 }};\r
81161 DwtTreeItem._mouseOverListener=function(e){\r
81162 var t=e.dwtObj;\r
81163 if(!t){\r
81164 return false\r
81165 }\r
81166 if(e.target==t._childDiv){\r
81167 return\r
81168 }\r
81169 if(t._singleClickAction&&t._textCell){\r
81170 t._textCell.className=t._hoverClassName\r
81171 }};\r
81172 DwtTreeItem._mouseUpListener=function(e){\r
81173 var t=e.dwtObj;\r
81174 if(!t){\r
81175 return false\r
81176 }\r
81177 if(e.target==t._childDiv){\r
81178 return\r
81179 }\r
81180 if(e.button==DwtMouseEvent.LEFT&&t._gotMouseDownLeft){\r
81181 t._tree._itemClicked(t,e)\r
81182 }else{\r
81183 if(e.button==DwtMouseEvent.RIGHT&&t._gotMouseDownRight){\r
81184 t._tree._itemActioned(t,e)\r
81185 }}};\r
81186 DwtTreeItem._doubleClickListener=function(t){\r
81187 var a=t.dwtObj;\r
81188 if(!a){\r
81189 return false\r
81190 }\r
81191 if(t.target==a._childDiv){\r
81192 return\r
81193 }\r
81194 var o=DwtControl.getTargetControl(t);\r
81195 var e=DwtShell.mouseEvent;\r
81196 e.setFromDhtmlEvent(t,o);\r
81197 if(e.button==DwtMouseEvent.LEFT||e.button==DwtMouseEvent.NONE){\r
81198 e.dwtObj._tree._itemDblClicked(e.dwtObj,e)\r
81199 }};\r
81200 DwtTreeItem._contextListener=function(t){\r
81201 if(AjxEnv.isSafari){\r
81202 var a=DwtControl.getTargetControl(t);\r
81203 var e=a?a.preventContextMenu():true;\r
81204 if(e){\r
81205 a.notifyListeners(DwtEvent.ONMOUSEDOWN,t);\r
81206 return a.notifyListeners(DwtEvent.ONMOUSEUP,t)\r
81207 }}};\r
81208 DwtTreeItem.prototype._emulateSingleClick=function(e){\r
81209 var t=new DwtMouseEvent();\r
81210 this._setMouseEvent(t,e);\r
81211 t.kbNavEvent=e.kbNavEvent;\r
81212 this.notifyListeners(DwtEvent.ONMOUSEUP,t)\r
81213 };\r
81214 DwtTreeItem._listeners={};\r
81215 DwtTreeItem._listeners[DwtEvent.ONMOUSEDOWN]=new AjxListener(null,DwtTreeItem._mouseDownListener);\r
81216 DwtTreeItem._listeners[DwtEvent.ONMOUSEOUT]=new AjxListener(null,DwtTreeItem._mouseOutListener);\r
81217 DwtTreeItem._listeners[DwtEvent.ONMOUSELEAVE]=new AjxListener(null,DwtTreeItem._mouseOutListener);\r
81218 DwtTreeItem._listeners[DwtEvent.ONMOUSEENTER]=new AjxListener(null,DwtTreeItem._mouseOverListener);\r
81219 DwtTreeItem._listeners[DwtEvent.ONMOUSEOVER]=new AjxListener(null,DwtTreeItem._mouseOverListener);\r
81220 DwtTreeItem._listeners[DwtEvent.ONMOUSEUP]=new AjxListener(null,DwtTreeItem._mouseUpListener);\r
81221 DwtTreeItem._listeners[DwtEvent.ONDBLCLICK]=new AjxListener(null,DwtTreeItem._doubleClickListener);\r
81222 DwtTreeItem._listeners[DwtEvent.ONCONTEXTMENU]=new AjxListener(null,DwtTreeItem._contextListener);\r
81223 DwtTreeItemSeparator=function(e){\r
81224 this.parent=e;\r
81225 this._isSeparator=true;\r
81226 this._initialized=true\r
81227 };\r
81228 DwtTreeItemSeparator.prototype.dispose=function(){\r
81229 DwtComposite.prototype.removeChild.call(this.parent,this)\r
81230 };\r
81231 DwtTreeItemSeparator.prototype.isInitialized=function(){\r
81232 return this._initialized\r
81233 };\r
81234 DwtTreeItemSeparator.prototype.getHtmlElement=function(){\r
81235 return this.div\r
81236 }\r
81237 }\r
81238 if(AjxPackage.define("ajax.dwt.widgets.DwtHeaderTreeItem")){\r
81239 DwtHeaderTreeItem=function(e){\r
81240 this.overview=e.overview;\r
81241 this._button=e.button;\r
81242 this._noNodeCell=e.noNodeCell;\r
81243 DwtTreeItem.call(this,e)\r
81244 };\r
81245 DwtHeaderTreeItem.prototype=new DwtTreeItem;\r
81246 DwtHeaderTreeItem.prototype.constructor=DwtHeaderTreeItem;\r
81247 DwtHeaderTreeItem.prototype.TEMPLATE="dwt.Widgets#ZHeaderTreeItem";\r
81248 DwtHeaderTreeItem.prototype.toString=function(){\r
81249 return"DwtHeaderTreeItem"\r
81250 };\r
81251 DwtHeaderTreeItem.prototype._createHtmlFromTemplate=function(e,t){\r
81252 t.noNodeCell=this._noNodeCell;\r
81253 DwtTreeItem.prototype._createHtmlFromTemplate.apply(this,arguments)\r
81254 };\r
81255 DwtHeaderTreeItem.prototype._initialize=function(){\r
81256 DwtTreeItem.prototype._initialize.apply(this,arguments);\r
81257 if(this._button){\r
81258 this._headerButtonId=this._htmlElId+"_headerButton";\r
81259 var t=document.getElementById(this._headerButtonId);\r
81260 if(t){\r
81261 t.className="Img"+this._button.image;\r
81262 t.onclick=AjxCallback.simpleClosure(this._onclickHandler,this);\r
81263 var e=new AjxListener(null,DwtHeaderTreeItem._mouseOverListener);\r
81264 var a=new AjxListener(null,DwtHeaderTreeItem._mouseOutListener);\r
81265 this.addListener(DwtEvent.ONMOUSEOVER,e);\r
81266 this.addListener(DwtEvent.ONMOUSEENTER,e);\r
81267 this.addListener(DwtEvent.ONMOUSEOUT,a);\r
81268 this.addListener(DwtEvent.ONMOUSELEAVE,a);\r
81269 this.addListener(DwtEvent.ONMOUSEUP,new AjxListener(null,DwtHeaderTreeItem._mouseUpListener))\r
81270 }}};\r
81271 DwtHeaderTreeItem.prototype._onclickHandler=function(t){\r
81272 var e=DwtShell.mouseEvent;\r
81273 e.setFromDhtmlEvent(t,this);\r
81274 this._button.callback.run(e)\r
81275 };\r
81276 DwtHeaderTreeItem._mouseOverListener=function(t){\r
81277 var a=t.dwtObj;\r
81278 var e=DwtUiEvent.getTarget(t);\r
81279 if(e&&(e.id==a._headerButtonId)){\r
81280 a.setToolTipContent(a._button.tooltip)\r
81281 }};\r
81282 DwtHeaderTreeItem._mouseOutListener=function(e){\r
81283 var t=e.dwtObj;\r
81284 t.setToolTipContent(null)\r
81285 };\r
81286 DwtHeaderTreeItem._mouseUpListener=function(t){\r
81287 \r
81288 var a=t.dwtObj;\r
81289 var e=t.target&&t.target.id;\r
81290 if(e&&(e==a._headerButtonId)){\r
81291 return\r
81292 }\r
81293 DwtTreeItem._mouseUpListener.apply(null,arguments)\r
81294 };\r
81295 DwtHeaderTreeItem.prototype._focusByMouseUpEvent=function(t){\r
81296 var e=t.target&&t.target.id;\r
81297 if(e&&(e==this._headerButtonId)){\r
81298 return\r
81299 }\r
81300 DwtTreeItem.prototype._focusByMouseUpEvent.apply(this,arguments)\r
81301 }\r
81302 }\r
81303 if(AjxPackage.define("ajax.dwt.widgets.DwtTree")){\r
81304 DwtTree=function(a){\r
81305 if(arguments.length==0){\r
81306 return\r
81307 }\r
81308 a=Dwt.getParams(arguments,DwtTree.PARAMS);\r
81309 a.className=a.className||"DwtTree";\r
81310 DwtComposite.call(this,a);\r
81311 var e=[DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEUP,DwtEvent.ONDBLCLICK];\r
81312 if(!AjxEnv.isIE){\r
81313 e=e.concat([DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEOUT])\r
81314 }\r
81315 this._setEventHdlrs(e);\r
81316 var t=a.style;\r
81317 if(!t){\r
81318 this._style=DwtTree.SINGLE_STYLE\r
81319 }else{\r
81320 if(t==DwtTree.CHECKEDITEM_STYLE){\r
81321 t|=DwtTree.SINGLE_STYLE\r
81322 }\r
81323 this._style=t\r
81324 }\r
81325 this.isCheckedStyle=((this._style&DwtTree.CHECKEDITEM_STYLE)!=0);\r
81326 this.isCheckedByDefault=a.isCheckedByDefault;\r
81327 this._selectedItems=new AjxVector();\r
81328 this._selEv=new DwtSelectionEvent(true)\r
81329 };\r
81330 DwtTree.PARAMS=["parent","style","className","posStyle"];\r
81331 DwtTree.prototype=new DwtComposite;\r
81332 DwtTree.prototype.constructor=DwtTree;\r
81333 DwtTree.prototype.toString=function(){\r
81334 return"DwtTree"\r
81335 };\r
81336 DwtTree.SINGLE_STYLE=1;\r
81337 DwtTree.MULTI_STYLE=2;\r
81338 DwtTree.CHECKEDITEM_STYLE=4;\r
81339 DwtTree.ITEM_SELECTED=0;\r
81340 DwtTree.ITEM_DESELECTED=1;\r
81341 DwtTree.ITEM_CHECKED=2;\r
81342 DwtTree.ITEM_ACTIONED=3;\r
81343 DwtTree.ITEM_DBL_CLICKED=4;\r
81344 DwtTree.ITEM_EXPANDED=1;\r
81345 DwtTree.ITEM_COLLAPSED=2;\r
81346 DwtTree.prototype.getStyle=function(){\r
81347 return this._style\r
81348 };\r
81349 DwtTree.prototype.addSelectionListener=function(e){\r
81350 this.addListener(DwtEvent.SELECTION,e);\r
81351 if(DwtControl.globalSelectionListener){\r
81352 this.addListener(DwtEvent.SELECTION,DwtControl.globalSelectionListener)\r
81353 }};\r
81354 DwtTree.prototype.removeSelectionListener=function(e){\r
81355 this.removeListener(DwtEvent.SELECTION,e)\r
81356 };\r
81357 DwtTree.prototype.addTreeListener=function(e){\r
81358 this.addListener(DwtEvent.TREE,e)\r
81359 };\r
81360 DwtTree.prototype.removeTreeListener=function(e){\r
81361 this.removeListener(DwtEvent.TREE,e)\r
81362 };\r
81363 DwtTree.prototype.getItemCount=function(){\r
81364 return this._children.size()\r
81365 };\r
81366 DwtTree.prototype.getItems=function(){\r
81367 return this._children.getArray()\r
81368 };\r
81369 DwtTree.prototype.deselectAll=function(){\r
81370 var e=this._selectedItems.getArray();\r
81371 var o=this._selectedItems.size();\r
81372 for(var t=0;\r
81373 t<o;\r
81374 t++){\r
81375 e[t]._setSelected(false)\r
81376 }\r
81377 if(o>0){\r
81378 this._notifyListeners(DwtEvent.SELECTION,this._selectedItems.getArray(),DwtTree.ITEM_DESELECTED,null,this._selEv)\r
81379 }\r
81380 this._selectedItems.removeAll()\r
81381 };\r
81382 DwtTree.prototype.getSelection=function(){\r
81383 return this._selectedItems.getArray()\r
81384 };\r
81385 DwtTree.prototype.setSelection=function(n,r,d,e){\r
81386 var c=this._selectedItems.getArray();\r
81387 var h=this._selectedItems.size();\r
81388 var u;\r
81389 var t=0;\r
81390 var s=false;\r
81391 for(var o=0;\r
81392 o<h;\r
81393 o++){\r
81394 if(c[o]==n){\r
81395 s=true\r
81396 }else{\r
81397 c[o]._setSelected(false);\r
81398 this._selectedItems.remove(c[o]);\r
81399 if(u==null){\r
81400 u=new Array()\r
81401 }\r
81402 u[t++]=c[o]\r
81403 }}\r
81404 if(u&&!r){\r
81405 this._notifyListeners(DwtEvent.SELECTION,u,DwtTree.ITEM_DESELECTED,null,this._selEv,d)\r
81406 }\r
81407 if(s){\r
81408 return\r
81409 }\r
81410 this._selectedItems.add(n);\r
81411 this._expandUp(n);\r
81412 if(n._setSelected(true,e)&&!r){\r
81413 this._notifyListeners(DwtEvent.SELECTION,[n],DwtTree.ITEM_SELECTED,null,this._selEv,d)\r
81414 }};\r
81415 DwtTree.prototype.getSelectionCount=function(){\r
81416 return this._selectedItems.size()\r
81417 };\r
81418 DwtTree.prototype.addChild=function(e){};\r
81419 DwtTree.prototype.addSeparator=function(){\r
81420 var e=document.createElement("div");\r
81421 e.className="vSpace";\r
81422 this.getHtmlElement().appendChild(e)\r
81423 };\r
81424 DwtTree.prototype._expandUp=function(t){\r
81425 var e=t.parent;\r
81426 while(e instanceof DwtTreeItem){\r
81427 e.setExpanded(true);\r
81428 e.setVisible(true);\r
81429 e=e.parent\r
81430 }};\r
81431 DwtTree.prototype._addItem=function(t,e){\r
81432 this._children.add(t,e);\r
81433 var o=this.getHtmlElement();\r
81434 var a=o.childNodes.length;\r
81435 if(e==null||e>a){\r
81436 o.appendChild(t.getHtmlElement())\r
81437 }else{\r
81438 o.insertBefore(t.getHtmlElement(),o.childNodes[e])\r
81439 }};\r
81440 DwtTree.prototype.sort=function(e){\r
81441 this._children.sort(e);\r
81442 var t=document.createDocumentFragment();\r
81443 this._children.foreach(function(o,a){\r
81444 t.appendChild(o.getHtmlElement());\r
81445 o._index=a\r
81446 }\r
81447 );\r
81448 this.getHtmlElement().appendChild(t)\r
81449 };\r
81450 DwtTree.prototype.removeChild=function(e){\r
81451 this._children.remove(e);\r
81452 this._selectedItems.remove(e);\r
81453 this.getHtmlElement().removeChild(e.getHtmlElement())\r
81454 };\r
81455 DwtTree.prototype._getNextTreeItem=function(n){\r
81456 var a=this.getSelection();\r
81457 var c=(a&&a.length)?a[0]:null;\r
81458 var e=null,h=-1;\r
81459 var r=this.getTreeItemList(true);\r
81460 if(c){\r
81461 for(var o=0,s=r.length;\r
81462 o<s;\r
81463 o++){\r
81464 var t=r[o];\r
81465 if(t==c){\r
81466 h=n?o+1:o-1;\r
81467 break\r
81468 }}\r
81469 e=r[h]\r
81470 }else{\r
81471 if(r&&r.length){\r
81472 e=n?r[0]:r[r.length-1]\r
81473 }}\r
81474 return e\r
81475 };\r
81476 DwtTree.prototype.getTreeItemList=function(e){\r
81477 return this._addToList([],e)\r
81478 };\r
81479 DwtTree.prototype._addToList=function(n,s,o){\r
81480 if(o&&!o._isSeparator&&(!s||(o.getVisible()&&o._selectionEnabled))){\r
81481 n.push(o)\r
81482 }\r
81483 if(!o||!s||o._expanded){\r
81484 var a=o||this;\r
81485 var t=a.getChildren?a.getChildren():[];\r
81486 for(var e=0;\r
81487 e<t.length;\r
81488 e++){\r
81489 this._addToList(n,s,t[e])\r
81490 }}\r
81491 return n\r
81492 };\r
81493 DwtTree.prototype._deselect=function(e){\r
81494 if(this._selectedItems.contains(e)){\r
81495 this._selectedItems.remove(e);\r
81496 e._setSelected(false);\r
81497 this._notifyListeners(DwtEvent.SELECTION,[e],DwtTree.ITEM_DESELECTED,null,this._selEv)\r
81498 }};\r
81499 DwtTree.prototype._itemActioned=function(t,e){\r
81500 if(this._actionedItem){\r
81501 this._actionedItem._setActioned(false);\r
81502 this._notifyListeners(DwtEvent.SELECTION,[this._actionedItem],DwtTree.ITEM_DESELECTED,e,this._selEv)\r
81503 }\r
81504 this._actionedItem=t;\r
81505 t._setActioned(true);\r
81506 this._notifyListeners(DwtEvent.SELECTION,[t],DwtTree.ITEM_ACTIONED,e,this._selEv)\r
81507 };\r
81508 DwtTree.prototype._itemChecked=function(t,e){\r
81509 this._notifyListeners(DwtEvent.SELECTION,[t],DwtTree.ITEM_CHECKED,e,this._selEv)\r
81510 };\r
81511 DwtTree.prototype._itemClicked=function(n,o){\r
81512 var t;\r
81513 var e=this._selectedItems.getArray();\r
81514 var s=this._selectedItems.size();\r
81515 if(this._style&DwtTree.SINGLE_STYLE||(!o.shiftKey&&!o.ctrlKey)){\r
81516 if(s>0){\r
81517 for(t=0;\r
81518 t<s;\r
81519 t++){\r
81520 e[t]._setSelected(false)\r
81521 }\r
81522 this._notifyListeners(DwtEvent.SELECTION,this._selectedItems.getArray(),DwtTree.ITEM_DESELECTED,o,this._selEv);\r
81523 this._selectedItems.removeAll()\r
81524 }\r
81525 this._selectedItems.add(n);\r
81526 if(n._setSelected(true)){\r
81527 this._notifyListeners(DwtEvent.SELECTION,[n],DwtTree.ITEM_SELECTED,o,this._selEv)\r
81528 }}else{\r
81529 if(o.ctrlKey){\r
81530 if(this._selectedItems.contains(n)){\r
81531 this._selectedItems.remove(n);\r
81532 n._setSelected(false);\r
81533 this._notifyListeners(DwtEvent.SELECTION,[n],DwtTree.ITEM_DESELECTED,o,this._selEv)\r
81534 }else{\r
81535 this._selectedItems.add(n);\r
81536 if(n._setSelected(true)){\r
81537 this._notifyListeners(DwtEvent.SELECTION,[n],DwtTree.ITEM_SELECTED,o,this._selEv)\r
81538 }}}else{}}};\r
81539 DwtTree.prototype._itemDblClicked=function(t,e){\r
81540 this._notifyListeners(DwtEvent.SELECTION,[t],DwtTree.ITEM_DBL_CLICKED,e,this._selEv)\r
81541 };\r
81542 DwtTree.prototype._itemExpanded=function(a,t,e){\r
81543 if(!e){\r
81544 this._notifyListeners(DwtEvent.TREE,[a],DwtTree.ITEM_EXPANDED,t,DwtShell.treeEvent)\r
81545 }};\r
81546 DwtTree.prototype._itemCollapsed=function(c,s,n){\r
81547 var o;\r
81548 if(!n){\r
81549 this._notifyListeners(DwtEvent.TREE,[c],DwtTree.ITEM_COLLAPSED,s,DwtShell.treeEvent)\r
81550 }\r
81551 var h=false;\r
81552 var r=this._selectedItems.getArray();\r
81553 var e=this._selectedItems.size();\r
81554 var d;\r
81555 var t=0;\r
81556 for(o=0;\r
81557 o<e;\r
81558 o++){\r
81559 if(r[o]._isChildOf(c)){\r
81560 h=true;\r
81561 if(d==null){\r
81562 d=new Array()\r
81563 }\r
81564 d[t++]=r[o];\r
81565 r[o]._setSelected(false);\r
81566 this._selectedItems.remove(r[o])\r
81567 }}\r
81568 if(d){\r
81569 this._notifyListeners(DwtEvent.SELECTION,d,DwtTree.ITEM_DESELECTED,s,this._selEv)\r
81570 }\r
81571 if(h&&!this._selectedItems.contains(c)){\r
81572 this._selectedItems.add(c);\r
81573 if(c._setSelected(true)){\r
81574 this._notifyListeners(DwtEvent.SELECTION,[c],DwtTree.ITEM_SELECTED,s,this._selEv)\r
81575 }}};\r
81576 DwtTree.prototype._notifyListeners=function(s,e,o,a,t,n){\r
81577 if(this.isListenerRegistered(s)){\r
81578 if(a){\r
81579 DwtUiEvent.copy(t,a)\r
81580 }\r
81581 t.items=e;\r
81582 if(e.length==1){\r
81583 t.item=e[0]\r
81584 }\r
81585 t.detail=o;\r
81586 t.kbNavEvent=n;\r
81587 this.notifyListeners(s,t)\r
81588 }}\r
81589 }\r
81590 if(AjxPackage.define("ajax.dwt.widgets.DwtText")){\r
81591 DwtText=function(e){\r
81592 if(arguments.length==0){\r
81593 return\r
81594 }\r
81595 e=Dwt.getParams(arguments,DwtText.PARAMS);\r
81596 e.className=e.className||"DwtText";\r
81597 DwtControl.call(this,e)\r
81598 };\r
81599 DwtText.PARAMS=["parent","className","posStyle"];\r
81600 DwtText.prototype=new DwtControl;\r
81601 DwtText.prototype.constructor=DwtText;\r
81602 DwtText.prototype.toString=function(){\r
81603 return"DwtText"\r
81604 };\r
81605 DwtText.prototype.getTabGroupMember=function(){\r
81606 return null\r
81607 };\r
81608 DwtText.prototype.setText=function(e){\r
81609 if(!this._textNode){\r
81610 this._textNode=document.createTextNode(e);\r
81611 this.getHtmlElement().appendChild(this._textNode)\r
81612 }else{\r
81613 this._textNode.data=e\r
81614 }};\r
81615 DwtText.prototype.getText=function(){\r
81616 return this._textNode?this._textNode.data:""\r
81617 };\r
81618 DwtText.prototype.getTextNode=function(){\r
81619 return this._textNode\r
81620 }\r
81621 }\r
81622 if(AjxPackage.define("ajax.dwt.widgets.DwtIframe")){\r
81623 DwtIframe=function(o){\r
81624 o.posStyle=o.posStyle||DwtControl.STATIC_STYLE;\r
81625 o.className=o.className||"DwtIframe";\r
81626 DwtControl.call(this,o);\r
81627 this._styles=o.styles;\r
81628 this._noscroll=o.noscroll;\r
81629 this._iframeID=o.id?DwtId.getIframeId(o.id):Dwt.getNextId();\r
81630 this._onLoadHandler=o.onload;\r
81631 this._processHtmlCallback=o.processHtmlCallback;\r
81632 this._hidden=o.hidden;\r
81633 this._createFrame(o.html);\r
81634 if(o.useKbMgmt){\r
81635 var t=this.getIframe();\r
81636 var e=Dwt.getIframeDoc(t);\r
81637 var a=AjxEnv.isIE?e:t.contentWindow;\r
81638 Dwt.setHandler(a,DwtEvent.ONKEYDOWN,DwtKeyboardMgr.__keyDownHdlr);\r
81639 Dwt.setHandler(a,DwtEvent.ONKEYUP,DwtKeyboardMgr.__keyUpHdlr);\r
81640 Dwt.setHandler(a,DwtEvent.ONKEYPRESS,DwtKeyboardMgr.__keyPressHdlr)\r
81641 }};\r
81642 DwtIframe.prototype=new DwtControl;\r
81643 DwtIframe.prototype.constructor=DwtIframe;\r
81644 DwtIframe.prototype.toString=function(){\r
81645 return"DwtIframe"\r
81646 };\r
81647 DwtIframe.prototype.getIframe=function(){\r
81648 return document.getElementById(this._iframeID)\r
81649 };\r
81650 DwtIframe.prototype.getDocument=function(){\r
81651 return this.getIframe().contentWindow.document\r
81652 };\r
81653 DwtIframe.prototype._rawEventHandler=function(r){\r
81654 var a=this.getIframe();\r
81655 var o=a.contentWindow;\r
81656 if(AjxEnv.isIE){\r
81657 r=o.event\r
81658 }\r
81659 var e;\r
81660 if(/mouse|context|click|select/i.test(r.type)){\r
81661 e=new DwtMouseEvent(true)\r
81662 }else{\r
81663 e=new DwtUiEvent(true)\r
81664 }\r
81665 e.setFromDhtmlEvent(r);\r
81666 if(r.type=="mousedown"&&DwtMenu&&DwtMenu._outsideMouseDownListener){\r
81667 DwtMenu._outsideMouseDownListener(r)\r
81668 }\r
81669 var n=e.type.toLowerCase();\r
81670 if(!/^on/.test(n)){\r
81671 n="on"+n\r
81672 }\r
81673 var s=this.getLocation();\r
81674 if(!AjxEnv.isIE){\r
81675 var h=o.document;\r
81676 var t=h.documentElement.scrollLeft||(h.body?h.body.scrollLeft:0);\r
81677 var u=h.documentElement.scrollTop||(h.body?h.body.scrollTop:0);\r
81678 s.x-=t;\r
81679 s.y-=u\r
81680 }\r
81681 e.docX+=s.x;\r
81682 e.docY+=s.y;\r
81683 e.elementX+=s.x;\r
81684 e.elementY+=s.y;\r
81685 var d=DwtMouseEventCapture.getCaptureObj();\r
81686 if(AjxEnv.isIE||AjxEnv.isSafari||!d){\r
81687 DwtEventManager.notifyListeners(n,e);\r
81688 this.parent.notifyListeners(n,e)\r
81689 }else{\r
81690 var c=document.createEvent("MouseEvents");\r
81691 c.initMouseEvent(r.type,true,true,document.defaultView,0,r.screenX,r.screenY,e.docX,e.docY,r.ctrlKey,r.altKey,r.shiftKey,r.metaKey,r.button,r.relatedTarget);\r
81692 document.body.dispatchEvent(c)\r
81693 }\r
81694 e.setToDhtmlEvent(r);\r
81695 return e._returnValue\r
81696 };\r
81697 DwtIframe._forwardEvents=[DwtEvent.ONCHANGE,DwtEvent.ONCLICK,DwtEvent.ONDBLCLICK,DwtEvent.ONFOCUS,DwtEvent.ONKEYDOWN,DwtEvent.ONKEYPRESS,DwtEvent.ONKEYUP,DwtEvent.ONMOUSEDOWN,DwtEvent.ONMOUSEENTER,DwtEvent.ONMOUSELEAVE,DwtEvent.ONMOUSEMOVE,DwtEvent.ONMOUSEOUT,DwtEvent.ONMOUSEOVER,DwtEvent.ONMOUSEUP,DwtEvent.ONSELECTSTART];\r
81698 DwtIframe.prototype._createFrame=function(t){\r
81699 var e=this.getHTMLElId();\r
81700 function a(s){\r
81701 var n=document.getElementById(e);\r
81702 var o=DwtControl.findControl(n);\r
81703 return o._rawEventHandler(s)\r
81704 }\r
81705 (function(){\r
81706 var c,h=[],r=0,o;\r
81707 var s=document.getElementById(e);\r
81708 var n=DwtControl.findControl(s);\r
81709 h[r++]="<iframe";\r
81710 if(n._noscroll){\r
81711 h[r++]=" scrolling='no'"\r
81712 }\r
81713 if(n._hidden){\r
81714 h[r++]=" style='visibility:hidden'"\r
81715 }\r
81716 h[r++]=" frameborder='0' width='100%' id='";\r
81717 h[r++]=n._iframeID;\r
81718 h[r++]="' name='"+n._iframeID+"'";\r
81719 if(n._onLoadHandler){\r
81720 h[r++]=" onload='"+n._onLoadHandler+"'"\r
81721 }\r
81722 h[r++]=" src='javascript:\"\";' ></iframe>";\r
81723 n.setContent(h.join(""));\r
81724 t=t.replace(/(<style[^>]*>)[\s\t\u00A0]*((.|\n)*?)[\s\t\u00A0]*<\x2fstyle>/mgi,function(d,m,u){\r
81725 return m+u.replace(/@import.*?(;|[\s\t\u00A0]*$)/gi,"")+"</style>"\r
81726 }\r
81727 );\r
81728 c=n.getIframe();\r
81729 o=Dwt.getIframeDoc(c);\r
81730 o.open();\r
81731 if(n._styles){\r
81732 o.write(["<style type='text/css'>",n._styles,"</style>"].join(""))\r
81733 }\r
81734 o.write(t);\r
81735 o.close();\r
81736 if(n._processHtmlCallback){\r
81737 n._processHtmlCallback.run(o)\r
81738 }\r
81739 h=o.documentElement.style;\r
81740 h.margin=h.padding="0";\r
81741 if(o.body){\r
81742 o.body.style.margin="0"\r
81743 }\r
81744 h=DwtIframe._forwardEvents;\r
81745 if(!AjxEnv.isIE){\r
81746 o=c.contentWindow\r
81747 }\r
81748 for(r=h.length;\r
81749 --r>=0;\r
81750 ){\r
81751 o[h[r]]=a\r
81752 }}\r
81753 )()\r
81754 };\r
81755 DwtIframe.prototype._resetEventHandlers=function(){\r
81756 var e=this;\r
81757 function t(a){\r
81758 return e._rawEventHandler(a)\r
81759 }\r
81760 (function(){\r
81761 var s,n=[],o=0,a;\r
81762 s=e.getIframe();\r
81763 a=Dwt.getIframeDoc(s);\r
81764 n=DwtIframe._forwardEvents;\r
81765 if(!AjxEnv.isIE){\r
81766 a=s.contentWindow\r
81767 }\r
81768 for(o=n.length;\r
81769 --o>=0;\r
81770 ){\r
81771 a[n[o]]=t\r
81772 }}\r
81773 )()\r
81774 }\r
81775 }\r
81776 if(AjxPackage.define("ajax.dwt.widgets.DwtForm")){\r
81777 DwtForm=function(e){\r
81778 if(arguments.length==0){\r
81779 return\r
81780 }\r
81781 e=Dwt.getParams(arguments,DwtForm.PARAMS);\r
81782 e.className=e.className||"DwtForm";\r
81783 DwtComposite.apply(this,arguments);\r
81784 this.setScrollStyle(DwtControl.SCROLL);\r
81785 this._tabGroup=new DwtTabGroup(this._htmlElId);\r
81786 this._context={\r
81787 set:AjxCallback.simpleClosure(this.set,this),get:AjxCallback.simpleClosure(this.get,this)};\r
81788 this._dirty={};\r
81789 this._ignore={};\r
81790 this._invalid={};\r
81791 this.setModel(e.model);\r
81792 this.setForm(e.form);\r
81793 this.reset()\r
81794 };\r
81795 DwtForm.prototype=new DwtComposite;\r
81796 DwtForm.prototype.constructor=DwtForm;\r
81797 DwtForm.prototype.toString=function(){\r
81798 return"DwtForm"\r
81799 };\r
81800 DwtForm.PARAMS=DwtControl.PARAMS.concat("form","model");\r
81801 DwtForm.prototype.setValue=function(s,a,t){\r
81802 if(typeof s!="string"){\r
81803 s=String(s)\r
81804 }\r
81805 if(s.match(/\./)||s.match(/\[/)){\r
81806 var n=s.replace(/\[(\d+)\](\.)?/,".$1$2").split(".");\r
81807 var o=this.getControl(n[0]);\r
81808 if(Dwt.instanceOf(o,"DwtForm")){\r
81809 o.setValue(n.slice(1).join("."),a,t)\r
81810 }\r
81811 return\r
81812 }\r
81813 var e=this._items[s];\r
81814 if(!e){\r
81815 return\r
81816 }\r
81817 if(!t&&a==e.value){\r
81818 return\r
81819 }\r
81820 this._setModelValue(s,a);\r
81821 this._setControlValue(s,a)\r
81822 };\r
81823 DwtForm.prototype.getValue=function(s,e){\r
81824 if(typeof s!="string"){\r
81825 s=String(s)\r
81826 }\r
81827 if(s.match(/\./)||s.match(/\[/)){\r
81828 var n=s.replace(/\[(\d+)\](\.)?/,".$1$2").split(".");\r
81829 var o=this.getControl(n[0]);\r
81830 if(Dwt.instanceOf(o,"DwtForm")){\r
81831 return o.getValue(n.slice(1).join("."))\r
81832 }\r
81833 return null\r
81834 }\r
81835 var t=this._items[s];\r
81836 if(!t){\r
81837 return\r
81838 }\r
81839 if(t.getter){\r
81840 return this._call(t.getter)||e\r
81841 }\r
81842 var a=this._getControlValue(s)||t.value;\r
81843 return a||e\r
81844 };\r
81845 DwtForm.prototype.getControl=function(t){\r
81846 if(typeof t!="string"){\r
81847 t=String(t)\r
81848 }\r
81849 var e=this._items[t];\r
81850 return e&&e.control\r
81851 };\r
81852 DwtForm.prototype.isRelevant=function(e){\r
81853 return this.isVisible(e)&&this.isEnabled(e)\r
81854 };\r
81855 DwtForm.prototype.getTabGroupMember=function(){\r
81856 return this._tabGroup\r
81857 };\r
81858 DwtForm.prototype.setLabel=function(o,e){\r
81859 var t=this._items[o];\r
81860 if(!t){\r
81861 return\r
81862 }\r
81863 if(e==this.getLabel(o)){\r
81864 return\r
81865 }\r
81866 var a=t.control;\r
81867 if(!a){\r
81868 return\r
81869 }\r
81870 if(a.setLabel){\r
81871 a.setLabel(e);\r
81872 return\r
81873 }\r
81874 if(a.setText){\r
81875 a.setText(e);\r
81876 return\r
81877 }};\r
81878 DwtForm.prototype.getLabel=function(a){\r
81879 var e=this._items[a];\r
81880 var t=e&&e.control;\r
81881 if(t){\r
81882 if(t.getLabel){\r
81883 return t.getLabel()\r
81884 }\r
81885 if(t.getText){\r
81886 return t.getText()\r
81887 }}\r
81888 return""\r
81889 };\r
81890 DwtForm.prototype.setVisible=function(n,o){\r
81891 if(arguments.length==1){\r
81892 DwtComposite.prototype.setVisible.call(this,arguments[0]);\r
81893 return\r
81894 }\r
81895 var t=this._items[n];\r
81896 var a=t&&t.control;\r
81897 if(!a){\r
81898 return\r
81899 }\r
81900 if(a.setVisible){\r
81901 a.setVisible(o)\r
81902 }else{\r
81903 Dwt.setVisible(a,o)\r
81904 }\r
81905 var e=document.getElementById([this._htmlElId,n,"row"].join("_"));\r
81906 if(e){\r
81907 Dwt.setVisible(e,o)\r
81908 }};\r
81909 DwtForm.prototype.isVisible=function(a){\r
81910 if(arguments.length==0){\r
81911 return DwtComposite.prototype.isVisible.call(this)\r
81912 }\r
81913 var e=this._items[a];\r
81914 var t=e&&e.control;\r
81915 if(!t){\r
81916 return false\r
81917 }\r
81918 if(t.getVisible){\r
81919 return t.getVisible()\r
81920 }\r
81921 if(t.isVisible){\r
81922 return t.isVisible()\r
81923 }\r
81924 return Dwt.getVisible(t)\r
81925 };\r
81926 DwtForm.prototype.setEnabled=function(o,e){\r
81927 if(arguments.length==1){\r
81928 DwtComposite.prototype.setEnabled.call(this,arguments[0]);\r
81929 return\r
81930 }\r
81931 var t=this._items[o];\r
81932 var a=t&&t.control;\r
81933 if(!a){\r
81934 return\r
81935 }\r
81936 if(a.setEnabled){\r
81937 a.setEnabled(e)\r
81938 }else{\r
81939 a.disabled=!e\r
81940 }};\r
81941 DwtForm.prototype.isEnabled=function(a){\r
81942 if(arguments.length==0){\r
81943 return DwtComposite.prototype.isEnabled.call(this)\r
81944 }\r
81945 var e=this._items[a];\r
81946 var t=e&&e.control;\r
81947 if(!t){\r
81948 return false\r
81949 }\r
81950 if(t.isEnabled){\r
81951 return t.isEnabled()\r
81952 }\r
81953 if(t.getEnabled){\r
81954 return t.getEnabled()\r
81955 }\r
81956 return !t.disabled\r
81957 };\r
81958 DwtForm.prototype.setValid=function(t,e){\r
81959 if(typeof t=="boolean"){\r
81960 e=arguments[0];\r
81961 for(t in this._items){\r
81962 this.setValid(t,e)\r
81963 }\r
81964 return\r
81965 }\r
81966 if(e){\r
81967 delete this._invalid[t]\r
81968 }else{\r
81969 this._invalid[t]=true\r
81970 }};\r
81971 DwtForm.prototype.isValid=function(e){\r
81972 if(arguments.length==0){\r
81973 for(var e in this._invalid){\r
81974 return false\r
81975 }\r
81976 return true\r
81977 }\r
81978 return !(e in this._invalid)\r
81979 };\r
81980 DwtForm.prototype.getInvalidItems=function(){\r
81981 return AjxUtil.keys(this._invalid)\r
81982 };\r
81983 DwtForm.prototype.setDirty=function(o,t,e){\r
81984 if(typeof o=="boolean"){\r
81985 t=arguments[0];\r
81986 for(o in this._items){\r
81987 this.setDirty(o,t,true)\r
81988 }\r
81989 if(!e&&this._ondirty){\r
81990 this._call(this._ondirty,["*"])\r
81991 }\r
81992 return\r
81993 }\r
81994 if(t){\r
81995 this._dirty[o]=true\r
81996 }else{\r
81997 delete this._dirty[o]\r
81998 }\r
81999 if(!e&&this._ondirty){\r
82000 var a=this._items[o];\r
82001 if(!a.ignore||!this._call(a.ignore)){\r
82002 this._call(this._ondirty,[o])\r
82003 }}};\r
82004 DwtForm.prototype.isDirty=function(t){\r
82005 if(arguments.length==0){\r
82006 for(var t in this._dirty){\r
82007 var e=this._items[t];\r
82008 if(e.ignore&&this._call(e.ignore)){\r
82009 continue\r
82010 }\r
82011 return true\r
82012 }\r
82013 return false\r
82014 }\r
82015 var e=this._items[t];\r
82016 return e.ignore&&this._call(e.ignore)?false:t in this._dirty\r
82017 };\r
82018 DwtForm.prototype.getDirtyItems=function(){\r
82019 DwtForm.__acceptDirtyItem.form=this;\r
82020 return AjxUtil.keys(this._dirty,DwtForm.__acceptDirtyItem)\r
82021 };\r
82022 DwtForm.__acceptDirtyItem=function(a){\r
82023 var t=arguments.callee.form;\r
82024 var e=t._items[a];\r
82025 return !e.ignore||!t._call(e.ignore)\r
82026 };\r
82027 DwtForm.prototype.setIgnore=function(t,e){\r
82028 if(typeof t=="boolean"){\r
82029 this._ignore={};\r
82030 return\r
82031 }\r
82032 if(e){\r
82033 this._ignore[t]=true;\r
82034 return\r
82035 }\r
82036 delete this._ignore[t]\r
82037 };\r
82038 DwtForm.prototype.isIgnore=function(e){\r
82039 return e in this._ignore\r
82040 };\r
82041 DwtForm.prototype.set=function(t,e){\r
82042 this.setValue(t,e,true);\r
82043 this.update()\r
82044 };\r
82045 DwtForm.prototype.get=DwtForm.prototype.getValue;\r
82046 DwtForm.prototype.setModel=function(e,t){\r
82047 this._context.model=this.model=e\r
82048 };\r
82049 DwtForm.prototype.setForm=function(e){\r
82050 this._context.form=this.form=e;\r
82051 this._createHtml(e.template)\r
82052 };\r
82053 DwtForm.prototype.validate=function(o){\r
82054 if(arguments.length==0){\r
82055 this.setValid(true);\r
82056 for(var o in this._items){\r
82057 var t=this._items[o];\r
82058 try{\r
82059 this.setValid(t.validator?t.validator(this.getValue(o)):true)\r
82060 }\r
82061 catch(a){}}\r
82062 return this.isValid()\r
82063 }\r
82064 var t=this._items[o];\r
82065 if(!t){\r
82066 return true\r
82067 }\r
82068 try{\r
82069 this.setValid(t.validator?t.validator(this.getValue(o)):true)\r
82070 }\r
82071 catch(a){}\r
82072 return !(o in this._invalid)\r
82073 };\r
82074 DwtForm.prototype.reset=function(o){\r
82075 this._dirty={};\r
82076 this._ignore={};\r
82077 this._invalid={};\r
82078 for(var a in this._items){\r
82079 var t=this._items[a];\r
82080 if(t.control instanceof DwtForm){\r
82081 t.control.reset(o)\r
82082 }\r
82083 var e=this._items[a].def;\r
82084 if(!e){\r
82085 continue\r
82086 }\r
82087 this._initControl(e,o)\r
82088 }\r
82089 this.update();\r
82090 for(var a in this._items){\r
82091 var t=this._items[a];\r
82092 t.ovalue=t.value\r
82093 }\r
82094 this.setDirty(false);\r
82095 this.validate();\r
82096 if(this._onreset){\r
82097 this._call(this._onreset)\r
82098 }};\r
82099 DwtForm.prototype.update=function(){\r
82100 for(var t in this._items){\r
82101 var e=this._items[t];\r
82102 if(e.control instanceof DwtForm){\r
82103 e.control.update()\r
82104 }\r
82105 if(e.getter){\r
82106 this.setValue(t,this._call(e.getter))\r
82107 }}\r
82108 for(var t in this._items){\r
82109 var e=this._items[t];\r
82110 if(e.visible){\r
82111 this.setVisible(t,Boolean(this._call(e.visible)))\r
82112 }\r
82113 if(e.enabled){\r
82114 this.setEnabled(t,Boolean(this._call(e.enabled)))\r
82115 }\r
82116 if(e.ignore){\r
82117 this.setIgnore(t,Boolean(this._call(e.ignore)))\r
82118 }}\r
82119 if(this._onupdate){\r
82120 this._call(this._onupdate)\r
82121 }};\r
82122 DwtForm.prototype._setModelValue=function(o,a){\r
82123 var t=this._items[o];\r
82124 t.value=t.setter?this._call(t.setter,[a]):a;\r
82125 var e=!Boolean(this._call(t.equals,[t.value,t.ovalue]));\r
82126 this.setDirty(o,e);\r
82127 this.validate(o);\r
82128 return e\r
82129 };\r
82130 DwtForm.prototype._setControlValue=function(a,e){\r
82131 var t=this._items[a].control;\r
82132 if(t){\r
82133 if(t instanceof DwtCheckbox||t instanceof DwtRadioButton){\r
82134 t.setSelected(e);\r
82135 return\r
82136 }\r
82137 if(t instanceof DwtMenuItem&&t.isStyle(DwtMenuItem.CHECK_STYLE)){\r
82138 t.setChecked(e,true);\r
82139 return\r
82140 }\r
82141 if(t.setSelectedValue){\r
82142 t.setSelectedValue(e);\r
82143 return\r
82144 }\r
82145 if(t.setValue){\r
82146 t.setValue(e);\r
82147 return\r
82148 }\r
82149 if(t.setText&&!(t instanceof DwtButton)){\r
82150 t.setText(e);\r
82151 return\r
82152 }\r
82153 if(!(t instanceof DwtControl)){\r
82154 if(t.type=="checkbox"||t=="radio"){\r
82155 t.checked=e\r
82156 }else{\r
82157 t.value=e\r
82158 }\r
82159 return\r
82160 }}};\r
82161 DwtForm.prototype._getControlValue=function(t){\r
82162 var e=this._items[t].control;\r
82163 if(e){\r
82164 if(e instanceof DwtCheckbox||e instanceof DwtRadioButton){\r
82165 return e.isSelected()\r
82166 }\r
82167 if(e.getSelectedValue){\r
82168 return e.getSelectedValue()\r
82169 }\r
82170 if(e.getValue){\r
82171 return e.getValue()\r
82172 }\r
82173 if(e.getText&&!(e instanceof DwtButton)){\r
82174 return e.getText()\r
82175 }\r
82176 if(!(e instanceof DwtControl)){\r
82177 if(e.type=="checkbox"||e=="radio"){\r
82178 return e.checked\r
82179 }\r
82180 return e.value\r
82181 }}};\r
82182 DwtForm.prototype._deleteItem=function(e){\r
82183 delete this._items[e];\r
82184 delete this._dirty[e];\r
82185 delete this._invalid[e];\r
82186 delete this._ignore[e]\r
82187 };\r
82188 DwtForm.prototype._call=function(t,e){\r
82189 if(t){\r
82190 if(e){\r
82191 return t.apply(this,e)\r
82192 }\r
82193 return t.call(this)\r
82194 }};\r
82195 DwtForm.prototype._createHtml=function(e){\r
82196 this._createHtmlFromTemplate(e||this.TEMPLATE,{\r
82197 id:this._htmlElId}\r
82198 )\r
82199 };\r
82200 DwtForm.prototype._createHtmlFromTemplate=function(t,s){\r
82201 DwtComposite.prototype._createHtmlFromTemplate.apply(this,arguments);\r
82202 var a=[];\r
82203 this._items={};\r
82204 this._tabGroup.removeAllMembers();\r
82205 this._onupdate=null;\r
82206 this._onreset=null;\r
82207 this._ondirty=null;\r
82208 var e=this.form;\r
82209 if(e&&e.items){\r
82210 this._registerControls(e.items,null,a);\r
82211 this._onupdate=DwtForm.__makeFunc(e.onupdate);\r
82212 this._onreset=DwtForm.__makeFunc(e.onreset);\r
82213 this._ondirty=DwtForm.__makeFunc(e.ondirty)\r
82214 }\r
82215 var c=this.getHtmlElement().getElementsByTagName("A");\r
82216 for(var r=0;\r
82217 r<c.length;\r
82218 r++){\r
82219 var h=c[r];\r
82220 if(!h.href||h.getAttribute("notab")=="true"){\r
82221 continue\r
82222 }\r
82223 if(this._items[h.id]){\r
82224 continue\r
82225 }\r
82226 a.push({\r
82227 tabindex:h.getAttribute("tabindex")||Number.MAX_VALUE,control:h}\r
82228 )\r
82229 }\r
82230 a.sort(DwtForm.__byTabIndex);\r
82231 for(var r=0;\r
82232 r<a.length;\r
82233 r++){\r
82234 var n=a[r].control;\r
82235 var o=(n.getTabGroupMember&&n.getTabGroupMember())||n;\r
82236 this._tabGroup.addMember(o)\r
82237 }};\r
82238 DwtForm.prototype._registerControls=function(a,n,e,s,o,r){\r
82239 for(var t=0;\r
82240 t<a.length;\r
82241 t++){\r
82242 this._registerControl(a[t],n,e,s,o,r)\r
82243 }};\r
82244 DwtForm.prototype._registerControl=function(d,t,o,n,p,u){\r
82245 var e=d.id||[this._htmlElId,Dwt.getNextId()].join("_");\r
82246 var w=this._items[e]={\r
82247 id:e,def:d,parentDef:t,equals:DwtForm.__makeFunc(d.equals)||DwtForm.__equals,getter:DwtForm.__makeGetter(d),setter:DwtForm.__makeSetter(d),value:d.value,visible:DwtForm.__makeFunc(d.visible),enabled:DwtForm.__makeFunc(d.enabled),validator:DwtForm.__makeFunc(d.validator),ignore:DwtForm.__makeFunc(d.ignore),control:d.control};\r
82248 if(d.aka){\r
82249 this._items[e].aka=d.aka;\r
82250 this._items[d.aka]=w\r
82251 }\r
82252 var c=w.control;\r
82253 if(c){\r
82254 return c\r
82255 }\r
82256 p=p||this;\r
82257 var m=d.type=d.type||u;\r
82258 var h=document.getElementById([p._htmlElId,e].join("_"));\r
82259 if(Dwt.instanceOf(m,"DwtRadioButtonGroup")){\r
82260 c=new window[m]({}\r
82261 );\r
82262 w.control=c;\r
82263 var g={\r
82264 name:[p._htmlElId,e].join("_"),value:d.value};\r
82265 if(d.items){\r
82266 for(var r=0;\r
82267 r<d.items.length;\r
82268 r++){\r
82269 var s=d.items[r];\r
82270 var f=s.checked||s.value==d.value;\r
82271 var a=this._registerControl(s,d,o,g,p,"DwtRadioButton");\r
82272 a.setValue(s.value);\r
82273 this._items[s.id].value=f;\r
82274 c.addRadio(a.getInputElement().id,a,f);\r
82275 var y=DwtForm.__makeFunc(s.onclick||d.onclick);\r
82276 a.addSelectionListener(new AjxListener(this,this._radio2group2model,[s.id,e,y]));\r
82277 DwtForm.__hack_fixRadioButtonHandler(a)\r
82278 }}}else{\r
82279 if(m){\r
82280 if(Dwt.instanceOf(m,"DwtInputField")){\r
82281 w.value=w.value||""\r
82282 }\r
82283 if(Dwt.instanceOf(m,"DwtFormRows")){\r
82284 w.equals=DwtFormRows.__equals\r
82285 }\r
82286 if(h){\r
82287 c=w.control=this._createControl(d,t,o,n,p,u)\r
82288 }}else{\r
82289 if(h){\r
82290 this._attachElementHandlers(d,t,o,p,h);\r
82291 c=w.control=h;\r
82292 if(d.items){\r
82293 this._registerControls(d.items,d,o,null,p,null)\r
82294 }}}}\r
82295 if(h&&c instanceof DwtControl){\r
82296 c.replaceElement(h)\r
82297 }\r
82298 if(h&&c instanceof DwtInputField){\r
82299 c.getInputElement().id+="_input"\r
82300 }\r
82301 if(d.notab==null){\r
82302 d.notab=h&&h.getAttribute("notab")=="true"\r
82303 }\r
82304 if(o&&c&&!d.notab&&!(c instanceof DwtRadioButtonGroup)){\r
82305 o.push({\r
82306 tabindex:(h&&h.getAttribute("tabindex"))||Number.MAX_VALUE,control:c}\r
82307 )\r
82308 }\r
82309 if(c instanceof DwtListView){\r
82310 w.getter=w.getter||AjxCallback.simpleClosure(this.__list_getValue,this,e);\r
82311 w.setter=w.setter||AjxCallback.simpleClosure(this.__list_setValue,this,e)\r
82312 }\r
82313 return c\r
82314 };\r
82315 DwtForm.prototype._attachElementHandlers=function(r,a,o,d,s){\r
82316 var t=r.id;\r
82317 var e=s.nodeName.toLowerCase();\r
82318 var c=s.type;\r
82319 if(c=="checkbox"||c=="radio"){\r
82320 var h;\r
82321 if(c=="radio"){\r
82322 h=s.name;\r
82323 if(!this._items[h]){\r
82324 this._items[h]={\r
82325 id:h}\r
82326 }\r
82327 if(s.checked){\r
82328 this._items[h].value=s.value\r
82329 }}\r
82330 var m=s.onclick;\r
82331 var u=DwtForm.__makeFunc(r.onclick);\r
82332 s.onclick=AjxCallback.simpleClosure(this._htmlInput_checked,this,t,h,u,m)\r
82333 }else{\r
82334 if(e=="select"){\r
82335 var n=s.onchange;\r
82336 var u=DwtForm.__makeFunc(r.onchange);\r
82337 s.onchange=AjxCallback.simpleClosure(this._htmlSelect_selectedIndex,this,t,u,n)\r
82338 }else{\r
82339 if(e=="button"||e=="a"||c=="button"||c=="reset"||c=="submit"){\r
82340 var m=s.onclick;\r
82341 var u=DwtForm.__makeFunc(r.onclick);\r
82342 s.onclick=AjxCallback.simpleClosure(this._htmlElement,this,t,u,m)\r
82343 }else{\r
82344 if(e=="textarea"||e=="input"){\r
82345 var n=s.onchange;\r
82346 var u=DwtForm.__makeFunc(r.onchange);\r
82347 s.onchange=AjxCallback.simpleClosure(this._htmlInput_value,this,t,u,n)\r
82348 }}}}\r
82349 return s\r
82350 };\r
82351 DwtForm.prototype._createControl=function(u,c,C,B,f,h){\r
82352 var x=u.id||[this._htmlElId,Dwt.getNextId()].join("_");\r
82353 var n=u.type=u.type||h;\r
82354 B=B?AjxUtil.createProxy(B):{};\r
82355 B.id=B.id||[this._htmlElId,x].join("_");\r
82356 B.parent=f||this;\r
82357 B.template=u.template||B.template;\r
82358 B.className=u.className||B.className;\r
82359 var W=Dwt.instanceOf(n,"DwtRadioButton");\r
82360 var k=Dwt.instanceOf(n,"DwtCheckbox");\r
82361 if(W||k){\r
82362 B.name=u.name||B.name;\r
82363 B.checked=u.checked!=null?u.checked:B.checked\r
82364 }\r
82365 var m=Dwt.instanceOf(n,"DwtInputField");\r
82366 if(m){\r
82367 B.type=u.password?DwtInputField.PASSWORD:null;\r
82368 B.size=u.cols;\r
82369 B.rows=u.rows\r
82370 }\r
82371 var s=Dwt.instanceOf(n,"DwtTabViewPage");\r
82372 if(s){\r
82373 B.contentTemplate=u.template;\r
82374 delete u.template\r
82375 }\r
82376 B.formItemDef=u;\r
82377 if(u.params){\r
82378 for(var q in u.params){\r
82379 B[q]=u.params[q]\r
82380 }}\r
82381 var g=new window[n](B);\r
82382 if(g instanceof DwtSelect){\r
82383 var o=u.items;\r
82384 if(o){\r
82385 for(var O=0;\r
82386 O<o.length;\r
82387 O++){\r
82388 var v=o[O];\r
82389 v.displayValue=v.label||v.value;\r
82390 g.addOption(v)\r
82391 }}\r
82392 var t=DwtForm.__makeFunc(u.onchange);\r
82393 g.addChangeListener(new AjxListener(this,this._control2model,[x,t]))\r
82394 }else{\r
82395 if(g instanceof DwtButton||g instanceof DwtMenuItem){\r
82396 if(u.label){\r
82397 g.setText(u.label)\r
82398 }\r
82399 if(u.image){\r
82400 g.setImage(u.image)\r
82401 }\r
82402 if(u.menu){\r
82403 var a=Dwt.instanceOf(u.menu.type||"DwtMenu","DwtMenu");\r
82404 var e;\r
82405 if(a){\r
82406 e=this._registerControl(u.menu,u,null,null,g,"DwtMenu")\r
82407 }else{\r
82408 e=new DwtMenu({\r
82409 parent:g}\r
82410 );\r
82411 var A=Dwt.instanceOf(u.menu.type,"DwtCalendar")?DwtMenu.CALENDAR_PICKER_STYLE:DwtMenu.GENERIC_WIDGET_STYLE;\r
82412 this._registerControl(u.menu,u,null,{\r
82413 style:A}\r
82414 ,e)\r
82415 }\r
82416 g.setMenu(e)\r
82417 }\r
82418 var T;\r
82419 if(f instanceof DwtToolBar||f instanceof DwtMenu){\r
82420 T=c.id\r
82421 }\r
82422 var t=DwtForm.__makeFunc(u.onclick||(c&&c.onclick));\r
82423 g.addSelectionListener(new AjxListener(this,this._item2parent,[x,T,t]))\r
82424 }else{\r
82425 if(g instanceof DwtCheckbox&&!(g instanceof DwtRadioButton)){\r
82426 var t=DwtForm.__makeFunc(u.onclick);\r
82427 g.addSelectionListener(new AjxListener(this,this._control2model,[x,t]))\r
82428 }else{\r
82429 if(g instanceof DwtInputField){\r
82430 var t=DwtForm.__makeFunc(u.onchange);\r
82431 var z=AjxCallback.simpleClosure(this._input2model2handler,this,x,t);\r
82432 g.setHandler(DwtEvent.ONKEYUP,z);\r
82433 g.setHint(u.hint)\r
82434 }else{\r
82435 if(g instanceof DwtListView){\r
82436 g.addSelectionListener(new AjxListener(this,this._handleListSelection,[x]))\r
82437 }else{\r
82438 if(g instanceof DwtMenu){\r
82439 if(u.items){\r
82440 var j=u.items;\r
82441 for(var O=0;\r
82442 O<j.length;\r
82443 O++){\r
82444 var w=j[O];\r
82445 if(w.type==DwtMenuItem.SEPARATOR_STYLE){\r
82446 new DwtMenuItem({\r
82447 parent:g,style:DwtMenuItem.SEPARATOR_STYLE}\r
82448 );\r
82449 continue\r
82450 }\r
82451 this._registerControl(w,u,null,null,g,"DwtMenuItem")\r
82452 }}}else{\r
82453 if(g instanceof DwtTabView){\r
82454 var d=u.items;\r
82455 if(d){\r
82456 this._registerControls(d,u,null,null,g,"DwtTabViewPage")\r
82457 }}else{\r
82458 if(g instanceof DwtTabViewPage&&f instanceof DwtTabView){\r
82459 var D=f.addTab(u.label,g);\r
82460 if(u.image){\r
82461 f.getTabButton(D).setImage(u.image)\r
82462 }\r
82463 if(u.items){\r
82464 this._registerControls(u.items,u,C,null,g)\r
82465 }}else{\r
82466 if(g instanceof DwtToolBar){\r
82467 var y=u.items;\r
82468 if(y){\r
82469 for(var O=0;\r
82470 O<y.length;\r
82471 O++){\r
82472 var r=y[O];\r
82473 if(r.type==DwtToolBar.SPACER){\r
82474 g.addSpacer(r.size);\r
82475 continue\r
82476 }\r
82477 if(r.type==DwtToolBar.SEPARATOR){\r
82478 g.addSeparator(r.className);\r
82479 continue\r
82480 }\r
82481 if(r.type==DwtToolBar.FILLER){\r
82482 g.addFiller(r.className);\r
82483 continue\r
82484 }\r
82485 this._registerControl(r,u,null,null,g,"DwtToolBarButton")\r
82486 }}}else{\r
82487 if(g instanceof DwtComposite){\r
82488 if(u.items){\r
82489 this._registerControls(u.items,u,C,null,g)\r
82490 }}}}}}}}}}}\r
82491 return g\r
82492 };\r
82493 DwtForm.prototype._initControl=function(e,o){\r
82494 var a=e.id;\r
82495 if(e.label){\r
82496 this.setLabel(a,e.label)\r
82497 }\r
82498 var t=this._items[a];\r
82499 if(o){\r
82500 t.ovalue=t.value\r
82501 }else{\r
82502 if(e.value){\r
82503 if(Dwt.instanceOf(e.type,"DwtRadioButton")){\r
82504 t.ovalue=t.value=t.control.isSelected()\r
82505 }else{\r
82506 this.setValue(a,e.value,true);\r
82507 t.ovalue=t.value\r
82508 }}else{\r
82509 t.ovalue=null\r
82510 }}\r
82511 if(typeof e.enabled=="boolean"){\r
82512 this.setEnabled(a,e.enabled)\r
82513 }\r
82514 if(typeof e.visible=="boolean"){\r
82515 this.setVisible(a,e.visible)\r
82516 }};\r
82517 DwtForm.prototype._htmlElement=function(o,a,t,e){\r
82518 if(a){\r
82519 this._call(a,[o])\r
82520 }\r
82521 if(t){\r
82522 t(e)\r
82523 }};\r
82524 DwtForm.prototype._htmlInput_checked=function(r,s,a,t,e){\r
82525 var n=this.getControl(r);\r
82526 var o=n.checked;\r
82527 this._setModelValue(r,o);\r
82528 if(s&&o){\r
82529 this._setModelValue(s,n.value)\r
82530 }\r
82531 this.update();\r
82532 this._htmlElement(r,a,t,e)\r
82533 };\r
82534 DwtForm.prototype._htmlInput_value=function(o,a,t,e){\r
82535 this._setModelValue(o,this.getControl(o).value);\r
82536 this.update();\r
82537 this._htmlElement(o,a,t,e)\r
82538 };\r
82539 DwtForm.prototype._htmlSelect_selectedIndex=function(n,o,a,t){\r
82540 var e=this.getControl(n);\r
82541 this._setModelValue(n,e.options[e.selectedIndex].value);\r
82542 this.update();\r
82543 this._htmlElement(n,o,a,t)\r
82544 };\r
82545 DwtForm.prototype._control2model=function(t,e){\r
82546 this._setModelValue(t,this._getControlValue(t));\r
82547 this.update();\r
82548 if(e){\r
82549 this._call(e,[t])\r
82550 }};\r
82551 DwtForm.prototype._radio2group2model=function(e,t,a){\r
82552 this._setModelValue(t,this.getControl(e).getValue());\r
82553 this._setModelValue(e,this._getControlValue(e));\r
82554 this.update();\r
82555 if(a){\r
82556 this._call(a,[e])\r
82557 }};\r
82558 DwtForm.prototype._input2model2handler=function(t,e){\r
82559 this._setModelValue(t,this._getControlValue(t));\r
82560 this.update();\r
82561 if(e){\r
82562 this._call(e,[t])\r
82563 }};\r
82564 DwtForm.prototype._item2parent=function(o,n,t){\r
82565 var a=this.getControl(o);\r
82566 var e=this._items[o].def;\r
82567 if(a instanceof DwtButtonColorPicker||(e.menu&&!e.onclick)){\r
82568 a._toggleMenu()\r
82569 }else{\r
82570 if(n){\r
82571 this._setModelValue(n,this._getControlValue(o)||o);\r
82572 this.update()\r
82573 }}\r
82574 if(t){\r
82575 this._call(t,[o])\r
82576 }};\r
82577 DwtForm.prototype._handleListSelection=function(t,e){\r
82578 this.update()\r
82579 };\r
82580 DwtForm.prototype.__list_getValue=function(e){\r
82581 return this.getControl(e).getSelection()\r
82582 };\r
82583 DwtForm.prototype.__list_setValue=function(t,e){\r
82584 this.getControl(t).setSelection(e)\r
82585 };\r
82586 DwtForm.__makeGetter=function(s){\r
82587 var t=s.getter;\r
82588 if(t){\r
82589 return DwtForm.__makeFunc(t)\r
82590 }\r
82591 var n=s.ref;\r
82592 if(!n){\r
82593 return null\r
82594 }\r
82595 var r=n.split(".");\r
82596 var e=["var context = this.model;",];\r
82597 for(var o=0;\r
82598 o<r.length;\r
82599 o++){\r
82600 var a=r[o];\r
82601 var h=DwtForm.__makeFuncName(a);\r
82602 if(o==r.length-1){\r
82603 break\r
82604 }\r
82605 e.push("context = context && (context.",h," ? context.",h,"() : context.",a,");")\r
82606 }\r
82607 e.push("var value = context ? (context.",h," ? context.",h,"() : context.",a,") : this._items.",a,".value;","return value !== undefined ? value : defaultValue;");\r
82608 return new Function("defaultValue",e.join(""))\r
82609 };\r
82610 DwtForm.__makeSetter=function(c){\r
82611 var o=c.setter;\r
82612 if(o){\r
82613 return DwtForm.__makeFunc(o)\r
82614 }\r
82615 var a=c.ref;\r
82616 if(!a){\r
82617 return null\r
82618 }\r
82619 var n=a.split(".");\r
82620 var h=["var context = this.model;",];\r
82621 for(var r=0;\r
82622 r<n.length;\r
82623 r++){\r
82624 var s=r==n.length-1;\r
82625 var e=n[r];\r
82626 var t=DwtForm.__makeFuncName(e,s?"set":"get");\r
82627 if(s){\r
82628 break\r
82629 }\r
82630 h.push("context = context && (context.",t," ? context.",t,"() : context.",e,");")\r
82631 }\r
82632 h.push("if (context) {","if (context.",t,") {","context.",t,"(value);","}","else {","context.",e," = value;","}","}");\r
82633 return new Function("value",h.join("\n"))\r
82634 };\r
82635 DwtForm.__makeFuncName=function(e,t){\r
82636 return[t||"get",e.substr(0,1).toUpperCase(),e.substr(1)].join("")\r
82637 };\r
82638 DwtForm.__makeFunc=function(t){\r
82639 if(t==null){\r
82640 return null\r
82641 }\r
82642 if(typeof t=="function"&&!(t instanceof RegExp)){\r
82643 return t\r
82644 }\r
82645 var e=["with (this._context) {","return (",t,");","}"].join("");\r
82646 return new Function(e)\r
82647 };\r
82648 DwtForm.__equals=function(t,e){\r
82649 return t==e\r
82650 };\r
82651 DwtForm.__byTabIndex=function(t,e){\r
82652 return t.tabindex-e.tabindex\r
82653 };\r
82654 DwtForm.__hack_fixRadioButtonHandler=function(t){\r
82655 var e=[t.getInputElement().onclick,DwtCheckbox.__handleClick];\r
82656 var a=function(o){\r
82657 for(var n=0;\r
82658 n<e.length;\r
82659 n++){\r
82660 var s=e[n];\r
82661 if(s){\r
82662 s(o)\r
82663 }}};\r
82664 Dwt.setHandler(t.getInputElement(),DwtEvent.ONCLICK,a)\r
82665 };\r
82666 DwtFormRows=function(a){\r
82667 if(arguments.length==0){\r
82668 return\r
82669 }\r
82670 this._itemDef=a.formItemDef||{};\r
82671 a.className=a.className||"DwtFormRows";\r
82672 DwtForm.call(this,{\r
82673 id:a.id,parent:a.parent,form:{}\r
82674 ,template:this._itemDef.template}\r
82675 );\r
82676 this._rowsTabGroup=new DwtTabGroup(this._htmlElId);\r
82677 this._rowDef=this._itemDef.rowitem||{};\r
82678 this._equals=DwtForm.__makeFunc(this._rowDef.equals)||DwtForm.__equals;\r
82679 this._rowCount=0;\r
82680 this._minRows=this._itemDef.minrows||1;\r
82681 this._maxRows=this._itemDef.maxrows||Number.MAX_VALUE;\r
82682 if(this._itemDef.rowtemplate){\r
82683 this.ROW_TEMPLATE=this._itemDef.rowtemplate\r
82684 }\r
82685 var t=this._itemDef.items||[];\r
82686 for(var e=0;\r
82687 e<t.length;\r
82688 e++){\r
82689 this.addRow(t[e])\r
82690 }\r
82691 for(;\r
82692 e<this._minRows;\r
82693 e++){\r
82694 this.addRow()\r
82695 }\r
82696 this._onaddrow=DwtForm.__makeFunc(this._itemDef.onaddrow);\r
82697 this._onremoverow=DwtForm.__makeFunc(this._itemDef.onremoverow)\r
82698 };\r
82699 DwtFormRows.prototype=new DwtForm;\r
82700 DwtFormRows.prototype.constructor=DwtFormRows;\r
82701 DwtFormRows.prototype.toString=function(){\r
82702 return"DwtFormRows"\r
82703 };\r
82704 DwtFormRows.prototype.TEMPLATE="dwt.Widgets#DwtFormRows";\r
82705 DwtFormRows.prototype.ROW_TEMPLATE="dwt.Widgets#DwtFormRow";\r
82706 DwtFormRows.prototype.getTabGroupMember=function(){\r
82707 return this._rowsTabGroup\r
82708 };\r
82709 DwtFormRows.prototype.setValue=function(o){\r
82710 if(arguments.length>1){\r
82711 DwtForm.prototype.setValue.apply(this,arguments);\r
82712 return\r
82713 }\r
82714 var a=Math.max(o.length,this._minRows);\r
82715 for(var t=this._rowCount;\r
82716 t>a;\r
82717 t--){\r
82718 this.removeRow(t-1)\r
82719 }\r
82720 var e=Math.min(o.length,this._maxRows);\r
82721 for(var t=this._rowCount;\r
82722 t<e;\r
82723 t++){\r
82724 this.addRow()\r
82725 }\r
82726 for(var t=0;\r
82727 t<e;\r
82728 t++){\r
82729 this.setValue(String(t),o[t],true)\r
82730 }\r
82731 for(var t=o.length;\r
82732 t<this._rowCount;\r
82733 t++){\r
82734 this.setValue(String(t),null,true)\r
82735 }};\r
82736 DwtFormRows.prototype.getValue=function(){\r
82737 if(arguments.length>0){\r
82738 return DwtForm.prototype.getValue.apply(this,arguments)\r
82739 }\r
82740 var t=new Array(this._rowCount);\r
82741 for(var e=0;\r
82742 e<this._rowCount;\r
82743 e++){\r
82744 t[e]=this.getValue(String(e))\r
82745 }\r
82746 return t\r
82747 };\r
82748 DwtFormRows.prototype.getRowCount=function(){\r
82749 return this._rowCount\r
82750 };\r
82751 DwtFormRows.prototype.addRow=function(n,o){\r
82752 if(this._rowCount>=this._maxRows){\r
82753 return\r
82754 }\r
82755 n=n||(this._rowDef&&AjxUtil.createProxy(this._rowDef));\r
82756 if(!n){\r
82757 return\r
82758 }\r
82759 if(o==null){\r
82760 o=this._rowCount\r
82761 }\r
82762 for(var u=this._rowCount-1;\r
82763 u>=o;\r
82764 u--){\r
82765 var v=u,m=u+1;\r
82766 var f=this._items[v];\r
82767 f.aka=String(m);\r
82768 delete this._items[v];\r
82769 this._items[f.aka]=f;\r
82770 this._setControlIds(f.id,f.aka)\r
82771 }\r
82772 n.id=n.id||Dwt.getNextId();\r
82773 n.aka=String(o);\r
82774 this._rowCount++;\r
82775 var k={\r
82776 id:[this.getHTMLElId(),n.id].join("_")};\r
82777 var g=AjxTemplate.expand(this.ROW_TEMPLATE,k);\r
82778 var e=this._rowsEl;\r
82779 e.appendChild(Dwt.toDocumentFragment(g,k.id+"_row"));\r
82780 var y=e.lastChild;\r
82781 if(o!=this._rowCount-1){\r
82782 e.insertBefore(y,e.childNodes[o])\r
82783 }\r
82784 var w=[];\r
82785 var s=this._registerControl(n,null,w);\r
82786 var t=this._itemDef.additem?AjxUtil.createProxy(this._itemDef.additem):{\r
82787 image:"Add"};\r
82788 t.id=t.id||n.id+"_add";\r
82789 t.visible="this.getRowCount() < this.getMaxRows()";\r
82790 t.ignore=true;\r
82791 var d=this._registerControl(t,null,w,null,null,"DwtButton");\r
82792 if(!t.onclick){\r
82793 d.addSelectionListener(new AjxListener(this,this._handleAddRow,[n.id]))\r
82794 }\r
82795 var h=this._itemDef.removeitem?AjxUtil.createProxy(this._itemDef.removeitem):{\r
82796 image:"Remove"};\r
82797 h.id=h.id||n.id+"_remove";\r
82798 h.visible="this.getRowCount() > this.getMinRows()";\r
82799 h.ignore=true;\r
82800 var p=this._registerControl(h,null,w,null,null,"DwtButton");\r
82801 if(!h.onclick){\r
82802 p.addSelectionListener(new AjxListener(this,this._handleRemoveRow,[n.id]))\r
82803 }\r
82804 var f=this._items[n.id];\r
82805 f._rowEl=y;\r
82806 f._addId=t.id;\r
82807 f._removeId=h.id;\r
82808 this._setControlIds(f.id,o);\r
82809 var a=new DwtTabGroup(n.id);\r
82810 w.sort(DwtForm.__byTabIndex);\r
82811 for(var u=0;\r
82812 u<w.length;\r
82813 u++){\r
82814 var s=w[u].control;\r
82815 a.addMember(s.getTabGroupMember()||s)\r
82816 }\r
82817 if(o==this._rowCount-1){\r
82818 this._rowsTabGroup.addMember(a)\r
82819 }else{\r
82820 var r=this._items[String(o+1)];\r
82821 var c=this._rowsTabGroup.getTabGroupMemberByName(r.id);\r
82822 this._rowsTabGroup.addMemberBefore(a,c)\r
82823 }\r
82824 this.update();\r
82825 if(this._onaddrow){\r
82826 this._call(this._onaddrow,[o])\r
82827 }\r
82828 return s\r
82829 };\r
82830 DwtFormRows.prototype.removeRow=function(r){\r
82831 if(this._rowCount<=this._minRows){\r
82832 return\r
82833 }\r
82834 var d=this._items[r];\r
82835 if(d.control instanceof DwtControl){\r
82836 this.removeChild(d.control)\r
82837 }\r
82838 delete this._items[d.aka];\r
82839 this._deleteItem(d.id);\r
82840 var h=this._items[d._addId];\r
82841 if(h){\r
82842 this.removeChild(h.control);\r
82843 this._deleteItem(h.id)\r
82844 }\r
82845 var c=this._items[d._removeId];\r
82846 if(c){\r
82847 this.removeChild(c.control);\r
82848 this._deleteItem(c.id)\r
82849 }\r
82850 var s=Number(d.aka);\r
82851 for(var a=s+1;\r
82852 a<this._rowCount;\r
82853 a++){\r
82854 var n=a,t=a-1;\r
82855 this._items[t]=this._items[n];\r
82856 this._items[t].aka=String(t);\r
82857 this._setControlIds(this._items[t].id,this._items[t].aka)\r
82858 }\r
82859 this._deleteItem(String(--this._rowCount));\r
82860 var e=d._rowEl;\r
82861 e.parentNode.removeChild(e);\r
82862 delete d._rowEl;\r
82863 var o=this._rowsTabGroup.getTabGroupMemberByName(d.id);\r
82864 this._rowsTabGroup.removeMember(o);\r
82865 this.update();\r
82866 if(this._onremoverow){\r
82867 this._call(this._onremoverow,[Number(d.aka)])\r
82868 }};\r
82869 DwtFormRows.prototype.getMinRows=function(){\r
82870 return this._minRows\r
82871 };\r
82872 DwtFormRows.prototype.getMaxRows=function(){\r
82873 return this._maxRows\r
82874 };\r
82875 DwtFormRows.prototype.getRowCount=function(){\r
82876 return this._rowCount\r
82877 };\r
82878 DwtFormRows.prototype.getIndexForRowId=function(a){\r
82879 var t=this._rowsEl.childNodes;\r
82880 for(var e=0;\r
82881 e<t.length;\r
82882 e++){\r
82883 if(t[e].id==[this._htmlElId,a,"row"].join("_")){\r
82884 return e\r
82885 }}\r
82886 return -1\r
82887 };\r
82888 DwtFormRows.__equals=function(t,e){\r
82889 if(t===e){\r
82890 return true\r
82891 }\r
82892 if(!t||!e||t.length!=e.length){\r
82893 return false\r
82894 }\r
82895 for(var o=0;\r
82896 o<t.length;\r
82897 o++){\r
82898 if(!this._call(this._equals,[t[o],e[o]])){\r
82899 return false\r
82900 }}\r
82901 return true\r
82902 };\r
82903 DwtFormRows.prototype._setControlIds=function(n,e){\r
82904 var s=[this.getHTMLElId(),e].join("_");\r
82905 var o=this._items[n];\r
82906 this._setControlId(o&&o.control,s);\r
82907 var t=this._items[o._addId];\r
82908 this._setControlId(t&&t.control,s+"_add");\r
82909 var a=this._items[o._removeId];\r
82910 this._setControlId(a&&a.control,s+"_remove")\r
82911 };\r
82912 DwtFormRows.prototype._setControlId=function(e,t){\r
82913 if(!e){\r
82914 return\r
82915 }\r
82916 if(e instanceof DwtControl){\r
82917 e.setHtmlElementId(t)\r
82918 }else{\r
82919 e.id=t\r
82920 }};\r
82921 DwtFormRows.prototype._handleAddRow=function(t){\r
82922 var e=this.getIndexForRowId(t)+1;\r
82923 this.addRow(null,e)\r
82924 };\r
82925 DwtFormRows.prototype._handleRemoveRow=function(e){\r
82926 this.removeRow(e)\r
82927 };\r
82928 DwtFormRows.prototype._setModelValue=function(t,e){\r
82929 if(DwtForm.prototype._setModelValue.apply(this,arguments)){\r
82930 this.parent.setDirty(this._itemDef.id,true)\r
82931 }};\r
82932 DwtFormRows.prototype._createHtmlFromTemplate=function(e,t){\r
82933 DwtForm.prototype._createHtmlFromTemplate.apply(this,arguments);\r
82934 this._rowsEl=document.getElementById(this._htmlElId+"_rows")\r
82935 }\r
82936 }\r
82937 if(AjxPackage.define("zimbra.csfe.ZmBatchCommand")){\r
82938 ZmBatchCommand=function(e,t,a){\r
82939 this._onError=(e===false)?ZmBatchCommand.STOP:ZmBatchCommand.CONTINUE;\r
82940 this._accountName=t;\r
82941 this._useJson=a;\r
82942 this.curId=0;\r
82943 this._cmds=[];\r
82944 this._requests=[];\r
82945 this._respCallbacks=[];\r
82946 this._errorCallbacks=[]\r
82947 };\r
82948 ZmBatchCommand.prototype.toString=function(){\r
82949 return"ZmBatchCommand"\r
82950 };\r
82951 ZmBatchCommand.prototype._sensitive=false;\r
82952 ZmBatchCommand.STOP="stop";\r
82953 ZmBatchCommand.CONTINUE="continue";\r
82954 ZmBatchCommand.prototype.setSensitive=function(e){\r
82955 this._sensitive=this._sensitive||e\r
82956 };\r
82957 ZmBatchCommand.prototype.isSensitive=function(){\r
82958 return this._sensitive\r
82959 };\r
82960 ZmBatchCommand.prototype.add=function(e){\r
82961 this._cmds.push(e)\r
82962 };\r
82963 ZmBatchCommand.prototype.size=function(){\r
82964 return this.curId\r
82965 };\r
82966 ZmBatchCommand.prototype.run=function(m,r){\r
82967 for(var s=0;\r
82968 s<this._cmds.length;\r
82969 s++){\r
82970 var a=this._cmds[s];\r
82971 a.run(this);\r
82972 this.curId++\r
82973 }\r
82974 var o={\r
82975 sensitive:this._sensitive,asyncMode:true,callback:new AjxCallback(this,this._handleResponseRun,[m,r]),errorCallback:r,accountName:this._accountName};\r
82976 if(this._useJson){\r
82977 var f={\r
82978 BatchRequest:{\r
82979 _jsns:"urn:zimbra",onerror:this._onError}};\r
82980 var e=f.BatchRequest;\r
82981 var p=this.size();\r
82982 if(p&&this._requests.length){\r
82983 for(var s=0;\r
82984 s<p;\r
82985 s++){\r
82986 var n=this._requests[s];\r
82987 n.requestId=s;\r
82988 var u=ZmCsfeCommand.getMethodName(n);\r
82989 if(!e[u]){\r
82990 e[u]=[]\r
82991 }\r
82992 n[u].requestId=s;\r
82993 e[u].push(n[u])\r
82994 }\r
82995 o.jsonObj=f\r
82996 }}else{\r
82997 var c=AjxSoapDoc.create("BatchRequest","urn:zimbra");\r
82998 c.setMethodAttribute("onerror",this._onError);\r
82999 var p=this.size();\r
83000 if(p>0){\r
83001 for(var s=0;\r
83002 s<p;\r
83003 s++){\r
83004 var d=this._requests[s];\r
83005 var h=d.getMethod();\r
83006 h.setAttribute("requestId",s);\r
83007 var t=c.adoptNode(h);\r
83008 c.getMethod().appendChild(t)\r
83009 }\r
83010 o.soapDoc=c\r
83011 }}\r
83012 if(o.jsonObj||o.soapDoc){\r
83013 appCtxt.getAppController().sendRequest(o)\r
83014 }else{\r
83015 if(m){\r
83016 m.run()\r
83017 }}};\r
83018 ZmBatchCommand.prototype._handleResponseRun=function(c,n,u){\r
83019 var h=u.getResponse();\r
83020 if(!h.BatchResponse){\r
83021 return\r
83022 }\r
83023 var s=[];\r
83024 for(var e in h.BatchResponse){\r
83025 if(e.match(/^_/)){\r
83026 continue\r
83027 }\r
83028 var d=h.BatchResponse[e];\r
83029 for(var o=0;\r
83030 o<d.length;\r
83031 o++){\r
83032 s[d[o].requestId]={\r
83033 method:e,resp:d[o]}\r
83034 }}\r
83035 var t=[];\r
83036 for(var o=0;\r
83037 o<s.length;\r
83038 o++){\r
83039 var a=s[o];\r
83040 try{\r
83041 this._processResponse(a.method,a.resp)\r
83042 }\r
83043 catch(r){\r
83044 t.push(r);\r
83045 if(this._onError==ZmBatchCommand.STOP){\r
83046 break\r
83047 }}}\r
83048 if(t.length>0&&n){\r
83049 n.run.apply(n,t)\r
83050 }else{\r
83051 if(c){\r
83052 c.run(u)\r
83053 }}};\r
83054 ZmBatchCommand.prototype.addRequestParams=function(t,a,e){\r
83055 this._requests[this.curId]=t;\r
83056 this._respCallbacks[this.curId]=a;\r
83057 this._errorCallbacks[this.curId]=e\r
83058 };\r
83059 ZmBatchCommand.prototype.addNewRequestParams=function(t,a,e){\r
83060 this.addRequestParams(t,a,e);\r
83061 this.curId++\r
83062 };\r
83063 ZmBatchCommand.prototype._processResponse=function(r,n){\r
83064 var s=n.requestId;\r
83065 if(r=="Fault"){\r
83066 var t=ZmCsfeCommand.faultToEx(n,"ZmBatchCommand.prototype.run");\r
83067 if(this._errorCallbacks[s]){\r
83068 var o=this._errorCallbacks[s].run(t);\r
83069 if(!o){\r
83070 appCtxt.getAppController()._handleException(t)\r
83071 }}\r
83072 throw t\r
83073 }\r
83074 if(this._respCallbacks[s]){\r
83075 var a={};\r
83076 a[r]=n;\r
83077 var e=new ZmCsfeResult(a);\r
83078 this._respCallbacks[s].run(e,n)\r
83079 }}\r
83080 }\r
83081 if(AjxPackage.define("zimbra.csfe.ZmCsfeCommand")){\r
83082 ZmCsfeCommand=function(){};\r
83083 ZmCsfeCommand.prototype.toString=function(){\r
83084 return"ZmCsfeCommand"\r
83085 };\r
83086 ZmCsfeCommand._COOKIE_NAME="ZM_AUTH_TOKEN";\r
83087 ZmCsfeCommand.serverUri=null;\r
83088 ZmCsfeCommand._sessionId=null;\r
83089 ZmCsfeCommand.REAUTH="reauth";\r
83090 ZmCsfeCommand.RETRY="retry";\r
83091 ZmCsfeCommand.getAuthToken=function(){\r
83092 return AjxCookie.getCookie(document,ZmCsfeCommand._COOKIE_NAME)\r
83093 };\r
83094 ZmCsfeCommand.setCookieName=function(e){\r
83095 ZmCsfeCommand._COOKIE_NAME=e\r
83096 };\r
83097 ZmCsfeCommand.setServerUri=function(e){\r
83098 ZmCsfeCommand.serverUri=e\r
83099 };\r
83100 ZmCsfeCommand.setAuthToken=function(t,s,n,a){\r
83101 ZmCsfeCommand._curAuthToken=t;\r
83102 if(s!=null){\r
83103 var o=null;\r
83104 if(s>0){\r
83105 o=new Date();\r
83106 var e=parseInt(s);\r
83107 o.setTime(o.getTime()+e)\r
83108 }\r
83109 AjxCookie.setCookie(document,ZmCsfeCommand._COOKIE_NAME,t,o,"/",null,a)\r
83110 }else{\r
83111 AjxCookie.deleteCookie(document,ZmCsfeCommand._COOKIE_NAME,"/")\r
83112 }\r
83113 if(n){\r
83114 ZmCsfeCommand.setSessionId(n)\r
83115 }};\r
83116 ZmCsfeCommand.clearAuthToken=function(){\r
83117 AjxCookie.deleteCookie(document,ZmCsfeCommand._COOKIE_NAME,"/")\r
83118 };\r
83119 ZmCsfeCommand.getSessionId=function(){\r
83120 return ZmCsfeCommand._sessionId\r
83121 };\r
83122 ZmCsfeCommand.setSessionId=function(e){\r
83123 var t=(e!=null)?((e instanceof Array)?e[0].id:e.id):null;\r
83124 ZmCsfeCommand._sessionId=t?parseInt(t):null\r
83125 };\r
83126 ZmCsfeCommand.faultToEx=function(t,a){\r
83127 var o={\r
83128 msg:AjxStringUtil.getAsString(t.Reason.Text),code:AjxStringUtil.getAsString(t.Detail.Error.Code),method:(a?a.methodNameStr:null),detail:AjxStringUtil.getAsString(t.Code.Value),data:t.Detail.Error.a,trace:(t.Detail.Error.Trace||"")};\r
83129 var e;\r
83130 if(a){\r
83131 if(a.soapDoc){\r
83132 o.request=a.soapDoc.getXml()\r
83133 }else{\r
83134 if(a.jsonRequestObj){\r
83135 if(a.jsonRequestObj&&a.jsonRequestObj.Header&&a.jsonRequestObj.Header.context){\r
83136 a.jsonRequestObj.Header.context.authToken="(removed)"\r
83137 }\r
83138 o.request=AjxStringUtil.prettyPrint(a.jsonRequestObj,true)\r
83139 }}}\r
83140 return new ZmCsfeException(o)\r
83141 };\r
83142 ZmCsfeCommand.getMethodName=function(t){\r
83143 var e=(t&&t._methodEl&&t._methodEl.tagName)?t._methodEl.tagName:null;\r
83144 if(!e){\r
83145 for(var a in t){\r
83146 if(a.indexOf("Request")!=-1){\r
83147 e=a;\r
83148 break\r
83149 }}}\r
83150 return(e||"[unknown]")\r
83151 };\r
83152 ZmCsfeCommand.prototype.invoke=function(r){\r
83153 this.cancelled=false;\r
83154 if(!(r&&(r.soapDoc||r.jsonObj))){\r
83155 return\r
83156 }\r
83157 var e=ZmCsfeCommand.getRequestStr(r);\r
83158 var s;\r
83159 try{\r
83160 var n=(r.serverUri||ZmCsfeCommand.serverUri)+r.methodNameStr;\r
83161 this._st=new Date();\r
83162 var o={\r
83163 "Content-Type":"application/soap+xml; charset=utf-8"};\r
83164 if(AjxEnv.isIE6&&(location.protocol=="https:")){\r
83165 o.Connection="Close"\r
83166 }\r
83167 if(r.asyncMode){\r
83168 s=new AjxCallback(this,this._runCallback,[r]);\r
83169 this._rpcId=AjxRpc.invoke(e,n,o,s)\r
83170 }else{\r
83171 var t=AjxRpc.invoke(e,n,o);\r
83172 return(!r.returnXml)?(this._getResponseData(t,r)):t\r
83173 }}\r
83174 catch(a){\r
83175 this._handleException(a,r,s)\r
83176 }};\r
83177 ZmCsfeCommand.prototype.invokeRest=function(o){\r
83178 if(!(o&&o.restUri)){\r
83179 return\r
83180 }\r
83181 var a;\r
83182 try{\r
83183 this._st=new Date();\r
83184 if(o.asyncMode){\r
83185 a=new AjxCallback(this,this._runCallback,[o]);\r
83186 this._rpcId=AjxRpc.invoke(null,o.restUri,null,a,true)\r
83187 }else{\r
83188 var e=AjxRpc.invoke(null,o.restUri,null,null,true);\r
83189 return e.text\r
83190 }}\r
83191 catch(t){\r
83192 this._handleException(t,o,a)\r
83193 }};\r
83194 ZmCsfeCommand.prototype.cancel=function(){\r
83195 if(!this._rpcId){\r
83196 return\r
83197 }\r
83198 this.cancelled=true;\r
83199 var e=AjxRpc.getRpcRequestById(this._rpcId);\r
83200 if(e){\r
83201 e.cancel()\r
83202 }};\r
83203 ZmCsfeCommand.getRequestStr=function(e){\r
83204 return e.soapDoc?ZmCsfeCommand._getSoapRequestStr(e):ZmCsfeCommand._getJsonRequestStr(e)\r
83205 };\r
83206 ZmCsfeCommand._getJsonRequestStr=function(r){\r
83207 var n={\r
83208 Header:{}\r
83209 ,Body:r.jsonObj};\r
83210 var t=n.Header.context={\r
83211 _jsns:"urn:zimbra"};\r
83212 var a=["ZimbraWebClient - ",AjxEnv.browser," (",AjxEnv.platform,")"].join("");\r
83213 t.userAgent={\r
83214 name:a};\r
83215 if(ZmCsfeCommand.clientVersion){\r
83216 t.userAgent.version=ZmCsfeCommand.clientVersion\r
83217 }\r
83218 if(r.noSession){\r
83219 t.nosession={}\r
83220 }else{\r
83221 var s=ZmCsfeCommand.getSessionId();\r
83222 if(s){\r
83223 t.session={\r
83224 _content:s,id:s}\r
83225 }else{\r
83226 t.session={}\r
83227 }}\r
83228 if(r.targetServer){\r
83229 t.targetServer={\r
83230 _content:r.targetServer}\r
83231 }\r
83232 if(r.highestNotifySeen){\r
83233 t.notify={\r
83234 seq:r.highestNotifySeen}\r
83235 }\r
83236 if(r.changeToken){\r
83237 t.change={\r
83238 token:r.changeToken,type:"new"}\r
83239 }\r
83240 if(!r.skipAuthCheck){\r
83241 if(r.accountId){\r
83242 t.account={\r
83243 _content:r.accountId,by:"id"}\r
83244 }else{\r
83245 if(r.accountName){\r
83246 t.account={\r
83247 _content:r.accountName,by:"name"}\r
83248 }}}\r
83249 if(r.useXml){\r
83250 t.format={\r
83251 type:"xml"}\r
83252 }\r
83253 r.methodNameStr=ZmCsfeCommand.getMethodName(r.jsonObj);\r
83254 if(!r.noAuthToken){\r
83255 var e=ZmCsfeCommand.getAuthToken();\r
83256 if(!e){\r
83257 throw new ZmCsfeException("AuthToken required",ZmCsfeException.NO_AUTH_TOKEN,r.methodNameStr)\r
83258 }\r
83259 if(ZmCsfeCommand._curAuthToken&&!r.skipAuthCheck&&(r.resend!=ZmCsfeCommand.REAUTH)&&(e!=ZmCsfeCommand._curAuthToken)){\r
83260 throw new ZmCsfeException("AuthToken has changed",ZmCsfeException.AUTH_TOKEN_CHANGED,r.methodNameStr)\r
83261 }\r
83262 t.authToken=ZmCsfeCommand._curAuthToken=e\r
83263 }\r
83264 if(window.DBG){\r
83265 var o=DBG._getTimeStamp()\r
83266 }\r
83267 r.jsonRequestObj=n;\r
83268 return AjxStringUtil.objToString(n)\r
83269 };\r
83270 ZmCsfeCommand._getSoapRequestStr=function(r){\r
83271 var m=r.soapDoc;\r
83272 if(!r.resend){\r
83273 var p=m.createHeaderElement();\r
83274 var n=m.set("context",null,p,"urn:zimbra");\r
83275 var t=m.set("userAgent",null,n);\r
83276 var a=["ZimbraWebClient - ",AjxEnv.browser," (",AjxEnv.platform,")"].join("");\r
83277 t.setAttribute("name",a);\r
83278 if(ZmCsfeCommand.clientVersion){\r
83279 t.setAttribute("version",ZmCsfeCommand.clientVersion)\r
83280 }\r
83281 if(r.noSession){\r
83282 m.set("nosession",null,n)\r
83283 }else{\r
83284 var h=ZmCsfeCommand.getSessionId();\r
83285 var c=m.set("session",null,n);\r
83286 if(h){\r
83287 c.setAttribute("id",h)\r
83288 }}\r
83289 if(r.targetServer){\r
83290 m.set("targetServer",r.targetServer,n)\r
83291 }\r
83292 if(r.highestNotifySeen){\r
83293 var g=m.set("notify",null,n);\r
83294 g.setAttribute("seq",r.highestNotifySeen)\r
83295 }\r
83296 if(r.changeToken){\r
83297 var d=m.set("change",null,n);\r
83298 d.setAttribute("token",r.changeToken);\r
83299 d.setAttribute("type","new")\r
83300 }\r
83301 if(!r.skipAuthCheck){\r
83302 if(r.accountId){\r
83303 var s=m.set("account",r.accountId,n);\r
83304 s.setAttribute("by","id")\r
83305 }else{\r
83306 if(r.accountName){\r
83307 var s=m.set("account",r.accountName,n);\r
83308 s.setAttribute("by","name")\r
83309 }}}\r
83310 if(!r.useXml){\r
83311 var o=m.set("format",null,n);\r
83312 o.setAttribute("type","js")\r
83313 }}\r
83314 r.methodNameStr=ZmCsfeCommand.getMethodName(m);\r
83315 if(!r.noAuthToken){\r
83316 var f=ZmCsfeCommand.getAuthToken();\r
83317 if(!f){\r
83318 throw new ZmCsfeException("AuthToken required",ZmCsfeException.NO_AUTH_TOKEN,r.methodNameStr)\r
83319 }\r
83320 if(ZmCsfeCommand._curAuthToken&&!r.skipAuthCheck&&(r.resend!=ZmCsfeCommand.REAUTH)&&(f!=ZmCsfeCommand._curAuthToken)){\r
83321 throw new ZmCsfeException("AuthToken has changed",ZmCsfeException.AUTH_TOKEN_CHANGED,r.methodNameStr)\r
83322 }\r
83323 ZmCsfeCommand._curAuthToken=f;\r
83324 if(r.resend==ZmCsfeCommand.REAUTH){\r
83325 var e=m.getDoc().getElementsByTagName("authToken");\r
83326 if(e&&e.length==1){\r
83327 e[0].firstChild.data=f\r
83328 }else{\r
83329 e=m.getDoc().getElementsByTagName("context");\r
83330 if(e&&e.length==1){\r
83331 m.set("authToken",f,e[0])\r
83332 }else{}}}else{\r
83333 if(!r.resend){\r
83334 m.set("authToken",f,n)\r
83335 }}}\r
83336 if(window.DBG){\r
83337 var u=DBG._getTimeStamp()\r
83338 }\r
83339 return m.getXml()\r
83340 };\r
83341 ZmCsfeCommand.prototype._runCallback=function(a,e){\r
83342 if(!e){\r
83343 return\r
83344 }\r
83345 if(this.cancelled&&a.skipCallbackIfCancelled){\r
83346 return\r
83347 }\r
83348 var t;\r
83349 if(e instanceof ZmCsfeResult){\r
83350 t=e\r
83351 }else{\r
83352 t=this._getResponseData(e,a)\r
83353 }\r
83354 this._en=new Date();\r
83355 if(a.callback){\r
83356 a.callback.run(t)\r
83357 }else{}};\r
83358 ZmCsfeCommand.prototype._getResponseData=function(response,params){\r
83359 this._en=new Date();\r
83360 var result=new ZmCsfeResult();\r
83361 var xmlResponse=false;\r
83362 var restResponse=Boolean(params.restUri);\r
83363 var respDoc=null;\r
83364 if(!response.success&&!response.xml&&(/<html/i.test(response.text))){\r
83365 var ex=new ZmCsfeException(null,ZmCsfeException.CSFE_SVC_ERROR,params.methodNameStr,"HTTP response status "+response.status);\r
83366 if(params.asyncMode){\r
83367 result.set(ex,true);\r
83368 return result\r
83369 }else{\r
83370 throw ex\r
83371 }}\r
83372 if(typeof(response.text)=="string"&&response.text.indexOf("{")==0){\r
83373 respDoc=response.text\r
83374 }else{\r
83375 if(!restResponse){\r
83376 try{\r
83377 xmlResponse=true;\r
83378 if(!(response.text||(response.xml&&(typeof response.xml)=="string"))){\r
83379 throw new ZmCsfeException(null,ZmCsfeException.EMPTY_RESPONSE,params.methodNameStr)\r
83380 }\r
83381 respDoc=(AjxEnv.isIE||response.xml==null)?AjxSoapDoc.createFromXml(response.text):AjxSoapDoc.createFromDom(response.xml)\r
83382 }\r
83383 catch(ex){\r
83384 if(params.asyncMode){\r
83385 result.set(ex,true);\r
83386 return result\r
83387 }else{\r
83388 throw ex\r
83389 }}\r
83390 if(!respDoc){\r
83391 var ex=new ZmCsfeException(null,ZmCsfeException.SOAP_ERROR,params.methodNameStr,"Bad XML response doc");\r
83392 if(params.asyncMode){\r
83393 result.set(ex,true);\r
83394 return result\r
83395 }else{\r
83396 throw ex\r
83397 }}}}\r
83398 var linkName="Response";\r
83399 if(respDoc&&respDoc.match){\r
83400 var m=respDoc.match(/\{"?Body"?:\{"?(\w+)"?:/);\r
83401 if(m&&m.length){\r
83402 linkName=m[1]\r
83403 }}\r
83404 if(window.DBG){\r
83405 var ts=DBG._getTimeStamp()\r
83406 }\r
83407 var obj=restResponse?response.text:{};\r
83408 if(xmlResponse){\r
83409 obj=respDoc._xmlDoc.toJSObject(true,false,true)\r
83410 }else{\r
83411 if(!restResponse){\r
83412 try{\r
83413 eval("obj="+respDoc)\r
83414 }\r
83415 catch(ex){\r
83416 if(ex.name=="SyntaxError"){\r
83417 ex=new ZmCsfeException(null,ZmCsfeException.BAD_JSON_RESPONSE,params.methodNameStr)\r
83418 }\r
83419 if(params.asyncMode){\r
83420 result.set(ex,true);\r
83421 return result\r
83422 }else{\r
83423 throw ex\r
83424 }}}}\r
83425 var fault=obj&&obj.Body&&obj.Body.Fault;\r
83426 if(fault){\r
83427 var ex=ZmCsfeCommand.faultToEx(fault,params);\r
83428 if(params.asyncMode){\r
83429 result.set(ex,true,obj.Header);\r
83430 return result\r
83431 }else{\r
83432 throw ex\r
83433 }}else{\r
83434 if(!response.success){\r
83435 var ex=new ZmCsfeException(null,ZmCsfeException.CSFE_SVC_ERROR,params.methodNameStr,"HTTP response status "+response.status);\r
83436 if(params.asyncMode){\r
83437 result.set(ex,true);\r
83438 return result\r
83439 }else{\r
83440 throw ex\r
83441 }}else{\r
83442 if(params.asyncMode){\r
83443 result.set(obj)\r
83444 }}}\r
83445 if(obj.Header&&obj.Header.context&&obj.Header.context.session){\r
83446 ZmCsfeCommand.setSessionId(obj.Header.context.session)\r
83447 }\r
83448 return params.asyncMode?result:obj\r
83449 };\r
83450 ZmCsfeCommand.prototype._handleException=function(e,a,o){\r
83451 if(!(e&&(e instanceof ZmCsfeException||e instanceof AjxSoapException||e instanceof AjxException))){\r
83452 var t=new ZmCsfeException();\r
83453 t.method=a.methodNameStr||a.restUri;\r
83454 t.detail=e?e.toString():"undefined exception";\r
83455 t.code=ZmCsfeException.UNKNOWN_ERROR;\r
83456 t.msg="Unknown Error";\r
83457 e=t\r
83458 }\r
83459 if(a.asyncMode){\r
83460 o.run(new ZmCsfeResult(e,true))\r
83461 }else{\r
83462 throw e\r
83463 }}\r
83464 }\r
83465 if(AjxPackage.define("zimbra.csfe.ZmCsfeException")){\r
83466 ZmCsfeException=function(o){\r
83467 o=Dwt.getParams(arguments,ZmCsfeException.PARAMS);\r
83468 AjxException.call(this,o.msg,o.code,o.method,o.detail);\r
83469 if(o.data){\r
83470 this.data={};\r
83471 for(var t=0;\r
83472 t<o.data.length;\r
83473 t++){\r
83474 var a=o.data[t];\r
83475 var e=a.n;\r
83476 if(!this.data[e]){\r
83477 this.data[e]=[]\r
83478 }\r
83479 this.data[e].push(a._content)\r
83480 }}\r
83481 this.trace=o.trace;\r
83482 this.request=o.request\r
83483 };\r
83484 ZmCsfeException.PARAMS=["msg","code","method","detail","data","trace"];\r
83485 ZmCsfeException.prototype=new AjxException;\r
83486 ZmCsfeException.prototype.constructor=ZmCsfeException;\r
83487 ZmCsfeException.prototype.toString=function(){\r
83488 return"ZmCsfeException"\r
83489 };\r
83490 ZmCsfeException.MAIL_SEND_ADDRESS_FAILURE_INVALID="invalid";\r
83491 ZmCsfeException.MAIL_SEND_ADDRESS_FAILURE_UNSENT="unsent";\r
83492 ZmCsfeException.getErrorMsg=function(t,e){\r
83493 var a=ZMsg[t];\r
83494 if(!a){\r
83495 ZmCsfeException._unknownFormat=ZmCsfeException._unknownFormat||new AjxMessageFormat(ZMsg.unknownError);\r
83496 return ZmCsfeException._unknownFormat.format(t)\r
83497 }\r
83498 this.msg=this.msg||a;\r
83499 return e?AjxMessageFormat.format(a,e):a\r
83500 };\r
83501 ZmCsfeException.prototype.getErrorMsg=function(e){\r
83502 return ZmCsfeException.getErrorMsg(this.code,e)\r
83503 };\r
83504 ZmCsfeException.prototype.getData=function(e){\r
83505 return this.data&&this.data[e]\r
83506 };\r
83507 ZmCsfeException.AUTH_TOKEN_CHANGED="AUTH_TOKEN_CHANGED";\r
83508 ZmCsfeException.BAD_JSON_RESPONSE="BAD_JSON_RESPONSE";\r
83509 ZmCsfeException.CSFE_SVC_ERROR="CSFE_SVC_ERROR";\r
83510 ZmCsfeException.EMPTY_RESPONSE="EMPTY_RESPONSE";\r
83511 ZmCsfeException.NETWORK_ERROR="NETWORK_ERROR";\r
83512 ZmCsfeException.NO_AUTH_TOKEN="NO_AUTH_TOKEN";\r
83513 ZmCsfeException.SOAP_ERROR="SOAP_ERROR";\r
83514 ZmCsfeException.LICENSE_ERROR="service.LICENSE_ERROR";\r
83515 ZmCsfeException.SVC_ALREADY_IN_PROGRESS="service.ALREADY_IN_PROGRESS";\r
83516 ZmCsfeException.SVC_AUTH_EXPIRED="service.AUTH_EXPIRED";\r
83517 ZmCsfeException.SVC_AUTH_REQUIRED="service.AUTH_REQUIRED";\r
83518 ZmCsfeException.SVC_FAILURE="service.FAILURE";\r
83519 ZmCsfeException.SVC_INVALID_REQUEST="service.INVALID_REQUEST";\r
83520 ZmCsfeException.SVC_PARSE_ERROR="service.PARSE_ERROR";\r
83521 ZmCsfeException.SVC_PERM_DENIED="service.PERM_DENIED";\r
83522 ZmCsfeException.SVC_RESOURCE_UNREACHABLE="service.RESOURCE_UNREACHABLE";\r
83523 ZmCsfeException.SVC_UNKNOWN_DOCUMENT="service.UNKNOWN_DOCUMENT";\r
83524 ZmCsfeException.SVC_TEMPORARILY_UNAVAILABLE="service.TEMPORARILY_UNAVAILABLE";\r
83525 ZmCsfeException.SVC_WRONG_HOST="service.WRONG_HOST";\r
83526 ZmCsfeException.ACCT_AUTH_FAILED="account.AUTH_FAILED";\r
83527 ZmCsfeException.ACCT_CHANGE_PASSWORD="account.CHANGE_PASSWORD";\r
83528 ZmCsfeException.ACCT_EXISTS="account.ACCOUNT_EXISTS";\r
83529 ZmCsfeException.ACCT_TOO_MANY_ACCOUNTS="account.TOO_MANY_ACCOUNTS";\r
83530 ZmCsfeException.ACCT_INVALID_ATTR_VALUE="account.INVALID_ATTR_VALUE";\r
83531 ZmCsfeException.ACCT_INVALID_PASSWORD="account.INVALID_PASSWORD";\r
83532 ZmCsfeException.ACCT_INVALID_PREF_NAME="account.INVALID_PREF_NAME";\r
83533 ZmCsfeException.ACCT_INVALID_PREF_VALUE="account.INVALID_PREF_VALUE";\r
83534 ZmCsfeException.ACCT_MAINTENANCE_MODE="account.MAINTENANCE_MODE";\r
83535 ZmCsfeException.ACCT_NO_SUCH_ACCOUNT="account.NO_SUCH_ACCOUNT";\r
83536 ZmCsfeException.ACCT_NO_SUCH_SAVED_SEARCH="account.NO_SUCH_SAVED_SEARCH";\r
83537 ZmCsfeException.ACCT_NO_SUCH_TAG="account.ACCT_NO_SUCH_TAG";\r
83538 ZmCsfeException.ACCT_PASS_CHANGE_TOO_SOON="account.PASSWORD_CHANGE_TOO_SOON";\r
83539 ZmCsfeException.ACCT_PASS_LOCKED="account.PASSWORD_LOCKED";\r
83540 ZmCsfeException.ACCT_PASS_RECENTLY_USED="account.PASSWORD_RECENTLY_USED";\r
83541 ZmCsfeException.COS_EXISTS="account.COS_EXISTS";\r
83542 ZmCsfeException.DISTRIBUTION_LIST_EXISTS="account.DISTRIBUTION_LIST_EXISTS";\r
83543 ZmCsfeException.DOMAIN_EXISTS="account.DOMAIN_EXISTS";\r
83544 ZmCsfeException.DOMAIN_NOT_EMPTY="account.DOMAIN_NOT_EMPTY";\r
83545 ZmCsfeException.IDENTITY_EXISTS="account.IDENTITY_EXISTS";\r
83546 ZmCsfeException.NO_SUCH_DISTRIBUTION_LIST="account.NO_SUCH_DISTRIBUTION_LIST";\r
83547 ZmCsfeException.NO_SUCH_DOMAIN="account.NO_SUCH_DOMAIN";\r
83548 ZmCsfeException.MAINTENANCE_MODE="account.MAINTENANCE_MODE";\r
83549 ZmCsfeException.TOO_MANY_IDENTITIES="account.TOO_MANY_IDENTITIES";\r
83550 ZmCsfeException.TOO_MANY_SEARCH_RESULTS="account.TOO_MANY_SEARCH_RESULTS";\r
83551 ZmCsfeException.NO_SUCH_COS="account.NO_SUCH_COS";\r
83552 ZmCsfeException.MAIL_ALREADY_EXISTS="mail.ALREADY_EXISTS";\r
83553 ZmCsfeException.MAIL_IMMUTABLE="mail.IMMUTABLE_OBJECT";\r
83554 ZmCsfeException.MAIL_INVALID_NAME="mail.INVALID_NAME";\r
83555 ZmCsfeException.MAIL_MAINTENANCE_MODE="mail.MAINTENANCE";\r
83556 ZmCsfeException.MAIL_MESSAGE_TOO_BIG="mail.MESSAGE_TOO_BIG";\r
83557 ZmCsfeException.MAIL_NO_SUCH_CONV="mail.NO_SUCH_CONV";\r
83558 ZmCsfeException.MAIL_NO_SUCH_FOLDER="mail.NO_SUCH_FOLDER";\r
83559 ZmCsfeException.MAIL_NO_SUCH_ITEM="mail.NO_SUCH_ITEM";\r
83560 ZmCsfeException.MAIL_NO_SUCH_MOUNTPOINT="mail.NO_SUCH_MOUNTPOINT";\r
83561 ZmCsfeException.MAIL_NO_SUCH_MSG="mail.NO_SUCH_MSG";\r
83562 ZmCsfeException.MAIL_NO_SUCH_PART="mail.NO_SUCH_PART";\r
83563 ZmCsfeException.MAIL_NO_SUCH_TAG="mail.NO_SUCH_TAG";\r
83564 ZmCsfeException.MAIL_QUERY_PARSE_ERROR="mail.QUERY_PARSE_ERROR";\r
83565 ZmCsfeException.MAIL_QUOTA_EXCEEDED="mail.QUOTA_EXCEEDED";\r
83566 ZmCsfeException.MAIL_SEND_ABORTED_ADDRESS_FAILURE="mail.SEND_ABORTED_ADDRESS_FAILURE";\r
83567 ZmCsfeException.MAIL_SEND_FAILURE="mail.SEND_FAILURE";\r
83568 ZmCsfeException.MAIL_TOO_MANY_CONTACTS="mail.TOO_MANY_CONTACTS";\r
83569 ZmCsfeException.MAIL_TOO_MANY_TERMS="mail.TOO_MANY_QUERY_TERMS_EXPANDED";\r
83570 ZmCsfeException.MAIL_UNABLE_TO_IMPORT_APPOINTMENTS="mail.MAIL_UNABLE_TO_IMPORT_APPOINTMENTS";\r
83571 ZmCsfeException.MAIL_UNABLE_TO_IMPORT_CONTACTS="mail.UNABLE_TO_IMPORT_CONTACTS";\r
83572 ZmCsfeException.MODIFY_CONFLICT="mail.MODIFY_CONFLICT";\r
83573 ZmCsfeException.TOO_MANY_TAGS="mail.TOO_MANY_TAGS";\r
83574 ZmCsfeException.OFFLINE_ONLINE_ONLY_OP="offline.ONLINE_ONLY_OP";\r
83575 ZmCsfeException.VOLUME_NO_SUCH_PATH="volume.NO_SUCH_PATH"\r
83576 }\r
83577 if(AjxPackage.define("zimbra.csfe.ZmCsfeResult")){\r
83578 ZmCsfeResult=function(e,t,a){\r
83579 this.set(e,t,a)\r
83580 };\r
83581 ZmCsfeResult.prototype.toString=function(){\r
83582 return"ZmCsfeResult"\r
83583 };\r
83584 ZmCsfeResult.prototype.set=function(e,t,a){\r
83585 this._data=e;\r
83586 this._isException=(t===true);\r
83587 this._header=a\r
83588 };\r
83589 ZmCsfeResult.prototype.getResponse=function(){\r
83590 if(this._isException){\r
83591 throw this._data\r
83592 }else{\r
83593 return this._data\r
83594 }};\r
83595 ZmCsfeResult.prototype.getException=function(){\r
83596 return this._isException?this._data:null\r
83597 };\r
83598 ZmCsfeResult.prototype.isException=function(){\r
83599 return this._isException\r
83600 };\r
83601 ZmCsfeResult.prototype.getHeader=function(){\r
83602 return this._header\r
83603 }\r
83604 }\r
83605 if(AjxPackage.define("zimbraMail.core.ZmId")){\r
83606 ZmId=function(){};\r
83607 ZmId.WIDGET="z";\r
83608 ZmId.WIDGET_VIEW="zv";\r
83609 ZmId.WIDGET_TOOLBAR="ztb";\r
83610 ZmId.WIDGET_BUTTON="zb";\r
83611 ZmId.WIDGET_INPUT="zi";\r
83612 ZmId.WIDGET_MENU="zm";\r
83613 ZmId.WIDGET_MENU_ITEM="zmi";\r
83614 ZmId.WIDGET_SELECT="zs";\r
83615 ZmId.WIDGET_OVERVIEW_CNTR="zovc";\r
83616 ZmId.WIDGET_OVERVIEW="zov";\r
83617 ZmId.WIDGET_TREE="zt";\r
83618 ZmId.WIDGET_TREE_ITEM_HDR="ztih";\r
83619 ZmId.WIDGET_TREE_ITEM="zti";\r
83620 ZmId.WIDGET_TAB="ztab";\r
83621 ZmId.SKIN_APP_BOTTOM_TOOLBAR="skin_container_app_bottom_toolbar";\r
83622 ZmId.SKIN_APP_CHOOSER="skin_container_app_chooser";\r
83623 ZmId.SKIN_APP_MAIN_FULL="skin_container_app_main_full";\r
83624 ZmId.SKIN_APP_MAIN="skin_container_app_main";\r
83625 ZmId.SKIN_APP_MAIN_ROW_FULL="skin_tr_main_full";\r
83626 ZmId.SKIN_APP_MAIN_ROW="skin_tr_main";\r
83627 ZmId.SKIN_APP_TOP_TOOLBAR="skin_container_app_top_toolbar";\r
83628 ZmId.SKIN_LINKS="skin_container_links";\r
83629 ZmId.SKIN_LOGO="skin_container_logo";\r
83630 ZmId.SKIN_QUOTA_INFO="skin_container_quota";\r
83631 ZmId.SKIN_SASH="skin_container_tree_app_sash";\r
83632 ZmId.SKIN_SEARCH_BUILDER="skin_container_search_builder";\r
83633 ZmId.SKIN_SEARCH_BUILDER_TOOLBAR="skin_container_search_builder_toolbar";\r
83634 ZmId.SKIN_SEARCH_BUILDER_TR="skin_tr_search_builder";\r
83635 ZmId.SKIN_SEARCH="skin_container_search";\r
83636 ZmId.SKIN_SHELL="skin_outer";\r
83637 ZmId.SKIN_SPACING_SEARCH="skin_spacing_search";\r
83638 ZmId.SKIN_SPLASH_SCREEN="skin_container_splash_screen";\r
83639 ZmId.SKIN_STATUS="skin_container_status";\r
83640 ZmId.SKIN_STATUS_ROW="skin_tr_status";\r
83641 ZmId.SKIN_TREE_FOOTER="skin_container_tree_footer";\r
83642 ZmId.SKIN_TREE="skin_container_tree";\r
83643 ZmId.SKIN_USER_INFO="skin_container_username";\r
83644 ZmId.SKIN_TASKBAR="skin_container_taskbar";\r
83645 ZmId.SKIN_FOOTER="skin_footer";\r
83646 ZmId.SKIN_AD="skin_adsrvc";\r
83647 ZmId.SHELL="z_shell";\r
83648 ZmId.LOADING_VIEW="z_loading";\r
83649 ZmId.MAIN_SASH="z_sash";\r
83650 ZmId.BANNER="z_banner";\r
83651 ZmId.SEARCH_TOOLBAR="ztb_search";\r
83652 ZmId.USER_NAME="z_userName";\r
83653 ZmId.USER_QUOTA="z_userQuota";\r
83654 ZmId.PRESENCE="z_presence";\r
83655 ZmId.TASKBAR="z_taskbar";\r
83656 ZmId.NEW_FOLDER_BUTTON="zb_newFolder";\r
83657 ZmId.STATUS_VIEW="z_status";\r
83658 ZmId.TOAST="z_toast";\r
83659 ZmId.APP_CHOOSER="ztb_appChooser";\r
83660 ZmId.getToolbarId=function(t,e){\r
83661 return DwtId._makeId(ZmId.WIDGET_TOOLBAR,t,e)\r
83662 };\r
83663 ZmId.TB_INVITE="Inv";\r
83664 ZmId.TB_NAV="Nav";\r
83665 ZmId.TB_SHARE="Shr";\r
83666 ZmId.getButtonId=function(t,a,e){\r
83667 return DwtId._makeId(ZmId.WIDGET_BUTTON,t,e,a)\r
83668 };\r
83669 ZmId.getMenuId=function(t,e){\r
83670 return DwtId._makeId(ZmId.WIDGET_MENU,t,e)\r
83671 };\r
83672 ZmId.MENU_PARTICIPANT="Par";\r
83673 ZmId.MENU_DRAFTS="Dra";\r
83674 ZmId.getMenuItemId=function(t,a,e){\r
83675 return DwtId._makeId(ZmId.WIDGET_MENU_ITEM,t,e,a)\r
83676 };\r
83677 ZmId.getOverviewContainerId=function(e){\r
83678 return DwtId._makeId(ZmId.WIDGET_OVERVIEW_CNTR,e)\r
83679 };\r
83680 ZmId.getOverviewId=function(e){\r
83681 return DwtId._makeId(ZmId.WIDGET_OVERVIEW,e)\r
83682 };\r
83683 ZmId.getTreeId=function(t,e){\r
83684 return DwtId._makeId(ZmId.WIDGET_TREE,t,e)\r
83685 };\r
83686 ZmId.getTreeItemId=function(a,t,e){\r
83687 if(!t&&!e){\r
83688 return\r
83689 }\r
83690 if(e){\r
83691 return DwtId._makeId(ZmId.WIDGET_TREE_ITEM_HDR,a,e)\r
83692 }else{\r
83693 return DwtId._makeId(ZmId.WIDGET_TREE_ITEM,a,t)\r
83694 }};\r
83695 ZmId.getViewId=function(e,t,a){\r
83696 var o=DwtId._makeId(ZmId.WIDGET_VIEW,a,e);\r
83697 return t?[o,t].join(""):o\r
83698 };\r
83699 ZmId.getComposeViewId=function(e){\r
83700 var t=DwtId._makeId(ZmId.WIDGET,ZmId.COMPOSE_VIEW);\r
83701 return e?[t,e].join(""):t\r
83702 };\r
83703 ZmId.getTabId=function(e,t){\r
83704 return DwtId._makeId(ZmId.WIDGET_TAB,e,t)\r
83705 };\r
83706 ZmId.getPrefPageId=function(e){\r
83707 return"PREF_PAGE_"+e\r
83708 };\r
83709 ZmId.SEARCH_INPUT="zi_search";\r
83710 ZmId.SEARCH="Search";\r
83711 ZmId.SEARCH_CUSTOM="CUSTOM";\r
83712 ZmId.SEARCH_MENU="MENU";\r
83713 ZmId.SEARCH_SEARCH="SEARCH";\r
83714 ZmId.SEARCH_SAVE="SAVE";\r
83715 ZmId.SEARCH_ADVANCED="ADV";\r
83716 ZmId.SEARCH_LOCAL="LOCAL";\r
83717 ZmId.SEARCH_ALL_ACCOUNTS="ALL_ACCOUNTS";\r
83718 ZmId.SEARCH_ANY="ANY";\r
83719 ZmId.SEARCH_GAL="GAL";\r
83720 ZmId.SEARCH_MAIL="MAIL";\r
83721 ZmId.SEARCH_SHARED="SHARED";\r
83722 ZmId.APP="App";\r
83723 ZmId.TREEITEM_INBOX="zti|Mail|2";\r
83724 ZmId.TREEITEM_JUNK="zti|Mail|4";\r
83725 ZmId.TREEITEM_SENT="zti|Mail|5";\r
83726 ZmId.TREEITEM_DRAFTS="zti|Mail|6";\r
83727 ZmId.TREEITEM_TRASH_MAIL="zti|Mail|3";\r
83728 ZmId.TREEITEM_TRASH_CONTACTS="zti|Contacts|3";\r
83729 ZmId.TREEITEM_CONTACTS="zti|Contacts|7";\r
83730 ZmId.TREEITEM_CALENDAR="zti|Calendar|10";\r
83731 ZmId.TREEITEM_NOTEBOOK="zti|Notebook|12";\r
83732 ZmId.TREEITEM_TASKS="zti|Tasks|15";\r
83733 ZmId.TREEITEM_BRIEFCASE="zti|Briefcase|16";\r
83734 ZmId.MV_HDR_TABLE="_hdrTable";\r
83735 ZmId.MV_HDR_TABLE_TOP_ROW="_hdrTableTopRow";\r
83736 ZmId.MV_CLOSE_BTN_CELL="_closeBtnCell";\r
83737 ZmId.MV_REPORT_BTN_CELL="_reportBtnCell";\r
83738 ZmId.MV_EXPAND_ROW="_expandRow";\r
83739 ZmId.MV_EXPAND_HDR="_expandHeader";\r
83740 ZmId.MV_ATT_LINKS="_attLinks";\r
83741 ZmId.MV_CONTACT_AREA="_contactArea";\r
83742 ZmId.MV_HIGHLIGHT_OBJ="_highlightObjects";\r
83743 ZmId.MV_DISPLAY_IMAGES="_displayImages";\r
83744 ZmId.MV_MSG_TRUNC="_msgTruncation";\r
83745 ZmId.MV_INFO_BAR="_infoBar";\r
83746 ZmId.MV_TAG_ROW="_tagRow";\r
83747 ZmId.MV_TAG_CELL="_tagCell";\r
83748 ZmId.MV_MSG_BODY="_body";\r
83749 ZmId.CMP_HEADER="_header";\r
83750 ZmId.CMP_FROM_SELECT="_from_select";\r
83751 ZmId.CMP_TO_ROW="_to_row";\r
83752 ZmId.CMP_TO_PICKER="_to_picker";\r
83753 ZmId.CMP_TO_INPUT="_to_control";\r
83754 ZmId.CMP_CC_ROW="_cc_row";\r
83755 ZmId.CMP_CC_PICKER="_cc_picker";\r
83756 ZmId.CMP_CC_INPUT="_cc_control";\r
83757 ZmId.CMP_BCC_ROW="_bcc_row";\r
83758 ZmId.CMP_BCC_PICKER="_bcc_picker";\r
83759 ZmId.CMP_BCC_INPUT="_bcc_control";\r
83760 ZmId.CMP_BCC_TOGGLE="_toggle_bcc";\r
83761 ZmId.CMP_OBO_CHECKBOX="_obo_checkbox";\r
83762 ZmId.CMP_OBO_LABEL="_obo_label";\r
83763 ZmId.CMP_OBO_ROW="_obo_row";\r
83764 ZmId.CMP_SUBJECT_ROW="_subject_row";\r
83765 ZmId.CMP_SUBJECT_INPUT="_subject_control";\r
83766 ZmId.CMP_IDENTITY_ROW="_identity_row";\r
83767 ZmId.CMP_IDENTITY_SELECT="_identity_control";\r
83768 ZmId.CMP_PRIORITY="_priority";\r
83769 ZmId.CMP_ATT_ROW="_attachments_row";\r
83770 ZmId.CMP_ATT_DIV="_attachments_div";\r
83771 ZmId.CMP_TO="TO";\r
83772 ZmId.CMP_CC="CC";\r
83773 ZmId.CMP_BCC="BCC";\r
83774 ZmId.APP_BRIEFCASE="Briefcase";\r
83775 ZmId.APP_CALENDAR="Calendar";\r
83776 ZmId.APP_CONTACTS="Contacts";\r
83777 ZmId.APP_IM="IM";\r
83778 ZmId.APP_MAIL="Mail";\r
83779 ZmId.APP_MIXED="Mixed";\r
83780 ZmId.APP_NOTEBOOK="Notebook";\r
83781 ZmId.APP_PORTAL="Portal";\r
83782 ZmId.APP_PREFERENCES="Options";\r
83783 ZmId.APP_TASKS="Tasks";\r
83784 ZmId.APP_VOICE="Voice";\r
83785 ZmId.VIEW_ACCOUNT="ACCT";\r
83786 ZmId.VIEW_APPOINTMENT="APPT";\r
83787 ZmId.VIEW_APPT_SCHEDULE="APPTS";\r
83788 ZmId.VIEW_BRIEFCASE="BC";\r
83789 ZmId.VIEW_BRIEFCASE_DETAIL="BCD";\r
83790 ZmId.VIEW_BRIEFCASE_COLUMN="BCC";\r
83791 ZmId.VIEW_BRIEFCASE_ICON="BCI";\r
83792 ZmId.VIEW_CAL="CAL";\r
83793 ZmId.VIEW_CAL_APPT="CLA";\r
83794 ZmId.VIEW_CAL_DAY="CLD";\r
83795 ZmId.VIEW_CAL_LIST="CLL";\r
83796 ZmId.VIEW_CAL_MONTH="CLM";\r
83797 \r
83798 ZmId.VIEW_CAL_SCHEDULE="CLS";\r
83799 ZmId.VIEW_CAL_WEEK="CLW";\r
83800 ZmId.VIEW_CAL_WORK_WEEK="CLWW";\r
83801 ZmId.VIEW_CALL_LIST="CLIST";\r
83802 ZmId.VIEW_COMPOSE="COMPOSE";\r
83803 ZmId.VIEW_CONTACT_CARDS="CNC";\r
83804 ZmId.VIEW_CONTACT_SIMPLE="CNS";\r
83805 ZmId.VIEW_CONTACT_SRC="CNSRC";\r
83806 ZmId.VIEW_CONTACT_TGT="CNTGT";\r
83807 ZmId.VIEW_CONTACT="CN";\r
83808 ZmId.VIEW_CONVLIST="CLV";\r
83809 ZmId.VIEW_CONV="CV";\r
83810 ZmId.VIEW_FILTER_RULES="FRV";\r
83811 ZmId.VIEW_GROUP="GRP";\r
83812 ZmId.VIEW_IM_CHAT_MEMBER_LIST="IMCML";\r
83813 ZmId.VIEW_IM_CHAT_MULTI_WINDOW="IMCMW";\r
83814 ZmId.VIEW_IM_CHAT_TAB="IMCT";\r
83815 ZmId.VIEW_LOADING="LOADING";\r
83816 ZmId.VIEW_MAIL_CONFIRM="MAILCONFIRM";\r
83817 ZmId.VIEW_MIXED="MX";\r
83818 ZmId.VIEW_MOBILE_DEVICES="MD";\r
83819 ZmId.VIEW_MSG="MSG";\r
83820 ZmId.VIEW_MY_CARD="MYC";\r
83821 ZmId.VIEW_NOTEBOOK_FILE="NBF";\r
83822 ZmId.VIEW_NOTEBOOK_PAGE_EDIT="NBPE";\r
83823 ZmId.VIEW_NOTEBOOK_PAGE="NBP";\r
83824 ZmId.VIEW_NOTEBOOK_PAGE_VERSION="NBPV";\r
83825 ZmId.VIEW_NOTEBOOK_SITE="NBS";\r
83826 ZmId.VIEW_PORTAL="PORTAL";\r
83827 ZmId.VIEW_PREF="PREF";\r
83828 ZmId.VIEW_SHARE_PENDING="SVP";\r
83829 ZmId.VIEW_SHARE_MOUNTED="SVM";\r
83830 ZmId.VIEW_SHARE_GRANTS="SVG";\r
83831 ZmId.VIEW_SHORTCUTS="SHORTCUTS";\r
83832 ZmId.VIEW_TASK="TKV";\r
83833 ZmId.VIEW_TASK_NOT_STARTED="TKVN";\r
83834 ZmId.VIEW_TASK_COMPLETED="TKVC";\r
83835 ZmId.VIEW_TASK_IN_PROGRESS="TKVI";\r
83836 ZmId.VIEW_TASK_WAITING="TKVW";\r
83837 ZmId.VIEW_TASK_DEFERRED="TKVD";\r
83838 ZmId.VIEW_TASK_ALL="TKVA";\r
83839 ZmId.VIEW_TASKEDIT="TKE";\r
83840 ZmId.VIEW_TASKLIST="TKL";\r
83841 ZmId.VIEW_TRAD="TV";\r
83842 ZmId.VIEW_VOICEMAIL="VM";\r
83843 ZmId.VIEW_ATTACHMENTS="AV";\r
83844 ZmId.ITEM_APPOINTMENT="APPT";\r
83845 ZmId.ITEM_ATT="ATT";\r
83846 ZmId.ITEM_BRIEFCASE="BRIEFCASE_ITEM";\r
83847 ZmId.ITEM_CALL="CALL";\r
83848 ZmId.ITEM_CHAT="CHAT";\r
83849 ZmId.ITEM_CONTACT="CONTACT";\r
83850 ZmId.ITEM_CONV="CONV";\r
83851 ZmId.ITEM_DATA_SOURCE="DATA_SOURCE";\r
83852 ZmId.ITEM_DOCUMENT="DOCUMENT";\r
83853 ZmId.ITEM_GROUP="GROUP";\r
83854 ZmId.ITEM_MSG="MSG";\r
83855 ZmId.ITEM_PAGE="PAGE";\r
83856 ZmId.ITEM_RESOURCE="RESOURCE";\r
83857 ZmId.ITEM_ROSTER="ROSTER_ITEM";\r
83858 ZmId.ITEM_TASK="TASK";\r
83859 ZmId.ITEM_VOICEMAIL="VOICEMAIL";\r
83860 ZmId.ORG_ADDRBOOK="ADDRBOOK";\r
83861 ZmId.ORG_BRIEFCASE="BRIEFCASE";\r
83862 ZmId.ORG_CALENDAR="CALENDAR";\r
83863 ZmId.ORG_FOLDER="FOLDER";\r
83864 ZmId.ORG_NOTEBOOK="NOTEBOOK";\r
83865 ZmId.ORG_ROSTER_TREE_ITEM="ROSTER_TREE_ITEM";\r
83866 ZmId.ORG_ROSTER_TREE_GROUP="ROSTER_TREE_GROUP";\r
83867 ZmId.ORG_SEARCH="SEARCH";\r
83868 ZmId.ORG_TAG="TAG";\r
83869 ZmId.ORG_TASKS="TASKS";\r
83870 ZmId.ORG_ZIMLET="ZIMLET";\r
83871 ZmId.ORG_PREF_PAGE="PREF_PAGE";\r
83872 ZmId.FLD_ACCOUNT="ac";\r
83873 ZmId.FLD_ATTACHMENT="at";\r
83874 ZmId.FLD_CAPACITY="cp";\r
83875 ZmId.FLD_COMPANY="co";\r
83876 ZmId.FLD_DATE="dt";\r
83877 ZmId.FLD_EMAIL="em";\r
83878 ZmId.FLD_EXPAND="ex";\r
83879 ZmId.FLD_FILE_TYPE="ft";\r
83880 ZmId.FLD_FLAG="fg";\r
83881 ZmId.FLD_FOLDER="fo";\r
83882 ZmId.FLD_FRAGMENT="fm";\r
83883 ZmId.FLD_FROM="fr";\r
83884 ZmId.FLD_HOME_PHONE="hp";\r
83885 ZmId.FLD_ID="id";\r
83886 ZmId.FLD_INDEX="ix";\r
83887 ZmId.FLD_ITEM_ROW="rw";\r
83888 ZmId.FLD_ITEM_ROW_3PANE="r3";\r
83889 ZmId.FLD_LOCATION="lo";\r
83890 ZmId.FLD_NAME="na";\r
83891 ZmId.FLD_NOTES="no";\r
83892 ZmId.FLD_PARTICIPANT="pa";\r
83893 ZmId.FLD_PCOMPLETE="pc";\r
83894 ZmId.FLD_PRIORITY="pr";\r
83895 ZmId.FLD_RECURRENCE="re";\r
83896 ZmId.FLD_SELECTION="se";\r
83897 ZmId.FLD_SELECTION_CELL="sec";\r
83898 ZmId.FLD_SIZE="sz";\r
83899 ZmId.FLD_SORTED_BY="sb";\r
83900 ZmId.FLD_STATUS="st";\r
83901 ZmId.FLD_SUBJECT="su";\r
83902 ZmId.FLD_TAG="tg";\r
83903 ZmId.FLD_TAG_CELL="tc";\r
83904 ZmId.FLD_TYPE="ty";\r
83905 ZmId.FLD_WORK_PHONE="wp";\r
83906 ZmId.OP_ADD_FILTER_RULE="ADD_FILTER_RULE";\r
83907 ZmId.OP_ADD_SIGNATURE="ADD_SIGNATURE";\r
83908 ZmId.OP_ATTACHMENT="ATTACHMENT";\r
83909 ZmId.OP_BROWSE="BROWSE";\r
83910 ZmId.OP_BROWSE_FOLDER="BROWSE_FOLDER";\r
83911 ZmId.OP_CALL="CALL";\r
83912 ZmId.OP_CALL_MANAGER="CALL_MANAGER";\r
83913 ZmId.OP_CAL_REFRESH="CAL_REFRESH";\r
83914 ZmId.OP_CAL_LIST_VIEW="CAL_LIST_VIEW";\r
83915 ZmId.OP_CAL_VIEW_MENU="CAL_VIEW_MENU";\r
83916 ZmId.OP_CANCEL="CANCEL";\r
83917 ZmId.OP_CHECK_ALL="CHECK_ALL";\r
83918 ZmId.OP_CHECK_CALLS="CHECK_CALLS";\r
83919 ZmId.OP_CHECK_MAIL="CHECK_MAIL";\r
83920 ZmId.OP_CHECK_VOICEMAIL="CHECK_VOICEMAIL";\r
83921 ZmId.OP_CLEAR_ALL="CLEAR_ALL";\r
83922 ZmId.OP_CLOSE="CLOSE";\r
83923 ZmId.OP_COMPOSE_FORMAT="COMPOSE_FORMAT";\r
83924 ZmId.OP_COMPOSE_OPTIONS="COMPOSE_OPTIONS";\r
83925 ZmId.OP_CONTACT="CONTACT";\r
83926 ZmId.OP_CREATE_APPT="CREATE_APPT";\r
83927 ZmId.OP_CREATE_TASK="CREATE_TASK";\r
83928 ZmId.OP_CREATE_SLIDE_SHOW="CREATE_SLIDE_SHOW";\r
83929 ZmId.OP_DAY_VIEW="DAY_VIEW";\r
83930 ZmId.OP_DELETE="DELETE";\r
83931 ZmId.OP_DELETE_APPT_INSTANCE="DELETE_INSTANCE";\r
83932 ZmId.OP_DELETE_APPT_SERIES="DELETE_SERIES";\r
83933 ZmId.OP_DELETE_CONV="DELETE_CONV";\r
83934 ZmId.OP_DELETE_MENU="DELETE_MENU";\r
83935 ZmId.OP_DELETE_MSG="DELETE_MSG";\r
83936 ZmId.OP_DETACH="DETACH";\r
83937 ZmId.OP_DETACH_WIN="DETACH_WIN";\r
83938 ZmId.OP_DETACH_COMPOSE="DETACH_COMPOSE";\r
83939 ZmId.OP_DOWNLOAD_VOICEMAIL="DOWNLOAD_VOICEMAIL";\r
83940 ZmId.OP_DRAFT="DRAFT";\r
83941 ZmId.OP_EDIT="EDIT";\r
83942 ZmId.OP_EDIT_CONTACT="EDIT_CONTACT";\r
83943 ZmId.OP_EDIT_FILTER_RULE="EDIT_FILTER_RULE";\r
83944 ZmId.OP_EDIT_NOTEBOOK_CHROME="EDIT_NOTEBOOK_CHROME";\r
83945 ZmId.OP_EDIT_NOTEBOOK_CHROME="EDIT_NOTEBOOK_CHROME";\r
83946 ZmId.OP_EDIT_NOTEBOOK_FOOTER="EDIT_NOTEBOOK_FOOTER";\r
83947 ZmId.OP_EDIT_NOTEBOOK_HEADER="EDIT_NOTEBOOK_HEADER";\r
83948 ZmId.OP_EDIT_NOTEBOOK_INDEX="EDIT_NOTEBOOK_INDEX";\r
83949 ZmId.OP_EDIT_NOTEBOOK_SIDE_BAR="EDIT_NOTEBOOK_SIDE_BAR";\r
83950 ZmId.OP_EDIT_PROPS="EDIT_PROPS";\r
83951 ZmId.OP_EDIT_REPLY_ACCEPT="EDIT_REPLY_ACCEPT";\r
83952 ZmId.OP_EDIT_REPLY_CANCEL="EDIT_REPLY_CANCEL";\r
83953 ZmId.OP_EDIT_REPLY_DECLINE="EDIT_REPLY_DECLINE";\r
83954 ZmId.OP_EDIT_REPLY_TENTATIVE="EDIT_REPLY_TENTATIVE";\r
83955 ZmId.OP_EMPTY_FOLDER="EMPTY_FOLDER";\r
83956 ZmId.OP_EXPAND="EXPAND";\r
83957 ZmId.OP_EXPAND_ALL="EXPAND_ALL";\r
83958 ZmId.OP_FORMAT_HTML="FORMAT_HTML";\r
83959 ZmId.OP_FORMAT_HTML_SOURCE="FORMAT_HTML_SOURCE";\r
83960 ZmId.OP_FORMAT_MEDIA_WIKI="FORMAT_MEDIA_WIKI";\r
83961 ZmId.OP_FORMAT_RICH_TEXT="FORMAT_RICH_TEXT";\r
83962 ZmId.OP_FORMAT_TEXT="FORMAT_TEXT";\r
83963 ZmId.OP_FORMAT_TWIKI="FORMAT_TWIKI";\r
83964 ZmId.OP_FORWARD="FORWARD";\r
83965 ZmId.OP_FORWARD_ATT="FORWARD_ATT";\r
83966 ZmId.OP_FORWARD_BY_EMAIL="FORWARD_BY_EMAIL";\r
83967 ZmId.OP_FORWARD_INLINE="FORWARD_INLINE";\r
83968 ZmId.OP_FORWARD_MENU="FORWARD_MENU";\r
83969 ZmId.OP_FORWARD_APPT="FORWARD_APPT";\r
83970 ZmId.OP_FORWARD_APPT_INSTANCE="FORWARD_APPT_INSTANCE";\r
83971 ZmId.OP_FORWARD_APPT_SERIES="FORWARD_APPT_SERIES";\r
83972 ZmId.OP_FREE_BUSY_LINK="FREE_BUSY_LINK";\r
83973 ZmId.OP_GO_TO_URL="GO_TO_URL";\r
83974 ZmId.OP_IM="IM";\r
83975 ZmId.OP_IMPORT_FILE="IMPORT_FILE";\r
83976 ZmId.OP_IM_ADD_TO_CONTACT="IM_ADD_TO_CONTACT";\r
83977 ZmId.OP_IM_BLOCK_BUDDY="IM_BLOCK_BUDDY";\r
83978 ZmId.OP_IM_BUDDY_ARCHIVE="IM_BUDDY_ARCHIVE";\r
83979 ZmId.OP_IM_BUDDY_LIST="IM_BUDDY_LIST";\r
83980 ZmId.OP_IM_CLOSE_ALL_CHATS="IM_CLOSE_ALL_CHATS";\r
83981 ZmId.OP_IM_CLOSE_OTHER_CHATS="IM_CLOSE_OTHER_CHATS";\r
83982 ZmId.OP_IM_CLOSE_CHAT="IM_CLOSE_CHATS";\r
83983 ZmId.OP_IM_CREATE_CONTACT="IM_CREATE_CONTACT";\r
83984 ZmId.OP_IM_EDIT_CONTACT="IM_EDIT_CONTACT";\r
83985 ZmId.OP_IM_HTML="IM_HTML";\r
83986 ZmId.OP_IM_DELETE_GROUP="IM_DELETE_GROUP";\r
83987 ZmId.OP_IM_INVITE="IM_INVITE";\r
83988 ZmId.OP_IM_NEW_CHAT="IM_NEW_CHAT";\r
83989 ZmId.OP_IM_PRESENCE_AWAY="IM_PRESENCE_AWAY";\r
83990 ZmId.OP_IM_PRESENCE_CHAT="IM_PRESENCE_CHAT";\r
83991 ZmId.OP_IM_PRESENCE_CUSTOM_MSG="IM_PRESENCE_CUSTOM_MSG";\r
83992 ZmId.OP_IM_PRESENCE_DND="IM_PRESENCE_DND";\r
83993 ZmId.OP_IM_PRESENCE_INVISIBLE="IM_PRESENCE_INVISIBLE";\r
83994 ZmId.OP_IM_PRESENCE_MENU="IM_PRESENCE_MENU";\r
83995 ZmId.OP_IM_PRESENCE_OFFLINE="IM_PRESENCE_OFFLINE";\r
83996 ZmId.OP_IM_PRESENCE_ONLINE="IM_PRESENCE_ONLINE";\r
83997 ZmId.OP_IM_PRESENCE_XA="IM_PRESENCE_XA";\r
83998 ZmId.OP_IM_LOGOUT_YAHOO="IM_LOGOUT_YAHOO";\r
83999 ZmId.OP_IM_PRESENCE_CUSTOM_MRU="IM_PRESENCE_CUSTOM_MRU";\r
84000 ZmId.OP_IM_PRESENCE_MENU="IM_PRESENCE_MENU";\r
84001 ZmId.OP_IM_SORT_BY_NAME="IM_SORT_BY_NAME";\r
84002 ZmId.OP_IM_SORT_BY_PRESENCE="IM_SORT_BY_PRESENCE";\r
84003 ZmId.OP_IM_TOGGLE_BLOCKED="IM_TOGGLE_BLOCKED";\r
84004 ZmId.OP_IM_TOGGLE_OFFLINE="IM_TOGGLE_OFFLINE";\r
84005 ZmId.OP_IM_UNBLOCK_BUDDY="IM_UNBLOCK_BUDDY";\r
84006 ZmId.OP_INC_ATTACHMENT="INC_ATTACHMENT";\r
84007 ZmId.OP_INC_NONE="INC_NONE";\r
84008 ZmId.OP_INC_NO_PREFIX="INC_NO_PREFIX";\r
84009 ZmId.OP_INC_PREFIX="INC_PREFIX";\r
84010 ZmId.OP_INC_PREFIX_FULL="INC_PREFIX_FULL";\r
84011 ZmId.OP_INC_SMART="INC_SMART";\r
84012 ZmId.OP_INVITE_REPLY_ACCEPT="INVITE_REPLY_ACCEPT";\r
84013 ZmId.OP_INVITE_REPLY_DECLINE="INVITE_REPLY_DECLINE";\r
84014 ZmId.OP_INVITE_REPLY_MENU="INVITE_REPLY_MENU";\r
84015 ZmId.OP_INVITE_REPLY_TENTATIVE="INVITE_REPLY_TENTATIVE";\r
84016 ZmId.OP_MARK_ALL_READ="MARK_ALL_READ";\r
84017 ZmId.OP_MARK_HEARD="MARK_HEARD";\r
84018 ZmId.OP_MARK_READ="MARK_READ";\r
84019 ZmId.OP_MARK_UNHEARD="MARK_UNHEARD";\r
84020 ZmId.OP_MARK_UNREAD="MARK_UNREAD";\r
84021 ZmId.OP_MOBILE_CANCEL_WIPE="MOBILE_CANCEL_WIPE";\r
84022 ZmId.OP_MOBILE_RESUME_SYNC="MOBILE_RESUME_SYNC";\r
84023 ZmId.OP_MOBILE_SUSPEND_SYNC="MOBILE_SUSPEND_SYNC";\r
84024 ZmId.OP_MOBILE_WIPE="MOBILE_WIPE";\r
84025 ZmId.OP_MONTH_VIEW="MONTH_VIEW";\r
84026 ZmId.OP_MOUNT_ADDRBOOK="MOUNT_ADDRBOOK";\r
84027 ZmId.OP_MOUNT_BRIEFCASE="MOUNT_BRIEFCASE";\r
84028 ZmId.OP_MOUNT_CALENDAR="MOUNT_CALENDAR";\r
84029 ZmId.OP_MOUNT_FOLDER="MOUNT_FOLDER";\r
84030 ZmId.OP_MOUNT_NOTEBOOK="MOUNT_NOTEBOOK";\r
84031 ZmId.OP_MOUNT_TASK_FOLDER="MOUNT_TASK_FOLDER";\r
84032 ZmId.OP_MOVE="MOVE";\r
84033 ZmId.OP_MOVE_DOWN_FILTER_RULE="MOVE_DOWN_FILTER_RULE";\r
84034 ZmId.OP_MOVE_UP_FILTER_RULE="MOVE_UP_FILTER_RULE";\r
84035 ZmId.OP_NEW_ADDRBOOK="NEW_ADDRBOOK";\r
84036 ZmId.OP_NEW_ALLDAY_APPT="NEW_ALLDAY_APPT";\r
84037 ZmId.OP_NEW_APPT="NEW_APPT";\r
84038 ZmId.OP_NEW_BRIEFCASEITEM="NEW_BRIEFCASEITEM";\r
84039 ZmId.OP_NEW_CALENDAR="NEW_CALENDAR";\r
84040 ZmId.OP_NEW_CONTACT="NEW_CONTACT";\r
84041 ZmId.OP_NEW_DOC="NEW_DOC";\r
84042 ZmId.OP_NEW_FILE="NEW_FILE";\r
84043 ZmId.OP_NEW_FOLDER="NEW_FOLDER";\r
84044 ZmId.OP_NEW_GROUP="NEW_GROUP";\r
84045 ZmId.OP_NEW_MENU="NEW_MENU";\r
84046 ZmId.OP_NEW_MESSAGE="NEW_MESSAGE";\r
84047 ZmId.OP_NEW_MESSAGE_WIN="NEW_MESSAGE_WIN";\r
84048 ZmId.OP_NEW_NOTEBOOK="NEW_NOTEBOOK";\r
84049 ZmId.OP_NEW_PAGE="NEW_PAGE";\r
84050 ZmId.OP_NEW_PRESENTATION="NEW_PRESENTATION";\r
84051 ZmId.OP_NEW_ROSTER_GROUP="NEW_ROSTER_GROUP";\r
84052 ZmId.OP_NEW_ROSTER_ITEM="NEW_ROSTER_ITEM";\r
84053 ZmId.OP_NEW_SPREADSHEET="NEW_SPREADSHEET";\r
84054 ZmId.OP_NEW_TAG="NEW_TAG";\r
84055 ZmId.OP_NEW_TASK="NEW_TASK";\r
84056 ZmId.OP_NOTIFY="NOTIFY";\r
84057 ZmId.OP_NEW_TASK_FOLDER="NEW_TASK_FOLDER";\r
84058 ZmId.OP_OPEN_APPT_INSTANCE="OPEN_APPT_INSTANCE";\r
84059 ZmId.OP_OPEN_APPT_SERIES="OPEN_APPT_SERIES";\r
84060 ZmId.OP_OPEN_FILE="OPEN_FILE";\r
84061 ZmId.OP_PAGE_BACK="PAGE_BACK";\r
84062 ZmId.OP_PAGE_FORWARD="PAGE_FORWARD";\r
84063 ZmId.OP_PAUSE_TOGGLE="PAUSE_TOGGLE";\r
84064 ZmId.OP_PRINT="PRINT";\r
84065 ZmId.OP_PRINT_ADDRBOOK="PRINT_ADDRBOOK";\r
84066 ZmId.OP_PRINT_CONTACT="PRINT_CONTACT";\r
84067 ZmId.OP_REFRESH="REFRESH";\r
84068 ZmId.OP_REMOVE_FILTER_RULE="REMOVE_FILTER_RULE";\r
84069 ZmId.OP_RENAME_FOLDER="RENAME_FOLDER";\r
84070 ZmId.OP_RENAME_SEARCH="RENAME_SEARCH";\r
84071 ZmId.OP_RENAME_TAG="RENAME_TAG";\r
84072 ZmId.OP_REPLY="REPLY";\r
84073 ZmId.OP_REPLY_ACCEPT="REPLY_ACCEPT";\r
84074 ZmId.OP_REPLY_ACCEPT_IGNORE="REPLY_ACCEPT_IGNORE";\r
84075 ZmId.OP_REPLY_ACCEPT_NOTIFY="REPLY_ACCEPT_NOTIFY";\r
84076 ZmId.OP_REPLY_ALL="REPLY_ALL";\r
84077 ZmId.OP_REPLY_BY_EMAIL="REPLY_BY_EMAIL";\r
84078 ZmId.OP_REPLY_CANCEL="REPLY_CANCEL";\r
84079 ZmId.OP_REPLY_CANCEL="REPLY_CANCEL";\r
84080 ZmId.OP_REPLY_DECLINE="REPLY_DECLINE";\r
84081 ZmId.OP_REPLY_DECLINE_IGNORE="REPLY_DECLINE_IGNORE";\r
84082 ZmId.OP_REPLY_DECLINE_NOTIFY="REPLY_DECLINE_NOTIFY";\r
84083 ZmId.OP_REPLY_MENU="REPLY_MENU";\r
84084 ZmId.OP_REPLY_MODIFY="REPLY_MODIFY";\r
84085 ZmId.OP_REPLY_MODIFY="REPLY_MODIFY";\r
84086 ZmId.OP_REPLY_NEW_TIME="REPLY_NEW_TIME";\r
84087 ZmId.OP_REPLY_NEW_TIME="REPLY_NEW_TIME";\r
84088 ZmId.OP_REPLY_TENTATIVE="REPLY_TENTATIVE";\r
84089 ZmId.OP_REPLY_TENTATIVE_IGNORE="REPLY_TENTATIVE_IGNORE";\r
84090 ZmId.OP_REPLY_TENTATIVE_NOTIFY="REPLY_TENTATIVE_NOTIFY";\r
84091 ZmId.OP_REPORT="REPORT";\r
84092 ZmId.OP_REQUEST_READ_RECEIPT="REQUEST_READ_RECEIPT";\r
84093 ZmId.OP_RESET="RESET";\r
84094 ZmId.OP_REVERT_PAGE="REVERT_PAGE";\r
84095 ZmId.OP_RUN_FILTER_RULE="RUN_FILTER_RULE";\r
84096 ZmId.OP_SAVE="SAVE";\r
84097 ZmId.OP_SAVE_DRAFT="SAVE_DRAFT";\r
84098 ZmId.OP_SAVE_FILE="SAVE_FILE";\r
84099 ZmId.OP_SCHEDULE_VIEW="SCHEDULE_VIEW";\r
84100 ZmId.OP_SEARCH="SEARCH";\r
84101 ZmId.OP_SEARCH_MAIL="SEARCH_MAIL";\r
84102 ZmId.OP_SEND="SEND";\r
84103 ZmId.OP_SEND_FILE="SEND_FILE";\r
84104 ZmId.OP_SEND_FILE_AS_ATT="SEND_FILE_AS_ATT";\r
84105 ZmId.OP_SEND_FILE_MENU="SEND_FILE_MENU";\r
84106 ZmId.OP_SEND_PAGE="SEND_PAGE";\r
84107 ZmId.OP_SHARE="SHARE";\r
84108 ZmId.OP_SHARE_ACCEPT="SHARE_ACCEPT";\r
84109 ZmId.OP_SHARE_ADDRBOOK="SHARE_ADDRBOOK";\r
84110 ZmId.OP_SHARE_BRIEFCASE="SHARE_BRIEFCASE";\r
84111 ZmId.OP_SHARE_CALENDAR="SHARE_CALENDAR";\r
84112 ZmId.OP_SHARE_DECLINE="SHARE_DECLINE";\r
84113 ZmId.OP_SHARE_FOLDER="SHARE_FOLDER";\r
84114 ZmId.OP_SHARE_NOTEBOOK="SHARE_NOTEBOOK";\r
84115 ZmId.OP_SHARE_TASKFOLDER="SHARE_TASKFOLDER";\r
84116 ZmId.OP_SHOW_ALL_ITEM_TYPES="SHOW_ALL_ITEM_TYPES";\r
84117 ZmId.OP_SHOW_BCC="SHOW_BCC";\r
84118 ZmId.OP_SHOW_ONLY_CONTACTS="SHOW_ONLY_CONTACTS";\r
84119 ZmId.OP_SHOW_ONLY_MAIL="SHOW_ONLY_MAIL";\r
84120 ZmId.OP_SHOW_ORIG="SHOW_ORIG";\r
84121 ZmId.OP_SPAM="SPAM";\r
84122 ZmId.OP_SPELL_CHECK="SPELL_CHECK";\r
84123 ZmId.OP_SYNC="SYNC";\r
84124 ZmId.OP_SYNC_OFFLINE_FOLDER="SYNC_OFFLINE_FOLDER";\r
84125 ZmId.OP_TAG="TAG";\r
84126 ZmId.OP_TAG_COLOR_MENU="TAG_COLOR_MENU";\r
84127 ZmId.OP_TAG_MENU="TAG_MENU";\r
84128 ZmId.OP_PRINT_TASK="PRINT_TASK";\r
84129 ZmId.OP_PRINT_TASKFOLDER="PRINT_TASKFOLDER";\r
84130 ZmId.OP_TEXT="TEXT";\r
84131 ZmId.OP_TODAY="TODAY";\r
84132 ZmId.OP_UNDELETE="UNDELETE";\r
84133 ZmId.OP_VIEW="VIEW";\r
84134 ZmId.OP_VIEW_APPOINTMENT="VIEW_APPOINTMENT";\r
84135 ZmId.OP_VIEW_APPT_INSTANCE="VIEW_APPT_INSTANCE";\r
84136 ZmId.OP_VIEW_APPT_SERIES="VIEW_APPT_SERIES";\r
84137 ZmId.OP_VIEW_BY_DATE="VIEW_BY_DATE";\r
84138 ZmId.OP_VIEW_FILE_AS_HTML="VIEW_FILE_AS_HTML";\r
84139 ZmId.OP_VIEW_MENU="VIEW_MENU";\r
84140 ZmId.OP_WEEK_VIEW="WEEK_VIEW";\r
84141 ZmId.OP_WORK_WEEK_VIEW="WORK_WEEK_VIEW";\r
84142 ZmId.OP_ZIMLET="ZIMLET";\r
84143 ZmId.OP_SYNC_ALL="SYNC_ALL"\r
84144 }\r
84145 if(AjxPackage.define("zimbraMail.share.model.events.ZmEvent")){\r
84146 ZmEvent=function(e){\r
84147 this.type=e;\r
84148 this.event=null;\r
84149 this.source=null;\r
84150 this.item=null;\r
84151 this._details={}\r
84152 };\r
84153 ZmEvent.L_MODIFY=1;\r
84154 ZmEvent.L_PICKER=2;\r
84155 ZmEvent.S_TAG="TAG";\r
84156 ZmEvent.S_PICKER="PICKER";\r
84157 ZmEvent.S_SEARCH="SEARCH";\r
84158 ZmEvent.S_SETTING="SETTING";\r
84159 ZmEvent.S_SETTINGS="SETTINGS";\r
84160 ZmEvent.S_MOUNTPOINT="MOUNTPOINT";\r
84161 ZmEvent.S_ZIMLET="ZIMLET";\r
84162 ZmEvent.E_CREATE="CREATE";\r
84163 ZmEvent.E_DELETE="DELETE";\r
84164 ZmEvent.E_MODIFY="MODIFY";\r
84165 ZmEvent.E_LOAD="LOAD";\r
84166 ZmEvent.E_REMOVE="REMOVE";\r
84167 ZmEvent.E_REMOVE_ALL="REMOVE ALL";\r
84168 ZmEvent.E_MOVE="MOVE";\r
84169 ZmEvent.E_FLAGS="FLAGS";\r
84170 ZmEvent.E_TAGS="TAGS";\r
84171 ZmEvent.E_ZIMLETS="ZIMLET";\r
84172 ZmEvent.prototype.toString=function(){\r
84173 return"ZmEvent"\r
84174 };\r
84175 ZmEvent.prototype.set=function(e,t){\r
84176 this.event=e;\r
84177 this.source=t;\r
84178 this.handled=false\r
84179 };\r
84180 ZmEvent.prototype.setDetail=function(t,e){\r
84181 this._details[t]=e\r
84182 };\r
84183 ZmEvent.prototype.getDetail=function(e){\r
84184 return this._details[e]\r
84185 };\r
84186 ZmEvent.prototype.getItems=function(){\r
84187 var e=this._details.items;\r
84188 return e?e:[]\r
84189 };\r
84190 ZmEvent.prototype.setDetails=function(e){\r
84191 this._details=e?e:{}\r
84192 };\r
84193 ZmEvent.prototype.getDetails=function(){\r
84194 return this._details\r
84195 }\r
84196 }\r
84197 if(AjxPackage.define("zimbraMail.share.model.events.ZmAppEvent")){\r
84198 ZmAppEvent=function(e){\r
84199 ZmEvent.call(this)\r
84200 };\r
84201 ZmAppEvent.prototype=new ZmEvent;\r
84202 ZmAppEvent.prototype.constructor=ZmAppEvent;\r
84203 ZmAppEvent.PRE_STARTUP="PRESTARTUP";\r
84204 ZmAppEvent.POST_STARTUP="POSTSTARTUP";\r
84205 ZmAppEvent.PRE_LAUNCH="PRELAUNCH";\r
84206 ZmAppEvent.POST_LAUNCH="POSTLAUNCH";\r
84207 ZmAppEvent.POST_RENDER="POSTRENDER";\r
84208 ZmAppEvent.ACTIVATE="ACTIVATE";\r
84209 ZmAppEvent.prototype.toString=function(){\r
84210 return"ZmAppEvent"\r
84211 }\r
84212 }\r
84213 if(AjxPackage.define("zimbraMail.share.model.ZmModel")){\r
84214 ZmModel=function(e){\r
84215 if(arguments.length==0){\r
84216 return\r
84217 }\r
84218 this._evt=new ZmEvent(e);\r
84219 this._evtMgr=new AjxEventMgr()\r
84220 };\r
84221 ZmModel.prototype.toString=function(){\r
84222 return"ZmModel"\r
84223 };\r
84224 ZmModel.prototype.addChangeListener=function(e){\r
84225 return this._evtMgr.addListener(ZmEvent.L_MODIFY,e)\r
84226 };\r
84227 ZmModel.prototype.removeChangeListener=function(e){\r
84228 return this._evtMgr.removeListener(ZmEvent.L_MODIFY,e)\r
84229 };\r
84230 ZmModel.prototype.removeAllChangeListeners=function(){\r
84231 return this._evtMgr.removeAll(ZmEvent.L_MODIFY)\r
84232 };\r
84233 ZmModel.prototype._notify=function(t,e){\r
84234 if(this._evtMgr.isListenerRegistered(ZmEvent.L_MODIFY)){\r
84235 this._evt.set(t,this);\r
84236 this._evt.setDetails(e);\r
84237 this._evtMgr.notifyListeners(ZmEvent.L_MODIFY,this._evt)\r
84238 }};\r
84239 ZmModel.notifyEach=function(o,a,t){\r
84240 if(!(o&&o.length)){\r
84241 return\r
84242 }\r
84243 for(var e=0;\r
84244 e<o.length;\r
84245 e++){\r
84246 o[e]._notify(a,t)\r
84247 }}\r
84248 }\r
84249 if(AjxPackage.define("zimbraMail.share.model.ZmSetting")){\r
84250 ZmSetting=function(t,e){\r
84251 if(arguments.length==0){\r
84252 return\r
84253 }\r
84254 ZmModel.call(this,ZmEvent.S_SETTING);\r
84255 this.id=t;\r
84256 this.name=e.name;\r
84257 this.type=e.type;\r
84258 this.dataType=e.dataType||ZmSetting.D_STRING;\r
84259 this.defaultValue=e.defaultValue;\r
84260 if(this.type==ZmSetting.T_METADATA){\r
84261 this.section=e.section\r
84262 }\r
84263 if(e.isGlobal){\r
84264 ZmSetting.IS_GLOBAL[t]=true\r
84265 }\r
84266 if(e.isImplicit){\r
84267 ZmSetting.IS_IMPLICIT[t]=true\r
84268 }\r
84269 if(this.dataType==ZmSetting.D_HASH){\r
84270 this.value={};\r
84271 this.defaultValue={}\r
84272 }else{\r
84273 if(this.dataType==ZmSetting.D_LIST){\r
84274 this.value=[];\r
84275 this.defaultValue=[]\r
84276 }else{\r
84277 this.value=null\r
84278 }}};\r
84279 ZmSetting.prototype=new ZmModel;\r
84280 ZmSetting.prototype.constructor=ZmSetting;\r
84281 ZmSetting.T_CONFIG="config";\r
84282 ZmSetting.T_COS="cos";\r
84283 ZmSetting.T_METADATA="meta";\r
84284 ZmSetting.T_PREF="pref";\r
84285 ZmSetting.T_PSEUDO="pseudo";\r
84286 ZmSetting.M_IMPLICIT="implicit";\r
84287 ZmSetting.M_OFFLINE="offline";\r
84288 ZmSetting.D_STRING="string";\r
84289 ZmSetting.D_INT="int";\r
84290 ZmSetting.D_BOOLEAN="boolean";\r
84291 ZmSetting.D_LDAP_TIME="ldap_time";\r
84292 ZmSetting.D_HASH="hash";\r
84293 ZmSetting.D_LIST="list";\r
84294 ZmSetting.D_NONE="NONE";\r
84295 ZmSetting.ACL_AUTH="all";\r
84296 ZmSetting.ACL_GROUP="grp";\r
84297 ZmSetting.ACL_NONE="none";\r
84298 ZmSetting.ACL_PUBLIC="pub";\r
84299 ZmSetting.ACL_USER="usr";\r
84300 ZmSetting.CAL_DAY="day";\r
84301 ZmSetting.CAL_LIST="list";\r
84302 ZmSetting.CAL_MONTH="month";\r
84303 ZmSetting.CAL_WEEK="week";\r
84304 ZmSetting.CAL_WORK_WEEK="workWeek";\r
84305 ZmSetting.CAL_SCHEDULE="schedule";\r
84306 ZmSetting.CAL_VISIBILITY_PRIV="private";\r
84307 ZmSetting.CAL_VISIBILITY_PUB="public";\r
84308 ZmSetting.CLIENT_ADVANCED="advanced";\r
84309 ZmSetting.CLIENT_STANDARD="standard";\r
84310 ZmSetting.COMPOSE_FONT_COLOR="#000000";\r
84311 ZmSetting.COMPOSE_FONT_FAM="Times New Roman";\r
84312 ZmSetting.COMPOSE_FONT_SIZE=AjxMessageFormat.format(ZmMsg.pt,"12");\r
84313 ZmSetting.COMPOSE_TEXT="text";\r
84314 ZmSetting.COMPOSE_HTML="html";\r
84315 ZmSetting.CV_CARDS="cards";\r
84316 ZmSetting.CV_LIST="list";\r
84317 ZmSetting.DEDUPE_NONE="dedupeNone";\r
84318 ZmSetting.DEDUPE_SECOND="secondCopyifOnToOrCC";\r
84319 ZmSetting.DEDUPE_INBOX="moveSentMessageToInbox";\r
84320 ZmSetting.DEDUPE_ALL="dedupeAll";\r
84321 ZmSetting.DELETE_SELECT_NEXT="next";\r
84322 ZmSetting.DELETE_SELECT_PREV="previous";\r
84323 ZmSetting.DELETE_SELECT_ADAPT="adaptive";\r
84324 ZmSetting.GETMAIL_ACTION_DEFAULT="default";\r
84325 ZmSetting.GETMAIL_ACTION_UPDATE="update";\r
84326 ZmSetting.GROUP_BY_CONV="conversation";\r
84327 ZmSetting.GROUP_BY_MESSAGE="message";\r
84328 ZmSetting.HTTP_DEFAULT_PORT=80;\r
84329 ZmSetting.HTTPS_DEFAULT_PORT=443;\r
84330 ZmSetting.INCLUDE_NONE="includeNone";\r
84331 ZmSetting.INCLUDE="includeBody";\r
84332 ZmSetting.INCLUDE_PREFIX="includeBodyWithPrefix";\r
84333 ZmSetting.INCLUDE_PREFIX_FULL="includeBodyAndHeadersWithPrefix";\r
84334 ZmSetting.INCLUDE_ATTACH="includeAsAttachment";\r
84335 ZmSetting.INCLUDE_SMART="includeSmart";\r
84336 ZmSetting.LICENSE_BAD="bad";\r
84337 ZmSetting.LICENSE_GOOD="good";\r
84338 ZmSetting.LICENSE_GRACE="inGracePeriod";\r
84339 ZmSetting.MARK_READ_NONE=-1;\r
84340 ZmSetting.MARK_READ_NOW=0;\r
84341 ZmSetting.MARK_READ_TIME=1;\r
84342 ZmSetting.PROTO_HTTP="http:";\r
84343 ZmSetting.PROTO_HTTPS="https:";\r
84344 ZmSetting.PROTO_MIXED="mixed:";\r
84345 ZmSetting.RIGHT_VIEW_FREE_BUSY="viewFreeBusy";\r
84346 ZmSetting.RIGHT_INVITE="invite";\r
84347 ZmSetting.RP_BOTTOM="bottom";\r
84348 ZmSetting.RP_OFF="off";\r
84349 ZmSetting.RP_RIGHT="right";\r
84350 ZmSetting.SIG_INTERNET="internet";\r
84351 ZmSetting.SIG_OUTLOOK="outlook";\r
84352 ZmSetting.LOCALE_NAME="LOCALE_NAME";\r
84353 ZmSetting.SKIN_NAME="SKIN_NAME";\r
84354 ZmSetting.BRIEFCASE_ENABLED="BRIEFCASE_ENABLED";\r
84355 ZmSetting.CALENDAR_ENABLED="CALENDAR_ENABLED";\r
84356 ZmSetting.CONTACTS_ENABLED="CONTACTS_ENABLED";\r
84357 ZmSetting.IM_ENABLED="IM_ENABLED";\r
84358 ZmSetting.MAIL_ENABLED="MAIL_ENABLED";\r
84359 ZmSetting.MIXED_VIEW_ENABLED="MIXED_VIEW_ENABLED";\r
84360 ZmSetting.NOTEBOOK_ENABLED="NOTEBOOK_ENABLED";\r
84361 ZmSetting.OPTIONS_ENABLED="OPTIONS_ENABLED";\r
84362 ZmSetting.PORTAL_ENABLED="PORTAL_ENABLED";\r
84363 ZmSetting.TASKS_ENABLED="TASKS_ENABLED";\r
84364 ZmSetting.VOICE_ENABLED="VOICE_ENABLED";\r
84365 ZmSetting.CALENDAR_UPSELL_ENABLED="CALENDAR_UPSELL_ENABLED";\r
84366 ZmSetting.CONTACTS_UPSELL_ENABLED="CONTACTS_UPSELL_ENABLED";\r
84367 ZmSetting.MAIL_UPSELL_ENABLED="MAIL_UPSELL_ENABLED";\r
84368 ZmSetting.VOICE_UPSELL_ENABLED="VOICE_UPSELL_ENABLED";\r
84369 ZmSetting.APPS_COOKIE="ZM_APPS";\r
84370 ZmSetting.APP_LETTER={};\r
84371 ZmSetting.APP_LETTER[ZmSetting.PORTAL_ENABLED]="p";\r
84372 ZmSetting.APP_LETTER[ZmSetting.MAIL_ENABLED]="m";\r
84373 ZmSetting.APP_LETTER[ZmSetting.CALENDAR_ENABLED]="c";\r
84374 ZmSetting.APP_LETTER[ZmSetting.CONTACTS_ENABLED]="a";\r
84375 ZmSetting.APP_LETTER[ZmSetting.OPTIONS_ENABLED]="o";\r
84376 ZmSetting.APP_LETTER[ZmSetting.IM_ENABLED]="i";\r
84377 ZmSetting.APP_LETTER[ZmSetting.NOTEBOOK_ENABLED]="n";\r
84378 ZmSetting.APP_LETTER[ZmSetting.BRIEFCASE_ENABLED]="b";\r
84379 ZmSetting.APP_LETTER[ZmSetting.TASKS_ENABLED]="t";\r
84380 ZmSetting.APP_LETTER[ZmSetting.MIXED_VIEW_ENABLED]="x";\r
84381 ZmSetting.APP_LETTER[ZmSetting.VOICE_ENABLED]="v";\r
84382 ZmSetting.IS_GLOBAL={};\r
84383 ZmSetting.IS_IMPLICIT={};\r
84384 ZmSetting.CHANGED_IMPLICIT={};\r
84385 ZmSetting.prototype.toString=function(){\r
84386 return this.name+": "+this.value\r
84387 };\r
84388 ZmSetting.prototype.getValue=function(t,a){\r
84389 var s=null;\r
84390 if(this.value!=null){\r
84391 s=t?this.value[t]:this.value\r
84392 }else{\r
84393 if(this.defaultValue!=null){\r
84394 s=t?this.defaultValue[t]:this.defaultValue\r
84395 }else{\r
84396 return null\r
84397 }}\r
84398 if(a){\r
84399 if(this.dataType==ZmSetting.D_BOOLEAN){\r
84400 s=s?"TRUE":"FALSE"\r
84401 }else{\r
84402 if(this.dataType==ZmSetting.D_HASH){\r
84403 var o=[];\r
84404 for(var t in s){\r
84405 o.push(t)\r
84406 }\r
84407 o.sort();\r
84408 var n=[];\r
84409 for(var e=0;\r
84410 e<o.length;\r
84411 e++){\r
84412 var t=o[e];\r
84413 n.push([t,s[t]].join(":"))\r
84414 }\r
84415 s=n.join(",")\r
84416 }else{\r
84417 if(this.dataType==ZmSetting.D_LIST){\r
84418 s=s.join(",")\r
84419 }}}}\r
84420 return s\r
84421 };\r
84422 ZmSetting.prototype.getDefaultValue=function(e){\r
84423 return e?this.defaultValue[e]:this.defaultValue\r
84424 };\r
84425 ZmSetting.prototype.setValue=function(s,r,n,o,c){\r
84426 var e=s;\r
84427 var t=Boolean(e!=this.value);\r
84428 if(this.dataType==ZmSetting.D_STRING){\r
84429 this.value=e\r
84430 }else{\r
84431 if(this.dataType==ZmSetting.D_INT){\r
84432 e=parseInt(s);\r
84433 if(isNaN(e)){\r
84434 e=s\r
84435 }\r
84436 t=Boolean(e!=this.value);\r
84437 this.value=e\r
84438 }else{\r
84439 if(this.dataType==ZmSetting.D_BOOLEAN){\r
84440 if(typeof(e)=="string"){\r
84441 e=(e.toLowerCase()==="true")\r
84442 }\r
84443 t=Boolean(e!=this.value);\r
84444 this.value=e\r
84445 }else{\r
84446 if(this.dataType==ZmSetting.D_LDAP_TIME){\r
84447 var h=(e.toLowerCase)?h=(e.toLowerCase()).charAt(e.length-1):null;\r
84448 var a=parseInt(e);\r
84449 if(h=="d"){\r
84450 e=a*24*60*60\r
84451 }else{\r
84452 if(h=="h"){\r
84453 e=a*60*60\r
84454 }else{\r
84455 if(h=="m"){\r
84456 e=a*60\r
84457 }else{\r
84458 e=a\r
84459 }}}\r
84460 t=Boolean(e!=this.value);\r
84461 this.value=e\r
84462 }else{\r
84463 if(this.dataType==ZmSetting.D_HASH){\r
84464 if(r){\r
84465 if(e){\r
84466 this.value[r]=e\r
84467 }else{\r
84468 delete this.value[r]\r
84469 }}else{\r
84470 this.value=e\r
84471 }\r
84472 t=true\r
84473 }else{\r
84474 if(this.dataType==ZmSetting.D_LIST){\r
84475 if(e instanceof Array){\r
84476 this.value=e\r
84477 }else{\r
84478 this.value.push(e)\r
84479 }\r
84480 t=true\r
84481 }}}}}}\r
84482 if(n){\r
84483 if(r){\r
84484 this.defaultValue[r]=this.value[r]\r
84485 }else{\r
84486 this.defaultValue=this.value\r
84487 }}\r
84488 if(ZmSetting.IS_IMPLICIT[this.id]&&t&&!c){\r
84489 ZmSetting.CHANGED_IMPLICIT[this.id]=true\r
84490 }\r
84491 if(!this.name&&!o){\r
84492 this._notify(ZmEvent.E_MODIFY,r)\r
84493 }};\r
84494 ZmSetting.prototype.notifyModify=function(e){\r
84495 if(this.id==ZmSetting.QUOTA_USED&&e._name=="mbx"&&e.s!=null){\r
84496 this.setValue(e.s);\r
84497 this._notify(ZmEvent.E_MODIFY)\r
84498 }}\r
84499 }\r
84500 if(AjxPackage.define("zimbraMail.core.ZmAppCtxt")){\r
84501 ZmAppCtxt=function(){\r
84502 this._trees={};\r
84503 this.accountList=new ZmAccountList();\r
84504 this.accountList.add(new ZmZimbraAccount(ZmAccountList.DEFAULT_ID,null,false));\r
84505 this.inStartup=false;\r
84506 this.currentRequestParams=null;\r
84507 this.rememberMe=null;\r
84508 this.userDomain="";\r
84509 this.isFamilyMbox=false;\r
84510 this.multiAccounts=false;\r
84511 this._evtMgr=new AjxEventMgr();\r
84512 this._itemCache={};\r
84513 this._itemCacheDeferred={}\r
84514 };\r
84515 ZmAppCtxt._ZIMLETS_EVENT="ZIMLETS";\r
84516 ZmAppCtxt.prototype.toString=function(){\r
84517 return"ZmAppCtxt"\r
84518 };\r
84519 ZmAppCtxt.prototype.setAppController=function(e){\r
84520 this._appController=e\r
84521 };\r
84522 ZmAppCtxt.prototype.getAppController=function(){\r
84523 return this._appController\r
84524 };\r
84525 ZmAppCtxt.prototype.getAppChooser=function(){\r
84526 return this._appController.getAppChooser()\r
84527 };\r
84528 ZmAppCtxt.prototype.setRequestMgr=function(e){\r
84529 this._requestMgr=e\r
84530 };\r
84531 ZmAppCtxt.prototype.getRequestMgr=function(){\r
84532 return this._requestMgr\r
84533 };\r
84534 ZmAppCtxt.prototype.setStatusMsg=function(e){\r
84535 e=Dwt.getParams(arguments,ZmStatusView.MSG_PARAMS);\r
84536 this._appController.setStatusMsg(e)\r
84537 };\r
84538 ZmAppCtxt.prototype.getSettings=function(e){\r
84539 var t=this.accountList;\r
84540 var o=e?e.id:t.activeAccount?t.activeAccount.id:ZmAccountList.DEFAULT_ID;\r
84541 var a=t.getAccount(o);\r
84542 return a&&a.settings\r
84543 };\r
84544 ZmAppCtxt.prototype.setSettings=function(e,t){\r
84545 var a=this.accountList;\r
84546 var n=t?t.id:a.activeAccount?a.activeAccount.id:ZmAccountList.DEFAULT_ID;\r
84547 var o=a.getAccount(n);\r
84548 if(o){\r
84549 o.settings=e\r
84550 }};\r
84551 ZmAppCtxt.prototype.getMetaData=function(){\r
84552 if(!this._metaData){\r
84553 this._metaData=new ZmMetaData()\r
84554 }\r
84555 return this._metaData\r
84556 };\r
84557 ZmAppCtxt.prototype.get=function(o,e,t){\r
84558 var a=(this.isOffline&&ZmSetting.IS_GLOBAL[o])?this.accountList.mainAccount:t;\r
84559 return this.getSettings(a).get(o,e)\r
84560 };\r
84561 ZmAppCtxt.prototype.set=function(h,s,t,o,e,n){\r
84562 var r=(this.isOffline&&ZmSetting.IS_GLOBAL[h])?this.accountList.mainAccount:n;\r
84563 var a=this.getSettings(r).getSetting(h);\r
84564 if(a){\r
84565 a.setValue(s,t,o,e)\r
84566 }};\r
84567 ZmAppCtxt.prototype.getApp=function(e){\r
84568 return this._appController.getApp(e)\r
84569 };\r
84570 ZmAppCtxt.prototype.getCurrentAppName=function(){\r
84571 var e=this.isChildWindow?parentAppCtxt:this;\r
84572 return e._appController.getActiveApp()\r
84573 };\r
84574 ZmAppCtxt.prototype.getCurrentApp=function(){\r
84575 return this.getApp(this.getCurrentAppName())\r
84576 };\r
84577 ZmAppCtxt.prototype.getAppViewMgr=function(){\r
84578 return this._appController.getAppViewMgr()\r
84579 };\r
84580 ZmAppCtxt.prototype.getClientCmdHandler=function(e){\r
84581 if(!this._clientCmdHandler){\r
84582 AjxDispatcher.require("Extras");\r
84583 this._clientCmdHandler=new ZmClientCmdHandler()\r
84584 }\r
84585 return this._clientCmdHandler\r
84586 };\r
84587 ZmAppCtxt.prototype.getSearchController=function(){\r
84588 if(!this._searchController){\r
84589 this._searchController=new ZmSearchController(this._shell)\r
84590 }\r
84591 return this._searchController\r
84592 };\r
84593 ZmAppCtxt.prototype.getOverviewController=function(){\r
84594 if(!this._overviewController){\r
84595 this._overviewController=new ZmOverviewController(this._shell)\r
84596 }\r
84597 return this._overviewController\r
84598 };\r
84599 ZmAppCtxt.prototype.getImportExportController=function(){\r
84600 if(!this._importExportController){\r
84601 AjxDispatcher.require("ImportExport");\r
84602 this._importExportController=new ZmImportExportController()\r
84603 }\r
84604 return this._importExportController\r
84605 };\r
84606 ZmAppCtxt.prototype.getLoginDialog=function(){\r
84607 if(!this._loginDialog){\r
84608 this._loginDialog=new ZmLoginDialog(this._shell)\r
84609 }\r
84610 return this._loginDialog\r
84611 };\r
84612 ZmAppCtxt.prototype.getMsgDialog=function(){\r
84613 if(!this._msgDialog){\r
84614 this._msgDialog=new DwtMessageDialog({\r
84615 parent:this._shell}\r
84616 )\r
84617 }\r
84618 return this._msgDialog\r
84619 };\r
84620 ZmAppCtxt.prototype.getYesNoMsgDialog=function(){\r
84621 if(!this._yesNoMsgDialog){\r
84622 this._yesNoMsgDialog=new DwtMessageDialog({\r
84623 parent:this._shell,buttons:[DwtDialog.YES_BUTTON,DwtDialog.NO_BUTTON]}\r
84624 )\r
84625 }\r
84626 return this._yesNoMsgDialog\r
84627 };\r
84628 ZmAppCtxt.prototype.getYesNoCancelMsgDialog=function(){\r
84629 if(!this._yesNoCancelMsgDialog){\r
84630 this._yesNoCancelMsgDialog=new DwtMessageDialog({\r
84631 parent:this._shell,buttons:[DwtDialog.YES_BUTTON,DwtDialog.NO_BUTTON,DwtDialog.CANCEL_BUTTON]}\r
84632 )\r
84633 }\r
84634 return this._yesNoCancelMsgDialog\r
84635 };\r
84636 ZmAppCtxt.prototype.getOkCancelMsgDialog=function(){\r
84637 if(!this._okCancelMsgDialog){\r
84638 this._okCancelMsgDialog=new DwtMessageDialog({\r
84639 parent:this._shell,buttons:[DwtDialog.OK_BUTTON,DwtDialog.CANCEL_BUTTON]}\r
84640 )\r
84641 }\r
84642 return this._okCancelMsgDialog\r
84643 };\r
84644 ZmAppCtxt.prototype.getCancelMsgDialog=function(){\r
84645 if(!this._cancelMsgDialog){\r
84646 this._cancelMsgDialog=new DwtMessageDialog({\r
84647 parent:this._shell,buttons:[DwtDialog.CANCEL_BUTTON]}\r
84648 )\r
84649 }\r
84650 return this._cancelMsgDialog\r
84651 };\r
84652 ZmAppCtxt.prototype.getErrorDialog=function(){\r
84653 if(!this._errorDialog){\r
84654 AjxDispatcher.require("Startup2");\r
84655 this._errorDialog=new ZmErrorDialog(this._shell,ZmMsg)\r
84656 }\r
84657 return this._errorDialog\r
84658 };\r
84659 ZmAppCtxt.prototype.getNewTagDialog=function(){\r
84660 if(!this._newTagDialog){\r
84661 this._newTagDialog=new ZmNewTagDialog(this._shell)\r
84662 }\r
84663 return this._newTagDialog\r
84664 };\r
84665 ZmAppCtxt.prototype.getRenameTagDialog=function(){\r
84666 if(!this._renameTagDialog){\r
84667 AjxDispatcher.require("Extras");\r
84668 this._renameTagDialog=new ZmRenameTagDialog(this._shell)\r
84669 }\r
84670 return this._renameTagDialog\r
84671 };\r
84672 ZmAppCtxt.prototype.getNewFolderDialog=function(){\r
84673 if(!this._newFolderDialog){\r
84674 this._newFolderDialog=new ZmNewFolderDialog(this._shell)\r
84675 }\r
84676 return this._newFolderDialog\r
84677 };\r
84678 ZmAppCtxt.prototype.getNewAddrBookDialog=function(){\r
84679 if(!this._newAddrBookDialog){\r
84680 AjxDispatcher.require("Contacts");\r
84681 this._newAddrBookDialog=new ZmNewAddrBookDialog(this._shell)\r
84682 }\r
84683 return this._newAddrBookDialog\r
84684 };\r
84685 ZmAppCtxt.prototype.getNewCalendarDialog=function(){\r
84686 if(!this._newCalendarDialog){\r
84687 AjxDispatcher.require(["CalendarCore","Calendar","CalendarAppt"]);\r
84688 this._newCalendarDialog=new ZmNewCalendarDialog(this._shell)\r
84689 }\r
84690 return this._newCalendarDialog\r
84691 };\r
84692 ZmAppCtxt.prototype.getNewNotebookDialog=function(){\r
84693 if(!this._newNotebookDialog){\r
84694 AjxDispatcher.require(["NotebookCore","Notebook"]);\r
84695 this._newNotebookDialog=new ZmNewNotebookDialog(this._shell)\r
84696 }\r
84697 return this._newNotebookDialog\r
84698 };\r
84699 ZmAppCtxt.prototype.getNewTaskFolderDialog=function(){\r
84700 if(!this._newTaskFolderDialog){\r
84701 AjxDispatcher.require(["TasksCore","Tasks"]);\r
84702 this._newTaskFolderDialog=new ZmNewTaskFolderDialog(this._shell)\r
84703 }\r
84704 return this._newTaskFolderDialog\r
84705 };\r
84706 ZmAppCtxt.prototype.getPageConflictDialog=function(){\r
84707 if(!this._pageConflictDialog){\r
84708 AjxDispatcher.require(["NotebookCore","Notebook"]);\r
84709 this._pageConflictDialog=new ZmPageConflictDialog(this._shell)\r
84710 }\r
84711 return this._pageConflictDialog\r
84712 };\r
84713 ZmAppCtxt.prototype.getDialog=function(){\r
84714 if(!this._dialog){\r
84715 this._dialog=new DwtDialog({\r
84716 parent:this._shell}\r
84717 )\r
84718 }\r
84719 return this._dialog\r
84720 };\r
84721 ZmAppCtxt.prototype.getNewSearchDialog=function(){\r
84722 if(!this._newSearchDialog){\r
84723 this._newSearchDialog=new ZmNewSearchDialog(this._shell)\r
84724 }\r
84725 return this._newSearchDialog\r
84726 };\r
84727 ZmAppCtxt.prototype.getRenameFolderDialog=function(){\r
84728 if(!this._renameFolderDialog){\r
84729 AjxDispatcher.require("Extras");\r
84730 this._renameFolderDialog=new ZmRenameFolderDialog(this._shell)\r
84731 }\r
84732 return this._renameFolderDialog\r
84733 };\r
84734 ZmAppCtxt.prototype.getChooseFolderDialog=function(){\r
84735 if(!this._chooseFolderDialog){\r
84736 AjxDispatcher.require("Extras");\r
84737 this._chooseFolderDialog=new ZmChooseFolderDialog(this._shell)\r
84738 }\r
84739 return this._chooseFolderDialog\r
84740 };\r
84741 ZmAppCtxt.prototype.getPickTagDialog=function(){\r
84742 if(!this._pickTagDialog){\r
84743 AjxDispatcher.require("Extras");\r
84744 this._pickTagDialog=new ZmPickTagDialog(this._shell)\r
84745 }\r
84746 return this._pickTagDialog\r
84747 };\r
84748 ZmAppCtxt.prototype.getFolderNotifyDialog=function(){\r
84749 if(!this._folderNotifyDialog){\r
84750 this._folderNotifyDialog=new ZmFolderNotifyDialog(this._shell)\r
84751 }\r
84752 return this._folderNotifyDialog\r
84753 };\r
84754 ZmAppCtxt.prototype.getFolderPropsDialog=function(){\r
84755 if(!this._folderPropsDialog){\r
84756 this._folderPropsDialog=new ZmFolderPropsDialog(this._shell)\r
84757 }\r
84758 return this._folderPropsDialog\r
84759 };\r
84760 ZmAppCtxt.prototype.getLinkPropsDialog=function(){\r
84761 if(!this._linkPropsDialog){\r
84762 AjxDispatcher.require("Share");\r
84763 this._linkPropsDialog=new ZmLinkPropsDialog(this._shell)\r
84764 }\r
84765 return this._linkPropsDialog\r
84766 };\r
84767 ZmAppCtxt.prototype.getSharePropsDialog=function(){\r
84768 if(!this._sharePropsDialog){\r
84769 AjxDispatcher.require("Share");\r
84770 this._sharePropsDialog=new ZmSharePropsDialog(this._shell)\r
84771 }\r
84772 return this._sharePropsDialog\r
84773 };\r
84774 ZmAppCtxt.prototype.getAcceptShareDialog=function(){\r
84775 if(!this._acceptShareDialog){\r
84776 AjxDispatcher.require("Share");\r
84777 this._acceptShareDialog=new ZmAcceptShareDialog(this._shell)\r
84778 }\r
84779 return this._acceptShareDialog\r
84780 };\r
84781 ZmAppCtxt.prototype.getDeclineShareDialog=function(){\r
84782 if(!this._declineShareDialog){\r
84783 AjxDispatcher.require("Share");\r
84784 this._declineShareDialog=new ZmDeclineShareDialog(this._shell)\r
84785 }\r
84786 return this._declineShareDialog\r
84787 };\r
84788 ZmAppCtxt.prototype.getRevokeShareDialog=function(){\r
84789 if(!this._revokeShareDialog){\r
84790 AjxDispatcher.require("Share");\r
84791 this._revokeShareDialog=new ZmRevokeShareDialog(this._shell)\r
84792 }\r
84793 return this._revokeShareDialog\r
84794 };\r
84795 ZmAppCtxt.prototype.getMountFolderDialog=function(){\r
84796 if(!this._mountFolderDialog){\r
84797 AjxDispatcher.require("Share");\r
84798 this._mountFolderDialog=new ZmMountFolderDialog(this._shell)\r
84799 }\r
84800 return this._mountFolderDialog\r
84801 };\r
84802 ZmAppCtxt.prototype.getTimezonePickerDialog=function(){\r
84803 if(!this._timezonePickerDialog){\r
84804 AjxDispatcher.require("Share");\r
84805 this._timezonePickerDialog=new ZmTimezonePicker(this._shell)\r
84806 }\r
84807 return this._timezonePickerDialog\r
84808 };\r
84809 ZmAppCtxt.prototype.getFilterRuleDialog=function(){\r
84810 if(!this._filterRuleDialog){\r
84811 AjxDispatcher.require(["PreferencesCore","Preferences"]);\r
84812 this._filterRuleDialog=new ZmFilterRuleDialog()\r
84813 }\r
84814 return this._filterRuleDialog\r
84815 };\r
84816 ZmAppCtxt.prototype.getConfirmationDialog=function(){\r
84817 if(!this._confirmDialog){\r
84818 this._confirmDialog=new DwtConfirmDialog(this._shell)\r
84819 }\r
84820 return this._confirmDialog\r
84821 };\r
84822 ZmAppCtxt.prototype.getUploadDialog=function(){\r
84823 if(!this._uploadDialog){\r
84824 AjxDispatcher.require(["NotebookCore","Notebook"]);\r
84825 this._uploadDialog=new ZmUploadDialog(this._shell)\r
84826 }\r
84827 return this._uploadDialog\r
84828 };\r
84829 ZmAppCtxt.prototype.getImportDialog=function(){\r
84830 if(!this._importDialog){\r
84831 AjxDispatcher.require(["NotebookCore","Notebook"]);\r
84832 this._importDialog=new ZmImportDialog(this._shell)\r
84833 }\r
84834 return this._importDialog\r
84835 };\r
84836 ZmAppCtxt.prototype.getAttachDialog=function(){\r
84837 if(!this._attachDialog){\r
84838 AjxDispatcher.require("Share");\r
84839 this._attachDialog=new ZmAttachDialog(this._shell);\r
84840 this.runAttachDialogCallbacks()\r
84841 }\r
84842 return this._attachDialog\r
84843 };\r
84844 ZmAppCtxt.prototype.runAttachDialogCallbacks=function(){\r
84845 while(this._attachDialogCallback&&this._attachDialogCallback.length>0){\r
84846 var e=this._attachDialogCallback.shift();\r
84847 if(e&&(e instanceof AjxCallback)){\r
84848 e.run(this._attachDialog)\r
84849 }}};\r
84850 ZmAppCtxt.prototype.addAttachmentDialogCallback=function(e){\r
84851 if(!this._attachDialogCallback){\r
84852 this._attachDialogCallback=[]\r
84853 }\r
84854 this._attachDialogCallback.push(e)\r
84855 };\r
84856 ZmAppCtxt.prototype.getUploadConflictDialog=function(){\r
84857 if(!this._uploadConflictDialog){\r
84858 AjxDispatcher.require(["NotebookCore","Notebook"]);\r
84859 this._uploadConflictDialog=new ZmUploadConflictDialog(this._shell)\r
84860 }\r
84861 return this._uploadConflictDialog\r
84862 };\r
84863 ZmAppCtxt.prototype.getNewBriefcaseDialog=function(){\r
84864 if(!this._newBriefcaseDialog){\r
84865 AjxDispatcher.require(["BriefcaseCore","Briefcase"]);\r
84866 this._newBriefcaseDialog=new ZmNewBriefcaseDialog(this._shell)\r
84867 }\r
84868 return this._newBriefcaseDialog\r
84869 };\r
84870 ZmAppCtxt.prototype.getReplaceDialog=function(){\r
84871 if(!this._replaceDialog){\r
84872 AjxDispatcher.require("Share");\r
84873 this._replaceDialog=new ZmFindnReplaceDialog(this._shell)\r
84874 }\r
84875 return this._replaceDialog\r
84876 };\r
84877 ZmAppCtxt.prototype.getRootTabGroup=function(){\r
84878 if(this.isChildWindow){\r
84879 if(!this._childWinTabGrp){\r
84880 this._childWinTabGrp=new DwtTabGroup("CHILD_WINDOW")\r
84881 }}else{\r
84882 if(!this._rootTabGrp){\r
84883 this._rootTabGrp=new DwtTabGroup("ROOT")\r
84884 }}\r
84885 return this.isChildWindow?this._childWinTabGrp:this._rootTabGrp\r
84886 };\r
84887 ZmAppCtxt.prototype.getShell=function(){\r
84888 return this._shell\r
84889 };\r
84890 ZmAppCtxt.prototype.setShell=function(e){\r
84891 this._shell=e\r
84892 };\r
84893 ZmAppCtxt.prototype.getActiveAccount=function(){\r
84894 return this.isChildWindow?parentAppCtxt.accountList.activeAccount:this.accountList.activeAccount\r
84895 };\r
84896 ZmAppCtxt.prototype.getIdentityCollection=function(t){\r
84897 var e=this.isChildWindow?window.opener:window;\r
84898 return e.AjxDispatcher.run("GetIdentityCollection",t)\r
84899 };\r
84900 ZmAppCtxt.prototype.getDataSourceCollection=function(t){\r
84901 var e=this.isChildWindow?window.opener:window;\r
84902 return e.AjxDispatcher.run("GetDataSourceCollection",t)\r
84903 };\r
84904 ZmAppCtxt.prototype.getSignatureCollection=function(t){\r
84905 var e=this.isChildWindow?window.opener:window;\r
84906 return e.AjxDispatcher.run("GetSignatureCollection",t)\r
84907 };\r
84908 ZmAppCtxt.prototype.getTree=function(e,t){\r
84909 if(this.isChildWindow){\r
84910 return parentAppCtxt.getTree(e,t)\r
84911 }\r
84912 var a=this.accountList;\r
84913 var n=t?t.id:a.activeAccount?a.activeAccount.id:ZmAccountList.DEFAULT_ID;\r
84914 var o=a.getAccount(n);\r
84915 return o&&o.trees[ZmOrganizer.TREE_TYPE[e]]\r
84916 };\r
84917 ZmAppCtxt.prototype.setTree=function(t,e,a){\r
84918 var o=this.accountList;\r
84919 var s=a?a.id:o.activeAccount?o.activeAccount.id:ZmAccountList.DEFAULT_ID;\r
84920 var n=this.accountList.getAccount(s);\r
84921 if(n){\r
84922 n.trees[t]=e\r
84923 }};\r
84924 ZmAppCtxt.prototype.getFolderTree=function(e){\r
84925 return this.getTree(ZmOrganizer.FOLDER,e)\r
84926 };\r
84927 ZmAppCtxt.prototype.getTagTree=function(e){\r
84928 return this.getTree(ZmOrganizer.TAG,e)\r
84929 };\r
84930 ZmAppCtxt.prototype.getZimletTree=function(e){\r
84931 return this.getTree(ZmOrganizer.ZIMLET,e)\r
84932 };\r
84933 ZmAppCtxt.prototype.getUsername=function(e){\r
84934 return this.get(ZmSetting.USERNAME,e)\r
84935 };\r
84936 ZmAppCtxt.prototype.getUserDomain=function(e){\r
84937 if(!this.userDomain){\r
84938 var a=this.getUsername(e);\r
84939 if(a){\r
84940 var t=a.split("@");\r
84941 this.userDomain=(t&&t.length)?t[1]:""\r
84942 }}\r
84943 return this.userDomain\r
84944 };\r
84945 ZmAppCtxt.prototype.getUploadFrameId=function(){\r
84946 if(!this._uploadManagerIframeId){\r
84947 var a=Dwt.getNextId();\r
84948 var e=["<iframe name='",a,"' id='",a,"' src='",(AjxEnv.isIE&&location.protocol=="https:")?appContextPath+"/public/blank.html":'javascript:""',"' style='position: absolute; top: 0; left: 0; visibility: hidden'></iframe>"];\r
84949 var t=document.createElement("div");\r
84950 t.innerHTML=e.join("");\r
84951 document.body.appendChild(t.firstChild);\r
84952 this._uploadManagerIframeId=a\r
84953 }\r
84954 return this._uploadManagerIframeId\r
84955 };\r
84956 ZmAppCtxt.prototype.getUploadManager=function(){\r
84957 if(!this._uploadManager){\r
84958 this._uploadManager=new AjxPost(this.getUploadFrameId())\r
84959 }\r
84960 return this._uploadManager\r
84961 };\r
84962 ZmAppCtxt.prototype.getCurrentSearch=function(){\r
84963 return this.getCurrentApp().currentSearch\r
84964 };\r
84965 ZmAppCtxt.prototype.getCurrentViewId=function(){\r
84966 return this.getAppViewMgr().getCurrentViewId()\r
84967 };\r
84968 ZmAppCtxt.prototype.getCurrentView=function(){\r
84969 return this.getAppViewMgr().getCurrentView()\r
84970 };\r
84971 ZmAppCtxt.prototype.getCurrentController=function(){\r
84972 var e=this.getCurrentView();\r
84973 return(e&&e.getController)?e.getController():null\r
84974 };\r
84975 ZmAppCtxt.prototype.setCurrentList=function(e){\r
84976 this._list=e\r
84977 };\r
84978 ZmAppCtxt.prototype.getCurrentList=function(){\r
84979 var e=this.getCurrentController();\r
84980 return(e&&e.getList)?e.getList():this._list?this._list:null\r
84981 };\r
84982 ZmAppCtxt.prototype.getNewWindow=function(r,s,e){\r
84983 var o=[];\r
84984 var n=0;\r
84985 o[n++]=document.location.protocol;\r
84986 o[n++]="//";\r
84987 o[n++]=location.hostname;\r
84988 o[n++]=(!location.port||location.port=="80")?"":(":"+location.port);\r
84989 o[n++]=appContextPath;\r
84990 o[n++]="/public/launchNewWindow.jsp?skin=";\r
84991 o[n++]=appCurrentSkin;\r
84992 o[n++]="&localeId=";\r
84993 o[n++]=AjxEnv.DEFAULT_LOCALE||"";\r
84994 if(r){\r
84995 o[n++]="&full=1"\r
84996 }\r
84997 if(appDevMode){\r
84998 o[n++]="&dev=1"\r
84999 }\r
85000 s=s||705;\r
85001 e=e||465;\r
85002 var a=["height=",e,",width=",s,",location=no,menubar=no,resizable=yes,scrollbars=no,status=yes,toolbar=no"].join("");\r
85003 var t=window.open(o.join(""),"_blank",a);\r
85004 if(!t){\r
85005 this.setStatusMsg(ZmMsg.popupBlocker,ZmStatusView.LEVEL_CRITICAL)\r
85006 }else{\r
85007 return this.getAppController().addChildWindow(t)\r
85008 }};\r
85009 ZmAppCtxt.prototype.cacheSet=function(e,t){\r
85010 this._itemCache[e]=t;\r
85011 delete this._itemCacheDeferred[e]\r
85012 };\r
85013 ZmAppCtxt.prototype.cacheSetDeferred=function(t,e){\r
85014 this._itemCache[t]=this._itemCacheDeferred;\r
85015 this._itemCacheDeferred[t]=e\r
85016 };\r
85017 ZmAppCtxt.prototype.cacheGet=function(t){\r
85018 var a=this._itemCache[t];\r
85019 if(a===this._itemCacheDeferred){\r
85020 var e=this._itemCacheDeferred[t];\r
85021 this.getApp(e).createDeferred();\r
85022 a=this._itemCache[t]\r
85023 }\r
85024 return a\r
85025 };\r
85026 ZmAppCtxt.prototype.cacheRemove=function(e){\r
85027 delete this._itemCache[e];\r
85028 delete this._itemCacheDeferred[e]\r
85029 };\r
85030 ZmAppCtxt.prototype.getById=function(e){\r
85031 return this.cacheGet(e)||(this.isChildWindow&&window.opener.appCtxt.getById(e))\r
85032 };\r
85033 ZmAppCtxt.prototype.getKeyboardMgr=function(){\r
85034 return this._shell.getKeyboardMgr()\r
85035 };\r
85036 ZmAppCtxt.prototype.getHistoryMgr=function(){\r
85037 if(!this._historyMgr){\r
85038 this._historyMgr=new AjxHistoryMgr()\r
85039 }\r
85040 return this._historyMgr\r
85041 };\r
85042 ZmAppCtxt.prototype.zimletsPresent=function(){\r
85043 return this._zimletsPresent\r
85044 };\r
85045 ZmAppCtxt.prototype.setZimletsPresent=function(e){\r
85046 this._zimletsPresent=e\r
85047 };\r
85048 ZmAppCtxt.prototype.getZimletMgr=function(){\r
85049 if(!this._zimletMgr){\r
85050 AjxDispatcher.require("Zimlet");\r
85051 this._zimletMgr=new ZmZimletMgr()\r
85052 }\r
85053 return this._zimletMgr\r
85054 };\r
85055 ZmAppCtxt.prototype.areZimletsLoaded=function(){\r
85056 return this._zimletsLoaded\r
85057 };\r
85058 ZmAppCtxt.prototype.addZimletsLoadedListener=function(t,e){\r
85059 if(!this._zimletsLoaded){\r
85060 return this._evtMgr.addListener(ZmAppCtxt._ZIMLETS_EVENT,t,e)\r
85061 }};\r
85062 ZmAppCtxt.prototype.allZimletsLoaded=function(){\r
85063 this._zimletsLoaded=true;\r
85064 if(this._zimletMgr&&!this.isChildWindow&&appCtxt.get(ZmSetting.PORTAL_ENABLED)){\r
85065 var e=this.getApp(ZmApp.PORTAL).getPortletMgr();\r
85066 if(e){\r
85067 e.allZimletsLoaded()\r
85068 }}\r
85069 if(this._evtMgr.isListenerRegistered(ZmAppCtxt._ZIMLETS_EVENT)){\r
85070 this._evtMgr.notifyListeners(ZmAppCtxt._ZIMLETS_EVENT,new ZmEvent());\r
85071 this._evtMgr.removeAll(ZmAppCtxt._ZIMLETS_EVENT)\r
85072 }};\r
85073 ZmAppCtxt.prototype.notifyZimlets=function(o,t,e){\r
85074 var a=this.isChildWindow?parentAppCtxt:this;\r
85075 if(e&&e.noChildWindow&&this.isChildWindow){\r
85076 return\r
85077 }\r
85078 if(!a.areZimletsLoaded()){\r
85079 if(e&&e.waitUntilLoaded){\r
85080 a.addZimletsLoadedListener(new AjxListener(this,this.notifyZimlets,[o,t]))\r
85081 }\r
85082 return\r
85083 }\r
85084 this.getZimletMgr().notifyZimlets(o,t)\r
85085 };\r
85086 ZmAppCtxt.prototype.getCalManager=function(){\r
85087 if(!this._calMgr){\r
85088 this._calMgr=new ZmCalMgr(this._shell)\r
85089 }\r
85090 return this._calMgr\r
85091 };\r
85092 ZmAppCtxt.prototype.getACL=function(e,n){\r
85093 var t=this.accountList;\r
85094 var o=e?e.id:t.activeAccount?t.activeAccount.id:ZmAccountList.DEFAULT_ID;\r
85095 var a=t.getAccount(o);\r
85096 return a&&a.acl\r
85097 };\r
85098 ZmAppCtxt.prototype.getShortcutHint=function(r,e){\r
85099 var s=null;\r
85100 r=r||"global";\r
85101 while(!s&&r){\r
85102 var o=[r,e,"display"].join(".");\r
85103 var s=AjxKeys[o]||ZmKeys[o];\r
85104 if(s){\r
85105 var a=s.split(/;\s*/);\r
85106 var n=a[0];\r
85107 if(!n){\r
85108 return null\r
85109 }\r
85110 n=n.replace(/\b[A-Z]\b/g,function(h){\r
85111 return h.toLowerCase()\r
85112 }\r
85113 );\r
85114 s=[" [",n.replace(",",""),"]"].join("")\r
85115 }else{\r
85116 var t=[r,"INHERIT"].join(".");\r
85117 r=AjxKeys[t]||ZmKeys[t]\r
85118 }}\r
85119 return s\r
85120 };\r
85121 ZmAppCtxt.prototype.getShortcutsPanel=function(){\r
85122 if(!this._shortcutsPanel){\r
85123 AjxDispatcher.require(["PreferencesCore","Preferences"]);\r
85124 var e=this.isChildWindow?ZmShortcutList.WINDOW_STYLE:ZmShortcutList.PANEL_STYLE;\r
85125 this._shortcutsPanel=new ZmShortcutsPanel(e)\r
85126 }\r
85127 return this._shortcutsPanel\r
85128 };\r
85129 ZmAppCtxt.prototype.getSkinHint=function(){\r
85130 if(arguments.length==0){\r
85131 return""\r
85132 }\r
85133 var a=skin&&skin.hints;\r
85134 if(!a){\r
85135 return""\r
85136 }\r
85137 for(var t=0;\r
85138 t<arguments.length;\r
85139 t++){\r
85140 var e=arguments[t];\r
85141 if(!a[e]){\r
85142 return""\r
85143 }\r
85144 a=a[e]\r
85145 }\r
85146 return a\r
85147 };\r
85148 ZmAppCtxt.prototype.getAutocompleter=function(){\r
85149 if(!this._autocompleter){\r
85150 this._autocompleter=new ZmAutocomplete()\r
85151 }\r
85152 return this._autocompleter\r
85153 };\r
85154 ZmAppCtxt.prototype.isMyAddress=function(o,a){\r
85155 if(a&&(o.indexOf("@")==-1)){\r
85156 o=[o,this.getUserDomain()].join("@")\r
85157 }\r
85158 if(o==this.get(ZmSetting.USERNAME)){\r
85159 return true\r
85160 }\r
85161 var e=this.get(ZmSetting.MAIL_ALIASES);\r
85162 if(e&&e.length){\r
85163 for(var t=0;\r
85164 t<e.length;\r
85165 t++){\r
85166 if(o==e[t]){\r
85167 return true\r
85168 }}}\r
85169 return false\r
85170 };\r
85171 ZmAppCtxt.prototype.getOverviewId=function(t,e){\r
85172 var a=(t instanceof Array)?t.join("_"):t;\r
85173 if(appCtxt.multiAccounts&&(e!==null)){\r
85174 e=e||appCtxt.getActiveAccount();\r
85175 a=[e.name,a].join(":")\r
85176 }\r
85177 return a\r
85178 }\r
85179 }\r
85180 if(AjxPackage.define("zimbraMail.core.ZmOperation")){\r
85181 ZmOperation=function(){};\r
85182 ZmOperation.NONE="NONE";\r
85183 ZmOperation.SEP="SEP";\r
85184 ZmOperation.SPACER="SPACER";\r
85185 ZmOperation.FILLER="FILLER";\r
85186 ZmOperation.DIS="Dis";\r
85187 ZmOperation.SETUP={};\r
85188 ZmOperation.SETUP[ZmOperation.NONE]={};\r
85189 ZmOperation.SETUP[ZmOperation.SEP]={};\r
85190 ZmOperation.SETUP[ZmOperation.SPACER]={};\r
85191 ZmOperation.SETUP[ZmOperation.FILLER]={};\r
85192 ZmOperation.SETTING={};\r
85193 ZmOperation.CALLBACK={};\r
85194 ZmOperation.registerOp=function(o,t,e,a){\r
85195 ZmOperation[o]=o;\r
85196 ZmOperation.SETUP[o]=t||{};\r
85197 if(e){\r
85198 ZmOperation.SETTING[o]=e\r
85199 }\r
85200 if(a){\r
85201 ZmOperation.CALLBACK[o]=a\r
85202 }};\r
85203 ZmOperation.KEY_ID="_opId";\r
85204 ZmOperation.MENUITEM_ID="_menuItemId";\r
85205 ZmOperation.NEW_ITEM_OPS=[];\r
85206 ZmOperation.NEW_ITEM_KEY={};\r
85207 ZmOperation.NEW_ORG_OPS=[];\r
85208 ZmOperation.NEW_ORG_KEY={};\r
85209 ZmOperation._operationDesc={};\r
85210 ZmOperation.initialize=function(){\r
85211 ZmOperation.registerOp(ZmId.OP_ATTACHMENT,{\r
85212 textKey:"addAttachment",tooltipKey:"attachmentTooltip",image:"Attachment",shortcut:ZmKeyMap.ATTACHMENT}\r
85213 );\r
85214 ZmOperation.registerOp(ZmId.OP_BROWSE,{\r
85215 textKey:"advancedSearch",image:"SearchBuilder",tooltipKey:"advancedSearchTooltip"}\r
85216 ,ZmSetting.BROWSE_ENABLED);\r
85217 ZmOperation.registerOp(ZmId.OP_CALL,{\r
85218 image:"Telephone"}\r
85219 );\r
85220 ZmOperation.registerOp(ZmId.OP_CANCEL,{\r
85221 textKey:"cancel",tooltipKey:"cancelTooltip",image:"Cancel",shortcut:ZmKeyMap.CANCEL}\r
85222 );\r
85223 ZmOperation.registerOp(ZmId.OP_CHECK_ALL,{\r
85224 textKey:"checkAll",image:"Check"}\r
85225 );\r
85226 ZmOperation.registerOp(ZmId.OP_CLEAR_ALL,{\r
85227 textKey:"clearAll",image:"Cancel"}\r
85228 );\r
85229 ZmOperation.registerOp(ZmId.OP_CLOSE,{\r
85230 textKey:"close",tooltipKey:"closeTooltip",image:"Close",shortcut:ZmKeyMap.CANCEL}\r
85231 );\r
85232 ZmOperation.registerOp(ZmId.OP_COMPOSE_FORMAT,{\r
85233 textKey:"format",tooltipKey:"formatTooltip",image:"SwitchFormat",shortcut:ZmKeyMap.HTML_FORMAT}\r
85234 ,ZmSetting.HTML_COMPOSE_ENABLED);\r
85235 ZmOperation.registerOp(ZmId.OP_DELETE,{\r
85236 textKey:"del",tooltipKey:"deleteTooltip",image:"Delete",shortcut:ZmKeyMap.DEL,textPrecedence:60}\r
85237 );\r
85238 ZmOperation.registerOp(ZmId.OP_DETACH,{\r
85239 tooltipKey:"detachTT",image:"OpenInNewWindow"}\r
85240 );\r
85241 ZmOperation.registerOp(ZmId.OP_DETACH_WIN,{\r
85242 textKey:"detachTT",tooltipKey:"detachTT",image:"OpenInNewWindow"}\r
85243 );\r
85244 ZmOperation.registerOp(ZmId.OP_EDIT,{\r
85245 textKey:"edit",tooltipKey:"editTooltip",image:"Edit",shortcut:ZmKeyMap.EDIT}\r
85246 );\r
85247 ZmOperation.registerOp(ZmId.OP_EDIT_PROPS,{\r
85248 textKey:"editProperties",tooltipKey:"editPropertiesTooltip",image:"Properties"}\r
85249 );\r
85250 ZmOperation.registerOp(ZmId.OP_EXPAND_ALL,{\r
85251 textKey:"expandAll",image:"Plus"}\r
85252 );\r
85253 ZmOperation.registerOp(ZmId.OP_EMPTY_FOLDER,{\r
85254 textKey:"emptyFolder",image:"EmptyFolder"}\r
85255 );\r
85256 ZmOperation.registerOp(ZmId.OP_FORMAT_HTML,{\r
85257 textKey:"formatAsHtml",image:"HtmlDoc"}\r
85258 ,ZmSetting.HTML_COMPOSE_ENABLED);\r
85259 ZmOperation.registerOp(ZmId.OP_FORMAT_TEXT,{\r
85260 textKey:"formatAsText",image:"GenericDoc"}\r
85261 ,ZmSetting.HTML_COMPOSE_ENABLED);\r
85262 ZmOperation.registerOp(ZmId.OP_GO_TO_URL,{\r
85263 image:"URL"}\r
85264 );\r
85265 ZmOperation.registerOp(ZmId.OP_MARK_ALL_READ,{\r
85266 textKey:"markAllRead",image:"ReadMessage"}\r
85267 );\r
85268 ZmOperation.registerOp(ZmId.OP_MOUNT_FOLDER,{\r
85269 textKey:"mountFolder",image:"Folder"}\r
85270 );\r
85271 ZmOperation.registerOp(ZmId.OP_MOVE,{\r
85272 textKey:"move",tooltipKey:"moveTooltip",image:"MoveToFolder",textPrecedence:40}\r
85273 );\r
85274 ZmOperation.registerOp(ZmId.OP_NEW_FOLDER,{\r
85275 textKey:"newFolder",tooltipKey:"newFolderTooltip",image:"NewFolder",shortcut:ZmKeyMap.NEW_FOLDER}\r
85276 ,ZmSetting.USER_FOLDERS_ENABLED);\r
85277 ZmOperation.registerOp(ZmId.OP_NEW_MENU,{\r
85278 textKey:"_new",shortcut:ZmKeyMap.NEW,textPrecedence:100}\r
85279 ,null,AjxCallback.simpleClosure(function(e){\r
85280 ZmOperation.addDeferredMenu(ZmOperation.addNewMenu,e)\r
85281 }\r
85282 ));\r
85283 ZmOperation.registerOp(ZmId.OP_NEW_TAG,{\r
85284 textKey:"newTag",tooltipKey:"newTagTooltip",image:"NewTag",shortcut:ZmKeyMap.NEW_TAG}\r
85285 ,ZmSetting.TAGGING_ENABLED);\r
85286 ZmOperation.registerOp(ZmId.OP_NOTIFY,{\r
85287 textKey:"notify",image:"Feedback"}\r
85288 );\r
85289 ZmOperation.registerOp(ZmId.OP_PAGE_BACK,{\r
85290 image:"LeftArrow",shortcut:ZmKeyMap.PREV_PAGE}\r
85291 );\r
85292 ZmOperation.registerOp(ZmId.OP_PAGE_FORWARD,{\r
85293 image:"RightArrow",shortcut:ZmKeyMap.NEXT_PAGE}\r
85294 );\r
85295 ZmOperation.registerOp(ZmId.OP_PRINT,{\r
85296 textKey:"print",tooltipKey:"printTooltip",image:"Print",shortcut:ZmKeyMap.PRINT,textPrecedence:30}\r
85297 ,ZmSetting.PRINT_ENABLED);\r
85298 ZmOperation.registerOp(ZmId.OP_REFRESH,{\r
85299 textKey:"refresh",tooltipKey:"refreshTooltip"}\r
85300 );\r
85301 ZmOperation.registerOp(ZmId.OP_RENAME_FOLDER,{\r
85302 textKey:"renameFolder",image:"Rename"}\r
85303 );\r
85304 ZmOperation.registerOp(ZmId.OP_RENAME_SEARCH,{\r
85305 textKey:"renameSearch",image:"Rename"}\r
85306 );\r
85307 ZmOperation.registerOp(ZmId.OP_RENAME_TAG,{\r
85308 textKey:"renameTag",image:"Rename"}\r
85309 ,ZmSetting.TAGGING_ENABLED);\r
85310 ZmOperation.registerOp(ZmId.OP_SAVE,{\r
85311 textKey:"save",image:"Save",shortcut:ZmKeyMap.SAVE}\r
85312 );\r
85313 ZmOperation.registerOp(ZmId.OP_SEARCH,{\r
85314 textKey:"search",image:"Search"}\r
85315 ,ZmSetting.SEARCH_ENABLED);\r
85316 ZmOperation.registerOp(ZmId.OP_SEND,{\r
85317 textKey:"send",tooltipKey:"sendTooltip",image:"Send",shortcut:ZmKeyMap.SEND}\r
85318 );\r
85319 ZmOperation.registerOp(ZmId.OP_FREE_BUSY_LINK,{\r
85320 textKey:"freeBusyLink",tooltipKey:"freeBusyLinkTooltip",image:"Send"}\r
85321 );\r
85322 ZmOperation.registerOp(ZmId.OP_SHARE,{\r
85323 textKey:"share",tooltipKey:"shareTooltip"}\r
85324 ,ZmSetting.SHARING_ENABLED);\r
85325 ZmOperation.registerOp(ZmId.OP_SHARE_ACCEPT,{\r
85326 textKey:"acceptShare",image:"Check"}\r
85327 ,ZmSetting.SHARING_ENABLED);\r
85328 ZmOperation.registerOp(ZmId.OP_SHARE_DECLINE,{\r
85329 textKey:"declineShare",image:"Cancel"}\r
85330 ,ZmSetting.SHARING_ENABLED);\r
85331 ZmOperation.registerOp(ZmId.OP_SHARE_FOLDER,{\r
85332 textKey:"shareFolder",image:"SharedMailFolder"}\r
85333 );\r
85334 ZmOperation.registerOp(ZmId.OP_SHOW_ALL_ITEM_TYPES,{\r
85335 textKey:"showAllItemTypes",image:"Globe"}\r
85336 );\r
85337 ZmOperation.registerOp(ZmId.OP_SPELL_CHECK,{\r
85338 textKey:"spellCheck",image:"SpellCheck",tooltipKey:"spellCheckTooltip",shortcut:ZmKeyMap.SPELLCHECK}\r
85339 ,ZmSetting.SPELL_CHECK_ENABLED);\r
85340 ZmOperation.registerOp(ZmId.OP_SYNC,{\r
85341 textKey:"reload",image:"Refresh",shortcut:ZmKeyMap.REFRESH}\r
85342 );\r
85343 ZmOperation.registerOp(ZmId.OP_SYNC_ALL,{\r
85344 textKey:"checkAllFeed",image:"Refresh"}\r
85345 );\r
85346 ZmOperation.registerOp(ZmId.OP_SYNC_OFFLINE_FOLDER,{\r
85347 textKey:"syncOfflineFolderOff",image:"Refresh"}\r
85348 ,ZmSetting.OFFLINE_ENABLED);\r
85349 ZmOperation.registerOp(ZmId.OP_TAG,null,ZmSetting.TAGGING_ENABLED);\r
85350 ZmOperation.registerOp(ZmId.OP_TAG_COLOR_MENU,{\r
85351 textKey:"tagColor",image:"TagStack"}\r
85352 ,ZmSetting.TAGGING_ENABLED,AjxCallback.simpleClosure(function(e){\r
85353 ZmOperation.addDeferredMenu(ZmOperation.addColorMenu,e)\r
85354 }\r
85355 ));\r
85356 ZmOperation.registerOp(ZmId.OP_TAG_MENU,{\r
85357 tooltipKey:"tagTooltip",image:"Tag"}\r
85358 ,ZmSetting.TAGGING_ENABLED,AjxCallback.simpleClosure(function(e){\r
85359 ZmOperation.addDeferredMenu(ZmOperation.addTagMenu,e)\r
85360 }\r
85361 ));\r
85362 ZmOperation.registerOp(ZmId.OP_TEXT);\r
85363 ZmOperation.registerOp(ZmId.OP_UNDELETE,{\r
85364 textKey:"undelete",tooltipKey:"undelete",image:"MoveToFolder"}\r
85365 );\r
85366 ZmOperation.registerOp(ZmId.OP_VIEW,{\r
85367 textKey:"view",image:"SplitView"}\r
85368 );\r
85369 ZmOperation.registerOp(ZmId.OP_VIEW_MENU,{\r
85370 tooltipKey:"viewTooltip",textKey:"view",image:"SplitPane",textPrecedence:80}\r
85371 );\r
85372 ZmOperation.registerOp(ZmId.OP_ZIMLET,{\r
85373 image:"ZimbraIcon"}\r
85374 );\r
85375 ZmOperation.NEW_ORG_OPS.push(ZmOperation.NEW_FOLDER,ZmOperation.NEW_TAG);\r
85376 ZmOperation.NEW_ORG_KEY[ZmOperation.NEW_FOLDER]="folder";\r
85377 ZmOperation.NEW_ORG_KEY[ZmOperation.NEW_TAG]="tag"\r
85378 };\r
85379 ZmOperation.createOperations=function(t,e,o){\r
85380 var a=new ZmOperation();\r
85381 return a._createOperations(t,e,o)\r
85382 };\r
85383 ZmOperation.prototype._createOperations=function(a,e,n){\r
85384 if(e==ZmOperation.NONE){\r
85385 e=null\r
85386 }\r
85387 n=n||{};\r
85388 var o={};\r
85389 if(e&&e.length){\r
85390 for(var t=0;\r
85391 t<e.length;\r
85392 t++){\r
85393 var s=e[t];\r
85394 ZmOperation.defineOperation(s,n[s]);\r
85395 ZmOperation.addOperation(a,s,o)\r
85396 }}\r
85397 return o\r
85398 };\r
85399 ZmOperation.defineOperation=function(m,u){\r
85400 var t=(u&&u.id)||(m&&m.id)||m||Dwt.getNextId();\r
85401 var a=(u&&u.textKey)||ZmOperation.getProp(m,"textKey");\r
85402 var f=a&&ZmMsg[a];\r
85403 var c=(u&&u.tooltipKey)||ZmOperation.getProp(m,"tooltipKey");\r
85404 var p=c&&ZmMsg[c];\r
85405 var n=ZmOperation.getProp(m,"image");\r
85406 var h=ZmOperation.getProp(m,"disImage");\r
85407 var d=(u&&(u.enabled!==false));\r
85408 var e=ZmOperation.getProp(m,"style");\r
85409 var s=ZmOperation.getProp(m,"shortcut");\r
85410 var o={\r
85411 id:t,text:f,image:n,disImage:h,enabled:d,tooltip:p,style:e,shortcut:s};\r
85412 if(u){\r
85413 for(var r in u){\r
85414 o[r]=u[r]\r
85415 }}\r
85416 ZmOperation._operationDesc[t]=o;\r
85417 return o\r
85418 };\r
85419 ZmOperation.getProp=function(o,a){\r
85420 var t=null;\r
85421 var e=ZmOperation.SETUP[o];\r
85422 if(e){\r
85423 t=e[a];\r
85424 if(!t&&(a=="disImage")&&e.image){\r
85425 t=e.image\r
85426 }}\r
85427 return t\r
85428 };\r
85429 ZmOperation.isSep=function(e){\r
85430 return(e==ZmOperation.SEP||e==ZmOperation.SPACER||e==ZmOperation.FILLER)\r
85431 };\r
85432 ZmOperation.addOperation=function(t,s,a,e){\r
85433 var o=ZmOperation._operationDesc[s]||ZmOperation.defineOperation(s);\r
85434 if(s==ZmOperation.SEP){\r
85435 if(t instanceof DwtMenu){\r
85436 t.createSeparator(e)\r
85437 }else{\r
85438 t.addSeparator(null,e)\r
85439 }}else{\r
85440 if(s==ZmOperation.SPACER){\r
85441 t.addSpacer(null,e)\r
85442 }else{\r
85443 if(s==ZmOperation.FILLER){\r
85444 t.addFiller(null,e)\r
85445 }else{\r
85446 if(e){\r
85447 o.index=e\r
85448 }\r
85449 a[s]=t.createOp(s,o)\r
85450 }}}\r
85451 var n=ZmOperation.CALLBACK[s];\r
85452 if(n){\r
85453 if(n.run){\r
85454 n.run(a[s])\r
85455 }else{\r
85456 n(a[s])\r
85457 }}};\r
85458 ZmOperation.addDeferredMenu=function(e,t){\r
85459 var a=new AjxCallback(null,e,t);\r
85460 t.setMenu(a)\r
85461 };\r
85462 ZmOperation.removeOperation=function(e,a,t){\r
85463 e.getOp(a).dispose();\r
85464 delete t[a]\r
85465 };\r
85466 ZmOperation.setOperation=function(t,s,e,n,o,a){\r
85467 var r=t.getOp(s);\r
85468 if(!r){\r
85469 return\r
85470 }\r
85471 r.setText(n?n:ZmMsg[ZmOperation.getProp(e,"textKey")]);\r
85472 r.setImage(o?o:ZmOperation.getProp(e,"image"))\r
85473 };\r
85474 ZmOperation.filterOperations=function(s){\r
85475 var o=[];\r
85476 if(!(s&&s.length)){\r
85477 return o\r
85478 }\r
85479 for(var t=0;\r
85480 t<s.length;\r
85481 t++){\r
85482 var r=s[t];\r
85483 if(!r){\r
85484 continue\r
85485 }\r
85486 var a=ZmOperation.SETTING[r];\r
85487 if(!a||appCtxt.get(a)){\r
85488 o.push(r)\r
85489 }}\r
85490 var e=[];\r
85491 var n=false;\r
85492 for(var t=0;\r
85493 t<o.length;\r
85494 t++){\r
85495 var r=o[t];\r
85496 if(r==ZmOperation.SEP||r==ZmOperation.SPACER){\r
85497 if(!n){\r
85498 e.push(r)\r
85499 }\r
85500 n=true\r
85501 }else{\r
85502 e.push(r);\r
85503 n=false\r
85504 }}\r
85505 if(e&&e.length){\r
85506 if(e[0]==ZmOperation.SEP||e[0]==ZmOperation.SPACER){\r
85507 e.shift()\r
85508 }\r
85509 var t=e.length-1;\r
85510 if(e[t]==ZmOperation.SEP||e[t]==ZmOperation.SPACER||e[t]==ZmOperation.FILLER){\r
85511 e.pop()\r
85512 }}\r
85513 return e\r
85514 };\r
85515 ZmOperation.addNewMenu=function(t){\r
85516 var o=ZmOperation.NEW_ITEM_OPS;\r
85517 o.push(ZmOperation.SEP);\r
85518 o=o.concat(ZmOperation.NEW_ORG_OPS);\r
85519 var s={};\r
85520 for(var e=0;\r
85521 e<o.length;\r
85522 e++){\r
85523 var r=o[e];\r
85524 var a=ZmOperation.NEW_ITEM_KEY[r]||ZmOperation.NEW_ORG_KEY[r];\r
85525 if(a){\r
85526 s[r]={\r
85527 textKey:a}\r
85528 }}\r
85529 var n=new ZmActionMenu({\r
85530 parent:t,menuItems:o,overrides:s}\r
85531 );\r
85532 t.setMenu(n);\r
85533 return n\r
85534 };\r
85535 ZmOperation.addTagMenu=function(e){\r
85536 var t=new ZmTagMenu(e);\r
85537 e.setMenu(t);\r
85538 return t\r
85539 };\r
85540 ZmOperation.addColorMenu=function(o){\r
85541 var s=new ZmPopupMenu(o);\r
85542 o.setMenu(s);\r
85543 var n=ZmTagTree.COLOR_LIST;\r
85544 for(var a=0;\r
85545 a<n.length;\r
85546 a++){\r
85547 var t=n[a];\r
85548 var e=s.createMenuItem(t,{\r
85549 image:ZmTag.COLOR_ICON[t],text:ZmOrganizer.COLOR_TEXT[t]}\r
85550 );\r
85551 e.setData(ZmOperation.MENUITEM_ID,t)\r
85552 }\r
85553 return s\r
85554 };\r
85555 ZmOperation.getToolTip=function(n,o,e){\r
85556 var t=ZmOperation._operationDesc[n]||ZmOperation.defineOperation(n);\r
85557 e=e||t.tooltip;\r
85558 var a=e&&t.shortcut&&appCtxt.getShortcutHint(o,t.shortcut);\r
85559 return a?[e,a].join(""):e\r
85560 }\r
85561 }\r
85562 if(AjxPackage.define("zimbraMail.core.ZmMimeTable")){\r
85563 ZmMimeTable=function(){};\r
85564 ZmMimeTable.APP="application";\r
85565 ZmMimeTable.APP_ADOBE_PDF="application/pdf";\r
85566 ZmMimeTable.APP_ADOBE_PS="application/postscript";\r
85567 ZmMimeTable.APP_APPLE_DOUBLE="application/applefile";\r
85568 ZmMimeTable.APP_EXE="application/exe";\r
85569 ZmMimeTable.APP_MS_DOWNLOAD="application/x-msdownload";\r
85570 ZmMimeTable.APP_MS_EXCEL="application/vnd.ms-excel";\r
85571 ZmMimeTable.APP_MS_PPT="application/vnd.ms-powerpoint";\r
85572 ZmMimeTable.APP_MS_PROJECT="application/vnd.ms-project";\r
85573 ZmMimeTable.APP_MS_TNEF="application/ms-tnef";\r
85574 ZmMimeTable.APP_MS_TNEF2="application/vnd.ms-tnef";\r
85575 ZmMimeTable.APP_MS_VISIO="application/vnd.visio";\r
85576 ZmMimeTable.APP_MS_WORD="application/msword";\r
85577 ZmMimeTable.APP_OCTET_STREAM="application/octet-stream";\r
85578 ZmMimeTable.APP_OPENXML_DOC="application/vnd.openxmlformats-officedocument.wordprocessingml.document";\r
85579 ZmMimeTable.APP_OPENXML_EXCEL="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";\r
85580 ZmMimeTable.APP_OPENXML_PPT="application/vnd.openxmlformats-officedocument.presentationml.presentation";\r
85581 ZmMimeTable.APP_ZIMBRA_DOC="application/x-zimbra-doc";\r
85582 ZmMimeTable.APP_ZIMBRA_SLIDES="application/x-zimbra-slides";\r
85583 ZmMimeTable.APP_ZIMBRA_SPREADSHEET="application/x-zimbra-xls";\r
85584 ZmMimeTable.APP_ZIP="application/zip";\r
85585 ZmMimeTable.APP_ZIP2="application/x-zip-compressed";\r
85586 ZmMimeTable.AUDIO="audio";\r
85587 ZmMimeTable.AUDIO_WAV="audio/x-wav";\r
85588 ZmMimeTable.AUDIO_MP3="audio/mpeg";\r
85589 ZmMimeTable.IMG="image";\r
85590 ZmMimeTable.IMG_GIF="image/gif";\r
85591 ZmMimeTable.IMG_JPEG="image/jpeg";\r
85592 ZmMimeTable.IMG_PJPEG="image/pjpeg";\r
85593 ZmMimeTable.IMG_PNG="image/png";\r
85594 ZmMimeTable.IMG_TIFF="image/tiff";\r
85595 ZmMimeTable.MSG_RFC822="message/rfc822";\r
85596 ZmMimeTable.MULTI_ALT="multipart/alternative";\r
85597 ZmMimeTable.MULTI_MIXED="multipart/mixed";\r
85598 ZmMimeTable.MULTI_RELATED="multipart/related";\r
85599 ZmMimeTable.MULTI_APPLE_DBL="multipart/appledouble";\r
85600 ZmMimeTable.MULTI_DIGEST="multipart/digest";\r
85601 ZmMimeTable.TEXT="text";\r
85602 ZmMimeTable.TEXT_RTF="text/enriched";\r
85603 ZmMimeTable.TEXT_HTML="text/html";\r
85604 ZmMimeTable.TEXT_CAL="text/calendar";\r
85605 ZmMimeTable.TEXT_JAVA="text/x-java";\r
85606 ZmMimeTable.TEXT_VCARD="text/x-vcard";\r
85607 ZmMimeTable.TEXT_DIRECTORY="text/directory";\r
85608 ZmMimeTable.TEXT_PLAIN="text/plain";\r
85609 ZmMimeTable.TEXT_XML="text/xml";\r
85610 ZmMimeTable.VIDEO="video";\r
85611 ZmMimeTable.VIDEO_WMV="video/x-ms-wmv";\r
85612 ZmMimeTable.XML_ZIMBRA_SHARE="xml/x-zimbra-share";\r
85613 ZmMimeTable._table=new Object();\r
85614 ZmMimeTable._table[ZmMimeTable.APP]={\r
85615 desc:ZmMsg.unknownBinaryType,image:"ExeDoc",imageLarge:"ExeDoc_48"};\r
85616 ZmMimeTable._table[ZmMimeTable.APP_ADOBE_PDF]={\r
85617 desc:ZmMsg.adobePdfDocument,image:"PDFDoc",imageLarge:"PDFDoc_48"};\r
85618 ZmMimeTable._table[ZmMimeTable.APP_ADOBE_PS]={\r
85619 desc:ZmMsg.adobePsDocument,image:"GenericDoc",imageLarge:"GenericDoc_48"};\r
85620 ZmMimeTable._table[ZmMimeTable.APP_EXE]={\r
85621 desc:ZmMsg.application,image:"ExeDoc",imageLarge:"ExeDoc_48"};\r
85622 ZmMimeTable._table[ZmMimeTable.APP_MS_DOWNLOAD]={\r
85623 desc:ZmMsg.msDownload,image:"ExeDoc",imageLarge:"ExeDoc_48"};\r
85624 ZmMimeTable._table[ZmMimeTable.APP_MS_EXCEL]={\r
85625 desc:ZmMsg.msExcelDocument,image:"MSExcelDoc",imageLarge:"MSExcelDoc_48"};\r
85626 ZmMimeTable._table[ZmMimeTable.APP_MS_PPT]={\r
85627 desc:ZmMsg.msPPTDocument,image:"MSPowerpointDoc",imageLarge:"MSPowerpointDoc_48"};\r
85628 ZmMimeTable._table[ZmMimeTable.APP_MS_PROJECT]={\r
85629 desc:ZmMsg.msProjectDocument,image:"MSProjectDoc",imageLarge:"MSProjectDoc_48"};\r
85630 ZmMimeTable._table[ZmMimeTable.APP_MS_VISIO]={\r
85631 desc:ZmMsg.msVisioDocument,image:"MSVisioDoc",imageLarge:"MSVisioDoc_48"};\r
85632 ZmMimeTable._table[ZmMimeTable.APP_MS_WORD]={\r
85633 desc:ZmMsg.msWordDocument,image:"MSWordDoc",imageLarge:"MSWordDoc_48"};\r
85634 ZmMimeTable._table[ZmMimeTable.APP_OCTET_STREAM]={\r
85635 desc:ZmMsg.unknownBinaryType,image:"UnknownDoc",imageLarge:"UnknownDoc_48"};\r
85636 ZmMimeTable._table[ZmMimeTable.APP_OPENXML_DOC]={\r
85637 desc:ZmMsg.msWordDocument,image:"MSWordDoc",imageLarge:"MSWordDoc_48"};\r
85638 ZmMimeTable._table[ZmMimeTable.APP_OPENXML_EXCEL]={\r
85639 desc:ZmMsg.msExcelDocument,image:"MSExcelDoc",imageLarge:"MSExcelDoc_48"};\r
85640 ZmMimeTable._table[ZmMimeTable.APP_OPENXML_PPT]={\r
85641 desc:ZmMsg.msPPTDocument,image:"MSPowerpointDoc",imageLarge:"MSPowerpointDoc_48"};\r
85642 ZmMimeTable._table[ZmMimeTable.APP_ZIMBRA_DOC]={\r
85643 desc:ZmMsg.msWordDocument,image:"Doc",imageLarge:"Doc_48"};\r
85644 ZmMimeTable._table[ZmMimeTable.APP_ZIMBRA_SLIDES]={\r
85645 desc:ZmMsg.msPPTDocument,image:"Presentation",imageLarge:"Presentation_48"};\r
85646 ZmMimeTable._table[ZmMimeTable.APP_ZIMBRA_SPREADSHEET]={\r
85647 desc:ZmMsg.msExcelDocument,image:"ZSpreadSheet",imageLarge:"ZSpreadSheet_48"};\r
85648 ZmMimeTable._table[ZmMimeTable.APP_ZIP]={\r
85649 desc:ZmMsg.zipFile,image:"ZipDoc",imageLarge:"ZipDoc_48"};\r
85650 ZmMimeTable._table[ZmMimeTable.APP_ZIP2]={\r
85651 desc:ZmMsg.zipFile,image:"ZipDoc",imageLarge:"ZipDoc_48"};\r
85652 ZmMimeTable._table[ZmMimeTable.AUDIO]={\r
85653 desc:ZmMsg.audio,image:"AudioDoc",imageLarge:"Doc_48"};\r
85654 ZmMimeTable._table[ZmMimeTable.AUDIO_WAV]={\r
85655 desc:ZmMsg.waveAudio,image:"AudioDoc",imageLarge:"AudioDoc_48"};\r
85656 ZmMimeTable._table[ZmMimeTable.AUDIO_MP3]={\r
85657 desc:ZmMsg.mp3Audio,image:"AudioDoc",imageLarge:"AudioDoc_48"};\r
85658 ZmMimeTable._table[ZmMimeTable.VIDEO]={\r
85659 desc:ZmMsg.video,image:"VideoDoc",imageLarge:"VideoDoc_48"};\r
85660 ZmMimeTable._table[ZmMimeTable.VIDEO_WMV]={\r
85661 desc:ZmMsg.msWMV,image:"VideoDoc",imageLarge:"VideoDoc_48"};\r
85662 ZmMimeTable._table[ZmMimeTable.IMG]={\r
85663 desc:ZmMsg.image,image:"ImageDoc",imageLarge:"ImageDoc_48"};\r
85664 ZmMimeTable._table[ZmMimeTable.IMG_GIF]={\r
85665 desc:ZmMsg.gifImage,image:"ImageDoc",imageLarge:"ImageDoc_48"};\r
85666 ZmMimeTable._table[ZmMimeTable.IMG_JPEG]={\r
85667 desc:ZmMsg.jpegImage,image:"ImageDoc",imageLarge:"ImageDoc_48"};\r
85668 ZmMimeTable._table[ZmMimeTable.IMG_PNG]={\r
85669 desc:ZmMsg.pngImage,image:"ImageDoc",imageLarge:"ImageDoc_48"};\r
85670 ZmMimeTable._table[ZmMimeTable.IMG_TIFF]={\r
85671 desc:ZmMsg.tiffImage,image:"ImageDoc",imageLarge:"ImageDoc_48"};\r
85672 ZmMimeTable._table[ZmMimeTable.MSG_RFC822]={\r
85673 desc:ZmMsg.mailMessage,image:"MessageDoc",imageLarge:"MessageDoc_48"};\r
85674 ZmMimeTable._table[ZmMimeTable.TEXT]={\r
85675 desc:ZmMsg.textDocuments,image:"GenericDoc",imageLarge:"GenericDoc_48"};\r
85676 ZmMimeTable._table[ZmMimeTable.TEXT_RTF]={\r
85677 desc:ZmMsg.enrichedText,image:"GenericDoc",imageLarge:"GenericDoc_48"};\r
85678 ZmMimeTable._table[ZmMimeTable.TEXT_HTML]={\r
85679 desc:ZmMsg.htmlDocument,image:"HtmlDoc",imageLarge:"HtmlDoc_48"};\r
85680 ZmMimeTable._table[ZmMimeTable.TEXT_JAVA]={\r
85681 desc:ZmMsg.javaSource,image:"GenericDoc",imageLarge:"GenericDoc_48"};\r
85682 ZmMimeTable._table[ZmMimeTable.TEXT_PLAIN]={\r
85683 desc:ZmMsg.textFile,image:"GenericDoc",imageLarge:"GenericDoc_48"};\r
85684 ZmMimeTable._table[ZmMimeTable.TEXT_XML]={\r
85685 desc:ZmMsg.xmlDocument,image:"GenericDoc",imageLarge:"GenericDoc_48"};\r
85686 ZmMimeTable.getInfo=function(t,e){\r
85687 var a=ZmMimeTable._table[t];\r
85688 if(!a&&e){\r
85689 a=ZmMimeTable._table[t]={\r
85690 desc:t,image:"UnknownDoc",imageLarge:"UnknownDoc_48"}\r
85691 }\r
85692 if(a){\r
85693 if(!a.type){\r
85694 a.type=t\r
85695 }}else{\r
85696 var o=t.split("/")[0];\r
85697 if(o){\r
85698 a=ZmMimeTable._table[o]\r
85699 }}\r
85700 return a\r
85701 };\r
85702 ZmMimeTable.isIgnored=function(e){\r
85703 return(e==ZmMimeTable.MULTI_ALT||e==ZmMimeTable.MULTI_MIXED||e==ZmMimeTable.MULTI_RELATED||e==ZmMimeTable.MULTI_APPLE_DBL||e==ZmMimeTable.APP_MS_TNEF||e==ZmMimeTable.APP_MS_TNEF2)\r
85704 };\r
85705 ZmMimeTable.isRenderable=function(e){\r
85706 return(e==ZmMimeTable.TEXT_HTML||e==ZmMimeTable.TEXT_PLAIN||e==ZmMimeTable.IMG_JPEG||e==ZmMimeTable.IMG_GIF||e==ZmMimeTable.IMG_PNG)\r
85707 };\r
85708 ZmMimeTable.isRenderableImage=function(e){\r
85709 return(e==ZmMimeTable.IMG_JPEG||e==ZmMimeTable.IMG_GIF||e==ZmMimeTable.IMG_PNG)\r
85710 };\r
85711 ZmMimeTable.hasHtmlVersion=function(e){\r
85712 return(!(ZmMimeTable.isIgnored(e)||e.match(/^image/)||e.match(/^audio/)||e.match(/^video/)))\r
85713 }\r
85714 }};\r
85715 \r
85716 \r
85717 \r
85718 /* Copyright (C) 2005-2009 Zimbra Inc. http://www.zimbra.com/ */\r
85719 if(AjxPackage.define("Startup1_2")){\r
85720 if(AjxPackage.define("zimbraMail.share.model.ZmObjectHandler")){\r
85721 ZmObjectHandler=function(e,t){\r
85722 if(arguments.length>0){\r
85723 this.init(e,t)\r
85724 }};\r
85725 ZmObjectHandler.prototype.constructor=ZmObjectHandler;\r
85726 ZmObjectHandler.prototype.init=function(e,t){\r
85727 this._typeName=e;\r
85728 this._className=t?t:"Object"\r
85729 };\r
85730 ZmObjectHandler.prototype.toString=function(){\r
85731 if(!this._toString){\r
85732 var e=""+this.constructor;\r
85733 e=e.substring(0,e.indexOf("("));\r
85734 this._toString=e.substring("function ".length)\r
85735 }\r
85736 return this._toString\r
85737 };\r
85738 ZmObjectHandler.prototype.getTypeName=function(){\r
85739 return this._typeName\r
85740 };\r
85741 ZmObjectHandler.prototype.getClassName=function(t,e){\r
85742 return this._className\r
85743 };\r
85744 ZmObjectHandler.prototype.getHoveredClassName=function(a,t){\r
85745 var e=this.getClassName(a);\r
85746 if(this._cachedClassNameForHovered!==e){\r
85747 this._cachedClassNameForHovered=e;\r
85748 this._classNameHovered=e+"-"+DwtCssStyle.HOVER\r
85749 }\r
85750 return this._classNameHovered\r
85751 };\r
85752 ZmObjectHandler.prototype.getActiveClassName=function(a,t){\r
85753 var e=this.getClassName(a);\r
85754 if(this._cachedClassNameForActive!==e){\r
85755 this._cachedClassNameForActive=e;\r
85756 this._classNameActive=e+"-"+DwtCssStyle.ACTIVE\r
85757 }\r
85758 return this._classNameActive\r
85759 };\r
85760 ZmObjectHandler.prototype.findObject=function(e,t){\r
85761 if(t===0){\r
85762 this._lastMatch=null;\r
85763 this._noMatch=false\r
85764 }\r
85765 if(this._noMatch){\r
85766 return null\r
85767 }\r
85768 if(this._lastMatch&&this._lastMatch.index>=t){\r
85769 return this._lastMatch\r
85770 }\r
85771 this._lastMatch=this.match(e,t);\r
85772 this._noMatch=(this._lastMatch===null);\r
85773 return this._lastMatch\r
85774 };\r
85775 ZmObjectHandler.prototype.match=function(e,t){\r
85776 return null\r
85777 };\r
85778 ZmObjectHandler.prototype._getHtmlContent=function(a,e,n,t,o){\r
85779 a[e++]=AjxStringUtil.htmlEncode(n,true);\r
85780 return e\r
85781 };\r
85782 ZmObjectHandler.prototype.generateSpan=function(a,e,n,o,t){\r
85783 a[e++]="<span class='";\r
85784 a[e++]=this.getClassName(n);\r
85785 a[e++]="' id='";\r
85786 a[e++]=o;\r
85787 a[e++]="'>";\r
85788 e=this._getHtmlContent(a,e,n,t,o);\r
85789 a[e++]="</span>";\r
85790 return e\r
85791 };\r
85792 ZmObjectHandler.prototype.hasToolTipText=function(t,e){\r
85793 return true\r
85794 };\r
85795 ZmObjectHandler.prototype.getToolTipText=function(t,e){\r
85796 return AjxStringUtil.htmlEncode(t)\r
85797 };\r
85798 ZmObjectHandler.prototype.populateToolTip=function(t,e){};\r
85799 ZmObjectHandler.prototype.getActionMenu=function(a,t,e){\r
85800 return null\r
85801 };\r
85802 ZmObjectHandler.prototype.selected=function(o,t,a,e){\r
85803 return this.clicked(t,o,e,a)\r
85804 };\r
85805 ZmObjectHandler.prototype.clicked=function(t,o,e,a){};\r
85806 ZmObjectHandler.prototype.hoverOver=function(t,o,e,s){\r
85807 var a=DwtShell.getShell(window);\r
85808 var n=a.getToolTip();\r
85809 n.setContent(this.getToolTipText(t,o));\r
85810 n.popup(e,s);\r
85811 this.populateToolTip(t,o)\r
85812 };\r
85813 ZmObjectHandler.prototype.hoverOut=function(e,a){\r
85814 var t=DwtShell.getShell(window);\r
85815 var o=t.getToolTip();\r
85816 o.popdown()\r
85817 }\r
85818 }\r
85819 if(AjxPackage.define("zimbraMail.share.model.ZmObjectManager")){\r
85820 ZmObjectManager=function(t,e,a){\r
85821 this._selectCallback=e;\r
85822 this._uuid=Dwt.getNextId();\r
85823 this._objectIdPrefix="OBJ_PREFIX_";\r
85824 this._objectHandlers={};\r
85825 if(appCtxt.get(ZmSetting.MAIL_ENABLED)&&window.ZmImageAttachmentObjectHandler){\r
85826 this._imageAttachmentHandler=new ZmImageAttachmentObjectHandler()\r
85827 }\r
85828 if(!a){\r
85829 this.initialized=false;\r
85830 this._addAutoHandlers()\r
85831 }else{\r
85832 this.initialized=true\r
85833 }\r
85834 this.sortHandlers();\r
85835 this.reset();\r
85836 this.setView(t)\r
85837 };\r
85838 ZmObjectManager._TOOLTIP_DELAY=275;\r
85839 ZmObjectManager.EMAIL="email";\r
85840 ZmObjectManager.URL="url";\r
85841 ZmObjectManager.PHONE="phone";\r
85842 ZmObjectManager.DATE="date";\r
85843 ZmObjectManager.ADDRESS="address";\r
85844 ZmObjectManager.ATTR_CURRENT_DATE="currentDate";\r
85845 ZmObjectManager._autohandlers=[];\r
85846 ZmObjectManager.registerHandler=function(obj,type,priority){\r
85847 if(typeof obj=="string"){\r
85848 obj=eval(obj)\r
85849 }\r
85850 var c=ZmObjectManager._autohandlers;\r
85851 if(!obj.__registered){\r
85852 var id=c.push(obj);\r
85853 var i=id-1;\r
85854 if(type){\r
85855 c[i].useType=type\r
85856 }\r
85857 if(priority){\r
85858 c[i].usePrio=priority\r
85859 }\r
85860 obj.__registered=true\r
85861 }};\r
85862 ZmObjectManager.unregisterHandler=function(obj){\r
85863 if(typeof obj=="string"){\r
85864 obj=eval(obj)\r
85865 }\r
85866 var c=ZmObjectManager._autohandlers,i;\r
85867 for(i=c.length;\r
85868 --i>=0;\r
85869 ){\r
85870 if(c[i]===obj){\r
85871 c.splice(i,1);\r
85872 break\r
85873 }}};\r
85874 ZmObjectManager.prototype.toString=function(){\r
85875 return"ZmObjectManager"\r
85876 };\r
85877 ZmObjectManager.prototype.getHandlers=function(){\r
85878 if(!this.initialized&&appCtxt.zimletsPresent()){\r
85879 var e=appCtxt.getZimletMgr();\r
85880 if(e.isLoaded()){\r
85881 this.initialized=true;\r
85882 var a=e.getContentZimlets();\r
85883 for(var t=0;\r
85884 t<a.length;\r
85885 t++){\r
85886 this.addHandler(a[t],a[t].type,a[t].prio)\r
85887 }}}\r
85888 return this._objectHandlers\r
85889 };\r
85890 ZmObjectManager.prototype.addHandler=function(a,t,e){\r
85891 t=t||(a.getTypeName()?a.getTypeName():"none");\r
85892 e=e?e:-1;\r
85893 a._prio=e;\r
85894 var o=this.getHandlers();\r
85895 if(!o[t]){\r
85896 o[t]=[]\r
85897 }\r
85898 o[t].push(a)\r
85899 };\r
85900 ZmObjectManager.prototype.removeHandler=function(a,t){\r
85901 t=t||(a.getTypeName()?a.getTypeName():"none");\r
85902 var n=this.getHandlers();\r
85903 if(n[t]){\r
85904 for(var e=0,o=n[t].length;\r
85905 e<o;\r
85906 e++){\r
85907 if(n[t][e]==a){\r
85908 n[t].splice(e,1);\r
85909 break\r
85910 }}}};\r
85911 ZmObjectManager.prototype.sortHandlers=function(){\r
85912 this._allObjectHandlers=[];\r
85913 var t=this.getHandlers();\r
85914 for(i in t){\r
85915 t[i].sort(ZmObjectManager.__byPriority);\r
85916 for(var e=0;\r
85917 e<t[i].length;\r
85918 e++){\r
85919 this._allObjectHandlers.push(t[i][e])\r
85920 }}\r
85921 this._allObjectHandlers.sort(ZmObjectManager.__byPriority)\r
85922 };\r
85923 ZmObjectManager.prototype._addAutoHandlers=function(){\r
85924 var s=ZmObjectManager._autohandlers,e,o,n;\r
85925 for(e=0;\r
85926 e<s.length;\r
85927 ++e){\r
85928 o=s[e];\r
85929 var a=o;\r
85930 var t=o.TYPE;\r
85931 if(appCtxt.zimletsPresent()){\r
85932 if(!(o instanceof ZmZimletBase)){\r
85933 a=new o()\r
85934 }}\r
85935 if(o.useType){\r
85936 t=o.useType\r
85937 }\r
85938 if(o.usePrio){\r
85939 n=o.usePrio\r
85940 }\r
85941 this.addHandler(a,t,n)\r
85942 }};\r
85943 ZmObjectManager.prototype.reset=function(){\r
85944 this._objects={}\r
85945 };\r
85946 ZmObjectManager.prototype.setView=function(e){\r
85947 if(e!=null&&appCtxt.getZimletMgr().isLoaded()){\r
85948 e.addListener(DwtEvent.ONMOUSEOVER,new AjxListener(this,this._mouseOverListener));\r
85949 e.addListener(DwtEvent.ONMOUSEOUT,new AjxListener(this,this._mouseOutListener));\r
85950 e.addListener(DwtEvent.ONMOUSEDOWN,new AjxListener(this,this._mouseDownListener));\r
85951 e.addListener(DwtEvent.ONMOUSEUP,new AjxListener(this,this._mouseUpListener));\r
85952 e.addListener(DwtEvent.ONMOUSEMOVE,new AjxListener(this,this._mouseMoveListener));\r
85953 if(AjxEnv.isSafari){\r
85954 e.addListener(DwtEvent.ONCONTEXTMENU,new AjxListener(this,this._rightClickListener))\r
85955 }\r
85956 this._hoverOverListener=new AjxListener(this,this._handleHoverOver);\r
85957 this._hoverOutListener=new AjxListener(this,this._handleHoverOut)\r
85958 }\r
85959 this._view=e\r
85960 };\r
85961 ZmObjectManager.prototype.objectsCount=function(){\r
85962 return(appCtxt.zimletsPresent())?appCtxt.getZimletMgr().getContentZimlets().length:0\r
85963 };\r
85964 ZmObjectManager.prototype.getImageAttachmentHandler=function(){\r
85965 return this._imageAttachmentHandler\r
85966 };\r
85967 ZmObjectManager.prototype._getAjxEmailAddress=function(e){\r
85968 if(appCtxt.isChildWindow&&e.isAjxEmailAddress){\r
85969 e=AjxEmailAddress.copy(e)\r
85970 }\r
85971 return e\r
85972 };\r
85973 ZmObjectManager.prototype.findObjects=function(m,e,a,u){\r
85974 if(!m){\r
85975 return""\r
85976 }\r
85977 var r=[];\r
85978 var l=0;\r
85979 var h=m.length;\r
85980 var y=0;\r
85981 var o=this.getHandlers();\r
85982 while(true){\r
85983 var b=null;\r
85984 var f=h;\r
85985 var d=null;\r
85986 var g;\r
85987 var c;\r
85988 var s;\r
85989 var n=null;\r
85990 if(a){\r
85991 c=o[a];\r
85992 if(c){\r
85993 for(g=0;\r
85994 g<c.length;\r
85995 g++){\r
85996 n=c[g].findObject(m,y);\r
85997 if(!n){\r
85998 continue\r
85999 }\r
86000 if(n.index>=f){\r
86001 break\r
86002 }\r
86003 b=n;\r
86004 f=n.index;\r
86005 d=c[g]\r
86006 }}\r
86007 if(a=="email"||m instanceof AjxEmailAddress){\r
86008 if(d){\r
86009 m=this._getAjxEmailAddress(m);\r
86010 this.generateSpan(d,r,l,m,null)\r
86011 }else{\r
86012 r[l++]=AjxStringUtil.htmlEncode(m.toString())\r
86013 }\r
86014 return r.join("")\r
86015 }}else{\r
86016 for(var p=0;\r
86017 p<this._allObjectHandlers.length;\r
86018 p++){\r
86019 var t=this._allObjectHandlers[p];\r
86020 n=t.findObject(m,y);\r
86021 if(n&&n.index<f){\r
86022 b=n;\r
86023 f=n.index;\r
86024 d=t\r
86025 }}}\r
86026 if(!b){\r
86027 s=m.substring(y,h);\r
86028 if(e){\r
86029 r[l++]=AjxStringUtil.htmlEncode(s,!!u)\r
86030 }else{\r
86031 r[l++]=s\r
86032 }\r
86033 break\r
86034 }\r
86035 if(f>y){\r
86036 s=m.substring(y,f);\r
86037 if(e){\r
86038 r[l++]=AjxStringUtil.htmlEncode(s,!!u)\r
86039 }else{\r
86040 r[l++]=s\r
86041 }}\r
86042 if(d){\r
86043 l=this.generateSpan(d,r,l,b[0],b.context)\r
86044 }else{\r
86045 r[l++]=b[0]\r
86046 }\r
86047 y=b.index+(b.matchLength||b[0].length)\r
86048 }\r
86049 return r.join("")\r
86050 };\r
86051 ZmObjectManager.prototype.processObjectsInNode=function(s,n){\r
86052 var e=this;\r
86053 var a=s.createElement("div");\r
86054 s||(s=n.ownerDocument);\r
86055 var o=function(l,c){\r
86056 var u,m,h,p;\r
86057 switch(l.nodeType){\r
86058 case 1:l.normalize();\r
86059 u=l.tagName.toLowerCase();\r
86060 if(p==null){\r
86061 if(/^(img|a)$/.test(u)){\r
86062 if(u=="a"&&l.target&&(ZmMailMsgView._URL_RE.test(l.href)||ZmMailMsgView._MAILTO_RE.test(l.href))){\r
86063 var f=RegExp.$1;\r
86064 u=s.createElement("div");\r
86065 u.innerHTML=e.findObjects(AjxStringUtil.trim(RegExp.$1));\r
86066 u=u.firstChild;\r
86067 if(u.nodeType==3){\r
86068 return u.nextSibling\r
86069 }\r
86070 l.parentNode.insertBefore(u,l);\r
86071 u.innerHTML="";\r
86072 u.appendChild(l);\r
86073 return u.nextSibling\r
86074 }\r
86075 c=false\r
86076 }}else{\r
86077 l=p\r
86078 }\r
86079 if(parseFloat(l.style.textIndent)<0){\r
86080 l.style.textIndent=""\r
86081 }\r
86082 for(m=l.firstChild;\r
86083 m;\r
86084 m=o(m,c)){}\r
86085 return l.nextSibling;\r
86086 case 3:case 4:if(c&&/[^\s\xA0]/.test(l.data)){\r
86087 try{\r
86088 var v=null,y=null;\r
86089 if(!AjxEnv.isIE){\r
86090 var d=/^[\s\xA0]+/.exec(l.data);\r
86091 if(d){\r
86092 v=l;\r
86093 l=l.splitText(d[0].length)\r
86094 }\r
86095 d=/[\s\xA0]+$/.exec(l.data);\r
86096 if(d){\r
86097 y=l.splitText(l.data.length-d[0].length)\r
86098 }}\r
86099 u=a;\r
86100 var r=e.findObjects(l.data,true,null,false);\r
86101 var w=false;\r
86102 if(AjxEnv.isIE){\r
86103 u.innerHTML=["<pre>",r,"</pre>"].join("");\r
86104 w=true\r
86105 }else{\r
86106 u.innerHTML=r\r
86107 }\r
86108 if(v){\r
86109 u.insertBefore(v,u.firstChild)\r
86110 }\r
86111 if(y){\r
86112 u.appendChild(y)\r
86113 }\r
86114 v=l.parentNode;\r
86115 if(w){\r
86116 u=u.firstChild\r
86117 }\r
86118 while(u.firstChild){\r
86119 v.insertBefore(u.firstChild,l)\r
86120 }\r
86121 u=l.nextSibling;\r
86122 v.removeChild(l);\r
86123 return u\r
86124 }\r
86125 catch(g){}}}\r
86126 return l.nextSibling\r
86127 };\r
86128 for(var t=0;\r
86129 t<n.childNodes.length;\r
86130 t++){\r
86131 o(n.childNodes[t],true)\r
86132 }};\r
86133 ZmObjectManager.prototype.findObjectsInNode=function(a,t,n,s){\r
86134 var o=this,h=a.ownerDocument,l=h.createElement("div");\r
86135 if(!t){\r
86136 t=/^(script|link|object|iframe|applet)$/i\r
86137 }\r
86138 var e=function(u,m){\r
86139 var p,g,d,w;\r
86140 switch(u.nodeType){\r
86141 case 1:u.normalize();\r
86142 p=u.tagName.toLowerCase();\r
86143 if(s&&s.foreachElement){\r
86144 w=s.foreachElement(u,p,t,n)\r
86145 }\r
86146 if(w==null){\r
86147 if(/^(img|a)$/.test(p)){\r
86148 if(p=="a"&&u.target&&(ZmMailMsgView._URL_RE.test(u.href)||ZmMailMsgView._MAILTO_RE.test(u.href))){\r
86149 var y=RegExp.$1;\r
86150 p=h.createElement("div");\r
86151 p.innerHTML=o.findObjects(AjxStringUtil.trim(RegExp.$1));\r
86152 p=p.firstChild;\r
86153 if(p.nodeType==3){\r
86154 return p.nextSibling\r
86155 }\r
86156 u.parentNode.insertBefore(p,u);\r
86157 p.innerHTML="";\r
86158 p.appendChild(u);\r
86159 return p.nextSibling\r
86160 }\r
86161 m=false\r
86162 }else{\r
86163 if(t.test(p)||(n&&!n.test(p))){\r
86164 p=u.nextSibling;\r
86165 u.parentNode.removeChild(u);\r
86166 return p\r
86167 }}}else{\r
86168 u=w\r
86169 }\r
86170 if(AjxEnv.isIE){\r
86171 u.style.cssText=u.style.cssText\r
86172 }\r
86173 for(g=u.firstChild;\r
86174 g;\r
86175 g=e(g,m)){}\r
86176 return u.nextSibling;\r
86177 case 3:case 4:if(m&&/[^\s\xA0]/.test(u.data)){\r
86178 try{\r
86179 var q=null,k=null;\r
86180 if(!AjxEnv.isIE){\r
86181 var f=/^[\s\xA0]+/.exec(u.data);\r
86182 if(f){\r
86183 q=u;\r
86184 u=u.splitText(f[0].length)\r
86185 }\r
86186 f=/[\s\xA0]+$/.exec(u.data);\r
86187 if(f){\r
86188 k=u.splitText(u.data.length-f[0].length)\r
86189 }}\r
86190 p=l;\r
86191 var c=o.findObjects(u.data,true,null,false);\r
86192 var x=false;\r
86193 if(AjxEnv.isIE){\r
86194 p.innerHTML=["<pre>",c,"</pre>"].join("");\r
86195 x=true\r
86196 }else{\r
86197 p.innerHTML=c\r
86198 }\r
86199 if(q){\r
86200 p.insertBefore(q,p.firstChild)\r
86201 }\r
86202 if(k){\r
86203 p.appendChild(k)\r
86204 }\r
86205 q=u.parentNode;\r
86206 if(x){\r
86207 p=p.firstChild\r
86208 }\r
86209 while(p.firstChild){\r
86210 q.insertBefore(p.firstChild,u)\r
86211 }\r
86212 p=u.nextSibling;\r
86213 q.removeChild(u);\r
86214 return p\r
86215 }\r
86216 catch(v){}}}\r
86217 return u.nextSibling\r
86218 };\r
86219 var r=h.createDocumentFragment();\r
86220 while(a.firstChild){\r
86221 r.appendChild(a.firstChild);\r
86222 e(r.lastChild,true,this)\r
86223 }\r
86224 a.appendChild(r)\r
86225 };\r
86226 ZmObjectManager.prototype.findMatch=function(r,h){\r
86227 if(!r){\r
86228 return""\r
86229 }\r
86230 var a=r.length;\r
86231 var s=0;\r
86232 var l=null;\r
86233 var e=a;\r
86234 var c=null;\r
86235 var n;\r
86236 var u=null;\r
86237 if(h){\r
86238 var t=this.getHandlers()[h];\r
86239 if(t){\r
86240 for(n=0;\r
86241 n<t.length;\r
86242 n++){\r
86243 u=t[n].findObject(r,s);\r
86244 if(!u){\r
86245 continue\r
86246 }\r
86247 if(u.index>=e){\r
86248 break\r
86249 }\r
86250 l=u;\r
86251 e=u.index;\r
86252 c=t[n]\r
86253 }}}else{\r
86254 for(var o=0;\r
86255 o<this._allObjectHandlers.length;\r
86256 o++){\r
86257 var d=this._allObjectHandlers[o];\r
86258 u=d.findObject(r,s);\r
86259 if(u&&u.index<e){\r
86260 l=u;\r
86261 e=u.index;\r
86262 c=d\r
86263 }}}\r
86264 return l\r
86265 };\r
86266 ZmObjectManager.prototype.processHtmlNode=function(l,h,y,u){\r
86267 var w=l.ownerDocument;\r
86268 h=h!=null?h:true;\r
86269 var r=y instanceof RegExp?y:null;\r
86270 if(!r){\r
86271 y=y||["script","link","object","style","applet","iframe"];\r
86272 y=y instanceof Array?y:[y];\r
86273 r=new RegExp("^("+y.join("|")+")$","i")\r
86274 }\r
86275 var m=u instanceof RegExp?u:null;\r
86276 if(!m&&u){\r
86277 u=u instanceof Array?u:[u];\r
86278 m=new RegExp("^("+u.join("|")+")$","i")\r
86279 }\r
86280 var f,c,v;\r
86281 switch(l.nodeType){\r
86282 case 1:l.normalize();\r
86283 f=l.tagName.toLowerCase();\r
86284 if(/^(img|a)$/.test(f)){\r
86285 if(f=="a"&&(ZmMailMsgView._URL_RE.test(l.href)||ZmMailMsgView._MAILTO_RE.test(l.href))){\r
86286 var n=RegExp.$1;\r
86287 f=w.createElement("div");\r
86288 f.innerHTML=this.findObjects(AjxStringUtil.trim(RegExp.$1));\r
86289 f=f.firstChild;\r
86290 if(f.nodeType==3){\r
86291 return f.nextSibling\r
86292 }\r
86293 l.parentNode.insertBefore(f,l);\r
86294 f.innerHTML="";\r
86295 f.appendChild(l);\r
86296 return f.nextSibling\r
86297 }\r
86298 h=false\r
86299 }else{\r
86300 if(r.test(f)){\r
86301 f=l.nextSibling;\r
86302 l.parentNode.removeChild(l);\r
86303 return f\r
86304 }else{\r
86305 if(m&&m.test(f)){\r
86306 f=l.nextSibling;\r
86307 var e=w.createDocumentFragment();\r
86308 for(var o=l.firstChild;\r
86309 o;\r
86310 o=o.nextSibling){\r
86311 e.appendChild(o)\r
86312 }\r
86313 l.parentNode.replaceChild(e,l);\r
86314 return f\r
86315 }else{\r
86316 if(f=="style"){\r
86317 return l.nextSibling\r
86318 }}}}\r
86319 if(AjxEnv.isIE){\r
86320 l.style.cssText=l.style.cssText\r
86321 }\r
86322 var o=l.firstChild;\r
86323 while(o){\r
86324 o=this.processHtmlNode(o,h,r,m)\r
86325 }\r
86326 return l.nextSibling;\r
86327 case 3:case 4:if(h&&/[^\s\xA0]/.test(l.data)){\r
86328 try{\r
86329 var g=null,p=null;\r
86330 if(!AjxEnv.isIE){\r
86331 if(/^[\s\xA0]+/.test(l.data)){\r
86332 g=l;\r
86333 l=l.splitText(RegExp.lastMatch.length)\r
86334 }\r
86335 if(/[\s\xA0]+$/.test(l.data)){\r
86336 p=l.splitText(l.data.length-RegExp.lastMatch.length)\r
86337 }}\r
86338 f=w.createElement("div");\r
86339 var t=this.findObjects(l.data,true,null,false);\r
86340 var s=false;\r
86341 if(AjxEnv.isIE){\r
86342 f.innerHTML=["<pre>",t,"</pre>"].join("");\r
86343 s=true\r
86344 }else{\r
86345 f.innerHTML=t\r
86346 }\r
86347 if(g){\r
86348 f.insertBefore(g,f.firstChild)\r
86349 }\r
86350 if(p){\r
86351 f.appendChild(p)\r
86352 }\r
86353 g=l.parentNode;\r
86354 if(s){\r
86355 f=f.firstChild\r
86356 }\r
86357 while(f.firstChild){\r
86358 g.insertBefore(f.firstChild,l)\r
86359 }\r
86360 f=l.nextSibling;\r
86361 g.removeChild(l);\r
86362 return f\r
86363 }\r
86364 catch(d){}}}\r
86365 return l.nextSibling\r
86366 };\r
86367 ZmObjectManager.prototype.setHandlerAttr=function(o,t,n){\r
86368 var e=this.getHandlers()[o];\r
86369 if(e){\r
86370 for(var a=0;\r
86371 a<e.length;\r
86372 a++){\r
86373 e[a][t]=n\r
86374 }}};\r
86375 ZmObjectManager.prototype.generateSpan=function(o,a,e,n,t){\r
86376 var s=this._objectIdPrefix+Dwt.getNextId();\r
86377 this._objects[s]={\r
86378 object:n,handler:o,id:s,context:t};\r
86379 return o.generateSpan(a,e,n,s,t)\r
86380 };\r
86381 ZmObjectManager.prototype._findObjectSpan=function(t){\r
86382 while(t&&(!t.id||t.id.indexOf(this._objectIdPrefix)!==0)){\r
86383 t=t.parentNode\r
86384 }\r
86385 return t\r
86386 };\r
86387 ZmObjectManager.prototype._mouseOverListener=function(n){\r
86388 var o=this._findObjectSpan(n.target);\r
86389 if(!o){\r
86390 return false\r
86391 }\r
86392 var e=this._objects[o.id];\r
86393 if(!e){\r
86394 return false\r
86395 }\r
86396 o.className=e.handler.getHoveredClassName(e.object,e.context);\r
86397 if(e.handler.hasToolTipText()){\r
86398 var a=DwtShell.getShell(window);\r
86399 var t=a.getHoverMgr();\r
86400 if((!t.isHovering()||t.getHoverObject()!=e)&&!DwtMenu.menuShowing()){\r
86401 t.reset();\r
86402 t.setHoverOverDelay(ZmObjectManager._TOOLTIP_DELAY);\r
86403 t.setHoverObject(e);\r
86404 t.setHoverOverData(e);\r
86405 t.setHoverOverListener(this._hoverOverListener);\r
86406 t.hoverOver(n.docX,n.docY)\r
86407 }}\r
86408 n._returnValue=true;\r
86409 n._dontCallPreventDefault=true;\r
86410 return false\r
86411 };\r
86412 ZmObjectManager.prototype._mouseOutListener=function(n){\r
86413 var o=this._findObjectSpan(n.target);\r
86414 var e=o?this._objects[o.id]:null;\r
86415 if(e){\r
86416 o.className=e.handler.getClassName(e.object,e.context);\r
86417 var a=DwtShell.getShell(window);\r
86418 var t=a.getHoverMgr();\r
86419 t.setHoverOutDelay(0);\r
86420 t.setHoverOutData(e);\r
86421 t.setHoverOutListener(this._hoverOutListener);\r
86422 t.hoverOut()\r
86423 }\r
86424 return false\r
86425 };\r
86426 ZmObjectManager.prototype._mouseMoveListener=function(n){\r
86427 n._returnValue=true;\r
86428 n._dontCallPreventDefault=true;\r
86429 n._stopPropagation=true;\r
86430 var o=this._findObjectSpan(n.target);\r
86431 var e=o?this._objects[o.id]:null;\r
86432 if(e){\r
86433 var a=DwtShell.getShell(window);\r
86434 var t=a.getHoverMgr();\r
86435 if(!t.isHovering()){\r
86436 t.hoverOver(n.docX,n.docY)\r
86437 }}\r
86438 return false\r
86439 };\r
86440 ZmObjectManager.prototype._rightClickListener=function(e){\r
86441 e.button=DwtMouseEvent.RIGHT;\r
86442 return this._mouseDownListener(e)\r
86443 };\r
86444 ZmObjectManager.prototype._mouseDownListener=function(s){\r
86445 s._dontCallPreventDefault=true;\r
86446 s._returnValue=true;\r
86447 s._stopPropagation=false;\r
86448 var n=this._findObjectSpan(s.target);\r
86449 if(!n){\r
86450 return true\r
86451 }\r
86452 var t=this._objects[n.id];\r
86453 if(!t){\r
86454 return true\r
86455 }\r
86456 s._stopPropagation=true;\r
86457 var o=DwtShell.getShell(window);\r
86458 var a=o.getHoverMgr();\r
86459 a.setHoverOutDelay(0);\r
86460 a.setHoverOutData(t);\r
86461 a.setHoverOutListener(this._hoverOutListener);\r
86462 a.hoverOut();\r
86463 n.className=t.handler.getActiveClassName(t.object,t.context);\r
86464 if(s.button==DwtMouseEvent.RIGHT){\r
86465 var e=(this._view instanceof DwtDialog);\r
86466 var r=t.handler.getActionMenu(t.object,n,t.context,e);\r
86467 if(r){\r
86468 r.popup(0,s.docX,s.docY);\r
86469 s._dontCallPreventDefault=false;\r
86470 s._returnValue=false;\r
86471 s._stopPropagation=true;\r
86472 return true\r
86473 }}else{\r
86474 if(s.button==DwtMouseEvent.LEFT){\r
86475 if(this._selectCallback){\r
86476 this._selectCallback.run()\r
86477 }\r
86478 t.handler.selected(t.object,n,s,t.context);\r
86479 return true\r
86480 }}\r
86481 return false\r
86482 };\r
86483 ZmObjectManager.prototype._mouseUpListener=function(a){\r
86484 a._returnValue=true;\r
86485 a._dontCallPreventDefault=true;\r
86486 a._stopPropagation=true;\r
86487 var t=this._findObjectSpan(a.target);\r
86488 if(!t){\r
86489 return false\r
86490 }\r
86491 var e=this._objects[t.id];\r
86492 if(!e){\r
86493 return false\r
86494 }\r
86495 t.className=e.handler.getHoveredClassName(e.object,e.context);\r
86496 return false\r
86497 };\r
86498 ZmObjectManager.prototype._handleHoverOver=function(s){\r
86499 if(!(s&&s.object)){\r
86500 return\r
86501 }\r
86502 var n=this._findObjectSpan(s.target);\r
86503 var o=s.object.handler;\r
86504 var t=s.object.object;\r
86505 var a=s.object.context;\r
86506 var e=s.x;\r
86507 var r=s.y;\r
86508 o.hoverOver(t,a,e,r,n)\r
86509 };\r
86510 ZmObjectManager.prototype._handleHoverOut=function(n){\r
86511 if(!(n&&n.object)){\r
86512 return\r
86513 }\r
86514 var o=this._findObjectSpan(n.target);\r
86515 var a=n.object.handler;\r
86516 var e=n.object.object;\r
86517 var t=n.object.context;\r
86518 a.hoverOut(e,t,o)\r
86519 };\r
86520 ZmObjectManager.__byPriority=function(t,e){\r
86521 return(e._prio<t._prio)-(t._prio<e._prio)\r
86522 }\r
86523 }\r
86524 if(AjxPackage.define("zimbraMail.share.model.ZmSettings")){\r
86525 ZmSettings=function(e){\r
86526 ZmModel.call(this,ZmEvent.S_SETTINGS);\r
86527 this._settings={};\r
86528 this._nameToId={};\r
86529 this.getInfoResponse=null;\r
86530 if(!e){\r
86531 this.initialize()\r
86532 }};\r
86533 ZmSettings.prototype=new ZmModel;\r
86534 ZmSettings.prototype.constructor=ZmSettings;\r
86535 ZmSettings.prototype.registerSetting=function(a,t){\r
86536 ZmSetting[a]=a;\r
86537 var e=this._settings[a]=new ZmSetting(a,t);\r
86538 if(t.name){\r
86539 this._nameToId[t.name]=a\r
86540 }\r
86541 return e\r
86542 };\r
86543 ZmSettings.prototype.toString=function(){\r
86544 return"ZmSettings"\r
86545 };\r
86546 ZmSettings.prototype.initialize=function(){\r
86547 this._initialize();\r
86548 this._setDefaults();\r
86549 this.userSettingsLoaded=false;\r
86550 var e=new AjxListener(this,this._changeListener);\r
86551 this.getSetting(ZmSetting.QUOTA_USED).addChangeListener(e);\r
86552 this.getSetting(ZmSetting.POLLING_INTERVAL).addChangeListener(e);\r
86553 this.getSetting(ZmSetting.SKIN_NAME).addChangeListener(e);\r
86554 this.getSetting(ZmSetting.LOCALE_NAME).addChangeListener(e);\r
86555 this.getSetting(ZmSetting.SHORTCUTS).addChangeListener(e);\r
86556 this.getSetting(ZmSetting.CHILD_ACCTS_VISIBLE).addChangeListener(e)\r
86557 };\r
86558 ZmSettings.prototype.get=function(t,e){\r
86559 return(t&&this._settings[t])?this._settings[t].getValue(e):null\r
86560 };\r
86561 ZmSettings.prototype.getSetting=function(e){\r
86562 return this._settings[e]\r
86563 };\r
86564 ZmSettings.prototype.createFromJs=function(r){\r
86565 for(var a in r){\r
86566 var h=r[a];\r
86567 var o=this._settings[this._nameToId[a]];\r
86568 if(o){\r
86569 if(o.dataType==ZmSetting.D_HASH){\r
86570 var s=h.split(",");\r
86571 var n={};\r
86572 for(var t=0;\r
86573 t<s.length;\r
86574 t++){\r
86575 var e=s[t].split(":");\r
86576 n[e[0]]=e[1]\r
86577 }\r
86578 h=n\r
86579 }\r
86580 o.setValue(h,null,false,false,true);\r
86581 if(ZmSetting.IS_IMPLICIT[o.id]){\r
86582 o.origValue=o.getValue(null,false)\r
86583 }}else{}}};\r
86584 ZmSettings.prototype.getSettingByName=function(e){\r
86585 return this._nameToId[e]\r
86586 };\r
86587 ZmSettings.prototype.loadUserSettings=function(l,n,h,o,e,t){\r
86588 var s=[l,h,e];\r
86589 if(t){\r
86590 var r=AjxSoapDoc.create("GetInfoRequest","urn:zimbraAccount");\r
86591 var c=new AjxCallback(this,this._handleResponseLoadUserSettings,s);\r
86592 t.addNewRequestParams(r,c)\r
86593 }else{\r
86594 var a={\r
86595 soapDoc:(o?null:AjxSoapDoc.create("GetInfoRequest","urn:zimbraAccount")),accountName:h,asyncMode:true,callback:(new AjxCallback(this,this._handleResponseLoadUserSettings,s)),errorCallback:n,response:o};\r
86596 appCtxt.getAppController().sendRequest(a)\r
86597 }};\r
86598 ZmSettings.prototype._handleResponseLoadUserSettings=function(l,h,e,d){\r
86599 var o=this.getInfoResponse=d.getResponse().GetInfoResponse;\r
86600 if(o.name){\r
86601 this._settings[ZmSetting.USERNAME].setValue(o.name)\r
86602 }\r
86603 if(o.lifetime){\r
86604 this._settings[ZmSetting.TOKEN_LIFETIME].setValue(o.lifetime)\r
86605 }\r
86606 if(o.accessed){\r
86607 this._settings[ZmSetting.LAST_ACCESS].setValue(o.accessed)\r
86608 }\r
86609 if(o.prevSession){\r
86610 this._settings[ZmSetting.PREVIOUS_SESSION].setValue(o.prevSession)\r
86611 }\r
86612 if(o.recent){\r
86613 this._settings[ZmSetting.RECENT_MESSAGES].setValue(o.recent)\r
86614 }\r
86615 if(o.used){\r
86616 this._settings[ZmSetting.QUOTA_USED].setValue(o.used)\r
86617 }\r
86618 if(o.rest){\r
86619 this._settings[ZmSetting.REST_URL].setValue(o.rest)\r
86620 }\r
86621 if(o.license){\r
86622 this._settings[ZmSetting.LICENSE_STATUS].setValue(o.license.status)\r
86623 }\r
86624 if(o.prefs&&o.prefs._attrs){\r
86625 this.createFromJs(o.prefs._attrs)\r
86626 }\r
86627 if(o.attrs&&o.attrs._attrs){\r
86628 this.createFromJs(o.attrs._attrs)\r
86629 }\r
86630 if(e){\r
86631 for(var n in e){\r
86632 this.createFromJs(e[n])\r
86633 }}\r
86634 if(!h){\r
86635 appCtxt.accountList.createAccounts(this,o);\r
86636 if(appCtxt.isOffline&&AjxEnv.isPrism&&window.platform&&(AjxEnv.isMac||AjxEnv.isWindows)){\r
86637 var c=this._settings[ZmSetting.OFFLINE_SUPPORTS_MAILTO];\r
86638 if(c){\r
86639 c.setValue(true)\r
86640 \r
86641 }\r
86642 c=this._settings[ZmSetting.OFFLINE_SUPPORTS_DOCK_UPDATE];\r
86643 if(c){\r
86644 c.setValue(true)\r
86645 }\r
86646 c=this._settings[ZmSetting.OFFLINE_IS_MAILTO_HANDLER];\r
86647 try{\r
86648 if(c&&!window.platform.isRegisteredProtocolHandler("mailto")){\r
86649 c.setValue(false)\r
86650 }}\r
86651 catch(s){\r
86652 c=this._settings[ZmSetting.OFFLINE_SUPPORTS_MAILTO];\r
86653 c.setValue(false)\r
86654 }}}\r
86655 if(o.changePasswordURL){\r
86656 c=this._settings[ZmSetting.CHANGE_PASSWORD_URL];\r
86657 c.setValue(o.changePasswordURL)\r
86658 }\r
86659 if(o.publicURL){\r
86660 c=this._settings[ZmSetting.PUBLIC_URL];\r
86661 c.setValue(o.publicURL)\r
86662 }\r
86663 var c=this._settings[ZmSetting.REPLY_TO_ADDRESS];\r
86664 if(c){\r
86665 c.defaultValue=this.get(ZmSetting.USERNAME)\r
86666 }\r
86667 if(!this.get(ZmSetting.SEARCH_ENABLED)){\r
86668 c=this._settings[ZmSetting.BROWSE_ENABLED];\r
86669 if(c){\r
86670 c.setValue(false,null,true)\r
86671 }}\r
86672 if(this.get(ZmSetting.FORCE_CAL_OFF)){\r
86673 c=this._settings[ZmSetting.CALENDAR_ENABLED];\r
86674 if(c){\r
86675 c.setValue(false,null,true)\r
86676 }}\r
86677 if(!this.get(ZmSetting.OPTIONS_ENABLED)){\r
86678 c=this._settings[ZmSetting.FILTERS_ENABLED];\r
86679 if(c){\r
86680 c.setValue(false,null,true)\r
86681 }}\r
86682 if(!h){\r
86683 if(o.zimlets&&o.zimlets.zimlet){\r
86684 var a=o.zimlets.zimlet;\r
86685 for(var n=0;\r
86686 n<a.length;\r
86687 n++){\r
86688 var r=a[n];\r
86689 if(r.zimlet[0].name=="com_zimbra_usagetracker"){\r
86690 DwtControl.globalSelectionListener=new AjxListener(null,ZmZimbraMail.globalButtonListener);\r
86691 break\r
86692 }}\r
86693 var t=new AjxListener(this,function(){\r
86694 var u=new AjxCallback(this,this._loadZimlets,[o.zimlets.zimlet,o.props.prop]);\r
86695 AjxDispatcher.require("Zimlet",false,u)\r
86696 }\r
86697 );\r
86698 appCtxt.getAppController().addListener(ZmAppEvent.POST_STARTUP,t)\r
86699 }else{\r
86700 appCtxt.allZimletsLoaded()\r
86701 }}\r
86702 this.userSettingsLoaded=true;\r
86703 if(l){\r
86704 l.run(d)\r
86705 }};\r
86706 ZmSettings.prototype._loadZimlets=function(r,d){\r
86707 r=r||[];\r
86708 this.registerSetting("ZIMLETS",{\r
86709 type:ZmSetting.T_CONFIG,defaultValue:r,isGlobal:true}\r
86710 );\r
86711 this.registerSetting("USER_PROPS",{\r
86712 type:ZmSetting.T_CONFIG,defaultValue:d}\r
86713 );\r
86714 var o=[];\r
86715 var l=appCtxt.get(ZmSetting.CHECKED_ZIMLETS)||[];\r
86716 for(var s=0;\r
86717 s<r.length;\r
86718 s++){\r
86719 var m=r[s];\r
86720 var t=m.zimlet[0];\r
86721 if(!l||l.length<=0||(","+l.join(",")+",").indexOf(","+t.name+",")>=0){\r
86722 o.push(m)\r
86723 }}\r
86724 var a=appCtxt.getZimletMgr();\r
86725 a.loadZimlets(o,d);\r
86726 if(o&&o.length){\r
86727 var e=appCtxt.getCurrentApp();\r
86728 if(e){\r
86729 var p;\r
86730 if(appCtxt.multiAccounts){\r
86731 var h=e.getOverviewContainer().containerId;\r
86732 var f=ZmOrganizer.LABEL[ZmOrganizer.ZIMLET];\r
86733 var n=[h,f].join("_");\r
86734 p=appCtxt.getOverviewController().getOverview(n)\r
86735 }else{\r
86736 p=e.getOverview()\r
86737 }}\r
86738 if(p){\r
86739 p.setTreeView(ZmOrganizer.ZIMLET);\r
86740 if(appCtxt.multiAccounts&&a.getPanelZimlets().length==0){\r
86741 e.getOverviewContainer().removeZimletSection()\r
86742 }}\r
86743 if(appCtxt.get(ZmSetting.PORTAL_ENABLED)){\r
86744 var c=appCtxt.getApp(ZmApp.PORTAL).getPortletMgr();\r
86745 var u=c.createPortlets(true)\r
86746 }}};\r
86747 ZmSettings.prototype.loadPreferenceData=function(h){\r
86748 var r=new ZmBatchCommand(null,appCtxt.accountList.mainAccount.name);\r
86749 var s=AjxSoapDoc.create("GetAvailableSkinsRequest","urn:zimbraAccount");\r
86750 var n=new AjxCallback(this,this._handleResponseLoadAvailableSkins);\r
86751 r.addNewRequestParams(s,n);\r
86752 var e=AjxSoapDoc.create("GetAvailableLocalesRequest","urn:zimbraAccount");\r
86753 var o=new AjxCallback(this,this._handleResponseGetAllLocales);\r
86754 r.addNewRequestParams(e,o);\r
86755 var t=AjxSoapDoc.create("GetAvailableCsvFormatsRequest","urn:zimbraAccount");\r
86756 var a=new AjxCallback(this,this._handleResponseGetAvailableCsvFormats);\r
86757 r.addNewRequestParams(t,a);\r
86758 r.run(h)\r
86759 };\r
86760 ZmSettings.prototype._handleResponseLoadAvailableSkins=function(e){\r
86761 var n=e.getResponse().GetAvailableSkinsResponse;\r
86762 var o=n.skin;\r
86763 if(o&&o.length){\r
86764 var a=appCtxt.accountList.mainAccount.settings.getSetting(ZmSetting.AVAILABLE_SKINS);\r
86765 for(var t=0;\r
86766 t<o.length;\r
86767 t++){\r
86768 a.setValue(o[t].name)\r
86769 }}};\r
86770 ZmSettings.prototype._handleResponseGetAllLocales=function(a){\r
86771 var t=a._data.GetAvailableLocalesResponse.locale;\r
86772 if(t&&t.length){\r
86773 for(var o=0,n=t.length;\r
86774 o<n;\r
86775 o++){\r
86776 var e=t[o];\r
86777 e.id=e.id.replace(/^in/,"id");\r
86778 ZmLocale.create(e.id,e.name)\r
86779 }\r
86780 this.getSetting(ZmSetting.LOCALE_CHANGE_ENABLED).setValue(ZmLocale.hasChoices())\r
86781 }};\r
86782 ZmSettings.prototype._handleResponseGetAvailableCsvFormats=function(a){\r
86783 var t=a.getResponse().GetAvailableCsvFormatsResponse.csv;\r
86784 var n=appCtxt.accountList.mainAccount.settings.getSetting(ZmSetting.AVAILABLE_CSVFORMATS);\r
86785 if(t&&t.length){\r
86786 var e;\r
86787 for(var o=0;\r
86788 o<t.length;\r
86789 o++){\r
86790 n.setValue(t[o].name)\r
86791 }}};\r
86792 ZmSettings.prototype.save=function(d,f,o,a){\r
86793 if(!(d&&d.length)){\r
86794 return\r
86795 }\r
86796 var u=AjxSoapDoc.create("ModifyPrefsRequest","urn:zimbraAccount");\r
86797 var n=false;\r
86798 var t=[];\r
86799 for(var c=0;\r
86800 c<d.length;\r
86801 c++){\r
86802 var g=d[c];\r
86803 if(g.type==ZmSetting.T_METADATA){\r
86804 t.push(g);\r
86805 continue\r
86806 }else{\r
86807 if(g.type!=ZmSetting.T_PREF){\r
86808 continue\r
86809 }}\r
86810 if(!g.name){\r
86811 continue\r
86812 }\r
86813 if(g.dataType==ZmSetting.D_LIST){\r
86814 var m=g.getValue();\r
86815 if(m&&m.length){\r
86816 for(var r=0;\r
86817 r<m.length;\r
86818 r++){\r
86819 var s=u.set("pref",m[r]);\r
86820 s.setAttribute("name",g.name)\r
86821 }}else{\r
86822 var s=u.set("pref","");\r
86823 s.setAttribute("name",g.name)\r
86824 }}else{\r
86825 var m=g.getValue(null,true);\r
86826 var s=u.set("pref",m);\r
86827 s.setAttribute("name",g.name)\r
86828 }\r
86829 n=true\r
86830 }\r
86831 if(t.length>0){\r
86832 var l=new AjxCallback(this,this._handleResponseSaveMetaData,[t]);\r
86833 for(var c=0;\r
86834 c<t.length;\r
86835 c++){\r
86836 var h=t[c];\r
86837 appCtxt.getMetaData().set(h.section,h.name,h.value,o,l)\r
86838 }}\r
86839 if(n){\r
86840 var p;\r
86841 var e=false;\r
86842 if(f||o){\r
86843 p=new AjxCallback(this,this._handleResponseSave,[d,f]);\r
86844 e=true\r
86845 }\r
86846 if(o){\r
86847 o.addNewRequestParams(u,p)\r
86848 }else{\r
86849 appCtxt.getAppController().sendRequest({\r
86850 soapDoc:u,asyncMode:e,callback:p,accountName:a}\r
86851 )\r
86852 }}};\r
86853 ZmSettings.prototype._handleResponseSaveMetaData=function(o,e){\r
86854 for(var t=0;\r
86855 t<o.length;\r
86856 t++){\r
86857 var a=o[t];\r
86858 a.origValue=a.getValue(null,false);\r
86859 a._notify(ZmEvent.E_MODIFY)\r
86860 }};\r
86861 ZmSettings.prototype._handleResponseSave=function(o,s,e){\r
86862 var n=e.getResponse();\r
86863 if(n.ModifyPrefsResponse!=null){\r
86864 for(var t=0;\r
86865 t<o.length;\r
86866 t++){\r
86867 var a=o[t];\r
86868 a.origValue=a.getValue(null,false);\r
86869 a._notify(ZmEvent.E_MODIFY)\r
86870 }\r
86871 this._notify(ZmEvent.E_MODIFY,{\r
86872 settings:o}\r
86873 )\r
86874 }\r
86875 if(s){\r
86876 s.run(e)\r
86877 }};\r
86878 ZmSettings.prototype._setDefaults=function(){\r
86879 var e=AjxUtil.formatUrl({\r
86880 host:location.hostname,path:"/service/soap/",qsReset:true}\r
86881 );\r
86882 this._settings[ZmSetting.CSFE_SERVER_URI].setValue(e,null,false,true);\r
86883 e=AjxUtil.formatUrl({\r
86884 host:location.hostname,path:"/service/home/~/",qsReset:true,qsArgs:{\r
86885 auth:"co"}}\r
86886 );\r
86887 this._settings[ZmSetting.CSFE_MSG_FETCHER_URI].setValue(e,null,false,true);\r
86888 e=AjxUtil.formatUrl({\r
86889 host:location.hostname,path:"/service/upload",qsReset:true,qsArgs:{\r
86890 lbfums:""}}\r
86891 );\r
86892 this._settings[ZmSetting.CSFE_UPLOAD_URI].setValue(e,null,false,true);\r
86893 e=AjxUtil.formatUrl({\r
86894 host:location.hostname,path:"/service/upload",qsReset:true}\r
86895 );\r
86896 this._settings[ZmSetting.CSFE_ATTACHMENT_UPLOAD_URI].setValue(e,null,false,true);\r
86897 e=AjxUtil.formatUrl({\r
86898 host:location.hostname,path:"/service/home/~/",qsReset:true,qsArgs:{\r
86899 auth:"co",id:"{0}",fmt:"csv"}}\r
86900 );\r
86901 this._settings[ZmSetting.CSFE_EXPORT_URI].setValue(e,null,false,true);\r
86902 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.DATE_DESC,ZmId.VIEW_CONVLIST,true,true);\r
86903 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.DATE_DESC,ZmId.VIEW_CONV,true,true);\r
86904 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.DATE_DESC,ZmId.VIEW_TRAD,true,true);\r
86905 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.NAME_ASC,ZmId.VIEW_CONTACT_SRC,true,true);\r
86906 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.NAME_ASC,ZmId.VIEW_CONTACT_TGT,true,true);\r
86907 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.NAME_ASC,ZmId.VIEW_CONTACT_SIMPLE,true,true);\r
86908 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.NAME_ASC,ZmId.VIEW_CONTACT_CARDS,true,true);\r
86909 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.DATE_ASC,ZmId.VIEW_CAL,true,true);\r
86910 this._settings[ZmSetting.SORTING_PREF].setValue(ZmSearch.DUE_DATE_DESC,ZmId.VIEW_TASKLIST,true,true)\r
86911 };\r
86912 ZmSettings.prototype._initialize=function(){\r
86913 this.registerSetting("AC_TIMER_INTERVAL",{\r
86914 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_INT,defaultValue:300}\r
86915 );\r
86916 this.registerSetting("ASYNC_MODE",{\r
86917 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
86918 );\r
86919 this.registerSetting("BRANCH",{\r
86920 type:ZmSetting.T_CONFIG,defaultValue:"main"}\r
86921 );\r
86922 this.registerSetting("CLIENT_DATETIME",{\r
86923 type:ZmSetting.T_CONFIG,defaultValue:"20091214-1754"}\r
86924 );\r
86925 this.registerSetting("CLIENT_RELEASE",{\r
86926 type:ZmSetting.T_CONFIG,defaultValue:"20091214174341"}\r
86927 );\r
86928 this.registerSetting("CLIENT_VERSION",{\r
86929 type:ZmSetting.T_CONFIG,defaultValue:"6.0.4_GA_2038.RHEL5_64"}\r
86930 );\r
86931 this.registerSetting("CONFIG_PATH",{\r
86932 type:ZmSetting.T_CONFIG,defaultValue:appContextPath+"/js/zimbraMail/config"}\r
86933 );\r
86934 this.registerSetting("CSFE_EXPORT_URI",{\r
86935 type:ZmSetting.T_CONFIG}\r
86936 );\r
86937 this.registerSetting("CSFE_MSG_FETCHER_URI",{\r
86938 type:ZmSetting.T_CONFIG}\r
86939 );\r
86940 this.registerSetting("CSFE_SERVER_URI",{\r
86941 type:ZmSetting.T_CONFIG}\r
86942 );\r
86943 this.registerSetting("CSFE_UPLOAD_URI",{\r
86944 type:ZmSetting.T_CONFIG}\r
86945 );\r
86946 this.registerSetting("CSFE_ATTACHMENT_UPLOAD_URI",{\r
86947 type:ZmSetting.T_CONFIG}\r
86948 );\r
86949 this.registerSetting("DEV",{\r
86950 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
86951 );\r
86952 this.registerSetting("FORCE_CAL_OFF",{\r
86953 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
86954 );\r
86955 this.registerSetting("HELP_URI",{\r
86956 type:ZmSetting.T_CONFIG,defaultValue:appContextPath+ZmMsg.helpURI}\r
86957 );\r
86958 this.registerSetting("HTTP_PORT",{\r
86959 type:ZmSetting.T_CONFIG,defaultValue:ZmSetting.HTTP_DEFAULT_PORT}\r
86960 );\r
86961 this.registerSetting("HTTPS_PORT",{\r
86962 type:ZmSetting.T_CONFIG,defaultValue:ZmSetting.HTTPS_DEFAULT_PORT}\r
86963 );\r
86964 this.registerSetting("INSTANT_NOTIFY_INTERVAL",{\r
86965 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_INT,defaultValue:500}\r
86966 );\r
86967 this.registerSetting("INSTANT_NOTIFY_TIMEOUT",{\r
86968 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_INT,defaultValue:300}\r
86969 );\r
86970 this.registerSetting("LOG_REQUEST",{\r
86971 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
86972 );\r
86973 this.registerSetting("LOGO_URI",{\r
86974 type:ZmSetting.T_CONFIG,defaultValue:null}\r
86975 );\r
86976 this.registerSetting("PROTOCOL_MODE",{\r
86977 type:ZmSetting.T_CONFIG,defaultValue:ZmSetting.PROTO_HTTP}\r
86978 );\r
86979 this.registerSetting("SERVER_VERSION",{\r
86980 type:ZmSetting.T_CONFIG}\r
86981 );\r
86982 this.registerSetting("TIMEOUT",{\r
86983 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_INT,defaultValue:30}\r
86984 );\r
86985 this.registerSetting("USE_XML",{\r
86986 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
86987 );\r
86988 this.registerSetting("CHANGE_PASSWORD_URL",{\r
86989 type:ZmSetting.T_CONFIG}\r
86990 );\r
86991 this.registerSetting("PUBLIC_URL",{\r
86992 type:ZmSetting.T_CONFIG}\r
86993 );\r
86994 this.registerSetting("ASSISTANT_ENABLED",{\r
86995 name:"zimbraFeatureZimbraAssistantEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
86996 );\r
86997 this.registerSetting("BRIEFCASE_ENABLED",{\r
86998 name:"zimbraFeatureBriefcasesEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
86999 );\r
87000 this.registerSetting("CALENDAR_ENABLED",{\r
87001 name:"zimbraFeatureCalendarEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87002 );\r
87003 this.registerSetting("CALENDAR_UPSELL_ENABLED",{\r
87004 name:"zimbraFeatureCalendarUpsellEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87005 );\r
87006 this.registerSetting("CALENDAR_UPSELL_URL",{\r
87007 name:"zimbraFeatureCalendarUpsellURL",type:ZmSetting.T_COS}\r
87008 );\r
87009 this.registerSetting("CONTACTS_ENABLED",{\r
87010 name:"zimbraFeatureContactsEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87011 );\r
87012 this.registerSetting("CONTACTS_UPSELL_ENABLED",{\r
87013 name:"zimbraFeatureContactsUpsellEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87014 );\r
87015 this.registerSetting("CONTACTS_UPSELL_URL",{\r
87016 name:"zimbraFeatureContactsUpsellURL",type:ZmSetting.T_COS}\r
87017 );\r
87018 this.registerSetting("IM_ENABLED",{\r
87019 name:"zimbraFeatureIMEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87020 );\r
87021 this.registerSetting("IMPORT_EXPORT_ENABLED",{\r
87022 name:"zimbraFeatureImportExportFolderEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87023 );\r
87024 this.registerSetting("MAIL_ENABLED",{\r
87025 name:"zimbraFeatureMailEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87026 );\r
87027 this.registerSetting("MAIL_UPSELL_ENABLED",{\r
87028 name:"zimbraFeatureMailUpsellEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87029 );\r
87030 this.registerSetting("MAIL_UPSELL_URL",{\r
87031 name:"zimbraFeatureMailUpsellURL",type:ZmSetting.T_COS}\r
87032 );\r
87033 this.registerSetting("NOTEBOOK_ENABLED",{\r
87034 name:"zimbraFeatureNotebookEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87035 );\r
87036 this.registerSetting("OPTIONS_ENABLED",{\r
87037 name:"zimbraFeatureOptionsEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87038 );\r
87039 this.registerSetting("PORTAL_ENABLED",{\r
87040 name:"zimbraFeaturePortalEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87041 );\r
87042 this.registerSetting("TASKS_ENABLED",{\r
87043 name:"zimbraFeatureTasksEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87044 );\r
87045 this.registerSetting("VOICE_ENABLED",{\r
87046 name:"zimbraFeatureVoiceEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87047 );\r
87048 this.registerSetting("VOICE_UPSELL_ENABLED",{\r
87049 name:"zimbraFeatureVoiceUpsellEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87050 );\r
87051 this.registerSetting("VOICE_UPSELL_URL",{\r
87052 name:"zimbraFeatureVoiceUpsellURL",type:ZmSetting.T_COS}\r
87053 );\r
87054 this.registerSetting("ATTACHMENTS_BLOCKED",{\r
87055 name:"zimbraAttachmentsBlocked",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87056 );\r
87057 this.registerSetting("AVAILABLE_SKINS",{\r
87058 type:ZmSetting.T_COS,dataType:ZmSetting.D_LIST,isGlobal:true}\r
87059 );\r
87060 this.registerSetting("AVAILABLE_CSVFORMATS",{\r
87061 type:ZmSetting.T_COS,dataType:ZmSetting.D_LIST,isGlobal:true}\r
87062 );\r
87063 this.registerSetting("BROWSE_ENABLED",{\r
87064 name:"zimbraFeatureAdvancedSearchEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87065 );\r
87066 this.registerSetting("CHANGE_PASSWORD_ENABLED",{\r
87067 name:"zimbraFeatureChangePasswordEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87068 );\r
87069 this.registerSetting("DISPLAY_NAME",{\r
87070 name:"displayName",type:ZmSetting.T_COS}\r
87071 );\r
87072 this.registerSetting("FLAGGING_ENABLED",{\r
87073 name:"zimbraFeatureFlaggingEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87074 );\r
87075 this.registerSetting("FOLDER_TREE_OPEN",{\r
87076 name:"zimbraPrefFolderTreeOpen",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true,isImplicit:true}\r
87077 );\r
87078 this.registerSetting("GAL_AUTOCOMPLETE_ENABLED",{\r
87079 name:"zimbraFeatureGalAutoCompleteEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87080 );\r
87081 this.registerSetting("GAL_ENABLED",{\r
87082 name:"zimbraFeatureGalEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87083 );\r
87084 this.registerSetting("GROUP_CALENDAR_ENABLED",{\r
87085 name:"zimbraFeatureGroupCalendarEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87086 );\r
87087 this.registerSetting("HTML_COMPOSE_ENABLED",{\r
87088 name:"zimbraFeatureHtmlComposeEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87089 );\r
87090 this.registerSetting("IDLE_SESSION_TIMEOUT",{\r
87091 name:"zimbraMailIdleSessionTimeout",type:ZmSetting.T_COS,dataType:ZmSetting.D_LDAP_TIME,defaultValue:0}\r
87092 );\r
87093 this.registerSetting("IMAP_ACCOUNTS_ENABLED",{\r
87094 name:"zimbraFeatureImapDataSourceEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87095 );\r
87096 this.registerSetting("INSTANT_NOTIFY",{\r
87097 name:"zimbraFeatureInstantNotify",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87098 );\r
87099 this.registerSetting("LOCALE_CHANGE_ENABLED",{\r
87100 name:"zimbraFeatureLocaleChangeEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87101 );\r
87102 this.registerSetting("LOCALES",{\r
87103 type:ZmSetting.T_COS,dataType:ZmSetting.D_LIST}\r
87104 );\r
87105 this.registerSetting("LOGIN_URL",{\r
87106 name:"zimbraWebClientLoginURL",type:ZmSetting.T_COS}\r
87107 );\r
87108 this.registerSetting("LOGOUT_URL",{\r
87109 name:"zimbraWebClientLogoutURL",type:ZmSetting.T_COS}\r
87110 );\r
87111 this.registerSetting("MIN_POLLING_INTERVAL",{\r
87112 name:"zimbraMailMinPollingInterval",type:ZmSetting.T_COS,dataType:ZmSetting.D_LDAP_TIME,defaultValue:120}\r
87113 );\r
87114 this.registerSetting("MOBILE_SYNC_ENABLED",{\r
87115 name:"zimbraFeatureMobileSyncEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87116 );\r
87117 this.registerSetting("MOBILE_POLICY_ENABLED",{\r
87118 name:"zimbraFeatureMobilePolicyEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87119 );\r
87120 this.registerSetting("POP_ACCOUNTS_ENABLED",{\r
87121 name:"zimbraFeaturePop3DataSourceEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87122 );\r
87123 this.registerSetting("PORTAL_NAME",{\r
87124 name:"zimbraPortalName",type:ZmSetting.T_COS,defaultValue:"example"}\r
87125 );\r
87126 this.registerSetting("PWD_MAX_LENGTH",{\r
87127 name:"zimbraPasswordMaxLength",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:64}\r
87128 );\r
87129 this.registerSetting("PWD_MIN_LENGTH",{\r
87130 name:"zimbraPasswordMinLength",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:6}\r
87131 );\r
87132 this.registerSetting("QUOTA",{\r
87133 name:"zimbraMailQuota",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:0}\r
87134 );\r
87135 this.registerSetting("SAVED_SEARCHES_ENABLED",{\r
87136 name:"zimbraFeatureSavedSearchesEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87137 );\r
87138 this.registerSetting("SEARCH_TREE_OPEN",{\r
87139 name:"zimbraPrefSearchTreeOpen",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true,isImplicit:true}\r
87140 );\r
87141 this.registerSetting("SHARING_ENABLED",{\r
87142 name:"zimbraFeatureSharingEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87143 );\r
87144 this.registerSetting("SHORTCUT_ALIASES_ENABLED",{\r
87145 name:"zimbraFeatureShortcutAliasesEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87146 );\r
87147 this.registerSetting("SHOW_OFFLINE_LINK",{\r
87148 name:"zimbraWebClientShowOfflineLink",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87149 );\r
87150 this.registerSetting("SIGNATURES_ENABLED",{\r
87151 name:"zimbraFeatureSignaturesEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87152 );\r
87153 this.registerSetting("SKIN_CHANGE_ENABLED",{\r
87154 name:"zimbraFeatureSkinChangeEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87155 );\r
87156 this.registerSetting("TAG_TREE_OPEN",{\r
87157 name:"zimbraPrefTagTreeOpen",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true,isImplicit:true}\r
87158 );\r
87159 this.registerSetting("TAGGING_ENABLED",{\r
87160 name:"zimbraFeatureTaggingEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87161 );\r
87162 this.registerSetting("VIEW_ATTACHMENT_AS_HTML",{\r
87163 name:"zimbraFeatureViewInHtmlEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87164 );\r
87165 this.registerSetting("LICENSE_STATUS",{\r
87166 type:ZmSetting.T_COS,defaultValue:ZmSetting.LICENSE_GOOD}\r
87167 );\r
87168 this.registerSetting("QUOTA_USED",{\r
87169 type:ZmSetting.T_COS,dataType:ZmSetting.D_INT}\r
87170 );\r
87171 this.registerSetting("TOKEN_LIFETIME",{\r
87172 type:ZmSetting.T_COS,dataType:ZmSetting.D_INT}\r
87173 );\r
87174 this.registerSetting("USERID",{\r
87175 name:"zimbraId",type:ZmSetting.T_COS}\r
87176 );\r
87177 this.registerSetting("USERNAME",{\r
87178 type:ZmSetting.T_COS}\r
87179 );\r
87180 this.registerSetting("CN",{\r
87181 name:"cn",type:ZmSetting.T_COS}\r
87182 );\r
87183 this.registerSetting("LAST_ACCESS",{\r
87184 type:ZmSetting.T_COS,dataType:ZmSetting.D_INT}\r
87185 );\r
87186 this.registerSetting("PREVIOUS_SESSION",{\r
87187 type:ZmSetting.T_COS,dataType:ZmSetting.D_INT}\r
87188 );\r
87189 this.registerSetting("RECENT_MESSAGES",{\r
87190 type:ZmSetting.T_COS,dataType:ZmSetting.D_INT}\r
87191 );\r
87192 this.registerSetting("REST_URL",{\r
87193 name:"rest",type:ZmSetting.T_COS}\r
87194 );\r
87195 this.registerSetting("IS_ADMIN",{\r
87196 name:"zimbraIsAdminAccount",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87197 );\r
87198 this.registerSetting("IS_DELEGATED_ADMIN",{\r
87199 name:"zimbraIsDelegatedAdminAccount",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87200 );\r
87201 this.registerSetting("ADMIN_REFERENCE",{\r
87202 name:"zimbraWebClientAdminReference",type:ZmSetting.T_COS,dataType:ZmSetting.D_STRING}\r
87203 );\r
87204 this.registerSetting("ATTACHMENT_ENABLED",{\r
87205 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87206 );\r
87207 this.registerSetting("ATT_VIEW_ENABLED",{\r
87208 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87209 );\r
87210 this.registerSetting("EVAL_ENABLED",{\r
87211 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87212 );\r
87213 this.registerSetting("FEED_ENABLED",{\r
87214 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87215 );\r
87216 this.registerSetting("HELP_ENABLED",{\r
87217 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87218 );\r
87219 this.registerSetting("HISTORY_SUPPORT_ENABLED",{\r
87220 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87221 );\r
87222 this.registerSetting("MIXED_VIEW_ENABLED",{\r
87223 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87224 );\r
87225 this.registerSetting("NOTES_ENABLED",{\r
87226 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87227 );\r
87228 this.registerSetting("PRINT_ENABLED",{\r
87229 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87230 );\r
87231 this.registerSetting("SEARCH_ENABLED",{\r
87232 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87233 );\r
87234 this.registerSetting("SHORTCUT_LIST_ENABLED",{\r
87235 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87236 );\r
87237 this.registerSetting("OFFLINE_ENABLED",{\r
87238 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:appCtxt.isOffline}\r
87239 );\r
87240 this.registerSetting("SPELL_CHECK_ENABLED",{\r
87241 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:!AjxEnv.isSafari||AjxEnv.isSafari3up||AjxEnv.isChrome}\r
87242 );\r
87243 this.registerSetting("ACCOUNTS",{\r
87244 type:ZmSetting.T_PREF,dataType:ZmSetting.D_HASH}\r
87245 );\r
87246 this.registerSetting("ACCOUNT_TREE_OPEN",{\r
87247 name:"zimbraPrefAccountTreeOpen",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isImplicit:true}\r
87248 );\r
87249 this.registerSetting("CHILD_ACCTS_VISIBLE",{\r
87250 name:"zimbraPrefChildVisibleAccount",type:ZmSetting.T_PREF,dataType:ZmSetting.D_LIST}\r
87251 );\r
87252 this.registerSetting("CLIENT_TYPE",{\r
87253 name:"zimbraPrefClientType",type:ZmSetting.T_PREF,defaultValue:ZmSetting.CLIENT_ADVANCED}\r
87254 );\r
87255 this.registerSetting("COMPOSE_AS_FORMAT",{\r
87256 name:"zimbraPrefComposeFormat",type:ZmSetting.T_PREF,defaultValue:ZmSetting.COMPOSE_TEXT}\r
87257 );\r
87258 this.registerSetting("COMPOSE_INIT_FONT_COLOR",{\r
87259 name:"zimbraPrefHtmlEditorDefaultFontColor",type:ZmSetting.T_PREF,defaultValue:ZmSetting.COMPOSE_FONT_COLOR}\r
87260 );\r
87261 this.registerSetting("COMPOSE_INIT_FONT_FAMILY",{\r
87262 name:"zimbraPrefHtmlEditorDefaultFontFamily",type:ZmSetting.T_PREF,defaultValue:ZmSetting.COMPOSE_FONT_FAM}\r
87263 );\r
87264 this.registerSetting("COMPOSE_INIT_FONT_SIZE",{\r
87265 name:"zimbraPrefHtmlEditorDefaultFontSize",type:ZmSetting.T_PREF,defaultValue:ZmSetting.COMPOSE_FONT_SIZE}\r
87266 );\r
87267 this.registerSetting("DEFAULT_TIMEZONE",{\r
87268 name:"zimbraPrefTimeZoneId",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:AjxTimezone.getServerId(AjxTimezone.DEFAULT),isGlobal:true}\r
87269 );\r
87270 this.registerSetting("FILTERS",{\r
87271 type:ZmSetting.T_PREF,dataType:ZmSetting.D_HASH}\r
87272 );\r
87273 this.registerSetting("IDENTITIES",{\r
87274 type:ZmSetting.T_PREF,dataType:ZmSetting.D_HASH}\r
87275 );\r
87276 this.registerSetting("INITIALLY_SEARCH_GAL",{\r
87277 name:"zimbraPrefGalSearchEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87278 );\r
87279 this.registerSetting("LIST_VIEW_COLUMNS",{\r
87280 name:"zimbraPrefListViewColumns",type:ZmSetting.T_PREF,dataType:ZmSetting.D_HASH,isImplicit:true}\r
87281 );\r
87282 this.registerSetting("LOCALE_NAME",{\r
87283 name:"zimbraPrefLocale",type:ZmSetting.T_PREF,defaultValue:"en_US",isGlobal:true}\r
87284 );\r
87285 this.registerSetting("SHOW_SELECTION_CHECKBOX",{\r
87286 name:"zimbraPrefShowSelectionCheckbox",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true,isGlobal:true}\r
87287 );\r
87288 this.registerSetting("PAGE_SIZE",{\r
87289 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_INT,defaultValue:25}\r
87290 );\r
87291 this.registerSetting("PASSWORD",{\r
87292 type:ZmSetting.T_PREF,dataType:ZmSetting.D_NONE}\r
87293 );\r
87294 this.registerSetting("POLLING_INTERVAL",{\r
87295 name:"zimbraPrefMailPollingInterval",type:ZmSetting.T_PREF,dataType:ZmSetting.D_LDAP_TIME,defaultValue:300}\r
87296 );\r
87297 this.registerSetting("POLLING_INTERVAL_ENABLED",{\r
87298 name:"zimbraFeatureMailPollingIntervalPreferenceEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87299 );\r
87300 this.registerSetting("SEARCH_INCLUDES_SPAM",{\r
87301 name:"zimbraPrefIncludeSpamInSearch",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
87302 );\r
87303 this.registerSetting("SEARCH_INCLUDES_TRASH",{\r
87304 name:"zimbraPrefIncludeTrashInSearch",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
87305 );\r
87306 this.registerSetting("SHORTCUTS",{\r
87307 name:"zimbraPrefShortcuts",type:ZmSetting.T_PREF}\r
87308 );\r
87309 this.registerSetting("SHOW_SEARCH_STRING",{\r
87310 name:"zimbraPrefShowSearchString",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
87311 );\r
87312 this.registerSetting("SIGNATURES",{\r
87313 type:ZmSetting.T_PREF,dataType:ZmSetting.D_HASH}\r
87314 );\r
87315 this.registerSetting("SIGNATURES_MAX",{\r
87316 name:"zimbraSignatureMaxNumEntries",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:20}\r
87317 );\r
87318 this.registerSetting("SIGNATURES_MIN",{\r
87319 name:"zimbraSignatureMinNumEntries",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:1}\r
87320 );\r
87321 this.registerSetting("SKIN_NAME",{\r
87322 name:"zimbraPrefSkin",type:ZmSetting.T_PREF,defaultValue:"skin",isGlobal:true}\r
87323 );\r
87324 this.registerSetting("SORTING_PREF",{\r
87325 type:ZmSetting.T_PREF,dataType:ZmSetting.D_HASH}\r
87326 );\r
87327 this.registerSetting("USE_KEYBOARD_SHORTCUTS",{\r
87328 name:"zimbraPrefUseKeyboardShortcuts",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87329 );\r
87330 this.registerSetting("VIEW_AS_HTML",{\r
87331 name:"zimbraPrefMessageViewHtmlPreferred",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
87332 );\r
87333 this.registerSetting("VOICE_ACCOUNTS",{\r
87334 type:ZmSetting.T_PREF,dataType:ZmSetting.D_HASH}\r
87335 );\r
87336 this.registerSetting("WARN_ON_EXIT",{\r
87337 name:"zimbraPrefWarnOnExit",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87338 );\r
87339 this._registerOfflineSettings();\r
87340 this._registerZimletsSettings();\r
87341 this.registerSetting("ZIMLET_TREE_OPEN",{\r
87342 name:"zimbraPrefZimletTreeOpen",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isImplicit:true}\r
87343 )\r
87344 };\r
87345 ZmSettings.prototype._registerZimletsSettings=function(){\r
87346 this.registerSetting("CHECKED_ZIMLETS",{\r
87347 name:"zimbraPrefZimlets",type:ZmSetting.T_PREF,dataType:ZmSetting.D_LIST,isGlobal:true}\r
87348 )\r
87349 };\r
87350 ZmSettings.prototype._registerOfflineSettings=function(){\r
87351 if(!appCtxt.isOffline){\r
87352 return\r
87353 }\r
87354 this.registerSetting("OFFLINE_ACCOUNT_FLAVOR",{\r
87355 name:"offlineAccountFlavor",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING}\r
87356 );\r
87357 this.registerSetting("OFFLINE_COMPOSE_ENABLED",{\r
87358 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
87359 );\r
87360 this.registerSetting("OFFLINE_DEBUG_TRACE",{\r
87361 type:ZmSetting.T_CONFIG,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
87362 );\r
87363 this.registerSetting("OFFLINE_IS_MAILTO_HANDLER",{\r
87364 name:"zimbraPrefMailtoHandlerEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
87365 );\r
87366 this.registerSetting("OFFLINE_REMOTE_SERVER_URI",{\r
87367 name:"offlineRemoteServerUri",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING}\r
87368 );\r
87369 this.registerSetting("OFFLINE_REPORT_EMAIL",{\r
87370 type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:"zdesktop-report@zimbra.com",isGlobal:true}\r
87371 );\r
87372 this.registerSetting("OFFLINE_SHOW_GLOBAL_INBOX",{\r
87373 name:"offlineShowGlobalInbox",type:ZmSetting.T_METADATA,dataType:ZmSetting.D_BOOLEAN,defaultValue:true,section:ZmSetting.M_OFFLINE,isGlobal:true}\r
87374 );\r
87375 this.registerSetting("OFFLINE_SMTP_ENABLED",{\r
87376 name:"zimbraDataSourceSmtpEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
87377 );\r
87378 this.registerSetting("OFFLINE_SUPPORTS_MAILTO",{\r
87379 type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
87380 );\r
87381 this.registerSetting("OFFLINE_SUPPORTS_DOCK_UPDATE",{\r
87382 type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
87383 );\r
87384 this.registerSetting("OFFLINE_WEBAPP_URI",{\r
87385 name:"offlineWebappUri",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING}\r
87386 );\r
87387 this.registerSetting("HELP_URI",{\r
87388 type:ZmSetting.T_CONFIG,defaultValue:"http://www.zimbra.com/desktop/"}\r
87389 )\r
87390 };\r
87391 ZmSettings.prototype._changeListener=function(e){\r
87392 if(e.type!=ZmEvent.S_SETTING){\r
87393 return\r
87394 }\r
87395 var o=e.source.id;\r
87396 if(o==ZmSetting.QUOTA_USED){\r
87397 appCtxt.getAppController().setUserInfo()\r
87398 }else{\r
87399 if(o==ZmSetting.POLLING_INTERVAL){\r
87400 appCtxt.getAppController().setPollInterval()\r
87401 }else{\r
87402 if(o==ZmSetting.SKIN_NAME){\r
87403 var a=appCtxt.getYesNoMsgDialog();\r
87404 a.reset();\r
87405 var t=e.source.getValue();\r
87406 a.registerCallback(DwtDialog.YES_BUTTON,this._newSkinYesCallback,this,[t,a]);\r
87407 a.setMessage(ZmMsg.skinChangeRestart,DwtMessageDialog.WARNING_STYLE);\r
87408 a.popup()\r
87409 }else{\r
87410 if(o==ZmSetting.LOCALE_NAME){\r
87411 var a=appCtxt.getYesNoMsgDialog();\r
87412 a.reset();\r
87413 var t=e.source.getValue();\r
87414 a.registerCallback(DwtDialog.YES_BUTTON,this._refreshBrowserCallback,this,[a]);\r
87415 a.setMessage(ZmMsg.localeChangeRestart,DwtMessageDialog.WARNING_STYLE);\r
87416 a.popup()\r
87417 }else{\r
87418 if(o==ZmSetting.CHILD_ACCTS_VISIBLE){\r
87419 var a=appCtxt.getYesNoMsgDialog();\r
87420 a.reset();\r
87421 a.registerCallback(DwtDialog.YES_BUTTON,this._refreshBrowserCallback,this,[a]);\r
87422 a.setMessage(ZmMsg.accountChangeRestart,DwtMessageDialog.WARNING_STYLE);\r
87423 a.popup()\r
87424 }}}}}};\r
87425 ZmSettings.prototype._newSkinYesCallback=function(a,t){\r
87426 t.popdown();\r
87427 window.onbeforeunload=null;\r
87428 var e=AjxUtil.formatUrl({\r
87429 qsArgs:{\r
87430 skin:a}}\r
87431 );\r
87432 ZmZimbraMail.sendRedirect(e)\r
87433 };\r
87434 ZmSettings.prototype._refreshBrowserCallback=function(t){\r
87435 t.popdown();\r
87436 window.onbeforeunload=null;\r
87437 var e=AjxUtil.formatUrl({}\r
87438 );\r
87439 window.location.replace(e)\r
87440 }\r
87441 }\r
87442 if(AjxPackage.define("zimbraMail.share.model.ZmMetaData")){\r
87443 ZmMetaData=function(){};\r
87444 ZmMetaData.prototype.constructor=ZmMetaData;\r
87445 ZmMetaData.NAMESPACE="zwc";\r
87446 ZmMetaData.prototype.toString=function(){\r
87447 return"ZmMetaData"\r
87448 };\r
87449 ZmMetaData.prototype.set=function(r,l,h,e,c,o){\r
87450 var s=AjxSoapDoc.create("SetMailboxMetadataRequest","urn:zimbraMail");\r
87451 var d=s.set("meta");\r
87452 d.setAttribute("section",[ZmMetaData.NAMESPACE,r].join(":"));\r
87453 var n=s.set("a",h,d);\r
87454 n.setAttribute("n",l);\r
87455 if(e){\r
87456 e.addNewRequestParams(s,c,o)\r
87457 }else{\r
87458 var t={\r
87459 soapDoc:s,asyncMode:true,callback:c,errorCallback:o,accountName:(appCtxt.multiAccounts?appCtxt.accountList.mainAccount:null)};\r
87460 appCtxt.getAppController().sendRequest(t)\r
87461 }};\r
87462 ZmMetaData.prototype.get=function(l,e,c,o){\r
87463 if(!(l instanceof Array)){\r
87464 l=[l]\r
87465 }\r
87466 var s=appCtxt.multiAccounts?appCtxt.accountList.mainAccount:null;\r
87467 var t=e||(new ZmBatchCommand(null,s));\r
87468 for(var a=0;\r
87469 a<l.length;\r
87470 a++){\r
87471 var r=l[a];\r
87472 var n=AjxSoapDoc.create("GetMailboxMetadataRequest","urn:zimbraMail");\r
87473 var h=n.set("meta");\r
87474 h.setAttribute("section",[ZmMetaData.NAMESPACE,r].join(":"));\r
87475 t.addNewRequestParams(n)\r
87476 }\r
87477 if(!e){\r
87478 t.run(c,o)\r
87479 }}\r
87480 }\r
87481 if(AjxPackage.define("zimbraMail.share.model.ZmKeyMap")){\r
87482 ZmKeyMap=function(){\r
87483 ZmKeyMap._setPreconditions();\r
87484 DwtKeyMap.call(this);\r
87485 this._load(this._map,ZmKeys,ZmKeyMap.MAP_NAME);\r
87486 if(appCtxt.get(ZmSetting.DEV)){\r
87487 this._map.Global["Alt+Shift+D,0"]=ZmKeyMap.DBG_NONE;\r
87488 this._map.Global["Alt+Shift+D,1"]=ZmKeyMap.DBG_1;\r
87489 this._map.Global["Alt+Shift+D,2"]=ZmKeyMap.DBG_2;\r
87490 this._map.Global["Alt+Shift+D,3"]=ZmKeyMap.DBG_3;\r
87491 this._map.Global["Alt+Shift+D,T"]=ZmKeyMap.DBG_TIMING\r
87492 }};\r
87493 ZmKeyMap.prototype=new DwtKeyMap(true);\r
87494 ZmKeyMap.prototype.constructor=ZmKeyMap;\r
87495 ZmKeyMap.MAP_NAME={};\r
87496 ZmKeyMap.MAP_NAME.briefcase="ZmBriefcaseController";\r
87497 ZmKeyMap.MAP_NAME.calendar="ZmCalViewController";\r
87498 ZmKeyMap.MAP_NAME.call="ZmCallListController";\r
87499 ZmKeyMap.MAP_NAME.compose="ZmComposeController";\r
87500 ZmKeyMap.MAP_NAME.contacts="ZmContactListController";\r
87501 ZmKeyMap.MAP_NAME.conversation="ZmConvController";\r
87502 ZmKeyMap.MAP_NAME.conversationList="ZmConvListController";\r
87503 ZmKeyMap.MAP_NAME.editAppointment="ZmApptComposeController";\r
87504 ZmKeyMap.MAP_NAME.editContact="ZmContactController";\r
87505 ZmKeyMap.MAP_NAME.editPage="ZmPageEditController";\r
87506 ZmKeyMap.MAP_NAME.editTask="ZmTaskController";\r
87507 ZmKeyMap.MAP_NAME.global="Global";\r
87508 ZmKeyMap.MAP_NAME.mail="ZmMailListController";\r
87509 ZmKeyMap.MAP_NAME.message="ZmMsgController";\r
87510 ZmKeyMap.MAP_NAME.mixed="ZmMixedController";\r
87511 ZmKeyMap.MAP_NAME.notebook="ZmNotebookPageController";\r
87512 ZmKeyMap.MAP_NAME.options="ZmPrefController";\r
87513 ZmKeyMap.MAP_NAME.tasks="ZmTaskListController";\r
87514 ZmKeyMap.MAP_NAME.voicemail="ZmVoicemailListController";\r
87515 ZmKeyMap.MAP_NAME_R={};\r
87516 (function(){\r
87517 for(var e in ZmKeyMap.MAP_NAME){\r
87518 ZmKeyMap.MAP_NAME_R[ZmKeyMap.MAP_NAME[e]]=e\r
87519 }}\r
87520 )();\r
87521 ZmKeyMap.ADDRESS_PICKER="AddressPicker";\r
87522 ZmKeyMap.ASSISTANT="Assistant";\r
87523 ZmKeyMap.ATTACHMENT="Attachment";\r
87524 ZmKeyMap.CAL_DAY_VIEW="DayView";\r
87525 ZmKeyMap.CAL_LIST_VIEW="CalListView";\r
87526 ZmKeyMap.CAL_MONTH_VIEW="MonthView";\r
87527 ZmKeyMap.CAL_SCHEDULE_VIEW="ScheduleView";\r
87528 ZmKeyMap.CAL_WEEK_VIEW="WeekView";\r
87529 ZmKeyMap.CAL_WORK_WEEK_VIEW="WorkWeekView";\r
87530 ZmKeyMap.CALL_MANAGER="CallManager";\r
87531 ZmKeyMap.CANCEL="Cancel";\r
87532 ZmKeyMap.COLLAPSE_ALL="CollapseAll";\r
87533 ZmKeyMap.DBG_NONE="DebugNone";\r
87534 ZmKeyMap.DBG_1="DebugLevel1";\r
87535 ZmKeyMap.DBG_2="DebugLevel2";\r
87536 ZmKeyMap.DBG_3="DebugLevel3";\r
87537 ZmKeyMap.DBG_TIMING="ToggleDebugTiming";\r
87538 ZmKeyMap.DEL="Delete";\r
87539 ZmKeyMap.DOWNLOAD="Download";\r
87540 ZmKeyMap.EDIT="Edit";\r
87541 ZmKeyMap.EXPAND="Expand";\r
87542 ZmKeyMap.EXPAND_ALL="ExpandAll";\r
87543 ZmKeyMap.FIRST_UNREAD="FirstUnread";\r
87544 ZmKeyMap.FIRST_UNREAD_MSG="FirstUnreadMsg";\r
87545 ZmKeyMap.FLAG="Flag";\r
87546 ZmKeyMap.FOCUS_CONTENT_PANE="FocusContentPane";\r
87547 ZmKeyMap.FOCUS_SEARCH_BOX="FocusSearchBox";\r
87548 ZmKeyMap.FOCUS_TOOLBAR="FocusToolbar";\r
87549 ZmKeyMap.FORWARD="Forward";\r
87550 ZmKeyMap.GET_MAIL="GetMail";\r
87551 ZmKeyMap.GOTO_BRIEFCASE="GoToBriefcase";\r
87552 ZmKeyMap.GOTO_CALENDAR="GoToCalendar";\r
87553 ZmKeyMap.GOTO_CONTACTS="GoToContacts";\r
87554 ZmKeyMap.GOTO_DRAFTS="GoToDrafts";\r
87555 ZmKeyMap.GOTO_JUNK="GoToJunk";\r
87556 ZmKeyMap.GOTO_INBOX="GoToInbox";\r
87557 ZmKeyMap.GOTO_MAIL="GoToMail";\r
87558 ZmKeyMap.GOTO_NOTEBOOK="GoToNotebook";\r
87559 ZmKeyMap.GOTO_OPTIONS="GoToOptions";\r
87560 ZmKeyMap.GOTO_SENT="GoToSent";\r
87561 ZmKeyMap.GOTO_TASKS="GoToTasks";\r
87562 ZmKeyMap.GOTO_TRASH="GoToTrash";\r
87563 ZmKeyMap.GOTO_VOICE="GoToVoice";\r
87564 ZmKeyMap.HTML_FORMAT="HtmlFormat";\r
87565 ZmKeyMap.LAST_UNREAD="LastUnread";\r
87566 ZmKeyMap.LAST_UNREAD_MSG="LastUnreadMsg";\r
87567 ZmKeyMap.LOGOFF="LogOff";\r
87568 ZmKeyMap.MARK_COMPLETE="MarkComplete";\r
87569 ZmKeyMap.MARK_HEARD="MarkHeard";\r
87570 ZmKeyMap.MARK_READ="MarkRead";\r
87571 ZmKeyMap.MARK_UNCOMPLETE="MarkUncomplete";\r
87572 ZmKeyMap.MARK_UNHEARD="MarkUnheard";\r
87573 ZmKeyMap.MARK_UNREAD="MarkUnread";\r
87574 ZmKeyMap.MOVE="Move";\r
87575 ZmKeyMap.MOVE_TO_INBOX="MoveToInbox";\r
87576 ZmKeyMap.MOVE_TO_JUNK="MoveToJunk";\r
87577 ZmKeyMap.MOVE_TO_TRASH="MoveToTrash";\r
87578 ZmKeyMap.NEW="New";\r
87579 ZmKeyMap.NEW_APPT="NewAppointment";\r
87580 ZmKeyMap.NEW_BRIEFCASEITEM="NewBriefcase";\r
87581 ZmKeyMap.NEW_CALENDAR="NewCalendar";\r
87582 ZmKeyMap.NEW_CHAT="NewChat";\r
87583 ZmKeyMap.NEW_CONTACT="NewContact";\r
87584 ZmKeyMap.NEW_DOC="NewDocument";\r
87585 ZmKeyMap.NEW_FILE="NewFile";\r
87586 ZmKeyMap.NEW_FOLDER="NewFolder";\r
87587 ZmKeyMap.NEW_MESSAGE="NewMessage";\r
87588 ZmKeyMap.NEW_MESSAGE_WIN="NewMessageWindow";\r
87589 ZmKeyMap.NEW_NOTEBOOK="NewNotebook";\r
87590 ZmKeyMap.NEW_PAGE="NewPage";\r
87591 ZmKeyMap.NEW_PRESENTATION="NewPresentation";\r
87592 ZmKeyMap.NEW_ROSTER_ITEM="NewRosterItem";\r
87593 ZmKeyMap.NEW_SPREADSHEET="NewSpreadsheet";\r
87594 ZmKeyMap.NEW_TAG="NewTag";\r
87595 ZmKeyMap.NEW_TASK="NewTask";\r
87596 ZmKeyMap.NEW_WINDOW="NewWindow";\r
87597 ZmKeyMap.NEXT_CONV="NextConversation";\r
87598 ZmKeyMap.NEXT_PAGE="NextPage";\r
87599 ZmKeyMap.NEXT_UNREAD="NextUnread";\r
87600 ZmKeyMap.NEXT_UNREAD_MSG="NextUnreadMsg";\r
87601 ZmKeyMap.PLAY="Play";\r
87602 ZmKeyMap.PRESENCE_MENU="PresenceMenu";\r
87603 ZmKeyMap.PREV_CONV="PreviousConversation";\r
87604 ZmKeyMap.PREV_PAGE="PreviousPage";\r
87605 ZmKeyMap.PREV_UNREAD="PreviousUnread";\r
87606 ZmKeyMap.PREV_UNREAD_MSG="PreviousUnreadMsg";\r
87607 ZmKeyMap.PRINT="Print";\r
87608 ZmKeyMap.PRINT_ALL="PrintAll";\r
87609 ZmKeyMap.QUICK_ADD="QuickAdd";\r
87610 ZmKeyMap.READING_PANE_BOTTOM="ReadingPaneAtBottom";\r
87611 ZmKeyMap.READING_PANE_OFF="ReadingPaneOff";\r
87612 ZmKeyMap.READING_PANE_RIGHT="ReadingPaneOnRight";\r
87613 ZmKeyMap.REFRESH="Refresh";\r
87614 ZmKeyMap.REPLY="Reply";\r
87615 ZmKeyMap.REPLY_ALL="ReplyAll";\r
87616 ZmKeyMap.SAVE="Save";\r
87617 ZmKeyMap.SAVED_SEARCH="SavedSearch";\r
87618 ZmKeyMap.SELECT_ALL="SelectAll";\r
87619 ZmKeyMap.SEND="Send";\r
87620 ZmKeyMap.SHORTCUTS="Shortcuts";\r
87621 ZmKeyMap.SHOW_FRAGMENT="ShowFragment";\r
87622 ZmKeyMap.SPAM="Spam";\r
87623 ZmKeyMap.SPELLCHECK="Spellcheck";\r
87624 ZmKeyMap.TAG="Tag";\r
87625 ZmKeyMap.TODAY="Today";\r
87626 ZmKeyMap.UNTAG="Untag";\r
87627 ZmKeyMap.VIEW_BY_CONV="ViewByConversation";\r
87628 ZmKeyMap.VIEW_BY_MSG="ViewByMessage";\r
87629 ZmKeyMap.VISIT="Visit";\r
87630 ZmKeyMap.VISIT_TAG="VisitTag";\r
87631 ZmKeyMap.ENTITY={};\r
87632 ZmKeyMap.ENTITY[DwtKeyMap.ARROW_LEFT]="&larr;";\r
87633 ZmKeyMap.ENTITY[DwtKeyMap.ARROW_RIGHT]="&rarr;";\r
87634 ZmKeyMap.ENTITY[DwtKeyMap.ARROW_UP]="&uarr;";\r
87635 ZmKeyMap.ENTITY[DwtKeyMap.ARROW_DOWN]="&darr;";\r
87636 ZmKeyMap.ENTITY['"']="&quot;";\r
87637 ZmKeyMap.ENTITY["&"]="&amp;";\r
87638 ZmKeyMap.ENTITY["<"]="&lt;";\r
87639 ZmKeyMap.ENTITY[">"]="&gt;";\r
87640 ZmKeyMap.ENTITY[DwtKeyMap.COMMA]=",";\r
87641 ZmKeyMap.ENTITY[DwtKeyMap.SEMICOLON]=";";\r
87642 ZmKeyMap.ENTITY[DwtKeyMap.BACKSLASH]="\\";\r
87643 ZmKeyMap.MAP_PRECONDITION={};\r
87644 ZmKeyMap.ACTION_PRECONDITION={};\r
87645 ZmKeyMap._setPreconditions=function(){\r
87646 ZmKeyMap.MAP_PRECONDITION.ZmComposeController=ZmSetting.MAIL_ENABLED;\r
87647 ZmKeyMap.MAP_PRECONDITION.ZmMailListController=ZmSetting.MAIL_ENABLED;\r
87648 ZmKeyMap.MAP_PRECONDITION.ZmConvListController=ZmSetting.MAIL_ENABLED;\r
87649 ZmKeyMap.MAP_PRECONDITION.ZmConvController=ZmSetting.MAIL_ENABLED;\r
87650 ZmKeyMap.MAP_PRECONDITION.ZmMsgController=ZmSetting.MAIL_ENABLED;\r
87651 ZmKeyMap.MAP_PRECONDITION.ZmContactListController=ZmSetting.CONTACTS_ENABLED;\r
87652 ZmKeyMap.MAP_PRECONDITION.ZmContactController=ZmSetting.CONTACTS_ENABLED;\r
87653 ZmKeyMap.MAP_PRECONDITION.ZmCalViewController=ZmSetting.CALENDAR_ENABLED;\r
87654 ZmKeyMap.MAP_PRECONDITION.ZmApptComposeController=ZmSetting.CALENDAR_ENABLED;\r
87655 ZmKeyMap.MAP_PRECONDITION.ZmMixedController=ZmSetting.MIXED_VIEW_ENABLED;\r
87656 ZmKeyMap.MAP_PRECONDITION.ZmPrefController=ZmSetting.OPTIONS_ENABLED;\r
87657 ZmKeyMap.MAP_PRECONDITION.ZmNotebookPageController=ZmSetting.NOTEBOOK_ENABLED;\r
87658 ZmKeyMap.MAP_PRECONDITION.ZmBriefcaseController=ZmSetting.BRIEFCASE_ENABLED;\r
87659 ZmKeyMap.MAP_PRECONDITION.ZmTaskListController=ZmSetting.TASKS_ENABLED;\r
87660 ZmKeyMap.MAP_PRECONDITION.ZmTaskController=ZmSetting.TASKS_ENABLED;\r
87661 ZmKeyMap.MAP_PRECONDITION.ZmVoicemailListController=ZmSetting.VOICE_ENABLED;\r
87662 ZmKeyMap.MAP_PRECONDITION.ZmCallListController=ZmSetting.VOICE_ENABLED;\r
87663 ZmKeyMap.ACTION_PRECONDITION.Global={};\r
87664 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.FOCUS_SEARCH_BOX]=ZmSetting.SEARCH_ENABLED;\r
87665 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.GOTO_BRIEFCASE]=ZmSetting.BRIEFCASE_ENABLED;\r
87666 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.GOTO_CALENDAR]=ZmSetting.CALENDAR_ENABLED;\r
87667 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.GOTO_CONTACTS]=ZmSetting.CONTACTS_ENABLED;\r
87668 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.GOTO_MAIL]=ZmSetting.MAIL_ENABLED;\r
87669 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.GOTO_NOTEBOOK]=ZmSetting.NOTEBOOK_ENABLED;\r
87670 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.GOTO_OPTIONS]=ZmSetting.OPTIONS_ENABLED;\r
87671 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.GOTO_TASKS]=ZmSetting.TASKS_ENABLED;\r
87672 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.GOTO_VOICE]=ZmSetting.VOICE_ENABLED;\r
87673 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_APPT]=ZmSetting.CALENDAR_ENABLED;\r
87674 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_BRIEFCASEITEM]=ZmSetting.BRIEFCASE_ENABLED;\r
87675 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_CALENDAR]=ZmSetting.CALENDAR_ENABLED;\r
87676 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_CHAT]=ZmSetting.IM_ENABLED;\r
87677 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_CONTACT]=ZmSetting.CONTACTS_ENABLED;\r
87678 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_FILE]=ZmSetting.BRIEFCASE_ENABLED;\r
87679 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_DOC]=ZmSetting.DOCS_ENABLED;\r
87680 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_FOLDER]=ZmSetting.MAIL_ENABLED;\r
87681 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_MESSAGE]=ZmSetting.MAIL_ENABLED;\r
87682 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_MESSAGE_WIN]=ZmSetting.MAIL_ENABLED;\r
87683 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_NOTEBOOK]=ZmSetting.NOTEBOOK_ENABLED;\r
87684 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_PAGE]=ZmSetting.NOTEBOOK_ENABLED;\r
87685 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_ROSTER_ITEM]=ZmSetting.IM_ENABLED;\r
87686 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_TAG]=ZmSetting.TAGGING_ENABLED;\r
87687 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.NEW_TASK]=ZmSetting.TASKS_ENABLED;\r
87688 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.PRESENCE_MENU]=ZmSetting.IM_ENABLED;\r
87689 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.SAVED_SEARCH]=ZmSetting.SAVED_SEARCHES_ENABLED;\r
87690 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.TAG]=ZmSetting.TAGGING_ENABLED;\r
87691 ZmKeyMap.ACTION_PRECONDITION.Global[ZmKeyMap.UNTAG]=ZmSetting.TAGGING_ENABLED;\r
87692 ZmKeyMap.ACTION_PRECONDITION.ZmComposeController={};\r
87693 ZmKeyMap.ACTION_PRECONDITION.ZmComposeController[ZmKeyMap.ADDRESS_PICKER]=ZmSetting.CONTACTS_ENABLED;\r
87694 ZmKeyMap.ACTION_PRECONDITION.ZmComposeController[ZmKeyMap.HTML_FORMAT]=ZmSetting.HTML_COMPOSE_ENABLED;\r
87695 ZmKeyMap.ACTION_PRECONDITION.ZmComposeController[ZmKeyMap.NEW_WINDOW]=ZmSetting.NEW_WINDOW_COMPOSE;\r
87696 ZmKeyMap.ACTION_PRECONDITION.ZmComposeController[ZmKeyMap.SAVE]=ZmSetting.SAVE_DRAFT_ENABLED;\r
87697 ZmKeyMap.ACTION_PRECONDITION.ZmApptComposeController={};\r
87698 ZmKeyMap.ACTION_PRECONDITION.ZmApptComposeController[ZmKeyMap.HTML_FORMAT]=ZmSetting.HTML_COMPOSE_ENABLED\r
87699 };\r
87700 ZmKeyMap.prototype._checkMap=function(a){\r
87701 var t;\r
87702 var e=ZmKeyMap.MAP_PRECONDITION[a];\r
87703 if(!e){\r
87704 t=true\r
87705 }else{\r
87706 if(typeof e=="string"||typeof e=="number"){\r
87707 t=appCtxt.get(e)\r
87708 }else{\r
87709 if(typeof e=="function"){\r
87710 t=e()\r
87711 }}}\r
87712 this._checkedMap[a]=t;\r
87713 return t\r
87714 };\r
87715 ZmKeyMap.prototype._checkAction=function(t,a){\r
87716 if((this._checkedMap[t]===false)||(!this._checkedMap[t]&&!this._checkMap(t))){\r
87717 return false\r
87718 }\r
87719 var e=ZmKeyMap.ACTION_PRECONDITION[t];\r
87720 if(!e){\r
87721 return true\r
87722 }\r
87723 var o=e[a];\r
87724 if(!o){\r
87725 return true\r
87726 }\r
87727 if(typeof o=="string"||typeof o=="number"){\r
87728 return appCtxt.get(o)\r
87729 }else{\r
87730 if(typeof o=="function"){\r
87731 return o()\r
87732 }}\r
87733 return true\r
87734 }\r
87735 }\r
87736 if(AjxPackage.define("zimbraMail.share.model.ZmTimezone")){\r
87737 ZmTimezone=function(){};\r
87738 ZmTimezone.getDefault=function(){\r
87739 var t=DwtShell.getShell(window);\r
87740 var e=appCtxt.get(ZmSetting.DEFAULT_TIMEZONE);\r
87741 return(e)?AjxTimezone.getClientId(e):AjxTimezone.DEFAULT\r
87742 };\r
87743 ZmTimezone.getDefaultRule=function(){\r
87744 return AjxTimezone.getRule(ZmTimezone.getDefault())\r
87745 };\r
87746 ZmTimezone.set=function(n,t,e,o){\r
87747 var a=AjxTimezone.getRule(t);\r
87748 if(!a){\r
87749 return\r
87750 }\r
87751 if(a.autoDetected||!o){\r
87752 if(n instanceof AjxSoapDoc){\r
87753 ZmTimezone._setSoap(n,t,e,a)\r
87754 }else{\r
87755 ZmTimezone._setJson(n,t,a)\r
87756 }}};\r
87757 ZmTimezone._setSoap=function(f,r,d,u){\r
87758 var s=f.set("tz",null,d);\r
87759 var t=AjxTimezone.getServerId(r);\r
87760 s.setAttribute("id",t);\r
87761 if(u.autoDetected){\r
87762 s.setAttribute("stdoff",u.standard.offset);\r
87763 if(u.daylight){\r
87764 s.setAttribute("dayoff",u.daylight.offset);\r
87765 var m=["standard","daylight"];\r
87766 var e=["mon","mday","week","wkday","hour","min","sec"];\r
87767 for(var l=0;\r
87768 l<m.length;\r
87769 l++){\r
87770 var o=m[l];\r
87771 var c=u[o];\r
87772 var a=f.set(o,null,s);\r
87773 for(var h=0;\r
87774 h<e.length;\r
87775 h++){\r
87776 var n=e[h];\r
87777 if(n in c){\r
87778 a.setAttribute(n,c[n])\r
87779 }}}}}};\r
87780 ZmTimezone._setJson=function(h,s,d){\r
87781 var t=AjxTimezone.getServerId(s);\r
87782 var n=h.tz={\r
87783 id:t};\r
87784 if(d.autoDetected){\r
87785 n.stdoff=d.standard.offset;\r
87786 if(d.daylight){\r
87787 n.dayoff=d.daylight.offset;\r
87788 var u=["standard","daylight"];\r
87789 var e=["mon","mday","week","wkday","hour","min","sec"];\r
87790 for(var l=0;\r
87791 l<u.length;\r
87792 l++){\r
87793 var a=u[l];\r
87794 var c=d[a];\r
87795 n[a]={};\r
87796 for(var r=0;\r
87797 r<e.length;\r
87798 r++){\r
87799 var o=e[r];\r
87800 if(o in c){\r
87801 n[a][o]=c[o]\r
87802 }}}}}}\r
87803 }\r
87804 if(AjxPackage.define("zimbraMail.share.model.ZmItem")){\r
87805 ZmItem=function(a,n,o,e){\r
87806 if(arguments.length==0){\r
87807 return\r
87808 }\r
87809 ZmModel.call(this,a);\r
87810 this.type=a;\r
87811 this.id=n;\r
87812 this.list=o;\r
87813 this.tags=[];\r
87814 this.tagHash={};\r
87815 this.folderId=0;\r
87816 var t=(appCtxt.multiAccounts)?ZmOrganizer.parseId(n):null;\r
87817 this.account=t&&t.account;\r
87818 if(n&&!e){\r
87819 appCtxt.cacheSet(n,this)\r
87820 }};\r
87821 ZmItem.prototype=new ZmModel;\r
87822 ZmItem.prototype.constructor=ZmItem;\r
87823 ZmItem.APP={};\r
87824 ZmItem.MSG_KEY={};\r
87825 ZmItem.PLURAL_MSG_KEY={};\r
87826 ZmItem.ICON={};\r
87827 ZmItem.RESULTS_LIST={};\r
87828 ZmItem.F_ACCOUNT=ZmId.FLD_ACCOUNT;\r
87829 ZmItem.F_ATTACHMENT=ZmId.FLD_ATTACHMENT;\r
87830 ZmItem.F_CAPACITY=ZmId.FLD_CAPACITY;\r
87831 ZmItem.F_COMPANY=ZmId.FLD_COMPANY;\r
87832 ZmItem.F_DATE=ZmId.FLD_DATE;\r
87833 ZmItem.F_EMAIL=ZmId.FLD_EMAIL;\r
87834 ZmItem.F_EXPAND=ZmId.FLD_EXPAND;\r
87835 ZmItem.F_FILE_TYPE=ZmId.FLD_FILE_TYPE;\r
87836 ZmItem.F_FLAG=ZmId.FLD_FLAG;\r
87837 ZmItem.F_FOLDER=ZmId.FLD_FOLDER;\r
87838 ZmItem.F_FRAGMENT=ZmId.FLD_FRAGMENT;\r
87839 ZmItem.F_FROM=ZmId.FLD_FROM;\r
87840 ZmItem.F_HOME_PHONE=ZmId.FLD_HOME_PHONE;\r
87841 ZmItem.F_ID=ZmId.FLD_ID;\r
87842 ZmItem.F_INDEX=ZmId.FLD_INDEX;\r
87843 ZmItem.F_ITEM_ROW=ZmId.FLD_ITEM_ROW;\r
87844 ZmItem.F_ITEM_ROW_3PANE=ZmId.FLD_ITEM_ROW_3PANE;\r
87845 ZmItem.F_LOCATION=ZmId.FLD_LOCATION;\r
87846 ZmItem.F_NAME=ZmId.FLD_NAME;\r
87847 ZmItem.F_NOTES=ZmId.FLD_NOTES;\r
87848 ZmItem.F_PARTICIPANT=ZmId.FLD_PARTICIPANT;\r
87849 ZmItem.F_PCOMPLETE=ZmId.FLD_PCOMPLETE;\r
87850 ZmItem.F_PRIORITY=ZmId.FLD_PRIORITY;\r
87851 ZmItem.F_RECURRENCE=ZmId.FLD_RECURRENCE;\r
87852 ZmItem.F_SELECTION=ZmId.FLD_SELECTION;\r
87853 ZmItem.F_SELECTION_CELL=ZmId.FLD_SELECTION_CELL;\r
87854 ZmItem.F_SIZE=ZmId.FLD_SIZE;\r
87855 ZmItem.F_SORTED_BY=ZmId.FLD_SORTED_BY;\r
87856 ZmItem.F_STATUS=ZmId.FLD_STATUS;\r
87857 ZmItem.F_SUBJECT=ZmId.FLD_SUBJECT;\r
87858 ZmItem.F_TAG=ZmId.FLD_TAG;\r
87859 ZmItem.F_TAG_CELL=ZmId.FLD_TAG_CELL;\r
87860 ZmItem.F_TYPE=ZmId.FLD_TYPE;\r
87861 ZmItem.F_WORK_PHONE=ZmId.FLD_WORK_PHONE;\r
87862 ZmItem.SOAP_CMD={};\r
87863 ZmItem.TAGS_FIELD=1;\r
87864 ZmItem.FLAG_ATTACH="a";\r
87865 ZmItem.FLAG_FLAGGED="f";\r
87866 ZmItem.FLAG_FORWARDED="w";\r
87867 ZmItem.FLAG_ISDRAFT="d";\r
87868 ZmItem.FLAG_ISSENT="s";\r
87869 ZmItem.FLAG_READ_RECEIPT_SENT="n";\r
87870 ZmItem.FLAG_REPLIED="r";\r
87871 ZmItem.FLAG_UNREAD="u";\r
87872 ZmItem.FLAG_LOW_PRIORITY="?";\r
87873 ZmItem.FLAG_HIGH_PRIORITY="!";\r
87874 ZmItem.ALL_FLAGS=[ZmItem.FLAG_FLAGGED,ZmItem.FLAG_ATTACH,ZmItem.FLAG_UNREAD,ZmItem.FLAG_REPLIED,ZmItem.FLAG_FORWARDED,ZmItem.FLAG_ISSENT,ZmItem.FLAG_READ_RECEIPT_SENT,ZmItem.FLAG_ISDRAFT,ZmItem.FLAG_HIGH_PRIORITY,ZmItem.FLAG_LOW_PRIORITY];\r
87875 ZmItem.FLAG_PROP={};\r
87876 ZmItem.FLAG_PROP[ZmItem.FLAG_ATTACH]="hasAttach";\r
87877 ZmItem.FLAG_PROP[ZmItem.FLAG_FLAGGED]="isFlagged";\r
87878 ZmItem.FLAG_PROP[ZmItem.FLAG_FORWARDED]="isForwarded";\r
87879 ZmItem.FLAG_PROP[ZmItem.FLAG_ISDRAFT]="isDraft";\r
87880 ZmItem.FLAG_PROP[ZmItem.FLAG_ISSENT]="isSent";\r
87881 ZmItem.FLAG_PROP[ZmItem.FLAG_READ_RECEIPT_SENT]="readReceiptSent";\r
87882 ZmItem.FLAG_PROP[ZmItem.FLAG_REPLIED]="isReplied";\r
87883 ZmItem.FLAG_PROP[ZmItem.FLAG_UNREAD]="isUnread";\r
87884 ZmItem.FLAG_PROP[ZmItem.FLAG_LOW_PRIORITY]="isLowPriority";\r
87885 ZmItem.FLAG_PROP[ZmItem.FLAG_HIGH_PRIORITY]="isHighPriority";\r
87886 ZmItem.DND_ACTION_MOVE=1<<0;\r
87887 ZmItem.DND_ACTION_COPY=1<<1;\r
87888 ZmItem.DND_ACTION_BOTH=ZmItem.DND_ACTION_MOVE|ZmItem.DND_ACTION_COPY;\r
87889 ZmItem.NOTES_SEPARATOR="*~*~*~*~*~*~*~*~*~*";\r
87890 ZmItem.registerItem=function(e,t){\r
87891 if(t.app){\r
87892 ZmItem.APP[e]=t.app\r
87893 }\r
87894 if(t.nameKey){\r
87895 ZmItem.MSG_KEY[e]=t.nameKey\r
87896 }\r
87897 if(t.pluralNameKey){\r
87898 ZmItem.PLURAL_MSG_KEY[e]=t.pluralNameKey\r
87899 }\r
87900 if(t.icon){\r
87901 ZmItem.ICON[e]=t.icon\r
87902 }\r
87903 if(t.soapCmd){\r
87904 ZmItem.SOAP_CMD[e]=t.soapCmd\r
87905 }\r
87906 if(t.itemClass){\r
87907 ZmList.ITEM_CLASS[e]=t.itemClass\r
87908 }\r
87909 if(t.node){\r
87910 ZmList.NODE[e]=t.node\r
87911 }\r
87912 if(t.organizer){\r
87913 ZmOrganizer.ITEM_ORGANIZER[e]=t.organizer\r
87914 }\r
87915 if(t.searchType){\r
87916 ZmSearch.TYPE[e]=t.searchType\r
87917 }\r
87918 if(t.resultsList){\r
87919 ZmItem.RESULTS_LIST[e]=t.resultsList\r
87920 }\r
87921 if(t.node){\r
87922 ZmList.ITEM_TYPE[t.node]=e\r
87923 }\r
87924 if(t.dropTargets){\r
87925 if(!ZmApp.DROP_TARGETS[t.app]){\r
87926 ZmApp.DROP_TARGETS[t.app]={}\r
87927 }\r
87928 ZmApp.DROP_TARGETS[t.app][e]=t.dropTargets\r
87929 }};\r
87930 ZmItem.getItemId=function(t){\r
87931 if(!t){\r
87932 return t\r
87933 }\r
87934 if(!ZmItem.SHORT_ID_RE){\r
87935 var e=DwtShell.getShell(window);\r
87936 ZmItem.SHORT_ID_RE=new RegExp(appCtxt.get(ZmSetting.USERID)+":","gi")\r
87937 }\r
87938 return t.replace(ZmItem.SHORT_ID_RE,"")\r
87939 };\r
87940 ZmItem.prototype.create=function(e){};\r
87941 ZmItem.prototype.modify=function(e){};\r
87942 ZmItem.prototype.getById=function(e){\r
87943 if(e==this.id){\r
87944 return this\r
87945 }};\r
87946 ZmItem.prototype.clear=function(){\r
87947 this._evtMgr.removeAll(ZmEvent.L_MODIFY);\r
87948 if(this.tags.length){\r
87949 for(var e=0;\r
87950 e<this.tags.length;\r
87951 e++){\r
87952 this.tags[e]=null\r
87953 }\r
87954 this.tags=[]\r
87955 }\r
87956 for(var e in this.tagHash){\r
87957 this.tagHash[e]=null\r
87958 }\r
87959 this.tagHash={}\r
87960 };\r
87961 ZmItem.prototype.cache=function(){\r
87962 if(this.id){\r
87963 appCtxt.cacheSet(this.id,this);\r
87964 return true\r
87965 }\r
87966 return false\r
87967 };\r
87968 ZmItem.prototype.hasTag=function(e){\r
87969 return(this.tagHash[e]==true)\r
87970 };\r
87971 ZmItem.prototype.getFolderId=function(){\r
87972 return this.folderId\r
87973 };\r
87974 ZmItem.prototype.getUrl=function(){\r
87975 return this.getRestUrl()\r
87976 };\r
87977 ZmItem.prototype.getRestUrl=function(){\r
87978 if(this.restUrl){\r
87979 return this.restUrl\r
87980 }\r
87981 var a=ZmOrganizer.ITEM_ORGANIZER[this.type];\r
87982 var e=appCtxt.getById(this.folderId);\r
87983 var t=e?([e.getRestUrl(),"/",AjxStringUtil.urlComponentEncode(this.name)].join("")):null;\r
87984 return t\r
87985 };\r
87986 ZmItem.prototype.getTagImageInfo=function(){\r
87987 var t;\r
87988 if(!this.tags.length||this.isShared()){\r
87989 t="Blank_16"\r
87990 }else{\r
87991 if(this.tags.length==1){\r
87992 var a=(this.account&&!this.account.isMain)?([this.account.id,this.tags[0]].join(":")):(ZmOrganizer.getSystemId(this.tags[0]));\r
87993 var e=appCtxt.getById(a);\r
87994 t=e?ZmTag.COLOR_ICON[e.color]:"Blank_16"\r
87995 }else{\r
87996 t="TagStack"\r
87997 }}\r
87998 return t\r
87999 };\r
88000 ZmItem.prototype.getDefaultDndAction=function(e){\r
88001 return(this.isReadOnly()||e)?ZmItem.DND_ACTION_COPY:ZmItem.DND_ACTION_MOVE\r
88002 };\r
88003 ZmItem.prototype.isReadOnly=function(){\r
88004 return false\r
88005 };\r
88006 ZmItem.prototype.isShared=function(){\r
88007 if(this._isShared==null){\r
88008 if(this.id==-1){\r
88009 this._isShared=false\r
88010 }else{\r
88011 var t=appCtxt.getActiveAccount();\r
88012 var e=String(this.id);\r
88013 this._isShared=((e.indexOf(":")!=-1)&&(e.indexOf(t.id)!=0))\r
88014 }}\r
88015 return this._isShared\r
88016 };\r
88017 ZmItem.prototype.notifyDelete=function(){\r
88018 this.deleteLocal();\r
88019 if(this.list){\r
88020 this.list.deleteLocal([this])\r
88021 }\r
88022 this._notify(ZmEvent.E_DELETE)\r
88023 };\r
88024 ZmItem.prototype.notifyModify=function(r){\r
88025 if(r.t!=null){\r
88026 this._parseTags(r.t);\r
88027 this._notify(ZmEvent.E_TAGS)\r
88028 }\r
88029 if(r.f!=null){\r
88030 var a=this._getFlags();\r
88031 var s={};\r
88032 for(var n=0;\r
88033 n<a.length;\r
88034 n++){\r
88035 s[a[n]]=this[ZmItem.FLAG_PROP[a[n]]]\r
88036 }\r
88037 this._parseFlags(r.f);\r
88038 var t=[];\r
88039 for(var n=0;\r
88040 n<a.length;\r
88041 n++){\r
88042 var e=this[ZmItem.FLAG_PROP[a[n]]];\r
88043 if(s[a[n]]!=e){\r
88044 t.push(a[n])\r
88045 }}\r
88046 if(t.length){\r
88047 this._notify(ZmEvent.E_FLAGS,{\r
88048 flags:t}\r
88049 )\r
88050 }}\r
88051 if(r.l!=null&&r.l!=this.folderId){\r
88052 var o={\r
88053 oldFolderId:this.folderId};\r
88054 this.moveLocal(r.l);\r
88055 if(this.list){\r
88056 this.list.moveLocal([this],r.l)\r
88057 }\r
88058 this._notify(ZmEvent.E_MOVE,o)\r
88059 }};\r
88060 ZmItem.prototype.flagLocal=function(t,e){\r
88061 this[ZmItem.FLAG_PROP[t]]=e\r
88062 };\r
88063 ZmItem.prototype.setFlag=function(a,t){\r
88064 this.flagLocal(a,t);\r
88065 var e=this.flags||"";\r
88066 if(t&&e.indexOf(a)==-1){\r
88067 e=e+a\r
88068 }else{\r
88069 if(!t&&e.indexOf(a)!=-1){\r
88070 e=e.replace(a,"")\r
88071 }}\r
88072 this.flags=e;\r
88073 return e\r
88074 };\r
88075 ZmItem.prototype.tagLocal=function(a,o){\r
88076 var t=false;\r
88077 if(o){\r
88078 if(!this.tagHash[a]){\r
88079 t=true;\r
88080 this.tags.push(a);\r
88081 this.tagHash[a]=true\r
88082 }}else{\r
88083 for(var e=0;\r
88084 e<this.tags.length;\r
88085 e++){\r
88086 if(this.tags[e]==a){\r
88087 this.tags.splice(e,1);\r
88088 delete this.tagHash[a];\r
88089 t=true;\r
88090 break\r
88091 }}}\r
88092 return t\r
88093 };\r
88094 ZmItem.prototype.removeAllTagsLocal=function(){\r
88095 this.tags=[];\r
88096 for(var e in this.tagHash){\r
88097 delete this.tagHash[e]\r
88098 }};\r
88099 ZmItem.prototype.deleteLocal=function(){};\r
88100 ZmItem.prototype.move=function(e,a,t){\r
88101 return ZmItem.move(this.id,e,a,t)\r
88102 };\r
88103 ZmItem.move=function(n,e,s,t){\r
88104 var a={\r
88105 ItemActionRequest:{\r
88106 _jsns:"urn:zimbraMail",action:{\r
88107 id:n instanceof Array?n.join():n,op:"move",l:e}}};\r
88108 var o={\r
88109 jsonObj:a,asyncMode:Boolean(s),callback:s,errorCallback:t};\r
88110 return appCtxt.getAppController().sendRequest(o)\r
88111 };\r
88112 ZmItem.prototype.moveLocal=function(e){\r
88113 this.folderId=e\r
88114 };\r
88115 ZmItem.prototype._parseTags=function(o){\r
88116 this.tags=[];\r
88117 this.tagHash={};\r
88118 if(o&&o.length){\r
88119 var e=o.split(",");\r
88120 for(var t=0;\r
88121 t<e.length;\r
88122 t++){\r
88123 var a=Number(e[t]);\r
88124 if(a>=ZmOrganizer.FIRST_USER_ID[ZmOrganizer.TAG]){\r
88125 this.tagLocal(a,true)\r
88126 }}}};\r
88127 ZmItem.prototype._parseFlags=function(o){\r
88128 this.flags=o;\r
88129 for(var a=0;\r
88130 a<ZmItem.ALL_FLAGS.length;\r
88131 a++){\r
88132 var t=ZmItem.ALL_FLAGS[a];\r
88133 var e=(o&&(o.indexOf(t)!=-1))?true:false;\r
88134 this.flagLocal(t,e)\r
88135 }};\r
88136 ZmItem.prototype._notify=function(t,e){\r
88137 ZmModel.prototype._notify.call(this,t,e);\r
88138 if(this.list){\r
88139 if(e){\r
88140 e.items=[this]\r
88141 }else{\r
88142 e={\r
88143 items:[this]}\r
88144 }\r
88145 this.list._evt.item=this;\r
88146 this.list._notify(t,e)\r
88147 }};\r
88148 ZmItem.prototype._getFlags=function(){\r
88149 return[ZmItem.FLAG_FLAGGED,ZmItem.FLAG_ATTACH]\r
88150 }\r
88151 }\r
88152 if(AjxPackage.define("zimbraMail.share.model.ZmOrganizer")){\r
88153 ZmOrganizer=function(t){\r
88154 if(arguments.length==0){\r
88155 return\r
88156 }\r
88157 this.type=t.type;\r
88158 var a=this.id=t.id;\r
88159 this.nId=ZmOrganizer.normalizeId(a);\r
88160 this.name=ZmFolder.MSG_KEY[this.nId]?ZmMsg[ZmFolder.MSG_KEY[this.nId]]:t.name;\r
88161 this._systemName=this.nId<256&&t.name;\r
88162 this.parent=t.parent;\r
88163 this.tree=t.tree;\r
88164 this.numUnread=t.numUnread||0;\r
88165 this.numTotal=t.numTotal||0;\r
88166 this.sizeTotal=t.sizeTotal||0;\r
88167 this.url=t.url;\r
88168 this.owner=t.owner;\r
88169 this.link=t.link||(Boolean(t.zid))||(this.parent&&this.parent.link);\r
88170 this.isMountpoint=t.link;\r
88171 this.zid=t.zid;\r
88172 this.rid=t.rid;\r
88173 this.restUrl=t.restUrl;\r
88174 this.account=t.account;\r
88175 this.perm=t.perm;\r
88176 this.noSuchFolder=false;\r
88177 this._isAdmin=this._isReadOnly=this._hasPrivateAccess=null;\r
88178 var e=(this.parent&&!t.color)?this.parent.color:t.color;\r
88179 this.color=e||ZmOrganizer.ORG_COLOR[a]||ZmOrganizer.ORG_COLOR[this.nId]||ZmOrganizer.DEFAULT_COLOR[this.type]||ZmOrganizer.C_NONE;\r
88180 this.rgb=t.rgb||(this.color==ZmOrganizer.C_NONE&&this.parent&&this.parent.rgb);\r
88181 if(t.rgb=="#000000"){\r
88182 delete this.rgb\r
88183 }\r
88184 if(appCtxt.isOffline&&!this.account&&this.id==this.nId){\r
88185 this.account=appCtxt.accountList.mainAccount\r
88186 }\r
88187 this.disallowSubFolder=appCtxt.isOffline&&this.account&&this.account.type==ZmAccount.TYPE_POP;\r
88188 if(a&&t.tree){\r
88189 appCtxt.cacheSet(a,this);\r
88190 if(this.link){\r
88191 appCtxt.cacheSet([this.zid,this.rid].join(":"),this)\r
88192 }}\r
88193 this.children=new AjxVector()\r
88194 };\r
88195 ZmOrganizer.TAG=ZmEvent.S_TAG;\r
88196 ZmOrganizer.SEARCH=ZmEvent.S_SEARCH;\r
88197 ZmOrganizer.MOUNTPOINT=ZmEvent.S_MOUNTPOINT;\r
88198 ZmOrganizer.ZIMLET=ZmEvent.S_ZIMLET;\r
88199 ZmOrganizer.ID_ROOT=1;\r
88200 ZmOrganizer.ID_INBOX=2;\r
88201 ZmOrganizer.ID_TRASH=3;\r
88202 ZmOrganizer.ID_SPAM=4;\r
88203 ZmOrganizer.ID_ADDRBOOK=7;\r
88204 ZmOrganizer.ID_CALENDAR=10;\r
88205 ZmOrganizer.ID_NOTEBOOK=12;\r
88206 ZmOrganizer.ID_AUTO_ADDED=13;\r
88207 ZmOrganizer.ID_CHATS=14;\r
88208 ZmOrganizer.ID_TASKS=15;\r
88209 ZmOrganizer.ID_BRIEFCASE=16;\r
88210 ZmOrganizer.ID_GLOBAL_INBOX=249;\r
88211 ZmOrganizer.ID_NOTIFICATION_MP=250;\r
88212 ZmOrganizer.ID_SYNC_FAILURES=252;\r
88213 ZmOrganizer.ID_OUTBOX=254;\r
88214 ZmOrganizer.ID_ZIMLET=-1000;\r
88215 ZmOrganizer.ID_ROSTER_LIST=-11;\r
88216 ZmOrganizer.ID_ROSTER_TREE_ITEM=-13;\r
88217 ZmOrganizer.ID_MY_CARD=-15;\r
88218 ZmOrganizer.ID_ATTACHMENTS=-17;\r
88219 ZmOrganizer.F_NAME="name";\r
88220 ZmOrganizer.F_UNREAD="unread";\r
88221 ZmOrganizer.F_TOTAL="total";\r
88222 ZmOrganizer.F_SIZE="size";\r
88223 ZmOrganizer.F_COLOR="color";\r
88224 ZmOrganizer.F_RGB="rgb";\r
88225 ZmOrganizer.F_QUERY="query";\r
88226 ZmOrganizer.F_SHARES="shares";\r
88227 ZmOrganizer.F_FLAGS="flags";\r
88228 ZmOrganizer.F_REST_URL="rest";\r
88229 ZmOrganizer.F_PERMS="perms";\r
88230 ZmOrganizer.F_RNAME="rname";\r
88231 ZmOrganizer.FLAG_CHECKED="#";\r
88232 ZmOrganizer.FLAG_DISALLOW_SUBFOLDER="o";\r
88233 ZmOrganizer.FLAG_EXCLUDE_FREE_BUSY="b";\r
88234 ZmOrganizer.FLAG_IMAP_SUBSCRIBED="*";\r
88235 ZmOrganizer.FLAG_OFFLINE_GLOBAL="g";\r
88236 ZmOrganizer.FLAG_OFFLINE_SYNCABLE="y";\r
88237 ZmOrganizer.FLAG_OFFLINE_SYNCING="~";\r
88238 ZmOrganizer.ALL_FLAGS=[ZmOrganizer.FLAG_CHECKED,ZmOrganizer.FLAG_IMAP_SUBSCRIBED,ZmOrganizer.FLAG_EXCLUDE_FREE_BUSY,ZmOrganizer.FLAG_DISALLOW_SUBFOLDER,ZmOrganizer.FLAG_OFFLINE_GLOBAL,ZmOrganizer.FLAG_OFFLINE_SYNCABLE,ZmOrganizer.FLAG_OFFLINE_SYNCING];\r
88239 ZmOrganizer.FLAG_PROP={};\r
88240 ZmOrganizer.FLAG_PROP[ZmOrganizer.FLAG_CHECKED]="isChecked";\r
88241 ZmOrganizer.FLAG_PROP[ZmOrganizer.FLAG_IMAP_SUBSCRIBED]="imapSubscribed";\r
88242 ZmOrganizer.FLAG_PROP[ZmOrganizer.FLAG_EXCLUDE_FREE_BUSY]="excludeFreeBusy";\r
88243 ZmOrganizer.FLAG_PROP[ZmOrganizer.FLAG_DISALLOW_SUBFOLDER]="disallowSubFolder";\r
88244 ZmOrganizer.FLAG_PROP[ZmOrganizer.FLAG_OFFLINE_GLOBAL]="isOfflineGlobalSearch";\r
88245 ZmOrganizer.FLAG_PROP[ZmOrganizer.FLAG_OFFLINE_SYNCABLE]="isOfflineSyncable";\r
88246 ZmOrganizer.FLAG_PROP[ZmOrganizer.FLAG_OFFLINE_SYNCING]="isOfflineSyncing";\r
88247 ZmOrganizer.VALID_NAME_CHARS='[^\\x00-\\x1F\\x7F:\\/\\"]';\r
88248 ZmOrganizer.VALID_PATH_CHARS='[^\\x00-\\x1F\\x7F:\\"]';\r
88249 ZmOrganizer.VALID_NAME_RE=new RegExp("^"+ZmOrganizer.VALID_NAME_CHARS+"+$");\r
88250 ZmOrganizer.MAX_NAME_LENGTH=128;\r
88251 ZmOrganizer.MAX_DISPLAY_NAME_LENGTH=30;\r
88252 ZmOrganizer.C_NONE=0;\r
88253 ZmOrganizer.C_BLUE=1;\r
88254 ZmOrganizer.C_CYAN=2;\r
88255 ZmOrganizer.C_GREEN=3;\r
88256 ZmOrganizer.C_PURPLE=4;\r
88257 ZmOrganizer.C_RED=5;\r
88258 ZmOrganizer.C_YELLOW=6;\r
88259 ZmOrganizer.C_PINK=7;\r
88260 ZmOrganizer.C_GRAY=8;\r
88261 ZmOrganizer.C_ORANGE=9;\r
88262 ZmOrganizer.MAX_COLOR=ZmOrganizer.C_ORANGE;\r
88263 ZmOrganizer.ORG_DEFAULT_COLOR=ZmOrganizer.C_ORANGE;\r
88264 ZmOrganizer.COLOR_VALUES=[null,"#9EB6F5","#A4E6E6","#97C8B1","#BA86E5","#FC9696","#FFF6B3","#FE9BD3","#D3D3D3","#FDBC55"];\r
88265 ZmOrganizer.COLOR_TEXT={};\r
88266 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_NONE]=ZmMsg.none;\r
88267 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_ORANGE]=ZmMsg.orange;\r
88268 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_BLUE]=ZmMsg.blue;\r
88269 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_CYAN]=ZmMsg.cyan;\r
88270 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_GREEN]=ZmMsg.green;\r
88271 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_PURPLE]=ZmMsg.purple;\r
88272 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_RED]=ZmMsg.red;\r
88273 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_YELLOW]=ZmMsg.yellow;\r
88274 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_PINK]=ZmMsg.pink;\r
88275 ZmOrganizer.COLOR_TEXT[ZmOrganizer.C_GRAY]=ZmMsg.gray;\r
88276 ZmOrganizer.COLORS=[];\r
88277 ZmOrganizer.COLOR_CHOICES=[];\r
88278 (function(){\r
88279 for(var t=0;\r
88280 t<=ZmOrganizer.MAX_COLOR;\r
88281 t++){\r
88282 var e=ZmOrganizer.COLOR_TEXT[t];\r
88283 ZmOrganizer.COLORS.push(e);\r
88284 ZmOrganizer.COLOR_CHOICES.push({\r
88285 value:t,label:e}\r
88286 )\r
88287 }}\r
88288 )();\r
88289 ZmOrganizer.MSG_KEY={};\r
88290 ZmOrganizer.ROOT_MSG_KEY={};\r
88291 ZmOrganizer.ITEM_ORGANIZER={};\r
88292 ZmOrganizer.DEFAULT_FOLDER={};\r
88293 ZmOrganizer.SOAP_CMD={};\r
88294 ZmOrganizer.FIRST_USER_ID={};\r
88295 ZmOrganizer.PRECONDITION={};\r
88296 ZmOrganizer.HAS_COLOR={};\r
88297 ZmOrganizer.DEFAULT_COLOR={};\r
88298 ZmOrganizer.ORG_COLOR={};\r
88299 ZmOrganizer.APP={};\r
88300 ZmOrganizer.ORG_CLASS={};\r
88301 ZmOrganizer.ORG_PACKAGE={};\r
88302 ZmOrganizer.CREATE_FUNC={};\r
88303 ZmOrganizer.LABEL={};\r
88304 ZmOrganizer.ITEMS_KEY={};\r
88305 ZmOrganizer.TREE_TYPE={};\r
88306 ZmOrganizer.VIEWS={};\r
88307 ZmOrganizer.VIEW_HASH={};\r
88308 ZmOrganizer.TYPE={};\r
88309 ZmOrganizer.FOLDER_KEY={};\r
88310 ZmOrganizer.MOUNT_KEY={};\r
88311 ZmOrganizer.DEFERRABLE={};\r
88312 ZmOrganizer.PATH_IN_NAME={};\r
88313 ZmOrganizer.OPEN_SETTING={};\r
88314 ZmOrganizer.NEW_OP={};\r
88315 ZmOrganizer.DISPLAY_ORDER={};\r
88316 ZmOrganizer.HIDE_EMPTY={};\r
88317 ZmOrganizer.APP2ORGANIZER={};\r
88318 ZmOrganizer.PERM_READ="r";\r
88319 ZmOrganizer.PERM_WRITE="w";\r
88320 ZmOrganizer.PERM_INSERT="i";\r
88321 ZmOrganizer.PERM_DELETE="d";\r
88322 ZmOrganizer.PERM_ADMIN="a";\r
88323 ZmOrganizer.PERM_WORKFLOW="x";\r
88324 ZmOrganizer.PERM_PRIVATE="p";\r
88325 ZmOrganizer.registerOrg=function(a,e){\r
88326 if(e.nameKey){\r
88327 ZmOrganizer.MSG_KEY[a]=e.nameKey\r
88328 }\r
88329 if(e.app){\r
88330 ZmOrganizer.APP[a]=e.app;\r
88331 if(!ZmOrganizer.APP2ORGANIZER[e.app]){\r
88332 ZmOrganizer.APP2ORGANIZER[e.app]=[]\r
88333 }\r
88334 ZmOrganizer.APP2ORGANIZER[e.app].push(a)\r
88335 }\r
88336 if(e.defaultFolder){\r
88337 ZmOrganizer.DEFAULT_FOLDER[a]=e.defaultFolder\r
88338 }\r
88339 if(e.precondition){\r
88340 ZmOrganizer.PRECONDITION[a]=e.precondition\r
88341 }\r
88342 if(e.soapCmd){\r
88343 ZmOrganizer.SOAP_CMD[a]=e.soapCmd\r
88344 }\r
88345 if(e.firstUserId){\r
88346 ZmOrganizer.FIRST_USER_ID[a]=e.firstUserId\r
88347 }\r
88348 if(e.orgClass){\r
88349 ZmOrganizer.ORG_CLASS[a]=e.orgClass\r
88350 }\r
88351 if(e.orgPackage){\r
88352 ZmOrganizer.ORG_PACKAGE[a]=e.orgPackage\r
88353 }\r
88354 if(e.labelKey){\r
88355 ZmOrganizer.LABEL[a]=e.labelKey\r
88356 }\r
88357 if(e.itemsKey){\r
88358 ZmOrganizer.ITEMS_KEY[a]=e.itemsKey\r
88359 }\r
88360 if(e.hasColor){\r
88361 ZmOrganizer.HAS_COLOR[a]=e.hasColor\r
88362 }\r
88363 if(e.views){\r
88364 ZmOrganizer.VIEWS[a]=e.views\r
88365 }\r
88366 if(e.folderKey){\r
88367 ZmOrganizer.FOLDER_KEY[a]=e.folderKey\r
88368 }\r
88369 if(e.mountKey){\r
88370 ZmOrganizer.MOUNT_KEY[a]=e.mountKey\r
88371 }\r
88372 if(e.deferrable){\r
88373 ZmOrganizer.DEFERRABLE[a]=e.deferrable\r
88374 }\r
88375 if(e.pathInName){\r
88376 ZmOrganizer.PATH_IN_NAME[a]=e.pathInName\r
88377 }\r
88378 if(e.openSetting){\r
88379 ZmOrganizer.OPEN_SETTING[a]=e.openSetting\r
88380 }\r
88381 if(e.newOp){\r
88382 ZmOrganizer.NEW_OP[a]=e.newOp\r
88383 }\r
88384 if(e.displayOrder){\r
88385 ZmOrganizer.DISPLAY_ORDER[a]=e.displayOrder\r
88386 }\r
88387 if(e.hideEmpty){\r
88388 ZmOrganizer.HIDE_EMPTY[a]=e.hideEmpty\r
88389 }\r
88390 if(!appCtxt.isChildWindow||e.childWindow){\r
88391 if(e.compareFunc){\r
88392 ZmTreeView.COMPARE_FUNC[a]=e.compareFunc\r
88393 }\r
88394 if(e.treeController){\r
88395 ZmOverviewController.CONTROLLER[a]=e.treeController\r
88396 }}\r
88397 ZmOrganizer.TREE_TYPE[a]=e.treeType||a;\r
88398 ZmOrganizer.CREATE_FUNC[a]=e.createFunc||"ZmOrganizer.create";\r
88399 if(e.views){\r
88400 ZmOrganizer.VIEW_HASH[a]=AjxUtil.arrayAsHash(ZmOrganizer.VIEWS[a])\r
88401 }\r
88402 if(e.hasColor){\r
88403 ZmOrganizer.DEFAULT_COLOR[a]=(e.defaultColor!=null)?e.defaultColor:ZmOrganizer.ORG_DEFAULT_COLOR\r
88404 }\r
88405 if(e.orgColor){\r
88406 for(var t in e.orgColor){\r
88407 ZmOrganizer.ORG_COLOR[t]=e.orgColor[t]\r
88408 }}\r
88409 if(e.dropTargets){\r
88410 if(!ZmApp.DROP_TARGETS[e.app]){\r
88411 ZmApp.DROP_TARGETS[e.app]={}\r
88412 }\r
88413 ZmApp.DROP_TARGETS[e.app][a]=e.dropTargets\r
88414 }};\r
88415 ZmOrganizer.sortCompare=function(t,e){};\r
88416 ZmOrganizer.create=function(s){\r
88417 var r={\r
88418 CreateFolderRequest:{\r
88419 _jsns:"urn:zimbraMail"}};\r
88420 var o=r.CreateFolderRequest.folder={};\r
88421 var e=s.errorCallback||new AjxCallback(null,ZmOrganizer._handleErrorCreate,s);\r
88422 var a=s.type;\r
88423 s.view=s.view||ZmOrganizer.VIEWS[a]?ZmOrganizer.VIEWS[a][0]:null;\r
88424 for(var t in s){\r
88425 if(t=="type"||t=="errorCallback"||t=="account"){\r
88426 continue\r
88427 }\r
88428 var n=s[t];\r
88429 if(t=="color"){\r
88430 if(!n||(n==ZmOrganizer.DEFAULT_COLOR[a])){\r
88431 n=null\r
88432 }}\r
88433 if(n){\r
88434 o[t]=n\r
88435 }}\r
88436 return appCtxt.getAppController().sendRequest({\r
88437 jsonObj:r,asyncMode:true,accountName:(s.account&&s.account.name),errorCallback:e}\r
88438 )\r
88439 };\r
88440 ZmOrganizer._handleErrorCreate=function(o,e){\r
88441 if(!o.url&&!o.name){\r
88442 return false\r
88443 }\r
88444 var a;\r
88445 if(o.name&&(e.code==ZmCsfeException.MAIL_ALREADY_EXISTS)){\r
88446 a=AjxMessageFormat.format(ZmMsg.errorAlreadyExists,[o.name])\r
88447 }else{\r
88448 if(o.url){\r
88449 var t=(e.code==ZmCsfeException.SVC_RESOURCE_UNREACHABLE)?ZmMsg.feedUnreachable:ZmMsg.feedInvalid;\r
88450 a=AjxMessageFormat.format(t,o.url)\r
88451 }}\r
88452 if(a){\r
88453 ZmOrganizer._showErrorMsg(a);\r
88454 return true\r
88455 }\r
88456 return false\r
88457 };\r
88458 ZmOrganizer._showErrorMsg=function(t){\r
88459 var e=appCtxt.getMsgDialog();\r
88460 e.reset();\r
88461 e.setMessage(t,DwtMessageDialog.CRITICAL_STYLE);\r
88462 e.popup()\r
88463 };\r
88464 ZmOrganizer.getFolder=function(s,n,e){\r
88465 var o={\r
88466 GetFolderRequest:{\r
88467 _jsns:"urn:zimbraMail"}};\r
88468 var t=o.GetFolderRequest;\r
88469 t.folder={\r
88470 l:s};\r
88471 var a=new AjxCallback(null,ZmOrganizer._handleResponseGetFolder,[n]);\r
88472 if(e){\r
88473 e.addRequestParams(o,a)\r
88474 }else{\r
88475 appCtxt.getRequestMgr().sendRequest({\r
88476 jsonObj:o,asyncMode:true,callback:a}\r
88477 )\r
88478 }};\r
88479 ZmOrganizer._handleResponseGetFolder=function(s,e){\r
88480 var n=e.getResponse().GetFolderResponse;\r
88481 var t=(n&&n.folder&&n.folder[0])||(n&&n.link&&n.link[0]);\r
88482 var o;\r
88483 if(t){\r
88484 o=appCtxt.getById(t.id);\r
88485 if(o){\r
88486 o.clearShares();\r
88487 o._setSharesFromJs(t)\r
88488 }else{\r
88489 var a=appCtxt.getById(t.l);\r
88490 o=ZmFolderTree.createFromJs(a,t,appCtxt.getFolderTree(),"folder")\r
88491 }}\r
88492 if(s){\r
88493 s.run(o)\r
88494 }};\r
88495 ZmOrganizer.prototype.getFolder=function(t,e){\r
88496 ZmOrganizer.getFolder(this.id,t,e)\r
88497 };\r
88498 ZmOrganizer.getViewName=function(e){\r
88499 return ZmOrganizer.VIEWS[e][0]\r
88500 };\r
88501 ZmOrganizer.checkName=function(e){\r
88502 if(e.length==0){\r
88503 return ZmMsg.nameEmpty\r
88504 }\r
88505 if(e.length>ZmOrganizer.MAX_NAME_LENGTH){\r
88506 return AjxMessageFormat.format(ZmMsg.nameTooLong,ZmOrganizer.MAX_NAME_LENGTH)\r
88507 }\r
88508 if(!ZmOrganizer.VALID_NAME_RE.test(e)){\r
88509 return AjxMessageFormat.format(ZmMsg.errorInvalidName,AjxStringUtil.htmlEncode(e))\r
88510 }\r
88511 return null\r
88512 };\r
88513 ZmOrganizer.checkUrl=function(e){\r
88514 if(!e.match(/^[a-zA-Z]+:\/\/.*$/i)){\r
88515 return ZmMsg.errorUrlMissing\r
88516 }\r
88517 return null\r
88518 };\r
88519 ZmOrganizer.checkSortArgs=function(e,t){\r
88520 if(!e&&!t){\r
88521 return 0\r
88522 }\r
88523 if(e&&!t){\r
88524 return 1\r
88525 }\r
88526 if(!e&&t){\r
88527 return -1\r
88528 }\r
88529 return null\r
88530 };\r
88531 ZmOrganizer.checkColor=function(e){\r
88532 return((e!=null)&&(e>=0&&e<=ZmOrganizer.MAX_COLOR))?e:ZmOrganizer.ORG_DEFAULT_COLOR\r
88533 };\r
88534 ZmOrganizer.getSystemId=function(a,t,e){\r
88535 t=t||appCtxt.getActiveAccount();\r
88536 if((t&&!t.isMain)||e){\r
88537 return((typeof(a)=="string")&&(a.indexOf(":")!=-1)||!a)?a:([t.id,a].join(":"))\r
88538 }\r
88539 return a\r
88540 };\r
88541 ZmOrganizer.normalizeId=function(o,a){\r
88542 if(typeof(o)!="string"){\r
88543 return o\r
88544 }\r
88545 var e=o.indexOf(":");\r
88546 var t=(e==-1)?o:o.substr(e+1);\r
88547 return(a&&(t>=ZmOrganizer.FIRST_USER_ID[a]))?o:t\r
88548 };\r
88549 ZmOrganizer.parseId=function(a,t){\r
88550 t=t||{};\r
88551 if(a==null){\r
88552 return t\r
88553 }\r
88554 var e=(typeof a=="string")?a.indexOf(":"):-1;\r
88555 if(e==-1){\r
88556 t.account=appCtxt.accountList.mainAccount;\r
88557 t.id=a\r
88558 }else{\r
88559 t.account=appCtxt.accountList.getAccount(a.substring(0,e));\r
88560 t.id=a.substr(e+1)\r
88561 }\r
88562 return t\r
88563 };\r
88564 ZmOrganizer.prototype.toString=function(){\r
88565 return"ZmOrganizer"\r
88566 };\r
88567 ZmOrganizer.prototype.getName=function(n,t,o,e){\r
88568 if(this.nId==ZmFolder.ID_ROOT){\r
88569 return(ZmOrganizer.LABEL[this.type])?ZmMsg[ZmOrganizer.LABEL[this.type]]:""\r
88570 }\r
88571 var a=(e&&this._systemName)?this._systemName:this.name||"";\r
88572 if(ZmOrganizer.PATH_IN_NAME[this.type]&&this.path){\r
88573 a=[this.path,a].join("/")\r
88574 }\r
88575 a=(t&&a.length>t)?a.substring(0,t-3)+"...":a;\r
88576 return this._markupName(a,n,o)\r
88577 };\r
88578 ZmOrganizer.prototype.getPath=function(a,r,t,s,e){\r
88579 var o=this.parent;\r
88580 var n=this.getName(r,t,s,e);\r
88581 while(o&&((o.nId!=ZmOrganizer.ID_ROOT)||a)){\r
88582 n=o.getName(r,t,s,e)+ZmFolder.SEP+n;\r
88583 o=o.parent\r
88584 }\r
88585 return n\r
88586 };\r
88587 ZmOrganizer.prototype.getToolTip=function(a){\r
88588 if(!this._tooltip||a){\r
88589 var e=this._getItemsText();\r
88590 var o=this.numTotal;\r
88591 if(appCtxt.isOffline&&this.account.isMain&&(this.nId==ZmFolder.ID_DRAFTS||this.nId==ZmFolder.ID_OUTBOX)){\r
88592 o=appCtxt.accountList.getItemCount(this.nId)\r
88593 }\r
88594 var t={\r
88595 itemText:e,numTotal:o,sizeTotal:this.sizeTotal};\r
88596 this._tooltip=AjxTemplate.expand("share.App#FolderTooltip",t)\r
88597 }\r
88598 return this._tooltip\r
88599 };\r
88600 ZmOrganizer.prototype.getSearchPath=function(){\r
88601 return(this.nId!=ZmOrganizer.ID_ROOT)?this.getPath(null,null,null,true,true):"/"\r
88602 };\r
88603 ZmOrganizer.prototype.getUrl=function(){\r
88604 return this.getRestUrl()\r
88605 };\r
88606 ZmOrganizer.prototype.getSyncUrl=function(){\r
88607 return url\r
88608 };\r
88609 ZmOrganizer.prototype.getRemoteId=function(){\r
88610 if(!this._remoteId){\r
88611 this._remoteId=(this.isRemote()&&this.zid&&this.rid)?(this.zid+":"+this.rid):this.id\r
88612 }\r
88613 return this._remoteId\r
88614 };\r
88615 ZmOrganizer.prototype.getRestUrl=function(){\r
88616 var o=appCtxt.get(ZmSetting.REST_URL);\r
88617 if(o){\r
88618 return([o,"/",AjxStringUtil.urlEncode(this.getSearchPath())].join(""))\r
88619 }\r
88620 if(this.restUrl){\r
88621 return this.restUrl\r
88622 }\r
88623 var s=document.location;\r
88624 var t=this.owner||appCtxt.get(ZmSetting.USERNAME);\r
88625 var n=s.host;\r
88626 var e=t.match(/^(.*)@(.*)$/);\r
88627 t=(e&&e[1])||t;\r
88628 n=(e&&e[2])||n;\r
88629 if(s.port&&s.port!=80){\r
88630 n=n+":"+s.port\r
88631 }\r
88632 var a=[s.protocol,"//",n,"/service/user/",t,"/",AjxStringUtil.urlEncode(this.getSearchPath())].join("");\r
88633 return a\r
88634 };\r
88635 ZmOrganizer.prototype.getAccount=function(){\r
88636 if(appCtxt.multiAccounts){\r
88637 if(!this.account){\r
88638 this.account=ZmOrganizer.parseId(this.id).account\r
88639 }\r
88640 return this.account\r
88641 }\r
88642 return(this.account||appCtxt.accountList.mainAccount)\r
88643 };\r
88644 ZmOrganizer.prototype.getShares=function(){\r
88645 return this.shares\r
88646 };\r
88647 ZmOrganizer.prototype.addShare=function(a){\r
88648 this.shares=this.shares||[];\r
88649 this.shares.push(a);\r
88650 var o=appCtxt.getActiveAccount();\r
88651 var e=o&&o.id;\r
88652 var t=a.grantee&&a.grantee.id;\r
88653 if(t&&(t==e)){\r
88654 this._mainShare=a\r
88655 }};\r
88656 ZmOrganizer.prototype.clearShares=function(){\r
88657 if(this.shares&&this.shares.length){\r
88658 for(var e=0;\r
88659 e<this.shares.length;\r
88660 e++){\r
88661 this.shares[e]=null\r
88662 }}\r
88663 this.shares=null;\r
88664 this._mainShare=null\r
88665 };\r
88666 ZmOrganizer.prototype.getMainShare=function(){\r
88667 return this._mainShare||(this.shares&&this.shares.length&&this.shares[0])\r
88668 };\r
88669 ZmOrganizer.prototype.supportsSharing=function(){\r
88670 return true\r
88671 };\r
88672 ZmOrganizer.prototype.supportsPublicAccess=function(){\r
88673 return true\r
88674 };\r
88675 ZmOrganizer.prototype.supportsPrivatePermission=function(){\r
88676 return false\r
88677 };\r
88678 ZmOrganizer.prototype.getIcon=function(){};\r
88679 ZmOrganizer.prototype.getIconWithColor=function(){\r
88680 var t=this.getIcon()||"";\r
88681 var e=this.rgb||this.color;\r
88682 return e?[t,e].join(",color="):t\r
88683 };\r
88684 ZmOrganizer.prototype.rename=function(a,n,t,e){\r
88685 if(a==this.name){\r
88686 return\r
88687 }\r
88688 var o={\r
88689 action:"rename",attrs:{\r
88690 name:a}\r
88691 ,callback:n,errorCallback:t,batchCmd:e};\r
88692 this._organizerAction(o)\r
88693 };\r
88694 ZmOrganizer.prototype.setColor=function(t,a,e){\r
88695 var t=ZmOrganizer.checkColor(t);\r
88696 if(this.color==t){\r
88697 return\r
88698 }\r
88699 this._organizerAction({\r
88700 action:"color",attrs:{\r
88701 color:t}\r
88702 ,callback:a,errorCallback:e}\r
88703 )\r
88704 };\r
88705 ZmOrganizer.prototype.setRGB=function(t,a,e){\r
88706 if(this.rgb==t){\r
88707 return\r
88708 }\r
88709 this._organizerAction({\r
88710 action:"color",attrs:{\r
88711 rgb:t}\r
88712 ,callback:a,errorCallback:e}\r
88713 )\r
88714 };\r
88715 ZmOrganizer.prototype.update=function(e){\r
88716 this._organizerAction({\r
88717 action:"update",attrs:e}\r
88718 )\r
88719 };\r
88720 ZmOrganizer.prototype.move=function(t){\r
88721 var e=(t.nId>0)?t.id:ZmOrganizer.getSystemId(ZmOrganizer.ID_ROOT);\r
88722 if((e==this.id||e==this.parent.id)||(this.type==ZmOrganizer.FOLDER&&(ZmOrganizer.normalizeId(e,this.type)==ZmFolder.ID_SPAM))||(t.isChildOf(this))){\r
88723 return\r
88724 }\r
88725 if(e==ZmOrganizer.ID_TRASH){\r
88726 this._organizerAction({\r
88727 action:"trash"}\r
88728 )\r
88729 }else{\r
88730 this._organizerAction({\r
88731 action:"move",attrs:{\r
88732 l:e}}\r
88733 )\r
88734 }};\r
88735 ZmOrganizer.prototype._delete=function(){\r
88736 var e=((this.type==ZmOrganizer.FOLDER||this.type==ZmOrganizer.ADDRBOOK)&&(this.nId==ZmFolder.ID_SPAM||this.nId==ZmFolder.ID_TRASH));\r
88737 if(this.isSystem()&&!e){\r
88738 return\r
88739 }\r
88740 var t=e?"empty":"delete";\r
88741 this._organizerAction({\r
88742 action:t}\r
88743 )\r
88744 };\r
88745 ZmOrganizer.prototype._empty=function(t){\r
88746 t=t||false;\r
88747 var e=((this.type==ZmOrganizer.FOLDER||this.type==ZmOrganizer.ADDRBOOK)&&(this.nId==ZmFolder.ID_SPAM||this.nId==ZmFolder.ID_TRASH||this.nId==ZmFolder.ID_CHATS||this.nId==ZmOrganizer.ID_SYNC_FAILURES));\r
88748 if(this.isSystem()&&!e){\r
88749 return\r
88750 }\r
88751 var a={\r
88752 action:"empty"};\r
88753 a.attrs=(this.nId==ZmFolder.ID_TRASH)?{\r
88754 recursive:true}\r
88755 :{\r
88756 recursive:t};\r
88757 if(this.isRemote()){\r
88758 a.id=this.getRemoteId()\r
88759 }\r
88760 this._organizerAction(a)\r
88761 };\r
88762 ZmOrganizer.prototype.markAllRead=function(){\r
88763 var e=this.isRemote()?this.getRemoteId():null;\r
88764 this._organizerAction({\r
88765 action:"read",id:e,attrs:{\r
88766 l:this.id}}\r
88767 )\r
88768 };\r
88769 ZmOrganizer.prototype.sync=function(){\r
88770 this._organizerAction({\r
88771 action:"sync"}\r
88772 )\r
88773 };\r
88774 ZmOrganizer.prototype.notifyDelete=function(){\r
88775 var t=appCtxt.getOverviewController().getTreeController(this.type);\r
88776 var o=t.getTreeView(appCtxt.getCurrentApp().getOverviewId());\r
88777 var n=o&&o.getSelected();\r
88778 if(n){\r
88779 if(!(n instanceof Array)){\r
88780 n=[n]\r
88781 }\r
88782 for(var r in n){\r
88783 var e=n[r];\r
88784 if(e&&(e==this||e.isChildOf(this))){\r
88785 var a=this.parent.id;\r
88786 if(this.parent.nId==ZmOrganizer.ID_ROOT){\r
88787 a=ZmOrganizer.getSystemId(ZmOrganizer.DEFAULT_FOLDER[this.type])\r
88788 }\r
88789 var s=false;\r
88790 o.setSelected(a,s)\r
88791 }}}\r
88792 this.deleteLocal();\r
88793 this._notify(ZmEvent.E_DELETE)\r
88794 };\r
88795 ZmOrganizer.prototype.notifyCreate=function(){};\r
88796 ZmOrganizer.prototype.notifyModify=function(obj,details){\r
88797 var doNotify=false;\r
88798 var details=details||{};\r
88799 var fields={};\r
88800 if(obj.name!=null&&(this.name!=obj.name||this.id!=obj.id)){\r
88801 if(obj.id==this.id){\r
88802 details.oldName=this.name;\r
88803 this.name=obj.name;\r
88804 fields[ZmOrganizer.F_NAME]=true;\r
88805 this.parent.children.sort(eval(ZmTreeView.COMPARE_FUNC[this.type]))\r
88806 }else{\r
88807 details.newName=obj.name;\r
88808 fields[ZmOrganizer.F_RNAME]=true\r
88809 }\r
88810 doNotify=true\r
88811 }\r
88812 if(obj.u!=null&&this.numUnread!=obj.u){\r
88813 this.numUnread=obj.u;\r
88814 fields[ZmOrganizer.F_UNREAD]=true;\r
88815 doNotify=true\r
88816 }\r
88817 if(obj.n!=null&&this.numTotal!=obj.n){\r
88818 this.numTotal=obj.n;\r
88819 fields[ZmOrganizer.F_TOTAL]=true;\r
88820 doNotify=true\r
88821 }\r
88822 if(obj.s!=null&&this.sizeTotal!=obj.s){\r
88823 this.sizeTotal=obj.s;\r
88824 fields[ZmOrganizer.F_SIZE]=true;\r
88825 doNotify=true\r
88826 }\r
88827 if((obj.rgb!=null||obj.color!=null)&&!obj._isRemote){\r
88828 var color=ZmOrganizer.checkColor(obj.color);\r
88829 if(this.color!=color){\r
88830 this.color=color;\r
88831 fields[ZmOrganizer.F_COLOR]=true\r
88832 }\r
88833 if(obj.rgb!=this.rgb){\r
88834 this.rgb=obj.rgb;\r
88835 fields[ZmOrganizer.F_RBG]=true;\r
88836 fields[ZmOrganizer.F_COLOR]=true\r
88837 }\r
88838 doNotify=true\r
88839 }\r
88840 if(obj.f!=null&&!obj._isRemote){\r
88841 var oflags=this._setFlags().split("").sort().join("");\r
88842 var nflags=obj.f.split("").sort().join("");\r
88843 if(oflags!=nflags){\r
88844 this._parseFlags(obj.f);\r
88845 fields[ZmOrganizer.F_FLAGS]=true;\r
88846 doNotify=true\r
88847 }}\r
88848 if(obj.rest!=null&&this.restUrl!=obj.rest&&!obj._isRemote){\r
88849 this.restUrl=obj.rest;\r
88850 fields[ZmOrganizer.F_REST_URL]=true;\r
88851 doNotify=true\r
88852 }\r
88853 if(obj.acl){\r
88854 this.clearShares();\r
88855 if(obj.acl.grant&&obj.acl.grant.length){\r
88856 AjxDispatcher.require("Share");\r
88857 for(var i=0;\r
88858 i<obj.acl.grant.length;\r
88859 i++){\r
88860 share=ZmShare.createFromJs(this,obj.acl.grant[i]);\r
88861 this.addShare(share)\r
88862 }}\r
88863 fields[ZmOrganizer.F_SHARES]=true;\r
88864 doNotify=true\r
88865 }\r
88866 if(obj.perm&&obj._isRemote){\r
88867 fields[ZmOrganizer.F_PERMS]=true;\r
88868 doNotify=true;\r
88869 this._isAdmin=this._isReadOnly=this._hasPrivateAccess=null\r
88870 }\r
88871 if(doNotify){\r
88872 details.fields=fields;\r
88873 this._notify(ZmEvent.E_MODIFY,details)\r
88874 }\r
88875 if(this.parent&&obj.l!=null&&obj.l!=this.parent.id){\r
88876 var newParent=this._getNewParent(obj.l);\r
88877 if(newParent){\r
88878 this.reparent(newParent);\r
88879 this._notify(ZmEvent.E_MOVE);\r
88880 this.tree=newParent.tree\r
88881 }}};\r
88882 ZmOrganizer.prototype.deleteLocal=function(){\r
88883 this.parent.children.remove(this);\r
88884 var e=this.children.getArray();\r
88885 var o=this.children.size();\r
88886 for(var t=0;\r
88887 t<o;\r
88888 t++){\r
88889 var n=e[t];\r
88890 if(n){\r
88891 n.deleteLocal()\r
88892 }}\r
88893 this.children.removeAll()\r
88894 };\r
88895 ZmOrganizer.prototype.hasChild=function(e){\r
88896 return(this.getChild(e)!=null)\r
88897 };\r
88898 ZmOrganizer.prototype.getChild=function(t){\r
88899 t=t.toLowerCase();\r
88900 var e=this.children.getArray();\r
88901 var n=this.children.size();\r
88902 for(var o=0;\r
88903 o<n;\r
88904 o++){\r
88905 if(e[o].name&&(e[o].name.toLowerCase()==t)){\r
88906 return e[o]\r
88907 }}\r
88908 return null\r
88909 };\r
88910 ZmOrganizer.prototype.getChildByPath=function(n){\r
88911 var e=this;\r
88912 if(n.match(/^\//)){\r
88913 while(e.nId!=ZmOrganizer.ID_ROOT){\r
88914 e=e.parent\r
88915 }\r
88916 n=n.substr(1)\r
88917 }\r
88918 if(n.length==0){\r
88919 return e\r
88920 }\r
88921 var o=n.split("/");\r
88922 var a=0;\r
88923 while(a<o.length){\r
88924 var t=o[a++];\r
88925 var s=e.getChild(t);\r
88926 if(s==null){\r
88927 return null\r
88928 }\r
88929 e=s\r
88930 }\r
88931 return e\r
88932 };\r
88933 ZmOrganizer.prototype.reparent=function(e){\r
88934 if(this.parent){\r
88935 this.parent.children.remove(this)\r
88936 }\r
88937 if(e){\r
88938 e.children.add(this)\r
88939 }\r
88940 this.parent=e\r
88941 };\r
88942 ZmOrganizer.prototype.getById=function(r){\r
88943 if(this.link&&r&&typeof(r)=="string"){\r
88944 var n=r.split(":");\r
88945 if(this.zid==n[0]&&this.rid==n[1]){\r
88946 return this\r
88947 }}\r
88948 if(this.id==r||this.nId==r){\r
88949 return this\r
88950 }\r
88951 var e;\r
88952 var t=this.children.getArray();\r
88953 var s=this.children.size();\r
88954 for(var o=0;\r
88955 o<s;\r
88956 o++){\r
88957 if(e=t[o].getById(r)){\r
88958 return e\r
88959 }}\r
88960 return null\r
88961 };\r
88962 ZmOrganizer.prototype.getByName=function(t,e){\r
88963 return this._getByName(t.toLowerCase(),e)\r
88964 };\r
88965 ZmOrganizer.prototype.getByType=function(e){\r
88966 var t=[];\r
88967 this._getByType(e,t);\r
88968 return t\r
88969 };\r
88970 ZmOrganizer.prototype._getByType=function(o,n){\r
88971 if(this.type==o){\r
88972 n.push(this)\r
88973 }\r
88974 var e=this.children.getArray();\r
88975 for(var t=0;\r
88976 t<e.length;\r
88977 t++){\r
88978 if(e[t]){\r
88979 e[t]._getByType(o,n)\r
88980 }}};\r
88981 ZmOrganizer.prototype.getByPath=function(t,e){\r
88982 return this._getByPath(t.toLowerCase(),e)\r
88983 };\r
88984 ZmOrganizer.prototype._getByPath=function(s,o){\r
88985 if(this.nId==ZmFolder.ID_TAGS){\r
88986 return null\r
88987 }\r
88988 if(s==this.getPath(false,false,null,true,o).toLowerCase()){\r
88989 return this\r
88990 }\r
88991 var t=this.children.getArray();\r
88992 for(var n=0;\r
88993 n<t.length;\r
88994 n++){\r
88995 var e=t[n]._getByPath(s,o);\r
88996 if(e){\r
88997 return e\r
88998 }}\r
88999 return null\r
89000 };\r
89001 ZmOrganizer.prototype.size=function(){\r
89002 return this.children.size()\r
89003 };\r
89004 ZmOrganizer.prototype.isChildOf=function(e){\r
89005 var t=this.parent;\r
89006 while(t){\r
89007 if(t==e){\r
89008 return true\r
89009 }\r
89010 t=t.parent\r
89011 }\r
89012 return false\r
89013 };\r
89014 ZmOrganizer.prototype._getNewParent=function(e){\r
89015 return appCtxt.getById(e)\r
89016 };\r
89017 ZmOrganizer.prototype.isUnder=function(t){\r
89018 if(this.nId==t||(this.isRemote()&&this.rid==t)){\r
89019 return true\r
89020 }\r
89021 var e=this.parent;\r
89022 while(e&&e.nId!=ZmOrganizer.ID_ROOT){\r
89023 if(e.nId==t){\r
89024 return true\r
89025 }\r
89026 e=e.parent\r
89027 }\r
89028 return false\r
89029 };\r
89030 ZmOrganizer.prototype.isInTrash=function(){\r
89031 return this.isUnder(ZmOrganizer.ID_TRASH)\r
89032 };\r
89033 ZmOrganizer.prototype.isPermAllowed=function(t){\r
89034 if(this.perm){\r
89035 var e=this.perm.replace(/-./g,"");\r
89036 return(e.indexOf(t)!=-1)\r
89037 }\r
89038 return false\r
89039 };\r
89040 ZmOrganizer.prototype.isReadOnly=function(){\r
89041 if(this._isReadOnly==null){\r
89042 var e=this.getMainShare();\r
89043 this._isReadOnly=(e!=null)?(this.isRemote()&&!e.isWrite()):(this.isRemote()&&this.isPermAllowed(ZmOrganizer.PERM_READ)&&!this.isPermAllowed(ZmOrganizer.PERM_WRITE))\r
89044 }\r
89045 return this._isReadOnly\r
89046 };\r
89047 ZmOrganizer.prototype.isAdmin=function(){\r
89048 if(this._isAdmin==null){\r
89049 var e=this.getMainShare();\r
89050 this._isAdmin=(e!=null)?(this.isRemote()&&e.isAdmin()):(this.isRemote()&&this.isPermAllowed(ZmOrganizer.PERM_ADMIN))\r
89051 }\r
89052 return this._isAdmin\r
89053 };\r
89054 ZmOrganizer.prototype.hasPrivateAccess=function(){\r
89055 if(this._hasPrivateAccess==null){\r
89056 var e=this.getMainShare();\r
89057 this._hasPrivateAccess=(e!=null)?(this.isRemote()&&e.hasPrivateAccess()):(this.isRemote()&&this.isPermAllowed(ZmOrganizer.PERM_PRIVATE))\r
89058 }\r
89059 return this._hasPrivateAccess\r
89060 };\r
89061 ZmOrganizer.prototype.isRemote=function(){\r
89062 if(this._isRemote==null){\r
89063 if(this.zid!=null){\r
89064 this._isRemote=true\r
89065 }else{\r
89066 if(appCtxt.multiAccounts){\r
89067 var t=this.account;\r
89068 var e=ZmOrganizer.parseId(this.id);\r
89069 if(!t){\r
89070 if(e.account&&e.account.isMain){\r
89071 this._isRemote=false;\r
89072 return this._isRemote\r
89073 }else{\r
89074 t=appCtxt.getActiveAccount()\r
89075 }}\r
89076 this._isRemote=(e.account&&(e.account!=t))\r
89077 }else{\r
89078 var a=String(this.id);\r
89079 this._isRemote=((a.indexOf(":")!=-1)&&(a.indexOf(appCtxt.getActiveAccount().id)!=0))\r
89080 }}}\r
89081 return this._isRemote\r
89082 };\r
89083 ZmOrganizer.prototype.isSystem=function(){\r
89084 return(this.nId<ZmOrganizer.FIRST_USER_ID[this.type])\r
89085 };\r
89086 ZmOrganizer.prototype.isFeed=function(){\r
89087 return Boolean(this.url)\r
89088 };\r
89089 ZmOrganizer.prototype.isDataSource=function(t,a){\r
89090 var e=this.getDataSources(t,a);\r
89091 return(e&&e.length>0)\r
89092 };\r
89093 ZmOrganizer.prototype.getDataSources=function(t,a){\r
89094 if(!appCtxt.get(ZmSetting.MAIL_ENABLED)){\r
89095 return null\r
89096 }\r
89097 var e=appCtxt.getDataSourceCollection();\r
89098 var o=e.getByFolderId(this.nId,t);\r
89099 if(o.length==0){\r
89100 return(a&&this.parent)?this.parent.getDataSources(t,a):null\r
89101 }\r
89102 return o\r
89103 };\r
89104 ZmOrganizer.prototype.getOwner=function(){\r
89105 return(this.owner||appCtxt.get(ZmSetting.USERNAME))\r
89106 };\r
89107 ZmOrganizer.getSortIndex=function(n,e){\r
89108 if(!(n&&n.parent&&e)){\r
89109 return null\r
89110 }\r
89111 var a=n.parent.children.getArray();\r
89112 for(var t=0;\r
89113 t<a.length;\r
89114 t++){\r
89115 var o=e(n,a[t]);\r
89116 if(o==-1){\r
89117 return t\r
89118 }}\r
89119 return t\r
89120 };\r
89121 ZmOrganizer.prototype._organizerAction=function(s){\r
89122 var n=ZmOrganizer.SOAP_CMD[this.type];\r
89123 var o=AjxSoapDoc.create(n+"Request","urn:zimbraMail");\r
89124 var a=o.set("action");\r
89125 a.setAttribute("op",s.action);\r
89126 a.setAttribute("id",s.id||this.id);\r
89127 for(var e in s.attrs){\r
89128 if(AjxEnv.isIE){\r
89129 s.attrs[e]+=""\r
89130 }\r
89131 a.setAttribute(e,s.attrs[e])\r
89132 }\r
89133 var r=new AjxCallback(this,this._handleResponseOrganizerAction,s);\r
89134 if(s.batchCmd){\r
89135 s.batchCmd.addRequestParams(o,r,s.errorCallback)\r
89136 }else{\r
89137 var t;\r
89138 if(appCtxt.multiAccounts){\r
89139 t=(this.account)?this.account.name:appCtxt.accountList.mainAccount.name\r
89140 }\r
89141 appCtxt.getAppController().sendRequest({\r
89142 soapDoc:o,asyncMode:true,accountName:t,callback:r,errorCallback:s.errorCallback}\r
89143 )\r
89144 }};\r
89145 ZmOrganizer.prototype._handleResponseOrganizerAction=function(t,e){\r
89146 if(t.callback){\r
89147 t.callback.run(e)\r
89148 }};\r
89149 ZmOrganizer.prototype._getByName=function(n,t){\r
89150 if(this.name&&n==this.name.toLowerCase()){\r
89151 return this\r
89152 }\r
89153 var e;\r
89154 var o=this.children.getArray();\r
89155 var r=this.children.size();\r
89156 for(var s=0;\r
89157 s<r;\r
89158 s++){\r
89159 if(e=o[s]._getByName(n,t)){\r
89160 if(t&&e.isDataSource(ZmAccount.TYPE_IMAP,true)){\r
89161 continue\r
89162 }\r
89163 return e\r
89164 }}\r
89165 return null\r
89166 };\r
89167 ZmOrganizer.prototype._parseFlags=function(a){\r
89168 for(var t=0;\r
89169 t<ZmOrganizer.ALL_FLAGS.length;\r
89170 t++){\r
89171 var e=ZmOrganizer.ALL_FLAGS[t];\r
89172 this[ZmOrganizer.FLAG_PROP[e]]=(Boolean(a&&(a.indexOf(e)!=-1)))\r
89173 }};\r
89174 ZmOrganizer.prototype._setFlags=function(){\r
89175 var t="";\r
89176 for(var a=0;\r
89177 a<ZmOrganizer.ALL_FLAGS.length;\r
89178 a++){\r
89179 var e=ZmOrganizer.ALL_FLAGS[a];\r
89180 var o=ZmOrganizer.FLAG_PROP[e];\r
89181 if(this[o]){\r
89182 t=t+e\r
89183 }}\r
89184 return t\r
89185 };\r
89186 ZmOrganizer.prototype.addChangeListener=function(e){\r
89187 this.tree.addChangeListener(e)\r
89188 };\r
89189 ZmOrganizer.prototype.removeChangeListener=function(e){\r
89190 this.tree.removeChangeListener(e)\r
89191 };\r
89192 ZmOrganizer.prototype._setSharesFromJs=function(a){\r
89193 if(a.acl&&a.acl.grant&&a.acl.grant.length>0){\r
89194 AjxDispatcher.require("Share");\r
89195 for(var t=0;\r
89196 t<a.acl.grant.length;\r
89197 t++){\r
89198 var e=a.acl.grant[t];\r
89199 this.addShare(ZmShare.createFromJs(this,e))\r
89200 }}};\r
89201 ZmOrganizer.prototype._notify=function(t,e){\r
89202 if(e){\r
89203 e.organizers=[this]\r
89204 }else{\r
89205 e={\r
89206 organizers:[this]}\r
89207 }\r
89208 this.tree._evt.type=this.type;\r
89209 this.tree._notify(t,e)\r
89210 };\r
89211 ZmOrganizer.prototype._markupName=function(e,a,t){\r
89212 if(!t){\r
89213 e=AjxStringUtil.htmlEncode(e,true)\r
89214 }\r
89215 if(a&&this.numUnread>0){\r
89216 e=AjxMessageFormat.format(ZmMsg.folderUnread,[e,this.numUnread]);\r
89217 if(!t){\r
89218 e=["<span style='font-weight:bold'>",e,"</span>"].join("")\r
89219 }}\r
89220 if(this.noSuchFolder&&!t){\r
89221 e=["<del>",e,"</del>"].join("")\r
89222 }\r
89223 return e\r
89224 };\r
89225 ZmOrganizer.prototype._getItemsText=function(){\r
89226 var e=ZmMsg[ZmOrganizer.ITEMS_KEY[this.type]];\r
89227 if(!e||(this.nId==ZmFolder.ID_TRASH)){\r
89228 e=ZmMsg.items\r
89229 }\r
89230 return e\r
89231 }\r
89232 }\r
89233 if(AjxPackage.define("zimbraMail.share.model.ZmFolder")){\r
89234 ZmFolder=function(e){\r
89235 if(arguments.length==0){\r
89236 return\r
89237 }\r
89238 e.type=e.type||ZmOrganizer.FOLDER;\r
89239 ZmOrganizer.call(this,e)\r
89240 };\r
89241 ZmFolder.prototype=new ZmOrganizer;\r
89242 ZmFolder.prototype.constructor=ZmFolder;\r
89243 ZmOrganizer.ORG_CLASS[ZmId.ORG_FOLDER]="ZmFolder";\r
89244 ZmFolder.SEP="/";\r
89245 ZmFolder.ID_LOAD_FOLDERS=-3;\r
89246 ZmFolder.ID_OTHER=-2;\r
89247 ZmFolder.ID_SEP=-1;\r
89248 ZmFolder.ID_ROOT=ZmOrganizer.ID_ROOT;\r
89249 ZmFolder.ID_INBOX=ZmOrganizer.ID_INBOX;\r
89250 ZmFolder.ID_TRASH=ZmOrganizer.ID_TRASH;\r
89251 ZmFolder.ID_SPAM=ZmOrganizer.ID_SPAM;\r
89252 ZmFolder.ID_SENT=5;\r
89253 ZmFolder.ID_DRAFTS=6;\r
89254 ZmFolder.ID_CONTACTS=ZmOrganizer.ID_ADDRBOOK;\r
89255 ZmFolder.ID_AUTO_ADDED=ZmOrganizer.ID_AUTO_ADDED;\r
89256 ZmFolder.ID_TAGS=8;\r
89257 ZmFolder.ID_TASKS=ZmOrganizer.ID_TASKS;\r
89258 ZmFolder.ID_SYNC_FAILURES=ZmOrganizer.ID_SYNC_FAILURES;\r
89259 ZmFolder.ID_OUTBOX=ZmOrganizer.ID_OUTBOX;\r
89260 ZmFolder.ID_CHATS=ZmOrganizer.ID_CHATS;\r
89261 ZmFolder.ID_ATTACHMENTS=ZmOrganizer.ID_ATTACHMENTS;\r
89262 ZmFolder.MSG_KEY={};\r
89263 ZmFolder.MSG_KEY[ZmFolder.ID_INBOX]="inbox";\r
89264 ZmFolder.MSG_KEY[ZmFolder.ID_TRASH]="trash";\r
89265 ZmFolder.MSG_KEY[ZmFolder.ID_SPAM]="junk";\r
89266 ZmFolder.MSG_KEY[ZmFolder.ID_SENT]="sent";\r
89267 ZmFolder.MSG_KEY[ZmFolder.ID_DRAFTS]="drafts";\r
89268 ZmFolder.MSG_KEY[ZmFolder.ID_CONTACTS]="contacts";\r
89269 ZmFolder.MSG_KEY[ZmFolder.ID_AUTO_ADDED]="emailedContacts";\r
89270 ZmFolder.MSG_KEY[ZmFolder.ID_TASKS]="tasks";\r
89271 ZmFolder.MSG_KEY[ZmFolder.ID_TAGS]="tags";\r
89272 ZmFolder.MSG_KEY[ZmOrganizer.ID_CALENDAR]="calendar";\r
89273 ZmFolder.MSG_KEY[ZmOrganizer.ID_NOTEBOOK]="notebook";\r
89274 ZmFolder.MSG_KEY[ZmOrganizer.ID_BRIEFCASE]="briefcase";\r
89275 ZmFolder.MSG_KEY[ZmOrganizer.ID_CHATS]="chats";\r
89276 ZmFolder.MSG_KEY[ZmOrganizer.ID_GLOBAL_INBOX]="globalInbox";\r
89277 \r
89278 ZmFolder.MSG_KEY[ZmFolder.ID_OUTBOX]="outbox";\r
89279 ZmFolder.MSG_KEY[ZmFolder.ID_SYNC_FAILURES]="errorReports";\r
89280 ZmFolder.MSG_KEY[ZmFolder.ID_ATTACHMENTS]="attachments";\r
89281 ZmFolder.ICON={};\r
89282 ZmFolder.ICON[ZmFolder.ID_INBOX]="Inbox";\r
89283 ZmFolder.ICON[ZmFolder.ID_TRASH]="Trash";\r
89284 ZmFolder.ICON[ZmFolder.ID_SPAM]="SpamFolder";\r
89285 ZmFolder.ICON[ZmFolder.ID_SENT]="SentFolder";\r
89286 ZmFolder.ICON[ZmFolder.ID_SYNC_FAILURES]="SendReceive";\r
89287 ZmFolder.ICON[ZmFolder.ID_OUTBOX]="Outbox";\r
89288 ZmFolder.ICON[ZmFolder.ID_DRAFTS]="DraftFolder";\r
89289 ZmFolder.ICON[ZmFolder.ID_CHATS]="ChatFolder";\r
89290 ZmFolder.ICON[ZmFolder.ID_LOAD_FOLDERS]="Plus";\r
89291 ZmFolder.ICON[ZmFolder.ID_ATTACHMENTS]="Attachment";\r
89292 ZmFolder.QUERY_NAME={};\r
89293 ZmFolder.QUERY_NAME[ZmFolder.ID_INBOX]="inbox";\r
89294 ZmFolder.QUERY_NAME[ZmFolder.ID_TRASH]="trash";\r
89295 ZmFolder.QUERY_NAME[ZmFolder.ID_SPAM]="junk";\r
89296 ZmFolder.QUERY_NAME[ZmFolder.ID_SENT]="sent";\r
89297 ZmFolder.QUERY_NAME[ZmFolder.ID_OUTBOX]="outbox";\r
89298 ZmFolder.QUERY_NAME[ZmFolder.ID_DRAFTS]="drafts";\r
89299 ZmFolder.QUERY_NAME[ZmFolder.ID_CONTACTS]="contacts";\r
89300 ZmFolder.QUERY_NAME[ZmFolder.ID_TASKS]="tasks";\r
89301 ZmFolder.QUERY_NAME[ZmFolder.ID_AUTO_ADDED]="Emailed Contacts";\r
89302 ZmFolder.QUERY_NAME[ZmOrganizer.ID_NOTEBOOK]="notebook";\r
89303 ZmFolder.QUERY_NAME[ZmOrganizer.ID_BRIEFCASE]="briefcase";\r
89304 ZmFolder.QUERY_NAME[ZmFolder.ID_CHATS]="chats";\r
89305 ZmFolder.QUERY_NAME[ZmFolder.ID_SYNC_FAILURES]="Error Reports";\r
89306 ZmFolder.QUERY_ID={};\r
89307 for(var id in ZmFolder.QUERY_NAME){\r
89308 ZmFolder.QUERY_ID[ZmFolder.QUERY_NAME[id]]=id\r
89309 }\r
89310 ZmFolder.SORT_ORDER={};\r
89311 ZmFolder.SORT_ORDER[ZmFolder.ID_INBOX]=1;\r
89312 ZmFolder.SORT_ORDER[ZmFolder.ID_CHATS]=2;\r
89313 ZmFolder.SORT_ORDER[ZmFolder.ID_SENT]=3;\r
89314 ZmFolder.SORT_ORDER[ZmFolder.ID_DRAFTS]=4;\r
89315 ZmFolder.SORT_ORDER[ZmFolder.ID_SPAM]=5;\r
89316 ZmFolder.SORT_ORDER[ZmFolder.ID_OUTBOX]=6;\r
89317 ZmFolder.SORT_ORDER[ZmFolder.ID_TRASH]=7;\r
89318 ZmFolder.SORT_ORDER[ZmFolder.ID_SYNC_FAILURES]=8;\r
89319 ZmFolder.SORT_ORDER[ZmFolder.ID_SEP]=9;\r
89320 ZmFolder.SORT_ORDER[ZmFolder.ID_ATTACHMENTS]=99;\r
89321 ZmFolder.TCON_CODE={};\r
89322 ZmFolder.TCON_CODE[ZmFolder.ID_TRASH]="t";\r
89323 ZmFolder.TCON_CODE[ZmFolder.ID_SYNC_FAILURES]="o";\r
89324 ZmFolder.TCON_CODE[ZmFolder.ID_SPAM]="j";\r
89325 ZmFolder.TCON_CODE[ZmFolder.ID_SENT]="s";\r
89326 ZmFolder.TCON_CODE[ZmFolder.ID_OTHER]="o";\r
89327 ZmFolder.HIDE_ID={};\r
89328 ZmFolder.HIDE_ID[ZmOrganizer.ID_CHATS]=true;\r
89329 ZmFolder.HIDE_ID[ZmOrganizer.ID_NOTIFICATION_MP]=true;\r
89330 ZmFolder.HIDE_NAME={};\r
89331 ZmFolder.SYNC_ISSUES="Sync Issues";\r
89332 ZmFolder.QUERY_ID={};\r
89333 (function(){\r
89334 for(var e in ZmFolder.QUERY_NAME){\r
89335 ZmFolder.QUERY_ID[ZmFolder.QUERY_NAME[e]]=e\r
89336 }}\r
89337 )();\r
89338 ZmFolder.sortCompare=function(a,t){\r
89339 var e=ZmOrganizer.checkSortArgs(a,t);\r
89340 if(e!=null){\r
89341 return e\r
89342 }\r
89343 if(appCtxt.isOffline){\r
89344 if(a.isDataSource(ZmAccount.TYPE_POP)){\r
89345 if(a.id==ZmFolder.ID_INBOX){\r
89346 return -1\r
89347 }\r
89348 if(t.isDataSource(ZmAccount.TYPE_POP)){\r
89349 if(a.name.toLowerCase()>t.name.toLowerCase()){\r
89350 return 1\r
89351 }\r
89352 if(a.name.toLowerCase()<t.name.toLowerCase()){\r
89353 return -1\r
89354 }\r
89355 return 0\r
89356 }\r
89357 return -1\r
89358 }else{\r
89359 if(t.isDataSource(ZmAccount.TYPE_POP)){\r
89360 return 1\r
89361 }}}\r
89362 if(ZmFolder.SORT_ORDER[a.nId]&&ZmFolder.SORT_ORDER[t.nId]){\r
89363 return(ZmFolder.SORT_ORDER[a.nId]-ZmFolder.SORT_ORDER[t.nId])\r
89364 }\r
89365 if(!ZmFolder.SORT_ORDER[a.nId]&&ZmFolder.SORT_ORDER[t.nId]){\r
89366 return 1\r
89367 }\r
89368 if(ZmFolder.SORT_ORDER[a.nId]&&!ZmFolder.SORT_ORDER[t.nId]){\r
89369 return -1\r
89370 }\r
89371 if(a.name.toLowerCase()>t.name.toLowerCase()){\r
89372 return 1\r
89373 }\r
89374 if(a.name.toLowerCase()<t.name.toLowerCase()){\r
89375 return -1\r
89376 }\r
89377 return 0\r
89378 };\r
89379 ZmFolder.sortComparePath=function(n,o){\r
89380 var a=n&&n.getPath(false,false,null,true,true);\r
89381 var t=o&&o.getPath(false,false,null,true,true);\r
89382 var e=ZmOrganizer.checkSortArgs(a,t);\r
89383 if(e!=null){\r
89384 return e\r
89385 }\r
89386 if(ZmFolder.SORT_ORDER[n.nId]&&ZmFolder.SORT_ORDER[o.nId]){\r
89387 return(ZmFolder.SORT_ORDER[n.nId]-ZmFolder.SORT_ORDER[o.nId])\r
89388 }\r
89389 if(!ZmFolder.SORT_ORDER[n.nId]&&ZmFolder.SORT_ORDER[o.nId]){\r
89390 return 1\r
89391 }\r
89392 if(ZmFolder.SORT_ORDER[n.nId]&&!ZmFolder.SORT_ORDER[o.nId]){\r
89393 return -1\r
89394 }\r
89395 if(a.toLowerCase()>t.toLowerCase()){\r
89396 return 1\r
89397 }\r
89398 if(a.toLowerCase()<t.toLowerCase()){\r
89399 return -1\r
89400 }\r
89401 return 0\r
89402 };\r
89403 ZmFolder.checkName=function(a,o){\r
89404 var t=ZmOrganizer.checkName(a);\r
89405 if(t){\r
89406 return t\r
89407 }\r
89408 o=o||appCtxt.getFolderTree().root;\r
89409 if(o&&(o.id==ZmFolder.ID_ROOT)){\r
89410 var e=a.toLowerCase();\r
89411 for(var s in ZmFolder.MSG_KEY){\r
89412 var n=ZmMsg[ZmFolder.MSG_KEY[s]];\r
89413 if(n&&(e==n.toLowerCase())){\r
89414 return ZmMsg.folderNameReserved\r
89415 }}\r
89416 if(e==ZmFolder.SYNC_ISSUES.toLowerCase()){\r
89417 return ZmMsg.folderNameReserved\r
89418 }}\r
89419 return null\r
89420 };\r
89421 ZmFolder.getIdForName=function(a){\r
89422 var e=a.toLowerCase();\r
89423 for(var t in ZmFolder.MSG_KEY){\r
89424 if(ZmFolder.MSG_KEY[t]==e){\r
89425 return t\r
89426 }}\r
89427 return null\r
89428 };\r
89429 ZmFolder.prototype.toString=function(){\r
89430 return"ZmFolder"\r
89431 };\r
89432 ZmFolder.prototype.move=function(a){\r
89433 var t=this.name;\r
89434 var e=this.name;\r
89435 while(a.hasChild(e)){\r
89436 e=e+"_"\r
89437 }\r
89438 if(t!=e){\r
89439 this.rename(e)\r
89440 }\r
89441 ZmOrganizer.prototype.move.call(this,a)\r
89442 };\r
89443 ZmFolder.prototype.toggleSyncOffline=function(s,e){\r
89444 if(!this.isOfflineSyncable){\r
89445 return\r
89446 }\r
89447 var n=this.isOfflineSyncing?"!syncon":"syncon";\r
89448 var a=AjxSoapDoc.create("FolderActionRequest","urn:zimbraMail");\r
89449 var t=a.set("action");\r
89450 t.setAttribute("op",n);\r
89451 t.setAttribute("id",this.id);\r
89452 var o={\r
89453 soapDoc:a,asyncMode:true,callback:s,errorCallback:e};\r
89454 appCtxt.getAppController().sendRequest(o)\r
89455 };\r
89456 ZmFolder.prototype.hasFeeds=function(){\r
89457 if(this.type!=ZmOrganizer.FOLDER){\r
89458 return false\r
89459 }\r
89460 var e=this.children.getArray();\r
89461 var o=this.children.size();\r
89462 for(var t=0;\r
89463 t<o;\r
89464 t++){\r
89465 if(e[t].isFeed()){\r
89466 return true\r
89467 }\r
89468 if(e[t].children&&e[t].children.size()>0){\r
89469 return(e[t].hasFeeds&&e[t].hasFeeds())\r
89470 }}\r
89471 return false\r
89472 };\r
89473 ZmFolder.prototype.hasSearch=function(n){\r
89474 if(this.type==ZmOrganizer.SEARCH){\r
89475 return true\r
89476 }\r
89477 var e=this.children.getArray();\r
89478 var o=this.children.size();\r
89479 for(var t=0;\r
89480 t<o;\r
89481 t++){\r
89482 if(e[t].hasSearch()){\r
89483 return true\r
89484 }}\r
89485 return false\r
89486 };\r
89487 ZmFolder.prototype.supportsPublicAccess=function(){\r
89488 return false\r
89489 };\r
89490 ZmFolder.prototype.notifyCreate=function(h,t,o){\r
89491 var e=ZmOrganizer.normalizeId(h.id);\r
89492 if(e<ZmOrganizer.FIRST_USER_ID[this.type]){\r
89493 return\r
89494 }\r
89495 var r=ZmOrganizer.parseId(h.id).account;\r
89496 var n=t?"search":"folder";\r
89497 var s=ZmFolderTree.createFromJs(this,h,this.tree,n,null,r);\r
89498 var a=ZmOrganizer.getSortIndex(s,ZmFolder.sortCompare);\r
89499 this.children.add(s,a);\r
89500 if(!o){\r
89501 s._notify(ZmEvent.E_CREATE)\r
89502 }};\r
89503 ZmFolder.prototype.notifyModify=function(obj){\r
89504 var details={};\r
89505 var fields={};\r
89506 var doNotify=false;\r
89507 if(obj.name!=null&&this.name!=obj.name&&obj.id==this.id){\r
89508 details.oldPath=this.getPath();\r
89509 this.name=obj.name;\r
89510 fields[ZmOrganizer.F_NAME]=true;\r
89511 this.parent.children.sort(eval(ZmTreeView.COMPARE_FUNC[this.type]));\r
89512 doNotify=true;\r
89513 obj.name=null\r
89514 }\r
89515 if(doNotify){\r
89516 details.fields=fields;\r
89517 this._notify(ZmEvent.E_MODIFY,details)\r
89518 }\r
89519 if(obj.l!=null&&(!this.parent||(obj.l!=this.parent.id))){\r
89520 var newParent=this._getNewParent(obj.l);\r
89521 if(newParent){\r
89522 details.oldPath=this.getPath();\r
89523 this.reparent(newParent);\r
89524 this._notify(ZmEvent.E_MOVE,details);\r
89525 obj.l=null\r
89526 }}\r
89527 ZmOrganizer.prototype.notifyModify.apply(this,[obj])\r
89528 };\r
89529 ZmFolder.prototype.createQuery=function(t){\r
89530 if(!this.isRemote()&&this.isSystem()){\r
89531 var o=ZmFolder.QUERY_NAME[this.nId];\r
89532 return t?o:('in:"'+(o||this.name)+'"')\r
89533 }\r
89534 var n=this.name;\r
89535 var a=this.parent;\r
89536 while(a&&(a.nId!=ZmFolder.ID_ROOT)&&a.name.length){\r
89537 var e=a.isSystem()?ZmFolder.QUERY_NAME[a.nId]:a.name;\r
89538 n=e+"/"+n;\r
89539 a=a.parent\r
89540 }\r
89541 n='"'+n+'"';\r
89542 return t?n:("in:"+n)\r
89543 };\r
89544 ZmFolder.prototype.getName=function(s,t,n,e){\r
89545 if(this.nId==ZmFolder.ID_DRAFTS||this.nId==ZmFolder.ID_OUTBOX){\r
89546 var o=(appCtxt.isOffline&&this.account.isMain)?appCtxt.accountList.getItemCount(this.nId):this.numTotal;\r
89547 var a=(e&&this._systemName)?this._systemName:this.name;\r
89548 if(s&&o>0){\r
89549 a=[a," (",o,")"].join("");\r
89550 if(!n){\r
89551 a=["<span style='font-weight:bold'>",a,"</span>"].join("")\r
89552 }}\r
89553 return a\r
89554 }else{\r
89555 return ZmOrganizer.prototype.getName.apply(this,arguments)\r
89556 }};\r
89557 ZmFolder.prototype.getIcon=function(){\r
89558 if(this.nId==ZmOrganizer.ID_ROOT){\r
89559 return null\r
89560 }\r
89561 if(ZmFolder.ICON[this.nId]){\r
89562 return ZmFolder.ICON[this.nId]\r
89563 }\r
89564 if(this.isFeed()){\r
89565 return"RSS"\r
89566 }\r
89567 if(this.isRemote()){\r
89568 return"SharedMailFolder"\r
89569 }\r
89570 if(this.isDataSource(ZmAccount.TYPE_POP)){\r
89571 return"POPAccount"\r
89572 }\r
89573 if(this.parent&&this.parent.isDataSource(ZmAccount.TYPE_IMAP)){\r
89574 var e=ZmFolder.getIdForName(this.name);\r
89575 if(e){\r
89576 return ZmFolder.ICON[e]||"Folder"\r
89577 }}\r
89578 return"Folder"\r
89579 };\r
89580 ZmFolder.prototype.mayContain=function(s,h){\r
89581 if(!s){\r
89582 return true\r
89583 }\r
89584 if(this.isFeed()){\r
89585 return false\r
89586 }\r
89587 if(this.isSyncIssuesFolder()){\r
89588 return false\r
89589 }\r
89590 var r=h||this.type;\r
89591 var o=false;\r
89592 if(s instanceof ZmFolder){\r
89593 o=(s.parent==this||this.isChildOf(s)||this.nId==ZmFolder.ID_DRAFTS||this.nId==ZmFolder.ID_SPAM||(!this.isInTrash()&&this.hasChild(s.name))||(s.type==ZmOrganizer.FOLDER&&r==ZmOrganizer.SEARCH)||(s.type==ZmOrganizer.SEARCH&&r==ZmOrganizer.FOLDER&&this.nId==ZmOrganizer.ID_ROOT)||(s.id==this.id)||(s.disallowSubFolder)||(s.account!=this.account)||(s.isRemote()&&!this._remoteMoveOk(s)))\r
89594 }else{\r
89595 var n=(s instanceof Array)?s:[s];\r
89596 var l=n[0];\r
89597 if(this.nId==ZmOrganizer.ID_ROOT||this.nId==ZmOrganizer.ID_OUTBOX||this.nId==ZmOrganizer.ID_SYNC_FAILURES){\r
89598 o=true\r
89599 }else{\r
89600 if(r==ZmOrganizer.SEARCH){\r
89601 o=true\r
89602 }else{\r
89603 if((l.type==ZmItem.CONTACT)&&l.isGal){\r
89604 o=true\r
89605 }else{\r
89606 if((l.type==ZmItem.CONV)&&l.list&&l.list.search&&(l.list.search.folderId==this.id)){\r
89607 o=true\r
89608 }else{\r
89609 for(var t=0;\r
89610 t<n.length;\r
89611 t++){\r
89612 if(n[t].type==ZmItem.CONTACT){\r
89613 if(this.nId!=ZmFolder.ID_TRASH){\r
89614 o=true;\r
89615 break\r
89616 }else{\r
89617 if(n[t].isMyCard){\r
89618 o=true;\r
89619 break\r
89620 }}}else{\r
89621 if(n[t].isDraft&&(this.nId!=ZmFolder.ID_TRASH&&this.nId!=ZmFolder.ID_DRAFTS)){\r
89622 o=true;\r
89623 break\r
89624 }else{\r
89625 if(this.nId==ZmFolder.ID_DRAFTS&&!n[t].isDraft){\r
89626 o=true;\r
89627 break\r
89628 }}}}\r
89629 if(appCtxt.isOffline&&!o){\r
89630 if(l.account!=this.account&&this.account.type==ZmAccount.TYPE_MSE){\r
89631 o=true\r
89632 }else{\r
89633 var a=appCtxt.getCurrentSearch();\r
89634 var e=a&&appCtxt.getById(a.folderId);\r
89635 if(e&&e.nId==ZmOrganizer.ID_SYNC_FAILURES){\r
89636 o=true\r
89637 }}}\r
89638 if(!o){\r
89639 if(l.folderId){\r
89640 o=true;\r
89641 for(var t=0;\r
89642 t<n.length;\r
89643 t++){\r
89644 if(n[t].folderId!=this.id){\r
89645 o=false;\r
89646 break\r
89647 }}}}}}}}\r
89648 if(!o&&this.link){\r
89649 o=this.isReadOnly()\r
89650 }}\r
89651 return !o\r
89652 };\r
89653 ZmFolder.prototype.isSyncIssuesFolder=function(){\r
89654 return(this.name==ZmFolder.SYNC_ISSUES)\r
89655 };\r
89656 ZmFolder.prototype.isHardDelete=function(){\r
89657 return(this.isInTrash()||this.isInSpam()||(appCtxt.isOffline&&this.isUnder(ZmOrganizer.ID_SYNC_FAILURES)))\r
89658 };\r
89659 ZmFolder.prototype.isInSpam=function(){\r
89660 return this.isUnder(ZmFolder.ID_SPAM)\r
89661 };\r
89662 ZmFolder.prototype._remoteMoveOk=function(t){\r
89663 if(!this.link||!t.link||this.zid!=t.zid){\r
89664 return false\r
89665 }\r
89666 if(this.id.split(":")[0]!=t.id.split(":")[0]){\r
89667 return false\r
89668 }\r
89669 var e=this.shares&&this.shares[0];\r
89670 if(!(e&&e.isInsert())){\r
89671 return false\r
89672 }\r
89673 e=t.shares&&t.shares[0];\r
89674 return(e&&e.isDelete())\r
89675 }\r
89676 }\r
89677 if(AjxPackage.define("zimbraMail.share.model.ZmSearchFolder")){\r
89678 ZmSearchFolder=function(t){\r
89679 t.type=ZmOrganizer.SEARCH;\r
89680 ZmFolder.call(this,t);\r
89681 if(t.query){\r
89682 var e={\r
89683 query:t.query,types:t.types,sortBy:t.sortBy,searchId:t.id,accountName:(t.account&&t.account.name)};\r
89684 this.search=new ZmSearch(e)\r
89685 }};\r
89686 ZmSearchFolder.ID_ROOT=ZmOrganizer.ID_ROOT;\r
89687 ZmSearchFolder.create=function(h){\r
89688 var r=AjxSoapDoc.create("CreateSearchFolderRequest","urn:zimbraMail");\r
89689 var s=r.set("search");\r
89690 s.setAttribute("name",h.name);\r
89691 s.setAttribute("query",h.search.query);\r
89692 if(h.search.types){\r
89693 var t=h.search.types.getArray();\r
89694 if(t.length){\r
89695 var e=[];\r
89696 for(var n=0;\r
89697 n<t.length;\r
89698 n++){\r
89699 e.push(ZmSearch.TYPE[t[n]])\r
89700 }\r
89701 s.setAttribute("types",e.join(","))\r
89702 }}\r
89703 if(h.search.sortBy){\r
89704 s.setAttribute("sortBy",h.search.sortBy)\r
89705 }\r
89706 var o;\r
89707 if(h.isGlobal){\r
89708 s.setAttribute("f","g");\r
89709 o=appCtxt.accountList.mainAccount.name\r
89710 }\r
89711 s.setAttribute("l",h.parent.id);\r
89712 appCtxt.getAppController().sendRequest({\r
89713 soapDoc:r,asyncMode:true,accountName:o,errorCallback:(new AjxCallback(null,ZmOrganizer._handleErrorCreate,h))}\r
89714 )\r
89715 };\r
89716 ZmSearchFolder.prototype=new ZmFolder;\r
89717 ZmSearchFolder.prototype.constructor=ZmSearchFolder;\r
89718 ZmSearchFolder.prototype.toString=function(){\r
89719 return"ZmSearchFolder"\r
89720 };\r
89721 ZmSearchFolder.prototype.getIcon=function(){\r
89722 return(this.nId==ZmOrganizer.ID_ROOT)?null:(this.isOfflineGlobalSearch?"GlobalSearchFolder":"SearchFolder")\r
89723 };\r
89724 ZmSearchFolder.prototype.getToolTip=function(){};\r
89725 ZmSearchFolder.prototype._getNewParent=function(t){\r
89726 var e=appCtxt.getById(t);\r
89727 if(e){\r
89728 return e\r
89729 }\r
89730 return appCtxt.getById(t)\r
89731 }\r
89732 }\r
89733 if(AjxPackage.define("zimbraMail.share.model.ZmSearch")){\r
89734 ZmSearch=function(t){\r
89735 if(t){\r
89736 for(var e in t){\r
89737 this[e]=t[e]\r
89738 }\r
89739 this.galType=this.galType||ZmSearch.GAL_ACCOUNT;\r
89740 this.join=this.join||ZmSearch.JOIN_AND;\r
89741 if(this.query){\r
89742 this._parseQuery()\r
89743 }}\r
89744 this.isGalSearch=false;\r
89745 this.isCalResSearch=false;\r
89746 if(ZmSearch._mailEnabled==null){\r
89747 ZmSearch._mailEnabled=appCtxt.get(ZmSetting.MAIL_ENABLED);\r
89748 if(ZmSearch._mailEnabled){\r
89749 AjxDispatcher.require("MailCore")\r
89750 }}};\r
89751 ZmSearch.TYPE={};\r
89752 ZmSearch.TYPE_ANY="any";\r
89753 ZmSearch.GAL_ACCOUNT="account";\r
89754 ZmSearch.GAL_RESOURCE="resource";\r
89755 ZmSearch.GAL_ALL="";\r
89756 ZmSearch.JOIN_AND=1;\r
89757 ZmSearch.JOIN_OR=2;\r
89758 ZmSearch.TYPE_MAP={};\r
89759 ZmSearch.DEFAULT_LIMIT=DwtListView.DEFAULT_LIMIT;\r
89760 ZmSearch.DATE_DESC="dateDesc";\r
89761 ZmSearch.DATE_ASC="dateAsc";\r
89762 ZmSearch.SUBJ_DESC="subjDesc";\r
89763 ZmSearch.SUBJ_ASC="subjAsc";\r
89764 ZmSearch.NAME_DESC="nameDesc";\r
89765 ZmSearch.NAME_ASC="nameAsc";\r
89766 ZmSearch.SIZE_DESC="sizeDesc";\r
89767 ZmSearch.SIZE_ASC="sizeAsc";\r
89768 ZmSearch.SCORE_DESC="scoreDesc";\r
89769 ZmSearch.DURATION_DESC="durDesc";\r
89770 ZmSearch.DURATION_ASC="durAsc";\r
89771 ZmSearch.STATUS_DESC="taskStatusDesc";\r
89772 ZmSearch.STATUS_ASC="taskStatusAsc";\r
89773 ZmSearch.PCOMPLETE_DESC="taskPercCompletedDesc";\r
89774 ZmSearch.PCOMPLETE_ASC="taskPercCompletedAsc";\r
89775 ZmSearch.DUE_DATE_DESC="taskDueDesc";\r
89776 ZmSearch.DUE_DATE_ASC="taskDueAsc";\r
89777 ZmSearch.UNREAD_QUERY_RE=new RegExp("\\bis:\\s*(un)?read\\b","i");\r
89778 ZmSearch.IS_ANYWHERE_QUERY_RE=new RegExp("\\bis:\\s*anywhere\\b","i");\r
89779 ZmSearch.prototype.toString=function(){\r
89780 return"ZmSearch"\r
89781 };\r
89782 ZmSearch.prototype.execute=function(e){\r
89783 if(e.batchCmd||this.soapInfo){\r
89784 this._executeSoap(e)\r
89785 }else{\r
89786 this._executeJson(e)\r
89787 }};\r
89788 ZmSearch.prototype._executeSoap=function(s){\r
89789 this.isGalSearch=(this.contactSource&&(this.contactSource==ZmId.SEARCH_GAL));\r
89790 this.isCalResSearch=(this.conds!=null);\r
89791 if(!this.query&&!this.isCalResSearch){\r
89792 return\r
89793 }\r
89794 var p;\r
89795 if(!this.response){\r
89796 if(this.isGalSearch){\r
89797 p=AjxSoapDoc.create("SearchGalRequest","urn:zimbraAccount");\r
89798 var e=p.getMethod();\r
89799 if(this.galType){\r
89800 e.setAttribute("type",this.galType)\r
89801 }\r
89802 p.set("name",this.query)\r
89803 }else{\r
89804 if(this.isAutocompleteSearch){\r
89805 p=AjxSoapDoc.create("AutoCompleteRequest","urn:zimbraMail");\r
89806 var e=p.getMethod();\r
89807 if(this.limit){\r
89808 e.setAttribute("limit",this.limit)\r
89809 }\r
89810 p.set("name",this.query)\r
89811 }else{\r
89812 if(this.isGalAutocompleteSearch){\r
89813 p=AjxSoapDoc.create("AutoCompleteGalRequest","urn:zimbraAccount");\r
89814 var e=p.getMethod();\r
89815 e.setAttribute("limit",this._getLimit());\r
89816 if(this.galType){\r
89817 e.setAttribute("type",this.galType)\r
89818 }\r
89819 p.set("name",this.query)\r
89820 }else{\r
89821 if(this.isCalResSearch){\r
89822 p=AjxSoapDoc.create("SearchCalendarResourcesRequest","urn:zimbraAccount");\r
89823 var e=p.getMethod();\r
89824 if(this.attrs){\r
89825 e.setAttribute("attrs",this.attrs.join(","))\r
89826 }\r
89827 var l=p.set("searchFilter");\r
89828 if(this.conds&&this.conds.length){\r
89829 var h=p.set("conds",null,l);\r
89830 if(this.join==ZmSearch.JOIN_OR){\r
89831 h.setAttribute("or",1)\r
89832 }\r
89833 for(var r=0;\r
89834 r<this.conds.length;\r
89835 r++){\r
89836 var u=this.conds[r];\r
89837 var t=p.set("cond",null,h);\r
89838 t.setAttribute("attr",u.attr);\r
89839 t.setAttribute("op",u.op);\r
89840 t.setAttribute("value",u.value)\r
89841 }}}else{\r
89842 if(this.soapInfo){\r
89843 p=AjxSoapDoc.create(this.soapInfo.method,this.soapInfo.namespace);\r
89844 for(var f in this.soapInfo.additional){\r
89845 var n=p.set(f);\r
89846 var g=this.soapInfo.additional[f];\r
89847 for(var c in g){\r
89848 n.setAttribute(c,g[c])\r
89849 }}}else{\r
89850 p=AjxSoapDoc.create("SearchRequest","urn:zimbraMail")\r
89851 }\r
89852 var e=this._getStandardMethod(p);\r
89853 if(this.types){\r
89854 var m=this.types.getArray();\r
89855 if(m.length){\r
89856 var d=[];\r
89857 for(var r=0;\r
89858 r<m.length;\r
89859 r++){\r
89860 d.push(ZmSearch.TYPE[m[r]])\r
89861 }\r
89862 e.setAttribute("types",d.join(","));\r
89863 var o=appCtxt.getById(this.folderId);\r
89864 if(o&&(o.isUnder(ZmFolder.ID_SENT)||o.isUnder(ZmFolder.ID_DRAFTS)||o.isUnder(ZmFolder.ID_OUTBOX))){\r
89865 e.setAttribute("recip","1")\r
89866 }\r
89867 if(this.fetch){\r
89868 e.setAttribute("fetch",(this.fetch=="all")?"all":"1");\r
89869 if(this.getHtml){\r
89870 e.setAttribute("html","1")\r
89871 }}\r
89872 if(this.markRead){\r
89873 e.setAttribute("read","1")\r
89874 }}}}}}}}\r
89875 var y=new AjxCallback(this,this._handleResponseExecute,[s.callback]);\r
89876 if(s.batchCmd){\r
89877 s.batchCmd.addRequestParams(p,y)\r
89878 }else{\r
89879 return appCtxt.getAppController().sendRequest({\r
89880 soapDoc:p,asyncMode:true,callback:y,errorCallback:s.errorCallback,timeout:s.timeout,noBusyOverlay:s.noBusyOverlay,response:this.response}\r
89881 )\r
89882 }};\r
89883 ZmSearch.prototype._executeJson=function(y){\r
89884 this.isGalSearch=(this.contactSource&&(this.contactSource==ZmId.SEARCH_GAL));\r
89885 this.isCalResSearch=(this.conds!=null);\r
89886 if(!this.query&&!this.queryHint&&!this.isCalResSearch){\r
89887 return\r
89888 }\r
89889 var w,s,v;\r
89890 if(!this.response){\r
89891 if(this.isGalSearch){\r
89892 w={\r
89893 SearchGalRequest:{\r
89894 _jsns:"urn:zimbraAccount"}};\r
89895 s=w.SearchGalRequest;\r
89896 if(this.galType){\r
89897 s.type=this.galType\r
89898 }\r
89899 s.name=this.query;\r
89900 s.offset=this.offset=(this.offset||0);\r
89901 s.limit=this._getLimit();\r
89902 if(this.lastId){\r
89903 s.cursor={\r
89904 id:this.lastId,sortVal:(this.lastSortVal||"")}\r
89905 }\r
89906 if(this.sortBy){\r
89907 s.sortBy=this.sortBy\r
89908 }}else{\r
89909 if(this.isAutocompleteSearch){\r
89910 w={\r
89911 AutoCompleteRequest:{\r
89912 _jsns:"urn:zimbraMail"}};\r
89913 s=w.AutoCompleteRequest;\r
89914 if(this.limit){\r
89915 s.limit=this.limit\r
89916 }\r
89917 s.name={\r
89918 _content:this.query}\r
89919 }else{\r
89920 if(this.isGalAutocompleteSearch){\r
89921 w={\r
89922 AutoCompleteGalRequest:{\r
89923 _jsns:"urn:zimbraAccount"}};\r
89924 s=w.AutoCompleteGalRequest;\r
89925 s.limit=this._getLimit();\r
89926 s.name=this.query;\r
89927 if(this.galType){\r
89928 s.type=this.galType\r
89929 }}else{\r
89930 if(this.isCalResSearch){\r
89931 w={\r
89932 SearchCalendarResourcesRequest:{\r
89933 _jsns:"urn:zimbraAccount"}};\r
89934 s=w.SearchCalendarResourcesRequest;\r
89935 if(this.attrs){\r
89936 s.attrs=this.attrs.join(",")\r
89937 }\r
89938 if(this.conds&&this.conds.length){\r
89939 s.searchFilter={\r
89940 conds:{}};\r
89941 var t=s.searchFilter.conds;\r
89942 var l=t.cond=[];\r
89943 if(this.join==ZmSearch.JOIN_OR){\r
89944 t.or=1\r
89945 }\r
89946 for(var p=0;\r
89947 p<this.conds.length;\r
89948 p++){\r
89949 var g=this.conds[p];\r
89950 l.push({\r
89951 attr:g.attr,op:g.op,value:g.value}\r
89952 )\r
89953 }}}else{\r
89954 if(this.soapInfo){\r
89955 v=AjxSoapDoc.create(this.soapInfo.method,this.soapInfo.namespace);\r
89956 for(var e in this.soapInfo.additional){\r
89957 var f=v.set(e);\r
89958 var u=this.soapInfo.additional[e];\r
89959 for(var m in u){\r
89960 f.setAttribute(m,u[m])\r
89961 }}}else{\r
89962 w={\r
89963 SearchRequest:{\r
89964 _jsns:"urn:zimbraMail"}};\r
89965 s=w.SearchRequest\r
89966 }\r
89967 this._getStandardMethodJson(s);\r
89968 if(this.types){\r
89969 var b=this.types.getArray();\r
89970 if(b.length){\r
89971 var d=[];\r
89972 for(var p=0;\r
89973 p<b.length;\r
89974 p++){\r
89975 d.push(ZmSearch.TYPE[b[p]])\r
89976 }\r
89977 s.types=d.join(",");\r
89978 var h=appCtxt.getById(this.folderId);\r
89979 if(h&&(h.isUnder(ZmFolder.ID_SENT)||h.isUnder(ZmFolder.ID_DRAFTS)||h.isUnder(ZmFolder.ID_OUTBOX))){\r
89980 s.recip=1\r
89981 }\r
89982 if(this.fetch){\r
89983 s.fetch=(this.fetch=="all")?"all":1;\r
89984 if(this.getHtml){\r
89985 s.html=1\r
89986 }}\r
89987 if(this.markRead){\r
89988 s.read=1\r
89989 }\r
89990 if(this.headers){\r
89991 for(var o in this.headers){\r
89992 if(!s.header){\r
89993 s.header=[]\r
89994 }\r
89995 s.header.push({\r
89996 n:o}\r
89997 )\r
89998 }}\r
89999 if(b.length==1&&b[0]==ZmItem.TASK&&this.allowableTaskStatus){\r
90000 s.allowableTaskStatus=this.allowableTaskStatus\r
90001 }}}}}}}}\r
90002 var n=new AjxCallback(this,this._handleResponseExecute,[y.callback]);\r
90003 if(y.batchCmd){\r
90004 y.batchCmd.addRequestParams(v,n)\r
90005 }else{\r
90006 var r={\r
90007 jsonObj:w,soapDoc:v,asyncMode:true,callback:n,errorCallback:y.errorCallback,timeout:y.timeout,noBusyOverlay:y.noBusyOverlay,response:this.response,accountName:this.accountName};\r
90008 return appCtxt.getAppController().sendRequest(r)\r
90009 }};\r
90010 ZmSearch.prototype._handleResponseExecute=function(o,t){\r
90011 var a=t.getResponse();\r
90012 if(this.isGalSearch){\r
90013 a=a.SearchGalResponse\r
90014 }else{\r
90015 if(this.isCalResSearch){\r
90016 a=a.SearchCalendarResourcesResponse\r
90017 }else{\r
90018 if(this.isAutocompleteSearch){\r
90019 a=a.AutoCompleteResponse\r
90020 }else{\r
90021 if(this.isGalAutocompleteSearch){\r
90022 a=a.AutoCompleteGalResponse\r
90023 }else{\r
90024 if(this.soapInfo){\r
90025 a=a[this.soapInfo.response]\r
90026 }else{\r
90027 a=a.SearchResponse\r
90028 }}}}}\r
90029 var e=new ZmSearchResult(this);\r
90030 e.set(a);\r
90031 t.set(e);\r
90032 if(o){\r
90033 o.run(t)\r
90034 }};\r
90035 ZmSearch.prototype.getConv=function(a){\r
90036 if((!this.query&&!this.queryHint)||!a.cid){\r
90037 return\r
90038 }\r
90039 var n={\r
90040 SearchConvRequest:{\r
90041 _jsns:"urn:zimbraMail"}};\r
90042 var e=n.SearchConvRequest;\r
90043 this._getStandardMethodJson(e);\r
90044 e.cid=a.cid;\r
90045 if(a.fetchId){\r
90046 e.fetch=a.fetchId;\r
90047 if(a.markRead){\r
90048 e.read=1\r
90049 }\r
90050 if(this.getHtml){\r
90051 e.html=1\r
90052 }\r
90053 if(ZmMailMsg.requestHeaders){\r
90054 for(var o in ZmMailMsg.requestHeaders){\r
90055 if(!e.header){\r
90056 e.header=[]\r
90057 }\r
90058 e.header.push({\r
90059 n:o}\r
90060 )\r
90061 }}}\r
90062 if(!a.noTruncate){\r
90063 e.max=appCtxt.get(ZmSetting.MAX_MESSAGE_SIZE)\r
90064 }\r
90065 var t={\r
90066 jsonObj:n,asyncMode:true,callback:(new AjxCallback(this,this._handleResponseGetConv,a.callback)),accountName:this.accountName};\r
90067 appCtxt.getAppController().sendRequest(t)\r
90068 };\r
90069 ZmSearch.prototype._handleResponseGetConv=function(o,t){\r
90070 var a=t.getResponse().SearchConvResponse;\r
90071 var e=new ZmSearchResult(this);\r
90072 e.set(a,null,true);\r
90073 t.set(e);\r
90074 if(o){\r
90075 o.run(t)\r
90076 }};\r
90077 ZmSearch.prototype.getTitle=function(){\r
90078 var e;\r
90079 if(this.folderId){\r
90080 var a=ZmOrganizer.getSystemId(this.folderId);\r
90081 var t=appCtxt.getById(a);\r
90082 if(t){\r
90083 e=t.getName(true,ZmOrganizer.MAX_DISPLAY_NAME_LENGTH,true)\r
90084 }}else{\r
90085 if(this.tagId){\r
90086 e=appCtxt.getById(this.tagId).getName(true,ZmOrganizer.MAX_DISPLAY_NAME_LENGTH,true)\r
90087 }}\r
90088 return e?([ZmMsg.zimbraTitle,e].join(": ")):([ZmMsg.zimbraTitle,ZmMsg.searchResults].join(": "))\r
90089 };\r
90090 ZmSearch.prototype._getStandardMethod=function(t){\r
90091 var s=t.getMethod();\r
90092 if(this.sortBy){\r
90093 s.setAttribute("sortBy",this.sortBy)\r
90094 }\r
90095 if(ZmSearch._mailEnabled){\r
90096 var e;\r
90097 for(var n in ZmMailMsg.requestHeaders){\r
90098 e=t.set("header",null,null);\r
90099 e.setAttribute("n",n)\r
90100 }}\r
90101 ZmTimezone.set(t,AjxTimezone.DEFAULT,null);\r
90102 t.set("locale",appCtxt.get(ZmSetting.LOCALE_NAME),null);\r
90103 if(this.lastId!=null&&this.lastSortVal){\r
90104 var o=t.set("cursor");\r
90105 o.setAttribute("id",this.lastId);\r
90106 o.setAttribute("sortVal",this.lastSortVal);\r
90107 if(this.endSortVal){\r
90108 o.setAttribute("endSortVal",this.endSortVal)\r
90109 }}\r
90110 this.offset=this.offset||0;\r
90111 s.setAttribute("offset",this.offset);\r
90112 s.setAttribute("limit",this._getLimit());\r
90113 var a=(this.queryHint)?([this.query," (",this.queryHint,")"].join("")):this.query;\r
90114 t.set("query",a);\r
90115 if(this.field){\r
90116 s.setAttribute("field",this.field)\r
90117 }\r
90118 return s\r
90119 };\r
90120 ZmSearch.prototype._getStandardMethodJson=function(t){\r
90121 if(this.sortBy){\r
90122 t.sortBy=this.sortBy\r
90123 }\r
90124 if(ZmSearch._mailEnabled){\r
90125 var e=ZmMailMsg.requestHeaders;\r
90126 if(e&&e.length){\r
90127 t.header=[];\r
90128 for(var a in e){\r
90129 t.header.push({\r
90130 n:a}\r
90131 )\r
90132 }}}\r
90133 ZmTimezone.set(t,AjxTimezone.DEFAULT);\r
90134 t.locale={\r
90135 _content:AjxEnv.DEFAULT_LOCALE};\r
90136 if(this.lastId!=null&&this.lastSortVal){\r
90137 t.cursor={\r
90138 id:this.lastId,sortVal:this.lastSortVal};\r
90139 if(this.endSortVal){\r
90140 t.cursor.endSortVal=this.endSortVal\r
90141 }}\r
90142 t.offset=this.offset=this.offset||0;\r
90143 t.limit=this._getLimit();\r
90144 t.query=(this.queryHint)?([this.query," (",this.queryHint,")"].join("")):this.query;\r
90145 if(this.field){\r
90146 t.field=this.field\r
90147 }};\r
90148 ZmSearch.prototype._getLimit=function(){\r
90149 if(this.limit){\r
90150 return this.limit\r
90151 }\r
90152 var e;\r
90153 if(this.isGalAutocompleteSearch){\r
90154 e=appCtxt.get(ZmSetting.AUTOCOMPLETE_LIMIT)\r
90155 }else{\r
90156 var t=this.types&&this.types.get(0);\r
90157 var a=appCtxt.getApp(ZmItem.APP[t]);\r
90158 if(a&&a.getLimit){\r
90159 e=a.getLimit(this.offset)\r
90160 }else{\r
90161 e=appCtxt.get(ZmSetting.PAGE_SIZE)||ZmSearch.DEFAULT_LIMIT\r
90162 }}\r
90163 this.limit=e;\r
90164 return e\r
90165 };\r
90166 ZmSearch.IS_OP={\r
90167 "in":true,inid:true,is:true,tag:true};\r
90168 ZmSearch.COND={\r
90169 and:" && ",or:" || ",not:" !"};\r
90170 ZmSearch.EOW={\r
90171 " ":true,":":true,"(":true,")":true};\r
90172 ZmSearch.FLAG={};\r
90173 ZmSearch.FLAG.unread="item.isUnread";\r
90174 ZmSearch.FLAG.read="!item.isUnread";\r
90175 ZmSearch.FLAG.flagged="item.isFlagged";\r
90176 ZmSearch.FLAG.unflagged="!item.isFlagged";\r
90177 ZmSearch.FLAG.forwarded="item.isForwarded";\r
90178 ZmSearch.FLAG.unforwarded="!item.isForwarded";\r
90179 ZmSearch.FLAG.sent="item.isSent";\r
90180 ZmSearch.FLAG.replied="item.isReplied";\r
90181 ZmSearch.FLAG.unreplied="!item.isReplied";\r
90182 ZmSearch.prototype._parseQuery=function(){\r
90183 this.hasUnreadTerm=ZmSearch.UNREAD_QUERY_RE.test(this.query);\r
90184 this.isAnywhere=ZmSearch.IS_ANYWHERE_QUERY_RE.test(this.query);\r
90185 function l(t,x){\r
90186 while(x<t.length&&t.charAt(x)==" "){\r
90187 x++\r
90188 }\r
90189 return x\r
90190 }\r
90191 function n(T,O){\r
90192 var z=T.charAt(O);\r
90193 O++;\r
90194 var t=false,j,x="";\r
90195 while(O<T.length&&!t){\r
90196 j=T.charAt(O);\r
90197 if(j==z){\r
90198 t=true\r
90199 }else{\r
90200 x+=j;\r
90201 O++\r
90202 }}\r
90203 return t?{\r
90204 str:x,pos:O+1}\r
90205 :null\r
90206 }\r
90207 var a=this.query;\r
90208 var b=this.query.length;\r
90209 var m=[],d,c,w="",r=false,e=false;\r
90210 var s=l(a,0);\r
90211 while(s<b&&!r){\r
90212 d=a.charAt(s);\r
90213 e=ZmSearch.EOW[d];\r
90214 if(d==":"){\r
90215 if(ZmSearch.IS_OP[w]){\r
90216 c=w;\r
90217 w="";\r
90218 s=l(a,s+1);\r
90219 continue\r
90220 }else{\r
90221 r=true\r
90222 }}\r
90223 if(e){\r
90224 if(c&&w){\r
90225 m.push({\r
90226 isTerm:true,op:c,arg:w}\r
90227 );\r
90228 c=w=""\r
90229 }else{\r
90230 if(!c){\r
90231 if(ZmSearch.COND[w.toLowerCase()]){\r
90232 m.push(ZmSearch.COND[w.toLowerCase()]);\r
90233 w=""\r
90234 }else{\r
90235 if(w){\r
90236 r=true\r
90237 }}}}}\r
90238 if(d=="'"||d=='"'){\r
90239 var g=n(a,s);\r
90240 if(g){\r
90241 w=g.str;\r
90242 s=g.pos\r
90243 }else{\r
90244 r=true\r
90245 }}else{\r
90246 if(d=="("||d==")"){\r
90247 m.push(d);\r
90248 s=l(a,s+1)\r
90249 }else{\r
90250 if(d=="-"&&!w){\r
90251 m.push("not");\r
90252 s=l(a,s+1)\r
90253 }else{\r
90254 if(d!=" "){\r
90255 w+=d\r
90256 }\r
90257 s++\r
90258 }}}}\r
90259 if(r){\r
90260 return\r
90261 }\r
90262 if((s==a.length)&&c&&w){\r
90263 m.push({\r
90264 isTerm:true,op:c,arg:w}\r
90265 )\r
90266 }else{\r
90267 return\r
90268 }\r
90269 var h=0,f;\r
90270 var o=["return Boolean("];\r
90271 for(var y=0,b=m.length;\r
90272 y<b;\r
90273 y++){\r
90274 var u=m[y];\r
90275 if(u.isTerm){\r
90276 if(u.op=="in"||u.op=="inid"){\r
90277 f=(u.op=="in")?this._getFolderId(u.arg):u.arg;\r
90278 if(!f){\r
90279 return\r
90280 }\r
90281 o.push("((item.type == ZmItem.CONV) ? item.folders && item.folders['"+f+"'] : item.folderId == '"+f+"')")\r
90282 }else{\r
90283 if(u.op=="tag"){\r
90284 f=this._getTagId(u.arg);\r
90285 if(!f){\r
90286 return\r
90287 }\r
90288 o.push("item.hasTag('"+f+"')")\r
90289 }else{\r
90290 if(u.op=="is"){\r
90291 var k=ZmSearch.FLAG[u.arg];\r
90292 if(!k){\r
90293 return\r
90294 }\r
90295 o.push(k)\r
90296 }}}\r
90297 h++;\r
90298 var p=m[y+1];\r
90299 if(p&&(p.isTerm||p==ZmSearch.COND.not||p=="(")){\r
90300 o.push(ZmSearch.COND.and)\r
90301 }}else{\r
90302 o.push(u)\r
90303 }}\r
90304 o.push(")");\r
90305 try{\r
90306 this.matches=new Function("item",o.join(""))\r
90307 }\r
90308 catch(v){}\r
90309 if(h==1){\r
90310 var u=m[0];\r
90311 if(u.op=="in"||u.op=="inid"){\r
90312 this.folderId=f\r
90313 }else{\r
90314 if(u.op=="tag"){\r
90315 this.tagId=f\r
90316 }}}};\r
90317 ZmSearch.prototype._getFolderId=function(r){\r
90318 var e=ZmFolder.QUERY_ID[r];\r
90319 var t=this.accountName;\r
90320 if(!t){\r
90321 var s=appCtxt.getActiveAccount();\r
90322 t=s?s.name:appCtxt.accountList.mainAccount\r
90323 }\r
90324 if(!e){\r
90325 var n=t&&appCtxt.accountList.getAccountByName(t);\r
90326 var a=appCtxt.getFolderTree(n);\r
90327 var o=a?a.getByPath(r,true):null;\r
90328 if(o){\r
90329 e=o.id\r
90330 }}\r
90331 if(t){\r
90332 e=ZmOrganizer.getSystemId(e,appCtxt.accountList.getAccountByName(t))\r
90333 }\r
90334 return e\r
90335 };\r
90336 ZmSearch.prototype._getTagId=function(a){\r
90337 var t=appCtxt.getTagTree();\r
90338 if(t){\r
90339 var e=t.getByName(a.toLowerCase());\r
90340 if(e){\r
90341 return e.id\r
90342 }}};\r
90343 ZmSearch.prototype.hasFolderTerm=function(t){\r
90344 if(!t){\r
90345 return false\r
90346 }\r
90347 var e=new RegExp('\\s*in:\\s*"?('+AjxStringUtil.regExEscape(t)+')"?\\s*',"i");\r
90348 var a=new RegExp('(-|not)\\s*in:\\s*"?('+AjxStringUtil.regExEscape(t)+')"?\\s*',"i");\r
90349 return(e.test(this.query)&&!a.test(this.query))\r
90350 };\r
90351 ZmSearch.prototype.replaceFolderTerm=function(a,e){\r
90352 if(!(a&&e)){\r
90353 return\r
90354 }\r
90355 var t=new RegExp('(\\s*in:\\s*"?)('+AjxStringUtil.regExEscape(a)+')("?\\s*)',"gi");\r
90356 this.query=this.query.replace(t,"$1"+e+"$3")\r
90357 };\r
90358 ZmSearch.prototype.hasTagTerm=function(e){\r
90359 if(!e){\r
90360 return false\r
90361 }\r
90362 var t=new RegExp('\\s*tag:\\s*"?('+AjxStringUtil.regExEscape(e)+')"?\\s*',"i");\r
90363 var a=new RegExp('(-|not)\\s*tag:\\s*"?('+AjxStringUtil.regExEscape(e)+')"?\\s*',"i");\r
90364 return(t.test(this.query)&&!a.test(this.query))\r
90365 };\r
90366 ZmSearch.prototype.replaceTagTerm=function(t,e){\r
90367 if(!(t&&e)){\r
90368 return\r
90369 }\r
90370 var a=new RegExp('(\\s*tag:\\s*"?)('+AjxStringUtil.regExEscape(t)+')("?\\s*)',"gi");\r
90371 this.query=this.query.replace(a,"$1"+e+"$3")\r
90372 }\r
90373 }\r
90374 if(AjxPackage.define("zimbraMail.share.model.ZmSearchResult")){\r
90375 ZmSearchResult=function(e){\r
90376 if(!e){\r
90377 return\r
90378 }\r
90379 this._results={};\r
90380 this.search=e\r
90381 };\r
90382 ZmSearchResult.prototype.toString=function(){\r
90383 return"ZmSearchResult"\r
90384 };\r
90385 ZmSearchResult.prototype.dtor=function(){\r
90386 for(var e in this._results){\r
90387 if(this._results[e].clear){\r
90388 this._results[e].clear();\r
90389 this._results[e]=null\r
90390 }}\r
90391 this._results=null\r
90392 };\r
90393 ZmSearchResult.prototype.getResults=function(n){\r
90394 n=n||this.type;\r
90395 if(!this._results){\r
90396 return ZmItem.RESULTS_LIST[n](this.search)\r
90397 }\r
90398 if(n==ZmItem.MIXED){\r
90399 var s=new ZmMailList(ZmItem.MIXED,this.search);\r
90400 for(var n in this._results){\r
90401 var o=this._results[n];\r
90402 if(o&&o.size()){\r
90403 var e=o.getArray();\r
90404 for(var t=0;\r
90405 t<e.length;\r
90406 t++){\r
90407 s.add(e[t])\r
90408 }}}\r
90409 return s\r
90410 }else{\r
90411 return this._results[n]?this._results[n]:ZmItem.RESULTS_LIST[n](this.search)\r
90412 }};\r
90413 ZmSearchResult.prototype.getAttribute=function(e){\r
90414 return this._respEl?this._respEl[e]:null\r
90415 };\r
90416 ZmSearchResult.prototype.set=function(u){\r
90417 if(!this.search){\r
90418 return\r
90419 }\r
90420 this._respEl=u;\r
90421 if(this.search.isAutocompleteSearch){\r
90422 return\r
90423 }\r
90424 var m={};\r
90425 var l=0;\r
90426 var r,o;\r
90427 var f=this.search.isGalSearch;\r
90428 var h=new Date();\r
90429 var s=0;\r
90430 if(f||this.search.isCalResSearch){\r
90431 r=o=f?ZmItem.CONTACT:ZmItem.RESOURCE;\r
90432 var a=f?u.cn:u.calresource;\r
90433 if(a){\r
90434 if(!this._results[r]){\r
90435 this._results[r]=ZmItem.RESULTS_LIST[r](this.search)\r
90436 }\r
90437 for(var e=0;\r
90438 e<a.length;\r
90439 e++){\r
90440 this._results[r].addFromDom(a[e])\r
90441 }\r
90442 if(f){\r
90443 this._results[r].getArray().sort(ZmSearchResult._sortGalResults)\r
90444 }\r
90445 s=a.length\r
90446 }}else{\r
90447 var n=this.search.types.getArray();\r
90448 o=n[0];\r
90449 for(var t=0;\r
90450 t<n.length;\r
90451 t++){\r
90452 var c=n[t];\r
90453 var a=u[ZmList.NODE[c]];\r
90454 if(!a&&(c=="MSG")){\r
90455 a=u.chat\r
90456 }\r
90457 if(a&&a.length){\r
90458 s+=a.length;\r
90459 if(!this._results[c]){\r
90460 this._results[c]=ZmItem.RESULTS_LIST[c](this.search)\r
90461 }\r
90462 for(var e=0;\r
90463 e<a.length;\r
90464 e++){\r
90465 var p=a[e];\r
90466 p._type=c;\r
90467 this._results[c].addFromDom(p)\r
90468 }\r
90469 if(!m[c]){\r
90470 m[c]=true;\r
90471 l++;\r
90472 r=c\r
90473 }}}}\r
90474 if(!s){\r
90475 this._results[o]=ZmItem.RESULTS_LIST[o](this.search)\r
90476 }\r
90477 if((f||this.search.isGalAutocompleteSearch)&&this._results[ZmItem.CONTACT]){\r
90478 this._results[ZmItem.CONTACT].setIsGal(true)\r
90479 }\r
90480 if(this.search.isGalAutocompleteSearch){\r
90481 this.isTokenized=(this._respEl.tokenizeKey!=null)\r
90482 }\r
90483 var d=new Date();\r
90484 if(l<=1){\r
90485 this.type=r\r
90486 }else{\r
90487 if(l==2&&(m[ZmItem.PAGE]||m[ZmItem.DOCUMENT])){\r
90488 this.type=ZmItem.PAGE\r
90489 }else{\r
90490 this.type=appCtxt.get(ZmSetting.MIXED_VIEW_ENABLED)?ZmItem.MIXED:r\r
90491 }}\r
90492 return this.type\r
90493 };\r
90494 ZmSearchResult._sortGalResults=function(t,e){\r
90495 var o=t.getFileAs().toLowerCase();\r
90496 var n=e.getFileAs().toLowerCase();\r
90497 return o<n?-1:(o>n?1:0)\r
90498 }\r
90499 }\r
90500 if(AjxPackage.define("zimbraMail.share.model.ZmTag")){\r
90501 ZmTag=function(t){\r
90502 t.type=ZmOrganizer.TAG;\r
90503 var e=String(t.rgb).toUpperCase();\r
90504 if(t.color==9&&e!="#FF8000"){\r
90505 t.color=ZmTag.__OLD_COLORS[e]||ZmOrganizer.DEFAULT_COLOR[t.type]\r
90506 }\r
90507 ZmOrganizer.call(this,t)\r
90508 };\r
90509 ZmTag.prototype=new ZmOrganizer;\r
90510 ZmTag.prototype.constructor=ZmTag;\r
90511 ZmTag.prototype.toString=function(){\r
90512 return"ZmTag"\r
90513 };\r
90514 ZmTag.COLOR_ICON=new Object();\r
90515 ZmTag.COLOR_ICON[ZmOrganizer.C_ORANGE]="TagOrange";\r
90516 ZmTag.COLOR_ICON[ZmOrganizer.C_BLUE]="TagBlue";\r
90517 ZmTag.COLOR_ICON[ZmOrganizer.C_CYAN]="TagCyan";\r
90518 ZmTag.COLOR_ICON[ZmOrganizer.C_GREEN]="TagGreen";\r
90519 ZmTag.COLOR_ICON[ZmOrganizer.C_PURPLE]="TagPurple";\r
90520 ZmTag.COLOR_ICON[ZmOrganizer.C_RED]="TagRed";\r
90521 ZmTag.COLOR_ICON[ZmOrganizer.C_YELLOW]="TagYellow";\r
90522 ZmTag.ID_ROOT=ZmOrganizer.ID_ROOT;\r
90523 ZmTag.ID_UNREAD=32;\r
90524 ZmTag.ID_FLAGGED=33;\r
90525 ZmTag.ID_FROM_ME=34;\r
90526 ZmTag.ID_REPLIED=35;\r
90527 ZmTag.ID_FORWARDED=36;\r
90528 ZmTag.ID_ATTACHED=37;\r
90529 ZmTag.__OLD_COLORS={\r
90530 "#000000":0,"#0000FF":1,"#008284":2,"#008200":3,"#840084":4,"#FF0000":5,"#848200":6,"#FF0084":7,"#848284":8,"#FF8000":9};\r
90531 ZmTag.createFromJs=function(r,a,h,s,n){\r
90532 var e=ZmOrganizer.normalizeId(a.id);\r
90533 if(e<ZmOrganizer.FIRST_USER_ID[ZmOrganizer.TAG]){\r
90534 return\r
90535 }\r
90536 var t={\r
90537 id:a.id,name:a.name,color:ZmTag.checkColor(a.color),rgb:a.rgb,parent:r,tree:h,numUnread:a.u,account:n};\r
90538 var l=new ZmTag(t);\r
90539 var o=s?ZmOrganizer.getSortIndex(l,ZmTag.sortCompare):null;\r
90540 r.children.add(l,o);\r
90541 return l\r
90542 };\r
90543 ZmTag.sortCompare=function(a,t){\r
90544 var e=ZmOrganizer.checkSortArgs(a,t);\r
90545 if(e!=null){\r
90546 return e\r
90547 }\r
90548 if(a.name.toLowerCase()>t.name.toLowerCase()){\r
90549 return 1\r
90550 }\r
90551 if(a.name.toLowerCase()<t.name.toLowerCase()){\r
90552 return -1\r
90553 }\r
90554 return 0\r
90555 };\r
90556 ZmTag.checkName=function(e){\r
90557 var t=ZmOrganizer.checkName(e);\r
90558 if(t){\r
90559 return t\r
90560 }\r
90561 if(e.indexOf("\\")==0){\r
90562 return AjxMessageFormat.format(ZmMsg.errorInvalidName,AjxStringUtil.htmlEncode(e))\r
90563 }\r
90564 return null\r
90565 };\r
90566 ZmTag.checkColor=function(e){\r
90567 e=Number(e);\r
90568 return((e!=null)&&(e>=0&&e<=ZmOrganizer.MAX_COLOR))?e:ZmOrganizer.DEFAULT_COLOR[ZmOrganizer.TAG]\r
90569 };\r
90570 ZmTag.create=function(n){\r
90571 var a=AjxSoapDoc.create("CreateTagRequest","urn:zimbraMail");\r
90572 var o=a.set("tag");\r
90573 o.setAttribute("name",n.name);\r
90574 var t=ZmOrganizer.checkColor(n.color);\r
90575 if(t&&(t!=ZmOrganizer.DEFAULT_COLOR[ZmOrganizer.TAG])){\r
90576 o.setAttribute("color",t)\r
90577 }\r
90578 var e=new AjxCallback(null,ZmTag._handleErrorCreate,n);\r
90579 appCtxt.getAppController().sendRequest({\r
90580 soapDoc:a,asyncMode:true,errorCallback:e,accountName:n.accountName}\r
90581 )\r
90582 };\r
90583 ZmTag._handleErrorCreate=function(o,t){\r
90584 if(t.code==ZmCsfeException.MAIL_INVALID_NAME){\r
90585 var a=AjxMessageFormat.format(ZmMsg.errorInvalidName,AjxStringUtil.htmlEncode(o.name));\r
90586 var e=appCtxt.getMsgDialog();\r
90587 e.setMessage(a,DwtMessageDialog.CRITICAL_STYLE);\r
90588 e.popup();\r
90589 return true\r
90590 }\r
90591 return false\r
90592 };\r
90593 ZmTag.prototype.getIcon=function(){\r
90594 return(this.id==ZmOrganizer.ID_ROOT)?null:ZmTag.COLOR_ICON[this.color]\r
90595 };\r
90596 ZmTag.prototype.createQuery=function(){\r
90597 return['tag:"',this.name,'"'].join("")\r
90598 };\r
90599 ZmTag.prototype.getToolTip=function(){};\r
90600 ZmTag.prototype.notifyCreate=function(e){\r
90601 var t=ZmTag.createFromJs(this,e,this.tree,true);\r
90602 t._notify(ZmEvent.E_CREATE)\r
90603 };\r
90604 ZmTag.prototype.supportsSharing=function(){\r
90605 return false\r
90606 }\r
90607 }\r
90608 if(AjxPackage.define("zimbraMail.share.model.ZmTree")){\r
90609 ZmTree=function(e){\r
90610 if(arguments.length==0){\r
90611 return\r
90612 }\r
90613 ZmModel.call(this,e);\r
90614 this.type=e;\r
90615 this.root=null\r
90616 };\r
90617 ZmTree.prototype=new ZmModel;\r
90618 ZmTree.prototype.constructor=ZmTree;\r
90619 ZmTree.prototype.toString=function(){\r
90620 return"ZmTree"\r
90621 };\r
90622 ZmTree.prototype.asString=function(){\r
90623 return this.root?this._asString(this.root,""):""\r
90624 };\r
90625 ZmTree.prototype.getById=function(e){\r
90626 return this.root?this.root.getById(e):null\r
90627 };\r
90628 ZmTree.prototype.getByName=function(e){\r
90629 return this.root?this.root.getByName(e):null\r
90630 };\r
90631 ZmTree.prototype.getByType=function(e){\r
90632 return this.root?this.root.getByType(e):null\r
90633 };\r
90634 ZmTree.prototype.size=function(){\r
90635 return this.root?this.root.size():0\r
90636 };\r
90637 ZmTree.prototype.reset=function(){\r
90638 this.root=null\r
90639 };\r
90640 ZmTree.prototype.asList=function(e){\r
90641 var t=[];\r
90642 return this.root?this._addToList(this.root,t,e):t\r
90643 };\r
90644 ZmTree.prototype.getUnreadHash=function(e){\r
90645 if(!e){\r
90646 e={}\r
90647 }\r
90648 return this.root?this._getUnreadHash(this.root,e):e\r
90649 };\r
90650 ZmTree.prototype._addToList=function(e,r,t){\r
90651 var s=t&&t.includeRemote;\r
90652 var h=t&&t.remoteOnly;\r
90653 var n=e.isRemote();\r
90654 if((!n&&!h)||(n&&(h||s))){\r
90655 r.push(e)\r
90656 }\r
90657 var o=e.children.getArray();\r
90658 for(var a=0;\r
90659 a<o.length;\r
90660 a++){\r
90661 this._addToList(o[a],r,t)\r
90662 }\r
90663 return r\r
90664 };\r
90665 ZmTree.prototype._asString=function(e,o){\r
90666 if(e.id){\r
90667 o=o+e.id\r
90668 }\r
90669 var a=e.children.clone().getArray();\r
90670 if(a.length){\r
90671 a.sort(function(s,n){\r
90672 return s.id-n.id\r
90673 }\r
90674 );\r
90675 o=o+"[";\r
90676 for(var t=0;\r
90677 t<a.length;\r
90678 t++){\r
90679 if(a[t].id==ZmFolder.ID_TAGS){\r
90680 continue\r
90681 }\r
90682 if(t>0){\r
90683 o=o+","\r
90684 }\r
90685 o=this._asString(a[t],o)\r
90686 }\r
90687 o=o+"]"\r
90688 }\r
90689 return o\r
90690 };\r
90691 ZmTree.prototype._getUnreadHash=function(e,t){\r
90692 t[e.id]=e.numUnread;\r
90693 var o=e.children.getArray();\r
90694 for(var a=0;\r
90695 a<o.length;\r
90696 a++){\r
90697 this._getUnreadHash(o[a],t)\r
90698 }\r
90699 return t\r
90700 }\r
90701 }\r
90702 if(AjxPackage.define("zimbraMail.share.model.ZmTagTree")){\r
90703 ZmTagTree=function(e){\r
90704 ZmTree.call(this,ZmOrganizer.TAG);\r
90705 var t=(e)?([e.id,ZmTag.ID_ROOT].join(":")):ZmTag.ID_ROOT;\r
90706 this.root=new ZmTag({\r
90707 id:t,tree:this}\r
90708 )\r
90709 };\r
90710 ZmTagTree.prototype=new ZmTree;\r
90711 ZmTagTree.prototype.constructor=ZmTagTree;\r
90712 ZmTagTree.COLOR_LIST=[ZmOrganizer.C_CYAN,ZmOrganizer.C_BLUE,ZmOrganizer.C_PURPLE,ZmOrganizer.C_RED,ZmOrganizer.C_ORANGE,ZmOrganizer.C_YELLOW,ZmOrganizer.C_GREEN];\r
90713 ZmTagTree.prototype.toString=function(){\r
90714 return"ZmTagTree"\r
90715 };\r
90716 ZmTagTree.prototype.loadFromJs=function(a,o,n){\r
90717 if(!a||!a.tag||!a.tag.length){\r
90718 return\r
90719 }\r
90720 for(var t=0;\r
90721 t<a.tag.length;\r
90722 t++){\r
90723 ZmTag.createFromJs(this.root,a.tag[t],this,null,n)\r
90724 }\r
90725 var e=this.root.children.getArray();\r
90726 if(e.length){\r
90727 e.sort(ZmTag.sortCompare)\r
90728 }};\r
90729 ZmTagTree.prototype.getByIndex=function(e){\r
90730 var t=this.asList();\r
90731 if(t&&t.length&&(e<t.length)){\r
90732 return t[e]\r
90733 }};\r
90734 ZmTagTree.prototype.reset=function(){\r
90735 this.root=new ZmTag({\r
90736 id:ZmTag.ID_ROOT,tree:this}\r
90737 )\r
90738 }\r
90739 }\r
90740 if(AjxPackage.define("zimbraMail.share.model.ZmFolderTree")){\r
90741 ZmFolderTree=function(e){\r
90742 ZmTree.call(this,e)\r
90743 };\r
90744 ZmFolderTree.prototype=new ZmTree;\r
90745 ZmFolderTree.prototype.constructor=ZmFolderTree;\r
90746 ZmFolderTree.IS_PARSED={};\r
90747 ZmFolderTree.prototype.toString=function(){\r
90748 return"ZmFolderTree"\r
90749 };\r
90750 ZmFolderTree.prototype.loadFromJs=function(a,e,t){\r
90751 this.root=(e=="zimlet")?ZmZimlet.createFromJs(null,a,this):ZmFolderTree.createFromJs(null,a,this,e,null,t)\r
90752 };\r
90753 ZmFolderTree.createFromJs=function(m,r,y,c,g,h){\r
90754 if(!(r&&r.id)){\r
90755 return\r
90756 }\r
90757 var a;\r
90758 if(c=="search"){\r
90759 var l;\r
90760 if(r.types){\r
90761 var f=r.types.split(",");\r
90762 l=[];\r
90763 for(var s=0;\r
90764 s<f.length;\r
90765 s++){\r
90766 l.push(ZmSearch.TYPE_MAP[f[s]])\r
90767 }}\r
90768 var n={\r
90769 id:r.id,name:r.name,parent:m,tree:y,numUnread:r.u,query:r.query,types:l,sortBy:r.sortBy,account:h};\r
90770 a=new ZmSearchFolder(n);\r
90771 ZmFolderTree._fillInFolder(a,r,g);\r
90772 ZmFolderTree._traverse(a,r,y,(g||[]),c,h)\r
90773 }else{\r
90774 var u=r.view?(ZmOrganizer.TYPE[r.view]):(m?m.type:ZmOrganizer.FOLDER);\r
90775 if(!u){\r
90776 return\r
90777 }\r
90778 var p=(r.acl&&r.acl.grant&&r.acl.grant.length>0);\r
90779 if(appCtxt.inStartup&&ZmOrganizer.DEFERRABLE[u]&&!appCtxt.isOffline&&!p){\r
90780 var o=appCtxt.getApp(ZmOrganizer.APP[u]);\r
90781 var e={\r
90782 type:u,parent:m,obj:r,tree:y,path:g,elementType:c,account:h};\r
90783 o.addDeferredFolder(e)\r
90784 }else{\r
90785 var d=ZmOrganizer.ORG_PACKAGE[u];\r
90786 if(d){\r
90787 AjxDispatcher.require(d)\r
90788 }\r
90789 a=ZmFolderTree.createFolder(u,m,r,y,g,c,h);\r
90790 ZmFolderTree._traverse(a,r,y,(g||[]),c,h)\r
90791 }}\r
90792 return a\r
90793 };\r
90794 ZmFolderTree._traverse=function(e,n,m,u,l,h){\r
90795 var a=(e.nId==ZmOrganizer.ID_ROOT);\r
90796 if(n.folder&&n.folder.length){\r
90797 if(!a){\r
90798 u.push(n.name)\r
90799 }\r
90800 for(var s=0;\r
90801 s<n.folder.length;\r
90802 s++){\r
90803 var r=n.folder[s];\r
90804 var o=ZmFolderTree.createFromJs(e,r,m,(l||"folder"),u,h);\r
90805 if(e&&o){\r
90806 e.children.add(o)\r
90807 }}\r
90808 if(!a){\r
90809 u.pop()\r
90810 }}\r
90811 if(n.search&&n.search.length){\r
90812 if(!a){\r
90813 u.push(n.name)\r
90814 }\r
90815 for(var s=0;\r
90816 s<n.search.length;\r
90817 s++){\r
90818 var d=n.search[s];\r
90819 var t=ZmFolderTree.createFromJs(e,d,m,"search",u,h);\r
90820 if(t){\r
90821 e.children.add(t)\r
90822 }}\r
90823 if(!a){\r
90824 u.pop()\r
90825 }}\r
90826 if(n.link&&n.link.length){\r
90827 for(var s=0;\r
90828 s<n.link.length;\r
90829 s++){\r
90830 var c=n.link[s];\r
90831 var o=ZmFolderTree.createFromJs(e,c,m,"link",u,h);\r
90832 if(o){\r
90833 e.children.add(o)\r
90834 }}}};\r
90835 ZmFolderTree.createFolder=function(type,parent,obj,tree,path,elementType,account){\r
90836 var orgClass=eval(ZmOrganizer.ORG_CLASS[type]);\r
90837 if(!orgClass){\r
90838 return null\r
90839 }\r
90840 var params={\r
90841 id:obj.id,name:obj.name,parent:parent,tree:tree,color:obj.color,rgb:obj.rgb,owner:obj.owner,zid:obj.zid,rid:obj.rid,restUrl:obj.rest,url:obj.url,numUnread:obj.u,numTotal:obj.n,sizeTotal:obj.s,perm:obj.perm,link:elementType=="link",account:account};\r
90842 var folder=new orgClass(params);\r
90843 ZmFolderTree._fillInFolder(folder,obj,path);\r
90844 ZmFolderTree.IS_PARSED[type]=true;\r
90845 return folder\r
90846 };\r
90847 ZmFolderTree._fillInFolder=function(e,a,t){\r
90848 if(t&&t.length){\r
90849 e.path=t.join("/")\r
90850 }\r
90851 if(a.f&&e._parseFlags){\r
90852 e._parseFlags(a.f)\r
90853 }\r
90854 e._setSharesFromJs(a)\r
90855 };\r
90856 ZmFolderTree.prototype.getByType=function(e){\r
90857 return this.root?this.root.getByType(e):null\r
90858 };\r
90859 ZmFolderTree.prototype.getByPath=function(t,e){\r
90860 return this.root?this.root.getByPath(t,e):null\r
90861 };\r
90862 ZmFolderTree.prototype.handleNoSuchFolderError=function(e,r,l){\r
90863 var h=this.getByType(e);\r
90864 var a;\r
90865 var s=false;\r
90866 if(h){\r
90867 for(var n=0;\r
90868 n<h.length;\r
90869 n++){\r
90870 if((h[n].zid==r)&&(h[n].rid==l)){\r
90871 h[n].noSuchFolder=true;\r
90872 if(!a){\r
90873 var o=appCtxt.getAppController().getOverviewId();\r
90874 a=appCtxt.getOverviewController().getTreeView(o,e)\r
90875 }\r
90876 var t=a.getTreeItemById(h[n].id);\r
90877 t.setText(h[n].getName(true));\r
90878 this.handleDeleteNoSuchFolder(h[n]);\r
90879 s=true\r
90880 }}}\r
90881 return s\r
90882 };\r
90883 ZmFolderTree.prototype.handleDeleteNoSuchFolder=function(e){\r
90884 var t=appCtxt.getYesNoMsgDialog();\r
90885 t.reset();\r
90886 t.registerCallback(DwtDialog.YES_BUTTON,this._deleteOrganizerYesCallback,this,[e,t]);\r
90887 t.registerCallback(DwtDialog.NO_BUTTON,appCtxt.getAppController()._clearDialog,this,t);\r
90888 var a=AjxMessageFormat.format(ZmMsg.confirmDeleteMissingFolder,e.getName(false,0,true));\r
90889 t.setMessage(a,DwtMessageDialog.WARNING_STYLE);\r
90890 t.popup()\r
90891 };\r
90892 ZmFolderTree.prototype._deleteOrganizerYesCallback=function(e,t){\r
90893 e._delete();\r
90894 appCtxt.getAppController()._clearDialog(t)\r
90895 };\r
90896 ZmFolderTree.prototype.getPermissions=function(r){\r
90897 var n=r.folderIds||this._getItemsWithoutPerms(r.type);\r
90898 if(n.length>0){\r
90899 var o=AjxSoapDoc.create("BatchRequest","urn:zimbra");\r
90900 o.setMethodAttribute("onerror","continue");\r
90901 var s=o.getDoc();\r
90902 for(var a=0;\r
90903 a<n.length;\r
90904 a++){\r
90905 var t=o.set("GetFolderRequest",null,null,"urn:zimbraMail");\r
90906 var e=s.createElement("folder");\r
90907 e.setAttribute("l",n[a]);\r
90908 t.appendChild(e)\r
90909 }\r
90910 var h=new AjxCallback(this,this._handleResponseGetShares,[r.callback,r.skipNotify]);\r
90911 appCtxt.getRequestMgr().sendRequest({\r
90912 soapDoc:o,asyncMode:true,callback:h,noBusyOverlay:r.noBusyOverlay}\r
90913 \r
90914 )\r
90915 }else{\r
90916 if(r.callback){\r
90917 r.callback.run()\r
90918 }}};\r
90919 ZmFolderTree.prototype._getItemsWithoutPerms=function(n){\r
90920 var s=[];\r
90921 var o=n?[n]:[ZmOrganizer.FOLDER,ZmOrganizer.CALENDAR,ZmOrganizer.TASKS,ZmOrganizer.NOTEBOOK,ZmOrganizer.ADDRBOOK];\r
90922 for(var t=0;\r
90923 t<o.length;\r
90924 t++){\r
90925 var r=o[t];\r
90926 if(!ZmFolderTree.IS_PARSED[r]){\r
90927 continue\r
90928 }\r
90929 var e=this.getByType(r);\r
90930 for(var a=0;\r
90931 a<e.length;\r
90932 a++){\r
90933 if(e[a].link&&e[a].shares==null){\r
90934 s.push(e[a].id)\r
90935 }}}\r
90936 return s\r
90937 };\r
90938 ZmFolderTree.prototype._handleResponseGetShares=function(h,o,c){\r
90939 var l=c.getResponse().BatchResponse;\r
90940 this._handleErrorGetShares(l);\r
90941 var e=l.GetFolderResponse;\r
90942 if(e){\r
90943 for(var a=0;\r
90944 a<e.length;\r
90945 a++){\r
90946 var n=e[a].link?e[a].link[0]:null;\r
90947 if(n){\r
90948 var s=appCtxt.getById(n.id);\r
90949 if(s){\r
90950 s._setSharesFromJs(n)\r
90951 }\r
90952 if(n.folder&&n.folder.length>0){\r
90953 var r=appCtxt.getById(n.id);\r
90954 if(r){\r
90955 for(var t=0;\r
90956 t<n.folder.length;\r
90957 t++){\r
90958 if(appCtxt.getById(n.folder[t].id)){\r
90959 continue\r
90960 }\r
90961 r.notifyCreate(n.folder[t],false,o)\r
90962 }}}}}}\r
90963 if(h){\r
90964 h.run()\r
90965 }};\r
90966 ZmFolderTree.prototype._handleErrorGetShares=function(l){\r
90967 var n=l.Fault;\r
90968 if(n){\r
90969 var a=[];\r
90970 var t=[];\r
90971 for(var o=0,e=n.length;\r
90972 o<e;\r
90973 o++){\r
90974 var r=ZmCsfeCommand.faultToEx(n[o]);\r
90975 if(r.code==ZmCsfeException.MAIL_NO_SUCH_FOLDER){\r
90976 var h=r.data.itemId[0];\r
90977 var s=h.lastIndexOf(":");\r
90978 t.push(h.substring(0,s));\r
90979 a.push(h.substring(s+1,h.length))\r
90980 }}\r
90981 if(t.length){\r
90982 this._markNoSuchFolder(t,a)\r
90983 }}};\r
90984 ZmFolderTree.prototype._markNoSuchFolder=function(t,n){\r
90985 var s=appCtxt.getFolderTree();\r
90986 var e=s&&s.root?s.root.children.getArray():null;\r
90987 for(var o=0;\r
90988 o<e.length;\r
90989 o++){\r
90990 for(var a=0;\r
90991 a<n.length;\r
90992 a++){\r
90993 if((e[o].zid==t[a])&&(e[o].rid==n[a])){\r
90994 e[o].noSuchFolder=true\r
90995 }}}};\r
90996 ZmFolderTree.prototype._sortFolder=function(a){\r
90997 var t=a.children;\r
90998 if(t&&t.length){\r
90999 t.sort(ZmFolder.sortCompare);\r
91000 for(var e=0;\r
91001 e<t.length;\r
91002 e++){\r
91003 this._sortFolder(t[e])\r
91004 }}}\r
91005 }\r
91006 if(AjxPackage.define("zimbraMail.share.model.ZmList")){\r
91007 ZmList=function(t,e){\r
91008 if(arguments.length==0){\r
91009 return\r
91010 }\r
91011 ZmModel.call(this,t);\r
91012 this.type=t;\r
91013 this.search=e;\r
91014 this._vector=new AjxVector();\r
91015 this._hasMore=false;\r
91016 this._idHash=new Object();\r
91017 var a=appCtxt.getTagTree();\r
91018 if(a){\r
91019 this._tagChangeListener=new AjxListener(this,this._tagTreeChangeListener);\r
91020 a.addChangeListener(this._tagChangeListener)\r
91021 }};\r
91022 ZmList.prototype=new ZmModel;\r
91023 ZmList.prototype.constructor=ZmList;\r
91024 ZmList.ITEM_CLASS={};\r
91025 ZmList.NODE={};\r
91026 ZmList.ITEM_TYPE={};\r
91027 ZmList.CHUNK_SIZE=100;\r
91028 ZmList.prototype.toString=function(){\r
91029 return"ZmList"\r
91030 };\r
91031 ZmList.prototype.get=function(e){\r
91032 return this._vector.get(e)\r
91033 };\r
91034 ZmList.prototype.add=function(t,e){\r
91035 this._vector.add(t,e);\r
91036 if(t.id){\r
91037 this._idHash[t.id]=t\r
91038 }};\r
91039 ZmList.prototype.remove=function(e){\r
91040 this._vector.remove(e);\r
91041 if(e.id){\r
91042 delete this._idHash[e.id]\r
91043 }};\r
91044 ZmList.prototype.create=function(args){\r
91045 var item;\r
91046 var obj=eval(ZmList.ITEM_CLASS[this.type]);\r
91047 if(obj){\r
91048 item=new obj(this);\r
91049 item.create(args)\r
91050 }\r
91051 return item\r
91052 };\r
91053 ZmList.prototype.size=function(){\r
91054 return this._vector.size()\r
91055 };\r
91056 ZmList.prototype.indexOf=function(e){\r
91057 return this._vector.indexOf(e)\r
91058 };\r
91059 ZmList.prototype.hasMore=function(){\r
91060 return this._hasMore\r
91061 };\r
91062 ZmList.prototype.setHasMore=function(e){\r
91063 this._hasMore=e\r
91064 };\r
91065 ZmList.prototype.getArray=function(){\r
91066 return this._vector.getArray()\r
91067 };\r
91068 ZmList.prototype.getVector=function(){\r
91069 return this._vector\r
91070 };\r
91071 ZmList.prototype.getById=function(e){\r
91072 return this._idHash[e]\r
91073 };\r
91074 ZmList.prototype.clear=function(){\r
91075 var e=this.getArray();\r
91076 for(var t=0;\r
91077 t<e.length;\r
91078 t++){\r
91079 e[t].clear()\r
91080 }\r
91081 this._evtMgr.removeAll(ZmEvent.L_MODIFY);\r
91082 this._vector.removeAll();\r
91083 for(var o in this._idHash){\r
91084 this._idHash[o]=null\r
91085 }\r
91086 this._idHash=new Object()\r
91087 };\r
91088 ZmList.prototype.set=function(respNode){\r
91089 this.clear();\r
91090 var nodes=respNode.childNodes;\r
91091 var args={\r
91092 list:this};\r
91093 for(var i=0;\r
91094 i<nodes.length;\r
91095 i++){\r
91096 var node=nodes[i];\r
91097 if(node.nodeName==ZmList.NODE[this.type]){\r
91098 if(parseInt(node.getAttribute("l"))==ZmFolder.ID_TRASH&&(this.type!=ZmItem.CONTACT)){\r
91099 continue\r
91100 }\r
91101 var obj=eval(ZmList.ITEM_CLASS[this.type]);\r
91102 if(obj){\r
91103 this.add(obj.createFromDom(node,args))\r
91104 }}}};\r
91105 ZmList.prototype.addFromDom=function(node,args){\r
91106 if(!args){\r
91107 args={}\r
91108 }\r
91109 args.list=this;\r
91110 var obj=eval(ZmList.ITEM_CLASS[this.type]);\r
91111 if(obj){\r
91112 this.add(obj.createFromDom(node,args))\r
91113 }};\r
91114 ZmList.prototype.getSubList=function(o,a){\r
91115 var n=null;\r
91116 var t=(o+a>this.size())?this.size():o+a;\r
91117 var e=this.getArray();\r
91118 if(o<t){\r
91119 n=AjxVector.fromArray(e.slice(o,t))\r
91120 }\r
91121 return n\r
91122 };\r
91123 ZmList.prototype.cache=function(n,t){\r
91124 this.getVector().merge(n,t);\r
91125 var o=t.getArray();\r
91126 for(var e=0;\r
91127 e<o.length;\r
91128 e++){\r
91129 var a=o[e];\r
91130 a.list=this;\r
91131 if(a.id){\r
91132 this._idHash[a.id]=a\r
91133 }}};\r
91134 ZmList.prototype.flagItems=function(e){\r
91135 e=Dwt.getParams(arguments,["items","op","value","callback"]);\r
91136 if(this.type==ZmItem.MIXED&&!this._mixedType){\r
91137 return this._mixedAction("flagItems",e)\r
91138 }\r
91139 e.items=AjxUtil.toArray(e.items);\r
91140 if(e.action=="update"){\r
91141 e.attrs={\r
91142 f:e.value}\r
91143 }else{\r
91144 e.action=e.value?e.op:"!"+e.op\r
91145 }\r
91146 this._itemAction(e)\r
91147 };\r
91148 ZmList.prototype.tagItems=function(s){\r
91149 s=Dwt.getParams(arguments,["items","tagId","doTag"]);\r
91150 if(appCtxt.multiAccounts&&!appCtxt.getActiveAccount().isMain){\r
91151 s.tagId=ZmOrganizer.normalizeId(s.tagId)\r
91152 }\r
91153 if(this.type==ZmItem.MIXED&&!this._mixedType){\r
91154 return this._mixedAction("tagItems",s)\r
91155 }\r
91156 var t=AjxUtil.toArray(s.items);\r
91157 var e=[],r=s.doTag,o=s.tagId;\r
91158 for(var a=0;\r
91159 a<t.length;\r
91160 a++){\r
91161 var n=t[a];\r
91162 if((r&&(!n.hasTag(o)||n.type==ZmItem.CONV))||(!r&&n.hasTag(o))){\r
91163 e.push(n)\r
91164 }}\r
91165 s.items=e;\r
91166 s.attrs={\r
91167 tag:o};\r
91168 s.action=r?"tag":"!tag";\r
91169 this._itemAction(s)\r
91170 };\r
91171 ZmList.prototype.removeAllTags=function(n){\r
91172 n=(n&&n.items)?n:{\r
91173 items:n};\r
91174 if(this.type==ZmItem.MIXED&&!this._mixedType){\r
91175 this._mixedAction("removeAllTags",n);\r
91176 return\r
91177 }\r
91178 var t=AjxUtil.toArray(n.items);\r
91179 var e=[];\r
91180 for(var a=0;\r
91181 a<t.length;\r
91182 a++){\r
91183 var o=t[a];\r
91184 if(o.tags&&o.tags.length){\r
91185 e.push(o)\r
91186 }}\r
91187 n.items=e;\r
91188 n.action="update";\r
91189 n.attrs={\r
91190 t:""};\r
91191 this._itemAction(n)\r
91192 };\r
91193 ZmList.prototype.moveItems=function(a){\r
91194 a=Dwt.getParams(arguments,["items","folder","attrs","callback"]);\r
91195 if(this.type==ZmItem.MIXED&&!this._mixedType){\r
91196 return this._mixedAction("moveItems",a)\r
91197 }\r
91198 a.items=AjxUtil.toArray(a.items);\r
91199 a.attrs=a.attrs||{};\r
91200 a.attrs.l=a.folder.id;\r
91201 a.accountName=appCtxt.multiAccounts&&appCtxt.accountList.mainAccount.name;\r
91202 a.action="move";\r
91203 var e={};\r
91204 for(var t in a){\r
91205 e[t]=a[t]\r
91206 }\r
91207 a.callback=(this.type==ZmItem.MIXED)?(new AjxCallback(this,this._handleResponseMoveItems,e)):a.callback;\r
91208 this._itemAction(a)\r
91209 };\r
91210 ZmList.prototype._handleResponseMoveItems=function(a,e){\r
91211 var o=e.getResponse();\r
91212 if(o&&o.length){\r
91213 this.moveLocal(o,a.folder.id);\r
91214 for(var t=0;\r
91215 t<o.length;\r
91216 t++){\r
91217 o[t].moveLocal(a.folder.id)\r
91218 }\r
91219 ZmModel.notifyEach(o,ZmEvent.E_MOVE)\r
91220 }\r
91221 if(a.callback){\r
91222 a.callback.run(e)\r
91223 }};\r
91224 ZmList.prototype.copyItems=function(e){\r
91225 e=Dwt.getParams(arguments,["items","folder","attrs"]);\r
91226 e.items=AjxUtil.toArray(e.items);\r
91227 e.attrs=e.attrs||{};\r
91228 e.attrs.l=e.folder.id;\r
91229 e.accountName=appCtxt.multiAccounts&&appCtxt.accountList.mainAccount.name;\r
91230 e.action="copy";\r
91231 e.callback=new AjxCallback(this,this._handleResponseCopyItems,e);\r
91232 this._itemAction(e)\r
91233 };\r
91234 ZmList.prototype._handleResponseCopyItems=function(o,e){\r
91235 var a=e.getResponse();\r
91236 if(a.length>0){\r
91237 var t=AjxMessageFormat.format(ZmMsg.itemCopied,a.length);\r
91238 appCtxt.getAppController().setStatusMsg(t)\r
91239 }};\r
91240 ZmList.prototype.deleteItems=function(h){\r
91241 h=Dwt.getParams(arguments,["items","hardDelete","attrs","childWin"]);\r
91242 if(this.type==ZmItem.MIXED&&!this._mixedType){\r
91243 return this._mixedAction("deleteItems",h)\r
91244 }\r
91245 var o=h.items=AjxUtil.toArray(h.items);\r
91246 var e=[];\r
91247 var a=[];\r
91248 for(var n=0;\r
91249 n<o.length;\r
91250 n++){\r
91251 var r=o[n];\r
91252 var t=r.getFolderId();\r
91253 var s=appCtxt.getById(t);\r
91254 if(h.hardDelete||(s&&s.isHardDelete())){\r
91255 a.push(r)\r
91256 }else{\r
91257 e.push(r)\r
91258 }}\r
91259 h.callback=h.childWin&&new AjxCallback(this._handleDeleteNewWindowResponse,h.childWin);\r
91260 if(e.length){\r
91261 h.items=e;\r
91262 var t=appCtxt.multiAccounts?ZmOrganizer.getSystemId(ZmFolder.ID_TRASH):ZmFolder.ID_TRASH;\r
91263 h.folder=appCtxt.getById(t);\r
91264 this.moveItems(h)\r
91265 }\r
91266 if(a.length){\r
91267 h.items=a;\r
91268 h.action="delete";\r
91269 this._itemAction(h)\r
91270 }};\r
91271 ZmList.prototype._handleDeleteNewWindowResponse=function(t,e){\r
91272 if(t){\r
91273 t.close()\r
91274 }};\r
91275 ZmList.prototype.modifyItem=function(t,e,a){\r
91276 t.modify(e,a)\r
91277 };\r
91278 ZmList.prototype.notifyCreate=function(node){\r
91279 var obj=eval(ZmList.ITEM_CLASS[this.type]);\r
91280 if(obj){\r
91281 var item=obj.createFromDom(node,{\r
91282 list:this}\r
91283 );\r
91284 this.add(item,this._sortIndex(item));\r
91285 this.createLocal(item);\r
91286 this._notify(ZmEvent.E_CREATE,{\r
91287 items:[item]}\r
91288 )\r
91289 }};\r
91290 ZmList.prototype.modifyLocal=function(e,t){};\r
91291 ZmList.prototype.createLocal=function(e){};\r
91292 ZmList.prototype.flagLocal=function(t,e,a){};\r
91293 ZmList.prototype.tagLocal=function(t,e,a){};\r
91294 ZmList.prototype.removeAllTagsLocal=function(e){};\r
91295 ZmList.prototype.deleteLocal=function(e){\r
91296 for(var t=0;\r
91297 t<e.length;\r
91298 t++){\r
91299 this.remove(e[t])\r
91300 }};\r
91301 ZmList.prototype.moveLocal=function(t,e){\r
91302 for(var a=0;\r
91303 a<t.length;\r
91304 a++){\r
91305 this.remove(t[a])\r
91306 }};\r
91307 ZmList.prototype._itemAction=function(s,a){\r
91308 var p=this._getIds(s.items);\r
91309 var o=p.hash;\r
91310 var h=p.list;\r
91311 if(!(h&&h.length)){\r
91312 if(s.callback){\r
91313 s.callback.run(new ZmCsfeResult([]))\r
91314 }\r
91315 if(s.finalCallback){\r
91316 s.finalCallback.run(s)\r
91317 }\r
91318 return\r
91319 }\r
91320 var d;\r
91321 if(this.type==ZmItem.MIXED){\r
91322 d=this._mixedType\r
91323 }else{\r
91324 if(s.items.length==1){\r
91325 d=s.items[0].type\r
91326 }else{\r
91327 d=this.type\r
91328 }}\r
91329 if(!d){\r
91330 return\r
91331 }\r
91332 var t=ZmItem.SOAP_CMD[d]+"Request";\r
91333 var e=a?a._useJson:true;\r
91334 var r,n;\r
91335 if(e){\r
91336 r={};\r
91337 var f=this._getActionNamespace();\r
91338 r[t]={\r
91339 _jsns:f};\r
91340 var n=r[t].action={};\r
91341 n.op=s.action;\r
91342 for(var l in s.attrs){\r
91343 n[l]=s.attrs[l]\r
91344 }}else{\r
91345 r=AjxSoapDoc.create(t,this._getActionNamespace());\r
91346 n=r.set("action");\r
91347 n.setAttribute("op",s.action);\r
91348 for(var l in s.attrs){\r
91349 n.setAttribute(l,s.attrs[l])\r
91350 }}\r
91351 var m=s.callback&&(new AjxCallback(this,this._handleResponseItemAction,[s.callback]));\r
91352 var u={\r
91353 ids:h,idHash:o,accountName:s.accountName,request:r,action:n,type:d,callback:m,finalCallback:s.finalCallback,errorCallback:s.errorCallback,batchCmd:a,numItems:s.count||0};\r
91354 var c=ZmList.progressDialog;\r
91355 if(h.length>ZmList.CHUNK_SIZE){\r
91356 if(!c){\r
91357 c=ZmList.progressDialog=appCtxt.getCancelMsgDialog();\r
91358 c.registerCallback(DwtDialog.CANCEL_BUTTON,new AjxCallback(this,this._cancelAction,[u]))\r
91359 }}else{\r
91360 if(c){\r
91361 c.unregisterCallback(DwtDialog.CANCEL_BUTTON);\r
91362 ZmList.progressDialog=null\r
91363 }}\r
91364 this._doAction(u)\r
91365 };\r
91366 ZmList.prototype._handleResponseItemAction=function(a,t,e){\r
91367 if(a){\r
91368 e.set(t);\r
91369 a.run(e)\r
91370 }};\r
91371 ZmList.prototype._doAction=function(o){\r
91372 var a=o.ids.splice(0,ZmList.CHUNK_SIZE);\r
91373 var t=a.join(",");\r
91374 var s=true;\r
91375 if(o.action.setAttribute){\r
91376 o.action.setAttribute("id",t);\r
91377 s=false\r
91378 }else{\r
91379 o.action.id=t\r
91380 }\r
91381 var n=new AjxCallback(this,this._handleResponseDoAction,[o]);\r
91382 if(o.batchCmd){\r
91383 o.batchCmd.addRequestParams(o.request,n,o.errorCallback)\r
91384 }else{\r
91385 var e={\r
91386 asyncMode:true,callback:n,accountName:o.accountName};\r
91387 if(s){\r
91388 e.jsonObj=o.request\r
91389 }else{\r
91390 e.soapDoc=o.request\r
91391 }\r
91392 o.reqId=appCtxt.getAppController().sendRequest(e)\r
91393 }};\r
91394 ZmList.prototype._handleResponseDoAction=function(t,d){\r
91395 var r=ZmList.progressDialog;\r
91396 var o=d.getResponse();\r
91397 var a=o[ZmItem.SOAP_CMD[t.type]+"Response"];\r
91398 if(a&&a.action){\r
91399 var e=a.action.id.split(",");\r
91400 if(e){\r
91401 var h=[];\r
91402 for(var n=0;\r
91403 n<e.length;\r
91404 n++){\r
91405 var c=t.idHash[e[n]];\r
91406 if(c){\r
91407 h.push(c)\r
91408 }}\r
91409 t.numItems+=h.length;\r
91410 if(t.callback){\r
91411 t.callback.run(h,d)\r
91412 }\r
91413 if(r){\r
91414 var s=ZmItem.PLURAL_MSG_KEY[t.type]||"items";\r
91415 var l=AjxMessageFormat.format(ZmMsg.itemsProcessed,[t.numItems,ZmMsg[s]]);\r
91416 r.setContent(l.toLowerCase());\r
91417 if(!r.isPoppedUp()){\r
91418 r.popup()\r
91419 }}}}\r
91420 if(t.ids.length&&!t.cancelled){\r
91421 AjxTimedAction.scheduleAction(new AjxTimedAction(this,this._doAction,[t]),100)\r
91422 }else{\r
91423 t.reqId=null;\r
91424 if(t.finalCallback){\r
91425 t.finalCallback.run(t)\r
91426 }else{\r
91427 if(r){\r
91428 r.popdown();\r
91429 ZmList.progressDialog=null\r
91430 }}}};\r
91431 ZmList.prototype._cancelAction=function(e){\r
91432 e.cancelled=true;\r
91433 if(e.reqId){\r
91434 appCtxt.getRequestMgr().cancelRequest(e.reqId)\r
91435 }\r
91436 if(e.finalCallback){\r
91437 e.finalCallback.run(e)\r
91438 }};\r
91439 ZmList.prototype._mixedAction=function(r,s){\r
91440 var e=this._getTypedItems(s.items);\r
91441 var n=AjxUtil.hashCopy(s);\r
91442 for(var o in e){\r
91443 this._mixedType=o;\r
91444 if(o==ZmItem.CONTACT){\r
91445 var t=e[o];\r
91446 for(var a=0;\r
91447 a<t.length;\r
91448 a++){\r
91449 n.items=[t[a]];\r
91450 t[a].list[r](s)\r
91451 }}else{\r
91452 n.items=e[o];\r
91453 ZmMailList.prototype[r].call(this,s)\r
91454 }\r
91455 this._mixedType=null\r
91456 }};\r
91457 ZmList.prototype._getTypedItems=function(t){\r
91458 var e={};\r
91459 for(var a=0;\r
91460 a<t.length;\r
91461 a++){\r
91462 var o=t[a].type;\r
91463 if(!e[o]){\r
91464 e[o]=[]\r
91465 }\r
91466 e[o].push(t[a])\r
91467 }\r
91468 return e\r
91469 };\r
91470 ZmList.prototype._getIds=function(n){\r
91471 var o={};\r
91472 if(n instanceof ZmItem){\r
91473 n=[n]\r
91474 }\r
91475 var t=[];\r
91476 if((n&&n.length)){\r
91477 for(var e=0;\r
91478 e<n.length;\r
91479 e++){\r
91480 var a=n[e];\r
91481 var s=a.id;\r
91482 if(s){\r
91483 t.push(s);\r
91484 o[s]=a\r
91485 }}}\r
91486 return{\r
91487 hash:o,list:t}\r
91488 };\r
91489 ZmList.prototype._sortIndex=function(e){\r
91490 return 0\r
91491 };\r
91492 ZmList.prototype._redoSearch=function(e){\r
91493 var t=appCtxt.getSearchController();\r
91494 t.redoSearch(e._currentSearch)\r
91495 };\r
91496 ZmList.prototype._getActionNamespace=function(){\r
91497 return"urn:zimbraMail"\r
91498 };\r
91499 ZmList.prototype._folderTreeChangeListener=function(s){\r
91500 if(s.type!=ZmEvent.S_FOLDER){\r
91501 return\r
91502 }\r
91503 var n=s.getDetail("organizers")[0];\r
91504 var o=s.getDetail("fields");\r
91505 var a=appCtxt.getCurrentController();\r
91506 var t=(appCtxt.getCurrentList()==this);\r
91507 if(s.event==ZmEvent.E_DELETE&&(s.source instanceof ZmFolder)&&s.source.id==ZmFolder.ID_TRASH){\r
91508 var e=a.getCurrentView();\r
91509 if(e){\r
91510 e.offset=0\r
91511 }\r
91512 a._resetNavToolBarButtons(view)\r
91513 }else{\r
91514 if(t&&a&&a._currentSearch&&(s.event==ZmEvent.E_MOVE||(s.event==ZmEvent.E_MODIFY)&&o&&o[ZmOrganizer.F_NAME])){\r
91515 var r=s.getDetail("oldPath");\r
91516 if(a._currentSearch.hasFolderTerm(r)){\r
91517 a._currentSearch.replaceFolderTerm(r,n.getPath());\r
91518 appCtxt.getSearchController().setSearchField(a._currentSearch.query)\r
91519 }}}};\r
91520 ZmList.prototype._tagTreeChangeListener=function(r){\r
91521 if(r.type!=ZmEvent.S_TAG){\r
91522 return\r
91523 }\r
91524 var u=r.getDetail("organizers")[0];\r
91525 var n=r.getDetail("fields");\r
91526 var c=appCtxt.getCurrentController();\r
91527 if(!c||(appCtxt.getCurrentList()!=this)){\r
91528 return\r
91529 }\r
91530 if((r.event==ZmEvent.E_MODIFY)&&n&&n[ZmOrganizer.F_NAME]){\r
91531 var t=r.getDetail("oldName");\r
91532 if(c._currentSearch&&c._currentSearch.hasTagTerm(t)){\r
91533 c._currentSearch.replaceTagTerm(t,u.getName());\r
91534 appCtxt.getSearchController().setSearchField(c._currentSearch.query)\r
91535 }}else{\r
91536 if(r.event==ZmEvent.E_DELETE){\r
91537 var h=this.getArray();\r
91538 var e=this._evtMgr.isListenerRegistered(ZmEvent.L_MODIFY);\r
91539 for(var o=0;\r
91540 o<h.length;\r
91541 o++){\r
91542 var d=this.getById(h[o].id);\r
91543 if(d&&d.hasTag(u.id)){\r
91544 d.tagLocal(u.id,false);\r
91545 if(e){\r
91546 this._notify(ZmEvent.E_TAGS,{\r
91547 items:[d]}\r
91548 )\r
91549 }}}\r
91550 if(c._currentSearch&&c._currentSearch.hasTagTerm(u.getName())){\r
91551 var l=appCtxt.getCurrentViewId();\r
91552 c.enablePagination(false,l);\r
91553 var s=c.getCurrentView();\r
91554 if(s&&s.sortingEnabled){\r
91555 s.sortingEnabled=false\r
91556 }\r
91557 if(l==ZmId.VIEW_CONVLIST){\r
91558 c._currentSearch.query="is:read is:unread"\r
91559 }\r
91560 c._currentSearch.tagId=null;\r
91561 appCtxt.getSearchController().setSearchField("")\r
91562 }}}}\r
91563 }\r
91564 if(AjxPackage.define("zimbraMail.share.model.ZmAccountList")){\r
91565 ZmAccountList=function(){\r
91566 this._accounts={};\r
91567 this._count=0;\r
91568 this.visibleAccounts=[];\r
91569 this.mainAccount=null;\r
91570 this.activeAccount=null;\r
91571 this.defaultAccount=null;\r
91572 this._evtMgr=new AjxEventMgr()\r
91573 };\r
91574 ZmAccountList.prototype.constructor=ZmAccountList;\r
91575 ZmAccountList.DEFAULT_ID="main";\r
91576 ZmAccountList.prototype.toString=function(){\r
91577 return"ZmAccountList"\r
91578 };\r
91579 ZmAccountList.prototype.size=function(e){\r
91580 return(e)?this.visibleAccounts.length:this._count\r
91581 };\r
91582 ZmAccountList.prototype.add=function(e){\r
91583 this._accounts[e.id]=e;\r
91584 this._count++;\r
91585 if(e.visible||e.id==ZmAccountList.DEFAULT_ID){\r
91586 this.visibleAccounts.push(e)\r
91587 }\r
91588 if(e.id==ZmAccountList.DEFAULT_ID){\r
91589 this.mainAccount=e\r
91590 }};\r
91591 ZmAccountList.prototype.getAccounts=function(){\r
91592 return this._accounts\r
91593 };\r
91594 ZmAccountList.prototype.getAccount=function(e){\r
91595 return e?this._accounts[e]:this.mainAccount\r
91596 };\r
91597 ZmAccountList.prototype.getAccountByName=function(e){\r
91598 for(var t in this._accounts){\r
91599 if(this._accounts[t].name==e){\r
91600 return this._accounts[t]\r
91601 }}\r
91602 return null\r
91603 };\r
91604 ZmAccountList.prototype.getAccountByEmail=function(e){\r
91605 for(var t in this._accounts){\r
91606 if(this._accounts[t].getEmail()==e){\r
91607 return this._accounts[t]\r
91608 }}\r
91609 return null\r
91610 };\r
91611 ZmAccountList.prototype.getItemCount=function(e){\r
91612 var t=0;\r
91613 for(var a=0;\r
91614 a<this.visibleAccounts.length;\r
91615 a++){\r
91616 var s=this.visibleAccounts[a];\r
91617 if(s.isMain){\r
91618 continue\r
91619 }\r
91620 var n=ZmOrganizer.getSystemId(e,s);\r
91621 var o=appCtxt.getById(n);\r
91622 if(o){\r
91623 t+=o.numTotal\r
91624 }}\r
91625 return t\r
91626 };\r
91627 ZmAccountList.prototype.generateQuery=function(e,s){\r
91628 var l=s&&s.get(0);\r
91629 var h=[];\r
91630 var r=this.visibleAccounts;\r
91631 var a=e||ZmOrganizer.ID_ROOT;\r
91632 var o=e?"inid":"underid";\r
91633 for(var n=0;\r
91634 n<r.length;\r
91635 n++){\r
91636 var c=r[n];\r
91637 if((l&&!c.isAppEnabled(ZmItem.APP[l]))||c.isMain){\r
91638 continue\r
91639 }\r
91640 var t=[o,':"',ZmOrganizer.getSystemId(a,c,true),'"'];\r
91641 h.push(t.join(""))\r
91642 }\r
91643 return(h.join(" OR "))\r
91644 };\r
91645 ZmAccountList.prototype.loadAccounts=function(t){\r
91646 var e=(new Array()).concat(this.visibleAccounts);\r
91647 this._loadAccount(e,t)\r
91648 };\r
91649 ZmAccountList.prototype._loadAccount=function(t,n){\r
91650 var o=t.shift();\r
91651 if(o){\r
91652 var a=new AjxCallback(this,this._loadAccount,[t,n]);\r
91653 o.load(a)\r
91654 }else{\r
91655 ZmOrganizer.HIDE_EMPTY[ZmOrganizer.TAG]=true;\r
91656 ZmOrganizer.HIDE_EMPTY[ZmOrganizer.SEARCH]=true;\r
91657 for(var e=0;\r
91658 e<this.visibleAccounts.length;\r
91659 e++){\r
91660 if(appCtxt.get(ZmSetting.OFFLINE_SMTP_ENABLED,null,this.visibleAccounts[e])){\r
91661 appCtxt.set(ZmSetting.OFFLINE_COMPOSE_ENABLED,true,null,null,true);\r
91662 break\r
91663 }}\r
91664 if(n){\r
91665 n.run()\r
91666 }}};\r
91667 ZmAccountList.prototype.setActiveAccount=function(t,e){\r
91668 this.activeAccount=t;\r
91669 this._evt=this._evt||new ZmEvent();\r
91670 this._evt.account=t;\r
91671 if(!e){\r
91672 this._evtMgr.notifyListeners("ACCOUNT",this._evt)\r
91673 }};\r
91674 ZmAccountList.prototype.addActiveAcountListener=function(t,e){\r
91675 return this._evtMgr.addListener("ACCOUNT",t,e)\r
91676 };\r
91677 ZmAccountList.prototype.syncAll=function(t){\r
91678 var e=(new Array()).concat(this.visibleAccounts);\r
91679 this._sendSync(e,t)\r
91680 };\r
91681 ZmAccountList.prototype._sendSync=function(e,a){\r
91682 var t=e.shift();\r
91683 if(t){\r
91684 if(!t.isMain){\r
91685 t.sync()\r
91686 }\r
91687 AjxTimedAction.scheduleAction(new AjxTimedAction(this,this._sendSync,[e,a]),500)\r
91688 }else{\r
91689 if(a){\r
91690 a.run()\r
91691 }}};\r
91692 ZmAccountList.prototype.createAccounts=function(t,n){\r
91693 var o=appCtxt.accountList.mainAccount;\r
91694 o.id=n.id;\r
91695 o.name=n.name;\r
91696 o.isMain=true;\r
91697 o.isZimbraAccount=true;\r
91698 o.loaded=true;\r
91699 o.visible=true;\r
91700 o.settings=t;\r
91701 o.type=ZmAccount.TYPE_ZIMBRA;\r
91702 this._accounts[o.id]=o;\r
91703 delete this._accounts[ZmAccountList.DEFAULT_ID];\r
91704 this.setActiveAccount(o);\r
91705 if(appCtxt.isOffline){\r
91706 o.displayName=ZmMsg.localFolders\r
91707 }\r
91708 var a=n.childAccounts&&n.childAccounts.childAccount;\r
91709 if(a){\r
91710 for(var e=0;\r
91711 e<a.length;\r
91712 e++){\r
91713 this.add(ZmZimbraAccount.createFromDom(a[e]))\r
91714 }\r
91715 appCtxt.multiAccounts=this.size()>1;\r
91716 appCtxt.isFamilyMbox=appCtxt.multiAccounts&&!appCtxt.isOffline;\r
91717 this.defaultAccount=appCtxt.isFamilyMbox?this.mainAccount:this.visibleAccounts[1]\r
91718 }};\r
91719 ZmAccountList.prototype.resetTrees=function(){\r
91720 for(var t=0;\r
91721 t<this.visibleAccounts.length;\r
91722 t++){\r
91723 for(var a in trees){\r
91724 var e=trees[a];\r
91725 if(e&&e.reset){\r
91726 e.reset()\r
91727 }}}};\r
91728 ZmAccountList.prototype.saveImplicitPrefs=function(){\r
91729 for(var t=0;\r
91730 t<this.visibleAccounts.length;\r
91731 t++){\r
91732 var e=this.visibleAccounts[t].trees;\r
91733 this.visibleAccounts[t].saveImplicitPrefs()\r
91734 }}\r
91735 }\r
91736 if(AjxPackage.define("zimbraMail.share.model.ZmAccount")){\r
91737 ZmAccount=function(t,a,e){\r
91738 if(arguments.length==0){\r
91739 return\r
91740 }\r
91741 this.id=a;\r
91742 this.name=e;\r
91743 this.type=t||ZmAccount.TYPE_ZIMBRA\r
91744 };\r
91745 ZmAccount.TYPE_AOL="AOL";\r
91746 ZmAccount.TYPE_GMAIL="Gmail";\r
91747 ZmAccount.TYPE_IMAP="Imap";\r
91748 ZmAccount.TYPE_LIVE="Live";\r
91749 ZmAccount.TYPE_MSE="MSE";\r
91750 ZmAccount.TYPE_PERSONA="PERSONA";\r
91751 ZmAccount.TYPE_POP="Pop";\r
91752 ZmAccount.TYPE_YMP="YMP";\r
91753 ZmAccount.TYPE_ZIMBRA="Zimbra";\r
91754 ZmAccount.getTypeName=function(e){\r
91755 switch(e){\r
91756 case ZmAccount.TYPE_AOL:return ZmMsg.aol;\r
91757 case ZmAccount.TYPE_GMAIL:return ZmMsg.gmail;\r
91758 case ZmAccount.TYPE_IMAP:return ZmMsg.accountTypeImap;\r
91759 case ZmAccount.TYPE_LIVE:return ZmMsg.msLive;\r
91760 case ZmAccount.TYPE_MSE:return ZmMsg.msExchange;\r
91761 case ZmAccount.TYPE_PERSONA:return ZmMsg.accountTypePersona;\r
91762 case ZmAccount.TYPE_POP:return ZmMsg.accountTypePop;\r
91763 case ZmAccount.TYPE_YMP:return ZmMsg.yahooMail;\r
91764 case ZmAccount.TYPE_ZIMBRA:return ZmMsg.zimbraTitle\r
91765 }\r
91766 return ZmMsg.unknown\r
91767 };\r
91768 ZmAccount.prototype.toString=function(){\r
91769 return"ZmAccount"\r
91770 };\r
91771 ZmAccount.prototype.setName=function(e){\r
91772 this.name=e\r
91773 };\r
91774 ZmAccount.prototype.getName=function(){\r
91775 return this.name\r
91776 };\r
91777 ZmAccount.prototype.setEmail=function(e){\r
91778 throw this.toString()+"#setEmail"\r
91779 };\r
91780 ZmAccount.prototype.getEmail=function(){\r
91781 throw this.toString()+"#getEmail"\r
91782 };\r
91783 ZmAccount.prototype.getIdentity=function(){\r
91784 throw this.toString()+"#getIdentity"\r
91785 }\r
91786 }\r
91787 if(AjxPackage.define("zimbraMail.share.model.ZmZimbraAccount")){\r
91788 ZmZimbraAccount=function(a,e,t){\r
91789 ZmAccount.call(this,null,a,e);\r
91790 this.visible=(t!==false);\r
91791 this.settings=null;\r
91792 this.trees={};\r
91793 this.loaded=false;\r
91794 this.acl=new ZmAccessControlList()\r
91795 };\r
91796 ZmZimbraAccount.prototype=new ZmAccount;\r
91797 ZmZimbraAccount.prototype.constructor=ZmZimbraAccount;\r
91798 ZmZimbraAccount.prototype.toString=function(){\r
91799 return"ZmZimbraAccount"\r
91800 };\r
91801 ZmZimbraAccount.STATUS_UNKNOWN="unknown";\r
91802 ZmZimbraAccount.STATUS_OFFLINE="offline";\r
91803 ZmZimbraAccount.STATUS_ONLINE="online";\r
91804 ZmZimbraAccount.STATUS_RUNNING="running";\r
91805 ZmZimbraAccount.STATUS_AUTHFAIL="authfail";\r
91806 ZmZimbraAccount.STATUS_ERROR="error";\r
91807 ZmZimbraAccount.prototype.setName=function(t){\r
91808 var e=this.getIdentity();\r
91809 if(!e){\r
91810 return\r
91811 }\r
91812 e.name=t\r
91813 };\r
91814 ZmZimbraAccount.prototype.getName=function(){\r
91815 var e=this.getIdentity();\r
91816 var t=(!e)?this.settings.get(ZmSetting.DISPLAY_NAME):e.name;\r
91817 if(!t){\r
91818 t=this.getDisplayName()\r
91819 }\r
91820 return e.isDefault&&t==ZmIdentity.DEFAULT_NAME?ZmMsg.accountDefault:t\r
91821 };\r
91822 ZmZimbraAccount.prototype.setEmail=function(e){};\r
91823 ZmZimbraAccount.prototype.getEmail=function(){\r
91824 return this.name\r
91825 };\r
91826 ZmZimbraAccount.prototype.getDisplayName=function(){\r
91827 if(!this.displayName){\r
91828 var e=this.isMain?this.settings.get(ZmSetting.DISPLAY_NAME):this._displayName;\r
91829 this.displayName=(this._accountName||e||this.name)\r
91830 }\r
91831 return this.displayName\r
91832 };\r
91833 ZmZimbraAccount.prototype.getIdentity=function(){\r
91834 if(!appCtxt.isFamilyMbox||this.isMain){\r
91835 return appCtxt.getIdentityCollection(this).defaultIdentity\r
91836 }\r
91837 if(!this.dummyIdentity){\r
91838 this.dummyIdentity=new ZmIdentity(this.name)\r
91839 }\r
91840 return this.dummyIdentity\r
91841 };\r
91842 ZmZimbraAccount.prototype.getToolTip=function(){\r
91843 if(this.status||this.lastSync){\r
91844 var e=(this.lastSync&&this.lastSync!=0)?(new Date(parseInt(this.lastSync))):null;\r
91845 var t={\r
91846 lastSync:(e?(AjxDateUtil.computeWordyDateStr(new Date(),e)):null),isInitialSync:this.isOfflineInitialSync(),status:this.getStatusMessage()};\r
91847 return AjxTemplate.expand("share.App#ZimbraAccountTooltip",t)\r
91848 }\r
91849 return""\r
91850 };\r
91851 ZmZimbraAccount.prototype.getDefaultColor=function(){\r
91852 if(this.isMain){\r
91853 return ZmOrganizer.C_GRAY\r
91854 }\r
91855 switch(this.type){\r
91856 case ZmAccount.TYPE_GMAIL:return ZmOrganizer.C_RED;\r
91857 case ZmAccount.TYPE_MSE:return ZmOrganizer.C_GREEN;\r
91858 case ZmAccount.TYPE_YMP:return ZmOrganizer.C_PURPLE\r
91859 }\r
91860 return null\r
91861 };\r
91862 ZmZimbraAccount.prototype.isOfflineInitialSync=function(){\r
91863 return(appCtxt.isOffline&&(!this.lastSync||(this.lastSync&&this.lastSync==0)))\r
91864 };\r
91865 ZmZimbraAccount.prototype.updateState=function(a){\r
91866 if(this.isMain){\r
91867 return\r
91868 }\r
91869 var s=false;\r
91870 if(this.lastSync!=a.lastsync){\r
91871 this.lastSync=a.lastsync;\r
91872 if(this.visible){\r
91873 s=true\r
91874 }}\r
91875 var e=false;\r
91876 if(this.status!=a.status){\r
91877 this.status=a.status;\r
91878 if(this.visible){\r
91879 e=true\r
91880 }}\r
91881 var t=appCtxt.getOverviewController()._overviewContainer;\r
91882 for(var n in t){\r
91883 var r=t[n];\r
91884 if(e||s){\r
91885 r.updateAccountInfo(this,e,s)\r
91886 }}\r
91887 this.code=a.code;\r
91888 if(a.error){\r
91889 var o=a.error[0];\r
91890 this.errorDetail=o.exception[0]._content;\r
91891 this.errorMessage=o.message\r
91892 }};\r
91893 ZmZimbraAccount.prototype.getStatusIcon=function(){\r
91894 switch(this.status){\r
91895 case ZmZimbraAccount.STATUS_OFFLINE:return"ImAway";\r
91896 case ZmZimbraAccount.STATUS_AUTHFAIL:return"ImDnd";\r
91897 case ZmZimbraAccount.STATUS_ERROR:return"Critical"\r
91898 }\r
91899 return null\r
91900 };\r
91901 ZmZimbraAccount.prototype.getIcon=function(){\r
91902 return(this.isMain&&appCtxt.isOffline)?"LocalFolders":this.icon\r
91903 };\r
91904 ZmZimbraAccount.prototype.getZdMsg=function(e){\r
91905 var t=((ZdMsg["client."+e])||(ZdMsg["exception."+e]));\r
91906 if(!t&&e){\r
91907 t=ZdMsg["exception.offline.UNEXPECTED"]\r
91908 }\r
91909 return t\r
91910 };\r
91911 ZmZimbraAccount.prototype.getStatusMessage=function(){\r
91912 switch(this.status){\r
91913 case ZmZimbraAccount.STATUS_OFFLINE:return ZmMsg.imStatusOffline;\r
91914 case ZmZimbraAccount.STATUS_ONLINE:return ZmMsg.imStatusOnline;\r
91915 case ZmZimbraAccount.STATUS_RUNNING:return ZmMsg.running;\r
91916 case ZmZimbraAccount.STATUS_AUTHFAIL:return this.code?this.getZdMsg(this.code):AjxMessageFormat.format(ZmMsg.authFailure,this.getEmail());\r
91917 case ZmZimbraAccount.STATUS_ERROR:return this.code?this.getZdMsg(this.code):ZmMsg.error\r
91918 }\r
91919 return""\r
91920 };\r
91921 ZmZimbraAccount.prototype.showErrorMessage=function(){\r
91922 if(this.status!=ZmZimbraAccount.STATUS_ERROR){\r
91923 return\r
91924 }\r
91925 var a=appCtxt.getErrorDialog();\r
91926 var o=this.getZdMsg(this.code);\r
91927 if(o==""){\r
91928 o=this.getStatusMessage()\r
91929 }\r
91930 a.setMessage(o);\r
91931 var t=[];\r
91932 var e=0;\r
91933 if(this.errorMessage){\r
91934 t[e++]="<p><b>";\r
91935 t[e++]=ZdMsg.DebugMsg;\r
91936 t[e++]="</b>: ";\r
91937 t[e++]=this.errorMessage;\r
91938 t[e++]="</p>"\r
91939 }\r
91940 if(this.errorDetail){\r
91941 t[e++]="<p><b>";\r
91942 t[e++]=ZdMsg.DebugStack;\r
91943 t[e++]="</b>:</p><p><pre>";\r
91944 t[e++]=this.errorDetail;\r
91945 t[e++]="</pre></p>"\r
91946 }\r
91947 t[e++]="<p><b>";\r
91948 t[e++]=ZdMsg.DebugActionNote;\r
91949 t[e++]="</b></p>";\r
91950 a.setDetailString(t.join(""));\r
91951 a.popup(null,true)\r
91952 };\r
91953 ZmZimbraAccount.createFromDom=function(e){\r
91954 var t=new ZmZimbraAccount();\r
91955 t._loadFromDom(e);\r
91956 return t\r
91957 };\r
91958 ZmZimbraAccount.prototype.load=function(u){\r
91959 if(!this.loaded){\r
91960 this.settings=new ZmSettings();\r
91961 var r=appCtxt.accountList.mainAccount;\r
91962 for(var o=0;\r
91963 o<ZmApp.APPS.length;\r
91964 o++){\r
91965 var h=ZmApp.APPS[o];\r
91966 var f=ZmApp.SETTING[h];\r
91967 if(f&&appCtxt.get(f,null,r)){\r
91968 var t=appCtxt.getApp(h);\r
91969 if(t){\r
91970 t._registerSettings(this.settings)\r
91971 }}}\r
91972 var a=new ZmBatchCommand(null,this.name);\r
91973 var n=new AjxCallback(this,this._handleLoadSettings);\r
91974 this.settings.loadUserSettings(n,null,this.name,null,null,a);\r
91975 var e=AjxSoapDoc.create("GetTagRequest","urn:zimbraMail");\r
91976 var d=new AjxCallback(this,this._handleLoadTags);\r
91977 a.addNewRequestParams(e,d);\r
91978 var c=AjxSoapDoc.create("GetFolderRequest","urn:zimbraMail");\r
91979 c.getMethod().setAttribute("visible","1");\r
91980 var l=new AjxCallback(this,this._handleLoadFolders);\r
91981 a.addNewRequestParams(c,l);\r
91982 var m=new AjxCallback(this,this._handleLoadUserInfo,u);\r
91983 var s=new AjxCallback(this,this._handleErrorLoad);\r
91984 a.run(m,s)\r
91985 }else{\r
91986 if(u){\r
91987 u.run()\r
91988 }}};\r
91989 ZmZimbraAccount.prototype.unload=function(){\r
91990 if(!appCtxt.inStartup){\r
91991 this.settings.loadShortcuts(true)\r
91992 }};\r
91993 ZmZimbraAccount.prototype.sync=function(a){\r
91994 var e=AjxSoapDoc.create("SyncRequest","urn:zimbraOffline");\r
91995 if(appCtxt.get(ZmSetting.OFFLINE_DEBUG_TRACE)){\r
91996 var t=e.getMethod();\r
91997 t.setAttribute("debug",1)\r
91998 }\r
91999 appCtxt.getAppController().sendRequest({\r
92000 soapDoc:e,asyncMode:true,noBusyOverlay:true,callback:a,accountName:this.name}\r
92001 )\r
92002 };\r
92003 ZmZimbraAccount.prototype.save=function(a,t,e){\r
92004 return(this.getIdentity().save(a,t,e))\r
92005 };\r
92006 ZmZimbraAccount.prototype.saveImplicitPrefs=function(){\r
92007 ZmCsfeCommand._curAuthToken=ZmCsfeCommand.getAuthToken();\r
92008 var t=[];\r
92009 for(var a in ZmSetting.CHANGED_IMPLICIT){\r
92010 var e=this.settings?this.settings.getSetting(a):null;\r
92011 if(e&&(e.getValue(null,true)!=e.origValue)){\r
92012 t.push(e)\r
92013 }}\r
92014 if(t&&t.length){\r
92015 this.settings.save(t,null,null,this.name)\r
92016 }};\r
92017 ZmZimbraAccount.prototype.isAppEnabled=function(e){\r
92018 switch(e){\r
92019 case ZmApp.BRIEFCASE:return appCtxt.get(ZmSetting.BRIEFCASE_ENABLED,null,this);\r
92020 case ZmApp.CALENDAR:return appCtxt.get(ZmSetting.CALENDAR_ENABLED,null,this);\r
92021 case ZmApp.CONTACTS:return appCtxt.get(ZmSetting.CONTACTS_ENABLED,null,this);\r
92022 case ZmApp.IM:return appCtxt.get(ZmSetting.IM_ENABLED,null,this);\r
92023 case ZmApp.MAIL:return appCtxt.get(ZmSetting.MAIL_ENABLED,null,this);\r
92024 case ZmApp.NOTEBOOK:return appCtxt.get(ZmSetting.NOTEBOOK_ENABLED,null,this);\r
92025 case ZmApp.PREFERENCES:return appCtxt.get(ZmSetting.OPTIONS_ENABLED,null,this);\r
92026 case ZmApp.TASKS:return appCtxt.get(ZmSetting.TASKS_ENABLED,null,this)\r
92027 }};\r
92028 ZmZimbraAccount.prototype._handleLoadSettings=function(e){\r
92029 this.type=appCtxt.get(ZmSetting.OFFLINE_ACCOUNT_FLAVOR,null,this);\r
92030 this.isZimbraAccount=this.type==ZmAccount.TYPE_ZIMBRA;\r
92031 switch(this.type){\r
92032 case ZmAccount.TYPE_AOL:this.icon="AccountAOL";\r
92033 break;\r
92034 case ZmAccount.TYPE_GMAIL:this.icon="AccountGmail";\r
92035 break;\r
92036 case ZmAccount.TYPE_IMAP:this.icon="AccountIMAP";\r
92037 break;\r
92038 case ZmAccount.TYPE_LIVE:this.icon="AccountMSN";\r
92039 break;\r
92040 case ZmAccount.TYPE_MSE:this.icon="AccountExchange";\r
92041 break;\r
92042 case ZmAccount.TYPE_POP:this.icon="AccountPOP";\r
92043 break;\r
92044 case ZmAccount.TYPE_YMP:this.icon="AccountYahoo";\r
92045 break;\r
92046 case ZmAccount.TYPE_ZIMBRA:this.icon="AccountZimbra";\r
92047 break\r
92048 }\r
92049 var t=e.getResponse().GetInfoResponse;\r
92050 appCtxt.getIdentityCollection(this).initialize(t.identities);\r
92051 appCtxt.getDataSourceCollection(this).initialize(t.dataSources);\r
92052 appCtxt.getSignatureCollection(this).initialize(t.signatures);\r
92053 if(!this.isZimbraAccount){\r
92054 appCtxt.set(ZmSetting.MAIL_READ_RECEIPT_ENABLED,false)\r
92055 }};\r
92056 ZmZimbraAccount.prototype._handleLoadFolders=function(e){\r
92057 var a=e.getResponse().GetFolderResponse;\r
92058 var t=a?a.folder[0]:null;\r
92059 if(t){\r
92060 appCtxt.getRequestMgr()._loadTree(ZmOrganizer.FOLDER,null,a.folder[0],"folder",this)\r
92061 }};\r
92062 ZmZimbraAccount.prototype._handleLoadTags=function(e){\r
92063 var t=e.getResponse().GetTagResponse;\r
92064 appCtxt.getRequestMgr()._loadTree(ZmOrganizer.TAG,null,t,null,this)\r
92065 };\r
92066 ZmZimbraAccount.prototype._handleLoadUserInfo=function(t){\r
92067 this.loaded=true;\r
92068 var e=appCtxt.getFolderTree(this);\r
92069 if(e){\r
92070 e.getPermissions({\r
92071 noBusyOverlay:true}\r
92072 )\r
92073 }\r
92074 if(t){\r
92075 t.run()\r
92076 }};\r
92077 ZmZimbraAccount.prototype._handleErrorLoad=function(e){};\r
92078 ZmZimbraAccount.prototype._loadFromDom=function(e){\r
92079 this.id=e.id;\r
92080 this.name=e.name;\r
92081 this.visible=e.visible;\r
92082 var t=e.attrs&&e.attrs._attrs;\r
92083 this._displayName=t?t.displayName:this.email;\r
92084 this._accountName=t&&t.zimbraPrefLabel\r
92085 }\r
92086 }\r
92087 if(AjxPackage.define("zimbraMail.share.model.ZmInvite")){\r
92088 ZmInvite=function(){\r
92089 ZmModel.call(this)\r
92090 };\r
92091 ZmInvite.prototype=new ZmModel;\r
92092 ZmInvite.prototype.constructor=ZmInvite;\r
92093 ZmInvite.prototype.toString=function(){\r
92094 return"ZmInvite: name="+this.name+" id="+this.id\r
92095 };\r
92096 ZmInvite._sendFun=null;\r
92097 ZmInvite.createFromDom=function(n){\r
92098 var t=new ZmInvite();\r
92099 t.components=n[0].comp;\r
92100 t.replies=n[0].replies;\r
92101 if(t.components==null){\r
92102 t.components=[{}\r
92103 ];\r
92104 t.components.empty=true\r
92105 }\r
92106 var e=n[0];\r
92107 if(e.tz){\r
92108 for(var o=0;\r
92109 o<e.tz.length;\r
92110 o++){\r
92111 var h=e.tz[o];\r
92112 var s=AjxTimezone.getRule(h.id);\r
92113 if(!s){\r
92114 var r={\r
92115 standard:h.standard?AjxUtil.createProxy(h.standard[0]):{}\r
92116 ,daylight:h.daylight?AjxUtil.createProxy(h.daylight[0]):null};\r
92117 r.standard.offset=h.stdoff;\r
92118 delete r.standard._object_;\r
92119 if(h.daylight){\r
92120 r.daylight.offset=h.dayoff;\r
92121 delete r.daylight._object_\r
92122 }\r
92123 s=AjxTimezone.getRule(h.id,r);\r
92124 if(s){\r
92125 var a=AjxUtil.createProxy(s);\r
92126 a.aliasId=s.clientId;\r
92127 a.clientId=h.id;\r
92128 a.serverId=h.id;\r
92129 AjxTimezone.addRule(a)\r
92130 }}\r
92131 if(!s){\r
92132 s={\r
92133 clientId:h.id,serverId:h.id,autoDetected:true};\r
92134 if(h.daylight){\r
92135 s.standard=AjxUtil.createProxy(h.standard[0]);\r
92136 s.standard.offset=h.stdoff;\r
92137 s.standard.trans=AjxTimezone.createTransitionDate(s.standard);\r
92138 s.daylight=AjxUtil.createProxy(h.daylight[0]);\r
92139 s.daylight.offset=h.dayoff;\r
92140 s.daylight.trans=AjxTimezone.createTransitionDate(s.daylight)\r
92141 }else{\r
92142 s.standard={\r
92143 offset:h.stdoff}\r
92144 }\r
92145 AjxTimezone.addRule(s)\r
92146 }}}\r
92147 t.type=e&&e.type?e.type:"appt";\r
92148 return t\r
92149 };\r
92150 ZmInvite.prototype.setMessageId=function(e){\r
92151 this.msgId=e\r
92152 };\r
92153 ZmInvite.prototype.getMessageId=function(){\r
92154 return this.msgId\r
92155 };\r
92156 ZmInvite.prototype.getComponent=function(e){\r
92157 return this.components[e]\r
92158 };\r
92159 ZmInvite.prototype.getComponents=function(){\r
92160 return this.components\r
92161 };\r
92162 ZmInvite.prototype.getComponentByUid=function(t){\r
92163 for(var e=0;\r
92164 e<components.length;\r
92165 ++e){\r
92166 if(components.uid==t){\r
92167 break\r
92168 }}};\r
92169 ZmInvite.prototype.hasMultipleComponents=function(){\r
92170 return(this.components.length>1)\r
92171 };\r
92172 ZmInvite.prototype.hasOtherAttendees=function(e){\r
92173 var t=e||0;\r
92174 return this.components[t].at&&this.components[t].at.length>0\r
92175 };\r
92176 ZmInvite.prototype.getEventName=function(e){\r
92177 var t=e||0;\r
92178 return this.components[t]?this.components[t].name:null\r
92179 };\r
92180 ZmInvite.prototype.getAlarm=function(e){\r
92181 var t=e||0;\r
92182 return this.components[t]?this.components[t].alarm:null\r
92183 };\r
92184 ZmInvite.prototype.getInviteMethod=function(e){\r
92185 var t=e||0;\r
92186 return this.components[t]?this.components[t].method:null\r
92187 };\r
92188 ZmInvite.prototype.getOrganizerEmail=function(e){\r
92189 var t=e||0;\r
92190 return(this.components[t]&&this.components[t].or&&this.components[t].or.url)?(this.components[t].or.url.replace("MAILTO:","")):null\r
92191 };\r
92192 ZmInvite.prototype.getOrganizerName=function(e){\r
92193 var t=e||0;\r
92194 return(this.components[t]&&this.components[t].or)?(this.components[t].or.d||this.components[t].or.url):null\r
92195 };\r
92196 ZmInvite.prototype.getSentBy=function(e){\r
92197 var t=e||0;\r
92198 return(this.components[t]&&this.components[t].or)?this.components[t].or.sentBy:null\r
92199 };\r
92200 ZmInvite.prototype.isOrganizer=function(e){\r
92201 var t=e||0;\r
92202 return this.components[t]?(!!this.components[t].isOrg):false\r
92203 };\r
92204 ZmInvite.prototype.shouldRsvp=function(e){\r
92205 var t=e||0;\r
92206 return this.components[t]?this.components[t].rsvp:null\r
92207 };\r
92208 ZmInvite.prototype.getRecurrenceRules=function(e){\r
92209 var t=e||0;\r
92210 return this.components[t].recur\r
92211 };\r
92212 ZmInvite.prototype.getAttendees=function(a){\r
92213 var n=a||0;\r
92214 var e=this.components[n].at;\r
92215 var o=[];\r
92216 if(!(e&&e.length)){\r
92217 return o\r
92218 }\r
92219 for(var t=0;\r
92220 t<e.length;\r
92221 t++){\r
92222 if(!e[t].cutype||(e[t].cutype==ZmCalendarApp.CUTYPE_INDIVIDUAL)){\r
92223 o.push(e[t])\r
92224 }}\r
92225 return o\r
92226 };\r
92227 ZmInvite.prototype.getReplies=function(e){\r
92228 var t=e||0;\r
92229 return(this.replies&&this.replies[t])?this.replies[t].reply:null\r
92230 };\r
92231 ZmInvite.prototype.getResources=function(a){\r
92232 var n=a||0;\r
92233 var e=this.components[n].at;\r
92234 var o=[];\r
92235 if(!(e&&e.length)){\r
92236 return o\r
92237 }\r
92238 for(var t=0;\r
92239 t<e.length;\r
92240 t++){\r
92241 if(e[t].cutype==ZmCalendarApp.CUTYPE_RESOURCE){\r
92242 o.push(e[t])\r
92243 }}\r
92244 return o\r
92245 };\r
92246 ZmInvite.prototype.getExceptId=function(e){\r
92247 var t=e||0;\r
92248 return(this.components[t]&&this.components[t].exceptId)?this.components[t].exceptId[0]:null\r
92249 };\r
92250 ZmInvite.prototype.getStatus=function(e){\r
92251 var t=e||0;\r
92252 return this.components[t].status\r
92253 };\r
92254 ZmInvite.prototype.isEmpty=function(){\r
92255 return Boolean(this.components.empty)\r
92256 };\r
92257 ZmInvite.prototype.isException=function(e){\r
92258 var t=e||0;\r
92259 return this.components[t]?this.components[t].ex:false\r
92260 };\r
92261 ZmInvite.prototype.isRecurring=function(e){\r
92262 var t=e||0;\r
92263 return this.components[t]?this.components[t].recur:false\r
92264 };\r
92265 ZmInvite.prototype.isAllDayEvent=function(e){\r
92266 var t=e||0;\r
92267 return this.components[t]?this.components[t].allDay=="1":false\r
92268 };\r
92269 ZmInvite.prototype.isMultiDay=function(t){\r
92270 var o=t||0;\r
92271 var a=this.getServerStartDate(o);\r
92272 var e=this.getServerEndDate(o);\r
92273 return(a.getDate()!=e.getDate())||(a.getMonth()!=e.getMonth())||(a.getFullYear()!=e.getFullYear())\r
92274 };\r
92275 ZmInvite.prototype.getComponentDescriptionHtml=function(e){\r
92276 var o=e||0;\r
92277 if(this.components[o]==null){\r
92278 return\r
92279 }\r
92280 var a=this.components[o].descHtml;\r
92281 var t=a&&a[0]._content||null;\r
92282 return t\r
92283 };\r
92284 ZmInvite.prototype.getComponentDescription=function(e){\r
92285 var o=e||0;\r
92286 if(this.components[o]==null){\r
92287 return\r
92288 }\r
92289 var a=this.components[o].desc;\r
92290 var t=a&&a[0]._content||null;\r
92291 return t\r
92292 };\r
92293 ZmInvite.prototype.getServerEndTime=function(l){\r
92294 var u=l||0;\r
92295 if(this.components[u]==null){\r
92296 return\r
92297 }\r
92298 if(this._serverEndTime==null){\r
92299 if(this.components[u].e!=null){\r
92300 this._serverEndTime=this.components[u].e[0].d\r
92301 }else{\r
92302 if(this.components[u].s){\r
92303 var a=this.components[u].dur;\r
92304 var f=a&&a[0].d||0;\r
92305 var e=a&&a[0].w||0;\r
92306 var n=a&&a[0].h||0;\r
92307 var s=a&&a[0].m||0;\r
92308 var g=a&&a[0].s||0;\r
92309 var p=parseInt(g)+(parseInt(s)*60)+(parseInt(n)*3600)+(parseInt(f)*24*3600)+(parseInt(e)*7*24*3600);\r
92310 var o=this.components[u].s[0].d;\r
92311 var r=parseInt(o.substr(0,4),10);\r
92312 var m=parseInt(o.substr(4,2),10);\r
92313 var f=parseInt(o.substr(6,2),10);\r
92314 var c=new Date(r,m-1,f);\r
92315 if(o.charAt(8)=="T"){\r
92316 n=parseInt(o.substr(9,2),10);\r
92317 s=parseInt(o.substr(11,2),10);\r
92318 g=parseInt(o.substr(13,2),10);\r
92319 c.setHours(n,s,g,0)\r
92320 }\r
92321 var h=new Date(c.getTime()+(p*1000));\r
92322 m=AjxDateUtil._pad(c.getMonth()+1);\r
92323 f=AjxDateUtil._pad(c.getDate());\r
92324 n=AjxDateUtil._pad(c.getHours());\r
92325 s=AjxDateUtil._pad(c.getMinutes());\r
92326 g=AjxDateUtil._pad(c.getSeconds());\r
92327 r=c.getFullYear();\r
92328 this._serverEndTime=[r,m,f,"T",n,s,g].join("")\r
92329 }}}\r
92330 return this._serverEndTime\r
92331 };\r
92332 ZmInvite.prototype.getServerEndDate=function(e){\r
92333 var t=e||0;\r
92334 if(this._serverEndDate==null){\r
92335 this._serverEndDate=AjxDateUtil.parseServerDateTime(this.getServerEndTime(t))\r
92336 }\r
92337 return this._serverEndDate\r
92338 };\r
92339 ZmInvite.prototype.getServerStartTime=function(e){\r
92340 var t=e||0;\r
92341 return this.components[t]&&this.components[t].s?this.components[t].s[0].d:null\r
92342 };\r
92343 ZmInvite.prototype.getServerStartDate=function(e){\r
92344 var t=e||0;\r
92345 if(this._serverStartDate==null){\r
92346 this._serverStartDate=AjxDateUtil.parseServerDateTime(this.getServerStartTime(t))\r
92347 }\r
92348 return this._serverStartDate\r
92349 };\r
92350 ZmInvite.prototype.getServerStartTimeTz=function(e){\r
92351 var a=e||0;\r
92352 if(this.components[a]==null){\r
92353 return\r
92354 }\r
92355 if(this._serverStartTimeZone==null){\r
92356 var t=this.getServerStartTime();\r
92357 this._serverStartTimeZone=t&&t.charAt(t.length-1)=="Z"?AjxTimezone.GMT_NO_DST:(this.components[a].s?this.components[a].s[0].tz:null)\r
92358 }\r
92359 return this._serverStartTimeZone\r
92360 };\r
92361 ZmInvite.prototype.getServerEndTimeTz=function(t){\r
92362 var a=t||0;\r
92363 if(this.components[a]==null){\r
92364 return\r
92365 }\r
92366 if(this._serverEndTimeZone==null){\r
92367 var e=this.getServerEndTime();\r
92368 this._serverEndTimeZone=e&&startTime.charAt(e.length-1)=="Z"?AjxTimezone.GMT_NO_DST:this.components[a].e[0].tz\r
92369 }\r
92370 return this._serverEndTimeZone\r
92371 };\r
92372 ZmInvite.prototype.getDurationText=function(d,p,e,r){\r
92373 var m=this.components[d];\r
92374 if(this.isAllDayEvent(d)){\r
92375 if(p){\r
92376 return""\r
92377 }\r
92378 var u=this.getServerStartDate(d);\r
92379 if(this.isMultiDay(d)){\r
92380 var h=this.getServerEndDate(d);\r
92381 var s=AjxDateFormat.getDateInstance();\r
92382 var c=s.format(u);\r
92383 var t=s.format(h);\r
92384 if(!ZmInvite._daysFormatter){\r
92385 ZmInvite._daysFormatter=new AjxMessageFormat(ZmMsg.durationDays)\r
92386 }\r
92387 return ZmInvite._daysFormatter.format([c,t])\r
92388 }else{\r
92389 var s=AjxDateFormat.getDateInstance(AjxDateFormat.FULL);\r
92390 return s.format(u)\r
92391 }}else{\r
92392 var s=AjxDateFormat.getDateInstance(AjxDateFormat.FULL);\r
92393 var n=AjxDateFormat.getTimeInstance(AjxDateFormat.SHORT);\r
92394 var u=this.getServerStartDate(d);\r
92395 var f=[s.format(u),r?" ":"<br>"];\r
92396 if(e){\r
92397 f.push(n.format(u))\r
92398 }else{\r
92399 var h=this.getServerEndDate(d);\r
92400 var o=n.format(u);\r
92401 var l=n.format(h);\r
92402 if(!ZmInvite._hoursFormatter){\r
92403 ZmInvite._hoursFormatter=new AjxMessageFormat(ZmMsg.durationHours)\r
92404 }\r
92405 f.push(ZmInvite._hoursFormatter.format([o,l]))\r
92406 }\r
92407 return f.join("")\r
92408 }};\r
92409 ZmInvite.prototype.getName=function(e){\r
92410 var t=e||0;\r
92411 return this.components[t]?this.components[t].name:null\r
92412 };\r
92413 ZmInvite.prototype.getFreeBusy=function(e){\r
92414 var t=e||0;\r
92415 return this.components[t]?this.components[t].fb:null\r
92416 };\r
92417 ZmInvite.prototype.getPrivacy=function(e){\r
92418 var t=e||0;\r
92419 return this.components[t]?this.components[t]["class"]:null\r
92420 };\r
92421 ZmInvite.prototype.getXProp=function(e){\r
92422 var t=e||0;\r
92423 return this.components[t]?this.components[t]["xprop"]:null\r
92424 };\r
92425 ZmInvite.prototype.getLocation=function(e){\r
92426 var t=e||0;\r
92427 return this.components[t]?this.components[t].loc:null\r
92428 };\r
92429 ZmInvite.prototype.getToolTip=function(){\r
92430 if(this._toolTip){\r
92431 return this._toolTip\r
92432 }\r
92433 var o=0;\r
92434 var a=[];\r
92435 var t=0;\r
92436 a[t++]="<table cellpadding=0 cellspacing=0 border=0 >";\r
92437 a[t++]="<tr valign='center'><td colspan=2 align='left'>";\r
92438 a[t++]="<div style='border-bottom: 1px solid black;'>";\r
92439 a[t++]="<table cellpadding=0 cellspacing=0 border=0 width=100%>";\r
92440 a[t++]="<tr valign='center'><td><b>";\r
92441 a[t++]="<div style='white-space:nowrap'><table border=0 cellpadding=0 cellspacing=0 style='display:inline'><tr>";\r
92442 if(this.hasOtherAttendees(o)){\r
92443 a[t++]="<td>";\r
92444 a[t++]=AjxImg.getImageHtml("ApptMeeting");\r
92445 a[t++]="</td>"\r
92446 }\r
92447 if(this.isException(o)){\r
92448 a[t++]="<td>";\r
92449 a[t++]=AjxImg.getImageHtml("ApptException");\r
92450 a[t++]="</td>"\r
92451 }else{\r
92452 if(this.isRecurring(o)){\r
92453 a[t++]="<td>";\r
92454 a[t++]=AjxImg.getImageHtml("ApptRecur");\r
92455 a[t++]="</td>"\r
92456 }}\r
92457 a[t++]="</tr></table>&nbsp;";\r
92458 a[t++]=AjxStringUtil.htmlEncode(this.getName(o));\r
92459 a[t++]="&nbsp;</div></b></td><td align='right'>";\r
92460 a[t++]=AjxImg.getImageHtml("Appointment");\r
92461 a[t++]="</td></table></div></td></tr>";\r
92462 var e=this.getDurationText(o,false,false);\r
92463 t=this._addEntryRow(ZmMsg.when,e,a,t,false,null,true);\r
92464 if(this.isRecurring(o)){\r
92465 if(!this._recurBlurb){\r
92466 AjxDispatcher.require("CalendarCore");\r
92467 var n=new ZmRecurrence();\r
92468 n.parse(this.getRecurrenceRules(o));\r
92469 this._recurBlurb=n.getBlurb()\r
92470 }\r
92471 t=this._addEntryRow(ZmMsg.repeats,this._recurBlurb,a,t,true,null,true)\r
92472 }\r
92473 t=this._addEntryRow(ZmMsg.location,this.getLocation(o),a,t,false);\r
92474 a[t++]="</table>";\r
92475 this._toolTip=a.join("");\r
92476 return this._toolTip\r
92477 };\r
92478 ZmInvite.prototype.getSummary=function(e){\r
92479 var r=0;\r
92480 var l=this.getOrganizerName(r);\r
92481 var d=this.getDurationText(r,false,false,true);\r
92482 var h=this.getLocation(r);\r
92483 if(this.isRecurring(r)){\r
92484 if(!this._recurBlurb){\r
92485 AjxDispatcher.require("CalendarCore");\r
92486 var s=new ZmRecurrence();\r
92487 s.setRecurrenceRules(this.getRecurrenceRules(r),this.getServerStartDate(r));\r
92488 this._recurBlurb=s.getBlurb()\r
92489 }}\r
92490 var n=this._recurBlurb;\r
92491 var t=[];\r
92492 var o=0;\r
92493 if(!this._summaryHtmlLineFormatter){\r
92494 this._summaryHtmlLineFormatter=new AjxMessageFormat("<tr><th align='left'>{0}</th><td>{1} {2}</td></tr>");\r
92495 this._summaryTextLineFormatter=new AjxMessageFormat("{0} {1} {2}")\r
92496 }\r
92497 var c=e?this._summaryHtmlLineFormatter:this._summaryTextLineFormatter;\r
92498 var a=[];\r
92499 if(e){\r
92500 t[o++]="<p>\n<table border='0'>\n"\r
92501 }\r
92502 if(l){\r
92503 a=[ZmMsg.organizerLabel,l,""];\r
92504 t[o++]=c.format(a);\r
92505 t[o++]="\n"\r
92506 }\r
92507 if(d){\r
92508 a=[ZmMsg.whenLabel,d,""];\r
92509 t[o++]=c.format(a);\r
92510 t[o++]="\n"\r
92511 }\r
92512 if(h){\r
92513 a=[ZmMsg.locationLabel,h,""];\r
92514 t[o++]=c.format(a);\r
92515 t[o++]="\n"\r
92516 }\r
92517 if(n){\r
92518 a=[ZmMsg.repeatLabel,n,""];\r
92519 t[o++]=c.format(a);\r
92520 t[o++]="\n"\r
92521 }\r
92522 if(e){\r
92523 t[o++]="</table>\n"\r
92524 }\r
92525 t[o++]=e?"<div>":"\n\n";\r
92526 t[o++]=ZmItem.NOTES_SEPARATOR;\r
92527 t[o++]=e?"</div><br>":"\n\n";\r
92528 return t.join("")\r
92529 };\r
92530 ZmInvite.prototype._addEntryRow=function(r,s,t,e,n,o,a){\r
92531 if(s!=null&&s!=""){\r
92532 t[e++]="<tr valign='top'><td align='right' style='padding-right: 5px;'><b><div style='white-space:nowrap'>";\r
92533 t[e++]=AjxMessageFormat.format(ZmMsg.makeLabel,AjxStringUtil.htmlEncode(r));\r
92534 t[e++]="</div></b></td><td align='left'><div style='white-space:";\r
92535 t[e++]=n?"wrap;":"nowrap;";\r
92536 if(o){\r
92537 t[e++]="width:";\r
92538 t[e++]=o;\r
92539 t[e++]="px;"\r
92540 }\r
92541 t[e++]="'>";\r
92542 t[e++]=a?s:AjxStringUtil.htmlEncode(s);\r
92543 t[e++]="</div></td></tr>"\r
92544 }\r
92545 return e\r
92546 };\r
92547 ZmInvite.prototype.hasAcceptableComponents=function(){\r
92548 for(var e in this.components){\r
92549 if(this.getStatus(e)!=ZmCalendarApp.STATUS_CANC){\r
92550 return true\r
92551 }}\r
92552 return false\r
92553 };\r
92554 ZmInvite.prototype.hasInviteReplyMethod=function(t){\r
92555 var e=this.getInviteMethod(t);\r
92556 var a=(e==ZmCalendarApp.METHOD_REQUEST||e==ZmCalendarApp.METHOD_PUBLISH);\r
92557 return((e==null)||a)\r
92558 }\r
92559 }\r
92560 if(AjxPackage.define("zimbraMail.share.model.ZmImAddress")){\r
92561 ZmImAddress={\r
92562 IM_SERVICES:[{\r
92563 label:ZmMsg.zimbraTitle,value:"local"}\r
92564 ,{\r
92565 label:ZmMsg.yahoo,value:"yahoo"}\r
92566 ,{\r
92567 label:ZmMsg.msn,value:"msn"}\r
92568 ,{\r
92569 label:ZmMsg.aol,value:"aol"}\r
92570 ,{\r
92571 label:ZmMsg.other,value:"other"}\r
92572 ],REGEXP:[],parse:function(t){\r
92573 var e=ZmImAddress.REGEXP.exec(t);\r
92574 if(e){\r
92575 return{\r
92576 service:e[1],screenName:e[2]}\r
92577 }}\r
92578 ,make:function(e,t){\r
92579 var a=e+"://"+t;\r
92580 if(ZmImAddress.parse(a)){\r
92581 return a\r
92582 }\r
92583 return""\r
92584 }\r
92585 ,display:function(r){\r
92586 var n=ZmImAddress.parse(r);\r
92587 if(n){\r
92588 var e=ZmImAddress.IM_SERVICES,t=0,o;\r
92589 while(o=e[t++]){\r
92590 if(o.value==n.service){\r
92591 break\r
92592 }}\r
92593 if(o){\r
92594 return n.screenName+" ("+o.label+")"\r
92595 }}\r
92596 return r\r
92597 }};\r
92598 if(/^SmartZone/.test(ZmMsg.zimbraTitle)){\r
92599 ZmImAddress.IM_SERVICES.splice(0,1)\r
92600 }\r
92601 for(var i=0;\r
92602 i<ZmImAddress.IM_SERVICES.length;\r
92603 ++i){\r
92604 ZmImAddress.REGEXP.push(ZmImAddress.IM_SERVICES[i].value)\r
92605 }\r
92606 ZmImAddress.REGEXP=new RegExp("^("+ZmImAddress.REGEXP.join("|")+")://([^\\s]+)$","i")\r
92607 }\r
92608 if(AjxPackage.define("zimbraMail.share.model.ZmAccessControlList")){\r
92609 ZmAccessControlList=function(e){\r
92610 this._aces={}\r
92611 };\r
92612 ZmAccessControlList.prototype.toString=function(){\r
92613 return"ZmAccessControlList"\r
92614 };\r
92615 ZmAccessControlList.prototype.load=function(a){\r
92616 var t={\r
92617 GetPermissionRequest:{\r
92618 _jsns:"urn:zimbraMail"}};\r
92619 var e=new AjxCallback(this,this._handleResponseLoad,[a]);\r
92620 appCtxt.getAppController().sendRequest({\r
92621 jsonObj:t,asyncMode:true,callback:e}\r
92622 )\r
92623 };\r
92624 ZmAccessControlList.prototype._handleResponseLoad=function(n,e){\r
92625 var t=e.getResponse();\r
92626 var o=t.GetPermissionResponse.ace;\r
92627 if(o&&o.length){\r
92628 for(var a=0;\r
92629 a<o.length;\r
92630 a++){\r
92631 this.add(ZmAccessControlEntry.createFromDom(o[a]))\r
92632 }}\r
92633 if(n){\r
92634 n.run()\r
92635 }};\r
92636 ZmAccessControlList.prototype.getACLByRight=function(e){\r
92637 return this._aces[e]\r
92638 };\r
92639 ZmAccessControlList.prototype.getGranteeType=function(u){\r
92640 var t=this._aces[u];\r
92641 var a=ZmSetting.ACL_PUBLIC;\r
92642 var m={};\r
92643 if(t&&t.length){\r
92644 for(var r=0;\r
92645 r<t.length;\r
92646 r++){\r
92647 var n=t[r];\r
92648 var c=(n.granteeType==ZmSetting.ACL_USER||n.granteeType==ZmSetting.ACL_GROUP)?ZmSetting.ACL_USER:n.granteeType;\r
92649 m[c]=n.negative?-1:1\r
92650 }}\r
92651 var d=(m[ZmSetting.ACL_PUBLIC]==1);\r
92652 var o=(m[ZmSetting.ACL_PUBLIC]==-1);\r
92653 var h=(m[ZmSetting.ACL_AUTH]==1);\r
92654 var s=(m[ZmSetting.ACL_AUTH]==-1);\r
92655 var l=(m[ZmSetting.ACL_USER]==1);\r
92656 var e=(o||s)&&(m[ZmSetting.ACL_USER]==null);\r
92657 if(d){\r
92658 return ZmSetting.ACL_PUBLIC\r
92659 }\r
92660 if(h){\r
92661 return ZmSetting.ACL_AUTH\r
92662 }\r
92663 if(o){\r
92664 if(h){\r
92665 return ZmSetting.ACL_AUTH\r
92666 }}\r
92667 if(l){\r
92668 return ZmSetting.ACL_USER\r
92669 }\r
92670 if(e){\r
92671 return ZmSetting.ACL_NONE\r
92672 }\r
92673 return a\r
92674 };\r
92675 ZmAccessControlList.prototype.getACLByGranteeType=function(o,e){\r
92676 var a=this._aces[o];\r
92677 var s=[];\r
92678 if(a&&a.length){\r
92679 for(var t=0;\r
92680 t<a.length;\r
92681 t++){\r
92682 var n=a[t];\r
92683 if(n.granteeType==e){\r
92684 s.push(n)\r
92685 }}}\r
92686 s.sort();\r
92687 return s\r
92688 };\r
92689 ZmAccessControlList.prototype.getGrantees=function(a){\r
92690 var t=this._aces[a];\r
92691 var n=[];\r
92692 if(t&&t.length){\r
92693 for(var e=0;\r
92694 e<t.length;\r
92695 e++){\r
92696 var o=t[e];\r
92697 if(o.granteeType==ZmSetting.ACL_USER||o.granteeType==ZmSetting.ACL_GROUP){\r
92698 n.push(o.grantee)\r
92699 }}}\r
92700 n.sort();\r
92701 return n\r
92702 };\r
92703 ZmAccessControlList.prototype.getGranteesInfo=function(a){\r
92704 var t=this._aces[a];\r
92705 var n=[];\r
92706 if(t&&t.length){\r
92707 for(var e=0;\r
92708 e<t.length;\r
92709 e++){\r
92710 var o=t[e];\r
92711 if(o.granteeType==ZmSetting.ACL_USER||o.granteeType==ZmSetting.ACL_GROUP){\r
92712 n.push({\r
92713 grantee:o.grantee,zid:o.zid}\r
92714 )\r
92715 }}}\r
92716 n.sort(ZmAccessControlList.sortByGrantee);\r
92717 return n\r
92718 };\r
92719 ZmAccessControlList.prototype.grant=function(t,a,e){\r
92720 this._setPerms(t,false,a,e)\r
92721 };\r
92722 ZmAccessControlList.prototype.revoke=function(t,a,e){\r
92723 this._setPerms(t,true,a,e)\r
92724 };\r
92725 ZmAccessControlList.prototype._setPerms=function(e,l,h,a){\r
92726 var o=l?"RevokePermissionRequest":"GrantPermissionRequest";\r
92727 var s=AjxSoapDoc.create(o,"urn:zimbraMail");\r
92728 for(var n=0;\r
92729 n<e.length;\r
92730 n++){\r
92731 var t=e[n];\r
92732 var r=s.set("ace");\r
92733 r.setAttribute("right",t.right);\r
92734 r.setAttribute("gt",t.granteeType);\r
92735 if(t.grantee){\r
92736 r.setAttribute("d",t.grantee)\r
92737 }\r
92738 if(t.zid){\r
92739 r.setAttribute("zid",t.zid)\r
92740 }\r
92741 if(t.negative){\r
92742 r.setAttribute("deny",1)\r
92743 }}\r
92744 var c=new AjxCallback(this,this._handleResponseSetPerms,[l,h]);\r
92745 if(a){\r
92746 a.addNewRequestParams(s,c)\r
92747 }else{\r
92748 appCtxt.getAppController().sendRequest({\r
92749 soapDoc:s,asyncMode:true,callback:c}\r
92750 )\r
92751 }};\r
92752 ZmAccessControlList.prototype._handleResponseSetPerms=function(h,r,l){\r
92753 var n=l.getResponse();\r
92754 var o=h?n.RevokePermissionResponse:n.GrantPermissionResponse;\r
92755 var e=o&&o.ace;\r
92756 var t=[];\r
92757 if(e&&e.length){\r
92758 for(var s=0;\r
92759 s<e.length;\r
92760 s++){\r
92761 var a=ZmAccessControlEntry.createFromDom(e[s]);\r
92762 t.push(a);\r
92763 if(h){\r
92764 this.remove(a)\r
92765 }else{\r
92766 this.update(a)\r
92767 }}}\r
92768 if(r){\r
92769 r.run(t)\r
92770 }};\r
92771 ZmAccessControlList.prototype.add=function(t){\r
92772 if(!t){\r
92773 return\r
92774 }\r
92775 var e=t.right;\r
92776 if(!this._aces[e]){\r
92777 this._aces[e]=[]\r
92778 }\r
92779 this._aces[e].push(t)\r
92780 };\r
92781 ZmAccessControlList.prototype.remove=function(a){\r
92782 if(!a){\r
92783 return\r
92784 }\r
92785 var o=this._aces[a.right];\r
92786 var t=[];\r
92787 if(o&&o.length){\r
92788 for(var e=0;\r
92789 e<o.length;\r
92790 e++){\r
92791 if(o[e].grantee!=a.grantee){\r
92792 t.push(o[e])\r
92793 }}}\r
92794 this._aces[a.right]=t\r
92795 };\r
92796 ZmAccessControlList.prototype.update=function(t,n){\r
92797 if(!t||!t.right){\r
92798 return\r
92799 }\r
92800 var o=false;\r
92801 if(!this._aces[t.right]){\r
92802 this._aces[t.right]=[]\r
92803 }\r
92804 var a=this._aces[t.right];\r
92805 if(a.length){\r
92806 for(var e=0;\r
92807 e<a.length;\r
92808 e++){\r
92809 if((a[e].grantee==t.grantee)&&(a[e].granteeType==t.granteeType)){\r
92810 this._aces[t.right][e]=t;\r
92811 o=true\r
92812 }}}\r
92813 if(!o){\r
92814 this._aces[t.right].push(t)\r
92815 }};\r
92816 ZmAccessControlList.prototype.cleanup=function(){\r
92817 this._aces={}\r
92818 };\r
92819 ZmAccessControlList.sortByGrantee=function(o,e){\r
92820 var n=o.grantee;\r
92821 var t=e.grantee;\r
92822 if(n.toLowerCase()>t.toLowerCase()){\r
92823 return 1\r
92824 }\r
92825 if(n.toLowerCase()<t.toLowerCase()){\r
92826 return -1\r
92827 }\r
92828 return 0\r
92829 };\r
92830 ZmAccessControlEntry=function(e){\r
92831 this.grantee=e.grantee;\r
92832 this.zid=e.zid;\r
92833 this.granteeType=e.granteeType;\r
92834 this.right=e.right;\r
92835 this.negative=e.negative\r
92836 };\r
92837 ZmAccessControlEntry.prototype.toString=function(){\r
92838 return"ZmAccessControlEntry"\r
92839 };\r
92840 ZmAccessControlEntry.createFromDom=function(e){\r
92841 var t={};\r
92842 t.grantee=e.d;\r
92843 t.granteeType=e.gt;\r
92844 t.zid=e.zid;\r
92845 t.right=e.right;\r
92846 t.negative=(e.deny=="1");\r
92847 return new ZmAccessControlEntry(t)\r
92848 }\r
92849 }\r
92850 if(AjxPackage.define("zimbraMail.core.ZmApp")){\r
92851 ZmApp=function(a,t,e){\r
92852 if(arguments.length==0){\r
92853 return\r
92854 }\r
92855 this._name=a;\r
92856 this._appViewMgr=appCtxt.getAppViewMgr();\r
92857 this._container=t;\r
92858 this._parentController=e;\r
92859 this._active=false;\r
92860 this.currentSearch=null;\r
92861 this._deferredFolders=[];\r
92862 this._deferredFolderHash={};\r
92863 this._deferredNotifications=[];\r
92864 ZmApp.DROP_TARGETS[a]={};\r
92865 this._defineAPI();\r
92866 if(!e){\r
92867 this._registerSettings()\r
92868 }\r
92869 this._registerOperations();\r
92870 this._registerItems();\r
92871 this._registerOrganizers();\r
92872 if(!e){\r
92873 this._setupSearchToolbar()\r
92874 }\r
92875 this._registerApp();\r
92876 if(!appCtxt.isChildWindow){\r
92877 this._opc=appCtxt.getOverviewController()\r
92878 }};\r
92879 ZmApp.CLASS={};\r
92880 ZmApp.SETTING={};\r
92881 ZmApp.UPSELL_SETTING={};\r
92882 ZmApp.LOAD_SORT={};\r
92883 ZmApp.BUTTON_ID={};\r
92884 ZmApp.MAIN_PKG={};\r
92885 ZmApp.NAME={};\r
92886 ZmApp.ICON={};\r
92887 ZmApp.TEXT_PRECEDENCE={};\r
92888 ZmApp.IMAGE_PRECEDENCE={};\r
92889 ZmApp.QS_ARG={};\r
92890 ZmApp.QS_ARG_R={};\r
92891 ZmApp.CHOOSER_TOOLTIP={};\r
92892 ZmApp.VIEW_TOOLTIP={};\r
92893 ZmApp.DEFAULT_SEARCH={};\r
92894 ZmApp.ORGANIZER={};\r
92895 ZmApp.OVERVIEW_TREES={};\r
92896 ZmApp.HIDE_ZIMLETS={};\r
92897 ZmApp.SEARCH_TYPES={};\r
92898 ZmApp.SEARCH_TYPES_R={};\r
92899 ZmApp.GOTO_ACTION_CODE={};\r
92900 ZmApp.GOTO_ACTION_CODE_R={};\r
92901 ZmApp.NEW_ACTION_CODE={};\r
92902 ZmApp.ACTION_CODES={};\r
92903 ZmApp.ACTION_CODES_R={};\r
92904 ZmApp.OPS={};\r
92905 ZmApp.OPS_R={};\r
92906 ZmApp.QS_VIEWS={};\r
92907 ZmApp.TRASH_VIEW_OP={};\r
92908 ZmApp.UPSELL_URL={};\r
92909 ZmApp.DROP_TARGETS={};\r
92910 ZmApp.ASSISTANTS={};\r
92911 ZmApp.CHOOSER_SORT={};\r
92912 ZmApp.DEFAULT_SORT={};\r
92913 ZmApp.ENABLED_APPS={};\r
92914 ZmApp.APPS=[];\r
92915 ZmApp.DEFAULT_APPS=[];\r
92916 ZmApp.OVERVIEW_ID="main";\r
92917 ZmApp.initialize=function(){\r
92918 if(appCtxt.get(ZmSetting.USE_KEYBOARD_SHORTCUTS)){\r
92919 ZmApp.ACTION_CODES[ZmKeyMap.NEW_FOLDER]=ZmOperation.NEW_FOLDER;\r
92920 ZmApp.ACTION_CODES[ZmKeyMap.NEW_TAG]=ZmOperation.NEW_TAG\r
92921 }};\r
92922 ZmApp.registerApp=function(n,o){\r
92923 if(o.mainPkg){\r
92924 ZmApp.MAIN_PKG[n]=o.mainPkg\r
92925 }\r
92926 if(o.nameKey){\r
92927 ZmApp.NAME[n]=o.nameKey\r
92928 }\r
92929 if(o.icon){\r
92930 ZmApp.ICON[n]=o.icon\r
92931 }\r
92932 if(o.textPrecedence){\r
92933 ZmApp.TEXT_PRECEDENCE[n]=o.textPrecedence\r
92934 }\r
92935 if(o.imagePrecedence){\r
92936 ZmApp.IMAGE_PRECEDENCE[n]=o.imagePrecedence\r
92937 }\r
92938 if(o.chooserTooltipKey){\r
92939 ZmApp.CHOOSER_TOOLTIP[n]=o.chooserTooltipKey\r
92940 }\r
92941 if(o.viewTooltipKey){\r
92942 ZmApp.VIEW_TOOLTIP[n]=o.viewTooltipKey\r
92943 }\r
92944 if(o.defaultSearch){\r
92945 ZmApp.DEFAULT_SEARCH[n]=o.defaultSearch\r
92946 }\r
92947 if(o.organizer){\r
92948 ZmApp.ORGANIZER[n]=o.organizer\r
92949 }\r
92950 if(o.overviewTrees){\r
92951 ZmApp.OVERVIEW_TREES[n]=o.overviewTrees\r
92952 }\r
92953 if(o.hideZimlets){\r
92954 ZmApp.HIDE_ZIMLETS[n]=o.hideZimlets\r
92955 }\r
92956 if(o.assistants){\r
92957 ZmApp.ASSISTANTS[n]=o.assistants\r
92958 }\r
92959 if(o.searchTypes){\r
92960 ZmApp.SEARCH_TYPES[n]=o.searchTypes\r
92961 }\r
92962 if(o.gotoActionCode){\r
92963 ZmApp.GOTO_ACTION_CODE[n]=o.gotoActionCode\r
92964 }\r
92965 if(o.newActionCode){\r
92966 ZmApp.NEW_ACTION_CODE[n]=o.newActionCode\r
92967 }\r
92968 if(o.qsViews){\r
92969 ZmApp.QS_VIEWS[n]=o.qsViews\r
92970 }\r
92971 if(o.chooserSort){\r
92972 ZmApp.CHOOSER_SORT[n]=o.chooserSort\r
92973 }\r
92974 if(o.defaultSort){\r
92975 ZmApp.DEFAULT_SORT[n]=o.defaultSort\r
92976 }\r
92977 if(o.trashViewOp){\r
92978 ZmApp.TRASH_VIEW_OP[n]=o.trashViewOp\r
92979 }\r
92980 if(o.upsellUrl){\r
92981 ZmApp.UPSELL_URL[n]=o.upsellUrl\r
92982 }\r
92983 if(o.searchTypes){\r
92984 ZmApp.SEARCH_TYPES_R[n]={};\r
92985 for(var t=0;\r
92986 t<o.searchTypes.length;\r
92987 t++){\r
92988 ZmApp.SEARCH_TYPES_R[n][o.searchTypes[t]]=true\r
92989 }}\r
92990 if(o.gotoActionCode){\r
92991 ZmApp.GOTO_ACTION_CODE_R[o.gotoActionCode]=n\r
92992 }\r
92993 if(o.actionCodes){\r
92994 for(var a in o.actionCodes){\r
92995 if(!a){\r
92996 continue\r
92997 }\r
92998 ZmApp.ACTION_CODES_R[a]=n;\r
92999 ZmApp.ACTION_CODES[a]=o.actionCodes[a]\r
93000 }}\r
93001 var e=appCtxt.get(ZmApp.SETTING[n]);\r
93002 if(o.newItemOps&&e){\r
93003 for(var s in o.newItemOps){\r
93004 if(!s){\r
93005 continue\r
93006 }\r
93007 ZmApp.OPS_R[s]=n;\r
93008 ZmOperation.NEW_ITEM_OPS.push(s);\r
93009 ZmOperation.NEW_ITEM_KEY[s]=o.newItemOps[s]\r
93010 }}\r
93011 if(o.newOrgOps&&e){\r
93012 for(var s in o.newOrgOps){\r
93013 if(!s){\r
93014 continue\r
93015 }\r
93016 ZmApp.OPS_R[s]=n;\r
93017 ZmOperation.NEW_ORG_OPS.push(s);\r
93018 ZmOperation.NEW_ORG_KEY[s]=o.newOrgOps[s]\r
93019 }}\r
93020 if(o.qsViews){\r
93021 for(var t=0;\r
93022 t<o.qsViews.length;\r
93023 t++){\r
93024 ZmApp.QS_VIEWS[o.qsViews[t]]=n\r
93025 }}};\r
93026 ZmApp.prototype.toString=function(){\r
93027 return"ZmApp"\r
93028 };\r
93029 ZmApp.prototype._defineAPI=function(){};\r
93030 ZmApp.prototype._registerSettings=function(){};\r
93031 ZmApp.prototype._registerOperations=function(){};\r
93032 ZmApp.prototype._registerItems=function(){};\r
93033 ZmApp.prototype._registerOrganizers=function(){};\r
93034 ZmApp.prototype._setupSearchToolbar=function(){};\r
93035 ZmApp.prototype._registerApp=function(){};\r
93036 ZmApp.prototype._registerPrefs=function(){};\r
93037 ZmApp.prototype.startup=function(e){};\r
93038 ZmApp.prototype.preNotify=function(e){};\r
93039 ZmApp.prototype.deleteNotify=function(e){};\r
93040 ZmApp.prototype.createNotify=function(e){};\r
93041 ZmApp.prototype.modifyNotify=function(e){};\r
93042 ZmApp.prototype.postNotify=function(e){};\r
93043 ZmApp.prototype.refresh=function(e){};\r
93044 ZmApp.prototype.handleOp=function(t,e){};\r
93045 ZmApp.prototype.getName=function(){\r
93046 return this._name\r
93047 };\r
93048 ZmApp.prototype.getDisplayName=function(){\r
93049 return ZmMsg[ZmApp.NAME[this._name]]\r
93050 };\r
93051 ZmApp.prototype.getInitialSearchType=function(){\r
93052 return null\r
93053 };\r
93054 ZmApp.prototype.getLimit=function(e){\r
93055 return appCtxt.get(ZmSetting.PAGE_SIZE)\r
93056 };\r
93057 ZmApp.prototype.setAppView=function(e){\r
93058 this._appViewMgr.setAppView(this._name,e)\r
93059 };\r
93060 ZmApp.prototype.createView=function(e){\r
93061 e.appName=this._name;\r
93062 return this._appViewMgr.createView(e)\r
93063 };\r
93064 ZmApp.prototype.pushView=function(e,t){\r
93065 return this._appViewMgr.pushView(e,t)\r
93066 };\r
93067 ZmApp.prototype.popView=function(e){\r
93068 return this._appViewMgr.popView(e)\r
93069 };\r
93070 ZmApp.prototype.setView=function(e,t){\r
93071 return this._appViewMgr.setView(e,t)\r
93072 };\r
93073 ZmApp.prototype.stageView=function(e){\r
93074 return this._appViewMgr.setView(e)\r
93075 };\r
93076 ZmApp.prototype.addDeferredFolder=function(e){\r
93077 var t=e.obj&&e.obj.id;\r
93078 if(t&&!this._deferredFolderHash[t]){\r
93079 this._deferredFolders.push(e);\r
93080 this._deferredFolderHash[t]=true;\r
93081 appCtxt.cacheSetDeferred(t,this._name)\r
93082 }};\r
93083 ZmApp.prototype.getRemoteFolderIds=function(r){\r
93084 var s=[];\r
93085 if(this._opc){\r
93086 var o=ZmApp.ORGANIZER[this.getName()];\r
93087 if(this._deferredFolders.length){\r
93088 this._createDeferredFolders(o)\r
93089 }\r
93090 var e=appCtxt.getFolderTree(r);\r
93091 var a=e?e.getByType(o):[];\r
93092 for(var t=0;\r
93093 t<a.length;\r
93094 t++){\r
93095 var n=a[t];\r
93096 if(n.isRemote()){\r
93097 s.push(n.id)\r
93098 }}}\r
93099 return s\r
93100 };\r
93101 ZmApp.prototype.getOverviewPanelContent=function(){\r
93102 if(!this._overviewPanelContent){\r
93103 var t=this._getOverviewParams();\r
93104 t.overviewId=this.getOverviewId();\r
93105 var e=this._overviewPanelContent=this._opc.createOverview(t);\r
93106 e.set(this._getOverviewTrees())\r
93107 }\r
93108 return this._overviewPanelContent\r
93109 };\r
93110 ZmApp.prototype.getOverviewContainer=function(){\r
93111 if(!this._overviewContainer){\r
93112 var e={\r
93113 appName:this._name,containerId:([ZmApp.OVERVIEW_ID,this._name].join("_")),posStyle:Dwt.ABSOLUTE_STYLE};\r
93114 var t=this._getOverviewParams();\r
93115 t.overviewTrees=this._getOverviewTrees();\r
93116 this._overviewContainer=this._opc.createOverviewContainer(e,t)\r
93117 }\r
93118 return this._overviewContainer\r
93119 };\r
93120 ZmApp.prototype.setOverviewPanelContent=function(a){\r
93121 if(a){\r
93122 this._overviewPanelContent=null;\r
93123 this._overviewContainer=null\r
93124 }\r
93125 var e=appCtxt.getAppViewMgr();\r
93126 if(!e.isFullScreen()){\r
93127 var t=(appCtxt.multiAccounts||this.getName()==ZmApp.VOICE)?this.getOverviewContainer():this.getOverviewPanelContent();\r
93128 e.setComponent(ZmAppViewMgr.C_TREE,t)\r
93129 }};\r
93130 ZmApp.prototype.getOverview=function(){\r
93131 return this._opc&&this._opc.getOverview(this.getOverviewId())\r
93132 };\r
93133 ZmApp.prototype.resetOverview=function(t){\r
93134 var u=t?this._opc.getOverview(t):this.getOverview();\r
93135 if(u){\r
93136 var s=[];\r
93137 var d=u.getTreeViews(),l=d.length;\r
93138 for(var n=0;\r
93139 n<l;\r
93140 n++){\r
93141 var h=d[n];\r
93142 var e=u.getTreeView(h);\r
93143 var c=e.getTreeItemList();\r
93144 var o=c.length;\r
93145 for(var a=0;\r
93146 a<o;\r
93147 a++){\r
93148 var r=c[a];\r
93149 if(r._expanded){\r
93150 s.push(r._htmlElId)\r
93151 }}}\r
93152 u.clear();\r
93153 u.set(this._getOverviewTrees());\r
93154 l=s.length;\r
93155 for(var n=0;\r
93156 n<l;\r
93157 n++){\r
93158 var r=DwtControl.fromElementId(s[n]);\r
93159 if(r&&!r._expanded){\r
93160 r.setExpanded(true)\r
93161 }}}};\r
93162 ZmApp.prototype.getOverviewId=function(e){\r
93163 return appCtxt.getOverviewId([ZmApp.OVERVIEW_ID,this._name],e)\r
93164 };\r
93165 ZmApp.prototype._getOverviewParams=function(){\r
93166 var e=[];\r
93167 for(var a in ZmOverviewController.CONTROLLER){\r
93168 e.push(a)\r
93169 }\r
93170 var t=function(n,o){\r
93171 return(ZmOrganizer.DISPLAY_ORDER[n]||9999)-(ZmOrganizer.DISPLAY_ORDER[o]||9999)\r
93172 };\r
93173 e.sort(t);\r
93174 return{\r
93175 posStyle:Dwt.ABSOLUTE_STYLE,selectionSupported:true,actionSupported:true,dndSupported:true,showUnread:true,showNewButtons:true,isAppOverview:true,treeIds:e,appName:this._name,account:appCtxt.getActiveAccount(),scroll:Dwt.SCROLL_Y}\r
93176 };\r
93177 ZmApp.prototype._getOverviewTrees=function(){\r
93178 var o=ZmApp.OVERVIEW_TREES[this._name]||[];\r
93179 var t=[];\r
93180 for(var e=0,a=o.length;\r
93181 e<a;\r
93182 e++){\r
93183 if((o[e]==ZmOrganizer.FOLDER&&!appCtxt.get(ZmSetting.MAIL_ENABLED))){\r
93184 continue\r
93185 }\r
93186 t.push(o[e])\r
93187 }\r
93188 if(!appCtxt.multiAccounts&&window[ZmOverviewController.CONTROLLER[ZmOrganizer.ZIMLET]]&&!ZmApp.HIDE_ZIMLETS[this._name]){\r
93189 t.push(ZmOrganizer.ZIMLET)\r
93190 }\r
93191 return t\r
93192 };\r
93193 ZmApp.prototype._setMiniCalForActiveAccount=function(e){\r
93194 var t=appCtxt.get(ZmSetting.CAL_ALWAYS_SHOW_MINI_CAL);\r
93195 AjxDispatcher.run("ShowMiniCalendar",t);\r
93196 if(t&&e){\r
93197 var a=AjxDispatcher.run("GetCalController");\r
93198 a._checkedCalendars=null;\r
93199 a._checkedCalendarIds=null;\r
93200 a.getMiniCalCache().clearCache();\r
93201 a.fetchMiniCalendarAppts(ZmCalViewController.MAINT_MINICAL)\r
93202 }};\r
93203 ZmApp.prototype._addSettingsChangeListeners=function(){\r
93204 if(!this._settingListener){\r
93205 this._settingListener=new AjxListener(this,this._settingChangeListener)\r
93206 }\r
93207 var e=appCtxt.getSettings();\r
93208 setting=e.getSetting(ZmSetting.CAL_ALWAYS_SHOW_MINI_CAL);\r
93209 if(setting){\r
93210 setting.addChangeListener(this._settingListener)\r
93211 }\r
93212 setting=e.getSetting(ZmSetting.CAL_FIRST_DAY_OF_WEEK);\r
93213 if(setting){\r
93214 setting.addChangeListener(this._settingListener)\r
93215 }};\r
93216 ZmApp.prototype._settingChangeListener=function(n){\r
93217 if(n.type!=ZmEvent.S_SETTING){\r
93218 return\r
93219 }\r
93220 var o=n.source;\r
93221 if(o.id==ZmSetting.CAL_ALWAYS_SHOW_MINI_CAL){\r
93222 if(o.getValue()){\r
93223 AjxDispatcher.run("ShowMiniCalendar",true)\r
93224 }else{\r
93225 if(!this._active){\r
93226 AjxDispatcher.run("ShowMiniCalendar",false)\r
93227 }}}else{\r
93228 if(o.id==ZmSetting.CAL_FIRST_DAY_OF_WEEK){\r
93229 var e=AjxDispatcher.run("GetCalController");\r
93230 var s=e.getMiniCalendar();\r
93231 var t=o.getValue();\r
93232 s.setFirstDayOfWeek(t);\r
93233 var a=s.getDate();\r
93234 e.setDate(a,0,true)\r
93235 }}};\r
93236 ZmApp.prototype.getSearchParams=function(e){\r
93237 return(e||{}\r
93238 )\r
93239 };\r
93240 ZmApp.prototype._postLoadCore=function(){\r
93241 if(!appCtxt.isChildWindow){\r
93242 this._setupDropTargets()\r
93243 }};\r
93244 ZmApp.prototype._postLoad=function(e){\r
93245 if(e){\r
93246 this._createDeferredFolders(e)\r
93247 }\r
93248 this._handleDeferredNotifications()\r
93249 };\r
93250 ZmApp.prototype._setupDropTargets=function(){\r
93251 var a=ZmApp.DROP_TARGETS[this._name];\r
93252 for(var s in a){\r
93253 var t=a[s];\r
93254 for(var o=0;\r
93255 o<t.length;\r
93256 o++){\r
93257 var r=t[o];\r
93258 var e=appCtxt.getOverviewController().getTreeController(r,true);\r
93259 var n=ZmList.ITEM_CLASS[s]||ZmOrganizer.ORG_CLASS[s];\r
93260 if(e){\r
93261 e._dropTgt.addTransferType(n)\r
93262 }else{\r
93263 if(!ZmTreeController.DROP_SOURCES[r]){\r
93264 ZmTreeController.DROP_SOURCES[r]=[]\r
93265 }\r
93266 ZmTreeController.DROP_SOURCES[r].push(n)\r
93267 }}}};\r
93268 ZmApp.prototype.createDeferred=function(){\r
93269 var a=ZmOrganizer.APP2ORGANIZER[this._name]||[];\r
93270 for(var t=0;\r
93271 t<a.length;\r
93272 t++){\r
93273 var o=a[t];\r
93274 var e=ZmOrganizer.ORG_PACKAGE[o];\r
93275 AjxDispatcher.require(e);\r
93276 this._createDeferredFolders(o)\r
93277 }};\r
93278 ZmApp.prototype._createDeferredFolders=function(t){\r
93279 for(var e=0;\r
93280 e<this._deferredFolders.length;\r
93281 e++){\r
93282 var o=this._deferredFolders[e];\r
93283 var a=ZmFolderTree.createFolder(o.type,o.parent,o.obj,o.tree,o.path,o.elementType);\r
93284 o.parent.children.add(a);\r
93285 a.parent=o.parent;\r
93286 ZmFolderTree._traverse(a,o.obj,o.tree,o.path||[])\r
93287 }\r
93288 this._clearDeferredFolders()\r
93289 };\r
93290 ZmApp.prototype._clearDeferredFolders=function(){\r
93291 this._deferredFolders=[];\r
93292 this._deferredFolderHash={}\r
93293 };\r
93294 ZmApp.prototype._deferNotifications=function(t,a){\r
93295 var e=ZmApp.MAIN_PKG[this._name];\r
93296 if(e&&!AjxDispatcher.loaded(e)){\r
93297 this._deferredNotifications.push({\r
93298 type:t,data:a}\r
93299 );\r
93300 return true\r
93301 }else{\r
93302 this._noDefer=true;\r
93303 return false\r
93304 }};\r
93305 ZmApp.prototype._handleDeferredNotifications=function(){\r
93306 var t=this._deferredNotifications;\r
93307 for(var a=0;\r
93308 a<t.length;\r
93309 a++){\r
93310 var e=t[a];\r
93311 if(e.type=="delete"){\r
93312 this.deleteNotify(e.data,true)\r
93313 }else{\r
93314 if(e.type=="create"){\r
93315 this.createNotify(e.data,true)\r
93316 }else{\r
93317 if(e.type=="modify"){\r
93318 this.modifyNotify(e.data,true)\r
93319 }}}}};\r
93320 ZmApp.prototype._inNewWindow=function(t){\r
93321 var e=appCtxt.get(ZmSetting.NEW_WINDOW_COMPOSE);\r
93322 return !t?e:((!e&&t&&t.shiftKey)||(e&&t&&!t.shiftKey))\r
93323 };\r
93324 ZmApp.prototype._handleCreateFolder=function(e,a){\r
93325 var t=appCtxt.getById(e.l);\r
93326 if(t&&(ZmOrganizer.VIEWS[a][e.view])){\r
93327 t.notifyCreate(e);\r
93328 e._handled=true\r
93329 }};\r
93330 ZmApp.prototype._handleCreateLink=function(t,o){\r
93331 var a=appCtxt.getById(t.l);\r
93332 var e=t.view||"message";\r
93333 if(a&&a.supportsSharing()&&(ZmOrganizer.VIEW_HASH[o][e])){\r
93334 a.notifyCreate(t);\r
93335 t._handled=true\r
93336 }};\r
93337 ZmApp.prototype.launch=function(e,t){\r
93338 this.createDeferred();\r
93339 if(t){\r
93340 t.run()\r
93341 }};\r
93342 ZmApp.prototype.activate=function(e){\r
93343 this._active=e;\r
93344 if(e){\r
93345 this.setOverviewPanelContent();\r
93346 this.stopAlert()\r
93347 }};\r
93348 ZmApp.prototype.isActive=function(){\r
93349 return this._active\r
93350 };\r
93351 ZmApp.prototype.reset=function(e){};\r
93352 ZmApp.prototype.startAlert=function(){\r
93353 AjxDispatcher.require("Alert");\r
93354 this._alert=this._alert||new ZmAppAlert(this);\r
93355 this._alert.start()\r
93356 };\r
93357 ZmApp.prototype.stopAlert=function(){\r
93358 if(this._alert){\r
93359 this._alert.stop()\r
93360 }};\r
93361 ZmApp.prototype._notifyRendered=function(){\r
93362 if(!this._hasRendered){\r
93363 appCtxt.getAppController().appRendered(this._name);\r
93364 this._hasRendered=true\r
93365 }}\r
93366 }\r
93367 if(AjxPackage.define("zimbraMail.share.view.ZmPopupMenu")){\r
93368 ZmPopupMenu=function(a,t,o,e){\r
93369 if(arguments.length==0){\r
93370 return\r
93371 }\r
93372 params=Dwt.getParams(arguments,ZmPopupMenu.PARAMS);\r
93373 params.className=params.className?params.className:"ActionMenu";\r
93374 params.style=params.style||DwtMenu.POPUP_STYLE;\r
93375 DwtMenu.call(this,params);\r
93376 e=e||appCtxt.getCurrentController();\r
93377 if(e){\r
93378 this._controller=e;\r
93379 this._keyMap=ZmKeyMap.MAP_NAME_R[this._controller.getKeyMapName()]\r
93380 }\r
93381 this._menuItems={}\r
93382 };\r
93383 ZmPopupMenu.PARAMS=["parent","className","id","controller"];\r
93384 ZmPopupMenu.prototype=new DwtMenu;\r
93385 ZmPopupMenu.prototype.constructor=ZmPopupMenu;\r
93386 ZmPopupMenu.prototype.toString=function(){\r
93387 return"ZmPopupMenu"\r
93388 };\r
93389 ZmPopupMenu.prototype.addSelectionListener=function(o,a,e){\r
93390 var t=this._menuItems[o];\r
93391 if(t){\r
93392 t.addSelectionListener(a,e)\r
93393 }};\r
93394 ZmPopupMenu.prototype.removeSelectionListener=function(a,t){\r
93395 var e=this._menuItems[a];\r
93396 if(e){\r
93397 e.removeSelectionListener(t)\r
93398 }};\r
93399 ZmPopupMenu.prototype.popup=function(t,e,o,a){\r
93400 t=t?t:0;\r
93401 e=(e!=null)?e:Dwt.DEFAULT;\r
93402 o=(o!=null)?o:Dwt.DEFAULT;\r
93403 DwtMenu.prototype.popup.call(this,t,e,o,a)\r
93404 };\r
93405 ZmPopupMenu.prototype.enable=function(a,e){\r
93406 a=(a instanceof Array)?a:[a];\r
93407 for(var t=0;\r
93408 t<a.length;\r
93409 t++){\r
93410 if(this._menuItems[a[t]]){\r
93411 this._menuItems[a[t]].setEnabled(e)\r
93412 }}};\r
93413 ZmPopupMenu.prototype.enableAll=function(e){\r
93414 for(var t in this._menuItems){\r
93415 this._menuItems[t].setEnabled(e)\r
93416 }};\r
93417 ZmPopupMenu.prototype.createMenuItem=function(a,t){\r
93418 var e=this._menuItems[a]=new DwtMenuItem({\r
93419 parent:this,style:t.style,radioGroupId:t.radioGroupId,id:t.id,index:t.index}\r
93420 );\r
93421 if(t.image){\r
93422 e.setImage(t.image)\r
93423 }\r
93424 if(t.text){\r
93425 e.setText(t.text)\r
93426 }\r
93427 if(t.shortcut){\r
93428 e.setShortcut(appCtxt.getShortcutHint(this._keyMap,t.shortcut))\r
93429 }\r
93430 e.setEnabled(t.enabled!==false);\r
93431 return e\r
93432 };\r
93433 ZmPopupMenu.prototype.getMenuItem=function(e){\r
93434 return this._menuItems[e]\r
93435 };\r
93436 ZmPopupMenu.prototype.createSeparator=function(){\r
93437 new DwtMenuItem({\r
93438 parent:this,style:DwtMenuItem.SEPARATOR_STYLE}\r
93439 )\r
93440 }\r
93441 }\r
93442 if(AjxPackage.define("zimbraMail.share.view.ZmActionMenu")){\r
93443 ZmActionMenu=function(t){\r
93444 var a=t.context?ZmId.getMenuId(t.context,t.menuType):null;\r
93445 ZmPopupMenu.call(this,t.parent,null,a,t.controller);\r
93446 var e=t.menuItems;\r
93447 if(!e){\r
93448 e=[ZmOperation.TAG_MENU,ZmOperation.PRINT,ZmOperation.DELETE]\r
93449 }else{\r
93450 if(e==ZmOperation.NONE){\r
93451 e=null\r
93452 }}\r
93453 this.opList=ZmOperation.filterOperations(e);\r
93454 this._context=t.context;\r
93455 this._menuType=t.menuType;\r
93456 this._menuItems=ZmOperation.createOperations(this,this.opList,t.overrides)\r
93457 };\r
93458 ZmActionMenu.prototype=new ZmPopupMenu;\r
93459 ZmActionMenu.prototype.constructor=ZmActionMenu;\r
93460 ZmActionMenu.prototype.toString=function(){\r
93461 return"ZmActionMenu"\r
93462 };\r
93463 ZmActionMenu.prototype.createOp=function(a,t){\r
93464 t.id=this._context?ZmId.getMenuItemId(this._context,a,this._menuType):null;\r
93465 var e=this.createMenuItem(a,t);\r
93466 e.setData(ZmOperation.KEY_ID,a);\r
93467 return e\r
93468 };\r
93469 ZmActionMenu.prototype.addOp=function(e){\r
93470 ZmOperation.addOperation(this,e,this._menuItems)\r
93471 };\r
93472 ZmActionMenu.prototype.removeOp=function(e){\r
93473 ZmOperation.removeOperation(this,e,this._menuItems)\r
93474 };\r
93475 ZmActionMenu.prototype.getOp=function(e){\r
93476 return this.getMenuItem(e)\r
93477 };\r
93478 ZmActionMenu.prototype.getTagMenu=function(){\r
93479 var e=this.getMenuItem(ZmOperation.TAG_MENU);\r
93480 if(e){\r
93481 return e.getMenu()\r
93482 }};\r
93483 ZmActionMenu.prototype._menuItemId=function(e){\r
93484 return e.getData(ZmOperation.KEY_ID)\r
93485 }\r
93486 }\r
93487 if(AjxPackage.define("zimbraMail.share.view.ZmToolBar")){\r
93488 ZmToolBar=function(t){\r
93489 if(arguments.length==0){\r
93490 return\r
93491 }\r
93492 t.posStyle=t.posStyle||DwtControl.ABSOLUTE_STYLE;\r
93493 DwtToolBar.call(this,t);\r
93494 var e=t.controller||appCtxt.getCurrentController();\r
93495 if(e){\r
93496 this._controller=e;\r
93497 this._keyMap=ZmKeyMap.MAP_NAME_R[this._controller.getKeyMapName()]\r
93498 }\r
93499 this._refElementId=t.refElementId;\r
93500 this._buttons={}\r
93501 };\r
93502 ZmToolBar.prototype=new DwtToolBar;\r
93503 ZmToolBar.prototype.constructor=ZmToolBar;\r
93504 ZmToolBar.prototype.toString=function(){\r
93505 return"ZmToolBar"\r
93506 };\r
93507 ZmToolBar.prototype.addSelectionListener=function(t,a){\r
93508 var e=this._buttons[t];\r
93509 if(e){\r
93510 e.addSelectionListener(a)\r
93511 }};\r
93512 ZmToolBar.prototype.removeSelectionListener=function(t,a){\r
93513 var e=this._buttons[t];\r
93514 if(e){\r
93515 e.removeSelectionListener(a)\r
93516 }};\r
93517 ZmToolBar.prototype.getButton=function(e){\r
93518 return this._buttons[e]\r
93519 };\r
93520 ZmToolBar.prototype.setData=function(t,e,a){\r
93521 this._buttons[t].setData(e,a)\r
93522 };\r
93523 ZmToolBar.prototype.enable=function(a,e){\r
93524 a=(a instanceof Array)?a:[a];\r
93525 for(var t=0;\r
93526 t<a.length;\r
93527 t++){\r
93528 if(this._buttons[a[t]]){\r
93529 this._buttons[a[t]].setEnabled(e)\r
93530 }}};\r
93531 ZmToolBar.prototype.enableAll=function(e){\r
93532 for(var t in this._buttons){\r
93533 this._buttons[t].setEnabled(e)\r
93534 }};\r
93535 ZmToolBar.prototype.createButton=function(a,t){\r
93536 var e=this._buttons[a]=this._createButton(t);\r
93537 if(t.image){\r
93538 e.setImage(t.image)\r
93539 }\r
93540 if(t.text){\r
93541 e.setText(t.text)\r
93542 }\r
93543 if(t.tooltip){\r
93544 e.setToolTipContent(ZmOperation.getToolTip(a,this._keyMap)||t.tooltip)\r
93545 }\r
93546 e.setEnabled(t.enabled!==false);\r
93547 e.setData("_buttonId",a);\r
93548 if(t.menu){\r
93549 e.setMenu(t.menu,false,null,t.menuAbove)\r
93550 }\r
93551 return e\r
93552 };\r
93553 ZmToolBar.prototype.SEPARATOR_TEMPLATE="share.Widgets#ZmToolBarSeparator";\r
93554 ZmToolBar.prototype._createButton=function(o,t){\r
93555 var a=o.ctor||DwtToolBarButton;\r
93556 var e=new a({\r
93557 parent:this,style:o.style,className:t,index:o.index,id:o.id,template:o.template}\r
93558 );\r
93559 e.textPrecedence=o.textPrecedence;\r
93560 e.imagePrecedence=o.imagePrecedence;\r
93561 return e\r
93562 };\r
93563 ZmToolBar.prototype._buttonId=function(e){\r
93564 return e.getData("_buttonId")\r
93565 };\r
93566 ZmToolBar.prototype._createPrecedenceList=function(){\r
93567 this._precedenceList=[];\r
93568 for(var o in this._buttons){\r
93569 if(ZmOperation.isSep(o)){\r
93570 continue\r
93571 }\r
93572 var e=this._buttons[o];\r
93573 var a=e.textPrecedence;\r
93574 if(a){\r
93575 this._precedenceList.push({\r
93576 id:o,type:"text",precedence:a}\r
93577 )\r
93578 }\r
93579 var t=e.imagePrecedence;\r
93580 if(t){\r
93581 this._precedenceList.push({\r
93582 id:o,type:"image",precedence:t}\r
93583 )\r
93584 }}\r
93585 this._precedenceList.sort(function(s,n){\r
93586 return(s.precedence>n.precedence)?1:(s.precedence<n.precedence)?-1:0\r
93587 }\r
93588 )\r
93589 };\r
93590 ZmToolBar.prototype.adjustSize=function(){\r
93591 if(!this._refElementId||!this._inited){\r
93592 return\r
93593 }\r
93594 var o=this.getHtmlElement();\r
93595 if(!this._refElement){\r
93596 this._refElement=document.getElementById(this._refElementId)\r
93597 }\r
93598 if(!o||!this._refElement){\r
93599 return\r
93600 }\r
93601 var a=this._refElement.offsetWidth;\r
93602 var t=o.firstChild?o.firstChild.offsetWidth:a;\r
93603 for(var s=0;\r
93604 s<this._precedenceList.length;\r
93605 s++){\r
93606 var e=this._precedenceList[s];\r
93607 var l=this._buttons[e.id];\r
93608 if(!l){\r
93609 continue\r
93610 }\r
93611 if(e.type=="text"&&l._toggleText){\r
93612 l.setText(l._toggleText);\r
93613 l._toggleText=null\r
93614 }else{\r
93615 if(e.type=="image"&&l._toggleimage){\r
93616 l.setImage(l._toggleimage);\r
93617 l._toggleimage=null\r
93618 }}}\r
93619 t=o.firstChild?o.firstChild.offsetWidth:a;\r
93620 if(a>0&&t>a){\r
93621 for(var s=0;\r
93622 s<this._precedenceList.length;\r
93623 s++){\r
93624 var e=this._precedenceList[s];\r
93625 var l=this._buttons[e.id];\r
93626 if(!l||!l.getVisible()){\r
93627 continue\r
93628 }\r
93629 var c=l.getText();\r
93630 var n=l.getImage();\r
93631 var r=Boolean(c||l._toggleText);\r
93632 var h=Boolean(n||l._toggleimage);\r
93633 if(r&&h&&(t>a)){\r
93634 if(e.type=="text"){\r
93635 l._toggleText=c;\r
93636 l.setText("")\r
93637 }else{\r
93638 if(e.type=="image"){\r
93639 l._toggleimage=n;\r
93640 l.setImage("")\r
93641 }}}\r
93642 t=o.firstChild?o.firstChild.offsetWidth:a\r
93643 }}};\r
93644 ZmToolBar.prototype.setSize=function(t,e){\r
93645 var a=this.getSize();\r
93646 if(t!=a.x||e!=a.y){\r
93647 DwtToolBar.prototype.setSize.apply(this,arguments);\r
93648 this.adjustSize()\r
93649 }};\r
93650 ZmToolBar.prototype._addItem=function(a,t,e){\r
93651 DwtToolBar.prototype._addItem.apply(this,arguments);\r
93652 this.adjustSize()\r
93653 };\r
93654 ZmToolBar.prototype._removeItem=function(a,t,e){\r
93655 DwtToolBar.prototype._removeItem.apply(this,arguments);\r
93656 this.adjustSize()\r
93657 }\r
93658 }\r
93659 if(AjxPackage.define("zimbraMail.share.view.ZmButtonToolBar")){\r
93660 ZmButtonToolBar=function(t){\r
93661 if(arguments.length==0){\r
93662 return\r
93663 }\r
93664 t.className=t.className||"ZToolbar";\r
93665 t.id=t.context?ZmId.getToolbarId(t.context,t.toolbarType):null;\r
93666 ZmToolBar.call(this,t);\r
93667 this._context=t.context;\r
93668 this._toolbarType=t.toolbarType;\r
93669 this._buttonStyle=t.buttonClassName;\r
93670 var e=t.buttons;\r
93671 if(!e){\r
93672 e=[ZmOperation.NEW_MENU,ZmOperation.TAG_MENU,ZmOperation.PRINT,ZmOperation.DELETE]\r
93673 }else{\r
93674 if(e==ZmOperation.NONE){\r
93675 e=null\r
93676 }}\r
93677 this.opList=ZmOperation.filterOperations(e);\r
93678 this._buttons=ZmOperation.createOperations(this,this.opList,t.overrides);\r
93679 this._createPrecedenceList();\r
93680 this._inited=true\r
93681 };\r
93682 ZmButtonToolBar.prototype=new ZmToolBar;\r
93683 ZmButtonToolBar.prototype.constructor=ZmButtonToolBar;\r
93684 ZmButtonToolBar.prototype.toString=function(){\r
93685 return"ZmButtonToolBar"\r
93686 };\r
93687 ZmButtonToolBar.prototype.createOp=function(o,a){\r
93688 a.className=this._buttonStyle;\r
93689 var e;\r
93690 if(o==ZmOperation.TEXT){\r
93691 var o;\r
93692 if(this._context){\r
93693 var t=this._toolbarType?[this._context,this._toolbarType].join("_"):this._context;\r
93694 o=[ZmId.WIDGET,AjxStringUtil.toMixed(t,"_",true),AjxStringUtil.toMixed(o,"_")].join("")\r
93695 }\r
93696 a.textClassName=a.textClassName||"ZWidgetTitle";\r
93697 e=new DwtText({\r
93698 parent:this,className:a.textClassName,id:o}\r
93699 )\r
93700 }else{\r
93701 a.id=this._context?ZmId.getButtonId(this._context,o,this._toolbarType):null;\r
93702 a.textPrecedence=ZmOperation.getProp(o,"textPrecedence");\r
93703 a.iconPrecedence=ZmOperation.getProp(o,"iconPrecedence");\r
93704 e=this.createButton(o,a)\r
93705 }\r
93706 e.setData(ZmOperation.KEY_ID,o);\r
93707 return e\r
93708 };\r
93709 ZmButtonToolBar.prototype.addOp=function(t,e){\r
93710 ZmOperation.addOperation(this,t,this._buttons,e);\r
93711 AjxUtil.arrayAdd(this.opList,t,e)\r
93712 };\r
93713 ZmButtonToolBar.prototype.removeOp=function(e){\r
93714 ZmOperation.removeOperation(this,e,this._buttons);\r
93715 AjxUtil.arrayRemove(this.opList,e)\r
93716 };\r
93717 ZmButtonToolBar.prototype.getOp=function(e){\r
93718 return this.getButton(e)\r
93719 };\r
93720 ZmButtonToolBar.prototype.getTagMenu=function(){\r
93721 var e=this.getButton(ZmOperation.TAG_MENU);\r
93722 if(e){\r
93723 return e.getMenu()\r
93724 }};\r
93725 ZmButtonToolBar.prototype._buttonId=function(e){\r
93726 return e.getData(ZmOperation.KEY_ID)\r
93727 }\r
93728 }\r
93729 if(AjxPackage.define("zimbraMail.share.view.ZmNavToolBar")){\r
93730 ZmNavToolBar=function(t){\r
93731 t.className=t.className||"ZmNavToolBar";\r
93732 var e=(t.hasText!==false);\r
93733 t.buttons=this._getButtons(e);\r
93734 t.toolbarType=ZmId.TB_NAV;\r
93735 t.posStyle=t.posStyle||DwtControl.STATIC_STYLE;\r
93736 ZmButtonToolBar.call(this,t);\r
93737 if(e){\r
93738 this._textButton=this.getButton(ZmOperation.TEXT)\r
93739 }};\r
93740 ZmNavToolBar.prototype=new ZmButtonToolBar;\r
93741 ZmNavToolBar.prototype.constructor=ZmNavToolBar;\r
93742 ZmNavToolBar.prototype.toString=function(){\r
93743 return"ZmNavToolBar"\r
93744 };\r
93745 ZmNavToolBar.prototype.enable=function(o,e){\r
93746 ZmButtonToolBar.prototype.enable.call(this,o,e);\r
93747 if(!e){\r
93748 if(!(o instanceof Array)){\r
93749 o=[o]\r
93750 }\r
93751 for(var a=0;\r
93752 a<o.length;\r
93753 a++){\r
93754 var t=this.getButton(o[a]);\r
93755 if(t){\r
93756 t.setToolTipContent(null)\r
93757 }}}};\r
93758 ZmNavToolBar.prototype.setToolTip=function(t,a){\r
93759 var e=this.getButton(t);\r
93760 if(e){\r
93761 e.setToolTipContent(a)\r
93762 }};\r
93763 ZmNavToolBar.prototype.setText=function(e){\r
93764 if(!this._textButton){\r
93765 return\r
93766 }\r
93767 this._textButton.setText(e)\r
93768 };\r
93769 ZmNavToolBar.prototype._getButtons=function(e){\r
93770 var t=[];\r
93771 t.push(ZmOperation.PAGE_BACK);\r
93772 if(e){\r
93773 t.push(ZmOperation.TEXT)\r
93774 }\r
93775 t.push(ZmOperation.PAGE_FORWARD);\r
93776 return t\r
93777 };\r
93778 ZmNavToolBar.prototype.createOp=function(t,e){\r
93779 e.textClassName="ZWidgetTitle ZmNavToolBarTitle";\r
93780 return ZmButtonToolBar.prototype.createOp.apply(this,arguments)\r
93781 }\r
93782 }\r
93783 if(AjxPackage.define("zimbraMail.share.view.ZmSearchToolBar")){\r
93784 ZmSearchToolBar=function(e,a){\r
93785 DwtComposite.call(this,{\r
93786 parent:e,className:"ZmSearchToolbar",id:a}\r
93787 );\r
93788 var t={\r
93789 msgKey:"searchAll",tooltipKey:"searchForAny",icon:"Globe",setting:ZmSetting.MIXED_VIEW_ENABLED,index:0,id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.SEARCH_ANY)};\r
93790 ZmSearchToolBar.addMenuItem(ZmId.SEARCH_ANY,t);\r
93791 t={\r
93792 msgKey:"searchShared",tooltipKey:"searchShared",icon:"Group",setting:ZmSetting.SHARING_ENABLED,id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.SEARCH_SHARED)};\r
93793 ZmSearchToolBar.addMenuItem(ZmId.SEARCH_SHARED,t);\r
93794 if(appCtxt.multiAccounts){\r
93795 t={\r
93796 msgKey:"searchAllAccounts",icon:"Globe",id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.SEARCH_ALL_ACCOUNTS)};\r
93797 ZmSearchToolBar.addMenuItem(ZmId.SEARCH_ALL_ACCOUNTS,t)\r
93798 }\r
93799 this._createHtml()\r
93800 };\r
93801 ZmSearchToolBar.prototype=new DwtComposite;\r
93802 ZmSearchToolBar.prototype.constructor=ZmSearchToolBar;\r
93803 ZmSearchToolBar.SEARCH_MENU_BUTTON=1;\r
93804 ZmSearchToolBar.SEARCH_BUTTON=2;\r
93805 ZmSearchToolBar.SAVE_BUTTON=3;\r
93806 ZmSearchToolBar.BROWSE_BUTTON=4;\r
93807 ZmSearchToolBar.MENUITEM_ID="_menuItemId";\r
93808 ZmSearchToolBar.SETTING={};\r
93809 ZmSearchToolBar.MENU_ITEMS=[];\r
93810 ZmSearchToolBar.MSG_KEY={};\r
93811 ZmSearchToolBar.TT_MSG_KEY={};\r
93812 ZmSearchToolBar.ICON={};\r
93813 ZmSearchToolBar.SHARE_ICON={};\r
93814 ZmSearchToolBar.ID={};\r
93815 ZmSearchToolBar.addMenuItem=function(t,e){\r
93816 if(e.msgKey){\r
93817 ZmSearchToolBar.MSG_KEY[t]=e.msgKey\r
93818 }\r
93819 if(e.tooltipKey){\r
93820 ZmSearchToolBar.TT_MSG_KEY[t]=e.tooltipKey\r
93821 }\r
93822 if(e.icon){\r
93823 ZmSearchToolBar.ICON[t]=e.icon\r
93824 }\r
93825 if(e.shareIcon){\r
93826 ZmSearchToolBar.SHARE_ICON[t]=e.shareIcon\r
93827 }\r
93828 if(e.setting){\r
93829 ZmSearchToolBar.SETTING[t]=e.setting\r
93830 }\r
93831 if(e.id){\r
93832 ZmSearchToolBar.ID[t]=e.id\r
93833 }\r
93834 if(e.index==null||e.index<0||e.index>=ZmSearchToolBar.MENU_ITEMS.length){\r
93835 ZmSearchToolBar.MENU_ITEMS.push(t)\r
93836 }else{\r
93837 ZmSearchToolBar.MENU_ITEMS.splice(e.index,0,t)\r
93838 }};\r
93839 ZmSearchToolBar.prototype.toString=function(){\r
93840 return"ZmSearchToolBar"\r
93841 };\r
93842 ZmSearchToolBar.prototype.removeMenuItem=function(a){\r
93843 var e=0;\r
93844 while(e<ZmSearchToolBar.MENU_ITEMS.length){\r
93845 if(ZmSearchToolBar.MENU_ITEMS[e]==a){\r
93846 break\r
93847 }\r
93848 e++\r
93849 }\r
93850 if(e<ZmSearchToolBar.MENU_ITEMS.length){\r
93851 var t=this._searchMenuButton.getMenu();\r
93852 t.removeChild(t.getItemById("_menuItemId",a));\r
93853 ZmSearchToolBar.MENU_ITEMS.splice(e,1);\r
93854 ZmSearchToolBar.MSG_KEY[a]="";\r
93855 ZmSearchToolBar.TT_MSG_KEY[a]="";\r
93856 ZmSearchToolBar.ICON[a]="";\r
93857 ZmSearchToolBar.SHARE_ICON[a]="";\r
93858 ZmSearchToolBar.SETTING[a]="";\r
93859 ZmSearchToolBar.ID[a]=""\r
93860 }\r
93861 this.dedupSeparators(t)\r
93862 };\r
93863 ZmSearchToolBar.prototype.dedupSeparators=function(o){\r
93864 if(o==null){\r
93865 o=this._searchMenuButton.getMenu()\r
93866 }\r
93867 var e=o.getItems();\r
93868 var a=false;\r
93869 var t=[];\r
93870 for(mi in e){\r
93871 if(!e[mi].__text){\r
93872 if(a==true||a==null){\r
93873 t.push(e[mi])\r
93874 }else{\r
93875 a=true\r
93876 }}else{\r
93877 a=false\r
93878 }}\r
93879 for(mi in t){\r
93880 o.removeChild(t[mi])\r
93881 }\r
93882 if(!e[e.length-1].__text){\r
93883 o.removeChild(e[e.length-1])\r
93884 }};\r
93885 ZmSearchToolBar.prototype.getSearchField=function(){\r
93886 return this._searchField.getInputElement()\r
93887 };\r
93888 ZmSearchToolBar.prototype.registerCallback=function(e,t){\r
93889 this._callback=new AjxCallback(t,e)\r
93890 };\r
93891 ZmSearchToolBar.prototype.addSelectionListener=function(t,a){\r
93892 var e;\r
93893 switch(t){\r
93894 case ZmSearchToolBar.SEARCH_MENU_BUTTON:e=this._searchMenuButton;\r
93895 break;\r
93896 case ZmSearchToolBar.SEARCH_BUTTON:e=this._searchButton;\r
93897 break;\r
93898 case ZmSearchToolBar.SAVE_BUTTON:e=this._saveButton;\r
93899 break;\r
93900 case ZmSearchToolBar.BROWSE_BUTTON:e=this._browseButton;\r
93901 break\r
93902 }\r
93903 if(e){\r
93904 e.addSelectionListener(a)\r
93905 }};\r
93906 ZmSearchToolBar.prototype.getButton=function(e){\r
93907 switch(e){\r
93908 case ZmSearchToolBar.SEARCH_MENU_BUTTON:return this._searchMenuButton;\r
93909 case ZmSearchToolBar.SEARCH_BUTTON:return this._searchButton;\r
93910 case ZmSearchToolBar.SAVE_BUTTON:return this._saveButton;\r
93911 case ZmSearchToolBar.BROWSE_BUTTON:return this._browseButton\r
93912 }\r
93913 return null\r
93914 };\r
93915 ZmSearchToolBar.prototype.focus=function(){\r
93916 if(this._searchField){\r
93917 this._searchField.focus()\r
93918 }};\r
93919 ZmSearchToolBar.prototype.blur=function(){\r
93920 if(this._searchField){\r
93921 this._searchField.blur()\r
93922 }};\r
93923 ZmSearchToolBar.prototype.setEnabled=function(e){\r
93924 if(this._searchField){\r
93925 this._searchField.setEnabled(e)\r
93926 }\r
93927 if(this._searchMenuButton){\r
93928 this._searchMenuButton.setEnabled(e)\r
93929 }\r
93930 if(this._searchButton){\r
93931 this._searchButton.setEnabled(e)\r
93932 }\r
93933 if(this._saveButton){\r
93934 this._saveButton.setEnabled(e)\r
93935 }\r
93936 if(this._browseButton){\r
93937 this._browseButton.setEnabled(e)\r
93938 }\r
93939 if(this._customSearchBtn){\r
93940 this._customSearchBtn.setEnabled(e)\r
93941 }};\r
93942 ZmSearchToolBar.prototype.setSearchFieldValue=function(e){\r
93943 if(this._searchField&&e!=this.getSearchFieldValue()){\r
93944 this._searchField.setValue(e)\r
93945 }};\r
93946 ZmSearchToolBar.prototype.getSearchFieldValue=function(){\r
93947 return this._searchField?this._searchField.getValue():null\r
93948 };\r
93949 ZmSearchToolBar.prototype.createCustomSearchBtn=function(s,r,a,e){\r
93950 if(!this._customSearchListener){\r
93951 this._customSearchListener=new AjxListener(this,this._customSearchBtnListener)\r
93952 }\r
93953 var l=document.getElementById(this._htmlElId+"_customSearchButton");\r
93954 if(l){\r
93955 if(!this._customSearchBtn){\r
93956 this._customSearchBtn=this._addButton({\r
93957 tdId:"_customSearchButton",buttonId:ZmId.getButtonId(ZmId.SEARCH,ZmId.SEARCH_CUSTOM),lbl:r,icon:s}\r
93958 );\r
93959 this._customSearchBtn.setData("CustomSearchItem",[s,r,a]);\r
93960 this._customSearchBtn.addSelectionListener(this._customSearchListener);\r
93961 var c=document.getElementById(this._htmlElId+"_customSearchButtonSep");\r
93962 if(c){\r
93963 Dwt.setVisible(c,true)\r
93964 }}else{\r
93965 var t=this._customSearchBtn.getMenu();\r
93966 var h;\r
93967 var o={\r
93968 parent:t,enabled:true,style:DwtMenuItem.RADIO_STYLE,radioGroupId:0,id:e};\r
93969 if(!t){\r
93970 var n=this._customSearchBtn.getData("CustomSearchItem");\r
93971 t=new DwtMenu({\r
93972 parent:this._customSearchBtn,className:"ActionMenu",id:ZmId.getMenuId(ZmId.SEARCH,ZmId.SEARCH_CUSTOM)}\r
93973 );\r
93974 this._customSearchBtn.setMenu(t,false,DwtMenuItem.RADIO_STYLE);\r
93975 o.imageInfo=n[0];\r
93976 o.text=n[1];\r
93977 h=DwtMenuItem.create(o);\r
93978 h.setData("CustomSearchItem",n);\r
93979 h.setData(ZmSearchToolBar.MENUITEM_ID,ZmId.SEARCH_CUSTOM);\r
93980 h.setChecked(true,true);\r
93981 h.addSelectionListener(this._customSearchListener)\r
93982 }\r
93983 o.imageInfo=s;\r
93984 o.text=r;\r
93985 h=DwtMenuItem.create(o);\r
93986 h.setData("CustomSearchItem",[s,r,a]);\r
93987 h.addSelectionListener(this._customSearchListener)\r
93988 }}else{\r
93989 if(this._searchMenuCreated){\r
93990 var t=this._searchMenuButton.getMenu();\r
93991 this._createCustomSearchMenuItem(t,s,r,a,e)\r
93992 }else{\r
93993 if(!this._customSearchMenuItems){\r
93994 this._customSearchMenuItems=[]\r
93995 }\r
93996 this._customSearchMenuItems.push({\r
93997 icon:s,text:r,listener:a,id:e}\r
93998 )\r
93999 }}};\r
94000 ZmSearchToolBar.prototype._createCustomSearchMenuItem=function(s,t,n,a,r){\r
94001 var e=s.getItem(0);\r
94002 var o={\r
94003 parent:s,imageInfo:t,text:n,enabled:true,style:DwtMenuItem.RADIO_STYLE,radioGroupId:0,index:0,id:r};\r
94004 e=DwtMenuItem.create(o);\r
94005 e.setData("CustomSearchItem",[t,n,a]);\r
94006 e.setData(ZmSearchToolBar.MENUITEM_ID,ZmId.SEARCH_CUSTOM);\r
94007 e.addSelectionListener(this._customSearchListener);\r
94008 if(!(e&&e.getData("CustomSearchItem"))){\r
94009 e=new DwtMenuItem({\r
94010 parent:s,style:DwtMenuItem.SEPARATOR_STYLE,index:1}\r
94011 )\r
94012 }};\r
94013 ZmSearchToolBar.prototype._customSearchBtnListener=function(a){\r
94014 var t=a.item;\r
94015 if(!t){\r
94016 return\r
94017 }\r
94018 var o=t.getData("CustomSearchItem");\r
94019 if(this._customSearchBtn){\r
94020 if(t instanceof DwtMenuItem){\r
94021 if(a.detail!=DwtMenuItem.CHECKED){\r
94022 return\r
94023 }\r
94024 this._customSearchBtn.setToolTipContent(o[1]);\r
94025 this._customSearchBtn.setData("CustomSearchItem",o)\r
94026 }\r
94027 o[2].run(a)\r
94028 }else{\r
94029 this._searchMenuButton.setToolTipContent(o[1]);\r
94030 var n=t.parent;\r
94031 var e=n?n.getItemById(ZmSearchToolBar.MENUITEM_ID,ZmId.SEARCH_SHARED):null;\r
94032 if(e){\r
94033 e.setChecked(false,true);\r
94034 e.setEnabled(false)\r
94035 }\r
94036 this._searchMenuButton.setImage(o[0]);\r
94037 this._searchMenuButton.setText(o[1])\r
94038 }};\r
94039 ZmSearchToolBar.prototype._createHtml=function(){\r
94040 this.getHtmlElement().innerHTML=AjxTemplate.expand("share.Widgets#ZmSearchToolBar",{\r
94041 id:this._htmlElId}\r
94042 );\r
94043 var n=this._htmlElId+"_inputField";\r
94044 var t=document.getElementById(n);\r
94045 if(t){\r
94046 this._searchField=new DwtInputField({\r
94047 parent:this,hint:ZmMsg.searchInput,inputId:ZmId.SEARCH_INPUT}\r
94048 );\r
94049 var o=this._searchField.getInputElement();\r
94050 o.className="search_input";\r
94051 this._searchField.reparentHtmlElement(n)\r
94052 }\r
94053 var r=this._htmlElId+"_searchMenuButton";\r
94054 var a=document.getElementById(r);\r
94055 if(a){\r
94056 var e=appCtxt.get(ZmSetting.MAIL_ENABLED);\r
94057 this._searchMenuButton=this._addButton({\r
94058 tdId:"_searchMenuButton",buttonId:ZmId.getButtonId(ZmId.SEARCH,ZmId.SEARCH_MENU),lbl:e?ZmMsg.searchMail:ZmMsg.searchAll,icon:e?"Message":"Globe"}\r
94059 );\r
94060 var s=new AjxCallback(this,this._createSearchMenu);\r
94061 this._searchMenuButton.setMenu(s,false,DwtMenuItem.RADIO_STYLE);\r
94062 this._searchMenuButton.reparentHtmlElement(r)\r
94063 }\r
94064 this._searchButton=this._addButton({\r
94065 tdId:"_searchButton",buttonId:ZmId.getButtonId(ZmId.SEARCH,ZmId.SEARCH_SEARCH),lbl:ZmMsg.search,icon:"Search",tooltip:ZmMsg.searchTooltip}\r
94066 );\r
94067 this._saveButton=this._addButton({\r
94068 setting:ZmSetting.SAVED_SEARCHES_ENABLED,tdId:"_saveButton",buttonId:ZmId.getButtonId(ZmId.SEARCH,ZmId.SEARCH_SAVE),lbl:ZmMsg.save,icon:"Save",type:"toolbar",tooltip:ZmMsg.saveSearchTooltip}\r
94069 );\r
94070 this._browseButton=this._addButton({\r
94071 setting:ZmSetting.BROWSE_ENABLED,tdId:"_advancedButton",buttonId:ZmId.getButtonId(ZmId.SEARCH,ZmId.SEARCH_ADVANCED),style:(DwtLabel.IMAGE_LEFT|DwtLabel.ALIGN_CENTER|DwtButton.TOGGLE_STYLE),lbl:ZmMsg.searchBuilder,icon:"SearchBuilder",type:"toolbar",tooltip:ZmMsg.openSearchBuilder}\r
94072 )\r
94073 };\r
94074 ZmSearchToolBar.prototype._createSearchMenu=function(){\r
94075 var s=new DwtMenu({\r
94076 parent:this._searchMenuButton,className:"ActionMenu",id:ZmId.getMenuId(ZmId.SEARCH)}\r
94077 );\r
94078 var e;\r
94079 if(this._customSearchMenuItems){\r
94080 for(var a=0;\r
94081 a<this._customSearchMenuItems.length;\r
94082 a++){\r
94083 var t=this._customSearchMenuItems[a];\r
94084 this._createCustomSearchMenuItem(s,t.icon,t.text,t.listener)\r
94085 }}\r
94086 var n={\r
94087 parent:s,enabled:true,radioGroupId:0};\r
94088 for(var a=0;\r
94089 a<ZmSearchToolBar.MENU_ITEMS.length;\r
94090 a++){\r
94091 var r=ZmSearchToolBar.MENU_ITEMS[a];\r
94092 if(r==ZmId.SEARCH_SHARED){\r
94093 if(ZmSearchToolBar.MENU_ITEMS.length<=1){\r
94094 continue\r
94095 }\r
94096 e=new DwtMenuItem({\r
94097 parent:s,style:DwtMenuItem.SEPARATOR_STYLE}\r
94098 )\r
94099 }\r
94100 var o=ZmSearchToolBar.SETTING[r];\r
94101 if(o&&!appCtxt.get(o)){\r
94102 continue\r
94103 }\r
94104 n.style=(r==ZmId.SEARCH_SHARED||r==ZmId.SEARCH_ALL_ACCOUNTS)?DwtMenuItem.CHECK_STYLE:DwtMenuItem.RADIO_STYLE;\r
94105 n.imageInfo=ZmSearchToolBar.ICON[r];\r
94106 n.text=ZmMsg[ZmSearchToolBar.MSG_KEY[r]];\r
94107 n.id=ZmSearchToolBar.ID[r];\r
94108 e=DwtMenuItem.create(n);\r
94109 e.setData(ZmSearchToolBar.MENUITEM_ID,r);\r
94110 if(r==ZmId.SEARCH_ANY){\r
94111 if(ZmSearchToolBar.MENU_ITEMS.length<=1){\r
94112 continue\r
94113 }\r
94114 e=new DwtMenuItem({\r
94115 parent:s,style:DwtMenuItem.SEPARATOR_STYLE}\r
94116 )\r
94117 }}\r
94118 appCtxt.getSearchController()._addMenuListeners(s);\r
94119 this._searchMenuCreated=true;\r
94120 return s\r
94121 };\r
94122 ZmSearchToolBar.prototype._addButton=function(n){\r
94123 if(n.setting&&!appCtxt.get(n.setting)){\r
94124 return\r
94125 }\r
94126 var a;\r
94127 var t=this._htmlElId+(n.tdId||n.buttonId);\r
94128 var e=document.getElementById(t);\r
94129 if(e){\r
94130 var s={\r
94131 parent:this,style:n.style,id:n.buttonId};\r
94132 a=(n.type&&n.type=="toolbar")?(new DwtToolBarButton(s)):(new DwtButton(s));\r
94133 var o=Dwt.getAttr(e,"hint");\r
94134 this._setButtonStyle(a,o,n.lbl,n.icon);\r
94135 if(n.tooltip){\r
94136 a.setToolTipContent(n.tooltip)\r
94137 }\r
94138 a.reparentHtmlElement(t)\r
94139 }\r
94140 return a\r
94141 };\r
94142 ZmSearchToolBar.prototype._setButtonStyle=function(e,o,a,t){\r
94143 if(o=="text"){\r
94144 e.setText(a)\r
94145 }else{\r
94146 if(o=="icon"){\r
94147 e.setImage(t)\r
94148 }else{\r
94149 e.setText(a);\r
94150 e.setImage(t)\r
94151 }}};\r
94152 ZmSearchToolBar.prototype._handleEnterKeyPress=function(e){\r
94153 var a=this._searchMenuButton.getMenu();\r
94154 var t=a.getSelectedItem().getData("CustomSearchItem");\r
94155 if(t){\r
94156 t[2].run(e)\r
94157 }else{\r
94158 var o=this.getSearchFieldValue();\r
94159 appCtxt.notifyZimlets("onKeyPressSearchField",[o]);\r
94160 this._callback.run(o)\r
94161 }\r
94162 return false\r
94163 };\r
94164 ZmSearchToolBar.prototype.initAutocomplete=function(t){\r
94165 var e={\r
94166 dataClass:new ZmSearchAutocomplete(),matchValue:"matchText",delims:[" "],separator:" ",enterCallback:new AjxCallback(this,this._handleEnterKeyPress)};\r
94167 this._acList=new ZmAutocompleteListView(e);\r
94168 this._acList.handle(this.getSearchField())\r
94169 }\r
94170 }\r
94171 if(AjxPackage.define("zimbraMail.share.view.ZmTreeView")){\r
94172 ZmTreeView=function(e){\r
94173 if(arguments.length==0){\r
94174 return\r
94175 }\r
94176 DwtTree.call(this,{\r
94177 parent:e.parent,parentElement:e.parentElement,style:e.treeStyle,isCheckedByDefault:e.isCheckedByDefault,className:(e.className||"OverviewTree"),posStyle:e.posStyle,id:e.id}\r
94178 );\r
94179 this._headerClass=e.headerClass?e.headerClass:"overviewHeader";\r
94180 this.overviewId=e.overviewId;\r
94181 this.type=e.type;\r
94182 this.allowedTypes=e.allowedTypes;\r
94183 this.allowedSubTypes=e.allowedSubTypes;\r
94184 this._overview=appCtxt.getOverviewController().getOverview(this.overviewId);\r
94185 this._dragSrc=e.dragSrc;\r
94186 this._dropTgt=e.dropTgt;\r
94187 this._dataTree=null;\r
94188 this._treeItemHash={}\r
94189 };\r
94190 ZmTreeView.KEY_TYPE="_type_";\r
94191 ZmTreeView.KEY_ID="_treeId_";\r
94192 ZmTreeView.COMPARE_FUNC={};\r
94193 ZmTreeView.ADD_SEP={};\r
94194 ZmTreeView.ADD_SEP[ZmFolder.ID_TRASH]=true;\r
94195 ZmTreeView.MAX_ITEMS=50;\r
94196 ZmTreeView.getSortIndex=function(s,t,e){\r
94197 if(!e){\r
94198 return null\r
94199 }\r
94200 var n=s.getItemCount();\r
94201 var o=s.getItems();\r
94202 for(var a=0;\r
94203 a<o.length;\r
94204 a++){\r
94205 if(o[a]._isSeparator){\r
94206 continue\r
94207 }\r
94208 var h=o[a].getData(Dwt.KEY_OBJECT);\r
94209 if(!h){\r
94210 continue\r
94211 }\r
94212 var r=e(t,h);\r
94213 if(r==-1){\r
94214 return a\r
94215 }}\r
94216 return a\r
94217 };\r
94218 ZmTreeView.prototype=new DwtTree;\r
94219 ZmTreeView.prototype.constructor=ZmTreeView;\r
94220 ZmTreeView.prototype.toString=function(){\r
94221 return"ZmTreeView"\r
94222 };\r
94223 ZmTreeView.prototype.set=function(s){\r
94224 this._showUnread=s.showUnread;\r
94225 this._dataTree=s.dataTree;\r
94226 this.clear();\r
94227 var t=this._dataTree.root;\r
94228 var n=(appCtxt.multiAccounts&&(this.type==ZmOrganizer.SEARCH||this.type==ZmOrganizer.TAG));\r
94229 var e=this._getHeaderTreeItemImage();\r
94230 var o=this._headerItem=new DwtHeaderTreeItem({\r
94231 parent:this,className:n?"DwtTreeItem":this._headerClass,imageInfo:e,id:ZmId.getTreeItemId(this.overviewId,null,this.type),button:n?null:s.newButton,dndScrollCallback:this._overview._dndScrollCallback,dndScrollId:this.overviewId,selectable:appCtxt.multiAccounts}\r
94232 );\r
94233 o._isHeader=true;\r
94234 var a=ZmMsg[ZmOrganizer.LABEL[this.type]];\r
94235 if(a){\r
94236 o.setText(a)\r
94237 }\r
94238 o.setData(Dwt.KEY_ID,t.id);\r
94239 o.setData(Dwt.KEY_OBJECT,t);\r
94240 o.setData(ZmTreeView.KEY_ID,this.overviewId);\r
94241 o.setData(ZmTreeView.KEY_TYPE,this.type);\r
94242 if(this._dropTgt){\r
94243 o.setDropTarget(this._dropTgt)\r
94244 }\r
94245 this._treeItemHash[t.id]=o;\r
94246 s.treeNode=o;\r
94247 s.organizer=t;\r
94248 this._render(s);\r
94249 o.setExpanded(!s.collapsed,null,true);\r
94250 if(!appCtxt.multiAccounts){\r
94251 this.addSeparator()\r
94252 }\r
94253 if(appCtxt.getSkinHint("noOverviewHeaders")||this._hideHeaderTreeItem()){\r
94254 o.setVisible(false,true)\r
94255 }};\r
94256 ZmTreeView.prototype.getTreeItemById=function(e){\r
94257 return this._treeItemHash[e]\r
94258 };\r
94259 ZmTreeView.prototype.getHeaderItem=function(){\r
94260 return this._headerItem\r
94261 };\r
94262 ZmTreeView.prototype.getSelected=function(){\r
94263 if(this.isCheckedStyle){\r
94264 var e=[];\r
94265 var t=this.getHeaderItem();\r
94266 this._getCheckedItems(t,e);\r
94267 return e\r
94268 }else{\r
94269 return(this.getSelectionCount()!=1)?null:this.getSelection()[0].getData(Dwt.KEY_OBJECT)\r
94270 }};\r
94271 ZmTreeView.prototype.setSelected=function(e,t,o){\r
94272 var a=ZmOrganizer.getSystemId((e instanceof ZmOrganizer)?e.id:e);\r
94273 if(!a||!this._treeItemHash[a]){\r
94274 return\r
94275 }\r
94276 this.setSelection(this._treeItemHash[a],t,false,o)\r
94277 };\r
94278 ZmTreeView.prototype._render=function(params){\r
94279 var org=params.organizer;\r
94280 var children=org.children.getArray();\r
94281 if(org.isDataSource(ZmAccount.TYPE_IMAP)){\r
94282 children.sort(ZmImapAccount.sortCompare)\r
94283 }else{\r
94284 if(ZmTreeView.COMPARE_FUNC[this.type]){\r
94285 if(appCtxt.isOffline&&this.type==ZmOrganizer.SEARCH){\r
94286 var local=[];\r
94287 var global=[];\r
94288 for(var j=0;\r
94289 j<children.length;\r
94290 j++){\r
94291 var child=children[j];\r
94292 if(child&&child.type==ZmOrganizer.SEARCH){\r
94293 if(child.isOfflineGlobalSearch){\r
94294 global.push(child)\r
94295 }else{\r
94296 local.push(child)\r
94297 }}}\r
94298 local.sort(eval(ZmTreeView.COMPARE_FUNC[this.type]));\r
94299 global.sort(eval(ZmTreeView.COMPARE_FUNC[this.type]));\r
94300 children=(new Array()).concat(local,global)\r
94301 }else{\r
94302 children.sort(eval(ZmTreeView.COMPARE_FUNC[this.type]))\r
94303 }}}\r
94304 var addSep=true;\r
94305 var numItems=0;\r
94306 var len=children.length;\r
94307 for(var i=params.startPos||0;\r
94308 i<len;\r
94309 i++){\r
94310 var child=children[i];\r
94311 if(!child||(params.omit&&params.omit[child.nId])){\r
94312 continue\r
94313 }\r
94314 if(!(params.include&&params.include[child.nId])){\r
94315 var allowed=((org.nId==ZmOrganizer.ID_ROOT)&&this.allowedTypes[child.type])||((org.nId!=ZmOrganizer.ID_ROOT)&&this.allowedSubTypes[child.type]);\r
94316 if(!allowed){\r
94317 if(params.omitParents){\r
94318 continue\r
94319 }\r
94320 var proxy=AjxUtil.createProxy(params);\r
94321 proxy.treeNode=null;\r
94322 proxy.organizer=child;\r
94323 this._render(proxy);\r
94324 continue\r
94325 }\r
94326 if(this._allowedTypes&&!this._allowedTypes[child.type]){\r
94327 if(params.omitParents){\r
94328 continue\r
94329 }\r
94330 var proxy=AjxUtil.createProxy(params);\r
94331 proxy.treeNode=null;\r
94332 proxy.organizer=child;\r
94333 this._render(proxy);\r
94334 continue\r
94335 }}\r
94336 if((child.numTotal==0&&(child.nId==ZmFolder.ID_SYNC_FAILURES))||(appCtxt.isOffline&&child.nId==ZmOrganizer.ID_GLOBAL_INBOX)){\r
94337 continue\r
94338 }\r
94339 if(numItems>=ZmTreeView.MAX_ITEMS){\r
94340 if(params.startPos){\r
94341 params.startPos=i;\r
94342 params.len=(params.startPos+ZmTreeView.MAX_ITEMS>=len)?len:0;\r
94343 this._showRemainingFolders(params);\r
94344 return\r
94345 }else{\r
94346 if(numItems>=ZmTreeView.MAX_ITEMS*2){\r
94347 var orgs=ZmMsg[ZmOrganizer.LABEL[this.type]].toLowerCase();\r
94348 child=new ZmFolder({\r
94349 id:ZmFolder.ID_LOAD_FOLDERS,name:AjxMessageFormat.format(ZmMsg.showRemainingFolders,orgs)}\r
94350 );\r
94351 child._tooltip=AjxMessageFormat.format(ZmMsg.showRemainingFoldersTooltip,[(children.length-i),orgs]);\r
94352 var ti=this._addNew(params.treeNode,child);\r
94353 ti.enableSelection(true);\r
94354 if(this.isCheckedStyle){\r
94355 ti.showCheckBox(false)\r
94356 }\r
94357 params.startPos=i;\r
94358 child._showFoldersCallback=new AjxCallback(this,this._showRemainingFolders,[params]);\r
94359 return\r
94360 }}}\r
94361 if((org.nId==ZmOrganizer.ID_ROOT)&&child.link&&addSep){\r
94362 params.treeNode.addSeparator();\r
94363 addSep=false\r
94364 }\r
94365 this._addNew(params.treeNode,child,null,params.noTooltips,params.omit);\r
94366 numItems++\r
94367 }};\r
94368 ZmTreeView.prototype._addNew=function(r,u,h,c,a){\r
94369 var t;\r
94370 var e=(u.type==ZmOrganizer.FOLDER)&&appCtxt.getDataSourceCollection();\r
94371 var d=e&&e.getByFolderId(u.nId);\r
94372 var o=(d&&d.length>0)?d[0]:null;\r
94373 if(o&&o.type==ZmAccount.TYPE_IMAP){\r
94374 t=new DwtTreeItem({\r
94375 parent:this,text:u.getName(),className:this._headerClass}\r
94376 );\r
94377 t.enableSelection(false)\r
94378 }else{\r
94379 if(!r){\r
94380 var l=[];\r
94381 var s=u.parent;\r
94382 while((r=this.getTreeItemById(s.id))==null){\r
94383 l.push(s);\r
94384 s=s.parent\r
94385 }\r
94386 while(s=l.pop()){\r
94387 r=this.getTreeItemById(s.parent.id);\r
94388 r=new DwtTreeItem({\r
94389 parent:r,text:s.getName(),imageInfo:s.getIconWithColor(),forceNotifySelection:true,dndScrollCallback:this._overview._dndScrollCallback,dndScrollId:this.overviewId,id:ZmId.getTreeItemId(this.overviewId,s.id)}\r
94390 );\r
94391 r.setData(Dwt.KEY_ID,s.id);\r
94392 r.setData(Dwt.KEY_OBJECT,s);\r
94393 r.setData(ZmTreeView.KEY_ID,this.overviewId);\r
94394 r.setData(ZmTreeView.KEY_TYPE,s.type);\r
94395 this._treeItemHash[s.id]=r\r
94396 }}\r
94397 var n={\r
94398 parent:r,index:h,text:u.getName(this._showUnread),dndScrollCallback:this._overview._dndScrollCallback,dndScrollId:this.overviewId,imageInfo:u.getIconWithColor(),id:ZmId.getTreeItemId(this.overviewId,u.id)};\r
94399 t=new DwtTreeItem(n)\r
94400 }\r
94401 if(appCtxt.multiAccounts&&(u.type==ZmOrganizer.SEARCH||u.type==ZmOrganizer.TAG)){\r
94402 t.addClassName("DwtTreeItemChildDiv")\r
94403 }\r
94404 t.setDndText(u.getName());\r
94405 t.setData(Dwt.KEY_ID,u.id);\r
94406 t.setData(Dwt.KEY_OBJECT,u);\r
94407 t.setData(ZmTreeView.KEY_ID,this.overviewId);\r
94408 t.setData(ZmTreeView.KEY_TYPE,u.type);\r
94409 if(!c){\r
94410 var m=u.getToolTip();\r
94411 if(m){\r
94412 t.setToolTipContent(m)\r
94413 }}\r
94414 if(this._dragSrc){\r
94415 t.setDragSource(this._dragSrc)\r
94416 }\r
94417 if(this._dropTgt){\r
94418 t.setDropTarget(this._dropTgt)\r
94419 }\r
94420 this._treeItemHash[u.id]=t;\r
94421 if(ZmTreeView.ADD_SEP[u.nId]){\r
94422 r.addSeparator()\r
94423 }\r
94424 if(u.children&&u.children.size()){\r
94425 this._render({\r
94426 treeNode:t,organizer:u,omit:a}\r
94427 )\r
94428 }\r
94429 if(o&&o.type==ZmAccount.TYPE_IMAP){\r
94430 t.setExpanded(!appCtxt.get(ZmSetting.COLLAPSE_IMAP_TREES))\r
94431 }\r
94432 return t\r
94433 };\r
94434 ZmTreeView.prototype.getNextData=function(t){\r
94435 var r=this.getTreeItemById(t);\r
94436 if(!r||!r.parent){\r
94437 return null\r
94438 }\r
94439 while(r&&r.parent){\r
94440 var o=r.parent;\r
94441 if(!(o instanceof DwtTreeItem)){\r
94442 return null\r
94443 }\r
94444 var e=o.getItems();\r
94445 var l=null;\r
94446 if(e&&e.length>1){\r
94447 for(var n=0;\r
94448 n<e.length;\r
94449 n++){\r
94450 var s=e[n];\r
94451 if(s==r){\r
94452 var h=this.findNext(r,e,n);\r
94453 if(h){\r
94454 return h\r
94455 }\r
94456 var a=this.findPrev(r,e,n);\r
94457 if(a){\r
94458 return a\r
94459 }}}}\r
94460 r=r.parent\r
94461 }\r
94462 return null\r
94463 };\r
94464 ZmTreeView.prototype.findNext=function(n,o,t){\r
94465 for(var e=t+1;\r
94466 e<o.length;\r
94467 e++){\r
94468 var a=o[e];\r
94469 if(a&&a.getData){\r
94470 return a.getData(Dwt.KEY_OBJECT)\r
94471 }}\r
94472 return null\r
94473 };\r
94474 ZmTreeView.prototype.findPrev=function(n,o,t){\r
94475 for(var e=t-1;\r
94476 e>=0;\r
94477 e--){\r
94478 var a=o[e];\r
94479 if(a&&a.getData){\r
94480 return a.getData(Dwt.KEY_OBJECT)\r
94481 }}\r
94482 return null\r
94483 };\r
94484 ZmTreeView.prototype._showRemainingFolders=function(t){\r
94485 var e=this.getTreeItemById(ZmFolder.ID_LOAD_FOLDERS);\r
94486 if(e){\r
94487 e.dispose()\r
94488 }\r
94489 AjxTimedAction.scheduleAction(new AjxTimedAction(this,function(){\r
94490 this._render(t);\r
94491 if(t.len){\r
94492 var a=ZmMsg[ZmOrganizer.LABEL[this.type]].toLowerCase();\r
94493 appCtxt.setStatusMsg(AjxMessageFormat.format(ZmMsg.foldersShown,[t.len,a]));\r
94494 t.len=0\r
94495 }}\r
94496 ),100)\r
94497 };\r
94498 ZmTreeView.prototype._getNextTreeItem=function(t){\r
94499 var e=DwtTree.prototype._getNextTreeItem.apply(this,arguments);\r
94500 return e||this._overview._getNextTreeItem(t,this)\r
94501 };\r
94502 ZmTreeView.prototype._hideHeaderTreeItem=function(){\r
94503 return(appCtxt.multiAccounts&&(this.type==ZmOrganizer.FOLDER||this.type==ZmOrganizer.ADDRBOOK||this.type==ZmOrganizer.CALENDAR||this.type==ZmOrganizer.TASKS||this.type==ZmOrganizer.NOTEBOOK||this.type==ZmOrganizer.BRIEFCASE||this.type==ZmOrganizer.PREF_PAGE||this.type==ZmOrganizer.ZIMLET))\r
94504 };\r
94505 ZmTreeView.prototype._getHeaderTreeItemImage=function(){\r
94506 if(appCtxt.multiAccounts){\r
94507 if(this.type==ZmOrganizer.SEARCH){\r
94508 return"SearchFolder"\r
94509 }\r
94510 if(this.type==ZmOrganizer.TAG){\r
94511 return"TagStack"\r
94512 }}\r
94513 return null\r
94514 };\r
94515 ZmTreeView.prototype._getCheckedItems=function(o,a){\r
94516 if(o&&(o instanceof DwtTreeItem)){\r
94517 if(o.getChecked()){\r
94518 a.push(o.getData(Dwt.KEY_OBJECT))\r
94519 }\r
94520 var e=o.getItems();\r
94521 for(var t=0;\r
94522 t<e.length;\r
94523 t++){\r
94524 this._getCheckedItems(e[t],a)\r
94525 }}}\r
94526 }\r
94527 if(AjxPackage.define("zimbraMail.share.view.ZmTagMenu")){\r
94528 ZmTagMenu=function(t,e){\r
94529 ZmPopupMenu.call(this,t,null,t.getHTMLElId()+"|MENU",e);\r
94530 t.setMenu(this);\r
94531 this._addHash={};\r
94532 this._removeHash={};\r
94533 this._evtMgr=new AjxEventMgr();\r
94534 this._desiredState=true;\r
94535 this._items=null;\r
94536 this._dirty=true;\r
94537 if(t instanceof DwtMenuItem){\r
94538 t.setHoverDelay(ZmTagMenu._HOVER_TIME)\r
94539 }};\r
94540 ZmTagMenu.prototype=new ZmPopupMenu;\r
94541 ZmTagMenu.prototype.constructor=ZmTagMenu;\r
94542 ZmTagMenu.KEY_TAG_EVENT="_tagEvent_";\r
94543 ZmTagMenu.KEY_TAG_ADDED="_tagAdded_";\r
94544 ZmTagMenu.MENU_ITEM_ADD_ID="tag_add";\r
94545 ZmTagMenu.MENU_ITEM_REM_ID="tag_remove";\r
94546 ZmTagMenu._HOVER_TIME=200;\r
94547 ZmTagMenu.prototype.toString=function(){\r
94548 return"ZmTagMenu"\r
94549 };\r
94550 ZmTagMenu.prototype.addSelectionListener=function(e){\r
94551 this._evtMgr.addListener(DwtEvent.SELECTION,e)\r
94552 };\r
94553 ZmTagMenu.prototype.removeSelectionListener=function(e){\r
94554 this._evtMgr.removeListener(DwtEvent.SELECTION,e)\r
94555 };\r
94556 ZmTagMenu.prototype.setEnabled=function(e){\r
94557 this._desiredState=e;\r
94558 if(e&&!this._tagList){\r
94559 return\r
94560 }\r
94561 this.parent.setEnabled(e)\r
94562 };\r
94563 ZmTagMenu.prototype.set=function(e,t){\r
94564 this._tagList=t;\r
94565 this._items=e;\r
94566 this._dirty=true;\r
94567 this.parent.setEnabled(true);\r
94568 if(this.parent instanceof DwtMenuItem){\r
94569 this.parent.setHoverDelay(ZmTagMenu._HOVER_TIME)\r
94570 }};\r
94571 ZmTagMenu.prototype._doPopup=function(t,n,a){\r
94572 if(this._dirty){\r
94573 this.removeChildren();\r
94574 if(this._tagList){\r
94575 var o=this._tagList.root;\r
94576 var e=this._getAddRemove(this._items,o);\r
94577 this._render(o,e)\r
94578 }\r
94579 this._dirty=false;\r
94580 if(this.parent instanceof DwtMenuItem){\r
94581 this.parent.setHoverDelay(0)\r
94582 }}\r
94583 ZmPopupMenu.prototype._doPopup.call(this,t,n,a)\r
94584 };\r
94585 ZmTagMenu.prototype._getAddRemove=function(s,h){\r
94586 var r={};\r
94587 for(var n=0;\r
94588 n<s.length;\r
94589 n++){\r
94590 var d=s[n];\r
94591 if(!d){\r
94592 continue\r
94593 }\r
94594 if(d.tags&&d.tags.length){\r
94595 for(var t=0;\r
94596 t<d.tags.length;\r
94597 t++){\r
94598 var e=d.tags[t];\r
94599 r[e]=r[e]?r[e]+1:1\r
94600 }}}\r
94601 var c={};\r
94602 var o={};\r
94603 var l=h.children.getArray();\r
94604 for(var n=0;\r
94605 n<l.length;\r
94606 n++){\r
94607 var e=l[n].nId;\r
94608 if(!r[e]||(r[e]<s.length)){\r
94609 c[e]=true\r
94610 }}\r
94611 for(var e in r){\r
94612 o[e]=true\r
94613 }\r
94614 return{\r
94615 add:c,remove:o}\r
94616 };\r
94617 ZmTagMenu.prototype._render=function(h,l){\r
94618 var r=h.size();\r
94619 var d=h.children.getArray();\r
94620 var s=[];\r
94621 for(var o=0;\r
94622 o<r;\r
94623 o++){\r
94624 var m=d[o];\r
94625 var t=m.nId;\r
94626 if(l.add[t]){\r
94627 this._addNewTag(this,m,true,null,this._addHash)\r
94628 }\r
94629 if(l.remove[t]){\r
94630 s.push(t)\r
94631 }}\r
94632 if(this._tagList.size()){\r
94633 new DwtMenuItem({\r
94634 parent:this,style:DwtMenuItem.SEPARATOR_STYLE}\r
94635 )\r
94636 }\r
94637 var c=this._menuItems[ZmTagMenu.MENU_ITEM_ADD_ID]=new DwtMenuItem({\r
94638 parent:this,id:this._htmlElId+"|NEWTAG"}\r
94639 );\r
94640 c.setText(AjxStringUtil.htmlEncode(ZmMsg.newTag));\r
94641 c.setImage("NewTag");\r
94642 c.setShortcut(appCtxt.getShortcutHint(this._keyMap,ZmKeyMap.NEW_TAG));\r
94643 c.setData(ZmTagMenu.KEY_TAG_EVENT,ZmEvent.E_CREATE);\r
94644 c.addSelectionListener(new AjxListener(this,this._menuItemSelectionListener),0);\r
94645 var u=this._menuItems[ZmTagMenu.MENU_ITEM_REM_ID]=new DwtMenuItem({\r
94646 parent:this,id:this._htmlElId+"|REMOVETAG"}\r
94647 );\r
94648 u.setEnabled(false);\r
94649 u.setText(AjxStringUtil.htmlEncode(ZmMsg.removeTag));\r
94650 u.setImage("DeleteTag");\r
94651 if(s.length>0){\r
94652 u.setEnabled(true);\r
94653 var e=null;\r
94654 if(s.length>1){\r
94655 for(o=0;\r
94656 o<s.length;\r
94657 o++){\r
94658 if(!e){\r
94659 e=new DwtMenu({\r
94660 parent:u,className:this._className}\r
94661 );\r
94662 u.setMenu(e)\r
94663 }\r
94664 var m=h.getById(s[o]);\r
94665 this._addNewTag(e,m,false,null,this._removeHash)\r
94666 }}else{\r
94667 if(s.length==1){\r
94668 var m=h.getById(s[0]);\r
94669 u.setData(ZmTagMenu.KEY_TAG_EVENT,ZmEvent.E_TAGS);\r
94670 u.setData(ZmTagMenu.KEY_TAG_ADDED,false);\r
94671 u.setData(Dwt.KEY_OBJECT,m);\r
94672 u.addSelectionListener(new AjxListener(this,this._menuItemSelectionListener),0)\r
94673 }}\r
94674 if(s.length>1){\r
94675 new DwtMenuItem({\r
94676 parent:e,style:DwtMenuItem.SEPARATOR_STYLE}\r
94677 );\r
94678 var n=new DwtMenuItem({\r
94679 parent:e}\r
94680 );\r
94681 n.setText(ZmMsg.allTags);\r
94682 n.setImage("TagStack");\r
94683 n.setShortcut(appCtxt.getShortcutHint(this._keyMap,ZmKeyMap.UNTAG));\r
94684 n.setData(ZmTagMenu.KEY_TAG_EVENT,ZmEvent.E_REMOVE_ALL);\r
94685 n.setData(Dwt.KEY_OBJECT,s);\r
94686 n.addSelectionListener(new AjxListener(this,this._menuItemSelectionListener),0)\r
94687 }}};\r
94688 ZmTagMenu.tagNameLength=20;\r
94689 ZmTagMenu.prototype._addNewTag=function(r,o,n,t,s){\r
94690 var e=new DwtMenuItem({\r
94691 parent:r,index:t}\r
94692 );\r
94693 var a=AjxStringUtil.clipByLength(o.getName(false),ZmTagMenu.tagNameLength);\r
94694 e.setText(a);\r
94695 e.setImage(ZmTag.COLOR_ICON[o.color]);\r
94696 e.setData(ZmTagMenu.KEY_TAG_EVENT,ZmEvent.E_TAGS);\r
94697 e.setData(ZmTagMenu.KEY_TAG_ADDED,n);\r
94698 e.setData(Dwt.KEY_OBJECT,o);\r
94699 e.addSelectionListener(new AjxListener(this,this._menuItemSelectionListener),0);\r
94700 e.setShortcut(appCtxt.getShortcutHint(null,ZmKeyMap.TAG));\r
94701 s[o.id]=e\r
94702 };\r
94703 ZmTagMenu.prototype._menuItemSelectionListener=function(e){\r
94704 if(e.item.getData(ZmTagMenu.KEY_TAG_EVENT)){\r
94705 this._evtMgr.notifyListeners(DwtEvent.SELECTION,e.item)\r
94706 }}\r
94707 }\r
94708 if(AjxPackage.define("zimbraMail.share.view.ZmListView")){\r
94709 ZmListView=function(o){\r
94710 if(arguments.length==0){\r
94711 return\r
94712 }\r
94713 o.id=o.id||ZmId.getViewId(o.view);\r
94714 DwtListView.call(this,o);\r
94715 this.view=o.view;\r
94716 this.type=o.type;\r
94717 this._controller=o.controller;\r
94718 this.setDropTarget(o.dropTgt);\r
94719 this._listChangeListener=new AjxListener(this,this._changeListener);\r
94720 this._tagListChangeListener=new AjxListener(this,this._tagChangeListener);\r
94721 var a=appCtxt.getTagTree();\r
94722 if(a){\r
94723 a.addChangeListener(this._tagListChangeListener)\r
94724 }\r
94725 var t=appCtxt.getFolderTree();\r
94726 if(t){\r
94727 t.addChangeListener(new AjxListener(this,this._folderChangeListener))\r
94728 }\r
94729 this._handleEventType={};\r
94730 this._handleEventType[this.type]=true;\r
94731 this._disallowSelection={};\r
94732 this._disallowSelection[ZmItem.F_FLAG]=true;\r
94733 this._selectAllEnabled=false;\r
94734 if(o.dropTgt){\r
94735 var e={\r
94736 container:this._parentEl,threshold:15,amount:5,interval:10,id:o.id};\r
94737 this._dndScrollCallback=new AjxCallback(null,DwtControl._dndScrollCallback,[e]);\r
94738 this._dndScrollId=o.id\r
94739 }\r
94740 this._isPageless=o.pageless;\r
94741 if(this._isPageless){\r
94742 Dwt.setHandler(this._parentEl,DwtEvent.ONSCROLL,ZmListView.handleScroll)\r
94743 }};\r
94744 ZmListView.prototype=new DwtListView;\r
94745 ZmListView.prototype.constructor=ZmListView;\r
94746 ZmListView.prototype.toString=function(){\r
94747 return"ZmListView"\r
94748 };\r
94749 ZmListView.KEY_ID="_keyId";\r
94750 ZmListView.COL_WIDTH_ICON=19;\r
94751 ZmListView.COL_WIDTH_NARROW_ICON=11;\r
94752 ZmListView.FIELD_CLASS={};\r
94753 ZmListView.FIELD_CLASS[ZmItem.F_TYPE]="Icon";\r
94754 ZmListView.FIELD_CLASS[ZmItem.F_FLAG]="Flag";\r
94755 ZmListView.FIELD_CLASS[ZmItem.F_TAG]="Tag";\r
94756 ZmListView.FIELD_CLASS[ZmItem.F_ATTACHMENT]="Attach";\r
94757 ZmListView.ITEM_FLAG_CLICKED=DwtListView._LAST_REASON+1;\r
94758 ZmListView.DEFAULT_REPLENISH_THRESHOLD=0;\r
94759 ZmListView.COL_JOIN="|";\r
94760 ZmListView.prototype._getHeaderList=function(){};\r
94761 ZmListView.prototype.getController=function(){\r
94762 return this._controller\r
94763 };\r
94764 ZmListView.prototype.set=function(o,a){\r
94765 this.setSelectionHdrCbox(false);\r
94766 if(appCtxt.multiAccounts){\r
94767 var n=appCtxt.getTagTree();\r
94768 if(n){\r
94769 n.addChangeListener(this._tagListChangeListener)\r
94770 }}\r
94771 if(this._isPageless){\r
94772 if(this._itemsToAdd){\r
94773 this.addItems(this._itemsToAdd);\r
94774 this._itemsToAdd=null\r
94775 }else{\r
94776 var t=o;\r
94777 if(o instanceof ZmList){\r
94778 o.addChangeListener(this._listChangeListener);\r
94779 t=o.getSubList(0,o.size())\r
94780 }\r
94781 DwtListView.prototype.set.call(this,t,a)\r
94782 }\r
94783 this._setRowHeight(o)\r
94784 }else{\r
94785 var e;\r
94786 if(o instanceof ZmList){\r
94787 o.addChangeListener(this._listChangeListener);\r
94788 e=o.getSubList(this.offset,this.getLimit())\r
94789 }else{\r
94790 e=o\r
94791 }\r
94792 DwtListView.prototype.set.call(this,e,a)\r
94793 }\r
94794 this._rendered=true\r
94795 };\r
94796 ZmListView.prototype._setRowHeight=function(){\r
94797 if(!this._rowHeight){\r
94798 var e=this._parentEl.firstChild;\r
94799 this._rowHeight=e&&Dwt.getSize(e).y\r
94800 }};\r
94801 ZmListView.prototype.reset=function(){\r
94802 this._rendered=false\r
94803 };\r
94804 ZmListView.prototype.setUI=function(e){\r
94805 DwtListView.prototype.setUI.call(this,e);\r
94806 this._resetColWidth()\r
94807 };\r
94808 ZmListView.prototype.getLimit=function(t){\r
94809 if(this._isPageless){\r
94810 var e=appCtxt.get(ZmSetting.PAGE_SIZE);\r
94811 return t?e:2*e\r
94812 }else{\r
94813 return appCtxt.get(ZmSetting.PAGE_SIZE)\r
94814 }};\r
94815 ZmListView.prototype.getPagelessThreshold=function(){\r
94816 return Math.ceil(this.getLimit()/5)\r
94817 };\r
94818 ZmListView.prototype.getReplenishThreshold=function(){\r
94819 return ZmListView.DEFAULT_REPLENISH_THRESHOLD\r
94820 };\r
94821 ZmListView.prototype._changeListener=function(s){\r
94822 var n=this._getItemFromEvent(s);\r
94823 if(!n||s.handled||!this._handleEventType[n.type]&&(this.type!=ZmItem.MIXED)){\r
94824 return\r
94825 }\r
94826 if(s.event==ZmEvent.E_TAGS||s.event==ZmEvent.E_REMOVE_ALL){\r
94827 this._setImage(n,ZmItem.F_TAG,n.getTagImageInfo())\r
94828 }\r
94829 if(s.event==ZmEvent.E_FLAGS){\r
94830 var a=s.getDetail("flags");\r
94831 for(var o=0;\r
94832 o<a.length;\r
94833 o++){\r
94834 var t=a[o];\r
94835 var e=n[ZmItem.FLAG_PROP[t]];\r
94836 if(t==ZmItem.FLAG_FLAGGED){\r
94837 this._setImage(n,ZmItem.F_FLAG,e?"FlagRed":null)\r
94838 }else{\r
94839 if(t==ZmItem.FLAG_ATTACH){\r
94840 this._setImage(n,ZmItem.F_ATTACHMENT,e?"Attachment":null)\r
94841 }}}}\r
94842 if(s.event==ZmEvent.E_DELETE||s.event==ZmEvent.E_MOVE){\r
94843 this.removeItem(n,true);\r
94844 if(s.event!=ZmEvent.E_MOVE||!this._controller._list.isCanonical){\r
94845 this._controller._list.remove(n)\r
94846 }\r
94847 if(!this.allSelected){\r
94848 if(!this._isPageless){\r
94849 this._controller._app._checkReplenishListView=this\r
94850 }else{\r
94851 this._handleResponseCheckReplenish()\r
94852 }}\r
94853 this._controller._resetToolbarOperations()\r
94854 }};\r
94855 ZmListView.prototype._getItemFromEvent=function(a){\r
94856 var t=a.item;\r
94857 if(!t){\r
94858 var e=a.getDetail("items");\r
94859 t=(e&&e.length)?e[0]:null\r
94860 }\r
94861 return t\r
94862 };\r
94863 ZmListView.prototype._checkReplenish=function(){\r
94864 var e=new AjxCallback(this,this._handleResponseCheckReplenish);\r
94865 this._controller._checkReplenish(e)\r
94866 };\r
94867 ZmListView.prototype._handleResponseCheckReplenish=function(){\r
94868 if(this.size()==0){\r
94869 this._controller._handleEmptyList(this)\r
94870 }else{\r
94871 this._controller._resetNavToolBarButtons(this._controller._getViewType())\r
94872 }\r
94873 this._setNextSelection()\r
94874 };\r
94875 ZmListView.prototype._folderChangeListener=function(o){\r
94876 if(appCtxt.getCurrentController()!=this._controller){\r
94877 return\r
94878 }\r
94879 if(this._controller._app._checkReplenishListView==this){\r
94880 return\r
94881 }\r
94882 var a=o.getDetail("organizers");\r
94883 var t=(a&&a.length)?a[0]:o.source;\r
94884 var n=t.id;\r
94885 var e=o.getDetail("fields");\r
94886 if(o.event==ZmEvent.E_MODIFY){\r
94887 if(!e){\r
94888 return\r
94889 }\r
94890 if(e[ZmOrganizer.F_TOTAL]){\r
94891 this._controller._resetNavToolBarButtons(this._controller._getViewType())\r
94892 }}};\r
94893 ZmListView.prototype._tagChangeListener=function(r){\r
94894 if(r.type!=ZmEvent.S_TAG){\r
94895 return\r
94896 }\r
94897 var t=r.getDetail("fields");\r
94898 if(r.event==ZmEvent.E_MODIFY&&(t&&t[ZmOrganizer.F_COLOR])){\r
94899 var n=this._getChildren();\r
94900 var e=r.getDetail("organizers")[0];\r
94901 for(var o=0;\r
94902 o<n.length;\r
94903 o++){\r
94904 var s=this.getItemFromElement(n[o]);\r
94905 if(s&&s.tags&&(s.tags.length==1)&&(s.tags[0]==e.id)){\r
94906 this._setImage(s,ZmItem.F_TAG,s.getTagImageInfo())\r
94907 }}}else{\r
94908 if(r.event==ZmEvent.E_DELETE){\r
94909 var n=this._getChildren();\r
94910 var e=r.getDetail("organizers")[0];\r
94911 for(var o=0;\r
94912 o<n.length;\r
94913 o++){\r
94914 var s=this.getItemFromElement(n[o]);\r
94915 var a=ZmOrganizer.normalizeId(e.id);\r
94916 if(s&&s.tags&&s.hasTag(a)){\r
94917 s.tagLocal(a,false);\r
94918 this._setImage(s,ZmItem.F_TAG,s.getTagImageInfo())\r
94919 }}}}};\r
94920 ZmListView.prototype._getChildren=function(){\r
94921 return this._parentEl.childNodes\r
94922 };\r
94923 ZmListView.prototype._getRowId=function(e){\r
94924 return DwtId.getListViewItemId(DwtId.WIDGET_ITEM_FIELD,this._view,e?e.id:Dwt.getNextId(),ZmItem.F_ITEM_ROW)\r
94925 };\r
94926 ZmListView.prototype._getCellId=function(e,t){\r
94927 if(t==ZmItem.F_DATE){\r
94928 return this._getFieldId(e,t)\r
94929 }else{\r
94930 if(t==ZmItem.F_SELECTION){\r
94931 return this._getFieldId(e,ZmItem.F_SELECTION_CELL)\r
94932 }else{\r
94933 return DwtListView.prototype._getCellId.apply(this,arguments)\r
94934 }}};\r
94935 ZmListView.prototype._getCellClass=function(e,t,a){\r
94936 return ZmListView.FIELD_CLASS[t]\r
94937 };\r
94938 ZmListView.prototype._getCellContents=function(t,e,a,o,r,s){\r
94939 if(o==ZmItem.F_SELECTION){\r
94940 e=this._getImageHtml(t,e,"CheckboxUnchecked",this._getFieldId(a,o))\r
94941 }else{\r
94942 if(o==ZmItem.F_TYPE){\r
94943 e=this._getImageHtml(t,e,ZmItem.ICON[a.type],this._getFieldId(a,o))\r
94944 }else{\r
94945 if(o==ZmItem.F_FLAG){\r
94946 e=this._getImageHtml(t,e,this._getFlagIcon(a.isFlagged),this._getFieldId(a,o))\r
94947 }else{\r
94948 if(o==ZmItem.F_TAG){\r
94949 e=this._getImageHtml(t,e,a.getTagImageInfo(),this._getFieldId(a,o))\r
94950 }else{\r
94951 if(o==ZmItem.F_ATTACHMENT){\r
94952 e=this._getImageHtml(t,e,a.hasAttach?"Attachment":null,this._getFieldId(a,o))\r
94953 }else{\r
94954 if(o==ZmItem.F_DATE){\r
94955 t[e++]=AjxDateUtil.computeDateStr(s.now||new Date(),a.date)\r
94956 }else{\r
94957 if(o==ZmItem.F_PRIORITY){\r
94958 var n=null;\r
94959 if(a.isHighPriority){\r
94960 n="PriorityHigh_list"\r
94961 }else{\r
94962 if(a.isLowPriority){\r
94963 n="PriorityLow_list"\r
94964 }else{\r
94965 n="PriorityNormal_list"\r
94966 }}\r
94967 e=this._getImageHtml(t,e,n,this._getFieldId(a,o))\r
94968 }else{\r
94969 e=DwtListView.prototype._getCellContents.apply(this,arguments)\r
94970 }}}}}}}\r
94971 return e\r
94972 };\r
94973 ZmListView.prototype._getImageHtml=function(a,t,e,n){\r
94974 e=e||"Blank_16";\r
94975 var o=n?["id='",n,"'"].join(""):null;\r
94976 a[t++]=AjxImg.getImageHtml(e,null,o);\r
94977 return t\r
94978 };\r
94979 ZmListView.prototype._setImage=function(a,o,e){\r
94980 var t=this._getElement(a,o);\r
94981 if(t&&t.parentNode){\r
94982 e=e||"Blank_16";\r
94983 AjxImg.setImage(t.parentNode,e)\r
94984 }};\r
94985 ZmListView.prototype._getFragmentSpan=function(e){\r
94986 return["<span class='ZmConvListFragment' id='",this._getFieldId(e,ZmItem.F_FRAGMENT),"'>",this._getFragmentHtml(e),"</span>"].join("")\r
94987 };\r
94988 ZmListView.prototype._getFragmentHtml=function(e){\r
94989 return[" - ",AjxStringUtil.htmlEncode(e.fragment,true)].join("")\r
94990 };\r
94991 ZmListView.prototype._getFlagIcon=function(t,e){\r
94992 return(t||e)?"FlagRed":"Blank_16"\r
94993 };\r
94994 ZmListView.prototype._parseId=function(t){\r
94995 var e=t.split(DwtId.SEP);\r
94996 if(e&&e.length){\r
94997 return{\r
94998 view:e[1],item:e[2],field:e[3],participant:e[4]}\r
94999 }else{\r
95000 return null\r
95001 }};\r
95002 ZmListView.prototype._mouseOutAction=function(n,h){\r
95003 DwtListView.prototype._mouseOutAction.call(this,n,h);\r
95004 var r=n.target.id||h.id;\r
95005 if(!r){\r
95006 return true\r
95007 }\r
95008 var s=this._data[h.id];\r
95009 var t=s.type;\r
95010 if(t&&t==DwtListView.TYPE_LIST_ITEM){\r
95011 var e=this._parseId(r);\r
95012 if(e&&e.field){\r
95013 if(e.field==ZmItem.F_SELECTION){\r
95014 var o=this._getItemData(h,"origSelClassName");\r
95015 if(o){\r
95016 n.target.className=o\r
95017 }}else{\r
95018 if(e.field==ZmItem.F_FLAG){\r
95019 var a=this.getItemFromElement(h);\r
95020 if(!a.isFlagged){\r
95021 AjxImg.setImage(n.target,this._getFlagIcon(a.isFlagged,false),true)\r
95022 }}}}}\r
95023 return true\r
95024 };\r
95025 ZmListView.prototype._doubleClickAction=function(t,o){\r
95026 var a=t.target.id?t.target.id:o.id;\r
95027 if(!a){\r
95028 return true\r
95029 }\r
95030 var e=this._parseId(a);\r
95031 return(!(e&&(e.field==ZmItem.F_FLAG)))\r
95032 };\r
95033 ZmListView.prototype._itemClicked=function(n,r){\r
95034 if(appCtxt.get(ZmSetting.SHOW_SELECTION_CHECKBOX)&&r.button==DwtMouseEvent.LEFT){\r
95035 if(!r.shiftKey&&!r.ctrlKey){\r
95036 var a=(r.target.id&&r.target.id.indexOf("AjxImg")==-1)?r.target.id:n.id;\r
95037 var s=a?this._parseId(a):null;\r
95038 if(s&&(s.field==ZmItem.F_SELECTION)||(s.field==ZmItem.F_SELECTION_CELL)){\r
95039 if(this._selectedItems.size()==1){\r
95040 var o=this._selectedItems.get(0);\r
95041 var c=this.getItemFromElement(o);\r
95042 var h=c?this._getFieldId(c,ZmItem.F_SELECTION):null;\r
95043 var l=h?document.getElementById(h):null;\r
95044 if(l&&o==n){\r
95045 var e=this._getItemData(o,"origSelClassName");\r
95046 if(e=="ImgCheckboxChecked"){\r
95047 l.className="ImgCheckboxUnchecked";\r
95048 this._setItemData(o,"origSelClassName","ImgCheckboxUnchecked")\r
95049 }else{\r
95050 if(e=="ImgCheckboxUnchecked"){\r
95051 l.className="ImgCheckboxChecked";\r
95052 this._setItemData(o,"origSelClassName","ImgCheckboxChecked");\r
95053 return\r
95054 }}}else{\r
95055 if(l&&l.className=="ImgCheckboxUnchecked"){\r
95056 DwtListView.prototype.deselectAll.call(this)\r
95057 }}}\r
95058 var t=this._selectedItems.contains(n);\r
95059 this.setMultiSelection(n,t);\r
95060 return\r
95061 }}else{\r
95062 if(r.shiftKey){\r
95063 this._checkSelectedItems(false);\r
95064 DwtListView.prototype._itemClicked.call(this,n,r);\r
95065 this._checkSelectedItems(true);\r
95066 return\r
95067 }}}\r
95068 DwtListView.prototype._itemClicked.call(this,n,r)\r
95069 };\r
95070 ZmListView.prototype._columnClicked=function(t,e){\r
95071 DwtListView.prototype._columnClicked.call(this,t,e);\r
95072 this._checkSelectionColumnClicked(t,e)\r
95073 };\r
95074 ZmListView.prototype._checkSelectionColumnClicked=function(r,n){\r
95075 if(!appCtxt.get(ZmSetting.SHOW_SELECTION_CHECKBOX)){\r
95076 return\r
95077 }\r
95078 var s=this.getList();\r
95079 var a=s?s.size():null;\r
95080 if(a>0){\r
95081 var e=this._data[r.id].index;\r
95082 var o=this._headerList[e];\r
95083 if(o&&(o._field==ZmItem.F_SELECTION)){\r
95084 var t=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_ICON,this._view,o._field);\r
95085 var h=document.getElementById(t);\r
95086 if(h){\r
95087 this.allSelected=false;\r
95088 if(h.className=="ImgCheckboxChecked"){\r
95089 this.deselectAll();\r
95090 h.className="ImgCheckboxUnchecked"\r
95091 }else{\r
95092 h.className="ImgCheckboxChecked";\r
95093 this.selectAll(n.shiftKey)\r
95094 }}}\r
95095 this._controller._resetToolbarOperations()\r
95096 }};\r
95097 ZmListView.prototype.handleKeyAction=function(e,t){\r
95098 var a=DwtListView.prototype.handleKeyAction.call(this,e,t);\r
95099 if(e==DwtKeyMap.SELECT_ALL){\r
95100 this._controller._resetToolbarOperations()\r
95101 }\r
95102 return a\r
95103 };\r
95104 ZmListView.prototype.setMultiSelection=function(e,a,t){\r
95105 if(t&&t.ctrlKey&&this._selectedItems.size()==1){\r
95106 this._checkSelectedItems(true)\r
95107 }\r
95108 DwtListView.prototype.setMultiSelection.call(this,e,a);\r
95109 this.setSelectionCbox(e,a);\r
95110 this.setSelectionHdrCbox(this.getSelection().length==this.getList().size());\r
95111 this._controller._resetToolbarOperations()\r
95112 };\r
95113 ZmListView.prototype.setSelectionCbox=function(n,o){\r
95114 if(!n){\r
95115 return\r
95116 }\r
95117 var t=n.tagName?this.getItemFromElement(n):n;\r
95118 var e=t?this._getFieldId(t,ZmItem.F_SELECTION):null;\r
95119 var a=e?document.getElementById(e):null;\r
95120 if(a){\r
95121 a.className=o?"ImgCheckboxUnchecked":"ImgCheckboxChecked";\r
95122 this._setItemData(n,"origSelClassName",a.className)\r
95123 }};\r
95124 ZmListView.prototype.setSelectionHdrCbox=function(t){\r
95125 var a=this._headerHash?this._headerHash[ZmItem.F_SELECTION]:null;\r
95126 var e=a?DwtId.getListViewHdrId(DwtId.WIDGET_HDR_ICON,this._view,a._field):null;\r
95127 var o=e?document.getElementById(e):null;\r
95128 if(o){\r
95129 o.className=t?"ImgCheckboxChecked":"ImgCheckboxUnchecked"\r
95130 }};\r
95131 ZmListView.prototype.setSelectedItems=function(e){\r
95132 DwtListView.prototype.setSelectedItems.call(this,e);\r
95133 if(appCtxt.get(ZmSetting.SHOW_SELECTION_CHECKBOX)){\r
95134 this._checkSelectedItems(true)\r
95135 }};\r
95136 ZmListView.prototype.selectAll=function(e){\r
95137 DwtListView.prototype.selectAll.apply(this,arguments);\r
95138 if(this._selectAllEnabled){\r
95139 var a=this._controller._activeSearch;\r
95140 if(a&&a.getAttribute("more")){\r
95141 var t=AjxMessageFormat.format(ZmMsg.allPageSelected,this.getList().size());\r
95142 if(e){\r
95143 this.allSelected=true;\r
95144 t=ZmMsg.allSearchSelected\r
95145 }\r
95146 appCtxt.setStatusMsg(t)\r
95147 }}};\r
95148 ZmListView.prototype.deselectAll=function(){\r
95149 if(appCtxt.get(ZmSetting.SHOW_SELECTION_CHECKBOX)){\r
95150 this._checkSelectedItems(false);\r
95151 this.allSelected=false;\r
95152 var e=DwtId.getListViewHdrId(DwtId.WIDGET_HDR_ICON,this._view,ZmItem.F_SELECTION);\r
95153 var t=document.getElementById(e);\r
95154 if(t){\r
95155 t.className="ImgCheckboxUnchecked"\r
95156 }}\r
95157 DwtListView.prototype.deselectAll.call(this)\r
95158 };\r
95159 ZmListView.prototype._checkSelectedItems=function(e){\r
95160 var a=this.getSelection();\r
95161 for(var t=0;\r
95162 t<a.length;\r
95163 t++){\r
95164 this.setSelectionCbox(a[t],!e)\r
95165 }\r
95166 this.setSelectionHdrCbox(a.length==this.getList().size())\r
95167 };\r
95168 ZmListView.prototype._setNoResultsHtml=function(){\r
95169 DwtListView.prototype._setNoResultsHtml.call(this);\r
95170 this.setSelectionHdrCbox(false)\r
95171 };\r
95172 ZmListView.prototype._getActionMenuForColHeader=function(o){\r
95173 if(!this._colHeaderActionMenu||o){\r
95174 this._colHeaderActionMenu=new ZmPopupMenu(this);\r
95175 var n=new AjxListener(this,this._colHeaderActionListener);\r
95176 for(var t=0;\r
95177 t<this._headerList.length;\r
95178 t++){\r
95179 var a=this._headerList[t];\r
95180 if(a._width){\r
95181 var e=this._colHeaderActionMenu.createMenuItem(a._id,{\r
95182 text:a._name,style:DwtMenuItem.CHECK_STYLE}\r
95183 );\r
95184 e.setData(ZmListView.KEY_ID,a._id);\r
95185 e.setChecked(a._visible,true);\r
95186 if(a._noRemove){\r
95187 e.setEnabled(false)\r
95188 }\r
95189 this._colHeaderActionMenu.addSelectionListener(a._id,n)\r
95190 }}}\r
95191 return this._colHeaderActionMenu\r
95192 };\r
95193 ZmListView.prototype._colHeaderActionListener=function(a){\r
95194 var o=a.item.getData(ZmListView.KEY_ID);\r
95195 for(var t=0;\r
95196 t<this._headerList.length;\r
95197 t++){\r
95198 var e=this._headerList[t];\r
95199 if(e._id==o){\r
95200 e._visible=!e._visible;\r
95201 break\r
95202 }}\r
95203 this._relayout()\r
95204 };\r
95205 ZmListView.prototype.getToolTipContent=function(h){\r
95206 var e=this.getTargetItemDiv(h);\r
95207 if(!e){\r
95208 return\r
95209 }\r
95210 var a=h.target.id||e.id;\r
95211 if(!a){\r
95212 return""\r
95213 }\r
95214 var n=this._data[e.id];\r
95215 var r=n.type;\r
95216 var d;\r
95217 if(r&&r==DwtListView.TYPE_HEADER_ITEM){\r
95218 var t=n.index;\r
95219 var l=this._headerList[t]._field;\r
95220 d=this._getHeaderToolTip(l,t)\r
95221 }else{\r
95222 var s=this._parseId(a);\r
95223 if(s&&s.field){\r
95224 var c=this.getItemFromElement(e);\r
95225 var o={\r
95226 field:s.field,item:c,ev:h,div:e,match:s};\r
95227 d=this._getToolTip(o)\r
95228 }}\r
95229 return d\r
95230 };\r
95231 ZmListView.prototype._getHeaderToolTip=function(o,t,e){\r
95232 var a=null;\r
95233 if(o==ZmItem.F_SELECTION){\r
95234 a=ZmMsg.selectionColumn\r
95235 }else{\r
95236 if(o==ZmItem.F_FLAG){\r
95237 a=ZmMsg.flag\r
95238 }else{\r
95239 if(o==ZmItem.F_PRIORITY){\r
95240 a=ZmMsg.priority\r
95241 }else{\r
95242 if(o==ZmItem.F_TAG){\r
95243 a=ZmMsg.tag\r
95244 }else{\r
95245 if(o==ZmItem.F_ATTACHMENT){\r
95246 a=ZmMsg.attachment\r
95247 }else{\r
95248 if(o==ZmItem.F_SUBJECT){\r
95249 a=(this._headerList[t]._sortable)?ZmMsg.sortBySubject:ZmMsg.subject\r
95250 }else{\r
95251 if(o==ZmItem.F_DATE){\r
95252 a=(this._headerList[t]._sortable)?(e&&e.sent)?ZmMsg.sortBySent:(e&&e.drafts)?ZmMsg.sortByLastSaved:ZmMsg.sortByReceived:ZmMsg.date\r
95253 }else{\r
95254 if(o==ZmItem.F_FROM){\r
95255 a=(this._headerList[t]._sortable)?(e&&(e.sent||e.drafts))?ZmMsg.sortByTo:ZmMsg.sortByFrom:(e&&(e.sent||e.drafts))?ZmMsg.to:ZmMsg.from\r
95256 }else{\r
95257 if(o==ZmItem.F_SIZE){\r
95258 a=(this._headerList[t]._sortable)?ZmMsg.sortBySize:ZmMsg.sizeToolTip\r
95259 }else{\r
95260 if(o==ZmItem.F_FOLDER){\r
95261 a=ZmMsg.folder\r
95262 }}}}}}}}}}\r
95263 return a\r
95264 };\r
95265 ZmListView.prototype._getToolTip=function(n){\r
95266 var t,o=n.field,a=n.ev.target,e=n.item;\r
95267 if(o==ZmItem.F_SELECTION){\r
95268 this._setItemData(n.div,"origSelClassName",a.className);\r
95269 if(a.className!="ImgCheckboxChecked"){\r
95270 a.className="ImgCheckboxChecked"\r
95271 }}else{\r
95272 if(o==ZmItem.F_FLAG){\r
95273 if(!e.isFlagged){\r
95274 AjxImg.setDisabledImage(a,this._getFlagIcon(e.isFlagged,true),true)\r
95275 }}else{\r
95276 if(o==ZmItem.F_PRIORITY){\r
95277 if(e.isHighPriority){\r
95278 t=ZmMsg.highPriorityTooltip\r
95279 }else{\r
95280 if(e.isLowPriority){\r
95281 t=ZmMsg.lowPriorityTooltip\r
95282 }}}else{\r
95283 if(o==ZmItem.F_TAG){\r
95284 t=this._getTagToolTip(e)\r
95285 }else{\r
95286 if(o==ZmItem.F_ATTACHMENT){}else{\r
95287 if(o==ZmItem.F_DATE){\r
95288 t=this._getDateToolTip(e,n.div)\r
95289 }}}}}}\r
95290 return t\r
95291 };\r
95292 ZmListView.prototype._getTagToolTip=function(r){\r
95293 if(!r){\r
95294 return\r
95295 }\r
95296 var s=r.tags.length;\r
95297 if(!s){\r
95298 return\r
95299 }\r
95300 var h=appCtxt.getTagTree();\r
95301 var a=r.tags;\r
95302 var n=[];\r
95303 var t=0;\r
95304 for(var o=0;\r
95305 o<s;\r
95306 o++){\r
95307 var e=h.getById(a[o]);\r
95308 if(!e){\r
95309 continue\r
95310 }\r
95311 n[t++]="<table><tr><td>";\r
95312 n[t++]=AjxImg.getImageHtml(ZmTag.COLOR_ICON[e.color]);\r
95313 n[t++]="</td><td valign='middle'>";\r
95314 n[t++]=AjxStringUtil.htmlEncode(e.name);\r
95315 n[t++]="</td></tr></table>"\r
95316 }\r
95317 return n.join("")\r
95318 };\r
95319 ZmListView.prototype._getAttachmentToolTip=function(e){\r
95320 var t=null;\r
95321 var o=e&&e.attachments?e.attachments:[];\r
95322 if(o.length==1){\r
95323 var a=ZmMimeTable.getInfo(o[0].ct);\r
95324 t=a?a.desc:null\r
95325 }else{\r
95326 if(o.length>1){\r
95327 t=AjxMessageFormat.format(ZmMsg.multipleAttachmentsTooltip,[o.length])\r
95328 }}\r
95329 return t\r
95330 };\r
95331 ZmListView.prototype._getDateToolTip=function(e,t){\r
95332 t._dateStr=t._dateStr||this._getDateToolTipText(e.date);\r
95333 return t._dateStr\r
95334 };\r
95335 ZmListView.prototype._getDateToolTipText=function(t,n){\r
95336 if(!t){\r
95337 return""\r
95338 }\r
95339 var e=[];\r
95340 var a=0;\r
95341 e[a++]=n;\r
95342 var o=AjxDateFormat.getDateTimeInstance(AjxDateFormat.FULL,AjxDateFormat.MEDIUM);\r
95343 e[a++]=o.format(new Date(t));\r
95344 var s=AjxDateUtil.computeDateDelta(t);\r
95345 if(s){\r
95346 e[a++]="<br><center><span style='white-space:nowrap'>(";\r
95347 e[a++]=s;\r
95348 e[a++]=")</span></center>"\r
95349 }\r
95350 return e.join("")\r
95351 };\r
95352 ZmListView.prototype._setListEvent=function(o,n,t){\r
95353 DwtListView.prototype._setListEvent.call(this,o,n,t);\r
95354 var s=(o.target.id&&o.target.id.indexOf("AjxImg")==-1)?o.target.id:t.id;\r
95355 if(!s){\r
95356 return false\r
95357 }\r
95358 var e=this._parseId(s);\r
95359 if(o.button==DwtMouseEvent.LEFT){\r
95360 this._selEv.field=e?e.field:null\r
95361 }else{\r
95362 if(o.button==DwtMouseEvent.RIGHT){\r
95363 this._actionEv.field=e?e.field:null;\r
95364 if(e&&e.field){\r
95365 if(e.field==ZmItem.F_PARTICIPANT){\r
95366 var a=this.getItemFromElement(t);\r
95367 this._actionEv.detail=a.participants?a.participants.get(e.participant):null\r
95368 }}}}\r
95369 return true\r
95370 };\r
95371 ZmListView.prototype._allowLeftSelection=function(o,n,t){\r
95372 if(!(n instanceof DwtMouseEvent)){\r
95373 return true\r
95374 }\r
95375 var r=(n.target.id&&n.target.id.indexOf("AjxImg")==-1)?n.target.id:o.id;\r
95376 var s=this._data[o.id];\r
95377 var a=s.type;\r
95378 if(r&&a&&a==DwtListView.TYPE_LIST_ITEM){\r
95379 var e=this._parseId(r);\r
95380 if(e&&e.field){\r
95381 return this._allowFieldSelection(e.item,e.field)\r
95382 }}\r
95383 return true\r
95384 };\r
95385 ZmListView.prototype._allowFieldSelection=function(t,e){\r
95386 return(!this._disallowSelection[e])\r
95387 };\r
95388 ZmListView.prototype._sortColumn=function(e,t){\r
95389 var a;\r
95390 switch(e._sortable){\r
95391 case ZmItem.F_FROM:a=t?ZmSearch.NAME_ASC:ZmSearch.NAME_DESC;\r
95392 break;\r
95393 case ZmItem.F_SUBJECT:a=t?ZmSearch.SUBJ_ASC:ZmSearch.SUBJ_DESC;\r
95394 break;\r
95395 case ZmItem.F_DATE:a=t?ZmSearch.DATE_ASC:ZmSearch.DATE_DESC;\r
95396 break;\r
95397 case ZmItem.F_SIZE:a=t?ZmSearch.SIZE_ASC:ZmSearch.SIZE_DESC;\r
95398 break;\r
95399 case ZmItem.F_SORTED_BY:a=t?ZmSearch.DATE_ASC:ZmSearch.DATE_DESC;\r
95400 break\r
95401 }\r
95402 if(a){\r
95403 this._sortByString=a;\r
95404 appCtxt.set(ZmSetting.SORTING_PREF,a,this.view)\r
95405 }};\r
95406 ZmListView.prototype._setNextSelection=function(){\r
95407 if(this.firstSelIndex<0){\r
95408 this.firstSelIndex=0\r
95409 }\r
95410 var e=this._list.get(this.firstSelIndex)||this._list.getLast();\r
95411 if(e){\r
95412 this.setSelection(e,false)\r
95413 }};\r
95414 ZmListView.prototype._relayout=function(){\r
95415 DwtListView.prototype._relayout.call(this);\r
95416 this._checkColumns()\r
95417 };\r
95418 ZmListView.prototype._checkColumns=function(){\r
95419 var o=this._headerList.length;\r
95420 var e=[];\r
95421 for(var t=0;\r
95422 t<o;\r
95423 t++){\r
95424 var n=this._headerList[t];\r
95425 if(n){\r
95426 e.push(n._field+(n._visible?"":"*"))\r
95427 }}\r
95428 var a=e.join(ZmListView.COL_JOIN);\r
95429 a=(a==this._defaultCols)?"":a;\r
95430 appCtxt.set(ZmSetting.LIST_VIEW_COLUMNS,a,this.view);\r
95431 this._getActionMenuForColHeader(true)\r
95432 };\r
95433 ZmListView.handleScroll=function(e){\r
95434 var t=DwtUiEvent.getTarget(e);\r
95435 var a=DwtControl.findControl(t);\r
95436 if(a){\r
95437 a._checkItemCount()\r
95438 }};\r
95439 ZmListView.prototype._checkItemCount=function(){\r
95440 if(!(this._controller._list&&this._controller._list.hasMore())||!this._list){\r
95441 return\r
95442 }\r
95443 if(!this._rendered||!this._rowHeight){\r
95444 return\r
95445 }\r
95446 var l=this._parentEl;\r
95447 var n=l.scrollHeight,o=l.scrollTop,t=this._rowHeight;\r
95448 var s=l.clientHeight||Dwt.getSize(l).y;\r
95449 var r=s+(this.getPagelessThreshold()*this._rowHeight);\r
95450 var e=n-o;\r
95451 if(e==s){\r
95452 e=(this._list.size()*t)-o;\r
95453 if(o==0){\r
95454 AjxTimedAction.scheduleAction(new AjxTimedAction(this,this._resetColWidth),100)\r
95455 }}\r
95456 var a=0;\r
95457 if(e<r){\r
95458 a=Math.max(Math.floor((r-e)/t),this.getLimit(1))\r
95459 }\r
95460 if(a){\r
95461 this._controller._paginate(this._view,true,null,a)\r
95462 }};\r
95463 ZmListView.prototype._sizeChildren=function(e){\r
95464 if(DwtListView.prototype._sizeChildren.apply(this,arguments)){\r
95465 this._checkItemCount()\r
95466 }}\r
95467 }\r
95468 if(AjxPackage.define("zimbraMail.share.view.ZmAppChooser")){\r
95469 ZmAppChooser=function(a){\r
95470 a.className=a.className||"ZmAppChooser";\r
95471 a.width=appCtxt.getSkinHint("appChooser","fullWidth")?"100%":null;\r
95472 ZmToolBar.call(this,a);\r
95473 Dwt.setLocation(this.getHtmlElement(),Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE);\r
95474 this.setScrollStyle(Dwt.CLIP);\r
95475 this._buttonListener=new AjxListener(this,this._handleButton);\r
95476 var t=a.buttons;\r
95477 for(var e=0;\r
95478 e<t.length;\r
95479 e++){\r
95480 var o=t[e];\r
95481 if(o==ZmAppChooser.SPACER){\r
95482 this.addSpacer(ZmAppChooser.SPACER_HEIGHT)\r
95483 }else{\r
95484 this._createButton(o)\r
95485 }}\r
95486 this._createPrecedenceList();\r
95487 this._inited=true\r
95488 };\r
95489 ZmAppChooser.prototype=new ZmToolBar;\r
95490 ZmAppChooser.prototype.constructor=ZmAppChooser;\r
95491 ZmAppChooser.prototype.toString=function(){\r
95492 return"ZmAppChooser"\r
95493 };\r
95494 ZmAppChooser.SPACER="spacer";\r
95495 ZmAppChooser.B_HELP="Help";\r
95496 ZmAppChooser.B_LOGOUT="Logout";\r
95497 ZmApp.CHOOSER_SORT[ZmAppChooser.SPACER]=160;\r
95498 ZmApp.CHOOSER_SORT[ZmAppChooser.B_HELP]=170;\r
95499 ZmApp.CHOOSER_SORT[ZmAppChooser.B_LOGOUT]=190;\r
95500 ZmApp.ICON[ZmAppChooser.B_HELP]="Help";\r
95501 ZmApp.ICON[ZmAppChooser.B_LOGOUT]="Logoff";\r
95502 ZmApp.CHOOSER_TOOLTIP[ZmAppChooser.B_HELP]="goToHelp";\r
95503 ZmApp.CHOOSER_TOOLTIP[ZmAppChooser.B_LOGOUT]="logOff";\r
95504 ZmAppChooser.SPACER_HEIGHT=10;\r
95505 ZmAppChooser.prototype.TEMPLATE="share.Widgets#ZmAppChooser";\r
95506 ZmAppChooser.prototype.ITEM_TEMPLATE="share.Widgets#ZmAppChooserItem";\r
95507 ZmAppChooser.prototype.SPACER_TEMPLATE="dwt.Widgets#ZmAppChooserSpacer";\r
95508 ZmAppChooser.prototype.addSelectionListener=function(e){\r
95509 this.addListener(DwtEvent.SELECTION,e)\r
95510 };\r
95511 ZmAppChooser.prototype.addButton=function(o,a){\r
95512 var t={\r
95513 parent:this,id:ZmId.getButtonId(ZmId.APP,o),text:a.text,image:a.image,index:a.index};\r
95514 var e=new ZmAppButton(t);\r
95515 e.setToolTipContent(a.tooltip);\r
95516 e.textPrecedence=a.textPrecedence;\r
95517 e.imagePrecedence=a.imagePrecedence;\r
95518 e.setData(Dwt.KEY_ID,o);\r
95519 e.addSelectionListener(this._buttonListener);\r
95520 this._buttons[o]=e;\r
95521 if(e.textPrecedence||e.imagePrecedence){\r
95522 this._createPrecedenceList()\r
95523 }\r
95524 this.adjustSize();\r
95525 return e\r
95526 };\r
95527 ZmAppChooser.prototype.removeButton=function(a){\r
95528 var t=this._buttons[a];\r
95529 if(t){\r
95530 var e=this.__getButtonIndex(a);\r
95531 t.dispose();\r
95532 this._buttons[a]=null;\r
95533 delete this._buttons[a];\r
95534 if(e!=null){\r
95535 this._removeItem(this._items[e])\r
95536 }}};\r
95537 ZmAppChooser.prototype.replaceButton=function(a,e,t){\r
95538 if(!this._buttons[a]){\r
95539 return\r
95540 }\r
95541 t.index=this.__getButtonIndex(a);\r
95542 this.removeButton(a);\r
95543 return this.addButton(e,t)\r
95544 };\r
95545 ZmAppChooser.prototype.getButton=function(e){\r
95546 return this._buttons[e]\r
95547 };\r
95548 ZmAppChooser.prototype.setSelected=function(a){\r
95549 var e=this._buttons[this._selectedId];\r
95550 if(this._selectedId&&e){\r
95551 this.__markPrevNext(this._selectedId,false);\r
95552 e.setSelected(false);\r
95553 e._noFocus=false\r
95554 }\r
95555 var t=this._buttons[a];\r
95556 if(t){\r
95557 t.setSelected(true);\r
95558 if(t._toggleText!=null&&t._toggleText!=""){\r
95559 if(e){\r
95560 e._toggleText=(e._toggleText!=null&&e._toggleText!="")?e._toggleText:e.getText();\r
95561 e.setText("")\r
95562 }\r
95563 t.setText(t._toggleText);\r
95564 t._toggleText=null\r
95565 }\r
95566 t._noFocus=true\r
95567 }\r
95568 this._selectedId=a\r
95569 };\r
95570 ZmAppChooser.prototype._createButton=function(e){\r
95571 this.addButton(e,{\r
95572 text:ZmMsg[ZmApp.NAME[e]],image:ZmApp.ICON[e],tooltip:ZmMsg[ZmApp.CHOOSER_TOOLTIP[e]],textPrecedence:ZmApp.TEXT_PRECEDENCE[e],imagePrecedence:ZmApp.IMAGE_PRECEDENCE[e]}\r
95573 )\r
95574 };\r
95575 ZmAppChooser.prototype._handleButton=function(e){\r
95576 this.notifyListeners(DwtEvent.SELECTION,e)\r
95577 }\r
95578 }\r
95579 if(AjxPackage.define("zimbraMail.share.view.ZmAppButton")){\r
95580 ZmAppButton=function(e){\r
95581 if(arguments.length==0){\r
95582 return\r
95583 }\r
95584 e.style=DwtLabel.IMAGE_LEFT;\r
95585 e.posStyle=DwtControl.RELATIVE_STYLE;\r
95586 DwtButton.call(this,e);\r
95587 this.setImage(e.image);\r
95588 this.setText(e.text)\r
95589 };\r
95590 ZmAppButton.prototype=new DwtButton;\r
95591 ZmAppButton.prototype.constructor=ZmAppButton;\r
95592 ZmAppButton.prototype.toString=function(){\r
95593 return"ZmAppButton"\r
95594 };\r
95595 ZmAppButton.prototype.TEMPLATE="share.Widgets#ZmAppChooserButton";\r
95596 ZmAppButton.prototype.setSelected=function(e){\r
95597 this.isSelected=e;\r
95598 this.setDisplayState(e?DwtControl.SELECTED:DwtControl.NORMAL)\r
95599 };\r
95600 ZmAppButton.prototype.setDisplayState=function(e){\r
95601 if(this.isSelected&&e!=DwtControl.SELECTED){\r
95602 e=[DwtControl.SELECTED,e].join(" ")\r
95603 }\r
95604 DwtButton.prototype.setDisplayState.call(this,e)\r
95605 };\r
95606 ZmAppButton.prototype.getKeyMapName=function(){\r
95607 return"ZmAppButton"\r
95608 };\r
95609 ZmAppButton.prototype.handleKeyAction=function(e,t){\r
95610 switch(e){\r
95611 case DwtKeyMap.SELECT:if(this.isListenerRegistered(DwtEvent.SELECTION)){\r
95612 var a=DwtShell.selectionEvent;\r
95613 a.item=this;\r
95614 this.notifyListeners(DwtEvent.SELECTION,a)\r
95615 }\r
95616 break;\r
95617 default:return false\r
95618 }\r
95619 return true\r
95620 };\r
95621 ZmAppButton.prototype._focus=function(){\r
95622 this.setDisplayState(DwtControl.HOVER)\r
95623 }\r
95624 }\r
95625 if(AjxPackage.define("zimbraMail.share.view.ZmStatusView")){\r
95626 ZmStatusView=function(a,t,e,o){\r
95627 DwtControl.call(this,{\r
95628 parent:a,className:(t||"ZmStatus"),posStyle:e,id:o}\r
95629 );\r
95630 this._toast=this._standardToast=new ZmToast(this,ZmId.TOAST);\r
95631 this._statusQueue=[]\r
95632 };\r
95633 ZmStatusView.prototype=new DwtControl;\r
95634 ZmStatusView.prototype.constructor=ZmStatusView;\r
95635 ZmStatusView.LEVEL_INFO=1;\r
95636 ZmStatusView.LEVEL_WARNING=2;\r
95637 ZmStatusView.LEVEL_CRITICAL=3;\r
95638 ZmStatusView.MSG_PARAMS=["msg","level","detail","transitions","toast"];\r
95639 ZmStatusView.prototype.toString=function(){\r
95640 return"ZmStatusView"\r
95641 };\r
95642 ZmStatusView.prototype.setStatusMsg=function(t){\r
95643 t=Dwt.getParams(arguments,ZmStatusView.MSG_PARAMS);\r
95644 if(typeof t=="string"){\r
95645 t={\r
95646 msg:t}\r
95647 }\r
95648 var e={\r
95649 msg:t.msg,level:t.level||ZmStatusView.LEVEL_INFO,detail:t.detail,date:new Date(),transitions:t.transitions,toast:t.toast||this._standardToast};\r
95650 this._statusQueue.push(e);\r
95651 if(!this._toast.isPoppedUp()){\r
95652 this._updateStatusMsg()\r
95653 }};\r
95654 ZmStatusView.prototype.nextStatus=function(){\r
95655 if(this._statusQueue.length>0){\r
95656 this._updateStatusMsg();\r
95657 return true\r
95658 }\r
95659 return false\r
95660 };\r
95661 ZmStatusView.getClass=function(e){\r
95662 switch(e.level){\r
95663 case ZmStatusView.LEVEL_CRITICAL:return"ZToastCrit";\r
95664 case ZmStatusView.LEVEL_WARNING:return"ZToastWarn";\r
95665 default:return"ZToastInfo"\r
95666 }};\r
95667 ZmStatusView.getImageHtml=function(e){\r
95668 switch(e.level){\r
95669 case ZmStatusView.LEVEL_CRITICAL:return"Critical";\r
95670 case ZmStatusView.LEVEL_WARNING:return"Warning";\r
95671 default:return"Success"\r
95672 }};\r
95673 ZmStatusView.prototype._updateStatusMsg=function(){\r
95674 var e=this._statusQueue.shift();\r
95675 if(!e){\r
95676 return\r
95677 }\r
95678 var a=ZmStatusView.getClass(e);\r
95679 var t=ZmStatusView.getImageHtml(e);\r
95680 this._toast=e.toast;\r
95681 this._toast.popup(a,e.msg,t,null,e.transitions)\r
95682 };\r
95683 ZmToast=function(e,t){\r
95684 if(arguments.length==0){\r
95685 return\r
95686 }\r
95687 DwtComposite.call(this,{\r
95688 parent:e.shell,className:"ZToast",posStyle:Dwt.ABSOLUTE_STYLE,id:t}\r
95689 );\r
95690 this._statusView=e;\r
95691 this._createHtml();\r
95692 this._funcs={};\r
95693 this._funcs.position=AjxCallback.simpleClosure(this.__position,this);\r
95694 this._funcs.show=AjxCallback.simpleClosure(this.__show,this);\r
95695 this._funcs.hide=AjxCallback.simpleClosure(this.__hide,this);\r
95696 this._funcs.pause=AjxCallback.simpleClosure(this.__pause,this);\r
95697 this._funcs.idle=AjxCallback.simpleClosure(this.__idle,this);\r
95698 this._funcs.fade=AjxCallback.simpleClosure(this.__fade,this);\r
95699 this._funcs["fade-in"]=this._funcs.fade;\r
95700 this._funcs["fade-out"]=this._funcs.fade;\r
95701 this._funcs.slide=AjxCallback.simpleClosure(this.__slide,this);\r
95702 this._funcs["slide-in"]=this._funcs.slide;\r
95703 this._funcs["slide-out"]=this._funcs.slide;\r
95704 this._funcs.next=AjxCallback.simpleClosure(this.transition,this)\r
95705 };\r
95706 ZmToast.prototype=new DwtComposite;\r
95707 ZmToast.prototype.constructor=ZmToast;\r
95708 ZmToast.prototype.toString=function(){\r
95709 return"ZmToast"\r
95710 };\r
95711 ZmToast.FADE={\r
95712 type:"fade"};\r
95713 ZmToast.FADE_IN={\r
95714 type:"fade-in"};\r
95715 ZmToast.FADE_OUT={\r
95716 type:"fade-out"};\r
95717 ZmToast.SLIDE={\r
95718 type:"slide"};\r
95719 ZmToast.SLIDE_IN={\r
95720 type:"slide-in"};\r
95721 ZmToast.SLIDE_OUT={\r
95722 type:"slide-out"};\r
95723 ZmToast.PAUSE={\r
95724 type:"pause"};\r
95725 ZmToast.IDLE={\r
95726 type:"idle"};\r
95727 ZmToast.SHOW={\r
95728 type:"show"};\r
95729 ZmToast.DEFAULT_TRANSITIONS=[ZmToast.SLIDE_IN,ZmToast.PAUSE,ZmToast.SLIDE_OUT];\r
95730 ZmToast.DEFAULT_STATE={};\r
95731 ZmToast.DEFAULT_STATE.position={\r
95732 location:"C"};\r
95733 ZmToast.DEFAULT_STATE.pause={\r
95734 duration:1200};\r
95735 ZmToast.DEFAULT_STATE.fade={\r
95736 duration:100,multiplier:1};\r
95737 ZmToast.DEFAULT_STATE["fade-in"]={\r
95738 start:0,end:99,step:10,duration:200,multiplier:1};\r
95739 ZmToast.DEFAULT_STATE["fade-out"]={\r
95740 start:99,end:0,step:-10,duration:200,multiplier:1};\r
95741 ZmToast.DEFAULT_STATE.slide={\r
95742 duration:100,multiplier:1};\r
95743 ZmToast.DEFAULT_STATE["slide-in"]={\r
95744 start:-40,end:0,step:1,duration:100,multiplier:1};\r
95745 ZmToast.DEFAULT_STATE["slide-out"]={\r
95746 start:0,end:-40,step:-1,duration:100,multiplier:1};\r
95747 ZmToast.LEVEL_RE=/\b(ZToastCrit|ZToastWarn|ZToastInfo)\b/g;\r
95748 ZmToast.prototype.TEMPLATE="share.Widgets#ZToast";\r
95749 ZmToast.prototype.dispose=function(){\r
95750 this._textEl=null;\r
95751 this._iconEl=null;\r
95752 this._detailEl=null;\r
95753 DwtComposite.prototype.dispose.call(this)\r
95754 };\r
95755 ZmToast.prototype.popup=function(h,r,a,s,n){\r
95756 this.__clear();\r
95757 this._poppedUp=true;\r
95758 var t=this.getHtmlElement();\r
95759 Dwt.delClass(t,ZmToast.LEVEL_RE,h||"ZToastInfo");\r
95760 if(this._textEl){\r
95761 this._textEl.innerHTML=r||""\r
95762 }\r
95763 if(this._iconEl){\r
95764 AjxImg.setImage(this._iconEl,a,false)\r
95765 }\r
95766 var e=appCtxt.getSkinHint("toast","location")||s;\r
95767 var o=n||appCtxt.getSkinHint("toast","transitions")||ZmToast.DEFAULT_TRANSITIONS;\r
95768 o=[].concat({\r
95769 type:"position",location:e}\r
95770 ,o,{\r
95771 type:"hide"}\r
95772 );\r
95773 this._transitions=o;\r
95774 this.transition()\r
95775 };\r
95776 ZmToast.prototype.popdown=function(){\r
95777 this.__clear();\r
95778 Dwt.setLocation(this.getHtmlElement(),Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE);\r
95779 this._poppedUp=false\r
95780 };\r
95781 ZmToast.prototype.isPoppedUp=function(){\r
95782 return this._poppedUp\r
95783 };\r
95784 ZmToast.prototype.transition=function(){\r
95785 var a=this._transitions&&this._transitions.shift();\r
95786 if(!a){\r
95787 this._poppedUp=false;\r
95788 if(!this._statusView.nextStatus()){\r
95789 this.popdown()\r
95790 }\r
95791 return\r
95792 }\r
95793 var t=this._state=this._createState(a);\r
95794 var e=this.getHtmlElement();\r
95795 Dwt.setLocation(e,t.x,t.y);\r
95796 this._funcs[a.type||"next"]()\r
95797 };\r
95798 ZmToast.prototype._createHtml=function(e){\r
95799 var t={\r
95800 id:this._htmlElId};\r
95801 this._createHtmlFromTemplate(e||this.TEMPLATE,t);\r
95802 Dwt.setZIndex(this.getHtmlElement(),Dwt.Z_TOAST)\r
95803 };\r
95804 ZmToast.prototype._createHtmlFromTemplate=function(e,t){\r
95805 DwtComposite.prototype._createHtmlFromTemplate.call(this,e,t);\r
95806 this._textEl=document.getElementById(t.id+"_text");\r
95807 this._iconEl=document.getElementById(t.id+"_icon");\r
95808 this._detailEl=document.getElementById(t.id+"_detail")\r
95809 };\r
95810 ZmToast.prototype._createState=function(n){\r
95811 var a=AjxUtil.createProxy(n);\r
95812 var o=ZmToast.DEFAULT_STATE[a.type];\r
95813 for(var e in o){\r
95814 if(!a[e]){\r
95815 a[e]=o[e]\r
95816 }}\r
95817 var t=this.getHtmlElement();\r
95818 switch(a.type){\r
95819 case"fade-in":Dwt.setOpacity(t,0);\r
95820 Dwt.setLocation(t,null,0);\r
95821 a.value=a.start;\r
95822 break;\r
95823 case"fade-out":case"fade":Dwt.setLocation(t,null,0);\r
95824 a.value=a.start;\r
95825 break;\r
95826 case"slide-in":case"slide-out":case"slide":Dwt.setLocation(t,null,-36);\r
95827 Dwt.setOpacity(t,100);\r
95828 a.value=a.start;\r
95829 break\r
95830 }\r
95831 return a\r
95832 };\r
95833 ZmToast.prototype.__clear=function(){\r
95834 clearTimeout(this._actionId);\r
95835 clearInterval(this._actionId);\r
95836 this._actionId=-1\r
95837 };\r
95838 ZmToast.prototype.__position=function(){\r
95839 var a=this.getHtmlElement();\r
95840 var n=Dwt.getSize(this.shell.getHtmlElement());\r
95841 var o=Dwt.getSize(a);\r
95842 var e=(n.x-o.x)/2;\r
95843 var s=(n.y-o.y)/2;\r
95844 var t=this._state.location||"C";\r
95845 switch(t.toUpperCase()){\r
95846 case"N":s=0-o.y;\r
95847 break;\r
95848 case"S":s=n.y-o.y;\r
95849 break;\r
95850 case"E":e=n.x-o.x;\r
95851 break;\r
95852 case"W":e=0;\r
95853 break;\r
95854 case"NE":e=n.x-o.x;\r
95855 s=0;\r
95856 break;\r
95857 case"NW":e=0;\r
95858 s=0;\r
95859 break;\r
95860 case"SE":e=n.x-o.x;\r
95861 s=n.y-o.y;\r
95862 break;\r
95863 case"SW":e=0;\r
95864 s=n.y-o.y;\r
95865 break;\r
95866 case"C":default:break\r
95867 }\r
95868 Dwt.setLocation(a,e,s);\r
95869 this._funcs.next()\r
95870 };\r
95871 ZmToast.prototype.__show=function(){\r
95872 var e=this.getHtmlElement();\r
95873 Dwt.setVisible(e,true);\r
95874 Dwt.setVisibility(e,true);\r
95875 this._funcs.next()\r
95876 };\r
95877 ZmToast.prototype.__hide=function(){\r
95878 var e=this.getHtmlElement();\r
95879 Dwt.setLocation(e,Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE);\r
95880 this._funcs.next()\r
95881 };\r
95882 ZmToast.prototype.__pause=function(){\r
95883 setTimeout(this._funcs.next,this._state.duration)\r
95884 };\r
95885 ZmToast.prototype.__idle=function(){\r
95886 if(!this._idleTimer){\r
95887 this._idleTimer=new DwtIdleTimer(0,new AjxCallback(this,this.__idleCallback))\r
95888 }else{\r
95889 this._idleTimer.resurrect(0)\r
95890 }};\r
95891 ZmToast.prototype.__idleCallback=function(e){\r
95892 if(!e){\r
95893 this.transition();\r
95894 this._idleTimer.kill()\r
95895 }};\r
95896 ZmToast.prototype.__move=function(){\r
95897 this._funcs.next()\r
95898 };\r
95899 ZmToast.prototype.__fade=function(){\r
95900 var t=this._state.value;\r
95901 var o=this._state.step;\r
95902 if(AjxEnv.isIE){\r
95903 if(AjxEnv.isIE5_5up){\r
95904 try{\r
95905 var a=this.getHtmlElement();\r
95906 a.style.visibility=o>0?"hidden":"visible";\r
95907 var s=this._state.duration/1000;\r
95908 a.style.filter="progid:DXImageTransform.Microsoft.Fade(duration="+s+",overlap=1.0)";\r
95909 a.filters[0].Apply();\r
95910 a.style.visibility=o>0?"visible":"hidden";\r
95911 a.filters[0].Play()\r
95912 }\r
95913 catch(n){}}\r
95914 setTimeout(this._funcs.next,0);\r
95915 return\r
95916 }\r
95917 var r=o>0?t>=this._state.end:t<=this._state.end;\r
95918 if(r){\r
95919 t=this._state.end\r
95920 }\r
95921 var a=this.getHtmlElement();\r
95922 Dwt.setOpacity(a,t);\r
95923 if(r){\r
95924 this.__clear();\r
95925 setTimeout(this._funcs.next,0);\r
95926 return\r
95927 }\r
95928 if(this._actionId==-1){\r
95929 var s=this._state.duration;\r
95930 var h=s/Math.abs(o);\r
95931 this._actionId=setInterval(this._funcs.fade,h)\r
95932 }\r
95933 this._state.value+=o;\r
95934 this._state.step*=this._state.multiplier\r
95935 };\r
95936 ZmToast.prototype.__slide=function(){\r
95937 var o=this._state.value;\r
95938 var t=this._state.step;\r
95939 var n=t>0?o>=this._state.end:o<=this._state.end;\r
95940 if(n){\r
95941 o=this._state.end\r
95942 }\r
95943 var e=this.getHtmlElement();\r
95944 Dwt.setLocation(e,null,o);\r
95945 if(n){\r
95946 this.__clear();\r
95947 setTimeout(this._funcs.next,0);\r
95948 return\r
95949 }\r
95950 if(this._actionId==-1){\r
95951 var a=this._state.duration;\r
95952 var s=a/Math.abs(t);\r
95953 this._actionId=setInterval(this._funcs.slide,s)\r
95954 }\r
95955 this._state.value+=t;\r
95956 this._state.step*=this._state.multiplier\r
95957 }\r
95958 }\r
95959 if(AjxPackage.define("zimbraMail.share.view.ZmOverviewContainer")){\r
95960 ZmOverviewContainer=function(e){\r
95961 if(arguments.length==0){\r
95962 return\r
95963 }\r
95964 e.className=e.className||"ZmOverviewContainer";\r
95965 e.id=e.id||ZmId.getOverviewContainerId(e.containerId);\r
95966 DwtTree.call(this,e);\r
95967 this.setScrollStyle(e.scroll||Dwt.SCROLL);\r
95968 this.containerId=e.containerId;\r
95969 this._appName=e.appName;\r
95970 this._controller=e.controller;\r
95971 this._headerItems={};\r
95972 this._overview={};\r
95973 this.addSelectionListener(new AjxListener(this,this._treeViewListener));\r
95974 this.addTreeListener(new AjxListener(this,this._treeListener))\r
95975 };\r
95976 ZmOverviewContainer.prototype=new DwtTree;\r
95977 ZmOverviewContainer.prototype.constructor=ZmOverviewContainer;\r
95978 ZmOverviewContainer.prototype.toString=function(){\r
95979 return"ZmOverviewContainer"\r
95980 };\r
95981 ZmOverviewContainer.prototype.initialize=function(e){};\r
95982 ZmOverviewContainer.prototype.getOverview=function(e){\r
95983 return this._overview[e]\r
95984 };\r
95985 ZmOverviewContainer.prototype.getOverviews=function(){\r
95986 return this._overview\r
95987 };\r
95988 ZmOverviewContainer.prototype.getHeaderItem=function(){};\r
95989 ZmOverviewContainer.prototype.getSelected=function(){\r
95990 var t;\r
95991 for(var e in this._overview){\r
95992 t=this._overview[e].getSelected();\r
95993 if(t){\r
95994 return t\r
95995 }}};\r
95996 ZmOverviewContainer.prototype.deselectAll=function(e){\r
95997 DwtTree.prototype.deselectAll.call(this);\r
95998 this._deselectAllTreeViews(e)\r
95999 };\r
96000 ZmOverviewContainer.prototype.setOverviewTrees=function(e){\r
96001 for(var t in this._overview){\r
96002 this._overview[t].set(e)\r
96003 }};\r
96004 ZmOverviewContainer.prototype.resetOperations=function(t,e){};\r
96005 ZmOverviewContainer.prototype._treeViewListener=function(e){};\r
96006 ZmOverviewContainer.prototype._treeListener=function(e){};\r
96007 ZmOverviewContainer.prototype._initializeActionMenu=function(e){};\r
96008 ZmOverviewContainer.prototype._getActionMenu=function(){\r
96009 if(this._actionMenu instanceof AjxCallback){\r
96010 var e=this._actionMenu;\r
96011 this._actionMenu=e.run()\r
96012 }\r
96013 return this._actionMenu\r
96014 };\r
96015 ZmOverviewContainer.prototype._createActionMenu=function(t,e,a){};\r
96016 ZmOverviewContainer.prototype._actionMenuListener=function(e){};\r
96017 ZmOverviewContainer.prototype._deselectAllTreeViews=function(o){\r
96018 for(var a in this._overview){\r
96019 var n=this._overview[a];\r
96020 if(o&&o==n){\r
96021 continue\r
96022 }\r
96023 var t=n._treeHash;\r
96024 for(var e in t){\r
96025 if(t[e].getSelectionCount()>0){\r
96026 t[e].deselectAll();\r
96027 break\r
96028 }}}}\r
96029 }\r
96030 if(AjxPackage.define("zimbraMail.share.view.ZmAccountOverviewContainer")){\r
96031 ZmAccountOverviewContainer=function(e){\r
96032 if(arguments.length==0){\r
96033 return\r
96034 }\r
96035 ZmOverviewContainer.call(this,e)\r
96036 };\r
96037 ZmAccountOverviewContainer.prototype=new ZmOverviewContainer;\r
96038 ZmAccountOverviewContainer.prototype.constructor=ZmAccountOverviewContainer;\r
96039 ZmAccountOverviewContainer.prototype.toString=function(){\r
96040 return"ZmAccountOverviewContainer"\r
96041 };\r
96042 ZmAccountOverviewContainer.prototype.getHeaderItem=function(e){\r
96043 return e&&this._headerItems[e.id]\r
96044 };\r
96045 ZmAccountOverviewContainer.prototype.expandAccountOnly=function(t){\r
96046 if(!t){\r
96047 t=appCtxt.getActiveAccount()\r
96048 }\r
96049 for(var e in this._headerItems){\r
96050 this._headerItems[e].setExpanded((e==t.id),false,false)\r
96051 }};\r
96052 ZmAccountOverviewContainer.prototype.getSelected=function(){\r
96053 var t=ZmOverviewContainer.prototype.getSelected.call(this);\r
96054 if(!t){\r
96055 t=this.getSelection()[0];\r
96056 var a=t&&appCtxt.accountList.getAccount(t.getData(Dwt.KEY_ID));\r
96057 var e=a&&appCtxt.getFolderTree(a);\r
96058 return e&&e.root\r
96059 }\r
96060 return t\r
96061 };\r
96062 ZmAccountOverviewContainer.prototype.initialize=function(s){\r
96063 var h,d;\r
96064 var a=false;\r
96065 var o=appCtxt.accountList.visibleAccounts;\r
96066 for(var r=0;\r
96067 r<o.length;\r
96068 r++){\r
96069 d=o[r];\r
96070 if(appCtxt.isOffline&&d.isMain&&this._appName!=ZmApp.PREFERENCES){\r
96071 continue\r
96072 }\r
96073 this._addAccount(s,d,a);\r
96074 h=this.getHeaderItem(d);\r
96075 if(h){\r
96076 if(this._appName==ZmApp.PREFERENCES){\r
96077 h.setExpanded(true,false,true);\r
96078 h.enableSelection(false)\r
96079 }else{\r
96080 var e=appCtxt.get(ZmSetting.ACCOUNT_TREE_OPEN,null,d);\r
96081 h.setExpanded(e);\r
96082 if(!e){\r
96083 this._setAccountHeaderLabel(d,h)\r
96084 }}}\r
96085 this.updateAccountInfo(d,true,true);\r
96086 a=!a\r
96087 }\r
96088 if(appCtxt.isOffline&&this._appName!=ZmApp.PREFERENCES){\r
96089 var n=s.omit;\r
96090 if(!n){\r
96091 n={}\r
96092 }\r
96093 n[ZmFolder.ID_SPAM]=true;\r
96094 d=appCtxt.accountList.mainAccount;\r
96095 this._addAccount(s,d,a,"ZmOverviewLocalHeader");\r
96096 h=this.getHeaderItem(d);\r
96097 h.setExpanded(appCtxt.get(ZmSetting.ACCOUNT_TREE_OPEN,null,d))\r
96098 }\r
96099 var f=s.omit&&s.omit[ZmOrganizer.ID_ZIMLET];\r
96100 if(!f&&!appCtxt.inStartup){\r
96101 f=(appCtxt.getZimletMgr().getPanelZimlets().length==0)\r
96102 }\r
96103 if(!f&&window[ZmOverviewController.CONTROLLER[ZmOrganizer.ZIMLET]]){\r
96104 var l=ZmOrganizer.LABEL[ZmOrganizer.ZIMLET];\r
96105 var m=s.overviewId=appCtxt.getOverviewId([this.containerId,l],null);\r
96106 var u={\r
96107 label:ZmMsg[l],icon:"Resource",dataId:m,className:"ZmOverviewZimletHeader"};\r
96108 s.overviewTrees=[ZmOrganizer.ZIMLET];\r
96109 this._addSection(u,null,s);\r
96110 var h=this._headerItems[m];\r
96111 if(h){\r
96112 h.__isZimlet=true;\r
96113 h.setExpanded(appCtxt.get(ZmSetting.ZIMLET_TREE_OPEN,null,appCtxt.accountList.mainAccount))\r
96114 }}\r
96115 f=s.omit&&s.omit[ZmOrganizer.ID_GLOBAL_INBOX];\r
96116 if(appCtxt.isOffline&&!f&&this._appName==ZmApp.MAIL&&appCtxt.accountList.size(true)>2){\r
96117 var s={\r
96118 parent:this,text:(ZmMsg[ZmFolder.MSG_KEY[ZmOrganizer.ID_GLOBAL_INBOX]]),imageInfo:"GlobalInbox"};\r
96119 var t=new DwtTreeItem(s);\r
96120 t.setData(Dwt.KEY_ID,appCtxt.getById(ZmOrganizer.ID_GLOBAL_INBOX));\r
96121 t.setScrollStyle(Dwt.CLIP);\r
96122 t.addClassName("ZmOverviewGlobalInbox");\r
96123 t._initialize(0,true);\r
96124 t.setVisible(appCtxt.get(ZmSetting.OFFLINE_SHOW_GLOBAL_INBOX));\r
96125 this.setSelection(t,true);\r
96126 var c=appCtxt.accountList.mainAccount;\r
96127 var p=appCtxt.getSettings(c).getSetting(ZmSetting.OFFLINE_SHOW_GLOBAL_INBOX);\r
96128 p.addChangeListener(new AjxListener(this,this._settingChangeListener,t))\r
96129 }};\r
96130 ZmAccountOverviewContainer.prototype.updateAccountInfo=function(n,e,o){\r
96131 var t=appCtxt.getApp(this._appName)&&this.getHeaderItem(n);\r
96132 if(t){\r
96133 if(e){\r
96134 var a="";\r
96135 if(n.status!=ZmZimbraAccount.STATUS_ONLINE){\r
96136 a=(n.status==ZmZimbraAccount.STATUS_RUNNING)?("<img src='/img/animated/ImgSpinner.gif' width=16 height=16 border=0>"):(AjxImg.getImageHtml(n.getStatusIcon()))\r
96137 }\r
96138 if(t._extraCell){\r
96139 t._extraCell.innerHTML=a\r
96140 }}\r
96141 if(o){\r
96142 t.setToolTipContent(n.getToolTip())\r
96143 }}};\r
96144 ZmAccountOverviewContainer.prototype.resetOperations=function(t,e){\r
96145 t.enableAll(!(e instanceof ZmFolder));\r
96146 var a=appCtxt.accountList.getAccount(e);\r
96147 if(a){\r
96148 t.enable(ZmOperation.NEW_FOLDER,a.type!=ZmAccount.TYPE_POP);\r
96149 t.enable(ZmOperation.SYNC,!a.isMain)\r
96150 }};\r
96151 ZmAccountOverviewContainer.prototype.removeZimletSection=function(){\r
96152 var e=ZmOrganizer.LABEL[ZmOrganizer.ZIMLET];\r
96153 var t=appCtxt.getOverviewId([this.containerId,e],null);\r
96154 var a=this._headerItems[t];\r
96155 if(a){\r
96156 this.removeChild(a)\r
96157 }};\r
96158 ZmAccountOverviewContainer.prototype._addAccount=function(n,s,e,h){\r
96159 n.overviewId=appCtxt.getOverviewId(this.containerId,s);\r
96160 n.account=s;\r
96161 var o=appCtxt.getApp(this._appName);\r
96162 var t=(!o||(o&&appCtxt.get(ZmApp.SETTING[this._appName],null,s)));\r
96163 if(this._appName==ZmApp.PREFERENCES||t){\r
96164 var a=n.omitPerAcct?n.omitPerAcct[s.id]:n.omit;\r
96165 var r=(this._appName==ZmApp.PREFERENCES&&s.isMain)?ZmMsg.allAccounts:s.getDisplayName();\r
96166 var l={\r
96167 label:r,icon:s.getIcon(),dataId:s.id,className:h};\r
96168 this._addSection(l,a,n,e);\r
96169 this._initializeActionMenu(s)\r
96170 }};\r
96171 ZmAccountOverviewContainer.prototype._addSection=function(h,o,n,a){\r
96172 var s={\r
96173 parent:this,text:h.label,imageInfo:h.icon,selectable:n.selectable,className:h.className};\r
96174 var r=this._headerItems[h.dataId]=new DwtTreeItem(s);\r
96175 r.setData(Dwt.KEY_ID,h.dataId);\r
96176 r.setScrollStyle(Dwt.CLIP);\r
96177 r._initialize(null,true,true);\r
96178 r.addClassName(a?"ZmOverviewSectionHilite":"ZmOverviewSection");\r
96179 n.id=ZmId.getOverviewId(n.overviewId);\r
96180 n.parent=r;\r
96181 n.scroll=Dwt.CLIP;\r
96182 n.posStyle=Dwt.STATIC_STYLE;\r
96183 var t=this._controller._overview[n.overviewId]=this._overview[n.overviewId]=new ZmOverview(n,this._controller);\r
96184 r._addItem(t,null,true);\r
96185 var e=n.overviewTrees||n.treeIds;\r
96186 t.set(e,o)\r
96187 };\r
96188 ZmAccountOverviewContainer.prototype._treeViewListener=function(l){\r
96189 if(l.detail!=DwtTree.ITEM_ACTIONED&&l.detail!=DwtTree.ITEM_SELECTED&&l.detail!=DwtTree.ITEM_DBL_CLICKED){\r
96190 return\r
96191 }\r
96192 var c=this._actionedHeaderItem=l.item;\r
96193 var n=c&&c.getData(Dwt.KEY_ID);\r
96194 if(l.detail==DwtTree.ITEM_ACTIONED&&appCtxt.getApp(this._appName)){\r
96195 if(c.__isZimlet){\r
96196 return\r
96197 }\r
96198 var h=this._getActionMenu(l);\r
96199 if(h){\r
96200 this.resetOperations(h,n);\r
96201 h.popup(0,l.docX,l.docY)\r
96202 }}else{\r
96203 if((l.detail==DwtTree.ITEM_SELECTED)&&c){\r
96204 if(this._appName==ZmApp.CALENDAR||this._appName==ZmApp.PREFERENCES){\r
96205 return\r
96206 }\r
96207 this._deselectAllTreeViews();\r
96208 if(!ZmApp.NAME[this._appName]){\r
96209 return\r
96210 }\r
96211 if(n){\r
96212 var r=appCtxt.getSearchController();\r
96213 var a;\r
96214 if(n instanceof ZmFolder){\r
96215 var o=appCtxt.accountList.mainAccount;\r
96216 r.resetSearchAllAccounts();\r
96217 r.searchAllAccounts=true;\r
96218 a={\r
96219 queryHint:appCtxt.accountList.generateQuery(ZmOrganizer.ID_INBOX),folderId:null,getHtml:appCtxt.get(ZmSetting.VIEW_AS_HTML,null,o),searchFor:(ZmApp.DEFAULT_SEARCH[this._appName]),sortBy:ZmSearch.DATE_DESC,accountName:o.name,noUpdateOverview:true}\r
96220 }else{\r
96221 r.searchAllAccounts=false;\r
96222 var s=appCtxt.accountList.getAccount(n);\r
96223 appCtxt.accountList.setActiveAccount(s);\r
96224 var t=ZmOrganizer.DEFAULT_FOLDER[ZmApp.ORGANIZER[this._appName]];\r
96225 var e=appCtxt.getById(ZmOrganizer.getSystemId(t,s));\r
96226 a={\r
96227 query:e.createQuery(),getHtml:appCtxt.get(ZmSetting.VIEW_AS_HTML),searchFor:(ZmApp.DEFAULT_SEARCH[this._appName]),sortBy:((r.currentSearch&&e.nId==r.currentSearch.folderId)?null:ZmSearch.DATE_DESC),accountName:(s&&s.name),noUpdateOverview:true}\r
96228 }\r
96229 r.search(a)\r
96230 }}else{}}};\r
96231 ZmAccountOverviewContainer.prototype._treeListener=function(t){\r
96232 var o;\r
96233 var a=t.item;\r
96234 if(a){\r
96235 o=a.__isZimlet?appCtxt.accountList.mainAccount:appCtxt.accountList.getAccount(a.getData(Dwt.KEY_ID))\r
96236 }\r
96237 if(!o){\r
96238 return\r
96239 }\r
96240 if(appCtxt.getCurrentAppName()!=ZmApp.PREFERENCES&&(t.detail==DwtTree.ITEM_COLLAPSED||t.detail==DwtTree.ITEM_EXPANDED)){\r
96241 var e=t.detail==DwtTree.ITEM_EXPANDED;\r
96242 if(!appCtxt.inStartup){\r
96243 appCtxt.set(ZmSetting.ACCOUNT_TREE_OPEN,e,null,null,null,o)\r
96244 }\r
96245 if(!a.__isZimlet){\r
96246 if(e){\r
96247 a.setText(o.getDisplayName())\r
96248 }else{\r
96249 this._setAccountHeaderLabel(o,a)\r
96250 }}}};\r
96251 ZmAccountOverviewContainer.prototype._settingChangeListener=function(t,a){\r
96252 if(a.type!=ZmEvent.S_SETTING){\r
96253 return\r
96254 }\r
96255 var e=a.source;\r
96256 if(e.id==ZmSetting.OFFLINE_SHOW_GLOBAL_INBOX){\r
96257 t.setVisible(e.getValue())\r
96258 }};\r
96259 ZmAccountOverviewContainer.prototype.updateAccountHeaderLabel=function(t){\r
96260 var e=this.getHeaderItem(t);\r
96261 if(e&&!e.getExpanded()){\r
96262 this._setAccountHeaderLabel(t,e)\r
96263 }};\r
96264 ZmAccountOverviewContainer.prototype._setAccountHeaderLabel=function(n,o){\r
96265 var t=ZmOrganizer.getSystemId(ZmOrganizer.ID_INBOX,n,true);\r
96266 var a=appCtxt.getById(t);\r
96267 var e=(a&&a.numUnread>0)?(["<span style='font-weight:bold;'>",n.getDisplayName()," (",a.numUnread,")","</span>"].join("")):n.getDisplayName();\r
96268 o.setText(e)\r
96269 };\r
96270 ZmAccountOverviewContainer.prototype._initializeActionMenu=function(a){\r
96271 if(!this._actionMenu){\r
96272 var t=[ZmOperation.NEW_FOLDER,ZmOperation.SYNC];\r
96273 var e=[appCtxt.getShell(),t,a];\r
96274 this._actionMenu=new AjxCallback(this,this._createActionMenu,e)\r
96275 }};\r
96276 ZmAccountOverviewContainer.prototype._createActionMenu=function(o,a,r){\r
96277 if(!a){\r
96278 return\r
96279 }\r
96280 var s=new AjxListener(this,this._actionMenuListener);\r
96281 var n=new ZmActionMenu({\r
96282 parent:o,menuItems:a}\r
96283 );\r
96284 a=n.opList;\r
96285 for(var t=0;\r
96286 t<a.length;\r
96287 t++){\r
96288 var e=n.getItem(t);\r
96289 var h=a[t];\r
96290 if(h==ZmOperation.SYNC){\r
96291 e.setText(ZmMsg.sendReceive)\r
96292 }\r
96293 e.setData(Dwt.KEY_OBJECT,appCtxt.getFolderTree(r).root);\r
96294 n.addSelectionListener(h,s)\r
96295 }\r
96296 return n\r
96297 };\r
96298 ZmAccountOverviewContainer.prototype._actionMenuListener=function(a){\r
96299 var t=a.item.getData(ZmOperation.KEY_ID);\r
96300 if(t==ZmOperation.NEW_FOLDER){\r
96301 var n=ZmApp.ORGANIZER[this._appName];\r
96302 var e=this._controller.getTreeController(n,true);\r
96303 if(e){\r
96304 e._actionedOrganizer=null;\r
96305 var o=appCtxt.accountList.getAccount(this._actionedHeaderItem.getData(Dwt.KEY_ID));\r
96306 e._actionedOrganizer=appCtxt.getFolderTree(o).root;\r
96307 e._newListener(a,o)\r
96308 }}else{\r
96309 if(t==ZmOperation.SYNC){\r
96310 var o=appCtxt.accountList.getAccount(this._actionedHeaderItem.getData(Dwt.KEY_ID));\r
96311 if(o){\r
96312 o.sync()\r
96313 }}}}\r
96314 }\r
96315 if(AjxPackage.define("zimbraMail.share.view.ZmOverview")){\r
96316 ZmOverview=function(t,n){\r
96317 var h=t.overviewClass?t.overviewClass:"ZmOverview";\r
96318 t.id=t.id||ZmId.getOverviewId(t.overviewId);\r
96319 DwtComposite.call(this,{\r
96320 parent:t.parent,className:h,posStyle:t.posStyle,id:t.id}\r
96321 );\r
96322 this._controller=n;\r
96323 this.setScrollStyle(t.scroll||Dwt.SCROLL);\r
96324 this.overviewId=t.overviewId;\r
96325 this.account=t.account;\r
96326 this.selectionSupported=t.selectionSupported;\r
96327 this.actionSupported=t.actionSupported;\r
96328 this.dndSupported=t.dndSupported;\r
96329 this.headerClass=t.headerClass;\r
96330 this.showUnread=t.showUnread;\r
96331 this.showNewButtons=t.showNewButtons;\r
96332 this.treeStyle=t.treeStyle;\r
96333 this.isCheckedByDefault=t.isCheckedByDefault;\r
96334 this.noTooltips=t.noTooltips;\r
96335 this.isAppOverview=t.isAppOverview;\r
96336 this._treeIds=[];\r
96337 this._treeHash={};\r
96338 this._treeParents={};\r
96339 var l=document;\r
96340 var a=this.getHtmlElement();\r
96341 if(t.treeIds){\r
96342 for(var o=0,r=t.treeIds.length;\r
96343 o<r;\r
96344 o++){\r
96345 var e=l.createElement("DIV");\r
96346 var s=t.treeIds[o];\r
96347 this._treeParents[s]=e.id=[this.overviewId,s].join("-parent-");\r
96348 a.appendChild(e)\r
96349 }}\r
96350 if(this.dndSupported){\r
96351 var t={\r
96352 container:this.getHtmlElement(),threshold:15,amount:5,interval:10,id:this.overviewId};\r
96353 this._dndScrollCallback=new AjxCallback(null,DwtControl._dndScrollCallback,[t])\r
96354 }};\r
96355 ZmOverview.prototype=new DwtComposite;\r
96356 ZmOverview.prototype.constructor=ZmOverview;\r
96357 ZmOverview.prototype.toString=function(){\r
96358 return"ZmOverview"\r
96359 };\r
96360 ZmOverview.prototype.getTreeParent=function(e){\r
96361 return this._treeParents[e]\r
96362 };\r
96363 ZmOverview.prototype.set=function(e,a){\r
96364 if(e&&e.length){\r
96365 for(var t=0;\r
96366 t<e.length;\r
96367 t++){\r
96368 this.setTreeView(e[t],a)\r
96369 }}};\r
96370 ZmOverview.prototype.setTreeView=function(t,e){\r
96371 if(appCtxt.get(ZmOrganizer.PRECONDITION[t])===false){\r
96372 return\r
96373 }\r
96374 AjxDispatcher.require(ZmOrganizer.ORG_PACKAGE[t]);\r
96375 var a=this._controller.getTreeController(t);\r
96376 if(this._treeHash[t]){\r
96377 a.clearTreeView(this.overviewId)\r
96378 }else{\r
96379 this._treeIds.push(t)\r
96380 }\r
96381 var o={\r
96382 overviewId:this.overviewId,omit:e,showUnread:this.showUnread,account:this.account};\r
96383 this._treeHash[t]=a.show(o)\r
96384 };\r
96385 ZmOverview.prototype.getTreeView=function(e){\r
96386 return this._treeHash[e]\r
96387 };\r
96388 ZmOverview.prototype.getTreeViews=function(){\r
96389 return this._treeIds\r
96390 };\r
96391 ZmOverview.prototype.getTreeItemById=function(n,a){\r
96392 if(!n){\r
96393 return null\r
96394 }\r
96395 for(var t=0;\r
96396 t<this._treeIds.length;\r
96397 t++){\r
96398 var e=this._treeHash[this._treeIds[t]];\r
96399 if(e){\r
96400 var o=e.getTreeItemById&&e.getTreeItemById(n);\r
96401 if(o&&(!a||(this._treeIds[t]==a))){\r
96402 return o\r
96403 }}}\r
96404 return null\r
96405 };\r
96406 ZmOverview.prototype.getSelected=function(t){\r
96407 for(var a=0;\r
96408 a<this._treeIds.length;\r
96409 a++){\r
96410 var e=this._treeHash[this._treeIds[a]];\r
96411 if(e){\r
96412 var o=e.getSelected();\r
96413 if(o){\r
96414 return t?e.type:o\r
96415 }}}\r
96416 return null\r
96417 };\r
96418 ZmOverview.prototype.setSelected=function(o,a){\r
96419 var t,e;\r
96420 if(a){\r
96421 e=this._treeHash[a];\r
96422 t=e&&e.getTreeItemById(o)\r
96423 }else{\r
96424 for(var a in this._treeHash){\r
96425 e=this._treeHash[a];\r
96426 t=e&&e.getTreeItemById(o);\r
96427 if(t){\r
96428 break\r
96429 }}}\r
96430 if(t&&(this._selectedTreeItem!=t)){\r
96431 e.setSelected(o,true,true)\r
96432 }\r
96433 this.itemSelected(t)\r
96434 };\r
96435 ZmOverview.prototype.itemSelected=function(a){\r
96436 if(appCtxt.multiAccounts&&a){\r
96437 var t=this.overviewId.substring(0,this.overviewId.indexOf(":"));\r
96438 var e=this._controller.getOverviewContainer(t);\r
96439 if(e){\r
96440 e.deselectAll(this)\r
96441 }}\r
96442 if(this._selectedTreeItem&&(this._selectedTreeItem._tree!=(a&&a._tree))){\r
96443 this._selectedTreeItem._tree.deselectAll()\r
96444 }\r
96445 this._selectedTreeItem=a\r
96446 };\r
96447 ZmOverview.prototype.clear=function(){\r
96448 for(var e=0;\r
96449 e<this._treeIds.length;\r
96450 e++){\r
96451 var t=this._treeIds[e];\r
96452 if(this._treeHash[t]){\r
96453 var a=this._controller.getTreeController(t);\r
96454 a.clearTreeView(this.overviewId);\r
96455 delete this._treeHash[t]\r
96456 }}};\r
96457 ZmOverview.prototype._initialize=function(){};\r
96458 ZmOverview.prototype._focus=function(){\r
96459 var t=this._selectedTreeItem;\r
96460 if(!t){\r
96461 var e=this._treeHash[this._treeIds[0]];\r
96462 if(e){\r
96463 t=e._getNextTreeItem(true)\r
96464 }}\r
96465 if(t){\r
96466 t.focus()\r
96467 }};\r
96468 ZmOverview.prototype._blur=function(){\r
96469 var e=this._selectedTreeItem;\r
96470 if(e){\r
96471 e._blur()\r
96472 }};\r
96473 ZmOverview.prototype._getNextTreeItem=function(n,a){\r
96474 for(var o=0;\r
96475 o<this._treeIds.length;\r
96476 o++){\r
96477 if(this._treeHash[this._treeIds[o]]==a){\r
96478 break\r
96479 }}\r
96480 var t=null;\r
96481 var e=n?o+1:o-1;\r
96482 a=this._treeHash[this._treeIds[e]];\r
96483 while(a){\r
96484 t=DwtTree.prototype._getNextTreeItem.call(a,n);\r
96485 if(t){\r
96486 break\r
96487 }\r
96488 e=n?e+1:e-1;\r
96489 a=this._treeHash[this._treeIds[e]]\r
96490 }\r
96491 return t\r
96492 }\r
96493 }\r
96494 if(AjxPackage.define("zimbraMail.share.view.ZmUpsellView")){\r
96495 ZmUpsellView=function(e){\r
96496 DwtControl.call(this,e)\r
96497 };\r
96498 ZmUpsellView.prototype=new DwtControl;\r
96499 ZmUpsellView.prototype.constructor=ZmUpsellView;\r
96500 ZmUpsellView.prototype.toString=function(){\r
96501 return"ZmUpsellView"\r
96502 };\r
96503 ZmUpsellView.prototype.setBounds=function(t,h,o,e,s){\r
96504 var n=0;\r
96505 if(!s){\r
96506 n=this._getToolbarHeight()\r
96507 }\r
96508 DwtControl.prototype.setBounds.call(this,t,h-n,o,e+n);\r
96509 var r="iframe_"+this.getHTMLElId();\r
96510 var a=document.getElementById(r);\r
96511 if(a){\r
96512 a.width=o;\r
96513 a.height=e+n\r
96514 }};\r
96515 ZmUpsellView.prototype._getToolbarHeight=function(){\r
96516 var t=appCtxt.getAppViewMgr().getCurrentViewComponent(ZmAppViewMgr.C_TOOLBAR_TOP);\r
96517 var a=t.getSize();\r
96518 var e=a.y?a.y:t.getHtmlElement().clientHeight;\r
96519 return e\r
96520 }\r
96521 }\r
96522 if(AjxPackage.define("zimbraMail.share.controller.ZmController")){\r
96523 ZmController=function(e,t){\r
96524 if(arguments.length==0){\r
96525 return\r
96526 }\r
96527 this._container=e;\r
96528 this._app=t;\r
96529 this._shell=appCtxt.getShell();\r
96530 this._appViews={};\r
96531 this._currentView=null;\r
96532 this._authenticating=false\r
96533 };\r
96534 ZmController.prototype._setView=function(){};\r
96535 ZmController.prototype.toString=function(){\r
96536 return"ZmController"\r
96537 };\r
96538 ZmController.prototype.getApp=function(){\r
96539 return this._app\r
96540 };\r
96541 ZmController.prototype.popupErrorDialog=function(e,c,u,l){\r
96542 var s=appCtxt.getErrorDialog();\r
96543 var a="";\r
96544 if(typeof c=="string"){\r
96545 a=c\r
96546 }else{\r
96547 if(c instanceof Object){\r
96548 c.msg=c.msg||e;\r
96549 var h=["method","msg","code","detail","trace","request","fileName","lineNumber","message","name","stack"];\r
96550 var r=[],n=0;\r
96551 r[n++]="<table>";\r
96552 for(var o=0;\r
96553 o<h.length;\r
96554 o++){\r
96555 var t=h[o];\r
96556 var m=c[t];\r
96557 if(m){\r
96558 if(t=="request"){\r
96559 m=["<pre>",m,"</pre>"].join("");\r
96560 var d=document.getElementById(s._msgCellId);\r
96561 if(d){\r
96562 d.className="DwtMsgDialog-wide"\r
96563 }}\r
96564 r[n++]=["<tr><td valign='top'>",h[o],":</td><td valign='top'>",m,"</td></tr>"].join("")\r
96565 }}\r
96566 r[n++]="</table>";\r
96567 a=r.join("")\r
96568 }}\r
96569 s.registerCallback(DwtDialog.OK_BUTTON,this._errorDialogCallback,this);\r
96570 s.setMessage(e,a,DwtMessageDialog.CRITICAL_STYLE,ZmMsg.zimbraTitle);\r
96571 s.popup(null,l)\r
96572 };\r
96573 ZmController.prototype.setCurrentView=function(e){\r
96574 this._currentView=e\r
96575 };\r
96576 ZmController.prototype.getCurrentView=function(){\r
96577 return this._currentView\r
96578 };\r
96579 ZmController.prototype.getKeyMapName=function(){\r
96580 return"Global"\r
96581 };\r
96582 ZmController.prototype.handleKeyAction=function(l){\r
96583 var a=this.getTabView?this.getTabView():null;\r
96584 if(a&&a.handleKeyAction(l)){\r
96585 return true\r
96586 }\r
96587 var e=ZmApp.ACTION_CODES_R[l];\r
96588 if(e){\r
96589 var n=ZmApp.ACTION_CODES[l];\r
96590 if(n){\r
96591 appCtxt.getApp(e).handleOp(n);\r
96592 return true\r
96593 }}\r
96594 switch(l){\r
96595 case ZmKeyMap.NEW:e=appCtxt.getCurrentAppName();\r
96596 var r=ZmApp.NEW_ACTION_CODE[e];\r
96597 if(r){\r
96598 var n=ZmApp.ACTION_CODES[r];\r
96599 if(n){\r
96600 appCtxt.getApp(e).handleOp(n);\r
96601 return true\r
96602 }}\r
96603 break;\r
96604 case ZmKeyMap.NEW_FOLDER:case ZmKeyMap.NEW_TAG:var n=ZmApp.ACTION_CODES[l];\r
96605 if(n){\r
96606 this._newListener(null,n)\r
96607 }\r
96608 break;\r
96609 case ZmKeyMap.SAVED_SEARCH:var s=appCtxt.getFolderTree().getByType(ZmOrganizer.SEARCH);\r
96610 if(s&&s.length>0){\r
96611 var h=appCtxt.getChooseFolderDialog();\r
96612 var o={\r
96613 treeIds:[ZmOrganizer.SEARCH],overviewId:h.getOverviewId(ZmOrganizer.SEARCH),title:ZmMsg.selectSearch};\r
96614 ZmController.showDialog(h,new AjxCallback(null,ZmController._searchSelectionCallback,[h]),o)\r
96615 }\r
96616 break;\r
96617 case ZmKeyMap.VISIT:var h=appCtxt.getChooseFolderDialog();\r
96618 var t=ZmApp.ORGANIZER[this._app._name]||ZmOrganizer.FOLDER;\r
96619 var o={\r
96620 treeIds:[t],overviewId:h.getOverviewId(ZmOrganizer.APP[t]),appName:this._app._name,title:AjxMessageFormat.format(ZmMsg.goToFolder,ZmMsg[ZmOrganizer.MSG_KEY[t]])};\r
96621 ZmController.showDialog(h,new AjxCallback(null,ZmController._visitOrgCallback,[h,t]),o);\r
96622 break;\r
96623 case ZmKeyMap.VISIT_TAG:if(appCtxt.getTagTree().size()>0){\r
96624 var h=appCtxt.getPickTagDialog();\r
96625 ZmController.showDialog(h,new AjxCallback(null,ZmController._visitOrgCallback,[h,ZmOrganizer.TAG]))\r
96626 }\r
96627 break;\r
96628 default:return false\r
96629 }\r
96630 return true\r
96631 };\r
96632 ZmController._searchSelectionCallback=function(t,e){\r
96633 if(e){\r
96634 appCtxt.getSearchController().redoSearch(e.search)\r
96635 }\r
96636 t.popdown()\r
96637 };\r
96638 ZmController._visitOrgCallback=function(t,a,o){\r
96639 if(o){\r
96640 var e=appCtxt.getOverviewController().getTreeController(a);\r
96641 if(e&&e._itemClicked){\r
96642 e._itemClicked(o)\r
96643 }}\r
96644 t.popdown()\r
96645 };\r
96646 ZmController.prototype.mapSupported=function(e){\r
96647 return false\r
96648 };\r
96649 ZmController.prototype._newListener=function(e,t){\r
96650 switch(t){\r
96651 case ZmOperation.NEW_FOLDER:ZmController.showDialog(appCtxt.getNewFolderDialog(),this.getNewFolderCallback());\r
96652 break;\r
96653 case ZmOperation.NEW_TAG:if(!this._newTagCb){\r
96654 this._newTagCb=new AjxCallback(this,this._newTagCallback)\r
96655 }\r
96656 ZmController.showDialog(appCtxt.getNewTagDialog(),this._newTagCb);\r
96657 break\r
96658 }};\r
96659 ZmController.prototype._newFolderCallback=function(s,o,t,a){\r
96660 var n=appCtxt.getNewFolderDialog();\r
96661 n.popdown();\r
96662 var e=appCtxt.getOverviewController();\r
96663 e.getTreeController(ZmOrganizer.FOLDER)._doCreate(s,o,t,a)\r
96664 };\r
96665 ZmController.prototype._newTagCallback=function(t){\r
96666 appCtxt.getNewTagDialog().popdown();\r
96667 var e=appCtxt.getOverviewController();\r
96668 e.getTreeController(ZmOrganizer.TAG)._doCreate(t)\r
96669 };\r
96670 ZmController.prototype._createTabGroup=function(e){\r
96671 e=e?e:this.toString();\r
96672 this._tabGroup=new DwtTabGroup(e);\r
96673 return this._tabGroup\r
96674 };\r
96675 ZmController.prototype._setTabGroup=function(e){\r
96676 this._tabGroup=e\r
96677 };\r
96678 ZmController.prototype.getTabGroup=function(){\r
96679 return this._tabGroup\r
96680 };\r
96681 ZmController.prototype.getNewFolderCallback=function(){\r
96682 if(!this._newFolderCb){\r
96683 this._newFolderCb=new AjxCallback(this,this._newFolderCallback)\r
96684 }\r
96685 return this._newFolderCb\r
96686 };\r
96687 ZmController.prototype._saveFocus=function(){\r
96688 var t=appCtxt.getRootTabGroup().getFocusMember();\r
96689 var e=this.getTabGroup();\r
96690 this._savedFocusMember=(t&&e&&e.contains(t))?t:null;\r
96691 return this._savedFocusMember\r
96692 };\r
96693 ZmController.prototype._restoreFocus=function(n,r){\r
96694 var a=appCtxt.getRootTabGroup();\r
96695 var t=appCtxt.getCurrentApp();\r
96696 var s=t&&t.getOverviewId();\r
96697 var o=s&&appCtxt.getOverviewController().getOverview(s);\r
96698 if(a&&o&&(o!=ZmController._currentOverview)){\r
96699 a.replaceMember(ZmController._currentOverview,o,false,false,null,true);\r
96700 ZmController._currentOverview=o\r
96701 }\r
96702 var e=this.getTabGroup();\r
96703 n=n||this._savedFocusMember||this._getDefaultFocusItem()||a.getFocusMember();\r
96704 r=r||ZmController.noFocus;\r
96705 ZmController.noFocus=false;\r
96706 if(a&&e&&(e!=ZmController._currentAppViewTabGroup)){\r
96707 a.replaceMember(ZmController._currentAppViewTabGroup,e,false,false,n,r);\r
96708 ZmController._currentAppViewTabGroup=e\r
96709 }else{\r
96710 if(n&&!r){\r
96711 appCtxt.getKeyboardMgr().grabFocus(n)\r
96712 }}};\r
96713 ZmController.prototype._getDefaultFocusItem=function(){\r
96714 var e=this.getTabGroup();\r
96715 return e?e.getFirstMember(true):null\r
96716 };\r
96717 ZmController.prototype._preHideCallback=function(){\r
96718 this._saveFocus();\r
96719 return true\r
96720 };\r
96721 ZmController.prototype._postShowCallback=function(){\r
96722 this._restoreFocus();\r
96723 return true\r
96724 };\r
96725 ZmController.prototype._handleError=function(t,e){\r
96726 this._handleException(t,e)\r
96727 };\r
96728 ZmController.prototype._handleException=function(r,o){\r
96729 if(r.code==AjxSoapException.INVALID_PDU){\r
96730 r.code=ZmCsfeException.SVC_FAILURE;\r
96731 r.detail=["contact your administrator (",r.msg,")"].join("");\r
96732 r.msg="Service failure"\r
96733 }\r
96734 if(r.code==ZmCsfeException.SVC_AUTH_EXPIRED||r.code==ZmCsfeException.SVC_AUTH_REQUIRED||r.code==ZmCsfeException.NO_AUTH_TOKEN){\r
96735 ZmCsfeCommand.clearAuthToken();\r
96736 var c=false;\r
96737 var n=appCtxt.getLoginDialog();\r
96738 if(r.code==ZmCsfeException.SVC_AUTH_EXPIRED){\r
96739 n.setError(ZmMsg.sessionExpired);\r
96740 c=true\r
96741 }else{\r
96742 if(r.code==ZmCsfeException.SVC_AUTH_REQUIRED){\r
96743 ZmZimbraMail.logOff();\r
96744 return\r
96745 }else{\r
96746 n.setError(null)\r
96747 }}\r
96748 n.setReloginMode(c);\r
96749 this._handleLogin(c,o);\r
96750 return\r
96751 }\r
96752 if(r.code==ZmCsfeException.AUTH_TOKEN_CHANGED){\r
96753 var l=AjxSoapDoc.create("GetInfoRequest","urn:zimbraAccount");\r
96754 var e=l.getMethod();\r
96755 e.setAttribute("sections","mbox");\r
96756 var d=new AjxCallback(this,this._handleResponseGetInfo);\r
96757 var a={\r
96758 soapDoc:l,asyncMode:true,callback:d,skipAuthCheck:true};\r
96759 ZmCsfeCommand._oldSessionId=ZmCsfeCommand._sessionId;\r
96760 appCtxt.getAppController().sendRequest(a);\r
96761 return\r
96762 }\r
96763 if(r.code==ZmCsfeException.MAIL_NO_SUCH_MSG){\r
96764 var h=appCtxt.getCurrentViewId();\r
96765 if(h==ZmId.VIEW_CONVLIST||h==ZmId.VIEW_TRAD){\r
96766 appCtxt.getApp(ZmApp.MAIL).mailSearch();\r
96767 return\r
96768 }}\r
96769 if(r.method!="NoOpRequest"){\r
96770 var s;\r
96771 if(r.code==ZmCsfeException.MAIL_NO_SUCH_ITEM){\r
96772 s=r.data.itemId\r
96773 }else{\r
96774 if(r.code==ZmCsfeException.MAIL_SEND_FAILURE){\r
96775 s=r.code\r
96776 }}\r
96777 var t=r.getErrorMsg?r.getErrorMsg(s):r.msg?r.msg:r.message;\r
96778 this.popupErrorDialog(t,r,true,this._hideSendReportBtn(r))\r
96779 }};\r
96780 ZmController.prototype._handleLogin=function(t,e){\r
96781 var a=appCtxt.get(ZmSetting.LOGIN_URL);\r
96782 if(a){\r
96783 ZmZimbraMail.sendRedirect(a);\r
96784 return\r
96785 }\r
96786 var s=appCtxt.getUsername();\r
96787 if(!s||appCtxt.isOffline){\r
96788 ZmZimbraMail.logOff();\r
96789 return\r
96790 }\r
96791 this._authenticating=true;\r
96792 var n=appCtxt.getLoginDialog();\r
96793 n.registerCallback(this._loginCallback,this,[e]);\r
96794 n.setVisible(true,false);\r
96795 try{\r
96796 n.setFocus(s,t)\r
96797 }\r
96798 catch(o){}};\r
96799 ZmController.prototype._loginCallback=function(e,o,t,a){\r
96800 this._doAuth(e,o,t,a)\r
96801 };\r
96802 ZmController.prototype._doAuth=function(e,s,t,n){\r
96803 var a=new ZmAuthenticate();\r
96804 var o=new AjxCallback(this,this._handleResponseDoAuth,[e,n]);\r
96805 a.execute(s,t,o)\r
96806 };\r
96807 ZmController.prototype._handleResponseDoAuth=function(t,n,e){\r
96808 try{\r
96809 e.getResponse();\r
96810 this._authenticating=false;\r
96811 appCtxt.rememberMe=n;\r
96812 if(t){\r
96813 if(t.continueCallback){\r
96814 t.continueCallback.run()\r
96815 }else{\r
96816 t.resend=ZmCsfeCommand.REAUTH;\r
96817 appCtxt.getRequestMgr().sendRequest(t)\r
96818 }}else{\r
96819 ZmCsfeCommand.setSessionId(null);\r
96820 appCtxt.getAppController().startup({\r
96821 isRelogin:true}\r
96822 )\r
96823 }\r
96824 this._hideLoginDialog()\r
96825 }\r
96826 catch(o){\r
96827 var a=appCtxt.getLoginDialog();\r
96828 if(o.code==ZmCsfeException.ACCT_AUTH_FAILED||o.code==ZmCsfeException.SVC_INVALID_REQUEST){\r
96829 a.setError(ZmMsg.loginError)\r
96830 }else{\r
96831 if(o.code==ZmCsfeException.ACCT_MAINTENANCE_MODE){\r
96832 a.setError(ZmMsg.errorMaintenanceMode+" "+ZmMsg.errorContact)\r
96833 }else{\r
96834 this.popupErrorDialog(ZmMsg.errorGeneric,o)\r
96835 }}}};\r
96836 ZmController.prototype._hideLoginDialog=function(){\r
96837 var e=appCtxt.getLoginDialog();\r
96838 e.setVisible(false);\r
96839 e.setError(null);\r
96840 e.clearPassword()\r
96841 };\r
96842 ZmController.prototype._handleResponseGetInfo=function(e){\r
96843 var a=e.getResponse();\r
96844 var n=a.GetInfoResponse;\r
96845 if(appCtxt.isOffline){\r
96846 if(location.search.indexOf("offlineHack")!=-1){\r
96847 var s="old user: "+appCtxt.getUsername()+"\nold auth token: "+ZmCsfeCommand._curAuthToken+"\nold session ID: "+ZmCsfeCommand._oldSessionId+"\n\nnew user: "+n.name+"\nnew auth token: "+ZmCsfeCommand.getAuthToken()+"\nnew session ID: "+ZmCsfeCommand._sessionId+"\n";\r
96848 alert(s)\r
96849 }}else{\r
96850 if(n.name!=appCtxt.getUsername()){\r
96851 var o=appCtxt.getLoginDialog();\r
96852 o.registerCallback(this._loginCallback,this);\r
96853 o.setError(ZmMsg.authChanged);\r
96854 var t=false;\r
96855 o.setReloginMode(t);\r
96856 this._handleLogin(t)\r
96857 }else{}}};\r
96858 ZmController.prototype._hideSendReportBtn=function(e){\r
96859 return(e.code==ZmCsfeException.MAIL_TOO_MANY_TERMS||e.code==ZmCsfeException.MAIL_MAINTENANCE_MODE||e.code==ZmCsfeException.MAIL_MESSAGE_TOO_BIG||e.code==ZmCsfeException.NETWORK_ERROR||e.code==ZmCsfeException.EMPTY_RESPONSE||e.code==ZmCsfeException.BAD_JSON_RESPONSE||e.code==ZmCsfeException.TOO_MANY_TAGS||e.code==ZmCsfeException.OFFLINE_ONLINE_ONLY_OP)\r
96860 };\r
96861 ZmController.prototype._errorDialogCallback=function(){\r
96862 appCtxt.getErrorDialog().popdown()\r
96863 };\r
96864 ZmController.showDialog=function(e,o,a,t){\r
96865 e.reset(t);\r
96866 e.registerCallback(DwtDialog.OK_BUTTON,o);\r
96867 e.popup(a,t)\r
96868 };\r
96869 ZmController.prototype._clearDialog=function(e){\r
96870 e.popdown();\r
96871 this._pendingActionData=null\r
96872 };\r
96873 ZmController.prototype._menuPopdownActionListener=function(){};\r
96874 ZmController.prototype.setSessionId=function(e,t){\r
96875 this.sessionId=t;\r
96876 this.viewId=[e,this.sessionId].join("")\r
96877 };\r
96878 ZmController.prototype.isTransient=function(e,t){\r
96879 return false\r
96880 }\r
96881 }\r
96882 if(AjxPackage.define("zimbraMail.share.controller.ZmListController")){\r
96883 ZmListController=function(e,t){\r
96884 if(arguments.length==0){\r
96885 return\r
96886 }\r
96887 ZmController.call(this,e,t);\r
96888 this._toolbar={};\r
96889 this._navToolBar={};\r
96890 this._listView={};\r
96891 this._tabGroups={};\r
96892 this._list=null;\r
96893 this._actionMenu=null;\r
96894 this._actionEv=null;\r
96895 this._activeSearch=null;\r
96896 this._tagList=appCtxt.getTagTree();\r
96897 if(this._tagList){\r
96898 this._tagChangeLstnr=new AjxListener(this,this._tagChangeListener);\r
96899 this._tagList.addChangeListener(this._tagChangeLstnr)\r
96900 }\r
96901 this._listeners={};\r
96902 this._listeners[ZmOperation.NEW_MENU]=new AjxListener(this,this._newListener);\r
96903 this._listeners[ZmOperation.TAG_MENU]=new AjxListener(this,this._tagButtonListener);\r
96904 this._listeners[ZmOperation.TAG]=new AjxListener(this,this._tagListener);\r
96905 this._listeners[ZmOperation.PRINT]=new AjxListener(this,this._printListener);\r
96906 this._listeners[ZmOperation.DELETE]=new AjxListener(this,this._deleteListener);\r
96907 this._listeners[ZmOperation.CLOSE]=new AjxListener(this,this._backListener);\r
96908 this._listeners[ZmOperation.MOVE]=new AjxListener(this,this._moveListener);\r
96909 this._listeners[ZmOperation.SEARCH]=new AjxListener(this,this._participantSearchListener);\r
96910 this._listeners[ZmOperation.BROWSE]=new AjxListener(this,this._participantBrowseListener);\r
96911 this._listeners[ZmOperation.NEW_MESSAGE]=new AjxListener(this,this._participantComposeListener);\r
96912 if(window.ZmImApp){\r
96913 this._listeners[ZmOperation.IM]=ZmImApp.getImMenuItemListener()\r
96914 }\r
96915 this._listeners[ZmOperation.CONTACT]=new AjxListener(this,this._participantContactListener);\r
96916 this._listeners[ZmOperation.VIEW]=new AjxListener(this,this._viewMenuItemListener);\r
96917 this._menuPopdownListener=new AjxListener(this,this._menuPopdownActionListener);\r
96918 this._dropTgt=new DwtDropTarget("ZmTag");\r
96919 this._dropTgt.markAsMultiple();\r
96920 this._dropTgt.addDropListener(new AjxListener(this,this._dropListener));\r
96921 this._itemCountText={};\r
96922 this._continuation={\r
96923 count:0,totalItems:0}\r
96924 };\r
96925 ZmListController.prototype=new ZmController;\r
96926 ZmListController.prototype.constructor=ZmListController;\r
96927 ZmListController.CONTINUATION_SEARCH_ITEMS=500;\r
96928 ZmListController.prototype.toString=function(){\r
96929 return"ZmListController"\r
96930 };\r
96931 ZmListController.prototype.show=function(t,e){\r
96932 this._currentView=e||this._defaultView();\r
96933 this._activeSearch=t;\r
96934 if(t){\r
96935 this._currentSearch=t.search\r
96936 }\r
96937 this.currentPage=1;\r
96938 this.maxPage=1\r
96939 };\r
96940 ZmListController.prototype.getSearchString=function(){\r
96941 return this._currentSearch?this._currentSearch.query:""\r
96942 };\r
96943 ZmListController.prototype.getSearchStringHint=function(){\r
96944 return this._currentSearch?this._currentSearch.queryHint:""\r
96945 };\r
96946 ZmListController.prototype.getCurrentView=function(){\r
96947 return this._listView[this._currentView]\r
96948 };\r
96949 ZmListController.prototype.getCurrentToolbar=function(){\r
96950 return this._toolbar[this._currentView]\r
96951 };\r
96952 ZmListController.prototype.getList=function(){\r
96953 return this._list\r
96954 };\r
96955 ZmListController.prototype.setList=function(e){\r
96956 if(e!=this._list&&(e instanceof ZmList)){\r
96957 if(this._list){\r
96958 this._list.clear()\r
96959 }\r
96960 this._list=e\r
96961 }};\r
96962 ZmListController.prototype.setHasMore=function(e){\r
96963 if(e){\r
96964 this._list.setHasMore(e);\r
96965 this._resetNavToolBarButtons(this._currentView)\r
96966 }};\r
96967 ZmListController.prototype.handleKeyAction=function(s){\r
96968 var a=this._listView[this._currentView];\r
96969 switch(s){\r
96970 case DwtKeyMap.DBLCLICK:return a.handleKeyAction(s);\r
96971 case ZmKeyMap.DEL:var t=this._toolbar[this._currentView];\r
96972 var n=t&&(t.getButton(ZmOperation.DELETE)||t.getButton(ZmOperation.DELETE_MENU));\r
96973 if(n&&n.getEnabled()){\r
96974 this._doDelete(this._listView[this._currentView].getSelection())\r
96975 }\r
96976 break;\r
96977 case ZmKeyMap.FLAG:this._doFlag(a.getSelection());\r
96978 break;\r
96979 case ZmKeyMap.MOVE:this._moveListener.call(this);\r
96980 break;\r
96981 case ZmKeyMap.NEXT_PAGE:var e=this._navToolBar[this._currentView];\r
96982 var n=e?e.getButton(ZmOperation.PAGE_FORWARD):null;\r
96983 if(n&&n.getEnabled()){\r
96984 this._paginate(this._currentView,true)\r
96985 }\r
96986 break;\r
96987 case ZmKeyMap.PREV_PAGE:var e=this._navToolBar[this._currentView];\r
96988 var n=e?e.getButton(ZmOperation.PAGE_BACK):null;\r
96989 if(n&&n.getEnabled()){\r
96990 this._paginate(this._currentView,false)\r
96991 }\r
96992 break;\r
96993 case ZmKeyMap.PRINT:if(appCtxt.get(ZmSetting.PRINT_ENABLED)){\r
96994 this._printListener()\r
96995 }\r
96996 break;\r
96997 case ZmKeyMap.TAG:var o=a.getSelection();\r
96998 if(o&&o.length&&(appCtxt.getTagTree().size()>0)){\r
96999 var r=appCtxt.getPickTagDialog();\r
97000 ZmController.showDialog(r,new AjxCallback(this,this._tagSelectionCallback,[o,r]))\r
97001 }\r
97002 break;\r
97003 case ZmKeyMap.UNTAG:if(appCtxt.get(ZmSetting.TAGGING_ENABLED)){\r
97004 var o=a.getSelection();\r
97005 if(o&&o.length){\r
97006 this._doRemoveAllTags(o)\r
97007 }}\r
97008 break;\r
97009 default:return ZmController.prototype.handleKeyAction.call(this,s)\r
97010 }\r
97011 return true\r
97012 };\r
97013 ZmListController.prototype._createNewView=function(){};\r
97014 ZmListController.prototype._getViewType=function(){};\r
97015 ZmListController.prototype._defaultView=function(){\r
97016 return this._getViewType()\r
97017 };\r
97018 ZmListController.prototype._setViewContents=function(e){};\r
97019 ZmListController.prototype._getTagMenuMsg=function(e){};\r
97020 ZmListController.prototype._getMoveDialogTitle=function(e){};\r
97021 ZmListController.prototype._getToolBarOps=function(){};\r
97022 ZmListController.prototype._getActionMenuOps=function(){};\r
97023 ZmListController.prototype._setup=function(e){\r
97024 this._initialize(e);\r
97025 this._resetOperations(this._toolbar[e],0)\r
97026 };\r
97027 ZmListController.prototype._initialize=function(e){\r
97028 this._initializeToolBar(e);\r
97029 this._initializeListView(e);\r
97030 this._initializeTabGroup(e)\r
97031 };\r
97032 ZmListController.prototype._standardToolBarOps=function(){\r
97033 return[ZmOperation.NEW_MENU,ZmOperation.SEP,ZmOperation.DELETE,ZmOperation.MOVE,ZmOperation.PRINT]\r
97034 };\r
97035 ZmListController.prototype._standardActionMenuOps=function(){\r
97036 return[ZmOperation.TAG_MENU,ZmOperation.DELETE,ZmOperation.MOVE,ZmOperation.PRINT]\r
97037 };\r
97038 ZmListController.prototype._participantOps=function(){\r
97039 var e=[ZmOperation.SEARCH,ZmOperation.BROWSE];\r
97040 if(ZmSetting.MAIL_ENABLED){\r
97041 e.push(ZmOperation.NEW_MESSAGE)\r
97042 }\r
97043 if(ZmSetting.IM_ENABLED){\r
97044 e.push(ZmOperation.IM)\r
97045 }\r
97046 if(ZmSetting.CONTACTS_ENABLED){\r
97047 e.push(ZmOperation.CONTACT)\r
97048 }\r
97049 return e\r
97050 };\r
97051 ZmListController.prototype._initializeToolBar=function(t){\r
97052 if(this._toolbar[t]){\r
97053 return\r
97054 }\r
97055 var n=this._getToolBarOps();\r
97056 if(!n){\r
97057 return\r
97058 }\r
97059 var e=this._toolbar[t]=new ZmButtonToolBar({\r
97060 parent:this._container,buttons:n,context:t,controller:this,refElementId:ZmId.SKIN_APP_TOP_TOOLBAR}\r
97061 );\r
97062 var o;\r
97063 for(var a=0;\r
97064 a<e.opList.length;\r
97065 a++){\r
97066 o=e.opList[a];\r
97067 if(this._listeners[o]){\r
97068 e.addSelectionListener(o,this._listeners[o])\r
97069 }}\r
97070 o=e.getButton(ZmOperation.PRINT);\r
97071 if(o){\r
97072 o.setText(null)\r
97073 }\r
97074 o=e.getButton(ZmOperation.MOVE);\r
97075 if(o){\r
97076 o.setText(null)\r
97077 }\r
97078 o=e.getButton(ZmOperation.NEW_MENU);\r
97079 if(o){\r
97080 var s=new AjxListener(e,ZmListController._newDropDownListener);\r
97081 o.addDropDownSelectionListener(s);\r
97082 e._ZmListController_this=this;\r
97083 e._ZmListController_newDropDownListener=s\r
97084 }\r
97085 o=e.getButton(ZmOperation.TAG_MENU);\r
97086 if(o){\r
97087 o.noMenuBar=true;\r
97088 this._setupTagMenu(e)\r
97089 }\r
97090 appCtxt.notifyZimlets("initializeToolbar",[this._app,e,this,t],{\r
97091 waitUntilLoaded:true}\r
97092 )\r
97093 };\r
97094 ZmListController.prototype._initializeListView=function(e){\r
97095 if(this._listView[e]){\r
97096 return\r
97097 }\r
97098 this._listView[e]=this._createNewView(e);\r
97099 this._listView[e].addSelectionListener(new AjxListener(this,this._listSelectionListener));\r
97100 this._listView[e].addActionListener(new AjxListener(this,this._listActionListener))\r
97101 };\r
97102 ZmListController.prototype._initializeActionMenu=function(){\r
97103 if(this._actionMenu){\r
97104 return\r
97105 }\r
97106 var e=this._getActionMenuOps();\r
97107 if(!e){\r
97108 return\r
97109 }\r
97110 this._actionMenu=new ZmActionMenu({\r
97111 parent:this._shell,menuItems:e,context:this._getMenuContext(),controller:this}\r
97112 );\r
97113 this._addMenuListeners(this._actionMenu);\r
97114 if(appCtxt.get(ZmSetting.TAGGING_ENABLED)){\r
97115 this._setupTagMenu(this._actionMenu)\r
97116 }};\r
97117 ZmListController.prototype._addMenuListeners=function(o){\r
97118 var t=o.opList;\r
97119 for(var e=0;\r
97120 e<t.length;\r
97121 e++){\r
97122 var a=t[e];\r
97123 if(this._listeners[a]){\r
97124 o.addSelectionListener(a,this._listeners[a],0)\r
97125 }}\r
97126 o.addPopdownListener(this._menuPopdownListener)\r
97127 };\r
97128 ZmListController.prototype._initializeTabGroup=function(e){\r
97129 if(this._tabGroups[e]){\r
97130 return\r
97131 }\r
97132 this._tabGroups[e]=this._createTabGroup();\r
97133 this._tabGroups[e].newParent(appCtxt.getRootTabGroup());\r
97134 this._toolbar[e].noFocus=true;\r
97135 this._tabGroups[e].addMember(this._listView[e])\r
97136 };\r
97137 ZmListController.prototype._setView=function(a){\r
97138 var e=a.view;\r
97139 if(!this._appViews[e]){\r
97140 var t={};\r
97141 t[ZmAppViewMgr.CB_PRE_HIDE]=this._preHideCallback?new AjxCallback(this,this._preHideCallback):null;\r
97142 t[ZmAppViewMgr.CB_PRE_UNLOAD]=this._preUnloadCallback?new AjxCallback(this,this._preUnloadCallback):null;\r
97143 t[ZmAppViewMgr.CB_POST_HIDE]=this._postHideCallback?new AjxCallback(this,this._postHideCallback):null;\r
97144 t[ZmAppViewMgr.CB_PRE_SHOW]=this._preShowCallback?new AjxCallback(this,this._preShowCallback):null;\r
97145 t[ZmAppViewMgr.CB_POST_SHOW]=this._postShowCallback?new AjxCallback(this,this._postShowCallback):null;\r
97146 a.callbacks=t;\r
97147 a.viewId=e;\r
97148 this._app.createView(a);\r
97149 this._appViews[e]=1\r
97150 }\r
97151 if(!a.pushOnly){\r
97152 this._setViewContents(e)\r
97153 }\r
97154 if(a.stageView){\r
97155 this._app.stageView(e)\r
97156 }else{\r
97157 return(a.clear?this._app.setView(e):this._app.pushView(e))\r
97158 }};\r
97159 ZmListController.prototype._listSelectionListener=function(e){\r
97160 if(e.field==ZmItem.F_FLAG){\r
97161 this._doFlag([e.item])\r
97162 }else{\r
97163 var t=this._listView[this._currentView];\r
97164 if(appCtxt.get(ZmSetting.SHOW_SELECTION_CHECKBOX)){\r
97165 if(!e.ctrlKey){\r
97166 t.setSelectionHdrCbox(false)\r
97167 }}\r
97168 this._resetOperations(this._toolbar[this._currentView],t.getSelectionCount())\r
97169 }};\r
97170 ZmListController.prototype._listActionListener=function(e){\r
97171 this._actionEv=e;\r
97172 var t=this.getActionMenu();\r
97173 if(appCtxt.get(ZmSetting.TAGGING_ENABLED)){\r
97174 this._setTagMenu(t)\r
97175 }\r
97176 this._resetOperations(t,this._listView[this._currentView].getSelectionCount())\r
97177 };\r
97178 ZmListController.prototype._menuPopdownActionListener=function(){\r
97179 if(!this._pendingActionData){\r
97180 this._listView[this._currentView].handleActionPopdown()\r
97181 }};\r
97182 ZmListController.prototype._newListener=function(e,o,a){\r
97183 if(!e&&!o){\r
97184 return\r
97185 }\r
97186 o=o||e.item.getData(ZmOperation.KEY_ID);\r
97187 if(!o||o==ZmOperation.NEW_MENU){\r
97188 o=this._defaultNewId\r
97189 }\r
97190 var t=ZmApp.OPS_R[o];\r
97191 if(t){\r
97192 a=a||{};\r
97193 a.ev=e;\r
97194 appCtxt.getApp(t).handleOp(o,a)\r
97195 }else{\r
97196 ZmController.prototype._newListener.call(this,e,o)\r
97197 }};\r
97198 ZmListController.prototype._tagButtonListener=function(t){\r
97199 var e=this._toolbar[this._currentView];\r
97200 if(t.item.parent==e){\r
97201 this._setTagMenu(e)\r
97202 }};\r
97203 ZmListController.prototype._tagListener=function(t){\r
97204 if(appCtxt.getAppViewMgr().getCurrentViewId()==this._getViewType()){\r
97205 var n=t.getData(ZmTagMenu.KEY_TAG_EVENT);\r
97206 var o=t.getData(ZmTagMenu.KEY_TAG_ADDED);\r
97207 var e=this._listView[this._currentView].getSelection();\r
97208 if(n==ZmEvent.E_TAGS&&o){\r
97209 this._doTag(e,t.getData(Dwt.KEY_OBJECT),true)\r
97210 }else{\r
97211 if(n==ZmEvent.E_CREATE){\r
97212 this._pendingActionData=e;\r
97213 var a=appCtxt.getNewTagDialog();\r
97214 if(!this._newTagCb){\r
97215 this._newTagCb=new AjxCallback(this,this._newTagCallback)\r
97216 }\r
97217 ZmController.showDialog(a,this._newTagCb);\r
97218 a.registerCallback(DwtDialog.CANCEL_BUTTON,this._clearDialog,this,a)\r
97219 }else{\r
97220 if(n==ZmEvent.E_TAGS&&!o){\r
97221 this._doTag(e,t.getData(Dwt.KEY_OBJECT),false)\r
97222 }else{\r
97223 if(n==ZmEvent.E_REMOVE_ALL){\r
97224 this._doRemoveAllTags(e)\r
97225 }}}}}};\r
97226 ZmListController.prototype._tagSelectionCallback=function(t,a,e){\r
97227 if(e){\r
97228 this._doTag(t,e,true)\r
97229 }\r
97230 a.popdown()\r
97231 };\r
97232 ZmListController.prototype._printListener=function(o){\r
97233 var e=this._listView[this._currentView];\r
97234 var t=e.getSelection();\r
97235 var a=(t instanceof Array)?t[0]:t;\r
97236 window.open(a.getRestUrl(),"_blank")\r
97237 };\r
97238 ZmListController.prototype._backListener=function(e){\r
97239 this._app.popView()\r
97240 };\r
97241 ZmListController.prototype._deleteListener=function(e){\r
97242 this._doDelete(this._listView[this._currentView].getSelection())\r
97243 };\r
97244 ZmListController.prototype._moveListener=function(e,a){\r
97245 this._pendingActionData=a||(this._listView[this._currentView].getSelection());\r
97246 var t=appCtxt.getChooseFolderDialog();\r
97247 if(!this._moveCb){\r
97248 this._moveCb=new AjxCallback(this,this._moveCallback)\r
97249 }\r
97250 ZmController.showDialog(t,this._moveCb,this._getMoveParams(t));\r
97251 t.registerCallback(DwtDialog.CANCEL_BUTTON,this._clearDialog,this,t)\r
97252 };\r
97253 ZmListController.prototype._getMoveParams=function(e){\r
97254 var t=ZmApp.ORGANIZER[this._app._name]||ZmOrganizer.FOLDER;\r
97255 return{\r
97256 overviewId:e.getOverviewId(this._app._name),data:this._pendingActionData,treeIds:[t],title:this._getMoveDialogTitle(this._pendingActionData.length),description:ZmMsg.targetFolder,treeStyle:DwtTree.SINGLE_STYLE,appName:this._app._name}\r
97257 };\r
97258 ZmListController.prototype._viewMenuItemListener=function(e){\r
97259 if(e.detail==DwtMenuItem.CHECKED||e.detail==DwtMenuItem.UNCHECKED){\r
97260 this.switchView(e.item.getData(ZmOperation.MENUITEM_ID))\r
97261 }};\r
97262 ZmListController.prototype._navBarListener=function(e){\r
97263 if(appCtxt.getAppViewMgr().getCurrentViewId()!=this._getViewType()){\r
97264 return\r
97265 }\r
97266 var t=e.item.getData(ZmOperation.KEY_ID);\r
97267 if(t==ZmOperation.PAGE_BACK||t==ZmOperation.PAGE_FORWARD){\r
97268 this._paginate(this._currentView,(t==ZmOperation.PAGE_FORWARD))\r
97269 }};\r
97270 ZmListController.prototype._participantSearchListener=function(t){\r
97271 var e=this._actionEv.address.getAddress();\r
97272 appCtxt.getSearchController().fromSearch(e)\r
97273 };\r
97274 ZmListController.prototype._participantBrowseListener=function(t){\r
97275 var e=this._actionEv.address.getAddress();\r
97276 appCtxt.getSearchController().fromBrowse(e)\r
97277 };\r
97278 ZmListController.prototype._participantComposeListener=function(t){\r
97279 var e=this._actionEv.address.toString(AjxEmailAddress.SEPARATOR)+AjxEmailAddress.SEPARATOR;\r
97280 AjxDispatcher.run("Compose",{\r
97281 action:ZmOperation.NEW_MESSAGE,inNewWindow:this._app._inNewWindow(t),toOverride:e}\r
97282 )\r
97283 };\r
97284 ZmListController.prototype._participantContactListener=function(t){\r
97285 var e=new AjxCallback(this,this._handleLoadParticipantContactListener);\r
97286 AjxDispatcher.require(["ContactsCore","Contacts"],false,e,null,true)\r
97287 };\r
97288 ZmListController.prototype._handleLoadParticipantContactListener=function(){\r
97289 var a=AjxDispatcher.run("GetContactController");\r
97290 if(this._actionEv.contact){\r
97291 if(this._actionEv.contact.isLoaded){\r
97292 a.show(this._actionEv.contact)\r
97293 }else{\r
97294 var t=new AjxCallback(this,this._loadContactCallback);\r
97295 this._actionEv.contact.load(t)\r
97296 }}else{\r
97297 var e=this._createNewContact(this._actionEv);\r
97298 a.show(e,true)\r
97299 }};\r
97300 ZmListController.prototype._createNewContact=function(t){\r
97301 var e=new ZmContact(null);\r
97302 e.initFromEmail(t.address);\r
97303 return e\r
97304 };\r
97305 ZmListController.prototype._loadContactCallback=function(t,e){\r
97306 AjxDispatcher.run("GetContactController").show(e)\r
97307 };\r
97308 ZmListController.prototype._dragListener=function(e){\r
97309 if(e.action==DwtDragEvent.SET_DATA){\r
97310 e.srcData={\r
97311 data:e.srcControl.getDnDSelection(),controller:this}\r
97312 }};\r
97313 ZmListController.prototype._dropListener=function(n){\r
97314 var e=this._listView[this._currentView];\r
97315 var h=e.getTargetItemDiv(n.uiEvent);\r
97316 var o=e.getItemFromElement(h);\r
97317 var r=n.srcData.data;\r
97318 if(n.action==DwtDropEvent.DRAG_ENTER){\r
97319 n.doIt=(o&&(o instanceof ZmItem)&&!o.isShared()&&this._dropTgt.isValidTarget(r));\r
97320 e.dragSelect(h)\r
97321 }else{\r
97322 if(n.action==DwtDropEvent.DRAG_DROP){\r
97323 e.dragDeselect(h);\r
97324 var t=[o];\r
97325 var s=e.getSelection();\r
97326 if(s.length){\r
97327 var a=AjxVector.fromArray(s);\r
97328 if(a.contains(o)){\r
97329 t=s\r
97330 }}\r
97331 this._doTag(t,r,true)\r
97332 }else{\r
97333 if(n.action==DwtDropEvent.DRAG_LEAVE){\r
97334 e.dragDeselect(h)\r
97335 }else{\r
97336 if(n.action==DwtDropEvent.DRAG_OP_CHANGED){}}}}};\r
97337 ZmListController.prototype._tagChangeListener=function(t){\r
97338 if(appCtxt.getAppViewMgr().getCurrentViewId()==this._getViewType()){\r
97339 if(t.type==ZmEvent.S_TAG&&t.event==ZmEvent.E_CREATE&&this._pendingActionData){\r
97340 var e=t.getDetail("organizers")[0];\r
97341 this._doTag(this._pendingActionData,e,true);\r
97342 this._pendingActionData=null;\r
97343 this._menuPopdownActionListener()\r
97344 }}};\r
97345 ZmListController.prototype._moveCallback=function(e){\r
97346 this._doMove(this._pendingActionData,e);\r
97347 this._clearDialog(appCtxt.getChooseFolderDialog());\r
97348 this._pendingActionData=null\r
97349 };\r
97350 ZmListController.prototype._doFlag=function(a,t){\r
97351 a=AjxUtil.toArray(a);\r
97352 if(!a.length){\r
97353 return\r
97354 }\r
97355 if(t!==true&&t!==false){\r
97356 t=!a[0].isFlagged\r
97357 }\r
97358 var e=[];\r
97359 for(var o=0;\r
97360 o<a.length;\r
97361 o++){\r
97362 if(a[o].isFlagged!=t){\r
97363 e.push(a[o])\r
97364 }}\r
97365 var s={\r
97366 items:e,op:"flag",value:t};\r
97367 var n=this._setupContinuation(this._doFlag,[t],s);\r
97368 n.flagItems(s)\r
97369 };\r
97370 ZmListController.prototype._doTag=function(t,e,n){\r
97371 t=AjxUtil.toArray(t);\r
97372 if(!t.length){\r
97373 return\r
97374 }\r
97375 var o={\r
97376 items:t,tagId:e.id,doTag:n};\r
97377 var a=this._setupContinuation(this._doTag,[e,n],o);\r
97378 a.tagItems(o)\r
97379 };\r
97380 ZmListController.prototype._doRemoveAllTags=function(e){\r
97381 e=AjxUtil.toArray(e);\r
97382 if(!e.length){\r
97383 return\r
97384 }\r
97385 var a={\r
97386 items:e};\r
97387 var t=this._setupContinuation(this._doRemoveAllTags,null,a);\r
97388 t.removeAllTags(a)\r
97389 };\r
97390 ZmListController.prototype._doDelete=function(t,e,a){\r
97391 t=AjxUtil.toArray(t);\r
97392 if(!t.length){\r
97393 return\r
97394 }\r
97395 var s={\r
97396 items:t,hardDelete:e,attrs:a,childWin:appCtxt.isChildWindow&&window};\r
97397 var n=new AjxCallback(this,this._checkItemCount);\r
97398 var o=this._setupContinuation(this._doDelete,[e,a],s,n);\r
97399 o.deleteItems(s)\r
97400 };\r
97401 ZmListController.prototype._doMove=function(h,t,l,s){\r
97402 h=AjxUtil.toArray(h);\r
97403 if(!h.length){\r
97404 return\r
97405 }\r
97406 var a=[];\r
97407 var e=[];\r
97408 for(var n=0;\r
97409 n<h.length;\r
97410 n++){\r
97411 var c=h[n];\r
97412 if(!c.folderId||c.folderId!=t.id){\r
97413 if(!this._isItemMovable(c,s,t)){\r
97414 e.push(c)\r
97415 }else{\r
97416 a.push(c)\r
97417 }}}\r
97418 var o={\r
97419 folder:t,attrs:l};\r
97420 var d=new AjxCallback(this,this._checkItemCount);\r
97421 if(a.length){\r
97422 o.items=a;\r
97423 var r=this._setupContinuation(this._doMove,[t,l,s],o,d);\r
97424 r.moveItems(o)\r
97425 }\r
97426 if(e.length){\r
97427 o.items=e;\r
97428 var r=this._setupContinuation(this._doMove,[t,l,s],o,d);\r
97429 r.copyItems(o)\r
97430 }};\r
97431 ZmListController.prototype._isItemMovable=function(a,e,t){\r
97432 return(!e&&!a.isReadOnly()&&!t.isReadOnly())\r
97433 };\r
97434 ZmListController.prototype._doModify=function(t,e){\r
97435 var a=t.list||this._list;\r
97436 a.modifyItem(t,e)\r
97437 };\r
97438 ZmListController.prototype._doCreate=function(t,e){\r
97439 t.create(e)\r
97440 };\r
97441 ZmListController.prototype._propagateMenuListeners=function(n,h,s){\r
97442 if(!n){\r
97443 return\r
97444 }\r
97445 s=s||this._listeners[h];\r
97446 var o=n.getOp(h);\r
97447 if(o){\r
97448 var r=o.getMenu();\r
97449 var e=r.getItems();\r
97450 var a=r.getItemCount();\r
97451 for(var t=0;\r
97452 t<a;\r
97453 t++){\r
97454 e[t].addSelectionListener(s)\r
97455 }}};\r
97456 ZmListController.prototype._setupTagMenu=function(t){\r
97457 if(!t){\r
97458 return\r
97459 }\r
97460 var a=t.getTagMenu();\r
97461 if(a){\r
97462 a.addSelectionListener(this._listeners[ZmOperation.TAG])\r
97463 }\r
97464 if(t instanceof ZmButtonToolBar){\r
97465 var e=t.getOp(ZmOperation.TAG_MENU);\r
97466 if(e){\r
97467 e.addDropDownSelectionListener(this._listeners[ZmOperation.TAG_MENU])\r
97468 }}};\r
97469 ZmListController.prototype._setTagMenu=function(o){\r
97470 if(!o){\r
97471 return\r
97472 }\r
97473 var a=o.getOp(ZmOperation.TAG_MENU);\r
97474 if(a){\r
97475 var n=o.getTagMenu();\r
97476 var t=this._listView[this._currentView].getSelection();\r
97477 t=AjxUtil.toArray(t);\r
97478 n.set(t,appCtxt.getTagTree());\r
97479 if(o instanceof ZmActionMenu){\r
97480 a.setText(this._getTagMenuMsg(t.length))\r
97481 }else{\r
97482 n.parent.popup();\r
97483 if(appCtxt.isChildWindow){\r
97484 var e=n.getMenuItem(ZmTagMenu.MENU_ITEM_ADD_ID);\r
97485 if(e){\r
97486 e.setVisible(false)\r
97487 }}}}};\r
97488 ZmListController.prototype._setNewButtonProps=function(e,a,s,n,t){\r
97489 var o=this._toolbar[e].getButton(ZmOperation.NEW_MENU);\r
97490 if(o){\r
97491 o.setToolTipContent(a);\r
97492 o.setImage(s);\r
97493 this._defaultNewId=t\r
97494 }};\r
97495 ZmListController.prototype._setContactText=function(t){\r
97496 var e=t?ZmOperation.EDIT_CONTACT:ZmOperation.NEW_CONTACT;\r
97497 var a=t?null:ZmMsg.AB_ADD_CONTACT;\r
97498 ZmOperation.setOperation(this._toolbar[this._currentView],ZmOperation.CONTACT,e,ZmMsg.AB_ADD_CONTACT);\r
97499 ZmOperation.setOperation(this.getActionMenu(),ZmOperation.CONTACT,e,a)\r
97500 };\r
97501 ZmListController.prototype._resetOperations=function(a,t){\r
97502 if(!a){\r
97503 return\r
97504 }\r
97505 if(t==0){\r
97506 a.enableAll(false);\r
97507 a.enable(ZmOperation.NEW_MENU,true)\r
97508 }else{\r
97509 if(t==1){\r
97510 a.enableAll(true)\r
97511 }else{\r
97512 if(t>1){\r
97513 a.enableAll(false);\r
97514 a.enable([ZmOperation.NEW_MENU,ZmOperation.TAG_MENU,ZmOperation.DELETE,ZmOperation.MOVE,ZmOperation.FORWARD],true)\r
97515 }}}\r
97516 var e=(t>0)&&this._getSearchFolderId();\r
97517 var o=e&&appCtxt.getById(e);\r
97518 if(o&&o.isRemote()){\r
97519 a.enable(ZmOperation.TAG_MENU,false)\r
97520 }};\r
97521 ZmListController.prototype._resetToolbarOperations=function(){\r
97522 this._resetOperations(this._toolbar[this._currentView],this._listView[this._currentView].getSelectionCount())\r
97523 };\r
97524 ZmListController.prototype._getSearchFolderId=function(){\r
97525 return(this._activeSearch&&this._activeSearch.search)?this._activeSearch.search.folderId:null\r
97526 };\r
97527 ZmListController.prototype._cacheList=function(e,a){\r
97528 if(this._list){\r
97529 var t=e.getResults().getVector();\r
97530 a=a?a:parseInt(e.getAttribute("offset"));\r
97531 this._list.cache(a,t)\r
97532 }else{\r
97533 this._list=e.getResults(type)\r
97534 }};\r
97535 ZmListController.prototype._search=function(r,n,o,h,e,t,s){\r
97536 var a={\r
97537 query:this.getSearchString(),queryHint:this.getSearchStringHint(),types:((this._activeSearch&&this._activeSearch.search)?this._activeSearch.search.types:[]),sortBy:appCtxt.get(ZmSetting.SORTING_PREF,r),offset:n,limit:o,lastId:t,lastSortVal:s};\r
97538 this._getMoreSearchParams(a);\r
97539 var l=new ZmSearch(a);\r
97540 if(e){\r
97541 this._currentSearch=l\r
97542 }\r
97543 appCtxt.getSearchController().redoSearch(l,true,null,h)\r
97544 };\r
97545 ZmListController.prototype._paginate=function(c,r,s,o){\r
97546 var a=false;\r
97547 var t=this._listView[c];\r
97548 var n,d;\r
97549 if(t._isPageless){\r
97550 n=this._list.size();\r
97551 a=true\r
97552 }else{\r
97553 n=t.getNewOffset(r);\r
97554 a=(n+o>this._list.size());\r
97555 this.currentPage=this.currentPage+(r?1:-1);\r
97556 this.maxPage=Math.max(this.maxPage,this.currentPage)\r
97557 }\r
97558 o=o||t.getLimit(n);\r
97559 if(a&&this._list.hasMore()){\r
97560 t.offset=n;\r
97561 if(t._isPageless){\r
97562 d=o\r
97563 }else{\r
97564 var m=(n+o)-this._list.size();\r
97565 d=m<o&&m>0?m:o;\r
97566 if(d<o){\r
97567 n=((n+o)-d)+1\r
97568 }}\r
97569 if(this._searchPending){\r
97570 return false\r
97571 }\r
97572 var l=t.getList();\r
97573 var u=l&&l.getLast();\r
97574 var h=(u&&u.id)?u.sf:null;\r
97575 var e=h?u.id:null;\r
97576 this._setItemCountText(ZmMsg.loading);\r
97577 this._searchPending=true;\r
97578 var f=new AjxCallback(this,this._handleResponsePaginate,[c,false,s,n]);\r
97579 this._search(c,n,d,f,true,e,h);\r
97580 return false\r
97581 }else{\r
97582 if(!t._isPageless){\r
97583 t.offset=n;\r
97584 this._resetOperations(this._toolbar[c],0);\r
97585 this._resetNavToolBarButtons(c);\r
97586 this._setViewContents(c);\r
97587 this._resetSelection();\r
97588 return true\r
97589 }}};\r
97590 ZmListController.prototype._handleResponsePaginate=function(l,o,r,s,c,e){\r
97591 var h=c.getResponse();\r
97592 this._list.setHasMore(h.getAttribute("more"));\r
97593 this._cacheList(h,s);\r
97594 this._resetOperations(this._toolbar[l],0);\r
97595 var a=this._listView[this._currentView];\r
97596 var t=o?a.getSelection()[0]:null;\r
97597 var n=t?a.getItemIndex(t):-1;\r
97598 if(a._isPageless){\r
97599 a._itemsToAdd=h&&h.getResults().getArray()\r
97600 }\r
97601 this._setViewContents(l);\r
97602 this._resetNavToolBarButtons(l);\r
97603 if(!e&&!a._isPageless){\r
97604 this._resetSelection(n)\r
97605 }\r
97606 appCtxt.getAppController().focusContentPane();\r
97607 this._searchPending=false\r
97608 };\r
97609 ZmListController.prototype._getMoreSearchParams=function(e){};\r
97610 ZmListController.prototype._checkReplenish=function(n){\r
97611 var e=this._listView[this._currentView];\r
97612 var o=e.getList();\r
97613 var t=false;\r
97614 if(o){\r
97615 var a=e.getLimit()-e.size();\r
97616 if(a>e.getReplenishThreshold()){\r
97617 this._replenishList(this._currentView,a,n);\r
97618 t=true\r
97619 }}\r
97620 if(n&&!t){\r
97621 n.run()\r
97622 }};\r
97623 ZmListController.prototype._handleEmptyList=function(e){\r
97624 if(this.currentPage>1){\r
97625 this._paginate(this._currentView,false,0)\r
97626 }else{\r
97627 e.removeAll(true);\r
97628 e._setNoResultsHtml();\r
97629 this._resetNavToolBarButtons(this._currentView)\r
97630 }};\r
97631 ZmListController.prototype._replenishList=function(r,a,h){\r
97632 var t=this._listView[r].offset+this._listView[r].size();\r
97633 var l=this._list.size();\r
97634 if(t<l){\r
97635 var s=(s>l)?l:(t+a);\r
97636 var n=this._list.getVector().getArray();\r
97637 var o=n.slice(t,s);\r
97638 var e=AjxVector.fromArray(o);\r
97639 this._listView[r].replenish(e);\r
97640 if(h){\r
97641 h.run()\r
97642 }}else{\r
97643 this._getMoreToReplenish(r,a,h)\r
97644 }};\r
97645 ZmListController.prototype._resetSelection=function(t){\r
97646 var a=this._listView[this._currentView].getList();\r
97647 if(a){\r
97648 var e=t>=0?t:0;\r
97649 var o=a.get(e);\r
97650 this._listView[this._currentView].setSelection(o,false)\r
97651 }};\r
97652 ZmListController.prototype._getMoreToReplenish=function(t,n,h){\r
97653 if(this._list.hasMore()){\r
97654 var o=this._listView[t].getList();\r
97655 var a=o.getLast();\r
97656 var e=(a&&a.id)?a.sf:null;\r
97657 var s=e?a.id:null;\r
97658 var r=new AjxCallback(this,this._handleResponseGetMoreToReplenish,[t,h]);\r
97659 this._search(t,this._list.size(),n,r,false,s,e)\r
97660 }else{\r
97661 if(h){\r
97662 h.run()\r
97663 }}};\r
97664 ZmListController.prototype._handleResponseGetMoreToReplenish=function(a,s,t){\r
97665 var e=t.getResponse();\r
97666 var o=e.getAttribute("more");\r
97667 this._list.setHasMore(o);\r
97668 this._cacheList(e);\r
97669 var n=e.getResults().getVector();\r
97670 this._listView[a].replenish(n);\r
97671 this._toolbar[a].enable(ZmOperation.PAGE_FORWARD,o);\r
97672 if(s){\r
97673 s.run(t)\r
97674 }};\r
97675 ZmListController.prototype._initializeNavToolBar=function(t){\r
97676 var e=new ZmNavToolBar({\r
97677 parent:this._toolbar[t],context:t}\r
97678 );\r
97679 this._setNavToolBar(e,t)\r
97680 };\r
97681 ZmListController.prototype._setNavToolBar=function(t,e){\r
97682 this._navToolBar[e]=t;\r
97683 if(this._navToolBar[e]){\r
97684 var a=new AjxListener(this,this._navBarListener);\r
97685 this._navToolBar[e].addSelectionListener(ZmOperation.PAGE_BACK,a);\r
97686 this._navToolBar[e].addSelectionListener(ZmOperation.PAGE_FORWARD,a)\r
97687 }};\r
97688 ZmListController.prototype._resetNavToolBarButtons=function(e){\r
97689 var t=this._listView[e];\r
97690 if(t._isPageless){\r
97691 this._setItemCountText()\r
97692 }\r
97693 if(!this._navToolBar[e]){\r
97694 return\r
97695 }\r
97696 this._navToolBar[e].enable(ZmOperation.PAGE_BACK,t.offset>0);\r
97697 var a=false;\r
97698 if(this._list){\r
97699 a=this._list.hasMore();\r
97700 if(!a&&((t.offset+t.getLimit())<this._list.size())){\r
97701 a=true\r
97702 }}\r
97703 this._navToolBar[e].enable(ZmOperation.PAGE_FORWARD,a);\r
97704 this._navToolBar[e].setText(this._getNavText(e))\r
97705 };\r
97706 ZmListController.prototype.enablePagination=function(t,e){\r
97707 if(!this._navToolBar[e]){\r
97708 return\r
97709 }\r
97710 if(t){\r
97711 this._resetNavToolBarButtons(e)\r
97712 }else{\r
97713 this._navToolBar[e].enable([ZmOperation.PAGE_BACK,ZmOperation.PAGE_FORWARD],false)\r
97714 }};\r
97715 ZmListController.prototype._getNavText=function(e){\r
97716 var o=this._getNavStartEnd(e);\r
97717 if(!o){\r
97718 return""\r
97719 }\r
97720 var a=this._getNumTotal();\r
97721 var t=a?ZmMsg.navText2:ZmMsg.navText1;\r
97722 return AjxMessageFormat.format(t,[o.start,o.end,a])\r
97723 };\r
97724 ZmListController.prototype._getNavStartEnd=function(a){\r
97725 var n=this._listView[a];\r
97726 var t=n.getLimit();\r
97727 var o=this._list?this._list.size():0;\r
97728 var s,e;\r
97729 if(o>0){\r
97730 s=n.offset+1;\r
97731 e=Math.min(n.offset+t,o)\r
97732 }\r
97733 return(s&&e)?{\r
97734 start:s,end:e}\r
97735 :null\r
97736 };\r
97737 ZmListController.prototype._getNumTotal=function(){\r
97738 var e=this._getSearchFolderId();\r
97739 if(e&&(e!=ZmFolder.ID_TRASH)){\r
97740 var t=appCtxt.getById(e);\r
97741 if(t){\r
97742 return t.numTotal\r
97743 }}\r
97744 return null\r
97745 };\r
97746 ZmListController._newDropDownListener=function(o){\r
97747 var a=this;\r
97748 var e=a._ZmListController_this;\r
97749 e._propagateMenuListeners(a,ZmOperation.NEW_MENU);\r
97750 var t=a.getButton(ZmOperation.NEW_MENU);\r
97751 var n=a._ZmListController_newDropDownListener;\r
97752 t.removeDropDownSelectionListener(n);\r
97753 t.popup();\r
97754 delete a._ZmListController_this;\r
97755 delete a._ZmListController_newDropDownListener\r
97756 };\r
97757 ZmListController.prototype._getDefaultFocusItem=function(){\r
97758 return this._listView[this._currentView]\r
97759 };\r
97760 ZmListController.prototype.getActionMenu=function(){\r
97761 if(!this._actionMenu){\r
97762 this._initializeActionMenu();\r
97763 this._resetOperations(this._actionMenu,0)\r
97764 }\r
97765 return this._actionMenu\r
97766 };\r
97767 ZmListController.prototype._getMenuContext=function(){\r
97768 return this._app&&this._app._name\r
97769 };\r
97770 ZmListController.prototype._getItemCountText=function(){\r
97771 var h=this._listView[this._currentView];\r
97772 var s=h&&h._list;\r
97773 if(!s){\r
97774 return""\r
97775 }\r
97776 var a=h&&h.type;\r
97777 var t=s.size();\r
97778 var n=this._getNumTotal();\r
97779 var e=n||t;\r
97780 var o=!a?"items":(e==1)?ZmItem.MSG_KEY[a]:ZmItem.PLURAL_MSG_KEY[a];\r
97781 if(n){\r
97782 return AjxMessageFormat.format(ZmMsg.itemCount1,[t,n,ZmMsg[o]])\r
97783 }else{\r
97784 var r=s.size()+(this._list.hasMore()?"+":"");\r
97785 return AjxMessageFormat.format(ZmMsg.itemCount,[r,ZmMsg[o]])\r
97786 }};\r
97787 ZmListController.prototype._setItemCountText=function(t){\r
97788 t=t||this._getItemCountText();\r
97789 var e=this._itemCountText[this._currentView];\r
97790 if(e){\r
97791 e.setText(t)\r
97792 }};\r
97793 ZmListController.prototype._setupContinuation=function(o,a,r,s){\r
97794 var e=new AjxCallback(this,o,a);\r
97795 r.finalCallback=new AjxCallback(this,this._continueAction,{\r
97796 actionCallback:e,allDoneCallback:s}\r
97797 );\r
97798 r.count=this._continuation.count;\r
97799 var t=r.items;\r
97800 var n=(t&&(t instanceof Array)&&t.length&&t[0].list)||this._list;\r
97801 if(!this._continuation.lastItem){\r
97802 this._continuation.lastItem=n.getVector().getLast();\r
97803 this._continuation.totalItems=n.size()\r
97804 }\r
97805 return n\r
97806 };\r
97807 ZmListController.prototype._continueAction=function(o,t){\r
97808 var a=this._listView[this._currentView];\r
97809 var r=t&&t.cancelled;\r
97810 var p=this._continuation.result;\r
97811 var e=p?p.getAttribute("more"):this._list.hasMore();\r
97812 if(a.allSelected&&e&&!r){\r
97813 var h=this._currentSearch;\r
97814 var n=ZmListController.CONTINUATION_SEARCH_ITEMS;\r
97815 var u={\r
97816 query:this.getSearchString(),queryHint:this.getSearchStringHint(),types:h.types,sortBy:h.sortBy,limit:n};\r
97817 var l=p?p.getResults().getArray():this._list.getArray();\r
97818 var d=this._continuation.lastItem;\r
97819 if(!d){\r
97820 d=l&&l[l.length-1]\r
97821 }\r
97822 if(d){\r
97823 u.lastId=d.id;\r
97824 u.lastSortVal=d.sf\r
97825 }else{\r
97826 u.offset=n+(this._continuation.search?this._continuation.search.offset:0)\r
97827 }\r
97828 this._continuation.count=t.numItems;\r
97829 if(!this._continuation.totalItems){\r
97830 this._continuation.totalItems=l.length\r
97831 }\r
97832 this._continuation.search=new ZmSearch(u);\r
97833 var f=new AjxCallback(this,this._handleResponseContinueAction,[o.actionCallback]);\r
97834 appCtxt.getSearchController().redoSearch(this._continuation.search,true,null,f)\r
97835 }else{\r
97836 if(p){\r
97837 if(a.allSelected){\r
97838 var s=ZmItem.PLURAL_MSG_KEY[p.type]||"items";\r
97839 var m=AjxMessageFormat.format(ZmMsg.itemsProcessed,[this._continuation.totalItems,ZmMsg[s]]);\r
97840 appCtxt.setStatusMsg(m);\r
97841 a.deselectAll()\r
97842 }\r
97843 this._continuation={\r
97844 count:0,totalItems:0}\r
97845 }\r
97846 var c=ZmList.progressDialog;\r
97847 if(c){\r
97848 c.popdown();\r
97849 ZmList.progressDialog=null\r
97850 }\r
97851 if(o.allDoneCallback){\r
97852 o.allDoneCallback.run()\r
97853 }}};\r
97854 ZmListController.prototype._handleResponseContinueAction=function(t,e){\r
97855 this._continuation.result=e.getResponse();\r
97856 var a=this._continuation.result.getResults().getArray();\r
97857 if(a.length){\r
97858 this._continuation.lastItem=a[a.length-1];\r
97859 this._continuation.totalItems+=a.length;\r
97860 t.args=t.args||[];\r
97861 t.args.unshift(a);\r
97862 t.run()\r
97863 }};\r
97864 ZmListController.prototype._checkItemCount=function(){\r
97865 var e=this._listView[this._currentView];\r
97866 e._checkItemCount();\r
97867 e._handleResponseCheckReplenish()\r
97868 }\r
97869 }\r
97870 if(AjxPackage.define("zimbraMail.share.controller.ZmTreeController")){\r
97871 ZmTreeController=function(e){\r
97872 if(arguments.length==0){\r
97873 return\r
97874 }\r
97875 ZmController.call(this,null);\r
97876 this.type=e;\r
97877 this._opc=appCtxt.getOverviewController();\r
97878 this._listeners={};\r
97879 this._listeners[ZmOperation.DELETE]=new AjxListener(this,this._deleteListener);\r
97880 this._listeners[ZmOperation.MOVE]=new AjxListener(this,this._moveListener);\r
97881 this._listeners[ZmOperation.EXPAND_ALL]=new AjxListener(this,this._expandAllListener);\r
97882 this._listeners[ZmOperation.MARK_ALL_READ]=new AjxListener(this,this._markAllReadListener);\r
97883 this._listeners[ZmOperation.SYNC]=new AjxListener(this,this._syncListener);\r
97884 this._listeners[ZmOperation.SYNC_ALL]=new AjxListener(this,this._syncAllListener);\r
97885 this._listeners[ZmOperation.EDIT_PROPS]=new AjxListener(this,this._editPropsListener);\r
97886 this._listeners[ZmOperation.EMPTY_FOLDER]=new AjxListener(this,this._emptyListener);\r
97887 this._dragSrc=new DwtDragSource(Dwt.DND_DROP_MOVE);\r
97888 this._dragSrc.addDragListener(new AjxListener(this,this._dragListener));\r
97889 this._dropTgt=new DwtDropTarget(ZmTreeController.DROP_SOURCES[e]);\r
97890 this._dropTgt.addDropListener(new AjxListener(this,this._dropListener));\r
97891 this._treeView={};\r
97892 this._hideEmpty={};\r
97893 this._dataTree={}\r
97894 };\r
97895 ZmTreeController.prototype=new ZmController;\r
97896 ZmTreeController.prototype.constructor=ZmTreeController;\r
97897 ZmTreeController.COLOR_CLASS={};\r
97898 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_ORANGE]="OrangeBg";\r
97899 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_BLUE]="BlueBg";\r
97900 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_CYAN]="CyanBg";\r
97901 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_GREEN]="GreenBg";\r
97902 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_PURPLE]="PurpleBg";\r
97903 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_RED]="RedBg";\r
97904 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_YELLOW]="YellowBg";\r
97905 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_PINK]="PinkBg";\r
97906 ZmTreeController.COLOR_CLASS[ZmOrganizer.C_GRAY]="Gray";\r
97907 ZmTreeController.TREE_SELECTION_SHORTCUT_DELAY=750;\r
97908 ZmTreeController.DROP_SOURCES={};\r
97909 ZmTreeController.prototype.resetOperations=function(){};\r
97910 ZmTreeController.prototype._getHeaderActionMenuOps=function(){};\r
97911 ZmTreeController.prototype._getActionMenuOps=function(){};\r
97912 ZmTreeController.prototype._getNewDialog=function(){};\r
97913 ZmTreeController.prototype._getRenameDialog=function(){};\r
97914 ZmTreeController.prototype._itemClicked=function(){};\r
97915 ZmTreeController.prototype._itemDblClicked=function(){};\r
97916 ZmTreeController.prototype._dropListener=function(){};\r
97917 ZmTreeController.prototype._getMoveDialogTitle=function(){};\r
97918 ZmTreeController.prototype._resetOperation=function(t,r,n,a,e,o){\r
97919 var s=t&&t.getOp(r);\r
97920 if(!s){\r
97921 return\r
97922 }\r
97923 if(n){\r
97924 s.setText(n)\r
97925 }\r
97926 if(a){\r
97927 s.setImage(a)\r
97928 }\r
97929 if(e!=null){\r
97930 s.setEnabled(e)\r
97931 }\r
97932 if(o!=null){\r
97933 s.setVisible(o)\r
97934 }};\r
97935 ZmTreeController.prototype._resetButtonPerSetting=function(a,o,t){\r
97936 var e=a.getOp(o);\r
97937 if(e){\r
97938 if(t){\r
97939 e.setVisible(true);\r
97940 if(appCtxt.isOffline&&!appCtxt.getActiveAccount().isZimbraAccount){\r
97941 e.setEnabled(false)\r
97942 }}else{\r
97943 e.setVisible(false)\r
97944 }}};\r
97945 ZmTreeController.prototype.toString=function(){\r
97946 return"ZmTreeController"\r
97947 };\r
97948 ZmTreeController.prototype.show=function(s){\r
97949 var r=s.overviewId;\r
97950 this._hideEmpty[r]=s.hideEmpty;\r
97951 if(!this._treeView[r]||s.forceCreate){\r
97952 this._treeViewCreated=false;\r
97953 this._treeView[r]=null;\r
97954 this._treeView[r]=this.getTreeView(r,true)\r
97955 }\r
97956 var e=(appCtxt.multiAccounts&&this.type==ZmOrganizer.ZIMLET);\r
97957 var a=e?appCtxt.accountList.mainAccount:(this.type==ZmOrganizer.VOICE?r:s.account);\r
97958 var o=this.getDataTree(a);\r
97959 if(o){\r
97960 s.dataTree=o;\r
97961 var t=ZmOrganizer.OPEN_SETTING[this.type];\r
97962 s.collapsed=(!e&&(!(!t||(appCtxt.get(t,null,a)!==false))));\r
97963 var n=this._opc.getOverview(r);\r
97964 if(n.showNewButtons){\r
97965 this._setupNewOp(s)\r
97966 }\r
97967 this._treeView[r].set(s);\r
97968 this._checkTreeView(r)\r
97969 }\r
97970 if(!this._treeViewCreated){\r
97971 this._treeViewCreated=true;\r
97972 this._postSetup(r,s.account)\r
97973 }\r
97974 return this._treeView[r]\r
97975 };\r
97976 ZmTreeController.prototype.getTreeView=function(t,e){\r
97977 if(e&&!this._treeView[t]){\r
97978 this._treeView[t]=this._setup(t)\r
97979 }\r
97980 return this._treeView[t]\r
97981 };\r
97982 ZmTreeController.prototype.clearTreeView=function(e){\r
97983 if(this._treeView[e]){\r
97984 this._treeView[e].dispose();\r
97985 delete this._treeView[e]\r
97986 }};\r
97987 ZmTreeController.prototype.getDropTarget=function(){\r
97988 return this._dropTgt\r
97989 };\r
97990 ZmTreeController.prototype.getDataTree=function(e){\r
97991 e=e||appCtxt.getActiveAccount();\r
97992 var t=this._dataTree[e.id];\r
97993 if(!t){\r
97994 t=this._dataTree[e.id]=appCtxt.getTree(this.type,e);\r
97995 if(t){\r
97996 t.addChangeListener(this._getTreeChangeListener())\r
97997 }}\r
97998 return t\r
97999 };\r
98000 ZmTreeController.prototype._setupNewOp=function(o){\r
98001 var a=ZmOrganizer.NEW_OP[this.type];\r
98002 if(a){\r
98003 var t=ZmOperation.SETTING[a];\r
98004 if(!t||appCtxt.get(t)){\r
98005 var e=ZmOperation.getProp(a,"tooltipKey");\r
98006 o.newButton={\r
98007 image:ZmOperation.getProp(a,"image"),tooltip:e?ZmMsg[e]:null,callback:new AjxCallback(this,this._newListener)}\r
98008 }}};\r
98009 ZmTreeController.prototype._getTreeChangeListener=function(){\r
98010 if(!this._dataChangeListener){\r
98011 this._dataChangeListener=new AjxListener(this,this._treeChangeListener)\r
98012 }\r
98013 return this._dataChangeListener\r
98014 };\r
98015 ZmTreeController.prototype._setup=function(t){\r
98016 var e=this._initializeTreeView(t);\r
98017 if(this._opc.getOverview(t).actionSupported){\r
98018 this._initializeActionMenus()\r
98019 }\r
98020 return e\r
98021 };\r
98022 ZmTreeController.prototype._postSetup=function(r,s){\r
98023 var a=this.getTreeView(r);\r
98024 if(!a.isCheckedStyle&&!ZmOrganizer.HAS_COLOR[this.type]){\r
98025 return\r
98026 }\r
98027 var t=ZmOrganizer.getSystemId(ZmOrganizer.ID_ROOT,s);\r
98028 var e=a.getTreeItemById(t);\r
98029 if(!e){\r
98030 return\r
98031 }\r
98032 if(a.isCheckedStyle){\r
98033 e.showCheckBox(false)\r
98034 }\r
98035 var n=e.getItems();\r
98036 for(var o=0;\r
98037 o<n.length;\r
98038 o++){\r
98039 this._fixupTreeNode(n[o],null,a)\r
98040 }};\r
98041 ZmTreeController.prototype._fixupTreeNode=function(n,e,t){\r
98042 if(n._isSeparator){\r
98043 return\r
98044 }\r
98045 e=e||n.getData(Dwt.KEY_OBJECT);\r
98046 if(e){\r
98047 if(ZmOrganizer.HAS_COLOR[this.type]){\r
98048 this._setTreeItemColor(n,e)\r
98049 }\r
98050 if(t.isCheckedStyle){\r
98051 if(e.type==this.type&&t.isCheckedStyle){\r
98052 n.setChecked(e.isChecked,true)\r
98053 }else{\r
98054 n.showCheckBox(false);\r
98055 n.enableSelection(true)\r
98056 }}}\r
98057 var o=n.getItems();\r
98058 for(var a=0;\r
98059 a<o.length;\r
98060 a++){\r
98061 this._fixupTreeNode(o[a],null,t)\r
98062 }};\r
98063 ZmTreeController.prototype._setTreeItemColor=function(t,e){\r
98064 t.setImage(e.getIconWithColor())\r
98065 };\r
98066 ZmTreeController.prototype._getTreeItemColorClassName=function(a,e){\r
98067 if(!a||!e){\r
98068 return null\r
98069 }\r
98070 if(e.isInTrash()){\r
98071 return null\r
98072 }\r
98073 var t=e.color?e.color:ZmOrganizer.DEFAULT_COLOR[e.type];\r
98074 return(t&&(t!=ZmOrganizer.C_NONE))?ZmTreeController.COLOR_CLASS[t]:""\r
98075 };\r
98076 ZmTreeController.prototype._initializeTreeView=function(o){\r
98077 var a=this._opc.getOverview(o);\r
98078 var t={\r
98079 parent:a,parentElement:a.getTreeParent(this.type),overviewId:o,type:this.type,headerClass:a.headerClass,dragSrc:(a.dndSupported?this._dragSrc:null),dropTgt:(a.dndSupported?this._dropTgt:null),treeStyle:a.treeStyle,isCheckedByDefault:a.isCheckedByDefault,allowedTypes:this._getAllowedTypes(),allowedSubTypes:this._getAllowedSubTypes()};\r
98080 t.id=ZmId.getTreeId(o,t.type);\r
98081 var e=this._createTreeView(t);\r
98082 e.addSelectionListener(new AjxListener(this,this._treeViewListener));\r
98083 e.addTreeListener(new AjxListener(this,this._treeListener));\r
98084 return e\r
98085 };\r
98086 ZmTreeController.prototype._createTreeView=function(e){\r
98087 return new ZmTreeView(e)\r
98088 };\r
98089 ZmTreeController.prototype._initializeActionMenus=function(){\r
98090 var o=this;\r
98091 var a=this._createActionMenu;\r
98092 var t=this._getHeaderActionMenuOps();\r
98093 if(!this._headerActionMenu&&t){\r
98094 var e=[this._shell,t];\r
98095 this._headerActionMenu=new AjxCallback(o,a,e)\r
98096 }\r
98097 var t=this._getActionMenuOps();\r
98098 if(!this._actionMenu&&t){\r
98099 var e=[this._shell,t];\r
98100 this._actionMenu=new AjxCallback(o,a,e)\r
98101 }};\r
98102 ZmTreeController.prototype._getHeaderActionMenu=function(e){\r
98103 if(this._headerActionMenu instanceof AjxCallback){\r
98104 var t=this._headerActionMenu;\r
98105 this._headerActionMenu=t.run()\r
98106 }\r
98107 return this._headerActionMenu\r
98108 };\r
98109 ZmTreeController.prototype._getActionMenu=function(e){\r
98110 if(this._actionMenu instanceof AjxCallback){\r
98111 var t=this._actionMenu;\r
98112 this._actionMenu=t.run()\r
98113 }\r
98114 return this._actionMenu\r
98115 };\r
98116 ZmTreeController.prototype._createActionMenu=function(o,t){\r
98117 if(!t){\r
98118 return\r
98119 }\r
98120 var n=new ZmActionMenu({\r
98121 parent:o,menuItems:t}\r
98122 );\r
98123 t=n.opList;\r
98124 for(var e=0;\r
98125 e<t.length;\r
98126 e++){\r
98127 var a=t[e];\r
98128 if(this._listeners[a]){\r
98129 n.addSelectionListener(a,this._listeners[a])\r
98130 }}\r
98131 n.addPopdownListener(new AjxListener(this,this._menuPopdownActionListener));\r
98132 return n\r
98133 };\r
98134 ZmTreeController.prototype._getAllowedTypes=function(){\r
98135 var e={};\r
98136 e[this.type]=true;\r
98137 return e\r
98138 };\r
98139 ZmTreeController.prototype._getAllowedSubTypes=function(){\r
98140 var e={};\r
98141 e[this.type]=true;\r
98142 return e\r
98143 };\r
98144 ZmTreeController.prototype._doCreate=function(params){\r
98145 params.type=this.type;\r
98146 var funcName=ZmOrganizer.CREATE_FUNC[this.type];\r
98147 if(funcName){\r
98148 var func=eval(funcName);\r
98149 func(params)\r
98150 }};\r
98151 ZmTreeController.prototype._doDelete=function(e){\r
98152 e._delete()\r
98153 };\r
98154 ZmTreeController.prototype._doEmpty=function(t){\r
98155 var n=false;\r
98156 t._empty(n);\r
98157 var e=appCtxt.getCurrentController();\r
98158 if(e&&e._getSearchFolderId){\r
98159 var o=e._getSearchFolderId();\r
98160 if(o&&(o==t.id)){\r
98161 var a=e.getCurrentView();\r
98162 a._resetList();\r
98163 a._setNoResultsHtml()\r
98164 }}};\r
98165 ZmTreeController.prototype._doRename=function(e,t){\r
98166 e.rename(t)\r
98167 };\r
98168 ZmTreeController.prototype._doMove=function(e,t){\r
98169 e.move(t)\r
98170 };\r
98171 ZmTreeController.prototype._doMarkAllRead=function(e){\r
98172 e.markAllRead()\r
98173 };\r
98174 ZmTreeController.prototype._doSync=function(e){\r
98175 e.sync()\r
98176 };\r
98177 ZmTreeController.prototype._treeViewListener=function(r){\r
98178 if(r.detail!=DwtTree.ITEM_ACTIONED&&r.detail!=DwtTree.ITEM_SELECTED&&r.detail!=DwtTree.ITEM_DBL_CLICKED){\r
98179 return\r
98180 }\r
98181 var o=r.item;\r
98182 var n=o.getData(ZmTreeView.KEY_TYPE);\r
98183 if(!n){\r
98184 return\r
98185 }\r
98186 var l=o.getData(Dwt.KEY_OBJECT);\r
98187 if(l){\r
98188 this._actionedOrganizer=l;\r
98189 if(l.noSuchFolder){\r
98190 var t=appCtxt.getFolderTree();\r
98191 if(t){\r
98192 t.handleDeleteNoSuchFolder(l)\r
98193 }\r
98194 return\r
98195 }}\r
98196 var e=o.getData(Dwt.KEY_ID);\r
98197 var a=this._actionedOverviewId=o.getData(ZmTreeView.KEY_ID);\r
98198 var h=this._opc.getOverview(a);\r
98199 if(!h){\r
98200 return\r
98201 }\r
98202 if(r.detail==DwtTree.ITEM_ACTIONED){\r
98203 if(h.actionSupported){\r
98204 var s=(l.nId==ZmOrganizer.ID_ROOT||l.isDataSource(ZmAccount.TYPE_IMAP))?this._getHeaderActionMenu(r):this._getActionMenu(r);\r
98205 if(s){\r
98206 this.resetOperations(s,n,e);\r
98207 s.popup(0,r.docX,r.docY)\r
98208 }}}else{\r
98209 if((r.detail==DwtTree.ITEM_SELECTED)&&l){\r
98210 if(appCtxt.multiAccounts&&(l instanceof ZmOrganizer)){\r
98211 this._handleMultiAccountItemSelection(r,h,o,l)\r
98212 }else{\r
98213 this._handleItemSelection(r,h,o,l)\r
98214 }}else{\r
98215 if((r.detail==DwtTree.ITEM_DBL_CLICKED)&&l){\r
98216 this._itemDblClicked(l)\r
98217 }}}};\r
98218 ZmTreeController.prototype._handleItemSelection=function(t,s,n,e){\r
98219 s.itemSelected(n);\r
98220 if(t.kbNavEvent){\r
98221 DwtControl._scrollIntoView(n._itemDiv,s.getHtmlElement());\r
98222 ZmController.noFocus=true\r
98223 }\r
98224 if(s._treeSelectionShortcutDelayActionId){\r
98225 AjxTimedAction.cancelAction(s._treeSelectionShortcutDelayActionId)\r
98226 }\r
98227 if((s.selectionSupported||e._showFoldersCallback)&&!n._isHeader){\r
98228 if(t.kbNavEvent&&ZmTreeController.TREE_SELECTION_SHORTCUT_DELAY){\r
98229 var o=new AjxTimedAction(this,ZmTreeController.prototype._treeSelectionTimedAction,[e,s]);\r
98230 s._treeSelectionShortcutDelayActionId=AjxTimedAction.scheduleAction(o,ZmTreeController.TREE_SELECTION_SHORTCUT_DELAY)\r
98231 }else{\r
98232 if((appCtxt.multiAccounts&&(e instanceof ZmOrganizer))||(e.type==ZmOrganizer.VOICE)){\r
98233 appCtxt.getCurrentApp().getOverviewContainer().deselectAll(s);\r
98234 var a=e.account||appCtxt.accountList.mainAccount;\r
98235 appCtxt.accountList.setActiveAccount(a)\r
98236 }\r
98237 this._itemSelected(e)\r
98238 }}};\r
98239 ZmTreeController.prototype._itemSelected=function(e){\r
98240 if(e&&e._showFoldersCallback){\r
98241 e._showFoldersCallback.run()\r
98242 }else{\r
98243 this._itemClicked(e)\r
98244 }};\r
98245 ZmTreeController.prototype._handleMultiAccountItemSelection=function(t,o,a,e){\r
98246 this._handleItemSelection(t,o,a,e)\r
98247 };\r
98248 ZmTreeController.prototype._treeSelectionTimedAction=function(e,t){\r
98249 if(t._treeSelectionShortcutDelayActionId){\r
98250 AjxTimedAction.cancelAction(t._treeSelectionShortcutDelayActionId)\r
98251 }\r
98252 this._itemSelected(e)\r
98253 };\r
98254 ZmTreeController.prototype._treeListener=function(a){\r
98255 var o=a&&a.item;\r
98256 var s=o&&o._tree&&o._tree.overviewId;\r
98257 var n=appCtxt.getOverviewController().getOverview(s);\r
98258 if(!(a&&a.detail&&n&&n.isAppOverview&&o._isHeader)){\r
98259 return\r
98260 }\r
98261 var t=appCtxt.getSettings(n.account);\r
98262 var e=t.getSetting(ZmOrganizer.OPEN_SETTING[this.type]);\r
98263 if(e){\r
98264 e.setValue(a.detail==DwtTree.ITEM_EXPANDED)\r
98265 }};\r
98266 ZmTreeController.prototype._treeChangeListener=function(e){\r
98267 this._evHandled={};\r
98268 for(var t in this._treeView){\r
98269 this._changeListener(e,this._treeView[t],t)\r
98270 }};\r
98271 ZmTreeController.prototype._changeListener=function(ev,treeView,overviewId){\r
98272 if(this._evHandled[overviewId]){\r
98273 return\r
98274 }\r
98275 if(!treeView.allowedTypes[ev.type]&&!treeView.allowedSubTypes[ev.type]){\r
98276 return\r
98277 }\r
98278 var organizers=ev.getDetail("organizers");\r
98279 if(!organizers&&ev.source){\r
98280 organizers=[ev.source]\r
98281 }\r
98282 for(var i=0;\r
98283 i<organizers.length;\r
98284 i++){\r
98285 var organizer=organizers[i];\r
98286 if(appCtxt.isOffline&&(organizer.nId==ZmFolder.ID_DRAFTS||organizer.nId==ZmFolder.ID_OUTBOX)){\r
98287 organizer=appCtxt.getById(organizer.nId);\r
98288 overviewId=appCtxt.getApp(ZmApp.MAIL).getOverviewId(appCtxt.accountList.mainAccount);\r
98289 treeView=this._treeView[overviewId]\r
98290 }\r
98291 var node=treeView.getTreeItemById(organizer.id);\r
98292 if(!node&&(ev.event!=ZmEvent.E_CREATE)){\r
98293 continue\r
98294 }\r
98295 var fields=ev.getDetail("fields");\r
98296 if(ev.event==ZmEvent.E_FLAGS){\r
98297 var flag=ev.getDetail("flag");\r
98298 var state=ev.getDetail("state");\r
98299 if((flag==ZmItem.FLAG_UNREAD)&&!state){\r
98300 node.setText(organizer.getName(false));\r
98301 this._evHandled[overviewId]=true\r
98302 }}else{\r
98303 if(ev.event==ZmEvent.E_DELETE){\r
98304 if(organizer.nId==ZmFolder.ID_TRASH||organizer.nId==ZmFolder.ID_SPAM){\r
98305 node.setText(organizer.getName(false))\r
98306 }else{\r
98307 node.dispose()\r
98308 }\r
98309 this._checkTreeView(overviewId);\r
98310 this._evHandled[overviewId]=true\r
98311 }else{\r
98312 if(ev.event==ZmEvent.E_CREATE||ev.event==ZmEvent.E_MOVE){\r
98313 if(appCtxt.multiAccounts){\r
98314 var overview=this._opc.getOverview(overviewId);\r
98315 if(overview&&overview.account!=organizer.getAccount()){\r
98316 continue\r
98317 }}\r
98318 var parentNode=this._getParentNode(organizer,ev,overviewId);\r
98319 var idx=parentNode?ZmTreeView.getSortIndex(parentNode,organizer,eval(ZmTreeView.COMPARE_FUNC[organizer.type])):null;\r
98320 if(parentNode&&(ev.event==ZmEvent.E_CREATE)){\r
98321 var type=(organizer.parent.nId==ZmOrganizer.ID_ROOT)?ev.type:organizer.parent.type;\r
98322 if(type!=this.type){\r
98323 continue\r
98324 }\r
98325 node=this._addNew(treeView,parentNode,organizer,idx)\r
98326 }else{\r
98327 if(ev.event==ZmEvent.E_MOVE){\r
98328 node.dispose();\r
98329 if(parentNode){\r
98330 node=this._addNew(treeView,parentNode,organizer,idx)\r
98331 }}}\r
98332 if(parentNode){\r
98333 parentNode.setExpanded(true);\r
98334 this._fixupTreeNode(node,organizer,treeView)\r
98335 }\r
98336 this._checkTreeView(overviewId);\r
98337 this._evHandled[overviewId]=true\r
98338 }else{\r
98339 if(ev.event==ZmEvent.E_MODIFY){\r
98340 if(!fields){\r
98341 return\r
98342 }\r
98343 if(fields[ZmOrganizer.F_TOTAL]||fields[ZmOrganizer.F_SIZE]){\r
98344 node.setToolTipContent(organizer.getToolTip(true))\r
98345 }\r
98346 var parentNode=this._getParentNode(organizer,ev,overviewId);\r
98347 if(!parentNode){\r
98348 return\r
98349 }\r
98350 if(fields[ZmOrganizer.F_NAME]||fields[ZmOrganizer.F_UNREAD]||fields[ZmOrganizer.F_FLAGS]||fields[ZmOrganizer.F_COLOR]||((organizer.nId==ZmFolder.ID_DRAFTS||organizer.nId==ZmOrganizer.ID_OUTBOX)&&fields[ZmOrganizer.F_TOTAL])){\r
98351 this._updateOverview(parentNode,node,fields,organizer,treeView);\r
98352 this._evHandled[overviewId]=true\r
98353 }}}}}}};\r
98354 ZmTreeController.prototype._updateOverview=function(parentNode,node,fields,organizer,treeView){\r
98355 node.setText(organizer.getName(treeView._showUnread));\r
98356 if(fields&&fields[ZmOrganizer.F_NAME]){\r
98357 if(parentNode&&(parentNode.getNumChildren()>1)){\r
98358 node.dispose();\r
98359 var idx=ZmTreeView.getSortIndex(parentNode,organizer,eval(ZmTreeView.COMPARE_FUNC[organizer.type]));\r
98360 node=treeView._addNew(parentNode,organizer,idx)\r
98361 }else{\r
98362 node.setDndText(organizer.getName())\r
98363 }\r
98364 appCtxt.getAppViewMgr().updateTitle()\r
98365 }\r
98366 this._fixupTreeNode(node,organizer,treeView)\r
98367 };\r
98368 ZmTreeController.prototype._getParentNode=function(e,a,o){\r
98369 if(e.parent){\r
98370 var t=(e.parent.nId==ZmOrganizer.ID_ROOT)?a.type:null;\r
98371 return this._opc.getOverview(o).getTreeItemById(e.parent.id,t)\r
98372 }};\r
98373 ZmTreeController.prototype._addNew=function(o,a,t,e){\r
98374 return o._addNew(a,t,e)\r
98375 };\r
98376 ZmTreeController.prototype._newListener=function(a,o){\r
98377 this._pendingActionData=this._getActionedOrganizer(a);\r
98378 var t=this._getNewDialog();\r
98379 if(!this._newCb){\r
98380 this._newCb=new AjxCallback(this,this._newCallback)\r
98381 }\r
98382 if(this._pendingActionData&&!appCtxt.getById(this._pendingActionData.id)){\r
98383 this._pendingActionData=appCtxt.getFolderTree(o).root\r
98384 }\r
98385 if(!o&&appCtxt.multiAccounts){\r
98386 var e=this._opc.getOverview(this._actionedOverviewId);\r
98387 o=e&&e.account\r
98388 }\r
98389 ZmController.showDialog(t,this._newCb,this._pendingActionData,o);\r
98390 t.registerCallback(DwtDialog.CANCEL_BUTTON,this._clearDialog,this,t)\r
98391 };\r
98392 ZmTreeController.prototype._renameListener=function(e){\r
98393 this._pendingActionData=this._getActionedOrganizer(e);\r
98394 var t=this._getRenameDialog();\r
98395 if(!this._renameCb){\r
98396 this._renameCb=new AjxCallback(this,this._renameCallback)\r
98397 }\r
98398 ZmController.showDialog(t,this._renameCb,this._pendingActionData);\r
98399 t.registerCallback(DwtDialog.CANCEL_BUTTON,this._clearDialog,this,t)\r
98400 };\r
98401 ZmTreeController.prototype._deleteListener=function(e){\r
98402 this._doDelete(this._getActionedOrganizer(e))\r
98403 };\r
98404 ZmTreeController.prototype._emptyListener=function(e){\r
98405 this._doEmpty(this._getActionedOrganizer(e))\r
98406 };\r
98407 ZmTreeController.prototype._moveListener=function(e){\r
98408 this._pendingActionData=this._getActionedOrganizer(e);\r
98409 var t=appCtxt.getChooseFolderDialog();\r
98410 if(!this._moveCb){\r
98411 this._moveCb=new AjxCallback(this,this._moveCallback)\r
98412 }\r
98413 ZmController.showDialog(t,this._moveCb,this._getMoveParams(t));\r
98414 t.registerCallback(DwtDialog.CANCEL_BUTTON,this._clearDialog,this,t)\r
98415 };\r
98416 ZmTreeController.prototype._getMoveParams=function(t){\r
98417 var e={};\r
98418 e[ZmFolder.ID_SPAM]=true;\r
98419 return{\r
98420 data:this._pendingActionData,treeIds:[this.type],overviewId:t.getOverviewId(ZmOrganizer.APP[this.type]),omit:e,title:this._getMoveDialogTitle(),description:ZmMsg.targetFolder,appName:ZmOrganizer.APP[this.type]}\r
98421 };\r
98422 ZmTreeController.prototype._expandAllListener=function(o){\r
98423 var e=this._getActionedOrganizer(o);\r
98424 var t=this.getTreeView(this._actionedOverviewId);\r
98425 var a=t.getTreeItemById(e.id);\r
98426 a.setExpanded(true,true)\r
98427 };\r
98428 ZmTreeController.prototype._markAllReadListener=function(e){\r
98429 this._doMarkAllRead(this._getActionedOrganizer(e))\r
98430 };\r
98431 ZmTreeController.prototype._syncAllListener=function(o){\r
98432 var s=this._getActionedOrganizer(o);\r
98433 if(s.isFeed()){\r
98434 for(var r in this._treeView){\r
98435 var a=this.getTreeView(r);\r
98436 var t=ZmOrganizer.getSystemId(ZmOrganizer.ID_ROOT,appCtxt.getActiveAccount());\r
98437 var e=a.getTreeItemById(t);\r
98438 if(!e){\r
98439 return\r
98440 }\r
98441 var n=e.getItems();\r
98442 if(n&&n[i]&&(n[i].isFeed&&n[i].isFeed()||(n[i].hasFeeds&&n[i].hasFeeds()))){\r
98443 this._syncFeeds(n[i])\r
98444 }}}else{\r
98445 this._syncListener(o)\r
98446 }};\r
98447 ZmTreeController.prototype._syncListener=function(e){\r
98448 var t=this._getActionedOrganizer(e);\r
98449 this._syncFeeds(t)\r
98450 };\r
98451 ZmTreeController.prototype._syncFeeds=function(o){\r
98452 if(o.isFeed()){\r
98453 this._doSync(o)\r
98454 }else{\r
98455 if(o.hasFeeds()){\r
98456 var e=o.children.getArray();\r
98457 var n=o.children.size();\r
98458 for(var t=0;\r
98459 t<n;\r
98460 t++){\r
98461 if(e[t].isFeed()||(e[t].hasFeeds&&e[t].hasFeeds())){\r
98462 this._syncFeeds(e[t])\r
98463 }}}}};\r
98464 ZmTreeController.prototype._editPropsListener=function(t){\r
98465 var e=appCtxt.getFolderPropsDialog();\r
98466 e.popup(this._getActionedOrganizer(t))\r
98467 };\r
98468 ZmTreeController.prototype._dragListener=function(e){\r
98469 switch(e.action){\r
98470 case DwtDragEvent.SET_DATA:e.srcData={\r
98471 data:e.srcControl.getData(Dwt.KEY_OBJECT),controller:this};\r
98472 break\r
98473 }};\r
98474 ZmTreeController.prototype._menuPopdownActionListener=function(){\r
98475 if(this._pendingActionData){\r
98476 return\r
98477 }\r
98478 var e=this.getTreeView(this._actionedOverviewId);\r
98479 if(this._actionedOrganizer&&(e.getSelected()!=this._actionedOrganizer)){\r
98480 var t=e.getTreeItemById(this._actionedOrganizer.id);\r
98481 if(t){\r
98482 t._setActioned(false)\r
98483 }}};\r
98484 ZmTreeController.prototype._newCallback=function(e){\r
98485 this._doCreate(e);\r
98486 this._clearDialog(this._getNewDialog())\r
98487 };\r
98488 ZmTreeController.prototype._renameCallback=function(e,t){\r
98489 this._doRename(e,t);\r
98490 this._clearDialog(this._getRenameDialog())\r
98491 };\r
98492 ZmTreeController.prototype._moveCallback=function(e){\r
98493 this._doMove(this._pendingActionData,e);\r
98494 this._clearDialog(appCtxt.getChooseFolderDialog())\r
98495 };\r
98496 ZmTreeController.prototype._deleteShieldYesCallback=function(e){\r
98497 this._doDelete(e);\r
98498 this._clearDialog(this._deleteShield)\r
98499 };\r
98500 ZmTreeController.prototype._emptyShieldYesCallback=function(e){\r
98501 this._doEmpty(e);\r
98502 this._clearDialog(this._emptyShield)\r
98503 };\r
98504 ZmTreeController.prototype._getActionedOrganizer=function(e){\r
98505 if(this._actionedOrganizer){\r
98506 return this._actionedOrganizer\r
98507 }\r
98508 var a=e.item;\r
98509 while(a){\r
98510 var t=a.getData(Dwt.KEY_OBJECT);\r
98511 if(t instanceof ZmOrganizer){\r
98512 this._actionedOrganizer=t;\r
98513 return this._actionedOrganizer\r
98514 }\r
98515 a=a.parent\r
98516 }\r
98517 return null\r
98518 };\r
98519 ZmTreeController.prototype._checkTreeView=function(o){\r
98520 if(!o||!this._treeView[o]){\r
98521 return\r
98522 }\r
98523 var t=this._opc.getOverview(o).account;\r
98524 var a=this.getDataTree(t);\r
98525 var e=(ZmOrganizer.HIDE_EMPTY[this.type]&&a&&(a.size()==0));\r
98526 this._treeView[o].setVisible(!e)\r
98527 }\r
98528 }\r
98529 if(AjxPackage.define("zimbraMail.share.controller.ZmTagTreeController")){\r
98530 ZmTagTreeController=function(){\r
98531 ZmTreeController.call(this,ZmOrganizer.TAG);\r
98532 this._listeners[ZmOperation.NEW_TAG]=new AjxListener(this,this._newListener);\r
98533 this._listeners[ZmOperation.RENAME_TAG]=new AjxListener(this,this._renameListener);\r
98534 this._listeners[ZmOperation.TAG_COLOR_MENU]=new AjxListener(this,this._colorListener);\r
98535 this._listeners[ZmOperation.BROWSE]=new AjxListener(this,this._browseListener)\r
98536 };\r
98537 ZmTagTreeController.prototype=new ZmTreeController;\r
98538 ZmTagTreeController.prototype.constructor=ZmTagTreeController;\r
98539 ZmTagTreeController.prototype.toString=function(){\r
98540 return"ZmTagTreeController"\r
98541 };\r
98542 ZmTagTreeController.prototype._getActionMenu=function(){\r
98543 var o=ZmTreeController.prototype._getActionMenu.call(this);\r
98544 if(o&&!o._initialized){\r
98545 var t=o.getMenuItem(ZmOperation.TAG_COLOR_MENU);\r
98546 if(t){\r
98547 var e=t.getMenu().getItems();\r
98548 for(var a=0;\r
98549 a<e.length;\r
98550 a++){\r
98551 e[a].addSelectionListener(this._listeners[ZmOperation.TAG_COLOR_MENU])\r
98552 }}\r
98553 o._initialized=true\r
98554 }\r
98555 return o\r
98556 };\r
98557 ZmTagTreeController.prototype.resetOperations=function(a,t,o){\r
98558 var e=appCtxt.getById(o);\r
98559 a.enableAll(true);\r
98560 if(e.isSystem()){\r
98561 a.enable([ZmOperation.RENAME_TAG,ZmOperation.TAG_COLOR_MENU,ZmOperation.DELETE],false)\r
98562 }\r
98563 a.enable(ZmOperation.MARK_ALL_READ,(e&&(e.numUnread>0)))\r
98564 };\r
98565 ZmTagTreeController.prototype._getHeaderActionMenuOps=function(){\r
98566 return[ZmOperation.NEW_TAG,ZmOperation.BROWSE]\r
98567 };\r
98568 ZmTagTreeController.prototype._getActionMenuOps=function(){\r
98569 return[ZmOperation.NEW_TAG,ZmOperation.MARK_ALL_READ,ZmOperation.RENAME_TAG,ZmOperation.DELETE,ZmOperation.TAG_COLOR_MENU]\r
98570 };\r
98571 ZmTagTreeController.prototype._getNewDialog=function(){\r
98572 return appCtxt.getNewTagDialog()\r
98573 };\r
98574 ZmTagTreeController.prototype._getRenameDialog=function(){\r
98575 return appCtxt.getRenameTagDialog()\r
98576 };\r
98577 ZmTagTreeController.prototype._itemClicked=function(t){\r
98578 var e;\r
98579 switch(appCtxt.getCurrentAppName()){\r
98580 case ZmApp.CONTACTS:e=ZmItem.CONTACT;\r
98581 break;\r
98582 case ZmApp.NOTEBOOK:e=ZmItem.PAGE;\r
98583 break;\r
98584 case ZmApp.CALENDAR:e=ZmItem.APPT;\r
98585 break;\r
98586 case ZmApp.BRIEFCASE:e=ZmItem.BRIEFCASE;\r
98587 break;\r
98588 case ZmApp.TASKS:e=ZmItem.TASK;\r
98589 break;\r
98590 default:e=ZmId.SEARCH_MAIL;\r
98591 break\r
98592 }\r
98593 var a={\r
98594 query:t.createQuery(),searchFor:e,getHtml:appCtxt.get(ZmSetting.VIEW_AS_HTML),accountName:(t.account&&t.account.name)};\r
98595 appCtxt.getSearchController().search(a)\r
98596 };\r
98597 ZmTagTreeController.prototype._deleteListener=function(t){\r
98598 var e=this._pendingActionData=this._getActionedOrganizer(t);\r
98599 var a=this._deleteShield=appCtxt.getYesNoCancelMsgDialog();\r
98600 a.reset();\r
98601 a.registerCallback(DwtDialog.NO_BUTTON,this._clearDialog,this,this._deleteShield);\r
98602 a.registerCallback(DwtDialog.YES_BUTTON,this._deleteShieldYesCallback,this,e);\r
98603 var o=AjxMessageFormat.format(ZmMsg.askDeleteTag,e.getName(false,ZmOrganizer.MAX_DISPLAY_NAME_LENGTH));\r
98604 a.setMessage(o,DwtMessageDialog.WARNING_STYLE);\r
98605 a.popup()\r
98606 };\r
98607 ZmTagTreeController.prototype._colorListener=function(t){\r
98608 var e=this._getActionedOrganizer(t);\r
98609 if(e){\r
98610 e.setColor(t.item.getData(ZmOperation.MENUITEM_ID))\r
98611 }};\r
98612 ZmTagTreeController.prototype._browseListener=function(t){\r
98613 var e=this._getActionedOrganizer(t);\r
98614 if(e){\r
98615 AjxDispatcher.require("Browse");\r
98616 appCtxt.getSearchController().showBrowsePickers([ZmPicker.TAG])\r
98617 }};\r
98618 ZmTagTreeController.prototype._dropListener=function(n){\r
98619 var s=n.srcData.data;\r
98620 if(n.action==DwtDropEvent.DRAG_ENTER){\r
98621 var o=(s instanceof Array)?s[0]:s;\r
98622 var t=n.targetControl.getData(Dwt.KEY_OBJECT);\r
98623 if(t.id==ZmOrganizer.ID_ROOT){\r
98624 n.doIt=false\r
98625 }else{\r
98626 if(o instanceof ZmContact&&(o.isGal||o.isShared())){\r
98627 n.doIt=false\r
98628 }else{\r
98629 if(o&&(o instanceof ZmItem)&&o.isShared()){\r
98630 n.doIt=false\r
98631 }else{\r
98632 if(appCtxt.multiAccounts&&t.getAccount()!=o.account){\r
98633 n.doIt=false\r
98634 }else{\r
98635 n.doIt=this._dropTgt.isValidTarget(s)\r
98636 }}}}}else{\r
98637 if(n.action==DwtDropEvent.DRAG_DROP){\r
98638 var e=n.srcData.controller;\r
98639 var a=(s instanceof Array)?s:[s];\r
98640 e._doTag(a,n.targetControl.getData(Dwt.KEY_OBJECT),true)\r
98641 }}};\r
98642 ZmTagTreeController.prototype._changeListener=function(r,a,h){\r
98643 var t=r.getDetail("fields");\r
98644 var o=r.getDetail("organizers");\r
98645 for(var n=0;\r
98646 n<o.length;\r
98647 n++){\r
98648 var e=o[n];\r
98649 if(r.event==ZmEvent.E_MODIFY&&((t&&t[ZmOrganizer.F_COLOR]))){\r
98650 var s=a.getTreeItemById(e.id);\r
98651 if(s){\r
98652 s.setImage(ZmTag.COLOR_ICON[e.color])\r
98653 }}else{\r
98654 ZmTreeController.prototype._changeListener.call(this,r,a,h)\r
98655 }}};\r
98656 ZmTagTreeController.prototype._setTreeItemColor=function(t,e){}\r
98657 }\r
98658 if(AjxPackage.define("zimbraMail.share.controller.ZmFolderTreeController")){\r
98659 ZmFolderTreeController=function(t,e){\r
98660 if(arguments.length==0){\r
98661 return\r
98662 }\r
98663 ZmTreeController.call(this,(t||ZmOrganizer.FOLDER));\r
98664 this._listeners[ZmOperation.NEW_FOLDER]=new AjxListener(this,this._newListener);\r
98665 this._listeners[ZmOperation.RENAME_FOLDER]=new AjxListener(this,this._renameListener);\r
98666 this._listeners[ZmOperation.SHARE_FOLDER]=new AjxListener(this,this._shareAddrBookListener);\r
98667 this._listeners[ZmOperation.MOUNT_FOLDER]=new AjxListener(this,this._mountAddrBookListener);\r
98668 this._listeners[ZmOperation.EMPTY_FOLDER]=new AjxListener(this,this._emptyListener);\r
98669 this._listeners[ZmOperation.SYNC_OFFLINE_FOLDER]=new AjxListener(this,this._syncOfflineFolderListener);\r
98670 this._listeners[ZmOperation.BROWSE]=new AjxListener(this,this._browseListener)\r
98671 };\r
98672 ZmFolderTreeController.prototype=new ZmTreeController;\r
98673 ZmFolderTreeController.prototype.constructor=ZmFolderTreeController;\r
98674 ZmFolderTreeController.prototype.toString=function(){\r
98675 return"ZmFolderTreeController"\r
98676 };\r
98677 ZmFolderTreeController.prototype.show=function(n){\r
98678 var a=n.omit||{};\r
98679 for(var s in ZmFolder.HIDE_ID){\r
98680 a[s]=true\r
98681 }\r
98682 var o=this.type!=ZmOrganizer.VOICE&&this.getDataTree(n.account);\r
98683 if(o){\r
98684 for(var e in ZmFolder.HIDE_NAME){\r
98685 var t=o.getByName(e);\r
98686 if(t){\r
98687 a[t.id]=true\r
98688 }}\r
98689 if(appCtxt.isOffline&&n.account){\r
98690 if(!n.account.isMain){\r
98691 a[ZmFolder.ID_DRAFTS]=true;\r
98692 a[ZmFolder.ID_OUTBOX]=true\r
98693 }else{\r
98694 if(n.account.type==ZmAccount.TYPE_POP){\r
98695 a[ZmFolder.ID_SPAM]=true;\r
98696 a[ZmFolder.ID_SENT]=true;\r
98697 a[ZmFolder.ID_DRAFTS]=true;\r
98698 a[ZmFolder.ID_OUTBOX]=true\r
98699 }}}}\r
98700 n.omit=a;\r
98701 return ZmTreeController.prototype.show.call(this,n)\r
98702 };\r
98703 ZmFolderTreeController.prototype.resetOperations=function(p,m,a){\r
98704 var s=ZmMsg.emptyFolder;\r
98705 var o=appCtxt.getById(a);\r
98706 var r=((o.numTotal>0)||(o.children&&(o.children.size()>0)));\r
98707 var n=ZmOrganizer.normalizeId(a,this.type);\r
98708 if(n==ZmOrganizer.ID_ROOT||((!o.isSystem())&&!o.isSyncIssuesFolder())){\r
98709 var u=(!o.link||o.isAdmin());\r
98710 p.enableAll(true);\r
98711 p.enable(ZmOperation.SYNC,o.isFeed());\r
98712 p.enable(ZmOperation.SYNC_ALL,o.isFeed()||o.hasFeeds());\r
98713 p.enable([ZmOperation.SHARE_FOLDER,ZmOperation.MOUNT_FOLDER],u);\r
98714 p.enable(ZmOperation.EMPTY_FOLDER,(r||o.link));\r
98715 p.enable(ZmOperation.RENAME_FOLDER,!o.isDataSource());\r
98716 p.enable(ZmOperation.NEW_FOLDER,!o.disallowSubFolder);\r
98717 if(o.isRemote()&&o.isReadOnly()){\r
98718 p.enable([ZmOperation.NEW_FOLDER,ZmOperation.MARK_ALL_READ,ZmOperation.EMPTY_FOLDER],false)\r
98719 }}else{\r
98720 p.enableAll(false);\r
98721 if(!o.disallowSubFolder&&(n==ZmFolder.ID_INBOX||n==ZmFolder.ID_SENT||n==ZmFolder.ID_TRASH)){\r
98722 p.enable(ZmOperation.NEW_FOLDER,true)\r
98723 }\r
98724 if(n==ZmFolder.ID_SPAM||n==ZmFolder.ID_TRASH||n==ZmFolder.ID_CHATS){\r
98725 if(n==ZmFolder.ID_SPAM){\r
98726 s=ZmMsg.emptyJunk\r
98727 }else{\r
98728 if(n==ZmFolder.ID_TRASH){\r
98729 s=ZmMsg.emptyTrash\r
98730 }}\r
98731 p.enable(ZmOperation.EMPTY_FOLDER,r)\r
98732 }\r
98733 if(!o.link&&(n==ZmFolder.ID_INBOX||n==ZmFolder.ID_SENT)){\r
98734 p.enable([ZmOperation.SHARE_FOLDER,ZmOperation.MOUNT_FOLDER,ZmOperation.EDIT_PROPS],true)\r
98735 }\r
98736 if(appCtxt.isOffline&&n==ZmOrganizer.ID_SYNC_FAILURES&&r){\r
98737 p.enable(ZmOperation.EMPTY_FOLDER,true)\r
98738 }}\r
98739 p.enable(ZmOperation.EXPAND_ALL,(o.size()>0));\r
98740 if(n!=ZmOrganizer.ID_ROOT&&!o.isReadOnly()){\r
98741 p.enable(ZmOperation.MARK_ALL_READ,(o.numUnread>0||o.link))\r
98742 }\r
98743 var l=p.getOp(ZmOperation.EMPTY_FOLDER);\r
98744 if(l){\r
98745 l.setText(s)\r
98746 }\r
98747 var h=p.getOp(ZmOperation.SYNC);\r
98748 if(h){\r
98749 var d=p.getOp(ZmOperation.SYNC_ALL);\r
98750 var t=o.hasFeeds();\r
98751 if(o.isFeed()){\r
98752 h.setEnabled(true);\r
98753 h.setVisible(true);\r
98754 h.setText(ZmMsg.checkFeed);\r
98755 if(d){\r
98756 d.setEnabled(true);\r
98757 d.setVisible(true);\r
98758 d.setText(ZmMsg.checkAllFeed)\r
98759 }}else{\r
98760 if(t){\r
98761 if(d){\r
98762 d.setEnabled(true);\r
98763 d.setVisible(true);\r
98764 d.setText(ZmMsg.checkAllFeed)\r
98765 }}else{\r
98766 var f=appCtxt.get(ZmSetting.POP_ACCOUNTS_ENABLED)||appCtxt.get(ZmSetting.IMAP_ACCOUNTS_ENABLED);\r
98767 if(!appCtxt.isOffline&&f){\r
98768 var c=AjxDispatcher.run("GetDataSourceCollection");\r
98769 var e=c.getItemsFor(ZmOrganizer.normalizeId(o.id));\r
98770 if(e.length>0){\r
98771 h.setText(ZmMsg.checkExternalMail);\r
98772 h.setEnabled(true);\r
98773 h.setVisible(true)\r
98774 }else{\r
98775 h.setVisible(false)\r
98776 }}else{\r
98777 h.setVisible(false)\r
98778 }\r
98779 if(!t&&d){\r
98780 d.setVisible(false)\r
98781 }}}}\r
98782 h=p.getOp(ZmOperation.SYNC_OFFLINE_FOLDER);\r
98783 if(h){\r
98784 if(!o.isOfflineSyncable){\r
98785 h.setVisible(false)\r
98786 }else{\r
98787 h.setVisible(true);\r
98788 h.setEnabled(true);\r
98789 var g=(o.isOfflineSyncing)?ZmMsg.syncOfflineFolderOff:ZmMsg.syncOfflineFolderOn;\r
98790 h.setText(g)\r
98791 }}\r
98792 p.enable(ZmOperation.BROWSE,true);\r
98793 this._resetButtonPerSetting(p,ZmOperation.SHARE_FOLDER,appCtxt.get(ZmSetting.SHARING_ENABLED));\r
98794 this._resetButtonPerSetting(p,ZmOperation.MOUNT_FOLDER,appCtxt.get(ZmSetting.SHARING_ENABLED))\r
98795 };\r
98796 ZmFolderTreeController.prototype._getHeaderActionMenuOps=function(){\r
98797 return[ZmOperation.NEW_FOLDER,ZmOperation.MOUNT_FOLDER,ZmOperation.EXPAND_ALL,ZmOperation.SYNC,ZmOperation.BROWSE]\r
98798 };\r
98799 ZmFolderTreeController.prototype._getActionMenuOps=function(){\r
98800 return[ZmOperation.NEW_FOLDER,ZmOperation.MARK_ALL_READ,ZmOperation.DELETE,ZmOperation.RENAME_FOLDER,ZmOperation.MOVE,ZmOperation.SHARE_FOLDER,ZmOperation.EDIT_PROPS,ZmOperation.EXPAND_ALL,ZmOperation.SYNC,ZmOperation.SYNC_ALL,ZmOperation.EMPTY_FOLDER,ZmOperation.SYNC_OFFLINE_FOLDER]\r
98801 };\r
98802 ZmFolderTreeController.prototype._getAllowedSubTypes=function(){\r
98803 var e={};\r
98804 e[ZmOrganizer.FOLDER]=true;\r
98805 e[ZmOrganizer.SEARCH]=true;\r
98806 return e\r
98807 };\r
98808 ZmFolderTreeController.prototype._getNewDialog=function(){\r
98809 return appCtxt.getNewFolderDialog()\r
98810 };\r
98811 ZmFolderTreeController.prototype._getRenameDialog=function(){\r
98812 return appCtxt.getRenameFolderDialog()\r
98813 };\r
98814 ZmFolderTreeController.prototype._itemClicked=function(t){\r
98815 if(t.type==ZmOrganizer.SEARCH){\r
98816 var s=this._opc.getTreeController(ZmOrganizer.SEARCH);\r
98817 s._itemClicked(t)\r
98818 }else{\r
98819 if(t.id==ZmFolder.ID_ATTACHMENTS){\r
98820 var r=AjxDispatcher.run("GetAttachmentsController");\r
98821 r.show()\r
98822 }else{\r
98823 var e=ZmId.SEARCH_MAIL;\r
98824 if(t.isInTrash()){\r
98825 var o=appCtxt.getCurrentAppName();\r
98826 if(o==ZmApp.CONTACTS){\r
98827 e=ZmItem.CONTACT\r
98828 }}\r
98829 var h=appCtxt.getSearchController();\r
98830 var n={\r
98831 query:t.createQuery(),searchFor:e,getHtml:(t.nId==ZmFolder.ID_DRAFTS)||appCtxt.get(ZmSetting.VIEW_AS_HTML),types:((t.nId==ZmOrganizer.ID_SYNC_FAILURES)?[ZmItem.MSG]:null),sortBy:((h.currentSearch&&t.nId==h.currentSearch.folderId)?null:ZmSearch.DATE_DESC),accountName:(t.account&&t.account.name)};\r
98832 h.resetSearchAllAccounts();\r
98833 if(appCtxt.multiAccounts){\r
98834 if(t.link&&t.shares==null){\r
98835 var a=appCtxt.getFolderTree(t.account);\r
98836 if(a){\r
98837 var l=new AjxCallback(this,this._getPermissionsResponse,[n]);\r
98838 a.getPermissions({\r
98839 callback:l,folderIds:[t.id]}\r
98840 )\r
98841 }\r
98842 return\r
98843 }\r
98844 n.callback=(t.id==ZmFolder.ID_DRAFTS||t.id==ZmFolder.ID_OUTBOX)?(new AjxCallback(this,this._handleSearch,[h,n.query,t])):null\r
98845 }\r
98846 h.search(n)\r
98847 }}};\r
98848 ZmFolderTreeController.prototype._handleSearch=function(o,a,t){\r
98849 var e=this._opc.getOverview(appCtxt.getApp(ZmApp.MAIL).getOverviewId());\r
98850 e.setSelected(t.id)\r
98851 };\r
98852 ZmFolderTreeController.prototype._getPermissionsResponse=function(e){\r
98853 appCtxt.getSearchController().search(e)\r
98854 };\r
98855 ZmFolderTreeController.prototype._doSync=function(a){\r
98856 var t=AjxDispatcher.run("GetDataSourceCollection");\r
98857 var e=ZmOrganizer.normalizeId(a.id);\r
98858 var o=t.getItemsFor(e);\r
98859 if(o.length>0){\r
98860 t.importMailFor(e)\r
98861 }else{\r
98862 ZmTreeController.prototype._doSync.call(this,a)\r
98863 }};\r
98864 ZmFolderTreeController.prototype._syncFeeds=function(t){\r
98865 if(!appCtxt.isOffline&&t&&!t.isFeed()){\r
98866 var a=(appCtxt.get(ZmSetting.POP_ACCOUNTS_ENABLED)||appCtxt.get(ZmSetting.IMAP_ACCOUNTS_ENABLED))?t.getDataSources(null,true):null;\r
98867 if(a){\r
98868 var e=AjxDispatcher.run("GetDataSourceCollection");\r
98869 e.importMail(a);\r
98870 return\r
98871 }}\r
98872 ZmTreeController.prototype._syncFeeds.call(this,t)\r
98873 };\r
98874 ZmFolderTreeController.prototype._addNew=function(o,a,t,e){\r
98875 if(ZmFolder.HIDE_ID[t.id]){\r
98876 return false\r
98877 }\r
98878 return o._addNew(a,t,e)\r
98879 };\r
98880 ZmFolderTreeController.prototype._deleteListener=function(a){\r
98881 var e=this._getActionedOrganizer(a);\r
98882 var n=appCtxt.isOffline?this.getDataTree().getById(ZmFolder.ID_TRASH):null;\r
98883 if(n&&n.disallowSubFolder&&e.numTotal>0){\r
98884 var r=appCtxt.getMsgDialog();\r
98885 r.setMessage(ZmMsg.errorCannotDeleteFolder);\r
98886 r.popup();\r
98887 return\r
98888 }\r
98889 if(e.nId==ZmFolder.ID_SPAM||e.isInTrash()||(n&&n.disallowSubFolder)){\r
98890 this._pendingActionData=e;\r
98891 var o=this._deleteShield=appCtxt.getOkCancelMsgDialog();\r
98892 o.reset();\r
98893 o.registerCallback(DwtDialog.OK_BUTTON,this._deleteShieldYesCallback,this,e);\r
98894 o.registerCallback(DwtDialog.CANCEL_BUTTON,this._clearDialog,this,this._deleteShield);\r
98895 var t;\r
98896 if(e.type==ZmOrganizer.SEARCH){\r
98897 t=ZmMsg.confirmDeleteSavedSearch\r
98898 }else{\r
98899 if(e.disallowSubFolder||e.isMountpoint){\r
98900 t=ZmMsg.confirmDeleteFolder\r
98901 }else{\r
98902 if(e.nId==ZmFolder.ID_TRASH){\r
98903 t=ZmMsg.confirmEmptyTrashFolder\r
98904 }else{\r
98905 t=ZmMsg.confirmEmptyFolder\r
98906 }}}\r
98907 var s=AjxMessageFormat.format(t,e.getName());\r
98908 o.setMessage(s,DwtMessageDialog.WARNING_STYLE);\r
98909 o.popup()\r
98910 }else{\r
98911 this._doMove(e,appCtxt.getById(ZmFolder.ID_TRASH))\r
98912 }};\r
98913 ZmFolderTreeController.prototype._emptyListener=function(t){\r
98914 var e=this._pendingActionData=this._getActionedOrganizer(t);\r
98915 var a=this._emptyShield=appCtxt.getOkCancelMsgDialog();\r
98916 a.reset();\r
98917 a.registerCallback(DwtDialog.OK_BUTTON,this._emptyShieldYesCallback,this,e);\r
98918 a.registerCallback(DwtDialog.CANCEL_BUTTON,this._clearDialog,this,this._emptyShield);\r
98919 var n=(e.nId!=ZmFolder.ID_TRASH)?(AjxMessageFormat.format(ZmMsg.confirmEmptyFolder,e.getName())):ZmMsg.confirmEmptyTrashFolder;\r
98920 a.setMessage(n,DwtMessageDialog.WARNING_STYLE);\r
98921 var s=(e.nId==ZmFolder.ID_TRASH||e.nId==ZmFolder.ID_SPAM)?DwtDialog.OK_BUTTON:DwtDialog.CANCEL_BUTTON;\r
98922 a.associateEnterWithButton(s);\r
98923 a.popup(null,s);\r
98924 if(!(e.nId==ZmFolder.ID_SPAM||e.isInTrash())){\r
98925 var o=a.getButton(DwtDialog.CANCEL_BUTTON);\r
98926 o.focus()\r
98927 }};\r
98928 ZmFolderTreeController.prototype._syncOfflineFolderListener=function(t){\r
98929 var e=this._getActionedOrganizer(t);\r
98930 if(e){\r
98931 e.toggleSyncOffline()\r
98932 }};\r
98933 ZmFolderTreeController.prototype._browseListener=function(t){\r
98934 var e=this._getActionedOrganizer(t);\r
98935 if(e){\r
98936 AjxDispatcher.require("Browse");\r
98937 appCtxt.getSearchController().showBrowsePickers([ZmPicker.FOLDER])\r
98938 }};\r
98939 ZmFolderTreeController.prototype._dragListener=function(t){\r
98940 if(t.action==DwtDragEvent.DRAG_START){\r
98941 var e=t.srcControl.getData(Dwt.KEY_OBJECT);\r
98942 t.srcData={\r
98943 data:e,controller:this};\r
98944 if(!(e instanceof ZmFolder)||e.isSystem()||e.isSyncIssuesFolder()){\r
98945 t.operation=Dwt.DND_DROP_NONE\r
98946 }}};\r
98947 ZmFolderTreeController.prototype._dropListener=function(l){\r
98948 var n=l.targetControl.getData(Dwt.KEY_OBJECT);\r
98949 var t=l.srcData.data;\r
98950 var o=(l.shiftKey||l.uiEvent.shiftKey);\r
98951 if(l.action==DwtDropEvent.DRAG_ENTER){\r
98952 var h=l.targetControl.getData(ZmTreeView.KEY_TYPE);\r
98953 if(t instanceof ZmFolder){\r
98954 l.doIt=n.mayContain(t,h)&&!n.disallowSubFolder\r
98955 }else{\r
98956 if(t instanceof ZmTag){\r
98957 l.doIt=false\r
98958 }else{\r
98959 if(this._dropTgt.isValidTarget(t)){\r
98960 l.doIt=n.mayContain(t,h);\r
98961 var e;\r
98962 var u=(!(t instanceof Array))?[t]:t;\r
98963 for(var a=0;\r
98964 a<u.length;\r
98965 a++){\r
98966 if(u[a] instanceof ZmItem){\r
98967 e|=u[a].getDefaultDndAction(o)\r
98968 }}\r
98969 var c=document.getElementById(DwtId.DND_PLUS_ID);\r
98970 if(e&&c){\r
98971 var r=((e&ZmItem.DND_ACTION_COPY)!=0);\r
98972 Dwt.setVisibility(c,r)\r
98973 }}else{\r
98974 l.doIt=false\r
98975 }}}}else{\r
98976 if(l.action==DwtDropEvent.DRAG_DROP){\r
98977 if(t instanceof ZmFolder){\r
98978 this._doMove(t,n)\r
98979 }else{\r
98980 var d=l.srcData.controller;\r
98981 var s=(t instanceof Array)?t:[t];\r
98982 d._doMove(s,n,null,o)\r
98983 }}}};\r
98984 ZmFolderTreeController.prototype._shareAddrBookListener=function(e){\r
98985 this._pendingActionData=this._getActionedOrganizer(e);\r
98986 appCtxt.getSharePropsDialog().popup(ZmSharePropsDialog.NEW,this._pendingActionData)\r
98987 };\r
98988 ZmFolderTreeController.prototype._mountAddrBookListener=function(e){\r
98989 appCtxt.getMountFolderDialog().popup(ZmOrganizer.FOLDER)\r
98990 };\r
98991 ZmFolderTreeController.prototype._getMoveDialogTitle=function(){\r
98992 return AjxMessageFormat.format(ZmMsg.moveFolder,this._pendingActionData.name)\r
98993 }\r
98994 }\r
98995 if(AjxPackage.define("zimbraMail.share.controller.ZmSearchTreeController")){\r
98996 ZmSearchTreeController=function(){\r
98997 ZmFolderTreeController.call(this,ZmOrganizer.SEARCH);\r
98998 this._listeners[ZmOperation.RENAME_SEARCH]=new AjxListener(this,this._renameListener);\r
98999 this._listeners[ZmOperation.BROWSE]=new AjxListener(this,this._browseListener)\r
99000 };\r
99001 ZmSearchTreeController.prototype=new ZmFolderTreeController;\r
99002 ZmSearchTreeController.prototype.constructor=ZmSearchTreeController;\r
99003 ZmSearchTreeController.APP_JOIN_CHAR="-";\r
99004 ZmSearchTreeController.prototype.toString=function(){\r
99005 return"ZmSearchTreeController"\r
99006 };\r
99007 ZmSearchTreeController.prototype.show=function(a){\r
99008 var o=a.overviewId;\r
99009 if(!this._treeView[o]||a.forceCreate){\r
99010 this._treeView[o]=this._setup(o)\r
99011 }\r
99012 var t=this.getDataTree(a.account);\r
99013 if(t){\r
99014 a.dataTree=t;\r
99015 a.searchTypes={};\r
99016 a.omit=a.omit||{};\r
99017 a.omit[ZmFolder.ID_TRASH]=true;\r
99018 a.omitParents=true;\r
99019 var e=ZmOrganizer.OPEN_SETTING[this.type];\r
99020 a.collapsed=!(!e||(appCtxt.get(e,null,a.account)!==false));\r
99021 this._setupNewOp(a);\r
99022 this._treeView[o].set(a);\r
99023 this._checkTreeView(o)\r
99024 }\r
99025 return this._treeView[o]\r
99026 };\r
99027 ZmSearchTreeController.prototype.getTreeStyle=function(){\r
99028 return null\r
99029 };\r
99030 ZmSearchTreeController.prototype.resetOperations=function(a,t,o){\r
99031 a.enableAll(true);\r
99032 var e=appCtxt.getById(o);\r
99033 a.enable(ZmOperation.EXPAND_ALL,(e.size()>0))\r
99034 };\r
99035 ZmSearchTreeController.prototype._newListener=function(e){\r
99036 AjxDispatcher.require("Browse");\r
99037 appCtxt.getSearchController().showBrowseView()\r
99038 };\r
99039 ZmSearchTreeController.prototype._browseListener=function(t){\r
99040 var e=this._getActionedOrganizer(t);\r
99041 if(e){\r
99042 AjxDispatcher.require("Browse");\r
99043 appCtxt.getSearchController().showBrowsePickers([ZmPicker.SEARCH])\r
99044 }};\r
99045 ZmSearchTreeController.prototype._getHeaderActionMenuOps=function(){\r
99046 return[ZmOperation.EXPAND_ALL,ZmOperation.BROWSE]\r
99047 };\r
99048 ZmSearchTreeController.prototype._getActionMenuOps=function(){\r
99049 return[ZmOperation.DELETE,ZmOperation.RENAME_SEARCH,ZmOperation.MOVE,ZmOperation.EXPAND_ALL]\r
99050 };\r
99051 ZmSearchTreeController.prototype._getAllowedSubTypes=function(){\r
99052 return ZmTreeController.prototype._getAllowedSubTypes.call(this)\r
99053 };\r
99054 ZmSearchTreeController.prototype._getNewDialog=function(){\r
99055 return appCtxt.getNewSearchDialog()\r
99056 };\r
99057 ZmSearchTreeController.prototype._itemClicked=function(e){\r
99058 if(e._showFoldersCallback){\r
99059 e._showFoldersCallback.run();\r
99060 return\r
99061 }\r
99062 var t=appCtxt.getSearchController();\r
99063 t.searchAllAccounts=e.isOfflineGlobalSearch;\r
99064 t.redoSearch(e.search,false,{\r
99065 getHtml:appCtxt.get(ZmSetting.VIEW_AS_HTML)}\r
99066 )\r
99067 };\r
99068 ZmSearchTreeController.prototype._getMoveParams=function(t){\r
99069 var e=ZmTreeController.prototype._getMoveParams.apply(this,arguments);\r
99070 e.overviewId=t.getOverviewId(this.type);\r
99071 e.treeIds=[ZmOrganizer.FOLDER,ZmOrganizer.SEARCH];\r
99072 return e\r
99073 };\r
99074 ZmSearchTreeController.prototype._getMoveDialogTitle=function(){\r
99075 return AjxMessageFormat.format(ZmMsg.moveSearch,this._pendingActionData.name)\r
99076 };\r
99077 ZmSearchTreeController.prototype._checkTreeView=function(n){\r
99078 var t=this._treeView[n];\r
99079 if(!n||!t){\r
99080 return\r
99081 }\r
99082 var o=this._opc.getOverview(n).account;\r
99083 var e=(appCtxt.multiAccounts&&!o.isMain)?(ZmOrganizer.getSystemId(ZmOrganizer.ID_ROOT,o)):ZmOrganizer.ID_ROOT;\r
99084 var a=ZmOrganizer.HIDE_EMPTY[this.type]&&!t.getTreeItemById(e).getItemCount();\r
99085 this._treeView[n].setVisible(!a)\r
99086 }\r
99087 }\r
99088 if(AjxPackage.define("zimbraMail.share.controller.ZmOverviewController")){\r
99089 ZmOverviewController=function(e){\r
99090 ZmController.call(this,e);\r
99091 this._overviewContainer={};\r
99092 this._overview={};\r
99093 this._controller={};\r
99094 this._appOverviewId={}\r
99095 };\r
99096 ZmOverviewController.CONTROLLER={};\r
99097 ZmOverviewController.DEFAULT_FOLDER_ID=ZmFolder.ID_INBOX;\r
99098 ZmOverviewController.prototype=new ZmController;\r
99099 ZmOverviewController.prototype.constructor=ZmOverviewController;\r
99100 ZmOverviewController.prototype.toString=function(){\r
99101 return"ZmOverviewController"\r
99102 };\r
99103 ZmOverviewController.prototype.createOverviewContainer=function(t,a){\r
99104 t.parent=t.parent||this._shell;\r
99105 t.controller=this;\r
99106 t.id=ZmId.getOverviewContainerId(t.containerId);\r
99107 var e=this._overviewContainer[t.containerId]=new ZmAccountOverviewContainer(t);\r
99108 e.initialize(a);\r
99109 return e\r
99110 };\r
99111 ZmOverviewController.prototype.createOverview=function(t){\r
99112 t.parent=t.parent||this._shell;\r
99113 var e=this._overview[t.overviewId]=new ZmOverview(t,this);\r
99114 return e\r
99115 };\r
99116 ZmOverviewController.prototype.getOverviewContainer=function(e){\r
99117 var e=e||appCtxt.getCurrentAppName();\r
99118 return this._overviewContainer[e]\r
99119 };\r
99120 ZmOverviewController.prototype.getOverview=function(e){\r
99121 return this._overview[e]\r
99122 };\r
99123 ZmOverviewController.prototype.getTreeController=function(treeId,noCreate){\r
99124 if(!treeId){\r
99125 return null\r
99126 }\r
99127 if(!this._controller[treeId]&&!noCreate){\r
99128 var className=ZmOverviewController.CONTROLLER[treeId];\r
99129 if(className&&window[className]){\r
99130 var treeControllerCtor=eval(ZmOverviewController.CONTROLLER[treeId]);\r
99131 if(treeControllerCtor){\r
99132 this._controller[treeId]=new treeControllerCtor(treeId)\r
99133 }}}\r
99134 return this._controller[treeId]\r
99135 };\r
99136 ZmOverviewController.prototype.getTreeData=function(e){\r
99137 return e?appCtxt.getTree(e):null\r
99138 };\r
99139 ZmOverviewController.prototype.getTreeView=function(t,e){\r
99140 if(!t||!e){\r
99141 return null\r
99142 }\r
99143 return this.getOverview(t).getTreeView(e)\r
99144 }\r
99145 }\r
99146 if(AjxPackage.define("zimbraMail.share.controller.ZmSearchController")){\r
99147 ZmSearchController=function(e){\r
99148 ZmController.call(this,e);\r
99149 this._inited=false;\r
99150 this._searchFor=ZmId.SEARCH_MAIL;\r
99151 this._contactSource=ZmItem.CONTACT;\r
99152 this._results=null;\r
99153 if(appCtxt.get(ZmSetting.SEARCH_ENABLED)){\r
99154 this._setView()\r
99155 }};\r
99156 ZmSearchController.prototype=new ZmController;\r
99157 ZmSearchController.prototype.constructor=ZmSearchController;\r
99158 ZmSearchController.QUERY_ISREMOTE="is:remote OR is:local";\r
99159 ZmSearchController.prototype.toString=function(){\r
99160 return"ZmSearchController"\r
99161 };\r
99162 ZmSearchController.prototype.getSearchPanel=function(){\r
99163 return this._searchPanel\r
99164 };\r
99165 ZmSearchController.prototype.getSearchToolbar=function(){\r
99166 return this._searchToolBar\r
99167 };\r
99168 ZmSearchController.prototype.dateSearch=function(s,e){\r
99169 s=s||new Date();\r
99170 var o=AjxDateFormat.getDateInstance(AjxDateFormat.SHORT);\r
99171 var a=o.format(s);\r
99172 var t=appCtxt.getApp(ZmApp.MAIL).getGroupMailBy();\r
99173 var n="date:"+a;\r
99174 this.search({\r
99175 query:n,types:[t],searchFor:e}\r
99176 )\r
99177 };\r
99178 ZmSearchController.prototype.fromSearch=function(e){\r
99179 var t=appCtxt.getApp(ZmApp.MAIL).getGroupMailBy();\r
99180 var o=e instanceof Array?e.concat():[e];\r
99181 for(var a=0;\r
99182 a<o.length;\r
99183 a++){\r
99184 o[a]=["from:(",o[a],")"].join("")\r
99185 }\r
99186 this.search({\r
99187 query:o.join(" OR "),types:[t]}\r
99188 )\r
99189 };\r
99190 ZmSearchController.prototype.fromBrowse=function(t){\r
99191 var e=new AjxCallback(this,this._handleLoadFromBrowse,[t]);\r
99192 this.showBrowseView(true,e)\r
99193 };\r
99194 ZmSearchController.prototype.showBrowsePickers=function(a,e){\r
99195 e=(!e||e==null)?true:e;\r
99196 this.showBrowseView(true,null);\r
99197 if(a instanceof Array){\r
99198 this._browseViewController.removeAllPickers();\r
99199 if(e){\r
99200 this._browseViewController.addPicker(ZmPicker.BASIC)\r
99201 }\r
99202 for(var t=0;\r
99203 t<a.length;\r
99204 t++){\r
99205 this._browseViewController.addPicker(a[t])\r
99206 }}};\r
99207 ZmSearchController.prototype._handleLoadFromBrowse=function(a,e){\r
99208 this.setDefaultSearchType(ZmId.SEARCH_MAIL);\r
99209 e.removeAllPickers();\r
99210 this._browseViewController.removeAllPickers();\r
99211 var t=this._browseViewController.addPicker(ZmPicker.BASIC);\r
99212 t.setFrom(a);\r
99213 t.execute()\r
99214 };\r
99215 ZmSearchController.prototype.showBrowseView=function(t,o){\r
99216 if(!this._browseViewController){\r
99217 var e=new AjxCallback(this,this._handleLoadShowBrowseView,[o]);\r
99218 AjxDispatcher.require("Browse",false,e,null,false)\r
99219 }else{\r
99220 var a=this._browseViewController;\r
99221 a.setBrowseViewVisible(t||!a.getBrowseViewVisible());\r
99222 if(o){\r
99223 o.run(a.getBrowseView())\r
99224 }}};\r
99225 ZmSearchController.prototype._handleLoadShowBrowseView=function(t){\r
99226 var e=this._browseViewController=new ZmBrowseController(this._searchPanel);\r
99227 e.setBrowseViewVisible(true);\r
99228 if(t){\r
99229 t.run(e.getBrowseView())\r
99230 }};\r
99231 ZmSearchController.prototype.getBrowseView=function(){\r
99232 return(this._browseViewController&&this._browseViewController.getBrowseView())\r
99233 };\r
99234 ZmSearchController.prototype.setSearchField=function(e){\r
99235 if(appCtxt.get(ZmSetting.SHOW_SEARCH_STRING)&&this._searchToolBar){\r
99236 this._searchToolBar.setSearchFieldValue(e)\r
99237 }else{\r
99238 this._currentQuery=e\r
99239 }};\r
99240 ZmSearchController.prototype.getSearchFieldValue=function(){\r
99241 return this._searchToolBar?this._searchToolBar.getSearchFieldValue():""\r
99242 };\r
99243 ZmSearchController.prototype.setEnabled=function(e){\r
99244 if(this._searchToolBar){\r
99245 this._searchToolBar.setEnabled(e)\r
99246 }};\r
99247 ZmSearchController.prototype.setDefaultSearchType=function(e){\r
99248 if(this._searchToolBar&&!appCtxt.inStartup){\r
99249 var t=this._searchToolBar.getButton(ZmSearchToolBar.SEARCH_MENU_BUTTON).getMenu();\r
99250 t.checkItem(ZmSearchToolBar.MENUITEM_ID,e);\r
99251 this._searchMenuListener(null,e)\r
99252 }};\r
99253 ZmSearchController.prototype._setView=function(){\r
99254 this._searchPanel=new DwtComposite({\r
99255 parent:this._container,className:"SearchPanel",posStyle:Dwt.ABSOLUTE_STYLE}\r
99256 );\r
99257 this._searchToolBar=new ZmSearchToolBar(this._searchPanel,ZmId.SEARCH_TOOLBAR);\r
99258 this._createTabGroup().addMember(this._searchToolBar.getSearchField());\r
99259 this._searchToolBar.registerCallback(this._searchFieldCallback,this);\r
99260 this._searchToolBar.addSelectionListener(ZmSearchToolBar.SEARCH_BUTTON,new AjxListener(this,this._searchButtonListener));\r
99261 if(appCtxt.get(ZmSetting.BROWSE_ENABLED)){\r
99262 this._searchToolBar.addSelectionListener(ZmSearchToolBar.BROWSE_BUTTON,new AjxListener(this,this._browseButtonListener))\r
99263 }\r
99264 if(appCtxt.get(ZmSetting.SAVED_SEARCHES_ENABLED)){\r
99265 this._searchToolBar.addSelectionListener(ZmSearchToolBar.SAVE_BUTTON,new AjxListener(this,this._saveButtonListener))\r
99266 }};\r
99267 ZmSearchController.prototype._addMenuListeners=function(s){\r
99268 var a=new AjxListener(this,this._searchMenuListener);\r
99269 var t=s.getItems();\r
99270 for(var o=0;\r
99271 o<t.length;\r
99272 o++){\r
99273 var n=t[o];\r
99274 n.addSelectionListener(a);\r
99275 var e=n.getData(ZmSearchToolBar.MENUITEM_ID);\r
99276 if(e==ZmId.SEARCH_MAIL){\r
99277 n.setChecked(true,true)\r
99278 }}};\r
99279 ZmSearchController.prototype.search=function(e){\r
99280 if(e.searchFor!=ZmItem.APPT&&(!e.query&&!e.queryHint)){\r
99281 return\r
99282 }\r
99283 if(e.query&&(e.query.indexOf("$set:")==0||e.query.indexOf("$cmd:")==0)){\r
99284 appCtxt.getClientCmdHandler().execute((e.query.substr(5)),this);\r
99285 return\r
99286 }\r
99287 e.searchAllAccounts=this.searchAllAccounts;\r
99288 var t=new AjxCallback(this,this._handleResponseSearch,[e.callback]);\r
99289 this._doSearch(e,e.noRender,t,e.errorCallback)\r
99290 };\r
99291 ZmSearchController.prototype._handleResponseSearch=function(t,e){\r
99292 if(t){\r
99293 t.run(e)\r
99294 }};\r
99295 ZmSearchController.prototype.redoSearch=function(o,e,n,r,t){\r
99296 var s={};\r
99297 s.query=o.query;\r
99298 s.queryHint=o.queryHint;\r
99299 s.types=o.types;\r
99300 s.sortBy=o.sortBy;\r
99301 s.offset=o.offset;\r
99302 s.limit=o.limit;\r
99303 s.prevId=o.prevId;\r
99304 s.prevSortBy=o.prevSortBy;\r
99305 s.fetch=o.fetch;\r
99306 s.searchId=o.searchId;\r
99307 s.lastSortVal=o.lastSortVal;\r
99308 s.endSortVal=o.endSortVal;\r
99309 s.lastId=o.lastId;\r
99310 s.soapInfo=o.soapInfo;\r
99311 s.accountName=o.accountName;\r
99312 s.searchFor=this._searchFor;\r
99313 if(n){\r
99314 for(var a in n){\r
99315 s[a]=n[a]\r
99316 }}\r
99317 this._doSearch(s,e,r,t)\r
99318 };\r
99319 ZmSearchController.prototype.resetSearchAllAccounts=function(){\r
99320 var e=this.searchAllAccounts&&this._searchToolBar.getButton(ZmSearchToolBar.SEARCH_MENU_BUTTON);\r
99321 var n=e&&e.getMenu();\r
99322 var o=n&&n.getItemById(ZmSearchToolBar.MENUITEM_ID,ZmId.SEARCH_ALL_ACCOUNTS);\r
99323 if(o){\r
99324 o.setChecked(false,true);\r
99325 var a=n.getSelectedItem();\r
99326 var t=this._inclSharedItems?this._getSharedImage(a):a.getImage();\r
99327 e.setImage(t);\r
99328 this.searchAllAccounts=false\r
99329 }};\r
99330 ZmSearchController.prototype.resetSearchToolbar=function(){\r
99331 var e=this._searchToolBar.getButton(ZmSearchToolBar.SEARCH_MENU_BUTTON);\r
99332 var t=e?e.getMenu().getItemById(ZmSearchToolBar.MENUITEM_ID,ZmId.SEARCH_GAL):null;\r
99333 if(t){\r
99334 t.setVisible(appCtxt.getActiveAccount().isZimbraAccount)\r
99335 }};\r
99336 ZmSearchController.prototype.getTypes=function(o){\r
99337 var a=new AjxVector();\r
99338 var e=o.searchFor||this._searchFor;\r
99339 var t;\r
99340 if((e==ZmId.SEARCH_MAIL||e==ZmId.SEARCH_ANY)&&appCtxt.get(ZmSetting.MAIL_ENABLED)){\r
99341 t=appCtxt.getApp(ZmApp.MAIL).getGroupMailBy()\r
99342 }\r
99343 if(e==ZmId.SEARCH_MAIL){\r
99344 a.add(t)\r
99345 }else{\r
99346 if(e==ZmId.SEARCH_ANY){\r
99347 if(appCtxt.get(ZmSetting.MAIL_ENABLED)&&t){\r
99348 a.add(t)\r
99349 }\r
99350 if(appCtxt.get(ZmSetting.CONTACTS_ENABLED)){\r
99351 a.add(ZmItem.CONTACT)\r
99352 }\r
99353 if(appCtxt.get(ZmSetting.CALENDAR_ENABLED)){\r
99354 a.add(ZmItem.APPT)\r
99355 }\r
99356 if(appCtxt.get(ZmSetting.TASKS_ENABLED)){\r
99357 a.add(ZmItem.TASK)\r
99358 }\r
99359 if(appCtxt.get(ZmSetting.NOTEBOOK_ENABLED)){\r
99360 a.add(ZmItem.PAGE)\r
99361 }\r
99362 if(appCtxt.get(ZmSetting.BRIEFCASE_ENABLED)){\r
99363 a.add(ZmItem.BRIEFCASE)\r
99364 }}else{\r
99365 a.add(e);\r
99366 if(e==ZmItem.PAGE){\r
99367 a.add(ZmItem.DOCUMENT)\r
99368 }}}\r
99369 return a\r
99370 };\r
99371 ZmSearchController.prototype.updateOverview=function(e){\r
99372 var t=e||appCtxt.getCurrentSearch();\r
99373 var h,a;\r
99374 if(t){\r
99375 if(t.folderId){\r
99376 h=this._getNormalizedId(t.folderId);\r
99377 var n=appCtxt.getFolderTree();\r
99378 var o=n&&n.getById(h);\r
99379 a=o?o.type:ZmOrganizer.FOLDER\r
99380 }else{\r
99381 if(t.tagId){\r
99382 h=this._getNormalizedId(t.tagId);\r
99383 a=ZmOrganizer.TAG\r
99384 }else{\r
99385 if(t.searchId){\r
99386 h=this._getNormalizedId(t.searchId);\r
99387 a=ZmOrganizer.SEARCH\r
99388 }}}\r
99389 var r=appCtxt.getCurrentApp();\r
99390 var s=r&&r.getOverview();\r
99391 if(s){\r
99392 s.setSelected(h,a)\r
99393 }}};\r
99394 ZmSearchController.prototype._getSuitableSortBy=function(t){\r
99395 var o;\r
99396 if(t.size()==1){\r
99397 var a=t.get(0);\r
99398 var e;\r
99399 switch(a){\r
99400 case ZmItem.CONV:e=ZmId.VIEW_CONVLIST;\r
99401 break;\r
99402 case ZmItem.MSG:e=ZmId.VIEW_TRAD;\r
99403 break;\r
99404 case ZmItem.CONTACT:e=ZmId.VIEW_CONTACT_SIMPLE;\r
99405 break;\r
99406 case ZmItem.APPT:e=ZmId.VIEW_CAL;\r
99407 break;\r
99408 case ZmItem.TASK:e=ZmId.VIEW_TASKLIST;\r
99409 break;\r
99410 case ZmId.SEARCH_GAL:e=ZmId.VIEW_CONTACT_SIMPLE;\r
99411 break\r
99412 }\r
99413 if(e){\r
99414 o=appCtxt.get(ZmSetting.SORTING_PREF,e)\r
99415 }}\r
99416 return o\r
99417 };\r
99418 ZmSearchController.prototype._doSearch=function(a,d,u,s){\r
99419 var e=this._searchFor=a.searchFor||this._searchFor;\r
99420 appCtxt.notifyZimlets("onSearch",[a.query]);\r
99421 if(this._searchToolBar){\r
99422 var c=(appCtxt.get(ZmSetting.SHOW_SEARCH_STRING)||a.userText)?a.query:null;\r
99423 this._searchToolBar.setSearchFieldValue(c||"");\r
99424 if(appCtxt.multiAccounts&&a.userText&&this.searchAllAccounts){\r
99425 appCtxt.getCurrentApp().getOverviewContainer().deselectAll()\r
99426 }}\r
99427 var r=a.types||this.getTypes(a);\r
99428 if(r instanceof Array){\r
99429 r=AjxVector.fromArray(r)\r
99430 }\r
99431 if(e==ZmId.SEARCH_MAIL){\r
99432 a=appCtxt.getApp(ZmApp.MAIL).getSearchParams(a)\r
99433 }\r
99434 if(e==ZmItem.TASK){\r
99435 var o=AjxDispatcher.run("GetTaskListController");\r
99436 a.allowableTaskStatus=(o)?o.getAllowableTaskStatus():null\r
99437 }\r
99438 var l=(e==ZmId.SEARCH_ANY);\r
99439 if(a.searchAllAccounts&&!a.queryHint){\r
99440 a.queryHint=appCtxt.accountList.generateQuery(null,r);\r
99441 a.accountName=appCtxt.accountList.mainAccount.name\r
99442 }else{\r
99443 if(this._inclSharedItems){\r
99444 a.queryHint=l?ZmSearchController.QUERY_ISREMOTE:ZmSearchController.generateQueryForShares(r.getArray())\r
99445 }}\r
99446 a.contactSource=(r.contains(ZmItem.CONTACT)||r.contains(ZmId.SEARCH_GAL))?this._contactSource:null;\r
99447 a.sortBy=a.sortBy||this._getSuitableSortBy(r);\r
99448 a.types=r;\r
99449 var f=new ZmSearch(a);\r
99450 var t=appCtxt.isOffline&&appCtxt.getById(f.folderId);\r
99451 if(t&&(t.nId==ZmFolder.ID_DRAFTS||t.nId==ZmFolder.ID_OUTBOX)){\r
99452 this.searchAllAccounts=true;\r
99453 f.accountName=appCtxt.accountList.mainAccount.name;\r
99454 f.query="";\r
99455 f.folderId=t.nId;\r
99456 f.queryHint=appCtxt.accountList.generateQuery(t.nId)\r
99457 }\r
99458 var h=[f,d,l,u,a.noUpdateOverview];\r
99459 var m=new AjxCallback(this,this._handleResponseDoSearch,h);\r
99460 if(!s){\r
99461 s=new AjxCallback(this,this._handleErrorDoSearch,[f,l])\r
99462 }\r
99463 if(e==ZmItem.APPT){\r
99464 var n=AjxDispatcher.run("GetCalController");\r
99465 if(n&&r.contains(ZmItem.APPT)){\r
99466 n.handleUserSearch(a,m)\r
99467 }else{\r
99468 f.execute({\r
99469 callback:m,errorCallback:s}\r
99470 )\r
99471 }}else{\r
99472 f.execute({\r
99473 callback:m,errorCallback:s}\r
99474 )\r
99475 }};\r
99476 ZmSearchController.prototype._handleResponseDoSearch=function(o,t,n,r,s,e){\r
99477 if(this._searchFor==ZmItem.APPT){\r
99478 this._results=new ZmSearchResult(o);\r
99479 return\r
99480 }\r
99481 var a=e.getResponse();\r
99482 this.currentSearch=o;\r
99483 if(!a.type){\r
99484 a.type=o.types.get(0)\r
99485 }\r
99486 if(!t){\r
99487 this._showResults(a,o,n,s)\r
99488 }\r
99489 if(r){\r
99490 r.run(e)\r
99491 }};\r
99492 ZmSearchController.prototype._showResults=function(o,l,h,e){\r
99493 if(this._results&&(this._results.type==o.type)&&this._results.dtor){\r
99494 this._results.dtor()\r
99495 }\r
99496 this._results=o;\r
99497 var t=(this._contactSource==ZmId.SEARCH_GAL);\r
99498 if(appCtxt.get(ZmSetting.SAVED_SEARCHES_ENABLED)){\r
99499 var r=this._searchToolBar&&this._searchToolBar.getButton(ZmSearchToolBar.SAVE_BUTTON);\r
99500 if(r){\r
99501 r.setEnabled(!t)\r
99502 }}\r
99503 var s=h?ZmItem.MIXED:o.type;\r
99504 var n=new AjxCallback(this,this._handleLoadShowResults,[o,l,e]);\r
99505 var a=appCtxt.getApp(ZmItem.APP[s]);\r
99506 a.currentSearch=l;\r
99507 a.currentQuery=l.query;\r
99508 a.showSearchResults(o,n,t,l.folderId)\r
99509 };\r
99510 ZmSearchController.prototype._handleLoadShowResults=function(t,e,a){\r
99511 appCtxt.setCurrentList(t.getResults(t.type));\r
99512 if(!a){\r
99513 this.updateOverview(e)\r
99514 }};\r
99515 ZmSearchController.prototype._handleErrorDoSearch=function(a,o,t){\r
99516 if(t.code==ZmCsfeException.MAIL_NO_SUCH_TAG||t.code==ZmCsfeException.MAIL_QUERY_PARSE_ERROR||t.code==ZmCsfeException.MAIL_TOO_MANY_TERMS||(t.code==ZmCsfeException.MAIL_NO_SUCH_FOLDER&&!(t.data.itemId&&t.data.itemId.length))){\r
99517 var n=t.getErrorMsg();\r
99518 appCtxt.setStatusMsg(n,ZmStatusView.LEVEL_WARNING);\r
99519 var e=new ZmSearchResult(a);\r
99520 e.type=a.types?a.types.get(0):null;\r
99521 this._showResults(e,a,o);\r
99522 return true\r
99523 }\r
99524 return false\r
99525 };\r
99526 ZmSearchController.generateQueryForShares=function(r,s){\r
99527 var d=window.parentAppCtxt||window.appCtxt;\r
99528 var h=[];\r
99529 for(var o=0;\r
99530 o<r.length;\r
99531 o++){\r
99532 var l=r[o];\r
99533 var a=d.getApp(ZmItem.APP[l]);\r
99534 if(a){\r
99535 var e=a.getRemoteFolderIds(s);\r
99536 for(var n=0;\r
99537 n<e.length;\r
99538 n++){\r
99539 var t=e[n];\r
99540 var c=AjxUtil.isNumeric(t)?t:['"',t,'"'].join("");\r
99541 h.push("inid:"+c)\r
99542 }}}\r
99543 if(h.length>0){\r
99544 h.push("is:local");\r
99545 return h.join(" OR ")\r
99546 }\r
99547 return null\r
99548 };\r
99549 ZmSearchController.prototype._searchFieldCallback=function(t){\r
99550 var e=appCtxt.get(ZmSetting.VIEW_AS_HTML);\r
99551 this.search({\r
99552 query:t,userText:true,getHtml:e}\r
99553 )\r
99554 };\r
99555 ZmSearchController.prototype._searchButtonListener=function(o){\r
99556 var a=this._searchToolBar.getButton(ZmSearchToolBar.SEARCH_MENU_BUTTON);\r
99557 var r=a&&a.getMenu();\r
99558 var t=r&&r.getSelectedItem();\r
99559 var n=t&&t.getData("CustomSearchItem");\r
99560 if(n){\r
99561 n[2].run(o)\r
99562 }else{\r
99563 var h=this._searchToolBar.getSearchFieldValue();\r
99564 var e=(h.length>0);\r
99565 if(h){\r
99566 this._currentQuery=null\r
99567 }else{\r
99568 h=this._currentQuery?this._currentQuery:""\r
99569 }\r
99570 appCtxt.notifyZimlets("onSearchButtonClick",[h]);\r
99571 var s=appCtxt.get(ZmSetting.VIEW_AS_HTML);\r
99572 this.search({\r
99573 query:h,userText:e,getHtml:s}\r
99574 )\r
99575 }};\r
99576 ZmSearchController.prototype._browseButtonListener=function(e){\r
99577 this.showBrowseView()\r
99578 };\r
99579 ZmSearchController.prototype._saveButtonListener=function(t){\r
99580 var e=appCtxt.getOverviewController().getTreeController(ZmOrganizer.SEARCH);\r
99581 if(!e._newCb){\r
99582 e._newCb=new AjxCallback(e,e._newCallback)\r
99583 }\r
99584 var a={\r
99585 search:this._results&&this._results.search,showOverview:(this._searchFor==ZmId.SEARCH_MAIL)};\r
99586 ZmController.showDialog(e._getNewDialog(),e._newCb,a)\r
99587 };\r
99588 ZmSearchController.prototype._searchMenuListener=function(r,e){\r
99589 var o=this._searchToolBar.getButton(ZmSearchToolBar.SEARCH_MENU_BUTTON);\r
99590 if(!o){\r
99591 return\r
99592 }\r
99593 var t=o.getMenu();\r
99594 var l=r?r.item:(t.getItemById(ZmSearchToolBar.MENUITEM_ID,e));\r
99595 if(!l||(!!(l._style&DwtMenuItem.SEPARATOR_STYLE))){\r
99596 return\r
99597 }\r
99598 e=l.getData(ZmSearchToolBar.MENUITEM_ID);\r
99599 var a=t.getSelectedItem();\r
99600 var u=t.getItemById(ZmSearchToolBar.MENUITEM_ID,ZmId.SEARCH_SHARED);\r
99601 if(e==ZmId.SEARCH_GAL){\r
99602 this._contactSource=ZmId.SEARCH_GAL;\r
99603 if(u){\r
99604 u.setChecked(false,true);\r
99605 u.setEnabled(false)\r
99606 }}else{\r
99607 if(u){\r
99608 if(e==ZmItem.APPT||e==ZmId.SEARCH_CUSTOM){\r
99609 u.setChecked(false,true);\r
99610 u.setEnabled(false)\r
99611 }else{\r
99612 u.setEnabled(true)\r
99613 }}\r
99614 this._contactSource=ZmItem.CONTACT\r
99615 }\r
99616 this._inclSharedItems=u&&u.getChecked();\r
99617 var n=t.getItemById(ZmSearchToolBar.MENUITEM_ID,ZmId.SEARCH_ALL_ACCOUNTS);\r
99618 if(n){\r
99619 if(e==ZmItem.APPT){\r
99620 this.resetSearchAllAccounts();\r
99621 n.setEnabled(false)\r
99622 }else{\r
99623 n.setEnabled(true);\r
99624 this.searchAllAccounts=n&&n.getChecked()\r
99625 }}\r
99626 if(e==ZmId.SEARCH_SHARED){\r
99627 var s=this.searchAllAccounts?n.getImage():a.getImage();\r
99628 if(this._inclSharedItems){\r
99629 var d=a&&a.getData(ZmSearchToolBar.MENUITEM_ID);\r
99630 s=d?((ZmSearchToolBar.SHARE_ICON[d])||l.getImage()):l.getImage()\r
99631 }\r
99632 o.setImage(s)\r
99633 }else{\r
99634 if(e==ZmId.SEARCH_ALL_ACCOUNTS){\r
99635 var s=(this.searchAllAccounts&&!this._inclSharedItems)?l.getImage():(this._inclSharedItems)?this._getSharedImage(a):a.getImage();\r
99636 o.setImage(s)\r
99637 }else{\r
99638 this._searchFor=e;\r
99639 var s=l.getImage();\r
99640 if(this._inclSharedItems){\r
99641 s=this._getSharedImage(a)\r
99642 }else{\r
99643 if(this.searchAllAccounts){\r
99644 s=n.getImage()\r
99645 }}\r
99646 o.setImage(s);\r
99647 o.setText(l.getText())\r
99648 }}\r
99649 var c=ZmMsg[ZmSearchToolBar.TT_MSG_KEY[e]];\r
99650 if(e==ZmId.SEARCH_MAIL){\r
99651 var h=appCtxt.getApp(ZmApp.MAIL).getGroupMailBy();\r
99652 c=ZmMsg[ZmSearchToolBar.TT_MSG_KEY[h]]\r
99653 }\r
99654 o.setToolTipContent(c)\r
99655 };\r
99656 ZmSearchController.prototype._getSharedImage=function(e){\r
99657 var t=e&&e.getData(ZmSearchToolBar.MENUITEM_ID);\r
99658 return(t&&ZmSearchToolBar.SHARE_ICON[t])?ZmSearchToolBar.SHARE_ICON[t]:ZmSearchToolBar.ICON[ZmId.SEARCH_SHARED]\r
99659 };\r
99660 ZmSearchController.prototype._getNormalizedId=function(a){\r
99661 var t=a;\r
99662 var e=appCtxt.getActiveAccount();\r
99663 if(!e.isMain&&a.indexOf(":")==-1){\r
99664 t=e.id+":"+a\r
99665 }\r
99666 return t\r
99667 }\r
99668 }\r
99669 if(AjxPackage.define("zimbraMail.im.model.ZmRoster")){\r
99670 ZmRoster=function(e){\r
99671 ZmModel.call(this,ZmEvent.S_ROSTER);\r
99672 this._gateways={\r
99673 byService:{}\r
99674 ,byDomain:{}\r
99675 ,array:[]};\r
99676 this._notificationBuffer=[];\r
99677 this._imApp=e\r
99678 };\r
99679 ZmRoster.prototype=new ZmModel;\r
99680 ZmRoster.prototype.constructor=ZmRoster;\r
99681 ZmRoster.F_PRESENCE="ZmRoster.presence";\r
99682 ZmRoster.NOTIFICATION_FOO_TIMEOUT=10000;\r
99683 ZmRoster.GATEWAY_EVENT="gateway list";\r
99684 ZmRoster.prototype.toString=function(){\r
99685 return"ZmRoster"\r
99686 };\r
99687 ZmRoster.prototype.getPrivacyList=function(){\r
99688 return this._privacyList=this._privacyList||new ZmImPrivacyList(this)\r
99689 };\r
99690 ZmRoster.prototype.getChatList=function(){\r
99691 if(!this._chatList){\r
99692 this._chatList=new ZmChatList(this)\r
99693 }\r
99694 return this._chatList\r
99695 };\r
99696 ZmRoster.prototype.getMyAddress=function(){\r
99697 return ZmImApp.INSTANCE.getService().getMyAddress()\r
99698 };\r
99699 ZmRoster.prototype.getRosterItem=function(a,e){\r
99700 if(!a){\r
99701 return null\r
99702 }\r
99703 a=a.toLowerCase();\r
99704 var t=this.getRosterItemList().getByAddr(a);\r
99705 if(t){\r
99706 return t\r
99707 }\r
99708 if(e){\r
99709 a=ZmImAddress.parse(a);\r
99710 t=a?this.getRosterItemList().getByAddr(a.screenName):null;\r
99711 if(t){\r
99712 return t\r
99713 }\r
99714 if(a){\r
99715 a=this.makeServerAddress(a.screenName,a.service);\r
99716 if(a){\r
99717 return this.getRosterItemList().getByAddr(a)\r
99718 }}}};\r
99719 ZmRoster.prototype.getRosterItemList=function(){\r
99720 if(!this._rosterItemList){\r
99721 this._rosterItemList=new ZmRosterItemList()\r
99722 }\r
99723 return this._rosterItemList\r
99724 };\r
99725 ZmRoster.prototype.getPresence=function(){\r
99726 if(!this._rosterPresence){\r
99727 this._rosterPresence=new ZmRosterPresence()\r
99728 }\r
99729 return this._rosterPresence\r
99730 };\r
99731 ZmRoster.prototype.notifyPresence=function(){\r
99732 var e={};\r
99733 e[ZmRoster.F_PRESENCE]=this.getPresence();\r
99734 this._notify(ZmEvent.E_MODIFY,{\r
99735 fields:e}\r
99736 )\r
99737 };\r
99738 ZmRoster.prototype.reload=function(t){\r
99739 this.getRosterItemList().removeAllItems();\r
99740 var a=new AjxCallback(this,this._handleResponseReload);\r
99741 var e={\r
99742 asyncMode:true,noBusyOverlay:t};\r
99743 ZmImApp.INSTANCE.getService().getRoster(a,e)\r
99744 };\r
99745 ZmRoster.prototype._handleResponseReload=function(r){\r
99746 if(!r){\r
99747 return\r
99748 }\r
99749 var s=this.getRosterItemList();\r
99750 if(r.items&&r.items.item){\r
99751 var t=r.items.item;\r
99752 if(t.length){\r
99753 var e=new Array(t.length);\r
99754 for(var a=0;\r
99755 a<t.length;\r
99756 a++){\r
99757 var n=t[a];\r
99758 if(n.subscription=="TO"||n.subscription=="BOTH"){\r
99759 var o=new ZmRosterPresence();\r
99760 o.setFromJS(n.presence);\r
99761 e[a]=new ZmRosterItem(n.addr,s,n.name,o,n.groups)\r
99762 }}\r
99763 s.addItems(e)\r
99764 }}\r
99765 if(r.presence){\r
99766 if(/XA|AWAY/.test(r.presence.show)){\r
99767 r.presence.show="ONLINE";\r
99768 this.setPresence("ONLINE")\r
99769 }\r
99770 this.getPresence().setFromJS(r.presence);\r
99771 this.notifyPresence()\r
99772 }\r
99773 ZmImApp.INSTANCE.getService().startIgnoreNotify()\r
99774 };\r
99775 ZmRoster.prototype.createRosterItem=function(a,t,e){\r
99776 ZmImApp.INSTANCE.getService().createRosterItem(a,t,e)\r
99777 };\r
99778 ZmRoster.prototype.setPresence=function(e,t,a,o){\r
99779 ZmImApp.INSTANCE.getService().setPresence(e,t,a,o);\r
99780 ZmImApp.INSTANCE.getService().startIgnoreNotify()\r
99781 };\r
99782 ZmRoster.prototype.pushNotification=function(e){\r
99783 if(!this._gateways){\r
99784 this._notificationBuffer.push(e)\r
99785 }else{\r
99786 this.handleNotification(e)\r
99787 }};\r
99788 ZmRoster.prototype.refresh=function(){\r
99789 this._requestGateways(new AjxCallback(this,this.reload))\r
99790 };\r
99791 ZmRoster.prototype.handleNotification=function(e){\r
99792 ZmImApp.INSTANCE.getService().handleNotification(e)\r
99793 };\r
99794 ZmRoster.prototype.getConferenceTree=function(){\r
99795 AjxDispatcher.require(["IMConference"]);\r
99796 if(!this._conferenceTree){\r
99797 this._conferenceTree=new ZmTree(ZmOrganizer.CONFERENCE_ITEM);\r
99798 this._conferenceTree.root=new ZmOrganizer({\r
99799 tree:this._conferenceTree}\r
99800 )\r
99801 }\r
99802 return this._conferenceTree\r
99803 };\r
99804 ZmRoster.prototype.getConferenceServices=function(o,a){\r
99805 var e=this.getConferenceTree();\r
99806 if(!e.root.children.size()||a){\r
99807 var t=new AjxCallback(this,this._handleResponceGetConferenceServices,[o]);\r
99808 ZmImApp.INSTANCE.getService().getConferenceServices(t)\r
99809 }else{\r
99810 o.run(e.root.children.getArray())\r
99811 }};\r
99812 ZmRoster.prototype._handleResponceGetConferenceServices=function(h,s){\r
99813 var t=this.getConferenceTree();\r
99814 var a=t.root;\r
99815 for(var n=0,r=s.length;\r
99816 n<r;\r
99817 n++){\r
99818 var o={\r
99819 id:s[n].addr,tree:t,name:s[n].name,parent:a};\r
99820 var e=new ZmConferenceService(o);\r
99821 a.children.add(e)\r
99822 }\r
99823 h.run(a.children.getArray())\r
99824 };\r
99825 ZmRoster.prototype.joinChatRequest=function(e,o){\r
99826 var t=AjxSoapDoc.create("IMJoinConferenceRoomRequest","urn:zimbraIM");\r
99827 var a=t.getMethod();\r
99828 a.setAttribute("thread",e);\r
99829 a.setAttribute("addr",o);\r
99830 appCtxt.getAppController().sendRequest({\r
99831 soapDoc:t,asyncMode:true}\r
99832 )\r
99833 };\r
99834 ZmRoster.prototype.sendSubscribeAuthorization=function(e,t,a){\r
99835 ZmImApp.INSTANCE.getService().sendSubscribeAuthorization(e,t,a)\r
99836 };\r
99837 ZmRoster.prototype.addGatewayListListener=function(e){\r
99838 this._evtMgr.addListener(ZmRoster.GATEWAY_EVENT,e)\r
99839 };\r
99840 ZmRoster.prototype.reconnectGateway=function(e){\r
99841 ZmImApp.INSTANCE.getService().reconnectGateway(e);\r
99842 ZmImApp.INSTANCE.getService().startIgnoreNotify()\r
99843 };\r
99844 ZmRoster.prototype.unregisterGateway=function(e,t){\r
99845 ZmImApp.INSTANCE.getService().unregisterGateway(e,t);\r
99846 ZmImApp.INSTANCE.getService().startIgnoreNotify()\r
99847 };\r
99848 ZmRoster.prototype.registerGateway=function(e,o,a,t){\r
99849 ZmImApp.INSTANCE.getService().registerGateway(e,o,a,t);\r
99850 ZmImApp.INSTANCE.getService().startIgnoreNotify();\r
99851 this.getGatewayByType(e).nick=o\r
99852 };\r
99853 ZmRoster.prototype._requestGateways=function(e){\r
99854 ZmImApp.INSTANCE.getService().getGateways(new AjxCallback(this,this._handleRequestGateways,[e]))\r
99855 };\r
99856 ZmRoster.prototype._handleRequestGateways=function(s,n){\r
99857 var a={};\r
99858 var e={};\r
99859 for(var t=0;\r
99860 t<n.length;\r
99861 ++t){\r
99862 var o=n[t]=new ZmImGateway(n[t]);\r
99863 a[n[t].type.toLowerCase()]=o;\r
99864 e[n[t].domain.toLowerCase()]=o\r
99865 }\r
99866 this._gateways={\r
99867 byService:a,byDomain:e,array:n};\r
99868 for(var t=0;\r
99869 t<this._notificationBuffer.length;\r
99870 ++t){\r
99871 this.handleNotification(this._notificationBuffer[t])\r
99872 }\r
99873 this._notificationBuffer=[];\r
99874 this._evtMgr.notifyListeners(ZmRoster.GATEWAY_EVENT,{\r
99875 roster:this}\r
99876 );\r
99877 if(s){\r
99878 s.run()\r
99879 }};\r
99880 ZmRoster.prototype.getGatewayByType=function(e){\r
99881 return this._gateways.byService[e.toLowerCase()]\r
99882 };\r
99883 ZmRoster.prototype.getGatewayByDomain=function(e){\r
99884 return this._gateways.byDomain[e.toLowerCase()]\r
99885 };\r
99886 ZmRoster.prototype.getGateways=function(){\r
99887 return this._gateways.array\r
99888 };\r
99889 ZmRoster.prototype.makeServerAddress=function(t,e){\r
99890 return ZmImApp.INSTANCE.getService().makeServerAddress(t,e)\r
99891 };\r
99892 ZmRoster.prototype.makeGenericAddress=function(e){\r
99893 e=this.breakDownAddress(e);\r
99894 if(e.type.toLowerCase()=="xmpp"){\r
99895 e.type="local"\r
99896 }\r
99897 return ZmImAddress.make(e.type,e.addr)\r
99898 };\r
99899 ZmRoster.prototype.breakDownAddress=function(o){\r
99900 var t=/@(.*)$/;\r
99901 var e=t.exec(o);\r
99902 if(e){\r
99903 var a=this.getGatewayByDomain(e[1]);\r
99904 if(a){\r
99905 return{\r
99906 type:a.type,addr:o.substr(0,e.index),gateway:a}\r
99907 }}\r
99908 return{\r
99909 type:"XMPP",addr:o}\r
99910 };\r
99911 ZmRoster.prototype.getGroups=function(){\r
99912 return AjxVector.fromArray(this.getRosterItemList().getGroupsArray())\r
99913 };\r
99914 ZmRoster.prototype.setIdle=function(e){\r
99915 if(ZmImApp.INSTANCE.getService().isLoggedIn()){\r
99916 ZmImApp.INSTANCE.getService().setIdle(e,this._idleTimer.timeout)\r
99917 }};\r
99918 ZmRoster.prototype.onServiceAddChatMessage=function(e){\r
99919 appCtxt.getApp(ZmApp.IM).prepareVisuals();\r
99920 var o=this.getRosterItem(e.from);\r
99921 if(o){\r
99922 o._notifyTyping(false)\r
99923 }\r
99924 var a=this.getChatList();\r
99925 var t=a.getChatByThread(e.thread);\r
99926 if(t==null){\r
99927 if(!e.fromMe){\r
99928 t=a.getChatByRosterAddr(e.from,true,true)\r
99929 }else{\r
99930 t=a.getChatByRosterAddr(e.to,false)\r
99931 }\r
99932 if(t){\r
99933 t.setThread(e.thread)\r
99934 }}\r
99935 if(t){\r
99936 if(!e.fromMe){\r
99937 if(appCtxt.get(ZmSetting.IM_PREF_FLASH_BROWSER)){\r
99938 AjxDispatcher.require("Alert");\r
99939 ZmBrowserAlert.getInstance().start(ZmMsg.newInstantMessage)\r
99940 }\r
99941 if(appCtxt.get(ZmSetting.IM_PREF_DESKTOP_ALERT)){\r
99942 AjxDispatcher.require("Alert");\r
99943 ZmDesktopAlert.getInstance().start(ZmMsg.newInstantMessage,e.getTextBody())\r
99944 }}\r
99945 t.addMessage(e)\r
99946 }};\r
99947 ZmRoster.prototype.onServiceAddBuddy=function(h,o,n,t,a){\r
99948 var r=this.getRosterItemList();\r
99949 var s=new ZmRosterItem(h,r,o,n,t);\r
99950 r.addItem(s);\r
99951 if(a){\r
99952 this._newRosterItemtoastFormatter=this._newRosterItemtoastFormatter||new AjxMessageFormat(ZmMsg.imNewRosterItemToast);\r
99953 var e=this._newRosterItemtoastFormatter.format([s.getDisplayName()]);\r
99954 ZmTaskbarController.INSTANCE.setMessage(e)\r
99955 }};\r
99956 ZmRoster.prototype.onServiceRemoveBuddy=function(n,t){\r
99957 var o=this.getRosterItemList();\r
99958 var a=o.getByAddr(n);\r
99959 if(a){\r
99960 var e=a.getDisplayName();\r
99961 o.removeItem(a);\r
99962 if(t){\r
99963 this._removeRosterItemToastFormatter=this._removeRosterItemToastFormatter||new AjxMessageFormat(ZmMsg.imRemoveRosterItemToast);\r
99964 ZmTaskbarController.INSTANCE.setMessage(this._removeRosterItemToastFormatter.format([e]))\r
99965 }}};\r
99966 ZmRoster.prototype.onServiceRequestBuddyAuth=function(t){\r
99967 var e=this.getRosterItem(t);\r
99968 ZmTaskbarController.INSTANCE.showSubscribeRequest(t,e)\r
99969 };\r
99970 ZmRoster.prototype.onServiceSetBuddyPresence=function(s,r,o){\r
99971 var n=s.getPresence().getShow();\r
99972 if(s.getPresence().setFromJS(r)){\r
99973 s._notifyPresence();\r
99974 if(n!=ZmRosterPresence.SHOW_UNKNOWN){\r
99975 this._presenceToastFormatter=this._presenceToastFormatter||new AjxMessageFormat(ZmMsg.imStatusToast);\r
99976 var t=this._presenceToastFormatter.format([s.getDisplayName(),AjxStringUtil.htmlEncode(s.getPresence().getShowText())]);\r
99977 var e=n==s.getPresence().getShow();\r
99978 if(o&&((!e&&appCtxt.get(ZmSetting.IM_PREF_NOTIFY_PRESENCE))||(e&&appCtxt.get(ZmSetting.IM_PREF_NOTIFY_STATUS)))){\r
99979 ZmTaskbarController.INSTANCE.setMessage(t);\r
99980 var a=this.getChatList().getChatByRosterAddr(r.from);\r
99981 if(a){\r
99982 a.addMessage(ZmChatMessage.system(t))\r
99983 }}}}};\r
99984 ZmRoster.prototype.onServiceLoggedIn=function(t){\r
99985 if(!this._idleTimer){\r
99986 this._idleTimer=new DwtIdleTimer(appCtxt.get(ZmSetting.IM_PREF_IDLE_TIMEOUT)*60*1000,new AjxCallback(this,this.setIdle));\r
99987 if(!appCtxt.get(ZmSetting.IM_PREF_REPORT_IDLE)){\r
99988 this._idleTimer.kill()\r
99989 }}\r
99990 this._notify(ZmEvent.E_LOAD,{\r
99991 loggedIn:true}\r
99992 );\r
99993 var a=new AjxCallback(this,this._loggedInGatewayCallback,[t]);\r
99994 var e={\r
99995 asyncMode:true,noBusyOverlay:true};\r
99996 ZmImApp.INSTANCE.getService().getGateways(a,e)\r
99997 };\r
99998 ZmRoster.prototype._loggedInGatewayCallback=function(e,t){\r
99999 this._handleRequestGateways(null,t);\r
100000 ZmImApp.INSTANCE.getService().initializePresence(e?e.presence:null);\r
100001 this.reload();\r
100002 if(e&&e.callback){\r
100003 e.callback.run(this)\r
100004 }};\r
100005 ZmRoster.prototype.onServiceLoggedOut=function(){\r
100006 if(this.getPresence().setFromJS({\r
100007 show:ZmRosterPresence.SHOW_OFFLINE}\r
100008 )){\r
100009 this.notifyPresence()\r
100010 }\r
100011 this.getRosterItemList().removeAllItems();\r
100012 this._notify(ZmEvent.E_LOAD,{\r
100013 loggedIn:false}\r
100014 )\r
100015 };\r
100016 ZmRosterTreeGroups=function(e){\r
100017 this._groups=e.getGroups()\r
100018 };\r
100019 ZmRosterTreeGroups.prototype.constructor=ZmRosterTreeGroups;\r
100020 ZmRosterTreeGroups.prototype.autocompleteMatch=function(r,h){\r
100021 r=r.toLowerCase();\r
100022 var e=[];\r
100023 var t=this._groups;\r
100024 var s=t.size();\r
100025 for(var o=0;\r
100026 o<s;\r
100027 o++){\r
100028 var n=t.get(o);\r
100029 if(n.toLowerCase().indexOf(r)==0){\r
100030 e.push({\r
100031 data:n,text:n}\r
100032 )\r
100033 }}\r
100034 h.run(e)\r
100035 };\r
100036 ZmRosterTreeGroups.prototype.isUniqueValue=function(e){\r
100037 return false\r
100038 };\r
100039 ZmRosterTreeGroups.prototype.getArray=function(){\r
100040 return this._groups\r
100041 }\r
100042 }\r
100043 if(AjxPackage.define("zimbraMail.im.view.ZmImOverview")){\r
100044 ZmImOverview=function(e,a){\r
100045 if(!a){\r
100046 a={}\r
100047 }\r
100048 var t={\r
100049 parent:e,parentElement:a.parentElement,className:"ZmImOverview",posStyle:a.posStyle||Dwt.ABSOLUTE_STYLE};\r
100050 DwtComposite.call(this,t);\r
100051 this._groupItems={};\r
100052 this._itemsById={};\r
100053 delete a.parentElement;\r
100054 this._options=a;\r
100055 this._sortBy=appCtxt.get("IM_PREF_BUDDY_SORT");\r
100056 this._actionMenuOps={\r
100057 root:[ZmOperation.NEW_ROSTER_ITEM,ZmOperation.NEW_ROSTER_GROUP,ZmOperation.SEP,ZmOperation.IM_TOGGLE_OFFLINE,ZmOperation.IM_TOGGLE_BLOCKED,ZmOperation.SEP,ZmOperation.IM_SORT_BY_PRESENCE,ZmOperation.IM_SORT_BY_NAME],buddy:[ZmOperation.IM_NEW_CHAT,ZmOperation.IM_BUDDY_ARCHIVE,ZmOperation.SEP,ZmOperation.EDIT_PROPS,ZmOperation.DELETE,ZmOperation.SEP,ZmOperation.IM_CREATE_CONTACT,ZmOperation.IM_ADD_TO_CONTACT,ZmOperation.IM_EDIT_CONTACT],assistant:[ZmOperation.IM_NEW_CHAT],group:[ZmOperation.NEW_ROSTER_ITEM,ZmOperation.IM_DELETE_GROUP]};\r
100058 this._actionMenuPopdownListener=new AjxListener(this,this._actionMenuPopdownListener);\r
100059 this._im_dragSrc=new DwtDragSource(Dwt.DND_DROP_MOVE);\r
100060 this._im_dragSrc.addDragListener(new AjxListener(this,this._dragListener));\r
100061 this.__filters=[];\r
100062 this.__filterOffline=appCtxt.get(ZmSetting.IM_PREF_HIDE_OFFLINE);\r
100063 if(this.__filterOffline){\r
100064 this.__filters.push(ZmImOverview.FILTER_OFFLINE_BUDDIES)\r
100065 }\r
100066 this.__filterBlocked=appCtxt.get(ZmSetting.IM_PREF_HIDE_BLOCKED);\r
100067 if(this.__filterBlocked){\r
100068 this.__filters.push(ZmImOverview.FILTER_BLOCKED_BUDDIES)\r
100069 }\r
100070 this._modelListeners=[];\r
100071 this._init()\r
100072 };\r
100073 ZmImOverview.prototype=new DwtComposite;\r
100074 ZmImOverview.prototype.constructor=ZmImOverview;\r
100075 ZmImOverview.prototype.toString=function(){\r
100076 return"ZmImOverview"\r
100077 };\r
100078 ZmImOverview.NO_MESSAGE=0;\r
100079 ZmImOverview.NOT_LOGGED_IN=1;\r
100080 ZmImOverview.LOADING=2;\r
100081 ZmImOverview.NO_BUDDIES=3;\r
100082 ZmImOverview.prototype.dispose=function(){\r
100083 for(var e in this._actionMenuOps){\r
100084 var n=this._actionMenuOps[e]._dwtControl;\r
100085 if(n){\r
100086 n.dispose()\r
100087 }}\r
100088 for(var t=0,a=this._modelListeners.length;\r
100089 t<a;\r
100090 t++){\r
100091 var o=this._modelListeners[t];\r
100092 o.modelObject.removeChangeListener(o.listener)\r
100093 }\r
100094 DwtComposite.prototype.dispose.call(this)\r
100095 };\r
100096 ZmImOverview.prototype.getTree=function(){\r
100097 return this._tree\r
100098 };\r
100099 ZmImOverview.prototype._dragListener=function(e){\r
100100 var t=e.srcControl.getData("ZmImOverview.data");\r
100101 switch(e.action){\r
100102 case DwtDragEvent.SET_DATA:if(t.buddy){\r
100103 e.srcData=t.buddy;\r
100104 e.srcData._drag_from_group=e.srcControl.parent.getData("ZmImOverview.data").group\r
100105 }\r
100106 break\r
100107 }};\r
100108 ZmImOverview.prototype._setCheck=function(e,t){\r
100109 e.setImage(t?"Check":null)\r
100110 };\r
100111 ZmImOverview.prototype._setCheckOp=function(a,o,t){\r
100112 var e=a.getMenuItem(o);\r
100113 if(e){\r
100114 this._setCheck(e,t)\r
100115 }};\r
100116 ZmImOverview.prototype._updateFilter=function(t,e){\r
100117 if(e){\r
100118 this.addFilter(t)\r
100119 }else{\r
100120 this.removeFilter(t)\r
100121 }};\r
100122 ZmImOverview.prototype._newGroupOkCallback=function(a){\r
100123 var t;\r
100124 if(!a.value){\r
100125 t=ZmMsg.nameEmpty\r
100126 }else{\r
100127 if(this._groupItems[a.value]){\r
100128 t=ZmMsg.imGroupExists\r
100129 }}\r
100130 if(t){\r
100131 var e=appCtxt.getMsgDialog();\r
100132 e.reset();\r
100133 e.setMessage(t,DwtMessageDialog.CRITICAL_STYLE);\r
100134 e.popup()\r
100135 }else{\r
100136 this._updateSpecialItems(ZmImOverview.NO_MESSAGE);\r
100137 this.getGroupItem(a.value).setExpanded(true);\r
100138 a.dialog.popdown()\r
100139 }};\r
100140 ZmImOverview.prototype._actionMenuListener=function(a,o){\r
100141 var e=o.item.getData(ZmOperation.KEY_ID);\r
100142 switch(e){\r
100143 case ZmOperation.IM_SORT_BY_PRESENCE:this.sort(ZmImApp.BUDDY_SORT_PRESENCE,true);\r
100144 break;\r
100145 case ZmOperation.IM_SORT_BY_NAME:this.sort(ZmImApp.BUDDY_SORT_NAME,true);\r
100146 break;\r
100147 case ZmOperation.IM_TOGGLE_OFFLINE:this.__filterOffline=!this.__filterOffline;\r
100148 appCtxt.getSettings().getSetting(ZmSetting.IM_PREF_HIDE_OFFLINE).setValue(this.__filterOffline);\r
100149 this._updateFilter(ZmImOverview.FILTER_OFFLINE_BUDDIES,this.__filterOffline);\r
100150 break;\r
100151 case ZmOperation.IM_TOGGLE_BLOCKED:this.__filterBlocked=!this.__filterBlocked;\r
100152 appCtxt.getSettings().getSetting(ZmSetting.IM_PREF_HIDE_BLOCKED).setValue(this.__filterBlocked);\r
100153 this._updateFilter(ZmImOverview.FILTER_BLOCKED_BUDDIES,this.__filterBlocked);\r
100154 break;\r
100155 case ZmOperation.NEW_ROSTER_GROUP:this._newGroupOkCallbackObj=this._newGroupOkCallbackObj||new AjxCallback(this,this._newGroupOkCallback);\r
100156 AjxDispatcher.require(["IM"]);\r
100157 var h={\r
100158 title:ZmMsg.imCreateNewGroup,label:ZmMsg.imGroupName,callback:this._newGroupOkCallbackObj};\r
100159 ZmPromptDialog.getInstance().popup(h);\r
100160 break;\r
100161 default:var r=appCtxt.getApp("IM").getImController();\r
100162 var s=r._listeners[e];\r
100163 if(s){\r
100164 var t={\r
100165 dwtObj:o.dwtObj};\r
100166 if(a&&this._actionedItem){\r
100167 var n=this._actionedItem.getData("ZmImOverview.data");\r
100168 t.type=n.type;\r
100169 t.buddy=n.buddy;\r
100170 t.group=n.group;\r
100171 t.actionedItem=this._actionedItem\r
100172 }\r
100173 s.handleEvent(t)\r
100174 }}};\r
100175 ZmImOverview.PRESENCE_SORT_INDEX={\r
100176 CHAT:1,ONLINE:2,AWAY:3,XA:4,DND:5,OFFLINE:6,UNKNOWN:7};\r
100177 ZmImOverview.CMP_SORT_BY_NAME=function(t,e){\r
100178 t=t.getData("ZmImOverview.data").buddy.getDisplayName();\r
100179 e=e.getData("ZmImOverview.data").buddy.getDisplayName();\r
100180 return t<e?-1:(t>e?1:0)\r
100181 };\r
100182 ZmImOverview.CMP_SORT_BY_PRESENCE=function(o,t){\r
100183 var e=ZmImOverview.PRESENCE_SORT_INDEX[o.getData("ZmImOverview.data").buddy.getPresence().getShow()]||100;\r
100184 var n=ZmImOverview.PRESENCE_SORT_INDEX[t.getData("ZmImOverview.data").buddy.getPresence().getShow()]||100;\r
100185 if(e==n){\r
100186 return ZmImOverview.CMP_SORT_BY_NAME(o,t)\r
100187 }\r
100188 return e-n\r
100189 };\r
100190 ZmImOverview.prototype.sort=function(t,e){\r
100191 if(t&&(t!=this._sortBy)){\r
100192 this._sortBy=t;\r
100193 appCtxt.getSettings().getSetting("IM_PREF_BUDDY_SORT").setValue(t)\r
100194 }\r
100195 if(e){\r
100196 if(this._sortActionId){\r
100197 AjxTimedAction.cancelAction(this._sortActionId)\r
100198 }\r
100199 this._doSort()\r
100200 }else{\r
100201 if(!this._sortActionId){\r
100202 this._doSortAction=this._doSortAction||new AjxTimedAction(this,this._doSort);\r
100203 this._sortActionId=AjxTimedAction.scheduleAction(this._doSortAction,1000)\r
100204 }}};\r
100205 ZmImOverview.prototype._doSort=function(){\r
100206 this._sortActionId=null;\r
100207 var e=this._rootItem;\r
100208 var t=e.getItems();\r
100209 var n=this._sortBy==ZmImApp.BUDDY_SORT_PRESENCE?ZmImOverview.CMP_SORT_BY_PRESENCE:ZmImOverview.CMP_SORT_BY_NAME;\r
100210 for(var a=0;\r
100211 a<t.length;\r
100212 ++a){\r
100213 var o=t[a];\r
100214 o.sort(n)\r
100215 }};\r
100216 ZmImOverview.prototype.chatWithBuddy=function(e){\r
100217 ZmTaskbarController.INSTANCE.chatWithRosterItem(e);\r
100218 ZmImOverview._popdownDialog()\r
100219 };\r
100220 ZmImOverview.prototype._actionMenuPopdownListener=function(){\r
100221 if(this._actionedItem){\r
100222 this._actionedItem._setActioned(false)\r
100223 }};\r
100224 ZmImOverview.prototype._getActionMenu=function(o,c,d){\r
100225 var t=this._actionMenuOps[o];\r
100226 if(t){\r
100227 var e=t._dwtControl;\r
100228 if(!e){\r
100229 var l=this;\r
100230 while(l&&!(l instanceof DwtDialog)){\r
100231 l=l.parent\r
100232 }\r
100233 e=t._dwtControl=new ZmActionMenu({\r
100234 parent:this,menuItems:t}\r
100235 );\r
100236 var a=new AjxListener(this,this._actionMenuListener,[true]);\r
100237 for(var n=0;\r
100238 n<e.opList.length;\r
100239 ++n){\r
100240 var u=e.opList[n];\r
100241 e.addSelectionListener(u,a)\r
100242 }\r
100243 e.addPopdownListener(this._actionMenuPopdownListener)\r
100244 }\r
100245 if(o=="buddy"){\r
100246 var h=c.getContact();\r
100247 e.getOp(ZmOperation.IM_ADD_TO_CONTACT).setVisible(!h);\r
100248 e.getOp(ZmOperation.IM_CREATE_CONTACT).setVisible(!h);\r
100249 e.getOp(ZmOperation.IM_EDIT_CONTACT).setVisible(!!h)\r
100250 }else{\r
100251 if(o=="root"){\r
100252 var r=ZmImApp.loggedIn();\r
100253 for(var n=0,s=e.opList.length;\r
100254 n<s;\r
100255 n++){\r
100256 var u=e.getMenuItem(e.opList[n]);\r
100257 if(u){\r
100258 u.setEnabled(r)\r
100259 }}\r
100260 if(r){\r
100261 this._setCheckOp(e,ZmOperation.IM_TOGGLE_OFFLINE,this.__filterOffline);\r
100262 this._setCheckOp(e,ZmOperation.IM_TOGGLE_BLOCKED,this.__filterBlocked);\r
100263 this._setCheckOp(e,ZmOperation.IM_SORT_BY_PRESENCE,this._sortBy==ZmImApp.BUDDY_SORT_PRESENCE);\r
100264 this._setCheckOp(e,ZmOperation.IM_SORT_BY_NAME,this._sortBy==ZmImApp.BUDDY_SORT_NAME)\r
100265 }}}\r
100266 return e\r
100267 }};\r
100268 ZmImOverview.prototype._treeMouseUpListener=function(a){\r
100269 if((a.button==DwtMouseEvent.RIGHT)){\r
100270 if(!this._treeViewActionMenu){\r
100271 var n=[ZmOperation.NEW_ROSTER_ITEM,ZmOperation.IM_NEW_CHAT];\r
100272 this._treeViewActionMenu=new ZmActionMenu({\r
100273 parent:this.shell,menuItems:n}\r
100274 );\r
100275 var o=new AjxListener(this,this._actionMenuListener,[false]);\r
100276 for(var e=0,t=n.length;\r
100277 e<t;\r
100278 e++){\r
100279 this._treeViewActionMenu.addSelectionListener(n[e],o)\r
100280 }}\r
100281 this._treeViewActionMenu.popup(0,a.docX,a.docY)\r
100282 }};\r
100283 ZmImOverview.prototype._treeSelectionListener=function(a){\r
100284 if(a.detail!=DwtTree.ITEM_ACTIONED&&a.detail!=DwtTree.ITEM_SELECTED&&a.detail!=DwtTree.ITEM_DBL_CLICKED){\r
100285 return\r
100286 }\r
100287 var o=a.item.getData("ZmImOverview.data");\r
100288 var t=o.type;\r
100289 var n=o.group;\r
100290 var e=o.buddy;\r
100291 if(a.detail==DwtTree.ITEM_ACTIONED){\r
100292 var s=this._getActionMenu(t,e,n);\r
100293 if(s){\r
100294 this._actionedItem=a.item;\r
100295 s.popup(0,a.docX,a.docY)\r
100296 }}else{\r
100297 if(a.detail==DwtTree.ITEM_SELECTED&&e){\r
100298 if(this._options.singleClick){\r
100299 DwtMenu.closeActiveMenu();\r
100300 this.chatWithBuddy(e)\r
100301 }else{\r
100302 ZmTaskbarController.INSTANCE.selectChatForRosterItem(e)\r
100303 }}else{\r
100304 if(a.detail==DwtTree.ITEM_DBL_CLICKED){\r
100305 if(!this._options.singleClick){\r
100306 if(e){\r
100307 this.chatWithBuddy(e)\r
100308 }else{\r
100309 if(n){\r
100310 a.item.setExpanded(!a.item.getExpanded())\r
100311 }}}}}}};\r
100312 ZmImOverview.prototype._init=function(){\r
100313 var a=this._groupDropTgt=new DwtDropTarget(["ZmRosterItem"]);\r
100314 a.addDropListener(new AjxListener(this,this._groupDropListener));\r
100315 var s={\r
100316 parent:this,className:this._options.overviewId?"OverviewTree":null};\r
100317 var t=this._tree=new DwtTree(s);\r
100318 t.getHtmlElement().style.width="100%";\r
100319 if(!this._options.overviewId){\r
100320 t.getHtmlElement().style.overflow="auto"\r
100321 }\r
100322 if(!this._options.inactiveTree){\r
100323 t.addSelectionListener(new AjxListener(this,this._treeSelectionListener))\r
100324 }\r
100325 t.addListener(DwtEvent.ONMOUSEUP,new AjxListener(this,this._treeMouseUpListener));\r
100326 this._rootItem=new DwtHeaderTreeItem({\r
100327 parent:t,overview:this,className:"overviewHeader",noNodeCell:this._options.noHeaderNodeCell}\r
100328 );\r
100329 this._rootItem.setData("ZmImOverview.data",{\r
100330 type:"root"}\r
100331 );\r
100332 this._rootItem.setText(ZmMsg.buddyList);\r
100333 this._rootItem.enableSelection(false);\r
100334 var r=this._roster=AjxDispatcher.run("GetRoster");\r
100335 if(!this._options.noAssistant){\r
100336 var o=r.getRosterItemList();\r
100337 var n=new ZmAssistantBuddy(o);\r
100338 this._createTreeItems("assistant",n)\r
100339 }\r
100340 this._listen(r,new AjxListener(this,this._rosterListener));\r
100341 this._listen(r.getRosterItemList(),new AjxListener(this,this._rosterItemListListener));\r
100342 var e=ZmImApp.loggedIn();\r
100343 if(e){\r
100344 o=r.getRosterItemList()\r
100345 }\r
100346 if(e&&o.size()){\r
100347 this._updateSpecialItems(ZmImOverview.NO_MESSAGE);\r
100348 o.getVector().foreach(this._createBuddy,this);\r
100349 this.sort()\r
100350 }else{\r
100351 this._updateSpecialItems(e?ZmImOverview.NO_BUDDIES:ZmImOverview.NOT_LOGGED_IN)\r
100352 }\r
100353 t.addSeparator();\r
100354 if(!this._options.overviewId){\r
100355 this.addControlListener(new AjxListener(this,this._controlListener))\r
100356 }\r
100357 if(this._options.expanded){\r
100358 this._rootItem.setExpanded(true)\r
100359 }else{\r
100360 t.addTreeListener(new AjxListener(this,this._treeListener))\r
100361 }};\r
100362 ZmImOverview.prototype._treeListener=function(e){\r
100363 if(!this._didInitialExpand&&(e.detail==DwtTree.ITEM_EXPANDED)&&e.items.length&&(e.items[0]==this._rootItem)){\r
100364 var t=this._groupItems[ZmMsg.buddies];\r
100365 if(t){\r
100366 t.setExpanded(true)\r
100367 }\r
100368 this._didInitialExpand=true\r
100369 }};\r
100370 ZmImOverview.prototype._controlListener=function(o){\r
100371 var t={\r
100372 x:o.oldWidth,y:o.oldHeight};\r
100373 var e={\r
100374 x:o.newWidth,y:o.newHeight};\r
100375 if(t.x!=e.x||t.y!=e.y){\r
100376 var a=e.y;\r
100377 if(AjxEnv.isIE){\r
100378 a-=2\r
100379 }\r
100380 this._tree.setSize(Dwt.DEFAULT,a)\r
100381 }};\r
100382 ZmImOverview._popdownDialog=function(){\r
100383 if(ZmImNewChatDlg._INSTANCE){\r
100384 ZmImNewChatDlg._INSTANCE.popdown()\r
100385 }};\r
100386 ZmImOverview.login=function(){\r
100387 ZmImApp.INSTANCE.login()\r
100388 };\r
100389 ZmImOverview.newBuddy=function(){\r
100390 ZmImApp.INSTANCE.prepareVisuals();\r
100391 ZmImOverview._popdownDialog();\r
100392 ZmImApp.INSTANCE.getImController()._newRosterItemListener()\r
100393 };\r
100394 ZmImOverview.prototype._updateSpecialItems=function(t){\r
100395 var e=this._rootItem.getExpanded();\r
100396 if(t==ZmImOverview.NO_MESSAGE){\r
100397 if(this._infoItem){\r
100398 this._infoItem.dispose();\r
100399 this._infoItem=null\r
100400 }\r
100401 if(ZmImOverview.FILTER_SEARCH&&!this._filterItem){\r
100402 this._filterItem=new ZmBuddyFilterItem({\r
100403 parent:this._rootItem,overview:this}\r
100404 );\r
100405 this._filterItem.setData("ZmImOverview.data",{\r
100406 type:"filter"}\r
100407 )\r
100408 }}else{\r
100409 if(!this._infoItem){\r
100410 this._rootItem.removeChildren();\r
100411 this._filterItem=null;\r
100412 this._groupItems={};\r
100413 this._infoItem=new ZmInfoTreeItem({\r
100414 parent:this._rootItem}\r
100415 );\r
100416 this._infoItem.setData("ZmImOverview.data",{\r
100417 type:"infoItem"}\r
100418 )\r
100419 }\r
100420 var a;\r
100421 switch(t){\r
100422 case ZmImOverview.NOT_LOGGED_IN:a=AjxMessageFormat.format(ZmMsg.imNotLoggedIn,"ZmImOverview.login()");\r
100423 break;\r
100424 case ZmImOverview.LOADING:a=ZmMsg.loading;\r
100425 break;\r
100426 case ZmImOverview.NO_BUDDIES:a=AjxMessageFormat.format(ZmMsg.imNoBuddies,"ZmImOverview.newBuddy()");\r
100427 break\r
100428 }\r
100429 this._infoItem.setText(a)\r
100430 }\r
100431 if(e){\r
100432 this._rootItem.setExpanded(true)\r
100433 }};\r
100434 ZmImOverview.prototype._listen=function(e,t){\r
100435 e.addChangeListener(t);\r
100436 this._modelListeners.push({\r
100437 modelObject:e,listener:t}\r
100438 )\r
100439 };\r
100440 ZmImOverview.prototype._rosterListener=function(e){\r
100441 if(e.event==ZmEvent.E_LOAD){\r
100442 this._updateSpecialItems(e.getDetails().loggedIn?ZmImOverview.LOADING:ZmImOverview.NOT_LOGGED_IN)\r
100443 }};\r
100444 ZmImOverview.prototype._rosterItemListListener=function(t){\r
100445 var e=t.getDetail("fields");\r
100446 if(t.event==ZmEvent.E_LOAD){\r
100447 if(!t.source.size()){\r
100448 this._updateSpecialItems(ZmImOverview.NO_BUDDIES)\r
100449 }}else{\r
100450 if(t.event==ZmEvent.E_CREATE){\r
100451 if(this._infoItem){\r
100452 this._updateSpecialItems(ZmImOverview.NO_MESSAGE)\r
100453 }\r
100454 var a=AjxVector.fromArray(t.getItems());\r
100455 a.foreach(this._createBuddy,this);\r
100456 if(a.size()){\r
100457 this.sort()\r
100458 }}else{\r
100459 if(t.event==ZmEvent.E_MODIFY){\r
100460 this._modifyBuddies(t.getItems(),e)\r
100461 }else{\r
100462 if(t.event==ZmEvent.E_REMOVE||t.event==ZmEvent.E_DELETE){\r
100463 var a=AjxVector.fromArray(t.getItems());\r
100464 a.foreach(this._removeBuddy,this)\r
100465 }}}}};\r
100466 ZmImOverview.prototype._groupDropListener=function(n){\r
100467 if(!n.srcData){\r
100468 return false\r
100469 }\r
100470 if(n.action==DwtDropEvent.DRAG_ENTER){\r
100471 n.doIt=this._groupDropTgt.isValidTarget(n.srcData)\r
100472 }else{\r
100473 if(n.action==DwtDropEvent.DRAG_DROP){\r
100474 var o=n.srcData;\r
100475 var t=o._drag_from_group;\r
100476 var s=n.targetControl.getData("ZmImOverview.data").group;\r
100477 var e=AjxVector.fromArray(o.getGroups());\r
100478 if(t!=s&&e.indexOf(s)==-1){\r
100479 e.remove(t);\r
100480 e.add(s);\r
100481 var a=o.getDisplayName();\r
100482 var r=o.getAddress();\r
100483 AjxDispatcher.run("GetRoster").createRosterItem(r,a,e.join(","))\r
100484 }}}};\r
100485 ZmImOverview.prototype._getBuddyIcon=function(e){\r
100486 var a=AjxDispatcher.run("GetRoster");\r
100487 var t=a.getPrivacyList();\r
100488 return t.isDenied(e.getAddress())?"BlockUser":e.getPresence().getIcon()\r
100489 };\r
100490 ZmImOverview.prototype._createBuddy=function(e){\r
100491 return this._createTreeItems("buddy",e)\r
100492 };\r
100493 ZmImOverview.prototype._createTreeItems=function(s,o){\r
100494 var e=o.getGroups();\r
100495 if(e.length==0){\r
100496 e=s=="buddy"?[ZmMsg.buddies]:[null]\r
100497 }\r
100498 var l=o.getDisplayName();\r
100499 var r=this._getBuddyIcon(o);\r
100500 var n=[];\r
100501 var d=this._rootItem.getExpanded();\r
100502 for(var t=0;\r
100503 t<e.length;\r
100504 ++t){\r
100505 var c=this.getGroupItem(e[t]);\r
100506 var u=new DwtTreeItem({\r
100507 parent:c,index:this.getSortIndex(o,c),text:AjxStringUtil.htmlEncode(l),imageInfo:r,singleClickAction:this._options.singleClick}\r
100508 );\r
100509 u.addClassName("ZmImPresence-"+o.getPresence().getShow());\r
100510 u.setToolTipContent("-");\r
100511 u.getToolTipContent=AjxCallback.simpleClosure(o.getToolTip,o);\r
100512 u.setData("ZmImOverview.data",{\r
100513 type:s,buddy:o}\r
100514 );\r
100515 u.setDragSource(this._im_dragSrc);\r
100516 n.push(u);\r
100517 if(this._options.expanded||(d&&(e[t]==ZmMsg.buddies))){\r
100518 c.setExpanded(true)\r
100519 }\r
100520 var h=this._itemsById[o.getAddress()];\r
100521 if(!h){\r
100522 h=this._itemsById[o.getAddress()]=new AjxVector()\r
100523 }\r
100524 h.add(u)\r
100525 }\r
100526 this.applyFilters(n)\r
100527 };\r
100528 ZmImOverview.prototype._modifyBuddies=function(e,r){\r
100529 var o=false;\r
100530 var d=false;\r
100531 for(var n=0,h=e.length;\r
100532 n<h;\r
100533 n++){\r
100534 var l=e[n];\r
100535 var c=this._itemsById[l.getAddress()];\r
100536 if(c){\r
100537 var u=ZmRosterItem.F_GROUPS in r;\r
100538 if(u){\r
100539 this._removeBuddy(l);\r
100540 this._createTreeItems("buddy",l)\r
100541 }else{\r
100542 var t=ZmRosterItem.F_PRESENCE in r;\r
100543 var m=ZmRosterItem.F_UNREAD in r;\r
100544 var s=ZmRosterItem.F_NAME in r;\r
100545 var a=ZmRosterItem.F_TYPING in r;\r
100546 o=o||t;\r
100547 d=d||s;\r
100548 c.foreach(function(p){\r
100549 if(t){\r
100550 p.setImage(this._getBuddyIcon(l));\r
100551 p.setClassName(p.getClassName());\r
100552 p.addClassName("ZmImPresence-"+l.getPresence().getShow())\r
100553 }\r
100554 if(m||s){\r
100555 var f=l.getDisplayName();\r
100556 if(l.getUnread()){\r
100557 f+=" ("+l.getUnread()+")";\r
100558 f=f.bold()\r
100559 }\r
100560 p.setText(f)\r
100561 }\r
100562 if(a){\r
100563 p.condClassName(r[ZmRosterItem.F_TYPING],"ZmRosterItem-typing")\r
100564 }}\r
100565 ,this);\r
100566 this.applyFilters(c.getArray())\r
100567 }}}\r
100568 if((o&&(this._sortBy==ZmImApp.BUDDY_SORT_PRESENCE))||(d)){\r
100569 this.sort()\r
100570 }};\r
100571 ZmImOverview.prototype._removeBuddy=function(t){\r
100572 var e=this._itemsById[t.getAddress()];\r
100573 e.foreach("dispose");\r
100574 this._itemsById[t.getAddress()]=null\r
100575 };\r
100576 ZmImOverview.prototype.getGroupItem=function(t){\r
100577 if(!t){\r
100578 return this._rootItem\r
100579 }\r
100580 var e=this._groupItems[t];\r
100581 if(!e){\r
100582 e=this._groupItems[t]=new DwtTreeItem({\r
100583 parent:this._rootItem,index:this.getSortIndex(t),text:AjxStringUtil.htmlEncode(t),imageInfo:"ImGroup"}\r
100584 );\r
100585 e.setToolTipContent("-");\r
100586 e.getToolTipContent=function(){\r
100587 var a=this.getData("ZmImOverview.data");\r
100588 return AjxMessageFormat.format(ZmMsg.imGroupItemTooltip,[a.group,this.getItemCount()])\r
100589 };\r
100590 e.setData("ZmImOverview.data",{\r
100591 type:"group",group:t}\r
100592 );\r
100593 e.setDropTarget(this._groupDropTgt)\r
100594 }\r
100595 return e\r
100596 };\r
100597 ZmImOverview.prototype.getSortIndex=function(c,h){\r
100598 var s="buddy";\r
100599 if(h==null){\r
100600 s="group";\r
100601 h=this._rootItem;\r
100602 c=c.toLowerCase()\r
100603 }\r
100604 var n=h.getItems();\r
100605 for(var t=0;\r
100606 t<n.length;\r
100607 ++t){\r
100608 var d=n[t];\r
100609 var e=d.getData("ZmImOverview.data");\r
100610 if(e.type=="filter"||e.type=="infoItem"){\r
100611 continue\r
100612 }\r
100613 if(s=="buddy"){\r
100614 if(this._sortBy==ZmImApp.BUDDY_SORT_NAME){\r
100615 var o=e.buddy.getDisplayName();\r
100616 if(o&&o.toLowerCase()>c.getDisplayName()){\r
100617 break\r
100618 }}else{\r
100619 if(this._sortBy==ZmImApp.BUDDY_SORT_PRESENCE){\r
100620 var l=ZmImOverview.PRESENCE_SORT_INDEX[e.buddy.getPresence().getShow()]||100;\r
100621 var r=ZmImOverview.PRESENCE_SORT_INDEX[c.getPresence().getShow()]||100;\r
100622 if(l>r){\r
100623 break\r
100624 }}}}else{\r
100625 var o=e.group;\r
100626 if(o&&o.toLowerCase()>c){\r
100627 break\r
100628 }}}\r
100629 return t\r
100630 };\r
100631 ZmImOverview.prototype.addFilter=function(t){\r
100632 for(var e=this.__filters.length;\r
100633 --e>=0;\r
100634 ){\r
100635 if(this.__filters[e]===t){\r
100636 this.__filters.splice(e,1)\r
100637 }}\r
100638 this.__filters.push(t);\r
100639 this.applyFilters()\r
100640 };\r
100641 ZmImOverview.prototype.removeFilter=function(t){\r
100642 if(!this.__filters.length){\r
100643 return\r
100644 }\r
100645 for(var e=this.__filters.length;\r
100646 --e>=0;\r
100647 ){\r
100648 if(this.__filters[e]===t){\r
100649 this.__filters.splice(e,1)\r
100650 }}\r
100651 this.applyFilters(null,true)\r
100652 };\r
100653 ZmImOverview.prototype.applyFilters=function(s,o){\r
100654 var e=this.__filters;\r
100655 if(!e.length&&!o){\r
100656 return\r
100657 }\r
100658 this._firstFilterItem=null;\r
100659 var n=function(d){\r
100660 var p=false;\r
100661 for(var u=d.length;\r
100662 --u>=0;\r
100663 ){\r
100664 var m=d[u];\r
100665 var y=true;\r
100666 for(var c=e.length;\r
100667 --c>=0;\r
100668 ){\r
100669 var g=e[c];\r
100670 if(g.call(this,m)){\r
100671 y=false;\r
100672 break\r
100673 }}\r
100674 if(!this._firstFilterItem&&y){\r
100675 this._firstFilterItem=m\r
100676 }\r
100677 p=p||y;\r
100678 m.setVisible(y)\r
100679 }\r
100680 return p\r
100681 };\r
100682 if(s){\r
100683 n.call(this,s)\r
100684 }else{\r
100685 if(this._rootItem){\r
100686 var r=this._rootItem;\r
100687 var t=r.getItems();\r
100688 for(var a=t.length;\r
100689 --a>=0;\r
100690 ){\r
100691 var h=t[a];\r
100692 var s=h.getItems();\r
100693 var l=n.call(this,s)||s.length==0;\r
100694 h.setVisible(l);\r
100695 if(l){\r
100696 h.setExpanded(true)\r
100697 }}}}};\r
100698 ZmImOverview.FILTER_OFFLINE_BUDDIES=function(a){\r
100699 var e=a.getData("ZmImOverview.data").buddy;\r
100700 var t=e.getPresence();\r
100701 return t.getShow()==ZmRosterPresence.SHOW_OFFLINE\r
100702 };\r
100703 ZmImOverview.FILTER_BLOCKED_BUDDIES=function(t){\r
100704 var e=t.getData("ZmImOverview.data").buddy;\r
100705 return AjxDispatcher.run("GetRoster").getPrivacyList().isDenied(e.getAddress())\r
100706 };\r
100707 ZmImOverview.FILTER_SEARCH={\r
100708 func:function(a){\r
100709 var t=this.__searchInputEl.value.toLowerCase();\r
100710 var e=a.getData("ZmImOverview.data").buddy;\r
100711 if(/^#/.test(t)){\r
100712 return e.getAddress().indexOf(t.substr(1))<0\r
100713 }else{\r
100714 return e.getDisplayName().toLowerCase().indexOf(t)<0\r
100715 }}\r
100716 ,_doKeyPress:function(){\r
100717 var e=this.__searchInputEl.value;\r
100718 if(!/\S/.test(e)||e==ZmMsg.filter){\r
100719 this.removeFilter(ZmImOverview.FILTER_SEARCH.func)\r
100720 }else{\r
100721 this.addFilter(ZmImOverview.FILTER_SEARCH.func)\r
100722 }}\r
100723 ,inputFocus:function(){\r
100724 Dwt.delClass(this.__searchInputEl,"DwtSimpleInput-hint","DwtSimpleInput-focused");\r
100725 if(this.__searchInputEl.value==ZmMsg.filter){\r
100726 this.__searchInputEl.value=""\r
100727 }else{\r
100728 try{\r
100729 this.__searchInputEl.select()\r
100730 }\r
100731 catch(e){}}}\r
100732 ,inputBlur:function(){\r
100733 Dwt.delClass(this.__searchInputEl,"DwtSimpleInput-focused","DwtSimpleInput-hint");\r
100734 if(!/\S/.test(this.__searchInputEl.value)){\r
100735 this.__searchInputEl.value=ZmMsg.filter\r
100736 }}\r
100737 ,inputKeyPress:function(t){\r
100738 if(!t){\r
100739 t=window.event\r
100740 }\r
100741 if(this.__searchInputTimeout){\r
100742 clearTimeout(this.__searchInputTimeout)\r
100743 }\r
100744 if(t.keyCode==27){\r
100745 this.__searchInputEl.value="";\r
100746 ZmImOverview.FILTER_SEARCH._doKeyPress.call(this);\r
100747 ZmImOverview.FILTER_SEARCH.inputBlur.call(this);\r
100748 this.__searchInputEl.blur()\r
100749 }\r
100750 if(t.keyCode==13){\r
100751 ZmImOverview.FILTER_SEARCH._doKeyPress.call(this);\r
100752 if(!/\S/.test(this.__searchInputEl.value)){\r
100753 return\r
100754 }\r
100755 if(this._firstFilterItem){\r
100756 var e=this._firstFilterItem.getData("ZmImOverview.data").buddy;\r
100757 this.chatWithBuddy(e);\r
100758 this.__searchInputEl.value="";\r
100759 ZmImOverview.FILTER_SEARCH.inputBlur.call(this);\r
100760 this.__searchInputEl.blur()\r
100761 }}\r
100762 this.__searchInputTimeout=setTimeout(AjxCallback.simpleClosure(ZmImOverview.FILTER_SEARCH._doKeyPress,this),500)\r
100763 }};\r
100764 ZmBuddyFilterItem=function(e){\r
100765 this.overview=e.overview;\r
100766 e.className="ZmBuddyFilterItem";\r
100767 DwtTreeItem.call(this,e)\r
100768 };\r
100769 ZmBuddyFilterItem.prototype=new DwtTreeItem;\r
100770 ZmBuddyFilterItem.prototype.constructor=ZmBuddyFilterItem;\r
100771 ZmBuddyFilterItem.prototype.toString=function(){\r
100772 return"ZmBuddyFilterItem"\r
100773 };\r
100774 ZmBuddyFilterItem.prototype._createHtmlFromTemplate=function(t,a){\r
100775 var o=this.getHtmlElement();\r
100776 o.className="ZmBuddyFilterItem";\r
100777 var e=o.ownerDocument.createElement("input");\r
100778 this.overview.__searchInputEl=e;\r
100779 e.autocomplete="off";\r
100780 e.className="DwtSimpleInput";\r
100781 o.appendChild(e);\r
100782 e.onkeydown=AjxCallback.simpleClosure(ZmImOverview.FILTER_SEARCH.inputKeyPress,this.overview);\r
100783 e.onfocus=AjxCallback.simpleClosure(ZmImOverview.FILTER_SEARCH.inputFocus,this.overview);\r
100784 e.onblur=AjxCallback.simpleClosure(ZmImOverview.FILTER_SEARCH.inputBlur,this.overview);\r
100785 e.onblur()\r
100786 };\r
100787 ZmInfoTreeItem=function(e){\r
100788 e.className="ZmInfoTreeItem";\r
100789 DwtTreeItem.call(this,e)\r
100790 };\r
100791 ZmInfoTreeItem.prototype=new DwtTreeItem;\r
100792 ZmInfoTreeItem.prototype.constructor=ZmInfoTreeItem;\r
100793 ZmInfoTreeItem.prototype.TEMPLATE="im.Chat#ZmInfoTreeItem";\r
100794 ZmInfoTreeItem.prototype.toString=function(){\r
100795 return"ZmInfoTreeItem"\r
100796 }\r
100797 }\r
100798 if(AjxPackage.define("zimbraMail.im.view.ZmTaskbar")){\r
100799 ZmTaskbar=function(e){\r
100800 ZmToolBar.call(this,e);\r
100801 ZmTaskbar.INSTANCE=this;\r
100802 this._setMouseEvents();\r
100803 this.shell.addControlListener(new AjxListener(this,this._shellControlListener))\r
100804 };\r
100805 ZmTaskbar.prototype=new ZmToolBar;\r
100806 ZmTaskbar.prototype.constructor=ZmTaskbar;\r
100807 ZmTaskbar.prototype.toString=function(){\r
100808 return"ZmTaskbar"\r
100809 };\r
100810 ZmTaskbar.prototype.zShow=function(e){\r
100811 this.setZIndex(e?Dwt.Z_VIEW+10:Dwt.Z_HIDDEN)\r
100812 };\r
100813 ZmTaskbar.prototype.expandItem=function(a,t,e){\r
100814 if(t&&this.expandedItem){\r
100815 this.expandedItem._expand(false)\r
100816 }\r
100817 a._expand(t,e);\r
100818 this.expandedItem=t?a:null\r
100819 };\r
100820 ZmTaskbar.prototype.toggleExpanded=function(e){\r
100821 this.expandItem(e,!e.expanded)\r
100822 };\r
100823 ZmTaskbar.prototype.conditionalExpand=function(e){\r
100824 if(!this.expandedItem){\r
100825 this.expandItem(e,true,true);\r
100826 return true\r
100827 }else{\r
100828 return false\r
100829 }};\r
100830 ZmTaskbar.prototype._shellControlListener=function(e){\r
100831 if((e.oldWidth!=e.newWidth)&&this.expandedItem){\r
100832 this.expandedItem.positionContent()\r
100833 }};\r
100834 ZmTaskbarItem=function(a){\r
100835 DwtComposite.call(this,a);\r
100836 this._createHtml();\r
100837 this._contentClassName=a.contentClassName;\r
100838 var e={\r
100839 style:DwtButton.TOGGLE_STYLE,parent:this,parentElement:this._buttonEl};\r
100840 var t=a.buttonConstructor||DwtToolBarButton;\r
100841 this.button=new t(e);\r
100842 this.button.addSelectionListener(a.selectionListener);\r
100843 if(a.op){\r
100844 this.button.setText(ZmMsg[ZmOperation.getProp(a.op,"textKey")]);\r
100845 this.button.setImage(ZmOperation.getProp(a.op,"image"));\r
100846 this.button.setToolTipContent(ZmMsg[ZmOperation.getProp(a.op,"tooltipKey")])\r
100847 }\r
100848 this._rightAlign=a.rightAlign;\r
100849 this._data=a.data\r
100850 };\r
100851 ZmTaskbarItem.prototype=new DwtComposite;\r
100852 ZmTaskbarItem.prototype.constructor=ZmTaskbarItem;\r
100853 ZmTaskbarItem.prototype.TEMPLATE="share.App#ZmTaskbarItem";\r
100854 ZmTaskbarItem.prototype.toString=function(){\r
100855 return"ZmTaskbarItem"\r
100856 };\r
100857 ZmTaskbarItem.prototype.getPopup=function(){\r
100858 if(!this._popup){\r
100859 AjxDispatcher.require(["IMCore","IM"]);\r
100860 var args={\r
100861 parent:this,parentElement:this._contentEl,taskbarItem:this,taskbar:this.parent,data:this._data};\r
100862 var ctor=window.eval(this._contentClassName);\r
100863 this._popup=new ctor(args)\r
100864 }\r
100865 return this._popup\r
100866 };\r
100867 ZmTaskbarItem.prototype._expand=function(a,t){\r
100868 this.expanded=a;\r
100869 Dwt.setVisible(this._contentEl,a);\r
100870 this.button.setSelected(a);\r
100871 var e=this.getPopup();\r
100872 if(a){\r
100873 this.showAlert(false);\r
100874 e.popup(t);\r
100875 this.positionContent()\r
100876 }else{\r
100877 e.popdown()\r
100878 }};\r
100879 ZmTaskbarItem.prototype.positionContent=function(){\r
100880 if(this._rightAlign){\r
100881 var e=Dwt.toWindow(this.button.getHtmlElement(),0,0).x;\r
100882 var a=this.button.getW();\r
100883 var t=this.parent.getBounds();\r
100884 var o=1;\r
100885 this._contentEl.style.right=t.x+t.width-e-a-o\r
100886 }};\r
100887 ZmTaskbarItem.prototype._createHtml=function(){\r
100888 var e={\r
100889 id:this._htmlElId};\r
100890 this._createHtmlFromTemplate(this.TEMPLATE,e);\r
100891 this._contentEl=document.getElementById(e.id+"_content");\r
100892 this._buttonEl=document.getElementById(e.id+"_button")\r
100893 }\r
100894 }\r
100895 if(AjxPackage.define("zimbraMail.im.controller.ZmTaskbarController")){\r
100896 ZmTaskbarController=function(s){\r
100897 ZmController.call(this,null);\r
100898 ZmTaskbarController.INSTANCE=this;\r
100899 var n=Dwt.byId(ZmId.SKIN_TASKBAR);\r
100900 if(!n){\r
100901 return\r
100902 }\r
100903 this._chatData={};\r
100904 this._chatMru=[];\r
100905 var o={\r
100906 parent:appCtxt.getShell(),id:ZmId.TASKBAR,className:"ZmTaskbar",posStyle:Dwt.ABSOLUTE_STYLE};\r
100907 this._toolbar=s[ZmAppViewMgr.C_TASKBAR]=new ZmTaskbar(o);\r
100908 this._toolbar.addListener(DwtEvent.ONMOUSEDOWN,new AjxListener(this,this._toolbarMouseDownListener));\r
100909 var h={\r
100910 contentClassName:"ZmPresencePopup",op:ZmId.OP_IM_PRESENCE_MENU};\r
100911 this._presenceItem=this._createItem(h);\r
100912 this._toolbar.addSeparator();\r
100913 this._newBuddySelectionListenerObj=new AjxListener(this,this._newBuddySelectionListener);\r
100914 var a={\r
100915 contentClassName:"ZmNewBuddyPopup",selectionListener:this._newBuddySelectionListenerObj,op:ZmId.OP_NEW_ROSTER_ITEM};\r
100916 this._newBuddyItem=this._createItem(a);\r
100917 this._newBuddyItem.button.setText("");\r
100918 var t={\r
100919 contentClassName:"ZmBuddyListPopup",op:ZmId.OP_IM_BUDDY_LIST};\r
100920 this._createItem(t);\r
100921 this._toolbar.addFiller(null);\r
100922 this._chatButtonIndex=this._toolbar.getNumChildren()+1;\r
100923 this._messageButton=new DwtToolBarButton({\r
100924 parent:this._toolbar}\r
100925 );\r
100926 this._messageButton.setText(ZmMsg.betaIM);\r
100927 this._messageButton.setEnabled(false);\r
100928 var e=appCtxt.getSkinHint("presence","height")||24;\r
100929 Dwt.setSize(n,Dwt.DEFAULT,e);\r
100930 var r=ZmImApp.INSTANCE.getRoster();\r
100931 this._updatePresenceButton(ZmImApp.loggedIn()?r.getPresence():null);\r
100932 r.addChangeListener(new AjxListener(this,this._rosterChangeListener));\r
100933 r.addGatewayListListener(new AjxListener(this,this._gatewayListListener));\r
100934 ZmImApp.INSTANCE.getRoster().getChatList().addChangeListener(new AjxListener(this,this._chatListListener));\r
100935 ZmImApp.INSTANCE.getRoster().getRosterItemList().addChangeListener(new AjxListener(this,this._rosterListChangeListener))\r
100936 };\r
100937 ZmTaskbarController.prototype=new ZmController;\r
100938 ZmTaskbarController.prototype.constructor=ZmTaskbarController;\r
100939 ZmTaskbarController.prototype.toString=function(){\r
100940 return"ZmTaskbarController"\r
100941 };\r
100942 ZmTaskbarController.prototype.setMessage=function(e){\r
100943 this._messageButton.setText(e);\r
100944 if(this._resetMessageActionId){\r
100945 AjxTimedAction.cancelAction(this._resetMessageActionId);\r
100946 this._resetMessageActionId=0\r
100947 }\r
100948 this._resetMessageAction=this._resetMessageAction||new AjxTimedAction(this,this._resetMessage);\r
100949 this._resetMessageActionId=AjxTimedAction.scheduleAction(this._resetMessageAction,3000)\r
100950 };\r
100951 ZmTaskbarController.prototype._resetMessage=function(e){\r
100952 this._messageButton.setText(ZmMsg.betaIM);\r
100953 this._resetMessageActionId=0\r
100954 };\r
100955 ZmTaskbarController.prototype.createChatItem=function(e,a){\r
100956 this._addChatToMru(e);\r
100957 var n=this._toolbar.addSeparator(null,this._chatButtonIndex++);\r
100958 var t={\r
100959 index:this._chatButtonIndex++,contentClassName:"ZmChatPopup",selectionListener:new AjxListener(this,this._chatSelectionListener,[e]),data:{\r
100960 chat:e,statusListener:new AjxListener(this,this._chatStatusListener,[e]),closeListener:new AjxListener(this,this._closeChatListener,[e]),minimizeListener:new AjxListener(this,this._minimizeChatListener,[e])}};\r
100961 var o=this._createItem(t);\r
100962 o.button.setToolTipContent(new AjxCallback(this,this._getChatToolTip,[e]));\r
100963 o.button.addListener(DwtEvent.ONMOUSEDOWN,new AjxListener(this,this._chatMouseDownListener,[e]));\r
100964 this._chatData[e.id]={\r
100965 chat:e,item:o,separator:n};\r
100966 var s="Close";\r
100967 o.button.setHoverImage(s);\r
100968 this._closeClass=this._closeClass||AjxImg.getClassForImage(s);\r
100969 this._toolbar.expandItem(o,true,a);\r
100970 this._chatData[e.id].chatWidget=o.getPopup().chatWidget;\r
100971 this._chatChangeListenerListenerObj=this._chatChangeListenerListenerObj||new AjxListener(this,this._chatChangeListenerListener);\r
100972 e.addChangeListener(this._chatChangeListenerListenerObj);\r
100973 return o\r
100974 };\r
100975 ZmTaskbarController.prototype.endChat=function(e){\r
100976 e.sendClose();\r
100977 ZmImApp.INSTANCE.getRoster().getChatList().removeChat(e)\r
100978 };\r
100979 ZmTaskbarController.prototype.selectChat=function(e,a){\r
100980 var t=this._chatData[e.id];\r
100981 if(t){\r
100982 this._expandChatItem(t.item,e,true);\r
100983 if(a){\r
100984 t.chatWidget.setEditorContent(AjxStringUtil.trim(a))\r
100985 }}};\r
100986 ZmTaskbarController.prototype.selectChatForRosterItem=function(t){\r
100987 var o=ZmImApp.INSTANCE.getRoster().getChatList().getChatsByRosterAddr(t.getAddress());\r
100988 var e=null;\r
100989 for(var a in o){\r
100990 if(o[a].getRosterSize()==1){\r
100991 e=o[a];\r
100992 break\r
100993 }}\r
100994 if(e==null&&o.length>0){\r
100995 e=o[0]\r
100996 }\r
100997 if(e!=null){\r
100998 this.selectChat(e)\r
100999 }};\r
101000 ZmTaskbarController.prototype.chatWithContacts=function(t,e,o){\r
101001 var a=t.map("getBuddy").sub(AjxCallback.isNull);\r
101002 if(a.size()>0){\r
101003 this.chatWithRosterItem(a.get(0),o)\r
101004 }};\r
101005 ZmTaskbarController.prototype.chatWithRosterItem=function(t,a){\r
101006 var e=ZmImApp.INSTANCE.getRoster().getChatList().getChatByRosterItem(t,true);\r
101007 this.selectChat(e,a)\r
101008 };\r
101009 ZmTaskbarController.prototype.getChatWidgetForChat=function(e){\r
101010 var t=this._chatData[e.id];\r
101011 return t?t.chatWidget:null\r
101012 };\r
101013 ZmTaskbarController.prototype.showSubscribeRequest=function(s,t){\r
101014 this._subscribeData=this._subscribeData||{};\r
101015 if(this._subscribeData[s]){\r
101016 return\r
101017 }\r
101018 var n=this._toolbar.addSeparator(null,this._chatButtonIndex+1);\r
101019 var e={\r
101020 index:this._chatButtonIndex+1,op:ZmId.OP_IM_INVITE,rightAlign:true,contentClassName:"ZmSubscribePopup",data:{\r
101021 addr:s,buddy:t}};\r
101022 var a=this._createItem(e);\r
101023 this._subscribeData[s]={\r
101024 item:a,separator:n};\r
101025 this._subscribeRequestTooltip=this._subscribeRequestTooltip||new AjxMessageFormat(ZmMsg.imInvitationFrom);\r
101026 var o=this._subscribeRequestTooltip.format(t?t.getDisplayName():s);\r
101027 a.button.setToolTipContent(o);\r
101028 if(!this._toolbar.conditionalExpand(a)){\r
101029 a.showAlert(true)\r
101030 }\r
101031 a.addDisposeListener(new AjxListener(this,this._subscribeDisposeListener,[s]))\r
101032 };\r
101033 ZmTaskbarController.prototype.showNewBuddyPopup=function(){\r
101034 this._toolbar.expandItem(this._newBuddyItem,true);\r
101035 return this._newBuddyItem.getPopup()\r
101036 };\r
101037 ZmTaskbarController.prototype.showGatewayPopup=function(t){\r
101038 if(this._gatewayData){\r
101039 var e=this._gatewayData[t];\r
101040 if(e){\r
101041 this._toolbar.expandItem(e.item,true)\r
101042 }}};\r
101043 ZmTaskbarController.prototype._subscribeDisposeListener=function(t){\r
101044 var e=this._subscribeData[t];\r
101045 this._toolbar.removeSeparator(e.separator);\r
101046 delete this._subscribeData[t]\r
101047 };\r
101048 ZmTaskbarController.prototype._addChatToMru=function(e){\r
101049 if(this._chatMru.length>=4){\r
101050 for(var o=this._chatMru.length,a=o-1;\r
101051 a>=0;\r
101052 a--){\r
101053 var t=this._chatMru[a];\r
101054 var n=this._chatData[t.id].item;\r
101055 if(!n.expanded&&!n.isAlertShown()){\r
101056 this.endChat(t);\r
101057 break\r
101058 }}}\r
101059 this._chatMru.unshift(e)\r
101060 };\r
101061 ZmTaskbarController.prototype._updateChatMru=function(e){\r
101062 if(this._chatMru.length&&(this._chatMru[0]!=e)){\r
101063 this._removeChatFromMru(e);\r
101064 this._chatMru.unshift(e)\r
101065 }};\r
101066 ZmTaskbarController.prototype._removeChatFromMru=function(e){\r
101067 for(var t=0,a=this._chatMru.length;\r
101068 t<a;\r
101069 t++){\r
101070 if(this._chatMru[t]==e){\r
101071 this._chatMru.splice(t,1);\r
101072 return\r
101073 }}};\r
101074 ZmTaskbarController.prototype._chatMouseDownListener=function(e,a){\r
101075 if(a.button!=DwtMouseEvent.RIGHT){\r
101076 return\r
101077 }\r
101078 this._actionedChat=e;\r
101079 if(!this._chatActionMenu){\r
101080 var t={\r
101081 parent:appCtxt.getShell(),controller:this,context:ZmId.TASKBAR,menuType:"Chat",menuItems:[ZmId.OP_IM_CLOSE_CHAT,ZmId.OP_IM_CLOSE_ALL_CHATS,ZmId.OP_IM_CLOSE_OTHER_CHATS]};\r
101082 this._chatActionMenu=new ZmActionMenu(t);\r
101083 this._chatActionMenu.getOp(ZmId.OP_IM_CLOSE_CHAT).addSelectionListener(new AjxListener(this,this._closeChatMenuListener));\r
101084 this._chatActionMenu.getOp(ZmId.OP_IM_CLOSE_ALL_CHATS).addSelectionListener(new AjxListener(this,this._closeAllChatsListener));\r
101085 this._chatActionMenu.getOp(ZmId.OP_IM_CLOSE_OTHER_CHATS).addSelectionListener(new AjxListener(this,this._closeOtherChatsListener))\r
101086 }\r
101087 this._chatActionMenu.popup(0,a.docX,a.docY)\r
101088 };\r
101089 ZmTaskbarController.prototype._closeChatMenuListener=function(){\r
101090 this.endChat(this._actionedChat);\r
101091 this._actionedChat=null\r
101092 };\r
101093 ZmTaskbarController.prototype._closeAllChatsListener=function(){\r
101094 var e=[];\r
101095 for(var o in this._chatData){\r
101096 e.push(this._chatData[o].chat)\r
101097 }\r
101098 for(var t=0,a=e.length;\r
101099 t<a;\r
101100 t++){\r
101101 this.endChat(e[t])\r
101102 }\r
101103 this._actionedChat=null\r
101104 };\r
101105 ZmTaskbarController.prototype._closeOtherChatsListener=function(){\r
101106 var o=[];\r
101107 for(var n in this._chatData){\r
101108 var e=this._chatData[n].chat;\r
101109 if(e!=this._actionedChat){\r
101110 o.push(e)\r
101111 }}\r
101112 for(var t=0,a=o.length;\r
101113 t<a;\r
101114 t++){\r
101115 this.endChat(o[t])\r
101116 }\r
101117 this._actionedChat=null\r
101118 };\r
101119 ZmTaskbarController.prototype._newBuddyListener=function(){\r
101120 ZmImApp.INSTANCE.prepareVisuals();\r
101121 ZmImApp.INSTANCE.getImController()._newRosterItemListener()\r
101122 };\r
101123 ZmTaskbarController.prototype._toolbarMouseDownListener=function(e){\r
101124 if(e.button==DwtMouseEvent.LEFT&&this._toolbar.expandedItem){\r
101125 this._toolbar.expandItem(this._toolbar.expandedItem,false)\r
101126 }};\r
101127 ZmTaskbarController.prototype._rosterListChangeListener=function(s){\r
101128 if(s.event==ZmEvent.E_MODIFY){\r
101129 var t=s.getDetail("fields");\r
101130 var o=s.getItems();\r
101131 for(var e=0;\r
101132 e<o.length;\r
101133 e++){\r
101134 var h=o[e];\r
101135 if(h instanceof ZmRosterItem){\r
101136 var a;\r
101137 a=a||ZmImApp.INSTANCE.getRoster().getChatList();\r
101138 var d=a.getChatsByRosterAddr(h.getAddress());\r
101139 for(var n in d){\r
101140 var l=d[n];\r
101141 var r=this.getChatWidgetForChat(d[n]);\r
101142 if(r){\r
101143 r._rosterItemChangeListener(h,t)\r
101144 }}}}}};\r
101145 ZmTaskbarController.prototype._chatListListener=function(a){\r
101146 if(a.event==ZmEvent.E_CREATE){\r
101147 var e=a.getDetails().items[0];\r
101148 var o=this._chatData[e.id];\r
101149 var t;\r
101150 if(o){\r
101151 this._toolbar.conditionalExpand(o.item)\r
101152 }else{\r
101153 t=this.createChatItem(e,a.getDetails().background)\r
101154 }}else{\r
101155 if(a.event==ZmEvent.E_DELETE){\r
101156 var e=a._details.items[0];\r
101157 this._deleteChatItem(e)\r
101158 }}};\r
101159 ZmTaskbarController.prototype._deleteChatItem=function(e){\r
101160 this._removeChatFromMru(e);\r
101161 e.removeChangeListener(this._chatChangeListenerListenerObj);\r
101162 var t=this._chatData[e.id];\r
101163 if(t){\r
101164 this._toolbar.removeSeparator(t.separator);\r
101165 t.item.dispose();\r
101166 this._chatButtonIndex-=1;\r
101167 delete this._chatData[e.id]\r
101168 }};\r
101169 ZmTaskbarController.prototype._getChatToolTip=function(e,a){\r
101170 var t=e.getRosterItem().getToolTip();\r
101171 a.run(t)\r
101172 };\r
101173 ZmTaskbarController.prototype._expandChatItem=function(t,e,a){\r
101174 this._updateChatMru(e);\r
101175 this._toolbar.expandItem(t,a);\r
101176 var o=this._chatData[e.id].chatWidget;\r
101177 o._onMinimize(!a);\r
101178 if(a){\r
101179 o.focus()\r
101180 }};\r
101181 ZmTaskbarController.prototype._chatSelectionListener=function(e,a){\r
101182 if(e&&a.target&&(a.target.className==this._closeClass)){\r
101183 this.endChat(e)\r
101184 }else{\r
101185 var t=a.dwtObj.parent;\r
101186 this._expandChatItem(t,e,!t.expanded)\r
101187 }};\r
101188 ZmTaskbarController.prototype._selectionListener=function(e){\r
101189 this._toolbar.toggleExpanded(e.dwtObj.parent)\r
101190 };\r
101191 ZmTaskbarController.prototype._newBuddySelectionListener=function(e){\r
101192 if(ZmImApp.loggedIn()){\r
101193 this._toolbar.toggleExpanded(this._newBuddyItem)\r
101194 }else{\r
101195 ZmImApp.INSTANCE.login({\r
101196 callback:this._newBuddySelectionListenerObj}\r
101197 )\r
101198 }};\r
101199 ZmTaskbarController.prototype._chatChangeListenerListener=function(o){\r
101200 var e=o.source;\r
101201 var t=this._chatData[e.id];\r
101202 if(t&&!t.item.expanded){\r
101203 var a=o.getDetail("fields")[ZmChat.F_MESSAGE];\r
101204 if(a&&!a.fromMe&&!a.isSystem){\r
101205 t.item.showAlert(true);\r
101206 this._updateChatMru(e)\r
101207 }}};\r
101208 ZmTaskbarController.prototype._closeChatListener=function(e){\r
101209 this.endChat(e)\r
101210 };\r
101211 ZmTaskbarController.prototype._minimizeChatListener=function(e){\r
101212 var t=this._chatData[e.id].item;\r
101213 this._expandChatItem(t,e,false);\r
101214 t.button.setDisplayState(DwtControl.SELECTED);\r
101215 AjxTimedAction.scheduleAction(new AjxTimedAction(this,this._minimzeTimedAction,t),250)\r
101216 };\r
101217 ZmTaskbarController.prototype._minimzeTimedAction=function(e){\r
101218 e.button.setDisplayState(DwtControl.NORMAL)\r
101219 };\r
101220 ZmTaskbarController.prototype._chatStatusListener=function(t,e){\r
101221 var a=this._chatData[t.id].item;\r
101222 a.button.setImage(e.statusImage);\r
101223 var o=e.title?AjxStringUtil.clipByLength(e.title,15):"";\r
101224 a.button.setText(o)\r
101225 };\r
101226 ZmTaskbarController.prototype._createItem=function(e){\r
101227 e.parent=this._toolbar;\r
101228 e.selectionListener=e.selectionListener||new AjxListener(this,this._selectionListener);\r
101229 return new ZmTaskbarItem(e)\r
101230 };\r
101231 ZmTaskbarController.prototype._rosterChangeListener=function(a){\r
101232 if(a.event==ZmEvent.E_MODIFY){\r
101233 var e=a.getDetail("fields");\r
101234 if(ZmRoster.F_PRESENCE in e){\r
101235 var t=ZmImApp.INSTANCE.getRoster().getPresence();\r
101236 this._updatePresenceButton(t)\r
101237 }}};\r
101238 ZmTaskbarController.prototype._updatePresenceButton=function(a){\r
101239 var t=this._presenceItem.button;\r
101240 t.setImage(a?a.getIcon():"Offline");\r
101241 var e=a?AjxStringUtil.htmlEncode(a.getShowText()):ZmMsg.imStatusOffline;\r
101242 var o=ZmImApp.INSTANCE.getServiceController().getMyPresenceTooltip(e);\r
101243 t.setToolTipContent(o)\r
101244 };\r
101245 ZmTaskbarController.prototype._gatewayListListener=function(s){\r
101246 if(!ZmImApp.INSTANCE.getServiceController().capabilities[ZmImServiceController.ACCOUNTS]){\r
101247 return\r
101248 }\r
101249 this._gatewayData=this._gatewayData||{};\r
101250 var h=s.roster.getGateways();\r
101251 for(var a=1,n=h.length;\r
101252 a<n;\r
101253 a++){\r
101254 var r=h[a];\r
101255 if(!this._gatewayData[r.type]){\r
101256 for(var e in this._gatewayData){\r
101257 this._toolbar.addSeparator();\r
101258 break\r
101259 }\r
101260 var t={\r
101261 buttonConstructor:ZmStatusImageButton,contentClassName:"ZmGatewayPopup",data:r,rightAlign:true};\r
101262 var o=this._createItem(t);\r
101263 o.button.setImage("WebSearch");\r
101264 this._gatewayData[r.type]={\r
101265 item:o};\r
101266 r.addListener(ZmImGateway.EVENT_SET_STATE,new AjxListener(this,this._gatewayEventListener,[r]))\r
101267 }\r
101268 this._updateGatewayButton(r)\r
101269 }};\r
101270 ZmTaskbarController.prototype._gatewayEventListener=function(e){\r
101271 this._updateGatewayButton(e)\r
101272 };\r
101273 ZmTaskbarController.prototype._updateGatewayButton=function(o){\r
101274 var a=this._presenceItem.button.getImage();\r
101275 var e;\r
101276 if(o.isOnline()){\r
101277 e=this._gatewayOnlineFormat=this._gatewayOnlineFormat||new AjxMessageFormat(ZmMsg.imStatusGatewayOnline)\r
101278 }else{\r
101279 e=this._gatewayOfflineFormat=this._gatewayOfflineFormat||new AjxMessageFormat(ZmMsg.imStatusGatewayOffline);\r
101280 a="Offline"\r
101281 }\r
101282 var n=e.format([ZmMsg["imGateway_"+o.type],o.nick]);\r
101283 var t=this._gatewayData[o.type].item.button;\r
101284 t.setToolTipContent(n);\r
101285 t.setStatusImage(a)\r
101286 };\r
101287 ZmStatusImageButton=function(e){\r
101288 e.className="ZmStatusImageButton";\r
101289 DwtButton.call(this,e)\r
101290 };\r
101291 ZmStatusImageButton.prototype=new DwtButton;\r
101292 ZmStatusImageButton.prototype.constructor=ZmStatusImageButton;\r
101293 ZmStatusImageButton.prototype.TEMPLATE="share.App#ZmStatusImageButton";\r
101294 ZmStatusImageButton.prototype.toString=function(){\r
101295 return"ZmStatusImageButton"\r
101296 };\r
101297 ZmStatusImageButton.prototype.dispose=function(){\r
101298 this._statusIconEl=null;\r
101299 DwtMenuItem.prototype.dispose.call(this)\r
101300 };\r
101301 ZmStatusImageButton.prototype.setStatusImage=function(e){\r
101302 if(this._statusIconEl){\r
101303 AjxImg.setImage(this._statusIconEl,e)\r
101304 }};\r
101305 ZmStatusImageButton.prototype._createHtmlFromTemplate=function(e,t){\r
101306 DwtButton.prototype._createHtmlFromTemplate.call(this,e,t);\r
101307 this._statusIconEl=document.getElementById(t.id+"_status_icon")\r
101308 }\r
101309 }\r
101310 if(AjxPackage.define("zimbraMail.core.ZmAppViewMgr")){\r
101311 ZmAppViewMgr=function(o,t,e,a){\r
101312 ZmAppViewMgr._setContainerIds();\r
101313 this._shell=o;\r
101314 this._controller=t;\r
101315 this._isNewWindow=e;\r
101316 this._hasSkin=a;\r
101317 this._shellSz=this._shell.getSize();\r
101318 this._controlListener=new AjxListener(this,this._shellControlListener);\r
101319 this._shell.addControlListener(this._controlListener);\r
101320 this._sashSupported=(window.skin&&typeof window.skin.setTreeWidth=="function");\r
101321 if(appCtxt.get(ZmSetting.HISTORY_SUPPORT_ENABLED)&&!AjxEnv.isSafari&&!e&&!AjxEnv.isPrism){\r
101322 this._historyMgr=appCtxt.getHistoryMgr();\r
101323 this._historyMgr.addListener(new AjxListener(this,this._historyChangeListener))\r
101324 }\r
101325 this._hashView={};\r
101326 this._nextHashIndex=0;\r
101327 this._curHashIndex=0;\r
101328 this._noHistory=false;\r
101329 this._ignoreHistoryChange=false;\r
101330 this._lastView=null;\r
101331 this._currentView=null;\r
101332 this._views={};\r
101333 this._hidden=[];\r
101334 this._appView={};\r
101335 this._callbacks={};\r
101336 this._viewApp={};\r
101337 this._isAppView={};\r
101338 this._isTransient={};\r
101339 this._toRemove=[];\r
101340 this._isTabView={};\r
101341 this._tabParams={};\r
101342 this._viewByTabId={};\r
101343 this._components={};\r
101344 this._containers={};\r
101345 this._contBounds={};\r
101346 this._pushCallback=new AjxCallback(this,this.pushView);\r
101347 this._popCallback=new AjxCallback(this,this.popView);\r
101348 this._createLoadingView()\r
101349 };\r
101350 ZmAppViewMgr.C_BANNER="banner";\r
101351 ZmAppViewMgr.C_USER_INFO="userInfo";\r
101352 ZmAppViewMgr.C_QUOTA_INFO="quota";\r
101353 ZmAppViewMgr.C_SEARCH="search";\r
101354 ZmAppViewMgr.C_SEARCH_BUILDER="searchBuilder";\r
101355 ZmAppViewMgr.C_SEARCH_BUILDER_TOOLBAR="searchBuilderToolbar";\r
101356 ZmAppViewMgr.C_APP_CHOOSER="appChooser";\r
101357 ZmAppViewMgr.C_TREE="tree";\r
101358 ZmAppViewMgr.C_TREE_FOOTER="treeFooter";\r
101359 ZmAppViewMgr.C_TOOLBAR_TOP="topToolbar";\r
101360 ZmAppViewMgr.C_TOOLBAR_BOTTOM="bottomToolbar";\r
101361 ZmAppViewMgr.C_APP_CONTENT="main";\r
101362 ZmAppViewMgr.C_APP_CONTENT_FULL="fullScreen";\r
101363 ZmAppViewMgr.C_STATUS="status";\r
101364 ZmAppViewMgr.C_SASH="sash";\r
101365 ZmAppViewMgr.C_TASKBAR="taskbar";\r
101366 ZmAppViewMgr.C_FOOTER="footer";\r
101367 ZmAppViewMgr.C_AD="adsrvc";\r
101368 ZmAppViewMgr.ALL_COMPONENTS=[ZmAppViewMgr.C_BANNER,ZmAppViewMgr.C_USER_INFO,ZmAppViewMgr.C_QUOTA_INFO,ZmAppViewMgr.C_SEARCH,ZmAppViewMgr.C_SEARCH_BUILDER,ZmAppViewMgr.C_SEARCH_BUILDER_TOOLBAR,ZmAppViewMgr.C_APP_CHOOSER,ZmAppViewMgr.C_TREE,ZmAppViewMgr.C_TREE_FOOTER,ZmAppViewMgr.C_TOOLBAR_TOP,ZmAppViewMgr.C_TOOLBAR_BOTTOM,ZmAppViewMgr.C_APP_CONTENT,ZmAppViewMgr.C_APP_CONTENT_FULL,ZmAppViewMgr.C_STATUS,ZmAppViewMgr.C_SASH,ZmAppViewMgr.C_TASKBAR,ZmAppViewMgr.C_FOOTER,ZmAppViewMgr.C_AD];\r
101369 ZmAppViewMgr.APP_COMPONENTS=[ZmAppViewMgr.C_TREE,ZmAppViewMgr.C_TREE_FOOTER,ZmAppViewMgr.C_STATUS,ZmAppViewMgr.C_SASH];\r
101370 ZmAppViewMgr.CONT_ID_KEY={};\r
101371 ZmAppViewMgr.CB_PRE_HIDE=1;\r
101372 ZmAppViewMgr.CB_POST_HIDE=2;\r
101373 ZmAppViewMgr.CB_PRE_SHOW=3;\r
101374 ZmAppViewMgr.CB_POST_SHOW=4;\r
101375 ZmAppViewMgr.CB_PRE_UNLOAD=5;\r
101376 ZmAppViewMgr.PENDING_VIEW="ZmAppViewMgr.PENDING_VIEW";\r
101377 ZmAppViewMgr.BROWSER_BACK="BACK";\r
101378 ZmAppViewMgr.BROWSER_FORWARD="FORWARD";\r
101379 ZmAppViewMgr.TAB_BUTTON_MAX_TEXT=15;\r
101380 ZmAppViewMgr._setContainerIds=function(){\r
101381 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_BANNER]=ZmId.SKIN_LOGO;\r
101382 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_USER_INFO]=ZmId.SKIN_USER_INFO;\r
101383 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_QUOTA_INFO]=ZmId.SKIN_QUOTA_INFO;\r
101384 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_SEARCH]=ZmId.SKIN_SEARCH;\r
101385 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_SEARCH_BUILDER]=ZmId.SKIN_SEARCH_BUILDER;\r
101386 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_SEARCH_BUILDER_TOOLBAR]=ZmId.SKIN_SEARCH_BUILDER_TOOLBAR;\r
101387 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_APP_CHOOSER]=ZmId.SKIN_APP_CHOOSER;\r
101388 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_TREE]=ZmId.SKIN_TREE;\r
101389 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_TREE_FOOTER]=ZmId.SKIN_TREE_FOOTER;\r
101390 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_TOOLBAR_TOP]=ZmId.SKIN_APP_TOP_TOOLBAR;\r
101391 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_TOOLBAR_BOTTOM]=ZmId.SKIN_APP_BOTTOM_TOOLBAR;\r
101392 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_APP_CONTENT]=ZmId.SKIN_APP_MAIN;\r
101393 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_APP_CONTENT_FULL]=ZmId.SKIN_APP_MAIN_FULL;\r
101394 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_STATUS]=ZmId.SKIN_STATUS;\r
101395 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_SASH]=ZmId.SKIN_SASH;\r
101396 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_TASKBAR]=ZmId.SKIN_TASKBAR;\r
101397 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_FOOTER]=ZmId.SKIN_FOOTER;\r
101398 ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_AD]=ZmId.SKIN_AD\r
101399 };\r
101400 ZmAppViewMgr.prototype.toString=function(){\r
101401 return"ZmAppViewMgr"\r
101402 };\r
101403 ZmAppViewMgr.prototype.isFullScreen=function(e){\r
101404 e=e||this._currentView;\r
101405 return Boolean(e&&this._views[e]&&this._views[e][ZmAppViewMgr.C_APP_CONTENT_FULL])\r
101406 };\r
101407 ZmAppViewMgr.prototype.addComponents=function(o,l,t){\r
101408 var r=[];\r
101409 for(var h in o){\r
101410 var n=o[h];\r
101411 this._components[h]=n;\r
101412 if(this._hasSkin){\r
101413 if(!this._containers[h]){\r
101414 var a=ZmAppViewMgr.CONT_ID_KEY[h];\r
101415 var s=document.getElementById(a);\r
101416 if(!s&&h==ZmAppViewMgr.C_APP_CONTENT_FULL){\r
101417 a=ZmAppViewMgr.CONT_ID_KEY[ZmAppViewMgr.C_APP_CONTENT];\r
101418 s=document.getElementById(a)\r
101419 }\r
101420 if(!s){\r
101421 continue\r
101422 }\r
101423 this._containers[h]=s;\r
101424 if(l){\r
101425 s.innerHTML="";\r
101426 var e=this._getContainerBounds(h);\r
101427 if(e){\r
101428 n.setBounds(e.x,e.y,e.width,e.height)\r
101429 }}}\r
101430 r.push(h)\r
101431 }\r
101432 if(!t){\r
101433 n.zShow(true)\r
101434 }\r
101435 if(h==ZmAppViewMgr.C_SASH){\r
101436 if(this._sashSupported){\r
101437 n.registerCallback(this._appTreeSashCallback,this)\r
101438 }\r
101439 n.setCursor("default")\r
101440 }}\r
101441 if(l){\r
101442 this._fitToContainer(r)\r
101443 }};\r
101444 ZmAppViewMgr.prototype.setComponent=function(o,t){\r
101445 var e=this._components[o];\r
101446 if(e){\r
101447 e.setLocation(Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE)\r
101448 }\r
101449 var a={};\r
101450 a[o]=t;\r
101451 this.addComponents(a,true)\r
101452 };\r
101453 ZmAppViewMgr.prototype.showSearchBuilder=function(t){\r
101454 skin.show("searchBuilder",t);\r
101455 this._components[ZmAppViewMgr.C_SEARCH_BUILDER_TOOLBAR].zShow(t);\r
101456 this._components[ZmAppViewMgr.C_SEARCH_BUILDER].zShow(t);\r
101457 var e=[ZmAppViewMgr.C_SEARCH_BUILDER,ZmAppViewMgr.C_SEARCH_BUILDER_TOOLBAR,ZmAppViewMgr.C_APP_CHOOSER,ZmAppViewMgr.C_TREE,ZmAppViewMgr.C_TREE_FOOTER,ZmAppViewMgr.C_TOOLBAR_TOP,ZmAppViewMgr.C_APP_CONTENT,ZmAppViewMgr.C_APP_CONTENT_FULL];\r
101458 this._fitToContainer(e);\r
101459 if(!t){\r
101460 this._components[ZmAppViewMgr.C_SEARCH_BUILDER].setLocation(Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE)\r
101461 }};\r
101462 ZmAppViewMgr.prototype.showTreeFooter=function(e){\r
101463 skin.show("treeFooter",e);\r
101464 this._components[ZmAppViewMgr.C_TREE_FOOTER].zShow(e&&!this.isFullScreen());\r
101465 this._fitToContainer([ZmAppViewMgr.C_TREE,ZmAppViewMgr.C_TREE_FOOTER])\r
101466 };\r
101467 ZmAppViewMgr.prototype.getCurrentViewId=function(){\r
101468 return this._currentView\r
101469 };\r
101470 ZmAppViewMgr.prototype.getCurrentViewComponent=function(e){\r
101471 return this._components[e]\r
101472 };\r
101473 ZmAppViewMgr.prototype.getLastViewId=function(){\r
101474 return this._lastView\r
101475 };\r
101476 ZmAppViewMgr.prototype.getCurrentView=function(){\r
101477 var e=this._views[this._currentView];\r
101478 return e?e[ZmAppViewMgr.C_APP_CONTENT]||e[ZmAppViewMgr.C_APP_CONTENT_FULL]:null\r
101479 };\r
101480 ZmAppViewMgr.prototype.getAppView=function(e){\r
101481 return this._appView[e]\r
101482 };\r
101483 ZmAppViewMgr.prototype.setAppView=function(t,e){\r
101484 this._appView[t]=e\r
101485 };\r
101486 ZmAppViewMgr.prototype.createView=function(t){\r
101487 var e=t.viewId;\r
101488 this._views[e]=t.elements;\r
101489 this._callbacks[e]=t.callbacks||{};\r
101490 this._viewApp[e]=t.appName;\r
101491 this._isAppView[e]=t.isAppView;\r
101492 this._isTransient[e]=t.isTransient;\r
101493 if(!this._isNewWindow&&t.tabParams){\r
101494 this._tabParams[e]=t.tabParams;\r
101495 this._isTabView[e]=Boolean(t.tabParams!=null);\r
101496 this._viewByTabId[t.tabParams.id]=e\r
101497 }};\r
101498 ZmAppViewMgr.prototype.pushView=function(c,t){\r
101499 c=this._viewByTabId[c]||c;\r
101500 var a=(c==ZmAppViewMgr.PENDING_VIEW);\r
101501 if(!a&&!this._views[c]){\r
101502 return false\r
101503 }\r
101504 if(a){\r
101505 c=this._pendingView\r
101506 }\r
101507 var e=this._getViewController(c);\r
101508 if(c==this._currentView){\r
101509 this._setViewVisible(c,true);\r
101510 if(e){\r
101511 e._restoreFocus()\r
101512 }\r
101513 return true\r
101514 }\r
101515 if(this._isTabView[c]){\r
101516 var l=this._tabParams[c];\r
101517 var r=l&&l.tabCallback&&l.tabCallback.run(this._currentView,c);\r
101518 if(l&&!r){\r
101519 var u=appCtxt.getAppChooser();\r
101520 var s=u.getButton(l.id);\r
101521 if(!s){\r
101522 s=u.addButton(l.id,l);\r
101523 s.setHoverImage("Close")\r
101524 }}}\r
101525 if(a){\r
101526 t=true\r
101527 }\r
101528 if(!this._hideView(this._currentView,t||this._isTabView[this._currentView])){\r
101529 this._pendingAction=this._pushCallback;\r
101530 this._pendingView=c;\r
101531 return false\r
101532 }\r
101533 this.addComponents(this._views[c]);\r
101534 var h=this._getViewController(this._currentView);\r
101535 var o=this._isTransient[this._currentView]||(h&&h.isTransient(this._currentView,c));\r
101536 if(this._currentView&&(this._currentView!=c)&&!o){\r
101537 this._hidden.push(this._currentView)\r
101538 }\r
101539 this._removeFromHidden(c);\r
101540 var d=this._lastView;\r
101541 this._lastView=this._currentView;\r
101542 this._currentView=c;\r
101543 if(!this._showView(c,t,(c!=this._currentView))){\r
101544 this._currentView=this._lastView;\r
101545 this._lastView=d;\r
101546 this._pendingAction=this._pushCallback;\r
101547 this._pendingView=c;\r
101548 return false\r
101549 }\r
101550 if(this._noHistory){\r
101551 this._noHistory=false\r
101552 }else{\r
101553 if(c!=ZmId.VIEW_LOADING){\r
101554 this._nextHashIndex++;\r
101555 this._curHashIndex=this._nextHashIndex;\r
101556 this._hashView[this._curHashIndex]=c;\r
101557 if(this._historyMgr){\r
101558 this._historyMgr.add(this._curHashIndex)\r
101559 }}}\r
101560 this._layout(this._currentView);\r
101561 if(e&&e.setCurrentView){\r
101562 e.setCurrentView(c)\r
101563 }\r
101564 if(this._isAppView[c]){\r
101565 this.setAppView(this._viewApp[c],c)\r
101566 }\r
101567 if(this._toRemove.length){\r
101568 for(var n=0;\r
101569 n<this._toRemove.length;\r
101570 n++){\r
101571 this._removeFromHidden(this._toRemove[n])\r
101572 }\r
101573 this._toRemove=[]\r
101574 }\r
101575 return true\r
101576 };\r
101577 ZmAppViewMgr.prototype.popView=function(t,e){\r
101578 if(!this._currentView){\r
101579 return false\r
101580 }\r
101581 var a=(t==ZmAppViewMgr.PENDING_VIEW);\r
101582 if(a){\r
101583 e=t;\r
101584 t=true\r
101585 }\r
101586 if(e&&!a&&(this.getCurrentViewId()!=e)){\r
101587 return false\r
101588 }\r
101589 if(!this._hidden.length&&!this._isNewWindow){\r
101590 if(location&&(location.search.match(/\bview=compose\b/))){\r
101591 this._controller.activateApp(ZmApp.MAIL)\r
101592 }\r
101593 return false\r
101594 }\r
101595 if(!this._hideView(this._currentView,t)){\r
101596 this._pendingAction=this._popCallback;\r
101597 this._pendingView=null;\r
101598 return false\r
101599 }\r
101600 this._deactivateView(this._views[this._currentView]);\r
101601 if(this._isTabView[this._currentView]){\r
101602 appCtxt.getAppChooser().removeButton(this._tabParams[this._currentView].id)\r
101603 }\r
101604 this._lastView=this._currentView;\r
101605 this._currentView=this._hidden.pop();\r
101606 if(!this._currentView&&this._isNewWindow){\r
101607 window.close();\r
101608 return false\r
101609 }\r
101610 if(!this._showView(this._currentView,this._popCallback,null,t,true)){\r
101611 return false\r
101612 }\r
101613 this._removeFromHidden(this._currentView);\r
101614 if(this._historyMgr){\r
101615 if(this._noHistory){\r
101616 this._noHistory=false\r
101617 }else{\r
101618 this._ignoreHistoryChange=true;\r
101619 history.back()\r
101620 }}\r
101621 this.addComponents(this._views[this._currentView]);\r
101622 this._layout(this._currentView);\r
101623 return true\r
101624 };\r
101625 ZmAppViewMgr.prototype.setView=function(t,n){\r
101626 var e=this.pushView(t,n);\r
101627 if(e){\r
101628 for(var o=0;\r
101629 o<this._hidden.length;\r
101630 o++){\r
101631 var a=this._views[this._hidden[o]];\r
101632 this._deactivateView(a)\r
101633 }\r
101634 this._hidden=[]\r
101635 }\r
101636 return e\r
101637 };\r
101638 ZmAppViewMgr.prototype.stageView=function(e){\r
101639 this._removeFromHidden(e);\r
101640 this._hidden.push(e)\r
101641 };\r
101642 ZmAppViewMgr.prototype.replaceView=function(n,e){\r
101643 n=n||this._currentView;\r
101644 var t=this._views[n];\r
101645 var o=this._views[e];\r
101646 this._hideView(n,true);\r
101647 for(var a in o){\r
101648 t[a]=o[a]\r
101649 }\r
101650 if(this._currentView==n){\r
101651 this._currentView=e;\r
101652 this._showView(e);\r
101653 this._layout(this._currentView)\r
101654 }};\r
101655 ZmAppViewMgr.prototype.isAppView=function(e){\r
101656 return this._isAppView[e]\r
101657 };\r
101658 ZmAppViewMgr.prototype.showPendingView=function(e){\r
101659 if(e&&this._pendingAction){\r
101660 this._pendingAction.run(ZmAppViewMgr.PENDING_VIEW)\r
101661 }\r
101662 if(!e){\r
101663 if(this._browserAction==ZmAppViewMgr.BROWSER_BACK){\r
101664 this._ignoreHistoryChange=true;\r
101665 history.forward()\r
101666 }else{\r
101667 if(this._browserAction==ZmAppViewMgr.BROWSER_FORWARD){\r
101668 this._ignoreHistoryChange=true;\r
101669 history.back()\r
101670 }}\r
101671 this._browserAction=null\r
101672 }\r
101673 this._pendingAction=this._pendingView=null\r
101674 };\r
101675 ZmAppViewMgr.prototype.fitAll=function(){\r
101676 this._fitToContainer(ZmAppViewMgr.ALL_COMPONENTS)\r
101677 };\r
101678 ZmAppViewMgr.prototype.getPendingViewId=function(){\r
101679 return this._pendingView\r
101680 };\r
101681 ZmAppViewMgr.prototype.reset=function(){\r
101682 this._shell.removeControlListener(this._controlListener);\r
101683 for(var t in this._views){\r
101684 var a=this._views[t];\r
101685 for(var e=0;\r
101686 e<a.length;\r
101687 e++){\r
101688 for(var o in a[e]){\r
101689 this._components[o].dispose();\r
101690 this._components[o]=null;\r
101691 this._containers[o]=null\r
101692 }}}};\r
101693 ZmAppViewMgr.prototype.updateTitle=function(){\r
101694 this._setTitle(this._currentView)\r
101695 };\r
101696 ZmAppViewMgr.prototype.setTabTitle=function(e,o){\r
101697 var a=this._tabParams[e];\r
101698 var t=!appCtxt.isChildWindow&&a&&appCtxt.getAppChooser().getButton(a.id);\r
101699 if(t){\r
101700 t.setText(o)\r
101701 }};\r
101702 ZmAppViewMgr.prototype.isOkToUnload=function(){\r
101703 var t=AjxUtil.getHashKeys(this._isTabView);\r
101704 if(!this._isTabView[this._currentView]){\r
101705 t.push(this._currentView)\r
101706 }\r
101707 for(var o=0;\r
101708 o<t.length;\r
101709 o++){\r
101710 var e=t[o];\r
101711 var n=this._callbacks[e]&&this._callbacks[e][ZmAppViewMgr.CB_PRE_UNLOAD];\r
101712 if(n){\r
101713 var a=n.run(e);\r
101714 if(!a){\r
101715 return false\r
101716 }}}\r
101717 return true\r
101718 };\r
101719 ZmAppViewMgr.prototype._createLoadingView=function(){\r
101720 var t=new DwtControl({\r
101721 parent:this._shell,className:"DwtListView",posStyle:Dwt.ABSOLUTE_STYLE,id:ZmId.LOADING_VIEW}\r
101722 );\r
101723 var e=t.getHtmlElement();\r
101724 e.innerHTML=AjxTemplate.expand("share.App#Loading",this._htmlElId);\r
101725 var a={};\r
101726 a[ZmAppViewMgr.C_APP_CONTENT]=t;\r
101727 this.createView({\r
101728 viewId:ZmId.VIEW_LOADING,elements:a}\r
101729 )\r
101730 };\r
101731 ZmAppViewMgr.prototype._fitToContainer=function(n,h){\r
101732 for(var t=0;\r
101733 t<n.length;\r
101734 t++){\r
101735 var r=n[t];\r
101736 if(!h&&AjxEnv.isIE&&(r==ZmAppViewMgr.C_TASKBAR)){\r
101737 if(!this._ieHackAction){\r
101738 this._ieHackAction=new AjxTimedAction(this,this._fitToContainer,[[ZmAppViewMgr.C_TASKBAR],true])\r
101739 }\r
101740 AjxTimedAction.scheduleAction(this._ieHackAction,1)\r
101741 }\r
101742 var d=this._containers[r];\r
101743 if(d){\r
101744 var s=this._components[r];\r
101745 if(s&&(s.getZIndex()!=Dwt.Z_HIDDEN)){\r
101746 var a=this._getComponentPosition(r);\r
101747 var l=(a==Dwt.STATIC_STYLE);\r
101748 var c=s.getHtmlElement();\r
101749 if(a){\r
101750 c.style.position=a\r
101751 }\r
101752 if(l){\r
101753 if(c.parentNode!=d){\r
101754 d.appendChild(c)\r
101755 }\r
101756 if(s.adjustSize){\r
101757 s.adjustSize()\r
101758 }}else{\r
101759 var o=Dwt.getBounds(d);\r
101760 var e=Dwt.getInsets(d);\r
101761 Dwt.insetBounds(o,e);\r
101762 this._contBounds[r]=o;\r
101763 s.setBounds(o.x,o.y,o.width,o.height)\r
101764 }}}}\r
101765 if(window.DBG&&DBG.getDebugLevel()>=AjxDebug.DBG2){\r
101766 this._debugShowMetrics(n)\r
101767 }};\r
101768 ZmAppViewMgr.prototype._getComponentPosition=function(e){\r
101769 return appCtxt.getSkinHint(e,"position")\r
101770 };\r
101771 ZmAppViewMgr.prototype._getContainerBounds=function(n){\r
101772 var e=this._getComponentPosition(n);\r
101773 if(e==Dwt.STATIC_STYLE){\r
101774 return null\r
101775 }\r
101776 var a=this._containers[n];\r
101777 if(a){\r
101778 var o=Dwt.getBounds(a);\r
101779 var t=Dwt.getInsets(a);\r
101780 Dwt.insetBounds(o,t);\r
101781 return o\r
101782 }\r
101783 return null\r
101784 };\r
101785 ZmAppViewMgr.prototype._layout=function(t){\r
101786 if(this._hasSkin){\r
101787 return\r
101788 }\r
101789 var a=this._components[ZmAppViewMgr.C_TOOLBAR_TOP];\r
101790 var n=a.getSize();\r
101791 var e=n.y?n.y:a.getHtmlElement().clientHeight;\r
101792 a.setBounds(0,0,this._shellSz.x,e);\r
101793 var o=this._components[ZmAppViewMgr.C_APP_CONTENT]||this._components[ZmAppViewMgr.C_APP_CONTENT_FULL];\r
101794 o.setBounds(0,e,this._shellSz.x,this._shellSz.y-e)\r
101795 };\r
101796 ZmAppViewMgr.prototype._hideView=function(e,a){\r
101797 if(!e){\r
101798 return true\r
101799 }\r
101800 var t=true;\r
101801 var o=this._callbacks[e]?this._callbacks[e][ZmAppViewMgr.CB_PRE_HIDE]:null;\r
101802 if(o){\r
101803 t=o.run(e,a)\r
101804 }\r
101805 if(t){\r
101806 this._setViewVisible(e,false);\r
101807 if(appCtxt.get(ZmSetting.USE_KEYBOARD_SHORTCUTS)){\r
101808 appCtxt.getKeyboardMgr().clearKeySeq()\r
101809 }\r
101810 o=this._callbacks[e]?this._callbacks[e][ZmAppViewMgr.CB_POST_HIDE]:null;\r
101811 if(o){\r
101812 o.run(e)\r
101813 }}\r
101814 return t\r
101815 };\r
101816 ZmAppViewMgr.prototype._showView=function(e,o,a){\r
101817 var t=true;\r
101818 var n=this._callbacks[e]?this._callbacks[e][ZmAppViewMgr.CB_PRE_SHOW]:null;\r
101819 if(n){\r
101820 t=n.run(e,a,o)\r
101821 }\r
101822 if(t){\r
101823 this._setViewVisible(e,true);\r
101824 n=this._callbacks[e]?this._callbacks[e][ZmAppViewMgr.CB_POST_SHOW]:null;\r
101825 if(n){\r
101826 n.run(e,a)\r
101827 }}\r
101828 appCtxt.notifyZimlets("onShowView",[e,a],{\r
101829 noChildWindow:true}\r
101830 );\r
101831 return t\r
101832 };\r
101833 ZmAppViewMgr.prototype._setViewVisible=function(d,u){\r
101834 var t=this._views[d];\r
101835 var n=this._lastView?this.isFullScreen(this._lastView):null;\r
101836 var a=this.isFullScreen(d);\r
101837 if(u){\r
101838 if(n!==a){\r
101839 if(this._hasSkin){\r
101840 skin.show("fullScreen",a)\r
101841 }\r
101842 for(var s=0;\r
101843 s<ZmAppViewMgr.APP_COMPONENTS.length;\r
101844 s++){\r
101845 var c=ZmAppViewMgr.APP_COMPONENTS[s];\r
101846 var r=this._components[c];\r
101847 if(!r){\r
101848 continue\r
101849 }\r
101850 r.zShow(!a);\r
101851 if(a){\r
101852 try{\r
101853 r.setLocation(Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE)\r
101854 }\r
101855 catch(l){}}}\r
101856 if(!a&&this._hasSkin){\r
101857 this._fitToContainer(ZmAppViewMgr.APP_COMPONENTS)\r
101858 }}\r
101859 var h=[];\r
101860 for(var c in t){\r
101861 h.push(c);\r
101862 t[c].zShow(true);\r
101863 this._components[c]=t[c]\r
101864 }\r
101865 if(this._hasSkin){\r
101866 this._fitToContainer(h)\r
101867 }\r
101868 this._setTitle(d);\r
101869 if(this._isTabView[d]){\r
101870 var o=this._tabParams[d].id;\r
101871 this._controller.setActiveTabId(o)\r
101872 }\r
101873 if(this._viewApp[d]){\r
101874 this._controller.setActiveApp(this._viewApp[d],d,this._isTabView[d])\r
101875 }}else{\r
101876 for(var c in t){\r
101877 t[c].setLocation(Dwt.LOC_NOWHERE,Dwt.LOC_NOWHERE);\r
101878 t[c].zShow(false)\r
101879 }}};\r
101880 ZmAppViewMgr.prototype._removeFromHidden=function(e){\r
101881 var a=[];\r
101882 for(var t=0;\r
101883 t<this._hidden.length;\r
101884 t++){\r
101885 if(this._hidden[t]!=e){\r
101886 a.push(this._hidden[t])\r
101887 }}\r
101888 this._hidden=a\r
101889 };\r
101890 ZmAppViewMgr.prototype._deactivateView=function(e){\r
101891 for(var a in e){\r
101892 var t=e[a];\r
101893 if(t.deactivate){\r
101894 t.deactivate()\r
101895 }}};\r
101896 ZmAppViewMgr.prototype._setTitle=function(e){\r
101897 var a=this._views[e];\r
101898 if(!a){\r
101899 return\r
101900 }\r
101901 var t=a[ZmAppViewMgr.C_APP_CONTENT]||a[ZmAppViewMgr.C_APP_CONTENT_FULL];\r
101902 if(t&&t.getTitle){\r
101903 var o=t.getTitle();\r
101904 Dwt.setTitle(o?o:ZmMsg.zimbraTitle)\r
101905 }};\r
101906 ZmAppViewMgr.prototype._shellControlListener=function(o){\r
101907 if(o.oldWidth!=o.newWidth||o.oldHeight!=o.newHeight){\r
101908 this._shellSz.x=o.newWidth;\r
101909 this._shellSz.y=o.newHeight;\r
101910 var a=o.newWidth-o.oldWidth;\r
101911 var r=o.newHeight-o.oldHeight;\r
101912 if(this._isNewWindow){\r
101913 var t=this._views[this._currentView][ZmAppViewMgr.C_TOOLBAR_TOP];\r
101914 if(t){\r
101915 t.setSize(o.newWidth,Dwt.DEFAULT)\r
101916 }\r
101917 var e=this._views[this._currentView];\r
101918 var s=e[ZmAppViewMgr.C_APP_CONTENT]||e[ZmAppViewMgr.C_APP_CONTENT_FULL];\r
101919 if(s){\r
101920 s.setSize(o.newWidth,o.newHeight-t.getH())\r
101921 }}else{\r
101922 if(r&&a){\r
101923 this.fitAll(true)\r
101924 }else{\r
101925 if(r){\r
101926 var n=[ZmAppViewMgr.C_APP_CHOOSER,ZmAppViewMgr.C_TREE,ZmAppViewMgr.C_TREE_FOOTER,ZmAppViewMgr.C_SASH,ZmAppViewMgr.C_APP_CONTENT,ZmAppViewMgr.C_APP_CONTENT_FULL,ZmAppViewMgr.C_STATUS,ZmAppViewMgr.C_TASKBAR,ZmAppViewMgr.C_AD,ZmAppViewMgr.C_FOOTER];\r
101927 this._fitToContainer(n,true)\r
101928 }else{\r
101929 if(a){\r
101930 var n=[ZmAppViewMgr.C_BANNER,ZmAppViewMgr.C_SEARCH,ZmAppViewMgr.C_USER_INFO,ZmAppViewMgr.C_QUOTA_INFO,ZmAppViewMgr.C_SEARCH_BUILDER,ZmAppViewMgr.C_SEARCH_BUILDER_TOOLBAR,ZmAppViewMgr.C_TOOLBAR_TOP,ZmAppViewMgr.C_APP_CONTENT,ZmAppViewMgr.C_APP_CONTENT_FULL,ZmAppViewMgr.C_TOOLBAR_BOTTOM,ZmAppViewMgr.C_TASKBAR,ZmAppViewMgr.C_AD,ZmAppViewMgr.C_FOOTER];\r
101931 this._fitToContainer(n,true)\r
101932 }}}}}};\r
101933 ZmAppViewMgr.prototype._debugShowMetrics=function(o){\r
101934 for(var t=0;\r
101935 t<o.length;\r
101936 t++){\r
101937 var n=o[t];\r
101938 var e=this._containers[n];\r
101939 if(e){\r
101940 var a=Dwt.getBounds(e)\r
101941 }}};\r
101942 ZmAppViewMgr.prototype._historyChangeListener=function(a){\r
101943 if(!(a&&a.data)){\r
101944 return\r
101945 }\r
101946 if(this._ignoreHistoryChange){\r
101947 this._ignoreHistoryChange=false;\r
101948 return\r
101949 }\r
101950 var o=DwtBaseDialog.getActiveDialog();\r
101951 if(o&&o.isPoppedUp()){\r
101952 o.popdown()\r
101953 }\r
101954 var t=parseInt(a.data);\r
101955 this._noHistory=true;\r
101956 var e=this._hashView[t];\r
101957 if(t==(this._curHashIndex-1)){\r
101958 this._browserAction=ZmAppViewMgr.BROWSER_BACK;\r
101959 this.popView()\r
101960 }else{\r
101961 if(t==(this._curHashIndex+1)){\r
101962 this._browserAction=ZmAppViewMgr.BROWSER_FORWARD;\r
101963 this.pushView(e)\r
101964 }else{\r
101965 this._browserAction=null;\r
101966 this.pushView(e)\r
101967 }}\r
101968 this._curHashIndex=t\r
101969 };\r
101970 ZmAppViewMgr.prototype._appTreeSashCallback=function(o){\r
101971 if(!window.skin){\r
101972 return\r
101973 }\r
101974 var e=skin.getTreeWidth();\r
101975 if(!e){\r
101976 return 0\r
101977 }\r
101978 if(!this.treeMinSize){\r
101979 this.treeMinSize=window.skin.hints.tree.minWidth||150;\r
101980 this.treeMaxSize=window.skin.hints.tree.maxWidth||300\r
101981 }\r
101982 if(e+o>this.treeMaxSize){\r
101983 o=Math.max(0,this.treeMaxSize-e)\r
101984 }\r
101985 if(e+o<this.treeMinSize){\r
101986 o=Math.min(0,this.treeMinSize-e)\r
101987 }\r
101988 var t=e+o;\r
101989 skin.setTreeWidth(t);\r
101990 var a=this;\r
101991 setTimeout(function(){\r
101992 a.fitAll(true)\r
101993 }\r
101994 ,0);\r
101995 return o\r
101996 };\r
101997 ZmAppViewMgr.prototype._getViewController=function(e){\r
101998 var o;\r
101999 var t=this._views[e];\r
102000 if(t){\r
102001 var a=t[ZmAppViewMgr.C_APP_CONTENT]||t[ZmAppViewMgr.C_APP_CONTENT_FULL];\r
102002 o=a&&a.getController&&a.getController()\r
102003 }\r
102004 return o\r
102005 }\r
102006 }\r
102007 if(AjxPackage.define("zimbraMail.core.ZmRequestMgr")){\r
102008 ZmRequestMgr=function(e){\r
102009 this._controller=e;\r
102010 appCtxt.setRequestMgr(this);\r
102011 ZmCsfeCommand.setServerUri(appCtxt.get(ZmSetting.CSFE_SERVER_URI));\r
102012 var t=appCtxt.get(ZmSetting.CLIENT_VERSION);\r
102013 ZmCsfeCommand.clientVersion=(!t||t.indexOf("@")==0)?"dev build":t;\r
102014 this._shell=appCtxt.getShell();\r
102015 this._highestNotifySeen=0;\r
102016 this._cancelActionId={};\r
102017 this._pendingRequests={};\r
102018 this._useXml=appCtxt.get(ZmSetting.USE_XML);\r
102019 this._logRequest=appCtxt.get(ZmSetting.LOG_REQUEST);\r
102020 this._stdTimeout=appCtxt.get(ZmSetting.TIMEOUT);\r
102021 this._unreadListener=new AjxListener(this,this._unreadChangeListener)\r
102022 };\r
102023 ZmRequestMgr._SENT=1;\r
102024 ZmRequestMgr._RESPONSE=2;\r
102025 ZmRequestMgr._CANCEL=3;\r
102026 ZmRequestMgr.RETRY_MAX=2;\r
102027 ZmRequestMgr.RETRY_DELAY=5;\r
102028 ZmRequestMgr.RETRY_ON_EXCEPTION={};\r
102029 ZmRequestMgr.RETRY_ON_EXCEPTION[ZmCsfeException.EMPTY_RESPONSE]=true;\r
102030 ZmRequestMgr._nextReqId=1;\r
102031 ZmRequestMgr.prototype.toString=function(){\r
102032 return"ZmRequestMgr"\r
102033 };\r
102034 ZmRequestMgr.prototype.sendRequest=function(x){\r
102035 var t=x.response;\r
102036 if(t){\r
102037 if(x.reqId){\r
102038 x=this._pendingRequests[x.reqId]||x;\r
102039 x.response=t\r
102040 }\r
102041 x.asyncMode=true;\r
102042 return this._handleResponseSendRequest(x,new ZmCsfeResult(t))\r
102043 }\r
102044 var y=x.reqId=("Req_"+ZmRequestMgr._nextReqId++);\r
102045 var c=(x.timeout!=null)?x.timeout:this._stdTimeout;\r
102046 if(c){\r
102047 c=c*1000\r
102048 }\r
102049 var q=x.asyncMode?new AjxCallback(this,this._handleResponseSendRequest,[x]):null;\r
102050 if(x.sensitive){\r
102051 var v=document.location.protocol==ZmSetting.PROTO_HTTP;\r
102052 var s=appCtxt.get(ZmSetting.PROTOCOL_MODE)==ZmSetting.PROTO_MIXED;\r
102053 if(v&&s){\r
102054 x.noSession=true;\r
102055 var o=ZmCsfeCommand.getRequestStr(x);\r
102056 var d=document.location;\r
102057 var u=appCtxt.get(ZmSetting.HTTPS_PORT);\r
102058 if(u&&u!=ZmSetting.DEFAULT_HTTPS_PORT){\r
102059 u=":"+u\r
102060 }\r
102061 var h=document.createElement("IFRAME");\r
102062 h.style.display="none";\r
102063 h.id=Dwt.getNextId();\r
102064 document.body.appendChild(h);\r
102065 var p=Dwt.getIframeDoc(h);\r
102066 p.write("<form ","id=",h.id,"-form ","target=",h.id,"-iframe ","method=POST ","action='https://",d.hostname,u,appContextPath,"/public/secureRequest.jsp'",">","<input type=hidden name=reqId value='",y,"'>","<textarea name=data>",AjxStringUtil.htmlEncode(o),"</textarea>","</form>","<iframe name=",h.id,"-iframe></iframe>");\r
102067 p.close();\r
102068 x.iframeId=h.id;\r
102069 this._pendingRequests[y]=x;\r
102070 var a=p.getElementById(h.id+"-form");\r
102071 a.submit();\r
102072 return\r
102073 }}\r
102074 var n=new ZmCsfeCommand();\r
102075 var e=x.accountName;\r
102076 if(!e){\r
102077 var f=appCtxt.getActiveAccount();\r
102078 e=(f&&f.id!=ZmAccountList.DEFAULT_ID)?f.name:null\r
102079 }\r
102080 var l,m;\r
102081 if(x.restUri){\r
102082 l={\r
102083 restUri:x.restUri,asyncMode:x.asyncMode,callback:q}\r
102084 }else{\r
102085 l={\r
102086 jsonObj:x.jsonObj,soapDoc:x.soapDoc,accountName:e,useXml:this._useXml,changeToken:(e?null:this._changeToken),asyncMode:x.asyncMode,callback:q,logRequest:this._logRequest,highestNotifySeen:this._highestNotifySeen,skipAuthCheck:x.skipAuthCheck,resend:x.resend,noSession:x.noSession};\r
102087 m=x.methodName=ZmCsfeCommand.getMethodName(l.jsonObj||l.soapDoc)\r
102088 }\r
102089 appCtxt.currentRequestParams=x;\r
102090 var b=c?[y,x.errorCallback,x.noBusyOverlay]:null;\r
102091 if(!x.noBusyOverlay){\r
102092 var r=null;\r
102093 var g=false;\r
102094 if(c){\r
102095 r=new AjxCallback(this,this.cancelRequest,b);\r
102096 this._shell.setBusyDialogText(ZmMsg.askCancel);\r
102097 g=true\r
102098 }\r
102099 this._shell.setBusy(true,y,g,c,r)\r
102100 }else{\r
102101 if(c){\r
102102 var w=new AjxTimedAction(this,this.cancelRequest,b);\r
102103 this._cancelActionId[y]=AjxTimedAction.scheduleAction(w,c)\r
102104 }}\r
102105 this._pendingRequests[y]=n;\r
102106 try{\r
102107 var t=x.restUri?n.invokeRest(l):n.invoke(l);\r
102108 n.state=ZmRequestMgr._SENT\r
102109 }\r
102110 catch(k){\r
102111 this._handleResponseSendRequest(x,new ZmCsfeResult(k,true));\r
102112 return\r
102113 }\r
102114 return(x.asyncMode)?y:(this._handleResponseSendRequest(x,t))\r
102115 };\r
102116 ZmRequestMgr.prototype._handleResponseSendRequest=function(r,e){\r
102117 var s=(r.response!=null);\r
102118 if(!s){\r
102119 if(!this._pendingRequests[r.reqId]){\r
102120 return\r
102121 }\r
102122 if(this._pendingRequests[r.reqId].state==ZmRequestMgr._CANCEL){\r
102123 return\r
102124 }\r
102125 this._pendingRequests[r.reqId].state=ZmRequestMgr._RESPONSE;\r
102126 if(!r.noBusyOverlay){\r
102127 this._shell.setBusy(false,r.reqId)\r
102128 }else{\r
102129 if(r.timeout){\r
102130 AjxTimedAction.cancelAction(this._cancelActionId[r.reqId]);\r
102131 this._cancelActionId[r.reqId]=-1\r
102132 }}}\r
102133 var a;\r
102134 try{\r
102135 if(r.asyncMode&&!r.restUri){\r
102136 a=e.getResponse()\r
102137 }else{\r
102138 if(e._isException){\r
102139 throw e._data\r
102140 }else{\r
102141 a=e\r
102142 }}\r
102143 if(a.Header){\r
102144 this._handleHeader(a.Header)\r
102145 }}\r
102146 catch(o){\r
102147 if(r.errorCallback){\r
102148 var n=r.errorCallback.run(o);\r
102149 if(!n){\r
102150 this._handleException(o,r)\r
102151 }}else{\r
102152 this._handleException(o,r)\r
102153 }\r
102154 var h=e.getHeader();\r
102155 if(h){\r
102156 this._handleHeader(h);\r
102157 this._handleNotifications(h)\r
102158 }\r
102159 this._clearPendingRequest(r.reqId);\r
102160 return\r
102161 }\r
102162 if(r.asyncMode&&!r.restUri){\r
102163 e.set(a.Body)\r
102164 }\r
102165 if(!appCtxt.isOffline&&!s){\r
102166 this._controller._kickPolling(true)\r
102167 }\r
102168 var t=(DBG&&DBG.getDebugLevel()>0)?ZmCsfeCommand.getMethodName(r.jsonObj||r.soapDoc):"";\r
102169 if(r.asyncMode&&r.callback){\r
102170 r.callback.run(e)\r
102171 }\r
102172 this._handleNotifications(a.Header);\r
102173 this._clearPendingRequest(r.reqId);\r
102174 if(!r.asyncMode){\r
102175 return a.Body\r
102176 }};\r
102177 ZmRequestMgr.prototype.cancelRequest=function(o,e,t){\r
102178 if(!this._pendingRequests[o]){\r
102179 return\r
102180 }\r
102181 if(this._pendingRequests[o].state==ZmRequestMgr._RESPONSE){\r
102182 return\r
102183 }\r
102184 this._pendingRequests[o].state=ZmRequestMgr._CANCEL;\r
102185 if(!t){\r
102186 this._shell.setBusy(false,o)\r
102187 }\r
102188 this._pendingRequests[o].cancel();\r
102189 if(e){\r
102190 var a=new AjxException("Request canceled",AjxException.CANCELED,"ZmRequestMgr.prototype.cancelRequest");\r
102191 e.run(a)\r
102192 }\r
102193 this._clearPendingRequest(o)\r
102194 };\r
102195 ZmRequestMgr.prototype._clearPendingRequest=function(a){\r
102196 var t=this._pendingRequests[a];\r
102197 if(t){\r
102198 if(t.iframeId){\r
102199 var e=document.getElementById(t.iframeId);\r
102200 if(e){\r
102201 e.parentNode.removeChild(e)\r
102202 }}\r
102203 delete this._pendingRequests[a]\r
102204 }};\r
102205 ZmRequestMgr.prototype._handleHeader=function(o){\r
102206 if(!o){\r
102207 return\r
102208 }\r
102209 if(o&&o.context&&o.context.change){\r
102210 this._changeToken=o.context.change.token\r
102211 }\r
102212 if(o&&o.context&&o.context.refresh){\r
102213 this._highestNotifySeen=0;\r
102214 if(!appCtxt.isOffline||!appCtxt.multiAccounts){\r
102215 this._refreshHandler(o.context.refresh)\r
102216 }}\r
102217 if(o&&o.context.zdsync&&o.context.zdsync.account){\r
102218 var e=o.context.zdsync.account;\r
102219 for(var t=0;\r
102220 t<e.length;\r
102221 t++){\r
102222 var a=appCtxt.accountList.getAccount(e[t].id);\r
102223 if(a){\r
102224 a.updateState(e[t])\r
102225 }}}};\r
102226 ZmRequestMgr.prototype._handleException=function(e,a){\r
102227 var t=false;\r
102228 if(ZmRequestMgr.RETRY_ON_EXCEPTION[e.code]){\r
102229 a.retryCount=a.retryCount||0;\r
102230 if(a.retryCount<ZmRequestMgr.RETRY_MAX){\r
102231 a.resend=ZmCsfeCommand.RETRY;\r
102232 a.retryCount++;\r
102233 AjxTimedAction.scheduleAction(new AjxTimedAction(this,function(){\r
102234 this.sendRequest(a)\r
102235 }\r
102236 ),ZmRequestMgr.RETRY_DELAY*1000);\r
102237 t=true\r
102238 }}\r
102239 if(!t){\r
102240 this._controller._handleException(e,a)\r
102241 }};\r
102242 ZmRequestMgr.prototype._handleNotifications=function(a){\r
102243 if(a&&a.context&&a.context.notify){\r
102244 for(i=0;\r
102245 i<a.context.notify.length;\r
102246 i++){\r
102247 var t=a.context.notify[i];\r
102248 var e=t.seq;\r
102249 if(t.seq>this._highestNotifySeen){\r
102250 this._highestNotifySeen=e;\r
102251 this._notifyHandler(t)\r
102252 }else{}}}};\r
102253 ZmRequestMgr.prototype._refreshHandler=function(t){\r
102254 this._controller.runAppFunction("_clearDeferredFolders");\r
102255 if(t.version){\r
102256 if(!this._canceledReload){\r
102257 var n=appCtxt.get(ZmSetting.SERVER_VERSION);\r
102258 if(n!=t.version){\r
102259 appCtxt.set(ZmSetting.SERVER_VERSION,t.version);\r
102260 if(n){\r
102261 var o=appCtxt.getYesNoMsgDialog();\r
102262 o.reset();\r
102263 o.registerCallback(DwtDialog.YES_BUTTON,this._reloadYesCallback,this,[o,n,t.version]);\r
102264 o.registerCallback(DwtDialog.NO_BUTTON,this._reloadNoCallback,this,[o,t]);\r
102265 var a=AjxMessageFormat.format(ZmMsg.versionChangeRestart,[n,t.version]);\r
102266 o.setMessage(a,DwtMessageDialog.WARNING_STYLE);\r
102267 o.popup();\r
102268 return\r
102269 }}}}\r
102270 var e={};\r
102271 this._loadTree(ZmOrganizer.TAG,e,t.tags);\r
102272 this._loadTree(ZmOrganizer.FOLDER,e,t.folder[0],"folder");\r
102273 this._controller.runAppFunction("refresh",false,t)\r
102274 };\r
102275 ZmRequestMgr.prototype._reloadYesCallback=function(t){\r
102276 t.popdown();\r
102277 window.onbeforeunload=null;\r
102278 var e=AjxUtil.formatUrl();\r
102279 ZmZimbraMail.sendRedirect(e)\r
102280 };\r
102281 ZmRequestMgr.prototype._reloadNoCallback=function(e,t){\r
102282 e.popdown();\r
102283 this._canceledReload=true;\r
102284 this._refreshHandler(t)\r
102285 };\r
102286 ZmRequestMgr.prototype._loadTree=function(a,t,s,r,n){\r
102287 var o=(a==ZmOrganizer.TAG);\r
102288 var e=appCtxt.getTree(a,n);\r
102289 if(e){\r
102290 e.reset()\r
102291 }else{\r
102292 e=o?new ZmTagTree(n):new ZmFolderTree()\r
102293 }\r
102294 appCtxt.setTree(a,e,n);\r
102295 e.addChangeListener(this._unreadListener);\r
102296 e.getUnreadHash(t);\r
102297 e.loadFromJs(s,r,n)\r
102298 };\r
102299 ZmRequestMgr.prototype._notifyHandler=function(e){\r
102300 this._controller.runAppFunction("preNotify",false,e);\r
102301 if(e.deleted&&e.deleted.id){\r
102302 this._handleDeletes(e.deleted)\r
102303 }\r
102304 if(e.created){\r
102305 this._handleCreates(e.created)\r
102306 }\r
102307 if(e.modified){\r
102308 this._handleModifies(e.modified)\r
102309 }\r
102310 this._controller.runAppFunction("postNotify",false,e)\r
102311 };\r
102312 ZmRequestMgr.prototype._handleDeletes=function(o){\r
102313 var t=o.id.split(",");\r
102314 this._controller.runAppFunction("deleteNotify",false,t);\r
102315 for(var e=0;\r
102316 e<t.length;\r
102317 e++){\r
102318 var n=t[e];\r
102319 if(!n){\r
102320 continue\r
102321 }\r
102322 var a=appCtxt.cacheGet(n);\r
102323 if(a){\r
102324 a.notifyDelete();\r
102325 appCtxt.cacheRemove(n);\r
102326 a=null\r
102327 }}};\r
102328 ZmRequestMgr.prototype._handleCreates=function(s){\r
102329 this._controller.runAppFunction("createNotify",false,s);\r
102330 for(var t in s){\r
102331 var r=s[t];\r
102332 for(var o=0;\r
102333 o<r.length;\r
102334 o++){\r
102335 var a=r[o];\r
102336 if(a._handled){\r
102337 continue\r
102338 }\r
102339 if(appCtxt.cacheGet(a.id)&&t!="tag"){\r
102340 continue\r
102341 }\r
102342 if(t=="tag"){\r
102343 var e=appCtxt.getTagTree();\r
102344 if(e){\r
102345 e.root.notifyCreate(a)\r
102346 }}else{\r
102347 if(t=="folder"||t=="search"||t=="link"){\r
102348 var h=a.l;\r
102349 var n=appCtxt.getById(h);\r
102350 if(n&&n.type!=ZmOrganizer.TAG){\r
102351 n.notifyCreate(a,(t=="search"))\r
102352 }}}}}};\r
102353 ZmRequestMgr.prototype._handleModifies=function(a){\r
102354 this._controller.runAppFunction("modifyNotify",false,a);\r
102355 for(var t in a){\r
102356 if(t=="mbx"){\r
102357 var l=a[t];\r
102358 for(var n=0;\r
102359 n<l.length;\r
102360 n++){\r
102361 var e=l[n];\r
102362 var h=e.acct;\r
102363 if(!h||(h&&h==appCtxt.getActiveAccount().id)){\r
102364 var d=appCtxt.getSettings().getSetting(ZmSetting.QUOTA_USED);\r
102365 d.notifyModify({\r
102366 _name:t,s:e.s}\r
102367 )\r
102368 }}\r
102369 continue\r
102370 }\r
102371 var s=a[t];\r
102372 for(var n=0;\r
102373 n<s.length;\r
102374 n++){\r
102375 var r=s[n];\r
102376 if(r._handled){\r
102377 continue\r
102378 }\r
102379 var c=appCtxt.cacheGet(r.id);\r
102380 if(!c&&t=="cn"&&AjxDispatcher.loaded("ContactsCore")){\r
102381 var o=appCtxt.getApp(ZmApp.CONTACTS);\r
102382 if(o.isContactListLoaded()){\r
102383 c=o.getContactList().getById(r.id)\r
102384 }}\r
102385 if(c){\r
102386 r._isRemote=(t=="folder"&&c.link);\r
102387 c.notifyModify(r)\r
102388 }}}};\r
102389 ZmRequestMgr._getObjList=function(a){\r
102390 var o=[];\r
102391 for(var e in a){\r
102392 var n=a[e];\r
102393 if(n instanceof Array){\r
102394 for(var t=0;\r
102395 t<n.length;\r
102396 t++){\r
102397 n[t]._name=e;\r
102398 o.push(n[t])\r
102399 }}else{\r
102400 n._name=e;\r
102401 o.push(n)\r
102402 }}\r
102403 return o\r
102404 };\r
102405 ZmRequestMgr.prototype._unreadChangeListener=function(n){\r
102406 if(n.event==ZmEvent.E_MODIFY){\r
102407 var t=n.getDetail("fields");\r
102408 if(t&&t[ZmOrganizer.F_UNREAD]){\r
102409 var a=n.getDetail("organizers");\r
102410 var e=a?a[0]:null;\r
102411 var r=e?(e.isSystem()?e.nId:e.id):null;\r
102412 var o=appCtxt.getCurrentSearch();\r
102413 if(o&&r&&(r==o.folderId||r==o.tagId)){\r
102414 Dwt.setTitle(o.getTitle())\r
102415 }\r
102416 var s=appCtxt.getApp(ZmApp.MAIL);\r
102417 if(s){\r
102418 s.setNewMailNotice(e)\r
102419 }}}}\r
102420 }\r
102421 if(AjxPackage.define("zimbraMail.core.ZmZimbraMail")){\r
102422 ZmZimbraMail=function(n){\r
102423 ZmController.call(this,null);\r
102424 this._userShell=n.userShell;\r
102425 this._requestMgr=new ZmRequestMgr(this);\r
102426 this._evt=new ZmAppEvent();\r
102427 this._evtMgr=new AjxEventMgr();\r
102428 for(var a in ZmZimbraMail._listeners){\r
102429 var o=ZmZimbraMail._listeners[a];\r
102430 if(o&&o.length){\r
102431 for(var e=0;\r
102432 e<o.length;\r
102433 e++){\r
102434 this._evtMgr.addListener(a,o[e])\r
102435 }}}\r
102436 ZmZimbraMail.addListener=AjxCallback.simpleClosure(this.addListener,this);\r
102437 ZmZimbraMail.addAppListener=AjxCallback.simpleClosure(this.addAppListener,this);\r
102438 window._zimbraMail=this;\r
102439 if(appCtxt.get(ZmSetting.HISTORY_SUPPORT_ENABLED)&&!AjxEnv.isSafari){\r
102440 window.historyMgr=appCtxt.getHistoryMgr()\r
102441 }\r
102442 this._settings=appCtxt.getSettings();\r
102443 var t=appCtxt.get(ZmSetting.BRANCH);\r
102444 if(window.DBG&&!DBG.isDisabled()){}\r
102445 appCtxt.setAppController(this);\r
102446 this._shell=appCtxt.getShell();\r
102447 this._apps={};\r
102448 this._upsellView={};\r
102449 this._activeApp=null;\r
102450 this._sessionTimer=new AjxTimedAction(null,ZmZimbraMail.logOff);\r
102451 this._sessionTimerId=-1;\r
102452 this._pollActionId=null;\r
102453 this._pollRequest=null;\r
102454 this._pollInstantNotifications=false;\r
102455 this.statusView=null;\r
102456 AjxDispatcher.setPackageLoadFunction("Zimlet",new AjxCallback(this,this._postLoadZimlet));\r
102457 AjxDispatcher.setPreLoadFunction(new AjxCallback(this,function(){\r
102458 this._appViewMgr.pushView(ZmId.VIEW_LOADING)\r
102459 }\r
102460 ));\r
102461 AjxDispatcher.setPostLoadFunction(new AjxCallback(this,function(){\r
102462 this._appViewMgr._toRemove.push(ZmId.VIEW_LOADING)\r
102463 }\r
102464 ));\r
102465 for(var e in ZmApp.QS_ARG){\r
102466 ZmApp.QS_ARG_R[ZmApp.QS_ARG[e]]=e\r
102467 }\r
102468 this.startup(n)\r
102469 };\r
102470 ZmZimbraMail.prototype=new ZmController;\r
102471 ZmZimbraMail.prototype.constructor=ZmZimbraMail;\r
102472 ZmMsg.BETA_documents=[ZmMsg.documents,ZmMsg.beta].join(" ");\r
102473 ZmApp.MAIN="ZmZimbraMail";\r
102474 ZmApp.DROP_TARGETS[ZmApp.MAIN]={};\r
102475 ZmZimbraMail._listeners={};\r
102476 ZmZimbraMail.prototype.toString=function(){\r
102477 return"ZmZimbraMail"\r
102478 };\r
102479 ZmZimbraMail.run=function(h){\r
102480 if(!window.DBG){\r
102481 ZmZimbraMail._createDummyDBG()\r
102482 }\r
102483 if(h.noSplashScreen){\r
102484 ZmZimbraMail.killSplash()\r
102485 }\r
102486 window.appCtxt=new ZmAppCtxt();\r
102487 appCtxt.rememberMe=false;\r
102488 if(h.offlineMode){\r
102489 appCtxt.isOffline=true\r
102490 }\r
102491 var r=new ZmSettings();\r
102492 appCtxt.setSettings(r);\r
102493 if(h.offlineMode){\r
102494 var e=AjxCookie.getCookie(document,ZmSetting.APPS_COOKIE);\r
102495 if(e){\r
102496 for(var s in ZmSetting.APP_LETTER){\r
102497 var n=ZmSetting.APP_LETTER[s];\r
102498 if(e.indexOf(n)!=-1){\r
102499 r.getSetting(s).setValue(true)\r
102500 }}}}\r
102501 if(h.settings){\r
102502 for(var t in h.settings){\r
102503 var a=r.getSettingByName(t);\r
102504 if(a){\r
102505 r.getSetting(a).setValue(h.settings[t])\r
102506 }}}\r
102507 ZmOperation.initialize();\r
102508 if(appCtxt.isOffline){\r
102509 appCtxt.set(ZmSetting.POLLING_INTERVAL,60,null,null,true)\r
102510 }\r
102511 if(h.devMode=="1"){\r
102512 appCtxt.set(ZmSetting.DEV,true);\r
102513 appCtxt.set(ZmSetting.POLLING_INTERVAL,0)\r
102514 }\r
102515 if(h.protocolMode){\r
102516 var l=(h.protocolMode.indexOf(":")==-1)?h.protocolMode+":":h.protocolMode;\r
102517 appCtxt.set(ZmSetting.PROTOCOL_MODE,l)\r
102518 }\r
102519 if(h.httpPort){\r
102520 appCtxt.set(ZmSetting.HTTP_PORT,h.httpPort)\r
102521 }\r
102522 if(h.httpsPort){\r
102523 appCtxt.set(ZmSetting.HTTPS_PORT,h.httpsPort)\r
102524 }\r
102525 if(/dogfood/.test(location.hostname)||(h.devMode=="1")){\r
102526 AjxUtil.enableLogType("rpc",true)\r
102527 }\r
102528 var o=h.userShell=window.document.getElementById(ZmId.SKIN_SHELL);\r
102529 if(!o){\r
102530 alert("Could not get user shell - skin file did not load properly")\r
102531 }\r
102532 var c=new DwtShell({\r
102533 userShell:o,docBodyScrollable:false,id:ZmId.SHELL}\r
102534 );\r
102535 appCtxt.setShell(c);\r
102536 new ZmZimbraMail(h)\r
102537 };\r
102538 ZmZimbraMail.unload=function(){\r
102539 if(!ZmZimbraMail._endSessionDone){\r
102540 ZmZimbraMail._endSession()\r
102541 }\r
102542 if(ZmZimbraMail._isLogOff){\r
102543 ZmZimbraMail._isLogOff=false;\r
102544 if(window._zimbraMail){\r
102545 window._zimbraMail.setSessionTimer(false)\r
102546 }\r
102547 ZmCsfeCommand.clearAuthToken()\r
102548 }\r
102549 var t=window._zimbraMail?window._zimbraMail._childWinList:null;\r
102550 if(t){\r
102551 for(var e=0;\r
102552 e<t.size();\r
102553 e++){\r
102554 var a=t.get(e);\r
102555 a.win.onbeforeunload=null;\r
102556 a.win.parentController=null;\r
102557 a.win.close()\r
102558 }}\r
102559 window._zimbraMail=window.onload=window.onunload=window.onresize=window.document.onkeypress=null\r
102560 };\r
102561 ZmZimbraMail.hashSortCompare=function(s,o,e){\r
102562 var n=o?Number(s[o]):0;\r
102563 var t=e?Number(s[e]):0;\r
102564 if(n>t){\r
102565 return 1\r
102566 }\r
102567 if(n<t){\r
102568 return -1\r
102569 }\r
102570 return 0\r
102571 };\r
102572 ZmZimbraMail.killSplash=function(){\r
102573 var e=Dwt.byId("skin_container_splash_screen");\r
102574 if(e){\r
102575 Dwt.hide(e)\r
102576 }};\r
102577 ZmZimbraMail.prototype.startup=function(a){\r
102578 if(appCtxt.isOffline){\r
102579 this.sendClientEventNotify(true)\r
102580 }\r
102581 appCtxt.inStartup=true;\r
102582 if(typeof(skin)=="undefined"){}\r
102583 if(!this._appViewMgr){\r
102584 this._appViewMgr=new ZmAppViewMgr(this._shell,this,false,true)\r
102585 }\r
102586 skin.show("skin",true);\r
102587 if(!this._components){\r
102588 this._components={};\r
102589 this._components[ZmAppViewMgr.C_SASH]=new DwtSash({\r
102590 parent:this._shell,style:DwtSash.HORIZONTAL_STYLE,className:"console_inset_app_l",threshold:20,id:ZmId.MAIN_SASH}\r
102591 );\r
102592 this._components[ZmAppViewMgr.C_BANNER]=this._createBanner();\r
102593 if(!appCtxt.multiAccounts){\r
102594 this._components[ZmAppViewMgr.C_USER_INFO]=this._userNameField=this._createUserInfo("BannerTextUser",ZmAppViewMgr.C_USER_INFO,ZmId.USER_NAME);\r
102595 this._components[ZmAppViewMgr.C_QUOTA_INFO]=this._usedQuotaField=this._createUserInfo("BannerTextQuota",ZmAppViewMgr.C_QUOTA_INFO,ZmId.USER_QUOTA)\r
102596 }\r
102597 this._components[ZmAppViewMgr.C_STATUS]=this.statusView=new ZmStatusView(this._shell,"ZmStatus",Dwt.ABSOLUTE_STYLE,ZmId.STATUS_VIEW)\r
102598 }\r
102599 this._createEnabledApps();\r
102600 this._registerOrganizers();\r
102601 for(var n in ZmSearch.TYPE){\r
102602 ZmSearch.TYPE_MAP[ZmSearch.TYPE[n]]=n\r
102603 }\r
102604 for(var n in ZmOrganizer.VIEWS){\r
102605 var s=ZmOrganizer.VIEWS[n];\r
102606 for(var o=0;\r
102607 o<s.length;\r
102608 o++){\r
102609 ZmOrganizer.TYPE[s[o]]=n\r
102610 }}\r
102611 if(a.batchInfoResponse){\r
102612 var c=a.batchInfoResponse.Body.BatchResponse;\r
102613 if(c.GetInfoResponse){\r
102614 var e=a.getInfoResponse={};\r
102615 e.Body={};\r
102616 e.Body.GetInfoResponse=c.GetInfoResponse[0];\r
102617 e.Header=a.batchInfoResponse.Header;\r
102618 if(e.Header&&e.Header.context&&e.Header.context.session){\r
102619 ZmCsfeCommand.setSessionId(e.Header.context.session)\r
102620 }}\r
102621 if(c.SearchResponse){\r
102622 var t=a.searchResponse={};\r
102623 t.Body={};\r
102624 t.Body.SearchResponse=c.SearchResponse[0]\r
102625 }}\r
102626 this._getStartApp(a);\r
102627 this._postRenderCallbacks=[];\r
102628 this._postRenderLast=0;\r
102629 if(a.startApp==ZmApp.MAIL){\r
102630 this._doingPostRenderStartup=true;\r
102631 var h=new AjxCallback(this,function(){\r
102632 AjxDispatcher.require("Startup2");\r
102633 if(appCtxt.get(ZmSetting.CALENDAR_ENABLED)){\r
102634 this.handleCalendarComponents()\r
102635 }\r
102636 appCtxt.getSearchController().getSearchToolbar().initAutocomplete()\r
102637 }\r
102638 );\r
102639 this.addPostRenderCallback(h,0,0,true)\r
102640 }\r
102641 var l=new AjxCallback(this,this._handleResponseGetMetaData,a);\r
102642 var r=[ZmSetting.M_IMPLICIT];\r
102643 if(appCtxt.isOffline){\r
102644 r.push(ZmSetting.M_OFFLINE)\r
102645 }\r
102646 appCtxt.getMetaData().get(r,null,l)\r
102647 };\r
102648 ZmZimbraMail.prototype._handleResponseGetMetaData=function(s,e){\r
102649 var n=e.getResponse().BatchResponse.GetMailboxMetadataResponse;\r
102650 var t={};\r
102651 for(var a=0;\r
102652 a<n.length;\r
102653 a++){\r
102654 var o=n[a].meta[0];\r
102655 t[o.section]=o._attrs\r
102656 }\r
102657 var r=new AjxCallback(this,this._handleResponseLoadUserSettings,s);\r
102658 this._errorCallback=new AjxCallback(this,this._handleErrorStartup,s);\r
102659 this._settings.loadUserSettings(r,this._errorCallback,null,s.getInfoResponse,t)\r
102660 };\r
102661 ZmZimbraMail.prototype.showMiniCalendar=function(){\r
102662 var e=appCtxt.getCalManager();\r
102663 e.getMiniCalendar();\r
102664 appCtxt.getAppViewMgr().showTreeFooter(true);\r
102665 e.highlightMiniCal()\r
102666 };\r
102667 ZmZimbraMail.prototype.showReminder=function(){\r
102668 var t=appCtxt.getCalManager();\r
102669 var e=t.getReminderController();\r
102670 e.refresh()\r
102671 };\r
102672 ZmZimbraMail.prototype.handleOfflineMailTo=function(t,n){\r
102673 if(!appCtxt.get(ZmSetting.OFFLINE_IS_MAILTO_HANDLER)){\r
102674 return false\r
102675 }\r
102676 var o=this.getApp(ZmApp.MAIL);\r
102677 var e=(t.indexOf("mailto"));\r
102678 if(e>=0){\r
102679 var a="to="+decodeURIComponent(t.substring(e+7));\r
102680 a=a.replace(/\?/g,"&");\r
102681 o._showComposeView(n,a);\r
102682 return true\r
102683 }\r
102684 return false\r
102685 };\r
102686 ZmZimbraMail.prototype._handleErrorStartup=function(t,e){\r
102687 ZmZimbraMail.killSplash();\r
102688 appCtxt.inStartup=false;\r
102689 return false\r
102690 };\r
102691 ZmZimbraMail.prototype._handleResponseLoadUserSettings=function(t,e){\r
102692 if(appCtxt.multiAccounts){\r
102693 var a=new AjxCallback(this,this._handleResponseStartup,[t,e]);\r
102694 appCtxt.accountList.loadAccounts(a)\r
102695 }else{\r
102696 this._handleResponseStartup(t,e)\r
102697 }};\r
102698 ZmZimbraMail.prototype._handleResponseStartup=function(o,e){\r
102699 if(o&&o.settingOverrides){\r
102700 this._needOverviewLayout=true;\r
102701 for(var r in o.settingOverrides){\r
102702 var a=this._settings.getSetting(r);\r
102703 if(a){\r
102704 a.setValue(o.settingOverrides[r])\r
102705 }}}\r
102706 if(!appCtxt.isOffline){\r
102707 this.setPollInterval(true)\r
102708 }else{\r
102709 try{\r
102710 if(AjxEnv.isMac&&window.platform&&window.platform.isRegisteredProtocolHandler("mailto")){\r
102711 this.registerMailtoHandler()\r
102712 }}\r
102713 catch(t){}}\r
102714 window.onbeforeunload=ZmZimbraMail._confirmExitMethod;\r
102715 if(!this._components[ZmAppViewMgr.C_APP_CHOOSER]){\r
102716 this._components[ZmAppViewMgr.C_APP_CHOOSER]=this._appChooser=this._createAppChooser()\r
102717 }\r
102718 ZmApp.initialize();\r
102719 if(appCtxt.get(ZmSetting.DEFAULT_TIMEZONE)){\r
102720 AjxTimezone.DEFAULT_RULE=AjxTimezone._guessMachineTimezone(appCtxt.get(ZmSetting.DEFAULT_TIMEZONE));\r
102721 AjxTimezone.DEFAULT=AjxTimezone.getClientId(AjxTimezone.DEFAULT_RULE.serverId)\r
102722 }\r
102723 this._evtMgr.notifyListeners(ZmAppEvent.PRE_STARTUP,this._evt);\r
102724 o.result=e;\r
102725 var s=new AjxCallback(this,this._handleResponseStartup1,o);\r
102726 if(this._doingPostRenderStartup){\r
102727 this.addAppListener(o.startApp,ZmAppEvent.POST_RENDER,new AjxListener(this,this._postRenderStartup));\r
102728 this._searchResponse=o.searchResponse\r
102729 }else{\r
102730 AjxDispatcher.require("Startup2")\r
102731 }\r
102732 var n=new AjxCallback(this,function(){\r
102733 this.runAppFunction("startup",false,o.result)\r
102734 }\r
102735 );\r
102736 this.addPostRenderCallback(n,2,100,true);\r
102737 n=new AjxCallback(this,function(){\r
102738 this._setupTabGroups();\r
102739 this.focusContentPane()\r
102740 }\r
102741 );\r
102742 this.addPostRenderCallback(n,3,100);\r
102743 n=new AjxCallback(this,function(){\r
102744 AjxDispatcher.enableLoadFunctions(true);\r
102745 appCtxt.inStartup=false;\r
102746 this._evtMgr.notifyListeners(ZmAppEvent.POST_STARTUP,this._evt);\r
102747 if(appCtxt.isOffline){\r
102748 appCtxt.getSearchController().resetSearchToolbar()\r
102749 }\r
102750 var h=appCtxt.multiAccounts?"GetContactsForAllAccounts":"GetContacts";\r
102751 AjxDispatcher.run(h)\r
102752 }\r
102753 );\r
102754 this.addPostRenderCallback(n,5,100);\r
102755 this.activateApp(o.startApp,false,s,this._errorCallback,o);\r
102756 if(appCtxt.get(ZmSetting.CALENDAR_ENABLED)&&!this._doingPostRenderStartup&&(o.startApp!=ZmApp.CALENDAR)){\r
102757 this.handleCalendarComponents()\r
102758 }};\r
102759 ZmZimbraMail.prototype.handleCalendarComponents=function(){\r
102760 if(appCtxt.get(ZmSetting.CAL_ALWAYS_SHOW_MINI_CAL)){\r
102761 var a=new AjxTimedAction(this,this.showMiniCalendar);\r
102762 var e=appCtxt.isOffline?0:ZmCalendarApp.MINICAL_DELAY;\r
102763 AjxTimedAction.scheduleAction(a,e)\r
102764 }\r
102765 if(appCtxt.get(ZmSetting.CAL_REMINDER_WARNING_TIME)!=0){\r
102766 var t=new AjxTimedAction(this,this.showReminder);\r
102767 var e=appCtxt.isOffline?0:ZmCalendarApp.REMINDER_START_DELAY;\r
102768 AjxTimedAction.scheduleAction(t,e)\r
102769 }};\r
102770 ZmZimbraMail.prototype._handleResponseStartup1=function(a){\r
102771 this._setExternalLinks();\r
102772 this.setUserInfo();\r
102773 if(appCtxt.get(ZmSetting.SEARCH_ENABLED)){\r
102774 this._components[ZmAppViewMgr.C_SEARCH]=appCtxt.getSearchController().getSearchPanel()\r
102775 }\r
102776 this.getKeyMapMgr();\r
102777 this.setSessionTimer(true);\r
102778 ZmZimbraMail.killSplash();\r
102779 this.runAppFunction("addComponents",false,this._components);\r
102780 var e=this._appViewMgr._components;\r
102781 this._appViewMgr.addComponents(this._components,true);\r
102782 if(e){\r
102783 this._appViewMgr.addComponents(e,true)\r
102784 }\r
102785 if(appCtxt.get(ZmSetting.LICENSE_STATUS)!=ZmSetting.LICENSE_GOOD){\r
102786 AjxDispatcher.require("Startup2");\r
102787 var t=appCtxt.getMsgDialog();\r
102788 t.reset();\r
102789 t.setMessage(ZmMsg.licenseExpired,DwtMessageDialog.WARNING_STYLE);\r
102790 t.popup()\r
102791 }\r
102792 if(!this._doingPostRenderStartup){\r
102793 this._postRenderStartup()\r
102794 }};\r
102795 ZmZimbraMail.prototype._postRenderStartup=function(e){\r
102796 this._postRenderCallbacks.sort(function(o,t){\r
102797 return o.order-t.order\r
102798 }\r
102799 );\r
102800 this._runNextPostRenderCallback()\r
102801 };\r
102802 ZmZimbraMail.prototype._runNextPostRenderCallback=function(){\r
102803 if(this._postRenderCallbacks&&this._postRenderCallbacks.length){\r
102804 var e=this._postRenderCallbacks.shift();\r
102805 if(!e){\r
102806 return\r
102807 }\r
102808 AjxTimedAction.scheduleAction(new AjxTimedAction(this,function(){\r
102809 e.callback.run();\r
102810 this._runNextPostRenderCallback()\r
102811 }\r
102812 ),e.delay)\r
102813 }else{\r
102814 if(appCtxt.isOffline){\r
102815 this.sendClientEventNotify(false)\r
102816 }\r
102817 if(appCtxt.multiAccounts){\r
102818 this._resetUserInfo()\r
102819 }}};\r
102820 ZmZimbraMail.prototype.addPostRenderCallback=function(o,e,t,a){\r
102821 if(!this._doingPostRenderStartup&&a){\r
102822 o.run()\r
102823 }else{\r
102824 e=e||this._postRenderLast++;\r
102825 this._postRenderCallbacks.push({\r
102826 callback:o,order:e,delay:t||0}\r
102827 )\r
102828 }};\r
102829 ZmZimbraMail.prototype._getStartApp=function(r){\r
102830 var t;\r
102831 if(r&&r.app){\r
102832 t=ZmApp.QS_ARG_R[r.app.toLowerCase()];\r
102833 var n=ZmApp.SETTING[t];\r
102834 if(n&&!appCtxt.get(n)){\r
102835 t=null\r
102836 }}\r
102837 if(!t){\r
102838 for(var s in ZmApp.DEFAULT_SORT){\r
102839 ZmApp.DEFAULT_APPS.push(s)\r
102840 }\r
102841 ZmApp.DEFAULT_APPS.sort(function(l,h){\r
102842 return ZmZimbraMail.hashSortCompare(ZmApp.DEFAULT_SORT,l,h)\r
102843 }\r
102844 );\r
102845 var e=null;\r
102846 for(var o=0;\r
102847 o<ZmApp.DEFAULT_APPS.length;\r
102848 o++){\r
102849 var s=ZmApp.DEFAULT_APPS[o];\r
102850 var n=ZmApp.SETTING[s];\r
102851 if(!n||appCtxt.get(n)){\r
102852 e=s;\r
102853 break\r
102854 }}\r
102855 t=(r&&r.isRelogin&&this._activeApp)?this._activeApp:e\r
102856 }\r
102857 var a=AjxStringUtil.parseQueryString();\r
102858 if(a&&a.view&&!a.app){\r
102859 t=ZmApp.QS_VIEWS[a.view]\r
102860 }\r
102861 r.startApp=t;\r
102862 r.qsParams=a\r
102863 };\r
102864 ZmZimbraMail.prototype.restart=function(e){\r
102865 this.reset();\r
102866 this.startup({\r
102867 settingOverrides:e}\r
102868 )\r
102869 };\r
102870 ZmZimbraMail.prototype.reset=function(){\r
102871 ZmCsfeCommand.setSessionId(null);\r
102872 this._highestNotifySeen=0;\r
102873 appCtxt.accountList.resetTrees();\r
102874 if(!appCtxt.rememberMe()){\r
102875 appCtxt.getLoginDialog().clearAll()\r
102876 }\r
102877 for(var e in this._apps){\r
102878 this._apps[e]=null\r
102879 }\r
102880 this._activeApp=null;\r
102881 this._appViewMgr.reset()\r
102882 };\r
102883 ZmZimbraMail.prototype.cancelRequest=function(a,e,t){\r
102884 this._requestMgr.cancelRequest(a,e,t)\r
102885 };\r
102886 ZmZimbraMail.prototype.sendRequest=function(e){\r
102887 return this._requestMgr.sendRequest(e)\r
102888 };\r
102889 ZmZimbraMail.prototype.runAppFunction=function(r,s){\r
102890 var t=[];\r
102891 for(var a=2;\r
102892 a<arguments.length;\r
102893 a++){\r
102894 t.push(arguments[a])\r
102895 }\r
102896 for(var a=0;\r
102897 a<ZmApp.APPS.length;\r
102898 a++){\r
102899 var e=ZmApp.APPS[a];\r
102900 var o=ZmApp.SETTING[e];\r
102901 if(!o||appCtxt.get(o)||s){\r
102902 var h=appCtxt.getApp(e);\r
102903 var n=h&&h[r];\r
102904 if(n&&(typeof(n)=="function")){\r
102905 n.apply(h,t)\r
102906 }}}};\r
102907 ZmZimbraMail.prototype._createEnabledApps=function(o){\r
102908 for(var n in ZmApp.CLASS){\r
102909 if(!o||o[n]){\r
102910 ZmApp.APPS.push(n)\r
102911 }}\r
102912 ZmApp.APPS.sort(function(r,s){\r
102913 return ZmZimbraMail.hashSortCompare(ZmApp.LOAD_SORT,r,s)\r
102914 }\r
102915 );\r
102916 for(var t=0;\r
102917 t<ZmApp.APPS.length;\r
102918 t++){\r
102919 var n=ZmApp.APPS[t];\r
102920 var e=ZmApp.SETTING[n]&&appCtxt.get(ZmApp.SETTING[n]);\r
102921 var a=ZmApp.UPSELL_SETTING[n]&&appCtxt.get(ZmApp.UPSELL_SETTING[n]);\r
102922 if(e||a){\r
102923 ZmApp.ENABLED_APPS[n]=true;\r
102924 this._createApp(n);\r
102925 this._apps[n].isUpsell=(!e&&a)\r
102926 }}};\r
102927 ZmZimbraMail.addListener=function(e,t){\r
102928 if(!ZmZimbraMail._listeners[e]){\r
102929 ZmZimbraMail._listeners[e]=[]\r
102930 }\r
102931 ZmZimbraMail._listeners[e].push(t)\r
102932 };\r
102933 ZmZimbraMail.addAppListener=function(e,t,a){\r
102934 t=[e,t].join("_");\r
102935 ZmZimbraMail.addListener(t,a)\r
102936 };\r
102937 ZmZimbraMail.prototype.addListener=function(e,t){\r
102938 return this._evtMgr.addListener(e,t)\r
102939 };\r
102940 ZmZimbraMail.prototype.removeListener=function(e,t){\r
102941 return this._evtMgr.removeListener(e,t)\r
102942 };\r
102943 ZmZimbraMail.prototype.addAppListener=function(a,e,t){\r
102944 e=[a,e].join("_");\r
102945 return this.addListener(e,t)\r
102946 };\r
102947 ZmZimbraMail.prototype.removeAppListener=function(a,e,t){\r
102948 e=[a,e].join("_");\r
102949 return this.removeListener(e,t)\r
102950 };\r
102951 ZmZimbraMail.prototype.sendNoOp=function(){\r
102952 var t=AjxSoapDoc.create("NoOpRequest","urn:zimbraMail");\r
102953 var e=appCtxt.isOffline&&appCtxt.accountList.mainAccount.name;\r
102954 this.sendRequest({\r
102955 soapDoc:t,asyncMode:true,noBusyOverlay:true,accountName:e}\r
102956 )\r
102957 };\r
102958 ZmZimbraMail.prototype.sendClientEventNotify=function(e){\r
102959 var t={\r
102960 jsonObj:{\r
102961 ClientEventNotifyRequest:{\r
102962 _jsns:"urn:zimbraOffline",e:e?"ui_load_begin":"ui_load_end"}}\r
102963 ,callback:(new AjxCallback(this,this.setInstantNotify,true)),asyncMode:true,noBusyOverlay:true};\r
102964 this.sendRequest(t)\r
102965 };\r
102966 ZmZimbraMail.prototype.setInstantNotify=function(e){\r
102967 if(e){\r
102968 this._pollInstantNotifications=true;\r
102969 this._pollInterval=appCtxt.get(ZmSetting.INSTANT_NOTIFY_INTERVAL);\r
102970 if(this._pollActionId){\r
102971 AjxTimedAction.cancelAction(this._pollActionId);\r
102972 this._pollActionId=null\r
102973 }\r
102974 this._kickPolling(true)\r
102975 }else{\r
102976 this._pollInstantNotifications=false;\r
102977 this._cancelInstantNotify();\r
102978 this.setPollInterval(true)\r
102979 }};\r
102980 ZmZimbraMail.prototype.getInstantNotify=function(){\r
102981 return this._pollInstantNotifications\r
102982 };\r
102983 ZmZimbraMail.prototype.registerMailtoHandler=function(){\r
102984 if(appCtxt.get(ZmSetting.OFFLINE_SUPPORTS_MAILTO)&&appCtxt.get(ZmSetting.OFFLINE_IS_MAILTO_HANDLER)){\r
102985 try{\r
102986 if(AjxEnv.isMac||!window.platform.isRegisteredProtocolHandler("mailto")){\r
102987 var a=AjxCallback.simpleClosure(this.handleOfflineMailTo,this);\r
102988 var e=appCtxt.get(ZmSetting.OFFLINE_WEBAPP_URI,null,appCtxt.accountList.mainAccount);\r
102989 window.platform.registerProtocolHandler("mailto",e+"&mailto=%s",a)\r
102990 }}\r
102991 catch(t){}}};\r
102992 ZmZimbraMail.prototype.setPollInterval=function(e){\r
102993 if(!this._pollInstantNotifications){\r
102994 this._pollInterval=appCtxt.get(ZmSetting.POLLING_INTERVAL)*1000;\r
102995 if(this._pollInterval){\r
102996 if(e){\r
102997 this._kickPolling(true)\r
102998 }}else{\r
102999 if(this._pollActionId){\r
103000 AjxTimedAction.cancelAction(this._pollActionId);\r
103001 this._pollActionId=null\r
103002 }}\r
103003 return true\r
103004 }else{\r
103005 this._pollInterval=appCtxt.get(ZmSetting.INSTANT_NOTIFY_INTERVAL);\r
103006 return false\r
103007 }};\r
103008 ZmZimbraMail.prototype._cancelInstantNotify=function(){\r
103009 if(this._pollRequest){\r
103010 this._requestMgr.cancelRequest(this._pollRequest);\r
103011 this._pollRequest=null\r
103012 }\r
103013 if(this._pollActionId){\r
103014 AjxTimedAction.cancelAction(this._pollActionId);\r
103015 this._pollActionId=null\r
103016 }};\r
103017 ZmZimbraMail.prototype._kickPolling=function(a){\r
103018 DBG.println(AjxDebug.DBG2,["ZmZimbraMail._kickPolling ",this._pollInterval,", ",this._pollActionId,", ",this._pollRequest?"request_pending":"no_request_pending"].join(""));\r
103019 if(this._pollActionId){\r
103020 AjxTimedAction.cancelAction(this._pollActionId);\r
103021 this._pollActionId=null\r
103022 }\r
103023 if(a&&this._pollInstantNotifications){\r
103024 var e=appCtxt.get(ZmSetting.INSTANT_NOTIFY_INTERVAL);\r
103025 if(this._pollInterval>e){\r
103026 this._pollInterval=e\r
103027 }}\r
103028 if(this._pollInterval&&!this._pollRequest){\r
103029 try{\r
103030 this._pollActionId=AjxTimedAction.scheduleAction(new AjxTimedAction(this,this._execPoll),this._pollInterval)\r
103031 }\r
103032 catch(t){\r
103033 this._pollActionId=null\r
103034 }}};\r
103035 ZmZimbraMail.prototype._execPoll=function(){\r
103036 this._cancelInstantNotify();\r
103037 var t=AjxSoapDoc.create("NoOpRequest","urn:zimbraMail");\r
103038 try{\r
103039 if(this._pollInstantNotifications){\r
103040 var o=t.getMethod();\r
103041 o.setAttribute("wait",1);\r
103042 o.setAttribute("limitToOneBlocked",1)\r
103043 }\r
103044 var a={\r
103045 soapDoc:t,asyncMode:true,callback:new AjxCallback(this,this._handleResponseDoPoll),errorCallback:new AjxCallback(this,this._handleErrorDoPoll),noBusyOverlay:true,timeout:appCtxt.get(ZmSetting.INSTANT_NOTIFY_TIMEOUT),accountName:appCtxt.isOffline&&appCtxt.accountList.mainAccount.name};\r
103046 this._pollRequest=this.sendRequest(a)\r
103047 }\r
103048 catch(e){\r
103049 this._handleErrorDoPoll(e)\r
103050 }};\r
103051 ZmZimbraMail.prototype._handleErrorDoPoll=function(t){\r
103052 if(this._pollRequest){\r
103053 if(this._pollActionId){\r
103054 AjxTimedAction.cancelAction(this._pollActionId);\r
103055 this._pollActionId=null\r
103056 }\r
103057 this._requestMgr.cancelRequest(this._pollRequest);\r
103058 this._pollRequest=null\r
103059 }\r
103060 if(this._pollInstantNotifications){\r
103061 this._pollInterval*=2;\r
103062 if(this._pollInterval>(1000*60*2)){\r
103063 this._pollInterval=1000*60*2\r
103064 }}\r
103065 var e=(t.code==ZmCsfeException.SVC_AUTH_EXPIRED||t.code==ZmCsfeException.SVC_AUTH_REQUIRED||t.code==ZmCsfeException.NO_AUTH_TOKEN);\r
103066 if(!e){\r
103067 this._kickPolling(false)\r
103068 }\r
103069 return !e\r
103070 };\r
103071 ZmZimbraMail.prototype._handleResponseDoPoll=function(e){\r
103072 this._pollRequest=null;\r
103073 var t=e.getResponse().NoOpResponse;\r
103074 if(t.waitDisallowed){\r
103075 this.setInstantNotify(false)\r
103076 }else{\r
103077 this._kickPolling(true)\r
103078 }};\r
103079 ZmZimbraMail.prototype.getKeyMapMgr=function(){\r
103080 var e=appCtxt.getKeyboardMgr();\r
103081 if(!e.__keyMapMgr){\r
103082 this._initKeyboardHandling()\r
103083 }\r
103084 return e.__keyMapMgr\r
103085 };\r
103086 ZmZimbraMail.prototype._initKeyboardHandling=function(){\r
103087 var e=appCtxt.getKeyboardMgr();\r
103088 if(e.__keyMapMgr){\r
103089 return\r
103090 }\r
103091 if(appCtxt.get(ZmSetting.USE_KEYBOARD_SHORTCUTS)){\r
103092 e.enable(true);\r
103093 e.registerKeyMap(new ZmKeyMap());\r
103094 e.pushDefaultHandler(this)\r
103095 }else{\r
103096 e.enable(false)\r
103097 }};\r
103098 ZmZimbraMail.prototype._setupTabGroups=function(){\r
103099 var t=appCtxt.getRootTabGroup();\r
103100 if(appCtxt.get(ZmSetting.SEARCH_ENABLED)){\r
103101 t.addMember(appCtxt.getSearchController().getTabGroup())\r
103102 }\r
103103 this._components[ZmAppViewMgr.C_APP_CHOOSER].noFocus=true;\r
103104 var e=appCtxt.getCurrentApp();\r
103105 var o=e&&e.getOverviewId();\r
103106 var a=o&&appCtxt.getOverviewController().getOverview(o);\r
103107 if(a){\r
103108 t.addMember(a);\r
103109 ZmController._currentOverview=a\r
103110 }\r
103111 appCtxt.getKeyboardMgr().setTabGroup(t)\r
103112 };\r
103113 ZmZimbraMail.prototype._registerOrganizers=function(){\r
103114 ZmOrganizer.registerOrg(ZmOrganizer.FOLDER,{\r
103115 app:ZmApp.MAIL,nameKey:"folder",defaultFolder:ZmOrganizer.ID_INBOX,soapCmd:"FolderAction",firstUserId:256,orgClass:"ZmFolder",orgPackage:"MailCore",treeController:"ZmMailFolderTreeController",labelKey:"folders",itemsKey:"messages",hasColor:true,defaultColor:ZmOrganizer.C_NONE,treeType:ZmOrganizer.FOLDER,dropTargets:[ZmOrganizer.FOLDER],views:["message","conversation"],folderKey:"mailFolder",mountKey:"mountFolder",createFunc:"ZmOrganizer.create",compareFunc:"ZmFolder.sortCompare",newOp:ZmOperation.NEW_FOLDER,displayOrder:100,openSetting:ZmSetting.FOLDER_TREE_OPEN}\r
103116 );\r
103117 ZmOrganizer.registerOrg(ZmOrganizer.SEARCH,{\r
103118 app:ZmApp.MAIN,nameKey:"savedSearch",precondition:ZmSetting.SAVED_SEARCHES_ENABLED,soapCmd:"FolderAction",firstUserId:256,orgClass:"ZmSearchFolder",treeController:"ZmSearchTreeController",labelKey:"searches",treeType:ZmOrganizer.FOLDER,dropTargets:[ZmOrganizer.FOLDER,ZmOrganizer.SEARCH],createFunc:"ZmSearchFolder.create",compareFunc:"ZmFolder.sortCompare",openSetting:ZmSetting.SEARCH_TREE_OPEN,displayOrder:300}\r
103119 );\r
103120 ZmOrganizer.registerOrg(ZmOrganizer.TAG,{\r
103121 app:ZmApp.MAIN,nameKey:"tag",precondition:ZmSetting.TAGGING_ENABLED,soapCmd:"TagAction",firstUserId:64,orgClass:"ZmTag",treeController:"ZmTagTreeController",hasColor:true,defaultColor:ZmOrganizer.C_ORANGE,labelKey:"tags",treeType:ZmOrganizer.TAG,createFunc:"ZmTag.create",compareFunc:"ZmTag.sortCompare",newOp:ZmOperation.NEW_TAG,openSetting:ZmSetting.TAG_TREE_OPEN,displayOrder:400}\r
103122 );\r
103123 ZmOrganizer.registerOrg(ZmOrganizer.ZIMLET,{\r
103124 orgClass:"ZmZimlet",treeController:"ZmZimletTreeController",labelKey:"zimlets",compareFunc:"ZmZimlet.sortCompare",openSetting:ZmSetting.ZIMLET_TREE_OPEN,hideEmpty:true}\r
103125 );\r
103126 this._name=ZmApp.MAIN;\r
103127 ZmApp.prototype._setupDropTargets.call(this)\r
103128 };\r
103129 ZmZimbraMail.prototype.getApp=function(e){\r
103130 if(!ZmApp.ENABLED_APPS[e]){\r
103131 return null\r
103132 }\r
103133 if(!this._apps[e]){\r
103134 this._createApp(e)\r
103135 }\r
103136 return this._apps[e]\r
103137 };\r
103138 ZmZimbraMail.prototype.getAppViewMgr=function(){\r
103139 return this._appViewMgr\r
103140 };\r
103141 ZmZimbraMail.prototype.getActiveApp=function(){\r
103142 return this._activeApp\r
103143 };\r
103144 ZmZimbraMail.prototype.getPreviousApp=function(){\r
103145 return this._previousApp\r
103146 };\r
103147 ZmZimbraMail.prototype.activateApp=function(n,t,h,o,a){\r
103148 var s=this._appViewMgr.getAppView(n);\r
103149 if(s&&!t){\r
103150 if(this._appViewMgr.pushView(s)){\r
103151 this._appViewMgr.setAppView(n,s);\r
103152 if(!appCtxt.get(ZmApp.SETTING[n])&&appCtxt.get(ZmApp.UPSELL_SETTING[n])){\r
103153 var r=[ZmMsg.zimbraTitle,n].join(": ");\r
103154 Dwt.setTitle(r)\r
103155 }}\r
103156 if(h){\r
103157 h.run()\r
103158 }}else{\r
103159 if(!this._apps[n]){\r
103160 this._createApp(n)\r
103161 }\r
103162 if(!appCtxt.get(ZmApp.SETTING[n])&&appCtxt.get(ZmApp.UPSELL_SETTING[n])){\r
103163 this._createUpsellView(n)\r
103164 }else{\r
103165 var l=new AjxCallback(this,this._handleResponseActivateApp,[h,n]);\r
103166 var e=[n,ZmAppEvent.PRE_LAUNCH].join("_");\r
103167 this._evt.item=this._apps[n];\r
103168 this._evtMgr.notifyListeners(e,this._evt);\r
103169 a=a||{};\r
103170 a.searchResponse=this._searchResponse;\r
103171 this._apps[n].launch(a,l);\r
103172 delete this.searchResponse\r
103173 }}};\r
103174 ZmZimbraMail.prototype._handleResponseActivateApp=function(a,e){\r
103175 if(a){\r
103176 a.run()\r
103177 }\r
103178 if(ZmApp.DEFAULT_SEARCH[e]){\r
103179 appCtxt.getSearchController().setDefaultSearchType(ZmApp.DEFAULT_SEARCH[e])\r
103180 }\r
103181 var t=[e,ZmAppEvent.POST_LAUNCH].join("_");\r
103182 this._evt.item=this._apps[e];\r
103183 this._evtMgr.notifyListeners(t,this._evt)\r
103184 };\r
103185 ZmZimbraMail.prototype.setActiveApp=function(o,s,r){\r
103186 if(!r){\r
103187 this._components[ZmAppViewMgr.C_APP_CHOOSER].setSelected(o)\r
103188 }\r
103189 var t=!ZmApp.SETTING[o]||appCtxt.get(ZmApp.SETTING[o]);\r
103190 this._activeTabId=null;\r
103191 if(this._activeApp!=o){\r
103192 if(this._activeApp){\r
103193 var e=this._apps[this._activeApp];\r
103194 if(e){\r
103195 e.activate(false,s)\r
103196 }\r
103197 this._previousApp=this._activeApp\r
103198 }\r
103199 this._activeApp=o;\r
103200 if(t){\r
103201 var e=this._apps[this._activeApp];\r
103202 if(appCtxt.get(ZmSetting.SEARCH_ENABLED)){\r
103203 var n=e?e.getInitialSearchType():null;\r
103204 if(!n){\r
103205 n=ZmApp.DEFAULT_SEARCH[o]\r
103206 }\r
103207 if(n){\r
103208 appCtxt.getSearchController().setDefaultSearchType(n)\r
103209 }\r
103210 var a=appCtxt.getSearchController().getSearchToolbar();\r
103211 if(appCtxt.get(ZmSetting.SHOW_SEARCH_STRING)&&a){\r
103212 var h=e.currentSearch?e.currentSearch.query:e.currentQuery;\r
103213 a.setSearchFieldValue(h||"")\r
103214 }}\r
103215 if(e){\r
103216 if(appCtxt.inStartup&&this._doingPostRenderStartup){\r
103217 var l=new AjxCallback(this,function(){\r
103218 e.activate(true)\r
103219 }\r
103220 );\r
103221 this.addPostRenderCallback(l,1,100,true)\r
103222 }else{\r
103223 e.activate(true)\r
103224 }}}\r
103225 this._evt.item=this._apps[o];\r
103226 this._evtMgr.notifyListeners(ZmAppEvent.ACTIVATE,this._evt)\r
103227 }};\r
103228 ZmZimbraMail.prototype.getAppChooserButton=function(e){\r
103229 return this._components[ZmAppViewMgr.C_APP_CHOOSER].getButton(e)\r
103230 };\r
103231 ZmZimbraMail.prototype.appRendered=function(e){\r
103232 var t=[e,ZmAppEvent.POST_RENDER].join("_");\r
103233 this._evtMgr.notifyListeners(t,this._evt);\r
103234 if(window._facadeCleanup){\r
103235 window._facadeCleanup();\r
103236 window._facadeCleanup=null\r
103237 }};\r
103238 ZmZimbraMail.prototype.addApp=function(t){\r
103239 var e=t.getName();\r
103240 this._apps[e]=t;\r
103241 ZmApp.ENABLED_APPS[e]=true\r
103242 };\r
103243 ZmZimbraMail.prototype._createApp=function(appName){\r
103244 if(!appName||this._apps[appName]){\r
103245 return\r
103246 }\r
103247 var appClass=eval(ZmApp.CLASS[appName]);\r
103248 this.addApp(new appClass(this._shell))\r
103249 };\r
103250 ZmZimbraMail.prototype._setExternalLinks=function(){\r
103251 var e=document.getElementById("skin_container_links");\r
103252 if(e){\r
103253 var a;\r
103254 if(!appCtxt.isOffline&&(appCtxt.get(ZmSetting.IS_ADMIN)||appCtxt.get(ZmSetting.IS_DELEGATED_ADMIN))){\r
103255 a=appCtxt.get(ZmSetting.ADMIN_REFERENCE);\r
103256 if(!a){\r
103257 a=["https://",location.hostname,":7071"].join("")\r
103258 }}\r
103259 var t={\r
103260 showOfflineLink:(!appCtxt.isOffline&&appCtxt.get(ZmSetting.SHOW_OFFLINE_LINK)),helpIcon:(appCtxt.getSkinHint("helpButton","hideIcon")?null:"Help"),logoutIcon:(appCtxt.getSkinHint("logoutButton","hideIcon")?null:"Logoff"),logoutText:(appCtxt.isOffline?ZmMsg.setup:ZmMsg.logOff),adminUrl:a};\r
103261 e.innerHTML=AjxTemplate.expand("share.App#UserInfo",t)\r
103262 }};\r
103263 ZmZimbraMail.prototype.setUserInfo=function(){\r
103264 if(appCtxt.multiAccounts||appCtxt.isOffline){\r
103265 return\r
103266 }\r
103267 var e=appCtxt.get(ZmSetting.USERNAME);\r
103268 var s=(appCtxt.get(ZmSetting.DISPLAY_NAME))||e;\r
103269 if(s){\r
103270 this._userNameField.getHtmlElement().innerHTML=AjxStringUtil.clipByLength(s,24);\r
103271 if(AjxEnv.isLinux){\r
103272 this._userNameField.getHtmlElement().style.lineHeight="13px"\r
103273 }}\r
103274 var n=(appCtxt.get(ZmSetting.QUOTA_USED))||0;\r
103275 var o={\r
103276 id:this._usedQuotaField._htmlElId,login:e,username:s,quota:appCtxt.get(ZmSetting.QUOTA),usedQuota:n,size:(AjxUtil.formatSize(n,false,1))};\r
103277 var a;\r
103278 if(o.quota){\r
103279 a="UsedLimited";\r
103280 o.limit=AjxUtil.formatSize(o.quota,false,1);\r
103281 o.percent=Math.min(Math.round((o.usedQuota/o.quota)*100),100);\r
103282 o.desc=AjxMessageFormat.format(ZmMsg.quotaDescLimited,[o.percent+"%",o.limit])\r
103283 }else{\r
103284 o.desc=AjxMessageFormat.format(ZmMsg.quotaDescUnlimited,[o.size]);\r
103285 a="UsedUnlimited"\r
103286 }\r
103287 this._usedQuotaField.getHtmlElement().innerHTML=AjxTemplate.expand("share.Quota#"+a,o);\r
103288 var t=(s!=e||o.quota>0)?AjxTemplate.expand("share.Quota#Tooltip",o):null;\r
103289 this._components[ZmAppViewMgr.C_USER_INFO].setToolTipContent(t);\r
103290 this._components[ZmAppViewMgr.C_QUOTA_INFO].setToolTipContent(t)\r
103291 };\r
103292 ZmZimbraMail.prototype._resetUserInfo=function(){\r
103293 var a=document.getElementById("skin_container_username");\r
103294 if(a){\r
103295 Dwt.setDisplay(a,Dwt.DISPLAY_NONE)\r
103296 }\r
103297 var o=document.getElementById("skin_container_quota");\r
103298 if(o){\r
103299 Dwt.setDisplay(o,Dwt.DISPLAY_NONE)\r
103300 }\r
103301 var e=document.getElementById("skin_container_account");\r
103302 if(e){\r
103303 e.innerHTML=ZmMsg.accounts;\r
103304 Dwt.setDisplay(e,Dwt.DISPLAY_BLOCK)\r
103305 }\r
103306 var t=document.getElementById("skin_container_tree_top");\r
103307 if(t){\r
103308 t.className="OfflineTreeTop"\r
103309 }\r
103310 this._appViewMgr._fitToContainer([ZmAppViewMgr.C_TREE,ZmAppViewMgr.C_TREE_FOOTER])\r
103311 };\r
103312 ZmZimbraMail.logOff=function(){\r
103313 ZmZimbraMail._isLogOff=true;\r
103314 if(appCtxt.isOffline&&AjxEnv.isWindows&&appCtxt.get(ZmSetting.OFFLINE_SUPPORTS_DOCK_UPDATE)){\r
103315 window.platform.icon().imageSpec="resource://webapp/icons/default/launcher.ico";\r
103316 window.platform.icon().title=null\r
103317 }\r
103318 var e=AjxUtil.formatUrl({\r
103319 path:appContextPath,qsArgs:{\r
103320 loginOp:"logout"}}\r
103321 );\r
103322 ZmZimbraMail.sendRedirect(e)\r
103323 };\r
103324 ZmZimbraMail._onClickLogOff=function(){\r
103325 if(AjxEnv.isIE){\r
103326 var e=DwtUiEvent.getEvent();\r
103327 e.returnValue=false\r
103328 }\r
103329 ZmZimbraMail.logOff()\r
103330 };\r
103331 ZmZimbraMail.helpLinkCallback=function(){\r
103332 ZmZimbraMail.unloadHackCallback();\r
103333 var o=window.parentAppCtxt||window.appCtxt;\r
103334 var a;\r
103335 if(!o.isOffline){\r
103336 try{\r
103337 a=skin.hints.helpButton.url\r
103338 }\r
103339 catch(n){}\r
103340 a=a||o.get(ZmSetting.HELP_URI);\r
103341 var t=a.match(/\?/)?"&":"?";\r
103342 a=[a,t,"locid=",AjxEnv.DEFAULT_LOCALE].join("")\r
103343 }else{\r
103344 a=o.get(ZmSetting.HELP_URI).replace(/\/$/,"");\r
103345 a=[a,"help","en_US","Zimbra_Mail_Help.htm"].join("/")\r
103346 }\r
103347 window.open(a)\r
103348 };\r
103349 ZmZimbraMail.sendRedirect=function(t){\r
103350 if(AjxEnv.isIE){\r
103351 var e=new AjxTimedAction(null,ZmZimbraMail.redir,[t]);\r
103352 AjxTimedAction.scheduleAction(e,1)\r
103353 }else{\r
103354 ZmZimbraMail.redir(t)\r
103355 }};\r
103356 ZmZimbraMail.redir=function(e){\r
103357 window.location=e\r
103358 };\r
103359 ZmZimbraMail.prototype.setSessionTimer=function(t){\r
103360 var e=appCtxt.get(ZmSetting.IDLE_SESSION_TIMEOUT)*1000;\r
103361 if(e<=0){\r
103362 return\r
103363 }\r
103364 if(t){\r
103365 this._sessionTimerId=AjxTimedAction.scheduleAction(this._sessionTimer,e);\r
103366 DwtEventManager.addListener(DwtEvent.ONMOUSEUP,ZmZimbraMail._userEventHdlr);\r
103367 this._shell.setHandler(DwtEvent.ONMOUSEUP,ZmZimbraMail._userEventHdlr);\r
103368 if(AjxEnv.isIE){\r
103369 this._shell.setHandler(DwtEvent.ONMOUSEDOWN,ZmZimbraMail._userEventHdlr)\r
103370 }else{\r
103371 window.onkeydown=ZmZimbraMail._userEventHdlr\r
103372 }}else{\r
103373 AjxTimedAction.cancelAction(this._sessionTimerId);\r
103374 this._sessionTimerId=-1;\r
103375 DwtEventManager.removeListener(DwtEvent.ONMOUSEUP,ZmZimbraMail._userEventHdlr);\r
103376 this._shell.clearHandler(DwtEvent.ONMOUSEUP);\r
103377 if(AjxEnv.isIE){\r
103378 this._shell.clearHandler(DwtEvent.ONMOUSEDOWN)\r
103379 }else{\r
103380 window.onkeydown=null\r
103381 }}};\r
103382 ZmZimbraMail.prototype.addChildWindow=function(t){\r
103383 if(this._childWinList==null){\r
103384 this._childWinList=new AjxVector()\r
103385 }\r
103386 var e={\r
103387 win:t};\r
103388 this._childWinList.add(e);\r
103389 return e\r
103390 };\r
103391 ZmZimbraMail.prototype.getChildWindow=function(t){\r
103392 if(this._childWinList){\r
103393 for(var e=0;\r
103394 e<this._childWinList.size();\r
103395 e++){\r
103396 if(t==this._childWinList.get(e).win){\r
103397 return this._childWinList.get(e)\r
103398 }}}\r
103399 return null\r
103400 };\r
103401 ZmZimbraMail.prototype.removeChildWindow=function(t){\r
103402 if(this._childWinList){\r
103403 for(var e=0;\r
103404 e<this._childWinList.size();\r
103405 e++){\r
103406 if(t==this._childWinList.get(e).win){\r
103407 this._childWinList.removeAt(e);\r
103408 break\r
103409 }}}};\r
103410 ZmZimbraMail.prototype._handleException=function(r,t){\r
103411 var o=false;\r
103412 if(r.code==ZmCsfeException.MAIL_NO_SUCH_FOLDER){\r
103413 var e=[ZmOrganizer.CALENDAR,ZmOrganizer.NOTEBOOK,ZmOrganizer.ADDRBOOK];\r
103414 if(r.data.itemId&&r.data.itemId.length){\r
103415 var l=r.data.itemId[0];\r
103416 var n=l.lastIndexOf(":");\r
103417 var s=l.substring(0,n);\r
103418 var c=l.substring(n+1,l.length);\r
103419 var a=appCtxt.getFolderTree();\r
103420 for(var h=0;\r
103421 h<e.length;\r
103422 h++){\r
103423 o|=a.handleNoSuchFolderError(e[h],s,c,true)\r
103424 }}}\r
103425 if(!o){\r
103426 ZmController.prototype._handleException.apply(this,arguments)\r
103427 }};\r
103428 ZmZimbraMail._confirmExitMethod=function(){\r
103429 appCtxt.accountList.saveImplicitPrefs();\r
103430 if(!ZmZimbraMail._isOkToExit()){\r
103431 ZmZimbraMail._isLogOff=false;\r
103432 return ZmMsg.appExitWarning\r
103433 }\r
103434 ZmZimbraMail._endSession();\r
103435 ZmZimbraMail._endSessionDone=true\r
103436 };\r
103437 ZmZimbraMail._isOkToExit=function(){\r
103438 var t=window._zimbraMail;\r
103439 if(!t){\r
103440 return true\r
103441 }\r
103442 var e=t._appViewMgr.isOkToUnload();\r
103443 if(e&&t._pollRequest){\r
103444 t._requestMgr.cancelRequest(t._pollRequest)\r
103445 }\r
103446 return e\r
103447 };\r
103448 ZmZimbraMail.unloadHackCallback=function(){\r
103449 window.onbeforeunload=null;\r
103450 var e=function(){\r
103451 window.onbeforeunload=ZmZimbraMail._confirmExitMethod\r
103452 };\r
103453 AjxTimedAction.scheduleAction((new AjxTimedAction(null,e)),3000)\r
103454 };\r
103455 ZmZimbraMail._userEventHdlr=function(t){\r
103456 var e=window._zimbraMail;\r
103457 if(e){\r
103458 AjxTimedAction.cancelAction(e._sessionTimerId);\r
103459 var a=appCtxt.get(ZmSetting.IDLE_SESSION_TIMEOUT)*1000;\r
103460 e._sessionTimerId=AjxTimedAction.scheduleAction(e._sessionTimer,a)\r
103461 }};\r
103462 ZmZimbraMail.prototype._createBanner=function(){\r
103463 var e=new DwtComposite({\r
103464 parent:this._shell,posStyle:Dwt.ABSOLUTE_STYLE,id:ZmId.BANNER}\r
103465 );\r
103466 var a=appCtxt.getSkinHint("banner","url")||appCtxt.get(ZmSetting.LOGO_URI);\r
103467 var t={\r
103468 url:a};\r
103469 e.getHtmlElement().innerHTML=AjxTemplate.expand("share.App#Banner",t);\r
103470 return e\r
103471 };\r
103472 ZmZimbraMail.prototype._createUserInfo=function(n,h,r){\r
103473 var e=appCtxt.getSkinHint(h,"position");\r
103474 var o=e||Dwt.ABSOLUTE_STYLE;\r
103475 var s=new DwtComposite({\r
103476 parent:this._shell,className:n,posStyle:o,id:r}\r
103477 );\r
103478 if(AjxEnv.isIE){\r
103479 var a=document.getElementById("skin_td_tree");\r
103480 var t=a?Dwt.getSize(document.getElementById("skin_td_tree")).x:null;\r
103481 if(t){\r
103482 s.setSize(t)\r
103483 }}\r
103484 s._setMouseEventHdlrs();\r
103485 return s\r
103486 };\r
103487 ZmZimbraMail.prototype._createAppChooser=function(){\r
103488 var a=[];\r
103489 for(var s in ZmApp.CHOOSER_SORT){\r
103490 if(s==ZmAppChooser.SPACER||s==ZmAppChooser.B_HELP||s==ZmAppChooser.B_LOGOUT){\r
103491 continue\r
103492 }\r
103493 var t=ZmApp.SETTING[s];\r
103494 var n=ZmApp.UPSELL_SETTING[s];\r
103495 if((t&&appCtxt.get(t))||(n&&appCtxt.get(n))){\r
103496 a.push(s)\r
103497 }}\r
103498 a.sort(function(h,r){\r
103499 return ZmZimbraMail.hashSortCompare(ZmApp.CHOOSER_SORT,h,r)\r
103500 }\r
103501 );\r
103502 var o=new ZmAppChooser({\r
103503 parent:this._shell,buttons:a,id:ZmId.APP_CHOOSER,refElementId:ZmId.SKIN_APP_CHOOSER}\r
103504 );\r
103505 var e=new AjxListener(this,this._appButtonListener);\r
103506 o.addSelectionListener(e);\r
103507 return o\r
103508 };\r
103509 ZmZimbraMail.prototype._appButtonListener=function(t){\r
103510 try{\r
103511 var a=t.item.getData(Dwt.KEY_ID);\r
103512 if(a==ZmAppChooser.B_HELP){\r
103513 window.open(appCtxt.get(ZmSetting.HELP_URI))\r
103514 }else{\r
103515 if(a==ZmAppChooser.B_LOGOUT){\r
103516 ZmZimbraMail.logOff()\r
103517 }else{\r
103518 if(a&&ZmApp.ENABLED_APPS[a]&&(a!=this._activeTabId)){\r
103519 this.activateApp(a);\r
103520 if(appCtxt.zimletsPresent()){\r
103521 appCtxt.getZimletMgr().notifyZimlets("onSelectApp",a)\r
103522 }}else{\r
103523 if(a!=this._activeTabId){\r
103524 this._appViewMgr.pushView(a)\r
103525 }\r
103526 if(t.target&&(t.target.className=="ImgClose")){\r
103527 this._appViewMgr.popView()\r
103528 }}}}}\r
103529 catch(e){\r
103530 this._handleException(e)\r
103531 }};\r
103532 ZmZimbraMail.prototype.getAppChooser=function(){\r
103533 return this._appChooser\r
103534 };\r
103535 ZmZimbraMail.prototype.setActiveTabId=function(e){\r
103536 this._activeTabId=e;\r
103537 this._appChooser.setSelected(e)\r
103538 };\r
103539 ZmZimbraMail.prototype.setStatusMsg=function(e){\r
103540 e=Dwt.getParams(arguments,ZmStatusView.MSG_PARAMS);\r
103541 this.statusView.setStatusMsg(e)\r
103542 };\r
103543 ZmZimbraMail.prototype.getKeyMapName=function(){\r
103544 var e=appCtxt.getCurrentController();\r
103545 if(e&&e.getKeyMapName){\r
103546 return e.getKeyMapName()\r
103547 }\r
103548 return"Global"\r
103549 };\r
103550 ZmZimbraMail.prototype.handleKeyAction=function(o,x){\r
103551 DwtMenu.closeActiveMenu();\r
103552 var h=ZmApp.GOTO_ACTION_CODE_R[o];\r
103553 if(h){\r
103554 if(h==this.getActiveApp()){\r
103555 return false\r
103556 }\r
103557 this.activateApp(h);\r
103558 return true\r
103559 }\r
103560 if(x&&(x.keyCode==13||x.keyCode==3)&&!(x.altKey||x.ctrlKey||x.metaKey||x.shiftKey)&&x.target&&(x.target.id!=DwtKeyboardMgr.FOCUS_FIELD_ID)){\r
103561 return false\r
103562 }\r
103563 switch(o){\r
103564 case ZmKeyMap.DBG_NONE:appCtxt.setStatusMsg("Setting Debug Level To: "+AjxDebug.NONE);\r
103565 break;\r
103566 case ZmKeyMap.DBG_1:appCtxt.setStatusMsg("Setting Debug Level To: "+AjxDebug.DBG1);\r
103567 break;\r
103568 case ZmKeyMap.DBG_2:appCtxt.setStatusMsg("Setting Debug Level To: "+AjxDebug.DBG2);\r
103569 break;\r
103570 case ZmKeyMap.DBG_3:appCtxt.setStatusMsg("Setting Debug Level To: "+AjxDebug.DBG3);\r
103571 break;\r
103572 case ZmKeyMap.DBG_TIMING:var c=DBG._showTiming;\r
103573 var t=c?"off":"on";\r
103574 appCtxt.setStatusMsg("Turning Timing Info "+t);\r
103575 break;\r
103576 case ZmKeyMap.ASSISTANT:if(appCtxt.get(ZmSetting.ASSISTANT_ENABLED)){\r
103577 if(!this._assistantDialog){\r
103578 AjxDispatcher.require("Assistant");\r
103579 this._assistantDialog=new ZmAssistantDialog()\r
103580 }\r
103581 this._assistantDialog.popup()\r
103582 }\r
103583 break;\r
103584 case ZmKeyMap.LOGOFF:ZmZimbraMail.logOff();\r
103585 break;\r
103586 case ZmKeyMap.FOCUS_SEARCH_BOX:var e=appCtxt.getSearchController().getSearchToolbar();\r
103587 if(e){\r
103588 var s=e.getSearchField();\r
103589 appCtxt.getKeyboardMgr().grabFocus(s);\r
103590 if(ZmSearchAutocomplete){\r
103591 ZmSearchAutocomplete._ignoreNextKey=true\r
103592 }}\r
103593 break;\r
103594 case ZmKeyMap.FOCUS_CONTENT_PANE:this.focusContentPane();\r
103595 break;\r
103596 case ZmKeyMap.FOCUS_TOOLBAR:this.focusToolbar();\r
103597 break;\r
103598 case ZmKeyMap.SHORTCUTS:var m=appCtxt.getShortcutsPanel();\r
103599 var u=this.getKeyMapName();\r
103600 var a=appCtxt.getAppController().getKeyMapMgr();\r
103601 var p=a.getAncestors(u);\r
103602 var d=(p&&p.length>0);\r
103603 p.unshift(u);\r
103604 var b=[],y=[];\r
103605 if(d){\r
103606 if(p.length>1&&p[p.length-1]=="Global"){\r
103607 p.pop();\r
103608 y.push("global")\r
103609 }}\r
103610 for(var w=0;\r
103611 w<p.length;\r
103612 w++){\r
103613 b.push(ZmKeyMap.MAP_NAME_R[p[w]]||DwtKeyMap.MAP_NAME_R[p[w]])\r
103614 }\r
103615 var q={}\r
103616 ,k={};\r
103617 q.type=ZmShortcutList.TYPE_APP;\r
103618 q.maps=b;\r
103619 var l=[q];\r
103620 if(y.length){\r
103621 k.type=ZmShortcutList.TYPE_APP;\r
103622 k.maps=y;\r
103623 l.push(k)\r
103624 }\r
103625 var v={};\r
103626 v.type=ZmShortcutList.TYPE_SYS;\r
103627 v.maps=[];\r
103628 var n=appCtxt.getCurrentController();\r
103629 var j=["list","editor","tabView"];\r
103630 for(var w=0;\r
103631 w<j.length;\r
103632 w++){\r
103633 if(n.mapSupported(j[w])){\r
103634 v.maps.push(j[w])\r
103635 }}\r
103636 v.maps.push("button","menu","tree","dialog","toolbarHorizontal");\r
103637 l.push(v);\r
103638 m.popup(l);\r
103639 break;\r
103640 case ZmKeyMap.CANCEL:var r=false;\r
103641 var g=(DwtMouseEventCapture.getId()=="DwtControl")?DwtMouseEventCapture.getCaptureObj():null;\r
103642 var f=g&&g.targetObj;\r
103643 if(f&&(f._dragging==DwtControl._DRAGGING)){\r
103644 g.release();\r
103645 f.__lastDestDwtObj=null;\r
103646 f._setDragProxyState(false);\r
103647 DwtControl.__badDrop(f,DwtShell.mouseEvent);\r
103648 r=true\r
103649 }\r
103650 if(r){\r
103651 break\r
103652 }\r
103653 default:var n=appCtxt.getCurrentController();\r
103654 return(n&&n.handleKeyAction)?n.handleKeyAction(o,x):false\r
103655 }\r
103656 return true\r
103657 };\r
103658 ZmZimbraMail.prototype.focusContentPane=function(){\r
103659 var e=appCtxt.getCurrentController();\r
103660 var t=e?e.getCurrentView():null;\r
103661 if(t){\r
103662 appCtxt.getKeyboardMgr().grabFocus(t)\r
103663 }};\r
103664 ZmZimbraMail.prototype.focusToolbar=function(){\r
103665 var e=appCtxt.getCurrentController();\r
103666 var t=e?e.getCurrentToolbar():null;\r
103667 if(t){\r
103668 appCtxt.getKeyboardMgr().grabFocus(t)\r
103669 }};\r
103670 ZmZimbraMail.prototype._createUpsellView=function(n){\r
103671 var a=this._upsellView[n]=new ZmUpsellView({\r
103672 parent:this._shell,posStyle:Dwt.ABSOLUTE_STYLE,className:"ZmUpsellView"}\r
103673 );\r
103674 var o=appCtxt.get(ZmApp.UPSELL_URL[n]);\r
103675 var t=a.getHtmlElement();\r
103676 var l=[];\r
103677 var h=0;\r
103678 l[h++]="<iframe id='iframe_"+a.getHTMLElId()+"' width='100%' height='100%' frameborder='0' src='";\r
103679 l[h++]=o;\r
103680 l[h++]="'>";\r
103681 t.innerHTML=l.join("");\r
103682 var e={};\r
103683 e[ZmAppViewMgr.C_APP_CONTENT_FULL]=a;\r
103684 var r=[n,"upsell"].join("_");\r
103685 this._appViewMgr.createView({\r
103686 viewId:r,appName:n,elements:e,isTransient:true}\r
103687 );\r
103688 this._appViewMgr.pushView(r);\r
103689 var s=[ZmMsg.zimbraTitle,n].join(": ");\r
103690 Dwt.setTitle(s)\r
103691 };\r
103692 ZmZimbraMail._createDummyDBG=function(){\r
103693 window.AjxDebug=function(){};\r
103694 window.AjxDebug.prototype.toString=function(){\r
103695 return"dummy DBG class"\r
103696 };\r
103697 window.AjxDebug.prototype.display=function(){};\r
103698 window.AjxDebug.prototype.dumpObj=function(){};\r
103699 window.AjxDebug.prototype.getDebugLevel=function(){};\r
103700 window.AjxDebug.prototype.isDisabled=function(){};\r
103701 window.AjxDebug.prototype.println=function(){};\r
103702 window.AjxDebug.prototype.printRaw=function(){};\r
103703 window.AjxDebug.prototype.printXML=function(){};\r
103704 window.AjxDebug.prototype.setDebugLevel=function(){};\r
103705 window.AjxDebug.prototype.setTitle=function(){};\r
103706 window.AjxDebug.prototype.showTiming=function(){};\r
103707 window.AjxDebug.prototype._getTimeStamp=function(){};\r
103708 window.AjxDebug.prototype.timePt=function(){};\r
103709 window.DBG=new window.AjxDebug()\r
103710 };\r
103711 ZmZimbraMail.prototype._postLoadZimlet=function(){\r
103712 appCtxt.setZimletsPresent(true)\r
103713 };\r
103714 ZmZimbraMail.globalButtonListener=function(n){\r
103715 if(!appCtxt.areZimletsLoaded()){\r
103716 return\r
103717 }\r
103718 var o=n.item;\r
103719 var h=(o&&o.getText)?(o.getText()||o._toggleText):null;\r
103720 if(!h){\r
103721 h=o.getData(ZmOperation.KEY_ID)||o.getData(Dwt.KEY_ID)\r
103722 }\r
103723 if(h){\r
103724 var a;\r
103725 if(o instanceof ZmAppButton){\r
103726 a="app"\r
103727 }else{\r
103728 if(o instanceof DwtMenuItem){\r
103729 a="menuitem"\r
103730 }else{\r
103731 if(o instanceof DwtButton){\r
103732 a="button"\r
103733 }else{\r
103734 if(o instanceof DwtTreeItem){\r
103735 if(!o.getSelected()){\r
103736 return\r
103737 }\r
103738 a="treeitem"\r
103739 }else{\r
103740 a=o.toString()\r
103741 }}}}\r
103742 var t=appCtxt.getAppViewMgr();\r
103743 var e=t.getCurrentViewId();\r
103744 var r=t.getLastViewId();\r
103745 var s=(AjxStringUtil.split(h," ")).join("");\r
103746 appCtxt.notifyZimlets("onAction",[a,s,e,r])\r
103747 }};\r
103748 ZmZimbraMail._endSession=function(){\r
103749 var e=new AjxCallback(null,function(){\r
103750 return true\r
103751 }\r
103752 );\r
103753 var t={\r
103754 jsonObj:{\r
103755 EndSessionRequest:{\r
103756 _jsns:"urn:zimbraAccount"}}\r
103757 ,asyncMode:true,errorCallback:e};\r
103758 appCtxt.getAppController().sendRequest(t)\r
103759 };\r
103760 ZmOrganizer.ZIMLET="ZIMLET"\r
103761 }\r
103762 if(AjxPackage.define("zimbraMail.calendar.model.ZmCalBaseItem")){\r
103763 ZmCalBaseItem=function(t,a,o,e){\r
103764 if(arguments.length==0){\r
103765 return\r
103766 }\r
103767 ZmItem.call(this,t,o,a);\r
103768 this.id=o||-1;\r
103769 this.uid=-1;\r
103770 this.folderId=e||this._getDefaultFolderId();\r
103771 this.fragment="";\r
103772 this.name="";\r
103773 this.allDayEvent="0";\r
103774 this.startDate=null;\r
103775 this.endDate=null;\r
103776 this.timezone=AjxTimezone.getServerId(AjxTimezone.DEFAULT);\r
103777 this.alarm=false;\r
103778 this.alarmData=null;\r
103779 this.isException=false;\r
103780 this.recurring=false;\r
103781 this.priority=null;\r
103782 this.ptst=null;\r
103783 this.status=ZmCalendarApp.STATUS_CONF;\r
103784 this._reminderMinutes=0;\r
103785 this.otherAttendees=false\r
103786 };\r
103787 ZmCalBaseItem.prototype=new ZmItem;\r
103788 ZmCalBaseItem.prototype.constructor=ZmCalBaseItem;\r
103789 ZmCalBaseItem.prototype.toString=function(){\r
103790 return"ZmCalBaseItem"\r
103791 };\r
103792 ZmCalBaseItem.PERSON="PERSON";\r
103793 ZmCalBaseItem.LOCATION="LOCATION";\r
103794 ZmCalBaseItem.EQUIPMENT="EQUIPMENT";\r
103795 ZmCalBaseItem.FORWARD="FORWARD";\r
103796 ZmCalBaseItem.PSTATUS_ACCEPT="AC";\r
103797 ZmCalBaseItem.PSTATUS_DECLINED="DE";\r
103798 ZmCalBaseItem.PSTATUS_DEFERRED="DF";\r
103799 ZmCalBaseItem.PSTATUS_DELEGATED="DG";\r
103800 ZmCalBaseItem.PSTATUS_NEEDS_ACTION="NE";\r
103801 ZmCalBaseItem.PSTATUS_COMPLETED="CO";\r
103802 ZmCalBaseItem.PSTATUS_TENTATIVE="TE";\r
103803 ZmCalBaseItem.PSTATUS_WAITING="WA";\r
103804 ZmCalBaseItem.FBA_TO_PTST={\r
103805 B:ZmCalBaseItem.PSTATUS_ACCEPT,F:ZmCalBaseItem.PSTATUS_DECLINED,T:ZmCalBaseItem.PSTATUS_TENTATIVE};\r
103806 ZmCalBaseItem._pstatusString={\r
103807 NE:ZmMsg._new,TE:ZmMsg.tentative,AC:ZmMsg.accepted,DE:ZmMsg.declined,DG:ZmMsg.delegated};\r
103808 ZmCalBaseItem.compareByTimeAndDuration=function(t,e){\r
103809 if(t.getStartTime()>e.getStartTime()){\r
103810 return 1\r
103811 }\r
103812 if(t.getStartTime()<e.getStartTime()){\r
103813 return -1\r
103814 }\r
103815 if(t.getDuration()<e.getDuration()){\r
103816 return 1\r
103817 }\r
103818 if(t.getDuration()>e.getDuration()){\r
103819 return -1\r
103820 }\r
103821 return 0\r
103822 };\r
103823 ZmCalBaseItem.createFromDom=function(t,a,e){\r
103824 var o=new ZmCalBaseItem(ZmItem.APPT,a.list);\r
103825 o._loadFromDom(t,(e||{}\r
103826 ));\r
103827 return o\r
103828 };\r
103829 ZmCalBaseItem.prototype.getName=function(){\r
103830 return this.name||""\r
103831 };\r
103832 ZmCalBaseItem.prototype.getEndTime=function(){\r
103833 return this.endDate.getTime()\r
103834 };\r
103835 ZmCalBaseItem.prototype.getStartTime=function(){\r
103836 return this.startDate.getTime()\r
103837 };\r
103838 ZmCalBaseItem.prototype.getDuration=function(){\r
103839 return this.getEndTime()-this.getStartTime()\r
103840 };\r
103841 ZmCalBaseItem.prototype.getLocation=function(){\r
103842 return this.location||""\r
103843 };\r
103844 ZmCalBaseItem.prototype.isAllDayEvent=function(){\r
103845 return this.allDayEvent=="1"\r
103846 };\r
103847 ZmCalBaseItem.prototype.getParticipantStatusStr=function(){\r
103848 return ZmCalBaseItem._pstatusString[this.ptst]\r
103849 };\r
103850 ZmCalBaseItem.prototype.getUniqueId=function(e){\r
103851 if(e){\r
103852 if(!this._startTimeUniqId){\r
103853 this._startTimeUniqId=this.id+"_"+this.getStartTime()\r
103854 }\r
103855 return this._startTimeUniqId\r
103856 }else{\r
103857 if(this._uniqId==null){\r
103858 this._uniqId=Dwt.getNextId()\r
103859 }\r
103860 return(this.id+"_"+this._uniqId)\r
103861 }};\r
103862 ZmCalBaseItem.prototype.isMultiDay=function(){\r
103863 var t=this.startDate;\r
103864 var e=this.endDate;\r
103865 if(e.getHours()==0&&e.getMinutes()==0&&e.getSeconds()==0){\r
103866 e=new Date(e.getTime()-2*AjxDateUtil.MSEC_PER_HOUR)\r
103867 }\r
103868 return(t.getDate()!=e.getDate())||(t.getMonth()!=e.getMonth())||(t.getFullYear()!=e.getFullYear())\r
103869 };\r
103870 ZmCalBaseItem.prototype.getDurationText=function(a,e){\r
103871 var o=this.isAllDayEvent();\r
103872 var s=this.isMultiDay();\r
103873 if(o){\r
103874 if(a){\r
103875 return""\r
103876 }\r
103877 var r=this.startDate;\r
103878 var t=new Date(this.endDate.getTime()-(s?2*AjxDateUtil.MSEC_PER_HOUR:0));\r
103879 var n=s?ZmMsg.apptTimeAllDayMulti:ZmMsg.apptTimeAllDay;\r
103880 return AjxMessageFormat.format(n,[r,t])\r
103881 }\r
103882 if(e){\r
103883 return ZmCalBaseItem._getTTHour(this.startDate)\r
103884 }\r
103885 var n=s?ZmMsg.apptTimeInstanceMulti:ZmMsg.apptTimeInstance;\r
103886 return AjxMessageFormat.format(n,[this.startDate,this.endDate,""])\r
103887 };\r
103888 ZmCalBaseItem.prototype.isAlarmInRange=function(){\r
103889 if(!this.alarmData){\r
103890 return false\r
103891 }\r
103892 var t=this.alarmData[0];\r
103893 if(!t){\r
103894 return false\r
103895 }\r
103896 this._nextAlarmTime=this.adjustMS(t.nextAlarm,this.tzo);\r
103897 this._alarmInstStart=this.adjustMS(t.alarmInstStart,this.tzo);\r
103898 var e=(new Date()).getTime();\r
103899 return(e>=this._nextAlarmTime)\r
103900 };\r
103901 ZmCalBaseItem.prototype.adjustMS=function(e,a){\r
103902 var t=this.isAllDayEvent()?(a+new Date(e).getTimezoneOffset()*60*1000):0;\r
103903 return parseInt(e,10)+t\r
103904 };\r
103905 ZmCalBaseItem.prototype.isAlarmInstance=function(){\r
103906 if(!this.alarmData){\r
103907 return false\r
103908 }\r
103909 var e=this.alarmData[0];\r
103910 this._alarmInstStart=this.adjustMS(e.alarmInstStart,this.tzo);\r
103911 return(this._alarmInstStart==this.startDate.getTime())\r
103912 };\r
103913 ZmCalBaseItem.prototype.hasAlarmData=function(){\r
103914 return(this.alarmData!=null)\r
103915 };\r
103916 ZmCalBaseItem.prototype._loadFromDom=function(a,e){\r
103917 this.uid=a.uid;\r
103918 this.folderId=a.l||this._getDefaultFolderId();\r
103919 this.invId=a.invId;\r
103920 this.id=this._getAttr(a,e,"id");\r
103921 this.name=this._getAttr(a,e,"name");\r
103922 this.fragment=this._getAttr(a,e,"fr");\r
103923 this.status=this._getAttr(a,e,"status");\r
103924 this.ptst=this._getAttr(a,e,"ptst");\r
103925 this.isException=this._getAttr(a,e,"ex");\r
103926 this.allDayEvent=(e.allDay||a.allDay)?"1":"0";\r
103927 this.organizer=a.or&&a.or.a;\r
103928 this.isOrg=this._getAttr(a,e,"isOrg");\r
103929 this.transparency=this._getAttr(a,e,"transp");\r
103930 if(e.allDay==false){\r
103931 this.allDayEvent="0"\r
103932 }\r
103933 this.alarm=this._getAttr(a,e,"alarm");\r
103934 this.alarmData=this._getAttr(a,e,"alarmData");\r
103935 this.priority=parseInt(this._getAttr(a,e,"priority"));\r
103936 this.recurring=e.recur!=null?e.recur:a.recur;\r
103937 this.fba=this._getAttr(a,e,"fba");\r
103938 var r=this._getAttr(a,e,"s");\r
103939 if(r){\r
103940 var h=this.tzo=e.tzo!=null?e.tzo:a.tzo;\r
103941 var s=this.isAllDayEvent()?(h+new Date(e.s).getTimezoneOffset()*60*1000):0;\r
103942 var n=parseInt(r,10)+s;\r
103943 this.startDate=new Date(n);\r
103944 this.uniqStartTime=this.startDate.getTime()\r
103945 }\r
103946 var o=this._getAttr(a,e,"dur");\r
103947 if(o){\r
103948 var t=n+(parseInt(o));\r
103949 this.endDate=new Date(t)\r
103950 }\r
103951 this.otherAttendees=this._getAttr(a,e,"otherAtt");\r
103952 this.location=this._getAttr(a,e,"loc")\r
103953 };\r
103954 ZmCalBaseItem.prototype._getDefaultFolderId=function(){\r
103955 return ZmOrganizer.ID_CALENDAR\r
103956 };\r
103957 ZmCalBaseItem.prototype._getAttr=function(e,a,t){\r
103958 return a[t]!=null?a[t]:e[t]\r
103959 };\r
103960 ZmCalBaseItem.prototype._addLocationToSoap=function(e){\r
103961 e.setAttribute("loc",this.getLocation())\r
103962 };\r
103963 ZmCalBaseItem._getTTHour=function(t){\r
103964 var e=AjxDateFormat.getTimeInstance(AjxDateFormat.SHORT);\r
103965 return e.format(t)\r
103966 };\r
103967 ZmCalBaseItem.prototype.getReminderLocation=function(){\r
103968 return(this.alarmData[0].loc||"")\r
103969 };\r
103970 ZmCalBaseItem.prototype.getReminderName=function(){\r
103971 return(this.alarmData[0].name||"")\r
103972 };\r
103973 ZmCalBaseItem.prototype.isAlarmOld=function(){\r
103974 if(!this.alarmData){\r
103975 return false\r
103976 }\r
103977 var a=this.alarmData[0];\r
103978 this._nextAlarmTime=a.nextAlarm;\r
103979 this._alarmInstStart=a.alarmInstStart;\r
103980 var e=(new Date()).getTime();\r
103981 var t=(e-this._nextAlarmTime);\r
103982 if(t>2*AjxDateUtil.MSEC_PER_DAY){\r
103983 return true\r
103984 }\r
103985 return false\r
103986 }\r
103987 }\r
103988 if(AjxPackage.define("zimbraMail.prefs.ZmPreferencesApp")){\r
103989 ZmPreferencesApp=function(t,e){\r
103990 ZmApp.call(this,ZmApp.PREFERENCES,t,e);\r
103991 this._filterRules={}\r
103992 };\r
103993 ZmEvent.S_FILTER="FILTER";\r
103994 ZmEvent.S_PREF_ZIMLET="PREF_ZIMLET";\r
103995 ZmApp.PREFERENCES=ZmId.APP_PREFERENCES;\r
103996 ZmApp.CLASS[ZmApp.PREFERENCES]="ZmPreferencesApp";\r
103997 ZmApp.SETTING[ZmApp.PREFERENCES]=ZmSetting.OPTIONS_ENABLED;\r
103998 ZmApp.LOAD_SORT[ZmApp.PREFERENCES]=10;\r
103999 ZmApp.QS_ARG[ZmApp.PREFERENCES]="options";\r
104000 ZmOrganizer.PREF_PAGE="PREF_PAGE";\r
104001 ZmPreferencesApp.prototype=new ZmApp;\r
104002 ZmPreferencesApp.prototype.constructor=ZmPreferencesApp;\r
104003 ZmPreferencesApp.prototype.toString=function(){\r
104004 return"ZmPreferencesApp"\r
104005 };\r
104006 ZmPreferencesApp._registerAllPrefs=function(){\r
104007 AjxDispatcher.require("PreferencesCore");\r
104008 appCtxt.getAppController().runAppFunction("_registerPrefs")\r
104009 };\r
104010 ZmZimbraMail.addAppListener(ZmApp.PREFERENCES,ZmAppEvent.PRE_LAUNCH,new AjxListener(ZmPreferencesApp._registerAllPrefs));\r
104011 ZmPreferencesApp.prototype.launch=function(t,a){\r
104012 if(appCtxt.isOffline){\r
104013 appCtxt.accountList.setActiveAccount(appCtxt.accountList.mainAccount)\r
104014 }\r
104015 var e=new AjxCallback(this,this._handleLoadLaunch,[a]);\r
104016 AjxDispatcher.require(["PreferencesCore","Preferences"],true,e,null,true)\r
104017 };\r
104018 ZmPreferencesApp.prototype.getPrefController=function(){\r
104019 if(!this._prefController){\r
104020 AjxDispatcher.require(["PreferencesCore","Preferences"]);\r
104021 this._prefController=new ZmPrefController(this._container,this)\r
104022 }\r
104023 return this._prefController\r
104024 };\r
104025 ZmPreferencesApp.prototype.getFilterController=function(){\r
104026 if(!this._filterController){\r
104027 this._filterController=new ZmFilterController(this._container,this)\r
104028 }\r
104029 return this._filterController\r
104030 };\r
104031 ZmPreferencesApp.prototype.getFilterRules=function(){\r
104032 var t=window.parentAppCtxt||window.appCtxt;\r
104033 var e=t.getActiveAccount().name;\r
104034 if(!this._filterRules[e]){\r
104035 this._filterRules[e]=new ZmFilterRules()\r
104036 }\r
104037 return this._filterRules[e]\r
104038 };\r
104039 ZmPreferencesApp.prototype.modifyNotify=function(a,e){\r
104040 var t=this._getSharingView();\r
104041 if(t){\r
104042 t.notifyModify(a)\r
104043 }};\r
104044 ZmPreferencesApp.prototype.refresh=function(e){\r
104045 if(!appCtxt.inStartup){\r
104046 var t=this._getSharingView();\r
104047 if(t){\r
104048 t.refresh(e)\r
104049 }}};\r
104050 ZmPreferencesApp.prototype._defineAPI=function(){\r
104051 AjxDispatcher.registerMethod("GetFilterRules",["PreferencesCore","Preferences"],new AjxCallback(this,this.getFilterRules));\r
104052 AjxDispatcher.registerMethod("GetPrefController",["PreferencesCore","Preferences"],new AjxCallback(this,this.getPrefController));\r
104053 AjxDispatcher.registerMethod("GetFilterController",["PreferencesCore","Preferences"],new AjxCallback(this,this.getFilterController))\r
104054 };\r
104055 ZmPreferencesApp.prototype._registerOrganizers=function(){\r
104056 ZmOrganizer.registerOrg(ZmOrganizer.PREF_PAGE,{\r
104057 app:ZmApp.PREFERENCES,orgClass:"ZmPrefPage",orgPackage:"PreferencesCore",treeController:"ZmPrefPageTreeController",labelKey:"preferences",treeType:ZmOrganizer.PREF_PAGE,displayOrder:100}\r
104058 )\r
104059 };\r
104060 ZmPreferencesApp.prototype._registerOperations=function(){\r
104061 ZmOperation.registerOp(ZmId.OP_MOBILE_RESUME_SYNC,{\r
104062 textKey:"mobileResumeSync",image:"ImAvailable"}\r
104063 );\r
104064 ZmOperation.registerOp(ZmId.OP_MOBILE_SUSPEND_SYNC,{\r
104065 textKey:"mobileSuspendSync",image:"Offline"}\r
104066 );\r
104067 ZmOperation.registerOp(ZmId.OP_MOBILE_WIPE,{\r
104068 textKey:"mobileWipe",image:"MobileWipe"}\r
104069 ,ZmSetting.MOBILE_POLICY_ENABLED);\r
104070 ZmOperation.registerOp(ZmId.OP_MOBILE_CANCEL_WIPE,{\r
104071 textKey:"mobileWipeCancel",image:"MobileWipeCancel"}\r
104072 ,ZmSetting.MOBILE_POLICY_ENABLED)\r
104073 };\r
104074 ZmPreferencesApp.prototype._registerSettings=function(e){\r
104075 e=e||appCtxt.getSettings();\r
104076 e.registerSetting("IMPORT_FOLDER",{\r
104077 type:ZmSetting.T_PSEUDO,dataType:ZmSetting.D_NONE}\r
104078 );\r
104079 e.registerSetting("IMPORT_BUTTON",{\r
104080 type:ZmSetting.T_PSEUDO,dataType:ZmSetting.D_NONE}\r
104081 );\r
104082 e.registerSetting("EXPORT_FOLDER",{\r
104083 type:ZmSetting.T_PSEUDO,dataType:ZmSetting.D_NONE}\r
104084 );\r
104085 e.registerSetting("EXPORT_BUTTON",{\r
104086 type:ZmSetting.T_PSEUDO,dataType:ZmSetting.D_NONE}\r
104087 );\r
104088 e.registerSetting("PREF_SECTIONS",{\r
104089 type:ZmSetting.T_PSEUDO,dataType:ZmSetting.D_HASH,isGlobal:true}\r
104090 );\r
104091 e.registerSetting("SIGNATURE_MAX_LENGTH",{\r
104092 name:"zimbraMailSignatureMaxLength",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:1024}\r
104093 );\r
104094 e.registerSetting("DISCARD_IN_FILTER_ENABLED",{\r
104095 name:"zimbraFeatureDiscardInFiltersEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104096 )\r
104097 };\r
104098 ZmPreferencesApp.prototype._registerApp=function(){\r
104099 ZmApp.registerApp(ZmApp.PREFERENCES,{\r
104100 mainPkg:"Preferences",nameKey:"preferences",icon:"Preferences",textPrecedence:50,chooserTooltipKey:"goToOptions",button:appCtxt.isChildWindow?null:ZmAppChooser.B_OPTIONS,overviewTrees:[ZmOrganizer.PREF_PAGE],hideZimlets:true,gotoActionCode:ZmKeyMap.GOTO_OPTIONS,chooserSort:180}\r
104101 )\r
104102 };\r
104103 ZmPreferencesApp.prototype._registerPrefs=function(){\r
104104 var l={\r
104105 GENERAL:{\r
104106 title:ZmMsg.general,description:"[General settings]",templateId:"prefs.Pages#General",priority:0,prefs:[ZmSetting.LOCALE_NAME,ZmSetting.PASSWORD,ZmSetting.SEARCH_INCLUDES_SPAM,ZmSetting.SEARCH_INCLUDES_TRASH,ZmSetting.OFFLINE_SHOW_GLOBAL_INBOX,ZmSetting.SHOW_SEARCH_STRING,ZmSetting.SHOW_SELECTION_CHECKBOX,ZmSetting.SKIN_NAME,ZmSetting.CLIENT_TYPE,ZmSetting.DEFAULT_TIMEZONE,ZmSetting.OFFLINE_IS_MAILTO_HANDLER]}\r
104107 ,COMPOSING:{\r
104108 parentId:"MAIL",title:ZmMsg.composing,icon:"Compose",templateId:"prefs.Pages#Composing",priority:20,precondition:[ZmSetting.MAIL_ENABLED],prefs:[ZmSetting.COMPOSE_AS_FORMAT,ZmSetting.COMPOSE_INIT_FONT_COLOR,ZmSetting.COMPOSE_INIT_FONT_FAMILY,ZmSetting.COMPOSE_INIT_FONT_SIZE,ZmSetting.FORWARD_INCLUDE_ORIG,ZmSetting.NEW_WINDOW_COMPOSE,ZmSetting.AUTO_SAVE_DRAFT_INTERVAL,ZmSetting.REPLY_INCLUDE_ORIG,ZmSetting.REPLY_PREFIX,ZmSetting.SAVE_TO_SENT,ZmSetting.COMPOSE_SAME_FORMAT,ZmSetting.MAIL_MANDATORY_SPELLCHECK]}\r
104109 ,SHARING:{\r
104110 title:ZmMsg.sharing,icon:"SharedContact",templateId:"prefs.Pages#SharingPrefPage",priority:85,precondition:ZmSetting.SHARING_ENABLED,manageChanges:true,createView:function(m,f,u){\r
104111 AjxDispatcher.require("Share");\r
104112 return new ZmSharingPage(m,f,u)\r
104113 }}\r
104114 ,MOBILE:{\r
104115 title:ZmMsg.mobileDevices,icon:"Mobile",templateId:"prefs.Pages#MobileDevices",priority:90,precondition:ZmSetting.MOBILE_SYNC_ENABLED,manageChanges:true,createView:function(m,f,u){\r
104116 return new ZmMobileDevicesPage(m,f,u)\r
104117 }}\r
104118 ,IMPORT_EXPORT:{\r
104119 title:ZmMsg.importExport,icon:"SendReceive",templateId:"data.ImportExport#ImportExportPrefPage",priority:100,precondition:ZmSetting.IMPORT_EXPORT_ENABLED,prefs:[ZmSetting.IMPORT_FOLDER,ZmSetting.IMPORT_BUTTON,ZmSetting.EXPORT_FOLDER,ZmSetting.EXPORT_BUTTON],manageChanges:true,createView:function(m,f,u){\r
104120 AjxDispatcher.require("ImportExport");\r
104121 return new ZmImportExportPage(m,f,u)\r
104122 }}\r
104123 ,SHORTCUTS:{\r
104124 title:ZmMsg.shortcuts,icon:"Shortcut",templateId:"prefs.Pages#Shortcuts",priority:120,precondition:ZmSetting.USE_KEYBOARD_SHORTCUTS,createView:function(m,f,u){\r
104125 return new ZmShortcutsPage(m,f,u)\r
104126 }}\r
104127 ,PREF_ZIMLETS:{\r
104128 title:ZmMsg.zimlets,icon:"Zimlet",templateId:"prefs.Pages#Zimlets",manageDirty:true,priority:140,prefs:[ZmSetting.CHECKED_ZIMLETS],createView:function(m,f,u){\r
104129 return new ZmZimletsPage(m,f,u)\r
104130 }}};\r
104131 for(var a in l){\r
104132 ZmPref.registerPrefSection(a,l[a])\r
104133 }\r
104134 ZmPref.registerPref("CLIENT_TYPE",{\r
104135 displayName:ZmMsg.clientType,displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_VERTICAL,displayOptions:[ZmMsg.clientAdvanced,ZmMsg.clientStandard],options:[ZmSetting.CLIENT_ADVANCED,ZmSetting.CLIENT_STANDARD]}\r
104136 );\r
104137 ZmPref.registerPref("COMPOSE_AS_FORMAT",{\r
104138 displayName:ZmMsg.composeUsing,displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_VERTICAL,displayOptions:[ZmMsg.composeAsHTML,ZmMsg.composeAsText],options:[ZmSetting.COMPOSE_HTML,ZmSetting.COMPOSE_TEXT],precondition:ZmSetting.HTML_COMPOSE_ENABLED}\r
104139 );\r
104140 ZmPref.registerPref("COMPOSE_INIT_FONT_COLOR",{\r
104141 displayOptions:["rgb(0, 0, 0)"],displayContainer:ZmPref.TYPE_COLOR,precondition:[ZmSetting.HTML_COMPOSE_ENABLED,ZmSetting.NOTEBOOK_ENABLED]}\r
104142 );\r
104143 ZmPref.registerPref("COMPOSE_INIT_FONT_FAMILY",{\r
104144 displayName:ZmMsg.defaultFontSettings,displayContainer:ZmPref.TYPE_SELECT,displayOptions:["Arial","Times New Roman","Courier","Verdana"],options:["Arial","Times New Roman","Courier","Verdana"],precondition:[ZmSetting.HTML_COMPOSE_ENABLED,ZmSetting.NOTEBOOK_ENABLED]}\r
104145 );\r
104146 var s=[AjxMessageFormat.format(ZmMsg.pt,"8"),AjxMessageFormat.format(ZmMsg.pt,"10"),AjxMessageFormat.format(ZmMsg.pt,"12"),AjxMessageFormat.format(ZmMsg.pt,"14"),AjxMessageFormat.format(ZmMsg.pt,"18"),AjxMessageFormat.format(ZmMsg.pt,"24"),AjxMessageFormat.format(ZmMsg.pt,"36")];\r
104147 var h=["8pt","10pt","12pt","14pt","18pt","24pt","36pt"];\r
104148 ZmPref.registerPref("COMPOSE_INIT_FONT_SIZE",{\r
104149 displayName:null,displayContainer:ZmPref.TYPE_SELECT,displayOptions:s,options:h,precondition:[ZmSetting.HTML_COMPOSE_ENABLED,ZmSetting.NOTEBOOK_ENABLED]}\r
104150 );\r
104151 ZmPref.registerPref("COMPOSE_SAME_FORMAT",{\r
104152 displayName:ZmMsg.replyForwardInSameFormat,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104153 );\r
104154 ZmPref.registerPref("CHECKED_ZIMLETS",{\r
104155 displayName:ZmMsg.zimlets,displayContainer:ZmPref.TYPE_CUSTOM}\r
104156 );\r
104157 ZmPref.registerPref("FORWARD_INCLUDE_ORIG",{\r
104158 displayName:ZmMsg.forwardInclude,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[ZmMsg.includeInBody,ZmMsg.includePrefix,ZmMsg.includePrefixFull,ZmMsg.includeOriginalAsAttach],options:[ZmSetting.INCLUDE,ZmSetting.INCLUDE_PREFIX,ZmSetting.INCLUDE_PREFIX_FULL,ZmSetting.INCLUDE_ATTACH]}\r
104159 );\r
104160 ZmPref.registerPref("DEFAULT_TIMEZONE",{\r
104161 displayName:ZmMsg.selectTimezone,displayContainer:ZmPref.TYPE_SELECT,displayParams:{\r
104162 cascade:false}\r
104163 ,displayOptions:AjxTimezone.getZonePreferences(),options:AjxTimezone.getZonePreferencesOptions()}\r
104164 );\r
104165 ZmPref.registerPref("EXPORT_FOLDER",{\r
104166 displayContainer:ZmPref.TYPE_CUSTOM}\r
104167 );\r
104168 ZmPref.registerPref("EXPORT_BUTTON",{\r
104169 displayName:ZmMsg._export,displayContainer:ZmPref.TYPE_CUSTOM}\r
104170 );\r
104171 ZmPref.registerPref("IMPORT_FOLDER",{\r
104172 loadFunction:ZmPref.loadCsvFormats,displayContainer:ZmPref.TYPE_CUSTOM}\r
104173 );\r
104174 ZmPref.registerPref("IMPORT_BUTTON",{\r
104175 displayName:ZmMsg._import,displayContainer:ZmPref.TYPE_CUSTOM}\r
104176 );\r
104177 ZmPref.registerPref("LOCALE_NAME",{\r
104178 displayName:ZmMsg.selectLanguage,displayContainer:ZmPref.TYPE_LOCALES,precondition:ZmSetting.LOCALE_CHANGE_ENABLED}\r
104179 );\r
104180 var c=AjxMessageFormat.format(ZmMsg.messageReadTime,DwtId._makeId(ZmId.WIDGET_INPUT,ZmId.OP_MARK_READ));\r
104181 ZmPref.registerPref("MARK_MSG_READ",{\r
104182 displayName:ZmMsg.messageReadLabel,displayContainer:ZmPref.TYPE_RADIO_GROUP,displayFunction:ZmPref.markMsgReadDisplay,orientation:ZmPref.ORIENT_VERTICAL,displayOptions:[ZmMsg.messageReadNow,c,ZmMsg.messageReadNone],options:[ZmSetting.MARK_READ_NOW,ZmSetting.MARK_READ_TIME,ZmSetting.MARK_READ_NONE],valueFunction:ZmPref.markMsgReadValue}\r
104183 );\r
104184 ZmPref.registerPref("NEW_WINDOW_COMPOSE",{\r
104185 displayName:ZmMsg.composeInNewWin,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:AjxCallback.simpleClosure(ZmPref.requireAllPreConditions,null,ZmSetting.MAIL_ENABLED,ZmSetting.DETACH_COMPOSE_ENABLED)}\r
104186 );\r
104187 ZmPref.registerPref("MAIL_MANDATORY_SPELLCHECK",{\r
104188 displayName:ZmMsg.mandatorySpellcheck,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104189 );\r
104190 ZmPref.registerPref("PASSWORD",{\r
104191 displayName:ZmMsg.changePassword,displayContainer:ZmPref.TYPE_PASSWORD,precondition:ZmSetting.CHANGE_PASSWORD_ENABLED}\r
104192 );\r
104193 ZmPref.registerPref("SHARING",{\r
104194 displayContainer:ZmPref.TYPE_CUSTOM}\r
104195 );\r
104196 if(appCtxt.isOffline){\r
104197 ZmPref.registerPref("OFFLINE_IS_MAILTO_HANDLER",{\r
104198 displayName:ZmMsg.offlineAllowMailTo,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104199 )\r
104200 }\r
104201 var d=[525600];\r
104202 var o=ZmPref.pollingIntervalDisplay(appCtxt.get(ZmSetting.MIN_POLLING_INTERVAL));\r
104203 o=(o<1)?1:Math.round(o);\r
104204 var e=ZmPref.pollingIntervalDisplay(appCtxt.get(ZmSetting.POLLING_INTERVAL));\r
104205 e=Math.round(e);\r
104206 while(o<=10){\r
104207 d.push(o);\r
104208 o++\r
104209 }\r
104210 o=o-1;\r
104211 var r=d.length;\r
104212 while(r<10){\r
104213 o=o+5;\r
104214 d.push(o);\r
104215 r++\r
104216 }\r
104217 if(e>o){\r
104218 var t=e%5;\r
104219 t=(t==0)?e:((e/5+1)*5);\r
104220 d.push(t)\r
104221 }else{\r
104222 o=o+5;\r
104223 d.push(o)\r
104224 }\r
104225 var n=[ZmMsg.pollNever];\r
104226 while(n.length<=r){\r
104227 n.push(ZmMsg.pollEveryNMinutes)\r
104228 }\r
104229 ZmPref.registerPref("POLLING_INTERVAL",{\r
104230 displayName:ZmMsg.pollingInterval,displayContainer:ZmPref.TYPE_SELECT,displayOptions:n,options:d,approximateFunction:ZmPref.approximateInterval,displayFunction:ZmPref.pollingIntervalDisplay,valueFunction:ZmPref.pollingIntervalValue,validationFunction:ZmPref.validatePollingInterval}\r
104231 );\r
104232 ZmPref.registerPref("REPLY_INCLUDE_ORIG",{\r
104233 displayName:ZmMsg.replyInclude,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[ZmMsg.dontInclude,ZmMsg.includeInBody,ZmMsg.includePrefix,ZmMsg.includePrefixFull,ZmMsg.includeOriginalAsAttach,ZmMsg.smartInclude],options:[ZmSetting.INCLUDE_NONE,ZmSetting.INCLUDE,ZmSetting.INCLUDE_PREFIX,ZmSetting.INCLUDE_PREFIX_FULL,ZmSetting.INCLUDE_ATTACH,ZmSetting.INCLUDE_SMART]}\r
104234 );\r
104235 ZmPref.registerPref("REPLY_PREFIX",{\r
104236 displayName:ZmMsg.prefix,displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_HORIZONTAL,displayOptions:[">","|"]}\r
104237 );\r
104238 ZmPref.registerPref("SAVE_TO_SENT",{\r
104239 displayName:ZmMsg.saveToSent,displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_VERTICAL,precondition:ZmSetting.MAIL_ENABLED,displayOptions:[ZmMsg.saveToSent,ZmMsg.saveToSentNOT],options:[true,false]}\r
104240 );\r
104241 ZmPref.registerPref("SEARCH_INCLUDES_SPAM",{\r
104242 displayName:ZmMsg.includeJunkFolder,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:AjxCallback.simpleClosure(ZmPref.requireAllPreConditions,null,ZmSetting.MAIL_ENABLED,ZmSetting.SPAM_ENABLED)}\r
104243 );\r
104244 ZmPref.registerPref("SEARCH_INCLUDES_TRASH",{\r
104245 displayName:ZmMsg.includeTrashFolder,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:[ZmSetting.MAIL_ENABLED,ZmSetting.CONTACTS_ENABLED]}\r
104246 );\r
104247 ZmPref.registerPref("SHOW_FRAGMENTS",{\r
104248 displayName:ZmMsg.showFragments,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104249 );\r
104250 ZmPref.registerPref("OFFLINE_SHOW_GLOBAL_INBOX",{\r
104251 displayName:ZmMsg.showGlobalInbox,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104252 );\r
104253 ZmPref.registerPref("SHOW_SEARCH_STRING",{\r
104254 displayName:ZmMsg.showSearchString,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104255 );\r
104256 ZmPref.registerPref("SHOW_SELECTION_CHECKBOX",{\r
104257 displayName:ZmMsg.showSelectionString,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104258 );\r
104259 ZmPref.registerPref("SKIN_NAME",{\r
104260 displayName:ZmMsg.selectSkin,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[],options:[],loadFunction:ZmPref.loadSkins,precondition:ZmSetting.SKIN_CHANGE_ENABLED}\r
104261 );\r
104262 ZmPref.registerPref("VIEW_AS_HTML",{\r
104263 displayName:ZmMsg.displayMail,displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_VERTICAL,displayOptions:[ZmMsg.displayAsHTML,ZmMsg.displayAsText],options:[true,false]}\r
104264 )\r
104265 };\r
104266 ZmPreferencesApp.prototype._handleLoadLaunch=function(t){\r
104267 var e=new AjxCallback(this,this._handleResponseLaunch,[t]);\r
104268 appCtxt.getSettings().loadPreferenceData(e)\r
104269 };\r
104270 ZmPreferencesApp.prototype._handleResponseLaunch=function(e){\r
104271 AjxDispatcher.run("GetPrefController").show();\r
104272 if(e){\r
104273 e.run()\r
104274 }};\r
104275 ZmPreferencesApp.prototype._getSharingView=function(){\r
104276 if(!this._prefController){\r
104277 return null\r
104278 }\r
104279 var a=this.getPrefController();\r
104280 var t=a&&a.getPrefsView();\r
104281 var e=t&&t.getView("SHARING");\r
104282 return(e&&e.view)\r
104283 };\r
104284 ZmPreferencesApp.prototype._getOverviewParams=function(){\r
104285 var e=ZmApp.prototype._getOverviewParams.call(this);\r
104286 e.omit={};\r
104287 e.omit[ZmOrganizer.ID_ZIMLET]=true;\r
104288 return e\r
104289 }\r
104290 }\r
104291 if(AjxPackage.define("zimbraMail.portal.ZmPortalApp")){\r
104292 ZmPortalApp=function(t,e){\r
104293 ZmApp.call(this,ZmApp.PORTAL,t,e)\r
104294 };\r
104295 ZmPortalApp.prototype=new ZmApp;\r
104296 ZmPortalApp.prototype.constructor=ZmPortalApp;\r
104297 ZmPortalApp.prototype.toString=function(){\r
104298 return"ZmPortalApp"\r
104299 };\r
104300 ZmPortalApp.prototype._registerApp=function(){\r
104301 ZmApp.registerApp(ZmApp.PORTAL,{\r
104302 nameKey:"portal",icon:"Globe",chooserTooltipKey:"goToPortal",button:ZmAppChooser.B_PORTAL,chooserSort:1,defaultSort:1}\r
104303 )\r
104304 };\r
104305 ZmApp.PORTAL=ZmId.APP_PORTAL;\r
104306 ZmApp.CLASS[ZmApp.PORTAL]="ZmPortalApp";\r
104307 ZmApp.SETTING[ZmApp.PORTAL]=ZmSetting.PORTAL_ENABLED;\r
104308 ZmApp.LOAD_SORT[ZmApp.PORTAL]=1;\r
104309 ZmApp.QS_ARG[ZmApp.PORTAL]="home";\r
104310 ZmEvent.S_PORTLET="PORTLET";\r
104311 ZmItem.PORTLET=ZmEvent.S_PORTLET;\r
104312 ZmPortalApp.__PORTLET_ID=0;\r
104313 ZmPortalApp.prototype.refreshPortlets=function(){\r
104314 var t=this.getPortletMgr();\r
104315 var e=t.getPortlets();\r
104316 for(var a in e){\r
104317 e[a].refresh()\r
104318 }};\r
104319 ZmPortalApp.prototype.launch=function(t,a){\r
104320 var e=new AjxCallback(this,this._handleLoadLaunch,[t,a]);\r
104321 AjxDispatcher.require("Portal",true,e,null,true)\r
104322 };\r
104323 ZmPortalApp.prototype._handleLoadLaunch=function(t,a){\r
104324 var e=this.getPortalController();\r
104325 e.show();\r
104326 ZmApp.prototype.launch.call(this,t,a)\r
104327 };\r
104328 ZmPortalApp.prototype.activate=function(t){\r
104329 var e=this.getPortalController();\r
104330 e.setPaused(!t);\r
104331 ZmApp.prototype.activate.call(this,t)\r
104332 };\r
104333 ZmPortalApp.prototype.getManifest=function(n){\r
104334 if(!this._manifest){\r
104335 var a=appCtxt.get(ZmSetting.PORTAL_NAME);\r
104336 if(a){\r
104337 var t=new Date().getTime();\r
104338 var o={\r
104339 url:[window.appContextPath,"/portals/",a,"/manifest.xml?v=",t].join(""),callback:n?new AjxCallback(this,this._handleLoadManifest,[n]):null};\r
104340 var e=AjxLoader.load(o);\r
104341 if(!n){\r
104342 this._handleLoadManifest(n,e)\r
104343 }}}else{\r
104344 if(n){\r
104345 n.run(this._manifest)\r
104346 }}\r
104347 return this._manifest\r
104348 };\r
104349 ZmPortalApp.prototype._handleLoadManifest=function(callback,req){\r
104350 var e;\r
104351 if(req.status==200&&req.responseXML){\r
104352 try{\r
104353 var json=new AjxJsonSerializer(true).serialize(req.responseXML);\r
104354 eval("this._manifest = "+json);\r
104355 var portalDef=this._manifest.portal;\r
104356 var portletsDef=portalDef&&portalDef.portlets;\r
104357 if(portletsDef&&!(portletsDef.portlet instanceof Array)){\r
104358 portletsDef.portlet=[portletsDef.portlet]\r
104359 }\r
104360 portalDef.portlets=portletsDef.portlet;\r
104361 if(portalDef.portlets){\r
104362 for(var i=0;\r
104363 i<portalDef.portlets.length;\r
104364 i++){\r
104365 var portletDef=portalDef.portlets[i];\r
104366 var propertyDef=portletDef.property;\r
104367 if(propertyDef&&!(propertyDef instanceof Array)){\r
104368 propertyDef=[propertyDef]\r
104369 }\r
104370 portletDef.properties=propertyDef;\r
104371 delete portletDef.property\r
104372 }}}\r
104373 catch(e){}}else{\r
104374 e=""\r
104375 }\r
104376 if(!this._manifest){\r
104377 this._manifest={\r
104378 error:e}\r
104379 }\r
104380 if(callback){\r
104381 callback.run(this._manifest)\r
104382 }};\r
104383 ZmPortalApp.prototype.getPortalController=function(){\r
104384 AjxDispatcher.require("Portal");\r
104385 if(!this._portalController){\r
104386 this._portalController=new ZmPortalController(this._container,this)\r
104387 }\r
104388 return this._portalController\r
104389 };\r
104390 ZmPortalApp.prototype.getPortletMgr=function(){\r
104391 AjxDispatcher.require("Portal");\r
104392 if(!this._portletMgr){\r
104393 this._portletMgr=new ZmPortletMgr()\r
104394 }\r
104395 return this._portletMgr\r
104396 };\r
104397 ZmPortalApp.prototype._getOverviewTrees=function(){\r
104398 return this._getOverviewApp()._getOverviewTrees()\r
104399 };\r
104400 ZmPortalApp.prototype._getOverviewApp=function(){\r
104401 if(!this._overviewApp){\r
104402 var o=[];\r
104403 for(var t in ZmApp.CHOOSER_SORT){\r
104404 o.push({\r
104405 name:t,sort:ZmApp.CHOOSER_SORT[t]}\r
104406 )\r
104407 }\r
104408 o.sort(ZmPortalApp.__BY_SORT);\r
104409 var e=null;\r
104410 for(var a=0;\r
104411 a<o.length;\r
104412 a++){\r
104413 var n=o[a];\r
104414 if(n.name==this._name){\r
104415 continue\r
104416 }\r
104417 if(appCtxt.getApp(n.name).isUpsell){\r
104418 continue\r
104419 }\r
104420 e=n.name;\r
104421 break\r
104422 }\r
104423 this._overviewApp=appCtxt.getApp(e)\r
104424 }\r
104425 return this._overviewApp\r
104426 };\r
104427 ZmPortalApp.__BY_SORT=function(t,e){\r
104428 return t.sort-e.sort\r
104429 }\r
104430 }\r
104431 if(AjxPackage.define("zimbraMail.mail.ZmMailApp")){\r
104432 ZmMailApp=function(t,e){\r
104433 ZmApp.call(this,ZmApp.MAIL,t,e);\r
104434 this._sessionController={};\r
104435 this._sessionId={};\r
104436 this._curSessionId={};\r
104437 this._dataSourceCollection={};\r
104438 this._identityCollection={};\r
104439 this._signatureCollection={};\r
104440 this._groupBy={};\r
104441 this.numEntries=0;\r
104442 this._addSettingsChangeListeners()\r
104443 };\r
104444 ZmEvent.S_CONV=ZmId.ITEM_CONV;\r
104445 ZmEvent.S_MSG=ZmId.ITEM_MSG;\r
104446 ZmEvent.S_ATT=ZmId.ITEM_ATT;\r
104447 ZmEvent.S_FOLDER=ZmId.ORG_FOLDER;\r
104448 ZmEvent.S_DATA_SOURCE=ZmId.ITEM_DATA_SOURCE;\r
104449 ZmEvent.S_IDENTITY="IDENTITY";\r
104450 ZmEvent.S_SIGNATURE="SIGNATURE";\r
104451 ZmItem.CONV=ZmEvent.S_CONV;\r
104452 ZmItem.MSG=ZmEvent.S_MSG;\r
104453 ZmItem.ATT=ZmEvent.S_ATT;\r
104454 ZmItem.DATA_SOURCE=ZmEvent.S_DATA_SOURCE;\r
104455 ZmOrganizer.FOLDER=ZmEvent.S_FOLDER;\r
104456 ZmApp.MAIL=ZmId.APP_MAIL;\r
104457 ZmApp.CLASS[ZmApp.MAIL]="ZmMailApp";\r
104458 ZmApp.SETTING[ZmApp.MAIL]=ZmSetting.MAIL_ENABLED;\r
104459 ZmApp.UPSELL_SETTING[ZmApp.MAIL]=ZmSetting.MAIL_UPSELL_ENABLED;\r
104460 ZmApp.LOAD_SORT[ZmApp.MAIL]=20;\r
104461 ZmApp.QS_ARG[ZmApp.MAIL]="mail";\r
104462 ZmMailApp.DEFAULT_AUTO_SAVE_DRAFT_INTERVAL=30;\r
104463 ZmMailApp.DEFAULT_MAX_MESSAGE_SIZE=100000;\r
104464 ZmMailApp.POP_DOWNLOAD_SINCE_ALL=0;\r
104465 ZmMailApp.POP_DOWNLOAD_SINCE_NO_CHANGE=1;\r
104466 ZmMailApp.POP_DOWNLOAD_SINCE_FROM_NOW=2;\r
104467 ZmMailApp.SEND_RECEIPT_NEVER="never";\r
104468 ZmMailApp.SEND_RECEIPT_ALWAYS="always";\r
104469 ZmMailApp.SEND_RECEIPT_PROMPT="prompt";\r
104470 ZmMailApp.prototype=new ZmApp;\r
104471 ZmMailApp.prototype.constructor=ZmMailApp;\r
104472 ZmMailApp._setGroupByMaps=function(){\r
104473 ZmMailApp.GROUP_MAIL_BY_ITEM={};\r
104474 ZmMailApp.GROUP_MAIL_BY_ITEM[ZmSetting.GROUP_BY_CONV]=ZmItem.CONV;\r
104475 ZmMailApp.GROUP_MAIL_BY_ITEM[ZmSetting.GROUP_BY_MESSAGE]=ZmItem.MSG\r
104476 };\r
104477 ZmMailApp.prototype.toString=function(){\r
104478 return"ZmMailApp"\r
104479 };\r
104480 ZmMailApp.prototype._defineAPI=function(){\r
104481 AjxDispatcher.setPackageLoadFunction("MailCore",new AjxCallback(this,this._postLoadCore));\r
104482 AjxDispatcher.setPackageLoadFunction("Mail",new AjxCallback(this,this._postLoad));\r
104483 AjxDispatcher.registerMethod("Compose",["MailCore","Mail"],new AjxCallback(this,this.compose));\r
104484 AjxDispatcher.registerMethod("GetComposeController",["MailCore","Mail"],new AjxCallback(this,this.getComposeController));\r
104485 AjxDispatcher.registerMethod("GetConvController",["MailCore","Mail"],new AjxCallback(this,this.getConvController));\r
104486 AjxDispatcher.registerMethod("GetConvListController","MailCore",new AjxCallback(this,this.getConvListController));\r
104487 AjxDispatcher.registerMethod("GetMsgController",["MailCore","Mail"],new AjxCallback(this,this.getMsgController));\r
104488 AjxDispatcher.registerMethod("GetTradController","MailCore",new AjxCallback(this,this.getTradController));\r
104489 AjxDispatcher.registerMethod("GetMailListController","MailCore",new AjxCallback(this,this.getMailListController));\r
104490 AjxDispatcher.registerMethod("GetIdentityCollection","MailCore",new AjxCallback(this,this.getIdentityCollection));\r
104491 AjxDispatcher.registerMethod("GetSignatureCollection","MailCore",new AjxCallback(this,this.getSignatureCollection));\r
104492 AjxDispatcher.registerMethod("GetDataSourceCollection","MailCore",new AjxCallback(this,this.getDataSourceCollection));\r
104493 AjxDispatcher.registerMethod("GetAttachmentsController",["MailCore","Mail"],new AjxCallback(this,this.getAttachmentsController));\r
104494 AjxDispatcher.registerMethod("GetMailConfirmController",["MailCore","Mail"],new AjxCallback(this,this.getConfirmController))\r
104495 };\r
104496 ZmMailApp.prototype._registerSettings=function(e){\r
104497 var e=e||appCtxt.getSettings();\r
104498 e.registerSetting("ALLOW_ANY_FROM_ADDRESS",{\r
104499 name:"zimbraAllowAnyFromAddress",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104500 );\r
104501 e.registerSetting("ALLOW_FROM_ADDRESSES",{\r
104502 name:"zimbraAllowFromAddress",type:ZmSetting.T_COS,dataType:ZmSetting.D_LIST}\r
104503 );\r
104504 e.registerSetting("AUTO_SAVE_DRAFT_INTERVAL",{\r
104505 name:"zimbraPrefAutoSaveDraftInterval",type:ZmSetting.T_PREF,dataType:ZmSetting.D_LDAP_TIME,defaultValue:ZmMailApp.DEFAULT_AUTO_SAVE_DRAFT_INTERVAL}\r
104506 );\r
104507 e.registerSetting("COMPOSE_SAME_FORMAT",{\r
104508 name:"zimbraPrefForwardReplyInOriginalFormat",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104509 );\r
104510 e.registerSetting("CONVERSATIONS_ENABLED",{\r
104511 name:"zimbraFeatureConversationsEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104512 );\r
104513 e.registerSetting("CONVERSATION_ORDER",{\r
104514 name:"zimbraPrefConversationOrder",type:ZmSetting.T_PREF,defaultValue:ZmSearch.DATE_DESC,isImplicit:true}\r
104515 );\r
104516 e.registerSetting("DEDUPE_MSG_TO_SELF",{\r
104517 name:"zimbraPrefDedupeMessagesSentToSelf",type:ZmSetting.T_PREF,defaultValue:ZmSetting.DEDUPE_NONE}\r
104518 );\r
104519 e.registerSetting("DEFAULT_DISPLAY_NAME",{\r
104520 type:ZmSetting.T_PSEUDO,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104521 );\r
104522 e.registerSetting("DETACH_COMPOSE_ENABLED",{\r
104523 name:"zimbraFeatureComposeInNewWindowEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104524 );\r
104525 e.registerSetting("DETACH_MAILVIEW_ENABLED",{\r
104526 name:"zimbraFeatureOpenMailInNewWindowEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104527 );\r
104528 e.registerSetting("DISPLAY_EXTERNAL_IMAGES",{\r
104529 name:"zimbraPrefDisplayExternalImages",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104530 );\r
104531 e.registerSetting("END_DATE_ENABLED",{\r
104532 type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104533 );\r
104534 e.registerSetting("FILTERS_ENABLED",{\r
104535 name:"zimbraFeatureFiltersEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104536 );\r
104537 e.registerSetting("FILTERS_MAIL_FORWARDING_ENABLED",{\r
104538 name:"zimbraFeatureMailForwardingInFiltersEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104539 );\r
104540 e.registerSetting("FORWARD_INCLUDE_ORIG",{\r
104541 name:"zimbraPrefForwardIncludeOriginalText",type:ZmSetting.T_PREF,defaultValue:ZmSetting.INCLUDE}\r
104542 );\r
104543 e.registerSetting("FORWARD_MENU_ENABLED",{\r
104544 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104545 );\r
104546 e.registerSetting("GET_MAIL_ACTION",{\r
104547 name:"zimbraPrefGetMailAction",type:ZmSetting.T_PREF,defaultValue:ZmSetting.GETMAIL_ACTION_DEFAULT,isGlobal:true}\r
104548 );\r
104549 e.registerSetting("GROUP_MAIL_BY",{\r
104550 name:"zimbraPrefGroupMailBy",type:ZmSetting.T_PREF,defaultValue:ZmSetting.GROUP_BY_MESSAGE,isImplicit:true}\r
104551 );\r
104552 e.registerSetting("HTML_SIGNATURE_ENABLED",{\r
104553 type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104554 );\r
104555 e.registerSetting("IDENTITIES_ENABLED",{\r
104556 name:"zimbraFeatureIdentitiesEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104557 );\r
104558 e.registerSetting("INITIAL_SEARCH",{\r
104559 name:"zimbraPrefMailInitialSearch",type:ZmSetting.T_PREF,defaultValue:"in:inbox"}\r
104560 );\r
104561 e.registerSetting("INITIAL_SEARCH_ENABLED",{\r
104562 name:"zimbraFeatureInitialSearchPreferenceEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104563 );\r
104564 e.registerSetting("MAIL_ALIASES",{\r
104565 name:"zimbraMailAlias",type:ZmSetting.T_COS,dataType:ZmSetting.D_LIST}\r
104566 );\r
104567 e.registerSetting("MAIL_ATTACH_VIEW_ENABLED",{\r
104568 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104569 );\r
104570 e.registerSetting("MAIL_BLACKLIST",{\r
104571 type:ZmSetting.T_PREF,dataType:ZmSetting.D_LIST}\r
104572 );\r
104573 e.registerSetting("MAIL_BLACKLIST_MAX_NUM_ENTRIES",{\r
104574 name:"zimbraMailBlacklistMaxNumEntries",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:100}\r
104575 );\r
104576 e.registerSetting("MAIL_FOLDER_COLORS_ENABLED",{\r
104577 name:"zimbraPrefFolderColorEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104578 );\r
104579 e.registerSetting("MAIL_FORWARDING_ADDRESS",{\r
104580 name:"zimbraPrefMailForwardingAddress",type:ZmSetting.T_PREF}\r
104581 );\r
104582 e.registerSetting("MAIL_FORWARDING_ENABLED",{\r
104583 name:"zimbraFeatureMailForwardingEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104584 );\r
104585 e.registerSetting("MAIL_MANDATORY_SPELLCHECK",{\r
104586 name:"zimbraPrefMandatorySpellCheckEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104587 );\r
104588 e.registerSetting("MAIL_FROM_ADDRESS",{\r
104589 name:"zimbraPrefFromAddress",type:ZmSetting.T_PREF,dataType:ZmSetting.D_LIST}\r
104590 );\r
104591 e.registerSetting("MAIL_LIFETIME_GLOBAL",{\r
104592 name:"zimbraMailMessageLifetime",type:ZmSetting.T_COS,defaultValue:"0"}\r
104593 );\r
104594 e.registerSetting("MAIL_LIFETIME_INBOX_READ",{\r
104595 name:"zimbraPrefInboxReadLifetime",type:ZmSetting.T_PREF,defaultValue:"0"}\r
104596 );\r
104597 e.registerSetting("MAIL_LIFETIME_INBOX_UNREAD",{\r
104598 name:"zimbraPrefInboxUnreadLifetime",type:ZmSetting.T_PREF,defaultValue:"0"}\r
104599 );\r
104600 e.registerSetting("MAIL_LIFETIME_JUNK",{\r
104601 name:"zimbraPrefJunkLifetime",type:ZmSetting.T_PREF,defaultValue:"0"}\r
104602 );\r
104603 e.registerSetting("MAIL_LIFETIME_JUNK_GLOBAL",{\r
104604 name:"zimbraMailSpamLifetime",type:ZmSetting.T_COS,defaultValue:"0"}\r
104605 );\r
104606 e.registerSetting("MAIL_LIFETIME_SENT",{\r
104607 name:"zimbraPrefSentLifetime",type:ZmSetting.T_PREF,defaultValue:"0"}\r
104608 );\r
104609 e.registerSetting("MAIL_LIFETIME_TRASH",{\r
104610 name:"zimbraPrefTrashLifetime",type:ZmSetting.T_PREF,defaultValue:"0"}\r
104611 );\r
104612 e.registerSetting("MAIL_LIFETIME_TRASH_GLOBAL",{\r
104613 name:"zimbraMailTrashLifetime",type:ZmSetting.T_COS,defaultValue:"0"}\r
104614 );\r
104615 e.registerSetting("MAIL_LOCAL_DELIVERY_DISABLED",{\r
104616 name:"zimbraPrefMailLocalDeliveryDisabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104617 );\r
104618 e.registerSetting("MAIL_NOTIFY_SOUNDS",{\r
104619 name:"zimbraPrefMailSoundsEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
104620 );\r
104621 e.registerSetting("MAIL_NOTIFY_APP",{\r
104622 name:"zimbraPrefMailFlashIcon",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
104623 );\r
104624 e.registerSetting("MAIL_NOTIFY_BROWSER",{\r
104625 name:"zimbraPrefMailFlashTitle",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
104626 );\r
104627 e.registerSetting("MAIL_NOTIFY_TOASTER",{\r
104628 name:"zimbraPrefMailToasterEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
104629 );\r
104630 e.registerSetting("MAIL_PRIORITY_ENABLED",{\r
104631 name:"zimbraFeatureMailPriorityEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104632 );\r
104633 e.registerSetting("MAIL_READ_RECEIPT_ENABLED",{\r
104634 name:"zimbraFeatureReadReceiptsEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104635 );\r
104636 e.registerSetting("MAIL_SEND_READ_RECEIPTS",{\r
104637 name:"zimbraPrefMailSendReadReceipts",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:"never"}\r
104638 );\r
104639 e.registerSetting("MAIL_WHITELIST",{\r
104640 type:ZmSetting.T_PREF,dataType:ZmSetting.D_LIST}\r
104641 );\r
104642 e.registerSetting("MAIL_WHITELIST_MAX_NUM_ENTRIES",{\r
104643 name:"zimbraMailWhitelistMaxNumEntries",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:100}\r
104644 );\r
104645 e.registerSetting("MARK_MSG_READ",{\r
104646 name:"zimbraPrefMarkMsgRead",type:ZmSetting.T_PREF,dataType:ZmSetting.D_INT,defaultValue:0}\r
104647 );\r
104648 e.registerSetting("MAX_MESSAGE_SIZE",{\r
104649 type:ZmSetting.T_PREF,defaultValue:ZmMailApp.DEFAULT_MAX_MESSAGE_SIZE}\r
104650 );\r
104651 e.registerSetting("NEW_WINDOW_COMPOSE",{\r
104652 name:"zimbraPrefComposeInNewWindow",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104653 );\r
104654 e.registerSetting("NOTIF_ADDRESS",{\r
104655 name:"zimbraPrefNewMailNotificationAddress",type:ZmSetting.T_PREF}\r
104656 );\r
104657 e.registerSetting("NOTIF_ENABLED",{\r
104658 name:"zimbraPrefNewMailNotificationEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104659 );\r
104660 e.registerSetting("NOTIF_FEATURE_ENABLED",{\r
104661 name:"zimbraFeatureNewMailNotificationEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104662 );\r
104663 e.registerSetting("OPEN_MAIL_IN_NEW_WIN",{\r
104664 name:"zimbraPrefOpenMailInNewWindow",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
104665 );\r
104666 e.registerSetting("POP_ENABLED",{\r
104667 name:"zimbraPop3Enabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:!appCtxt.isOffline}\r
104668 );\r
104669 e.registerSetting("POP_DOWNLOAD_SINCE_VALUE",{\r
104670 type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:""}\r
104671 );\r
104672 e.registerSetting("POP_DOWNLOAD_SINCE",{\r
104673 name:"zimbraPrefPop3DownloadSince",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:""}\r
104674 );\r
104675 e.registerSetting("READING_PANE_LOCATION",{\r
104676 name:"zimbraPrefReadingPaneLocation",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:ZmSetting.RP_BOTTOM,isImplicit:true,isGlobal:true}\r
104677 );\r
104678 e.registerSetting("READING_PANE_LOCATION_CV",{\r
104679 name:"zimbraPrefConvReadingPaneLocation",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:ZmSetting.RP_BOTTOM,isImplicit:true}\r
104680 );\r
104681 e.registerSetting("REPLY_INCLUDE_ORIG",{\r
104682 name:"zimbraPrefReplyIncludeOriginalText",type:ZmSetting.T_PREF,defaultValue:ZmSetting.INCLUDE}\r
104683 );\r
104684 e.registerSetting("REPLY_MENU_ENABLED",{\r
104685 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104686 );\r
104687 e.registerSetting("REPLY_PREFIX",{\r
104688 name:"zimbraPrefForwardReplyPrefixChar",type:ZmSetting.T_PREF,defaultValue:">"}\r
104689 );\r
104690 e.registerSetting("REPLY_TO_ADDRESS",{\r
104691 name:"zimbraPrefReplyToAddress",type:ZmSetting.T_PREF,dataType:ZmSetting.D_LIST}\r
104692 );\r
104693 e.registerSetting("REPLY_TO_ENABLED",{\r
104694 name:"zimbraPrefReplyToEnabled",type:ZmSetting.T_PREF}\r
104695 );\r
104696 e.registerSetting("SAVE_DRAFT_ENABLED",{\r
104697 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104698 );\r
104699 e.registerSetting("SAVE_TO_SENT",{\r
104700 name:"zimbraPrefSaveToSent",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104701 );\r
104702 e.registerSetting("SELECT_AFTER_DELETE",{\r
104703 name:"zimbraPrefMailSelectAfterDelete",type:ZmSetting.T_PREF,defaultValue:ZmSetting.DELETE_SELECT_NEXT}\r
104704 );\r
104705 e.registerSetting("SEND_ON_BEHALF_OF",{\r
104706 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104707 );\r
104708 e.registerSetting("SENT_FOLDER_NAME",{\r
104709 name:"zimbraPrefSentMailFolder",type:ZmSetting.T_PREF,defaultValue:"sent"}\r
104710 );\r
104711 e.registerSetting("SHOW_BCC",{\r
104712 type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104713 );\r
104714 e.registerSetting("SHOW_FRAGMENTS",{\r
104715 name:"zimbraPrefShowFragments",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isGlobal:true}\r
104716 );\r
104717 e.registerSetting("SHOW_MAIL_CONFIRM",{\r
104718 name:"zimbraFeatureConfirmationPageEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104719 );\r
104720 e.registerSetting("SIGNATURE",{\r
104721 name:"zimbraPrefMailSignature",type:ZmSetting.T_PREF}\r
104722 );\r
104723 e.registerSetting("SIGNATURE_ENABLED",{\r
104724 name:"zimbraPrefMailSignatureEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104725 );\r
104726 e.registerSetting("SIGNATURE_STYLE",{\r
104727 name:"zimbraPrefMailSignatureStyle",type:ZmSetting.T_PREF,defaultValue:ZmSetting.SIG_OUTLOOK}\r
104728 );\r
104729 e.registerSetting("SPAM_ENABLED",{\r
104730 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104731 );\r
104732 e.registerSetting("START_DATE_ENABLED",{\r
104733 type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104734 );\r
104735 e.registerSetting("USER_FOLDERS_ENABLED",{\r
104736 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
104737 );\r
104738 e.registerSetting("VACATION_FROM",{\r
104739 name:"zimbraPrefOutOfOfficeFromDate",type:ZmSetting.T_PREF,defaultValue:""}\r
104740 );\r
104741 e.registerSetting("VACATION_MSG",{\r
104742 name:"zimbraPrefOutOfOfficeReply",type:ZmSetting.T_PREF,defaultValue:""}\r
104743 );\r
104744 e.registerSetting("VACATION_MSG_ENABLED",{\r
104745 name:"zimbraPrefOutOfOfficeReplyEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104746 );\r
104747 e.registerSetting("VACATION_MSG_FEATURE_ENABLED",{\r
104748 name:"zimbraFeatureOutOfOfficeReplyEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104749 );\r
104750 e.registerSetting("VACATION_UNTIL",{\r
104751 name:"zimbraPrefOutOfOfficeUntilDate",type:ZmSetting.T_PREF,defaultValue:""}\r
104752 );\r
104753 e.registerSetting("COLLAPSE_IMAP_TREES",{\r
104754 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104755 );\r
104756 e.registerSetting("SAVE_TO_IMAP_SENT",{\r
104757 type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
104758 );\r
104759 ZmMailApp._setGroupByMaps()\r
104760 };\r
104761 ZmMailApp.prototype._registerPrefs=function(){\r
104762 var t={\r
104763 MAIL:{\r
104764 title:ZmMsg.mail,icon:"MailApp",templateId:"prefs.Pages#Mail",priority:10,precondition:appCtxt.get(ZmSetting.MAIL_ENABLED),prefs:[ZmSetting.DEDUPE_MSG_TO_SELF,ZmSetting.DISPLAY_EXTERNAL_IMAGES,ZmSetting.GET_MAIL_ACTION,ZmSetting.INITIAL_SEARCH,ZmSetting.MAIL_BLACKLIST,ZmSetting.MAIL_FORWARDING_ADDRESS,ZmSetting.MAIL_LIFETIME_INBOX_READ,ZmSetting.MAIL_LIFETIME_INBOX_UNREAD,ZmSetting.MAIL_LIFETIME_JUNK,ZmSetting.MAIL_LIFETIME_SENT,ZmSetting.MAIL_LIFETIME_TRASH,ZmSetting.MAIL_LOCAL_DELIVERY_DISABLED,ZmSetting.MAIL_NOTIFY_SOUNDS,ZmSetting.MAIL_NOTIFY_APP,ZmSetting.MAIL_NOTIFY_BROWSER,ZmSetting.MAIL_NOTIFY_TOASTER,ZmSetting.MAIL_WHITELIST,ZmSetting.MAIL_SEND_READ_RECEIPTS,ZmSetting.MARK_MSG_READ,ZmSetting.NOTIF_ADDRESS,ZmSetting.NOTIF_ENABLED,ZmSetting.OPEN_MAIL_IN_NEW_WIN,ZmSetting.PAGE_SIZE,ZmSetting.POP_DOWNLOAD_SINCE_VALUE,ZmSetting.POP_DOWNLOAD_SINCE,ZmSetting.POLLING_INTERVAL,ZmSetting.SHOW_FRAGMENTS,ZmSetting.VACATION_MSG_ENABLED,ZmSetting.VACATION_MSG,ZmSetting.SELECT_AFTER_DELETE,ZmSetting.START_DATE_ENABLED,ZmSetting.END_DATE_ENABLED,ZmSetting.VACATION_FROM,ZmSetting.VACATION_UNTIL,ZmSetting.VIEW_AS_HTML],manageDirty:true,createView:function(o,n,a){\r
104765 AjxDispatcher.require("Alert");\r
104766 return new ZmMailPrefsPage(o,n,a)\r
104767 }}\r
104768 ,ACCOUNTS:{\r
104769 parentId:"MAIL",icon:"POPAccount",title:(appCtxt.isOffline?ZmMsg.personas:ZmMsg.accounts),templateId:"prefs.Pages#Accounts",priority:60,precondition:appCtxt.get(ZmSetting.MAIL_ENABLED),prefs:[ZmSetting.ACCOUNTS],manageDirty:true,createView:function(o,n,a){\r
104770 return new ZmAccountsPage(o,n,a)\r
104771 }}\r
104772 ,SIGNATURES:{\r
104773 parentId:"MAIL",icon:"AddSignature",title:ZmMsg.signatures,templateId:"prefs.Pages#Signatures",priority:30,precondition:(appCtxt.get(ZmSetting.MAIL_ENABLED)&&appCtxt.get(ZmSetting.SIGNATURES_ENABLED)),prefs:[ZmSetting.SIGNATURES,ZmSetting.SIGNATURE_STYLE,ZmSetting.SIGNATURE_ENABLED],manageDirty:true,createView:function(o,n,a){\r
104774 return new ZmSignaturesPage(o,n,a)\r
104775 }}\r
104776 ,FILTERS:{\r
104777 parentId:"MAIL",icon:"MailRule",title:ZmMsg.filterRules,templateId:"prefs.Pages#MailFilters",priority:70,precondition:(appCtxt.get(ZmSetting.MAIL_ENABLED)&&appCtxt.get(ZmSetting.FILTERS_ENABLED)),prefs:[ZmSetting.FILTERS],manageChanges:true,createView:function(o,n,a){\r
104778 return a.getFilterRulesController().getFilterRulesView()\r
104779 }}};\r
104780 for(var e in t){\r
104781 ZmPref.registerPrefSection(e,t[e])\r
104782 }\r
104783 ZmPref.registerPref("ACCOUNTS",{\r
104784 displayContainer:ZmPref.TYPE_CUSTOM}\r
104785 );\r
104786 ZmPref.registerPref("AUTO_SAVE_DRAFT_INTERVAL",{\r
104787 displayName:ZmMsg.autoSaveDrafts,displayContainer:ZmPref.TYPE_CHECKBOX,options:[0,ZmMailApp.DEFAULT_AUTO_SAVE_DRAFT_INTERVAL]}\r
104788 );\r
104789 ZmPref.registerPref("DEDUPE_MSG_TO_SELF",{\r
104790 displayName:ZmMsg.removeDupesToSelf,displayContainer:ZmPref.TYPE_RADIO_GROUP,displayOptions:[ZmMsg.dedupeNone,ZmMsg.dedupeSecondCopy,ZmMsg.dedupeAll],options:[ZmSetting.DEDUPE_NONE,ZmSetting.DEDUPE_SECOND,ZmSetting.DEDUPE_ALL]}\r
104791 );\r
104792 ZmPref.registerPref("DISPLAY_EXTERNAL_IMAGES",{\r
104793 displayName:ZmMsg.showExternalImages,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104794 );\r
104795 ZmPref.registerPref("END_DATE_ENABLED",{\r
104796 displayName:ZmMsg.endOn,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:ZmSetting.VACATION_MSG_FEATURE_ENABLED}\r
104797 );\r
104798 ZmPref.registerPref("GET_MAIL_ACTION",{\r
104799 displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_VERTICAL,displayOptions:[ZmMsg.checkMailPrefDefault,ZmMsg.checkMailPrefUpdate],options:[ZmSetting.GETMAIL_ACTION_DEFAULT,ZmSetting.GETMAIL_ACTION_UPDATE]}\r
104800 );\r
104801 ZmPref.registerPref("INITIAL_SEARCH",{\r
104802 displayName:ZmMsg.initialMailSearch,displayContainer:ZmPref.TYPE_INPUT,maxLength:ZmPref.MAX_LENGTH[ZmSetting.INITIAL_SEARCH],errorMessage:AjxMessageFormat.format(ZmMsg.invalidInitialSearch,ZmPref.MAX_LENGTH[ZmSetting.INITIAL_SEARCH]),precondition:ZmSetting.INITIAL_SEARCH_ENABLED}\r
104803 );\r
104804 ZmPref.registerPref("MAIL_BLACKLIST",{\r
104805 displayContainer:ZmPref.TYPE_CUSTOM}\r
104806 );\r
104807 ZmPref.registerPref("MAIL_FORWARDING_ADDRESS",{\r
104808 displayName:ZmMsg.mailForwardingAddress,displayContainer:ZmPref.TYPE_INPUT,validationFunction:ZmMailApp.validateForwardEmail,errorMessage:ZmMsg.invalidEmail,precondition:ZmSetting.MAIL_FORWARDING_ENABLED}\r
104809 );\r
104810 ZmPref.registerPref("MAIL_LIFETIME_INBOX_READ",{\r
104811 displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_HORIZONTAL,displayOptions:[ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationNever],options:[30,45,60,90,120,0],approximateFunction:ZmPref.approximateLifetimeInboxRead,displayFunction:ZmPref.durationDay2Int,valueFunction:ZmPref.int2DurationDay,validationFunction:ZmPref.validateLifetime}\r
104812 );\r
104813 ZmPref.registerPref("MAIL_LIFETIME_INBOX_UNREAD",{\r
104814 displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_HORIZONTAL,displayOptions:[ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationNever],options:[30,45,60,90,120,0],approximateFunction:ZmPref.approximateLifetimeInboxUnread,displayFunction:ZmPref.durationDay2Int,valueFunction:ZmPref.int2DurationDay,validationFunction:ZmPref.validateLifetime}\r
104815 );\r
104816 ZmPref.registerPref("MAIL_LIFETIME_JUNK",{\r
104817 displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_HORIZONTAL,displayOptions:ZmMsg.lifetimeDurationDays,options:[1,3,7,30],approximateFunction:ZmPref.approximateLifetimeJunk,displayFunction:ZmPref.durationDay2Int,valueFunction:ZmPref.int2DurationDay,validationFunction:ZmPref.validateLifetimeJunk}\r
104818 );\r
104819 ZmPref.registerPref("MAIL_LIFETIME_SENT",{\r
104820 displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_HORIZONTAL,displayOptions:[ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationDays,ZmMsg.lifetimeDurationNever],options:[30,45,60,90,120,0],approximateFunction:ZmPref.approximateLifetimeSent,displayFunction:ZmPref.durationDay2Int,valueFunction:ZmPref.int2DurationDay,validationFunction:ZmPref.validateLifetime}\r
104821 );\r
104822 ZmPref.registerPref("MAIL_LIFETIME_TRASH",{\r
104823 displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_HORIZONTAL,displayOptions:ZmMsg.lifetimeDurationDays,options:[1,3,7,30],approximateFunction:ZmPref.approximateLifetimeTrash,displayFunction:ZmPref.durationDay2Int,valueFunction:ZmPref.int2DurationDay,validationFunction:ZmPref.validateLifetimeTrash}\r
104824 );\r
104825 ZmPref.registerPref("MAIL_LOCAL_DELIVERY_DISABLED",{\r
104826 displayName:ZmMsg.mailDeliveryDisabled,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:ZmSetting.MAIL_FORWARDING_ENABLED,validationFunction:ZmMailApp.validateMailLocalDeliveryDisabled,errorMessage:ZmMsg.errorMissingFwdAddr}\r
104827 );\r
104828 ZmPref.registerPref("MAIL_NOTIFY_SOUNDS",{\r
104829 displayName:ZmMsg.playSound,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104830 );\r
104831 ZmPref.registerPref("MAIL_NOTIFY_APP",{\r
104832 displayName:ZmMsg.flashMailAppTab,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104833 );\r
104834 ZmPref.registerPref("MAIL_NOTIFY_BROWSER",{\r
104835 displayName:ZmMsg.flashBrowser,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104836 );\r
104837 ZmPref.registerPref("MAIL_SEND_READ_RECEIPTS",{\r
104838 displayContainer:ZmPref.TYPE_RADIO_GROUP,displayOptions:[ZmMsg.readReceiptNever,ZmMsg.readReceiptAlways,ZmMsg.readReceiptAsk],options:[ZmMailApp.SEND_RECEIPT_NEVER,ZmMailApp.SEND_RECEIPT_ALWAYS,ZmMailApp.SEND_RECEIPT_PROMPT],precondition:ZmSetting.MAIL_READ_RECEIPT_ENABLED}\r
104839 );\r
104840 ZmPref.registerPref("MAIL_WHITELIST",{\r
104841 displayContainer:ZmPref.TYPE_CUSTOM}\r
104842 );\r
104843 ZmPref.registerPref("NOTIF_ADDRESS",{\r
104844 displayName:ZmMsg.mailNotifAddress,displayContainer:ZmPref.TYPE_INPUT,validationFunction:ZmPref.validateEmail,errorMessage:ZmMsg.invalidEmail,precondition:ZmSetting.NOTIF_FEATURE_ENABLED}\r
104845 );\r
104846 ZmPref.registerPref("NOTIF_ENABLED",{\r
104847 displayName:ZmMsg.mailNotifEnabled,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:ZmSetting.NOTIF_FEATURE_ENABLED,validationFunction:ZmMailApp.validateSendNotification,errorMessage:ZmMsg.errorMissingNotifyAddr}\r
104848 );\r
104849 ZmPref.registerPref("OPEN_MAIL_IN_NEW_WIN",{\r
104850 displayName:ZmMsg.openMailNewWin,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:ZmSetting.DETACH_MAILVIEW_ENABLED}\r
104851 );\r
104852 ZmPref.registerPref("POP_DOWNLOAD_SINCE_VALUE",{\r
104853 displayContainer:ZmPref.TYPE_STATIC,precondition:ZmSetting.POP_ENABLED}\r
104854 );\r
104855 ZmPref.registerPref("POP_DOWNLOAD_SINCE",{\r
104856 displayContainer:ZmPref.TYPE_RADIO_GROUP,displayOptions:[ZmMsg.externalAccessPopDownloadAll,"*** NOT SHOWN ***",ZmMsg.externalAccessPopDownloadFromNow],options:[ZmMailApp.POP_DOWNLOAD_SINCE_ALL,ZmMailApp.POP_DOWNLOAD_SINCE_NO_CHANGE,ZmMailApp.POP_DOWNLOAD_SINCE_FROM_NOW],displayFunction:ZmPref.downloadSinceDisplay,valueFunction:ZmPref.downloadSinceValue,precondition:ZmSetting.POP_ENABLED}\r
104857 );\r
104858 ZmPref.registerPref("REPLY_TO_ADDRESS",{\r
104859 displayName:ZmMsg.replyToAddress,displayContainer:ZmPref.TYPE_INPUT,validationFunction:ZmPref.validateEmail,errorMessage:ZmMsg.invalidEmail}\r
104860 );\r
104861 ZmPref.registerPref("SELECT_AFTER_DELETE",{\r
104862 displayName:ZmMsg.clientType,displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_VERTICAL,displayOptions:[ZmMsg.selectNext,ZmMsg.selectPrevious,ZmMsg.selectAdapt],options:[ZmSetting.DELETE_SELECT_NEXT,ZmSetting.DELETE_SELECT_PREV,ZmSetting.DELETE_SELECT_ADAPT]}\r
104863 );\r
104864 ZmPref.registerPref("SIGNATURE",{\r
104865 displayName:ZmMsg.signature,displayContainer:ZmPref.TYPE_TEXTAREA,maxLength:ZmPref.MAX_LENGTH[ZmSetting.SIGNATURE],errorMessage:AjxMessageFormat.format(ZmMsg.invalidSignature,ZmPref.MAX_LENGTH[ZmSetting.SIGNATURE])}\r
104866 );\r
104867 ZmPref.registerPref("SIGNATURE_ENABLED",{\r
104868 displayName:ZmMsg.signatureEnabled,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104869 );\r
104870 ZmPref.registerPref("SIGNATURE_STYLE",{\r
104871 displayName:ZmMsg.signatureStyle,displayContainer:ZmPref.TYPE_RADIO_GROUP,orientation:ZmPref.ORIENT_HORIZONTAL,displayOptions:[ZmMsg.aboveQuotedText,ZmMsg.atBottomOfMessage],options:[ZmSetting.SIG_OUTLOOK,ZmSetting.SIG_INTERNET]}\r
104872 );\r
104873 ZmPref.registerPref("SIGNATURES",{\r
104874 displayContainer:ZmPref.TYPE_CUSTOM}\r
104875 );\r
104876 ZmPref.registerPref("START_DATE_ENABLED",{\r
104877 displayContainer:ZmPref.TYPE_CHECKBOX,displayName:ZmMsg.startOn,precondition:ZmSetting.VACATION_MSG_FEATURE_ENABLED}\r
104878 );\r
104879 ZmPref.registerPref("VACATION_FROM",{\r
104880 displayName:ZmMsg.startDate,displayContainer:ZmPref.TYPE_INPUT,precondition:ZmSetting.VACATION_MSG_FEATURE_ENABLED,displayFunction:ZmPref.dateGMT2Local,valueFunction:ZmPref.dateLocal2GMT}\r
104881 );\r
104882 ZmPref.registerPref("VACATION_UNTIL",{\r
104883 displayName:ZmMsg.endDate,displayContainer:ZmPref.TYPE_INPUT,precondition:ZmSetting.VACATION_MSG_FEATURE_ENABLED,displayFunction:ZmPref.dateGMT2Local,valueFunction:ZmPref.dateLocal2GMT}\r
104884 );\r
104885 ZmPref.registerPref("VACATION_MSG",{\r
104886 displayName:ZmMsg.awayMessage,displayContainer:ZmPref.TYPE_TEXTAREA,maxLength:ZmPref.MAX_LENGTH[ZmSetting.AWAY_MESSAGE],errorMessage:AjxMessageFormat.format(ZmMsg.invalidAwayMessage,ZmPref.MAX_LENGTH[ZmSetting.AWAY_MESSAGE]),precondition:ZmSetting.VACATION_MSG_FEATURE_ENABLED,validationFunction:ZmMailApp.validateVacationMsg}\r
104887 );\r
104888 ZmPref.registerPref("VACATION_MSG_ENABLED",{\r
104889 displayName:ZmMsg.awayMessageEnabled,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:ZmSetting.VACATION_MSG_FEATURE_ENABLED,validationFunction:ZmMailApp.validateVacationMsgEnabled,errorMessage:ZmMsg.missingAwayMessage}\r
104890 );\r
104891 ZmPref.registerPref("MAIL_NOTIFY_TOASTER",{\r
104892 displayFunc:function(){\r
104893 AjxDispatcher.require("Alert");\r
104894 return ZmDesktopAlert.getInstance().getDisplayText()\r
104895 }\r
104896 ,displayContainer:ZmPref.TYPE_CHECKBOX}\r
104897 )\r
104898 };\r
104899 ZmMailApp.validateForwardEmail=function(t){\r
104900 if(!t||t==""){\r
104901 var o=ZmPref.getPrefSectionWithPref(ZmSetting.MAIL_FORWARDING_ADDRESS);\r
104902 if(!o){\r
104903 return false\r
104904 }\r
104905 var e=appCtxt.getApp(ZmApp.PREFERENCES).getPrefController().getPrefsView();\r
104906 var a=e.getView(o.id).getFormObject(ZmSetting.MAIL_LOCAL_DELIVERY_DISABLED);\r
104907 if(a&&a.isSelected()){\r
104908 a.setSelected(false)\r
104909 }}\r
104910 return ZmPref.validateEmail(t)\r
104911 };\r
104912 ZmMailApp.validateMailLocalDeliveryDisabled=function(a){\r
104913 if(!a){\r
104914 return true\r
104915 }\r
104916 var o=ZmPref.getPrefSectionWithPref(ZmSetting.MAIL_FORWARDING_ADDRESS);\r
104917 if(!o){\r
104918 return false\r
104919 }\r
104920 var e=appCtxt.getApp(ZmApp.PREFERENCES).getPrefController().getPrefsView();\r
104921 var t=e.getView(o.id).getFormObject(ZmSetting.MAIL_FORWARDING_ADDRESS);\r
104922 return(t!=null&&t.isValid())\r
104923 };\r
104924 ZmMailApp.validateSendNotification=function(a){\r
104925 if(!a){\r
104926 return true\r
104927 }\r
104928 var o=ZmPref.getPrefSectionWithPref(ZmSetting.NOTIF_ADDRESS);\r
104929 if(!o){\r
104930 return false\r
104931 }\r
104932 var e=appCtxt.getApp(ZmApp.PREFERENCES).getPrefController().getPrefsView();\r
104933 var t=e.getView(o.id).getFormObject(ZmSetting.NOTIF_ADDRESS);\r
104934 return(t!=null&&t.isValid())\r
104935 };\r
104936 ZmMailApp.validateVacationMsg=function(a){\r
104937 if(a&&(a.length>0)){\r
104938 return true\r
104939 }\r
104940 var o=ZmPref.getPrefSectionWithPref(ZmSetting.VACATION_MSG_ENABLED);\r
104941 if(!o){\r
104942 return false\r
104943 }\r
104944 var e=appCtxt.getApp(ZmApp.PREFERENCES).getPrefController().getPrefsView();\r
104945 var t=e.getView(o.id).getFormObject(ZmSetting.VACATION_MSG_ENABLED);\r
104946 return(t&&!t.isSelected())\r
104947 };\r
104948 ZmMailApp.validateVacationMsgEnabled=function(a){\r
104949 if(!a){\r
104950 return true\r
104951 }\r
104952 var n=ZmPref.getPrefSectionWithPref(ZmSetting.VACATION_MSG);\r
104953 if(!n){\r
104954 return false\r
104955 }\r
104956 var e=appCtxt.getApp(ZmApp.PREFERENCES).getPrefController().getPrefsView();\r
104957 var t=e.getView(n.id).getFormObject(ZmSetting.VACATION_MSG);\r
104958 if(!t){\r
104959 return false\r
104960 }\r
104961 var o=t.getValue();\r
104962 return(o&&(o.length>0))\r
104963 };\r
104964 ZmMailApp.prototype._registerOperations=function(){\r
104965 ZmOperation.registerOp(ZmId.OP_ADD_FILTER_RULE,{\r
104966 textKey:"newFilter",image:"Plus"}\r
104967 ,ZmSetting.FILTERS_ENABLED);\r
104968 ZmOperation.registerOp(ZmId.OP_ADD_SIGNATURE,{\r
104969 textKey:"signature",image:"AddSignature",tooltipKey:"chooseSignature"}\r
104970 ,ZmSetting.SIGNATURES_ENABLED);\r
104971 ZmOperation.registerOp(ZmId.OP_CHECK_MAIL,{\r
104972 textKey:"checkMail",tooltipKey:"checkMailPrefDefault",image:"Refresh",textPrecedence:90}\r
104973 );\r
104974 ZmOperation.registerOp(ZmId.OP_CHECK_MAIL_DEFAULT,{\r
104975 textKey:"checkMailDefault"}\r
104976 );\r
104977 ZmOperation.registerOp(ZmId.OP_CHECK_MAIL_UPDATE,{\r
104978 textKey:"checkMailUpdate"}\r
104979 );\r
104980 ZmOperation.registerOp(ZmId.OP_COMPOSE_OPTIONS,{\r
104981 textKey:"options",image:"Preferences"}\r
104982 );\r
104983 ZmOperation.registerOp(ZmId.OP_CREATE_APPT,{\r
104984 textKey:"createAppt",image:"NewAppointment"}\r
104985 ,ZmSetting.CALENDAR_ENABLED);\r
104986 ZmOperation.registerOp(ZmId.OP_CREATE_TASK,{\r
104987 textKey:"createTask",image:"NewTask"}\r
104988 ,ZmSetting.TASKS_ENABLED);\r
104989 ZmOperation.registerOp(ZmId.OP_DELETE_CONV,{\r
104990 textKey:"delConv",image:"DeleteConversation"}\r
104991 ,ZmSetting.CONVERSATIONS_ENABLED);\r
104992 ZmOperation.registerOp(ZmId.OP_DELETE_MSG,{\r
104993 textKey:"delMsg",image:"DeleteMessage"}\r
104994 );\r
104995 ZmOperation.registerOp(ZmId.OP_DELETE_MENU,{\r
104996 tooltipKey:"deleteTooltip",image:"Delete"}\r
104997 );\r
104998 ZmOperation.registerOp(ZmId.OP_DETACH_COMPOSE,{\r
104999 tooltipKey:"detachTooltip",image:"OpenInNewWindow"}\r
105000 );\r
105001 ZmOperation.registerOp(ZmId.OP_DRAFT,null,ZmSetting.SAVE_DRAFT_ENABLED);\r
105002 ZmOperation.registerOp(ZmId.OP_EDIT_FILTER_RULE,{\r
105003 textKey:"filterEdit",image:"Edit"}\r
105004 ,ZmSetting.FILTERS_ENABLED);\r
105005 ZmOperation.registerOp(ZmId.OP_FORWARD,{\r
105006 textKey:"forward",tooltipKey:"forwardTooltip",image:"Forward",shortcut:ZmKeyMap.FORWARD,textPrecedence:46}\r
105007 );\r
105008 ZmOperation.registerOp(ZmId.OP_FORWARD_ATT,{\r
105009 textKey:"forwardAtt",tooltipKey:"forwardAtt",image:"Forward"}\r
105010 );\r
105011 ZmOperation.registerOp(ZmId.OP_FORWARD_INLINE,{\r
105012 textKey:"forwardInline",tooltipKey:"forwardTooltip",image:"Forward"}\r
105013 );\r
105014 ZmOperation.registerOp(ZmId.OP_IM,{\r
105015 textKey:"newIM",image:"ImStartChat",tooltipKey:"imNewChat"}\r
105016 ,ZmSetting.IM_ENABLED);\r
105017 ZmOperation.registerOp(ZmId.OP_INC_ATTACHMENT,{\r
105018 textKey:"includeMenuAttachment"}\r
105019 );\r
105020 ZmOperation.registerOp(ZmId.OP_INC_NONE,{\r
105021 textKey:"includeMenuNone"}\r
105022 );\r
105023 ZmOperation.registerOp(ZmId.OP_INC_NO_PREFIX,{\r
105024 textKey:"includeMenuNoPrefix"}\r
105025 );\r
105026 ZmOperation.registerOp(ZmId.OP_INC_PREFIX,{\r
105027 textKey:"includeMenuPrefix"}\r
105028 );\r
105029 ZmOperation.registerOp(ZmId.OP_INC_PREFIX_FULL,{\r
105030 textKey:"includeMenuPrefixFull"}\r
105031 );\r
105032 ZmOperation.registerOp(ZmId.OP_INC_SMART,{\r
105033 textKey:"includeMenuSmart"}\r
105034 );\r
105035 ZmOperation.registerOp(ZmId.OP_MARK_READ,{\r
105036 textKey:"markAsRead",image:"ReadMessage",shortcut:ZmKeyMap.MARK_READ}\r
105037 );\r
105038 ZmOperation.registerOp(ZmId.OP_MARK_UNREAD,{\r
105039 textKey:"markAsUnread",image:"UnreadMessage",shortcut:ZmKeyMap.MARK_UNREAD}\r
105040 );\r
105041 ZmOperation.registerOp(ZmId.OP_MOVE_DOWN_FILTER_RULE,{\r
105042 textKey:"filterMoveDown",image:"DownArrow"}\r
105043 ,ZmSetting.FILTERS_ENABLED);\r
105044 ZmOperation.registerOp(ZmId.OP_MOVE_UP_FILTER_RULE,{\r
105045 textKey:"filterMoveUp",image:"UpArrow"}\r
105046 ,ZmSetting.FILTERS_ENABLED);\r
105047 ZmOperation.registerOp(ZmId.OP_NEW_MESSAGE,{\r
105048 textKey:"newEmail",tooltipKey:"newMessageTooltip",image:"NewMessage",shortcut:ZmKeyMap.NEW_MESSAGE}\r
105049 );\r
105050 ZmOperation.registerOp(ZmId.OP_NEW_MESSAGE_WIN,{\r
105051 textKey:"newEmail",tooltipKey:"newMessageTooltip",image:"NewMessage",shortcut:ZmKeyMap.NEW_MESSAGE_WIN}\r
105052 );\r
105053 ZmOperation.registerOp(ZmId.OP_REMOVE_FILTER_RULE,{\r
105054 textKey:"filterRemove",image:"Delete"}\r
105055 ,ZmSetting.FILTERS_ENABLED);\r
105056 ZmOperation.registerOp(ZmId.OP_REPLY,{\r
105057 textKey:"reply",tooltipKey:"replyTooltip",image:"Reply",shortcut:ZmKeyMap.REPLY,textPrecedence:50}\r
105058 );\r
105059 ZmOperation.registerOp(ZmId.OP_REPLY_ACCEPT,{\r
105060 textKey:"replyAccept",image:"Check"}\r
105061 );\r
105062 ZmOperation.registerOp(ZmId.OP_REPLY_ALL,{\r
105063 textKey:"replyAll",tooltipKey:"replyAllTooltip",image:"ReplyAll",shortcut:ZmKeyMap.REPLY_ALL,textPrecedence:48}\r
105064 );\r
105065 ZmOperation.registerOp(ZmId.OP_REPLY_CANCEL);\r
105066 ZmOperation.registerOp(ZmId.OP_REPLY_DECLINE,{\r
105067 textKey:"replyDecline",image:"Cancel"}\r
105068 );\r
105069 ZmOperation.registerOp(ZmId.OP_REPLY_MODIFY);\r
105070 ZmOperation.registerOp(ZmId.OP_REPLY_NEW_TIME,{\r
105071 textKey:"replyNewTime",image:"NewTime"}\r
105072 );\r
105073 ZmOperation.registerOp(ZmId.OP_REPLY_TENTATIVE,{\r
105074 textKey:"replyTentative",image:"QuestionMark"}\r
105075 );\r
105076 ZmOperation.registerOp(ZmId.OP_REQUEST_READ_RECEIPT,{\r
105077 textKey:"requestReadReceipt",image:"ReadMessage"}\r
105078 );\r
105079 ZmOperation.registerOp(ZmId.OP_RUN_FILTER_RULE,{\r
105080 textKey:"filterRun",image:"SwitchFormat"}\r
105081 ,ZmSetting.FILTERS_ENABLED);\r
105082 ZmOperation.registerOp(ZmId.OP_SAVE_DRAFT,{\r
105083 textKey:"saveDraft",tooltipKey:"saveDraftTooltip",image:"DraftFolder",shortcut:ZmKeyMap.SAVE}\r
105084 ,ZmSetting.SAVE_DRAFT_ENABLED);\r
105085 ZmOperation.registerOp(ZmId.OP_SHOW_BCC,{\r
105086 textKey:"showBcc"}\r
105087 );\r
105088 ZmOperation.registerOp(ZmId.OP_SHOW_ONLY_MAIL,{\r
105089 textKey:"showOnlyMail",image:"Conversation"}\r
105090 ,ZmSetting.MIXED_VIEW_ENABLED);\r
105091 ZmOperation.registerOp(ZmId.OP_SHOW_ORIG,{\r
105092 textKey:"showOrig",image:"Message"}\r
105093 );\r
105094 ZmOperation.registerOp(ZmId.OP_SPAM,{\r
105095 textKey:"junk",tooltipKey:"junkTooltip",image:"JunkMail",shortcut:ZmKeyMap.SPAM,textPrecedence:70}\r
105096 ,ZmSetting.SPAM_ENABLED);\r
105097 ZmOperation.registerOp(ZmId.OP_RESET,{\r
105098 textKey:"reset",image:"Refresh",tooltipKey:"refreshFilters"}\r
105099 )\r
105100 };\r
105101 ZmMailApp.prototype._registerItems=function(){\r
105102 ZmItem.registerItem(ZmItem.CONV,{\r
105103 app:ZmApp.MAIL,nameKey:"conversation",pluralNameKey:"conversations",icon:"Conversation",soapCmd:"ConvAction",itemClass:"ZmConv",node:"c",organizer:ZmOrganizer.FOLDER,dropTargets:[ZmOrganizer.FOLDER,ZmOrganizer.TAG,ZmOrganizer.ZIMLET],searchType:"conversation",resultsList:AjxCallback.simpleClosure(function(e){\r
105104 AjxDispatcher.require("MailCore");\r
105105 return new ZmMailList(ZmItem.CONV,e)\r
105106 }\r
105107 ,this)}\r
105108 );\r
105109 ZmItem.registerItem(ZmItem.MSG,{\r
105110 app:ZmApp.MAIL,nameKey:"message",pluralNameKey:"messages",icon:"Message",soapCmd:"MsgAction",itemClass:"ZmMailMsg",node:"m",organizer:ZmOrganizer.FOLDER,dropTargets:[ZmOrganizer.FOLDER,ZmOrganizer.TAG,ZmOrganizer.ZIMLET],searchType:"message",resultsList:AjxCallback.simpleClosure(function(e){\r
105111 AjxDispatcher.require("MailCore");\r
105112 return new ZmMailList(ZmItem.MSG,e)\r
105113 }\r
105114 ,this)}\r
105115 );\r
105116 ZmItem.registerItem(ZmItem.ATT,{\r
105117 app:ZmApp.MAIL,nameKey:"attachment",icon:"Attachment",itemClass:"ZmMimePart",node:"mp",resultsList:AjxCallback.simpleClosure(function(e){\r
105118 return new ZmMailList(ZmItem.ATT,e)\r
105119 }\r
105120 ,this)}\r
105121 )\r
105122 };\r
105123 ZmMailApp.prototype._setupSearchToolbar=function(){\r
105124 if(appCtxt.get(ZmSetting.MAIL_ENABLED)){\r
105125 ZmSearchToolBar.addMenuItem(ZmId.SEARCH_MAIL,{\r
105126 msgKey:"searchMail",tooltipKey:"searchMail",icon:"Message",shareIcon:"SharedMailFolder",id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.SEARCH_MAIL)}\r
105127 )\r
105128 }};\r
105129 ZmMailApp.prototype._registerApp=function(){\r
105130 var t={};\r
105131 t[ZmOperation.NEW_MESSAGE]="message";\r
105132 var e={};\r
105133 e[ZmKeyMap.NEW_MESSAGE]=ZmOperation.NEW_MESSAGE;\r
105134 e[ZmKeyMap.NEW_MESSAGE_WIN]=ZmOperation.NEW_MESSAGE_WIN;\r
105135 ZmApp.registerApp(ZmApp.MAIL,{\r
105136 mainPkg:"MailCore",nameKey:"mail",icon:"MailApp",textPrecedence:70,chooserTooltipKey:"goToMail",viewTooltipKey:"displayMailToolTip",defaultSearch:appCtxt.isChildWindow?null:ZmId.SEARCH_MAIL,organizer:ZmOrganizer.FOLDER,overviewTrees:[ZmOrganizer.FOLDER,ZmOrganizer.SEARCH,ZmOrganizer.TAG],assistants:{\r
105137 ZmMailAssistant:"Mail"}\r
105138 ,searchTypes:[ZmItem.MSG,ZmItem.CONV],newItemOps:t,actionCodes:e,gotoActionCode:ZmKeyMap.GOTO_MAIL,newActionCode:ZmKeyMap.NEW_MESSAGE,qsViews:["compose","msg"],trashViewOp:ZmOperation.SHOW_ONLY_MAIL,chooserSort:10,defaultSort:10,upsellUrl:ZmSetting.MAIL_UPSELL_URL}\r
105139 )\r
105140 };\r
105141 ZmMailApp.prototype.startup=function(e){};\r
105142 ZmMailApp.prototype.preNotify=function(u){\r
105143 if(!(u.deleted&&u.created&&u.modified)){\r
105144 return u\r
105145 }\r
105146 var n=false;\r
105147 var s=u.deleted.id.split(",");\r
105148 var p={};\r
105149 var h=[];\r
105150 for(var j=0;\r
105151 j<s.length;\r
105152 j++){\r
105153 var w=s[j];\r
105154 var g=ZmOrganizer.normalizeId(w);\r
105155 if(g<0){\r
105156 p[g]=true;\r
105157 n=true\r
105158 }else{\r
105159 h.push(w)\r
105160 }}\r
105161 if(!n){\r
105162 return u\r
105163 }\r
105164 var m=false;\r
105165 var t=ZmRequestMgr._getObjList(u.created);\r
105166 var f={};\r
105167 var l={};\r
105168 for(var j=0;\r
105169 j<t.length;\r
105170 j++){\r
105171 var c=t[j];\r
105172 var w=c.id;\r
105173 var O=c._name;\r
105174 if(O=="m"){\r
105175 f[w]=c\r
105176 }else{\r
105177 if(O=="c"&&(c.n>1)){\r
105178 l[w]=c;\r
105179 m=true\r
105180 }}}\r
105181 if(!m){\r
105182 return u\r
105183 }\r
105184 var x=false;\r
105185 var q={};\r
105186 var z=ZmRequestMgr._getObjList(u.modified);\r
105187 var d={};\r
105188 for(var j=0;\r
105189 j<z.length;\r
105190 j++){\r
105191 var T=z[j];\r
105192 var w=T.id;\r
105193 var g=ZmOrganizer.normalizeId(w);\r
105194 var O=T._name;\r
105195 if(O=="m"){\r
105196 var e=g*-1;\r
105197 if(p[e]&&l[T.cid]){\r
105198 x=true;\r
105199 d[w]=T;\r
105200 q[T.cid]=appCtxt.multiAccounts?ZmOrganizer.getSystemId(e):e;\r
105201 l[T.cid]._wasVirtConv=true;\r
105202 l[T.cid].m=[{\r
105203 id:w}\r
105204 ];\r
105205 var o=appCtxt.getById(w);\r
105206 if(o){\r
105207 o.cid=T.cid\r
105208 }}}}\r
105209 if(!x){\r
105210 return u\r
105211 }\r
105212 if(h.length){\r
105213 u.deleted.id=h.join(",")\r
105214 }else{\r
105215 delete u.deleted\r
105216 }\r
105217 for(var w in f){\r
105218 var y=f[w];\r
105219 var b=l[y.cid];\r
105220 if(b&&b._wasVirtConv){\r
105221 y._convCreateNode=b\r
105222 }}\r
105223 var v=[];\r
105224 for(var r in q){\r
105225 var k=l[r];\r
105226 k.id=q[r];\r
105227 k._newId=r;\r
105228 v.push(k)\r
105229 }\r
105230 if(v.length){\r
105231 var a={};\r
105232 a.c=v;\r
105233 appCtxt.getRequestMgr()._handleModifies(a)\r
105234 }};\r
105235 ZmMailApp.prototype.createNotify=function(o,s){\r
105236 var e=o.m;\r
105237 if(!e&&!o.c&&!o.link){\r
105238 return\r
105239 }\r
105240 if(!s&&!this._noDefer&&this._deferNotifications("create",o)){\r
105241 return\r
105242 }\r
105243 if(o.link){\r
105244 var n=o.link;\r
105245 for(var a=0;\r
105246 a<n.length;\r
105247 a++){\r
105248 var t=n[a];\r
105249 if(appCtxt.cacheGet(t.id)){\r
105250 continue\r
105251 }\r
105252 this._handleCreateLink(t,ZmOrganizer.FOLDER)\r
105253 }}\r
105254 if(this._tradController&&(appCtxt.getCurrentController()==this._tradController)){\r
105255 this._checkList(o,this._tradController.getList(),this._tradController)\r
105256 }else{\r
105257 if(this._convListController){\r
105258 this._checkList(o,this._convListController.getList(),this._convListController)\r
105259 }\r
105260 if(this._convController){\r
105261 this._checkList(o,this._convController.getList(),this._convController)\r
105262 }}\r
105263 this._handleAlerts(o)\r
105264 };\r
105265 ZmMailApp.prototype._handleAlerts=function(h){\r
105266 var l=h.m||[];\r
105267 if(l.length==0){\r
105268 return\r
105269 }\r
105270 AjxDispatcher.require("Alert");\r
105271 var o=appCtxt.getActiveAccount();\r
105272 var a,f,p=false;\r
105273 var n=0;\r
105274 for(var s=0;\r
105275 s<l.length;\r
105276 s++){\r
105277 var u=l[s];\r
105278 var e=(u&&u.f&&(u.f.indexOf(ZmItem.FLAG_UNREAD)!=-1))?ZmOrganizer.parseId(u.l):null;\r
105279 if(e&&e.id==ZmOrganizer.ID_INBOX){\r
105280 var c=e.account;\r
105281 if(!c||(c&&c.isOfflineInitialSync())){\r
105282 continue\r
105283 }\r
105284 if(appCtxt.accountList.size(true)>1){\r
105285 ZmAccountAlert.get(c).start(this)\r
105286 }\r
105287 if(!a&&c==o&&appCtxt.get(ZmSetting.MAIL_NOTIFY_APP,null,c)){\r
105288 this.startAlert();\r
105289 a=true\r
105290 }\r
105291 if(!f&&appCtxt.get(ZmSetting.MAIL_NOTIFY_SOUNDS,null,c)){\r
105292 ZmSoundAlert.getInstance().start();\r
105293 f=true\r
105294 }\r
105295 if(!p&&appCtxt.get(ZmSetting.MAIL_NOTIFY_BROWSER,null,c)){\r
105296 ZmBrowserAlert.getInstance().start(ZmMsg.newMessage);\r
105297 p=true\r
105298 }\r
105299 if(appCtxt.get(ZmSetting.MAIL_NOTIFY_TOASTER,null,c)&&n<5){\r
105300 var t=appCtxt.getById(u.id)||ZmMailMsg.createFromDom(u,{}\r
105301 );\r
105302 var g=(t.subject)?([t.subject," - ",(t.fragment||"")].join("")):(t.fragment||"");\r
105303 var m=t.getAddress(AjxEmailAddress.FROM);\r
105304 var r=m.getName()||m.getAddress();\r
105305 var d=(appCtxt.accountList.size(true)>1)?AjxMessageFormat.format(ZmMsg.newMailWithAccount,[r,c.getDisplayName()]):AjxMessageFormat.format(ZmMsg.newMail,r);\r
105306 ZmDesktopAlert.getInstance().start(d,g);\r
105307 n++\r
105308 }}}};\r
105309 ZmMailApp.prototype._checkList=function(r,s,n){\r
105310 if(!(s&&s instanceof ZmMailList)){\r
105311 return\r
105312 }\r
105313 var o={};\r
105314 var h={};\r
105315 var t={};\r
105316 if(!(s.search&&s.search.matches)&&(n!=this._convController)){\r
105317 return\r
105318 }\r
105319 var c=s.search.sortBy;\r
105320 var e=this._checkType(r,ZmItem.CONV,o,s,c);\r
105321 var a=this._checkType(r,ZmItem.MSG,h,s,c,o);\r
105322 if(e.gotMail||a.gotMail){\r
105323 s.notifyCreate(o,h)\r
105324 }\r
105325 if(e.hasMore||a.hasMore){\r
105326 var n;\r
105327 var l=appCtxt.getAppViewMgr().getCurrentViewId();\r
105328 if(l==ZmId.VIEW_CONVLIST){\r
105329 n=this.getConvListController()\r
105330 }else{\r
105331 if(l==ZmId.VIEW_TRAD){\r
105332 n=this.getTradController()\r
105333 }}\r
105334 if(n){\r
105335 n.setHasMore(true)\r
105336 }}};\r
105337 ZmMailApp.prototype._checkType=function(creates,type,items,currList,sortBy,convs){\r
105338 var result={\r
105339 gotMail:false,hasMore:false};\r
105340 var nodeName=ZmList.NODE[type];\r
105341 var list=creates[nodeName];\r
105342 if(!(list&&list.length)){\r
105343 return result\r
105344 }\r
105345 var throttle=appCtxt.isOffline&&appCtxt.getActiveAccount().isOfflineInitialSync();\r
105346 if(throttle){\r
105347 if(!this._maxEntries){\r
105348 var mlv=this.getMailListController().getReferenceView().getMailListView();\r
105349 this._maxEntries=mlv&&mlv.calculateMaxEntries()\r
105350 }\r
105351 if(this.numEntries>this._maxEntries){\r
105352 result.hasMore=true;\r
105353 return result\r
105354 }}\r
105355 for(var i=0;\r
105356 i<list.length;\r
105357 i++){\r
105358 var create=list[i];\r
105359 if(create._handled){\r
105360 continue\r
105361 }\r
105362 create._handled=true;\r
105363 if(currList.getById(create.id)||create._wasVirtConv){\r
105364 continue\r
105365 }\r
105366 if(currList.type==ZmItem.MSG&&type==ZmItem.CONV){\r
105367 continue\r
105368 }\r
105369 if(appCtxt.isOffline){\r
105370 if((ZmList.ITEM_TYPE[nodeName]!=currList.type)&&(currList.type!=ZmItem.CONV)){\r
105371 continue\r
105372 }}\r
105373 if(throttle&&this.numEntries>this._maxEntries){\r
105374 result.hasMore=true;\r
105375 break\r
105376 }\r
105377 var itemClass=eval(ZmList.ITEM_CLASS[type]);\r
105378 var item=itemClass.createFromDom(create,{}\r
105379 ,true);\r
105380 items[item.id]=item;\r
105381 result.gotMail=true\r
105382 }\r
105383 return result\r
105384 };\r
105385 ZmMailApp.prototype.postNotify=function(e){\r
105386 var t=this._checkReplenishListView;\r
105387 if(t&&!t._isPageless){\r
105388 t._checkReplenish();\r
105389 this._checkReplenishListView=null\r
105390 }};\r
105391 ZmMailApp.prototype.refresh=function(a){\r
105392 var h=appCtxt.getById(ZmFolder.ID_INBOX);\r
105393 if(h){\r
105394 this.setNewMailNotice(h)\r
105395 }\r
105396 if(!appCtxt.inStartup){\r
105397 this.resetOverview(this.getOverviewId());\r
105398 var n=appCtxt.currentRequestParams;\r
105399 if(appCtxt.getCurrentAppName()==this._name&&n.resend&&n.methodName=="NoOpRequest"){\r
105400 var e=appCtxt.getCurrentViewId();\r
105401 if(e==ZmId.VIEW_CONVLIST||e==ZmId.VIEW_TRAD){\r
105402 appCtxt.getSearchController().redoSearch(this.currentSearch)\r
105403 }}}\r
105404 if(appCtxt.get(ZmSetting.MAIL_ATTACH_VIEW_ENABLED)){\r
105405 var o=appCtxt.getFolderTree();\r
105406 if(!o.getById(ZmFolder.ID_ATTACHMENTS)){\r
105407 var t=appCtxt.getById(ZmOrganizer.ID_ROOT);\r
105408 var r={\r
105409 id:ZmFolder.ID_ATTACHMENTS,parent:t,tree:t.tree,type:ZmOrganizer.FOLDER,numTotal:1};\r
105410 var s=new ZmFolder(r);\r
105411 t.children.add(s);\r
105412 s._notify(ZmEvent.E_CREATE)\r
105413 }}};\r
105414 ZmMailApp.prototype.handleOp=function(n,o){\r
105415 var t=false;\r
105416 var a=true;\r
105417 switch(n){\r
105418 case ZmOperation.NEW_MESSAGE_WIN:t=true;\r
105419 a=false;\r
105420 case ZmOperation.NEW_MESSAGE:if(!t){\r
105421 t=this._inNewWindow(o&&o.ev);\r
105422 a=false\r
105423 }\r
105424 var e=new AjxCallback(this,this._handleLoadNewMessage,[t]);\r
105425 AjxDispatcher.require(["ContactsCore","Contacts"],false,e,null,a);\r
105426 break\r
105427 }};\r
105428 ZmMailApp.prototype._handleLoadNewMessage=function(e){\r
105429 AjxDispatcher.run("Compose",{\r
105430 action:ZmOperation.NEW_MESSAGE,inNewWindow:e}\r
105431 )\r
105432 };\r
105433 ZmMailApp.prototype.getOverviewPanelContent=function(){\r
105434 var t=!this._overviewPanelContent;\r
105435 var e=ZmApp.prototype.getOverviewPanelContent.apply(this,arguments);\r
105436 if(t){\r
105437 appCtxt.getSearchController().updateOverview()\r
105438 }\r
105439 return e\r
105440 };\r
105441 ZmMailApp.prototype.getOverviewContainer=function(){\r
105442 var t=!this._overviewContainer;\r
105443 var e=ZmApp.prototype.getOverviewContainer.apply(this,arguments);\r
105444 if(t){\r
105445 appCtxt.getSearchController().updateOverview()\r
105446 }\r
105447 return e\r
105448 };\r
105449 ZmMailApp.prototype.launch=function(n,r){\r
105450 this._groupBy[appCtxt.getActiveAccount().name]=appCtxt.get(ZmSetting.GROUP_MAIL_BY);\r
105451 var a;\r
105452 n=n||{};\r
105453 if(n.qsParams){\r
105454 var e=n.qsParams.view,s=n.qsParams.id;\r
105455 if(e=="compose"){\r
105456 this._showComposeView(r);\r
105457 return\r
105458 }else{\r
105459 if(s){\r
105460 e=e||"msg";\r
105461 if(e=="list"){\r
105462 a=["item:",s].join("");\r
105463 n.searchResponse=null;\r
105464 this._forceMsgView=true\r
105465 }else{\r
105466 if(e=="msg"){\r
105467 var o=new ZmMailMsg(s,null,true);\r
105468 var t={\r
105469 getHtml:appCtxt.get(ZmSetting.VIEW_AS_HTML),markRead:(appCtxt.get(ZmSetting.MARK_MSG_READ)==ZmSetting.MARK_READ_NOW),callback:new AjxCallback(this,this._handleResponseMsgLoad,[o,r]),errorCallback:new AjxCallback(this,this._handleErrorMsgLoad,r)};\r
105470 o.load(t);\r
105471 return\r
105472 }}}}}else{\r
105473 if(appCtxt.get(ZmSetting.OFFLINE_SUPPORTS_MAILTO)&&!appCtxt.multiAccounts){\r
105474 if(appCtxt.getAppController().handleOfflineMailTo(location.search,r)){\r
105475 return\r
105476 }}}\r
105477 this.mailSearch(a,r,n.searchResponse)\r
105478 };\r
105479 ZmMailApp.prototype._handleErrorLaunch=function(t,e){\r
105480 if(e.code==ZmCsfeException.MAIL_NO_SUCH_FOLDER||e.code==ZmCsfeException.MAIL_NO_SUCH_TAG||e.code==ZmCsfeException.MAIL_QUERY_PARSE_ERROR){\r
105481 var a={\r
105482 query:"in:inbox",callback:t.callback,errorCallback:null,types:t.types};\r
105483 appCtxt.getSearchController().search(a)\r
105484 }};\r
105485 ZmMailApp.prototype._handleErrorMsgLoad=function(t,e){\r
105486 this.mailSearch();\r
105487 if(t){\r
105488 t.run()\r
105489 }\r
105490 this._notifyRendered();\r
105491 return false\r
105492 };\r
105493 ZmMailApp.prototype._handleResponseMsgLoad=function(t,a){\r
105494 AjxDispatcher.require("Startup2");\r
105495 var e=AjxDispatcher.run("GetMsgController");\r
105496 if(e){\r
105497 e.show(t);\r
105498 if(a){\r
105499 a.run()\r
105500 }\r
105501 this._notifyRendered()\r
105502 }};\r
105503 ZmMailApp.prototype.mailSearch=function(r,l,a,h){\r
105504 var n=appCtxt.isOffline&&appCtxt.inStartup&&appCtxt.accountList.defaultAccount;\r
105505 if(n){\r
105506 appCtxt.accountList.setActiveAccount(n)\r
105507 }\r
105508 var s=appCtxt.getSearchController();\r
105509 var c,e;\r
105510 if(appCtxt.get(ZmSetting.OFFLINE_SHOW_GLOBAL_INBOX)&&appCtxt.accountList.size(true)>2){\r
105511 r=null;\r
105512 c=appCtxt.accountList.generateQuery(ZmOrganizer.ID_INBOX);\r
105513 e=true;\r
105514 s.searchAllAccounts=true\r
105515 }else{\r
105516 r=r||appCtxt.get(ZmSetting.INITIAL_SEARCH,null,n)\r
105517 }\r
105518 var o=new AjxVector();\r
105519 o.add(h||this.getGroupMailBy());\r
105520 var t={\r
105521 searchFor:ZmId.SEARCH_MAIL,query:r,queryHint:c,types:o,limit:this.getLimit(),getHtml:appCtxt.get(ZmSetting.VIEW_AS_HTML,null,n),noUpdateOverview:e,accountName:(n&&n.name),callback:l,response:a};\r
105522 t.errorCallback=new AjxCallback(this,this._handleErrorLaunch,t);\r
105523 s.search(t)\r
105524 };\r
105525 ZmMailApp.prototype._handleOfflineMailSearch=function(){\r
105526 if(appCtxt.get(ZmSetting.OFFLINE_SUPPORTS_MAILTO)){\r
105527 appCtxt.getAppController().handleOfflineMailTo(location.search)\r
105528 }};\r
105529 ZmMailApp.prototype.getSearchParams=function(e){\r
105530 e=e||{};\r
105531 if(!appCtxt.inStartup&&appCtxt.get(ZmSetting.READING_PANE_ENABLED)){\r
105532 e.fetch=true\r
105533 }\r
105534 AjxDispatcher.require("MailCore");\r
105535 e.headers=ZmMailMsg.requestHeaders;\r
105536 return e\r
105537 };\r
105538 ZmMailApp.prototype.showSearchResults=function(t,a){\r
105539 var e=new AjxCallback(this,this._handleLoadShowSearchResults,[t,a]);\r
105540 AjxDispatcher.require("MailCore",false,e,null,true)\r
105541 };\r
105542 ZmMailApp.prototype._handleLoadShowSearchResults=function(t,a){\r
105543 var e=(t.type==ZmItem.MSG)?this.getTradController():this.getConvListController();\r
105544 e.show(t);\r
105545 if(this._forceMsgView){\r
105546 e.selectFirstItem();\r
105547 this._forceMsgView=false\r
105548 }\r
105549 if(a){\r
105550 a.run()\r
105551 }\r
105552 this._notifyRendered()\r
105553 };\r
105554 ZmMailApp.prototype._parseComposeUrl=function(t){\r
105555 t=t||"";\r
105556 var o=t.match(/\bto=([^&]+)/);\r
105557 var r=o?decodeURIComponent(o[1]):null;\r
105558 o=t.match(/\bsubject=([^&]+)/);\r
105559 var n=o?(decodeURIComponent(o[1]).replace(/\+/g," ")):null;\r
105560 o=t.match(/\bcc=([^&]+)/);\r
105561 var s=o?decodeURIComponent(o[1]):null;\r
105562 o=t.match(/\bbcc=([^&]+)/);\r
105563 var a=o?decodeURIComponent(o[1]):null;\r
105564 o=t.match(/\bbody=([^&]+)/);\r
105565 var e=o?(decodeURIComponent(o[1]).replace(/\+/g," ")):null;\r
105566 return{\r
105567 to:r,subject:n,cc:s,bcc:a,body:e}\r
105568 };\r
105569 ZmMailApp.prototype._showComposeView=function(r,a){\r
105570 var o=a||location.search;\r
105571 AjxDispatcher.require("Startup2");\r
105572 var l=AjxDispatcher.run("GetComposeController");\r
105573 var e=this._parseComposeUrl(o);\r
105574 var s=e.to;\r
105575 if(s&&s.indexOf("mailto")==0){\r
105576 s=s.replace(/mailto:/,"");\r
105577 var n=s.split("?");\r
105578 e.to=n[0];\r
105579 if(n.length>1){\r
105580 n=n[1];\r
105581 var h=this._parseComposeUrl(n);\r
105582 e.to=e.to?(h.to?[e.to,","+h.to].join(""):e.to):h.to;\r
105583 e.subject=h.subject||e.subject;\r
105584 e.cc=h.cc||e.cc;\r
105585 e.bcc=h.bcc||e.bcc;\r
105586 e.body=h.body||e.body\r
105587 }}\r
105588 var t={\r
105589 action:ZmOperation.NEW_MESSAGE,toOverride:e.to,ccOverride:e.cc,bccOverride:e.bcc,subjOverride:e.subject,extraBodyText:e.body,callback:r};\r
105590 if(appCtxt.isOffline&&appCtxt.get(ZmSetting.OFFLINE_SUPPORTS_MAILTO)&&appCtxt.getCurrentViewId()==ZmId.VIEW_COMPOSE){\r
105591 l.resetComposeForMailto(t)\r
105592 }else{\r
105593 l.doAction(t)\r
105594 }\r
105595 this._notifyRendered()\r
105596 };\r
105597 ZmMailApp.prototype.getConvListController=function(){\r
105598 if(!this._convListController){\r
105599 this._convListController=new ZmConvListController(this._container,this)\r
105600 }\r
105601 return this._convListController\r
105602 };\r
105603 ZmMailApp.prototype.getConvController=function(){\r
105604 if(!this._convController){\r
105605 this._convController=new ZmConvController(this._container,this)\r
105606 }\r
105607 return this._convController\r
105608 };\r
105609 ZmMailApp.prototype.getTradController=function(){\r
105610 if(!this._tradController){\r
105611 this._tradController=new ZmTradController(this._container,this)\r
105612 }\r
105613 return this._tradController\r
105614 };\r
105615 ZmMailApp.prototype.getMsgController=function(e){\r
105616 return this.getSessionController(ZmId.VIEW_MSG,"ZmMsgController",e)\r
105617 };\r
105618 ZmMailApp.prototype.getComposeController=function(e){\r
105619 return this.getSessionController(ZmId.VIEW_COMPOSE,"ZmComposeController",e)\r
105620 };\r
105621 ZmMailApp.prototype.getCurrentSessionId=function(e){\r
105622 return this._curSessionId[e]\r
105623 };\r
105624 ZmMailApp.prototype.getSessionController=function(type,controllerClass,sessionId){\r
105625 if(!this._sessionController[type]){\r
105626 this._sessionController[type]={};\r
105627 this._sessionId[type]=1\r
105628 }\r
105629 if(sessionId&&this._sessionController[type][sessionId]){\r
105630 return this._sessionController[type][sessionId]\r
105631 }\r
105632 var controllers=this._sessionController[type];\r
105633 var controller;\r
105634 for(var id in controllers){\r
105635 if(controllers[id].inactive){\r
105636 controller=controllers[id];\r
105637 break\r
105638 }}\r
105639 sessionId=controller?controller.sessionId:this._sessionId[type]++;\r
105640 if(!controller){\r
105641 var ctlrClass=eval(controllerClass);\r
105642 controller=this._sessionController[type][sessionId]=new ctlrClass(this._container,this)\r
105643 }\r
105644 controller.setSessionId(type,sessionId);\r
105645 this._curSessionId[type]=sessionId;\r
105646 controller.inactive=false;\r
105647 return controller\r
105648 };\r
105649 ZmMailApp.prototype.getConfirmController=function(e){\r
105650 return this.getSessionController(ZmId.VIEW_MAIL_CONFIRM,"ZmMailConfirmController",e)\r
105651 };\r
105652 ZmMailApp.prototype.getMailListController=function(){\r
105653 var e=appCtxt.get(ZmSetting.GROUP_MAIL_BY);\r
105654 return(e==ZmSetting.GROUP_BY_CONV)?AjxDispatcher.run("GetConvListController"):AjxDispatcher.run("GetTradController")\r
105655 };\r
105656 ZmMailApp.prototype.getAttachmentsController=function(){\r
105657 if(!this._attachmentsController){\r
105658 this._attachmentsController=new ZmAttachmentsController(this._container,this)\r
105659 }\r
105660 return this._attachmentsController\r
105661 };\r
105662 ZmMailApp.prototype.compose=function(e){\r
105663 AjxDispatcher.run("GetComposeController").doAction(e)\r
105664 };\r
105665 ZmMailApp.prototype.setNewMailNotice=function(e){\r
105666 var s=appCtxt.getAppChooser();\r
105667 if(s){\r
105668 var r=s.getButton(ZmApp.MAIL);\r
105669 var o=(e.numUnread>0)?"EnvelopeOpen":"MailApp";\r
105670 r.setImage(o)\r
105671 }\r
105672 if(appCtxt.isOffline&&appCtxt.get(ZmSetting.OFFLINE_SUPPORTS_DOCK_UPDATE)){\r
105673 var t=0;\r
105674 var n=appCtxt.accountList.visibleAccounts;\r
105675 for(var a=0;\r
105676 a<n.length;\r
105677 a++){\r
105678 t+=(n[a].unread||0)\r
105679 }\r
105680 if(AjxEnv.isMac&&window.platform){\r
105681 window.platform.icon().badgeText=(t>0)?t:null\r
105682 }else{\r
105683 if(AjxEnv.isWindows){\r
105684 window.platform.icon().imageSpec=(t>0)?"resource://webapp/icons/default/newmail.png":"resource://webapp/icons/default/launcher.ico";\r
105685 window.platform.icon().title=(t>0)?AjxMessageFormat.format(ZmMsg.unreadCount,t):null\r
105686 }}}};\r
105687 ZmMailApp.prototype.getGroupMailBy=function(){\r
105688 var e=this._groupBy[appCtxt.getActiveAccount().name];\r
105689 var t=e||appCtxt.get(ZmSetting.GROUP_MAIL_BY);\r
105690 return t?ZmMailApp.GROUP_MAIL_BY_ITEM[t]:ZmItem.MSG\r
105691 };\r
105692 ZmMailApp.prototype.setGroupMailBy=function(e){\r
105693 this._groupBy[appCtxt.getActiveAccount().name]=e;\r
105694 appCtxt.set(ZmSetting.GROUP_MAIL_BY,e)\r
105695 };\r
105696 ZmMailApp.prototype.getLimit=function(t){\r
105697 var e=appCtxt.get(ZmSetting.PAGE_SIZE);\r
105698 return t?e:2*e\r
105699 };\r
105700 ZmMailApp.addReplyMenu=function(e){\r
105701 var t=[ZmOperation.REPLY,ZmOperation.REPLY_ALL];\r
105702 var a=new ZmActionMenu({\r
105703 parent:e,menuItems:t}\r
105704 );\r
105705 e.setMenu(a);\r
105706 return a\r
105707 };\r
105708 ZmMailApp.addForwardMenu=function(e){\r
105709 var t=[ZmOperation.FORWARD_INLINE,ZmOperation.FORWARD_ATT];\r
105710 var a=new ZmActionMenu({\r
105711 parent:e,menuItems:t}\r
105712 );\r
105713 e.setMenu(a);\r
105714 return a\r
105715 };\r
105716 ZmMailApp.prototype.getDataSourceCollection=function(t){\r
105717 var a=window.parentAppCtxt||window.appCtxt;\r
105718 var e=t?t.name:a.getActiveAccount().name;\r
105719 if(!this._dataSourceCollection[e]){\r
105720 this._dataSourceCollection[e]=new ZmDataSourceCollection();\r
105721 if(a.getActiveAccount().isMain){\r
105722 this._dataSourceCollection[e].initialize(a.getSettings().getInfoResponse.dataSources)\r
105723 }}\r
105724 return this._dataSourceCollection[e]\r
105725 };\r
105726 ZmMailApp.prototype.getIdentityCollection=function(a){\r
105727 if(appCtxt.isChildWindow){\r
105728 if(!this._identityCollection){\r
105729 this._identityCollection=new ZmIdentityCollection()\r
105730 }\r
105731 return this._identityCollection\r
105732 }\r
105733 var t=a?a.name:appCtxt.getActiveAccount().name;\r
105734 if(!this._identityCollection[t]){\r
105735 var e=this._identityCollection[t]=new ZmIdentityCollection();\r
105736 e.initialize(appCtxt.getSettings(a).getInfoResponse.identities)\r
105737 }\r
105738 return this._identityCollection[t]\r
105739 };\r
105740 ZmMailApp.prototype.getSignatureCollection=function(t){\r
105741 var a=window.parentAppCtxt||window.appCtxt;\r
105742 var e=t?t.name:a.getActiveAccount().name;\r
105743 if(!this._signatureCollection[e]){\r
105744 var o=this._signatureCollection[e]=new ZmSignatureCollection();\r
105745 o.initialize(a.getSettings(t).getInfoResponse.signatures)\r
105746 }\r
105747 return this._signatureCollection[e]\r
105748 };\r
105749 ZmMailApp.prototype._addSettingsChangeListeners=function(){\r
105750 ZmApp.prototype._addSettingsChangeListeners.call(this);\r
105751 if(!this._settingsListener){\r
105752 this._settingsListener=new AjxListener(this,this._settingsChangeListener)\r
105753 }\r
105754 var e=appCtxt.getSettings();\r
105755 e.getSetting(ZmSetting.VIEW_AS_HTML).addChangeListener(this._settingListener);\r
105756 e.addChangeListener(this._settingsListener)\r
105757 };\r
105758 ZmMailApp.prototype._settingChangeListener=function(a){\r
105759 ZmApp.prototype._settingChangeListener.call(this,a);\r
105760 if(a.type!=ZmEvent.S_SETTING){\r
105761 return\r
105762 }\r
105763 var t=a.source;\r
105764 var n=this.getMailListController();\r
105765 if(n&&t.id==ZmSetting.VIEW_AS_HTML){\r
105766 var e=n._doublePaneView;\r
105767 var o=e?e.getMsg():null;\r
105768 if(o){\r
105769 e.reset();\r
105770 e.setMsg(o)\r
105771 }}};\r
105772 ZmMailApp.prototype._settingsChangeListener=function(n){\r
105773 if(n.type!=ZmEvent.S_SETTINGS){\r
105774 return\r
105775 }\r
105776 var s=n.getDetail("settings");\r
105777 if(!(s&&s.length)){\r
105778 return\r
105779 }\r
105780 var h=this.getMailListController();\r
105781 if(!h){\r
105782 return\r
105783 }\r
105784 var e=h._currentView;\r
105785 var r,o;\r
105786 for(var t=0;\r
105787 t<s.length;\r
105788 t++){\r
105789 var a=s[t];\r
105790 if(a.id==ZmSetting.SHOW_FRAGMENTS){\r
105791 if(e!=ZmId.VIEW_MSG){\r
105792 r=o||e\r
105793 }}}\r
105794 r=o||r;\r
105795 if(r){\r
105796 h.switchView(r,true)\r
105797 }}\r
105798 }\r
105799 if(AjxPackage.define("zimbraMail.calendar.ZmCalendarApp")){\r
105800 ZmCalendarApp=function(e){\r
105801 ZmApp.call(this,ZmApp.CALENDAR,e);\r
105802 if(!appCtxt.isOffline){\r
105803 this._addSettingsChangeListeners()\r
105804 }\r
105805 this._resByName={};\r
105806 this._resByEmail={}\r
105807 };\r
105808 ZmEvent.S_APPT=ZmId.ITEM_APPOINTMENT;\r
105809 ZmEvent.S_RESOURCE=ZmId.ITEM_RESOURCE;\r
105810 ZmItem.APPT=ZmEvent.S_APPT;\r
105811 ZmItem.RESOURCE=ZmEvent.S_RESOURCE;\r
105812 ZmOrganizer.CALENDAR=ZmId.ORG_CALENDAR;\r
105813 ZmApp.CALENDAR=ZmId.APP_CALENDAR;\r
105814 ZmApp.CLASS[ZmApp.CALENDAR]="ZmCalendarApp";\r
105815 ZmApp.SETTING[ZmApp.CALENDAR]=ZmSetting.CALENDAR_ENABLED;\r
105816 ZmApp.UPSELL_SETTING[ZmApp.CALENDAR]=ZmSetting.CALENDAR_UPSELL_ENABLED;\r
105817 ZmApp.LOAD_SORT[ZmApp.CALENDAR]=40;\r
105818 ZmApp.QS_ARG[ZmApp.CALENDAR]="calendar";\r
105819 ZmCalendarApp.REMINDER_START_DELAY=10000;\r
105820 ZmCalendarApp.MINICAL_DELAY=5000;\r
105821 ZmCalendarApp.VIEW_FOR_SETTING={};\r
105822 ZmCalendarApp.VIEW_FOR_SETTING[ZmSetting.CAL_DAY]=ZmId.VIEW_CAL_DAY;\r
105823 ZmCalendarApp.VIEW_FOR_SETTING[ZmSetting.CAL_WEEK]=ZmId.VIEW_CAL_WEEK;\r
105824 ZmCalendarApp.VIEW_FOR_SETTING[ZmSetting.CAL_WORK_WEEK]=ZmId.VIEW_CAL_WORK_WEEK;\r
105825 ZmCalendarApp.VIEW_FOR_SETTING[ZmSetting.CAL_MONTH]=ZmId.VIEW_CAL_MONTH;\r
105826 ZmCalendarApp.VIEW_FOR_SETTING[ZmSetting.CAL_SCHEDULE]=ZmId.VIEW_CAL_SCHEDULE;\r
105827 ZmCalendarApp.VIEW_FOR_SETTING[ZmSetting.CAL_LIST]=ZmId.VIEW_CAL_LIST;\r
105828 ZmCalendarApp.COLORS=[];\r
105829 ZmCalendarApp.COLORS[ZmOrganizer.C_ORANGE]="Orange";\r
105830 ZmCalendarApp.COLORS[ZmOrganizer.C_BLUE]="Blue";\r
105831 ZmCalendarApp.COLORS[ZmOrganizer.C_CYAN]="Cyan";\r
105832 ZmCalendarApp.COLORS[ZmOrganizer.C_GREEN]="Green";\r
105833 ZmCalendarApp.COLORS[ZmOrganizer.C_PURPLE]="Purple";\r
105834 ZmCalendarApp.COLORS[ZmOrganizer.C_RED]="Red";\r
105835 ZmCalendarApp.COLORS[ZmOrganizer.C_YELLOW]="Yellow";\r
105836 ZmCalendarApp.COLORS[ZmOrganizer.C_PINK]="Pink";\r
105837 ZmCalendarApp.COLORS[ZmOrganizer.C_GRAY]="Gray";\r
105838 ZmCalendarApp.CUTYPE_INDIVIDUAL="IND";\r
105839 ZmCalendarApp.CUTYPE_GROUP="GRO";\r
105840 ZmCalendarApp.CUTYPE_RESOURCE="RES";\r
105841 ZmCalendarApp.CUTYPE_ROOM="ROO";\r
105842 ZmCalendarApp.CUTYPE_UNKNOWN="UNK";\r
105843 ZmCalendarApp.STATUS_CANC="CANC";\r
105844 ZmCalendarApp.STATUS_COMP="COMP";\r
105845 ZmCalendarApp.STATUS_CONF="CONF";\r
105846 ZmCalendarApp.STATUS_DEFR="DEFERRED";\r
105847 ZmCalendarApp.STATUS_INPR="INPR";\r
105848 ZmCalendarApp.STATUS_NEED="NEED";\r
105849 ZmCalendarApp.STATUS_TENT="TENT";\r
105850 ZmCalendarApp.STATUS_WAIT="WAITING";\r
105851 ZmCalendarApp.METHOD_CANCEL="CANCEL";\r
105852 ZmCalendarApp.METHOD_PUBLISH="PUBLISH";\r
105853 ZmCalendarApp.METHOD_REPLY="REPLY";\r
105854 ZmCalendarApp.METHOD_REQUEST="REQUEST";\r
105855 ZmCalendarApp.prototype=new ZmApp;\r
105856 ZmCalendarApp.prototype.constructor=ZmCalendarApp;\r
105857 ZmCalendarApp.prototype.toString=function(){\r
105858 return"ZmCalendarApp"\r
105859 };\r
105860 ZmCalendarApp.prototype._defineAPI=function(){\r
105861 AjxDispatcher.setPackageLoadFunction("CalendarCore",new AjxCallback(this,this._postLoadCore));\r
105862 AjxDispatcher.setPackageLoadFunction("Calendar",new AjxCallback(this,this._postLoad,ZmOrganizer.CALENDAR));\r
105863 AjxDispatcher.registerMethod("GetCalController","CalendarCore",new AjxCallback(this,this.getCalController));\r
105864 AjxDispatcher.registerMethod("GetReminderController","CalendarCore",new AjxCallback(this,this.getReminderController));\r
105865 AjxDispatcher.registerMethod("ShowMiniCalendar","CalendarCore",new AjxCallback(this,this.showMiniCalendar));\r
105866 AjxDispatcher.registerMethod("GetApptComposeController",["CalendarCore","Calendar","CalendarAppt"],new AjxCallback(this,this.getApptComposeController))\r
105867 };\r
105868 ZmCalendarApp.prototype._registerSettings=function(e){\r
105869 var e=e||appCtxt.getSettings();\r
105870 e.registerSetting("CAL_ALWAYS_SHOW_MINI_CAL",{\r
105871 name:"zimbraPrefCalendarAlwaysShowMiniCal",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
105872 );\r
105873 e.registerSetting("CAL_APPT_VISIBILITY",{\r
105874 name:"zimbraPrefCalendarApptVisibility",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:"public"}\r
105875 );\r
105876 e.registerSetting("CAL_EXPORT",{\r
105877 type:ZmSetting.T_PREF,dataType:ZmSetting.D_NONE}\r
105878 );\r
105879 e.registerSetting("CAL_FIRST_DAY_OF_WEEK",{\r
105880 name:"zimbraPrefCalendarFirstDayOfWeek",type:ZmSetting.T_PREF,dataType:ZmSetting.D_INT,defaultValue:0}\r
105881 );\r
105882 e.registerSetting("CAL_FREE_BUSY_ACL",{\r
105883 type:ZmSetting.T_PREF,defaultValue:ZmSetting.ACL_ALL}\r
105884 );\r
105885 e.registerSetting("CAL_FREE_BUSY_ACL_USERS",{\r
105886 type:ZmSetting.T_PREF}\r
105887 );\r
105888 e.registerSetting("CAL_IMPORT",{\r
105889 type:ZmSetting.T_PREF,dataType:ZmSetting.D_NONE}\r
105890 );\r
105891 e.registerSetting("CAL_INVITE_ACL",{\r
105892 type:ZmSetting.T_PREF,defaultValue:ZmSetting.ACL_ALL}\r
105893 );\r
105894 e.registerSetting("CAL_INVITE_ACL_USERS",{\r
105895 type:ZmSetting.T_PREF}\r
105896 );\r
105897 e.registerSetting("CAL_REMINDER_NOTIFY_SOUNDS",{\r
105898 name:"zimbraPrefCalendarReminderSoundsEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
105899 );\r
105900 e.registerSetting("CAL_REMINDER_NOTIFY_BROWSER",{\r
105901 name:"zimbraPrefCalendarReminderFlashTitle",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
105902 );\r
105903 e.registerSetting("CAL_REMINDER_NOTIFY_TOASTER",{\r
105904 name:"zimbraPrefCalendarToasterEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
105905 );\r
105906 e.registerSetting("CAL_REMINDER_WARNING_TIME",{\r
105907 name:"zimbraPrefCalendarApptReminderWarningTime",type:ZmSetting.T_PREF,dataType:ZmSetting.D_INT,defaultValue:0}\r
105908 );\r
105909 e.registerSetting("CAL_SHOW_TIMEZONE",{\r
105910 name:"zimbraPrefUseTimeZoneListInCalendar",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
105911 );\r
105912 e.registerSetting("CAL_USE_QUICK_ADD",{\r
105913 name:"zimbraPrefCalendarUseQuickAdd",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
105914 );\r
105915 e.registerSetting("CALENDAR_INITIAL_VIEW",{\r
105916 name:"zimbraPrefCalendarInitialView",type:ZmSetting.T_PREF,defaultValue:ZmSetting.CAL_DAY}\r
105917 );\r
105918 e.registerSetting("DELETE_INVITE_ON_REPLY",{\r
105919 name:"zimbraPrefDeleteInviteOnReply",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
105920 );\r
105921 e.registerSetting("ENABLE_APPL_ICAL_DELEGATION",{\r
105922 name:"zimbraPrefAppleIcalDelegationEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
105923 );\r
105924 e.registerSetting("CAL_AUTO_ADD_INVITES",{\r
105925 name:"zimbraPrefCalendarAutoAddInvites",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
105926 );\r
105927 e.registerSetting("CAL_SEND_INV_DENIED_REPLY",{\r
105928 name:"zimbraPrefCalendarSendInviteDeniedAutoReply",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
105929 );\r
105930 e.registerSetting("CAL_INV_FORWARDING_ADDRESS",{\r
105931 name:"zimbraPrefCalendarForwardInvitesTo",type:ZmSetting.T_PREF}\r
105932 );\r
105933 e.registerSetting("CAL_SHOW_PAST_DUE_REMINDERS",{\r
105934 name:"zimbraPrefCalendarShowPastDueReminders",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
105935 );\r
105936 e.registerSetting("CAL_SHOW_CALENDAR_WEEK",{\r
105937 name:"zimbraPrefShowCalendarWeek",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
105938 )\r
105939 };\r
105940 ZmCalendarApp.prototype._registerPrefs=function(){\r
105941 var t={\r
105942 CALENDAR:{\r
105943 title:ZmMsg.calendar,icon:"CalendarApp",templateId:"prefs.Pages#Calendar",priority:80,precondition:ZmSetting.CALENDAR_ENABLED,prefs:[ZmSetting.CAL_ALWAYS_SHOW_MINI_CAL,ZmSetting.CAL_AUTO_ADD_INVITES,ZmSetting.CAL_SEND_INV_DENIED_REPLY,ZmSetting.CAL_APPT_VISIBILITY,ZmSetting.CAL_EXPORT,ZmSetting.CAL_FIRST_DAY_OF_WEEK,ZmSetting.CAL_IMPORT,ZmSetting.CAL_REMINDER_WARNING_TIME,ZmSetting.CAL_REMINDER_NOTIFY_SOUNDS,ZmSetting.CAL_REMINDER_NOTIFY_BROWSER,ZmSetting.CAL_SHOW_TIMEZONE,ZmSetting.CAL_USE_QUICK_ADD,ZmSetting.CALENDAR_INITIAL_VIEW,ZmSetting.DELETE_INVITE_ON_REPLY,ZmSetting.ENABLE_APPL_ICAL_DELEGATION,ZmSetting.CAL_FREE_BUSY_ACL,ZmSetting.CAL_FREE_BUSY_ACL_USERS,ZmSetting.CAL_INVITE_ACL,ZmSetting.CAL_INVITE_ACL_USERS,ZmSetting.CAL_REMINDER_NOTIFY_TOASTER,ZmSetting.CAL_INV_FORWARDING_ADDRESS,ZmSetting.CAL_SHOW_PAST_DUE_REMINDERS,ZmSetting.CAL_SHOW_CALENDAR_WEEK],manageDirty:true,createView:function(o,n,a){\r
105944 AjxDispatcher.require("Alert");\r
105945 return new ZmCalendarPrefsPage(o,n,a)\r
105946 }}};\r
105947 for(var e in t){\r
105948 ZmPref.registerPrefSection(e,t[e])\r
105949 }\r
105950 ZmPref.registerPref("CAL_ALWAYS_SHOW_MINI_CAL",{\r
105951 displayName:ZmMsg.alwaysShowMiniCal,displayContainer:ZmPref.TYPE_CHECKBOX}\r
105952 );\r
105953 ZmPref.registerPref("CAL_AUTO_ADD_INVITES",{\r
105954 displayName:ZmMsg.autoAddInvites,displayContainer:ZmPref.TYPE_CHECKBOX}\r
105955 );\r
105956 ZmPref.registerPref("CAL_SEND_INV_DENIED_REPLY",{\r
105957 displayName:ZmMsg.sendInvDeniedAutoReply,displayContainer:ZmPref.TYPE_CHECKBOX}\r
105958 );\r
105959 ZmPref.registerPref("CAL_EXPORT",{\r
105960 displayName:ZmMsg.exportToICS,displayContainer:ZmPref.TYPE_EXPORT}\r
105961 );\r
105962 ZmPref.registerPref("CAL_FIRST_DAY_OF_WEEK",{\r
105963 displayName:ZmMsg.calendarFirstDayOfWeek,displayContainer:ZmPref.TYPE_SELECT,displayOptions:AjxDateUtil.WEEKDAY_LONG,options:[0,1,2,3,4,5,6]}\r
105964 );\r
105965 ZmPref.registerPref("CAL_FREE_BUSY_ACL",{\r
105966 displayContainer:ZmPref.TYPE_RADIO_GROUP,displayOptions:[ZmMsg.freeBusyAllowAll,ZmMsg.freeBusyAllowLocal,ZmMsg.freeBusyAllowNone,ZmMsg.freeBusyAllowSome],options:[ZmSetting.ACL_PUBLIC,ZmSetting.ACL_AUTH,ZmSetting.ACL_NONE,ZmSetting.ACL_USER]}\r
105967 );\r
105968 ZmPref.registerPref("CAL_FREE_BUSY_ACL_USERS",{\r
105969 displayContainer:ZmPref.TYPE_TEXTAREA}\r
105970 );\r
105971 ZmPref.registerPref("CAL_IMPORT",{\r
105972 displayName:ZmMsg.importFromICS,displayContainer:ZmPref.TYPE_IMPORT}\r
105973 );\r
105974 ZmPref.registerPref("CAL_INVITE_ACL",{\r
105975 displayContainer:ZmPref.TYPE_RADIO_GROUP,displayOptions:[ZmMsg.invitesAllowAll,ZmMsg.invitesAllowLocal,ZmMsg.invitesAllowNone,ZmMsg.invitesAllowSome],options:[ZmSetting.ACL_PUBLIC,ZmSetting.ACL_AUTH,ZmSetting.ACL_NONE,ZmSetting.ACL_USER]}\r
105976 );\r
105977 ZmPref.registerPref("CAL_INVITE_ACL_USERS",{\r
105978 displayContainer:ZmPref.TYPE_TEXTAREA}\r
105979 );\r
105980 ZmPref.registerPref("CAL_REMINDER_WARNING_TIME",{\r
105981 displayName:ZmMsg.numberOfMinutes,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[ZmMsg.apptRemindNever,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore],options:[0,1,5,10,15,30,45,60]}\r
105982 );\r
105983 ZmPref.registerPref("CAL_SHOW_TIMEZONE",{\r
105984 displayName:ZmMsg.shouldShowTimezone,displayContainer:ZmPref.TYPE_CHECKBOX}\r
105985 );\r
105986 ZmPref.registerPref("CAL_USE_QUICK_ADD",{\r
105987 displayName:ZmMsg.useQuickAdd,displayContainer:ZmPref.TYPE_CHECKBOX}\r
105988 );\r
105989 ZmPref.registerPref("CALENDAR_INITIAL_VIEW",{\r
105990 displayName:ZmMsg.calendarInitialView,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[ZmMsg.calViewDay,ZmMsg.calViewWorkWeek,ZmMsg.calViewWeek,ZmMsg.calViewMonth,ZmMsg.calViewList,ZmMsg.calViewSchedule],options:[ZmSetting.CAL_DAY,ZmSetting.CAL_WORK_WEEK,ZmSetting.CAL_WEEK,ZmSetting.CAL_MONTH,ZmSetting.CAL_LIST,ZmSetting.CAL_SCHEDULE]}\r
105991 );\r
105992 ZmPref.registerPref("CAL_REMINDER_NOTIFY_SOUNDS",{\r
105993 displayName:ZmMsg.playSound,displayContainer:ZmPref.TYPE_CHECKBOX}\r
105994 );\r
105995 ZmPref.registerPref("CAL_REMINDER_NOTIFY_BROWSER",{\r
105996 displayName:ZmMsg.flashBrowser,displayContainer:ZmPref.TYPE_CHECKBOX}\r
105997 );\r
105998 ZmPref.registerPref("DELETE_INVITE_ON_REPLY",{\r
105999 displayName:ZmMsg.deleteInviteOnReply,displayContainer:ZmPref.TYPE_CHECKBOX}\r
106000 );\r
106001 ZmPref.registerPref("ENABLE_APPL_ICAL_DELEGATION",{\r
106002 displayName:ZmMsg.enableAppleICalDelegation,displayContainer:ZmPref.TYPE_CHECKBOX}\r
106003 );\r
106004 ZmPref.registerPref("CAL_REMINDER_NOTIFY_TOASTER",{\r
106005 displayFunc:function(){\r
106006 AjxDispatcher.require("Alert");\r
106007 return ZmDesktopAlert.getInstance().getDisplayText()\r
106008 }\r
106009 ,displayContainer:ZmPref.TYPE_CHECKBOX}\r
106010 );\r
106011 ZmPref.registerPref("CAL_APPT_VISIBILITY",{\r
106012 displayName:ZmMsg.calendarInitialApptVisibility,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[ZmMsg._public,ZmMsg._private],options:[ZmSetting.CAL_VISIBILITY_PUB,ZmSetting.CAL_VISIBILITY_PRIV]}\r
106013 );\r
106014 ZmPref.registerPref("CAL_INV_FORWARDING_ADDRESS",{\r
106015 displayName:ZmMsg.inviteForwardingAddress,displayContainer:ZmPref.TYPE_INPUT,validationFunction:ZmPref.validateEmail,errorMessage:ZmMsg.invalidEmail}\r
106016 );\r
106017 ZmPref.registerPref("CAL_SHOW_PAST_DUE_REMINDERS",{\r
106018 displayName:ZmMsg.apptPastDueReminderLabel,displayContainer:ZmPref.TYPE_CHECKBOX}\r
106019 );\r
106020 ZmPref.registerPref("CAL_SHOW_CALENDAR_WEEK",{\r
106021 displayName:ZmMsg.showWeekNumber,displayContainer:ZmPref.TYPE_CHECKBOX}\r
106022 )\r
106023 };\r
106024 ZmCalendarApp.prototype._registerOperations=function(){\r
106025 ZmOperation.registerOp(ZmId.OP_CAL_LIST_VIEW,{\r
106026 textKey:"list",tooltipKey:"viewCalListTooltip",image:"CalListView",shortcut:ZmKeyMap.CAL_LIST_VIEW}\r
106027 );\r
106028 ZmOperation.registerOp(ZmId.OP_CAL_REFRESH,{\r
106029 textKey:"refresh",tooltipKey:"calRefreshTooltip",image:"Refresh",shortcut:ZmKeyMap.REFRESH}\r
106030 );\r
106031 ZmOperation.registerOp(ZmId.OP_CAL_VIEW_MENU,{\r
106032 textKey:"view",image:"Appointment"}\r
106033 ,null,AjxCallback.simpleClosure(function(e){\r
106034 ZmOperation.addDeferredMenu(ZmCalendarApp.addCalViewMenu,e)\r
106035 }\r
106036 ));\r
106037 ZmOperation.registerOp(ZmId.OP_DAY_VIEW,{\r
106038 textKey:"viewDay",tooltipKey:"viewDayTooltip",image:"DayView",shortcut:ZmKeyMap.CAL_DAY_VIEW}\r
106039 );\r
106040 ZmOperation.registerOp(ZmId.OP_EDIT_REPLY_ACCEPT,{\r
106041 textKey:"replyAccept",image:"Check"}\r
106042 );\r
106043 ZmOperation.registerOp(ZmId.OP_EDIT_REPLY_CANCEL);\r
106044 ZmOperation.registerOp(ZmId.OP_EDIT_REPLY_TENTATIVE,{\r
106045 textKey:"replyTentative",image:"QuestionMark"}\r
106046 );\r
106047 ZmOperation.registerOp(ZmId.OP_EDIT_REPLY_DECLINE,{\r
106048 textKey:"replyDecline",image:"Cancel"}\r
106049 );\r
106050 ZmOperation.registerOp(ZmId.OP_INVITE_REPLY_ACCEPT,{\r
106051 textKey:"editReply",image:"Check"}\r
106052 );\r
106053 ZmOperation.registerOp(ZmId.OP_INVITE_REPLY_DECLINE,{\r
106054 textKey:"editReply",image:"Cancel"}\r
106055 );\r
106056 ZmOperation.registerOp(ZmId.OP_INVITE_REPLY_MENU,{\r
106057 textKey:"editReply",image:"Reply"}\r
106058 ,ZmSetting.MAIL_ENABLED,AjxCallback.simpleClosure(function(e){\r
106059 ZmOperation.addDeferredMenu(ZmCalendarApp.addInviteReplyMenu,e)\r
106060 }\r
106061 ));\r
106062 ZmOperation.registerOp(ZmId.OP_INVITE_REPLY_TENTATIVE,{\r
106063 textKey:"editReply",image:"QuestionMark"}\r
106064 );\r
106065 ZmOperation.registerOp(ZmId.OP_MONTH_VIEW,{\r
106066 textKey:"viewMonth",tooltipKey:"viewMonthTooltip",image:"MonthView",shortcut:ZmKeyMap.CAL_MONTH_VIEW}\r
106067 );\r
106068 ZmOperation.registerOp(ZmId.OP_MOUNT_CALENDAR,{\r
106069 textKey:"mountCalendar",image:"GroupSchedule"}\r
106070 );\r
106071 ZmOperation.registerOp(ZmId.OP_NEW_ALLDAY_APPT,{\r
106072 textKey:"newAllDayAppt",tooltipKey:"newAllDayApptTooltip",image:"NewAppointment"}\r
106073 );\r
106074 ZmOperation.registerOp(ZmId.OP_NEW_APPT,{\r
106075 textKey:"newAppt",tooltipKey:"newApptTooltip",image:"NewAppointment",shortcut:ZmKeyMap.NEW_APPT}\r
106076 );\r
106077 ZmOperation.registerOp(ZmId.OP_NEW_CALENDAR,{\r
106078 textKey:"newCalendar",image:"NewAppointment",tooltipKey:"newCalendarTooltip",shortcut:ZmKeyMap.NEW_CALENDAR}\r
106079 );\r
106080 ZmOperation.registerOp(ZmId.OP_REPLY_ACCEPT,{\r
106081 textKey:"replyAccept",image:"Check"}\r
106082 );\r
106083 ZmOperation.registerOp(ZmId.OP_REPLY_ACCEPT_NOTIFY,{\r
106084 textKey:"notifyOrganizerLabel",image:"Check"}\r
106085 );\r
106086 ZmOperation.registerOp(ZmId.OP_REPLY_ACCEPT_IGNORE,{\r
106087 textKey:"dontNotifyOrganizerLabel",image:"Check"}\r
106088 );\r
106089 ZmOperation.registerOp(ZmId.OP_REPLY_CANCEL);\r
106090 ZmOperation.registerOp(ZmId.OP_REPLY_DECLINE,{\r
106091 textKey:"replyDecline",image:"Cancel"}\r
106092 );\r
106093 ZmOperation.registerOp(ZmId.OP_REPLY_DECLINE_NOTIFY,{\r
106094 textKey:"notifyOrganizerLabel",image:"Cancel"}\r
106095 );\r
106096 ZmOperation.registerOp(ZmId.OP_REPLY_DECLINE_IGNORE,{\r
106097 textKey:"dontNotifyOrganizerLabel",image:"Cancel"}\r
106098 );\r
106099 ZmOperation.registerOp(ZmId.OP_REPLY_MODIFY);\r
106100 ZmOperation.registerOp(ZmId.OP_REPLY_NEW_TIME,{\r
106101 textKey:"replyNewTime",image:"NewTime"}\r
106102 );\r
106103 ZmOperation.registerOp(ZmId.OP_REPLY_TENTATIVE,{\r
106104 textKey:"replyTentative",image:"QuestionMark"}\r
106105 );\r
106106 ZmOperation.registerOp(ZmId.OP_REPLY_TENTATIVE_NOTIFY,{\r
106107 textKey:"notifyOrganizerLabel",image:"QuestionMark"}\r
106108 );\r
106109 ZmOperation.registerOp(ZmId.OP_REPLY_TENTATIVE_IGNORE,{\r
106110 textKey:"dontNotifyOrganizerLabel",image:"QuestionMark"}\r
106111 );\r
106112 ZmOperation.registerOp(ZmId.OP_SCHEDULE_VIEW,{\r
106113 textKey:"viewSchedule",tooltipKey:"viewScheduleTooltip",image:"GroupSchedule",shortcut:ZmKeyMap.CAL_SCHEDULE_VIEW}\r
106114 );\r
106115 ZmOperation.registerOp(ZmId.OP_SEARCH_MAIL,{\r
106116 textKey:"searchMail",image:"SearchMail"}\r
106117 ,ZmSetting.MAIL_ENABLED);\r
106118 ZmOperation.registerOp(ZmId.OP_SHARE_CALENDAR,{\r
106119 textKey:"shareCalendar",image:"CalendarFolder"}\r
106120 );\r
106121 ZmOperation.registerOp(ZmId.OP_TODAY,{\r
106122 textKey:"today",tooltipKey:"todayTooltip",image:"Date",shortcut:ZmKeyMap.TODAY}\r
106123 );\r
106124 ZmOperation.registerOp(ZmId.OP_VIEW_APPOINTMENT,{\r
106125 textKey:"viewAppointment",image:"Appointment"}\r
106126 );\r
106127 ZmOperation.registerOp(ZmId.OP_OPEN_APPT_INSTANCE,{\r
106128 textKey:"openApptInstance",image:"Appointment"}\r
106129 );\r
106130 ZmOperation.registerOp(ZmId.OP_OPEN_APPT_SERIES,{\r
106131 textKey:"openApptSeries",image:"Appointment"}\r
106132 );\r
106133 ZmOperation.registerOp(ZmId.OP_DELETE_APPT_INSTANCE,{\r
106134 textKey:"deleteApptInstance",image:"Delete"}\r
106135 );\r
106136 ZmOperation.registerOp(ZmId.OP_DELETE_APPT_SERIES,{\r
106137 textKey:"deleteApptSeries",image:"Delete"}\r
106138 );\r
106139 ZmOperation.registerOp(ZmId.OP_VIEW_APPT_INSTANCE,{\r
106140 textKey:"apptInstance",image:"Appointment"}\r
106141 );\r
106142 ZmOperation.registerOp(ZmId.OP_VIEW_APPT_SERIES,{\r
106143 textKey:"apptSeries",image:"Appointment"}\r
106144 );\r
106145 ZmOperation.registerOp(ZmId.OP_WEEK_VIEW,{\r
106146 textKey:"viewWeek",tooltipKey:"viewWeekTooltip",image:"WeekView",shortcut:ZmKeyMap.CAL_WEEK_VIEW}\r
106147 );\r
106148 ZmOperation.registerOp(ZmId.OP_WORK_WEEK_VIEW,{\r
106149 textKey:"viewWorkWeek",tooltipKey:"viewWorkWeekTooltip",image:"WorkWeekView",shortcut:ZmKeyMap.CAL_WORK_WEEK_VIEW}\r
106150 );\r
106151 ZmOperation.registerOp(ZmId.OP_FORWARD_APPT,{\r
106152 textKey:"forward",tooltipKey:"forward",image:"Forward"}\r
106153 );\r
106154 ZmOperation.registerOp(ZmId.OP_FORWARD_APPT_INSTANCE,{\r
106155 textKey:"forwardInstance",tooltipKey:"forwardInstance",image:"Forward"}\r
106156 );\r
106157 ZmOperation.registerOp(ZmId.OP_FORWARD_APPT_SERIES,{\r
106158 textKey:"forwardSeries",tooltipKey:"forwardSeries",image:"Forward"}\r
106159 )\r
106160 };\r
106161 ZmCalendarApp.prototype._registerItems=function(){\r
106162 ZmItem.registerItem(ZmItem.APPT,{\r
106163 app:ZmApp.CALENDAR,nameKey:"appointment",icon:"Appointment",soapCmd:"ItemAction",itemClass:"ZmAppt",node:"appt",organizer:ZmOrganizer.CALENDAR,dropTargets:[ZmOrganizer.TAG,ZmOrganizer.CALENDAR],searchType:"appointment",resultsList:AjxCallback.simpleClosure(function(e){\r
106164 AjxDispatcher.require("CalendarCore");\r
106165 return new ZmApptList(ZmItem.APPT,e)\r
106166 }\r
106167 ,this)}\r
106168 );\r
106169 ZmItem.registerItem(ZmItem.RESOURCE,{\r
106170 app:ZmApp.CALENDAR,itemClass:"ZmResource",node:"calResource",resultsList:AjxCallback.simpleClosure(function(e){\r
106171 AjxDispatcher.require("CalendarCore");\r
106172 return new ZmResourceList(null,e)\r
106173 }\r
106174 ,this)}\r
106175 )\r
106176 };\r
106177 ZmCalendarApp.prototype._registerOrganizers=function(){\r
106178 ZmOrganizer.registerOrg(ZmOrganizer.CALENDAR,{\r
106179 app:ZmApp.CALENDAR,nameKey:"calendar",defaultFolder:ZmOrganizer.ID_CALENDAR,soapCmd:"FolderAction",firstUserId:256,orgClass:"ZmCalendar",orgPackage:"CalendarCore",treeController:"ZmCalendarTreeController",labelKey:"calendars",itemsKey:"appointments",hasColor:true,treeType:ZmOrganizer.FOLDER,views:["appointment"],folderKey:"calendar",mountKey:"mountCalendar",createFunc:"ZmCalendar.create",compareFunc:"ZmCalendar.sortCompare",newOp:ZmOperation.NEW_CALENDAR,displayOrder:100,deferrable:true}\r
106180 )\r
106181 };\r
106182 ZmCalendarApp.prototype._setupSearchToolbar=function(){\r
106183 ZmSearchToolBar.addMenuItem(ZmItem.APPT,{\r
106184 msgKey:"appointments",tooltipKey:"searchAppts",icon:"Appointment",shareIcon:"SharedCalendarFolder",setting:ZmSetting.CALENDAR_ENABLED,id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.ITEM_APPOINTMENT)}\r
106185 )\r
106186 };\r
106187 ZmCalendarApp.prototype._registerApp=function(){\r
106188 var a={};\r
106189 a[ZmOperation.NEW_APPT]="appointment";\r
106190 var t={};\r
106191 t[ZmOperation.NEW_CALENDAR]="calendar";\r
106192 var e={};\r
106193 e[ZmKeyMap.NEW_APPT]=ZmOperation.NEW_APPT;\r
106194 e[ZmKeyMap.NEW_CALENDAR]=ZmOperation.NEW_CALENDAR;\r
106195 ZmApp.registerApp(ZmApp.CALENDAR,{\r
106196 mainPkg:"Calendar",nameKey:"calendar",icon:"CalendarApp",textPrecedence:60,chooserTooltipKey:"goToCalendar",viewTooltipKey:"displayCalendar",defaultSearch:ZmItem.APPT,organizer:ZmOrganizer.CALENDAR,overviewTrees:[ZmOrganizer.CALENDAR,ZmOrganizer.SEARCH,ZmOrganizer.TAG],assistants:{\r
106197 ZmAppointmentAssistant:["CalendarCore","Calendar","CalendarAppt"],ZmCalendarAssistant:["CalendarCore","Calendar","CalendarAppt"]}\r
106198 ,newItemOps:a,newOrgOps:t,actionCodes:e,searchTypes:[ZmItem.APPT],gotoActionCode:ZmKeyMap.GOTO_CALENDAR,newActionCode:ZmKeyMap.NEW_APPT,chooserSort:30,defaultSort:20,upsellUrl:ZmSetting.CALENDAR_UPSELL_URL}\r
106199 )\r
106200 };\r
106201 ZmCalendarApp.prototype.startup=function(e){};\r
106202 ZmCalendarApp.prototype.refresh=function(e){\r
106203 if(!appCtxt.inStartup){\r
106204 AjxDispatcher.run("GetCalController").refreshHandler(e)\r
106205 }};\r
106206 ZmCalendarApp.prototype.deleteNotify=function(e,t){\r
106207 if(!t&&this._deferNotifications("delete",e)){\r
106208 return\r
106209 }\r
106210 AjxDispatcher.run("GetCalController").notifyDelete(e)\r
106211 };\r
106212 ZmCalendarApp.prototype.createNotify=function(o,s){\r
106213 if(!o.folder&&!o.appt&&!o.link){\r
106214 return\r
106215 }\r
106216 if(!s&&!this._noDefer&&this._deferNotifications("create",o)){\r
106217 return\r
106218 }\r
106219 for(var e in o){\r
106220 var n=o[e];\r
106221 for(var a=0;\r
106222 a<n.length;\r
106223 a++){\r
106224 var t=n[a];\r
106225 if(appCtxt.cacheGet(t.id)){\r
106226 continue\r
106227 }\r
106228 if(e=="folder"){\r
106229 this._handleCreateFolder(t,ZmOrganizer.CALENDAR)\r
106230 }else{\r
106231 if(e=="link"){\r
106232 this._handleCreateLink(t,ZmOrganizer.CALENDAR)\r
106233 }else{\r
106234 if(e=="appt"){\r
106235 AjxDispatcher.run("GetCalController").notifyCreate(t)\r
106236 }}}\r
106237 if((e=="folder"||e=="link")&&this._calController){\r
106238 this._calController._updateCheckedCalendars()\r
106239 }}}};\r
106240 ZmCalendarApp.prototype.modifyNotify=function(t,e){\r
106241 if(!e&&!this._noDefer&&this._deferNotifications("modify",t)){\r
106242 return\r
106243 }\r
106244 AjxDispatcher.run("GetCalController").notifyModify(t)\r
106245 };\r
106246 ZmCalendarApp.prototype.postNotify=function(e){\r
106247 if(this._calController!=null){\r
106248 this._calController.notifyComplete()\r
106249 }};\r
106250 ZmCalendarApp.prototype.handleOp=function(t){\r
106251 switch(t){\r
106252 case ZmOperation.NEW_APPT:var e=new AjxCallback(this,this._handleLoadNewAppt);\r
106253 AjxDispatcher.require(["CalendarCore","Calendar"],false,e,null,true);\r
106254 break;\r
106255 case ZmOperation.NEW_CALENDAR:var e=new AjxCallback(this,this._handleLoadNewCalendar);\r
106256 AjxDispatcher.require(["CalendarCore","Calendar"],false,e,null,true);\r
106257 break\r
106258 }};\r
106259 ZmCalendarApp.prototype._handleLoadNewAppt=function(){\r
106260 AjxDispatcher.run("GetCalController").newAppointment(null,null,null,null)\r
106261 };\r
106262 ZmCalendarApp.prototype._handleLoadNewCalendar=function(){\r
106263 appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_LOADING);\r
106264 var e=appCtxt.getNewCalendarDialog();\r
106265 if(!this._newCalendarCb){\r
106266 this._newCalendarCb=new AjxCallback(this,this._newCalendarCallback)\r
106267 }\r
106268 ZmController.showDialog(e,this._newCalendarCb)\r
106269 };\r
106270 ZmCalendarApp.prototype.launch=function(t,a){\r
106271 var e=new AjxCallback(this,this._handleLoadLaunch,[t,a]);\r
106272 AjxDispatcher.require(["CalendarCore","Calendar"],true,e,null,true)\r
106273 };\r
106274 ZmCalendarApp.prototype._handleLoadLaunch=function(s,h){\r
106275 var r=AjxDispatcher.run("GetCalController");\r
106276 var t=r._defaultView();\r
106277 var n=null;\r
106278 s=s||{};\r
106279 if(s.qsParams){\r
106280 var o=s.qsParams.view;\r
106281 if(o){\r
106282 var e=ZmCalendarApp.VIEW_FOR_SETTING[o];\r
106283 if(e){\r
106284 t=e;\r
106285 var a=s.qsParams.date;\r
106286 if(a){\r
106287 a=AjxDateUtil.parseServerDateTime(a);\r
106288 if(a&&!isNaN(a)){\r
106289 n=new Date((a).setHours(0,0,0,0))\r
106290 }}}}}\r
106291 if(appCtxt.get(ZmSetting.CONTACTS_ENABLED)){\r
106292 this.initResources()\r
106293 }\r
106294 r.show(t,n);\r
106295 if(h){\r
106296 h.run()\r
106297 }};\r
106298 ZmCalendarApp.prototype.showSearchResults=function(t,o,a,e){\r
106299 if(o){\r
106300 o.run()\r
106301 }};\r
106302 ZmCalendarApp.prototype.activate=function(t){\r
106303 ZmApp.prototype.activate.apply(this,arguments);\r
106304 if(appCtxt.get(ZmSetting.CALENDAR_ENABLED)){\r
106305 var e=t||appCtxt.get(ZmSetting.CAL_ALWAYS_SHOW_MINI_CAL);\r
106306 AjxDispatcher.run("ShowMiniCalendar",e)\r
106307 }};\r
106308 ZmCalendarApp.prototype.showMiniCalendar=function(e,t){\r
106309 var a=AjxDispatcher.run("GetCalController").getMiniCalendar(t);\r
106310 a.setSkipNotifyOnPage(e&&!this._active);\r
106311 if(!this._active){\r
106312 a.setSelectionMode(DwtCalendar.DAY)\r
106313 }\r
106314 appCtxt.getAppViewMgr().showTreeFooter(e)\r
106315 };\r
106316 ZmCalendarApp.prototype.getListController=function(){\r
106317 return this.getCalController()\r
106318 };\r
106319 ZmCalendarApp.prototype.getCalController=function(){\r
106320 if(!this._calController){\r
106321 AjxDispatcher.require("CalendarCore");\r
106322 this._calController=new ZmCalViewController(this._container,this)\r
106323 }\r
106324 return this._calController\r
106325 };\r
106326 ZmCalendarApp.prototype.getReminderController=function(){\r
106327 if(!this._reminderController){\r
106328 AjxDispatcher.require("CalendarCore");\r
106329 var e=appCtxt.getCalManager();\r
106330 this._reminderController=e.getReminderController();\r
106331 this._reminderController._calController=this.getCalController()\r
106332 }\r
106333 return this._reminderController\r
106334 };\r
106335 ZmCalendarApp.prototype.getApptComposeController=function(){\r
106336 if(!this._apptController){\r
106337 AjxDispatcher.require(["CalendarCore","Calendar","CalendarAppt"]);\r
106338 this._apptController=new ZmApptComposeController(this._container,this)\r
106339 }\r
106340 return this._apptController\r
106341 };\r
106342 ZmCalendarApp.prototype.initResources=function(){\r
106343 if(!this._locations){\r
106344 this._locations=new ZmResourceList(ZmCalBaseItem.LOCATION);\r
106345 this._locations.isCanonical=true\r
106346 }\r
106347 if(!this._equipment){\r
106348 this._equipment=new ZmResourceList(ZmCalBaseItem.EQUIPMENT);\r
106349 this._equipment.isCanonical=true\r
106350 }};\r
106351 ZmCalendarApp.prototype.loadResources=function(){\r
106352 this.initResources();\r
106353 if(appCtxt.get(ZmSetting.GAL_ENABLED)){\r
106354 var e=new ZmBatchCommand();\r
106355 if(!this._locations.isLoaded){\r
106356 e.add(new AjxCallback(this._locations,this._locations.load))\r
106357 }\r
106358 if(!this._equipment.isLoaded){\r
106359 e.add(new AjxCallback(this._equipment,this._equipment.load))\r
106360 }\r
106361 if(e._cmds.length){\r
106362 e.run()\r
106363 }}};\r
106364 ZmCalendarApp.prototype.getLocations=function(){\r
106365 this.initResources();\r
106366 return this._locations\r
106367 };\r
106368 ZmCalendarApp.prototype.getEquipment=function(){\r
106369 this.initResources();\r
106370 return this._equipment\r
106371 };\r
106372 ZmCalendarApp.prototype._setMiniCalForActiveAccount=function(){};\r
106373 ZmCalendarApp.prototype.getCheckedCalendarFolderIds=function(e){\r
106374 var n=[];\r
106375 if(AjxDispatcher.loaded("CalendarCore")){\r
106376 n=this.getCalController().getCheckedCalendarFolderIds(e)\r
106377 }else{\r
106378 this._folderNames={};\r
106379 for(var t=0;\r
106380 t<this._deferredFolders.length;\r
106381 t++){\r
106382 var o=this._deferredFolders[t];\r
106383 var a=(o&&o.obj&&o.obj.f)?o.obj.f:"";\r
106384 if(a&&(a.indexOf(ZmOrganizer.FLAG_CHECKED)!=-1)){\r
106385 if(e&&(o.obj.zid!=null)){\r
106386 continue\r
106387 }\r
106388 n.push(o.obj.id);\r
106389 this._folderNames[o.obj.id]=o.obj.name\r
106390 }}}\r
106391 return n\r
106392 };\r
106393 ZmCalendarApp.prototype.getCalendarName=function(e){\r
106394 return appCtxt.getById(e)?appCtxt.getById(e).name:this._folderNames[e]\r
106395 };\r
106396 ZmCalendarApp.createMiniCalButton=function(c,s,n,t){\r
106397 var h=new DwtButton({\r
106398 parent:c}\r
106399 );\r
106400 h.addDropDownSelectionListener(n);\r
106401 h.setData(Dwt.KEY_ID,s);\r
106402 if(AjxEnv.isIE){\r
106403 h.setSize("20")\r
106404 }\r
106405 var r=new DwtMenu({\r
106406 parent:h,style:DwtMenu.CALENDAR_PICKER_STYLE}\r
106407 );\r
106408 r.setSize("150");\r
106409 r._table.width="100%";\r
106410 h.setMenu(r,true);\r
106411 var e=new DwtCalendar({\r
106412 parent:r}\r
106413 );\r
106414 e.setData(Dwt.KEY_ID,s);\r
106415 e.setSkipNotifyOnPage(true);\r
106416 var o=appCtxt.get(ZmSetting.CAL_FIRST_DAY_OF_WEEK)||0;\r
106417 e.setFirstDayOfWeek(o);\r
106418 e.addSelectionListener(t);\r
106419 var l=appCtxt.getSettings().getSetting(ZmSetting.CAL_FIRST_DAY_OF_WEEK);\r
106420 if(l){\r
106421 var a=new AjxListener(null,ZmCalendarApp._settingChangeListener,e);\r
106422 l.addChangeListener(a)\r
106423 }\r
106424 h.reparentHtmlElement(s);\r
106425 delete s;\r
106426 return h\r
106427 };\r
106428 ZmCalendarApp.createReminderButton=function(c,r,u,n){\r
106429 var h=new DwtButton({\r
106430 parent:c}\r
106431 );\r
106432 h.addDropDownSelectionListener(u);\r
106433 h.setData(Dwt.KEY_ID,r);\r
106434 if(AjxEnv.isIE){\r
106435 h.setSize("20")\r
106436 }\r
106437 var l=new DwtMenu({\r
106438 parent:h,style:DwtMenu.DROPDOWN_STYLE}\r
106439 );\r
106440 l.setSize("150");\r
106441 l._table.width="100%";\r
106442 h.setMenu(l,true);\r
106443 var t=[ZmMsg.apptRemindNever,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNMinutesBefore,ZmMsg.apptRemindNHoursBefore,ZmMsg.apptRemindNHoursBefore,ZmMsg.apptRemindNHoursBefore,ZmMsg.apptRemindNHoursBefore,ZmMsg.apptRemindNHoursBefore,ZmMsg.apptRemindNDaysBefore,ZmMsg.apptRemindNDaysBefore,ZmMsg.apptRemindNDaysBefore,ZmMsg.apptRemindNDaysBefore,ZmMsg.apptRemindNWeeksBefore,ZmMsg.apptRemindNWeeksBefore];\r
106444 var m=[0,1,5,10,15,30,45,60,120,180,240,300,1080,1440,2880,4320,5760,10080,20160];\r
106445 var o=[0,1,5,10,15,30,45,60,2,3,4,5,18,1,2,3,4,1,2];\r
106446 var s=appCtxt.get(ZmSetting.CAL_REMINDER_WARNING_TIME);\r
106447 for(var e=0;\r
106448 e<m.length;\r
106449 e++){\r
106450 var d=ZmCalendarApp.__formatLabel(t[e],o[e]);\r
106451 var a=new DwtMenuItem({\r
106452 parent:l,style:DwtMenuItem.NO_STYLE}\r
106453 );\r
106454 a.setText(d);\r
106455 a.setData("value",m[e]);\r
106456 if(n){\r
106457 a.addSelectionListener(n)\r
106458 }}\r
106459 h.reparentHtmlElement(r);\r
106460 delete r;\r
106461 return h\r
106462 };\r
106463 ZmCalendarApp.getReminderSummary=function(e){\r
106464 var o=((e%60)==0);\r
106465 var a=((e%(60*24))==0);\r
106466 var t=((e%(60*24*7))==0);\r
106467 if(e==0){\r
106468 return ZmMsg.apptRemindNever\r
106469 }else{\r
106470 if(t){\r
106471 return ZmCalendarApp.__formatLabel(ZmMsg.apptRemindNWeeksBefore,e/(60*24*7))\r
106472 }else{\r
106473 if(a){\r
106474 return ZmCalendarApp.__formatLabel(ZmMsg.apptRemindNDaysBefore,e/(60*24))\r
106475 }else{\r
106476 if(o){\r
106477 return ZmCalendarApp.__formatLabel(ZmMsg.apptRemindNHoursBefore,e/60)\r
106478 }else{\r
106479 return ZmCalendarApp.__formatLabel(ZmMsg.apptRemindNMinutesBefore,e)\r
106480 }}}}};\r
106481 ZmCalendarApp._settingChangeListener=function(a,t){\r
106482 if(t.type!=ZmEvent.S_SETTING){\r
106483 return\r
106484 }\r
106485 var e=t.source;\r
106486 if(e.id==ZmSetting.CAL_FIRST_DAY_OF_WEEK){\r
106487 a.setFirstDayOfWeek(e.getValue())\r
106488 }};\r
106489 ZmCalendarApp.prototype._newCalendarCallback=function(s,o,t,a,r){\r
106490 var n=appCtxt.getNewCalendarDialog();\r
106491 n.popdown();\r
106492 var e=appCtxt.getOverviewController();\r
106493 e.getTreeController(ZmOrganizer.CALENDAR)._doCreate(s,o,t,a,r)\r
106494 };\r
106495 ZmCalendarApp.addInviteReplyMenu=function(e){\r
106496 var t=[ZmOperation.EDIT_REPLY_ACCEPT,ZmOperation.EDIT_REPLY_TENTATIVE,ZmOperation.EDIT_REPLY_DECLINE];\r
106497 var a=new ZmActionMenu({\r
106498 parent:e,menuItems:t}\r
106499 );\r
106500 e.setMenu(a);\r
106501 return a\r
106502 };\r
106503 ZmCalendarApp.addCalViewMenu=function(e){\r
106504 var t=[ZmOperation.DAY_VIEW,ZmOperation.WORK_WEEK_VIEW,ZmOperation.WEEK_VIEW,ZmOperation.MONTH_VIEW,ZmOperation.CAL_LIST_VIEW,ZmOperation.SCHEDULE_VIEW];\r
106505 var a=new ZmActionMenu({\r
106506 parent:e,menuItems:t}\r
106507 );\r
106508 e.setMenu(a);\r
106509 return a\r
106510 };\r
106511 ZmCalendarApp.__formatLabel=function(t,e){\r
106512 t=t||"";\r
106513 return t.match(/\{/)?AjxMessageFormat.format(t,e):t\r
106514 };\r
106515 ZmCalendarApp.parseReminderString=function(c){\r
106516 var h={};\r
106517 h[ZmMsg.apptRemindNDaysBefore]=ZmCalItem.REMINDER_UNIT_DAYS;\r
106518 h[ZmMsg.apptRemindNMinutesBefore]=ZmCalItem.REMINDER_UNIT_MINUTES;\r
106519 h[ZmMsg.apptRemindNHoursBefore]=ZmCalItem.REMINDER_UNIT_HOURS;\r
106520 h[ZmMsg.apptRemindNWeeksBefore]=ZmCalItem.REMINDER_UNIT_WEEKS;\r
106521 c=AjxStringUtil.trim(c);\r
106522 var l=c;\r
106523 var s=l.replace(/\D/g,"");\r
106524 s=AjxStringUtil.trim(s);\r
106525 if(s==""){\r
106526 return{\r
106527 reminderValue:"",reminderUnits:ZmCalItem.REMINDER_NONE}\r
106528 }else{\r
106529 if(s.indexOf(" ")>=0){\r
106530 s=s.split(" ")[0]\r
106531 }}\r
106532 for(var r in h){\r
106533 var e=ZmCalendarApp.__formatLabel(r,s);\r
106534 if(e!=""&&e.toLowerCase()==c.toLowerCase()){\r
106535 return{\r
106536 reminderValue:s,reminderUnits:h[r]}\r
106537 }}\r
106538 var n=parseInt(s);\r
106539 var a={};\r
106540 a[ZmCalItem.REMINDER_UNIT_MINUTES]=AjxMsg.minute;\r
106541 a[ZmCalItem.REMINDER_UNIT_HOURS]=AjxMsg.hour;\r
106542 a[ZmCalItem.REMINDER_UNIT_DAYS]=AjxMsg.day;\r
106543 a[ZmCalItem.REMINDER_UNIT_WEEKS]=AjxMsg.week;\r
106544 var t=ZmCalItem.REMINDER_UNIT_HOURS;\r
106545 for(var o in a){\r
106546 if(l.indexOf(a[o])>=0){\r
106547 t=o;\r
106548 break\r
106549 }}\r
106550 return{\r
106551 reminderValue:n?n:0,reminderUnits:t}\r
106552 };\r
106553 ZmCalendarApp.convertReminderUnits=function(e,t){\r
106554 switch(t){\r
106555 case ZmCalItem.REMINDER_UNIT_MINUTES:return e;\r
106556 case ZmCalItem.REMINDER_UNIT_HOURS:return e*60;\r
106557 case ZmCalItem.REMINDER_UNIT_DAYS:return e*60*24;\r
106558 case ZmCalItem.REMINDER_UNIT_WEEKS:return e*60*24*7;\r
106559 default:return 0\r
106560 }};\r
106561 ZmCalendarApp.prototype.updateResourceCache=function(a){\r
106562 var t=a.getFullName();\r
106563 if(t){\r
106564 this._resByName[t.toLowerCase()]=a\r
106565 }\r
106566 var e=a.getEmail();\r
106567 if(e){\r
106568 this._resByEmail[e.toLowerCase()]=a\r
106569 }};\r
106570 ZmCalendarApp.prototype._addSettingsChangeListeners=function(){\r
106571 ZmApp.prototype._addSettingsChangeListeners.call(this);\r
106572 if(!this._settingsListener){\r
106573 this._settingsListener=new AjxListener(this,this._settingsChangeListener)\r
106574 }\r
106575 var e=appCtxt.getSettings();\r
106576 e.getSetting(ZmSetting.CAL_SHOW_CALENDAR_WEEK).addChangeListener(this._settingListener);\r
106577 e.addChangeListener(this._settingsListener)\r
106578 };\r
106579 ZmCalendarApp.prototype._settingsChangeListener=function(o){\r
106580 if(o.type!=ZmEvent.S_SETTINGS){\r
106581 return\r
106582 }\r
106583 var n=o.getDetail("settings");\r
106584 if(!(n&&n.length)){\r
106585 return\r
106586 }\r
106587 for(var t=0;\r
106588 t<n.length;\r
106589 t++){\r
106590 var a=n[t];\r
106591 if(a.id==ZmSetting.CAL_SHOW_CALENDAR_WEEK){\r
106592 var e=AjxDispatcher.run("GetCalController").recreateMiniCalendar();\r
106593 var s=appCtxt.getCalManager();\r
106594 s.highlightMiniCal()\r
106595 }}};\r
106596 ZmCalendarApp.prototype.showDayView=function(a){\r
106597 var t=AjxDispatcher.run("GetCalController");\r
106598 var e=t.getMiniCalendar();\r
106599 t.setDate(a,0,e.getForceRollOver());\r
106600 if(!t._viewVisible){\r
106601 t.show(ZmId.VIEW_CAL_DAY)\r
106602 }};\r
106603 ZmCalendarApp.prototype.getDateToolTip=function(e){\r
106604 var t=AjxDispatcher.run("GetCalController");\r
106605 return t.getDayToolTipText(e)\r
106606 }\r
106607 }\r
106608 if(AjxPackage.define("zimbraMail.tasks.ZmTasksApp")){\r
106609 ZmTasksApp=function(e){\r
106610 ZmApp.call(this,ZmApp.TASKS,e)\r
106611 };\r
106612 ZmEvent.S_TASK=ZmId.ITEM_TASK;\r
106613 ZmItem.TASK=ZmEvent.S_TASK;\r
106614 ZmOrganizer.TASKS=ZmEvent.S_TASK;\r
106615 ZmApp.TASKS=ZmId.APP_TASKS;\r
106616 ZmApp.CLASS[ZmApp.TASKS]="ZmTasksApp";\r
106617 ZmApp.SETTING[ZmApp.TASKS]=ZmSetting.TASKS_ENABLED;\r
106618 ZmApp.LOAD_SORT[ZmApp.TASKS]=45;\r
106619 ZmApp.QS_ARG[ZmApp.TASKS]="tasks";\r
106620 ZmTasksApp.prototype=new ZmApp;\r
106621 ZmTasksApp.prototype.constructor=ZmTasksApp;\r
106622 ZmTasksApp.prototype.toString=function(){\r
106623 return"ZmTasksApp"\r
106624 };\r
106625 ZmTasksApp.prototype._defineAPI=function(){\r
106626 AjxDispatcher.setPackageLoadFunction("TasksCore",new AjxCallback(this,this._postLoadCore));\r
106627 AjxDispatcher.setPackageLoadFunction("Tasks",new AjxCallback(this,this._postLoad,ZmOrganizer.TASKS));\r
106628 AjxDispatcher.registerMethod("GetTaskListController",["TasksCore","Tasks"],new AjxCallback(this,this.getTaskListController));\r
106629 AjxDispatcher.registerMethod("GetTaskController",["TasksCore","Tasks"],new AjxCallback(this,this.getTaskController))\r
106630 };\r
106631 ZmTasksApp.prototype._registerOperations=function(){\r
106632 ZmOperation.registerOp(ZmId.OP_MOUNT_TASK_FOLDER,{\r
106633 textKey:"mountTaskFolder",image:"TaskList"}\r
106634 );\r
106635 ZmOperation.registerOp(ZmId.OP_NEW_TASK,{\r
106636 textKey:"newTask",tooltipKey:"newTaskTooltip",image:"NewTask",shortcut:ZmKeyMap.NEW_TASK}\r
106637 );\r
106638 ZmOperation.registerOp(ZmId.OP_NEW_TASK_FOLDER,{\r
106639 textKey:"newTaskFolder",tooltipKey:"newTaskFolderTooltip",image:"NewTaskList"}\r
106640 );\r
106641 ZmOperation.registerOp(ZmId.OP_SHARE_TASKFOLDER,{\r
106642 textKey:"shareTaskFolder",image:"TaskList"}\r
106643 );\r
106644 ZmOperation.registerOp(ZmId.OP_PRINT_TASK,{\r
106645 textKey:"printTask",image:"Print",shortcut:ZmKeyMap.PRINT}\r
106646 ,ZmSetting.PRINT_ENABLED);\r
106647 ZmOperation.registerOp(ZmId.OP_PRINT_TASKFOLDER,{\r
106648 textKey:"printTaskFolder",image:"Print"}\r
106649 ,ZmSetting.PRINT_ENABLED)\r
106650 };\r
106651 ZmTasksApp.prototype._registerItems=function(){\r
106652 ZmItem.registerItem(ZmItem.TASK,{\r
106653 app:ZmApp.TASKS,nameKey:"task",pluralNameKey:"tasks",icon:"TaskList",soapCmd:"ItemAction",itemClass:"ZmTask",node:"task",organizer:ZmOrganizer.TASKS,dropTargets:[ZmOrganizer.TAG,ZmOrganizer.TASKS],searchType:"task",resultsList:AjxCallback.simpleClosure(function(e){\r
106654 AjxDispatcher.require("TasksCore");\r
106655 return new ZmTaskList(e)\r
106656 }\r
106657 ,this)}\r
106658 )\r
106659 };\r
106660 ZmTasksApp.prototype._registerOrganizers=function(){\r
106661 ZmOrganizer.registerOrg(ZmOrganizer.TASKS,{\r
106662 app:ZmApp.TASKS,nameKey:"taskFolder",defaultFolder:ZmFolder.ID_TASKS,soapCmd:"FolderAction",firstUserId:256,orgClass:"ZmTaskFolder",orgPackage:"TasksCore",treeController:"ZmTaskTreeController",labelKey:"tasks",itemsKey:"tasks",folderKey:"tasksFolder",hasColor:true,defaultColor:ZmOrganizer.C_NONE,treeType:ZmOrganizer.FOLDER,views:["task"],createFunc:"ZmOrganizer.create",compareFunc:"ZmTaskFolder.sortCompare",deferrable:true,newOp:ZmOperation.NEW_TASK_FOLDER,displayOrder:100,pathInName:true}\r
106663 )\r
106664 };\r
106665 ZmTasksApp.prototype._setupSearchToolbar=function(){\r
106666 ZmSearchToolBar.addMenuItem(ZmItem.TASK,{\r
106667 msgKey:"tasks",tooltipKey:"searchTasks",icon:"TaskList",shareIcon:"SharedTaskList",setting:ZmSetting.TASKS_ENABLED,id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.ITEM_TASK)}\r
106668 )\r
106669 };\r
106670 ZmTasksApp.prototype._registerApp=function(){\r
106671 var a={};\r
106672 a[ZmOperation.NEW_TASK]="task";\r
106673 var t={};\r
106674 t[ZmOperation.NEW_TASK_FOLDER]="tasksFolder";\r
106675 var e={};\r
106676 e[ZmKeyMap.NEW_TASK]=ZmOperation.NEW_TASK;\r
106677 ZmApp.registerApp(ZmApp.TASKS,{\r
106678 mainPkg:"Tasks",nameKey:"tasks",icon:"TaskList",textPrecedence:20,chooserTooltipKey:"goToTasks",defaultSearch:ZmItem.TASK,organizer:ZmOrganizer.TASKS,overviewTrees:[ZmOrganizer.TASKS,ZmOrganizer.SEARCH,ZmOrganizer.TAG],assistants:{\r
106679 ZmTaskAssistant:["TasksCore","Tasks"]}\r
106680 ,newItemOps:a,newOrgOps:t,actionCodes:e,searchTypes:[ZmItem.TASK],gotoActionCode:ZmKeyMap.GOTO_TASKS,newActionCode:ZmKeyMap.NEW_TASK,chooserSort:35,defaultSort:25}\r
106681 )\r
106682 };\r
106683 ZmTasksApp.prototype.postNotify=function(e){\r
106684 if(this._checkReplenishListView){\r
106685 this._checkReplenishListView._checkReplenish();\r
106686 this._checkReplenishListView=null\r
106687 }};\r
106688 ZmTasksApp.prototype.handleOp=function(a,t){\r
106689 switch(a){\r
106690 case ZmOperation.NEW_TASK:var e=new AjxCallback(this,this._handleLoadNewTask,[t]);\r
106691 AjxDispatcher.require(["TasksCore","Tasks"],false,e,null,true);\r
106692 break;\r
106693 case ZmOperation.NEW_TASK_FOLDER:var e=new AjxCallback(this,this._handleLoadNewTaskFolder);\r
106694 AjxDispatcher.require(["TasksCore","Tasks"],false,e,null,true);\r
106695 break\r
106696 }};\r
106697 ZmTasksApp.prototype._handleLoadNewTask=function(t){\r
106698 var e=t?t.folderId:null;\r
106699 AjxDispatcher.run("GetTaskController").show((new ZmTask(null,null,e)))\r
106700 };\r
106701 ZmTasksApp.prototype._handleLoadNewTaskFolder=function(){\r
106702 appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_LOADING);\r
106703 var e=appCtxt.getNewTaskFolderDialog();\r
106704 if(!this._newTaskFolderCb){\r
106705 this._newTaskFolderCb=new AjxCallback(this,this._newTaskFolderCallback)\r
106706 }\r
106707 ZmController.showDialog(e,this._newTaskFolderCb)\r
106708 };\r
106709 ZmTasksApp.prototype.createNotify=function(n,r){\r
106710 if(!n.folder&&!n.task&&!n.link){\r
106711 return\r
106712 }\r
106713 if(!r&&this._deferNotifications("create",n)){\r
106714 return\r
106715 }\r
106716 for(var e in n){\r
106717 var s=n[e];\r
106718 if(!s){\r
106719 continue\r
106720 }\r
106721 for(var o=0;\r
106722 o<s.length;\r
106723 o++){\r
106724 var a=s[o];\r
106725 if(appCtxt.cacheGet(a.id)){\r
106726 continue\r
106727 }\r
106728 if(e=="folder"){\r
106729 this._handleCreateFolder(a,ZmOrganizer.TASKS)\r
106730 }else{\r
106731 if(e=="link"){\r
106732 this._handleCreateLink(a,ZmOrganizer.TASKS)\r
106733 }else{\r
106734 if(e=="task"){\r
106735 var t=this.getTaskListController().getList();\r
106736 if(t){\r
106737 t.notifyCreate(a)\r
106738 }}}}}}};\r
106739 ZmTasksApp.prototype.launch=function(t,a){\r
106740 var e=new AjxCallback(this,this._handleLoadLaunch,a);\r
106741 AjxDispatcher.require(["TasksCore","Tasks"],true,e,null,true)\r
106742 };\r
106743 ZmTasksApp.prototype._handleLoadLaunch=function(e){\r
106744 this.search();\r
106745 if(e){\r
106746 e.run()\r
106747 }};\r
106748 ZmTasksApp.prototype.showSearchResults=function(a,n,o,t){\r
106749 var e=new AjxCallback(this,this._handleLoadShowSearchResults,[a,n,t]);\r
106750 AjxDispatcher.require("Tasks",false,e,null,true)\r
106751 };\r
106752 ZmTasksApp.prototype._handleLoadShowSearchResults=function(t,a,e){\r
106753 this.getTaskListController().show(t,e);\r
106754 if(a){\r
106755 a.run()\r
106756 }};\r
106757 ZmTasksApp.prototype.getListController=function(){\r
106758 return this.getTaskListController()\r
106759 };\r
106760 ZmTasksApp.prototype.getTaskListController=function(){\r
106761 if(!this._taskListController){\r
106762 this._taskListController=new ZmTaskListController(this._container,this)\r
106763 }\r
106764 return this._taskListController\r
106765 };\r
106766 ZmTasksApp.prototype.getTaskController=function(){\r
106767 if(!this._taskController){\r
106768 this._taskController=new ZmTaskController(this._container,this)\r
106769 }\r
106770 return this._taskController\r
106771 };\r
106772 ZmTasksApp.prototype.newTaskFromMailItem=function(a,e){\r
106773 var t=a.subject||"";\r
106774 if(a instanceof ZmConv){\r
106775 a=a.getFirstHotMsg()\r
106776 }\r
106777 a.load({\r
106778 getHtml:false,callback:new AjxCallback(this,this._msgLoadedCallback,[a,e,t])}\r
106779 )\r
106780 };\r
106781 ZmTasksApp.prototype._msgLoadedCallback=function(n,e,o){\r
106782 var a=new ZmTask();\r
106783 a.setStartDate(AjxDateUtil.roundTimeMins(e,30));\r
106784 a.setFromMailMessage(n,o);\r
106785 this.getTaskController().show(a,ZmCalItem.MODE_NEW)\r
106786 };\r
106787 ZmTasksApp.prototype.search=function(t,e,a,n){\r
106788 var o={\r
106789 query:(t?t.createQuery():"in:tasks"),types:[ZmItem.TASK],limit:this.getLimit(),searchFor:ZmItem.TASK,callback:n,accountName:(t&&t.account&&t.account.name)};\r
106790 appCtxt.getSearchController().search(o)\r
106791 };\r
106792 ZmTasksApp.prototype._newTaskFolderCallback=function(n,a,t){\r
106793 var o=appCtxt.getNewTaskFolderDialog();\r
106794 o.popdown();\r
106795 var e=appCtxt.getOverviewController();\r
106796 e.getTreeController(ZmOrganizer.TASKS)._doCreate(n,a,t)\r
106797 }\r
106798 }\r
106799 if(AjxPackage.define("zimbraMail.abook.ZmContactsApp")){\r
106800 ZmContactsApp=function(t,e){\r
106801 ZmApp.call(this,ZmApp.CONTACTS,t,e);\r
106802 var a=appCtxt.getSettings();\r
106803 a.addChangeListener(new AjxListener(this,this._settingsChangeListener));\r
106804 this.contactsLoaded={};\r
106805 this._contactList={};\r
106806 this._initialized=false;\r
106807 this._byEmail={};\r
106808 this._byIM={};\r
106809 this._byPhone={}\r
106810 };\r
106811 ZmEvent.S_CONTACT=ZmId.ITEM_CONTACT;\r
106812 ZmEvent.S_GROUP=ZmId.ITEM_GROUP;\r
106813 ZmItem.CONTACT=ZmEvent.S_CONTACT;\r
106814 ZmItem.GROUP=ZmEvent.S_GROUP;\r
106815 ZmOrganizer.ADDRBOOK=ZmId.ORG_ADDRBOOK;\r
106816 ZmApp.CONTACTS=ZmId.APP_CONTACTS;\r
106817 ZmApp.CLASS[ZmApp.CONTACTS]="ZmContactsApp";\r
106818 ZmApp.SETTING[ZmApp.CONTACTS]=ZmSetting.CONTACTS_ENABLED;\r
106819 ZmApp.UPSELL_SETTING[ZmApp.CONTACTS]=ZmSetting.CONTACTS_UPSELL_ENABLED;\r
106820 ZmApp.LOAD_SORT[ZmApp.CONTACTS]=30;\r
106821 ZmApp.QS_ARG[ZmApp.CONTACTS]="contacts";\r
106822 ZmContactsApp.SEARCHFOR_CONTACTS=1;\r
106823 ZmContactsApp.SEARCHFOR_GAL=2;\r
106824 ZmContactsApp.SEARCHFOR_PAS=3;\r
106825 ZmContactsApp.SEARCHFOR_MAX=50;\r
106826 ZmContactsApp.prototype=new ZmApp;\r
106827 ZmContactsApp.prototype.constructor=ZmContactsApp;\r
106828 ZmContactsApp.prototype.toString=function(){\r
106829 return"ZmContactsApp"\r
106830 };\r
106831 ZmContactsApp.prototype._defineAPI=function(){\r
106832 AjxDispatcher.setPackageLoadFunction("ContactsCore",new AjxCallback(this,this._postLoadCore));\r
106833 AjxDispatcher.setPackageLoadFunction("Contacts",new AjxCallback(this,this._postLoad,ZmOrganizer.ADDRBOOK));\r
106834 AjxDispatcher.registerMethod("GetContacts","ContactsCore",new AjxCallback(this,this.getContactList));\r
106835 AjxDispatcher.registerMethod("GetContactsForAllAccounts","ContactsCore",new AjxCallback(this,this.getContactListForAllAccounts));\r
106836 AjxDispatcher.registerMethod("GetContactListController",["ContactsCore","Contacts"],new AjxCallback(this,this.getContactListController));\r
106837 AjxDispatcher.registerMethod("GetContactController",["ContactsCore","Contacts"],new AjxCallback(this,this.getContactController))\r
106838 };\r
106839 ZmContactsApp.prototype._registerSettings=function(e){\r
106840 var e=e||appCtxt.getSettings();\r
106841 e.registerSetting("AUTO_ADD_ADDRESS",{\r
106842 name:"zimbraPrefAutoAddAddressEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
106843 );\r
106844 e.registerSetting("AUTOCOMPLETE_LIMIT",{\r
106845 name:"zimbraContactAutoCompleteMaxResults",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:20}\r
106846 );\r
106847 e.registerSetting("AUTOCOMPLETE_SHARE",{\r
106848 name:"zimbraPrefShareContactsInAutoComplete",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
106849 );\r
106850 e.registerSetting("AUTOCOMPLETE_SHARED_ADDR_BOOKS",{\r
106851 name:"zimbraPrefSharedAddrBookAutoCompleteEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
106852 );\r
106853 e.registerSetting("CONTACTS_VIEW",{\r
106854 name:"zimbraPrefContactsInitialView",type:ZmSetting.T_PREF,defaultValue:ZmSetting.CV_LIST,isGlobal:true}\r
106855 );\r
106856 e.registerSetting("EXPORT",{\r
106857 type:ZmSetting.T_PREF,dataType:ZmSetting.D_NONE}\r
106858 );\r
106859 e.registerSetting("GAL_AUTOCOMPLETE",{\r
106860 name:"zimbraPrefGalAutoCompleteEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
106861 );\r
106862 e.registerSetting("IMPORT",{\r
106863 type:ZmSetting.T_PREF,dataType:ZmSetting.D_NONE}\r
106864 );\r
106865 e.registerSetting("MAX_CONTACTS",{\r
106866 name:"zimbraContactMaxNumEntries",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:0}\r
106867 );\r
106868 e.registerSetting("NEW_ADDR_BOOK_ENABLED",{\r
106869 name:"zimbraFeatureNewAddrBookEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
106870 )\r
106871 };\r
106872 ZmContactsApp.prototype._registerPrefs=function(){\r
106873 var t={\r
106874 CONTACTS:{\r
106875 title:ZmMsg.addressBook,icon:"ContactsApp",templateId:"prefs.Pages#Contacts",priority:50,precondition:ZmSetting.CONTACTS_ENABLED,prefs:[ZmSetting.AUTO_ADD_ADDRESS,ZmSetting.AUTOCOMPLETE_SHARE,ZmSetting.AUTOCOMPLETE_SHARED_ADDR_BOOKS,ZmSetting.CONTACTS_VIEW,ZmSetting.EXPORT,ZmSetting.GAL_AUTOCOMPLETE,ZmSetting.INITIALLY_SEARCH_GAL,ZmSetting.IMPORT]}};\r
106876 for(var e in t){\r
106877 ZmPref.registerPrefSection(e,t[e])\r
106878 }\r
106879 ZmPref.registerPref("AUTO_ADD_ADDRESS",{\r
106880 displayName:ZmMsg.autoAddContacts,displayContainer:ZmPref.TYPE_CHECKBOX}\r
106881 );\r
106882 ZmPref.registerPref("AUTOCOMPLETE_SHARE",{\r
106883 displayName:ZmMsg.autocompleteShare,displayContainer:ZmPref.TYPE_CHECKBOX}\r
106884 );\r
106885 ZmPref.registerPref("AUTOCOMPLETE_SHARED_ADDR_BOOKS",{\r
106886 displayName:ZmMsg.autocompleteSharedAddrBooks,displayContainer:ZmPref.TYPE_CHECKBOX}\r
106887 );\r
106888 ZmPref.registerPref("CONTACTS_VIEW",{\r
106889 displayName:ZmMsg.viewContacts,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[ZmMsg.detailedCards,ZmMsg.contactList],options:[ZmSetting.CV_CARDS,ZmSetting.CV_LIST]}\r
106890 );\r
106891 ZmPref.registerPref("EXPORT",{\r
106892 loadFunction:ZmPref.loadCsvFormats,displayContainer:ZmPref.TYPE_EXPORT}\r
106893 );\r
106894 ZmPref.registerPref("GAL_AUTOCOMPLETE",{\r
106895 displayName:ZmMsg.galAutocomplete,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:function(){\r
106896 return appCtxt.get(ZmSetting.GAL_AUTOCOMPLETE_ENABLED)&&appCtxt.get(ZmSetting.GAL_ENABLED)\r
106897 }}\r
106898 );\r
106899 ZmPref.registerPref("IMPORT",{\r
106900 displayName:ZmMsg.importFromCSV,displayContainer:ZmPref.TYPE_IMPORT}\r
106901 );\r
106902 ZmPref.registerPref("INITIALLY_SEARCH_GAL",{\r
106903 displayName:ZmMsg.initiallySearchGal,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:function(){\r
106904 return appCtxt.get(ZmSetting.GAL_ENABLED)&&appCtxt.getActiveAccount().isZimbraAccount\r
106905 }}\r
106906 )\r
106907 };\r
106908 ZmContactsApp.prototype._registerOperations=function(){\r
106909 ZmOperation.registerOp(ZmId.OP_CONTACT);\r
106910 ZmOperation.registerOp(ZmId.OP_EDIT_CONTACT,{\r
106911 textKey:"AB_EDIT_CONTACT",image:"Edit",shortcut:ZmKeyMap.EDIT}\r
106912 );\r
106913 ZmOperation.registerOp(ZmId.OP_MOUNT_ADDRBOOK,{\r
106914 textKey:"mountAddrBook",image:"ContactsFolder"}\r
106915 );\r
106916 ZmOperation.registerOp(ZmId.OP_NEW_ADDRBOOK,{\r
106917 textKey:"newAddrBook",tooltipKey:"newAddrBookTooltip",image:"NewContactsFolder"}\r
106918 ,ZmSetting.NEW_ADDR_BOOK_ENABLED);\r
106919 ZmOperation.registerOp(ZmId.OP_NEW_CONTACT,{\r
106920 textKey:"newContact",tooltipKey:"newContactTooltip",image:"NewContact",shortcut:ZmKeyMap.NEW_CONTACT}\r
106921 ,ZmSetting.CONTACTS_ENABLED);\r
106922 ZmOperation.registerOp(ZmId.OP_NEW_GROUP,{\r
106923 textKey:"newGroup",tooltipKey:"newGroupTooltip",image:"NewGroup"}\r
106924 ,ZmSetting.CONTACTS_ENABLED);\r
106925 ZmOperation.registerOp(ZmId.OP_PRINT_CONTACT,{\r
106926 textKey:"printContact",image:"Print",shortcut:ZmKeyMap.PRINT}\r
106927 ,ZmSetting.PRINT_ENABLED);\r
106928 ZmOperation.registerOp(ZmId.OP_PRINT_ADDRBOOK,{\r
106929 textKey:"printAddrBook",image:"Print"}\r
106930 ,ZmSetting.PRINT_ENABLED);\r
106931 ZmOperation.registerOp(ZmId.OP_SHARE_ADDRBOOK,{\r
106932 textKey:"shareAddrBook",image:"SharedContactsFolder"}\r
106933 );\r
106934 ZmOperation.registerOp(ZmId.OP_SHOW_ONLY_CONTACTS,{\r
106935 textKey:"showOnlyContacts",image:"Contact"}\r
106936 ,ZmSetting.MIXED_VIEW_ENABLED)\r
106937 };\r
106938 ZmContactsApp.prototype._registerItems=function(){\r
106939 ZmItem.registerItem(ZmItem.CONTACT,{\r
106940 app:ZmApp.CONTACTS,nameKey:"contact",pluralNameKey:"contacts",icon:"Contact",soapCmd:"ContactAction",itemClass:"ZmContact",node:"cn",organizer:ZmOrganizer.ADDRBOOK,dropTargets:[ZmOrganizer.TAG,ZmOrganizer.ZIMLET,ZmOrganizer.ADDRBOOK],searchType:"contact",resultsList:AjxCallback.simpleClosure(function(e){\r
106941 AjxDispatcher.require("ContactsCore");\r
106942 return new ZmContactList(e,e?e.isGalSearch||e.isGalAutocompleteSearch:null)\r
106943 }\r
106944 ,this)}\r
106945 );\r
106946 ZmItem.registerItem(ZmItem.GROUP,{\r
106947 nameKey:"group",icon:"Group",soapCmd:"ContactAction"}\r
106948 )\r
106949 };\r
106950 ZmContactsApp.prototype._registerOrganizers=function(){\r
106951 var e={};\r
106952 ZmOrganizer.registerOrg(ZmOrganizer.ADDRBOOK,{\r
106953 app:ZmApp.CONTACTS,nameKey:"addressBook",defaultFolder:ZmOrganizer.ID_ADDRBOOK,soapCmd:"FolderAction",firstUserId:256,orgClass:"ZmAddrBook",orgPackage:"ContactsCore",treeController:"ZmAddrBookTreeController",labelKey:"addressBooks",itemsKey:"contacts",hasColor:true,defaultColor:ZmOrganizer.C_NONE,orgColor:e,treeType:ZmOrganizer.FOLDER,dropTargets:[ZmOrganizer.ADDRBOOK],views:["contact"],folderKey:"addressBook",mountKey:"mountAddrBook",createFunc:"ZmOrganizer.create",compareFunc:"ZmAddrBook.sortCompare",displayOrder:100,newOp:ZmOperation.NEW_ADDRBOOK,deferrable:true}\r
106954 )\r
106955 };\r
106956 ZmContactsApp.prototype._setupSearchToolbar=function(){\r
106957 ZmSearchToolBar.addMenuItem(ZmItem.CONTACT,{\r
106958 msgKey:"searchContacts",tooltipKey:"searchPersonalContacts",icon:"ContactsFolder",shareIcon:"SharedContactsFolder",id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.ITEM_CONTACT)}\r
106959 );\r
106960 ZmSearchToolBar.addMenuItem(ZmId.SEARCH_GAL,{\r
106961 msgKey:"searchGALContacts",tooltipKey:"searchGALContacts",icon:"GAL",setting:ZmSetting.GAL_ENABLED,id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.SEARCH_GAL)}\r
106962 )\r
106963 };\r
106964 ZmContactsApp.prototype._registerApp=function(){\r
106965 var a={};\r
106966 a[ZmOperation.NEW_CONTACT]="contact";\r
106967 a[ZmOperation.NEW_GROUP]="group";\r
106968 var t={};\r
106969 t[ZmOperation.NEW_ADDRBOOK]="addressBook";\r
106970 var e={};\r
106971 e[ZmKeyMap.NEW_CONTACT]=ZmOperation.NEW_CONTACT;\r
106972 ZmApp.registerApp(ZmApp.CONTACTS,{\r
106973 mainPkg:"Contacts",nameKey:"addressBook",icon:"ContactsApp",textPrecedence:40,chooserTooltipKey:"goToContacts",viewTooltipKey:"displayContacts",defaultSearch:ZmItem.CONTACT,organizer:ZmOrganizer.ADDRBOOK,overviewTrees:[ZmOrganizer.ADDRBOOK,ZmOrganizer.SEARCH,ZmOrganizer.TAG],assistants:{\r
106974 ZmContactAssistant:["ContactsCore","Contacts"]}\r
106975 ,searchTypes:[ZmItem.CONTACT],newItemOps:a,newOrgOps:t,actionCodes:e,gotoActionCode:ZmKeyMap.GOTO_CONTACTS,newActionCode:ZmKeyMap.NEW_CONTACT,trashViewOp:ZmOperation.SHOW_ONLY_CONTACTS,chooserSort:20,defaultSort:40,upsellUrl:ZmSetting.CONTACTS_UPSELL_URL}\r
106976 )\r
106977 };\r
106978 ZmContactsApp.prototype.createNotify=function(s,h){\r
106979 if(!s.folder&&!s.cn&&!s.link){\r
106980 return\r
106981 }\r
106982 if(!h&&!this._noDefer&&this._deferNotifications("create",s)){\r
106983 return\r
106984 }\r
106985 for(var t in s){\r
106986 var r=s[t];\r
106987 if(r&&r.length){\r
106988 for(var o=0;\r
106989 o<r.length;\r
106990 o++){\r
106991 var a=r[o];\r
106992 if(appCtxt.cacheGet(a.id)){\r
106993 continue\r
106994 }\r
106995 if(t=="folder"){\r
106996 this._handleCreateFolder(a,ZmOrganizer.ADDRBOOK)\r
106997 }else{\r
106998 if(t=="link"){\r
106999 this._handleCreateLink(a,ZmOrganizer.ADDRBOOK)\r
107000 }else{\r
107001 if(t=="cn"){\r
107002 var n=AjxDispatcher.run("GetContactListController");\r
107003 var e=(n&&n.getFolderId())?n.getList():new ZmContactList(null);\r
107004 if(appCtxt.multiAccounts&&e.search&&e.search.folderId!=a.l){\r
107005 continue\r
107006 }\r
107007 e.notifyCreate(a);\r
107008 appCtxt.getAutocompleter().clearCache(ZmAutocomplete.AC_TYPE_CONTACT);\r
107009 a._handled=true\r
107010 }}}}}}};\r
107011 ZmContactsApp.prototype.postNotify=function(e){\r
107012 if(this._checkReplenishListView){\r
107013 this._checkReplenishListView._checkReplenish();\r
107014 this._checkReplenishListView=null\r
107015 }};\r
107016 ZmContactsApp.prototype.handleOp=function(a){\r
107017 switch(a){\r
107018 case ZmOperation.NEW_CONTACT:case ZmOperation.NEW_GROUP:var t=(a==ZmOperation.NEW_GROUP)?ZmItem.GROUP:null;\r
107019 var e=new AjxCallback(this,this._handleLoadNewItem,[t]);\r
107020 AjxDispatcher.require(["ContactsCore","Contacts"],false,e,null,true);\r
107021 break;\r
107022 case ZmOperation.NEW_ADDRBOOK:var e=new AjxCallback(this,this._handleLoadNewAddrBook);\r
107023 AjxDispatcher.require(["ContactsCore","Contacts"],false,e,null,true);\r
107024 break\r
107025 }};\r
107026 ZmContactsApp.prototype._handleLoadNewItem=function(t){\r
107027 var e=new ZmContact(null,null,t);\r
107028 AjxDispatcher.run("GetContactController").show(e)\r
107029 };\r
107030 ZmContactsApp.prototype._handleLoadNewAddrBook=function(){\r
107031 appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_LOADING);\r
107032 var e=appCtxt.getNewAddrBookDialog();\r
107033 if(!this._newAddrBookCb){\r
107034 this._newAddrBookCb=new AjxCallback(this,this._newAddrBookCallback)\r
107035 }\r
107036 ZmController.showDialog(e,this._newAddrBookCb)\r
107037 };\r
107038 ZmContactsApp.prototype.activate=function(n){\r
107039 ZmApp.prototype.activate.apply(this,arguments);\r
107040 if(!this._myCardChecked){\r
107041 var t=appCtxt.getSkinHint("myCardSupport");\r
107042 if(t){\r
107043 var e=appCtxt.getById(ZmOrganizer.ID_ROOT);\r
107044 var s={\r
107045 id:ZmOrganizer.ID_MY_CARD,name:ZmMsg.myCard,parent:e,tree:e.tree,type:ZmOrganizer.ADDRBOOK,numTotal:1};\r
107046 var o=new ZmAddrBook(s);\r
107047 e.children.add(o);\r
107048 o._notify(ZmEvent.E_CREATE);\r
107049 var a=appCtxt.getOverviewController().getOverview(this.getOverviewId()).getTreeItemById(o.id,ZmOrganizer.ADDRBOOK);\r
107050 a.enableSelection(true)\r
107051 }\r
107052 this._myCardChecked=true\r
107053 }};\r
107054 ZmContactsApp.prototype.launch=function(e,t){\r
107055 this._contactsSearch("in:contacts",t)\r
107056 };\r
107057 ZmContactsApp.prototype._contactsSearch=function(e,o){\r
107058 var a={\r
107059 searchFor:ZmId.ITEM_CONTACT,query:e,limit:this.getLimit(),types:[ZmId.ITEM_CONTACT],callback:o};\r
107060 var t=appCtxt.getSearchController();\r
107061 t.searchAllAccounts=false;\r
107062 t.search(a)\r
107063 };\r
107064 ZmContactsApp.prototype.getLimit=function(t){\r
107065 var e=appCtxt.get(ZmSetting.PAGE_SIZE);\r
107066 return t?e:2*e\r
107067 };\r
107068 ZmContactsApp.prototype.getInitialSearchType=function(){\r
107069 var e=appCtxt.getCurrentList();\r
107070 return(e&&(e instanceof ZmContactList)&&e.isGal)?ZmId.SEARCH_GAL:null\r
107071 };\r
107072 ZmContactsApp.prototype.showSearchResults=function(o,n,a,t){\r
107073 var e=new AjxCallback(this,this._handleLoadShowSearchResults,[o,n,a,t]);\r
107074 AjxDispatcher.require("Contacts",false,e,null,true)\r
107075 };\r
107076 ZmContactsApp.prototype._handleLoadShowSearchResults=function(a,o,t,e){\r
107077 this.getContactListController().show(a,t,e);\r
107078 if(o){\r
107079 o.run()\r
107080 }};\r
107081 ZmContactsApp.prototype.setActive=function(t){\r
107082 if(t){\r
107083 var e=AjxDispatcher.run("GetContactListController");\r
107084 e.show()\r
107085 }};\r
107086 ZmContactsApp.prototype.isContactListLoaded=function(e){\r
107087 var t=(e||appCtxt.getActiveAccount().id);\r
107088 return(this._contactList[t]&&this._contactList[t].isLoaded)\r
107089 };\r
107090 ZmContactsApp.prototype.getContactByEmail=function(s,r){\r
107091 if(!s){\r
107092 return null\r
107093 }\r
107094 var n=s.toLowerCase();\r
107095 var o=this._byEmail[n];\r
107096 if(!o&&this._notFound(n)){\r
107097 this._removeAddrFromLookupGroup(n);\r
107098 if(r){\r
107099 r.run(null)\r
107100 }\r
107101 return null\r
107102 }\r
107103 if(o){\r
107104 this._removeAddrFromLookupGroup(n);\r
107105 o=this._realizeContact(o);\r
107106 o._lookupEmail=s;\r
107107 if(r){\r
107108 r.run(o)\r
107109 }\r
107110 return o\r
107111 }\r
107112 if(r){\r
107113 var l=null,a=false,e=[];\r
107114 if(this._addrLookupHash&&this._addrLookupHash[n]){\r
107115 if(this._addrLookupList){\r
107116 for(var t=0;\r
107117 t<this._addrLookupList.length;\r
107118 t++){\r
107119 e.push(this._addrLookupList[t])\r
107120 }\r
107121 l=this._getSearchForAddresses(this._addrLookupList);\r
107122 a=true;\r
107123 this._addrLookupList=null\r
107124 }\r
107125 this._addrLookupHash[n].push(r)\r
107126 }else{\r
107127 l=this._getSearchForAddresses([s])\r
107128 }\r
107129 if(l){\r
107130 var h=new AjxCallback(this,this._handleResponseSearch,[a?e:n,a,r]);\r
107131 l.execute({\r
107132 callback:h,noBusyOverlay:true}\r
107133 )\r
107134 }}};\r
107135 ZmContactsApp.prototype._handleResponseSearch=function(c,n,u,m){\r
107136 var e=m.getResponse();\r
107137 var s=e&&e.getResults(ZmItem.CONTACT);\r
107138 if(n){\r
107139 var l=s.getArray();\r
107140 for(var o=0;\r
107141 o<l.length;\r
107142 o++){\r
107143 this._updateLookupCache(l[o])\r
107144 }\r
107145 for(var o=0;\r
107146 o<c.length;\r
107147 o++){\r
107148 var d=c[o];\r
107149 if(!this._byEmail[d]){\r
107150 this._updateLookupCache(null,d)\r
107151 }\r
107152 var h=this._addrLookupHash[d];\r
107153 if(h&&h.length){\r
107154 for(var t=0;\r
107155 t<h.length;\r
107156 t++){\r
107157 h[t].run(this._byEmail[d])\r
107158 }}\r
107159 this._removeAddrFromLookupGroup(d)\r
107160 }}else{\r
107161 var r=s?s.get(0):null;\r
107162 this._updateLookupCache(r,c);\r
107163 this._byEmail[c]=r;\r
107164 u.run(r)\r
107165 }};\r
107166 ZmContactsApp.prototype.getContactsByEmails=function(t,h){\r
107167 var l=[],e=null,s=null;\r
107168 for(var a=0,n=t.length;\r
107169 a<n;\r
107170 a++){\r
107171 var r=t[a];\r
107172 var o=this.getContactByEmail(r.getAddress());\r
107173 if(o||o===null){\r
107174 l.push({\r
107175 address:r,contact:o}\r
107176 )\r
107177 }else{\r
107178 e=e||[];\r
107179 s=s||[];\r
107180 e.push(r);\r
107181 s.push(r.getAddress())\r
107182 }}\r
107183 if(!h){\r
107184 return l\r
107185 }\r
107186 if(!e){\r
107187 h.run(l);\r
107188 return l\r
107189 }\r
107190 var d=this._getSearchForAddresses(s);\r
107191 var c=new AjxCallback(this,this._handleResponseSearchByEmails,[e,l,h]);\r
107192 d.execute({\r
107193 callback:c}\r
107194 )\r
107195 };\r
107196 ZmContactsApp.prototype._handleResponseSearchByEmails=function(e,u,d,m){\r
107197 var t=m.getResponse();\r
107198 var h=t&&t.getResults(ZmItem.CONTACT);\r
107199 if(!h){\r
107200 d.run(u)\r
107201 }\r
107202 for(var s=0,n=h.size();\r
107203 s<n;\r
107204 s++){\r
107205 var o=h.get(s);\r
107206 for(var a=1;\r
107207 true;\r
107208 a++){\r
107209 var l=ZmContact.getAttributeName(ZmContact.F_email,a);\r
107210 var r=o.getAttr(l);\r
107211 if(!r){\r
107212 break\r
107213 }\r
107214 this._byEmail[r]=o\r
107215 }}\r
107216 for(var a=0,n=e.length;\r
107217 a<n;\r
107218 a++){\r
107219 var c=e[a];\r
107220 var o=this.getContactByEmail(c.getAddress());\r
107221 u.push({\r
107222 address:c,contact:o}\r
107223 )\r
107224 }\r
107225 d.run(u)\r
107226 };\r
107227 ZmContactsApp.prototype._getSearchForAddresses=function(a){\r
107228 var e;\r
107229 if(a.length==1){\r
107230 e=["to:",a[0]," not #type:group"]\r
107231 }else{\r
107232 e=["("];\r
107233 for(var t=0,o=a.length;\r
107234 t<o;\r
107235 t++){\r
107236 if(t>0){\r
107237 e.push(" OR ")\r
107238 }\r
107239 e.push("to:");\r
107240 e.push(a[t])\r
107241 }\r
107242 e.push(") not #type:group")\r
107243 }\r
107244 var n={\r
107245 query:e.join(""),limit:a.length*2,types:AjxVector.fromArray([ZmItem.CONTACT])};\r
107246 return new ZmSearch(n)\r
107247 };\r
107248 ZmContactsApp.prototype._notFound=function(e){\r
107249 return(e===null||Boolean(this._contactList[appCtxt.getActiveAccount().id]))\r
107250 };\r
107251 ZmContactsApp.prototype.setAddrLookupGroup=function(t){\r
107252 this._addrLookupList=[];\r
107253 this._addrLookupHash={};\r
107254 if(t&&t.length){\r
107255 for(var e=0;\r
107256 e<t.length;\r
107257 e++){\r
107258 if(t[e]){\r
107259 var a=t[e].address||t[e];\r
107260 a=(a&&AjxUtil.isString(a))?a.toLowerCase():null;\r
107261 if(a&&!this._addrLookupHash[a]){\r
107262 this._addrLookupList.push(a);\r
107263 this._addrLookupHash[a]=[]\r
107264 }}}}};\r
107265 ZmContactsApp.prototype._removeAddrFromLookupGroup=function(e){\r
107266 if(!(this._addrLookupList&&this._addrLookupList.length)){\r
107267 return\r
107268 }\r
107269 AjxUtil.arrayRemove(this._addrLookupList,e);\r
107270 delete this._addrLookupHash[e]\r
107271 };\r
107272 ZmContactsApp.prototype._updateLookupCache=function(t,n){\r
107273 if(n){\r
107274 this._byEmail[n]=t\r
107275 }\r
107276 if(t){\r
107277 for(var o=1;\r
107278 true;\r
107279 o++){\r
107280 var a=ZmContact.getAttributeName(ZmContact.F_email,o);\r
107281 var e=t.getAttr(a);\r
107282 if(!e){\r
107283 break\r
107284 }\r
107285 this._byEmail[e.toLowerCase()]=t\r
107286 }}};\r
107287 ZmContactsApp.prototype.getContactByIMAddress=function(t){\r
107288 if(!t){\r
107289 return null\r
107290 }\r
107291 var e=this._byIM[t.toLowerCase()];\r
107292 return this._realizeContact(e)\r
107293 };\r
107294 ZmContactsApp.prototype.getContactByPhone=function(e){\r
107295 if(!e){\r
107296 return null\r
107297 }\r
107298 var a=e.replace(/[^\d]/g,"");\r
107299 var t=this._phoneToContact[a];\r
107300 if(t){\r
107301 t.contact=this._realizeContact(t.contact)\r
107302 }\r
107303 return t\r
107304 };\r
107305 ZmContactsApp.prototype._realizeContact=function(e){\r
107306 var a=appCtxt.getActiveAccount().id;\r
107307 var t=this._contactList[a];\r
107308 return t?t._realizeContact(e):e\r
107309 };\r
107310 ZmContactsApp.prototype.updateCache=function(e,t){\r
107311 this._updateHash(e,t,ZmContact.EMAIL_FIELDS,this._byEmail);\r
107312 if(appCtxt.get(ZmSetting.VOICE_ENABLED)){\r
107313 this._updateHash(e,t,ZmContact.PHONE_FIELDS,this._byPhone,true,true)\r
107314 }\r
107315 if(appCtxt.get(ZmSetting.IM_ENABLED)){\r
107316 this._updateHash(e,t,ZmContact.IM_FIELDS,this._byIM)\r
107317 }};\r
107318 ZmContactsApp.prototype._updateHash=function(h,a,s,n,t,e){\r
107319 for(var r=0;\r
107320 r<s.length;\r
107321 r++){\r
107322 var d=s[r];\r
107323 for(var o=1;\r
107324 true;\r
107325 o++){\r
107326 var c=ZmContact.getAttributeName(d,o);\r
107327 var l=ZmContact.getAttr(h,c);\r
107328 if(!l){\r
107329 break\r
107330 }\r
107331 l=e?l.replace(/[^\d]/g,""):l.toLowerCase();\r
107332 if(a){\r
107333 n[l]=t?h:{\r
107334 contact:h,field:c}\r
107335 }else{\r
107336 delete n[l]\r
107337 }}}};\r
107338 ZmContactsApp.prototype.getContactListForAllAccounts=function(){\r
107339 var e=[];\r
107340 var a=appCtxt.accountList.visibleAccounts;\r
107341 for(var t=0;\r
107342 t<a.length;\r
107343 t++){\r
107344 if(appCtxt.get(ZmSetting.CONTACTS_ENABLED,null,a[t])){\r
107345 e.push(a[t])\r
107346 }}\r
107347 if(e.length>0){\r
107348 this._loadContactsForAccount(e)\r
107349 }};\r
107350 ZmContactsApp.prototype._loadContactsForAccount=function(e){\r
107351 var a=e.shift();\r
107352 if(a){\r
107353 var t=new AjxCallback(this,this._loadContactsForAccount,[e]);\r
107354 this.getContactList(t,null,a)\r
107355 }};\r
107356 ZmContactsApp.prototype.getContactList=function(r,e,n){\r
107357 var a=(n&&n.id)||appCtxt.getActiveAccount().id;\r
107358 if(!this._contactList[a]){\r
107359 try{\r
107360 if(this._parentController){\r
107361 this._contactList[a]=this._parentController.getApp(ZmApp.CONTACTS).getContactList()\r
107362 }else{\r
107363 this._contactList[a]=new ZmContactList(null);\r
107364 var s=new AjxCallback(this,this._handleResponseGetContactList,[r]);\r
107365 var t=(n&&n.getEmail());\r
107366 this._contactList[a].load(s,e,t)\r
107367 }\r
107368 return this._contactList[a]\r
107369 }\r
107370 catch(o){\r
107371 this._contactList[a]=null;\r
107372 throw o\r
107373 }}else{\r
107374 if(r&&r.run){\r
107375 r.run(this._contactList[a])\r
107376 }\r
107377 return this._contactList[a]\r
107378 }};\r
107379 ZmContactsApp.prototype._handleResponseGetContactList=function(t){\r
107380 var e=appCtxt.getActiveAccount().id;\r
107381 this.contactsLoaded[e]=true;\r
107382 if(t&&t.run){\r
107383 t.run(this._contactList[e])\r
107384 }};\r
107385 ZmContactsApp.prototype.getGalContactList=function(){\r
107386 if(!this._galContactList){\r
107387 try{\r
107388 this._galContactList=new ZmContactList(null,true);\r
107389 this._galContactList.load()\r
107390 }\r
107391 catch(e){\r
107392 this._galContactList=null;\r
107393 throw e\r
107394 }}\r
107395 return this._galContactList\r
107396 };\r
107397 ZmContactsApp.prototype.createFromVCard=function(a,t){\r
107398 var e=new ZmContact(null);\r
107399 e.createFromVCard(a,t)\r
107400 };\r
107401 ZmContactsApp.prototype.getMyCard=function(a){\r
107402 if(this._myCard){\r
107403 this._myCard=this._realizeContact(this._myCard);\r
107404 a.run(this._myCard)\r
107405 }else{\r
107406 var e=appCtxt.getSearchController();\r
107407 var t=new AjxCallback(this,this._handleResponseGetMyCard,[a]);\r
107408 e.search({\r
107409 query:"#cardOwner:isMyCard",types:[ZmItem.CONTACT],noRender:true,callback:t}\r
107410 )\r
107411 }};\r
107412 ZmContactsApp.prototype._handleResponseGetMyCard=function(o,e){\r
107413 var a=e.getResponse();\r
107414 var t=a&&a.getResults(ZmItem.CONTACT);\r
107415 this._myCard=t?t.get(0):null;\r
107416 o.run(this._myCard)\r
107417 };\r
107418 ZmContactsApp.prototype.getContactListController=function(){\r
107419 if(!this._contactListController){\r
107420 this._contactListController=new ZmContactListController(this._container,this)\r
107421 }\r
107422 return this._contactListController\r
107423 };\r
107424 ZmContactsApp.prototype.getContactController=function(){\r
107425 AjxDispatcher.require(["ContactsCore","Contacts"]);\r
107426 if(this._contactController==null){\r
107427 this._contactController=new ZmContactController(this._container,this)\r
107428 }\r
107429 return this._contactController\r
107430 };\r
107431 ZmContactsApp.prototype._newAddrBookCallback=function(n,a,t){\r
107432 var o=appCtxt.getNewAddrBookDialog();\r
107433 o.popdown();\r
107434 var e=appCtxt.getOverviewController();\r
107435 e.getTreeController(ZmOrganizer.ADDRBOOK)._doCreate(n,a,t)\r
107436 };\r
107437 ZmContactsApp.prototype._settingsChangeListener=function(n){\r
107438 if(n.type!=ZmEvent.S_SETTINGS){\r
107439 return\r
107440 }\r
107441 if(!this._initialized){\r
107442 return\r
107443 }\r
107444 var o=this.getContactListController();\r
107445 if(!o){\r
107446 return\r
107447 }\r
107448 var s=n.getDetail("settings");\r
107449 if(!(s&&s.length)){\r
107450 return\r
107451 }\r
107452 var e=o._getViewType();\r
107453 for(var t=0;\r
107454 t<s.length;\r
107455 t++){\r
107456 var a=s[t];\r
107457 if(a.id==ZmSetting.CONTACTS_VIEW){\r
107458 e=o._defaultView()\r
107459 }}\r
107460 o.switchView(e,force,this._initialized,true)\r
107461 }\r
107462 }\r
107463 if(AjxPackage.define("zimbraMail.im.ZmImApp")){\r
107464 ZmImApp=function(e){\r
107465 ZmApp.call(this,ZmApp.IM,e);\r
107466 delete ZmFolder.HIDE_ID[ZmOrganizer.ID_CHATS];\r
107467 this._active=false;\r
107468 ZmImApp.INSTANCE=this;\r
107469 this._roster=new ZmRoster(this)\r
107470 };\r
107471 ZmEvent.S_CHAT=ZmId.ITEM_CHAT;\r
107472 ZmEvent.S_ROSTER="ROSTER";\r
107473 ZmEvent.S_ROSTER_ITEM=ZmId.ITEM_ROSTER;\r
107474 ZmEvent.S_ROSTER_TREE_ITEM=ZmId.ORG_ROSTER_TREE_ITEM;\r
107475 ZmEvent.S_ROSTER_TREE_GROUP=ZmId.ORG_ROSTER_TREE_GROUP;\r
107476 ZmItem.CHAT=ZmEvent.S_CHAT;\r
107477 ZmItem.ROSTER_ITEM=ZmEvent.S_ROSTER_ITEM;\r
107478 ZmOrganizer.ROSTER_TREE_ITEM=ZmEvent.S_ROSTER_TREE_ITEM;\r
107479 ZmOrganizer.ROSTER_TREE_GROUP=ZmEvent.S_ROSTER_TREE_GROUP;\r
107480 ZmOrganizer.CONFERENCE_ITEM="CONFERENCE_ITEM";\r
107481 ZmItem.F_PRESENCE="PRESENCE";\r
107482 ZmItem.F_PRESENCE_CELL="PRESENCE_cell";\r
107483 ZmApp.IM=ZmId.APP_IM;\r
107484 ZmApp.CLASS[ZmApp.IM]="ZmImApp";\r
107485 ZmApp.SETTING[ZmApp.IM]=ZmSetting.IM_ENABLED;\r
107486 ZmApp.LOAD_SORT[ZmApp.IM]=47;\r
107487 ZmApp.QS_ARG[ZmApp.IM]="chat";\r
107488 ZmImApp.BUDDY_SORT_PRESENCE="presence";\r
107489 ZmImApp.BUDDY_SORT_NAME="name";\r
107490 ZmImApp.prototype=new ZmApp;\r
107491 ZmImApp.prototype.constructor=ZmImApp;\r
107492 ZmImApp.loggedIn=function(){\r
107493 return ZmImApp.INSTANCE&&ZmImApp.INSTANCE._serviceController&&ZmImApp.INSTANCE._serviceController.service.isLoggedIn()&&(appCtxt.get(ZmSetting.IM_PREF_AUTO_LOGIN)||ZmImApp.INSTANCE._roster)\r
107494 };\r
107495 ZmImApp.prototype.toString=function(){\r
107496 return"ZmImApp"\r
107497 };\r
107498 ZmImApp.prototype._defineAPI=function(){\r
107499 AjxDispatcher.registerMethod("GetRoster","IMCore",new AjxCallback(this,this.getRoster))\r
107500 };\r
107501 ZmImApp.prototype._registerOrganizers=function(){\r
107502 ZmOrganizer.registerOrg(ZmOrganizer.CONFERENCE_ITEM,{\r
107503 app:ZmApp.IM,nameKey:"imConference",defaultFolder:ZmOrganizer.ID_INBOX,orgPackage:"IM",treeController:"ZmConferenceTreeController",labelKey:"imConferences",itemsKey:"messages",hasColor:false,treeType:ZmOrganizer.CONFERENCE_ITEM,compareFunc:"ZmConferenceService.sortCompare",displayOrder:900}\r
107504 )\r
107505 };\r
107506 ZmImApp.prototype._registerOperations=function(){\r
107507 ZmOperation.registerOp(ZmId.OP_IM_NEW_CHAT,{\r
107508 textKey:"imNewChat",image:"ImFree2Chat",shortcut:ZmKeyMap.NEW_CHAT}\r
107509 );\r
107510 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_AWAY,{\r
107511 textKey:"imStatusAway",image:"ImAway"}\r
107512 );\r
107513 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_CHAT,{\r
107514 textKey:"imStatusChat",image:"ImFree2Chat"}\r
107515 );\r
107516 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_DND,{\r
107517 textKey:"imStatusDND",image:"ImDnd"}\r
107518 );\r
107519 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_INVISIBLE,{\r
107520 textKey:"imStatusInvisible",image:"ImInvisible"}\r
107521 );\r
107522 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_MENU,{\r
107523 textKey:"imPresence"}\r
107524 );\r
107525 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_OFFLINE,{\r
107526 textKey:"imStatusOffline",image:"Offline"}\r
107527 );\r
107528 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_ONLINE,{\r
107529 textKey:"imStatusOnline",image:"ImAvailable"}\r
107530 );\r
107531 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_XA,{\r
107532 textKey:"imStatusExtAway",image:"ImExtendedAway"}\r
107533 );\r
107534 ZmOperation.registerOp(ZmId.OP_IM_LOGOUT_YAHOO,{\r
107535 textKey:"imLogoutYahoo",image:"Logoff"}\r
107536 );\r
107537 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_CUSTOM_MRU,{\r
107538 image:"ImAvailable"}\r
107539 );\r
107540 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_MENU,{\r
107541 image:"ImAvailable"}\r
107542 );\r
107543 ZmOperation.registerOp(ZmId.OP_NEW_ROSTER_GROUP,{\r
107544 textKey:"imNewGroup",image:"ImGroup"}\r
107545 );\r
107546 ZmOperation.registerOp(ZmId.OP_NEW_ROSTER_ITEM,{\r
107547 textKey:"newRosterItem",image:"AddBuddy",tooltipKey:"imNewBuddyTooltip"}\r
107548 );\r
107549 ZmOperation.registerOp(ZmId.OP_IM_CREATE_CONTACT,{\r
107550 textKey:"addToNewContact",image:"NewContact"}\r
107551 );\r
107552 ZmOperation.registerOp(ZmId.OP_IM_ADD_TO_CONTACT,{\r
107553 textKey:"addToExistingContact",image:"Edit"}\r
107554 );\r
107555 ZmOperation.registerOp(ZmId.OP_IM_EDIT_CONTACT,{\r
107556 textKey:"editContact",image:"Edit"}\r
107557 );\r
107558 ZmOperation.registerOp(ZmId.OP_IM_TOGGLE_OFFLINE,{\r
107559 textKey:"imToggleOffline"}\r
107560 );\r
107561 ZmOperation.registerOp(ZmId.OP_IM_TOGGLE_BLOCKED,{\r
107562 textKey:"imToggleBlocked"}\r
107563 );\r
107564 ZmOperation.registerOp(ZmId.OP_IM_SORT_BY_PRESENCE,{\r
107565 textKey:"imSortListByPresence"}\r
107566 );\r
107567 ZmOperation.registerOp(ZmId.OP_IM_SORT_BY_NAME,{\r
107568 textKey:"imSortListByName"}\r
107569 );\r
107570 ZmOperation.registerOp(ZmId.OP_IM_PRESENCE_CUSTOM_MSG,{\r
107571 textKey:"imCustomStatusMsg",image:"ImAvailable"}\r
107572 );\r
107573 ZmOperation.registerOp(ZmId.OP_IM_BLOCK_BUDDY,{\r
107574 textKey:"imBlock",image:"BlockUser"}\r
107575 );\r
107576 ZmOperation.registerOp(ZmId.OP_IM_UNBLOCK_BUDDY,{\r
107577 textKey:"imUnblock",image:"AllowUser"}\r
107578 );\r
107579 ZmOperation.registerOp(ZmId.OP_IM_HTML,{\r
107580 image:"TextFormat",tooltipKey:"changeEditorMode"}\r
107581 );\r
107582 ZmOperation.registerOp(ZmId.OP_IM_DELETE_GROUP,{\r
107583 image:"Delete",textKey:"del"}\r
107584 );\r
107585 ZmOperation.registerOp(ZmId.OP_IM_CLOSE_ALL_CHATS,{\r
107586 textKey:"imCloseAllChats"}\r
107587 );\r
107588 ZmOperation.registerOp(ZmId.OP_IM_CLOSE_OTHER_CHATS,{\r
107589 textKey:"imCloseOtherChats"}\r
107590 );\r
107591 ZmOperation.registerOp(ZmId.OP_IM_CLOSE_CHAT,{\r
107592 textKey:"imCloseChat"}\r
107593 );\r
107594 ZmOperation.registerOp(ZmId.OP_IM_BUDDY_ARCHIVE,{\r
107595 textKey:"imBuddyArchive",image:"ChatFolder"}\r
107596 );\r
107597 ZmOperation.registerOp(ZmId.OP_IM_BUDDY_LIST,{\r
107598 textKey:"buddyList",image:"ImGroup"}\r
107599 );\r
107600 ZmOperation.registerOp(ZmId.OP_IM_INVITE,{\r
107601 textKey:"imInvitation",image:"AllowUser"}\r
107602 )\r
107603 };\r
107604 ZmImApp.prototype._registerItems=function(){\r
107605 ZmItem.registerItem(ZmItem.CHAT,{\r
107606 app:ZmApp.IM,nameKey:"chat",icon:"ImStartChat",soapCmd:"ItemAction",itemClass:"ZmChat",node:"chat",organizer:ZmOrganizer.ROSTER,searchType:"chat"}\r
107607 )\r
107608 };\r
107609 ZmImApp.prototype._registerApp=function(){\r
107610 var t={};\r
107611 t[ZmOperation.IM_NEW_CHAT]="chat";\r
107612 var e={};\r
107613 e[ZmKeyMap.NEW_CHAT]=ZmOperation.IM_NEW_CHAT;\r
107614 e[ZmKeyMap.NEW_ROSTER_ITEM]=ZmOperation.NEW_ROSTER_ITEM;\r
107615 e[ZmKeyMap.PRESENCE_MENU]=ZmOperation.IM_PRESENCE_MENU;\r
107616 ZmApp.registerApp(ZmApp.IM,{\r
107617 mainPkg:"IM",defaultSort:50,newItemOps:t,actionCodes:e}\r
107618 )\r
107619 };\r
107620 ZmImApp.prototype._registerSettings=function(e){\r
107621 e=e||appCtxt.getSettings();\r
107622 e.registerSetting("IM_PREF_NOTIFY_SOUNDS",{\r
107623 name:"zimbraPrefIMSoundsEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
107624 );\r
107625 e.registerSetting("IM_PREF_FLASH_BROWSER",{\r
107626 name:"zimbraPrefIMFlashTitle",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
107627 );\r
107628 e.registerSetting("IM_PREF_DESKTOP_ALERT",{\r
107629 name:"zimbraPrefIMToasterEnabled",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
107630 );\r
107631 e.registerSetting("IM_PREF_INSTANT_NOTIFY",{\r
107632 name:"zimbraPrefIMInstantNotify",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
107633 );\r
107634 e.registerSetting("IM_PREF_AUTO_LOGIN",{\r
107635 name:"zimbraPrefIMAutoLogin",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false}\r
107636 );\r
107637 e.registerSetting("IM_PREF_NOTIFY_PRESENCE",{\r
107638 name:"zimbraPrefIMNotifyPresence",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
107639 );\r
107640 e.registerSetting("IM_PREF_NOTIFY_STATUS",{\r
107641 name:"zimbraPrefIMNotifyStatus",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
107642 );\r
107643 e.registerSetting("IM_PREF_LOGCHATS_ENABLED",{\r
107644 name:"zimbraPrefIMLogChats",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
107645 );\r
107646 e.registerSetting("IM_PREF_REPORT_IDLE",{\r
107647 name:"zimbraPrefIMReportIdle",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
107648 );\r
107649 e.registerSetting("IM_PREF_IDLE_TIMEOUT",{\r
107650 name:"zimbraPrefIMIdleTimeout",type:ZmSetting.T_PREF,dataType:ZmSetting.D_INT,defaultValue:10}\r
107651 );\r
107652 e.registerSetting("IM_PREF_IDLE_STATUS",{\r
107653 name:"zimbraPrefIMIdleStatus",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:"xa"}\r
107654 );\r
107655 e.registerSetting("IM_CUSTOM_STATUS_MRU",{\r
107656 name:"zimbraPrefIMCustomStatusMessage",type:ZmSetting.T_PREF,dataType:ZmSetting.D_LIST}\r
107657 );\r
107658 e.registerSetting("IM_PREF_BUDDY_SORT",{\r
107659 name:"zimbraPrefIMBuddyListSort",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:ZmImApp.BUDDY_SORT_NAME,isImplicit:true}\r
107660 );\r
107661 e.registerSetting("IM_PREF_HIDE_OFFLINE",{\r
107662 name:"zimbraPrefIMHideOfflineBuddies",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isImplicit:true}\r
107663 );\r
107664 e.registerSetting("IM_PREF_HIDE_BLOCKED",{\r
107665 name:"zimbraPrefIMHideBlockedBuddies",type:ZmSetting.T_PREF,dataType:ZmSetting.D_BOOLEAN,defaultValue:false,isImplicit:true}\r
107666 );\r
107667 e.registerSetting("IM_YAHOO_ID",{\r
107668 name:"zimbraPrefIMYahooId",type:ZmSetting.T_PREF,dataType:ZmSetting.D_STRING,defaultValue:""}\r
107669 );\r
107670 var t=new AjxListener(this,this._onSettingChange);\r
107671 e.getSetting(ZmSetting.IM_PREF_INSTANT_NOTIFY).addChangeListener(t);\r
107672 e.getSetting(ZmSetting.IM_PREF_REPORT_IDLE).addChangeListener(t);\r
107673 e.getSetting(ZmSetting.IM_PREF_IDLE_TIMEOUT).addChangeListener(t)\r
107674 };\r
107675 ZmImApp.prototype._registerPrefs=function(){\r
107676 var t={\r
107677 IM:{\r
107678 title:ZmMsg.im,icon:"ImStartChat",templateId:"prefs.Pages#IM",priority:90,precondition:ZmSetting.IM_ENABLED,prefs:[ZmSetting.IM_PREF_INSTANT_NOTIFY,ZmSetting.IM_PREF_AUTO_LOGIN,ZmSetting.IM_PREF_FLASH_BROWSER,ZmSetting.IM_PREF_DESKTOP_ALERT,ZmSetting.IM_PREF_NOTIFY_PRESENCE,ZmSetting.IM_PREF_NOTIFY_STATUS,ZmSetting.IM_PREF_LOGCHATS_ENABLED,ZmSetting.IM_PREF_REPORT_IDLE,ZmSetting.IM_PREF_IDLE_TIMEOUT,ZmSetting.IM_PREF_IDLE_STATUS,ZmSetting.IM_PREF_NOTIFY_SOUNDS]}};\r
107679 for(var e in t){\r
107680 ZmPref.registerPrefSection(e,t[e])\r
107681 }\r
107682 ZmPref.registerPref("IM_PREF_NOTIFY_SOUNDS",{\r
107683 displayName:ZmMsg.playSound,displayContainer:ZmPref.TYPE_CHECKBOX}\r
107684 );\r
107685 ZmPref.registerPref("IM_PREF_INSTANT_NOTIFY",{\r
107686 displayName:ZmMsg.imPrefInstantNotify,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:function(){\r
107687 return appCtxt.get(ZmSetting.INSTANT_NOTIFY)&&ZmImApp.INSTANCE.getServiceController().capabilities[ZmImServiceController.INSTANT_NOTIFY]\r
107688 }}\r
107689 );\r
107690 ZmPref.registerPref("IM_PREF_AUTO_LOGIN",{\r
107691 displayName:ZmMsg.imPrefAutoLogin,displayContainer:ZmPref.TYPE_CHECKBOX,precondition:function(){\r
107692 return ZmImApp.INSTANCE.getServiceController().capabilities[ZmImServiceController.AUTO_LOGIN_PREF]\r
107693 }}\r
107694 );\r
107695 ZmPref.registerPref("IM_PREF_FLASH_BROWSER",{\r
107696 displayName:ZmMsg.flashBrowser,displayContainer:ZmPref.TYPE_CHECKBOX}\r
107697 );\r
107698 ZmPref.registerPref("IM_PREF_DESKTOP_ALERT",{\r
107699 displayName:ZmMsg.showPopupBrowserPlus,displayContainer:ZmPref.TYPE_CHECKBOX}\r
107700 );\r
107701 ZmPref.registerPref("IM_PREF_NOTIFY_PRESENCE",{\r
107702 displayName:ZmMsg.imPrefNotifyPresence,displayContainer:ZmPref.TYPE_CHECKBOX}\r
107703 );\r
107704 ZmPref.registerPref("IM_PREF_NOTIFY_STATUS",{\r
107705 displayName:ZmMsg.imPrefNotifyStatus,displayContainer:ZmPref.TYPE_CHECKBOX}\r
107706 );\r
107707 ZmPref.registerPref("IM_PREF_LOGCHATS_ENABLED",{\r
107708 displayName:ZmMsg.imPrefLogChats,displayContainer:ZmPref.TYPE_CHECKBOX}\r
107709 );\r
107710 ZmPref.registerPref("IM_PREF_REPORT_IDLE",{\r
107711 displayName:ZmMsg.imPrefReportIdle,displayContainer:ZmPref.TYPE_CHECKBOX}\r
107712 );\r
107713 ZmPref.registerPref("IM_PREF_IDLE_TIMEOUT",{\r
107714 displayName:ZmMsg.imPrefIdleTimeout,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[ZmMsg.imPrefIdleTimeoutMinutes,ZmMsg.imPrefIdleTimeoutMinutes,ZmMsg.imPrefIdleTimeoutMinutes,ZmMsg.imPrefIdleTimeoutMinutes,ZmMsg.imPrefIdleTimeoutMinutes,ZmMsg.imPrefIdleTimeoutMinutes],options:[1,5,10,20,30,60],precondition:ZmSetting.IM_PREF_REPORT_IDLE}\r
107715 );\r
107716 ZmPref.registerPref("IM_PREF_IDLE_STATUS",{\r
107717 displayName:ZmMsg.imPrefIdleStatus,displayContainer:ZmPref.TYPE_SELECT,displayOptions:[ZmMsg.imStatusAway,ZmMsg.imStatusExtAway,ZmMsg.imStatusOffline],options:["away","xa","offline"],precondition:ZmSetting.IM_PREF_REPORT_IDLE}\r
107718 )\r
107719 };\r
107720 ZmImApp.prototype._onSettingChange=function(e){\r
107721 if(e.type!=ZmEvent.S_SETTING){\r
107722 return\r
107723 }\r
107724 var a=e.source.id;\r
107725 var t=appCtxt.get(a);\r
107726 if(a==ZmSetting.IM_PREF_INSTANT_NOTIFY&&appCtxt.get(ZmSetting.INSTANT_NOTIFY)){\r
107727 appCtxt.getAppController().setInstantNotify(t)\r
107728 }else{\r
107729 if(this._roster&&a==ZmSetting.IM_PREF_REPORT_IDLE){\r
107730 if(!t){\r
107731 this._roster._idleTimer.kill()\r
107732 }else{\r
107733 this._roster._idleTimer.resurrect(appCtxt.get(ZmSetting.IM_PREF_IDLE_TIMEOUT))\r
107734 }}else{\r
107735 if(this._roster&&a==ZmSetting.IM_PREF_IDLE_TIMEOUT){\r
107736 this._roster._idleTimer.timeout=parseInt(t)*60*1000\r
107737 }}}};\r
107738 ZmImApp.prototype.refresh=function(){\r
107739 delete this._lastSeq;\r
107740 if(this._serviceController&&this._serviceController.service.isLoggedIn()){\r
107741 this._roster.refresh()\r
107742 }};\r
107743 ZmImApp.prototype.handleOp=function(e){\r
107744 switch(e){\r
107745 case ZmOperation.IM_NEW_CHAT:this.prepareVisuals();\r
107746 this.getImController()._imNewChatListener();\r
107747 break;\r
107748 case ZmOperation.NEW_ROSTER_ITEM:this.prepareVisuals();\r
107749 this.getImController()._newRosterItemListener();\r
107750 break;\r
107751 case ZmOperation.IM_PRESENCE_MENU:if(this._presenceButton){\r
107752 this._presenceButton.popup()\r
107753 }\r
107754 break\r
107755 }};\r
107756 ZmImApp.prototype.postNotify=function(e){\r
107757 if(e.im){\r
107758 if(!this._lastSeq||(e.seq>this._lastSeq)){\r
107759 this._lastSeq=e.seq;\r
107760 AjxDispatcher.run("GetRoster").pushNotification(e.im)\r
107761 }}};\r
107762 ZmImApp.prototype.addComponents=function(e){\r
107763 this._taskbarController=new ZmTaskbarController(e)\r
107764 };\r
107765 ZmImApp.prototype.startup=function(){\r
107766 if(appCtxt.get(ZmSetting.IM_PREF_AUTO_LOGIN)){\r
107767 AjxTimedAction.scheduleAction(new AjxTimedAction(this,this._autoLogin),1000)\r
107768 }};\r
107769 ZmImApp.prototype.login=function(e){\r
107770 this.getServiceController().login(e)\r
107771 };\r
107772 ZmImApp.prototype._autoLogin=function(){\r
107773 var e=new AjxCallback(this,this._postLoadAutoLogin);\r
107774 AjxDispatcher.require(["IMCore"],true,e)\r
107775 };\r
107776 ZmImApp.prototype._postLoadAutoLogin=function(){\r
107777 this.login({\r
107778 auto:true}\r
107779 )\r
107780 };\r
107781 ZmImApp.prototype.getImController=function(){\r
107782 if(!this._imController){\r
107783 AjxDispatcher.require(["IMCore","IM"]);\r
107784 this._imController=new ZmImController()\r
107785 }\r
107786 return this._imController\r
107787 };\r
107788 ZmImApp.prototype.isActive=function(){\r
107789 return this._active\r
107790 };\r
107791 ZmImApp.prototype.getRoster=function(){\r
107792 return this._roster\r
107793 };\r
107794 ZmImApp.prototype.hasRoster=function(){\r
107795 return !!this._roster\r
107796 };\r
107797 ZmImApp.prototype.getServiceController=function(){\r
107798 if(!window.ZmImServiceController||!this._serviceController){\r
107799 AjxDispatcher.require(["IMCore"]);\r
107800 var e=this.getRoster();\r
107801 this._serviceController=new ZmZimbraImServiceController(e)\r
107802 }\r
107803 return this._serviceController\r
107804 };\r
107805 ZmImApp.prototype.getService=function(){\r
107806 return this.getServiceController().service\r
107807 };\r
107808 ZmImApp.prototype.getAutoCompleteGroups=function(){\r
107809 return new ZmRosterTreeGroups(this.getRoster())\r
107810 };\r
107811 ZmImApp.prototype.prepareVisuals=function(){\r
107812 AjxDispatcher.require(["IMCore","IM"])\r
107813 };\r
107814 ZmImApp._NEW_IM="NEW_IM";\r
107815 ZmImApp._NEW_BUDDY_FROM_IM_ADDRESS="NEW_BUDDY_FROM_IM_ADDRESS";\r
107816 ZmImApp._NEW_BUDDY="NEW_BUDDY";\r
107817 ZmImApp.updateImMenuItemByContact=function(s,e,t){\r
107818 var n=ZmImApp._updateImMenuItemByLogin(s);\r
107819 if(n){\r
107820 return\r
107821 }\r
107822 var o=e.getBuddy();\r
107823 if(o){\r
107824 ZmImApp._updateImMenuItemByBuddy(s,o);\r
107825 return\r
107826 }\r
107827 var r=e.getIMAddress();\r
107828 if(r){\r
107829 s.setText(ZmImApp._getNewBuddyText(e.getFullName()));\r
107830 s.setImage("NewContact");\r
107831 s._imData={\r
107832 op:ZmImApp._NEW_BUDDY_FROM_IM_ADDRESS,contact:e,imAddress:r};\r
107833 return\r
107834 }\r
107835 var a=t&&t.getName()?t.getName():e.getFullName();\r
107836 s.setText(ZmImApp._getNewBuddyText(a));\r
107837 s.setImage("NewContact");\r
107838 s._imData={\r
107839 op:ZmImApp._NEW_BUDDY,address:t,name:a}\r
107840 };\r
107841 ZmImApp.updateImMenuItemByAddress=function(n,e,a,h){\r
107842 var o=ZmImApp._updateImMenuItemByLogin(n);\r
107843 if(o){\r
107844 if(h){\r
107845 h.run()\r
107846 }\r
107847 return\r
107848 }\r
107849 var t=AjxDispatcher.run("GetRoster").getRosterItem(e.getAddress());\r
107850 if(t){\r
107851 ZmImApp._updateImMenuItemByBuddy(n,t);\r
107852 if(h){\r
107853 h.run()\r
107854 }\r
107855 return\r
107856 }\r
107857 var r=appCtxt.getApp(ZmApp.CONTACTS);\r
107858 if(r){\r
107859 if(h){\r
107860 var s=new AjxCallback(null,ZmImApp.handleResponseGetContact,[n,e,a,h]);\r
107861 r.getContactByEmail(e.getAddress(),s)\r
107862 }\r
107863 return true\r
107864 }else{\r
107865 ZmImApp.handleResponseGetContact(n,e,a)\r
107866 }};\r
107867 ZmImApp.handleResponseGetContact=function(o,t,a,n,e){\r
107868 if(e){\r
107869 ZmImApp.updateImMenuItemByContact(o,e,t)\r
107870 }else{\r
107871 if(a){\r
107872 o.setText(ZmImApp._getNewBuddyText(t.getName()||t.getAddress()));\r
107873 o.setImage("NewContact");\r
107874 o._imData={\r
107875 op:ZmImApp._NEW_BUDDY,address:t,name:t.getName()}\r
107876 }}\r
107877 if(n){\r
107878 n.run()\r
107879 }};\r
107880 ZmImApp.getImMenuItemListener=function(){\r
107881 ZmImApp._imMenuItemListenerObj=ZmImApp._imMenuItemListenerObj||new AjxListener(null,ZmImApp._imMenuItemListener);\r
107882 return ZmImApp._imMenuItemListenerObj\r
107883 };\r
107884 ZmImApp._updateImMenuItemByBuddy=function(t,e){\r
107885 ZmImApp._newChatFormat=ZmImApp._newChatFormat||new AjxMessageFormat(ZmMsg.imNewChatName);\r
107886 t.setText(ZmImApp._newChatFormat.format(e.getDisplayName()));\r
107887 t.setImage(e.getPresence().getIcon());\r
107888 t._imData={\r
107889 op:ZmImApp._NEW_IM,buddy:e}\r
107890 };\r
107891 ZmImApp._updateImMenuItemByLogin=function(e){\r
107892 if(!ZmImApp.loggedIn()){\r
107893 e.setText(ZmMsg.newIM);\r
107894 e.setImage("ImStartChat");\r
107895 e.setEnabled(false);\r
107896 e._imData=null;\r
107897 return true\r
107898 }\r
107899 e.setEnabled(true);\r
107900 return false\r
107901 };\r
107902 ZmImApp._getNewBuddyText=function(e){\r
107903 ZmImApp._newBuddyFormat=ZmImApp._newBuddyFormat||new AjxMessageFormat(ZmMsg.imNewBuddy);\r
107904 return ZmImApp._newBuddyFormat.format(e)\r
107905 };\r
107906 ZmImApp._imMenuItemListener=function(t){\r
107907 ZmImApp.INSTANCE.prepareVisuals();\r
107908 var e=t.dwtObj._imData;\r
107909 if(e){\r
107910 switch(e.op){\r
107911 case ZmImApp._NEW_IM:ZmTaskbarController.INSTANCE.chatWithRosterItem(e.buddy);\r
107912 break;\r
107913 case ZmImApp._NEW_BUDDY_FROM_IM_ADDRESS:var o=ZmImAddress.parse(e.imAddress);\r
107914 var a=o?{\r
107915 address:o.screenName,name:e.contact.getFullName(),service:o.service}\r
107916 :{};\r
107917 ZmImApp.INSTANCE.getImController()._newRosterItemListener(a);\r
107918 break;\r
107919 case ZmImApp._NEW_BUDDY:a={\r
107920 address:e.address?e.address.getAddress():null,name:e.name};\r
107921 ZmImApp.INSTANCE.getImController()._newRosterItemListener(a);\r
107922 break\r
107923 }}}\r
107924 }\r
107925 if(AjxPackage.define("zimbraMail.notebook.ZmNotebookApp")){\r
107926 ZmNotebookApp=function(t,e){\r
107927 ZmApp.call(this,ZmApp.NOTEBOOK,t,e)\r
107928 };\r
107929 ZmEvent.S_PAGE=ZmId.ITEM_PAGE;\r
107930 ZmEvent.S_DOCUMENT=ZmId.ITEM_DOCUMENT;\r
107931 ZmEvent.S_NOTEBOOK=ZmId.ORG_NOTEBOOK;\r
107932 ZmItem.PAGE=ZmEvent.S_PAGE;\r
107933 ZmItem.DOCUMENT=ZmEvent.S_DOCUMENT;\r
107934 ZmOrganizer.NOTEBOOK=ZmEvent.S_NOTEBOOK;\r
107935 ZmApp.NOTEBOOK=ZmId.APP_NOTEBOOK;\r
107936 ZmApp.CLASS[ZmApp.NOTEBOOK]="ZmNotebookApp";\r
107937 ZmApp.SETTING[ZmApp.NOTEBOOK]=ZmSetting.NOTEBOOK_ENABLED;\r
107938 ZmApp.LOAD_SORT[ZmApp.NOTEBOOK]=60;\r
107939 ZmApp.QS_ARG[ZmApp.NOTEBOOK]="documents";\r
107940 ZmNotebookApp.prototype=new ZmApp;\r
107941 ZmNotebookApp.prototype.constructor=ZmNotebookApp;\r
107942 ZmNotebookApp.prototype.toString=function(){\r
107943 return"ZmNotebookApp"\r
107944 };\r
107945 ZmNotebookApp.prototype._notebookCache;\r
107946 ZmNotebookApp.prototype._defineAPI=function(){\r
107947 AjxDispatcher.setPackageLoadFunction("NotebookCore",new AjxCallback(this,this._postLoadCore));\r
107948 AjxDispatcher.setPackageLoadFunction("Notebook",new AjxCallback(this,this._postLoad,ZmOrganizer.NOTEBOOK));\r
107949 AjxDispatcher.registerMethod("GetNotebookController",["NotebookCore","Notebook"],new AjxCallback(this,this.getNotebookController));\r
107950 AjxDispatcher.registerMethod("GetPageEditController",["NotebookCore","Notebook"],new AjxCallback(this,this.getPageEditController));\r
107951 AjxDispatcher.registerMethod("GetNotebookCache",["NotebookCore","Notebook"],new AjxCallback(this,this.getNotebookCache));\r
107952 AjxDispatcher.registerMethod("GetPageVersionController",["NotebookCore","Notebook"],new AjxCallback(this,this.getPageVersionController));\r
107953 AjxDispatcher.registerMethod("GetNotebookFileController",["NotebookCore","Notebook"],new AjxCallback(this,this.getFileController))\r
107954 };\r
107955 ZmNotebookApp.prototype._registerOperations=function(){\r
107956 ZmOperation.registerOp(ZmId.OP_EDIT_NOTEBOOK_CHROME,{\r
107957 textKey:"editNotebookChrome",image:"Edit"}\r
107958 );\r
107959 ZmOperation.registerOp(ZmId.OP_EDIT_NOTEBOOK_INDEX,{\r
107960 textKey:"editNotebookIndex",image:"Edit"}\r
107961 );\r
107962 ZmOperation.registerOp(ZmId.OP_EDIT_NOTEBOOK_HEADER,{\r
107963 textKey:"editNotebookHeader",image:"Edit"}\r
107964 );\r
107965 ZmOperation.registerOp(ZmId.OP_EDIT_NOTEBOOK_FOOTER,{\r
107966 textKey:"editNotebookFooter",image:"Edit"}\r
107967 );\r
107968 ZmOperation.registerOp(ZmId.OP_EDIT_NOTEBOOK_SIDE_BAR,{\r
107969 textKey:"editNotebookSideBar",image:"Edit"}\r
107970 );\r
107971 ZmOperation.registerOp(ZmId.OP_EDIT_NOTEBOOK_CHROME,{\r
107972 textKey:"editNotebookChrome",image:"Edit"}\r
107973 );\r
107974 ZmOperation.registerOp(ZmId.OP_FORMAT_HTML_SOURCE,{\r
107975 textKey:"formatHtmlSource"}\r
107976 ,ZmSetting.HTML_COMPOSE_ENABLED);\r
107977 ZmOperation.registerOp(ZmId.OP_FORMAT_MEDIA_WIKI,{\r
107978 textKey:"formatMediaWiki"}\r
107979 ,ZmSetting.HTML_COMPOSE_ENABLED);\r
107980 ZmOperation.registerOp(ZmId.OP_FORMAT_RICH_TEXT,{\r
107981 textKey:"formatRichText"}\r
107982 ,ZmSetting.HTML_COMPOSE_ENABLED);\r
107983 ZmOperation.registerOp(ZmId.OP_FORMAT_TWIKI,{\r
107984 textKey:"formatTWiki"}\r
107985 ,ZmSetting.HTML_COMPOSE_ENABLED);\r
107986 ZmOperation.registerOp(ZmId.OP_MOUNT_NOTEBOOK,{\r
107987 textKey:"mountNotebook",image:"Notebook"}\r
107988 ,ZmSetting.SHARING_ENABLED);\r
107989 ZmOperation.registerOp(ZmId.OP_NEW_NOTEBOOK,{\r
107990 textKey:"newNotebook",image:"NewNotebook",tooltipKey:"newNotebookTooltip",shortcut:ZmKeyMap.NEW_NOTEBOOK}\r
107991 );\r
107992 ZmOperation.registerOp(ZmId.OP_NEW_PAGE,{\r
107993 textKey:"newPage",tooltipKey:"createNewPage",image:"NewPage"}\r
107994 );\r
107995 ZmOperation.registerOp(ZmId.OP_IMPORT_FILE,{\r
107996 textKey:"_import",tooltipKey:"importDocs"}\r
107997 );\r
107998 ZmOperation.registerOp(ZmId.OP_SEND_PAGE,{\r
107999 textKey:"send",tooltipKey:"sendPageTT",image:"Send"}\r
108000 ,ZmSetting.MAIL_ENABLED);\r
108001 ZmOperation.registerOp(ZmId.OP_REFRESH,{\r
108002 textKey:"refresh",tooltipKey:"refreshTooltip",image:"Refresh"}\r
108003 );\r
108004 ZmOperation.registerOp(ZmId.OP_SHARE_NOTEBOOK,{\r
108005 textKey:"shareNotebook",image:"Notebook"}\r
108006 ,ZmSetting.SHARING_ENABLED);\r
108007 ZmOperation.registerOp(ZmId.OP_REVERT_PAGE,{\r
108008 textKey:"revert",tooltipKey:"restorePage",image:"Edit"}\r
108009 );\r
108010 ZmOperation.registerOp(ZmId.OP_BROWSE_FOLDER,{\r
108011 textKey:"browse",image:"Browse"}\r
108012 )\r
108013 };\r
108014 ZmNotebookApp.prototype._registerItems=function(){\r
108015 ZmItem.registerItem(ZmItem.PAGE,{\r
108016 app:ZmApp.NOTEBOOK,nameKey:"page",icon:"Page",soapCmd:"ItemAction",itemClass:"ZmPage",node:"w",organizer:ZmOrganizer.NOTEBOOK,dropTargets:[ZmOrganizer.TAG],searchType:"wiki",resultsList:AjxCallback.simpleClosure(function(e){\r
108017 AjxDispatcher.require("NotebookCore");\r
108018 return new ZmPageList(e)\r
108019 }\r
108020 ,this)}\r
108021 );\r
108022 ZmItem.registerItem(ZmItem.DOCUMENT,{\r
108023 app:ZmApp.NOTEBOOK,nameKey:"document",icon:"GenericDoc",soapCmd:"ItemAction",itemClass:"ZmDocument",node:"doc",organizer:ZmOrganizer.NOTEBOOK,dropTargets:[ZmOrganizer.TAG],searchType:"document",resultsList:AjxCallback.simpleClosure(function(e){\r
108024 AjxDispatcher.require("NotebookCore");\r
108025 return new ZmPageList(e,ZmItem.DOCUMENT)\r
108026 }\r
108027 ,this)}\r
108028 )\r
108029 };\r
108030 ZmNotebookApp.prototype._registerOrganizers=function(){\r
108031 ZmOrganizer.registerOrg(ZmOrganizer.NOTEBOOK,{\r
108032 app:ZmApp.NOTEBOOK,nameKey:"notebook",defaultFolder:ZmOrganizer.ID_NOTEBOOK,soapCmd:"FolderAction",firstUserId:256,orgClass:"ZmNotebook",orgPackage:"NotebookCore",treeController:"ZmNotebookTreeController",labelKey:"notebooks",itemsKey:"documents",hasColor:true,defaultColor:ZmOrganizer.C_NONE,treeType:ZmOrganizer.FOLDER,views:["wiki"],folderKey:"notebook",mountKey:"mountNotebook",createFunc:"ZmOrganizer.create",compareFunc:"ZmNotebook.sortCompare",newOp:ZmOperation.NEW_NOTEBOOK,displayOrder:100,deferrable:true}\r
108033 )\r
108034 };\r
108035 ZmNotebookApp.prototype._setupSearchToolbar=function(){\r
108036 ZmSearchToolBar.addMenuItem(ZmItem.PAGE,{\r
108037 msgKey:"searchNotebooks",tooltipKey:"searchForPages",icon:"Notebook",shareIcon:"SharedNotebook",setting:ZmSetting.NOTEBOOK_ENABLED,id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.ITEM_PAGE)}\r
108038 )\r
108039 };\r
108040 ZmNotebookApp.prototype._registerApp=function(){\r
108041 var a={};\r
108042 a[ZmOperation.NEW_PAGE]="page";\r
108043 var t={};\r
108044 t[ZmOperation.NEW_NOTEBOOK]="notebook";\r
108045 var e={};\r
108046 e[ZmKeyMap.NEW_PAGE]=ZmOperation.NEW_PAGE;\r
108047 e[ZmKeyMap.NEW_NOTEBOOK]=ZmOperation.NEW_NOTEBOOK;\r
108048 ZmApp.registerApp(ZmApp.NOTEBOOK,{\r
108049 mainPkg:"Notebook",nameKey:"documents",icon:"NoteApp",textPrecedence:10,chooserTooltipKey:"goToDocuments",defaultSearch:ZmItem.PAGE,organizer:ZmOrganizer.NOTEBOOK,overviewTrees:[ZmOrganizer.NOTEBOOK,ZmOrganizer.TAG],searchTypes:[ZmItem.PAGE,ZmItem.DOCUMENT],newItemOps:a,newOrgOps:t,actionCodes:e,gotoActionCode:ZmKeyMap.GOTO_NOTEBOOK,newActionCode:ZmKeyMap.NEW_PAGE,chooserSort:50,defaultSort:30}\r
108050 )\r
108051 };\r
108052 ZmNotebookApp.prototype.deleteNotify=function(t,s){\r
108053 if(!s&&this._deferNotifications("delete",t)){\r
108054 return\r
108055 }\r
108056 var p=null;\r
108057 var f=t.join(",")+",";\r
108058 var y=false;\r
108059 var n=AjxDispatcher.run("GetNotebookController");\r
108060 var c=n.getPage();\r
108061 var a=appCtxt.getOverviewController();\r
108062 var h=a.getTreeController(ZmOrganizer.NOTEBOOK);\r
108063 var r=h.getTreeView(this.getOverviewId());\r
108064 if(!r){\r
108065 return\r
108066 }\r
108067 var e=this.getNotebookCache();\r
108068 for(var m=0;\r
108069 m<t.length;\r
108070 m++){\r
108071 var u=r.getNextData(t[m]);\r
108072 if(u&&f.indexOf(u.id+",")<0){\r
108073 p=u\r
108074 }\r
108075 if(c&&c.id==t[m]){\r
108076 y=true\r
108077 }}\r
108078 for(var m=0;\r
108079 m<t.length;\r
108080 m++){\r
108081 var g=e.getPageById(t[m]);\r
108082 if(g){\r
108083 e.removePage(g);\r
108084 g.notifyDelete()\r
108085 }\r
108086 var o=appCtxt.getById(t[m]);\r
108087 if(o&&(o instanceof ZmNotebook)){\r
108088 e.removeItem(o);\r
108089 o.notifyDelete()\r
108090 }\r
108091 appCtxt.cacheRemove(t[m])\r
108092 }\r
108093 if(y){\r
108094 var d={\r
108095 folderId:(p?p.id:c.folderId),name:ZmNotebook.PAGE_INDEX};\r
108096 n.gotoPage(d)\r
108097 }\r
108098 for(var m=0;\r
108099 m<t.length;\r
108100 m++){\r
108101 var l=r.getTreeItemById(t[m]);\r
108102 if(l){\r
108103 l.dispose()\r
108104 }\r
108105 t[m]=null\r
108106 }};\r
108107 ZmNotebookApp.prototype.createNotify=function(c,o){\r
108108 if(!c.folder&&!c.w&&!c.doc&&!c.link){\r
108109 return\r
108110 }\r
108111 if(!o&&!this._noDefer&&this._deferNotifications("create",c)){\r
108112 return\r
108113 }\r
108114 for(var t in c){\r
108115 var h=c[t];\r
108116 for(var s=0;\r
108117 s<h.length;\r
108118 s++){\r
108119 var r=h[s];\r
108120 if(appCtxt.cacheGet(r.id)){\r
108121 continue\r
108122 }\r
108123 if(t=="folder"){\r
108124 this._handleCreateFolder(r,ZmOrganizer.NOTEBOOK)\r
108125 }else{\r
108126 if(t=="link"){\r
108127 this._handleCreateLink(r,ZmOrganizer.NOTEBOOK)\r
108128 }else{\r
108129 if(t=="w"){\r
108130 var e=this.getNotebookCache();\r
108131 var l=new ZmPage();\r
108132 l.set(r);\r
108133 e.putPage(l);\r
108134 var a=AjxDispatcher.run("GetNotebookController");\r
108135 if(!a.isIframeEnabled()){\r
108136 var n=a.getPage();\r
108137 if(n&&n.name==ZmNotebook.PAGE_INDEX){\r
108138 a.gotoPage(n)\r
108139 }}}else{\r
108140 if(t=="doc"){\r
108141 var e=this.getNotebookCache();\r
108142 var d=new ZmDocument();\r
108143 d.set(r);\r
108144 e.putDocument(d)\r
108145 }}}}}}};\r
108146 ZmNotebookApp.prototype.modifyNotify=function(s,n){\r
108147 if(!s){\r
108148 return\r
108149 }\r
108150 if(!s.w&&!s.doc){\r
108151 return\r
108152 }\r
108153 if(!n&&!this._noDefer&&this._deferNotifications("modify",l)){\r
108154 return\r
108155 }\r
108156 for(var t in s){\r
108157 var l=s[t];\r
108158 for(var h=0;\r
108159 h<l.length;\r
108160 h++){\r
108161 var d=l[h];\r
108162 var o=d.id;\r
108163 if(!o){\r
108164 continue\r
108165 }\r
108166 if(t=="w"){\r
108167 var e=this.getNotebookCache();\r
108168 var c=e.getPageById(o);\r
108169 if(!c){\r
108170 c=new ZmPage();\r
108171 c.set(d);\r
108172 e.putPage(c)\r
108173 }else{\r
108174 c.notifyModify(d);\r
108175 c.set(d)\r
108176 }\r
108177 var a=AjxDispatcher.run("GetNotebookController");\r
108178 if(!a.isIframeEnabled()){\r
108179 var r=a.getPage();\r
108180 if(r&&r.folderId==c.folderId){\r
108181 if(r.name==ZmNotebook.PAGE_INDEX||r.name==c.name){\r
108182 a.gotoPage(r)\r
108183 }}}\r
108184 d._handled=true\r
108185 }else{\r
108186 if(t=="doc"){\r
108187 var e=this.getNotebookCache();\r
108188 var u=e.getDocumentById(o);\r
108189 if(!u){\r
108190 u=new ZmDocument();\r
108191 u.set(d);\r
108192 e.putDocument(u)\r
108193 }else{\r
108194 u.notifyModify(d);\r
108195 u.set(d)\r
108196 }\r
108197 d._handled=true\r
108198 }}}}};\r
108199 ZmNotebookApp.prototype.handleOp=function(t){\r
108200 switch(t){\r
108201 case ZmOperation.NEW_PAGE:var e=new AjxCallback(this,this._handleLoadNewPage);\r
108202 AjxDispatcher.require(["NotebookCore","Notebook"],false,e,null,true);\r
108203 break;\r
108204 case ZmOperation.NEW_NOTEBOOK:var e=new AjxCallback(this,this._handleLoadNewNotebook);\r
108205 AjxDispatcher.require(["NotebookCore","Notebook"],false,e,null,true);\r
108206 break\r
108207 }};\r
108208 ZmNotebookApp.prototype._handleLoadNewPage=function(){\r
108209 var e=appCtxt.getOverviewController();\r
108210 var n=e.getTreeController(ZmOrganizer.NOTEBOOK);\r
108211 var t=n.getTreeView(this.getOverviewId());\r
108212 var o=t?t.getSelected():null;\r
108213 var a=new ZmPage();\r
108214 a.folderId=o?o.id:ZmNotebookItem.DEFAULT_FOLDER;\r
108215 a.name=this.generateUniqueName(a.folderId);\r
108216 AjxDispatcher.run("GetPageEditController").show(a)\r
108217 };\r
108218 ZmNotebookApp.prototype._handleLoadNewNotebook=function(){\r
108219 appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_LOADING);\r
108220 var e=appCtxt.getNewNotebookDialog();\r
108221 if(!this._newNotebookCb){\r
108222 this._newNotebookCb=new AjxCallback(this,this._newNotebookCallback)\r
108223 }\r
108224 ZmController.showDialog(e,this._newNotebookCb)\r
108225 };\r
108226 ZmNotebookApp.prototype.launch=function(t,a){\r
108227 var e=new AjxCallback(this,this._handleLoadLaunch,[a]);\r
108228 AjxDispatcher.require(["NotebookCore","Notebook"],true,e,null,true)\r
108229 };\r
108230 ZmNotebookApp.prototype._handleLoadLaunch=function(t){\r
108231 var e=this.getNotebookController();\r
108232 e.show(null,true);\r
108233 if(t){\r
108234 t.run()\r
108235 }};\r
108236 ZmNotebookApp.prototype.showSearchResults=function(t,a){\r
108237 var e=new AjxCallback(this,this._handleLoadShowSearchResults,[t,a]);\r
108238 AjxDispatcher.require(["NotebookCore","Notebook"],false,e,null,true)\r
108239 };\r
108240 ZmNotebookApp.prototype._handleLoadShowSearchResults=function(e,t){\r
108241 this.getFileController().show(e,true);\r
108242 if(t){\r
108243 t.run()\r
108244 }};\r
108245 ZmNotebookApp.prototype.setActive=function(e){};\r
108246 ZmNotebookApp.prototype.getNotebookController=function(){\r
108247 if(!this._notebookController){\r
108248 this._notebookController=new ZmNotebookPageController(this._container,this)\r
108249 }\r
108250 return this._notebookController\r
108251 };\r
108252 ZmNotebookApp.prototype.getPageEditController=function(){\r
108253 if(!this._pageController){\r
108254 this._pageController=new ZmPageEditController(this._container,this)\r
108255 }\r
108256 return this._pageController\r
108257 };\r
108258 ZmNotebookApp.prototype.getFileController=function(){\r
108259 if(!this._fileController){\r
108260 this._fileController=new ZmNotebookFileController(this._container,this)\r
108261 }\r
108262 return this._fileController\r
108263 };\r
108264 ZmNotebookApp.prototype.getNotebookCache=function(){\r
108265 if(!this._notebookCache){\r
108266 this._notebookCache=new ZmNotebookCache()\r
108267 }\r
108268 return this._notebookCache\r
108269 };\r
108270 ZmNotebookApp.prototype._newNotebookCallback=function(n,a,t){\r
108271 var o=appCtxt.getNewNotebookDialog();\r
108272 o.popdown();\r
108273 var e=appCtxt.getOverviewController();\r
108274 e.getTreeController(ZmOrganizer.NOTEBOOK)._doCreate(n,a,t)\r
108275 };\r
108276 ZmNotebookApp.prototype.generateUniqueName=function(a){\r
108277 var t=this.getNotebookCache().getPagesInFolder(a);\r
108278 var s=[];\r
108279 for(var n in t){\r
108280 s.push(t[n].name.toLowerCase())\r
108281 }\r
108282 s="/"+s.join("/")+"/";\r
108283 var e=ZmMsg.defaultPageName.toLowerCase();\r
108284 for(var o=1;\r
108285 o<100;\r
108286 o++){\r
108287 if(s.indexOf(["/",e,o,"/"].join(""))==-1){\r
108288 return(ZmMsg.defaultPageName+o)\r
108289 }}\r
108290 return ZmMsg.untitled\r
108291 };\r
108292 ZmNotebookApp.prototype.getPageVersionController=function(){\r
108293 if(!this._versionController){\r
108294 this._versionController=new ZmPageVersionController(this._container,this)\r
108295 }\r
108296 return this._versionController\r
108297 }\r
108298 }\r
108299 if(AjxPackage.define("zimbraMail.briefcase.ZmBriefcaseApp")){\r
108300 ZmBriefcaseApp=function(t,e){\r
108301 ZmApp.call(this,ZmApp.BRIEFCASE,t,e);\r
108302 this._notebookCache=null\r
108303 };\r
108304 ZmBriefcaseApp.prototype=new ZmApp;\r
108305 ZmBriefcaseApp.prototype.constructor=ZmBriefcaseApp;\r
108306 ZmEvent.S_PAGE=ZmId.ITEM_PAGE;\r
108307 ZmEvent.S_DOCUMENT=ZmId.ITEM_DOCUMENT;\r
108308 ZmEvent.S_BRIEFCASE=ZmId.ITEM_BRIEFCASE;\r
108309 ZmItem.PAGE=ZmEvent.S_PAGE;\r
108310 ZmItem.DOCUMENT=ZmEvent.S_DOCUMENT;\r
108311 ZmItem.BRIEFCASE=ZmEvent.S_BRIEFCASE;\r
108312 ZmOrganizer.BRIEFCASE=ZmId.ORG_BRIEFCASE;\r
108313 ZmApp.BRIEFCASE=ZmId.APP_BRIEFCASE;\r
108314 ZmApp.CLASS[ZmApp.BRIEFCASE]="ZmBriefcaseApp";\r
108315 ZmApp.SETTING[ZmApp.BRIEFCASE]=ZmSetting.BRIEFCASE_ENABLED;\r
108316 ZmApp.LOAD_SORT[ZmApp.BRIEFCASE]=65;\r
108317 ZmApp.QS_ARG[ZmApp.BRIEFCASE]="briefcase";\r
108318 ZmApp.BUTTON_ID[ZmApp.BRIEFCASE]=ZmId.BRIEFCASE_APP;\r
108319 ZmBriefcaseApp.prototype.toString=function(){\r
108320 return"ZmBriefcaseApp"\r
108321 };\r
108322 ZmBriefcaseApp.prototype._defineAPI=function(){\r
108323 AjxDispatcher.setPackageLoadFunction("BriefcaseCore",new AjxCallback(this,this._postLoadCore));\r
108324 AjxDispatcher.setPackageLoadFunction("Briefcase",new AjxCallback(this,this._postLoad,ZmOrganizer.BRIEFCASE));\r
108325 AjxDispatcher.registerMethod("GetBriefcaseController",["BriefcaseCore","Briefcase"],new AjxCallback(this,this.getBriefcaseController))\r
108326 };\r
108327 ZmBriefcaseApp.prototype._registerOperations=function(){\r
108328 ZmOperation.registerOp(ZmId.OP_NEW_BRIEFCASEITEM,{\r
108329 textKey:"newBriefcase",image:"NewFolder",tooltipKey:"newBriefcaseTooltip",shortcut:ZmKeyMap.NEW_BRIEFCASEITEM}\r
108330 );\r
108331 ZmOperation.registerOp(ZmId.OP_NEW_FILE,{\r
108332 textKey:"uploadNewFile",tooltipKey:"uploadNewFile",image:"NewPage"}\r
108333 );\r
108334 ZmOperation.registerOp(ZmId.OP_NEW_PRESENTATION,{\r
108335 textKey:"newPresentationBeta",tooltipKey:"newPresentation",image:"Presentation"}\r
108336 );\r
108337 ZmOperation.registerOp(ZmId.OP_NEW_SPREADSHEET,{\r
108338 textKey:"newSpreadSheetBeta",tooltipKey:"newSpreadSheet",image:"ZSpreadSheet"}\r
108339 );\r
108340 ZmOperation.registerOp(ZmId.OP_NEW_DOC,{\r
108341 textKey:"newDocument",tooltipKey:"newDocument",image:"Doc",shortcut:ZmKeyMap.NEW_DOC}\r
108342 );\r
108343 ZmOperation.registerOp(ZmId.OP_SHARE_BRIEFCASE,{\r
108344 textKey:"shareFolder",image:"SharedMailFolder"}\r
108345 ,ZmSetting.SHARING_ENABLED);\r
108346 ZmOperation.registerOp(ZmId.OP_MOUNT_BRIEFCASE,{\r
108347 textKey:"mountBriefcase",image:"Notebook"}\r
108348 ,ZmSetting.SHARING_ENABLED);\r
108349 ZmOperation.registerOp(ZmId.OP_OPEN_FILE,{\r
108350 textKey:"openFile",tooltipKey:"openFileTooltip",image:"NewPage"}\r
108351 );\r
108352 ZmOperation.registerOp(ZmId.OP_SAVE_FILE,{\r
108353 textKey:"saveFile",tooltipKey:"saveFileTooltip",image:"Save"}\r
108354 );\r
108355 ZmOperation.registerOp(ZmId.OP_VIEW_FILE_AS_HTML,{\r
108356 textKey:"viewAsHtml",tooltipKey:"viewAsHtml",image:"HtmlDoc"}\r
108357 );\r
108358 ZmOperation.registerOp(ZmId.OP_SEND_FILE,{\r
108359 textKey:"sendLink",tooltipKey:"sendLink",image:"Send"}\r
108360 );\r
108361 ZmOperation.registerOp(ZmId.OP_SEND_FILE_AS_ATT,{\r
108362 textKey:"sendAsAttachment",tooltipKey:"sendAsAttachment",image:"Attachment"}\r
108363 );\r
108364 ZmOperation.registerOp(ZmId.OP_SEND_FILE_MENU,{\r
108365 textKey:"send",image:"Send"}\r
108366 );\r
108367 ZmOperation.registerOp(ZmId.OP_CREATE_SLIDE_SHOW,{\r
108368 textKey:"createSlideShow",image:"Presentation"}\r
108369 )\r
108370 };\r
108371 ZmBriefcaseApp.prototype._registerSettings=function(e){\r
108372 e=e||appCtxt.getSettings();\r
108373 e.registerSetting("SPREADSHEET_ENABLED",{\r
108374 name:"zimbraFeatureBriefcaseSpreadsheetEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
108375 );\r
108376 e.registerSetting("SLIDES_ENABLED",{\r
108377 name:"zimbraFeatureBriefcaseSlidesEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
108378 );\r
108379 e.registerSetting("DOCS_ENABLED",{\r
108380 name:"zimbraFeatureBriefcaseDocsEnabled",type:ZmSetting.T_COS,dataType:ZmSetting.D_BOOLEAN,defaultValue:true}\r
108381 )\r
108382 };\r
108383 ZmBriefcaseApp.prototype._registerItems=function(){\r
108384 ZmItem.registerItem(ZmItem.BRIEFCASE,{\r
108385 app:ZmApp.BRIEFCASE,nameKey:"document",icon:"GenericDoc",soapCmd:"ItemAction",itemClass:"ZmBriefcaseItem",node:"doc",organizer:ZmOrganizer.BRIEFCASE,dropTargets:[ZmOrganizer.TAG,ZmOrganizer.BRIEFCASE],searchType:"document",resultsList:AjxCallback.simpleClosure(function(e){\r
108386 AjxDispatcher.require("BriefcaseCore");\r
108387 return new ZmBriefcaseItemList(e,ZmItem.BRIEFCASE)\r
108388 }\r
108389 ,this)}\r
108390 )\r
108391 };\r
108392 ZmBriefcaseApp.prototype._registerOrganizers=function(){\r
108393 ZmOrganizer.registerOrg(ZmOrganizer.BRIEFCASE,{\r
108394 app:ZmApp.BRIEFCASE,nameKey:"folders",defaultFolder:ZmOrganizer.ID_BRIEFCASE,soapCmd:"FolderAction",firstUserId:256,orgClass:"ZmBriefcase",orgPackage:"BriefcaseCore",treeController:"ZmBriefcaseTreeController",labelKey:"folders",itemsKey:"files",treeType:ZmOrganizer.FOLDER,views:["document"],folderKey:"briefcase",mountKey:"mountFolder",createFunc:"ZmOrganizer.create",compareFunc:"ZmBriefcase.sortCompare",deferrable:false,newOp:ZmOperation.NEW_BRIEFCASEITEM,displayOrder:100,hasColor:true,childWindow:true}\r
108395 )\r
108396 };\r
108397 ZmBriefcaseApp.prototype._setupSearchToolbar=function(){\r
108398 ZmSearchToolBar.addMenuItem(ZmItem.BRIEFCASE,{\r
108399 msgKey:"searchBriefcase",tooltipKey:"searchForFiles",icon:"Folder",shareIcon:"SharedBriefcase",setting:ZmSetting.BRIEFCASE_ENABLED,id:ZmId.getMenuItemId(ZmId.SEARCH,ZmId.ITEM_BRIEFCASE)}\r
108400 )\r
108401 };\r
108402 ZmBriefcaseApp.prototype._registerApp=function(){\r
108403 var a={};\r
108404 a[ZmOperation.NEW_FILE]="uploadNewFile";\r
108405 a[ZmOperation.NEW_DOC]="document";\r
108406 var t={};\r
108407 t[ZmOperation.NEW_BRIEFCASEITEM]="briefcase";\r
108408 var e={};\r
108409 e[ZmKeyMap.NEW_FILE]=ZmOperation.NEW_FILE;\r
108410 e[ZmKeyMap.NEW_BRIEFCASEITEM]=ZmOperation.NEW_BRIEFCASEITEM;\r
108411 e[ZmKeyMap.NEW_PRESENTATION]=ZmOperation.NEW_PRESENTATION;\r
108412 e[ZmKeyMap.NEW_SPREADSHEET]=ZmOperation.NEW_SPREADSHEET;\r
108413 e[ZmKeyMap.NEW_DOC]=ZmOperation.NEW_DOC;\r
108414 ZmApp.registerApp(ZmApp.BRIEFCASE,{\r
108415 mainPkg:"Briefcase",nameKey:"briefcase",icon:"Folder",textPrecedence:30,chooserTooltipKey:"gotoBriefcase",defaultSearch:ZmItem.BRIEFCASE,organizer:ZmOrganizer.BRIEFCASE,overviewTrees:[ZmOrganizer.BRIEFCASE,ZmOrganizer.TAG],searchTypes:[ZmItem.BRIEFCASE],newItemOps:a,newOrgOps:t,actionCodes:e,gotoActionCode:ZmKeyMap.GOTO_BRIEFCASE,newActionCode:ZmKeyMap.NEW_FILE,chooserSort:70,defaultSort:60}\r
108416 )\r
108417 };\r
108418 ZmBriefcaseApp.prototype.deleteNotify=function(t,o){\r
108419 if(!o&&this._deferNotifications("delete",t)){\r
108420 return\r
108421 }\r
108422 var n=AjxDispatcher.run("GetBriefcaseController");\r
108423 for(var e=0;\r
108424 e<t.length;\r
108425 e++){\r
108426 var a=n.getItemById(t[e]);\r
108427 if(a){\r
108428 a.notifyDelete();\r
108429 n.removeItem(a)\r
108430 }}};\r
108431 ZmBriefcaseApp.prototype.createNotify=function(n,r){\r
108432 if(!n.folder&&!n.doc&&!n.link){\r
108433 return\r
108434 }\r
108435 if(!r&&!this._noDefer&&this._deferNotifications("create",n)){\r
108436 return\r
108437 }\r
108438 var h=AjxDispatcher.run("GetBriefcaseController");\r
108439 var o=false;\r
108440 for(var e in n){\r
108441 var s=n[e];\r
108442 for(var a=0;\r
108443 a<s.length;\r
108444 a++){\r
108445 var t=s[a];\r
108446 if(appCtxt.cacheGet(t.id)){\r
108447 continue\r
108448 }\r
108449 \r
108450 if(e=="folder"){\r
108451 this._handleCreateFolder(t,ZmOrganizer.BRIEFCASE)\r
108452 }else{\r
108453 if(e=="link"){\r
108454 this._handleCreateLink(t,ZmOrganizer.BRIEFCASE)\r
108455 }else{\r
108456 if(e=="doc"){\r
108457 if(t.l==h._currentFolder){\r
108458 o=true\r
108459 }}}}}}\r
108460 if(o){\r
108461 h.reloadFolder()\r
108462 }};\r
108463 ZmBriefcaseApp.prototype.modifyNotify=function(n,o){\r
108464 if(!n.doc){\r
108465 return\r
108466 }\r
108467 if(!o&&!this._noDefer&&this._deferNotifications("modify",n)){\r
108468 return\r
108469 }\r
108470 var a=this.getBriefcaseController();\r
108471 var s=false;\r
108472 for(var e in n){\r
108473 var h=n[e];\r
108474 for(var r=0;\r
108475 r<h.length;\r
108476 r++){\r
108477 var l=h[r];\r
108478 var t=l.id;\r
108479 if(!t){\r
108480 continue\r
108481 }\r
108482 if(e=="doc"){\r
108483 var c=a.getItemById(t);\r
108484 if(c){\r
108485 c.notifyModify(l);\r
108486 c.set(l)\r
108487 }\r
108488 l._handled=true\r
108489 }else{\r
108490 if(e=="folder"){\r
108491 var d=a.getCurrentFolderId();\r
108492 if(appCtxt.getById(t)&&(appCtxt.getById(t).nId==d||t==d)){\r
108493 s=true;\r
108494 l._handled=true\r
108495 }}}}}\r
108496 if(s){\r
108497 a.reloadFolder()\r
108498 }};\r
108499 ZmBriefcaseApp.prototype.handleOp=function(a){\r
108500 switch(a){\r
108501 case ZmOperation.NEW_FILE:var e=new AjxCallback(this,this._handleNewItem);\r
108502 AjxDispatcher.require(["BriefcaseCore","Briefcase"],false,e,null,true);\r
108503 break;\r
108504 case ZmOperation.NEW_BRIEFCASEITEM:var e=new AjxCallback(this,this._handleLoadNewBriefcaseItem);\r
108505 AjxDispatcher.require(["BriefcaseCore","Briefcase"],false,e,null,true);\r
108506 break;\r
108507 case ZmOperation.NEW_PRESENTATION:var e=new AjxCallback(this,this.newDoc,[ZmMimeTable.APP_ZIMBRA_SLIDES]);\r
108508 AjxDispatcher.require(["BriefcaseCore","Briefcase"],true,e,null);\r
108509 break;\r
108510 case ZmOperation.NEW_SPREADSHEET:var t=new AjxCallback(this,this.newDoc,[ZmMimeTable.APP_ZIMBRA_SPREADSHEET]);\r
108511 AjxDispatcher.require(["BriefcaseCore","Briefcase"],true,t,null);\r
108512 break;\r
108513 case ZmOperation.NEW_DOC:var t=new AjxCallback(this,this.newDoc,[ZmMimeTable.APP_ZIMBRA_DOC]);\r
108514 AjxDispatcher.require(["BriefcaseCore","Briefcase"],true,t,null);\r
108515 break\r
108516 }};\r
108517 ZmBriefcaseApp.prototype._handleNewDoc=function(s){\r
108518 AjxDispatcher.require("IM");\r
108519 var e=ZmPromptDialog.getInstance();\r
108520 var o=new AjxCallback(this,this._newDocOkCallback,[s,e]);\r
108521 var n=ZmMsg.briefcaseCreateNewDocument;\r
108522 var t=ZmMsg.documentName;\r
108523 if(s==ZmOperation.NEW_PRESENTATION){\r
108524 n=ZmMsg.briefcaseCreateNewPresentation;\r
108525 t=ZmMsg.presentationName\r
108526 }\r
108527 var a={\r
108528 title:n,label:t,callback:o};\r
108529 e.popup(a)\r
108530 };\r
108531 ZmBriefcaseApp.prototype._newDocOkCallback=function(r,c,s){\r
108532 var p;\r
108533 if(!s.value){\r
108534 p=ZmMsg.nameEmpty\r
108535 }\r
108536 c.popdown();\r
108537 if(p){\r
108538 var l=appCtxt.getMsgDialog();\r
108539 l.reset();\r
108540 l.setMessage(p,DwtMessageDialog.CRITICAL_STYLE);\r
108541 l.popup()\r
108542 }else{\r
108543 AjxDispatcher.require("Startup1_1");\r
108544 var m=ZmMimeTable.APP_ZIMBRA_DOC;\r
108545 switch(r){\r
108546 case ZmOperation.NEW_PRESENTATION:m=ZmMimeTable.APP_ZIMBRA_SLIDES;\r
108547 break\r
108548 }\r
108549 var e=appCtxt.getOverviewController();\r
108550 var n=e.getTreeController(ZmOrganizer.BRIEFCASE);\r
108551 var t=ZmOrganizer.ID_BRIEFCASE;\r
108552 if(n){\r
108553 var o=n.getTreeView(this.getOverviewId());\r
108554 var u=o?o.getSelected():null;\r
108555 t=u?u.id:ZmOrganizer.ID_BRIEFCASE\r
108556 }\r
108557 var d=this.getEditURLForContentType(m)+"?name="+s.value+"&l="+t;\r
108558 var a="_newslide"+s.value;\r
108559 var f=["width=",(screen.width||640),",","height=",(screen.height||480),",","resizable,toolbar=no,menubar=no,fullscreen=yes,location=no,status=no","fullscreen=yes"].join("");\r
108560 var h=open(d,a,f)\r
108561 }};\r
108562 ZmBriefcaseApp.prototype.newDoc=function(c,t,h){\r
108563 var a=appCtxt.getOverviewController();\r
108564 var s=a.getTreeController(ZmOrganizer.BRIEFCASE);\r
108565 var o=ZmOrganizer.ID_BRIEFCASE;\r
108566 if(s){\r
108567 var r=s.getTreeView(this.getOverviewId());\r
108568 var l=r?r.getSelected():null;\r
108569 o=l?l.id:ZmOrganizer.ID_BRIEFCASE\r
108570 }\r
108571 var e=this.getEditURLForContentType(c)+"?"+(t?"name="+t+"&":"")+"l="+o;\r
108572 var n=h||t;\r
108573 window.open(e,n)\r
108574 };\r
108575 ZmBriefcaseApp.prototype.getEditURLForContentType=function(t){\r
108576 AjxDispatcher.require("Startup1_1");\r
108577 var e="Slides.jsp";\r
108578 switch(t){\r
108579 case ZmMimeTable.APP_ZIMBRA_SLIDES:e="Slides.jsp";\r
108580 break;\r
108581 case ZmMimeTable.APP_ZIMBRA_SPREADSHEET:e="SpreadsheetDoc.jsp";\r
108582 break;\r
108583 case ZmMimeTable.APP_ZIMBRA_DOC:e="Docs.jsp";\r
108584 break;\r
108585 default:return null\r
108586 }\r
108587 return(appContextPath+"/public/"+e)\r
108588 };\r
108589 ZmBriefcaseApp.prototype.isDoclet=function(e){\r
108590 var t=e.getContentType();\r
108591 switch(t){\r
108592 case ZmMimeTable.APP_ZIMBRA_SLIDES:return true;\r
108593 default:return false\r
108594 }};\r
108595 ZmBriefcaseApp.prototype._handleNewItem=function(){\r
108596 appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_LOADING);\r
108597 var e=new AjxCallback(this,this._handleUploadNewItem);\r
108598 this.getBriefcaseController().__popupUploadDialog(e,ZmMsg.uploadFileToBriefcase)\r
108599 };\r
108600 ZmBriefcaseApp.prototype._handleUploadNewItem=function(t,e){\r
108601 var a=this.getBriefcaseController();\r
108602 a.refreshFolder()\r
108603 };\r
108604 ZmBriefcaseApp.prototype._handleLoadNewBriefcaseItem=function(){\r
108605 appCtxt.getAppViewMgr().popView(true,ZmId.VIEW_LOADING);\r
108606 if(!this._newNotebookCb){\r
108607 this._newNotebookCb=new AjxCallback(this,this._newBriefcaseCallback)\r
108608 }\r
108609 ZmController.showDialog(appCtxt.getNewBriefcaseDialog(),this._newNotebookCb)\r
108610 };\r
108611 ZmBriefcaseApp.prototype.launch=function(t,a){\r
108612 var e=new AjxCallback(this,this._handleLoadLaunch,[a]);\r
108613 AjxDispatcher.require(["BriefcaseCore","Briefcase"],true,e,null,true)\r
108614 };\r
108615 ZmBriefcaseApp.prototype._handleLoadLaunch=function(e){\r
108616 this.getBriefcaseController().show(null,true);\r
108617 if(e){\r
108618 e.run()\r
108619 }};\r
108620 ZmBriefcaseApp.prototype.showSearchResults=function(t,a){\r
108621 var e=new AjxCallback(this,this._handleLoadShowSearchResults,[t,a]);\r
108622 AjxDispatcher.require(["BriefcaseCore","Briefcase"],false,e,null,true)\r
108623 };\r
108624 ZmBriefcaseApp.prototype._handleLoadShowSearchResults=function(e,t){\r
108625 this.getBriefcaseController().showFolderContents(e.getResults(ZmItem.MIXED));\r
108626 if(t){\r
108627 t.run()\r
108628 }};\r
108629 ZmBriefcaseApp.prototype.setActive=function(e){};\r
108630 ZmBriefcaseApp.prototype._newBriefcaseCallback=function(o,a,t){\r
108631 appCtxt.getNewBriefcaseDialog().popdown();\r
108632 var e=appCtxt.getOverviewController();\r
108633 e.getTreeController(ZmOrganizer.BRIEFCASE)._doCreate(o,a,t)\r
108634 };\r
108635 ZmBriefcaseApp.prototype.getBriefcaseController=function(){\r
108636 if(!this._briefcaseController){\r
108637 this._briefcaseController=new ZmBriefcaseController(this._container,this)\r
108638 }\r
108639 return this._briefcaseController\r
108640 };\r
108641 ZmBriefcaseApp.prototype.createFromAttachment=function(o,a,t){\r
108642 var e=new AjxCallback(this,this._handleCreateFromAttachment,[o,a,t]);\r
108643 AjxDispatcher.require(["BriefcaseCore","Briefcase"],false,e)\r
108644 };\r
108645 ZmBriefcaseApp.prototype._handleCreateFromAttachment=function(o,a,t){\r
108646 if(this._deferredFolders.length!=0){\r
108647 this._createDeferredFolders(ZmApp.BRIEFCASE)\r
108648 }\r
108649 var n=this._copyToDialog=appCtxt.getChooseFolderDialog();\r
108650 var e=new AjxCallback(this,this._chooserCallback,[o,a,t]);\r
108651 ZmController.showDialog(n,e,this._getCopyParams(n,o,a))\r
108652 };\r
108653 ZmBriefcaseApp.prototype._getCopyParams=function(a,t,e){\r
108654 return{\r
108655 data:{\r
108656 msgId:t,partId:e}\r
108657 ,treeIds:[ZmOrganizer.BRIEFCASE],overviewId:a.getOverviewId(this._name),title:ZmMsg.addToBriefcaseTitle,description:ZmMsg.targetFolder,appName:ZmApp.BRIEFCASE}\r
108658 };\r
108659 ZmBriefcaseApp.prototype._chooserCallback=function(o,a,e,t){\r
108660 var n=new AjxCallback(this,this.handleDuplicateCheck,[o,a,e,t.id]);\r
108661 this.getBriefcaseController().getItemsInFolder(t.id,n)\r
108662 };\r
108663 ZmBriefcaseApp.prototype.handleDuplicateCheck=function(a,h,e,t,l){\r
108664 var c=this.getBriefcaseController();\r
108665 if(c.isReadOnly(t)){\r
108666 ZmOrganizer._showErrorMsg(ZmMsg.errorPermission);\r
108667 return\r
108668 }\r
108669 if(c.isShared(t)){\r
108670 if(a.indexOf(":")<0){\r
108671 a=appCtxt.getActiveAccount().id+":"+a\r
108672 }}\r
108673 var s=false;\r
108674 if(l instanceof ZmList){\r
108675 l=l.getArray()\r
108676 }\r
108677 for(var n in l){\r
108678 var d=l[n];\r
108679 if(d.name==e){\r
108680 s=true;\r
108681 break\r
108682 }}\r
108683 if(!s){\r
108684 var r=new ZmBriefcaseItem();\r
108685 r.createFromAttachment(a,h,e,t)\r
108686 }else{\r
108687 var o=AjxMessageFormat.format(ZmMsg.errorFileAlreadyExists,e);\r
108688 ZmOrganizer._showErrorMsg(o)\r
108689 }};\r
108690 ZmBriefcaseApp.prototype.fixCrossDomainReference=function(t,a){\r
108691 var n=AjxStringUtil.parseURL(t);\r
108692 if(n.authority!=window.location.host){\r
108693 if((a&&t.indexOf(a)>=0)||!a){\r
108694 var o=n.protocol+"://"+n.authority;\r
108695 var e=window.location.protocol+"//"+window.location.host;\r
108696 t=t.replace(o,e)\r
108697 }}\r
108698 return t\r
108699 };\r
108700 ZmBriefcaseApp.prototype._createDeferredFolders=function(e){\r
108701 AjxPackage.require("BriefcaseCore");\r
108702 ZmApp.prototype._createDeferredFolders.call(this,e)\r
108703 }\r
108704 }\r
108705 if(AjxPackage.define("zimbraMail.voicemail.ZmVoiceApp")){\r
108706 ZmVoiceApp=function(t,e){\r
108707 this.phones=[];\r
108708 this._nameToPhone={};\r
108709 this.accordionItem=null;\r
108710 this.soapInfo={\r
108711 method:"SearchVoiceRequest",namespace:"urn:zimbraVoice",response:"SearchVoiceResponse",additional:null};\r
108712 this._storeprincipal=null;\r
108713 ZmApp.call(this,ZmApp.VOICE,t,e)\r
108714 };\r
108715 ZmEvent.S_VOICEMAIL=ZmId.APP_VOICE;\r
108716 ZmItem.VOICEMAIL=ZmId.ITEM_VOICEMAIL;\r
108717 ZmEvent.S_CALL=ZmId.ITEM_CALL;\r
108718 ZmItem.CALL=ZmEvent.S_CALL;\r
108719 ZmOrganizer.VOICE=ZmEvent.S_VOICEMAIL;\r
108720 ZmApp.VOICE="Voice";\r
108721 ZmApp.CLASS[ZmApp.VOICE]="ZmVoiceApp";\r
108722 ZmApp.SETTING[ZmApp.VOICE]=ZmSetting.VOICE_ENABLED;\r
108723 ZmApp.UPSELL_SETTING[ZmApp.VOICE]=ZmSetting.VOICE_UPSELL_ENABLED;\r
108724 ZmApp.LOAD_SORT[ZmApp.VOICE]=80;\r
108725 ZmApp.QS_ARG[ZmApp.VOICE]="voice";\r
108726 ZmVoiceApp.prototype=new ZmApp;\r
108727 ZmVoiceApp.prototype.constructor=ZmVoiceApp;\r
108728 ZmVoiceApp.prototype.toString=function(){\r
108729 return"ZmVoiceApp"\r
108730 };\r
108731 ZmVoiceApp.prototype._defineAPI=function(){\r
108732 AjxDispatcher.setPackageLoadFunction("Voicemail",new AjxCallback(this,this._postLoadCore));\r
108733 AjxDispatcher.registerMethod("GetVoiceController","Voicemail",new AjxCallback(this,this.getVoiceController));\r
108734 AjxDispatcher.registerMethod("GetCallListController","Voicemail",new AjxCallback(this,this.getCallListController))\r
108735 };\r
108736 ZmVoiceApp.prototype._registerItems=function(){\r
108737 ZmItem.registerItem(ZmItem.VOICEMAIL,{\r
108738 app:ZmApp.VOICE,nameKey:"voicemail",pluralNameKey:"voicemails",icon:"Voicemail",soapCmd:"VoiceMsgAction",itemClass:"ZmVoicemail",node:"vm",organizer:ZmOrganizer.VOICE,dropTargets:[ZmOrganizer.VOICE],searchType:"voicemail",resultsList:AjxCallback.simpleClosure(function(e){\r
108739 AjxDispatcher.require("Voicemail");\r
108740 return new ZmVoiceList(ZmItem.VOICEMAIL,e)\r
108741 }\r
108742 ,this)}\r
108743 );\r
108744 ZmItem.registerItem(ZmItem.CALL,{\r
108745 app:ZmApp.VOICE,nameKey:"call",pluralNameKey:"calls",icon:"Voicemail",soapCmd:"VoiceMsgAction",itemClass:"ZmCall",node:"cl",organizer:ZmOrganizer.VOICE,searchType:"calllog",resultsList:AjxCallback.simpleClosure(function(e){\r
108746 AjxDispatcher.require("Voicemail");\r
108747 return new ZmVoiceList(ZmItem.CALL,e)\r
108748 }\r
108749 ,this)}\r
108750 )\r
108751 };\r
108752 ZmVoiceApp.prototype._registerOperations=function(){\r
108753 ZmOperation.registerOp(ZmId.OP_CHECK_VOICEMAIL,{\r
108754 textKey:"checkVoicemail",tooltipKey:"checkVoicemailTooltip"}\r
108755 );\r
108756 ZmOperation.registerOp(ZmId.OP_CHECK_CALLS,{\r
108757 textKey:"checkCalls",tooltipKey:"checkCallsTooltip"}\r
108758 );\r
108759 ZmOperation.registerOp(ZmId.OP_CALL_MANAGER,{\r
108760 textKey:"callManager",tooltipKey:"callManagerTooltip",image:"CallManager",shortcut:ZmKeyMap.CALL_MANAGER}\r
108761 );\r
108762 ZmOperation.registerOp(ZmId.OP_MARK_HEARD,{\r
108763 textKey:"markAsHeard",image:"MarkAsHeard",shortcut:ZmKeyMap.MARK_HEARD}\r
108764 );\r
108765 ZmOperation.registerOp(ZmId.OP_MARK_UNHEARD,{\r
108766 textKey:"markAsUnheard",image:"MarkAsUnheard",shortcut:ZmKeyMap.MARK_UNHEARD}\r
108767 );\r
108768 ZmOperation.registerOp(ZmId.OP_VIEW_BY_DATE,{\r
108769 textKey:"viewByDate"}\r
108770 );\r
108771 ZmOperation.registerOp(ZmId.OP_REPLY_BY_EMAIL,{\r
108772 textKey:"replyByEmail",tooltipKey:"replyByEmailTooltip",image:"Reply"}\r
108773 );\r
108774 ZmOperation.registerOp(ZmId.OP_FORWARD_BY_EMAIL,{\r
108775 textKey:"forwardByEmail",tooltipKey:"forwardByEmailTooltip",image:"Forward"}\r
108776 );\r
108777 ZmOperation.registerOp(ZmId.OP_DOWNLOAD_VOICEMAIL,{\r
108778 textKey:"downloadVoicemail",tooltipKey:"downloadVoicemailTooltip",image:"Save"}\r
108779 )\r
108780 };\r
108781 ZmVoiceApp.prototype._registerOrganizers=function(){\r
108782 ZmOrganizer.registerOrg(ZmOrganizer.VOICE,{\r
108783 app:ZmApp.VOICE,nameKey:"voicemailFolder",defaultFolder:0,firstUserId:256,orgClass:"ZmVoiceFolder",orgPackage:"Voicemail",treeController:"ZmVoiceTreeController",labelKey:"voicemail",itemsKey:"messages",views:["voicemail"],createFunc:"ZmOrganizer.create",compareFunc:"ZmVoiceFolder.sortCompare",displayOrder:100,deferrable:false}\r
108784 )\r
108785 };\r
108786 ZmVoiceApp.prototype._registerApp=function(){\r
108787 ZmApp.registerApp(ZmApp.VOICE,{\r
108788 mainPkg:"Voicemail",nameKey:"voice",icon:"VoicemailApp",qsArg:"voicemail",chooserTooltipKey:"goToVoice",defaultSearch:ZmId.SEARCH_MAIL,overviewTrees:[ZmOrganizer.VOICE],searchTypes:[ZmItem.VOICEMAIL],gotoActionCode:ZmKeyMap.GOTO_VOICE,chooserSort:15,defaultSort:15,upsellUrl:ZmSetting.VOICE_UPSELL_URL}\r
108789 )\r
108790 };\r
108791 ZmVoiceApp.prototype._registerPrefs=function(){};\r
108792 ZmVoiceApp.prototype._registerSettings=function(e){\r
108793 e=e||appCtxt.getSettings();\r
108794 e.registerSetting("VOICE_PAGE_SIZE",{\r
108795 name:"zimbraPrefVoiceItemsPerPage",type:ZmSetting.T_PREF,dataType:ZmSetting.D_INT,defaultValue:25}\r
108796 );\r
108797 e.registerSetting("VOICE_PAGE_SIZE_MAX",{\r
108798 name:"zimbraMaxVoiceItemsPerPage",type:ZmSetting.T_COS,dataType:ZmSetting.D_INT,defaultValue:100}\r
108799 )\r
108800 };\r
108801 ZmVoiceApp.prototype.deleteNotify=function(e){\r
108802 this._handleDeletes(e)\r
108803 };\r
108804 ZmVoiceApp.prototype.createNotify=function(e){\r
108805 this._handleCreates(e)\r
108806 };\r
108807 ZmVoiceApp.prototype.modifyNotify=function(e){\r
108808 this._handleModifies(e)\r
108809 };\r
108810 ZmVoiceApp.prototype.getOverviewId=function(){\r
108811 var e=this.accordionItem?this.accordionItem.data.phone.name:"";\r
108812 return[this._name,e].join(":")\r
108813 };\r
108814 ZmVoiceApp.prototype.getOverviewContainer=function(){\r
108815 if(!this._overviewContainer){\r
108816 var e=[ZmApp.OVERVIEW_ID,this._name].join("_");\r
108817 var t={\r
108818 appName:this._name,containerId:e,posStyle:Dwt.ABSOLUTE_STYLE,parent:appCtxt.getShell(),controller:this._opc};\r
108819 t.id=ZmId.getOverviewContainerId(e);\r
108820 this._overviewContainer=this._opc._overviewContainer[e]=new ZmVoiceOverviewContainer(t)\r
108821 }\r
108822 return this._overviewContainer\r
108823 };\r
108824 ZmVoiceApp.prototype.getVoiceInfo=function(r,e,t){\r
108825 if(!this.phones.length){\r
108826 if(!this._gettingVoiceInfo){\r
108827 var a=AjxSoapDoc.create("GetVoiceInfoRequest","urn:zimbraVoice");\r
108828 var s=new AjxCallback(this,this._handleResponseVoiceInfo);\r
108829 var o=new AjxCallback(this,this._handleErrorResponseVoiceInfo);\r
108830 var n={\r
108831 soapDoc:a,asyncMode:true,noBusyOverlay:t,callback:s,errorCallback:o};\r
108832 appCtxt.getAppController().sendRequest(n);\r
108833 this._gettingVoiceInfo=true\r
108834 }\r
108835 if(r){\r
108836 this._voiceInfoCallbacks=this._voiceInfoCallbacks||[];\r
108837 this._voiceInfoCallbacks.push(r)\r
108838 }\r
108839 if(e){\r
108840 this._voiceInfoErrorCallbacks=this._voiceInfoErrorCallbacks||[];\r
108841 this._voiceInfoErrorCallbacks.push(e)\r
108842 }}else{\r
108843 if(r){\r
108844 r.run()\r
108845 }}};\r
108846 ZmVoiceApp.prototype._handleResponseVoiceInfo=function(e){\r
108847 var t=new AjxCallback(this,this._handleResponseVoiceInfo2,[e]);\r
108848 AjxPackage.require({\r
108849 name:"Voicemail",callback:t}\r
108850 )\r
108851 };\r
108852 ZmVoiceApp.prototype._handleResponseVoiceInfo2=function(t){\r
108853 var s=t._data.GetVoiceInfoResponse;\r
108854 this._storeprincipal=s.storeprincipal[0];\r
108855 this.soapInfo.additional={\r
108856 storeprincipal:this._storeprincipal};\r
108857 var a=s.phone;\r
108858 for(var o=0,n=a.length;\r
108859 o<n;\r
108860 o++){\r
108861 var r=a[o];\r
108862 var e=new ZmPhone();\r
108863 e._loadFromDom(r);\r
108864 this.phones.push(e);\r
108865 this._nameToPhone[e.name]=e;\r
108866 if(r.folder&&r.folder.length){\r
108867 e.folderTree=new ZmVoiceFolderTree();\r
108868 e.folderTree.loadFromJs(r.folder[0],e)\r
108869 }}\r
108870 if(this._voiceInfoCallbacks){\r
108871 for(o=0,n=this._voiceInfoCallbacks.length;\r
108872 o<n;\r
108873 o++){\r
108874 this._voiceInfoCallbacks[o].run(t)\r
108875 }}\r
108876 this._voiceInfoCallbacks=null;\r
108877 this._voiceInfoErrorCallbacks=null;\r
108878 this._gettingVoiceInfo=false\r
108879 };\r
108880 ZmVoiceApp.prototype._handleErrorResponseVoiceInfo=function(e){\r
108881 var a=false;\r
108882 if(this._voiceInfoErrorCallbacks){\r
108883 for(var t=0,o=this._voiceInfoErrorCallbacks.length;\r
108884 t<o;\r
108885 t++){\r
108886 a=this._voiceInfoErrorCallbacks[t].run(e)||a\r
108887 }}\r
108888 this._voiceInfoCallbacks=null;\r
108889 this._voiceInfoErrorCallbacks=null;\r
108890 this._gettingVoiceInfo=false;\r
108891 return a\r
108892 };\r
108893 ZmVoiceApp.prototype.refreshFolders=function(n,e){\r
108894 if(this.phones.length){\r
108895 var t=AjxSoapDoc.create("GetVoiceFolderRequest","urn:zimbraVoice");\r
108896 this.setStorePrincipal(t);\r
108897 var o=new AjxCallback(this,this._handleResponseUpdateFolders,[n]);\r
108898 var a={\r
108899 soapDoc:t,asyncMode:true,callback:o,errorCallback:e};\r
108900 appCtxt.getAppController().sendRequest(a)\r
108901 }else{\r
108902 if(n){\r
108903 n.run()\r
108904 }}};\r
108905 ZmVoiceApp.prototype._handleResponseUpdateFolders=function(r,t){\r
108906 var a=t._data.GetVoiceFolderResponse.phone;\r
108907 for(var o=0,n=a.length;\r
108908 o<n;\r
108909 o++){\r
108910 var s=a[o];\r
108911 var e=this._nameToPhone[s.name];\r
108912 if(e){\r
108913 this._updateFolders(e,s.folder[0].folder)\r
108914 }}\r
108915 if(r){\r
108916 r.run()\r
108917 }};\r
108918 ZmVoiceApp.prototype._updateFolders=function(t,r){\r
108919 var s=t.folderTree;\r
108920 for(var a=0,n=r.length;\r
108921 a<n;\r
108922 a++){\r
108923 var e=r[a];\r
108924 var o=s.getByName(e.name);\r
108925 if(o){\r
108926 o.notifyModify(e)\r
108927 }}};\r
108928 ZmVoiceApp.prototype.search=function(o,r,s){\r
108929 var e=(o.getSearchType()==ZmItem.VOICEMAIL)?ZmId.VIEW_VOICEMAIL:ZmId.VIEW_CALL_LIST;\r
108930 if((e==ZmId.VIEW_VOICEMAIL)&&!o.phone.hasVoiceMail){\r
108931 AjxDispatcher.run("GetVoiceController").show(null,o);\r
108932 if(r){\r
108933 r.run(null)\r
108934 }}else{\r
108935 if(!s){\r
108936 s=appCtxt.get(ZmSetting.SORTING_PREF,e)\r
108937 }\r
108938 var n={\r
108939 soapInfo:this.soapInfo,types:AjxVector.fromArray([o.getSearchType()]),sortBy:s,query:o.getSearchQuery(),limit:this.getLimit()};\r
108940 var t=new ZmSearch(n);\r
108941 var a=new AjxCallback(this,this._handleResponseSearch,[o,r]);\r
108942 t.execute({\r
108943 callback:a}\r
108944 )\r
108945 }};\r
108946 ZmVoiceApp.prototype._handleResponseSearch=function(e,c,t){\r
108947 var o=t._data;\r
108948 var s=o.getResults(e.getSearchType());\r
108949 s.folder=e;\r
108950 var r=(e.getSearchType()==ZmItem.VOICEMAIL)?AjxDispatcher.run("GetVoiceController"):AjxDispatcher.run("GetCallListController");\r
108951 r.show(o,e);\r
108952 if(!this._overviewContainer.initialized){\r
108953 var h=this._getOverviewParams();\r
108954 h.overviewTrees=this._getOverviewTrees();\r
108955 h.phones=this.phones;\r
108956 this._overviewContainer.initialize(h)\r
108957 }\r
108958 var a=o.getAttribute("vfi");\r
108959 if(a){\r
108960 e.notifyModify(a[0])\r
108961 }\r
108962 if(this._paramId){\r
108963 var n=r.getList();\r
108964 var d=n.getById(this._paramId);\r
108965 if(d){\r
108966 var l=r.getCurrentView();\r
108967 l.setSelection(d,true);\r
108968 l.setPlaying(d)\r
108969 }}\r
108970 if(c){\r
108971 c.run(o)\r
108972 }};\r
108973 ZmVoiceApp.prototype.markItemsHeard=function(t,a,n,e){\r
108974 var o=a?"read":"!read";\r
108975 this._performAction(t,o,null,n,e)\r
108976 };\r
108977 ZmVoiceApp.prototype._performAction=function(l,r,o,d,s){\r
108978 if(!l.length){\r
108979 if(d){\r
108980 d.run(l)\r
108981 }\r
108982 return\r
108983 }\r
108984 var e=[];\r
108985 for(var n=0,h=l.length;\r
108986 n<h;\r
108987 n++){\r
108988 e[n]=l[n].id\r
108989 }\r
108990 var c=AjxSoapDoc.create("VoiceMsgActionRequest","urn:zimbraVoice");\r
108991 this.setStorePrincipal(c);\r
108992 var t=c.set("action");\r
108993 t.setAttribute("op",r);\r
108994 t.setAttribute("id",e.join(","));\r
108995 t.setAttribute("phone",l[0].getPhone().name);\r
108996 for(var n in o){\r
108997 t.setAttribute(n,o[n])\r
108998 }\r
108999 var a={\r
109000 soapDoc:c,asyncMode:true,callback:d,errorCallback:s};\r
109001 appCtxt.getAppController().sendRequest(a)\r
109002 };\r
109003 ZmVoiceApp.prototype.launch=function(t,a){\r
109004 this._paramId=(t.qsParams?t.qsParams.id:null);\r
109005 var e=new AjxCallback(this,this._handleLoadLaunch,[a]);\r
109006 AjxDispatcher.require("Voicemail",true,e,null,true)\r
109007 };\r
109008 ZmVoiceApp.prototype._handleLoadLaunch=function(t){\r
109009 var e=new AjxCallback(this,this._handleResponseLoadLaunchGotInfo,t);\r
109010 this.getVoiceInfo(e)\r
109011 };\r
109012 ZmVoiceApp.prototype._handleResponseLoadLaunchGotInfo=function(a,e){\r
109013 var t=this.getStartFolder();\r
109014 if(t){\r
109015 this.search(t,a)\r
109016 }else{\r
109017 if(a){\r
109018 a.run()\r
109019 }}};\r
109020 ZmVoiceApp.prototype.getStartFolder=function(t){\r
109021 var o=0;\r
109022 if(t){\r
109023 for(var a=0;\r
109024 a<this.phones.length;\r
109025 a++){\r
109026 var e=this.phones[a];\r
109027 if(e.name==t){\r
109028 o=a\r
109029 }}}\r
109030 return this.phones[o].folderTree.getByName(ZmVoiceFolder.VOICEMAIL)\r
109031 };\r
109032 ZmVoiceApp.prototype.getVoiceController=function(){\r
109033 if(!this._voiceController){\r
109034 this._voiceController=new ZmVoicemailListController(this._container,this)\r
109035 }\r
109036 return this._voiceController\r
109037 };\r
109038 ZmVoiceApp.prototype.getCallListController=function(){\r
109039 if(!this._callListController){\r
109040 this._callListController=new ZmCallListController(this._container,this)\r
109041 }\r
109042 return this._callListController\r
109043 };\r
109044 ZmVoiceApp.prototype.setStorePrincipal=function(t){\r
109045 var a=t.set("storeprincipal");\r
109046 for(var e in this._storeprincipal){\r
109047 a.setAttribute(e,this._storeprincipal[e])\r
109048 }};\r
109049 ZmVoiceApp.prototype.redoSearch=function(){\r
109050 var t=appCtxt.getAppViewMgr().getAppView(ZmApp.VOICE);\r
109051 if(t){\r
109052 var e;\r
109053 if(t==ZmId.VIEW_VOICEMAIL){\r
109054 e=AjxDispatcher.run("GetVoiceController")\r
109055 }else{\r
109056 if(t==ZmId.VIEW_CALL_LIST){\r
109057 e=AjxDispatcher.run("GetCallListController")\r
109058 }}\r
109059 if(e){\r
109060 this.search(e.getFolder())\r
109061 }}};\r
109062 ZmVoiceApp.prototype._handleDeletes=function(e){};\r
109063 ZmVoiceApp.prototype._handleCreates=function(e){};\r
109064 ZmVoiceApp.prototype._handleModifies=function(e){};\r
109065 ZmVoiceApp.prototype._getOverviewTrees=function(){\r
109066 return[ZmOrganizer.VOICE]\r
109067 }\r
109068 }\r
109069 if(AjxPackage.define("zimbraMail.mixed.ZmMixedApp")){\r
109070 ZmMixedApp=function(e){\r
109071 ZmApp.call(this,ZmApp.MIXED,e)\r
109072 };\r
109073 ZmItem.MIXED="MIXED";\r
109074 ZmApp.MIXED=ZmId.APP_MIXED;\r
109075 ZmApp.CLASS[ZmApp.MIXED]="ZmMixedApp";\r
109076 ZmApp.SETTING[ZmApp.MIXED]=ZmSetting.MIXED_VIEW_ENABLED;\r
109077 ZmApp.LOAD_SORT[ZmApp.MIXED]=50;\r
109078 ZmMixedApp.prototype=new ZmApp;\r
109079 ZmMixedApp.prototype.constructor=ZmMixedApp;\r
109080 ZmMixedApp.prototype.toString=function(){\r
109081 return"ZmMixedApp"\r
109082 };\r
109083 ZmMixedApp.prototype._defineAPI=function(){\r
109084 AjxDispatcher.registerMethod("GetMixedController","Mixed",new AjxCallback(this,this.getMixedController))\r
109085 };\r
109086 ZmMixedApp.prototype._registerItems=function(){\r
109087 ZmItem.registerItem(ZmItem.MIXED,{\r
109088 app:ZmApp.MIXED}\r
109089 )\r
109090 };\r
109091 ZmMixedApp.prototype._registerApp=function(){\r
109092 ZmApp.registerApp(ZmApp.MIXED,{\r
109093 mainPkg:"Mixed",nameKey:"zimbraTitle",icon:"Globe",overviewTrees:[ZmOrganizer.FOLDER,ZmOrganizer.ADDRBOOK,ZmOrganizer.SEARCH,ZmOrganizer.TAG],searchTypes:[ZmItem.MSG,ZmItem.CONV]}\r
109094 )\r
109095 };\r
109096 ZmMixedApp.prototype.launch=function(){};\r
109097 ZmMixedApp.prototype._getOverviewTrees=function(){\r
109098 var a=ZmApp.OVERVIEW_TREES[this._name];\r
109099 var e=[];\r
109100 var n=appCtxt.getAppController().getPreviousApp();\r
109101 for(var t=0;\r
109102 t<a.length;\r
109103 t++){\r
109104 var o=a[t];\r
109105 if((n==ZmApp.CONTACTS&&o==ZmOrganizer.FOLDER)||(n==ZmApp.MAIL&&o==ZmOrganizer.ADDRBOOK)){\r
109106 continue\r
109107 }\r
109108 e.push(o)\r
109109 }\r
109110 return e\r
109111 };\r
109112 ZmMixedApp.prototype.showSearchResults=function(t,a){\r
109113 var e=new AjxCallback(this,this._handleLoadShowSearchResults,[t,a]);\r
109114 AjxDispatcher.require(["MailCore","Mail","Mixed"],false,e,null,true)\r
109115 };\r
109116 ZmMixedApp.prototype._handleLoadShowSearchResults=function(e,t){\r
109117 this.getMixedController().show(e);\r
109118 if(t){\r
109119 t.run()\r
109120 }};\r
109121 ZmMixedApp.prototype.getMixedController=function(){\r
109122 if(!this._mixedController){\r
109123 this._mixedController=new ZmMixedController(this._container,this)\r
109124 }\r
109125 return this._mixedController\r
109126 }\r
109127 }}\r
109128 if(AjxPackage.define("dwt.Widgets")){\r
109129 AjxTemplate.register("dwt.Widgets#DwtAlert",function(t,s,n,e){\r
109130 var o=Boolean(e);\r
109131 n=(typeof n=="string"?{\r
109132 id:n}\r
109133 :n)||{};\r
109134 e=e||[];\r
109135 var a=e.length;\r
109136 e[a++]="<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td width=1%><div id='";\r
109137 e[a++]=n.id;\r
109138 e[a++]="_icon' style='margin-right:5px;'></div></td><td width=99%><table border=0 cellpadding=0 cellspacing=0><tr><td id='";\r
109139 e[a++]=n.id;\r
109140 e[a++]="_title' class='DwtAlertTitle'></td></tr><tr><td id='";\r
109141 e[a++]=n.id;\r
109142 e[a++]="_content' class='DwtAlertContent'></td></tr></table></td><td width=1%><div id='";\r
109143 e[a++]=n.id;\r
109144 e[a++]="_dismiss' style='margin-left:5px;'></div></td></tr></table>";\r
109145 return o?e.length:e.join("")\r
109146 }\r
109147 ,{\r
109148 id:"dwt.Widgets#DwtAlert"}\r
109149 ,false);\r
109150 AjxTemplate.register("dwt.Widgets",AjxTemplate.getTemplate("dwt.Widgets#DwtAlert"),AjxTemplate.getParams("dwt.Widgets#DwtAlert"));\r
109151 AjxTemplate.register("dwt.Widgets#DwtCheckbox",function(t,s,n,e){\r
109152 var o=Boolean(e);\r
109153 n=(typeof n=="string"?{\r
109154 id:n}\r
109155 :n)||{};\r
109156 e=e||[];\r
109157 var a=e.length;\r
109158 e[a++]="<table cellpadding='2' cellspacing='0' border='0'><tr><td><label id='";\r
109159 e[a++]=n.id;\r
109160 e[a++]="_text_left' for='";\r
109161 e[a++]=n.id;\r
109162 e[a++]="_input' class='Text' style='text-align:right'></label></td><td><input id='";\r
109163 e[a++]=n.id;\r
109164 e[a++]="_input' name='";\r
109165 e[a++]=n.name;\r
109166 e[a++]="' value='";\r
109167 e[a++]=n.value;\r
109168 e[a++]="' type='checkbox' ";\r
109169 e[a++]=n.checked;\r
109170 e[a++]="></td><td><label id='";\r
109171 e[a++]=n.id;\r
109172 e[a++]="_text_right' for='";\r
109173 e[a++]=n.id;\r
109174 e[a++]="_input' class='Text' style='text-align:left'></label></td></tr></table>";\r
109175 return o?e.length:e.join("")\r
109176 }\r
109177 ,{\r
109178 id:"dwt.Widgets#DwtCheckbox"}\r
109179 ,false);\r
109180 AjxTemplate.register("dwt.Widgets#DwtRadioButton",function(t,s,n,e){\r
109181 var o=Boolean(e);\r
109182 n=(typeof n=="string"?{\r
109183 id:n}\r
109184 :n)||{};\r
109185 e=e||[];\r
109186 var a=e.length;\r
109187 e[a++]="<table cellpadding='2' cellspacing='0' border='0'><tr><td><label id='";\r
109188 e[a++]=n.id;\r
109189 e[a++]="_text_left' for='";\r
109190 e[a++]=n.id;\r
109191 e[a++]="_input' class='Text' style='text-align:right'></label></td><td><input id='";\r
109192 e[a++]=n.id;\r
109193 e[a++]="_input' name='";\r
109194 e[a++]=n.name;\r
109195 e[a++]="' value='";\r
109196 e[a++]=n.value;\r
109197 e[a++]="' type='radio' ";\r
109198 e[a++]=n.checked;\r
109199 e[a++]="></td><td><label id='";\r
109200 e[a++]=n.id;\r
109201 e[a++]="_text_right' for='";\r
109202 e[a++]=n.id;\r
109203 e[a++]="_input' class='Text' style='text-align:left'></label></td></tr></table>";\r
109204 return o?e.length:e.join("")\r
109205 }\r
109206 ,{\r
109207 id:"dwt.Widgets#DwtRadioButton"}\r
109208 ,false);\r
109209 AjxTemplate.register("dwt.Widgets#DwtBaseDialog",function(t,s,n,e){\r
109210 var o=Boolean(e);\r
109211 n=(typeof n=="string"?{\r
109212 id:n}\r
109213 :n)||{};\r
109214 e=e||[];\r
109215 var a=e.length;\r
109216 e[a++]="<div class='DwtDialog WindowOuterContainer'><table cellspacing=0 cellpadding=0><tr id='";\r
109217 e[a++]=n.dragId;\r
109218 e[a++]="'><td class='minWidth'>";\r
109219 e[a++]=n.icon;\r
109220 e[a++]="</td><td id='";\r
109221 e[a++]=n.id;\r
109222 e[a++]="_title' class='DwtDialogTitle'>";\r
109223 e[a++]=n.title;\r
109224 e[a++]="</td><td class='minWidth'><div class='";\r
109225 e[a++]=n.closeIcon2;\r
109226 e[a++]="'></div></td><td class='minWidth'><div class='";\r
109227 e[a++]=n.closeIcon1;\r
109228 e[a++]="'></div></td></tr><tr><td class='WindowInnerContainer' colspan='4'><div id='";\r
109229 e[a++]=n.id;\r
109230 e[a++]="_content' class='DwtDialogBody'></div>";\r
109231 if(n.controlsTemplateId){\r
109232 e[a++]=AjxTemplate.expand(n.controlsTemplateId,n)\r
109233 }\r
109234 e[a++]="</td></tr></table></div>";\r
109235 return o?e.length:e.join("")\r
109236 }\r
109237 ,{\r
109238 width:"20",height:"32",id:"dwt.Widgets#DwtBaseDialog"}\r
109239 ,false);\r
109240 AjxTemplate.register("dwt.Widgets#DwtDialogControls",function(t,s,n,e){\r
109241 var o=Boolean(e);\r
109242 n=(typeof n=="string"?{\r
109243 id:n}\r
109244 :n)||{};\r
109245 e=e||[];\r
109246 var a=e.length;\r
109247 e[a++]="<div class='horizSep'></div><div id='";\r
109248 e[a++]=n.id;\r
109249 e[a++]="_buttons' class='DwtDialogButtonBar'>";\r
109250 if(AjxEnv.isNav){\r
109251 e[a++]="<input type='button' id='";\r
109252 e[a++]=n.id;\r
109253 e[a++]="_focus' style='height:0px;width:0px;display:none;'>"\r
109254 }\r
109255 e[a++]="</div>";\r
109256 return o?e.length:e.join("")\r
109257 }\r
109258 ,{\r
109259 id:"dwt.Widgets#DwtDialogControls"}\r
109260 ,false);\r
109261 AjxTemplate.register("dwt.Widgets#DwtSemiModalDialog",function(t,s,n,e){\r
109262 var o=Boolean(e);\r
109263 n=(typeof n=="string"?{\r
109264 id:n}\r
109265 :n)||{};\r
109266 e=e||[];\r
109267 var a=e.length;\r
109268 e[a++]="<div class='DwtDialog LightWindowOuterContainer'><table cellspacing=0 cellpadding=0 style='cursor:move;'><tr id='";\r
109269 e[a++]=n.dragId;\r
109270 e[a++]="'><td class='minWidth'>";\r
109271 e[a++]=n.icon;\r
109272 e[a++]="</td><td id='";\r
109273 e[a++]=n.id;\r
109274 e[a++]="_title' class='DwtDialogTitle'>";\r
109275 e[a++]=n.title;\r
109276 e[a++]="</td><td class='minWidth'><div class='";\r
109277 e[a++]=n.closeIcon2;\r
109278 e[a++]="'></div></td><td class='minWidth'><div class='";\r
109279 e[a++]=n.closeIcon1;\r
109280 e[a++]="'></div></td></tr><tr><td class='LightWindowInnerContainer full_size' colspan='4'><div id='";\r
109281 e[a++]=n.id;\r
109282 e[a++]="_content' class='DwtDialogBody'></div><div class='horizSep'></div><div id='";\r
109283 e[a++]=n.id;\r
109284 e[a++]="_buttons' class='DwtDialogButtonBar'>";\r
109285 if(AjxEnv.isNav){\r
109286 e[a++]="<input type='button' id='";\r
109287 e[a++]=n.id;\r
109288 e[a++]="_focus' style='height:0px;width:0px;display:none;'>"\r
109289 }\r
109290 e[a++]="</div></td></tr></table></div>";\r
109291 return o?e.length:e.join("")\r
109292 }\r
109293 ,{\r
109294 width:"20",height:"32",id:"dwt.Widgets#DwtSemiModalDialog"}\r
109295 ,false);\r
109296 AjxTemplate.register("dwt.Widgets#DwtToolTip",function(t,s,n,e){\r
109297 var o=Boolean(e);\r
109298 n=(typeof n=="string"?{\r
109299 id:n}\r
109300 :n)||{};\r
109301 e=e||[];\r
109302 var a=e.length;\r
109303 e[a++]="<div id='";\r
109304 e[a++]=n.id;\r
109305 e[a++]="TopPointer' class='DwtToolTipTopPointer'><center><div class='DwtToolTipPointerRow' style='width:1px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:3px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:5px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:7px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:9px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:11px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:13px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:15px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:17px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:19px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:21px;'>&nbsp;</div></center></div><div id='";\r
109306 e[a++]=n.id;\r
109307 e[a++]="Contents' class='DwtToolTipBody'></div><div id='";\r
109308 e[a++]=n.id;\r
109309 e[a++]="BottomPointer' class='DwtToolTipBottomPointer'><center><div class='DwtToolTipPointerRow' style='width:21px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:19px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:17px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:15px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:13px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:11px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:9px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:7px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:5px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:3px;'>&nbsp;</div><div class='DwtToolTipPointerRow' style='width:1px;'>&nbsp;</div></center></div>";\r
109310 return o?e.length:e.join("")\r
109311 }\r
109312 ,{\r
109313 width:"5",height:"5",id:"dwt.Widgets#DwtToolTip"}\r
109314 ,false);\r
109315 AjxTemplate.register("dwt.Widgets#DwtVerticalSash",function(t,s,n,e){\r
109316 var o=Boolean(e);\r
109317 n=(typeof n=="string"?{\r
109318 id:n}\r
109319 :n)||{};\r
109320 e=e||[];\r
109321 var a=e.length;\r
109322 e[a++]="<div class='DwtVerticalSash'><center><div class='ImgVSash_thumb'></div></center></div>";\r
109323 return o?e.length:e.join("")\r
109324 }\r
109325 ,{\r
109326 width:"0",height:"0",id:"dwt.Widgets#DwtVerticalSash"}\r
109327 ,false);\r
109328 AjxTemplate.register("dwt.Widgets#DwtHorizontalSash",function(t,s,n,e){\r
109329 var o=Boolean(e);\r
109330 n=(typeof n=="string"?{\r
109331 id:n}\r
109332 :n)||{};\r
109333 e=e||[];\r
109334 var a=e.length;\r
109335 e[a++]="<div class='DwtHorizontalSash'><table cellspacing=0 cellpadding=0 height='100%'><tr><td height='100%' valign='middle'><div class='ImgHSash_thumb'></div></td></tr></table></div>";\r
109336 return o?e.length:e.join("")\r
109337 }\r
109338 ,{\r
109339 width:"0",height:"0",id:"dwt.Widgets#DwtHorizontalSash"}\r
109340 ,false);\r
109341 AjxTemplate.register("dwt.Widgets#DwtMissingSoundPlayer",function(t,s,n,e){\r
109342 var o=Boolean(e);\r
109343 n=(typeof n=="string"?{\r
109344 id:n}\r
109345 :n)||{};\r
109346 e=e||[];\r
109347 var a=e.length;\r
109348 e[a++]="<table class='DwtMissingSoundPlayer'><tr><td nowrap class='ImgCritical'>&nbsp;</td><td nowrap>";\r
109349 e[a++]=ZmMsg.missingPlugin;\r
109350 e[a++]="</td></tr></table>";\r
109351 return o?e.length:e.join("")\r
109352 }\r
109353 ,{\r
109354 id:"dwt.Widgets#DwtMissingSoundPlayer"}\r
109355 ,false);\r
109356 AjxTemplate.register("dwt.Widgets#DwtVerticalSlider",function(t,s,n,e){\r
109357 var o=Boolean(e);\r
109358 n=(typeof n=="string"?{\r
109359 id:n}\r
109360 :n)||{};\r
109361 e=e||[];\r
109362 var a=e.length;\r
109363 e[a++]="<div id='";\r
109364 e[a++]=n.id;\r
109365 e[a++]="_button' class='DwtThumb DwtSliderThumb'><div class='DwtSliderThumbBorder'><div class='ImgVerticalSliderThumb'></div></div></div>";\r
109366 return o?e.length:e.join("")\r
109367 }\r
109368 ,{\r
109369 "class":"DwtSlider DwtVerticalSlider",id:"dwt.Widgets#DwtVerticalSlider"}\r
109370 ,false);\r
109371 AjxTemplate.register("dwt.Widgets#DwtHorizontalSlider",function(t,s,n,e){\r
109372 var o=Boolean(e);\r
109373 n=(typeof n=="string"?{\r
109374 id:n}\r
109375 :n)||{};\r
109376 e=e||[];\r
109377 var a=e.length;\r
109378 e[a++]="<div id='";\r
109379 e[a++]=n.id;\r
109380 e[a++]="_button' class='DwtThumb DwtSliderThumb'><div class='DwtSliderThumbBorder'><div class='ImgHorizontalSliderThumb'></div></div></div>";\r
109381 return o?e.length:e.join("")\r
109382 }\r
109383 ,{\r
109384 "class":"DwtSlider DwtHorizontalSlider",id:"dwt.Widgets#DwtHorizontalSlider"}\r
109385 ,false);\r
109386 AjxTemplate.register("dwt.Widgets#ZLabel",function(t,s,n,e){\r
109387 var o=Boolean(e);\r
109388 n=(typeof n=="string"?{\r
109389 id:n}\r
109390 :n)||{};\r
109391 e=e||[];\r
109392 var a=e.length;\r
109393 e[a++]="<table class='ZWidgetTable ZLabelBorder' cellspacing=0 cellpadding=0><tr><td id='";\r
109394 e[a++]=n.id;\r
109395 e[a++]="_left_icon'  \tclass='ZLeftIcon ZWidgetIcon'></td><td id='";\r
109396 e[a++]=n.id;\r
109397 e[a++]="_title'\t\tclass='ZWidgetTitle'></td><td id='";\r
109398 e[a++]=n.id;\r
109399 e[a++]="_right_icon' \tclass='ZRightIcon ZWidgetIcon'></td></tr></table>";\r
109400 return o?e.length:e.join("")\r
109401 }\r
109402 ,{\r
109403 "class":"ZWidget",id:"dwt.Widgets#ZLabel"}\r
109404 ,false);\r
109405 AjxTemplate.register("dwt.Widgets#ZButton",function(a,r,s,t){\r
109406 var n=Boolean(t);\r
109407 s=(typeof s=="string"?{\r
109408 id:s}\r
109409 :s)||{};\r
109410 t=t||[];\r
109411 var o=t.length;\r
109412 var e=s.buttonClass||"Button";\r
109413 t[o++]="<table class='ZWidgetTable Z";\r
109414 t[o++]=e;\r
109415 t[o++]="Table Z";\r
109416 t[o++]=e;\r
109417 t[o++]="Border' cellspacing=0 cellpadding=0 style='table-layout:auto;'><tr><td id='";\r
109418 t[o++]=s.id;\r
109419 t[o++]="_left_icon'  \tclass='ZLeftIcon ZWidgetIcon'></td><td id='";\r
109420 t[o++]=s.id;\r
109421 t[o++]="_title'\t\tclass='ZWidgetTitle'></td><td id='";\r
109422 t[o++]=s.id;\r
109423 t[o++]="_right_icon' \tclass='ZRightIcon ZWidgetIcon'></td><td id='";\r
109424 t[o++]=s.id;\r
109425 t[o++]="_dropdown' \tclass='ZDropDown'></td></tr></table>";\r
109426 return n?t.length:t.join("")\r
109427 }\r
109428 ,{\r
109429 "class":"ZWidget",id:"dwt.Widgets#ZButton"}\r
109430 ,false);\r
109431 AjxTemplate.register("dwt.Widgets#ZToolbarButton",function(t,s,n,e){\r
109432 var o=Boolean(e);\r
109433 n=(typeof n=="string"?{\r
109434 id:n}\r
109435 :n)||{};\r
109436 e=e||[];\r
109437 var a=e.length;\r
109438 n.buttonClass=n.buttonClass||"ToolbarButton";\r
109439 e[a++]=AjxTemplate.expand("#ZButton",n);\r
109440 return o?e.length:e.join("")\r
109441 }\r
109442 ,{\r
109443 "class":"ZWidget",id:"dwt.Widgets#ZToolbarButton"}\r
109444 ,false);\r
109445 AjxTemplate.register("dwt.Widgets#ZBorderlessButton",function(a,r,s,t){\r
109446 var n=Boolean(t);\r
109447 s=(typeof s=="string"?{\r
109448 id:s}\r
109449 :s)||{};\r
109450 \r
109451 t=t||[];\r
109452 var o=t.length;\r
109453 var e=s.buttonClass||"Button";\r
109454 t[o++]="<table class='ZWidgetTable Z";\r
109455 t[o++]=e;\r
109456 t[o++]="Table' cellspacing=0 cellpadding=0 style='table-layout:auto;'><tr><td id='";\r
109457 t[o++]=s.id;\r
109458 t[o++]="_left_icon'  \tclass='ZLeftIcon ZWidgetIcon'></td><td id='";\r
109459 t[o++]=s.id;\r
109460 t[o++]="_title'\t\tclass='ZWidgetTitle'></td><td id='";\r
109461 t[o++]=s.id;\r
109462 t[o++]="_right_icon' \tclass='ZRightIcon ZWidgetIcon'></td><td id='";\r
109463 t[o++]=s.id;\r
109464 t[o++]="_dropdown' \tclass='ZDropDown'></td></tr></table>";\r
109465 return n?t.length:t.join("")\r
109466 }\r
109467 ,{\r
109468 "class":"ZWidget",id:"dwt.Widgets#ZBorderlessButton"}\r
109469 ,false);\r
109470 AjxTemplate.register("dwt.Widgets#ZButtonColorDisplay",function(t,s,n,e){\r
109471 var o=Boolean(e);\r
109472 n=(typeof n=="string"?{\r
109473 id:n}\r
109474 :n)||{};\r
109475 e=e||[];\r
109476 var a=e.length;\r
109477 e[a++]="<div id='";\r
109478 e[a++]=n.id;\r
109479 e[a++]="_color' class='DwtButtonColorPicker-display' unselectable></div>";\r
109480 return o?e.length:e.join("")\r
109481 }\r
109482 ,{\r
109483 id:"dwt.Widgets#ZButtonColorDisplay"}\r
109484 ,false);\r
109485 AjxTemplate.register("dwt.Widgets#DwtComboBox",function(t,s,n,e){\r
109486 var o=Boolean(e);\r
109487 n=(typeof n=="string"?{\r
109488 id:n}\r
109489 :n)||{};\r
109490 e=e||[];\r
109491 var a=e.length;\r
109492 e[a++]="<table border=0 cellpadding=0 cellspacing=0><tr><td width=*><div id='";\r
109493 e[a++]=n.id;\r
109494 e[a++]="_input'></div></td><td><div id='";\r
109495 e[a++]=n.id;\r
109496 e[a++]="_button'></div></td></tr></table>";\r
109497 return o?e.length:e.join("")\r
109498 }\r
109499 ,{\r
109500 "class":"DwtComboBox",id:"dwt.Widgets#DwtComboBox"}\r
109501 ,false);\r
109502 AjxTemplate.register("dwt.Widgets#DwtComboBoxButton",function(a,r,s,t){\r
109503 var n=Boolean(t);\r
109504 s=(typeof s=="string"?{\r
109505 id:s}\r
109506 :s)||{};\r
109507 t=t||[];\r
109508 var o=t.length;\r
109509 var e=s.buttonClass||"Button";\r
109510 t[o++]="<table class='Z";\r
109511 t[o++]=e;\r
109512 t[o++]="Border' cellspacing=0 cellpadding=0><tr><td id='";\r
109513 t[o++]=s.id;\r
109514 t[o++]="_dropdown' class='ZDropDown'></td></tr></table>";\r
109515 return n?t.length:t.join("")\r
109516 }\r
109517 ,{\r
109518 "class":"ZWidget",id:"dwt.Widgets#DwtComboBoxButton"}\r
109519 ,false);\r
109520 AjxTemplate.register("dwt.Widgets#ZTabView",function(t,s,n,e){\r
109521 var o=Boolean(e);\r
109522 n=(typeof n=="string"?{\r
109523 id:n}\r
109524 :n)||{};\r
109525 e=e||[];\r
109526 var a=e.length;\r
109527 e[a++]="<div id='";\r
109528 e[a++]=n.id;\r
109529 e[a++]="_tabbar'></div><div id='";\r
109530 e[a++]=n.id;\r
109531 e[a++]="_page'></div>";\r
109532 return o?e.length:e.join("")\r
109533 }\r
109534 ,{\r
109535 "class":"ZWidget",id:"dwt.Widgets#ZTabView"}\r
109536 ,false);\r
109537 AjxTemplate.register("dwt.Widgets#ZTabBar",function(t,s,n,e){\r
109538 var o=Boolean(e);\r
109539 n=(typeof n=="string"?{\r
109540 id:n}\r
109541 :n)||{};\r
109542 e=e||[];\r
109543 var a=e.length;\r
109544 e[a++]="<table border=0 cellpadding=0 cellspacing=0><tr valign='bottom' id='";\r
109545 e[a++]=n.id;\r
109546 e[a++]="_items'>";\r
109547 e[a++]=AjxTemplate.expand("#ZTabBarPrefix",n);\r
109548 e[a++]=AjxTemplate.expand("#ZTabBarSuffix",n);\r
109549 e[a++]="</tr></table>";\r
109550 return o?e.length:e.join("")\r
109551 }\r
109552 ,{\r
109553 "class":"ZWidget",id:"dwt.Widgets#ZTabBar"}\r
109554 ,false);\r
109555 AjxTemplate.register("dwt.Widgets#ZTabBarFloat",function(t,s,n,e){\r
109556 var o=Boolean(e);\r
109557 n=(typeof n=="string"?{\r
109558 id:n}\r
109559 :n)||{};\r
109560 e=e||[];\r
109561 var a=e.length;\r
109562 e[a++]="<div id='";\r
109563 e[a++]=n.id;\r
109564 e[a++]="_items'>";\r
109565 e[a++]=AjxTemplate.expand("#ZTabBarPrefixFloat",n);\r
109566 e[a++]=AjxTemplate.expand("#ZTabBarSuffixFloat",n);\r
109567 e[a++]="</div>";\r
109568 return o?e.length:e.join("")\r
109569 }\r
109570 ,{\r
109571 "class":"ZWidget",id:"dwt.Widgets#ZTabBarFloat"}\r
109572 ,false);\r
109573 AjxTemplate.register("dwt.Widgets#ZTabBarPrefixFloat",function(t,s,n,e){\r
109574 var o=Boolean(e);\r
109575 n=(typeof n=="string"?{\r
109576 id:n}\r
109577 :n)||{};\r
109578 e=e||[];\r
109579 var a=e.length;\r
109580 e[a++]="<div id='";\r
109581 e[a++]=n.id;\r
109582 e[a++]="_prefix' class='ZTabBarPrefix'>&nbsp;</div>";\r
109583 return o?e.length:e.join("")\r
109584 }\r
109585 ,{\r
109586 id:"dwt.Widgets#ZTabBarPrefixFloat"}\r
109587 ,false);\r
109588 AjxTemplate.register("dwt.Widgets#ZTabBarSuffixFloat",function(t,s,n,e){\r
109589 var o=Boolean(e);\r
109590 n=(typeof n=="string"?{\r
109591 id:n}\r
109592 :n)||{};\r
109593 e=e||[];\r
109594 var a=e.length;\r
109595 e[a++]="<div id='";\r
109596 e[a++]=n.id;\r
109597 e[a++]="_suffix' class='ZTabBarSuffix'>&nbsp;</div>";\r
109598 return o?e.length:e.join("")\r
109599 }\r
109600 ,{\r
109601 id:"dwt.Widgets#ZTabBarSuffixFloat"}\r
109602 ,false);\r
109603 AjxTemplate.register("dwt.Widgets#ZTabBarPrefix",function(t,s,n,e){\r
109604 var o=Boolean(e);\r
109605 n=(typeof n=="string"?{\r
109606 id:n}\r
109607 :n)||{};\r
109608 e=e||[];\r
109609 var a=e.length;\r
109610 e[a++]="<td id='";\r
109611 e[a++]=n.id;\r
109612 e[a++]="_prefix' class='ZTabBarPrefix'>&nbsp;</td>";\r
109613 return o?e.length:e.join("")\r
109614 }\r
109615 ,{\r
109616 id:"dwt.Widgets#ZTabBarPrefix"}\r
109617 ,false);\r
109618 AjxTemplate.register("dwt.Widgets#ZTabBarSuffix",function(t,s,n,e){\r
109619 var o=Boolean(e);\r
109620 n=(typeof n=="string"?{\r
109621 id:n}\r
109622 :n)||{};\r
109623 e=e||[];\r
109624 var a=e.length;\r
109625 e[a++]="<td id='";\r
109626 e[a++]=n.id;\r
109627 e[a++]="_suffix' class='ZTabBarSuffix'>&nbsp;</td>";\r
109628 return o?e.length:e.join("")\r
109629 }\r
109630 ,{\r
109631 id:"dwt.Widgets#ZTabBarSuffix"}\r
109632 ,false);\r
109633 AjxTemplate.register("dwt.Widgets#ZTab",function(a,r,s,t){\r
109634 var n=Boolean(t);\r
109635 s=(typeof s=="string"?{\r
109636 id:s}\r
109637 :s)||{};\r
109638 t=t||[];\r
109639 var o=t.length;\r
109640 var e=s.buttonClass||"Tab";\r
109641 t[o++]="<table id='";\r
109642 t[o++]=s.id;\r
109643 t[o++]="_select' class='Z";\r
109644 t[o++]=e;\r
109645 t[o++]="Table Z";\r
109646 t[o++]=e;\r
109647 t[o++]="Border ZWidgetTable ZWidgetBorder' cellspacing=0 cellpadding=0><tr><td id='";\r
109648 t[o++]=s.id;\r
109649 t[o++]="_left_icon' class='ZLeftIcon ZWidgetIcon'></td><td id='";\r
109650 t[o++]=s.id;\r
109651 t[o++]="_title' class='ZWidgetTitle'></td><td id='";\r
109652 t[o++]=s.id;\r
109653 t[o++]="_right_icon' class='ZRightIcon ZWidgetIcon'></td></tr></table>";\r
109654 return n?t.length:t.join("")\r
109655 }\r
109656 ,{\r
109657 "class":"ZWidget",id:"dwt.Widgets#ZTab"}\r
109658 ,false);\r
109659 AjxTemplate.register("dwt.Widgets#ZTabFloat",function(a,r,s,t){\r
109660 var n=Boolean(t);\r
109661 s=(typeof s=="string"?{\r
109662 id:s}\r
109663 :s)||{};\r
109664 t=t||[];\r
109665 var o=t.length;\r
109666 var e=s.buttonClass||"Tab";\r
109667 t[o++]="<table id='";\r
109668 t[o++]=s.id;\r
109669 t[o++]="_select' class='Z";\r
109670 t[o++]=e;\r
109671 t[o++]="Table Z";\r
109672 t[o++]=e;\r
109673 t[o++]="Border ZWidgetBorder' cellspacing=0 cellpadding=0><tr><td id='";\r
109674 t[o++]=s.id;\r
109675 t[o++]="_left_icon' class='ZLeftIcon ZWidgetIcon'></td><td id='";\r
109676 t[o++]=s.id;\r
109677 t[o++]="_title' class='ZWidgetTitle'></td><td id='";\r
109678 t[o++]=s.id;\r
109679 t[o++]="_right_icon' class='ZRightIcon ZWidgetIcon'></td></tr></table>";\r
109680 return n?t.length:t.join("")\r
109681 }\r
109682 ,{\r
109683 "class":"ZWidget",id:"dwt.Widgets#ZTabFloat"}\r
109684 ,false);\r
109685 AjxTemplate.register("dwt.Widgets#ZTabPage",function(t,s,n,e){\r
109686 var o=Boolean(e);\r
109687 n=(typeof n=="string"?{\r
109688 id:n}\r
109689 :n)||{};\r
109690 e=e||[];\r
109691 var a=e.length;\r
109692 e[a++]="";\r
109693 return o?e.length:e.join("")\r
109694 }\r
109695 ,{\r
109696 "class":"ZWidget",id:"dwt.Widgets#ZTabPage"}\r
109697 ,false);\r
109698 AjxTemplate.register("dwt.Widgets#ZSelectAutoSizingContainer",function(t,s,n,e){\r
109699 var o=Boolean(e);\r
109700 n=(typeof n=="string"?{\r
109701 id:n}\r
109702 :n)||{};\r
109703 e=e||[];\r
109704 var a=e.length;\r
109705 e[a++]='<table border=0 cellpadding=0 cellspacing=0><tr><td id="';\r
109706 e[a++]=n.id;\r
109707 e[a++]='_select_container">';\r
109708 e[a++]=AjxTemplate.expand(n.selectTemplateId,n.selectData);\r
109709 e[a++]='</td></tr><tr><td><table id="';\r
109710 e[a++]=n.id;\r
109711 e[a++]='_pseudoitems_container" border=0 cellpadding=0 cellspacing=0></table></td></tr></table>';\r
109712 return o?e.length:e.join("")\r
109713 }\r
109714 ,{\r
109715 id:"dwt.Widgets#ZSelectAutoSizingContainer"}\r
109716 ,false);\r
109717 AjxTemplate.register("dwt.Widgets#ZSelect",function(t,s,n,e){\r
109718 var o=Boolean(e);\r
109719 n=(typeof n=="string"?{\r
109720 id:n}\r
109721 :n)||{};\r
109722 e=e||[];\r
109723 var a=e.length;\r
109724 e[a++]=AjxTemplate.expand("#ZButton",n);\r
109725 return o?e.length:e.join("")\r
109726 }\r
109727 ,{\r
109728 "class":"ZWidget",id:"dwt.Widgets#ZSelect"}\r
109729 ,false);\r
109730 AjxTemplate.register("dwt.Widgets#ZSelectMenu",function(t,s,n,e){\r
109731 var o=Boolean(e);\r
109732 n=(typeof n=="string"?{\r
109733 id:n}\r
109734 :n)||{};\r
109735 e=e||[];\r
109736 var a=e.length;\r
109737 e[a++]=AjxTemplate.expand("#ZMenu",n);\r
109738 return o?e.length:e.join("")\r
109739 }\r
109740 ,{\r
109741 "class":"ZWidget",id:"dwt.Widgets#ZSelectMenu"}\r
109742 ,false);\r
109743 AjxTemplate.register("dwt.Widgets#ZSelectMenuItem",function(t,s,n,e){\r
109744 var o=Boolean(e);\r
109745 n=(typeof n=="string"?{\r
109746 id:n}\r
109747 :n)||{};\r
109748 e=e||[];\r
109749 var a=e.length;\r
109750 e[a++]=AjxTemplate.expand("#ZMenuItem",n);\r
109751 return o?e.length:e.join("")\r
109752 }\r
109753 ,{\r
109754 "class":"ZWidget",id:"dwt.Widgets#ZSelectMenuItem"}\r
109755 ,false);\r
109756 AjxTemplate.register("dwt.Widgets#ZToolbar",function(t,s,n,e){\r
109757 var o=Boolean(e);\r
109758 n=(typeof n=="string"?{\r
109759 id:n}\r
109760 :n)||{};\r
109761 e=e||[];\r
109762 var a=e.length;\r
109763 e[a++]="<table class='ZToolbarTable' border=0 cellpadding=0 cellspacing=0><tr id='";\r
109764 e[a++]=n.id;\r
109765 e[a++]="_items'>";\r
109766 e[a++]=AjxTemplate.expand("#ZToolbarPrefix",n);\r
109767 e[a++]=AjxTemplate.expand("#ZToolbarSuffix",n);\r
109768 e[a++]="</tr></table>";\r
109769 return o?e.length:e.join("")\r
109770 }\r
109771 ,{\r
109772 "class":"ZWidget",id:"dwt.Widgets#ZToolbar"}\r
109773 ,false);\r
109774 AjxTemplate.register("dwt.Widgets#ZToolbarPrefix",function(t,s,n,e){\r
109775 var o=Boolean(e);\r
109776 n=(typeof n=="string"?{\r
109777 id:n}\r
109778 :n)||{};\r
109779 \r
109780 e=e||[];\r
109781 var a=e.length;\r
109782 e[a++]="";\r
109783 return o?e.length:e.join("")\r
109784 }\r
109785 ,{\r
109786 id:"dwt.Widgets#ZToolbarPrefix"}\r
109787 ,false);\r
109788 AjxTemplate.register("dwt.Widgets#ZToolbarSuffix",function(t,s,n,e){\r
109789 var o=Boolean(e);\r
109790 n=(typeof n=="string"?{\r
109791 id:n}\r
109792 :n)||{};\r
109793 e=e||[];\r
109794 var a=e.length;\r
109795 e[a++]="";\r
109796 return o?e.length:e.join("")\r
109797 }\r
109798 ,{\r
109799 id:"dwt.Widgets#ZToolbarSuffix"}\r
109800 ,false);\r
109801 AjxTemplate.register("dwt.Widgets#ZToolbarItem",function(t,s,n,e){\r
109802 var o=Boolean(e);\r
109803 n=(typeof n=="string"?{\r
109804 id:n}\r
109805 :n)||{};\r
109806 e=e||[];\r
109807 var a=e.length;\r
109808 e[a++]="<table><tr><td id='";\r
109809 e[a++]=n.itemId;\r
109810 e[a++]="'></td></tr></table>";\r
109811 return o?e.length:e.join("")\r
109812 }\r
109813 ,{\r
109814 id:"dwt.Widgets#ZToolbarItem"}\r
109815 ,false);\r
109816 AjxTemplate.register("dwt.Widgets#ZToolbarSeparator",function(t,s,n,e){\r
109817 var o=Boolean(e);\r
109818 n=(typeof n=="string"?{\r
109819 id:n}\r
109820 :n)||{};\r
109821 e=e||[];\r
109822 var a=e.length;\r
109823 e[a++]="<table><tr><td id='";\r
109824 e[a++]=n.itemId;\r
109825 e[a++]="' class='ZToolbarSeparator'>&nbsp;</td></tr></table>";\r
109826 return o?e.length:e.join("")\r
109827 }\r
109828 ,{\r
109829 id:"dwt.Widgets#ZToolbarSeparator"}\r
109830 ,false);\r
109831 AjxTemplate.register("dwt.Widgets#ZToolbarSpacer",function(t,s,n,e){\r
109832 var o=Boolean(e);\r
109833 n=(typeof n=="string"?{\r
109834 id:n}\r
109835 :n)||{};\r
109836 e=e||[];\r
109837 var a=e.length;\r
109838 e[a++]="<table><tr><td id='";\r
109839 e[a++]=n.itemId;\r
109840 e[a++]="' class='ZToolbarSpacer'>&nbsp;</td></tr></table>";\r
109841 return o?e.length:e.join("")\r
109842 }\r
109843 ,{\r
109844 id:"dwt.Widgets#ZToolbarSpacer"}\r
109845 ,false);\r
109846 AjxTemplate.register("dwt.Widgets#ZToolbarFiller",function(t,s,n,e){\r
109847 var o=Boolean(e);\r
109848 n=(typeof n=="string"?{\r
109849 id:n}\r
109850 :n)||{};\r
109851 e=e||[];\r
109852 var a=e.length;\r
109853 e[a++]="<table><tr><td id='";\r
109854 e[a++]=n.itemId;\r
109855 e[a++]="' class='ZToolbarFiller' width='100%'>&nbsp;</td></tr></table>";\r
109856 return o?e.length:e.join("")\r
109857 }\r
109858 ,{\r
109859 id:"dwt.Widgets#ZToolbarFiller"}\r
109860 ,false);\r
109861 AjxTemplate.register("dwt.Widgets#ZField",function(t,s,n,e){\r
109862 var o=Boolean(e);\r
109863 n=(typeof n=="string"?{\r
109864 id:n}\r
109865 :n)||{};\r
109866 e=e||[];\r
109867 var a=e.length;\r
109868 e[a++]="<input id='";\r
109869 e[a++]=n.id;\r
109870 e[a++]="_field' class='ZFieldInput'>";\r
109871 return o?e.length:e.join("")\r
109872 }\r
109873 ,{\r
109874 "class":"ZWidget",id:"dwt.Widgets#ZField"}\r
109875 ,false);\r
109876 AjxTemplate.register("dwt.Widgets#ZTreeItem",function(t,s,n,e){\r
109877 var o=Boolean(e);\r
109878 n=(typeof n=="string"?{\r
109879 id:n}\r
109880 :n)||{};\r
109881 e=e||[];\r
109882 var a=e.length;\r
109883 e[a++]="<div class='";\r
109884 e[a++]=n.divClassName;\r
109885 e[a++]="' id='";\r
109886 e[a++]=n.id;\r
109887 e[a++]="_div'><table id='";\r
109888 e[a++]=n.id;\r
109889 e[a++]="_table' border=0 cellpadding=0 cellspacing=0 width=100%><tr><td align=center nowrap id='";\r
109890 e[a++]=n.id;\r
109891 e[a++]="_nodeCell'></td>";\r
109892 if(n.isCheckedStyle){\r
109893 e[a++]="<td nowrap id='";\r
109894 e[a++]=n.id;\r
109895 e[a++]='_checkboxCell\' class="ZTreeItemCheckboxCell"><div class="ZTreeItemCheckbox" id=\'';\r
109896 e[a++]=n.id;\r
109897 e[a++]="_checkbox'><div class=\"ZTreeItemCheckboxImg\" id='";\r
109898 e[a++]=n.id;\r
109899 e[a++]="_checkboxImg'>";\r
109900 e[a++]=AjxImg.getImageHtml("MenuCheck");\r
109901 e[a++]="</div></div></td>"\r
109902 }\r
109903 e[a++]="<td nowrap class='imageCell' id='";\r
109904 e[a++]=n.id;\r
109905 e[a++]="_imageCell'></td><td width=100% nowrap class='";\r
109906 e[a++]=n.textClassName;\r
109907 e[a++]="' id='";\r
109908 e[a++]=n.id;\r
109909 e[a++]="_textCell'></td><td width=16 class='imageCell' id='";\r
109910 e[a++]=n.id;\r
109911 e[a++]="_extraCell'></td></tr></table></div>";\r
109912 return o?e.length:e.join("")\r
109913 }\r
109914 ,{\r
109915 id:"dwt.Widgets#ZTreeItem"}\r
109916 ,false);\r
109917 AjxTemplate.register("dwt.Widgets#ZHeaderTreeItem",function(t,s,n,e){\r
109918 var o=Boolean(e);\r
109919 n=(typeof n=="string"?{\r
109920 id:n}\r
109921 :n)||{};\r
109922 e=e||[];\r
109923 var a=e.length;\r
109924 e[a++]="<div class='";\r
109925 e[a++]=n.divClassName;\r
109926 e[a++]="' id='";\r
109927 e[a++]=n.id;\r
109928 e[a++]="_div'><table id='";\r
109929 e[a++]=n.id;\r
109930 e[a++]="_table' border=0 cellpadding=0 cellspacing=0><tr>";\r
109931 if(!n.noNodeCell){\r
109932 e[a++]="<td align=center nowrap id='";\r
109933 e[a++]=n.id;\r
109934 e[a++]="_nodeCell'></td>"\r
109935 }\r
109936 e[a++]="<td nowrap class='imageCell' id='";\r
109937 e[a++]=n.id;\r
109938 e[a++]="_imageCell'></td><td nowrap class='";\r
109939 e[a++]=n.textClassName;\r
109940 e[a++]="' id='";\r
109941 e[a++]=n.id;\r
109942 e[a++]="_textCell' width=\"100%\"></td><td class='";\r
109943 e[a++]=n.textClassName;\r
109944 e[a++]=" FakeAnchor' style=\"padding-right:4px\"><div id='";\r
109945 e[a++]=n.id;\r
109946 e[a++]="_headerButton'/></td></tr></table></div>";\r
109947 return o?e.length:e.join("")\r
109948 }\r
109949 ,{\r
109950 id:"dwt.Widgets#ZHeaderTreeItem"}\r
109951 ,false);\r
109952 AjxTemplate.register("dwt.Widgets#ZAccordion",function(t,s,n,e){\r
109953 var o=Boolean(e);\r
109954 n=(typeof n=="string"?{\r
109955 id:n}\r
109956 :n)||{};\r
109957 e=e||[];\r
109958 var a=e.length;\r
109959 e[a++]="<div id='";\r
109960 e[a++]=n.id;\r
109961 e[a++]="_div'><table class='ZAccordionTable ZWidget' border=0 cellspacing=0 cellpadding=0 id='";\r
109962 e[a++]=n.id;\r
109963 e[a++]="_accordion_table'></table></div>";\r
109964 return o?e.length:e.join("")\r
109965 }\r
109966 ,{\r
109967 id:"dwt.Widgets#ZAccordion"}\r
109968 ,false);\r
109969 AjxTemplate.register("dwt.Widgets#ZAccordionItem",function(t,s,n,e){\r
109970 var o=Boolean(e);\r
109971 n=(typeof n=="string"?{\r
109972 id:n}\r
109973 :n)||{};\r
109974 e=e||[];\r
109975 var a=e.length;\r
109976 e[a++]="<div id='";\r
109977 e[a++]=n.id;\r
109978 e[a++]="_header_";\r
109979 e[a++]=n.itemNum;\r
109980 e[a++]="' class='ZAccordionHeader'><table class='ZAccordionHeaderBorder ZWidgetTable' cellspacing=0 cellpadding=0><tr><td><div class='";\r
109981 e[a++]=n.icon;\r
109982 e[a++]="' id='";\r
109983 e[a++]=n.id;\r
109984 e[a++]="_icon_";\r
109985 e[a++]=n.itemNum;\r
109986 e[a++]="'></div></td><td><div class='ZAccordionTitle' id='";\r
109987 e[a++]=n.id;\r
109988 e[a++]="_title_";\r
109989 e[a++]=n.itemNum;\r
109990 e[a++]="'>";\r
109991 e[a++]=n.title;\r
109992 e[a++]="</div></td><td><div class='ImgAccordionClosed' id='";\r
109993 e[a++]=n.id;\r
109994 e[a++]="_status_";\r
109995 e[a++]=n.itemNum;\r
109996 e[a++]="'></div></td></tr></table></div><div class='ZAccordionBody' id='";\r
109997 e[a++]=n.id;\r
109998 e[a++]="_body_";\r
109999 e[a++]=n.itemNum;\r
110000 e[a++]="'></div>";\r
110001 return o?e.length:e.join("")\r
110002 }\r
110003 ,{\r
110004 id:"dwt.Widgets#ZAccordionItem"}\r
110005 ,false);\r
110006 AjxTemplate.register("dwt.Widgets#DwtTabView",function(t,s,n,e){\r
110007 var o=Boolean(e);\r
110008 n=(typeof n=="string"?{\r
110009 id:n}\r
110010 :n)||{};\r
110011 e=e||[];\r
110012 var a=e.length;\r
110013 e[a++]="<table width='100%' border='0' cellspacing='0' cellpadding='0' backgroundColor='";\r
110014 e[a++]=n.bgcolor;\r
110015 e[a++]="'><tr align='left' valign='middle'><td id='";\r
110016 e[a++]=n.id;\r
110017 e[a++]="_tabs' class='DwtTabTable' nowrap align='left' valign='middle' width='100%'></td></tr></table>";\r
110018 return o?e.length:e.join("")\r
110019 }\r
110020 ,{\r
110021 id:"dwt.Widgets#DwtTabView"}\r
110022 ,false);\r
110023 AjxTemplate.register("dwt.Widgets#DwtTabBar",function(t,s,n,e){\r
110024 var o=Boolean(e);\r
110025 n=(typeof n=="string"?{\r
110026 id:n}\r
110027 :n)||{};\r
110028 e=e||[];\r
110029 var a=e.length;\r
110030 e[a++]="<!-- TODO -->";\r
110031 return o?e.length:e.join("")\r
110032 }\r
110033 ,{\r
110034 id:"dwt.Widgets#DwtTabBar"}\r
110035 ,false);\r
110036 AjxTemplate.register("dwt.Widgets#DwtTabSpacer",function(t,s,n,e){\r
110037 var o=Boolean(e);\r
110038 n=(typeof n=="string"?{\r
110039 id:n}\r
110040 :n)||{};\r
110041 e=e||[];\r
110042 var a=e.length;\r
110043 e[a++]="<table width='100%' cellspacing='0' cellpadding='0'><tr></tr><tr></tr><tr><td><div class='ImgTabSpacer'></div></td></tr></table>";\r
110044 return o?e.length:e.join("")\r
110045 }\r
110046 ,{\r
110047 id:"dwt.Widgets#DwtTabSpacer"}\r
110048 ,false);\r
110049 AjxTemplate.register("dwt.Widgets#ZMenu",function(t,s,n,e){\r
110050 var o=Boolean(e);\r
110051 n=(typeof n=="string"?{\r
110052 id:n}\r
110053 :n)||{};\r
110054 e=e||[];\r
110055 var a=e.length;\r
110056 e[a++]="<div id='";\r
110057 e[a++]=n.id;\r
110058 e[a++]="_container' class='ZMenuBorder'></div>";\r
110059 return o?e.length:e.join("")\r
110060 }\r
110061 ,{\r
110062 "class":"ZWidget",id:"dwt.Widgets#ZMenu"}\r
110063 ,false);\r
110064 AjxTemplate.register("dwt.Widgets#ZMenuItem",function(t,s,n,e){\r
110065 var o=Boolean(e);\r
110066 n=(typeof n=="string"?{\r
110067 id:n}\r
110068 :n)||{};\r
110069 e=e||[];\r
110070 var a=e.length;\r
110071 e[a++]="<table class='ZWidgetTable ZMenuItemTable ZMenuItemBorder' cellspacing=0 cellpadding=0><tr><td id='";\r
110072 e[a++]=n.id;\r
110073 e[a++]="_check' class='ZCheckIcon'><div></div></td><td id='";\r
110074 e[a++]=n.id;\r
110075 e[a++]="_left_icon' class='ZLeftIcon ZWidgetIcon'><div></div></td><td id='";\r
110076 e[a++]=n.id;\r
110077 e[a++]="_title' class='ZWidgetTitle'></td><td id='";\r
110078 e[a++]=n.id;\r
110079 e[a++]="_dropdown' class='ZDropDown'><div></div></td></tr></table>";\r
110080 return o?e.length:e.join("")\r
110081 }\r
110082 ,{\r
110083 "class":"ZWidget",id:"dwt.Widgets#ZMenuItem"}\r
110084 ,false);\r
110085 AjxTemplate.register("dwt.Widgets#ZMenuItemSeparator",function(t,s,n,e){\r
110086 var o=Boolean(e);\r
110087 n=(typeof n=="string"?{\r
110088 id:n}\r
110089 :n)||{};\r
110090 e=e||[];\r
110091 var a=e.length;\r
110092 e[a++]="<table class='ZWidgetTable ZMenuItemTable ZMenuItemBorder ZMenuItemSeparatorBorder' cellspacing=0 cellpadding=0><tr><td id='";\r
110093 e[a++]=n.id;\r
110094 e[a++]="_title' class='ZWidgetTitle'><div class='ZMenuItem-Separator'></div></td></tr></table>";\r
110095 return o?e.length:e.join("")\r
110096 }\r
110097 ,{\r
110098 "class":"ZWidget",id:"dwt.Widgets#ZMenuItemSeparator"}\r
110099 ,false);\r
110100 AjxTemplate.register("dwt.Widgets#ZMenuItemBlankCheck",function(t,s,n,e){\r
110101 var o=Boolean(e);\r
110102 n=(typeof n=="string"?{\r
110103 id:n}\r
110104 :n)||{};\r
110105 e=e||[];\r
110106 var a=e.length;\r
110107 e[a++]="<div class='ZMenuItem-BlankCheck'></div>";\r
110108 return o?e.length:e.join("")\r
110109 }\r
110110 ,{\r
110111 id:"dwt.Widgets#ZMenuItemBlankCheck"}\r
110112 ,false);\r
110113 AjxTemplate.register("dwt.Widgets#ZMenuItemBlankIcon",function(t,s,n,e){\r
110114 var o=Boolean(e);\r
110115 n=(typeof n=="string"?{\r
110116 id:n}\r
110117 :n)||{};\r
110118 e=e||[];\r
110119 var a=e.length;\r
110120 e[a++]="<div class='ZMenuItem-BlankIcon'></div>";\r
110121 return o?e.length:e.join("")\r
110122 }\r
110123 ,{\r
110124 id:"dwt.Widgets#ZMenuItemBlankIcon"}\r
110125 ,false);\r
110126 AjxTemplate.register("dwt.Widgets#ZMenuItemBlankCascade",function(t,s,n,e){\r
110127 var o=Boolean(e);\r
110128 n=(typeof n=="string"?{\r
110129 id:n}\r
110130 :n)||{};\r
110131 e=e||[];\r
110132 var a=e.length;\r
110133 e[a++]="<div class='ZMenuItem-BlankCascade'></div>";\r
110134 return o?e.length:e.join("")\r
110135 }\r
110136 ,{\r
110137 id:"dwt.Widgets#ZMenuItemBlankCascade"}\r
110138 ,false);\r
110139 AjxTemplate.register("dwt.Widgets#DwtListView-NoResults",function(t,s,n,e){\r
110140 var o=Boolean(e);\r
110141 n=(typeof n=="string"?{\r
110142 id:n}\r
110143 :n)||{};\r
110144 e=e||[];\r
110145 var a=e.length;\r
110146 e[a++]="<table width='100%' cellspacing=0 cellpadding=1><tr><td class='NoResults' valign='top'><br><br>";\r
110147 e[a++]=n.message;\r
110148 e[a++]="\n";\r
110149 e[a++]="\t\t\t</td></tr></table>";\r
110150 return o?e.length:e.join("")\r
110151 }\r
110152 ,{\r
110153 id:"dwt.Widgets#DwtListView-NoResults"}\r
110154 ,false);\r
110155 AjxTemplate.register("dwt.Widgets#DwtPasswordField",function(t,s,n,e){\r
110156 var o=Boolean(e);\r
110157 n=(typeof n=="string"?{\r
110158 id:n}\r
110159 :n)||{};\r
110160 e=e||[];\r
110161 var a=e.length;\r
110162 e[a++]="<table cellpadding='0' cellspacing='0' border='0'><tr><td><div id='";\r
110163 e[a++]=n.id;\r
110164 e[a++]="_input'></div></td><td><div id='";\r
110165 e[a++]=n.id;\r
110166 e[a++]="_show_password'></div></td></tr></table>";\r
110167 return o?e.length:e.join("")\r
110168 }\r
110169 ,{\r
110170 id:"dwt.Widgets#DwtPasswordField"}\r
110171 ,false);\r
110172 AjxTemplate.register("dwt.Widgets#DwtFormRows",function(t,s,n,e){\r
110173 var o=Boolean(e);\r
110174 n=(typeof n=="string"?{\r
110175 id:n}\r
110176 :n)||{};\r
110177 e=e||[];\r
110178 var a=e.length;\r
110179 e[a++]='<table border=0 cellspacing=3 cellpadding=0><tbody id="';\r
110180 e[a++]=n.id;\r
110181 e[a++]='_rows" tabindex="100"></tbody></table>';\r
110182 return o?e.length:e.join("")\r
110183 }\r
110184 ,{\r
110185 id:"dwt.Widgets#DwtFormRows"}\r
110186 ,false);\r
110187 AjxTemplate.register("dwt.Widgets#DwtFormRow",function(t,s,n,e){\r
110188 var o=Boolean(e);\r
110189 n=(typeof n=="string"?{\r
110190 id:n}\r
110191 :n)||{};\r
110192 e=e||[];\r
110193 var a=e.length;\r
110194 e[a++]='<table><tr id="';\r
110195 e[a++]=n.id;\r
110196 e[a++]='_row" class="DwtFormRow"><td><div id="';\r
110197 e[a++]=n.id;\r
110198 e[a++]='" tabindex="100"></div></td><td><div id="';\r
110199 e[a++]=n.id;\r
110200 e[a++]='_add" class="DwtFormRowAdd" tabindex="200"></div></td><td><div id="';\r
110201 e[a++]=n.id;\r
110202 e[a++]='_remove" class="DwtFormRowRemove" tabindex="300"></div></td></tr></table>';\r
110203 return o?e.length:e.join("")\r
110204 }\r
110205 ,{\r
110206 id:"dwt.Widgets#DwtFormRow"}\r
110207 ,false)\r
110208 }\r
110209 if(AjxPackage.define("share.App")){\r
110210 AjxTemplate.register("share.App#Loading",function(t,s,n,e){\r
110211 var o=Boolean(e);\r
110212 n=(typeof n=="string"?{\r
110213 id:n}\r
110214 :n)||{};\r
110215 e=e||[];\r
110216 var a=e.length;\r
110217 e[a++]="<table border=0 cellpadding=0 cellspacing=0 style='width:100%;height=100%'><tr><td align='center' valign='middle'><br><br><br>";\r
110218 e[a++]=ZmMsg.loading;\r
110219 e[a++]="<br><br><div class='Imgwait_64'></div><br><br><br></td></tr><tr><td style='height:100%'>&nbsp;</td></tr></table>";\r
110220 return o?e.length:e.join("")\r
110221 }\r
110222 ,{\r
110223 id:"share.App#Loading"}\r
110224 ,false);\r
110225 AjxTemplate.register("share.App",AjxTemplate.getTemplate("share.App#Loading"),AjxTemplate.getParams("share.App#Loading"));\r
110226 AjxTemplate.register("share.App#Banner",function(t,s,n,e){\r
110227 var o=Boolean(e);\r
110228 n=(typeof n=="string"?{\r
110229 id:n}\r
110230 :n)||{};\r
110231 e=e||[];\r
110232 var a=e.length;\r
110233 e[a++]="<table border=0 cellpadding=0 cellspacing=0 style='width:100%;height:100%'><tr><td align='center' valign='middle'><a";\r
110234 if(n.url&&n.url!=""){\r
110235 e[a++]=" href='";\r
110236 e[a++]=n.url;\r
110237 e[a++]="' target='_blank'"\r
110238 }\r
110239 e[a++]="><div class='ImgAppBanner'></div></a></td></tr></table>";\r
110240 return o?e.length:e.join("")\r
110241 }\r
110242 ,{\r
110243 id:"share.App#Banner"}\r
110244 ,false);\r
110245 AjxTemplate.register("share.App#UserInfo",function(t,s,n,e){\r
110246 var o=Boolean(e);\r
110247 n=(typeof n=="string"?{\r
110248 id:n}\r
110249 :n)||{};\r
110250 e=e||[];\r
110251 var a=e.length;\r
110252 e[a++]="<table class='skin_table' cellpadding=0 cellspacing=0 border=0>";\r
110253 if(n.showOfflineLink){\r
110254 e[a++]='<tr><td id=\'skin_td_switch_offline\' colspan=3><a href="http://www.zimbra.com/products/desktop.html" target="_blank">';\r
110255 e[a++]=ZmMsg.switchToOfflineClientEx;\r
110256 e[a++]="</a></td></tr>"\r
110257 }\r
110258 e[a++]="<tr>";\r
110259 if(n.adminUrl){\r
110260 e[a++]='<td id="skin_container_adminlink"><table border=0 cellpadding=0 cellspacing=0><tr><td><a target="_blank" href="';\r
110261 e[a++]=n.adminUrl;\r
110262 e[a++]='">';\r
110263 e[a++]=AjxImg.getImageHtml("Status",null,"border=0");\r
110264 e[a++]='</a></td><td style=\'white-space:nowrap; font-weight:bold\'><a target="_blank" href="';\r
110265 e[a++]=n.adminUrl;\r
110266 e[a++]='">';\r
110267 e[a++]=ZmMsg.adminLinkLabel;\r
110268 e[a++]="</a></td></tr></table></td>"\r
110269 }\r
110270 e[a++]="<td id='skin_container_help'><table border=0 cellpadding=0 cellspacing=0><tr>";\r
110271 if(n.helpIcon){\r
110272 e[a++]="<td style='padding-right:3px;'><a href='javascript:;' onclick='ZmZimbraMail.helpLinkCallback();'>";\r
110273 e[a++]=AjxImg.getImageHtml(n.helpIcon,null,"border=0");\r
110274 e[a++]="</a></td>"\r
110275 }\r
110276 e[a++]="<td style='white-space:nowrap; font-weight:bold'><a href='javascript:;' onclick='ZmZimbraMail.helpLinkCallback();'>";\r
110277 e[a++]=ZmMsg.help;\r
110278 e[a++]="</a></td></tr></table></td><td id='skin_container_logoff'><table border=0 cellpadding=0 cellspacing=0><tr>";\r
110279 if(n.logoutIcon){\r
110280 e[a++]="<td style='padding-right:3px;'><a href='javascript:;' onclick='ZmZimbraMail._onClickLogOff();'>";\r
110281 e[a++]=AjxImg.getImageHtml(n.logoutIcon,null,"border=0");\r
110282 e[a++]="</a></td>"\r
110283 }\r
110284 e[a++]="<td style='white-space:nowrap; font-weight:bold'><a href='javascript:;' onclick='ZmZimbraMail._onClickLogOff();'>";\r
110285 e[a++]=n.logoutText;\r
110286 e[a++]="</a></td></tr></table></td></tr></table>";\r
110287 return o?e.length:e.join("")\r
110288 }\r
110289 ,{\r
110290 id:"share.App#UserInfo"}\r
110291 ,false);\r
110292 AjxTemplate.register("share.App#PrintView",function(t,s,n,e){\r
110293 var o=Boolean(e);\r
110294 n=(typeof n=="string"?{\r
110295 id:n}\r
110296 :n)||{};\r
110297 e=e||[];\r
110298 var a=e.length;\r
110299 e[a++]="<html><head><title>";\r
110300 e[a++]=ZmMsg.zimbraLabel;\r
110301 e[a++]=" ";\r
110302 e[a++]=n.username;\r
110303 e[a++]="</title><link rel='stylesheet' href='";\r
110304 e[a++]=n.appContextPath;\r
110305 e[a++]="/css/msgview,zm,wiki.css?v=";\r
110306 e[a++]=n.cacheKillerVersion;\r
110307 e[a++]="' media='screen'></link>";\r
110308 if(n.onloadStr){\r
110309 e[a++]="<script language='javascript'>\n";\r
110310 e[a++]="\t\t\t\t\tfunction handleOnload() {\n";\r
110311 e[a++]="\t\t\t\t\t\t";\r
110312 e[a++]=n.onloadStr;\r
110313 e[a++]=";\n";\r
110314 e[a++]="\t\t\t\t\t}\n";\r
110315 e[a++]="\t\t\t\t<\/script></head><body onload='handleOnload();'>"\r
110316 }else{\r
110317 e[a++]="</head><body>"\r
110318 }\r
110319 e[a++]="<table border=0 width=100%><tr><td class='ZmPrintView-company'>";\r
110320 e[a++]=ZmMsg.zimbraTitle;\r
110321 e[a++]=" ";\r
110322 e[a++]=ZmMsg.splashScreenAppName;\r
110323 e[a++]="</td><td class='ZmPrintView-username' align=right>";\r
110324 e[a++]=n.username;\r
110325 e[a++]="</td></tr></table><hr><div style='padding:10px'>";\r
110326 e[a++]=n.content;\r
110327 e[a++]="</div></body></html>";\r
110328 return o?e.length:e.join("")\r
110329 }\r
110330 ,{\r
110331 id:"share.App#PrintView"}\r
110332 ,false);\r
110333 AjxTemplate.register("share.App#FolderTooltip",function(t,s,n,e){\r
110334 var o=Boolean(e);\r
110335 n=(typeof n=="string"?{\r
110336 id:n}\r
110337 :n)||{};\r
110338 e=e||[];\r
110339 var a=e.length;\r
110340 e[a++]="<table cellpadding=0 cellspacing=0 border=0><tr><td valign='top' style='padding-right:20px'>";\r
110341 e[a++]=AjxMessageFormat.format(ZmMsg.makeLabel,n.itemText);\r
110342 e[a++]="</td><td valign='top'>";\r
110343 e[a++]=n.numTotal;\r
110344 e[a++]="</td></tr>";\r
110345 if(n.sizeTotal){\r
110346 e[a++]="<tr><td valign='top'>";\r
110347 e[a++]=ZmMsg.sizeLabel;\r
110348 e[a++]="</td><td valign='top'>";\r
110349 e[a++]=AjxUtil.formatSize(n.sizeTotal);\r
110350 e[a++]="</td></tr>"\r
110351 }\r
110352 e[a++]="</table>";\r
110353 return o?e.length:e.join("")\r
110354 }\r
110355 ,{\r
110356 id:"share.App#FolderTooltip"}\r
110357 ,false);\r
110358 AjxTemplate.register("share.App#ZimbraAccountTooltip",function(t,s,n,e){\r
110359 var o=Boolean(e);\r
110360 n=(typeof n=="string"?{\r
110361 id:n}\r
110362 :n)||{};\r
110363 e=e||[];\r
110364 var a=e.length;\r
110365 e[a++]="<table border=0>";\r
110366 if(n.lastSync&&n.lastSync!=""){\r
110367 e[a++]="<tr><td class='nobreak' align=right>";\r
110368 e[a++]=ZmMsg.lastSync;\r
110369 e[a++]=":</td><td class='nobreak'>";\r
110370 e[a++]=n.lastSync;\r
110371 e[a++]="</td></tr>"\r
110372 }else{\r
110373 if(!n.isInitialSync){\r
110374 e[a++]="<tr><td class='nobreak' colspan=2>";\r
110375 e[a++]=ZmMsg.neverSynced;\r
110376 e[a++]="</td></tr>"\r
110377 }}\r
110378 if(n.status&&n.status!=""){\r
110379 e[a++]="<tr><td align=right valign=top>";\r
110380 e[a++]=ZmMsg.status;\r
110381 e[a++]=":</td><td>";\r
110382 e[a++]=n.status;\r
110383 e[a++]="</td></tr>"\r
110384 }\r
110385 e[a++]="</table>";\r
110386 return o?e.length:e.join("")\r
110387 }\r
110388 ,{\r
110389 id:"share.App#ZimbraAccountTooltip"}\r
110390 ,false);\r
110391 AjxTemplate.register("share.App#presenceButton",function(a,r,s,t){\r
110392 var n=Boolean(t);\r
110393 s=(typeof s=="string"?{\r
110394 id:s}\r
110395 :s)||{};\r
110396 t=t||[];\r
110397 var o=t.length;\r
110398 var e=s.buttonClass||"ToolbarButton";\r
110399 t[o++]="<table class='ZWidgetTable Z";\r
110400 t[o++]=e;\r
110401 t[o++]="Table Z";\r
110402 t[o++]=e;\r
110403 t[o++]="Border' cellspacing=0 cellpadding=0 style='table-layout:auto;'><tr><td id='";\r
110404 t[o++]=s.id;\r
110405 t[o++]="_left_icon'  \tclass='ZLeftIcon ZWidgetIcon'></td><td id='";\r
110406 t[o++]=s.id;\r
110407 t[o++]="_title'\t\tclass='ZWidgetTitle'></td></tr></table>";\r
110408 return n?t.length:t.join("")\r
110409 }\r
110410 ,{\r
110411 "class":"ZWidget",id:"share.App#presenceButton"}\r
110412 ,false);\r
110413 AjxTemplate.register("share.App#ZmTaskbarItem",function(t,s,n,e){\r
110414 var o=Boolean(e);\r
110415 n=(typeof n=="string"?{\r
110416 id:n}\r
110417 :n)||{};\r
110418 e=e||[];\r
110419 var a=e.length;\r
110420 e[a++]="<div id='";\r
110421 e[a++]=n.id;\r
110422 e[a++]="_button' class='ZmTaskbarButtonParent'></div><div id='";\r
110423 e[a++]=n.id;\r
110424 e[a++]="_content' class='ZmTaskbarContentParent' style='display:none;'></div>";\r
110425 return o?e.length:e.join("")\r
110426 }\r
110427 ,{\r
110428 "class":"ZWidget",id:"share.App#ZmTaskbarItem"}\r
110429 ,false);\r
110430 AjxTemplate.register("share.App#ZmStatusImageButton",function(a,r,s,t){\r
110431 var n=Boolean(t);\r
110432 s=(typeof s=="string"?{\r
110433 id:s}\r
110434 :s)||{};\r
110435 t=t||[];\r
110436 var o=t.length;\r
110437 var e=s.buttonClass||"ToolbarButton";\r
110438 t[o++]="<table class='ZWidgetTable Z";\r
110439 t[o++]=e;\r
110440 t[o++]="Table Z";\r
110441 t[o++]=e;\r
110442 t[o++]="Border' cellspacing=0 cellpadding=0 style='table-layout:auto;'><tr><td id='";\r
110443 t[o++]=s.id;\r
110444 t[o++]="_left_icon'  \tclass='ZLeftIcon ZWidgetIcon'></td><td id='";\r
110445 t[o++]=s.id;\r
110446 t[o++]="_status_icon'\tclass='ZLeftIcon ZWidgetIcon'><div></div></td></tr></table>";\r
110447 return n?t.length:t.join("")\r
110448 }\r
110449 ,{\r
110450 "class":"ZWidget",id:"share.App#ZmStatusImageButton"}\r
110451 ,false)\r
110452 }\r
110453 if(AjxPackage.define("share.Dialogs")){\r
110454 AjxTemplate.register("share.Dialogs#TableProperties",function(t,s,n,e){\r
110455 var o=Boolean(e);\r
110456 n=(typeof n=="string"?{\r
110457 id:n}\r
110458 :n)||{};\r
110459 e=e||[];\r
110460 var a=e.length;\r
110461 e[a++]='<table class="ZmHEDialog"><tr><td><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110462 e[a++]=ZmMsg.description;\r
110463 e[a++]='</legend><table width="100%"><tr><td class="Label" style="width: auto">';\r
110464 e[a++]=ZmMsg.caption;\r
110465 e[a++]='</td><td width="100%" id="';\r
110466 e[a++]=n.id;\r
110467 e[a++]='_Caption"></td></tr><tr><td class="Label" style="width: auto">';\r
110468 e[a++]=ZmMsg.summary;\r
110469 e[a++]='</td><td width="100%" id="';\r
110470 e[a++]=n.id;\r
110471 e[a++]='_Summary"></td></tr></table></fieldset><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110472 e[a++]=ZmMsg.layout;\r
110473 e[a++]='</legend><table cellspacing="0"><tr><td class="Label">';\r
110474 e[a++]=ZmMsg.tableWidth;\r
110475 e[a++]='</td><td colspan="4"><table cellpadding="0" cellspacing="0"><tr><td style="padding-right: 2px"><input id="';\r
110476 e[a++]=n.id;\r
110477 e[a++]='_WidthAuto" checked="checked" name="';\r
110478 e[a++]=n.id;\r
110479 e[a++]='_WidthAuto" type="radio" /></td><td style="padding-right: 2em" colspan="2"><label for="';\r
110480 e[a++]=n.id;\r
110481 e[a++]='_WidthAuto">';\r
110482 e[a++]=ZmMsg.auto;\r
110483 e[a++]='</label></td></tr><tr><td style="padding-right: 2px"><input id="';\r
110484 e[a++]=n.id;\r
110485 e[a++]='_WidthAuto1" name="';\r
110486 e[a++]=n.id;\r
110487 e[a++]='_WidthAuto" type="radio" /></td><td style="padding-right: 3px" id="';\r
110488 e[a++]=n.id;\r
110489 e[a++]='_Width"></td><td id="';\r
110490 e[a++]=n.id;\r
110491 e[a++]='_WidthUnit"></td></tr></table></td></tr></table><table cellspacing="0" id="';\r
110492 e[a++]=n.id;\r
110493 e[a++]='_AdvancedMode1" style="margin-top: 4px; display: none"><tr><td class="Label">';\r
110494 e[a++]=ZmMsg.tableAlignment;\r
110495 e[a++]='</td><td class="col2" id="';\r
110496 e[a++]=n.id;\r
110497 e[a++]='_Align"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td><table cellpadding="1" cellspacing="1"><tr><td><input type="checkbox" id="';\r
110498 e[a++]=n.id;\r
110499 e[a++]='_FixedLayout" /></td><td><label for="';\r
110500 e[a++]=n.id;\r
110501 e[a++]='_FixedLayout">';\r
110502 e[a++]=ZmMsg.fixedCellWidth;\r
110503 e[a++]='</label></td></tr></table></td></tr></table></fieldset><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110504 e[a++]=ZmMsg.textStyle;\r
110505 e[a++]='</legend><table cellspacing="0"><tr><td class="Label">';\r
110506 e[a++]=ZmMsg.textAlign;\r
110507 e[a++]='</td><td class="col2" id="';\r
110508 e[a++]=n.id;\r
110509 e[a++]='_TextAlign"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td class="Label">';\r
110510 e[a++]=ZmMsg.fontColorLabel;\r
110511 e[a++]='</td><td id="';\r
110512 e[a++]=n.id;\r
110513 e[a++]='_ForegroundColor"></td></tr><tr><td class="Label">';\r
110514 e[a++]=ZmMsg.verticalAlign;\r
110515 e[a++]='</td><td id="';\r
110516 e[a++]=n.id;\r
110517 e[a++]='_TextVAlign"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td class="Label">';\r
110518 e[a++]=ZmMsg.fontBackgroundLabel;\r
110519 e[a++]='</td><td id="';\r
110520 e[a++]=n.id;\r
110521 e[a++]='_BackgroundColor"></td></tr></table></fieldset><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110522 e[a++]=ZmMsg.borderStyle;\r
110523 e[a++]='</legend><table cellspacing="0"><tr><td class="Label">';\r
110524 e[a++]=ZmMsg.borderWidth;\r
110525 e[a++]='</td><td class="col2" id="';\r
110526 e[a++]=n.id;\r
110527 e[a++]='_BorderWidth"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td class="Label">';\r
110528 e[a++]=ZmMsg.borderColorLabel;\r
110529 e[a++]='</td><td><table cellspacing="0"><tr><td id="';\r
110530 e[a++]=n.id;\r
110531 e[a++]='_BorderColor"></td></tr></table></td></tr><tr><td class="Label">';\r
110532 e[a++]=ZmMsg.cellPadding;\r
110533 e[a++]='</td><td id="';\r
110534 e[a++]=n.id;\r
110535 e[a++]='_CellPadding"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td class="Label">';\r
110536 e[a++]=ZmMsg.borderStyleLabel;\r
110537 e[a++]='</td><td id="';\r
110538 e[a++]=n.id;\r
110539 e[a++]='_BorderStyle"></td></tr><tr id="';\r
110540 e[a++]=n.id;\r
110541 e[a++]='_AdvancedMode2" style="display: none"><td class="Label">';\r
110542 e[a++]=ZmMsg.cellSpacing;\r
110543 e[a++]='</td><td id="';\r
110544 e[a++]=n.id;\r
110545 e[a++]='_BorderSpacing"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td colspan="2" style="padding: 2px 0 2px 0"><table cellpadding="1" cellspacing="1" align="center"><tr><td><input type="checkbox" id="';\r
110546 e[a++]=n.id;\r
110547 e[a++]='_BorderCollapse" /></td><td><label for="';\r
110548 e[a++]=n.id;\r
110549 e[a++]='_BorderCollapse">';\r
110550 e[a++]=ZmMsg.collapsedBorders;\r
110551 e[a++]="</label></td></tr></table></td></tr></table></fieldset></td></tr></table>";\r
110552 return o?e.length:e.join("")\r
110553 }\r
110554 ,{\r
110555 id:"share.Dialogs#TableProperties"}\r
110556 ,false);\r
110557 AjxTemplate.register("share.Dialogs",AjxTemplate.getTemplate("share.Dialogs#TableProperties"),AjxTemplate.getParams("share.Dialogs#TableProperties"));\r
110558 AjxTemplate.register("share.Dialogs#CellProperties",function(t,s,n,e){\r
110559 var o=Boolean(e);\r
110560 n=(typeof n=="string"?{\r
110561 id:n}\r
110562 :n)||{};\r
110563 e=e||[];\r
110564 var a=e.length;\r
110565 e[a++]='<table class="ZmHEDialog"><tr><td><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110566 e[a++]=ZmMsg.borderStyle;\r
110567 e[a++]='</legend><table width="100%"><tr><td style="width: 19em"><!-- If you\'re wondering why this has to be so complex, check out this bug:\n';\r
110568 e[a++]='\t\t\t\t\t\t\t\thttps://bugzilla.mozilla.org/show_bug.cgi?id=258255 --><div style="padding-left: 1em; padding-top: 1em">';\r
110569 e[a++]=ZmMsg.clickToDrawABorder;\r
110570 e[a++]='</div><div style="margin-top: 10px;"><table align="center"><tr><td>';\r
110571 e[a++]=ZmMsg.styleLabel;\r
110572 e[a++]="</td><td>";\r
110573 e[a++]=ZmMsg.colorLabel;\r
110574 e[a++]="</td><td>";\r
110575 e[a++]=ZmMsg.widthLabel;\r
110576 e[a++]='</td></tr><tr><td id="';\r
110577 e[a++]=n.id;\r
110578 e[a++]='_BorderStyle"></td><td><!-- embedded in a table so the widget doesn\'t enlarge --><table cellspacing="0" cellpadding="0"><tr><td id="';\r
110579 e[a++]=n.id;\r
110580 e[a++]='_BorderColor"></td></tr></table></td><td id="';\r
110581 e[a++]=n.id;\r
110582 e[a++]='_BorderWidth"></td></tr></table></div><table id="';\r
110583 e[a++]=n.id;\r
110584 e[a++]='_PreviewGridHolder" style="width: 100px; height: 100px;" cellspacing="0" cellpadding="0" align="center"><tr><td><table cellspacing="0" cellpadding="0" align="center"><tr><td><table id="';\r
110585 e[a++]=n.id;\r
110586 e[a++]='_PreviewGrid" style="border-collapse: collapse; background-color: #fff; border: 1px dashed #ccc;" cellspacing="0" cellpadding="0"><tr><td style="border: 1px dashed #ccc;"><div style="width: 30px; height: 30px;"></div></td><td style="border: 1px dashed #ccc;"><div style="width: 30px; height: 30px;"></div></td></tr><tr><td style="border: 1px dashed #ccc;"><div style="width: 30px; height: 30px;"></div></td><td style="border: 1px dashed #ccc;"><div style="width: 30px; height: 30px;"></div></td></tr></table></td></tr></table></td></tr></table></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td valign="top"><div style="padding-left: 1em; padding-top: 1em; padding-bottom: 1em">';\r
110587 e[a++]=ZmMsg.orPickAStyleBelow;\r
110588 e[a++]='</div><table align="center" id="';\r
110589 e[a++]=n.id;\r
110590 e[a++]='_QuickBorders"><tr><td></td><td></td><td></td><td></td><td></td></tr></table></td></tr></table></fieldset><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110591 e[a++]=ZmMsg.layout;\r
110592 e[a++]='</legend><table cellspacing="0"><tr><td class="Label"><table align="right" cellspacing="0" cellpadding="0"><tr><td style="padding-right: 3px"><input id="';\r
110593 e[a++]=n.id;\r
110594 e[a++]='_EnableWidth" type="checkbox" /></td><td><label for="';\r
110595 e[a++]=n.id;\r
110596 e[a++]='_EnableWidth">';\r
110597 e[a++]=ZmMsg.widthLabel;\r
110598 e[a++]='</label></td></tr></table></td><td class="col2" id="';\r
110599 e[a++]=n.id;\r
110600 e[a++]='_Width"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td class="Label"><table align="right" cellspacing="0" cellpadding="0"><tr><td style="padding-right: 3px"><input id="';\r
110601 e[a++]=n.id;\r
110602 e[a++]='_EnableHorizPadding" type="checkbox" /></td><td><label for="';\r
110603 e[a++]=n.id;\r
110604 e[a++]='_EnableHorizPadding">';\r
110605 e[a++]=ZmMsg.paddingHorizontal;\r
110606 e[a++]='</label></td></tr></table></td><td id="';\r
110607 e[a++]=n.id;\r
110608 e[a++]='_HorizPadding"></td></tr><tr><td class="Label"><table align="right" cellspacing="0" cellpadding="0"><tr><td style="padding-right: 3px"><input id="';\r
110609 e[a++]=n.id;\r
110610 e[a++]='_EnableHeight" type="checkbox" /></td><td><label for="';\r
110611 e[a++]=n.id;\r
110612 e[a++]='_EnableHeight">';\r
110613 e[a++]=ZmMsg.heightLabel;\r
110614 e[a++]='</label></td></tr></table></td><td class="col2" id="';\r
110615 e[a++]=n.id;\r
110616 e[a++]='_Height"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td class="Label"><table align="right" cellspacing="0" cellpadding="0"><tr><td style="padding-right: 3px"><input id="';\r
110617 e[a++]=n.id;\r
110618 e[a++]='_EnableVertPadding" type="checkbox" /></td><td><label for="';\r
110619 e[a++]=n.id;\r
110620 e[a++]='_EnableVertPadding">';\r
110621 e[a++]=ZmMsg.paddingVertical;\r
110622 e[a++]='</label></td></tr></table></td><td id="';\r
110623 e[a++]=n.id;\r
110624 e[a++]='_VertPadding"></td></tr></table></fieldset><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110625 e[a++]=ZmMsg.textStyle;\r
110626 e[a++]='</legend><table cellspacing="0"><tr><td class="Label"><table align="right" cellspacing="0" cellpadding="0"><tr><td style="padding-right: 3px"><input id="';\r
110627 e[a++]=n.id;\r
110628 e[a++]='_EnableTextAlign" type="checkbox" /></td><td><label for="';\r
110629 e[a++]=n.id;\r
110630 e[a++]='_EnableTextAlign">';\r
110631 e[a++]=ZmMsg.textAlign;\r
110632 e[a++]='</label></td></tr></table></td><td class="col2" id="';\r
110633 e[a++]=n.id;\r
110634 e[a++]='_TextAlign"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td class="Label"><table align="right" cellspacing="0" cellpadding="0"><tr><td style="padding-right: 3px"><input id="';\r
110635 e[a++]=n.id;\r
110636 e[a++]='_EnableForegroundColor" type="checkbox" /></td><td><label for="';\r
110637 e[a++]=n.id;\r
110638 e[a++]='_EnableForegroundColor">';\r
110639 e[a++]=ZmMsg.fontColorLabel;\r
110640 e[a++]='</label></td></tr></table></td><td id="';\r
110641 e[a++]=n.id;\r
110642 e[a++]='_ForegroundColor"></td></tr><tr><td class="Label"><table align="right" cellspacing="0" cellpadding="0"><tr><td style="padding-right: 3px"><input id="';\r
110643 e[a++]=n.id;\r
110644 e[a++]='_EnableTextVAlign" type="checkbox" /></td><td><label for="';\r
110645 e[a++]=n.id;\r
110646 e[a++]='_EnableTextVAlign">';\r
110647 e[a++]=ZmMsg.verticalAlign;\r
110648 e[a++]='</label></td></tr></table></td><td class="col2" id="';\r
110649 e[a++]=n.id;\r
110650 e[a++]='_TextVAlign"></td><td class="VSep-L">&nbsp;</td><td class="VSep-R">&nbsp;</td><td class="Label"><table align="right" cellspacing="0" cellpadding="0"><tr><td style="padding-right: 3px"><input id="';\r
110651 e[a++]=n.id;\r
110652 e[a++]='_EnableBackgroundColor" type="checkbox" /></td><td><label for="';\r
110653 e[a++]=n.id;\r
110654 e[a++]='_EnableBackgroundColor">';\r
110655 e[a++]=ZmMsg.fontBackgroundLabel;\r
110656 e[a++]='</label></td></tr></table></td><td id="';\r
110657 e[a++]=n.id;\r
110658 e[a++]='_BackgroundColor"></td></tr></table></fieldset></td></tr></table>';\r
110659 return o?e.length:e.join("")\r
110660 }\r
110661 ,{\r
110662 id:"share.Dialogs#CellProperties"}\r
110663 ,false);\r
110664 AjxTemplate.register("share.Dialogs#EditorInsertLink",function(t,s,n,e){\r
110665 var o=Boolean(e);\r
110666 n=(typeof n=="string"?{\r
110667 id:n}\r
110668 :n)||{};\r
110669 e=e||[];\r
110670 var a=e.length;\r
110671 e[a++]='<table class="ZmHEDialog"><tr><td><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110672 e[a++]=ZmMsg.linkText;\r
110673 e[a++]="</legend>";\r
110674 e[a++]=ZmMsg.linkTextDesc;\r
110675 e[a++]='<br /><div id="';\r
110676 e[a++]=n.id;\r
110677 e[a++]='_linkTextCont"></div></fieldset><fieldset class="ZmFieldset"><legend class="ZmLegend">';\r
110678 e[a++]=ZmMsg.linkTarget;\r
110679 e[a++]="</legend>";\r
110680 e[a++]=ZmMsg.linkTargetDesc;\r
110681 e[a++]='<br /><table cellspacing="0" cellpadding="0"><tr><td id="';\r
110682 e[a++]=n.id;\r
110683 e[a++]='_linkTargetCont" style="padding-right: 5px"></td><td id="';\r
110684 e[a++]=n.id;\r
110685 e[a++]='_testBtnCont"></td></tr></table></fieldset></td></tr></table>';\r
110686 return o?e.length:e.join("")\r
110687 }\r
110688 ,{\r
110689 id:"share.Dialogs#EditorInsertLink"}\r
110690 ,false);\r
110691 AjxTemplate.register("share.Dialogs#NewSearch",function(t,s,n,e){\r
110692 var o=Boolean(e);\r
110693 n=(typeof n=="string"?{\r
110694 id:n}\r
110695 :n)||{};\r
110696 e=e||[];\r
110697 var a=e.length;\r
110698 e[a++]="<table cellpadding='0' cellspacing='0' border='0' ";\r
110699 e[a++]=AjxEnv.isWebKitBased?"width='320'>":">";\r
110700 e[a++]="<tr><td class='Label' colspan=2 style='padding: 0px 0px 5px 0px;'>";\r
110701 e[a++]=ZmMsg.searchName;\r
110702 e[a++]=" </td></tr><tr><td><input autocomplete=OFF type='text' class='Field' id='";\r
110703 e[a++]=n.id;\r
110704 e[a++]="_nameField' /></td></tr><tr><td>&nbsp;</td></tr><tr><td><div id='";\r
110705 e[a++]=n.id;\r
110706 e[a++]='_overviewDiv\'><div class="Label">';\r
110707 e[a++]=ZmMsg.newSearchParent;\r
110708 e[a++]="</div><div id='";\r
110709 e[a++]=n.id;\r
110710 e[a++]="_folderTreeCell'></div></div></td></tr></table>";\r
110711 return o?e.length:e.join("")\r
110712 }\r
110713 ,{\r
110714 id:"share.Dialogs#NewSearch"}\r
110715 ,false);\r
110716 AjxTemplate.register("share.Dialogs#ZmMountFolderDialog",function(t,s,n,e){\r
110717 var o=Boolean(e);\r
110718 n=(typeof n=="string"?{\r
110719 id:n}\r
110720 :n)||{};\r
110721 e=e||[];\r
110722 var a=e.length;\r
110723 e[a++]="<table border=0 width=375><tr><td colspan=2>";\r
110724 e[a++]=ZmMsg.mountInstructions1;\r
110725 e[a++]="</td></tr><tr><td width=50 align=right>";\r
110726 e[a++]=ZmMsg.emailLabel;\r
110727 e[a++]="</td><td id='";\r
110728 e[a++]=n.id;\r
110729 e[a++]="_email'></td></tr><tr><td width=50 align=right>";\r
110730 e[a++]=ZmMsg.pathLabel;\r
110731 e[a++]="</td><td id='";\r
110732 e[a++]=n.id;\r
110733 e[a++]="_path'></td></tr><tr><td><br></td></tr><tr><td colspan=2>";\r
110734 e[a++]=ZmMsg.mountInstructions2;\r
110735 e[a++]="</td></tr><tr><td width=50 align=right>";\r
110736 e[a++]=ZmMsg.nameLabel;\r
110737 e[a++]="</td><td id='";\r
110738 e[a++]=n.id;\r
110739 e[a++]="_name'></td></tr><tr><td width=50 align=right>";\r
110740 e[a++]=ZmMsg.colorLabel;\r
110741 e[a++]="</td><td id='";\r
110742 e[a++]=n.id;\r
110743 e[a++]="_color'></td></tr></table>";\r
110744 return o?e.length:e.join("")\r
110745 }\r
110746 ,{\r
110747 id:"share.Dialogs#ZmMountFolderDialog"}\r
110748 ,false);\r
110749 AjxTemplate.register("share.Dialogs#ZmPromptDialog",function(t,s,n,e){\r
110750 var o=Boolean(e);\r
110751 n=(typeof n=="string"?{\r
110752 id:n}\r
110753 :n)||{};\r
110754 e=e||[];\r
110755 var a=e.length;\r
110756 e[a++]="<table cellpadding=2 cellspacing=0 border=0><tr><td class='Label' id='";\r
110757 e[a++]=n.id;\r
110758 e[a++]="_label'/></tr><tr><td><input type=";\r
110759 e[a++]=n.type;\r
110760 e[a++]=" autocomplete=OFF class='Field' id='";\r
110761 e[a++]=n.id;\r
110762 e[a++]="_name' /></td></tr></table>";\r
110763 return o?e.length:e.join("")\r
110764 }\r
110765 ,{\r
110766 id:"share.Dialogs#ZmPromptDialog"}\r
110767 ,false);\r
110768 AjxTemplate.register("share.Dialogs#ZmPromptDialog",function(t,s,n,e){\r
110769 var o=Boolean(e);\r
110770 n=(typeof n=="string"?{\r
110771 id:n}\r
110772 :n)||{};\r
110773 e=e||[];\r
110774 var a=e.length;\r
110775 e[a++]="<table cellpadding=2 cellspacing=0 border=0><tr><td class='Label'>";\r
110776 e[a++]=ZmMsg.tagName;\r
110777 e[a++]=":</td>";\r
110778 if(appCtxt.multiAccounts){\r
110779 e[a++]="<td class='Label'>";\r
110780 e[a++]=ZmMsg.colorLabel;\r
110781 e[a++]="</td><td class='Label'>";\r
110782 e[a++]=ZmMsg.accountLabel;\r
110783 e[a++]="</td>"\r
110784 }\r
110785 e[a++]="</tr><tr><td><input type=text autocomplete=OFF id='";\r
110786 e[a++]=n.id;\r
110787 e[a++]="_name' /></td><td id='";\r
110788 e[a++]=n.id;\r
110789 e[a++]="_tagColor' style=\"padding-right: 16px;\"></td><td id='";\r
110790 e[a++]=n.id;\r
110791 e[a++]="_account'></td></tr></table>";\r
110792 return o?e.length:e.join("")\r
110793 }\r
110794 ,{\r
110795 id:"share.Dialogs#ZmPromptDialog"}\r
110796 ,false);\r
110797 AjxTemplate.register("share.Dialogs#ZmTimezonePicker",function(t,s,n,e){\r
110798 var o=Boolean(e);\r
110799 n=(typeof n=="string"?{\r
110800 id:n}\r
110801 :n)||{};\r
110802 e=e||[];\r
110803 var a=e.length;\r
110804 e[a++]="<table cellpadding=4 cellspacing=0 border=0><tr><td colspan='2' class='Label'>";\r
110805 e[a++]=ZmMsg.selectTimezoneInfo;\r
110806 e[a++]="</td></tr><tr><td width=50 align=right>";\r
110807 e[a++]=ZmMsg.selectTimezoneLabel;\r
110808 e[a++]="</td><td id='";\r
110809 e[a++]=n.id;\r
110810 e[a++]="_tzSelect'></td></tr></table>";\r
110811 return o?e.length:e.join("")\r
110812 }\r
110813 ,{\r
110814 id:"share.Dialogs#ZmTimezonePicker"}\r
110815 ,false);\r
110816 AjxTemplate.register("share.Dialogs#ZmAttachDialog-MyComputerTab",function(t,s,n,e){\r
110817 var o=Boolean(e);\r
110818 n=(typeof n=="string"?{\r
110819 id:n}\r
110820 :n)||{};\r
110821 e=e||[];\r
110822 var a=e.length;\r
110823 e[a++]="<div style='overflow:auto'><form accept-charset='utf-8' method='POST' action='";\r
110824 e[a++]=n.uri;\r
110825 e[a++]="' id='";\r
110826 e[a++]=n.id;\r
110827 e[a++]="_uploadForm' enctype='multipart/form-data'><input type='hidden' name='_charset_' /><table id='";\r
110828 e[a++]=n.id;\r
110829 e[a++]="_attachmentTable' cellspacing=0 cellpadding=0 border=0 class='iframeTable'></table></form></div><div><table id='";\r
110830 e[a++]=n.id;\r
110831 e[a++]="_attachmentButtonTable'></table></div>";\r
110832 return o?e.length:e.join("")\r
110833 }\r
110834 ,{\r
110835 id:"share.Dialogs#ZmAttachDialog-MyComputerTab"}\r
110836 ,false);\r
110837 AjxTemplate.register("share.Dialogs#ZmAttachDialog-MyComputerTab-AddAttachment",function(t,s,n,e){\r
110838 var o=Boolean(e);\r
110839 n=(typeof n=="string"?{\r
110840 id:n}\r
110841 :n)||{};\r
110842 e=e||[];\r
110843 var a=e.length;\r
110844 e[a++]="<table cellspacing=2 cellpadding=0 border=0><tr><td><div class='attachText'>";\r
110845 e[a++]=ZmMsg.attach;\r
110846 e[a++]=":</div></td><td class='nobreak'><input id='";\r
110847 e[a++]=n.id;\r
110848 e[a++]="_input' type='file' name='";\r
110849 e[a++]=n.uploadName;\r
110850 e[a++]="' size=40>&nbsp;\n";\r
110851 e[a++]="\t\t\t\t<span id='";\r
110852 e[a++]=n.removeLinkId;\r
110853 e[a++]='\' onmouseover=\'this.style.cursor="pointer"\' onmouseout=\'this.style.cursor="default"\' class="ZmAttachDialog-removeLink">';\r
110854 e[a++]=ZmMsg.remove;\r
110855 e[a++]="</span></td></tr></table>";\r
110856 return o?e.length:e.join("")\r
110857 }\r
110858 ,{\r
110859 id:"share.Dialogs#ZmAttachDialog-MyComputerTab-AddAttachment"}\r
110860 ,false);\r
110861 AjxTemplate.register("share.Dialogs#ZmNewOrgDialogRemote",function(t,s,n,e){\r
110862 var o=Boolean(e);\r
110863 n=(typeof n=="string"?{\r
110864 id:n}\r
110865 :n)||{};\r
110866 e=e||[];\r
110867 var a=e.length;\r
110868 e[a++]="<tr><td colspan=2><table cellpadding=0 cellspacing=5 border=0><tr valign='center'><td class='Label'><input type='checkbox' id='";\r
110869 e[a++]=n.id;\r
110870 e[a++]="_remote' /></td><td>\n";\r
110871 e[a++]="\t\t\t\t\t\t";\r
110872 e[a++]=n.remoteLabel;\r
110873 e[a++]="\n";\r
110874 e[a++]="\t\t\t\t\t</td></tr></table></td></tr><tr style='display:none;' id='";\r
110875 e[a++]=n.id;\r
110876 e[a++]="_remoteURLrow' valign='center'><td class='Label'>";\r
110877 e[a++]=ZmMsg.urlLabel;\r
110878 e[a++]="</td><td><input autocomplete='off' type='text' class='Field' id='";\r
110879 e[a++]=n.id;\r
110880 e[a++]="_remoteURLfield' /></td></tr>";\r
110881 return o?e.length:e.join("")\r
110882 }\r
110883 ,{\r
110884 id:"share.Dialogs#ZmNewOrgDialogRemote"}\r
110885 ,false);\r
110886 AjxTemplate.register("share.Dialogs#ZmNewOrgDialogName",function(t,s,n,e){\r
110887 var o=Boolean(e);\r
110888 n=(typeof n=="string"?{\r
110889 id:n}\r
110890 :n)||{};\r
110891 e=e||[];\r
110892 var a=e.length;\r
110893 e[a++]="<tr valign='center'><td class='Label'>";\r
110894 e[a++]=ZmMsg.nameLabel;\r
110895 e[a++]="</td><td><input autocomplete='off' type='text' class='Field' id='";\r
110896 e[a++]=n.id;\r
110897 e[a++]="_name' /></td></tr>";\r
110898 return o?e.length:e.join("")\r
110899 }\r
110900 ,{\r
110901 id:"share.Dialogs#ZmNewOrgDialogName"}\r
110902 ,false);\r
110903 AjxTemplate.register("share.Dialogs#ZmNewOrgDialogColor",function(t,s,n,e){\r
110904 var o=Boolean(e);\r
110905 n=(typeof n=="string"?{\r
110906 id:n}\r
110907 :n)||{};\r
110908 e=e||[];\r
110909 var a=e.length;\r
110910 e[a++]="<tr><td class='Label'>";\r
110911 e[a++]=ZmMsg.colorLabel;\r
110912 e[a++]="</td><td id='";\r
110913 e[a++]=n.id;\r
110914 e[a++]="_colorSelect'></td></tr>";\r
110915 return o?e.length:e.join("")\r
110916 }\r
110917 ,{\r
110918 id:"share.Dialogs#ZmNewOrgDialogColor"}\r
110919 ,false);\r
110920 AjxTemplate.register("share.Dialogs#ZmNewOrgDialogFolder",function(t,s,n,e){\r
110921 var o=Boolean(e);\r
110922 n=(typeof n=="string"?{\r
110923 id:n}\r
110924 :n)||{};\r
110925 e=e||[];\r
110926 var a=e.length;\r
110927 e[a++]="<tr><td class='Label' colspan=2>";\r
110928 e[a++]=ZmMsg.newFolderParent;\r
110929 e[a++]="</td></tr><tr><td colspan=2 id='";\r
110930 e[a++]=n.id;\r
110931 e[a++]="_folderTree'></td></tr>";\r
110932 return o?e.length:e.join("")\r
110933 }\r
110934 ,{\r
110935 id:"share.Dialogs#ZmNewOrgDialogFolder"}\r
110936 ,false);\r
110937 AjxTemplate.register("share.Dialogs#ZmNewCalDialogFreeBusy",function(t,s,n,e){\r
110938 var o=Boolean(e);\r
110939 n=(typeof n=="string"?{\r
110940 id:n}\r
110941 :n)||{};\r
110942 e=e||[];\r
110943 var a=e.length;\r
110944 e[a++]="<tr><td colspan=2><table cellpadding=0 cellspacing=5 border=0><tr valign='center'><td class='Label'><input type='checkbox' id='";\r
110945 e[a++]=n.id;\r
110946 e[a++]="_excludeFbCheckbox' /></td><td>";\r
110947 e[a++]=ZmMsg.excludeFromFreeBusy;\r
110948 e[a++]="</td></tr></table></td></tr>";\r
110949 return o?e.length:e.join("")\r
110950 }\r
110951 ,{\r
110952 id:"share.Dialogs#ZmNewCalDialogFreeBusy"}\r
110953 ,false);\r
110954 AjxTemplate.register("share.Dialogs#ZmRenameDialog",function(t,s,n,e){\r
110955 var o=Boolean(e);\r
110956 n=(typeof n=="string"?{\r
110957 id:n}\r
110958 :n)||{};\r
110959 e=e||[];\r
110960 var a=e.length;\r
110961 e[a++]="<table cellpadding='0' cellspacing='0' border='0'><tr><td class='Label' colspan=2 style='padding: 0px 0px 5px 0px;'>";\r
110962 e[a++]=n.newLabel;\r
110963 e[a++]=": </td></tr><tr><td><input type='text' autocomplete='off' class='Field' id='";\r
110964 e[a++]=n.id;\r
110965 e[a++]="_name' /></td></tr></table>";\r
110966 return o?e.length:e.join("")\r
110967 }\r
110968 ,{\r
110969 id:"share.Dialogs#ZmRenameDialog"}\r
110970 ,false)\r
110971 }\r
110972 if(AjxPackage.define("share.Quota")){\r
110973 AjxTemplate.register("share.Quota#UsedLimited",function(t,r,s,e){\r
110974 var n=Boolean(e);\r
110975 s=(typeof s=="string"?{\r
110976 id:s}\r
110977 :s)||{};\r
110978 e=e||[];\r
110979 var o=e.length;\r
110980 var a="quotaUsed";\r
110981 if(s.percent<85&&s.percent>65){\r
110982 a="quotaWarning"\r
110983 }else{\r
110984 if(s.percent>=85){\r
110985 a="quotaCritical"\r
110986 }}\r
110987 e[o++]="<table class='BannerBar' cellspacing=0 cellpadding=0><tr><td width='50%'><div></div></td><td><div class='quotabar'><div style='width:";\r
110988 e[o++]=s.percent;\r
110989 e[o++]="' class='";\r
110990 e[o++]=a;\r
110991 e[o++]="'></div></div></td><td width='50%'><div></div></td></tr></table>";\r
110992 return n?e.length:e.join("")\r
110993 }\r
110994 ,{\r
110995 "class":"BannerBar",id:"share.Quota#UsedLimited"}\r
110996 ,false);\r
110997 AjxTemplate.register("share.Quota",AjxTemplate.getTemplate("share.Quota#UsedLimited"),AjxTemplate.getParams("share.Quota#UsedLimited"));\r
110998 AjxTemplate.register("share.Quota#UsedUnlimited",function(t,s,n,e){\r
110999 var o=Boolean(e);\r
111000 n=(typeof n=="string"?{\r
111001 id:n}\r
111002 :n)||{};\r
111003 e=e||[];\r
111004 var a=e.length;\r
111005 e[a++]="<table cellspacing=0 cellpadding=0 width='100%'><tr><td class='BannerTextQuota'>";\r
111006 e[a++]=n.desc;\r
111007 e[a++]="</td></tr></table>";\r
111008 return o?e.length:e.join("")\r
111009 }\r
111010 ,{\r
111011 id:"share.Quota#UsedUnlimited"}\r
111012 ,false);\r
111013 AjxTemplate.register("share.Quota#Tooltip",function(t,r,s,e){\r
111014 var n=Boolean(e);\r
111015 s=(typeof s=="string"?{\r
111016 id:s}\r
111017 :s)||{};\r
111018 e=e||[];\r
111019 var o=e.length;\r
111020 e[o++]="<table>";\r
111021 if(s.username!=s.login){\r
111022 e[o++]="<tr><td><center>";\r
111023 e[o++]=s.login;\r
111024 e[o++]="</center></td></tr>"\r
111025 }\r
111026 if(s.quota){\r
111027 var a=AjxMessageFormat.format(ZmMsg.quotaDescLimited,[s.size,s.limit]);\r
111028 e[o++]="<tr><td><center>";\r
111029 e[o++]=ZmMsg.quota;\r
111030 e[o++]=": ";\r
111031 e[o++]=s.percent;\r
111032 e[o++]="% (";\r
111033 e[o++]=a;\r
111034 e[o++]=")</center></td></tr>"\r
111035 }\r
111036 e[o++]="</table>";\r
111037 return n?e.length:e.join("")\r
111038 }\r
111039 ,{\r
111040 id:"share.Quota#Tooltip"}\r
111041 ,false)\r
111042 }\r
111043 if(AjxPackage.define("share.Widgets")){\r
111044 AjxTemplate.register("share.Widgets#ZmToolBarSeparator",function(t,s,n,e){\r
111045 var o=Boolean(e);\r
111046 n=(typeof n=="string"?{\r
111047 id:n}\r
111048 :n)||{};\r
111049 e=e||[];\r
111050 var a=e.length;\r
111051 e[a++]="<table><tr><td id='";\r
111052 e[a++]=n.itemId;\r
111053 e[a++]="' valign='middle'><div class='vertSep'></div></td></tr></table>";\r
111054 return o?e.length:e.join("")\r
111055 }\r
111056 ,{\r
111057 id:"share.Widgets#ZmToolBarSeparator"}\r
111058 ,false);\r
111059 AjxTemplate.register("share.Widgets",AjxTemplate.getTemplate("share.Widgets#ZmToolBarSeparator"),AjxTemplate.getParams("share.Widgets#ZmToolBarSeparator"));\r
111060 AjxTemplate.register("share.Widgets#ZmAppChooser",function(t,s,n,e){\r
111061 var o=Boolean(e);\r
111062 n=(typeof n=="string"?{\r
111063 id:n}\r
111064 :n)||{};\r
111065 e=e||[];\r
111066 var a=e.length;\r
111067 e[a++]="<table class='ZToolbarTable' border=0 cellpadding=0 cellspacing=0><tr valign='bottom' id='";\r
111068 e[a++]=n.id;\r
111069 e[a++]="_items'><td id='";\r
111070 e[a++]=n.id;\r
111071 e[a++]='_suffix\' valign=bottom><div class=\'ZAppTabSpacer\'></div></td><td width="100%" valign="middle" align="right" style="padding-right: 10px;" id="admin_link_container">\n';\r
111072 e[a++]="                &nbsp;\n";\r
111073 e[a++]="            </td></tr></table>";\r
111074 return o?e.length:e.join("")\r
111075 }\r
111076 ,{\r
111077 "class":"ZWidget",id:"share.Widgets#ZmAppChooser"}\r
111078 ,false);\r
111079 AjxTemplate.register("share.Widgets#ZmAppChooserItem",function(t,s,n,e){\r
111080 var o=Boolean(e);\r
111081 n=(typeof n=="string"?{\r
111082 id:n}\r
111083 :n)||{};\r
111084 e=e||[];\r
111085 var a=e.length;\r
111086 e[a++]=AjxTemplate.expand("dwt.Widgets#ZToolbarItem",n);\r
111087 return o?e.length:e.join("")\r
111088 }\r
111089 ,{\r
111090 id:"share.Widgets#ZmAppChooserItem"}\r
111091 ,false);\r
111092 AjxTemplate.register("share.Widgets#ZmAppChooserButton",function(a,r,s,t){\r
111093 var n=Boolean(t);\r
111094 s=(typeof s=="string"?{\r
111095 id:s}\r
111096 :s)||{};\r
111097 t=t||[];\r
111098 var o=t.length;\r
111099 var e=s.buttonClass||"AppTab";\r
111100 t[o++]="<table class='ZWidgetTable Z";\r
111101 t[o++]=e;\r
111102 t[o++]="Table Z";\r
111103 t[o++]=e;\r
111104 t[o++]="Border' cellspacing=0 cellpadding=0 style='table-layout:auto;'><tr><td id='";\r
111105 t[o++]=s.id;\r
111106 t[o++]="_left_icon'  \tclass='ZLeftIcon ZWidgetIcon'></td><td id='";\r
111107 t[o++]=s.id;\r
111108 t[o++]="_title'\t\tclass='ZWidgetTitle'></td><td id='";\r
111109 t[o++]=s.id;\r
111110 t[o++]="_right_icon' \tclass='ZRightIcon ZWidgetIcon'></td></tr></table>";\r
111111 return n?t.length:t.join("")\r
111112 }\r
111113 ,{\r
111114 "class":"ZAppTab",id:"share.Widgets#ZmAppChooserButton"}\r
111115 ,false);\r
111116 AjxTemplate.register("share.Widgets#ZmAppChooserButton",function(a,r,s,t){\r
111117 var n=Boolean(t);\r
111118 s=(typeof s=="string"?{\r
111119 id:s}\r
111120 :s)||{};\r
111121 t=t||[];\r
111122 var o=t.length;\r
111123 var e=s.buttonClass||"AppTab";\r
111124 t[o++]="<table class='ZWidgetTable Z";\r
111125 t[o++]=e;\r
111126 t[o++]="Table Z";\r
111127 t[o++]=e;\r
111128 t[o++]="Border' cellspacing=0 cellpadding=0 style='table-layout:auto;'><tr><td id='";\r
111129 t[o++]=s.id;\r
111130 t[o++]="_left_icon'  \tclass='ZLeftIcon ZWidgetIcon'></td><td id='";\r
111131 t[o++]=s.id;\r
111132 t[o++]="_title'\t\tclass='ZWidgetTitle'></td><td id='";\r
111133 t[o++]=s.id;\r
111134 t[o++]="_right_icon' \tclass='ZRightIcon ZWidgetIcon'></td></tr></table>";\r
111135 return n?t.length:t.join("")\r
111136 }\r
111137 ,{\r
111138 "class":"ZAppTab",id:"share.Widgets#ZmAppChooserButton"}\r
111139 ,false);\r
111140 AjxTemplate.register("share.Widgets#ZmAppChooserSpacer",function(a,r,s,t){\r
111141 var n=Boolean(t);\r
111142 s=(typeof s=="string"?{\r
111143 id:s}\r
111144 :s)||{};\r
111145 t=t||[];\r
111146 var o=t.length;\r
111147 var e=s.buttonClass||"AppTab";\r
111148 t[o++]="<div class='Z";\r
111149 t[o++]=e;\r
111150 t[o++]="Spacer'></div>";\r
111151 return n?t.length:t.join("")\r
111152 }\r
111153 ,{\r
111154 id:"share.Widgets#ZmAppChooserSpacer"}\r
111155 ,false);\r
111156 AjxTemplate.register("share.Widgets#ZToast",function(t,s,n,e){\r
111157 var o=Boolean(e);\r
111158 n=(typeof n=="string"?{\r
111159 id:n}\r
111160 :n)||{};\r
111161 e=e||[];\r
111162 var a=e.length;\r
111163 e[a++]="<div class='ZToastBG'><div class='ZToastContent'><div id='";\r
111164 e[a++]=n.id;\r
111165 e[a++]="_icon' class='ZToastIcon'></div><div id='";\r
111166 e[a++]=n.id;\r
111167 e[a++]="_text' class='ZToastText'></div></div></div>";\r
111168 return o?e.length:e.join("")\r
111169 }\r
111170 ,{\r
111171 "class":"ZToastInfo",id:"share.Widgets#ZToast"}\r
111172 ,false);\r
111173 AjxTemplate.register("share.Widgets#ZmSearchToolBar",function(t,s,n,e){\r
111174 var o=Boolean(e);\r
111175 n=(typeof n=="string"?{\r
111176 id:n}\r
111177 :n)||{};\r
111178 e=e||[];\r
111179 var a=e.length;\r
111180 e[a++]="<table border=0 cellpadding=0 cellspacing=0 width='100%' height='100%'><tr><td id='";\r
111181 e[a++]=n.id;\r
111182 e[a++]="_inputField' width='100%' class='ZmSearchToolbarCell'></td><td id='";\r
111183 e[a++]=n.id;\r
111184 e[a++]="_searchMenuButton' class='ZmSearchToolbarCell'></td><td id='";\r
111185 e[a++]=n.id;\r
111186 e[a++]="_searchButton' hint='text' class='ZmSearchToolbarCell'></td><!-- UNCOMMENT THIS IF YOU WANT CUSTOM SEARCH TO APPEAR AS A SEPARATE BUTTON ON SEARCH TOOLBAR\n";\r
111187 e[a++]="\t\t\t<td class='ZmSearchToolbarSeparatorCell'><div id='";\r
111188 e[a++]=n.id;\r
111189 e[a++]="_customSearchButtonSep' class='vertSep' style='display:none'></div></td><td id='";\r
111190 e[a++]=n.id;\r
111191 e[a++]="_customSearchButton' class='ZmSearchToolbarCell'></td>\n";\r
111192 e[a++]="\t\t\t--><td class='ZmSearchToolbarSeparatorCell'><div class='vertSep'></div></td><td id='";\r
111193 e[a++]=n.id;\r
111194 e[a++]="_saveButton' hint='text' class='ZmSearchToolbarCell'></td><td class='ZmSearchToolbarSeparatorCell'><div class='vertSep'></div></td><td id='";\r
111195 e[a++]=n.id;\r
111196 e[a++]="_advancedButton' hint='text' class='ZmSearchToolbarCell'></td></tr></table>";\r
111197 return o?e.length:e.join("")\r
111198 }\r
111199 ,{\r
111200 id:"share.Widgets#ZmSearchToolBar"}\r
111201 ,false);\r
111202 AjxTemplate.register("share.Widgets#ZmChooseFolderDialog",function(t,s,n,e){\r
111203 var o=Boolean(e);\r
111204 n=(typeof n=="string"?{\r
111205 id:n}\r
111206 :n)||{};\r
111207 e=e||[];\r
111208 var a=e.length;\r
111209 e[a++]="<div class='ChooserDialog'><span id='";\r
111210 e[a++]=n.id;\r
111211 e[a++]="_folderDescDivId' style='margin: 0; margin-bottom: 2px'></span><div>";\r
111212 e[a++]=ZmMsg.chooserDescription;\r
111213 e[a++]="</div><div id='";\r
111214 e[a++]=n.id;\r
111215 e[a++]="_inputDivId'></div><div class='overview' id='";\r
111216 e[a++]=n.id;\r
111217 e[a++]="_folderTreeDivId'></div></div>";\r
111218 return o?e.length:e.join("")\r
111219 }\r
111220 ,{\r
111221 id:"share.Widgets#ZmChooseFolderDialog"}\r
111222 ,false);\r
111223 AjxTemplate.register("share.Widgets#ZmPickTagDialog",function(t,s,n,e){\r
111224 var o=Boolean(e);\r
111225 n=(typeof n=="string"?{\r
111226 id:n}\r
111227 :n)||{};\r
111228 e=e||[];\r
111229 var a=e.length;\r
111230 e[a++]="<div class='ChooserDialog'><div style='width:300px'>";\r
111231 e[a++]=ZmMsg.chooserDescription;\r
111232 e[a++]="</div><div id='";\r
111233 e[a++]=n.id;\r
111234 e[a++]="_inputDivId'></div><div style='background-color:white; width:100%; overflow:auto' id='";\r
111235 e[a++]=n.id;\r
111236 e[a++]="_tagTreeDivId'></div></div>";\r
111237 return o?e.length:e.join("")\r
111238 }\r
111239 ,{\r
111240 id:"share.Widgets#ZmPickTagDialog"}\r
111241 ,false)\r
111242 }\r
111243 if(AjxPackage.define("zimbra.Widgets")){\r
111244 AjxTemplate.register("zimbra.Widgets#ZmErrorDialogControls",function(t,s,n,e){\r
111245 var o=Boolean(e);\r
111246 n=(typeof n=="string"?{\r
111247 id:n}\r
111248 :n)||{};\r
111249 e=e||[];\r
111250 var a=e.length;\r
111251 e[a++]="<div id='";\r
111252 e[a++]=n.id;\r
111253 e[a++]="_buttons' class='DwtDialogButtonBar'>";\r
111254 if(AjxEnv.isNav){\r
111255 e[a++]="<input type='button' id='";\r
111256 e[a++]=n.id;\r
111257 e[a++]="_focus' style='height:0px;width:0px;display:none;'>"\r
111258 }\r
111259 e[a++]="</div>";\r
111260 return o?e.length:e.join("")\r
111261 }\r
111262 ,{\r
111263 width:"20",height:"32",id:"zimbra.Widgets#ZmErrorDialogControls"}\r
111264 ,false);\r
111265 AjxTemplate.register("zimbra.Widgets",AjxTemplate.getTemplate("zimbra.Widgets#ZmErrorDialogControls"),AjxTemplate.getParams("zimbra.Widgets#ZmErrorDialogControls"))\r
111266 };\r
111267 \r
111268 \r
111269 \r
111270 \r
111271 function ZmSkin(A){this.hints=this.mergeObjects(ZmSkin.hints,A)\r
111272 }ZmSkin.hints={name:"sand",version:"2",skin:{containers:"skin_outer"},banner:{position:"static",url:""},userInfo:{position:"static"},search:{position:"static"},quota:{position:"static"},presence:{width:"40px",height:"24px"},appView:{position:"static"},searchBuilder:{containers:["skin_tr_search_builder"]},tree:{minWidth:parseInt("150px"),maxWidth:parseInt("300px"),containers:["skin_td_tree","skin_td_tree_app_sash"],resizeContainers:["skin_td_tree"]},topToolbar:{containers:"skin_tr_top_toolbar"},treeFooter:{containers:"skin_tr_tree_footer"},topAd:{containers:"skin_tr_top_ad"},sidebarAd:{containers:"skin_td_sidebar_ad"},bottomAd:{containers:"skin_tr_bottom_ad"},treeTopAd:{containers:"skin_tr_tree_top_ad"},treeBottomAd:{containers:"skin_tr_tree_bottom_ad"},helpButton:{style:"link",container:"quota",url:""},logoutButton:{style:"link",container:"quota"},appChooser:{position:"static",direction:"LR"},toast:{location:"N",transitions:[{type:"slide-in",step:1,duration:10},{type:"pause",duration:2500},{type:"slide-out",step:-1,duration:25}]},fullScreen:{containers:["!skin_td_tree","!skin_td_tree_app_sash"]},allAds:{containers:["skin_tr_top_ad","skin_td_sidebar_ad","skin_tr_bottom_ad","skin_tr_tree_top_ad","skin_tr_tree_bottom_ad"]}};\r
111273 window.BaseSkin=ZmSkin;\r
111274 ZmSkin.prototype={show:function(C,G){var F=this.hints[C]&&this.hints[C].containers;\r
111275 if(F){if(typeof F=="function"){F.apply(this,[G!=false]);\r
111276 skin._reflowApp();\r
111277 return \r
111278 }if(typeof F=="string"){F=[F]\r
111279 }for(var E=0;\r
111280 E<F.length;\r
111281 E++){var D=F[E];\r
111282 var B=D.replace(/^!/,"");\r
111283 var A=D!=B;\r
111284 this._showEl(B,A?!G:G)\r
111285 }skin._reflowApp()\r
111286 }},hide:function(A){this.show(A,false)\r
111287 },gotoApp:function(A,B){appCtxt.getAppController().activateApp(A,null,B)\r
111288 },gotoPrefs:function(A){if(appCtxt.getCurrentAppName()!=ZmApp.PREFERENCES){var B=new AjxCallback(this,this._gotoPrefPage,[A]);\r
111289 this.gotoApp(ZmApp.PREFERENCES,B)\r
111290 }else{this._gotoPrefPage(A)\r
111291 }},mergeObjects:function(A,D){if(A==null){A={}\r
111292 }for(var C=1;\r
111293 C<arguments.length;\r
111294 C++){var E=arguments[C];\r
111295 for(var B in E){var F=A[B];\r
111296 if(typeof F=="object"&&!(F instanceof Array)){this.mergeObjects(A[B],E[B]);\r
111297 continue\r
111298 }if(!A[B]){A[B]=E[B]\r
111299 }}}return A\r
111300 },getTreeWidth:function(){return Dwt.getSize(this._getEl(this.hints.tree.containers[0])).x\r
111301 },setTreeWidth:function(A){this._setContainerSizes("tree",A,null)\r
111302 },showTopAd:function(A){skin._showEl("skin_tr_top_ad",A);\r
111303 skin._reflowApp()\r
111304 \r
111305 },hideTopAd:function(){skin.showTopAd(false)\r
111306 },getTopAdContainer:function(){return skin._getEl("skin_container_top_ad")\r
111307 },showSidebarAd:function(A){var B="skin_td_sidebar_ad";\r
111308 if(A!=null){skin._setSize(B,A)\r
111309 }skin._showEl(B);\r
111310 skin._reflowApp()\r
111311 },hideSidebarAd:function(){var A="skin_td_sidebar_ad";\r
111312 skin._hideEl(A);\r
111313 skin._reflowApp()\r
111314 },getSidebarAdContainer:function(){return this._getEl("skin_container_sidebar_ad")\r
111315 },_getEl:function(A){return(typeof A=="string"?document.getElementById(A):A)\r
111316 },_showEl:function(E,D){var B=this._getEl(E);\r
111317 if(!B){return \r
111318 }var C;\r
111319 if(D==false){C="none"\r
111320 }else{var A=B.tagName;\r
111321 if(A=="TD"&&!document.all){C="table-cell"\r
111322 }else{if(A=="TR"&&!document.all){C="table-row"\r
111323 }else{C="block"\r
111324 }}}B.style.display=C\r
111325 },_hideEl:function(A){this._showEl(A,false)\r
111326 },_reparentEl:function(D,A){var C=this._getEl(A);\r
111327 var B=C&&this._getEl(D);\r
111328 if(B){C.appendChild(B)\r
111329 }},_setSize:function(D,C,A){var B=this._getEl(D);\r
111330 if(!B){return \r
111331 }if(C!=null){B.style.width=C\r
111332 }if(A!=null){B.style.height=A\r
111333 }},_setContainerSizes:function(E,C,A){var D=this.hints[E].resizeContainers||this.hints[E].containers;\r
111334 for(var B=0;\r
111335 B<D.length;\r
111336 B++){this._setSize(D[B],C,null)\r
111337 }},_reflowApp:function(){if(window._zimbraMail){window._zimbraMail.getAppViewMgr().fitAll()\r
111338 }},_gotoPrefPage:function(C){if(C==null){return \r
111339 }var D=appCtxt.getApp(ZmApp.PREFERENCES);\r
111340 var B=D.getPrefController();\r
111341 var A=B.getPrefsView();\r
111342 A.selectSection(C)\r
111343 }};\r
111344 window.skin=new ZmSkin();\r
111345 \r
111346 \r
111347 \r
111348 // compile locale specific templates\r
111349 for (var pkg in window.AjxTemplateMsg) {\r
111350         var text = AjxTemplateMsg[pkg];\r
111351         AjxTemplate.compile(pkg, true, true, text);\r
111352 }\r
111353 \r
111354 \r
111355 \r
111356         var cacheKillerVersion = "091214175450";\r
111357         function launch() {\r
111358                 // quit if this function has already been called\r
111359                 if (arguments.callee.done) {return;}\r
111360 \r
111361                 // flag this function so we don't do the same thing twice\r
111362                 arguments.callee.done = true;\r
111363 \r
111364                 // kill the timer\r
111365                 if (_timer) {\r
111366                         clearInterval(_timer);\r
111367                         _timer = null;\r
111368                 }\r
111369 \r
111370                 var prodMode = true;\r
111371                 var debugLevel = "";\r
111372                 if (!prodMode || debugLevel) {\r
111373                         AjxDispatcher.require("Debug");\r
111374                         DBG = new AjxDebug(AjxDebug.NONE, null, false);\r
111375                         // figure out the debug level\r
111376                         if (debugLevel == 't') {\r
111377                                 DBG.showTiming(true);\r
111378                         } else {\r
111379                                 DBG.setDebugLevel(debugLevel);\r
111380                         }\r
111381                 }\r
111382 \r
111383                 AjxHistoryMgr.BLANK_FILE = "/zimbra/public/blankHistory.html";\r
111384                 var noSplashScreen = "";\r
111385                 var protocolMode = "https";\r
111386 \r
111387         \r
111388         \r
111389         var batchInfoResponse = {}; // Redacted\r
111390 \r
111391         \r
111392 \r
111393                 \r
111394 \r
111395                 // NOTE: Domain info settings moved into launch function to\r
111396                 //       prevent sloppy code from accessing extraneous window\r
111397                 //       scoped variable.\r
111398                 \r
111399                 var settings = {\r
111400                         "dummy":1,\r
111401                         "zimbraPrefMailItemsPerPage":"25",\r
111402                         "zimbraPrefAdvancedClientEnforceMinDisplay":"TRUE",\r
111403                         "zimbraPrefGroupMailBy":"conversation",\r
111404                         "zimbraPrefSkin":"sand",\r
111405                         "zimbraPrefClientType":"advanced"\r
111406                         ,\r
111407                         "zimbraFeatureNotebookEnabled":"TRUE",\r
111408                         "zimbraFeatureIMEnabled":"FALSE",\r
111409                         "zimbraFeatureBriefcasesEnabled":"TRUE",\r
111410                         "zimbraFeatureContactsUpsellEnabled":"FALSE",\r
111411                         "zimbraFeatureVoiceEnabled":"FALSE",\r
111412                         "zimbraFeatureMailUpsellEnabled":"FALSE",\r
111413                         "zimbraFeatureContactsEnabled":"TRUE",\r
111414                         "zimbraFeatureConversationsEnabled":"TRUE",\r
111415                         "zimbraFeaturePortalEnabled":"FALSE",\r
111416                         "zimbraFeatureVoiceUpsellEnabled":"FALSE",\r
111417                         "zimbraFeatureOptionsEnabled":"TRUE",\r
111418                         "zimbraFeatureMailEnabled":"TRUE",\r
111419                         "zimbraFeatureTasksEnabled":"TRUE",\r
111420                         "zimbraFeatureCalendarEnabled":"TRUE",\r
111421                         "zimbraFeatureCalendarUpsellEnabled":"FALSE"\r
111422                         \r
111423                         \r
111424                         \r
111425                 };\r
111426 \r
111427                 var params = {\r
111428                         app:"",\r
111429                         settings:settings, batchInfoResponse:batchInfoResponse,\r
111430                         offlineMode:false, devMode:false,\r
111431                         protocolMode:protocolMode, httpPort:"80", httpsPort:"443",\r
111432                         noSplashScreen:noSplashScreen\r
111433                 };\r
111434                 ZmZimbraMail.run(params);\r
111435         }\r
111436 \r
111437     //  START DOMContentLoaded\r
111438     // Mozilla and Opera 9 expose the event we could use\r
111439     if (document.addEventListener) {\r
111440         document.addEventListener("DOMContentLoaded", launch, null);\r
111441 \r
111442         //      mainly for Opera 8.5, won't be fired if DOMContentLoaded fired already.\r
111443         document.addEventListener("load", launch, null);\r
111444     }\r
111445 \r
111446     //  for Internet Explorer. readyState will not be achieved on init call\r
111447     if (AjxEnv.isIE && AjxEnv.isWindows) {\r
111448         document.attachEvent("onreadystatechange", function(e) {\r
111449             if (document.readyState == "complete") {\r
111450                 launch();\r
111451             }\r
111452         });\r
111453     }\r
111454 \r
111455     if (/(WebKit|khtml)/i.test(navigator.userAgent)) { // sniff\r
111456         var _timer = setInterval(function() {\r
111457             if (/loaded|complete/.test(document.readyState)) {\r
111458                 launch();\r
111459                 // call the onload handler\r
111460             }\r
111461         }, 10);\r
111462     }\r
111463     //  END DOMContentLoaded\r
111464 \r
111465     AjxCore.addOnloadListener(launch);\r
111466     AjxCore.addOnunloadListener(ZmZimbraMail.unload);\r
111467 </script>\r
111468                 <script src="unicodecategories.js"></script>\r
111469                 <script src="Ast.js"></script>\r
111470                 <script src="Tokenizer.js"></script>\r
111471                 <script src="ZeParser.js"></script>\r
111472                 <!--<script src="Zeon.js"></script>-->\r
111473 \r
111474                 <script>\r
111475                         new function(){\r
111476                                 var e = document.getElementById('dbg'); \r
111477                                 var p = e; \r
111478                                 var scripts = ['legacy', 'ball-pool', 'dojo', 'effectgames', 'ext', 'ga', 'gmail', 'gravity', 'jquery', 'jsgb', 'mochikit', 'pipio', 'slides280', 'sunspider', 'tetris', 'twitch', 'twitter', 'v8', 'yui', 'zimbra'];\r
111479                                 var scriptPointer = 0;\r
111480                                 // write debug in a very straightforward manner\r
111481                                 var debug = function(){\r
111482                                         var f = document.createElement('div');\r
111483                                         f.innerHTML = Array.prototype.slice.call(arguments).join(', ');\r
111484                                         p.appendChild(f);\r
111485                                         return f;\r
111486                                 };\r
111487                                 var totals = {\r
111488                                         mskb: 0,\r
111489                                         msktok: 0,\r
111490                                         mskbtok: 0\r
111491                                 };\r
111492                                 var bench = function(name){\r
111493                                         p = document.createElement('div');\r
111494                                         e.appendChild(p);\r
111495                                         p.style.cssFloat = 'left';\r
111496                                         p.style.borderRight = '1px solid black';\r
111497                                         p.style.borderBottom = '1px solid black';\r
111498                                         p.style.padding = '0 5px 5px 5px';\r
111499                                         debug('<b>'+name+'</b>...');\r
111500                                         var n = 0;\r
111501                                         var total = [];\r
111502                                         var size = 0;\r
111503                                         var tokens = 0;\r
111504                                         var stats = { minEl: null, minVal: 0, maxEl: null, maxVal: 0};\r
111505                                         var run = function(){ // give ui some breath to show message ;)\r
111506                                                 var start = +new Date;\r
111507                                                 var inp = document.getElementById(name).text;\r
111508                                                 if (!size) {\r
111509                                                         size = inp.length;\r
111510                                                         debug((size/1024).toFixed(0)+'k');\r
111511                                                 }\r
111512                                                 start = +new Date;\r
111513                                                 var tok = new Tokenizer(inp);\r
111514         \r
111515                                                 var stack = [];\r
111516 \r
111517                                                 // this does the tokenizing/parsing\r
111518                                                 var zp = new ZeParser(inp, tok, stack);\r
111519                                                 zp.ast = false; // will not work with zeon..\r
111520                                                 zp.parse();\r
111521 \r
111522                                                 if (!tokens) {\r
111523                                                         tokens = tok.tokenCount;\r
111524                                                         debug(tokens+' tokens');\r
111525                                                         debug(tok.tokenCountNoWhite+' black');\r
111526                                                         debug(((1 - (tok.tokenCountNoWhite/tokens))*100).toFixed(1)+'% white');\r
111527                                                         //debug('<b>parse</b> : <b>zeon</b>');\r
111528                                                         //debug('<b>parse</b> : <b>zeon</b>');\r
111529                                                         debug('<b>parse</b>');\r
111530                                                 }\r
111531 \r
111532                                                 var time = (+new Date) - start;\r
111533 \r
111534                                                 var analyzeStart = +new Date;                                           \r
111535 \r
111536                                                 if (false && zp.ast) {\r
111537                                                         // this is the analyzing\r
111538                                                         var z = new Zeon(inp, {\r
111539                                                                 'enable jslint': true,\r
111540                                                                 'enable markers': true,\r
111541                                                                 'enable scope depth': true,\r
111542                                                                 'warn if scope depth exceeds': 1,\r
111543                                                                 'enable ruler': true,\r
111544                                                                 'enable type annotations': true,\r
111545                                                                 'minify variable names too': true,\r
111546                                                                 'enable caret popup': true,\r
111547                                                                 // ==== jslint toggles ====\r
111548                                                                 'jslint | missing block good': true,\r
111549                                                                 'jslint | missing block bad': true,\r
111550                                                                 'jslint | weak comparison': true,\r
111551                                                                 'jslint | ++ / --': true\r
111552                                                         });\r
111553                                                         z.tree = stack;\r
111554                                                         z.startProcess();\r
111555                                                 }\r
111556 \r
111557                                                 var analyzeTime = (+new Date) - analyzeStart;\r
111558 \r
111559                                                 //var dom = debug(time+' : '+analyzeTime+' ms');\r
111560                                                 var dom = debug(time+' ms');\r
111561 \r
111562                                                 total.push(time);\r
111563                                                 if (!stats.minEl || time < stats.minVal) {\r
111564                                                         stats.minEl = dom;\r
111565                                                         stats.minVal = time;\r
111566                                                 }\r
111567                                                 if (!stats.maxEl || time > stats.maxVal) {\r
111568                                                         stats.maxEl = dom;\r
111569                                                         stats.maxVal = time;\r
111570                                                 }\r
111571 \r
111572                                                 if (++n < 10) setTimeout(run, 100);\r
111573                                                 else {\r
111574                                                         console.log(stats)\r
111575                                                         stats.minEl.style.color = 'green';\r
111576                                                         stats.maxEl.style.color = 'red';\r
111577 \r
111578                                                         // remove the best and worst result (2 in total)\r
111579                                                         var avg = total.sort(function(a,b){ return a-b; }).slice(1,-1).reduce(function(n, t){ return n+t; }, 0);\r
111580                                                         debug('<b>avg: '+(avg/8)+' ms</b>');\r
111581                                                         var mskb = (avg/8) / (size/1024);\r
111582                                                         totals.mskb += mskb;\r
111583                                                         debug(mskb.toFixed(2)+' ms / kb');\r
111584                                                         var msktok = (avg/8) / (tok.tokenCount/1000);\r
111585                                                         totals.msktok += msktok;\r
111586                                                         debug(msktok.toFixed(2)+' ms / k-tok');\r
111587                                                         var mskbtok = (avg/8) / (tok.tokenCountNoWhite/1000);\r
111588                                                         totals.mskbtok += mskbtok;\r
111589                                                         debug(mskbtok.toFixed(2)+' ms / k-b-tok');\r
111590                                                         if (scriptPointer < scripts.length-1) bench(scripts[++scriptPointer]); // next script\r
111591                                                         else {\r
111592                                                                 p = document.createElement('div');\r
111593                                                                 e.appendChild(p);\r
111594                                                                 p.style.clear = 'both';\r
111595                                                                 debug('Averages:');\r
111596                                                                 debug('ms / kb:<br/><b>'+(totals.mskb / scripts.length).toFixed(2)+'</b>');\r
111597                                                                 debug('ms / 1000 tokens:<br/>'+(totals.msktok / scripts.length).toFixed(2)+'</b>');\r
111598                                                                 debug('ms / 1000 black tokens:<br/><b>'+(totals.mskbtok / scripts.length).toFixed(2)+'</b>');\r
111599                                                         }\r
111600                                                 }\r
111601                                         };\r
111602                                         setTimeout(run, 100);\r
111603                                 };\r
111604                                 bench(scripts[scriptPointer]);\r
111605                         };\r
111606                 </script>\r
111607         </body>\r
111608 </html>\r